/*
 * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
 * This devtool is neither made for production nor for readable output files.
 * It uses "eval()" calls to create a separate source file in the browser devtools.
 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
 * or disable the default devtool with "devtool: false".
 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
 */
/******/ (function() { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ "./node_modules/@deck.gl/core/dist/esm/controllers/controller.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/controllers/controller.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Controller; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _transition_manager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transition-manager */ \"./node_modules/@deck.gl/core/dist/esm/controllers/transition-manager.js\");\n/* harmony import */ var _transitions_linear_interpolator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../transitions/linear-interpolator */ \"./node_modules/@deck.gl/core/dist/esm/transitions/linear-interpolator.js\");\n\n\n\nconst NO_TRANSITION_PROPS = {\n  transitionDuration: 0\n};\nconst DEFAULT_INERTIA = 300;\n\nconst INERTIA_EASING = t => 1 - (1 - t) * (1 - t);\n\nconst EVENT_TYPES = {\n  WHEEL: ['wheel'],\n  PAN: ['panstart', 'panmove', 'panend'],\n  PINCH: ['pinchstart', 'pinchmove', 'pinchend'],\n  TRIPLE_PAN: ['tripanstart', 'tripanmove', 'tripanend'],\n  DOUBLE_TAP: ['doubletap'],\n  KEYBOARD: ['keydown']\n};\nconst pinchEventWorkaround = {};\nclass Controller {\n  constructor(opts) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"props\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"state\", {});\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"transitionManager\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"eventManager\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"onViewStateChange\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"onStateChange\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"makeViewport\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_controllerState\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_events\", {});\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_interactionState\", {\n      isDragging: false\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_customEvents\", []);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_eventStartBlocked\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_panMove\", false);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"invertPan\", false);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"dragMode\", 'rotate');\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"inertia\", 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"scrollZoom\", true);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"dragPan\", true);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"dragRotate\", true);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"doubleClickZoom\", true);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"touchZoom\", true);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"touchRotate\", false);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"keyboard\", true);\n\n    this.transitionManager = new _transition_manager__WEBPACK_IMPORTED_MODULE_1__[\"default\"]({ ...opts,\n      getControllerState: props => new this.ControllerState(props),\n      onViewStateChange: this._onTransition.bind(this),\n      onStateChange: this._setInteractionState.bind(this)\n    });\n    this.handleEvent = this.handleEvent.bind(this);\n    this.eventManager = opts.eventManager;\n\n    this.onViewStateChange = opts.onViewStateChange || (() => {});\n\n    this.onStateChange = opts.onStateChange || (() => {});\n\n    this.makeViewport = opts.makeViewport;\n  }\n\n  set events(customEvents) {\n    this.toggleEvents(this._customEvents, false);\n    this.toggleEvents(customEvents, true);\n    this._customEvents = customEvents;\n\n    if (this.props) {\n      this.setProps(this.props);\n    }\n  }\n\n  finalize() {\n    for (const eventName in this._events) {\n      if (this._events[eventName]) {\n        var _this$eventManager;\n\n        (_this$eventManager = this.eventManager) === null || _this$eventManager === void 0 ? void 0 : _this$eventManager.off(eventName, this.handleEvent);\n      }\n    }\n\n    this.transitionManager.finalize();\n  }\n\n  handleEvent(event) {\n    this._controllerState = undefined;\n    const eventStartBlocked = this._eventStartBlocked;\n\n    switch (event.type) {\n      case 'panstart':\n        return eventStartBlocked ? false : this._onPanStart(event);\n\n      case 'panmove':\n        return this._onPan(event);\n\n      case 'panend':\n        return this._onPanEnd(event);\n\n      case 'pinchstart':\n        return eventStartBlocked ? false : this._onPinchStart(event);\n\n      case 'pinchmove':\n        return this._onPinch(event);\n\n      case 'pinchend':\n        return this._onPinchEnd(event);\n\n      case 'tripanstart':\n        return eventStartBlocked ? false : this._onTriplePanStart(event);\n\n      case 'tripanmove':\n        return this._onTriplePan(event);\n\n      case 'tripanend':\n        return this._onTriplePanEnd(event);\n\n      case 'doubletap':\n        return this._onDoubleTap(event);\n\n      case 'wheel':\n        return this._onWheel(event);\n\n      case 'keydown':\n        return this._onKeyDown(event);\n\n      default:\n        return false;\n    }\n  }\n\n  get controllerState() {\n    this._controllerState = this._controllerState || new this.ControllerState({\n      makeViewport: this.makeViewport,\n      ...this.props,\n      ...this.state\n    });\n    return this._controllerState;\n  }\n\n  getCenter(event) {\n    const {\n      x,\n      y\n    } = this.props;\n    const {\n      offsetCenter\n    } = event;\n    return [offsetCenter.x - x, offsetCenter.y - y];\n  }\n\n  isPointInBounds(pos, event) {\n    const {\n      width,\n      height\n    } = this.props;\n\n    if (event && event.handled) {\n      return false;\n    }\n\n    const inside = pos[0] >= 0 && pos[0] <= width && pos[1] >= 0 && pos[1] <= height;\n\n    if (inside && event) {\n      event.stopPropagation();\n    }\n\n    return inside;\n  }\n\n  isFunctionKeyPressed(event) {\n    const {\n      srcEvent\n    } = event;\n    return Boolean(srcEvent.metaKey || srcEvent.altKey || srcEvent.ctrlKey || srcEvent.shiftKey);\n  }\n\n  isDragging() {\n    return this._interactionState.isDragging || false;\n  }\n\n  blockEvents(timeout) {\n    const timer = setTimeout(() => {\n      if (this._eventStartBlocked === timer) {\n        this._eventStartBlocked = null;\n      }\n    }, timeout);\n    this._eventStartBlocked = timer;\n  }\n\n  setProps(props) {\n    if (props.dragMode) {\n      this.dragMode = props.dragMode;\n    }\n\n    this.props = props;\n\n    if (!('transitionInterpolator' in props)) {\n      props.transitionInterpolator = this._getTransitionProps().transitionInterpolator;\n    }\n\n    this.transitionManager.processViewStateChange(props);\n    const {\n      inertia\n    } = props;\n    this.inertia = Number.isFinite(inertia) ? inertia : inertia === true ? DEFAULT_INERTIA : 0;\n    const {\n      scrollZoom = true,\n      dragPan = true,\n      dragRotate = true,\n      doubleClickZoom = true,\n      touchZoom = true,\n      touchRotate = false,\n      keyboard = true\n    } = props;\n    const isInteractive = Boolean(this.onViewStateChange);\n    this.toggleEvents(EVENT_TYPES.WHEEL, isInteractive && scrollZoom);\n    this.toggleEvents(EVENT_TYPES.PAN, isInteractive && (dragPan || dragRotate));\n    this.toggleEvents(EVENT_TYPES.PINCH, isInteractive && (touchZoom || touchRotate));\n    this.toggleEvents(EVENT_TYPES.TRIPLE_PAN, isInteractive && touchRotate);\n    this.toggleEvents(EVENT_TYPES.DOUBLE_TAP, isInteractive && doubleClickZoom);\n    this.toggleEvents(EVENT_TYPES.KEYBOARD, isInteractive && keyboard);\n    this.scrollZoom = scrollZoom;\n    this.dragPan = dragPan;\n    this.dragRotate = dragRotate;\n    this.doubleClickZoom = doubleClickZoom;\n    this.touchZoom = touchZoom;\n    this.touchRotate = touchRotate;\n    this.keyboard = keyboard;\n  }\n\n  updateTransition() {\n    this.transitionManager.updateTransition();\n  }\n\n  toggleEvents(eventNames, enabled) {\n    if (this.eventManager) {\n      eventNames.forEach(eventName => {\n        if (this._events[eventName] !== enabled) {\n          this._events[eventName] = enabled;\n\n          if (enabled) {\n            this.eventManager.on(eventName, this.handleEvent);\n          } else {\n            this.eventManager.off(eventName, this.handleEvent);\n          }\n        }\n      });\n    }\n  }\n\n  updateViewport(newControllerState, extraProps = null, interactionState = {}) {\n    const viewState = { ...newControllerState.getViewportProps(),\n      ...extraProps\n    };\n    const changed = this.controllerState !== newControllerState;\n    this.state = newControllerState.getState();\n\n    this._setInteractionState(interactionState);\n\n    if (changed) {\n      const oldViewState = this.controllerState && this.controllerState.getViewportProps();\n\n      if (this.onViewStateChange) {\n        this.onViewStateChange({\n          viewState,\n          interactionState: this._interactionState,\n          oldViewState\n        });\n      }\n    }\n  }\n\n  _onTransition(params) {\n    this.onViewStateChange({ ...params,\n      interactionState: this._interactionState\n    });\n  }\n\n  _setInteractionState(newStates) {\n    Object.assign(this._interactionState, newStates);\n    this.onStateChange(this._interactionState);\n  }\n\n  _onPanStart(event) {\n    const pos = this.getCenter(event);\n\n    if (!this.isPointInBounds(pos, event)) {\n      return false;\n    }\n\n    let alternateMode = this.isFunctionKeyPressed(event) || event.rightButton || false;\n\n    if (this.invertPan || this.dragMode === 'pan') {\n      alternateMode = !alternateMode;\n    }\n\n    const newControllerState = this.controllerState[alternateMode ? 'panStart' : 'rotateStart']({\n      pos\n    });\n    this._panMove = alternateMode;\n    this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n      isDragging: true\n    });\n    return true;\n  }\n\n  _onPan(event) {\n    if (!this.isDragging()) {\n      return false;\n    }\n\n    return this._panMove ? this._onPanMove(event) : this._onPanRotate(event);\n  }\n\n  _onPanEnd(event) {\n    if (!this.isDragging()) {\n      return false;\n    }\n\n    return this._panMove ? this._onPanMoveEnd(event) : this._onPanRotateEnd(event);\n  }\n\n  _onPanMove(event) {\n    if (!this.dragPan) {\n      return false;\n    }\n\n    const pos = this.getCenter(event);\n    const newControllerState = this.controllerState.pan({\n      pos\n    });\n    this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n      isDragging: true,\n      isPanning: true\n    });\n    return true;\n  }\n\n  _onPanMoveEnd(event) {\n    const {\n      inertia\n    } = this;\n\n    if (this.dragPan && inertia && event.velocity) {\n      const pos = this.getCenter(event);\n      const endPos = [pos[0] + event.velocityX * inertia / 2, pos[1] + event.velocityY * inertia / 2];\n      const newControllerState = this.controllerState.pan({\n        pos: endPos\n      }).panEnd();\n      this.updateViewport(newControllerState, { ...this._getTransitionProps(),\n        transitionDuration: inertia,\n        transitionEasing: INERTIA_EASING\n      }, {\n        isDragging: false,\n        isPanning: true\n      });\n    } else {\n      const newControllerState = this.controllerState.panEnd();\n      this.updateViewport(newControllerState, null, {\n        isDragging: false,\n        isPanning: false\n      });\n    }\n\n    return true;\n  }\n\n  _onPanRotate(event) {\n    if (!this.dragRotate) {\n      return false;\n    }\n\n    const pos = this.getCenter(event);\n    const newControllerState = this.controllerState.rotate({\n      pos\n    });\n    this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n      isDragging: true,\n      isRotating: true\n    });\n    return true;\n  }\n\n  _onPanRotateEnd(event) {\n    const {\n      inertia\n    } = this;\n\n    if (this.dragRotate && inertia && event.velocity) {\n      const pos = this.getCenter(event);\n      const endPos = [pos[0] + event.velocityX * inertia / 2, pos[1] + event.velocityY * inertia / 2];\n      const newControllerState = this.controllerState.rotate({\n        pos: endPos\n      }).rotateEnd();\n      this.updateViewport(newControllerState, { ...this._getTransitionProps(),\n        transitionDuration: inertia,\n        transitionEasing: INERTIA_EASING\n      }, {\n        isDragging: false,\n        isRotating: true\n      });\n    } else {\n      const newControllerState = this.controllerState.rotateEnd();\n      this.updateViewport(newControllerState, null, {\n        isDragging: false,\n        isRotating: false\n      });\n    }\n\n    return true;\n  }\n\n  _onWheel(event) {\n    if (!this.scrollZoom) {\n      return false;\n    }\n\n    event.srcEvent.preventDefault();\n    const pos = this.getCenter(event);\n\n    if (!this.isPointInBounds(pos, event)) {\n      return false;\n    }\n\n    const {\n      speed = 0.01,\n      smooth = false\n    } = this.scrollZoom === true ? {} : this.scrollZoom;\n    const {\n      delta\n    } = event;\n    let scale = 2 / (1 + Math.exp(-Math.abs(delta * speed)));\n\n    if (delta < 0 && scale !== 0) {\n      scale = 1 / scale;\n    }\n\n    const newControllerState = this.controllerState.zoom({\n      pos,\n      scale\n    });\n    this.updateViewport(newControllerState, { ...this._getTransitionProps({\n        around: pos\n      }),\n      transitionDuration: smooth ? 250 : 1\n    }, {\n      isZooming: true,\n      isPanning: true\n    });\n    return true;\n  }\n\n  _onTriplePanStart(event) {\n    const pos = this.getCenter(event);\n\n    if (!this.isPointInBounds(pos, event)) {\n      return false;\n    }\n\n    const newControllerState = this.controllerState.rotateStart({\n      pos\n    });\n    this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n      isDragging: true\n    });\n    return true;\n  }\n\n  _onTriplePan(event) {\n    if (!this.touchRotate) {\n      return false;\n    }\n\n    if (!this.isDragging()) {\n      return false;\n    }\n\n    const pos = this.getCenter(event);\n    pos[0] -= event.deltaX;\n    const newControllerState = this.controllerState.rotate({\n      pos\n    });\n    this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n      isDragging: true,\n      isRotating: true\n    });\n    return true;\n  }\n\n  _onTriplePanEnd(event) {\n    if (!this.isDragging()) {\n      return false;\n    }\n\n    const {\n      inertia\n    } = this;\n\n    if (this.touchRotate && inertia && event.velocityY) {\n      const pos = this.getCenter(event);\n      const endPos = [pos[0], pos[1] += event.velocityY * inertia / 2];\n      const newControllerState = this.controllerState.rotate({\n        pos: endPos\n      });\n      this.updateViewport(newControllerState, { ...this._getTransitionProps(),\n        transitionDuration: inertia,\n        transitionEasing: INERTIA_EASING\n      }, {\n        isDragging: false,\n        isRotating: true\n      });\n      this.blockEvents(inertia);\n    } else {\n      const newControllerState = this.controllerState.rotateEnd();\n      this.updateViewport(newControllerState, null, {\n        isDragging: false,\n        isRotating: false\n      });\n    }\n\n    return true;\n  }\n\n  _onPinchStart(event) {\n    const pos = this.getCenter(event);\n\n    if (!this.isPointInBounds(pos, event)) {\n      return false;\n    }\n\n    const newControllerState = this.controllerState.zoomStart({\n      pos\n    }).rotateStart({\n      pos\n    });\n    pinchEventWorkaround._startPinchRotation = event.rotation;\n    pinchEventWorkaround._lastPinchEvent = event;\n    this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n      isDragging: true\n    });\n    return true;\n  }\n\n  _onPinch(event) {\n    if (!this.touchZoom && !this.touchRotate) {\n      return false;\n    }\n\n    if (!this.isDragging()) {\n      return false;\n    }\n\n    let newControllerState = this.controllerState;\n\n    if (this.touchZoom) {\n      const {\n        scale\n      } = event;\n      const pos = this.getCenter(event);\n      newControllerState = newControllerState.zoom({\n        pos,\n        scale\n      });\n    }\n\n    if (this.touchRotate) {\n      const {\n        rotation\n      } = event;\n      newControllerState = newControllerState.rotate({\n        deltaAngleX: pinchEventWorkaround._startPinchRotation - rotation\n      });\n    }\n\n    this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n      isDragging: true,\n      isPanning: this.touchZoom,\n      isZooming: this.touchZoom,\n      isRotating: this.touchRotate\n    });\n    pinchEventWorkaround._lastPinchEvent = event;\n    return true;\n  }\n\n  _onPinchEnd(event) {\n    if (!this.isDragging()) {\n      return false;\n    }\n\n    const {\n      inertia\n    } = this;\n    const {\n      _lastPinchEvent\n    } = pinchEventWorkaround;\n\n    if (this.touchZoom && inertia && _lastPinchEvent && event.scale !== _lastPinchEvent.scale) {\n      const pos = this.getCenter(event);\n      let newControllerState = this.controllerState.rotateEnd();\n      const z = Math.log2(event.scale);\n\n      const velocityZ = (z - Math.log2(_lastPinchEvent.scale)) / (event.deltaTime - _lastPinchEvent.deltaTime);\n\n      const endScale = Math.pow(2, z + velocityZ * inertia / 2);\n      newControllerState = newControllerState.zoom({\n        pos,\n        scale: endScale\n      }).zoomEnd();\n      this.updateViewport(newControllerState, { ...this._getTransitionProps({\n          around: pos\n        }),\n        transitionDuration: inertia,\n        transitionEasing: INERTIA_EASING\n      }, {\n        isDragging: false,\n        isPanning: this.touchZoom,\n        isZooming: this.touchZoom,\n        isRotating: false\n      });\n      this.blockEvents(inertia);\n    } else {\n      const newControllerState = this.controllerState.zoomEnd().rotateEnd();\n      this.updateViewport(newControllerState, null, {\n        isDragging: false,\n        isPanning: false,\n        isZooming: false,\n        isRotating: false\n      });\n    }\n\n    pinchEventWorkaround._startPinchRotation = null;\n    pinchEventWorkaround._lastPinchEvent = null;\n    return true;\n  }\n\n  _onDoubleTap(event) {\n    if (!this.doubleClickZoom) {\n      return false;\n    }\n\n    const pos = this.getCenter(event);\n\n    if (!this.isPointInBounds(pos, event)) {\n      return false;\n    }\n\n    const isZoomOut = this.isFunctionKeyPressed(event);\n    const newControllerState = this.controllerState.zoom({\n      pos,\n      scale: isZoomOut ? 0.5 : 2\n    });\n    this.updateViewport(newControllerState, this._getTransitionProps({\n      around: pos\n    }), {\n      isZooming: true,\n      isPanning: true\n    });\n    this.blockEvents(100);\n    return true;\n  }\n\n  _onKeyDown(event) {\n    if (!this.keyboard) {\n      return false;\n    }\n\n    const funcKey = this.isFunctionKeyPressed(event);\n    const {\n      zoomSpeed,\n      moveSpeed,\n      rotateSpeedX,\n      rotateSpeedY\n    } = this.keyboard === true ? {} : this.keyboard;\n    const {\n      controllerState\n    } = this;\n    let newControllerState;\n    const interactionState = {};\n\n    switch (event.srcEvent.code) {\n      case 'Minus':\n        newControllerState = funcKey ? controllerState.zoomOut(zoomSpeed).zoomOut(zoomSpeed) : controllerState.zoomOut(zoomSpeed);\n        interactionState.isZooming = true;\n        break;\n\n      case 'Equal':\n        newControllerState = funcKey ? controllerState.zoomIn(zoomSpeed).zoomIn(zoomSpeed) : controllerState.zoomIn(zoomSpeed);\n        interactionState.isZooming = true;\n        break;\n\n      case 'ArrowLeft':\n        if (funcKey) {\n          newControllerState = controllerState.rotateLeft(rotateSpeedX);\n          interactionState.isRotating = true;\n        } else {\n          newControllerState = controllerState.moveLeft(moveSpeed);\n          interactionState.isPanning = true;\n        }\n\n        break;\n\n      case 'ArrowRight':\n        if (funcKey) {\n          newControllerState = controllerState.rotateRight(rotateSpeedX);\n          interactionState.isRotating = true;\n        } else {\n          newControllerState = controllerState.moveRight(moveSpeed);\n          interactionState.isPanning = true;\n        }\n\n        break;\n\n      case 'ArrowUp':\n        if (funcKey) {\n          newControllerState = controllerState.rotateUp(rotateSpeedY);\n          interactionState.isRotating = true;\n        } else {\n          newControllerState = controllerState.moveUp(moveSpeed);\n          interactionState.isPanning = true;\n        }\n\n        break;\n\n      case 'ArrowDown':\n        if (funcKey) {\n          newControllerState = controllerState.rotateDown(rotateSpeedY);\n          interactionState.isRotating = true;\n        } else {\n          newControllerState = controllerState.moveDown(moveSpeed);\n          interactionState.isPanning = true;\n        }\n\n        break;\n\n      default:\n        return false;\n    }\n\n    this.updateViewport(newControllerState, this._getTransitionProps(), interactionState);\n    return true;\n  }\n\n  _getTransitionProps(opts) {\n    const {\n      transition\n    } = this;\n\n    if (!transition || !transition.transitionInterpolator) {\n      return NO_TRANSITION_PROPS;\n    }\n\n    return opts ? { ...transition,\n      transitionInterpolator: new _transitions_linear_interpolator__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({ ...opts,\n        ...transition.transitionInterpolator.opts,\n        makeViewport: this.controllerState.makeViewport\n      })\n    } : transition;\n  }\n\n}\n//# sourceMappingURL=controller.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/controllers/controller.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/controllers/first-person-controller.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/controllers/first-person-controller.js ***!
  \************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ FirstPersonController; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _controller__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/controller.js\");\n/* harmony import */ var _view_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./view-state */ \"./node_modules/@deck.gl/core/dist/esm/controllers/view-state.js\");\n/* harmony import */ var _utils_math_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/math-utils */ \"./node_modules/@deck.gl/core/dist/esm/utils/math-utils.js\");\n/* harmony import */ var _transitions_linear_interpolator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../transitions/linear-interpolator */ \"./node_modules/@deck.gl/core/dist/esm/transitions/linear-interpolator.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/vector3.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/spherical-coordinates.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n\n\n\n\n\n\nconst MOVEMENT_SPEED = 20;\n\nclass FirstPersonState extends _view_state__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(options) {\n    const {\n      width,\n      height,\n      position = [0, 0, 0],\n      bearing = 0,\n      pitch = 0,\n      longitude = null,\n      latitude = null,\n      maxPitch = 90,\n      minPitch = -90,\n      startRotatePos,\n      startBearing,\n      startPitch,\n      startZoomPosition\n    } = options;\n    super({\n      width,\n      height,\n      position,\n      bearing,\n      pitch,\n      longitude,\n      latitude,\n      maxPitch,\n      minPitch\n    }, {\n      startRotatePos,\n      startBearing,\n      startPitch,\n      startZoomPosition\n    });\n  }\n\n  panStart() {\n    return this;\n  }\n\n  pan() {\n    return this;\n  }\n\n  panEnd() {\n    return this;\n  }\n\n  rotateStart({\n    pos\n  }) {\n    return this._getUpdatedState({\n      startRotatePos: pos,\n      startBearing: this.getViewportProps().bearing,\n      startPitch: this.getViewportProps().pitch\n    });\n  }\n\n  rotate({\n    pos,\n    deltaAngleX = 0,\n    deltaAngleY = 0\n  }) {\n    const {\n      startRotatePos,\n      startBearing,\n      startPitch\n    } = this.getState();\n    const {\n      width,\n      height\n    } = this.getViewportProps();\n\n    if (!startRotatePos || startBearing === undefined || startPitch === undefined) {\n      return this;\n    }\n\n    let newRotation;\n\n    if (pos) {\n      const deltaScaleX = (pos[0] - startRotatePos[0]) / width;\n      const deltaScaleY = (pos[1] - startRotatePos[1]) / height;\n      newRotation = {\n        bearing: startBearing - deltaScaleX * 180,\n        pitch: startPitch - deltaScaleY * 90\n      };\n    } else {\n      newRotation = {\n        bearing: startBearing - deltaAngleX,\n        pitch: startPitch - deltaAngleY\n      };\n    }\n\n    return this._getUpdatedState(newRotation);\n  }\n\n  rotateEnd() {\n    return this._getUpdatedState({\n      startRotatePos: null,\n      startBearing: null,\n      startPitch: null\n    });\n  }\n\n  zoomStart() {\n    return this._getUpdatedState({\n      startZoomPosition: this.getViewportProps().position\n    });\n  }\n\n  zoom({\n    scale\n  }) {\n    let {\n      startZoomPosition\n    } = this.getState();\n\n    if (!startZoomPosition) {\n      startZoomPosition = this.getViewportProps().position;\n    }\n\n    const direction = this.getDirection();\n    return this._move(direction, Math.log2(scale) * MOVEMENT_SPEED, startZoomPosition);\n  }\n\n  zoomEnd() {\n    return this._getUpdatedState({\n      startZoomPosition: null\n    });\n  }\n\n  moveLeft(speed = MOVEMENT_SPEED) {\n    const direction = this.getDirection(true);\n    return this._move(direction.rotateZ({\n      radians: Math.PI / 2\n    }), speed);\n  }\n\n  moveRight(speed = MOVEMENT_SPEED) {\n    const direction = this.getDirection(true);\n    return this._move(direction.rotateZ({\n      radians: -Math.PI / 2\n    }), speed);\n  }\n\n  moveUp(speed = MOVEMENT_SPEED) {\n    const direction = this.getDirection(true);\n    return this._move(direction, speed);\n  }\n\n  moveDown(speed = MOVEMENT_SPEED) {\n    const direction = this.getDirection(true);\n    return this._move(direction.negate(), speed);\n  }\n\n  rotateLeft(speed = 15) {\n    return this._getUpdatedState({\n      bearing: this.getViewportProps().bearing - speed\n    });\n  }\n\n  rotateRight(speed = 15) {\n    return this._getUpdatedState({\n      bearing: this.getViewportProps().bearing + speed\n    });\n  }\n\n  rotateUp(speed = 10) {\n    return this._getUpdatedState({\n      pitch: this.getViewportProps().pitch + speed\n    });\n  }\n\n  rotateDown(speed = 10) {\n    return this._getUpdatedState({\n      pitch: this.getViewportProps().pitch - speed\n    });\n  }\n\n  zoomIn(speed = 2) {\n    return this.zoom({\n      scale: speed\n    });\n  }\n\n  zoomOut(speed = 2) {\n    return this.zoom({\n      scale: 1 / speed\n    });\n  }\n\n  shortestPathFrom(viewState) {\n    const fromProps = viewState.getViewportProps();\n    const props = { ...this.getViewportProps()\n    };\n    const {\n      bearing,\n      longitude\n    } = props;\n\n    if (Math.abs(bearing - fromProps.bearing) > 180) {\n      props.bearing = bearing < 0 ? bearing + 360 : bearing - 360;\n    }\n\n    if (longitude !== null && fromProps.longitude !== null && Math.abs(longitude - fromProps.longitude) > 180) {\n      props.longitude = longitude < 0 ? longitude + 360 : longitude - 360;\n    }\n\n    return props;\n  }\n\n  _move(direction, speed, fromPosition = this.getViewportProps().position) {\n    const delta = direction.scale(speed);\n    return this._getUpdatedState({\n      position: new _math_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"](fromPosition).add(delta)\n    });\n  }\n\n  getDirection(use2D = false) {\n    const spherical = new _math_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"]({\n      bearing: this.getViewportProps().bearing,\n      pitch: use2D ? 90 : 90 + this.getViewportProps().pitch\n    });\n    const direction = spherical.toVector3().normalize();\n    return direction;\n  }\n\n  _getUpdatedState(newProps) {\n    return new FirstPersonState({ ...this.getViewportProps(),\n      ...this.getState(),\n      ...newProps\n    });\n  }\n\n  applyConstraints(props) {\n    const {\n      pitch,\n      maxPitch,\n      minPitch,\n      longitude,\n      bearing\n    } = props;\n    props.pitch = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_4__.clamp)(pitch, minPitch, maxPitch);\n\n    if (longitude !== null && (longitude < -180 || longitude > 180)) {\n      props.longitude = (0,_utils_math_utils__WEBPACK_IMPORTED_MODULE_5__.mod)(longitude + 180, 360) - 180;\n    }\n\n    if (bearing < -180 || bearing > 180) {\n      props.bearing = (0,_utils_math_utils__WEBPACK_IMPORTED_MODULE_5__.mod)(bearing + 180, 360) - 180;\n    }\n\n    return props;\n  }\n\n}\n\nclass FirstPersonController extends _controller__WEBPACK_IMPORTED_MODULE_6__[\"default\"] {\n  constructor(...args) {\n    super(...args);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"ControllerState\", FirstPersonState);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"transition\", {\n      transitionDuration: 300,\n      transitionInterpolator: new _transitions_linear_interpolator__WEBPACK_IMPORTED_MODULE_7__[\"default\"](['position', 'pitch', 'bearing'])\n    });\n  }\n\n}\n//# sourceMappingURL=first-person-controller.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/controllers/first-person-controller.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/controllers/globe-controller.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/controllers/globe-controller.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ GlobeController; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n/* harmony import */ var _controller__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/controller.js\");\n/* harmony import */ var _map_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./map-controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/map-controller.js\");\n/* harmony import */ var _utils_math_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/math-utils */ \"./node_modules/@deck.gl/core/dist/esm/utils/math-utils.js\");\n/* harmony import */ var _transitions_linear_interpolator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../transitions/linear-interpolator */ \"./node_modules/@deck.gl/core/dist/esm/transitions/linear-interpolator.js\");\n\n\n\n\n\n\n\nclass GlobeState extends _map_controller__WEBPACK_IMPORTED_MODULE_1__.MapState {\n  applyConstraints(props) {\n    const {\n      maxZoom,\n      minZoom,\n      zoom\n    } = props;\n    props.zoom = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_2__.clamp)(zoom, minZoom, maxZoom);\n    const {\n      longitude,\n      latitude\n    } = props;\n\n    if (longitude < -180 || longitude > 180) {\n      props.longitude = (0,_utils_math_utils__WEBPACK_IMPORTED_MODULE_3__.mod)(longitude + 180, 360) - 180;\n    }\n\n    props.latitude = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_2__.clamp)(latitude, -89, 89);\n    return props;\n  }\n\n}\n\nclass GlobeController extends _controller__WEBPACK_IMPORTED_MODULE_4__[\"default\"] {\n  constructor(...args) {\n    super(...args);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"ControllerState\", GlobeState);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"transition\", {\n      transitionDuration: 300,\n      transitionInterpolator: new _transitions_linear_interpolator__WEBPACK_IMPORTED_MODULE_5__[\"default\"](['longitude', 'latitude', 'zoom'])\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"dragMode\", 'pan');\n  }\n\n  setProps(props) {\n    super.setProps(props);\n    this.dragRotate = false;\n    this.touchRotate = false;\n  }\n\n}\n//# sourceMappingURL=globe-controller.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/controllers/globe-controller.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/controllers/map-controller.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/controllers/map-controller.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"MapState\": function() { return /* binding */ MapState; },\n/* harmony export */   \"default\": function() { return /* binding */ MapController; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n/* harmony import */ var _controller__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/controller.js\");\n/* harmony import */ var _view_state__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./view-state */ \"./node_modules/@deck.gl/core/dist/esm/controllers/view-state.js\");\n/* harmony import */ var _math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @math.gl/web-mercator */ \"./node_modules/@math.gl/web-mercator/dist/esm/index.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@deck.gl/core/dist/esm/utils/assert.js\");\n/* harmony import */ var _transitions_linear_interpolator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../transitions/linear-interpolator */ \"./node_modules/@deck.gl/core/dist/esm/transitions/linear-interpolator.js\");\n\n\n\n\n\n\n\nconst PITCH_MOUSE_THRESHOLD = 5;\nconst PITCH_ACCEL = 1.2;\nclass MapState extends _view_state__WEBPACK_IMPORTED_MODULE_2__[\"default\"] {\n  constructor(options) {\n    const {\n      width,\n      height,\n      latitude,\n      longitude,\n      zoom,\n      bearing = 0,\n      pitch = 0,\n      altitude = 1.5,\n      position = [0, 0, 0],\n      maxZoom = 20,\n      minZoom = 0,\n      maxPitch = 60,\n      minPitch = 0,\n      startPanLngLat,\n      startZoomLngLat,\n      startRotatePos,\n      startBearing,\n      startPitch,\n      startZoom,\n      normalize = true\n    } = options;\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Number.isFinite(longitude));\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Number.isFinite(latitude));\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Number.isFinite(zoom));\n    super({\n      width,\n      height,\n      latitude,\n      longitude,\n      zoom,\n      bearing,\n      pitch,\n      altitude,\n      maxZoom,\n      minZoom,\n      maxPitch,\n      minPitch,\n      normalize,\n      position\n    }, {\n      startPanLngLat,\n      startZoomLngLat,\n      startRotatePos,\n      startBearing,\n      startPitch,\n      startZoom\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"makeViewport\", void 0);\n\n    this.makeViewport = options.makeViewport;\n  }\n\n  panStart({\n    pos\n  }) {\n    return this._getUpdatedState({\n      startPanLngLat: this._unproject(pos)\n    });\n  }\n\n  pan({\n    pos,\n    startPos\n  }) {\n    const startPanLngLat = this.getState().startPanLngLat || this._unproject(startPos);\n\n    if (!startPanLngLat) {\n      return this;\n    }\n\n    const viewport = this.makeViewport(this.getViewportProps());\n    const newProps = viewport.panByPosition(startPanLngLat, pos);\n    return this._getUpdatedState(newProps);\n  }\n\n  panEnd() {\n    return this._getUpdatedState({\n      startPanLngLat: null\n    });\n  }\n\n  rotateStart({\n    pos\n  }) {\n    return this._getUpdatedState({\n      startRotatePos: pos,\n      startBearing: this.getViewportProps().bearing,\n      startPitch: this.getViewportProps().pitch\n    });\n  }\n\n  rotate({\n    pos,\n    deltaAngleX = 0,\n    deltaAngleY = 0\n  }) {\n    const {\n      startRotatePos,\n      startBearing,\n      startPitch\n    } = this.getState();\n\n    if (!startRotatePos || startBearing === undefined || startPitch === undefined) {\n      return this;\n    }\n\n    let newRotation;\n\n    if (pos) {\n      newRotation = this._getNewRotation(pos, startRotatePos, startPitch, startBearing);\n    } else {\n      newRotation = {\n        bearing: startBearing + deltaAngleX,\n        pitch: startPitch + deltaAngleY\n      };\n    }\n\n    return this._getUpdatedState(newRotation);\n  }\n\n  rotateEnd() {\n    return this._getUpdatedState({\n      startBearing: null,\n      startPitch: null\n    });\n  }\n\n  zoomStart({\n    pos\n  }) {\n    return this._getUpdatedState({\n      startZoomLngLat: this._unproject(pos),\n      startZoom: this.getViewportProps().zoom\n    });\n  }\n\n  zoom({\n    pos,\n    startPos,\n    scale\n  }) {\n    let {\n      startZoom,\n      startZoomLngLat\n    } = this.getState();\n\n    if (!startZoomLngLat) {\n      startZoom = this.getViewportProps().zoom;\n      startZoomLngLat = this._unproject(startPos) || this._unproject(pos);\n    }\n\n    if (!startZoomLngLat) {\n      return this;\n    }\n\n    const {\n      maxZoom,\n      minZoom\n    } = this.getViewportProps();\n    let zoom = startZoom + Math.log2(scale);\n    zoom = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_4__.clamp)(zoom, minZoom, maxZoom);\n    const zoomedViewport = this.makeViewport({ ...this.getViewportProps(),\n      zoom\n    });\n    return this._getUpdatedState({\n      zoom,\n      ...zoomedViewport.panByPosition(startZoomLngLat, pos)\n    });\n  }\n\n  zoomEnd() {\n    return this._getUpdatedState({\n      startZoomLngLat: null,\n      startZoom: null\n    });\n  }\n\n  zoomIn(speed = 2) {\n    return this._zoomFromCenter(speed);\n  }\n\n  zoomOut(speed = 2) {\n    return this._zoomFromCenter(1 / speed);\n  }\n\n  moveLeft(speed = 100) {\n    return this._panFromCenter([speed, 0]);\n  }\n\n  moveRight(speed = 100) {\n    return this._panFromCenter([-speed, 0]);\n  }\n\n  moveUp(speed = 100) {\n    return this._panFromCenter([0, speed]);\n  }\n\n  moveDown(speed = 100) {\n    return this._panFromCenter([0, -speed]);\n  }\n\n  rotateLeft(speed = 15) {\n    return this._getUpdatedState({\n      bearing: this.getViewportProps().bearing - speed\n    });\n  }\n\n  rotateRight(speed = 15) {\n    return this._getUpdatedState({\n      bearing: this.getViewportProps().bearing + speed\n    });\n  }\n\n  rotateUp(speed = 10) {\n    return this._getUpdatedState({\n      pitch: this.getViewportProps().pitch + speed\n    });\n  }\n\n  rotateDown(speed = 10) {\n    return this._getUpdatedState({\n      pitch: this.getViewportProps().pitch - speed\n    });\n  }\n\n  shortestPathFrom(viewState) {\n    const fromProps = viewState.getViewportProps();\n    const props = { ...this.getViewportProps()\n    };\n    const {\n      bearing,\n      longitude\n    } = props;\n\n    if (Math.abs(bearing - fromProps.bearing) > 180) {\n      props.bearing = bearing < 0 ? bearing + 360 : bearing - 360;\n    }\n\n    if (Math.abs(longitude - fromProps.longitude) > 180) {\n      props.longitude = longitude < 0 ? longitude + 360 : longitude - 360;\n    }\n\n    return props;\n  }\n\n  applyConstraints(props) {\n    const {\n      maxZoom,\n      minZoom,\n      zoom\n    } = props;\n    props.zoom = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_4__.clamp)(zoom, minZoom, maxZoom);\n    const {\n      maxPitch,\n      minPitch,\n      pitch\n    } = props;\n    props.pitch = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_4__.clamp)(pitch, minPitch, maxPitch);\n    const {\n      normalize = true\n    } = props;\n\n    if (normalize) {\n      Object.assign(props, (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.normalizeViewportProps)(props));\n    }\n\n    return props;\n  }\n\n  _zoomFromCenter(scale) {\n    const {\n      width,\n      height\n    } = this.getViewportProps();\n    return this.zoom({\n      pos: [width / 2, height / 2],\n      scale\n    });\n  }\n\n  _panFromCenter(offset) {\n    const {\n      width,\n      height\n    } = this.getViewportProps();\n    return this.pan({\n      startPos: [width / 2, height / 2],\n      pos: [width / 2 + offset[0], height / 2 + offset[1]]\n    });\n  }\n\n  _getUpdatedState(newProps) {\n    return new this.constructor({\n      makeViewport: this.makeViewport,\n      ...this.getViewportProps(),\n      ...this.getState(),\n      ...newProps\n    });\n  }\n\n  _unproject(pos) {\n    const viewport = this.makeViewport(this.getViewportProps());\n    return pos && viewport.unproject(pos);\n  }\n\n  _getNewRotation(pos, startPos, startPitch, startBearing) {\n    const deltaX = pos[0] - startPos[0];\n    const deltaY = pos[1] - startPos[1];\n    const centerY = pos[1];\n    const startY = startPos[1];\n    const {\n      width,\n      height\n    } = this.getViewportProps();\n    const deltaScaleX = deltaX / width;\n    let deltaScaleY = 0;\n\n    if (deltaY > 0) {\n      if (Math.abs(height - startY) > PITCH_MOUSE_THRESHOLD) {\n        deltaScaleY = deltaY / (startY - height) * PITCH_ACCEL;\n      }\n    } else if (deltaY < 0) {\n      if (startY > PITCH_MOUSE_THRESHOLD) {\n        deltaScaleY = 1 - centerY / startY;\n      }\n    }\n\n    deltaScaleY = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_4__.clamp)(deltaScaleY, -1, 1);\n    const {\n      minPitch,\n      maxPitch\n    } = this.getViewportProps();\n    const bearing = startBearing + 180 * deltaScaleX;\n    let pitch = startPitch;\n\n    if (deltaScaleY > 0) {\n      pitch = startPitch + deltaScaleY * (maxPitch - startPitch);\n    } else if (deltaScaleY < 0) {\n      pitch = startPitch - deltaScaleY * (minPitch - startPitch);\n    }\n\n    return {\n      pitch,\n      bearing\n    };\n  }\n\n}\nclass MapController extends _controller__WEBPACK_IMPORTED_MODULE_5__[\"default\"] {\n  constructor(...args) {\n    super(...args);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"ControllerState\", MapState);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"transition\", {\n      transitionDuration: 300,\n      transitionInterpolator: new _transitions_linear_interpolator__WEBPACK_IMPORTED_MODULE_6__[\"default\"]({\n        transitionProps: {\n          compare: ['longitude', 'latitude', 'zoom', 'bearing', 'pitch', 'position'],\n          required: ['longitude', 'latitude', 'zoom']\n        }\n      })\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"dragMode\", 'pan');\n  }\n\n  setProps(props) {\n    props.position = props.position || [0, 0, 0];\n    const oldProps = this.props;\n    super.setProps(props);\n    const dimensionChanged = !oldProps || oldProps.height !== props.height;\n\n    if (dimensionChanged) {\n      this.updateViewport(new this.ControllerState({\n        makeViewport: this.makeViewport,\n        ...props,\n        ...this.state\n      }));\n    }\n  }\n\n}\n//# sourceMappingURL=map-controller.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/controllers/map-controller.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/controllers/orbit-controller.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/controllers/orbit-controller.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"OrbitState\": function() { return /* binding */ OrbitState; },\n/* harmony export */   \"default\": function() { return /* binding */ OrbitController; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n/* harmony import */ var _controller__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/controller.js\");\n/* harmony import */ var _view_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./view-state */ \"./node_modules/@deck.gl/core/dist/esm/controllers/view-state.js\");\n/* harmony import */ var _utils_math_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/math-utils */ \"./node_modules/@deck.gl/core/dist/esm/utils/math-utils.js\");\n/* harmony import */ var _transitions_linear_interpolator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../transitions/linear-interpolator */ \"./node_modules/@deck.gl/core/dist/esm/transitions/linear-interpolator.js\");\n\n\n\n\n\n\nclass OrbitState extends _view_state__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(options) {\n    const {\n      width,\n      height,\n      rotationX = 0,\n      rotationOrbit = 0,\n      target = [0, 0, 0],\n      zoom = 0,\n      minRotationX = -90,\n      maxRotationX = 90,\n      minZoom = -Infinity,\n      maxZoom = Infinity,\n      startPanPosition,\n      startRotatePos,\n      startRotationX,\n      startRotationOrbit,\n      startZoomPosition,\n      startZoom\n    } = options;\n    super({\n      width,\n      height,\n      rotationX,\n      rotationOrbit,\n      target,\n      zoom,\n      minRotationX,\n      maxRotationX,\n      minZoom,\n      maxZoom\n    }, {\n      startPanPosition,\n      startRotatePos,\n      startRotationX,\n      startRotationOrbit,\n      startZoomPosition,\n      startZoom\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"makeViewport\", void 0);\n\n    this.makeViewport = options.makeViewport;\n  }\n\n  panStart({\n    pos\n  }) {\n    return this._getUpdatedState({\n      startPanPosition: this._unproject(pos)\n    });\n  }\n\n  pan({\n    pos,\n    startPosition\n  }) {\n    const startPanPosition = this.getState().startPanPosition || startPosition;\n\n    if (!startPanPosition) {\n      return this;\n    }\n\n    const viewport = this.makeViewport(this.getViewportProps());\n    const newProps = viewport.panByPosition(startPanPosition, pos);\n    return this._getUpdatedState(newProps);\n  }\n\n  panEnd() {\n    return this._getUpdatedState({\n      startPanPosition: null\n    });\n  }\n\n  rotateStart({\n    pos\n  }) {\n    return this._getUpdatedState({\n      startRotatePos: pos,\n      startRotationX: this.getViewportProps().rotationX,\n      startRotationOrbit: this.getViewportProps().rotationOrbit\n    });\n  }\n\n  rotate({\n    pos,\n    deltaAngleX = 0,\n    deltaAngleY = 0\n  }) {\n    const {\n      startRotatePos,\n      startRotationX,\n      startRotationOrbit\n    } = this.getState();\n    const {\n      width,\n      height\n    } = this.getViewportProps();\n\n    if (!startRotatePos || startRotationX === undefined || startRotationOrbit === undefined) {\n      return this;\n    }\n\n    let newRotation;\n\n    if (pos) {\n      let deltaScaleX = (pos[0] - startRotatePos[0]) / width;\n      const deltaScaleY = (pos[1] - startRotatePos[1]) / height;\n\n      if (startRotationX < -90 || startRotationX > 90) {\n        deltaScaleX *= -1;\n      }\n\n      newRotation = {\n        rotationX: startRotationX + deltaScaleY * 180,\n        rotationOrbit: startRotationOrbit + deltaScaleX * 180\n      };\n    } else {\n      newRotation = {\n        rotationX: startRotationX + deltaAngleY,\n        rotationOrbit: startRotationOrbit + deltaAngleX\n      };\n    }\n\n    return this._getUpdatedState(newRotation);\n  }\n\n  rotateEnd() {\n    return this._getUpdatedState({\n      startRotationX: null,\n      startRotationOrbit: null\n    });\n  }\n\n  shortestPathFrom(viewState) {\n    const fromProps = viewState.getViewportProps();\n    const props = { ...this.getViewportProps()\n    };\n    const {\n      rotationOrbit\n    } = props;\n\n    if (Math.abs(rotationOrbit - fromProps.rotationOrbit) > 180) {\n      props.rotationOrbit = rotationOrbit < 0 ? rotationOrbit + 360 : rotationOrbit - 360;\n    }\n\n    return props;\n  }\n\n  zoomStart({\n    pos\n  }) {\n    return this._getUpdatedState({\n      startZoomPosition: this._unproject(pos),\n      startZoom: this.getViewportProps().zoom\n    });\n  }\n\n  zoom({\n    pos,\n    startPos,\n    scale\n  }) {\n    let {\n      startZoom,\n      startZoomPosition\n    } = this.getState();\n\n    if (!startZoomPosition) {\n      startZoom = this.getViewportProps().zoom;\n      startZoomPosition = this._unproject(startPos) || this._unproject(pos);\n    }\n\n    if (!startZoomPosition) {\n      return this;\n    }\n\n    const newZoom = this._calculateNewZoom({\n      scale,\n      startZoom\n    });\n\n    const zoomedViewport = this.makeViewport({ ...this.getViewportProps(),\n      zoom: newZoom\n    });\n    return this._getUpdatedState({\n      zoom: newZoom,\n      ...zoomedViewport.panByPosition(startZoomPosition, pos)\n    });\n  }\n\n  zoomEnd() {\n    return this._getUpdatedState({\n      startZoomPosition: null,\n      startZoom: null\n    });\n  }\n\n  zoomIn(speed = 2) {\n    return this._getUpdatedState({\n      zoom: this._calculateNewZoom({\n        scale: speed\n      })\n    });\n  }\n\n  zoomOut(speed = 2) {\n    return this._getUpdatedState({\n      zoom: this._calculateNewZoom({\n        scale: 1 / speed\n      })\n    });\n  }\n\n  moveLeft(speed = 50) {\n    return this._panFromCenter([-speed, 0]);\n  }\n\n  moveRight(speed = 50) {\n    return this._panFromCenter([speed, 0]);\n  }\n\n  moveUp(speed = 50) {\n    return this._panFromCenter([0, -speed]);\n  }\n\n  moveDown(speed = 50) {\n    return this._panFromCenter([0, speed]);\n  }\n\n  rotateLeft(speed = 15) {\n    return this._getUpdatedState({\n      rotationOrbit: this.getViewportProps().rotationOrbit - speed\n    });\n  }\n\n  rotateRight(speed = 15) {\n    return this._getUpdatedState({\n      rotationOrbit: this.getViewportProps().rotationOrbit + speed\n    });\n  }\n\n  rotateUp(speed = 10) {\n    return this._getUpdatedState({\n      rotationX: this.getViewportProps().rotationX - speed\n    });\n  }\n\n  rotateDown(speed = 10) {\n    return this._getUpdatedState({\n      rotationX: this.getViewportProps().rotationX + speed\n    });\n  }\n\n  _unproject(pos) {\n    const viewport = this.makeViewport(this.getViewportProps());\n    return pos && viewport.unproject(pos);\n  }\n\n  _calculateNewZoom({\n    scale,\n    startZoom\n  }) {\n    const {\n      maxZoom,\n      minZoom\n    } = this.getViewportProps();\n\n    if (startZoom === undefined) {\n      startZoom = this.getViewportProps().zoom;\n    }\n\n    const zoom = startZoom + Math.log2(scale);\n    return (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_2__.clamp)(zoom, minZoom, maxZoom);\n  }\n\n  _panFromCenter(offset) {\n    const {\n      width,\n      height,\n      target\n    } = this.getViewportProps();\n    return this.pan({\n      startPosition: target,\n      pos: [width / 2 + offset[0], height / 2 + offset[1]]\n    });\n  }\n\n  _getUpdatedState(newProps) {\n    return new this.constructor({\n      makeViewport: this.makeViewport,\n      ...this.getViewportProps(),\n      ...this.getState(),\n      ...newProps\n    });\n  }\n\n  applyConstraints(props) {\n    const {\n      maxZoom,\n      minZoom,\n      zoom,\n      maxRotationX,\n      minRotationX,\n      rotationOrbit\n    } = props;\n    props.zoom = Array.isArray(zoom) ? [(0,_math_gl_core__WEBPACK_IMPORTED_MODULE_2__.clamp)(zoom[0], minZoom, maxZoom), (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_2__.clamp)(zoom[1], minZoom, maxZoom)] : (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_2__.clamp)(zoom, minZoom, maxZoom);\n    props.rotationX = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_2__.clamp)(props.rotationX, minRotationX, maxRotationX);\n\n    if (rotationOrbit < -180 || rotationOrbit > 180) {\n      props.rotationOrbit = (0,_utils_math_utils__WEBPACK_IMPORTED_MODULE_3__.mod)(rotationOrbit + 180, 360) - 180;\n    }\n\n    return props;\n  }\n\n}\nclass OrbitController extends _controller__WEBPACK_IMPORTED_MODULE_4__[\"default\"] {\n  constructor(...args) {\n    super(...args);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"ControllerState\", OrbitState);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"transition\", {\n      transitionDuration: 300,\n      transitionInterpolator: new _transitions_linear_interpolator__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n        transitionProps: {\n          compare: ['target', 'zoom', 'rotationX', 'rotationOrbit'],\n          required: ['target', 'zoom']\n        }\n      })\n    });\n  }\n\n}\n//# sourceMappingURL=orbit-controller.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/controllers/orbit-controller.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/controllers/orthographic-controller.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/controllers/orthographic-controller.js ***!
  \************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ OrthographicController; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n/* harmony import */ var _controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/controller.js\");\n/* harmony import */ var _orbit_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./orbit-controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/orbit-controller.js\");\n/* harmony import */ var _transitions_linear_interpolator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../transitions/linear-interpolator */ \"./node_modules/@deck.gl/core/dist/esm/transitions/linear-interpolator.js\");\n\n\n\n\n\n\nclass OrthographicState extends _orbit_controller__WEBPACK_IMPORTED_MODULE_1__.OrbitState {\n  constructor(props) {\n    super(props);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"zoomAxis\", void 0);\n\n    this.zoomAxis = props.zoomAxis || 'all';\n  }\n\n  _calculateNewZoom({\n    scale,\n    startZoom\n  }) {\n    const {\n      maxZoom,\n      minZoom\n    } = this.getViewportProps();\n\n    if (startZoom === undefined) {\n      startZoom = this.getViewportProps().zoom;\n    }\n\n    let deltaZoom = Math.log2(scale);\n\n    if (Array.isArray(startZoom)) {\n      let [newZoomX, newZoomY] = startZoom;\n\n      switch (this.zoomAxis) {\n        case 'X':\n          newZoomX = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_2__.clamp)(newZoomX + deltaZoom, minZoom, maxZoom);\n          break;\n\n        case 'Y':\n          newZoomY = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_2__.clamp)(newZoomY + deltaZoom, minZoom, maxZoom);\n          break;\n\n        default:\n          let z = Math.min(newZoomX + deltaZoom, newZoomY + deltaZoom);\n\n          if (z < minZoom) {\n            deltaZoom += minZoom - z;\n          }\n\n          z = Math.max(newZoomX + deltaZoom, newZoomY + deltaZoom);\n\n          if (z > maxZoom) {\n            deltaZoom += maxZoom - z;\n          }\n\n          newZoomX += deltaZoom;\n          newZoomY += deltaZoom;\n      }\n\n      return [newZoomX, newZoomY];\n    }\n\n    return (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_2__.clamp)(startZoom + deltaZoom, minZoom, maxZoom);\n  }\n\n}\n\nclass OrthographicController extends _controller__WEBPACK_IMPORTED_MODULE_3__[\"default\"] {\n  constructor(...args) {\n    super(...args);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"ControllerState\", OrthographicState);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"transition\", {\n      transitionDuration: 300,\n      transitionInterpolator: new _transitions_linear_interpolator__WEBPACK_IMPORTED_MODULE_4__[\"default\"](['target', 'zoom'])\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"dragMode\", 'pan');\n  }\n\n  _onPanRotate() {\n    return false;\n  }\n\n}\n//# sourceMappingURL=orthographic-controller.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/controllers/orthographic-controller.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/controllers/transition-manager.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/controllers/transition-manager.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TRANSITION_EVENTS\": function() { return /* binding */ TRANSITION_EVENTS; },\n/* harmony export */   \"default\": function() { return /* binding */ TransitionManager; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _transitions_transition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../transitions/transition */ \"./node_modules/@deck.gl/core/dist/esm/transitions/transition.js\");\n\n\n\nconst noop = () => {};\n\nconst TRANSITION_EVENTS = {\n  BREAK: 1,\n  SNAP_TO_END: 2,\n  IGNORE: 3\n};\n\nconst DEFAULT_EASING = t => t;\n\nconst DEFAULT_INTERRUPTION = TRANSITION_EVENTS.BREAK;\nclass TransitionManager {\n  constructor(opts) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"getControllerState\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"props\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"propsInTransition\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"transition\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"onViewStateChange\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"onStateChange\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_onTransitionUpdate\", transition => {\n      const {\n        time,\n        settings: {\n          interpolator,\n          startProps,\n          endProps,\n          duration,\n          easing\n        }\n      } = transition;\n      const t = easing(time / duration);\n      const viewport = interpolator.interpolateProps(startProps, endProps, t);\n      this.propsInTransition = this.getControllerState({ ...this.props,\n        ...viewport\n      }).getViewportProps();\n      this.onViewStateChange({\n        viewState: this.propsInTransition,\n        oldViewState: this.props\n      });\n    });\n\n    this.getControllerState = opts.getControllerState;\n    this.propsInTransition = null;\n    this.transition = new _transitions_transition__WEBPACK_IMPORTED_MODULE_1__[\"default\"](opts.timeline);\n    this.onViewStateChange = opts.onViewStateChange || noop;\n    this.onStateChange = opts.onStateChange || noop;\n  }\n\n  finalize() {\n    this.transition.cancel();\n  }\n\n  getViewportInTransition() {\n    return this.propsInTransition;\n  }\n\n  processViewStateChange(nextProps) {\n    let transitionTriggered = false;\n    const currentProps = this.props;\n    this.props = nextProps;\n\n    if (!currentProps || this._shouldIgnoreViewportChange(currentProps, nextProps)) {\n      return false;\n    }\n\n    if (this._isTransitionEnabled(nextProps)) {\n      let startProps = currentProps;\n\n      if (this.transition.inProgress) {\n        const {\n          interruption,\n          endProps\n        } = this.transition.settings;\n        startProps = { ...currentProps,\n          ...(interruption === TRANSITION_EVENTS.SNAP_TO_END ? endProps : this.propsInTransition || currentProps)\n        };\n      }\n\n      this._triggerTransition(startProps, nextProps);\n\n      transitionTriggered = true;\n    } else {\n      this.transition.cancel();\n    }\n\n    return transitionTriggered;\n  }\n\n  updateTransition() {\n    this.transition.update();\n  }\n\n  _isTransitionEnabled(props) {\n    const {\n      transitionDuration,\n      transitionInterpolator\n    } = props;\n    return (transitionDuration > 0 || transitionDuration === 'auto') && Boolean(transitionInterpolator);\n  }\n\n  _isUpdateDueToCurrentTransition(props) {\n    if (this.transition.inProgress && this.propsInTransition) {\n      return this.transition.settings.interpolator.arePropsEqual(props, this.propsInTransition);\n    }\n\n    return false;\n  }\n\n  _shouldIgnoreViewportChange(currentProps, nextProps) {\n    if (this.transition.inProgress) {\n      return this.transition.settings.interruption === TRANSITION_EVENTS.IGNORE || this._isUpdateDueToCurrentTransition(nextProps);\n    }\n\n    if (this._isTransitionEnabled(nextProps)) {\n      return nextProps.transitionInterpolator.arePropsEqual(currentProps, nextProps);\n    }\n\n    return true;\n  }\n\n  _triggerTransition(startProps, endProps) {\n    const startViewstate = this.getControllerState(startProps);\n    const endViewStateProps = this.getControllerState(endProps).shortestPathFrom(startViewstate);\n    const transitionInterpolator = endProps.transitionInterpolator;\n    const duration = transitionInterpolator.getDuration ? transitionInterpolator.getDuration(startProps, endProps) : endProps.transitionDuration;\n\n    if (duration === 0) {\n      return;\n    }\n\n    const initialProps = transitionInterpolator.initializeProps(startProps, endViewStateProps);\n    this.propsInTransition = {};\n    const transitionSettings = {\n      duration,\n      easing: endProps.transitionEasing || DEFAULT_EASING,\n      interpolator: transitionInterpolator,\n      interruption: endProps.transitionInterruption || DEFAULT_INTERRUPTION,\n      startProps: initialProps.start,\n      endProps: initialProps.end,\n      onStart: endProps.onTransitionStart,\n      onUpdate: this._onTransitionUpdate,\n      onInterrupt: this._onTransitionEnd(endProps.onTransitionInterrupt),\n      onEnd: this._onTransitionEnd(endProps.onTransitionEnd)\n    };\n    this.transition.start(transitionSettings);\n    this.onStateChange({\n      inTransition: true\n    });\n    this.updateTransition();\n  }\n\n  _onTransitionEnd(callback) {\n    return transition => {\n      this.propsInTransition = null;\n      this.onStateChange({\n        inTransition: false,\n        isZooming: false,\n        isPanning: false,\n        isRotating: false\n      });\n      callback === null || callback === void 0 ? void 0 : callback(transition);\n    };\n  }\n\n}\n//# sourceMappingURL=transition-manager.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/controllers/transition-manager.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/controllers/view-state.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/controllers/view-state.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ViewState; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\nclass ViewState {\n  constructor(props, state) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_viewportProps\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_state\", void 0);\n\n    this._viewportProps = this.applyConstraints(props);\n    this._state = state;\n  }\n\n  getViewportProps() {\n    return this._viewportProps;\n  }\n\n  getState() {\n    return this._state;\n  }\n\n}\n//# sourceMappingURL=view-state.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/controllers/view-state.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/debug/index.js":
/*!************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/debug/index.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ debug; },\n/* harmony export */   \"register\": function() { return /* binding */ register; }\n/* harmony export */ });\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/log */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n/* harmony import */ var _loggers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loggers */ \"./node_modules/@deck.gl/core/dist/esm/debug/loggers.js\");\n\n\nlet loggers = {};\n\nif (true) {\n  loggers = (0,_loggers__WEBPACK_IMPORTED_MODULE_0__.getLoggers)(_utils_log__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n}\n\nfunction register(handlers) {\n  loggers = handlers;\n}\nfunction debug(eventType, arg1, arg2, arg3) {\n  if (_utils_log__WEBPACK_IMPORTED_MODULE_1__[\"default\"].level > 0 && loggers[eventType]) {\n    loggers[eventType].call(null, arg1, arg2, arg3);\n  }\n}\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/debug/index.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/debug/loggers.js":
/*!**************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/debug/loggers.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getLoggers\": function() { return /* binding */ getLoggers; }\n/* harmony export */ });\nconst logState = {\n  attributeUpdateStart: -1,\n  attributeManagerUpdateStart: -1,\n  attributeUpdateMessages: []\n};\nconst LOG_LEVEL_MAJOR_UPDATE = 1;\nconst LOG_LEVEL_MINOR_UPDATE = 2;\nconst LOG_LEVEL_UPDATE_DETAIL = 3;\nconst LOG_LEVEL_INFO = 4;\nconst LOG_LEVEL_DRAW = 2;\nconst getLoggers = log => ({\n  'layer.changeFlag': (layer, key, flags) => {\n    log.log(LOG_LEVEL_UPDATE_DETAIL, \"\".concat(layer.id, \" \").concat(key, \": \"), flags[key])();\n  },\n  'layer.initialize': layer => {\n    log.log(LOG_LEVEL_MAJOR_UPDATE, \"Initializing \".concat(layer))();\n  },\n  'layer.update': (layer, needsUpdate) => {\n    if (needsUpdate) {\n      const flags = layer.getChangeFlags();\n      log.log(LOG_LEVEL_MINOR_UPDATE, \"Updating \".concat(layer, \" because: \").concat(Object.keys(flags).filter(key => flags[key]).join(', ')))();\n    } else {\n      log.log(LOG_LEVEL_INFO, \"\".concat(layer, \" does not need update\"))();\n    }\n  },\n  'layer.matched': (layer, changed) => {\n    if (changed) {\n      log.log(LOG_LEVEL_INFO, \"Matched \".concat(layer, \", state transfered\"))();\n    }\n  },\n  'layer.finalize': layer => {\n    log.log(LOG_LEVEL_MAJOR_UPDATE, \"Finalizing \".concat(layer))();\n  },\n  'compositeLayer.renderLayers': (layer, updated, subLayers) => {\n    if (updated) {\n      log.log(LOG_LEVEL_MINOR_UPDATE, \"Composite layer rendered new subLayers \".concat(layer), subLayers)();\n    } else {\n      log.log(LOG_LEVEL_INFO, \"Composite layer reused subLayers \".concat(layer), subLayers)();\n    }\n  },\n  'layerManager.setLayers': (layerManager, updated, layers) => {\n    if (updated) {\n      log.log(LOG_LEVEL_MINOR_UPDATE, \"Updating \".concat(layers.length, \" deck layers\"))();\n    }\n  },\n  'layerManager.activateViewport': (layerManager, viewport) => {\n    log.log(LOG_LEVEL_UPDATE_DETAIL, 'Viewport changed', viewport)();\n  },\n  'attributeManager.invalidate': (attributeManager, trigger, attributeNames) => {\n    log.log(LOG_LEVEL_MAJOR_UPDATE, attributeNames ? \"invalidated attributes \".concat(attributeNames, \" (\").concat(trigger, \") for \").concat(attributeManager.id) : \"invalidated all attributes for \".concat(attributeManager.id))();\n  },\n  'attributeManager.updateStart': attributeManager => {\n    logState.attributeUpdateMessages.length = 0;\n    logState.attributeManagerUpdateStart = Date.now();\n  },\n  'attributeManager.updateEnd': (attributeManager, numInstances) => {\n    const timeMs = Math.round(Date.now() - logState.attributeManagerUpdateStart);\n    log.groupCollapsed(LOG_LEVEL_MINOR_UPDATE, \"Updated attributes for \".concat(numInstances, \" instances in \").concat(attributeManager.id, \" in \").concat(timeMs, \"ms\"))();\n\n    for (const updateMessage of logState.attributeUpdateMessages) {\n      log.log(LOG_LEVEL_UPDATE_DETAIL, updateMessage)();\n    }\n\n    log.groupEnd(LOG_LEVEL_MINOR_UPDATE)();\n  },\n  'attribute.updateStart': attribute => {\n    logState.attributeUpdateStart = Date.now();\n  },\n  'attribute.allocate': (attribute, numInstances) => {\n    const message = \"\".concat(attribute.id, \" allocated \").concat(numInstances);\n    logState.attributeUpdateMessages.push(message);\n  },\n  'attribute.updateEnd': (attribute, numInstances) => {\n    const timeMs = Math.round(Date.now() - logState.attributeUpdateStart);\n    const message = \"\".concat(attribute.id, \" updated \").concat(numInstances, \" in \").concat(timeMs, \"ms\");\n    logState.attributeUpdateMessages.push(message);\n  },\n  'deckRenderer.renderLayers': (deckRenderer, renderStats, opts) => {\n    const {\n      pass,\n      redrawReason,\n      stats\n    } = opts;\n\n    for (const status of renderStats) {\n      const {\n        totalCount,\n        visibleCount,\n        compositeCount,\n        pickableCount\n      } = status;\n      const primitiveCount = totalCount - compositeCount;\n      const hiddenCount = primitiveCount - visibleCount;\n      log.log(LOG_LEVEL_DRAW, \"RENDER #\".concat(deckRenderer.renderCount, \"   \").concat(visibleCount, \" (of \").concat(totalCount, \" layers) to \").concat(pass, \" because \").concat(redrawReason, \"   (\").concat(hiddenCount, \" hidden, \").concat(compositeCount, \" composite \").concat(pickableCount, \" pickable)\"))();\n\n      if (stats) {\n        stats.get('Redraw Layers').add(visibleCount);\n      }\n    }\n  }\n});\n//# sourceMappingURL=loggers.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/debug/loggers.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/effects/lighting/ambient-light.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/effects/lighting/ambient-light.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AmbientLight\": function() { return /* binding */ AmbientLight; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\nconst DEFAULT_LIGHT_COLOR = [255, 255, 255];\nconst DEFAULT_LIGHT_INTENSITY = 1.0;\nlet idCount = 0;\nclass AmbientLight {\n  constructor(props = {}) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"id\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"color\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"intensity\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"type\", 'ambient');\n\n    const {\n      color = DEFAULT_LIGHT_COLOR\n    } = props;\n    const {\n      intensity = DEFAULT_LIGHT_INTENSITY\n    } = props;\n    this.id = props.id || \"ambient-\".concat(idCount++);\n    this.color = color;\n    this.intensity = intensity;\n  }\n\n}\n//# sourceMappingURL=ambient-light.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/effects/lighting/ambient-light.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/effects/lighting/camera-light.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/effects/lighting/camera-light.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ CameraLight; }\n/* harmony export */ });\n/* harmony import */ var _point_light__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./point-light */ \"./node_modules/@deck.gl/core/dist/esm/effects/lighting/point-light.js\");\n/* harmony import */ var _shaderlib_project_viewport_uniforms__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shaderlib/project/viewport-uniforms */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project/viewport-uniforms.js\");\n\n\nclass CameraLight extends _point_light__WEBPACK_IMPORTED_MODULE_0__.PointLight {\n  getProjectedLight({\n    layer\n  }) {\n    const {\n      projectedLight\n    } = this;\n    const viewport = layer.context.viewport;\n    const {\n      coordinateSystem,\n      coordinateOrigin,\n      modelMatrix\n    } = layer.props;\n    const {\n      project_uCameraPosition\n    } = (0,_shaderlib_project_viewport_uniforms__WEBPACK_IMPORTED_MODULE_1__.getUniformsFromViewport)({\n      viewport,\n      modelMatrix,\n      coordinateSystem,\n      coordinateOrigin\n    });\n    projectedLight.color = this.color;\n    projectedLight.intensity = this.intensity;\n    projectedLight.position = project_uCameraPosition;\n    return projectedLight;\n  }\n\n}\n//# sourceMappingURL=camera-light.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/effects/lighting/camera-light.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/effects/lighting/directional-light.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/effects/lighting/directional-light.js ***!
  \***********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DirectionalLight\": function() { return /* binding */ DirectionalLight; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/vector3.js\");\n\n\nconst DEFAULT_LIGHT_COLOR = [255, 255, 255];\nconst DEFAULT_LIGHT_INTENSITY = 1.0;\nconst DEFAULT_LIGHT_DIRECTION = [0.0, 0.0, -1.0];\nlet idCount = 0;\nclass DirectionalLight {\n  constructor(props = {}) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"id\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"color\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"intensity\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"type\", 'directional');\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"direction\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"shadow\", void 0);\n\n    const {\n      color = DEFAULT_LIGHT_COLOR\n    } = props;\n    const {\n      intensity = DEFAULT_LIGHT_INTENSITY\n    } = props;\n    const {\n      direction = DEFAULT_LIGHT_DIRECTION\n    } = props;\n    const {\n      _shadow = false\n    } = props;\n    this.id = props.id || \"directional-\".concat(idCount++);\n    this.color = color;\n    this.intensity = intensity;\n    this.type = 'directional';\n    this.direction = new _math_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"](direction).normalize().toArray();\n    this.shadow = _shadow;\n  }\n\n  getProjectedLight(opts) {\n    return this;\n  }\n\n}\n//# sourceMappingURL=directional-light.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/effects/lighting/directional-light.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/effects/lighting/lighting-effect.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/effects/lighting/lighting-effect.js ***!
  \*********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LightingEffect; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/lib/program-manager.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js\");\n/* harmony import */ var _ambient_light__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ambient-light */ \"./node_modules/@deck.gl/core/dist/esm/effects/lighting/ambient-light.js\");\n/* harmony import */ var _directional_light__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./directional-light */ \"./node_modules/@deck.gl/core/dist/esm/effects/lighting/directional-light.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/matrix4.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/vector3.js\");\n/* harmony import */ var _passes_shadow_pass__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../passes/shadow-pass */ \"./node_modules/@deck.gl/core/dist/esm/passes/shadow-pass.js\");\n/* harmony import */ var _shaderlib_shadow_shadow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shaderlib/shadow/shadow */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/shadow/shadow.js\");\n\n\n\n\n\n\n\nconst DEFAULT_AMBIENT_LIGHT_PROPS = {\n  color: [255, 255, 255],\n  intensity: 1.0\n};\nconst DEFAULT_DIRECTIONAL_LIGHT_PROPS = [{\n  color: [255, 255, 255],\n  intensity: 1.0,\n  direction: [-1, 3, -1]\n}, {\n  color: [255, 255, 255],\n  intensity: 0.9,\n  direction: [1, -8, -2.5]\n}];\nconst DEFAULT_SHADOW_COLOR = [0, 0, 0, 200 / 255];\nclass LightingEffect {\n  constructor(props = {}) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"id\", 'lighting-effect');\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"props\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"shadowColor\", DEFAULT_SHADOW_COLOR);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"shadow\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"ambientLight\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"directionalLights\", []);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"pointLights\", []);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"shadowPasses\", []);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"shadowMaps\", []);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"dummyShadowMap\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"programManager\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"shadowMatrices\", void 0);\n\n    for (const key in props) {\n      const lightSource = props[key];\n\n      switch (lightSource.type) {\n        case 'ambient':\n          this.ambientLight = lightSource;\n          break;\n\n        case 'directional':\n          this.directionalLights.push(lightSource);\n          break;\n\n        case 'point':\n          this.pointLights.push(lightSource);\n          break;\n\n        default:\n      }\n    }\n\n    this._applyDefaultLights();\n\n    this.shadow = this.directionalLights.some(light => light.shadow);\n  }\n\n  preRender(gl, {\n    layers,\n    layerFilter,\n    viewports,\n    onViewportActive,\n    views\n  }) {\n    if (!this.shadow) return;\n    this.shadowMatrices = this._calculateMatrices();\n\n    if (this.shadowPasses.length === 0) {\n      this._createShadowPasses(gl);\n    }\n\n    if (!this.programManager) {\n      this.programManager = _luma_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getDefaultProgramManager(gl);\n\n      if (_shaderlib_shadow_shadow__WEBPACK_IMPORTED_MODULE_2__[\"default\"]) {\n        this.programManager.addDefaultModule(_shaderlib_shadow_shadow__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n      }\n    }\n\n    if (!this.dummyShadowMap) {\n      this.dummyShadowMap = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"](gl, {\n        width: 1,\n        height: 1\n      });\n    }\n\n    for (let i = 0; i < this.shadowPasses.length; i++) {\n      const shadowPass = this.shadowPasses[i];\n      shadowPass.render({\n        layers,\n        layerFilter,\n        viewports,\n        onViewportActive,\n        views,\n        moduleParameters: {\n          shadowLightId: i,\n          dummyShadowMap: this.dummyShadowMap,\n          shadowMatrices: this.shadowMatrices\n        }\n      });\n    }\n  }\n\n  getModuleParameters(layer) {\n    const parameters = this.shadow ? {\n      shadowMaps: this.shadowMaps,\n      dummyShadowMap: this.dummyShadowMap,\n      shadowColor: this.shadowColor,\n      shadowMatrices: this.shadowMatrices\n    } : {};\n    parameters.lightSources = {\n      ambientLight: this.ambientLight,\n      directionalLights: this.directionalLights.map(directionalLight => directionalLight.getProjectedLight({\n        layer\n      })),\n      pointLights: this.pointLights.map(pointLight => pointLight.getProjectedLight({\n        layer\n      }))\n    };\n    return parameters;\n  }\n\n  cleanup() {\n    for (const shadowPass of this.shadowPasses) {\n      shadowPass.delete();\n    }\n\n    this.shadowPasses.length = 0;\n    this.shadowMaps.length = 0;\n\n    if (this.dummyShadowMap) {\n      this.dummyShadowMap.delete();\n      this.dummyShadowMap = null;\n    }\n\n    if (this.shadow && this.programManager) {\n      this.programManager.removeDefaultModule(_shaderlib_shadow_shadow__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n      this.programManager = null;\n    }\n  }\n\n  _calculateMatrices() {\n    const lightMatrices = [];\n\n    for (const light of this.directionalLights) {\n      const viewMatrix = new _math_gl_core__WEBPACK_IMPORTED_MODULE_4__[\"default\"]().lookAt({\n        eye: new _math_gl_core__WEBPACK_IMPORTED_MODULE_5__[\"default\"](light.direction).negate()\n      });\n      lightMatrices.push(viewMatrix);\n    }\n\n    return lightMatrices;\n  }\n\n  _createShadowPasses(gl) {\n    for (let i = 0; i < this.directionalLights.length; i++) {\n      const shadowPass = new _passes_shadow_pass__WEBPACK_IMPORTED_MODULE_6__[\"default\"](gl);\n      this.shadowPasses[i] = shadowPass;\n      this.shadowMaps[i] = shadowPass.shadowMap;\n    }\n  }\n\n  _applyDefaultLights() {\n    const {\n      ambientLight,\n      pointLights,\n      directionalLights\n    } = this;\n\n    if (!ambientLight && pointLights.length === 0 && directionalLights.length === 0) {\n      this.ambientLight = new _ambient_light__WEBPACK_IMPORTED_MODULE_7__.AmbientLight(DEFAULT_AMBIENT_LIGHT_PROPS);\n      this.directionalLights.push(new _directional_light__WEBPACK_IMPORTED_MODULE_8__.DirectionalLight(DEFAULT_DIRECTIONAL_LIGHT_PROPS[0]), new _directional_light__WEBPACK_IMPORTED_MODULE_8__.DirectionalLight(DEFAULT_DIRECTIONAL_LIGHT_PROPS[1]));\n    }\n  }\n\n}\n//# sourceMappingURL=lighting-effect.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/effects/lighting/lighting-effect.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/effects/lighting/point-light.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/effects/lighting/point-light.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PointLight\": function() { return /* binding */ PointLight; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _shaderlib_project_project_functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shaderlib/project/project-functions */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project-functions.js\");\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../lib/constants */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n\n\n\nconst DEFAULT_LIGHT_COLOR = [255, 255, 255];\nconst DEFAULT_LIGHT_INTENSITY = 1.0;\nconst DEFAULT_ATTENUATION = [0, 0, 1];\nconst DEFAULT_LIGHT_POSITION = [0.0, 0.0, 1.0];\nlet idCount = 0;\nclass PointLight {\n  constructor(props = {}) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"id\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"color\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"intensity\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"type\", 'point');\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"position\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"attenuation\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"projectedLight\", void 0);\n\n    const {\n      color = DEFAULT_LIGHT_COLOR\n    } = props;\n    const {\n      intensity = DEFAULT_LIGHT_INTENSITY\n    } = props;\n    const {\n      position = DEFAULT_LIGHT_POSITION\n    } = props;\n    this.id = props.id || \"point-\".concat(idCount++);\n    this.color = color;\n    this.intensity = intensity;\n    this.type = 'point';\n    this.position = position;\n    this.attenuation = getAttenuation(props);\n    this.projectedLight = { ...this\n    };\n  }\n\n  getProjectedLight({\n    layer\n  }) {\n    const {\n      projectedLight\n    } = this;\n    const viewport = layer.context.viewport;\n    const {\n      coordinateSystem,\n      coordinateOrigin\n    } = layer.props;\n    const position = (0,_shaderlib_project_project_functions__WEBPACK_IMPORTED_MODULE_1__.projectPosition)(this.position, {\n      viewport,\n      coordinateSystem,\n      coordinateOrigin,\n      fromCoordinateSystem: viewport.isGeospatial ? _lib_constants__WEBPACK_IMPORTED_MODULE_2__.COORDINATE_SYSTEM.LNGLAT : _lib_constants__WEBPACK_IMPORTED_MODULE_2__.COORDINATE_SYSTEM.CARTESIAN,\n      fromCoordinateOrigin: [0, 0, 0]\n    });\n    projectedLight.color = this.color;\n    projectedLight.intensity = this.intensity;\n    projectedLight.position = position;\n    return projectedLight;\n  }\n\n}\n\nfunction getAttenuation(props) {\n  if (props.attenuation) {\n    return props.attenuation;\n  }\n\n  if ('intensity' in props) {\n    return [0, 0, props.intensity || 0];\n  }\n\n  return DEFAULT_ATTENUATION;\n}\n//# sourceMappingURL=point-light.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/effects/lighting/point-light.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/effects/lighting/sun-light.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/effects/lighting/sun-light.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ SunLight; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _directional_light__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./directional-light */ \"./node_modules/@deck.gl/core/dist/esm/effects/lighting/directional-light.js\");\n/* harmony import */ var _math_gl_sun__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @math.gl/sun */ \"./node_modules/@math.gl/sun/dist/esm/index.js\");\n\n\n\nclass SunLight extends _directional_light__WEBPACK_IMPORTED_MODULE_2__.DirectionalLight {\n  constructor(opts) {\n    super(opts);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"timestamp\", void 0);\n\n    this.timestamp = opts.timestamp;\n  }\n\n  getProjectedLight({\n    layer\n  }) {\n    const {\n      viewport\n    } = layer.context;\n    const isGlobe = viewport.resolution && viewport.resolution > 0;\n\n    if (isGlobe) {\n      const [x, y, z] = (0,_math_gl_sun__WEBPACK_IMPORTED_MODULE_1__.getSunDirection)(this.timestamp, 0, 0);\n      this.direction = [x, -z, y];\n    } else {\n      const {\n        latitude,\n        longitude\n      } = viewport;\n      this.direction = (0,_math_gl_sun__WEBPACK_IMPORTED_MODULE_1__.getSunDirection)(this.timestamp, latitude, longitude);\n    }\n\n    return this;\n  }\n\n}\n//# sourceMappingURL=sun-light.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/effects/lighting/sun-light.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/effects/mask/mask-effect.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/effects/mask/mask-effect.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ MaskEffect; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n/* harmony import */ var _passes_mask_pass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../passes/mask-pass */ \"./node_modules/@deck.gl/core/dist/esm/passes/mask-pass.js\");\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../lib/constants */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils */ \"./node_modules/@deck.gl/core/dist/esm/effects/mask/utils.js\");\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/log */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n\n\n\n\n\n\n\nclass MaskEffect {\n  constructor() {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"id\", 'mask-effect');\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"props\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"useInPicking\", true);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"dummyMaskMap\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"channels\", []);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"masks\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"maskPass\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"maskMap\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"lastViewport\", void 0);\n  }\n\n  preRender(gl, {\n    layers,\n    layerFilter,\n    viewports,\n    onViewportActive,\n    views\n  }) {\n    if (!this.dummyMaskMap) {\n      this.dummyMaskMap = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"](gl, {\n        width: 1,\n        height: 1\n      });\n    }\n\n    const maskLayers = layers.filter(l => l.props.visible && l.props.operation === _lib_constants__WEBPACK_IMPORTED_MODULE_2__.OPERATION.MASK);\n\n    if (maskLayers.length === 0) {\n      this.masks = null;\n      this.channels.length = 0;\n      return;\n    }\n\n    this.masks = {};\n\n    if (!this.maskPass) {\n      this.maskPass = new _passes_mask_pass__WEBPACK_IMPORTED_MODULE_3__[\"default\"](gl, {\n        id: 'default-mask'\n      });\n      this.maskMap = this.maskPass.maskMap;\n    }\n\n    const channelMap = this._sortMaskChannels(maskLayers);\n\n    const viewport = viewports[0];\n    const viewportChanged = !this.lastViewport || !this.lastViewport.equals(viewport);\n\n    for (const maskId in channelMap) {\n      this._renderChannel(channelMap[maskId], {\n        layerFilter,\n        onViewportActive,\n        views,\n        viewport,\n        viewportChanged\n      });\n    }\n  }\n\n  _renderChannel(channelInfo, {\n    layerFilter,\n    onViewportActive,\n    views,\n    viewport,\n    viewportChanged\n  }) {\n    const oldChannelInfo = this.channels[channelInfo.index];\n\n    if (!oldChannelInfo) {\n      return;\n    }\n\n    const maskChanged = channelInfo === oldChannelInfo || oldChannelInfo.layers.length !== channelInfo.layers.length || channelInfo.layerBounds.some((b, i) => b !== oldChannelInfo.layerBounds[i]);\n    channelInfo.bounds = oldChannelInfo.bounds;\n    channelInfo.maskBounds = oldChannelInfo.maskBounds;\n    this.channels[channelInfo.index] = channelInfo;\n\n    if (maskChanged || viewportChanged) {\n      this.lastViewport = viewport;\n      channelInfo.bounds = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.getMaskBounds)({\n        layers: channelInfo.layers,\n        viewport\n      });\n\n      if (maskChanged || !(0,_math_gl_core__WEBPACK_IMPORTED_MODULE_5__.equals)(channelInfo.bounds, oldChannelInfo.bounds)) {\n        const {\n          maskPass,\n          maskMap\n        } = this;\n        const maskViewport = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.getMaskViewport)({\n          bounds: channelInfo.bounds,\n          viewport,\n          width: maskMap.width,\n          height: maskMap.height\n        });\n        channelInfo.maskBounds = maskViewport ? maskViewport.getBounds() : [0, 0, 1, 1];\n        maskPass.render({\n          pass: 'mask',\n          channel: channelInfo.index,\n          layers: channelInfo.layers,\n          layerFilter,\n          viewports: maskViewport ? [maskViewport] : [],\n          onViewportActive,\n          views,\n          moduleParameters: {\n            devicePixelRatio: 1\n          }\n        });\n      }\n    }\n\n    this.masks[channelInfo.id] = {\n      index: channelInfo.index,\n      bounds: channelInfo.maskBounds,\n      coordinateOrigin: channelInfo.coordinateOrigin,\n      coordinateSystem: channelInfo.coordinateSystem\n    };\n  }\n\n  _sortMaskChannels(maskLayers) {\n    const channelMap = {};\n    let channelCount = 0;\n\n    for (const layer of maskLayers) {\n      const {\n        id\n      } = layer.root;\n      let channelInfo = channelMap[id];\n\n      if (!channelInfo) {\n        if (++channelCount > 4) {\n          _utils_log__WEBPACK_IMPORTED_MODULE_6__[\"default\"].warn('Too many mask layers. The max supported is 4')();\n          continue;\n        }\n\n        channelInfo = {\n          id,\n          index: this.channels.findIndex(c => (c === null || c === void 0 ? void 0 : c.id) === id),\n          layers: [],\n          layerBounds: [],\n          coordinateOrigin: layer.root.props.coordinateOrigin,\n          coordinateSystem: layer.root.props.coordinateSystem\n        };\n        channelMap[id] = channelInfo;\n      }\n\n      channelInfo.layers.push(layer);\n      channelInfo.layerBounds.push(layer.getBounds());\n    }\n\n    for (let i = 0; i < 4; i++) {\n      const channelInfo = this.channels[i];\n\n      if (!channelInfo || !(channelInfo.id in channelMap)) {\n        this.channels[i] = null;\n      }\n    }\n\n    for (const maskId in channelMap) {\n      const channelInfo = channelMap[maskId];\n\n      if (channelInfo.index < 0) {\n        channelInfo.index = this.channels.findIndex(c => !c);\n        this.channels[channelInfo.index] = channelInfo;\n      }\n    }\n\n    return channelMap;\n  }\n\n  getModuleParameters() {\n    return {\n      maskMap: this.masks ? this.maskMap : this.dummyMaskMap,\n      maskChannels: this.masks\n    };\n  }\n\n  cleanup() {\n    if (this.dummyMaskMap) {\n      this.dummyMaskMap.delete();\n      this.dummyMaskMap = undefined;\n    }\n\n    if (this.maskPass) {\n      this.maskPass.delete();\n      this.maskPass = undefined;\n      this.maskMap = undefined;\n    }\n\n    this.lastViewport = undefined;\n    this.masks = null;\n    this.channels.length = 0;\n  }\n\n}\n//# sourceMappingURL=mask-effect.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/effects/mask/mask-effect.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/effects/mask/utils.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/effects/mask/utils.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getMaskBounds\": function() { return /* binding */ getMaskBounds; },\n/* harmony export */   \"getMaskViewport\": function() { return /* binding */ getMaskViewport; }\n/* harmony export */ });\n/* harmony import */ var _views_orthographic_view__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../views/orthographic-view */ \"./node_modules/@deck.gl/core/dist/esm/views/orthographic-view.js\");\n/* harmony import */ var _viewports_web_mercator_viewport__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../viewports/web-mercator-viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/web-mercator-viewport.js\");\n/* harmony import */ var _math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/web-mercator */ \"./node_modules/@math.gl/web-mercator/dist/esm/index.js\");\n\n\n\nfunction getMaskBounds({\n  layers,\n  viewport\n}) {\n  let bounds = null;\n\n  for (const layer of layers) {\n    const subLayerBounds = layer.getBounds();\n\n    if (subLayerBounds) {\n      if (bounds) {\n        bounds[0] = Math.min(bounds[0], subLayerBounds[0][0]);\n        bounds[1] = Math.min(bounds[1], subLayerBounds[0][1]);\n        bounds[2] = Math.max(bounds[2], subLayerBounds[1][0]);\n        bounds[3] = Math.max(bounds[3], subLayerBounds[1][1]);\n      } else {\n        bounds = [subLayerBounds[0][0], subLayerBounds[0][1], subLayerBounds[1][0], subLayerBounds[1][1]];\n      }\n    }\n  }\n\n  const viewportBounds = viewport.getBounds();\n\n  if (!bounds) {\n    return viewportBounds;\n  }\n\n  const paddedBounds = _doubleBounds(viewportBounds);\n\n  if (bounds[2] - bounds[0] < paddedBounds[2] - paddedBounds[0] || bounds[3] - bounds[1] < paddedBounds[3] - paddedBounds[1]) {\n    return bounds;\n  }\n\n  bounds[0] = Math.max(bounds[0], paddedBounds[0]);\n  bounds[1] = Math.max(bounds[1], paddedBounds[1]);\n  bounds[2] = Math.min(bounds[2], paddedBounds[2]);\n  bounds[3] = Math.min(bounds[3], paddedBounds[3]);\n  return bounds;\n}\nfunction getMaskViewport({\n  bounds,\n  viewport,\n  width,\n  height\n}) {\n  if (bounds[2] <= bounds[0] || bounds[3] <= bounds[1]) {\n    return null;\n  }\n\n  const padding = 1;\n  width -= padding * 2;\n  height -= padding * 2;\n\n  if (viewport instanceof _viewports_web_mercator_viewport__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) {\n    const {\n      longitude,\n      latitude,\n      zoom\n    } = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_0__.fitBounds)({\n      width,\n      height,\n      bounds: [[bounds[0], bounds[1]], [bounds[2], bounds[3]]],\n      maxZoom: 20\n    });\n    return new _viewports_web_mercator_viewport__WEBPACK_IMPORTED_MODULE_1__[\"default\"]({\n      longitude,\n      latitude,\n      zoom,\n      x: padding,\n      y: padding,\n      width,\n      height\n    });\n  }\n\n  const center = [(bounds[0] + bounds[2]) / 2, (bounds[1] + bounds[3]) / 2, 0];\n  const scale = Math.min(20, width / (bounds[2] - bounds[0]), height / (bounds[3] - bounds[1]));\n  return new _views_orthographic_view__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n    x: padding,\n    y: padding\n  }).makeViewport({\n    width,\n    height,\n    viewState: {\n      target: center,\n      zoom: Math.log2(scale)\n    }\n  });\n}\n\nfunction _doubleBounds(bounds) {\n  const size = {\n    x: bounds[2] - bounds[0],\n    y: bounds[3] - bounds[1]\n  };\n  const center = {\n    x: bounds[0] + 0.5 * size.x,\n    y: bounds[1] + 0.5 * size.y\n  };\n  return [center.x - size.x, center.y - size.y, center.x + size.x, center.y + size.y];\n}\n//# sourceMappingURL=utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/effects/mask/utils.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/effects/post-process-effect.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/effects/post-process-effect.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ PostProcessEffect; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _passes_screen_pass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../passes/screen-pass */ \"./node_modules/@deck.gl/core/dist/esm/passes/screen-pass.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/shadertools/dist/esm/lib/shader-module.js\");\n\n\n\nclass PostProcessEffect {\n  constructor(module, props = {}) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"id\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"props\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"module\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"passes\", void 0);\n\n    this.id = \"\".concat(module.name, \"-pass\");\n    this.props = props;\n    (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_1__.normalizeShaderModule)(module);\n    this.module = module;\n  }\n\n  preRender() {}\n\n  postRender(gl, params) {\n    const passes = this.passes || createPasses(gl, this.module, this.id, this.props);\n    this.passes = passes;\n    const {\n      target\n    } = params;\n    let inputBuffer = params.inputBuffer;\n    let outputBuffer = params.swapBuffer;\n\n    for (let index = 0; index < this.passes.length; index++) {\n      if (target && index === this.passes.length - 1) {\n        outputBuffer = target;\n      }\n\n      this.passes[index].render({\n        inputBuffer,\n        outputBuffer\n      });\n      const switchBuffer = outputBuffer;\n      outputBuffer = inputBuffer;\n      inputBuffer = switchBuffer;\n    }\n\n    return inputBuffer;\n  }\n\n  cleanup() {\n    if (this.passes) {\n      for (const pass of this.passes) {\n        pass.delete();\n      }\n\n      this.passes = undefined;\n    }\n  }\n\n}\n\nfunction createPasses(gl, module, id, moduleSettings) {\n  if (!module.passes) {\n    const fs = getFragmentShaderForRenderPass(module);\n    const pass = new _passes_screen_pass__WEBPACK_IMPORTED_MODULE_2__[\"default\"](gl, {\n      id,\n      module,\n      fs,\n      moduleSettings\n    });\n    return [pass];\n  }\n\n  return module.passes.map((pass, index) => {\n    const fs = getFragmentShaderForRenderPass(module, pass);\n    const idn = \"\".concat(id, \"-\").concat(index);\n    return new _passes_screen_pass__WEBPACK_IMPORTED_MODULE_2__[\"default\"](gl, {\n      id: idn,\n      module,\n      fs,\n      moduleSettings\n    });\n  });\n}\n\nconst FILTER_FS_TEMPLATE = func => \"uniform sampler2D texture;\\nuniform vec2 texSize;\\n\\nvarying vec2 position;\\nvarying vec2 coordinate;\\nvarying vec2 uv;\\n\\nvoid main() {\\n  vec2 texCoord = coordinate;\\n\\n  gl_FragColor = texture2D(texture, texCoord);\\n  gl_FragColor = \".concat(func, \"(gl_FragColor, texSize, texCoord);\\n}\\n\");\n\nconst SAMPLER_FS_TEMPLATE = func => \"uniform sampler2D texture;\\nuniform vec2 texSize;\\n\\nvarying vec2 position;\\nvarying vec2 coordinate;\\nvarying vec2 uv;\\n\\nvoid main() {\\n  vec2 texCoord = coordinate;\\n\\n  gl_FragColor = \".concat(func, \"(texture, texSize, texCoord);\\n}\\n\");\n\nfunction getFragmentShaderForRenderPass(module, pass = module) {\n  if (pass.filter) {\n    const func = typeof pass.filter === 'string' ? pass.filter : \"\".concat(module.name, \"_filterColor\");\n    return FILTER_FS_TEMPLATE(func);\n  }\n\n  if (pass.sampler) {\n    const func = typeof pass.sampler === 'string' ? pass.sampler : \"\".concat(module.name, \"_sampleColor\");\n    return SAMPLER_FS_TEMPLATE(func);\n  }\n\n  return null;\n}\n//# sourceMappingURL=post-process-effect.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/effects/post-process-effect.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/index.js":
/*!******************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/index.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AmbientLight\": function() { return /* reexport safe */ _effects_lighting_ambient_light__WEBPACK_IMPORTED_MODULE_2__.AmbientLight; },\n/* harmony export */   \"AttributeManager\": function() { return /* reexport safe */ _lib_attribute_attribute_manager__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; },\n/* harmony export */   \"COORDINATE_SYSTEM\": function() { return /* reexport safe */ _lib_constants__WEBPACK_IMPORTED_MODULE_0__.COORDINATE_SYSTEM; },\n/* harmony export */   \"CompositeLayer\": function() { return /* reexport safe */ _lib_composite_layer__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; },\n/* harmony export */   \"Controller\": function() { return /* reexport safe */ _controllers_controller__WEBPACK_IMPORTED_MODULE_32__[\"default\"]; },\n/* harmony export */   \"Deck\": function() { return /* reexport safe */ _lib_deck__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; },\n/* harmony export */   \"DeckRenderer\": function() { return /* reexport safe */ _lib_deck_renderer__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; },\n/* harmony export */   \"DirectionalLight\": function() { return /* reexport safe */ _effects_lighting_directional_light__WEBPACK_IMPORTED_MODULE_3__.DirectionalLight; },\n/* harmony export */   \"FirstPersonController\": function() { return /* reexport safe */ _controllers_first_person_controller__WEBPACK_IMPORTED_MODULE_35__[\"default\"]; },\n/* harmony export */   \"FirstPersonView\": function() { return /* reexport safe */ _views_first_person_view__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; },\n/* harmony export */   \"FirstPersonViewport\": function() { return /* reexport safe */ _viewports_first_person_viewport__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; },\n/* harmony export */   \"FlyToInterpolator\": function() { return /* reexport safe */ _transitions_fly_to_interpolator__WEBPACK_IMPORTED_MODULE_42__[\"default\"]; },\n/* harmony export */   \"Layer\": function() { return /* reexport safe */ _lib_layer__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; },\n/* harmony export */   \"LayerExtension\": function() { return /* reexport safe */ _lib_layer_extension__WEBPACK_IMPORTED_MODULE_38__[\"default\"]; },\n/* harmony export */   \"LayerManager\": function() { return /* reexport safe */ _lib_layer_manager__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; },\n/* harmony export */   \"LightingEffect\": function() { return /* reexport safe */ _effects_lighting_lighting_effect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; },\n/* harmony export */   \"LinearInterpolator\": function() { return /* reexport safe */ _transitions_linear_interpolator__WEBPACK_IMPORTED_MODULE_41__[\"default\"]; },\n/* harmony export */   \"MapController\": function() { return /* reexport safe */ _controllers_map_controller__WEBPACK_IMPORTED_MODULE_33__[\"default\"]; },\n/* harmony export */   \"MapView\": function() { return /* reexport safe */ _views_map_view__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; },\n/* harmony export */   \"OPERATION\": function() { return /* reexport safe */ _lib_constants__WEBPACK_IMPORTED_MODULE_0__.OPERATION; },\n/* harmony export */   \"OrbitController\": function() { return /* reexport safe */ _controllers_orbit_controller__WEBPACK_IMPORTED_MODULE_36__[\"default\"]; },\n/* harmony export */   \"OrbitView\": function() { return /* reexport safe */ _views_orbit_view__WEBPACK_IMPORTED_MODULE_29__[\"default\"]; },\n/* harmony export */   \"OrbitViewport\": function() { return /* reexport safe */ _viewports_orbit_viewport__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; },\n/* harmony export */   \"OrthographicController\": function() { return /* reexport safe */ _controllers_orthographic_controller__WEBPACK_IMPORTED_MODULE_37__[\"default\"]; },\n/* harmony export */   \"OrthographicView\": function() { return /* reexport safe */ _views_orthographic_view__WEBPACK_IMPORTED_MODULE_30__[\"default\"]; },\n/* harmony export */   \"OrthographicViewport\": function() { return /* reexport safe */ _viewports_orthographic_viewport__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; },\n/* harmony export */   \"PointLight\": function() { return /* reexport safe */ _effects_lighting_point_light__WEBPACK_IMPORTED_MODULE_4__.PointLight; },\n/* harmony export */   \"PostProcessEffect\": function() { return /* reexport safe */ _effects_post_process_effect__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; },\n/* harmony export */   \"TRANSITION_EVENTS\": function() { return /* reexport safe */ _controllers_transition_manager__WEBPACK_IMPORTED_MODULE_39__.TRANSITION_EVENTS; },\n/* harmony export */   \"Tesselator\": function() { return /* reexport safe */ _utils_tesselator__WEBPACK_IMPORTED_MODULE_47__[\"default\"]; },\n/* harmony export */   \"TransitionInterpolator\": function() { return /* reexport safe */ _transitions_transition_interpolator__WEBPACK_IMPORTED_MODULE_40__[\"default\"]; },\n/* harmony export */   \"UNIT\": function() { return /* reexport safe */ _lib_constants__WEBPACK_IMPORTED_MODULE_0__.UNIT; },\n/* harmony export */   \"View\": function() { return /* reexport safe */ _views_view__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; },\n/* harmony export */   \"Viewport\": function() { return /* reexport safe */ _viewports_viewport__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; },\n/* harmony export */   \"WebMercatorViewport\": function() { return /* reexport safe */ _viewports_web_mercator_viewport__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; },\n/* harmony export */   \"_CameraLight\": function() { return /* reexport safe */ _effects_lighting_camera_light__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; },\n/* harmony export */   \"_GlobeController\": function() { return /* reexport safe */ _controllers_globe_controller__WEBPACK_IMPORTED_MODULE_34__[\"default\"]; },\n/* harmony export */   \"_GlobeView\": function() { return /* reexport safe */ _views_globe_view__WEBPACK_IMPORTED_MODULE_31__[\"default\"]; },\n/* harmony export */   \"_GlobeViewport\": function() { return /* reexport safe */ _viewports_globe_viewport__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; },\n/* harmony export */   \"_LayersPass\": function() { return /* reexport safe */ _passes_layers_pass__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; },\n/* harmony export */   \"_SunLight\": function() { return /* reexport safe */ _effects_lighting_sun_light__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; },\n/* harmony export */   \"_compareProps\": function() { return /* reexport safe */ _lifecycle_props__WEBPACK_IMPORTED_MODULE_52__.compareProps; },\n/* harmony export */   \"_count\": function() { return /* reexport safe */ _utils_count__WEBPACK_IMPORTED_MODULE_49__.count; },\n/* harmony export */   \"_fillArray\": function() { return /* reexport safe */ _utils_flatten__WEBPACK_IMPORTED_MODULE_48__.fillArray; },\n/* harmony export */   \"_flatten\": function() { return /* reexport safe */ _utils_flatten__WEBPACK_IMPORTED_MODULE_48__.flatten; },\n/* harmony export */   \"_memoize\": function() { return /* reexport safe */ _utils_memoize__WEBPACK_IMPORTED_MODULE_50__[\"default\"]; },\n/* harmony export */   \"_mergeShaders\": function() { return /* reexport safe */ _utils_shader__WEBPACK_IMPORTED_MODULE_51__.mergeShaders; },\n/* harmony export */   \"assert\": function() { return /* reexport safe */ _utils_assert__WEBPACK_IMPORTED_MODULE_44__[\"default\"]; },\n/* harmony export */   \"createIterable\": function() { return /* reexport safe */ _utils_iterable_utils__WEBPACK_IMPORTED_MODULE_45__.createIterable; },\n/* harmony export */   \"fp64LowPart\": function() { return /* reexport safe */ _utils_math_utils__WEBPACK_IMPORTED_MODULE_46__.fp64LowPart; },\n/* harmony export */   \"gouraudLighting\": function() { return /* reexport safe */ _shaderlib__WEBPACK_IMPORTED_MODULE_24__.gouraudLighting; },\n/* harmony export */   \"log\": function() { return /* reexport safe */ _utils_log__WEBPACK_IMPORTED_MODULE_43__[\"default\"]; },\n/* harmony export */   \"phongLighting\": function() { return /* reexport safe */ _shaderlib__WEBPACK_IMPORTED_MODULE_24__.phongLighting; },\n/* harmony export */   \"picking\": function() { return /* reexport safe */ _shaderlib__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; },\n/* harmony export */   \"project\": function() { return /* reexport safe */ _shaderlib__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; },\n/* harmony export */   \"project32\": function() { return /* reexport safe */ _shaderlib__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; },\n/* harmony export */   \"shadow\": function() { return /* reexport safe */ _shaderlib__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/constants */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _effects_lighting_lighting_effect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./effects/lighting/lighting-effect */ \"./node_modules/@deck.gl/core/dist/esm/effects/lighting/lighting-effect.js\");\n/* harmony import */ var _effects_lighting_ambient_light__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./effects/lighting/ambient-light */ \"./node_modules/@deck.gl/core/dist/esm/effects/lighting/ambient-light.js\");\n/* harmony import */ var _effects_lighting_directional_light__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./effects/lighting/directional-light */ \"./node_modules/@deck.gl/core/dist/esm/effects/lighting/directional-light.js\");\n/* harmony import */ var _effects_lighting_point_light__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./effects/lighting/point-light */ \"./node_modules/@deck.gl/core/dist/esm/effects/lighting/point-light.js\");\n/* harmony import */ var _effects_lighting_camera_light__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./effects/lighting/camera-light */ \"./node_modules/@deck.gl/core/dist/esm/effects/lighting/camera-light.js\");\n/* harmony import */ var _effects_lighting_sun_light__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./effects/lighting/sun-light */ \"./node_modules/@deck.gl/core/dist/esm/effects/lighting/sun-light.js\");\n/* harmony import */ var _effects_post_process_effect__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./effects/post-process-effect */ \"./node_modules/@deck.gl/core/dist/esm/effects/post-process-effect.js\");\n/* harmony import */ var _passes_layers_pass__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./passes/layers-pass */ \"./node_modules/@deck.gl/core/dist/esm/passes/layers-pass.js\");\n/* harmony import */ var _lib_deck__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./lib/deck */ \"./node_modules/@deck.gl/core/dist/esm/lib/deck.js\");\n/* harmony import */ var _lib_layer_manager__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./lib/layer-manager */ \"./node_modules/@deck.gl/core/dist/esm/lib/layer-manager.js\");\n/* harmony import */ var _lib_attribute_attribute_manager__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./lib/attribute/attribute-manager */ \"./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-manager.js\");\n/* harmony import */ var _lib_layer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./lib/layer */ \"./node_modules/@deck.gl/core/dist/esm/lib/layer.js\");\n/* harmony import */ var _lib_composite_layer__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./lib/composite-layer */ \"./node_modules/@deck.gl/core/dist/esm/lib/composite-layer.js\");\n/* harmony import */ var _lib_deck_renderer__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./lib/deck-renderer */ \"./node_modules/@deck.gl/core/dist/esm/lib/deck-renderer.js\");\n/* harmony import */ var _viewports_viewport__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./viewports/viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/viewport.js\");\n/* harmony import */ var _viewports_web_mercator_viewport__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./viewports/web-mercator-viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/web-mercator-viewport.js\");\n/* harmony import */ var _viewports_globe_viewport__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./viewports/globe-viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/globe-viewport.js\");\n/* harmony import */ var _viewports_orbit_viewport__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./viewports/orbit-viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/orbit-viewport.js\");\n/* harmony import */ var _viewports_orthographic_viewport__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./viewports/orthographic-viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/orthographic-viewport.js\");\n/* harmony import */ var _viewports_first_person_viewport__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./viewports/first-person-viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/first-person-viewport.js\");\n/* harmony import */ var _shaderlib__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./shaderlib */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/picking/picking.js\");\n/* harmony import */ var _shaderlib__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./shaderlib */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project.js\");\n/* harmony import */ var _shaderlib__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./shaderlib */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project32/project32.js\");\n/* harmony import */ var _shaderlib__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./shaderlib */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.js\");\n/* harmony import */ var _shaderlib__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./shaderlib */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/shadow/shadow.js\");\n/* harmony import */ var _views_view__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./views/view */ \"./node_modules/@deck.gl/core/dist/esm/views/view.js\");\n/* harmony import */ var _views_map_view__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./views/map-view */ \"./node_modules/@deck.gl/core/dist/esm/views/map-view.js\");\n/* harmony import */ var _views_first_person_view__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./views/first-person-view */ \"./node_modules/@deck.gl/core/dist/esm/views/first-person-view.js\");\n/* harmony import */ var _views_orbit_view__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./views/orbit-view */ \"./node_modules/@deck.gl/core/dist/esm/views/orbit-view.js\");\n/* harmony import */ var _views_orthographic_view__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./views/orthographic-view */ \"./node_modules/@deck.gl/core/dist/esm/views/orthographic-view.js\");\n/* harmony import */ var _views_globe_view__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./views/globe-view */ \"./node_modules/@deck.gl/core/dist/esm/views/globe-view.js\");\n/* harmony import */ var _controllers_controller__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./controllers/controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/controller.js\");\n/* harmony import */ var _controllers_map_controller__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./controllers/map-controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/map-controller.js\");\n/* harmony import */ var _controllers_globe_controller__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./controllers/globe-controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/globe-controller.js\");\n/* harmony import */ var _controllers_first_person_controller__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./controllers/first-person-controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/first-person-controller.js\");\n/* harmony import */ var _controllers_orbit_controller__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./controllers/orbit-controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/orbit-controller.js\");\n/* harmony import */ var _controllers_orthographic_controller__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./controllers/orthographic-controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/orthographic-controller.js\");\n/* harmony import */ var _lib_layer_extension__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./lib/layer-extension */ \"./node_modules/@deck.gl/core/dist/esm/lib/layer-extension.js\");\n/* harmony import */ var _controllers_transition_manager__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./controllers/transition-manager */ \"./node_modules/@deck.gl/core/dist/esm/controllers/transition-manager.js\");\n/* harmony import */ var _transitions_transition_interpolator__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./transitions/transition-interpolator */ \"./node_modules/@deck.gl/core/dist/esm/transitions/transition-interpolator.js\");\n/* harmony import */ var _transitions_linear_interpolator__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./transitions/linear-interpolator */ \"./node_modules/@deck.gl/core/dist/esm/transitions/linear-interpolator.js\");\n/* harmony import */ var _transitions_fly_to_interpolator__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./transitions/fly-to-interpolator */ \"./node_modules/@deck.gl/core/dist/esm/transitions/fly-to-interpolator.js\");\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./utils/log */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./utils/assert */ \"./node_modules/@deck.gl/core/dist/esm/utils/assert.js\");\n/* harmony import */ var _utils_iterable_utils__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./utils/iterable-utils */ \"./node_modules/@deck.gl/core/dist/esm/utils/iterable-utils.js\");\n/* harmony import */ var _utils_math_utils__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./utils/math-utils */ \"./node_modules/@deck.gl/core/dist/esm/utils/math-utils.js\");\n/* harmony import */ var _utils_tesselator__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./utils/tesselator */ \"./node_modules/@deck.gl/core/dist/esm/utils/tesselator.js\");\n/* harmony import */ var _utils_flatten__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./utils/flatten */ \"./node_modules/@deck.gl/core/dist/esm/utils/flatten.js\");\n/* harmony import */ var _utils_count__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./utils/count */ \"./node_modules/@deck.gl/core/dist/esm/utils/count.js\");\n/* harmony import */ var _utils_memoize__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./utils/memoize */ \"./node_modules/@deck.gl/core/dist/esm/utils/memoize.js\");\n/* harmony import */ var _utils_shader__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./utils/shader */ \"./node_modules/@deck.gl/core/dist/esm/utils/shader.js\");\n/* harmony import */ var _lifecycle_props__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./lifecycle/props */ \"./node_modules/@deck.gl/core/dist/esm/lifecycle/props.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/index.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-manager.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-manager.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ AttributeManager; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _attribute__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./attribute */ \"./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute.js\");\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/log */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n/* harmony import */ var _debug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../debug */ \"./node_modules/@deck.gl/core/dist/esm/debug/index.js\");\n/* harmony import */ var _attribute_transition_manager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./attribute-transition-manager */ \"./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-transition-manager.js\");\n\n\n\n\n\nconst TRACE_INVALIDATE = 'attributeManager.invalidate';\nconst TRACE_UPDATE_START = 'attributeManager.updateStart';\nconst TRACE_UPDATE_END = 'attributeManager.updateEnd';\nconst TRACE_ATTRIBUTE_UPDATE_START = 'attribute.updateStart';\nconst TRACE_ATTRIBUTE_ALLOCATE = 'attribute.allocate';\nconst TRACE_ATTRIBUTE_UPDATE_END = 'attribute.updateEnd';\nclass AttributeManager {\n  constructor(gl, {\n    id = 'attribute-manager',\n    stats,\n    timeline\n  } = {}) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"id\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"gl\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"attributes\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"updateTriggers\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"needsRedraw\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"userData\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"stats\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"attributeTransitionManager\", void 0);\n\n    this.id = id;\n    this.gl = gl;\n    this.attributes = {};\n    this.updateTriggers = {};\n    this.needsRedraw = true;\n    this.userData = {};\n    this.stats = stats;\n    this.attributeTransitionManager = new _attribute_transition_manager__WEBPACK_IMPORTED_MODULE_1__[\"default\"](gl, {\n      id: \"\".concat(id, \"-transitions\"),\n      timeline\n    });\n    Object.seal(this);\n  }\n\n  finalize() {\n    for (const attributeName in this.attributes) {\n      this.attributes[attributeName].delete();\n    }\n\n    this.attributeTransitionManager.finalize();\n  }\n\n  getNeedsRedraw(opts = {\n    clearRedrawFlags: false\n  }) {\n    const redraw = this.needsRedraw;\n    this.needsRedraw = this.needsRedraw && !opts.clearRedrawFlags;\n    return redraw && this.id;\n  }\n\n  setNeedsRedraw() {\n    this.needsRedraw = true;\n  }\n\n  add(attributes) {\n    this._add(attributes);\n  }\n\n  addInstanced(attributes) {\n    this._add(attributes, {\n      instanced: 1\n    });\n  }\n\n  remove(attributeNameArray) {\n    for (const name of attributeNameArray) {\n      if (this.attributes[name] !== undefined) {\n        this.attributes[name].delete();\n        delete this.attributes[name];\n      }\n    }\n  }\n\n  invalidate(triggerName, dataRange) {\n    const invalidatedAttributes = this._invalidateTrigger(triggerName, dataRange);\n\n    (0,_debug__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(TRACE_INVALIDATE, this, triggerName, invalidatedAttributes);\n  }\n\n  invalidateAll(dataRange) {\n    for (const attributeName in this.attributes) {\n      this.attributes[attributeName].setNeedsUpdate(attributeName, dataRange);\n    }\n\n    (0,_debug__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(TRACE_INVALIDATE, this, 'all');\n  }\n\n  update({\n    data,\n    numInstances,\n    startIndices = null,\n    transitions,\n    props = {},\n    buffers = {},\n    context = {}\n  }) {\n    let updated = false;\n    (0,_debug__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(TRACE_UPDATE_START, this);\n\n    if (this.stats) {\n      this.stats.get('Update Attributes').timeStart();\n    }\n\n    for (const attributeName in this.attributes) {\n      const attribute = this.attributes[attributeName];\n      const accessorName = attribute.settings.accessor;\n      attribute.startIndices = startIndices;\n      attribute.numInstances = numInstances;\n\n      if (props[attributeName]) {\n        _utils_log__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removed(\"props.\".concat(attributeName), \"data.attributes.\".concat(attributeName))();\n      }\n\n      if (attribute.setExternalBuffer(buffers[attributeName])) {} else if (attribute.setBinaryValue(typeof accessorName === 'string' ? buffers[accessorName] : undefined, data.startIndices)) {} else if (typeof accessorName === 'string' && !buffers[accessorName] && attribute.setConstantValue(props[accessorName])) {} else if (attribute.needsUpdate()) {\n        updated = true;\n\n        this._updateAttribute({\n          attribute,\n          numInstances,\n          data,\n          props,\n          context\n        });\n      }\n\n      this.needsRedraw = this.needsRedraw || attribute.needsRedraw();\n    }\n\n    if (updated) {\n      (0,_debug__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(TRACE_UPDATE_END, this, numInstances);\n    }\n\n    if (this.stats) {\n      this.stats.get('Update Attributes').timeEnd();\n    }\n\n    this.attributeTransitionManager.update({\n      attributes: this.attributes,\n      numInstances,\n      transitions\n    });\n  }\n\n  updateTransition() {\n    const {\n      attributeTransitionManager\n    } = this;\n    const transitionUpdated = attributeTransitionManager.run();\n    this.needsRedraw = this.needsRedraw || transitionUpdated;\n    return transitionUpdated;\n  }\n\n  getAttributes() {\n    return this.attributes;\n  }\n\n  getChangedAttributes(opts = {\n    clearChangedFlags: false\n  }) {\n    const {\n      attributes,\n      attributeTransitionManager\n    } = this;\n    const changedAttributes = { ...attributeTransitionManager.getAttributes()\n    };\n\n    for (const attributeName in attributes) {\n      const attribute = attributes[attributeName];\n\n      if (attribute.needsRedraw(opts) && !attributeTransitionManager.hasAttribute(attributeName)) {\n        changedAttributes[attributeName] = attribute;\n      }\n    }\n\n    return changedAttributes;\n  }\n\n  getShaderAttributes(attributes, excludeAttributes = {}) {\n    if (!attributes) {\n      attributes = this.getAttributes();\n    }\n\n    const shaderAttributes = {};\n\n    for (const attributeName in attributes) {\n      if (!excludeAttributes[attributeName]) {\n        Object.assign(shaderAttributes, attributes[attributeName].getShaderAttributes());\n      }\n    }\n\n    return shaderAttributes;\n  }\n\n  _add(attributes, extraProps = {}) {\n    for (const attributeName in attributes) {\n      const attribute = attributes[attributeName];\n      this.attributes[attributeName] = this._createAttribute(attributeName, attribute, extraProps);\n    }\n\n    this._mapUpdateTriggersToAttributes();\n  }\n\n  _createAttribute(name, attribute, extraProps) {\n    const props = { ...attribute,\n      id: name,\n      size: attribute.isIndexed && 1 || attribute.size || 1,\n      divisor: extraProps.instanced ? 1 : attribute.divisor || 0\n    };\n    return new _attribute__WEBPACK_IMPORTED_MODULE_4__[\"default\"](this.gl, props);\n  }\n\n  _mapUpdateTriggersToAttributes() {\n    const triggers = {};\n\n    for (const attributeName in this.attributes) {\n      const attribute = this.attributes[attributeName];\n      attribute.getUpdateTriggers().forEach(triggerName => {\n        if (!triggers[triggerName]) {\n          triggers[triggerName] = [];\n        }\n\n        triggers[triggerName].push(attributeName);\n      });\n    }\n\n    this.updateTriggers = triggers;\n  }\n\n  _invalidateTrigger(triggerName, dataRange) {\n    const {\n      attributes,\n      updateTriggers\n    } = this;\n    const invalidatedAttributes = updateTriggers[triggerName];\n\n    if (invalidatedAttributes) {\n      invalidatedAttributes.forEach(name => {\n        const attribute = attributes[name];\n\n        if (attribute) {\n          attribute.setNeedsUpdate(attribute.id, dataRange);\n        }\n      });\n    }\n\n    return invalidatedAttributes;\n  }\n\n  _updateAttribute(opts) {\n    const {\n      attribute,\n      numInstances\n    } = opts;\n    (0,_debug__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(TRACE_ATTRIBUTE_UPDATE_START, attribute);\n\n    if (attribute.constant) {\n      attribute.setConstantValue(attribute.value);\n      return;\n    }\n\n    if (attribute.allocate(numInstances)) {\n      (0,_debug__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(TRACE_ATTRIBUTE_ALLOCATE, attribute, numInstances);\n    }\n\n    const updated = attribute.updateBuffer(opts);\n\n    if (updated) {\n      this.needsRedraw = true;\n      (0,_debug__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(TRACE_ATTRIBUTE_UPDATE_END, attribute, numInstances);\n    }\n  }\n\n}\n//# sourceMappingURL=attribute-manager.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-manager.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-transition-manager.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-transition-manager.js ***!
  \*******************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ AttributeTransitionManager; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/transform/transform.js\");\n/* harmony import */ var _transitions_gpu_interpolation_transition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../transitions/gpu-interpolation-transition */ \"./node_modules/@deck.gl/core/dist/esm/transitions/gpu-interpolation-transition.js\");\n/* harmony import */ var _transitions_gpu_spring_transition__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../transitions/gpu-spring-transition */ \"./node_modules/@deck.gl/core/dist/esm/transitions/gpu-spring-transition.js\");\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/log */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n\n\n\n\n\nconst TRANSITION_TYPES = {\n  interpolation: _transitions_gpu_interpolation_transition__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  spring: _transitions_gpu_spring_transition__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n};\nclass AttributeTransitionManager {\n  constructor(gl, {\n    id,\n    timeline\n  }) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"id\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"isSupported\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"gl\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"timeline\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"transitions\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"needsRedraw\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"numInstances\", void 0);\n\n    this.id = id;\n    this.gl = gl;\n    this.timeline = timeline;\n    this.transitions = {};\n    this.needsRedraw = false;\n    this.numInstances = 1;\n    this.isSupported = _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isSupported(gl);\n  }\n\n  finalize() {\n    for (const attributeName in this.transitions) {\n      this._removeTransition(attributeName);\n    }\n  }\n\n  update({\n    attributes,\n    transitions,\n    numInstances\n  }) {\n    this.numInstances = numInstances || 1;\n\n    for (const attributeName in attributes) {\n      const attribute = attributes[attributeName];\n      const settings = attribute.getTransitionSetting(transitions);\n      if (!settings) continue;\n\n      this._updateAttribute(attributeName, attribute, settings);\n    }\n\n    for (const attributeName in this.transitions) {\n      const attribute = attributes[attributeName];\n\n      if (!attribute || !attribute.getTransitionSetting(transitions)) {\n        this._removeTransition(attributeName);\n      }\n    }\n  }\n\n  hasAttribute(attributeName) {\n    const transition = this.transitions[attributeName];\n    return transition && transition.inProgress;\n  }\n\n  getAttributes() {\n    const animatedAttributes = {};\n\n    for (const attributeName in this.transitions) {\n      const transition = this.transitions[attributeName];\n\n      if (transition.inProgress) {\n        animatedAttributes[attributeName] = transition.attributeInTransition;\n      }\n    }\n\n    return animatedAttributes;\n  }\n\n  run() {\n    if (!this.isSupported || this.numInstances === 0) {\n      return false;\n    }\n\n    for (const attributeName in this.transitions) {\n      const updated = this.transitions[attributeName].update();\n\n      if (updated) {\n        this.needsRedraw = true;\n      }\n    }\n\n    const needsRedraw = this.needsRedraw;\n    this.needsRedraw = false;\n    return needsRedraw;\n  }\n\n  _removeTransition(attributeName) {\n    this.transitions[attributeName].cancel();\n    delete this.transitions[attributeName];\n  }\n\n  _updateAttribute(attributeName, attribute, settings) {\n    const transition = this.transitions[attributeName];\n    let isNew = !transition || transition.type !== settings.type;\n\n    if (isNew) {\n      if (!this.isSupported) {\n        _utils_log__WEBPACK_IMPORTED_MODULE_4__[\"default\"].warn(\"WebGL2 not supported by this browser. Transition for \".concat(attributeName, \" is disabled.\"))();\n        return;\n      }\n\n      if (transition) {\n        this._removeTransition(attributeName);\n      }\n\n      const TransitionType = TRANSITION_TYPES[settings.type];\n\n      if (TransitionType) {\n        this.transitions[attributeName] = new TransitionType({\n          attribute,\n          timeline: this.timeline,\n          gl: this.gl\n        });\n      } else {\n        _utils_log__WEBPACK_IMPORTED_MODULE_4__[\"default\"].error(\"unsupported transition type '\".concat(settings.type, \"'\"))();\n        isNew = false;\n      }\n    }\n\n    if (isNew || attribute.needsRedraw()) {\n      this.needsRedraw = true;\n      this.transitions[attributeName].start(settings, this.numInstances);\n    }\n  }\n\n}\n//# sourceMappingURL=attribute-transition-manager.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-transition-manager.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-transition-utils.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-transition-utils.js ***!
  \*****************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"cycleBuffers\": function() { return /* binding */ cycleBuffers; },\n/* harmony export */   \"getAttributeBufferLength\": function() { return /* binding */ getAttributeBufferLength; },\n/* harmony export */   \"getAttributeTypeFromSize\": function() { return /* binding */ getAttributeTypeFromSize; },\n/* harmony export */   \"getSourceBufferAttribute\": function() { return /* binding */ getSourceBufferAttribute; },\n/* harmony export */   \"normalizeTransitionSettings\": function() { return /* binding */ normalizeTransitionSettings; },\n/* harmony export */   \"padBuffer\": function() { return /* binding */ padBuffer; }\n/* harmony export */ });\n/* harmony import */ var _utils_array_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/array-utils */ \"./node_modules/@deck.gl/core/dist/esm/utils/array-utils.js\");\n\nconst DEFAULT_TRANSITION_SETTINGS = {\n  interpolation: {\n    duration: 0,\n    easing: t => t\n  },\n  spring: {\n    stiffness: 0.05,\n    damping: 0.5\n  }\n};\nfunction normalizeTransitionSettings(userSettings, layerSettings) {\n  if (!userSettings) {\n    return null;\n  }\n\n  if (Number.isFinite(userSettings)) {\n    userSettings = {\n      type: 'interpolation',\n      duration: userSettings\n    };\n  }\n\n  const type = userSettings.type || 'interpolation';\n  return { ...DEFAULT_TRANSITION_SETTINGS[type],\n    ...layerSettings,\n    ...userSettings,\n    type\n  };\n}\nfunction getSourceBufferAttribute(gl, attribute) {\n  const buffer = attribute.getBuffer();\n\n  if (buffer) {\n    return [buffer, {\n      divisor: 0,\n      size: attribute.size,\n      normalized: attribute.settings.normalized\n    }];\n  }\n\n  return attribute.value;\n}\nfunction getAttributeTypeFromSize(size) {\n  switch (size) {\n    case 1:\n      return 'float';\n\n    case 2:\n      return 'vec2';\n\n    case 3:\n      return 'vec3';\n\n    case 4:\n      return 'vec4';\n\n    default:\n      throw new Error(\"No defined attribute type for size \\\"\".concat(size, \"\\\"\"));\n  }\n}\nfunction cycleBuffers(buffers) {\n  buffers.push(buffers.shift());\n}\nfunction getAttributeBufferLength(attribute, numInstances) {\n  const {\n    doublePrecision,\n    settings,\n    value,\n    size\n  } = attribute;\n  const multiplier = doublePrecision && value instanceof Float64Array ? 2 : 1;\n  return (settings.noAlloc ? value.length : numInstances * size) * multiplier;\n}\nfunction padBuffer({\n  buffer,\n  numInstances,\n  attribute,\n  fromLength,\n  fromStartIndices,\n  getData = x => x\n}) {\n  const precisionMultiplier = attribute.doublePrecision && attribute.value instanceof Float64Array ? 2 : 1;\n  const size = attribute.size * precisionMultiplier;\n  const byteOffset = attribute.byteOffset;\n  const toStartIndices = attribute.startIndices;\n  const hasStartIndices = fromStartIndices && toStartIndices;\n  const toLength = getAttributeBufferLength(attribute, numInstances);\n  const isConstant = attribute.isConstant;\n\n  if (!hasStartIndices && fromLength >= toLength) {\n    return;\n  }\n\n  const toData = isConstant ? attribute.value : attribute.getBuffer().getData({\n    srcByteOffset: byteOffset\n  });\n\n  if (attribute.settings.normalized && !isConstant) {\n    const getter = getData;\n\n    getData = (value, chunk) => attribute.normalizeConstant(getter(value, chunk));\n  }\n\n  const getMissingData = isConstant ? (i, chunk) => getData(toData, chunk) : (i, chunk) => getData(toData.subarray(i, i + size), chunk);\n  const source = buffer.getData({\n    length: fromLength\n  });\n  const data = new Float32Array(toLength);\n  (0,_utils_array_utils__WEBPACK_IMPORTED_MODULE_0__.padArray)({\n    source,\n    target: data,\n    sourceStartIndices: fromStartIndices,\n    targetStartIndices: toStartIndices,\n    size,\n    getData: getMissingData\n  });\n\n  if (buffer.byteLength < data.byteLength + byteOffset) {\n    buffer.reallocate(data.byteLength + byteOffset);\n  }\n\n  buffer.subData({\n    data,\n    offset: byteOffset\n  });\n}\n//# sourceMappingURL=attribute-transition-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-transition-utils.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute.js":
/*!************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Attribute; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _data_column__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./data-column */ \"./node_modules/@deck.gl/core/dist/esm/lib/attribute/data-column.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/assert */ \"./node_modules/@deck.gl/core/dist/esm/utils/assert.js\");\n/* harmony import */ var _utils_iterable_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/iterable-utils */ \"./node_modules/@deck.gl/core/dist/esm/utils/iterable-utils.js\");\n/* harmony import */ var _utils_flatten__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/flatten */ \"./node_modules/@deck.gl/core/dist/esm/utils/flatten.js\");\n/* harmony import */ var _utils_range__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/range */ \"./node_modules/@deck.gl/core/dist/esm/utils/range.js\");\n/* harmony import */ var _attribute_transition_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./attribute-transition-utils */ \"./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-transition-utils.js\");\n\n\n\n\n\n\n\nclass Attribute extends _data_column__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(gl, opts) {\n    super(gl, opts, {\n      startIndices: null,\n      lastExternalBuffer: null,\n      binaryValue: null,\n      binaryAccessor: null,\n      needsUpdate: true,\n      needsRedraw: false,\n      updateRanges: _utils_range__WEBPACK_IMPORTED_MODULE_2__.FULL\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"constant\", false);\n\n    this.settings.update = opts.update || (opts.accessor ? this._autoUpdater : undefined);\n    Object.seal(this.settings);\n    Object.seal(this.state);\n\n    this._validateAttributeUpdaters();\n  }\n\n  get startIndices() {\n    return this.state.startIndices;\n  }\n\n  set startIndices(layout) {\n    this.state.startIndices = layout;\n  }\n\n  needsUpdate() {\n    return this.state.needsUpdate;\n  }\n\n  needsRedraw({\n    clearChangedFlags = false\n  } = {}) {\n    const needsRedraw = this.state.needsRedraw;\n    this.state.needsRedraw = needsRedraw && !clearChangedFlags;\n    return needsRedraw;\n  }\n\n  getUpdateTriggers() {\n    const {\n      accessor\n    } = this.settings;\n    return [this.id].concat(typeof accessor !== 'function' && accessor || []);\n  }\n\n  supportsTransition() {\n    return Boolean(this.settings.transition);\n  }\n\n  getTransitionSetting(opts) {\n    if (!opts || !this.supportsTransition()) {\n      return null;\n    }\n\n    const {\n      accessor\n    } = this.settings;\n    const layerSettings = this.settings.transition;\n    const userSettings = Array.isArray(accessor) ? opts[accessor.find(a => opts[a])] : opts[accessor];\n    return (0,_attribute_transition_utils__WEBPACK_IMPORTED_MODULE_3__.normalizeTransitionSettings)(userSettings, layerSettings);\n  }\n\n  setNeedsUpdate(reason = this.id, dataRange) {\n    this.state.needsUpdate = this.state.needsUpdate || reason;\n    this.setNeedsRedraw(reason);\n\n    if (dataRange) {\n      const {\n        startRow = 0,\n        endRow = Infinity\n      } = dataRange;\n      this.state.updateRanges = _utils_range__WEBPACK_IMPORTED_MODULE_2__.add(this.state.updateRanges, [startRow, endRow]);\n    } else {\n      this.state.updateRanges = _utils_range__WEBPACK_IMPORTED_MODULE_2__.FULL;\n    }\n  }\n\n  clearNeedsUpdate() {\n    this.state.needsUpdate = false;\n    this.state.updateRanges = _utils_range__WEBPACK_IMPORTED_MODULE_2__.EMPTY;\n  }\n\n  setNeedsRedraw(reason = this.id) {\n    this.state.needsRedraw = this.state.needsRedraw || reason;\n  }\n\n  allocate(numInstances) {\n    const {\n      state,\n      settings\n    } = this;\n\n    if (settings.noAlloc) {\n      return false;\n    }\n\n    if (settings.update) {\n      super.allocate(numInstances, state.updateRanges !== _utils_range__WEBPACK_IMPORTED_MODULE_2__.FULL);\n      return true;\n    }\n\n    return false;\n  }\n\n  updateBuffer({\n    numInstances,\n    data,\n    props,\n    context\n  }) {\n    if (!this.needsUpdate()) {\n      return false;\n    }\n\n    const {\n      state: {\n        updateRanges\n      },\n      settings: {\n        update,\n        noAlloc\n      }\n    } = this;\n    let updated = true;\n\n    if (update) {\n      for (const [startRow, endRow] of updateRanges) {\n        update.call(context, this, {\n          data,\n          startRow,\n          endRow,\n          props,\n          numInstances\n        });\n      }\n\n      if (!this.value) {} else if (this.constant || this.buffer.byteLength < this.value.byteLength + this.byteOffset) {\n        this.setData({\n          value: this.value,\n          constant: this.constant\n        });\n        this.constant = false;\n      } else {\n        for (const [startRow, endRow] of updateRanges) {\n          const startOffset = Number.isFinite(startRow) ? this.getVertexOffset(startRow) : 0;\n          const endOffset = Number.isFinite(endRow) ? this.getVertexOffset(endRow) : noAlloc || !Number.isFinite(numInstances) ? this.value.length : numInstances * this.size;\n          super.updateSubBuffer({\n            startOffset,\n            endOffset\n          });\n        }\n      }\n\n      this._checkAttributeArray();\n    } else {\n      updated = false;\n    }\n\n    this.clearNeedsUpdate();\n    this.setNeedsRedraw();\n    return updated;\n  }\n\n  setConstantValue(value) {\n    if (value === undefined || typeof value === 'function') {\n      return false;\n    }\n\n    const hasChanged = this.setData({\n      constant: true,\n      value\n    });\n\n    if (hasChanged) {\n      this.setNeedsRedraw();\n    }\n\n    this.clearNeedsUpdate();\n    return true;\n  }\n\n  setExternalBuffer(buffer) {\n    const {\n      state\n    } = this;\n\n    if (!buffer) {\n      state.lastExternalBuffer = null;\n      return false;\n    }\n\n    this.clearNeedsUpdate();\n\n    if (state.lastExternalBuffer === buffer) {\n      return true;\n    }\n\n    state.lastExternalBuffer = buffer;\n    this.setNeedsRedraw();\n    this.setData(buffer);\n    return true;\n  }\n\n  setBinaryValue(buffer, startIndices = null) {\n    const {\n      state,\n      settings\n    } = this;\n\n    if (!buffer) {\n      state.binaryValue = null;\n      state.binaryAccessor = null;\n      return false;\n    }\n\n    if (settings.noAlloc) {\n      return false;\n    }\n\n    if (state.binaryValue === buffer) {\n      this.clearNeedsUpdate();\n      return true;\n    }\n\n    state.binaryValue = buffer;\n    this.setNeedsRedraw();\n    const needsUpdate = settings.transform || startIndices !== this.startIndices;\n\n    if (needsUpdate) {\n      if (ArrayBuffer.isView(buffer)) {\n        buffer = {\n          value: buffer\n        };\n      }\n\n      const binaryValue = buffer;\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(ArrayBuffer.isView(binaryValue.value), \"invalid \".concat(settings.accessor));\n      const needsNormalize = Boolean(binaryValue.size) && binaryValue.size !== this.size;\n      state.binaryAccessor = (0,_utils_iterable_utils__WEBPACK_IMPORTED_MODULE_5__.getAccessorFromBuffer)(binaryValue.value, {\n        size: binaryValue.size || this.size,\n        stride: binaryValue.stride,\n        offset: binaryValue.offset,\n        startIndices: startIndices,\n        nested: needsNormalize\n      });\n      return false;\n    }\n\n    this.clearNeedsUpdate();\n    this.setData(buffer);\n    return true;\n  }\n\n  getVertexOffset(row) {\n    const {\n      startIndices\n    } = this;\n    const vertexIndex = startIndices ? row < startIndices.length ? startIndices[row] : this.numInstances : row;\n    return vertexIndex * this.size;\n  }\n\n  getShaderAttributes() {\n    const shaderAttributeDefs = this.settings.shaderAttributes || {\n      [this.id]: null\n    };\n    const shaderAttributes = {};\n\n    for (const shaderAttributeName in shaderAttributeDefs) {\n      Object.assign(shaderAttributes, super.getShaderAttributes(shaderAttributeName, shaderAttributeDefs[shaderAttributeName]));\n    }\n\n    return shaderAttributes;\n  }\n\n  _autoUpdater(attribute, {\n    data,\n    startRow,\n    endRow,\n    props,\n    numInstances\n  }) {\n    if (attribute.constant) {\n      return;\n    }\n\n    const {\n      settings,\n      state,\n      value,\n      size,\n      startIndices\n    } = attribute;\n    const {\n      accessor,\n      transform\n    } = settings;\n    const accessorFunc = state.binaryAccessor || (typeof accessor === 'function' ? accessor : props[accessor]);\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(typeof accessorFunc === 'function', \"accessor \\\"\".concat(accessor, \"\\\" is not a function\"));\n    let i = attribute.getVertexOffset(startRow);\n    const {\n      iterable,\n      objectInfo\n    } = (0,_utils_iterable_utils__WEBPACK_IMPORTED_MODULE_5__.createIterable)(data, startRow, endRow);\n\n    for (const object of iterable) {\n      objectInfo.index++;\n      let objectValue = accessorFunc(object, objectInfo);\n\n      if (transform) {\n        objectValue = transform.call(this, objectValue);\n      }\n\n      if (startIndices) {\n        const numVertices = (objectInfo.index < startIndices.length - 1 ? startIndices[objectInfo.index + 1] : numInstances) - startIndices[objectInfo.index];\n\n        if (objectValue && Array.isArray(objectValue[0])) {\n          let startIndex = i;\n\n          for (const item of objectValue) {\n            attribute._normalizeValue(item, value, startIndex);\n\n            startIndex += size;\n          }\n        } else if (objectValue && objectValue.length > size) {\n          value.set(objectValue, i);\n        } else {\n          attribute._normalizeValue(objectValue, objectInfo.target, 0);\n\n          (0,_utils_flatten__WEBPACK_IMPORTED_MODULE_6__.fillArray)({\n            target: value,\n            source: objectInfo.target,\n            start: i,\n            count: numVertices\n          });\n        }\n\n        i += numVertices * size;\n      } else {\n        attribute._normalizeValue(objectValue, value, i);\n\n        i += size;\n      }\n    }\n  }\n\n  _validateAttributeUpdaters() {\n    const {\n      settings\n    } = this;\n    const hasUpdater = settings.noAlloc || typeof settings.update === 'function';\n\n    if (!hasUpdater) {\n      throw new Error(\"Attribute \".concat(this.id, \" missing update or accessor\"));\n    }\n  }\n\n  _checkAttributeArray() {\n    const {\n      value\n    } = this;\n    const limit = Math.min(4, this.size);\n\n    if (value && value.length >= limit) {\n      let valid = true;\n\n      switch (limit) {\n        case 4:\n          valid = valid && Number.isFinite(value[3]);\n\n        case 3:\n          valid = valid && Number.isFinite(value[2]);\n\n        case 2:\n          valid = valid && Number.isFinite(value[1]);\n\n        case 1:\n          valid = valid && Number.isFinite(value[0]);\n          break;\n\n        default:\n          valid = false;\n      }\n\n      if (!valid) {\n        throw new Error(\"Illegal attribute generated for \".concat(this.id));\n      }\n    }\n  }\n\n}\n//# sourceMappingURL=attribute.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/attribute/data-column.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/attribute/data-column.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ DataColumn; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/features/features.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/features/webgl-features-table.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js\");\n/* harmony import */ var _shader_attribute__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./shader-attribute */ \"./node_modules/@deck.gl/core/dist/esm/lib/attribute/shader-attribute.js\");\n/* harmony import */ var _gl_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./gl-utils */ \"./node_modules/@deck.gl/core/dist/esm/lib/attribute/gl-utils.js\");\n/* harmony import */ var _utils_typed_array_manager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/typed-array-manager */ \"./node_modules/@deck.gl/core/dist/esm/utils/typed-array-manager.js\");\n/* harmony import */ var _utils_math_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils/math-utils */ \"./node_modules/@deck.gl/core/dist/esm/utils/math-utils.js\");\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/log */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n\n\n\n\n\n\n\n\nfunction getStride(accessor) {\n  return accessor.stride || accessor.size * accessor.bytesPerElement;\n}\n\nfunction resolveShaderAttribute(baseAccessor, shaderAttributeOptions) {\n  if (shaderAttributeOptions.offset) {\n    _utils_log__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removed('shaderAttribute.offset', 'vertexOffset, elementOffset')();\n  }\n\n  const stride = getStride(baseAccessor);\n  const vertexOffset = shaderAttributeOptions.vertexOffset !== undefined ? shaderAttributeOptions.vertexOffset : baseAccessor.vertexOffset || 0;\n  const elementOffset = shaderAttributeOptions.elementOffset || 0;\n  const offset = vertexOffset * stride + elementOffset * baseAccessor.bytesPerElement + (baseAccessor.offset || 0);\n  return { ...shaderAttributeOptions,\n    offset,\n    stride\n  };\n}\n\nfunction resolveDoublePrecisionShaderAttributes(baseAccessor, shaderAttributeOptions) {\n  const resolvedOptions = resolveShaderAttribute(baseAccessor, shaderAttributeOptions);\n  return {\n    high: resolvedOptions,\n    low: { ...resolvedOptions,\n      offset: resolvedOptions.offset + baseAccessor.size * 4\n    }\n  };\n}\n\nclass DataColumn {\n  constructor(gl, opts, state) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"gl\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"id\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"size\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"settings\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"value\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"doublePrecision\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_buffer\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"state\", void 0);\n\n    this.gl = gl;\n    this.id = opts.id || '';\n    this.size = opts.size || 1;\n    const logicalType = opts.logicalType || opts.type;\n    const doublePrecision = logicalType === 5130;\n    let {\n      defaultValue\n    } = opts;\n    defaultValue = Number.isFinite(defaultValue) ? [defaultValue] : defaultValue || new Array(this.size).fill(0);\n    let bufferType;\n\n    if (doublePrecision) {\n      bufferType = 5126;\n    } else if (!logicalType && opts.isIndexed) {\n      bufferType = gl && (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_2__.hasFeature)(gl, _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__.FEATURES.ELEMENT_INDEX_UINT32) ? 5125 : 5123;\n    } else {\n      bufferType = logicalType || 5126;\n    }\n\n    let defaultType = (0,_gl_utils__WEBPACK_IMPORTED_MODULE_4__.glArrayFromType)(logicalType || bufferType || 5126);\n    this.doublePrecision = doublePrecision;\n\n    if (doublePrecision && opts.fp64 === false) {\n      defaultType = Float32Array;\n    }\n\n    this.value = null;\n    this.settings = { ...opts,\n      defaultType,\n      defaultValue: defaultValue,\n      logicalType,\n      type: bufferType,\n      size: this.size,\n      bytesPerElement: defaultType.BYTES_PER_ELEMENT\n    };\n    this.state = { ...state,\n      externalBuffer: null,\n      bufferAccessor: this.settings,\n      allocatedValue: null,\n      numInstances: 0,\n      bounds: null,\n      constant: false\n    };\n    this._buffer = null;\n  }\n\n  get isConstant() {\n    return this.state.constant;\n  }\n\n  get buffer() {\n    if (!this._buffer) {\n      const {\n        isIndexed,\n        type\n      } = this.settings;\n      this._buffer = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this.gl, {\n        id: this.id,\n        target: isIndexed ? 34963 : 34962,\n        accessor: {\n          type\n        }\n      });\n    }\n\n    return this._buffer;\n  }\n\n  get byteOffset() {\n    const accessor = this.getAccessor();\n\n    if (accessor.vertexOffset) {\n      return accessor.vertexOffset * getStride(accessor);\n    }\n\n    return 0;\n  }\n\n  get numInstances() {\n    return this.state.numInstances;\n  }\n\n  set numInstances(n) {\n    this.state.numInstances = n;\n  }\n\n  delete() {\n    if (this._buffer) {\n      this._buffer.delete();\n\n      this._buffer = null;\n    }\n\n    _utils_typed_array_manager__WEBPACK_IMPORTED_MODULE_6__[\"default\"].release(this.state.allocatedValue);\n  }\n\n  getShaderAttributes(id, options) {\n    if (this.doublePrecision) {\n      const shaderAttributes = {};\n      const isBuffer64Bit = this.value instanceof Float64Array;\n      const doubleShaderAttributeDefs = resolveDoublePrecisionShaderAttributes(this.getAccessor(), options || {});\n      shaderAttributes[id] = new _shader_attribute__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this, doubleShaderAttributeDefs.high);\n      shaderAttributes[\"\".concat(id, \"64Low\")] = isBuffer64Bit ? new _shader_attribute__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this, doubleShaderAttributeDefs.low) : new Float32Array(this.size);\n      return shaderAttributes;\n    }\n\n    if (options) {\n      const shaderAttributeDef = resolveShaderAttribute(this.getAccessor(), options);\n      return {\n        [id]: new _shader_attribute__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this, shaderAttributeDef)\n      };\n    }\n\n    return {\n      [id]: this\n    };\n  }\n\n  getBuffer() {\n    if (this.state.constant) {\n      return null;\n    }\n\n    return this.state.externalBuffer || this._buffer;\n  }\n\n  getValue() {\n    if (this.state.constant) {\n      return this.value;\n    }\n\n    return [this.getBuffer(), this.getAccessor()];\n  }\n\n  getAccessor() {\n    return this.state.bufferAccessor;\n  }\n\n  getBounds() {\n    if (this.state.bounds) {\n      return this.state.bounds;\n    }\n\n    let result = null;\n\n    if (this.state.constant && this.value) {\n      const min = Array.from(this.value);\n      result = [min, min];\n    } else {\n      const {\n        value,\n        numInstances,\n        size\n      } = this;\n      const len = numInstances * size;\n\n      if (value && len && value.length >= len) {\n        const min = new Array(size).fill(Infinity);\n        const max = new Array(size).fill(-Infinity);\n\n        for (let i = 0; i < len;) {\n          for (let j = 0; j < size; j++) {\n            const v = value[i++];\n            if (v < min[j]) min[j] = v;\n            if (v > max[j]) max[j] = v;\n          }\n        }\n\n        result = [min, max];\n      }\n    }\n\n    this.state.bounds = result;\n    return result;\n  }\n\n  setData(data) {\n    const {\n      state\n    } = this;\n    let opts;\n\n    if (ArrayBuffer.isView(data)) {\n      opts = {\n        value: data\n      };\n    } else if (data instanceof _luma_gl_core__WEBPACK_IMPORTED_MODULE_5__[\"default\"]) {\n      opts = {\n        buffer: data\n      };\n    } else {\n      opts = data;\n    }\n\n    const accessor = { ...this.settings,\n      ...opts\n    };\n    state.bufferAccessor = accessor;\n    state.bounds = null;\n\n    if (opts.constant) {\n      let value = opts.value;\n      value = this._normalizeValue(value, [], 0);\n\n      if (this.settings.normalized) {\n        value = this.normalizeConstant(value);\n      }\n\n      const hasChanged = !state.constant || !this._areValuesEqual(value, this.value);\n\n      if (!hasChanged) {\n        return false;\n      }\n\n      state.externalBuffer = null;\n      state.constant = true;\n      this.value = value;\n    } else if (opts.buffer) {\n      const buffer = opts.buffer;\n      state.externalBuffer = buffer;\n      state.constant = false;\n      this.value = opts.value || null;\n      const isBuffer64Bit = opts.value instanceof Float64Array;\n      accessor.type = opts.type || buffer.accessor.type;\n      accessor.bytesPerElement = buffer.accessor.BYTES_PER_ELEMENT * (isBuffer64Bit ? 2 : 1);\n      accessor.stride = getStride(accessor);\n    } else if (opts.value) {\n      this._checkExternalBuffer(opts);\n\n      let value = opts.value;\n      state.externalBuffer = null;\n      state.constant = false;\n      this.value = value;\n      accessor.bytesPerElement = value.BYTES_PER_ELEMENT;\n      accessor.stride = getStride(accessor);\n      const {\n        buffer,\n        byteOffset\n      } = this;\n\n      if (this.doublePrecision && value instanceof Float64Array) {\n        value = (0,_utils_math_utils__WEBPACK_IMPORTED_MODULE_8__.toDoublePrecisionArray)(value, accessor);\n      }\n\n      const requiredBufferSize = value.byteLength + byteOffset + accessor.stride * 2;\n\n      if (buffer.byteLength < requiredBufferSize) {\n        buffer.reallocate(requiredBufferSize);\n      }\n\n      buffer.setAccessor(null);\n      buffer.subData({\n        data: value,\n        offset: byteOffset\n      });\n      accessor.type = opts.type || buffer.accessor.type;\n    }\n\n    return true;\n  }\n\n  updateSubBuffer(opts = {}) {\n    this.state.bounds = null;\n    const value = this.value;\n    const {\n      startOffset = 0,\n      endOffset\n    } = opts;\n    this.buffer.subData({\n      data: this.doublePrecision && value instanceof Float64Array ? (0,_utils_math_utils__WEBPACK_IMPORTED_MODULE_8__.toDoublePrecisionArray)(value, {\n        size: this.size,\n        startIndex: startOffset,\n        endIndex: endOffset\n      }) : value.subarray(startOffset, endOffset),\n      offset: startOffset * value.BYTES_PER_ELEMENT + this.byteOffset\n    });\n  }\n\n  allocate(numInstances, copy = false) {\n    const {\n      state\n    } = this;\n    const oldValue = state.allocatedValue;\n    const value = _utils_typed_array_manager__WEBPACK_IMPORTED_MODULE_6__[\"default\"].allocate(oldValue, numInstances + 1, {\n      size: this.size,\n      type: this.settings.defaultType,\n      copy\n    });\n    this.value = value;\n    const {\n      buffer,\n      byteOffset\n    } = this;\n\n    if (buffer.byteLength < value.byteLength + byteOffset) {\n      buffer.reallocate(value.byteLength + byteOffset);\n\n      if (copy && oldValue) {\n        buffer.subData({\n          data: oldValue instanceof Float64Array ? (0,_utils_math_utils__WEBPACK_IMPORTED_MODULE_8__.toDoublePrecisionArray)(oldValue, this) : oldValue,\n          offset: byteOffset\n        });\n      }\n    }\n\n    state.allocatedValue = value;\n    state.constant = false;\n    state.externalBuffer = null;\n    state.bufferAccessor = this.settings;\n    return true;\n  }\n\n  _checkExternalBuffer(opts) {\n    const {\n      value\n    } = opts;\n\n    if (!ArrayBuffer.isView(value)) {\n      throw new Error(\"Attribute \".concat(this.id, \" value is not TypedArray\"));\n    }\n\n    const ArrayType = this.settings.defaultType;\n    let illegalArrayType = false;\n\n    if (this.doublePrecision) {\n      illegalArrayType = value.BYTES_PER_ELEMENT < 4;\n    }\n\n    if (illegalArrayType) {\n      throw new Error(\"Attribute \".concat(this.id, \" does not support \").concat(value.constructor.name));\n    }\n\n    if (!(value instanceof ArrayType) && this.settings.normalized && !('normalized' in opts)) {\n      _utils_log__WEBPACK_IMPORTED_MODULE_1__[\"default\"].warn(\"Attribute \".concat(this.id, \" is normalized\"))();\n    }\n  }\n\n  normalizeConstant(value) {\n    switch (this.settings.type) {\n      case 5120:\n        return new Float32Array(value).map(x => (x + 128) / 255 * 2 - 1);\n\n      case 5122:\n        return new Float32Array(value).map(x => (x + 32768) / 65535 * 2 - 1);\n\n      case 5121:\n        return new Float32Array(value).map(x => x / 255);\n\n      case 5123:\n        return new Float32Array(value).map(x => x / 65535);\n\n      default:\n        return value;\n    }\n  }\n\n  _normalizeValue(value, out, start) {\n    const {\n      defaultValue,\n      size\n    } = this.settings;\n\n    if (Number.isFinite(value)) {\n      out[start] = value;\n      return out;\n    }\n\n    if (!value) {\n      out[start] = defaultValue[0];\n      return out;\n    }\n\n    switch (size) {\n      case 4:\n        out[start + 3] = Number.isFinite(value[3]) ? value[3] : defaultValue[3];\n\n      case 3:\n        out[start + 2] = Number.isFinite(value[2]) ? value[2] : defaultValue[2];\n\n      case 2:\n        out[start + 1] = Number.isFinite(value[1]) ? value[1] : defaultValue[1];\n\n      case 1:\n        out[start + 0] = Number.isFinite(value[0]) ? value[0] : defaultValue[0];\n        break;\n\n      default:\n        let i = size;\n\n        while (--i >= 0) {\n          out[start + i] = Number.isFinite(value[i]) ? value[i] : defaultValue[i];\n        }\n\n    }\n\n    return out;\n  }\n\n  _areValuesEqual(value1, value2) {\n    if (!value1 || !value2) {\n      return false;\n    }\n\n    const {\n      size\n    } = this;\n\n    for (let i = 0; i < size; i++) {\n      if (value1[i] !== value2[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n}\n//# sourceMappingURL=data-column.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/attribute/data-column.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/attribute/gl-utils.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/attribute/gl-utils.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"glArrayFromType\": function() { return /* binding */ glArrayFromType; }\n/* harmony export */ });\nfunction glArrayFromType(glType) {\n  switch (glType) {\n    case 5126:\n      return Float32Array;\n\n    case 5130:\n      return Float64Array;\n\n    case 5123:\n    case 33635:\n    case 32819:\n    case 32820:\n      return Uint16Array;\n\n    case 5125:\n      return Uint32Array;\n\n    case 5121:\n      return Uint8ClampedArray;\n\n    case 5120:\n      return Int8Array;\n\n    case 5122:\n      return Int16Array;\n\n    case 5124:\n      return Int32Array;\n\n    default:\n      throw new Error('Unknown GL type');\n  }\n}\n//# sourceMappingURL=gl-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/attribute/gl-utils.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/attribute/shader-attribute.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/attribute/shader-attribute.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ShaderAttribute; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\nclass ShaderAttribute {\n  constructor(dataColumn, opts) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"opts\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"source\", void 0);\n\n    this.opts = opts;\n    this.source = dataColumn;\n  }\n\n  get value() {\n    return this.source.value;\n  }\n\n  getValue() {\n    const buffer = this.source.getBuffer();\n    const accessor = this.getAccessor();\n\n    if (buffer) {\n      return [buffer, accessor];\n    }\n\n    const {\n      value\n    } = this.source;\n    const {\n      size\n    } = accessor;\n    let constantValue = value;\n\n    if (value && value.length !== size) {\n      constantValue = new Float32Array(size);\n      const index = accessor.elementOffset || 0;\n\n      for (let i = 0; i < size; ++i) {\n        constantValue[i] = value[index + i];\n      }\n    }\n\n    return constantValue;\n  }\n\n  getAccessor() {\n    return { ...this.source.getAccessor(),\n      ...this.opts\n    };\n  }\n\n}\n//# sourceMappingURL=shader-attribute.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/attribute/shader-attribute.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/composite-layer.js":
/*!********************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/composite-layer.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ CompositeLayer; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _layer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./layer */ \"./node_modules/@deck.gl/core/dist/esm/lib/layer.js\");\n/* harmony import */ var _debug__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../debug */ \"./node_modules/@deck.gl/core/dist/esm/debug/index.js\");\n/* harmony import */ var _utils_flatten__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/flatten */ \"./node_modules/@deck.gl/core/dist/esm/utils/flatten.js\");\n\n\n\n\nconst TRACE_RENDER_LAYERS = 'compositeLayer.renderLayers';\nclass CompositeLayer extends _layer__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  get isComposite() {\n    return true;\n  }\n\n  get isLoaded() {\n    return super.isLoaded && this.getSubLayers().every(layer => layer.isLoaded);\n  }\n\n  getSubLayers() {\n    return this.internalState && this.internalState.subLayers || [];\n  }\n\n  initializeState(context) {}\n\n  setState(updateObject) {\n    super.setState(updateObject);\n    this.setNeedsUpdate();\n  }\n\n  getPickingInfo({\n    info\n  }) {\n    const {\n      object\n    } = info;\n    const isDataWrapped = object && object.__source && object.__source.parent && object.__source.parent.id === this.id;\n\n    if (!isDataWrapped) {\n      return info;\n    }\n\n    info.object = object.__source.object;\n    info.index = object.__source.index;\n    return info;\n  }\n\n  filterSubLayer(context) {\n    return true;\n  }\n\n  shouldRenderSubLayer(subLayerId, data) {\n    return data && data.length;\n  }\n\n  getSubLayerClass(subLayerId, DefaultLayerClass) {\n    const {\n      _subLayerProps: overridingProps\n    } = this.props;\n    return overridingProps && overridingProps[subLayerId] && overridingProps[subLayerId].type || DefaultLayerClass;\n  }\n\n  getSubLayerRow(row, sourceObject, sourceObjectIndex) {\n    row.__source = {\n      parent: this,\n      object: sourceObject,\n      index: sourceObjectIndex\n    };\n    return row;\n  }\n\n  getSubLayerAccessor(accessor) {\n    if (typeof accessor === 'function') {\n      const objectInfo = {\n        index: -1,\n        data: this.props.data,\n        target: []\n      };\n      return (x, i) => {\n        if (x && x.__source) {\n          objectInfo.index = x.__source.index;\n          return accessor(x.__source.object, objectInfo);\n        }\n\n        return accessor(x, i);\n      };\n    }\n\n    return accessor;\n  }\n\n  getSubLayerProps(sublayerProps = {}) {\n    var _this$props$updateTri;\n\n    const {\n      opacity,\n      pickable,\n      visible,\n      parameters,\n      getPolygonOffset,\n      highlightedObjectIndex,\n      autoHighlight,\n      highlightColor,\n      coordinateSystem,\n      coordinateOrigin,\n      wrapLongitude,\n      positionFormat,\n      modelMatrix,\n      extensions,\n      fetch,\n      operation,\n      _subLayerProps: overridingProps\n    } = this.props;\n    const newProps = {\n      id: '',\n      updateTriggers: {},\n      opacity,\n      pickable,\n      visible,\n      parameters,\n      getPolygonOffset,\n      highlightedObjectIndex,\n      autoHighlight,\n      highlightColor,\n      coordinateSystem,\n      coordinateOrigin,\n      wrapLongitude,\n      positionFormat,\n      modelMatrix,\n      extensions,\n      fetch,\n      operation\n    };\n    const overridingSublayerProps = overridingProps && sublayerProps.id && overridingProps[sublayerProps.id];\n    const overridingSublayerTriggers = overridingSublayerProps && overridingSublayerProps.updateTriggers;\n    const sublayerId = sublayerProps.id || 'sublayer';\n\n    if (overridingSublayerProps) {\n      const propTypes = this.constructor._propTypes;\n      const subLayerPropTypes = sublayerProps.type ? sublayerProps.type._propTypes : {};\n\n      for (const key in overridingSublayerProps) {\n        const propType = subLayerPropTypes[key] || propTypes[key];\n\n        if (propType && propType.type === 'accessor') {\n          overridingSublayerProps[key] = this.getSubLayerAccessor(overridingSublayerProps[key]);\n        }\n      }\n    }\n\n    Object.assign(newProps, sublayerProps, overridingSublayerProps);\n    newProps.id = \"\".concat(this.props.id, \"-\").concat(sublayerId);\n    newProps.updateTriggers = {\n      all: (_this$props$updateTri = this.props.updateTriggers) === null || _this$props$updateTri === void 0 ? void 0 : _this$props$updateTri.all,\n      ...sublayerProps.updateTriggers,\n      ...overridingSublayerTriggers\n    };\n\n    for (const extension of extensions) {\n      const passThroughProps = extension.getSubLayerProps.call(this, extension);\n\n      if (passThroughProps) {\n        Object.assign(newProps, passThroughProps, {\n          updateTriggers: Object.assign(newProps.updateTriggers, passThroughProps.updateTriggers)\n        });\n      }\n    }\n\n    return newProps;\n  }\n\n  _updateAutoHighlight(info) {\n    for (const layer of this.getSubLayers()) {\n      layer.updateAutoHighlight(info);\n    }\n  }\n\n  _getAttributeManager() {\n    return null;\n  }\n\n  _postUpdate(updateParams, forceUpdate) {\n    let subLayers = this.internalState.subLayers;\n    const shouldUpdate = !subLayers || this.needsUpdate();\n\n    if (shouldUpdate) {\n      const subLayersList = this.renderLayers();\n      subLayers = (0,_utils_flatten__WEBPACK_IMPORTED_MODULE_2__.flatten)(subLayersList, Boolean);\n      this.internalState.subLayers = subLayers;\n    }\n\n    (0,_debug__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(TRACE_RENDER_LAYERS, this, shouldUpdate, subLayers);\n\n    for (const layer of subLayers) {\n      layer.parent = this;\n    }\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(CompositeLayer, \"layerName\", 'CompositeLayer');\n//# sourceMappingURL=composite-layer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/composite-layer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/constants.js":
/*!**************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/constants.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"COORDINATE_SYSTEM\": function() { return /* binding */ COORDINATE_SYSTEM; },\n/* harmony export */   \"EVENTS\": function() { return /* binding */ EVENTS; },\n/* harmony export */   \"OPERATION\": function() { return /* binding */ OPERATION; },\n/* harmony export */   \"PROJECTION_MODE\": function() { return /* binding */ PROJECTION_MODE; },\n/* harmony export */   \"UNIT\": function() { return /* binding */ UNIT; }\n/* harmony export */ });\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/log */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n\nconst COORDINATE_SYSTEM = {\n  DEFAULT: -1,\n  LNGLAT: 1,\n  METER_OFFSETS: 2,\n  LNGLAT_OFFSETS: 3,\n  CARTESIAN: 0\n};\nObject.defineProperty(COORDINATE_SYSTEM, 'IDENTITY', {\n  get: () => {\n    _utils_log__WEBPACK_IMPORTED_MODULE_0__[\"default\"].deprecated('COORDINATE_SYSTEM.IDENTITY', 'COORDINATE_SYSTEM.CARTESIAN')();\n    return 0;\n  }\n});\nconst PROJECTION_MODE = {\n  WEB_MERCATOR: 1,\n  GLOBE: 2,\n  WEB_MERCATOR_AUTO_OFFSET: 4,\n  IDENTITY: 0\n};\nconst UNIT = {\n  common: 0,\n  meters: 1,\n  pixels: 2\n};\nconst EVENTS = {\n  click: {\n    handler: 'onClick'\n  },\n  panstart: {\n    handler: 'onDragStart'\n  },\n  panmove: {\n    handler: 'onDrag'\n  },\n  panend: {\n    handler: 'onDragEnd'\n  }\n};\nconst OPERATION = {\n  DRAW: 'draw',\n  MASK: 'mask'\n};\n//# sourceMappingURL=constants.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/constants.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/deck-picker.js":
/*!****************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/deck-picker.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ DeckPicker; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/copy-and-blit.js\");\n/* harmony import */ var _passes_pick_layers_pass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../passes/pick-layers-pass */ \"./node_modules/@deck.gl/core/dist/esm/passes/pick-layers-pass.js\");\n/* harmony import */ var _picking_query_object__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./picking/query-object */ \"./node_modules/@deck.gl/core/dist/esm/lib/picking/query-object.js\");\n/* harmony import */ var _picking_pick_info__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./picking/pick-info */ \"./node_modules/@deck.gl/core/dist/esm/lib/picking/pick-info.js\");\n\n\n\n\n\nclass DeckPicker {\n  constructor(gl) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"gl\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"pickingFBO\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"depthFBO\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"pickLayersPass\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"layerFilter\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"lastPickedInfo\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_pickable\", true);\n\n    this.gl = gl;\n    this.pickLayersPass = new _passes_pick_layers_pass__WEBPACK_IMPORTED_MODULE_1__[\"default\"](gl);\n    this.lastPickedInfo = {\n      index: -1,\n      layerId: null,\n      info: null\n    };\n  }\n\n  setProps(props) {\n    if ('layerFilter' in props) {\n      this.layerFilter = props.layerFilter;\n    }\n\n    if ('_pickable' in props) {\n      this._pickable = props._pickable;\n    }\n  }\n\n  finalize() {\n    if (this.pickingFBO) {\n      this.pickingFBO.delete();\n    }\n\n    if (this.depthFBO) {\n      this.depthFBO.color.delete();\n      this.depthFBO.delete();\n    }\n  }\n\n  pickObject(opts) {\n    return this._pickClosestObject(opts);\n  }\n\n  pickObjects(opts) {\n    return this._pickVisibleObjects(opts);\n  }\n\n  getLastPickedObject({\n    x,\n    y,\n    layers,\n    viewports\n  }, lastPickedInfo = this.lastPickedInfo.info) {\n    const lastPickedLayerId = lastPickedInfo && lastPickedInfo.layer && lastPickedInfo.layer.id;\n    const lastPickedViewportId = lastPickedInfo && lastPickedInfo.viewport && lastPickedInfo.viewport.id;\n    const layer = lastPickedLayerId ? layers.find(l => l.id === lastPickedLayerId) : null;\n    const viewport = lastPickedViewportId && viewports.find(v => v.id === lastPickedViewportId) || viewports[0];\n    const coordinate = viewport && viewport.unproject([x - viewport.x, y - viewport.y]);\n    const info = {\n      x,\n      y,\n      viewport,\n      coordinate,\n      layer\n    };\n    return { ...lastPickedInfo,\n      ...info\n    };\n  }\n\n  _resizeBuffer() {\n    var _this$pickingFBO, _this$depthFBO;\n\n    const {\n      gl\n    } = this;\n\n    if (!this.pickingFBO) {\n      this.pickingFBO = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"](gl);\n\n      if (_luma_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isSupported(gl, {\n        colorBufferFloat: true\n      })) {\n        const depthFBO = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"](gl);\n        depthFBO.attach({\n          [36064]: new _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"](gl, {\n            format: (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_4__.isWebGL2)(gl) ? 34836 : 6408,\n            type: 5126\n          })\n        });\n        this.depthFBO = depthFBO;\n      }\n    }\n\n    (_this$pickingFBO = this.pickingFBO) === null || _this$pickingFBO === void 0 ? void 0 : _this$pickingFBO.resize({\n      width: gl.canvas.width,\n      height: gl.canvas.height\n    });\n    (_this$depthFBO = this.depthFBO) === null || _this$depthFBO === void 0 ? void 0 : _this$depthFBO.resize({\n      width: gl.canvas.width,\n      height: gl.canvas.height\n    });\n  }\n\n  _getPickable(layers) {\n    if (this._pickable === false) {\n      return null;\n    }\n\n    const pickableLayers = layers.filter(layer => layer.isPickable() && !layer.isComposite);\n    return pickableLayers.length ? pickableLayers : null;\n  }\n\n  _pickClosestObject({\n    layers,\n    views,\n    viewports,\n    x,\n    y,\n    radius = 0,\n    depth = 1,\n    mode = 'query',\n    unproject3D,\n    onViewportActive,\n    effects\n  }) {\n    const pickableLayers = this._getPickable(layers);\n\n    const pixelRatio = (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_4__.cssToDeviceRatio)(this.gl);\n\n    if (!pickableLayers) {\n      return {\n        result: [],\n        emptyInfo: (0,_picking_pick_info__WEBPACK_IMPORTED_MODULE_5__.getEmptyPickingInfo)({\n          viewports,\n          x,\n          y,\n          pixelRatio\n        })\n      };\n    }\n\n    this._resizeBuffer();\n\n    const devicePixelRange = (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_4__.cssToDevicePixels)(this.gl, [x, y], true);\n    const devicePixel = [devicePixelRange.x + Math.floor(devicePixelRange.width / 2), devicePixelRange.y + Math.floor(devicePixelRange.height / 2)];\n    const deviceRadius = Math.round(radius * pixelRatio);\n    const {\n      width,\n      height\n    } = this.pickingFBO;\n\n    const deviceRect = this._getPickingRect({\n      deviceX: devicePixel[0],\n      deviceY: devicePixel[1],\n      deviceRadius,\n      deviceWidth: width,\n      deviceHeight: height\n    });\n\n    const cullRect = {\n      x: x - radius,\n      y: y - radius,\n      width: radius * 2 + 1,\n      height: radius * 2 + 1\n    };\n    let infos;\n    const result = [];\n    const affectedLayers = new Set();\n\n    for (let i = 0; i < depth; i++) {\n      let pickInfo;\n\n      if (deviceRect) {\n        const pickedResult = this._drawAndSample({\n          layers: pickableLayers,\n          views,\n          viewports,\n          onViewportActive,\n          deviceRect,\n          cullRect,\n          effects,\n          pass: \"picking:\".concat(mode)\n        });\n\n        pickInfo = (0,_picking_query_object__WEBPACK_IMPORTED_MODULE_6__.getClosestObject)({ ...pickedResult,\n          deviceX: devicePixel[0],\n          deviceY: devicePixel[1],\n          deviceRadius,\n          deviceRect\n        });\n      } else {\n        pickInfo = {\n          pickedColor: null,\n          pickedObjectIndex: -1\n        };\n      }\n\n      let z;\n\n      if (pickInfo.pickedLayer && unproject3D && this.depthFBO) {\n        const pickedResultPass2 = this._drawAndSample({\n          layers: [pickInfo.pickedLayer],\n          views,\n          viewports,\n          onViewportActive,\n          deviceRect: {\n            x: pickInfo.pickedX,\n            y: pickInfo.pickedY,\n            width: 1,\n            height: 1\n          },\n          cullRect,\n          effects,\n          pass: \"picking:\".concat(mode, \":z\")\n        }, true);\n\n        z = pickedResultPass2.pickedColors[0];\n      }\n\n      if (pickInfo.pickedLayer && i + 1 < depth) {\n        affectedLayers.add(pickInfo.pickedLayer);\n        pickInfo.pickedLayer.disablePickingIndex(pickInfo.pickedObjectIndex);\n      }\n\n      infos = (0,_picking_pick_info__WEBPACK_IMPORTED_MODULE_5__.processPickInfo)({\n        pickInfo,\n        lastPickedInfo: this.lastPickedInfo,\n        mode,\n        layers: pickableLayers,\n        viewports,\n        x,\n        y,\n        z,\n        pixelRatio\n      });\n\n      for (const info of infos.values()) {\n        if (info.layer) {\n          result.push(info);\n        }\n      }\n\n      if (!pickInfo.pickedColor) {\n        break;\n      }\n    }\n\n    for (const layer of affectedLayers) {\n      layer.restorePickingColors();\n    }\n\n    return {\n      result,\n      emptyInfo: infos.get(null)\n    };\n  }\n\n  _pickVisibleObjects({\n    layers,\n    views,\n    viewports,\n    x,\n    y,\n    width = 1,\n    height = 1,\n    mode = 'query',\n    maxObjects = null,\n    onViewportActive,\n    effects\n  }) {\n    const pickableLayers = this._getPickable(layers);\n\n    if (!pickableLayers) {\n      return [];\n    }\n\n    this._resizeBuffer();\n\n    const pixelRatio = (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_4__.cssToDeviceRatio)(this.gl);\n    const leftTop = (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_4__.cssToDevicePixels)(this.gl, [x, y], true);\n    const deviceLeft = leftTop.x;\n    const deviceTop = leftTop.y + leftTop.height;\n    const rightBottom = (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_4__.cssToDevicePixels)(this.gl, [x + width, y + height], true);\n    const deviceRight = rightBottom.x + rightBottom.width;\n    const deviceBottom = rightBottom.y;\n    const deviceRect = {\n      x: deviceLeft,\n      y: deviceBottom,\n      width: deviceRight - deviceLeft,\n      height: deviceTop - deviceBottom\n    };\n\n    const pickedResult = this._drawAndSample({\n      layers: pickableLayers,\n      views,\n      viewports,\n      onViewportActive,\n      deviceRect,\n      cullRect: {\n        x,\n        y,\n        width,\n        height\n      },\n      effects,\n      pass: \"picking:\".concat(mode)\n    });\n\n    const pickInfos = (0,_picking_query_object__WEBPACK_IMPORTED_MODULE_6__.getUniqueObjects)(pickedResult);\n    const uniqueInfos = new Map();\n    const isMaxObjects = Number.isFinite(maxObjects);\n\n    for (let i = 0; i < pickInfos.length; i++) {\n      if (isMaxObjects && maxObjects && uniqueInfos.size >= maxObjects) {\n        break;\n      }\n\n      const pickInfo = pickInfos[i];\n      let info = {\n        color: pickInfo.pickedColor,\n        layer: null,\n        index: pickInfo.pickedObjectIndex,\n        picked: true,\n        x,\n        y,\n        pixelRatio\n      };\n      info = (0,_picking_pick_info__WEBPACK_IMPORTED_MODULE_5__.getLayerPickingInfo)({\n        layer: pickInfo.pickedLayer,\n        info,\n        mode\n      });\n\n      if (!uniqueInfos.has(info.object)) {\n        uniqueInfos.set(info.object, info);\n      }\n    }\n\n    return Array.from(uniqueInfos.values());\n  }\n\n  _drawAndSample({\n    layers,\n    views,\n    viewports,\n    onViewportActive,\n    deviceRect,\n    cullRect,\n    effects,\n    pass\n  }, pickZ = false) {\n    const pickingFBO = pickZ ? this.depthFBO : this.pickingFBO;\n    const {\n      decodePickingColor\n    } = this.pickLayersPass.render({\n      layers,\n      layerFilter: this.layerFilter,\n      views,\n      viewports,\n      onViewportActive,\n      pickingFBO,\n      deviceRect,\n      cullRect,\n      effects,\n      pass,\n      pickZ\n    });\n    const {\n      x,\n      y,\n      width,\n      height\n    } = deviceRect;\n    const pickedColors = new (pickZ ? Float32Array : Uint8Array)(width * height * 4);\n    (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_7__.readPixelsToArray)(pickingFBO, {\n      sourceX: x,\n      sourceY: y,\n      sourceWidth: width,\n      sourceHeight: height,\n      target: pickedColors\n    });\n    return {\n      pickedColors,\n      decodePickingColor\n    };\n  }\n\n  _getPickingRect({\n    deviceX,\n    deviceY,\n    deviceRadius,\n    deviceWidth,\n    deviceHeight\n  }) {\n    const x = Math.max(0, deviceX - deviceRadius);\n    const y = Math.max(0, deviceY - deviceRadius);\n    const width = Math.min(deviceWidth, deviceX + deviceRadius + 1) - x;\n    const height = Math.min(deviceHeight, deviceY + deviceRadius + 1) - y;\n\n    if (width <= 0 || height <= 0) {\n      return null;\n    }\n\n    return {\n      x,\n      y,\n      width,\n      height\n    };\n  }\n\n}\n//# sourceMappingURL=deck-picker.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/deck-picker.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/deck-renderer.js":
/*!******************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/deck-renderer.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ DeckRenderer; }\n/* harmony export */ });\n/* harmony import */ var _debug__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../debug */ \"./node_modules/@deck.gl/core/dist/esm/debug/index.js\");\n/* harmony import */ var _passes_draw_layers_pass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../passes/draw-layers-pass */ \"./node_modules/@deck.gl/core/dist/esm/passes/draw-layers-pass.js\");\n/* harmony import */ var _passes_pick_layers_pass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../passes/pick-layers-pass */ \"./node_modules/@deck.gl/core/dist/esm/passes/pick-layers-pass.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js\");\n\n\n\n\nconst TRACE_RENDER_LAYERS = 'deckRenderer.renderLayers';\nclass DeckRenderer {\n  constructor(gl) {\n    this.gl = gl;\n    this.layerFilter = null;\n    this.drawPickingColors = false;\n    this.drawLayersPass = new _passes_draw_layers_pass__WEBPACK_IMPORTED_MODULE_0__[\"default\"](gl);\n    this.pickLayersPass = new _passes_pick_layers_pass__WEBPACK_IMPORTED_MODULE_1__[\"default\"](gl);\n    this.renderCount = 0;\n    this._needsRedraw = 'Initial render';\n    this.renderBuffers = [];\n    this.lastPostProcessEffect = null;\n  }\n\n  setProps(props) {\n    if ('layerFilter' in props && this.layerFilter !== props.layerFilter) {\n      this.layerFilter = props.layerFilter;\n      this._needsRedraw = 'layerFilter changed';\n    }\n\n    if ('drawPickingColors' in props && this.drawPickingColors !== props.drawPickingColors) {\n      this.drawPickingColors = props.drawPickingColors;\n      this._needsRedraw = 'drawPickingColors changed';\n    }\n  }\n\n  renderLayers(opts) {\n    const layerPass = this.drawPickingColors ? this.pickLayersPass : this.drawLayersPass;\n    opts.layerFilter = opts.layerFilter || this.layerFilter;\n    opts.effects = opts.effects || [];\n    opts.target = opts.target || _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getDefaultFramebuffer(this.gl);\n\n    this._preRender(opts.effects, opts);\n\n    const outputBuffer = this.lastPostProcessEffect ? this.renderBuffers[0] : opts.target;\n    const renderStats = layerPass.render({ ...opts,\n      target: outputBuffer\n    });\n\n    this._postRender(opts.effects, opts);\n\n    this.renderCount++;\n    (0,_debug__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(TRACE_RENDER_LAYERS, this, renderStats, opts);\n  }\n\n  needsRedraw(opts = {\n    clearRedrawFlags: false\n  }) {\n    const redraw = this._needsRedraw;\n\n    if (opts.clearRedrawFlags) {\n      this._needsRedraw = false;\n    }\n\n    return redraw;\n  }\n\n  finalize() {\n    const {\n      renderBuffers\n    } = this;\n\n    for (const buffer of renderBuffers) {\n      buffer.delete();\n    }\n\n    renderBuffers.length = 0;\n  }\n\n  _preRender(effects, opts) {\n    let lastPostProcessEffect = null;\n\n    for (const effect of effects) {\n      effect.preRender(this.gl, opts);\n\n      if (effect.postRender) {\n        lastPostProcessEffect = effect;\n      }\n    }\n\n    if (lastPostProcessEffect) {\n      this._resizeRenderBuffers();\n    }\n\n    this.lastPostProcessEffect = lastPostProcessEffect;\n  }\n\n  _resizeRenderBuffers() {\n    const {\n      renderBuffers\n    } = this;\n\n    if (renderBuffers.length === 0) {\n      renderBuffers.push(new _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.gl), new _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.gl));\n    }\n\n    for (const buffer of renderBuffers) {\n      buffer.resize();\n    }\n  }\n\n  _postRender(effects, opts) {\n    const {\n      renderBuffers\n    } = this;\n    const params = {\n      inputBuffer: renderBuffers[0],\n      swapBuffer: renderBuffers[1],\n      target: null\n    };\n\n    for (const effect of effects) {\n      if (effect.postRender) {\n        if (effect === this.lastPostProcessEffect) {\n          params.target = opts.target;\n          effect.postRender(this.gl, params);\n          break;\n        }\n\n        const buffer = effect.postRender(this.gl, params);\n        params.inputBuffer = buffer;\n        params.swapBuffer = buffer === renderBuffers[0] ? renderBuffers[1] : renderBuffers[0];\n      }\n    }\n  }\n\n}\n//# sourceMappingURL=deck-renderer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/deck-renderer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/deck.js":
/*!*********************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/deck.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Deck; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _layer_manager__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./layer-manager */ \"./node_modules/@deck.gl/core/dist/esm/lib/layer-manager.js\");\n/* harmony import */ var _view_manager__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./view-manager */ \"./node_modules/@deck.gl/core/dist/esm/lib/view-manager.js\");\n/* harmony import */ var _views_map_view__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../views/map-view */ \"./node_modules/@deck.gl/core/dist/esm/views/map-view.js\");\n/* harmony import */ var _effect_manager__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./effect-manager */ \"./node_modules/@deck.gl/core/dist/esm/lib/effect-manager.js\");\n/* harmony import */ var _deck_renderer__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./deck-renderer */ \"./node_modules/@deck.gl/core/dist/esm/lib/deck-renderer.js\");\n/* harmony import */ var _deck_picker__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./deck-picker */ \"./node_modules/@deck.gl/core/dist/esm/lib/deck-picker.js\");\n/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./tooltip */ \"./node_modules/@deck.gl/core/dist/esm/lib/tooltip.js\");\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/log */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n/* harmony import */ var _utils_deep_equal__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/deep-equal */ \"./node_modules/@deck.gl/core/dist/esm/utils/deep-equal.js\");\n/* harmony import */ var _utils_typed_array_manager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/typed-array-manager */ \"./node_modules/@deck.gl/core/dist/esm/utils/typed-array-manager.js\");\n/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./init */ \"./node_modules/@deck.gl/core/dist/esm/lib/init.js\");\n/* harmony import */ var _probe_gl_env__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @probe.gl/env */ \"./node_modules/@probe.gl/env/dist/esm/lib/get-browser.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/lib/animation-loop.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/animation/timeline.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/init.js\");\n/* harmony import */ var _probe_gl_stats__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @probe.gl/stats */ \"./node_modules/@probe.gl/stats/dist/esm/index.js\");\n/* harmony import */ var mjolnir_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! mjolnir.js */ \"./node_modules/mjolnir.js/dist/esm/index.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@deck.gl/core/dist/esm/utils/assert.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./constants */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction noop() {}\n\nconst getCursor = ({\n  isDragging\n}) => isDragging ? 'grabbing' : 'grab';\n\nconst defaultProps = {\n  id: '',\n  width: '100%',\n  height: '100%',\n  style: null,\n  viewState: null,\n  initialViewState: null,\n  pickingRadius: 0,\n  layerFilter: null,\n  glOptions: {},\n  parameters: {},\n  parent: null,\n  gl: null,\n  canvas: null,\n  layers: [],\n  effects: [],\n  views: null,\n  controller: null,\n  useDevicePixels: true,\n  touchAction: 'none',\n  eventRecognizerOptions: {},\n  _framebuffer: null,\n  _animate: false,\n  _pickable: true,\n  _typedArrayManagerProps: {},\n  _customRender: null,\n  onWebGLInitialized: noop,\n  onResize: noop,\n  onViewStateChange: noop,\n  onInteractionStateChange: noop,\n  onBeforeRender: noop,\n  onAfterRender: noop,\n  onLoad: noop,\n  onError: error => _utils_log__WEBPACK_IMPORTED_MODULE_3__[\"default\"].error(error.message)(),\n  onHover: null,\n  onClick: null,\n  onDragStart: null,\n  onDrag: null,\n  onDragEnd: null,\n  _onMetrics: null,\n  getCursor,\n  getTooltip: null,\n  debug: false,\n  drawPickingColors: false\n};\nclass Deck {\n  constructor(props) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"props\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"width\", 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"height\", 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"userData\", {});\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"canvas\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"viewManager\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"layerManager\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"effectManager\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"deckRenderer\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"deckPicker\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"eventManager\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"tooltip\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"metrics\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"animationLoop\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"stats\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"viewState\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"cursorState\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_needsRedraw\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_pickRequest\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_lastPointerDownInfo\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_metricsCounter\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_onPointerMove\", event => {\n      const {\n        _pickRequest\n      } = this;\n\n      if (event.type === 'pointerleave') {\n        _pickRequest.x = -1;\n        _pickRequest.y = -1;\n        _pickRequest.radius = 0;\n      } else if (event.leftButton || event.rightButton) {\n        return;\n      } else {\n        const pos = event.offsetCenter;\n\n        if (!pos) {\n          return;\n        }\n\n        _pickRequest.x = pos.x;\n        _pickRequest.y = pos.y;\n        _pickRequest.radius = this.props.pickingRadius;\n      }\n\n      if (this.layerManager) {\n        this.layerManager.context.mousePosition = {\n          x: _pickRequest.x,\n          y: _pickRequest.y\n        };\n      }\n\n      _pickRequest.event = event;\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_onEvent\", event => {\n      const eventOptions = _constants__WEBPACK_IMPORTED_MODULE_4__.EVENTS[event.type];\n      const pos = event.offsetCenter;\n\n      if (!eventOptions || !pos || !this.layerManager) {\n        return;\n      }\n\n      const layers = this.layerManager.getLayers();\n      const info = this.deckPicker.getLastPickedObject({\n        x: pos.x,\n        y: pos.y,\n        layers,\n        viewports: this.getViewports(pos)\n      }, this._lastPointerDownInfo);\n      const {\n        layer\n      } = info;\n      const layerHandler = layer && (layer[eventOptions.handler] || layer.props[eventOptions.handler]);\n      const rootHandler = this.props[eventOptions.handler];\n      let handled = false;\n\n      if (layerHandler) {\n        handled = layerHandler.call(layer, info, event);\n      }\n\n      if (!handled && rootHandler) {\n        rootHandler(info, event);\n      }\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_onPointerDown\", event => {\n      const pos = event.offsetCenter;\n\n      const pickedInfo = this._pick('pickObject', 'pickObject Time', {\n        x: pos.x,\n        y: pos.y,\n        radius: this.props.pickingRadius\n      });\n\n      this._lastPointerDownInfo = pickedInfo.result[0] || pickedInfo.emptyInfo;\n    });\n\n    this.props = { ...defaultProps,\n      ...props\n    };\n    props = this.props;\n    this._needsRedraw = 'Initial render';\n    this._pickRequest = {\n      mode: 'hover',\n      x: -1,\n      y: -1,\n      radius: 0,\n      event: null\n    };\n    this.cursorState = {\n      isHovering: false,\n      isDragging: false\n    };\n\n    if (props.viewState && props.initialViewState) {\n      _utils_log__WEBPACK_IMPORTED_MODULE_3__[\"default\"].warn('View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.')();\n    }\n\n    if ((0,_probe_gl_env__WEBPACK_IMPORTED_MODULE_5__[\"default\"])() === 'IE') {\n      _utils_log__WEBPACK_IMPORTED_MODULE_3__[\"default\"].warn('IE 11 is not supported')();\n    }\n\n    this.viewState = props.initialViewState;\n\n    if (!props.gl) {\n      if (typeof document !== 'undefined') {\n        this.canvas = this._createCanvas(props);\n      }\n    }\n\n    this.animationLoop = this._createAnimationLoop(props);\n    this.stats = new _probe_gl_stats__WEBPACK_IMPORTED_MODULE_1__.Stats({\n      id: 'deck.gl'\n    });\n    this.metrics = {\n      fps: 0,\n      setPropsTime: 0,\n      updateAttributesTime: 0,\n      framesRedrawn: 0,\n      pickTime: 0,\n      pickCount: 0,\n      gpuTime: 0,\n      gpuTimePerFrame: 0,\n      cpuTime: 0,\n      cpuTimePerFrame: 0,\n      bufferMemory: 0,\n      textureMemory: 0,\n      renderbufferMemory: 0,\n      gpuMemory: 0\n    };\n    this._metricsCounter = 0;\n    this.setProps(props);\n\n    if (props._typedArrayManagerProps) {\n      _utils_typed_array_manager__WEBPACK_IMPORTED_MODULE_6__[\"default\"].setOptions(props._typedArrayManagerProps);\n    }\n\n    this.animationLoop.start();\n  }\n\n  finalize() {\n    var _this$layerManager, _this$viewManager, _this$effectManager, _this$deckRenderer, _this$deckPicker, _this$eventManager, _this$tooltip;\n\n    this.animationLoop.stop();\n    this.animationLoop = null;\n    this._lastPointerDownInfo = null;\n    (_this$layerManager = this.layerManager) === null || _this$layerManager === void 0 ? void 0 : _this$layerManager.finalize();\n    this.layerManager = null;\n    (_this$viewManager = this.viewManager) === null || _this$viewManager === void 0 ? void 0 : _this$viewManager.finalize();\n    this.viewManager = null;\n    (_this$effectManager = this.effectManager) === null || _this$effectManager === void 0 ? void 0 : _this$effectManager.finalize();\n    this.effectManager = null;\n    (_this$deckRenderer = this.deckRenderer) === null || _this$deckRenderer === void 0 ? void 0 : _this$deckRenderer.finalize();\n    this.deckRenderer = null;\n    (_this$deckPicker = this.deckPicker) === null || _this$deckPicker === void 0 ? void 0 : _this$deckPicker.finalize();\n    this.deckPicker = null;\n    (_this$eventManager = this.eventManager) === null || _this$eventManager === void 0 ? void 0 : _this$eventManager.destroy();\n    this.eventManager = null;\n    (_this$tooltip = this.tooltip) === null || _this$tooltip === void 0 ? void 0 : _this$tooltip.remove();\n    this.tooltip = null;\n\n    if (!this.props.canvas && !this.props.gl && this.canvas) {\n      var _this$canvas$parentEl;\n\n      (_this$canvas$parentEl = this.canvas.parentElement) === null || _this$canvas$parentEl === void 0 ? void 0 : _this$canvas$parentEl.removeChild(this.canvas);\n      this.canvas = null;\n    }\n  }\n\n  setProps(props) {\n    this.stats.get('setProps Time').timeStart();\n\n    if ('onLayerHover' in props) {\n      _utils_log__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removed('onLayerHover', 'onHover')();\n    }\n\n    if ('onLayerClick' in props) {\n      _utils_log__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removed('onLayerClick', 'onClick')();\n    }\n\n    if (props.initialViewState && !(0,_utils_deep_equal__WEBPACK_IMPORTED_MODULE_7__.deepEqual)(this.props.initialViewState, props.initialViewState)) {\n      this.viewState = props.initialViewState;\n    }\n\n    Object.assign(this.props, props);\n\n    this._setCanvasSize(this.props);\n\n    const resolvedProps = Object.create(this.props);\n    Object.assign(resolvedProps, {\n      views: this._getViews(),\n      width: this.width,\n      height: this.height,\n      viewState: this._getViewState()\n    });\n    this.animationLoop.setProps(resolvedProps);\n\n    if (this.layerManager) {\n      this.viewManager.setProps(resolvedProps);\n      this.layerManager.activateViewport(this.getViewports()[0]);\n      this.layerManager.setProps(resolvedProps);\n      this.effectManager.setProps(resolvedProps);\n      this.deckRenderer.setProps(resolvedProps);\n      this.deckPicker.setProps(resolvedProps);\n    }\n\n    this.stats.get('setProps Time').timeEnd();\n  }\n\n  needsRedraw(opts = {\n    clearRedrawFlags: false\n  }) {\n    if (!this.layerManager) {\n      return false;\n    }\n\n    if (this.props._animate) {\n      return 'Deck._animate';\n    }\n\n    let redraw = this._needsRedraw;\n\n    if (opts.clearRedrawFlags) {\n      this._needsRedraw = false;\n    }\n\n    const viewManagerNeedsRedraw = this.viewManager.needsRedraw(opts);\n    const layerManagerNeedsRedraw = this.layerManager.needsRedraw(opts);\n    const effectManagerNeedsRedraw = this.effectManager.needsRedraw(opts);\n    const deckRendererNeedsRedraw = this.deckRenderer.needsRedraw(opts);\n    redraw = redraw || viewManagerNeedsRedraw || layerManagerNeedsRedraw || effectManagerNeedsRedraw || deckRendererNeedsRedraw;\n    return redraw;\n  }\n\n  redraw(reason) {\n    if (!this.layerManager) {\n      return;\n    }\n\n    let redrawReason = this.needsRedraw({\n      clearRedrawFlags: true\n    });\n    redrawReason = reason || redrawReason;\n\n    if (!redrawReason) {\n      return;\n    }\n\n    this.stats.get('Redraw Count').incrementCount();\n\n    if (this.props._customRender) {\n      this.props._customRender(redrawReason);\n    } else {\n      this._drawLayers(redrawReason);\n    }\n  }\n\n  get isInitialized() {\n    return this.viewManager !== null;\n  }\n\n  getViews() {\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.viewManager);\n    return this.viewManager.views;\n  }\n\n  getViewports(rect) {\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.viewManager);\n    return this.viewManager.getViewports(rect);\n  }\n\n  pickObject(opts) {\n    const infos = this._pick('pickObject', 'pickObject Time', opts).result;\n\n    return infos.length ? infos[0] : null;\n  }\n\n  pickMultipleObjects(opts) {\n    opts.depth = opts.depth || 10;\n    return this._pick('pickObject', 'pickMultipleObjects Time', opts).result;\n  }\n\n  pickObjects(opts) {\n    return this._pick('pickObjects', 'pickObjects Time', opts);\n  }\n\n  _addResources(resources, forceUpdate = false) {\n    for (const id in resources) {\n      this.layerManager.resourceManager.add({\n        resourceId: id,\n        data: resources[id],\n        forceUpdate\n      });\n    }\n  }\n\n  _removeResources(resourceIds) {\n    for (const id of resourceIds) {\n      this.layerManager.resourceManager.remove(id);\n    }\n  }\n\n  _pick(method, statKey, opts) {\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.deckPicker);\n    const {\n      stats\n    } = this;\n    stats.get('Pick Count').incrementCount();\n    stats.get(statKey).timeStart();\n    const infos = this.deckPicker[method]({\n      layers: this.layerManager.getLayers(opts),\n      views: this.viewManager.getViews(),\n      viewports: this.getViewports(opts),\n      onViewportActive: this.layerManager.activateViewport,\n      effects: this.effectManager.getEffects(),\n      ...opts\n    });\n    stats.get(statKey).timeEnd();\n    return infos;\n  }\n\n  _createCanvas(props) {\n    let canvas = props.canvas;\n\n    if (typeof canvas === 'string') {\n      canvas = document.getElementById(canvas);\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(canvas);\n    }\n\n    if (!canvas) {\n      canvas = document.createElement('canvas');\n      canvas.id = props.id || 'deckgl-overlay';\n      const parent = props.parent || document.body;\n      parent.appendChild(canvas);\n    }\n\n    Object.assign(canvas.style, props.style);\n    return canvas;\n  }\n\n  _setCanvasSize(props) {\n    if (!this.canvas) {\n      return;\n    }\n\n    const {\n      width,\n      height\n    } = props;\n\n    if (width || width === 0) {\n      const cssWidth = Number.isFinite(width) ? \"\".concat(width, \"px\") : width;\n      this.canvas.style.width = cssWidth;\n    }\n\n    if (height || height === 0) {\n      var _props$style;\n\n      const cssHeight = Number.isFinite(height) ? \"\".concat(height, \"px\") : height;\n      this.canvas.style.position = ((_props$style = props.style) === null || _props$style === void 0 ? void 0 : _props$style.position) || 'absolute';\n      this.canvas.style.height = cssHeight;\n    }\n  }\n\n  _updateCanvasSize() {\n    const {\n      canvas\n    } = this;\n\n    if (!canvas) {\n      return;\n    }\n\n    const newWidth = canvas.clientWidth || canvas.width;\n    const newHeight = canvas.clientHeight || canvas.height;\n\n    if (newWidth !== this.width || newHeight !== this.height) {\n      var _this$viewManager2;\n\n      this.width = newWidth;\n      this.height = newHeight;\n      (_this$viewManager2 = this.viewManager) === null || _this$viewManager2 === void 0 ? void 0 : _this$viewManager2.setProps({\n        width: newWidth,\n        height: newHeight\n      });\n      this.props.onResize({\n        width: newWidth,\n        height: newHeight\n      });\n    }\n  }\n\n  _createAnimationLoop(props) {\n    const {\n      width,\n      height,\n      gl,\n      glOptions,\n      debug,\n      onError,\n      onBeforeRender,\n      onAfterRender,\n      useDevicePixels\n    } = props;\n    return new _luma_gl_core__WEBPACK_IMPORTED_MODULE_9__[\"default\"]({\n      width,\n      height,\n      useDevicePixels,\n      autoResizeViewport: false,\n      gl,\n      onCreateContext: opts => (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_10__.createGLContext)({ ...glOptions,\n        ...opts,\n        canvas: this.canvas,\n        debug,\n        onContextLost: () => this._onContextLost()\n      }),\n      onInitialize: context => this._setGLContext(context.gl),\n      onRender: this._onRenderFrame.bind(this),\n      onBeforeRender,\n      onAfterRender,\n      onError\n    });\n  }\n\n  _getViewState() {\n    return this.props.viewState || this.viewState;\n  }\n\n  _getViews() {\n    let views = this.props.views || [new _views_map_view__WEBPACK_IMPORTED_MODULE_11__[\"default\"]({\n      id: 'default-view'\n    })];\n    views = Array.isArray(views) ? views : [views];\n\n    if (views.length && this.props.controller) {\n      views[0].props.controller = this.props.controller;\n    }\n\n    return views;\n  }\n\n  _onContextLost() {\n    const {\n      onError\n    } = this.props;\n\n    if (this.animationLoop && onError) {\n      onError(new Error('WebGL context is lost'));\n    }\n  }\n\n  _pickAndCallback() {\n    const {\n      _pickRequest\n    } = this;\n\n    if (_pickRequest.event) {\n      const {\n        result,\n        emptyInfo\n      } = this._pick('pickObject', 'pickObject Time', _pickRequest);\n\n      this.cursorState.isHovering = result.length > 0;\n      let pickedInfo = emptyInfo;\n      let handled = false;\n\n      for (const info of result) {\n        var _info$layer;\n\n        pickedInfo = info;\n        handled = ((_info$layer = info.layer) === null || _info$layer === void 0 ? void 0 : _info$layer.onHover(info, _pickRequest.event)) || handled;\n      }\n\n      if (!handled && this.props.onHover) {\n        this.props.onHover(pickedInfo, _pickRequest.event);\n      }\n\n      if (this.props.getTooltip && this.tooltip) {\n        const displayInfo = this.props.getTooltip(pickedInfo);\n        this.tooltip.setTooltip(displayInfo, pickedInfo.x, pickedInfo.y);\n      }\n\n      _pickRequest.event = null;\n    }\n  }\n\n  _updateCursor() {\n    const container = this.props.parent || this.canvas;\n\n    if (container) {\n      container.style.cursor = this.props.getCursor(this.cursorState);\n    }\n  }\n\n  _setGLContext(gl) {\n    if (this.layerManager) {\n      return;\n    }\n\n    if (!this.canvas) {\n      this.canvas = gl.canvas;\n      (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_10__.instrumentGLContext)(gl, {\n        enable: true,\n        copyState: true\n      });\n    }\n\n    this.tooltip = new _tooltip__WEBPACK_IMPORTED_MODULE_12__[\"default\"](this.canvas);\n    (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_10__.setParameters)(gl, {\n      blend: true,\n      blendFunc: [770, 771, 1, 771],\n      polygonOffsetFill: true,\n      depthTest: true,\n      depthFunc: 515\n    });\n    this.props.onWebGLInitialized(gl);\n    const timeline = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_13__.Timeline();\n    timeline.play();\n    this.animationLoop.attachTimeline(timeline);\n    this.eventManager = new mjolnir_js__WEBPACK_IMPORTED_MODULE_2__.EventManager(this.props.parent || gl.canvas, {\n      touchAction: this.props.touchAction,\n      recognizerOptions: this.props.eventRecognizerOptions,\n      events: {\n        pointerdown: this._onPointerDown,\n        pointermove: this._onPointerMove,\n        pointerleave: this._onPointerMove\n      }\n    });\n\n    for (const eventType in _constants__WEBPACK_IMPORTED_MODULE_4__.EVENTS) {\n      this.eventManager.on(eventType, this._onEvent);\n    }\n\n    this.viewManager = new _view_manager__WEBPACK_IMPORTED_MODULE_14__[\"default\"]({\n      timeline,\n      eventManager: this.eventManager,\n      onViewStateChange: this._onViewStateChange.bind(this),\n      onInteractionStateChange: this._onInteractionStateChange.bind(this),\n      views: this._getViews(),\n      viewState: this._getViewState(),\n      width: this.width,\n      height: this.height\n    });\n    const viewport = this.viewManager.getViewports()[0];\n    this.layerManager = new _layer_manager__WEBPACK_IMPORTED_MODULE_15__[\"default\"](gl, {\n      deck: this,\n      stats: this.stats,\n      viewport,\n      timeline\n    });\n    this.effectManager = new _effect_manager__WEBPACK_IMPORTED_MODULE_16__[\"default\"]();\n    this.deckRenderer = new _deck_renderer__WEBPACK_IMPORTED_MODULE_17__[\"default\"](gl);\n    this.deckPicker = new _deck_picker__WEBPACK_IMPORTED_MODULE_18__[\"default\"](gl);\n    this.setProps(this.props);\n\n    this._updateCanvasSize();\n\n    this.props.onLoad();\n  }\n\n  _drawLayers(redrawReason, renderOptions) {\n    const {\n      gl\n    } = this.layerManager.context;\n    (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_10__.setParameters)(gl, this.props.parameters);\n    this.props.onBeforeRender({\n      gl\n    });\n    this.deckRenderer.renderLayers({\n      target: this.props._framebuffer,\n      layers: this.layerManager.getLayers(),\n      viewports: this.viewManager.getViewports(),\n      onViewportActive: this.layerManager.activateViewport,\n      views: this.viewManager.getViews(),\n      pass: 'screen',\n      redrawReason,\n      effects: this.effectManager.getEffects(),\n      ...renderOptions\n    });\n    this.props.onAfterRender({\n      gl\n    });\n  }\n\n  _onRenderFrame(animationProps) {\n    this._getFrameStats();\n\n    if (this._metricsCounter++ % 60 === 0) {\n      this._getMetrics();\n\n      this.stats.reset();\n      _utils_log__WEBPACK_IMPORTED_MODULE_3__[\"default\"].table(4, this.metrics)();\n\n      if (this.props._onMetrics) {\n        this.props._onMetrics(this.metrics);\n      }\n    }\n\n    this._updateCanvasSize();\n\n    this._updateCursor();\n\n    if (this.tooltip.isVisible && this.viewManager.needsRedraw()) {\n      this.tooltip.setTooltip(null);\n    }\n\n    this.layerManager.updateLayers();\n\n    this._pickAndCallback();\n\n    this.redraw();\n\n    if (this.viewManager) {\n      this.viewManager.updateViewStates();\n    }\n  }\n\n  _onViewStateChange(params) {\n    const viewState = this.props.onViewStateChange(params) || params.viewState;\n\n    if (this.viewState) {\n      this.viewState = { ...this.viewState,\n        [params.viewId]: viewState\n      };\n\n      if (!this.props.viewState) {\n        if (this.viewManager) {\n          this.viewManager.setProps({\n            viewState: this.viewState\n          });\n        }\n      }\n    }\n  }\n\n  _onInteractionStateChange(interactionState) {\n    this.cursorState.isDragging = interactionState.isDragging || false;\n    this.props.onInteractionStateChange(interactionState);\n  }\n\n  _getFrameStats() {\n    const {\n      stats\n    } = this;\n    stats.get('frameRate').timeEnd();\n    stats.get('frameRate').timeStart();\n    const animationLoopStats = this.animationLoop.stats;\n    stats.get('GPU Time').addTime(animationLoopStats.get('GPU Time').lastTiming);\n    stats.get('CPU Time').addTime(animationLoopStats.get('CPU Time').lastTiming);\n  }\n\n  _getMetrics() {\n    const {\n      metrics,\n      stats\n    } = this;\n    metrics.fps = stats.get('frameRate').getHz();\n    metrics.setPropsTime = stats.get('setProps Time').time;\n    metrics.updateAttributesTime = stats.get('Update Attributes').time;\n    metrics.framesRedrawn = stats.get('Redraw Count').count;\n    metrics.pickTime = stats.get('pickObject Time').time + stats.get('pickMultipleObjects Time').time + stats.get('pickObjects Time').time;\n    metrics.pickCount = stats.get('Pick Count').count;\n    metrics.gpuTime = stats.get('GPU Time').time;\n    metrics.cpuTime = stats.get('CPU Time').time;\n    metrics.gpuTimePerFrame = stats.get('GPU Time').getAverageTime();\n    metrics.cpuTimePerFrame = stats.get('CPU Time').getAverageTime();\n    const memoryStats = _luma_gl_core__WEBPACK_IMPORTED_MODULE_19__.lumaStats.get('Memory Usage');\n    metrics.bufferMemory = memoryStats.get('Buffer Memory').count;\n    metrics.textureMemory = memoryStats.get('Texture Memory').count;\n    metrics.renderbufferMemory = memoryStats.get('Renderbuffer Memory').count;\n    metrics.gpuMemory = memoryStats.get('GPU Memory').count;\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Deck, \"defaultProps\", defaultProps);\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Deck, \"VERSION\", _init__WEBPACK_IMPORTED_MODULE_20__[\"default\"].VERSION);\n//# sourceMappingURL=deck.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/deck.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/effect-manager.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/effect-manager.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ EffectManager; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _utils_deep_equal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/deep-equal */ \"./node_modules/@deck.gl/core/dist/esm/utils/deep-equal.js\");\n/* harmony import */ var _effects_lighting_lighting_effect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../effects/lighting/lighting-effect */ \"./node_modules/@deck.gl/core/dist/esm/effects/lighting/lighting-effect.js\");\n/* harmony import */ var _effects_mask_mask_effect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../effects/mask/mask-effect */ \"./node_modules/@deck.gl/core/dist/esm/effects/mask/mask-effect.js\");\n\n\n\n\nconst DEFAULT_LIGHTING_EFFECT = new _effects_lighting_lighting_effect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]();\nclass EffectManager {\n  constructor() {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"effects\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_internalEffects\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_needsRedraw\", void 0);\n\n    this.effects = [];\n    this._internalEffects = [];\n    this._needsRedraw = 'Initial render';\n    this.setEffects();\n  }\n\n  setProps(props) {\n    if ('effects' in props) {\n      if (props.effects.length !== this.effects.length || !(0,_utils_deep_equal__WEBPACK_IMPORTED_MODULE_2__.deepEqual)(props.effects, this.effects)) {\n        this.setEffects(props.effects);\n        this._needsRedraw = 'effects changed';\n      }\n    }\n  }\n\n  needsRedraw(opts = {\n    clearRedrawFlags: false\n  }) {\n    const redraw = this._needsRedraw;\n\n    if (opts.clearRedrawFlags) {\n      this._needsRedraw = false;\n    }\n\n    return redraw;\n  }\n\n  getEffects() {\n    return this._internalEffects;\n  }\n\n  finalize() {\n    this.cleanup();\n  }\n\n  setEffects(effects = []) {\n    this.cleanup();\n    this.effects = effects;\n    this._internalEffects = effects.slice();\n\n    this._internalEffects.push(new _effects_mask_mask_effect__WEBPACK_IMPORTED_MODULE_3__[\"default\"]());\n\n    if (!effects.some(effect => effect instanceof _effects_lighting_lighting_effect__WEBPACK_IMPORTED_MODULE_1__[\"default\"])) {\n      this._internalEffects.push(DEFAULT_LIGHTING_EFFECT);\n    }\n  }\n\n  cleanup() {\n    for (const effect of this.effects) {\n      effect.cleanup();\n    }\n\n    for (const effect of this._internalEffects) {\n      effect.cleanup();\n    }\n\n    this.effects.length = 0;\n    this._internalEffects.length = 0;\n  }\n\n}\n//# sourceMappingURL=effect-manager.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/effect-manager.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/init.js":
/*!*********************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/init.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loaders_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @loaders.gl/core */ \"./node_modules/@loaders.gl/core/dist/esm/lib/api/register-loaders.js\");\n/* harmony import */ var _loaders_gl_images__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @loaders.gl/images */ \"./node_modules/@loaders.gl/images/dist/esm/image-loader.js\");\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/log */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n/* harmony import */ var _debug__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../debug */ \"./node_modules/@deck.gl/core/dist/esm/debug/index.js\");\n/* harmony import */ var _utils_json_loader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/json-loader */ \"./node_modules/@deck.gl/core/dist/esm/utils/json-loader.js\");\n\n\n\n\n\nconst version =  true ? \"8.8.24\" : 0;\nconst existingVersion = globalThis.deck && globalThis.deck.VERSION;\n\nif (existingVersion && existingVersion !== version) {\n  throw new Error(\"deck.gl - multiple versions detected: \".concat(existingVersion, \" vs \").concat(version));\n}\n\nif (!existingVersion) {\n  _utils_log__WEBPACK_IMPORTED_MODULE_0__[\"default\"].log(1, \"deck.gl \".concat(version))();\n  globalThis.deck = { ...globalThis.deck,\n    VERSION: version,\n    version,\n    log: _utils_log__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    _registerLoggers: _debug__WEBPACK_IMPORTED_MODULE_1__.register\n  };\n  (0,_loaders_gl_core__WEBPACK_IMPORTED_MODULE_2__.registerLoaders)([_utils_json_loader__WEBPACK_IMPORTED_MODULE_3__[\"default\"], [_loaders_gl_images__WEBPACK_IMPORTED_MODULE_4__.ImageLoader, {\n    imagebitmap: {\n      premultiplyAlpha: 'none'\n    }\n  }]]);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (globalThis.deck);\n//# sourceMappingURL=init.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/init.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/layer-extension.js":
/*!********************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/layer-extension.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LayerExtension; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _utils_deep_equal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/deep-equal */ \"./node_modules/@deck.gl/core/dist/esm/utils/deep-equal.js\");\n\n\nclass LayerExtension {\n  constructor(opts) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"opts\", void 0);\n\n    if (opts) {\n      this.opts = opts;\n    }\n  }\n\n  equals(extension) {\n    if (this === extension) {\n      return true;\n    }\n\n    return this.constructor === extension.constructor && (0,_utils_deep_equal__WEBPACK_IMPORTED_MODULE_1__.deepEqual)(this.opts, extension.opts);\n  }\n\n  getShaders(extension) {\n    return null;\n  }\n\n  getSubLayerProps(extension) {\n    const {\n      defaultProps\n    } = extension.constructor;\n    const newProps = {\n      updateTriggers: {}\n    };\n\n    for (const key in defaultProps) {\n      if (key in this.props) {\n        const propDef = defaultProps[key];\n        const propValue = this.props[key];\n        newProps[key] = propValue;\n\n        if (propDef && propDef.type === 'accessor') {\n          newProps.updateTriggers[key] = this.props.updateTriggers[key];\n\n          if (typeof propValue === 'function') {\n            newProps[key] = this.getSubLayerAccessor(propValue);\n          }\n        }\n      }\n    }\n\n    return newProps;\n  }\n\n  initializeState(context, extension) {}\n\n  updateState(params, extension) {}\n\n  draw(params, extension) {}\n\n  finalizeState(context, extension) {}\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(LayerExtension, \"defaultProps\", {});\n//# sourceMappingURL=layer-extension.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/layer-extension.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/layer-manager.js":
/*!******************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/layer-manager.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LayerManager; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/animation/timeline.js\");\n/* harmony import */ var _lifecycle_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../lifecycle/constants */ \"./node_modules/@deck.gl/core/dist/esm/lifecycle/constants.js\");\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/log */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n/* harmony import */ var _debug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../debug */ \"./node_modules/@deck.gl/core/dist/esm/debug/index.js\");\n/* harmony import */ var _utils_flatten__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/flatten */ \"./node_modules/@deck.gl/core/dist/esm/utils/flatten.js\");\n/* harmony import */ var _probe_gl_stats__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @probe.gl/stats */ \"./node_modules/@probe.gl/stats/dist/esm/index.js\");\n/* harmony import */ var _resource_resource_manager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./resource/resource-manager */ \"./node_modules/@deck.gl/core/dist/esm/lib/resource/resource-manager.js\");\n/* harmony import */ var _viewports_viewport__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../viewports/viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/viewport.js\");\n/* harmony import */ var _shaderlib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shaderlib */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/index.js\");\n\n\n\n\n\n\n\n\n\n\nconst TRACE_SET_LAYERS = 'layerManager.setLayers';\nconst TRACE_ACTIVATE_VIEWPORT = 'layerManager.activateViewport';\nclass LayerManager {\n  constructor(gl, {\n    deck,\n    stats,\n    viewport: _viewport,\n    timeline\n  } = {}) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"layers\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"context\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"resourceManager\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_lastRenderedLayers\", []);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_needsRedraw\", false);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_needsUpdate\", false);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_nextLayers\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_debug\", false);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"activateViewport\", viewport => {\n      (0,_debug__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(TRACE_ACTIVATE_VIEWPORT, this, viewport);\n\n      if (viewport) {\n        this.context.viewport = viewport;\n      }\n    });\n\n    this.layers = [];\n    this.resourceManager = new _resource_resource_manager__WEBPACK_IMPORTED_MODULE_3__[\"default\"]({\n      gl,\n      protocol: 'deck://'\n    });\n    this.context = {\n      mousePosition: null,\n      userData: {},\n      layerManager: this,\n      gl,\n      deck,\n      programManager: gl && (0,_shaderlib__WEBPACK_IMPORTED_MODULE_4__.createProgramManager)(gl),\n      stats: stats || new _probe_gl_stats__WEBPACK_IMPORTED_MODULE_1__.Stats({\n        id: 'deck.gl'\n      }),\n      viewport: _viewport || new _viewports_viewport__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n        id: 'DEFAULT-INITIAL-VIEWPORT'\n      }),\n      timeline: timeline || new _luma_gl_core__WEBPACK_IMPORTED_MODULE_6__.Timeline(),\n      resourceManager: this.resourceManager,\n      onError: undefined\n    };\n    Object.seal(this);\n  }\n\n  finalize() {\n    this.resourceManager.finalize();\n\n    for (const layer of this.layers) {\n      this._finalizeLayer(layer);\n    }\n  }\n\n  needsRedraw(opts = {\n    clearRedrawFlags: false\n  }) {\n    let redraw = this._needsRedraw;\n\n    if (opts.clearRedrawFlags) {\n      this._needsRedraw = false;\n    }\n\n    for (const layer of this.layers) {\n      const layerNeedsRedraw = layer.getNeedsRedraw(opts);\n      redraw = redraw || layerNeedsRedraw;\n    }\n\n    return redraw;\n  }\n\n  needsUpdate() {\n    if (this._nextLayers && this._nextLayers !== this._lastRenderedLayers) {\n      return 'layers changed';\n    }\n\n    return this._needsUpdate;\n  }\n\n  setNeedsRedraw(reason) {\n    this._needsRedraw = this._needsRedraw || reason;\n  }\n\n  setNeedsUpdate(reason) {\n    this._needsUpdate = this._needsUpdate || reason;\n  }\n\n  getLayers({\n    layerIds\n  } = {}) {\n    return layerIds ? this.layers.filter(layer => layerIds.find(layerId => layer.id.indexOf(layerId) === 0)) : this.layers;\n  }\n\n  setProps(props) {\n    if ('debug' in props) {\n      this._debug = props.debug;\n    }\n\n    if ('userData' in props) {\n      this.context.userData = props.userData;\n    }\n\n    if ('layers' in props) {\n      this._nextLayers = props.layers;\n    }\n\n    if ('onError' in props) {\n      this.context.onError = props.onError;\n    }\n  }\n\n  setLayers(newLayers, reason) {\n    (0,_debug__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(TRACE_SET_LAYERS, this, reason, newLayers);\n    this._lastRenderedLayers = newLayers;\n    const flatLayers = (0,_utils_flatten__WEBPACK_IMPORTED_MODULE_7__.flatten)(newLayers, Boolean);\n\n    for (const layer of flatLayers) {\n      layer.context = this.context;\n    }\n\n    this._updateLayers(this.layers, flatLayers);\n  }\n\n  updateLayers() {\n    const reason = this.needsUpdate();\n\n    if (reason) {\n      this.setNeedsRedraw(\"updating layers: \".concat(reason));\n      this.setLayers(this._nextLayers || this._lastRenderedLayers, reason);\n    }\n\n    this._nextLayers = null;\n  }\n\n  _handleError(stage, error, layer) {\n    layer.raiseError(error, \"\".concat(stage, \" of \").concat(layer));\n  }\n\n  _updateLayers(oldLayers, newLayers) {\n    const oldLayerMap = {};\n\n    for (const oldLayer of oldLayers) {\n      if (oldLayerMap[oldLayer.id]) {\n        _utils_log__WEBPACK_IMPORTED_MODULE_8__[\"default\"].warn(\"Multiple old layers with same id \".concat(oldLayer.id))();\n      } else {\n        oldLayerMap[oldLayer.id] = oldLayer;\n      }\n    }\n\n    const generatedLayers = [];\n\n    this._updateSublayersRecursively(newLayers, oldLayerMap, generatedLayers);\n\n    this._finalizeOldLayers(oldLayerMap);\n\n    let needsUpdate = false;\n\n    for (const layer of generatedLayers) {\n      if (layer.hasUniformTransition()) {\n        needsUpdate = \"Uniform transition in \".concat(layer);\n        break;\n      }\n    }\n\n    this._needsUpdate = needsUpdate;\n    this.layers = generatedLayers;\n  }\n\n  _updateSublayersRecursively(newLayers, oldLayerMap, generatedLayers) {\n    for (const newLayer of newLayers) {\n      newLayer.context = this.context;\n      const oldLayer = oldLayerMap[newLayer.id];\n\n      if (oldLayer === null) {\n        _utils_log__WEBPACK_IMPORTED_MODULE_8__[\"default\"].warn(\"Multiple new layers with same id \".concat(newLayer.id))();\n      }\n\n      oldLayerMap[newLayer.id] = null;\n      let sublayers = null;\n\n      try {\n        if (this._debug && oldLayer !== newLayer) {\n          newLayer.validateProps();\n        }\n\n        if (!oldLayer) {\n          this._initializeLayer(newLayer);\n        } else {\n          this._transferLayerState(oldLayer, newLayer);\n\n          this._updateLayer(newLayer);\n        }\n\n        generatedLayers.push(newLayer);\n        sublayers = newLayer.isComposite ? newLayer.getSubLayers() : null;\n      } catch (err) {\n        this._handleError('matching', err, newLayer);\n      }\n\n      if (sublayers) {\n        this._updateSublayersRecursively(sublayers, oldLayerMap, generatedLayers);\n      }\n    }\n  }\n\n  _finalizeOldLayers(oldLayerMap) {\n    for (const layerId in oldLayerMap) {\n      const layer = oldLayerMap[layerId];\n\n      if (layer) {\n        this._finalizeLayer(layer);\n      }\n    }\n  }\n\n  _initializeLayer(layer) {\n    try {\n      layer._initialize();\n\n      layer.lifecycle = _lifecycle_constants__WEBPACK_IMPORTED_MODULE_9__.LIFECYCLE.INITIALIZED;\n    } catch (err) {\n      this._handleError('initialization', err, layer);\n    }\n  }\n\n  _transferLayerState(oldLayer, newLayer) {\n    newLayer._transferState(oldLayer);\n\n    newLayer.lifecycle = _lifecycle_constants__WEBPACK_IMPORTED_MODULE_9__.LIFECYCLE.MATCHED;\n\n    if (newLayer !== oldLayer) {\n      oldLayer.lifecycle = _lifecycle_constants__WEBPACK_IMPORTED_MODULE_9__.LIFECYCLE.AWAITING_GC;\n    }\n  }\n\n  _updateLayer(layer) {\n    try {\n      layer._update();\n    } catch (err) {\n      this._handleError('update', err, layer);\n    }\n  }\n\n  _finalizeLayer(layer) {\n    this._needsRedraw = this._needsRedraw || \"finalized \".concat(layer);\n    layer.lifecycle = _lifecycle_constants__WEBPACK_IMPORTED_MODULE_9__.LIFECYCLE.AWAITING_FINALIZATION;\n\n    try {\n      layer._finalize();\n\n      layer.lifecycle = _lifecycle_constants__WEBPACK_IMPORTED_MODULE_9__.LIFECYCLE.FINALIZED;\n    } catch (err) {\n      this._handleError('finalization', err, layer);\n    }\n  }\n\n}\n//# sourceMappingURL=layer-manager.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/layer-manager.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/layer-state.js":
/*!****************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/layer-state.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LayerState; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _lifecycle_component_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lifecycle/component-state */ \"./node_modules/@deck.gl/core/dist/esm/lifecycle/component-state.js\");\n\n\nclass LayerState extends _lifecycle_component_state__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor({\n    attributeManager,\n    layer\n  }) {\n    super(layer);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"attributeManager\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"needsRedraw\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"needsUpdate\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"subLayers\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"usesPickingColorCache\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"changeFlags\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"viewport\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"uniformTransitions\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"propsInTransition\", void 0);\n\n    this.attributeManager = attributeManager;\n    this.needsRedraw = true;\n    this.needsUpdate = true;\n    this.subLayers = null;\n    this.usesPickingColorCache = false;\n  }\n\n  get layer() {\n    return this.component;\n  }\n\n  set layer(layer) {\n    this.component = layer;\n  }\n\n  _fetch(propName, url) {\n    const fetch = this.component.props.fetch;\n\n    if (fetch) {\n      return fetch(url, {\n        propName,\n        layer: this.layer\n      });\n    }\n\n    return super._fetch(propName, url);\n  }\n\n  _onResolve(propName, value) {\n    const onDataLoad = this.component.props.onDataLoad;\n\n    if (propName === 'data' && onDataLoad) {\n      onDataLoad(value, {\n        propName,\n        layer: this.layer\n      });\n    }\n  }\n\n  _onError(propName, error) {\n    this.layer.raiseError(error, \"loading \".concat(propName, \" of \").concat(this.layer));\n  }\n\n}\n//# sourceMappingURL=layer-state.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/layer-state.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/layer.js":
/*!**********************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/layer.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Layer; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./constants */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _attribute_attribute_manager__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./attribute/attribute-manager */ \"./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-manager.js\");\n/* harmony import */ var _uniform_transition_manager__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./uniform-transition-manager */ \"./node_modules/@deck.gl/core/dist/esm/lib/uniform-transition-manager.js\");\n/* harmony import */ var _lifecycle_props__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../lifecycle/props */ \"./node_modules/@deck.gl/core/dist/esm/lifecycle/props.js\");\n/* harmony import */ var _lifecycle_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../lifecycle/constants */ \"./node_modules/@deck.gl/core/dist/esm/lifecycle/constants.js\");\n/* harmony import */ var _utils_count__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/count */ \"./node_modules/@deck.gl/core/dist/esm/utils/count.js\");\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/log */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n/* harmony import */ var _debug__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../debug */ \"./node_modules/@deck.gl/core/dist/esm/debug/index.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@deck.gl/core/dist/esm/utils/assert.js\");\n/* harmony import */ var _utils_memoize__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/memoize */ \"./node_modules/@deck.gl/core/dist/esm/utils/memoize.js\");\n/* harmony import */ var _utils_shader__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/shader */ \"./node_modules/@deck.gl/core/dist/esm/utils/shader.js\");\n/* harmony import */ var _shaderlib_project_project_functions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../shaderlib/project/project-functions */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project-functions.js\");\n/* harmony import */ var _utils_typed_array_manager__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/typed-array-manager */ \"./node_modules/@deck.gl/core/dist/esm/utils/typed-array-manager.js\");\n/* harmony import */ var _lifecycle_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../lifecycle/component */ \"./node_modules/@deck.gl/core/dist/esm/lifecycle/component.js\");\n/* harmony import */ var _layer_state__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./layer-state */ \"./node_modules/@deck.gl/core/dist/esm/lib/layer-state.js\");\n/* harmony import */ var _math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @math.gl/web-mercator */ \"./node_modules/@math.gl/web-mercator/dist/esm/index.js\");\n/* harmony import */ var _loaders_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @loaders.gl/core */ \"./node_modules/@loaders.gl/core/dist/esm/lib/api/load.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst TRACE_CHANGE_FLAG = 'layer.changeFlag';\nconst TRACE_INITIALIZE = 'layer.initialize';\nconst TRACE_UPDATE = 'layer.update';\nconst TRACE_FINALIZE = 'layer.finalize';\nconst TRACE_MATCHED = 'layer.matched';\nconst MAX_PICKING_COLOR_CACHE_SIZE = 2 ** 24 - 1;\nconst EMPTY_ARRAY = Object.freeze([]);\nconst areViewportsEqual = (0,_utils_memoize__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(({\n  oldViewport,\n  viewport\n}) => {\n  return oldViewport.equals(viewport);\n});\nlet pickingColorCache = new Uint8ClampedArray(0);\nconst defaultProps = {\n  data: {\n    type: 'data',\n    value: EMPTY_ARRAY,\n    async: true\n  },\n  dataComparator: {\n    type: 'function',\n    value: null,\n    compare: false,\n    optional: true\n  },\n  _dataDiff: {\n    type: 'function',\n    value: data => data && data.__diff,\n    compare: false,\n    optional: true\n  },\n  dataTransform: {\n    type: 'function',\n    value: null,\n    compare: false,\n    optional: true\n  },\n  onDataLoad: {\n    type: 'function',\n    value: null,\n    compare: false,\n    optional: true\n  },\n  onError: {\n    type: 'function',\n    value: null,\n    compare: false,\n    optional: true\n  },\n  fetch: {\n    type: 'function',\n    value: (url, {\n      propName,\n      layer,\n      loaders,\n      loadOptions,\n      signal\n    }) => {\n      const {\n        resourceManager\n      } = layer.context;\n      loadOptions = loadOptions || layer.getLoadOptions();\n      loaders = loaders || layer.props.loaders;\n\n      if (signal) {\n        var _loadOptions;\n\n        loadOptions = { ...loadOptions,\n          fetch: { ...((_loadOptions = loadOptions) === null || _loadOptions === void 0 ? void 0 : _loadOptions.fetch),\n            signal\n          }\n        };\n      }\n\n      let inResourceManager = resourceManager.contains(url);\n\n      if (!inResourceManager && !loadOptions) {\n        resourceManager.add({\n          resourceId: url,\n          data: (0,_loaders_gl_core__WEBPACK_IMPORTED_MODULE_3__.load)(url, loaders),\n          persistent: false\n        });\n        inResourceManager = true;\n      }\n\n      if (inResourceManager) {\n        return resourceManager.subscribe({\n          resourceId: url,\n          onChange: data => {\n            var _layer$internalState;\n\n            return (_layer$internalState = layer.internalState) === null || _layer$internalState === void 0 ? void 0 : _layer$internalState.reloadAsyncProp(propName, data);\n          },\n          consumerId: layer.id,\n          requestId: propName\n        });\n      }\n\n      return (0,_loaders_gl_core__WEBPACK_IMPORTED_MODULE_3__.load)(url, loaders, loadOptions);\n    },\n    compare: false\n  },\n  updateTriggers: {},\n  visible: true,\n  pickable: false,\n  opacity: {\n    type: 'number',\n    min: 0,\n    max: 1,\n    value: 1\n  },\n  operation: _constants__WEBPACK_IMPORTED_MODULE_4__.OPERATION.DRAW,\n  onHover: {\n    type: 'function',\n    value: null,\n    compare: false,\n    optional: true\n  },\n  onClick: {\n    type: 'function',\n    value: null,\n    compare: false,\n    optional: true\n  },\n  onDragStart: {\n    type: 'function',\n    value: null,\n    compare: false,\n    optional: true\n  },\n  onDrag: {\n    type: 'function',\n    value: null,\n    compare: false,\n    optional: true\n  },\n  onDragEnd: {\n    type: 'function',\n    value: null,\n    compare: false,\n    optional: true\n  },\n  coordinateSystem: _constants__WEBPACK_IMPORTED_MODULE_4__.COORDINATE_SYSTEM.DEFAULT,\n  coordinateOrigin: {\n    type: 'array',\n    value: [0, 0, 0],\n    compare: true\n  },\n  modelMatrix: {\n    type: 'array',\n    value: null,\n    compare: true,\n    optional: true\n  },\n  wrapLongitude: false,\n  positionFormat: 'XYZ',\n  colorFormat: 'RGBA',\n  parameters: {\n    type: 'object',\n    value: {},\n    optional: true,\n    compare: true\n  },\n  transitions: null,\n  extensions: [],\n  loaders: {\n    type: 'array',\n    value: [],\n    optional: true,\n    compare: true\n  },\n  getPolygonOffset: {\n    type: 'function',\n    value: ({\n      layerIndex\n    }) => [0, -layerIndex * 100],\n    compare: false\n  },\n  highlightedObjectIndex: null,\n  autoHighlight: false,\n  highlightColor: {\n    type: 'accessor',\n    value: [0, 0, 128, 128]\n  }\n};\nclass Layer extends _lifecycle_component__WEBPACK_IMPORTED_MODULE_5__[\"default\"] {\n  constructor(...args) {\n    super(...args);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"internalState\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"lifecycle\", _lifecycle_constants__WEBPACK_IMPORTED_MODULE_6__.LIFECYCLE.NO_STATE);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"context\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"state\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"parent\", null);\n  }\n\n  get root() {\n    let layer = this;\n\n    while (layer.parent) {\n      layer = layer.parent;\n    }\n\n    return layer;\n  }\n\n  toString() {\n    const className = this.constructor.layerName || this.constructor.name;\n    return \"\".concat(className, \"({id: '\").concat(this.props.id, \"'})\");\n  }\n\n  project(xyz) {\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.internalState);\n    const viewport = this.internalState.viewport || this.context.viewport;\n    const worldPosition = (0,_shaderlib_project_project_functions__WEBPACK_IMPORTED_MODULE_8__.getWorldPosition)(xyz, {\n      viewport,\n      modelMatrix: this.props.modelMatrix,\n      coordinateOrigin: this.props.coordinateOrigin,\n      coordinateSystem: this.props.coordinateSystem\n    });\n    const [x, y, z] = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.worldToPixels)(worldPosition, viewport.pixelProjectionMatrix);\n    return xyz.length === 2 ? [x, y] : [x, y, z];\n  }\n\n  unproject(xy) {\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.internalState);\n    const viewport = this.internalState.viewport || this.context.viewport;\n    return viewport.unproject(xy);\n  }\n\n  projectPosition(xyz, params) {\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.internalState);\n    const viewport = this.internalState.viewport || this.context.viewport;\n    return (0,_shaderlib_project_project_functions__WEBPACK_IMPORTED_MODULE_8__.projectPosition)(xyz, {\n      viewport,\n      modelMatrix: this.props.modelMatrix,\n      coordinateOrigin: this.props.coordinateOrigin,\n      coordinateSystem: this.props.coordinateSystem,\n      ...params\n    });\n  }\n\n  get isComposite() {\n    return false;\n  }\n\n  setState(partialState) {\n    this.setChangeFlags({\n      stateChanged: true\n    });\n    Object.assign(this.state, partialState);\n    this.setNeedsRedraw();\n  }\n\n  setNeedsRedraw() {\n    if (this.internalState) {\n      this.internalState.needsRedraw = true;\n    }\n  }\n\n  setNeedsUpdate() {\n    if (this.internalState) {\n      this.context.layerManager.setNeedsUpdate(String(this));\n      this.internalState.needsUpdate = true;\n    }\n  }\n\n  get isLoaded() {\n    return this.internalState ? !this.internalState.isAsyncPropLoading() : false;\n  }\n\n  get wrapLongitude() {\n    return this.props.wrapLongitude;\n  }\n\n  isPickable() {\n    return this.props.pickable && this.props.visible;\n  }\n\n  getModels() {\n    return this.state && (this.state.models || this.state.model && [this.state.model]) || [];\n  }\n\n  setModuleParameters(moduleParameters) {\n    for (const model of this.getModels()) {\n      model.updateModuleSettings(moduleParameters);\n    }\n  }\n\n  getAttributeManager() {\n    return this.internalState && this.internalState.attributeManager;\n  }\n\n  getCurrentLayer() {\n    return this.internalState && this.internalState.layer;\n  }\n\n  getLoadOptions() {\n    return this.props.loadOptions;\n  }\n\n  use64bitPositions() {\n    const {\n      coordinateSystem\n    } = this.props;\n    return coordinateSystem === _constants__WEBPACK_IMPORTED_MODULE_4__.COORDINATE_SYSTEM.DEFAULT || coordinateSystem === _constants__WEBPACK_IMPORTED_MODULE_4__.COORDINATE_SYSTEM.LNGLAT || coordinateSystem === _constants__WEBPACK_IMPORTED_MODULE_4__.COORDINATE_SYSTEM.CARTESIAN;\n  }\n\n  onHover(info, pickingEvent) {\n    if (this.props.onHover) {\n      return this.props.onHover(info, pickingEvent) || false;\n    }\n\n    return false;\n  }\n\n  onClick(info, pickingEvent) {\n    if (this.props.onClick) {\n      return this.props.onClick(info, pickingEvent) || false;\n    }\n\n    return false;\n  }\n\n  nullPickingColor() {\n    return [0, 0, 0];\n  }\n\n  encodePickingColor(i, target = []) {\n    target[0] = i + 1 & 255;\n    target[1] = i + 1 >> 8 & 255;\n    target[2] = i + 1 >> 8 >> 8 & 255;\n    return target;\n  }\n\n  decodePickingColor(color) {\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(color instanceof Uint8Array);\n    const [i1, i2, i3] = color;\n    const index = i1 + i2 * 256 + i3 * 65536 - 1;\n    return index;\n  }\n\n  getNumInstances() {\n    if (Number.isFinite(this.props.numInstances)) {\n      return this.props.numInstances;\n    }\n\n    if (this.state && this.state.numInstances !== undefined) {\n      return this.state.numInstances;\n    }\n\n    return (0,_utils_count__WEBPACK_IMPORTED_MODULE_9__.count)(this.props.data);\n  }\n\n  getStartIndices() {\n    if (this.props.startIndices) {\n      return this.props.startIndices;\n    }\n\n    if (this.state && this.state.startIndices) {\n      return this.state.startIndices;\n    }\n\n    return null;\n  }\n\n  getBounds() {\n    var _ref;\n\n    const attributeManager = this.getAttributeManager();\n    if (!attributeManager) return null;\n    const {\n      positions,\n      instancePositions\n    } = attributeManager.attributes;\n    return (_ref = positions || instancePositions) === null || _ref === void 0 ? void 0 : _ref.getBounds();\n  }\n\n  getShaders(shaders) {\n    for (const extension of this.props.extensions) {\n      shaders = (0,_utils_shader__WEBPACK_IMPORTED_MODULE_10__.mergeShaders)(shaders, extension.getShaders.call(this, extension));\n    }\n\n    return shaders;\n  }\n\n  shouldUpdateState(params) {\n    return params.changeFlags.propsOrDataChanged;\n  }\n\n  updateState(params) {\n    const attributeManager = this.getAttributeManager();\n    const {\n      dataChanged\n    } = params.changeFlags;\n\n    if (dataChanged && attributeManager) {\n      if (Array.isArray(dataChanged)) {\n        for (const dataRange of dataChanged) {\n          attributeManager.invalidateAll(dataRange);\n        }\n      } else {\n        attributeManager.invalidateAll();\n      }\n    }\n\n    const {\n      props,\n      oldProps\n    } = params;\n    const neededPickingBuffer = Number.isInteger(oldProps.highlightedObjectIndex) || oldProps.pickable;\n    const needPickingBuffer = Number.isInteger(props.highlightedObjectIndex) || props.pickable;\n\n    if (neededPickingBuffer !== needPickingBuffer && attributeManager) {\n      const {\n        pickingColors,\n        instancePickingColors\n      } = attributeManager.attributes;\n      const pickingColorsAttribute = pickingColors || instancePickingColors;\n\n      if (pickingColorsAttribute) {\n        if (needPickingBuffer && pickingColorsAttribute.constant) {\n          pickingColorsAttribute.constant = false;\n          attributeManager.invalidate(pickingColorsAttribute.id);\n        }\n\n        if (!pickingColorsAttribute.value && !needPickingBuffer) {\n          pickingColorsAttribute.constant = true;\n          pickingColorsAttribute.value = [0, 0, 0];\n        }\n      }\n    }\n  }\n\n  finalizeState(context) {\n    for (const model of this.getModels()) {\n      model.delete();\n    }\n\n    const attributeManager = this.getAttributeManager();\n\n    if (attributeManager) {\n      attributeManager.finalize();\n    }\n\n    if (this.context) {\n      this.context.resourceManager.unsubscribe({\n        consumerId: this.id\n      });\n    }\n\n    if (this.internalState) {\n      this.internalState.uniformTransitions.clear();\n      this.internalState.finalize();\n    }\n  }\n\n  draw(opts) {\n    for (const model of this.getModels()) {\n      model.draw(opts);\n    }\n  }\n\n  getPickingInfo({\n    info,\n    mode,\n    sourceLayer\n  }) {\n    const {\n      index\n    } = info;\n\n    if (index >= 0) {\n      if (Array.isArray(this.props.data)) {\n        info.object = this.props.data[index];\n      }\n    }\n\n    return info;\n  }\n\n  raiseError(error, message) {\n    var _this$props$onError, _this$props;\n\n    if (message) {\n      error.message = \"\".concat(message, \": \").concat(error.message);\n    }\n\n    if (!((_this$props$onError = (_this$props = this.props).onError) !== null && _this$props$onError !== void 0 && _this$props$onError.call(_this$props, error))) {\n      var _this$context, _this$context$onError;\n\n      (_this$context = this.context) === null || _this$context === void 0 ? void 0 : (_this$context$onError = _this$context.onError) === null || _this$context$onError === void 0 ? void 0 : _this$context$onError.call(_this$context, error, this);\n    }\n  }\n\n  getNeedsRedraw(opts = {\n    clearRedrawFlags: false\n  }) {\n    return this._getNeedsRedraw(opts);\n  }\n\n  needsUpdate() {\n    if (!this.internalState) {\n      return false;\n    }\n\n    return this.internalState.needsUpdate || this.hasUniformTransition() || this.shouldUpdateState(this._getUpdateParams());\n  }\n\n  hasUniformTransition() {\n    var _this$internalState;\n\n    return ((_this$internalState = this.internalState) === null || _this$internalState === void 0 ? void 0 : _this$internalState.uniformTransitions.active) || false;\n  }\n\n  activateViewport(viewport) {\n    if (!this.internalState) {\n      return;\n    }\n\n    const oldViewport = this.internalState.viewport;\n    this.internalState.viewport = viewport;\n\n    if (!oldViewport || !areViewportsEqual({\n      oldViewport,\n      viewport\n    })) {\n      this.setChangeFlags({\n        viewportChanged: true\n      });\n\n      if (this.isComposite) {\n        if (this.needsUpdate()) {\n          this.setNeedsUpdate();\n        }\n      } else {\n        this._update();\n      }\n    }\n  }\n\n  invalidateAttribute(name = 'all') {\n    const attributeManager = this.getAttributeManager();\n\n    if (!attributeManager) {\n      return;\n    }\n\n    if (name === 'all') {\n      attributeManager.invalidateAll();\n    } else {\n      attributeManager.invalidate(name);\n    }\n  }\n\n  updateAttributes(changedAttributes) {\n    for (const model of this.getModels()) {\n      this._setModelAttributes(model, changedAttributes);\n    }\n  }\n\n  _updateAttributes() {\n    const attributeManager = this.getAttributeManager();\n\n    if (!attributeManager) {\n      return;\n    }\n\n    const props = this.props;\n    const numInstances = this.getNumInstances();\n    const startIndices = this.getStartIndices();\n    attributeManager.update({\n      data: props.data,\n      numInstances,\n      startIndices,\n      props,\n      transitions: props.transitions,\n      buffers: props.data.attributes,\n      context: this\n    });\n    const changedAttributes = attributeManager.getChangedAttributes({\n      clearChangedFlags: true\n    });\n    this.updateAttributes(changedAttributes);\n  }\n\n  _updateAttributeTransition() {\n    const attributeManager = this.getAttributeManager();\n\n    if (attributeManager) {\n      attributeManager.updateTransition();\n    }\n  }\n\n  _updateUniformTransition() {\n    const {\n      uniformTransitions\n    } = this.internalState;\n\n    if (uniformTransitions.active) {\n      const propsInTransition = uniformTransitions.update();\n      const props = Object.create(this.props);\n\n      for (const key in propsInTransition) {\n        Object.defineProperty(props, key, {\n          value: propsInTransition[key]\n        });\n      }\n\n      return props;\n    }\n\n    return this.props;\n  }\n\n  calculateInstancePickingColors(attribute, {\n    numInstances\n  }) {\n    if (attribute.constant) {\n      return;\n    }\n\n    const cacheSize = Math.floor(pickingColorCache.length / 3);\n    this.internalState.usesPickingColorCache = true;\n\n    if (cacheSize < numInstances) {\n      if (numInstances > MAX_PICKING_COLOR_CACHE_SIZE) {\n        _utils_log__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn('Layer has too many data objects. Picking might not be able to distinguish all objects.')();\n      }\n\n      pickingColorCache = _utils_typed_array_manager__WEBPACK_IMPORTED_MODULE_12__[\"default\"].allocate(pickingColorCache, numInstances, {\n        size: 3,\n        copy: true,\n        maxCount: Math.max(numInstances, MAX_PICKING_COLOR_CACHE_SIZE)\n      });\n      const newCacheSize = Math.floor(pickingColorCache.length / 3);\n      const pickingColor = [];\n\n      for (let i = cacheSize; i < newCacheSize; i++) {\n        this.encodePickingColor(i, pickingColor);\n        pickingColorCache[i * 3 + 0] = pickingColor[0];\n        pickingColorCache[i * 3 + 1] = pickingColor[1];\n        pickingColorCache[i * 3 + 2] = pickingColor[2];\n      }\n    }\n\n    attribute.value = pickingColorCache.subarray(0, numInstances * 3);\n  }\n\n  _setModelAttributes(model, changedAttributes) {\n    const attributeManager = this.getAttributeManager();\n    const excludeAttributes = model.userData.excludeAttributes || {};\n    const shaderAttributes = attributeManager.getShaderAttributes(changedAttributes, excludeAttributes);\n    model.setAttributes(shaderAttributes);\n  }\n\n  disablePickingIndex(objectIndex) {\n    this._disablePickingIndex(objectIndex);\n  }\n\n  _disablePickingIndex(objectIndex) {\n    const {\n      pickingColors,\n      instancePickingColors\n    } = this.getAttributeManager().attributes;\n    const colors = pickingColors || instancePickingColors;\n\n    if (!colors) {\n      return;\n    }\n\n    const start = colors.getVertexOffset(objectIndex);\n    const end = colors.getVertexOffset(objectIndex + 1);\n    colors.buffer.subData({\n      data: new Uint8Array(end - start),\n      offset: start\n    });\n  }\n\n  restorePickingColors() {\n    const {\n      pickingColors,\n      instancePickingColors\n    } = this.getAttributeManager().attributes;\n    const colors = pickingColors || instancePickingColors;\n\n    if (!colors) {\n      return;\n    }\n\n    if (this.internalState.usesPickingColorCache && colors.value.buffer !== pickingColorCache.buffer) {\n      colors.value = pickingColorCache.subarray(0, colors.value.length);\n    }\n\n    colors.updateSubBuffer({\n      startOffset: 0\n    });\n  }\n\n  _initialize() {\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(!this.internalState);\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(Number.isFinite(this.props.coordinateSystem));\n    (0,_debug__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(TRACE_INITIALIZE, this);\n\n    const attributeManager = this._getAttributeManager();\n\n    if (attributeManager) {\n      attributeManager.addInstanced({\n        instancePickingColors: {\n          type: 5121,\n          size: 3,\n          noAlloc: true,\n          update: this.calculateInstancePickingColors\n        }\n      });\n    }\n\n    this.internalState = new _layer_state__WEBPACK_IMPORTED_MODULE_14__[\"default\"]({\n      attributeManager,\n      layer: this\n    });\n\n    this._clearChangeFlags();\n\n    this.state = {};\n    Object.defineProperty(this.state, 'attributeManager', {\n      get: () => {\n        _utils_log__WEBPACK_IMPORTED_MODULE_11__[\"default\"].deprecated('layer.state.attributeManager', 'layer.getAttributeManager()')();\n        return attributeManager;\n      }\n    });\n    this.internalState.layer = this;\n    this.internalState.uniformTransitions = new _uniform_transition_manager__WEBPACK_IMPORTED_MODULE_15__[\"default\"](this.context.timeline);\n    this.internalState.onAsyncPropUpdated = this._onAsyncPropUpdated.bind(this);\n    this.internalState.setAsyncProps(this.props);\n    this.initializeState(this.context);\n\n    for (const extension of this.props.extensions) {\n      extension.initializeState.call(this, this.context, extension);\n    }\n\n    this.setChangeFlags({\n      dataChanged: 'init',\n      propsChanged: 'init',\n      viewportChanged: true,\n      extensionsChanged: true\n    });\n\n    this._update();\n  }\n\n  _transferState(oldLayer) {\n    (0,_debug__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(TRACE_MATCHED, this, this === oldLayer);\n    const {\n      state,\n      internalState\n    } = oldLayer;\n\n    if (this === oldLayer) {\n      return;\n    }\n\n    this.internalState = internalState;\n    this.internalState.layer = this;\n    this.state = state;\n    this.internalState.setAsyncProps(this.props);\n\n    this._diffProps(this.props, this.internalState.getOldProps());\n  }\n\n  _update() {\n    const stateNeedsUpdate = this.needsUpdate();\n    (0,_debug__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(TRACE_UPDATE, this, stateNeedsUpdate);\n\n    if (!stateNeedsUpdate) {\n      return;\n    }\n\n    const currentProps = this.props;\n    const context = this.context;\n    const internalState = this.internalState;\n    const currentViewport = context.viewport;\n\n    const propsInTransition = this._updateUniformTransition();\n\n    internalState.propsInTransition = propsInTransition;\n    context.viewport = internalState.viewport || currentViewport;\n    this.props = propsInTransition;\n\n    try {\n      const updateParams = this._getUpdateParams();\n\n      const oldModels = this.getModels();\n\n      if (context.gl) {\n        this.updateState(updateParams);\n      } else {\n        try {\n          this.updateState(updateParams);\n        } catch (error) {}\n      }\n\n      for (const extension of this.props.extensions) {\n        extension.updateState.call(this, updateParams, extension);\n      }\n\n      const modelChanged = this.getModels()[0] !== oldModels[0];\n\n      this._postUpdate(updateParams, modelChanged);\n    } finally {\n      context.viewport = currentViewport;\n      this.props = currentProps;\n\n      this._clearChangeFlags();\n\n      internalState.needsUpdate = false;\n      internalState.resetOldProps();\n    }\n  }\n\n  _finalize() {\n    (0,_debug__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(TRACE_FINALIZE, this);\n    this.finalizeState(this.context);\n\n    for (const extension of this.props.extensions) {\n      extension.finalizeState.call(this, extension);\n    }\n  }\n\n  _drawLayer({\n    moduleParameters = null,\n    uniforms = {},\n    parameters = {}\n  }) {\n    this._updateAttributeTransition();\n\n    const currentProps = this.props;\n    const context = this.context;\n    this.props = this.internalState.propsInTransition || currentProps;\n    const opacity = this.props.opacity;\n    uniforms.opacity = Math.pow(opacity, 1 / 2.2);\n\n    try {\n      if (moduleParameters) {\n        this.setModuleParameters(moduleParameters);\n      }\n\n      const {\n        getPolygonOffset\n      } = this.props;\n      const offsets = getPolygonOffset && getPolygonOffset(uniforms) || [0, 0];\n      (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_16__.setParameters)(context.gl, {\n        polygonOffset: offsets\n      });\n      (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_16__.withParameters)(context.gl, parameters, () => {\n        const opts = {\n          moduleParameters,\n          uniforms,\n          parameters,\n          context\n        };\n\n        for (const extension of this.props.extensions) {\n          extension.draw.call(this, opts, extension);\n        }\n\n        this.draw(opts);\n      });\n    } finally {\n      this.props = currentProps;\n    }\n  }\n\n  getChangeFlags() {\n    var _this$internalState2;\n\n    return (_this$internalState2 = this.internalState) === null || _this$internalState2 === void 0 ? void 0 : _this$internalState2.changeFlags;\n  }\n\n  setChangeFlags(flags) {\n    if (!this.internalState) {\n      return;\n    }\n\n    const {\n      changeFlags\n    } = this.internalState;\n\n    for (const key in flags) {\n      if (flags[key]) {\n        let flagChanged = false;\n\n        switch (key) {\n          case 'dataChanged':\n            const dataChangedReason = flags[key];\n            const prevDataChangedReason = changeFlags[key];\n\n            if (dataChangedReason && Array.isArray(prevDataChangedReason)) {\n              changeFlags.dataChanged = Array.isArray(dataChangedReason) ? prevDataChangedReason.concat(dataChangedReason) : dataChangedReason;\n              flagChanged = true;\n            }\n\n          default:\n            if (!changeFlags[key]) {\n              changeFlags[key] = flags[key];\n              flagChanged = true;\n            }\n\n        }\n\n        if (flagChanged) {\n          (0,_debug__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(TRACE_CHANGE_FLAG, this, key, flags);\n        }\n      }\n    }\n\n    const propsOrDataChanged = Boolean(changeFlags.dataChanged || changeFlags.updateTriggersChanged || changeFlags.propsChanged || changeFlags.extensionsChanged);\n    changeFlags.propsOrDataChanged = propsOrDataChanged;\n    changeFlags.somethingChanged = propsOrDataChanged || changeFlags.viewportChanged || changeFlags.stateChanged;\n  }\n\n  _clearChangeFlags() {\n    this.internalState.changeFlags = {\n      dataChanged: false,\n      propsChanged: false,\n      updateTriggersChanged: false,\n      viewportChanged: false,\n      stateChanged: false,\n      extensionsChanged: false,\n      propsOrDataChanged: false,\n      somethingChanged: false\n    };\n  }\n\n  _diffProps(newProps, oldProps) {\n    const changeFlags = (0,_lifecycle_props__WEBPACK_IMPORTED_MODULE_17__.diffProps)(newProps, oldProps);\n\n    if (changeFlags.updateTriggersChanged) {\n      for (const key in changeFlags.updateTriggersChanged) {\n        if (changeFlags.updateTriggersChanged[key]) {\n          this.invalidateAttribute(key);\n        }\n      }\n    }\n\n    if (changeFlags.transitionsChanged) {\n      for (const key in changeFlags.transitionsChanged) {\n        var _newProps$transitions;\n\n        this.internalState.uniformTransitions.add(key, oldProps[key], newProps[key], (_newProps$transitions = newProps.transitions) === null || _newProps$transitions === void 0 ? void 0 : _newProps$transitions[key]);\n      }\n    }\n\n    return this.setChangeFlags(changeFlags);\n  }\n\n  validateProps() {\n    (0,_lifecycle_props__WEBPACK_IMPORTED_MODULE_17__.validateProps)(this.props);\n  }\n\n  updateAutoHighlight(info) {\n    if (this.props.autoHighlight && !Number.isInteger(this.props.highlightedObjectIndex)) {\n      this._updateAutoHighlight(info);\n    }\n  }\n\n  _updateAutoHighlight(info) {\n    const pickingModuleParameters = {\n      pickingSelectedColor: info.picked ? info.color : null\n    };\n    const {\n      highlightColor\n    } = this.props;\n\n    if (info.picked && typeof highlightColor === 'function') {\n      pickingModuleParameters.pickingHighlightColor = highlightColor(info);\n    }\n\n    this.setModuleParameters(pickingModuleParameters);\n    this.setNeedsRedraw();\n  }\n\n  _getAttributeManager() {\n    const context = this.context;\n    return new _attribute_attribute_manager__WEBPACK_IMPORTED_MODULE_18__[\"default\"](context.gl, {\n      id: this.props.id,\n      stats: context.stats,\n      timeline: context.timeline\n    });\n  }\n\n  _postUpdate(updateParams, forceUpdate) {\n    const {\n      props,\n      oldProps\n    } = updateParams;\n    this.setNeedsRedraw();\n\n    this._updateAttributes();\n\n    const {\n      model\n    } = this.state;\n    model === null || model === void 0 ? void 0 : model.setInstanceCount(this.getNumInstances());\n    const {\n      autoHighlight,\n      highlightedObjectIndex,\n      highlightColor\n    } = props;\n\n    if (forceUpdate || oldProps.autoHighlight !== autoHighlight || oldProps.highlightedObjectIndex !== highlightedObjectIndex || oldProps.highlightColor !== highlightColor) {\n      const parameters = {};\n\n      if (!autoHighlight) {\n        parameters.pickingSelectedColor = null;\n      }\n\n      if (Array.isArray(highlightColor)) {\n        parameters.pickingHighlightColor = highlightColor;\n      }\n\n      if (forceUpdate || highlightedObjectIndex !== oldProps.highlightedObjectIndex) {\n        parameters.pickingSelectedColor = Number.isFinite(highlightedObjectIndex) && highlightedObjectIndex >= 0 ? this.encodePickingColor(highlightedObjectIndex) : null;\n      }\n\n      this.setModuleParameters(parameters);\n    }\n  }\n\n  _getUpdateParams() {\n    return {\n      props: this.props,\n      oldProps: this.internalState.getOldProps(),\n      context: this.context,\n      changeFlags: this.internalState.changeFlags\n    };\n  }\n\n  _getNeedsRedraw(opts) {\n    if (!this.internalState) {\n      return false;\n    }\n\n    let redraw = false;\n    redraw = redraw || this.internalState.needsRedraw && this.id;\n    this.internalState.needsRedraw = this.internalState.needsRedraw && !opts.clearRedrawFlags;\n    const attributeManager = this.getAttributeManager();\n    const attributeManagerNeedsRedraw = attributeManager ? attributeManager.getNeedsRedraw(opts) : false;\n    redraw = redraw || attributeManagerNeedsRedraw;\n    return redraw;\n  }\n\n  _onAsyncPropUpdated() {\n    this._diffProps(this.props, this.internalState.getOldProps());\n\n    this.setNeedsUpdate();\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Layer, \"defaultProps\", defaultProps);\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Layer, \"layerName\", 'Layer');\n//# sourceMappingURL=layer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/layer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/picking/pick-info.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/picking/pick-info.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getEmptyPickingInfo\": function() { return /* binding */ getEmptyPickingInfo; },\n/* harmony export */   \"getLayerPickingInfo\": function() { return /* binding */ getLayerPickingInfo; },\n/* harmony export */   \"processPickInfo\": function() { return /* binding */ processPickInfo; }\n/* harmony export */ });\nfunction getEmptyPickingInfo({\n  pickInfo,\n  viewports,\n  pixelRatio,\n  x,\n  y,\n  z\n}) {\n  let pickedViewport = viewports[0];\n\n  if (viewports.length > 1) {\n    pickedViewport = getViewportFromCoordinates((pickInfo === null || pickInfo === void 0 ? void 0 : pickInfo.pickedViewports) || viewports, {\n      x,\n      y\n    });\n  }\n\n  let coordinate;\n\n  if (pickedViewport) {\n    const point = [x - pickedViewport.x, y - pickedViewport.y];\n\n    if (z !== undefined) {\n      point[2] = z;\n    }\n\n    coordinate = pickedViewport.unproject(point);\n  }\n\n  return {\n    color: null,\n    layer: null,\n    viewport: pickedViewport,\n    index: -1,\n    picked: false,\n    x,\n    y,\n    pixel: [x, y],\n    coordinate,\n    devicePixel: pickInfo && 'pickedX' in pickInfo ? [pickInfo.pickedX, pickInfo.pickedY] : undefined,\n    pixelRatio\n  };\n}\nfunction processPickInfo(opts) {\n  const {\n    pickInfo,\n    lastPickedInfo,\n    mode,\n    layers\n  } = opts;\n  const {\n    pickedColor,\n    pickedLayer,\n    pickedObjectIndex\n  } = pickInfo;\n  const affectedLayers = pickedLayer ? [pickedLayer] : [];\n\n  if (mode === 'hover') {\n    const lastPickedPixelIndex = lastPickedInfo.index;\n    const lastPickedLayerId = lastPickedInfo.layerId;\n    const pickedLayerId = pickedLayer ? pickedLayer.props.id : null;\n\n    if (pickedLayerId !== lastPickedLayerId || pickedObjectIndex !== lastPickedPixelIndex) {\n      if (pickedLayerId !== lastPickedLayerId) {\n        const lastPickedLayer = layers.find(layer => layer.props.id === lastPickedLayerId);\n\n        if (lastPickedLayer) {\n          affectedLayers.unshift(lastPickedLayer);\n        }\n      }\n\n      lastPickedInfo.layerId = pickedLayerId;\n      lastPickedInfo.index = pickedObjectIndex;\n      lastPickedInfo.info = null;\n    }\n  }\n\n  const baseInfo = getEmptyPickingInfo(opts);\n  const infos = new Map();\n  infos.set(null, baseInfo);\n  affectedLayers.forEach(layer => {\n    let info = { ...baseInfo\n    };\n\n    if (layer === pickedLayer) {\n      info.color = pickedColor;\n      info.index = pickedObjectIndex;\n      info.picked = true;\n    }\n\n    info = getLayerPickingInfo({\n      layer,\n      info,\n      mode\n    });\n    const rootLayer = info.layer;\n\n    if (layer === pickedLayer && mode === 'hover') {\n      lastPickedInfo.info = info;\n    }\n\n    infos.set(rootLayer.id, info);\n\n    if (mode === 'hover') {\n      rootLayer.updateAutoHighlight(info);\n    }\n  });\n  return infos;\n}\nfunction getLayerPickingInfo({\n  layer,\n  info,\n  mode\n}) {\n  while (layer && info) {\n    const sourceLayer = info.layer || null;\n    info.sourceLayer = sourceLayer;\n    info.layer = layer;\n    info = layer.getPickingInfo({\n      info,\n      mode,\n      sourceLayer\n    });\n    layer = layer.parent;\n  }\n\n  return info;\n}\n\nfunction getViewportFromCoordinates(viewports, pixel) {\n  for (let i = viewports.length - 1; i >= 0; i--) {\n    const viewport = viewports[i];\n\n    if (viewport.containsPixel(pixel)) {\n      return viewport;\n    }\n  }\n\n  return viewports[0];\n}\n//# sourceMappingURL=pick-info.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/picking/pick-info.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/picking/query-object.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/picking/query-object.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getClosestObject\": function() { return /* binding */ getClosestObject; },\n/* harmony export */   \"getUniqueObjects\": function() { return /* binding */ getUniqueObjects; }\n/* harmony export */ });\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/log */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n\nconst NO_PICKED_OBJECT = {\n  pickedColor: null,\n  pickedObjectIndex: -1\n};\nfunction getClosestObject({\n  pickedColors,\n  decodePickingColor,\n  deviceX,\n  deviceY,\n  deviceRadius,\n  deviceRect\n}) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = deviceRect;\n  let minSquareDistanceToCenter = deviceRadius * deviceRadius;\n  let closestPixelIndex = -1;\n  let i = 0;\n\n  for (let row = 0; row < height; row++) {\n    const dy = row + y - deviceY;\n    const dy2 = dy * dy;\n\n    if (dy2 > minSquareDistanceToCenter) {\n      i += 4 * width;\n    } else {\n      for (let col = 0; col < width; col++) {\n        const pickedLayerIndex = pickedColors[i + 3] - 1;\n\n        if (pickedLayerIndex >= 0) {\n          const dx = col + x - deviceX;\n          const d2 = dx * dx + dy2;\n\n          if (d2 <= minSquareDistanceToCenter) {\n            minSquareDistanceToCenter = d2;\n            closestPixelIndex = i;\n          }\n        }\n\n        i += 4;\n      }\n    }\n  }\n\n  if (closestPixelIndex >= 0) {\n    const pickedColor = pickedColors.slice(closestPixelIndex, closestPixelIndex + 4);\n    const pickedObject = decodePickingColor(pickedColor);\n\n    if (pickedObject) {\n      const dy = Math.floor(closestPixelIndex / 4 / width);\n      const dx = closestPixelIndex / 4 - dy * width;\n      return { ...pickedObject,\n        pickedColor,\n        pickedX: x + dx,\n        pickedY: y + dy\n      };\n    }\n\n    _utils_log__WEBPACK_IMPORTED_MODULE_0__[\"default\"].error('Picked non-existent layer. Is picking buffer corrupt?')();\n  }\n\n  return NO_PICKED_OBJECT;\n}\nfunction getUniqueObjects({\n  pickedColors,\n  decodePickingColor\n}) {\n  const uniqueColors = new Map();\n\n  if (pickedColors) {\n    for (let i = 0; i < pickedColors.length; i += 4) {\n      const pickedLayerIndex = pickedColors[i + 3] - 1;\n\n      if (pickedLayerIndex >= 0) {\n        const pickedColor = pickedColors.slice(i, i + 4);\n        const colorKey = pickedColor.join(',');\n\n        if (!uniqueColors.has(colorKey)) {\n          const pickedObject = decodePickingColor(pickedColor);\n\n          if (pickedObject) {\n            uniqueColors.set(colorKey, { ...pickedObject,\n              color: pickedColor\n            });\n          } else {\n            _utils_log__WEBPACK_IMPORTED_MODULE_0__[\"default\"].error('Picked non-existent layer. Is picking buffer corrupt?')();\n          }\n        }\n      }\n    }\n  }\n\n  return Array.from(uniqueColors.values());\n}\n//# sourceMappingURL=query-object.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/picking/query-object.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/resource/resource-manager.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/resource/resource-manager.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ResourceManager; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _resource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resource */ \"./node_modules/@deck.gl/core/dist/esm/lib/resource/resource.js\");\n\n\nclass ResourceManager {\n  constructor({\n    gl,\n    protocol\n  }) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"protocol\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_context\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_resources\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_consumers\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_pruneRequest\", void 0);\n\n    this.protocol = protocol || 'resource://';\n    this._context = {\n      gl,\n      resourceManager: this\n    };\n    this._resources = {};\n    this._consumers = {};\n    this._pruneRequest = null;\n  }\n\n  contains(resourceId) {\n    if (resourceId.startsWith(this.protocol)) {\n      return true;\n    }\n\n    return resourceId in this._resources;\n  }\n\n  add({\n    resourceId,\n    data,\n    forceUpdate = false,\n    persistent = true\n  }) {\n    let res = this._resources[resourceId];\n\n    if (res) {\n      res.setData(data, forceUpdate);\n    } else {\n      res = new _resource__WEBPACK_IMPORTED_MODULE_1__[\"default\"](resourceId, data, this._context);\n      this._resources[resourceId] = res;\n    }\n\n    res.persistent = persistent;\n  }\n\n  remove(resourceId) {\n    const res = this._resources[resourceId];\n\n    if (res) {\n      res.delete();\n      delete this._resources[resourceId];\n    }\n  }\n\n  unsubscribe({\n    consumerId\n  }) {\n    const consumer = this._consumers[consumerId];\n\n    if (consumer) {\n      for (const requestId in consumer) {\n        const request = consumer[requestId];\n        const resource = this._resources[request.resourceId];\n\n        if (resource) {\n          resource.unsubscribe(request);\n        }\n      }\n\n      delete this._consumers[consumerId];\n      this.prune();\n    }\n  }\n\n  subscribe({\n    resourceId,\n    onChange,\n    consumerId,\n    requestId = 'default'\n  }) {\n    const {\n      _resources: resources,\n      protocol\n    } = this;\n\n    if (resourceId.startsWith(protocol)) {\n      resourceId = resourceId.replace(protocol, '');\n\n      if (!resources[resourceId]) {\n        this.add({\n          resourceId,\n          data: null,\n          persistent: false\n        });\n      }\n    }\n\n    const res = resources[resourceId];\n\n    this._track(consumerId, requestId, res, onChange);\n\n    if (res) {\n      return res.getData();\n    }\n\n    return undefined;\n  }\n\n  prune() {\n    if (!this._pruneRequest) {\n      this._pruneRequest = setTimeout(() => this._prune(), 0);\n    }\n  }\n\n  finalize() {\n    for (const key in this._resources) {\n      this._resources[key].delete();\n    }\n  }\n\n  _track(consumerId, requestId, resource, onChange) {\n    const consumers = this._consumers;\n    const consumer = consumers[consumerId] = consumers[consumerId] || {};\n    const request = consumer[requestId] || {};\n    const oldResource = request.resourceId && this._resources[request.resourceId];\n\n    if (oldResource) {\n      oldResource.unsubscribe(request);\n      this.prune();\n    }\n\n    if (resource) {\n      consumer[requestId] = request;\n      request.onChange = onChange;\n      request.resourceId = resource.id;\n      resource.subscribe(request);\n    }\n  }\n\n  _prune() {\n    this._pruneRequest = null;\n\n    for (const key of Object.keys(this._resources)) {\n      const res = this._resources[key];\n\n      if (!res.persistent && !res.inUse()) {\n        res.delete();\n        delete this._resources[key];\n      }\n    }\n  }\n\n}\n//# sourceMappingURL=resource-manager.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/resource/resource-manager.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/resource/resource.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/resource/resource.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Resource; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _loaders_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @loaders.gl/core */ \"./node_modules/@loaders.gl/core/dist/esm/lib/api/load.js\");\n\n\nclass Resource {\n  constructor(id, data, context) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"id\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"context\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"isLoaded\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"persistent\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_loadCount\", 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_subscribers\", new Set());\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_data\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_loader\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_error\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_content\", void 0);\n\n    this.id = id;\n    this.context = context;\n    this.setData(data);\n  }\n\n  subscribe(consumer) {\n    this._subscribers.add(consumer);\n  }\n\n  unsubscribe(consumer) {\n    this._subscribers.delete(consumer);\n  }\n\n  inUse() {\n    return this._subscribers.size > 0;\n  }\n\n  delete() {}\n\n  getData() {\n    return this.isLoaded ? this._error ? Promise.reject(this._error) : this._content : this._loader.then(() => this.getData());\n  }\n\n  setData(data, forceUpdate) {\n    if (data === this._data && !forceUpdate) {\n      return;\n    }\n\n    this._data = data;\n    const loadCount = ++this._loadCount;\n    let loader = data;\n\n    if (typeof data === 'string') {\n      loader = (0,_loaders_gl_core__WEBPACK_IMPORTED_MODULE_1__.load)(data);\n    }\n\n    if (loader instanceof Promise) {\n      this.isLoaded = false;\n      this._loader = loader.then(result => {\n        if (this._loadCount === loadCount) {\n          this.isLoaded = true;\n          this._error = undefined;\n          this._content = result;\n        }\n      }).catch(error => {\n        if (this._loadCount === loadCount) {\n          this.isLoaded = true;\n          this._error = error || true;\n        }\n      });\n    } else {\n      this.isLoaded = true;\n      this._error = undefined;\n      this._content = data;\n    }\n\n    for (const subscriber of this._subscribers) {\n      subscriber.onChange(this.getData());\n    }\n  }\n\n}\n//# sourceMappingURL=resource.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/resource/resource.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/tooltip.js":
/*!************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/tooltip.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Tooltip; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\nconst defaultStyle = {\n  zIndex: '1',\n  position: 'absolute',\n  pointerEvents: 'none',\n  color: '#a0a7b4',\n  backgroundColor: '#29323c',\n  padding: '10px',\n  top: '0',\n  left: '0',\n  display: 'none'\n};\nclass Tooltip {\n  constructor(canvas) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"el\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"isVisible\", false);\n\n    const canvasParent = canvas.parentElement;\n\n    if (canvasParent) {\n      this.el = document.createElement('div');\n      this.el.className = 'deck-tooltip';\n      Object.assign(this.el.style, defaultStyle);\n      canvasParent.appendChild(this.el);\n    }\n  }\n\n  setTooltip(displayInfo, x, y) {\n    const el = this.el;\n\n    if (!el) {\n      return;\n    }\n\n    if (typeof displayInfo === 'string') {\n      el.innerText = displayInfo;\n    } else if (!displayInfo) {\n      this.isVisible = false;\n      el.style.display = 'none';\n      return;\n    } else {\n      if (displayInfo.text) {\n        el.innerText = displayInfo.text;\n      }\n\n      if (displayInfo.html) {\n        el.innerHTML = displayInfo.html;\n      }\n\n      if (displayInfo.className) {\n        el.className = displayInfo.className;\n      }\n\n      Object.assign(el.style, displayInfo.style);\n    }\n\n    this.isVisible = true;\n    el.style.display = 'block';\n    el.style.transform = \"translate(\".concat(x, \"px, \").concat(y, \"px)\");\n  }\n\n  remove() {\n    if (this.el) {\n      this.el.remove();\n      this.el = null;\n    }\n  }\n\n}\n//# sourceMappingURL=tooltip.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/tooltip.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/uniform-transition-manager.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/uniform-transition-manager.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ UniformTransitionManager; }\n/* harmony export */ });\n/* harmony import */ var _attribute_attribute_transition_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./attribute/attribute-transition-utils */ \"./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-transition-utils.js\");\n/* harmony import */ var _transitions_cpu_interpolation_transition__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../transitions/cpu-interpolation-transition */ \"./node_modules/@deck.gl/core/dist/esm/transitions/cpu-interpolation-transition.js\");\n/* harmony import */ var _transitions_cpu_spring_transition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../transitions/cpu-spring-transition */ \"./node_modules/@deck.gl/core/dist/esm/transitions/cpu-spring-transition.js\");\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/log */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n\n\n\n\nconst TRANSITION_TYPES = {\n  interpolation: _transitions_cpu_interpolation_transition__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  spring: _transitions_cpu_spring_transition__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n};\nclass UniformTransitionManager {\n  constructor(timeline) {\n    this.transitions = new Map();\n    this.timeline = timeline;\n  }\n\n  get active() {\n    return this.transitions.size > 0;\n  }\n\n  add(key, fromValue, toValue, settings) {\n    const {\n      transitions\n    } = this;\n\n    if (transitions.has(key)) {\n      const transition = transitions.get(key);\n      const {\n        value = transition.settings.fromValue\n      } = transition;\n      fromValue = value;\n      this.remove(key);\n    }\n\n    settings = (0,_attribute_attribute_transition_utils__WEBPACK_IMPORTED_MODULE_2__.normalizeTransitionSettings)(settings);\n\n    if (!settings) {\n      return;\n    }\n\n    const TransitionType = TRANSITION_TYPES[settings.type];\n\n    if (!TransitionType) {\n      _utils_log__WEBPACK_IMPORTED_MODULE_3__[\"default\"].error(\"unsupported transition type '\".concat(settings.type, \"'\"))();\n      return;\n    }\n\n    const transition = new TransitionType(this.timeline);\n    transition.start({ ...settings,\n      fromValue,\n      toValue\n    });\n    transitions.set(key, transition);\n  }\n\n  remove(key) {\n    const {\n      transitions\n    } = this;\n\n    if (transitions.has(key)) {\n      transitions.get(key).cancel();\n      transitions.delete(key);\n    }\n  }\n\n  update() {\n    const propsInTransition = {};\n\n    for (const [key, transition] of this.transitions) {\n      transition.update();\n      propsInTransition[key] = transition.value;\n\n      if (!transition.inProgress) {\n        this.remove(key);\n      }\n    }\n\n    return propsInTransition;\n  }\n\n  clear() {\n    for (const key of this.transitions.keys()) {\n      this.remove(key);\n    }\n  }\n\n}\n//# sourceMappingURL=uniform-transition-manager.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/uniform-transition-manager.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lib/view-manager.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lib/view-manager.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ViewManager; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _utils_deep_equal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/deep-equal */ \"./node_modules/@deck.gl/core/dist/esm/utils/deep-equal.js\");\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/log */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n/* harmony import */ var _utils_flatten__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/flatten */ \"./node_modules/@deck.gl/core/dist/esm/utils/flatten.js\");\n\n\n\n\nclass ViewManager {\n  constructor(props) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"width\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"height\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"views\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"viewState\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"controllers\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"timeline\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_viewports\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_viewportMap\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_isUpdating\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_needsRedraw\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_needsUpdate\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_eventManager\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_eventCallbacks\", void 0);\n\n    this.views = [];\n    this.width = 100;\n    this.height = 100;\n    this.viewState = {};\n    this.controllers = {};\n    this.timeline = props.timeline;\n    this._viewports = [];\n    this._viewportMap = {};\n    this._isUpdating = false;\n    this._needsRedraw = 'First render';\n    this._needsUpdate = 'Initialize';\n    this._eventManager = props.eventManager;\n    this._eventCallbacks = {\n      onViewStateChange: props.onViewStateChange,\n      onInteractionStateChange: props.onInteractionStateChange\n    };\n    Object.seal(this);\n    this.setProps(props);\n  }\n\n  finalize() {\n    for (const key in this.controllers) {\n      const controller = this.controllers[key];\n\n      if (controller) {\n        controller.finalize();\n      }\n    }\n\n    this.controllers = {};\n  }\n\n  needsRedraw(opts = {\n    clearRedrawFlags: false\n  }) {\n    const redraw = this._needsRedraw;\n\n    if (opts.clearRedrawFlags) {\n      this._needsRedraw = false;\n    }\n\n    return redraw;\n  }\n\n  setNeedsUpdate(reason) {\n    this._needsUpdate = this._needsUpdate || reason;\n    this._needsRedraw = this._needsRedraw || reason;\n  }\n\n  updateViewStates() {\n    for (const viewId in this.controllers) {\n      const controller = this.controllers[viewId];\n\n      if (controller) {\n        controller.updateTransition();\n      }\n    }\n  }\n\n  getViewports(rect) {\n    if (rect) {\n      return this._viewports.filter(viewport => viewport.containsPixel(rect));\n    }\n\n    return this._viewports;\n  }\n\n  getViews() {\n    const viewMap = {};\n    this.views.forEach(view => {\n      viewMap[view.id] = view;\n    });\n    return viewMap;\n  }\n\n  getView(viewId) {\n    return this.views.find(view => view.id === viewId);\n  }\n\n  getViewState(viewOrViewId) {\n    const view = typeof viewOrViewId === 'string' ? this.getView(viewOrViewId) : viewOrViewId;\n    const viewState = view && this.viewState[view.getViewStateId()] || this.viewState;\n    return view ? view.filterViewState(viewState) : viewState;\n  }\n\n  getViewport(viewId) {\n    return this._viewportMap[viewId];\n  }\n\n  unproject(xyz, opts) {\n    const viewports = this.getViewports();\n    const pixel = {\n      x: xyz[0],\n      y: xyz[1]\n    };\n\n    for (let i = viewports.length - 1; i >= 0; --i) {\n      const viewport = viewports[i];\n\n      if (viewport.containsPixel(pixel)) {\n        const p = xyz.slice();\n        p[0] -= viewport.x;\n        p[1] -= viewport.y;\n        return viewport.unproject(p, opts);\n      }\n    }\n\n    return null;\n  }\n\n  setProps(props) {\n    if (props.views) {\n      this._setViews(props.views);\n    }\n\n    if (props.viewState) {\n      this._setViewState(props.viewState);\n    }\n\n    if ('width' in props || 'height' in props) {\n      this._setSize(props.width, props.height);\n    }\n\n    if (!this._isUpdating) {\n      this._update();\n    }\n  }\n\n  _update() {\n    this._isUpdating = true;\n\n    if (this._needsUpdate) {\n      this._needsUpdate = false;\n\n      this._rebuildViewports();\n    }\n\n    if (this._needsUpdate) {\n      this._needsUpdate = false;\n\n      this._rebuildViewports();\n    }\n\n    this._isUpdating = false;\n  }\n\n  _setSize(width, height) {\n    if (width !== this.width || height !== this.height) {\n      this.width = width;\n      this.height = height;\n      this.setNeedsUpdate('Size changed');\n    }\n  }\n\n  _setViews(views) {\n    views = (0,_utils_flatten__WEBPACK_IMPORTED_MODULE_1__.flatten)(views, Boolean);\n\n    const viewsChanged = this._diffViews(views, this.views);\n\n    if (viewsChanged) {\n      this.setNeedsUpdate('views changed');\n    }\n\n    this.views = views;\n  }\n\n  _setViewState(viewState) {\n    if (viewState) {\n      const viewStateChanged = !(0,_utils_deep_equal__WEBPACK_IMPORTED_MODULE_2__.deepEqual)(viewState, this.viewState);\n\n      if (viewStateChanged) {\n        this.setNeedsUpdate('viewState changed');\n      }\n\n      this.viewState = viewState;\n    } else {\n      _utils_log__WEBPACK_IMPORTED_MODULE_3__[\"default\"].warn('missing `viewState` or `initialViewState`')();\n    }\n  }\n\n  _onViewStateChange(viewId, event) {\n    if (this._eventCallbacks.onViewStateChange) {\n      this._eventCallbacks.onViewStateChange({ ...event,\n        viewId\n      });\n    }\n  }\n\n  _createController(view, props) {\n    const Controller = props.type;\n    const controller = new Controller({\n      timeline: this.timeline,\n      eventManager: this._eventManager,\n      onViewStateChange: this._onViewStateChange.bind(this, props.id),\n      onStateChange: this._eventCallbacks.onInteractionStateChange,\n      makeViewport: viewState => {\n        var _this$getView;\n\n        return (_this$getView = this.getView(view.id)) === null || _this$getView === void 0 ? void 0 : _this$getView.makeViewport({\n          viewState,\n          width: this.width,\n          height: this.height\n        });\n      }\n    });\n    return controller;\n  }\n\n  _updateController(view, viewState, viewport, controller) {\n    const controllerProps = view.controller;\n\n    if (controllerProps) {\n      const resolvedProps = { ...viewState,\n        ...controllerProps,\n        id: view.id,\n        x: viewport.x,\n        y: viewport.y,\n        width: viewport.width,\n        height: viewport.height\n      };\n\n      if (!controller) {\n        controller = this._createController(view, resolvedProps);\n      }\n\n      if (controller) {\n        controller.setProps(resolvedProps);\n      }\n\n      return controller;\n    }\n\n    return null;\n  }\n\n  _rebuildViewports() {\n    const {\n      views\n    } = this;\n    const oldControllers = this.controllers;\n    this._viewports = [];\n    this.controllers = {};\n    let invalidateControllers = false;\n\n    for (let i = views.length; i--;) {\n      const view = views[i];\n      const viewState = this.getViewState(view);\n      const viewport = view.makeViewport({\n        viewState,\n        width: this.width,\n        height: this.height\n      });\n      let oldController = oldControllers[view.id];\n      const hasController = Boolean(view.controller);\n\n      if (hasController && !oldController) {\n        invalidateControllers = true;\n      }\n\n      if ((invalidateControllers || !hasController) && oldController) {\n        oldController.finalize();\n        oldController = null;\n      }\n\n      this.controllers[view.id] = this._updateController(view, viewState, viewport, oldController);\n\n      this._viewports.unshift(viewport);\n    }\n\n    for (const id in oldControllers) {\n      const oldController = oldControllers[id];\n\n      if (oldController && !this.controllers[id]) {\n        oldController.finalize();\n      }\n    }\n\n    this._buildViewportMap();\n  }\n\n  _buildViewportMap() {\n    this._viewportMap = {};\n\n    this._viewports.forEach(viewport => {\n      if (viewport.id) {\n        this._viewportMap[viewport.id] = this._viewportMap[viewport.id] || viewport;\n      }\n    });\n  }\n\n  _diffViews(newViews, oldViews) {\n    if (newViews.length !== oldViews.length) {\n      return true;\n    }\n\n    return newViews.some((_, i) => !newViews[i].equals(oldViews[i]));\n  }\n\n}\n//# sourceMappingURL=view-manager.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lib/view-manager.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lifecycle/component-state.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lifecycle/component-state.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ComponentState; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _utils_iterable_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/iterable-utils */ \"./node_modules/@deck.gl/core/dist/esm/utils/iterable-utils.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ \"./node_modules/@deck.gl/core/dist/esm/lifecycle/constants.js\");\n\n\n\nconst EMPTY_PROPS = Object.freeze({});\nclass ComponentState {\n  constructor(component) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"component\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"onAsyncPropUpdated\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"asyncProps\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"oldProps\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"oldAsyncProps\", void 0);\n\n    this.component = component;\n    this.asyncProps = {};\n\n    this.onAsyncPropUpdated = () => {};\n\n    this.oldProps = null;\n    this.oldAsyncProps = null;\n  }\n\n  finalize() {\n    for (const propName in this.asyncProps) {\n      const asyncProp = this.asyncProps[propName];\n\n      if (asyncProp && asyncProp.type && asyncProp.type.release) {\n        asyncProp.type.release(asyncProp.resolvedValue, asyncProp.type, this.component);\n      }\n    }\n  }\n\n  getOldProps() {\n    return this.oldAsyncProps || this.oldProps || EMPTY_PROPS;\n  }\n\n  resetOldProps() {\n    this.oldAsyncProps = null;\n    this.oldProps = this.component.props;\n  }\n\n  hasAsyncProp(propName) {\n    return propName in this.asyncProps;\n  }\n\n  getAsyncProp(propName) {\n    const asyncProp = this.asyncProps[propName];\n    return asyncProp && asyncProp.resolvedValue;\n  }\n\n  isAsyncPropLoading(propName) {\n    if (propName) {\n      const asyncProp = this.asyncProps[propName];\n      return Boolean(asyncProp && asyncProp.pendingLoadCount > 0 && asyncProp.pendingLoadCount !== asyncProp.resolvedLoadCount);\n    }\n\n    for (const key in this.asyncProps) {\n      if (this.isAsyncPropLoading(key)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  reloadAsyncProp(propName, value) {\n    this._watchPromise(propName, Promise.resolve(value));\n  }\n\n  setAsyncProps(props) {\n    const resolvedValues = props[_constants__WEBPACK_IMPORTED_MODULE_1__.ASYNC_RESOLVED_SYMBOL] || {};\n    const originalValues = props[_constants__WEBPACK_IMPORTED_MODULE_1__.ASYNC_ORIGINAL_SYMBOL] || props;\n    const defaultValues = props[_constants__WEBPACK_IMPORTED_MODULE_1__.ASYNC_DEFAULTS_SYMBOL] || {};\n\n    for (const propName in resolvedValues) {\n      const value = resolvedValues[propName];\n\n      this._createAsyncPropData(propName, defaultValues[propName]);\n\n      this._updateAsyncProp(propName, value);\n\n      resolvedValues[propName] = this.getAsyncProp(propName);\n    }\n\n    for (const propName in originalValues) {\n      const value = originalValues[propName];\n\n      this._createAsyncPropData(propName, defaultValues[propName]);\n\n      this._updateAsyncProp(propName, value);\n    }\n  }\n\n  _fetch(propName, url) {\n    return null;\n  }\n\n  _onResolve(propName, value) {}\n\n  _onError(propName, error) {}\n\n  _updateAsyncProp(propName, value) {\n    if (!this._didAsyncInputValueChange(propName, value)) {\n      return;\n    }\n\n    if (typeof value === 'string') {\n      value = this._fetch(propName, value);\n    }\n\n    if (value instanceof Promise) {\n      this._watchPromise(propName, value);\n\n      return;\n    }\n\n    if ((0,_utils_iterable_utils__WEBPACK_IMPORTED_MODULE_2__.isAsyncIterable)(value)) {\n      this._resolveAsyncIterable(propName, value);\n\n      return;\n    }\n\n    this._setPropValue(propName, value);\n  }\n\n  _freezeAsyncOldProps() {\n    if (!this.oldAsyncProps && this.oldProps) {\n      this.oldAsyncProps = Object.create(this.oldProps);\n\n      for (const propName in this.asyncProps) {\n        Object.defineProperty(this.oldAsyncProps, propName, {\n          enumerable: true,\n          value: this.oldProps[propName]\n        });\n      }\n    }\n  }\n\n  _didAsyncInputValueChange(propName, value) {\n    const asyncProp = this.asyncProps[propName];\n\n    if (value === asyncProp.resolvedValue || value === asyncProp.lastValue) {\n      return false;\n    }\n\n    asyncProp.lastValue = value;\n    return true;\n  }\n\n  _setPropValue(propName, value) {\n    this._freezeAsyncOldProps();\n\n    const asyncProp = this.asyncProps[propName];\n\n    if (asyncProp) {\n      value = this._postProcessValue(asyncProp, value);\n      asyncProp.resolvedValue = value;\n      asyncProp.pendingLoadCount++;\n      asyncProp.resolvedLoadCount = asyncProp.pendingLoadCount;\n    }\n  }\n\n  _setAsyncPropValue(propName, value, loadCount) {\n    const asyncProp = this.asyncProps[propName];\n\n    if (asyncProp && loadCount >= asyncProp.resolvedLoadCount && value !== undefined) {\n      this._freezeAsyncOldProps();\n\n      asyncProp.resolvedValue = value;\n      asyncProp.resolvedLoadCount = loadCount;\n      this.onAsyncPropUpdated(propName, value);\n    }\n  }\n\n  _watchPromise(propName, promise) {\n    const asyncProp = this.asyncProps[propName];\n\n    if (asyncProp) {\n      asyncProp.pendingLoadCount++;\n      const loadCount = asyncProp.pendingLoadCount;\n      promise.then(data => {\n        data = this._postProcessValue(asyncProp, data);\n\n        this._setAsyncPropValue(propName, data, loadCount);\n\n        this._onResolve(propName, data);\n      }).catch(error => {\n        this._onError(propName, error);\n      });\n    }\n  }\n\n  async _resolveAsyncIterable(propName, iterable) {\n    if (propName !== 'data') {\n      this._setPropValue(propName, iterable);\n\n      return;\n    }\n\n    const asyncProp = this.asyncProps[propName];\n\n    if (!asyncProp) {\n      return;\n    }\n\n    asyncProp.pendingLoadCount++;\n    const loadCount = asyncProp.pendingLoadCount;\n    let data = [];\n    let count = 0;\n\n    for await (const chunk of iterable) {\n      const {\n        dataTransform\n      } = this.component.props;\n\n      if (dataTransform) {\n        data = dataTransform(chunk, data);\n      } else {\n        data = data.concat(chunk);\n      }\n\n      Object.defineProperty(data, '__diff', {\n        enumerable: false,\n        value: [{\n          startRow: count,\n          endRow: data.length\n        }]\n      });\n      count = data.length;\n\n      this._setAsyncPropValue(propName, data, loadCount);\n    }\n\n    this._onResolve(propName, data);\n  }\n\n  _postProcessValue(asyncProp, value) {\n    const propType = asyncProp.type;\n\n    if (propType) {\n      if (propType.release) {\n        propType.release(asyncProp.resolvedValue, propType, this.component);\n      }\n\n      if (propType.transform) {\n        return propType.transform(value, propType, this.component);\n      }\n    }\n\n    return value;\n  }\n\n  _createAsyncPropData(propName, defaultValue) {\n    const asyncProp = this.asyncProps[propName];\n\n    if (!asyncProp) {\n      const propTypes = this.component && this.component.constructor._propTypes;\n      this.asyncProps[propName] = {\n        type: propTypes && propTypes[propName],\n        lastValue: null,\n        resolvedValue: defaultValue,\n        pendingLoadCount: 0,\n        resolvedLoadCount: 0\n      };\n    }\n  }\n\n}\n//# sourceMappingURL=component-state.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lifecycle/component-state.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lifecycle/component.js":
/*!********************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lifecycle/component.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Component; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ \"./node_modules/@deck.gl/core/dist/esm/lifecycle/constants.js\");\n/* harmony import */ var _create_props__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./create-props */ \"./node_modules/@deck.gl/core/dist/esm/lifecycle/create-props.js\");\n\n\n\nlet counter = 0;\nclass Component {\n  constructor(...propObjects) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"id\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"props\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"count\", void 0);\n\n    this.props = (0,_create_props__WEBPACK_IMPORTED_MODULE_1__.createProps)(this, propObjects);\n    this.id = this.props.id;\n    this.count = counter++;\n  }\n\n  clone(newProps) {\n    const {\n      props\n    } = this;\n    const asyncProps = {};\n\n    for (const key in props[_constants__WEBPACK_IMPORTED_MODULE_2__.ASYNC_DEFAULTS_SYMBOL]) {\n      if (key in props[_constants__WEBPACK_IMPORTED_MODULE_2__.ASYNC_RESOLVED_SYMBOL]) {\n        asyncProps[key] = props[_constants__WEBPACK_IMPORTED_MODULE_2__.ASYNC_RESOLVED_SYMBOL][key];\n      } else if (key in props[_constants__WEBPACK_IMPORTED_MODULE_2__.ASYNC_ORIGINAL_SYMBOL]) {\n        asyncProps[key] = props[_constants__WEBPACK_IMPORTED_MODULE_2__.ASYNC_ORIGINAL_SYMBOL][key];\n      }\n    }\n\n    return new this.constructor({ ...props,\n      ...asyncProps,\n      ...newProps\n    });\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Component, \"componentName\", 'Component');\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Component, \"defaultProps\", {});\n//# sourceMappingURL=component.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lifecycle/component.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lifecycle/constants.js":
/*!********************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lifecycle/constants.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ASYNC_DEFAULTS_SYMBOL\": function() { return /* binding */ ASYNC_DEFAULTS_SYMBOL; },\n/* harmony export */   \"ASYNC_ORIGINAL_SYMBOL\": function() { return /* binding */ ASYNC_ORIGINAL_SYMBOL; },\n/* harmony export */   \"ASYNC_RESOLVED_SYMBOL\": function() { return /* binding */ ASYNC_RESOLVED_SYMBOL; },\n/* harmony export */   \"COMPONENT_SYMBOL\": function() { return /* binding */ COMPONENT_SYMBOL; },\n/* harmony export */   \"LIFECYCLE\": function() { return /* binding */ LIFECYCLE; }\n/* harmony export */ });\nconst LIFECYCLE = {\n  NO_STATE: 'Awaiting state',\n  MATCHED: 'Matched. State transferred from previous layer',\n  INITIALIZED: 'Initialized',\n  AWAITING_GC: 'Discarded. Awaiting garbage collection',\n  AWAITING_FINALIZATION: 'No longer matched. Awaiting garbage collection',\n  FINALIZED: 'Finalized! Awaiting garbage collection'\n};\nconst COMPONENT_SYMBOL = Symbol.for('component');\nconst ASYNC_DEFAULTS_SYMBOL = Symbol.for('asyncPropDefaults');\nconst ASYNC_ORIGINAL_SYMBOL = Symbol.for('asyncPropOriginal');\nconst ASYNC_RESOLVED_SYMBOL = Symbol.for('asyncPropResolved');\n//# sourceMappingURL=constants.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lifecycle/constants.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lifecycle/create-props.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lifecycle/create-props.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createProps\": function() { return /* binding */ createProps; }\n/* harmony export */ });\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/log */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n/* harmony import */ var _utils_iterable_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/iterable-utils */ \"./node_modules/@deck.gl/core/dist/esm/utils/iterable-utils.js\");\n/* harmony import */ var _prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./prop-types */ \"./node_modules/@deck.gl/core/dist/esm/lifecycle/prop-types.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ \"./node_modules/@deck.gl/core/dist/esm/lifecycle/constants.js\");\n\n\n\n\nfunction createProps(component, propObjects) {\n  const propsPrototype = getPropsPrototype(component.constructor);\n  const propsInstance = Object.create(propsPrototype);\n  propsInstance[_constants__WEBPACK_IMPORTED_MODULE_0__.COMPONENT_SYMBOL] = component;\n  propsInstance[_constants__WEBPACK_IMPORTED_MODULE_0__.ASYNC_ORIGINAL_SYMBOL] = {};\n  propsInstance[_constants__WEBPACK_IMPORTED_MODULE_0__.ASYNC_RESOLVED_SYMBOL] = {};\n\n  for (let i = 0; i < propObjects.length; ++i) {\n    const props = propObjects[i];\n\n    for (const key in props) {\n      propsInstance[key] = props[key];\n    }\n  }\n\n  Object.freeze(propsInstance);\n  return propsInstance;\n}\n\nfunction getPropsPrototype(componentClass) {\n  const defaultProps = getOwnProperty(componentClass, '_mergedDefaultProps');\n\n  if (!defaultProps) {\n    createPropsPrototypeAndTypes(componentClass);\n    return componentClass._mergedDefaultProps;\n  }\n\n  return defaultProps;\n}\n\nfunction createPropsPrototypeAndTypes(componentClass) {\n  const parent = componentClass.prototype;\n\n  if (!parent) {\n    return;\n  }\n\n  const parentClass = Object.getPrototypeOf(componentClass);\n  const parentDefaultProps = getPropsPrototype(parentClass);\n  const componentDefaultProps = getOwnProperty(componentClass, 'defaultProps') || {};\n  const componentPropDefs = (0,_prop_types__WEBPACK_IMPORTED_MODULE_1__.parsePropTypes)(componentDefaultProps);\n  const defaultProps = createPropsPrototype(componentPropDefs.defaultProps, parentDefaultProps, componentClass);\n  const propTypes = { ...parentClass._propTypes,\n    ...componentPropDefs.propTypes\n  };\n  addAsyncPropsToPropPrototype(defaultProps, propTypes);\n  const deprecatedProps = { ...parentClass._deprecatedProps,\n    ...componentPropDefs.deprecatedProps\n  };\n  addDeprecatedPropsToPropPrototype(defaultProps, deprecatedProps);\n  componentClass._mergedDefaultProps = defaultProps;\n  componentClass._propTypes = propTypes;\n  componentClass._deprecatedProps = deprecatedProps;\n}\n\nfunction createPropsPrototype(props, parentProps, componentClass) {\n  const defaultProps = Object.create(null);\n  Object.assign(defaultProps, parentProps, props);\n  const id = getComponentName(componentClass);\n  delete props.id;\n  Object.defineProperties(defaultProps, {\n    id: {\n      writable: true,\n      value: id\n    }\n  });\n  return defaultProps;\n}\n\nfunction addDeprecatedPropsToPropPrototype(defaultProps, deprecatedProps) {\n  for (const propName in deprecatedProps) {\n    Object.defineProperty(defaultProps, propName, {\n      enumerable: false,\n\n      set(newValue) {\n        const nameStr = \"\".concat(this.id, \": \").concat(propName);\n\n        for (const newPropName of deprecatedProps[propName]) {\n          if (!hasOwnProperty(this, newPropName)) {\n            this[newPropName] = newValue;\n          }\n        }\n\n        _utils_log__WEBPACK_IMPORTED_MODULE_2__[\"default\"].deprecated(nameStr, deprecatedProps[propName].join('/'))();\n      }\n\n    });\n  }\n}\n\nfunction addAsyncPropsToPropPrototype(defaultProps, propTypes) {\n  const defaultValues = {};\n  const descriptors = {};\n\n  for (const propName in propTypes) {\n    const propType = propTypes[propName];\n    const {\n      name,\n      value\n    } = propType;\n\n    if (propType.async) {\n      defaultValues[name] = value;\n      descriptors[name] = getDescriptorForAsyncProp(name);\n    }\n  }\n\n  defaultProps[_constants__WEBPACK_IMPORTED_MODULE_0__.ASYNC_DEFAULTS_SYMBOL] = defaultValues;\n  defaultProps[_constants__WEBPACK_IMPORTED_MODULE_0__.ASYNC_ORIGINAL_SYMBOL] = {};\n  Object.defineProperties(defaultProps, descriptors);\n}\n\nfunction getDescriptorForAsyncProp(name) {\n  return {\n    enumerable: true,\n\n    set(newValue) {\n      if (typeof newValue === 'string' || newValue instanceof Promise || (0,_utils_iterable_utils__WEBPACK_IMPORTED_MODULE_3__.isAsyncIterable)(newValue)) {\n        this[_constants__WEBPACK_IMPORTED_MODULE_0__.ASYNC_ORIGINAL_SYMBOL][name] = newValue;\n      } else {\n        this[_constants__WEBPACK_IMPORTED_MODULE_0__.ASYNC_RESOLVED_SYMBOL][name] = newValue;\n      }\n    },\n\n    get() {\n      if (this[_constants__WEBPACK_IMPORTED_MODULE_0__.ASYNC_RESOLVED_SYMBOL]) {\n        if (name in this[_constants__WEBPACK_IMPORTED_MODULE_0__.ASYNC_RESOLVED_SYMBOL]) {\n          const value = this[_constants__WEBPACK_IMPORTED_MODULE_0__.ASYNC_RESOLVED_SYMBOL][name];\n          return value || this[_constants__WEBPACK_IMPORTED_MODULE_0__.ASYNC_DEFAULTS_SYMBOL][name];\n        }\n\n        if (name in this[_constants__WEBPACK_IMPORTED_MODULE_0__.ASYNC_ORIGINAL_SYMBOL]) {\n          const state = this[_constants__WEBPACK_IMPORTED_MODULE_0__.COMPONENT_SYMBOL] && this[_constants__WEBPACK_IMPORTED_MODULE_0__.COMPONENT_SYMBOL].internalState;\n\n          if (state && state.hasAsyncProp(name)) {\n            return state.getAsyncProp(name) || this[_constants__WEBPACK_IMPORTED_MODULE_0__.ASYNC_DEFAULTS_SYMBOL][name];\n          }\n        }\n      }\n\n      return this[_constants__WEBPACK_IMPORTED_MODULE_0__.ASYNC_DEFAULTS_SYMBOL][name];\n    }\n\n  };\n}\n\nfunction hasOwnProperty(object, prop) {\n  return Object.prototype.hasOwnProperty.call(object, prop);\n}\n\nfunction getOwnProperty(object, prop) {\n  return hasOwnProperty(object, prop) && object[prop];\n}\n\nfunction getComponentName(componentClass) {\n  const componentName = getOwnProperty(componentClass, 'layerName') || getOwnProperty(componentClass, 'componentName');\n\n  if (!componentName) {\n    _utils_log__WEBPACK_IMPORTED_MODULE_2__[\"default\"].once(0, \"\".concat(componentClass.name, \".componentName not specified\"))();\n  }\n\n  return componentName || componentClass.name;\n}\n//# sourceMappingURL=create-props.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lifecycle/create-props.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lifecycle/prop-types.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lifecycle/prop-types.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"parsePropTypes\": function() { return /* binding */ parsePropTypes; }\n/* harmony export */ });\n/* harmony import */ var _utils_texture__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/texture */ \"./node_modules/@deck.gl/core/dist/esm/utils/texture.js\");\n/* harmony import */ var _utils_deep_equal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/deep-equal */ \"./node_modules/@deck.gl/core/dist/esm/utils/deep-equal.js\");\n\n\nconst TYPE_DEFINITIONS = {\n  boolean: {\n    validate(value, propType) {\n      return true;\n    },\n\n    equal(value1, value2, propType) {\n      return Boolean(value1) === Boolean(value2);\n    }\n\n  },\n  number: {\n    validate(value, propType) {\n      return Number.isFinite(value) && (!('max' in propType) || value <= propType.max) && (!('min' in propType) || value >= propType.min);\n    }\n\n  },\n  color: {\n    validate(value, propType) {\n      return propType.optional && !value || isArray(value) && (value.length === 3 || value.length === 4);\n    },\n\n    equal(value1, value2, propType) {\n      return arrayEqual(value1, value2);\n    }\n\n  },\n  accessor: {\n    validate(value, propType) {\n      const valueType = getTypeOf(value);\n      return valueType === 'function' || valueType === getTypeOf(propType.value);\n    },\n\n    equal(value1, value2, propType) {\n      if (typeof value2 === 'function') {\n        return true;\n      }\n\n      return arrayEqual(value1, value2);\n    }\n\n  },\n  array: {\n    validate(value, propType) {\n      return propType.optional && !value || isArray(value);\n    },\n\n    equal(value1, value2, propType) {\n      return propType.compare ? arrayEqual(value1, value2) : value1 === value2;\n    }\n\n  },\n  object: {\n    equal(value1, value2, propType) {\n      return propType.compare ? (0,_utils_deep_equal__WEBPACK_IMPORTED_MODULE_0__.deepEqual)(value1, value2) : value1 === value2;\n    }\n\n  },\n  function: {\n    validate(value, propType) {\n      return propType.optional && !value || typeof value === 'function';\n    },\n\n    equal(value1, value2, propType) {\n      return !propType.compare || value1 === value2;\n    }\n\n  },\n  data: {\n    transform: (value, propType, component) => {\n      const {\n        dataTransform\n      } = component.props;\n      return dataTransform && value ? dataTransform(value) : value;\n    }\n  },\n  image: {\n    transform: (value, propType, component) => {\n      return (0,_utils_texture__WEBPACK_IMPORTED_MODULE_1__.createTexture)(component, value);\n    },\n    release: value => {\n      (0,_utils_texture__WEBPACK_IMPORTED_MODULE_1__.destroyTexture)(value);\n    }\n  }\n};\n\nfunction arrayEqual(array1, array2) {\n  if (array1 === array2) {\n    return true;\n  }\n\n  if (!isArray(array1) || !isArray(array2)) {\n    return false;\n  }\n\n  const len = array1.length;\n\n  if (len !== array2.length) {\n    return false;\n  }\n\n  for (let i = 0; i < len; i++) {\n    if (array1[i] !== array2[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction parsePropTypes(propDefs) {\n  const propTypes = {};\n  const defaultProps = {};\n  const deprecatedProps = {};\n\n  for (const [propName, propDef] of Object.entries(propDefs)) {\n    const deprecated = propDef === null || propDef === void 0 ? void 0 : propDef.deprecatedFor;\n\n    if (deprecated) {\n      deprecatedProps[propName] = Array.isArray(deprecated) ? deprecated : [deprecated];\n    } else {\n      const propType = parsePropType(propName, propDef);\n      propTypes[propName] = propType;\n      defaultProps[propName] = propType.value;\n    }\n  }\n\n  return {\n    propTypes,\n    defaultProps,\n    deprecatedProps\n  };\n}\n\nfunction parsePropType(name, propDef) {\n  switch (getTypeOf(propDef)) {\n    case 'object':\n      return normalizePropDefinition(name, propDef);\n\n    case 'array':\n      return normalizePropDefinition(name, {\n        type: 'array',\n        value: propDef,\n        compare: false\n      });\n\n    case 'boolean':\n      return normalizePropDefinition(name, {\n        type: 'boolean',\n        value: propDef\n      });\n\n    case 'number':\n      return normalizePropDefinition(name, {\n        type: 'number',\n        value: propDef\n      });\n\n    case 'function':\n      return normalizePropDefinition(name, {\n        type: 'function',\n        value: propDef,\n        compare: true\n      });\n\n    default:\n      return {\n        name,\n        type: 'unknown',\n        value: propDef\n      };\n  }\n}\n\nfunction normalizePropDefinition(name, propDef) {\n  if (!('type' in propDef)) {\n    if (!('value' in propDef)) {\n      return {\n        name,\n        type: 'object',\n        value: propDef\n      };\n    }\n\n    return {\n      name,\n      type: getTypeOf(propDef.value),\n      ...propDef\n    };\n  }\n\n  return {\n    name,\n    ...TYPE_DEFINITIONS[propDef.type],\n    ...propDef\n  };\n}\n\nfunction isArray(value) {\n  return Array.isArray(value) || ArrayBuffer.isView(value);\n}\n\nfunction getTypeOf(value) {\n  if (isArray(value)) {\n    return 'array';\n  }\n\n  if (value === null) {\n    return 'null';\n  }\n\n  return typeof value;\n}\n//# sourceMappingURL=prop-types.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lifecycle/prop-types.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/lifecycle/props.js":
/*!****************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/lifecycle/props.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"compareProps\": function() { return /* binding */ compareProps; },\n/* harmony export */   \"diffProps\": function() { return /* binding */ diffProps; },\n/* harmony export */   \"validateProps\": function() { return /* binding */ validateProps; }\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ \"./node_modules/@deck.gl/core/dist/esm/lifecycle/constants.js\");\n\nfunction validateProps(props) {\n  const propTypes = getPropTypes(props);\n\n  for (const propName in propTypes) {\n    const propType = propTypes[propName];\n    const {\n      validate\n    } = propType;\n\n    if (validate && !validate(props[propName], propType)) {\n      throw new Error(\"Invalid prop \".concat(propName, \": \").concat(props[propName]));\n    }\n  }\n}\nfunction diffProps(props, oldProps) {\n  const propsChangedReason = compareProps({\n    newProps: props,\n    oldProps,\n    propTypes: getPropTypes(props),\n    ignoreProps: {\n      data: null,\n      updateTriggers: null,\n      extensions: null,\n      transitions: null\n    }\n  });\n  const dataChangedReason = diffDataProps(props, oldProps);\n  let updateTriggersChangedReason = false;\n\n  if (!dataChangedReason) {\n    updateTriggersChangedReason = diffUpdateTriggers(props, oldProps);\n  }\n\n  return {\n    dataChanged: dataChangedReason,\n    propsChanged: propsChangedReason,\n    updateTriggersChanged: updateTriggersChangedReason,\n    extensionsChanged: diffExtensions(props, oldProps),\n    transitionsChanged: diffTransitions(props, oldProps)\n  };\n}\n\nfunction diffTransitions(props, oldProps) {\n  if (!props.transitions) {\n    return false;\n  }\n\n  const result = {};\n  const propTypes = getPropTypes(props);\n  let changed = false;\n\n  for (const key in props.transitions) {\n    const propType = propTypes[key];\n    const type = propType && propType.type;\n    const isTransitionable = type === 'number' || type === 'color' || type === 'array';\n\n    if (isTransitionable && comparePropValues(props[key], oldProps[key], propType)) {\n      result[key] = true;\n      changed = true;\n    }\n  }\n\n  return changed ? result : false;\n}\n\nfunction compareProps({\n  newProps,\n  oldProps,\n  ignoreProps = {},\n  propTypes = {},\n  triggerName = 'props'\n}) {\n  if (oldProps === newProps) {\n    return false;\n  }\n\n  if (typeof newProps !== 'object' || newProps === null) {\n    return \"\".concat(triggerName, \" changed shallowly\");\n  }\n\n  if (typeof oldProps !== 'object' || oldProps === null) {\n    return \"\".concat(triggerName, \" changed shallowly\");\n  }\n\n  for (const key of Object.keys(newProps)) {\n    if (!(key in ignoreProps)) {\n      if (!(key in oldProps)) {\n        return \"\".concat(triggerName, \".\").concat(key, \" added\");\n      }\n\n      const changed = comparePropValues(newProps[key], oldProps[key], propTypes[key]);\n\n      if (changed) {\n        return \"\".concat(triggerName, \".\").concat(key, \" \").concat(changed);\n      }\n    }\n  }\n\n  for (const key of Object.keys(oldProps)) {\n    if (!(key in ignoreProps)) {\n      if (!(key in newProps)) {\n        return \"\".concat(triggerName, \".\").concat(key, \" dropped\");\n      }\n\n      if (!Object.hasOwnProperty.call(newProps, key)) {\n        const changed = comparePropValues(newProps[key], oldProps[key], propTypes[key]);\n\n        if (changed) {\n          return \"\".concat(triggerName, \".\").concat(key, \" \").concat(changed);\n        }\n      }\n    }\n  }\n\n  return false;\n}\n\nfunction comparePropValues(newProp, oldProp, propType) {\n  let equal = propType && propType.equal;\n\n  if (equal && !equal(newProp, oldProp, propType)) {\n    return 'changed deeply';\n  }\n\n  if (!equal) {\n    equal = newProp && oldProp && newProp.equals;\n\n    if (equal && !equal.call(newProp, oldProp)) {\n      return 'changed deeply';\n    }\n  }\n\n  if (!equal && oldProp !== newProp) {\n    return 'changed shallowly';\n  }\n\n  return null;\n}\n\nfunction diffDataProps(props, oldProps) {\n  if (oldProps === null) {\n    return 'oldProps is null, initial diff';\n  }\n\n  let dataChanged = false;\n  const {\n    dataComparator,\n    _dataDiff\n  } = props;\n\n  if (dataComparator) {\n    if (!dataComparator(props.data, oldProps.data)) {\n      dataChanged = 'Data comparator detected a change';\n    }\n  } else if (props.data !== oldProps.data) {\n    dataChanged = 'A new data container was supplied';\n  }\n\n  if (dataChanged && _dataDiff) {\n    dataChanged = _dataDiff(props.data, oldProps.data) || dataChanged;\n  }\n\n  return dataChanged;\n}\n\nfunction diffUpdateTriggers(props, oldProps) {\n  if (oldProps === null) {\n    return {\n      all: true\n    };\n  }\n\n  if ('all' in props.updateTriggers) {\n    const diffReason = diffUpdateTrigger(props, oldProps, 'all');\n\n    if (diffReason) {\n      return {\n        all: true\n      };\n    }\n  }\n\n  const reason = {};\n  let changed = false;\n\n  for (const triggerName in props.updateTriggers) {\n    if (triggerName !== 'all') {\n      const diffReason = diffUpdateTrigger(props, oldProps, triggerName);\n\n      if (diffReason) {\n        reason[triggerName] = true;\n        changed = true;\n      }\n    }\n  }\n\n  return changed ? reason : false;\n}\n\nfunction diffExtensions(props, oldProps) {\n  if (oldProps === null) {\n    return true;\n  }\n\n  const oldExtensions = oldProps.extensions;\n  const {\n    extensions\n  } = props;\n\n  if (extensions === oldExtensions) {\n    return false;\n  }\n\n  if (!oldExtensions || !extensions) {\n    return true;\n  }\n\n  if (extensions.length !== oldExtensions.length) {\n    return true;\n  }\n\n  for (let i = 0; i < extensions.length; i++) {\n    if (!extensions[i].equals(oldExtensions[i])) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction diffUpdateTrigger(props, oldProps, triggerName) {\n  let newTriggers = props.updateTriggers[triggerName];\n  newTriggers = newTriggers === undefined || newTriggers === null ? {} : newTriggers;\n  let oldTriggers = oldProps.updateTriggers[triggerName];\n  oldTriggers = oldTriggers === undefined || oldTriggers === null ? {} : oldTriggers;\n  const diffReason = compareProps({\n    oldProps: oldTriggers,\n    newProps: newTriggers,\n    triggerName\n  });\n  return diffReason;\n}\n\nfunction getPropTypes(props) {\n  const layer = props[_constants__WEBPACK_IMPORTED_MODULE_0__.COMPONENT_SYMBOL];\n  const LayerType = layer && layer.constructor;\n  return LayerType ? LayerType._propTypes : {};\n}\n//# sourceMappingURL=props.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/lifecycle/props.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/passes/draw-layers-pass.js":
/*!************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/passes/draw-layers-pass.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ DrawLayersPass; }\n/* harmony export */ });\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lib/constants */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _layers_pass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./layers-pass */ \"./node_modules/@deck.gl/core/dist/esm/passes/layers-pass.js\");\n\n\nclass DrawLayersPass extends _layers_pass__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n  shouldDrawLayer(layer) {\n    return layer.props.operation === _lib_constants__WEBPACK_IMPORTED_MODULE_1__.OPERATION.DRAW;\n  }\n\n}\n//# sourceMappingURL=draw-layers-pass.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/passes/draw-layers-pass.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/passes/layers-pass.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/passes/layers-pass.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LayersPass; },\n/* harmony export */   \"layerIndexResolver\": function() { return /* binding */ layerIndexResolver; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _pass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pass */ \"./node_modules/@deck.gl/core/dist/esm/passes/pass.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/clear.js\");\n\n\n\nclass LayersPass extends _pass__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(...args) {\n    super(...args);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_lastRenderIndex\", -1);\n  }\n\n  render(options) {\n    const gl = this.gl;\n    (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_2__.setParameters)(gl, {\n      framebuffer: options.target\n    });\n    return this._drawLayers(options);\n  }\n\n  _drawLayers(options) {\n    const {\n      target,\n      moduleParameters,\n      viewports,\n      views,\n      onViewportActive,\n      clearStack = true,\n      clearCanvas = true\n    } = options;\n    options.pass = options.pass || 'unknown';\n    const gl = this.gl;\n\n    if (clearCanvas) {\n      clearGLCanvas(gl);\n    }\n\n    if (clearStack) {\n      this._lastRenderIndex = -1;\n    }\n\n    const renderStats = [];\n\n    for (const viewport of viewports) {\n      const view = views && views[viewport.id];\n      onViewportActive(viewport);\n\n      const drawLayerParams = this._getDrawLayerParams(viewport, options);\n\n      const subViewports = viewport.subViewports || [viewport];\n\n      for (const subViewport of subViewports) {\n        const stats = this._drawLayersInViewport(gl, {\n          target,\n          moduleParameters,\n          viewport: subViewport,\n          view,\n          pass: options.pass,\n          layers: options.layers\n        }, drawLayerParams);\n\n        renderStats.push(stats);\n      }\n    }\n\n    return renderStats;\n  }\n\n  _getDrawLayerParams(viewport, {\n    layers,\n    pass,\n    layerFilter,\n    cullRect,\n    effects,\n    moduleParameters\n  }) {\n    const drawLayerParams = [];\n    const indexResolver = layerIndexResolver(this._lastRenderIndex + 1);\n    const drawContext = {\n      layer: layers[0],\n      viewport,\n      isPicking: pass.startsWith('picking'),\n      renderPass: pass,\n      cullRect\n    };\n    const layerFilterCache = {};\n\n    for (let layerIndex = 0; layerIndex < layers.length; layerIndex++) {\n      const layer = layers[layerIndex];\n\n      const shouldDrawLayer = this._shouldDrawLayer(layer, drawContext, layerFilter, layerFilterCache);\n\n      const layerParam = {\n        shouldDrawLayer\n      };\n\n      if (shouldDrawLayer) {\n        layerParam.layerRenderIndex = indexResolver(layer, shouldDrawLayer);\n        layerParam.moduleParameters = this._getModuleParameters(layer, effects, pass, moduleParameters);\n        layerParam.layerParameters = this.getLayerParameters(layer, layerIndex, viewport);\n      }\n\n      drawLayerParams[layerIndex] = layerParam;\n    }\n\n    return drawLayerParams;\n  }\n\n  _drawLayersInViewport(gl, {\n    layers,\n    moduleParameters: globalModuleParameters,\n    pass,\n    target,\n    viewport,\n    view\n  }, drawLayerParams) {\n    const glViewport = getGLViewport(gl, {\n      moduleParameters: globalModuleParameters,\n      target,\n      viewport\n    });\n\n    if (view && view.props.clear) {\n      const clearOpts = view.props.clear === true ? {\n        color: true,\n        depth: true\n      } : view.props.clear;\n      (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_2__.withParameters)(gl, {\n        scissorTest: true,\n        scissor: glViewport\n      }, () => (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_3__.clear)(gl, clearOpts));\n    }\n\n    const renderStatus = {\n      totalCount: layers.length,\n      visibleCount: 0,\n      compositeCount: 0,\n      pickableCount: 0\n    };\n    (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_2__.setParameters)(gl, {\n      viewport: glViewport\n    });\n\n    for (let layerIndex = 0; layerIndex < layers.length; layerIndex++) {\n      const layer = layers[layerIndex];\n      const {\n        shouldDrawLayer,\n        layerRenderIndex,\n        moduleParameters,\n        layerParameters\n      } = drawLayerParams[layerIndex];\n\n      if (shouldDrawLayer && layer.props.pickable) {\n        renderStatus.pickableCount++;\n      }\n\n      if (layer.isComposite) {\n        renderStatus.compositeCount++;\n      } else if (shouldDrawLayer) {\n        renderStatus.visibleCount++;\n        this._lastRenderIndex = Math.max(this._lastRenderIndex, layerRenderIndex);\n        moduleParameters.viewport = viewport;\n\n        try {\n          layer._drawLayer({\n            moduleParameters,\n            uniforms: {\n              layerIndex: layerRenderIndex\n            },\n            parameters: layerParameters\n          });\n        } catch (err) {\n          layer.raiseError(err, \"drawing \".concat(layer, \" to \").concat(pass));\n        }\n      }\n    }\n\n    return renderStatus;\n  }\n\n  shouldDrawLayer(layer) {\n    return true;\n  }\n\n  getModuleParameters(layer, effects) {\n    return null;\n  }\n\n  getLayerParameters(layer, layerIndex, viewport) {\n    return layer.props.parameters;\n  }\n\n  _shouldDrawLayer(layer, drawContext, layerFilter, layerFilterCache) {\n    const shouldDrawLayer = layer.props.visible && this.shouldDrawLayer(layer);\n\n    if (!shouldDrawLayer) {\n      return false;\n    }\n\n    drawContext.layer = layer;\n    let parent = layer.parent;\n\n    while (parent) {\n      if (!parent.props.visible || !parent.filterSubLayer(drawContext)) {\n        return false;\n      }\n\n      drawContext.layer = parent;\n      parent = parent.parent;\n    }\n\n    if (layerFilter) {\n      const rootLayerId = drawContext.layer.id;\n\n      if (!(rootLayerId in layerFilterCache)) {\n        layerFilterCache[rootLayerId] = layerFilter(drawContext);\n      }\n\n      if (!layerFilterCache[rootLayerId]) {\n        return false;\n      }\n    }\n\n    layer.activateViewport(drawContext.viewport);\n    return true;\n  }\n\n  _getModuleParameters(layer, effects, pass, overrides) {\n    var _layer$internalState;\n\n    const moduleParameters = Object.assign(Object.create(((_layer$internalState = layer.internalState) === null || _layer$internalState === void 0 ? void 0 : _layer$internalState.propsInTransition) || layer.props), {\n      autoWrapLongitude: layer.wrapLongitude,\n      viewport: layer.context.viewport,\n      mousePosition: layer.context.mousePosition,\n      pickingActive: 0,\n      devicePixelRatio: (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_2__.cssToDeviceRatio)(this.gl)\n    });\n\n    if (effects) {\n      for (const effect of effects) {\n        var _effect$getModulePara;\n\n        Object.assign(moduleParameters, (_effect$getModulePara = effect.getModuleParameters) === null || _effect$getModulePara === void 0 ? void 0 : _effect$getModulePara.call(effect, layer));\n      }\n    }\n\n    return Object.assign(moduleParameters, this.getModuleParameters(layer, effects), overrides);\n  }\n\n}\nfunction layerIndexResolver(startIndex = 0, layerIndices = {}) {\n  const resolvers = {};\n\n  const resolveLayerIndex = (layer, isDrawn) => {\n    const indexOverride = layer.props._offset;\n    const layerId = layer.id;\n    const parentId = layer.parent && layer.parent.id;\n    let index;\n\n    if (parentId && !(parentId in layerIndices)) {\n      resolveLayerIndex(layer.parent, false);\n    }\n\n    if (parentId in resolvers) {\n      const resolver = resolvers[parentId] = resolvers[parentId] || layerIndexResolver(layerIndices[parentId], layerIndices);\n      index = resolver(layer, isDrawn);\n      resolvers[layerId] = resolver;\n    } else if (Number.isFinite(indexOverride)) {\n      index = indexOverride + (layerIndices[parentId] || 0);\n      resolvers[layerId] = null;\n    } else {\n      index = startIndex;\n    }\n\n    if (isDrawn && index >= startIndex) {\n      startIndex = index + 1;\n    }\n\n    layerIndices[layerId] = index;\n    return index;\n  };\n\n  return resolveLayerIndex;\n}\n\nfunction getGLViewport(gl, {\n  moduleParameters,\n  target,\n  viewport\n}) {\n  const useTarget = target && target.id !== 'default-framebuffer';\n  const pixelRatio = moduleParameters && moduleParameters.devicePixelRatio || (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_2__.cssToDeviceRatio)(gl);\n  const height = useTarget ? target.height : gl.drawingBufferHeight;\n  const dimensions = viewport;\n  return [dimensions.x * pixelRatio, height - (dimensions.y + dimensions.height) * pixelRatio, dimensions.width * pixelRatio, dimensions.height * pixelRatio];\n}\n\nfunction clearGLCanvas(gl) {\n  const width = gl.drawingBufferWidth;\n  const height = gl.drawingBufferHeight;\n  (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_2__.setParameters)(gl, {\n    viewport: [0, 0, width, height]\n  });\n  gl.clear(16384 | 256);\n}\n//# sourceMappingURL=layers-pass.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/passes/layers-pass.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/passes/mask-pass.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/passes/mask-pass.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ MaskPass; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../lib/constants */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _layers_pass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./layers-pass */ \"./node_modules/@deck.gl/core/dist/esm/passes/layers-pass.js\");\n\n\n\n\nclass MaskPass extends _layers_pass__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(gl, props) {\n    super(gl, props);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"maskMap\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"fbo\", void 0);\n\n    const {\n      mapSize = 2048\n    } = props;\n    this.maskMap = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"](gl, {\n      width: mapSize,\n      height: mapSize,\n      parameters: {\n        [10241]: 9729,\n        [10240]: 9729,\n        [10242]: 33071,\n        [10243]: 33071\n      }\n    });\n    this.fbo = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"](gl, {\n      id: 'maskmap',\n      width: mapSize,\n      height: mapSize,\n      attachments: {\n        [36064]: this.maskMap\n      }\n    });\n  }\n\n  render(options) {\n    const gl = this.gl;\n    const colorMask = [false, false, false, false];\n    colorMask[options.channel] = true;\n    return (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_4__.withParameters)(gl, {\n      clearColor: [255, 255, 255, 255],\n      blend: true,\n      blendFunc: [0, 1],\n      blendEquation: 32778,\n      colorMask,\n      depthTest: false\n    }, () => super.render({ ...options,\n      target: this.fbo,\n      pass: 'mask'\n    }));\n  }\n\n  shouldDrawLayer(layer) {\n    return layer.props.operation === _lib_constants__WEBPACK_IMPORTED_MODULE_5__.OPERATION.MASK;\n  }\n\n  delete() {\n    this.fbo.delete();\n    this.maskMap.delete();\n  }\n\n}\n//# sourceMappingURL=mask-pass.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/passes/mask-pass.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/passes/pass.js":
/*!************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/passes/pass.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Pass; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\nclass Pass {\n  constructor(gl, props = {\n    id: 'pass'\n  }) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"id\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"gl\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"props\", void 0);\n\n    const {\n      id\n    } = props;\n    this.id = id;\n    this.gl = gl;\n    this.props = { ...props\n    };\n  }\n\n  setProps(props) {\n    Object.assign(this.props, props);\n  }\n\n  render(params) {}\n\n  cleanup() {}\n\n}\n//# sourceMappingURL=pass.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/passes/pass.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/passes/pick-layers-pass.js":
/*!************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/passes/pick-layers-pass.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ PickLayersPass; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _layers_pass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./layers-pass */ \"./node_modules/@deck.gl/core/dist/esm/passes/layers-pass.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../lib/constants */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/log */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n\n\n\n\n\nconst PICKING_PARAMETERS = {\n  blendFunc: [1, 0, 32771, 0],\n  blendEquation: 32774\n};\nclass PickLayersPass extends _layers_pass__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(...args) {\n    super(...args);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"pickZ\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_colors\", null);\n  }\n\n  render(props) {\n    if (props.pickingFBO) {\n      return this._drawPickingBuffer(props);\n    }\n\n    return super.render(props);\n  }\n\n  _drawPickingBuffer({\n    layers,\n    layerFilter,\n    views,\n    viewports,\n    onViewportActive,\n    pickingFBO,\n    deviceRect: {\n      x,\n      y,\n      width,\n      height\n    },\n    cullRect,\n    effects,\n    pass = 'picking',\n    pickZ\n  }) {\n    const gl = this.gl;\n    this.pickZ = pickZ;\n    const encodedColors = pickZ ? null : {\n      byLayer: new Map(),\n      byAlpha: []\n    };\n    this._colors = encodedColors;\n    const renderStatus = (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_2__.withParameters)(gl, {\n      scissorTest: true,\n      scissor: [x, y, width, height],\n      clearColor: [0, 0, 0, 0],\n      depthMask: true,\n      depthTest: true,\n      depthRange: [0, 1],\n      colorMask: [true, true, true, true],\n      ...PICKING_PARAMETERS,\n      blend: !pickZ\n    }, () => super.render({\n      target: pickingFBO,\n      layers,\n      layerFilter,\n      views,\n      viewports,\n      onViewportActive,\n      cullRect,\n      effects: effects === null || effects === void 0 ? void 0 : effects.filter(e => e.useInPicking),\n      pass\n    }));\n    this._colors = null;\n    const decodePickingColor = encodedColors && decodeColor.bind(null, encodedColors);\n    return {\n      decodePickingColor,\n      stats: renderStatus\n    };\n  }\n\n  shouldDrawLayer(layer) {\n    return layer.props.pickable && layer.props.operation === _lib_constants__WEBPACK_IMPORTED_MODULE_3__.OPERATION.DRAW;\n  }\n\n  getModuleParameters() {\n    return {\n      pickingActive: 1,\n      pickingAttribute: this.pickZ,\n      lightSources: {}\n    };\n  }\n\n  getLayerParameters(layer, layerIndex, viewport) {\n    const pickParameters = { ...layer.props.parameters\n    };\n\n    if (!this._colors) {\n      pickParameters.blend = false;\n    } else {\n      Object.assign(pickParameters, PICKING_PARAMETERS);\n      pickParameters.blend = true;\n      pickParameters.blendColor = encodeColor(this._colors, layer, viewport);\n    }\n\n    return pickParameters;\n  }\n\n}\n\nfunction encodeColor(encoded, layer, viewport) {\n  const {\n    byLayer,\n    byAlpha\n  } = encoded;\n  let a;\n  let entry = byLayer.get(layer);\n\n  if (entry) {\n    entry.viewports.push(viewport);\n    a = entry.a;\n  } else {\n    a = byLayer.size + 1;\n\n    if (a <= 255) {\n      entry = {\n        a,\n        layer,\n        viewports: [viewport]\n      };\n      byLayer.set(layer, entry);\n      byAlpha[a] = entry;\n    } else {\n      _utils_log__WEBPACK_IMPORTED_MODULE_4__[\"default\"].warn('Too many pickable layers, only picking the first 255')();\n      a = 0;\n    }\n  }\n\n  return [0, 0, 0, a / 255];\n}\n\nfunction decodeColor(encoded, pickedColor) {\n  const entry = encoded.byAlpha[pickedColor[3]];\n  return entry && {\n    pickedLayer: entry.layer,\n    pickedViewports: entry.viewports,\n    pickedObjectIndex: entry.layer.decodePickingColor(pickedColor)\n  };\n}\n//# sourceMappingURL=pick-layers-pass.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/passes/pick-layers-pass.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/passes/screen-pass.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/passes/screen-pass.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ScreenPass; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/utils/clip-space.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/clear.js\");\n/* harmony import */ var _pass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pass */ \"./node_modules/@deck.gl/core/dist/esm/passes/pass.js\");\n\n\n\nclass ScreenPass extends _pass__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(gl, props) {\n    super(gl, props);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"model\", void 0);\n\n    const {\n      module,\n      fs,\n      id\n    } = props;\n    this.model = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"](gl, {\n      id,\n      fs,\n      modules: [module]\n    });\n  }\n\n  render(params) {\n    const gl = this.gl;\n    (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_3__.setParameters)(gl, {\n      viewport: [0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight]\n    });\n    (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_3__.withParameters)(gl, {\n      framebuffer: params.outputBuffer,\n      clearColor: [0, 0, 0, 0]\n    }, () => this._renderPass(gl, params));\n  }\n\n  delete() {\n    this.model.delete();\n    this.model = null;\n  }\n\n  _renderPass(gl, options) {\n    const {\n      inputBuffer\n    } = options;\n    (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_4__.clear)(gl, {\n      color: true\n    });\n    this.model.draw({\n      moduleSettings: this.props.moduleSettings,\n      uniforms: {\n        texture: inputBuffer,\n        texSize: [inputBuffer.width, inputBuffer.height]\n      },\n      parameters: {\n        depthWrite: false,\n        depthTest: false\n      }\n    });\n  }\n\n}\n//# sourceMappingURL=screen-pass.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/passes/screen-pass.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/passes/shadow-pass.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/passes/shadow-pass.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ShadowPass; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _layers_pass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./layers-pass */ \"./node_modules/@deck.gl/core/dist/esm/passes/layers-pass.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/renderbuffer.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n\n\n\nclass ShadowPass extends _layers_pass__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(gl, props) {\n    super(gl, props);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"shadowMap\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"depthBuffer\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"fbo\", void 0);\n\n    this.shadowMap = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"](gl, {\n      width: 1,\n      height: 1,\n      parameters: {\n        [10241]: 9729,\n        [10240]: 9729,\n        [10242]: 33071,\n        [10243]: 33071\n      }\n    });\n    this.depthBuffer = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"](gl, {\n      format: 33189,\n      width: 1,\n      height: 1\n    });\n    this.fbo = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_4__[\"default\"](gl, {\n      id: 'shadowmap',\n      width: 1,\n      height: 1,\n      attachments: {\n        [36064]: this.shadowMap,\n        [36096]: this.depthBuffer\n      }\n    });\n  }\n\n  render(params) {\n    const target = this.fbo;\n    (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_5__.withParameters)(this.gl, {\n      depthRange: [0, 1],\n      depthTest: true,\n      blend: false,\n      clearColor: [1, 1, 1, 1]\n    }, () => {\n      const viewport = params.viewports[0];\n      const pixelRatio = (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_5__.cssToDeviceRatio)(this.gl);\n      const width = viewport.width * pixelRatio;\n      const height = viewport.height * pixelRatio;\n\n      if (width !== target.width || height !== target.height) {\n        target.resize({\n          width,\n          height\n        });\n      }\n\n      super.render({ ...params,\n        target,\n        pass: 'shadow'\n      });\n    });\n  }\n\n  shouldDrawLayer(layer) {\n    return layer.props.shadowEnabled !== false;\n  }\n\n  getModuleParameters() {\n    return {\n      drawToShadowMap: true\n    };\n  }\n\n  delete() {\n    if (this.fbo) {\n      this.fbo.delete();\n      this.fbo = null;\n    }\n\n    if (this.shadowMap) {\n      this.shadowMap.delete();\n      this.shadowMap = null;\n    }\n\n    if (this.depthBuffer) {\n      this.depthBuffer.delete();\n      this.depthBuffer = null;\n    }\n  }\n\n}\n//# sourceMappingURL=shadow-pass.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/passes/shadow-pass.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/shaderlib/index.js":
/*!****************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/shaderlib/index.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createProgramManager\": function() { return /* binding */ createProgramManager; },\n/* harmony export */   \"gouraudLighting\": function() { return /* reexport safe */ _luma_gl_core__WEBPACK_IMPORTED_MODULE_4__.gouraudLighting; },\n/* harmony export */   \"phongLighting\": function() { return /* reexport safe */ _luma_gl_core__WEBPACK_IMPORTED_MODULE_4__.phongLighting; },\n/* harmony export */   \"picking\": function() { return /* reexport safe */ _picking_picking__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; },\n/* harmony export */   \"project\": function() { return /* reexport safe */ _project_project__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"project32\": function() { return /* reexport safe */ _project32_project32__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; },\n/* harmony export */   \"shadow\": function() { return /* reexport safe */ _shadow_shadow__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/lib/program-manager.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.js\");\n/* harmony import */ var _project_project__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./project/project */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project.js\");\n/* harmony import */ var _project32_project32__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./project32/project32 */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project32/project32.js\");\n/* harmony import */ var _shadow_shadow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./shadow/shadow */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/shadow/shadow.js\");\n/* harmony import */ var _picking_picking__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./picking/picking */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/picking/picking.js\");\n\n\n\n\n\n\nconst DEFAULT_MODULES = [_project_project__WEBPACK_IMPORTED_MODULE_0__[\"default\"]];\nconst SHADER_HOOKS = ['vs:DECKGL_FILTER_SIZE(inout vec3 size, VertexGeometry geometry)', 'vs:DECKGL_FILTER_GL_POSITION(inout vec4 position, VertexGeometry geometry)', 'vs:DECKGL_FILTER_COLOR(inout vec4 color, VertexGeometry geometry)', 'fs:DECKGL_FILTER_COLOR(inout vec4 color, FragmentGeometry geometry)'];\nfunction createProgramManager(gl) {\n  const programManager = _luma_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getDefaultProgramManager(gl);\n\n  for (const shaderModule of DEFAULT_MODULES) {\n    programManager.addDefaultModule(shaderModule);\n  }\n\n  for (const shaderHook of SHADER_HOOKS) {\n    programManager.addShaderHook(shaderHook);\n  }\n\n  return programManager;\n}\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/shaderlib/index.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/shaderlib/misc/geometry.js":
/*!************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/shaderlib/misc/geometry.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst defines = '#define SMOOTH_EDGE_RADIUS 0.5';\nconst vs = \"\\n\".concat(defines, \"\\n\\nstruct VertexGeometry {\\n  vec4 position;\\n  vec3 worldPosition;\\n  vec3 worldPositionAlt;\\n  vec3 normal;\\n  vec2 uv;\\n  vec3 pickingColor;\\n} geometry = VertexGeometry(\\n  vec4(0.0, 0.0, 1.0, 0.0),\\n  vec3(0.0),\\n  vec3(0.0),\\n  vec3(0.0),\\n  vec2(0.0),\\n  vec3(0.0)\\n);\\n\");\nconst fs = \"\\n\".concat(defines, \"\\n\\nstruct FragmentGeometry {\\n  vec2 uv;\\n} geometry;\\n\\nfloat smoothedge(float edge, float x) {\\n  return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\\n}\\n\");\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'geometry',\n  vs,\n  fs\n});\n//# sourceMappingURL=geometry.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/shaderlib/misc/geometry.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/shaderlib/picking/picking.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/shaderlib/picking/picking.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/picking/picking.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  inject: {\n    'vs:DECKGL_FILTER_GL_POSITION': \"\\n    // for picking depth values\\n    picking_setPickingAttribute(position.z / position.w);\\n  \",\n    'vs:DECKGL_FILTER_COLOR': \"\\n  picking_setPickingColor(geometry.pickingColor);\\n  \",\n    'fs:DECKGL_FILTER_COLOR': {\n      order: 99,\n      injection: \"\\n  // use highlight color if this fragment belongs to the selected object.\\n  color = picking_filterHighlightColor(color);\\n\\n  // use picking color if rendering to picking FBO.\\n  color = picking_filterPickingColor(color);\\n    \"\n    }\n  },\n  ..._luma_gl_core__WEBPACK_IMPORTED_MODULE_0__.picking\n});\n//# sourceMappingURL=picking.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/shaderlib/picking/picking.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project-functions.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project-functions.js ***!
  \************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getWorldPosition\": function() { return /* binding */ getWorldPosition; },\n/* harmony export */   \"projectPosition\": function() { return /* binding */ projectPosition; }\n/* harmony export */ });\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../lib/constants */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _viewport_uniforms__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./viewport-uniforms */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project/viewport-uniforms.js\");\n/* harmony import */ var _viewports_web_mercator_viewport__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../viewports/web-mercator-viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/web-mercator-viewport.js\");\n/* harmony import */ var gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! gl-matrix/vec4 */ \"./node_modules/gl-matrix/esm/vec4.js\");\n/* harmony import */ var gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! gl-matrix/vec3 */ \"./node_modules/gl-matrix/esm/vec3.js\");\n/* harmony import */ var _math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/web-mercator */ \"./node_modules/@math.gl/web-mercator/dist/esm/index.js\");\n\n\n\n\n\n\n\nfunction lngLatZToWorldPosition(lngLatZ, viewport, offsetMode = false) {\n  const p = viewport.projectPosition(lngLatZ);\n\n  if (offsetMode && viewport instanceof _viewports_web_mercator_viewport__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) {\n    const [longitude, latitude, z = 0] = lngLatZ;\n    const distanceScales = viewport.getDistanceScales([longitude, latitude]);\n    p[2] = z * distanceScales.unitsPerMeter[2];\n  }\n\n  return p;\n}\n\nfunction normalizeParameters(opts) {\n  const {\n    viewport,\n    modelMatrix,\n    coordinateOrigin\n  } = opts;\n  let {\n    coordinateSystem,\n    fromCoordinateSystem,\n    fromCoordinateOrigin\n  } = opts;\n\n  if (coordinateSystem === _lib_constants__WEBPACK_IMPORTED_MODULE_2__.COORDINATE_SYSTEM.DEFAULT) {\n    coordinateSystem = viewport.isGeospatial ? _lib_constants__WEBPACK_IMPORTED_MODULE_2__.COORDINATE_SYSTEM.LNGLAT : _lib_constants__WEBPACK_IMPORTED_MODULE_2__.COORDINATE_SYSTEM.CARTESIAN;\n  }\n\n  if (fromCoordinateSystem === undefined) {\n    fromCoordinateSystem = coordinateSystem;\n  }\n\n  if (fromCoordinateOrigin === undefined) {\n    fromCoordinateOrigin = coordinateOrigin;\n  }\n\n  return {\n    viewport,\n    coordinateSystem,\n    coordinateOrigin,\n    modelMatrix,\n    fromCoordinateSystem,\n    fromCoordinateOrigin\n  };\n}\n\nfunction getWorldPosition(position, {\n  viewport,\n  modelMatrix,\n  coordinateSystem,\n  coordinateOrigin,\n  offsetMode\n}) {\n  let [x, y, z = 0] = position;\n\n  if (modelMatrix) {\n    [x, y, z] = gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_3__.transformMat4([], [x, y, z, 1.0], modelMatrix);\n  }\n\n  switch (coordinateSystem) {\n    case _lib_constants__WEBPACK_IMPORTED_MODULE_2__.COORDINATE_SYSTEM.LNGLAT:\n      return lngLatZToWorldPosition([x, y, z], viewport, offsetMode);\n\n    case _lib_constants__WEBPACK_IMPORTED_MODULE_2__.COORDINATE_SYSTEM.LNGLAT_OFFSETS:\n      return lngLatZToWorldPosition([x + coordinateOrigin[0], y + coordinateOrigin[1], z + (coordinateOrigin[2] || 0)], viewport, offsetMode);\n\n    case _lib_constants__WEBPACK_IMPORTED_MODULE_2__.COORDINATE_SYSTEM.METER_OFFSETS:\n      return lngLatZToWorldPosition((0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_0__.addMetersToLngLat)(coordinateOrigin, [x, y, z]), viewport, offsetMode);\n\n    case _lib_constants__WEBPACK_IMPORTED_MODULE_2__.COORDINATE_SYSTEM.CARTESIAN:\n    default:\n      return viewport.isGeospatial ? [x + coordinateOrigin[0], y + coordinateOrigin[1], z + coordinateOrigin[2]] : viewport.projectPosition([x, y, z]);\n  }\n}\nfunction projectPosition(position, params) {\n  const {\n    viewport,\n    coordinateSystem,\n    coordinateOrigin,\n    modelMatrix,\n    fromCoordinateSystem,\n    fromCoordinateOrigin\n  } = normalizeParameters(params);\n  const {\n    geospatialOrigin,\n    shaderCoordinateOrigin,\n    offsetMode\n  } = (0,_viewport_uniforms__WEBPACK_IMPORTED_MODULE_4__.getOffsetOrigin)(viewport, coordinateSystem, coordinateOrigin);\n  const worldPosition = getWorldPosition(position, {\n    viewport,\n    modelMatrix,\n    coordinateSystem: fromCoordinateSystem,\n    coordinateOrigin: fromCoordinateOrigin,\n    offsetMode\n  });\n\n  if (offsetMode) {\n    const positionCommonSpace = viewport.projectPosition(geospatialOrigin || shaderCoordinateOrigin);\n    gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_5__.sub(worldPosition, worldPosition, positionCommonSpace);\n  }\n\n  return worldPosition;\n}\n//# sourceMappingURL=project-functions.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project-functions.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project.glsl.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project.glsl.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/constants */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n\nconst COORDINATE_SYSTEM_GLSL_CONSTANTS = Object.keys(_lib_constants__WEBPACK_IMPORTED_MODULE_0__.COORDINATE_SYSTEM).map(key => \"const int COORDINATE_SYSTEM_\".concat(key, \" = \").concat(_lib_constants__WEBPACK_IMPORTED_MODULE_0__.COORDINATE_SYSTEM[key], \";\")).join('');\nconst PROJECTION_MODE_GLSL_CONSTANTS = Object.keys(_lib_constants__WEBPACK_IMPORTED_MODULE_0__.PROJECTION_MODE).map(key => \"const int PROJECTION_MODE_\".concat(key, \" = \").concat(_lib_constants__WEBPACK_IMPORTED_MODULE_0__.PROJECTION_MODE[key], \";\")).join('');\nconst UNIT_GLSL_CONSTANTS = Object.keys(_lib_constants__WEBPACK_IMPORTED_MODULE_0__.UNIT).map(key => \"const int UNIT_\".concat(key.toUpperCase(), \" = \").concat(_lib_constants__WEBPACK_IMPORTED_MODULE_0__.UNIT[key], \";\")).join('');\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"\".concat(COORDINATE_SYSTEM_GLSL_CONSTANTS, \"\\n\").concat(PROJECTION_MODE_GLSL_CONSTANTS, \"\\n\").concat(UNIT_GLSL_CONSTANTS, \"\\n\\nuniform int project_uCoordinateSystem;\\nuniform int project_uProjectionMode;\\nuniform float project_uScale;\\nuniform bool project_uWrapLongitude;\\nuniform vec3 project_uCommonUnitsPerMeter;\\nuniform vec3 project_uCommonUnitsPerWorldUnit;\\nuniform vec3 project_uCommonUnitsPerWorldUnit2;\\nuniform vec4 project_uCenter;\\nuniform mat4 project_uModelMatrix;\\nuniform mat4 project_uViewProjectionMatrix;\\nuniform vec2 project_uViewportSize;\\nuniform float project_uDevicePixelRatio;\\nuniform float project_uFocalDistance;\\nuniform vec3 project_uCameraPosition;\\nuniform vec3 project_uCoordinateOrigin;\\nuniform vec3 project_uCommonOrigin;\\nuniform bool project_uPseudoMeters;\\n\\nconst float TILE_SIZE = 512.0;\\nconst float PI = 3.1415926536;\\nconst float WORLD_SCALE = TILE_SIZE / (PI * 2.0);\\nconst vec3 ZERO_64_LOW = vec3(0.0);\\nconst float EARTH_RADIUS = 6370972.0; // meters\\nconst float GLOBE_RADIUS = 256.0;\\n\\n// returns an adjustment factor for uCommonUnitsPerMeter\\nfloat project_size_at_latitude(float lat) {\\n  float y = clamp(lat, -89.9, 89.9);\\n  return 1.0 / cos(radians(y));\\n}\\n\\nfloat project_size() {\\n  if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR &&\\n    project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT &&\\n    project_uPseudoMeters == false) {\\n\\n    // uCommonUnitsPerMeter in low-zoom Web Mercator is non-linear\\n    // Adjust by 1 / cos(latitude)\\n    // If geometry.position (vertex in common space) is populated, use it\\n    // Otherwise use geometry.worldPosition (anchor in world space)\\n    \\n    if (geometry.position.w == 0.0) {\\n      return project_size_at_latitude(geometry.worldPosition.y);\\n    }\\n\\n    // latitude from common y: 2.0 * (atan(exp(y / TILE_SIZE * 2.0 * PI - PI)) - PI / 4.0)\\n    // Taylor series of 1 / cos(latitude)\\n    // Max error < 0.003\\n  \\n    float y = geometry.position.y / TILE_SIZE * 2.0 - 1.0;\\n    float y2 = y * y;\\n    float y4 = y2 * y2;\\n    float y6 = y4 * y2;\\n    return 1.0 + 4.9348 * y2 + 4.0587 * y4 + 1.5642 * y6;\\n  }\\n  return 1.0;\\n}\\n\\nfloat project_size_at_latitude(float meters, float lat) {\\n  return meters * project_uCommonUnitsPerMeter.z * project_size_at_latitude(lat);\\n}\\n\\n//\\n// Scaling offsets - scales meters to \\\"world distance\\\"\\n// Note the scalar version of project_size is for scaling the z component only\\n//\\nfloat project_size(float meters) {\\n  return meters * project_uCommonUnitsPerMeter.z * project_size();\\n}\\n\\nvec2 project_size(vec2 meters) {\\n  return meters * project_uCommonUnitsPerMeter.xy * project_size();\\n}\\n\\nvec3 project_size(vec3 meters) {\\n  return meters * project_uCommonUnitsPerMeter * project_size();\\n}\\n\\nvec4 project_size(vec4 meters) {\\n  return vec4(meters.xyz * project_uCommonUnitsPerMeter, meters.w);\\n}\\n\\n// Get rotation matrix that aligns the z axis with the given up vector\\n// Find 3 unit vectors ux, uy, uz that are perpendicular to each other and uz == up\\nmat3 project_get_orientation_matrix(vec3 up) {\\n  vec3 uz = normalize(up);\\n  // Tangent on XY plane\\n  vec3 ux = abs(uz.z) == 1.0 ? vec3(1.0, 0.0, 0.0) : normalize(vec3(uz.y, -uz.x, 0));\\n  vec3 uy = cross(uz, ux);\\n  return mat3(ux, uy, uz);\\n}\\n\\nbool project_needs_rotation(vec3 commonPosition, out mat3 transform) {\\n  if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\\n    transform = project_get_orientation_matrix(commonPosition);\\n    return true;\\n  }\\n  return false;\\n}\\n\\n//\\n// Projecting normal - transform deltas from current coordinate system to\\n// normals in the worldspace\\n//\\nvec3 project_normal(vec3 vector) {\\n  // Apply model matrix\\n  vec4 normal_modelspace = project_uModelMatrix * vec4(vector, 0.0);\\n  vec3 n = normalize(normal_modelspace.xyz * project_uCommonUnitsPerMeter);\\n  mat3 rotation;\\n  if (project_needs_rotation(geometry.position.xyz, rotation)) {\\n    n = rotation * n;\\n  }\\n  return n;\\n}\\n\\nvec4 project_offset_(vec4 offset) {\\n  float dy = offset.y;\\n  vec3 commonUnitsPerWorldUnit = project_uCommonUnitsPerWorldUnit + project_uCommonUnitsPerWorldUnit2 * dy;\\n  return vec4(offset.xyz * commonUnitsPerWorldUnit, offset.w);\\n}\\n\\n//\\n// Projecting positions - non-linear projection: lnglats => unit tile [0-1, 0-1]\\n//\\nvec2 project_mercator_(vec2 lnglat) {\\n  float x = lnglat.x;\\n  if (project_uWrapLongitude) {\\n    x = mod(x + 180., 360.0) - 180.;\\n  }\\n  float y = clamp(lnglat.y, -89.9, 89.9);\\n  return vec2(\\n    radians(x) + PI,\\n    PI + log(tan_fp32(PI * 0.25 + radians(y) * 0.5))\\n  ) * WORLD_SCALE;\\n}\\n\\nvec3 project_globe_(vec3 lnglatz) {\\n  float lambda = radians(lnglatz.x);\\n  float phi = radians(lnglatz.y);\\n  float cosPhi = cos(phi);\\n  float D = (lnglatz.z / EARTH_RADIUS + 1.0) * GLOBE_RADIUS;\\n\\n  return vec3(\\n    sin(lambda) * cosPhi,\\n    -cos(lambda) * cosPhi,\\n    sin(phi)\\n  ) * D;\\n}\\n\\n//\\n// Projects positions (defined by project_uCoordinateSystem) to common space (defined by project_uProjectionMode)\\n//\\nvec4 project_position(vec4 position, vec3 position64Low) {\\n  vec4 position_world = project_uModelMatrix * position;\\n\\n  // Work around for a Mac+NVIDIA bug https://github.com/visgl/deck.gl/issues/4145\\n  if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR) {\\n    if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\\n      return vec4(\\n        project_mercator_(position_world.xy),\\n        project_size_at_latitude(position_world.z, position_world.y),\\n        position_world.w\\n      );\\n    }\\n    if (project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN) {\\n      position_world.xyz += project_uCoordinateOrigin;\\n    }\\n  }\\n  if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\\n    if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\\n      return vec4(\\n        project_globe_(position_world.xyz),\\n        position_world.w\\n      );\\n    }\\n  }\\n  if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\\n    if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\\n      if (abs(position_world.y - project_uCoordinateOrigin.y) > 0.25) {\\n        // Too far from the projection center for offset mode to be accurate\\n        // Only use high parts\\n        return vec4(\\n          project_mercator_(position_world.xy) - project_uCommonOrigin.xy,\\n          project_size(position_world.z),\\n          position_world.w\\n        );\\n      }\\n    }\\n  }\\n  if (project_uProjectionMode == PROJECTION_MODE_IDENTITY ||\\n    (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET &&\\n    (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\\n     project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN))) {\\n    // Subtract high part of 64 bit value. Convert remainder to float32, preserving precision.\\n    position_world.xyz -= project_uCoordinateOrigin;\\n  }\\n\\n  // Translation is already added to the high parts\\n  return project_offset_(position_world + project_uModelMatrix * vec4(position64Low, 0.0));\\n}\\n\\nvec4 project_position(vec4 position) {\\n  return project_position(position, ZERO_64_LOW);\\n}\\n\\nvec3 project_position(vec3 position, vec3 position64Low) {\\n  vec4 projected_position = project_position(vec4(position, 1.0), position64Low);\\n  return projected_position.xyz;\\n}\\n\\nvec3 project_position(vec3 position) {\\n  vec4 projected_position = project_position(vec4(position, 1.0), ZERO_64_LOW);\\n  return projected_position.xyz;\\n}\\n\\nvec2 project_position(vec2 position) {\\n  vec4 projected_position = project_position(vec4(position, 0.0, 1.0), ZERO_64_LOW);\\n  return projected_position.xy;\\n}\\n\\nvec4 project_common_position_to_clipspace(vec4 position, mat4 viewProjectionMatrix, vec4 center) {\\n  return viewProjectionMatrix * position + center;\\n}\\n\\n//\\n// Projects from common space coordinates to clip space.\\n// Uses project_uViewProjectionMatrix\\n//\\nvec4 project_common_position_to_clipspace(vec4 position) {\\n  return project_common_position_to_clipspace(position, project_uViewProjectionMatrix, project_uCenter);\\n}\\n\\n// Returns a clip space offset that corresponds to a given number of screen pixels\\nvec2 project_pixel_size_to_clipspace(vec2 pixels) {\\n  vec2 offset = pixels / project_uViewportSize * project_uDevicePixelRatio * 2.0;\\n  return offset * project_uFocalDistance;\\n}\\n\\nfloat project_size_to_pixel(float meters) {\\n  return project_size(meters) * project_uScale;\\n}\\nfloat project_size_to_pixel(float size, int unit) {\\n  if (unit == UNIT_METERS) return project_size_to_pixel(size);\\n  if (unit == UNIT_COMMON) return size * project_uScale;\\n  // UNIT_PIXELS\\n  return size;\\n}\\nfloat project_pixel_size(float pixels) {\\n  return pixels / project_uScale;\\n}\\nvec2 project_pixel_size(vec2 pixels) {\\n  return pixels / project_uScale;\\n}\\n\"));\n//# sourceMappingURL=project.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/fp32/fp32.js\");\n/* harmony import */ var _misc_geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../misc/geometry */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/misc/geometry.js\");\n/* harmony import */ var _project_glsl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./project.glsl */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project.glsl.js\");\n/* harmony import */ var _viewport_uniforms__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./viewport-uniforms */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project/viewport-uniforms.js\");\n\n\n\n\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getUniforms(opts = INITIAL_MODULE_OPTIONS) {\n  if ('viewport' in opts) {\n    return (0,_viewport_uniforms__WEBPACK_IMPORTED_MODULE_0__.getUniformsFromViewport)(opts);\n  }\n\n  return {};\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'project',\n  dependencies: [_luma_gl_core__WEBPACK_IMPORTED_MODULE_1__.fp32, _misc_geometry__WEBPACK_IMPORTED_MODULE_2__[\"default\"]],\n  vs: _project_glsl__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n  getUniforms\n});\n//# sourceMappingURL=project.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/shaderlib/project/viewport-uniforms.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/shaderlib/project/viewport-uniforms.js ***!
  \************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getOffsetOrigin\": function() { return /* binding */ getOffsetOrigin; },\n/* harmony export */   \"getUniformsFromViewport\": function() { return /* binding */ getUniformsFromViewport; }\n/* harmony export */ });\n/* harmony import */ var gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! gl-matrix/mat4 */ \"./node_modules/gl-matrix/esm/mat4.js\");\n/* harmony import */ var gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix/vec4 */ \"./node_modules/gl-matrix/esm/vec4.js\");\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../lib/constants */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _utils_memoize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/memoize */ \"./node_modules/@deck.gl/core/dist/esm/utils/memoize.js\");\n\n\n\n\nconst ZERO_VECTOR = [0, 0, 0, 0];\nconst VECTOR_TO_POINT_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0];\nconst IDENTITY_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\nconst DEFAULT_PIXELS_PER_UNIT2 = [0, 0, 0];\nconst DEFAULT_COORDINATE_ORIGIN = [0, 0, 0];\nconst getMemoizedViewportUniforms = (0,_utils_memoize__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(calculateViewportUniforms);\nfunction getOffsetOrigin(viewport, coordinateSystem, coordinateOrigin = DEFAULT_COORDINATE_ORIGIN) {\n  if (coordinateOrigin.length < 3) {\n    coordinateOrigin = [coordinateOrigin[0], coordinateOrigin[1], 0];\n  }\n\n  let shaderCoordinateOrigin = coordinateOrigin;\n  let geospatialOrigin;\n  let offsetMode = true;\n\n  if (coordinateSystem === _lib_constants__WEBPACK_IMPORTED_MODULE_1__.COORDINATE_SYSTEM.LNGLAT_OFFSETS || coordinateSystem === _lib_constants__WEBPACK_IMPORTED_MODULE_1__.COORDINATE_SYSTEM.METER_OFFSETS) {\n    geospatialOrigin = coordinateOrigin;\n  } else {\n    geospatialOrigin = viewport.isGeospatial ? [Math.fround(viewport.longitude), Math.fround(viewport.latitude), 0] : null;\n  }\n\n  switch (viewport.projectionMode) {\n    case _lib_constants__WEBPACK_IMPORTED_MODULE_1__.PROJECTION_MODE.WEB_MERCATOR:\n      if (coordinateSystem === _lib_constants__WEBPACK_IMPORTED_MODULE_1__.COORDINATE_SYSTEM.LNGLAT || coordinateSystem === _lib_constants__WEBPACK_IMPORTED_MODULE_1__.COORDINATE_SYSTEM.CARTESIAN) {\n        geospatialOrigin = [0, 0, 0];\n        offsetMode = false;\n      }\n\n      break;\n\n    case _lib_constants__WEBPACK_IMPORTED_MODULE_1__.PROJECTION_MODE.WEB_MERCATOR_AUTO_OFFSET:\n      if (coordinateSystem === _lib_constants__WEBPACK_IMPORTED_MODULE_1__.COORDINATE_SYSTEM.LNGLAT) {\n        shaderCoordinateOrigin = geospatialOrigin;\n      } else if (coordinateSystem === _lib_constants__WEBPACK_IMPORTED_MODULE_1__.COORDINATE_SYSTEM.CARTESIAN) {\n        shaderCoordinateOrigin = [Math.fround(viewport.center[0]), Math.fround(viewport.center[1]), 0];\n        geospatialOrigin = viewport.unprojectPosition(shaderCoordinateOrigin);\n        shaderCoordinateOrigin[0] -= coordinateOrigin[0];\n        shaderCoordinateOrigin[1] -= coordinateOrigin[1];\n        shaderCoordinateOrigin[2] -= coordinateOrigin[2];\n      }\n\n      break;\n\n    case _lib_constants__WEBPACK_IMPORTED_MODULE_1__.PROJECTION_MODE.IDENTITY:\n      shaderCoordinateOrigin = viewport.position.map(Math.fround);\n      shaderCoordinateOrigin[2] = shaderCoordinateOrigin[2] || 0;\n      break;\n\n    case _lib_constants__WEBPACK_IMPORTED_MODULE_1__.PROJECTION_MODE.GLOBE:\n      offsetMode = false;\n      geospatialOrigin = null;\n      break;\n\n    default:\n      offsetMode = false;\n  }\n\n  return {\n    geospatialOrigin,\n    shaderCoordinateOrigin,\n    offsetMode\n  };\n}\n\nfunction calculateMatrixAndOffset(viewport, coordinateSystem, coordinateOrigin) {\n  const {\n    viewMatrixUncentered,\n    projectionMatrix\n  } = viewport;\n  let {\n    viewMatrix,\n    viewProjectionMatrix\n  } = viewport;\n  let projectionCenter = ZERO_VECTOR;\n  let originCommon = ZERO_VECTOR;\n  let cameraPosCommon = viewport.cameraPosition;\n  const {\n    geospatialOrigin,\n    shaderCoordinateOrigin,\n    offsetMode\n  } = getOffsetOrigin(viewport, coordinateSystem, coordinateOrigin);\n\n  if (offsetMode) {\n    originCommon = viewport.projectPosition(geospatialOrigin || shaderCoordinateOrigin);\n    cameraPosCommon = [cameraPosCommon[0] - originCommon[0], cameraPosCommon[1] - originCommon[1], cameraPosCommon[2] - originCommon[2]];\n    originCommon[3] = 1;\n    projectionCenter = gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_2__.transformMat4([], originCommon, viewProjectionMatrix);\n    viewMatrix = viewMatrixUncentered || viewMatrix;\n    viewProjectionMatrix = gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_3__.multiply([], projectionMatrix, viewMatrix);\n    viewProjectionMatrix = gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_3__.multiply([], viewProjectionMatrix, VECTOR_TO_POINT_MATRIX);\n  }\n\n  return {\n    viewMatrix,\n    viewProjectionMatrix,\n    projectionCenter,\n    originCommon,\n    cameraPosCommon,\n    shaderCoordinateOrigin,\n    geospatialOrigin\n  };\n}\n\nfunction getUniformsFromViewport({\n  viewport,\n  devicePixelRatio = 1,\n  modelMatrix = null,\n  coordinateSystem = _lib_constants__WEBPACK_IMPORTED_MODULE_1__.COORDINATE_SYSTEM.DEFAULT,\n  coordinateOrigin = DEFAULT_COORDINATE_ORIGIN,\n  autoWrapLongitude = false\n}) {\n  if (coordinateSystem === _lib_constants__WEBPACK_IMPORTED_MODULE_1__.COORDINATE_SYSTEM.DEFAULT) {\n    coordinateSystem = viewport.isGeospatial ? _lib_constants__WEBPACK_IMPORTED_MODULE_1__.COORDINATE_SYSTEM.LNGLAT : _lib_constants__WEBPACK_IMPORTED_MODULE_1__.COORDINATE_SYSTEM.CARTESIAN;\n  }\n\n  const uniforms = getMemoizedViewportUniforms({\n    viewport,\n    devicePixelRatio,\n    coordinateSystem,\n    coordinateOrigin\n  });\n  uniforms.project_uWrapLongitude = autoWrapLongitude;\n  uniforms.project_uModelMatrix = modelMatrix || IDENTITY_MATRIX;\n  return uniforms;\n}\n\nfunction calculateViewportUniforms({\n  viewport,\n  devicePixelRatio,\n  coordinateSystem,\n  coordinateOrigin\n}) {\n  const {\n    projectionCenter,\n    viewProjectionMatrix,\n    originCommon,\n    cameraPosCommon,\n    shaderCoordinateOrigin,\n    geospatialOrigin\n  } = calculateMatrixAndOffset(viewport, coordinateSystem, coordinateOrigin);\n  const distanceScales = viewport.getDistanceScales();\n  const viewportSize = [viewport.width * devicePixelRatio, viewport.height * devicePixelRatio];\n  const focalDistance = gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_2__.transformMat4([], [0, 0, -viewport.focalDistance, 1], viewport.projectionMatrix)[3] || 1;\n  const uniforms = {\n    project_uCoordinateSystem: coordinateSystem,\n    project_uProjectionMode: viewport.projectionMode,\n    project_uCoordinateOrigin: shaderCoordinateOrigin,\n    project_uCommonOrigin: originCommon.slice(0, 3),\n    project_uCenter: projectionCenter,\n    project_uPseudoMeters: Boolean(viewport._pseudoMeters),\n    project_uViewportSize: viewportSize,\n    project_uDevicePixelRatio: devicePixelRatio,\n    project_uFocalDistance: focalDistance,\n    project_uCommonUnitsPerMeter: distanceScales.unitsPerMeter,\n    project_uCommonUnitsPerWorldUnit: distanceScales.unitsPerMeter,\n    project_uCommonUnitsPerWorldUnit2: DEFAULT_PIXELS_PER_UNIT2,\n    project_uScale: viewport.scale,\n    project_uWrapLongitude: false,\n    project_uViewProjectionMatrix: viewProjectionMatrix,\n    project_uModelMatrix: IDENTITY_MATRIX,\n    project_uCameraPosition: cameraPosCommon\n  };\n\n  if (geospatialOrigin) {\n    const distanceScalesAtOrigin = viewport.getDistanceScales(geospatialOrigin);\n\n    switch (coordinateSystem) {\n      case _lib_constants__WEBPACK_IMPORTED_MODULE_1__.COORDINATE_SYSTEM.METER_OFFSETS:\n        uniforms.project_uCommonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerMeter;\n        uniforms.project_uCommonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerMeter2;\n        break;\n\n      case _lib_constants__WEBPACK_IMPORTED_MODULE_1__.COORDINATE_SYSTEM.LNGLAT:\n      case _lib_constants__WEBPACK_IMPORTED_MODULE_1__.COORDINATE_SYSTEM.LNGLAT_OFFSETS:\n        if (!viewport._pseudoMeters) {\n          uniforms.project_uCommonUnitsPerMeter = distanceScalesAtOrigin.unitsPerMeter;\n        }\n\n        uniforms.project_uCommonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerDegree;\n        uniforms.project_uCommonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerDegree2;\n        break;\n\n      case _lib_constants__WEBPACK_IMPORTED_MODULE_1__.COORDINATE_SYSTEM.CARTESIAN:\n        uniforms.project_uCommonUnitsPerWorldUnit = [1, 1, distanceScalesAtOrigin.unitsPerMeter[2]];\n        uniforms.project_uCommonUnitsPerWorldUnit2 = [0, 0, distanceScalesAtOrigin.unitsPerMeter2[2]];\n        break;\n\n      default:\n        break;\n    }\n  }\n\n  return uniforms;\n}\n//# sourceMappingURL=viewport-uniforms.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/shaderlib/project/viewport-uniforms.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/shaderlib/project32/project32.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/shaderlib/project32/project32.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _project_project__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../project/project */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project.js\");\n\nconst vs = \"\\nvec4 project_position_to_clipspace(\\n  vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition\\n) {\\n  vec3 projectedPosition = project_position(position, position64Low);\\n  mat3 rotation;\\n  if (project_needs_rotation(projectedPosition, rotation)) {\\n    // offset is specified as ENU\\n    // when in globe projection, rotate offset so that the ground alighs with the surface of the globe\\n    offset = rotation * offset;\\n  }\\n  commonPosition = vec4(projectedPosition + offset, 1.0);\\n  return project_common_position_to_clipspace(commonPosition);\\n}\\n\\nvec4 project_position_to_clipspace(\\n  vec3 position, vec3 position64Low, vec3 offset\\n) {\\n  vec4 commonPosition;\\n  return project_position_to_clipspace(position, position64Low, offset, commonPosition);\\n}\\n\";\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'project32',\n  dependencies: [_project_project__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n  vs\n});\n//# sourceMappingURL=project32.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/shaderlib/project32/project32.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/shaderlib/shadow/shadow.js":
/*!************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/shaderlib/shadow/shadow.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../lib/constants */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _project_project__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../project/project */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/matrix4.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/vector3.js\");\n/* harmony import */ var _utils_memoize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/memoize */ \"./node_modules/@deck.gl/core/dist/esm/utils/memoize.js\");\n/* harmony import */ var _math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/web-mercator */ \"./node_modules/@math.gl/web-mercator/dist/esm/index.js\");\n\n\n\n\n\nconst vs = \"\\nconst int max_lights = 2;\\nuniform mat4 shadow_uViewProjectionMatrices[max_lights];\\nuniform vec4 shadow_uProjectCenters[max_lights];\\nuniform bool shadow_uDrawShadowMap;\\nuniform bool shadow_uUseShadowMap;\\nuniform int shadow_uLightId;\\nuniform float shadow_uLightCount;\\n\\nvarying vec3 shadow_vPosition[max_lights];\\n\\nvec4 shadow_setVertexPosition(vec4 position_commonspace) {\\n  if (shadow_uDrawShadowMap) {\\n    return project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[shadow_uLightId], shadow_uProjectCenters[shadow_uLightId]);\\n  }\\n  if (shadow_uUseShadowMap) {\\n    for (int i = 0; i < max_lights; i++) {\\n      if(i < int(shadow_uLightCount)) {\\n        vec4 shadowMap_position = project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[i], shadow_uProjectCenters[i]);\\n        shadow_vPosition[i] = (shadowMap_position.xyz / shadowMap_position.w + 1.0) / 2.0;\\n      }\\n    }\\n  }\\n  return gl_Position;\\n}\\n\";\nconst fs = \"\\nconst int max_lights = 2;\\nuniform bool shadow_uDrawShadowMap;\\nuniform bool shadow_uUseShadowMap;\\nuniform sampler2D shadow_uShadowMap0;\\nuniform sampler2D shadow_uShadowMap1;\\nuniform vec4 shadow_uColor;\\nuniform float shadow_uLightCount;\\n\\nvarying vec3 shadow_vPosition[max_lights];\\n\\nconst vec4 bitPackShift = vec4(1.0, 255.0, 65025.0, 16581375.0);\\nconst vec4 bitUnpackShift = 1.0 / bitPackShift;\\nconst vec4 bitMask = vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0,  0.0);\\n\\nfloat shadow_getShadowWeight(vec3 position, sampler2D shadowMap) {\\n  vec4 rgbaDepth = texture2D(shadowMap, position.xy);\\n\\n  float z = dot(rgbaDepth, bitUnpackShift);\\n  return smoothstep(0.001, 0.01, position.z - z);\\n}\\n\\nvec4 shadow_filterShadowColor(vec4 color) {\\n  if (shadow_uDrawShadowMap) {\\n    vec4 rgbaDepth = fract(gl_FragCoord.z * bitPackShift);\\n    rgbaDepth -= rgbaDepth.gbaa * bitMask;\\n    return rgbaDepth;\\n  }\\n  if (shadow_uUseShadowMap) {\\n    float shadowAlpha = 0.0;\\n    shadowAlpha += shadow_getShadowWeight(shadow_vPosition[0], shadow_uShadowMap0);\\n    if(shadow_uLightCount > 1.0) {\\n      shadowAlpha += shadow_getShadowWeight(shadow_vPosition[1], shadow_uShadowMap1);\\n    }\\n    shadowAlpha *= shadow_uColor.a / shadow_uLightCount;\\n    float blendedAlpha = shadowAlpha + color.a * (1.0 - shadowAlpha);\\n\\n    return vec4(\\n      mix(color.rgb, shadow_uColor.rgb, shadowAlpha / blendedAlpha),\\n      blendedAlpha\\n    );\\n  }\\n  return color;\\n}\\n\";\nconst getMemoizedViewportCenterPosition = (0,_utils_memoize__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(getViewportCenterPosition);\nconst getMemoizedViewProjectionMatrices = (0,_utils_memoize__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(getViewProjectionMatrices);\nconst DEFAULT_SHADOW_COLOR = [0, 0, 0, 1.0];\nconst VECTOR_TO_POINT_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0];\n\nfunction screenToCommonSpace(xyz, pixelUnprojectionMatrix) {\n  const [x, y, z] = xyz;\n  const coord = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_0__.pixelsToWorld)([x, y, z], pixelUnprojectionMatrix);\n\n  if (Number.isFinite(z)) {\n    return coord;\n  }\n\n  return [coord[0], coord[1], 0];\n}\n\nfunction getViewportCenterPosition({\n  viewport,\n  center\n}) {\n  return new _math_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"](viewport.viewProjectionMatrix).invert().transform(center);\n}\n\nfunction getViewProjectionMatrices({\n  viewport,\n  shadowMatrices\n}) {\n  const projectionMatrices = [];\n  const pixelUnprojectionMatrix = viewport.pixelUnprojectionMatrix;\n  const farZ = viewport.isGeospatial ? undefined : 1;\n  const corners = [[0, 0, farZ], [viewport.width, 0, farZ], [0, viewport.height, farZ], [viewport.width, viewport.height, farZ], [0, 0, -1], [viewport.width, 0, -1], [0, viewport.height, -1], [viewport.width, viewport.height, -1]].map(pixel => screenToCommonSpace(pixel, pixelUnprojectionMatrix));\n\n  for (const shadowMatrix of shadowMatrices) {\n    const viewMatrix = shadowMatrix.clone().translate(new _math_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"](viewport.center).negate());\n    const positions = corners.map(corner => viewMatrix.transform(corner));\n    const projectionMatrix = new _math_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"]().ortho({\n      left: Math.min(...positions.map(position => position[0])),\n      right: Math.max(...positions.map(position => position[0])),\n      bottom: Math.min(...positions.map(position => position[1])),\n      top: Math.max(...positions.map(position => position[1])),\n      near: Math.min(...positions.map(position => -position[2])),\n      far: Math.max(...positions.map(position => -position[2]))\n    });\n    projectionMatrices.push(projectionMatrix.multiplyRight(shadowMatrix));\n  }\n\n  return projectionMatrices;\n}\n\nfunction createShadowUniforms(opts, context) {\n  const {\n    shadowEnabled = true\n  } = opts;\n\n  if (!shadowEnabled || !opts.shadowMatrices || !opts.shadowMatrices.length) {\n    return {\n      shadow_uDrawShadowMap: false,\n      shadow_uUseShadowMap: false\n    };\n  }\n\n  const uniforms = {\n    shadow_uDrawShadowMap: Boolean(opts.drawToShadowMap),\n    shadow_uUseShadowMap: opts.shadowMaps ? opts.shadowMaps.length > 0 : false,\n    shadow_uColor: opts.shadowColor || DEFAULT_SHADOW_COLOR,\n    shadow_uLightId: opts.shadowLightId || 0,\n    shadow_uLightCount: opts.shadowMatrices.length\n  };\n  const center = getMemoizedViewportCenterPosition({\n    viewport: opts.viewport,\n    center: context.project_uCenter\n  });\n  const projectCenters = [];\n  const viewProjectionMatrices = getMemoizedViewProjectionMatrices({\n    shadowMatrices: opts.shadowMatrices,\n    viewport: opts.viewport\n  }).slice();\n\n  for (let i = 0; i < opts.shadowMatrices.length; i++) {\n    const viewProjectionMatrix = viewProjectionMatrices[i];\n    const viewProjectionMatrixCentered = viewProjectionMatrix.clone().translate(new _math_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"](opts.viewport.center).negate());\n\n    if (context.project_uCoordinateSystem === _lib_constants__WEBPACK_IMPORTED_MODULE_4__.COORDINATE_SYSTEM.LNGLAT && context.project_uProjectionMode === _lib_constants__WEBPACK_IMPORTED_MODULE_4__.PROJECTION_MODE.WEB_MERCATOR) {\n      viewProjectionMatrices[i] = viewProjectionMatrixCentered;\n      projectCenters[i] = center;\n    } else {\n      viewProjectionMatrices[i] = viewProjectionMatrix.clone().multiplyRight(VECTOR_TO_POINT_MATRIX);\n      projectCenters[i] = viewProjectionMatrixCentered.transform(center);\n    }\n  }\n\n  for (let i = 0; i < viewProjectionMatrices.length; i++) {\n    uniforms[\"shadow_uViewProjectionMatrices[\".concat(i, \"]\")] = viewProjectionMatrices[i];\n    uniforms[\"shadow_uProjectCenters[\".concat(i, \"]\")] = projectCenters[i];\n\n    if (opts.shadowMaps && opts.shadowMaps.length > 0) {\n      uniforms[\"shadow_uShadowMap\".concat(i)] = opts.shadowMaps[i];\n    } else {\n      uniforms[\"shadow_uShadowMap\".concat(i)] = opts.dummyShadowMap;\n    }\n  }\n\n  return uniforms;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'shadow',\n  dependencies: [_project_project__WEBPACK_IMPORTED_MODULE_5__[\"default\"]],\n  vs,\n  fs,\n  inject: {\n    'vs:DECKGL_FILTER_GL_POSITION': \"\\n    position = shadow_setVertexPosition(geometry.position);\\n    \",\n    'fs:DECKGL_FILTER_COLOR': \"\\n    color = shadow_filterShadowColor(color);\\n    \"\n  },\n  getUniforms: (opts = {}, context = {}) => {\n    if ('viewport' in opts && (opts.drawToShadowMap || opts.shadowMaps && opts.shadowMaps.length > 0)) {\n      return createShadowUniforms(opts, context);\n    }\n\n    return {};\n  }\n});\n//# sourceMappingURL=shadow.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/shaderlib/shadow/shadow.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/transitions/cpu-interpolation-transition.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/transitions/cpu-interpolation-transition.js ***!
  \*****************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ CPUInterpolationTransition; }\n/* harmony export */ });\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n/* harmony import */ var _transition__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transition */ \"./node_modules/@deck.gl/core/dist/esm/transitions/transition.js\");\n\n\nclass CPUInterpolationTransition extends _transition__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n  get value() {\n    return this._value;\n  }\n\n  _onUpdate() {\n    const {\n      time,\n      settings: {\n        fromValue,\n        toValue,\n        duration,\n        easing\n      }\n    } = this;\n    const t = easing(time / duration);\n    this._value = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_1__.lerp)(fromValue, toValue, t);\n  }\n\n}\n//# sourceMappingURL=cpu-interpolation-transition.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/transitions/cpu-interpolation-transition.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/transitions/cpu-spring-transition.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/transitions/cpu-spring-transition.js ***!
  \**********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ CPUSpringTransition; }\n/* harmony export */ });\n/* harmony import */ var _transition__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transition */ \"./node_modules/@deck.gl/core/dist/esm/transitions/transition.js\");\n\nconst EPSILON = 1e-5;\n\nfunction updateSpringElement(prev, cur, dest, damping, stiffness) {\n  const velocity = cur - prev;\n  const delta = dest - cur;\n  const spring = delta * stiffness;\n  const damper = -velocity * damping;\n  return spring + damper + velocity + cur;\n}\n\nfunction updateSpring(prev, cur, dest, damping, stiffness) {\n  if (Array.isArray(dest)) {\n    const next = [];\n\n    for (let i = 0; i < dest.length; i++) {\n      next[i] = updateSpringElement(prev[i], cur[i], dest[i], damping, stiffness);\n    }\n\n    return next;\n  }\n\n  return updateSpringElement(prev, cur, dest, damping, stiffness);\n}\n\nfunction distance(value1, value2) {\n  if (Array.isArray(value1)) {\n    let distanceSquare = 0;\n\n    for (let i = 0; i < value1.length; i++) {\n      const d = value1[i] - value2[i];\n      distanceSquare += d * d;\n    }\n\n    return Math.sqrt(distanceSquare);\n  }\n\n  return Math.abs(value1 - value2);\n}\n\nclass CPUSpringTransition extends _transition__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n  get value() {\n    return this._currValue;\n  }\n\n  _onUpdate() {\n    const {\n      fromValue,\n      toValue,\n      damping,\n      stiffness\n    } = this.settings;\n    const {\n      _prevValue = fromValue,\n      _currValue = fromValue\n    } = this;\n    let nextValue = updateSpring(_prevValue, _currValue, toValue, damping, stiffness);\n    const delta = distance(nextValue, toValue);\n    const velocity = distance(nextValue, _currValue);\n\n    if (delta < EPSILON && velocity < EPSILON) {\n      nextValue = toValue;\n      this.end();\n    }\n\n    this._prevValue = _currValue;\n    this._currValue = nextValue;\n  }\n\n}\n//# sourceMappingURL=cpu-spring-transition.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/transitions/cpu-spring-transition.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/transitions/fly-to-interpolator.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/transitions/fly-to-interpolator.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ FlyToInterpolator; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _transition_interpolator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transition-interpolator */ \"./node_modules/@deck.gl/core/dist/esm/transitions/transition-interpolator.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n/* harmony import */ var _math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @math.gl/web-mercator */ \"./node_modules/@math.gl/web-mercator/dist/esm/index.js\");\n\n\n\n\nconst LINEARLY_INTERPOLATED_PROPS = ['bearing', 'pitch'];\nconst DEFAULT_OPTS = {\n  speed: 1.2,\n  curve: 1.414\n};\nclass FlyToInterpolator extends _transition_interpolator__WEBPACK_IMPORTED_MODULE_2__[\"default\"] {\n  constructor(opts = {}) {\n    super({\n      compare: ['longitude', 'latitude', 'zoom', 'bearing', 'pitch'],\n      extract: ['width', 'height', 'longitude', 'latitude', 'zoom', 'bearing', 'pitch'],\n      required: ['width', 'height', 'latitude', 'longitude', 'zoom']\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"opts\", void 0);\n\n    this.opts = { ...DEFAULT_OPTS,\n      ...opts\n    };\n  }\n\n  interpolateProps(startProps, endProps, t) {\n    const viewport = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.flyToViewport)(startProps, endProps, t, this.opts);\n\n    for (const key of LINEARLY_INTERPOLATED_PROPS) {\n      viewport[key] = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_3__.lerp)(startProps[key] || 0, endProps[key] || 0, t);\n    }\n\n    return viewport;\n  }\n\n  getDuration(startProps, endProps) {\n    let {\n      transitionDuration\n    } = endProps;\n\n    if (transitionDuration === 'auto') {\n      transitionDuration = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.getFlyToDuration)(startProps, endProps, this.opts);\n    }\n\n    return transitionDuration;\n  }\n\n}\n//# sourceMappingURL=fly-to-interpolator.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/transitions/fly-to-interpolator.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/transitions/gpu-interpolation-transition.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/transitions/gpu-interpolation-transition.js ***!
  \*****************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ GPUInterpolationTransition; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/transform/transform.js\");\n/* harmony import */ var _lib_attribute_attribute__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lib/attribute/attribute */ \"./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute.js\");\n/* harmony import */ var _lib_attribute_attribute_transition_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../lib/attribute/attribute-transition-utils */ \"./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-transition-utils.js\");\n/* harmony import */ var _transition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transition */ \"./node_modules/@deck.gl/core/dist/esm/transitions/transition.js\");\n\n\n\n\n\nclass GPUInterpolationTransition {\n  constructor({\n    gl,\n    attribute,\n    timeline\n  }) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"gl\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"type\", 'interpolation');\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"attributeInTransition\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"settings\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"attribute\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"transition\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"currentStartIndices\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"currentLength\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"transform\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"buffers\", void 0);\n\n    this.gl = gl;\n    this.transition = new _transition__WEBPACK_IMPORTED_MODULE_1__[\"default\"](timeline);\n    this.attribute = attribute;\n    this.attributeInTransition = new _lib_attribute_attribute__WEBPACK_IMPORTED_MODULE_2__[\"default\"](gl, attribute.settings);\n    this.currentStartIndices = attribute.startIndices;\n    this.currentLength = 0;\n    this.transform = getTransform(gl, attribute);\n    const bufferOpts = {\n      byteLength: 0,\n      usage: 35050\n    };\n    this.buffers = [new _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"](gl, bufferOpts), new _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"](gl, bufferOpts)];\n  }\n\n  get inProgress() {\n    return this.transition.inProgress;\n  }\n\n  start(transitionSettings, numInstances) {\n    if (transitionSettings.duration <= 0) {\n      this.transition.cancel();\n      return;\n    }\n\n    this.settings = transitionSettings;\n    const {\n      gl,\n      buffers,\n      attribute\n    } = this;\n    (0,_lib_attribute_attribute_transition_utils__WEBPACK_IMPORTED_MODULE_4__.cycleBuffers)(buffers);\n    const padBufferOpts = {\n      numInstances,\n      attribute,\n      fromLength: this.currentLength,\n      fromStartIndices: this.currentStartIndices,\n      getData: transitionSettings.enter\n    };\n\n    for (const buffer of buffers) {\n      (0,_lib_attribute_attribute_transition_utils__WEBPACK_IMPORTED_MODULE_4__.padBuffer)({\n        buffer,\n        ...padBufferOpts\n      });\n    }\n\n    this.currentStartIndices = attribute.startIndices;\n    this.currentLength = (0,_lib_attribute_attribute_transition_utils__WEBPACK_IMPORTED_MODULE_4__.getAttributeBufferLength)(attribute, numInstances);\n    this.attributeInTransition.setData({\n      buffer: buffers[1],\n      value: attribute.value\n    });\n    this.transition.start(transitionSettings);\n    this.transform.update({\n      elementCount: Math.floor(this.currentLength / attribute.size),\n      sourceBuffers: {\n        aFrom: buffers[0],\n        aTo: (0,_lib_attribute_attribute_transition_utils__WEBPACK_IMPORTED_MODULE_4__.getSourceBufferAttribute)(gl, attribute)\n      },\n      feedbackBuffers: {\n        vCurrent: buffers[1]\n      }\n    });\n  }\n\n  update() {\n    const updated = this.transition.update();\n\n    if (updated) {\n      const {\n        duration,\n        easing\n      } = this.settings;\n      const {\n        time\n      } = this.transition;\n      let t = time / duration;\n\n      if (easing) {\n        t = easing(t);\n      }\n\n      this.transform.run({\n        uniforms: {\n          time: t\n        }\n      });\n    }\n\n    return updated;\n  }\n\n  cancel() {\n    this.transition.cancel();\n    this.transform.delete();\n\n    for (const buffer of this.buffers) {\n      buffer.delete();\n    }\n\n    this.buffers.length = 0;\n  }\n\n}\nconst vs = \"\\n#define SHADER_NAME interpolation-transition-vertex-shader\\n\\nuniform float time;\\nattribute ATTRIBUTE_TYPE aFrom;\\nattribute ATTRIBUTE_TYPE aTo;\\nvarying ATTRIBUTE_TYPE vCurrent;\\n\\nvoid main(void) {\\n  vCurrent = mix(aFrom, aTo, time);\\n  gl_Position = vec4(0.0);\\n}\\n\";\n\nfunction getTransform(gl, attribute) {\n  const attributeType = (0,_lib_attribute_attribute_transition_utils__WEBPACK_IMPORTED_MODULE_4__.getAttributeTypeFromSize)(attribute.size);\n  return new _luma_gl_core__WEBPACK_IMPORTED_MODULE_5__[\"default\"](gl, {\n    vs,\n    defines: {\n      ATTRIBUTE_TYPE: attributeType\n    },\n    varyings: ['vCurrent']\n  });\n}\n//# sourceMappingURL=gpu-interpolation-transition.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/transitions/gpu-interpolation-transition.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/transitions/gpu-spring-transition.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/transitions/gpu-spring-transition.js ***!
  \**********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ GPUSpringTransition; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/copy-and-blit.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/transform/transform.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js\");\n/* harmony import */ var _lib_attribute_attribute_transition_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../lib/attribute/attribute-transition-utils */ \"./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-transition-utils.js\");\n/* harmony import */ var _lib_attribute_attribute__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lib/attribute/attribute */ \"./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute.js\");\n/* harmony import */ var _transition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transition */ \"./node_modules/@deck.gl/core/dist/esm/transitions/transition.js\");\n\n\n\n\n\nclass GPUSpringTransition {\n  constructor({\n    gl,\n    attribute,\n    timeline\n  }) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"gl\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"type\", 'spring');\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"attributeInTransition\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"settings\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"attribute\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"transition\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"currentStartIndices\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"currentLength\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"texture\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"framebuffer\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"transform\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"buffers\", void 0);\n\n    this.gl = gl;\n    this.type = 'spring';\n    this.transition = new _transition__WEBPACK_IMPORTED_MODULE_1__[\"default\"](timeline);\n    this.attribute = attribute;\n    this.attributeInTransition = new _lib_attribute_attribute__WEBPACK_IMPORTED_MODULE_2__[\"default\"](gl, { ...attribute.settings,\n      normalized: false\n    });\n    this.currentStartIndices = attribute.startIndices;\n    this.currentLength = 0;\n    this.texture = getTexture(gl);\n    this.framebuffer = getFramebuffer(gl, this.texture);\n    this.transform = getTransform(gl, attribute, this.framebuffer);\n    const bufferOpts = {\n      byteLength: 0,\n      usage: 35050\n    };\n    this.buffers = [new _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"](gl, bufferOpts), new _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"](gl, bufferOpts), new _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"](gl, bufferOpts)];\n  }\n\n  get inProgress() {\n    return this.transition.inProgress;\n  }\n\n  start(transitionSettings, numInstances) {\n    const {\n      gl,\n      buffers,\n      attribute\n    } = this;\n    const padBufferOpts = {\n      numInstances,\n      attribute,\n      fromLength: this.currentLength,\n      fromStartIndices: this.currentStartIndices,\n      getData: transitionSettings.enter\n    };\n\n    for (const buffer of buffers) {\n      (0,_lib_attribute_attribute_transition_utils__WEBPACK_IMPORTED_MODULE_4__.padBuffer)({\n        buffer,\n        ...padBufferOpts\n      });\n    }\n\n    this.settings = transitionSettings;\n    this.currentStartIndices = attribute.startIndices;\n    this.currentLength = (0,_lib_attribute_attribute_transition_utils__WEBPACK_IMPORTED_MODULE_4__.getAttributeBufferLength)(attribute, numInstances);\n    this.attributeInTransition.setData({\n      buffer: buffers[1],\n      value: attribute.value\n    });\n    this.transition.start({ ...transitionSettings,\n      duration: Infinity\n    });\n    this.transform.update({\n      elementCount: Math.floor(this.currentLength / attribute.size),\n      sourceBuffers: {\n        aTo: (0,_lib_attribute_attribute_transition_utils__WEBPACK_IMPORTED_MODULE_4__.getSourceBufferAttribute)(gl, attribute)\n      }\n    });\n  }\n\n  update() {\n    const {\n      buffers,\n      transform,\n      framebuffer,\n      transition\n    } = this;\n    const updated = transition.update();\n\n    if (!updated) {\n      return false;\n    }\n\n    const settings = this.settings;\n    transform.update({\n      sourceBuffers: {\n        aPrev: buffers[0],\n        aCur: buffers[1]\n      },\n      feedbackBuffers: {\n        vNext: buffers[2]\n      }\n    });\n    transform.run({\n      framebuffer,\n      discard: false,\n      clearRenderTarget: true,\n      uniforms: {\n        stiffness: settings.stiffness,\n        damping: settings.damping\n      },\n      parameters: {\n        depthTest: false,\n        blend: true,\n        viewport: [0, 0, 1, 1],\n        blendFunc: [1, 1],\n        blendEquation: [32776, 32776]\n      }\n    });\n    (0,_lib_attribute_attribute_transition_utils__WEBPACK_IMPORTED_MODULE_4__.cycleBuffers)(buffers);\n    this.attributeInTransition.setData({\n      buffer: buffers[1],\n      value: this.attribute.value\n    });\n    const isTransitioning = (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_5__.readPixelsToArray)(framebuffer)[0] > 0;\n\n    if (!isTransitioning) {\n      transition.end();\n    }\n\n    return true;\n  }\n\n  cancel() {\n    this.transition.cancel();\n    this.transform.delete();\n\n    for (const buffer of this.buffers) {\n      buffer.delete();\n    }\n\n    this.buffers.length = 0;\n    this.texture.delete();\n    this.framebuffer.delete();\n  }\n\n}\n\nfunction getTransform(gl, attribute, framebuffer) {\n  const attributeType = (0,_lib_attribute_attribute_transition_utils__WEBPACK_IMPORTED_MODULE_4__.getAttributeTypeFromSize)(attribute.size);\n  return new _luma_gl_core__WEBPACK_IMPORTED_MODULE_6__[\"default\"](gl, {\n    framebuffer,\n    vs: \"\\n#define SHADER_NAME spring-transition-vertex-shader\\n\\n#define EPSILON 0.00001\\n\\nuniform float stiffness;\\nuniform float damping;\\nattribute ATTRIBUTE_TYPE aPrev;\\nattribute ATTRIBUTE_TYPE aCur;\\nattribute ATTRIBUTE_TYPE aTo;\\nvarying ATTRIBUTE_TYPE vNext;\\nvarying float vIsTransitioningFlag;\\n\\nATTRIBUTE_TYPE getNextValue(ATTRIBUTE_TYPE cur, ATTRIBUTE_TYPE prev, ATTRIBUTE_TYPE dest) {\\n  ATTRIBUTE_TYPE velocity = cur - prev;\\n  ATTRIBUTE_TYPE delta = dest - cur;\\n  ATTRIBUTE_TYPE spring = delta * stiffness;\\n  ATTRIBUTE_TYPE damper = velocity * -1.0 * damping;\\n  return spring + damper + velocity + cur;\\n}\\n\\nvoid main(void) {\\n  bool isTransitioning = length(aCur - aPrev) > EPSILON || length(aTo - aCur) > EPSILON;\\n  vIsTransitioningFlag = isTransitioning ? 1.0 : 0.0;\\n\\n  vNext = getNextValue(aCur, aPrev, aTo);\\n  gl_Position = vec4(0, 0, 0, 1);\\n  gl_PointSize = 100.0;\\n}\\n\",\n    fs: \"\\n#define SHADER_NAME spring-transition-is-transitioning-fragment-shader\\n\\nvarying float vIsTransitioningFlag;\\n\\nvoid main(void) {\\n  if (vIsTransitioningFlag == 0.0) {\\n    discard;\\n  }\\n  gl_FragColor = vec4(1.0);\\n}\",\n    defines: {\n      ATTRIBUTE_TYPE: attributeType\n    },\n    varyings: ['vNext']\n  });\n}\n\nfunction getTexture(gl) {\n  return new _luma_gl_core__WEBPACK_IMPORTED_MODULE_7__[\"default\"](gl, {\n    data: new Uint8Array(4),\n    format: 6408,\n    type: 5121,\n    border: 0,\n    mipmaps: false,\n    dataFormat: 6408,\n    width: 1,\n    height: 1\n  });\n}\n\nfunction getFramebuffer(gl, texture) {\n  return new _luma_gl_core__WEBPACK_IMPORTED_MODULE_8__[\"default\"](gl, {\n    id: 'spring-transition-is-transitioning-framebuffer',\n    width: 1,\n    height: 1,\n    attachments: {\n      [36064]: texture\n    }\n  });\n}\n//# sourceMappingURL=gpu-spring-transition.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/transitions/gpu-spring-transition.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/transitions/linear-interpolator.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/transitions/linear-interpolator.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LinearInterpolator; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _transition_interpolator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transition-interpolator */ \"./node_modules/@deck.gl/core/dist/esm/transitions/transition-interpolator.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n\n\n\nconst DEFAULT_PROPS = ['longitude', 'latitude', 'zoom', 'bearing', 'pitch'];\nconst DEFAULT_REQUIRED_PROPS = ['longitude', 'latitude', 'zoom'];\nclass LinearInterpolator extends _transition_interpolator__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(opts = {}) {\n    const transitionProps = Array.isArray(opts) ? opts : opts.transitionProps;\n    const normalizedOpts = Array.isArray(opts) ? {} : opts;\n    normalizedOpts.transitionProps = Array.isArray(transitionProps) ? {\n      compare: transitionProps,\n      required: transitionProps\n    } : transitionProps || {\n      compare: DEFAULT_PROPS,\n      required: DEFAULT_REQUIRED_PROPS\n    };\n    super(normalizedOpts.transitionProps);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"opts\", void 0);\n\n    this.opts = normalizedOpts;\n  }\n\n  initializeProps(startProps, endProps) {\n    const result = super.initializeProps(startProps, endProps);\n    const {\n      makeViewport,\n      around\n    } = this.opts;\n\n    if (makeViewport && around) {\n      const startViewport = makeViewport(startProps);\n      const endViewport = makeViewport(endProps);\n      const aroundPosition = startViewport.unproject(around);\n      result.start.around = around;\n      Object.assign(result.end, {\n        around: endViewport.project(aroundPosition),\n        aroundPosition,\n        width: endProps.width,\n        height: endProps.height\n      });\n    }\n\n    return result;\n  }\n\n  interpolateProps(startProps, endProps, t) {\n    const propsInTransition = {};\n\n    for (const key of this._propsToExtract) {\n      propsInTransition[key] = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_2__.lerp)(startProps[key] || 0, endProps[key] || 0, t);\n    }\n\n    if (endProps.aroundPosition && this.opts.makeViewport) {\n      const viewport = this.opts.makeViewport({ ...endProps,\n        ...propsInTransition\n      });\n      Object.assign(propsInTransition, viewport.panByPosition(endProps.aroundPosition, (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_2__.lerp)(startProps.around, endProps.around, t)));\n    }\n\n    return propsInTransition;\n  }\n\n}\n//# sourceMappingURL=linear-interpolator.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/transitions/linear-interpolator.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/transitions/transition-interpolator.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/transitions/transition-interpolator.js ***!
  \************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ TransitionInterpolator; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@deck.gl/core/dist/esm/utils/assert.js\");\n\n\n\nclass TransitionInterpolator {\n  constructor(opts) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_propsToCompare\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_propsToExtract\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_requiredProps\", void 0);\n\n    const {\n      compare,\n      extract,\n      required\n    } = opts;\n    this._propsToCompare = compare;\n    this._propsToExtract = extract || compare;\n    this._requiredProps = required;\n  }\n\n  arePropsEqual(currentProps, nextProps) {\n    for (const key of this._propsToCompare) {\n      if (!(key in currentProps) || !(key in nextProps) || !(0,_math_gl_core__WEBPACK_IMPORTED_MODULE_1__.equals)(currentProps[key], nextProps[key])) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  initializeProps(startProps, endProps) {\n    const startViewStateProps = {};\n    const endViewStateProps = {};\n\n    for (const key of this._propsToExtract) {\n      if (key in startProps || key in endProps) {\n        startViewStateProps[key] = startProps[key];\n        endViewStateProps[key] = endProps[key];\n      }\n    }\n\n    this._checkRequiredProps(startViewStateProps);\n\n    this._checkRequiredProps(endViewStateProps);\n\n    return {\n      start: startViewStateProps,\n      end: endViewStateProps\n    };\n  }\n\n  getDuration(startProps, endProps) {\n    return endProps.transitionDuration;\n  }\n\n  _checkRequiredProps(props) {\n    if (!this._requiredProps) {\n      return;\n    }\n\n    this._requiredProps.forEach(propName => {\n      const value = props[propName];\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Number.isFinite(value) || Array.isArray(value), \"\".concat(propName, \" is required for transition\"));\n    });\n  }\n\n}\n//# sourceMappingURL=transition-interpolator.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/transitions/transition-interpolator.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/transitions/transition.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/transitions/transition.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Transition; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\nclass Transition {\n  constructor(timeline) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_inProgress\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_handle\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_timeline\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"time\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"settings\", void 0);\n\n    this._inProgress = false;\n    this._handle = null;\n    this._timeline = timeline;\n    this.time = 0;\n    this.settings = {\n      duration: 0\n    };\n  }\n\n  get inProgress() {\n    return this._inProgress;\n  }\n\n  start(settings) {\n    var _this$settings$onStar, _this$settings;\n\n    this.cancel();\n    this.settings = settings;\n    this._inProgress = true;\n    (_this$settings$onStar = (_this$settings = this.settings).onStart) === null || _this$settings$onStar === void 0 ? void 0 : _this$settings$onStar.call(_this$settings, this);\n  }\n\n  end() {\n    if (this._inProgress) {\n      var _this$settings$onEnd, _this$settings2;\n\n      this._timeline.removeChannel(this._handle);\n\n      this._handle = null;\n      this._inProgress = false;\n      (_this$settings$onEnd = (_this$settings2 = this.settings).onEnd) === null || _this$settings$onEnd === void 0 ? void 0 : _this$settings$onEnd.call(_this$settings2, this);\n    }\n  }\n\n  cancel() {\n    if (this._inProgress) {\n      var _this$settings$onInte, _this$settings3;\n\n      (_this$settings$onInte = (_this$settings3 = this.settings).onInterrupt) === null || _this$settings$onInte === void 0 ? void 0 : _this$settings$onInte.call(_this$settings3, this);\n\n      this._timeline.removeChannel(this._handle);\n\n      this._handle = null;\n      this._inProgress = false;\n    }\n  }\n\n  update() {\n    var _this$settings$onUpda, _this$settings4;\n\n    if (!this._inProgress) {\n      return false;\n    }\n\n    if (this._handle === null) {\n      const {\n        _timeline: timeline,\n        settings\n      } = this;\n      this._handle = timeline.addChannel({\n        delay: timeline.getTime(),\n        duration: settings.duration\n      });\n    }\n\n    this.time = this._timeline.getTime(this._handle);\n\n    this._onUpdate();\n\n    (_this$settings$onUpda = (_this$settings4 = this.settings).onUpdate) === null || _this$settings$onUpda === void 0 ? void 0 : _this$settings$onUpda.call(_this$settings4, this);\n\n    if (this._timeline.isFinished(this._handle)) {\n      this.end();\n    }\n\n    return true;\n  }\n\n  _onUpdate() {}\n\n}\n//# sourceMappingURL=transition.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/transitions/transition.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/utils/array-utils.js":
/*!******************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/utils/array-utils.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"padArray\": function() { return /* binding */ padArray; }\n/* harmony export */ });\nfunction padArrayChunk(options) {\n  const {\n    source,\n    target,\n    start = 0,\n    size,\n    getData\n  } = options;\n  const end = options.end || target.length;\n  const sourceLength = source.length;\n  const targetLength = end - start;\n\n  if (sourceLength > targetLength) {\n    target.set(source.subarray(0, targetLength), start);\n    return;\n  }\n\n  target.set(source, start);\n\n  if (!getData) {\n    return;\n  }\n\n  let i = sourceLength;\n\n  while (i < targetLength) {\n    const datum = getData(i, source);\n\n    for (let j = 0; j < size; j++) {\n      target[start + i] = datum[j] || 0;\n      i++;\n    }\n  }\n}\n\nfunction padArray({\n  source,\n  target,\n  size,\n  getData,\n  sourceStartIndices,\n  targetStartIndices\n}) {\n  if (!Array.isArray(targetStartIndices)) {\n    padArrayChunk({\n      source,\n      target,\n      size,\n      getData\n    });\n    return target;\n  }\n\n  let sourceIndex = 0;\n  let targetIndex = 0;\n\n  const getChunkData = getData && ((i, chunk) => getData(i + targetIndex, chunk));\n\n  const n = Math.min(sourceStartIndices.length, targetStartIndices.length);\n\n  for (let i = 1; i < n; i++) {\n    const nextSourceIndex = sourceStartIndices[i] * size;\n    const nextTargetIndex = targetStartIndices[i] * size;\n    padArrayChunk({\n      source: source.subarray(sourceIndex, nextSourceIndex),\n      target,\n      start: targetIndex,\n      end: nextTargetIndex,\n      size,\n      getData: getChunkData\n    });\n    sourceIndex = nextSourceIndex;\n    targetIndex = nextTargetIndex;\n  }\n\n  if (targetIndex < target.length) {\n    padArrayChunk({\n      source: [],\n      target,\n      start: targetIndex,\n      size,\n      getData: getChunkData\n    });\n  }\n\n  return target;\n}\n//# sourceMappingURL=array-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/utils/array-utils.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/utils/assert.js":
/*!*************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/utils/assert.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ assert; }\n/* harmony export */ });\nfunction assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'deck.gl: assertion failed.');\n  }\n}\n//# sourceMappingURL=assert.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/utils/assert.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/utils/count.js":
/*!************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/utils/count.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"count\": function() { return /* binding */ count; }\n/* harmony export */ });\nconst ERR_NOT_OBJECT = 'count(): argument not an object';\nconst ERR_NOT_CONTAINER = 'count(): argument not a container';\nfunction count(container) {\n  if (!isObject(container)) {\n    throw new Error(ERR_NOT_OBJECT);\n  }\n\n  if (typeof container.count === 'function') {\n    return container.count();\n  }\n\n  if (Number.isFinite(container.size)) {\n    return container.size;\n  }\n\n  if (Number.isFinite(container.length)) {\n    return container.length;\n  }\n\n  if (isPlainObject(container)) {\n    return Object.keys(container).length;\n  }\n\n  throw new Error(ERR_NOT_CONTAINER);\n}\n\nfunction isPlainObject(value) {\n  return value !== null && typeof value === 'object' && value.constructor === Object;\n}\n\nfunction isObject(value) {\n  return value !== null && typeof value === 'object';\n}\n//# sourceMappingURL=count.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/utils/count.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/utils/deep-equal.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/utils/deep-equal.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"deepEqual\": function() { return /* binding */ deepEqual; }\n/* harmony export */ });\nfunction deepEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  if (!a || !b) {\n    return false;\n  }\n\n  for (const key in a) {\n    const aValue = a[key];\n    const bValue = b[key];\n    const equals = aValue === bValue || Array.isArray(aValue) && Array.isArray(bValue) && deepEqual(aValue, bValue);\n\n    if (!equals) {\n      return false;\n    }\n  }\n\n  return true;\n}\n//# sourceMappingURL=deep-equal.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/utils/deep-equal.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/utils/flatten.js":
/*!**************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/utils/flatten.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"fillArray\": function() { return /* binding */ fillArray; },\n/* harmony export */   \"flatten\": function() { return /* binding */ flatten; }\n/* harmony export */ });\nfunction flatten(array, filter = () => true) {\n  if (!Array.isArray(array)) {\n    return filter(array) ? [array] : [];\n  }\n\n  return flattenArray(array, filter, []);\n}\n\nfunction flattenArray(array, filter, result) {\n  let index = -1;\n\n  while (++index < array.length) {\n    const value = array[index];\n\n    if (Array.isArray(value)) {\n      flattenArray(value, filter, result);\n    } else if (filter(value)) {\n      result.push(value);\n    }\n  }\n\n  return result;\n}\n\nfunction fillArray({\n  target,\n  source,\n  start = 0,\n  count = 1\n}) {\n  const length = source.length;\n  const total = count * length;\n  let copied = 0;\n\n  for (let i = start; copied < length; copied++) {\n    target[i++] = source[copied];\n  }\n\n  while (copied < total) {\n    if (copied < total - copied) {\n      target.copyWithin(start + copied, start, start + copied);\n      copied *= 2;\n    } else {\n      target.copyWithin(start + copied, start, start + total - copied);\n      copied = total;\n    }\n  }\n\n  return target;\n}\n//# sourceMappingURL=flatten.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/utils/flatten.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/utils/iterable-utils.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/utils/iterable-utils.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createIterable\": function() { return /* binding */ createIterable; },\n/* harmony export */   \"getAccessorFromBuffer\": function() { return /* binding */ getAccessorFromBuffer; },\n/* harmony export */   \"isAsyncIterable\": function() { return /* binding */ isAsyncIterable; }\n/* harmony export */ });\nconst EMPTY_ARRAY = [];\nconst placeholderArray = [];\nfunction createIterable(data, startRow = 0, endRow = Infinity) {\n  let iterable = EMPTY_ARRAY;\n  const objectInfo = {\n    index: -1,\n    data,\n    target: []\n  };\n\n  if (!data) {\n    iterable = EMPTY_ARRAY;\n  } else if (typeof data[Symbol.iterator] === 'function') {\n    iterable = data;\n  } else if (data.length > 0) {\n    placeholderArray.length = data.length;\n    iterable = placeholderArray;\n  }\n\n  if (startRow > 0 || Number.isFinite(endRow)) {\n    iterable = (Array.isArray(iterable) ? iterable : Array.from(iterable)).slice(startRow, endRow);\n    objectInfo.index = startRow - 1;\n  }\n\n  return {\n    iterable,\n    objectInfo\n  };\n}\nfunction isAsyncIterable(data) {\n  return data && data[Symbol.asyncIterator];\n}\nfunction getAccessorFromBuffer(typedArray, options) {\n  const {\n    size,\n    stride,\n    offset,\n    startIndices,\n    nested\n  } = options;\n  const bytesPerElement = typedArray.BYTES_PER_ELEMENT;\n  const elementStride = stride ? stride / bytesPerElement : size;\n  const elementOffset = offset ? offset / bytesPerElement : 0;\n  const vertexCount = Math.floor((typedArray.length - elementOffset) / elementStride);\n  return (_, {\n    index,\n    target\n  }) => {\n    if (!startIndices) {\n      const sourceIndex = index * elementStride + elementOffset;\n\n      for (let j = 0; j < size; j++) {\n        target[j] = typedArray[sourceIndex + j];\n      }\n\n      return target;\n    }\n\n    const startIndex = startIndices[index];\n    const endIndex = startIndices[index + 1] || vertexCount;\n    let result;\n\n    if (nested) {\n      result = new Array(endIndex - startIndex);\n\n      for (let i = startIndex; i < endIndex; i++) {\n        const sourceIndex = i * elementStride + elementOffset;\n        target = new Array(size);\n\n        for (let j = 0; j < size; j++) {\n          target[j] = typedArray[sourceIndex + j];\n        }\n\n        result[i - startIndex] = target;\n      }\n    } else if (elementStride === size) {\n      result = typedArray.subarray(startIndex * size + elementOffset, endIndex * size + elementOffset);\n    } else {\n      result = new typedArray.constructor((endIndex - startIndex) * size);\n      let targetIndex = 0;\n\n      for (let i = startIndex; i < endIndex; i++) {\n        const sourceIndex = i * elementStride + elementOffset;\n\n        for (let j = 0; j < size; j++) {\n          result[targetIndex++] = typedArray[sourceIndex + j];\n        }\n      }\n    }\n\n    return result;\n  };\n}\n//# sourceMappingURL=iterable-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/utils/iterable-utils.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/utils/json-loader.js":
/*!******************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/utils/json-loader.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction isJSON(text) {\n  const firstChar = text[0];\n  const lastChar = text[text.length - 1];\n  return firstChar === '{' && lastChar === '}' || firstChar === '[' && lastChar === ']';\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  id: 'JSON',\n  name: 'JSON',\n  module: '',\n  version: '',\n  options: {},\n  extensions: ['json', 'geojson'],\n  mimeTypes: ['application/json', 'application/geo+json'],\n  testText: isJSON,\n  parseTextSync: JSON.parse\n});\n//# sourceMappingURL=json-loader.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/utils/json-loader.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/utils/log.js":
/*!**********************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/utils/log.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _probe_gl_log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @probe.gl/log */ \"./node_modules/@probe.gl/log/dist/esm/log.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new _probe_gl_log__WEBPACK_IMPORTED_MODULE_0__.Log({\n  id: 'deck'\n}));\n//# sourceMappingURL=log.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/utils/log.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/utils/math-utils.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/utils/math-utils.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createMat4\": function() { return /* binding */ createMat4; },\n/* harmony export */   \"fp64LowPart\": function() { return /* binding */ fp64LowPart; },\n/* harmony export */   \"getCameraPosition\": function() { return /* binding */ getCameraPosition; },\n/* harmony export */   \"getFrustumPlanes\": function() { return /* binding */ getFrustumPlanes; },\n/* harmony export */   \"mod\": function() { return /* binding */ mod; },\n/* harmony export */   \"toDoublePrecisionArray\": function() { return /* binding */ toDoublePrecisionArray; }\n/* harmony export */ });\n/* harmony import */ var _typed_array_manager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typed-array-manager */ \"./node_modules/@deck.gl/core/dist/esm/utils/typed-array-manager.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/vector3.js\");\n\n\nfunction createMat4() {\n  return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\nfunction mod(value, divisor) {\n  const modulus = value % divisor;\n  return modulus < 0 ? divisor + modulus : modulus;\n}\nfunction getCameraPosition(viewMatrixInverse) {\n  return [viewMatrixInverse[12], viewMatrixInverse[13], viewMatrixInverse[14]];\n}\nfunction getFrustumPlanes(viewProjectionMatrix) {\n  return {\n    left: getFrustumPlane(viewProjectionMatrix[3] + viewProjectionMatrix[0], viewProjectionMatrix[7] + viewProjectionMatrix[4], viewProjectionMatrix[11] + viewProjectionMatrix[8], viewProjectionMatrix[15] + viewProjectionMatrix[12]),\n    right: getFrustumPlane(viewProjectionMatrix[3] - viewProjectionMatrix[0], viewProjectionMatrix[7] - viewProjectionMatrix[4], viewProjectionMatrix[11] - viewProjectionMatrix[8], viewProjectionMatrix[15] - viewProjectionMatrix[12]),\n    bottom: getFrustumPlane(viewProjectionMatrix[3] + viewProjectionMatrix[1], viewProjectionMatrix[7] + viewProjectionMatrix[5], viewProjectionMatrix[11] + viewProjectionMatrix[9], viewProjectionMatrix[15] + viewProjectionMatrix[13]),\n    top: getFrustumPlane(viewProjectionMatrix[3] - viewProjectionMatrix[1], viewProjectionMatrix[7] - viewProjectionMatrix[5], viewProjectionMatrix[11] - viewProjectionMatrix[9], viewProjectionMatrix[15] - viewProjectionMatrix[13]),\n    near: getFrustumPlane(viewProjectionMatrix[3] + viewProjectionMatrix[2], viewProjectionMatrix[7] + viewProjectionMatrix[6], viewProjectionMatrix[11] + viewProjectionMatrix[10], viewProjectionMatrix[15] + viewProjectionMatrix[14]),\n    far: getFrustumPlane(viewProjectionMatrix[3] - viewProjectionMatrix[2], viewProjectionMatrix[7] - viewProjectionMatrix[6], viewProjectionMatrix[11] - viewProjectionMatrix[10], viewProjectionMatrix[15] - viewProjectionMatrix[14])\n  };\n}\nconst scratchVector = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n\nfunction getFrustumPlane(a, b, c, d) {\n  scratchVector.set(a, b, c);\n  const L = scratchVector.len();\n  return {\n    distance: d / L,\n    normal: new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"default\"](-a / L, -b / L, -c / L)\n  };\n}\n\nfunction fp64LowPart(x) {\n  return x - Math.fround(x);\n}\nlet scratchArray;\nfunction toDoublePrecisionArray(typedArray, options) {\n  const {\n    size = 1,\n    startIndex = 0\n  } = options;\n  const endIndex = options.endIndex !== undefined ? options.endIndex : typedArray.length;\n  const count = (endIndex - startIndex) / size;\n  scratchArray = _typed_array_manager__WEBPACK_IMPORTED_MODULE_1__[\"default\"].allocate(scratchArray, count, {\n    type: Float32Array,\n    size: size * 2\n  });\n  let sourceIndex = startIndex;\n  let targetIndex = 0;\n\n  while (sourceIndex < endIndex) {\n    for (let j = 0; j < size; j++) {\n      const value = typedArray[sourceIndex++];\n      scratchArray[targetIndex + j] = value;\n      scratchArray[targetIndex + j + size] = fp64LowPart(value);\n    }\n\n    targetIndex += size * 2;\n  }\n\n  return scratchArray.subarray(0, count * size * 2);\n}\n//# sourceMappingURL=math-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/utils/math-utils.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/utils/memoize.js":
/*!**************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/utils/memoize.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ memoize; }\n/* harmony export */ });\nfunction isEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  if (Array.isArray(a)) {\n    const len = a.length;\n\n    if (!b || b.length !== len) {\n      return false;\n    }\n\n    for (let i = 0; i < len; i++) {\n      if (a[i] !== b[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  return false;\n}\n\nfunction memoize(compute) {\n  let cachedArgs = {};\n  let cachedResult;\n  return args => {\n    for (const key in args) {\n      if (!isEqual(args[key], cachedArgs[key])) {\n        cachedResult = compute(args);\n        cachedArgs = args;\n        break;\n      }\n    }\n\n    return cachedResult;\n  };\n}\n//# sourceMappingURL=memoize.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/utils/memoize.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/utils/positions.js":
/*!****************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/utils/positions.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getPosition\": function() { return /* binding */ getPosition; },\n/* harmony export */   \"parsePosition\": function() { return /* binding */ parsePosition; }\n/* harmony export */ });\nconst PERCENT_OR_PIXELS_REGEX = /([0-9]+\\.?[0-9]*)(%|px)/;\nfunction parsePosition(value) {\n  switch (typeof value) {\n    case 'number':\n      return {\n        position: value,\n        relative: false\n      };\n\n    case 'string':\n      const match = PERCENT_OR_PIXELS_REGEX.exec(value);\n\n      if (match && match.length >= 3) {\n        const relative = match[2] === '%';\n        const position = parseFloat(match[1]);\n        return {\n          position: relative ? position / 100 : position,\n          relative\n        };\n      }\n\n    default:\n      throw new Error(\"Could not parse position string \".concat(value));\n  }\n}\nfunction getPosition(position, extent) {\n  return position.relative ? Math.round(position.position * extent) : position.position;\n}\n//# sourceMappingURL=positions.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/utils/positions.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/utils/range.js":
/*!************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/utils/range.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EMPTY\": function() { return /* binding */ EMPTY; },\n/* harmony export */   \"FULL\": function() { return /* binding */ FULL; },\n/* harmony export */   \"add\": function() { return /* binding */ add; }\n/* harmony export */ });\nconst EMPTY = [];\nconst FULL = [[0, Infinity]];\nfunction add(rangeList, range) {\n  if (rangeList === FULL) {\n    return rangeList;\n  }\n\n  if (range[0] < 0) {\n    range[0] = 0;\n  }\n\n  if (range[0] >= range[1]) {\n    return rangeList;\n  }\n\n  const newRangeList = [];\n  const len = rangeList.length;\n  let insertPosition = 0;\n\n  for (let i = 0; i < len; i++) {\n    const range0 = rangeList[i];\n\n    if (range0[1] < range[0]) {\n      newRangeList.push(range0);\n      insertPosition = i + 1;\n    } else if (range0[0] > range[1]) {\n      newRangeList.push(range0);\n    } else {\n      range = [Math.min(range0[0], range[0]), Math.max(range0[1], range[1])];\n    }\n  }\n\n  newRangeList.splice(insertPosition, 0, range);\n  return newRangeList;\n}\n//# sourceMappingURL=range.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/utils/range.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/utils/shader.js":
/*!*************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/utils/shader.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"mergeShaders\": function() { return /* binding */ mergeShaders; }\n/* harmony export */ });\nfunction mergeShaders(target, source) {\n  if (!source) {\n    return target;\n  }\n\n  const result = { ...target,\n    ...source\n  };\n\n  if ('defines' in source) {\n    result.defines = { ...target.defines,\n      ...source.defines\n    };\n  }\n\n  if ('modules' in source) {\n    result.modules = (target.modules || []).concat(source.modules);\n\n    if (source.modules.some(module => module.name === 'project64')) {\n      const index = result.modules.findIndex(module => module.name === 'project32');\n\n      if (index >= 0) {\n        result.modules.splice(index, 1);\n      }\n    }\n  }\n\n  if ('inject' in source) {\n    if (!target.inject) {\n      result.inject = source.inject;\n    } else {\n      const mergedInjection = { ...target.inject\n      };\n\n      for (const key in source.inject) {\n        mergedInjection[key] = (mergedInjection[key] || '') + source.inject[key];\n      }\n\n      result.inject = mergedInjection;\n    }\n  }\n\n  return result;\n}\n//# sourceMappingURL=shader.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/utils/shader.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/utils/tesselator.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/utils/tesselator.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Tesselator; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _iterable_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./iterable-utils */ \"./node_modules/@deck.gl/core/dist/esm/utils/iterable-utils.js\");\n/* harmony import */ var _typed_array_manager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typed-array-manager */ \"./node_modules/@deck.gl/core/dist/esm/utils/typed-array-manager.js\");\n/* harmony import */ var _assert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./assert */ \"./node_modules/@deck.gl/core/dist/esm/utils/assert.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js\");\n\n\n\n\n\nclass Tesselator {\n  constructor(opts) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"opts\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"typedArrayManager\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"indexStarts\", [0]);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"vertexStarts\", [0]);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"vertexCount\", 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"instanceCount\", 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"attributes\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_attributeDefs\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"data\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"getGeometry\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"geometryBuffer\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"buffers\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"positionSize\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"normalize\", void 0);\n\n    const {\n      attributes = {}\n    } = opts;\n    this.typedArrayManager = _typed_array_manager__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n    this.attributes = {};\n    this._attributeDefs = attributes;\n    this.opts = opts;\n    this.updateGeometry(opts);\n  }\n\n  updateGeometry(opts) {\n    Object.assign(this.opts, opts);\n    const {\n      data,\n      buffers = {},\n      getGeometry,\n      geometryBuffer,\n      positionFormat,\n      dataChanged,\n      normalize = true\n    } = this.opts;\n    this.data = data;\n    this.getGeometry = getGeometry;\n    this.positionSize = geometryBuffer && geometryBuffer.size || (positionFormat === 'XY' ? 2 : 3);\n    this.buffers = buffers;\n    this.normalize = normalize;\n\n    if (geometryBuffer) {\n      (0,_assert__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(data.startIndices);\n      this.getGeometry = this.getGeometryFromBuffer(geometryBuffer);\n\n      if (!normalize) {\n        buffers.positions = geometryBuffer;\n      }\n    }\n\n    this.geometryBuffer = buffers.positions;\n\n    if (Array.isArray(dataChanged)) {\n      for (const dataRange of dataChanged) {\n        this._rebuildGeometry(dataRange);\n      }\n    } else {\n      this._rebuildGeometry();\n    }\n  }\n\n  updatePartialGeometry({\n    startRow,\n    endRow\n  }) {\n    this._rebuildGeometry({\n      startRow,\n      endRow\n    });\n  }\n\n  getGeometryFromBuffer(geometryBuffer) {\n    const value = geometryBuffer.value || geometryBuffer;\n\n    if (!ArrayBuffer.isView(value)) {\n      return null;\n    }\n\n    return (0,_iterable_utils__WEBPACK_IMPORTED_MODULE_3__.getAccessorFromBuffer)(value, {\n      size: this.positionSize,\n      offset: geometryBuffer.offset,\n      stride: geometryBuffer.stride,\n      startIndices: this.data.startIndices\n    });\n  }\n\n  _allocate(instanceCount, copy) {\n    const {\n      attributes,\n      buffers,\n      _attributeDefs,\n      typedArrayManager\n    } = this;\n\n    for (const name in _attributeDefs) {\n      if (name in buffers) {\n        typedArrayManager.release(attributes[name]);\n        attributes[name] = null;\n      } else {\n        const def = _attributeDefs[name];\n        def.copy = copy;\n        attributes[name] = typedArrayManager.allocate(attributes[name], instanceCount, def);\n      }\n    }\n  }\n\n  _forEachGeometry(visitor, startRow, endRow) {\n    const {\n      data,\n      getGeometry\n    } = this;\n    const {\n      iterable,\n      objectInfo\n    } = (0,_iterable_utils__WEBPACK_IMPORTED_MODULE_3__.createIterable)(data, startRow, endRow);\n\n    for (const object of iterable) {\n      objectInfo.index++;\n      const geometry = getGeometry ? getGeometry(object, objectInfo) : null;\n      visitor(geometry, objectInfo.index);\n    }\n  }\n\n  _rebuildGeometry(dataRange) {\n    if (!this.data) {\n      return;\n    }\n\n    let {\n      indexStarts,\n      vertexStarts,\n      instanceCount\n    } = this;\n    const {\n      data,\n      geometryBuffer\n    } = this;\n    const {\n      startRow = 0,\n      endRow = Infinity\n    } = dataRange || {};\n    const normalizedData = {};\n\n    if (!dataRange) {\n      indexStarts = [0];\n      vertexStarts = [0];\n    }\n\n    if (this.normalize || !geometryBuffer) {\n      this._forEachGeometry((geometry, dataIndex) => {\n        const normalizedGeometry = geometry && this.normalizeGeometry(geometry);\n        normalizedData[dataIndex] = normalizedGeometry;\n        vertexStarts[dataIndex + 1] = vertexStarts[dataIndex] + (normalizedGeometry ? this.getGeometrySize(normalizedGeometry) : 0);\n      }, startRow, endRow);\n\n      instanceCount = vertexStarts[vertexStarts.length - 1];\n    } else {\n      vertexStarts = data.startIndices;\n      instanceCount = vertexStarts[data.length] || 0;\n\n      if (ArrayBuffer.isView(geometryBuffer)) {\n        instanceCount = instanceCount || geometryBuffer.length / this.positionSize;\n      } else if (geometryBuffer instanceof _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_4__[\"default\"]) {\n        const byteStride = geometryBuffer.accessor.stride || this.positionSize * 4;\n        instanceCount = instanceCount || geometryBuffer.byteLength / byteStride;\n      } else if (geometryBuffer.buffer) {\n        const byteStride = geometryBuffer.stride || this.positionSize * 4;\n        instanceCount = instanceCount || geometryBuffer.buffer.byteLength / byteStride;\n      } else if (geometryBuffer.value) {\n        const bufferValue = geometryBuffer.value;\n        const elementStride = geometryBuffer.stride / bufferValue.BYTES_PER_ELEMENT || this.positionSize;\n        instanceCount = instanceCount || bufferValue.length / elementStride;\n      }\n    }\n\n    this._allocate(instanceCount, Boolean(dataRange));\n\n    this.indexStarts = indexStarts;\n    this.vertexStarts = vertexStarts;\n    this.instanceCount = instanceCount;\n    const context = {};\n\n    this._forEachGeometry((geometry, dataIndex) => {\n      const normalizedGeometry = normalizedData[dataIndex] || geometry;\n      context.vertexStart = vertexStarts[dataIndex];\n      context.indexStart = indexStarts[dataIndex];\n      const vertexEnd = dataIndex < vertexStarts.length - 1 ? vertexStarts[dataIndex + 1] : instanceCount;\n      context.geometrySize = vertexEnd - vertexStarts[dataIndex];\n      context.geometryIndex = dataIndex;\n      this.updateGeometryAttributes(normalizedGeometry, context);\n    }, startRow, endRow);\n\n    this.vertexCount = indexStarts[indexStarts.length - 1];\n  }\n\n}\n//# sourceMappingURL=tesselator.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/utils/tesselator.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/utils/texture.js":
/*!**************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/utils/texture.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createTexture\": function() { return /* binding */ createTexture; },\n/* harmony export */   \"destroyTexture\": function() { return /* binding */ destroyTexture; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js\");\n\nconst DEFAULT_TEXTURE_PARAMETERS = {\n  [10241]: 9987,\n  [10240]: 9729,\n  [10242]: 33071,\n  [10243]: 33071\n};\nconst internalTextures = {};\nfunction createTexture(layer, image) {\n  const gl = layer.context && layer.context.gl;\n\n  if (!gl || !image) {\n    return null;\n  }\n\n  if (image instanceof _luma_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n    return image;\n  } else if (image.constructor && image.constructor.name !== 'Object') {\n    image = {\n      data: image\n    };\n  }\n\n  let specialTextureParameters = null;\n\n  if (image.compressed) {\n    specialTextureParameters = {\n      [10241]: image.data.length > 1 ? 9985 : 9729\n    };\n  }\n\n  const texture = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"default\"](gl, { ...image,\n    parameters: { ...DEFAULT_TEXTURE_PARAMETERS,\n      ...specialTextureParameters,\n      ...layer.props.textureParameters\n    }\n  });\n  internalTextures[texture.id] = true;\n  return texture;\n}\nfunction destroyTexture(texture) {\n  if (!texture || !(texture instanceof _luma_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"default\"])) {\n    return;\n  }\n\n  if (internalTextures[texture.id]) {\n    texture.delete();\n    delete internalTextures[texture.id];\n  }\n}\n//# sourceMappingURL=texture.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/utils/texture.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/utils/typed-array-manager.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/utils/typed-array-manager.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TypedArrayManager\": function() { return /* binding */ TypedArrayManager; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\nclass TypedArrayManager {\n  constructor(options = {}) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_pool\", []);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"opts\", {\n      overAlloc: 2,\n      poolSize: 100\n    });\n\n    this.setOptions(options);\n  }\n\n  setOptions(options) {\n    Object.assign(this.opts, options);\n  }\n\n  allocate(typedArray, count, {\n    size = 1,\n    type,\n    padding = 0,\n    copy = false,\n    initialize = false,\n    maxCount\n  }) {\n    const Type = type || typedArray && typedArray.constructor || Float32Array;\n    const newSize = count * size + padding;\n\n    if (ArrayBuffer.isView(typedArray)) {\n      if (newSize <= typedArray.length) {\n        return typedArray;\n      }\n\n      if (newSize * typedArray.BYTES_PER_ELEMENT <= typedArray.buffer.byteLength) {\n        return new Type(typedArray.buffer, 0, newSize);\n      }\n    }\n\n    let maxSize = Infinity;\n\n    if (maxCount) {\n      maxSize = maxCount * size + padding;\n    }\n\n    const newArray = this._allocate(Type, newSize, initialize, maxSize);\n\n    if (typedArray && copy) {\n      newArray.set(typedArray);\n    } else if (!initialize) {\n      newArray.fill(0, 0, 4);\n    }\n\n    this._release(typedArray);\n\n    return newArray;\n  }\n\n  release(typedArray) {\n    this._release(typedArray);\n  }\n\n  _allocate(Type, size, initialize, maxSize) {\n    let sizeToAllocate = Math.max(Math.ceil(size * this.opts.overAlloc), 1);\n\n    if (sizeToAllocate > maxSize) {\n      sizeToAllocate = maxSize;\n    }\n\n    const pool = this._pool;\n    const byteLength = Type.BYTES_PER_ELEMENT * sizeToAllocate;\n    const i = pool.findIndex(b => b.byteLength >= byteLength);\n\n    if (i >= 0) {\n      const array = new Type(pool.splice(i, 1)[0], 0, sizeToAllocate);\n\n      if (initialize) {\n        array.fill(0);\n      }\n\n      return array;\n    }\n\n    return new Type(sizeToAllocate);\n  }\n\n  _release(typedArray) {\n    if (!ArrayBuffer.isView(typedArray)) {\n      return;\n    }\n\n    const pool = this._pool;\n    const {\n      buffer\n    } = typedArray;\n    const {\n      byteLength\n    } = buffer;\n    const i = pool.findIndex(b => b.byteLength >= byteLength);\n\n    if (i < 0) {\n      pool.push(buffer);\n    } else if (i > 0 || pool.length < this.opts.poolSize) {\n      pool.splice(i, 0, buffer);\n    }\n\n    if (pool.length > this.opts.poolSize) {\n      pool.shift();\n    }\n  }\n\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (new TypedArrayManager());\n//# sourceMappingURL=typed-array-manager.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/utils/typed-array-manager.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/viewports/first-person-viewport.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/viewports/first-person-viewport.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ FirstPersonViewport; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _viewports_viewport__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../viewports/viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/viewport.js\");\n/* harmony import */ var _math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @math.gl/web-mercator */ \"./node_modules/@math.gl/web-mercator/dist/esm/index.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/spherical-coordinates.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/matrix4.js\");\n\n\n\n\nclass FirstPersonViewport extends _viewports_viewport__WEBPACK_IMPORTED_MODULE_2__[\"default\"] {\n  constructor(props) {\n    const {\n      longitude,\n      latitude,\n      modelMatrix,\n      bearing = 0,\n      pitch = 0,\n      up = [0, 0, 1]\n    } = props;\n    const spherical = new _math_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"]({\n      bearing,\n      pitch: pitch === -90 ? 0.0001 : 90 + pitch\n    });\n    const dir = spherical.toVector3().normalize();\n    const center = modelMatrix ? new _math_gl_core__WEBPACK_IMPORTED_MODULE_4__[\"default\"](modelMatrix).transformAsVector(dir) : dir;\n    const zoom = Number.isFinite(latitude) ? (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.getMeterZoom)({\n      latitude: latitude\n    }) : 0;\n    const scale = Math.pow(2, zoom);\n    const viewMatrix = new _math_gl_core__WEBPACK_IMPORTED_MODULE_4__[\"default\"]().lookAt({\n      eye: [0, 0, 0],\n      center,\n      up\n    }).scale(scale);\n    super({ ...props,\n      zoom,\n      viewMatrix\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"longitude\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"latitude\", void 0);\n\n    this.latitude = latitude;\n    this.longitude = longitude;\n  }\n\n}\n//# sourceMappingURL=first-person-viewport.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/viewports/first-person-viewport.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/viewports/globe-viewport.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/viewports/globe-viewport.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ GlobeViewport; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/matrix4.js\");\n/* harmony import */ var _viewport__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/viewport.js\");\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../lib/constants */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! gl-matrix/vec3 */ \"./node_modules/gl-matrix/esm/vec3.js\");\n/* harmony import */ var gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! gl-matrix/vec4 */ \"./node_modules/gl-matrix/esm/vec4.js\");\n\n\n\n\n\n\nconst DEGREES_TO_RADIANS = Math.PI / 180;\nconst RADIANS_TO_DEGREES = 180 / Math.PI;\nconst EARTH_RADIUS = 6370972;\nconst GLOBE_RADIUS = 256;\n\nfunction getDistanceScales() {\n  const unitsPerMeter = GLOBE_RADIUS / EARTH_RADIUS;\n  const unitsPerDegree = Math.PI / 180 * GLOBE_RADIUS;\n  return {\n    unitsPerMeter: [unitsPerMeter, unitsPerMeter, unitsPerMeter],\n    unitsPerMeter2: [0, 0, 0],\n    metersPerUnit: [1 / unitsPerMeter, 1 / unitsPerMeter, 1 / unitsPerMeter],\n    unitsPerDegree: [unitsPerDegree, unitsPerDegree, unitsPerMeter],\n    unitsPerDegree2: [0, 0, 0],\n    degreesPerUnit: [1 / unitsPerDegree, 1 / unitsPerDegree, 1 / unitsPerMeter]\n  };\n}\n\nclass GlobeViewport extends _viewport__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(opts = {}) {\n    const {\n      latitude = 0,\n      longitude = 0,\n      zoom = 0,\n      nearZMultiplier = 0.1,\n      farZMultiplier = 2,\n      resolution = 10\n    } = opts;\n    let {\n      height,\n      altitude = 1.5\n    } = opts;\n    height = height || 1;\n    altitude = Math.max(0.75, altitude);\n    const viewMatrix = new _math_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"]().lookAt({\n      eye: [0, -altitude, 0],\n      up: [0, 0, 1]\n    });\n    const scale = Math.pow(2, zoom);\n    viewMatrix.rotateX(latitude * DEGREES_TO_RADIANS);\n    viewMatrix.rotateZ(-longitude * DEGREES_TO_RADIANS);\n    viewMatrix.scale(scale / height);\n    const halfFov = Math.atan(0.5 / altitude);\n    const relativeScale = GLOBE_RADIUS * 2 * scale / height;\n    super({ ...opts,\n      height,\n      viewMatrix,\n      longitude,\n      latitude,\n      zoom,\n      distanceScales: getDistanceScales(),\n      fovyRadians: halfFov * 2,\n      focalDistance: altitude,\n      near: nearZMultiplier,\n      far: Math.min(2, 1 / relativeScale + 1) * altitude * farZMultiplier\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"longitude\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"latitude\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"resolution\", void 0);\n\n    this.latitude = latitude;\n    this.longitude = longitude;\n    this.resolution = resolution;\n  }\n\n  get projectionMode() {\n    return _lib_constants__WEBPACK_IMPORTED_MODULE_3__.PROJECTION_MODE.GLOBE;\n  }\n\n  getDistanceScales() {\n    return this.distanceScales;\n  }\n\n  getBounds(options = {}) {\n    const unprojectOption = {\n      targetZ: options.z || 0\n    };\n    const left = this.unproject([0, this.height / 2], unprojectOption);\n    const top = this.unproject([this.width / 2, 0], unprojectOption);\n    const right = this.unproject([this.width, this.height / 2], unprojectOption);\n    const bottom = this.unproject([this.width / 2, this.height], unprojectOption);\n    if (right[0] < this.longitude) right[0] += 360;\n    if (left[0] > this.longitude) left[0] -= 360;\n    return [Math.min(left[0], right[0], top[0], bottom[0]), Math.min(left[1], right[1], top[1], bottom[1]), Math.max(left[0], right[0], top[0], bottom[0]), Math.max(left[1], right[1], top[1], bottom[1])];\n  }\n\n  unproject(xyz, {\n    topLeft = true,\n    targetZ\n  } = {}) {\n    const [x, y, z] = xyz;\n    const y2 = topLeft ? y : this.height - y;\n    const {\n      pixelUnprojectionMatrix\n    } = this;\n    let coord;\n\n    if (Number.isFinite(z)) {\n      coord = transformVector(pixelUnprojectionMatrix, [x, y2, z, 1]);\n    } else {\n      const coord0 = transformVector(pixelUnprojectionMatrix, [x, y2, -1, 1]);\n      const coord1 = transformVector(pixelUnprojectionMatrix, [x, y2, 1, 1]);\n      const lt = ((targetZ || 0) / EARTH_RADIUS + 1) * GLOBE_RADIUS;\n      const lSqr = gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_4__.sqrLen(gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_4__.sub([], coord0, coord1));\n      const l0Sqr = gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_4__.sqrLen(coord0);\n      const l1Sqr = gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_4__.sqrLen(coord1);\n      const sSqr = (4 * l0Sqr * l1Sqr - (lSqr - l0Sqr - l1Sqr) ** 2) / 16;\n      const dSqr = 4 * sSqr / lSqr;\n      const r0 = Math.sqrt(l0Sqr - dSqr);\n      const dr = Math.sqrt(Math.max(0, lt * lt - dSqr));\n      const t = (r0 - dr) / Math.sqrt(lSqr);\n      coord = gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_4__.lerp([], coord0, coord1, t);\n    }\n\n    const [X, Y, Z] = this.unprojectPosition(coord);\n\n    if (Number.isFinite(z)) {\n      return [X, Y, Z];\n    }\n\n    return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n  }\n\n  projectPosition(xyz) {\n    const [lng, lat, Z = 0] = xyz;\n    const lambda = lng * DEGREES_TO_RADIANS;\n    const phi = lat * DEGREES_TO_RADIANS;\n    const cosPhi = Math.cos(phi);\n    const D = (Z / EARTH_RADIUS + 1) * GLOBE_RADIUS;\n    return [Math.sin(lambda) * cosPhi * D, -Math.cos(lambda) * cosPhi * D, Math.sin(phi) * D];\n  }\n\n  unprojectPosition(xyz) {\n    const [x, y, z] = xyz;\n    const D = gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_4__.len(xyz);\n    const phi = Math.asin(z / D);\n    const lambda = Math.atan2(x, -y);\n    const lng = lambda * RADIANS_TO_DEGREES;\n    const lat = phi * RADIANS_TO_DEGREES;\n    const Z = (D / GLOBE_RADIUS - 1) * EARTH_RADIUS;\n    return [lng, lat, Z];\n  }\n\n  projectFlat(xyz) {\n    return xyz;\n  }\n\n  unprojectFlat(xyz) {\n    return xyz;\n  }\n\n  panByPosition(coords, pixel) {\n    const fromPosition = this.unproject(pixel);\n    return {\n      longitude: coords[0] - fromPosition[0] + this.longitude,\n      latitude: coords[1] - fromPosition[1] + this.latitude\n    };\n  }\n\n}\n\nfunction transformVector(matrix, vector) {\n  const result = gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_5__.transformMat4([], vector, matrix);\n  gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_5__.scale(result, result, 1 / result[3]);\n  return result;\n}\n//# sourceMappingURL=globe-viewport.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/viewports/globe-viewport.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/viewports/orbit-viewport.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/viewports/orbit-viewport.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ OrbitViewport; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _viewports_viewport__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../viewports/viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/viewport.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/matrix4.js\");\n/* harmony import */ var _math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @math.gl/web-mercator */ \"./node_modules/@math.gl/web-mercator/dist/esm/index.js\");\n\n\n\n\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\nfunction getViewMatrix({\n  height,\n  focalDistance,\n  orbitAxis,\n  rotationX,\n  rotationOrbit,\n  zoom\n}) {\n  const up = orbitAxis === 'Z' ? [0, 0, 1] : [0, 1, 0];\n  const eye = orbitAxis === 'Z' ? [0, -focalDistance, 0] : [0, 0, focalDistance];\n  const viewMatrix = new _math_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"]().lookAt({\n    eye,\n    up\n  });\n  viewMatrix.rotateX(rotationX * DEGREES_TO_RADIANS);\n\n  if (orbitAxis === 'Z') {\n    viewMatrix.rotateZ(rotationOrbit * DEGREES_TO_RADIANS);\n  } else {\n    viewMatrix.rotateY(rotationOrbit * DEGREES_TO_RADIANS);\n  }\n\n  const projectionScale = Math.pow(2, zoom) / height;\n  viewMatrix.scale(projectionScale);\n  return viewMatrix;\n}\n\nclass OrbitViewport extends _viewports_viewport__WEBPACK_IMPORTED_MODULE_3__[\"default\"] {\n  constructor(props) {\n    const {\n      height,\n      projectionMatrix,\n      fovy = 50,\n      orbitAxis = 'Z',\n      target = [0, 0, 0],\n      rotationX = 0,\n      rotationOrbit = 0,\n      zoom = 0\n    } = props;\n    const focalDistance = projectionMatrix ? projectionMatrix[5] / 2 : (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.fovyToAltitude)(fovy);\n    super({ ...props,\n      longitude: undefined,\n      viewMatrix: getViewMatrix({\n        height: height || 1,\n        focalDistance,\n        orbitAxis,\n        rotationX,\n        rotationOrbit,\n        zoom\n      }),\n      fovy,\n      focalDistance,\n      position: target,\n      zoom\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"projectedCenter\", void 0);\n\n    this.projectedCenter = this.project(this.center);\n  }\n\n  unproject(xyz, {\n    topLeft = true\n  } = {}) {\n    const [x, y, z = this.projectedCenter[2]] = xyz;\n    const y2 = topLeft ? y : this.height - y;\n    const [X, Y, Z] = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.pixelsToWorld)([x, y2, z], this.pixelUnprojectionMatrix);\n    return [X, Y, Z];\n  }\n\n  panByPosition(coords, pixel) {\n    const p0 = this.project(coords);\n    const nextCenter = [this.width / 2 + p0[0] - pixel[0], this.height / 2 + p0[1] - pixel[1], this.projectedCenter[2]];\n    return {\n      target: this.unproject(nextCenter)\n    };\n  }\n\n}\n//# sourceMappingURL=orbit-viewport.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/viewports/orbit-viewport.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/viewports/orthographic-viewport.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/viewports/orthographic-viewport.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ OrthographicViewport; }\n/* harmony export */ });\n/* harmony import */ var _viewports_viewport__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../viewports/viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/viewport.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/matrix4.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n/* harmony import */ var _math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/web-mercator */ \"./node_modules/@math.gl/web-mercator/dist/esm/index.js\");\n/* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! gl-matrix/vec2 */ \"./node_modules/gl-matrix/esm/vec2.js\");\n\n\n\n\nconst viewMatrix = new _math_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"]().lookAt({\n  eye: [0, 0, 1]\n});\n\nfunction getProjectionMatrix({\n  width,\n  height,\n  near,\n  far,\n  padding\n}) {\n  let left = -width / 2;\n  let right = width / 2;\n  let bottom = -height / 2;\n  let top = height / 2;\n\n  if (padding) {\n    const {\n      left: l = 0,\n      right: r = 0,\n      top: t = 0,\n      bottom: b = 0\n    } = padding;\n    const offsetX = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_2__.clamp)((l + width - r) / 2, 0, width) - width / 2;\n    const offsetY = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_2__.clamp)((t + height - b) / 2, 0, height) - height / 2;\n    left -= offsetX;\n    right -= offsetX;\n    bottom += offsetY;\n    top += offsetY;\n  }\n\n  return new _math_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"]().ortho({\n    left,\n    right,\n    bottom,\n    top,\n    near,\n    far\n  });\n}\n\nclass OrthographicViewport extends _viewports_viewport__WEBPACK_IMPORTED_MODULE_3__[\"default\"] {\n  constructor(props) {\n    const {\n      width,\n      height,\n      near = 0.1,\n      far = 1000,\n      zoom = 0,\n      target = [0, 0, 0],\n      padding = null,\n      flipY = true\n    } = props;\n    const zoomX = Array.isArray(zoom) ? zoom[0] : zoom;\n    const zoomY = Array.isArray(zoom) ? zoom[1] : zoom;\n    const zoom_ = Math.min(zoomX, zoomY);\n    const scale = Math.pow(2, zoom_);\n    let distanceScales;\n\n    if (zoomX !== zoomY) {\n      const scaleX = Math.pow(2, zoomX);\n      const scaleY = Math.pow(2, zoomY);\n      distanceScales = {\n        unitsPerMeter: [scaleX / scale, scaleY / scale, 1],\n        metersPerUnit: [scale / scaleX, scale / scaleY, 1]\n      };\n    }\n\n    super({ ...props,\n      longitude: undefined,\n      position: target,\n      viewMatrix: viewMatrix.clone().scale([scale, scale * (flipY ? -1 : 1), scale]),\n      projectionMatrix: getProjectionMatrix({\n        width: width || 1,\n        height: height || 1,\n        padding,\n        near,\n        far\n      }),\n      zoom: zoom_,\n      distanceScales\n    });\n  }\n\n  projectFlat([X, Y]) {\n    const {\n      unitsPerMeter\n    } = this.distanceScales;\n    return [X * unitsPerMeter[0], Y * unitsPerMeter[1]];\n  }\n\n  unprojectFlat([x, y]) {\n    const {\n      metersPerUnit\n    } = this.distanceScales;\n    return [x * metersPerUnit[0], y * metersPerUnit[1]];\n  }\n\n  panByPosition(coords, pixel) {\n    const fromLocation = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_0__.pixelsToWorld)(pixel, this.pixelUnprojectionMatrix);\n    const toLocation = this.projectFlat(coords);\n    const translate = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_4__.add([], toLocation, gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_4__.negate([], fromLocation));\n    const newCenter = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_4__.add([], this.center, translate);\n    return {\n      target: this.unprojectFlat(newCenter)\n    };\n  }\n\n}\n//# sourceMappingURL=orthographic-viewport.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/viewports/orthographic-viewport.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/viewports/viewport.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/viewports/viewport.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Viewport; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/log */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n/* harmony import */ var _utils_math_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/math-utils */ \"./node_modules/@deck.gl/core/dist/esm/utils/math-utils.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/matrix4.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/vector3.js\");\n/* harmony import */ var gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix/mat4 */ \"./node_modules/gl-matrix/esm/mat4.js\");\n/* harmony import */ var _math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @math.gl/web-mercator */ \"./node_modules/@math.gl/web-mercator/dist/esm/index.js\");\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../lib/constants */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n\n\n\n\n\n\n\nconst DEGREES_TO_RADIANS = Math.PI / 180;\nconst IDENTITY = (0,_utils_math_utils__WEBPACK_IMPORTED_MODULE_2__.createMat4)();\nconst ZERO_VECTOR = [0, 0, 0];\nconst DEFAULT_DISTANCE_SCALES = {\n  unitsPerMeter: [1, 1, 1],\n  metersPerUnit: [1, 1, 1]\n};\n\nfunction createProjectionMatrix({\n  width,\n  height,\n  orthographic,\n  fovyRadians,\n  focalDistance,\n  padding,\n  near,\n  far\n}) {\n  const aspect = width / height;\n  const matrix = orthographic ? new _math_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"]().orthographic({\n    fovy: fovyRadians,\n    aspect,\n    focalDistance,\n    near,\n    far\n  }) : new _math_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"]().perspective({\n    fovy: fovyRadians,\n    aspect,\n    near,\n    far\n  });\n\n  if (padding) {\n    const {\n      left = 0,\n      right = 0,\n      top = 0,\n      bottom = 0\n    } = padding;\n    const offsetX = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_4__.clamp)((left + width - right) / 2, 0, width) - width / 2;\n    const offsetY = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_4__.clamp)((top + height - bottom) / 2, 0, height) - height / 2;\n    matrix[8] -= offsetX * 2 / width;\n    matrix[9] += offsetY * 2 / height;\n  }\n\n  return matrix;\n}\n\nclass Viewport {\n  constructor(opts = {}) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"id\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"x\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"y\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"width\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"height\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"padding\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"isGeospatial\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"zoom\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"focalDistance\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"position\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"modelMatrix\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"distanceScales\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"scale\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"center\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"cameraPosition\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"projectionMatrix\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"viewMatrix\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"viewMatrixUncentered\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"viewMatrixInverse\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"viewProjectionMatrix\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"pixelProjectionMatrix\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"pixelUnprojectionMatrix\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"resolution\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_frustumPlanes\", {});\n\n    this.id = opts.id || this.constructor.displayName || 'viewport';\n    this.x = opts.x || 0;\n    this.y = opts.y || 0;\n    this.width = opts.width || 1;\n    this.height = opts.height || 1;\n    this.zoom = opts.zoom || 0;\n    this.padding = opts.padding;\n    this.distanceScales = opts.distanceScales || DEFAULT_DISTANCE_SCALES;\n    this.focalDistance = opts.focalDistance || 1;\n    this.position = opts.position || ZERO_VECTOR;\n    this.modelMatrix = opts.modelMatrix || null;\n    const {\n      longitude,\n      latitude\n    } = opts;\n    this.isGeospatial = Number.isFinite(latitude) && Number.isFinite(longitude);\n\n    this._initProps(opts);\n\n    this._initMatrices(opts);\n\n    this.equals = this.equals.bind(this);\n    this.project = this.project.bind(this);\n    this.unproject = this.unproject.bind(this);\n    this.projectPosition = this.projectPosition.bind(this);\n    this.unprojectPosition = this.unprojectPosition.bind(this);\n    this.projectFlat = this.projectFlat.bind(this);\n    this.unprojectFlat = this.unprojectFlat.bind(this);\n  }\n\n  get subViewports() {\n    return null;\n  }\n\n  get metersPerPixel() {\n    return this.distanceScales.metersPerUnit[2] / this.scale;\n  }\n\n  get projectionMode() {\n    if (this.isGeospatial) {\n      return this.zoom < 12 ? _lib_constants__WEBPACK_IMPORTED_MODULE_5__.PROJECTION_MODE.WEB_MERCATOR : _lib_constants__WEBPACK_IMPORTED_MODULE_5__.PROJECTION_MODE.WEB_MERCATOR_AUTO_OFFSET;\n    }\n\n    return _lib_constants__WEBPACK_IMPORTED_MODULE_5__.PROJECTION_MODE.IDENTITY;\n  }\n\n  equals(viewport) {\n    if (!(viewport instanceof Viewport)) {\n      return false;\n    }\n\n    if (this === viewport) {\n      return true;\n    }\n\n    return viewport.width === this.width && viewport.height === this.height && viewport.scale === this.scale && (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_4__.equals)(viewport.projectionMatrix, this.projectionMatrix) && (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_4__.equals)(viewport.viewMatrix, this.viewMatrix);\n  }\n\n  project(xyz, {\n    topLeft = true\n  } = {}) {\n    const worldPosition = this.projectPosition(xyz);\n    const coord = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.worldToPixels)(worldPosition, this.pixelProjectionMatrix);\n    const [x, y] = coord;\n    const y2 = topLeft ? y : this.height - y;\n    return xyz.length === 2 ? [x, y2] : [x, y2, coord[2]];\n  }\n\n  unproject(xyz, {\n    topLeft = true,\n    targetZ\n  } = {}) {\n    const [x, y, z] = xyz;\n    const y2 = topLeft ? y : this.height - y;\n    const targetZWorld = targetZ && targetZ * this.distanceScales.unitsPerMeter[2];\n    const coord = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.pixelsToWorld)([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n    const [X, Y, Z] = this.unprojectPosition(coord);\n\n    if (Number.isFinite(z)) {\n      return [X, Y, Z];\n    }\n\n    return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n  }\n\n  projectPosition(xyz) {\n    const [X, Y] = this.projectFlat(xyz);\n    const Z = (xyz[2] || 0) * this.distanceScales.unitsPerMeter[2];\n    return [X, Y, Z];\n  }\n\n  unprojectPosition(xyz) {\n    const [X, Y] = this.unprojectFlat(xyz);\n    const Z = (xyz[2] || 0) * this.distanceScales.metersPerUnit[2];\n    return [X, Y, Z];\n  }\n\n  projectFlat(xyz) {\n    if (this.isGeospatial) {\n      const result = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.lngLatToWorld)(xyz);\n      result[1] = (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_4__.clamp)(result[1], -318, 830);\n      return result;\n    }\n\n    return xyz;\n  }\n\n  unprojectFlat(xyz) {\n    if (this.isGeospatial) {\n      return (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.worldToLngLat)(xyz);\n    }\n\n    return xyz;\n  }\n\n  getBounds(options = {}) {\n    const unprojectOption = {\n      targetZ: options.z || 0\n    };\n    const topLeft = this.unproject([0, 0], unprojectOption);\n    const topRight = this.unproject([this.width, 0], unprojectOption);\n    const bottomLeft = this.unproject([0, this.height], unprojectOption);\n    const bottomRight = this.unproject([this.width, this.height], unprojectOption);\n    return [Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]), Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]), Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]), Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1])];\n  }\n\n  getDistanceScales(coordinateOrigin) {\n    if (coordinateOrigin) {\n      return (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.getDistanceScales)({\n        longitude: coordinateOrigin[0],\n        latitude: coordinateOrigin[1],\n        highPrecision: true\n      });\n    }\n\n    return this.distanceScales;\n  }\n\n  containsPixel({\n    x,\n    y,\n    width = 1,\n    height = 1\n  }) {\n    return x < this.x + this.width && this.x < x + width && y < this.y + this.height && this.y < y + height;\n  }\n\n  getFrustumPlanes() {\n    if (this._frustumPlanes.near) {\n      return this._frustumPlanes;\n    }\n\n    Object.assign(this._frustumPlanes, (0,_utils_math_utils__WEBPACK_IMPORTED_MODULE_2__.getFrustumPlanes)(this.viewProjectionMatrix));\n    return this._frustumPlanes;\n  }\n\n  panByPosition(coords, pixel) {\n    return null;\n  }\n\n  _initProps(opts) {\n    const longitude = opts.longitude;\n    const latitude = opts.latitude;\n\n    if (this.isGeospatial) {\n      if (!Number.isFinite(opts.zoom)) {\n        this.zoom = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.getMeterZoom)({\n          latitude\n        }) + Math.log2(this.focalDistance);\n      }\n\n      this.distanceScales = opts.distanceScales || (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.getDistanceScales)({\n        latitude,\n        longitude\n      });\n    }\n\n    const scale = Math.pow(2, this.zoom);\n    this.scale = scale;\n    const {\n      position,\n      modelMatrix\n    } = opts;\n    let meterOffset = ZERO_VECTOR;\n\n    if (position) {\n      meterOffset = modelMatrix ? new _math_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"](modelMatrix).transformAsVector(position, []) : position;\n    }\n\n    if (this.isGeospatial) {\n      const center = this.projectPosition([longitude, latitude, 0]);\n      this.center = new _math_gl_core__WEBPACK_IMPORTED_MODULE_6__[\"default\"](meterOffset).scale(this.distanceScales.unitsPerMeter).add(center);\n    } else {\n      this.center = this.projectPosition(meterOffset);\n    }\n  }\n\n  _initMatrices(opts) {\n    const {\n      viewMatrix = IDENTITY,\n      projectionMatrix = null,\n      orthographic = false,\n      fovyRadians,\n      fovy = 75,\n      near = 0.1,\n      far = 1000,\n      padding = null,\n      focalDistance = 1\n    } = opts;\n    this.viewMatrixUncentered = viewMatrix;\n    this.viewMatrix = new _math_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"]().multiplyRight(viewMatrix).translate(new _math_gl_core__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.center).negate());\n    this.projectionMatrix = projectionMatrix || createProjectionMatrix({\n      width: this.width,\n      height: this.height,\n      orthographic,\n      fovyRadians: fovyRadians || fovy * DEGREES_TO_RADIANS,\n      focalDistance,\n      padding,\n      near,\n      far\n    });\n    const vpm = (0,_utils_math_utils__WEBPACK_IMPORTED_MODULE_2__.createMat4)();\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_7__.multiply(vpm, vpm, this.projectionMatrix);\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_7__.multiply(vpm, vpm, this.viewMatrix);\n    this.viewProjectionMatrix = vpm;\n    this.viewMatrixInverse = gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_7__.invert([], this.viewMatrix) || this.viewMatrix;\n    this.cameraPosition = (0,_utils_math_utils__WEBPACK_IMPORTED_MODULE_2__.getCameraPosition)(this.viewMatrixInverse);\n    const viewportMatrix = (0,_utils_math_utils__WEBPACK_IMPORTED_MODULE_2__.createMat4)();\n    const pixelProjectionMatrix = (0,_utils_math_utils__WEBPACK_IMPORTED_MODULE_2__.createMat4)();\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_7__.scale(viewportMatrix, viewportMatrix, [this.width / 2, -this.height / 2, 1]);\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_7__.translate(viewportMatrix, viewportMatrix, [1, -1, 0]);\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_7__.multiply(pixelProjectionMatrix, viewportMatrix, this.viewProjectionMatrix);\n    this.pixelProjectionMatrix = pixelProjectionMatrix;\n    this.pixelUnprojectionMatrix = gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_7__.invert((0,_utils_math_utils__WEBPACK_IMPORTED_MODULE_2__.createMat4)(), this.pixelProjectionMatrix);\n\n    if (!this.pixelUnprojectionMatrix) {\n      _utils_log__WEBPACK_IMPORTED_MODULE_8__[\"default\"].warn('Pixel project matrix not invertible')();\n    }\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Viewport, \"displayName\", 'Viewport');\n//# sourceMappingURL=viewport.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/viewports/viewport.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/viewports/web-mercator-viewport.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/viewports/web-mercator-viewport.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ WebMercatorViewport; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _viewport__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/viewport.js\");\n/* harmony import */ var _math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @math.gl/web-mercator */ \"./node_modules/@math.gl/web-mercator/dist/esm/index.js\");\n/* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! gl-matrix/vec2 */ \"./node_modules/gl-matrix/esm/vec2.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/matrix4.js\");\n\n\n\n\n\nconst TILE_SIZE = 512;\nconst EARTH_CIRCUMFERENCE = 40.03e6;\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\nfunction unitsPerMeter(latitude) {\n  const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n  return TILE_SIZE / EARTH_CIRCUMFERENCE / latCosine;\n}\n\nclass WebMercatorViewport extends _viewport__WEBPACK_IMPORTED_MODULE_2__[\"default\"] {\n  constructor(opts = {}) {\n    const {\n      latitude = 0,\n      longitude = 0,\n      zoom = 0,\n      pitch = 0,\n      bearing = 0,\n      nearZMultiplier = 0.1,\n      farZMultiplier = 1.01,\n      orthographic = false,\n      projectionMatrix,\n      repeat = false,\n      worldOffset = 0,\n      legacyMeterSizes = false\n    } = opts;\n    let {\n      width,\n      height,\n      altitude = 1.5\n    } = opts;\n    const scale = Math.pow(2, zoom);\n    width = width || 1;\n    height = height || 1;\n    let fovy;\n    let projectionParameters = null;\n\n    if (projectionMatrix) {\n      altitude = projectionMatrix[5] / 2;\n      fovy = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.altitudeToFovy)(altitude);\n    } else {\n      if (opts.fovy) {\n        fovy = opts.fovy;\n        altitude = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.fovyToAltitude)(fovy);\n      } else {\n        fovy = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.altitudeToFovy)(altitude);\n      }\n\n      projectionParameters = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.getProjectionParameters)({\n        width,\n        height,\n        pitch,\n        fovy,\n        nearZMultiplier,\n        farZMultiplier\n      });\n    }\n\n    let viewMatrixUncentered = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.getViewMatrix)({\n      height,\n      pitch,\n      bearing,\n      scale,\n      altitude\n    });\n\n    if (worldOffset) {\n      const viewOffset = new _math_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"]().translate([512 * worldOffset, 0, 0]);\n      viewMatrixUncentered = viewOffset.multiplyLeft(viewMatrixUncentered);\n    }\n\n    super({ ...opts,\n      width,\n      height,\n      viewMatrix: viewMatrixUncentered,\n      longitude,\n      latitude,\n      zoom,\n      ...projectionParameters,\n      fovy,\n      focalDistance: altitude\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"longitude\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"latitude\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"pitch\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"bearing\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"altitude\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"fovy\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"orthographic\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_subViewports\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_pseudoMeters\", void 0);\n\n    this.latitude = latitude;\n    this.longitude = longitude;\n    this.zoom = zoom;\n    this.pitch = pitch;\n    this.bearing = bearing;\n    this.altitude = altitude;\n    this.fovy = fovy;\n    this.orthographic = orthographic;\n    this._subViewports = repeat ? [] : null;\n    this._pseudoMeters = legacyMeterSizes;\n    Object.freeze(this);\n  }\n\n  get subViewports() {\n    if (this._subViewports && !this._subViewports.length) {\n      const bounds = this.getBounds();\n      const minOffset = Math.floor((bounds[0] + 180) / 360);\n      const maxOffset = Math.ceil((bounds[2] - 180) / 360);\n\n      for (let x = minOffset; x <= maxOffset; x++) {\n        const offsetViewport = x ? new WebMercatorViewport({ ...this,\n          worldOffset: x\n        }) : this;\n\n        this._subViewports.push(offsetViewport);\n      }\n    }\n\n    return this._subViewports;\n  }\n\n  projectPosition(xyz) {\n    if (this._pseudoMeters) {\n      return super.projectPosition(xyz);\n    }\n\n    const [X, Y] = this.projectFlat(xyz);\n    const Z = (xyz[2] || 0) * unitsPerMeter(xyz[1]);\n    return [X, Y, Z];\n  }\n\n  unprojectPosition(xyz) {\n    if (this._pseudoMeters) {\n      return super.unprojectPosition(xyz);\n    }\n\n    const [X, Y] = this.unprojectFlat(xyz);\n    const Z = (xyz[2] || 0) / unitsPerMeter(Y);\n    return [X, Y, Z];\n  }\n\n  addMetersToLngLat(lngLatZ, xyz) {\n    return (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.addMetersToLngLat)(lngLatZ, xyz);\n  }\n\n  panByPosition(coords, pixel) {\n    const fromLocation = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.pixelsToWorld)(pixel, this.pixelUnprojectionMatrix);\n    const toLocation = this.projectFlat(coords);\n    const translate = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_4__.add([], toLocation, gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_4__.negate([], fromLocation));\n    const newCenter = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_4__.add([], this.center, translate);\n    const [longitude, latitude] = this.unprojectFlat(newCenter);\n    return {\n      longitude,\n      latitude\n    };\n  }\n\n  getBounds(options = {}) {\n    const corners = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.getBounds)(this, options.z || 0);\n    return [Math.min(corners[0][0], corners[1][0], corners[2][0], corners[3][0]), Math.min(corners[0][1], corners[1][1], corners[2][1], corners[3][1]), Math.max(corners[0][0], corners[1][0], corners[2][0], corners[3][0]), Math.max(corners[0][1], corners[1][1], corners[2][1], corners[3][1])];\n  }\n\n  fitBounds(bounds, options = {}) {\n    const {\n      width,\n      height\n    } = this;\n    const {\n      longitude,\n      latitude,\n      zoom\n    } = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.fitBounds)({\n      width,\n      height,\n      bounds,\n      ...options\n    });\n    return new WebMercatorViewport({\n      width,\n      height,\n      longitude,\n      latitude,\n      zoom\n    });\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(WebMercatorViewport, \"displayName\", 'WebMercatorViewport');\n//# sourceMappingURL=web-mercator-viewport.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/viewports/web-mercator-viewport.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/views/first-person-view.js":
/*!************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/views/first-person-view.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ FirstPersonView; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./view */ \"./node_modules/@deck.gl/core/dist/esm/views/view.js\");\n/* harmony import */ var _viewports_first_person_viewport__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../viewports/first-person-viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/first-person-viewport.js\");\n/* harmony import */ var _controllers_first_person_controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../controllers/first-person-controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/first-person-controller.js\");\n\n\n\n\nclass FirstPersonView extends _view__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  get ViewportType() {\n    return _viewports_first_person_viewport__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n  }\n\n  get ControllerType() {\n    return _controllers_first_person_controller__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(FirstPersonView, \"displayName\", 'FirstPersonView');\n//# sourceMappingURL=first-person-view.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/views/first-person-view.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/views/globe-view.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/views/globe-view.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ GlobeView; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./view */ \"./node_modules/@deck.gl/core/dist/esm/views/view.js\");\n/* harmony import */ var _viewports_globe_viewport__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../viewports/globe-viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/globe-viewport.js\");\n/* harmony import */ var _controllers_globe_controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../controllers/globe-controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/globe-controller.js\");\n\n\n\n\nclass GlobeView extends _view__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  get ViewportType() {\n    return _viewports_globe_viewport__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n  }\n\n  get ControllerType() {\n    return _controllers_globe_controller__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(GlobeView, \"displayName\", 'GlobeView');\n//# sourceMappingURL=globe-view.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/views/globe-view.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/views/map-view.js":
/*!***************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/views/map-view.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ MapView; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./view */ \"./node_modules/@deck.gl/core/dist/esm/views/view.js\");\n/* harmony import */ var _viewports_web_mercator_viewport__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../viewports/web-mercator-viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/web-mercator-viewport.js\");\n/* harmony import */ var _controllers_map_controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../controllers/map-controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/map-controller.js\");\n\n\n\n\nclass MapView extends _view__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  get ViewportType() {\n    return _viewports_web_mercator_viewport__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n  }\n\n  get ControllerType() {\n    return _controllers_map_controller__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(MapView, \"displayName\", 'MapView');\n//# sourceMappingURL=map-view.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/views/map-view.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/views/orbit-view.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/views/orbit-view.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ OrbitView; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./view */ \"./node_modules/@deck.gl/core/dist/esm/views/view.js\");\n/* harmony import */ var _viewports_orbit_viewport__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../viewports/orbit-viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/orbit-viewport.js\");\n/* harmony import */ var _controllers_orbit_controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../controllers/orbit-controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/orbit-controller.js\");\n\n\n\n\nclass OrbitView extends _view__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(props = {}) {\n    super(props);\n    this.props.orbitAxis = props.orbitAxis || 'Z';\n  }\n\n  get ViewportType() {\n    return _viewports_orbit_viewport__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n  }\n\n  get ControllerType() {\n    return _controllers_orbit_controller__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(OrbitView, \"displayName\", 'OrbitView');\n//# sourceMappingURL=orbit-view.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/views/orbit-view.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/views/orthographic-view.js":
/*!************************************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/views/orthographic-view.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ OrthographicView; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./view */ \"./node_modules/@deck.gl/core/dist/esm/views/view.js\");\n/* harmony import */ var _viewports_orthographic_viewport__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../viewports/orthographic-viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/orthographic-viewport.js\");\n/* harmony import */ var _controllers_orthographic_controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../controllers/orthographic-controller */ \"./node_modules/@deck.gl/core/dist/esm/controllers/orthographic-controller.js\");\n\n\n\n\nclass OrthographicView extends _view__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  get ViewportType() {\n    return _viewports_orthographic_viewport__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n  }\n\n  get ControllerType() {\n    return _controllers_orthographic_controller__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(OrthographicView, \"displayName\", 'OrthographicView');\n//# sourceMappingURL=orthographic-view.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/views/orthographic-view.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/core/dist/esm/views/view.js":
/*!***********************************************************!*\
  !*** ./node_modules/@deck.gl/core/dist/esm/views/view.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ View; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _viewports_viewport__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../viewports/viewport */ \"./node_modules/@deck.gl/core/dist/esm/viewports/viewport.js\");\n/* harmony import */ var _utils_positions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/positions */ \"./node_modules/@deck.gl/core/dist/esm/utils/positions.js\");\n/* harmony import */ var _utils_deep_equal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/deep-equal */ \"./node_modules/@deck.gl/core/dist/esm/utils/deep-equal.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@deck.gl/core/dist/esm/utils/assert.js\");\n\n\n\n\n\nclass View {\n  constructor(props) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"id\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"viewportInstance\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_x\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_y\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_width\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_height\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_padding\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"props\", void 0);\n\n    const {\n      id,\n      x = 0,\n      y = 0,\n      width = '100%',\n      height = '100%',\n      padding = null,\n      viewportInstance\n    } = props || {};\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(!viewportInstance || viewportInstance instanceof _viewports_viewport__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n    this.viewportInstance = viewportInstance;\n    this.id = id || this.constructor.displayName || 'view';\n    this.props = { ...props,\n      id: this.id\n    };\n    this._x = (0,_utils_positions__WEBPACK_IMPORTED_MODULE_3__.parsePosition)(x);\n    this._y = (0,_utils_positions__WEBPACK_IMPORTED_MODULE_3__.parsePosition)(y);\n    this._width = (0,_utils_positions__WEBPACK_IMPORTED_MODULE_3__.parsePosition)(width);\n    this._height = (0,_utils_positions__WEBPACK_IMPORTED_MODULE_3__.parsePosition)(height);\n    this._padding = padding && {\n      left: (0,_utils_positions__WEBPACK_IMPORTED_MODULE_3__.parsePosition)(padding.left || 0),\n      right: (0,_utils_positions__WEBPACK_IMPORTED_MODULE_3__.parsePosition)(padding.right || 0),\n      top: (0,_utils_positions__WEBPACK_IMPORTED_MODULE_3__.parsePosition)(padding.top || 0),\n      bottom: (0,_utils_positions__WEBPACK_IMPORTED_MODULE_3__.parsePosition)(padding.bottom || 0)\n    };\n    this.equals = this.equals.bind(this);\n    Object.seal(this);\n  }\n\n  equals(view) {\n    if (this === view) {\n      return true;\n    }\n\n    if (this.viewportInstance) {\n      return view.viewportInstance ? this.viewportInstance.equals(view.viewportInstance) : false;\n    }\n\n    return this.ViewportType === view.ViewportType && (0,_utils_deep_equal__WEBPACK_IMPORTED_MODULE_4__.deepEqual)(this.props, view.props);\n  }\n\n  makeViewport({\n    width,\n    height,\n    viewState\n  }) {\n    if (this.viewportInstance) {\n      return this.viewportInstance;\n    }\n\n    viewState = this.filterViewState(viewState);\n    const viewportDimensions = this.getDimensions({\n      width,\n      height\n    });\n    return new this.ViewportType({ ...viewState,\n      ...this.props,\n      ...viewportDimensions\n    });\n  }\n\n  getViewStateId() {\n    const {\n      viewState\n    } = this.props;\n\n    if (typeof viewState === 'string') {\n      return viewState;\n    }\n\n    return (viewState === null || viewState === void 0 ? void 0 : viewState.id) || this.id;\n  }\n\n  filterViewState(viewState) {\n    if (this.props.viewState && typeof this.props.viewState === 'object') {\n      if (!this.props.viewState.id) {\n        return this.props.viewState;\n      }\n\n      const newViewState = { ...viewState\n      };\n\n      for (const key in this.props.viewState) {\n        if (key !== 'id') {\n          newViewState[key] = this.props.viewState[key];\n        }\n      }\n\n      return newViewState;\n    }\n\n    return viewState;\n  }\n\n  getDimensions({\n    width,\n    height\n  }) {\n    const dimensions = {\n      x: (0,_utils_positions__WEBPACK_IMPORTED_MODULE_3__.getPosition)(this._x, width),\n      y: (0,_utils_positions__WEBPACK_IMPORTED_MODULE_3__.getPosition)(this._y, height),\n      width: (0,_utils_positions__WEBPACK_IMPORTED_MODULE_3__.getPosition)(this._width, width),\n      height: (0,_utils_positions__WEBPACK_IMPORTED_MODULE_3__.getPosition)(this._height, height)\n    };\n\n    if (this._padding) {\n      dimensions.padding = {\n        left: (0,_utils_positions__WEBPACK_IMPORTED_MODULE_3__.getPosition)(this._padding.left, width),\n        top: (0,_utils_positions__WEBPACK_IMPORTED_MODULE_3__.getPosition)(this._padding.top, height),\n        right: (0,_utils_positions__WEBPACK_IMPORTED_MODULE_3__.getPosition)(this._padding.right, width),\n        bottom: (0,_utils_positions__WEBPACK_IMPORTED_MODULE_3__.getPosition)(this._padding.bottom, height)\n      };\n    }\n\n    return dimensions;\n  }\n\n  get controller() {\n    const opts = this.props.controller;\n\n    if (!opts) {\n      return null;\n    }\n\n    if (opts === true) {\n      return {\n        type: this.ControllerType\n      };\n    }\n\n    if (typeof opts === 'function') {\n      return {\n        type: opts\n      };\n    }\n\n    return {\n      type: this.ControllerType,\n      ...opts\n    };\n  }\n\n}\n//# sourceMappingURL=view.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/core/dist/esm/views/view.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/arc-layer/arc-layer-fragment.glsl.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/arc-layer/arc-layer-fragment.glsl.js ***!
  \************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME arc-layer-fragment-shader\\n\\nprecision highp float;\\n\\nvarying vec4 vColor;\\nvarying vec2 uv;\\nvarying float isValid;\\n\\nvoid main(void) {\\n  if (isValid == 0.0) {\\n    discard;\\n  }\\n\\n  gl_FragColor = vColor;\\n  geometry.uv = uv;\\n\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\");\n//# sourceMappingURL=arc-layer-fragment.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/arc-layer/arc-layer-fragment.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/arc-layer/arc-layer-vertex.glsl.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/arc-layer/arc-layer-vertex.glsl.js ***!
  \**********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME arc-layer-vertex-shader\\n\\nattribute vec3 positions;\\nattribute vec4 instanceSourceColors;\\nattribute vec4 instanceTargetColors;\\nattribute vec3 instanceSourcePositions;\\nattribute vec3 instanceSourcePositions64Low;\\nattribute vec3 instanceTargetPositions;\\nattribute vec3 instanceTargetPositions64Low;\\nattribute vec3 instancePickingColors;\\nattribute float instanceWidths;\\nattribute float instanceHeights;\\nattribute float instanceTilts;\\n\\nuniform bool greatCircle;\\nuniform bool useShortestPath;\\nuniform float numSegments;\\nuniform float opacity;\\nuniform float widthScale;\\nuniform float widthMinPixels;\\nuniform float widthMaxPixels;\\nuniform int widthUnits;\\n\\nvarying vec4 vColor;\\nvarying vec2 uv;\\nvarying float isValid;\\n\\nfloat paraboloid(float distance, float sourceZ, float targetZ, float ratio) {\\n  // d: distance on the xy plane\\n  // r: ratio of the current point\\n  // p: ratio of the peak of the arc\\n  // h: height multiplier\\n  // z = f(r) = sqrt(r * (p * 2 - r)) * d * h\\n  // f(0) = 0\\n  // f(1) = dz\\n\\n  float deltaZ = targetZ - sourceZ;\\n  float dh = distance * instanceHeights;\\n  if (dh == 0.0) {\\n    return sourceZ + deltaZ * ratio;\\n  }\\n  float unitZ = deltaZ / dh;\\n  float p2 = unitZ * unitZ + 1.0;\\n\\n  // sqrt does not deal with negative values, manually flip source and target if delta.z < 0\\n  float dir = step(deltaZ, 0.0);\\n  float z0 = mix(sourceZ, targetZ, dir);\\n  float r = mix(ratio, 1.0 - ratio, dir);\\n  return sqrt(r * (p2 - r)) * dh + z0;\\n}\\n\\n// offset vector by strokeWidth pixels\\n// offset_direction is -1 (left) or 1 (right)\\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) {\\n  // normalized direction of the line\\n  vec2 dir_screenspace = normalize(line_clipspace * project_uViewportSize);\\n  // rotate by 90 degrees\\n  dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\\n\\n  return dir_screenspace * offset_direction * width / 2.0;\\n}\\n\\nfloat getSegmentRatio(float index) {\\n  return smoothstep(0.0, 1.0, index / (numSegments - 1.0));\\n}\\n\\nvec3 interpolateFlat(vec3 source, vec3 target, float segmentRatio) {\\n  float distance = length(source.xy - target.xy);\\n  float z = paraboloid(distance, source.z, target.z, segmentRatio);\\n\\n  float tiltAngle = radians(instanceTilts);\\n  vec2 tiltDirection = normalize(target.xy - source.xy);\\n  vec2 tilt = vec2(-tiltDirection.y, tiltDirection.x) * z * sin(tiltAngle);\\n\\n  return vec3(\\n    mix(source.xy, target.xy, segmentRatio) + tilt,\\n    z * cos(tiltAngle)\\n  );\\n}\\n\\n/* Great circle interpolation\\n * http://www.movable-type.co.uk/scripts/latlong.html\\n */\\nfloat getAngularDist (vec2 source, vec2 target) {\\n  vec2 sourceRadians = radians(source);\\n  vec2 targetRadians = radians(target);\\n  vec2 sin_half_delta = sin((sourceRadians - targetRadians) / 2.0);\\n  vec2 shd_sq = sin_half_delta * sin_half_delta;\\n\\n  float a = shd_sq.y + cos(sourceRadians.y) * cos(targetRadians.y) * shd_sq.x;\\n  return 2.0 * asin(sqrt(a));\\n}\\n\\nvec3 interpolateGreatCircle(vec3 source, vec3 target, vec3 source3D, vec3 target3D, float angularDist, float t) {\\n  vec2 lngLat;\\n\\n  // if the angularDist is PI, linear interpolation is applied. otherwise, use spherical interpolation\\n  if(abs(angularDist - PI) < 0.001) {\\n    lngLat = (1.0 - t) * source.xy + t * target.xy;\\n  } else {\\n    float a = sin((1.0 - t) * angularDist);\\n    float b = sin(t * angularDist);\\n    vec3 p = source3D.yxz * a + target3D.yxz * b;\\n    lngLat = degrees(vec2(atan(p.y, -p.x), atan(p.z, length(p.xy))));\\n  }\\n\\n  float z = paraboloid(angularDist * EARTH_RADIUS, source.z, target.z, t);\\n\\n  return vec3(lngLat, z);\\n}\\n\\n/* END GREAT CIRCLE */\\n\\nvoid main(void) {\\n  geometry.worldPosition = instanceSourcePositions;\\n  geometry.worldPositionAlt = instanceTargetPositions;\\n\\n  float segmentIndex = positions.x;\\n  float segmentRatio = getSegmentRatio(segmentIndex);\\n  float prevSegmentRatio = getSegmentRatio(max(0.0, segmentIndex - 1.0));\\n  float nextSegmentRatio = getSegmentRatio(min(numSegments - 1.0, segmentIndex + 1.0));\\n\\n  // if it's the first point, use next - current as direction\\n  // otherwise use current - prev\\n  float indexDir = mix(-1.0, 1.0, step(segmentIndex, 0.0));\\n  isValid = 1.0;\\n\\n  uv = vec2(segmentRatio, positions.y);\\n  geometry.uv = uv;\\n  geometry.pickingColor = instancePickingColors;\\n\\n  vec4 curr;\\n  vec4 next;\\n  vec3 source;\\n  vec3 target;\\n\\n  if ((greatCircle || project_uProjectionMode == PROJECTION_MODE_GLOBE) && project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\\n    source = project_globe_(vec3(instanceSourcePositions.xy, 0.0));\\n    target = project_globe_(vec3(instanceTargetPositions.xy, 0.0));\\n    float angularDist = getAngularDist(instanceSourcePositions.xy, instanceTargetPositions.xy);\\n\\n    vec3 prevPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, prevSegmentRatio);\\n    vec3 currPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, segmentRatio);\\n    vec3 nextPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, nextSegmentRatio);\\n\\n    if (abs(currPos.x - prevPos.x) > 180.0) {\\n      indexDir = -1.0;\\n      isValid = 0.0;\\n    } else if (abs(currPos.x - nextPos.x) > 180.0) {\\n      indexDir = 1.0;\\n      isValid = 0.0;\\n    }\\n    nextPos = indexDir < 0.0 ? prevPos : nextPos;\\n    nextSegmentRatio = indexDir < 0.0 ? prevSegmentRatio : nextSegmentRatio;\\n\\n    if (isValid == 0.0) {\\n      // split at the 180th meridian\\n      nextPos.x += nextPos.x > 0.0 ? -360.0 : 360.0;\\n      float t = ((currPos.x > 0.0 ? 180.0 : -180.0) - currPos.x) / (nextPos.x - currPos.x);\\n      currPos = mix(currPos, nextPos, t);\\n      segmentRatio = mix(segmentRatio, nextSegmentRatio, t);\\n    }\\n\\n    vec3 currPos64Low = mix(instanceSourcePositions64Low, instanceTargetPositions64Low, segmentRatio);\\n    vec3 nextPos64Low = mix(instanceSourcePositions64Low, instanceTargetPositions64Low, nextSegmentRatio);\\n  \\n    curr = project_position_to_clipspace(currPos, currPos64Low, vec3(0.0), geometry.position);\\n    next = project_position_to_clipspace(nextPos, nextPos64Low, vec3(0.0));\\n  \\n  } else {\\n    vec3 source_world = instanceSourcePositions;\\n    vec3 target_world = instanceTargetPositions;\\n    if (useShortestPath) {\\n      source_world.x = mod(source_world.x + 180., 360.0) - 180.;\\n      target_world.x = mod(target_world.x + 180., 360.0) - 180.;\\n\\n      float deltaLng = target_world.x - source_world.x;\\n      if (deltaLng > 180.) target_world.x -= 360.;\\n      if (deltaLng < -180.) source_world.x -= 360.;\\n    }\\n    source = project_position(source_world, instanceSourcePositions64Low);\\n    target = project_position(target_world, instanceTargetPositions64Low);\\n\\n    // common x at longitude=-180\\n    float antiMeridianX = 0.0;\\n\\n    if (useShortestPath) {\\n      if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\\n        antiMeridianX = -(project_uCoordinateOrigin.x + 180.) / 360. * TILE_SIZE;\\n      }\\n      float thresholdRatio = (antiMeridianX - source.x) / (target.x - source.x);\\n\\n      if (prevSegmentRatio <= thresholdRatio && nextSegmentRatio > thresholdRatio) {\\n        isValid = 0.0;\\n        indexDir = sign(segmentRatio - thresholdRatio);\\n        segmentRatio = thresholdRatio;\\n      }\\n    }\\n\\n    nextSegmentRatio = indexDir < 0.0 ? prevSegmentRatio : nextSegmentRatio;\\n    vec3 currPos = interpolateFlat(source, target, segmentRatio);\\n    vec3 nextPos = interpolateFlat(source, target, nextSegmentRatio);\\n\\n    if (useShortestPath) {\\n      if (nextPos.x < antiMeridianX) {\\n        currPos.x += TILE_SIZE;\\n        nextPos.x += TILE_SIZE;\\n      }\\n    }\\n\\n    curr = project_common_position_to_clipspace(vec4(currPos, 1.0));\\n    next = project_common_position_to_clipspace(vec4(nextPos, 1.0));\\n    geometry.position = vec4(currPos, 1.0);\\n  }\\n\\n  // Multiply out width and clamp to limits\\n  // mercator pixels are interpreted as screen pixels\\n  float widthPixels = clamp(\\n    project_size_to_pixel(instanceWidths * widthScale, widthUnits),\\n    widthMinPixels, widthMaxPixels\\n  );\\n\\n  // extrude\\n  vec3 offset = vec3(\\n    getExtrusionOffset((next.xy - curr.xy) * indexDir, positions.y, widthPixels),\\n    0.0);\\n  DECKGL_FILTER_SIZE(offset, geometry);\\n  gl_Position = curr + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0);\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n  vec4 color = mix(instanceSourceColors, instanceTargetColors, segmentRatio);\\n  vColor = vec4(color.rgb, color.a * opacity);\\n  DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\");\n//# sourceMappingURL=arc-layer-vertex.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/arc-layer/arc-layer-vertex.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/arc-layer/arc-layer.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/arc-layer/arc-layer.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ArcLayer; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/layer.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project32/project32.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/picking/picking.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/lib/model.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js\");\n/* harmony import */ var _arc_layer_vertex_glsl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./arc-layer-vertex.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/arc-layer/arc-layer-vertex.glsl.js\");\n/* harmony import */ var _arc_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./arc-layer-fragment.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/arc-layer/arc-layer-fragment.glsl.js\");\n\n\n\n\n\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n  getSourcePosition: {\n    type: 'accessor',\n    value: x => x.sourcePosition\n  },\n  getTargetPosition: {\n    type: 'accessor',\n    value: x => x.targetPosition\n  },\n  getSourceColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getTargetColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getWidth: {\n    type: 'accessor',\n    value: 1\n  },\n  getHeight: {\n    type: 'accessor',\n    value: 1\n  },\n  getTilt: {\n    type: 'accessor',\n    value: 0\n  },\n  greatCircle: false,\n  widthUnits: 'pixels',\n  widthScale: {\n    type: 'number',\n    value: 1,\n    min: 0\n  },\n  widthMinPixels: {\n    type: 'number',\n    value: 0,\n    min: 0\n  },\n  widthMaxPixels: {\n    type: 'number',\n    value: Number.MAX_SAFE_INTEGER,\n    min: 0\n  }\n};\nclass ArcLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(...args) {\n    super(...args);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"state\", void 0);\n  }\n\n  getShaders() {\n    return super.getShaders({\n      vs: _arc_layer_vertex_glsl__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n      fs: _arc_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      modules: [_deck_gl_core__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _deck_gl_core__WEBPACK_IMPORTED_MODULE_5__[\"default\"]]\n    });\n  }\n\n  get wrapLongitude() {\n    return false;\n  }\n\n  initializeState() {\n    const attributeManager = this.getAttributeManager();\n    attributeManager.addInstanced({\n      instanceSourcePositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getSourcePosition'\n      },\n      instanceTargetPositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getTargetPosition'\n      },\n      instanceSourceColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: true,\n        accessor: 'getSourceColor',\n        defaultValue: DEFAULT_COLOR\n      },\n      instanceTargetColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: true,\n        accessor: 'getTargetColor',\n        defaultValue: DEFAULT_COLOR\n      },\n      instanceWidths: {\n        size: 1,\n        transition: true,\n        accessor: 'getWidth',\n        defaultValue: 1\n      },\n      instanceHeights: {\n        size: 1,\n        transition: true,\n        accessor: 'getHeight',\n        defaultValue: 1\n      },\n      instanceTilts: {\n        size: 1,\n        transition: true,\n        accessor: 'getTilt',\n        defaultValue: 0\n      }\n    });\n  }\n\n  updateState(opts) {\n    super.updateState(opts);\n\n    if (opts.changeFlags.extensionsChanged) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      this.getAttributeManager().invalidateAll();\n    }\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      widthUnits,\n      widthScale,\n      widthMinPixels,\n      widthMaxPixels,\n      greatCircle,\n      wrapLongitude\n    } = this.props;\n    this.state.model.setUniforms(uniforms).setUniforms({\n      greatCircle,\n      widthUnits: _deck_gl_core__WEBPACK_IMPORTED_MODULE_6__.UNIT[widthUnits],\n      widthScale,\n      widthMinPixels,\n      widthMaxPixels,\n      useShortestPath: wrapLongitude\n    }).draw();\n  }\n\n  _getModel(gl) {\n    let positions = [];\n    const NUM_SEGMENTS = 50;\n\n    for (let i = 0; i < NUM_SEGMENTS; i++) {\n      positions = positions.concat([i, 1, 0, i, -1, 0]);\n    }\n\n    const model = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_7__[\"default\"](gl, { ...this.getShaders(),\n      id: this.props.id,\n      geometry: new _luma_gl_core__WEBPACK_IMPORTED_MODULE_8__[\"default\"]({\n        drawMode: 5,\n        attributes: {\n          positions: new Float32Array(positions)\n        }\n      }),\n      isInstanced: true\n    });\n    model.setUniforms({\n      numSegments: NUM_SEGMENTS\n    });\n    return model;\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ArcLayer, \"layerName\", 'ArcLayer');\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ArcLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=arc-layer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/arc-layer/arc-layer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/bitmap-layer-fragment.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/bitmap-layer-fragment.js ***!
  \*************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst packUVsIntoRGB = \"\\nvec3 packUVsIntoRGB(vec2 uv) {\\n  // Extract the top 8 bits. We want values to be truncated down so we can add a fraction\\n  vec2 uv8bit = floor(uv * 256.);\\n\\n  // Calculate the normalized remainders of u and v parts that do not fit into 8 bits\\n  // Scale and clamp to 0-1 range\\n  vec2 uvFraction = fract(uv * 256.);\\n  vec2 uvFraction4bit = floor(uvFraction * 16.);\\n\\n  // Remainder can be encoded in blue channel, encode as 4 bits for pixel coordinates\\n  float fractions = uvFraction4bit.x + uvFraction4bit.y * 16.;\\n\\n  return vec3(uv8bit, fractions) / 255.;\\n}\\n\";\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"\\n#define SHADER_NAME bitmap-layer-fragment-shader\\n\\n#ifdef GL_ES\\nprecision highp float;\\n#endif\\n\\nuniform sampler2D bitmapTexture;\\n\\nvarying vec2 vTexCoord;\\nvarying vec2 vTexPos;\\n\\nuniform float desaturate;\\nuniform vec4 transparentColor;\\nuniform vec3 tintColor;\\nuniform float opacity;\\n\\nuniform float coordinateConversion;\\nuniform vec4 bounds;\\n\\n/* projection utils */\\nconst float TILE_SIZE = 512.0;\\nconst float PI = 3.1415926536;\\nconst float WORLD_SCALE = TILE_SIZE / PI / 2.0;\\n\\n// from degrees to Web Mercator\\nvec2 lnglat_to_mercator(vec2 lnglat) {\\n  float x = lnglat.x;\\n  float y = clamp(lnglat.y, -89.9, 89.9);\\n  return vec2(\\n    radians(x) + PI,\\n    PI + log(tan(PI * 0.25 + radians(y) * 0.5))\\n  ) * WORLD_SCALE;\\n}\\n\\n// from Web Mercator to degrees\\nvec2 mercator_to_lnglat(vec2 xy) {\\n  xy /= WORLD_SCALE;\\n  return degrees(vec2(\\n    xy.x - PI,\\n    atan(exp(xy.y - PI)) * 2.0 - PI * 0.5\\n  ));\\n}\\n/* End projection utils */\\n\\n// apply desaturation\\nvec3 color_desaturate(vec3 color) {\\n  float luminance = (color.r + color.g + color.b) * 0.333333333;\\n  return mix(color, vec3(luminance), desaturate);\\n}\\n\\n// apply tint\\nvec3 color_tint(vec3 color) {\\n  return color * tintColor;\\n}\\n\\n// blend with background color\\nvec4 apply_opacity(vec3 color, float alpha) {\\n  return mix(transparentColor, vec4(color, 1.0), alpha);\\n}\\n\\nvec2 getUV(vec2 pos) {\\n  return vec2(\\n    (pos.x - bounds[0]) / (bounds[2] - bounds[0]),\\n    (pos.y - bounds[3]) / (bounds[1] - bounds[3])\\n  );\\n}\\n\\n\".concat(packUVsIntoRGB, \"\\n\\nvoid main(void) {\\n  vec2 uv = vTexCoord;\\n  if (coordinateConversion < -0.5) {\\n    vec2 lnglat = mercator_to_lnglat(vTexPos);\\n    uv = getUV(lnglat);\\n  } else if (coordinateConversion > 0.5) {\\n    vec2 commonPos = lnglat_to_mercator(vTexPos);\\n    uv = getUV(commonPos);\\n  }\\n  vec4 bitmapColor = texture2D(bitmapTexture, uv);\\n\\n  gl_FragColor = apply_opacity(color_tint(color_desaturate(bitmapColor.rgb)), bitmapColor.a * opacity);\\n\\n  geometry.uv = uv;\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n\\n  if (picking_uActive) {\\n    // Since instance information is not used, we can use picking color for pixel index\\n    gl_FragColor.rgb = packUVsIntoRGB(uv);\\n  }\\n}\\n\"));\n//# sourceMappingURL=bitmap-layer-fragment.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/bitmap-layer-fragment.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/bitmap-layer-vertex.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/bitmap-layer-vertex.js ***!
  \***********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"\\n#define SHADER_NAME bitmap-layer-vertex-shader\\n\\nattribute vec2 texCoords;\\nattribute vec3 positions;\\nattribute vec3 positions64Low;\\n\\nvarying vec2 vTexCoord;\\nvarying vec2 vTexPos;\\n\\nuniform float coordinateConversion;\\n\\nconst vec3 pickingColor = vec3(1.0, 0.0, 0.0);\\n\\nvoid main(void) {\\n  geometry.worldPosition = positions;\\n  geometry.uv = texCoords;\\n  geometry.pickingColor = pickingColor;\\n\\n  gl_Position = project_position_to_clipspace(positions, positions64Low, vec3(0.0), geometry.position);\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n  vTexCoord = texCoords;\\n\\n  if (coordinateConversion < -0.5) {\\n    vTexPos = geometry.position.xy + project_uCommonOrigin.xy;\\n  } else if (coordinateConversion > 0.5) {\\n    vTexPos = geometry.worldPosition.xy;\\n  }\\n\\n  vec4 color = vec4(0.0);\\n  DECKGL_FILTER_COLOR(color, geometry);\\n}\\n\");\n//# sourceMappingURL=bitmap-layer-vertex.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/bitmap-layer-vertex.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/bitmap-layer.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/bitmap-layer.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ BitmapLayer; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/layer.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project32/project32.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/picking/picking.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/lib/model.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js\");\n/* harmony import */ var _math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @math.gl/web-mercator */ \"./node_modules/@math.gl/web-mercator/dist/esm/index.js\");\n/* harmony import */ var _create_mesh__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./create-mesh */ \"./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/create-mesh.js\");\n/* harmony import */ var _bitmap_layer_vertex__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bitmap-layer-vertex */ \"./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/bitmap-layer-vertex.js\");\n/* harmony import */ var _bitmap_layer_fragment__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./bitmap-layer-fragment */ \"./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/bitmap-layer-fragment.js\");\n\n\n\n\n\n\n\nconst defaultProps = {\n  image: {\n    type: 'image',\n    value: null,\n    async: true\n  },\n  bounds: {\n    type: 'array',\n    value: [1, 0, 0, 1],\n    compare: true\n  },\n  _imageCoordinateSystem: _deck_gl_core__WEBPACK_IMPORTED_MODULE_2__.COORDINATE_SYSTEM.DEFAULT,\n  desaturate: {\n    type: 'number',\n    min: 0,\n    max: 1,\n    value: 0\n  },\n  transparentColor: {\n    type: 'color',\n    value: [0, 0, 0, 0]\n  },\n  tintColor: {\n    type: 'color',\n    value: [255, 255, 255]\n  }\n};\nclass BitmapLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"] {\n  constructor(...args) {\n    super(...args);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"state\", void 0);\n  }\n\n  getShaders() {\n    return super.getShaders({\n      vs: _bitmap_layer_vertex__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n      fs: _bitmap_layer_fragment__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n      modules: [_deck_gl_core__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _deck_gl_core__WEBPACK_IMPORTED_MODULE_7__[\"default\"]]\n    });\n  }\n\n  initializeState() {\n    const attributeManager = this.getAttributeManager();\n    attributeManager.remove(['instancePickingColors']);\n    const noAlloc = true;\n    attributeManager.add({\n      indices: {\n        size: 1,\n        isIndexed: true,\n        update: attribute => attribute.value = this.state.mesh.indices,\n        noAlloc\n      },\n      positions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        update: attribute => attribute.value = this.state.mesh.positions,\n        noAlloc\n      },\n      texCoords: {\n        size: 2,\n        update: attribute => attribute.value = this.state.mesh.texCoords,\n        noAlloc\n      }\n    });\n  }\n\n  updateState({\n    props,\n    oldProps,\n    changeFlags\n  }) {\n    const attributeManager = this.getAttributeManager();\n\n    if (changeFlags.extensionsChanged) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      attributeManager.invalidateAll();\n    }\n\n    if (props.bounds !== oldProps.bounds) {\n      const oldMesh = this.state.mesh;\n\n      const mesh = this._createMesh();\n\n      this.state.model.setVertexCount(mesh.vertexCount);\n\n      for (const key in mesh) {\n        if (oldMesh && oldMesh[key] !== mesh[key]) {\n          attributeManager.invalidate(key);\n        }\n      }\n\n      this.setState({\n        mesh,\n        ...this._getCoordinateUniforms()\n      });\n    } else if (props._imageCoordinateSystem !== oldProps._imageCoordinateSystem) {\n      this.setState(this._getCoordinateUniforms());\n    }\n  }\n\n  getPickingInfo(params) {\n    const {\n      image\n    } = this.props;\n    const info = params.info;\n\n    if (!info.color || !image) {\n      info.bitmap = null;\n      return info;\n    }\n\n    const {\n      width,\n      height\n    } = image;\n    info.index = 0;\n    const uv = unpackUVsFromRGB(info.color);\n    const pixel = [Math.floor(uv[0] * width), Math.floor(uv[1] * height)];\n    info.bitmap = {\n      size: {\n        width,\n        height\n      },\n      uv,\n      pixel\n    };\n    return info;\n  }\n\n  disablePickingIndex() {\n    this.setState({\n      disablePicking: true\n    });\n  }\n\n  restorePickingColors() {\n    this.setState({\n      disablePicking: false\n    });\n  }\n\n  _updateAutoHighlight(info) {\n    super._updateAutoHighlight({ ...info,\n      color: this.encodePickingColor(0)\n    });\n  }\n\n  _createMesh() {\n    const {\n      bounds\n    } = this.props;\n    let normalizedBounds = bounds;\n\n    if (isRectangularBounds(bounds)) {\n      normalizedBounds = [[bounds[0], bounds[1]], [bounds[0], bounds[3]], [bounds[2], bounds[3]], [bounds[2], bounds[1]]];\n    }\n\n    return (0,_create_mesh__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(normalizedBounds, this.context.viewport.resolution);\n  }\n\n  _getModel(gl) {\n    if (!gl) {\n      return null;\n    }\n\n    return new _luma_gl_core__WEBPACK_IMPORTED_MODULE_9__[\"default\"](gl, { ...this.getShaders(),\n      id: this.props.id,\n      geometry: new _luma_gl_core__WEBPACK_IMPORTED_MODULE_10__[\"default\"]({\n        drawMode: 4,\n        vertexCount: 6\n      }),\n      isInstanced: false\n    });\n  }\n\n  draw(opts) {\n    const {\n      uniforms,\n      moduleParameters\n    } = opts;\n    const {\n      model,\n      coordinateConversion,\n      bounds,\n      disablePicking\n    } = this.state;\n    const {\n      image,\n      desaturate,\n      transparentColor,\n      tintColor\n    } = this.props;\n\n    if (moduleParameters.pickingActive && disablePicking) {\n      return;\n    }\n\n    if (image && model) {\n      model.setUniforms(uniforms).setUniforms({\n        bitmapTexture: image,\n        desaturate,\n        transparentColor: transparentColor.map(x => x / 255),\n        tintColor: tintColor.slice(0, 3).map(x => x / 255),\n        coordinateConversion,\n        bounds\n      }).draw();\n    }\n  }\n\n  _getCoordinateUniforms() {\n    const {\n      LNGLAT,\n      CARTESIAN,\n      DEFAULT\n    } = _deck_gl_core__WEBPACK_IMPORTED_MODULE_2__.COORDINATE_SYSTEM;\n    let {\n      _imageCoordinateSystem: imageCoordinateSystem\n    } = this.props;\n\n    if (imageCoordinateSystem !== DEFAULT) {\n      const {\n        bounds\n      } = this.props;\n\n      if (!isRectangularBounds(bounds)) {\n        throw new Error('_imageCoordinateSystem only supports rectangular bounds');\n      }\n\n      const defaultImageCoordinateSystem = this.context.viewport.resolution ? LNGLAT : CARTESIAN;\n      imageCoordinateSystem = imageCoordinateSystem === LNGLAT ? LNGLAT : CARTESIAN;\n\n      if (imageCoordinateSystem === LNGLAT && defaultImageCoordinateSystem === CARTESIAN) {\n        return {\n          coordinateConversion: -1,\n          bounds\n        };\n      }\n\n      if (imageCoordinateSystem === CARTESIAN && defaultImageCoordinateSystem === LNGLAT) {\n        const bottomLeft = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.lngLatToWorld)([bounds[0], bounds[1]]);\n        const topRight = (0,_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__.lngLatToWorld)([bounds[2], bounds[3]]);\n        return {\n          coordinateConversion: 1,\n          bounds: [bottomLeft[0], bottomLeft[1], topRight[0], topRight[1]]\n        };\n      }\n    }\n\n    return {\n      coordinateConversion: 0,\n      bounds: [0, 0, 0, 0]\n    };\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(BitmapLayer, \"layerName\", 'BitmapLayer');\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(BitmapLayer, \"defaultProps\", defaultProps);\n\nfunction unpackUVsFromRGB(color) {\n  const [u, v, fracUV] = color;\n  const vFrac = (fracUV & 0xf0) / 256;\n  const uFrac = (fracUV & 0x0f) / 16;\n  return [(u + uFrac) / 256, (v + vFrac) / 256];\n}\n\nfunction isRectangularBounds(bounds) {\n  return Number.isFinite(bounds[0]);\n}\n//# sourceMappingURL=bitmap-layer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/bitmap-layer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/create-mesh.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/create-mesh.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ createMesh; }\n/* harmony export */ });\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n\nconst DEFAULT_INDICES = new Uint16Array([0, 2, 1, 0, 3, 2]);\nconst DEFAULT_TEX_COORDS = new Float32Array([0, 1, 0, 0, 1, 0, 1, 1]);\nfunction createMesh(bounds, resolution) {\n  if (!resolution) {\n    return createQuad(bounds);\n  }\n\n  const maxXSpan = Math.max(Math.abs(bounds[0][0] - bounds[3][0]), Math.abs(bounds[1][0] - bounds[2][0]));\n  const maxYSpan = Math.max(Math.abs(bounds[1][1] - bounds[0][1]), Math.abs(bounds[2][1] - bounds[3][1]));\n  const uCount = Math.ceil(maxXSpan / resolution) + 1;\n  const vCount = Math.ceil(maxYSpan / resolution) + 1;\n  const vertexCount = (uCount - 1) * (vCount - 1) * 6;\n  const indices = new Uint32Array(vertexCount);\n  const texCoords = new Float32Array(uCount * vCount * 2);\n  const positions = new Float64Array(uCount * vCount * 3);\n  let vertex = 0;\n  let index = 0;\n\n  for (let u = 0; u < uCount; u++) {\n    const ut = u / (uCount - 1);\n\n    for (let v = 0; v < vCount; v++) {\n      const vt = v / (vCount - 1);\n      const p = interpolateQuad(bounds, ut, vt);\n      positions[vertex * 3 + 0] = p[0];\n      positions[vertex * 3 + 1] = p[1];\n      positions[vertex * 3 + 2] = p[2] || 0;\n      texCoords[vertex * 2 + 0] = ut;\n      texCoords[vertex * 2 + 1] = 1 - vt;\n\n      if (u > 0 && v > 0) {\n        indices[index++] = vertex - vCount;\n        indices[index++] = vertex - vCount - 1;\n        indices[index++] = vertex - 1;\n        indices[index++] = vertex - vCount;\n        indices[index++] = vertex - 1;\n        indices[index++] = vertex;\n      }\n\n      vertex++;\n    }\n  }\n\n  return {\n    vertexCount,\n    positions,\n    indices,\n    texCoords\n  };\n}\n\nfunction createQuad(bounds) {\n  const positions = new Float64Array(12);\n\n  for (let i = 0; i < bounds.length; i++) {\n    positions[i * 3 + 0] = bounds[i][0];\n    positions[i * 3 + 1] = bounds[i][1];\n    positions[i * 3 + 2] = bounds[i][2] || 0;\n  }\n\n  return {\n    vertexCount: 6,\n    positions,\n    indices: DEFAULT_INDICES,\n    texCoords: DEFAULT_TEX_COORDS\n  };\n}\n\nfunction interpolateQuad(quad, ut, vt) {\n  return (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_0__.lerp)((0,_math_gl_core__WEBPACK_IMPORTED_MODULE_0__.lerp)(quad[0], quad[1], vt), (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_0__.lerp)(quad[3], quad[2], vt), ut);\n}\n//# sourceMappingURL=create-mesh.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/create-mesh.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/column-layer/column-geometry.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/column-layer/column-geometry.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ColumnGeometry; }\n/* harmony export */ });\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js\");\n/* harmony import */ var _math_gl_polygon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/polygon */ \"./node_modules/@math.gl/polygon/dist/esm/index.js\");\n\n\n\nclass ColumnGeometry extends _luma_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(props) {\n    const {\n      id = (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_2__.uid)('column-geometry')\n    } = props;\n    const {\n      indices,\n      attributes\n    } = tesselateColumn(props);\n    super({ ...props,\n      id,\n      indices,\n      attributes\n    });\n  }\n\n}\n\nfunction tesselateColumn(props) {\n  const {\n    radius,\n    height = 1,\n    nradial = 10\n  } = props;\n  let {\n    vertices\n  } = props;\n\n  if (vertices) {\n    _deck_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"].assert(vertices.length >= nradial);\n    vertices = vertices.flatMap(v => [v[0], v[1]]);\n    (0,_math_gl_polygon__WEBPACK_IMPORTED_MODULE_0__.modifyPolygonWindingDirection)(vertices, _math_gl_polygon__WEBPACK_IMPORTED_MODULE_0__.WINDING.COUNTER_CLOCKWISE);\n  }\n\n  const isExtruded = height > 0;\n  const vertsAroundEdge = nradial + 1;\n  const numVertices = isExtruded ? vertsAroundEdge * 3 + 1 : nradial;\n  const stepAngle = Math.PI * 2 / nradial;\n  const indices = new Uint16Array(isExtruded ? nradial * 3 * 2 : 0);\n  const positions = new Float32Array(numVertices * 3);\n  const normals = new Float32Array(numVertices * 3);\n  let i = 0;\n\n  if (isExtruded) {\n    for (let j = 0; j < vertsAroundEdge; j++) {\n      const a = j * stepAngle;\n      const vertexIndex = j % nradial;\n      const sin = Math.sin(a);\n      const cos = Math.cos(a);\n\n      for (let k = 0; k < 2; k++) {\n        positions[i + 0] = vertices ? vertices[vertexIndex * 2] : cos * radius;\n        positions[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin * radius;\n        positions[i + 2] = (1 / 2 - k) * height;\n        normals[i + 0] = vertices ? vertices[vertexIndex * 2] : cos;\n        normals[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin;\n        i += 3;\n      }\n    }\n\n    positions[i + 0] = positions[i - 3];\n    positions[i + 1] = positions[i - 2];\n    positions[i + 2] = positions[i - 1];\n    i += 3;\n  }\n\n  for (let j = isExtruded ? 0 : 1; j < vertsAroundEdge; j++) {\n    const v = Math.floor(j / 2) * Math.sign(0.5 - j % 2);\n    const a = v * stepAngle;\n    const vertexIndex = (v + nradial) % nradial;\n    const sin = Math.sin(a);\n    const cos = Math.cos(a);\n    positions[i + 0] = vertices ? vertices[vertexIndex * 2] : cos * radius;\n    positions[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin * radius;\n    positions[i + 2] = height / 2;\n    normals[i + 2] = 1;\n    i += 3;\n  }\n\n  if (isExtruded) {\n    let index = 0;\n\n    for (let j = 0; j < nradial; j++) {\n      indices[index++] = j * 2 + 0;\n      indices[index++] = j * 2 + 2;\n      indices[index++] = j * 2 + 0;\n      indices[index++] = j * 2 + 1;\n      indices[index++] = j * 2 + 1;\n      indices[index++] = j * 2 + 3;\n    }\n  }\n\n  return {\n    indices,\n    attributes: {\n      POSITION: {\n        size: 3,\n        value: positions\n      },\n      NORMAL: {\n        size: 3,\n        value: normals\n      }\n    }\n  };\n}\n//# sourceMappingURL=column-geometry.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/column-layer/column-geometry.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer-fragment.glsl.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer-fragment.glsl.js ***!
  \******************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#version 300 es\\n#define SHADER_NAME column-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform vec3 project_uCameraPosition;\\nuniform bool extruded;\\nuniform bool isStroke;\\n\\nout vec4 fragColor;\\n\\nin vec4 vColor;\\n#ifdef FLAT_SHADING\\nin vec4 position_commonspace;\\n#endif\\n\\nvoid main(void) {\\n  fragColor = vColor;\\n#ifdef FLAT_SHADING\\n  if (extruded && !isStroke && !picking_uActive) {\\n    vec3 normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\\n    fragColor.rgb = lighting_getLightColor(vColor.rgb, project_uCameraPosition, position_commonspace.xyz, normal);\\n  }\\n#endif\\n  DECKGL_FILTER_COLOR(fragColor, geometry);\\n}\\n\");\n//# sourceMappingURL=column-layer-fragment.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer-fragment.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer-vertex.glsl.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer-vertex.glsl.js ***!
  \****************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#version 300 es\\n\\n#define SHADER_NAME column-layer-vertex-shader\\n\\nin vec3 positions;\\nin vec3 normals;\\n\\nin vec3 instancePositions;\\nin float instanceElevations;\\nin vec3 instancePositions64Low;\\nin vec4 instanceFillColors;\\nin vec4 instanceLineColors;\\nin float instanceStrokeWidths;\\n\\nin vec3 instancePickingColors;\\n\\n// Custom uniforms\\nuniform float opacity;\\nuniform float radius;\\nuniform float angle;\\nuniform vec2 offset;\\nuniform bool extruded;\\nuniform bool stroked;\\nuniform bool isStroke;\\nuniform float coverage;\\nuniform float elevationScale;\\nuniform float edgeDistance;\\nuniform float widthScale;\\nuniform float widthMinPixels;\\nuniform float widthMaxPixels;\\nuniform int radiusUnits;\\nuniform int widthUnits;\\n\\n// Result\\nout vec4 vColor;\\n#ifdef FLAT_SHADING\\nout vec4 position_commonspace;\\n#endif\\n\\nvoid main(void) {\\n  geometry.worldPosition = instancePositions;\\n\\n  vec4 color = isStroke ? instanceLineColors : instanceFillColors;\\n  // rotate primitive position and normal\\n  mat2 rotationMatrix = mat2(cos(angle), sin(angle), -sin(angle), cos(angle));\\n\\n  // calculate elevation, if 3d not enabled set to 0\\n  // cylindar gemoetry height are between -1.0 to 1.0, transform it to between 0, 1\\n  float elevation = 0.0;\\n  // calculate stroke offset\\n  float strokeOffsetRatio = 1.0;\\n\\n  if (extruded) {\\n    elevation = instanceElevations * (positions.z + 1.0) / 2.0 * elevationScale;\\n  } else if (stroked) {\\n    float widthPixels = clamp(\\n      project_size_to_pixel(instanceStrokeWidths * widthScale, widthUnits),\\n      widthMinPixels, widthMaxPixels) / 2.0;\\n    float halfOffset = project_pixel_size(widthPixels) / project_size(edgeDistance * coverage * radius);\\n    if (isStroke) {\\n      strokeOffsetRatio -= sign(positions.z) * halfOffset;\\n    } else {\\n      strokeOffsetRatio -= halfOffset;\\n    }\\n  }\\n\\n  // if alpha == 0.0 or z < 0.0, do not render element\\n  float shouldRender = float(color.a > 0.0 && instanceElevations >= 0.0);\\n  float dotRadius = radius * coverage * shouldRender;\\n\\n  geometry.pickingColor = instancePickingColors;\\n\\n  // project center of column\\n  vec3 centroidPosition = vec3(instancePositions.xy, instancePositions.z + elevation);\\n  vec3 centroidPosition64Low = instancePositions64Low;\\n  vec2 offset = (rotationMatrix * positions.xy * strokeOffsetRatio + offset) * dotRadius;\\n  if (radiusUnits == UNIT_METERS) {\\n    offset = project_size(offset);\\n  }\\n  vec3 pos = vec3(offset, 0.);\\n  DECKGL_FILTER_SIZE(pos, geometry);\\n\\n  gl_Position = project_position_to_clipspace(centroidPosition, centroidPosition64Low, pos, geometry.position);\\n  geometry.normal = project_normal(vec3(rotationMatrix * normals.xy, normals.z));\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n  // Light calculations\\n  if (extruded && !isStroke) {\\n#ifdef FLAT_SHADING\\n    position_commonspace = geometry.position;\\n    vColor = vec4(color.rgb, color.a * opacity);\\n#else\\n    vec3 lightColor = lighting_getLightColor(color.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);\\n    vColor = vec4(lightColor, color.a * opacity);\\n#endif\\n  } else {\\n    vColor = vec4(color.rgb, color.a * opacity);\\n  }\\n  DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\");\n//# sourceMappingURL=column-layer-vertex.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer-vertex.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ColumnLayer; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/layer.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project32/project32.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/picking/picking.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/features/features.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/features/webgl-features-table.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/lib/model.js\");\n/* harmony import */ var _column_geometry__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./column-geometry */ \"./node_modules/@deck.gl/layers/dist/esm/column-layer/column-geometry.js\");\n/* harmony import */ var _column_layer_vertex_glsl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./column-layer-vertex.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer-vertex.glsl.js\");\n/* harmony import */ var _column_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./column-layer-fragment.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer-fragment.glsl.js\");\n\n\n\n\n\n\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n  diskResolution: {\n    type: 'number',\n    min: 4,\n    value: 20\n  },\n  vertices: null,\n  radius: {\n    type: 'number',\n    min: 0,\n    value: 1000\n  },\n  angle: {\n    type: 'number',\n    value: 0\n  },\n  offset: {\n    type: 'array',\n    value: [0, 0]\n  },\n  coverage: {\n    type: 'number',\n    min: 0,\n    max: 1,\n    value: 1\n  },\n  elevationScale: {\n    type: 'number',\n    min: 0,\n    value: 1\n  },\n  radiusUnits: 'meters',\n  lineWidthUnits: 'meters',\n  lineWidthScale: 1,\n  lineWidthMinPixels: 0,\n  lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n  extruded: true,\n  wireframe: false,\n  filled: true,\n  stroked: false,\n  getPosition: {\n    type: 'accessor',\n    value: x => x.position\n  },\n  getFillColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getLineColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getLineWidth: {\n    type: 'accessor',\n    value: 1\n  },\n  getElevation: {\n    type: 'accessor',\n    value: 1000\n  },\n  material: true,\n  getColor: {\n    deprecatedFor: ['getFillColor', 'getLineColor']\n  }\n};\nclass ColumnLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  getShaders() {\n    const {\n      gl\n    } = this.context;\n    const transpileToGLSL100 = !(0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_2__.isWebGL2)(gl);\n    const defines = {};\n    const useDerivatives = this.props.flatShading && (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_3__.hasFeature)(gl, _luma_gl_core__WEBPACK_IMPORTED_MODULE_4__.FEATURES.GLSL_DERIVATIVES);\n\n    if (useDerivatives) {\n      defines.FLAT_SHADING = 1;\n    }\n\n    return super.getShaders({\n      vs: _column_layer_vertex_glsl__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n      fs: _column_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n      defines,\n      transpileToGLSL100,\n      modules: [_deck_gl_core__WEBPACK_IMPORTED_MODULE_7__[\"default\"], useDerivatives ? _deck_gl_core__WEBPACK_IMPORTED_MODULE_8__.phongLighting : _deck_gl_core__WEBPACK_IMPORTED_MODULE_8__.gouraudLighting, _deck_gl_core__WEBPACK_IMPORTED_MODULE_9__[\"default\"]]\n    });\n  }\n\n  initializeState() {\n    const attributeManager = this.getAttributeManager();\n    attributeManager.addInstanced({\n      instancePositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getPosition'\n      },\n      instanceElevations: {\n        size: 1,\n        transition: true,\n        accessor: 'getElevation'\n      },\n      instanceFillColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: true,\n        accessor: 'getFillColor',\n        defaultValue: DEFAULT_COLOR\n      },\n      instanceLineColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: true,\n        accessor: 'getLineColor',\n        defaultValue: DEFAULT_COLOR\n      },\n      instanceStrokeWidths: {\n        size: 1,\n        accessor: 'getLineWidth',\n        transition: true\n      }\n    });\n  }\n\n  updateState(params) {\n    super.updateState(params);\n    const {\n      props,\n      oldProps,\n      changeFlags\n    } = params;\n    const regenerateModels = changeFlags.extensionsChanged || props.flatShading !== oldProps.flatShading;\n\n    if (regenerateModels) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      this.getAttributeManager().invalidateAll();\n    }\n\n    if (regenerateModels || props.diskResolution !== oldProps.diskResolution || props.vertices !== oldProps.vertices || (props.extruded || props.stroked) !== (oldProps.extruded || oldProps.stroked)) {\n      this._updateGeometry(props);\n    }\n  }\n\n  getGeometry(diskResolution, vertices, hasThinkness) {\n    const geometry = new _column_geometry__WEBPACK_IMPORTED_MODULE_10__[\"default\"]({\n      radius: 1,\n      height: hasThinkness ? 2 : 0,\n      vertices,\n      nradial: diskResolution\n    });\n    let meanVertexDistance = 0;\n\n    if (vertices) {\n      for (let i = 0; i < diskResolution; i++) {\n        const p = vertices[i];\n        const d = Math.sqrt(p[0] * p[0] + p[1] * p[1]);\n        meanVertexDistance += d / diskResolution;\n      }\n    } else {\n      meanVertexDistance = 1;\n    }\n\n    this.setState({\n      edgeDistance: Math.cos(Math.PI / diskResolution) * meanVertexDistance\n    });\n    return geometry;\n  }\n\n  _getModel(gl) {\n    return new _luma_gl_core__WEBPACK_IMPORTED_MODULE_11__[\"default\"](gl, { ...this.getShaders(),\n      id: this.props.id,\n      isInstanced: true\n    });\n  }\n\n  _updateGeometry({\n    diskResolution,\n    vertices,\n    extruded,\n    stroked\n  }) {\n    const geometry = this.getGeometry(diskResolution, vertices, extruded || stroked);\n    this.setState({\n      fillVertexCount: geometry.attributes.POSITION.value.length / 3,\n      wireframeVertexCount: geometry.indices.value.length\n    });\n    this.state.model.setProps({\n      geometry\n    });\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      lineWidthUnits,\n      lineWidthScale,\n      lineWidthMinPixels,\n      lineWidthMaxPixels,\n      radiusUnits,\n      elevationScale,\n      extruded,\n      filled,\n      stroked,\n      wireframe,\n      offset,\n      coverage,\n      radius,\n      angle\n    } = this.props;\n    const {\n      model,\n      fillVertexCount,\n      wireframeVertexCount,\n      edgeDistance\n    } = this.state;\n    model.setUniforms(uniforms).setUniforms({\n      radius,\n      angle: angle / 180 * Math.PI,\n      offset,\n      extruded,\n      stroked,\n      coverage,\n      elevationScale,\n      edgeDistance,\n      radiusUnits: _deck_gl_core__WEBPACK_IMPORTED_MODULE_12__.UNIT[radiusUnits],\n      widthUnits: _deck_gl_core__WEBPACK_IMPORTED_MODULE_12__.UNIT[lineWidthUnits],\n      widthScale: lineWidthScale,\n      widthMinPixels: lineWidthMinPixels,\n      widthMaxPixels: lineWidthMaxPixels\n    });\n\n    if (extruded && wireframe) {\n      model.setProps({\n        isIndexed: true\n      });\n      model.setVertexCount(wireframeVertexCount).setDrawMode(1).setUniforms({\n        isStroke: true\n      }).draw();\n    }\n\n    if (filled) {\n      model.setProps({\n        isIndexed: false\n      });\n      model.setVertexCount(fillVertexCount).setDrawMode(5).setUniforms({\n        isStroke: false\n      }).draw();\n    }\n\n    if (!extruded && stroked) {\n      model.setProps({\n        isIndexed: false\n      });\n      model.setVertexCount(fillVertexCount * 2 / 3).setDrawMode(5).setUniforms({\n        isStroke: true\n      }).draw();\n    }\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ColumnLayer, \"layerName\", 'ColumnLayer');\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ColumnLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=column-layer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/column-layer/grid-cell-layer.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/column-layer/grid-cell-layer.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ GridCellLayer; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/geometries/cube-geometry.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _column_layer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./column-layer */ \"./node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer.js\");\n\n\n\n\nconst defaultProps = {\n  cellSize: {\n    type: 'number',\n    min: 0,\n    value: 1000\n  },\n  offset: {\n    type: 'array',\n    value: [1, 1]\n  }\n};\nclass GridCellLayer extends _column_layer__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  getGeometry(diskResolution) {\n    return new _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"]();\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      elevationScale,\n      extruded,\n      offset,\n      coverage,\n      cellSize,\n      angle,\n      radiusUnits\n    } = this.props;\n    this.state.model.setUniforms(uniforms).setUniforms({\n      radius: cellSize / 2,\n      radiusUnits: _deck_gl_core__WEBPACK_IMPORTED_MODULE_3__.UNIT[radiusUnits],\n      angle,\n      offset,\n      extruded,\n      coverage,\n      elevationScale,\n      edgeDistance: 1,\n      isWireframe: false\n    }).draw();\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(GridCellLayer, \"layerName\", 'GridCellLayer');\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(GridCellLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=grid-cell-layer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/column-layer/grid-cell-layer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-binary.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-binary.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"binaryToFeatureForAccesor\": function() { return /* binding */ binaryToFeatureForAccesor; },\n/* harmony export */   \"calculatePickingColors\": function() { return /* binding */ calculatePickingColors; }\n/* harmony export */ });\nfunction binaryToFeatureForAccesor(data, index) {\n  if (!data) {\n    return null;\n  }\n\n  const featureIndex = 'startIndices' in data ? data.startIndices[index] : index;\n  const geometryIndex = data.featureIds.value[featureIndex];\n\n  if (featureIndex !== -1) {\n    return getPropertiesForIndex(data, geometryIndex, featureIndex);\n  }\n\n  return null;\n}\n\nfunction getPropertiesForIndex(data, propertiesIndex, numericPropsIndex) {\n  const feature = {\n    properties: { ...data.properties[propertiesIndex]\n    }\n  };\n\n  for (const prop in data.numericProps) {\n    feature.properties[prop] = data.numericProps[prop].value[numericPropsIndex];\n  }\n\n  return feature;\n}\n\nfunction calculatePickingColors(geojsonBinary, encodePickingColor) {\n  const pickingColors = {\n    points: null,\n    lines: null,\n    polygons: null\n  };\n\n  for (const key in pickingColors) {\n    const featureIds = geojsonBinary[key].globalFeatureIds.value;\n    pickingColors[key] = new Uint8ClampedArray(featureIds.length * 3);\n    const pickingColor = [];\n\n    for (let i = 0; i < featureIds.length; i++) {\n      encodePickingColor(featureIds[i], pickingColor);\n      pickingColors[key][i * 3 + 0] = pickingColor[0];\n      pickingColors[key][i * 3 + 1] = pickingColor[1];\n      pickingColors[key][i * 3 + 2] = pickingColor[2];\n    }\n  }\n\n  return pickingColors;\n}\n//# sourceMappingURL=geojson-binary.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-binary.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-layer-props.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-layer-props.js ***!
  \************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createLayerPropsFromBinary\": function() { return /* binding */ createLayerPropsFromBinary; },\n/* harmony export */   \"createLayerPropsFromFeatures\": function() { return /* binding */ createLayerPropsFromFeatures; }\n/* harmony export */ });\n/* harmony import */ var _geojson_binary__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./geojson-binary */ \"./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-binary.js\");\n\n\nfunction createEmptyLayerProps() {\n  return {\n    points: {},\n    lines: {},\n    polygons: {},\n    polygonsOutline: {}\n  };\n}\n\nfunction getCoordinates(f) {\n  return f.geometry.coordinates;\n}\n\nfunction createLayerPropsFromFeatures(features, featuresDiff) {\n  const layerProps = createEmptyLayerProps();\n  const {\n    pointFeatures,\n    lineFeatures,\n    polygonFeatures,\n    polygonOutlineFeatures\n  } = features;\n  layerProps.points.data = pointFeatures;\n\n  layerProps.points._dataDiff = featuresDiff.pointFeatures && (() => featuresDiff.pointFeatures);\n\n  layerProps.points.getPosition = getCoordinates;\n  layerProps.lines.data = lineFeatures;\n\n  layerProps.lines._dataDiff = featuresDiff.lineFeatures && (() => featuresDiff.lineFeatures);\n\n  layerProps.lines.getPath = getCoordinates;\n  layerProps.polygons.data = polygonFeatures;\n\n  layerProps.polygons._dataDiff = featuresDiff.polygonFeatures && (() => featuresDiff.polygonFeatures);\n\n  layerProps.polygons.getPolygon = getCoordinates;\n  layerProps.polygonsOutline.data = polygonOutlineFeatures;\n\n  layerProps.polygonsOutline._dataDiff = featuresDiff.polygonOutlineFeatures && (() => featuresDiff.polygonOutlineFeatures);\n\n  layerProps.polygonsOutline.getPath = getCoordinates;\n  return layerProps;\n}\nfunction createLayerPropsFromBinary(geojsonBinary, encodePickingColor) {\n  const layerProps = createEmptyLayerProps();\n  const {\n    points,\n    lines,\n    polygons\n  } = geojsonBinary;\n  const customPickingColors = (0,_geojson_binary__WEBPACK_IMPORTED_MODULE_0__.calculatePickingColors)(geojsonBinary, encodePickingColor);\n  layerProps.points.data = {\n    length: points.positions.value.length / points.positions.size,\n    attributes: { ...points.attributes,\n      getPosition: points.positions,\n      instancePickingColors: {\n        size: 3,\n        value: customPickingColors.points\n      }\n    },\n    properties: points.properties,\n    numericProps: points.numericProps,\n    featureIds: points.featureIds\n  };\n  layerProps.lines.data = {\n    length: lines.pathIndices.value.length - 1,\n    startIndices: lines.pathIndices.value,\n    attributes: { ...lines.attributes,\n      getPath: lines.positions,\n      instancePickingColors: {\n        size: 3,\n        value: customPickingColors.lines\n      }\n    },\n    properties: lines.properties,\n    numericProps: lines.numericProps,\n    featureIds: lines.featureIds\n  };\n  layerProps.lines._pathType = 'open';\n  layerProps.polygons.data = {\n    length: polygons.polygonIndices.value.length - 1,\n    startIndices: polygons.polygonIndices.value,\n    attributes: { ...polygons.attributes,\n      getPolygon: polygons.positions,\n      pickingColors: {\n        size: 3,\n        value: customPickingColors.polygons\n      }\n    },\n    properties: polygons.properties,\n    numericProps: polygons.numericProps,\n    featureIds: polygons.featureIds\n  };\n  layerProps.polygons._normalize = false;\n\n  if (polygons.triangles) {\n    layerProps.polygons.data.attributes.indices = polygons.triangles.value;\n  }\n\n  layerProps.polygonsOutline.data = {\n    length: polygons.primitivePolygonIndices.value.length - 1,\n    startIndices: polygons.primitivePolygonIndices.value,\n    attributes: { ...polygons.attributes,\n      getPath: polygons.positions,\n      instancePickingColors: {\n        size: 3,\n        value: customPickingColors.polygons\n      }\n    },\n    properties: polygons.properties,\n    numericProps: polygons.numericProps,\n    featureIds: polygons.featureIds\n  };\n  layerProps.polygonsOutline._pathType = 'open';\n  return layerProps;\n}\n//# sourceMappingURL=geojson-layer-props.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-layer-props.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-layer.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-layer.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ GeoJsonLayer; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/composite-layer.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ \"./node_modules/@deck.gl/layers/dist/esm/utils.js\");\n/* harmony import */ var _geojson_binary__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./geojson-binary */ \"./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-binary.js\");\n/* harmony import */ var _sub_layer_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sub-layer-map */ \"./node_modules/@deck.gl/layers/dist/esm/geojson-layer/sub-layer-map.js\");\n/* harmony import */ var _geojson__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./geojson */ \"./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson.js\");\n/* harmony import */ var _geojson_layer_props__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./geojson-layer-props */ \"./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-layer-props.js\");\n\n\n\n\n\n\n\nconst FEATURE_TYPES = ['points', 'linestrings', 'polygons'];\nconst defaultProps = { ...(0,_sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.getDefaultProps)(_sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.POINT_LAYER.circle),\n  ...(0,_sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.getDefaultProps)(_sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.POINT_LAYER.icon),\n  ...(0,_sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.getDefaultProps)(_sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.POINT_LAYER.text),\n  ...(0,_sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.getDefaultProps)(_sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.LINE_LAYER),\n  ...(0,_sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.getDefaultProps)(_sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.POLYGON_LAYER),\n  stroked: true,\n  filled: true,\n  extruded: false,\n  wireframe: false,\n  iconAtlas: {\n    type: 'object',\n    value: null\n  },\n  iconMapping: {\n    type: 'object',\n    value: {}\n  },\n  getIcon: {\n    type: 'accessor',\n    value: f => f.properties.icon\n  },\n  getText: {\n    type: 'accessor',\n    value: f => f.properties.text\n  },\n  pointType: 'circle',\n  getRadius: {\n    deprecatedFor: 'getPointRadius'\n  }\n};\nclass GeoJsonLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"] {\n  initializeState() {\n    this.state = {\n      layerProps: {},\n      features: {}\n    };\n  }\n\n  updateState({\n    props,\n    changeFlags\n  }) {\n    if (!changeFlags.dataChanged) {\n      return;\n    }\n\n    const {\n      data\n    } = this.props;\n    const binary = data && 'points' in data && 'polygons' in data && 'lines' in data;\n    this.setState({\n      binary\n    });\n\n    if (binary) {\n      this._updateStateBinary({\n        props,\n        changeFlags\n      });\n    } else {\n      this._updateStateJSON({\n        props,\n        changeFlags\n      });\n    }\n  }\n\n  _updateStateBinary({\n    props,\n    changeFlags\n  }) {\n    const layerProps = (0,_geojson_layer_props__WEBPACK_IMPORTED_MODULE_3__.createLayerPropsFromBinary)(props.data, this.encodePickingColor);\n    this.setState({\n      layerProps\n    });\n  }\n\n  _updateStateJSON({\n    props,\n    changeFlags\n  }) {\n    const features = (0,_geojson__WEBPACK_IMPORTED_MODULE_4__.getGeojsonFeatures)(props.data);\n    const wrapFeature = this.getSubLayerRow.bind(this);\n    let newFeatures = {};\n    const featuresDiff = {};\n\n    if (Array.isArray(changeFlags.dataChanged)) {\n      const oldFeatures = this.state.features;\n\n      for (const key in oldFeatures) {\n        newFeatures[key] = oldFeatures[key].slice();\n        featuresDiff[key] = [];\n      }\n\n      for (const dataRange of changeFlags.dataChanged) {\n        const partialFeatures = (0,_geojson__WEBPACK_IMPORTED_MODULE_4__.separateGeojsonFeatures)(features, wrapFeature, dataRange);\n\n        for (const key in oldFeatures) {\n          featuresDiff[key].push((0,_utils__WEBPACK_IMPORTED_MODULE_5__.replaceInRange)({\n            data: newFeatures[key],\n            getIndex: f => f.__source.index,\n            dataRange,\n            replace: partialFeatures[key]\n          }));\n        }\n      }\n    } else {\n      newFeatures = (0,_geojson__WEBPACK_IMPORTED_MODULE_4__.separateGeojsonFeatures)(features, wrapFeature);\n    }\n\n    const layerProps = (0,_geojson_layer_props__WEBPACK_IMPORTED_MODULE_3__.createLayerPropsFromFeatures)(newFeatures, featuresDiff);\n    this.setState({\n      features: newFeatures,\n      featuresDiff,\n      layerProps\n    });\n  }\n\n  getPickingInfo(params) {\n    const info = super.getPickingInfo(params);\n    const {\n      index,\n      sourceLayer\n    } = info;\n    info.featureType = FEATURE_TYPES.find(ft => sourceLayer.id.startsWith(\"\".concat(this.id, \"-\").concat(ft, \"-\")));\n\n    if (index >= 0 && sourceLayer.id.startsWith(\"\".concat(this.id, \"-points-text\")) && this.state.binary) {\n      info.index = this.props.data.points.globalFeatureIds.value[index];\n    }\n\n    return info;\n  }\n\n  _updateAutoHighlight(info) {\n    const pointLayerIdPrefix = \"\".concat(this.id, \"-points-\");\n    const sourceIsPoints = info.featureType === 'points';\n\n    for (const layer of this.getSubLayers()) {\n      if (layer.id.startsWith(pointLayerIdPrefix) === sourceIsPoints) {\n        layer.updateAutoHighlight(info);\n      }\n    }\n  }\n\n  _renderPolygonLayer() {\n    const {\n      extruded,\n      wireframe\n    } = this.props;\n    const {\n      layerProps\n    } = this.state;\n    const id = 'polygons-fill';\n    const PolygonFillLayer = this.shouldRenderSubLayer(id, layerProps.polygons.data) && this.getSubLayerClass(id, _sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.POLYGON_LAYER.type);\n\n    if (PolygonFillLayer) {\n      const forwardedProps = (0,_sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.forwardProps)(this, _sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.POLYGON_LAYER.props);\n      const useLineColor = extruded && wireframe;\n\n      if (!useLineColor) {\n        delete forwardedProps.getLineColor;\n      }\n\n      forwardedProps.updateTriggers.lineColors = useLineColor;\n      return new PolygonFillLayer(forwardedProps, this.getSubLayerProps({\n        id,\n        updateTriggers: forwardedProps.updateTriggers\n      }), layerProps.polygons);\n    }\n\n    return null;\n  }\n\n  _renderLineLayers() {\n    const {\n      extruded,\n      stroked\n    } = this.props;\n    const {\n      layerProps\n    } = this.state;\n    const polygonStrokeLayerId = 'polygons-stroke';\n    const lineStringsLayerId = 'linestrings';\n    const PolygonStrokeLayer = !extruded && stroked && this.shouldRenderSubLayer(polygonStrokeLayerId, layerProps.polygonsOutline.data) && this.getSubLayerClass(polygonStrokeLayerId, _sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.LINE_LAYER.type);\n    const LineStringsLayer = this.shouldRenderSubLayer(lineStringsLayerId, layerProps.lines.data) && this.getSubLayerClass(lineStringsLayerId, _sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.LINE_LAYER.type);\n\n    if (PolygonStrokeLayer || LineStringsLayer) {\n      const forwardedProps = (0,_sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.forwardProps)(this, _sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.LINE_LAYER.props);\n      return [PolygonStrokeLayer && new PolygonStrokeLayer(forwardedProps, this.getSubLayerProps({\n        id: polygonStrokeLayerId,\n        updateTriggers: forwardedProps.updateTriggers\n      }), layerProps.polygonsOutline), LineStringsLayer && new LineStringsLayer(forwardedProps, this.getSubLayerProps({\n        id: lineStringsLayerId,\n        updateTriggers: forwardedProps.updateTriggers\n      }), layerProps.lines)];\n    }\n\n    return null;\n  }\n\n  _renderPointLayers() {\n    const {\n      pointType\n    } = this.props;\n    const {\n      layerProps,\n      binary\n    } = this.state;\n    let {\n      highlightedObjectIndex\n    } = this.props;\n\n    if (!binary && Number.isFinite(highlightedObjectIndex)) {\n      highlightedObjectIndex = layerProps.points.data.findIndex(d => d.__source.index === highlightedObjectIndex);\n    }\n\n    const types = new Set(pointType.split('+'));\n    const pointLayers = [];\n\n    for (const type of types) {\n      const id = \"points-\".concat(type);\n      const PointLayerMapping = _sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.POINT_LAYER[type];\n      const PointsLayer = PointLayerMapping && this.shouldRenderSubLayer(id, layerProps.points.data) && this.getSubLayerClass(id, PointLayerMapping.type);\n\n      if (PointsLayer) {\n        const forwardedProps = (0,_sub_layer_map__WEBPACK_IMPORTED_MODULE_1__.forwardProps)(this, PointLayerMapping.props);\n        let pointsLayerProps = layerProps.points;\n\n        if (type === 'text' && binary) {\n          const {\n            instancePickingColors,\n            ...rest\n          } = pointsLayerProps.data.attributes;\n          pointsLayerProps = { ...pointsLayerProps,\n            data: { ...pointsLayerProps.data,\n              attributes: rest\n            }\n          };\n        }\n\n        pointLayers.push(new PointsLayer(forwardedProps, this.getSubLayerProps({\n          id,\n          updateTriggers: forwardedProps.updateTriggers,\n          highlightedObjectIndex\n        }), pointsLayerProps));\n      }\n    }\n\n    return pointLayers;\n  }\n\n  renderLayers() {\n    const {\n      extruded\n    } = this.props;\n\n    const polygonFillLayer = this._renderPolygonLayer();\n\n    const lineLayers = this._renderLineLayers();\n\n    const pointLayers = this._renderPointLayers();\n\n    return [!extruded && polygonFillLayer, lineLayers, pointLayers, extruded && polygonFillLayer];\n  }\n\n  getSubLayerAccessor(accessor) {\n    const {\n      binary\n    } = this.state;\n\n    if (!binary || typeof accessor !== 'function') {\n      return super.getSubLayerAccessor(accessor);\n    }\n\n    return (object, info) => {\n      const {\n        data,\n        index\n      } = info;\n      const feature = (0,_geojson_binary__WEBPACK_IMPORTED_MODULE_6__.binaryToFeatureForAccesor)(data, index);\n      return accessor(feature, info);\n    };\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(GeoJsonLayer, \"layerName\", 'GeoJsonLayer');\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(GeoJsonLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=geojson-layer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-layer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson.js":
/*!************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getGeojsonFeatures\": function() { return /* binding */ getGeojsonFeatures; },\n/* harmony export */   \"separateGeojsonFeatures\": function() { return /* binding */ separateGeojsonFeatures; },\n/* harmony export */   \"validateGeometry\": function() { return /* binding */ validateGeometry; }\n/* harmony export */ });\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n\nfunction getGeojsonFeatures(geojson) {\n  if (Array.isArray(geojson)) {\n    return geojson;\n  }\n\n  _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"default\"].assert(geojson.type, 'GeoJSON does not have type');\n\n  switch (geojson.type) {\n    case 'Feature':\n      return [geojson];\n\n    case 'FeatureCollection':\n      _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"default\"].assert(Array.isArray(geojson.features), 'GeoJSON does not have features array');\n      return geojson.features;\n\n    default:\n      return [{\n        geometry: geojson\n      }];\n  }\n}\nfunction separateGeojsonFeatures(features, wrapFeature, dataRange = {}) {\n  const separated = {\n    pointFeatures: [],\n    lineFeatures: [],\n    polygonFeatures: [],\n    polygonOutlineFeatures: []\n  };\n  const {\n    startRow = 0,\n    endRow = features.length\n  } = dataRange;\n\n  for (let featureIndex = startRow; featureIndex < endRow; featureIndex++) {\n    const feature = features[featureIndex];\n    const {\n      geometry\n    } = feature;\n\n    if (!geometry) {\n      continue;\n    }\n\n    if (geometry.type === 'GeometryCollection') {\n      _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"default\"].assert(Array.isArray(geometry.geometries), 'GeoJSON does not have geometries array');\n      const {\n        geometries\n      } = geometry;\n\n      for (let i = 0; i < geometries.length; i++) {\n        const subGeometry = geometries[i];\n        separateGeometry(subGeometry, separated, wrapFeature, feature, featureIndex);\n      }\n    } else {\n      separateGeometry(geometry, separated, wrapFeature, feature, featureIndex);\n    }\n  }\n\n  return separated;\n}\n\nfunction separateGeometry(geometry, separated, wrapFeature, sourceFeature, sourceFeatureIndex) {\n  const {\n    type,\n    coordinates\n  } = geometry;\n  const {\n    pointFeatures,\n    lineFeatures,\n    polygonFeatures,\n    polygonOutlineFeatures\n  } = separated;\n\n  if (!validateGeometry(type, coordinates)) {\n    _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"default\"].warn(\"\".concat(type, \" coordinates are malformed\"))();\n    return;\n  }\n\n  switch (type) {\n    case 'Point':\n      pointFeatures.push(wrapFeature({\n        geometry\n      }, sourceFeature, sourceFeatureIndex));\n      break;\n\n    case 'MultiPoint':\n      coordinates.forEach(point => {\n        pointFeatures.push(wrapFeature({\n          geometry: {\n            type: 'Point',\n            coordinates: point\n          }\n        }, sourceFeature, sourceFeatureIndex));\n      });\n      break;\n\n    case 'LineString':\n      lineFeatures.push(wrapFeature({\n        geometry\n      }, sourceFeature, sourceFeatureIndex));\n      break;\n\n    case 'MultiLineString':\n      coordinates.forEach(path => {\n        lineFeatures.push(wrapFeature({\n          geometry: {\n            type: 'LineString',\n            coordinates: path\n          }\n        }, sourceFeature, sourceFeatureIndex));\n      });\n      break;\n\n    case 'Polygon':\n      polygonFeatures.push(wrapFeature({\n        geometry\n      }, sourceFeature, sourceFeatureIndex));\n      coordinates.forEach(path => {\n        polygonOutlineFeatures.push(wrapFeature({\n          geometry: {\n            type: 'LineString',\n            coordinates: path\n          }\n        }, sourceFeature, sourceFeatureIndex));\n      });\n      break;\n\n    case 'MultiPolygon':\n      coordinates.forEach(polygon => {\n        polygonFeatures.push(wrapFeature({\n          geometry: {\n            type: 'Polygon',\n            coordinates: polygon\n          }\n        }, sourceFeature, sourceFeatureIndex));\n        polygon.forEach(path => {\n          polygonOutlineFeatures.push(wrapFeature({\n            geometry: {\n              type: 'LineString',\n              coordinates: path\n            }\n          }, sourceFeature, sourceFeatureIndex));\n        });\n      });\n      break;\n\n    default:\n  }\n}\n\nconst COORDINATE_NEST_LEVEL = {\n  Point: 1,\n  MultiPoint: 2,\n  LineString: 2,\n  MultiLineString: 3,\n  Polygon: 3,\n  MultiPolygon: 4\n};\nfunction validateGeometry(type, coordinates) {\n  let nestLevel = COORDINATE_NEST_LEVEL[type];\n  _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"default\"].assert(nestLevel, \"Unknown GeoJSON type \".concat(type));\n\n  while (coordinates && --nestLevel > 0) {\n    coordinates = coordinates[0];\n  }\n\n  return coordinates && Number.isFinite(coordinates[0]);\n}\n//# sourceMappingURL=geojson.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/geojson-layer/sub-layer-map.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/geojson-layer/sub-layer-map.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"LINE_LAYER\": function() { return /* binding */ LINE_LAYER; },\n/* harmony export */   \"POINT_LAYER\": function() { return /* binding */ POINT_LAYER; },\n/* harmony export */   \"POLYGON_LAYER\": function() { return /* binding */ POLYGON_LAYER; },\n/* harmony export */   \"forwardProps\": function() { return /* binding */ forwardProps; },\n/* harmony export */   \"getDefaultProps\": function() { return /* binding */ getDefaultProps; }\n/* harmony export */ });\n/* harmony import */ var _icon_layer_icon_layer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../icon-layer/icon-layer */ \"./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer.js\");\n/* harmony import */ var _scatterplot_layer_scatterplot_layer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scatterplot-layer/scatterplot-layer */ \"./node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer.js\");\n/* harmony import */ var _text_layer_text_layer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../text-layer/text-layer */ \"./node_modules/@deck.gl/layers/dist/esm/text-layer/text-layer.js\");\n/* harmony import */ var _path_layer_path_layer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../path-layer/path-layer */ \"./node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer.js\");\n/* harmony import */ var _solid_polygon_layer_solid_polygon_layer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../solid-polygon-layer/solid-polygon-layer */ \"./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer.js\");\n\n\n\n\n\nconst POINT_LAYER = {\n  circle: {\n    type: _scatterplot_layer_scatterplot_layer__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    props: {\n      filled: 'filled',\n      stroked: 'stroked',\n      lineWidthMaxPixels: 'lineWidthMaxPixels',\n      lineWidthMinPixels: 'lineWidthMinPixels',\n      lineWidthScale: 'lineWidthScale',\n      lineWidthUnits: 'lineWidthUnits',\n      pointRadiusMaxPixels: 'radiusMaxPixels',\n      pointRadiusMinPixels: 'radiusMinPixels',\n      pointRadiusScale: 'radiusScale',\n      pointRadiusUnits: 'radiusUnits',\n      pointAntialiasing: 'antialiasing',\n      pointBillboard: 'billboard',\n      getFillColor: 'getFillColor',\n      getLineColor: 'getLineColor',\n      getLineWidth: 'getLineWidth',\n      getPointRadius: 'getRadius'\n    }\n  },\n  icon: {\n    type: _icon_layer_icon_layer__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n    props: {\n      iconAtlas: 'iconAtlas',\n      iconMapping: 'iconMapping',\n      iconSizeMaxPixels: 'sizeMaxPixels',\n      iconSizeMinPixels: 'sizeMinPixels',\n      iconSizeScale: 'sizeScale',\n      iconSizeUnits: 'sizeUnits',\n      iconAlphaCutoff: 'alphaCutoff',\n      iconBillboard: 'billboard',\n      getIcon: 'getIcon',\n      getIconAngle: 'getAngle',\n      getIconColor: 'getColor',\n      getIconPixelOffset: 'getPixelOffset',\n      getIconSize: 'getSize'\n    }\n  },\n  text: {\n    type: _text_layer_text_layer__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n    props: {\n      textSizeMaxPixels: 'sizeMaxPixels',\n      textSizeMinPixels: 'sizeMinPixels',\n      textSizeScale: 'sizeScale',\n      textSizeUnits: 'sizeUnits',\n      textBackground: 'background',\n      textBackgroundPadding: 'backgroundPadding',\n      textFontFamily: 'fontFamily',\n      textFontWeight: 'fontWeight',\n      textLineHeight: 'lineHeight',\n      textMaxWidth: 'maxWidth',\n      textOutlineColor: 'outlineColor',\n      textOutlineWidth: 'outlineWidth',\n      textWordBreak: 'wordBreak',\n      textCharacterSet: 'characterSet',\n      textBillboard: 'billboard',\n      textFontSettings: 'fontSettings',\n      getText: 'getText',\n      getTextAngle: 'getAngle',\n      getTextColor: 'getColor',\n      getTextPixelOffset: 'getPixelOffset',\n      getTextSize: 'getSize',\n      getTextAnchor: 'getTextAnchor',\n      getTextAlignmentBaseline: 'getAlignmentBaseline',\n      getTextBackgroundColor: 'getBackgroundColor',\n      getTextBorderColor: 'getBorderColor',\n      getTextBorderWidth: 'getBorderWidth'\n    }\n  }\n};\nconst LINE_LAYER = {\n  type: _path_layer_path_layer__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n  props: {\n    lineWidthUnits: 'widthUnits',\n    lineWidthScale: 'widthScale',\n    lineWidthMinPixels: 'widthMinPixels',\n    lineWidthMaxPixels: 'widthMaxPixels',\n    lineJointRounded: 'jointRounded',\n    lineCapRounded: 'capRounded',\n    lineMiterLimit: 'miterLimit',\n    lineBillboard: 'billboard',\n    getLineColor: 'getColor',\n    getLineWidth: 'getWidth'\n  }\n};\nconst POLYGON_LAYER = {\n  type: _solid_polygon_layer_solid_polygon_layer__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n  props: {\n    extruded: 'extruded',\n    filled: 'filled',\n    wireframe: 'wireframe',\n    elevationScale: 'elevationScale',\n    material: 'material',\n    getElevation: 'getElevation',\n    getFillColor: 'getFillColor',\n    getLineColor: 'getLineColor'\n  }\n};\nfunction getDefaultProps({\n  type,\n  props\n}) {\n  const result = {};\n\n  for (const key in props) {\n    result[key] = type.defaultProps[props[key]];\n  }\n\n  return result;\n}\nfunction forwardProps(layer, mapping) {\n  const {\n    transitions,\n    updateTriggers\n  } = layer.props;\n  const result = {\n    updateTriggers: {},\n    transitions: transitions && {\n      getPosition: transitions.geometry\n    }\n  };\n\n  for (const sourceKey in mapping) {\n    const targetKey = mapping[sourceKey];\n    let value = layer.props[sourceKey];\n\n    if (sourceKey.startsWith('get')) {\n      value = layer.getSubLayerAccessor(value);\n      result.updateTriggers[targetKey] = updateTriggers[sourceKey];\n\n      if (transitions) {\n        result.transitions[targetKey] = transitions[sourceKey];\n      }\n    }\n\n    result[targetKey] = value;\n  }\n\n  return result;\n}\n//# sourceMappingURL=sub-layer-map.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/geojson-layer/sub-layer-map.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer-fragment.glsl.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer-fragment.glsl.js ***!
  \**************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME icon-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform float opacity;\\nuniform sampler2D iconsTexture;\\nuniform float alphaCutoff;\\n\\nvarying float vColorMode;\\nvarying vec4 vColor;\\nvarying vec2 vTextureCoords;\\nvarying vec2 uv;\\n\\nvoid main(void) {\\n  geometry.uv = uv;\\n\\n  vec4 texColor = texture2D(iconsTexture, vTextureCoords);\\n\\n  // if colorMode == 0, use pixel color from the texture\\n  // if colorMode == 1 or rendering picking buffer, use texture as transparency mask\\n  vec3 color = mix(texColor.rgb, vColor.rgb, vColorMode);\\n  // Take the global opacity and the alpha from vColor into account for the alpha component\\n  float a = texColor.a * opacity * vColor.a;\\n\\n  if (a < alphaCutoff) {\\n    discard;\\n  }\\n\\n  gl_FragColor = vec4(color, a);\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\");\n//# sourceMappingURL=icon-layer-fragment.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer-fragment.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer-vertex.glsl.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer-vertex.glsl.js ***!
  \************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME icon-layer-vertex-shader\\n\\nattribute vec2 positions;\\n\\nattribute vec3 instancePositions;\\nattribute vec3 instancePositions64Low;\\nattribute float instanceSizes;\\nattribute float instanceAngles;\\nattribute vec4 instanceColors;\\nattribute vec3 instancePickingColors;\\nattribute vec4 instanceIconFrames;\\nattribute float instanceColorModes;\\nattribute vec2 instanceOffsets;\\nattribute vec2 instancePixelOffset;\\n\\nuniform float sizeScale;\\nuniform vec2 iconsTextureDim;\\nuniform float sizeMinPixels;\\nuniform float sizeMaxPixels;\\nuniform bool billboard;\\nuniform int sizeUnits;\\n\\nvarying float vColorMode;\\nvarying vec4 vColor;\\nvarying vec2 vTextureCoords;\\nvarying vec2 uv;\\n\\nvec2 rotate_by_angle(vec2 vertex, float angle) {\\n  float angle_radian = angle * PI / 180.0;\\n  float cos_angle = cos(angle_radian);\\n  float sin_angle = sin(angle_radian);\\n  mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\\n  return rotationMatrix * vertex;\\n}\\n\\nvoid main(void) {\\n  geometry.worldPosition = instancePositions;\\n  geometry.uv = positions;\\n  geometry.pickingColor = instancePickingColors;\\n  uv = positions;\\n\\n  vec2 iconSize = instanceIconFrames.zw;\\n  // convert size in meters to pixels, then scaled and clamp\\n \\n  // project meters to pixels and clamp to limits \\n  float sizePixels = clamp(\\n    project_size_to_pixel(instanceSizes * sizeScale, sizeUnits), \\n    sizeMinPixels, sizeMaxPixels\\n  );\\n\\n  // scale icon height to match instanceSize\\n  float instanceScale = iconSize.y == 0.0 ? 0.0 : sizePixels / iconSize.y;\\n\\n  // scale and rotate vertex in \\\"pixel\\\" value and convert back to fraction in clipspace\\n  vec2 pixelOffset = positions / 2.0 * iconSize + instanceOffsets;\\n  pixelOffset = rotate_by_angle(pixelOffset, instanceAngles) * instanceScale;\\n  pixelOffset += instancePixelOffset;\\n  pixelOffset.y *= -1.0;\\n\\n  if (billboard)  {\\n    gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\\n    vec3 offset = vec3(pixelOffset, 0.0);\\n    DECKGL_FILTER_SIZE(offset, geometry);\\n    gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\\n\\n  } else {\\n    vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\\n    DECKGL_FILTER_SIZE(offset_common, geometry);\\n    gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position); \\n  }\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n  vTextureCoords = mix(\\n    instanceIconFrames.xy,\\n    instanceIconFrames.xy + iconSize,\\n    (positions.xy + 1.0) / 2.0\\n  ) / iconsTextureDim;\\n\\n  vColor = instanceColors;\\n  DECKGL_FILTER_COLOR(vColor, geometry);\\n\\n  vColorMode = instanceColorModes;\\n}\\n\");\n//# sourceMappingURL=icon-layer-vertex.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer-vertex.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer.js":
/*!************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ IconLayer; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/layer.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project32/project32.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/picking/picking.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/lib/model.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js\");\n/* harmony import */ var _icon_layer_vertex_glsl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./icon-layer-vertex.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer-vertex.glsl.js\");\n/* harmony import */ var _icon_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./icon-layer-fragment.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer-fragment.glsl.js\");\n/* harmony import */ var _icon_manager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./icon-manager */ \"./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-manager.js\");\n\n\n\n\n\n\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n  iconAtlas: {\n    type: 'image',\n    value: null,\n    async: true\n  },\n  iconMapping: {\n    type: 'object',\n    value: {},\n    async: true\n  },\n  sizeScale: {\n    type: 'number',\n    value: 1,\n    min: 0\n  },\n  billboard: true,\n  sizeUnits: 'pixels',\n  sizeMinPixels: {\n    type: 'number',\n    min: 0,\n    value: 0\n  },\n  sizeMaxPixels: {\n    type: 'number',\n    min: 0,\n    value: Number.MAX_SAFE_INTEGER\n  },\n  alphaCutoff: {\n    type: 'number',\n    value: 0.05,\n    min: 0,\n    max: 1\n  },\n  getPosition: {\n    type: 'accessor',\n    value: x => x.position\n  },\n  getIcon: {\n    type: 'accessor',\n    value: x => x.icon\n  },\n  getColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getSize: {\n    type: 'accessor',\n    value: 1\n  },\n  getAngle: {\n    type: 'accessor',\n    value: 0\n  },\n  getPixelOffset: {\n    type: 'accessor',\n    value: [0, 0]\n  },\n  onIconError: {\n    type: 'function',\n    value: null,\n    compare: false,\n    optional: true\n  }\n};\nclass IconLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(...args) {\n    super(...args);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"state\", void 0);\n  }\n\n  getShaders() {\n    return super.getShaders({\n      vs: _icon_layer_vertex_glsl__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n      fs: _icon_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      modules: [_deck_gl_core__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _deck_gl_core__WEBPACK_IMPORTED_MODULE_5__[\"default\"]]\n    });\n  }\n\n  initializeState() {\n    this.state = {\n      iconManager: new _icon_manager__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.context.gl, {\n        onUpdate: this._onUpdate.bind(this),\n        onError: this._onError.bind(this)\n      })\n    };\n    const attributeManager = this.getAttributeManager();\n    attributeManager.addInstanced({\n      instancePositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getPosition'\n      },\n      instanceSizes: {\n        size: 1,\n        transition: true,\n        accessor: 'getSize',\n        defaultValue: 1\n      },\n      instanceOffsets: {\n        size: 2,\n        accessor: 'getIcon',\n        transform: this.getInstanceOffset\n      },\n      instanceIconFrames: {\n        size: 4,\n        accessor: 'getIcon',\n        transform: this.getInstanceIconFrame\n      },\n      instanceColorModes: {\n        size: 1,\n        type: 5121,\n        accessor: 'getIcon',\n        transform: this.getInstanceColorMode\n      },\n      instanceColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: true,\n        accessor: 'getColor',\n        defaultValue: DEFAULT_COLOR\n      },\n      instanceAngles: {\n        size: 1,\n        transition: true,\n        accessor: 'getAngle'\n      },\n      instancePixelOffset: {\n        size: 2,\n        transition: true,\n        accessor: 'getPixelOffset'\n      }\n    });\n  }\n\n  updateState(params) {\n    super.updateState(params);\n    const {\n      props,\n      oldProps,\n      changeFlags\n    } = params;\n    const attributeManager = this.getAttributeManager();\n    const {\n      iconAtlas,\n      iconMapping,\n      data,\n      getIcon,\n      textureParameters\n    } = props;\n    const {\n      iconManager\n    } = this.state;\n    const prePacked = iconAtlas || this.internalState.isAsyncPropLoading('iconAtlas');\n    iconManager.setProps({\n      loadOptions: props.loadOptions,\n      autoPacking: !prePacked,\n      iconAtlas,\n      iconMapping: prePacked ? iconMapping : null,\n      textureParameters\n    });\n\n    if (prePacked) {\n      if (oldProps.iconMapping !== props.iconMapping) {\n        attributeManager.invalidate('getIcon');\n      }\n    } else if (changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getIcon)) {\n      iconManager.packIcons(data, getIcon);\n    }\n\n    if (changeFlags.extensionsChanged) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      attributeManager.invalidateAll();\n    }\n  }\n\n  get isLoaded() {\n    return super.isLoaded && this.state.iconManager.isLoaded;\n  }\n\n  finalizeState(context) {\n    super.finalizeState(context);\n    this.state.iconManager.finalize();\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      sizeScale,\n      sizeMinPixels,\n      sizeMaxPixels,\n      sizeUnits,\n      billboard,\n      alphaCutoff\n    } = this.props;\n    const {\n      iconManager\n    } = this.state;\n    const iconsTexture = iconManager.getTexture();\n\n    if (iconsTexture) {\n      this.state.model.setUniforms(uniforms).setUniforms({\n        iconsTexture,\n        iconsTextureDim: [iconsTexture.width, iconsTexture.height],\n        sizeUnits: _deck_gl_core__WEBPACK_IMPORTED_MODULE_7__.UNIT[sizeUnits],\n        sizeScale,\n        sizeMinPixels,\n        sizeMaxPixels,\n        billboard,\n        alphaCutoff\n      }).draw();\n    }\n  }\n\n  _getModel(gl) {\n    const positions = [-1, -1, -1, 1, 1, 1, 1, -1];\n    return new _luma_gl_core__WEBPACK_IMPORTED_MODULE_8__[\"default\"](gl, { ...this.getShaders(),\n      id: this.props.id,\n      geometry: new _luma_gl_core__WEBPACK_IMPORTED_MODULE_9__[\"default\"]({\n        drawMode: 6,\n        attributes: {\n          positions: {\n            size: 2,\n            value: new Float32Array(positions)\n          }\n        }\n      }),\n      isInstanced: true\n    });\n  }\n\n  _onUpdate() {\n    this.setNeedsRedraw();\n  }\n\n  _onError(evt) {\n    var _this$getCurrentLayer;\n\n    const onIconError = (_this$getCurrentLayer = this.getCurrentLayer()) === null || _this$getCurrentLayer === void 0 ? void 0 : _this$getCurrentLayer.props.onIconError;\n\n    if (onIconError) {\n      onIconError(evt);\n    } else {\n      _deck_gl_core__WEBPACK_IMPORTED_MODULE_10__[\"default\"].error(evt.error.message)();\n    }\n  }\n\n  getInstanceOffset(icon) {\n    const {\n      width,\n      height,\n      anchorX = width / 2,\n      anchorY = height / 2\n    } = this.state.iconManager.getIconMapping(icon);\n    return [width / 2 - anchorX, height / 2 - anchorY];\n  }\n\n  getInstanceColorMode(icon) {\n    const mapping = this.state.iconManager.getIconMapping(icon);\n    return mapping.mask ? 1 : 0;\n  }\n\n  getInstanceIconFrame(icon) {\n    const {\n      x,\n      y,\n      width,\n      height\n    } = this.state.iconManager.getIconMapping(icon);\n    return [x, y, width, height];\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(IconLayer, \"defaultProps\", defaultProps);\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(IconLayer, \"layerName\", 'IconLayer');\n//# sourceMappingURL=icon-layer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-manager.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-manager.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"buildMapping\": function() { return /* binding */ buildMapping; },\n/* harmony export */   \"default\": function() { return /* binding */ IconManager; },\n/* harmony export */   \"getDiffIcons\": function() { return /* binding */ getDiffIcons; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/copy-and-blit.js\");\n/* harmony import */ var _loaders_gl_images__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @loaders.gl/images */ \"./node_modules/@loaders.gl/images/dist/esm/image-loader.js\");\n/* harmony import */ var _loaders_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @loaders.gl/core */ \"./node_modules/@loaders.gl/core/dist/esm/lib/api/load.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/utils/iterable-utils.js\");\n\n\n\n\n\nconst DEFAULT_CANVAS_WIDTH = 1024;\nconst DEFAULT_BUFFER = 4;\n\nconst noop = () => {};\n\nconst DEFAULT_TEXTURE_PARAMETERS = {\n  [10241]: 9987,\n  [10240]: 9729,\n  [10242]: 33071,\n  [10243]: 33071\n};\n\nfunction nextPowOfTwo(number) {\n  return Math.pow(2, Math.ceil(Math.log2(number)));\n}\n\nfunction resizeImage(ctx, imageData, width, height) {\n  if (width === imageData.width && height === imageData.height) {\n    return imageData;\n  }\n\n  ctx.canvas.height = height;\n  ctx.canvas.width = width;\n  ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n  ctx.drawImage(imageData, 0, 0, imageData.width, imageData.height, 0, 0, width, height);\n  return ctx.canvas;\n}\n\nfunction getIconId(icon) {\n  return icon && (icon.id || icon.url);\n}\n\nfunction resizeTexture(texture, width, height, parameters) {\n  const oldWidth = texture.width;\n  const oldHeight = texture.height;\n  const newTexture = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"](texture.gl, {\n    width,\n    height,\n    parameters\n  });\n  (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_2__.copyToTexture)(texture, newTexture, {\n    targetY: 0,\n    width: oldWidth,\n    height: oldHeight\n  });\n  texture.delete();\n  return newTexture;\n}\n\nfunction buildRowMapping(mapping, columns, yOffset) {\n  for (let i = 0; i < columns.length; i++) {\n    const {\n      icon,\n      xOffset\n    } = columns[i];\n    const id = getIconId(icon);\n    mapping[id] = { ...icon,\n      x: xOffset,\n      y: yOffset\n    };\n  }\n}\n\nfunction buildMapping({\n  icons,\n  buffer,\n  mapping = {},\n  xOffset = 0,\n  yOffset = 0,\n  rowHeight = 0,\n  canvasWidth\n}) {\n  let columns = [];\n\n  for (let i = 0; i < icons.length; i++) {\n    const icon = icons[i];\n    const id = getIconId(icon);\n\n    if (!mapping[id]) {\n      const {\n        height,\n        width\n      } = icon;\n\n      if (xOffset + width + buffer > canvasWidth) {\n        buildRowMapping(mapping, columns, yOffset);\n        xOffset = 0;\n        yOffset = rowHeight + yOffset + buffer;\n        rowHeight = 0;\n        columns = [];\n      }\n\n      columns.push({\n        icon,\n        xOffset\n      });\n      xOffset = xOffset + width + buffer;\n      rowHeight = Math.max(rowHeight, height);\n    }\n  }\n\n  if (columns.length > 0) {\n    buildRowMapping(mapping, columns, yOffset);\n  }\n\n  return {\n    mapping,\n    rowHeight,\n    xOffset,\n    yOffset,\n    canvasWidth,\n    canvasHeight: nextPowOfTwo(rowHeight + yOffset + buffer)\n  };\n}\nfunction getDiffIcons(data, getIcon, cachedIcons) {\n  if (!data || !getIcon) {\n    return null;\n  }\n\n  cachedIcons = cachedIcons || {};\n  const icons = {};\n  const {\n    iterable,\n    objectInfo\n  } = (0,_deck_gl_core__WEBPACK_IMPORTED_MODULE_3__.createIterable)(data);\n\n  for (const object of iterable) {\n    objectInfo.index++;\n    const icon = getIcon(object, objectInfo);\n    const id = getIconId(icon);\n\n    if (!icon) {\n      throw new Error('Icon is missing.');\n    }\n\n    if (!icon.url) {\n      throw new Error('Icon url is missing.');\n    }\n\n    if (!icons[id] && (!cachedIcons[id] || icon.url !== cachedIcons[id].url)) {\n      icons[id] = { ...icon,\n        source: object,\n        sourceIndex: objectInfo.index\n      };\n    }\n  }\n\n  return icons;\n}\nclass IconManager {\n  constructor(gl, {\n    onUpdate = noop,\n    onError = noop\n  }) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"gl\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"onUpdate\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"onError\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_loadOptions\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_texture\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_externalTexture\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_mapping\", {});\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_textureParameters\", null);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_pendingCount\", 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_autoPacking\", false);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_xOffset\", 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_yOffset\", 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_rowHeight\", 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_buffer\", DEFAULT_BUFFER);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_canvasWidth\", DEFAULT_CANVAS_WIDTH);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_canvasHeight\", 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_canvas\", null);\n\n    this.gl = gl;\n    this.onUpdate = onUpdate;\n    this.onError = onError;\n  }\n\n  finalize() {\n    var _this$_texture;\n\n    (_this$_texture = this._texture) === null || _this$_texture === void 0 ? void 0 : _this$_texture.delete();\n  }\n\n  getTexture() {\n    return this._texture || this._externalTexture;\n  }\n\n  getIconMapping(icon) {\n    const id = this._autoPacking ? getIconId(icon) : icon;\n    return this._mapping[id] || {};\n  }\n\n  setProps({\n    loadOptions,\n    autoPacking,\n    iconAtlas,\n    iconMapping,\n    textureParameters\n  }) {\n    if (loadOptions) {\n      this._loadOptions = loadOptions;\n    }\n\n    if (autoPacking !== undefined) {\n      this._autoPacking = autoPacking;\n    }\n\n    if (iconMapping) {\n      this._mapping = iconMapping;\n    }\n\n    if (iconAtlas) {\n      var _this$_texture2;\n\n      (_this$_texture2 = this._texture) === null || _this$_texture2 === void 0 ? void 0 : _this$_texture2.delete();\n      this._texture = null;\n      this._externalTexture = iconAtlas;\n    }\n\n    if (textureParameters) {\n      this._textureParameters = textureParameters;\n    }\n  }\n\n  get isLoaded() {\n    return this._pendingCount === 0;\n  }\n\n  packIcons(data, getIcon) {\n    if (!this._autoPacking || typeof document === 'undefined') {\n      return;\n    }\n\n    const icons = Object.values(getDiffIcons(data, getIcon, this._mapping) || {});\n\n    if (icons.length > 0) {\n      const {\n        mapping,\n        xOffset,\n        yOffset,\n        rowHeight,\n        canvasHeight\n      } = buildMapping({\n        icons,\n        buffer: this._buffer,\n        canvasWidth: this._canvasWidth,\n        mapping: this._mapping,\n        rowHeight: this._rowHeight,\n        xOffset: this._xOffset,\n        yOffset: this._yOffset\n      });\n      this._rowHeight = rowHeight;\n      this._mapping = mapping;\n      this._xOffset = xOffset;\n      this._yOffset = yOffset;\n      this._canvasHeight = canvasHeight;\n\n      if (!this._texture) {\n        this._texture = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"](this.gl, {\n          width: this._canvasWidth,\n          height: this._canvasHeight,\n          parameters: this._textureParameters || DEFAULT_TEXTURE_PARAMETERS\n        });\n      }\n\n      if (this._texture.height !== this._canvasHeight) {\n        this._texture = resizeTexture(this._texture, this._canvasWidth, this._canvasHeight, this._textureParameters || DEFAULT_TEXTURE_PARAMETERS);\n      }\n\n      this.onUpdate();\n      this._canvas = this._canvas || document.createElement('canvas');\n\n      this._loadIcons(icons);\n    }\n  }\n\n  _loadIcons(icons) {\n    const ctx = this._canvas.getContext('2d');\n\n    for (const icon of icons) {\n      this._pendingCount++;\n      (0,_loaders_gl_core__WEBPACK_IMPORTED_MODULE_4__.load)(icon.url, _loaders_gl_images__WEBPACK_IMPORTED_MODULE_5__.ImageLoader, this._loadOptions).then(imageData => {\n        const id = getIconId(icon);\n        const {\n          x,\n          y,\n          width,\n          height\n        } = this._mapping[id];\n        const data = resizeImage(ctx, imageData, width, height);\n\n        this._texture.setSubImageData({\n          data,\n          x,\n          y,\n          width,\n          height\n        });\n\n        this._texture.generateMipmap();\n\n        this.onUpdate();\n      }).catch(error => {\n        this.onError({\n          url: icon.url,\n          source: icon.source,\n          sourceIndex: icon.sourceIndex,\n          loadOptions: this._loadOptions,\n          error\n        });\n      }).finally(() => {\n        this._pendingCount--;\n      });\n    }\n  }\n\n}\n//# sourceMappingURL=icon-manager.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-manager.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/index.js":
/*!********************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/index.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ArcLayer\": function() { return /* reexport safe */ _arc_layer_arc_layer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"BitmapLayer\": function() { return /* reexport safe */ _bitmap_layer_bitmap_layer__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; },\n/* harmony export */   \"ColumnLayer\": function() { return /* reexport safe */ _column_layer_column_layer__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; },\n/* harmony export */   \"GeoJsonLayer\": function() { return /* reexport safe */ _geojson_layer_geojson_layer__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; },\n/* harmony export */   \"GridCellLayer\": function() { return /* reexport safe */ _column_layer_grid_cell_layer__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; },\n/* harmony export */   \"IconLayer\": function() { return /* reexport safe */ _icon_layer_icon_layer__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; },\n/* harmony export */   \"LineLayer\": function() { return /* reexport safe */ _line_layer_line_layer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; },\n/* harmony export */   \"PathLayer\": function() { return /* reexport safe */ _path_layer_path_layer__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; },\n/* harmony export */   \"PointCloudLayer\": function() { return /* reexport safe */ _point_cloud_layer_point_cloud_layer__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; },\n/* harmony export */   \"PolygonLayer\": function() { return /* reexport safe */ _polygon_layer_polygon_layer__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; },\n/* harmony export */   \"ScatterplotLayer\": function() { return /* reexport safe */ _scatterplot_layer_scatterplot_layer__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; },\n/* harmony export */   \"SolidPolygonLayer\": function() { return /* reexport safe */ _solid_polygon_layer_solid_polygon_layer__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; },\n/* harmony export */   \"TextLayer\": function() { return /* reexport safe */ _text_layer_text_layer__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; },\n/* harmony export */   \"_MultiIconLayer\": function() { return /* reexport safe */ _text_layer_multi_icon_layer_multi_icon_layer__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; },\n/* harmony export */   \"_TextBackgroundLayer\": function() { return /* reexport safe */ _text_layer_text_background_layer_text_background_layer__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _arc_layer_arc_layer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./arc-layer/arc-layer */ \"./node_modules/@deck.gl/layers/dist/esm/arc-layer/arc-layer.js\");\n/* harmony import */ var _bitmap_layer_bitmap_layer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bitmap-layer/bitmap-layer */ \"./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/bitmap-layer.js\");\n/* harmony import */ var _icon_layer_icon_layer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./icon-layer/icon-layer */ \"./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer.js\");\n/* harmony import */ var _line_layer_line_layer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./line-layer/line-layer */ \"./node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer.js\");\n/* harmony import */ var _point_cloud_layer_point_cloud_layer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./point-cloud-layer/point-cloud-layer */ \"./node_modules/@deck.gl/layers/dist/esm/point-cloud-layer/point-cloud-layer.js\");\n/* harmony import */ var _scatterplot_layer_scatterplot_layer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./scatterplot-layer/scatterplot-layer */ \"./node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer.js\");\n/* harmony import */ var _column_layer_column_layer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./column-layer/column-layer */ \"./node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer.js\");\n/* harmony import */ var _column_layer_grid_cell_layer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./column-layer/grid-cell-layer */ \"./node_modules/@deck.gl/layers/dist/esm/column-layer/grid-cell-layer.js\");\n/* harmony import */ var _path_layer_path_layer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./path-layer/path-layer */ \"./node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer.js\");\n/* harmony import */ var _polygon_layer_polygon_layer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./polygon-layer/polygon-layer */ \"./node_modules/@deck.gl/layers/dist/esm/polygon-layer/polygon-layer.js\");\n/* harmony import */ var _geojson_layer_geojson_layer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./geojson-layer/geojson-layer */ \"./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-layer.js\");\n/* harmony import */ var _text_layer_text_layer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./text-layer/text-layer */ \"./node_modules/@deck.gl/layers/dist/esm/text-layer/text-layer.js\");\n/* harmony import */ var _solid_polygon_layer_solid_polygon_layer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./solid-polygon-layer/solid-polygon-layer */ \"./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer.js\");\n/* harmony import */ var _text_layer_multi_icon_layer_multi_icon_layer__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./text-layer/multi-icon-layer/multi-icon-layer */ \"./node_modules/@deck.gl/layers/dist/esm/text-layer/multi-icon-layer/multi-icon-layer.js\");\n/* harmony import */ var _text_layer_text_background_layer_text_background_layer__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./text-layer/text-background-layer/text-background-layer */ \"./node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/index.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer-fragment.glsl.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer-fragment.glsl.js ***!
  \**************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME line-layer-fragment-shader\\n\\nprecision highp float;\\n\\nvarying vec4 vColor;\\nvarying vec2 uv;\\n\\nvoid main(void) {\\n  geometry.uv = uv;\\n\\n  gl_FragColor = vColor;\\n\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\");\n//# sourceMappingURL=line-layer-fragment.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer-fragment.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer-vertex.glsl.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer-vertex.glsl.js ***!
  \************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME line-layer-vertex-shader\\n\\nattribute vec3 positions;\\nattribute vec3 instanceSourcePositions;\\nattribute vec3 instanceTargetPositions;\\nattribute vec3 instanceSourcePositions64Low;\\nattribute vec3 instanceTargetPositions64Low;\\nattribute vec4 instanceColors;\\nattribute vec3 instancePickingColors;\\nattribute float instanceWidths;\\n\\nuniform float opacity;\\nuniform float widthScale;\\nuniform float widthMinPixels;\\nuniform float widthMaxPixels;\\nuniform float useShortestPath;\\nuniform int widthUnits;\\n\\nvarying vec4 vColor;\\nvarying vec2 uv;\\n\\n// offset vector by strokeWidth pixels\\n// offset_direction is -1 (left) or 1 (right)\\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) {\\n  // normalized direction of the line\\n  vec2 dir_screenspace = normalize(line_clipspace * project_uViewportSize);\\n  // rotate by 90 degrees\\n  dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\\n\\n  return dir_screenspace * offset_direction * width / 2.0;\\n}\\n\\nvec3 splitLine(vec3 a, vec3 b, float x) {\\n  float t = (x - a.x) / (b.x - a.x);\\n  return vec3(x, mix(a.yz, b.yz, t));\\n}\\n\\nvoid main(void) {\\n  geometry.worldPosition = instanceSourcePositions;\\n  geometry.worldPositionAlt = instanceTargetPositions;\\n\\n  vec3 source_world = instanceSourcePositions;\\n  vec3 target_world = instanceTargetPositions;\\n  vec3 source_world_64low = instanceSourcePositions64Low;\\n  vec3 target_world_64low = instanceTargetPositions64Low;\\n\\n  if (useShortestPath > 0.5 || useShortestPath < -0.5) {\\n    source_world.x = mod(source_world.x + 180., 360.0) - 180.;\\n    target_world.x = mod(target_world.x + 180., 360.0) - 180.;\\n    float deltaLng = target_world.x - source_world.x;\\n\\n    if (deltaLng * useShortestPath > 180.) {\\n      source_world.x += 360. * useShortestPath;\\n      source_world = splitLine(source_world, target_world, 180. * useShortestPath);\\n      source_world_64low = vec3(0.0);\\n    } else if (deltaLng * useShortestPath < -180.) {\\n      target_world.x += 360. * useShortestPath;\\n      target_world = splitLine(source_world, target_world, 180. * useShortestPath);\\n      target_world_64low = vec3(0.0);\\n    } else if (useShortestPath < 0.) {\\n      // Line is not split, abort\\n      gl_Position = vec4(0.);\\n      return;\\n    }\\n  }\\n\\n  // Position\\n  vec4 source_commonspace;\\n  vec4 target_commonspace;\\n  vec4 source = project_position_to_clipspace(source_world, source_world_64low, vec3(0.), source_commonspace);\\n  vec4 target = project_position_to_clipspace(target_world, target_world_64low, vec3(0.), target_commonspace);\\n  \\n  // linear interpolation of source & target to pick right coord\\n  float segmentIndex = positions.x;\\n  vec4 p = mix(source, target, segmentIndex);\\n  geometry.position = mix(source_commonspace, target_commonspace, segmentIndex);\\n  uv = positions.xy;\\n  geometry.uv = uv;\\n  geometry.pickingColor = instancePickingColors;\\n\\n  // Multiply out width and clamp to limits\\n  float widthPixels = clamp(\\n    project_size_to_pixel(instanceWidths * widthScale, widthUnits),\\n    widthMinPixels, widthMaxPixels\\n  );\\n\\n  // extrude\\n  vec3 offset = vec3(\\n    getExtrusionOffset(target.xy - source.xy, positions.y, widthPixels),\\n    0.0);\\n  DECKGL_FILTER_SIZE(offset, geometry);\\n  gl_Position = p + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0);\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n  // Color\\n  vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\\n  DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\");\n//# sourceMappingURL=line-layer-vertex.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer-vertex.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer.js":
/*!************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LineLayer; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/layer.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project32/project32.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/picking/picking.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/lib/model.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js\");\n/* harmony import */ var _line_layer_vertex_glsl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./line-layer-vertex.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer-vertex.glsl.js\");\n/* harmony import */ var _line_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./line-layer-fragment.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer-fragment.glsl.js\");\n\n\n\n\n\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n  getSourcePosition: {\n    type: 'accessor',\n    value: x => x.sourcePosition\n  },\n  getTargetPosition: {\n    type: 'accessor',\n    value: x => x.targetPosition\n  },\n  getColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getWidth: {\n    type: 'accessor',\n    value: 1\n  },\n  widthUnits: 'pixels',\n  widthScale: {\n    type: 'number',\n    value: 1,\n    min: 0\n  },\n  widthMinPixels: {\n    type: 'number',\n    value: 0,\n    min: 0\n  },\n  widthMaxPixels: {\n    type: 'number',\n    value: Number.MAX_SAFE_INTEGER,\n    min: 0\n  }\n};\nclass LineLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  getShaders() {\n    return super.getShaders({\n      vs: _line_layer_vertex_glsl__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n      fs: _line_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      modules: [_deck_gl_core__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _deck_gl_core__WEBPACK_IMPORTED_MODULE_5__[\"default\"]]\n    });\n  }\n\n  get wrapLongitude() {\n    return false;\n  }\n\n  initializeState() {\n    const attributeManager = this.getAttributeManager();\n    attributeManager.addInstanced({\n      instanceSourcePositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getSourcePosition'\n      },\n      instanceTargetPositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getTargetPosition'\n      },\n      instanceColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: true,\n        accessor: 'getColor',\n        defaultValue: [0, 0, 0, 255]\n      },\n      instanceWidths: {\n        size: 1,\n        transition: true,\n        accessor: 'getWidth',\n        defaultValue: 1\n      }\n    });\n  }\n\n  updateState(params) {\n    super.updateState(params);\n\n    if (params.changeFlags.extensionsChanged) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      this.getAttributeManager().invalidateAll();\n    }\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      widthUnits,\n      widthScale,\n      widthMinPixels,\n      widthMaxPixels,\n      wrapLongitude\n    } = this.props;\n    this.state.model.setUniforms(uniforms).setUniforms({\n      widthUnits: _deck_gl_core__WEBPACK_IMPORTED_MODULE_6__.UNIT[widthUnits],\n      widthScale,\n      widthMinPixels,\n      widthMaxPixels,\n      useShortestPath: wrapLongitude ? 1 : 0\n    }).draw();\n\n    if (wrapLongitude) {\n      this.state.model.setUniforms({\n        useShortestPath: -1\n      }).draw();\n    }\n  }\n\n  _getModel(gl) {\n    const positions = [0, -1, 0, 0, 1, 0, 1, -1, 0, 1, 1, 0];\n    return new _luma_gl_core__WEBPACK_IMPORTED_MODULE_7__[\"default\"](gl, { ...this.getShaders(),\n      id: this.props.id,\n      geometry: new _luma_gl_core__WEBPACK_IMPORTED_MODULE_8__[\"default\"]({\n        drawMode: 5,\n        attributes: {\n          positions: new Float32Array(positions)\n        }\n      }),\n      isInstanced: true\n    });\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(LineLayer, \"layerName\", 'LineLayer');\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(LineLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=line-layer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer-fragment.glsl.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer-fragment.glsl.js ***!
  \**************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME path-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform float miterLimit;\\n\\nvarying vec4 vColor;\\nvarying vec2 vCornerOffset;\\nvarying float vMiterLength;\\n/*\\n * vPathPosition represents the relative coordinates of the current fragment on the path segment.\\n * vPathPosition.x - position along the width of the path, between [-1, 1]. 0 is the center line.\\n * vPathPosition.y - position along the length of the path, between [0, L / width].\\n */\\nvarying vec2 vPathPosition;\\nvarying float vPathLength;\\nvarying float vJointType;\\n\\nvoid main(void) {\\n  geometry.uv = vPathPosition;\\n\\n  if (vPathPosition.y < 0.0 || vPathPosition.y > vPathLength) {\\n    // if joint is rounded, test distance from the corner\\n    if (vJointType > 0.5 && length(vCornerOffset) > 1.0) {\\n      discard;\\n    }\\n    // trim miter\\n    if (vJointType < 0.5 && vMiterLength > miterLimit + 1.0) {\\n      discard;\\n    }\\n  }\\n  gl_FragColor = vColor;\\n\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\");\n//# sourceMappingURL=path-layer-fragment.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer-fragment.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer-vertex.glsl.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer-vertex.glsl.js ***!
  \************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME path-layer-vertex-shader\\n\\nattribute vec2 positions;\\n\\nattribute float instanceTypes;\\nattribute vec3 instanceStartPositions;\\nattribute vec3 instanceEndPositions;\\nattribute vec3 instanceLeftPositions;\\nattribute vec3 instanceRightPositions;\\nattribute vec3 instanceLeftPositions64Low;\\nattribute vec3 instanceStartPositions64Low;\\nattribute vec3 instanceEndPositions64Low;\\nattribute vec3 instanceRightPositions64Low;\\nattribute float instanceStrokeWidths;\\nattribute vec4 instanceColors;\\nattribute vec3 instancePickingColors;\\n\\nuniform float widthScale;\\nuniform float widthMinPixels;\\nuniform float widthMaxPixels;\\nuniform float jointType;\\nuniform float capType;\\nuniform float miterLimit;\\nuniform bool billboard;\\nuniform int widthUnits;\\n\\nuniform float opacity;\\n\\nvarying vec4 vColor;\\nvarying vec2 vCornerOffset;\\nvarying float vMiterLength;\\nvarying vec2 vPathPosition;\\nvarying float vPathLength;\\nvarying float vJointType;\\n\\nconst float EPSILON = 0.001;\\nconst vec3 ZERO_OFFSET = vec3(0.0);\\n\\nfloat flipIfTrue(bool flag) {\\n  return -(float(flag) * 2. - 1.);\\n}\\n\\n// calculate line join positions\\nvec3 lineJoin(\\n  vec3 prevPoint, vec3 currPoint, vec3 nextPoint,\\n  vec2 width\\n) {\\n  bool isEnd = positions.x > 0.0;\\n  // side of the segment - -1: left, 0: center, 1: right\\n  float sideOfPath = positions.y;\\n  float isJoint = float(sideOfPath == 0.0);\\n\\n  vec3 deltaA3 = (currPoint - prevPoint);\\n  vec3 deltaB3 = (nextPoint - currPoint);\\n\\n  mat3 rotationMatrix;\\n  bool needsRotation = !billboard && project_needs_rotation(currPoint, rotationMatrix);\\n  if (needsRotation) {\\n    deltaA3 = deltaA3 * rotationMatrix;\\n    deltaB3 = deltaB3 * rotationMatrix;\\n  }\\n  vec2 deltaA = deltaA3.xy / width;\\n  vec2 deltaB = deltaB3.xy / width;\\n\\n  float lenA = length(deltaA);\\n  float lenB = length(deltaB);\\n\\n  vec2 dirA = lenA > 0. ? normalize(deltaA) : vec2(0.0, 0.0);\\n  vec2 dirB = lenB > 0. ? normalize(deltaB) : vec2(0.0, 0.0);\\n\\n  vec2 perpA = vec2(-dirA.y, dirA.x);\\n  vec2 perpB = vec2(-dirB.y, dirB.x);\\n\\n  // tangent of the corner\\n  vec2 tangent = dirA + dirB;\\n  tangent = length(tangent) > 0. ? normalize(tangent) : perpA;\\n  // direction of the corner\\n  vec2 miterVec = vec2(-tangent.y, tangent.x);\\n  // direction of the segment\\n  vec2 dir = isEnd ? dirA : dirB;\\n  // direction of the extrusion\\n  vec2 perp = isEnd ? perpA : perpB;\\n  // length of the segment\\n  float L = isEnd ? lenA : lenB;\\n\\n  // A = angle of the corner\\n  float sinHalfA = abs(dot(miterVec, perp));\\n  float cosHalfA = abs(dot(dirA, miterVec));\\n\\n  // -1: right, 1: left\\n  float turnDirection = flipIfTrue(dirA.x * dirB.y >= dirA.y * dirB.x);\\n\\n  // relative position to the corner:\\n  // -1: inside (smaller side of the angle)\\n  // 0: center\\n  // 1: outside (bigger side of the angle)\\n  float cornerPosition = sideOfPath * turnDirection;\\n\\n  float miterSize = 1.0 / max(sinHalfA, EPSILON);\\n  // trim if inside corner extends further than the line segment\\n  miterSize = mix(\\n    min(miterSize, max(lenA, lenB) / max(cosHalfA, EPSILON)),\\n    miterSize,\\n    step(0.0, cornerPosition)\\n  );\\n\\n  vec2 offsetVec = mix(miterVec * miterSize, perp, step(0.5, cornerPosition))\\n    * (sideOfPath + isJoint * turnDirection);\\n\\n  // special treatment for start cap and end cap\\n  bool isStartCap = lenA == 0.0 || (!isEnd && (instanceTypes == 1.0 || instanceTypes == 3.0));\\n  bool isEndCap = lenB == 0.0 || (isEnd && (instanceTypes == 2.0 || instanceTypes == 3.0));\\n  bool isCap = isStartCap || isEndCap;\\n\\n  // extend out a triangle to envelope the round cap\\n  if (isCap) {\\n    offsetVec = mix(perp * sideOfPath, dir * capType * 4.0 * flipIfTrue(isStartCap), isJoint);\\n    vJointType = capType;\\n  } else {\\n    vJointType = jointType;\\n  }\\n\\n  // Generate variables for fragment shader\\n  vPathLength = L;\\n  vCornerOffset = offsetVec;\\n  vMiterLength = dot(vCornerOffset, miterVec * turnDirection);\\n  vMiterLength = isCap ? isJoint : vMiterLength;\\n\\n  vec2 offsetFromStartOfPath = vCornerOffset + deltaA * float(isEnd);\\n  vPathPosition = vec2(\\n    dot(offsetFromStartOfPath, perp),\\n    dot(offsetFromStartOfPath, dir)\\n  );\\n  geometry.uv = vPathPosition;\\n\\n  float isValid = step(instanceTypes, 3.5);\\n  vec3 offset = vec3(offsetVec * width * isValid, 0.0);\\n\\n  if (needsRotation) {\\n    offset = rotationMatrix * offset;\\n  }\\n  return currPoint + offset;\\n}\\n\\n// In clipspace extrusion, if a line extends behind the camera, clip it to avoid visual artifacts\\nvoid clipLine(inout vec4 position, vec4 refPosition) {\\n  if (position.w < EPSILON) {\\n    float r = (EPSILON - refPosition.w) / (position.w - refPosition.w);\\n    position = refPosition + (position - refPosition) * r;\\n  }\\n}\\n\\nvoid main() {\\n  geometry.pickingColor = instancePickingColors;\\n\\n  vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\\n\\n  float isEnd = positions.x;\\n\\n  vec3 prevPosition = mix(instanceLeftPositions, instanceStartPositions, isEnd);\\n  vec3 prevPosition64Low = mix(instanceLeftPositions64Low, instanceStartPositions64Low, isEnd);\\n\\n  vec3 currPosition = mix(instanceStartPositions, instanceEndPositions, isEnd);\\n  vec3 currPosition64Low = mix(instanceStartPositions64Low, instanceEndPositions64Low, isEnd);\\n\\n  vec3 nextPosition = mix(instanceEndPositions, instanceRightPositions, isEnd);\\n  vec3 nextPosition64Low = mix(instanceEndPositions64Low, instanceRightPositions64Low, isEnd);\\n\\n  geometry.worldPosition = currPosition;\\n  vec2 widthPixels = vec2(clamp(\\n    project_size_to_pixel(instanceStrokeWidths * widthScale, widthUnits),\\n    widthMinPixels, widthMaxPixels) / 2.0);\\n  vec3 width;\\n\\n  if (billboard) {\\n    // Extrude in clipspace\\n    vec4 prevPositionScreen = project_position_to_clipspace(prevPosition, prevPosition64Low, ZERO_OFFSET);\\n    vec4 currPositionScreen = project_position_to_clipspace(currPosition, currPosition64Low, ZERO_OFFSET, geometry.position);\\n    vec4 nextPositionScreen = project_position_to_clipspace(nextPosition, nextPosition64Low, ZERO_OFFSET);\\n\\n    clipLine(prevPositionScreen, currPositionScreen);\\n    clipLine(nextPositionScreen, currPositionScreen);\\n    clipLine(currPositionScreen, mix(nextPositionScreen, prevPositionScreen, isEnd));\\n\\n    width = vec3(widthPixels, 0.0);\\n    DECKGL_FILTER_SIZE(width, geometry);\\n\\n    vec3 pos = lineJoin(\\n      prevPositionScreen.xyz / prevPositionScreen.w,\\n      currPositionScreen.xyz / currPositionScreen.w,\\n      nextPositionScreen.xyz / nextPositionScreen.w,\\n      project_pixel_size_to_clipspace(width.xy)\\n    );\\n\\n    gl_Position = vec4(pos * currPositionScreen.w, currPositionScreen.w);\\n  } else {\\n    // Extrude in commonspace\\n    prevPosition = project_position(prevPosition, prevPosition64Low);\\n    currPosition = project_position(currPosition, currPosition64Low);\\n    nextPosition = project_position(nextPosition, nextPosition64Low);\\n\\n    width = vec3(project_pixel_size(widthPixels), 0.0);\\n    DECKGL_FILTER_SIZE(width, geometry);\\n\\n    vec4 pos = vec4(\\n      lineJoin(prevPosition, currPosition, nextPosition, width.xy),\\n      1.0);\\n    geometry.position = pos;\\n    gl_Position = project_common_position_to_clipspace(pos);\\n  }\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n  DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\");\n//# sourceMappingURL=path-layer-vertex.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer-vertex.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer.js":
/*!************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ PathLayer; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/layer.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project32/project32.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/picking/picking.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/lib/model.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js\");\n/* harmony import */ var _path_tesselator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./path-tesselator */ \"./node_modules/@deck.gl/layers/dist/esm/path-layer/path-tesselator.js\");\n/* harmony import */ var _path_layer_vertex_glsl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./path-layer-vertex.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer-vertex.glsl.js\");\n/* harmony import */ var _path_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./path-layer-fragment.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer-fragment.glsl.js\");\n\n\n\n\n\n\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n  widthUnits: 'meters',\n  widthScale: {\n    type: 'number',\n    min: 0,\n    value: 1\n  },\n  widthMinPixels: {\n    type: 'number',\n    min: 0,\n    value: 0\n  },\n  widthMaxPixels: {\n    type: 'number',\n    min: 0,\n    value: Number.MAX_SAFE_INTEGER\n  },\n  jointRounded: false,\n  capRounded: false,\n  miterLimit: {\n    type: 'number',\n    min: 0,\n    value: 4\n  },\n  billboard: false,\n  _pathType: null,\n  getPath: {\n    type: 'accessor',\n    value: object => object.path\n  },\n  getColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getWidth: {\n    type: 'accessor',\n    value: 1\n  },\n  rounded: {\n    deprecatedFor: ['jointRounded', 'capRounded']\n  }\n};\nconst ATTRIBUTE_TRANSITION = {\n  enter: (value, chunk) => {\n    return chunk.length ? chunk.subarray(chunk.length - value.length) : value;\n  }\n};\nclass PathLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(...args) {\n    super(...args);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"state\", void 0);\n  }\n\n  getShaders() {\n    return super.getShaders({\n      vs: _path_layer_vertex_glsl__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n      fs: _path_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      modules: [_deck_gl_core__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _deck_gl_core__WEBPACK_IMPORTED_MODULE_5__[\"default\"]]\n    });\n  }\n\n  get wrapLongitude() {\n    return false;\n  }\n\n  initializeState() {\n    const noAlloc = true;\n    const attributeManager = this.getAttributeManager();\n    attributeManager.addInstanced({\n      positions: {\n        size: 3,\n        vertexOffset: 1,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: ATTRIBUTE_TRANSITION,\n        accessor: 'getPath',\n        update: this.calculatePositions,\n        noAlloc,\n        shaderAttributes: {\n          instanceLeftPositions: {\n            vertexOffset: 0\n          },\n          instanceStartPositions: {\n            vertexOffset: 1\n          },\n          instanceEndPositions: {\n            vertexOffset: 2\n          },\n          instanceRightPositions: {\n            vertexOffset: 3\n          }\n        }\n      },\n      instanceTypes: {\n        size: 1,\n        type: 5121,\n        update: this.calculateSegmentTypes,\n        noAlloc\n      },\n      instanceStrokeWidths: {\n        size: 1,\n        accessor: 'getWidth',\n        transition: ATTRIBUTE_TRANSITION,\n        defaultValue: 1\n      },\n      instanceColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        accessor: 'getColor',\n        transition: ATTRIBUTE_TRANSITION,\n        defaultValue: DEFAULT_COLOR\n      },\n      instancePickingColors: {\n        size: 3,\n        type: 5121,\n        accessor: (object, {\n          index,\n          target: value\n        }) => this.encodePickingColor(object && object.__source ? object.__source.index : index, value)\n      }\n    });\n    this.setState({\n      pathTesselator: new _path_tesselator__WEBPACK_IMPORTED_MODULE_6__[\"default\"]({\n        fp64: this.use64bitPositions()\n      })\n    });\n  }\n\n  updateState(params) {\n    super.updateState(params);\n    const {\n      props,\n      changeFlags\n    } = params;\n    const attributeManager = this.getAttributeManager();\n    const geometryChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPath);\n\n    if (geometryChanged) {\n      const {\n        pathTesselator\n      } = this.state;\n      const buffers = props.data.attributes || {};\n      pathTesselator.updateGeometry({\n        data: props.data,\n        geometryBuffer: buffers.getPath,\n        buffers,\n        normalize: !props._pathType,\n        loop: props._pathType === 'loop',\n        getGeometry: props.getPath,\n        positionFormat: props.positionFormat,\n        wrapLongitude: props.wrapLongitude,\n        resolution: this.context.viewport.resolution,\n        dataChanged: changeFlags.dataChanged\n      });\n      this.setState({\n        numInstances: pathTesselator.instanceCount,\n        startIndices: pathTesselator.vertexStarts\n      });\n\n      if (!changeFlags.dataChanged) {\n        attributeManager.invalidateAll();\n      }\n    }\n\n    if (changeFlags.extensionsChanged) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      attributeManager.invalidateAll();\n    }\n  }\n\n  getPickingInfo(params) {\n    const info = super.getPickingInfo(params);\n    const {\n      index\n    } = info;\n    const {\n      data\n    } = this.props;\n\n    if (data[0] && data[0].__source) {\n      info.object = data.find(d => d.__source.index === index);\n    }\n\n    return info;\n  }\n\n  disablePickingIndex(objectIndex) {\n    const {\n      data\n    } = this.props;\n\n    if (data[0] && data[0].__source) {\n      for (let i = 0; i < data.length; i++) {\n        if (data[i].__source.index === objectIndex) {\n          this._disablePickingIndex(i);\n        }\n      }\n    } else {\n      this._disablePickingIndex(objectIndex);\n    }\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      jointRounded,\n      capRounded,\n      billboard,\n      miterLimit,\n      widthUnits,\n      widthScale,\n      widthMinPixels,\n      widthMaxPixels\n    } = this.props;\n    this.state.model.setUniforms(uniforms).setUniforms({\n      jointType: Number(jointRounded),\n      capType: Number(capRounded),\n      billboard,\n      widthUnits: _deck_gl_core__WEBPACK_IMPORTED_MODULE_7__.UNIT[widthUnits],\n      widthScale,\n      miterLimit,\n      widthMinPixels,\n      widthMaxPixels\n    }).draw();\n  }\n\n  _getModel(gl) {\n    const SEGMENT_INDICES = [0, 1, 2, 1, 4, 2, 1, 3, 4, 3, 5, 4];\n    const SEGMENT_POSITIONS = [0, 0, 0, -1, 0, 1, 1, -1, 1, 1, 1, 0];\n    return new _luma_gl_core__WEBPACK_IMPORTED_MODULE_8__[\"default\"](gl, { ...this.getShaders(),\n      id: this.props.id,\n      geometry: new _luma_gl_core__WEBPACK_IMPORTED_MODULE_9__[\"default\"]({\n        drawMode: 4,\n        attributes: {\n          indices: new Uint16Array(SEGMENT_INDICES),\n          positions: {\n            value: new Float32Array(SEGMENT_POSITIONS),\n            size: 2\n          }\n        }\n      }),\n      isInstanced: true\n    });\n  }\n\n  calculatePositions(attribute) {\n    const {\n      pathTesselator\n    } = this.state;\n    attribute.startIndices = pathTesselator.vertexStarts;\n    attribute.value = pathTesselator.get('positions');\n  }\n\n  calculateSegmentTypes(attribute) {\n    const {\n      pathTesselator\n    } = this.state;\n    attribute.startIndices = pathTesselator.vertexStarts;\n    attribute.value = pathTesselator.get('segmentTypes');\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(PathLayer, \"defaultProps\", defaultProps);\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(PathLayer, \"layerName\", 'PathLayer');\n//# sourceMappingURL=path-layer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/path-layer/path-tesselator.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/path-layer/path-tesselator.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ PathTesselator; }\n/* harmony export */ });\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/utils/tesselator.js\");\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./path */ \"./node_modules/@deck.gl/layers/dist/esm/path-layer/path.js\");\n\n\nconst START_CAP = 1;\nconst END_CAP = 2;\nconst INVALID = 4;\nclass PathTesselator extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n  constructor(opts) {\n    super({ ...opts,\n      attributes: {\n        positions: {\n          size: 3,\n          padding: 18,\n          initialize: true,\n          type: opts.fp64 ? Float64Array : Float32Array\n        },\n        segmentTypes: {\n          size: 1,\n          type: Uint8ClampedArray\n        }\n      }\n    });\n  }\n\n  get(attributeName) {\n    return this.attributes[attributeName];\n  }\n\n  getGeometryFromBuffer(buffer) {\n    if (this.normalize) {\n      return super.getGeometryFromBuffer(buffer);\n    }\n\n    return null;\n  }\n\n  normalizeGeometry(path) {\n    if (this.normalize) {\n      return (0,_path__WEBPACK_IMPORTED_MODULE_1__.normalizePath)(path, this.positionSize, this.opts.resolution, this.opts.wrapLongitude);\n    }\n\n    return path;\n  }\n\n  getGeometrySize(path) {\n    if (isCut(path)) {\n      let size = 0;\n\n      for (const subPath of path) {\n        size += this.getGeometrySize(subPath);\n      }\n\n      return size;\n    }\n\n    const numPoints = this.getPathLength(path);\n\n    if (numPoints < 2) {\n      return 0;\n    }\n\n    if (this.isClosed(path)) {\n      return numPoints < 3 ? 0 : numPoints + 2;\n    }\n\n    return numPoints;\n  }\n\n  updateGeometryAttributes(path, context) {\n    if (context.geometrySize === 0) {\n      return;\n    }\n\n    if (path && isCut(path)) {\n      for (const subPath of path) {\n        const geometrySize = this.getGeometrySize(subPath);\n        context.geometrySize = geometrySize;\n        this.updateGeometryAttributes(subPath, context);\n        context.vertexStart += geometrySize;\n      }\n    } else {\n      this._updateSegmentTypes(path, context);\n\n      this._updatePositions(path, context);\n    }\n  }\n\n  _updateSegmentTypes(path, context) {\n    const segmentTypes = this.attributes.segmentTypes;\n    const isPathClosed = path ? this.isClosed(path) : false;\n    const {\n      vertexStart,\n      geometrySize\n    } = context;\n    segmentTypes.fill(0, vertexStart, vertexStart + geometrySize);\n\n    if (isPathClosed) {\n      segmentTypes[vertexStart] = INVALID;\n      segmentTypes[vertexStart + geometrySize - 2] = INVALID;\n    } else {\n      segmentTypes[vertexStart] += START_CAP;\n      segmentTypes[vertexStart + geometrySize - 2] += END_CAP;\n    }\n\n    segmentTypes[vertexStart + geometrySize - 1] = INVALID;\n  }\n\n  _updatePositions(path, context) {\n    const {\n      positions\n    } = this.attributes;\n\n    if (!positions || !path) {\n      return;\n    }\n\n    const {\n      vertexStart,\n      geometrySize\n    } = context;\n    const p = new Array(3);\n\n    for (let i = vertexStart, ptIndex = 0; ptIndex < geometrySize; i++, ptIndex++) {\n      this.getPointOnPath(path, ptIndex, p);\n      positions[i * 3] = p[0];\n      positions[i * 3 + 1] = p[1];\n      positions[i * 3 + 2] = p[2];\n    }\n  }\n\n  getPathLength(path) {\n    return path.length / this.positionSize;\n  }\n\n  getPointOnPath(path, index, target = []) {\n    const {\n      positionSize\n    } = this;\n\n    if (index * positionSize >= path.length) {\n      index += 1 - path.length / positionSize;\n    }\n\n    const i = index * positionSize;\n    target[0] = path[i];\n    target[1] = path[i + 1];\n    target[2] = positionSize === 3 && path[i + 2] || 0;\n    return target;\n  }\n\n  isClosed(path) {\n    if (!this.normalize) {\n      return Boolean(this.opts.loop);\n    }\n\n    const {\n      positionSize\n    } = this;\n    const lastPointIndex = path.length - positionSize;\n    return path[0] === path[lastPointIndex] && path[1] === path[lastPointIndex + 1] && (positionSize === 2 || path[2] === path[lastPointIndex + 2]);\n  }\n\n}\n\nfunction isCut(path) {\n  return Array.isArray(path[0]);\n}\n//# sourceMappingURL=path-tesselator.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/path-layer/path-tesselator.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/path-layer/path.js":
/*!******************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/path-layer/path.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"normalizePath\": function() { return /* binding */ normalizePath; }\n/* harmony export */ });\n/* harmony import */ var _math_gl_polygon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/polygon */ \"./node_modules/@math.gl/polygon/dist/esm/index.js\");\n\nfunction normalizePath(path, size, gridResolution, wrapLongitude) {\n  let flatPath;\n\n  if (Array.isArray(path[0])) {\n    const length = path.length * size;\n    flatPath = new Array(length);\n\n    for (let i = 0; i < path.length; i++) {\n      for (let j = 0; j < size; j++) {\n        flatPath[i * size + j] = path[i][j] || 0;\n      }\n    }\n  } else {\n    flatPath = path;\n  }\n\n  if (gridResolution) {\n    return (0,_math_gl_polygon__WEBPACK_IMPORTED_MODULE_0__.cutPolylineByGrid)(flatPath, {\n      size,\n      gridResolution\n    });\n  }\n\n  if (wrapLongitude) {\n    return (0,_math_gl_polygon__WEBPACK_IMPORTED_MODULE_0__.cutPolylineByMercatorBounds)(flatPath, {\n      size\n    });\n  }\n\n  return flatPath;\n}\n//# sourceMappingURL=path.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/path-layer/path.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/point-cloud-layer/point-cloud-layer-fragment.glsl.js":
/*!****************************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/point-cloud-layer/point-cloud-layer-fragment.glsl.js ***!
  \****************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME point-cloud-layer-fragment-shader\\n\\nprecision highp float;\\n\\nvarying vec4 vColor;\\nvarying vec2 unitPosition;\\n\\nvoid main(void) {\\n  geometry.uv = unitPosition;\\n\\n  float distToCenter = length(unitPosition);\\n\\n  if (distToCenter > 1.0) {\\n    discard;\\n  }\\n\\n  gl_FragColor = vColor;\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\");\n//# sourceMappingURL=point-cloud-layer-fragment.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/point-cloud-layer/point-cloud-layer-fragment.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/point-cloud-layer/point-cloud-layer-vertex.glsl.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/point-cloud-layer/point-cloud-layer-vertex.glsl.js ***!
  \**************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME point-cloud-layer-vertex-shader\\n\\nattribute vec3 positions;\\nattribute vec3 instanceNormals;\\nattribute vec4 instanceColors;\\nattribute vec3 instancePositions;\\nattribute vec3 instancePositions64Low;\\nattribute vec3 instancePickingColors;\\n\\nuniform float opacity;\\nuniform float radiusPixels;\\nuniform int sizeUnits;\\n\\nvarying vec4 vColor;\\nvarying vec2 unitPosition;\\n\\nvoid main(void) {\\n  geometry.worldPosition = instancePositions;\\n  geometry.normal = project_normal(instanceNormals);\\n\\n  // position on the containing square in [-1, 1] space\\n  unitPosition = positions.xy;\\n  geometry.uv = unitPosition;\\n  geometry.pickingColor = instancePickingColors;\\n\\n  // Find the center of the point and add the current vertex\\n  vec3 offset = vec3(positions.xy * project_size_to_pixel(radiusPixels, sizeUnits), 0.0);\\n  DECKGL_FILTER_SIZE(offset, geometry);\\n\\n  gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.), geometry.position);\\n  gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n  // Apply lighting\\n  vec3 lightColor = lighting_getLightColor(instanceColors.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);\\n\\n  // Apply opacity to instance color, or return instance picking color\\n  vColor = vec4(lightColor, instanceColors.a * opacity);\\n  DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\");\n//# sourceMappingURL=point-cloud-layer-vertex.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/point-cloud-layer/point-cloud-layer-vertex.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/point-cloud-layer/point-cloud-layer.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/point-cloud-layer/point-cloud-layer.js ***!
  \**************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ PointCloudLayer; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/layer.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project32/project32.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/picking/picking.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/lib/model.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js\");\n/* harmony import */ var _point_cloud_layer_vertex_glsl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./point-cloud-layer-vertex.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/point-cloud-layer/point-cloud-layer-vertex.glsl.js\");\n/* harmony import */ var _point_cloud_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./point-cloud-layer-fragment.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/point-cloud-layer/point-cloud-layer-fragment.glsl.js\");\n\n\n\n\n\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst DEFAULT_NORMAL = [0, 0, 1];\nconst defaultProps = {\n  sizeUnits: 'pixels',\n  pointSize: {\n    type: 'number',\n    min: 0,\n    value: 10\n  },\n  getPosition: {\n    type: 'accessor',\n    value: x => x.position\n  },\n  getNormal: {\n    type: 'accessor',\n    value: DEFAULT_NORMAL\n  },\n  getColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  material: true,\n  radiusPixels: {\n    deprecatedFor: 'pointSize'\n  }\n};\n\nfunction normalizeData(data) {\n  const {\n    header,\n    attributes\n  } = data;\n\n  if (!header || !attributes) {\n    return;\n  }\n\n  data.length = header.vertexCount;\n\n  if (attributes.POSITION) {\n    attributes.instancePositions = attributes.POSITION;\n  }\n\n  if (attributes.NORMAL) {\n    attributes.instanceNormals = attributes.NORMAL;\n  }\n\n  if (attributes.COLOR_0) {\n    attributes.instanceColors = attributes.COLOR_0;\n  }\n}\n\nclass PointCloudLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  getShaders() {\n    return super.getShaders({\n      vs: _point_cloud_layer_vertex_glsl__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n      fs: _point_cloud_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      modules: [_deck_gl_core__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _deck_gl_core__WEBPACK_IMPORTED_MODULE_5__.gouraudLighting, _deck_gl_core__WEBPACK_IMPORTED_MODULE_6__[\"default\"]]\n    });\n  }\n\n  initializeState() {\n    this.getAttributeManager().addInstanced({\n      instancePositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getPosition'\n      },\n      instanceNormals: {\n        size: 3,\n        transition: true,\n        accessor: 'getNormal',\n        defaultValue: DEFAULT_NORMAL\n      },\n      instanceColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: true,\n        accessor: 'getColor',\n        defaultValue: DEFAULT_COLOR\n      }\n    });\n  }\n\n  updateState(params) {\n    const {\n      changeFlags,\n      props\n    } = params;\n    super.updateState(params);\n\n    if (changeFlags.extensionsChanged) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      this.getAttributeManager().invalidateAll();\n    }\n\n    if (changeFlags.dataChanged) {\n      normalizeData(props.data);\n    }\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      pointSize,\n      sizeUnits\n    } = this.props;\n    this.state.model.setUniforms(uniforms).setUniforms({\n      sizeUnits: _deck_gl_core__WEBPACK_IMPORTED_MODULE_7__.UNIT[sizeUnits],\n      radiusPixels: pointSize\n    }).draw();\n  }\n\n  _getModel(gl) {\n    const positions = [];\n\n    for (let i = 0; i < 3; i++) {\n      const angle = i / 3 * Math.PI * 2;\n      positions.push(Math.cos(angle) * 2, Math.sin(angle) * 2, 0);\n    }\n\n    return new _luma_gl_core__WEBPACK_IMPORTED_MODULE_8__[\"default\"](gl, { ...this.getShaders(),\n      id: this.props.id,\n      geometry: new _luma_gl_core__WEBPACK_IMPORTED_MODULE_9__[\"default\"]({\n        drawMode: 4,\n        attributes: {\n          positions: new Float32Array(positions)\n        }\n      }),\n      isInstanced: true\n    });\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(PointCloudLayer, \"layerName\", 'PointCloudLayer');\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(PointCloudLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=point-cloud-layer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/point-cloud-layer/point-cloud-layer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/polygon-layer/polygon-layer.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/polygon-layer/polygon-layer.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ PolygonLayer; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/composite-layer.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/utils/iterable-utils.js\");\n/* harmony import */ var _solid_polygon_layer_solid_polygon_layer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../solid-polygon-layer/solid-polygon-layer */ \"./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer.js\");\n/* harmony import */ var _path_layer_path_layer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../path-layer/path-layer */ \"./node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer.js\");\n/* harmony import */ var _solid_polygon_layer_polygon__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../solid-polygon-layer/polygon */ \"./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/polygon.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ \"./node_modules/@deck.gl/layers/dist/esm/utils.js\");\n\n\n\n\n\n\nconst defaultLineColor = [0, 0, 0, 255];\nconst defaultFillColor = [0, 0, 0, 255];\nconst defaultProps = {\n  stroked: true,\n  filled: true,\n  extruded: false,\n  elevationScale: 1,\n  wireframe: false,\n  _normalize: true,\n  _windingOrder: 'CW',\n  lineWidthUnits: 'meters',\n  lineWidthScale: 1,\n  lineWidthMinPixels: 0,\n  lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n  lineJointRounded: false,\n  lineMiterLimit: 4,\n  getPolygon: {\n    type: 'accessor',\n    value: f => f.polygon\n  },\n  getFillColor: {\n    type: 'accessor',\n    value: defaultFillColor\n  },\n  getLineColor: {\n    type: 'accessor',\n    value: defaultLineColor\n  },\n  getLineWidth: {\n    type: 'accessor',\n    value: 1\n  },\n  getElevation: {\n    type: 'accessor',\n    value: 1000\n  },\n  material: true\n};\nclass PolygonLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  initializeState() {\n    this.state = {\n      paths: []\n    };\n\n    if (this.props.getLineDashArray) {\n      _deck_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"].removed('getLineDashArray', 'PathStyleExtension')();\n    }\n  }\n\n  updateState({\n    changeFlags\n  }) {\n    const geometryChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPolygon);\n\n    if (geometryChanged && Array.isArray(changeFlags.dataChanged)) {\n      const paths = this.state.paths.slice();\n      const pathsDiff = changeFlags.dataChanged.map(dataRange => (0,_utils__WEBPACK_IMPORTED_MODULE_3__.replaceInRange)({\n        data: paths,\n        getIndex: p => p.__source.index,\n        dataRange,\n        replace: this._getPaths(dataRange)\n      }));\n      this.setState({\n        paths,\n        pathsDiff\n      });\n    } else if (geometryChanged) {\n      this.setState({\n        paths: this._getPaths(),\n        pathsDiff: null\n      });\n    }\n  }\n\n  _getPaths(dataRange = {}) {\n    const {\n      data,\n      getPolygon,\n      positionFormat,\n      _normalize\n    } = this.props;\n    const paths = [];\n    const positionSize = positionFormat === 'XY' ? 2 : 3;\n    const {\n      startRow,\n      endRow\n    } = dataRange;\n    const {\n      iterable,\n      objectInfo\n    } = (0,_deck_gl_core__WEBPACK_IMPORTED_MODULE_4__.createIterable)(data, startRow, endRow);\n\n    for (const object of iterable) {\n      objectInfo.index++;\n      let polygon = getPolygon(object, objectInfo);\n\n      if (_normalize) {\n        polygon = _solid_polygon_layer_polygon__WEBPACK_IMPORTED_MODULE_5__.normalize(polygon, positionSize);\n      }\n\n      const {\n        holeIndices\n      } = polygon;\n      const positions = polygon.positions || polygon;\n\n      if (holeIndices) {\n        for (let i = 0; i <= holeIndices.length; i++) {\n          const path = positions.slice(holeIndices[i - 1] || 0, holeIndices[i] || positions.length);\n          paths.push(this.getSubLayerRow({\n            path\n          }, object, objectInfo.index));\n        }\n      } else {\n        paths.push(this.getSubLayerRow({\n          path: positions\n        }, object, objectInfo.index));\n      }\n    }\n\n    return paths;\n  }\n\n  renderLayers() {\n    const {\n      data,\n      _dataDiff,\n      stroked,\n      filled,\n      extruded,\n      wireframe,\n      _normalize,\n      _windingOrder,\n      elevationScale,\n      transitions,\n      positionFormat\n    } = this.props;\n    const {\n      lineWidthUnits,\n      lineWidthScale,\n      lineWidthMinPixels,\n      lineWidthMaxPixels,\n      lineJointRounded,\n      lineMiterLimit,\n      lineDashJustified\n    } = this.props;\n    const {\n      getFillColor,\n      getLineColor,\n      getLineWidth,\n      getLineDashArray,\n      getElevation,\n      getPolygon,\n      updateTriggers,\n      material\n    } = this.props;\n    const {\n      paths,\n      pathsDiff\n    } = this.state;\n    const FillLayer = this.getSubLayerClass('fill', _solid_polygon_layer_solid_polygon_layer__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n    const StrokeLayer = this.getSubLayerClass('stroke', _path_layer_path_layer__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\n    const polygonLayer = this.shouldRenderSubLayer('fill', paths) && new FillLayer({\n      _dataDiff,\n      extruded,\n      elevationScale,\n      filled,\n      wireframe,\n      _normalize,\n      _windingOrder,\n      getElevation,\n      getFillColor,\n      getLineColor: extruded && wireframe ? getLineColor : defaultLineColor,\n      material,\n      transitions\n    }, this.getSubLayerProps({\n      id: 'fill',\n      updateTriggers: updateTriggers && {\n        getPolygon: updateTriggers.getPolygon,\n        getElevation: updateTriggers.getElevation,\n        getFillColor: updateTriggers.getFillColor,\n        lineColors: extruded && wireframe,\n        getLineColor: updateTriggers.getLineColor\n      }\n    }), {\n      data,\n      positionFormat,\n      getPolygon\n    });\n    const polygonLineLayer = !extruded && stroked && this.shouldRenderSubLayer('stroke', paths) && new StrokeLayer({\n      _dataDiff: pathsDiff && (() => pathsDiff),\n      widthUnits: lineWidthUnits,\n      widthScale: lineWidthScale,\n      widthMinPixels: lineWidthMinPixels,\n      widthMaxPixels: lineWidthMaxPixels,\n      jointRounded: lineJointRounded,\n      miterLimit: lineMiterLimit,\n      dashJustified: lineDashJustified,\n      _pathType: 'loop',\n      transitions: transitions && {\n        getWidth: transitions.getLineWidth,\n        getColor: transitions.getLineColor,\n        getPath: transitions.getPolygon\n      },\n      getColor: this.getSubLayerAccessor(getLineColor),\n      getWidth: this.getSubLayerAccessor(getLineWidth),\n      getDashArray: this.getSubLayerAccessor(getLineDashArray)\n    }, this.getSubLayerProps({\n      id: 'stroke',\n      updateTriggers: updateTriggers && {\n        getWidth: updateTriggers.getLineWidth,\n        getColor: updateTriggers.getLineColor,\n        getDashArray: updateTriggers.getLineDashArray\n      }\n    }), {\n      data: paths,\n      positionFormat,\n      getPath: x => x.path\n    });\n    return [!extruded && polygonLayer, polygonLineLayer, extruded && polygonLayer];\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(PolygonLayer, \"layerName\", 'PolygonLayer');\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(PolygonLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=polygon-layer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/polygon-layer/polygon-layer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer-fragment.glsl.js":
/*!****************************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer-fragment.glsl.js ***!
  \****************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME scatterplot-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform bool filled;\\nuniform float stroked;\\nuniform bool antialiasing;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying vec2 unitPosition;\\nvarying float innerUnitRadius;\\nvarying float outerRadiusPixels;\\n\\nvoid main(void) {\\n  geometry.uv = unitPosition;\\n\\n  float distToCenter = length(unitPosition) * outerRadiusPixels;\\n  float inCircle = antialiasing ? \\n    smoothedge(distToCenter, outerRadiusPixels) : \\n    step(distToCenter, outerRadiusPixels);\\n\\n  if (inCircle == 0.0) {\\n    discard;\\n  }\\n\\n  if (stroked > 0.5) {\\n    float isLine = antialiasing ? \\n      smoothedge(innerUnitRadius * outerRadiusPixels, distToCenter) :\\n      step(innerUnitRadius * outerRadiusPixels, distToCenter);\\n\\n    if (filled) {\\n      gl_FragColor = mix(vFillColor, vLineColor, isLine);\\n    } else {\\n      if (isLine == 0.0) {\\n        discard;\\n      }\\n      gl_FragColor = vec4(vLineColor.rgb, vLineColor.a * isLine);\\n    }\\n  } else if (filled) {\\n    gl_FragColor = vFillColor;\\n  } else {\\n    discard;\\n  }\\n\\n  gl_FragColor.a *= inCircle;\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\");\n//# sourceMappingURL=scatterplot-layer-fragment.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer-fragment.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer-vertex.glsl.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer-vertex.glsl.js ***!
  \**************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME scatterplot-layer-vertex-shader\\n\\nattribute vec3 positions;\\n\\nattribute vec3 instancePositions;\\nattribute vec3 instancePositions64Low;\\nattribute float instanceRadius;\\nattribute float instanceLineWidths;\\nattribute vec4 instanceFillColors;\\nattribute vec4 instanceLineColors;\\nattribute vec3 instancePickingColors;\\n\\nuniform float opacity;\\nuniform float radiusScale;\\nuniform float radiusMinPixels;\\nuniform float radiusMaxPixels;\\nuniform float lineWidthScale;\\nuniform float lineWidthMinPixels;\\nuniform float lineWidthMaxPixels;\\nuniform float stroked;\\nuniform bool filled;\\nuniform bool antialiasing;\\nuniform bool billboard;\\nuniform int radiusUnits;\\nuniform int lineWidthUnits;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying vec2 unitPosition;\\nvarying float innerUnitRadius;\\nvarying float outerRadiusPixels;\\n\\n\\nvoid main(void) {\\n  geometry.worldPosition = instancePositions;\\n\\n  // Multiply out radius and clamp to limits\\n  outerRadiusPixels = clamp(\\n    project_size_to_pixel(radiusScale * instanceRadius, radiusUnits),\\n    radiusMinPixels, radiusMaxPixels\\n  );\\n  \\n  // Multiply out line width and clamp to limits\\n  float lineWidthPixels = clamp(\\n    project_size_to_pixel(lineWidthScale * instanceLineWidths, lineWidthUnits),\\n    lineWidthMinPixels, lineWidthMaxPixels\\n  );\\n\\n  // outer radius needs to offset by half stroke width\\n  outerRadiusPixels += stroked * lineWidthPixels / 2.0;\\n\\n  // Expand geometry to accomodate edge smoothing\\n  float edgePadding = antialiasing ? (outerRadiusPixels + SMOOTH_EDGE_RADIUS) / outerRadiusPixels : 1.0;\\n\\n  // position on the containing square in [-1, 1] space\\n  unitPosition = edgePadding * positions.xy;\\n  geometry.uv = unitPosition;\\n  geometry.pickingColor = instancePickingColors;\\n\\n  innerUnitRadius = 1.0 - stroked * lineWidthPixels / outerRadiusPixels;\\n  \\n  if (billboard) {\\n    gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\\n    vec3 offset = edgePadding * positions * outerRadiusPixels;\\n    DECKGL_FILTER_SIZE(offset, geometry);\\n    gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\\n  } else {\\n    vec3 offset = edgePadding * positions * project_pixel_size(outerRadiusPixels);\\n    DECKGL_FILTER_SIZE(offset, geometry);\\n    gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position);\\n  }\\n\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n  // Apply opacity to instance color, or return instance picking color\\n  vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\\n  DECKGL_FILTER_COLOR(vFillColor, geometry);\\n  vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\\n  DECKGL_FILTER_COLOR(vLineColor, geometry);\\n}\\n\");\n//# sourceMappingURL=scatterplot-layer-vertex.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer-vertex.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer.js ***!
  \**************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ScatterplotLayer; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/layer.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project32/project32.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/picking/picking.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/lib/model.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js\");\n/* harmony import */ var _scatterplot_layer_vertex_glsl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scatterplot-layer-vertex.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer-vertex.glsl.js\");\n/* harmony import */ var _scatterplot_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./scatterplot-layer-fragment.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer-fragment.glsl.js\");\n\n\n\n\n\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n  radiusUnits: 'meters',\n  radiusScale: {\n    type: 'number',\n    min: 0,\n    value: 1\n  },\n  radiusMinPixels: {\n    type: 'number',\n    min: 0,\n    value: 0\n  },\n  radiusMaxPixels: {\n    type: 'number',\n    min: 0,\n    value: Number.MAX_SAFE_INTEGER\n  },\n  lineWidthUnits: 'meters',\n  lineWidthScale: {\n    type: 'number',\n    min: 0,\n    value: 1\n  },\n  lineWidthMinPixels: {\n    type: 'number',\n    min: 0,\n    value: 0\n  },\n  lineWidthMaxPixels: {\n    type: 'number',\n    min: 0,\n    value: Number.MAX_SAFE_INTEGER\n  },\n  stroked: false,\n  filled: true,\n  billboard: false,\n  antialiasing: true,\n  getPosition: {\n    type: 'accessor',\n    value: x => x.position\n  },\n  getRadius: {\n    type: 'accessor',\n    value: 1\n  },\n  getFillColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getLineColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getLineWidth: {\n    type: 'accessor',\n    value: 1\n  },\n  strokeWidth: {\n    deprecatedFor: 'getLineWidth'\n  },\n  outline: {\n    deprecatedFor: 'stroked'\n  },\n  getColor: {\n    deprecatedFor: ['getFillColor', 'getLineColor']\n  }\n};\nclass ScatterplotLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  getShaders() {\n    return super.getShaders({\n      vs: _scatterplot_layer_vertex_glsl__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n      fs: _scatterplot_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      modules: [_deck_gl_core__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _deck_gl_core__WEBPACK_IMPORTED_MODULE_5__[\"default\"]]\n    });\n  }\n\n  initializeState() {\n    this.getAttributeManager().addInstanced({\n      instancePositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getPosition'\n      },\n      instanceRadius: {\n        size: 1,\n        transition: true,\n        accessor: 'getRadius',\n        defaultValue: 1\n      },\n      instanceFillColors: {\n        size: this.props.colorFormat.length,\n        transition: true,\n        normalized: true,\n        type: 5121,\n        accessor: 'getFillColor',\n        defaultValue: [0, 0, 0, 255]\n      },\n      instanceLineColors: {\n        size: this.props.colorFormat.length,\n        transition: true,\n        normalized: true,\n        type: 5121,\n        accessor: 'getLineColor',\n        defaultValue: [0, 0, 0, 255]\n      },\n      instanceLineWidths: {\n        size: 1,\n        transition: true,\n        accessor: 'getLineWidth',\n        defaultValue: 1\n      }\n    });\n  }\n\n  updateState(params) {\n    super.updateState(params);\n\n    if (params.changeFlags.extensionsChanged) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      this.getAttributeManager().invalidateAll();\n    }\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      radiusUnits,\n      radiusScale,\n      radiusMinPixels,\n      radiusMaxPixels,\n      stroked,\n      filled,\n      billboard,\n      antialiasing,\n      lineWidthUnits,\n      lineWidthScale,\n      lineWidthMinPixels,\n      lineWidthMaxPixels\n    } = this.props;\n    this.state.model.setUniforms(uniforms).setUniforms({\n      stroked: stroked ? 1 : 0,\n      filled,\n      billboard,\n      antialiasing,\n      radiusUnits: _deck_gl_core__WEBPACK_IMPORTED_MODULE_6__.UNIT[radiusUnits],\n      radiusScale,\n      radiusMinPixels,\n      radiusMaxPixels,\n      lineWidthUnits: _deck_gl_core__WEBPACK_IMPORTED_MODULE_6__.UNIT[lineWidthUnits],\n      lineWidthScale,\n      lineWidthMinPixels,\n      lineWidthMaxPixels\n    }).draw();\n  }\n\n  _getModel(gl) {\n    const positions = [-1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0];\n    return new _luma_gl_core__WEBPACK_IMPORTED_MODULE_7__[\"default\"](gl, { ...this.getShaders(),\n      id: this.props.id,\n      geometry: new _luma_gl_core__WEBPACK_IMPORTED_MODULE_8__[\"default\"]({\n        drawMode: 6,\n        vertexCount: 4,\n        attributes: {\n          positions: {\n            size: 3,\n            value: new Float32Array(positions)\n          }\n        }\n      }),\n      isInstanced: true\n    });\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ScatterplotLayer, \"defaultProps\", defaultProps);\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ScatterplotLayer, \"layerName\", 'ScatterplotLayer');\n//# sourceMappingURL=scatterplot-layer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/polygon-tesselator.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/polygon-tesselator.js ***!
  \*****************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ PolygonTesselator; }\n/* harmony export */ });\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./polygon */ \"./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/polygon.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/utils/tesselator.js\");\n/* harmony import */ var _math_gl_polygon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/polygon */ \"./node_modules/@math.gl/polygon/dist/esm/index.js\");\n\n\n\nclass PolygonTesselator extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(opts) {\n    const {\n      fp64,\n      IndexType = Uint32Array\n    } = opts;\n    super({ ...opts,\n      attributes: {\n        positions: {\n          size: 3,\n          type: fp64 ? Float64Array : Float32Array\n        },\n        vertexValid: {\n          type: Uint8ClampedArray,\n          size: 1\n        },\n        indices: {\n          type: IndexType,\n          size: 1\n        }\n      }\n    });\n  }\n\n  get(attributeName) {\n    const {\n      attributes\n    } = this;\n\n    if (attributeName === 'indices') {\n      return attributes.indices && attributes.indices.subarray(0, this.vertexCount);\n    }\n\n    return attributes[attributeName];\n  }\n\n  updateGeometry(opts) {\n    super.updateGeometry(opts);\n    const externalIndices = this.buffers.indices;\n\n    if (externalIndices) {\n      this.vertexCount = (externalIndices.value || externalIndices).length;\n    } else if (this.data && !this.getGeometry) {\n      throw new Error('missing indices buffer');\n    }\n  }\n\n  normalizeGeometry(polygon) {\n    if (this.normalize) {\n      const normalizedPolygon = _polygon__WEBPACK_IMPORTED_MODULE_2__.normalize(polygon, this.positionSize);\n\n      if (this.opts.resolution) {\n        return (0,_math_gl_polygon__WEBPACK_IMPORTED_MODULE_0__.cutPolygonByGrid)(_polygon__WEBPACK_IMPORTED_MODULE_2__.getPositions(normalizedPolygon), _polygon__WEBPACK_IMPORTED_MODULE_2__.getHoleIndices(normalizedPolygon), {\n          size: this.positionSize,\n          gridResolution: this.opts.resolution,\n          edgeTypes: true\n        });\n      }\n\n      if (this.opts.wrapLongitude) {\n        return (0,_math_gl_polygon__WEBPACK_IMPORTED_MODULE_0__.cutPolygonByMercatorBounds)(_polygon__WEBPACK_IMPORTED_MODULE_2__.getPositions(normalizedPolygon), _polygon__WEBPACK_IMPORTED_MODULE_2__.getHoleIndices(normalizedPolygon), {\n          size: this.positionSize,\n          maxLatitude: 86,\n          edgeTypes: true\n        });\n      }\n\n      return normalizedPolygon;\n    }\n\n    return polygon;\n  }\n\n  getGeometrySize(polygon) {\n    if (isCut(polygon)) {\n      let size = 0;\n\n      for (const subPolygon of polygon) {\n        size += this.getGeometrySize(subPolygon);\n      }\n\n      return size;\n    }\n\n    return _polygon__WEBPACK_IMPORTED_MODULE_2__.getPositions(polygon).length / this.positionSize;\n  }\n\n  getGeometryFromBuffer(buffer) {\n    if (this.normalize || !this.buffers.indices) {\n      return super.getGeometryFromBuffer(buffer);\n    }\n\n    return null;\n  }\n\n  updateGeometryAttributes(polygon, context) {\n    if (polygon && isCut(polygon)) {\n      for (const subPolygon of polygon) {\n        const geometrySize = this.getGeometrySize(subPolygon);\n        context.geometrySize = geometrySize;\n        this.updateGeometryAttributes(subPolygon, context);\n        context.vertexStart += geometrySize;\n        context.indexStart = this.indexStarts[context.geometryIndex + 1];\n      }\n    } else {\n      this._updateIndices(polygon, context);\n\n      this._updatePositions(polygon, context);\n\n      this._updateVertexValid(polygon, context);\n    }\n  }\n\n  _updateIndices(polygon, {\n    geometryIndex,\n    vertexStart: offset,\n    indexStart\n  }) {\n    const {\n      attributes,\n      indexStarts,\n      typedArrayManager\n    } = this;\n    let target = attributes.indices;\n\n    if (!target || !polygon) {\n      return;\n    }\n\n    let i = indexStart;\n    const indices = _polygon__WEBPACK_IMPORTED_MODULE_2__.getSurfaceIndices(polygon, this.positionSize, this.opts.preproject);\n    target = typedArrayManager.allocate(target, indexStart + indices.length, {\n      copy: true\n    });\n\n    for (let j = 0; j < indices.length; j++) {\n      target[i++] = indices[j] + offset;\n    }\n\n    indexStarts[geometryIndex + 1] = indexStart + indices.length;\n    attributes.indices = target;\n  }\n\n  _updatePositions(polygon, {\n    vertexStart,\n    geometrySize\n  }) {\n    const {\n      attributes: {\n        positions\n      },\n      positionSize\n    } = this;\n\n    if (!positions || !polygon) {\n      return;\n    }\n\n    const polygonPositions = _polygon__WEBPACK_IMPORTED_MODULE_2__.getPositions(polygon);\n\n    for (let i = vertexStart, j = 0; j < geometrySize; i++, j++) {\n      const x = polygonPositions[j * positionSize];\n      const y = polygonPositions[j * positionSize + 1];\n      const z = positionSize > 2 ? polygonPositions[j * positionSize + 2] : 0;\n      positions[i * 3] = x;\n      positions[i * 3 + 1] = y;\n      positions[i * 3 + 2] = z;\n    }\n  }\n\n  _updateVertexValid(polygon, {\n    vertexStart,\n    geometrySize\n  }) {\n    const {\n      positionSize\n    } = this;\n    const vertexValid = this.attributes.vertexValid;\n    const holeIndices = polygon && _polygon__WEBPACK_IMPORTED_MODULE_2__.getHoleIndices(polygon);\n\n    if (polygon && polygon.edgeTypes) {\n      vertexValid.set(polygon.edgeTypes, vertexStart);\n    } else {\n      vertexValid.fill(1, vertexStart, vertexStart + geometrySize);\n    }\n\n    if (holeIndices) {\n      for (let j = 0; j < holeIndices.length; j++) {\n        vertexValid[vertexStart + holeIndices[j] / positionSize - 1] = 0;\n      }\n    }\n\n    vertexValid[vertexStart + geometrySize - 1] = 0;\n  }\n\n}\n\nfunction isCut(polygon) {\n  return Array.isArray(polygon) && polygon.length > 0 && !Number.isFinite(polygon[0]);\n}\n//# sourceMappingURL=polygon-tesselator.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/polygon-tesselator.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/polygon.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/polygon.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getHoleIndices\": function() { return /* binding */ getHoleIndices; },\n/* harmony export */   \"getPositions\": function() { return /* binding */ getPositions; },\n/* harmony export */   \"getSurfaceIndices\": function() { return /* binding */ getSurfaceIndices; },\n/* harmony export */   \"normalize\": function() { return /* binding */ normalize; }\n/* harmony export */ });\n/* harmony import */ var earcut__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! earcut */ \"./node_modules/earcut/src/earcut.js\");\n/* harmony import */ var earcut__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(earcut__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _math_gl_polygon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @math.gl/polygon */ \"./node_modules/@math.gl/polygon/dist/esm/index.js\");\n\n\nconst OUTER_POLYGON_WINDING = _math_gl_polygon__WEBPACK_IMPORTED_MODULE_1__.WINDING.CLOCKWISE;\nconst HOLE_POLYGON_WINDING = _math_gl_polygon__WEBPACK_IMPORTED_MODULE_1__.WINDING.COUNTER_CLOCKWISE;\nconst windingOptions = {\n  isClosed: true\n};\n\nfunction validate(polygon) {\n  polygon = polygon && polygon.positions || polygon;\n\n  if (!Array.isArray(polygon) && !ArrayBuffer.isView(polygon)) {\n    throw new Error('invalid polygon');\n  }\n}\n\nfunction getPositions(polygon) {\n  return 'positions' in polygon ? polygon.positions : polygon;\n}\nfunction getHoleIndices(polygon) {\n  return 'holeIndices' in polygon ? polygon.holeIndices : null;\n}\n\nfunction isNested(polygon) {\n  return Array.isArray(polygon[0]);\n}\n\nfunction isSimple(polygon) {\n  return polygon.length >= 1 && polygon[0].length >= 2 && Number.isFinite(polygon[0][0]);\n}\n\nfunction isNestedRingClosed(simplePolygon) {\n  const p0 = simplePolygon[0];\n  const p1 = simplePolygon[simplePolygon.length - 1];\n  return p0[0] === p1[0] && p0[1] === p1[1] && p0[2] === p1[2];\n}\n\nfunction isFlatRingClosed(positions, size, startIndex, endIndex) {\n  for (let i = 0; i < size; i++) {\n    if (positions[startIndex + i] !== positions[endIndex - size + i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction copyNestedRing(target, targetStartIndex, simplePolygon, size, windingDirection) {\n  let targetIndex = targetStartIndex;\n  const len = simplePolygon.length;\n\n  for (let i = 0; i < len; i++) {\n    for (let j = 0; j < size; j++) {\n      target[targetIndex++] = simplePolygon[i][j] || 0;\n    }\n  }\n\n  if (!isNestedRingClosed(simplePolygon)) {\n    for (let j = 0; j < size; j++) {\n      target[targetIndex++] = simplePolygon[0][j] || 0;\n    }\n  }\n\n  windingOptions.start = targetStartIndex;\n  windingOptions.end = targetIndex;\n  windingOptions.size = size;\n  (0,_math_gl_polygon__WEBPACK_IMPORTED_MODULE_1__.modifyPolygonWindingDirection)(target, windingDirection, windingOptions);\n  return targetIndex;\n}\n\nfunction copyFlatRing(target, targetStartIndex, positions, size, srcStartIndex = 0, srcEndIndex, windingDirection) {\n  srcEndIndex = srcEndIndex || positions.length;\n  const srcLength = srcEndIndex - srcStartIndex;\n\n  if (srcLength <= 0) {\n    return targetStartIndex;\n  }\n\n  let targetIndex = targetStartIndex;\n\n  for (let i = 0; i < srcLength; i++) {\n    target[targetIndex++] = positions[srcStartIndex + i];\n  }\n\n  if (!isFlatRingClosed(positions, size, srcStartIndex, srcEndIndex)) {\n    for (let i = 0; i < size; i++) {\n      target[targetIndex++] = positions[srcStartIndex + i];\n    }\n  }\n\n  windingOptions.start = targetStartIndex;\n  windingOptions.end = targetIndex;\n  windingOptions.size = size;\n  (0,_math_gl_polygon__WEBPACK_IMPORTED_MODULE_1__.modifyPolygonWindingDirection)(target, windingDirection, windingOptions);\n  return targetIndex;\n}\n\nfunction normalize(polygon, positionSize) {\n  validate(polygon);\n  const positions = [];\n  const holeIndices = [];\n\n  if ('positions' in polygon) {\n    const {\n      positions: srcPositions,\n      holeIndices: srcHoleIndices\n    } = polygon;\n\n    if (srcHoleIndices) {\n      let targetIndex = 0;\n\n      for (let i = 0; i <= srcHoleIndices.length; i++) {\n        targetIndex = copyFlatRing(positions, targetIndex, srcPositions, positionSize, srcHoleIndices[i - 1], srcHoleIndices[i], i === 0 ? OUTER_POLYGON_WINDING : HOLE_POLYGON_WINDING);\n        holeIndices.push(targetIndex);\n      }\n\n      holeIndices.pop();\n      return {\n        positions,\n        holeIndices\n      };\n    }\n\n    polygon = srcPositions;\n  }\n\n  if (!isNested(polygon)) {\n    copyFlatRing(positions, 0, polygon, positionSize, 0, positions.length, OUTER_POLYGON_WINDING);\n    return positions;\n  }\n\n  if (!isSimple(polygon)) {\n    let targetIndex = 0;\n\n    for (const [polygonIndex, simplePolygon] of polygon.entries()) {\n      targetIndex = copyNestedRing(positions, targetIndex, simplePolygon, positionSize, polygonIndex === 0 ? OUTER_POLYGON_WINDING : HOLE_POLYGON_WINDING);\n      holeIndices.push(targetIndex);\n    }\n\n    holeIndices.pop();\n    return {\n      positions,\n      holeIndices\n    };\n  }\n\n  copyNestedRing(positions, 0, polygon, positionSize, OUTER_POLYGON_WINDING);\n  return positions;\n}\nfunction getSurfaceIndices(polygon, positionSize, preproject) {\n  let holeIndices = getHoleIndices(polygon);\n\n  if (holeIndices) {\n    holeIndices = holeIndices.map(positionIndex => positionIndex / positionSize);\n  }\n\n  let positions = getPositions(polygon);\n\n  if (preproject) {\n    const n = positions.length;\n    positions = positions.slice();\n    const p = [];\n\n    for (let i = 0; i < n; i += positionSize) {\n      p[0] = positions[i];\n      p[1] = positions[i + 1];\n      const xy = preproject(p);\n      positions[i] = xy[0];\n      positions[i + 1] = xy[1];\n    }\n  }\n\n  return earcut__WEBPACK_IMPORTED_MODULE_0___default()(positions, holeIndices, positionSize);\n}\n//# sourceMappingURL=polygon.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/polygon.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-fragment.glsl.js":
/*!********************************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-fragment.glsl.js ***!
  \********************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME solid-polygon-layer-fragment-shader\\n\\nprecision highp float;\\n\\nvarying vec4 vColor;\\n\\nvoid main(void) {\\n  gl_FragColor = vColor;\\n\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\");\n//# sourceMappingURL=solid-polygon-layer-fragment.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-fragment.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-main.glsl.js":
/*!***********************************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-main.glsl.js ***!
  \***********************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"\\nattribute vec2 vertexPositions;\\nattribute float vertexValid;\\n\\nuniform bool extruded;\\nuniform bool isWireframe;\\nuniform float elevationScale;\\nuniform float opacity;\\n\\nvarying vec4 vColor;\\n\\nstruct PolygonProps {\\n  vec4 fillColors;\\n  vec4 lineColors;\\n  vec3 positions;\\n  vec3 nextPositions;\\n  vec3 pickingColors;\\n  vec3 positions64Low;\\n  vec3 nextPositions64Low;\\n  float elevations;\\n};\\n\\nvec3 project_offset_normal(vec3 vector) {\\n  if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\\n    project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSETS) {\\n    // normals generated by the polygon tesselator are in lnglat offsets instead of meters\\n    return normalize(vector * project_uCommonUnitsPerWorldUnit);\\n  }\\n  return project_normal(vector);\\n}\\n\\nvoid calculatePosition(PolygonProps props) {\\n#ifdef IS_SIDE_VERTEX\\n  if(vertexValid < 0.5){\\n    gl_Position = vec4(0.);\\n    return;\\n  }\\n#endif\\n\\n  vec3 pos;\\n  vec3 pos64Low;\\n  vec3 normal;\\n  vec4 colors = isWireframe ? props.lineColors : props.fillColors;\\n\\n  geometry.worldPosition = props.positions;\\n  geometry.worldPositionAlt = props.nextPositions;\\n  geometry.pickingColor = props.pickingColors;\\n\\n#ifdef IS_SIDE_VERTEX\\n  pos = mix(props.positions, props.nextPositions, vertexPositions.x);\\n  pos64Low = mix(props.positions64Low, props.nextPositions64Low, vertexPositions.x);\\n#else\\n  pos = props.positions;\\n  pos64Low = props.positions64Low;\\n#endif\\n\\n  if (extruded) {\\n    pos.z += props.elevations * vertexPositions.y * elevationScale;\\n  }\\n  gl_Position = project_position_to_clipspace(pos, pos64Low, vec3(0.), geometry.position);\\n\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n  if (extruded) {\\n  #ifdef IS_SIDE_VERTEX\\n    normal = vec3(\\n      props.positions.y - props.nextPositions.y + (props.positions64Low.y - props.nextPositions64Low.y),\\n      props.nextPositions.x - props.positions.x + (props.nextPositions64Low.x - props.positions64Low.x),\\n      0.0);\\n    normal = project_offset_normal(normal);\\n  #else\\n    normal = project_normal(vec3(0.0, 0.0, 1.0));\\n  #endif\\n    geometry.normal = normal;\\n    vec3 lightColor = lighting_getLightColor(colors.rgb, project_uCameraPosition, geometry.position.xyz, normal);\\n    vColor = vec4(lightColor, colors.a * opacity);\\n  } else {\\n    vColor = vec4(colors.rgb, colors.a * opacity);\\n  }\\n  DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\");\n//# sourceMappingURL=solid-polygon-layer-vertex-main.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-main.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-side.glsl.js":
/*!***********************************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-side.glsl.js ***!
  \***********************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _solid_polygon_layer_vertex_main_glsl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./solid-polygon-layer-vertex-main.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-main.glsl.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME solid-polygon-layer-vertex-shader-side\\n#define IS_SIDE_VERTEX\\n\\n\\nattribute vec3 instancePositions;\\nattribute vec3 nextPositions;\\nattribute vec3 instancePositions64Low;\\nattribute vec3 nextPositions64Low;\\nattribute float instanceElevations;\\nattribute vec4 instanceFillColors;\\nattribute vec4 instanceLineColors;\\nattribute vec3 instancePickingColors;\\n\\n\".concat(_solid_polygon_layer_vertex_main_glsl__WEBPACK_IMPORTED_MODULE_0__[\"default\"], \"\\n\\nvoid main(void) {\\n  PolygonProps props;\\n\\n  #if RING_WINDING_ORDER_CW == 1\\n    props.positions = instancePositions;\\n    props.positions64Low = instancePositions64Low;\\n    props.nextPositions = nextPositions;\\n    props.nextPositions64Low = nextPositions64Low;\\n  #else\\n    props.positions = nextPositions;\\n    props.positions64Low = nextPositions64Low;\\n    props.nextPositions = instancePositions;\\n    props.nextPositions64Low = instancePositions64Low;\\n  #endif\\n  props.elevations = instanceElevations;\\n  props.fillColors = instanceFillColors;\\n  props.lineColors = instanceLineColors;\\n  props.pickingColors = instancePickingColors;\\n\\n  calculatePosition(props);\\n}\\n\"));\n//# sourceMappingURL=solid-polygon-layer-vertex-side.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-side.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-top.glsl.js":
/*!**********************************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-top.glsl.js ***!
  \**********************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _solid_polygon_layer_vertex_main_glsl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./solid-polygon-layer-vertex-main.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-main.glsl.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME solid-polygon-layer-vertex-shader\\n\\nattribute vec3 positions;\\nattribute vec3 positions64Low;\\nattribute float elevations;\\nattribute vec4 fillColors;\\nattribute vec4 lineColors;\\nattribute vec3 pickingColors;\\n\\n\".concat(_solid_polygon_layer_vertex_main_glsl__WEBPACK_IMPORTED_MODULE_0__[\"default\"], \"\\n\\nvoid main(void) {\\n  PolygonProps props;\\n\\n  props.positions = positions;\\n  props.positions64Low = positions64Low;\\n  props.elevations = elevations;\\n  props.fillColors = fillColors;\\n  props.lineColors = lineColors;\\n  props.pickingColors = pickingColors;\\n\\n  calculatePosition(props);\\n}\\n\"));\n//# sourceMappingURL=solid-polygon-layer-vertex-top.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-top.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer.js ***!
  \******************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ SolidPolygonLayer; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/layer.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project32/project32.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/picking/picking.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/features/features.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/webgl/dist/esm/features/webgl-features-table.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/lib/model.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js\");\n/* harmony import */ var _polygon_tesselator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./polygon-tesselator */ \"./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/polygon-tesselator.js\");\n/* harmony import */ var _solid_polygon_layer_vertex_top_glsl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./solid-polygon-layer-vertex-top.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-top.glsl.js\");\n/* harmony import */ var _solid_polygon_layer_vertex_side_glsl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./solid-polygon-layer-vertex-side.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-side.glsl.js\");\n/* harmony import */ var _solid_polygon_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./solid-polygon-layer-fragment.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-fragment.glsl.js\");\n\n\n\n\n\n\n\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n  filled: true,\n  extruded: false,\n  wireframe: false,\n  _normalize: true,\n  _windingOrder: 'CW',\n  elevationScale: {\n    type: 'number',\n    min: 0,\n    value: 1\n  },\n  getPolygon: {\n    type: 'accessor',\n    value: f => f.polygon\n  },\n  getElevation: {\n    type: 'accessor',\n    value: 1000\n  },\n  getFillColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getLineColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  material: true\n};\nconst ATTRIBUTE_TRANSITION = {\n  enter: (value, chunk) => {\n    return chunk.length ? chunk.subarray(chunk.length - value.length) : value;\n  }\n};\nclass SolidPolygonLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(...args) {\n    super(...args);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"state\", void 0);\n  }\n\n  getShaders(type) {\n    return super.getShaders({\n      vs: type === 'top' ? _solid_polygon_layer_vertex_top_glsl__WEBPACK_IMPORTED_MODULE_2__[\"default\"] : _solid_polygon_layer_vertex_side_glsl__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      fs: _solid_polygon_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n      defines: {\n        RING_WINDING_ORDER_CW: !this.props._normalize && this.props._windingOrder === 'CCW' ? 0 : 1\n      },\n      modules: [_deck_gl_core__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _deck_gl_core__WEBPACK_IMPORTED_MODULE_6__.gouraudLighting, _deck_gl_core__WEBPACK_IMPORTED_MODULE_7__[\"default\"]]\n    });\n  }\n\n  get wrapLongitude() {\n    return false;\n  }\n\n  initializeState() {\n    const {\n      gl,\n      viewport\n    } = this.context;\n    let {\n      coordinateSystem\n    } = this.props;\n\n    if (viewport.isGeospatial && coordinateSystem === _deck_gl_core__WEBPACK_IMPORTED_MODULE_8__.COORDINATE_SYSTEM.DEFAULT) {\n      coordinateSystem = _deck_gl_core__WEBPACK_IMPORTED_MODULE_8__.COORDINATE_SYSTEM.LNGLAT;\n    }\n\n    this.setState({\n      numInstances: 0,\n      polygonTesselator: new _polygon_tesselator__WEBPACK_IMPORTED_MODULE_9__[\"default\"]({\n        preproject: coordinateSystem === _deck_gl_core__WEBPACK_IMPORTED_MODULE_8__.COORDINATE_SYSTEM.LNGLAT && viewport.projectFlat.bind(viewport),\n        fp64: this.use64bitPositions(),\n        IndexType: !gl || (0,_luma_gl_core__WEBPACK_IMPORTED_MODULE_10__.hasFeatures)(gl, _luma_gl_core__WEBPACK_IMPORTED_MODULE_11__.FEATURES.ELEMENT_INDEX_UINT32) ? Uint32Array : Uint16Array\n      })\n    });\n    const attributeManager = this.getAttributeManager();\n    const noAlloc = true;\n    attributeManager.remove(['instancePickingColors']);\n    attributeManager.add({\n      indices: {\n        size: 1,\n        isIndexed: true,\n        update: this.calculateIndices,\n        noAlloc\n      },\n      positions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: ATTRIBUTE_TRANSITION,\n        accessor: 'getPolygon',\n        update: this.calculatePositions,\n        noAlloc,\n        shaderAttributes: {\n          positions: {\n            vertexOffset: 0,\n            divisor: 0\n          },\n          instancePositions: {\n            vertexOffset: 0,\n            divisor: 1\n          },\n          nextPositions: {\n            vertexOffset: 1,\n            divisor: 1\n          }\n        }\n      },\n      vertexValid: {\n        size: 1,\n        divisor: 1,\n        type: 5121,\n        update: this.calculateVertexValid,\n        noAlloc\n      },\n      elevations: {\n        size: 1,\n        transition: ATTRIBUTE_TRANSITION,\n        accessor: 'getElevation',\n        shaderAttributes: {\n          elevations: {\n            divisor: 0\n          },\n          instanceElevations: {\n            divisor: 1\n          }\n        }\n      },\n      fillColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: ATTRIBUTE_TRANSITION,\n        accessor: 'getFillColor',\n        defaultValue: DEFAULT_COLOR,\n        shaderAttributes: {\n          fillColors: {\n            divisor: 0\n          },\n          instanceFillColors: {\n            divisor: 1\n          }\n        }\n      },\n      lineColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: ATTRIBUTE_TRANSITION,\n        accessor: 'getLineColor',\n        defaultValue: DEFAULT_COLOR,\n        shaderAttributes: {\n          lineColors: {\n            divisor: 0\n          },\n          instanceLineColors: {\n            divisor: 1\n          }\n        }\n      },\n      pickingColors: {\n        size: 3,\n        type: 5121,\n        accessor: (object, {\n          index,\n          target: value\n        }) => this.encodePickingColor(object && object.__source ? object.__source.index : index, value),\n        shaderAttributes: {\n          pickingColors: {\n            divisor: 0\n          },\n          instancePickingColors: {\n            divisor: 1\n          }\n        }\n      }\n    });\n  }\n\n  getPickingInfo(params) {\n    const info = super.getPickingInfo(params);\n    const {\n      index\n    } = info;\n    const {\n      data\n    } = this.props;\n\n    if (data[0] && data[0].__source) {\n      info.object = data.find(d => d.__source.index === index);\n    }\n\n    return info;\n  }\n\n  disablePickingIndex(objectIndex) {\n    const {\n      data\n    } = this.props;\n\n    if (data[0] && data[0].__source) {\n      for (let i = 0; i < data.length; i++) {\n        if (data[i].__source.index === objectIndex) {\n          this._disablePickingIndex(i);\n        }\n      }\n    } else {\n      this._disablePickingIndex(objectIndex);\n    }\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      extruded,\n      filled,\n      wireframe,\n      elevationScale\n    } = this.props;\n    const {\n      topModel,\n      sideModel,\n      polygonTesselator\n    } = this.state;\n    const renderUniforms = { ...uniforms,\n      extruded: Boolean(extruded),\n      elevationScale\n    };\n\n    if (sideModel) {\n      sideModel.setInstanceCount(polygonTesselator.instanceCount - 1);\n      sideModel.setUniforms(renderUniforms);\n\n      if (wireframe) {\n        sideModel.setDrawMode(3);\n        sideModel.setUniforms({\n          isWireframe: true\n        }).draw();\n      }\n\n      if (filled) {\n        sideModel.setDrawMode(6);\n        sideModel.setUniforms({\n          isWireframe: false\n        }).draw();\n      }\n    }\n\n    if (topModel) {\n      topModel.setVertexCount(polygonTesselator.vertexCount);\n      topModel.setUniforms(renderUniforms).draw();\n    }\n  }\n\n  updateState(updateParams) {\n    super.updateState(updateParams);\n    this.updateGeometry(updateParams);\n    const {\n      props,\n      oldProps,\n      changeFlags\n    } = updateParams;\n    const attributeManager = this.getAttributeManager();\n    const regenerateModels = changeFlags.extensionsChanged || props.filled !== oldProps.filled || props.extruded !== oldProps.extruded;\n\n    if (regenerateModels) {\n      var _this$state$models;\n\n      (_this$state$models = this.state.models) === null || _this$state$models === void 0 ? void 0 : _this$state$models.forEach(model => model.delete());\n      this.setState(this._getModels(this.context.gl));\n      attributeManager.invalidateAll();\n    }\n  }\n\n  updateGeometry({\n    props,\n    oldProps,\n    changeFlags\n  }) {\n    const geometryConfigChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPolygon);\n\n    if (geometryConfigChanged) {\n      const {\n        polygonTesselator\n      } = this.state;\n      const buffers = props.data.attributes || {};\n      polygonTesselator.updateGeometry({\n        data: props.data,\n        normalize: props._normalize,\n        geometryBuffer: buffers.getPolygon,\n        buffers,\n        getGeometry: props.getPolygon,\n        positionFormat: props.positionFormat,\n        wrapLongitude: props.wrapLongitude,\n        resolution: this.context.viewport.resolution,\n        fp64: this.use64bitPositions(),\n        dataChanged: changeFlags.dataChanged\n      });\n      this.setState({\n        numInstances: polygonTesselator.instanceCount,\n        startIndices: polygonTesselator.vertexStarts\n      });\n\n      if (!changeFlags.dataChanged) {\n        this.getAttributeManager().invalidateAll();\n      }\n    }\n  }\n\n  _getModels(gl) {\n    const {\n      id,\n      filled,\n      extruded\n    } = this.props;\n    let topModel;\n    let sideModel;\n\n    if (filled) {\n      const shaders = this.getShaders('top');\n      shaders.defines.NON_INSTANCED_MODEL = 1;\n      topModel = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_12__[\"default\"](gl, { ...shaders,\n        id: \"\".concat(id, \"-top\"),\n        drawMode: 4,\n        attributes: {\n          vertexPositions: new Float32Array([0, 1])\n        },\n        uniforms: {\n          isWireframe: false,\n          isSideVertex: false\n        },\n        vertexCount: 0,\n        isIndexed: true\n      });\n    }\n\n    if (extruded) {\n      sideModel = new _luma_gl_core__WEBPACK_IMPORTED_MODULE_12__[\"default\"](gl, { ...this.getShaders('side'),\n        id: \"\".concat(id, \"-side\"),\n        geometry: new _luma_gl_core__WEBPACK_IMPORTED_MODULE_13__[\"default\"]({\n          drawMode: 1,\n          vertexCount: 4,\n          attributes: {\n            vertexPositions: {\n              size: 2,\n              value: new Float32Array([1, 0, 0, 0, 0, 1, 1, 1])\n            }\n          }\n        }),\n        instanceCount: 0,\n        isInstanced: 1\n      });\n      sideModel.userData.excludeAttributes = {\n        indices: true\n      };\n    }\n\n    return {\n      models: [sideModel, topModel].filter(Boolean),\n      topModel,\n      sideModel\n    };\n  }\n\n  calculateIndices(attribute) {\n    const {\n      polygonTesselator\n    } = this.state;\n    attribute.startIndices = polygonTesselator.indexStarts;\n    attribute.value = polygonTesselator.get('indices');\n  }\n\n  calculatePositions(attribute) {\n    const {\n      polygonTesselator\n    } = this.state;\n    attribute.startIndices = polygonTesselator.vertexStarts;\n    attribute.value = polygonTesselator.get('positions');\n  }\n\n  calculateVertexValid(attribute) {\n    attribute.value = this.state.polygonTesselator.get('vertexValid');\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(SolidPolygonLayer, \"defaultProps\", defaultProps);\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(SolidPolygonLayer, \"layerName\", 'SolidPolygonLayer');\n//# sourceMappingURL=solid-polygon-layer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/text-layer/font-atlas-manager.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/text-layer/font-atlas-manager.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DEFAULT_FONT_SETTINGS\": function() { return /* binding */ DEFAULT_FONT_SETTINGS; },\n/* harmony export */   \"default\": function() { return /* binding */ FontAtlasManager; },\n/* harmony export */   \"setFontAtlasCacheLimit\": function() { return /* binding */ setFontAtlasCacheLimit; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _mapbox_tiny_sdf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mapbox/tiny-sdf */ \"./node_modules/@mapbox/tiny-sdf/index.js\");\n/* harmony import */ var _mapbox_tiny_sdf__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_mapbox_tiny_sdf__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils */ \"./node_modules/@deck.gl/layers/dist/esm/text-layer/utils.js\");\n/* harmony import */ var _lru_cache__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lru-cache */ \"./node_modules/@deck.gl/layers/dist/esm/text-layer/lru-cache.js\");\n\n\n\n\n\n\nfunction getDefaultCharacterSet() {\n  const charSet = [];\n\n  for (let i = 32; i < 128; i++) {\n    charSet.push(String.fromCharCode(i));\n  }\n\n  return charSet;\n}\n\nconst DEFAULT_FONT_SETTINGS = {\n  fontFamily: 'Monaco, monospace',\n  fontWeight: 'normal',\n  characterSet: getDefaultCharacterSet(),\n  fontSize: 64,\n  buffer: 4,\n  sdf: false,\n  cutoff: 0.25,\n  radius: 12,\n  smoothing: 0.1\n};\nconst MAX_CANVAS_WIDTH = 1024;\nconst BASELINE_SCALE = 0.9;\nconst HEIGHT_SCALE = 1.2;\nconst CACHE_LIMIT = 3;\nlet cache = new _lru_cache__WEBPACK_IMPORTED_MODULE_2__[\"default\"](CACHE_LIMIT);\n\nfunction getNewChars(cacheKey, characterSet) {\n  let newCharSet;\n\n  if (typeof characterSet === 'string') {\n    newCharSet = new Set(Array.from(characterSet));\n  } else {\n    newCharSet = new Set(characterSet);\n  }\n\n  const cachedFontAtlas = cache.get(cacheKey);\n\n  if (!cachedFontAtlas) {\n    return newCharSet;\n  }\n\n  for (const char in cachedFontAtlas.mapping) {\n    if (newCharSet.has(char)) {\n      newCharSet.delete(char);\n    }\n  }\n\n  return newCharSet;\n}\n\nfunction populateAlphaChannel(alphaChannel, imageData) {\n  for (let i = 0; i < alphaChannel.length; i++) {\n    imageData.data[4 * i + 3] = alphaChannel[i];\n  }\n}\n\nfunction setTextStyle(ctx, fontFamily, fontSize, fontWeight) {\n  ctx.font = \"\".concat(fontWeight, \" \").concat(fontSize, \"px \").concat(fontFamily);\n  ctx.fillStyle = '#000';\n  ctx.textBaseline = 'alphabetic';\n  ctx.textAlign = 'left';\n}\n\nfunction setFontAtlasCacheLimit(limit) {\n  _deck_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"].assert(Number.isFinite(limit) && limit >= CACHE_LIMIT, 'Invalid cache limit');\n  cache = new _lru_cache__WEBPACK_IMPORTED_MODULE_2__[\"default\"](limit);\n}\nclass FontAtlasManager {\n  constructor() {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"props\", { ...DEFAULT_FONT_SETTINGS\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_key\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_atlas\", void 0);\n  }\n\n  get texture() {\n    return this._atlas;\n  }\n\n  get mapping() {\n    return this._atlas && this._atlas.mapping;\n  }\n\n  get scale() {\n    return HEIGHT_SCALE;\n  }\n\n  setProps(props = {}) {\n    Object.assign(this.props, props);\n    const oldKey = this._key;\n    this._key = this._getKey();\n    const charSet = getNewChars(this._key, this.props.characterSet);\n    const cachedFontAtlas = cache.get(this._key);\n\n    if (cachedFontAtlas && charSet.size === 0) {\n      if (this._key !== oldKey) {\n        this._atlas = cachedFontAtlas;\n      }\n\n      return;\n    }\n\n    const fontAtlas = this._generateFontAtlas(this._key, charSet, cachedFontAtlas);\n\n    this._atlas = fontAtlas;\n    cache.set(this._key, fontAtlas);\n  }\n\n  _generateFontAtlas(key, characterSet, cachedFontAtlas) {\n    const {\n      fontFamily,\n      fontWeight,\n      fontSize,\n      buffer,\n      sdf,\n      radius,\n      cutoff\n    } = this.props;\n    let canvas = cachedFontAtlas && cachedFontAtlas.data;\n\n    if (!canvas) {\n      canvas = document.createElement('canvas');\n      canvas.width = MAX_CANVAS_WIDTH;\n    }\n\n    const ctx = canvas.getContext('2d');\n    setTextStyle(ctx, fontFamily, fontSize, fontWeight);\n    const {\n      mapping,\n      canvasHeight,\n      xOffset,\n      yOffset\n    } = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.buildMapping)({\n      getFontWidth: char => ctx.measureText(char).width,\n      fontHeight: fontSize * HEIGHT_SCALE,\n      buffer,\n      characterSet,\n      maxCanvasWidth: MAX_CANVAS_WIDTH,\n      ...(cachedFontAtlas && {\n        mapping: cachedFontAtlas.mapping,\n        xOffset: cachedFontAtlas.xOffset,\n        yOffset: cachedFontAtlas.yOffset\n      })\n    });\n\n    if (canvas.height !== canvasHeight) {\n      const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n      canvas.height = canvasHeight;\n      ctx.putImageData(imageData, 0, 0);\n    }\n\n    setTextStyle(ctx, fontFamily, fontSize, fontWeight);\n\n    if (sdf) {\n      const tinySDF = new (_mapbox_tiny_sdf__WEBPACK_IMPORTED_MODULE_1___default())(fontSize, buffer, radius, cutoff, fontFamily, fontWeight);\n      const imageData = ctx.getImageData(0, 0, tinySDF.size, tinySDF.size);\n\n      for (const char of characterSet) {\n        populateAlphaChannel(tinySDF.draw(char), imageData);\n        ctx.putImageData(imageData, mapping[char].x - buffer, mapping[char].y + buffer);\n      }\n    } else {\n      for (const char of characterSet) {\n        ctx.fillText(char, mapping[char].x, mapping[char].y + fontSize * BASELINE_SCALE);\n      }\n    }\n\n    return {\n      xOffset,\n      yOffset,\n      mapping,\n      data: canvas,\n      width: canvas.width,\n      height: canvas.height\n    };\n  }\n\n  _getKey() {\n    const {\n      fontFamily,\n      fontWeight,\n      fontSize,\n      buffer,\n      sdf,\n      radius,\n      cutoff\n    } = this.props;\n\n    if (sdf) {\n      return \"\".concat(fontFamily, \" \").concat(fontWeight, \" \").concat(fontSize, \" \").concat(buffer, \" \").concat(radius, \" \").concat(cutoff);\n    }\n\n    return \"\".concat(fontFamily, \" \").concat(fontWeight, \" \").concat(fontSize, \" \").concat(buffer);\n  }\n\n}\n//# sourceMappingURL=font-atlas-manager.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/text-layer/font-atlas-manager.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/text-layer/lru-cache.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/text-layer/lru-cache.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ LRUCache; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\nclass LRUCache {\n  constructor(limit = 5) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"limit\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_cache\", {});\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_order\", []);\n\n    this.limit = limit;\n  }\n\n  get(key) {\n    const value = this._cache[key];\n\n    if (value) {\n      this._deleteOrder(key);\n\n      this._appendOrder(key);\n    }\n\n    return value;\n  }\n\n  set(key, value) {\n    if (!this._cache[key]) {\n      if (Object.keys(this._cache).length === this.limit) {\n        this.delete(this._order[0]);\n      }\n\n      this._cache[key] = value;\n\n      this._appendOrder(key);\n    } else {\n      this.delete(key);\n      this._cache[key] = value;\n\n      this._appendOrder(key);\n    }\n  }\n\n  delete(key) {\n    const value = this._cache[key];\n\n    if (value) {\n      delete this._cache[key];\n\n      this._deleteOrder(key);\n    }\n  }\n\n  _deleteOrder(key) {\n    const index = this._order.indexOf(key);\n\n    if (index >= 0) {\n      this._order.splice(index, 1);\n    }\n  }\n\n  _appendOrder(key) {\n    this._order.push(key);\n  }\n\n}\n//# sourceMappingURL=lru-cache.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/text-layer/lru-cache.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/text-layer/multi-icon-layer/multi-icon-layer-fragment.glsl.js":
/*!*************************************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/text-layer/multi-icon-layer/multi-icon-layer-fragment.glsl.js ***!
  \*************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME multi-icon-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform float opacity;\\nuniform sampler2D iconsTexture;\\nuniform float gamma;\\nuniform bool sdf;\\nuniform float alphaCutoff;\\nuniform float buffer;\\nuniform float outlineBuffer;\\nuniform vec4 outlineColor;\\n\\nvarying vec4 vColor;\\nvarying vec2 vTextureCoords;\\nvarying vec2 uv;\\n\\nvoid main(void) {\\n  geometry.uv = uv;\\n\\n  if (!picking_uActive) {\\n    float alpha = texture2D(iconsTexture, vTextureCoords).a;\\n    vec4 color = vColor;\\n\\n    // if enable sdf (signed distance fields)\\n    if (sdf) {\\n      float distance = alpha;\\n      alpha = smoothstep(buffer - gamma, buffer + gamma, distance);\\n\\n      if (outlineBuffer > 0.0) {\\n        float inFill = alpha;\\n        float inBorder = smoothstep(outlineBuffer - gamma, outlineBuffer + gamma, distance);\\n        color = mix(outlineColor, vColor, inFill);\\n        alpha = inBorder;\\n      }\\n    }\\n\\n    // Take the global opacity and the alpha from color into account for the alpha component\\n    float a = alpha * color.a;\\n    \\n    if (a < alphaCutoff) {\\n      discard;\\n    }\\n\\n    gl_FragColor = vec4(color.rgb, a * opacity);\\n  }\\n\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\");\n//# sourceMappingURL=multi-icon-layer-fragment.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/text-layer/multi-icon-layer/multi-icon-layer-fragment.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/text-layer/multi-icon-layer/multi-icon-layer.js":
/*!***********************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/text-layer/multi-icon-layer/multi-icon-layer.js ***!
  \***********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ MultiIconLayer; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n/* harmony import */ var _icon_layer_icon_layer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../icon-layer/icon-layer */ \"./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer.js\");\n/* harmony import */ var _multi_icon_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./multi-icon-layer-fragment.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/text-layer/multi-icon-layer/multi-icon-layer-fragment.glsl.js\");\n\n\n\n\nconst DEFAULT_BUFFER = 192.0 / 256;\nconst EMPTY_ARRAY = [];\nconst defaultProps = {\n  getIconOffsets: {\n    type: 'accessor',\n    value: x => x.offsets\n  },\n  alphaCutoff: 0.001,\n  smoothing: 0.1,\n  outlineWidth: 0,\n  outlineColor: {\n    type: 'color',\n    value: [0, 0, 0, 255]\n  }\n};\nclass MultiIconLayer extends _icon_layer_icon_layer__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(...args) {\n    super(...args);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"state\", void 0);\n  }\n\n  getShaders() {\n    return { ...super.getShaders(),\n      fs: _multi_icon_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n    };\n  }\n\n  initializeState() {\n    super.initializeState();\n    const attributeManager = this.getAttributeManager();\n    attributeManager.addInstanced({\n      instanceOffsets: {\n        size: 2,\n        accessor: 'getIconOffsets'\n      },\n      instancePickingColors: {\n        type: 5121,\n        size: 3,\n        accessor: (object, {\n          index,\n          target: value\n        }) => this.encodePickingColor(index, value)\n      }\n    });\n  }\n\n  updateState(params) {\n    super.updateState(params);\n    const {\n      props,\n      oldProps\n    } = params;\n    let {\n      outlineColor\n    } = props;\n\n    if (outlineColor !== oldProps.outlineColor) {\n      outlineColor = outlineColor.map(x => x / 255);\n      outlineColor[3] = Number.isFinite(outlineColor[3]) ? outlineColor[3] : 1;\n      this.setState({\n        outlineColor\n      });\n    }\n\n    if (!props.sdf && props.outlineWidth) {\n      _deck_gl_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"].warn(\"\".concat(this.id, \": fontSettings.sdf is required to render outline\"))();\n    }\n  }\n\n  draw(params) {\n    const {\n      sdf,\n      smoothing,\n      outlineWidth\n    } = this.props;\n    const {\n      outlineColor\n    } = this.state;\n    params.uniforms = { ...params.uniforms,\n      buffer: DEFAULT_BUFFER,\n      outlineBuffer: outlineWidth ? Math.max(smoothing, DEFAULT_BUFFER * (1 - outlineWidth)) : -1,\n      gamma: smoothing,\n      sdf: Boolean(sdf),\n      outlineColor\n    };\n    super.draw(params);\n  }\n\n  getInstanceOffset(icons) {\n    return icons ? Array.from(icons).flatMap(icon => super.getInstanceOffset(icon)) : EMPTY_ARRAY;\n  }\n\n  getInstanceColorMode(icons) {\n    return 1;\n  }\n\n  getInstanceIconFrame(icons) {\n    return icons ? Array.from(icons).flatMap(icon => super.getInstanceIconFrame(icon)) : EMPTY_ARRAY;\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(MultiIconLayer, \"defaultProps\", defaultProps);\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(MultiIconLayer, \"layerName\", 'MultiIconLayer');\n//# sourceMappingURL=multi-icon-layer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/text-layer/multi-icon-layer/multi-icon-layer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer-fragment.glsl.js":
/*!***********************************************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer-fragment.glsl.js ***!
  \***********************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME text-background-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform bool stroked;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying float vLineWidth;\\nvarying vec2 uv;\\nvarying vec2 dimensions;\\n\\nvoid main(void) {\\n  geometry.uv = uv;\\n\\n  vec2 pixelPosition = uv * dimensions;\\n  if (stroked) {\\n    float distToEdge = min(\\n      min(pixelPosition.x, dimensions.x - pixelPosition.x),\\n      min(pixelPosition.y, dimensions.y - pixelPosition.y)\\n    );\\n    float isBorder = smoothedge(distToEdge, vLineWidth);\\n    gl_FragColor = mix(vFillColor, vLineColor, isBorder);\\n  } else {\\n    gl_FragColor = vFillColor;\\n  }\\n\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\");\n//# sourceMappingURL=text-background-layer-fragment.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer-fragment.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer-vertex.glsl.js":
/*!*********************************************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer-vertex.glsl.js ***!
  \*********************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#define SHADER_NAME text-background-layer-vertex-shader\\n\\nattribute vec2 positions;\\n\\nattribute vec3 instancePositions;\\nattribute vec3 instancePositions64Low;\\nattribute vec4 instanceRects;\\nattribute float instanceSizes;\\nattribute float instanceAngles;\\nattribute vec2 instancePixelOffsets;\\nattribute float instanceLineWidths;\\nattribute vec4 instanceFillColors;\\nattribute vec4 instanceLineColors;\\nattribute vec3 instancePickingColors;\\n\\nuniform bool billboard;\\nuniform float opacity;\\nuniform float sizeScale;\\nuniform float sizeMinPixels;\\nuniform float sizeMaxPixels;\\nuniform vec4 padding;\\nuniform int sizeUnits;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying float vLineWidth;\\nvarying vec2 uv;\\nvarying vec2 dimensions;\\n\\nvec2 rotate_by_angle(vec2 vertex, float angle) {\\n  float angle_radian = radians(angle);\\n  float cos_angle = cos(angle_radian);\\n  float sin_angle = sin(angle_radian);\\n  mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\\n  return rotationMatrix * vertex;\\n}\\n\\nvoid main(void) {\\n  geometry.worldPosition = instancePositions;\\n  geometry.uv = positions;\\n  geometry.pickingColor = instancePickingColors;\\n  uv = positions;\\n  vLineWidth = instanceLineWidths;\\n\\n  // convert size in meters to pixels, then scaled and clamp\\n\\n  // project meters to pixels and clamp to limits\\n  float sizePixels = clamp(\\n    project_size_to_pixel(instanceSizes * sizeScale, sizeUnits),\\n    sizeMinPixels, sizeMaxPixels\\n  );\\n\\n  dimensions = instanceRects.zw * sizePixels + padding.xy + padding.zw;\\n\\n  vec2 pixelOffset = (positions * instanceRects.zw + instanceRects.xy) * sizePixels + mix(-padding.xy, padding.zw, positions);\\n  pixelOffset = rotate_by_angle(pixelOffset, instanceAngles);\\n  pixelOffset += instancePixelOffsets;\\n  pixelOffset.y *= -1.0;\\n\\n  if (billboard)  {\\n    gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\\n    vec3 offset = vec3(pixelOffset, 0.0);\\n    DECKGL_FILTER_SIZE(offset, geometry);\\n    gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\\n  } else {\\n    vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\\n    DECKGL_FILTER_SIZE(offset_common, geometry);\\n    gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position);\\n  }\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n  // Apply opacity to instance color, or return instance picking color\\n  vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\\n  DECKGL_FILTER_COLOR(vFillColor, geometry);\\n  vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\\n  DECKGL_FILTER_COLOR(vLineColor, geometry);\\n}\\n\");\n//# sourceMappingURL=text-background-layer-vertex.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer-vertex.glsl.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer.js":
/*!*********************************************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer.js ***!
  \*********************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ TextBackgroundLayer; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/layer.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/project32/project32.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/shaderlib/picking/picking.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/constants.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/lib/model.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js\");\n/* harmony import */ var _text_background_layer_vertex_glsl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./text-background-layer-vertex.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer-vertex.glsl.js\");\n/* harmony import */ var _text_background_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./text-background-layer-fragment.glsl */ \"./node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer-fragment.glsl.js\");\n\n\n\n\n\nconst defaultProps = {\n  billboard: true,\n  sizeScale: 1,\n  sizeUnits: 'pixels',\n  sizeMinPixels: 0,\n  sizeMaxPixels: Number.MAX_SAFE_INTEGER,\n  padding: {\n    type: 'array',\n    value: [0, 0, 0, 0]\n  },\n  getPosition: {\n    type: 'accessor',\n    value: x => x.position\n  },\n  getSize: {\n    type: 'accessor',\n    value: 1\n  },\n  getAngle: {\n    type: 'accessor',\n    value: 0\n  },\n  getPixelOffset: {\n    type: 'accessor',\n    value: [0, 0]\n  },\n  getBoundingRect: {\n    type: 'accessor',\n    value: [0, 0, 0, 0]\n  },\n  getFillColor: {\n    type: 'accessor',\n    value: [0, 0, 0, 255]\n  },\n  getLineColor: {\n    type: 'accessor',\n    value: [0, 0, 0, 255]\n  },\n  getLineWidth: {\n    type: 'accessor',\n    value: 1\n  }\n};\nclass TextBackgroundLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  constructor(...args) {\n    super(...args);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"state\", void 0);\n  }\n\n  getShaders() {\n    return super.getShaders({\n      vs: _text_background_layer_vertex_glsl__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n      fs: _text_background_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      modules: [_deck_gl_core__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _deck_gl_core__WEBPACK_IMPORTED_MODULE_5__[\"default\"]]\n    });\n  }\n\n  initializeState() {\n    this.getAttributeManager().addInstanced({\n      instancePositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getPosition'\n      },\n      instanceSizes: {\n        size: 1,\n        transition: true,\n        accessor: 'getSize',\n        defaultValue: 1\n      },\n      instanceAngles: {\n        size: 1,\n        transition: true,\n        accessor: 'getAngle'\n      },\n      instanceRects: {\n        size: 4,\n        accessor: 'getBoundingRect'\n      },\n      instancePixelOffsets: {\n        size: 2,\n        transition: true,\n        accessor: 'getPixelOffset'\n      },\n      instanceFillColors: {\n        size: 4,\n        transition: true,\n        normalized: true,\n        type: 5121,\n        accessor: 'getFillColor',\n        defaultValue: [0, 0, 0, 255]\n      },\n      instanceLineColors: {\n        size: 4,\n        transition: true,\n        normalized: true,\n        type: 5121,\n        accessor: 'getLineColor',\n        defaultValue: [0, 0, 0, 255]\n      },\n      instanceLineWidths: {\n        size: 1,\n        transition: true,\n        accessor: 'getLineWidth',\n        defaultValue: 1\n      }\n    });\n  }\n\n  updateState(params) {\n    super.updateState(params);\n    const {\n      changeFlags\n    } = params;\n\n    if (changeFlags.extensionsChanged) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      this.getAttributeManager().invalidateAll();\n    }\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      billboard,\n      sizeScale,\n      sizeUnits,\n      sizeMinPixels,\n      sizeMaxPixels,\n      getLineWidth\n    } = this.props;\n    let {\n      padding\n    } = this.props;\n\n    if (padding.length < 4) {\n      padding = [padding[0], padding[1], padding[0], padding[1]];\n    }\n\n    this.state.model.setUniforms(uniforms).setUniforms({\n      billboard,\n      stroked: Boolean(getLineWidth),\n      padding,\n      sizeUnits: _deck_gl_core__WEBPACK_IMPORTED_MODULE_6__.UNIT[sizeUnits],\n      sizeScale,\n      sizeMinPixels,\n      sizeMaxPixels\n    }).draw();\n  }\n\n  _getModel(gl) {\n    const positions = [0, 0, 1, 0, 1, 1, 0, 1];\n    return new _luma_gl_core__WEBPACK_IMPORTED_MODULE_7__[\"default\"](gl, { ...this.getShaders(),\n      id: this.props.id,\n      geometry: new _luma_gl_core__WEBPACK_IMPORTED_MODULE_8__[\"default\"]({\n        drawMode: 6,\n        vertexCount: 4,\n        attributes: {\n          positions: {\n            size: 2,\n            value: new Float32Array(positions)\n          }\n        }\n      }),\n      isInstanced: true\n    });\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(TextBackgroundLayer, \"defaultProps\", defaultProps);\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(TextBackgroundLayer, \"layerName\", 'TextBackgroundLayer');\n//# sourceMappingURL=text-background-layer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/text-layer/text-layer.js":
/*!************************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/text-layer/text-layer.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ TextLayer; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/lib/composite-layer.js\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/utils/iterable-utils.js\");\n/* harmony import */ var _multi_icon_layer_multi_icon_layer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./multi-icon-layer/multi-icon-layer */ \"./node_modules/@deck.gl/layers/dist/esm/text-layer/multi-icon-layer/multi-icon-layer.js\");\n/* harmony import */ var _font_atlas_manager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./font-atlas-manager */ \"./node_modules/@deck.gl/layers/dist/esm/text-layer/font-atlas-manager.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ \"./node_modules/@deck.gl/layers/dist/esm/text-layer/utils.js\");\n/* harmony import */ var _text_background_layer_text_background_layer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./text-background-layer/text-background-layer */ \"./node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer.js\");\n\n\n\n\n\n\nconst TEXT_ANCHOR = {\n  start: 1,\n  middle: 0,\n  end: -1\n};\nconst ALIGNMENT_BASELINE = {\n  top: 1,\n  center: 0,\n  bottom: -1\n};\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst DEFAULT_LINE_HEIGHT = 1.0;\nconst defaultProps = {\n  billboard: true,\n  sizeScale: 1,\n  sizeUnits: 'pixels',\n  sizeMinPixels: 0,\n  sizeMaxPixels: Number.MAX_SAFE_INTEGER,\n  background: false,\n  getBackgroundColor: {\n    type: 'accessor',\n    value: [255, 255, 255, 255]\n  },\n  getBorderColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getBorderWidth: {\n    type: 'accessor',\n    value: 0\n  },\n  backgroundPadding: {\n    type: 'array',\n    value: [0, 0, 0, 0]\n  },\n  characterSet: {\n    type: 'object',\n    value: _font_atlas_manager__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_FONT_SETTINGS.characterSet\n  },\n  fontFamily: _font_atlas_manager__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_FONT_SETTINGS.fontFamily,\n  fontWeight: _font_atlas_manager__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_FONT_SETTINGS.fontWeight,\n  lineHeight: DEFAULT_LINE_HEIGHT,\n  outlineWidth: {\n    type: 'number',\n    value: 0,\n    min: 0\n  },\n  outlineColor: {\n    type: 'color',\n    value: DEFAULT_COLOR\n  },\n  fontSettings: {},\n  wordBreak: 'break-word',\n  maxWidth: {\n    type: 'number',\n    value: -1\n  },\n  getText: {\n    type: 'accessor',\n    value: x => x.text\n  },\n  getPosition: {\n    type: 'accessor',\n    value: x => x.position\n  },\n  getColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getSize: {\n    type: 'accessor',\n    value: 32\n  },\n  getAngle: {\n    type: 'accessor',\n    value: 0\n  },\n  getTextAnchor: {\n    type: 'accessor',\n    value: 'middle'\n  },\n  getAlignmentBaseline: {\n    type: 'accessor',\n    value: 'center'\n  },\n  getPixelOffset: {\n    type: 'accessor',\n    value: [0, 0]\n  },\n  backgroundColor: {\n    deprecatedFor: ['background', 'getBackgroundColor']\n  }\n};\nclass TextLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"] {\n  constructor(...args) {\n    super(...args);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"state\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"getBoundingRect\", (object, objectInfo) => {\n      const iconMapping = this.state.fontAtlasManager.mapping;\n      const getText = this.state.getText;\n      const {\n        wordBreak,\n        maxWidth,\n        lineHeight,\n        getTextAnchor,\n        getAlignmentBaseline\n      } = this.props;\n      const paragraph = getText(object, objectInfo) || '';\n      const {\n        size: [width, height]\n      } = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.transformParagraph)(paragraph, lineHeight, wordBreak, maxWidth, iconMapping);\n      const anchorX = TEXT_ANCHOR[typeof getTextAnchor === 'function' ? getTextAnchor(object, objectInfo) : getTextAnchor];\n      const anchorY = ALIGNMENT_BASELINE[typeof getAlignmentBaseline === 'function' ? getAlignmentBaseline(object, objectInfo) : getAlignmentBaseline];\n      return [(anchorX - 1) * width / 2, (anchorY - 1) * height / 2, width, height];\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"getIconOffsets\", (object, objectInfo) => {\n      const iconMapping = this.state.fontAtlasManager.mapping;\n      const getText = this.state.getText;\n      const {\n        wordBreak,\n        maxWidth,\n        lineHeight,\n        getTextAnchor,\n        getAlignmentBaseline\n      } = this.props;\n      const paragraph = getText(object, objectInfo) || '';\n      const {\n        x,\n        y,\n        rowWidth,\n        size: [width, height]\n      } = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.transformParagraph)(paragraph, lineHeight, wordBreak, maxWidth, iconMapping);\n      const anchorX = TEXT_ANCHOR[typeof getTextAnchor === 'function' ? getTextAnchor(object, objectInfo) : getTextAnchor];\n      const anchorY = ALIGNMENT_BASELINE[typeof getAlignmentBaseline === 'function' ? getAlignmentBaseline(object, objectInfo) : getAlignmentBaseline];\n      const numCharacters = x.length;\n      const offsets = new Array(numCharacters * 2);\n      let index = 0;\n\n      for (let i = 0; i < numCharacters; i++) {\n        const rowOffset = (1 - anchorX) * (width - rowWidth[i]) / 2;\n        offsets[index++] = (anchorX - 1) * width / 2 + rowOffset + x[i];\n        offsets[index++] = (anchorY - 1) * height / 2 + y[i];\n      }\n\n      return offsets;\n    });\n  }\n\n  initializeState() {\n    this.state = {\n      styleVersion: 0,\n      fontAtlasManager: new _font_atlas_manager__WEBPACK_IMPORTED_MODULE_1__[\"default\"]()\n    };\n  }\n\n  updateState(params) {\n    const {\n      props,\n      oldProps,\n      changeFlags\n    } = params;\n    const textChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getText);\n\n    if (textChanged) {\n      this._updateText();\n    }\n\n    const fontChanged = this._updateFontAtlas();\n\n    const styleChanged = fontChanged || props.lineHeight !== oldProps.lineHeight || props.wordBreak !== oldProps.wordBreak || props.maxWidth !== oldProps.maxWidth;\n\n    if (styleChanged) {\n      this.setState({\n        styleVersion: this.state.styleVersion + 1\n      });\n    }\n  }\n\n  getPickingInfo({\n    info\n  }) {\n    info.object = info.index >= 0 ? this.props.data[info.index] : null;\n    return info;\n  }\n\n  _updateFontAtlas() {\n    const {\n      fontSettings,\n      fontFamily,\n      fontWeight\n    } = this.props;\n    const {\n      fontAtlasManager,\n      characterSet\n    } = this.state;\n    const fontProps = { ...fontSettings,\n      characterSet,\n      fontFamily,\n      fontWeight\n    };\n\n    if (!fontAtlasManager.mapping) {\n      fontAtlasManager.setProps(fontProps);\n      return true;\n    }\n\n    for (const key in fontProps) {\n      if (fontProps[key] !== fontAtlasManager.props[key]) {\n        fontAtlasManager.setProps(fontProps);\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  _updateText() {\n    var _attributes;\n\n    const {\n      data,\n      characterSet\n    } = this.props;\n    const textBuffer = (_attributes = data.attributes) === null || _attributes === void 0 ? void 0 : _attributes.getText;\n    let {\n      getText\n    } = this.props;\n    let startIndices = data.startIndices;\n    let numInstances;\n    const autoCharacterSet = characterSet === 'auto' && new Set();\n\n    if (textBuffer && startIndices) {\n      const {\n        texts,\n        characterCount\n      } = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getTextFromBuffer)({ ...(ArrayBuffer.isView(textBuffer) ? {\n          value: textBuffer\n        } : textBuffer),\n        length: data.length,\n        startIndices,\n        characterSet: autoCharacterSet\n      });\n      numInstances = characterCount;\n\n      getText = (_, {\n        index\n      }) => texts[index];\n    } else {\n      const {\n        iterable,\n        objectInfo\n      } = (0,_deck_gl_core__WEBPACK_IMPORTED_MODULE_4__.createIterable)(data);\n      startIndices = [0];\n      numInstances = 0;\n\n      for (const object of iterable) {\n        objectInfo.index++;\n        const text = Array.from(getText(object, objectInfo) || '');\n\n        if (autoCharacterSet) {\n          text.forEach(autoCharacterSet.add, autoCharacterSet);\n        }\n\n        numInstances += text.length;\n        startIndices.push(numInstances);\n      }\n    }\n\n    this.setState({\n      getText,\n      startIndices,\n      numInstances,\n      characterSet: autoCharacterSet || characterSet\n    });\n  }\n\n  renderLayers() {\n    const {\n      startIndices,\n      numInstances,\n      getText,\n      fontAtlasManager: {\n        scale,\n        texture,\n        mapping\n      },\n      styleVersion\n    } = this.state;\n    const {\n      data,\n      _dataDiff,\n      getPosition,\n      getColor,\n      getSize,\n      getAngle,\n      getPixelOffset,\n      getBackgroundColor,\n      getBorderColor,\n      getBorderWidth,\n      backgroundPadding,\n      background,\n      billboard,\n      fontSettings,\n      outlineWidth,\n      outlineColor,\n      sizeScale,\n      sizeUnits,\n      sizeMinPixels,\n      sizeMaxPixels,\n      transitions,\n      updateTriggers\n    } = this.props;\n    const CharactersLayerClass = this.getSubLayerClass('characters', _multi_icon_layer_multi_icon_layer__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n    const BackgroundLayerClass = this.getSubLayerClass('background', _text_background_layer_text_background_layer__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n    return [background && new BackgroundLayerClass({\n      getFillColor: getBackgroundColor,\n      getLineColor: getBorderColor,\n      getLineWidth: getBorderWidth,\n      padding: backgroundPadding,\n      getPosition,\n      getSize,\n      getAngle,\n      getPixelOffset,\n      billboard,\n      sizeScale: sizeScale / this.state.fontAtlasManager.props.fontSize,\n      sizeUnits,\n      sizeMinPixels,\n      sizeMaxPixels,\n      transitions: transitions && {\n        getPosition: transitions.getPosition,\n        getAngle: transitions.getAngle,\n        getSize: transitions.getSize,\n        getFillColor: transitions.getBackgroundColor,\n        getLineColor: transitions.getBorderColor,\n        getLineWidth: transitions.getBorderWidth,\n        getPixelOffset: transitions.getPixelOffset\n      }\n    }, this.getSubLayerProps({\n      id: 'background',\n      updateTriggers: {\n        getPosition: updateTriggers.getPosition,\n        getAngle: updateTriggers.getAngle,\n        getSize: updateTriggers.getSize,\n        getFillColor: updateTriggers.getBackgroundColor,\n        getLineColor: updateTriggers.getBorderColor,\n        getLineWidth: updateTriggers.getBorderWidth,\n        getPixelOffset: updateTriggers.getPixelOffset,\n        getBoundingRect: {\n          getText: updateTriggers.getText,\n          getTextAnchor: updateTriggers.getTextAnchor,\n          getAlignmentBaseline: updateTriggers.getAlignmentBaseline,\n          styleVersion\n        }\n      }\n    }), {\n      data: data.attributes && data.attributes.background ? {\n        length: data.length,\n        attributes: data.attributes.background\n      } : data,\n      _dataDiff,\n      autoHighlight: false,\n      getBoundingRect: this.getBoundingRect\n    }), new CharactersLayerClass({\n      sdf: fontSettings.sdf,\n      smoothing: Number.isFinite(fontSettings.smoothing) ? fontSettings.smoothing : _font_atlas_manager__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_FONT_SETTINGS.smoothing,\n      outlineWidth,\n      outlineColor,\n      iconAtlas: texture,\n      iconMapping: mapping,\n      getPosition,\n      getColor,\n      getSize,\n      getAngle,\n      getPixelOffset,\n      billboard,\n      sizeScale: sizeScale * scale,\n      sizeUnits,\n      sizeMinPixels: sizeMinPixels * scale,\n      sizeMaxPixels: sizeMaxPixels * scale,\n      transitions: transitions && {\n        getPosition: transitions.getPosition,\n        getAngle: transitions.getAngle,\n        getColor: transitions.getColor,\n        getSize: transitions.getSize,\n        getPixelOffset: transitions.getPixelOffset\n      }\n    }, this.getSubLayerProps({\n      id: 'characters',\n      updateTriggers: {\n        getIcon: updateTriggers.getText,\n        getPosition: updateTriggers.getPosition,\n        getAngle: updateTriggers.getAngle,\n        getColor: updateTriggers.getColor,\n        getSize: updateTriggers.getSize,\n        getPixelOffset: updateTriggers.getPixelOffset,\n        getIconOffsets: {\n          getText: updateTriggers.getText,\n          getTextAnchor: updateTriggers.getTextAnchor,\n          getAlignmentBaseline: updateTriggers.getAlignmentBaseline,\n          styleVersion\n        }\n      }\n    }), {\n      data,\n      _dataDiff,\n      startIndices,\n      numInstances,\n      getIconOffsets: this.getIconOffsets,\n      getIcon: getText\n    })];\n  }\n\n  static set fontAtlasCacheLimit(limit) {\n    (0,_font_atlas_manager__WEBPACK_IMPORTED_MODULE_1__.setFontAtlasCacheLimit)(limit);\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(TextLayer, \"defaultProps\", defaultProps);\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(TextLayer, \"layerName\", 'TextLayer');\n//# sourceMappingURL=text-layer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/text-layer/text-layer.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/text-layer/utils.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/text-layer/utils.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"autoWrapping\": function() { return /* binding */ autoWrapping; },\n/* harmony export */   \"buildMapping\": function() { return /* binding */ buildMapping; },\n/* harmony export */   \"getTextFromBuffer\": function() { return /* binding */ getTextFromBuffer; },\n/* harmony export */   \"nextPowOfTwo\": function() { return /* binding */ nextPowOfTwo; },\n/* harmony export */   \"transformParagraph\": function() { return /* binding */ transformParagraph; }\n/* harmony export */ });\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/utils/log.js\");\n\nconst MISSING_CHAR_WIDTH = 32;\nconst SINGLE_LINE = [];\nfunction nextPowOfTwo(number) {\n  return Math.pow(2, Math.ceil(Math.log2(number)));\n}\nfunction buildMapping({\n  characterSet,\n  getFontWidth,\n  fontHeight,\n  buffer,\n  maxCanvasWidth,\n  mapping = {},\n  xOffset = 0,\n  yOffset = 0\n}) {\n  let row = 0;\n  let x = xOffset;\n\n  for (const char of characterSet) {\n    if (!mapping[char]) {\n      const width = getFontWidth(char);\n\n      if (x + width + buffer * 2 > maxCanvasWidth) {\n        x = 0;\n        row++;\n      }\n\n      mapping[char] = {\n        x: x + buffer,\n        y: yOffset + row * (fontHeight + buffer * 2) + buffer,\n        width,\n        height: fontHeight\n      };\n      x += width + buffer * 2;\n    }\n  }\n\n  const rowHeight = fontHeight + buffer * 2;\n  return {\n    mapping,\n    xOffset: x,\n    yOffset: yOffset + row * rowHeight,\n    canvasHeight: nextPowOfTwo(yOffset + (row + 1) * rowHeight)\n  };\n}\n\nfunction getTextWidth(text, startIndex, endIndex, mapping) {\n  let width = 0;\n\n  for (let i = startIndex; i < endIndex; i++) {\n    var _mapping$character;\n\n    const character = text[i];\n    width += ((_mapping$character = mapping[character]) === null || _mapping$character === void 0 ? void 0 : _mapping$character.width) || 0;\n  }\n\n  return width;\n}\n\nfunction breakAll(text, startIndex, endIndex, maxWidth, iconMapping, target) {\n  let rowStartCharIndex = startIndex;\n  let rowOffsetLeft = 0;\n\n  for (let i = startIndex; i < endIndex; i++) {\n    const textWidth = getTextWidth(text, i, i + 1, iconMapping);\n\n    if (rowOffsetLeft + textWidth > maxWidth) {\n      if (rowStartCharIndex < i) {\n        target.push(i);\n      }\n\n      rowStartCharIndex = i;\n      rowOffsetLeft = 0;\n    }\n\n    rowOffsetLeft += textWidth;\n  }\n\n  return rowOffsetLeft;\n}\n\nfunction breakWord(text, startIndex, endIndex, maxWidth, iconMapping, target) {\n  let rowStartCharIndex = startIndex;\n  let groupStartCharIndex = startIndex;\n  let groupEndCharIndex = startIndex;\n  let rowOffsetLeft = 0;\n\n  for (let i = startIndex; i < endIndex; i++) {\n    if (text[i] === ' ') {\n      groupEndCharIndex = i + 1;\n    } else if (text[i + 1] === ' ' || i + 1 === endIndex) {\n      groupEndCharIndex = i + 1;\n    }\n\n    if (groupEndCharIndex > groupStartCharIndex) {\n      let groupWidth = getTextWidth(text, groupStartCharIndex, groupEndCharIndex, iconMapping);\n\n      if (rowOffsetLeft + groupWidth > maxWidth) {\n        if (rowStartCharIndex < groupStartCharIndex) {\n          target.push(groupStartCharIndex);\n          rowStartCharIndex = groupStartCharIndex;\n          rowOffsetLeft = 0;\n        }\n\n        if (groupWidth > maxWidth) {\n          groupWidth = breakAll(text, groupStartCharIndex, groupEndCharIndex, maxWidth, iconMapping, target);\n          rowStartCharIndex = target[target.length - 1];\n        }\n      }\n\n      groupStartCharIndex = groupEndCharIndex;\n      rowOffsetLeft += groupWidth;\n    }\n  }\n\n  return rowOffsetLeft;\n}\n\nfunction autoWrapping(text, wordBreak, maxWidth, iconMapping, startIndex = 0, endIndex) {\n  if (endIndex === undefined) {\n    endIndex = text.length;\n  }\n\n  const result = [];\n\n  if (wordBreak === 'break-all') {\n    breakAll(text, startIndex, endIndex, maxWidth, iconMapping, result);\n  } else {\n    breakWord(text, startIndex, endIndex, maxWidth, iconMapping, result);\n  }\n\n  return result;\n}\n\nfunction transformRow(line, startIndex, endIndex, iconMapping, leftOffsets, rowSize) {\n  let x = 0;\n  let rowHeight = 0;\n\n  for (let i = startIndex; i < endIndex; i++) {\n    const character = line[i];\n    const frame = iconMapping[character];\n\n    if (frame) {\n      if (!rowHeight) {\n        rowHeight = frame.height;\n      }\n\n      leftOffsets[i] = x + frame.width / 2;\n      x += frame.width;\n    } else {\n      _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"default\"].warn(\"Missing character: \".concat(character, \" (\").concat(character.codePointAt(0), \")\"))();\n      leftOffsets[i] = x;\n      x += MISSING_CHAR_WIDTH;\n    }\n  }\n\n  rowSize[0] = x;\n  rowSize[1] = rowHeight;\n}\n\nfunction transformParagraph(paragraph, lineHeight, wordBreak, maxWidth, iconMapping) {\n  const characters = Array.from(paragraph);\n  const numCharacters = characters.length;\n  const x = new Array(numCharacters);\n  const y = new Array(numCharacters);\n  const rowWidth = new Array(numCharacters);\n  const autoWrappingEnabled = (wordBreak === 'break-word' || wordBreak === 'break-all') && isFinite(maxWidth) && maxWidth > 0;\n  const size = [0, 0];\n  const rowSize = [0, 0];\n  let rowOffsetTop = 0;\n  let lineStartIndex = 0;\n  let lineEndIndex = 0;\n\n  for (let i = 0; i <= numCharacters; i++) {\n    const char = characters[i];\n\n    if (char === '\\n' || i === numCharacters) {\n      lineEndIndex = i;\n    }\n\n    if (lineEndIndex > lineStartIndex) {\n      const rows = autoWrappingEnabled ? autoWrapping(characters, wordBreak, maxWidth, iconMapping, lineStartIndex, lineEndIndex) : SINGLE_LINE;\n\n      for (let rowIndex = 0; rowIndex <= rows.length; rowIndex++) {\n        const rowStart = rowIndex === 0 ? lineStartIndex : rows[rowIndex - 1];\n        const rowEnd = rowIndex < rows.length ? rows[rowIndex] : lineEndIndex;\n        transformRow(characters, rowStart, rowEnd, iconMapping, x, rowSize);\n\n        for (let j = rowStart; j < rowEnd; j++) {\n          y[j] = rowOffsetTop + rowSize[1] / 2;\n          rowWidth[j] = rowSize[0];\n        }\n\n        rowOffsetTop = rowOffsetTop + rowSize[1] * lineHeight;\n        size[0] = Math.max(size[0], rowSize[0]);\n      }\n\n      lineStartIndex = lineEndIndex;\n    }\n\n    if (char === '\\n') {\n      x[lineStartIndex] = 0;\n      y[lineStartIndex] = 0;\n      rowWidth[lineStartIndex] = 0;\n      lineStartIndex++;\n    }\n  }\n\n  size[1] = rowOffsetTop;\n  return {\n    x,\n    y,\n    rowWidth,\n    size\n  };\n}\nfunction getTextFromBuffer({\n  value,\n  length,\n  stride,\n  offset,\n  startIndices,\n  characterSet\n}) {\n  const bytesPerElement = value.BYTES_PER_ELEMENT;\n  const elementStride = stride ? stride / bytesPerElement : 1;\n  const elementOffset = offset ? offset / bytesPerElement : 0;\n  const characterCount = startIndices[length] || Math.ceil((value.length - elementOffset) / elementStride);\n  const autoCharacterSet = characterSet && new Set();\n  const texts = new Array(length);\n  let codes = value;\n\n  if (elementStride > 1 || elementOffset > 0) {\n    const ArrayType = value.constructor;\n    codes = new ArrayType(characterCount);\n\n    for (let i = 0; i < characterCount; i++) {\n      codes[i] = value[i * elementStride + elementOffset];\n    }\n  }\n\n  for (let index = 0; index < length; index++) {\n    const startIndex = startIndices[index];\n    const endIndex = startIndices[index + 1] || characterCount;\n    const codesAtIndex = codes.subarray(startIndex, endIndex);\n    texts[index] = String.fromCodePoint.apply(null, codesAtIndex);\n\n    if (autoCharacterSet) {\n      codesAtIndex.forEach(autoCharacterSet.add, autoCharacterSet);\n    }\n  }\n\n  if (autoCharacterSet) {\n    for (const charCode of autoCharacterSet) {\n      characterSet.add(String.fromCodePoint(charCode));\n    }\n  }\n\n  return {\n    texts,\n    characterCount\n  };\n}\n//# sourceMappingURL=utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/text-layer/utils.js?");

/***/ }),

/***/ "./node_modules/@deck.gl/layers/dist/esm/utils.js":
/*!********************************************************!*\
  !*** ./node_modules/@deck.gl/layers/dist/esm/utils.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"replaceInRange\": function() { return /* binding */ replaceInRange; }\n/* harmony export */ });\nfunction replaceInRange({\n  data,\n  getIndex,\n  dataRange,\n  replace\n}) {\n  const {\n    startRow = 0,\n    endRow = Infinity\n  } = dataRange;\n  const count = data.length;\n  let replaceStart = count;\n  let replaceEnd = count;\n\n  for (let i = 0; i < count; i++) {\n    const row = getIndex(data[i]);\n\n    if (replaceStart > i && row >= startRow) {\n      replaceStart = i;\n    }\n\n    if (row >= endRow) {\n      replaceEnd = i;\n      break;\n    }\n  }\n\n  let index = replaceStart;\n  const dataLengthChanged = replaceEnd - replaceStart !== replace.length;\n  const endChunk = dataLengthChanged ? data.slice(replaceEnd) : undefined;\n\n  for (let i = 0; i < replace.length; i++) {\n    data[index++] = replace[i];\n  }\n\n  if (endChunk) {\n    for (let i = 0; i < endChunk.length; i++) {\n      data[index++] = endChunk[i];\n    }\n\n    data.length = index;\n  }\n\n  return {\n    startRow: replaceStart,\n    endRow: replaceStart + replace.length\n  };\n}\n//# sourceMappingURL=utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@deck.gl/layers/dist/esm/utils.js?");

/***/ }),

/***/ "./node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _emotion_sheet__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @emotion/sheet */ \"./node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js\");\n/* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! stylis */ \"./node_modules/stylis/src/Tokenizer.js\");\n/* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! stylis */ \"./node_modules/stylis/src/Utility.js\");\n/* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! stylis */ \"./node_modules/stylis/src/Enum.js\");\n/* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! stylis */ \"./node_modules/stylis/src/Serializer.js\");\n/* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! stylis */ \"./node_modules/stylis/src/Middleware.js\");\n/* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! stylis */ \"./node_modules/stylis/src/Parser.js\");\n/* harmony import */ var _emotion_weak_memoize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @emotion/weak-memoize */ \"./node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js\");\n/* harmony import */ var _emotion_memoize__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @emotion/memoize */ \"./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js\");\n\n\n\n\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n  var previous = 0;\n  var character = 0;\n\n  while (true) {\n    previous = character;\n    character = (0,stylis__WEBPACK_IMPORTED_MODULE_3__.peek)(); // &\\f\n\n    if (previous === 38 && character === 12) {\n      points[index] = 1;\n    }\n\n    if ((0,stylis__WEBPACK_IMPORTED_MODULE_3__.token)(character)) {\n      break;\n    }\n\n    (0,stylis__WEBPACK_IMPORTED_MODULE_3__.next)();\n  }\n\n  return (0,stylis__WEBPACK_IMPORTED_MODULE_3__.slice)(begin, stylis__WEBPACK_IMPORTED_MODULE_3__.position);\n};\n\nvar toRules = function toRules(parsed, points) {\n  // pretend we've started with a comma\n  var index = -1;\n  var character = 44;\n\n  do {\n    switch ((0,stylis__WEBPACK_IMPORTED_MODULE_3__.token)(character)) {\n      case 0:\n        // &\\f\n        if (character === 38 && (0,stylis__WEBPACK_IMPORTED_MODULE_3__.peek)() === 12) {\n          // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n          // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n          // and when it should just concatenate the outer and inner selectors\n          // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n          points[index] = 1;\n        }\n\n        parsed[index] += identifierWithPointTracking(stylis__WEBPACK_IMPORTED_MODULE_3__.position - 1, points, index);\n        break;\n\n      case 2:\n        parsed[index] += (0,stylis__WEBPACK_IMPORTED_MODULE_3__.delimit)(character);\n        break;\n\n      case 4:\n        // comma\n        if (character === 44) {\n          // colon\n          parsed[++index] = (0,stylis__WEBPACK_IMPORTED_MODULE_3__.peek)() === 58 ? '&\\f' : '';\n          points[index] = parsed[index].length;\n          break;\n        }\n\n      // fallthrough\n\n      default:\n        parsed[index] += (0,stylis__WEBPACK_IMPORTED_MODULE_4__.from)(character);\n    }\n  } while (character = (0,stylis__WEBPACK_IMPORTED_MODULE_3__.next)());\n\n  return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n  return (0,stylis__WEBPACK_IMPORTED_MODULE_3__.dealloc)(toRules((0,stylis__WEBPACK_IMPORTED_MODULE_3__.alloc)(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n  if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n  // negative .length indicates that this rule has been already prefixed\n  element.length < 1) {\n    return;\n  }\n\n  var value = element.value,\n      parent = element.parent;\n  var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n  while (parent.type !== 'rule') {\n    parent = parent.parent;\n    if (!parent) return;\n  } // short-circuit for the simplest case\n\n\n  if (element.props.length === 1 && value.charCodeAt(0) !== 58\n  /* colon */\n  && !fixedElements.get(parent)) {\n    return;\n  } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n  // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n  if (isImplicitRule) {\n    return;\n  }\n\n  fixedElements.set(element, true);\n  var points = [];\n  var rules = getRules(value, points);\n  var parentRules = parent.props;\n\n  for (var i = 0, k = 0; i < rules.length; i++) {\n    for (var j = 0; j < parentRules.length; j++, k++) {\n      element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n    }\n  }\n};\nvar removeLabel = function removeLabel(element) {\n  if (element.type === 'decl') {\n    var value = element.value;\n\n    if ( // charcode for l\n    value.charCodeAt(0) === 108 && // charcode for b\n    value.charCodeAt(2) === 98) {\n      // this ignores label\n      element[\"return\"] = '';\n      element.value = '';\n    }\n  }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n  return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n  return function (element, index, children) {\n    if (element.type !== 'rule' || cache.compat) return;\n    var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n    if (unsafePseudoClasses) {\n      var isNested = element.parent === children[0]; // in nested rules comments become children of the \"auto-inserted\" rule\n      //\n      // considering this input:\n      // .a {\n      //   .b /* comm */ {}\n      //   color: hotpink;\n      // }\n      // we get output corresponding to this:\n      // .a {\n      //   & {\n      //     /* comm */\n      //     color: hotpink;\n      //   }\n      //   .b {}\n      // }\n\n      var commentContainer = isNested ? children[0].children : // global rule at the root level\n      children;\n\n      for (var i = commentContainer.length - 1; i >= 0; i--) {\n        var node = commentContainer[i];\n\n        if (node.line < element.line) {\n          break;\n        } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n        // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n        // this will also match inputs like this:\n        // .a {\n        //   /* comm */\n        //   .b {}\n        // }\n        //\n        // but that is fine\n        //\n        // it would be the easiest to change the placement of the comment to be the first child of the rule:\n        // .a {\n        //   .b { /* comm */ }\n        // }\n        // with such inputs we wouldn't have to search for the comment at all\n        // TODO: consider changing this comment placement in the next major version\n\n\n        if (node.column < element.column) {\n          if (isIgnoringComment(node)) {\n            return;\n          }\n\n          break;\n        }\n      }\n\n      unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n        console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n      });\n    }\n  };\n};\n\nvar isImportRule = function isImportRule(element) {\n  return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n  for (var i = index - 1; i >= 0; i--) {\n    if (!isImportRule(children[i])) {\n      return true;\n    }\n  }\n\n  return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n  element.type = '';\n  element.value = '';\n  element[\"return\"] = '';\n  element.children = '';\n  element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n  if (!isImportRule(element)) {\n    return;\n  }\n\n  if (element.parent) {\n    console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n    nullifyElement(element);\n  } else if (isPrependedWithRegularRules(index, children)) {\n    console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n    nullifyElement(element);\n  }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n  switch ((0,stylis__WEBPACK_IMPORTED_MODULE_4__.hash)(value, length)) {\n    // color-adjust\n    case 5103:\n      return stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + 'print-' + value + value;\n    // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n    case 5737:\n    case 4201:\n    case 3177:\n    case 3433:\n    case 1641:\n    case 4457:\n    case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n    case 5572:\n    case 6356:\n    case 5844:\n    case 3191:\n    case 6645:\n    case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n    case 6391:\n    case 5879:\n    case 5623:\n    case 6135:\n    case 4599:\n    case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n    case 4215:\n    case 6389:\n    case 5109:\n    case 5365:\n    case 5621:\n    case 3829:\n      return stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + value + value;\n    // appearance, user-select, transform, hyphens, text-size-adjust\n\n    case 5349:\n    case 4246:\n    case 4810:\n    case 6968:\n    case 2756:\n      return stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + value + stylis__WEBPACK_IMPORTED_MODULE_5__.MOZ + value + stylis__WEBPACK_IMPORTED_MODULE_5__.MS + value + value;\n    // flex, flex-direction\n\n    case 6828:\n    case 4268:\n      return stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + value + stylis__WEBPACK_IMPORTED_MODULE_5__.MS + value + value;\n    // order\n\n    case 6165:\n      return stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + value + stylis__WEBPACK_IMPORTED_MODULE_5__.MS + 'flex-' + value + value;\n    // align-items\n\n    case 5187:\n      return stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + value + (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, /(\\w+).+(:[^]+)/, stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + 'box-$1$2' + stylis__WEBPACK_IMPORTED_MODULE_5__.MS + 'flex-$1$2') + value;\n    // align-self\n\n    case 5443:\n      return stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + value + stylis__WEBPACK_IMPORTED_MODULE_5__.MS + 'flex-item-' + (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, /flex-|-self/, '') + value;\n    // align-content\n\n    case 4675:\n      return stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + value + stylis__WEBPACK_IMPORTED_MODULE_5__.MS + 'flex-line-pack' + (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, /align-content|flex-|-self/, '') + value;\n    // flex-shrink\n\n    case 5548:\n      return stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + value + stylis__WEBPACK_IMPORTED_MODULE_5__.MS + (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, 'shrink', 'negative') + value;\n    // flex-basis\n\n    case 5292:\n      return stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + value + stylis__WEBPACK_IMPORTED_MODULE_5__.MS + (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, 'basis', 'preferred-size') + value;\n    // flex-grow\n\n    case 6060:\n      return stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + 'box-' + (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, '-grow', '') + stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + value + stylis__WEBPACK_IMPORTED_MODULE_5__.MS + (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, 'grow', 'positive') + value;\n    // transition\n\n    case 4554:\n      return stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, /([^-])(transform)/g, '$1' + stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + '$2') + value;\n    // cursor\n\n    case 6187:\n      return (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)((0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)((0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, /(zoom-|grab)/, stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + '$1'), /(image-set)/, stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + '$1'), value, '') + value;\n    // background, background-image\n\n    case 5495:\n    case 3959:\n      return (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, /(image-set\\([^]*)/, stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + '$1' + '$`$1');\n    // justify-content\n\n    case 4968:\n      return (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)((0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, /(.+:)(flex-)?(.*)/, stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + 'box-pack:$3' + stylis__WEBPACK_IMPORTED_MODULE_5__.MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + value + value;\n    // (margin|padding)-inline-(start|end)\n\n    case 4095:\n    case 3583:\n    case 4068:\n    case 2532:\n      return (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, /(.+)-inline(.+)/, stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + '$1$2') + value;\n    // (min|max)?(width|height|inline-size|block-size)\n\n    case 8116:\n    case 7059:\n    case 5753:\n    case 5535:\n    case 5445:\n    case 5701:\n    case 4933:\n    case 4677:\n    case 5533:\n    case 5789:\n    case 5021:\n    case 4765:\n      // stretch, max-content, min-content, fill-available\n      if ((0,stylis__WEBPACK_IMPORTED_MODULE_4__.strlen)(value) - 1 - length > 6) switch ((0,stylis__WEBPACK_IMPORTED_MODULE_4__.charat)(value, length + 1)) {\n        // (m)ax-content, (m)in-content\n        case 109:\n          // -\n          if ((0,stylis__WEBPACK_IMPORTED_MODULE_4__.charat)(value, length + 4) !== 45) break;\n        // (f)ill-available, (f)it-content\n\n        case 102:\n          return (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, /(.+:)(.+)-([^]+)/, '$1' + stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + '$2-$3' + '$1' + stylis__WEBPACK_IMPORTED_MODULE_5__.MOZ + ((0,stylis__WEBPACK_IMPORTED_MODULE_4__.charat)(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n        // (s)tretch\n\n        case 115:\n          return ~(0,stylis__WEBPACK_IMPORTED_MODULE_4__.indexof)(value, 'stretch') ? prefix((0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, 'stretch', 'fill-available'), length) + value : value;\n      }\n      break;\n    // position: sticky\n\n    case 4949:\n      // (s)ticky?\n      if ((0,stylis__WEBPACK_IMPORTED_MODULE_4__.charat)(value, length + 1) !== 115) break;\n    // display: (flex|inline-flex)\n\n    case 6444:\n      switch ((0,stylis__WEBPACK_IMPORTED_MODULE_4__.charat)(value, (0,stylis__WEBPACK_IMPORTED_MODULE_4__.strlen)(value) - 3 - (~(0,stylis__WEBPACK_IMPORTED_MODULE_4__.indexof)(value, '!important') && 10))) {\n        // stic(k)y\n        case 107:\n          return (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, ':', ':' + stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT) + value;\n        // (inline-)?fl(e)x\n\n        case 101:\n          return (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + ((0,stylis__WEBPACK_IMPORTED_MODULE_4__.charat)(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + '$2$3' + '$1' + stylis__WEBPACK_IMPORTED_MODULE_5__.MS + '$2box$3') + value;\n      }\n\n      break;\n    // writing-mode\n\n    case 5936:\n      switch ((0,stylis__WEBPACK_IMPORTED_MODULE_4__.charat)(value, length + 11)) {\n        // vertical-l(r)\n        case 114:\n          return stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + value + stylis__WEBPACK_IMPORTED_MODULE_5__.MS + (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n        // vertical-r(l)\n\n        case 108:\n          return stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + value + stylis__WEBPACK_IMPORTED_MODULE_5__.MS + (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n        // horizontal(-)tb\n\n        case 45:\n          return stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + value + stylis__WEBPACK_IMPORTED_MODULE_5__.MS + (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n      }\n\n      return stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + value + stylis__WEBPACK_IMPORTED_MODULE_5__.MS + value + value;\n  }\n\n  return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n  if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n    case stylis__WEBPACK_IMPORTED_MODULE_5__.DECLARATION:\n      element[\"return\"] = prefix(element.value, element.length);\n      break;\n\n    case stylis__WEBPACK_IMPORTED_MODULE_5__.KEYFRAMES:\n      return (0,stylis__WEBPACK_IMPORTED_MODULE_6__.serialize)([(0,stylis__WEBPACK_IMPORTED_MODULE_3__.copy)(element, {\n        value: (0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(element.value, '@', '@' + stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT)\n      })], callback);\n\n    case stylis__WEBPACK_IMPORTED_MODULE_5__.RULESET:\n      if (element.length) return (0,stylis__WEBPACK_IMPORTED_MODULE_4__.combine)(element.props, function (value) {\n        switch ((0,stylis__WEBPACK_IMPORTED_MODULE_4__.match)(value, /(::plac\\w+|:read-\\w+)/)) {\n          // :read-(only|write)\n          case ':read-only':\n          case ':read-write':\n            return (0,stylis__WEBPACK_IMPORTED_MODULE_6__.serialize)([(0,stylis__WEBPACK_IMPORTED_MODULE_3__.copy)(element, {\n              props: [(0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, /:(read-\\w+)/, ':' + stylis__WEBPACK_IMPORTED_MODULE_5__.MOZ + '$1')]\n            })], callback);\n          // :placeholder\n\n          case '::placeholder':\n            return (0,stylis__WEBPACK_IMPORTED_MODULE_6__.serialize)([(0,stylis__WEBPACK_IMPORTED_MODULE_3__.copy)(element, {\n              props: [(0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, /:(plac\\w+)/, ':' + stylis__WEBPACK_IMPORTED_MODULE_5__.WEBKIT + 'input-$1')]\n            }), (0,stylis__WEBPACK_IMPORTED_MODULE_3__.copy)(element, {\n              props: [(0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, /:(plac\\w+)/, ':' + stylis__WEBPACK_IMPORTED_MODULE_5__.MOZ + '$1')]\n            }), (0,stylis__WEBPACK_IMPORTED_MODULE_3__.copy)(element, {\n              props: [(0,stylis__WEBPACK_IMPORTED_MODULE_4__.replace)(value, /:(plac\\w+)/, stylis__WEBPACK_IMPORTED_MODULE_5__.MS + 'input-$1')]\n            })], callback);\n        }\n\n        return '';\n      });\n  }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n  var key = options.key;\n\n  if ( true && !key) {\n    throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n  }\n\n  if ( key === 'css') {\n    var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n    // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n    // note this very very intentionally targets all style elements regardless of the key to ensure\n    // that creating a cache works inside of render of a React component\n\n    Array.prototype.forEach.call(ssrStyles, function (node) {\n      // we want to only move elements which have a space in the data-emotion attribute value\n      // because that indicates that it is an Emotion 11 server-side rendered style elements\n      // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n      // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n      // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n      // will not result in the Emotion 10 styles being destroyed\n      var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n      if (dataEmotionAttribute.indexOf(' ') === -1) {\n        return;\n      }\n      document.head.appendChild(node);\n      node.setAttribute('data-s', '');\n    });\n  }\n\n  var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n  if (true) {\n    // $FlowFixMe\n    if (/[^a-z-]/.test(key)) {\n      throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n    }\n  }\n\n  var inserted = {};\n  var container;\n  var nodesToHydrate = [];\n\n  {\n    container = options.container || document.head;\n    Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n    // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n    document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n      var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n      for (var i = 1; i < attrib.length; i++) {\n        inserted[attrib[i]] = true;\n      }\n\n      nodesToHydrate.push(node);\n    });\n  }\n\n  var _insert;\n\n  var omnipresentPlugins = [compat, removeLabel];\n\n  if (true) {\n    omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n      get compat() {\n        return cache.compat;\n      }\n\n    }), incorrectImportAlarm);\n  }\n\n  {\n    var currentSheet;\n    var finalizingPlugins = [stylis__WEBPACK_IMPORTED_MODULE_6__.stringify,  true ? function (element) {\n      if (!element.root) {\n        if (element[\"return\"]) {\n          currentSheet.insert(element[\"return\"]);\n        } else if (element.value && element.type !== stylis__WEBPACK_IMPORTED_MODULE_5__.COMMENT) {\n          // insert empty rule in non-production environments\n          // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n          currentSheet.insert(element.value + \"{}\");\n        }\n      }\n    } : 0];\n    var serializer = (0,stylis__WEBPACK_IMPORTED_MODULE_7__.middleware)(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n    var stylis = function stylis(styles) {\n      return (0,stylis__WEBPACK_IMPORTED_MODULE_6__.serialize)((0,stylis__WEBPACK_IMPORTED_MODULE_8__.compile)(styles), serializer);\n    };\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      currentSheet = sheet;\n\n      if ( true && serialized.map !== undefined) {\n        currentSheet = {\n          insert: function insert(rule) {\n            sheet.insert(rule + serialized.map);\n          }\n        };\n      }\n\n      stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[serialized.name] = true;\n      }\n    };\n  }\n\n  var cache = {\n    key: key,\n    sheet: new _emotion_sheet__WEBPACK_IMPORTED_MODULE_0__.StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy,\n      prepend: options.prepend,\n      insertionPoint: options.insertionPoint\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  cache.sheet.hydrate(nodesToHydrate);\n  return cache;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createCache);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js?");

/***/ }),

/***/ "./node_modules/@emotion/hash/dist/emotion-hash.esm.js":
/*!*************************************************************!*\
  !*** ./node_modules/@emotion/hash/dist/emotion-hash.esm.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (murmur2);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@emotion/hash/dist/emotion-hash.esm.js?");

/***/ }),

/***/ "./node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _emotion_memoize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @emotion/memoize */ \"./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js\");\n\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */(0,_emotion_memoize__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function (prop) {\n  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n  /* o */\n  && prop.charCodeAt(1) === 110\n  /* n */\n  && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (isPropValid);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js?");

/***/ }),

/***/ "./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction memoize(fn) {\n  var cache = Object.create(null);\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (memoize);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js?");

/***/ }),

/***/ "./node_modules/@emotion/react/_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js":
/*!*****************************************************************************************************!*\
  !*** ./node_modules/@emotion/react/_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js ***!
  \*****************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! hoist-non-react-statics */ \"./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\");\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_0__);\n\n\n// this file isolates this package that is not tree-shakeable\n// and if this module doesn't actually contain any logic of its own\n// then Rollup just use 'hoist-non-react-statics' directly in other chunks\n\nvar hoistNonReactStatics = (function (targetComponent, sourceComponent) {\n  return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_0___default()(targetComponent, sourceComponent);\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hoistNonReactStatics);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@emotion/react/_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js?");

/***/ }),

/***/ "./node_modules/@emotion/react/dist/emotion-element-6a883da9.browser.esm.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@emotion/react/dist/emotion-element-6a883da9.browser.esm.js ***!
  \**********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"C\": function() { return /* binding */ CacheProvider; },\n/* harmony export */   \"E\": function() { return /* binding */ Emotion; },\n/* harmony export */   \"T\": function() { return /* binding */ ThemeContext; },\n/* harmony export */   \"_\": function() { return /* binding */ __unsafe_useEmotionCache; },\n/* harmony export */   \"a\": function() { return /* binding */ ThemeProvider; },\n/* harmony export */   \"b\": function() { return /* binding */ withTheme; },\n/* harmony export */   \"c\": function() { return /* binding */ createEmotionProps; },\n/* harmony export */   \"h\": function() { return /* binding */ hasOwnProperty; },\n/* harmony export */   \"u\": function() { return /* binding */ useTheme; },\n/* harmony export */   \"w\": function() { return /* binding */ withEmotionCache; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _emotion_cache__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @emotion/cache */ \"./node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _emotion_weak_memoize__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @emotion/weak-memoize */ \"./node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js\");\n/* harmony import */ var _isolated_hnrs_dist_emotion_react_isolated_hnrs_browser_esm_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js */ \"./node_modules/@emotion/react/_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\");\n/* harmony import */ var _emotion_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @emotion/utils */ \"./node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js\");\n/* harmony import */ var _emotion_serialize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @emotion/serialize */ \"./node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js\");\n/* harmony import */ var _emotion_use_insertion_effect_with_fallbacks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @emotion/use-insertion-effect-with-fallbacks */ \"./node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js\");\n\n\n\n\n\n\n\n\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */(0,_emotion_cache__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  key: 'css'\n}) : null);\n\nif (true) {\n  EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n  return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n  // $FlowFixMe\n  return /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function (props, ref) {\n    // the cache will never be null in the browser\n    var cache = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(EmotionCacheContext);\n    return func(props, cache, ref);\n  });\n};\n\nvar ThemeContext = /* #__PURE__ */(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)({});\n\nif (true) {\n  ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n  return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n  if (typeof theme === 'function') {\n    var mergedTheme = theme(outerTheme);\n\n    if ( true && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n      throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n    }\n\n    return mergedTheme;\n  }\n\n  if ( true && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n    throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n  }\n\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */(0,_emotion_weak_memoize__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(function (outerTheme) {\n  return (0,_emotion_weak_memoize__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(function (theme) {\n    return getTheme(outerTheme, theme);\n  });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n  var theme = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ThemeContext);\n\n  if (props.theme !== theme) {\n    theme = createCacheWithTheme(theme)(props.theme);\n  }\n\n  return /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(ThemeContext.Provider, {\n    value: theme\n  }, props.children);\n};\nfunction withTheme(Component) {\n  var componentName = Component.displayName || Component.name || 'Component';\n\n  var render = function render(props, ref) {\n    var theme = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ThemeContext);\n    return /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(Component, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n      theme: theme,\n      ref: ref\n    }, props));\n  }; // $FlowFixMe\n\n\n  var WithTheme = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(render);\n  WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n  return (0,_isolated_hnrs_dist_emotion_react_isolated_hnrs_browser_esm_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n  // The match may be something like 'Object.createEmotionProps' or\n  // 'Loader.prototype.render'\n  var parts = functionName.split('.');\n  return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n  // V8\n  var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n  if (match) return getLastPart(match[1]); // Safari / Firefox\n\n  match = /^([A-Za-z0-9$.]+)@/.exec(line);\n  if (match) return getLastPart(match[1]);\n  return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n  return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n  if (!stackTrace) return undefined;\n  var lines = stackTrace.split('\\n');\n\n  for (var i = 0; i < lines.length; i++) {\n    var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n    if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n    if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n    // uppercase letter\n\n    if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n  }\n\n  return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n  if ( true && typeof props.css === 'string' && // check if there is a css declaration\n  props.css.indexOf(':') !== -1) {\n    throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n  }\n\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n  // the label hasn't already been computed\n\n  if ( true && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n    var label = getLabelFromStackTrace(new Error().stack);\n    if (label) newProps[labelPropName] = label;\n  }\n\n  return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  (0,_emotion_utils__WEBPACK_IMPORTED_MODULE_4__.registerStyles)(cache, serialized, isStringTag);\n  var rules = (0,_emotion_use_insertion_effect_with_fallbacks__WEBPACK_IMPORTED_MODULE_6__.useInsertionEffectAlwaysWithSyncFallback)(function () {\n    return (0,_emotion_utils__WEBPACK_IMPORTED_MODULE_4__.insertStyles)(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n  var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var WrappedComponent = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = (0,_emotion_utils__WEBPACK_IMPORTED_MODULE_4__.getRegisteredStyles)(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = (0,_emotion_serialize__WEBPACK_IMPORTED_MODULE_5__.serializeStyles)(registeredStyles, undefined, (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ThemeContext));\n\n  if ( true && serialized.name.indexOf('-') === -1) {\n    var labelFromStack = props[labelPropName];\n\n    if (labelFromStack) {\n      serialized = (0,_emotion_serialize__WEBPACK_IMPORTED_MODULE_5__.serializeStyles)([serialized, 'label:' + labelFromStack + ';']);\n    }\n  }\n\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && ( false || key !== labelPropName)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps.ref = ref;\n  newProps.className = className;\n  return /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(Insertion, {\n    cache: cache,\n    serialized: serialized,\n    isStringTag: typeof WrappedComponent === 'string'\n  }), /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(WrappedComponent, newProps));\n});\n\nif (true) {\n  Emotion.displayName = 'EmotionCssPropInternal';\n}\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@emotion/react/dist/emotion-element-6a883da9.browser.esm.js?");

/***/ }),

/***/ "./node_modules/@emotion/react/dist/emotion-react.browser.esm.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@emotion/react/dist/emotion-react.browser.esm.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CacheProvider\": function() { return /* reexport safe */ _emotion_element_6a883da9_browser_esm_js__WEBPACK_IMPORTED_MODULE_2__.C; },\n/* harmony export */   \"ClassNames\": function() { return /* binding */ ClassNames; },\n/* harmony export */   \"Global\": function() { return /* binding */ Global; },\n/* harmony export */   \"ThemeContext\": function() { return /* reexport safe */ _emotion_element_6a883da9_browser_esm_js__WEBPACK_IMPORTED_MODULE_2__.T; },\n/* harmony export */   \"ThemeProvider\": function() { return /* reexport safe */ _emotion_element_6a883da9_browser_esm_js__WEBPACK_IMPORTED_MODULE_2__.a; },\n/* harmony export */   \"__unsafe_useEmotionCache\": function() { return /* reexport safe */ _emotion_element_6a883da9_browser_esm_js__WEBPACK_IMPORTED_MODULE_2__._; },\n/* harmony export */   \"createElement\": function() { return /* binding */ jsx; },\n/* harmony export */   \"css\": function() { return /* binding */ css; },\n/* harmony export */   \"jsx\": function() { return /* binding */ jsx; },\n/* harmony export */   \"keyframes\": function() { return /* binding */ keyframes; },\n/* harmony export */   \"useTheme\": function() { return /* reexport safe */ _emotion_element_6a883da9_browser_esm_js__WEBPACK_IMPORTED_MODULE_2__.u; },\n/* harmony export */   \"withEmotionCache\": function() { return /* reexport safe */ _emotion_element_6a883da9_browser_esm_js__WEBPACK_IMPORTED_MODULE_2__.w; },\n/* harmony export */   \"withTheme\": function() { return /* reexport safe */ _emotion_element_6a883da9_browser_esm_js__WEBPACK_IMPORTED_MODULE_2__.b; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _emotion_cache__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @emotion/cache */ \"./node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js\");\n/* harmony import */ var _emotion_element_6a883da9_browser_esm_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./emotion-element-6a883da9.browser.esm.js */ \"./node_modules/@emotion/react/dist/emotion-element-6a883da9.browser.esm.js\");\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _emotion_weak_memoize__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @emotion/weak-memoize */ \"./node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js\");\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! hoist-non-react-statics */ \"./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\");\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _emotion_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @emotion/utils */ \"./node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js\");\n/* harmony import */ var _emotion_serialize__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @emotion/serialize */ \"./node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js\");\n/* harmony import */ var _emotion_use_insertion_effect_with_fallbacks__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @emotion/use-insertion-effect-with-fallbacks */ \"./node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.10.5\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": \"./macro.js\"\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.js\",\n\t\t\"macro.d.ts\",\n\t\t\"macro.js.flow\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.10.5\",\n\t\t\"@emotion/cache\": \"^11.10.5\",\n\t\t\"@emotion/serialize\": \"^1.1.1\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.0\",\n\t\t\"@emotion/utils\": \"^1.2.0\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.0\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\t\"@babel/core\": \"^7.0.0\",\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@babel/core\": {\n\t\t\toptional: true\n\t\t},\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@babel/core\": \"^7.18.5\",\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.10.5\",\n\t\t\"@emotion/css-prettifier\": \"1.1.1\",\n\t\t\"@emotion/server\": \"11.10.0\",\n\t\t\"@emotion/styled\": \"11.10.5\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": \"./macro.js\"\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n  var args = arguments;\n\n  if (props == null || !_emotion_element_6a883da9_browser_esm_js__WEBPACK_IMPORTED_MODULE_2__.h.call(props, 'css')) {\n    // $FlowFixMe\n    return react__WEBPACK_IMPORTED_MODULE_0__.createElement.apply(undefined, args);\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = _emotion_element_6a883da9_browser_esm_js__WEBPACK_IMPORTED_MODULE_2__.E;\n  createElementArgArray[1] = (0,_emotion_element_6a883da9_browser_esm_js__WEBPACK_IMPORTED_MODULE_2__.c)(type, props);\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  } // $FlowFixMe\n\n\n  return react__WEBPACK_IMPORTED_MODULE_0__.createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */(0,_emotion_element_6a883da9_browser_esm_js__WEBPACK_IMPORTED_MODULE_2__.w)(function (props, cache) {\n  if ( true && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n  // probably using the custom createElement which\n  // means it will be turned into a className prop\n  // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n  props.className || props.css)) {\n    console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n    warnedAboutCssPropForGlobal = true;\n  }\n\n  var styles = props.styles;\n  var serialized = (0,_emotion_serialize__WEBPACK_IMPORTED_MODULE_7__.serializeStyles)([styles], undefined, (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_emotion_element_6a883da9_browser_esm_js__WEBPACK_IMPORTED_MODULE_2__.T));\n  // but it is based on a constant that will never change at runtime\n  // it's effectively like having two implementations and switching them out\n  // so it's not actually breaking anything\n\n\n  var sheetRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n  (0,_emotion_use_insertion_effect_with_fallbacks__WEBPACK_IMPORTED_MODULE_8__.useInsertionEffectWithLayoutFallback)(function () {\n    var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n    var sheet = new cache.sheet.constructor({\n      key: key,\n      nonce: cache.sheet.nonce,\n      container: cache.sheet.container,\n      speedy: cache.sheet.isSpeedy\n    });\n    var rehydrating = false; // $FlowFixMe\n\n    var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n    if (cache.sheet.tags.length) {\n      sheet.before = cache.sheet.tags[0];\n    }\n\n    if (node !== null) {\n      rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n      node.setAttribute('data-emotion', key);\n      sheet.hydrate([node]);\n    }\n\n    sheetRef.current = [sheet, rehydrating];\n    return function () {\n      sheet.flush();\n    };\n  }, [cache]);\n  (0,_emotion_use_insertion_effect_with_fallbacks__WEBPACK_IMPORTED_MODULE_8__.useInsertionEffectWithLayoutFallback)(function () {\n    var sheetRefCurrent = sheetRef.current;\n    var sheet = sheetRefCurrent[0],\n        rehydrating = sheetRefCurrent[1];\n\n    if (rehydrating) {\n      sheetRefCurrent[1] = false;\n      return;\n    }\n\n    if (serialized.next !== undefined) {\n      // insert keyframes\n      (0,_emotion_utils__WEBPACK_IMPORTED_MODULE_6__.insertStyles)(cache, serialized.next, true);\n    }\n\n    if (sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n      sheet.before = element;\n      sheet.flush();\n    }\n\n    cache.insert(\"\", serialized, sheet, false);\n  }, [cache, serialized.name]);\n  return null;\n});\n\nif (true) {\n  Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return (0,_emotion_serialize__WEBPACK_IMPORTED_MODULE_7__.serializeStyles)(args);\n}\n\nvar keyframes = function keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            if ( true && arg.styles !== undefined && arg.name !== undefined) {\n              console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component.');\n            }\n\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = (0,_emotion_utils__WEBPACK_IMPORTED_MODULE_6__.getRegisteredStyles)(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serializedArr = _ref.serializedArr;\n  var rules = (0,_emotion_use_insertion_effect_with_fallbacks__WEBPACK_IMPORTED_MODULE_8__.useInsertionEffectAlwaysWithSyncFallback)(function () {\n\n    for (var i = 0; i < serializedArr.length; i++) {\n      var res = (0,_emotion_utils__WEBPACK_IMPORTED_MODULE_6__.insertStyles)(cache, serializedArr[i], false);\n    }\n  });\n\n  return null;\n};\n\nvar ClassNames = /* #__PURE__ */(0,_emotion_element_6a883da9_browser_esm_js__WEBPACK_IMPORTED_MODULE_2__.w)(function (props, cache) {\n  var hasRendered = false;\n  var serializedArr = [];\n\n  var css = function css() {\n    if (hasRendered && \"development\" !== 'production') {\n      throw new Error('css can only be used during render');\n    }\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var serialized = (0,_emotion_serialize__WEBPACK_IMPORTED_MODULE_7__.serializeStyles)(args, cache.registered);\n    serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n    (0,_emotion_utils__WEBPACK_IMPORTED_MODULE_6__.registerStyles)(cache, serialized, false);\n    return cache.key + \"-\" + serialized.name;\n  };\n\n  var cx = function cx() {\n    if (hasRendered && \"development\" !== 'production') {\n      throw new Error('cx can only be used during render');\n    }\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return merge(cache.registered, css, classnames(args));\n  };\n\n  var content = {\n    css: css,\n    cx: cx,\n    theme: (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_emotion_element_6a883da9_browser_esm_js__WEBPACK_IMPORTED_MODULE_2__.T)\n  };\n  var ele = props.children(content);\n  hasRendered = true;\n  return /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(Insertion, {\n    cache: cache,\n    serializedArr: serializedArr\n  }), ele);\n});\n\nif (true) {\n  ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (true) {\n  var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n  var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n  if (isBrowser && !isTestEnv) {\n    // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n    var globalContext = // $FlowIgnore\n    typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n    : isBrowser ? window : __webpack_require__.g;\n    var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n    if (globalContext[globalKey]) {\n      console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n    }\n\n    globalContext[globalKey] = true;\n  }\n}\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@emotion/react/dist/emotion-react.browser.esm.js?");

/***/ }),

/***/ "./node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"serializeStyles\": function() { return /* binding */ serializeStyles; }\n/* harmony export */ });\n/* harmony import */ var _emotion_hash__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @emotion/hash */ \"./node_modules/@emotion/hash/dist/emotion-hash.esm.js\");\n/* harmony import */ var _emotion_unitless__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @emotion/unitless */ \"./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js\");\n/* harmony import */ var _emotion_memoize__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @emotion/memoize */ \"./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js\");\n\n\n\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */(0,_emotion_memoize__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (_emotion_unitless__WEBPACK_IMPORTED_MODULE_1__[\"default\"][key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nif (true) {\n  var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n  var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n  var oldProcessStyleValue = processStyleValue;\n  var msPattern = /^-ms-/;\n  var hyphenPattern = /-(.)/g;\n  var hyphenatedCache = {};\n\n  processStyleValue = function processStyleValue(key, value) {\n    if (key === 'content') {\n      if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n        throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n\n    var processed = oldProcessStyleValue(key, value);\n\n    if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n      hyphenatedCache[key] = true;\n      console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n        return _char.toUpperCase();\n      }) + \"?\");\n    }\n\n    return processed;\n  };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  if (interpolation.__emotion_styles !== undefined) {\n    if ( true && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n      throw new Error(noComponentSelectorMessage);\n    }\n\n    return interpolation;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        if (interpolation.anim === 1) {\n          cursor = {\n            name: interpolation.name,\n            styles: interpolation.styles,\n            next: cursor\n          };\n          return interpolation.name;\n        }\n\n        if (interpolation.styles !== undefined) {\n          var next = interpolation.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = interpolation.styles + \";\";\n\n          if ( true && interpolation.map !== undefined) {\n            styles += interpolation.map;\n          }\n\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result);\n        } else if (true) {\n          console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n        }\n\n        break;\n      }\n\n    case 'string':\n      if (true) {\n        var matched = [];\n        var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n          var fakeVarName = \"animation\" + matched.length;\n          matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n          return \"${\" + fakeVarName + \"}\";\n        });\n\n        if (matched.length) {\n          console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n        }\n      }\n\n      break;\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  if (registered == null) {\n    return interpolation;\n  }\n\n  var cached = registered[interpolation];\n  return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n    }\n  } else {\n    for (var _key in obj) {\n      var value = obj[_key];\n\n      if (typeof value !== 'object') {\n        if (registered != null && registered[value] !== undefined) {\n          string += _key + \"{\" + registered[value] + \"}\";\n        } else if (isProcessableValue(value)) {\n          string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n        }\n      } else {\n        if (_key === 'NO_COMPONENT_SELECTOR' && \"development\" !== 'production') {\n          throw new Error(noComponentSelectorMessage);\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value);\n\n          switch (_key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(_key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n                if ( true && _key === 'undefined') {\n                  console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n                }\n\n                string += _key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (true) {\n  sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings);\n  } else {\n    if ( true && strings[0] === undefined) {\n      console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n    }\n\n    styles += strings[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i]);\n\n    if (stringMode) {\n      if ( true && strings[i] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles += strings[i];\n    }\n  }\n\n  var sourceMap;\n\n  if (true) {\n    styles = styles.replace(sourceMapPattern, function (match) {\n      sourceMap = match;\n      return '';\n    });\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + // $FlowFixMe we know it's not null\n    match[1];\n  }\n\n  var name = (0,_emotion_hash__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(styles) + identifierName;\n\n  if (true) {\n    // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n    return {\n      name: name,\n      styles: styles,\n      map: sourceMap,\n      next: cursor,\n      toString: function toString() {\n        return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n      }\n    };\n  }\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n};\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js?");

/***/ }),

/***/ "./node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"StyleSheet\": function() { return /* binding */ StyleSheet; }\n/* harmony export */ });\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    // $FlowFixMe\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      // $FlowFixMe\n      return document.styleSheets[i];\n    }\n  }\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  tag.setAttribute('data-s', '');\n  return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n  // Using Node instead of HTMLElement since container may be a ShadowRoot\n  function StyleSheet(options) {\n    var _this = this;\n\n    this._insertTag = function (tag) {\n      var before;\n\n      if (_this.tags.length === 0) {\n        if (_this.insertionPoint) {\n          before = _this.insertionPoint.nextSibling;\n        } else if (_this.prepend) {\n          before = _this.container.firstChild;\n        } else {\n          before = _this.before;\n        }\n      } else {\n        before = _this.tags[_this.tags.length - 1].nextSibling;\n      }\n\n      _this.container.insertBefore(tag, before);\n\n      _this.tags.push(tag);\n    };\n\n    this.isSpeedy = options.speedy === undefined ? \"development\" === 'production' : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.prepend = options.prepend;\n    this.insertionPoint = options.insertionPoint;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.hydrate = function hydrate(nodes) {\n    nodes.forEach(this._insertTag);\n  };\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      this._insertTag(createStyleElement(this));\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (true) {\n      var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n      if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n        // this would only cause problem in speedy mode\n        // but we don't want enabling speedy to affect the observable behavior\n        // so we report this error at all times\n        console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n      }\n      this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n    }\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch (e) {\n        if ( true && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n          console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n        }\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    // $FlowFixMe\n    this.tags.forEach(function (tag) {\n      return tag.parentNode && tag.parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n\n    if (true) {\n      this._alreadyInsertedOrderInsensitiveRule = false;\n    }\n  };\n\n  return StyleSheet;\n}();\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js?");

/***/ }),

/***/ "./node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js ***!
  \***********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _emotion_is_prop_valid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @emotion/is-prop-valid */ \"./node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js\");\n/* harmony import */ var _emotion_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @emotion/react */ \"./node_modules/@emotion/react/dist/emotion-element-6a883da9.browser.esm.js\");\n/* harmony import */ var _emotion_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @emotion/utils */ \"./node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js\");\n/* harmony import */ var _emotion_serialize__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @emotion/serialize */ \"./node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js\");\n/* harmony import */ var _emotion_use_insertion_effect_with_fallbacks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @emotion/use-insertion-effect-with-fallbacks */ \"./node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js\");\n\n\n\n\n\n\n\n\nvar testOmitPropsOnStringTag = _emotion_is_prop_valid__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n  return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n  return typeof tag === 'string' && // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n  var shouldForwardProp;\n\n  if (options) {\n    var optionsShouldForwardProp = options.shouldForwardProp;\n    shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n      return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n    } : optionsShouldForwardProp;\n  }\n\n  if (typeof shouldForwardProp !== 'function' && isReal) {\n    shouldForwardProp = tag.__emotion_forwardProp;\n  }\n\n  return shouldForwardProp;\n};\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  (0,_emotion_utils__WEBPACK_IMPORTED_MODULE_3__.registerStyles)(cache, serialized, isStringTag);\n  var rules = (0,_emotion_use_insertion_effect_with_fallbacks__WEBPACK_IMPORTED_MODULE_5__.useInsertionEffectAlwaysWithSyncFallback)(function () {\n    return (0,_emotion_utils__WEBPACK_IMPORTED_MODULE_3__.insertStyles)(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n  if (true) {\n    if (tag === undefined) {\n      throw new Error('You are trying to create a styled element with an undefined component.\\nYou may have forgotten to import it.');\n    }\n  }\n\n  var isReal = tag.__emotion_real === tag;\n  var baseTag = isReal && tag.__emotion_base || tag;\n  var identifierName;\n  var targetClassName;\n\n  if (options !== undefined) {\n    identifierName = options.label;\n    targetClassName = options.target;\n  }\n\n  var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n  var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n  var shouldUseAs = !defaultShouldForwardProp('as');\n  return function () {\n    var args = arguments;\n    var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n    if (identifierName !== undefined) {\n      styles.push(\"label:\" + identifierName + \";\");\n    }\n\n    if (args[0] == null || args[0].raw === undefined) {\n      styles.push.apply(styles, args);\n    } else {\n      if ( true && args[0][0] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles.push(args[0][0]);\n      var len = args.length;\n      var i = 1;\n\n      for (; i < len; i++) {\n        if ( true && args[0][i] === undefined) {\n          console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n        }\n\n        styles.push(args[i], args[0][i]);\n      }\n    } // $FlowFixMe: we need to cast StatelessFunctionalComponent to our PrivateStyledComponent class\n\n\n    var Styled = (0,_emotion_react__WEBPACK_IMPORTED_MODULE_6__.w)(function (props, cache, ref) {\n      var FinalTag = shouldUseAs && props.as || baseTag;\n      var className = '';\n      var classInterpolations = [];\n      var mergedProps = props;\n\n      if (props.theme == null) {\n        mergedProps = {};\n\n        for (var key in props) {\n          mergedProps[key] = props[key];\n        }\n\n        mergedProps.theme = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(_emotion_react__WEBPACK_IMPORTED_MODULE_6__.T);\n      }\n\n      if (typeof props.className === 'string') {\n        className = (0,_emotion_utils__WEBPACK_IMPORTED_MODULE_3__.getRegisteredStyles)(cache.registered, classInterpolations, props.className);\n      } else if (props.className != null) {\n        className = props.className + \" \";\n      }\n\n      var serialized = (0,_emotion_serialize__WEBPACK_IMPORTED_MODULE_4__.serializeStyles)(styles.concat(classInterpolations), cache.registered, mergedProps);\n      className += cache.key + \"-\" + serialized.name;\n\n      if (targetClassName !== undefined) {\n        className += \" \" + targetClassName;\n      }\n\n      var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n      var newProps = {};\n\n      for (var _key in props) {\n        if (shouldUseAs && _key === 'as') continue;\n\n        if ( // $FlowFixMe\n        finalShouldForwardProp(_key)) {\n          newProps[_key] = props[_key];\n        }\n      }\n\n      newProps.className = className;\n      newProps.ref = ref;\n      return /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(react__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(Insertion, {\n        cache: cache,\n        serialized: serialized,\n        isStringTag: typeof FinalTag === 'string'\n      }), /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(FinalTag, newProps));\n    });\n    Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n    Styled.defaultProps = tag.defaultProps;\n    Styled.__emotion_real = Styled;\n    Styled.__emotion_base = baseTag;\n    Styled.__emotion_styles = styles;\n    Styled.__emotion_forwardProp = shouldForwardProp;\n    Object.defineProperty(Styled, 'toString', {\n      value: function value() {\n        if (targetClassName === undefined && \"development\" !== 'production') {\n          return 'NO_COMPONENT_SELECTOR';\n        } // $FlowFixMe: coerce undefined to string\n\n\n        return \".\" + targetClassName;\n      }\n    });\n\n    Styled.withComponent = function (nextTag, nextOptions) {\n      return createStyled(nextTag, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, options, nextOptions, {\n        shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n      })).apply(void 0, styles);\n    };\n\n    return Styled;\n  };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createStyled);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js?");

/***/ }),

/***/ "./node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _emotion_is_prop_valid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @emotion/is-prop-valid */ \"./node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js\");\n/* harmony import */ var _base_dist_emotion_styled_base_browser_esm_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../base/dist/emotion-styled-base.browser.esm.js */ \"./node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js\");\n/* harmony import */ var _emotion_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @emotion/utils */ \"./node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js\");\n/* harmony import */ var _emotion_serialize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @emotion/serialize */ \"./node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js\");\n/* harmony import */ var _emotion_use_insertion_effect_with_fallbacks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @emotion/use-insertion-effect-with-fallbacks */ \"./node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js\");\n\n\n\n\n\n\n\n\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nvar newStyled = _base_dist_emotion_styled_base_browser_esm_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].bind();\ntags.forEach(function (tagName) {\n  // $FlowFixMe: we can ignore this because its exposed type is defined by the CreateStyled type\n  newStyled[tagName] = newStyled(tagName);\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (newStyled);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js?");

/***/ }),

/***/ "./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (unitlessKeys);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js?");

/***/ }),

/***/ "./node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js":
/*!***********************************************************************************************************************************!*\
  !*** ./node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js ***!
  \***********************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useInsertionEffectAlwaysWithSyncFallback\": function() { return /* binding */ useInsertionEffectAlwaysWithSyncFallback; },\n/* harmony export */   \"useInsertionEffectWithLayoutFallback\": function() { return /* binding */ useInsertionEffectWithLayoutFallback; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\n\nvar syncFallback = function syncFallback(create) {\n  return create();\n};\n\nvar useInsertionEffect = react__WEBPACK_IMPORTED_MODULE_0__['useInsertion' + 'Effect'] ? react__WEBPACK_IMPORTED_MODULE_0__['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback =  useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect;\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js?");

/***/ }),

/***/ "./node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getRegisteredStyles\": function() { return /* binding */ getRegisteredStyles; },\n/* harmony export */   \"insertStyles\": function() { return /* binding */ insertStyles; },\n/* harmony export */   \"registerStyles\": function() { return /* binding */ registerStyles; }\n/* harmony export */ });\nvar isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className] + \";\");\n    } else {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false ) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  registerStyles(cache, serialized, isStringTag);\n  var className = cache.key + \"-\" + serialized.name;\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js?");

/***/ }),

/***/ "./node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar weakMemoize = function weakMemoize(func) {\n  // $FlowFixMe flow doesn't include all non-primitive types as allowed for weakmaps\n  var cache = new WeakMap();\n  return function (arg) {\n    if (cache.has(arg)) {\n      // $FlowFixMe\n      return cache.get(arg);\n    }\n\n    var ret = func(arg);\n    cache.set(arg, ret);\n    return ret;\n  };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (weakMemoize);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-array-buffer-iterator.js":
/*!******************************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-array-buffer-iterator.js ***!
  \******************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"makeArrayBufferIterator\": function() { return /* binding */ makeArrayBufferIterator; }\n/* harmony export */ });\nconst DEFAULT_CHUNK_SIZE = 256 * 1024;\nfunction* makeArrayBufferIterator(arrayBuffer, options = {}) {\n  const {\n    chunkSize = DEFAULT_CHUNK_SIZE\n  } = options;\n  let byteOffset = 0;\n\n  while (byteOffset < arrayBuffer.byteLength) {\n    const chunkByteLength = Math.min(arrayBuffer.byteLength - byteOffset, chunkSize);\n    const chunk = new ArrayBuffer(chunkByteLength);\n    const sourceArray = new Uint8Array(arrayBuffer, byteOffset, chunkByteLength);\n    const chunkArray = new Uint8Array(chunk);\n    chunkArray.set(sourceArray);\n    byteOffset += chunkByteLength;\n    yield chunk;\n  }\n}\n//# sourceMappingURL=make-array-buffer-iterator.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-array-buffer-iterator.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-blob-iterator.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-blob-iterator.js ***!
  \**********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"makeBlobIterator\": function() { return /* binding */ makeBlobIterator; }\n/* harmony export */ });\nconst DEFAULT_CHUNK_SIZE = 1024 * 1024;\nasync function* makeBlobIterator(blob, options) {\n  const chunkSize = (options === null || options === void 0 ? void 0 : options.chunkSize) || DEFAULT_CHUNK_SIZE;\n  let offset = 0;\n\n  while (offset < blob.size) {\n    const end = offset + chunkSize;\n    const chunk = await blob.slice(offset, end).arrayBuffer();\n    offset = end;\n    yield chunk;\n  }\n}\n//# sourceMappingURL=make-blob-iterator.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-blob-iterator.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-iterator.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-iterator.js ***!
  \*****************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"makeIterator\": function() { return /* binding */ makeIterator; }\n/* harmony export */ });\n/* harmony import */ var _make_string_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./make-string-iterator */ \"./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-string-iterator.js\");\n/* harmony import */ var _make_array_buffer_iterator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./make-array-buffer-iterator */ \"./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-array-buffer-iterator.js\");\n/* harmony import */ var _make_blob_iterator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./make-blob-iterator */ \"./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-blob-iterator.js\");\n/* harmony import */ var _make_stream_iterator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./make-stream-iterator */ \"./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-stream-iterator.js\");\n/* harmony import */ var _javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../javascript-utils/is-type */ \"./node_modules/@loaders.gl/core/dist/esm/javascript-utils/is-type.js\");\n\n\n\n\n\nfunction makeIterator(data, options) {\n  if (typeof data === 'string') {\n    return (0,_make_string_iterator__WEBPACK_IMPORTED_MODULE_0__.makeStringIterator)(data, options);\n  }\n\n  if (data instanceof ArrayBuffer) {\n    return (0,_make_array_buffer_iterator__WEBPACK_IMPORTED_MODULE_1__.makeArrayBufferIterator)(data, options);\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_2__.isBlob)(data)) {\n    return (0,_make_blob_iterator__WEBPACK_IMPORTED_MODULE_3__.makeBlobIterator)(data, options);\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_2__.isReadableStream)(data)) {\n    return (0,_make_stream_iterator__WEBPACK_IMPORTED_MODULE_4__.makeStreamIterator)(data, options);\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_2__.isResponse)(data)) {\n    const response = data;\n    return (0,_make_stream_iterator__WEBPACK_IMPORTED_MODULE_4__.makeStreamIterator)(response.body, options);\n  }\n\n  throw new Error('makeIterator');\n}\n//# sourceMappingURL=make-iterator.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-iterator.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-stream-iterator.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-stream-iterator.js ***!
  \************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"makeStreamIterator\": function() { return /* binding */ makeStreamIterator; }\n/* harmony export */ });\n/* harmony import */ var _loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @loaders.gl/loader-utils */ \"./node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/globals.js\");\n/* harmony import */ var _loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @loaders.gl/loader-utils */ \"./node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/array-buffer-utils.js\");\n\nfunction makeStreamIterator(stream, options) {\n  return _loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_0__.isBrowser ? makeBrowserStreamIterator(stream, options) : makeNodeStreamIterator(stream, options);\n}\n\nasync function* makeBrowserStreamIterator(stream, options) {\n  const reader = stream.getReader();\n  let nextBatchPromise;\n\n  try {\n    while (true) {\n      const currentBatchPromise = nextBatchPromise || reader.read();\n\n      if (options !== null && options !== void 0 && options._streamReadAhead) {\n        nextBatchPromise = reader.read();\n      }\n\n      const {\n        done,\n        value\n      } = await currentBatchPromise;\n\n      if (done) {\n        return;\n      }\n\n      yield (0,_loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_1__.toArrayBuffer)(value);\n    }\n  } catch (error) {\n    reader.releaseLock();\n  }\n}\n\nasync function* makeNodeStreamIterator(stream, options) {\n  for await (const chunk of stream) {\n    yield (0,_loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_1__.toArrayBuffer)(chunk);\n  }\n}\n//# sourceMappingURL=make-stream-iterator.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-stream-iterator.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-string-iterator.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-string-iterator.js ***!
  \************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"makeStringIterator\": function() { return /* binding */ makeStringIterator; }\n/* harmony export */ });\nconst DEFAULT_CHUNK_SIZE = 256 * 1024;\nfunction* makeStringIterator(string, options) {\n  const chunkSize = (options === null || options === void 0 ? void 0 : options.chunkSize) || DEFAULT_CHUNK_SIZE;\n  let offset = 0;\n  const textEncoder = new TextEncoder();\n\n  while (offset < string.length) {\n    const chunkLength = Math.min(string.length - offset, chunkSize);\n    const chunk = string.slice(offset, offset + chunkLength);\n    offset += chunkLength;\n    yield textEncoder.encode(chunk);\n  }\n}\n//# sourceMappingURL=make-string-iterator.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-string-iterator.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/javascript-utils/is-type.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/javascript-utils/is-type.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isAsyncIterable\": function() { return /* binding */ isAsyncIterable; },\n/* harmony export */   \"isBlob\": function() { return /* binding */ isBlob; },\n/* harmony export */   \"isBuffer\": function() { return /* binding */ isBuffer; },\n/* harmony export */   \"isFile\": function() { return /* binding */ isFile; },\n/* harmony export */   \"isIterable\": function() { return /* binding */ isIterable; },\n/* harmony export */   \"isIterator\": function() { return /* binding */ isIterator; },\n/* harmony export */   \"isObject\": function() { return /* binding */ isObject; },\n/* harmony export */   \"isPromise\": function() { return /* binding */ isPromise; },\n/* harmony export */   \"isPureObject\": function() { return /* binding */ isPureObject; },\n/* harmony export */   \"isReadableDOMStream\": function() { return /* binding */ isReadableDOMStream; },\n/* harmony export */   \"isReadableNodeStream\": function() { return /* binding */ isReadableNodeStream; },\n/* harmony export */   \"isReadableStream\": function() { return /* binding */ isReadableStream; },\n/* harmony export */   \"isResponse\": function() { return /* binding */ isResponse; },\n/* harmony export */   \"isWritableDOMStream\": function() { return /* binding */ isWritableDOMStream; },\n/* harmony export */   \"isWritableNodeStream\": function() { return /* binding */ isWritableNodeStream; },\n/* harmony export */   \"isWritableStream\": function() { return /* binding */ isWritableStream; }\n/* harmony export */ });\nconst isBoolean = x => typeof x === 'boolean';\n\nconst isFunction = x => typeof x === 'function';\n\nconst isObject = x => x !== null && typeof x === 'object';\nconst isPureObject = x => isObject(x) && x.constructor === {}.constructor;\nconst isPromise = x => isObject(x) && isFunction(x.then);\nconst isIterable = x => x && typeof x[Symbol.iterator] === 'function';\nconst isAsyncIterable = x => x && typeof x[Symbol.asyncIterator] === 'function';\nconst isIterator = x => x && isFunction(x.next);\nconst isResponse = x => typeof Response !== 'undefined' && x instanceof Response || x && x.arrayBuffer && x.text && x.json;\nconst isFile = x => typeof File !== 'undefined' && x instanceof File;\nconst isBlob = x => typeof Blob !== 'undefined' && x instanceof Blob;\nconst isBuffer = x => x && typeof x === 'object' && x.isBuffer;\nconst isWritableDOMStream = x => isObject(x) && isFunction(x.abort) && isFunction(x.getWriter);\nconst isReadableDOMStream = x => typeof ReadableStream !== 'undefined' && x instanceof ReadableStream || isObject(x) && isFunction(x.tee) && isFunction(x.cancel) && isFunction(x.getReader);\nconst isWritableNodeStream = x => isObject(x) && isFunction(x.end) && isFunction(x.write) && isBoolean(x.writable);\nconst isReadableNodeStream = x => isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);\nconst isReadableStream = x => isReadableDOMStream(x) || isReadableNodeStream(x);\nconst isWritableStream = x => isWritableDOMStream(x) || isWritableNodeStream(x);\n//# sourceMappingURL=is-type.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/javascript-utils/is-type.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/lib/api/load.js":
/*!****************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/lib/api/load.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"load\": function() { return /* binding */ load; }\n/* harmony export */ });\n/* harmony import */ var _javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../javascript-utils/is-type */ \"./node_modules/@loaders.gl/core/dist/esm/javascript-utils/is-type.js\");\n/* harmony import */ var _loader_utils_normalize_loader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../loader-utils/normalize-loader */ \"./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/normalize-loader.js\");\n/* harmony import */ var _loader_utils_option_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../loader-utils/option-utils */ \"./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/option-utils.js\");\n/* harmony import */ var _parse__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parse */ \"./node_modules/@loaders.gl/core/dist/esm/lib/api/parse.js\");\n\n\n\n\nasync function load(url, loaders, options, context) {\n  if (!Array.isArray(loaders) && !(0,_loader_utils_normalize_loader__WEBPACK_IMPORTED_MODULE_0__.isLoaderObject)(loaders)) {\n    context = undefined;\n    options = loaders;\n    loaders = undefined;\n  }\n\n  const fetch = (0,_loader_utils_option_utils__WEBPACK_IMPORTED_MODULE_1__.getFetchFunction)(options);\n  let data = url;\n\n  if (typeof url === 'string') {\n    data = await fetch(url);\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_2__.isBlob)(url)) {\n    data = await fetch(url);\n  }\n\n  return await (0,_parse__WEBPACK_IMPORTED_MODULE_3__.parse)(data, loaders, options);\n}\n//# sourceMappingURL=load.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/lib/api/load.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/lib/api/parse.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/lib/api/parse.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"parse\": function() { return /* binding */ parse; }\n/* harmony export */ });\n/* harmony import */ var _loaders_gl_worker_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @loaders.gl/worker-utils */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/assert.js\");\n/* harmony import */ var _loaders_gl_worker_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @loaders.gl/worker-utils */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-api/validate-worker-version.js\");\n/* harmony import */ var _loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @loaders.gl/loader-utils */ \"./node_modules/@loaders.gl/loader-utils/dist/esm/lib/worker-loader-utils/parse-with-worker.js\");\n/* harmony import */ var _loader_utils_normalize_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../loader-utils/normalize-loader */ \"./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/normalize-loader.js\");\n/* harmony import */ var _javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../javascript-utils/is-type */ \"./node_modules/@loaders.gl/core/dist/esm/javascript-utils/is-type.js\");\n/* harmony import */ var _loader_utils_option_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../loader-utils/option-utils */ \"./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/option-utils.js\");\n/* harmony import */ var _loader_utils_get_data__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../loader-utils/get-data */ \"./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/get-data.js\");\n/* harmony import */ var _loader_utils_loader_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../loader-utils/loader-context */ \"./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/loader-context.js\");\n/* harmony import */ var _utils_resource_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/resource-utils */ \"./node_modules/@loaders.gl/core/dist/esm/lib/utils/resource-utils.js\");\n/* harmony import */ var _select_loader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./select-loader */ \"./node_modules/@loaders.gl/core/dist/esm/lib/api/select-loader.js\");\n\n\n\n\n\n\n\n\n\nasync function parse(data, loaders, options, context) {\n  (0,_loaders_gl_worker_utils__WEBPACK_IMPORTED_MODULE_0__.assert)(!context || typeof context === 'object');\n\n  if (loaders && !Array.isArray(loaders) && !(0,_loader_utils_normalize_loader__WEBPACK_IMPORTED_MODULE_1__.isLoaderObject)(loaders)) {\n    context = undefined;\n    options = loaders;\n    loaders = undefined;\n  }\n\n  data = await data;\n  options = options || {};\n  const {\n    url\n  } = (0,_utils_resource_utils__WEBPACK_IMPORTED_MODULE_2__.getResourceUrlAndType)(data);\n  const typedLoaders = loaders;\n  const candidateLoaders = (0,_loader_utils_loader_context__WEBPACK_IMPORTED_MODULE_3__.getLoadersFromContext)(typedLoaders, context);\n  const loader = await (0,_select_loader__WEBPACK_IMPORTED_MODULE_4__.selectLoader)(data, candidateLoaders, options);\n\n  if (!loader) {\n    return null;\n  }\n\n  options = (0,_loader_utils_option_utils__WEBPACK_IMPORTED_MODULE_5__.normalizeOptions)(options, loader, candidateLoaders, url);\n  context = (0,_loader_utils_loader_context__WEBPACK_IMPORTED_MODULE_3__.getLoaderContext)({\n    url,\n    parse,\n    loaders: candidateLoaders\n  }, options, context);\n  return await parseWithLoader(loader, data, options, context);\n}\n\nasync function parseWithLoader(loader, data, options, context) {\n  (0,_loaders_gl_worker_utils__WEBPACK_IMPORTED_MODULE_6__.validateWorkerVersion)(loader);\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_7__.isResponse)(data)) {\n    const response = data;\n    const {\n      ok,\n      redirected,\n      status,\n      statusText,\n      type,\n      url\n    } = response;\n    const headers = Object.fromEntries(response.headers.entries());\n    context.response = {\n      headers,\n      ok,\n      redirected,\n      status,\n      statusText,\n      type,\n      url\n    };\n  }\n\n  data = await (0,_loader_utils_get_data__WEBPACK_IMPORTED_MODULE_8__.getArrayBufferOrStringFromData)(data, loader, options);\n\n  if (loader.parseTextSync && typeof data === 'string') {\n    options.dataType = 'text';\n    return loader.parseTextSync(data, options, context, loader);\n  }\n\n  if ((0,_loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_9__.canParseWithWorker)(loader, options)) {\n    return await (0,_loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_9__.parseWithWorker)(loader, data, options, context, parse);\n  }\n\n  if (loader.parseText && typeof data === 'string') {\n    return await loader.parseText(data, options, context, loader);\n  }\n\n  if (loader.parse) {\n    return await loader.parse(data, options, context, loader);\n  }\n\n  (0,_loaders_gl_worker_utils__WEBPACK_IMPORTED_MODULE_0__.assert)(!loader.parseSync);\n  throw new Error(\"\".concat(loader.id, \" loader - no parser found and worker is disabled\"));\n}\n//# sourceMappingURL=parse.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/lib/api/parse.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/lib/api/register-loaders.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/lib/api/register-loaders.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"_unregisterLoaders\": function() { return /* binding */ _unregisterLoaders; },\n/* harmony export */   \"getRegisteredLoaders\": function() { return /* binding */ getRegisteredLoaders; },\n/* harmony export */   \"registerLoaders\": function() { return /* binding */ registerLoaders; }\n/* harmony export */ });\n/* harmony import */ var _loader_utils_normalize_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../loader-utils/normalize-loader */ \"./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/normalize-loader.js\");\n/* harmony import */ var _loader_utils_option_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../loader-utils/option-utils */ \"./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/option-utils.js\");\n\n\n\nconst getGlobalLoaderRegistry = () => {\n  const state = (0,_loader_utils_option_utils__WEBPACK_IMPORTED_MODULE_0__.getGlobalLoaderState)();\n  state.loaderRegistry = state.loaderRegistry || [];\n  return state.loaderRegistry;\n};\n\nfunction registerLoaders(loaders) {\n  const loaderRegistry = getGlobalLoaderRegistry();\n  loaders = Array.isArray(loaders) ? loaders : [loaders];\n\n  for (const loader of loaders) {\n    const normalizedLoader = (0,_loader_utils_normalize_loader__WEBPACK_IMPORTED_MODULE_1__.normalizeLoader)(loader);\n\n    if (!loaderRegistry.find(registeredLoader => normalizedLoader === registeredLoader)) {\n      loaderRegistry.unshift(normalizedLoader);\n    }\n  }\n}\nfunction getRegisteredLoaders() {\n  return getGlobalLoaderRegistry();\n}\nfunction _unregisterLoaders() {\n  const state = (0,_loader_utils_option_utils__WEBPACK_IMPORTED_MODULE_0__.getGlobalLoaderState)();\n  state.loaderRegistry = [];\n}\n//# sourceMappingURL=register-loaders.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/lib/api/register-loaders.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/lib/api/select-loader.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/lib/api/select-loader.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"selectLoader\": function() { return /* binding */ selectLoader; },\n/* harmony export */   \"selectLoaderSync\": function() { return /* binding */ selectLoaderSync; }\n/* harmony export */ });\n/* harmony import */ var _loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @loaders.gl/loader-utils */ \"./node_modules/@loaders.gl/loader-utils/dist/esm/lib/path-utils/path.js\");\n/* harmony import */ var _loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @loaders.gl/loader-utils */ \"./node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/array-buffer-utils.js\");\n/* harmony import */ var _loader_utils_normalize_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../loader-utils/normalize-loader */ \"./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/normalize-loader.js\");\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/log */ \"./node_modules/@loaders.gl/core/dist/esm/lib/utils/log.js\");\n/* harmony import */ var _utils_resource_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/resource-utils */ \"./node_modules/@loaders.gl/core/dist/esm/lib/utils/resource-utils.js\");\n/* harmony import */ var _register_loaders__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./register-loaders */ \"./node_modules/@loaders.gl/core/dist/esm/lib/api/register-loaders.js\");\n/* harmony import */ var _javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../javascript-utils/is-type */ \"./node_modules/@loaders.gl/core/dist/esm/javascript-utils/is-type.js\");\n\n\n\n\n\n\nconst EXT_PATTERN = /\\.([^.]+)$/;\nasync function selectLoader(data, loaders = [], options, context) {\n  if (!validHTTPResponse(data)) {\n    return null;\n  }\n\n  let loader = selectLoaderSync(data, loaders, { ...options,\n    nothrow: true\n  }, context);\n\n  if (loader) {\n    return loader;\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isBlob)(data)) {\n    data = await data.slice(0, 10).arrayBuffer();\n    loader = selectLoaderSync(data, loaders, options, context);\n  }\n\n  if (!loader && !(options !== null && options !== void 0 && options.nothrow)) {\n    throw new Error(getNoValidLoaderMessage(data));\n  }\n\n  return loader;\n}\nfunction selectLoaderSync(data, loaders = [], options, context) {\n  if (!validHTTPResponse(data)) {\n    return null;\n  }\n\n  if (loaders && !Array.isArray(loaders)) {\n    return (0,_loader_utils_normalize_loader__WEBPACK_IMPORTED_MODULE_1__.normalizeLoader)(loaders);\n  }\n\n  let candidateLoaders = [];\n\n  if (loaders) {\n    candidateLoaders = candidateLoaders.concat(loaders);\n  }\n\n  if (!(options !== null && options !== void 0 && options.ignoreRegisteredLoaders)) {\n    candidateLoaders.push(...(0,_register_loaders__WEBPACK_IMPORTED_MODULE_2__.getRegisteredLoaders)());\n  }\n\n  normalizeLoaders(candidateLoaders);\n  const loader = selectLoaderInternal(data, candidateLoaders, options, context);\n\n  if (!loader && !(options !== null && options !== void 0 && options.nothrow)) {\n    throw new Error(getNoValidLoaderMessage(data));\n  }\n\n  return loader;\n}\n\nfunction selectLoaderInternal(data, loaders, options, context) {\n  const {\n    url,\n    type\n  } = (0,_utils_resource_utils__WEBPACK_IMPORTED_MODULE_3__.getResourceUrlAndType)(data);\n  const testUrl = url || (context === null || context === void 0 ? void 0 : context.url);\n  let loader = null;\n  let reason = '';\n\n  if (options !== null && options !== void 0 && options.mimeType) {\n    loader = findLoaderByMIMEType(loaders, options === null || options === void 0 ? void 0 : options.mimeType);\n    reason = \"match forced by supplied MIME type \".concat(options === null || options === void 0 ? void 0 : options.mimeType);\n  }\n\n  loader = loader || findLoaderByUrl(loaders, testUrl);\n  reason = reason || (loader ? \"matched url \".concat(testUrl) : '');\n  loader = loader || findLoaderByMIMEType(loaders, type);\n  reason = reason || (loader ? \"matched MIME type \".concat(type) : '');\n  loader = loader || findLoaderByInitialBytes(loaders, data);\n  reason = reason || (loader ? \"matched initial data \".concat(getFirstCharacters(data)) : '');\n  loader = loader || findLoaderByMIMEType(loaders, options === null || options === void 0 ? void 0 : options.fallbackMimeType);\n  reason = reason || (loader ? \"matched fallback MIME type \".concat(type) : '');\n\n  if (reason) {\n    var _loader;\n\n    _utils_log__WEBPACK_IMPORTED_MODULE_4__.log.log(1, \"selectLoader selected \".concat((_loader = loader) === null || _loader === void 0 ? void 0 : _loader.name, \": \").concat(reason, \".\"));\n  }\n\n  return loader;\n}\n\nfunction validHTTPResponse(data) {\n  if (data instanceof Response) {\n    if (data.status === 204) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction getNoValidLoaderMessage(data) {\n  const {\n    url,\n    type\n  } = (0,_utils_resource_utils__WEBPACK_IMPORTED_MODULE_3__.getResourceUrlAndType)(data);\n  let message = 'No valid loader found (';\n  message += url ? \"\".concat(_loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_5__.filename(url), \", \") : 'no url provided, ';\n  message += \"MIME type: \".concat(type ? \"\\\"\".concat(type, \"\\\"\") : 'not provided', \", \");\n  const firstCharacters = data ? getFirstCharacters(data) : '';\n  message += firstCharacters ? \" first bytes: \\\"\".concat(firstCharacters, \"\\\"\") : 'first bytes: not available';\n  message += ')';\n  return message;\n}\n\nfunction normalizeLoaders(loaders) {\n  for (const loader of loaders) {\n    (0,_loader_utils_normalize_loader__WEBPACK_IMPORTED_MODULE_1__.normalizeLoader)(loader);\n  }\n}\n\nfunction findLoaderByUrl(loaders, url) {\n  const match = url && EXT_PATTERN.exec(url);\n  const extension = match && match[1];\n  return extension ? findLoaderByExtension(loaders, extension) : null;\n}\n\nfunction findLoaderByExtension(loaders, extension) {\n  extension = extension.toLowerCase();\n\n  for (const loader of loaders) {\n    for (const loaderExtension of loader.extensions) {\n      if (loaderExtension.toLowerCase() === extension) {\n        return loader;\n      }\n    }\n  }\n\n  return null;\n}\n\nfunction findLoaderByMIMEType(loaders, mimeType) {\n  for (const loader of loaders) {\n    if (loader.mimeTypes && loader.mimeTypes.includes(mimeType)) {\n      return loader;\n    }\n\n    if (mimeType === \"application/x.\".concat(loader.id)) {\n      return loader;\n    }\n  }\n\n  return null;\n}\n\nfunction findLoaderByInitialBytes(loaders, data) {\n  if (!data) {\n    return null;\n  }\n\n  for (const loader of loaders) {\n    if (typeof data === 'string') {\n      if (testDataAgainstText(data, loader)) {\n        return loader;\n      }\n    } else if (ArrayBuffer.isView(data)) {\n      if (testDataAgainstBinary(data.buffer, data.byteOffset, loader)) {\n        return loader;\n      }\n    } else if (data instanceof ArrayBuffer) {\n      const byteOffset = 0;\n\n      if (testDataAgainstBinary(data, byteOffset, loader)) {\n        return loader;\n      }\n    }\n  }\n\n  return null;\n}\n\nfunction testDataAgainstText(data, loader) {\n  if (loader.testText) {\n    return loader.testText(data);\n  }\n\n  const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];\n  return tests.some(test => data.startsWith(test));\n}\n\nfunction testDataAgainstBinary(data, byteOffset, loader) {\n  const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];\n  return tests.some(test => testBinary(data, byteOffset, loader, test));\n}\n\nfunction testBinary(data, byteOffset, loader, test) {\n  if (test instanceof ArrayBuffer) {\n    return (0,_loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_6__.compareArrayBuffers)(test, data, test.byteLength);\n  }\n\n  switch (typeof test) {\n    case 'function':\n      return test(data, loader);\n\n    case 'string':\n      const magic = getMagicString(data, byteOffset, test.length);\n      return test === magic;\n\n    default:\n      return false;\n  }\n}\n\nfunction getFirstCharacters(data, length = 5) {\n  if (typeof data === 'string') {\n    return data.slice(0, length);\n  } else if (ArrayBuffer.isView(data)) {\n    return getMagicString(data.buffer, data.byteOffset, length);\n  } else if (data instanceof ArrayBuffer) {\n    const byteOffset = 0;\n    return getMagicString(data, byteOffset, length);\n  }\n\n  return '';\n}\n\nfunction getMagicString(arrayBuffer, byteOffset, length) {\n  if (arrayBuffer.byteLength < byteOffset + length) {\n    return '';\n  }\n\n  const dataView = new DataView(arrayBuffer);\n  let magic = '';\n\n  for (let i = 0; i < length; i++) {\n    magic += String.fromCharCode(dataView.getUint8(byteOffset + i));\n  }\n\n  return magic;\n}\n//# sourceMappingURL=select-loader.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/lib/api/select-loader.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/lib/fetch/fetch-file.js":
/*!************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/lib/fetch/fetch-file.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"fetchFile\": function() { return /* binding */ fetchFile; }\n/* harmony export */ });\n/* harmony import */ var _loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @loaders.gl/loader-utils */ \"./node_modules/@loaders.gl/loader-utils/dist/esm/lib/path-utils/file-aliases.js\");\n/* harmony import */ var _utils_response_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/response-utils */ \"./node_modules/@loaders.gl/core/dist/esm/lib/utils/response-utils.js\");\n\n\nasync function fetchFile(url, options) {\n  if (typeof url === 'string') {\n    url = (0,_loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_0__.resolvePath)(url);\n    let fetchOptions = options;\n\n    if (options !== null && options !== void 0 && options.fetch && typeof (options === null || options === void 0 ? void 0 : options.fetch) !== 'function') {\n      fetchOptions = options.fetch;\n    }\n\n    return await fetch(url, fetchOptions);\n  }\n\n  return await (0,_utils_response_utils__WEBPACK_IMPORTED_MODULE_1__.makeResponse)(url);\n}\n//# sourceMappingURL=fetch-file.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/lib/fetch/fetch-file.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/get-data.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/get-data.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getArrayBufferOrStringFromData\": function() { return /* binding */ getArrayBufferOrStringFromData; },\n/* harmony export */   \"getArrayBufferOrStringFromDataSync\": function() { return /* binding */ getArrayBufferOrStringFromDataSync; },\n/* harmony export */   \"getAsyncIterableFromData\": function() { return /* binding */ getAsyncIterableFromData; },\n/* harmony export */   \"getReadableStream\": function() { return /* binding */ getReadableStream; }\n/* harmony export */ });\n/* harmony import */ var _loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @loaders.gl/loader-utils */ \"./node_modules/@loaders.gl/loader-utils/dist/esm/lib/iterators/async-iteration.js\");\n/* harmony import */ var _javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../javascript-utils/is-type */ \"./node_modules/@loaders.gl/core/dist/esm/javascript-utils/is-type.js\");\n/* harmony import */ var _iterators_make_iterator_make_iterator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../iterators/make-iterator/make-iterator */ \"./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-iterator.js\");\n/* harmony import */ var _utils_response_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/response-utils */ \"./node_modules/@loaders.gl/core/dist/esm/lib/utils/response-utils.js\");\n\n\n\n\nconst ERR_DATA = 'Cannot convert supplied data type';\nfunction getArrayBufferOrStringFromDataSync(data, loader, options) {\n  if (loader.text && typeof data === 'string') {\n    return data;\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isBuffer)(data)) {\n    data = data.buffer;\n  }\n\n  if (data instanceof ArrayBuffer) {\n    const arrayBuffer = data;\n\n    if (loader.text && !loader.binary) {\n      const textDecoder = new TextDecoder('utf8');\n      return textDecoder.decode(arrayBuffer);\n    }\n\n    return arrayBuffer;\n  }\n\n  if (ArrayBuffer.isView(data)) {\n    if (loader.text && !loader.binary) {\n      const textDecoder = new TextDecoder('utf8');\n      return textDecoder.decode(data);\n    }\n\n    let arrayBuffer = data.buffer;\n    const byteLength = data.byteLength || data.length;\n\n    if (data.byteOffset !== 0 || byteLength !== arrayBuffer.byteLength) {\n      arrayBuffer = arrayBuffer.slice(data.byteOffset, data.byteOffset + byteLength);\n    }\n\n    return arrayBuffer;\n  }\n\n  throw new Error(ERR_DATA);\n}\nasync function getArrayBufferOrStringFromData(data, loader, options) {\n  const isArrayBuffer = data instanceof ArrayBuffer || ArrayBuffer.isView(data);\n\n  if (typeof data === 'string' || isArrayBuffer) {\n    return getArrayBufferOrStringFromDataSync(data, loader, options);\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isBlob)(data)) {\n    data = await (0,_utils_response_utils__WEBPACK_IMPORTED_MODULE_1__.makeResponse)(data);\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isResponse)(data)) {\n    const response = data;\n    await (0,_utils_response_utils__WEBPACK_IMPORTED_MODULE_1__.checkResponse)(response);\n    return loader.binary ? await response.arrayBuffer() : await response.text();\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isReadableStream)(data)) {\n    data = (0,_iterators_make_iterator_make_iterator__WEBPACK_IMPORTED_MODULE_2__.makeIterator)(data, options);\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isIterable)(data) || (0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isAsyncIterable)(data)) {\n    return (0,_loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_3__.concatenateArrayBuffersAsync)(data);\n  }\n\n  throw new Error(ERR_DATA);\n}\nasync function getAsyncIterableFromData(data, options) {\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isIterator)(data)) {\n    return data;\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isResponse)(data)) {\n    const response = data;\n    await (0,_utils_response_utils__WEBPACK_IMPORTED_MODULE_1__.checkResponse)(response);\n    const body = await response.body;\n    return (0,_iterators_make_iterator_make_iterator__WEBPACK_IMPORTED_MODULE_2__.makeIterator)(body, options);\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isBlob)(data) || (0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isReadableStream)(data)) {\n    return (0,_iterators_make_iterator_make_iterator__WEBPACK_IMPORTED_MODULE_2__.makeIterator)(data, options);\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isAsyncIterable)(data)) {\n    return data[Symbol.asyncIterator]();\n  }\n\n  return getIterableFromData(data);\n}\nasync function getReadableStream(data) {\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isReadableStream)(data)) {\n    return data;\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isResponse)(data)) {\n    return data.body;\n  }\n\n  const response = await (0,_utils_response_utils__WEBPACK_IMPORTED_MODULE_1__.makeResponse)(data);\n  return response.body;\n}\n\nfunction getIterableFromData(data) {\n  if (ArrayBuffer.isView(data)) {\n    return function* oneChunk() {\n      yield data.buffer;\n    }();\n  }\n\n  if (data instanceof ArrayBuffer) {\n    return function* oneChunk() {\n      yield data;\n    }();\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isIterator)(data)) {\n    return data;\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isIterable)(data)) {\n    return data[Symbol.iterator]();\n  }\n\n  throw new Error(ERR_DATA);\n}\n//# sourceMappingURL=get-data.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/get-data.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/loader-context.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/loader-context.js ***!
  \***********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getLoaderContext\": function() { return /* binding */ getLoaderContext; },\n/* harmony export */   \"getLoadersFromContext\": function() { return /* binding */ getLoadersFromContext; }\n/* harmony export */ });\n/* harmony import */ var _option_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./option-utils */ \"./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/option-utils.js\");\n\nfunction getLoaderContext(context, options, previousContext = null) {\n  if (previousContext) {\n    return previousContext;\n  }\n\n  const resolvedContext = {\n    fetch: (0,_option_utils__WEBPACK_IMPORTED_MODULE_0__.getFetchFunction)(options, context),\n    ...context\n  };\n\n  if (!Array.isArray(resolvedContext.loaders)) {\n    resolvedContext.loaders = null;\n  }\n\n  return resolvedContext;\n}\nfunction getLoadersFromContext(loaders, context) {\n  if (!context && loaders && !Array.isArray(loaders)) {\n    return loaders;\n  }\n\n  let candidateLoaders;\n\n  if (loaders) {\n    candidateLoaders = Array.isArray(loaders) ? loaders : [loaders];\n  }\n\n  if (context && context.loaders) {\n    const contextLoaders = Array.isArray(context.loaders) ? context.loaders : [context.loaders];\n    candidateLoaders = candidateLoaders ? [...candidateLoaders, ...contextLoaders] : contextLoaders;\n  }\n\n  return candidateLoaders && candidateLoaders.length ? candidateLoaders : null;\n}\n//# sourceMappingURL=loader-context.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/loader-context.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/loggers.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/loggers.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ConsoleLog\": function() { return /* binding */ ConsoleLog; },\n/* harmony export */   \"NullLog\": function() { return /* binding */ NullLog; },\n/* harmony export */   \"probeLog\": function() { return /* binding */ probeLog; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var probe_gl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! probe.gl */ \"./node_modules/@probe.gl/log/dist/esm/log.js\");\n\n\nconst probeLog = new probe_gl__WEBPACK_IMPORTED_MODULE_1__.Log({\n  id: 'loaders.gl'\n});\nclass NullLog {\n  log() {\n    return () => {};\n  }\n\n  info() {\n    return () => {};\n  }\n\n  warn() {\n    return () => {};\n  }\n\n  error() {\n    return () => {};\n  }\n\n}\nclass ConsoleLog {\n  constructor() {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"console\", void 0);\n\n    this.console = console;\n  }\n\n  log(...args) {\n    return this.console.log.bind(this.console, ...args);\n  }\n\n  info(...args) {\n    return this.console.info.bind(this.console, ...args);\n  }\n\n  warn(...args) {\n    return this.console.warn.bind(this.console, ...args);\n  }\n\n  error(...args) {\n    return this.console.error.bind(this.console, ...args);\n  }\n\n}\n//# sourceMappingURL=loggers.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/loggers.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/normalize-loader.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/normalize-loader.js ***!
  \*************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isLoaderObject\": function() { return /* binding */ isLoaderObject; },\n/* harmony export */   \"normalizeLoader\": function() { return /* binding */ normalizeLoader; }\n/* harmony export */ });\n/* harmony import */ var _loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @loaders.gl/loader-utils */ \"./node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/assert.js\");\n\nfunction isLoaderObject(loader) {\n  var _loader;\n\n  if (!loader) {\n    return false;\n  }\n\n  if (Array.isArray(loader)) {\n    loader = loader[0];\n  }\n\n  const hasExtensions = Array.isArray((_loader = loader) === null || _loader === void 0 ? void 0 : _loader.extensions);\n  return hasExtensions;\n}\nfunction normalizeLoader(loader) {\n  var _loader2, _loader3;\n\n  (0,_loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_0__.assert)(loader, 'null loader');\n  (0,_loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_0__.assert)(isLoaderObject(loader), 'invalid loader');\n  let options;\n\n  if (Array.isArray(loader)) {\n    options = loader[1];\n    loader = loader[0];\n    loader = { ...loader,\n      options: { ...loader.options,\n        ...options\n      }\n    };\n  }\n\n  if ((_loader2 = loader) !== null && _loader2 !== void 0 && _loader2.parseTextSync || (_loader3 = loader) !== null && _loader3 !== void 0 && _loader3.parseText) {\n    loader.text = true;\n  }\n\n  if (!loader.text) {\n    loader.binary = true;\n  }\n\n  return loader;\n}\n//# sourceMappingURL=normalize-loader.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/normalize-loader.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/option-defaults.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/option-defaults.js ***!
  \************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DEFAULT_LOADER_OPTIONS\": function() { return /* binding */ DEFAULT_LOADER_OPTIONS; },\n/* harmony export */   \"REMOVED_LOADER_OPTIONS\": function() { return /* binding */ REMOVED_LOADER_OPTIONS; }\n/* harmony export */ });\n/* harmony import */ var _loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @loaders.gl/loader-utils */ \"./node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/globals.js\");\n/* harmony import */ var _loggers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loggers */ \"./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/loggers.js\");\n\n\nconst DEFAULT_LOADER_OPTIONS = {\n  fetch: null,\n  mimeType: undefined,\n  nothrow: false,\n  log: new _loggers__WEBPACK_IMPORTED_MODULE_0__.ConsoleLog(),\n  CDN: 'https://unpkg.com/@loaders.gl',\n  worker: true,\n  maxConcurrency: 3,\n  maxMobileConcurrency: 1,\n  reuseWorkers: _loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_1__.isBrowser,\n  _nodeWorkers: false,\n  _workerType: '',\n  limit: 0,\n  _limitMB: 0,\n  batchSize: 'auto',\n  batchDebounceMs: 0,\n  metadata: false,\n  transforms: []\n};\nconst REMOVED_LOADER_OPTIONS = {\n  throws: 'nothrow',\n  dataType: '(no longer used)',\n  uri: 'baseUri',\n  method: 'fetch.method',\n  headers: 'fetch.headers',\n  body: 'fetch.body',\n  mode: 'fetch.mode',\n  credentials: 'fetch.credentials',\n  cache: 'fetch.cache',\n  redirect: 'fetch.redirect',\n  referrer: 'fetch.referrer',\n  referrerPolicy: 'fetch.referrerPolicy',\n  integrity: 'fetch.integrity',\n  keepalive: 'fetch.keepalive',\n  signal: 'fetch.signal'\n};\n//# sourceMappingURL=option-defaults.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/option-defaults.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/option-utils.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/option-utils.js ***!
  \*********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getFetchFunction\": function() { return /* binding */ getFetchFunction; },\n/* harmony export */   \"getGlobalLoaderOptions\": function() { return /* binding */ getGlobalLoaderOptions; },\n/* harmony export */   \"getGlobalLoaderState\": function() { return /* binding */ getGlobalLoaderState; },\n/* harmony export */   \"normalizeOptions\": function() { return /* binding */ normalizeOptions; },\n/* harmony export */   \"setGlobalOptions\": function() { return /* binding */ setGlobalOptions; }\n/* harmony export */ });\n/* harmony import */ var _javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../javascript-utils/is-type */ \"./node_modules/@loaders.gl/core/dist/esm/javascript-utils/is-type.js\");\n/* harmony import */ var _fetch_fetch_file__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../fetch/fetch-file */ \"./node_modules/@loaders.gl/core/dist/esm/lib/fetch/fetch-file.js\");\n/* harmony import */ var _loggers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./loggers */ \"./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/loggers.js\");\n/* harmony import */ var _option_defaults__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./option-defaults */ \"./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/option-defaults.js\");\n\n\n\n\nfunction getGlobalLoaderState() {\n  globalThis.loaders = globalThis.loaders || {};\n  const {\n    loaders\n  } = globalThis;\n  loaders._state = loaders._state || {};\n  return loaders._state;\n}\nconst getGlobalLoaderOptions = () => {\n  const state = getGlobalLoaderState();\n  state.globalOptions = state.globalOptions || { ..._option_defaults__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_LOADER_OPTIONS\n  };\n  return state.globalOptions;\n};\nfunction setGlobalOptions(options) {\n  const state = getGlobalLoaderState();\n  const globalOptions = getGlobalLoaderOptions();\n  state.globalOptions = normalizeOptionsInternal(globalOptions, options);\n}\nfunction normalizeOptions(options, loader, loaders, url) {\n  loaders = loaders || [];\n  loaders = Array.isArray(loaders) ? loaders : [loaders];\n  validateOptions(options, loaders);\n  return normalizeOptionsInternal(loader, options, url);\n}\nfunction getFetchFunction(options, context) {\n  const globalOptions = getGlobalLoaderOptions();\n  const fetchOptions = options || globalOptions;\n\n  if (typeof fetchOptions.fetch === 'function') {\n    return fetchOptions.fetch;\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_1__.isObject)(fetchOptions.fetch)) {\n    return url => (0,_fetch_fetch_file__WEBPACK_IMPORTED_MODULE_2__.fetchFile)(url, fetchOptions);\n  }\n\n  if (context !== null && context !== void 0 && context.fetch) {\n    return context === null || context === void 0 ? void 0 : context.fetch;\n  }\n\n  return _fetch_fetch_file__WEBPACK_IMPORTED_MODULE_2__.fetchFile;\n}\n\nfunction validateOptions(options, loaders) {\n  validateOptionsObject(options, null, _option_defaults__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_LOADER_OPTIONS, _option_defaults__WEBPACK_IMPORTED_MODULE_0__.REMOVED_LOADER_OPTIONS, loaders);\n\n  for (const loader of loaders) {\n    const idOptions = options && options[loader.id] || {};\n    const loaderOptions = loader.options && loader.options[loader.id] || {};\n    const deprecatedOptions = loader.deprecatedOptions && loader.deprecatedOptions[loader.id] || {};\n    validateOptionsObject(idOptions, loader.id, loaderOptions, deprecatedOptions, loaders);\n  }\n}\n\nfunction validateOptionsObject(options, id, defaultOptions, deprecatedOptions, loaders) {\n  const loaderName = id || 'Top level';\n  const prefix = id ? \"\".concat(id, \".\") : '';\n\n  for (const key in options) {\n    const isSubOptions = !id && (0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_1__.isObject)(options[key]);\n    const isBaseUriOption = key === 'baseUri' && !id;\n    const isWorkerUrlOption = key === 'workerUrl' && id;\n\n    if (!(key in defaultOptions) && !isBaseUriOption && !isWorkerUrlOption) {\n      if (key in deprecatedOptions) {\n        _loggers__WEBPACK_IMPORTED_MODULE_3__.probeLog.warn(\"\".concat(loaderName, \" loader option '\").concat(prefix).concat(key, \"' no longer supported, use '\").concat(deprecatedOptions[key], \"'\"))();\n      } else if (!isSubOptions) {\n        const suggestion = findSimilarOption(key, loaders);\n        _loggers__WEBPACK_IMPORTED_MODULE_3__.probeLog.warn(\"\".concat(loaderName, \" loader option '\").concat(prefix).concat(key, \"' not recognized. \").concat(suggestion))();\n      }\n    }\n  }\n}\n\nfunction findSimilarOption(optionKey, loaders) {\n  const lowerCaseOptionKey = optionKey.toLowerCase();\n  let bestSuggestion = '';\n\n  for (const loader of loaders) {\n    for (const key in loader.options) {\n      if (optionKey === key) {\n        return \"Did you mean '\".concat(loader.id, \".\").concat(key, \"'?\");\n      }\n\n      const lowerCaseKey = key.toLowerCase();\n      const isPartialMatch = lowerCaseOptionKey.startsWith(lowerCaseKey) || lowerCaseKey.startsWith(lowerCaseOptionKey);\n\n      if (isPartialMatch) {\n        bestSuggestion = bestSuggestion || \"Did you mean '\".concat(loader.id, \".\").concat(key, \"'?\");\n      }\n    }\n  }\n\n  return bestSuggestion;\n}\n\nfunction normalizeOptionsInternal(loader, options, url) {\n  const loaderDefaultOptions = loader.options || {};\n  const mergedOptions = { ...loaderDefaultOptions\n  };\n  addUrlOptions(mergedOptions, url);\n\n  if (mergedOptions.log === null) {\n    mergedOptions.log = new _loggers__WEBPACK_IMPORTED_MODULE_3__.NullLog();\n  }\n\n  mergeNestedFields(mergedOptions, getGlobalLoaderOptions());\n  mergeNestedFields(mergedOptions, options);\n  return mergedOptions;\n}\n\nfunction mergeNestedFields(mergedOptions, options) {\n  for (const key in options) {\n    if (key in options) {\n      const value = options[key];\n\n      if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_1__.isPureObject)(value) && (0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_1__.isPureObject)(mergedOptions[key])) {\n        mergedOptions[key] = { ...mergedOptions[key],\n          ...options[key]\n        };\n      } else {\n        mergedOptions[key] = options[key];\n      }\n    }\n  }\n}\n\nfunction addUrlOptions(options, url) {\n  if (url && !('baseUri' in options)) {\n    options.baseUri = url;\n  }\n}\n//# sourceMappingURL=option-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/option-utils.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/lib/utils/log.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/lib/utils/log.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"log\": function() { return /* binding */ log; }\n/* harmony export */ });\n/* harmony import */ var _probe_gl_log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @probe.gl/log */ \"./node_modules/@probe.gl/log/dist/esm/log.js\");\n\nconst log = new _probe_gl_log__WEBPACK_IMPORTED_MODULE_0__.Log({\n  id: 'loaders.gl'\n});\n//# sourceMappingURL=log.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/lib/utils/log.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/lib/utils/mime-type-utils.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/lib/utils/mime-type-utils.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"parseMIMEType\": function() { return /* binding */ parseMIMEType; },\n/* harmony export */   \"parseMIMETypeFromURL\": function() { return /* binding */ parseMIMETypeFromURL; }\n/* harmony export */ });\nconst DATA_URL_PATTERN = /^data:([-\\w.]+\\/[-\\w.+]+)(;|,)/;\nconst MIME_TYPE_PATTERN = /^([-\\w.]+\\/[-\\w.+]+)/;\nfunction parseMIMEType(mimeString) {\n  const matches = MIME_TYPE_PATTERN.exec(mimeString);\n\n  if (matches) {\n    return matches[1];\n  }\n\n  return mimeString;\n}\nfunction parseMIMETypeFromURL(url) {\n  const matches = DATA_URL_PATTERN.exec(url);\n\n  if (matches) {\n    return matches[1];\n  }\n\n  return '';\n}\n//# sourceMappingURL=mime-type-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/lib/utils/mime-type-utils.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/lib/utils/resource-utils.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/lib/utils/resource-utils.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getResourceContentLength\": function() { return /* binding */ getResourceContentLength; },\n/* harmony export */   \"getResourceUrlAndType\": function() { return /* binding */ getResourceUrlAndType; }\n/* harmony export */ });\n/* harmony import */ var _javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../javascript-utils/is-type */ \"./node_modules/@loaders.gl/core/dist/esm/javascript-utils/is-type.js\");\n/* harmony import */ var _mime_type_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mime-type-utils */ \"./node_modules/@loaders.gl/core/dist/esm/lib/utils/mime-type-utils.js\");\n\n\nconst QUERY_STRING_PATTERN = /\\?.*/;\nfunction getResourceUrlAndType(resource) {\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isResponse)(resource)) {\n    const url = stripQueryString(resource.url || '');\n    const contentTypeHeader = resource.headers.get('content-type') || '';\n    return {\n      url,\n      type: (0,_mime_type_utils__WEBPACK_IMPORTED_MODULE_1__.parseMIMEType)(contentTypeHeader) || (0,_mime_type_utils__WEBPACK_IMPORTED_MODULE_1__.parseMIMETypeFromURL)(url)\n    };\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isBlob)(resource)) {\n    return {\n      url: stripQueryString(resource.name || ''),\n      type: resource.type || ''\n    };\n  }\n\n  if (typeof resource === 'string') {\n    return {\n      url: stripQueryString(resource),\n      type: (0,_mime_type_utils__WEBPACK_IMPORTED_MODULE_1__.parseMIMETypeFromURL)(resource)\n    };\n  }\n\n  return {\n    url: '',\n    type: ''\n  };\n}\nfunction getResourceContentLength(resource) {\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isResponse)(resource)) {\n    return resource.headers['content-length'] || -1;\n  }\n\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isBlob)(resource)) {\n    return resource.size;\n  }\n\n  if (typeof resource === 'string') {\n    return resource.length;\n  }\n\n  if (resource instanceof ArrayBuffer) {\n    return resource.byteLength;\n  }\n\n  if (ArrayBuffer.isView(resource)) {\n    return resource.byteLength;\n  }\n\n  return -1;\n}\n\nfunction stripQueryString(url) {\n  return url.replace(QUERY_STRING_PATTERN, '');\n}\n//# sourceMappingURL=resource-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/lib/utils/resource-utils.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/core/dist/esm/lib/utils/response-utils.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@loaders.gl/core/dist/esm/lib/utils/response-utils.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"checkResponse\": function() { return /* binding */ checkResponse; },\n/* harmony export */   \"checkResponseSync\": function() { return /* binding */ checkResponseSync; },\n/* harmony export */   \"makeResponse\": function() { return /* binding */ makeResponse; }\n/* harmony export */ });\n/* harmony import */ var _javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../javascript-utils/is-type */ \"./node_modules/@loaders.gl/core/dist/esm/javascript-utils/is-type.js\");\n/* harmony import */ var _resource_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resource-utils */ \"./node_modules/@loaders.gl/core/dist/esm/lib/utils/resource-utils.js\");\n\n\nasync function makeResponse(resource) {\n  if ((0,_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__.isResponse)(resource)) {\n    return resource;\n  }\n\n  const headers = {};\n  const contentLength = (0,_resource_utils__WEBPACK_IMPORTED_MODULE_1__.getResourceContentLength)(resource);\n\n  if (contentLength >= 0) {\n    headers['content-length'] = String(contentLength);\n  }\n\n  const {\n    url,\n    type\n  } = (0,_resource_utils__WEBPACK_IMPORTED_MODULE_1__.getResourceUrlAndType)(resource);\n\n  if (type) {\n    headers['content-type'] = type;\n  }\n\n  const initialDataUrl = await getInitialDataUrl(resource);\n\n  if (initialDataUrl) {\n    headers['x-first-bytes'] = initialDataUrl;\n  }\n\n  if (typeof resource === 'string') {\n    resource = new TextEncoder().encode(resource);\n  }\n\n  const response = new Response(resource, {\n    headers\n  });\n  Object.defineProperty(response, 'url', {\n    value: url\n  });\n  return response;\n}\nasync function checkResponse(response) {\n  if (!response.ok) {\n    const message = await getResponseError(response);\n    throw new Error(message);\n  }\n}\nfunction checkResponseSync(response) {\n  if (!response.ok) {\n    let message = \"\".concat(response.status, \" \").concat(response.statusText);\n    message = message.length > 60 ? \"\".concat(message.slice(0, 60), \"...\") : message;\n    throw new Error(message);\n  }\n}\n\nasync function getResponseError(response) {\n  let message = \"Failed to fetch resource \".concat(response.url, \" (\").concat(response.status, \"): \");\n\n  try {\n    const contentType = response.headers.get('Content-Type');\n    let text = response.statusText;\n\n    if (contentType.includes('application/json')) {\n      text += \" \".concat(await response.text());\n    }\n\n    message += text;\n    message = message.length > 60 ? \"\".concat(message.slice(0, 60), \"...\") : message;\n  } catch (error) {}\n\n  return message;\n}\n\nasync function getInitialDataUrl(resource) {\n  const INITIAL_DATA_LENGTH = 5;\n\n  if (typeof resource === 'string') {\n    return \"data:,\".concat(resource.slice(0, INITIAL_DATA_LENGTH));\n  }\n\n  if (resource instanceof Blob) {\n    const blobSlice = resource.slice(0, 5);\n    return await new Promise(resolve => {\n      const reader = new FileReader();\n\n      reader.onload = event => {\n        var _event$target;\n\n        return resolve(event === null || event === void 0 ? void 0 : (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.result);\n      };\n\n      reader.readAsDataURL(blobSlice);\n    });\n  }\n\n  if (resource instanceof ArrayBuffer) {\n    const slice = resource.slice(0, INITIAL_DATA_LENGTH);\n    const base64 = arrayBufferToBase64(slice);\n    return \"data:base64,\".concat(base64);\n  }\n\n  return null;\n}\n\nfunction arrayBufferToBase64(buffer) {\n  let binary = '';\n  const bytes = new Uint8Array(buffer);\n\n  for (let i = 0; i < bytes.byteLength; i++) {\n    binary += String.fromCharCode(bytes[i]);\n  }\n\n  return btoa(binary);\n}\n//# sourceMappingURL=response-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/core/dist/esm/lib/utils/response-utils.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/images/dist/esm/image-loader.js":
/*!******************************************************************!*\
  !*** ./node_modules/@loaders.gl/images/dist/esm/image-loader.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ImageLoader\": function() { return /* binding */ ImageLoader; },\n/* harmony export */   \"_typecheckImageLoader\": function() { return /* binding */ _typecheckImageLoader; }\n/* harmony export */ });\n/* harmony import */ var _lib_utils_version__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/utils/version */ \"./node_modules/@loaders.gl/images/dist/esm/lib/utils/version.js\");\n/* harmony import */ var _lib_parsers_parse_image__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/parsers/parse-image */ \"./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-image.js\");\n/* harmony import */ var _lib_category_api_binary_image_api__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/category-api/binary-image-api */ \"./node_modules/@loaders.gl/images/dist/esm/lib/category-api/binary-image-api.js\");\n\n\n\nconst EXTENSIONS = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'bmp', 'ico', 'svg'];\nconst MIME_TYPES = ['image/png', 'image/jpeg', 'image/gif', 'image/webp', 'image/bmp', 'image/vnd.microsoft.icon', 'image/svg+xml'];\nconst DEFAULT_IMAGE_LOADER_OPTIONS = {\n  image: {\n    type: 'auto',\n    decode: true\n  }\n};\nconst ImageLoader = {\n  id: 'image',\n  module: 'images',\n  name: 'Images',\n  version: _lib_utils_version__WEBPACK_IMPORTED_MODULE_0__.VERSION,\n  mimeTypes: MIME_TYPES,\n  extensions: EXTENSIONS,\n  parse: _lib_parsers_parse_image__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  tests: [arrayBuffer => Boolean((0,_lib_category_api_binary_image_api__WEBPACK_IMPORTED_MODULE_2__.getBinaryImageMetadata)(new DataView(arrayBuffer)))],\n  options: DEFAULT_IMAGE_LOADER_OPTIONS\n};\nconst _typecheckImageLoader = ImageLoader;\n//# sourceMappingURL=image-loader.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/images/dist/esm/image-loader.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/images/dist/esm/lib/category-api/binary-image-api.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/images/dist/esm/lib/category-api/binary-image-api.js ***!
  \***************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getBinaryImageMetadata\": function() { return /* binding */ getBinaryImageMetadata; },\n/* harmony export */   \"getBmpMetadata\": function() { return /* binding */ getBmpMetadata; }\n/* harmony export */ });\nconst BIG_ENDIAN = false;\nconst LITTLE_ENDIAN = true;\nfunction getBinaryImageMetadata(binaryData) {\n  const dataView = toDataView(binaryData);\n  return getPngMetadata(dataView) || getJpegMetadata(dataView) || getGifMetadata(dataView) || getBmpMetadata(dataView);\n}\n\nfunction getPngMetadata(binaryData) {\n  const dataView = toDataView(binaryData);\n  const isPng = dataView.byteLength >= 24 && dataView.getUint32(0, BIG_ENDIAN) === 0x89504e47;\n\n  if (!isPng) {\n    return null;\n  }\n\n  return {\n    mimeType: 'image/png',\n    width: dataView.getUint32(16, BIG_ENDIAN),\n    height: dataView.getUint32(20, BIG_ENDIAN)\n  };\n}\n\nfunction getGifMetadata(binaryData) {\n  const dataView = toDataView(binaryData);\n  const isGif = dataView.byteLength >= 10 && dataView.getUint32(0, BIG_ENDIAN) === 0x47494638;\n\n  if (!isGif) {\n    return null;\n  }\n\n  return {\n    mimeType: 'image/gif',\n    width: dataView.getUint16(6, LITTLE_ENDIAN),\n    height: dataView.getUint16(8, LITTLE_ENDIAN)\n  };\n}\n\nfunction getBmpMetadata(binaryData) {\n  const dataView = toDataView(binaryData);\n  const isBmp = dataView.byteLength >= 14 && dataView.getUint16(0, BIG_ENDIAN) === 0x424d && dataView.getUint32(2, LITTLE_ENDIAN) === dataView.byteLength;\n\n  if (!isBmp) {\n    return null;\n  }\n\n  return {\n    mimeType: 'image/bmp',\n    width: dataView.getUint32(18, LITTLE_ENDIAN),\n    height: dataView.getUint32(22, LITTLE_ENDIAN)\n  };\n}\n\nfunction getJpegMetadata(binaryData) {\n  const dataView = toDataView(binaryData);\n  const isJpeg = dataView.byteLength >= 3 && dataView.getUint16(0, BIG_ENDIAN) === 0xffd8 && dataView.getUint8(2) === 0xff;\n\n  if (!isJpeg) {\n    return null;\n  }\n\n  const {\n    tableMarkers,\n    sofMarkers\n  } = getJpegMarkers();\n  let i = 2;\n\n  while (i + 9 < dataView.byteLength) {\n    const marker = dataView.getUint16(i, BIG_ENDIAN);\n\n    if (sofMarkers.has(marker)) {\n      return {\n        mimeType: 'image/jpeg',\n        height: dataView.getUint16(i + 5, BIG_ENDIAN),\n        width: dataView.getUint16(i + 7, BIG_ENDIAN)\n      };\n    }\n\n    if (!tableMarkers.has(marker)) {\n      return null;\n    }\n\n    i += 2;\n    i += dataView.getUint16(i, BIG_ENDIAN);\n  }\n\n  return null;\n}\n\nfunction getJpegMarkers() {\n  const tableMarkers = new Set([0xffdb, 0xffc4, 0xffcc, 0xffdd, 0xfffe]);\n\n  for (let i = 0xffe0; i < 0xfff0; ++i) {\n    tableMarkers.add(i);\n  }\n\n  const sofMarkers = new Set([0xffc0, 0xffc1, 0xffc2, 0xffc3, 0xffc5, 0xffc6, 0xffc7, 0xffc9, 0xffca, 0xffcb, 0xffcd, 0xffce, 0xffcf, 0xffde]);\n  return {\n    tableMarkers,\n    sofMarkers\n  };\n}\n\nfunction toDataView(data) {\n  if (data instanceof DataView) {\n    return data;\n  }\n\n  if (ArrayBuffer.isView(data)) {\n    return new DataView(data.buffer);\n  }\n\n  if (data instanceof ArrayBuffer) {\n    return new DataView(data);\n  }\n\n  throw new Error('toDataView');\n}\n//# sourceMappingURL=binary-image-api.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/images/dist/esm/lib/category-api/binary-image-api.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/images/dist/esm/lib/category-api/image-type.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@loaders.gl/images/dist/esm/lib/category-api/image-type.js ***!
  \*********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getDefaultImageType\": function() { return /* binding */ getDefaultImageType; },\n/* harmony export */   \"isImageTypeSupported\": function() { return /* binding */ isImageTypeSupported; }\n/* harmony export */ });\n/* harmony import */ var _loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @loaders.gl/loader-utils */ \"./node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/globals.js\");\n\nconst {\n  _parseImageNode\n} = globalThis;\nconst IMAGE_SUPPORTED = typeof Image !== 'undefined';\nconst IMAGE_BITMAP_SUPPORTED = typeof ImageBitmap !== 'undefined';\nconst NODE_IMAGE_SUPPORTED = Boolean(_parseImageNode);\nconst DATA_SUPPORTED = _loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_0__.isBrowser ? true : NODE_IMAGE_SUPPORTED;\nfunction isImageTypeSupported(type) {\n  switch (type) {\n    case 'auto':\n      return IMAGE_BITMAP_SUPPORTED || IMAGE_SUPPORTED || DATA_SUPPORTED;\n\n    case 'imagebitmap':\n      return IMAGE_BITMAP_SUPPORTED;\n\n    case 'image':\n      return IMAGE_SUPPORTED;\n\n    case 'data':\n      return DATA_SUPPORTED;\n\n    default:\n      throw new Error(\"@loaders.gl/images: image \".concat(type, \" not supported in this environment\"));\n  }\n}\nfunction getDefaultImageType() {\n  if (IMAGE_BITMAP_SUPPORTED) {\n    return 'imagebitmap';\n  }\n\n  if (IMAGE_SUPPORTED) {\n    return 'image';\n  }\n\n  if (DATA_SUPPORTED) {\n    return 'data';\n  }\n\n  throw new Error('Install \\'@loaders.gl/polyfills\\' to parse images under Node.js');\n}\n//# sourceMappingURL=image-type.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/images/dist/esm/lib/category-api/image-type.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/images/dist/esm/lib/category-api/parsed-image-api.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/images/dist/esm/lib/category-api/parsed-image-api.js ***!
  \***************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"deleteImage\": function() { return /* binding */ deleteImage; },\n/* harmony export */   \"getImageData\": function() { return /* binding */ getImageData; },\n/* harmony export */   \"getImageSize\": function() { return /* binding */ getImageSize; },\n/* harmony export */   \"getImageType\": function() { return /* binding */ getImageType; },\n/* harmony export */   \"isImage\": function() { return /* binding */ isImage; }\n/* harmony export */ });\nfunction isImage(image) {\n  return Boolean(getImageTypeOrNull(image));\n}\nfunction deleteImage(image) {\n  switch (getImageType(image)) {\n    case 'imagebitmap':\n      image.close();\n      break;\n\n    default:\n  }\n}\nfunction getImageType(image) {\n  const format = getImageTypeOrNull(image);\n\n  if (!format) {\n    throw new Error('Not an image');\n  }\n\n  return format;\n}\nfunction getImageSize(image) {\n  return getImageData(image);\n}\nfunction getImageData(image) {\n  switch (getImageType(image)) {\n    case 'data':\n      return image;\n\n    case 'image':\n    case 'imagebitmap':\n      const canvas = document.createElement('canvas');\n      const context = canvas.getContext('2d');\n\n      if (!context) {\n        throw new Error('getImageData');\n      }\n\n      canvas.width = image.width;\n      canvas.height = image.height;\n      context.drawImage(image, 0, 0);\n      return context.getImageData(0, 0, image.width, image.height);\n\n    default:\n      throw new Error('getImageData');\n  }\n}\n\nfunction getImageTypeOrNull(image) {\n  if (typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap) {\n    return 'imagebitmap';\n  }\n\n  if (typeof Image !== 'undefined' && image instanceof Image) {\n    return 'image';\n  }\n\n  if (image && typeof image === 'object' && image.data && image.width && image.height) {\n    return 'data';\n  }\n\n  return null;\n}\n//# sourceMappingURL=parsed-image-api.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/images/dist/esm/lib/category-api/parsed-image-api.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-image.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-image.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ parseImage; }\n/* harmony export */ });\n/* harmony import */ var _loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @loaders.gl/loader-utils */ \"./node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/assert.js\");\n/* harmony import */ var _category_api_image_type__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../category-api/image-type */ \"./node_modules/@loaders.gl/images/dist/esm/lib/category-api/image-type.js\");\n/* harmony import */ var _category_api_parsed_image_api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../category-api/parsed-image-api */ \"./node_modules/@loaders.gl/images/dist/esm/lib/category-api/parsed-image-api.js\");\n/* harmony import */ var _parse_to_image__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse-to-image */ \"./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-to-image.js\");\n/* harmony import */ var _parse_to_image_bitmap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parse-to-image-bitmap */ \"./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-to-image-bitmap.js\");\n/* harmony import */ var _parse_to_node_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parse-to-node-image */ \"./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-to-node-image.js\");\n\n\n\n\n\n\nasync function parseImage(arrayBuffer, options, context) {\n  options = options || {};\n  const imageOptions = options.image || {};\n  const imageType = imageOptions.type || 'auto';\n  const {\n    url\n  } = context || {};\n  const loadType = getLoadableImageType(imageType);\n  let image;\n\n  switch (loadType) {\n    case 'imagebitmap':\n      image = await (0,_parse_to_image_bitmap__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arrayBuffer, options, url);\n      break;\n\n    case 'image':\n      image = await (0,_parse_to_image__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(arrayBuffer, options, url);\n      break;\n\n    case 'data':\n      image = await (0,_parse_to_node_image__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(arrayBuffer, options);\n      break;\n\n    default:\n      (0,_loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_3__.assert)(false);\n  }\n\n  if (imageType === 'data') {\n    image = (0,_category_api_parsed_image_api__WEBPACK_IMPORTED_MODULE_4__.getImageData)(image);\n  }\n\n  return image;\n}\n\nfunction getLoadableImageType(type) {\n  switch (type) {\n    case 'auto':\n    case 'data':\n      return (0,_category_api_image_type__WEBPACK_IMPORTED_MODULE_5__.getDefaultImageType)();\n\n    default:\n      (0,_category_api_image_type__WEBPACK_IMPORTED_MODULE_5__.isImageTypeSupported)(type);\n      return type;\n  }\n}\n//# sourceMappingURL=parse-image.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-image.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-to-image-bitmap.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-to-image-bitmap.js ***!
  \***************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ parseToImageBitmap; }\n/* harmony export */ });\n/* harmony import */ var _svg_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./svg-utils */ \"./node_modules/@loaders.gl/images/dist/esm/lib/parsers/svg-utils.js\");\n/* harmony import */ var _parse_to_image__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse-to-image */ \"./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-to-image.js\");\n\n\nconst EMPTY_OBJECT = {};\nlet imagebitmapOptionsSupported = true;\nasync function parseToImageBitmap(arrayBuffer, options, url) {\n  let blob;\n\n  if ((0,_svg_utils__WEBPACK_IMPORTED_MODULE_0__.isSVG)(url)) {\n    const image = await (0,_parse_to_image__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(arrayBuffer, options, url);\n    blob = image;\n  } else {\n    blob = (0,_svg_utils__WEBPACK_IMPORTED_MODULE_0__.getBlob)(arrayBuffer, url);\n  }\n\n  const imagebitmapOptions = options && options.imagebitmap;\n  return await safeCreateImageBitmap(blob, imagebitmapOptions);\n}\n\nasync function safeCreateImageBitmap(blob, imagebitmapOptions = null) {\n  if (isEmptyObject(imagebitmapOptions) || !imagebitmapOptionsSupported) {\n    imagebitmapOptions = null;\n  }\n\n  if (imagebitmapOptions) {\n    try {\n      return await createImageBitmap(blob, imagebitmapOptions);\n    } catch (error) {\n      console.warn(error);\n      imagebitmapOptionsSupported = false;\n    }\n  }\n\n  return await createImageBitmap(blob);\n}\n\nfunction isEmptyObject(object) {\n  for (const key in object || EMPTY_OBJECT) {\n    return false;\n  }\n\n  return true;\n}\n//# sourceMappingURL=parse-to-image-bitmap.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-to-image-bitmap.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-to-image.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-to-image.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ parseToImage; },\n/* harmony export */   \"loadToImage\": function() { return /* binding */ loadToImage; }\n/* harmony export */ });\n/* harmony import */ var _svg_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./svg-utils */ \"./node_modules/@loaders.gl/images/dist/esm/lib/parsers/svg-utils.js\");\n\nasync function parseToImage(arrayBuffer, options, url) {\n  const blobOrDataUrl = (0,_svg_utils__WEBPACK_IMPORTED_MODULE_0__.getBlobOrSVGDataUrl)(arrayBuffer, url);\n  const URL = self.URL || self.webkitURL;\n  const objectUrl = typeof blobOrDataUrl !== 'string' && URL.createObjectURL(blobOrDataUrl);\n\n  try {\n    return await loadToImage(objectUrl || blobOrDataUrl, options);\n  } finally {\n    if (objectUrl) {\n      URL.revokeObjectURL(objectUrl);\n    }\n  }\n}\nasync function loadToImage(url, options) {\n  const image = new Image();\n  image.src = url;\n\n  if (options.image && options.image.decode && image.decode) {\n    await image.decode();\n    return image;\n  }\n\n  return await new Promise((resolve, reject) => {\n    try {\n      image.onload = () => resolve(image);\n\n      image.onerror = err => reject(new Error(\"Could not load image \".concat(url, \": \").concat(err)));\n    } catch (error) {\n      reject(error);\n    }\n  });\n}\n//# sourceMappingURL=parse-to-image.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-to-image.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-to-node-image.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-to-node-image.js ***!
  \*************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ parseToNodeImage; }\n/* harmony export */ });\n/* harmony import */ var _loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @loaders.gl/loader-utils */ \"./node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/assert.js\");\n/* harmony import */ var _category_api_binary_image_api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../category-api/binary-image-api */ \"./node_modules/@loaders.gl/images/dist/esm/lib/category-api/binary-image-api.js\");\n\n\nasync function parseToNodeImage(arrayBuffer, options) {\n  const {\n    mimeType\n  } = (0,_category_api_binary_image_api__WEBPACK_IMPORTED_MODULE_0__.getBinaryImageMetadata)(arrayBuffer) || {};\n  const _parseImageNode = globalThis._parseImageNode;\n  (0,_loaders_gl_loader_utils__WEBPACK_IMPORTED_MODULE_1__.assert)(_parseImageNode);\n  return await _parseImageNode(arrayBuffer, mimeType);\n}\n//# sourceMappingURL=parse-to-node-image.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-to-node-image.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/images/dist/esm/lib/parsers/svg-utils.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@loaders.gl/images/dist/esm/lib/parsers/svg-utils.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getBlob\": function() { return /* binding */ getBlob; },\n/* harmony export */   \"getBlobOrSVGDataUrl\": function() { return /* binding */ getBlobOrSVGDataUrl; },\n/* harmony export */   \"isSVG\": function() { return /* binding */ isSVG; }\n/* harmony export */ });\nconst SVG_DATA_URL_PATTERN = /^data:image\\/svg\\+xml/;\nconst SVG_URL_PATTERN = /\\.svg((\\?|#).*)?$/;\nfunction isSVG(url) {\n  return url && (SVG_DATA_URL_PATTERN.test(url) || SVG_URL_PATTERN.test(url));\n}\nfunction getBlobOrSVGDataUrl(arrayBuffer, url) {\n  if (isSVG(url)) {\n    const textDecoder = new TextDecoder();\n    let xmlText = textDecoder.decode(arrayBuffer);\n\n    try {\n      if (typeof unescape === 'function' && typeof encodeURIComponent === 'function') {\n        xmlText = unescape(encodeURIComponent(xmlText));\n      }\n    } catch (error) {\n      throw new Error(error.message);\n    }\n\n    const src = \"data:image/svg+xml;base64,\".concat(btoa(xmlText));\n    return src;\n  }\n\n  return getBlob(arrayBuffer, url);\n}\nfunction getBlob(arrayBuffer, url) {\n  if (isSVG(url)) {\n    throw new Error('SVG cannot be parsed directly to imagebitmap');\n  }\n\n  return new Blob([new Uint8Array(arrayBuffer)]);\n}\n//# sourceMappingURL=svg-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/images/dist/esm/lib/parsers/svg-utils.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/images/dist/esm/lib/utils/version.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@loaders.gl/images/dist/esm/lib/utils/version.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"VERSION\": function() { return /* binding */ VERSION; }\n/* harmony export */ });\nconst VERSION =  true ? \"3.2.13\" : 0;\n//# sourceMappingURL=version.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/images/dist/esm/lib/utils/version.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/array-buffer-utils.js":
/*!***********************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/array-buffer-utils.js ***!
  \***********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"compareArrayBuffers\": function() { return /* binding */ compareArrayBuffers; },\n/* harmony export */   \"concatenateArrayBuffers\": function() { return /* binding */ concatenateArrayBuffers; },\n/* harmony export */   \"concatenateTypedArrays\": function() { return /* binding */ concatenateTypedArrays; },\n/* harmony export */   \"sliceArrayBuffer\": function() { return /* binding */ sliceArrayBuffer; },\n/* harmony export */   \"toArrayBuffer\": function() { return /* binding */ toArrayBuffer; }\n/* harmony export */ });\n/* harmony import */ var _buffer_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./buffer-utils */ \"./node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/buffer-utils.js\");\n\nfunction toArrayBuffer(data) {\n  if ((0,_buffer_utils__WEBPACK_IMPORTED_MODULE_0__.isBuffer)(data)) {\n    return (0,_buffer_utils__WEBPACK_IMPORTED_MODULE_0__.bufferToArrayBuffer)(data);\n  }\n\n  if (data instanceof ArrayBuffer) {\n    return data;\n  }\n\n  if (ArrayBuffer.isView(data)) {\n    if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) {\n      return data.buffer;\n    }\n\n    return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);\n  }\n\n  if (typeof data === 'string') {\n    const text = data;\n    const uint8Array = new TextEncoder().encode(text);\n    return uint8Array.buffer;\n  }\n\n  if (data && typeof data === 'object' && data._toArrayBuffer) {\n    return data._toArrayBuffer();\n  }\n\n  throw new Error('toArrayBuffer');\n}\nfunction compareArrayBuffers(arrayBuffer1, arrayBuffer2, byteLength) {\n  byteLength = byteLength || arrayBuffer1.byteLength;\n\n  if (arrayBuffer1.byteLength < byteLength || arrayBuffer2.byteLength < byteLength) {\n    return false;\n  }\n\n  const array1 = new Uint8Array(arrayBuffer1);\n  const array2 = new Uint8Array(arrayBuffer2);\n\n  for (let i = 0; i < array1.length; ++i) {\n    if (array1[i] !== array2[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\nfunction concatenateArrayBuffers(...sources) {\n  const sourceArrays = sources.map(source2 => source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2);\n  const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0);\n  const result = new Uint8Array(byteLength);\n  let offset = 0;\n\n  for (const sourceArray of sourceArrays) {\n    result.set(sourceArray, offset);\n    offset += sourceArray.byteLength;\n  }\n\n  return result.buffer;\n}\nfunction concatenateTypedArrays(...typedArrays) {\n  const arrays = typedArrays;\n  const TypedArrayConstructor = arrays && arrays.length > 1 && arrays[0].constructor || null;\n\n  if (!TypedArrayConstructor) {\n    throw new Error('\"concatenateTypedArrays\" - incorrect quantity of arguments or arguments have incompatible data types');\n  }\n\n  const sumLength = arrays.reduce((acc, value) => acc + value.length, 0);\n  const result = new TypedArrayConstructor(sumLength);\n  let offset = 0;\n\n  for (const array of arrays) {\n    result.set(array, offset);\n    offset += array.length;\n  }\n\n  return result;\n}\nfunction sliceArrayBuffer(arrayBuffer, byteOffset, byteLength) {\n  const subArray = byteLength !== undefined ? new Uint8Array(arrayBuffer).subarray(byteOffset, byteOffset + byteLength) : new Uint8Array(arrayBuffer).subarray(byteOffset);\n  const arrayCopy = new Uint8Array(subArray);\n  return arrayCopy.buffer;\n}\n//# sourceMappingURL=array-buffer-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/array-buffer-utils.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/buffer-utils.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/buffer-utils.js ***!
  \*****************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"bufferToArrayBuffer\": function() { return /* binding */ bufferToArrayBuffer; },\n/* harmony export */   \"isBuffer\": function() { return /* binding */ isBuffer; },\n/* harmony export */   \"toBuffer\": function() { return /* binding */ toBuffer; }\n/* harmony export */ });\n/* harmony import */ var _node_buffer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node/buffer */ \"?1fc0\");\n/* harmony import */ var _node_buffer__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_buffer__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction isBuffer(value) {\n  return value && typeof value === 'object' && value.isBuffer;\n}\nfunction toBuffer(data) {\n  return _node_buffer__WEBPACK_IMPORTED_MODULE_0__.toBuffer ? _node_buffer__WEBPACK_IMPORTED_MODULE_0__.toBuffer(data) : data;\n}\nfunction bufferToArrayBuffer(buffer) {\n  if (isBuffer(buffer)) {\n    const typedArray = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.length);\n    return typedArray.slice().buffer;\n  }\n\n  return buffer;\n}\n//# sourceMappingURL=buffer-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/buffer-utils.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/assert.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/assert.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"assert\": function() { return /* binding */ assert; }\n/* harmony export */ });\nfunction assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'loader assertion failed.');\n  }\n}\n//# sourceMappingURL=assert.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/assert.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/globals.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/globals.js ***!
  \*********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"document\": function() { return /* binding */ document_; },\n/* harmony export */   \"global\": function() { return /* binding */ global_; },\n/* harmony export */   \"isBrowser\": function() { return /* binding */ isBrowser; },\n/* harmony export */   \"isWorker\": function() { return /* binding */ isWorker; },\n/* harmony export */   \"nodeVersion\": function() { return /* binding */ nodeVersion; },\n/* harmony export */   \"self\": function() { return /* binding */ self_; },\n/* harmony export */   \"window\": function() { return /* binding */ window_; }\n/* harmony export */ });\n/* provided dependency */ var process = __webpack_require__(/*! process/browser */ \"./node_modules/process/browser.js\");\nconst globals = {\n  self: typeof self !== 'undefined' && self,\n  window: typeof window !== 'undefined' && window,\n  global: typeof __webpack_require__.g !== 'undefined' && __webpack_require__.g,\n  document: typeof document !== 'undefined' && document\n};\nconst self_ = globals.self || globals.window || globals.global || {};\nconst window_ = globals.window || globals.self || globals.global || {};\nconst global_ = globals.global || globals.self || globals.window || {};\nconst document_ = globals.document || {};\n\nconst isBrowser = Boolean(typeof process !== 'object' || String(process) !== '[object process]' || process.browser);\nconst isWorker = typeof importScripts === 'function';\nconst matches = typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\nconst nodeVersion = matches && parseFloat(matches[1]) || 0;\n//# sourceMappingURL=globals.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/globals.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/loader-utils/dist/esm/lib/iterators/async-iteration.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/loader-utils/dist/esm/lib/iterators/async-iteration.js ***!
  \*****************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"concatenateArrayBuffersAsync\": function() { return /* binding */ concatenateArrayBuffersAsync; },\n/* harmony export */   \"concatenateStringsAsync\": function() { return /* binding */ concatenateStringsAsync; },\n/* harmony export */   \"forEach\": function() { return /* binding */ forEach; }\n/* harmony export */ });\n/* harmony import */ var _binary_utils_array_buffer_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../binary-utils/array-buffer-utils */ \"./node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/array-buffer-utils.js\");\n\nasync function forEach(iterator, visitor) {\n  while (true) {\n    const {\n      done,\n      value\n    } = await iterator.next();\n\n    if (done) {\n      iterator.return();\n      return;\n    }\n\n    const cancel = visitor(value);\n\n    if (cancel) {\n      return;\n    }\n  }\n}\nasync function concatenateArrayBuffersAsync(asyncIterator) {\n  const arrayBuffers = [];\n\n  for await (const chunk of asyncIterator) {\n    arrayBuffers.push(chunk);\n  }\n\n  return (0,_binary_utils_array_buffer_utils__WEBPACK_IMPORTED_MODULE_0__.concatenateArrayBuffers)(...arrayBuffers);\n}\nasync function concatenateStringsAsync(asyncIterator) {\n  const strings = [];\n\n  for await (const chunk of asyncIterator) {\n    strings.push(chunk);\n  }\n\n  return strings.join('');\n}\n//# sourceMappingURL=async-iteration.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/iterators/async-iteration.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/loader-utils/dist/esm/lib/path-utils/file-aliases.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/loader-utils/dist/esm/lib/path-utils/file-aliases.js ***!
  \***************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"addAliases\": function() { return /* binding */ addAliases; },\n/* harmony export */   \"getPathPrefix\": function() { return /* binding */ getPathPrefix; },\n/* harmony export */   \"resolvePath\": function() { return /* binding */ resolvePath; },\n/* harmony export */   \"setPathPrefix\": function() { return /* binding */ setPathPrefix; }\n/* harmony export */ });\nlet pathPrefix = '';\nconst fileAliases = {};\nfunction setPathPrefix(prefix) {\n  pathPrefix = prefix;\n}\nfunction getPathPrefix() {\n  return pathPrefix;\n}\nfunction addAliases(aliases) {\n  Object.assign(fileAliases, aliases);\n}\nfunction resolvePath(filename) {\n  for (const alias in fileAliases) {\n    if (filename.startsWith(alias)) {\n      const replacement = fileAliases[alias];\n      filename = filename.replace(alias, replacement);\n    }\n  }\n\n  if (!filename.startsWith('http://') && !filename.startsWith('https://')) {\n    filename = \"\".concat(pathPrefix).concat(filename);\n  }\n\n  return filename;\n}\n//# sourceMappingURL=file-aliases.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/path-utils/file-aliases.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/loader-utils/dist/esm/lib/path-utils/path.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@loaders.gl/loader-utils/dist/esm/lib/path-utils/path.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"dirname\": function() { return /* binding */ dirname; },\n/* harmony export */   \"filename\": function() { return /* binding */ filename; },\n/* harmony export */   \"join\": function() { return /* binding */ join; }\n/* harmony export */ });\nfunction filename(url) {\n  const slashIndex = url && url.lastIndexOf('/');\n  return slashIndex >= 0 ? url.substr(slashIndex + 1) : '';\n}\nfunction dirname(url) {\n  const slashIndex = url && url.lastIndexOf('/');\n  return slashIndex >= 0 ? url.substr(0, slashIndex) : '';\n}\nfunction join(...parts) {\n  const separator = '/';\n  parts = parts.map((part, index) => {\n    if (index) {\n      part = part.replace(new RegExp(\"^\".concat(separator)), '');\n    }\n\n    if (index !== parts.length - 1) {\n      part = part.replace(new RegExp(\"\".concat(separator, \"$\")), '');\n    }\n\n    return part;\n  });\n  return parts.join(separator);\n}\n//# sourceMappingURL=path.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/path-utils/path.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/loader-utils/dist/esm/lib/worker-loader-utils/parse-with-worker.js":
/*!*****************************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/loader-utils/dist/esm/lib/worker-loader-utils/parse-with-worker.js ***!
  \*****************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"canParseWithWorker\": function() { return /* binding */ canParseWithWorker; },\n/* harmony export */   \"parseWithWorker\": function() { return /* binding */ parseWithWorker; }\n/* harmony export */ });\n/* harmony import */ var _loaders_gl_worker_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @loaders.gl/worker-utils */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/globals.js\");\n/* harmony import */ var _loaders_gl_worker_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @loaders.gl/worker-utils */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-farm.js\");\n/* harmony import */ var _loaders_gl_worker_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @loaders.gl/worker-utils */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-api/get-worker-url.js\");\n\n\nfunction canParseWithWorker(loader, options) {\n  if (!_loaders_gl_worker_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isSupported()) {\n    return false;\n  }\n\n  if (!_loaders_gl_worker_utils__WEBPACK_IMPORTED_MODULE_1__.isBrowser && !(options !== null && options !== void 0 && options._nodeWorkers)) {\n    return false;\n  }\n\n  return loader.worker && (options === null || options === void 0 ? void 0 : options.worker);\n}\nasync function parseWithWorker(loader, data, options, context, parseOnMainThread) {\n  const name = loader.id;\n  const url = (0,_loaders_gl_worker_utils__WEBPACK_IMPORTED_MODULE_2__.getWorkerURL)(loader, options);\n  const workerFarm = _loaders_gl_worker_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getWorkerFarm(options);\n  const workerPool = workerFarm.getWorkerPool({\n    name,\n    url\n  });\n  options = JSON.parse(JSON.stringify(options));\n  context = JSON.parse(JSON.stringify(context || {}));\n  const job = await workerPool.startJob('process-on-worker', onMessage.bind(null, parseOnMainThread));\n  job.postMessage('process', {\n    input: data,\n    options,\n    context\n  });\n  const result = await job.result;\n  return await result.result;\n}\n\nasync function onMessage(parseOnMainThread, job, type, payload) {\n  switch (type) {\n    case 'done':\n      job.done(payload);\n      break;\n\n    case 'error':\n      job.error(new Error(payload.error));\n      break;\n\n    case 'process':\n      const {\n        id,\n        input,\n        options\n      } = payload;\n\n      try {\n        const result = await parseOnMainThread(input, options);\n        job.postMessage('done', {\n          id,\n          result\n        });\n      } catch (error) {\n        const message = error instanceof Error ? error.message : 'unknown error';\n        job.postMessage('error', {\n          id,\n          error: message\n        });\n      }\n\n      break;\n\n    default:\n      console.warn(\"parse-with-worker unknown message \".concat(type));\n  }\n}\n//# sourceMappingURL=parse-with-worker.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/worker-loader-utils/parse-with-worker.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/assert.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/assert.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"assert\": function() { return /* binding */ assert; }\n/* harmony export */ });\nfunction assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'loaders.gl assertion failed.');\n  }\n}\n//# sourceMappingURL=assert.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/assert.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/globals.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/globals.js ***!
  \*********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"document\": function() { return /* binding */ document_; },\n/* harmony export */   \"global\": function() { return /* binding */ global_; },\n/* harmony export */   \"isBrowser\": function() { return /* binding */ isBrowser; },\n/* harmony export */   \"isMobile\": function() { return /* binding */ isMobile; },\n/* harmony export */   \"isWorker\": function() { return /* binding */ isWorker; },\n/* harmony export */   \"nodeVersion\": function() { return /* binding */ nodeVersion; },\n/* harmony export */   \"self\": function() { return /* binding */ self_; },\n/* harmony export */   \"window\": function() { return /* binding */ window_; }\n/* harmony export */ });\n/* provided dependency */ var process = __webpack_require__(/*! process/browser */ \"./node_modules/process/browser.js\");\nconst globals = {\n  self: typeof self !== 'undefined' && self,\n  window: typeof window !== 'undefined' && window,\n  global: typeof __webpack_require__.g !== 'undefined' && __webpack_require__.g,\n  document: typeof document !== 'undefined' && document\n};\nconst self_ = globals.self || globals.window || globals.global || {};\nconst window_ = globals.window || globals.self || globals.global || {};\nconst global_ = globals.global || globals.self || globals.window || {};\nconst document_ = globals.document || {};\n\nconst isBrowser = typeof process !== 'object' || String(process) !== '[object process]' || process.browser;\nconst isWorker = typeof importScripts === 'function';\nconst isMobile = typeof window !== 'undefined' && typeof window.orientation !== 'undefined';\nconst matches = typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\nconst nodeVersion = matches && parseFloat(matches[1]) || 0;\n//# sourceMappingURL=globals.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/globals.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/version.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/version.js ***!
  \*********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"VERSION\": function() { return /* binding */ VERSION; }\n/* harmony export */ });\nconst DEFAULT_VERSION = 'latest';\nconst VERSION =  true ? \"3.2.13\" : 0;\n\nif (false) {}\n//# sourceMappingURL=version.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/version.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/worker-utils/dist/esm/lib/node/worker_threads-browser.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/worker-utils/dist/esm/lib/node/worker_threads-browser.js ***!
  \*******************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Worker\": function() { return /* binding */ Worker; },\n/* harmony export */   \"parentPort\": function() { return /* binding */ parentPort; }\n/* harmony export */ });\nclass Worker {}\nconst parentPort = null;\n//# sourceMappingURL=worker_threads-browser.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/node/worker_threads-browser.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-api/get-worker-url.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-api/get-worker-url.js ***!
  \*****************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getWorkerName\": function() { return /* binding */ getWorkerName; },\n/* harmony export */   \"getWorkerURL\": function() { return /* binding */ getWorkerURL; }\n/* harmony export */ });\n/* harmony import */ var _env_utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../env-utils/assert */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/assert.js\");\n\n\nconst NPM_TAG = 'latest';\nconst VERSION =  true ? \"3.2.13\" : 0;\nfunction getWorkerName(worker) {\n  const warning = worker.version !== VERSION ? \" (worker-utils@\".concat(VERSION, \")\") : '';\n  return \"\".concat(worker.name, \"@\").concat(worker.version).concat(warning);\n}\nfunction getWorkerURL(worker, options = {}) {\n  const workerOptions = options[worker.id] || {};\n  const workerFile = \"\".concat(worker.id, \"-worker.js\");\n  let url = workerOptions.workerUrl;\n\n  if (!url && worker.id === 'compression') {\n    url = options.workerUrl;\n  }\n\n  if (options._workerType === 'test') {\n    url = \"modules/\".concat(worker.module, \"/dist/\").concat(workerFile);\n  }\n\n  if (!url) {\n    let version = worker.version;\n\n    if (version === 'latest') {\n      version = NPM_TAG;\n    }\n\n    const versionTag = version ? \"@\".concat(version) : '';\n    url = \"https://unpkg.com/@loaders.gl/\".concat(worker.module).concat(versionTag, \"/dist/\").concat(workerFile);\n  }\n\n  (0,_env_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(url);\n  return url;\n}\n//# sourceMappingURL=get-worker-url.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-api/get-worker-url.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-api/validate-worker-version.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-api/validate-worker-version.js ***!
  \**************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"validateWorkerVersion\": function() { return /* binding */ validateWorkerVersion; }\n/* harmony export */ });\n/* harmony import */ var _env_utils_assert__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../env-utils/assert */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/assert.js\");\n/* harmony import */ var _env_utils_version__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../env-utils/version */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/version.js\");\n\n\nfunction validateWorkerVersion(worker, coreVersion = _env_utils_version__WEBPACK_IMPORTED_MODULE_0__.VERSION) {\n  (0,_env_utils_assert__WEBPACK_IMPORTED_MODULE_1__.assert)(worker, 'no worker provided');\n  const workerVersion = worker.version;\n\n  if (!coreVersion || !workerVersion) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction parseVersion(version) {\n  const parts = version.split('.').map(Number);\n  return {\n    major: parts[0],\n    minor: parts[1]\n  };\n}\n//# sourceMappingURL=validate-worker-version.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-api/validate-worker-version.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-farm.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-farm.js ***!
  \***************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ WorkerFarm; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _worker_pool__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./worker-pool */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-pool.js\");\n/* harmony import */ var _worker_thread__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./worker-thread */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-thread.js\");\n\n\n\nconst DEFAULT_PROPS = {\n  maxConcurrency: 3,\n  maxMobileConcurrency: 1,\n  reuseWorkers: true,\n  onDebug: () => {}\n};\nclass WorkerFarm {\n  static isSupported() {\n    return _worker_thread__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isSupported();\n  }\n\n  static getWorkerFarm(props = {}) {\n    WorkerFarm._workerFarm = WorkerFarm._workerFarm || new WorkerFarm({});\n\n    WorkerFarm._workerFarm.setProps(props);\n\n    return WorkerFarm._workerFarm;\n  }\n\n  constructor(props) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"props\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"workerPools\", new Map());\n\n    this.props = { ...DEFAULT_PROPS\n    };\n    this.setProps(props);\n    this.workerPools = new Map();\n  }\n\n  destroy() {\n    for (const workerPool of this.workerPools.values()) {\n      workerPool.destroy();\n    }\n\n    this.workerPools = new Map();\n  }\n\n  setProps(props) {\n    this.props = { ...this.props,\n      ...props\n    };\n\n    for (const workerPool of this.workerPools.values()) {\n      workerPool.setProps(this._getWorkerPoolProps());\n    }\n  }\n\n  getWorkerPool(options) {\n    const {\n      name,\n      source,\n      url\n    } = options;\n    let workerPool = this.workerPools.get(name);\n\n    if (!workerPool) {\n      workerPool = new _worker_pool__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n        name,\n        source,\n        url\n      });\n      workerPool.setProps(this._getWorkerPoolProps());\n      this.workerPools.set(name, workerPool);\n    }\n\n    return workerPool;\n  }\n\n  _getWorkerPoolProps() {\n    return {\n      maxConcurrency: this.props.maxConcurrency,\n      maxMobileConcurrency: this.props.maxMobileConcurrency,\n      reuseWorkers: this.props.reuseWorkers,\n      onDebug: this.props.onDebug\n    };\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(WorkerFarm, \"_workerFarm\", void 0);\n//# sourceMappingURL=worker-farm.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-farm.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-job.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-job.js ***!
  \**************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ WorkerJob; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _env_utils_assert__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../env-utils/assert */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/assert.js\");\n\n\nclass WorkerJob {\n  constructor(jobName, workerThread) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"name\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"workerThread\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"isRunning\", true);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"result\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_resolve\", () => {});\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_reject\", () => {});\n\n    this.name = jobName;\n    this.workerThread = workerThread;\n    this.result = new Promise((resolve, reject) => {\n      this._resolve = resolve;\n      this._reject = reject;\n    });\n  }\n\n  postMessage(type, payload) {\n    this.workerThread.postMessage({\n      source: 'loaders.gl',\n      type,\n      payload\n    });\n  }\n\n  done(value) {\n    (0,_env_utils_assert__WEBPACK_IMPORTED_MODULE_1__.assert)(this.isRunning);\n    this.isRunning = false;\n\n    this._resolve(value);\n  }\n\n  error(error) {\n    (0,_env_utils_assert__WEBPACK_IMPORTED_MODULE_1__.assert)(this.isRunning);\n    this.isRunning = false;\n\n    this._reject(error);\n  }\n\n}\n//# sourceMappingURL=worker-job.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-job.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-pool.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-pool.js ***!
  \***************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ WorkerPool; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _env_utils_globals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../env-utils/globals */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/globals.js\");\n/* harmony import */ var _worker_thread__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./worker-thread */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-thread.js\");\n/* harmony import */ var _worker_job__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./worker-job */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-job.js\");\n\n\n\n\nclass WorkerPool {\n  static isSupported() {\n    return _worker_thread__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isSupported();\n  }\n\n  constructor(props) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"name\", 'unnamed');\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"source\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"url\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"maxConcurrency\", 1);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"maxMobileConcurrency\", 1);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"onDebug\", () => {});\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"reuseWorkers\", true);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"props\", {});\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"jobQueue\", []);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"idleQueue\", []);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"count\", 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"isDestroyed\", false);\n\n    this.source = props.source;\n    this.url = props.url;\n    this.setProps(props);\n  }\n\n  destroy() {\n    this.idleQueue.forEach(worker => worker.destroy());\n    this.isDestroyed = true;\n  }\n\n  setProps(props) {\n    this.props = { ...this.props,\n      ...props\n    };\n\n    if (props.name !== undefined) {\n      this.name = props.name;\n    }\n\n    if (props.maxConcurrency !== undefined) {\n      this.maxConcurrency = props.maxConcurrency;\n    }\n\n    if (props.maxMobileConcurrency !== undefined) {\n      this.maxMobileConcurrency = props.maxMobileConcurrency;\n    }\n\n    if (props.reuseWorkers !== undefined) {\n      this.reuseWorkers = props.reuseWorkers;\n    }\n\n    if (props.onDebug !== undefined) {\n      this.onDebug = props.onDebug;\n    }\n  }\n\n  async startJob(name, onMessage = (job, type, data) => job.done(data), onError = (job, error) => job.error(error)) {\n    const startPromise = new Promise(onStart => {\n      this.jobQueue.push({\n        name,\n        onMessage,\n        onError,\n        onStart\n      });\n      return this;\n    });\n\n    this._startQueuedJob();\n\n    return await startPromise;\n  }\n\n  async _startQueuedJob() {\n    if (!this.jobQueue.length) {\n      return;\n    }\n\n    const workerThread = this._getAvailableWorker();\n\n    if (!workerThread) {\n      return;\n    }\n\n    const queuedJob = this.jobQueue.shift();\n\n    if (queuedJob) {\n      this.onDebug({\n        message: 'Starting job',\n        name: queuedJob.name,\n        workerThread,\n        backlog: this.jobQueue.length\n      });\n      const job = new _worker_job__WEBPACK_IMPORTED_MODULE_2__[\"default\"](queuedJob.name, workerThread);\n\n      workerThread.onMessage = data => queuedJob.onMessage(job, data.type, data.payload);\n\n      workerThread.onError = error => queuedJob.onError(job, error);\n\n      queuedJob.onStart(job);\n\n      try {\n        await job.result;\n      } finally {\n        this.returnWorkerToQueue(workerThread);\n      }\n    }\n  }\n\n  returnWorkerToQueue(worker) {\n    const shouldDestroyWorker = this.isDestroyed || !this.reuseWorkers || this.count > this._getMaxConcurrency();\n\n    if (shouldDestroyWorker) {\n      worker.destroy();\n      this.count--;\n    } else {\n      this.idleQueue.push(worker);\n    }\n\n    if (!this.isDestroyed) {\n      this._startQueuedJob();\n    }\n  }\n\n  _getAvailableWorker() {\n    if (this.idleQueue.length > 0) {\n      return this.idleQueue.shift() || null;\n    }\n\n    if (this.count < this._getMaxConcurrency()) {\n      this.count++;\n      const name = \"\".concat(this.name.toLowerCase(), \" (#\").concat(this.count, \" of \").concat(this.maxConcurrency, \")\");\n      return new _worker_thread__WEBPACK_IMPORTED_MODULE_1__[\"default\"]({\n        name,\n        source: this.source,\n        url: this.url\n      });\n    }\n\n    return null;\n  }\n\n  _getMaxConcurrency() {\n    return _env_utils_globals__WEBPACK_IMPORTED_MODULE_3__.isMobile ? this.maxMobileConcurrency : this.maxConcurrency;\n  }\n\n}\n//# sourceMappingURL=worker-pool.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-pool.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-thread.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-thread.js ***!
  \*****************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ WorkerThread; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _node_worker_threads__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../node/worker_threads */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/node/worker_threads-browser.js\");\n/* harmony import */ var _env_utils_globals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../env-utils/globals */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/globals.js\");\n/* harmony import */ var _env_utils_assert__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../env-utils/assert */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/assert.js\");\n/* harmony import */ var _worker_utils_get_loadable_worker_url__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../worker-utils/get-loadable-worker-url */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/get-loadable-worker-url.js\");\n/* harmony import */ var _worker_utils_get_transfer_list__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../worker-utils/get-transfer-list */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/get-transfer-list.js\");\n\n\n\n\n\n\n\nconst NOOP = () => {};\n\nclass WorkerThread {\n  static isSupported() {\n    return typeof Worker !== 'undefined' && _env_utils_globals__WEBPACK_IMPORTED_MODULE_1__.isBrowser || typeof _node_worker_threads__WEBPACK_IMPORTED_MODULE_2__.Worker !== 'undefined' && !_env_utils_globals__WEBPACK_IMPORTED_MODULE_1__.isBrowser;\n  }\n\n  constructor(props) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"name\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"source\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"url\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"terminated\", false);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"worker\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"onMessage\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"onError\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_loadableURL\", '');\n\n    const {\n      name,\n      source,\n      url\n    } = props;\n    (0,_env_utils_assert__WEBPACK_IMPORTED_MODULE_3__.assert)(source || url);\n    this.name = name;\n    this.source = source;\n    this.url = url;\n    this.onMessage = NOOP;\n\n    this.onError = error => console.log(error);\n\n    this.worker = _env_utils_globals__WEBPACK_IMPORTED_MODULE_1__.isBrowser ? this._createBrowserWorker() : this._createNodeWorker();\n  }\n\n  destroy() {\n    this.onMessage = NOOP;\n    this.onError = NOOP;\n    this.worker.terminate();\n    this.terminated = true;\n  }\n\n  get isRunning() {\n    return Boolean(this.onMessage);\n  }\n\n  postMessage(data, transferList) {\n    transferList = transferList || (0,_worker_utils_get_transfer_list__WEBPACK_IMPORTED_MODULE_4__.getTransferList)(data);\n    this.worker.postMessage(data, transferList);\n  }\n\n  _getErrorFromErrorEvent(event) {\n    let message = 'Failed to load ';\n    message += \"worker \".concat(this.name, \" from \").concat(this.url, \". \");\n\n    if (event.message) {\n      message += \"\".concat(event.message, \" in \");\n    }\n\n    if (event.lineno) {\n      message += \":\".concat(event.lineno, \":\").concat(event.colno);\n    }\n\n    return new Error(message);\n  }\n\n  _createBrowserWorker() {\n    this._loadableURL = (0,_worker_utils_get_loadable_worker_url__WEBPACK_IMPORTED_MODULE_5__.getLoadableWorkerURL)({\n      source: this.source,\n      url: this.url\n    });\n    const worker = new Worker(this._loadableURL, {\n      name: this.name\n    });\n\n    worker.onmessage = event => {\n      if (!event.data) {\n        this.onError(new Error('No data received'));\n      } else {\n        this.onMessage(event.data);\n      }\n    };\n\n    worker.onerror = error => {\n      this.onError(this._getErrorFromErrorEvent(error));\n      this.terminated = true;\n    };\n\n    worker.onmessageerror = event => console.error(event);\n\n    return worker;\n  }\n\n  _createNodeWorker() {\n    let worker;\n\n    if (this.url) {\n      const absolute = this.url.includes(':/') || this.url.startsWith('/');\n      const url = absolute ? this.url : \"./\".concat(this.url);\n      worker = new _node_worker_threads__WEBPACK_IMPORTED_MODULE_2__.Worker(url, {\n        eval: false\n      });\n    } else if (this.source) {\n      worker = new _node_worker_threads__WEBPACK_IMPORTED_MODULE_2__.Worker(this.source, {\n        eval: true\n      });\n    } else {\n      throw new Error('no worker');\n    }\n\n    worker.on('message', data => {\n      this.onMessage(data);\n    });\n    worker.on('error', error => {\n      this.onError(error);\n    });\n    worker.on('exit', code => {});\n    return worker;\n  }\n\n}\n//# sourceMappingURL=worker-thread.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-thread.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/get-loadable-worker-url.js":
/*!****************************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/get-loadable-worker-url.js ***!
  \****************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getLoadableWorkerURL\": function() { return /* binding */ getLoadableWorkerURL; }\n/* harmony export */ });\n/* harmony import */ var _env_utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../env-utils/assert */ \"./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/assert.js\");\n\nconst workerURLCache = new Map();\nfunction getLoadableWorkerURL(props) {\n  (0,_env_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(props.source && !props.url || !props.source && props.url);\n  let workerURL = workerURLCache.get(props.source || props.url);\n\n  if (!workerURL) {\n    if (props.url) {\n      workerURL = getLoadableWorkerURLFromURL(props.url);\n      workerURLCache.set(props.url, workerURL);\n    }\n\n    if (props.source) {\n      workerURL = getLoadableWorkerURLFromSource(props.source);\n      workerURLCache.set(props.source, workerURL);\n    }\n  }\n\n  (0,_env_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(workerURL);\n  return workerURL;\n}\n\nfunction getLoadableWorkerURLFromURL(url) {\n  if (!url.startsWith('http')) {\n    return url;\n  }\n\n  const workerSource = buildScriptSource(url);\n  return getLoadableWorkerURLFromSource(workerSource);\n}\n\nfunction getLoadableWorkerURLFromSource(workerSource) {\n  const blob = new Blob([workerSource], {\n    type: 'application/javascript'\n  });\n  return URL.createObjectURL(blob);\n}\n\nfunction buildScriptSource(workerUrl) {\n  return \"try {\\n  importScripts('\".concat(workerUrl, \"');\\n} catch (error) {\\n  console.error(error);\\n  throw error;\\n}\");\n}\n//# sourceMappingURL=get-loadable-worker-url.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/get-loadable-worker-url.js?");

/***/ }),

/***/ "./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/get-transfer-list.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/get-transfer-list.js ***!
  \**********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTransferList\": function() { return /* binding */ getTransferList; },\n/* harmony export */   \"getTransferListForWriter\": function() { return /* binding */ getTransferListForWriter; }\n/* harmony export */ });\nfunction getTransferList(object, recursive = true, transfers) {\n  const transfersSet = transfers || new Set();\n\n  if (!object) {} else if (isTransferable(object)) {\n    transfersSet.add(object);\n  } else if (isTransferable(object.buffer)) {\n    transfersSet.add(object.buffer);\n  } else if (ArrayBuffer.isView(object)) {} else if (recursive && typeof object === 'object') {\n    for (const key in object) {\n      getTransferList(object[key], recursive, transfersSet);\n    }\n  }\n\n  return transfers === undefined ? Array.from(transfersSet) : [];\n}\n\nfunction isTransferable(object) {\n  if (!object) {\n    return false;\n  }\n\n  if (object instanceof ArrayBuffer) {\n    return true;\n  }\n\n  if (typeof MessagePort !== 'undefined' && object instanceof MessagePort) {\n    return true;\n  }\n\n  if (typeof ImageBitmap !== 'undefined' && object instanceof ImageBitmap) {\n    return true;\n  }\n\n  if (typeof OffscreenCanvas !== 'undefined' && object instanceof OffscreenCanvas) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction getTransferListForWriter(object) {\n  if (object === null) {\n    return {};\n  }\n\n  const clone = Object.assign({}, object);\n  Object.keys(clone).forEach(key => {\n    if (typeof object[key] === 'object' && !ArrayBuffer.isView(object[key])) {\n      clone[key] = getTransferListForWriter(object[key]);\n    } else if (typeof clone[key] === 'function' || clone[key] instanceof RegExp) {\n      clone[key] = {};\n    } else {\n      clone[key] = object[key];\n    }\n  });\n  return clone;\n}\n//# sourceMappingURL=get-transfer-list.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/get-transfer-list.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/constants/dist/esm/index.js":
/*!***********************************************************!*\
  !*** ./node_modules/@luma.gl/constants/dist/esm/index.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  DEPTH_BUFFER_BIT: 0x00000100,\n  STENCIL_BUFFER_BIT: 0x00000400,\n  COLOR_BUFFER_BIT: 0x00004000,\n  POINTS: 0x0000,\n  LINES: 0x0001,\n  LINE_LOOP: 0x0002,\n  LINE_STRIP: 0x0003,\n  TRIANGLES: 0x0004,\n  TRIANGLE_STRIP: 0x0005,\n  TRIANGLE_FAN: 0x0006,\n  ZERO: 0,\n  ONE: 1,\n  SRC_COLOR: 0x0300,\n  ONE_MINUS_SRC_COLOR: 0x0301,\n  SRC_ALPHA: 0x0302,\n  ONE_MINUS_SRC_ALPHA: 0x0303,\n  DST_ALPHA: 0x0304,\n  ONE_MINUS_DST_ALPHA: 0x0305,\n  DST_COLOR: 0x0306,\n  ONE_MINUS_DST_COLOR: 0x0307,\n  SRC_ALPHA_SATURATE: 0x0308,\n  CONSTANT_COLOR: 0x8001,\n  ONE_MINUS_CONSTANT_COLOR: 0x8002,\n  CONSTANT_ALPHA: 0x8003,\n  ONE_MINUS_CONSTANT_ALPHA: 0x8004,\n  FUNC_ADD: 0x8006,\n  FUNC_SUBTRACT: 0x800a,\n  FUNC_REVERSE_SUBTRACT: 0x800b,\n  BLEND_EQUATION: 0x8009,\n  BLEND_EQUATION_RGB: 0x8009,\n  BLEND_EQUATION_ALPHA: 0x883d,\n  BLEND_DST_RGB: 0x80c8,\n  BLEND_SRC_RGB: 0x80c9,\n  BLEND_DST_ALPHA: 0x80ca,\n  BLEND_SRC_ALPHA: 0x80cb,\n  BLEND_COLOR: 0x8005,\n  ARRAY_BUFFER_BINDING: 0x8894,\n  ELEMENT_ARRAY_BUFFER_BINDING: 0x8895,\n  LINE_WIDTH: 0x0b21,\n  ALIASED_POINT_SIZE_RANGE: 0x846d,\n  ALIASED_LINE_WIDTH_RANGE: 0x846e,\n  CULL_FACE_MODE: 0x0b45,\n  FRONT_FACE: 0x0b46,\n  DEPTH_RANGE: 0x0b70,\n  DEPTH_WRITEMASK: 0x0b72,\n  DEPTH_CLEAR_VALUE: 0x0b73,\n  DEPTH_FUNC: 0x0b74,\n  STENCIL_CLEAR_VALUE: 0x0b91,\n  STENCIL_FUNC: 0x0b92,\n  STENCIL_FAIL: 0x0b94,\n  STENCIL_PASS_DEPTH_FAIL: 0x0b95,\n  STENCIL_PASS_DEPTH_PASS: 0x0b96,\n  STENCIL_REF: 0x0b97,\n  STENCIL_VALUE_MASK: 0x0b93,\n  STENCIL_WRITEMASK: 0x0b98,\n  STENCIL_BACK_FUNC: 0x8800,\n  STENCIL_BACK_FAIL: 0x8801,\n  STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802,\n  STENCIL_BACK_PASS_DEPTH_PASS: 0x8803,\n  STENCIL_BACK_REF: 0x8ca3,\n  STENCIL_BACK_VALUE_MASK: 0x8ca4,\n  STENCIL_BACK_WRITEMASK: 0x8ca5,\n  VIEWPORT: 0x0ba2,\n  SCISSOR_BOX: 0x0c10,\n  COLOR_CLEAR_VALUE: 0x0c22,\n  COLOR_WRITEMASK: 0x0c23,\n  UNPACK_ALIGNMENT: 0x0cf5,\n  PACK_ALIGNMENT: 0x0d05,\n  MAX_TEXTURE_SIZE: 0x0d33,\n  MAX_VIEWPORT_DIMS: 0x0d3a,\n  SUBPIXEL_BITS: 0x0d50,\n  RED_BITS: 0x0d52,\n  GREEN_BITS: 0x0d53,\n  BLUE_BITS: 0x0d54,\n  ALPHA_BITS: 0x0d55,\n  DEPTH_BITS: 0x0d56,\n  STENCIL_BITS: 0x0d57,\n  POLYGON_OFFSET_UNITS: 0x2a00,\n  POLYGON_OFFSET_FACTOR: 0x8038,\n  TEXTURE_BINDING_2D: 0x8069,\n  SAMPLE_BUFFERS: 0x80a8,\n  SAMPLES: 0x80a9,\n  SAMPLE_COVERAGE_VALUE: 0x80aa,\n  SAMPLE_COVERAGE_INVERT: 0x80ab,\n  COMPRESSED_TEXTURE_FORMATS: 0x86a3,\n  VENDOR: 0x1f00,\n  RENDERER: 0x1f01,\n  VERSION: 0x1f02,\n  IMPLEMENTATION_COLOR_READ_TYPE: 0x8b9a,\n  IMPLEMENTATION_COLOR_READ_FORMAT: 0x8b9b,\n  BROWSER_DEFAULT_WEBGL: 0x9244,\n  STATIC_DRAW: 0x88e4,\n  STREAM_DRAW: 0x88e0,\n  DYNAMIC_DRAW: 0x88e8,\n  ARRAY_BUFFER: 0x8892,\n  ELEMENT_ARRAY_BUFFER: 0x8893,\n  BUFFER_SIZE: 0x8764,\n  BUFFER_USAGE: 0x8765,\n  CURRENT_VERTEX_ATTRIB: 0x8626,\n  VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622,\n  VERTEX_ATTRIB_ARRAY_SIZE: 0x8623,\n  VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624,\n  VERTEX_ATTRIB_ARRAY_TYPE: 0x8625,\n  VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886a,\n  VERTEX_ATTRIB_ARRAY_POINTER: 0x8645,\n  VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889f,\n  CULL_FACE: 0x0b44,\n  FRONT: 0x0404,\n  BACK: 0x0405,\n  FRONT_AND_BACK: 0x0408,\n  BLEND: 0x0be2,\n  DEPTH_TEST: 0x0b71,\n  DITHER: 0x0bd0,\n  POLYGON_OFFSET_FILL: 0x8037,\n  SAMPLE_ALPHA_TO_COVERAGE: 0x809e,\n  SAMPLE_COVERAGE: 0x80a0,\n  SCISSOR_TEST: 0x0c11,\n  STENCIL_TEST: 0x0b90,\n  NO_ERROR: 0,\n  INVALID_ENUM: 0x0500,\n  INVALID_VALUE: 0x0501,\n  INVALID_OPERATION: 0x0502,\n  OUT_OF_MEMORY: 0x0505,\n  CONTEXT_LOST_WEBGL: 0x9242,\n  CW: 0x0900,\n  CCW: 0x0901,\n  DONT_CARE: 0x1100,\n  FASTEST: 0x1101,\n  NICEST: 0x1102,\n  GENERATE_MIPMAP_HINT: 0x8192,\n  BYTE: 0x1400,\n  UNSIGNED_BYTE: 0x1401,\n  SHORT: 0x1402,\n  UNSIGNED_SHORT: 0x1403,\n  INT: 0x1404,\n  UNSIGNED_INT: 0x1405,\n  FLOAT: 0x1406,\n  DOUBLE: 0x140a,\n  DEPTH_COMPONENT: 0x1902,\n  ALPHA: 0x1906,\n  RGB: 0x1907,\n  RGBA: 0x1908,\n  LUMINANCE: 0x1909,\n  LUMINANCE_ALPHA: 0x190a,\n  UNSIGNED_SHORT_4_4_4_4: 0x8033,\n  UNSIGNED_SHORT_5_5_5_1: 0x8034,\n  UNSIGNED_SHORT_5_6_5: 0x8363,\n  FRAGMENT_SHADER: 0x8b30,\n  VERTEX_SHADER: 0x8b31,\n  COMPILE_STATUS: 0x8b81,\n  DELETE_STATUS: 0x8b80,\n  LINK_STATUS: 0x8b82,\n  VALIDATE_STATUS: 0x8b83,\n  ATTACHED_SHADERS: 0x8b85,\n  ACTIVE_ATTRIBUTES: 0x8b89,\n  ACTIVE_UNIFORMS: 0x8b86,\n  MAX_VERTEX_ATTRIBS: 0x8869,\n  MAX_VERTEX_UNIFORM_VECTORS: 0x8dfb,\n  MAX_VARYING_VECTORS: 0x8dfc,\n  MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8b4d,\n  MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8b4c,\n  MAX_TEXTURE_IMAGE_UNITS: 0x8872,\n  MAX_FRAGMENT_UNIFORM_VECTORS: 0x8dfd,\n  SHADER_TYPE: 0x8b4f,\n  SHADING_LANGUAGE_VERSION: 0x8b8c,\n  CURRENT_PROGRAM: 0x8b8d,\n  NEVER: 0x0200,\n  ALWAYS: 0x0207,\n  LESS: 0x0201,\n  EQUAL: 0x0202,\n  LEQUAL: 0x0203,\n  GREATER: 0x0204,\n  GEQUAL: 0x0206,\n  NOTEQUAL: 0x0205,\n  KEEP: 0x1e00,\n  REPLACE: 0x1e01,\n  INCR: 0x1e02,\n  DECR: 0x1e03,\n  INVERT: 0x150a,\n  INCR_WRAP: 0x8507,\n  DECR_WRAP: 0x8508,\n  NEAREST: 0x2600,\n  LINEAR: 0x2601,\n  NEAREST_MIPMAP_NEAREST: 0x2700,\n  LINEAR_MIPMAP_NEAREST: 0x2701,\n  NEAREST_MIPMAP_LINEAR: 0x2702,\n  LINEAR_MIPMAP_LINEAR: 0x2703,\n  TEXTURE_MAG_FILTER: 0x2800,\n  TEXTURE_MIN_FILTER: 0x2801,\n  TEXTURE_WRAP_S: 0x2802,\n  TEXTURE_WRAP_T: 0x2803,\n  TEXTURE_2D: 0x0de1,\n  TEXTURE: 0x1702,\n  TEXTURE_CUBE_MAP: 0x8513,\n  TEXTURE_BINDING_CUBE_MAP: 0x8514,\n  TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515,\n  TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516,\n  TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517,\n  TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518,\n  TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519,\n  TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851a,\n  MAX_CUBE_MAP_TEXTURE_SIZE: 0x851c,\n  TEXTURE0: 0x84c0,\n  ACTIVE_TEXTURE: 0x84e0,\n  REPEAT: 0x2901,\n  CLAMP_TO_EDGE: 0x812f,\n  MIRRORED_REPEAT: 0x8370,\n  TEXTURE_WIDTH: 0x1000,\n  TEXTURE_HEIGHT: 0x1001,\n  FLOAT_VEC2: 0x8b50,\n  FLOAT_VEC3: 0x8b51,\n  FLOAT_VEC4: 0x8b52,\n  INT_VEC2: 0x8b53,\n  INT_VEC3: 0x8b54,\n  INT_VEC4: 0x8b55,\n  BOOL: 0x8b56,\n  BOOL_VEC2: 0x8b57,\n  BOOL_VEC3: 0x8b58,\n  BOOL_VEC4: 0x8b59,\n  FLOAT_MAT2: 0x8b5a,\n  FLOAT_MAT3: 0x8b5b,\n  FLOAT_MAT4: 0x8b5c,\n  SAMPLER_2D: 0x8b5e,\n  SAMPLER_CUBE: 0x8b60,\n  LOW_FLOAT: 0x8df0,\n  MEDIUM_FLOAT: 0x8df1,\n  HIGH_FLOAT: 0x8df2,\n  LOW_INT: 0x8df3,\n  MEDIUM_INT: 0x8df4,\n  HIGH_INT: 0x8df5,\n  FRAMEBUFFER: 0x8d40,\n  RENDERBUFFER: 0x8d41,\n  RGBA4: 0x8056,\n  RGB5_A1: 0x8057,\n  RGB565: 0x8d62,\n  DEPTH_COMPONENT16: 0x81a5,\n  STENCIL_INDEX: 0x1901,\n  STENCIL_INDEX8: 0x8d48,\n  DEPTH_STENCIL: 0x84f9,\n  RENDERBUFFER_WIDTH: 0x8d42,\n  RENDERBUFFER_HEIGHT: 0x8d43,\n  RENDERBUFFER_INTERNAL_FORMAT: 0x8d44,\n  RENDERBUFFER_RED_SIZE: 0x8d50,\n  RENDERBUFFER_GREEN_SIZE: 0x8d51,\n  RENDERBUFFER_BLUE_SIZE: 0x8d52,\n  RENDERBUFFER_ALPHA_SIZE: 0x8d53,\n  RENDERBUFFER_DEPTH_SIZE: 0x8d54,\n  RENDERBUFFER_STENCIL_SIZE: 0x8d55,\n  FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8cd0,\n  FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8cd1,\n  FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8cd2,\n  FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8cd3,\n  COLOR_ATTACHMENT0: 0x8ce0,\n  DEPTH_ATTACHMENT: 0x8d00,\n  STENCIL_ATTACHMENT: 0x8d20,\n  DEPTH_STENCIL_ATTACHMENT: 0x821a,\n  NONE: 0,\n  FRAMEBUFFER_COMPLETE: 0x8cd5,\n  FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8cd6,\n  FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8cd7,\n  FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8cd9,\n  FRAMEBUFFER_UNSUPPORTED: 0x8cdd,\n  FRAMEBUFFER_BINDING: 0x8ca6,\n  RENDERBUFFER_BINDING: 0x8ca7,\n  READ_FRAMEBUFFER: 0x8ca8,\n  DRAW_FRAMEBUFFER: 0x8ca9,\n  MAX_RENDERBUFFER_SIZE: 0x84e8,\n  INVALID_FRAMEBUFFER_OPERATION: 0x0506,\n  UNPACK_FLIP_Y_WEBGL: 0x9240,\n  UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241,\n  UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243,\n  READ_BUFFER: 0x0c02,\n  UNPACK_ROW_LENGTH: 0x0cf2,\n  UNPACK_SKIP_ROWS: 0x0cf3,\n  UNPACK_SKIP_PIXELS: 0x0cf4,\n  PACK_ROW_LENGTH: 0x0d02,\n  PACK_SKIP_ROWS: 0x0d03,\n  PACK_SKIP_PIXELS: 0x0d04,\n  TEXTURE_BINDING_3D: 0x806a,\n  UNPACK_SKIP_IMAGES: 0x806d,\n  UNPACK_IMAGE_HEIGHT: 0x806e,\n  MAX_3D_TEXTURE_SIZE: 0x8073,\n  MAX_ELEMENTS_VERTICES: 0x80e8,\n  MAX_ELEMENTS_INDICES: 0x80e9,\n  MAX_TEXTURE_LOD_BIAS: 0x84fd,\n  MAX_FRAGMENT_UNIFORM_COMPONENTS: 0x8b49,\n  MAX_VERTEX_UNIFORM_COMPONENTS: 0x8b4a,\n  MAX_ARRAY_TEXTURE_LAYERS: 0x88ff,\n  MIN_PROGRAM_TEXEL_OFFSET: 0x8904,\n  MAX_PROGRAM_TEXEL_OFFSET: 0x8905,\n  MAX_VARYING_COMPONENTS: 0x8b4b,\n  FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8b8b,\n  RASTERIZER_DISCARD: 0x8c89,\n  VERTEX_ARRAY_BINDING: 0x85b5,\n  MAX_VERTEX_OUTPUT_COMPONENTS: 0x9122,\n  MAX_FRAGMENT_INPUT_COMPONENTS: 0x9125,\n  MAX_SERVER_WAIT_TIMEOUT: 0x9111,\n  MAX_ELEMENT_INDEX: 0x8d6b,\n  RED: 0x1903,\n  RGB8: 0x8051,\n  RGBA8: 0x8058,\n  RGB10_A2: 0x8059,\n  TEXTURE_3D: 0x806f,\n  TEXTURE_WRAP_R: 0x8072,\n  TEXTURE_MIN_LOD: 0x813a,\n  TEXTURE_MAX_LOD: 0x813b,\n  TEXTURE_BASE_LEVEL: 0x813c,\n  TEXTURE_MAX_LEVEL: 0x813d,\n  TEXTURE_COMPARE_MODE: 0x884c,\n  TEXTURE_COMPARE_FUNC: 0x884d,\n  SRGB: 0x8c40,\n  SRGB8: 0x8c41,\n  SRGB8_ALPHA8: 0x8c43,\n  COMPARE_REF_TO_TEXTURE: 0x884e,\n  RGBA32F: 0x8814,\n  RGB32F: 0x8815,\n  RGBA16F: 0x881a,\n  RGB16F: 0x881b,\n  TEXTURE_2D_ARRAY: 0x8c1a,\n  TEXTURE_BINDING_2D_ARRAY: 0x8c1d,\n  R11F_G11F_B10F: 0x8c3a,\n  RGB9_E5: 0x8c3d,\n  RGBA32UI: 0x8d70,\n  RGB32UI: 0x8d71,\n  RGBA16UI: 0x8d76,\n  RGB16UI: 0x8d77,\n  RGBA8UI: 0x8d7c,\n  RGB8UI: 0x8d7d,\n  RGBA32I: 0x8d82,\n  RGB32I: 0x8d83,\n  RGBA16I: 0x8d88,\n  RGB16I: 0x8d89,\n  RGBA8I: 0x8d8e,\n  RGB8I: 0x8d8f,\n  RED_INTEGER: 0x8d94,\n  RGB_INTEGER: 0x8d98,\n  RGBA_INTEGER: 0x8d99,\n  R8: 0x8229,\n  RG8: 0x822b,\n  R16F: 0x822d,\n  R32F: 0x822e,\n  RG16F: 0x822f,\n  RG32F: 0x8230,\n  R8I: 0x8231,\n  R8UI: 0x8232,\n  R16I: 0x8233,\n  R16UI: 0x8234,\n  R32I: 0x8235,\n  R32UI: 0x8236,\n  RG8I: 0x8237,\n  RG8UI: 0x8238,\n  RG16I: 0x8239,\n  RG16UI: 0x823a,\n  RG32I: 0x823b,\n  RG32UI: 0x823c,\n  R8_SNORM: 0x8f94,\n  RG8_SNORM: 0x8f95,\n  RGB8_SNORM: 0x8f96,\n  RGBA8_SNORM: 0x8f97,\n  RGB10_A2UI: 0x906f,\n  TEXTURE_IMMUTABLE_FORMAT: 0x912f,\n  TEXTURE_IMMUTABLE_LEVELS: 0x82df,\n  UNSIGNED_INT_2_10_10_10_REV: 0x8368,\n  UNSIGNED_INT_10F_11F_11F_REV: 0x8c3b,\n  UNSIGNED_INT_5_9_9_9_REV: 0x8c3e,\n  FLOAT_32_UNSIGNED_INT_24_8_REV: 0x8dad,\n  UNSIGNED_INT_24_8: 0x84fa,\n  HALF_FLOAT: 0x140b,\n  RG: 0x8227,\n  RG_INTEGER: 0x8228,\n  INT_2_10_10_10_REV: 0x8d9f,\n  CURRENT_QUERY: 0x8865,\n  QUERY_RESULT: 0x8866,\n  QUERY_RESULT_AVAILABLE: 0x8867,\n  ANY_SAMPLES_PASSED: 0x8c2f,\n  ANY_SAMPLES_PASSED_CONSERVATIVE: 0x8d6a,\n  MAX_DRAW_BUFFERS: 0x8824,\n  DRAW_BUFFER0: 0x8825,\n  DRAW_BUFFER1: 0x8826,\n  DRAW_BUFFER2: 0x8827,\n  DRAW_BUFFER3: 0x8828,\n  DRAW_BUFFER4: 0x8829,\n  DRAW_BUFFER5: 0x882a,\n  DRAW_BUFFER6: 0x882b,\n  DRAW_BUFFER7: 0x882c,\n  DRAW_BUFFER8: 0x882d,\n  DRAW_BUFFER9: 0x882e,\n  DRAW_BUFFER10: 0x882f,\n  DRAW_BUFFER11: 0x8830,\n  DRAW_BUFFER12: 0x8831,\n  DRAW_BUFFER13: 0x8832,\n  DRAW_BUFFER14: 0x8833,\n  DRAW_BUFFER15: 0x8834,\n  MAX_COLOR_ATTACHMENTS: 0x8cdf,\n  COLOR_ATTACHMENT1: 0x8ce1,\n  COLOR_ATTACHMENT2: 0x8ce2,\n  COLOR_ATTACHMENT3: 0x8ce3,\n  COLOR_ATTACHMENT4: 0x8ce4,\n  COLOR_ATTACHMENT5: 0x8ce5,\n  COLOR_ATTACHMENT6: 0x8ce6,\n  COLOR_ATTACHMENT7: 0x8ce7,\n  COLOR_ATTACHMENT8: 0x8ce8,\n  COLOR_ATTACHMENT9: 0x8ce9,\n  COLOR_ATTACHMENT10: 0x8cea,\n  COLOR_ATTACHMENT11: 0x8ceb,\n  COLOR_ATTACHMENT12: 0x8cec,\n  COLOR_ATTACHMENT13: 0x8ced,\n  COLOR_ATTACHMENT14: 0x8cee,\n  COLOR_ATTACHMENT15: 0x8cef,\n  SAMPLER_3D: 0x8b5f,\n  SAMPLER_2D_SHADOW: 0x8b62,\n  SAMPLER_2D_ARRAY: 0x8dc1,\n  SAMPLER_2D_ARRAY_SHADOW: 0x8dc4,\n  SAMPLER_CUBE_SHADOW: 0x8dc5,\n  INT_SAMPLER_2D: 0x8dca,\n  INT_SAMPLER_3D: 0x8dcb,\n  INT_SAMPLER_CUBE: 0x8dcc,\n  INT_SAMPLER_2D_ARRAY: 0x8dcf,\n  UNSIGNED_INT_SAMPLER_2D: 0x8dd2,\n  UNSIGNED_INT_SAMPLER_3D: 0x8dd3,\n  UNSIGNED_INT_SAMPLER_CUBE: 0x8dd4,\n  UNSIGNED_INT_SAMPLER_2D_ARRAY: 0x8dd7,\n  MAX_SAMPLES: 0x8d57,\n  SAMPLER_BINDING: 0x8919,\n  PIXEL_PACK_BUFFER: 0x88eb,\n  PIXEL_UNPACK_BUFFER: 0x88ec,\n  PIXEL_PACK_BUFFER_BINDING: 0x88ed,\n  PIXEL_UNPACK_BUFFER_BINDING: 0x88ef,\n  COPY_READ_BUFFER: 0x8f36,\n  COPY_WRITE_BUFFER: 0x8f37,\n  COPY_READ_BUFFER_BINDING: 0x8f36,\n  COPY_WRITE_BUFFER_BINDING: 0x8f37,\n  FLOAT_MAT2x3: 0x8b65,\n  FLOAT_MAT2x4: 0x8b66,\n  FLOAT_MAT3x2: 0x8b67,\n  FLOAT_MAT3x4: 0x8b68,\n  FLOAT_MAT4x2: 0x8b69,\n  FLOAT_MAT4x3: 0x8b6a,\n  UNSIGNED_INT_VEC2: 0x8dc6,\n  UNSIGNED_INT_VEC3: 0x8dc7,\n  UNSIGNED_INT_VEC4: 0x8dc8,\n  UNSIGNED_NORMALIZED: 0x8c17,\n  SIGNED_NORMALIZED: 0x8f9c,\n  VERTEX_ATTRIB_ARRAY_INTEGER: 0x88fd,\n  VERTEX_ATTRIB_ARRAY_DIVISOR: 0x88fe,\n  TRANSFORM_FEEDBACK_BUFFER_MODE: 0x8c7f,\n  MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 0x8c80,\n  TRANSFORM_FEEDBACK_VARYINGS: 0x8c83,\n  TRANSFORM_FEEDBACK_BUFFER_START: 0x8c84,\n  TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8c85,\n  TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 0x8c88,\n  MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 0x8c8a,\n  MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 0x8c8b,\n  INTERLEAVED_ATTRIBS: 0x8c8c,\n  SEPARATE_ATTRIBS: 0x8c8d,\n  TRANSFORM_FEEDBACK_BUFFER: 0x8c8e,\n  TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8c8f,\n  TRANSFORM_FEEDBACK: 0x8e22,\n  TRANSFORM_FEEDBACK_PAUSED: 0x8e23,\n  TRANSFORM_FEEDBACK_ACTIVE: 0x8e24,\n  TRANSFORM_FEEDBACK_BINDING: 0x8e25,\n  FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 0x8210,\n  FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 0x8211,\n  FRAMEBUFFER_ATTACHMENT_RED_SIZE: 0x8212,\n  FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 0x8213,\n  FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 0x8214,\n  FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 0x8215,\n  FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 0x8216,\n  FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 0x8217,\n  FRAMEBUFFER_DEFAULT: 0x8218,\n  DEPTH24_STENCIL8: 0x88f0,\n  DRAW_FRAMEBUFFER_BINDING: 0x8ca6,\n  READ_FRAMEBUFFER_BINDING: 0x8caa,\n  RENDERBUFFER_SAMPLES: 0x8cab,\n  FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 0x8cd4,\n  FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 0x8d56,\n  UNIFORM_BUFFER: 0x8a11,\n  UNIFORM_BUFFER_BINDING: 0x8a28,\n  UNIFORM_BUFFER_START: 0x8a29,\n  UNIFORM_BUFFER_SIZE: 0x8a2a,\n  MAX_VERTEX_UNIFORM_BLOCKS: 0x8a2b,\n  MAX_FRAGMENT_UNIFORM_BLOCKS: 0x8a2d,\n  MAX_COMBINED_UNIFORM_BLOCKS: 0x8a2e,\n  MAX_UNIFORM_BUFFER_BINDINGS: 0x8a2f,\n  MAX_UNIFORM_BLOCK_SIZE: 0x8a30,\n  MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 0x8a31,\n  MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 0x8a33,\n  UNIFORM_BUFFER_OFFSET_ALIGNMENT: 0x8a34,\n  ACTIVE_UNIFORM_BLOCKS: 0x8a36,\n  UNIFORM_TYPE: 0x8a37,\n  UNIFORM_SIZE: 0x8a38,\n  UNIFORM_BLOCK_INDEX: 0x8a3a,\n  UNIFORM_OFFSET: 0x8a3b,\n  UNIFORM_ARRAY_STRIDE: 0x8a3c,\n  UNIFORM_MATRIX_STRIDE: 0x8a3d,\n  UNIFORM_IS_ROW_MAJOR: 0x8a3e,\n  UNIFORM_BLOCK_BINDING: 0x8a3f,\n  UNIFORM_BLOCK_DATA_SIZE: 0x8a40,\n  UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8a42,\n  UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8a43,\n  UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8a44,\n  UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8a46,\n  OBJECT_TYPE: 0x9112,\n  SYNC_CONDITION: 0x9113,\n  SYNC_STATUS: 0x9114,\n  SYNC_FLAGS: 0x9115,\n  SYNC_FENCE: 0x9116,\n  SYNC_GPU_COMMANDS_COMPLETE: 0x9117,\n  UNSIGNALED: 0x9118,\n  SIGNALED: 0x9119,\n  ALREADY_SIGNALED: 0x911a,\n  TIMEOUT_EXPIRED: 0x911b,\n  CONDITION_SATISFIED: 0x911c,\n  WAIT_FAILED: 0x911d,\n  SYNC_FLUSH_COMMANDS_BIT: 0x00000001,\n  COLOR: 0x1800,\n  DEPTH: 0x1801,\n  STENCIL: 0x1802,\n  MIN: 0x8007,\n  MAX: 0x8008,\n  DEPTH_COMPONENT24: 0x81a6,\n  STREAM_READ: 0x88e1,\n  STREAM_COPY: 0x88e2,\n  STATIC_READ: 0x88e5,\n  STATIC_COPY: 0x88e6,\n  DYNAMIC_READ: 0x88e9,\n  DYNAMIC_COPY: 0x88ea,\n  DEPTH_COMPONENT32F: 0x8cac,\n  DEPTH32F_STENCIL8: 0x8cad,\n  INVALID_INDEX: 0xffffffff,\n  TIMEOUT_IGNORED: -1,\n  MAX_CLIENT_WAIT_TIMEOUT_WEBGL: 0x9247,\n  VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: 0x88fe,\n  UNMASKED_VENDOR_WEBGL: 0x9245,\n  UNMASKED_RENDERER_WEBGL: 0x9246,\n  MAX_TEXTURE_MAX_ANISOTROPY_EXT: 0x84ff,\n  TEXTURE_MAX_ANISOTROPY_EXT: 0x84fe,\n  COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83f0,\n  COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83f1,\n  COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83f2,\n  COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83f3,\n  COMPRESSED_R11_EAC: 0x9270,\n  COMPRESSED_SIGNED_R11_EAC: 0x9271,\n  COMPRESSED_RG11_EAC: 0x9272,\n  COMPRESSED_SIGNED_RG11_EAC: 0x9273,\n  COMPRESSED_RGB8_ETC2: 0x9274,\n  COMPRESSED_RGBA8_ETC2_EAC: 0x9275,\n  COMPRESSED_SRGB8_ETC2: 0x9276,\n  COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 0x9277,\n  COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9278,\n  COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9279,\n  COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 0x8c00,\n  COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 0x8c02,\n  COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 0x8c01,\n  COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 0x8c03,\n  COMPRESSED_RGB_ETC1_WEBGL: 0x8d64,\n  COMPRESSED_RGB_ATC_WEBGL: 0x8c92,\n  COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 0x8c92,\n  COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 0x87ee,\n  UNSIGNED_INT_24_8_WEBGL: 0x84fa,\n  HALF_FLOAT_OES: 0x8d61,\n  RGBA32F_EXT: 0x8814,\n  RGB32F_EXT: 0x8815,\n  FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: 0x8211,\n  UNSIGNED_NORMALIZED_EXT: 0x8c17,\n  MIN_EXT: 0x8007,\n  MAX_EXT: 0x8008,\n  SRGB_EXT: 0x8c40,\n  SRGB_ALPHA_EXT: 0x8c42,\n  SRGB8_ALPHA8_EXT: 0x8c43,\n  FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: 0x8210,\n  FRAGMENT_SHADER_DERIVATIVE_HINT_OES: 0x8b8b,\n  COLOR_ATTACHMENT0_WEBGL: 0x8ce0,\n  COLOR_ATTACHMENT1_WEBGL: 0x8ce1,\n  COLOR_ATTACHMENT2_WEBGL: 0x8ce2,\n  COLOR_ATTACHMENT3_WEBGL: 0x8ce3,\n  COLOR_ATTACHMENT4_WEBGL: 0x8ce4,\n  COLOR_ATTACHMENT5_WEBGL: 0x8ce5,\n  COLOR_ATTACHMENT6_WEBGL: 0x8ce6,\n  COLOR_ATTACHMENT7_WEBGL: 0x8ce7,\n  COLOR_ATTACHMENT8_WEBGL: 0x8ce8,\n  COLOR_ATTACHMENT9_WEBGL: 0x8ce9,\n  COLOR_ATTACHMENT10_WEBGL: 0x8cea,\n  COLOR_ATTACHMENT11_WEBGL: 0x8ceb,\n  COLOR_ATTACHMENT12_WEBGL: 0x8cec,\n  COLOR_ATTACHMENT13_WEBGL: 0x8ced,\n  COLOR_ATTACHMENT14_WEBGL: 0x8cee,\n  COLOR_ATTACHMENT15_WEBGL: 0x8cef,\n  DRAW_BUFFER0_WEBGL: 0x8825,\n  DRAW_BUFFER1_WEBGL: 0x8826,\n  DRAW_BUFFER2_WEBGL: 0x8827,\n  DRAW_BUFFER3_WEBGL: 0x8828,\n  DRAW_BUFFER4_WEBGL: 0x8829,\n  DRAW_BUFFER5_WEBGL: 0x882a,\n  DRAW_BUFFER6_WEBGL: 0x882b,\n  DRAW_BUFFER7_WEBGL: 0x882c,\n  DRAW_BUFFER8_WEBGL: 0x882d,\n  DRAW_BUFFER9_WEBGL: 0x882e,\n  DRAW_BUFFER10_WEBGL: 0x882f,\n  DRAW_BUFFER11_WEBGL: 0x8830,\n  DRAW_BUFFER12_WEBGL: 0x8831,\n  DRAW_BUFFER13_WEBGL: 0x8832,\n  DRAW_BUFFER14_WEBGL: 0x8833,\n  DRAW_BUFFER15_WEBGL: 0x8834,\n  MAX_COLOR_ATTACHMENTS_WEBGL: 0x8cdf,\n  MAX_DRAW_BUFFERS_WEBGL: 0x8824,\n  VERTEX_ARRAY_BINDING_OES: 0x85b5,\n  QUERY_COUNTER_BITS_EXT: 0x8864,\n  CURRENT_QUERY_EXT: 0x8865,\n  QUERY_RESULT_EXT: 0x8866,\n  QUERY_RESULT_AVAILABLE_EXT: 0x8867,\n  TIME_ELAPSED_EXT: 0x88bf,\n  TIMESTAMP_EXT: 0x8e28,\n  GPU_DISJOINT_EXT: 0x8fbb\n});\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/constants/dist/esm/index.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/core/dist/esm/index.js":
/*!******************************************************!*\
  !*** ./node_modules/@luma.gl/core/dist/esm/index.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AnimationLoop\": function() { return /* reexport safe */ _luma_gl_engine__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; },\n/* harmony export */   \"Buffer\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; },\n/* harmony export */   \"ClipSpace\": function() { return /* reexport safe */ _luma_gl_engine__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; },\n/* harmony export */   \"ConeGeometry\": function() { return /* reexport safe */ _luma_gl_engine__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; },\n/* harmony export */   \"CubeGeometry\": function() { return /* reexport safe */ _luma_gl_engine__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; },\n/* harmony export */   \"CylinderGeometry\": function() { return /* reexport safe */ _luma_gl_engine__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; },\n/* harmony export */   \"FEATURES\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_2__.FEATURES; },\n/* harmony export */   \"FragmentShader\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_10__.FragmentShader; },\n/* harmony export */   \"Framebuffer\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; },\n/* harmony export */   \"Geometry\": function() { return /* reexport safe */ _luma_gl_engine__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; },\n/* harmony export */   \"IcoSphereGeometry\": function() { return /* reexport safe */ _luma_gl_engine__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; },\n/* harmony export */   \"Model\": function() { return /* reexport safe */ _luma_gl_engine__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; },\n/* harmony export */   \"PlaneGeometry\": function() { return /* reexport safe */ _luma_gl_engine__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; },\n/* harmony export */   \"Program\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; },\n/* harmony export */   \"ProgramManager\": function() { return /* reexport safe */ _luma_gl_engine__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; },\n/* harmony export */   \"Renderbuffer\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; },\n/* harmony export */   \"SphereGeometry\": function() { return /* reexport safe */ _luma_gl_engine__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; },\n/* harmony export */   \"Texture2D\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; },\n/* harmony export */   \"Texture3D\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; },\n/* harmony export */   \"TextureCube\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; },\n/* harmony export */   \"Timeline\": function() { return /* reexport safe */ _luma_gl_engine__WEBPACK_IMPORTED_MODULE_20__.Timeline; },\n/* harmony export */   \"Transform\": function() { return /* reexport safe */ _luma_gl_engine__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; },\n/* harmony export */   \"TransformFeedback\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; },\n/* harmony export */   \"TruncatedConeGeometry\": function() { return /* reexport safe */ _luma_gl_engine__WEBPACK_IMPORTED_MODULE_29__[\"default\"]; },\n/* harmony export */   \"VertexShader\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_10__.VertexShader; },\n/* harmony export */   \"assert\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_38__.assert; },\n/* harmony export */   \"clear\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_11__.clear; },\n/* harmony export */   \"cloneTextureFrom\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_13__.cloneTextureFrom; },\n/* harmony export */   \"copyToTexture\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_12__.copyToTexture; },\n/* harmony export */   \"createGLContext\": function() { return /* reexport safe */ _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.createGLContext; },\n/* harmony export */   \"cssToDevicePixels\": function() { return /* reexport safe */ _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.cssToDevicePixels; },\n/* harmony export */   \"cssToDeviceRatio\": function() { return /* reexport safe */ _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.cssToDeviceRatio; },\n/* harmony export */   \"dirlight\": function() { return /* reexport safe */ _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_34__.dirlight; },\n/* harmony export */   \"fp32\": function() { return /* reexport safe */ _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_31__.fp32; },\n/* harmony export */   \"fp64\": function() { return /* reexport safe */ _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_32__.fp64; },\n/* harmony export */   \"getParameters\": function() { return /* reexport safe */ _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.getParameters; },\n/* harmony export */   \"gouraudLighting\": function() { return /* reexport safe */ _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_36__.gouraudLighting; },\n/* harmony export */   \"hasFeature\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_3__.hasFeature; },\n/* harmony export */   \"hasFeatures\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_3__.hasFeatures; },\n/* harmony export */   \"instrumentGLContext\": function() { return /* reexport safe */ _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.instrumentGLContext; },\n/* harmony export */   \"isWebGL\": function() { return /* reexport safe */ _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL; },\n/* harmony export */   \"isWebGL2\": function() { return /* reexport safe */ _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2; },\n/* harmony export */   \"log\": function() { return /* reexport safe */ _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log; },\n/* harmony export */   \"lumaStats\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.lumaStats; },\n/* harmony export */   \"normalizeShaderModule\": function() { return /* reexport safe */ _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_30__.normalizeShaderModule; },\n/* harmony export */   \"pbr\": function() { return /* reexport safe */ _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_37__.pbr; },\n/* harmony export */   \"phongLighting\": function() { return /* reexport safe */ _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_36__.phongLighting; },\n/* harmony export */   \"picking\": function() { return /* reexport safe */ _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_35__.picking; },\n/* harmony export */   \"project\": function() { return /* reexport safe */ _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_33__.project; },\n/* harmony export */   \"readPixelsToArray\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_12__.readPixelsToArray; },\n/* harmony export */   \"readPixelsToBuffer\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_12__.readPixelsToBuffer; },\n/* harmony export */   \"resetParameters\": function() { return /* reexport safe */ _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.resetParameters; },\n/* harmony export */   \"setParameters\": function() { return /* reexport safe */ _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.setParameters; },\n/* harmony export */   \"uid\": function() { return /* reexport safe */ _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_39__.uid; },\n/* harmony export */   \"withParameters\": function() { return /* reexport safe */ _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.withParameters; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/init.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/features/webgl-features-table.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/features/features.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/program.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/renderbuffer.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-cube.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/shader.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/clear.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/copy-and-blit.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/texture-utils.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-3d.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/transform-feedback.js\");\n/* harmony import */ var _luma_gl_engine__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @luma.gl/engine */ \"./node_modules/@luma.gl/engine/dist/esm/lib/animation-loop.js\");\n/* harmony import */ var _luma_gl_engine__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @luma.gl/engine */ \"./node_modules/@luma.gl/engine/dist/esm/lib/model.js\");\n/* harmony import */ var _luma_gl_engine__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @luma.gl/engine */ \"./node_modules/@luma.gl/engine/dist/esm/transform/transform.js\");\n/* harmony import */ var _luma_gl_engine__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @luma.gl/engine */ \"./node_modules/@luma.gl/engine/dist/esm/lib/program-manager.js\");\n/* harmony import */ var _luma_gl_engine__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @luma.gl/engine */ \"./node_modules/@luma.gl/engine/dist/esm/animation/timeline.js\");\n/* harmony import */ var _luma_gl_engine__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @luma.gl/engine */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js\");\n/* harmony import */ var _luma_gl_engine__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @luma.gl/engine */ \"./node_modules/@luma.gl/engine/dist/esm/utils/clip-space.js\");\n/* harmony import */ var _luma_gl_engine__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @luma.gl/engine */ \"./node_modules/@luma.gl/engine/dist/esm/geometries/cone-geometry.js\");\n/* harmony import */ var _luma_gl_engine__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @luma.gl/engine */ \"./node_modules/@luma.gl/engine/dist/esm/geometries/cube-geometry.js\");\n/* harmony import */ var _luma_gl_engine__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @luma.gl/engine */ \"./node_modules/@luma.gl/engine/dist/esm/geometries/cylinder-geometry.js\");\n/* harmony import */ var _luma_gl_engine__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @luma.gl/engine */ \"./node_modules/@luma.gl/engine/dist/esm/geometries/ico-sphere-geometry.js\");\n/* harmony import */ var _luma_gl_engine__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @luma.gl/engine */ \"./node_modules/@luma.gl/engine/dist/esm/geometries/plane-geometry.js\");\n/* harmony import */ var _luma_gl_engine__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @luma.gl/engine */ \"./node_modules/@luma.gl/engine/dist/esm/geometries/sphere-geometry.js\");\n/* harmony import */ var _luma_gl_engine__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @luma.gl/engine */ \"./node_modules/@luma.gl/engine/dist/esm/geometries/truncated-cone-geometry.js\");\n/* harmony import */ var _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! @luma.gl/shadertools */ \"./node_modules/@luma.gl/shadertools/dist/esm/lib/shader-module.js\");\n/* harmony import */ var _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! @luma.gl/shadertools */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/fp32/fp32.js\");\n/* harmony import */ var _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! @luma.gl/shadertools */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64.js\");\n/* harmony import */ var _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! @luma.gl/shadertools */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/project/project.js\");\n/* harmony import */ var _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! @luma.gl/shadertools */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/dirlight/dirlight.js\");\n/* harmony import */ var _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! @luma.gl/shadertools */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/picking/picking.js\");\n/* harmony import */ var _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! @luma.gl/shadertools */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.js\");\n/* harmony import */ var _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! @luma.gl/shadertools */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/pbr/pbr.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js\");\n\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/core/dist/esm/index.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/animation/timeline.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/animation/timeline.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Timeline\": function() { return /* binding */ Timeline; }\n/* harmony export */ });\nlet channelHandles = 1;\nlet animationHandles = 1;\nclass Timeline {\n  constructor() {\n    this.time = 0;\n    this.channels = new Map();\n    this.animations = new Map();\n    this.playing = false;\n    this.lastEngineTime = -1;\n  }\n\n  addChannel(props) {\n    const {\n      delay = 0,\n      duration = Number.POSITIVE_INFINITY,\n      rate = 1,\n      repeat = 1\n    } = props;\n    const handle = channelHandles++;\n    const channel = {\n      time: 0,\n      delay,\n      duration,\n      rate,\n      repeat\n    };\n\n    this._setChannelTime(channel, this.time);\n\n    this.channels.set(handle, channel);\n    return handle;\n  }\n\n  removeChannel(handle) {\n    this.channels.delete(handle);\n\n    for (const [animationHandle, animation] of this.animations) {\n      if (animation.channel === handle) {\n        this.detachAnimation(animationHandle);\n      }\n    }\n  }\n\n  isFinished(handle) {\n    const channel = this.channels.get(handle);\n\n    if (channel === undefined) {\n      return false;\n    }\n\n    return this.time >= channel.delay + channel.duration * channel.repeat;\n  }\n\n  getTime(handle) {\n    if (handle === undefined) {\n      return this.time;\n    }\n\n    const channel = this.channels.get(handle);\n\n    if (channel === undefined) {\n      return -1;\n    }\n\n    return channel.time;\n  }\n\n  setTime(time) {\n    this.time = Math.max(0, time);\n    const channels = this.channels.values();\n\n    for (const channel of channels) {\n      this._setChannelTime(channel, this.time);\n    }\n\n    const animations = this.animations.values();\n\n    for (const animationData of animations) {\n      const {\n        animation,\n        channel\n      } = animationData;\n      animation.setTime(this.getTime(channel));\n    }\n  }\n\n  play() {\n    this.playing = true;\n  }\n\n  pause() {\n    this.playing = false;\n    this.lastEngineTime = -1;\n  }\n\n  reset() {\n    this.setTime(0);\n  }\n\n  attachAnimation(animation, channelHandle) {\n    const animationHandle = animationHandles++;\n    this.animations.set(animationHandle, {\n      animation,\n      channel: channelHandle\n    });\n    animation.setTime(this.getTime(channelHandle));\n    return animationHandle;\n  }\n\n  detachAnimation(handle) {\n    this.animations.delete(handle);\n  }\n\n  update(engineTime) {\n    if (this.playing) {\n      if (this.lastEngineTime === -1) {\n        this.lastEngineTime = engineTime;\n      }\n\n      this.setTime(this.time + (engineTime - this.lastEngineTime));\n      this.lastEngineTime = engineTime;\n    }\n  }\n\n  _setChannelTime(channel, time) {\n    const offsetTime = time - channel.delay;\n    const totalDuration = channel.duration * channel.repeat;\n\n    if (offsetTime >= totalDuration) {\n      channel.time = channel.duration * channel.rate;\n    } else {\n      channel.time = Math.max(0, offsetTime) % channel.duration;\n      channel.time *= channel.rate;\n    }\n  }\n\n}\n//# sourceMappingURL=timeline.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/animation/timeline.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/geometries/cone-geometry.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/geometries/cone-geometry.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ConeGeometry; }\n/* harmony export */ });\n/* harmony import */ var _truncated_cone_geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./truncated-cone-geometry */ \"./node_modules/@luma.gl/engine/dist/esm/geometries/truncated-cone-geometry.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js\");\n\n\nclass ConeGeometry extends _truncated_cone_geometry__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      id = (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.uid)('cone-geometry'),\n      radius = 1,\n      cap = true\n    } = props;\n    super({ ...props,\n      id,\n      topRadius: 0,\n      topCap: Boolean(cap),\n      bottomCap: Boolean(cap),\n      bottomRadius: radius\n    });\n  }\n\n}\n//# sourceMappingURL=cone-geometry.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/geometries/cone-geometry.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/geometries/cube-geometry.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/geometries/cube-geometry.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ CubeGeometry; }\n/* harmony export */ });\n/* harmony import */ var _geometry_geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry/geometry */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js\");\n\n\nconst CUBE_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13, 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23]);\nconst CUBE_POSITIONS = new Float32Array([-1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1, -1, -1, 1, -1, 1, 1, -1, 1, -1, -1, -1, 1, -1, -1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1, 1, -1]);\nconst CUBE_NORMALS = new Float32Array([0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0]);\nconst CUBE_TEX_COORDS = new Float32Array([0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1]);\nconst ATTRIBUTES = {\n  POSITION: {\n    size: 3,\n    value: new Float32Array(CUBE_POSITIONS)\n  },\n  NORMAL: {\n    size: 3,\n    value: new Float32Array(CUBE_NORMALS)\n  },\n  TEXCOORD_0: {\n    size: 2,\n    value: new Float32Array(CUBE_TEX_COORDS)\n  }\n};\nclass CubeGeometry extends _geometry_geometry__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      id = (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.uid)('cube-geometry')\n    } = props;\n    super({ ...props,\n      id,\n      indices: {\n        size: 1,\n        value: new Uint16Array(CUBE_INDICES)\n      },\n      attributes: { ...ATTRIBUTES,\n        ...props.attributes\n      }\n    });\n  }\n\n}\n//# sourceMappingURL=cube-geometry.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/geometries/cube-geometry.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/geometries/cylinder-geometry.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/geometries/cylinder-geometry.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ CylinderGeometry; }\n/* harmony export */ });\n/* harmony import */ var _truncated_cone_geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./truncated-cone-geometry */ \"./node_modules/@luma.gl/engine/dist/esm/geometries/truncated-cone-geometry.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js\");\n\n\nclass CylinderGeometry extends _truncated_cone_geometry__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      id = (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.uid)('cylinder-geometry'),\n      radius = 1\n    } = props;\n    super({ ...props,\n      id,\n      bottomRadius: radius,\n      topRadius: radius\n    });\n  }\n\n}\n//# sourceMappingURL=cylinder-geometry.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/geometries/cylinder-geometry.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/geometries/ico-sphere-geometry.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/geometries/ico-sphere-geometry.js ***!
  \*********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ IcoSphereGeometry; }\n/* harmony export */ });\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/vector3.js\");\n/* harmony import */ var _geometry_geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry/geometry */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js\");\n\n\n\nconst ICO_POSITIONS = [-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 1, 0, -1, 0, 1, 0, 0];\nconst ICO_INDICES = [3, 4, 5, 3, 5, 1, 3, 1, 0, 3, 0, 4, 4, 0, 2, 4, 2, 5, 2, 0, 1, 5, 2, 1];\nclass IcoSphereGeometry extends _geometry_geometry__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      id = (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.uid)('ico-sphere-geometry')\n    } = props;\n    const {\n      indices,\n      attributes\n    } = tesselateIcosaHedron(props);\n    super({ ...props,\n      id,\n      indices,\n      attributes: { ...attributes,\n        ...props.attributes\n      }\n    });\n  }\n\n}\n\nfunction tesselateIcosaHedron(props) {\n  const {\n    iterations = 0\n  } = props;\n  const PI = Math.PI;\n  const PI2 = PI * 2;\n  const positions = [...ICO_POSITIONS];\n  let indices = [...ICO_INDICES];\n  positions.push();\n  indices.push();\n\n  const getMiddlePoint = (() => {\n    const pointMemo = {};\n    return (i1, i2) => {\n      i1 *= 3;\n      i2 *= 3;\n      const mini = i1 < i2 ? i1 : i2;\n      const maxi = i1 > i2 ? i1 : i2;\n      const key = \"\".concat(mini, \"|\").concat(maxi);\n\n      if (key in pointMemo) {\n        return pointMemo[key];\n      }\n\n      const x1 = positions[i1];\n      const y1 = positions[i1 + 1];\n      const z1 = positions[i1 + 2];\n      const x2 = positions[i2];\n      const y2 = positions[i2 + 1];\n      const z2 = positions[i2 + 2];\n      let xm = (x1 + x2) / 2;\n      let ym = (y1 + y2) / 2;\n      let zm = (z1 + z2) / 2;\n      const len = Math.sqrt(xm * xm + ym * ym + zm * zm);\n      xm /= len;\n      ym /= len;\n      zm /= len;\n      positions.push(xm, ym, zm);\n      return pointMemo[key] = positions.length / 3 - 1;\n    };\n  })();\n\n  for (let i = 0; i < iterations; i++) {\n    const indices2 = [];\n\n    for (let j = 0; j < indices.length; j += 3) {\n      const a = getMiddlePoint(indices[j + 0], indices[j + 1]);\n      const b = getMiddlePoint(indices[j + 1], indices[j + 2]);\n      const c = getMiddlePoint(indices[j + 2], indices[j + 0]);\n      indices2.push(c, indices[j + 0], a, a, indices[j + 1], b, b, indices[j + 2], c, a, b, c);\n    }\n\n    indices = indices2;\n  }\n\n  const normals = new Array(positions.length);\n  const texCoords = new Array(positions.length / 3 * 2);\n  const l = indices.length;\n\n  for (let i = l - 3; i >= 0; i -= 3) {\n    const i1 = indices[i + 0];\n    const i2 = indices[i + 1];\n    const i3 = indices[i + 2];\n    const in1 = i1 * 3;\n    const in2 = i2 * 3;\n    const in3 = i3 * 3;\n    const iu1 = i1 * 2;\n    const iu2 = i2 * 2;\n    const iu3 = i3 * 2;\n    const x1 = positions[in1 + 0];\n    const y1 = positions[in1 + 1];\n    const z1 = positions[in1 + 2];\n    const theta1 = Math.acos(z1 / Math.sqrt(x1 * x1 + y1 * y1 + z1 * z1));\n    const phi1 = Math.atan2(y1, x1) + PI;\n    const v1 = theta1 / PI;\n    const u1 = 1 - phi1 / PI2;\n    const x2 = positions[in2 + 0];\n    const y2 = positions[in2 + 1];\n    const z2 = positions[in2 + 2];\n    const theta2 = Math.acos(z2 / Math.sqrt(x2 * x2 + y2 * y2 + z2 * z2));\n    const phi2 = Math.atan2(y2, x2) + PI;\n    const v2 = theta2 / PI;\n    const u2 = 1 - phi2 / PI2;\n    const x3 = positions[in3 + 0];\n    const y3 = positions[in3 + 1];\n    const z3 = positions[in3 + 2];\n    const theta3 = Math.acos(z3 / Math.sqrt(x3 * x3 + y3 * y3 + z3 * z3));\n    const phi3 = Math.atan2(y3, x3) + PI;\n    const v3 = theta3 / PI;\n    const u3 = 1 - phi3 / PI2;\n    const vec1 = [x3 - x2, y3 - y2, z3 - z2];\n    const vec2 = [x1 - x2, y1 - y2, z1 - z2];\n    const normal = new _math_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"](vec1).cross(vec2).normalize();\n    let newIndex;\n\n    if ((u1 === 0 || u2 === 0 || u3 === 0) && (u1 === 0 || u1 > 0.5) && (u2 === 0 || u2 > 0.5) && (u3 === 0 || u3 > 0.5)) {\n      positions.push(positions[in1 + 0], positions[in1 + 1], positions[in1 + 2]);\n      newIndex = positions.length / 3 - 1;\n      indices.push(newIndex);\n      texCoords[newIndex * 2 + 0] = 1;\n      texCoords[newIndex * 2 + 1] = v1;\n      normals[newIndex * 3 + 0] = normal.x;\n      normals[newIndex * 3 + 1] = normal.y;\n      normals[newIndex * 3 + 2] = normal.z;\n      positions.push(positions[in2 + 0], positions[in2 + 1], positions[in2 + 2]);\n      newIndex = positions.length / 3 - 1;\n      indices.push(newIndex);\n      texCoords[newIndex * 2 + 0] = 1;\n      texCoords[newIndex * 2 + 1] = v2;\n      normals[newIndex * 3 + 0] = normal.x;\n      normals[newIndex * 3 + 1] = normal.y;\n      normals[newIndex * 3 + 2] = normal.z;\n      positions.push(positions[in3 + 0], positions[in3 + 1], positions[in3 + 2]);\n      newIndex = positions.length / 3 - 1;\n      indices.push(newIndex);\n      texCoords[newIndex * 2 + 0] = 1;\n      texCoords[newIndex * 2 + 1] = v3;\n      normals[newIndex * 3 + 0] = normal.x;\n      normals[newIndex * 3 + 1] = normal.y;\n      normals[newIndex * 3 + 2] = normal.z;\n    }\n\n    normals[in1 + 0] = normals[in2 + 0] = normals[in3 + 0] = normal.x;\n    normals[in1 + 1] = normals[in2 + 1] = normals[in3 + 1] = normal.y;\n    normals[in1 + 2] = normals[in2 + 2] = normals[in3 + 2] = normal.z;\n    texCoords[iu1 + 0] = u1;\n    texCoords[iu1 + 1] = v1;\n    texCoords[iu2 + 0] = u2;\n    texCoords[iu2 + 1] = v2;\n    texCoords[iu3 + 0] = u3;\n    texCoords[iu3 + 1] = v3;\n  }\n\n  return {\n    indices: {\n      size: 1,\n      value: new Uint16Array(indices)\n    },\n    attributes: {\n      POSITION: {\n        size: 3,\n        value: new Float32Array(positions)\n      },\n      NORMAL: {\n        size: 3,\n        value: new Float32Array(normals)\n      },\n      TEXCOORD_0: {\n        size: 2,\n        value: new Float32Array(texCoords)\n      }\n    }\n  };\n}\n//# sourceMappingURL=ico-sphere-geometry.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/geometries/ico-sphere-geometry.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/geometries/plane-geometry.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/geometries/plane-geometry.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ PlaneGeometry; }\n/* harmony export */ });\n/* harmony import */ var _geometry_geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry/geometry */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js\");\n/* harmony import */ var _geometry_geometry_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry/geometry-utils */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry-utils.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js\");\n\n\n\nclass PlaneGeometry extends _geometry_geometry__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      id = (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.uid)('plane-geometry')\n    } = props;\n    const {\n      indices,\n      attributes\n    } = tesselatePlane(props);\n    super({ ...props,\n      id,\n      indices,\n      attributes: { ...attributes,\n        ...props.attributes\n      }\n    });\n  }\n\n}\n\nfunction tesselatePlane(props) {\n  const {\n    type = 'x,y',\n    offset = 0,\n    flipCull = false,\n    unpack = false\n  } = props;\n  const coords = type.split(',');\n  let c1len = props[\"\".concat(coords[0], \"len\")] || 1;\n  const c2len = props[\"\".concat(coords[1], \"len\")] || 1;\n  const subdivisions1 = props[\"n\".concat(coords[0])] || 1;\n  const subdivisions2 = props[\"n\".concat(coords[1])] || 1;\n  const numVertices = (subdivisions1 + 1) * (subdivisions2 + 1);\n  const positions = new Float32Array(numVertices * 3);\n  const normals = new Float32Array(numVertices * 3);\n  const texCoords = new Float32Array(numVertices * 2);\n\n  if (flipCull) {\n    c1len = -c1len;\n  }\n\n  let i2 = 0;\n  let i3 = 0;\n\n  for (let z = 0; z <= subdivisions2; z++) {\n    for (let x = 0; x <= subdivisions1; x++) {\n      const u = x / subdivisions1;\n      const v = z / subdivisions2;\n      texCoords[i2 + 0] = flipCull ? 1 - u : u;\n      texCoords[i2 + 1] = v;\n\n      switch (type) {\n        case 'x,y':\n          positions[i3 + 0] = c1len * u - c1len * 0.5;\n          positions[i3 + 1] = c2len * v - c2len * 0.5;\n          positions[i3 + 2] = offset;\n          normals[i3 + 0] = 0;\n          normals[i3 + 1] = 0;\n          normals[i3 + 2] = flipCull ? 1 : -1;\n          break;\n\n        case 'x,z':\n          positions[i3 + 0] = c1len * u - c1len * 0.5;\n          positions[i3 + 1] = offset;\n          positions[i3 + 2] = c2len * v - c2len * 0.5;\n          normals[i3 + 0] = 0;\n          normals[i3 + 1] = flipCull ? 1 : -1;\n          normals[i3 + 2] = 0;\n          break;\n\n        case 'y,z':\n          positions[i3 + 0] = offset;\n          positions[i3 + 1] = c1len * u - c1len * 0.5;\n          positions[i3 + 2] = c2len * v - c2len * 0.5;\n          normals[i3 + 0] = flipCull ? 1 : -1;\n          normals[i3 + 1] = 0;\n          normals[i3 + 2] = 0;\n          break;\n\n        default:\n          throw new Error('PlaneGeometry: unknown type');\n      }\n\n      i2 += 2;\n      i3 += 3;\n    }\n  }\n\n  const numVertsAcross = subdivisions1 + 1;\n  const indices = new Uint16Array(subdivisions1 * subdivisions2 * 6);\n\n  for (let z = 0; z < subdivisions2; z++) {\n    for (let x = 0; x < subdivisions1; x++) {\n      const index = (z * subdivisions1 + x) * 6;\n      indices[index + 0] = (z + 0) * numVertsAcross + x;\n      indices[index + 1] = (z + 1) * numVertsAcross + x;\n      indices[index + 2] = (z + 0) * numVertsAcross + x + 1;\n      indices[index + 3] = (z + 1) * numVertsAcross + x;\n      indices[index + 4] = (z + 1) * numVertsAcross + x + 1;\n      indices[index + 5] = (z + 0) * numVertsAcross + x + 1;\n    }\n  }\n\n  const geometry = {\n    indices: {\n      size: 1,\n      value: indices\n    },\n    attributes: {\n      POSITION: {\n        size: 3,\n        value: positions\n      },\n      NORMAL: {\n        size: 3,\n        value: normals\n      },\n      TEXCOORD_0: {\n        size: 2,\n        value: texCoords\n      }\n    }\n  };\n  return unpack ? (0,_geometry_geometry_utils__WEBPACK_IMPORTED_MODULE_2__.unpackIndexedGeometry)(geometry) : geometry;\n}\n//# sourceMappingURL=plane-geometry.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/geometries/plane-geometry.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/geometries/sphere-geometry.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/geometries/sphere-geometry.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ SphereGeometry; }\n/* harmony export */ });\n/* harmony import */ var _geometry_geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry/geometry */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js\");\n\n\nclass SphereGeometry extends _geometry_geometry__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      id = (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.uid)('sphere-geometry')\n    } = props;\n    const {\n      indices,\n      attributes\n    } = tesselateSphere(props);\n    super({ ...props,\n      id,\n      indices,\n      attributes: { ...attributes,\n        ...props.attributes\n      }\n    });\n  }\n\n}\n\nfunction tesselateSphere(props) {\n  const {\n    nlat = 10,\n    nlong = 10\n  } = props;\n  let {\n    radius = 1\n  } = props;\n  const startLat = 0;\n  const endLat = Math.PI;\n  const latRange = endLat - startLat;\n  const startLong = 0;\n  const endLong = 2 * Math.PI;\n  const longRange = endLong - startLong;\n  const numVertices = (nlat + 1) * (nlong + 1);\n\n  if (typeof radius === 'number') {\n    const value = radius;\n\n    radius = (n1, n2, n3, u, v) => value;\n  }\n\n  const positions = new Float32Array(numVertices * 3);\n  const normals = new Float32Array(numVertices * 3);\n  const texCoords = new Float32Array(numVertices * 2);\n  const IndexType = numVertices > 0xffff ? Uint32Array : Uint16Array;\n  const indices = new IndexType(nlat * nlong * 6);\n\n  for (let y = 0; y <= nlat; y++) {\n    for (let x = 0; x <= nlong; x++) {\n      const u = x / nlong;\n      const v = y / nlat;\n      const index = x + y * (nlong + 1);\n      const i2 = index * 2;\n      const i3 = index * 3;\n      const theta = longRange * u;\n      const phi = latRange * v;\n      const sinTheta = Math.sin(theta);\n      const cosTheta = Math.cos(theta);\n      const sinPhi = Math.sin(phi);\n      const cosPhi = Math.cos(phi);\n      const ux = cosTheta * sinPhi;\n      const uy = cosPhi;\n      const uz = sinTheta * sinPhi;\n      const r = radius(ux, uy, uz, u, v);\n      positions[i3 + 0] = r * ux;\n      positions[i3 + 1] = r * uy;\n      positions[i3 + 2] = r * uz;\n      normals[i3 + 0] = ux;\n      normals[i3 + 1] = uy;\n      normals[i3 + 2] = uz;\n      texCoords[i2 + 0] = u;\n      texCoords[i2 + 1] = 1 - v;\n    }\n  }\n\n  const numVertsAround = nlong + 1;\n\n  for (let x = 0; x < nlong; x++) {\n    for (let y = 0; y < nlat; y++) {\n      const index = (x * nlat + y) * 6;\n      indices[index + 0] = y * numVertsAround + x;\n      indices[index + 1] = y * numVertsAround + x + 1;\n      indices[index + 2] = (y + 1) * numVertsAround + x;\n      indices[index + 3] = (y + 1) * numVertsAround + x;\n      indices[index + 4] = y * numVertsAround + x + 1;\n      indices[index + 5] = (y + 1) * numVertsAround + x + 1;\n    }\n  }\n\n  return {\n    indices: {\n      size: 1,\n      value: indices\n    },\n    attributes: {\n      POSITION: {\n        size: 3,\n        value: positions\n      },\n      NORMAL: {\n        size: 3,\n        value: normals\n      },\n      TEXCOORD_0: {\n        size: 2,\n        value: texCoords\n      }\n    }\n  };\n}\n//# sourceMappingURL=sphere-geometry.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/geometries/sphere-geometry.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/geometries/truncated-cone-geometry.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/geometries/truncated-cone-geometry.js ***!
  \*************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ TruncatedConeGeometry; }\n/* harmony export */ });\n/* harmony import */ var _geometry_geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry/geometry */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js\");\n\n\nconst INDEX_OFFSETS = {\n  x: [2, 0, 1],\n  y: [0, 1, 2],\n  z: [1, 2, 0]\n};\nclass TruncatedConeGeometry extends _geometry_geometry__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      id = (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.uid)('truncated-code-geometry')\n    } = props;\n    const {\n      indices,\n      attributes\n    } = tesselateTruncatedCone(props);\n    super({ ...props,\n      id,\n      indices,\n      attributes: { ...attributes,\n        ...props.attributes\n      }\n    });\n  }\n\n}\n\nfunction tesselateTruncatedCone(props) {\n  const {\n    bottomRadius = 0,\n    topRadius = 0,\n    height = 1,\n    nradial = 10,\n    nvertical = 10,\n    verticalAxis = 'y',\n    topCap = false,\n    bottomCap = false\n  } = props;\n  const extra = (topCap ? 2 : 0) + (bottomCap ? 2 : 0);\n  const numVertices = (nradial + 1) * (nvertical + 1 + extra);\n  const slant = Math.atan2(bottomRadius - topRadius, height);\n  const msin = Math.sin;\n  const mcos = Math.cos;\n  const mpi = Math.PI;\n  const cosSlant = mcos(slant);\n  const sinSlant = msin(slant);\n  const start = topCap ? -2 : 0;\n  const end = nvertical + (bottomCap ? 2 : 0);\n  const vertsAroundEdge = nradial + 1;\n  const indices = new Uint16Array(nradial * (nvertical + extra) * 6);\n  const indexOffset = INDEX_OFFSETS[verticalAxis];\n  const positions = new Float32Array(numVertices * 3);\n  const normals = new Float32Array(numVertices * 3);\n  const texCoords = new Float32Array(numVertices * 2);\n  let i3 = 0;\n  let i2 = 0;\n\n  for (let i = start; i <= end; i++) {\n    let v = i / nvertical;\n    let y = height * v;\n    let ringRadius;\n\n    if (i < 0) {\n      y = 0;\n      v = 1;\n      ringRadius = bottomRadius;\n    } else if (i > nvertical) {\n      y = height;\n      v = 1;\n      ringRadius = topRadius;\n    } else {\n      ringRadius = bottomRadius + (topRadius - bottomRadius) * (i / nvertical);\n    }\n\n    if (i === -2 || i === nvertical + 2) {\n      ringRadius = 0;\n      v = 0;\n    }\n\n    y -= height / 2;\n\n    for (let j = 0; j < vertsAroundEdge; j++) {\n      const sin = msin(j * mpi * 2 / nradial);\n      const cos = mcos(j * mpi * 2 / nradial);\n      positions[i3 + indexOffset[0]] = sin * ringRadius;\n      positions[i3 + indexOffset[1]] = y;\n      positions[i3 + indexOffset[2]] = cos * ringRadius;\n      normals[i3 + indexOffset[0]] = i < 0 || i > nvertical ? 0 : sin * cosSlant;\n      normals[i3 + indexOffset[1]] = i < 0 ? -1 : i > nvertical ? 1 : sinSlant;\n      normals[i3 + indexOffset[2]] = i < 0 || i > nvertical ? 0 : cos * cosSlant;\n      texCoords[i2 + 0] = j / nradial;\n      texCoords[i2 + 1] = v;\n      i2 += 2;\n      i3 += 3;\n    }\n  }\n\n  for (let i = 0; i < nvertical + extra; i++) {\n    for (let j = 0; j < nradial; j++) {\n      const index = (i * nradial + j) * 6;\n      indices[index + 0] = vertsAroundEdge * (i + 0) + 0 + j;\n      indices[index + 1] = vertsAroundEdge * (i + 0) + 1 + j;\n      indices[index + 2] = vertsAroundEdge * (i + 1) + 1 + j;\n      indices[index + 3] = vertsAroundEdge * (i + 0) + 0 + j;\n      indices[index + 4] = vertsAroundEdge * (i + 1) + 1 + j;\n      indices[index + 5] = vertsAroundEdge * (i + 1) + 0 + j;\n    }\n  }\n\n  return {\n    indices,\n    attributes: {\n      POSITION: {\n        size: 3,\n        value: positions\n      },\n      NORMAL: {\n        size: 3,\n        value: normals\n      },\n      TEXCOORD_0: {\n        size: 2,\n        value: texCoords\n      }\n    }\n  };\n}\n//# sourceMappingURL=truncated-cone-geometry.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/geometries/truncated-cone-geometry.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/geometry/geometry-utils.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/geometry/geometry-utils.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"unpackIndexedGeometry\": function() { return /* binding */ unpackIndexedGeometry; }\n/* harmony export */ });\nfunction unpackIndexedGeometry(geometry) {\n  const {\n    indices,\n    attributes\n  } = geometry;\n\n  if (!indices) {\n    return geometry;\n  }\n\n  const vertexCount = indices.value.length;\n  const unpackedAttributes = {};\n\n  for (const attributeName in attributes) {\n    const attribute = attributes[attributeName];\n    const {\n      constant,\n      value,\n      size\n    } = attribute;\n\n    if (constant || !size) {\n      continue;\n    }\n\n    const unpackedValue = new value.constructor(vertexCount * size);\n\n    for (let x = 0; x < vertexCount; ++x) {\n      const index = indices.value[x];\n\n      for (let i = 0; i < size; i++) {\n        unpackedValue[x * size + i] = value[index * size + i];\n      }\n    }\n\n    unpackedAttributes[attributeName] = {\n      size,\n      value: unpackedValue\n    };\n  }\n\n  return {\n    attributes: Object.assign({}, attributes, unpackedAttributes)\n  };\n}\n//# sourceMappingURL=geometry-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/geometry/geometry-utils.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js":
/*!********************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DRAW_MODE\": function() { return /* binding */ DRAW_MODE; },\n/* harmony export */   \"default\": function() { return /* binding */ Geometry; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n\nconst DRAW_MODE = {\n  POINTS: 0x0000,\n  LINES: 0x0001,\n  LINE_LOOP: 0x0002,\n  LINE_STRIP: 0x0003,\n  TRIANGLES: 0x0004,\n  TRIANGLE_STRIP: 0x0005,\n  TRIANGLE_FAN: 0x0006\n};\nclass Geometry {\n  static get DRAW_MODE() {\n    return DRAW_MODE;\n  }\n\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      id = (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_0__.uid)('geometry'),\n      drawMode = DRAW_MODE.TRIANGLES,\n      attributes = {},\n      indices = null,\n      vertexCount = null\n    } = props;\n    this.id = id;\n    this.drawMode = drawMode | 0;\n    this.attributes = {};\n    this.userData = {};\n\n    this._setAttributes(attributes, indices);\n\n    this.vertexCount = vertexCount || this._calculateVertexCount(this.attributes, this.indices);\n  }\n\n  get mode() {\n    return this.drawMode;\n  }\n\n  getVertexCount() {\n    return this.vertexCount;\n  }\n\n  getAttributes() {\n    return this.indices ? {\n      indices: this.indices,\n      ...this.attributes\n    } : this.attributes;\n  }\n\n  _print(attributeName) {\n    return \"Geometry \".concat(this.id, \" attribute \").concat(attributeName);\n  }\n\n  _setAttributes(attributes, indices) {\n    if (indices) {\n      this.indices = ArrayBuffer.isView(indices) ? {\n        value: indices,\n        size: 1\n      } : indices;\n    }\n\n    for (const attributeName in attributes) {\n      let attribute = attributes[attributeName];\n      attribute = ArrayBuffer.isView(attribute) ? {\n        value: attribute\n      } : attribute;\n      (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.assert)(ArrayBuffer.isView(attribute.value), \"\".concat(this._print(attributeName), \": must be typed array or object with value as typed array\"));\n\n      if ((attributeName === 'POSITION' || attributeName === 'positions') && !attribute.size) {\n        attribute.size = 3;\n      }\n\n      if (attributeName === 'indices') {\n        (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.assert)(!this.indices);\n        this.indices = attribute;\n      } else {\n        this.attributes[attributeName] = attribute;\n      }\n    }\n\n    if (this.indices && this.indices.isIndexed !== undefined) {\n      this.indices = Object.assign({}, this.indices);\n      delete this.indices.isIndexed;\n    }\n\n    return this;\n  }\n\n  _calculateVertexCount(attributes, indices) {\n    if (indices) {\n      return indices.value.length;\n    }\n\n    let vertexCount = Infinity;\n\n    for (const attributeName in attributes) {\n      const attribute = attributes[attributeName];\n      const {\n        value,\n        size,\n        constant\n      } = attribute;\n\n      if (!constant && value && size >= 1) {\n        vertexCount = Math.min(vertexCount, value.length / size);\n      }\n    }\n\n    (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.assert)(Number.isFinite(vertexCount));\n    return vertexCount;\n  }\n\n}\n//# sourceMappingURL=geometry.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/lib/animation-loop.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/lib/animation-loop.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ AnimationLoop; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/init.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/query.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/request-animation-frame.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js\");\n/* harmony import */ var _probe_gl_env__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @probe.gl/env */ \"./node_modules/@probe.gl/env/dist/esm/lib/is-browser.js\");\n\n\n\nconst isPage = (0,_probe_gl_env__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() && typeof document !== 'undefined';\nlet statIdCounter = 0;\nclass AnimationLoop {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      onCreateContext = opts => (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.createGLContext)(opts),\n      onAddHTML = null,\n      onInitialize = () => {},\n      onRender = () => {},\n      onFinalize = () => {},\n      onError,\n      gl = null,\n      glOptions = {},\n      debug = false,\n      createFramebuffer = false,\n      autoResizeViewport = true,\n      autoResizeDrawingBuffer = true,\n      stats = _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_2__.lumaStats.get(\"animation-loop-\".concat(statIdCounter++))\n    } = props;\n    let {\n      useDevicePixels = true\n    } = props;\n\n    if ('useDevicePixelRatio' in props) {\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.deprecated('useDevicePixelRatio', 'useDevicePixels')();\n      useDevicePixels = props.useDevicePixelRatio;\n    }\n\n    this.props = {\n      onCreateContext,\n      onAddHTML,\n      onInitialize,\n      onRender,\n      onFinalize,\n      onError,\n      gl,\n      glOptions,\n      debug,\n      createFramebuffer\n    };\n    this.gl = gl;\n    this.needsRedraw = null;\n    this.timeline = null;\n    this.stats = stats;\n    this.cpuTime = this.stats.get('CPU Time');\n    this.gpuTime = this.stats.get('GPU Time');\n    this.frameRate = this.stats.get('Frame Rate');\n    this._initialized = false;\n    this._running = false;\n    this._animationFrameId = null;\n    this._nextFramePromise = null;\n    this._resolveNextFrame = null;\n    this._cpuStartTime = 0;\n    this.setProps({\n      autoResizeViewport,\n      autoResizeDrawingBuffer,\n      useDevicePixels\n    });\n    this.start = this.start.bind(this);\n    this.stop = this.stop.bind(this);\n    this._pageLoadPromise = null;\n    this._onMousemove = this._onMousemove.bind(this);\n    this._onMouseleave = this._onMouseleave.bind(this);\n  }\n\n  delete() {\n    this.stop();\n\n    this._setDisplay(null);\n  }\n\n  setNeedsRedraw(reason) {\n    (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_3__.assert)(typeof reason === 'string');\n    this.needsRedraw = this.needsRedraw || reason;\n    return this;\n  }\n\n  setProps(props) {\n    if ('autoResizeViewport' in props) {\n      this.autoResizeViewport = props.autoResizeViewport;\n    }\n\n    if ('autoResizeDrawingBuffer' in props) {\n      this.autoResizeDrawingBuffer = props.autoResizeDrawingBuffer;\n    }\n\n    if ('useDevicePixels' in props) {\n      this.useDevicePixels = props.useDevicePixels;\n    }\n\n    return this;\n  }\n\n  start() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (this._running) {\n      return this;\n    }\n\n    this._running = true;\n\n    const startPromise = this._getPageLoadPromise().then(() => {\n      if (!this._running || this._initialized) {\n        return null;\n      }\n\n      this._createWebGLContext(opts);\n\n      this._createFramebuffer();\n\n      this._startEventHandling();\n\n      this._initializeCallbackData();\n\n      this._updateCallbackData();\n\n      this._resizeCanvasDrawingBuffer();\n\n      this._resizeViewport();\n\n      this._gpuTimeQuery = _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_4__[\"default\"].isSupported(this.gl, ['timers']) ? new _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_4__[\"default\"](this.gl) : null;\n      this._initialized = true;\n      return this.onInitialize(this.animationProps);\n    }).then(appContext => {\n      if (this._running) {\n        this._addCallbackData(appContext || {});\n\n        if (appContext !== false) {\n          this._startLoop();\n        }\n      }\n    });\n\n    if (this.props.onError) {\n      startPromise.catch(this.props.onError);\n    }\n\n    return this;\n  }\n\n  redraw() {\n    if (this.isContextLost()) {\n      return this;\n    }\n\n    this._beginTimers();\n\n    this._setupFrame();\n\n    this._updateCallbackData();\n\n    this._renderFrame(this.animationProps);\n\n    this._clearNeedsRedraw();\n\n    if (this.offScreen && this.gl.commit) {\n      this.gl.commit();\n    }\n\n    if (this._resolveNextFrame) {\n      this._resolveNextFrame(this);\n\n      this._nextFramePromise = null;\n      this._resolveNextFrame = null;\n    }\n\n    this._endTimers();\n\n    return this;\n  }\n\n  stop() {\n    if (this._running) {\n      this._finalizeCallbackData();\n\n      this._cancelAnimationFrame(this._animationFrameId);\n\n      this._nextFramePromise = null;\n      this._resolveNextFrame = null;\n      this._animationFrameId = null;\n      this._running = false;\n    }\n\n    return this;\n  }\n\n  attachTimeline(timeline) {\n    this.timeline = timeline;\n    return this.timeline;\n  }\n\n  detachTimeline() {\n    this.timeline = null;\n  }\n\n  waitForRender() {\n    this.setNeedsRedraw('waitForRender');\n\n    if (!this._nextFramePromise) {\n      this._nextFramePromise = new Promise(resolve => {\n        this._resolveNextFrame = resolve;\n      });\n    }\n\n    return this._nextFramePromise;\n  }\n\n  async toDataURL() {\n    this.setNeedsRedraw('toDataURL');\n    await this.waitForRender();\n    return this.gl.canvas.toDataURL();\n  }\n\n  isContextLost() {\n    return this.gl.isContextLost();\n  }\n\n  onCreateContext() {\n    return this.props.onCreateContext(...arguments);\n  }\n\n  onInitialize() {\n    return this.props.onInitialize(...arguments);\n  }\n\n  onRender() {\n    return this.props.onRender(...arguments);\n  }\n\n  onFinalize() {\n    return this.props.onFinalize(...arguments);\n  }\n\n  getHTMLControlValue(id) {\n    let defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n    const element = document.getElementById(id);\n    return element ? Number(element.value) : defaultValue;\n  }\n\n  setViewParameters() {\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.removed('AnimationLoop.setViewParameters', 'AnimationLoop.setProps')();\n    return this;\n  }\n\n  _startLoop() {\n    const renderFrame = () => {\n      if (!this._running) {\n        return;\n      }\n\n      this.redraw();\n      this._animationFrameId = this._requestAnimationFrame(renderFrame);\n    };\n\n    this._cancelAnimationFrame(this._animationFrameId);\n\n    this._animationFrameId = this._requestAnimationFrame(renderFrame);\n  }\n\n  _getPageLoadPromise() {\n    if (!this._pageLoadPromise) {\n      this._pageLoadPromise = isPage ? new Promise((resolve, reject) => {\n        if (isPage && document.readyState === 'complete') {\n          resolve(document);\n          return;\n        }\n\n        window.addEventListener('load', () => {\n          resolve(document);\n        });\n      }) : Promise.resolve({});\n    }\n\n    return this._pageLoadPromise;\n  }\n\n  _setDisplay(display) {\n    if (this.display) {\n      this.display.delete();\n      this.display.animationLoop = null;\n    }\n\n    if (display) {\n      display.animationLoop = this;\n    }\n\n    this.display = display;\n  }\n\n  _cancelAnimationFrame(animationFrameId) {\n    if (this.display && this.display.cancelAnimationFrame) {\n      return this.display.cancelAnimationFrame(animationFrameId);\n    }\n\n    return (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_5__.cancelAnimationFrame)(animationFrameId);\n  }\n\n  _requestAnimationFrame(renderFrameCallback) {\n    if (this._running) {\n      if (this.display && this.display.requestAnimationFrame) {\n        return this.display.requestAnimationFrame(renderFrameCallback);\n      }\n\n      return (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_5__.requestAnimationFrame)(renderFrameCallback);\n    }\n\n    return undefined;\n  }\n\n  _renderFrame() {\n    if (this.display) {\n      this.display._renderFrame(...arguments);\n\n      return;\n    }\n\n    this.onRender(...arguments);\n  }\n\n  _clearNeedsRedraw() {\n    this.needsRedraw = null;\n  }\n\n  _setupFrame() {\n    this._resizeCanvasDrawingBuffer();\n\n    this._resizeViewport();\n\n    this._resizeFramebuffer();\n  }\n\n  _initializeCallbackData() {\n    this.animationProps = {\n      gl: this.gl,\n      stop: this.stop,\n      canvas: this.gl.canvas,\n      framebuffer: this.framebuffer,\n      useDevicePixels: this.useDevicePixels,\n      needsRedraw: null,\n      startTime: Date.now(),\n      engineTime: 0,\n      tick: 0,\n      tock: 0,\n      time: 0,\n      _timeline: this.timeline,\n      _loop: this,\n      _animationLoop: this,\n      _mousePosition: null\n    };\n  }\n\n  _updateCallbackData() {\n    const {\n      width,\n      height,\n      aspect\n    } = this._getSizeAndAspect();\n\n    if (width !== this.animationProps.width || height !== this.animationProps.height) {\n      this.setNeedsRedraw('drawing buffer resized');\n    }\n\n    if (aspect !== this.animationProps.aspect) {\n      this.setNeedsRedraw('drawing buffer aspect changed');\n    }\n\n    this.animationProps.width = width;\n    this.animationProps.height = height;\n    this.animationProps.aspect = aspect;\n    this.animationProps.needsRedraw = this.needsRedraw;\n    this.animationProps.engineTime = Date.now() - this.animationProps.startTime;\n\n    if (this.timeline) {\n      this.timeline.update(this.animationProps.engineTime);\n    }\n\n    this.animationProps.tick = Math.floor(this.animationProps.time / 1000 * 60);\n    this.animationProps.tock++;\n    this.animationProps.time = this.timeline ? this.timeline.getTime() : this.animationProps.engineTime;\n    this.animationProps._offScreen = this.offScreen;\n  }\n\n  _finalizeCallbackData() {\n    this.onFinalize(this.animationProps);\n  }\n\n  _addCallbackData(appContext) {\n    if (typeof appContext === 'object' && appContext !== null) {\n      this.animationProps = Object.assign({}, this.animationProps, appContext);\n    }\n  }\n\n  _createWebGLContext(opts) {\n    this.offScreen = opts.canvas && typeof OffscreenCanvas !== 'undefined' && opts.canvas instanceof OffscreenCanvas;\n    opts = Object.assign({}, opts, this.props.glOptions);\n    this.gl = this.props.gl ? (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.instrumentGLContext)(this.props.gl, opts) : this.onCreateContext(opts);\n\n    if (!(0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL)(this.gl)) {\n      throw new Error('AnimationLoop.onCreateContext - illegal context returned');\n    }\n\n    (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.resetParameters)(this.gl);\n\n    this._createInfoDiv();\n  }\n\n  _createInfoDiv() {\n    if (this.gl.canvas && this.props.onAddHTML) {\n      const wrapperDiv = document.createElement('div');\n      document.body.appendChild(wrapperDiv);\n      wrapperDiv.style.position = 'relative';\n      const div = document.createElement('div');\n      div.style.position = 'absolute';\n      div.style.left = '10px';\n      div.style.bottom = '10px';\n      div.style.width = '300px';\n      div.style.background = 'white';\n      wrapperDiv.appendChild(this.gl.canvas);\n      wrapperDiv.appendChild(div);\n      const html = this.props.onAddHTML(div);\n\n      if (html) {\n        div.innerHTML = html;\n      }\n    }\n  }\n\n  _getSizeAndAspect() {\n    const width = this.gl.drawingBufferWidth;\n    const height = this.gl.drawingBufferHeight;\n    let aspect = 1;\n    const {\n      canvas\n    } = this.gl;\n\n    if (canvas && canvas.clientHeight) {\n      aspect = canvas.clientWidth / canvas.clientHeight;\n    } else if (width > 0 && height > 0) {\n      aspect = width / height;\n    }\n\n    return {\n      width,\n      height,\n      aspect\n    };\n  }\n\n  _resizeViewport() {\n    if (this.autoResizeViewport) {\n      this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight);\n    }\n  }\n\n  _resizeCanvasDrawingBuffer() {\n    if (this.autoResizeDrawingBuffer) {\n      (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.resizeGLContext)(this.gl, {\n        useDevicePixels: this.useDevicePixels\n      });\n    }\n  }\n\n  _createFramebuffer() {\n    if (this.props.createFramebuffer) {\n      this.framebuffer = new _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.gl);\n    }\n  }\n\n  _resizeFramebuffer() {\n    if (this.framebuffer) {\n      this.framebuffer.resize({\n        width: this.gl.drawingBufferWidth,\n        height: this.gl.drawingBufferHeight\n      });\n    }\n  }\n\n  _beginTimers() {\n    this.frameRate.timeEnd();\n    this.frameRate.timeStart();\n\n    if (this._gpuTimeQuery && this._gpuTimeQuery.isResultAvailable() && !this._gpuTimeQuery.isTimerDisjoint()) {\n      this.stats.get('GPU Time').addTime(this._gpuTimeQuery.getTimerMilliseconds());\n    }\n\n    if (this._gpuTimeQuery) {\n      this._gpuTimeQuery.beginTimeElapsedQuery();\n    }\n\n    this.cpuTime.timeStart();\n  }\n\n  _endTimers() {\n    this.cpuTime.timeEnd();\n\n    if (this._gpuTimeQuery) {\n      this._gpuTimeQuery.end();\n    }\n  }\n\n  _startEventHandling() {\n    const {\n      canvas\n    } = this.gl;\n\n    if (canvas) {\n      canvas.addEventListener('mousemove', this._onMousemove);\n      canvas.addEventListener('mouseleave', this._onMouseleave);\n    }\n  }\n\n  _onMousemove(e) {\n    this.animationProps._mousePosition = [e.offsetX, e.offsetY];\n  }\n\n  _onMouseleave(e) {\n    this.animationProps._mousePosition = null;\n  }\n\n}\n//# sourceMappingURL=animation-loop.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/lib/animation-loop.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/lib/model-utils.js":
/*!******************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/lib/model-utils.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getBuffersFromGeometry\": function() { return /* binding */ getBuffersFromGeometry; },\n/* harmony export */   \"inferAttributeAccessor\": function() { return /* binding */ inferAttributeAccessor; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n\nconst GLTF_TO_LUMA_ATTRIBUTE_MAP = {\n  POSITION: 'positions',\n  NORMAL: 'normals',\n  COLOR_0: 'colors',\n  TEXCOORD_0: 'texCoords',\n  TEXCOORD_1: 'texCoords1',\n  TEXCOORD_2: 'texCoords2'\n};\nfunction getBuffersFromGeometry(gl, geometry, options) {\n  const buffers = {};\n  let indices = geometry.indices;\n\n  for (const name in geometry.attributes) {\n    const attribute = geometry.attributes[name];\n    const remappedName = mapAttributeName(name, options);\n\n    if (name === 'indices') {\n      indices = attribute;\n    } else if (attribute.constant) {\n      buffers[remappedName] = attribute.value;\n    } else {\n      const typedArray = attribute.value;\n      const accessor = { ...attribute\n      };\n      delete accessor.value;\n      buffers[remappedName] = [new _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_0__[\"default\"](gl, typedArray), accessor];\n      inferAttributeAccessor(name, accessor);\n    }\n  }\n\n  if (indices) {\n    const data = indices.value || indices;\n    (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.assert)(data instanceof Uint16Array || data instanceof Uint32Array, 'attribute array for \"indices\" must be of integer type');\n    const accessor = {\n      size: 1,\n      isIndexed: indices.isIndexed === undefined ? true : indices.isIndexed\n    };\n    buffers.indices = [new _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_0__[\"default\"](gl, {\n      data,\n      target: 34963\n    }), accessor];\n  }\n\n  return buffers;\n}\n\nfunction mapAttributeName(name, options) {\n  const {\n    attributeMap = GLTF_TO_LUMA_ATTRIBUTE_MAP\n  } = options || {};\n  return attributeMap && attributeMap[name] || name;\n}\n\nfunction inferAttributeAccessor(attributeName, attribute) {\n  let category;\n\n  switch (attributeName) {\n    case 'texCoords':\n    case 'texCoord1':\n    case 'texCoord2':\n    case 'texCoord3':\n      category = 'uvs';\n      break;\n\n    case 'vertices':\n    case 'positions':\n    case 'normals':\n    case 'pickingColors':\n      category = 'vectors';\n      break;\n\n    default:\n  }\n\n  switch (category) {\n    case 'vectors':\n      attribute.size = attribute.size || 3;\n      break;\n\n    case 'uvs':\n      attribute.size = attribute.size || 2;\n      break;\n\n    default:\n  }\n\n  (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.assert)(Number.isFinite(attribute.size), \"attribute \".concat(attributeName, \" needs size\"));\n}\n//# sourceMappingURL=model-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/lib/model-utils.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/lib/model.js":
/*!************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/lib/model.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Model; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _program_manager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./program-manager */ \"./node_modules/@luma.gl/engine/dist/esm/lib/program-manager.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/clear.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/program.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/vertex-array.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/transform-feedback.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/debug/debug-vertex-array.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/debug/debug-uniforms.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/debug/debug-program-configuration.js\");\n/* harmony import */ var _model_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./model-utils */ \"./node_modules/@luma.gl/engine/dist/esm/lib/model-utils.js\");\n\n\n\n\n\nconst LOG_DRAW_PRIORITY = 2;\nconst LOG_DRAW_TIMEOUT = 10000;\nconst ERR_MODEL_PARAMS = 'Model needs drawMode and vertexCount';\n\nconst NOOP = () => {};\n\nconst DRAW_PARAMS = {};\nclass Model {\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const {\n      id = (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.uid)('model')\n    } = props;\n    (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_2__.assert)((0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL)(gl));\n    this.id = id;\n    this.gl = gl;\n    this.id = props.id || (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.uid)('Model');\n    this.lastLogTime = 0;\n    this.animated = false;\n    this.initialize(props);\n  }\n\n  initialize(props) {\n    this.props = {};\n    this.programManager = props.programManager || _program_manager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDefaultProgramManager(this.gl);\n    this._programManagerState = -1;\n    this._managedProgram = false;\n    const {\n      program = null,\n      vs,\n      fs,\n      modules,\n      defines,\n      inject,\n      varyings,\n      bufferMode,\n      transpileToGLSL100\n    } = props;\n    this.programProps = {\n      program,\n      vs,\n      fs,\n      modules,\n      defines,\n      inject,\n      varyings,\n      bufferMode,\n      transpileToGLSL100\n    };\n    this.program = null;\n    this.vertexArray = null;\n    this._programDirty = true;\n    this.userData = {};\n    this.needsRedraw = true;\n    this._attributes = {};\n    this.attributes = {};\n    this.uniforms = {};\n    this.pickable = true;\n\n    this._checkProgram();\n\n    this.setUniforms(Object.assign({}, this.getModuleUniforms(props.moduleSettings)));\n    this.drawMode = props.drawMode !== undefined ? props.drawMode : 4;\n    this.vertexCount = props.vertexCount || 0;\n    this.geometryBuffers = {};\n    this.isInstanced = props.isInstanced || props.instanced || props.instanceCount > 0;\n\n    this._setModelProps(props);\n\n    this.geometry = {};\n    (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_2__.assert)(this.drawMode !== undefined && Number.isFinite(this.vertexCount), ERR_MODEL_PARAMS);\n  }\n\n  setProps(props) {\n    this._setModelProps(props);\n  }\n\n  delete() {\n    for (const key in this._attributes) {\n      if (this._attributes[key] !== this.attributes[key]) {\n        this._attributes[key].delete();\n      }\n    }\n\n    if (this._managedProgram) {\n      this.programManager.release(this.program);\n      this._managedProgram = false;\n    }\n\n    this.vertexArray.delete();\n\n    this._deleteGeometryBuffers();\n  }\n\n  getDrawMode() {\n    return this.drawMode;\n  }\n\n  getVertexCount() {\n    return this.vertexCount;\n  }\n\n  getInstanceCount() {\n    return this.instanceCount;\n  }\n\n  getAttributes() {\n    return this.attributes;\n  }\n\n  getProgram() {\n    return this.program;\n  }\n\n  setProgram(props) {\n    const {\n      program,\n      vs,\n      fs,\n      modules,\n      defines,\n      inject,\n      varyings,\n      bufferMode,\n      transpileToGLSL100\n    } = props;\n    this.programProps = {\n      program,\n      vs,\n      fs,\n      modules,\n      defines,\n      inject,\n      varyings,\n      bufferMode,\n      transpileToGLSL100\n    };\n    this._programDirty = true;\n  }\n\n  getUniforms() {\n    return this.uniforms;\n  }\n\n  setDrawMode(drawMode) {\n    this.drawMode = drawMode;\n    return this;\n  }\n\n  setVertexCount(vertexCount) {\n    (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_2__.assert)(Number.isFinite(vertexCount));\n    this.vertexCount = vertexCount;\n    return this;\n  }\n\n  setInstanceCount(instanceCount) {\n    (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_2__.assert)(Number.isFinite(instanceCount));\n    this.instanceCount = instanceCount;\n    return this;\n  }\n\n  setGeometry(geometry) {\n    this.drawMode = geometry.drawMode;\n    this.vertexCount = geometry.getVertexCount();\n\n    this._deleteGeometryBuffers();\n\n    this.geometryBuffers = (0,_model_utils__WEBPACK_IMPORTED_MODULE_4__.getBuffersFromGeometry)(this.gl, geometry);\n    this.vertexArray.setAttributes(this.geometryBuffers);\n    return this;\n  }\n\n  setAttributes() {\n    let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if ((0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.isObjectEmpty)(attributes)) {\n      return this;\n    }\n\n    const normalizedAttributes = {};\n\n    for (const name in attributes) {\n      const attribute = attributes[name];\n      normalizedAttributes[name] = attribute.getValue ? attribute.getValue() : attribute;\n    }\n\n    this.vertexArray.setAttributes(normalizedAttributes);\n    return this;\n  }\n\n  setUniforms() {\n    let uniforms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    Object.assign(this.uniforms, uniforms);\n    return this;\n  }\n\n  getModuleUniforms(opts) {\n    this._checkProgram();\n\n    const getUniforms = this.programManager.getUniforms(this.program);\n\n    if (getUniforms) {\n      return getUniforms(opts);\n    }\n\n    return {};\n  }\n\n  updateModuleSettings(opts) {\n    const uniforms = this.getModuleUniforms(opts || {});\n    return this.setUniforms(uniforms);\n  }\n\n  clear(opts) {\n    (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_5__.clear)(this.program.gl, opts);\n    return this;\n  }\n\n  draw() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    this._checkProgram();\n\n    const {\n      moduleSettings = null,\n      framebuffer,\n      uniforms = {},\n      attributes = {},\n      transformFeedback = this.transformFeedback,\n      parameters = {},\n      vertexArray = this.vertexArray\n    } = opts;\n    this.setAttributes(attributes);\n    this.updateModuleSettings(moduleSettings);\n    this.setUniforms(uniforms);\n    let logPriority;\n\n    if (_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.priority >= LOG_DRAW_PRIORITY) {\n      logPriority = this._logDrawCallStart(LOG_DRAW_PRIORITY);\n    }\n\n    const drawParams = this.vertexArray.getDrawParams();\n    const {\n      isIndexed = drawParams.isIndexed,\n      indexType = drawParams.indexType,\n      indexOffset = drawParams.indexOffset,\n      vertexArrayInstanced = drawParams.isInstanced\n    } = this.props;\n\n    if (vertexArrayInstanced && !this.isInstanced) {\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.warn('Found instanced attributes on non-instanced model', this.id)();\n    }\n\n    const {\n      isInstanced,\n      instanceCount\n    } = this;\n    const {\n      onBeforeRender = NOOP,\n      onAfterRender = NOOP\n    } = this.props;\n    onBeforeRender();\n    this.program.setUniforms(this.uniforms);\n    const didDraw = this.program.draw(Object.assign(DRAW_PARAMS, opts, {\n      logPriority,\n      uniforms: null,\n      framebuffer,\n      parameters,\n      drawMode: this.getDrawMode(),\n      vertexCount: this.getVertexCount(),\n      vertexArray,\n      transformFeedback,\n      isIndexed,\n      indexType,\n      isInstanced,\n      instanceCount,\n      offset: isIndexed ? indexOffset : 0\n    }));\n    onAfterRender();\n\n    if (_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.priority >= LOG_DRAW_PRIORITY) {\n      this._logDrawCallEnd(logPriority, vertexArray, framebuffer);\n    }\n\n    return didDraw;\n  }\n\n  transform() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      discard = true,\n      feedbackBuffers,\n      unbindModels = []\n    } = opts;\n    let {\n      parameters\n    } = opts;\n\n    if (feedbackBuffers) {\n      this._setFeedbackBuffers(feedbackBuffers);\n    }\n\n    if (discard) {\n      parameters = Object.assign({}, parameters, {\n        [35977]: discard\n      });\n    }\n\n    unbindModels.forEach(model => model.vertexArray.unbindBuffers());\n\n    try {\n      this.draw(Object.assign({}, opts, {\n        parameters\n      }));\n    } finally {\n      unbindModels.forEach(model => model.vertexArray.bindBuffers());\n    }\n\n    return this;\n  }\n\n  render() {\n    let uniforms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.warn('Model.render() is deprecated. Use Model.setUniforms() and Model.draw()')();\n    return this.setUniforms(uniforms).draw();\n  }\n\n  _setModelProps(props) {\n    Object.assign(this.props, props);\n\n    if ('uniforms' in props) {\n      this.setUniforms(props.uniforms);\n    }\n\n    if ('pickable' in props) {\n      this.pickable = props.pickable;\n    }\n\n    if ('instanceCount' in props) {\n      this.instanceCount = props.instanceCount;\n    }\n\n    if ('geometry' in props) {\n      this.setGeometry(props.geometry);\n    }\n\n    if ('attributes' in props) {\n      this.setAttributes(props.attributes);\n    }\n\n    if ('_feedbackBuffers' in props) {\n      this._setFeedbackBuffers(props._feedbackBuffers);\n    }\n  }\n\n  _checkProgram() {\n    const needsUpdate = this._programDirty || this.programManager.stateHash !== this._programManagerState;\n\n    if (!needsUpdate) {\n      return;\n    }\n\n    let {\n      program\n    } = this.programProps;\n\n    if (program) {\n      this._managedProgram = false;\n    } else {\n      const {\n        vs,\n        fs,\n        modules,\n        inject,\n        defines,\n        varyings,\n        bufferMode,\n        transpileToGLSL100\n      } = this.programProps;\n      program = this.programManager.get({\n        vs,\n        fs,\n        modules,\n        inject,\n        defines,\n        varyings,\n        bufferMode,\n        transpileToGLSL100\n      });\n\n      if (this.program && this._managedProgram) {\n        this.programManager.release(this.program);\n      }\n\n      this._programManagerState = this.programManager.stateHash;\n      this._managedProgram = true;\n    }\n\n    (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_2__.assert)(program instanceof _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_6__[\"default\"], 'Model needs a program');\n    this._programDirty = false;\n\n    if (program === this.program) {\n      return;\n    }\n\n    this.program = program;\n\n    if (this.vertexArray) {\n      this.vertexArray.setProps({\n        program: this.program,\n        attributes: this.vertexArray.attributes\n      });\n    } else {\n      this.vertexArray = new _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.gl, {\n        program: this.program\n      });\n    }\n\n    this.setUniforms(Object.assign({}, this.getModuleUniforms()));\n  }\n\n  _deleteGeometryBuffers() {\n    for (const name in this.geometryBuffers) {\n      const buffer = this.geometryBuffers[name][0] || this.geometryBuffers[name];\n\n      if (buffer instanceof _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_8__[\"default\"]) {\n        buffer.delete();\n      }\n    }\n  }\n\n  _setAnimationProps(animationProps) {\n    if (this.animated) {\n      (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_2__.assert)(animationProps, 'Model.draw(): animated uniforms but no animationProps');\n    }\n  }\n\n  _setFeedbackBuffers() {\n    let feedbackBuffers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if ((0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.isObjectEmpty)(feedbackBuffers)) {\n      return this;\n    }\n\n    const {\n      gl\n    } = this.program;\n    this.transformFeedback = this.transformFeedback || new _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_9__[\"default\"](gl, {\n      program: this.program\n    });\n    this.transformFeedback.setBuffers(feedbackBuffers);\n    return this;\n  }\n\n  _logDrawCallStart(logLevel) {\n    const logDrawTimeout = logLevel > 3 ? 0 : LOG_DRAW_TIMEOUT;\n\n    if (Date.now() - this.lastLogTime < logDrawTimeout) {\n      return undefined;\n    }\n\n    this.lastLogTime = Date.now();\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.group(LOG_DRAW_PRIORITY, \">>> DRAWING MODEL \".concat(this.id), {\n      collapsed: _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.level <= 2\n    })();\n    return logLevel;\n  }\n\n  _logDrawCallEnd(logLevel, vertexArray, uniforms, framebuffer) {\n    if (logLevel === undefined) {\n      return;\n    }\n\n    const attributeTable = (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_10__.getDebugTableForVertexArray)({\n      vertexArray,\n      header: \"\".concat(this.id, \" attributes\"),\n      attributes: this._attributes\n    });\n    const {\n      table: uniformTable,\n      unusedTable,\n      unusedCount\n    } = (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_11__.getDebugTableForUniforms)({\n      header: \"\".concat(this.id, \" uniforms\"),\n      program: this.program,\n      uniforms: Object.assign({}, this.program.uniforms, uniforms)\n    });\n    const {\n      table: missingTable,\n      count: missingCount\n    } = (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_11__.getDebugTableForUniforms)({\n      header: \"\".concat(this.id, \" uniforms\"),\n      program: this.program,\n      uniforms: Object.assign({}, this.program.uniforms, uniforms),\n      undefinedOnly: true\n    });\n\n    if (missingCount > 0) {\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.log('MISSING UNIFORMS', Object.keys(missingTable))();\n    }\n\n    if (unusedCount > 0) {\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.log('UNUSED UNIFORMS', Object.keys(unusedTable))();\n    }\n\n    const configTable = (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_12__.getDebugTableForProgramConfiguration)(this.vertexArray.configuration);\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.table(logLevel, attributeTable)();\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.table(logLevel, uniformTable)();\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.table(logLevel + 1, configTable)();\n\n    if (framebuffer) {\n      framebuffer.log({\n        logLevel: LOG_DRAW_PRIORITY,\n        message: \"Rendered to \".concat(framebuffer.id)\n      });\n    }\n\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.groupEnd(LOG_DRAW_PRIORITY)();\n  }\n\n}\n//# sourceMappingURL=model.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/lib/model.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/lib/program-manager.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/lib/program-manager.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ProgramManager; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/shadertools */ \"./node_modules/@luma.gl/shadertools/dist/esm/lib/assemble-shaders.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/program.js\");\n\n\nclass ProgramManager {\n  static getDefaultProgramManager(gl) {\n    gl.luma = gl.luma || {};\n    gl.luma.defaultProgramManager = gl.luma.defaultProgramManager || new ProgramManager(gl);\n    return gl.luma.defaultProgramManager;\n  }\n\n  constructor(gl) {\n    this.gl = gl;\n    this._programCache = {};\n    this._getUniforms = {};\n    this._registeredModules = {};\n    this._hookFunctions = [];\n    this._defaultModules = [];\n    this._hashes = {};\n    this._hashCounter = 0;\n    this.stateHash = 0;\n    this._useCounts = {};\n  }\n\n  addDefaultModule(module) {\n    if (!this._defaultModules.find(m => m.name === module.name)) {\n      this._defaultModules.push(module);\n    }\n\n    this.stateHash++;\n  }\n\n  removeDefaultModule(module) {\n    const moduleName = typeof module === 'string' ? module : module.name;\n    this._defaultModules = this._defaultModules.filter(m => m.name !== moduleName);\n    this.stateHash++;\n  }\n\n  addShaderHook(hook, opts) {\n    if (opts) {\n      hook = Object.assign(opts, {\n        hook\n      });\n    }\n\n    this._hookFunctions.push(hook);\n\n    this.stateHash++;\n  }\n\n  get() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      vs = '',\n      fs = '',\n      defines = {},\n      inject = {},\n      varyings = [],\n      bufferMode = 0x8c8d,\n      transpileToGLSL100 = false\n    } = props;\n\n    const modules = this._getModuleList(props.modules);\n\n    const vsHash = this._getHash(vs);\n\n    const fsHash = this._getHash(fs);\n\n    const moduleHashes = modules.map(m => this._getHash(m.name)).sort();\n    const varyingHashes = varyings.map(v => this._getHash(v));\n    const defineKeys = Object.keys(defines).sort();\n    const injectKeys = Object.keys(inject).sort();\n    const defineHashes = [];\n    const injectHashes = [];\n\n    for (const key of defineKeys) {\n      defineHashes.push(this._getHash(key));\n      defineHashes.push(this._getHash(defines[key]));\n    }\n\n    for (const key of injectKeys) {\n      injectHashes.push(this._getHash(key));\n      injectHashes.push(this._getHash(inject[key]));\n    }\n\n    const hash = \"\".concat(vsHash, \"/\").concat(fsHash, \"D\").concat(defineHashes.join('/'), \"M\").concat(moduleHashes.join('/'), \"I\").concat(injectHashes.join('/'), \"V\").concat(varyingHashes.join('/'), \"H\").concat(this.stateHash, \"B\").concat(bufferMode).concat(transpileToGLSL100 ? 'T' : '');\n\n    if (!this._programCache[hash]) {\n      const assembled = (0,_luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_0__.assembleShaders)(this.gl, {\n        vs,\n        fs,\n        modules,\n        inject,\n        defines,\n        hookFunctions: this._hookFunctions,\n        transpileToGLSL100\n      });\n      this._programCache[hash] = new _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__[\"default\"](this.gl, {\n        hash,\n        vs: assembled.vs,\n        fs: assembled.fs,\n        varyings,\n        bufferMode\n      });\n\n      this._getUniforms[hash] = assembled.getUniforms || (x => {});\n\n      this._useCounts[hash] = 0;\n    }\n\n    this._useCounts[hash]++;\n    return this._programCache[hash];\n  }\n\n  getUniforms(program) {\n    return this._getUniforms[program.hash] || null;\n  }\n\n  release(program) {\n    const hash = program.hash;\n    this._useCounts[hash]--;\n\n    if (this._useCounts[hash] === 0) {\n      this._programCache[hash].delete();\n\n      delete this._programCache[hash];\n      delete this._getUniforms[hash];\n      delete this._useCounts[hash];\n    }\n  }\n\n  _getHash(key) {\n    if (this._hashes[key] === undefined) {\n      this._hashes[key] = this._hashCounter++;\n    }\n\n    return this._hashes[key];\n  }\n\n  _getModuleList() {\n    let appModules = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    const modules = new Array(this._defaultModules.length + appModules.length);\n    const seen = {};\n    let count = 0;\n\n    for (let i = 0, len = this._defaultModules.length; i < len; ++i) {\n      const module = this._defaultModules[i];\n      const name = module.name;\n      modules[count++] = module;\n      seen[name] = true;\n    }\n\n    for (let i = 0, len = appModules.length; i < len; ++i) {\n      const module = appModules[i];\n      const name = module.name;\n\n      if (!seen[name]) {\n        modules[count++] = module;\n        seen[name] = true;\n      }\n    }\n\n    modules.length = count;\n    return modules;\n  }\n\n}\n//# sourceMappingURL=program-manager.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/lib/program-manager.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/transform/buffer-transform.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/transform/buffer-transform.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ BufferTransform; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/transform-feedback.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n\n\n\nclass BufferTransform {\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.gl = gl;\n    this.currentIndex = 0;\n    this.feedbackMap = {};\n    this.varyings = null;\n    this.bindings = [];\n    this.resources = {};\n\n    this._initialize(props);\n\n    Object.seal(this);\n  }\n\n  setupResources(opts) {\n    for (const binding of this.bindings) {\n      this._setupTransformFeedback(binding, opts);\n    }\n  }\n\n  updateModelProps() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      varyings\n    } = this;\n\n    if (varyings.length > 0) {\n      props = Object.assign({}, props, {\n        varyings\n      });\n    }\n\n    return props;\n  }\n\n  getDrawOptions() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const binding = this.bindings[this.currentIndex];\n    const {\n      sourceBuffers,\n      transformFeedback\n    } = binding;\n    const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n    return {\n      attributes,\n      transformFeedback\n    };\n  }\n\n  swap() {\n    if (this.feedbackMap) {\n      this.currentIndex = this._getNextIndex();\n      return true;\n    }\n\n    return false;\n  }\n\n  update() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    this._setupBuffers(opts);\n  }\n\n  getBuffer(varyingName) {\n    const {\n      feedbackBuffers\n    } = this.bindings[this.currentIndex];\n    const bufferOrParams = varyingName ? feedbackBuffers[varyingName] : null;\n\n    if (!bufferOrParams) {\n      return null;\n    }\n\n    return bufferOrParams instanceof _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__[\"default\"] ? bufferOrParams : bufferOrParams.buffer;\n  }\n\n  getData() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      varyingName\n    } = options;\n    const buffer = this.getBuffer(varyingName);\n\n    if (buffer) {\n      return buffer.getData();\n    }\n\n    return null;\n  }\n\n  delete() {\n    for (const name in this.resources) {\n      this.resources[name].delete();\n    }\n  }\n\n  _initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    this._setupBuffers(props);\n\n    this.varyings = props.varyings || Object.keys(this.bindings[this.currentIndex].feedbackBuffers);\n\n    if (this.varyings.length > 0) {\n      (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_2__.assert)((0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(this.gl));\n    }\n  }\n\n  _getFeedbackBuffers(props) {\n    const {\n      sourceBuffers = {}\n    } = props;\n    const feedbackBuffers = {};\n\n    if (this.bindings[this.currentIndex]) {\n      Object.assign(feedbackBuffers, this.bindings[this.currentIndex].feedbackBuffers);\n    }\n\n    if (this.feedbackMap) {\n      for (const sourceName in this.feedbackMap) {\n        const feedbackName = this.feedbackMap[sourceName];\n\n        if (sourceName in sourceBuffers) {\n          feedbackBuffers[feedbackName] = sourceName;\n        }\n      }\n    }\n\n    Object.assign(feedbackBuffers, props.feedbackBuffers);\n\n    for (const bufferName in feedbackBuffers) {\n      const bufferOrRef = feedbackBuffers[bufferName];\n\n      if (typeof bufferOrRef === 'string') {\n        const sourceBuffer = sourceBuffers[bufferOrRef];\n        const {\n          byteLength,\n          usage,\n          accessor\n        } = sourceBuffer;\n        feedbackBuffers[bufferName] = this._createNewBuffer(bufferName, {\n          byteLength,\n          usage,\n          accessor\n        });\n      }\n    }\n\n    return feedbackBuffers;\n  }\n\n  _setupBuffers() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      sourceBuffers = null\n    } = props;\n    Object.assign(this.feedbackMap, props.feedbackMap);\n\n    const feedbackBuffers = this._getFeedbackBuffers(props);\n\n    this._updateBindings({\n      sourceBuffers,\n      feedbackBuffers\n    });\n  }\n\n  _setupTransformFeedback(binding, _ref) {\n    let {\n      model\n    } = _ref;\n    const {\n      program\n    } = model;\n    binding.transformFeedback = new _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this.gl, {\n      program,\n      buffers: binding.feedbackBuffers\n    });\n  }\n\n  _updateBindings(opts) {\n    this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n\n    if (this.feedbackMap) {\n      const {\n        sourceBuffers,\n        feedbackBuffers\n      } = this._swapBuffers(this.bindings[this.currentIndex]);\n\n      const nextIndex = this._getNextIndex();\n\n      this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n        sourceBuffers,\n        feedbackBuffers\n      });\n    }\n  }\n\n  _updateBinding(binding, opts) {\n    if (!binding) {\n      return {\n        sourceBuffers: Object.assign({}, opts.sourceBuffers),\n        feedbackBuffers: Object.assign({}, opts.feedbackBuffers)\n      };\n    }\n\n    Object.assign(binding.sourceBuffers, opts.sourceBuffers);\n    Object.assign(binding.feedbackBuffers, opts.feedbackBuffers);\n\n    if (binding.transformFeedback) {\n      binding.transformFeedback.setBuffers(binding.feedbackBuffers);\n    }\n\n    return binding;\n  }\n\n  _swapBuffers(opts) {\n    if (!this.feedbackMap) {\n      return null;\n    }\n\n    const sourceBuffers = Object.assign({}, opts.sourceBuffers);\n    const feedbackBuffers = Object.assign({}, opts.feedbackBuffers);\n\n    for (const srcName in this.feedbackMap) {\n      const dstName = this.feedbackMap[srcName];\n      sourceBuffers[srcName] = opts.feedbackBuffers[dstName];\n      feedbackBuffers[dstName] = opts.sourceBuffers[srcName];\n      (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_2__.assert)(feedbackBuffers[dstName] instanceof _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n    }\n\n    return {\n      sourceBuffers,\n      feedbackBuffers\n    };\n  }\n\n  _createNewBuffer(name, opts) {\n    const buffer = new _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__[\"default\"](this.gl, opts);\n\n    if (this.resources[name]) {\n      this.resources[name].delete();\n    }\n\n    this.resources[name] = buffer;\n    return buffer;\n  }\n\n  _getNextIndex() {\n    return (this.currentIndex + 1) % 2;\n  }\n\n}\n//# sourceMappingURL=buffer-transform.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/transform/buffer-transform.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/transform/texture-transform.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/transform/texture-transform.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ TextureTransform; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/copy-and-blit.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/texture-utils.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-version.js\");\n/* harmony import */ var _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/shadertools */ \"./node_modules/@luma.gl/shadertools/dist/esm/utils/shader-utils.js\");\n/* harmony import */ var _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @luma.gl/shadertools */ \"./node_modules/@luma.gl/shadertools/dist/esm/lib/inject-shader.js\");\n/* harmony import */ var _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @luma.gl/shadertools */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/transform/transform.js\");\n/* harmony import */ var _transform_shader_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transform-shader-utils */ \"./node_modules/@luma.gl/engine/dist/esm/transform/transform-shader-utils.js\");\n\n\n\nconst SRC_TEX_PARAMETER_OVERRIDES = {\n  [10241]: 9728,\n  [10240]: 9728,\n  [10242]: 33071,\n  [10243]: 33071\n};\nconst FS_OUTPUT_VARIABLE = 'transform_output';\nclass TextureTransform {\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.gl = gl;\n    this.id = this.currentIndex = 0;\n    this._swapTexture = null;\n    this.targetTextureVarying = null;\n    this.targetTextureType = null;\n    this.samplerTextureMap = null;\n    this.bindings = [];\n    this.resources = {};\n\n    this._initialize(props);\n\n    Object.seal(this);\n  }\n\n  updateModelProps() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    const updatedModelProps = this._processVertexShader(props);\n\n    return Object.assign({}, props, updatedModelProps);\n  }\n\n  getDrawOptions() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      sourceBuffers,\n      sourceTextures,\n      framebuffer,\n      targetTexture\n    } = this.bindings[this.currentIndex];\n    const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n    const uniforms = Object.assign({}, opts.uniforms);\n    const parameters = Object.assign({}, opts.parameters);\n    let discard = opts.discard;\n\n    if (this.hasSourceTextures || this.hasTargetTexture) {\n      attributes.transform_elementID = this.elementIDBuffer;\n\n      for (const sampler in this.samplerTextureMap) {\n        const textureName = this.samplerTextureMap[sampler];\n        uniforms[sampler] = sourceTextures[textureName];\n      }\n\n      this._setSourceTextureParameters();\n\n      const sizeUniforms = (0,_transform_shader_utils__WEBPACK_IMPORTED_MODULE_0__.getSizeUniforms)({\n        sourceTextureMap: sourceTextures,\n        targetTextureVarying: this.targetTextureVarying,\n        targetTexture\n      });\n      Object.assign(uniforms, sizeUniforms);\n    }\n\n    if (this.hasTargetTexture) {\n      discard = false;\n      parameters.viewport = [0, 0, framebuffer.width, framebuffer.height];\n    }\n\n    return {\n      attributes,\n      framebuffer,\n      uniforms,\n      discard,\n      parameters\n    };\n  }\n\n  swap() {\n    if (this._swapTexture) {\n      this.currentIndex = this._getNextIndex();\n      return true;\n    }\n\n    return false;\n  }\n\n  update() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    this._setupTextures(opts);\n  }\n\n  getTargetTexture() {\n    const {\n      targetTexture\n    } = this.bindings[this.currentIndex];\n    return targetTexture;\n  }\n\n  getData() {\n    let {\n      packed = false\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      framebuffer\n    } = this.bindings[this.currentIndex];\n    const pixels = (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.readPixelsToArray)(framebuffer);\n\n    if (!packed) {\n      return pixels;\n    }\n\n    const ArrayType = pixels.constructor;\n    const channelCount = (0,_luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_2__.typeToChannelCount)(this.targetTextureType);\n    const packedPixels = new ArrayType(pixels.length * channelCount / 4);\n    let packCount = 0;\n\n    for (let i = 0; i < pixels.length; i += 4) {\n      for (let j = 0; j < channelCount; j++) {\n        packedPixels[packCount++] = pixels[i + j];\n      }\n    }\n\n    return packedPixels;\n  }\n\n  getFramebuffer() {\n    const currentResources = this.bindings[this.currentIndex];\n    return currentResources.framebuffer;\n  }\n\n  delete() {\n    if (this.ownTexture) {\n      this.ownTexture.delete();\n    }\n\n    if (this.elementIDBuffer) {\n      this.elementIDBuffer.delete();\n    }\n  }\n\n  _initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      _targetTextureVarying,\n      _swapTexture\n    } = props;\n    this._swapTexture = _swapTexture;\n    this.targetTextureVarying = _targetTextureVarying;\n    this.hasTargetTexture = _targetTextureVarying;\n\n    this._setupTextures(props);\n  }\n\n  _createTargetTexture(props) {\n    const {\n      sourceTextures,\n      textureOrReference\n    } = props;\n\n    if (textureOrReference instanceof _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_3__[\"default\"]) {\n      return textureOrReference;\n    }\n\n    const refTexture = sourceTextures[textureOrReference];\n\n    if (!refTexture) {\n      return null;\n    }\n\n    this._targetRefTexName = textureOrReference;\n    return this._createNewTexture(refTexture);\n  }\n\n  _setupTextures() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      sourceBuffers,\n      _sourceTextures = {},\n      _targetTexture\n    } = props;\n\n    const targetTexture = this._createTargetTexture({\n      sourceTextures: _sourceTextures,\n      textureOrReference: _targetTexture\n    });\n\n    this.hasSourceTextures = this.hasSourceTextures || _sourceTextures && Object.keys(_sourceTextures).length > 0;\n\n    this._updateBindings({\n      sourceBuffers,\n      sourceTextures: _sourceTextures,\n      targetTexture\n    });\n\n    if ('elementCount' in props) {\n      this._updateElementIDBuffer(props.elementCount);\n    }\n  }\n\n  _updateElementIDBuffer(elementCount) {\n    if (typeof elementCount !== 'number' || this.elementCount >= elementCount) {\n      return;\n    }\n\n    const elementIds = new Float32Array(elementCount);\n    elementIds.forEach((_, index, array) => {\n      array[index] = index;\n    });\n\n    if (!this.elementIDBuffer) {\n      this.elementIDBuffer = new _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_4__[\"default\"](this.gl, {\n        data: elementIds,\n        accessor: {\n          size: 1\n        }\n      });\n    } else {\n      this.elementIDBuffer.setData({\n        data: elementIds\n      });\n    }\n\n    this.elementCount = elementCount;\n  }\n\n  _updateBindings(opts) {\n    this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n\n    if (this._swapTexture) {\n      const {\n        sourceTextures,\n        targetTexture\n      } = this._swapTextures(this.bindings[this.currentIndex]);\n\n      const nextIndex = this._getNextIndex();\n\n      this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n        sourceTextures,\n        targetTexture\n      });\n    }\n  }\n\n  _updateBinding(binding, opts) {\n    const {\n      sourceBuffers,\n      sourceTextures,\n      targetTexture\n    } = opts;\n\n    if (!binding) {\n      binding = {\n        sourceBuffers: {},\n        sourceTextures: {},\n        targetTexture: null\n      };\n    }\n\n    Object.assign(binding.sourceTextures, sourceTextures);\n    Object.assign(binding.sourceBuffers, sourceBuffers);\n\n    if (targetTexture) {\n      binding.targetTexture = targetTexture;\n      const {\n        width,\n        height\n      } = targetTexture;\n      const {\n        framebuffer\n      } = binding;\n\n      if (framebuffer) {\n        framebuffer.update({\n          attachments: {\n            [36064]: targetTexture\n          },\n          resizeAttachments: false\n        });\n        framebuffer.resize({\n          width,\n          height\n        });\n      } else {\n        binding.framebuffer = new _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this.gl, {\n          id: \"transform-framebuffer\",\n          width,\n          height,\n          attachments: {\n            [36064]: targetTexture\n          }\n        });\n      }\n    }\n\n    return binding;\n  }\n\n  _setSourceTextureParameters() {\n    const index = this.currentIndex;\n    const {\n      sourceTextures\n    } = this.bindings[index];\n\n    for (const name in sourceTextures) {\n      sourceTextures[name].setParameters(SRC_TEX_PARAMETER_OVERRIDES);\n    }\n  }\n\n  _swapTextures(opts) {\n    if (!this._swapTexture) {\n      return null;\n    }\n\n    const sourceTextures = Object.assign({}, opts.sourceTextures);\n    sourceTextures[this._swapTexture] = opts.targetTexture;\n    const targetTexture = opts.sourceTextures[this._swapTexture];\n    return {\n      sourceTextures,\n      targetTexture\n    };\n  }\n\n  _createNewTexture(refTexture) {\n    const texture = (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_6__.cloneTextureFrom)(refTexture, {\n      parameters: {\n        [10241]: 9728,\n        [10240]: 9728,\n        [10242]: 33071,\n        [10243]: 33071\n      },\n      pixelStore: {\n        [37440]: false\n      }\n    });\n\n    if (this.ownTexture) {\n      this.ownTexture.delete();\n    }\n\n    this.ownTexture = texture;\n    return texture;\n  }\n\n  _getNextIndex() {\n    return (this.currentIndex + 1) % 2;\n  }\n\n  _processVertexShader() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      sourceTextures,\n      targetTexture\n    } = this.bindings[this.currentIndex];\n    const {\n      vs,\n      uniforms,\n      targetTextureType,\n      inject,\n      samplerTextureMap\n    } = (0,_transform_shader_utils__WEBPACK_IMPORTED_MODULE_0__.updateForTextures)({\n      vs: props.vs,\n      sourceTextureMap: sourceTextures,\n      targetTextureVarying: this.targetTextureVarying,\n      targetTexture\n    });\n    const combinedInject = (0,_luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_7__.combineInjects)([props.inject || {}, inject]);\n    this.targetTextureType = targetTextureType;\n    this.samplerTextureMap = samplerTextureMap;\n    const fs = props._fs || (0,_luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_2__.getPassthroughFS)({\n      version: (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(vs),\n      input: this.targetTextureVarying,\n      inputType: targetTextureType,\n      output: FS_OUTPUT_VARIABLE\n    });\n    const modules = this.hasSourceTextures || this.targetTextureVarying ? [_luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_9__.transform].concat(props.modules || []) : props.modules;\n    return {\n      vs,\n      fs,\n      modules,\n      uniforms,\n      inject: combinedInject\n    };\n  }\n\n}\n//# sourceMappingURL=texture-transform.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/transform/texture-transform.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/transform/transform-shader-utils.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/transform/transform-shader-utils.js ***!
  \***********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getSizeUniforms\": function() { return /* binding */ getSizeUniforms; },\n/* harmony export */   \"getVaryingType\": function() { return /* binding */ getVaryingType; },\n/* harmony export */   \"processAttributeDefinition\": function() { return /* binding */ processAttributeDefinition; },\n/* harmony export */   \"updateForTextures\": function() { return /* binding */ updateForTextures; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n/* harmony import */ var _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/shadertools */ \"./node_modules/@luma.gl/shadertools/dist/esm/lib/inject-shader.js\");\n/* harmony import */ var _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/shadertools */ \"./node_modules/@luma.gl/shadertools/dist/esm/utils/shader-utils.js\");\n\n\nconst SAMPLER_UNIFORM_PREFIX = 'transform_uSampler_';\nconst SIZE_UNIFORM_PREFIX = 'transform_uSize_';\nconst VS_POS_VARIABLE = 'transform_position';\nfunction updateForTextures(_ref) {\n  let {\n    vs,\n    sourceTextureMap,\n    targetTextureVarying,\n    targetTexture\n  } = _ref;\n  const texAttributeNames = Object.keys(sourceTextureMap);\n  let sourceCount = texAttributeNames.length;\n  let targetTextureType = null;\n  const samplerTextureMap = {};\n  let updatedVs = vs;\n  let finalInject = {};\n\n  if (sourceCount > 0 || targetTextureVarying) {\n    const vsLines = updatedVs.split('\\n');\n    const updateVsLines = vsLines.slice();\n    vsLines.forEach((line, index, lines) => {\n      if (sourceCount > 0) {\n        const updated = processAttributeDefinition(line, sourceTextureMap);\n\n        if (updated) {\n          const {\n            updatedLine,\n            inject\n          } = updated;\n          updateVsLines[index] = updatedLine;\n          finalInject = (0,_luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_0__.combineInjects)([finalInject, inject]);\n          Object.assign(samplerTextureMap, updated.samplerTextureMap);\n          sourceCount--;\n        }\n      }\n\n      if (targetTextureVarying && !targetTextureType) {\n        targetTextureType = getVaryingType(line, targetTextureVarying);\n      }\n    });\n\n    if (targetTextureVarying) {\n      (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.assert)(targetTexture);\n      const sizeName = \"\".concat(SIZE_UNIFORM_PREFIX).concat(targetTextureVarying);\n      const uniformDeclaration = \"uniform vec2 \".concat(sizeName, \";\\n\");\n      const posInstructions = \"     vec2 \".concat(VS_POS_VARIABLE, \" = transform_getPos(\").concat(sizeName, \");\\n     gl_Position = vec4(\").concat(VS_POS_VARIABLE, \", 0, 1.);\\n\");\n      const inject = {\n        'vs:#decl': uniformDeclaration,\n        'vs:#main-start': posInstructions\n      };\n      finalInject = (0,_luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_0__.combineInjects)([finalInject, inject]);\n    }\n\n    updatedVs = updateVsLines.join('\\n');\n  }\n\n  return {\n    vs: updatedVs,\n    targetTextureType,\n    inject: finalInject,\n    samplerTextureMap\n  };\n}\nfunction getSizeUniforms(_ref2) {\n  let {\n    sourceTextureMap,\n    targetTextureVarying,\n    targetTexture\n  } = _ref2;\n  const uniforms = {};\n  let width;\n  let height;\n\n  if (targetTextureVarying) {\n    ({\n      width,\n      height\n    } = targetTexture);\n    uniforms[\"\".concat(SIZE_UNIFORM_PREFIX).concat(targetTextureVarying)] = [width, height];\n  }\n\n  for (const textureName in sourceTextureMap) {\n    ({\n      width,\n      height\n    } = sourceTextureMap[textureName]);\n    uniforms[\"\".concat(SIZE_UNIFORM_PREFIX).concat(textureName)] = [width, height];\n  }\n\n  return uniforms;\n}\n\nfunction getAttributeDefinition(line) {\n  return (0,_luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_2__.getQualifierDetails)(line, ['attribute', 'in']);\n}\n\nfunction getSamplerDeclerations(textureName) {\n  const samplerName = \"\".concat(SAMPLER_UNIFORM_PREFIX).concat(textureName);\n  const sizeName = \"\".concat(SIZE_UNIFORM_PREFIX).concat(textureName);\n  const uniformDeclerations = \"  uniform sampler2D \".concat(samplerName, \";\\n  uniform vec2 \").concat(sizeName, \";\");\n  return {\n    samplerName,\n    sizeName,\n    uniformDeclerations\n  };\n}\n\nfunction getVaryingType(line, varying) {\n  const qualaiferDetails = (0,_luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_2__.getQualifierDetails)(line, ['varying', 'out']);\n\n  if (!qualaiferDetails) {\n    return null;\n  }\n\n  return qualaiferDetails.name === varying ? qualaiferDetails.type : null;\n}\nfunction processAttributeDefinition(line, textureMap) {\n  const samplerTextureMap = {};\n  const attributeData = getAttributeDefinition(line);\n\n  if (!attributeData) {\n    return null;\n  }\n\n  const {\n    type,\n    name\n  } = attributeData;\n\n  if (name && textureMap[name]) {\n    const updatedLine = \"// \".concat(line, \" => Replaced by Transform with a sampler\");\n    const {\n      samplerName,\n      sizeName,\n      uniformDeclerations\n    } = getSamplerDeclerations(name);\n    const channels = (0,_luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_2__.typeToChannelSuffix)(type);\n    const sampleInstruction = \"  \".concat(type, \" \").concat(name, \" = transform_getInput(\").concat(samplerName, \", \").concat(sizeName, \").\").concat(channels, \";\\n\");\n    samplerTextureMap[samplerName] = name;\n    const inject = {\n      'vs:#decl': uniformDeclerations,\n      'vs:#main-start': sampleInstruction\n    };\n    return {\n      updatedLine,\n      inject,\n      samplerTextureMap\n    };\n  }\n\n  return null;\n}\n//# sourceMappingURL=transform-shader-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/transform/transform-shader-utils.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/transform/transform.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/transform/transform.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Transform; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @luma.gl/shadertools */ \"./node_modules/@luma.gl/shadertools/dist/esm/utils/shader-utils.js\");\n/* harmony import */ var _buffer_transform__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./buffer-transform */ \"./node_modules/@luma.gl/engine/dist/esm/transform/buffer-transform.js\");\n/* harmony import */ var _texture_transform__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./texture-transform */ \"./node_modules/@luma.gl/engine/dist/esm/transform/texture-transform.js\");\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-version.js\");\n/* harmony import */ var _luma_gl_webgl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @luma.gl/webgl */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js\");\n/* harmony import */ var _lib_model__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lib/model */ \"./node_modules/@luma.gl/engine/dist/esm/lib/model.js\");\n\n\n\n\n\n\nclass Transform {\n  static isSupported(gl) {\n    return (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl);\n  }\n\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.gl = gl;\n    this.model = null;\n    this.elementCount = 0;\n    this.bufferTransform = null;\n    this.textureTransform = null;\n    this.elementIDBuffer = null;\n\n    this._initialize(props);\n\n    Object.seal(this);\n  }\n\n  delete() {\n    const {\n      model,\n      bufferTransform,\n      textureTransform\n    } = this;\n\n    if (model) {\n      model.delete();\n    }\n\n    if (bufferTransform) {\n      bufferTransform.delete();\n    }\n\n    if (textureTransform) {\n      textureTransform.delete();\n    }\n  }\n\n  run() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      clearRenderTarget = true\n    } = opts;\n\n    const updatedOpts = this._updateDrawOptions(opts);\n\n    if (clearRenderTarget && updatedOpts.framebuffer) {\n      updatedOpts.framebuffer.clear({\n        color: true\n      });\n    }\n\n    this.model.transform(updatedOpts);\n  }\n\n  swap() {\n    let swapped = false;\n    const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n\n    for (const resourceTransform of resourceTransforms) {\n      swapped = swapped || resourceTransform.swap();\n    }\n\n    (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.assert)(swapped, 'Nothing to swap');\n  }\n\n  getBuffer() {\n    let varyingName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    return this.bufferTransform && this.bufferTransform.getBuffer(varyingName);\n  }\n\n  getData() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n\n    for (const resourceTransform of resourceTransforms) {\n      const data = resourceTransform.getData(opts);\n\n      if (data) {\n        return data;\n      }\n    }\n\n    return null;\n  }\n\n  getFramebuffer() {\n    return this.textureTransform && this.textureTransform.getFramebuffer();\n  }\n\n  update() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if ('elementCount' in opts) {\n      this.model.setVertexCount(opts.elementCount);\n    }\n\n    const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n\n    for (const resourceTransform of resourceTransforms) {\n      resourceTransform.update(opts);\n    }\n  }\n\n  _initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      gl\n    } = this;\n\n    this._buildResourceTransforms(gl, props);\n\n    props = this._updateModelProps(props);\n    this.model = new _lib_model__WEBPACK_IMPORTED_MODULE_2__[\"default\"](gl, Object.assign({}, props, {\n      fs: props.fs || (0,_luma_gl_shadertools__WEBPACK_IMPORTED_MODULE_3__.getPassthroughFS)({\n        version: (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(props.vs)\n      }),\n      id: props.id || 'transform-model',\n      drawMode: props.drawMode || 0,\n      vertexCount: props.elementCount\n    }));\n    this.bufferTransform && this.bufferTransform.setupResources({\n      model: this.model\n    });\n  }\n\n  _updateModelProps(props) {\n    let updatedProps = Object.assign({}, props);\n    const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n\n    for (const resourceTransform of resourceTransforms) {\n      updatedProps = resourceTransform.updateModelProps(updatedProps);\n    }\n\n    return updatedProps;\n  }\n\n  _buildResourceTransforms(gl, props) {\n    if (canCreateBufferTransform(props)) {\n      this.bufferTransform = new _buffer_transform__WEBPACK_IMPORTED_MODULE_5__[\"default\"](gl, props);\n    }\n\n    if (canCreateTextureTransform(props)) {\n      this.textureTransform = new _texture_transform__WEBPACK_IMPORTED_MODULE_6__[\"default\"](gl, props);\n    }\n\n    (0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_1__.assert)(this.bufferTransform || this.textureTransform, 'must provide source/feedback buffers or source/target textures');\n  }\n\n  _updateDrawOptions(opts) {\n    let updatedOpts = Object.assign({}, opts);\n    const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n\n    for (const resourceTransform of resourceTransforms) {\n      updatedOpts = Object.assign(updatedOpts, resourceTransform.getDrawOptions(updatedOpts));\n    }\n\n    return updatedOpts;\n  }\n\n}\n\nfunction canCreateBufferTransform(props) {\n  if (!(0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_7__.isObjectEmpty)(props.feedbackBuffers) || !(0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_7__.isObjectEmpty)(props.feedbackMap) || props.varyings && props.varyings.length > 0) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction canCreateTextureTransform(props) {\n  if (!(0,_luma_gl_webgl__WEBPACK_IMPORTED_MODULE_7__.isObjectEmpty)(props._sourceTextures) || props._targetTexture || props._targetTextureVarying) {\n    return true;\n  }\n\n  return false;\n}\n//# sourceMappingURL=transform.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/transform/transform.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/engine/dist/esm/utils/clip-space.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@luma.gl/engine/dist/esm/utils/clip-space.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ClipSpace; }\n/* harmony export */ });\n/* harmony import */ var _lib_model__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lib/model */ \"./node_modules/@luma.gl/engine/dist/esm/lib/model.js\");\n/* harmony import */ var _geometry_geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry/geometry */ \"./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js\");\n\n\nconst CLIPSPACE_VERTEX_SHADER = \"attribute vec2 aClipSpacePosition;\\nattribute vec2 aTexCoord;\\nattribute vec2 aCoordinate;\\n\\nvarying vec2 position;\\nvarying vec2 coordinate;\\nvarying vec2 uv;\\n\\nvoid main(void) {\\n  gl_Position = vec4(aClipSpacePosition, 0., 1.);\\n  position = aClipSpacePosition;\\n  coordinate = aCoordinate;\\n  uv = aTexCoord;\\n}\\n\";\nconst POSITIONS = [-1, -1, 1, -1, -1, 1, 1, 1];\nclass ClipSpace extends _lib_model__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n  constructor(gl, opts) {\n    const TEX_COORDS = POSITIONS.map(coord => coord === -1 ? 0 : coord);\n    super(gl, Object.assign({}, opts, {\n      vs: CLIPSPACE_VERTEX_SHADER,\n      geometry: new _geometry_geometry__WEBPACK_IMPORTED_MODULE_1__[\"default\"]({\n        drawMode: 5,\n        vertexCount: 4,\n        attributes: {\n          aClipSpacePosition: {\n            size: 2,\n            value: new Float32Array(POSITIONS)\n          },\n          aTexCoord: {\n            size: 2,\n            value: new Float32Array(TEX_COORDS)\n          },\n          aCoordinate: {\n            size: 2,\n            value: new Float32Array(TEX_COORDS)\n          }\n        }\n      })\n    }));\n    this.setVertexCount(4);\n  }\n\n}\n//# sourceMappingURL=clip-space.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/engine/dist/esm/utils/clip-space.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/gltools/dist/esm/context/context.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@luma.gl/gltools/dist/esm/context/context.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createGLContext\": function() { return /* binding */ createGLContext; },\n/* harmony export */   \"getContextDebugInfo\": function() { return /* binding */ getContextDebugInfo; },\n/* harmony export */   \"instrumentGLContext\": function() { return /* binding */ instrumentGLContext; },\n/* harmony export */   \"resizeGLContext\": function() { return /* binding */ resizeGLContext; }\n/* harmony export */ });\n/* harmony import */ var _probe_gl_env__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @probe.gl/env */ \"./node_modules/@probe.gl/env/dist/esm/lib/is-browser.js\");\n/* harmony import */ var _state_tracker_track_context_state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../state-tracker/track-context-state */ \"./node_modules/@luma.gl/gltools/dist/esm/state-tracker/track-context-state.js\");\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/log */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/log.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/assert.js\");\n/* harmony import */ var _utils_device_pixels__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/device-pixels */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/device-pixels.js\");\n/* harmony import */ var _utils_webgl_checks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/webgl-checks */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/webgl-checks.js\");\n\n\n\n\n\n\nconst isBrowser = (0,_probe_gl_env__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\nconst isPage = isBrowser && typeof document !== 'undefined';\nconst CONTEXT_DEFAULTS = {\n  webgl2: true,\n  webgl1: true,\n  throwOnError: true,\n  manageState: true,\n  canvas: null,\n  debug: false,\n  width: 800,\n  height: 600\n};\nfunction createGLContext() {\n  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)(isBrowser, \"createGLContext only available in the browser.\\nCreate your own headless context or use 'createHeadlessContext' from @luma.gl/test-utils\");\n  options = Object.assign({}, CONTEXT_DEFAULTS, options);\n  const {\n    width,\n    height\n  } = options;\n\n  function onError(message) {\n    if (options.throwOnError) {\n      throw new Error(message);\n    }\n\n    console.error(message);\n    return null;\n  }\n\n  options.onError = onError;\n  let gl;\n  const {\n    canvas\n  } = options;\n  const targetCanvas = getCanvas({\n    canvas,\n    width,\n    height,\n    onError\n  });\n  gl = createBrowserContext(targetCanvas, options);\n\n  if (!gl) {\n    return null;\n  }\n\n  gl = instrumentGLContext(gl, options);\n  logInfo(gl);\n  return gl;\n}\nfunction instrumentGLContext(gl) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!gl || gl._instrumented) {\n    return gl;\n  }\n\n  gl._version = gl._version || getVersion(gl);\n  gl.luma = gl.luma || {};\n  gl.luma.canvasSizeInfo = gl.luma.canvasSizeInfo || {};\n  options = Object.assign({}, CONTEXT_DEFAULTS, options);\n  const {\n    manageState,\n    debug\n  } = options;\n\n  if (manageState) {\n    (0,_state_tracker_track_context_state__WEBPACK_IMPORTED_MODULE_0__.trackContextState)(gl, {\n      copyState: false,\n      log: function () {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        return _utils_log__WEBPACK_IMPORTED_MODULE_1__.log.log(1, ...args)();\n      }\n    });\n  }\n\n  if (isBrowser && debug) {\n    if (!globalThis.makeDebugContext) {\n      _utils_log__WEBPACK_IMPORTED_MODULE_1__.log.warn('WebGL debug mode not activated. import \"@luma.gl/debug\" to enable.')();\n    } else {\n      gl = globalThis.makeDebugContext(gl, options);\n      _utils_log__WEBPACK_IMPORTED_MODULE_1__.log.level = Math.max(_utils_log__WEBPACK_IMPORTED_MODULE_1__.log.level, 1);\n    }\n  }\n\n  gl._instrumented = true;\n  return gl;\n}\nfunction getContextDebugInfo(gl) {\n  const vendorMasked = gl.getParameter(7936);\n  const rendererMasked = gl.getParameter(7937);\n  const ext = gl.getExtension('WEBGL_debug_renderer_info');\n  const vendorUnmasked = ext && gl.getParameter(ext.UNMASKED_VENDOR_WEBGL || 7936);\n  const rendererUnmasked = ext && gl.getParameter(ext.UNMASKED_RENDERER_WEBGL || 7937);\n  return {\n    vendor: vendorUnmasked || vendorMasked,\n    renderer: rendererUnmasked || rendererMasked,\n    vendorMasked,\n    rendererMasked,\n    version: gl.getParameter(7938),\n    shadingLanguageVersion: gl.getParameter(35724)\n  };\n}\nfunction resizeGLContext(gl) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (gl.canvas) {\n    const devicePixelRatio = (0,_utils_device_pixels__WEBPACK_IMPORTED_MODULE_3__.getDevicePixelRatio)(options.useDevicePixels);\n    setDevicePixelRatio(gl, devicePixelRatio, options);\n    return;\n  }\n\n  const ext = gl.getExtension('STACKGL_resize_drawingbuffer');\n\n  if (ext && \"width\" in options && \"height\" in options) {\n    ext.resize(options.width, options.height);\n  }\n}\n\nfunction createBrowserContext(canvas, options) {\n  const {\n    onError\n  } = options;\n  let errorMessage = null;\n\n  const onCreateError = error => errorMessage = error.statusMessage || errorMessage;\n\n  canvas.addEventListener('webglcontextcreationerror', onCreateError, false);\n  const {\n    webgl1 = true,\n    webgl2 = true\n  } = options;\n  let gl = null;\n\n  if (webgl2) {\n    gl = gl || canvas.getContext('webgl2', options);\n    gl = gl || canvas.getContext('experimental-webgl2', options);\n  }\n\n  if (webgl1) {\n    gl = gl || canvas.getContext('webgl', options);\n    gl = gl || canvas.getContext('experimental-webgl', options);\n  }\n\n  canvas.removeEventListener('webglcontextcreationerror', onCreateError, false);\n\n  if (!gl) {\n    return onError(\"Failed to create \".concat(webgl2 && !webgl1 ? 'WebGL2' : 'WebGL', \" context: \").concat(errorMessage || 'Unknown error'));\n  }\n\n  if (options.onContextLost) {\n    canvas.addEventListener('webglcontextlost', options.onContextLost, false);\n  }\n\n  if (options.onContextRestored) {\n    canvas.addEventListener('webglcontextrestored', options.onContextRestored, false);\n  }\n\n  return gl;\n}\n\nfunction getCanvas(_ref) {\n  let {\n    canvas,\n    width = 800,\n    height = 600,\n    onError\n  } = _ref;\n  let targetCanvas;\n\n  if (typeof canvas === 'string') {\n    const isPageLoaded = isPage && document.readyState === 'complete';\n\n    if (!isPageLoaded) {\n      onError(\"createGLContext called on canvas '\".concat(canvas, \"' before page was loaded\"));\n    }\n\n    targetCanvas = document.getElementById(canvas);\n  } else if (canvas) {\n    targetCanvas = canvas;\n  } else {\n    targetCanvas = document.createElement('canvas');\n    targetCanvas.id = 'lumagl-canvas';\n    targetCanvas.style.width = Number.isFinite(width) ? \"\".concat(width, \"px\") : '100%';\n    targetCanvas.style.height = Number.isFinite(height) ? \"\".concat(height, \"px\") : '100%';\n    document.body.insertBefore(targetCanvas, document.body.firstChild);\n  }\n\n  return targetCanvas;\n}\n\nfunction logInfo(gl) {\n  const webGL = (0,_utils_webgl_checks__WEBPACK_IMPORTED_MODULE_4__.isWebGL2)(gl) ? 'WebGL2' : 'WebGL1';\n  const info = getContextDebugInfo(gl);\n  const driver = info ? \"(\".concat(info.vendor, \",\").concat(info.renderer, \")\") : '';\n  const debug = gl.debug ? ' debug' : '';\n  _utils_log__WEBPACK_IMPORTED_MODULE_1__.log.info(1, \"\".concat(webGL).concat(debug, \" context \").concat(driver))();\n}\n\nfunction getVersion(gl) {\n  if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n    return 2;\n  }\n\n  return 1;\n}\n\nfunction setDevicePixelRatio(gl, devicePixelRatio, options) {\n  let clientWidth = 'width' in options ? options.width : gl.canvas.clientWidth;\n  let clientHeight = 'height' in options ? options.height : gl.canvas.clientHeight;\n\n  if (!clientWidth || !clientHeight) {\n    _utils_log__WEBPACK_IMPORTED_MODULE_1__.log.log(1, 'Canvas clientWidth/clientHeight is 0')();\n    devicePixelRatio = 1;\n    clientWidth = gl.canvas.width || 1;\n    clientHeight = gl.canvas.height || 1;\n  }\n\n  gl.luma = gl.luma || {};\n  gl.luma.canvasSizeInfo = gl.luma.canvasSizeInfo || {};\n  const cachedSize = gl.luma.canvasSizeInfo;\n\n  if (cachedSize.clientWidth !== clientWidth || cachedSize.clientHeight !== clientHeight || cachedSize.devicePixelRatio !== devicePixelRatio) {\n    let clampedPixelRatio = devicePixelRatio;\n    const canvasWidth = Math.floor(clientWidth * clampedPixelRatio);\n    const canvasHeight = Math.floor(clientHeight * clampedPixelRatio);\n    gl.canvas.width = canvasWidth;\n    gl.canvas.height = canvasHeight;\n\n    if (gl.drawingBufferWidth !== canvasWidth || gl.drawingBufferHeight !== canvasHeight) {\n      _utils_log__WEBPACK_IMPORTED_MODULE_1__.log.warn(\"Device pixel ratio clamped\")();\n      clampedPixelRatio = Math.min(gl.drawingBufferWidth / clientWidth, gl.drawingBufferHeight / clientHeight);\n      gl.canvas.width = Math.floor(clientWidth * clampedPixelRatio);\n      gl.canvas.height = Math.floor(clientHeight * clampedPixelRatio);\n    }\n\n    Object.assign(gl.luma.canvasSizeInfo, {\n      clientWidth,\n      clientHeight,\n      devicePixelRatio\n    });\n  }\n}\n//# sourceMappingURL=context.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/gltools/dist/esm/context/context.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/gltools/dist/esm/index.js":
/*!*********************************************************!*\
  !*** ./node_modules/@luma.gl/gltools/dist/esm/index.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"assertWebGL2Context\": function() { return /* reexport safe */ _utils_webgl_checks__WEBPACK_IMPORTED_MODULE_1__.assertWebGL2Context; },\n/* harmony export */   \"assertWebGLContext\": function() { return /* reexport safe */ _utils_webgl_checks__WEBPACK_IMPORTED_MODULE_1__.assertWebGLContext; },\n/* harmony export */   \"createGLContext\": function() { return /* reexport safe */ _context_context__WEBPACK_IMPORTED_MODULE_5__.createGLContext; },\n/* harmony export */   \"cssToDevicePixels\": function() { return /* reexport safe */ _utils_device_pixels__WEBPACK_IMPORTED_MODULE_6__.cssToDevicePixels; },\n/* harmony export */   \"cssToDeviceRatio\": function() { return /* reexport safe */ _utils_device_pixels__WEBPACK_IMPORTED_MODULE_6__.cssToDeviceRatio; },\n/* harmony export */   \"getContextDebugInfo\": function() { return /* reexport safe */ _context_context__WEBPACK_IMPORTED_MODULE_5__.getContextDebugInfo; },\n/* harmony export */   \"getParameters\": function() { return /* reexport safe */ _state_tracker_unified_parameter_api__WEBPACK_IMPORTED_MODULE_3__.getParameters; },\n/* harmony export */   \"getWebGL2Context\": function() { return /* reexport safe */ _utils_webgl_checks__WEBPACK_IMPORTED_MODULE_1__.getWebGL2Context; },\n/* harmony export */   \"instrumentGLContext\": function() { return /* reexport safe */ _context_context__WEBPACK_IMPORTED_MODULE_5__.instrumentGLContext; },\n/* harmony export */   \"isWebGL\": function() { return /* reexport safe */ _utils_webgl_checks__WEBPACK_IMPORTED_MODULE_1__.isWebGL; },\n/* harmony export */   \"isWebGL2\": function() { return /* reexport safe */ _utils_webgl_checks__WEBPACK_IMPORTED_MODULE_1__.isWebGL2; },\n/* harmony export */   \"log\": function() { return /* reexport safe */ _utils_log__WEBPACK_IMPORTED_MODULE_0__.log; },\n/* harmony export */   \"polyfillContext\": function() { return /* reexport safe */ _polyfill_polyfill_context__WEBPACK_IMPORTED_MODULE_2__.polyfillContext; },\n/* harmony export */   \"popContextState\": function() { return /* reexport safe */ _state_tracker_track_context_state__WEBPACK_IMPORTED_MODULE_4__.popContextState; },\n/* harmony export */   \"pushContextState\": function() { return /* reexport safe */ _state_tracker_track_context_state__WEBPACK_IMPORTED_MODULE_4__.pushContextState; },\n/* harmony export */   \"resetParameters\": function() { return /* reexport safe */ _state_tracker_unified_parameter_api__WEBPACK_IMPORTED_MODULE_3__.resetParameters; },\n/* harmony export */   \"resizeGLContext\": function() { return /* reexport safe */ _context_context__WEBPACK_IMPORTED_MODULE_5__.resizeGLContext; },\n/* harmony export */   \"setParameters\": function() { return /* reexport safe */ _state_tracker_unified_parameter_api__WEBPACK_IMPORTED_MODULE_3__.setParameters; },\n/* harmony export */   \"trackContextState\": function() { return /* reexport safe */ _state_tracker_track_context_state__WEBPACK_IMPORTED_MODULE_4__.trackContextState; },\n/* harmony export */   \"withParameters\": function() { return /* reexport safe */ _state_tracker_unified_parameter_api__WEBPACK_IMPORTED_MODULE_3__.withParameters; }\n/* harmony export */ });\n/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/log */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/log.js\");\n/* harmony import */ var _utils_webgl_checks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/webgl-checks */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/webgl-checks.js\");\n/* harmony import */ var _polyfill_polyfill_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./polyfill/polyfill-context */ \"./node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-context.js\");\n/* harmony import */ var _state_tracker_unified_parameter_api__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./state-tracker/unified-parameter-api */ \"./node_modules/@luma.gl/gltools/dist/esm/state-tracker/unified-parameter-api.js\");\n/* harmony import */ var _state_tracker_track_context_state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./state-tracker/track-context-state */ \"./node_modules/@luma.gl/gltools/dist/esm/state-tracker/track-context-state.js\");\n/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./context/context */ \"./node_modules/@luma.gl/gltools/dist/esm/context/context.js\");\n/* harmony import */ var _utils_device_pixels__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/device-pixels */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/device-pixels.js\");\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/gltools/dist/esm/index.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/gltools/dist/esm/polyfill/get-parameter-polyfill.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@luma.gl/gltools/dist/esm/polyfill/get-parameter-polyfill.js ***!
  \***********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getParameterPolyfill\": function() { return /* binding */ getParameterPolyfill; }\n/* harmony export */ });\n/* harmony import */ var _utils_webgl_checks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/webgl-checks */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/webgl-checks.js\");\n\nconst OES_element_index = 'OES_element_index';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_disjoint_timer_query_webgl2 = 'EXT_disjoint_timer_query_webgl2';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\nconst WEBGL_debug_renderer_info = 'WEBGL_debug_renderer_info';\nconst GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8b8b;\nconst GL_DONT_CARE = 0x1100;\nconst GL_GPU_DISJOINT_EXT = 0x8fbb;\nconst GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84ff;\nconst GL_UNMASKED_VENDOR_WEBGL = 0x9245;\nconst GL_UNMASKED_RENDERER_WEBGL = 0x9246;\n\nconst getWebGL2ValueOrZero = gl => !(0,_utils_webgl_checks__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl) ? 0 : undefined;\n\nconst WEBGL_PARAMETERS = {\n  [3074]: gl => !(0,_utils_webgl_checks__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl) ? 36064 : undefined,\n  [GL_FRAGMENT_SHADER_DERIVATIVE_HINT]: gl => !(0,_utils_webgl_checks__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl) ? GL_DONT_CARE : undefined,\n  [35977]: getWebGL2ValueOrZero,\n  [32937]: getWebGL2ValueOrZero,\n  [GL_GPU_DISJOINT_EXT]: (gl, getParameter) => {\n    const ext = (0,_utils_webgl_checks__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl) ? gl.getExtension(EXT_disjoint_timer_query_webgl2) : gl.getExtension(EXT_disjoint_timer_query);\n    return ext && ext.GPU_DISJOINT_EXT ? getParameter(ext.GPU_DISJOINT_EXT) : 0;\n  },\n  [GL_UNMASKED_VENDOR_WEBGL]: (gl, getParameter) => {\n    const ext = gl.getExtension(WEBGL_debug_renderer_info);\n    return getParameter(ext && ext.UNMASKED_VENDOR_WEBGL || 7936);\n  },\n  [GL_UNMASKED_RENDERER_WEBGL]: (gl, getParameter) => {\n    const ext = gl.getExtension(WEBGL_debug_renderer_info);\n    return getParameter(ext && ext.UNMASKED_RENDERER_WEBGL || 7937);\n  },\n  [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl, getParameter) => {\n    const ext = gl.luma.extensions[EXT_texture_filter_anisotropic];\n    return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;\n  },\n  [32883]: getWebGL2ValueOrZero,\n  [35071]: getWebGL2ValueOrZero,\n  [37447]: getWebGL2ValueOrZero,\n  [36063]: (gl, getParameter) => {\n    if (!(0,_utils_webgl_checks__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl)) {\n      const ext = gl.getExtension(WEBGL_draw_buffers);\n      return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;\n    }\n\n    return undefined;\n  },\n  [35379]: getWebGL2ValueOrZero,\n  [35374]: getWebGL2ValueOrZero,\n  [35377]: getWebGL2ValueOrZero,\n  [34852]: gl => {\n    if (!(0,_utils_webgl_checks__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl)) {\n      const ext = gl.getExtension(WEBGL_draw_buffers);\n      return ext ? ext.MAX_DRAW_BUFFERS_WEBGL : 0;\n    }\n\n    return undefined;\n  },\n  [36203]: gl => gl.getExtension(OES_element_index) ? 2147483647 : 65535,\n  [33001]: gl => gl.getExtension(OES_element_index) ? 16777216 : 65535,\n  [33000]: gl => 16777216,\n  [37157]: getWebGL2ValueOrZero,\n  [35373]: getWebGL2ValueOrZero,\n  [35657]: getWebGL2ValueOrZero,\n  [36183]: getWebGL2ValueOrZero,\n  [37137]: getWebGL2ValueOrZero,\n  [34045]: getWebGL2ValueOrZero,\n  [35978]: getWebGL2ValueOrZero,\n  [35979]: getWebGL2ValueOrZero,\n  [35968]: getWebGL2ValueOrZero,\n  [35376]: getWebGL2ValueOrZero,\n  [35375]: getWebGL2ValueOrZero,\n  [35659]: getWebGL2ValueOrZero,\n  [37154]: getWebGL2ValueOrZero,\n  [35371]: getWebGL2ValueOrZero,\n  [35658]: getWebGL2ValueOrZero,\n  [35076]: getWebGL2ValueOrZero,\n  [35077]: getWebGL2ValueOrZero,\n  [35380]: getWebGL2ValueOrZero\n};\nfunction getParameterPolyfill(gl, originalGetParameter, pname) {\n  const limit = WEBGL_PARAMETERS[pname];\n  const value = typeof limit === 'function' ? limit(gl, originalGetParameter, pname) : limit;\n  const result = value !== undefined ? value : originalGetParameter(pname);\n  return result;\n}\n//# sourceMappingURL=get-parameter-polyfill.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/gltools/dist/esm/polyfill/get-parameter-polyfill.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-context.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-context.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"polyfillContext\": function() { return /* binding */ polyfillContext; }\n/* harmony export */ });\n/* harmony import */ var _polyfill_vertex_array_object__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./polyfill-vertex-array-object */ \"./node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-vertex-array-object.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/assert.js\");\n/* harmony import */ var _polyfill_table__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./polyfill-table */ \"./node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-table.js\");\n\n\n\nfunction polyfillContext(gl) {\n  gl.luma = gl.luma || {};\n  const {\n    luma\n  } = gl;\n\n  if (!luma.polyfilled) {\n    (0,_polyfill_vertex_array_object__WEBPACK_IMPORTED_MODULE_0__.polyfillVertexArrayObject)(gl);\n    initializeExtensions(gl);\n    installPolyfills(gl, _polyfill_table__WEBPACK_IMPORTED_MODULE_2__.WEBGL2_CONTEXT_POLYFILLS);\n    installOverrides(gl, {\n      target: luma,\n      target2: gl\n    });\n    luma.polyfilled = true;\n  }\n\n  return gl;\n}\nglobalThis.polyfillContext = polyfillContext;\n\nfunction initializeExtensions(gl) {\n  gl.luma.extensions = {};\n  const EXTENSIONS = gl.getSupportedExtensions() || [];\n\n  for (const extension of EXTENSIONS) {\n    gl.luma[extension] = gl.getExtension(extension);\n  }\n}\n\nfunction installOverrides(gl, _ref) {\n  let {\n    target,\n    target2\n  } = _ref;\n  Object.keys(_polyfill_table__WEBPACK_IMPORTED_MODULE_2__.WEBGL2_CONTEXT_OVERRIDES).forEach(key => {\n    if (typeof _polyfill_table__WEBPACK_IMPORTED_MODULE_2__.WEBGL2_CONTEXT_OVERRIDES[key] === 'function') {\n      const originalFunc = gl[key] ? gl[key].bind(gl) : () => {};\n      const polyfill = _polyfill_table__WEBPACK_IMPORTED_MODULE_2__.WEBGL2_CONTEXT_OVERRIDES[key].bind(null, gl, originalFunc);\n      target[key] = polyfill;\n      target2[key] = polyfill;\n    }\n  });\n}\n\nfunction installPolyfills(gl, polyfills) {\n  for (const extension of Object.getOwnPropertyNames(polyfills)) {\n    if (extension !== 'overrides') {\n      polyfillExtension(gl, {\n        extension,\n        target: gl.luma,\n        target2: gl\n      });\n    }\n  }\n}\n\nfunction polyfillExtension(gl, _ref2) {\n  let {\n    extension,\n    target,\n    target2\n  } = _ref2;\n  const defaults = _polyfill_table__WEBPACK_IMPORTED_MODULE_2__.WEBGL2_CONTEXT_POLYFILLS[extension];\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_1__.assert)(defaults);\n  const {\n    meta = {}\n  } = defaults;\n  const {\n    suffix = ''\n  } = meta;\n  const ext = gl.getExtension(extension);\n\n  for (const key of Object.keys(defaults)) {\n    const extKey = \"\".concat(key).concat(suffix);\n    let polyfill = null;\n\n    if (key === 'meta') {} else if (typeof gl[key] === 'function') {} else if (ext && typeof ext[extKey] === 'function') {\n      polyfill = function () {\n        return ext[extKey](...arguments);\n      };\n    } else if (typeof defaults[key] === 'function') {\n      polyfill = defaults[key].bind(target);\n    }\n\n    if (polyfill) {\n      target[key] = polyfill;\n      target2[key] = polyfill;\n    }\n  }\n}\n//# sourceMappingURL=polyfill-context.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-context.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-table.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-table.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WEBGL2_CONTEXT_OVERRIDES\": function() { return /* binding */ WEBGL2_CONTEXT_OVERRIDES; },\n/* harmony export */   \"WEBGL2_CONTEXT_POLYFILLS\": function() { return /* binding */ WEBGL2_CONTEXT_POLYFILLS; }\n/* harmony export */ });\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/assert.js\");\n/* harmony import */ var _utils_webgl_checks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/webgl-checks */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/webgl-checks.js\");\n/* harmony import */ var _get_parameter_polyfill__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./get-parameter-polyfill */ \"./node_modules/@luma.gl/gltools/dist/esm/polyfill/get-parameter-polyfill.js\");\n\n\n\nconst OES_vertex_array_object = 'OES_vertex_array_object';\nconst ANGLE_instanced_arrays = 'ANGLE_instanced_arrays';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\nconst ERR_VAO_NOT_SUPPORTED = 'VertexArray requires WebGL2 or OES_vertex_array_object extension';\n\nfunction getExtensionData(gl, extension) {\n  return {\n    webgl2: (0,_utils_webgl_checks__WEBPACK_IMPORTED_MODULE_1__.isWebGL2)(gl),\n    ext: gl.getExtension(extension)\n  };\n}\n\nconst WEBGL2_CONTEXT_POLYFILLS = {\n  [OES_vertex_array_object]: {\n    meta: {\n      suffix: 'OES'\n    },\n    createVertexArray: () => {\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(false, ERR_VAO_NOT_SUPPORTED);\n    },\n    deleteVertexArray: () => {},\n    bindVertexArray: () => {},\n    isVertexArray: () => false\n  },\n  [ANGLE_instanced_arrays]: {\n    meta: {\n      suffix: 'ANGLE'\n    },\n\n    vertexAttribDivisor(location, divisor) {\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(divisor === 0, 'WebGL instanced rendering not supported');\n    },\n\n    drawElementsInstanced: () => {},\n    drawArraysInstanced: () => {}\n  },\n  [WEBGL_draw_buffers]: {\n    meta: {\n      suffix: 'WEBGL'\n    },\n    drawBuffers: () => {\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(false);\n    }\n  },\n  [EXT_disjoint_timer_query]: {\n    meta: {\n      suffix: 'EXT'\n    },\n    createQuery: () => {\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(false);\n    },\n    deleteQuery: () => {\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(false);\n    },\n    beginQuery: () => {\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(false);\n    },\n    endQuery: () => {},\n\n    getQuery(handle, pname) {\n      return this.getQueryObject(handle, pname);\n    },\n\n    getQueryParameter(handle, pname) {\n      return this.getQueryObject(handle, pname);\n    },\n\n    getQueryObject: () => {}\n  }\n};\nconst WEBGL2_CONTEXT_OVERRIDES = {\n  readBuffer: (gl, originalFunc, attachment) => {\n    if ((0,_utils_webgl_checks__WEBPACK_IMPORTED_MODULE_1__.isWebGL2)(gl)) {\n      originalFunc(attachment);\n    } else {}\n  },\n  getVertexAttrib: (gl, originalFunc, location, pname) => {\n    const {\n      webgl2,\n      ext\n    } = getExtensionData(gl, ANGLE_instanced_arrays);\n    let result;\n\n    switch (pname) {\n      case 35069:\n        result = !webgl2 ? false : undefined;\n        break;\n\n      case 35070:\n        result = !webgl2 && !ext ? 0 : undefined;\n        break;\n\n      default:\n    }\n\n    return result !== undefined ? result : originalFunc(location, pname);\n  },\n  getProgramParameter: (gl, originalFunc, program, pname) => {\n    if (!(0,_utils_webgl_checks__WEBPACK_IMPORTED_MODULE_1__.isWebGL2)(gl)) {\n      switch (pname) {\n        case 35967:\n          return 35981;\n\n        case 35971:\n          return 0;\n\n        case 35382:\n          return 0;\n\n        default:\n      }\n    }\n\n    return originalFunc(program, pname);\n  },\n  getInternalformatParameter: (gl, originalFunc, target, format, pname) => {\n    if (!(0,_utils_webgl_checks__WEBPACK_IMPORTED_MODULE_1__.isWebGL2)(gl)) {\n      switch (pname) {\n        case 32937:\n          return new Int32Array([0]);\n\n        default:\n      }\n    }\n\n    return gl.getInternalformatParameter(target, format, pname);\n  },\n\n  getTexParameter(gl, originalFunc, target, pname) {\n    switch (pname) {\n      case 34046:\n        const {\n          extensions\n        } = gl.luma;\n        const ext = extensions[EXT_texture_filter_anisotropic];\n        pname = ext && ext.TEXTURE_MAX_ANISOTROPY_EXT || 34046;\n        break;\n\n      default:\n    }\n\n    return originalFunc(target, pname);\n  },\n\n  getParameter: _get_parameter_polyfill__WEBPACK_IMPORTED_MODULE_2__.getParameterPolyfill,\n\n  hint(gl, originalFunc, pname, value) {\n    return originalFunc(pname, value);\n  }\n\n};\n//# sourceMappingURL=polyfill-table.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-table.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-vertex-array-object.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-vertex-array-object.js ***!
  \*****************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"polyfillVertexArrayObject\": function() { return /* binding */ polyfillVertexArrayObject; }\n/* harmony export */ });\nconst glErrorShadow = {};\n\nfunction error(msg) {\n  if (globalThis.console && globalThis.console.error) {\n    globalThis.console.error(msg);\n  }\n}\n\nfunction log(msg) {\n  if (globalThis.console && globalThis.console.log) {\n    globalThis.console.log(msg);\n  }\n}\n\nfunction synthesizeGLError(err, opt_msg) {\n  glErrorShadow[err] = true;\n\n  if (opt_msg !== undefined) {\n    error(opt_msg);\n  }\n}\n\nfunction wrapGLError(gl) {\n  const f = gl.getError;\n\n  gl.getError = function getError() {\n    let err;\n\n    do {\n      err = f.apply(gl);\n\n      if (err !== 0) {\n        glErrorShadow[err] = true;\n      }\n    } while (err !== 0);\n\n    for (err in glErrorShadow) {\n      if (glErrorShadow[err]) {\n        delete glErrorShadow[err];\n        return parseInt(err, 10);\n      }\n    }\n\n    return 0;\n  };\n}\n\nconst WebGLVertexArrayObjectOES = function WebGLVertexArrayObjectOES(ext) {\n  const gl = ext.gl;\n  this.ext = ext;\n  this.isAlive = true;\n  this.hasBeenBound = false;\n  this.elementArrayBuffer = null;\n  this.attribs = new Array(ext.maxVertexAttribs);\n\n  for (let n = 0; n < this.attribs.length; n++) {\n    const attrib = new WebGLVertexArrayObjectOES.VertexAttrib(gl);\n    this.attribs[n] = attrib;\n  }\n\n  this.maxAttrib = 0;\n};\n\nWebGLVertexArrayObjectOES.VertexAttrib = function VertexAttrib(gl) {\n  this.enabled = false;\n  this.buffer = null;\n  this.size = 4;\n  this.type = 5126;\n  this.normalized = false;\n  this.stride = 16;\n  this.offset = 0;\n  this.cached = '';\n  this.recache();\n};\n\nWebGLVertexArrayObjectOES.VertexAttrib.prototype.recache = function recache() {\n  this.cached = [this.size, this.type, this.normalized, this.stride, this.offset].join(':');\n};\n\nconst OESVertexArrayObject = function OESVertexArrayObject(gl) {\n  const self = this;\n  this.gl = gl;\n  wrapGLError(gl);\n  const original = this.original = {\n    getParameter: gl.getParameter,\n    enableVertexAttribArray: gl.enableVertexAttribArray,\n    disableVertexAttribArray: gl.disableVertexAttribArray,\n    bindBuffer: gl.bindBuffer,\n    getVertexAttrib: gl.getVertexAttrib,\n    vertexAttribPointer: gl.vertexAttribPointer\n  };\n\n  gl.getParameter = function getParameter(pname) {\n    if (pname === self.VERTEX_ARRAY_BINDING_OES) {\n      if (self.currentVertexArrayObject === self.defaultVertexArrayObject) {\n        return null;\n      }\n\n      return self.currentVertexArrayObject;\n    }\n\n    return original.getParameter.apply(this, arguments);\n  };\n\n  gl.enableVertexAttribArray = function enableVertexAttribArray(index) {\n    const vao = self.currentVertexArrayObject;\n    vao.maxAttrib = Math.max(vao.maxAttrib, index);\n    const attrib = vao.attribs[index];\n    attrib.enabled = true;\n    return original.enableVertexAttribArray.apply(this, arguments);\n  };\n\n  gl.disableVertexAttribArray = function disableVertexAttribArray(index) {\n    const vao = self.currentVertexArrayObject;\n    vao.maxAttrib = Math.max(vao.maxAttrib, index);\n    const attrib = vao.attribs[index];\n    attrib.enabled = false;\n    return original.disableVertexAttribArray.apply(this, arguments);\n  };\n\n  gl.bindBuffer = function bindBuffer(target, buffer) {\n    switch (target) {\n      case 34962:\n        self.currentArrayBuffer = buffer;\n        break;\n\n      case 34963:\n        self.currentVertexArrayObject.elementArrayBuffer = buffer;\n        break;\n\n      default:\n    }\n\n    return original.bindBuffer.apply(this, arguments);\n  };\n\n  gl.getVertexAttrib = function getVertexAttrib(index, pname) {\n    const vao = self.currentVertexArrayObject;\n    const attrib = vao.attribs[index];\n\n    switch (pname) {\n      case 34975:\n        return attrib.buffer;\n\n      case 34338:\n        return attrib.enabled;\n\n      case 34339:\n        return attrib.size;\n\n      case 34340:\n        return attrib.stride;\n\n      case 34341:\n        return attrib.type;\n\n      case 34922:\n        return attrib.normalized;\n\n      default:\n        return original.getVertexAttrib.apply(this, arguments);\n    }\n  };\n\n  gl.vertexAttribPointer = function vertexAttribPointer(indx, size, type, normalized, stride, offset) {\n    const vao = self.currentVertexArrayObject;\n    vao.maxAttrib = Math.max(vao.maxAttrib, indx);\n    const attrib = vao.attribs[indx];\n    attrib.buffer = self.currentArrayBuffer;\n    attrib.size = size;\n    attrib.type = type;\n    attrib.normalized = normalized;\n    attrib.stride = stride;\n    attrib.offset = offset;\n    attrib.recache();\n    return original.vertexAttribPointer.apply(this, arguments);\n  };\n\n  if (gl.instrumentExtension) {\n    gl.instrumentExtension(this, 'OES_vertex_array_object');\n  }\n\n  if (gl.canvas) {\n    gl.canvas.addEventListener('webglcontextrestored', () => {\n      log('OESVertexArrayObject emulation library context restored');\n      self.reset_();\n    }, true);\n  }\n\n  this.reset_();\n};\n\nOESVertexArrayObject.prototype.VERTEX_ARRAY_BINDING_OES = 0x85b5;\n\nOESVertexArrayObject.prototype.reset_ = function reset_() {\n  const contextWasLost = this.vertexArrayObjects !== undefined;\n\n  if (contextWasLost) {\n    for (let ii = 0; ii < this.vertexArrayObjects.length; ++ii) {\n      this.vertexArrayObjects.isAlive = false;\n    }\n  }\n\n  const gl = this.gl;\n  this.maxVertexAttribs = gl.getParameter(34921);\n  this.defaultVertexArrayObject = new WebGLVertexArrayObjectOES(this);\n  this.currentVertexArrayObject = null;\n  this.currentArrayBuffer = null;\n  this.vertexArrayObjects = [this.defaultVertexArrayObject];\n  this.bindVertexArrayOES(null);\n};\n\nOESVertexArrayObject.prototype.createVertexArrayOES = function createVertexArrayOES() {\n  const arrayObject = new WebGLVertexArrayObjectOES(this);\n  this.vertexArrayObjects.push(arrayObject);\n  return arrayObject;\n};\n\nOESVertexArrayObject.prototype.deleteVertexArrayOES = function deleteVertexArrayOES(arrayObject) {\n  arrayObject.isAlive = false;\n  this.vertexArrayObjects.splice(this.vertexArrayObjects.indexOf(arrayObject), 1);\n\n  if (this.currentVertexArrayObject === arrayObject) {\n    this.bindVertexArrayOES(null);\n  }\n};\n\nOESVertexArrayObject.prototype.isVertexArrayOES = function isVertexArrayOES(arrayObject) {\n  if (arrayObject && arrayObject instanceof WebGLVertexArrayObjectOES) {\n    if (arrayObject.hasBeenBound && arrayObject.ext === this) {\n      return true;\n    }\n  }\n\n  return false;\n};\n\nOESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(arrayObject) {\n  const gl = this.gl;\n\n  if (arrayObject && !arrayObject.isAlive) {\n    synthesizeGLError(1282, 'bindVertexArrayOES: attempt to bind deleted arrayObject');\n    return;\n  }\n\n  const original = this.original;\n  const oldVAO = this.currentVertexArrayObject;\n  this.currentVertexArrayObject = arrayObject || this.defaultVertexArrayObject;\n  this.currentVertexArrayObject.hasBeenBound = true;\n  const newVAO = this.currentVertexArrayObject;\n\n  if (oldVAO === newVAO) {\n    return;\n  }\n\n  if (!oldVAO || newVAO.elementArrayBuffer !== oldVAO.elementArrayBuffer) {\n    original.bindBuffer.call(gl, 34963, newVAO.elementArrayBuffer);\n  }\n\n  let currentBinding = this.currentArrayBuffer;\n  const maxAttrib = Math.max(oldVAO ? oldVAO.maxAttrib : 0, newVAO.maxAttrib);\n\n  for (let n = 0; n <= maxAttrib; n++) {\n    const attrib = newVAO.attribs[n];\n    const oldAttrib = oldVAO ? oldVAO.attribs[n] : null;\n\n    if (!oldVAO || attrib.enabled !== oldAttrib.enabled) {\n      if (attrib.enabled) {\n        original.enableVertexAttribArray.call(gl, n);\n      } else {\n        original.disableVertexAttribArray.call(gl, n);\n      }\n    }\n\n    if (attrib.enabled) {\n      let bufferChanged = false;\n\n      if (!oldVAO || attrib.buffer !== oldAttrib.buffer) {\n        if (currentBinding !== attrib.buffer) {\n          original.bindBuffer.call(gl, 34962, attrib.buffer);\n          currentBinding = attrib.buffer;\n        }\n\n        bufferChanged = true;\n      }\n\n      if (bufferChanged || attrib.cached !== oldAttrib.cached) {\n        original.vertexAttribPointer.call(gl, n, attrib.size, attrib.type, attrib.normalized, attrib.stride, attrib.offset);\n      }\n    }\n  }\n\n  if (this.currentArrayBuffer !== currentBinding) {\n    original.bindBuffer.call(gl, 34962, this.currentArrayBuffer);\n  }\n};\n\nfunction polyfillVertexArrayObject(gl) {\n  if (typeof gl.createVertexArray === 'function') {\n    return;\n  }\n\n  const original_getSupportedExtensions = gl.getSupportedExtensions;\n\n  gl.getSupportedExtensions = function getSupportedExtensions() {\n    const list = original_getSupportedExtensions.call(this) || [];\n\n    if (list.indexOf('OES_vertex_array_object') < 0) {\n      list.push('OES_vertex_array_object');\n    }\n\n    return list;\n  };\n\n  const original_getExtension = gl.getExtension;\n\n  gl.getExtension = function getExtension(name) {\n    const ext = original_getExtension.call(this, name);\n\n    if (ext) {\n      return ext;\n    }\n\n    if (name !== 'OES_vertex_array_object') {\n      return null;\n    }\n\n    if (!gl.__OESVertexArrayObject) {\n      this.__OESVertexArrayObject = new OESVertexArrayObject(this);\n    }\n\n    return this.__OESVertexArrayObject;\n  };\n}\n//# sourceMappingURL=polyfill-vertex-array-object.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-vertex-array-object.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/gltools/dist/esm/state-tracker/track-context-state.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@luma.gl/gltools/dist/esm/state-tracker/track-context-state.js ***!
  \*************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"popContextState\": function() { return /* binding */ popContextState; },\n/* harmony export */   \"pushContextState\": function() { return /* binding */ pushContextState; },\n/* harmony export */   \"trackContextState\": function() { return /* binding */ trackContextState; }\n/* harmony export */ });\n/* harmony import */ var _webgl_parameter_tables__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./webgl-parameter-tables */ \"./node_modules/@luma.gl/gltools/dist/esm/state-tracker/webgl-parameter-tables.js\");\n/* harmony import */ var _unified_parameter_api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./unified-parameter-api */ \"./node_modules/@luma.gl/gltools/dist/esm/state-tracker/unified-parameter-api.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/assert.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/utils */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/utils.js\");\n\n\n\n\n\nfunction installGetterOverride(gl, functionName) {\n  const originalGetterFunc = gl[functionName].bind(gl);\n\n  gl[functionName] = function get() {\n    const pname = arguments.length <= 0 ? undefined : arguments[0];\n\n    if (!(pname in gl.state.cache)) {\n      return originalGetterFunc(...arguments);\n    }\n\n    return gl.state.enable ? gl.state.cache[pname] : originalGetterFunc(...arguments);\n  };\n\n  Object.defineProperty(gl[functionName], 'name', {\n    value: \"\".concat(functionName, \"-from-cache\"),\n    configurable: false\n  });\n}\n\nfunction installSetterSpy(gl, functionName, setter) {\n  const originalSetterFunc = gl[functionName].bind(gl);\n\n  gl[functionName] = function set() {\n    for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\n      params[_key] = arguments[_key];\n    }\n\n    const {\n      valueChanged,\n      oldValue\n    } = setter(gl.state._updateCache, ...params);\n\n    if (valueChanged) {\n      originalSetterFunc(...params);\n    }\n\n    return oldValue;\n  };\n\n  Object.defineProperty(gl[functionName], 'name', {\n    value: \"\".concat(functionName, \"-to-cache\"),\n    configurable: false\n  });\n}\n\nfunction installProgramSpy(gl) {\n  const originalUseProgram = gl.useProgram.bind(gl);\n\n  gl.useProgram = function useProgramLuma(handle) {\n    if (gl.state.program !== handle) {\n      originalUseProgram(handle);\n      gl.state.program = handle;\n    }\n  };\n}\n\nclass GLState {\n  constructor(gl) {\n    let {\n      copyState = false,\n      log = () => {}\n    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.gl = gl;\n    this.program = null;\n    this.stateStack = [];\n    this.enable = true;\n    this.cache = copyState ? (0,_unified_parameter_api__WEBPACK_IMPORTED_MODULE_1__.getParameters)(gl) : Object.assign({}, _webgl_parameter_tables__WEBPACK_IMPORTED_MODULE_0__.GL_PARAMETER_DEFAULTS);\n    this.log = log;\n    this._updateCache = this._updateCache.bind(this);\n    Object.seal(this);\n  }\n\n  push() {\n    let values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.stateStack.push({});\n  }\n\n  pop() {\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)(this.stateStack.length > 0);\n    const oldValues = this.stateStack[this.stateStack.length - 1];\n    (0,_unified_parameter_api__WEBPACK_IMPORTED_MODULE_1__.setParameters)(this.gl, oldValues);\n    this.stateStack.pop();\n  }\n\n  _updateCache(values) {\n    let valueChanged = false;\n    let oldValue;\n    const oldValues = this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1];\n\n    for (const key in values) {\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)(key !== undefined);\n      const value = values[key];\n      const cached = this.cache[key];\n\n      if (!(0,_utils_utils__WEBPACK_IMPORTED_MODULE_3__.deepArrayEqual)(value, cached)) {\n        valueChanged = true;\n        oldValue = cached;\n\n        if (oldValues && !(key in oldValues)) {\n          oldValues[key] = cached;\n        }\n\n        this.cache[key] = value;\n      }\n    }\n\n    return {\n      valueChanged,\n      oldValue\n    };\n  }\n\n}\n\nfunction trackContextState(gl) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const {\n    enable = true,\n    copyState\n  } = options;\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)(copyState !== undefined);\n\n  if (!gl.state) {\n    const {\n      polyfillContext\n    } = globalThis;\n\n    if (polyfillContext) {\n      polyfillContext(gl);\n    }\n\n    gl.state = new GLState(gl, {\n      copyState\n    });\n    installProgramSpy(gl);\n\n    for (const key in _webgl_parameter_tables__WEBPACK_IMPORTED_MODULE_0__.GL_HOOKED_SETTERS) {\n      const setter = _webgl_parameter_tables__WEBPACK_IMPORTED_MODULE_0__.GL_HOOKED_SETTERS[key];\n      installSetterSpy(gl, key, setter);\n    }\n\n    installGetterOverride(gl, 'getParameter');\n    installGetterOverride(gl, 'isEnabled');\n  }\n\n  gl.state.enable = enable;\n  return gl;\n}\nfunction pushContextState(gl) {\n  if (!gl.state) {\n    trackContextState(gl, {\n      copyState: false\n    });\n  }\n\n  gl.state.push();\n}\nfunction popContextState(gl) {\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)(gl.state);\n  gl.state.pop();\n}\n//# sourceMappingURL=track-context-state.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/gltools/dist/esm/state-tracker/track-context-state.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/gltools/dist/esm/state-tracker/unified-parameter-api.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@luma.gl/gltools/dist/esm/state-tracker/unified-parameter-api.js ***!
  \***************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getParameters\": function() { return /* binding */ getParameters; },\n/* harmony export */   \"resetParameters\": function() { return /* binding */ resetParameters; },\n/* harmony export */   \"setParameters\": function() { return /* binding */ setParameters; },\n/* harmony export */   \"withParameters\": function() { return /* binding */ withParameters; }\n/* harmony export */ });\n/* harmony import */ var _webgl_parameter_tables__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./webgl-parameter-tables */ \"./node_modules/@luma.gl/gltools/dist/esm/state-tracker/webgl-parameter-tables.js\");\n/* harmony import */ var _track_context_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./track-context-state */ \"./node_modules/@luma.gl/gltools/dist/esm/state-tracker/track-context-state.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/assert.js\");\n/* harmony import */ var _utils_webgl_checks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/webgl-checks */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/webgl-checks.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/utils */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/utils.js\");\n\n\n\n\n\nfunction setParameters(gl, values) {\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)((0,_utils_webgl_checks__WEBPACK_IMPORTED_MODULE_3__.isWebGL)(gl), 'setParameters requires a WebGL context');\n\n  if ((0,_utils_utils__WEBPACK_IMPORTED_MODULE_4__.isObjectEmpty)(values)) {\n    return;\n  }\n\n  const compositeSetters = {};\n\n  for (const key in values) {\n    const glConstant = Number(key);\n    const setter = _webgl_parameter_tables__WEBPACK_IMPORTED_MODULE_0__.GL_PARAMETER_SETTERS[key];\n\n    if (setter) {\n      if (typeof setter === 'string') {\n        compositeSetters[setter] = true;\n      } else {\n        setter(gl, values[key], glConstant);\n      }\n    }\n  }\n\n  const cache = gl.state && gl.state.cache;\n\n  if (cache) {\n    for (const key in compositeSetters) {\n      const compositeSetter = _webgl_parameter_tables__WEBPACK_IMPORTED_MODULE_0__.GL_COMPOSITE_PARAMETER_SETTERS[key];\n      compositeSetter(gl, values, cache);\n    }\n  }\n}\nfunction getParameters(gl, parameters) {\n  parameters = parameters || _webgl_parameter_tables__WEBPACK_IMPORTED_MODULE_0__.GL_PARAMETER_DEFAULTS;\n\n  if (typeof parameters === 'number') {\n    const key = parameters;\n    const getter = _webgl_parameter_tables__WEBPACK_IMPORTED_MODULE_0__.GL_PARAMETER_GETTERS[key];\n    return getter ? getter(gl, key) : gl.getParameter(key);\n  }\n\n  const parameterKeys = Array.isArray(parameters) ? parameters : Object.keys(parameters);\n  const state = {};\n\n  for (const key of parameterKeys) {\n    const getter = _webgl_parameter_tables__WEBPACK_IMPORTED_MODULE_0__.GL_PARAMETER_GETTERS[key];\n    state[key] = getter ? getter(gl, Number(key)) : gl.getParameter(Number(key));\n  }\n\n  return state;\n}\nfunction resetParameters(gl) {\n  setParameters(gl, _webgl_parameter_tables__WEBPACK_IMPORTED_MODULE_0__.GL_PARAMETER_DEFAULTS);\n}\nfunction withParameters(gl, parameters, func) {\n  if ((0,_utils_utils__WEBPACK_IMPORTED_MODULE_4__.isObjectEmpty)(parameters)) {\n    return func(gl);\n  }\n\n  const {\n    nocatch = true\n  } = parameters;\n  (0,_track_context_state__WEBPACK_IMPORTED_MODULE_1__.pushContextState)(gl);\n  setParameters(gl, parameters);\n  let value;\n\n  if (nocatch) {\n    value = func(gl);\n    (0,_track_context_state__WEBPACK_IMPORTED_MODULE_1__.popContextState)(gl);\n  } else {\n    try {\n      value = func(gl);\n    } finally {\n      (0,_track_context_state__WEBPACK_IMPORTED_MODULE_1__.popContextState)(gl);\n    }\n  }\n\n  return value;\n}\n//# sourceMappingURL=unified-parameter-api.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/gltools/dist/esm/state-tracker/unified-parameter-api.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/gltools/dist/esm/state-tracker/webgl-parameter-tables.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@luma.gl/gltools/dist/esm/state-tracker/webgl-parameter-tables.js ***!
  \****************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"GL_COMPOSITE_PARAMETER_SETTERS\": function() { return /* binding */ GL_COMPOSITE_PARAMETER_SETTERS; },\n/* harmony export */   \"GL_HOOKED_SETTERS\": function() { return /* binding */ GL_HOOKED_SETTERS; },\n/* harmony export */   \"GL_PARAMETER_DEFAULTS\": function() { return /* binding */ GL_PARAMETER_DEFAULTS; },\n/* harmony export */   \"GL_PARAMETER_GETTERS\": function() { return /* binding */ GL_PARAMETER_GETTERS; },\n/* harmony export */   \"GL_PARAMETER_SETTERS\": function() { return /* binding */ GL_PARAMETER_SETTERS; }\n/* harmony export */ });\n/* harmony import */ var _utils_webgl_checks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/webgl-checks */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/webgl-checks.js\");\n\nconst GL_PARAMETER_DEFAULTS = {\n  [3042]: false,\n  [32773]: new Float32Array([0, 0, 0, 0]),\n  [32777]: 32774,\n  [34877]: 32774,\n  [32969]: 1,\n  [32968]: 0,\n  [32971]: 1,\n  [32970]: 0,\n  [3106]: new Float32Array([0, 0, 0, 0]),\n  [3107]: [true, true, true, true],\n  [2884]: false,\n  [2885]: 1029,\n  [2929]: false,\n  [2931]: 1,\n  [2932]: 513,\n  [2928]: new Float32Array([0, 1]),\n  [2930]: true,\n  [3024]: true,\n  [36006]: null,\n  [2886]: 2305,\n  [33170]: 4352,\n  [2849]: 1,\n  [32823]: false,\n  [32824]: 0,\n  [10752]: 0,\n  [32938]: 1.0,\n  [32939]: false,\n  [3089]: false,\n  [3088]: new Int32Array([0, 0, 1024, 1024]),\n  [2960]: false,\n  [2961]: 0,\n  [2968]: 0xffffffff,\n  [36005]: 0xffffffff,\n  [2962]: 519,\n  [2967]: 0,\n  [2963]: 0xffffffff,\n  [34816]: 519,\n  [36003]: 0,\n  [36004]: 0xffffffff,\n  [2964]: 7680,\n  [2965]: 7680,\n  [2966]: 7680,\n  [34817]: 7680,\n  [34818]: 7680,\n  [34819]: 7680,\n  [2978]: [0, 0, 1024, 1024],\n  [3333]: 4,\n  [3317]: 4,\n  [37440]: false,\n  [37441]: false,\n  [37443]: 37444,\n  [35723]: 4352,\n  [36010]: null,\n  [35977]: false,\n  [3330]: 0,\n  [3332]: 0,\n  [3331]: 0,\n  [3314]: 0,\n  [32878]: 0,\n  [3316]: 0,\n  [3315]: 0,\n  [32877]: 0\n};\n\nconst enable = (gl, value, key) => value ? gl.enable(key) : gl.disable(key);\n\nconst hint = (gl, value, key) => gl.hint(key, value);\n\nconst pixelStorei = (gl, value, key) => gl.pixelStorei(key, value);\n\nconst drawFramebuffer = (gl, value) => {\n  const target = (0,_utils_webgl_checks__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl) ? 36009 : 36160;\n  return gl.bindFramebuffer(target, value);\n};\n\nconst readFramebuffer = (gl, value) => {\n  return gl.bindFramebuffer(36008, value);\n};\n\nfunction isArray(array) {\n  return Array.isArray(array) || ArrayBuffer.isView(array);\n}\n\nconst GL_PARAMETER_SETTERS = {\n  [3042]: enable,\n  [32773]: (gl, value) => gl.blendColor(...value),\n  [32777]: 'blendEquation',\n  [34877]: 'blendEquation',\n  [32969]: 'blendFunc',\n  [32968]: 'blendFunc',\n  [32971]: 'blendFunc',\n  [32970]: 'blendFunc',\n  [3106]: (gl, value) => gl.clearColor(...value),\n  [3107]: (gl, value) => gl.colorMask(...value),\n  [2884]: enable,\n  [2885]: (gl, value) => gl.cullFace(value),\n  [2929]: enable,\n  [2931]: (gl, value) => gl.clearDepth(value),\n  [2932]: (gl, value) => gl.depthFunc(value),\n  [2928]: (gl, value) => gl.depthRange(...value),\n  [2930]: (gl, value) => gl.depthMask(value),\n  [3024]: enable,\n  [35723]: hint,\n  [36006]: drawFramebuffer,\n  [2886]: (gl, value) => gl.frontFace(value),\n  [33170]: hint,\n  [2849]: (gl, value) => gl.lineWidth(value),\n  [32823]: enable,\n  [32824]: 'polygonOffset',\n  [10752]: 'polygonOffset',\n  [35977]: enable,\n  [32938]: 'sampleCoverage',\n  [32939]: 'sampleCoverage',\n  [3089]: enable,\n  [3088]: (gl, value) => gl.scissor(...value),\n  [2960]: enable,\n  [2961]: (gl, value) => gl.clearStencil(value),\n  [2968]: (gl, value) => gl.stencilMaskSeparate(1028, value),\n  [36005]: (gl, value) => gl.stencilMaskSeparate(1029, value),\n  [2962]: 'stencilFuncFront',\n  [2967]: 'stencilFuncFront',\n  [2963]: 'stencilFuncFront',\n  [34816]: 'stencilFuncBack',\n  [36003]: 'stencilFuncBack',\n  [36004]: 'stencilFuncBack',\n  [2964]: 'stencilOpFront',\n  [2965]: 'stencilOpFront',\n  [2966]: 'stencilOpFront',\n  [34817]: 'stencilOpBack',\n  [34818]: 'stencilOpBack',\n  [34819]: 'stencilOpBack',\n  [2978]: (gl, value) => gl.viewport(...value),\n  [3333]: pixelStorei,\n  [3317]: pixelStorei,\n  [37440]: pixelStorei,\n  [37441]: pixelStorei,\n  [37443]: pixelStorei,\n  [3330]: pixelStorei,\n  [3332]: pixelStorei,\n  [3331]: pixelStorei,\n  [36010]: readFramebuffer,\n  [3314]: pixelStorei,\n  [32878]: pixelStorei,\n  [3316]: pixelStorei,\n  [3315]: pixelStorei,\n  [32877]: pixelStorei,\n  framebuffer: (gl, framebuffer) => {\n    const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;\n    return gl.bindFramebuffer(36160, handle);\n  },\n  blend: (gl, value) => value ? gl.enable(3042) : gl.disable(3042),\n  blendColor: (gl, value) => gl.blendColor(...value),\n  blendEquation: (gl, args) => {\n    args = isArray(args) ? args : [args, args];\n    gl.blendEquationSeparate(...args);\n  },\n  blendFunc: (gl, args) => {\n    args = isArray(args) && args.length === 2 ? [...args, ...args] : args;\n    gl.blendFuncSeparate(...args);\n  },\n  clearColor: (gl, value) => gl.clearColor(...value),\n  clearDepth: (gl, value) => gl.clearDepth(value),\n  clearStencil: (gl, value) => gl.clearStencil(value),\n  colorMask: (gl, value) => gl.colorMask(...value),\n  cull: (gl, value) => value ? gl.enable(2884) : gl.disable(2884),\n  cullFace: (gl, value) => gl.cullFace(value),\n  depthTest: (gl, value) => value ? gl.enable(2929) : gl.disable(2929),\n  depthFunc: (gl, value) => gl.depthFunc(value),\n  depthMask: (gl, value) => gl.depthMask(value),\n  depthRange: (gl, value) => gl.depthRange(...value),\n  dither: (gl, value) => value ? gl.enable(3024) : gl.disable(3024),\n  derivativeHint: (gl, value) => {\n    gl.hint(35723, value);\n  },\n  frontFace: (gl, value) => gl.frontFace(value),\n  mipmapHint: (gl, value) => gl.hint(33170, value),\n  lineWidth: (gl, value) => gl.lineWidth(value),\n  polygonOffsetFill: (gl, value) => value ? gl.enable(32823) : gl.disable(32823),\n  polygonOffset: (gl, value) => gl.polygonOffset(...value),\n  sampleCoverage: (gl, value) => gl.sampleCoverage(...value),\n  scissorTest: (gl, value) => value ? gl.enable(3089) : gl.disable(3089),\n  scissor: (gl, value) => gl.scissor(...value),\n  stencilTest: (gl, value) => value ? gl.enable(2960) : gl.disable(2960),\n  stencilMask: (gl, value) => {\n    value = isArray(value) ? value : [value, value];\n    const [mask, backMask] = value;\n    gl.stencilMaskSeparate(1028, mask);\n    gl.stencilMaskSeparate(1029, backMask);\n  },\n  stencilFunc: (gl, args) => {\n    args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n    const [func, ref, mask, backFunc, backRef, backMask] = args;\n    gl.stencilFuncSeparate(1028, func, ref, mask);\n    gl.stencilFuncSeparate(1029, backFunc, backRef, backMask);\n  },\n  stencilOp: (gl, args) => {\n    args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n    const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;\n    gl.stencilOpSeparate(1028, sfail, dpfail, dppass);\n    gl.stencilOpSeparate(1029, backSfail, backDpfail, backDppass);\n  },\n  viewport: (gl, value) => gl.viewport(...value)\n};\n\nfunction getValue(glEnum, values, cache) {\n  return values[glEnum] !== undefined ? values[glEnum] : cache[glEnum];\n}\n\nconst GL_COMPOSITE_PARAMETER_SETTERS = {\n  blendEquation: (gl, values, cache) => gl.blendEquationSeparate(getValue(32777, values, cache), getValue(34877, values, cache)),\n  blendFunc: (gl, values, cache) => gl.blendFuncSeparate(getValue(32969, values, cache), getValue(32968, values, cache), getValue(32971, values, cache), getValue(32970, values, cache)),\n  polygonOffset: (gl, values, cache) => gl.polygonOffset(getValue(32824, values, cache), getValue(10752, values, cache)),\n  sampleCoverage: (gl, values, cache) => gl.sampleCoverage(getValue(32938, values, cache), getValue(32939, values, cache)),\n  stencilFuncFront: (gl, values, cache) => gl.stencilFuncSeparate(1028, getValue(2962, values, cache), getValue(2967, values, cache), getValue(2963, values, cache)),\n  stencilFuncBack: (gl, values, cache) => gl.stencilFuncSeparate(1029, getValue(34816, values, cache), getValue(36003, values, cache), getValue(36004, values, cache)),\n  stencilOpFront: (gl, values, cache) => gl.stencilOpSeparate(1028, getValue(2964, values, cache), getValue(2965, values, cache), getValue(2966, values, cache)),\n  stencilOpBack: (gl, values, cache) => gl.stencilOpSeparate(1029, getValue(34817, values, cache), getValue(34818, values, cache), getValue(34819, values, cache))\n};\nconst GL_HOOKED_SETTERS = {\n  enable: (update, capability) => update({\n    [capability]: true\n  }),\n  disable: (update, capability) => update({\n    [capability]: false\n  }),\n  pixelStorei: (update, pname, value) => update({\n    [pname]: value\n  }),\n  hint: (update, pname, hint) => update({\n    [pname]: hint\n  }),\n  bindFramebuffer: (update, target, framebuffer) => {\n    switch (target) {\n      case 36160:\n        return update({\n          [36006]: framebuffer,\n          [36010]: framebuffer\n        });\n\n      case 36009:\n        return update({\n          [36006]: framebuffer\n        });\n\n      case 36008:\n        return update({\n          [36010]: framebuffer\n        });\n\n      default:\n        return null;\n    }\n  },\n  blendColor: (update, r, g, b, a) => update({\n    [32773]: new Float32Array([r, g, b, a])\n  }),\n  blendEquation: (update, mode) => update({\n    [32777]: mode,\n    [34877]: mode\n  }),\n  blendEquationSeparate: (update, modeRGB, modeAlpha) => update({\n    [32777]: modeRGB,\n    [34877]: modeAlpha\n  }),\n  blendFunc: (update, src, dst) => update({\n    [32969]: src,\n    [32968]: dst,\n    [32971]: src,\n    [32970]: dst\n  }),\n  blendFuncSeparate: (update, srcRGB, dstRGB, srcAlpha, dstAlpha) => update({\n    [32969]: srcRGB,\n    [32968]: dstRGB,\n    [32971]: srcAlpha,\n    [32970]: dstAlpha\n  }),\n  clearColor: (update, r, g, b, a) => update({\n    [3106]: new Float32Array([r, g, b, a])\n  }),\n  clearDepth: (update, depth) => update({\n    [2931]: depth\n  }),\n  clearStencil: (update, s) => update({\n    [2961]: s\n  }),\n  colorMask: (update, r, g, b, a) => update({\n    [3107]: [r, g, b, a]\n  }),\n  cullFace: (update, mode) => update({\n    [2885]: mode\n  }),\n  depthFunc: (update, func) => update({\n    [2932]: func\n  }),\n  depthRange: (update, zNear, zFar) => update({\n    [2928]: new Float32Array([zNear, zFar])\n  }),\n  depthMask: (update, mask) => update({\n    [2930]: mask\n  }),\n  frontFace: (update, face) => update({\n    [2886]: face\n  }),\n  lineWidth: (update, width) => update({\n    [2849]: width\n  }),\n  polygonOffset: (update, factor, units) => update({\n    [32824]: factor,\n    [10752]: units\n  }),\n  sampleCoverage: (update, value, invert) => update({\n    [32938]: value,\n    [32939]: invert\n  }),\n  scissor: (update, x, y, width, height) => update({\n    [3088]: new Int32Array([x, y, width, height])\n  }),\n  stencilMask: (update, mask) => update({\n    [2968]: mask,\n    [36005]: mask\n  }),\n  stencilMaskSeparate: (update, face, mask) => update({\n    [face === 1028 ? 2968 : 36005]: mask\n  }),\n  stencilFunc: (update, func, ref, mask) => update({\n    [2962]: func,\n    [2967]: ref,\n    [2963]: mask,\n    [34816]: func,\n    [36003]: ref,\n    [36004]: mask\n  }),\n  stencilFuncSeparate: (update, face, func, ref, mask) => update({\n    [face === 1028 ? 2962 : 34816]: func,\n    [face === 1028 ? 2967 : 36003]: ref,\n    [face === 1028 ? 2963 : 36004]: mask\n  }),\n  stencilOp: (update, fail, zfail, zpass) => update({\n    [2964]: fail,\n    [2965]: zfail,\n    [2966]: zpass,\n    [34817]: fail,\n    [34818]: zfail,\n    [34819]: zpass\n  }),\n  stencilOpSeparate: (update, face, fail, zfail, zpass) => update({\n    [face === 1028 ? 2964 : 34817]: fail,\n    [face === 1028 ? 2965 : 34818]: zfail,\n    [face === 1028 ? 2966 : 34819]: zpass\n  }),\n  viewport: (update, x, y, width, height) => update({\n    [2978]: [x, y, width, height]\n  })\n};\n\nconst isEnabled = (gl, key) => gl.isEnabled(key);\n\nconst GL_PARAMETER_GETTERS = {\n  [3042]: isEnabled,\n  [2884]: isEnabled,\n  [2929]: isEnabled,\n  [3024]: isEnabled,\n  [32823]: isEnabled,\n  [32926]: isEnabled,\n  [32928]: isEnabled,\n  [3089]: isEnabled,\n  [2960]: isEnabled,\n  [35977]: isEnabled\n};\n//# sourceMappingURL=webgl-parameter-tables.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/gltools/dist/esm/state-tracker/webgl-parameter-tables.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/gltools/dist/esm/utils/assert.js":
/*!****************************************************************!*\
  !*** ./node_modules/@luma.gl/gltools/dist/esm/utils/assert.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"assert\": function() { return /* binding */ assert; }\n/* harmony export */ });\nfunction assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'luma.gl: assertion failed.');\n  }\n}\n//# sourceMappingURL=assert.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/gltools/dist/esm/utils/assert.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/gltools/dist/esm/utils/device-pixels.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@luma.gl/gltools/dist/esm/utils/device-pixels.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"cssToDevicePixels\": function() { return /* binding */ cssToDevicePixels; },\n/* harmony export */   \"cssToDeviceRatio\": function() { return /* binding */ cssToDeviceRatio; },\n/* harmony export */   \"getDevicePixelRatio\": function() { return /* binding */ getDevicePixelRatio; }\n/* harmony export */ });\nfunction cssToDeviceRatio(gl) {\n  const {\n    luma\n  } = gl;\n\n  if (gl.canvas && luma) {\n    const {\n      clientWidth\n    } = luma.canvasSizeInfo;\n    return clientWidth ? gl.drawingBufferWidth / clientWidth : 1;\n  }\n\n  return 1;\n}\nfunction cssToDevicePixels(gl, cssPixel) {\n  let yInvert = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n  const ratio = cssToDeviceRatio(gl);\n  const width = gl.drawingBufferWidth;\n  const height = gl.drawingBufferHeight;\n  return scalePixels(cssPixel, ratio, width, height, yInvert);\n}\nfunction getDevicePixelRatio(useDevicePixels) {\n  const windowRatio = typeof window === 'undefined' ? 1 : window.devicePixelRatio || 1;\n\n  if (Number.isFinite(useDevicePixels)) {\n    return useDevicePixels <= 0 ? 1 : useDevicePixels;\n  }\n\n  return useDevicePixels ? windowRatio : 1;\n}\n\nfunction scalePixels(pixel, ratio, width, height, yInvert) {\n  const x = scaleX(pixel[0], ratio, width);\n  let y = scaleY(pixel[1], ratio, height, yInvert);\n  let t = scaleX(pixel[0] + 1, ratio, width);\n  const xHigh = t === width - 1 ? t : t - 1;\n  t = scaleY(pixel[1] + 1, ratio, height, yInvert);\n  let yHigh;\n\n  if (yInvert) {\n    t = t === 0 ? t : t + 1;\n    yHigh = y;\n    y = t;\n  } else {\n    yHigh = t === height - 1 ? t : t - 1;\n  }\n\n  return {\n    x,\n    y,\n    width: Math.max(xHigh - x + 1, 1),\n    height: Math.max(yHigh - y + 1, 1)\n  };\n}\n\nfunction scaleX(x, ratio, width) {\n  const r = Math.min(Math.round(x * ratio), width - 1);\n  return r;\n}\n\nfunction scaleY(y, ratio, height, yInvert) {\n  return yInvert ? Math.max(0, height - 1 - Math.round(y * ratio)) : Math.min(Math.round(y * ratio), height - 1);\n}\n//# sourceMappingURL=device-pixels.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/gltools/dist/esm/utils/device-pixels.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/gltools/dist/esm/utils/log.js":
/*!*************************************************************!*\
  !*** ./node_modules/@luma.gl/gltools/dist/esm/utils/log.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"log\": function() { return /* binding */ log; }\n/* harmony export */ });\n/* harmony import */ var _probe_gl_log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @probe.gl/log */ \"./node_modules/@probe.gl/log/dist/esm/log.js\");\n\nconst log = new _probe_gl_log__WEBPACK_IMPORTED_MODULE_0__.Log({\n  id: 'luma.gl'\n});\n//# sourceMappingURL=log.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/gltools/dist/esm/utils/log.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/gltools/dist/esm/utils/utils.js":
/*!***************************************************************!*\
  !*** ./node_modules/@luma.gl/gltools/dist/esm/utils/utils.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"deepArrayEqual\": function() { return /* binding */ deepArrayEqual; },\n/* harmony export */   \"isObjectEmpty\": function() { return /* binding */ isObjectEmpty; }\n/* harmony export */ });\nfunction isObjectEmpty(object) {\n  for (const key in object) {\n    return false;\n  }\n\n  return true;\n}\nfunction deepArrayEqual(x, y) {\n  if (x === y) {\n    return true;\n  }\n\n  const isArrayX = Array.isArray(x) || ArrayBuffer.isView(x);\n  const isArrayY = Array.isArray(y) || ArrayBuffer.isView(y);\n\n  if (isArrayX && isArrayY && x.length === y.length) {\n    for (let i = 0; i < x.length; ++i) {\n      if (x[i] !== y[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  return false;\n}\n//# sourceMappingURL=utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/gltools/dist/esm/utils/utils.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/gltools/dist/esm/utils/webgl-checks.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@luma.gl/gltools/dist/esm/utils/webgl-checks.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ERR_WEBGL\": function() { return /* binding */ ERR_WEBGL; },\n/* harmony export */   \"ERR_WEBGL2\": function() { return /* binding */ ERR_WEBGL2; },\n/* harmony export */   \"assertWebGL2Context\": function() { return /* binding */ assertWebGL2Context; },\n/* harmony export */   \"assertWebGLContext\": function() { return /* binding */ assertWebGLContext; },\n/* harmony export */   \"getWebGL2Context\": function() { return /* binding */ getWebGL2Context; },\n/* harmony export */   \"isWebGL\": function() { return /* binding */ isWebGL; },\n/* harmony export */   \"isWebGL2\": function() { return /* binding */ isWebGL2; }\n/* harmony export */ });\n/* harmony import */ var _assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./assert */ \"./node_modules/@luma.gl/gltools/dist/esm/utils/assert.js\");\n\nconst ERR_CONTEXT = 'Invalid WebGLRenderingContext';\nconst ERR_WEBGL = ERR_CONTEXT;\nconst ERR_WEBGL2 = 'Requires WebGL2';\nfunction isWebGL(gl) {\n  if (typeof WebGLRenderingContext !== 'undefined' && gl instanceof WebGLRenderingContext) {\n    return true;\n  }\n\n  if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n    return true;\n  }\n\n  return Boolean(gl && Number.isFinite(gl._version));\n}\nfunction isWebGL2(gl) {\n  if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n    return true;\n  }\n\n  return Boolean(gl && gl._version === 2);\n}\nfunction getWebGL2Context(gl) {\n  return isWebGL2(gl) ? gl : null;\n}\nfunction assertWebGLContext(gl) {\n  (0,_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(isWebGL(gl), ERR_CONTEXT);\n  return gl;\n}\nfunction assertWebGL2Context(gl) {\n  (0,_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(isWebGL2(gl), ERR_WEBGL2);\n  return gl;\n}\n//# sourceMappingURL=webgl-checks.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/gltools/dist/esm/utils/webgl-checks.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/lib/assemble-shaders.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/lib/assemble-shaders.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"assembleShaders\": function() { return /* binding */ assembleShaders; }\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ \"./node_modules/@luma.gl/shadertools/dist/esm/lib/constants.js\");\n/* harmony import */ var _resolve_modules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./resolve-modules */ \"./node_modules/@luma.gl/shadertools/dist/esm/lib/resolve-modules.js\");\n/* harmony import */ var _platform_defines__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./platform-defines */ \"./node_modules/@luma.gl/shadertools/dist/esm/lib/platform-defines.js\");\n/* harmony import */ var _inject_shader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./inject-shader */ \"./node_modules/@luma.gl/shadertools/dist/esm/lib/inject-shader.js\");\n/* harmony import */ var _transpile_shader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./transpile-shader */ \"./node_modules/@luma.gl/shadertools/dist/esm/lib/transpile-shader.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ \"./node_modules/@luma.gl/shadertools/dist/esm/utils/assert.js\");\n\n\n\n\n\n\nconst INJECT_SHADER_DECLARATIONS = \"\\n\\n\".concat(_inject_shader__WEBPACK_IMPORTED_MODULE_0__.DECLARATION_INJECT_MARKER, \"\\n\\n\");\nconst SHADER_TYPE = {\n  [_constants__WEBPACK_IMPORTED_MODULE_1__.VERTEX_SHADER]: 'vertex',\n  [_constants__WEBPACK_IMPORTED_MODULE_1__.FRAGMENT_SHADER]: 'fragment'\n};\nconst FRAGMENT_SHADER_PROLOGUE = \"precision highp float;\\n\\n\";\nfunction assembleShaders(gl, opts) {\n  const {\n    vs,\n    fs\n  } = opts;\n  const modules = (0,_resolve_modules__WEBPACK_IMPORTED_MODULE_2__.resolveModules)(opts.modules || []);\n  return {\n    gl,\n    vs: assembleShader(gl, Object.assign({}, opts, {\n      source: vs,\n      type: _constants__WEBPACK_IMPORTED_MODULE_1__.VERTEX_SHADER,\n      modules\n    })),\n    fs: assembleShader(gl, Object.assign({}, opts, {\n      source: fs,\n      type: _constants__WEBPACK_IMPORTED_MODULE_1__.FRAGMENT_SHADER,\n      modules\n    })),\n    getUniforms: assembleGetUniforms(modules)\n  };\n}\n\nfunction assembleShader(gl, _ref) {\n  let {\n    id,\n    source,\n    type,\n    modules,\n    defines = {},\n    hookFunctions = [],\n    inject = {},\n    transpileToGLSL100 = false,\n    prologue = true,\n    log\n  } = _ref;\n  (0,_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(typeof source === 'string', 'shader source must be a string');\n  const isVertex = type === _constants__WEBPACK_IMPORTED_MODULE_1__.VERTEX_SHADER;\n  const sourceLines = source.split('\\n');\n  let glslVersion = 100;\n  let versionLine = '';\n  let coreSource = source;\n\n  if (sourceLines[0].indexOf('#version ') === 0) {\n    glslVersion = 300;\n    versionLine = sourceLines[0];\n    coreSource = sourceLines.slice(1).join('\\n');\n  } else {\n    versionLine = \"#version \".concat(glslVersion);\n  }\n\n  const allDefines = {};\n  modules.forEach(module => {\n    Object.assign(allDefines, module.getDefines());\n  });\n  Object.assign(allDefines, defines);\n  let assembledSource = prologue ? \"\".concat(versionLine, \"\\n\").concat(getShaderName({\n    id,\n    source,\n    type\n  }), \"\\n\").concat(getShaderType({\n    type\n  }), \"\\n\").concat((0,_platform_defines__WEBPACK_IMPORTED_MODULE_4__.getPlatformShaderDefines)(gl), \"\\n\").concat((0,_platform_defines__WEBPACK_IMPORTED_MODULE_4__.getVersionDefines)(gl, glslVersion, !isVertex), \"\\n\").concat(getApplicationDefines(allDefines), \"\\n\").concat(isVertex ? '' : FRAGMENT_SHADER_PROLOGUE, \"\\n\") : \"\".concat(versionLine, \"\\n\");\n  const hookFunctionMap = normalizeHookFunctions(hookFunctions);\n  const hookInjections = {};\n  const declInjections = {};\n  const mainInjections = {};\n\n  for (const key in inject) {\n    const injection = typeof inject[key] === 'string' ? {\n      injection: inject[key],\n      order: 0\n    } : inject[key];\n    const match = key.match(/^(v|f)s:(#)?([\\w-]+)$/);\n\n    if (match) {\n      const hash = match[2];\n      const name = match[3];\n\n      if (hash) {\n        if (name === 'decl') {\n          declInjections[key] = [injection];\n        } else {\n          mainInjections[key] = [injection];\n        }\n      } else {\n        hookInjections[key] = [injection];\n      }\n    } else {\n      mainInjections[key] = [injection];\n    }\n  }\n\n  for (const module of modules) {\n    if (log) {\n      module.checkDeprecations(coreSource, log);\n    }\n\n    const moduleSource = module.getModuleSource(type, glslVersion);\n    assembledSource += moduleSource;\n    const injections = module.injections[type];\n\n    for (const key in injections) {\n      const match = key.match(/^(v|f)s:#([\\w-]+)$/);\n\n      if (match) {\n        const name = match[2];\n        const injectionType = name === 'decl' ? declInjections : mainInjections;\n        injectionType[key] = injectionType[key] || [];\n        injectionType[key].push(injections[key]);\n      } else {\n        hookInjections[key] = hookInjections[key] || [];\n        hookInjections[key].push(injections[key]);\n      }\n    }\n  }\n\n  assembledSource += INJECT_SHADER_DECLARATIONS;\n  assembledSource = (0,_inject_shader__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(assembledSource, type, declInjections);\n  assembledSource += getHookFunctions(hookFunctionMap[type], hookInjections);\n  assembledSource += coreSource;\n  assembledSource = (0,_inject_shader__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(assembledSource, type, mainInjections);\n  assembledSource = (0,_transpile_shader__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(assembledSource, transpileToGLSL100 ? 100 : glslVersion, isVertex);\n  return assembledSource;\n}\n\nfunction assembleGetUniforms(modules) {\n  return function getUniforms(opts) {\n    const uniforms = {};\n\n    for (const module of modules) {\n      const moduleUniforms = module.getUniforms(opts, uniforms);\n      Object.assign(uniforms, moduleUniforms);\n    }\n\n    return uniforms;\n  };\n}\n\nfunction getShaderType(_ref2) {\n  let {\n    type\n  } = _ref2;\n  return \"\\n#define SHADER_TYPE_\".concat(SHADER_TYPE[type].toUpperCase(), \"\\n\");\n}\n\nfunction getShaderName(_ref3) {\n  let {\n    id,\n    source,\n    type\n  } = _ref3;\n  const injectShaderName = id && typeof id === 'string' && source.indexOf('SHADER_NAME') === -1;\n  return injectShaderName ? \"\\n#define SHADER_NAME \".concat(id, \"_\").concat(SHADER_TYPE[type], \"\\n\\n\") : '';\n}\n\nfunction getApplicationDefines() {\n  let defines = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  let count = 0;\n  let sourceText = '';\n\n  for (const define in defines) {\n    if (count === 0) {\n      sourceText += '\\n// APPLICATION DEFINES\\n';\n    }\n\n    count++;\n    const value = defines[define];\n\n    if (value || Number.isFinite(value)) {\n      sourceText += \"#define \".concat(define.toUpperCase(), \" \").concat(defines[define], \"\\n\");\n    }\n  }\n\n  if (count === 0) {\n    sourceText += '\\n';\n  }\n\n  return sourceText;\n}\n\nfunction getHookFunctions(hookFunctions, hookInjections) {\n  let result = '';\n\n  for (const hookName in hookFunctions) {\n    const hookFunction = hookFunctions[hookName];\n    result += \"void \".concat(hookFunction.signature, \" {\\n\");\n\n    if (hookFunction.header) {\n      result += \"  \".concat(hookFunction.header);\n    }\n\n    if (hookInjections[hookName]) {\n      const injections = hookInjections[hookName];\n      injections.sort((a, b) => a.order - b.order);\n\n      for (const injection of injections) {\n        result += \"  \".concat(injection.injection, \"\\n\");\n      }\n    }\n\n    if (hookFunction.footer) {\n      result += \"  \".concat(hookFunction.footer);\n    }\n\n    result += '}\\n';\n  }\n\n  return result;\n}\n\nfunction normalizeHookFunctions(hookFunctions) {\n  const result = {\n    vs: {},\n    fs: {}\n  };\n  hookFunctions.forEach(hook => {\n    let opts;\n\n    if (typeof hook !== 'string') {\n      opts = hook;\n      hook = opts.hook;\n    } else {\n      opts = {};\n    }\n\n    hook = hook.trim();\n    const [stage, signature] = hook.split(':');\n    const name = hook.replace(/\\(.+/, '');\n    result[stage][name] = Object.assign(opts, {\n      signature\n    });\n  });\n  return result;\n}\n//# sourceMappingURL=assemble-shaders.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/lib/assemble-shaders.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/lib/constants.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/lib/constants.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FRAGMENT_SHADER\": function() { return /* binding */ FRAGMENT_SHADER; },\n/* harmony export */   \"VERTEX_SHADER\": function() { return /* binding */ VERTEX_SHADER; }\n/* harmony export */ });\nconst VERTEX_SHADER = 'vs';\nconst FRAGMENT_SHADER = 'fs';\n//# sourceMappingURL=constants.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/lib/constants.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/lib/filters/prop-types.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/lib/filters/prop-types.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"parsePropTypes\": function() { return /* binding */ parsePropTypes; }\n/* harmony export */ });\nconst TYPE_DEFINITIONS = {\n  number: {\n    validate(value, propType) {\n      return Number.isFinite(value) && (!('max' in propType) || value <= propType.max) && (!('min' in propType) || value >= propType.min);\n    }\n\n  },\n  array: {\n    validate(value, propType) {\n      return Array.isArray(value) || ArrayBuffer.isView(value);\n    }\n\n  }\n};\nfunction parsePropTypes(propDefs) {\n  const propTypes = {};\n\n  for (const propName in propDefs) {\n    const propDef = propDefs[propName];\n    const propType = parsePropType(propDef);\n    propTypes[propName] = propType;\n  }\n\n  return propTypes;\n}\n\nfunction parsePropType(propDef) {\n  let type = getTypeOf(propDef);\n\n  if (type === 'object') {\n    if (!propDef) {\n      return {\n        type: 'object',\n        value: null\n      };\n    }\n\n    if ('type' in propDef) {\n      return Object.assign({}, propDef, TYPE_DEFINITIONS[propDef.type]);\n    }\n\n    if (!('value' in propDef)) {\n      return {\n        type: 'object',\n        value: propDef\n      };\n    }\n\n    type = getTypeOf(propDef.value);\n    return Object.assign({\n      type\n    }, propDef, TYPE_DEFINITIONS[type]);\n  }\n\n  return Object.assign({\n    type,\n    value: propDef\n  }, TYPE_DEFINITIONS[type]);\n}\n\nfunction getTypeOf(value) {\n  if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n    return 'array';\n  }\n\n  return typeof value;\n}\n//# sourceMappingURL=prop-types.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/lib/filters/prop-types.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/lib/inject-shader.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/lib/inject-shader.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DECLARATION_INJECT_MARKER\": function() { return /* binding */ DECLARATION_INJECT_MARKER; },\n/* harmony export */   \"combineInjects\": function() { return /* binding */ combineInjects; },\n/* harmony export */   \"default\": function() { return /* binding */ injectShader; }\n/* harmony export */ });\n/* harmony import */ var _modules_module_injectors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../modules/module-injectors */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/module-injectors.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ \"./node_modules/@luma.gl/shadertools/dist/esm/lib/constants.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ \"./node_modules/@luma.gl/shadertools/dist/esm/utils/assert.js\");\n\n\n\nconst MODULE_INJECTORS = {\n  [_constants__WEBPACK_IMPORTED_MODULE_0__.VERTEX_SHADER]: _modules_module_injectors__WEBPACK_IMPORTED_MODULE_1__.MODULE_INJECTORS_VS,\n  [_constants__WEBPACK_IMPORTED_MODULE_0__.FRAGMENT_SHADER]: _modules_module_injectors__WEBPACK_IMPORTED_MODULE_1__.MODULE_INJECTORS_FS\n};\nconst DECLARATION_INJECT_MARKER = '__LUMA_INJECT_DECLARATIONS__';\nconst REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/;\nconst REGEX_END_OF_MAIN = /}\\n?[^{}]*$/;\nconst fragments = [];\nfunction injectShader(source, type, inject) {\n  let injectStandardStubs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n  const isVertex = type === _constants__WEBPACK_IMPORTED_MODULE_0__.VERTEX_SHADER;\n\n  for (const key in inject) {\n    const fragmentData = inject[key];\n    fragmentData.sort((a, b) => a.order - b.order);\n    fragments.length = fragmentData.length;\n\n    for (let i = 0, len = fragmentData.length; i < len; ++i) {\n      fragments[i] = fragmentData[i].injection;\n    }\n\n    const fragmentString = \"\".concat(fragments.join('\\n'), \"\\n\");\n\n    switch (key) {\n      case 'vs:#decl':\n        if (isVertex) {\n          source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n        }\n\n        break;\n\n      case 'vs:#main-start':\n        if (isVertex) {\n          source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n        }\n\n        break;\n\n      case 'vs:#main-end':\n        if (isVertex) {\n          source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n        }\n\n        break;\n\n      case 'fs:#decl':\n        if (!isVertex) {\n          source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n        }\n\n        break;\n\n      case 'fs:#main-start':\n        if (!isVertex) {\n          source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n        }\n\n        break;\n\n      case 'fs:#main-end':\n        if (!isVertex) {\n          source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n        }\n\n        break;\n\n      default:\n        source = source.replace(key, match => match + fragmentString);\n    }\n  }\n\n  source = source.replace(DECLARATION_INJECT_MARKER, '');\n\n  if (injectStandardStubs) {\n    source = source.replace(/\\}\\s*$/, match => match + MODULE_INJECTORS[type]);\n  }\n\n  return source;\n}\nfunction combineInjects(injects) {\n  const result = {};\n  (0,_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Array.isArray(injects) && injects.length > 1);\n  injects.forEach(inject => {\n    for (const key in inject) {\n      result[key] = result[key] ? \"\".concat(result[key], \"\\n\").concat(inject[key]) : inject[key];\n    }\n  });\n  return result;\n}\n//# sourceMappingURL=inject-shader.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/lib/inject-shader.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/lib/platform-defines.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/lib/platform-defines.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getPlatformShaderDefines\": function() { return /* binding */ getPlatformShaderDefines; },\n/* harmony export */   \"getVersionDefines\": function() { return /* binding */ getVersionDefines; }\n/* harmony export */ });\n/* harmony import */ var _utils_webgl_info__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/webgl-info */ \"./node_modules/@luma.gl/shadertools/dist/esm/utils/webgl-info.js\");\n\nfunction getPlatformShaderDefines(gl) {\n  const debugInfo = (0,_utils_webgl_info__WEBPACK_IMPORTED_MODULE_0__.getContextInfo)(gl);\n\n  switch (debugInfo.gpuVendor.toLowerCase()) {\n    case 'nvidia':\n      return \"#define NVIDIA_GPU\\n// Nvidia optimizes away the calculation necessary for emulated fp64\\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\\n\";\n\n    case 'intel':\n      return \"#define INTEL_GPU\\n// Intel optimizes away the calculation necessary for emulated fp64\\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\\n// Intel's built-in 'tan' function doesn't have acceptable precision\\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\\n\";\n\n    case 'amd':\n      return \"#define AMD_GPU\\n\";\n\n    default:\n      return \"#define DEFAULT_GPU\\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\\n// Intel's built-in 'tan' function doesn't have acceptable precision\\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\\n\";\n  }\n}\nfunction getVersionDefines(gl, glslVersion, isFragment) {\n  let versionDefines = \"#if (__VERSION__ > 120)\\n\\n# define FEATURE_GLSL_DERIVATIVES\\n# define FEATURE_GLSL_DRAW_BUFFERS\\n# define FEATURE_GLSL_FRAG_DEPTH\\n# define FEATURE_GLSL_TEXTURE_LOD\\n\\n// DEPRECATED FLAGS, remove in v9\\n# define FRAG_DEPTH\\n# define DERIVATIVES\\n# define DRAW_BUFFERS\\n# define TEXTURE_LOD\\n\\n#endif // __VERSION\\n\";\n\n  if ((0,_utils_webgl_info__WEBPACK_IMPORTED_MODULE_0__.hasFeatures)(gl, _utils_webgl_info__WEBPACK_IMPORTED_MODULE_0__.FEATURES.GLSL_FRAG_DEPTH)) {\n    versionDefines += \"\\n// FRAG_DEPTH => gl_FragDepth is available\\n#ifdef GL_EXT_frag_depth\\n#extension GL_EXT_frag_depth : enable\\n# define FEATURE_GLSL_FRAG_DEPTH\\n# define FRAG_DEPTH\\n# define gl_FragDepth gl_FragDepthEXT\\n#endif\\n\";\n  }\n\n  if ((0,_utils_webgl_info__WEBPACK_IMPORTED_MODULE_0__.hasFeatures)(gl, _utils_webgl_info__WEBPACK_IMPORTED_MODULE_0__.FEATURES.GLSL_DERIVATIVES) && (0,_utils_webgl_info__WEBPACK_IMPORTED_MODULE_0__.canCompileGLGSExtension)(gl, _utils_webgl_info__WEBPACK_IMPORTED_MODULE_0__.FEATURES.GLSL_DERIVATIVES)) {\n    versionDefines += \"\\n// DERIVATIVES => dxdF, dxdY and fwidth are available\\n#ifdef GL_OES_standard_derivatives\\n#extension GL_OES_standard_derivatives : enable\\n# define FEATURE_GLSL_DERIVATIVES\\n# define DERIVATIVES\\n#endif\\n\";\n  }\n\n  if ((0,_utils_webgl_info__WEBPACK_IMPORTED_MODULE_0__.hasFeatures)(gl, _utils_webgl_info__WEBPACK_IMPORTED_MODULE_0__.FEATURES.GLSL_FRAG_DATA) && (0,_utils_webgl_info__WEBPACK_IMPORTED_MODULE_0__.canCompileGLGSExtension)(gl, _utils_webgl_info__WEBPACK_IMPORTED_MODULE_0__.FEATURES.GLSL_FRAG_DATA, {\n    behavior: 'require'\n  })) {\n    versionDefines += \"\\n// DRAW_BUFFERS => gl_FragData[] is available\\n#ifdef GL_EXT_draw_buffers\\n#extension GL_EXT_draw_buffers : require\\n#define FEATURE_GLSL_DRAW_BUFFERS\\n#define DRAW_BUFFERS\\n#endif\\n\";\n  }\n\n  if ((0,_utils_webgl_info__WEBPACK_IMPORTED_MODULE_0__.hasFeatures)(gl, _utils_webgl_info__WEBPACK_IMPORTED_MODULE_0__.FEATURES.GLSL_TEXTURE_LOD)) {\n    versionDefines += \"// TEXTURE_LOD => texture2DLod etc are available\\n#ifdef GL_EXT_shader_texture_lod\\n#extension GL_EXT_shader_texture_lod : enable\\n\\n# define FEATURE_GLSL_TEXTURE_LOD\\n# define TEXTURE_LOD\\n\\n#endif\\n\";\n  }\n\n  return versionDefines;\n}\n//# sourceMappingURL=platform-defines.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/lib/platform-defines.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/lib/resolve-modules.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/lib/resolve-modules.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TEST_EXPORTS\": function() { return /* binding */ TEST_EXPORTS; },\n/* harmony export */   \"resolveModules\": function() { return /* binding */ resolveModules; }\n/* harmony export */ });\n/* harmony import */ var _shader_module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shader-module */ \"./node_modules/@luma.gl/shadertools/dist/esm/lib/shader-module.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ \"./node_modules/@luma.gl/shadertools/dist/esm/utils/assert.js\");\n\n\nfunction resolveModules(modules) {\n  return getShaderDependencies(instantiateModules(modules));\n}\n\nfunction getShaderDependencies(modules) {\n  const moduleMap = {};\n  const moduleDepth = {};\n  getDependencyGraph({\n    modules,\n    level: 0,\n    moduleMap,\n    moduleDepth\n  });\n  return Object.keys(moduleDepth).sort((a, b) => moduleDepth[b] - moduleDepth[a]).map(name => moduleMap[name]);\n}\n\nfunction getDependencyGraph(_ref) {\n  let {\n    modules,\n    level,\n    moduleMap,\n    moduleDepth\n  } = _ref;\n\n  if (level >= 5) {\n    throw new Error('Possible loop in shader dependency graph');\n  }\n\n  for (const module of modules) {\n    moduleMap[module.name] = module;\n\n    if (moduleDepth[module.name] === undefined || moduleDepth[module.name] < level) {\n      moduleDepth[module.name] = level;\n    }\n  }\n\n  for (const module of modules) {\n    if (module.dependencies) {\n      getDependencyGraph({\n        modules: module.dependencies,\n        level: level + 1,\n        moduleMap,\n        moduleDepth\n      });\n    }\n  }\n}\n\nfunction instantiateModules(modules, seen) {\n  return modules.map(module => {\n    if (module instanceof _shader_module__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n      return module;\n    }\n\n    (0,_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(typeof module !== 'string', \"Shader module use by name is deprecated. Import shader module '\".concat(module, \"' and use it directly.\"));\n    (0,_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(module.name, 'shader module has no name');\n    module = new _shader_module__WEBPACK_IMPORTED_MODULE_0__[\"default\"](module);\n    module.dependencies = instantiateModules(module.dependencies);\n    return module;\n  });\n}\n\nconst TEST_EXPORTS = {\n  getShaderDependencies,\n  getDependencyGraph\n};\n//# sourceMappingURL=resolve-modules.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/lib/resolve-modules.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/lib/shader-module.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/lib/shader-module.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ShaderModule; },\n/* harmony export */   \"normalizeShaderModule\": function() { return /* binding */ normalizeShaderModule; }\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ \"./node_modules/@luma.gl/shadertools/dist/esm/utils/assert.js\");\n/* harmony import */ var _filters_prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./filters/prop-types */ \"./node_modules/@luma.gl/shadertools/dist/esm/lib/filters/prop-types.js\");\n\n\nconst VERTEX_SHADER = 'vs';\nconst FRAGMENT_SHADER = 'fs';\nclass ShaderModule {\n  constructor(_ref) {\n    let {\n      name,\n      vs,\n      fs,\n      dependencies = [],\n      uniforms,\n      getUniforms,\n      deprecations = [],\n      defines = {},\n      inject = {},\n      vertexShader,\n      fragmentShader\n    } = _ref;\n    (0,_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(typeof name === 'string');\n    this.name = name;\n    this.vs = vs || vertexShader;\n    this.fs = fs || fragmentShader;\n    this.getModuleUniforms = getUniforms;\n    this.dependencies = dependencies;\n    this.deprecations = this._parseDeprecationDefinitions(deprecations);\n    this.defines = defines;\n    this.injections = normalizeInjections(inject);\n\n    if (uniforms) {\n      this.uniforms = (0,_filters_prop_types__WEBPACK_IMPORTED_MODULE_1__.parsePropTypes)(uniforms);\n    }\n  }\n\n  getModuleSource(type) {\n    let moduleSource;\n\n    switch (type) {\n      case VERTEX_SHADER:\n        moduleSource = this.vs || '';\n        break;\n\n      case FRAGMENT_SHADER:\n        moduleSource = this.fs || '';\n        break;\n\n      default:\n        (0,_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(false);\n    }\n\n    return \"#define MODULE_\".concat(this.name.toUpperCase().replace(/[^0-9a-z]/gi, '_'), \"\\n\").concat(moduleSource, \"// END MODULE_\").concat(this.name, \"\\n\\n\");\n  }\n\n  getUniforms(opts, uniforms) {\n    if (this.getModuleUniforms) {\n      return this.getModuleUniforms(opts, uniforms);\n    }\n\n    if (this.uniforms) {\n      return this._defaultGetUniforms(opts);\n    }\n\n    return {};\n  }\n\n  getDefines() {\n    return this.defines;\n  }\n\n  checkDeprecations(shaderSource, log) {\n    this.deprecations.forEach(def => {\n      if (def.regex.test(shaderSource)) {\n        if (def.deprecated) {\n          log.deprecated(def.old, def.new)();\n        } else {\n          log.removed(def.old, def.new)();\n        }\n      }\n    });\n  }\n\n  _parseDeprecationDefinitions(deprecations) {\n    deprecations.forEach(def => {\n      switch (def.type) {\n        case 'function':\n          def.regex = new RegExp(\"\\\\b\".concat(def.old, \"\\\\(\"));\n          break;\n\n        default:\n          def.regex = new RegExp(\"\".concat(def.type, \" \").concat(def.old, \";\"));\n      }\n    });\n    return deprecations;\n  }\n\n  _defaultGetUniforms() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const uniforms = {};\n    const propTypes = this.uniforms;\n\n    for (const key in propTypes) {\n      const propDef = propTypes[key];\n\n      if (key in opts && !propDef.private) {\n        if (propDef.validate) {\n          (0,_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(propDef.validate(opts[key], propDef), \"\".concat(this.name, \": invalid \").concat(key));\n        }\n\n        uniforms[key] = opts[key];\n      } else {\n        uniforms[key] = propDef.value;\n      }\n    }\n\n    return uniforms;\n  }\n\n}\nfunction normalizeShaderModule(module) {\n  if (!module.normalized) {\n    module.normalized = true;\n\n    if (module.uniforms && !module.getUniforms) {\n      const shaderModule = new ShaderModule(module);\n      module.getUniforms = shaderModule.getUniforms.bind(shaderModule);\n    }\n  }\n\n  return module;\n}\n\nfunction normalizeInjections(injections) {\n  const result = {\n    vs: {},\n    fs: {}\n  };\n\n  for (const hook in injections) {\n    let injection = injections[hook];\n    const stage = hook.slice(0, 2);\n\n    if (typeof injection === 'string') {\n      injection = {\n        order: 0,\n        injection\n      };\n    }\n\n    result[stage][hook] = injection;\n  }\n\n  return result;\n}\n//# sourceMappingURL=shader-module.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/lib/shader-module.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/lib/transpile-shader.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/lib/transpile-shader.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ transpileShader; }\n/* harmony export */ });\nfunction testVariable(qualifier) {\n  return new RegExp(\"\\\\b\".concat(qualifier, \"[ \\\\t]+(\\\\w+[ \\\\t]+\\\\w+(\\\\[\\\\w+\\\\])?;)\"), 'g');\n}\n\nconst ES300_REPLACEMENTS = [[/^(#version[ \\t]+(100|300[ \\t]+es))?[ \\t]*\\n/, '#version 300 es\\n'], [/\\btexture(2D|2DProj|Cube)Lod(EXT)?\\(/g, 'textureLod('], [/\\btexture(2D|2DProj|Cube)(EXT)?\\(/g, 'texture(']];\nconst ES300_VERTEX_REPLACEMENTS = [...ES300_REPLACEMENTS, [testVariable('attribute'), 'in $1'], [testVariable('varying'), 'out $1']];\nconst ES300_FRAGMENT_REPLACEMENTS = [...ES300_REPLACEMENTS, [testVariable('varying'), 'in $1']];\nconst ES100_REPLACEMENTS = [[/^#version[ \\t]+300[ \\t]+es/, '#version 100'], [/\\btexture(2D|2DProj|Cube)Lod\\(/g, 'texture$1LodEXT('], [/\\btexture\\(/g, 'texture2D('], [/\\btextureLod\\(/g, 'texture2DLodEXT(']];\nconst ES100_VERTEX_REPLACEMENTS = [...ES100_REPLACEMENTS, [testVariable('in'), 'attribute $1'], [testVariable('out'), 'varying $1']];\nconst ES100_FRAGMENT_REPLACEMENTS = [...ES100_REPLACEMENTS, [testVariable('in'), 'varying $1']];\nconst ES100_FRAGMENT_OUTPUT_NAME = 'gl_FragColor';\nconst ES300_FRAGMENT_OUTPUT_REGEX = /\\bout[ \\t]+vec4[ \\t]+(\\w+)[ \\t]*;\\n?/;\nconst REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/;\nfunction transpileShader(source, targetGLSLVersion, isVertex) {\n  switch (targetGLSLVersion) {\n    case 300:\n      return isVertex ? convertShader(source, ES300_VERTEX_REPLACEMENTS) : convertFragmentShaderTo300(source);\n\n    case 100:\n      return isVertex ? convertShader(source, ES100_VERTEX_REPLACEMENTS) : convertFragmentShaderTo100(source);\n\n    default:\n      throw new Error(\"unknown GLSL version \".concat(targetGLSLVersion));\n  }\n}\n\nfunction convertShader(source, replacements) {\n  for (const [pattern, replacement] of replacements) {\n    source = source.replace(pattern, replacement);\n  }\n\n  return source;\n}\n\nfunction convertFragmentShaderTo300(source) {\n  source = convertShader(source, ES300_FRAGMENT_REPLACEMENTS);\n  const outputMatch = source.match(ES300_FRAGMENT_OUTPUT_REGEX);\n\n  if (outputMatch) {\n    const outputName = outputMatch[1];\n    source = source.replace(new RegExp(\"\\\\b\".concat(ES100_FRAGMENT_OUTPUT_NAME, \"\\\\b\"), 'g'), outputName);\n  } else {\n    const outputName = 'fragmentColor';\n    source = source.replace(REGEX_START_OF_MAIN, match => \"out vec4 \".concat(outputName, \";\\n\").concat(match)).replace(new RegExp(\"\\\\b\".concat(ES100_FRAGMENT_OUTPUT_NAME, \"\\\\b\"), 'g'), outputName);\n  }\n\n  return source;\n}\n\nfunction convertFragmentShaderTo100(source) {\n  source = convertShader(source, ES100_FRAGMENT_REPLACEMENTS);\n  const outputMatch = source.match(ES300_FRAGMENT_OUTPUT_REGEX);\n\n  if (outputMatch) {\n    const outputName = outputMatch[1];\n    source = source.replace(ES300_FRAGMENT_OUTPUT_REGEX, '').replace(new RegExp(\"\\\\b\".concat(outputName, \"\\\\b\"), 'g'), ES100_FRAGMENT_OUTPUT_NAME);\n  }\n\n  return source;\n}\n//# sourceMappingURL=transpile-shader.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/lib/transpile-shader.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/modules/dirlight/dirlight.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/modules/dirlight/dirlight.js ***!
  \*********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"dirlight\": function() { return /* binding */ dirlight; }\n/* harmony export */ });\n/* harmony import */ var _project_project__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../project/project */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/project/project.js\");\n\nconst DEFAULT_LIGHT_DIRECTION = new Float32Array([1, 1, 2]);\nconst DEFAULT_MODULE_OPTIONS = {\n  lightDirection: DEFAULT_LIGHT_DIRECTION\n};\n\nfunction getUniforms() {\n  let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_MODULE_OPTIONS;\n  const uniforms = {};\n\n  if (opts.lightDirection) {\n    uniforms.dirlight_uLightDirection = opts.lightDirection;\n  }\n\n  return uniforms;\n}\n\nconst vs = null;\nconst fs = \"uniform vec3 dirlight_uLightDirection;\\nvec4 dirlight_filterColor(vec4 color) {\\n  vec3 normal = project_getNormal_World();\\n  float d = abs(dot(normalize(normal), normalize(dirlight_uLightDirection)));\\n  return vec4(color.rgb * d, color.a);\\n}\\n\";\nconst dirlight = {\n  name: 'dirlight',\n  vs,\n  fs,\n  getUniforms,\n  dependencies: [_project_project__WEBPACK_IMPORTED_MODULE_0__.project]\n};\n//# sourceMappingURL=dirlight.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/modules/dirlight/dirlight.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/modules/fp32/fp32.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/modules/fp32/fp32.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"fp32\": function() { return /* binding */ fp32; }\n/* harmony export */ });\nconst fp32shader = \"#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\\nconst float TWO_PI = 6.2831854820251465;\\nconst float PI_2 = 1.5707963705062866;\\nconst float PI_16 = 0.1963495463132858;\\n\\nconst float SIN_TABLE_0 = 0.19509032368659973;\\nconst float SIN_TABLE_1 = 0.3826834261417389;\\nconst float SIN_TABLE_2 = 0.5555702447891235;\\nconst float SIN_TABLE_3 = 0.7071067690849304;\\n\\nconst float COS_TABLE_0 = 0.9807852506637573;\\nconst float COS_TABLE_1 = 0.9238795042037964;\\nconst float COS_TABLE_2 = 0.8314695954322815;\\nconst float COS_TABLE_3 = 0.7071067690849304;\\n\\nconst float INVERSE_FACTORIAL_3 = 1.666666716337204e-01;\\nconst float INVERSE_FACTORIAL_5 = 8.333333767950535e-03;\\nconst float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04;\\nconst float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06;\\n\\nfloat sin_taylor_fp32(float a) {\\n  float r, s, t, x;\\n\\n  if (a == 0.0) {\\n    return 0.0;\\n  }\\n\\n  x = -a * a;\\n  s = a;\\n  r = a;\\n\\n  r = r * x;\\n  t = r * INVERSE_FACTORIAL_3;\\n  s = s + t;\\n\\n  r = r * x;\\n  t = r * INVERSE_FACTORIAL_5;\\n  s = s + t;\\n\\n  r = r * x;\\n  t = r * INVERSE_FACTORIAL_7;\\n  s = s + t;\\n\\n  r = r * x;\\n  t = r * INVERSE_FACTORIAL_9;\\n  s = s + t;\\n\\n  return s;\\n}\\n\\nvoid sincos_taylor_fp32(float a, out float sin_t, out float cos_t) {\\n  if (a == 0.0) {\\n    sin_t = 0.0;\\n    cos_t = 1.0;\\n  }\\n  sin_t = sin_taylor_fp32(a);\\n  cos_t = sqrt(1.0 - sin_t * sin_t);\\n}\\n\\nfloat tan_taylor_fp32(float a) {\\n    float sin_a;\\n    float cos_a;\\n\\n    if (a == 0.0) {\\n        return 0.0;\\n    }\\n    float z = floor(a / TWO_PI);\\n    float r = a - TWO_PI * z;\\n\\n    float t;\\n    float q = floor(r / PI_2 + 0.5);\\n    int j = int(q);\\n\\n    if (j < -2 || j > 2) {\\n        return 1.0 / 0.0;\\n    }\\n\\n    t = r - PI_2 * q;\\n\\n    q = floor(t / PI_16 + 0.5);\\n    int k = int(q);\\n    int abs_k = int(abs(float(k)));\\n\\n    if (abs_k > 4) {\\n        return 1.0 / 0.0;\\n    } else {\\n        t = t - PI_16 * q;\\n    }\\n\\n    float u = 0.0;\\n    float v = 0.0;\\n\\n    float sin_t, cos_t;\\n    float s, c;\\n    sincos_taylor_fp32(t, sin_t, cos_t);\\n\\n    if (k == 0) {\\n        s = sin_t;\\n        c = cos_t;\\n    } else {\\n        if (abs(float(abs_k) - 1.0) < 0.5) {\\n            u = COS_TABLE_0;\\n            v = SIN_TABLE_0;\\n        } else if (abs(float(abs_k) - 2.0) < 0.5) {\\n            u = COS_TABLE_1;\\n            v = SIN_TABLE_1;\\n        } else if (abs(float(abs_k) - 3.0) < 0.5) {\\n            u = COS_TABLE_2;\\n            v = SIN_TABLE_2;\\n        } else if (abs(float(abs_k) - 4.0) < 0.5) {\\n            u = COS_TABLE_3;\\n            v = SIN_TABLE_3;\\n        }\\n        if (k > 0) {\\n            s = u * sin_t + v * cos_t;\\n            c = u * cos_t - v * sin_t;\\n        } else {\\n            s = u * sin_t - v * cos_t;\\n            c = u * cos_t + v * sin_t;\\n        }\\n    }\\n\\n    if (j == 0) {\\n        sin_a = s;\\n        cos_a = c;\\n    } else if (j == 1) {\\n        sin_a = c;\\n        cos_a = -s;\\n    } else if (j == -1) {\\n        sin_a = -c;\\n        cos_a = s;\\n    } else {\\n        sin_a = -s;\\n        cos_a = -c;\\n    }\\n    return sin_a / cos_a;\\n}\\n#endif\\n\\nfloat tan_fp32(float a) {\\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\\n  return tan_taylor_fp32(a);\\n#else\\n  return tan(a);\\n#endif\\n}\\n\";\nconst fp32 = {\n  name: 'fp32',\n  vs: fp32shader,\n  fs: null\n};\n//# sourceMappingURL=fp32.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/modules/fp32/fp32.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64-arithmetic.glsl.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64-arithmetic.glsl.js ***!
  \*****************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"uniform float ONE;\\nvec2 split(float a) {\\n  const float SPLIT = 4097.0;\\n  float t = a * SPLIT;\\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\\n  float a_hi = t * ONE - (t - a);\\n  float a_lo = a * ONE - a_hi;\\n#else\\n  float a_hi = t - (t - a);\\n  float a_lo = a - a_hi;\\n#endif\\n  return vec2(a_hi, a_lo);\\n}\\nvec2 split2(vec2 a) {\\n  vec2 b = split(a.x);\\n  b.y += a.y;\\n  return b;\\n}\\nvec2 quickTwoSum(float a, float b) {\\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\\n  float sum = (a + b) * ONE;\\n  float err = b - (sum - a) * ONE;\\n#else\\n  float sum = a + b;\\n  float err = b - (sum - a);\\n#endif\\n  return vec2(sum, err);\\n}\\nvec2 twoSum(float a, float b) {\\n  float s = (a + b);\\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\\n  float v = (s * ONE - a) * ONE;\\n  float err = (a - (s - v) * ONE) * ONE * ONE * ONE + (b - v);\\n#else\\n  float v = s - a;\\n  float err = (a - (s - v)) + (b - v);\\n#endif\\n  return vec2(s, err);\\n}\\n\\nvec2 twoSub(float a, float b) {\\n  float s = (a - b);\\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\\n  float v = (s * ONE - a) * ONE;\\n  float err = (a - (s - v) * ONE) * ONE * ONE * ONE - (b + v);\\n#else\\n  float v = s - a;\\n  float err = (a - (s - v)) - (b + v);\\n#endif\\n  return vec2(s, err);\\n}\\n\\nvec2 twoSqr(float a) {\\n  float prod = a * a;\\n  vec2 a_fp64 = split(a);\\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\\n  float err = ((a_fp64.x * a_fp64.x - prod) * ONE + 2.0 * a_fp64.x *\\n    a_fp64.y * ONE * ONE) + a_fp64.y * a_fp64.y * ONE * ONE * ONE;\\n#else\\n  float err = ((a_fp64.x * a_fp64.x - prod) + 2.0 * a_fp64.x * a_fp64.y) + a_fp64.y * a_fp64.y;\\n#endif\\n  return vec2(prod, err);\\n}\\n\\nvec2 twoProd(float a, float b) {\\n  float prod = a * b;\\n  vec2 a_fp64 = split(a);\\n  vec2 b_fp64 = split(b);\\n  float err = ((a_fp64.x * b_fp64.x - prod) + a_fp64.x * b_fp64.y +\\n    a_fp64.y * b_fp64.x) + a_fp64.y * b_fp64.y;\\n  return vec2(prod, err);\\n}\\n\\nvec2 sum_fp64(vec2 a, vec2 b) {\\n  vec2 s, t;\\n  s = twoSum(a.x, b.x);\\n  t = twoSum(a.y, b.y);\\n  s.y += t.x;\\n  s = quickTwoSum(s.x, s.y);\\n  s.y += t.y;\\n  s = quickTwoSum(s.x, s.y);\\n  return s;\\n}\\n\\nvec2 sub_fp64(vec2 a, vec2 b) {\\n  vec2 s, t;\\n  s = twoSub(a.x, b.x);\\n  t = twoSub(a.y, b.y);\\n  s.y += t.x;\\n  s = quickTwoSum(s.x, s.y);\\n  s.y += t.y;\\n  s = quickTwoSum(s.x, s.y);\\n  return s;\\n}\\n\\nvec2 mul_fp64(vec2 a, vec2 b) {\\n  vec2 prod = twoProd(a.x, b.x);\\n  prod.y += a.x * b.y;\\n#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)\\n  prod = split2(prod);\\n#endif\\n  prod = quickTwoSum(prod.x, prod.y);\\n  prod.y += a.y * b.x;\\n#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)\\n  prod = split2(prod);\\n#endif\\n  prod = quickTwoSum(prod.x, prod.y);\\n  return prod;\\n}\\n\\nvec2 div_fp64(vec2 a, vec2 b) {\\n  float xn = 1.0 / b.x;\\n#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)\\n  vec2 yn = mul_fp64(a, vec2(xn, 0));\\n#else\\n  vec2 yn = a * xn;\\n#endif\\n  float diff = (sub_fp64(a, mul_fp64(b, yn))).x;\\n  vec2 prod = twoProd(xn, diff);\\n  return sum_fp64(yn, prod);\\n}\\n\\nvec2 sqrt_fp64(vec2 a) {\\n  if (a.x == 0.0 && a.y == 0.0) return vec2(0.0, 0.0);\\n  if (a.x < 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);\\n\\n  float x = 1.0 / sqrt(a.x);\\n  float yn = a.x * x;\\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\\n  vec2 yn_sqr = twoSqr(yn) * ONE;\\n#else\\n  vec2 yn_sqr = twoSqr(yn);\\n#endif\\n  float diff = sub_fp64(a, yn_sqr).x;\\n  vec2 prod = twoProd(x * 0.5, diff);\\n#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)\\n  return sum_fp64(split(yn), prod);\\n#else\\n  return sum_fp64(vec2(yn, 0.0), prod);\\n#endif\\n}\\n\");\n//# sourceMappingURL=fp64-arithmetic.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64-arithmetic.glsl.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64-functions.glsl.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64-functions.glsl.js ***!
  \****************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"const vec2 E_FP64 = vec2(2.7182817459106445e+00, 8.254840366817007e-08);\\nconst vec2 LOG2_FP64 = vec2(0.6931471824645996e+00, -1.9046542121259336e-09);\\nconst vec2 PI_FP64 = vec2(3.1415927410125732, -8.742278012618954e-8);\\nconst vec2 TWO_PI_FP64 = vec2(6.2831854820251465, -1.7484556025237907e-7);\\nconst vec2 PI_2_FP64 = vec2(1.5707963705062866, -4.371139006309477e-8);\\nconst vec2 PI_4_FP64 = vec2(0.7853981852531433, -2.1855695031547384e-8);\\nconst vec2 PI_16_FP64 = vec2(0.19634954631328583, -5.463923757886846e-9);\\nconst vec2 PI_16_2_FP64 = vec2(0.39269909262657166, -1.0927847515773692e-8);\\nconst vec2 PI_16_3_FP64 = vec2(0.5890486240386963, -1.4906100798128818e-9);\\nconst vec2 PI_180_FP64 = vec2(0.01745329238474369, 1.3519960498364902e-10);\\n\\nconst vec2 SIN_TABLE_0_FP64 = vec2(0.19509032368659973, -1.6704714833615242e-9);\\nconst vec2 SIN_TABLE_1_FP64 = vec2(0.3826834261417389, 6.22335089017767e-9);\\nconst vec2 SIN_TABLE_2_FP64 = vec2(0.5555702447891235, -1.1769521357507529e-8);\\nconst vec2 SIN_TABLE_3_FP64 = vec2(0.7071067690849304, 1.2101617041793133e-8);\\n\\nconst vec2 COS_TABLE_0_FP64 = vec2(0.9807852506637573, 2.9739473106360492e-8);\\nconst vec2 COS_TABLE_1_FP64 = vec2(0.9238795042037964, 2.8307490351764386e-8);\\nconst vec2 COS_TABLE_2_FP64 = vec2(0.8314695954322815, 1.6870263741530778e-8);\\nconst vec2 COS_TABLE_3_FP64 = vec2(0.7071067690849304, 1.2101617152815436e-8);\\n\\nconst vec2 INVERSE_FACTORIAL_3_FP64 = vec2(1.666666716337204e-01, -4.967053879312289e-09);\\nconst vec2 INVERSE_FACTORIAL_4_FP64 = vec2(4.16666679084301e-02, -1.2417634698280722e-09);\\nconst vec2 INVERSE_FACTORIAL_5_FP64 = vec2(8.333333767950535e-03, -4.34617203337595e-10);\\nconst vec2 INVERSE_FACTORIAL_6_FP64 = vec2(1.3888889225199819e-03, -3.3631094437103215e-11);\\nconst vec2 INVERSE_FACTORIAL_7_FP64 = vec2(1.9841270113829523e-04,  -2.725596874933456e-12);\\nconst vec2 INVERSE_FACTORIAL_8_FP64 = vec2(2.4801587642286904e-05, -3.406996025904184e-13);\\nconst vec2 INVERSE_FACTORIAL_9_FP64 = vec2(2.75573188446287533e-06, 3.7935713937038186e-14);\\nconst vec2 INVERSE_FACTORIAL_10_FP64 = vec2(2.755731998149713e-07, -7.575112367869873e-15);\\n\\nfloat nint(float d) {\\n    if (d == floor(d)) return d;\\n    return floor(d + 0.5);\\n}\\n\\nvec2 nint_fp64(vec2 a) {\\n    float hi = nint(a.x);\\n    float lo;\\n    vec2 tmp;\\n    if (hi == a.x) {\\n        lo = nint(a.y);\\n        tmp = quickTwoSum(hi, lo);\\n    } else {\\n        lo = 0.0;\\n        if (abs(hi - a.x) == 0.5 && a.y < 0.0) {\\n            hi -= 1.0;\\n        }\\n        tmp = vec2(hi, lo);\\n    }\\n    return tmp;\\n}\\n\\nvec2 exp_fp64(vec2 a) {\\n\\n  const int k_power = 4;\\n  const float k = 16.0;\\n\\n  const float inv_k = 1.0 / k;\\n\\n  if (a.x <= -88.0) return vec2(0.0, 0.0);\\n  if (a.x >= 88.0) return vec2(1.0 / 0.0, 1.0 / 0.0);\\n  if (a.x == 0.0 && a.y == 0.0) return vec2(1.0, 0.0);\\n  if (a.x == 1.0 && a.y == 0.0) return E_FP64;\\n\\n  float m = floor(a.x / LOG2_FP64.x + 0.5);\\n  vec2 r = sub_fp64(a, mul_fp64(LOG2_FP64, vec2(m, 0.0))) * inv_k;\\n  vec2 s, t, p;\\n\\n  p = mul_fp64(r, r);\\n  s = sum_fp64(r, p * 0.5);\\n  p = mul_fp64(p, r);\\n  t = mul_fp64(p, INVERSE_FACTORIAL_3_FP64);\\n\\n  s = sum_fp64(s, t);\\n  p = mul_fp64(p, r);\\n  t = mul_fp64(p, INVERSE_FACTORIAL_4_FP64);\\n\\n  s = sum_fp64(s, t);\\n  p = mul_fp64(p, r);\\n  t = mul_fp64(p, INVERSE_FACTORIAL_5_FP64);\\n\\n\\n\\n\\n\\n\\n  s = sum_fp64(s, t);\\n  for (int i = 0; i < k_power; i++) {\\n    s = sum_fp64(s * 2.0, mul_fp64(s, s));\\n  }\\n\\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\\n  s = sum_fp64(s, vec2(ONE, 0.0));\\n#else\\n  s = sum_fp64(s, vec2(1.0, 0.0));\\n#endif\\n\\n  return s * pow(2.0, m);\\n}\\n\\nvec2 log_fp64(vec2 a)\\n{\\n  if (a.x == 1.0 && a.y == 0.0) return vec2(0.0, 0.0);\\n  if (a.x <= 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);\\n  vec2 x = vec2(log(a.x), 0.0);\\n  vec2 s;\\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\\n  s = vec2(ONE, 0.0);\\n#else\\n  s = vec2(1.0, 0.0);\\n#endif\\n\\n  x = sub_fp64(sum_fp64(x, mul_fp64(a, exp_fp64(-x))), s);\\n  return x;\\n}\\n\\nvec2 sin_taylor_fp64(vec2 a) {\\n  vec2 r, s, t, x;\\n\\n  if (a.x == 0.0 && a.y == 0.0) {\\n    return vec2(0.0, 0.0);\\n  }\\n\\n  x = -mul_fp64(a, a);\\n  s = a;\\n  r = a;\\n\\n  r = mul_fp64(r, x);\\n  t = mul_fp64(r, INVERSE_FACTORIAL_3_FP64);\\n  s = sum_fp64(s, t);\\n\\n  r = mul_fp64(r, x);\\n  t = mul_fp64(r, INVERSE_FACTORIAL_5_FP64);\\n  s = sum_fp64(s, t);\\n\\n\\n\\n\\n\\n\\n  return s;\\n}\\n\\nvec2 cos_taylor_fp64(vec2 a) {\\n  vec2 r, s, t, x;\\n\\n  if (a.x == 0.0 && a.y == 0.0) {\\n    return vec2(1.0, 0.0);\\n  }\\n\\n  x = -mul_fp64(a, a);\\n  r = x;\\n  s = sum_fp64(vec2(1.0, 0.0), r * 0.5);\\n\\n  r = mul_fp64(r, x);\\n  t = mul_fp64(r, INVERSE_FACTORIAL_4_FP64);\\n  s = sum_fp64(s, t);\\n\\n  r = mul_fp64(r, x);\\n  t = mul_fp64(r, INVERSE_FACTORIAL_6_FP64);\\n  s = sum_fp64(s, t);\\n\\n\\n\\n\\n\\n\\n  return s;\\n}\\n\\nvoid sincos_taylor_fp64(vec2 a, out vec2 sin_t, out vec2 cos_t) {\\n  if (a.x == 0.0 && a.y == 0.0) {\\n    sin_t = vec2(0.0, 0.0);\\n    cos_t = vec2(1.0, 0.0);\\n  }\\n\\n  sin_t = sin_taylor_fp64(a);\\n  cos_t = sqrt_fp64(sub_fp64(vec2(1.0, 0.0), mul_fp64(sin_t, sin_t)));\\n}\\n\\nvec2 sin_fp64(vec2 a) {\\n    if (a.x == 0.0 && a.y == 0.0) {\\n        return vec2(0.0, 0.0);\\n    }\\n    vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));\\n    vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));\\n\\n    vec2 t;\\n    float q = floor(r.x / PI_2_FP64.x + 0.5);\\n    int j = int(q);\\n\\n    if (j < -2 || j > 2) {\\n        return vec2(0.0 / 0.0, 0.0 / 0.0);\\n    }\\n\\n    t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));\\n\\n    q = floor(t.x / PI_16_FP64.x + 0.5);\\n    int k = int(q);\\n\\n    if (k == 0) {\\n        if (j == 0) {\\n            return sin_taylor_fp64(t);\\n        } else if (j == 1) {\\n            return cos_taylor_fp64(t);\\n        } else if (j == -1) {\\n            return -cos_taylor_fp64(t);\\n        } else {\\n            return -sin_taylor_fp64(t);\\n        }\\n    }\\n\\n    int abs_k = int(abs(float(k)));\\n\\n    if (abs_k > 4) {\\n        return vec2(0.0 / 0.0, 0.0 / 0.0);\\n    } else {\\n        t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));\\n    }\\n\\n    vec2 u = vec2(0.0, 0.0);\\n    vec2 v = vec2(0.0, 0.0);\\n\\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\\n    if (abs(float(abs_k) - 1.0) < 0.5) {\\n        u = COS_TABLE_0_FP64;\\n        v = SIN_TABLE_0_FP64;\\n    } else if (abs(float(abs_k) - 2.0) < 0.5) {\\n        u = COS_TABLE_1_FP64;\\n        v = SIN_TABLE_1_FP64;\\n    } else if (abs(float(abs_k) - 3.0) < 0.5) {\\n        u = COS_TABLE_2_FP64;\\n        v = SIN_TABLE_2_FP64;\\n    } else if (abs(float(abs_k) - 4.0) < 0.5) {\\n        u = COS_TABLE_3_FP64;\\n        v = SIN_TABLE_3_FP64;\\n    }\\n#else\\n    if (abs_k == 1) {\\n        u = COS_TABLE_0_FP64;\\n        v = SIN_TABLE_0_FP64;\\n    } else if (abs_k == 2) {\\n        u = COS_TABLE_1_FP64;\\n        v = SIN_TABLE_1_FP64;\\n    } else if (abs_k == 3) {\\n        u = COS_TABLE_2_FP64;\\n        v = SIN_TABLE_2_FP64;\\n    } else if (abs_k == 4) {\\n        u = COS_TABLE_3_FP64;\\n        v = SIN_TABLE_3_FP64;\\n    }\\n#endif\\n\\n    vec2 sin_t, cos_t;\\n    sincos_taylor_fp64(t, sin_t, cos_t);\\n\\n\\n\\n    vec2 result = vec2(0.0, 0.0);\\n    if (j == 0) {\\n        if (k > 0) {\\n            result = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\\n        } else {\\n            result = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\\n        }\\n    } else if (j == 1) {\\n        if (k > 0) {\\n            result = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\\n        } else {\\n            result = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\\n        }\\n    } else if (j == -1) {\\n        if (k > 0) {\\n            result = sub_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));\\n        } else {\\n            result = -sum_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));\\n        }\\n    } else {\\n        if (k > 0) {\\n            result = -sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\\n        } else {\\n            result = sub_fp64(mul_fp64(v, cos_t), mul_fp64(u, sin_t));\\n        }\\n    }\\n\\n    return result;\\n}\\n\\nvec2 cos_fp64(vec2 a) {\\n    if (a.x == 0.0 && a.y == 0.0) {\\n        return vec2(1.0, 0.0);\\n    }\\n    vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));\\n    vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));\\n\\n    vec2 t;\\n    float q = floor(r.x / PI_2_FP64.x + 0.5);\\n    int j = int(q);\\n\\n    if (j < -2 || j > 2) {\\n        return vec2(0.0 / 0.0, 0.0 / 0.0);\\n    }\\n\\n    t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));\\n\\n    q = floor(t.x / PI_16_FP64.x + 0.5);\\n    int k = int(q);\\n\\n    if (k == 0) {\\n        if (j == 0) {\\n            return cos_taylor_fp64(t);\\n        } else if (j == 1) {\\n            return -sin_taylor_fp64(t);\\n        } else if (j == -1) {\\n            return sin_taylor_fp64(t);\\n        } else {\\n            return -cos_taylor_fp64(t);\\n        }\\n    }\\n\\n    int abs_k = int(abs(float(k)));\\n\\n    if (abs_k > 4) {\\n        return vec2(0.0 / 0.0, 0.0 / 0.0);\\n    } else {\\n        t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));\\n    }\\n\\n    vec2 u = vec2(0.0, 0.0);\\n    vec2 v = vec2(0.0, 0.0);\\n\\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\\n    if (abs(float(abs_k) - 1.0) < 0.5) {\\n        u = COS_TABLE_0_FP64;\\n        v = SIN_TABLE_0_FP64;\\n    } else if (abs(float(abs_k) - 2.0) < 0.5) {\\n        u = COS_TABLE_1_FP64;\\n        v = SIN_TABLE_1_FP64;\\n    } else if (abs(float(abs_k) - 3.0) < 0.5) {\\n        u = COS_TABLE_2_FP64;\\n        v = SIN_TABLE_2_FP64;\\n    } else if (abs(float(abs_k) - 4.0) < 0.5) {\\n        u = COS_TABLE_3_FP64;\\n        v = SIN_TABLE_3_FP64;\\n    }\\n#else\\n    if (abs_k == 1) {\\n        u = COS_TABLE_0_FP64;\\n        v = SIN_TABLE_0_FP64;\\n    } else if (abs_k == 2) {\\n        u = COS_TABLE_1_FP64;\\n        v = SIN_TABLE_1_FP64;\\n    } else if (abs_k == 3) {\\n        u = COS_TABLE_2_FP64;\\n        v = SIN_TABLE_2_FP64;\\n    } else if (abs_k == 4) {\\n        u = COS_TABLE_3_FP64;\\n        v = SIN_TABLE_3_FP64;\\n    }\\n#endif\\n\\n    vec2 sin_t, cos_t;\\n    sincos_taylor_fp64(t, sin_t, cos_t);\\n\\n    vec2 result = vec2(0.0, 0.0);\\n    if (j == 0) {\\n        if (k > 0) {\\n            result = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\\n        } else {\\n            result = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\\n        }\\n    } else if (j == 1) {\\n        if (k > 0) {\\n            result = -sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\\n        } else {\\n            result = sub_fp64(mul_fp64(v, cos_t), mul_fp64(u, sin_t));\\n        }\\n    } else if (j == -1) {\\n        if (k > 0) {\\n            result = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\\n        } else {\\n            result = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\\n        }\\n    } else {\\n        if (k > 0) {\\n            result = sub_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));\\n        } else {\\n            result = -sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\\n        }\\n    }\\n\\n    return result;\\n}\\n\\nvec2 tan_fp64(vec2 a) {\\n    vec2 sin_a;\\n    vec2 cos_a;\\n\\n    if (a.x == 0.0 && a.y == 0.0) {\\n        return vec2(0.0, 0.0);\\n    }\\n    vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));\\n    vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));\\n\\n    vec2 t;\\n    float q = floor(r.x / PI_2_FP64.x + 0.5);\\n    int j = int(q);\\n\\n\\n    if (j < -2 || j > 2) {\\n        return vec2(0.0 / 0.0, 0.0 / 0.0);\\n    }\\n\\n    t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));\\n\\n    q = floor(t.x / PI_16_FP64.x + 0.5);\\n    int k = int(q);\\n    int abs_k = int(abs(float(k)));\\n\\n    if (abs_k > 4) {\\n        return vec2(0.0 / 0.0, 0.0 / 0.0);\\n    } else {\\n        t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));\\n    }\\n\\n\\n    vec2 u = vec2(0.0, 0.0);\\n    vec2 v = vec2(0.0, 0.0);\\n\\n    vec2 sin_t, cos_t;\\n    vec2 s, c;\\n    sincos_taylor_fp64(t, sin_t, cos_t);\\n\\n    if (k == 0) {\\n        s = sin_t;\\n        c = cos_t;\\n    } else {\\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\\n        if (abs(float(abs_k) - 1.0) < 0.5) {\\n            u = COS_TABLE_0_FP64;\\n            v = SIN_TABLE_0_FP64;\\n        } else if (abs(float(abs_k) - 2.0) < 0.5) {\\n            u = COS_TABLE_1_FP64;\\n            v = SIN_TABLE_1_FP64;\\n        } else if (abs(float(abs_k) - 3.0) < 0.5) {\\n            u = COS_TABLE_2_FP64;\\n            v = SIN_TABLE_2_FP64;\\n        } else if (abs(float(abs_k) - 4.0) < 0.5) {\\n            u = COS_TABLE_3_FP64;\\n            v = SIN_TABLE_3_FP64;\\n        }\\n#else\\n        if (abs_k == 1) {\\n            u = COS_TABLE_0_FP64;\\n            v = SIN_TABLE_0_FP64;\\n        } else if (abs_k == 2) {\\n            u = COS_TABLE_1_FP64;\\n            v = SIN_TABLE_1_FP64;\\n        } else if (abs_k == 3) {\\n            u = COS_TABLE_2_FP64;\\n            v = SIN_TABLE_2_FP64;\\n        } else if (abs_k == 4) {\\n            u = COS_TABLE_3_FP64;\\n            v = SIN_TABLE_3_FP64;\\n        }\\n#endif\\n        if (k > 0) {\\n            s = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\\n            c = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\\n        } else {\\n            s = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\\n            c = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\\n        }\\n    }\\n\\n    if (j == 0) {\\n        sin_a = s;\\n        cos_a = c;\\n    } else if (j == 1) {\\n        sin_a = c;\\n        cos_a = -s;\\n    } else if (j == -1) {\\n        sin_a = -c;\\n        cos_a = s;\\n    } else {\\n        sin_a = -s;\\n        cos_a = -c;\\n    }\\n    return div_fp64(sin_a, cos_a);\\n}\\n\\nvec2 radians_fp64(vec2 degree) {\\n  return mul_fp64(degree, PI_180_FP64);\\n}\\n\\nvec2 mix_fp64(vec2 a, vec2 b, float x) {\\n  vec2 range = sub_fp64(b, a);\\n  return sum_fp64(a, mul_fp64(range, vec2(x, 0.0)));\\n}\\n\\nvoid vec2_sum_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {\\n    out_val[0] = sum_fp64(a[0], b[0]);\\n    out_val[1] = sum_fp64(a[1], b[1]);\\n}\\n\\nvoid vec2_sub_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {\\n    out_val[0] = sub_fp64(a[0], b[0]);\\n    out_val[1] = sub_fp64(a[1], b[1]);\\n}\\n\\nvoid vec2_mul_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {\\n    out_val[0] = mul_fp64(a[0], b[0]);\\n    out_val[1] = mul_fp64(a[1], b[1]);\\n}\\n\\nvoid vec2_div_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {\\n    out_val[0] = div_fp64(a[0], b[0]);\\n    out_val[1] = div_fp64(a[1], b[1]);\\n}\\n\\nvoid vec2_mix_fp64(vec2 x[2], vec2 y[2], float a, out vec2 out_val[2]) {\\n  vec2 range[2];\\n  vec2_sub_fp64(y, x, range);\\n  vec2 portion[2];\\n  portion[0] = range[0] * a;\\n  portion[1] = range[1] * a;\\n  vec2_sum_fp64(x, portion, out_val);\\n}\\n\\nvec2 vec2_length_fp64(vec2 x[2]) {\\n  return sqrt_fp64(sum_fp64(mul_fp64(x[0], x[0]), mul_fp64(x[1], x[1])));\\n}\\n\\nvoid vec2_normalize_fp64(vec2 x[2], out vec2 out_val[2]) {\\n  vec2 length = vec2_length_fp64(x);\\n  vec2 length_vec2[2];\\n  length_vec2[0] = length;\\n  length_vec2[1] = length;\\n\\n  vec2_div_fp64(x, length_vec2, out_val);\\n}\\n\\nvec2 vec2_distance_fp64(vec2 x[2], vec2 y[2]) {\\n  vec2 diff[2];\\n  vec2_sub_fp64(x, y, diff);\\n  return vec2_length_fp64(diff);\\n}\\n\\nvec2 vec2_dot_fp64(vec2 a[2], vec2 b[2]) {\\n  vec2 v[2];\\n\\n  v[0] = mul_fp64(a[0], b[0]);\\n  v[1] = mul_fp64(a[1], b[1]);\\n\\n  return sum_fp64(v[0], v[1]);\\n}\\nvoid vec3_sub_fp64(vec2 a[3], vec2 b[3], out vec2 out_val[3]) {\\n  for (int i = 0; i < 3; i++) {\\n    out_val[i] = sum_fp64(a[i], b[i]);\\n  }\\n}\\n\\nvoid vec3_sum_fp64(vec2 a[3], vec2 b[3], out vec2 out_val[3]) {\\n  for (int i = 0; i < 3; i++) {\\n    out_val[i] = sum_fp64(a[i], b[i]);\\n  }\\n}\\n\\nvec2 vec3_length_fp64(vec2 x[3]) {\\n  return sqrt_fp64(sum_fp64(sum_fp64(mul_fp64(x[0], x[0]), mul_fp64(x[1], x[1])),\\n    mul_fp64(x[2], x[2])));\\n}\\n\\nvec2 vec3_distance_fp64(vec2 x[3], vec2 y[3]) {\\n  vec2 diff[3];\\n  vec3_sub_fp64(x, y, diff);\\n  return vec3_length_fp64(diff);\\n}\\nvoid vec4_fp64(vec4 a, out vec2 out_val[4]) {\\n  out_val[0].x = a[0];\\n  out_val[0].y = 0.0;\\n\\n  out_val[1].x = a[1];\\n  out_val[1].y = 0.0;\\n\\n  out_val[2].x = a[2];\\n  out_val[2].y = 0.0;\\n\\n  out_val[3].x = a[3];\\n  out_val[3].y = 0.0;\\n}\\n\\nvoid vec4_scalar_mul_fp64(vec2 a[4], vec2 b, out vec2 out_val[4]) {\\n  out_val[0] = mul_fp64(a[0], b);\\n  out_val[1] = mul_fp64(a[1], b);\\n  out_val[2] = mul_fp64(a[2], b);\\n  out_val[3] = mul_fp64(a[3], b);\\n}\\n\\nvoid vec4_sum_fp64(vec2 a[4], vec2 b[4], out vec2 out_val[4]) {\\n  for (int i = 0; i < 4; i++) {\\n    out_val[i] = sum_fp64(a[i], b[i]);\\n  }\\n}\\n\\nvoid vec4_dot_fp64(vec2 a[4], vec2 b[4], out vec2 out_val) {\\n  vec2 v[4];\\n\\n  v[0] = mul_fp64(a[0], b[0]);\\n  v[1] = mul_fp64(a[1], b[1]);\\n  v[2] = mul_fp64(a[2], b[2]);\\n  v[3] = mul_fp64(a[3], b[3]);\\n\\n  out_val = sum_fp64(sum_fp64(v[0], v[1]), sum_fp64(v[2], v[3]));\\n}\\n\\nvoid mat4_vec4_mul_fp64(vec2 b[16], vec2 a[4], out vec2 out_val[4]) {\\n  vec2 tmp[4];\\n\\n  for (int i = 0; i < 4; i++)\\n  {\\n    for (int j = 0; j < 4; j++)\\n    {\\n      tmp[j] = b[j + i * 4];\\n    }\\n    vec4_dot_fp64(a, tmp, out_val[i]);\\n  }\\n}\\n\");\n//# sourceMappingURL=fp64-functions.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64-functions.glsl.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64-utils.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64-utils.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"fp64LowPart\": function() { return /* binding */ fp64LowPart; },\n/* harmony export */   \"fp64ify\": function() { return /* binding */ fp64ify; },\n/* harmony export */   \"fp64ifyMatrix4\": function() { return /* binding */ fp64ifyMatrix4; }\n/* harmony export */ });\nfunction fp64ify(a) {\n  let out = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  let startIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n  const hiPart = Math.fround(a);\n  const loPart = a - hiPart;\n  out[startIndex] = hiPart;\n  out[startIndex + 1] = loPart;\n  return out;\n}\nfunction fp64LowPart(a) {\n  return a - Math.fround(a);\n}\nfunction fp64ifyMatrix4(matrix) {\n  const matrixFP64 = new Float32Array(32);\n\n  for (let i = 0; i < 4; ++i) {\n    for (let j = 0; j < 4; ++j) {\n      const index = i * 4 + j;\n      fp64ify(matrix[j * 4 + i], matrixFP64, index * 2);\n    }\n  }\n\n  return matrixFP64;\n}\n//# sourceMappingURL=fp64-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64-utils.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"fp64\": function() { return /* binding */ fp64; },\n/* harmony export */   \"fp64LowPart\": function() { return /* reexport safe */ _fp64_utils__WEBPACK_IMPORTED_MODULE_0__.fp64LowPart; },\n/* harmony export */   \"fp64arithmetic\": function() { return /* binding */ fp64arithmetic; },\n/* harmony export */   \"fp64ify\": function() { return /* reexport safe */ _fp64_utils__WEBPACK_IMPORTED_MODULE_0__.fp64ify; },\n/* harmony export */   \"fp64ifyMatrix4\": function() { return /* reexport safe */ _fp64_utils__WEBPACK_IMPORTED_MODULE_0__.fp64ifyMatrix4; }\n/* harmony export */ });\n/* harmony import */ var _fp64_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./fp64-utils */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64-utils.js\");\n/* harmony import */ var _fp64_arithmetic_glsl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fp64-arithmetic.glsl */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64-arithmetic.glsl.js\");\n/* harmony import */ var _fp64_functions_glsl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fp64-functions.glsl */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64-functions.glsl.js\");\n\n\n\nconst CONST_UNIFORMS = {\n  ONE: 1.0\n};\n\n\nfunction getUniforms() {\n  return CONST_UNIFORMS;\n}\n\nconst fp64arithmetic = {\n  name: 'fp64-arithmetic',\n  vs: _fp64_arithmetic_glsl__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  fs: null,\n  getUniforms,\n  fp64ify: _fp64_utils__WEBPACK_IMPORTED_MODULE_0__.fp64ify,\n  fp64LowPart: _fp64_utils__WEBPACK_IMPORTED_MODULE_0__.fp64LowPart,\n  fp64ifyMatrix4: _fp64_utils__WEBPACK_IMPORTED_MODULE_0__.fp64ifyMatrix4\n};\nconst fp64 = {\n  name: 'fp64',\n  vs: _fp64_functions_glsl__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  fs: null,\n  dependencies: [fp64arithmetic],\n  fp64ify: _fp64_utils__WEBPACK_IMPORTED_MODULE_0__.fp64ify,\n  fp64LowPart: _fp64_utils__WEBPACK_IMPORTED_MODULE_0__.fp64LowPart,\n  fp64ifyMatrix4: _fp64_utils__WEBPACK_IMPORTED_MODULE_0__.fp64ifyMatrix4\n};\n//# sourceMappingURL=fp64.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/modules/lights/lights.glsl.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/modules/lights/lights.glsl.js ***!
  \**********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))\\n\\nstruct AmbientLight {\\n vec3 color;\\n};\\n\\nstruct PointLight {\\n vec3 color;\\n vec3 position;\\n vec3 attenuation;\\n};\\n\\nstruct DirectionalLight {\\n  vec3 color;\\n  vec3 direction;\\n};\\n\\nuniform AmbientLight lighting_uAmbientLight;\\nuniform PointLight lighting_uPointLight[MAX_LIGHTS];\\nuniform DirectionalLight lighting_uDirectionalLight[MAX_LIGHTS];\\nuniform int lighting_uPointLightCount;\\nuniform int lighting_uDirectionalLightCount;\\n\\nuniform bool lighting_uEnabled;\\n\\nfloat getPointLightAttenuation(PointLight pointLight, float distance) {\\n  return pointLight.attenuation.x\\n       + pointLight.attenuation.y * distance\\n       + pointLight.attenuation.z * distance * distance;\\n}\\n\\n#endif\\n\");\n//# sourceMappingURL=lights.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/modules/lights/lights.glsl.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/modules/lights/lights.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/modules/lights/lights.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"lights\": function() { return /* binding */ lights; }\n/* harmony export */ });\n/* harmony import */ var _lights_glsl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lights.glsl */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/lights/lights.glsl.js\");\n\nconst INITIAL_MODULE_OPTIONS = {\n  lightSources: {}\n};\n\nfunction convertColor() {\n  let {\n    color = [0, 0, 0],\n    intensity = 1.0\n  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  return color.map(component => component * intensity / 255.0);\n}\n\nfunction getLightSourceUniforms(_ref) {\n  let {\n    ambientLight,\n    pointLights = [],\n    directionalLights = []\n  } = _ref;\n  const lightSourceUniforms = {};\n\n  if (ambientLight) {\n    lightSourceUniforms['lighting_uAmbientLight.color'] = convertColor(ambientLight);\n  } else {\n    lightSourceUniforms['lighting_uAmbientLight.color'] = [0, 0, 0];\n  }\n\n  pointLights.forEach((pointLight, index) => {\n    lightSourceUniforms[\"lighting_uPointLight[\".concat(index, \"].color\")] = convertColor(pointLight);\n    lightSourceUniforms[\"lighting_uPointLight[\".concat(index, \"].position\")] = pointLight.position;\n    lightSourceUniforms[\"lighting_uPointLight[\".concat(index, \"].attenuation\")] = pointLight.attenuation || [1, 0, 0];\n  });\n  lightSourceUniforms.lighting_uPointLightCount = pointLights.length;\n  directionalLights.forEach((directionalLight, index) => {\n    lightSourceUniforms[\"lighting_uDirectionalLight[\".concat(index, \"].color\")] = convertColor(directionalLight);\n    lightSourceUniforms[\"lighting_uDirectionalLight[\".concat(index, \"].direction\")] = directionalLight.direction;\n  });\n  lightSourceUniforms.lighting_uDirectionalLightCount = directionalLights.length;\n  return lightSourceUniforms;\n}\n\nfunction getUniforms() {\n  let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_MODULE_OPTIONS;\n\n  if ('lightSources' in opts) {\n    const {\n      ambientLight,\n      pointLights,\n      directionalLights\n    } = opts.lightSources || {};\n    const hasLights = ambientLight || pointLights && pointLights.length > 0 || directionalLights && directionalLights.length > 0;\n\n    if (!hasLights) {\n      return {\n        lighting_uEnabled: false\n      };\n    }\n\n    return Object.assign({}, getLightSourceUniforms({\n      ambientLight,\n      pointLights,\n      directionalLights\n    }), {\n      lighting_uEnabled: true\n    });\n  }\n\n  if ('lights' in opts) {\n    const lightSources = {\n      pointLights: [],\n      directionalLights: []\n    };\n\n    for (const light of opts.lights || []) {\n      switch (light.type) {\n        case 'ambient':\n          lightSources.ambientLight = light;\n          break;\n\n        case 'directional':\n          lightSources.directionalLights.push(light);\n          break;\n\n        case 'point':\n          lightSources.pointLights.push(light);\n          break;\n\n        default:\n      }\n    }\n\n    return getUniforms({\n      lightSources\n    });\n  }\n\n  return {};\n}\n\nconst lights = {\n  name: 'lights',\n  vs: _lights_glsl__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  fs: _lights_glsl__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  getUniforms,\n  defines: {\n    MAX_LIGHTS: 3\n  }\n};\n//# sourceMappingURL=lights.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/modules/lights/lights.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/modules/module-injectors.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/modules/module-injectors.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"MODULE_INJECTORS_FS\": function() { return /* binding */ MODULE_INJECTORS_FS; },\n/* harmony export */   \"MODULE_INJECTORS_VS\": function() { return /* binding */ MODULE_INJECTORS_VS; }\n/* harmony export */ });\nconst MODULE_INJECTORS_VS = \"#ifdef MODULE_LOGDEPTH\\n  logdepth_adjustPosition(gl_Position);\\n#endif\\n\";\nconst MODULE_INJECTORS_FS = \"#ifdef MODULE_MATERIAL\\n  gl_FragColor = material_filterColor(gl_FragColor);\\n#endif\\n\\n#ifdef MODULE_LIGHTING\\n  gl_FragColor = lighting_filterColor(gl_FragColor);\\n#endif\\n\\n#ifdef MODULE_FOG\\n  gl_FragColor = fog_filterColor(gl_FragColor);\\n#endif\\n\\n#ifdef MODULE_PICKING\\n  gl_FragColor = picking_filterHighlightColor(gl_FragColor);\\n  gl_FragColor = picking_filterPickingColor(gl_FragColor);\\n#endif\\n\\n#ifdef MODULE_LOGDEPTH\\n  logdepth_setFragDepth();\\n#endif\\n\";\n//# sourceMappingURL=module-injectors.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/modules/module-injectors.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/modules/pbr/pbr-fragment.glsl.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/modules/pbr/pbr-fragment.glsl.js ***!
  \*************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"#if defined(USE_TEX_LOD) && !defined(FEATURE_GLSL_TEXTURE_LOD)\\n# error PBR fragment shader: Texture LOD is not available\\n#endif\\n\\n#if !defined(HAS_TANGENTS) && !defined(FEATURE_GLSL_DERIVATIVES)\\n# error PBR fragment shader: Derivatives are not available\\n#endif\\n\\n\\n#if (__VERSION__ < 300)\\n  #define SMART_FOR(INIT, WEBGL1COND, WEBGL2COND, INCR) for (INIT; WEBGL1COND; INCR)\\n#else\\n  #define SMART_FOR(INIT, WEBGL1COND, WEBGL2COND, INCR) for (INIT; WEBGL2COND; INCR)\\n#endif\\n\\nprecision highp float;\\n\\nuniform bool pbr_uUnlit;\\n\\n#ifdef USE_IBL\\nuniform samplerCube u_DiffuseEnvSampler;\\nuniform samplerCube u_SpecularEnvSampler;\\nuniform sampler2D u_brdfLUT;\\nuniform vec2 u_ScaleIBLAmbient;\\n#endif\\n\\n#ifdef HAS_BASECOLORMAP\\nuniform sampler2D u_BaseColorSampler;\\n#endif\\n#ifdef HAS_NORMALMAP\\nuniform sampler2D u_NormalSampler;\\nuniform float u_NormalScale;\\n#endif\\n#ifdef HAS_EMISSIVEMAP\\nuniform sampler2D u_EmissiveSampler;\\nuniform vec3 u_EmissiveFactor;\\n#endif\\n#ifdef HAS_METALROUGHNESSMAP\\nuniform sampler2D u_MetallicRoughnessSampler;\\n#endif\\n#ifdef HAS_OCCLUSIONMAP\\nuniform sampler2D u_OcclusionSampler;\\nuniform float u_OcclusionStrength;\\n#endif\\n\\n#ifdef ALPHA_CUTOFF\\nuniform float u_AlphaCutoff;\\n#endif\\n\\nuniform vec2 u_MetallicRoughnessValues;\\nuniform vec4 u_BaseColorFactor;\\n\\nuniform vec3 u_Camera;\\n#ifdef PBR_DEBUG\\nuniform vec4 u_ScaleDiffBaseMR;\\nuniform vec4 u_ScaleFGDSpec;\\n#endif\\n\\nvarying vec3 pbr_vPosition;\\n\\nvarying vec2 pbr_vUV;\\n\\n#ifdef HAS_NORMALS\\n#ifdef HAS_TANGENTS\\nvarying mat3 pbr_vTBN;\\n#else\\nvarying vec3 pbr_vNormal;\\n#endif\\n#endif\\n\\n\\nstruct PBRInfo\\n{\\n  float NdotL;\\n  float NdotV;\\n  float NdotH;\\n  float LdotH;\\n  float VdotH;\\n  float perceptualRoughness;\\n  float metalness;\\n  vec3 reflectance0;\\n  vec3 reflectance90;\\n  float alphaRoughness;\\n  vec3 diffuseColor;\\n  vec3 specularColor;\\n  vec3 n;\\n  vec3 v;\\n};\\n\\nconst float M_PI = 3.141592653589793;\\nconst float c_MinRoughness = 0.04;\\n\\nvec4 SRGBtoLINEAR(vec4 srgbIn)\\n{\\n#ifdef MANUAL_SRGB\\n#ifdef SRGB_FAST_APPROXIMATION\\n  vec3 linOut = pow(srgbIn.xyz,vec3(2.2));\\n#else\\n  vec3 bLess = step(vec3(0.04045),srgbIn.xyz);\\n  vec3 linOut = mix( srgbIn.xyz/vec3(12.92), pow((srgbIn.xyz+vec3(0.055))/vec3(1.055),vec3(2.4)), bLess );\\n#endif\\n  return vec4(linOut,srgbIn.w);;\\n#else\\n  return srgbIn;\\n#endif\\n}\\n\\nvec3 getNormal()\\n{\\n#ifndef HAS_TANGENTS\\n  vec3 pos_dx = dFdx(pbr_vPosition);\\n  vec3 pos_dy = dFdy(pbr_vPosition);\\n  vec3 tex_dx = dFdx(vec3(pbr_vUV, 0.0));\\n  vec3 tex_dy = dFdy(vec3(pbr_vUV, 0.0));\\n  vec3 t = (tex_dy.t * pos_dx - tex_dx.t * pos_dy) / (tex_dx.s * tex_dy.t - tex_dy.s * tex_dx.t);\\n\\n#ifdef HAS_NORMALS\\n  vec3 ng = normalize(pbr_vNormal);\\n#else\\n  vec3 ng = cross(pos_dx, pos_dy);\\n#endif\\n\\n  t = normalize(t - ng * dot(ng, t));\\n  vec3 b = normalize(cross(ng, t));\\n  mat3 tbn = mat3(t, b, ng);\\n#else\\n  mat3 tbn = pbr_vTBN;\\n#endif\\n\\n#ifdef HAS_NORMALMAP\\n  vec3 n = texture2D(u_NormalSampler, pbr_vUV).rgb;\\n  n = normalize(tbn * ((2.0 * n - 1.0) * vec3(u_NormalScale, u_NormalScale, 1.0)));\\n#else\\n  vec3 n = normalize(tbn[2].xyz);\\n#endif\\n\\n  return n;\\n}\\n\\n\\n#ifdef USE_IBL\\nvec3 getIBLContribution(PBRInfo pbrInputs, vec3 n, vec3 reflection)\\n{\\n  float mipCount = 9.0;\\n  float lod = (pbrInputs.perceptualRoughness * mipCount);\\n  vec3 brdf = SRGBtoLINEAR(texture2D(u_brdfLUT,\\n    vec2(pbrInputs.NdotV, 1.0 - pbrInputs.perceptualRoughness))).rgb;\\n  vec3 diffuseLight = SRGBtoLINEAR(textureCube(u_DiffuseEnvSampler, n)).rgb;\\n\\n#ifdef USE_TEX_LOD\\n  vec3 specularLight = SRGBtoLINEAR(textureCubeLod(u_SpecularEnvSampler, reflection, lod)).rgb;\\n#else\\n  vec3 specularLight = SRGBtoLINEAR(textureCube(u_SpecularEnvSampler, reflection)).rgb;\\n#endif\\n\\n  vec3 diffuse = diffuseLight * pbrInputs.diffuseColor;\\n  vec3 specular = specularLight * (pbrInputs.specularColor * brdf.x + brdf.y);\\n  diffuse *= u_ScaleIBLAmbient.x;\\n  specular *= u_ScaleIBLAmbient.y;\\n\\n  return diffuse + specular;\\n}\\n#endif\\n\\n\\nvec3 diffuse(PBRInfo pbrInputs)\\n{\\n  return pbrInputs.diffuseColor / M_PI;\\n}\\n\\nvec3 specularReflection(PBRInfo pbrInputs)\\n{\\n  return pbrInputs.reflectance0 +\\n    (pbrInputs.reflectance90 - pbrInputs.reflectance0) *\\n    pow(clamp(1.0 - pbrInputs.VdotH, 0.0, 1.0), 5.0);\\n}\\n\\n\\n\\nfloat geometricOcclusion(PBRInfo pbrInputs)\\n{\\n  float NdotL = pbrInputs.NdotL;\\n  float NdotV = pbrInputs.NdotV;\\n  float r = pbrInputs.alphaRoughness;\\n\\n  float attenuationL = 2.0 * NdotL / (NdotL + sqrt(r * r + (1.0 - r * r) * (NdotL * NdotL)));\\n  float attenuationV = 2.0 * NdotV / (NdotV + sqrt(r * r + (1.0 - r * r) * (NdotV * NdotV)));\\n  return attenuationL * attenuationV;\\n}\\n\\n\\n\\n\\n\\nfloat microfacetDistribution(PBRInfo pbrInputs)\\n{\\n  float roughnessSq = pbrInputs.alphaRoughness * pbrInputs.alphaRoughness;\\n  float f = (pbrInputs.NdotH * roughnessSq - pbrInputs.NdotH) * pbrInputs.NdotH + 1.0;\\n  return roughnessSq / (M_PI * f * f);\\n}\\n\\nvoid PBRInfo_setAmbientLight(inout PBRInfo pbrInputs) {\\n  pbrInputs.NdotL = 1.0;\\n  pbrInputs.NdotH = 0.0;\\n  pbrInputs.LdotH = 0.0;\\n  pbrInputs.VdotH = 1.0;\\n}\\n\\nvoid PBRInfo_setDirectionalLight(inout PBRInfo pbrInputs, vec3 lightDirection) {\\n  vec3 n = pbrInputs.n;\\n  vec3 v = pbrInputs.v;\\n  vec3 l = normalize(lightDirection);\\n  vec3 h = normalize(l+v);\\n\\n  pbrInputs.NdotL = clamp(dot(n, l), 0.001, 1.0);\\n  pbrInputs.NdotH = clamp(dot(n, h), 0.0, 1.0);\\n  pbrInputs.LdotH = clamp(dot(l, h), 0.0, 1.0);\\n  pbrInputs.VdotH = clamp(dot(v, h), 0.0, 1.0);\\n}\\n\\nvoid PBRInfo_setPointLight(inout PBRInfo pbrInputs, PointLight pointLight) {\\n  vec3 light_direction = normalize(pointLight.position - pbr_vPosition);\\n  PBRInfo_setDirectionalLight(pbrInputs, light_direction);\\n}\\n\\nvec3 calculateFinalColor(PBRInfo pbrInputs, vec3 lightColor) {\\n  vec3 F = specularReflection(pbrInputs);\\n  float G = geometricOcclusion(pbrInputs);\\n  float D = microfacetDistribution(pbrInputs);\\n  vec3 diffuseContrib = (1.0 - F) * diffuse(pbrInputs);\\n  vec3 specContrib = F * G * D / (4.0 * pbrInputs.NdotL * pbrInputs.NdotV);\\n  return pbrInputs.NdotL * lightColor * (diffuseContrib + specContrib);\\n}\\n\\nvec4 pbr_filterColor(vec4 colorUnused)\\n{\\n#ifdef HAS_BASECOLORMAP\\n  vec4 baseColor = SRGBtoLINEAR(texture2D(u_BaseColorSampler, pbr_vUV)) * u_BaseColorFactor;\\n#else\\n  vec4 baseColor = u_BaseColorFactor;\\n#endif\\n\\n#ifdef ALPHA_CUTOFF\\n  if (baseColor.a < u_AlphaCutoff) {\\n    discard;\\n  }\\n#endif\\n\\n  vec3 color = vec3(0, 0, 0);\\n\\n  if(pbr_uUnlit){\\n    color.rgb = baseColor.rgb;\\n  }\\n  else{\\n\\n\\n    float perceptualRoughness = u_MetallicRoughnessValues.y;\\n    float metallic = u_MetallicRoughnessValues.x;\\n#ifdef HAS_METALROUGHNESSMAP\\n\\n    vec4 mrSample = texture2D(u_MetallicRoughnessSampler, pbr_vUV);\\n    perceptualRoughness = mrSample.g * perceptualRoughness;\\n    metallic = mrSample.b * metallic;\\n#endif\\n    perceptualRoughness = clamp(perceptualRoughness, c_MinRoughness, 1.0);\\n    metallic = clamp(metallic, 0.0, 1.0);\\n\\n    float alphaRoughness = perceptualRoughness * perceptualRoughness;\\n\\n    vec3 f0 = vec3(0.04);\\n    vec3 diffuseColor = baseColor.rgb * (vec3(1.0) - f0);\\n    diffuseColor *= 1.0 - metallic;\\n    vec3 specularColor = mix(f0, baseColor.rgb, metallic);\\n    float reflectance = max(max(specularColor.r, specularColor.g), specularColor.b);\\n\\n\\n\\n    float reflectance90 = clamp(reflectance * 25.0, 0.0, 1.0);\\n    vec3 specularEnvironmentR0 = specularColor.rgb;\\n    vec3 specularEnvironmentR90 = vec3(1.0, 1.0, 1.0) * reflectance90;\\n\\n    vec3 n = getNormal();\\n    vec3 v = normalize(u_Camera - pbr_vPosition);\\n\\n    float NdotV = clamp(abs(dot(n, v)), 0.001, 1.0);\\n    vec3 reflection = -normalize(reflect(v, n));\\n\\n    PBRInfo pbrInputs = PBRInfo(\\n      0.0,\\n      NdotV,\\n      0.0,\\n      0.0,\\n      0.0,\\n      perceptualRoughness,\\n      metallic,\\n      specularEnvironmentR0,\\n      specularEnvironmentR90,\\n      alphaRoughness,\\n      diffuseColor,\\n      specularColor,\\n      n,\\n      v\\n    );\\n\\n#ifdef USE_LIGHTS\\n    PBRInfo_setAmbientLight(pbrInputs);\\n    color += calculateFinalColor(pbrInputs, lighting_uAmbientLight.color);\\n    SMART_FOR(int i = 0, i < MAX_LIGHTS, i < lighting_uDirectionalLightCount, i++) {\\n      if (i < lighting_uDirectionalLightCount) {\\n        PBRInfo_setDirectionalLight(pbrInputs, lighting_uDirectionalLight[i].direction);\\n        color += calculateFinalColor(pbrInputs, lighting_uDirectionalLight[i].color);\\n      }\\n    }\\n    SMART_FOR(int i = 0, i < MAX_LIGHTS, i < lighting_uPointLightCount, i++) {\\n      if (i < lighting_uPointLightCount) {\\n        PBRInfo_setPointLight(pbrInputs, lighting_uPointLight[i]);\\n        float attenuation = getPointLightAttenuation(lighting_uPointLight[i], distance(lighting_uPointLight[i].position, pbr_vPosition));\\n        color += calculateFinalColor(pbrInputs, lighting_uPointLight[i].color / attenuation);\\n      }\\n    }\\n#endif\\n#ifdef USE_IBL\\n    color += getIBLContribution(pbrInputs, n, reflection);\\n#endif\\n#ifdef HAS_OCCLUSIONMAP\\n    float ao = texture2D(u_OcclusionSampler, pbr_vUV).r;\\n    color = mix(color, color * ao, u_OcclusionStrength);\\n#endif\\n\\n#ifdef HAS_EMISSIVEMAP\\n    vec3 emissive = SRGBtoLINEAR(texture2D(u_EmissiveSampler, pbr_vUV)).rgb * u_EmissiveFactor;\\n    color += emissive;\\n#endif\\n\\n#ifdef PBR_DEBUG\\n\\n\\n\\n\\n\\n    color = mix(color, baseColor.rgb, u_ScaleDiffBaseMR.y);\\n    color = mix(color, vec3(metallic), u_ScaleDiffBaseMR.z);\\n    color = mix(color, vec3(perceptualRoughness), u_ScaleDiffBaseMR.w);\\n#endif\\n\\n  }\\n\\n  return vec4(pow(color,vec3(1.0/2.2)), baseColor.a);\\n}\\n\");\n//# sourceMappingURL=pbr-fragment.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/modules/pbr/pbr-fragment.glsl.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/modules/pbr/pbr-vertex.glsl.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/modules/pbr/pbr-vertex.glsl.js ***!
  \***********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"uniform mat4 u_MVPMatrix;\\nuniform mat4 u_ModelMatrix;\\nuniform mat4 u_NormalMatrix;\\n\\nvarying vec3 pbr_vPosition;\\nvarying vec2 pbr_vUV;\\n\\n#ifdef HAS_NORMALS\\n# ifdef HAS_TANGENTS\\nvarying mat3 pbr_vTBN;\\n# else\\nvarying vec3 pbr_vNormal;\\n# endif\\n#endif\\n\\nvoid pbr_setPositionNormalTangentUV(vec4 position, vec4 normal, vec4 tangent, vec2 uv)\\n{\\n  vec4 pos = u_ModelMatrix * position;\\n  pbr_vPosition = vec3(pos.xyz) / pos.w;\\n\\n#ifdef HAS_NORMALS\\n#ifdef HAS_TANGENTS\\n  vec3 normalW = normalize(vec3(u_NormalMatrix * vec4(normal.xyz, 0.0)));\\n  vec3 tangentW = normalize(vec3(u_ModelMatrix * vec4(tangent.xyz, 0.0)));\\n  vec3 bitangentW = cross(normalW, tangentW) * tangent.w;\\n  pbr_vTBN = mat3(tangentW, bitangentW, normalW);\\n#else\\n  pbr_vNormal = normalize(vec3(u_ModelMatrix * vec4(normal.xyz, 0.0)));\\n#endif\\n#endif\\n\\n#ifdef HAS_UV\\n  pbr_vUV = uv;\\n#else\\n  pbr_vUV = vec2(0.,0.);\\n#endif\\n}\\n\");\n//# sourceMappingURL=pbr-vertex.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/modules/pbr/pbr-vertex.glsl.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/modules/pbr/pbr.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/modules/pbr/pbr.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"pbr\": function() { return /* binding */ pbr; }\n/* harmony export */ });\n/* harmony import */ var _lights_lights__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lights/lights */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/lights/lights.js\");\n/* harmony import */ var _pbr_vertex_glsl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pbr-vertex.glsl */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/pbr/pbr-vertex.glsl.js\");\n/* harmony import */ var _pbr_fragment_glsl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pbr-fragment.glsl */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/pbr/pbr-fragment.glsl.js\");\n\n\n\nconst pbr = {\n  name: 'pbr',\n  vs: _pbr_vertex_glsl__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  fs: _pbr_fragment_glsl__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  defines: {\n    LIGHTING_FRAGMENT: 1\n  },\n  dependencies: [_lights_lights__WEBPACK_IMPORTED_MODULE_2__.lights]\n};\n//# sourceMappingURL=pbr.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/modules/pbr/pbr.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.glsl.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.glsl.js ***!
  \**************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"\\nuniform float lighting_uAmbient;\\nuniform float lighting_uDiffuse;\\nuniform float lighting_uShininess;\\nuniform vec3  lighting_uSpecularColor;\\n\\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_direction, vec3 normal_worldspace, vec3 color) {\\n    vec3 halfway_direction = normalize(light_direction + view_direction);\\n    float lambertian = dot(light_direction, normal_worldspace);\\n    float specular = 0.0;\\n    if (lambertian > 0.0) {\\n      float specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0);\\n      specular = pow(specular_angle, lighting_uShininess);\\n    }\\n    lambertian = max(lambertian, 0.0);\\n    return (lambertian * lighting_uDiffuse * surfaceColor + specular * lighting_uSpecularColor) * color;\\n}\\n\\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\\n  vec3 lightColor = surfaceColor;\\n\\n  if (lighting_uEnabled) {\\n    vec3 view_direction = normalize(cameraPosition - position_worldspace);\\n    lightColor = lighting_uAmbient * surfaceColor * lighting_uAmbientLight.color;\\n\\n    for (int i = 0; i < MAX_LIGHTS; i++) {\\n      if (i >= lighting_uPointLightCount) {\\n        break;\\n      }\\n      PointLight pointLight = lighting_uPointLight[i];\\n      vec3 light_position_worldspace = pointLight.position;\\n      vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\\n      lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\\n    }\\n\\n    for (int i = 0; i < MAX_LIGHTS; i++) {\\n      if (i >= lighting_uDirectionalLightCount) {\\n        break;\\n      }\\n      DirectionalLight directionalLight = lighting_uDirectionalLight[i];\\n      lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\\n    }\\n  }\\n  return lightColor;\\n}\\n\\nvec3 lighting_getSpecularLightColor(vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\\n  vec3 lightColor = vec3(0, 0, 0);\\n  vec3 surfaceColor = vec3(0, 0, 0);\\n\\n  if (lighting_uEnabled) {\\n    vec3 view_direction = normalize(cameraPosition - position_worldspace);\\n\\n    for (int i = 0; i < MAX_LIGHTS; i++) {\\n      if (i >= lighting_uPointLightCount) {\\n        break;\\n      }\\n      PointLight pointLight = lighting_uPointLight[i];\\n      vec3 light_position_worldspace = pointLight.position;\\n      vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\\n      lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\\n    }\\n\\n    for (int i = 0; i < MAX_LIGHTS; i++) {\\n      if (i >= lighting_uDirectionalLightCount) {\\n        break;\\n      }\\n      DirectionalLight directionalLight = lighting_uDirectionalLight[i];\\n      lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\\n    }\\n  }\\n  return lightColor;\\n}\\n\");\n//# sourceMappingURL=phong-lighting.glsl.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.glsl.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.js ***!
  \*********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gouraudLighting\": function() { return /* binding */ gouraudLighting; },\n/* harmony export */   \"phongLighting\": function() { return /* binding */ phongLighting; }\n/* harmony export */ });\n/* harmony import */ var _lights_lights__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lights/lights */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/lights/lights.js\");\n/* harmony import */ var _phong_lighting_glsl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./phong-lighting.glsl */ \"./node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.glsl.js\");\n\n\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getMaterialUniforms(material) {\n  const {\n    ambient = 0.35,\n    diffuse = 0.6,\n    shininess = 32,\n    specularColor = [30, 30, 30]\n  } = material;\n  return {\n    lighting_uAmbient: ambient,\n    lighting_uDiffuse: diffuse,\n    lighting_uShininess: shininess,\n    lighting_uSpecularColor: specularColor.map(x => x / 255)\n  };\n}\n\nfunction getUniforms() {\n  let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_MODULE_OPTIONS;\n\n  if (!('material' in opts)) {\n    return {};\n  }\n\n  const {\n    material\n  } = opts;\n\n  if (!material) {\n    return {\n      lighting_uEnabled: false\n    };\n  }\n\n  return getMaterialUniforms(material);\n}\n\nconst gouraudLighting = {\n  name: 'gouraud-lighting',\n  dependencies: [_lights_lights__WEBPACK_IMPORTED_MODULE_0__.lights],\n  vs: _phong_lighting_glsl__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  defines: {\n    LIGHTING_VERTEX: 1\n  },\n  getUniforms\n};\nconst phongLighting = {\n  name: 'phong-lighting',\n  dependencies: [_lights_lights__WEBPACK_IMPORTED_MODULE_0__.lights],\n  fs: _phong_lighting_glsl__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  defines: {\n    LIGHTING_FRAGMENT: 1\n  },\n  getUniforms\n};\n//# sourceMappingURL=phong-lighting.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/modules/picking/picking.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/modules/picking/picking.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"picking\": function() { return /* binding */ picking; }\n/* harmony export */ });\nconst DEFAULT_HIGHLIGHT_COLOR = new Uint8Array([0, 255, 255, 255]);\nconst DEFAULT_MODULE_OPTIONS = {\n  pickingSelectedColor: null,\n  pickingHighlightColor: DEFAULT_HIGHLIGHT_COLOR,\n  pickingActive: false,\n  pickingAttribute: false\n};\n\nfunction getUniforms() {\n  let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_MODULE_OPTIONS;\n  const uniforms = {};\n\n  if (opts.pickingSelectedColor !== undefined) {\n    if (!opts.pickingSelectedColor) {\n      uniforms.picking_uSelectedColorValid = 0;\n    } else {\n      const selectedColor = opts.pickingSelectedColor.slice(0, 3);\n      uniforms.picking_uSelectedColorValid = 1;\n      uniforms.picking_uSelectedColor = selectedColor;\n    }\n  }\n\n  if (opts.pickingHighlightColor) {\n    const color = Array.from(opts.pickingHighlightColor, x => x / 255);\n\n    if (!Number.isFinite(color[3])) {\n      color[3] = 1;\n    }\n\n    uniforms.picking_uHighlightColor = color;\n  }\n\n  if (opts.pickingActive !== undefined) {\n    uniforms.picking_uActive = Boolean(opts.pickingActive);\n    uniforms.picking_uAttribute = Boolean(opts.pickingAttribute);\n  }\n\n  return uniforms;\n}\n\nconst vs = \"uniform bool picking_uActive;\\nuniform bool picking_uAttribute;\\nuniform vec3 picking_uSelectedColor;\\nuniform bool picking_uSelectedColorValid;\\n\\nout vec4 picking_vRGBcolor_Avalid;\\n\\nconst float COLOR_SCALE = 1. / 255.;\\n\\nbool picking_isColorValid(vec3 color) {\\n  return dot(color, vec3(1.0)) > 0.001;\\n}\\n\\nbool isVertexPicked(vec3 vertexColor) {\\n  return\\n    picking_uSelectedColorValid &&\\n    !picking_isColorValid(abs(vertexColor - picking_uSelectedColor));\\n}\\n\\nvoid picking_setPickingColor(vec3 pickingColor) {\\n  if (picking_uActive) {\\n    picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));\\n\\n    if (!picking_uAttribute) {\\n      picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE;\\n    }\\n  } else {\\n    picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor));\\n  }\\n}\\n\\nvoid picking_setPickingAttribute(float value) {\\n  if (picking_uAttribute) {\\n    picking_vRGBcolor_Avalid.r = value;\\n  }\\n}\\nvoid picking_setPickingAttribute(vec2 value) {\\n  if (picking_uAttribute) {\\n    picking_vRGBcolor_Avalid.rg = value;\\n  }\\n}\\nvoid picking_setPickingAttribute(vec3 value) {\\n  if (picking_uAttribute) {\\n    picking_vRGBcolor_Avalid.rgb = value;\\n  }\\n}\\n\";\nconst fs = \"uniform bool picking_uActive;\\nuniform vec3 picking_uSelectedColor;\\nuniform vec4 picking_uHighlightColor;\\n\\nin vec4 picking_vRGBcolor_Avalid;\\nvec4 picking_filterHighlightColor(vec4 color) {\\n  if (picking_uActive) {\\n    return color;\\n  }\\n  bool selected = bool(picking_vRGBcolor_Avalid.a);\\n\\n  if (selected) {\\n    float highLightAlpha = picking_uHighlightColor.a;\\n    float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);\\n    float highLightRatio = highLightAlpha / blendedAlpha;\\n\\n    vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio);\\n    return vec4(blendedRGB, blendedAlpha);\\n  } else {\\n    return color;\\n  }\\n}\\nvec4 picking_filterPickingColor(vec4 color) {\\n  if (picking_uActive) {\\n    if (picking_vRGBcolor_Avalid.a == 0.0) {\\n      discard;\\n    }\\n    return picking_vRGBcolor_Avalid;\\n  }\\n  return color;\\n}\\nvec4 picking_filterColor(vec4 color) {\\n  vec4 highightColor = picking_filterHighlightColor(color);\\n  return picking_filterPickingColor(highightColor);\\n}\\n\\n\";\nconst picking = {\n  name: 'picking',\n  vs,\n  fs,\n  getUniforms\n};\n//# sourceMappingURL=picking.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/modules/picking/picking.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/modules/project/project.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/modules/project/project.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"project\": function() { return /* binding */ project; }\n/* harmony export */ });\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/classes/matrix4.js\");\n\nconst IDENTITY_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\nconst DEFAULT_MODULE_OPTIONS = {\n  modelMatrix: IDENTITY_MATRIX,\n  viewMatrix: IDENTITY_MATRIX,\n  projectionMatrix: IDENTITY_MATRIX,\n  cameraPositionWorld: [0, 0, 0]\n};\n\nfunction getUniforms() {\n  let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_MODULE_OPTIONS;\n  let prevUniforms = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const uniforms = {};\n\n  if (opts.modelMatrix !== undefined) {\n    uniforms.modelMatrix = opts.modelMatrix;\n  }\n\n  if (opts.viewMatrix !== undefined) {\n    uniforms.viewMatrix = opts.viewMatrix;\n  }\n\n  if (opts.projectionMatrix !== undefined) {\n    uniforms.projectionMatrix = opts.projectionMatrix;\n  }\n\n  if (opts.cameraPositionWorld !== undefined) {\n    uniforms.cameraPositionWorld = opts.cameraPositionWorld;\n  }\n\n  if (opts.projectionMatrix !== undefined || opts.viewMatrix !== undefined) {\n    uniforms.viewProjectionMatrix = new _math_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"default\"](opts.projectionMatrix).multiplyRight(opts.viewMatrix);\n  }\n\n  return uniforms;\n}\n\nconst common = \"varying vec4 project_vPositionWorld;\\nvarying vec3 project_vNormalWorld;\\n\\nvec4 project_getPosition_World() {\\n  return project_vPositionWorld;\\n}\\n\\nvec3 project_getNormal_World() {\\n  return project_vNormalWorld;\\n}\\n\";\nconst vs = \"\".concat(common, \"\\nuniform mat4 modelMatrix;\\nuniform mat4 viewMatrix;\\nuniform mat4 projectionMatrix;\\nuniform mat4 viewProjectionMatrix;\\nuniform vec3 cameraPositionWorld;\\n\\nstruct World {\\n  vec3 position;\\n  vec3 normal;\\n};\\n\\nWorld world;\\n\\nvoid project_setPosition(vec4 position) {\\n  project_vPositionWorld = position;\\n}\\n\\nvoid project_setNormal(vec3 normal) {\\n  project_vNormalWorld = normal;\\n}\\n\\nvoid project_setPositionAndNormal_World(vec3 position, vec3 normal) {\\n  world.position = position;\\n  world.normal = normal;\\n}\\n\\nvoid project_setPositionAndNormal_Model(vec3 position, vec3 normal) {\\n  world.position = (modelMatrix * vec4(position, 1.)).xyz;\\n  world.normal = mat3(modelMatrix) * normal;\\n}\\n\\nvec4 project_model_to_clipspace(vec4 position) {\\n  return viewProjectionMatrix * modelMatrix * position;\\n}\\n\\nvec4 project_model_to_clipspace(vec3 position) {\\n  return viewProjectionMatrix * modelMatrix * vec4(position, 1.);\\n}\\n\\nvec4 project_world_to_clipspace(vec3 position) {\\n  return viewProjectionMatrix * vec4(position, 1.);\\n}\\n\\nvec4 project_view_to_clipspace(vec3 position) {\\n  return projectionMatrix * vec4(position, 1.);\\n}\\n\\nvec4 project_to_clipspace(vec3 position) {\\n  return viewProjectionMatrix * vec4(position, 1.);\\n}\\n\");\nconst fs = \"\\n\".concat(common);\nconst project = {\n  name: 'project',\n  getUniforms,\n  vs,\n  fs\n};\n//# sourceMappingURL=project.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/modules/project/project.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/modules/transform/transform.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/modules/transform/transform.js ***!
  \***********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"transform\": function() { return /* binding */ transform; }\n/* harmony export */ });\nconst vs = \"attribute float transform_elementID;\\nvec2 transform_getPixelSizeHalf(vec2 size) {\\n  return vec2(1.) / (2. * size);\\n}\\n\\nvec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) {\\n  float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]);\\n  float xIndex = transform_elementID - (yIndex * texSize[0]);\\n  return vec2(xIndex, yIndex);\\n}\\nvec2 transform_getTexCoord(vec2 size) {\\n  vec2 pixelSizeHalf = transform_getPixelSizeHalf(size);\\n  vec2 indices = transform_getPixelIndices(size, pixelSizeHalf);\\n  vec2 coord = indices / size + pixelSizeHalf;\\n  return coord;\\n}\\nvec2 transform_getPos(vec2 size) {\\n  vec2 texCoord = transform_getTexCoord(size);\\n  vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.);\\n  return pos;\\n}\\nvec4 transform_getInput(sampler2D texSampler, vec2 size) {\\n  vec2 texCoord = transform_getTexCoord(size);\\n  vec4 textureColor = texture2D(texSampler, texCoord);\\n  return textureColor;\\n}\\n\";\nconst transform = {\n  name: 'transform',\n  vs,\n  fs: null\n};\n//# sourceMappingURL=transform.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/modules/transform/transform.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/utils/assert.js":
/*!********************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/utils/assert.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ assert; }\n/* harmony export */ });\nfunction assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'shadertools: assertion failed.');\n  }\n}\n//# sourceMappingURL=assert.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/utils/assert.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/utils/is-old-ie.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/utils/is-old-ie.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ isOldIE; }\n/* harmony export */ });\nfunction isOldIE() {\n  let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  const navigator = typeof window !== 'undefined' ? window.navigator || {} : {};\n  const userAgent = opts.userAgent || navigator.userAgent || '';\n  const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n  const isTrident = userAgent.indexOf('Trident/') !== -1;\n  return isMSIE || isTrident;\n}\n//# sourceMappingURL=is-old-ie.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/utils/is-old-ie.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/utils/shader-utils.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/utils/shader-utils.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"convertToVec4\": function() { return /* binding */ convertToVec4; },\n/* harmony export */   \"getPassthroughFS\": function() { return /* binding */ getPassthroughFS; },\n/* harmony export */   \"getQualifierDetails\": function() { return /* binding */ getQualifierDetails; },\n/* harmony export */   \"typeToChannelCount\": function() { return /* binding */ typeToChannelCount; },\n/* harmony export */   \"typeToChannelSuffix\": function() { return /* binding */ typeToChannelSuffix; }\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ \"./node_modules/@luma.gl/shadertools/dist/esm/utils/assert.js\");\n\nconst FS100 = \"void main() {gl_FragColor = vec4(0);}\";\nconst FS_GLES = \"out vec4 transform_output;\\nvoid main() {\\n  transform_output = vec4(0);\\n}\";\nconst FS300 = \"#version 300 es\\n\".concat(FS_GLES);\nfunction getQualifierDetails(line, qualifiers) {\n  qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];\n  const words = line.replace(/^\\s+/, '').split(/\\s+/);\n  const [qualifier, type, definition] = words;\n\n  if (!qualifiers.includes(qualifier) || !type || !definition) {\n    return null;\n  }\n\n  const name = definition.split(';')[0];\n  return {\n    qualifier,\n    type,\n    name\n  };\n}\nfunction getPassthroughFS() {\n  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  const {\n    version = 100,\n    input,\n    inputType,\n    output\n  } = options;\n\n  if (!input) {\n    if (version === 300) {\n      return FS300;\n    } else if (version > 300) {\n      return \"#version \".concat(version, \"\\n\").concat(FS_GLES);\n    }\n\n    return FS100;\n  }\n\n  const outputValue = convertToVec4(input, inputType);\n\n  if (version >= 300) {\n    return \"#version \".concat(version, \" \").concat(version === 300 ? 'es' : '', \"\\nin \").concat(inputType, \" \").concat(input, \";\\nout vec4 \").concat(output, \";\\nvoid main() {\\n  \").concat(output, \" = \").concat(outputValue, \";\\n}\");\n  }\n\n  return \"varying \".concat(inputType, \" \").concat(input, \";\\nvoid main() {\\n  gl_FragColor = \").concat(outputValue, \";\\n}\");\n}\nfunction typeToChannelSuffix(type) {\n  switch (type) {\n    case 'float':\n      return 'x';\n\n    case 'vec2':\n      return 'xy';\n\n    case 'vec3':\n      return 'xyz';\n\n    case 'vec4':\n      return 'xyzw';\n\n    default:\n      (0,_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(false);\n      return null;\n  }\n}\nfunction typeToChannelCount(type) {\n  switch (type) {\n    case 'float':\n      return 1;\n\n    case 'vec2':\n      return 2;\n\n    case 'vec3':\n      return 3;\n\n    case 'vec4':\n      return 4;\n\n    default:\n      (0,_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(false);\n      return null;\n  }\n}\nfunction convertToVec4(variable, type) {\n  switch (type) {\n    case 'float':\n      return \"vec4(\".concat(variable, \", 0.0, 0.0, 1.0)\");\n\n    case 'vec2':\n      return \"vec4(\".concat(variable, \", 0.0, 1.0)\");\n\n    case 'vec3':\n      return \"vec4(\".concat(variable, \", 1.0)\");\n\n    case 'vec4':\n      return variable;\n\n    default:\n      (0,_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(false);\n      return null;\n  }\n}\n//# sourceMappingURL=shader-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/utils/shader-utils.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/shadertools/dist/esm/utils/webgl-info.js":
/*!************************************************************************!*\
  !*** ./node_modules/@luma.gl/shadertools/dist/esm/utils/webgl-info.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FEATURES\": function() { return /* binding */ FEATURES; },\n/* harmony export */   \"canCompileGLGSExtension\": function() { return /* binding */ canCompileGLGSExtension; },\n/* harmony export */   \"getContextInfo\": function() { return /* binding */ getContextInfo; },\n/* harmony export */   \"hasFeatures\": function() { return /* binding */ hasFeatures; }\n/* harmony export */ });\n/* harmony import */ var _is_old_ie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-old-ie */ \"./node_modules/@luma.gl/shadertools/dist/esm/utils/is-old-ie.js\");\n/* harmony import */ var _assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./assert */ \"./node_modules/@luma.gl/shadertools/dist/esm/utils/assert.js\");\n\n\nconst GL_VENDOR = 0x1f00;\nconst GL_RENDERER = 0x1f01;\nconst GL_VERSION = 0x1f02;\nconst GL_SHADING_LANGUAGE_VERSION = 0x8b8c;\nconst WEBGL_FEATURES = {\n  GLSL_FRAG_DATA: ['WEBGL_draw_buffers', true],\n  GLSL_FRAG_DEPTH: ['EXT_frag_depth', true],\n  GLSL_DERIVATIVES: ['OES_standard_derivatives', true],\n  GLSL_TEXTURE_LOD: ['EXT_shader_texture_lod', true]\n};\nconst FEATURES = {};\nObject.keys(WEBGL_FEATURES).forEach(key => {\n  FEATURES[key] = key;\n});\n\n\nfunction isWebGL2(gl) {\n  if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n    return true;\n  }\n\n  return Boolean(gl && gl._version === 2);\n}\n\nfunction getContextInfo(gl) {\n  const info = gl.getExtension('WEBGL_debug_renderer_info');\n  const vendor = gl.getParameter(info && info.UNMASKED_VENDOR_WEBGL || GL_VENDOR);\n  const renderer = gl.getParameter(info && info.UNMASKED_RENDERER_WEBGL || GL_RENDERER);\n  const gpuVendor = identifyGPUVendor(vendor, renderer);\n  const gpuInfo = {\n    gpuVendor,\n    vendor,\n    renderer,\n    version: gl.getParameter(GL_VERSION),\n    shadingLanguageVersion: gl.getParameter(GL_SHADING_LANGUAGE_VERSION)\n  };\n  return gpuInfo;\n}\n\nfunction identifyGPUVendor(vendor, renderer) {\n  if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {\n    return 'NVIDIA';\n  }\n\n  if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {\n    return 'INTEL';\n  }\n\n  if (vendor.match(/AMD/i) || renderer.match(/AMD/i) || vendor.match(/ATI/i) || renderer.match(/ATI/i)) {\n    return 'AMD';\n  }\n\n  return 'UNKNOWN GPU';\n}\n\nconst compiledGlslExtensions = {};\nfunction canCompileGLGSExtension(gl, cap) {\n  let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  const feature = WEBGL_FEATURES[cap];\n  (0,_assert__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(feature, cap);\n\n  if (!(0,_is_old_ie__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(opts)) {\n    return true;\n  }\n\n  if (cap in compiledGlslExtensions) {\n    return compiledGlslExtensions[cap];\n  }\n\n  const extensionName = feature[0];\n  const behavior = opts.behavior || 'enable';\n  const source = \"#extension GL_\".concat(extensionName, \" : \").concat(behavior, \"\\nvoid main(void) {}\");\n  const shader = gl.createShader(35633);\n  gl.shaderSource(shader, source);\n  gl.compileShader(shader);\n  const canCompile = gl.getShaderParameter(shader, 35713);\n  gl.deleteShader(shader);\n  compiledGlslExtensions[cap] = canCompile;\n  return canCompile;\n}\n\nfunction getFeature(gl, cap) {\n  const feature = WEBGL_FEATURES[cap];\n  (0,_assert__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(feature, cap);\n  const extensionName = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n  const value = typeof extensionName === 'string' ? Boolean(gl.getExtension(extensionName)) : extensionName;\n  (0,_assert__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value === false || value === true);\n  return value;\n}\n\nfunction hasFeatures(gl, features) {\n  features = Array.isArray(features) ? features : [features];\n  return features.every(feature => getFeature(gl, feature));\n}\n//# sourceMappingURL=webgl-info.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/shadertools/dist/esm/utils/webgl-info.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/accessor.js":
/*!******************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/accessor.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DEFAULT_ACCESSOR_VALUES\": function() { return /* binding */ DEFAULT_ACCESSOR_VALUES; },\n/* harmony export */   \"default\": function() { return /* binding */ Accessor; }\n/* harmony export */ });\n/* harmony import */ var _webgl_utils_typed_array_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../webgl-utils/typed-array-utils */ \"./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/typed-array-utils.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n/* harmony import */ var _utils_check_props__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/check-props */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/check-props.js\");\n\n\n\nconst DEFAULT_ACCESSOR_VALUES = {\n  offset: 0,\n  stride: 0,\n  type: 5126,\n  size: 1,\n  divisor: 0,\n  normalized: false,\n  integer: false\n};\nconst PROP_CHECKS = {\n  deprecatedProps: {\n    instanced: 'divisor',\n    isInstanced: 'divisor'\n  }\n};\nclass Accessor {\n  static getBytesPerElement(accessor) {\n    const ArrayType = (0,_webgl_utils_typed_array_utils__WEBPACK_IMPORTED_MODULE_0__.getTypedArrayFromGLType)(accessor.type || 5126);\n    return ArrayType.BYTES_PER_ELEMENT;\n  }\n\n  static getBytesPerVertex(accessor) {\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_1__.assert)(accessor.size);\n    const ArrayType = (0,_webgl_utils_typed_array_utils__WEBPACK_IMPORTED_MODULE_0__.getTypedArrayFromGLType)(accessor.type || 5126);\n    return ArrayType.BYTES_PER_ELEMENT * accessor.size;\n  }\n\n  static resolve() {\n    for (var _len = arguments.length, accessors = new Array(_len), _key = 0; _key < _len; _key++) {\n      accessors[_key] = arguments[_key];\n    }\n\n    return new Accessor(...[DEFAULT_ACCESSOR_VALUES, ...accessors]);\n  }\n\n  constructor() {\n    for (var _len2 = arguments.length, accessors = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      accessors[_key2] = arguments[_key2];\n    }\n\n    accessors.forEach(accessor => this._assign(accessor));\n    Object.freeze(this);\n  }\n\n  toString() {\n    return JSON.stringify(this);\n  }\n\n  get BYTES_PER_ELEMENT() {\n    return Accessor.getBytesPerElement(this);\n  }\n\n  get BYTES_PER_VERTEX() {\n    return Accessor.getBytesPerVertex(this);\n  }\n\n  _assign() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    props = (0,_utils_check_props__WEBPACK_IMPORTED_MODULE_2__.checkProps)('Accessor', props, PROP_CHECKS);\n\n    if (props.type !== undefined) {\n      this.type = props.type;\n\n      if (props.type === 5124 || props.type === 5125) {\n        this.integer = true;\n      }\n    }\n\n    if (props.size !== undefined) {\n      this.size = props.size;\n    }\n\n    if (props.offset !== undefined) {\n      this.offset = props.offset;\n    }\n\n    if (props.stride !== undefined) {\n      this.stride = props.stride;\n    }\n\n    if (props.normalized !== undefined) {\n      this.normalized = props.normalized;\n    }\n\n    if (props.integer !== undefined) {\n      this.integer = props.integer;\n    }\n\n    if (props.divisor !== undefined) {\n      this.divisor = props.divisor;\n    }\n\n    if (props.buffer !== undefined) {\n      this.buffer = props.buffer;\n    }\n\n    if (props.index !== undefined) {\n      if (typeof props.index === 'boolean') {\n        this.index = props.index ? 1 : 0;\n      } else {\n        this.index = props.index;\n      }\n    }\n\n    if (props.instanced !== undefined) {\n      this.divisor = props.instanced ? 1 : 0;\n    }\n\n    if (props.isInstanced !== undefined) {\n      this.divisor = props.isInstanced ? 1 : 0;\n    }\n\n    return this;\n  }\n\n}\n\n//# sourceMappingURL=accessor.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/accessor.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js":
/*!****************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Buffer; }\n/* harmony export */ });\n/* harmony import */ var _resource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resource */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/resource.js\");\n/* harmony import */ var _accessor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./accessor */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/accessor.js\");\n/* harmony import */ var _webgl_utils_typed_array_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../webgl-utils/typed-array-utils */ \"./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/typed-array-utils.js\");\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n/* harmony import */ var _utils_check_props__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/check-props */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/check-props.js\");\n\n\n\n\n\n\nconst DEBUG_DATA_LENGTH = 10;\nconst DEPRECATED_PROPS = {\n  offset: 'accessor.offset',\n  stride: 'accessor.stride',\n  type: 'accessor.type',\n  size: 'accessor.size',\n  divisor: 'accessor.divisor',\n  normalized: 'accessor.normalized',\n  integer: 'accessor.integer',\n  instanced: 'accessor.divisor',\n  isInstanced: 'accessor.divisor'\n};\nconst PROP_CHECKS_INITIALIZE = {\n  removedProps: {},\n  replacedProps: {\n    bytes: 'byteLength'\n  },\n  deprecatedProps: DEPRECATED_PROPS\n};\nconst PROP_CHECKS_SET_PROPS = {\n  removedProps: DEPRECATED_PROPS\n};\nclass Buffer extends _resource__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  get [Symbol.toStringTag]() {\n    return 'Buffer';\n  }\n\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    super(gl, props);\n    this.stubRemovedMethods('Buffer', 'v6.0', ['layout', 'setLayout', 'getIndexedParameter']);\n    this.target = props.target || (this.gl.webgl2 ? 36662 : 34962);\n    this.initialize(props);\n    Object.seal(this);\n  }\n\n  getElementCount() {\n    let accessor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.accessor;\n    return Math.round(this.byteLength / _accessor__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getBytesPerElement(accessor));\n  }\n\n  getVertexCount() {\n    let accessor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.accessor;\n    return Math.round(this.byteLength / _accessor__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getBytesPerVertex(accessor));\n  }\n\n  initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (ArrayBuffer.isView(props)) {\n      props = {\n        data: props\n      };\n    }\n\n    if (Number.isFinite(props)) {\n      props = {\n        byteLength: props\n      };\n    }\n\n    props = (0,_utils_check_props__WEBPACK_IMPORTED_MODULE_3__.checkProps)('Buffer', props, PROP_CHECKS_INITIALIZE);\n    this.usage = props.usage || 35044;\n    this.debugData = null;\n    this.setAccessor(Object.assign({}, props, props.accessor));\n\n    if (props.data) {\n      this._setData(props.data, props.offset, props.byteLength);\n    } else {\n      this._setByteLength(props.byteLength || 0);\n    }\n\n    return this;\n  }\n\n  setProps(props) {\n    props = (0,_utils_check_props__WEBPACK_IMPORTED_MODULE_3__.checkProps)('Buffer', props, PROP_CHECKS_SET_PROPS);\n\n    if ('accessor' in props) {\n      this.setAccessor(props.accessor);\n    }\n\n    return this;\n  }\n\n  setAccessor(accessor) {\n    accessor = Object.assign({}, accessor);\n    delete accessor.buffer;\n    this.accessor = new _accessor__WEBPACK_IMPORTED_MODULE_2__[\"default\"](accessor);\n    return this;\n  }\n\n  reallocate(byteLength) {\n    if (byteLength > this.byteLength) {\n      this._setByteLength(byteLength);\n\n      return true;\n    }\n\n    this.bytesUsed = byteLength;\n    return false;\n  }\n\n  setData(props) {\n    return this.initialize(props);\n  }\n\n  subData(props) {\n    if (ArrayBuffer.isView(props)) {\n      props = {\n        data: props\n      };\n    }\n\n    const {\n      data,\n      offset = 0,\n      srcOffset = 0\n    } = props;\n    const byteLength = props.byteLength || props.length;\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_4__.assert)(data);\n    const target = this.gl.webgl2 ? 36663 : this.target;\n    this.gl.bindBuffer(target, this.handle);\n\n    if (srcOffset !== 0 || byteLength !== undefined) {\n      (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(this.gl);\n      this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n    } else {\n      this.gl.bufferSubData(target, offset, data);\n    }\n\n    this.gl.bindBuffer(target, null);\n    this.debugData = null;\n\n    this._inferType(data);\n\n    return this;\n  }\n\n  copyData(_ref) {\n    let {\n      sourceBuffer,\n      readOffset = 0,\n      writeOffset = 0,\n      size\n    } = _ref;\n    const {\n      gl\n    } = this;\n    (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(gl);\n    gl.bindBuffer(36662, sourceBuffer.handle);\n    gl.bindBuffer(36663, this.handle);\n    gl.copyBufferSubData(36662, 36663, readOffset, writeOffset, size);\n    gl.bindBuffer(36662, null);\n    gl.bindBuffer(36663, null);\n    this.debugData = null;\n    return this;\n  }\n\n  getData() {\n    let {\n      dstData = null,\n      srcByteOffset = 0,\n      dstOffset = 0,\n      length = 0\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(this.gl);\n    const ArrayType = (0,_webgl_utils_typed_array_utils__WEBPACK_IMPORTED_MODULE_5__.getTypedArrayFromGLType)(this.accessor.type || 5126, {\n      clamped: false\n    });\n\n    const sourceAvailableElementCount = this._getAvailableElementCount(srcByteOffset);\n\n    const dstElementOffset = dstOffset;\n    let dstAvailableElementCount;\n    let dstElementCount;\n\n    if (dstData) {\n      dstElementCount = dstData.length;\n      dstAvailableElementCount = dstElementCount - dstElementOffset;\n    } else {\n      dstAvailableElementCount = Math.min(sourceAvailableElementCount, length || sourceAvailableElementCount);\n      dstElementCount = dstElementOffset + dstAvailableElementCount;\n    }\n\n    const copyElementCount = Math.min(sourceAvailableElementCount, dstAvailableElementCount);\n    length = length || copyElementCount;\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_4__.assert)(length <= copyElementCount);\n    dstData = dstData || new ArrayType(dstElementCount);\n    this.gl.bindBuffer(36662, this.handle);\n    this.gl.getBufferSubData(36662, srcByteOffset, dstData, dstOffset, length);\n    this.gl.bindBuffer(36662, null);\n    return dstData;\n  }\n\n  bind() {\n    let {\n      target = this.target,\n      index = this.accessor && this.accessor.index,\n      offset = 0,\n      size\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (target === 35345 || target === 35982) {\n      if (size !== undefined) {\n        this.gl.bindBufferRange(target, index, this.handle, offset, size);\n      } else {\n        (0,_utils_assert__WEBPACK_IMPORTED_MODULE_4__.assert)(offset === 0);\n        this.gl.bindBufferBase(target, index, this.handle);\n      }\n    } else {\n      this.gl.bindBuffer(target, this.handle);\n    }\n\n    return this;\n  }\n\n  unbind() {\n    let {\n      target = this.target,\n      index = this.accessor && this.accessor.index\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const isIndexedBuffer = target === 35345 || target === 35982;\n\n    if (isIndexedBuffer) {\n      this.gl.bindBufferBase(target, index, null);\n    } else {\n      this.gl.bindBuffer(target, null);\n    }\n\n    return this;\n  }\n\n  getDebugData() {\n    if (!this.debugData) {\n      this.debugData = this.getData({\n        length: Math.min(DEBUG_DATA_LENGTH, this.byteLength)\n      });\n      return {\n        data: this.debugData,\n        changed: true\n      };\n    }\n\n    return {\n      data: this.debugData,\n      changed: false\n    };\n  }\n\n  invalidateDebugData() {\n    this.debugData = null;\n  }\n\n  _setData(data) {\n    let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n    let byteLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : data.byteLength + offset;\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_4__.assert)(ArrayBuffer.isView(data));\n\n    this._trackDeallocatedMemory();\n\n    const target = this._getTarget();\n\n    this.gl.bindBuffer(target, this.handle);\n    this.gl.bufferData(target, byteLength, this.usage);\n    this.gl.bufferSubData(target, offset, data);\n    this.gl.bindBuffer(target, null);\n    this.debugData = data.slice(0, DEBUG_DATA_LENGTH);\n    this.bytesUsed = byteLength;\n\n    this._trackAllocatedMemory(byteLength);\n\n    const type = (0,_webgl_utils_typed_array_utils__WEBPACK_IMPORTED_MODULE_5__.getGLTypeFromTypedArray)(data);\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_4__.assert)(type);\n    this.setAccessor(new _accessor__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.accessor, {\n      type\n    }));\n    return this;\n  }\n\n  _setByteLength(byteLength) {\n    let usage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.usage;\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_4__.assert)(byteLength >= 0);\n\n    this._trackDeallocatedMemory();\n\n    let data = byteLength;\n\n    if (byteLength === 0) {\n      data = new Float32Array(0);\n    }\n\n    const target = this._getTarget();\n\n    this.gl.bindBuffer(target, this.handle);\n    this.gl.bufferData(target, data, usage);\n    this.gl.bindBuffer(target, null);\n    this.usage = usage;\n    this.debugData = null;\n    this.bytesUsed = byteLength;\n\n    this._trackAllocatedMemory(byteLength);\n\n    return this;\n  }\n\n  _getTarget() {\n    return this.gl.webgl2 ? 36663 : this.target;\n  }\n\n  _getAvailableElementCount(srcByteOffset) {\n    const ArrayType = (0,_webgl_utils_typed_array_utils__WEBPACK_IMPORTED_MODULE_5__.getTypedArrayFromGLType)(this.accessor.type || 5126, {\n      clamped: false\n    });\n    const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;\n    return this.getElementCount() - sourceElementOffset;\n  }\n\n  _inferType(data) {\n    if (!this.accessor.type) {\n      this.setAccessor(new _accessor__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.accessor, {\n        type: (0,_webgl_utils_typed_array_utils__WEBPACK_IMPORTED_MODULE_5__.getGLTypeFromTypedArray)(data)\n      }));\n    }\n  }\n\n  _createHandle() {\n    return this.gl.createBuffer();\n  }\n\n  _deleteHandle() {\n    this.gl.deleteBuffer(this.handle);\n\n    this._trackDeallocatedMemory();\n  }\n\n  _getParameter(pname) {\n    this.gl.bindBuffer(this.target, this.handle);\n    const value = this.gl.getBufferParameter(this.target, pname);\n    this.gl.bindBuffer(this.target, null);\n    return value;\n  }\n\n  get type() {\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.deprecated('Buffer.type', 'Buffer.accessor.type')();\n    return this.accessor.type;\n  }\n\n  get bytes() {\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.deprecated('Buffer.bytes', 'Buffer.byteLength')();\n    return this.byteLength;\n  }\n\n  setByteLength(byteLength) {\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.deprecated('setByteLength', 'reallocate')();\n    return this.reallocate(byteLength);\n  }\n\n  updateAccessor(opts) {\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.deprecated('updateAccessor(...)', 'setAccessor(new Accessor(buffer.accessor, ...)')();\n    this.accessor = new _accessor__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.accessor, opts);\n    return this;\n  }\n\n}\n//# sourceMappingURL=buffer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/clear.js":
/*!***************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/clear.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"clear\": function() { return /* binding */ clear; },\n/* harmony export */   \"clearBuffer\": function() { return /* binding */ clearBuffer; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n\n\nconst GL_DEPTH_BUFFER_BIT = 0x00000100;\nconst GL_STENCIL_BUFFER_BIT = 0x00000400;\nconst GL_COLOR_BUFFER_BIT = 0x00004000;\nconst GL_COLOR = 0x1800;\nconst GL_DEPTH = 0x1801;\nconst GL_STENCIL = 0x1802;\nconst GL_DEPTH_STENCIL = 0x84f9;\nconst ERR_ARGUMENTS = 'clear: bad arguments';\nfunction clear(gl) {\n  let {\n    framebuffer = null,\n    color = null,\n    depth = null,\n    stencil = null\n  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const parameters = {};\n\n  if (framebuffer) {\n    parameters.framebuffer = framebuffer;\n  }\n\n  let clearFlags = 0;\n\n  if (color) {\n    clearFlags |= GL_COLOR_BUFFER_BIT;\n\n    if (color !== true) {\n      parameters.clearColor = color;\n    }\n  }\n\n  if (depth) {\n    clearFlags |= GL_DEPTH_BUFFER_BIT;\n\n    if (depth !== true) {\n      parameters.clearDepth = depth;\n    }\n  }\n\n  if (stencil) {\n    clearFlags |= GL_STENCIL_BUFFER_BIT;\n\n    if (depth !== true) {\n      parameters.clearStencil = depth;\n    }\n  }\n\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_1__.assert)(clearFlags !== 0, ERR_ARGUMENTS);\n  (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.withParameters)(gl, parameters, () => {\n    gl.clear(clearFlags);\n  });\n}\nfunction clearBuffer(gl) {\n  let {\n    framebuffer = null,\n    buffer = GL_COLOR,\n    drawBuffer = 0,\n    value = [0, 0, 0, 0]\n  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(gl);\n  (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.withParameters)(gl, {\n    framebuffer\n  }, () => {\n    switch (buffer) {\n      case GL_COLOR:\n        switch (value.constructor) {\n          case Int32Array:\n            gl.clearBufferiv(buffer, drawBuffer, value);\n            break;\n\n          case Uint32Array:\n            gl.clearBufferuiv(buffer, drawBuffer, value);\n            break;\n\n          case Float32Array:\n          default:\n            gl.clearBufferfv(buffer, drawBuffer, value);\n        }\n\n        break;\n\n      case GL_DEPTH:\n        gl.clearBufferfv(GL_DEPTH, 0, [value]);\n        break;\n\n      case GL_STENCIL:\n        gl.clearBufferiv(GL_STENCIL, 0, [value]);\n        break;\n\n      case GL_DEPTH_STENCIL:\n        const [depth, stencil] = value;\n        gl.clearBufferfi(GL_DEPTH_STENCIL, 0, depth, stencil);\n        break;\n\n      default:\n        (0,_utils_assert__WEBPACK_IMPORTED_MODULE_1__.assert)(false, ERR_ARGUMENTS);\n    }\n  });\n}\n//# sourceMappingURL=clear.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/clear.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/copy-and-blit.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/copy-and-blit.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"blit\": function() { return /* binding */ blit; },\n/* harmony export */   \"copyToDataUrl\": function() { return /* binding */ copyToDataUrl; },\n/* harmony export */   \"copyToImage\": function() { return /* binding */ copyToImage; },\n/* harmony export */   \"copyToTexture\": function() { return /* binding */ copyToTexture; },\n/* harmony export */   \"readPixelsToArray\": function() { return /* binding */ readPixelsToArray; },\n/* harmony export */   \"readPixelsToBuffer\": function() { return /* binding */ readPixelsToBuffer; }\n/* harmony export */ });\n/* harmony import */ var _buffer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./buffer */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js\");\n/* harmony import */ var _framebuffer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./framebuffer */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js\");\n/* harmony import */ var _texture__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./texture */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture.js\");\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _webgl_utils_typed_array_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../webgl-utils/typed-array-utils */ \"./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/typed-array-utils.js\");\n/* harmony import */ var _webgl_utils_format_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../webgl-utils/format-utils */ \"./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/format-utils.js\");\n/* harmony import */ var _webgl_utils_texture_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../webgl-utils/texture-utils */ \"./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/texture-utils.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n\n\n\n\n\n\n\n\n\nfunction readPixelsToArray(source) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const {\n    sourceX = 0,\n    sourceY = 0,\n    sourceFormat = 6408\n  } = options;\n  let {\n    sourceAttachment = 36064,\n    target = null,\n    sourceWidth,\n    sourceHeight,\n    sourceType\n  } = options;\n  const {\n    framebuffer,\n    deleteFramebuffer\n  } = getFramebuffer(source);\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_1__.assert)(framebuffer);\n  const {\n    gl,\n    handle,\n    attachments\n  } = framebuffer;\n  sourceWidth = sourceWidth || framebuffer.width;\n  sourceHeight = sourceHeight || framebuffer.height;\n\n  if (sourceAttachment === 36064 && handle === null) {\n    sourceAttachment = 1028;\n  }\n\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_1__.assert)(attachments[sourceAttachment]);\n  sourceType = sourceType || attachments[sourceAttachment].type;\n  target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);\n  sourceType = sourceType || (0,_webgl_utils_typed_array_utils__WEBPACK_IMPORTED_MODULE_2__.getGLTypeFromTypedArray)(target);\n  const prevHandle = gl.bindFramebuffer(36160, handle);\n  gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);\n  gl.bindFramebuffer(36160, prevHandle || null);\n\n  if (deleteFramebuffer) {\n    framebuffer.delete();\n  }\n\n  return target;\n}\nfunction readPixelsToBuffer(source, _ref) {\n  let {\n    sourceX = 0,\n    sourceY = 0,\n    sourceFormat = 6408,\n    target = null,\n    targetByteOffset = 0,\n    sourceWidth,\n    sourceHeight,\n    sourceType\n  } = _ref;\n  const {\n    framebuffer,\n    deleteFramebuffer\n  } = getFramebuffer(source);\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_1__.assert)(framebuffer);\n  sourceWidth = sourceWidth || framebuffer.width;\n  sourceHeight = sourceHeight || framebuffer.height;\n  const gl2 = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(framebuffer.gl);\n  sourceType = sourceType || (target ? target.type : 5121);\n\n  if (!target) {\n    const components = (0,_webgl_utils_format_utils__WEBPACK_IMPORTED_MODULE_3__.glFormatToComponents)(sourceFormat);\n    const byteCount = (0,_webgl_utils_format_utils__WEBPACK_IMPORTED_MODULE_3__.glTypeToBytes)(sourceType);\n    const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;\n    target = new _buffer__WEBPACK_IMPORTED_MODULE_4__[\"default\"](gl2, {\n      byteLength,\n      accessor: {\n        type: sourceType,\n        size: components\n      }\n    });\n  }\n\n  target.bind({\n    target: 35051\n  });\n  (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.withParameters)(gl2, {\n    framebuffer\n  }, () => {\n    gl2.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, targetByteOffset);\n  });\n  target.unbind({\n    target: 35051\n  });\n\n  if (deleteFramebuffer) {\n    framebuffer.delete();\n  }\n\n  return target;\n}\nfunction copyToDataUrl(source) {\n  let {\n    sourceAttachment = 36064,\n    targetMaxHeight = Number.MAX_SAFE_INTEGER\n  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  let data = readPixelsToArray(source, {\n    sourceAttachment\n  });\n  let {\n    width,\n    height\n  } = source;\n\n  while (height > targetMaxHeight) {\n    ({\n      data,\n      width,\n      height\n    } = (0,_webgl_utils_typed_array_utils__WEBPACK_IMPORTED_MODULE_2__.scalePixels)({\n      data,\n      width,\n      height\n    }));\n  }\n\n  (0,_webgl_utils_typed_array_utils__WEBPACK_IMPORTED_MODULE_2__.flipRows)({\n    data,\n    width,\n    height\n  });\n  const canvas = document.createElement('canvas');\n  canvas.width = width;\n  canvas.height = height;\n  const context = canvas.getContext('2d');\n  const imageData = context.createImageData(width, height);\n  imageData.data.set(data);\n  context.putImageData(imageData, 0, 0);\n  return canvas.toDataURL();\n}\nfunction copyToImage(source) {\n  let {\n    sourceAttachment = 36064,\n    targetImage = null\n  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const dataUrl = copyToDataUrl(source, {\n    sourceAttachment\n  });\n  targetImage = targetImage || new Image();\n  targetImage.src = dataUrl;\n  return targetImage;\n}\nfunction copyToTexture(source, target) {\n  let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  const {\n    sourceX = 0,\n    sourceY = 0,\n    targetMipmaplevel = 0,\n    targetInternalFormat = 6408\n  } = options;\n  let {\n    targetX,\n    targetY,\n    targetZ,\n    width,\n    height\n  } = options;\n  const {\n    framebuffer,\n    deleteFramebuffer\n  } = getFramebuffer(source);\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_1__.assert)(framebuffer);\n  const {\n    gl,\n    handle\n  } = framebuffer;\n  const isSubCopy = typeof targetX !== 'undefined' || typeof targetY !== 'undefined' || typeof targetZ !== 'undefined';\n  targetX = targetX || 0;\n  targetY = targetY || 0;\n  targetZ = targetZ || 0;\n  const prevHandle = gl.bindFramebuffer(36160, handle);\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_1__.assert)(target);\n  let texture = null;\n\n  if (target instanceof _texture__WEBPACK_IMPORTED_MODULE_5__[\"default\"]) {\n    texture = target;\n    width = Number.isFinite(width) ? width : texture.width;\n    height = Number.isFinite(height) ? height : texture.height;\n    texture.bind(0);\n    target = texture.target;\n  }\n\n  if (!isSubCopy) {\n    gl.copyTexImage2D(target, targetMipmaplevel, targetInternalFormat, sourceX, sourceY, width, height, 0);\n  } else {\n    switch (target) {\n      case 3553:\n      case 34067:\n        gl.copyTexSubImage2D(target, targetMipmaplevel, targetX, targetY, sourceX, sourceY, width, height);\n        break;\n\n      case 35866:\n      case 32879:\n        const gl2 = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(gl);\n        gl2.copyTexSubImage3D(target, targetMipmaplevel, targetX, targetY, targetZ, sourceX, sourceY, width, height);\n        break;\n\n      default:\n    }\n  }\n\n  if (texture) {\n    texture.unbind();\n  }\n\n  gl.bindFramebuffer(36160, prevHandle || null);\n\n  if (deleteFramebuffer) {\n    framebuffer.delete();\n  }\n\n  return texture;\n}\nfunction blit(source, target) {\n  let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  const {\n    sourceX0 = 0,\n    sourceY0 = 0,\n    targetX0 = 0,\n    targetY0 = 0,\n    color = true,\n    depth = false,\n    stencil = false,\n    filter = 9728\n  } = options;\n  let {\n    sourceX1,\n    sourceY1,\n    targetX1,\n    targetY1,\n    sourceAttachment = 36064,\n    mask = 0\n  } = options;\n  const {\n    framebuffer: srcFramebuffer,\n    deleteFramebuffer: deleteSrcFramebuffer\n  } = getFramebuffer(source);\n  const {\n    framebuffer: dstFramebuffer,\n    deleteFramebuffer: deleteDstFramebuffer\n  } = getFramebuffer(target);\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_1__.assert)(srcFramebuffer);\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_1__.assert)(dstFramebuffer);\n  const {\n    gl,\n    handle,\n    width,\n    height,\n    readBuffer\n  } = dstFramebuffer;\n  const gl2 = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(gl);\n\n  if (!srcFramebuffer.handle && sourceAttachment === 36064) {\n    sourceAttachment = 1028;\n  }\n\n  if (color) {\n    mask |= 16384;\n  }\n\n  if (depth) {\n    mask |= 256;\n  }\n\n  if (stencil) {\n    mask |= 1024;\n  }\n\n  if (deleteSrcFramebuffer || deleteDstFramebuffer) {\n    if (mask & (256 | 1024)) {\n      mask = 16384;\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();\n    }\n  }\n\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_1__.assert)(mask);\n  sourceX1 = sourceX1 === undefined ? srcFramebuffer.width : sourceX1;\n  sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;\n  targetX1 = targetX1 === undefined ? width : targetX1;\n  targetY1 = targetY1 === undefined ? height : targetY1;\n  const prevDrawHandle = gl.bindFramebuffer(36009, handle);\n  const prevReadHandle = gl.bindFramebuffer(36008, srcFramebuffer.handle);\n  gl2.readBuffer(sourceAttachment);\n  gl2.blitFramebuffer(sourceX0, sourceY0, sourceX1, sourceY1, targetX0, targetY0, targetX1, targetY1, mask, filter);\n  gl2.readBuffer(readBuffer);\n  gl2.bindFramebuffer(36008, prevReadHandle || null);\n  gl2.bindFramebuffer(36009, prevDrawHandle || null);\n\n  if (deleteSrcFramebuffer) {\n    srcFramebuffer.delete();\n  }\n\n  if (deleteDstFramebuffer) {\n    dstFramebuffer.delete();\n  }\n\n  return dstFramebuffer;\n}\n\nfunction getFramebuffer(source) {\n  if (!(source instanceof _framebuffer__WEBPACK_IMPORTED_MODULE_6__[\"default\"])) {\n    return {\n      framebuffer: (0,_webgl_utils_texture_utils__WEBPACK_IMPORTED_MODULE_7__.toFramebuffer)(source),\n      deleteFramebuffer: true\n    };\n  }\n\n  return {\n    framebuffer: source,\n    deleteFramebuffer: false\n  };\n}\n\nfunction getPixelArray(pixelArray, type, format, width, height) {\n  if (pixelArray) {\n    return pixelArray;\n  }\n\n  type = type || 5121;\n  const ArrayType = (0,_webgl_utils_typed_array_utils__WEBPACK_IMPORTED_MODULE_2__.getTypedArrayFromGLType)(type, {\n    clamped: false\n  });\n  const components = (0,_webgl_utils_format_utils__WEBPACK_IMPORTED_MODULE_3__.glFormatToComponents)(format);\n  return new ArrayType(width * height * components);\n}\n//# sourceMappingURL=copy-and-blit.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/copy-and-blit.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FRAMEBUFFER_ATTACHMENT_PARAMETERS\": function() { return /* binding */ FRAMEBUFFER_ATTACHMENT_PARAMETERS; },\n/* harmony export */   \"default\": function() { return /* binding */ Framebuffer; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _resource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resource */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/resource.js\");\n/* harmony import */ var _texture_2d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./texture-2d */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js\");\n/* harmony import */ var _renderbuffer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./renderbuffer */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/renderbuffer.js\");\n/* harmony import */ var _clear__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./clear */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/clear.js\");\n/* harmony import */ var _copy_and_blit_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./copy-and-blit.js */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/copy-and-blit.js\");\n/* harmony import */ var _features__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../features */ \"./node_modules/@luma.gl/webgl/dist/esm/features/features.js\");\n/* harmony import */ var _webgl_utils_constants_to_keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../webgl-utils/constants-to-keys */ \"./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/constants-to-keys.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n\n\n\n\n\n\n\n\n\nconst ERR_MULTIPLE_RENDERTARGETS = 'Multiple render targets not supported';\nclass Framebuffer extends _resource__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  get [Symbol.toStringTag]() {\n    return 'Framebuffer';\n  }\n\n  static isSupported(gl) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const {\n      colorBufferFloat,\n      colorBufferHalfFloat\n    } = options;\n    let supported = true;\n\n    if (colorBufferFloat) {\n      supported = Boolean(gl.getExtension('EXT_color_buffer_float') || gl.getExtension('WEBGL_color_buffer_float') || gl.getExtension('OES_texture_float'));\n    }\n\n    if (colorBufferHalfFloat) {\n      supported = supported && Boolean(gl.getExtension('EXT_color_buffer_float') || gl.getExtension('EXT_color_buffer_half_float'));\n    }\n\n    return supported;\n  }\n\n  static getDefaultFramebuffer(gl) {\n    gl.luma = gl.luma || {};\n    gl.luma.defaultFramebuffer = gl.luma.defaultFramebuffer || new Framebuffer(gl, {\n      id: 'default-framebuffer',\n      handle: null,\n      attachments: {}\n    });\n    return gl.luma.defaultFramebuffer;\n  }\n\n  get MAX_COLOR_ATTACHMENTS() {\n    const gl2 = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(this.gl);\n    return gl2.getParameter(gl2.MAX_COLOR_ATTACHMENTS);\n  }\n\n  get MAX_DRAW_BUFFERS() {\n    const gl2 = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(this.gl);\n    return gl2.getParameter(gl2.MAX_DRAW_BUFFERS);\n  }\n\n  constructor(gl) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    super(gl, opts);\n    this.width = null;\n    this.height = null;\n    this.attachments = {};\n    this.readBuffer = 36064;\n    this.drawBuffers = [36064];\n    this.ownResources = [];\n    this.initialize(opts);\n    Object.seal(this);\n  }\n\n  get color() {\n    return this.attachments[36064] || null;\n  }\n\n  get texture() {\n    return this.attachments[36064] || null;\n  }\n\n  get depth() {\n    return this.attachments[36096] || this.attachments[33306] || null;\n  }\n\n  get stencil() {\n    return this.attachments[36128] || this.attachments[33306] || null;\n  }\n\n  initialize(_ref) {\n    let {\n      width = 1,\n      height = 1,\n      attachments = null,\n      color = true,\n      depth = true,\n      stencil = false,\n      check = true,\n      readBuffer = undefined,\n      drawBuffers = undefined\n    } = _ref;\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)(width >= 0 && height >= 0, 'Width and height need to be integers');\n    this.width = width;\n    this.height = height;\n\n    if (attachments) {\n      for (const attachment in attachments) {\n        const target = attachments[attachment];\n        const object = Array.isArray(target) ? target[0] : target;\n        object.resize({\n          width,\n          height\n        });\n      }\n    } else {\n      attachments = this._createDefaultAttachments(color, depth, stencil, width, height);\n    }\n\n    this.update({\n      clearAttachments: true,\n      attachments,\n      readBuffer,\n      drawBuffers\n    });\n\n    if (attachments && check) {\n      this.checkStatus();\n    }\n  }\n\n  delete() {\n    for (const resource of this.ownResources) {\n      resource.delete();\n    }\n\n    super.delete();\n    return this;\n  }\n\n  update(_ref2) {\n    let {\n      attachments = {},\n      readBuffer,\n      drawBuffers,\n      clearAttachments = false,\n      resizeAttachments = true\n    } = _ref2;\n    this.attach(attachments, {\n      clearAttachments,\n      resizeAttachments\n    });\n    const {\n      gl\n    } = this;\n    const prevHandle = gl.bindFramebuffer(36160, this.handle);\n\n    if (readBuffer) {\n      this._setReadBuffer(readBuffer);\n    }\n\n    if (drawBuffers) {\n      this._setDrawBuffers(drawBuffers);\n    }\n\n    gl.bindFramebuffer(36160, prevHandle || null);\n    return this;\n  }\n\n  resize() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let {\n      width,\n      height\n    } = options;\n\n    if (this.handle === null) {\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)(width === undefined && height === undefined);\n      this.width = this.gl.drawingBufferWidth;\n      this.height = this.gl.drawingBufferHeight;\n      return this;\n    }\n\n    if (width === undefined) {\n      width = this.gl.drawingBufferWidth;\n    }\n\n    if (height === undefined) {\n      height = this.gl.drawingBufferHeight;\n    }\n\n    if (width !== this.width && height !== this.height) {\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.log(2, \"Resizing framebuffer \".concat(this.id, \" to \").concat(width, \"x\").concat(height))();\n    }\n\n    for (const attachmentPoint in this.attachments) {\n      this.attachments[attachmentPoint].resize({\n        width,\n        height\n      });\n    }\n\n    this.width = width;\n    this.height = height;\n    return this;\n  }\n\n  attach(attachments) {\n    let {\n      clearAttachments = false,\n      resizeAttachments = true\n    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const newAttachments = {};\n\n    if (clearAttachments) {\n      Object.keys(this.attachments).forEach(key => {\n        newAttachments[key] = null;\n      });\n    }\n\n    Object.assign(newAttachments, attachments);\n    const prevHandle = this.gl.bindFramebuffer(36160, this.handle);\n\n    for (const key in newAttachments) {\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)(key !== undefined, 'Misspelled framebuffer binding point?');\n      const attachment = Number(key);\n      const descriptor = newAttachments[attachment];\n      let object = descriptor;\n\n      if (!object) {\n        this._unattach(attachment);\n      } else if (object instanceof _renderbuffer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]) {\n        this._attachRenderbuffer({\n          attachment,\n          renderbuffer: object\n        });\n      } else if (Array.isArray(descriptor)) {\n        const [texture, layer = 0, level = 0] = descriptor;\n        object = texture;\n\n        this._attachTexture({\n          attachment,\n          texture,\n          layer,\n          level\n        });\n      } else {\n        this._attachTexture({\n          attachment,\n          texture: object,\n          layer: 0,\n          level: 0\n        });\n      }\n\n      if (resizeAttachments && object) {\n        object.resize({\n          width: this.width,\n          height: this.height\n        });\n      }\n    }\n\n    this.gl.bindFramebuffer(36160, prevHandle || null);\n    Object.assign(this.attachments, attachments);\n    Object.keys(this.attachments).filter(key => !this.attachments[key]).forEach(key => {\n      delete this.attachments[key];\n    });\n  }\n\n  checkStatus() {\n    const {\n      gl\n    } = this;\n    const status = this.getStatus();\n\n    if (status !== 36053) {\n      throw new Error(_getFrameBufferStatus(status));\n    }\n\n    return this;\n  }\n\n  getStatus() {\n    const {\n      gl\n    } = this;\n    const prevHandle = gl.bindFramebuffer(36160, this.handle);\n    const status = gl.checkFramebufferStatus(36160);\n    gl.bindFramebuffer(36160, prevHandle || null);\n    return status;\n  }\n\n  clear() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      color,\n      depth,\n      stencil,\n      drawBuffers = []\n    } = options;\n    const prevHandle = this.gl.bindFramebuffer(36160, this.handle);\n\n    if (color || depth || stencil) {\n      (0,_clear__WEBPACK_IMPORTED_MODULE_4__.clear)(this.gl, {\n        color,\n        depth,\n        stencil\n      });\n    }\n\n    drawBuffers.forEach((value, drawBuffer) => {\n      (0,_clear__WEBPACK_IMPORTED_MODULE_4__.clearBuffer)(this.gl, {\n        drawBuffer,\n        value\n      });\n    });\n    this.gl.bindFramebuffer(36160, prevHandle || null);\n    return this;\n  }\n\n  readPixels() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.error('Framebuffer.readPixels() is no logner supported, use readPixelsToArray(framebuffer)')();\n    return null;\n  }\n\n  readPixelsToBuffer() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.error('Framebuffer.readPixelsToBuffer()is no logner supported, use readPixelsToBuffer(framebuffer)')();\n    return null;\n  }\n\n  copyToDataUrl() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.error('Framebuffer.copyToDataUrl() is no logner supported, use copyToDataUrl(framebuffer)')();\n    return null;\n  }\n\n  copyToImage() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.error('Framebuffer.copyToImage() is no logner supported, use copyToImage(framebuffer)')();\n    return null;\n  }\n\n  copyToTexture() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.error('Framebuffer.copyToTexture({...}) is no logner supported, use copyToTexture(source, target, opts})')();\n    return null;\n  }\n\n  blit() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.error('Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)')();\n    return null;\n  }\n\n  invalidate(_ref3) {\n    let {\n      attachments = [],\n      x = 0,\n      y = 0,\n      width,\n      height\n    } = _ref3;\n    const gl2 = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(this.gl);\n    const prevHandle = gl2.bindFramebuffer(36008, this.handle);\n    const invalidateAll = x === 0 && y === 0 && width === undefined && height === undefined;\n\n    if (invalidateAll) {\n      gl2.invalidateFramebuffer(36008, attachments);\n    } else {\n      gl2.invalidateFramebuffer(36008, attachments, x, y, width, height);\n    }\n\n    gl2.bindFramebuffer(36008, prevHandle);\n    return this;\n  }\n\n  getAttachmentParameter(attachment, pname, keys) {\n    let value = this._getAttachmentParameterFallback(pname);\n\n    if (value === null) {\n      this.gl.bindFramebuffer(36160, this.handle);\n      value = this.gl.getFramebufferAttachmentParameter(36160, attachment, pname);\n      this.gl.bindFramebuffer(36160, null);\n    }\n\n    if (keys && value > 1000) {\n      value = (0,_webgl_utils_constants_to_keys__WEBPACK_IMPORTED_MODULE_5__.getKey)(this.gl, value);\n    }\n\n    return value;\n  }\n\n  getAttachmentParameters() {\n    let attachment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 36064;\n    let keys = arguments.length > 1 ? arguments[1] : undefined;\n    let parameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.constructor.ATTACHMENT_PARAMETERS || [];\n    const values = {};\n\n    for (const pname of parameters) {\n      const key = keys ? (0,_webgl_utils_constants_to_keys__WEBPACK_IMPORTED_MODULE_5__.getKey)(this.gl, pname) : pname;\n      values[key] = this.getAttachmentParameter(attachment, pname, keys);\n    }\n\n    return values;\n  }\n\n  getParameters() {\n    let keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n    const attachments = Object.keys(this.attachments);\n    const parameters = {};\n\n    for (const attachmentName of attachments) {\n      const attachment = Number(attachmentName);\n      const key = keys ? (0,_webgl_utils_constants_to_keys__WEBPACK_IMPORTED_MODULE_5__.getKey)(this.gl, attachment) : attachment;\n      parameters[key] = this.getAttachmentParameters(attachment, keys);\n    }\n\n    return parameters;\n  }\n\n  show() {\n    if (typeof window !== 'undefined') {\n      window.open((0,_copy_and_blit_js__WEBPACK_IMPORTED_MODULE_6__.copyToDataUrl)(this), 'luma-debug-texture');\n    }\n\n    return this;\n  }\n\n  log() {\n    let logLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n    let message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n    if (logLevel > _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.level || typeof window === 'undefined') {\n      return this;\n    }\n\n    message = message || \"Framebuffer \".concat(this.id);\n    const image = (0,_copy_and_blit_js__WEBPACK_IMPORTED_MODULE_6__.copyToDataUrl)(this, {\n      targetMaxHeight: 100\n    });\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.image({\n      logLevel,\n      message,\n      image\n    }, message)();\n    return this;\n  }\n\n  bind() {\n    let {\n      target = 36160\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.gl.bindFramebuffer(target, this.handle);\n    return this;\n  }\n\n  unbind() {\n    let {\n      target = 36160\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.gl.bindFramebuffer(target, null);\n    return this;\n  }\n\n  _createDefaultAttachments(color, depth, stencil, width, height) {\n    let defaultAttachments = null;\n\n    if (color) {\n      defaultAttachments = defaultAttachments || {};\n      defaultAttachments[36064] = new _texture_2d__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.gl, {\n        id: \"\".concat(this.id, \"-color0\"),\n        pixels: null,\n        format: 6408,\n        type: 5121,\n        width,\n        height,\n        mipmaps: false,\n        parameters: {\n          [10241]: 9729,\n          [10240]: 9729,\n          [10242]: 33071,\n          [10243]: 33071\n        }\n      });\n      this.ownResources.push(defaultAttachments[36064]);\n    }\n\n    if (depth && stencil) {\n      defaultAttachments = defaultAttachments || {};\n      defaultAttachments[33306] = new _renderbuffer__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this.gl, {\n        id: \"\".concat(this.id, \"-depth-stencil\"),\n        format: 35056,\n        width,\n        height: 111\n      });\n      this.ownResources.push(defaultAttachments[33306]);\n    } else if (depth) {\n      defaultAttachments = defaultAttachments || {};\n      defaultAttachments[36096] = new _renderbuffer__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this.gl, {\n        id: \"\".concat(this.id, \"-depth\"),\n        format: 33189,\n        width,\n        height\n      });\n      this.ownResources.push(defaultAttachments[36096]);\n    } else if (stencil) {\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)(false);\n    }\n\n    return defaultAttachments;\n  }\n\n  _unattach(attachment) {\n    const oldAttachment = this.attachments[attachment];\n\n    if (!oldAttachment) {\n      return;\n    }\n\n    if (oldAttachment instanceof _renderbuffer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]) {\n      this.gl.framebufferRenderbuffer(36160, attachment, 36161, null);\n    } else {\n      this.gl.framebufferTexture2D(36160, attachment, 3553, null, 0);\n    }\n\n    delete this.attachments[attachment];\n  }\n\n  _attachRenderbuffer(_ref4) {\n    let {\n      attachment = 36064,\n      renderbuffer\n    } = _ref4;\n    const {\n      gl\n    } = this;\n    gl.framebufferRenderbuffer(36160, attachment, 36161, renderbuffer.handle);\n    this.attachments[attachment] = renderbuffer;\n  }\n\n  _attachTexture(_ref5) {\n    let {\n      attachment = 36064,\n      texture,\n      layer,\n      level\n    } = _ref5;\n    const {\n      gl\n    } = this;\n    gl.bindTexture(texture.target, texture.handle);\n\n    switch (texture.target) {\n      case 35866:\n      case 32879:\n        const gl2 = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(gl);\n        gl2.framebufferTextureLayer(36160, attachment, texture.target, level, layer);\n        break;\n\n      case 34067:\n        const face = mapIndexToCubeMapFace(layer);\n        gl.framebufferTexture2D(36160, attachment, face, texture.handle, level);\n        break;\n\n      case 3553:\n        gl.framebufferTexture2D(36160, attachment, 3553, texture.handle, level);\n        break;\n\n      default:\n        (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)(false, 'Illegal texture type');\n    }\n\n    gl.bindTexture(texture.target, null);\n    this.attachments[attachment] = texture;\n  }\n\n  _setReadBuffer(readBuffer) {\n    const gl2 = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.getWebGL2Context)(this.gl);\n\n    if (gl2) {\n      gl2.readBuffer(readBuffer);\n    } else {\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)(readBuffer === 36064 || readBuffer === 1029, ERR_MULTIPLE_RENDERTARGETS);\n    }\n\n    this.readBuffer = readBuffer;\n  }\n\n  _setDrawBuffers(drawBuffers) {\n    const {\n      gl\n    } = this;\n    const gl2 = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(gl);\n\n    if (gl2) {\n      gl2.drawBuffers(drawBuffers);\n    } else {\n      const ext = gl.getExtension('WEBGL_draw_buffers');\n\n      if (ext) {\n        ext.drawBuffersWEBGL(drawBuffers);\n      } else {\n        (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)(drawBuffers.length === 1 && (drawBuffers[0] === 36064 || drawBuffers[0] === 1029), ERR_MULTIPLE_RENDERTARGETS);\n      }\n    }\n\n    this.drawBuffers = drawBuffers;\n  }\n\n  _getAttachmentParameterFallback(pname) {\n    const caps = (0,_features__WEBPACK_IMPORTED_MODULE_8__.getFeatures)(this.gl);\n\n    switch (pname) {\n      case 36052:\n        return !caps.WEBGL2 ? 0 : null;\n\n      case 33298:\n      case 33299:\n      case 33300:\n      case 33301:\n      case 33302:\n      case 33303:\n        return !caps.WEBGL2 ? 8 : null;\n\n      case 33297:\n        return !caps.WEBGL2 ? 5125 : null;\n\n      case 33296:\n        return !caps.WEBGL2 && !caps.EXT_sRGB ? 9729 : null;\n\n      default:\n        return null;\n    }\n  }\n\n  _createHandle() {\n    return this.gl.createFramebuffer();\n  }\n\n  _deleteHandle() {\n    this.gl.deleteFramebuffer(this.handle);\n  }\n\n  _bindHandle(handle) {\n    return this.gl.bindFramebuffer(36160, handle);\n  }\n\n}\n\nfunction mapIndexToCubeMapFace(layer) {\n  return layer < 34069 ? layer + 34069 : layer;\n}\n\nfunction _getFrameBufferStatus(status) {\n  const STATUS = Framebuffer.STATUS || {};\n  return STATUS[status] || \"Framebuffer error \".concat(status);\n}\n\nconst FRAMEBUFFER_ATTACHMENT_PARAMETERS = [36049, 36048, 33296, 33298, 33299, 33300, 33301, 33302, 33303];\nFramebuffer.ATTACHMENT_PARAMETERS = FRAMEBUFFER_ATTACHMENT_PARAMETERS;\n//# sourceMappingURL=framebuffer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/program-configuration.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/program-configuration.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ProgramConfiguration; }\n/* harmony export */ });\n/* harmony import */ var _accessor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./accessor */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/accessor.js\");\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _webgl_utils_attribute_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../webgl-utils/attribute-utils */ \"./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/attribute-utils.js\");\n\n\n\nclass ProgramConfiguration {\n  constructor(program) {\n    this.id = program.id;\n    this.attributeInfos = [];\n    this.attributeInfosByName = {};\n    this.attributeInfosByLocation = [];\n    this.varyingInfos = [];\n    this.varyingInfosByName = {};\n    Object.seal(this);\n\n    this._readAttributesFromProgram(program);\n\n    this._readVaryingsFromProgram(program);\n  }\n\n  getAttributeInfo(locationOrName) {\n    const location = Number(locationOrName);\n\n    if (Number.isFinite(location)) {\n      return this.attributeInfosByLocation[location];\n    }\n\n    return this.attributeInfosByName[locationOrName] || null;\n  }\n\n  getAttributeLocation(locationOrName) {\n    const attributeInfo = this.getAttributeInfo(locationOrName);\n    return attributeInfo ? attributeInfo.location : -1;\n  }\n\n  getAttributeAccessor(locationOrName) {\n    const attributeInfo = this.getAttributeInfo(locationOrName);\n    return attributeInfo ? attributeInfo.accessor : null;\n  }\n\n  getVaryingInfo(locationOrName) {\n    const location = Number(locationOrName);\n\n    if (Number.isFinite(location)) {\n      return this.varyingInfos[location];\n    }\n\n    return this.varyingInfosByName[locationOrName] || null;\n  }\n\n  getVaryingIndex(locationOrName) {\n    const varying = this.getVaryingInfo();\n    return varying ? varying.location : -1;\n  }\n\n  getVaryingAccessor(locationOrName) {\n    const varying = this.getVaryingInfo();\n    return varying ? varying.accessor : null;\n  }\n\n  _readAttributesFromProgram(program) {\n    const {\n      gl\n    } = program;\n    const count = gl.getProgramParameter(program.handle, 35721);\n\n    for (let index = 0; index < count; index++) {\n      const {\n        name,\n        type,\n        size\n      } = gl.getActiveAttrib(program.handle, index);\n      const location = gl.getAttribLocation(program.handle, name);\n\n      if (location >= 0) {\n        this._addAttribute(location, name, type, size);\n      }\n    }\n\n    this.attributeInfos.sort((a, b) => a.location - b.location);\n  }\n\n  _readVaryingsFromProgram(program) {\n    const {\n      gl\n    } = program;\n\n    if (!(0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl)) {\n      return;\n    }\n\n    const count = gl.getProgramParameter(program.handle, 35971);\n\n    for (let location = 0; location < count; location++) {\n      const {\n        name,\n        type,\n        size\n      } = gl.getTransformFeedbackVarying(program.handle, location);\n\n      this._addVarying(location, name, type, size);\n    }\n\n    this.varyingInfos.sort((a, b) => a.location - b.location);\n  }\n\n  _addAttribute(location, name, compositeType, size) {\n    const {\n      type,\n      components\n    } = (0,_webgl_utils_attribute_utils__WEBPACK_IMPORTED_MODULE_1__.decomposeCompositeGLType)(compositeType);\n    const accessor = {\n      type,\n      size: size * components\n    };\n\n    this._inferProperties(location, name, accessor);\n\n    const attributeInfo = {\n      location,\n      name,\n      accessor: new _accessor__WEBPACK_IMPORTED_MODULE_2__[\"default\"](accessor)\n    };\n    this.attributeInfos.push(attributeInfo);\n    this.attributeInfosByLocation[location] = attributeInfo;\n    this.attributeInfosByName[attributeInfo.name] = attributeInfo;\n  }\n\n  _inferProperties(location, name, accessor) {\n    if (/instance/i.test(name)) {\n      accessor.divisor = 1;\n    }\n  }\n\n  _addVarying(location, name, compositeType, size) {\n    const {\n      type,\n      components\n    } = (0,_webgl_utils_attribute_utils__WEBPACK_IMPORTED_MODULE_1__.decomposeCompositeGLType)(compositeType);\n    const accessor = new _accessor__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n      type,\n      size: size * components\n    });\n    const varying = {\n      location,\n      name,\n      accessor\n    };\n    this.varyingInfos.push(varying);\n    this.varyingInfosByName[varying.name] = varying;\n  }\n\n}\n//# sourceMappingURL=program-configuration.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/program-configuration.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/program.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/program.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Program; }\n/* harmony export */ });\n/* harmony import */ var _resource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resource */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/resource.js\");\n/* harmony import */ var _texture__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./texture */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture.js\");\n/* harmony import */ var _framebuffer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./framebuffer */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js\");\n/* harmony import */ var _uniforms__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./uniforms */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/uniforms.js\");\n/* harmony import */ var _shader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shader */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/shader.js\");\n/* harmony import */ var _program_configuration__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./program-configuration */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/program-configuration.js\");\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _webgl_utils_constants_to_keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../webgl-utils/constants-to-keys */ \"./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/constants-to-keys.js\");\n/* harmony import */ var _webgl_utils_attribute_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../webgl-utils/attribute-utils */ \"./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/attribute-utils.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/utils */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\nconst GL_SEPARATE_ATTRIBS = 0x8c8d;\nconst V6_DEPRECATED_METHODS = ['setVertexArray', 'setAttributes', 'setBuffers', 'unsetBuffers', 'use', 'getUniformCount', 'getUniformInfo', 'getUniformLocation', 'getUniformValue', 'getVarying', 'getFragDataLocation', 'getAttachedShaders', 'getAttributeCount', 'getAttributeLocation', 'getAttributeInfo'];\nclass Program extends _resource__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  get [Symbol.toStringTag]() {\n    return 'Program';\n  }\n\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    super(gl, props);\n    this.stubRemovedMethods('Program', 'v6.0', V6_DEPRECATED_METHODS);\n    this._isCached = false;\n    this.initialize(props);\n    Object.seal(this);\n\n    this._setId(props.id);\n  }\n\n  initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      hash,\n      vs,\n      fs,\n      varyings,\n      bufferMode = GL_SEPARATE_ATTRIBS\n    } = props;\n    this.hash = hash || '';\n    this.vs = typeof vs === 'string' ? new _shader__WEBPACK_IMPORTED_MODULE_2__.VertexShader(this.gl, {\n      id: \"\".concat(props.id, \"-vs\"),\n      source: vs\n    }) : vs;\n    this.fs = typeof fs === 'string' ? new _shader__WEBPACK_IMPORTED_MODULE_2__.FragmentShader(this.gl, {\n      id: \"\".concat(props.id, \"-fs\"),\n      source: fs\n    }) : fs;\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__.assert)(this.vs instanceof _shader__WEBPACK_IMPORTED_MODULE_2__.VertexShader);\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__.assert)(this.fs instanceof _shader__WEBPACK_IMPORTED_MODULE_2__.FragmentShader);\n    this.uniforms = {};\n    this._textureUniforms = {};\n\n    if (varyings && varyings.length > 0) {\n      (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(this.gl);\n      this.varyings = varyings;\n      this.gl2.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n    }\n\n    this._compileAndLink();\n\n    this._readUniformLocationsFromLinkedProgram();\n\n    this.configuration = new _program_configuration__WEBPACK_IMPORTED_MODULE_4__[\"default\"](this);\n    return this.setProps(props);\n  }\n\n  delete() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (this._isCached) {\n      return this;\n    }\n\n    return super.delete(options);\n  }\n\n  setProps(props) {\n    if ('uniforms' in props) {\n      this.setUniforms(props.uniforms);\n    }\n\n    return this;\n  }\n\n  draw(_ref) {\n    let {\n      logPriority,\n      drawMode = 4,\n      vertexCount,\n      offset = 0,\n      start,\n      end,\n      isIndexed = false,\n      indexType = 5123,\n      instanceCount = 0,\n      isInstanced = instanceCount > 0,\n      vertexArray = null,\n      transformFeedback,\n      framebuffer,\n      parameters = {},\n      uniforms,\n      samplers\n    } = _ref;\n\n    if (uniforms || samplers) {\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.deprecated('Program.draw({uniforms})', 'Program.setUniforms(uniforms)')();\n      this.setUniforms(uniforms || {});\n    }\n\n    if (_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.priority >= logPriority) {\n      const fb = framebuffer ? framebuffer.id : 'default';\n      const message = \"mode=\".concat((0,_webgl_utils_constants_to_keys__WEBPACK_IMPORTED_MODULE_5__.getKey)(this.gl, drawMode), \" verts=\").concat(vertexCount, \" \") + \"instances=\".concat(instanceCount, \" indexType=\").concat((0,_webgl_utils_constants_to_keys__WEBPACK_IMPORTED_MODULE_5__.getKey)(this.gl, indexType), \" \") + \"isInstanced=\".concat(isInstanced, \" isIndexed=\").concat(isIndexed, \" \") + \"Framebuffer=\".concat(fb);\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.log(logPriority, message)();\n    }\n\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__.assert)(vertexArray);\n    this.gl.useProgram(this.handle);\n\n    if (!this._areTexturesRenderable() || vertexCount === 0 || isInstanced && instanceCount === 0) {\n      return false;\n    }\n\n    vertexArray.bindForDraw(vertexCount, instanceCount, () => {\n      if (framebuffer !== undefined) {\n        parameters = Object.assign({}, parameters, {\n          framebuffer\n        });\n      }\n\n      if (transformFeedback) {\n        const primitiveMode = (0,_webgl_utils_attribute_utils__WEBPACK_IMPORTED_MODULE_6__.getPrimitiveDrawMode)(drawMode);\n        transformFeedback.begin(primitiveMode);\n      }\n\n      this._bindTextures();\n\n      (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.withParameters)(this.gl, parameters, () => {\n        if (isIndexed && isInstanced) {\n          this.gl2.drawElementsInstanced(drawMode, vertexCount, indexType, offset, instanceCount);\n        } else if (isIndexed && (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(this.gl) && !isNaN(start) && !isNaN(end)) {\n          this.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n        } else if (isIndexed) {\n          this.gl.drawElements(drawMode, vertexCount, indexType, offset);\n        } else if (isInstanced) {\n          this.gl2.drawArraysInstanced(drawMode, offset, vertexCount, instanceCount);\n        } else {\n          this.gl.drawArrays(drawMode, offset, vertexCount);\n        }\n      });\n\n      if (transformFeedback) {\n        transformFeedback.end();\n      }\n    });\n    return true;\n  }\n\n  setUniforms() {\n    let uniforms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.priority >= 2) {\n      (0,_uniforms__WEBPACK_IMPORTED_MODULE_7__.checkUniformValues)(uniforms, this.id, this._uniformSetters);\n    }\n\n    this.gl.useProgram(this.handle);\n\n    for (const uniformName in uniforms) {\n      const uniform = uniforms[uniformName];\n      const uniformSetter = this._uniformSetters[uniformName];\n\n      if (uniformSetter) {\n        let value = uniform;\n        let textureUpdate = false;\n\n        if (value instanceof _framebuffer__WEBPACK_IMPORTED_MODULE_8__[\"default\"]) {\n          value = value.texture;\n        }\n\n        if (value instanceof _texture__WEBPACK_IMPORTED_MODULE_9__[\"default\"]) {\n          textureUpdate = this.uniforms[uniformName] !== uniform;\n\n          if (textureUpdate) {\n            if (uniformSetter.textureIndex === undefined) {\n              uniformSetter.textureIndex = this._textureIndexCounter++;\n            }\n\n            const texture = value;\n            const {\n              textureIndex\n            } = uniformSetter;\n            texture.bind(textureIndex);\n            value = textureIndex;\n            this._textureUniforms[uniformName] = texture;\n          } else {\n            value = uniformSetter.textureIndex;\n          }\n        } else if (this._textureUniforms[uniformName]) {\n          delete this._textureUniforms[uniformName];\n        }\n\n        if (uniformSetter(value) || textureUpdate) {\n          (0,_uniforms__WEBPACK_IMPORTED_MODULE_7__.copyUniform)(this.uniforms, uniformName, uniform);\n        }\n      }\n    }\n\n    return this;\n  }\n\n  _areTexturesRenderable() {\n    let texturesRenderable = true;\n\n    for (const uniformName in this._textureUniforms) {\n      const texture = this._textureUniforms[uniformName];\n      texture.update();\n      texturesRenderable = texturesRenderable && texture.loaded;\n    }\n\n    return texturesRenderable;\n  }\n\n  _bindTextures() {\n    for (const uniformName in this._textureUniforms) {\n      const textureIndex = this._uniformSetters[uniformName].textureIndex;\n\n      this._textureUniforms[uniformName].bind(textureIndex);\n    }\n  }\n\n  _createHandle() {\n    return this.gl.createProgram();\n  }\n\n  _deleteHandle() {\n    this.gl.deleteProgram(this.handle);\n  }\n\n  _getOptionsFromHandle(handle) {\n    const shaderHandles = this.gl.getAttachedShaders(handle);\n    const opts = {};\n\n    for (const shaderHandle of shaderHandles) {\n      const type = this.gl.getShaderParameter(this.handle, 35663);\n\n      switch (type) {\n        case 35633:\n          opts.vs = new _shader__WEBPACK_IMPORTED_MODULE_2__.VertexShader({\n            handle: shaderHandle\n          });\n          break;\n\n        case 35632:\n          opts.fs = new _shader__WEBPACK_IMPORTED_MODULE_2__.FragmentShader({\n            handle: shaderHandle\n          });\n          break;\n\n        default:\n      }\n    }\n\n    return opts;\n  }\n\n  _getParameter(pname) {\n    return this.gl.getProgramParameter(this.handle, pname);\n  }\n\n  _setId(id) {\n    if (!id) {\n      const programName = this._getName();\n\n      this.id = (0,_utils_utils__WEBPACK_IMPORTED_MODULE_10__.uid)(programName);\n    }\n  }\n\n  _getName() {\n    let programName = this.vs.getName() || this.fs.getName();\n    programName = programName.replace(/shader/i, '');\n    programName = programName ? \"\".concat(programName, \"-program\") : 'program';\n    return programName;\n  }\n\n  _compileAndLink() {\n    const {\n      gl\n    } = this;\n    gl.attachShader(this.handle, this.vs.handle);\n    gl.attachShader(this.handle, this.fs.handle);\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.time(LOG_PROGRAM_PERF_PRIORITY, \"linkProgram for \".concat(this._getName()))();\n    gl.linkProgram(this.handle);\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, \"linkProgram for \".concat(this._getName()))();\n\n    if (gl.debug || _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.level > 0) {\n      const linked = gl.getProgramParameter(this.handle, 35714);\n\n      if (!linked) {\n        throw new Error(\"Error linking: \".concat(gl.getProgramInfoLog(this.handle)));\n      }\n\n      gl.validateProgram(this.handle);\n      const validated = gl.getProgramParameter(this.handle, 35715);\n\n      if (!validated) {\n        throw new Error(\"Error validating: \".concat(gl.getProgramInfoLog(this.handle)));\n      }\n    }\n  }\n\n  _readUniformLocationsFromLinkedProgram() {\n    const {\n      gl\n    } = this;\n    this._uniformSetters = {};\n    this._uniformCount = this._getParameter(35718);\n\n    for (let i = 0; i < this._uniformCount; i++) {\n      const info = this.gl.getActiveUniform(this.handle, i);\n      const {\n        name\n      } = (0,_uniforms__WEBPACK_IMPORTED_MODULE_7__.parseUniformName)(info.name);\n      let location = gl.getUniformLocation(this.handle, name);\n      this._uniformSetters[name] = (0,_uniforms__WEBPACK_IMPORTED_MODULE_7__.getUniformSetter)(gl, location, info);\n\n      if (info.size > 1) {\n        for (let l = 0; l < info.size; l++) {\n          location = gl.getUniformLocation(this.handle, \"\".concat(name, \"[\").concat(l, \"]\"));\n          this._uniformSetters[\"\".concat(name, \"[\").concat(l, \"]\")] = (0,_uniforms__WEBPACK_IMPORTED_MODULE_7__.getUniformSetter)(gl, location, info);\n        }\n      }\n    }\n\n    this._textureIndexCounter = 0;\n  }\n\n  getActiveUniforms(uniformIndices, pname) {\n    return this.gl2.getActiveUniforms(this.handle, uniformIndices, pname);\n  }\n\n  getUniformBlockIndex(blockName) {\n    return this.gl2.getUniformBlockIndex(this.handle, blockName);\n  }\n\n  getActiveUniformBlockParameter(blockIndex, pname) {\n    return this.gl2.getActiveUniformBlockParameter(this.handle, blockIndex, pname);\n  }\n\n  uniformBlockBinding(blockIndex, blockBinding) {\n    this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);\n  }\n\n}\n//# sourceMappingURL=program.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/program.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/query.js":
/*!***************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/query.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Query; }\n/* harmony export */ });\n/* harmony import */ var _resource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resource */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/resource.js\");\n/* harmony import */ var _features__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../features */ \"./node_modules/@luma.gl/webgl/dist/esm/features/features.js\");\n/* harmony import */ var _features__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../features */ \"./node_modules/@luma.gl/webgl/dist/esm/features/webgl-features-table.js\");\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n\n\n\n\nconst GL_QUERY_RESULT = 0x8866;\nconst GL_QUERY_RESULT_AVAILABLE = 0x8867;\nconst GL_TIME_ELAPSED_EXT = 0x88bf;\nconst GL_GPU_DISJOINT_EXT = 0x8fbb;\nconst GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8c88;\nconst GL_ANY_SAMPLES_PASSED = 0x8c2f;\nconst GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8d6a;\nclass Query extends _resource__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  get [Symbol.toStringTag]() {\n    return 'Query';\n  }\n\n  static isSupported(gl) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n    const webgl2 = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl);\n    const hasTimerQuery = (0,_features__WEBPACK_IMPORTED_MODULE_2__.hasFeatures)(gl, _features__WEBPACK_IMPORTED_MODULE_3__.FEATURES.TIMER_QUERY);\n    let supported = webgl2 || hasTimerQuery;\n\n    for (const key of opts) {\n      switch (key) {\n        case 'queries':\n          supported = supported && webgl2;\n          break;\n\n        case 'timers':\n          supported = supported && hasTimerQuery;\n          break;\n\n        default:\n          (0,_utils_assert__WEBPACK_IMPORTED_MODULE_4__.assert)(false);\n      }\n    }\n\n    return supported;\n  }\n\n  constructor(gl) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    super(gl, opts);\n    this.target = null;\n    this._queryPending = false;\n    this._pollingPromise = null;\n    Object.seal(this);\n  }\n\n  beginTimeElapsedQuery() {\n    return this.begin(GL_TIME_ELAPSED_EXT);\n  }\n\n  beginOcclusionQuery() {\n    let {\n      conservative = false\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    return this.begin(conservative ? GL_ANY_SAMPLES_PASSED_CONSERVATIVE : GL_ANY_SAMPLES_PASSED);\n  }\n\n  beginTransformFeedbackQuery() {\n    return this.begin(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);\n  }\n\n  begin(target) {\n    if (this._queryPending) {\n      return this;\n    }\n\n    this.target = target;\n    this.gl2.beginQuery(this.target, this.handle);\n    return this;\n  }\n\n  end() {\n    if (this._queryPending) {\n      return this;\n    }\n\n    if (this.target) {\n      this.gl2.endQuery(this.target);\n      this.target = null;\n      this._queryPending = true;\n    }\n\n    return this;\n  }\n\n  isResultAvailable() {\n    if (!this._queryPending) {\n      return false;\n    }\n\n    const resultAvailable = this.gl2.getQueryParameter(this.handle, GL_QUERY_RESULT_AVAILABLE);\n\n    if (resultAvailable) {\n      this._queryPending = false;\n    }\n\n    return resultAvailable;\n  }\n\n  isTimerDisjoint() {\n    return this.gl2.getParameter(GL_GPU_DISJOINT_EXT);\n  }\n\n  getResult() {\n    return this.gl2.getQueryParameter(this.handle, GL_QUERY_RESULT);\n  }\n\n  getTimerMilliseconds() {\n    return this.getResult() / 1e6;\n  }\n\n  createPoll() {\n    let limit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.POSITIVE_INFINITY;\n\n    if (this._pollingPromise) {\n      return this._pollingPromise;\n    }\n\n    let counter = 0;\n    this._pollingPromise = new Promise((resolve, reject) => {\n      const poll = () => {\n        if (this.isResultAvailable()) {\n          resolve(this.getResult());\n          this._pollingPromise = null;\n        } else if (counter++ > limit) {\n          reject('Timed out');\n          this._pollingPromise = null;\n        } else {\n          requestAnimationFrame(poll);\n        }\n      };\n\n      requestAnimationFrame(poll);\n    });\n    return this._pollingPromise;\n  }\n\n  _createHandle() {\n    return Query.isSupported(this.gl) ? this.gl2.createQuery() : null;\n  }\n\n  _deleteHandle() {\n    this.gl2.deleteQuery(this.handle);\n  }\n\n}\n//# sourceMappingURL=query.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/query.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/renderbuffer-formats.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/renderbuffer-formats.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst EXT_FLOAT_WEBGL2 = 'EXT_color_buffer_float';\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  [33189]: {\n    bpp: 2\n  },\n  [33190]: {\n    gl2: true,\n    bpp: 3\n  },\n  [36012]: {\n    gl2: true,\n    bpp: 4\n  },\n  [36168]: {\n    bpp: 1\n  },\n  [34041]: {\n    bpp: 4\n  },\n  [35056]: {\n    gl2: true,\n    bpp: 4\n  },\n  [36013]: {\n    gl2: true,\n    bpp: 5\n  },\n  [32854]: {\n    bpp: 2\n  },\n  [36194]: {\n    bpp: 2\n  },\n  [32855]: {\n    bpp: 2\n  },\n  [33321]: {\n    gl2: true,\n    bpp: 1\n  },\n  [33330]: {\n    gl2: true,\n    bpp: 1\n  },\n  [33329]: {\n    gl2: true,\n    bpp: 1\n  },\n  [33332]: {\n    gl2: true,\n    bpp: 2\n  },\n  [33331]: {\n    gl2: true,\n    bpp: 2\n  },\n  [33334]: {\n    gl2: true,\n    bpp: 4\n  },\n  [33333]: {\n    gl2: true,\n    bpp: 4\n  },\n  [33323]: {\n    gl2: true,\n    bpp: 2\n  },\n  [33336]: {\n    gl2: true,\n    bpp: 2\n  },\n  [33335]: {\n    gl2: true,\n    bpp: 2\n  },\n  [33338]: {\n    gl2: true,\n    bpp: 4\n  },\n  [33337]: {\n    gl2: true,\n    bpp: 4\n  },\n  [33340]: {\n    gl2: true,\n    bpp: 8\n  },\n  [33339]: {\n    gl2: true,\n    bpp: 8\n  },\n  [32849]: {\n    gl2: true,\n    bpp: 3\n  },\n  [32856]: {\n    gl2: true,\n    bpp: 4\n  },\n  [32857]: {\n    gl2: true,\n    bpp: 4\n  },\n  [36220]: {\n    gl2: true,\n    bpp: 4\n  },\n  [36238]: {\n    gl2: true,\n    bpp: 4\n  },\n  [36975]: {\n    gl2: true,\n    bpp: 4\n  },\n  [36214]: {\n    gl2: true,\n    bpp: 8\n  },\n  [36232]: {\n    gl2: true,\n    bpp: 8\n  },\n  [36226]: {\n    gl2: true,\n    bpp: 16\n  },\n  [36208]: {\n    gl2: true,\n    bpp: 16\n  },\n  [33325]: {\n    gl2: EXT_FLOAT_WEBGL2,\n    bpp: 2\n  },\n  [33327]: {\n    gl2: EXT_FLOAT_WEBGL2,\n    bpp: 4\n  },\n  [34842]: {\n    gl2: EXT_FLOAT_WEBGL2,\n    bpp: 8\n  },\n  [33326]: {\n    gl2: EXT_FLOAT_WEBGL2,\n    bpp: 4\n  },\n  [33328]: {\n    gl2: EXT_FLOAT_WEBGL2,\n    bpp: 8\n  },\n  [34836]: {\n    gl2: EXT_FLOAT_WEBGL2,\n    bpp: 16\n  },\n  [35898]: {\n    gl2: EXT_FLOAT_WEBGL2,\n    bpp: 4\n  }\n});\n//# sourceMappingURL=renderbuffer-formats.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/renderbuffer-formats.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/renderbuffer.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/renderbuffer.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Renderbuffer; }\n/* harmony export */ });\n/* harmony import */ var _resource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resource */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/resource.js\");\n/* harmony import */ var _renderbuffer_formats__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./renderbuffer-formats */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/renderbuffer-formats.js\");\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n\n\n\n\n\nfunction isFormatSupported(gl, format, formats) {\n  const info = formats[format];\n\n  if (!info) {\n    return false;\n  }\n\n  const value = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl) ? info.gl2 || info.gl1 : info.gl1;\n\n  if (typeof value === 'string') {\n    return gl.getExtension(value);\n  }\n\n  return value;\n}\n\nclass Renderbuffer extends _resource__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  get [Symbol.toStringTag]() {\n    return 'Renderbuffer';\n  }\n\n  static isSupported(gl) {\n    let {\n      format\n    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      format: null\n    };\n    return !format || isFormatSupported(gl, format, _renderbuffer_formats__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n  }\n\n  static getSamplesForFormat(gl, _ref) {\n    let {\n      format\n    } = _ref;\n    return gl.getInternalformatParameter(36161, format, 32937);\n  }\n\n  constructor(gl) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    super(gl, opts);\n    this.initialize(opts);\n    Object.seal(this);\n  }\n\n  initialize(_ref2) {\n    let {\n      format,\n      width = 1,\n      height = 1,\n      samples = 0\n    } = _ref2;\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__.assert)(format, 'Needs format');\n\n    this._trackDeallocatedMemory();\n\n    this.gl.bindRenderbuffer(36161, this.handle);\n\n    if (samples !== 0 && (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(this.gl)) {\n      this.gl.renderbufferStorageMultisample(36161, samples, format, width, height);\n    } else {\n      this.gl.renderbufferStorage(36161, format, width, height);\n    }\n\n    this.format = format;\n    this.width = width;\n    this.height = height;\n    this.samples = samples;\n\n    this._trackAllocatedMemory(this.width * this.height * (this.samples || 1) * _renderbuffer_formats__WEBPACK_IMPORTED_MODULE_2__[\"default\"][this.format].bpp);\n\n    return this;\n  }\n\n  resize(_ref3) {\n    let {\n      width,\n      height\n    } = _ref3;\n\n    if (width !== this.width || height !== this.height) {\n      return this.initialize({\n        width,\n        height,\n        format: this.format,\n        samples: this.samples\n      });\n    }\n\n    return this;\n  }\n\n  _createHandle() {\n    return this.gl.createRenderbuffer();\n  }\n\n  _deleteHandle() {\n    this.gl.deleteRenderbuffer(this.handle);\n\n    this._trackDeallocatedMemory();\n  }\n\n  _bindHandle(handle) {\n    this.gl.bindRenderbuffer(36161, handle);\n  }\n\n  _syncHandle(handle) {\n    this.format = this.getParameter(36164);\n    this.width = this.getParameter(36162);\n    this.height = this.getParameter(36163);\n    this.samples = this.getParameter(36011);\n  }\n\n  _getParameter(pname) {\n    this.gl.bindRenderbuffer(36161, this.handle);\n    const value = this.gl.getRenderbufferParameter(36161, pname);\n    return value;\n  }\n\n}\n//# sourceMappingURL=renderbuffer.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/renderbuffer.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/resource.js":
/*!******************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/resource.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Resource; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../init */ \"./node_modules/@luma.gl/webgl/dist/esm/init.js\");\n/* harmony import */ var _webgl_utils_constants_to_keys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../webgl-utils/constants-to-keys */ \"./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/constants-to-keys.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/utils */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js\");\n/* harmony import */ var _utils_stub_methods__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/stub-methods */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/stub-methods.js\");\n\n\n\n\n\n\nconst ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';\nclass Resource {\n  get [Symbol.toStringTag]() {\n    return 'Resource';\n  }\n\n  constructor(gl) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGLContext)(gl);\n    const {\n      id,\n      userData = {}\n    } = opts;\n    this.gl = gl;\n    this.gl2 = gl;\n    this.id = id || (0,_utils_utils__WEBPACK_IMPORTED_MODULE_1__.uid)(this[Symbol.toStringTag]);\n    this.userData = userData;\n    this._bound = false;\n    this._handle = opts.handle;\n\n    if (this._handle === undefined) {\n      this._handle = this._createHandle();\n    }\n\n    this.byteLength = 0;\n\n    this._addStats();\n  }\n\n  toString() {\n    return \"\".concat(this[Symbol.toStringTag] || this.constructor.name, \"(\").concat(this.id, \")\");\n  }\n\n  get handle() {\n    return this._handle;\n  }\n\n  delete() {\n    let {\n      deleteChildren = false\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    const children = this._handle && this._deleteHandle(this._handle);\n\n    if (this._handle) {\n      this._removeStats();\n    }\n\n    this._handle = null;\n\n    if (children && deleteChildren) {\n      children.filter(Boolean).forEach(child => child.delete());\n    }\n\n    return this;\n  }\n\n  bind() {\n    let funcOrHandle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.handle;\n\n    if (typeof funcOrHandle !== 'function') {\n      this._bindHandle(funcOrHandle);\n\n      return this;\n    }\n\n    let value;\n\n    if (!this._bound) {\n      this._bindHandle(this.handle);\n\n      this._bound = true;\n      value = funcOrHandle();\n      this._bound = false;\n\n      this._bindHandle(null);\n    } else {\n      value = funcOrHandle();\n    }\n\n    return value;\n  }\n\n  unbind() {\n    this.bind(null);\n  }\n\n  getParameter(pname) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    pname = (0,_webgl_utils_constants_to_keys__WEBPACK_IMPORTED_MODULE_2__.getKeyValue)(this.gl, pname);\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__.assert)(pname);\n    const parameters = this.constructor.PARAMETERS || {};\n    const parameter = parameters[pname];\n\n    if (parameter) {\n      const isWebgl2 = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(this.gl);\n      const parameterAvailable = (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n      if (!parameterAvailable) {\n        const webgl1Default = parameter.webgl1;\n        const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n        const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n        return defaultValue;\n      }\n    }\n\n    return this._getParameter(pname, opts);\n  }\n\n  getParameters() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      parameters,\n      keys\n    } = options;\n    const PARAMETERS = this.constructor.PARAMETERS || {};\n    const isWebgl2 = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(this.gl);\n    const values = {};\n    const parameterKeys = parameters || Object.keys(PARAMETERS);\n\n    for (const pname of parameterKeys) {\n      const parameter = PARAMETERS[pname];\n      const parameterAvailable = parameter && (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n      if (parameterAvailable) {\n        const key = keys ? (0,_webgl_utils_constants_to_keys__WEBPACK_IMPORTED_MODULE_2__.getKey)(this.gl, pname) : pname;\n        values[key] = this.getParameter(pname, options);\n\n        if (keys && parameter.type === 'GLenum') {\n          values[key] = (0,_webgl_utils_constants_to_keys__WEBPACK_IMPORTED_MODULE_2__.getKey)(this.gl, values[key]);\n        }\n      }\n    }\n\n    return values;\n  }\n\n  setParameter(pname, value) {\n    pname = (0,_webgl_utils_constants_to_keys__WEBPACK_IMPORTED_MODULE_2__.getKeyValue)(this.gl, pname);\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__.assert)(pname);\n    const parameters = this.constructor.PARAMETERS || {};\n    const parameter = parameters[pname];\n\n    if (parameter) {\n      const isWebgl2 = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(this.gl);\n      const parameterAvailable = (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n      if (!parameterAvailable) {\n        throw new Error('Parameter not available on this platform');\n      }\n\n      if (parameter.type === 'GLenum') {\n        value = (0,_webgl_utils_constants_to_keys__WEBPACK_IMPORTED_MODULE_2__.getKeyValue)(value);\n      }\n    }\n\n    this._setParameter(pname, value);\n\n    return this;\n  }\n\n  setParameters(parameters) {\n    for (const pname in parameters) {\n      this.setParameter(pname, parameters[pname]);\n    }\n\n    return this;\n  }\n\n  stubRemovedMethods(className, version, methodNames) {\n    return (0,_utils_stub_methods__WEBPACK_IMPORTED_MODULE_4__.stubRemovedMethods)(this, className, version, methodNames);\n  }\n\n  initialize(opts) {}\n\n  _createHandle() {\n    throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n  }\n\n  _deleteHandle() {\n    throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n  }\n\n  _bindHandle(handle) {\n    throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n  }\n\n  _getOptsFromHandle() {\n    throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n  }\n\n  _getParameter(pname, opts) {\n    throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n  }\n\n  _setParameter(pname, value) {\n    throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n  }\n\n  _context() {\n    this.gl.luma = this.gl.luma || {};\n    return this.gl.luma;\n  }\n\n  _addStats() {\n    const name = this[Symbol.toStringTag];\n    const stats = _init__WEBPACK_IMPORTED_MODULE_5__.lumaStats.get('Resource Counts');\n    stats.get('Resources Created').incrementCount();\n    stats.get(\"\".concat(name, \"s Created\")).incrementCount();\n    stats.get(\"\".concat(name, \"s Active\")).incrementCount();\n  }\n\n  _removeStats() {\n    const name = this[Symbol.toStringTag];\n    const stats = _init__WEBPACK_IMPORTED_MODULE_5__.lumaStats.get('Resource Counts');\n    stats.get(\"\".concat(name, \"s Active\")).decrementCount();\n  }\n\n  _trackAllocatedMemory(bytes) {\n    let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this[Symbol.toStringTag];\n\n    this._trackAllocatedMemoryForContext(bytes, name);\n\n    this._trackAllocatedMemoryForContext(bytes, name, this.gl.canvas && this.gl.canvas.id);\n\n    this.byteLength = bytes;\n  }\n\n  _trackAllocatedMemoryForContext(bytes) {\n    let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this[Symbol.toStringTag];\n    let id = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n    const stats = _init__WEBPACK_IMPORTED_MODULE_5__.lumaStats.get(\"Memory Usage\".concat(id));\n    stats.get('GPU Memory').addCount(bytes);\n    stats.get(\"\".concat(name, \" Memory\")).addCount(bytes);\n  }\n\n  _trackDeallocatedMemory() {\n    let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this[Symbol.toStringTag];\n\n    this._trackDeallocatedMemoryForContext(name);\n\n    this._trackDeallocatedMemoryForContext(name, this.gl.canvas && this.gl.canvas.id);\n\n    this.byteLength = 0;\n  }\n\n  _trackDeallocatedMemoryForContext() {\n    let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this[Symbol.toStringTag];\n    let id = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n    const stats = _init__WEBPACK_IMPORTED_MODULE_5__.lumaStats.get(\"Memory Usage\".concat(id));\n    stats.get('GPU Memory').subtractCount(this.byteLength);\n    stats.get(\"\".concat(name, \" Memory\")).subtractCount(this.byteLength);\n  }\n\n}\n//# sourceMappingURL=resource.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/resource.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/shader.js":
/*!****************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/shader.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FragmentShader\": function() { return /* binding */ FragmentShader; },\n/* harmony export */   \"Shader\": function() { return /* binding */ Shader; },\n/* harmony export */   \"VertexShader\": function() { return /* binding */ VertexShader; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _glsl_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../glsl-utils */ \"./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-name.js\");\n/* harmony import */ var _glsl_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../glsl-utils */ \"./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/format-glsl-error.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/utils */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js\");\n/* harmony import */ var _resource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resource */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/resource.js\");\n\n\n\n\n\nconst ERR_SOURCE = 'Shader: GLSL source code must be a JavaScript string';\nclass Shader extends _resource__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  get [Symbol.toStringTag]() {\n    return 'Shader';\n  }\n\n  static getTypeName(shaderType) {\n    switch (shaderType) {\n      case 35633:\n        return 'vertex-shader';\n\n      case 35632:\n        return 'fragment-shader';\n\n      default:\n        (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)(false);\n        return 'unknown';\n    }\n  }\n\n  constructor(gl, props) {\n    (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGLContext)(gl);\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)(typeof props.source === 'string', ERR_SOURCE);\n    const id = (0,_glsl_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(props.source, null) || props.id || (0,_utils_utils__WEBPACK_IMPORTED_MODULE_4__.uid)(\"unnamed \".concat(Shader.getTypeName(props.shaderType)));\n    super(gl, {\n      id\n    });\n    this.shaderType = props.shaderType;\n    this.source = props.source;\n    this.initialize(props);\n  }\n\n  initialize(_ref) {\n    let {\n      source\n    } = _ref;\n    const shaderName = (0,_glsl_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(source, null);\n\n    if (shaderName) {\n      this.id = (0,_utils_utils__WEBPACK_IMPORTED_MODULE_4__.uid)(shaderName);\n    }\n\n    this._compile(source);\n  }\n\n  getParameter(pname) {\n    return this.gl.getShaderParameter(this.handle, pname);\n  }\n\n  toString() {\n    return \"\".concat(Shader.getTypeName(this.shaderType), \":\").concat(this.id);\n  }\n\n  getName() {\n    return (0,_glsl_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this.source) || 'unnamed-shader';\n  }\n\n  getSource() {\n    return this.gl.getShaderSource(this.handle);\n  }\n\n  getTranslatedSource() {\n    const extension = this.gl.getExtension('WEBGL_debug_shaders');\n    return extension ? extension.getTranslatedShaderSource(this.handle) : 'No translated source available. WEBGL_debug_shaders not implemented';\n  }\n\n  _compile() {\n    let source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.source;\n\n    if (!source.startsWith('#version ')) {\n      source = \"#version 100\\n\".concat(source);\n    }\n\n    this.source = source;\n    this.gl.shaderSource(this.handle, this.source);\n    this.gl.compileShader(this.handle);\n    const compileStatus = this.getParameter(35713);\n\n    if (!compileStatus) {\n      const infoLog = this.gl.getShaderInfoLog(this.handle);\n      const {\n        shaderName,\n        errors,\n        warnings\n      } = (0,_glsl_utils__WEBPACK_IMPORTED_MODULE_5__.parseGLSLCompilerError)(infoLog, this.source, this.shaderType, this.id);\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.error(\"GLSL compilation errors in \".concat(shaderName, \"\\n\").concat(errors))();\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.warn(\"GLSL compilation warnings in \".concat(shaderName, \"\\n\").concat(warnings))();\n      throw new Error(\"GLSL compilation errors in \".concat(shaderName));\n    }\n  }\n\n  _deleteHandle() {\n    this.gl.deleteShader(this.handle);\n  }\n\n  _getOptsFromHandle() {\n    return {\n      type: this.getParameter(35663),\n      source: this.getSource()\n    };\n  }\n\n}\nclass VertexShader extends Shader {\n  get [Symbol.toStringTag]() {\n    return 'VertexShader';\n  }\n\n  constructor(gl, props) {\n    if (typeof props === 'string') {\n      props = {\n        source: props\n      };\n    }\n\n    super(gl, Object.assign({}, props, {\n      shaderType: 35633\n    }));\n  }\n\n  _createHandle() {\n    return this.gl.createShader(35633);\n  }\n\n}\nclass FragmentShader extends Shader {\n  get [Symbol.toStringTag]() {\n    return 'FragmentShader';\n  }\n\n  constructor(gl, props) {\n    if (typeof props === 'string') {\n      props = {\n        source: props\n      };\n    }\n\n    super(gl, Object.assign({}, props, {\n      shaderType: 35632\n    }));\n  }\n\n  _createHandle() {\n    return this.gl.createShader(35632);\n  }\n\n}\n//# sourceMappingURL=shader.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/shader.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js":
/*!********************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Texture2D; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _texture__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./texture */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture.js\");\n/* harmony import */ var _utils_load_file__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/load-file */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/load-file.js\");\n\n\n\nclass Texture2D extends _texture__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  get [Symbol.toStringTag]() {\n    return 'Texture2D';\n  }\n\n  static isSupported(gl, opts) {\n    return _texture__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isSupported(gl, opts);\n  }\n\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGLContext)(gl);\n\n    if (props instanceof Promise || typeof props === 'string') {\n      props = {\n        data: props\n      };\n    }\n\n    if (typeof props.data === 'string') {\n      props = Object.assign({}, props, {\n        data: (0,_utils_load_file__WEBPACK_IMPORTED_MODULE_2__.loadImage)(props.data)\n      });\n    }\n\n    super(gl, Object.assign({}, props, {\n      target: 3553\n    }));\n    this.initialize(props);\n    Object.seal(this);\n  }\n\n}\n//# sourceMappingURL=texture-2d.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/texture-3d.js":
/*!********************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/texture-3d.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Texture3D; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _texture__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./texture */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture.js\");\n/* harmony import */ var _texture_formats__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./texture-formats */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-formats.js\");\n/* harmony import */ var _buffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./buffer */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js\");\n\n\n\n\nclass Texture3D extends _texture__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  get [Symbol.toStringTag]() {\n    return 'Texture3D';\n  }\n\n  static isSupported(gl) {\n    return (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl);\n  }\n\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(gl);\n    props = Object.assign({\n      depth: 1\n    }, props, {\n      target: 32879,\n      unpackFlipY: false\n    });\n    super(gl, props);\n    this.initialize(props);\n    Object.seal(this);\n  }\n\n  setImageData(_ref) {\n    let {\n      level = 0,\n      dataFormat = 6408,\n      width,\n      height,\n      depth = 1,\n      border = 0,\n      format,\n      type = 5121,\n      offset = 0,\n      data,\n      parameters = {}\n    } = _ref;\n\n    this._trackDeallocatedMemory('Texture');\n\n    this.gl.bindTexture(this.target, this.handle);\n    (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.withParameters)(this.gl, parameters, () => {\n      if (ArrayBuffer.isView(data)) {\n        this.gl.texImage3D(this.target, level, dataFormat, width, height, depth, border, format, type, data);\n      }\n\n      if (data instanceof _buffer__WEBPACK_IMPORTED_MODULE_2__[\"default\"]) {\n        this.gl.bindBuffer(35052, data.handle);\n        this.gl.texImage3D(this.target, level, dataFormat, width, height, depth, border, format, type, offset);\n      }\n    });\n\n    if (data && data.byteLength) {\n      this._trackAllocatedMemory(data.byteLength, 'Texture');\n    } else {\n      const channels = _texture_formats__WEBPACK_IMPORTED_MODULE_3__.DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n      const channelSize = _texture_formats__WEBPACK_IMPORTED_MODULE_3__.TYPE_SIZES[this.type] || 1;\n\n      this._trackAllocatedMemory(this.width * this.height * this.depth * channels * channelSize, 'Texture');\n    }\n\n    this.loaded = true;\n    return this;\n  }\n\n}\n//# sourceMappingURL=texture-3d.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/texture-3d.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/texture-cube.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/texture-cube.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ TextureCube; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _texture__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./texture */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture.js\");\n\n\nconst FACES = [34069, 34070, 34071, 34072, 34073, 34074];\nclass TextureCube extends _texture__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  get [Symbol.toStringTag]() {\n    return 'TextureCube';\n  }\n\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGLContext)(gl);\n    super(gl, Object.assign({}, props, {\n      target: 34067\n    }));\n    this.initialize(props);\n    Object.seal(this);\n  }\n\n  initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      mipmaps = true,\n      parameters = {}\n    } = props;\n    this.opts = props;\n    this.setCubeMapImageData(props).then(() => {\n      this.loaded = true;\n\n      if (mipmaps) {\n        this.generateMipmap(props);\n      }\n\n      this.setParameters(parameters);\n    });\n    return this;\n  }\n\n  subImage(_ref) {\n    let {\n      face,\n      data,\n      x = 0,\n      y = 0,\n      mipmapLevel = 0\n    } = _ref;\n    return this._subImage({\n      target: face,\n      data,\n      x,\n      y,\n      mipmapLevel\n    });\n  }\n\n  async setCubeMapImageData(_ref2) {\n    let {\n      width,\n      height,\n      pixels,\n      data,\n      border = 0,\n      format = 6408,\n      type = 5121\n    } = _ref2;\n    const {\n      gl\n    } = this;\n    const imageDataMap = pixels || data;\n    const resolvedFaces = await Promise.all(FACES.map(face => {\n      const facePixels = imageDataMap[face];\n      return Promise.all(Array.isArray(facePixels) ? facePixels : [facePixels]);\n    }));\n    this.bind();\n    FACES.forEach((face, index) => {\n      if (resolvedFaces[index].length > 1 && this.opts.mipmaps !== false) {\n        _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.warn(\"\".concat(this.id, \" has mipmap and multiple LODs.\"))();\n      }\n\n      resolvedFaces[index].forEach((image, lodLevel) => {\n        if (width && height) {\n          gl.texImage2D(face, lodLevel, format, width, height, border, format, type, image);\n        } else {\n          gl.texImage2D(face, lodLevel, format, format, type, image);\n        }\n      });\n    });\n    this.unbind();\n  }\n\n  setImageDataForFace(options) {\n    const {\n      face,\n      width,\n      height,\n      pixels,\n      data,\n      border = 0,\n      format = 6408,\n      type = 5121\n    } = options;\n    const {\n      gl\n    } = this;\n    const imageData = pixels || data;\n    this.bind();\n\n    if (imageData instanceof Promise) {\n      imageData.then(resolvedImageData => this.setImageDataForFace(Object.assign({}, options, {\n        face,\n        data: resolvedImageData,\n        pixels: resolvedImageData\n      })));\n    } else if (this.width || this.height) {\n      gl.texImage2D(face, 0, format, width, height, border, format, type, imageData);\n    } else {\n      gl.texImage2D(face, 0, format, format, type, imageData);\n    }\n\n    return this;\n  }\n\n}\nTextureCube.FACES = FACES;\n//# sourceMappingURL=texture-cube.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/texture-cube.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/texture-formats.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/texture-formats.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DATA_FORMAT_CHANNELS\": function() { return /* binding */ DATA_FORMAT_CHANNELS; },\n/* harmony export */   \"TEXTURE_FORMATS\": function() { return /* binding */ TEXTURE_FORMATS; },\n/* harmony export */   \"TYPE_SIZES\": function() { return /* binding */ TYPE_SIZES; },\n/* harmony export */   \"isFormatSupported\": function() { return /* binding */ isFormatSupported; },\n/* harmony export */   \"isLinearFilteringSupported\": function() { return /* binding */ isLinearFilteringSupported; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n\nconst TEXTURE_FORMATS = {\n  [6407]: {\n    dataFormat: 6407,\n    types: [5121, 33635]\n  },\n  [6408]: {\n    dataFormat: 6408,\n    types: [5121, 32819, 32820]\n  },\n  [6406]: {\n    dataFormat: 6406,\n    types: [5121]\n  },\n  [6409]: {\n    dataFormat: 6409,\n    types: [5121]\n  },\n  [6410]: {\n    dataFormat: 6410,\n    types: [5121]\n  },\n  [33326]: {\n    dataFormat: 6403,\n    types: [5126],\n    gl2: true\n  },\n  [33328]: {\n    dataFormat: 33319,\n    types: [5126],\n    gl2: true\n  },\n  [34837]: {\n    dataFormat: 6407,\n    types: [5126],\n    gl2: true\n  },\n  [34836]: {\n    dataFormat: 6408,\n    types: [5126],\n    gl2: true\n  }\n};\nconst DATA_FORMAT_CHANNELS = {\n  [6403]: 1,\n  [36244]: 1,\n  [33319]: 2,\n  [33320]: 2,\n  [6407]: 3,\n  [36248]: 3,\n  [6408]: 4,\n  [36249]: 4,\n  [6402]: 1,\n  [34041]: 1,\n  [6406]: 1,\n  [6409]: 1,\n  [6410]: 2\n};\nconst TYPE_SIZES = {\n  [5126]: 4,\n  [5125]: 4,\n  [5124]: 4,\n  [5123]: 2,\n  [5122]: 2,\n  [5131]: 2,\n  [5120]: 1,\n  [5121]: 1\n};\nfunction isFormatSupported(gl, format) {\n  const info = TEXTURE_FORMATS[format];\n\n  if (!info) {\n    return false;\n  }\n\n  if (info.gl1 === undefined && info.gl2 === undefined) {\n    return true;\n  }\n\n  const value = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl) ? info.gl2 || info.gl1 : info.gl1;\n  return typeof value === 'string' ? gl.getExtension(value) : value;\n}\nfunction isLinearFilteringSupported(gl, format) {\n  const info = TEXTURE_FORMATS[format];\n\n  switch (info && info.types[0]) {\n    case 5126:\n      return gl.getExtension('OES_texture_float_linear');\n\n    case 5131:\n      return gl.getExtension('OES_texture_half_float_linear');\n\n    default:\n      return true;\n  }\n}\n//# sourceMappingURL=texture-formats.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/texture-formats.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/texture.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/texture.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Texture; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _resource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resource */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/resource.js\");\n/* harmony import */ var _buffer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./buffer */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js\");\n/* harmony import */ var _texture_formats__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./texture-formats */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-formats.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/utils */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js\");\n\n\n\n\n\n\nconst NPOT_MIN_FILTERS = [9729, 9728];\n\nconst WebGLBuffer = globalThis.WebGLBuffer || function WebGLBuffer() {};\n\nclass Texture extends _resource__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  get [Symbol.toStringTag]() {\n    return 'Texture';\n  }\n\n  static isSupported(gl) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const {\n      format,\n      linearFiltering\n    } = opts;\n    let supported = true;\n\n    if (format) {\n      supported = supported && (0,_texture_formats__WEBPACK_IMPORTED_MODULE_2__.isFormatSupported)(gl, format);\n      supported = supported && (!linearFiltering || (0,_texture_formats__WEBPACK_IMPORTED_MODULE_2__.isLinearFilteringSupported)(gl, format));\n    }\n\n    return supported;\n  }\n\n  constructor(gl, props) {\n    const {\n      id = (0,_utils_utils__WEBPACK_IMPORTED_MODULE_3__.uid)('texture'),\n      handle,\n      target\n    } = props;\n    super(gl, {\n      id,\n      handle\n    });\n    this.target = target;\n    this.textureUnit = undefined;\n    this.loaded = false;\n    this.width = undefined;\n    this.height = undefined;\n    this.depth = undefined;\n    this.format = undefined;\n    this.type = undefined;\n    this.dataFormat = undefined;\n    this.border = undefined;\n    this.textureUnit = undefined;\n    this.mipmaps = undefined;\n  }\n\n  toString() {\n    return \"Texture(\".concat(this.id, \",\").concat(this.width, \"x\").concat(this.height, \")\");\n  }\n\n  initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let data = props.data;\n\n    if (data instanceof Promise) {\n      data.then(resolvedImageData => this.initialize(Object.assign({}, props, {\n        pixels: resolvedImageData,\n        data: resolvedImageData\n      })));\n      return this;\n    }\n\n    const isVideo = typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement;\n\n    if (isVideo && data.readyState < HTMLVideoElement.HAVE_METADATA) {\n      this._video = null;\n      data.addEventListener('loadeddata', () => this.initialize(props));\n      return this;\n    }\n\n    const {\n      pixels = null,\n      format = 6408,\n      border = 0,\n      recreate = false,\n      parameters = {},\n      pixelStore = {},\n      textureUnit = undefined\n    } = props;\n\n    if (!data) {\n      data = pixels;\n    }\n\n    let {\n      width,\n      height,\n      dataFormat,\n      type,\n      compressed = false,\n      mipmaps = true\n    } = props;\n    const {\n      depth = 0\n    } = props;\n    ({\n      width,\n      height,\n      compressed,\n      dataFormat,\n      type\n    } = this._deduceParameters({\n      format,\n      type,\n      dataFormat,\n      compressed,\n      data,\n      width,\n      height\n    }));\n    this.width = width;\n    this.height = height;\n    this.depth = depth;\n    this.format = format;\n    this.type = type;\n    this.dataFormat = dataFormat;\n    this.border = border;\n    this.textureUnit = textureUnit;\n\n    if (Number.isFinite(this.textureUnit)) {\n      this.gl.activeTexture(33984 + this.textureUnit);\n      this.gl.bindTexture(this.target, this.handle);\n    }\n\n    if (mipmaps && this._isNPOT()) {\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.warn(\"texture: \".concat(this, \" is Non-Power-Of-Two, disabling mipmaping\"))();\n      mipmaps = false;\n\n      this._updateForNPOT(parameters);\n    }\n\n    this.mipmaps = mipmaps;\n    this.setImageData({\n      data,\n      width,\n      height,\n      depth,\n      format,\n      type,\n      dataFormat,\n      border,\n      mipmaps,\n      parameters: pixelStore,\n      compressed\n    });\n\n    if (mipmaps) {\n      this.generateMipmap();\n    }\n\n    this.setParameters(parameters);\n\n    if (recreate) {\n      this.data = data;\n    }\n\n    if (isVideo) {\n      this._video = {\n        video: data,\n        parameters,\n        lastTime: data.readyState >= HTMLVideoElement.HAVE_CURRENT_DATA ? data.currentTime : -1\n      };\n    }\n\n    return this;\n  }\n\n  update() {\n    if (this._video) {\n      const {\n        video,\n        parameters,\n        lastTime\n      } = this._video;\n\n      if (lastTime === video.currentTime || video.readyState < HTMLVideoElement.HAVE_CURRENT_DATA) {\n        return;\n      }\n\n      this.setSubImageData({\n        data: video,\n        parameters\n      });\n\n      if (this.mipmaps) {\n        this.generateMipmap();\n      }\n\n      this._video.lastTime = video.currentTime;\n    }\n  }\n\n  resize(_ref) {\n    let {\n      height,\n      width,\n      mipmaps = false\n    } = _ref;\n\n    if (width !== this.width || height !== this.height) {\n      return this.initialize({\n        width,\n        height,\n        format: this.format,\n        type: this.type,\n        dataFormat: this.dataFormat,\n        border: this.border,\n        mipmaps\n      });\n    }\n\n    return this;\n  }\n\n  generateMipmap() {\n    let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (this._isNPOT()) {\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.warn(\"texture: \".concat(this, \" is Non-Power-Of-Two, disabling mipmaping\"))();\n      return this;\n    }\n\n    this.mipmaps = true;\n    this.gl.bindTexture(this.target, this.handle);\n    (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.withParameters)(this.gl, params, () => {\n      this.gl.generateMipmap(this.target);\n    });\n    this.gl.bindTexture(this.target, null);\n    return this;\n  }\n\n  setImageData(options) {\n    this._trackDeallocatedMemory('Texture');\n\n    const {\n      target = this.target,\n      pixels = null,\n      level = 0,\n      format = this.format,\n      border = this.border,\n      offset = 0,\n      parameters = {}\n    } = options;\n    let {\n      data = null,\n      type = this.type,\n      width = this.width,\n      height = this.height,\n      dataFormat = this.dataFormat,\n      compressed = false\n    } = options;\n\n    if (!data) {\n      data = pixels;\n    }\n\n    ({\n      type,\n      dataFormat,\n      compressed,\n      width,\n      height\n    } = this._deduceParameters({\n      format,\n      type,\n      dataFormat,\n      compressed,\n      data,\n      width,\n      height\n    }));\n    const {\n      gl\n    } = this;\n    gl.bindTexture(this.target, this.handle);\n    let dataType = null;\n    ({\n      data,\n      dataType\n    } = this._getDataType({\n      data,\n      compressed\n    }));\n    let gl2;\n    let compressedTextureSize = 0;\n    (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.withParameters)(this.gl, parameters, () => {\n      switch (dataType) {\n        case 'null':\n          gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n          break;\n\n        case 'typed-array':\n          gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data, offset);\n          break;\n\n        case 'buffer':\n          gl2 = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(gl);\n          gl2.bindBuffer(35052, data.handle || data);\n          gl2.texImage2D(target, level, format, width, height, border, dataFormat, type, offset);\n          gl2.bindBuffer(35052, null);\n          break;\n\n        case 'browser-object':\n          if ((0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl)) {\n            gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n          } else {\n            gl.texImage2D(target, level, format, dataFormat, type, data);\n          }\n\n          break;\n\n        case 'compressed':\n          for (const [levelIndex, levelData] of data.entries()) {\n            gl.compressedTexImage2D(target, levelIndex, levelData.format, levelData.width, levelData.height, border, levelData.data);\n            compressedTextureSize += levelData.levelSize;\n          }\n\n          break;\n\n        default:\n          (0,_utils_assert__WEBPACK_IMPORTED_MODULE_4__.assert)(false, 'Unknown image data type');\n      }\n    });\n\n    if (dataType === 'compressed') {\n      this._trackAllocatedMemory(compressedTextureSize, 'Texture');\n    } else if (data && data.byteLength) {\n      this._trackAllocatedMemory(data.byteLength, 'Texture');\n    } else {\n      const channels = _texture_formats__WEBPACK_IMPORTED_MODULE_2__.DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n      const channelSize = _texture_formats__WEBPACK_IMPORTED_MODULE_2__.TYPE_SIZES[this.type] || 1;\n\n      this._trackAllocatedMemory(this.width * this.height * channels * channelSize, 'Texture');\n    }\n\n    this.loaded = true;\n    return this;\n  }\n\n  setSubImageData(_ref2) {\n    let {\n      target = this.target,\n      pixels = null,\n      data = null,\n      x = 0,\n      y = 0,\n      width = this.width,\n      height = this.height,\n      level = 0,\n      format = this.format,\n      type = this.type,\n      dataFormat = this.dataFormat,\n      compressed = false,\n      offset = 0,\n      border = this.border,\n      parameters = {}\n    } = _ref2;\n    ({\n      type,\n      dataFormat,\n      compressed,\n      width,\n      height\n    } = this._deduceParameters({\n      format,\n      type,\n      dataFormat,\n      compressed,\n      data,\n      width,\n      height\n    }));\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_4__.assert)(this.depth === 0, 'texSubImage not supported for 3D textures');\n\n    if (!data) {\n      data = pixels;\n    }\n\n    if (data && data.data) {\n      const ndarray = data;\n      data = ndarray.data;\n      width = ndarray.shape[0];\n      height = ndarray.shape[1];\n    }\n\n    if (data instanceof _buffer__WEBPACK_IMPORTED_MODULE_5__[\"default\"]) {\n      data = data.handle;\n    }\n\n    this.gl.bindTexture(this.target, this.handle);\n    (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.withParameters)(this.gl, parameters, () => {\n      if (compressed) {\n        this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);\n      } else if (data === null) {\n        this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);\n      } else if (ArrayBuffer.isView(data)) {\n        this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);\n      } else if (data instanceof WebGLBuffer) {\n        const gl2 = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(this.gl);\n        gl2.bindBuffer(35052, data);\n        gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);\n        gl2.bindBuffer(35052, null);\n      } else if ((0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(this.gl)) {\n        const gl2 = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(this.gl);\n        gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);\n      } else {\n        this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);\n      }\n    });\n    this.gl.bindTexture(this.target, null);\n  }\n\n  copyFramebuffer() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.error('Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})')();\n    return null;\n  }\n\n  getActiveUnit() {\n    return this.gl.getParameter(34016) - 33984;\n  }\n\n  bind() {\n    let textureUnit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.textureUnit;\n    const {\n      gl\n    } = this;\n\n    if (textureUnit !== undefined) {\n      this.textureUnit = textureUnit;\n      gl.activeTexture(33984 + textureUnit);\n    }\n\n    gl.bindTexture(this.target, this.handle);\n    return textureUnit;\n  }\n\n  unbind() {\n    let textureUnit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.textureUnit;\n    const {\n      gl\n    } = this;\n\n    if (textureUnit !== undefined) {\n      this.textureUnit = textureUnit;\n      gl.activeTexture(33984 + textureUnit);\n    }\n\n    gl.bindTexture(this.target, null);\n    return textureUnit;\n  }\n\n  _getDataType(_ref3) {\n    let {\n      data,\n      compressed = false\n    } = _ref3;\n\n    if (compressed) {\n      return {\n        data,\n        dataType: 'compressed'\n      };\n    }\n\n    if (data === null) {\n      return {\n        data,\n        dataType: 'null'\n      };\n    }\n\n    if (ArrayBuffer.isView(data)) {\n      return {\n        data,\n        dataType: 'typed-array'\n      };\n    }\n\n    if (data instanceof _buffer__WEBPACK_IMPORTED_MODULE_5__[\"default\"]) {\n      return {\n        data: data.handle,\n        dataType: 'buffer'\n      };\n    }\n\n    if (data instanceof WebGLBuffer) {\n      return {\n        data,\n        dataType: 'buffer'\n      };\n    }\n\n    return {\n      data,\n      dataType: 'browser-object'\n    };\n  }\n\n  _deduceParameters(opts) {\n    const {\n      format,\n      data\n    } = opts;\n    let {\n      width,\n      height,\n      dataFormat,\n      type,\n      compressed\n    } = opts;\n    const textureFormat = _texture_formats__WEBPACK_IMPORTED_MODULE_2__.TEXTURE_FORMATS[format];\n    dataFormat = dataFormat || textureFormat && textureFormat.dataFormat;\n    type = type || textureFormat && textureFormat.types[0];\n    compressed = compressed || textureFormat && textureFormat.compressed;\n    ({\n      width,\n      height\n    } = this._deduceImageSize(data, width, height));\n    return {\n      dataFormat,\n      type,\n      compressed,\n      width,\n      height,\n      format,\n      data\n    };\n  }\n\n  _deduceImageSize(data, width, height) {\n    let size;\n\n    if (typeof ImageData !== 'undefined' && data instanceof ImageData) {\n      size = {\n        width: data.width,\n        height: data.height\n      };\n    } else if (typeof HTMLImageElement !== 'undefined' && data instanceof HTMLImageElement) {\n      size = {\n        width: data.naturalWidth,\n        height: data.naturalHeight\n      };\n    } else if (typeof HTMLCanvasElement !== 'undefined' && data instanceof HTMLCanvasElement) {\n      size = {\n        width: data.width,\n        height: data.height\n      };\n    } else if (typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) {\n      size = {\n        width: data.width,\n        height: data.height\n      };\n    } else if (typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement) {\n      size = {\n        width: data.videoWidth,\n        height: data.videoHeight\n      };\n    } else if (!data) {\n      size = {\n        width: width >= 0 ? width : 1,\n        height: height >= 0 ? height : 1\n      };\n    } else {\n      size = {\n        width,\n        height\n      };\n    }\n\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_4__.assert)(size, 'Could not deduced texture size');\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_4__.assert)(width === undefined || size.width === width, 'Deduced texture width does not match supplied width');\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_4__.assert)(height === undefined || size.height === height, 'Deduced texture height does not match supplied height');\n    return size;\n  }\n\n  _createHandle() {\n    return this.gl.createTexture();\n  }\n\n  _deleteHandle() {\n    this.gl.deleteTexture(this.handle);\n\n    this._trackDeallocatedMemory('Texture');\n  }\n\n  _getParameter(pname) {\n    switch (pname) {\n      case 4096:\n        return this.width;\n\n      case 4097:\n        return this.height;\n\n      default:\n        this.gl.bindTexture(this.target, this.handle);\n        const value = this.gl.getTexParameter(this.target, pname);\n        this.gl.bindTexture(this.target, null);\n        return value;\n    }\n  }\n\n  _setParameter(pname, param) {\n    this.gl.bindTexture(this.target, this.handle);\n    param = this._getNPOTParam(pname, param);\n\n    switch (pname) {\n      case 33082:\n      case 33083:\n        this.gl.texParameterf(this.handle, pname, param);\n        break;\n\n      case 4096:\n      case 4097:\n        (0,_utils_assert__WEBPACK_IMPORTED_MODULE_4__.assert)(false);\n        break;\n\n      default:\n        this.gl.texParameteri(this.target, pname, param);\n        break;\n    }\n\n    this.gl.bindTexture(this.target, null);\n    return this;\n  }\n\n  _isNPOT() {\n    if ((0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(this.gl)) {\n      return false;\n    }\n\n    if (!this.width || !this.height) {\n      return false;\n    }\n\n    return !(0,_utils_utils__WEBPACK_IMPORTED_MODULE_3__.isPowerOfTwo)(this.width) || !(0,_utils_utils__WEBPACK_IMPORTED_MODULE_3__.isPowerOfTwo)(this.height);\n  }\n\n  _updateForNPOT(parameters) {\n    if (parameters[this.gl.TEXTURE_MIN_FILTER] === undefined) {\n      parameters[this.gl.TEXTURE_MIN_FILTER] = this.gl.LINEAR;\n    }\n\n    if (parameters[this.gl.TEXTURE_WRAP_S] === undefined) {\n      parameters[this.gl.TEXTURE_WRAP_S] = this.gl.CLAMP_TO_EDGE;\n    }\n\n    if (parameters[this.gl.TEXTURE_WRAP_T] === undefined) {\n      parameters[this.gl.TEXTURE_WRAP_T] = this.gl.CLAMP_TO_EDGE;\n    }\n  }\n\n  _getNPOTParam(pname, param) {\n    if (this._isNPOT()) {\n      switch (pname) {\n        case 10241:\n          if (NPOT_MIN_FILTERS.indexOf(param) === -1) {\n            param = 9729;\n          }\n\n          break;\n\n        case 10242:\n        case 10243:\n          if (param !== 33071) {\n            param = 33071;\n          }\n\n          break;\n\n        default:\n          break;\n      }\n    }\n\n    return param;\n  }\n\n}\n//# sourceMappingURL=texture.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/texture.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/transform-feedback.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/transform-feedback.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ TransformFeedback; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _resource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resource */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/resource.js\");\n/* harmony import */ var _buffer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./buffer */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/utils */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js\");\n\n\n\n\nclass TransformFeedback extends _resource__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  get [Symbol.toStringTag]() {\n    return 'TransformFeedback';\n  }\n\n  static isSupported(gl) {\n    return (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl);\n  }\n\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.assertWebGL2Context)(gl);\n    super(gl, props);\n    this.initialize(props);\n    this.stubRemovedMethods('TransformFeedback', 'v6.0', ['pause', 'resume']);\n    Object.seal(this);\n  }\n\n  initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.buffers = {};\n    this.unused = {};\n    this.configuration = null;\n    this.bindOnUse = true;\n\n    if (!(0,_utils_utils__WEBPACK_IMPORTED_MODULE_2__.isObjectEmpty)(this.buffers)) {\n      this.bind(() => this._unbindBuffers());\n    }\n\n    this.setProps(props);\n    return this;\n  }\n\n  setProps(props) {\n    if ('program' in props) {\n      this.configuration = props.program && props.program.configuration;\n    }\n\n    if ('configuration' in props) {\n      this.configuration = props.configuration;\n    }\n\n    if ('bindOnUse' in props) {\n      props = props.bindOnUse;\n    }\n\n    if ('buffers' in props) {\n      this.setBuffers(props.buffers);\n    }\n  }\n\n  setBuffers() {\n    let buffers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.bind(() => {\n      for (const bufferName in buffers) {\n        this.setBuffer(bufferName, buffers[bufferName]);\n      }\n    });\n    return this;\n  }\n\n  setBuffer(locationOrName, bufferOrParams) {\n    const location = this._getVaryingIndex(locationOrName);\n\n    const {\n      buffer,\n      byteSize,\n      byteOffset\n    } = this._getBufferParams(bufferOrParams);\n\n    if (location < 0) {\n      this.unused[locationOrName] = buffer;\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.warn(\"\".concat(this.id, \" unused varying buffer \").concat(locationOrName))();\n      return this;\n    }\n\n    this.buffers[location] = bufferOrParams;\n\n    if (!this.bindOnUse) {\n      this._bindBuffer(location, buffer, byteOffset, byteSize);\n    }\n\n    return this;\n  }\n\n  begin() {\n    let primitiveMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n    this.gl.bindTransformFeedback(36386, this.handle);\n\n    this._bindBuffers();\n\n    this.gl.beginTransformFeedback(primitiveMode);\n    return this;\n  }\n\n  end() {\n    this.gl.endTransformFeedback();\n\n    this._unbindBuffers();\n\n    this.gl.bindTransformFeedback(36386, null);\n    return this;\n  }\n\n  _getBufferParams(bufferOrParams) {\n    let byteOffset;\n    let byteSize;\n    let buffer;\n\n    if (bufferOrParams instanceof _buffer__WEBPACK_IMPORTED_MODULE_3__[\"default\"] === false) {\n      buffer = bufferOrParams.buffer;\n      byteSize = bufferOrParams.byteSize;\n      byteOffset = bufferOrParams.byteOffset;\n    } else {\n      buffer = bufferOrParams;\n    }\n\n    if (byteOffset !== undefined || byteSize !== undefined) {\n      byteOffset = byteOffset || 0;\n      byteSize = byteSize || buffer.byteLength - byteOffset;\n    }\n\n    return {\n      buffer,\n      byteOffset,\n      byteSize\n    };\n  }\n\n  _getVaryingInfo(locationOrName) {\n    return this.configuration && this.configuration.getVaryingInfo(locationOrName);\n  }\n\n  _getVaryingIndex(locationOrName) {\n    if (this.configuration) {\n      return this.configuration.getVaryingInfo(locationOrName).location;\n    }\n\n    const location = Number(locationOrName);\n    return Number.isFinite(location) ? location : -1;\n  }\n\n  _bindBuffers() {\n    if (this.bindOnUse) {\n      for (const bufferIndex in this.buffers) {\n        const {\n          buffer,\n          byteSize,\n          byteOffset\n        } = this._getBufferParams(this.buffers[bufferIndex]);\n\n        this._bindBuffer(bufferIndex, buffer, byteOffset, byteSize);\n      }\n    }\n  }\n\n  _unbindBuffers() {\n    if (this.bindOnUse) {\n      for (const bufferIndex in this.buffers) {\n        this._bindBuffer(bufferIndex, null);\n      }\n    }\n  }\n\n  _bindBuffer(index, buffer) {\n    let byteOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n    let byteSize = arguments.length > 3 ? arguments[3] : undefined;\n    const handle = buffer && buffer.handle;\n\n    if (!handle || byteSize === undefined) {\n      this.gl.bindBufferBase(35982, index, handle);\n    } else {\n      this.gl.bindBufferRange(35982, index, handle, byteOffset, byteSize);\n    }\n\n    return this;\n  }\n\n  _createHandle() {\n    return this.gl.createTransformFeedback();\n  }\n\n  _deleteHandle() {\n    this.gl.deleteTransformFeedback(this.handle);\n  }\n\n  _bindHandle(handle) {\n    this.gl.bindTransformFeedback(36386, this.handle);\n  }\n\n}\n//# sourceMappingURL=transform-feedback.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/transform-feedback.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/uniforms.js":
/*!******************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/uniforms.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"checkUniformValues\": function() { return /* binding */ checkUniformValues; },\n/* harmony export */   \"copyUniform\": function() { return /* binding */ copyUniform; },\n/* harmony export */   \"getUniformSetter\": function() { return /* binding */ getUniformSetter; },\n/* harmony export */   \"parseUniformName\": function() { return /* binding */ parseUniformName; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _framebuffer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./framebuffer */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js\");\n/* harmony import */ var _renderbuffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./renderbuffer */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/renderbuffer.js\");\n/* harmony import */ var _texture__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./texture */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n\n\n\n\n\nconst UNIFORM_SETTERS = {\n  [5126]: getArraySetter.bind(null, 'uniform1fv', toFloatArray, 1, setVectorUniform),\n  [35664]: getArraySetter.bind(null, 'uniform2fv', toFloatArray, 2, setVectorUniform),\n  [35665]: getArraySetter.bind(null, 'uniform3fv', toFloatArray, 3, setVectorUniform),\n  [35666]: getArraySetter.bind(null, 'uniform4fv', toFloatArray, 4, setVectorUniform),\n  [5124]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),\n  [35667]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),\n  [35668]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),\n  [35669]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),\n  [35670]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),\n  [35671]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),\n  [35672]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),\n  [35673]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),\n  [35674]: getArraySetter.bind(null, 'uniformMatrix2fv', toFloatArray, 4, setMatrixUniform),\n  [35675]: getArraySetter.bind(null, 'uniformMatrix3fv', toFloatArray, 9, setMatrixUniform),\n  [35676]: getArraySetter.bind(null, 'uniformMatrix4fv', toFloatArray, 16, setMatrixUniform),\n  [35678]: getSamplerSetter,\n  [35680]: getSamplerSetter,\n  [5125]: getArraySetter.bind(null, 'uniform1uiv', toUIntArray, 1, setVectorUniform),\n  [36294]: getArraySetter.bind(null, 'uniform2uiv', toUIntArray, 2, setVectorUniform),\n  [36295]: getArraySetter.bind(null, 'uniform3uiv', toUIntArray, 3, setVectorUniform),\n  [36296]: getArraySetter.bind(null, 'uniform4uiv', toUIntArray, 4, setVectorUniform),\n  [35685]: getArraySetter.bind(null, 'uniformMatrix2x3fv', toFloatArray, 6, setMatrixUniform),\n  [35686]: getArraySetter.bind(null, 'uniformMatrix2x4fv', toFloatArray, 8, setMatrixUniform),\n  [35687]: getArraySetter.bind(null, 'uniformMatrix3x2fv', toFloatArray, 6, setMatrixUniform),\n  [35688]: getArraySetter.bind(null, 'uniformMatrix3x4fv', toFloatArray, 12, setMatrixUniform),\n  [35689]: getArraySetter.bind(null, 'uniformMatrix4x2fv', toFloatArray, 8, setMatrixUniform),\n  [35690]: getArraySetter.bind(null, 'uniformMatrix4x3fv', toFloatArray, 12, setMatrixUniform),\n  [35678]: getSamplerSetter,\n  [35680]: getSamplerSetter,\n  [35679]: getSamplerSetter,\n  [35682]: getSamplerSetter,\n  [36289]: getSamplerSetter,\n  [36292]: getSamplerSetter,\n  [36293]: getSamplerSetter,\n  [36298]: getSamplerSetter,\n  [36299]: getSamplerSetter,\n  [36300]: getSamplerSetter,\n  [36303]: getSamplerSetter,\n  [36306]: getSamplerSetter,\n  [36307]: getSamplerSetter,\n  [36308]: getSamplerSetter,\n  [36311]: getSamplerSetter\n};\nconst FLOAT_ARRAY = {};\nconst INT_ARRAY = {};\nconst UINT_ARRAY = {};\nconst array1 = [0];\n\nfunction toTypedArray(value, uniformLength, Type, cache) {\n  if (uniformLength === 1 && typeof value === 'boolean') {\n    value = value ? 1 : 0;\n  }\n\n  if (Number.isFinite(value)) {\n    array1[0] = value;\n    value = array1;\n  }\n\n  const length = value.length;\n\n  if (length % uniformLength) {\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.warn(\"Uniform size should be multiples of \".concat(uniformLength), value)();\n  }\n\n  if (value instanceof Type) {\n    return value;\n  }\n\n  let result = cache[length];\n\n  if (!result) {\n    result = new Type(length);\n    cache[length] = result;\n  }\n\n  for (let i = 0; i < length; i++) {\n    result[i] = value[i];\n  }\n\n  return result;\n}\n\nfunction toFloatArray(value, uniformLength) {\n  return toTypedArray(value, uniformLength, Float32Array, FLOAT_ARRAY);\n}\n\nfunction toIntArray(value, uniformLength) {\n  return toTypedArray(value, uniformLength, Int32Array, INT_ARRAY);\n}\n\nfunction toUIntArray(value, uniformLength) {\n  return toTypedArray(value, uniformLength, Uint32Array, UINT_ARRAY);\n}\n\nfunction getUniformSetter(gl, location, info) {\n  const setter = UNIFORM_SETTERS[info.type];\n\n  if (!setter) {\n    throw new Error(\"Unknown GLSL uniform type \".concat(info.type));\n  }\n\n  return setter().bind(null, gl, location);\n}\nfunction parseUniformName(name) {\n  if (name[name.length - 1] !== ']') {\n    return {\n      name,\n      length: 1,\n      isArray: false\n    };\n  }\n\n  const UNIFORM_NAME_REGEXP = /([^[]*)(\\[[0-9]+\\])?/;\n  const matches = name.match(UNIFORM_NAME_REGEXP);\n\n  if (!matches || matches.length < 2) {\n    throw new Error(\"Failed to parse GLSL uniform name \".concat(name));\n  }\n\n  return {\n    name: matches[1],\n    length: matches[2] || 1,\n    isArray: Boolean(matches[2])\n  };\n}\nfunction checkUniformValues(uniforms, source, uniformMap) {\n  for (const uniformName in uniforms) {\n    const value = uniforms[uniformName];\n    const shouldCheck = !uniformMap || Boolean(uniformMap[uniformName]);\n\n    if (shouldCheck && !checkUniformValue(value)) {\n      source = source ? \"\".concat(source, \" \") : '';\n      console.error(\"\".concat(source, \" Bad uniform \").concat(uniformName), value);\n      throw new Error(\"\".concat(source, \" Bad uniform \").concat(uniformName));\n    }\n  }\n\n  return true;\n}\n\nfunction checkUniformValue(value) {\n  if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n    return checkUniformArray(value);\n  }\n\n  if (isFinite(value)) {\n    return true;\n  } else if (value === true || value === false) {\n    return true;\n  } else if (value instanceof _texture__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) {\n    return true;\n  } else if (value instanceof _renderbuffer__WEBPACK_IMPORTED_MODULE_2__[\"default\"]) {\n    return true;\n  } else if (value instanceof _framebuffer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]) {\n    return Boolean(value.texture);\n  }\n\n  return false;\n}\n\nfunction copyUniform(uniforms, key, value) {\n  if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n    if (uniforms[key]) {\n      const dest = uniforms[key];\n\n      for (let i = 0, len = value.length; i < len; ++i) {\n        dest[i] = value[i];\n      }\n    } else {\n      uniforms[key] = value.slice();\n    }\n  } else {\n    uniforms[key] = value;\n  }\n}\n\nfunction checkUniformArray(value) {\n  if (value.length === 0) {\n    return false;\n  }\n\n  const checkLength = Math.min(value.length, 16);\n\n  for (let i = 0; i < checkLength; ++i) {\n    if (!Number.isFinite(value[i])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction getSamplerSetter() {\n  let cache = null;\n  return (gl, location, value) => {\n    const update = cache !== value;\n\n    if (update) {\n      gl.uniform1i(location, value);\n      cache = value;\n    }\n\n    return update;\n  };\n}\n\nfunction getArraySetter(functionName, toArray, size, uniformSetter) {\n  let cache = null;\n  let cacheLength = null;\n  return (gl, location, value) => {\n    const arrayValue = toArray(value, size);\n    const length = arrayValue.length;\n    let update = false;\n\n    if (cache === null) {\n      cache = new Float32Array(length);\n      cacheLength = length;\n      update = true;\n    } else {\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_4__.assert)(cacheLength === length, 'Uniform length cannot change.');\n\n      for (let i = 0; i < length; ++i) {\n        if (arrayValue[i] !== cache[i]) {\n          update = true;\n          break;\n        }\n      }\n    }\n\n    if (update) {\n      uniformSetter(gl, functionName, location, arrayValue);\n      cache.set(arrayValue);\n    }\n\n    return update;\n  };\n}\n\nfunction setVectorUniform(gl, functionName, location, value) {\n  gl[functionName](location, value);\n}\n\nfunction setMatrixUniform(gl, functionName, location, value) {\n  gl[functionName](location, false, value);\n}\n//# sourceMappingURL=uniforms.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/uniforms.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/vertex-array-object.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/vertex-array-object.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ VertexArrayObject; }\n/* harmony export */ });\n/* harmony import */ var _resource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resource */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/resource.js\");\n/* harmony import */ var _buffer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./buffer */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js\");\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _utils_array_utils_flat__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/array-utils-flat */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/array-utils-flat.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n/* harmony import */ var _probe_gl_env__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @probe.gl/env */ \"./node_modules/@probe.gl/env/dist/esm/lib/get-browser.js\");\n\n\n\n\n\n\nconst ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';\nclass VertexArrayObject extends _resource__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n  get [Symbol.toStringTag]() {\n    return 'VertexArrayObject';\n  }\n\n  static isSupported(gl) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    if (options.constantAttributeZero) {\n      return (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl) || (0,_probe_gl_env__WEBPACK_IMPORTED_MODULE_2__[\"default\"])() === 'Chrome';\n    }\n\n    return true;\n  }\n\n  static getDefaultArray(gl) {\n    gl.luma = gl.luma || {};\n\n    if (!gl.luma.defaultVertexArray) {\n      gl.luma.defaultVertexArray = new VertexArrayObject(gl, {\n        handle: null,\n        isDefaultArray: true\n      });\n    }\n\n    return gl.luma.defaultVertexArray;\n  }\n\n  static getMaxAttributes(gl) {\n    VertexArrayObject.MAX_ATTRIBUTES = VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(34921);\n    return VertexArrayObject.MAX_ATTRIBUTES;\n  }\n\n  static setConstant(gl, location, array) {\n    switch (array.constructor) {\n      case Float32Array:\n        VertexArrayObject._setConstantFloatArray(gl, location, array);\n\n        break;\n\n      case Int32Array:\n        VertexArrayObject._setConstantIntArray(gl, location, array);\n\n        break;\n\n      case Uint32Array:\n        VertexArrayObject._setConstantUintArray(gl, location, array);\n\n        break;\n\n      default:\n        (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__.assert)(false);\n    }\n  }\n\n  constructor(gl) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const id = opts.id || opts.program && opts.program.id;\n    super(gl, Object.assign({}, opts, {\n      id\n    }));\n    this.buffer = null;\n    this.bufferValue = null;\n    this.isDefaultArray = opts.isDefaultArray || false;\n    this.gl2 = gl;\n    this.initialize(opts);\n    Object.seal(this);\n  }\n\n  delete() {\n    super.delete();\n\n    if (this.buffer) {\n      this.buffer.delete();\n    }\n\n    return this;\n  }\n\n  get MAX_ATTRIBUTES() {\n    return VertexArrayObject.getMaxAttributes(this.gl);\n  }\n\n  initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    return this.setProps(props);\n  }\n\n  setProps(props) {\n    return this;\n  }\n\n  setElementBuffer() {\n    let elementBuffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__.assert)(!elementBuffer || elementBuffer.target === 34963, ERR_ELEMENTS);\n    this.bind(() => {\n      this.gl.bindBuffer(34963, elementBuffer ? elementBuffer.handle : null);\n    });\n    return this;\n  }\n\n  setBuffer(location, buffer, accessor) {\n    if (buffer.target === 34963) {\n      return this.setElementBuffer(buffer, accessor);\n    }\n\n    const {\n      size,\n      type,\n      stride,\n      offset,\n      normalized,\n      integer,\n      divisor\n    } = accessor;\n    const {\n      gl,\n      gl2\n    } = this;\n    location = Number(location);\n    this.bind(() => {\n      gl.bindBuffer(34962, buffer.handle);\n\n      if (integer) {\n        (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__.assert)((0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl));\n        gl2.vertexAttribIPointer(location, size, type, stride, offset);\n      } else {\n        gl.vertexAttribPointer(location, size, type, normalized, stride, offset);\n      }\n\n      gl.enableVertexAttribArray(location);\n      gl2.vertexAttribDivisor(location, divisor || 0);\n    });\n    return this;\n  }\n\n  enable(location) {\n    let enable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n    const disablingAttributeZero = !enable && location === 0 && !VertexArrayObject.isSupported(this.gl, {\n      constantAttributeZero: true\n    });\n\n    if (!disablingAttributeZero) {\n      location = Number(location);\n      this.bind(() => enable ? this.gl.enableVertexAttribArray(location) : this.gl.disableVertexAttribArray(location));\n    }\n\n    return this;\n  }\n\n  getConstantBuffer(elementCount, value) {\n    const constantValue = this._normalizeConstantArrayValue(value);\n\n    const byteLength = constantValue.byteLength * elementCount;\n    const length = constantValue.length * elementCount;\n    let updateNeeded = !this.buffer;\n    this.buffer = this.buffer || new _buffer__WEBPACK_IMPORTED_MODULE_4__[\"default\"](this.gl, byteLength);\n    updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);\n    updateNeeded = updateNeeded || !this._compareConstantArrayValues(constantValue, this.bufferValue);\n\n    if (updateNeeded) {\n      const typedArray = (0,_utils_array_utils_flat__WEBPACK_IMPORTED_MODULE_5__.getScratchArray)(value.constructor, length);\n      (0,_utils_array_utils_flat__WEBPACK_IMPORTED_MODULE_5__.fillArray)({\n        target: typedArray,\n        source: constantValue,\n        start: 0,\n        count: length\n      });\n      this.buffer.subData(typedArray);\n      this.bufferValue = value;\n    }\n\n    return this.buffer;\n  }\n\n  _normalizeConstantArrayValue(arrayValue) {\n    if (Array.isArray(arrayValue)) {\n      return new Float32Array(arrayValue);\n    }\n\n    return arrayValue;\n  }\n\n  _compareConstantArrayValues(v1, v2) {\n    if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {\n      return false;\n    }\n\n    for (let i = 0; i < v1.length; ++i) {\n      if (v1[i] !== v2[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  static _setConstantFloatArray(gl, location, array) {\n    switch (array.length) {\n      case 1:\n        gl.vertexAttrib1fv(location, array);\n        break;\n\n      case 2:\n        gl.vertexAttrib2fv(location, array);\n        break;\n\n      case 3:\n        gl.vertexAttrib3fv(location, array);\n        break;\n\n      case 4:\n        gl.vertexAttrib4fv(location, array);\n        break;\n\n      default:\n        (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__.assert)(false);\n    }\n  }\n\n  static _setConstantIntArray(gl, location, array) {\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__.assert)((0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl));\n\n    switch (array.length) {\n      case 1:\n        gl.vertexAttribI1iv(location, array);\n        break;\n\n      case 2:\n        gl.vertexAttribI2iv(location, array);\n        break;\n\n      case 3:\n        gl.vertexAttribI3iv(location, array);\n        break;\n\n      case 4:\n        gl.vertexAttribI4iv(location, array);\n        break;\n\n      default:\n        (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__.assert)(false);\n    }\n  }\n\n  static _setConstantUintArray(gl, location, array) {\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__.assert)((0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl));\n\n    switch (array.length) {\n      case 1:\n        gl.vertexAttribI1uiv(location, array);\n        break;\n\n      case 2:\n        gl.vertexAttribI2uiv(location, array);\n        break;\n\n      case 3:\n        gl.vertexAttribI3uiv(location, array);\n        break;\n\n      case 4:\n        gl.vertexAttribI4uiv(location, array);\n        break;\n\n      default:\n        (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__.assert)(false);\n    }\n  }\n\n  _createHandle() {\n    const gl2 = this.gl;\n    return gl2.createVertexArray();\n  }\n\n  _deleteHandle(handle) {\n    this.gl2.deleteVertexArray(handle);\n    return [this.elements];\n  }\n\n  _bindHandle(handle) {\n    this.gl2.bindVertexArray(handle);\n  }\n\n  _getParameter(pname, _ref) {\n    let {\n      location\n    } = _ref;\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_3__.assert)(Number.isFinite(location));\n    return this.bind(() => {\n      switch (pname) {\n        case 34373:\n          return this.gl.getVertexAttribOffset(location, pname);\n\n        default:\n          return this.gl.getVertexAttrib(location, pname);\n      }\n    });\n  }\n\n}\n//# sourceMappingURL=vertex-array-object.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/vertex-array-object.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/classes/vertex-array.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/classes/vertex-array.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ VertexArray; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _accessor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./accessor */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/accessor.js\");\n/* harmony import */ var _buffer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./buffer */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js\");\n/* harmony import */ var _vertex_array_object__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vertex-array-object */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/vertex-array-object.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n/* harmony import */ var _utils_stub_methods__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/stub-methods */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/stub-methods.js\");\n\n\n\n\n\n\nconst ERR_ATTRIBUTE_TYPE = 'VertexArray: attributes must be Buffers or constants (i.e. typed array)';\nconst MULTI_LOCATION_ATTRIBUTE_REGEXP = /^(.+)__LOCATION_([0-9]+)$/;\nconst DEPRECATIONS_V6 = ['setBuffers', 'setGeneric', 'clearBindings', 'setLocations', 'setGenericValues', 'setDivisor', 'enable', 'disable'];\nclass VertexArray {\n  constructor(gl) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const id = opts.id || opts.program && opts.program.id;\n    this.id = id;\n    this.gl = gl;\n    this.configuration = null;\n    this.elements = null;\n    this.elementsAccessor = null;\n    this.values = null;\n    this.accessors = null;\n    this.unused = null;\n    this.drawParams = null;\n    this.buffer = null;\n    this.attributes = {};\n    this.vertexArrayObject = new _vertex_array_object__WEBPACK_IMPORTED_MODULE_1__[\"default\"](gl);\n    (0,_utils_stub_methods__WEBPACK_IMPORTED_MODULE_2__.stubRemovedMethods)(this, 'VertexArray', 'v6.0', DEPRECATIONS_V6);\n    this.initialize(opts);\n    Object.seal(this);\n  }\n\n  delete() {\n    if (this.buffer) {\n      this.buffer.delete();\n    }\n\n    this.vertexArrayObject.delete();\n  }\n\n  initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.reset();\n    this.configuration = null;\n    this.bindOnUse = false;\n    return this.setProps(props);\n  }\n\n  reset() {\n    this.elements = null;\n    this.elementsAccessor = null;\n    const {\n      MAX_ATTRIBUTES\n    } = this.vertexArrayObject;\n    this.values = new Array(MAX_ATTRIBUTES).fill(null);\n    this.accessors = new Array(MAX_ATTRIBUTES).fill(null);\n    this.unused = {};\n    this.drawParams = null;\n    return this;\n  }\n\n  setProps(props) {\n    if ('program' in props) {\n      this.configuration = props.program && props.program.configuration;\n    }\n\n    if ('configuration' in props) {\n      this.configuration = props.configuration;\n    }\n\n    if ('attributes' in props) {\n      this.setAttributes(props.attributes);\n    }\n\n    if ('elements' in props) {\n      this.setElementBuffer(props.elements);\n    }\n\n    if ('bindOnUse' in props) {\n      props = props.bindOnUse;\n    }\n\n    return this;\n  }\n\n  clearDrawParams() {\n    this.drawParams = null;\n  }\n\n  getDrawParams() {\n    this.drawParams = this.drawParams || this._updateDrawParams();\n    return this.drawParams;\n  }\n\n  setAttributes(attributes) {\n    Object.assign(this.attributes, attributes);\n    this.vertexArrayObject.bind(() => {\n      for (const locationOrName in attributes) {\n        const value = attributes[locationOrName];\n\n        this._setAttribute(locationOrName, value);\n      }\n\n      this.gl.bindBuffer(34962, null);\n    });\n    return this;\n  }\n\n  setElementBuffer() {\n    let elementBuffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    let accessor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.elements = elementBuffer;\n    this.elementsAccessor = accessor;\n    this.clearDrawParams();\n    this.vertexArrayObject.setElementBuffer(elementBuffer, accessor);\n    return this;\n  }\n\n  setBuffer(locationOrName, buffer) {\n    let appAccessor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    if (buffer.target === 34963) {\n      return this.setElementBuffer(buffer, appAccessor);\n    }\n\n    const {\n      location,\n      accessor\n    } = this._resolveLocationAndAccessor(locationOrName, buffer, buffer.accessor, appAccessor);\n\n    if (location >= 0) {\n      this.values[location] = buffer;\n      this.accessors[location] = accessor;\n      this.clearDrawParams();\n      this.vertexArrayObject.setBuffer(location, buffer, accessor);\n    }\n\n    return this;\n  }\n\n  setConstant(locationOrName, arrayValue) {\n    let appAccessor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    const {\n      location,\n      accessor\n    } = this._resolveLocationAndAccessor(locationOrName, arrayValue, Object.assign({\n      size: arrayValue.length\n    }, appAccessor));\n\n    if (location >= 0) {\n      arrayValue = this.vertexArrayObject._normalizeConstantArrayValue(arrayValue);\n      this.values[location] = arrayValue;\n      this.accessors[location] = accessor;\n      this.clearDrawParams();\n      this.vertexArrayObject.enable(location, false);\n    }\n\n    return this;\n  }\n\n  unbindBuffers() {\n    this.vertexArrayObject.bind(() => {\n      if (this.elements) {\n        this.vertexArrayObject.setElementBuffer(null);\n      }\n\n      this.buffer = this.buffer || new _buffer__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this.gl, {\n        accessor: {\n          size: 4\n        }\n      });\n\n      for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n        if (this.values[location] instanceof _buffer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]) {\n          this.gl.disableVertexAttribArray(location);\n          this.gl.bindBuffer(34962, this.buffer.handle);\n          this.gl.vertexAttribPointer(location, 1, 5126, false, 0, 0);\n        }\n      }\n    });\n    return this;\n  }\n\n  bindBuffers() {\n    this.vertexArrayObject.bind(() => {\n      if (this.elements) {\n        this.setElementBuffer(this.elements);\n      }\n\n      for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n        const buffer = this.values[location];\n\n        if (buffer instanceof _buffer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]) {\n          this.setBuffer(location, buffer);\n        }\n      }\n    });\n    return this;\n  }\n\n  bindForDraw(vertexCount, instanceCount, func) {\n    let value;\n    this.vertexArrayObject.bind(() => {\n      this._setConstantAttributes(vertexCount, instanceCount);\n\n      value = func();\n    });\n    return value;\n  }\n\n  _resolveLocationAndAccessor(locationOrName, value, valueAccessor, appAccessor) {\n    const INVALID_RESULT = {\n      location: -1,\n      accessor: null\n    };\n\n    const {\n      location,\n      name\n    } = this._getAttributeIndex(locationOrName);\n\n    if (!Number.isFinite(location) || location < 0) {\n      this.unused[locationOrName] = value;\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.once(3, () => \"unused value \".concat(locationOrName, \" in \").concat(this.id))();\n      return INVALID_RESULT;\n    }\n\n    const accessInfo = this._getAttributeInfo(name || location);\n\n    if (!accessInfo) {\n      return INVALID_RESULT;\n    }\n\n    const currentAccessor = this.accessors[location] || {};\n    const accessor = _accessor__WEBPACK_IMPORTED_MODULE_4__[\"default\"].resolve(accessInfo.accessor, currentAccessor, valueAccessor, appAccessor);\n    const {\n      size,\n      type\n    } = accessor;\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_5__.assert)(Number.isFinite(size) && Number.isFinite(type));\n    return {\n      location,\n      accessor\n    };\n  }\n\n  _getAttributeInfo(attributeName) {\n    return this.configuration && this.configuration.getAttributeInfo(attributeName);\n  }\n\n  _getAttributeIndex(locationOrName) {\n    const location = Number(locationOrName);\n\n    if (Number.isFinite(location)) {\n      return {\n        location\n      };\n    }\n\n    const multiLocation = MULTI_LOCATION_ATTRIBUTE_REGEXP.exec(locationOrName);\n    const name = multiLocation ? multiLocation[1] : locationOrName;\n    const locationOffset = multiLocation ? Number(multiLocation[2]) : 0;\n\n    if (this.configuration) {\n      return {\n        location: this.configuration.getAttributeLocation(name) + locationOffset,\n        name\n      };\n    }\n\n    return {\n      location: -1\n    };\n  }\n\n  _setAttribute(locationOrName, value) {\n    if (value instanceof _buffer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]) {\n      this.setBuffer(locationOrName, value);\n    } else if (Array.isArray(value) && value.length && value[0] instanceof _buffer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]) {\n      const buffer = value[0];\n      const accessor = value[1];\n      this.setBuffer(locationOrName, buffer, accessor);\n    } else if (ArrayBuffer.isView(value) || Array.isArray(value)) {\n      const constant = value;\n      this.setConstant(locationOrName, constant);\n    } else if (value.buffer instanceof _buffer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]) {\n      const accessor = value;\n      this.setBuffer(locationOrName, accessor.buffer, accessor);\n    } else {\n      throw new Error(ERR_ATTRIBUTE_TYPE);\n    }\n  }\n\n  _setConstantAttributes(vertexCount, instanceCount) {\n    const elementCount = Math.max(vertexCount | 0, instanceCount | 0);\n    let constant = this.values[0];\n\n    if (ArrayBuffer.isView(constant)) {\n      this._setConstantAttributeZero(constant, elementCount);\n    }\n\n    for (let location = 1; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n      constant = this.values[location];\n\n      if (ArrayBuffer.isView(constant)) {\n        this._setConstantAttribute(location, constant);\n      }\n    }\n  }\n\n  _setConstantAttributeZero(constant, elementCount) {\n    if (_vertex_array_object__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isSupported(this.gl, {\n      constantAttributeZero: true\n    })) {\n      this._setConstantAttribute(0, constant);\n\n      return;\n    }\n\n    const buffer = this.vertexArrayObject.getConstantBuffer(elementCount, constant);\n    this.vertexArrayObject.setBuffer(0, buffer, this.accessors[0]);\n  }\n\n  _setConstantAttribute(location, constant) {\n    _vertex_array_object__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setConstant(this.gl, location, constant);\n  }\n\n  _updateDrawParams() {\n    const drawParams = {\n      isIndexed: false,\n      isInstanced: false,\n      indexCount: Infinity,\n      vertexCount: Infinity,\n      instanceCount: Infinity\n    };\n\n    for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n      this._updateDrawParamsForLocation(drawParams, location);\n    }\n\n    if (this.elements) {\n      drawParams.elementCount = this.elements.getElementCount(this.elements.accessor);\n      drawParams.isIndexed = true;\n      drawParams.indexType = this.elementsAccessor.type || this.elements.accessor.type;\n      drawParams.indexOffset = this.elementsAccessor.offset || 0;\n    }\n\n    if (drawParams.indexCount === Infinity) {\n      drawParams.indexCount = 0;\n    }\n\n    if (drawParams.vertexCount === Infinity) {\n      drawParams.vertexCount = 0;\n    }\n\n    if (drawParams.instanceCount === Infinity) {\n      drawParams.instanceCount = 0;\n    }\n\n    return drawParams;\n  }\n\n  _updateDrawParamsForLocation(drawParams, location) {\n    const value = this.values[location];\n    const accessor = this.accessors[location];\n\n    if (!value) {\n      return;\n    }\n\n    const {\n      divisor\n    } = accessor;\n    const isInstanced = divisor > 0;\n    drawParams.isInstanced = drawParams.isInstanced || isInstanced;\n\n    if (value instanceof _buffer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]) {\n      const buffer = value;\n\n      if (isInstanced) {\n        const instanceCount = buffer.getVertexCount(accessor);\n        drawParams.instanceCount = Math.min(drawParams.instanceCount, instanceCount);\n      } else {\n        const vertexCount = buffer.getVertexCount(accessor);\n        drawParams.vertexCount = Math.min(drawParams.vertexCount, vertexCount);\n      }\n    }\n  }\n\n  setElements() {\n    let elementBuffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    let accessor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.deprecated('setElements', 'setElementBuffer')();\n    return this.setElementBuffer(elementBuffer, accessor);\n  }\n\n}\n//# sourceMappingURL=vertex-array.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/classes/vertex-array.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/debug/debug-program-configuration.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/debug/debug-program-configuration.js ***!
  \***********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getDebugTableForProgramConfiguration\": function() { return /* binding */ getDebugTableForProgramConfiguration; }\n/* harmony export */ });\n/* harmony import */ var _webgl_utils_attribute_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../webgl-utils/attribute-utils */ \"./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/attribute-utils.js\");\n\nfunction getDebugTableForProgramConfiguration(config) {\n  const table = {};\n  const header = \"Accessors for \".concat(config.id);\n\n  for (const attributeInfo of config.attributeInfos) {\n    if (attributeInfo) {\n      const glslDeclaration = getGLSLDeclaration(attributeInfo);\n      table[\"in \".concat(glslDeclaration)] = {\n        [header]: JSON.stringify(attributeInfo.accessor)\n      };\n    }\n  }\n\n  for (const varyingInfo of config.varyingInfos) {\n    if (varyingInfo) {\n      const glslDeclaration = getGLSLDeclaration(varyingInfo);\n      table[\"out \".concat(glslDeclaration)] = {\n        [header]: JSON.stringify(varyingInfo.accessor)\n      };\n    }\n  }\n\n  return table;\n}\n\nfunction getGLSLDeclaration(attributeInfo) {\n  const {\n    type,\n    size\n  } = attributeInfo.accessor;\n  const typeAndName = (0,_webgl_utils_attribute_utils__WEBPACK_IMPORTED_MODULE_0__.getCompositeGLType)(type, size);\n\n  if (typeAndName) {\n    return \"\".concat(typeAndName.name, \" \").concat(attributeInfo.name);\n  }\n\n  return attributeInfo.name;\n}\n//# sourceMappingURL=debug-program-configuration.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/debug/debug-program-configuration.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/debug/debug-uniforms.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/debug/debug-uniforms.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getDebugTableForUniforms\": function() { return /* binding */ getDebugTableForUniforms; }\n/* harmony export */ });\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n/* harmony import */ var _utils_format_value__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/format-value */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/format-value.js\");\n\n\nfunction getDebugTableForUniforms(_ref) {\n  let {\n    header = 'Uniforms',\n    program,\n    uniforms,\n    undefinedOnly = false\n  } = _ref;\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(program);\n  const SHADER_MODULE_UNIFORM_REGEXP = '.*_.*';\n  const PROJECT_MODULE_UNIFORM_REGEXP = '.*Matrix';\n  const uniformLocations = program._uniformSetters;\n  const table = {};\n  const uniformNames = Object.keys(uniformLocations).sort();\n  let count = 0;\n\n  for (const uniformName of uniformNames) {\n    if (!uniformName.match(SHADER_MODULE_UNIFORM_REGEXP) && !uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)) {\n      if (addUniformToTable({\n        table,\n        header,\n        uniforms,\n        uniformName,\n        undefinedOnly\n      })) {\n        count++;\n      }\n    }\n  }\n\n  for (const uniformName of uniformNames) {\n    if (uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)) {\n      if (addUniformToTable({\n        table,\n        header,\n        uniforms,\n        uniformName,\n        undefinedOnly\n      })) {\n        count++;\n      }\n    }\n  }\n\n  for (const uniformName of uniformNames) {\n    if (!table[uniformName]) {\n      if (addUniformToTable({\n        table,\n        header,\n        uniforms,\n        uniformName,\n        undefinedOnly\n      })) {\n        count++;\n      }\n    }\n  }\n\n  let unusedCount = 0;\n  const unusedTable = {};\n\n  if (!undefinedOnly) {\n    for (const uniformName in uniforms) {\n      const uniform = uniforms[uniformName];\n\n      if (!table[uniformName]) {\n        unusedCount++;\n        unusedTable[uniformName] = {\n          Type: \"NOT USED: \".concat(uniform),\n          [header]: (0,_utils_format_value__WEBPACK_IMPORTED_MODULE_1__.formatValue)(uniform)\n        };\n      }\n    }\n  }\n\n  return {\n    table,\n    count,\n    unusedTable,\n    unusedCount\n  };\n}\n\nfunction addUniformToTable(_ref2) {\n  let {\n    table,\n    header,\n    uniforms,\n    uniformName,\n    undefinedOnly\n  } = _ref2;\n  const value = uniforms[uniformName];\n  const isDefined = isUniformDefined(value);\n\n  if (!undefinedOnly || !isDefined) {\n    table[uniformName] = {\n      [header]: isDefined ? (0,_utils_format_value__WEBPACK_IMPORTED_MODULE_1__.formatValue)(value) : 'N/A',\n      'Uniform Type': isDefined ? value : 'NOT PROVIDED'\n    };\n    return true;\n  }\n\n  return false;\n}\n\nfunction isUniformDefined(value) {\n  return value !== undefined && value !== null;\n}\n//# sourceMappingURL=debug-uniforms.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/debug/debug-uniforms.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/debug/debug-vertex-array.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/debug/debug-vertex-array.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getDebugTableForVertexArray\": function() { return /* binding */ getDebugTableForVertexArray; }\n/* harmony export */ });\n/* harmony import */ var _classes_buffer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../classes/buffer */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js\");\n/* harmony import */ var _webgl_utils_constants_to_keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../webgl-utils/constants-to-keys */ \"./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/constants-to-keys.js\");\n/* harmony import */ var _webgl_utils_attribute_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../webgl-utils/attribute-utils */ \"./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/attribute-utils.js\");\n/* harmony import */ var _utils_format_value__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/format-value */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/format-value.js\");\n\n\n\n\nfunction getDebugTableForVertexArray(_ref) {\n  let {\n    vertexArray,\n    header = 'Attributes'\n  } = _ref;\n\n  if (!vertexArray.configuration) {\n    return {};\n  }\n\n  const table = {};\n\n  if (vertexArray.elements) {\n    table.ELEMENT_ARRAY_BUFFER = getDebugTableRow(vertexArray, vertexArray.elements, null, header);\n  }\n\n  const attributes = vertexArray.values;\n\n  for (const attributeLocation in attributes) {\n    const info = vertexArray._getAttributeInfo(attributeLocation);\n\n    if (info) {\n      let rowHeader = \"\".concat(attributeLocation, \": \").concat(info.name);\n      const accessor = vertexArray.accessors[info.location];\n\n      if (accessor) {\n        rowHeader = \"\".concat(attributeLocation, \": \").concat(getGLSLDeclaration(info.name, accessor));\n      }\n\n      table[rowHeader] = getDebugTableRow(vertexArray, attributes[attributeLocation], accessor, header);\n    }\n  }\n\n  return table;\n}\n\nfunction getDebugTableRow(vertexArray, attribute, accessor, header) {\n  const {\n    gl\n  } = vertexArray;\n\n  if (!attribute) {\n    return {\n      [header]: 'null',\n      'Format ': 'N/A'\n    };\n  }\n\n  let type = 'NOT PROVIDED';\n  let size = 1;\n  let verts = 0;\n  let bytes = 0;\n  let isInteger;\n  let marker;\n  let value;\n\n  if (accessor) {\n    type = accessor.type;\n    size = accessor.size;\n    type = String(type).replace('Array', '');\n    isInteger = type.indexOf('nt') !== -1;\n  }\n\n  if (attribute instanceof _classes_buffer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n    const buffer = attribute;\n    const {\n      data,\n      changed\n    } = buffer.getDebugData();\n    marker = changed ? '*' : '';\n    value = data;\n    bytes = buffer.byteLength;\n    verts = bytes / data.BYTES_PER_ELEMENT / size;\n    let format;\n\n    if (accessor) {\n      const instanced = accessor.divisor > 0;\n      format = \"\".concat(instanced ? 'I ' : 'P ', \" \").concat(verts, \" (x\").concat(size, \"=\").concat(bytes, \" bytes \").concat((0,_webgl_utils_constants_to_keys__WEBPACK_IMPORTED_MODULE_1__.getKey)(gl, type), \")\");\n    } else {\n      isInteger = true;\n      format = \"\".concat(bytes, \" bytes\");\n    }\n\n    return {\n      [header]: \"\".concat(marker).concat((0,_utils_format_value__WEBPACK_IMPORTED_MODULE_2__.formatValue)(value, {\n        size,\n        isInteger\n      })),\n      'Format ': format\n    };\n  }\n\n  value = attribute;\n  size = attribute.length;\n  type = String(attribute.constructor.name).replace('Array', '');\n  isInteger = type.indexOf('nt') !== -1;\n  return {\n    [header]: \"\".concat((0,_utils_format_value__WEBPACK_IMPORTED_MODULE_2__.formatValue)(value, {\n      size,\n      isInteger\n    }), \" (constant)\"),\n    'Format ': \"\".concat(size, \"x\").concat(type, \" (constant)\")\n  };\n}\n\nfunction getGLSLDeclaration(name, accessor) {\n  const {\n    type,\n    size\n  } = accessor;\n  const typeAndName = (0,_webgl_utils_attribute_utils__WEBPACK_IMPORTED_MODULE_3__.getCompositeGLType)(type, size);\n  return typeAndName ? \"\".concat(name, \" (\").concat(typeAndName.name, \")\") : name;\n}\n//# sourceMappingURL=debug-vertex-array.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/debug/debug-vertex-array.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/features/features.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/features/features.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getFeatures\": function() { return /* binding */ getFeatures; },\n/* harmony export */   \"hasFeature\": function() { return /* binding */ hasFeature; },\n/* harmony export */   \"hasFeatures\": function() { return /* binding */ hasFeatures; }\n/* harmony export */ });\n/* harmony import */ var _webgl_features_table__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webgl-features-table */ \"./node_modules/@luma.gl/webgl/dist/esm/features/webgl-features-table.js\");\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n\n\n\nconst LOG_UNSUPPORTED_FEATURE = 2;\nfunction hasFeature(gl, feature) {\n  return hasFeatures(gl, feature);\n}\nfunction hasFeatures(gl, features) {\n  features = Array.isArray(features) ? features : [features];\n  return features.every(feature => {\n    return isFeatureSupported(gl, feature);\n  });\n}\nfunction getFeatures(gl) {\n  gl.luma = gl.luma || {};\n  gl.luma.caps = gl.luma.caps || {};\n\n  for (const cap in _webgl_features_table__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) {\n    if (gl.luma.caps[cap] === undefined) {\n      gl.luma.caps[cap] = isFeatureSupported(gl, cap);\n    }\n  }\n\n  return gl.luma.caps;\n}\n\nfunction isFeatureSupported(gl, cap) {\n  gl.luma = gl.luma || {};\n  gl.luma.caps = gl.luma.caps || {};\n\n  if (gl.luma.caps[cap] === undefined) {\n    gl.luma.caps[cap] = queryFeature(gl, cap);\n  }\n\n  if (!gl.luma.caps[cap]) {\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.log(LOG_UNSUPPORTED_FEATURE, \"Feature: \".concat(cap, \" not supported\"))();\n  }\n\n  return gl.luma.caps[cap];\n}\n\nfunction queryFeature(gl, cap) {\n  const feature = _webgl_features_table__WEBPACK_IMPORTED_MODULE_1__[\"default\"][cap];\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)(feature, cap);\n  let isSupported;\n  const featureDefinition = (0,_luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.isWebGL2)(gl) ? feature[1] || feature[0] : feature[0];\n\n  if (typeof featureDefinition === 'function') {\n    isSupported = featureDefinition(gl);\n  } else if (Array.isArray(featureDefinition)) {\n    isSupported = true;\n\n    for (const extension of featureDefinition) {\n      isSupported = isSupported && Boolean(gl.getExtension(extension));\n    }\n  } else if (typeof featureDefinition === 'string') {\n    isSupported = Boolean(gl.getExtension(featureDefinition));\n  } else if (typeof featureDefinition === 'boolean') {\n    isSupported = featureDefinition;\n  } else {\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)(false);\n  }\n\n  return isSupported;\n}\n//# sourceMappingURL=features.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/features/features.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/features/webgl-features-table.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/features/webgl-features-table.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FEATURES\": function() { return /* binding */ FEATURES; }\n/* harmony export */ });\n/* harmony import */ var _classes_framebuffer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../classes/framebuffer */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js\");\n/* harmony import */ var _classes_texture_2d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../classes/texture-2d */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js\");\n\n\nconst FEATURES = {\n  WEBGL2: 'WEBGL2',\n  VERTEX_ARRAY_OBJECT: 'VERTEX_ARRAY_OBJECT',\n  TIMER_QUERY: 'TIMER_QUERY',\n  INSTANCED_RENDERING: 'INSTANCED_RENDERING',\n  MULTIPLE_RENDER_TARGETS: 'MULTIPLE_RENDER_TARGETS',\n  ELEMENT_INDEX_UINT32: 'ELEMENT_INDEX_UINT32',\n  BLEND_EQUATION_MINMAX: 'BLEND_EQUATION_MINMAX',\n  FLOAT_BLEND: 'FLOAT_BLEND',\n  COLOR_ENCODING_SRGB: 'COLOR_ENCODING_SRGB',\n  TEXTURE_DEPTH: 'TEXTURE_DEPTH',\n  TEXTURE_FLOAT: 'TEXTURE_FLOAT',\n  TEXTURE_HALF_FLOAT: 'TEXTURE_HALF_FLOAT',\n  TEXTURE_FILTER_LINEAR_FLOAT: 'TEXTURE_FILTER_LINEAR_FLOAT',\n  TEXTURE_FILTER_LINEAR_HALF_FLOAT: 'TEXTURE_FILTER_LINEAR_HALF_FLOAT',\n  TEXTURE_FILTER_ANISOTROPIC: 'TEXTURE_FILTER_ANISOTROPIC',\n  COLOR_ATTACHMENT_RGBA32F: 'COLOR_ATTACHMENT_RGBA32F',\n  COLOR_ATTACHMENT_FLOAT: 'COLOR_ATTACHMENT_FLOAT',\n  COLOR_ATTACHMENT_HALF_FLOAT: 'COLOR_ATTACHMENT_HALF_FLOAT',\n  GLSL_FRAG_DATA: 'GLSL_FRAG_DATA',\n  GLSL_FRAG_DEPTH: 'GLSL_FRAG_DEPTH',\n  GLSL_DERIVATIVES: 'GLSL_DERIVATIVES',\n  GLSL_TEXTURE_LOD: 'GLSL_TEXTURE_LOD'\n};\n\nfunction checkFloat32ColorAttachment(gl) {\n  const testTexture = new _classes_texture_2d__WEBPACK_IMPORTED_MODULE_0__[\"default\"](gl, {\n    format: 6408,\n    type: 5126,\n    dataFormat: 6408\n  });\n  const testFb = new _classes_framebuffer__WEBPACK_IMPORTED_MODULE_1__[\"default\"](gl, {\n    id: \"test-framebuffer\",\n    check: false,\n    attachments: {\n      [36064]: testTexture\n    }\n  });\n  const status = testFb.getStatus();\n  testTexture.delete();\n  testFb.delete();\n  return status === 36053;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  [FEATURES.WEBGL2]: [false, true],\n  [FEATURES.VERTEX_ARRAY_OBJECT]: ['OES_vertex_array_object', true],\n  [FEATURES.TIMER_QUERY]: ['EXT_disjoint_timer_query', 'EXT_disjoint_timer_query_webgl2'],\n  [FEATURES.INSTANCED_RENDERING]: ['ANGLE_instanced_arrays', true],\n  [FEATURES.MULTIPLE_RENDER_TARGETS]: ['WEBGL_draw_buffers', true],\n  [FEATURES.ELEMENT_INDEX_UINT32]: ['OES_element_index_uint', true],\n  [FEATURES.BLEND_EQUATION_MINMAX]: ['EXT_blend_minmax', true],\n  [FEATURES.FLOAT_BLEND]: ['EXT_float_blend'],\n  [FEATURES.COLOR_ENCODING_SRGB]: ['EXT_sRGB', true],\n  [FEATURES.TEXTURE_DEPTH]: ['WEBGL_depth_texture', true],\n  [FEATURES.TEXTURE_FLOAT]: ['OES_texture_float', true],\n  [FEATURES.TEXTURE_HALF_FLOAT]: ['OES_texture_half_float', true],\n  [FEATURES.TEXTURE_FILTER_LINEAR_FLOAT]: ['OES_texture_float_linear'],\n  [FEATURES.TEXTURE_FILTER_LINEAR_HALF_FLOAT]: ['OES_texture_half_float_linear'],\n  [FEATURES.TEXTURE_FILTER_ANISOTROPIC]: ['EXT_texture_filter_anisotropic'],\n  [FEATURES.COLOR_ATTACHMENT_RGBA32F]: [checkFloat32ColorAttachment, 'EXT_color_buffer_float'],\n  [FEATURES.COLOR_ATTACHMENT_FLOAT]: [false, 'EXT_color_buffer_float'],\n  [FEATURES.COLOR_ATTACHMENT_HALF_FLOAT]: ['EXT_color_buffer_half_float'],\n  [FEATURES.GLSL_FRAG_DATA]: ['WEBGL_draw_buffers', true],\n  [FEATURES.GLSL_FRAG_DEPTH]: ['EXT_frag_depth', true],\n  [FEATURES.GLSL_DERIVATIVES]: ['OES_standard_derivatives', true],\n  [FEATURES.GLSL_TEXTURE_LOD]: ['EXT_shader_texture_lod', true]\n});\n//# sourceMappingURL=webgl-features-table.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/features/webgl-features-table.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/format-glsl-error.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/format-glsl-error.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ formatGLSLCompilerError; },\n/* harmony export */   \"parseGLSLCompilerError\": function() { return /* binding */ parseGLSLCompilerError; }\n/* harmony export */ });\n/* harmony import */ var _get_shader_name__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-shader-name */ \"./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-name.js\");\n/* harmony import */ var _get_shader_type_name__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-shader-type-name */ \"./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-type-name.js\");\n\n\nfunction formatGLSLCompilerError(errLog, src, shaderType) {\n  const {\n    shaderName,\n    errors,\n    warnings\n  } = parseGLSLCompilerError(errLog, src, shaderType);\n  return \"GLSL compilation error in \".concat(shaderName, \"\\n\\n\").concat(errors, \"\\n\").concat(warnings);\n}\nfunction parseGLSLCompilerError(errLog, src, shaderType, shaderName) {\n  const errorStrings = errLog.split(/\\r?\\n/);\n  const errors = {};\n  const warnings = {};\n  const name = shaderName || (0,_get_shader_name__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(src) || '(unnamed)';\n  const shaderDescription = \"\".concat((0,_get_shader_type_name__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(shaderType), \" shader \").concat(name);\n\n  for (let i = 0; i < errorStrings.length; i++) {\n    const errorString = errorStrings[i];\n\n    if (errorString.length <= 1) {\n      continue;\n    }\n\n    const segments = errorString.split(':');\n    const type = segments[0];\n    const line = parseInt(segments[2], 10);\n\n    if (isNaN(line)) {\n      throw new Error(\"GLSL compilation error in \".concat(shaderDescription, \": \").concat(errLog));\n    }\n\n    if (type !== 'WARNING') {\n      errors[line] = errorString;\n    } else {\n      warnings[line] = errorString;\n    }\n  }\n\n  const lines = addLineNumbers(src);\n  return {\n    shaderName: shaderDescription,\n    errors: formatErrors(errors, lines),\n    warnings: formatErrors(warnings, lines)\n  };\n}\n\nfunction formatErrors(errors, lines) {\n  let message = '';\n\n  for (let i = 0; i < lines.length; i++) {\n    const line = lines[i];\n\n    if (!errors[i + 3] && !errors[i + 2] && !errors[i + 1]) {\n      continue;\n    }\n\n    message += \"\".concat(line, \"\\n\");\n\n    if (errors[i + 1]) {\n      const error = errors[i + 1];\n      const segments = error.split(':', 3);\n      const type = segments[0];\n      const column = parseInt(segments[1], 10) || 0;\n      const err = error.substring(segments.join(':').length + 1).trim();\n      message += padLeft(\"^^^ \".concat(type, \": \").concat(err, \"\\n\\n\"), column);\n    }\n  }\n\n  return message;\n}\n\nfunction addLineNumbers(string) {\n  let start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  let delim = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ': ';\n  const lines = string.split(/\\r?\\n/);\n  const maxDigits = String(lines.length + start - 1).length;\n  return lines.map((line, i) => {\n    const lineNumber = String(i + start);\n    const digits = lineNumber.length;\n    const prefix = padLeft(lineNumber, maxDigits - digits);\n    return prefix + delim + line;\n  });\n}\n\nfunction padLeft(string, digits) {\n  let result = '';\n\n  for (let i = 0; i < digits; ++i) {\n    result += ' ';\n  }\n\n  return \"\".concat(result).concat(string);\n}\n//# sourceMappingURL=format-glsl-error.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/format-glsl-error.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-name.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-name.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getShaderName; }\n/* harmony export */ });\nfunction getShaderName(shader) {\n  let defaultName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'unnamed';\n  const SHADER_NAME_REGEXP = /#define[\\s*]SHADER_NAME[\\s*]([A-Za-z0-9_-]+)[\\s*]/;\n  const match = shader.match(SHADER_NAME_REGEXP);\n  return match ? match[1] : defaultName;\n}\n//# sourceMappingURL=get-shader-name.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-name.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-type-name.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-type-name.js ***!
  \*********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getShaderTypeName; }\n/* harmony export */ });\nconst GL_FRAGMENT_SHADER = 0x8b30;\nconst GL_VERTEX_SHADER = 0x8b31;\nfunction getShaderTypeName(type) {\n  switch (type) {\n    case GL_FRAGMENT_SHADER:\n      return 'fragment';\n\n    case GL_VERTEX_SHADER:\n      return 'vertex';\n\n    default:\n      return 'unknown type';\n  }\n}\n//# sourceMappingURL=get-shader-type-name.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-type-name.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-version.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-version.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getShaderVersion; }\n/* harmony export */ });\nfunction getShaderVersion(source) {\n  let version = 100;\n  const words = source.match(/[^\\s]+/g);\n\n  if (words.length >= 2 && words[0] === '#version') {\n    const v = parseInt(words[1], 10);\n\n    if (Number.isFinite(v)) {\n      version = v;\n    }\n  }\n\n  return version;\n}\n//# sourceMappingURL=get-shader-version.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-version.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/init.js":
/*!******************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/init.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"StatsManager\": function() { return /* binding */ StatsManager; },\n/* harmony export */   \"lumaStats\": function() { return /* binding */ lumaStats; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n/* harmony import */ var _probe_gl_stats__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @probe.gl/stats */ \"./node_modules/@probe.gl/stats/dist/esm/index.js\");\n/* harmony import */ var _probe_gl_env__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @probe.gl/env */ \"./node_modules/@probe.gl/env/dist/esm/lib/is-browser.js\");\n\n\n\nconst VERSION =  true ? \"8.5.18\" : 0;\nconst STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';\nclass StatsManager {\n  constructor() {\n    this.stats = new Map();\n  }\n\n  get(name) {\n    if (!this.stats.has(name)) {\n      this.stats.set(name, new _probe_gl_stats__WEBPACK_IMPORTED_MODULE_1__.Stats({\n        id: name\n      }));\n    }\n\n    return this.stats.get(name);\n  }\n\n}\nconst lumaStats = new StatsManager();\n\nif (globalThis.luma && globalThis.luma.VERSION !== VERSION) {\n  throw new Error(\"luma.gl - multiple VERSIONs detected: \".concat(globalThis.luma.VERSION, \" vs \").concat(VERSION));\n}\n\nif (!globalThis.luma) {\n  if ((0,_probe_gl_env__WEBPACK_IMPORTED_MODULE_2__[\"default\"])()) {\n    _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.log(1, \"luma.gl \".concat(VERSION, \" - \").concat(STARTUP_MESSAGE))();\n  }\n\n  globalThis.luma = globalThis.luma || {\n    VERSION,\n    version: VERSION,\n    log: _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log,\n    stats: lumaStats,\n    globals: {\n      modules: {},\n      nodeIO: {}\n    }\n  };\n}\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (globalThis.luma);\n//# sourceMappingURL=init.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/init.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/utils/array-utils-flat.js":
/*!************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/utils/array-utils-flat.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"fillArray\": function() { return /* binding */ fillArray; },\n/* harmony export */   \"getScratchArray\": function() { return /* binding */ getScratchArray; },\n/* harmony export */   \"getScratchArrayBuffer\": function() { return /* binding */ getScratchArrayBuffer; }\n/* harmony export */ });\nlet arrayBuffer = null;\nfunction getScratchArrayBuffer(byteLength) {\n  if (!arrayBuffer || arrayBuffer.byteLength < byteLength) {\n    arrayBuffer = new ArrayBuffer(byteLength);\n  }\n\n  return arrayBuffer;\n}\nfunction getScratchArray(Type, length) {\n  const scratchArrayBuffer = getScratchArrayBuffer(Type.BYTES_PER_ELEMENT * length);\n  return new Type(scratchArrayBuffer, 0, length);\n}\nfunction fillArray(_ref) {\n  let {\n    target,\n    source,\n    start = 0,\n    count = 1\n  } = _ref;\n  const length = source.length;\n  const total = count * length;\n  let copied = 0;\n\n  for (let i = start; copied < length; copied++) {\n    target[i++] = source[copied];\n  }\n\n  while (copied < total) {\n    if (copied < total - copied) {\n      target.copyWithin(start + copied, start, start + copied);\n      copied *= 2;\n    } else {\n      target.copyWithin(start + copied, start, start + total - copied);\n      copied = total;\n    }\n  }\n\n  return target;\n}\n//# sourceMappingURL=array-utils-flat.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/utils/array-utils-flat.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js":
/*!**************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"assert\": function() { return /* binding */ assert; }\n/* harmony export */ });\nfunction assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'luma.gl: assertion failed.');\n  }\n}\n//# sourceMappingURL=assert.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/utils/check-props.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/utils/check-props.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"checkProps\": function() { return /* binding */ checkProps; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n\nfunction checkProps(className, props, propChecks) {\n  const {\n    removedProps = {},\n    deprecatedProps = {},\n    replacedProps = {}\n  } = propChecks;\n\n  for (const propName in removedProps) {\n    if (propName in props) {\n      const replacementProp = removedProps[propName];\n      const replacement = replacementProp ? \"\".concat(className, \".\").concat(removedProps[propName]) : 'N/A';\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.removed(\"\".concat(className, \".\").concat(propName), replacement)();\n    }\n  }\n\n  for (const propName in deprecatedProps) {\n    if (propName in props) {\n      const replacementProp = deprecatedProps[propName];\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.deprecated(\"\".concat(className, \".\").concat(propName), \"\".concat(className, \".\").concat(replacementProp))();\n    }\n  }\n\n  let newProps = null;\n\n  for (const propName in replacedProps) {\n    if (propName in props) {\n      const replacementProp = replacedProps[propName];\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.deprecated(\"\".concat(className, \".\").concat(propName), \"\".concat(className, \".\").concat(replacementProp))();\n      newProps = newProps || Object.assign({}, props);\n      newProps[replacementProp] = props[propName];\n      delete newProps[propName];\n    }\n  }\n\n  return newProps || props;\n}\n//# sourceMappingURL=check-props.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/utils/check-props.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/utils/format-value.js":
/*!********************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/utils/format-value.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"formatValue\": function() { return /* binding */ formatValue; }\n/* harmony export */ });\nfunction formatArrayValue(v, opts) {\n  const {\n    maxElts = 16,\n    size = 1\n  } = opts;\n  let string = '[';\n\n  for (let i = 0; i < v.length && i < maxElts; ++i) {\n    if (i > 0) {\n      string += \",\".concat(i % size === 0 ? ' ' : '');\n    }\n\n    string += formatValue(v[i], opts);\n  }\n\n  const terminator = v.length > maxElts ? '...' : ']';\n  return \"\".concat(string).concat(terminator);\n}\n\nfunction formatValue(v) {\n  let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const EPSILON = 1e-16;\n  const {\n    isInteger = false\n  } = opts;\n\n  if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n    return formatArrayValue(v, opts);\n  }\n\n  if (!Number.isFinite(v)) {\n    return String(v);\n  }\n\n  if (Math.abs(v) < EPSILON) {\n    return isInteger ? '0' : '0.';\n  }\n\n  if (isInteger) {\n    return v.toFixed(0);\n  }\n\n  if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n    return v.toFixed(0);\n  }\n\n  const string = v.toPrecision(2);\n  const decimal = string.indexOf('.0');\n  return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n//# sourceMappingURL=format-value.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/utils/format-value.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/utils/load-file.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/utils/load-file.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"loadFile\": function() { return /* binding */ loadFile; },\n/* harmony export */   \"loadImage\": function() { return /* binding */ loadImage; },\n/* harmony export */   \"setPathPrefix\": function() { return /* binding */ setPathPrefix; }\n/* harmony export */ });\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n\nlet pathPrefix = '';\nfunction setPathPrefix(prefix) {\n  pathPrefix = prefix;\n}\nfunction loadFile(url) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(typeof url === 'string');\n  url = pathPrefix + url;\n  const dataType = options.dataType || 'text';\n  return fetch(url, options).then(res => res[dataType]());\n}\nfunction loadImage(url, opts) {\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(typeof url === 'string');\n  url = pathPrefix + url;\n  return new Promise((resolve, reject) => {\n    try {\n      const image = new Image();\n\n      image.onload = () => resolve(image);\n\n      image.onerror = () => reject(new Error(\"Could not load image \".concat(url, \".\")));\n\n      image.crossOrigin = opts && opts.crossOrigin || 'anonymous';\n      image.src = url;\n    } catch (error) {\n      reject(error);\n    }\n  });\n}\n//# sourceMappingURL=load-file.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/utils/load-file.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/utils/stub-methods.js":
/*!********************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/utils/stub-methods.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"stubRemovedMethods\": function() { return /* binding */ stubRemovedMethods; }\n/* harmony export */ });\n/* harmony import */ var _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/gltools */ \"./node_modules/@luma.gl/gltools/dist/esm/index.js\");\n\nfunction stubRemovedMethods(instance, className, version, methodNames) {\n  const upgradeMessage = \"See luma.gl \".concat(version, \" Upgrade Guide at https://luma.gl/docs/upgrade-guide\");\n  const prototype = Object.getPrototypeOf(instance);\n  methodNames.forEach(methodName => {\n    if (prototype.methodName) {\n      return;\n    }\n\n    prototype[methodName] = () => {\n      _luma_gl_gltools__WEBPACK_IMPORTED_MODULE_0__.log.removed(\"Calling removed method \".concat(className, \".\").concat(methodName, \": \"), upgradeMessage)();\n      throw new Error(methodName);\n    };\n  });\n}\n//# sourceMappingURL=stub-methods.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/utils/stub-methods.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js":
/*!*************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isObjectEmpty\": function() { return /* binding */ isObjectEmpty; },\n/* harmony export */   \"isPowerOfTwo\": function() { return /* binding */ isPowerOfTwo; },\n/* harmony export */   \"uid\": function() { return /* binding */ uid; }\n/* harmony export */ });\n/* harmony import */ var _assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n\nconst uidCounters = {};\nfunction uid() {\n  let id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'id';\n  uidCounters[id] = uidCounters[id] || 1;\n  const count = uidCounters[id]++;\n  return \"\".concat(id, \"-\").concat(count);\n}\nfunction isPowerOfTwo(n) {\n  (0,_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(typeof n === 'number', 'Input must be a number');\n  return n && (n & n - 1) === 0;\n}\nfunction isObjectEmpty(obj) {\n  let isEmpty = true;\n\n  for (const key in obj) {\n    isEmpty = false;\n    break;\n  }\n\n  return isEmpty;\n}\n//# sourceMappingURL=utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/attribute-utils.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/attribute-utils.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"decomposeCompositeGLType\": function() { return /* binding */ decomposeCompositeGLType; },\n/* harmony export */   \"getCompositeGLType\": function() { return /* binding */ getCompositeGLType; },\n/* harmony export */   \"getPrimitiveCount\": function() { return /* binding */ getPrimitiveCount; },\n/* harmony export */   \"getPrimitiveDrawMode\": function() { return /* binding */ getPrimitiveDrawMode; },\n/* harmony export */   \"getVertexCount\": function() { return /* binding */ getVertexCount; }\n/* harmony export */ });\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n\nconst GL_BYTE = 0x1400;\nconst GL_UNSIGNED_BYTE = 0x1401;\nconst GL_SHORT = 0x1402;\nconst GL_UNSIGNED_SHORT = 0x1403;\nconst GL_POINTS = 0x0;\nconst GL_LINES = 0x1;\nconst GL_LINE_LOOP = 0x2;\nconst GL_LINE_STRIP = 0x3;\nconst GL_TRIANGLES = 0x4;\nconst GL_TRIANGLE_STRIP = 0x5;\nconst GL_TRIANGLE_FAN = 0x6;\nconst GL_FLOAT = 0x1406;\nconst GL_FLOAT_VEC2 = 0x8b50;\nconst GL_FLOAT_VEC3 = 0x8b51;\nconst GL_FLOAT_VEC4 = 0x8b52;\nconst GL_INT = 0x1404;\nconst GL_INT_VEC2 = 0x8b53;\nconst GL_INT_VEC3 = 0x8b54;\nconst GL_INT_VEC4 = 0x8b55;\nconst GL_UNSIGNED_INT = 0x1405;\nconst GL_UNSIGNED_INT_VEC2 = 0x8dc6;\nconst GL_UNSIGNED_INT_VEC3 = 0x8dc7;\nconst GL_UNSIGNED_INT_VEC4 = 0x8dc8;\nconst GL_BOOL = 0x8b56;\nconst GL_BOOL_VEC2 = 0x8b57;\nconst GL_BOOL_VEC3 = 0x8b58;\nconst GL_BOOL_VEC4 = 0x8b59;\nconst GL_FLOAT_MAT2 = 0x8b5a;\nconst GL_FLOAT_MAT3 = 0x8b5b;\nconst GL_FLOAT_MAT4 = 0x8b5c;\nconst GL_FLOAT_MAT2x3 = 0x8b65;\nconst GL_FLOAT_MAT2x4 = 0x8b66;\nconst GL_FLOAT_MAT3x2 = 0x8b67;\nconst GL_FLOAT_MAT3x4 = 0x8b68;\nconst GL_FLOAT_MAT4x2 = 0x8b69;\nconst GL_FLOAT_MAT4x3 = 0x8b6a;\nconst COMPOSITE_GL_TYPES = {\n  [GL_FLOAT]: [GL_FLOAT, 1, 'float'],\n  [GL_FLOAT_VEC2]: [GL_FLOAT, 2, 'vec2'],\n  [GL_FLOAT_VEC3]: [GL_FLOAT, 3, 'vec3'],\n  [GL_FLOAT_VEC4]: [GL_FLOAT, 4, 'vec4'],\n  [GL_INT]: [GL_INT, 1, 'int'],\n  [GL_INT_VEC2]: [GL_INT, 2, 'ivec2'],\n  [GL_INT_VEC3]: [GL_INT, 3, 'ivec3'],\n  [GL_INT_VEC4]: [GL_INT, 4, 'ivec4'],\n  [GL_UNSIGNED_INT]: [GL_UNSIGNED_INT, 1, 'uint'],\n  [GL_UNSIGNED_INT_VEC2]: [GL_UNSIGNED_INT, 2, 'uvec2'],\n  [GL_UNSIGNED_INT_VEC3]: [GL_UNSIGNED_INT, 3, 'uvec3'],\n  [GL_UNSIGNED_INT_VEC4]: [GL_UNSIGNED_INT, 4, 'uvec4'],\n  [GL_BOOL]: [GL_FLOAT, 1, 'bool'],\n  [GL_BOOL_VEC2]: [GL_FLOAT, 2, 'bvec2'],\n  [GL_BOOL_VEC3]: [GL_FLOAT, 3, 'bvec3'],\n  [GL_BOOL_VEC4]: [GL_FLOAT, 4, 'bvec4'],\n  [GL_FLOAT_MAT2]: [GL_FLOAT, 8, 'mat2'],\n  [GL_FLOAT_MAT2x3]: [GL_FLOAT, 8, 'mat2x3'],\n  [GL_FLOAT_MAT2x4]: [GL_FLOAT, 8, 'mat2x4'],\n  [GL_FLOAT_MAT3]: [GL_FLOAT, 12, 'mat3'],\n  [GL_FLOAT_MAT3x2]: [GL_FLOAT, 12, 'mat3x2'],\n  [GL_FLOAT_MAT3x4]: [GL_FLOAT, 12, 'mat3x4'],\n  [GL_FLOAT_MAT4]: [GL_FLOAT, 16, 'mat4'],\n  [GL_FLOAT_MAT4x2]: [GL_FLOAT, 16, 'mat4x2'],\n  [GL_FLOAT_MAT4x3]: [GL_FLOAT, 16, 'mat4x3']\n};\nfunction getPrimitiveDrawMode(drawMode) {\n  switch (drawMode) {\n    case GL_POINTS:\n      return GL_POINTS;\n\n    case GL_LINES:\n      return GL_LINES;\n\n    case GL_LINE_STRIP:\n      return GL_LINES;\n\n    case GL_LINE_LOOP:\n      return GL_LINES;\n\n    case GL_TRIANGLES:\n      return GL_TRIANGLES;\n\n    case GL_TRIANGLE_STRIP:\n      return GL_TRIANGLES;\n\n    case GL_TRIANGLE_FAN:\n      return GL_TRIANGLES;\n\n    default:\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(false);\n      return 0;\n  }\n}\nfunction getPrimitiveCount(_ref) {\n  let {\n    drawMode,\n    vertexCount\n  } = _ref;\n\n  switch (drawMode) {\n    case GL_POINTS:\n    case GL_LINE_LOOP:\n      return vertexCount;\n\n    case GL_LINES:\n      return vertexCount / 2;\n\n    case GL_LINE_STRIP:\n      return vertexCount - 1;\n\n    case GL_TRIANGLES:\n      return vertexCount / 3;\n\n    case GL_TRIANGLE_STRIP:\n    case GL_TRIANGLE_FAN:\n      return vertexCount - 2;\n\n    default:\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(false);\n      return 0;\n  }\n}\nfunction getVertexCount(_ref2) {\n  let {\n    drawMode,\n    vertexCount\n  } = _ref2;\n  const primitiveCount = getPrimitiveCount({\n    drawMode,\n    vertexCount\n  });\n\n  switch (getPrimitiveDrawMode(drawMode)) {\n    case GL_POINTS:\n      return primitiveCount;\n\n    case GL_LINES:\n      return primitiveCount * 2;\n\n    case GL_TRIANGLES:\n      return primitiveCount * 3;\n\n    default:\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(false);\n      return 0;\n  }\n}\nfunction decomposeCompositeGLType(compositeGLType) {\n  const typeAndSize = COMPOSITE_GL_TYPES[compositeGLType];\n\n  if (!typeAndSize) {\n    return null;\n  }\n\n  const [type, components] = typeAndSize;\n  return {\n    type,\n    components\n  };\n}\nfunction getCompositeGLType(type, components) {\n  switch (type) {\n    case GL_BYTE:\n    case GL_UNSIGNED_BYTE:\n    case GL_SHORT:\n    case GL_UNSIGNED_SHORT:\n      type = GL_FLOAT;\n      break;\n\n    default:\n  }\n\n  for (const glType in COMPOSITE_GL_TYPES) {\n    const [compType, compComponents, name] = COMPOSITE_GL_TYPES[glType];\n\n    if (compType === type && compComponents === components) {\n      return {\n        glType,\n        name\n      };\n    }\n  }\n\n  return null;\n}\n//# sourceMappingURL=attribute-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/attribute-utils.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/constants-to-keys.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/constants-to-keys.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getKey\": function() { return /* binding */ getKey; },\n/* harmony export */   \"getKeyType\": function() { return /* binding */ getKeyType; },\n/* harmony export */   \"getKeyValue\": function() { return /* binding */ getKeyValue; }\n/* harmony export */ });\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n\nfunction getKeyValue(gl, name) {\n  if (typeof name !== 'string') {\n    return name;\n  }\n\n  const number = Number(name);\n\n  if (!isNaN(number)) {\n    return number;\n  }\n\n  name = name.replace(/^.*\\./, '');\n  const value = gl[name];\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(value !== undefined, \"Accessing undefined constant GL.\".concat(name));\n  return value;\n}\nfunction getKey(gl, value) {\n  value = Number(value);\n\n  for (const key in gl) {\n    if (gl[key] === value) {\n      return \"GL.\".concat(key);\n    }\n  }\n\n  return String(value);\n}\nfunction getKeyType(gl, value) {\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(value !== undefined, 'undefined key');\n  value = Number(value);\n\n  for (const key in gl) {\n    if (gl[key] === value) {\n      return \"GL.\".concat(key);\n    }\n  }\n\n  return String(value);\n}\n//# sourceMappingURL=constants-to-keys.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/constants-to-keys.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/format-utils.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/format-utils.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"glFormatToComponents\": function() { return /* binding */ glFormatToComponents; },\n/* harmony export */   \"glTypeToBytes\": function() { return /* binding */ glTypeToBytes; }\n/* harmony export */ });\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n\nfunction glFormatToComponents(format) {\n  switch (format) {\n    case 6406:\n    case 33326:\n    case 6403:\n      return 1;\n\n    case 33328:\n    case 33319:\n      return 2;\n\n    case 6407:\n    case 34837:\n      return 3;\n\n    case 6408:\n    case 34836:\n      return 4;\n\n    default:\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(false);\n      return 0;\n  }\n}\nfunction glTypeToBytes(type) {\n  switch (type) {\n    case 5121:\n      return 1;\n\n    case 33635:\n    case 32819:\n    case 32820:\n      return 2;\n\n    case 5126:\n      return 4;\n\n    default:\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(false);\n      return 0;\n  }\n}\n//# sourceMappingURL=format-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/format-utils.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/request-animation-frame.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/request-animation-frame.js ***!
  \*************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"cancelAnimationFrame\": function() { return /* binding */ cancelAnimationFrame; },\n/* harmony export */   \"requestAnimationFrame\": function() { return /* binding */ requestAnimationFrame; }\n/* harmony export */ });\nfunction requestAnimationFrame(callback) {\n  return typeof window !== 'undefined' && window.requestAnimationFrame ? window.requestAnimationFrame(callback) : setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(timerId) {\n  return typeof window !== 'undefined' && window.cancelAnimationFrame ? window.cancelAnimationFrame(timerId) : clearTimeout(timerId);\n}\n//# sourceMappingURL=request-animation-frame.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/request-animation-frame.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/texture-utils.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/texture-utils.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"cloneTextureFrom\": function() { return /* binding */ cloneTextureFrom; },\n/* harmony export */   \"toFramebuffer\": function() { return /* binding */ toFramebuffer; }\n/* harmony export */ });\n/* harmony import */ var _classes_texture_2d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../classes/texture-2d */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js\");\n/* harmony import */ var _classes_texture_cube__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../classes/texture-cube */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-cube.js\");\n/* harmony import */ var _classes_texture_3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../classes/texture-3d */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/texture-3d.js\");\n/* harmony import */ var _classes_framebuffer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../classes/framebuffer */ \"./node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/assert */ \"./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js\");\n\n\n\n\n\nfunction cloneTextureFrom(refTexture, overrides) {\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__.assert)(refTexture instanceof _classes_texture_2d__WEBPACK_IMPORTED_MODULE_1__[\"default\"] || refTexture instanceof _classes_texture_cube__WEBPACK_IMPORTED_MODULE_2__[\"default\"] || refTexture instanceof _classes_texture_3d__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n  const TextureType = refTexture.constructor;\n  const {\n    gl,\n    width,\n    height,\n    format,\n    type,\n    dataFormat,\n    border,\n    mipmaps\n  } = refTexture;\n  const textureOptions = Object.assign({\n    width,\n    height,\n    format,\n    type,\n    dataFormat,\n    border,\n    mipmaps\n  }, overrides);\n  return new TextureType(gl, textureOptions);\n}\nfunction toFramebuffer(texture, opts) {\n  const {\n    gl,\n    width,\n    height,\n    id\n  } = texture;\n  const framebuffer = new _classes_framebuffer__WEBPACK_IMPORTED_MODULE_4__[\"default\"](gl, Object.assign({}, opts, {\n    id: \"framebuffer-for-\".concat(id),\n    width,\n    height,\n    attachments: {\n      [36064]: texture\n    }\n  }));\n  return framebuffer;\n}\n//# sourceMappingURL=texture-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/texture-utils.js?");

/***/ }),

/***/ "./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/typed-array-utils.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/typed-array-utils.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"flipRows\": function() { return /* binding */ flipRows; },\n/* harmony export */   \"getGLTypeFromTypedArray\": function() { return /* binding */ getGLTypeFromTypedArray; },\n/* harmony export */   \"getTypedArrayFromGLType\": function() { return /* binding */ getTypedArrayFromGLType; },\n/* harmony export */   \"scalePixels\": function() { return /* binding */ scalePixels; }\n/* harmony export */ });\nconst ERR_TYPE_DEDUCTION = 'Failed to deduce GL constant from typed array';\nfunction getGLTypeFromTypedArray(arrayOrType) {\n  const type = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;\n\n  switch (type) {\n    case Float32Array:\n      return 5126;\n\n    case Uint16Array:\n      return 5123;\n\n    case Uint32Array:\n      return 5125;\n\n    case Uint8Array:\n      return 5121;\n\n    case Uint8ClampedArray:\n      return 5121;\n\n    case Int8Array:\n      return 5120;\n\n    case Int16Array:\n      return 5122;\n\n    case Int32Array:\n      return 5124;\n\n    default:\n      throw new Error(ERR_TYPE_DEDUCTION);\n  }\n}\nfunction getTypedArrayFromGLType(glType) {\n  let {\n    clamped = true\n  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  switch (glType) {\n    case 5126:\n      return Float32Array;\n\n    case 5123:\n    case 33635:\n    case 32819:\n    case 32820:\n      return Uint16Array;\n\n    case 5125:\n      return Uint32Array;\n\n    case 5121:\n      return clamped ? Uint8ClampedArray : Uint8Array;\n\n    case 5120:\n      return Int8Array;\n\n    case 5122:\n      return Int16Array;\n\n    case 5124:\n      return Int32Array;\n\n    default:\n      throw new Error('Failed to deduce typed array type from GL constant');\n  }\n}\nfunction flipRows(_ref) {\n  let {\n    data,\n    width,\n    height,\n    bytesPerPixel = 4,\n    temp\n  } = _ref;\n  const bytesPerRow = width * bytesPerPixel;\n  temp = temp || new Uint8Array(bytesPerRow);\n\n  for (let y = 0; y < height / 2; ++y) {\n    const topOffset = y * bytesPerRow;\n    const bottomOffset = (height - y - 1) * bytesPerRow;\n    temp.set(data.subarray(topOffset, topOffset + bytesPerRow));\n    data.copyWithin(topOffset, bottomOffset, bottomOffset + bytesPerRow);\n    data.set(temp, bottomOffset);\n  }\n}\nfunction scalePixels(_ref2) {\n  let {\n    data,\n    width,\n    height\n  } = _ref2;\n  const newWidth = Math.round(width / 2);\n  const newHeight = Math.round(height / 2);\n  const newData = new Uint8Array(newWidth * newHeight * 4);\n\n  for (let y = 0; y < newHeight; y++) {\n    for (let x = 0; x < newWidth; x++) {\n      for (let c = 0; c < 4; c++) {\n        newData[(y * newWidth + x) * 4 + c] = data[(y * 2 * width + x * 2) * 4 + c];\n      }\n    }\n  }\n\n  return {\n    data: newData,\n    width: newWidth,\n    height: newHeight\n  };\n}\n//# sourceMappingURL=typed-array-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/typed-array-utils.js?");

/***/ }),

/***/ "./node_modules/@mapbox/tiny-sdf/index.js":
/*!************************************************!*\
  !*** ./node_modules/@mapbox/tiny-sdf/index.js ***!
  \************************************************/
/***/ (function(module) {

"use strict";
eval("\n\nmodule.exports = TinySDF;\nmodule.exports[\"default\"] = TinySDF;\n\nvar INF = 1e20;\n\nfunction TinySDF(fontSize, buffer, radius, cutoff, fontFamily, fontWeight) {\n    this.fontSize = fontSize || 24;\n    this.buffer = buffer === undefined ? 3 : buffer;\n    this.cutoff = cutoff || 0.25;\n    this.fontFamily = fontFamily || 'sans-serif';\n    this.fontWeight = fontWeight || 'normal';\n    this.radius = radius || 8;\n\n    // For backwards compatibility, we honor the implicit contract that the\n    // size of the returned bitmap will be fontSize + buffer * 2\n    var size = this.size = this.fontSize + this.buffer * 2;\n    // Glyphs may be slightly larger than their fontSize. The canvas already\n    // has buffer space, but create extra buffer space in the output grid for the\n    // \"halo\" to extend into (if metric extraction is enabled)\n    var gridSize = size + this.buffer * 2;\n\n    this.canvas = document.createElement('canvas');\n    this.canvas.width = this.canvas.height = size;\n\n    this.ctx = this.canvas.getContext('2d');\n    this.ctx.font = this.fontWeight + ' ' + this.fontSize + 'px ' + this.fontFamily;\n\n    this.ctx.textAlign = 'left'; // Necessary so that RTL text doesn't have different alignment\n    this.ctx.fillStyle = 'black';\n\n    // temporary arrays for the distance transform\n    this.gridOuter = new Float64Array(gridSize * gridSize);\n    this.gridInner = new Float64Array(gridSize * gridSize);\n    this.f = new Float64Array(gridSize);\n    this.z = new Float64Array(gridSize + 1);\n    this.v = new Uint16Array(gridSize);\n\n    this.useMetrics = this.ctx.measureText('A').actualBoundingBoxLeft !== undefined;\n\n    // hack around https://bugzilla.mozilla.org/show_bug.cgi?id=737852\n    this.middle = Math.round((size / 2) * (navigator.userAgent.indexOf('Gecko/') >= 0 ? 1.2 : 1));\n}\n\nfunction prepareGrids(imgData, width, height, glyphWidth, glyphHeight, gridOuter, gridInner) {\n    // Initialize grids outside the glyph range to alpha 0\n    gridOuter.fill(INF, 0, width * height);\n    gridInner.fill(0, 0, width * height);\n\n    var offset = (width - glyphWidth) / 2; // This is zero if we're not extracting metrics\n\n    for (var y = 0; y < glyphHeight; y++) {\n        for (var x = 0; x < glyphWidth; x++) {\n            var j = (y + offset) * width + x + offset;\n            var a = imgData.data[4 * (y * glyphWidth + x) + 3] / 255; // alpha value\n            if (a === 1) {\n                gridOuter[j] = 0;\n                gridInner[j] = INF;\n            } else if (a === 0) {\n                gridOuter[j] = INF;\n                gridInner[j] = 0;\n            } else {\n                var b = Math.max(0, 0.5 - a);\n                var c = Math.max(0, a - 0.5);\n                gridOuter[j] = b * b;\n                gridInner[j] = c * c;\n            }\n        }\n    }\n}\n\nfunction extractAlpha(alphaChannel, width, height, gridOuter, gridInner, radius, cutoff) {\n    for (var i = 0; i < width * height; i++) {\n        var d = Math.sqrt(gridOuter[i]) - Math.sqrt(gridInner[i]);\n        alphaChannel[i] = Math.round(255 - 255 * (d / radius + cutoff));\n    }\n}\n\nTinySDF.prototype._draw = function (char, getMetrics) {\n    var textMetrics = this.ctx.measureText(char);\n    // Older browsers only expose the glyph width\n    // This is enough for basic layout with all glyphs using the same fixed size\n    var advance = textMetrics.width;\n\n    var doubleBuffer = 2 * this.buffer;\n    var width, glyphWidth, height, glyphHeight, top;\n\n    var imgTop, imgLeft, baselinePosition;\n    // If the browser supports bounding box metrics, we can generate a smaller\n    // SDF. This is a significant performance win.\n    if (getMetrics && this.useMetrics) {\n        // The integer/pixel part of the top alignment is encoded in metrics.top\n        // The remainder is implicitly encoded in the rasterization\n        top = Math.floor(textMetrics.actualBoundingBoxAscent);\n        baselinePosition = this.buffer + Math.ceil(textMetrics.actualBoundingBoxAscent);\n        imgTop = this.buffer;\n        imgLeft = this.buffer;\n\n        // If the glyph overflows the canvas size, it will be clipped at the\n        // bottom/right\n        glyphWidth = Math.min(this.size,\n            Math.ceil(textMetrics.actualBoundingBoxRight - textMetrics.actualBoundingBoxLeft));\n        glyphHeight = Math.min(this.size - imgTop,\n            Math.ceil(textMetrics.actualBoundingBoxAscent + textMetrics.actualBoundingBoxDescent));\n\n        width = glyphWidth + doubleBuffer;\n        height = glyphHeight + doubleBuffer;\n        this.ctx.textBaseline = 'alphabetic';\n    } else {\n        width = glyphWidth = this.size;\n        height = glyphHeight = this.size;\n        // 19 points is an approximation of the \"cap height\" ascent from alphabetic\n        // baseline (even though actual drawing is from middle baseline, we can\n        // use the approximation because every glyph fills the em box)\n        top = 19 * this.fontSize / 24;\n        imgTop = imgLeft = 0;\n        baselinePosition = this.middle;\n        this.ctx.textBaseline = 'middle';\n    }\n\n    var imgData;\n    if (glyphWidth && glyphHeight) {\n        this.ctx.clearRect(imgLeft, imgTop, glyphWidth, glyphHeight);\n        this.ctx.fillText(char, this.buffer, baselinePosition);\n        imgData = this.ctx.getImageData(imgLeft, imgTop, glyphWidth, glyphHeight);\n    }\n\n    var alphaChannel = new Uint8ClampedArray(width * height);\n\n    prepareGrids(imgData, width, height, glyphWidth, glyphHeight, this.gridOuter, this.gridInner);\n\n    edt(this.gridOuter, width, height, this.f, this.v, this.z);\n    edt(this.gridInner, width, height, this.f, this.v, this.z);\n\n    extractAlpha(alphaChannel, width, height, this.gridOuter, this.gridInner, this.radius, this.cutoff);\n\n    return {\n        data: alphaChannel,\n        metrics: {\n            width: glyphWidth,\n            height: glyphHeight,\n            sdfWidth: width,\n            sdfHeight: height,\n            top: top,\n            left: 0,\n            advance: advance\n        }\n    };\n};\n\nTinySDF.prototype.draw = function (char) {\n    return this._draw(char, false).data;\n};\n\nTinySDF.prototype.drawWithMetrics = function (char) {\n    return this._draw(char, true);\n};\n\n// 2D Euclidean squared distance transform by Felzenszwalb & Huttenlocher https://cs.brown.edu/~pff/papers/dt-final.pdf\nfunction edt(data, width, height, f, v, z) {\n    for (var x = 0; x < width; x++) edt1d(data, x, width, height, f, v, z);\n    for (var y = 0; y < height; y++) edt1d(data, y * width, 1, width, f, v, z);\n}\n\n// 1D squared distance transform\nfunction edt1d(grid, offset, stride, length, f, v, z) {\n    var q, k, s, r;\n    v[0] = 0;\n    z[0] = -INF;\n    z[1] = INF;\n\n    for (q = 0; q < length; q++) f[q] = grid[offset + q * stride];\n\n    for (q = 1, k = 0, s = 0; q < length; q++) {\n        do {\n            r = v[k];\n            s = (f[q] - f[r] + q * q - r * r) / (q - r) / 2;\n        } while (s <= z[k] && --k > -1);\n\n        k++;\n        v[k] = q;\n        z[k] = s;\n        z[k + 1] = INF;\n    }\n\n    for (q = 0, k = 0; q < length; q++) {\n        while (z[k + 1] < q) k++;\n        r = v[k];\n        grid[offset + q * stride] = f[r] + (q - r) * (q - r);\n    }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mapbox/tiny-sdf/index.js?");

/***/ }),

/***/ "./node_modules/@math.gl/core/dist/esm/classes/base/math-array.js":
/*!************************************************************************!*\
  !*** ./node_modules/@math.gl/core/dist/esm/classes/base/math-array.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ MathArray; }\n/* harmony export */ });\n/* harmony import */ var _lib_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/common */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\nfunction _extendableBuiltin(cls) {\n  function ExtendableBuiltin() {\n    var instance = Reflect.construct(cls, Array.from(arguments));\n    Object.setPrototypeOf(instance, Object.getPrototypeOf(this));\n    return instance;\n  }\n\n  ExtendableBuiltin.prototype = Object.create(cls.prototype, {\n    constructor: {\n      value: cls,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n\n  if (Object.setPrototypeOf) {\n    Object.setPrototypeOf(ExtendableBuiltin, cls);\n  } else {\n    ExtendableBuiltin.__proto__ = cls;\n  }\n\n  return ExtendableBuiltin;\n}\n\n\nclass MathArray extends _extendableBuiltin(Array) {\n  clone() {\n    return new this.constructor().copy(this);\n  }\n\n  fromArray(array, offset = 0) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] = array[i + offset];\n    }\n\n    return this.check();\n  }\n\n  toArray(targetArray = [], offset = 0) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      targetArray[offset + i] = this[i];\n    }\n\n    return targetArray;\n  }\n\n  from(arrayOrObject) {\n    return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);\n  }\n\n  to(arrayOrObject) {\n    if (arrayOrObject === this) {\n      return this;\n    }\n\n    return (0,_lib_common__WEBPACK_IMPORTED_MODULE_0__.isArray)(arrayOrObject) ? this.toArray(arrayOrObject) : this.toObject(arrayOrObject);\n  }\n\n  toTarget(target) {\n    return target ? this.to(target) : this;\n  }\n\n  toFloat32Array() {\n    return new Float32Array(this);\n  }\n\n  toString() {\n    return this.formatString(_lib_common__WEBPACK_IMPORTED_MODULE_0__.config);\n  }\n\n  formatString(opts) {\n    let string = '';\n\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      string += (i > 0 ? ', ' : '') + (0,_lib_common__WEBPACK_IMPORTED_MODULE_0__.formatValue)(this[i], opts);\n    }\n\n    return \"\".concat(opts.printTypes ? this.constructor.name : '', \"[\").concat(string, \"]\");\n  }\n\n  equals(array) {\n    if (!array || this.length !== array.length) {\n      return false;\n    }\n\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      if (!(0,_lib_common__WEBPACK_IMPORTED_MODULE_0__.equals)(this[i], array[i])) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  exactEquals(array) {\n    if (!array || this.length !== array.length) {\n      return false;\n    }\n\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      if (this[i] !== array[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  negate() {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] = -this[i];\n    }\n\n    return this.check();\n  }\n\n  lerp(a, b, t) {\n    if (t === undefined) {\n      return this.lerp(this, a, b);\n    }\n\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      const ai = a[i];\n      this[i] = ai + t * (b[i] - ai);\n    }\n\n    return this.check();\n  }\n\n  min(vector) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] = Math.min(vector[i], this[i]);\n    }\n\n    return this.check();\n  }\n\n  max(vector) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] = Math.max(vector[i], this[i]);\n    }\n\n    return this.check();\n  }\n\n  clamp(minVector, maxVector) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] = Math.min(Math.max(this[i], minVector[i]), maxVector[i]);\n    }\n\n    return this.check();\n  }\n\n  add(...vectors) {\n    for (const vector of vectors) {\n      for (let i = 0; i < this.ELEMENTS; ++i) {\n        this[i] += vector[i];\n      }\n    }\n\n    return this.check();\n  }\n\n  subtract(...vectors) {\n    for (const vector of vectors) {\n      for (let i = 0; i < this.ELEMENTS; ++i) {\n        this[i] -= vector[i];\n      }\n    }\n\n    return this.check();\n  }\n\n  scale(scale) {\n    if (typeof scale === 'number') {\n      for (let i = 0; i < this.ELEMENTS; ++i) {\n        this[i] *= scale;\n      }\n    } else {\n      for (let i = 0; i < this.ELEMENTS && i < scale.length; ++i) {\n        this[i] *= scale[i];\n      }\n    }\n\n    return this.check();\n  }\n\n  multiplyByScalar(scalar) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] *= scalar;\n    }\n\n    return this.check();\n  }\n\n  check() {\n    if (_lib_common__WEBPACK_IMPORTED_MODULE_0__.config.debug && !this.validate()) {\n      throw new Error(\"math.gl: \".concat(this.constructor.name, \" some fields set to invalid numbers'\"));\n    }\n\n    return this;\n  }\n\n  validate() {\n    let valid = this.length === this.ELEMENTS;\n\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      valid = valid && Number.isFinite(this[i]);\n    }\n\n    return valid;\n  }\n\n  sub(a) {\n    return this.subtract(a);\n  }\n\n  setScalar(a) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] = a;\n    }\n\n    return this.check();\n  }\n\n  addScalar(a) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] += a;\n    }\n\n    return this.check();\n  }\n\n  subScalar(a) {\n    return this.addScalar(-a);\n  }\n\n  multiplyScalar(scalar) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] *= scalar;\n    }\n\n    return this.check();\n  }\n\n  divideScalar(a) {\n    return this.multiplyByScalar(1 / a);\n  }\n\n  clampScalar(min, max) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] = Math.min(Math.max(this[i], min), max);\n    }\n\n    return this.check();\n  }\n\n  get elements() {\n    return this;\n  }\n\n}\n//# sourceMappingURL=math-array.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/core/dist/esm/classes/base/math-array.js?");

/***/ }),

/***/ "./node_modules/@math.gl/core/dist/esm/classes/base/matrix.js":
/*!********************************************************************!*\
  !*** ./node_modules/@math.gl/core/dist/esm/classes/base/matrix.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Matrix; }\n/* harmony export */ });\n/* harmony import */ var _math_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math-array */ \"./node_modules/@math.gl/core/dist/esm/classes/base/math-array.js\");\n/* harmony import */ var _lib_validators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../lib/validators */ \"./node_modules/@math.gl/core/dist/esm/lib/validators.js\");\n/* harmony import */ var _lib_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../lib/common */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n\n\n\nclass Matrix extends _math_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n  toString() {\n    let string = '[';\n\n    if (_lib_common__WEBPACK_IMPORTED_MODULE_1__.config.printRowMajor) {\n      string += 'row-major:';\n\n      for (let row = 0; row < this.RANK; ++row) {\n        for (let col = 0; col < this.RANK; ++col) {\n          string += \" \".concat(this[col * this.RANK + row]);\n        }\n      }\n    } else {\n      string += 'column-major:';\n\n      for (let i = 0; i < this.ELEMENTS; ++i) {\n        string += \" \".concat(this[i]);\n      }\n    }\n\n    string += ']';\n    return string;\n  }\n\n  getElementIndex(row, col) {\n    return col * this.RANK + row;\n  }\n\n  getElement(row, col) {\n    return this[col * this.RANK + row];\n  }\n\n  setElement(row, col, value) {\n    this[col * this.RANK + row] = (0,_lib_validators__WEBPACK_IMPORTED_MODULE_2__.checkNumber)(value);\n    return this;\n  }\n\n  getColumn(columnIndex, result = new Array(this.RANK).fill(-0)) {\n    const firstIndex = columnIndex * this.RANK;\n\n    for (let i = 0; i < this.RANK; ++i) {\n      result[i] = this[firstIndex + i];\n    }\n\n    return result;\n  }\n\n  setColumn(columnIndex, columnVector) {\n    const firstIndex = columnIndex * this.RANK;\n\n    for (let i = 0; i < this.RANK; ++i) {\n      this[firstIndex + i] = columnVector[i];\n    }\n\n    return this;\n  }\n\n}\n//# sourceMappingURL=matrix.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/core/dist/esm/classes/base/matrix.js?");

/***/ }),

/***/ "./node_modules/@math.gl/core/dist/esm/classes/base/vector.js":
/*!********************************************************************!*\
  !*** ./node_modules/@math.gl/core/dist/esm/classes/base/vector.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Vector; }\n/* harmony export */ });\n/* harmony import */ var _math_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math-array */ \"./node_modules/@math.gl/core/dist/esm/classes/base/math-array.js\");\n/* harmony import */ var _lib_validators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../lib/validators */ \"./node_modules/@math.gl/core/dist/esm/lib/validators.js\");\n/* harmony import */ var _lib_assert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../lib/assert */ \"./node_modules/@math.gl/core/dist/esm/lib/assert.js\");\n\n\n\nclass Vector extends _math_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n  get x() {\n    return this[0];\n  }\n\n  set x(value) {\n    this[0] = (0,_lib_validators__WEBPACK_IMPORTED_MODULE_1__.checkNumber)(value);\n  }\n\n  get y() {\n    return this[1];\n  }\n\n  set y(value) {\n    this[1] = (0,_lib_validators__WEBPACK_IMPORTED_MODULE_1__.checkNumber)(value);\n  }\n\n  len() {\n    return Math.sqrt(this.lengthSquared());\n  }\n\n  magnitude() {\n    return this.len();\n  }\n\n  lengthSquared() {\n    let length = 0;\n\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      length += this[i] * this[i];\n    }\n\n    return length;\n  }\n\n  magnitudeSquared() {\n    return this.lengthSquared();\n  }\n\n  distance(mathArray) {\n    return Math.sqrt(this.distanceSquared(mathArray));\n  }\n\n  distanceSquared(mathArray) {\n    let length = 0;\n\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      const dist = this[i] - mathArray[i];\n      length += dist * dist;\n    }\n\n    return (0,_lib_validators__WEBPACK_IMPORTED_MODULE_1__.checkNumber)(length);\n  }\n\n  dot(mathArray) {\n    let product = 0;\n\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      product += this[i] * mathArray[i];\n    }\n\n    return (0,_lib_validators__WEBPACK_IMPORTED_MODULE_1__.checkNumber)(product);\n  }\n\n  normalize() {\n    const length = this.magnitude();\n\n    if (length !== 0) {\n      for (let i = 0; i < this.ELEMENTS; ++i) {\n        this[i] /= length;\n      }\n    }\n\n    return this.check();\n  }\n\n  multiply(...vectors) {\n    for (const vector of vectors) {\n      for (let i = 0; i < this.ELEMENTS; ++i) {\n        this[i] *= vector[i];\n      }\n    }\n\n    return this.check();\n  }\n\n  divide(...vectors) {\n    for (const vector of vectors) {\n      for (let i = 0; i < this.ELEMENTS; ++i) {\n        this[i] /= vector[i];\n      }\n    }\n\n    return this.check();\n  }\n\n  lengthSq() {\n    return this.lengthSquared();\n  }\n\n  distanceTo(vector) {\n    return this.distance(vector);\n  }\n\n  distanceToSquared(vector) {\n    return this.distanceSquared(vector);\n  }\n\n  getComponent(i) {\n    (0,_lib_assert__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n    return (0,_lib_validators__WEBPACK_IMPORTED_MODULE_1__.checkNumber)(this[i]);\n  }\n\n  setComponent(i, value) {\n    (0,_lib_assert__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n    this[i] = value;\n    return this.check();\n  }\n\n  addVectors(a, b) {\n    return this.copy(a).add(b);\n  }\n\n  subVectors(a, b) {\n    return this.copy(a).subtract(b);\n  }\n\n  multiplyVectors(a, b) {\n    return this.copy(a).multiply(b);\n  }\n\n  addScaledVector(a, b) {\n    return this.add(new this.constructor(a).multiplyScalar(b));\n  }\n\n}\n//# sourceMappingURL=vector.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/core/dist/esm/classes/base/vector.js?");

/***/ }),

/***/ "./node_modules/@math.gl/core/dist/esm/classes/matrix4.js":
/*!****************************************************************!*\
  !*** ./node_modules/@math.gl/core/dist/esm/classes/matrix4.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Matrix4; }\n/* harmony export */ });\n/* harmony import */ var _base_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base/matrix */ \"./node_modules/@math.gl/core/dist/esm/classes/base/matrix.js\");\n/* harmony import */ var _lib_validators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../lib/validators */ \"./node_modules/@math.gl/core/dist/esm/lib/validators.js\");\n/* harmony import */ var _lib_gl_matrix_extras__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../lib/gl-matrix-extras */ \"./node_modules/@math.gl/core/dist/esm/lib/gl-matrix-extras.js\");\n/* harmony import */ var gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gl-matrix/mat4 */ \"./node_modules/gl-matrix/esm/mat4.js\");\n/* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! gl-matrix/vec2 */ \"./node_modules/gl-matrix/esm/vec2.js\");\n/* harmony import */ var gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! gl-matrix/vec3 */ \"./node_modules/gl-matrix/esm/vec3.js\");\n/* harmony import */ var gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix/vec4 */ \"./node_modules/gl-matrix/esm/vec4.js\");\n\n\n\n\n\n\n\nvar INDICES;\n\n(function (INDICES) {\n  INDICES[INDICES[\"COL0ROW0\"] = 0] = \"COL0ROW0\";\n  INDICES[INDICES[\"COL0ROW1\"] = 1] = \"COL0ROW1\";\n  INDICES[INDICES[\"COL0ROW2\"] = 2] = \"COL0ROW2\";\n  INDICES[INDICES[\"COL0ROW3\"] = 3] = \"COL0ROW3\";\n  INDICES[INDICES[\"COL1ROW0\"] = 4] = \"COL1ROW0\";\n  INDICES[INDICES[\"COL1ROW1\"] = 5] = \"COL1ROW1\";\n  INDICES[INDICES[\"COL1ROW2\"] = 6] = \"COL1ROW2\";\n  INDICES[INDICES[\"COL1ROW3\"] = 7] = \"COL1ROW3\";\n  INDICES[INDICES[\"COL2ROW0\"] = 8] = \"COL2ROW0\";\n  INDICES[INDICES[\"COL2ROW1\"] = 9] = \"COL2ROW1\";\n  INDICES[INDICES[\"COL2ROW2\"] = 10] = \"COL2ROW2\";\n  INDICES[INDICES[\"COL2ROW3\"] = 11] = \"COL2ROW3\";\n  INDICES[INDICES[\"COL3ROW0\"] = 12] = \"COL3ROW0\";\n  INDICES[INDICES[\"COL3ROW1\"] = 13] = \"COL3ROW1\";\n  INDICES[INDICES[\"COL3ROW2\"] = 14] = \"COL3ROW2\";\n  INDICES[INDICES[\"COL3ROW3\"] = 15] = \"COL3ROW3\";\n})(INDICES || (INDICES = {}));\n\nconst DEFAULT_FOVY = 45 * Math.PI / 180;\nconst DEFAULT_ASPECT = 1;\nconst DEFAULT_NEAR = 0.1;\nconst DEFAULT_FAR = 500;\nconst IDENTITY_MATRIX = Object.freeze([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\nclass Matrix4 extends _base_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n  static get IDENTITY() {\n    return getIdentityMatrix();\n  }\n\n  static get ZERO() {\n    return getZeroMatrix();\n  }\n\n  get ELEMENTS() {\n    return 16;\n  }\n\n  get RANK() {\n    return 4;\n  }\n\n  get INDICES() {\n    return INDICES;\n  }\n\n  constructor(array) {\n    super(-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0);\n\n    if (arguments.length === 1 && Array.isArray(array)) {\n      this.copy(array);\n    } else {\n      this.identity();\n    }\n  }\n\n  copy(array) {\n    this[0] = array[0];\n    this[1] = array[1];\n    this[2] = array[2];\n    this[3] = array[3];\n    this[4] = array[4];\n    this[5] = array[5];\n    this[6] = array[6];\n    this[7] = array[7];\n    this[8] = array[8];\n    this[9] = array[9];\n    this[10] = array[10];\n    this[11] = array[11];\n    this[12] = array[12];\n    this[13] = array[13];\n    this[14] = array[14];\n    this[15] = array[15];\n    return this.check();\n  }\n\n  set(m00, m10, m20, m30, m01, m11, m21, m31, m02, m12, m22, m32, m03, m13, m23, m33) {\n    this[0] = m00;\n    this[1] = m10;\n    this[2] = m20;\n    this[3] = m30;\n    this[4] = m01;\n    this[5] = m11;\n    this[6] = m21;\n    this[7] = m31;\n    this[8] = m02;\n    this[9] = m12;\n    this[10] = m22;\n    this[11] = m32;\n    this[12] = m03;\n    this[13] = m13;\n    this[14] = m23;\n    this[15] = m33;\n    return this.check();\n  }\n\n  setRowMajor(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n    this[0] = m00;\n    this[1] = m10;\n    this[2] = m20;\n    this[3] = m30;\n    this[4] = m01;\n    this[5] = m11;\n    this[6] = m21;\n    this[7] = m31;\n    this[8] = m02;\n    this[9] = m12;\n    this[10] = m22;\n    this[11] = m32;\n    this[12] = m03;\n    this[13] = m13;\n    this[14] = m23;\n    this[15] = m33;\n    return this.check();\n  }\n\n  toRowMajor(result) {\n    result[0] = this[0];\n    result[1] = this[4];\n    result[2] = this[8];\n    result[3] = this[12];\n    result[4] = this[1];\n    result[5] = this[5];\n    result[6] = this[9];\n    result[7] = this[13];\n    result[8] = this[2];\n    result[9] = this[6];\n    result[10] = this[10];\n    result[11] = this[14];\n    result[12] = this[3];\n    result[13] = this[7];\n    result[14] = this[11];\n    result[15] = this[15];\n    return result;\n  }\n\n  identity() {\n    return this.copy(IDENTITY_MATRIX);\n  }\n\n  fromObject(object) {\n    return this.check();\n  }\n\n  fromQuaternion(quaternion) {\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__.fromQuat(this, quaternion);\n    return this.check();\n  }\n\n  frustum(view) {\n    const {\n      left,\n      right,\n      bottom,\n      top,\n      near = DEFAULT_NEAR,\n      far = DEFAULT_FAR\n    } = view;\n\n    if (far === Infinity) {\n      computeInfinitePerspectiveOffCenter(this, left, right, bottom, top, near);\n    } else {\n      gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__.frustum(this, left, right, bottom, top, near, far);\n    }\n\n    return this.check();\n  }\n\n  lookAt(view) {\n    const {\n      eye,\n      center = [0, 0, 0],\n      up = [0, 1, 0]\n    } = view;\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__.lookAt(this, eye, center, up);\n    return this.check();\n  }\n\n  ortho(view) {\n    const {\n      left,\n      right,\n      bottom,\n      top,\n      near = DEFAULT_NEAR,\n      far = DEFAULT_FAR\n    } = view;\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__.ortho(this, left, right, bottom, top, near, far);\n    return this.check();\n  }\n\n  orthographic(view) {\n    const {\n      fovy = DEFAULT_FOVY,\n      aspect = DEFAULT_ASPECT,\n      focalDistance = 1,\n      near = DEFAULT_NEAR,\n      far = DEFAULT_FAR\n    } = view;\n    checkRadians(fovy);\n    const halfY = fovy / 2;\n    const top = focalDistance * Math.tan(halfY);\n    const right = top * aspect;\n    return this.ortho({\n      left: -right,\n      right,\n      bottom: -top,\n      top,\n      near,\n      far\n    });\n  }\n\n  perspective(view) {\n    const {\n      fovy = 45 * Math.PI / 180,\n      aspect = 1,\n      near = 0.1,\n      far = 500\n    } = view;\n    checkRadians(fovy);\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__.perspective(this, fovy, aspect, near, far);\n    return this.check();\n  }\n\n  determinant() {\n    return gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__.determinant(this);\n  }\n\n  getScale(result = [-0, -0, -0]) {\n    result[0] = Math.sqrt(this[0] * this[0] + this[1] * this[1] + this[2] * this[2]);\n    result[1] = Math.sqrt(this[4] * this[4] + this[5] * this[5] + this[6] * this[6]);\n    result[2] = Math.sqrt(this[8] * this[8] + this[9] * this[9] + this[10] * this[10]);\n    return result;\n  }\n\n  getTranslation(result = [-0, -0, -0]) {\n    result[0] = this[12];\n    result[1] = this[13];\n    result[2] = this[14];\n    return result;\n  }\n\n  getRotation(result, scaleResult) {\n    result = result || [-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0];\n    scaleResult = scaleResult || [-0, -0, -0];\n    const scale = this.getScale(scaleResult);\n    const inverseScale0 = 1 / scale[0];\n    const inverseScale1 = 1 / scale[1];\n    const inverseScale2 = 1 / scale[2];\n    result[0] = this[0] * inverseScale0;\n    result[1] = this[1] * inverseScale1;\n    result[2] = this[2] * inverseScale2;\n    result[3] = 0;\n    result[4] = this[4] * inverseScale0;\n    result[5] = this[5] * inverseScale1;\n    result[6] = this[6] * inverseScale2;\n    result[7] = 0;\n    result[8] = this[8] * inverseScale0;\n    result[9] = this[9] * inverseScale1;\n    result[10] = this[10] * inverseScale2;\n    result[11] = 0;\n    result[12] = 0;\n    result[13] = 0;\n    result[14] = 0;\n    result[15] = 1;\n    return result;\n  }\n\n  getRotationMatrix3(result, scaleResult) {\n    result = result || [-0, -0, -0, -0, -0, -0, -0, -0, -0];\n    scaleResult = scaleResult || [-0, -0, -0];\n    const scale = this.getScale(scaleResult);\n    const inverseScale0 = 1 / scale[0];\n    const inverseScale1 = 1 / scale[1];\n    const inverseScale2 = 1 / scale[2];\n    result[0] = this[0] * inverseScale0;\n    result[1] = this[1] * inverseScale1;\n    result[2] = this[2] * inverseScale2;\n    result[3] = this[4] * inverseScale0;\n    result[4] = this[5] * inverseScale1;\n    result[5] = this[6] * inverseScale2;\n    result[6] = this[8] * inverseScale0;\n    result[7] = this[9] * inverseScale1;\n    result[8] = this[10] * inverseScale2;\n    return result;\n  }\n\n  transpose() {\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__.transpose(this, this);\n    return this.check();\n  }\n\n  invert() {\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__.invert(this, this);\n    return this.check();\n  }\n\n  multiplyLeft(a) {\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__.multiply(this, a, this);\n    return this.check();\n  }\n\n  multiplyRight(a) {\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__.multiply(this, this, a);\n    return this.check();\n  }\n\n  rotateX(radians) {\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__.rotateX(this, this, radians);\n    return this.check();\n  }\n\n  rotateY(radians) {\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__.rotateY(this, this, radians);\n    return this.check();\n  }\n\n  rotateZ(radians) {\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__.rotateZ(this, this, radians);\n    return this.check();\n  }\n\n  rotateXYZ(angleXYZ) {\n    return this.rotateX(angleXYZ[0]).rotateY(angleXYZ[1]).rotateZ(angleXYZ[2]);\n  }\n\n  rotateAxis(radians, axis) {\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__.rotate(this, this, radians, axis);\n    return this.check();\n  }\n\n  scale(factor) {\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__.scale(this, this, Array.isArray(factor) ? factor : [factor, factor, factor]);\n    return this.check();\n  }\n\n  translate(vector) {\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__.translate(this, this, vector);\n    return this.check();\n  }\n\n  transform(vector, result) {\n    if (vector.length === 4) {\n      result = gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_2__.transformMat4(result || [-0, -0, -0, -0], vector, this);\n      (0,_lib_validators__WEBPACK_IMPORTED_MODULE_3__.checkVector)(result, 4);\n      return result;\n    }\n\n    return this.transformAsPoint(vector, result);\n  }\n\n  transformAsPoint(vector, result) {\n    const {\n      length\n    } = vector;\n    let out;\n\n    switch (length) {\n      case 2:\n        out = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_4__.transformMat4(result || [-0, -0], vector, this);\n        break;\n\n      case 3:\n        out = gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_5__.transformMat4(result || [-0, -0, -0], vector, this);\n        break;\n\n      default:\n        throw new Error('Illegal vector');\n    }\n\n    (0,_lib_validators__WEBPACK_IMPORTED_MODULE_3__.checkVector)(out, vector.length);\n    return out;\n  }\n\n  transformAsVector(vector, result) {\n    let out;\n\n    switch (vector.length) {\n      case 2:\n        out = (0,_lib_gl_matrix_extras__WEBPACK_IMPORTED_MODULE_6__.vec2_transformMat4AsVector)(result || [-0, -0], vector, this);\n        break;\n\n      case 3:\n        out = (0,_lib_gl_matrix_extras__WEBPACK_IMPORTED_MODULE_6__.vec3_transformMat4AsVector)(result || [-0, -0, -0], vector, this);\n        break;\n\n      default:\n        throw new Error('Illegal vector');\n    }\n\n    (0,_lib_validators__WEBPACK_IMPORTED_MODULE_3__.checkVector)(out, vector.length);\n    return out;\n  }\n\n  transformPoint(vector, result) {\n    return this.transformAsPoint(vector, result);\n  }\n\n  transformVector(vector, result) {\n    return this.transformAsPoint(vector, result);\n  }\n\n  transformDirection(vector, result) {\n    return this.transformAsVector(vector, result);\n  }\n\n  makeRotationX(radians) {\n    return this.identity().rotateX(radians);\n  }\n\n  makeTranslation(x, y, z) {\n    return this.identity().translate([x, y, z]);\n  }\n\n}\nlet ZERO;\nlet IDENTITY;\n\nfunction getZeroMatrix() {\n  if (!ZERO) {\n    ZERO = new Matrix4([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\n    Object.freeze(ZERO);\n  }\n\n  return ZERO;\n}\n\nfunction getIdentityMatrix() {\n  if (!IDENTITY) {\n    IDENTITY = new Matrix4();\n    Object.freeze(IDENTITY);\n  }\n\n  return IDENTITY;\n}\n\nfunction checkRadians(possiblyDegrees) {\n  if (possiblyDegrees > Math.PI * 2) {\n    throw Error('expected radians');\n  }\n}\n\nfunction computeInfinitePerspectiveOffCenter(result, left, right, bottom, top, near) {\n  const column0Row0 = 2 * near / (right - left);\n  const column1Row1 = 2 * near / (top - bottom);\n  const column2Row0 = (right + left) / (right - left);\n  const column2Row1 = (top + bottom) / (top - bottom);\n  const column2Row2 = -1;\n  const column2Row3 = -1;\n  const column3Row2 = -2 * near;\n  result[0] = column0Row0;\n  result[1] = 0;\n  result[2] = 0;\n  result[3] = 0;\n  result[4] = 0;\n  result[5] = column1Row1;\n  result[6] = 0;\n  result[7] = 0;\n  result[8] = column2Row0;\n  result[9] = column2Row1;\n  result[10] = column2Row2;\n  result[11] = column2Row3;\n  result[12] = 0;\n  result[13] = 0;\n  result[14] = column3Row2;\n  result[15] = 0;\n  return result;\n}\n//# sourceMappingURL=matrix4.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/core/dist/esm/classes/matrix4.js?");

/***/ }),

/***/ "./node_modules/@math.gl/core/dist/esm/classes/spherical-coordinates.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@math.gl/core/dist/esm/classes/spherical-coordinates.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ SphericalCoordinates; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _vector3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./vector3 */ \"./node_modules/@math.gl/core/dist/esm/classes/vector3.js\");\n/* harmony import */ var _lib_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lib/common */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n/* harmony import */ var gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix/vec3 */ \"./node_modules/gl-matrix/esm/vec3.js\");\n\n\n\n\n\nconst EPSILON = 0.000001;\nconst EARTH_RADIUS_METERS = 6371000;\nclass SphericalCoordinates {\n  constructor({\n    phi = 0,\n    theta = 0,\n    radius = 1,\n    bearing,\n    pitch,\n    altitude,\n    radiusScale = EARTH_RADIUS_METERS\n  } = {}) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"phi\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"theta\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"radius\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"radiusScale\", void 0);\n\n    this.phi = phi;\n    this.theta = theta;\n    this.radius = radius || altitude || 1;\n    this.radiusScale = radiusScale || 1;\n\n    if (bearing !== undefined) {\n      this.bearing = bearing;\n    }\n\n    if (pitch !== undefined) {\n      this.pitch = pitch;\n    }\n\n    this.check();\n  }\n\n  toString() {\n    return this.formatString(_lib_common__WEBPACK_IMPORTED_MODULE_1__.config);\n  }\n\n  formatString({\n    printTypes = false\n  }) {\n    const f = _lib_common__WEBPACK_IMPORTED_MODULE_1__.formatValue;\n    return \"\".concat(printTypes ? 'Spherical' : '', \"[rho:\").concat(f(this.radius), \",theta:\").concat(f(this.theta), \",phi:\").concat(f(this.phi), \"]\");\n  }\n\n  equals(other) {\n    return (0,_lib_common__WEBPACK_IMPORTED_MODULE_1__.equals)(this.radius, other.radius) && (0,_lib_common__WEBPACK_IMPORTED_MODULE_1__.equals)(this.theta, other.theta) && (0,_lib_common__WEBPACK_IMPORTED_MODULE_1__.equals)(this.phi, other.phi);\n  }\n\n  exactEquals(other) {\n    return this.radius === other.radius && this.theta === other.theta && this.phi === other.phi;\n  }\n\n  get bearing() {\n    return 180 - (0,_lib_common__WEBPACK_IMPORTED_MODULE_1__.degrees)(this.phi);\n  }\n\n  set bearing(v) {\n    this.phi = Math.PI - (0,_lib_common__WEBPACK_IMPORTED_MODULE_1__.radians)(v);\n  }\n\n  get pitch() {\n    return (0,_lib_common__WEBPACK_IMPORTED_MODULE_1__.degrees)(this.theta);\n  }\n\n  set pitch(v) {\n    this.theta = (0,_lib_common__WEBPACK_IMPORTED_MODULE_1__.radians)(v);\n  }\n\n  get longitude() {\n    return (0,_lib_common__WEBPACK_IMPORTED_MODULE_1__.degrees)(this.phi);\n  }\n\n  get latitude() {\n    return (0,_lib_common__WEBPACK_IMPORTED_MODULE_1__.degrees)(this.theta);\n  }\n\n  get lng() {\n    return (0,_lib_common__WEBPACK_IMPORTED_MODULE_1__.degrees)(this.phi);\n  }\n\n  get lat() {\n    return (0,_lib_common__WEBPACK_IMPORTED_MODULE_1__.degrees)(this.theta);\n  }\n\n  get z() {\n    return (this.radius - 1) * this.radiusScale;\n  }\n\n  set(radius, phi, theta) {\n    this.radius = radius;\n    this.phi = phi;\n    this.theta = theta;\n    return this.check();\n  }\n\n  clone() {\n    return new SphericalCoordinates().copy(this);\n  }\n\n  copy(other) {\n    this.radius = other.radius;\n    this.phi = other.phi;\n    this.theta = other.theta;\n    return this.check();\n  }\n\n  fromLngLatZ([lng, lat, z]) {\n    this.radius = 1 + z / this.radiusScale;\n    this.phi = (0,_lib_common__WEBPACK_IMPORTED_MODULE_1__.radians)(lat);\n    this.theta = (0,_lib_common__WEBPACK_IMPORTED_MODULE_1__.radians)(lng);\n    return this.check();\n  }\n\n  fromVector3(v) {\n    this.radius = gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_2__.length(v);\n\n    if (this.radius > 0) {\n      this.theta = Math.atan2(v[0], v[1]);\n      this.phi = Math.acos((0,_lib_common__WEBPACK_IMPORTED_MODULE_1__.clamp)(v[2] / this.radius, -1, 1));\n    }\n\n    return this.check();\n  }\n\n  toVector3() {\n    return new _vector3__WEBPACK_IMPORTED_MODULE_3__[\"default\"](0, 0, this.radius).rotateX({\n      radians: this.theta\n    }).rotateZ({\n      radians: this.phi\n    });\n  }\n\n  makeSafe() {\n    this.phi = Math.max(EPSILON, Math.min(Math.PI - EPSILON, this.phi));\n    return this;\n  }\n\n  check() {\n    if (!Number.isFinite(this.phi) || !Number.isFinite(this.theta) || !(this.radius > 0)) {\n      throw new Error('SphericalCoordinates: some fields set to invalid numbers');\n    }\n\n    return this;\n  }\n\n}\n//# sourceMappingURL=spherical-coordinates.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/core/dist/esm/classes/spherical-coordinates.js?");

/***/ }),

/***/ "./node_modules/@math.gl/core/dist/esm/classes/vector3.js":
/*!****************************************************************!*\
  !*** ./node_modules/@math.gl/core/dist/esm/classes/vector3.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Vector3; }\n/* harmony export */ });\n/* harmony import */ var _base_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base/vector */ \"./node_modules/@math.gl/core/dist/esm/classes/base/vector.js\");\n/* harmony import */ var _lib_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lib/common */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n/* harmony import */ var _lib_validators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lib/validators */ \"./node_modules/@math.gl/core/dist/esm/lib/validators.js\");\n/* harmony import */ var gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! gl-matrix/vec3 */ \"./node_modules/gl-matrix/esm/vec3.js\");\n/* harmony import */ var _lib_gl_matrix_extras__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../lib/gl-matrix-extras */ \"./node_modules/@math.gl/core/dist/esm/lib/gl-matrix-extras.js\");\n\n\n\n\n\nconst ORIGIN = [0, 0, 0];\nlet ZERO;\nclass Vector3 extends _base_vector__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n  static get ZERO() {\n    if (!ZERO) {\n      ZERO = new Vector3(0, 0, 0);\n      Object.freeze(ZERO);\n    }\n\n    return ZERO;\n  }\n\n  constructor(x = 0, y = 0, z = 0) {\n    super(-0, -0, -0);\n\n    if (arguments.length === 1 && (0,_lib_common__WEBPACK_IMPORTED_MODULE_1__.isArray)(x)) {\n      this.copy(x);\n    } else {\n      if (_lib_common__WEBPACK_IMPORTED_MODULE_1__.config.debug) {\n        (0,_lib_validators__WEBPACK_IMPORTED_MODULE_2__.checkNumber)(x);\n        (0,_lib_validators__WEBPACK_IMPORTED_MODULE_2__.checkNumber)(y);\n        (0,_lib_validators__WEBPACK_IMPORTED_MODULE_2__.checkNumber)(z);\n      }\n\n      this[0] = x;\n      this[1] = y;\n      this[2] = z;\n    }\n  }\n\n  set(x, y, z) {\n    this[0] = x;\n    this[1] = y;\n    this[2] = z;\n    return this.check();\n  }\n\n  copy(array) {\n    this[0] = array[0];\n    this[1] = array[1];\n    this[2] = array[2];\n    return this.check();\n  }\n\n  fromObject(object) {\n    if (_lib_common__WEBPACK_IMPORTED_MODULE_1__.config.debug) {\n      (0,_lib_validators__WEBPACK_IMPORTED_MODULE_2__.checkNumber)(object.x);\n      (0,_lib_validators__WEBPACK_IMPORTED_MODULE_2__.checkNumber)(object.y);\n      (0,_lib_validators__WEBPACK_IMPORTED_MODULE_2__.checkNumber)(object.z);\n    }\n\n    this[0] = object.x;\n    this[1] = object.y;\n    this[2] = object.z;\n    return this.check();\n  }\n\n  toObject(object) {\n    object.x = this[0];\n    object.y = this[1];\n    object.z = this[2];\n    return object;\n  }\n\n  get ELEMENTS() {\n    return 3;\n  }\n\n  get z() {\n    return this[2];\n  }\n\n  set z(value) {\n    this[2] = (0,_lib_validators__WEBPACK_IMPORTED_MODULE_2__.checkNumber)(value);\n  }\n\n  angle(vector) {\n    return gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_3__.angle(this, vector);\n  }\n\n  cross(vector) {\n    gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_3__.cross(this, this, vector);\n    return this.check();\n  }\n\n  rotateX({\n    radians,\n    origin = ORIGIN\n  }) {\n    gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_3__.rotateX(this, this, origin, radians);\n    return this.check();\n  }\n\n  rotateY({\n    radians,\n    origin = ORIGIN\n  }) {\n    gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_3__.rotateY(this, this, origin, radians);\n    return this.check();\n  }\n\n  rotateZ({\n    radians,\n    origin = ORIGIN\n  }) {\n    gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_3__.rotateZ(this, this, origin, radians);\n    return this.check();\n  }\n\n  transform(matrix4) {\n    return this.transformAsPoint(matrix4);\n  }\n\n  transformAsPoint(matrix4) {\n    gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_3__.transformMat4(this, this, matrix4);\n    return this.check();\n  }\n\n  transformAsVector(matrix4) {\n    (0,_lib_gl_matrix_extras__WEBPACK_IMPORTED_MODULE_4__.vec3_transformMat4AsVector)(this, this, matrix4);\n    return this.check();\n  }\n\n  transformByMatrix3(matrix3) {\n    gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_3__.transformMat3(this, this, matrix3);\n    return this.check();\n  }\n\n  transformByMatrix2(matrix2) {\n    (0,_lib_gl_matrix_extras__WEBPACK_IMPORTED_MODULE_4__.vec3_transformMat2)(this, this, matrix2);\n    return this.check();\n  }\n\n  transformByQuaternion(quaternion) {\n    gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_3__.transformQuat(this, this, quaternion);\n    return this.check();\n  }\n\n}\n//# sourceMappingURL=vector3.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/core/dist/esm/classes/vector3.js?");

/***/ }),

/***/ "./node_modules/@math.gl/core/dist/esm/lib/assert.js":
/*!***********************************************************!*\
  !*** ./node_modules/@math.gl/core/dist/esm/lib/assert.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ assert; }\n/* harmony export */ });\nfunction assert(condition, message) {\n  if (!condition) {\n    throw new Error(\"math.gl assertion \".concat(message));\n  }\n}\n//# sourceMappingURL=assert.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/core/dist/esm/lib/assert.js?");

/***/ }),

/***/ "./node_modules/@math.gl/core/dist/esm/lib/common.js":
/*!***********************************************************!*\
  !*** ./node_modules/@math.gl/core/dist/esm/lib/common.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"acos\": function() { return /* binding */ acos; },\n/* harmony export */   \"asin\": function() { return /* binding */ asin; },\n/* harmony export */   \"atan\": function() { return /* binding */ atan; },\n/* harmony export */   \"clamp\": function() { return /* binding */ clamp; },\n/* harmony export */   \"clone\": function() { return /* binding */ clone; },\n/* harmony export */   \"config\": function() { return /* binding */ config; },\n/* harmony export */   \"configure\": function() { return /* binding */ configure; },\n/* harmony export */   \"cos\": function() { return /* binding */ cos; },\n/* harmony export */   \"degrees\": function() { return /* binding */ degrees; },\n/* harmony export */   \"equals\": function() { return /* binding */ equals; },\n/* harmony export */   \"exactEquals\": function() { return /* binding */ exactEquals; },\n/* harmony export */   \"formatValue\": function() { return /* binding */ formatValue; },\n/* harmony export */   \"isArray\": function() { return /* binding */ isArray; },\n/* harmony export */   \"lerp\": function() { return /* binding */ lerp; },\n/* harmony export */   \"radians\": function() { return /* binding */ radians; },\n/* harmony export */   \"sin\": function() { return /* binding */ sin; },\n/* harmony export */   \"tan\": function() { return /* binding */ tan; },\n/* harmony export */   \"toDegrees\": function() { return /* binding */ toDegrees; },\n/* harmony export */   \"toRadians\": function() { return /* binding */ toRadians; },\n/* harmony export */   \"withEpsilon\": function() { return /* binding */ withEpsilon; }\n/* harmony export */ });\n/* harmony import */ var _assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./assert */ \"./node_modules/@math.gl/core/dist/esm/lib/assert.js\");\n\nconst RADIANS_TO_DEGREES = 1 / Math.PI * 180;\nconst DEGREES_TO_RADIANS = 1 / 180 * Math.PI;\nconst config = {\n  EPSILON: 1e-12,\n  debug: false,\n  precision: 4,\n  printTypes: false,\n  printDegrees: false,\n  printRowMajor: true\n};\nfunction configure(options) {\n  for (const key in options) {\n    (0,_assert__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(key in config);\n    config[key] = options[key];\n  }\n\n  return config;\n}\nfunction formatValue(value, {\n  precision = config.precision\n} = {}) {\n  value = round(value);\n  return \"\".concat(parseFloat(value.toPrecision(precision)));\n}\nfunction isArray(value) {\n  return Array.isArray(value) || ArrayBuffer.isView(value) && !(value instanceof DataView);\n}\nfunction clone(array) {\n  return 'clone' in array ? array.clone() : array.slice();\n}\nfunction toRadians(degrees) {\n  return radians(degrees);\n}\nfunction toDegrees(radians) {\n  return degrees(radians);\n}\nfunction radians(degrees, result) {\n  return map(degrees, degrees => degrees * DEGREES_TO_RADIANS, result);\n}\nfunction degrees(radians, result) {\n  return map(radians, radians => radians * RADIANS_TO_DEGREES, result);\n}\nfunction sin(radians, result) {\n  return map(radians, angle => Math.sin(angle), result);\n}\nfunction cos(radians, result) {\n  return map(radians, angle => Math.cos(angle), result);\n}\nfunction tan(radians, result) {\n  return map(radians, angle => Math.tan(angle), result);\n}\nfunction asin(radians, result) {\n  return map(radians, angle => Math.asin(angle), result);\n}\nfunction acos(radians, result) {\n  return map(radians, angle => Math.acos(angle), result);\n}\nfunction atan(radians, result) {\n  return map(radians, angle => Math.atan(angle), result);\n}\nfunction clamp(value, min, max) {\n  return map(value, value => Math.max(min, Math.min(max, value)));\n}\nfunction lerp(a, b, t) {\n  if (isArray(a)) {\n    return a.map((ai, i) => lerp(ai, b[i], t));\n  }\n\n  return t * b + (1 - t) * a;\n}\nfunction equals(a, b, epsilon) {\n  const oldEpsilon = config.EPSILON;\n\n  if (epsilon) {\n    config.EPSILON = epsilon;\n  }\n\n  try {\n    if (a === b) {\n      return true;\n    }\n\n    if (isArray(a) && isArray(b)) {\n      if (a.length !== b.length) {\n        return false;\n      }\n\n      for (let i = 0; i < a.length; ++i) {\n        if (!equals(a[i], b[i])) {\n          return false;\n        }\n      }\n\n      return true;\n    }\n\n    if (a && a.equals) {\n      return a.equals(b);\n    }\n\n    if (b && b.equals) {\n      return b.equals(a);\n    }\n\n    if (typeof a === 'number' && typeof b === 'number') {\n      return Math.abs(a - b) <= config.EPSILON * Math.max(1, Math.abs(a), Math.abs(b));\n    }\n\n    return false;\n  } finally {\n    config.EPSILON = oldEpsilon;\n  }\n}\nfunction exactEquals(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  if (a && typeof a === 'object' && b && typeof b === 'object') {\n    if (a.constructor !== b.constructor) {\n      return false;\n    }\n\n    if (a.exactEquals) {\n      return a.exactEquals(b);\n    }\n  }\n\n  if (isArray(a) && isArray(b)) {\n    if (a.length !== b.length) {\n      return false;\n    }\n\n    for (let i = 0; i < a.length; ++i) {\n      if (!exactEquals(a[i], b[i])) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  return false;\n}\nfunction withEpsilon(epsilon, func) {\n  const oldPrecision = config.EPSILON;\n  config.EPSILON = epsilon;\n  let value;\n\n  try {\n    value = func();\n  } finally {\n    config.EPSILON = oldPrecision;\n  }\n\n  return value;\n}\n\nfunction round(value) {\n  return Math.round(value / config.EPSILON) * config.EPSILON;\n}\n\nfunction duplicateArray(array) {\n  return array.clone ? array.clone() : new Array(array.length);\n}\n\nfunction map(value, func, result) {\n  if (isArray(value)) {\n    const array = value;\n    result = result || duplicateArray(array);\n\n    for (let i = 0; i < result.length && i < array.length; ++i) {\n      result[i] = func(value[i], i, result);\n    }\n\n    return result;\n  }\n\n  return func(value);\n}\n//# sourceMappingURL=common.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/core/dist/esm/lib/common.js?");

/***/ }),

/***/ "./node_modules/@math.gl/core/dist/esm/lib/gl-matrix-extras.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@math.gl/core/dist/esm/lib/gl-matrix-extras.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"vec2_transformMat4AsVector\": function() { return /* binding */ vec2_transformMat4AsVector; },\n/* harmony export */   \"vec3_transformMat2\": function() { return /* binding */ vec3_transformMat2; },\n/* harmony export */   \"vec3_transformMat4AsVector\": function() { return /* binding */ vec3_transformMat4AsVector; },\n/* harmony export */   \"vec4_transformMat2\": function() { return /* binding */ vec4_transformMat2; },\n/* harmony export */   \"vec4_transformMat3\": function() { return /* binding */ vec4_transformMat3; }\n/* harmony export */ });\nfunction vec2_transformMat4AsVector(out, a, m) {\n  const x = a[0];\n  const y = a[1];\n  const w = m[3] * x + m[7] * y || 1.0;\n  out[0] = (m[0] * x + m[4] * y) / w;\n  out[1] = (m[1] * x + m[5] * y) / w;\n  return out;\n}\nfunction vec3_transformMat4AsVector(out, a, m) {\n  const x = a[0];\n  const y = a[1];\n  const z = a[2];\n  const w = m[3] * x + m[7] * y + m[11] * z || 1.0;\n  out[0] = (m[0] * x + m[4] * y + m[8] * z) / w;\n  out[1] = (m[1] * x + m[5] * y + m[9] * z) / w;\n  out[2] = (m[2] * x + m[6] * y + m[10] * z) / w;\n  return out;\n}\nfunction vec3_transformMat2(out, a, m) {\n  const x = a[0];\n  const y = a[1];\n  out[0] = m[0] * x + m[2] * y;\n  out[1] = m[1] * x + m[3] * y;\n  out[2] = a[2];\n  return out;\n}\nfunction vec4_transformMat2(out, a, m) {\n  const x = a[0];\n  const y = a[1];\n  out[0] = m[0] * x + m[2] * y;\n  out[1] = m[1] * x + m[3] * y;\n  out[2] = a[2];\n  out[3] = a[3];\n  return out;\n}\nfunction vec4_transformMat3(out, a, m) {\n  const x = a[0];\n  const y = a[1];\n  const z = a[2];\n  out[0] = m[0] * x + m[3] * y + m[6] * z;\n  out[1] = m[1] * x + m[4] * y + m[7] * z;\n  out[2] = m[2] * x + m[5] * y + m[8] * z;\n  out[3] = a[3];\n  return out;\n}\n//# sourceMappingURL=gl-matrix-extras.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/core/dist/esm/lib/gl-matrix-extras.js?");

/***/ }),

/***/ "./node_modules/@math.gl/core/dist/esm/lib/validators.js":
/*!***************************************************************!*\
  !*** ./node_modules/@math.gl/core/dist/esm/lib/validators.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"checkNumber\": function() { return /* binding */ checkNumber; },\n/* harmony export */   \"checkVector\": function() { return /* binding */ checkVector; },\n/* harmony export */   \"deprecated\": function() { return /* binding */ deprecated; },\n/* harmony export */   \"validateVector\": function() { return /* binding */ validateVector; }\n/* harmony export */ });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n\nfunction validateVector(v, length) {\n  if (v.length !== length) {\n    return false;\n  }\n\n  for (let i = 0; i < v.length; ++i) {\n    if (!Number.isFinite(v[i])) {\n      return false;\n    }\n  }\n\n  return true;\n}\nfunction checkNumber(value) {\n  if (!Number.isFinite(value)) {\n    throw new Error(\"Invalid number \".concat(value));\n  }\n\n  return value;\n}\nfunction checkVector(v, length, callerName = '') {\n  if (_common__WEBPACK_IMPORTED_MODULE_0__.config.debug && !validateVector(v, length)) {\n    throw new Error(\"math.gl: \".concat(callerName, \" some fields set to invalid numbers'\"));\n  }\n\n  return v;\n}\nconst map = {};\nfunction deprecated(method, version) {\n  if (!map[method]) {\n    map[method] = true;\n    console.warn(\"\".concat(method, \" has been removed in version \").concat(version, \", see upgrade guide for more information\"));\n  }\n}\n//# sourceMappingURL=validators.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/core/dist/esm/lib/validators.js?");

/***/ }),

/***/ "./node_modules/@math.gl/polygon/dist/esm/cut-by-grid.js":
/*!***************************************************************!*\
  !*** ./node_modules/@math.gl/polygon/dist/esm/cut-by-grid.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"cutPolygonByGrid\": function() { return /* binding */ cutPolygonByGrid; },\n/* harmony export */   \"cutPolylineByGrid\": function() { return /* binding */ cutPolylineByGrid; }\n/* harmony export */ });\n/* harmony import */ var _lineclip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lineclip */ \"./node_modules/@math.gl/polygon/dist/esm/lineclip.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./node_modules/@math.gl/polygon/dist/esm/utils.js\");\n\n\nfunction cutPolylineByGrid(positions, options) {\n  const {\n    size = 2,\n    broken = false,\n    gridResolution = 10,\n    gridOffset = [0, 0],\n    startIndex = 0,\n    endIndex = positions.length\n  } = options || {};\n  const numPoints = (endIndex - startIndex) / size;\n  let part = [];\n  const result = [part];\n  const a = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getPointAtIndex)(positions, 0, size, startIndex);\n  let b;\n  let codeB;\n  const cell = getGridCell(a, gridResolution, gridOffset, []);\n  const scratchPoint = [];\n  (0,_utils__WEBPACK_IMPORTED_MODULE_1__.push)(part, a);\n\n  for (let i = 1; i < numPoints; i++) {\n    b = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getPointAtIndex)(positions, i, size, startIndex, b);\n    codeB = (0,_lineclip__WEBPACK_IMPORTED_MODULE_0__.bitCode)(b, cell);\n\n    while (codeB) {\n      (0,_lineclip__WEBPACK_IMPORTED_MODULE_0__.intersect)(a, b, codeB, cell, scratchPoint);\n      const codeAlt = (0,_lineclip__WEBPACK_IMPORTED_MODULE_0__.bitCode)(scratchPoint, cell);\n\n      if (codeAlt) {\n        (0,_lineclip__WEBPACK_IMPORTED_MODULE_0__.intersect)(a, scratchPoint, codeAlt, cell, scratchPoint);\n        codeB = codeAlt;\n      }\n\n      (0,_utils__WEBPACK_IMPORTED_MODULE_1__.push)(part, scratchPoint);\n      (0,_utils__WEBPACK_IMPORTED_MODULE_1__.copy)(a, scratchPoint);\n      moveToNeighborCell(cell, gridResolution, codeB);\n\n      if (broken && part.length > size) {\n        part = [];\n        result.push(part);\n        (0,_utils__WEBPACK_IMPORTED_MODULE_1__.push)(part, a);\n      }\n\n      codeB = (0,_lineclip__WEBPACK_IMPORTED_MODULE_0__.bitCode)(b, cell);\n    }\n\n    (0,_utils__WEBPACK_IMPORTED_MODULE_1__.push)(part, b);\n    (0,_utils__WEBPACK_IMPORTED_MODULE_1__.copy)(a, b);\n  }\n\n  return broken ? result : result[0];\n}\nconst TYPE_INSIDE = 0;\nconst TYPE_BORDER = 1;\n\nfunction concatInPlace(arr1, arr2) {\n  for (let i = 0; i < arr2.length; i++) {\n    arr1.push(arr2[i]);\n  }\n\n  return arr1;\n}\n\nfunction cutPolygonByGrid(positions, holeIndices = null, options) {\n  if (!positions.length) {\n    return [];\n  }\n\n  const {\n    size = 2,\n    gridResolution = 10,\n    gridOffset = [0, 0],\n    edgeTypes = false\n  } = options || {};\n  const result = [];\n  const queue = [{\n    pos: positions,\n    types: edgeTypes ? new Array(positions.length / size).fill(TYPE_BORDER) : null,\n    holes: holeIndices || []\n  }];\n  const bbox = [[], []];\n  let cell = [];\n\n  while (queue.length) {\n    const {\n      pos,\n      types,\n      holes\n    } = queue.shift();\n    getBoundingBox(pos, size, holes[0] || pos.length, bbox);\n    cell = getGridCell(bbox[0], gridResolution, gridOffset, cell);\n    const code = (0,_lineclip__WEBPACK_IMPORTED_MODULE_0__.bitCode)(bbox[1], cell);\n\n    if (code) {\n      let parts = bisectPolygon(pos, types, size, 0, holes[0] || pos.length, cell, code);\n      const polygonLow = {\n        pos: parts[0].pos,\n        types: parts[0].types,\n        holes: []\n      };\n      const polygonHigh = {\n        pos: parts[1].pos,\n        types: parts[1].types,\n        holes: []\n      };\n      queue.push(polygonLow, polygonHigh);\n\n      for (let i = 0; i < holes.length; i++) {\n        parts = bisectPolygon(pos, types, size, holes[i], holes[i + 1] || pos.length, cell, code);\n\n        if (parts[0]) {\n          polygonLow.holes.push(polygonLow.pos.length);\n          polygonLow.pos = concatInPlace(polygonLow.pos, parts[0].pos);\n\n          if (edgeTypes) {\n            polygonLow.types = concatInPlace(polygonLow.types, parts[0].types);\n          }\n        }\n\n        if (parts[1]) {\n          polygonHigh.holes.push(polygonHigh.pos.length);\n          polygonHigh.pos = concatInPlace(polygonHigh.pos, parts[1].pos);\n\n          if (edgeTypes) {\n            polygonHigh.types = concatInPlace(polygonHigh.types, parts[1].types);\n          }\n        }\n      }\n    } else {\n      const polygon = {\n        positions: pos\n      };\n\n      if (edgeTypes) {\n        polygon.edgeTypes = types;\n      }\n\n      if (holes.length) {\n        polygon.holeIndices = holes;\n      }\n\n      result.push(polygon);\n    }\n  }\n\n  return result;\n}\n\nfunction bisectPolygon(positions, edgeTypes, size, startIndex, endIndex, bbox, edge) {\n  const numPoints = (endIndex - startIndex) / size;\n  const resultLow = [];\n  const resultHigh = [];\n  const typesLow = [];\n  const typesHigh = [];\n  const scratchPoint = [];\n  let p;\n  let side;\n  let type;\n  const prev = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getPointAtIndex)(positions, numPoints - 1, size, startIndex);\n  let prevSide = Math.sign(edge & 8 ? prev[1] - bbox[3] : prev[0] - bbox[2]);\n  let prevType = edgeTypes && edgeTypes[numPoints - 1];\n  let lowPointCount = 0;\n  let highPointCount = 0;\n\n  for (let i = 0; i < numPoints; i++) {\n    p = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getPointAtIndex)(positions, i, size, startIndex, p);\n    side = Math.sign(edge & 8 ? p[1] - bbox[3] : p[0] - bbox[2]);\n    type = edgeTypes && edgeTypes[startIndex / size + i];\n\n    if (side && prevSide && prevSide !== side) {\n      (0,_lineclip__WEBPACK_IMPORTED_MODULE_0__.intersect)(prev, p, edge, bbox, scratchPoint);\n      (0,_utils__WEBPACK_IMPORTED_MODULE_1__.push)(resultLow, scratchPoint) && typesLow.push(prevType);\n      (0,_utils__WEBPACK_IMPORTED_MODULE_1__.push)(resultHigh, scratchPoint) && typesHigh.push(prevType);\n    }\n\n    if (side <= 0) {\n      (0,_utils__WEBPACK_IMPORTED_MODULE_1__.push)(resultLow, p) && typesLow.push(type);\n      lowPointCount -= side;\n    } else if (typesLow.length) {\n      typesLow[typesLow.length - 1] = TYPE_INSIDE;\n    }\n\n    if (side >= 0) {\n      (0,_utils__WEBPACK_IMPORTED_MODULE_1__.push)(resultHigh, p) && typesHigh.push(type);\n      highPointCount += side;\n    } else if (typesHigh.length) {\n      typesHigh[typesHigh.length - 1] = TYPE_INSIDE;\n    }\n\n    (0,_utils__WEBPACK_IMPORTED_MODULE_1__.copy)(prev, p);\n    prevSide = side;\n    prevType = type;\n  }\n\n  return [lowPointCount ? {\n    pos: resultLow,\n    types: edgeTypes && typesLow\n  } : null, highPointCount ? {\n    pos: resultHigh,\n    types: edgeTypes && typesHigh\n  } : null];\n}\n\nfunction getGridCell(p, gridResolution, gridOffset, out) {\n  const left = Math.floor((p[0] - gridOffset[0]) / gridResolution) * gridResolution + gridOffset[0];\n  const bottom = Math.floor((p[1] - gridOffset[1]) / gridResolution) * gridResolution + gridOffset[1];\n  out[0] = left;\n  out[1] = bottom;\n  out[2] = left + gridResolution;\n  out[3] = bottom + gridResolution;\n  return out;\n}\n\nfunction moveToNeighborCell(cell, gridResolution, edge) {\n  if (edge & 8) {\n    cell[1] += gridResolution;\n    cell[3] += gridResolution;\n  } else if (edge & 4) {\n    cell[1] -= gridResolution;\n    cell[3] -= gridResolution;\n  } else if (edge & 2) {\n    cell[0] += gridResolution;\n    cell[2] += gridResolution;\n  } else if (edge & 1) {\n    cell[0] -= gridResolution;\n    cell[2] -= gridResolution;\n  }\n}\n\nfunction getBoundingBox(positions, size, endIndex, out) {\n  let minX = Infinity;\n  let maxX = -Infinity;\n  let minY = Infinity;\n  let maxY = -Infinity;\n\n  for (let i = 0; i < endIndex; i += size) {\n    const x = positions[i];\n    const y = positions[i + 1];\n    minX = x < minX ? x : minX;\n    maxX = x > maxX ? x : maxX;\n    minY = y < minY ? y : minY;\n    maxY = y > maxY ? y : maxY;\n  }\n\n  out[0][0] = minX;\n  out[0][1] = minY;\n  out[1][0] = maxX;\n  out[1][1] = maxY;\n  return out;\n}\n//# sourceMappingURL=cut-by-grid.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/polygon/dist/esm/cut-by-grid.js?");

/***/ }),

/***/ "./node_modules/@math.gl/polygon/dist/esm/cut-by-mercator-bounds.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@math.gl/polygon/dist/esm/cut-by-mercator-bounds.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"cutPolygonByMercatorBounds\": function() { return /* binding */ cutPolygonByMercatorBounds; },\n/* harmony export */   \"cutPolylineByMercatorBounds\": function() { return /* binding */ cutPolylineByMercatorBounds; }\n/* harmony export */ });\n/* harmony import */ var _cut_by_grid__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cut-by-grid */ \"./node_modules/@math.gl/polygon/dist/esm/cut-by-grid.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./node_modules/@math.gl/polygon/dist/esm/utils.js\");\n\n\nconst DEFAULT_MAX_LATITUDE = 85.051129;\nfunction cutPolylineByMercatorBounds(positions, options) {\n  const {\n    size = 2,\n    startIndex = 0,\n    endIndex = positions.length,\n    normalize = true\n  } = options || {};\n  const newPositions = positions.slice(startIndex, endIndex);\n  wrapLongitudesForShortestPath(newPositions, size, 0, endIndex - startIndex);\n  const parts = (0,_cut_by_grid__WEBPACK_IMPORTED_MODULE_0__.cutPolylineByGrid)(newPositions, {\n    size,\n    broken: true,\n    gridResolution: 360,\n    gridOffset: [-180, -180]\n  });\n\n  if (normalize) {\n    for (const part of parts) {\n      shiftLongitudesIntoRange(part, size);\n    }\n  }\n\n  return parts;\n}\nfunction cutPolygonByMercatorBounds(positions, holeIndices = null, options) {\n  const {\n    size = 2,\n    normalize = true,\n    edgeTypes = false\n  } = options || {};\n  holeIndices = holeIndices || [];\n  const newPositions = [];\n  const newHoleIndices = [];\n  let srcStartIndex = 0;\n  let targetIndex = 0;\n\n  for (let ringIndex = 0; ringIndex <= holeIndices.length; ringIndex++) {\n    const srcEndIndex = holeIndices[ringIndex] || positions.length;\n    const targetStartIndex = targetIndex;\n    const splitIndex = findSplitIndex(positions, size, srcStartIndex, srcEndIndex);\n\n    for (let i = splitIndex; i < srcEndIndex; i++) {\n      newPositions[targetIndex++] = positions[i];\n    }\n\n    for (let i = srcStartIndex; i < splitIndex; i++) {\n      newPositions[targetIndex++] = positions[i];\n    }\n\n    wrapLongitudesForShortestPath(newPositions, size, targetStartIndex, targetIndex);\n    insertPoleVertices(newPositions, size, targetStartIndex, targetIndex, options === null || options === void 0 ? void 0 : options.maxLatitude);\n    srcStartIndex = srcEndIndex;\n    newHoleIndices[ringIndex] = targetIndex;\n  }\n\n  newHoleIndices.pop();\n  const parts = (0,_cut_by_grid__WEBPACK_IMPORTED_MODULE_0__.cutPolygonByGrid)(newPositions, newHoleIndices, {\n    size,\n    gridResolution: 360,\n    gridOffset: [-180, -180],\n    edgeTypes\n  });\n\n  if (normalize) {\n    for (const part of parts) {\n      shiftLongitudesIntoRange(part.positions, size);\n    }\n  }\n\n  return parts;\n}\n\nfunction findSplitIndex(positions, size, startIndex, endIndex) {\n  let maxLat = -1;\n  let pointIndex = -1;\n\n  for (let i = startIndex + 1; i < endIndex; i += size) {\n    const lat = Math.abs(positions[i]);\n\n    if (lat > maxLat) {\n      maxLat = lat;\n      pointIndex = i - 1;\n    }\n  }\n\n  return pointIndex;\n}\n\nfunction insertPoleVertices(positions, size, startIndex, endIndex, maxLatitude = DEFAULT_MAX_LATITUDE) {\n  const firstLng = positions[startIndex];\n  const lastLng = positions[endIndex - size];\n\n  if (Math.abs(firstLng - lastLng) > 180) {\n    const p = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getPointAtIndex)(positions, 0, size, startIndex);\n    p[0] += Math.round((lastLng - firstLng) / 360) * 360;\n    (0,_utils__WEBPACK_IMPORTED_MODULE_1__.push)(positions, p);\n    p[1] = Math.sign(p[1]) * maxLatitude;\n    (0,_utils__WEBPACK_IMPORTED_MODULE_1__.push)(positions, p);\n    p[0] = firstLng;\n    (0,_utils__WEBPACK_IMPORTED_MODULE_1__.push)(positions, p);\n  }\n}\n\nfunction wrapLongitudesForShortestPath(positions, size, startIndex, endIndex) {\n  let prevLng = positions[0];\n  let lng;\n\n  for (let i = startIndex; i < endIndex; i += size) {\n    lng = positions[i];\n    const delta = lng - prevLng;\n\n    if (delta > 180 || delta < -180) {\n      lng -= Math.round(delta / 360) * 360;\n    }\n\n    positions[i] = prevLng = lng;\n  }\n}\n\nfunction shiftLongitudesIntoRange(positions, size) {\n  let refLng;\n  const pointCount = positions.length / size;\n\n  for (let i = 0; i < pointCount; i++) {\n    refLng = positions[i * size];\n\n    if ((refLng + 180) % 360 !== 0) {\n      break;\n    }\n  }\n\n  const delta = -Math.round(refLng / 360) * 360;\n\n  if (delta === 0) {\n    return;\n  }\n\n  for (let i = 0; i < pointCount; i++) {\n    positions[i * size] += delta;\n  }\n}\n//# sourceMappingURL=cut-by-mercator-bounds.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/polygon/dist/esm/cut-by-mercator-bounds.js?");

/***/ }),

/***/ "./node_modules/@math.gl/polygon/dist/esm/earcut.js":
/*!**********************************************************!*\
  !*** ./node_modules/@math.gl/polygon/dist/esm/earcut.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"earcut\": function() { return /* binding */ earcut; }\n/* harmony export */ });\n/* harmony import */ var _polygon_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./polygon-utils */ \"./node_modules/@math.gl/polygon/dist/esm/polygon-utils.js\");\n\nfunction earcut(positions, holeIndices, dim = 2, areas) {\n  const hasHoles = holeIndices && holeIndices.length;\n  const outerLen = hasHoles ? holeIndices[0] * dim : positions.length;\n  let outerNode = linkedList(positions, 0, outerLen, dim, true, areas && areas[0]);\n  const triangles = [];\n  if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n  let invSize;\n  let maxX;\n  let maxY;\n  let minX;\n  let minY;\n  let x;\n  let y;\n  if (hasHoles) outerNode = eliminateHoles(positions, holeIndices, outerNode, dim, areas);\n\n  if (positions.length > 80 * dim) {\n    minX = maxX = positions[0];\n    minY = maxY = positions[1];\n\n    for (let i = dim; i < outerLen; i += dim) {\n      x = positions[i];\n      y = positions[i + 1];\n      if (x < minX) minX = x;\n      if (y < minY) minY = y;\n      if (x > maxX) maxX = x;\n      if (y > maxY) maxY = y;\n    }\n\n    invSize = Math.max(maxX - minX, maxY - minY);\n    invSize = invSize !== 0 ? 1 / invSize : 0;\n  }\n\n  earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n  return triangles;\n}\n\nfunction linkedList(data, start, end, dim, clockwise, area) {\n  let i;\n  let last;\n\n  if (area === undefined) {\n    area = (0,_polygon_utils__WEBPACK_IMPORTED_MODULE_0__.getPolygonSignedArea)(data, {\n      start,\n      end,\n      size: dim\n    });\n  }\n\n  if (clockwise === area < 0) {\n    for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n  } else {\n    for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n  }\n\n  if (last && equals(last, last.next)) {\n    removeNode(last);\n    last = last.next;\n  }\n\n  return last;\n}\n\nfunction filterPoints(start, end) {\n  if (!start) return start;\n  if (!end) end = start;\n  let p = start;\n  let again;\n\n  do {\n    again = false;\n\n    if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n      removeNode(p);\n      p = end = p.prev;\n      if (p === p.next) break;\n      again = true;\n    } else {\n      p = p.next;\n    }\n  } while (again || p !== end);\n\n  return end;\n}\n\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n  if (!ear) return;\n  if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n  let stop = ear;\n  let prev;\n  let next;\n\n  while (ear.prev !== ear.next) {\n    prev = ear.prev;\n    next = ear.next;\n\n    if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n      triangles.push(prev.i / dim);\n      triangles.push(ear.i / dim);\n      triangles.push(next.i / dim);\n      removeNode(ear);\n      ear = next.next;\n      stop = next.next;\n      continue;\n    }\n\n    ear = next;\n\n    if (ear === stop) {\n      if (!pass) {\n        earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n      } else if (pass === 1) {\n        ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n        earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n      } else if (pass === 2) {\n        splitEarcut(ear, triangles, dim, minX, minY, invSize);\n      }\n\n      break;\n    }\n  }\n}\n\nfunction isEar(ear) {\n  const a = ear.prev;\n  const b = ear;\n  const c = ear.next;\n  if (area(a, b, c) >= 0) return false;\n  let p = ear.next.next;\n\n  while (p !== ear.prev) {\n    if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n    p = p.next;\n  }\n\n  return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n  const a = ear.prev;\n  const b = ear;\n  const c = ear.next;\n  if (area(a, b, c) >= 0) return false;\n  const minTX = a.x < b.x ? a.x < c.x ? a.x : c.x : b.x < c.x ? b.x : c.x;\n  const minTY = a.y < b.y ? a.y < c.y ? a.y : c.y : b.y < c.y ? b.y : c.y;\n  const maxTX = a.x > b.x ? a.x > c.x ? a.x : c.x : b.x > c.x ? b.x : c.x;\n  const maxTY = a.y > b.y ? a.y > c.y ? a.y : c.y : b.y > c.y ? b.y : c.y;\n  const minZ = zOrder(minTX, minTY, minX, minY, invSize);\n  const maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n  let p = ear.prevZ;\n  let n = ear.nextZ;\n\n  while (p && p.z >= minZ && n && n.z <= maxZ) {\n    if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n    p = p.prevZ;\n    if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n    n = n.nextZ;\n  }\n\n  while (p && p.z >= minZ) {\n    if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n    p = p.prevZ;\n  }\n\n  while (n && n.z <= maxZ) {\n    if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n    n = n.nextZ;\n  }\n\n  return true;\n}\n\nfunction cureLocalIntersections(start, triangles, dim) {\n  let p = start;\n\n  do {\n    const a = p.prev;\n    const b = p.next.next;\n\n    if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n      triangles.push(a.i / dim);\n      triangles.push(p.i / dim);\n      triangles.push(b.i / dim);\n      removeNode(p);\n      removeNode(p.next);\n      p = start = b;\n    }\n\n    p = p.next;\n  } while (p !== start);\n\n  return filterPoints(p);\n}\n\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n  let a = start;\n\n  do {\n    let b = a.next.next;\n\n    while (b !== a.prev) {\n      if (a.i !== b.i && isValidDiagonal(a, b)) {\n        let c = splitPolygon(a, b);\n        a = filterPoints(a, a.next);\n        c = filterPoints(c, c.next);\n        earcutLinked(a, triangles, dim, minX, minY, invSize);\n        earcutLinked(c, triangles, dim, minX, minY, invSize);\n        return;\n      }\n\n      b = b.next;\n    }\n\n    a = a.next;\n  } while (a !== start);\n}\n\nfunction eliminateHoles(data, holeIndices, outerNode, dim, areas) {\n  const queue = [];\n  let i;\n  let len;\n  let start;\n  let end;\n  let list;\n\n  for (i = 0, len = holeIndices.length; i < len; i++) {\n    start = holeIndices[i] * dim;\n    end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n    list = linkedList(data, start, end, dim, false, areas && areas[i + 1]);\n    if (list === list.next) list.steiner = true;\n    queue.push(getLeftmost(list));\n  }\n\n  queue.sort(compareX);\n\n  for (i = 0; i < queue.length; i++) {\n    eliminateHole(queue[i], outerNode);\n    outerNode = filterPoints(outerNode, outerNode.next);\n  }\n\n  return outerNode;\n}\n\nfunction compareX(a, b) {\n  return a.x - b.x;\n}\n\nfunction eliminateHole(hole, outerNode) {\n  outerNode = findHoleBridge(hole, outerNode);\n\n  if (outerNode) {\n    const b = splitPolygon(outerNode, hole);\n    filterPoints(outerNode, outerNode.next);\n    filterPoints(b, b.next);\n  }\n}\n\nfunction findHoleBridge(hole, outerNode) {\n  let p = outerNode;\n  const hx = hole.x;\n  const hy = hole.y;\n  let qx = -Infinity;\n  let m;\n\n  do {\n    if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n      const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n\n      if (x <= hx && x > qx) {\n        qx = x;\n\n        if (x === hx) {\n          if (hy === p.y) return p;\n          if (hy === p.next.y) return p.next;\n        }\n\n        m = p.x < p.next.x ? p : p.next;\n      }\n    }\n\n    p = p.next;\n  } while (p !== outerNode);\n\n  if (!m) return null;\n  if (hx === qx) return m;\n  const stop = m;\n  const mx = m.x;\n  const my = m.y;\n  let tanMin = Infinity;\n  let tan;\n  p = m;\n\n  do {\n    if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n      tan = Math.abs(hy - p.y) / (hx - p.x);\n\n      if (locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector(m, p)))) {\n        m = p;\n        tanMin = tan;\n      }\n    }\n\n    p = p.next;\n  } while (p !== stop);\n\n  return m;\n}\n\nfunction sectorContainsSector(m, p) {\n  return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\nfunction indexCurve(start, minX, minY, invSize) {\n  let p = start;\n\n  do {\n    if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n    p.prevZ = p.prev;\n    p.nextZ = p.next;\n    p = p.next;\n  } while (p !== start);\n\n  p.prevZ.nextZ = null;\n  p.prevZ = null;\n  sortLinked(p);\n}\n\nfunction sortLinked(list) {\n  let e;\n  let i;\n  let inSize = 1;\n  let numMerges;\n  let p;\n  let pSize;\n  let q;\n  let qSize;\n  let tail;\n\n  do {\n    p = list;\n    list = null;\n    tail = null;\n    numMerges = 0;\n\n    while (p) {\n      numMerges++;\n      q = p;\n      pSize = 0;\n\n      for (i = 0; i < inSize; i++) {\n        pSize++;\n        q = q.nextZ;\n        if (!q) break;\n      }\n\n      qSize = inSize;\n\n      while (pSize > 0 || qSize > 0 && q) {\n        if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n          e = p;\n          p = p.nextZ;\n          pSize--;\n        } else {\n          e = q;\n          q = q.nextZ;\n          qSize--;\n        }\n\n        if (tail) tail.nextZ = e;else list = e;\n        e.prevZ = tail;\n        tail = e;\n      }\n\n      p = q;\n    }\n\n    tail.nextZ = null;\n    inSize *= 2;\n  } while (numMerges > 1);\n\n  return list;\n}\n\nfunction zOrder(x, y, minX, minY, invSize) {\n  x = 32767 * (x - minX) * invSize;\n  y = 32767 * (y - minY) * invSize;\n  x = (x | x << 8) & 0x00ff00ff;\n  x = (x | x << 4) & 0x0f0f0f0f;\n  x = (x | x << 2) & 0x33333333;\n  x = (x | x << 1) & 0x55555555;\n  y = (y | y << 8) & 0x00ff00ff;\n  y = (y | y << 4) & 0x0f0f0f0f;\n  y = (y | y << 2) & 0x33333333;\n  y = (y | y << 1) & 0x55555555;\n  return x | y << 1;\n}\n\nfunction getLeftmost(start) {\n  let p = start;\n  let leftmost = start;\n\n  do {\n    if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y) leftmost = p;\n    p = p.next;\n  } while (p !== start);\n\n  return leftmost;\n}\n\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n  return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 && (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 && (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\nfunction isValidDiagonal(a, b) {\n  return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && (area(a.prev, a, b.prev) || area(a, b.prev, b)) || equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0);\n}\n\nfunction area(p, q, r) {\n  return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\nfunction equals(p1, p2) {\n  return p1.x === p2.x && p1.y === p2.y;\n}\n\nfunction intersects(p1, q1, p2, q2) {\n  const o1 = sign(area(p1, q1, p2));\n  const o2 = sign(area(p1, q1, q2));\n  const o3 = sign(area(p2, q2, p1));\n  const o4 = sign(area(p2, q2, q1));\n  if (o1 !== o2 && o3 !== o4) return true;\n  if (o1 === 0 && onSegment(p1, p2, q1)) return true;\n  if (o2 === 0 && onSegment(p1, q2, q1)) return true;\n  if (o3 === 0 && onSegment(p2, p1, q2)) return true;\n  if (o4 === 0 && onSegment(p2, q1, q2)) return true;\n  return false;\n}\n\nfunction onSegment(p, q, r) {\n  return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n  return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\nfunction intersectsPolygon(a, b) {\n  let p = a;\n\n  do {\n    if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b)) return true;\n    p = p.next;\n  } while (p !== a);\n\n  return false;\n}\n\nfunction locallyInside(a, b) {\n  return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\nfunction middleInside(a, b) {\n  let p = a;\n  let inside = false;\n  const px = (a.x + b.x) / 2;\n  const py = (a.y + b.y) / 2;\n\n  do {\n    if (p.y > py !== p.next.y > py && p.next.y !== p.y && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x) inside = !inside;\n    p = p.next;\n  } while (p !== a);\n\n  return inside;\n}\n\nfunction splitPolygon(a, b) {\n  const a2 = new Node(a.i, a.x, a.y);\n  const b2 = new Node(b.i, b.x, b.y);\n  const an = a.next;\n  const bp = b.prev;\n  a.next = b;\n  b.prev = a;\n  a2.next = an;\n  an.prev = a2;\n  b2.next = a2;\n  a2.prev = b2;\n  bp.next = b2;\n  b2.prev = bp;\n  return b2;\n}\n\nfunction insertNode(i, x, y, last) {\n  const p = new Node(i, x, y);\n\n  if (!last) {\n    p.prev = p;\n    p.next = p;\n  } else {\n    p.next = last.next;\n    p.prev = last;\n    last.next.prev = p;\n    last.next = p;\n  }\n\n  return p;\n}\n\nfunction removeNode(p) {\n  p.next.prev = p.prev;\n  p.prev.next = p.next;\n  if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n  if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n  this.i = i;\n  this.x = x;\n  this.y = y;\n  this.prev = null;\n  this.next = null;\n  this.z = null;\n  this.prevZ = null;\n  this.nextZ = null;\n  this.steiner = false;\n}\n//# sourceMappingURL=earcut.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/polygon/dist/esm/earcut.js?");

/***/ }),

/***/ "./node_modules/@math.gl/polygon/dist/esm/index.js":
/*!*********************************************************!*\
  !*** ./node_modules/@math.gl/polygon/dist/esm/index.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Polygon\": function() { return /* reexport safe */ _polygon__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"WINDING\": function() { return /* reexport safe */ _polygon_utils__WEBPACK_IMPORTED_MODULE_1__.WINDING; },\n/* harmony export */   \"_Polygon\": function() { return /* reexport safe */ _polygon__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"clipPolygon\": function() { return /* reexport safe */ _lineclip__WEBPACK_IMPORTED_MODULE_3__.clipPolygon; },\n/* harmony export */   \"clipPolyline\": function() { return /* reexport safe */ _lineclip__WEBPACK_IMPORTED_MODULE_3__.clipPolyline; },\n/* harmony export */   \"cutPolygonByGrid\": function() { return /* reexport safe */ _cut_by_grid__WEBPACK_IMPORTED_MODULE_4__.cutPolygonByGrid; },\n/* harmony export */   \"cutPolygonByMercatorBounds\": function() { return /* reexport safe */ _cut_by_mercator_bounds__WEBPACK_IMPORTED_MODULE_5__.cutPolygonByMercatorBounds; },\n/* harmony export */   \"cutPolylineByGrid\": function() { return /* reexport safe */ _cut_by_grid__WEBPACK_IMPORTED_MODULE_4__.cutPolylineByGrid; },\n/* harmony export */   \"cutPolylineByMercatorBounds\": function() { return /* reexport safe */ _cut_by_mercator_bounds__WEBPACK_IMPORTED_MODULE_5__.cutPolylineByMercatorBounds; },\n/* harmony export */   \"earcut\": function() { return /* reexport safe */ _earcut__WEBPACK_IMPORTED_MODULE_2__.earcut; },\n/* harmony export */   \"forEachSegmentInPolygon\": function() { return /* reexport safe */ _polygon_utils__WEBPACK_IMPORTED_MODULE_1__.forEachSegmentInPolygon; },\n/* harmony export */   \"getPolygonSignedArea\": function() { return /* reexport safe */ _polygon_utils__WEBPACK_IMPORTED_MODULE_1__.getPolygonSignedArea; },\n/* harmony export */   \"getPolygonWindingDirection\": function() { return /* reexport safe */ _polygon_utils__WEBPACK_IMPORTED_MODULE_1__.getPolygonWindingDirection; },\n/* harmony export */   \"modifyPolygonWindingDirection\": function() { return /* reexport safe */ _polygon_utils__WEBPACK_IMPORTED_MODULE_1__.modifyPolygonWindingDirection; }\n/* harmony export */ });\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./polygon */ \"./node_modules/@math.gl/polygon/dist/esm/polygon.js\");\n/* harmony import */ var _polygon_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./polygon-utils */ \"./node_modules/@math.gl/polygon/dist/esm/polygon-utils.js\");\n/* harmony import */ var _earcut__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./earcut */ \"./node_modules/@math.gl/polygon/dist/esm/earcut.js\");\n/* harmony import */ var _lineclip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lineclip */ \"./node_modules/@math.gl/polygon/dist/esm/lineclip.js\");\n/* harmony import */ var _cut_by_grid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./cut-by-grid */ \"./node_modules/@math.gl/polygon/dist/esm/cut-by-grid.js\");\n/* harmony import */ var _cut_by_mercator_bounds__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./cut-by-mercator-bounds */ \"./node_modules/@math.gl/polygon/dist/esm/cut-by-mercator-bounds.js\");\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/polygon/dist/esm/index.js?");

/***/ }),

/***/ "./node_modules/@math.gl/polygon/dist/esm/lineclip.js":
/*!************************************************************!*\
  !*** ./node_modules/@math.gl/polygon/dist/esm/lineclip.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"bitCode\": function() { return /* binding */ bitCode; },\n/* harmony export */   \"clipPolygon\": function() { return /* binding */ clipPolygon; },\n/* harmony export */   \"clipPolyline\": function() { return /* binding */ clipPolyline; },\n/* harmony export */   \"intersect\": function() { return /* binding */ intersect; }\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./node_modules/@math.gl/polygon/dist/esm/utils.js\");\n\nfunction clipPolyline(positions, bbox, options) {\n  const {\n    size = 2,\n    startIndex = 0,\n    endIndex = positions.length\n  } = options || {};\n  const numPoints = (endIndex - startIndex) / size;\n  const result = [];\n  let part = [];\n  let a;\n  let b;\n  let codeA = -1;\n  let codeB;\n  let lastCode;\n\n  for (let i = 1; i < numPoints; i++) {\n    a = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getPointAtIndex)(positions, i - 1, size, startIndex, a);\n    b = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getPointAtIndex)(positions, i, size, startIndex, b);\n\n    if (codeA < 0) {\n      codeA = bitCode(a, bbox);\n    }\n\n    codeB = lastCode = bitCode(b, bbox);\n\n    while (true) {\n      if (!(codeA | codeB)) {\n        (0,_utils__WEBPACK_IMPORTED_MODULE_0__.push)(part, a);\n\n        if (codeB !== lastCode) {\n          (0,_utils__WEBPACK_IMPORTED_MODULE_0__.push)(part, b);\n\n          if (i < numPoints - 1) {\n            result.push(part);\n            part = [];\n          }\n        } else if (i === numPoints - 1) {\n          (0,_utils__WEBPACK_IMPORTED_MODULE_0__.push)(part, b);\n        }\n\n        break;\n      } else if (codeA & codeB) {\n        break;\n      } else if (codeA) {\n        intersect(a, b, codeA, bbox, a);\n        codeA = bitCode(a, bbox);\n      } else {\n        intersect(a, b, codeB, bbox, b);\n        codeB = bitCode(b, bbox);\n      }\n    }\n\n    codeA = lastCode;\n  }\n\n  if (part.length) result.push(part);\n  return result;\n}\nfunction clipPolygon(positions, bbox, options) {\n  const {\n    size = 2,\n    endIndex = positions.length\n  } = options || {};\n  let {\n    startIndex = 0\n  } = options || {};\n  let numPoints = (endIndex - startIndex) / size;\n  let result;\n  let p;\n  let prev;\n  let inside;\n  let prevInside;\n\n  for (let edge = 1; edge <= 8; edge *= 2) {\n    result = [];\n    prev = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getPointAtIndex)(positions, numPoints - 1, size, startIndex, prev);\n    prevInside = !(bitCode(prev, bbox) & edge);\n\n    for (let i = 0; i < numPoints; i++) {\n      p = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getPointAtIndex)(positions, i, size, startIndex, p);\n      inside = !(bitCode(p, bbox) & edge);\n      if (inside !== prevInside) (0,_utils__WEBPACK_IMPORTED_MODULE_0__.push)(result, intersect(prev, p, edge, bbox));\n      if (inside) (0,_utils__WEBPACK_IMPORTED_MODULE_0__.push)(result, p);\n      (0,_utils__WEBPACK_IMPORTED_MODULE_0__.copy)(prev, p);\n      prevInside = inside;\n    }\n\n    positions = result;\n    startIndex = 0;\n    numPoints = result.length / size;\n    if (!numPoints) break;\n  }\n\n  return result;\n}\nfunction intersect(a, b, edge, bbox, out = []) {\n  let t;\n  let snap;\n\n  if (edge & 8) {\n    t = (bbox[3] - a[1]) / (b[1] - a[1]);\n    snap = 3;\n  } else if (edge & 4) {\n    t = (bbox[1] - a[1]) / (b[1] - a[1]);\n    snap = 1;\n  } else if (edge & 2) {\n    t = (bbox[2] - a[0]) / (b[0] - a[0]);\n    snap = 2;\n  } else if (edge & 1) {\n    t = (bbox[0] - a[0]) / (b[0] - a[0]);\n    snap = 0;\n  } else {\n    return null;\n  }\n\n  for (let i = 0; i < a.length; i++) {\n    out[i] = (snap & 1) === i ? bbox[snap] : t * (b[i] - a[i]) + a[i];\n  }\n\n  return out;\n}\nfunction bitCode(p, bbox) {\n  let code = 0;\n  if (p[0] < bbox[0]) code |= 1;else if (p[0] > bbox[2]) code |= 2;\n  if (p[1] < bbox[1]) code |= 4;else if (p[1] > bbox[3]) code |= 8;\n  return code;\n}\n//# sourceMappingURL=lineclip.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/polygon/dist/esm/lineclip.js?");

/***/ }),

/***/ "./node_modules/@math.gl/polygon/dist/esm/polygon-utils.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@math.gl/polygon/dist/esm/polygon-utils.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WINDING\": function() { return /* binding */ WINDING; },\n/* harmony export */   \"forEachSegmentInPolygon\": function() { return /* binding */ forEachSegmentInPolygon; },\n/* harmony export */   \"forEachSegmentInPolygonPoints\": function() { return /* binding */ forEachSegmentInPolygonPoints; },\n/* harmony export */   \"getPolygonSignedArea\": function() { return /* binding */ getPolygonSignedArea; },\n/* harmony export */   \"getPolygonSignedAreaPoints\": function() { return /* binding */ getPolygonSignedAreaPoints; },\n/* harmony export */   \"getPolygonWindingDirection\": function() { return /* binding */ getPolygonWindingDirection; },\n/* harmony export */   \"getPolygonWindingDirectionPoints\": function() { return /* binding */ getPolygonWindingDirectionPoints; },\n/* harmony export */   \"modifyPolygonWindingDirection\": function() { return /* binding */ modifyPolygonWindingDirection; },\n/* harmony export */   \"modifyPolygonWindingDirectionPoints\": function() { return /* binding */ modifyPolygonWindingDirectionPoints; }\n/* harmony export */ });\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n\nconst WINDING = {\n  CLOCKWISE: 1,\n  COUNTER_CLOCKWISE: -1\n};\nfunction modifyPolygonWindingDirection(points, direction, options = {}) {\n  const windingDirection = getPolygonWindingDirection(points, options);\n\n  if (windingDirection !== direction) {\n    reversePolygon(points, options);\n    return true;\n  }\n\n  return false;\n}\nfunction getPolygonWindingDirection(points, options = {}) {\n  return Math.sign(getPolygonSignedArea(points, options));\n}\nfunction getPolygonSignedArea(points, options = {}) {\n  const {\n    start = 0,\n    end = points.length\n  } = options;\n  const dim = options.size || 2;\n  let area = 0;\n\n  for (let i = start, j = end - dim; i < end; i += dim) {\n    area += (points[i] - points[j]) * (points[i + 1] + points[j + 1]);\n    j = i;\n  }\n\n  return area / 2;\n}\nfunction forEachSegmentInPolygon(points, visitor, options = {}) {\n  const {\n    start = 0,\n    end = points.length,\n    size = 2,\n    isClosed\n  } = options;\n  const numPoints = (end - start) / size;\n\n  for (let i = 0; i < numPoints - 1; ++i) {\n    visitor(points[start + i * size], points[start + i * size + 1], points[start + (i + 1) * size], points[start + (i + 1) * size + 1], i, i + 1);\n  }\n\n  const endPointIndex = start + (numPoints - 1) * size;\n  const isClosedEx = isClosed || (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_0__.equals)(points[start], points[endPointIndex]) && (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_0__.equals)(points[start + 1], points[endPointIndex + 1]);\n\n  if (!isClosedEx) {\n    visitor(points[endPointIndex], points[endPointIndex + 1], points[start], points[start + 1], numPoints - 1, 0);\n  }\n}\n\nfunction reversePolygon(points, options) {\n  const {\n    start = 0,\n    end = points.length,\n    size = 2\n  } = options;\n  const numPoints = (end - start) / size;\n  const numSwaps = Math.floor(numPoints / 2);\n\n  for (let i = 0; i < numSwaps; ++i) {\n    const b1 = start + i * size;\n    const b2 = start + (numPoints - 1 - i) * size;\n\n    for (let j = 0; j < size; ++j) {\n      const tmp = points[b1 + j];\n      points[b1 + j] = points[b2 + j];\n      points[b2 + j] = tmp;\n    }\n  }\n}\n\nfunction modifyPolygonWindingDirectionPoints(points, direction, options = {}) {\n  const currentDirection = getPolygonWindingDirectionPoints(points, options);\n\n  if (currentDirection !== direction) {\n    points.reverse();\n    return true;\n  }\n\n  return false;\n}\nfunction getPolygonWindingDirectionPoints(points, options = {}) {\n  return Math.sign(getPolygonSignedAreaPoints(points, options));\n}\nfunction getPolygonSignedAreaPoints(points, options = {}) {\n  const {\n    start = 0,\n    end = points.length\n  } = options;\n  let area = 0;\n\n  for (let i = start, j = end - 1; i < end; ++i) {\n    area += (points[i][0] - points[j][0]) * (points[i][1] + points[j][1]);\n    j = i;\n  }\n\n  return area / 2;\n}\nfunction forEachSegmentInPolygonPoints(points, visitor, options = {}) {\n  const {\n    start = 0,\n    end = points.length,\n    isClosed\n  } = options;\n\n  for (let i = start; i < end - 1; ++i) {\n    visitor(points[i], points[i + 1], i, i + 1);\n  }\n\n  const isClosedEx = isClosed || (0,_math_gl_core__WEBPACK_IMPORTED_MODULE_0__.equals)(points[end - 1], points[0]);\n\n  if (!isClosedEx) {\n    visitor(points[end - 1], points[0], end - 1, 0);\n  }\n}\n//# sourceMappingURL=polygon-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/polygon/dist/esm/polygon-utils.js?");

/***/ }),

/***/ "./node_modules/@math.gl/polygon/dist/esm/polygon.js":
/*!***********************************************************!*\
  !*** ./node_modules/@math.gl/polygon/dist/esm/polygon.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Polygon; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _math_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @math.gl/core */ \"./node_modules/@math.gl/core/dist/esm/lib/common.js\");\n/* harmony import */ var _polygon_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./polygon-utils */ \"./node_modules/@math.gl/polygon/dist/esm/polygon-utils.js\");\n\n\n\nclass Polygon {\n  constructor(points, options = {}) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"points\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"isFlatArray\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"options\", void 0);\n\n    this.points = points;\n    this.isFlatArray = !(0,_math_gl_core__WEBPACK_IMPORTED_MODULE_2__.isArray)(points[0]);\n    this.options = {\n      start: options.start || 0,\n      end: options.end || points.length,\n      size: options.size || 2,\n      isClosed: options.isClosed\n    };\n    Object.freeze(this);\n  }\n\n  getSignedArea() {\n    if (this.isFlatArray) return (0,_polygon_utils__WEBPACK_IMPORTED_MODULE_1__.getPolygonSignedArea)(this.points, this.options);\n    return (0,_polygon_utils__WEBPACK_IMPORTED_MODULE_1__.getPolygonSignedAreaPoints)(this.points, this.options);\n  }\n\n  getArea() {\n    return Math.abs(this.getSignedArea());\n  }\n\n  getWindingDirection() {\n    return Math.sign(this.getSignedArea());\n  }\n\n  forEachSegment(visitor) {\n    if (this.isFlatArray) {\n      (0,_polygon_utils__WEBPACK_IMPORTED_MODULE_1__.forEachSegmentInPolygon)(this.points, (x1, y1, x2, y2, i1, i2) => {\n        visitor([x1, y1], [x2, y2], i1, i2);\n      }, this.options);\n    } else {\n      (0,_polygon_utils__WEBPACK_IMPORTED_MODULE_1__.forEachSegmentInPolygonPoints)(this.points, visitor, this.options);\n    }\n  }\n\n  modifyWindingDirection(direction) {\n    if (this.isFlatArray) {\n      return (0,_polygon_utils__WEBPACK_IMPORTED_MODULE_1__.modifyPolygonWindingDirection)(this.points, direction, this.options);\n    }\n\n    return (0,_polygon_utils__WEBPACK_IMPORTED_MODULE_1__.modifyPolygonWindingDirectionPoints)(this.points, direction, this.options);\n  }\n\n}\n//# sourceMappingURL=polygon.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/polygon/dist/esm/polygon.js?");

/***/ }),

/***/ "./node_modules/@math.gl/polygon/dist/esm/utils.js":
/*!*********************************************************!*\
  !*** ./node_modules/@math.gl/polygon/dist/esm/utils.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"copy\": function() { return /* binding */ copy; },\n/* harmony export */   \"getPointAtIndex\": function() { return /* binding */ getPointAtIndex; },\n/* harmony export */   \"push\": function() { return /* binding */ push; }\n/* harmony export */ });\nfunction push(target, source) {\n  const size = source.length;\n  const startIndex = target.length;\n\n  if (startIndex > 0) {\n    let isDuplicate = true;\n\n    for (let i = 0; i < size; i++) {\n      if (target[startIndex - size + i] !== source[i]) {\n        isDuplicate = false;\n        break;\n      }\n    }\n\n    if (isDuplicate) {\n      return false;\n    }\n  }\n\n  for (let i = 0; i < size; i++) {\n    target[startIndex + i] = source[i];\n  }\n\n  return true;\n}\nfunction copy(target, source) {\n  const size = source.length;\n\n  for (let i = 0; i < size; i++) {\n    target[i] = source[i];\n  }\n}\nfunction getPointAtIndex(positions, index, size, offset, out = []) {\n  const startI = offset + index * size;\n\n  for (let i = 0; i < size; i++) {\n    out[i] = positions[startI + i];\n  }\n\n  return out;\n}\n//# sourceMappingURL=utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/polygon/dist/esm/utils.js?");

/***/ }),

/***/ "./node_modules/@math.gl/sun/dist/esm/index.js":
/*!*****************************************************!*\
  !*** ./node_modules/@math.gl/sun/dist/esm/index.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getSunDirection\": function() { return /* reexport safe */ _suncalc__WEBPACK_IMPORTED_MODULE_0__.getSunDirection; },\n/* harmony export */   \"getSunPosition\": function() { return /* reexport safe */ _suncalc__WEBPACK_IMPORTED_MODULE_0__.getSunPosition; }\n/* harmony export */ });\n/* harmony import */ var _suncalc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./suncalc */ \"./node_modules/@math.gl/sun/dist/esm/suncalc.js\");\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/sun/dist/esm/index.js?");

/***/ }),

/***/ "./node_modules/@math.gl/sun/dist/esm/suncalc.js":
/*!*******************************************************!*\
  !*** ./node_modules/@math.gl/sun/dist/esm/suncalc.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getSunDirection\": function() { return /* binding */ getSunDirection; },\n/* harmony export */   \"getSunPosition\": function() { return /* binding */ getSunPosition; }\n/* harmony export */ });\nconst DEGREES_TO_RADIANS = Math.PI / 180;\nconst DAY_IN_MS = 1000 * 60 * 60 * 24;\nconst JD1970 = 2440588;\nconst JD2000 = 2451545;\nconst e = DEGREES_TO_RADIANS * 23.4397;\nconst M0 = 357.5291;\nconst M1 = 0.98560028;\nconst THETA0 = 280.147;\nconst THETA1 = 360.9856235;\nfunction getSunPosition(timestamp, latitude, longitude) {\n  const longitudeWestInRadians = DEGREES_TO_RADIANS * -longitude;\n  const phi = DEGREES_TO_RADIANS * latitude;\n  const d = toDays(timestamp);\n  const c = getSunCoords(d);\n  const H = getSiderealTime(d, longitudeWestInRadians) - c.rightAscension;\n  return {\n    azimuth: getAzimuth(H, phi, c.declination),\n    altitude: getAltitude(H, phi, c.declination)\n  };\n}\nfunction getSunDirection(timestamp, latitude, longitude) {\n  const {\n    azimuth,\n    altitude\n  } = getSunPosition(timestamp, latitude, longitude);\n  return [Math.sin(azimuth) * Math.cos(altitude), Math.cos(azimuth) * Math.cos(altitude), -Math.sin(altitude)];\n}\n\nfunction toJulianDay(timestamp) {\n  const ts = typeof timestamp === 'number' ? timestamp : timestamp.getTime();\n  return ts / DAY_IN_MS - 0.5 + JD1970;\n}\n\nfunction toDays(timestamp) {\n  return toJulianDay(timestamp) - JD2000;\n}\n\nfunction getRightAscension(eclipticLongitude, b) {\n  const lambda = eclipticLongitude;\n  return Math.atan2(Math.sin(lambda) * Math.cos(e) - Math.tan(b) * Math.sin(e), Math.cos(lambda));\n}\n\nfunction getDeclination(eclipticLongitude, b) {\n  const lambda = eclipticLongitude;\n  return Math.asin(Math.sin(b) * Math.cos(e) + Math.cos(b) * Math.sin(e) * Math.sin(lambda));\n}\n\nfunction getAzimuth(hourAngle, latitudeInRadians, declination) {\n  const H = hourAngle;\n  const phi = latitudeInRadians;\n  const delta = declination;\n  return Math.atan2(Math.sin(H), Math.cos(H) * Math.sin(phi) - Math.tan(delta) * Math.cos(phi));\n}\n\nfunction getAltitude(hourAngle, latitudeInRadians, declination) {\n  const H = hourAngle;\n  const phi = latitudeInRadians;\n  const delta = declination;\n  return Math.asin(Math.sin(phi) * Math.sin(delta) + Math.cos(phi) * Math.cos(delta) * Math.cos(H));\n}\n\nfunction getSiderealTime(dates, longitudeWestInRadians) {\n  return DEGREES_TO_RADIANS * (THETA0 + THETA1 * dates) - longitudeWestInRadians;\n}\n\nfunction getSolarMeanAnomaly(days) {\n  return DEGREES_TO_RADIANS * (M0 + M1 * days);\n}\n\nfunction getEclipticLongitude(meanAnomaly) {\n  const M = meanAnomaly;\n  const C = DEGREES_TO_RADIANS * (1.9148 * Math.sin(M) + 0.02 * Math.sin(2 * M) + 0.0003 * Math.sin(3 * M));\n  const P = DEGREES_TO_RADIANS * 102.9372;\n  return M + C + P + Math.PI;\n}\n\nfunction getSunCoords(dates) {\n  const M = getSolarMeanAnomaly(dates);\n  const L = getEclipticLongitude(M);\n  return {\n    declination: getDeclination(L, 0),\n    rightAscension: getRightAscension(L, 0)\n  };\n}\n//# sourceMappingURL=suncalc.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/sun/dist/esm/suncalc.js?");

/***/ }),

/***/ "./node_modules/@math.gl/web-mercator/dist/esm/assert.js":
/*!***************************************************************!*\
  !*** ./node_modules/@math.gl/web-mercator/dist/esm/assert.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ assert; }\n/* harmony export */ });\nfunction assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || '@math.gl/web-mercator: assertion failed.');\n  }\n}\n//# sourceMappingURL=assert.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/web-mercator/dist/esm/assert.js?");

/***/ }),

/***/ "./node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ fitBounds; }\n/* harmony export */ });\n/* harmony import */ var _assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./assert */ \"./node_modules/@math.gl/web-mercator/dist/esm/assert.js\");\n/* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js\");\n/* harmony import */ var _web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web-mercator-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js\");\n\n\n\nfunction fitBounds(options) {\n  const {\n    width,\n    height,\n    bounds,\n    minExtent = 0,\n    maxZoom = 24,\n    offset = [0, 0]\n  } = options;\n  const [[west, south], [east, north]] = bounds;\n  const padding = getPaddingObject(options.padding);\n  const nw = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.lngLatToWorld)([west, (0,_math_utils__WEBPACK_IMPORTED_MODULE_1__.clamp)(north, -_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.MAX_LATITUDE, _web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.MAX_LATITUDE)]);\n  const se = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.lngLatToWorld)([east, (0,_math_utils__WEBPACK_IMPORTED_MODULE_1__.clamp)(south, -_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.MAX_LATITUDE, _web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.MAX_LATITUDE)]);\n  const size = [Math.max(Math.abs(se[0] - nw[0]), minExtent), Math.max(Math.abs(se[1] - nw[1]), minExtent)];\n  const targetSize = [width - padding.left - padding.right - Math.abs(offset[0]) * 2, height - padding.top - padding.bottom - Math.abs(offset[1]) * 2];\n  (0,_assert__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(targetSize[0] > 0 && targetSize[1] > 0);\n  const scaleX = targetSize[0] / size[0];\n  const scaleY = targetSize[1] / size[1];\n  const offsetX = (padding.right - padding.left) / 2 / scaleX;\n  const offsetY = (padding.top - padding.bottom) / 2 / scaleY;\n  const center = [(se[0] + nw[0]) / 2 + offsetX, (se[1] + nw[1]) / 2 + offsetY];\n  const centerLngLat = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.worldToLngLat)(center);\n  const zoom = Math.min(maxZoom, (0,_math_utils__WEBPACK_IMPORTED_MODULE_1__.log2)(Math.abs(Math.min(scaleX, scaleY))));\n  (0,_assert__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Number.isFinite(zoom));\n  return {\n    longitude: centerLngLat[0],\n    latitude: centerLngLat[1],\n    zoom\n  };\n}\n\nfunction getPaddingObject(padding = 0) {\n  if (typeof padding === 'number') {\n    return {\n      top: padding,\n      bottom: padding,\n      left: padding,\n      right: padding\n    };\n  }\n\n  (0,_assert__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Number.isFinite(padding.top) && Number.isFinite(padding.bottom) && Number.isFinite(padding.left) && Number.isFinite(padding.right));\n  return padding;\n}\n//# sourceMappingURL=fit-bounds.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js?");

/***/ }),

/***/ "./node_modules/@math.gl/web-mercator/dist/esm/fly-to-viewport.js":
/*!************************************************************************!*\
  !*** ./node_modules/@math.gl/web-mercator/dist/esm/fly-to-viewport.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ flyToViewport; },\n/* harmony export */   \"getFlyToDuration\": function() { return /* binding */ getFlyToDuration; }\n/* harmony export */ });\n/* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js\");\n/* harmony import */ var _web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./web-mercator-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js\");\n/* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix/vec2 */ \"./node_modules/gl-matrix/esm/vec2.js\");\n\n\n\nconst EPSILON = 0.01;\nconst VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom'];\nconst DEFAULT_OPTS = {\n  curve: 1.414,\n  speed: 1.2\n};\nfunction flyToViewport(startProps, endProps, t, options) {\n  const {\n    startZoom,\n    startCenterXY,\n    uDelta,\n    w0,\n    u1,\n    S,\n    rho,\n    rho2,\n    r0\n  } = getFlyToTransitionParams(startProps, endProps, options);\n\n  if (u1 < EPSILON) {\n    const viewport = {};\n\n    for (const key of VIEWPORT_TRANSITION_PROPS) {\n      const startValue = startProps[key];\n      const endValue = endProps[key];\n      viewport[key] = (0,_math_utils__WEBPACK_IMPORTED_MODULE_0__.lerp)(startValue, endValue, t);\n    }\n\n    return viewport;\n  }\n\n  const s = t * S;\n  const w = Math.cosh(r0) / Math.cosh(r0 + rho * s);\n  const u = w0 * ((Math.cosh(r0) * Math.tanh(r0 + rho * s) - Math.sinh(r0)) / rho2) / u1;\n  const scaleIncrement = 1 / w;\n  const newZoom = startZoom + (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__.scaleToZoom)(scaleIncrement);\n  const newCenterWorld = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__.scale([], uDelta, u);\n  gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__.add(newCenterWorld, newCenterWorld, startCenterXY);\n  const newCenter = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__.worldToLngLat)(newCenterWorld);\n  return {\n    longitude: newCenter[0],\n    latitude: newCenter[1],\n    zoom: newZoom\n  };\n}\nfunction getFlyToDuration(startProps, endProps, options) {\n  const opts = { ...DEFAULT_OPTS,\n    ...options\n  };\n  const {\n    screenSpeed,\n    speed,\n    maxDuration\n  } = opts;\n  const {\n    S,\n    rho\n  } = getFlyToTransitionParams(startProps, endProps, opts);\n  const length = 1000 * S;\n  let duration;\n\n  if (Number.isFinite(screenSpeed)) {\n    duration = length / (screenSpeed / rho);\n  } else {\n    duration = length / speed;\n  }\n\n  return Number.isFinite(maxDuration) && duration > maxDuration ? 0 : duration;\n}\n\nfunction getFlyToTransitionParams(startProps, endProps, opts) {\n  opts = Object.assign({}, DEFAULT_OPTS, opts);\n  const rho = opts.curve;\n  const startZoom = startProps.zoom;\n  const startCenter = [startProps.longitude, startProps.latitude];\n  const startScale = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__.zoomToScale)(startZoom);\n  const endZoom = endProps.zoom;\n  const endCenter = [endProps.longitude, endProps.latitude];\n  const scale = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__.zoomToScale)(endZoom - startZoom);\n  const startCenterXY = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__.lngLatToWorld)(startCenter);\n  const endCenterXY = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__.lngLatToWorld)(endCenter);\n  const uDelta = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__.sub([], endCenterXY, startCenterXY);\n  const w0 = Math.max(startProps.width, startProps.height);\n  const w1 = w0 / scale;\n  const u1 = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__.length(uDelta) * startScale;\n\n  const _u1 = Math.max(u1, EPSILON);\n\n  const rho2 = rho * rho;\n  const b0 = (w1 * w1 - w0 * w0 + rho2 * rho2 * _u1 * _u1) / (2 * w0 * rho2 * _u1);\n  const b1 = (w1 * w1 - w0 * w0 - rho2 * rho2 * _u1 * _u1) / (2 * w1 * rho2 * _u1);\n  const r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0);\n  const r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n  const S = (r1 - r0) / rho;\n  return {\n    startZoom,\n    startCenterXY,\n    uDelta,\n    w0,\n    u1,\n    S,\n    rho,\n    rho2,\n    r0,\n    r1\n  };\n}\n//# sourceMappingURL=fly-to-viewport.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/web-mercator/dist/esm/fly-to-viewport.js?");

/***/ }),

/***/ "./node_modules/@math.gl/web-mercator/dist/esm/get-bounds.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@math.gl/web-mercator/dist/esm/get-bounds.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getBounds; }\n/* harmony export */ });\n/* harmony import */ var _web_mercator_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./web-mercator-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js\");\n/* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix/vec2 */ \"./node_modules/gl-matrix/esm/vec2.js\");\n/* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js\");\n\n\n\nconst DEGREES_TO_RADIANS = Math.PI / 180;\nfunction getBounds(viewport, z = 0) {\n  const {\n    width,\n    height,\n    unproject\n  } = viewport;\n  const unprojectOps = {\n    targetZ: z\n  };\n  const bottomLeft = unproject([0, height], unprojectOps);\n  const bottomRight = unproject([width, height], unprojectOps);\n  let topLeft;\n  let topRight;\n  const halfFov = viewport.fovy ? 0.5 * viewport.fovy * DEGREES_TO_RADIANS : Math.atan(0.5 / viewport.altitude);\n  const angleToGround = (90 - viewport.pitch) * DEGREES_TO_RADIANS;\n\n  if (halfFov > angleToGround - 0.01) {\n    topLeft = unprojectOnFarPlane(viewport, 0, z);\n    topRight = unprojectOnFarPlane(viewport, width, z);\n  } else {\n    topLeft = unproject([0, 0], unprojectOps);\n    topRight = unproject([width, 0], unprojectOps);\n  }\n\n  return [bottomLeft, bottomRight, topRight, topLeft];\n}\n\nfunction unprojectOnFarPlane(viewport, x, targetZ) {\n  const {\n    pixelUnprojectionMatrix\n  } = viewport;\n  const coord0 = (0,_math_utils__WEBPACK_IMPORTED_MODULE_1__.transformVector)(pixelUnprojectionMatrix, [x, 0, 1, 1]);\n  const coord1 = (0,_math_utils__WEBPACK_IMPORTED_MODULE_1__.transformVector)(pixelUnprojectionMatrix, [x, viewport.height, 1, 1]);\n  const z = targetZ * viewport.distanceScales.unitsPerMeter[2];\n  const t = (z - coord0[2]) / (coord1[2] - coord0[2]);\n  const coord = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__.lerp([], coord0, coord1, t);\n  const result = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_0__.worldToLngLat)(coord);\n  result.push(targetZ);\n  return result;\n}\n//# sourceMappingURL=get-bounds.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/web-mercator/dist/esm/get-bounds.js?");

/***/ }),

/***/ "./node_modules/@math.gl/web-mercator/dist/esm/index.js":
/*!**************************************************************!*\
  !*** ./node_modules/@math.gl/web-mercator/dist/esm/index.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"MAX_LATITUDE\": function() { return /* reexport safe */ _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__.MAX_LATITUDE; },\n/* harmony export */   \"WebMercatorViewport\": function() { return /* reexport safe */ _web_mercator_viewport__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"addMetersToLngLat\": function() { return /* reexport safe */ _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__.addMetersToLngLat; },\n/* harmony export */   \"altitudeToFovy\": function() { return /* reexport safe */ _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__.altitudeToFovy; },\n/* harmony export */   \"default\": function() { return /* reexport safe */ _web_mercator_viewport__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"fitBounds\": function() { return /* reexport safe */ _fit_bounds__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; },\n/* harmony export */   \"flyToViewport\": function() { return /* reexport safe */ _fly_to_viewport__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; },\n/* harmony export */   \"fovyToAltitude\": function() { return /* reexport safe */ _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__.fovyToAltitude; },\n/* harmony export */   \"getBounds\": function() { return /* reexport safe */ _get_bounds__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; },\n/* harmony export */   \"getDistanceScales\": function() { return /* reexport safe */ _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__.getDistanceScales; },\n/* harmony export */   \"getFlyToDuration\": function() { return /* reexport safe */ _fly_to_viewport__WEBPACK_IMPORTED_MODULE_4__.getFlyToDuration; },\n/* harmony export */   \"getMeterZoom\": function() { return /* reexport safe */ _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__.getMeterZoom; },\n/* harmony export */   \"getProjectionMatrix\": function() { return /* reexport safe */ _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__.getProjectionMatrix; },\n/* harmony export */   \"getProjectionParameters\": function() { return /* reexport safe */ _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__.getProjectionParameters; },\n/* harmony export */   \"getViewMatrix\": function() { return /* reexport safe */ _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__.getViewMatrix; },\n/* harmony export */   \"lngLatToWorld\": function() { return /* reexport safe */ _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__.lngLatToWorld; },\n/* harmony export */   \"normalizeViewportProps\": function() { return /* reexport safe */ _normalize_viewport_props__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; },\n/* harmony export */   \"pixelsToWorld\": function() { return /* reexport safe */ _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__.pixelsToWorld; },\n/* harmony export */   \"scaleToZoom\": function() { return /* reexport safe */ _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__.scaleToZoom; },\n/* harmony export */   \"unitsPerMeter\": function() { return /* reexport safe */ _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__.unitsPerMeter; },\n/* harmony export */   \"worldToLngLat\": function() { return /* reexport safe */ _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__.worldToLngLat; },\n/* harmony export */   \"worldToPixels\": function() { return /* reexport safe */ _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__.worldToPixels; },\n/* harmony export */   \"zoomToScale\": function() { return /* reexport safe */ _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__.zoomToScale; }\n/* harmony export */ });\n/* harmony import */ var _web_mercator_viewport__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./web-mercator-viewport */ \"./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-viewport.js\");\n/* harmony import */ var _get_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-bounds */ \"./node_modules/@math.gl/web-mercator/dist/esm/get-bounds.js\");\n/* harmony import */ var _fit_bounds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fit-bounds */ \"./node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js\");\n/* harmony import */ var _normalize_viewport_props__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./normalize-viewport-props */ \"./node_modules/@math.gl/web-mercator/dist/esm/normalize-viewport-props.js\");\n/* harmony import */ var _fly_to_viewport__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./fly-to-viewport */ \"./node_modules/@math.gl/web-mercator/dist/esm/fly-to-viewport.js\");\n/* harmony import */ var _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./web-mercator-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js\");\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/web-mercator/dist/esm/index.js?");

/***/ }),

/***/ "./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"clamp\": function() { return /* binding */ clamp; },\n/* harmony export */   \"createMat4\": function() { return /* binding */ createMat4; },\n/* harmony export */   \"lerp\": function() { return /* binding */ lerp; },\n/* harmony export */   \"log2\": function() { return /* binding */ log2; },\n/* harmony export */   \"mod\": function() { return /* binding */ mod; },\n/* harmony export */   \"transformVector\": function() { return /* binding */ transformVector; }\n/* harmony export */ });\n/* harmony import */ var gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix/vec4 */ \"./node_modules/gl-matrix/esm/vec4.js\");\n\nfunction createMat4() {\n  return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\nfunction transformVector(matrix, vector) {\n  const result = (0,gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_0__.transformMat4)([], vector, matrix);\n  (0,gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_0__.scale)(result, result, 1 / result[3]);\n  return result;\n}\nfunction mod(value, divisor) {\n  const modulus = value % divisor;\n  return modulus < 0 ? divisor + modulus : modulus;\n}\nfunction lerp(start, end, step) {\n  return step * end + (1 - step) * start;\n}\nfunction clamp(x, min, max) {\n  return x < min ? min : x > max ? max : x;\n}\n\nfunction ieLog2(x) {\n  return Math.log(x) * Math.LOG2E;\n}\n\nconst log2 = Math.log2 || ieLog2;\n//# sourceMappingURL=math-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js?");

/***/ }),

/***/ "./node_modules/@math.gl/web-mercator/dist/esm/normalize-viewport-props.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@math.gl/web-mercator/dist/esm/normalize-viewport-props.js ***!
  \*********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ normalizeViewportProps; }\n/* harmony export */ });\n/* harmony import */ var _web_mercator_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./web-mercator-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js\");\n/* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js\");\n\n\nconst TILE_SIZE = 512;\nfunction normalizeViewportProps(props) {\n  const {\n    width,\n    height,\n    pitch = 0\n  } = props;\n  let {\n    longitude,\n    latitude,\n    zoom,\n    bearing = 0\n  } = props;\n\n  if (longitude < -180 || longitude > 180) {\n    longitude = (0,_math_utils__WEBPACK_IMPORTED_MODULE_1__.mod)(longitude + 180, 360) - 180;\n  }\n\n  if (bearing < -180 || bearing > 180) {\n    bearing = (0,_math_utils__WEBPACK_IMPORTED_MODULE_1__.mod)(bearing + 180, 360) - 180;\n  }\n\n  const minZoom = (0,_math_utils__WEBPACK_IMPORTED_MODULE_1__.log2)(height / TILE_SIZE);\n\n  if (zoom <= minZoom) {\n    zoom = minZoom;\n    latitude = 0;\n  } else {\n    const halfHeightPixels = height / 2 / Math.pow(2, zoom);\n    const minLatitude = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_0__.worldToLngLat)([0, halfHeightPixels])[1];\n\n    if (latitude < minLatitude) {\n      latitude = minLatitude;\n    } else {\n      const maxLatitude = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_0__.worldToLngLat)([0, TILE_SIZE - halfHeightPixels])[1];\n\n      if (latitude > maxLatitude) {\n        latitude = maxLatitude;\n      }\n    }\n  }\n\n  return {\n    width,\n    height,\n    longitude,\n    latitude,\n    zoom,\n    pitch,\n    bearing\n  };\n}\n//# sourceMappingURL=normalize-viewport-props.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/web-mercator/dist/esm/normalize-viewport-props.js?");

/***/ }),

/***/ "./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DEFAULT_ALTITUDE\": function() { return /* binding */ DEFAULT_ALTITUDE; },\n/* harmony export */   \"MAX_LATITUDE\": function() { return /* binding */ MAX_LATITUDE; },\n/* harmony export */   \"addMetersToLngLat\": function() { return /* binding */ addMetersToLngLat; },\n/* harmony export */   \"altitudeToFovy\": function() { return /* binding */ altitudeToFovy; },\n/* harmony export */   \"fovyToAltitude\": function() { return /* binding */ fovyToAltitude; },\n/* harmony export */   \"getDistanceScales\": function() { return /* binding */ getDistanceScales; },\n/* harmony export */   \"getMeterZoom\": function() { return /* binding */ getMeterZoom; },\n/* harmony export */   \"getProjectionMatrix\": function() { return /* binding */ getProjectionMatrix; },\n/* harmony export */   \"getProjectionParameters\": function() { return /* binding */ getProjectionParameters; },\n/* harmony export */   \"getViewMatrix\": function() { return /* binding */ getViewMatrix; },\n/* harmony export */   \"lngLatToWorld\": function() { return /* binding */ lngLatToWorld; },\n/* harmony export */   \"pixelsToWorld\": function() { return /* binding */ pixelsToWorld; },\n/* harmony export */   \"scaleToZoom\": function() { return /* binding */ scaleToZoom; },\n/* harmony export */   \"unitsPerMeter\": function() { return /* binding */ unitsPerMeter; },\n/* harmony export */   \"worldToLngLat\": function() { return /* binding */ worldToLngLat; },\n/* harmony export */   \"worldToPixels\": function() { return /* binding */ worldToPixels; },\n/* harmony export */   \"zoomToScale\": function() { return /* binding */ zoomToScale; }\n/* harmony export */ });\n/* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js\");\n/* harmony import */ var gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix/mat4 */ \"./node_modules/gl-matrix/esm/mat4.js\");\n/* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! gl-matrix/vec2 */ \"./node_modules/gl-matrix/esm/vec2.js\");\n/* harmony import */ var gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! gl-matrix/vec3 */ \"./node_modules/gl-matrix/esm/vec3.js\");\n/* harmony import */ var _assert__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./assert */ \"./node_modules/@math.gl/web-mercator/dist/esm/assert.js\");\n\n\n\n\n\nconst PI = Math.PI;\nconst PI_4 = PI / 4;\nconst DEGREES_TO_RADIANS = PI / 180;\nconst RADIANS_TO_DEGREES = 180 / PI;\nconst TILE_SIZE = 512;\nconst EARTH_CIRCUMFERENCE = 40.03e6;\nconst MAX_LATITUDE = 85.051129;\nconst DEFAULT_ALTITUDE = 1.5;\nfunction zoomToScale(zoom) {\n  return Math.pow(2, zoom);\n}\nfunction scaleToZoom(scale) {\n  return (0,_math_utils__WEBPACK_IMPORTED_MODULE_0__.log2)(scale);\n}\nfunction lngLatToWorld(lngLat) {\n  const [lng, lat] = lngLat;\n  (0,_assert__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Number.isFinite(lng));\n  (0,_assert__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Number.isFinite(lat) && lat >= -90 && lat <= 90, 'invalid latitude');\n  const lambda2 = lng * DEGREES_TO_RADIANS;\n  const phi2 = lat * DEGREES_TO_RADIANS;\n  const x = TILE_SIZE * (lambda2 + PI) / (2 * PI);\n  const y = TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5))) / (2 * PI);\n  return [x, y];\n}\nfunction worldToLngLat(xy) {\n  const [x, y] = xy;\n  const lambda2 = x / TILE_SIZE * (2 * PI) - PI;\n  const phi2 = 2 * (Math.atan(Math.exp(y / TILE_SIZE * (2 * PI) - PI)) - PI_4);\n  return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];\n}\nfunction getMeterZoom(options) {\n  const {\n    latitude\n  } = options;\n  (0,_assert__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Number.isFinite(latitude));\n  const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n  return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\nfunction unitsPerMeter(latitude) {\n  const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n  return TILE_SIZE / EARTH_CIRCUMFERENCE / latCosine;\n}\nfunction getDistanceScales(options) {\n  const {\n    latitude,\n    longitude,\n    highPrecision = false\n  } = options;\n  (0,_assert__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Number.isFinite(latitude) && Number.isFinite(longitude));\n  const worldSize = TILE_SIZE;\n  const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n  const unitsPerDegreeX = worldSize / 360;\n  const unitsPerDegreeY = unitsPerDegreeX / latCosine;\n  const altUnitsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;\n  const result = {\n    unitsPerMeter: [altUnitsPerMeter, altUnitsPerMeter, altUnitsPerMeter],\n    metersPerUnit: [1 / altUnitsPerMeter, 1 / altUnitsPerMeter, 1 / altUnitsPerMeter],\n    unitsPerDegree: [unitsPerDegreeX, unitsPerDegreeY, altUnitsPerMeter],\n    degreesPerUnit: [1 / unitsPerDegreeX, 1 / unitsPerDegreeY, 1 / altUnitsPerMeter]\n  };\n\n  if (highPrecision) {\n    const latCosine2 = DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS) / latCosine;\n    const unitsPerDegreeY2 = unitsPerDegreeX * latCosine2 / 2;\n    const altUnitsPerDegree2 = worldSize / EARTH_CIRCUMFERENCE * latCosine2;\n    const altUnitsPerMeter2 = altUnitsPerDegree2 / unitsPerDegreeY * altUnitsPerMeter;\n    result.unitsPerDegree2 = [0, unitsPerDegreeY2, altUnitsPerDegree2];\n    result.unitsPerMeter2 = [altUnitsPerMeter2, 0, altUnitsPerMeter2];\n  }\n\n  return result;\n}\nfunction addMetersToLngLat(lngLatZ, xyz) {\n  const [longitude, latitude, z0] = lngLatZ;\n  const [x, y, z] = xyz;\n  const {\n    unitsPerMeter,\n    unitsPerMeter2\n  } = getDistanceScales({\n    longitude,\n    latitude,\n    highPrecision: true\n  });\n  const worldspace = lngLatToWorld(lngLatZ);\n  worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n  worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n  const newLngLat = worldToLngLat(worldspace);\n  const newZ = (z0 || 0) + (z || 0);\n  return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;\n}\nfunction getViewMatrix(options) {\n  const {\n    height,\n    pitch,\n    bearing,\n    altitude,\n    scale,\n    center\n  } = options;\n  const vm = (0,_math_utils__WEBPACK_IMPORTED_MODULE_0__.createMat4)();\n  gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_2__.translate(vm, vm, [0, 0, -altitude]);\n  gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_2__.rotateX(vm, vm, -pitch * DEGREES_TO_RADIANS);\n  gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_2__.rotateZ(vm, vm, bearing * DEGREES_TO_RADIANS);\n  const relativeScale = scale / height;\n  gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_2__.scale(vm, vm, [relativeScale, relativeScale, relativeScale]);\n\n  if (center) {\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_2__.translate(vm, vm, gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_3__.negate([], center));\n  }\n\n  return vm;\n}\nfunction getProjectionParameters(options) {\n  const {\n    width,\n    height,\n    altitude,\n    pitch = 0,\n    offset,\n    center,\n    scale,\n    nearZMultiplier = 1,\n    farZMultiplier = 1\n  } = options;\n  let {\n    fovy = altitudeToFovy(DEFAULT_ALTITUDE)\n  } = options;\n\n  if (altitude !== undefined) {\n    fovy = altitudeToFovy(altitude);\n  }\n\n  const fovRadians = fovy * DEGREES_TO_RADIANS;\n  const pitchRadians = pitch * DEGREES_TO_RADIANS;\n  const focalDistance = fovyToAltitude(fovy);\n  let cameraToSeaLevelDistance = focalDistance;\n\n  if (center) {\n    cameraToSeaLevelDistance += center[2] * scale / Math.cos(pitchRadians) / height;\n  }\n\n  const fovAboveCenter = fovRadians * (0.5 + (offset ? offset[1] : 0) / height);\n  const topHalfSurfaceDistance = Math.sin(fovAboveCenter) * cameraToSeaLevelDistance / Math.sin((0,_math_utils__WEBPACK_IMPORTED_MODULE_0__.clamp)(Math.PI / 2 - pitchRadians - fovAboveCenter, 0.01, Math.PI - 0.01));\n  const furthestDistance = Math.sin(pitchRadians) * topHalfSurfaceDistance + cameraToSeaLevelDistance;\n  const horizonDistance = cameraToSeaLevelDistance * 10;\n  const farZ = Math.min(furthestDistance * farZMultiplier, horizonDistance);\n  return {\n    fov: fovRadians,\n    aspect: width / height,\n    focalDistance,\n    near: nearZMultiplier,\n    far: farZ\n  };\n}\nfunction getProjectionMatrix(options) {\n  const {\n    fov,\n    aspect,\n    near,\n    far\n  } = getProjectionParameters(options);\n  const projectionMatrix = gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_2__.perspective([], fov, aspect, near, far);\n  return projectionMatrix;\n}\nfunction altitudeToFovy(altitude) {\n  return 2 * Math.atan(0.5 / altitude) * RADIANS_TO_DEGREES;\n}\nfunction fovyToAltitude(fovy) {\n  return 0.5 / Math.tan(0.5 * fovy * DEGREES_TO_RADIANS);\n}\nfunction worldToPixels(xyz, pixelProjectionMatrix) {\n  const [x, y, z = 0] = xyz;\n  (0,_assert__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n  return (0,_math_utils__WEBPACK_IMPORTED_MODULE_0__.transformVector)(pixelProjectionMatrix, [x, y, z, 1]);\n}\nfunction pixelsToWorld(xyz, pixelUnprojectionMatrix, targetZ = 0) {\n  const [x, y, z] = xyz;\n  (0,_assert__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Number.isFinite(x) && Number.isFinite(y), 'invalid pixel coordinate');\n\n  if (Number.isFinite(z)) {\n    const coord = (0,_math_utils__WEBPACK_IMPORTED_MODULE_0__.transformVector)(pixelUnprojectionMatrix, [x, y, z, 1]);\n    return coord;\n  }\n\n  const coord0 = (0,_math_utils__WEBPACK_IMPORTED_MODULE_0__.transformVector)(pixelUnprojectionMatrix, [x, y, 0, 1]);\n  const coord1 = (0,_math_utils__WEBPACK_IMPORTED_MODULE_0__.transformVector)(pixelUnprojectionMatrix, [x, y, 1, 1]);\n  const z0 = coord0[2];\n  const z1 = coord1[2];\n  const t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n  return gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_4__.lerp([], coord0, coord1, t);\n}\n//# sourceMappingURL=web-mercator-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js?");

/***/ }),

/***/ "./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-viewport.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-viewport.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ WebMercatorViewport; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js\");\n/* harmony import */ var _web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web-mercator-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js\");\n/* harmony import */ var _fit_bounds__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fit-bounds */ \"./node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js\");\n/* harmony import */ var _get_bounds__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./get-bounds */ \"./node_modules/@math.gl/web-mercator/dist/esm/get-bounds.js\");\n/* harmony import */ var gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! gl-matrix/mat4 */ \"./node_modules/gl-matrix/esm/mat4.js\");\n/* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix/vec2 */ \"./node_modules/gl-matrix/esm/vec2.js\");\n/* harmony import */ var gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! gl-matrix/vec3 */ \"./node_modules/gl-matrix/esm/vec3.js\");\n\n\n\n\n\n\n\n\nclass WebMercatorViewport {\n  constructor(props = {\n    width: 1,\n    height: 1\n  }) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"latitude\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"longitude\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"zoom\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"pitch\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"bearing\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"altitude\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"fovy\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"meterOffset\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"center\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"width\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"height\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"scale\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"distanceScales\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"viewMatrix\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"projectionMatrix\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"viewProjectionMatrix\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"pixelProjectionMatrix\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"pixelUnprojectionMatrix\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"equals\", viewport => {\n      if (!(viewport instanceof WebMercatorViewport)) {\n        return false;\n      }\n\n      return viewport.width === this.width && viewport.height === this.height && gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__.equals(viewport.projectionMatrix, this.projectionMatrix) && gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__.equals(viewport.viewMatrix, this.viewMatrix);\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"project\", (lngLatZ, options = {}) => {\n      const {\n        topLeft = true\n      } = options;\n      const worldPosition = this.projectPosition(lngLatZ);\n      const coord = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.worldToPixels)(worldPosition, this.pixelProjectionMatrix);\n      const [x, y] = coord;\n      const y2 = topLeft ? y : this.height - y;\n      return lngLatZ.length === 2 ? [x, y2] : [x, y2, coord[2]];\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"unproject\", (xyz, options = {}) => {\n      const {\n        topLeft = true,\n        targetZ = undefined\n      } = options;\n      const [x, y, z] = xyz;\n      const y2 = topLeft ? y : this.height - y;\n      const targetZWorld = targetZ && targetZ * this.distanceScales.unitsPerMeter[2];\n      const coord = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.pixelsToWorld)([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n      const [X, Y, Z] = this.unprojectPosition(coord);\n\n      if (Number.isFinite(z)) {\n        return [X, Y, Z];\n      }\n\n      return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"projectPosition\", xyz => {\n      const [X, Y] = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.lngLatToWorld)(xyz);\n      const Z = (xyz[2] || 0) * this.distanceScales.unitsPerMeter[2];\n      return [X, Y, Z];\n    });\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"unprojectPosition\", xyz => {\n      const [X, Y] = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.worldToLngLat)(xyz);\n      const Z = (xyz[2] || 0) * this.distanceScales.metersPerUnit[2];\n      return [X, Y, Z];\n    });\n\n    let {\n      width,\n      height,\n      altitude = null,\n      fovy = null\n    } = props;\n    const {\n      latitude = 0,\n      longitude = 0,\n      zoom = 0,\n      pitch = 0,\n      bearing = 0,\n      position = null,\n      nearZMultiplier = 0.02,\n      farZMultiplier = 1.01\n    } = props;\n    width = width || 1;\n    height = height || 1;\n\n    if (fovy === null && altitude === null) {\n      altitude = _web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_ALTITUDE;\n      fovy = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.altitudeToFovy)(altitude);\n    } else if (fovy === null) {\n      fovy = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.altitudeToFovy)(altitude);\n    } else if (altitude === null) {\n      altitude = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.fovyToAltitude)(fovy);\n    }\n\n    const scale = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.zoomToScale)(zoom);\n    altitude = Math.max(0.75, altitude);\n    const distanceScales = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.getDistanceScales)({\n      longitude,\n      latitude\n    });\n    const center = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.lngLatToWorld)([longitude, latitude]);\n    center.push(0);\n\n    if (position) {\n      gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_6__.add(center, center, gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_6__.mul([], position, distanceScales.unitsPerMeter));\n    }\n\n    this.projectionMatrix = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.getProjectionMatrix)({\n      width,\n      height,\n      scale,\n      center,\n      pitch,\n      fovy,\n      nearZMultiplier,\n      farZMultiplier\n    });\n    this.viewMatrix = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.getViewMatrix)({\n      height,\n      scale,\n      center,\n      pitch,\n      bearing,\n      altitude\n    });\n    this.width = width;\n    this.height = height;\n    this.scale = scale;\n    this.latitude = latitude;\n    this.longitude = longitude;\n    this.zoom = zoom;\n    this.pitch = pitch;\n    this.bearing = bearing;\n    this.altitude = altitude;\n    this.fovy = fovy;\n    this.center = center;\n    this.meterOffset = position || [0, 0, 0];\n    this.distanceScales = distanceScales;\n\n    this._initMatrices();\n\n    Object.freeze(this);\n  }\n\n  _initMatrices() {\n    const {\n      width,\n      height,\n      projectionMatrix,\n      viewMatrix\n    } = this;\n    const vpm = (0,_math_utils__WEBPACK_IMPORTED_MODULE_1__.createMat4)();\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__.multiply(vpm, vpm, projectionMatrix);\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__.multiply(vpm, vpm, viewMatrix);\n    this.viewProjectionMatrix = vpm;\n    const m = (0,_math_utils__WEBPACK_IMPORTED_MODULE_1__.createMat4)();\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__.scale(m, m, [width / 2, -height / 2, 1]);\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__.translate(m, m, [1, -1, 0]);\n    gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__.multiply(m, m, vpm);\n    const mInverse = gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__.invert((0,_math_utils__WEBPACK_IMPORTED_MODULE_1__.createMat4)(), m);\n\n    if (!mInverse) {\n      throw new Error('Pixel project matrix not invertible');\n    }\n\n    this.pixelProjectionMatrix = m;\n    this.pixelUnprojectionMatrix = mInverse;\n  }\n\n  projectFlat(lngLat) {\n    return (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.lngLatToWorld)(lngLat);\n  }\n\n  unprojectFlat(xy) {\n    return (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.worldToLngLat)(xy);\n  }\n\n  getMapCenterByLngLatPosition({\n    lngLat,\n    pos\n  }) {\n    const fromLocation = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.pixelsToWorld)(pos, this.pixelUnprojectionMatrix);\n    const toLocation = (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.lngLatToWorld)(lngLat);\n    const translate = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_7__.add([], toLocation, gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_7__.negate([], fromLocation));\n    const newCenter = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_7__.add([], this.center, translate);\n    return (0,_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__.worldToLngLat)(newCenter);\n  }\n\n  fitBounds(bounds, options = {}) {\n    const {\n      width,\n      height\n    } = this;\n    const {\n      longitude,\n      latitude,\n      zoom\n    } = (0,_fit_bounds__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Object.assign({\n      width,\n      height,\n      bounds\n    }, options));\n    return new WebMercatorViewport({\n      width,\n      height,\n      longitude,\n      latitude,\n      zoom\n    });\n  }\n\n  getBounds(options) {\n    const corners = this.getBoundingRegion(options);\n    const west = Math.min(...corners.map(p => p[0]));\n    const east = Math.max(...corners.map(p => p[0]));\n    const south = Math.min(...corners.map(p => p[1]));\n    const north = Math.max(...corners.map(p => p[1]));\n    return [[west, south], [east, north]];\n  }\n\n  getBoundingRegion(options = {}) {\n    return (0,_get_bounds__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this, options.z || 0);\n  }\n\n  getLocationAtPoint({\n    lngLat,\n    pos\n  }) {\n    return this.getMapCenterByLngLatPosition({\n      lngLat,\n      pos\n    });\n  }\n\n}\n//# sourceMappingURL=web-mercator-viewport.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-viewport.js?");

/***/ }),

/***/ "./node_modules/@mui/base/AutocompleteUnstyled/useAutocomplete.js":
/*!************************************************************************!*\
  !*** ./node_modules/@mui/base/AutocompleteUnstyled/useAutocomplete.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createFilterOptions\": function() { return /* binding */ createFilterOptions; },\n/* harmony export */   \"default\": function() { return /* binding */ useAutocomplete; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useId.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useControlled.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/usePreviousProps.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useEventCallback.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/setRef.js\");\n\n/* eslint-disable no-constant-condition */\n\n\n\n// https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript\n// Give up on IE11 support for this feature\nfunction stripDiacritics(string) {\n  return typeof string.normalize !== 'undefined' ? string.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : string;\n}\nfunction createFilterOptions(config = {}) {\n  const {\n    ignoreAccents = true,\n    ignoreCase = true,\n    limit,\n    matchFrom = 'any',\n    stringify,\n    trim = false\n  } = config;\n  return (options, {\n    inputValue,\n    getOptionLabel\n  }) => {\n    let input = trim ? inputValue.trim() : inputValue;\n    if (ignoreCase) {\n      input = input.toLowerCase();\n    }\n    if (ignoreAccents) {\n      input = stripDiacritics(input);\n    }\n    const filteredOptions = !input ? options : options.filter(option => {\n      let candidate = (stringify || getOptionLabel)(option);\n      if (ignoreCase) {\n        candidate = candidate.toLowerCase();\n      }\n      if (ignoreAccents) {\n        candidate = stripDiacritics(candidate);\n      }\n      return matchFrom === 'start' ? candidate.indexOf(input) === 0 : candidate.indexOf(input) > -1;\n    });\n    return typeof limit === 'number' ? filteredOptions.slice(0, limit) : filteredOptions;\n  };\n}\n\n// To replace with .findIndex() once we stop IE11 support.\nfunction findIndex(array, comp) {\n  for (let i = 0; i < array.length; i += 1) {\n    if (comp(array[i])) {\n      return i;\n    }\n  }\n  return -1;\n}\nconst defaultFilterOptions = createFilterOptions();\n\n// Number of options to jump in list box when `Page Up` and `Page Down` keys are used.\nconst pageSize = 5;\nconst defaultIsActiveElementInListbox = listboxRef => {\n  var _listboxRef$current$p;\n  return listboxRef.current !== null && ((_listboxRef$current$p = listboxRef.current.parentElement) == null ? void 0 : _listboxRef$current$p.contains(document.activeElement));\n};\nfunction useAutocomplete(props) {\n  const {\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    unstable_isActiveElementInListbox = defaultIsActiveElementInListbox,\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    unstable_classNamePrefix = 'Mui',\n    autoComplete = false,\n    autoHighlight = false,\n    autoSelect = false,\n    blurOnSelect = false,\n    clearOnBlur = !props.freeSolo,\n    clearOnEscape = false,\n    componentName = 'useAutocomplete',\n    defaultValue = props.multiple ? [] : null,\n    disableClearable = false,\n    disableCloseOnSelect = false,\n    disabled: disabledProp,\n    disabledItemsFocusable = false,\n    disableListWrap = false,\n    filterOptions = defaultFilterOptions,\n    filterSelectedOptions = false,\n    freeSolo = false,\n    getOptionDisabled,\n    getOptionLabel: getOptionLabelProp = option => {\n      var _option$label;\n      return (_option$label = option.label) != null ? _option$label : option;\n    },\n    groupBy,\n    handleHomeEndKeys = !props.freeSolo,\n    id: idProp,\n    includeInputInList = false,\n    inputValue: inputValueProp,\n    isOptionEqualToValue = (option, value) => option === value,\n    multiple = false,\n    onChange,\n    onClose,\n    onHighlightChange,\n    onInputChange,\n    onOpen,\n    open: openProp,\n    openOnFocus = false,\n    options,\n    readOnly = false,\n    selectOnFocus = !props.freeSolo,\n    value: valueProp\n  } = props;\n  const id = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(idProp);\n  let getOptionLabel = getOptionLabelProp;\n  getOptionLabel = option => {\n    const optionLabel = getOptionLabelProp(option);\n    if (typeof optionLabel !== 'string') {\n      if (true) {\n        const erroneousReturn = optionLabel === undefined ? 'undefined' : `${typeof optionLabel} (${optionLabel})`;\n        console.error(`MUI: The \\`getOptionLabel\\` method of ${componentName} returned ${erroneousReturn} instead of a string for ${JSON.stringify(option)}.`);\n      }\n      return String(optionLabel);\n    }\n    return optionLabel;\n  };\n  const ignoreFocus = react__WEBPACK_IMPORTED_MODULE_1__.useRef(false);\n  const firstFocus = react__WEBPACK_IMPORTED_MODULE_1__.useRef(true);\n  const inputRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(null);\n  const listboxRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(null);\n  const [anchorEl, setAnchorEl] = react__WEBPACK_IMPORTED_MODULE_1__.useState(null);\n  const [focusedTag, setFocusedTag] = react__WEBPACK_IMPORTED_MODULE_1__.useState(-1);\n  const defaultHighlighted = autoHighlight ? 0 : -1;\n  const highlightedIndexRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(defaultHighlighted);\n  const [value, setValueState] = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n    controlled: valueProp,\n    default: defaultValue,\n    name: componentName\n  });\n  const [inputValue, setInputValueState] = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n    controlled: inputValueProp,\n    default: '',\n    name: componentName,\n    state: 'inputValue'\n  });\n  const [focused, setFocused] = react__WEBPACK_IMPORTED_MODULE_1__.useState(false);\n  const resetInputValue = react__WEBPACK_IMPORTED_MODULE_1__.useCallback((event, newValue) => {\n    // retain current `inputValue` if new option isn't selected and `clearOnBlur` is false\n    // When `multiple` is enabled, `newValue` is an array of all selected items including the newly selected item\n    const isOptionSelected = multiple ? value.length < newValue.length : newValue !== null;\n    if (!isOptionSelected && !clearOnBlur) {\n      return;\n    }\n    let newInputValue;\n    if (multiple) {\n      newInputValue = '';\n    } else if (newValue == null) {\n      newInputValue = '';\n    } else {\n      const optionLabel = getOptionLabel(newValue);\n      newInputValue = typeof optionLabel === 'string' ? optionLabel : '';\n    }\n    if (inputValue === newInputValue) {\n      return;\n    }\n    setInputValueState(newInputValue);\n    if (onInputChange) {\n      onInputChange(event, newInputValue, 'reset');\n    }\n  }, [getOptionLabel, inputValue, multiple, onInputChange, setInputValueState, clearOnBlur, value]);\n  const [open, setOpenState] = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n    controlled: openProp,\n    default: false,\n    name: componentName,\n    state: 'open'\n  });\n  const [inputPristine, setInputPristine] = react__WEBPACK_IMPORTED_MODULE_1__.useState(true);\n  const inputValueIsSelectedValue = !multiple && value != null && inputValue === getOptionLabel(value);\n  const popupOpen = open && !readOnly;\n  const filteredOptions = popupOpen ? filterOptions(options.filter(option => {\n    if (filterSelectedOptions && (multiple ? value : [value]).some(value2 => value2 !== null && isOptionEqualToValue(option, value2))) {\n      return false;\n    }\n    return true;\n  }),\n  // we use the empty string to manipulate `filterOptions` to not filter any options\n  // i.e. the filter predicate always returns true\n  {\n    inputValue: inputValueIsSelectedValue && inputPristine ? '' : inputValue,\n    getOptionLabel\n  }) : [];\n  const previousProps = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n    filteredOptions,\n    value\n  });\n  react__WEBPACK_IMPORTED_MODULE_1__.useEffect(() => {\n    const valueChange = value !== previousProps.value;\n    if (focused && !valueChange) {\n      return;\n    }\n\n    // Only reset the input's value when freeSolo if the component's value changes.\n    if (freeSolo && !valueChange) {\n      return;\n    }\n    resetInputValue(null, value);\n  }, [value, resetInputValue, focused, previousProps.value, freeSolo]);\n  const listboxAvailable = open && filteredOptions.length > 0 && !readOnly;\n  if (true) {\n    if (value !== null && !freeSolo && options.length > 0) {\n      const missingValue = (multiple ? value : [value]).filter(value2 => !options.some(option => isOptionEqualToValue(option, value2)));\n      if (missingValue.length > 0) {\n        console.warn([`MUI: The value provided to ${componentName} is invalid.`, `None of the options match with \\`${missingValue.length > 1 ? JSON.stringify(missingValue) : JSON.stringify(missingValue[0])}\\`.`, 'You can use the `isOptionEqualToValue` prop to customize the equality test.'].join('\\n'));\n      }\n    }\n  }\n  const focusTag = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(tagToFocus => {\n    if (tagToFocus === -1) {\n      inputRef.current.focus();\n    } else {\n      anchorEl.querySelector(`[data-tag-index=\"${tagToFocus}\"]`).focus();\n    }\n  });\n\n  // Ensure the focusedTag is never inconsistent\n  react__WEBPACK_IMPORTED_MODULE_1__.useEffect(() => {\n    if (multiple && focusedTag > value.length - 1) {\n      setFocusedTag(-1);\n      focusTag(-1);\n    }\n  }, [value, multiple, focusedTag, focusTag]);\n  function validOptionIndex(index, direction) {\n    if (!listboxRef.current || index === -1) {\n      return -1;\n    }\n    let nextFocus = index;\n    while (true) {\n      // Out of range\n      if (direction === 'next' && nextFocus === filteredOptions.length || direction === 'previous' && nextFocus === -1) {\n        return -1;\n      }\n      const option = listboxRef.current.querySelector(`[data-option-index=\"${nextFocus}\"]`);\n\n      // Same logic as MenuList.js\n      const nextFocusDisabled = disabledItemsFocusable ? false : !option || option.disabled || option.getAttribute('aria-disabled') === 'true';\n      if (option && !option.hasAttribute('tabindex') || nextFocusDisabled) {\n        // Move to the next element.\n        nextFocus += direction === 'next' ? 1 : -1;\n      } else {\n        return nextFocus;\n      }\n    }\n  }\n  const setHighlightedIndex = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(({\n    event,\n    index,\n    reason = 'auto'\n  }) => {\n    highlightedIndexRef.current = index;\n\n    // does the index exist?\n    if (index === -1) {\n      inputRef.current.removeAttribute('aria-activedescendant');\n    } else {\n      inputRef.current.setAttribute('aria-activedescendant', `${id}-option-${index}`);\n    }\n    if (onHighlightChange) {\n      onHighlightChange(event, index === -1 ? null : filteredOptions[index], reason);\n    }\n    if (!listboxRef.current) {\n      return;\n    }\n    const prev = listboxRef.current.querySelector(`[role=\"option\"].${unstable_classNamePrefix}-focused`);\n    if (prev) {\n      prev.classList.remove(`${unstable_classNamePrefix}-focused`);\n      prev.classList.remove(`${unstable_classNamePrefix}-focusVisible`);\n    }\n    const listboxNode = listboxRef.current.parentElement.querySelector('[role=\"listbox\"]');\n\n    // \"No results\"\n    if (!listboxNode) {\n      return;\n    }\n    if (index === -1) {\n      listboxNode.scrollTop = 0;\n      return;\n    }\n    const option = listboxRef.current.querySelector(`[data-option-index=\"${index}\"]`);\n    if (!option) {\n      return;\n    }\n    option.classList.add(`${unstable_classNamePrefix}-focused`);\n    if (reason === 'keyboard') {\n      option.classList.add(`${unstable_classNamePrefix}-focusVisible`);\n    }\n\n    // Scroll active descendant into view.\n    // Logic copied from https://www.w3.org/WAI/content-assets/wai-aria-practices/patterns/combobox/examples/js/select-only.js\n    //\n    // Consider this API instead once it has a better browser support:\n    // .scrollIntoView({ scrollMode: 'if-needed', block: 'nearest' });\n    if (listboxNode.scrollHeight > listboxNode.clientHeight && reason !== 'mouse') {\n      const element = option;\n      const scrollBottom = listboxNode.clientHeight + listboxNode.scrollTop;\n      const elementBottom = element.offsetTop + element.offsetHeight;\n      if (elementBottom > scrollBottom) {\n        listboxNode.scrollTop = elementBottom - listboxNode.clientHeight;\n      } else if (element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0) < listboxNode.scrollTop) {\n        listboxNode.scrollTop = element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0);\n      }\n    }\n  });\n  const changeHighlightedIndex = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(({\n    event,\n    diff,\n    direction = 'next',\n    reason = 'auto'\n  }) => {\n    if (!popupOpen) {\n      return;\n    }\n    const getNextIndex = () => {\n      const maxIndex = filteredOptions.length - 1;\n      if (diff === 'reset') {\n        return defaultHighlighted;\n      }\n      if (diff === 'start') {\n        return 0;\n      }\n      if (diff === 'end') {\n        return maxIndex;\n      }\n      const newIndex = highlightedIndexRef.current + diff;\n      if (newIndex < 0) {\n        if (newIndex === -1 && includeInputInList) {\n          return -1;\n        }\n        if (disableListWrap && highlightedIndexRef.current !== -1 || Math.abs(diff) > 1) {\n          return 0;\n        }\n        return maxIndex;\n      }\n      if (newIndex > maxIndex) {\n        if (newIndex === maxIndex + 1 && includeInputInList) {\n          return -1;\n        }\n        if (disableListWrap || Math.abs(diff) > 1) {\n          return maxIndex;\n        }\n        return 0;\n      }\n      return newIndex;\n    };\n    const nextIndex = validOptionIndex(getNextIndex(), direction);\n    setHighlightedIndex({\n      index: nextIndex,\n      reason,\n      event\n    });\n\n    // Sync the content of the input with the highlighted option.\n    if (autoComplete && diff !== 'reset') {\n      if (nextIndex === -1) {\n        inputRef.current.value = inputValue;\n      } else {\n        const option = getOptionLabel(filteredOptions[nextIndex]);\n        inputRef.current.value = option;\n\n        // The portion of the selected suggestion that has not been typed by the user,\n        // a completion string, appears inline after the input cursor in the textbox.\n        const index = option.toLowerCase().indexOf(inputValue.toLowerCase());\n        if (index === 0 && inputValue.length > 0) {\n          inputRef.current.setSelectionRange(inputValue.length, option.length);\n        }\n      }\n    }\n  });\n  const checkHighlightedOptionExists = () => {\n    var _previousProps$value;\n    if (highlightedIndexRef.current !== -1 && previousProps.filteredOptions && previousProps.filteredOptions.length !== filteredOptions.length && (multiple ? previousProps.value.every((val, i) => getOptionLabel(value[i]) === getOptionLabel(val)) : getOptionLabel((_previousProps$value = previousProps.value) != null ? _previousProps$value : '') === getOptionLabel(value != null ? value : ''))) {\n      const previousHighlightedOption = previousProps.filteredOptions[highlightedIndexRef.current];\n      if (previousHighlightedOption) {\n        const previousHighlightedOptionExists = filteredOptions.some(option => {\n          return getOptionLabel(option) === getOptionLabel(previousHighlightedOption);\n        });\n        if (previousHighlightedOptionExists) {\n          return true;\n        }\n      }\n    }\n    return false;\n  };\n  const syncHighlightedIndex = react__WEBPACK_IMPORTED_MODULE_1__.useCallback(() => {\n    if (!popupOpen) {\n      return;\n    }\n\n    // Check if the previously highlighted option still exists in the updated filtered options list and if the value hasn't changed\n    // If it exists and the value hasn't changed, return, otherwise continue execution\n    if (checkHighlightedOptionExists()) {\n      return;\n    }\n    const valueItem = multiple ? value[0] : value;\n\n    // The popup is empty, reset\n    if (filteredOptions.length === 0 || valueItem == null) {\n      changeHighlightedIndex({\n        diff: 'reset'\n      });\n      return;\n    }\n    if (!listboxRef.current) {\n      return;\n    }\n\n    // Synchronize the value with the highlighted index\n    if (valueItem != null) {\n      const currentOption = filteredOptions[highlightedIndexRef.current];\n\n      // Keep the current highlighted index if possible\n      if (multiple && currentOption && findIndex(value, val => isOptionEqualToValue(currentOption, val)) !== -1) {\n        return;\n      }\n      const itemIndex = findIndex(filteredOptions, optionItem => isOptionEqualToValue(optionItem, valueItem));\n      if (itemIndex === -1) {\n        changeHighlightedIndex({\n          diff: 'reset'\n        });\n      } else {\n        setHighlightedIndex({\n          index: itemIndex\n        });\n      }\n      return;\n    }\n\n    // Prevent the highlighted index to leak outside the boundaries.\n    if (highlightedIndexRef.current >= filteredOptions.length - 1) {\n      setHighlightedIndex({\n        index: filteredOptions.length - 1\n      });\n      return;\n    }\n\n    // Restore the focus to the previous index.\n    setHighlightedIndex({\n      index: highlightedIndexRef.current\n    });\n    // Ignore filteredOptions (and options, isOptionEqualToValue, getOptionLabel) not to break the scroll position\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [\n  // Only sync the highlighted index when the option switch between empty and not\n  filteredOptions.length,\n  // Don't sync the highlighted index with the value when multiple\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  multiple ? false : value, filterSelectedOptions, changeHighlightedIndex, setHighlightedIndex, popupOpen, inputValue, multiple]);\n  const handleListboxRef = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(node => {\n    (0,_mui_utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(listboxRef, node);\n    if (!node) {\n      return;\n    }\n    syncHighlightedIndex();\n  });\n  if (true) {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    react__WEBPACK_IMPORTED_MODULE_1__.useEffect(() => {\n      if (!inputRef.current || inputRef.current.nodeName !== 'INPUT') {\n        if (inputRef.current && inputRef.current.nodeName === 'TEXTAREA') {\n          console.warn([`A textarea element was provided to ${componentName} where input was expected.`, `This is not a supported scenario but it may work under certain conditions.`, `A textarea keyboard navigation may conflict with Autocomplete controls (e.g. enter and arrow keys).`, `Make sure to test keyboard navigation and add custom event handlers if necessary.`].join('\\n'));\n        } else {\n          console.error([`MUI: Unable to find the input element. It was resolved to ${inputRef.current} while an HTMLInputElement was expected.`, `Instead, ${componentName} expects an input element.`, '', componentName === 'useAutocomplete' ? 'Make sure you have bound getInputProps correctly and that the normal ref/effect resolutions order is guaranteed.' : 'Make sure you have customized the input component correctly.'].join('\\n'));\n        }\n      }\n    }, [componentName]);\n  }\n  react__WEBPACK_IMPORTED_MODULE_1__.useEffect(() => {\n    syncHighlightedIndex();\n  }, [syncHighlightedIndex]);\n  const handleOpen = event => {\n    if (open) {\n      return;\n    }\n    setOpenState(true);\n    setInputPristine(true);\n    if (onOpen) {\n      onOpen(event);\n    }\n  };\n  const handleClose = (event, reason) => {\n    if (!open) {\n      return;\n    }\n    setOpenState(false);\n    if (onClose) {\n      onClose(event, reason);\n    }\n  };\n  const handleValue = (event, newValue, reason, details) => {\n    if (multiple) {\n      if (value.length === newValue.length && value.every((val, i) => val === newValue[i])) {\n        return;\n      }\n    } else if (value === newValue) {\n      return;\n    }\n    if (onChange) {\n      onChange(event, newValue, reason, details);\n    }\n    setValueState(newValue);\n  };\n  const isTouch = react__WEBPACK_IMPORTED_MODULE_1__.useRef(false);\n  const selectNewValue = (event, option, reasonProp = 'selectOption', origin = 'options') => {\n    let reason = reasonProp;\n    let newValue = option;\n    if (multiple) {\n      newValue = Array.isArray(value) ? value.slice() : [];\n      if (true) {\n        const matches = newValue.filter(val => isOptionEqualToValue(option, val));\n        if (matches.length > 1) {\n          console.error([`MUI: The \\`isOptionEqualToValue\\` method of ${componentName} does not handle the arguments correctly.`, `The component expects a single value to match a given option but found ${matches.length} matches.`].join('\\n'));\n        }\n      }\n      const itemIndex = findIndex(newValue, valueItem => isOptionEqualToValue(option, valueItem));\n      if (itemIndex === -1) {\n        newValue.push(option);\n      } else if (origin !== 'freeSolo') {\n        newValue.splice(itemIndex, 1);\n        reason = 'removeOption';\n      }\n    }\n    resetInputValue(event, newValue);\n    handleValue(event, newValue, reason, {\n      option\n    });\n    if (!disableCloseOnSelect && (!event || !event.ctrlKey && !event.metaKey)) {\n      handleClose(event, reason);\n    }\n    if (blurOnSelect === true || blurOnSelect === 'touch' && isTouch.current || blurOnSelect === 'mouse' && !isTouch.current) {\n      inputRef.current.blur();\n    }\n  };\n  function validTagIndex(index, direction) {\n    if (index === -1) {\n      return -1;\n    }\n    let nextFocus = index;\n    while (true) {\n      // Out of range\n      if (direction === 'next' && nextFocus === value.length || direction === 'previous' && nextFocus === -1) {\n        return -1;\n      }\n      const option = anchorEl.querySelector(`[data-tag-index=\"${nextFocus}\"]`);\n\n      // Same logic as MenuList.js\n      if (!option || !option.hasAttribute('tabindex') || option.disabled || option.getAttribute('aria-disabled') === 'true') {\n        nextFocus += direction === 'next' ? 1 : -1;\n      } else {\n        return nextFocus;\n      }\n    }\n  }\n  const handleFocusTag = (event, direction) => {\n    if (!multiple) {\n      return;\n    }\n    if (inputValue === '') {\n      handleClose(event, 'toggleInput');\n    }\n    let nextTag = focusedTag;\n    if (focusedTag === -1) {\n      if (inputValue === '' && direction === 'previous') {\n        nextTag = value.length - 1;\n      }\n    } else {\n      nextTag += direction === 'next' ? 1 : -1;\n      if (nextTag < 0) {\n        nextTag = 0;\n      }\n      if (nextTag === value.length) {\n        nextTag = -1;\n      }\n    }\n    nextTag = validTagIndex(nextTag, direction);\n    setFocusedTag(nextTag);\n    focusTag(nextTag);\n  };\n  const handleClear = event => {\n    ignoreFocus.current = true;\n    setInputValueState('');\n    if (onInputChange) {\n      onInputChange(event, '', 'clear');\n    }\n    handleValue(event, multiple ? [] : null, 'clear');\n  };\n  const handleKeyDown = other => event => {\n    if (other.onKeyDown) {\n      other.onKeyDown(event);\n    }\n    if (event.defaultMuiPrevented) {\n      return;\n    }\n    if (focusedTag !== -1 && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) === -1) {\n      setFocusedTag(-1);\n      focusTag(-1);\n    }\n\n    // Wait until IME is settled.\n    if (event.which !== 229) {\n      switch (event.key) {\n        case 'Home':\n          if (popupOpen && handleHomeEndKeys) {\n            // Prevent scroll of the page\n            event.preventDefault();\n            changeHighlightedIndex({\n              diff: 'start',\n              direction: 'next',\n              reason: 'keyboard',\n              event\n            });\n          }\n          break;\n        case 'End':\n          if (popupOpen && handleHomeEndKeys) {\n            // Prevent scroll of the page\n            event.preventDefault();\n            changeHighlightedIndex({\n              diff: 'end',\n              direction: 'previous',\n              reason: 'keyboard',\n              event\n            });\n          }\n          break;\n        case 'PageUp':\n          // Prevent scroll of the page\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: -pageSize,\n            direction: 'previous',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'PageDown':\n          // Prevent scroll of the page\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: pageSize,\n            direction: 'next',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'ArrowDown':\n          // Prevent cursor move\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: 1,\n            direction: 'next',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'ArrowUp':\n          // Prevent cursor move\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: -1,\n            direction: 'previous',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'ArrowLeft':\n          handleFocusTag(event, 'previous');\n          break;\n        case 'ArrowRight':\n          handleFocusTag(event, 'next');\n          break;\n        case 'Enter':\n          if (highlightedIndexRef.current !== -1 && popupOpen) {\n            const option = filteredOptions[highlightedIndexRef.current];\n            const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n\n            // Avoid early form validation, let the end-users continue filling the form.\n            event.preventDefault();\n            if (disabled) {\n              return;\n            }\n            selectNewValue(event, option, 'selectOption');\n\n            // Move the selection to the end.\n            if (autoComplete) {\n              inputRef.current.setSelectionRange(inputRef.current.value.length, inputRef.current.value.length);\n            }\n          } else if (freeSolo && inputValue !== '' && inputValueIsSelectedValue === false) {\n            if (multiple) {\n              // Allow people to add new values before they submit the form.\n              event.preventDefault();\n            }\n            selectNewValue(event, inputValue, 'createOption', 'freeSolo');\n          }\n          break;\n        case 'Escape':\n          if (popupOpen) {\n            // Avoid Opera to exit fullscreen mode.\n            event.preventDefault();\n            // Avoid the Modal to handle the event.\n            event.stopPropagation();\n            handleClose(event, 'escape');\n          } else if (clearOnEscape && (inputValue !== '' || multiple && value.length > 0)) {\n            // Avoid Opera to exit fullscreen mode.\n            event.preventDefault();\n            // Avoid the Modal to handle the event.\n            event.stopPropagation();\n            handleClear(event);\n          }\n          break;\n        case 'Backspace':\n          if (multiple && !readOnly && inputValue === '' && value.length > 0) {\n            const index = focusedTag === -1 ? value.length - 1 : focusedTag;\n            const newValue = value.slice();\n            newValue.splice(index, 1);\n            handleValue(event, newValue, 'removeOption', {\n              option: value[index]\n            });\n          }\n          break;\n        case 'Delete':\n          if (multiple && !readOnly && inputValue === '' && value.length > 0 && focusedTag !== -1) {\n            const index = focusedTag;\n            const newValue = value.slice();\n            newValue.splice(index, 1);\n            handleValue(event, newValue, 'removeOption', {\n              option: value[index]\n            });\n          }\n          break;\n        default:\n      }\n    }\n  };\n  const handleFocus = event => {\n    setFocused(true);\n    if (openOnFocus && !ignoreFocus.current) {\n      handleOpen(event);\n    }\n  };\n  const handleBlur = event => {\n    // Ignore the event when using the scrollbar with IE11\n    if (unstable_isActiveElementInListbox(listboxRef)) {\n      inputRef.current.focus();\n      return;\n    }\n    setFocused(false);\n    firstFocus.current = true;\n    ignoreFocus.current = false;\n    if (autoSelect && highlightedIndexRef.current !== -1 && popupOpen) {\n      selectNewValue(event, filteredOptions[highlightedIndexRef.current], 'blur');\n    } else if (autoSelect && freeSolo && inputValue !== '') {\n      selectNewValue(event, inputValue, 'blur', 'freeSolo');\n    } else if (clearOnBlur) {\n      resetInputValue(event, value);\n    }\n    handleClose(event, 'blur');\n  };\n  const handleInputChange = event => {\n    const newValue = event.target.value;\n    if (inputValue !== newValue) {\n      setInputValueState(newValue);\n      setInputPristine(false);\n      if (onInputChange) {\n        onInputChange(event, newValue, 'input');\n      }\n    }\n    if (newValue === '') {\n      if (!disableClearable && !multiple) {\n        handleValue(event, null, 'clear');\n      }\n    } else {\n      handleOpen(event);\n    }\n  };\n  const handleOptionMouseOver = event => {\n    setHighlightedIndex({\n      event,\n      index: Number(event.currentTarget.getAttribute('data-option-index')),\n      reason: 'mouse'\n    });\n  };\n  const handleOptionTouchStart = () => {\n    isTouch.current = true;\n  };\n  const handleOptionClick = event => {\n    const index = Number(event.currentTarget.getAttribute('data-option-index'));\n    selectNewValue(event, filteredOptions[index], 'selectOption');\n    isTouch.current = false;\n  };\n  const handleTagDelete = index => event => {\n    const newValue = value.slice();\n    newValue.splice(index, 1);\n    handleValue(event, newValue, 'removeOption', {\n      option: value[index]\n    });\n  };\n  const handlePopupIndicator = event => {\n    if (open) {\n      handleClose(event, 'toggleInput');\n    } else {\n      handleOpen(event);\n    }\n  };\n\n  // Prevent input blur when interacting with the combobox\n  const handleMouseDown = event => {\n    if (event.target.getAttribute('id') !== id) {\n      event.preventDefault();\n    }\n  };\n\n  // Focus the input when interacting with the combobox\n  const handleClick = () => {\n    inputRef.current.focus();\n    if (selectOnFocus && firstFocus.current && inputRef.current.selectionEnd - inputRef.current.selectionStart === 0) {\n      inputRef.current.select();\n    }\n    firstFocus.current = false;\n  };\n  const handleInputMouseDown = event => {\n    if (inputValue === '' || !open) {\n      handlePopupIndicator(event);\n    }\n  };\n  let dirty = freeSolo && inputValue.length > 0;\n  dirty = dirty || (multiple ? value.length > 0 : value !== null);\n  let groupedOptions = filteredOptions;\n  if (groupBy) {\n    // used to keep track of key and indexes in the result array\n    const indexBy = new Map();\n    let warn = false;\n    groupedOptions = filteredOptions.reduce((acc, option, index) => {\n      const group = groupBy(option);\n      if (acc.length > 0 && acc[acc.length - 1].group === group) {\n        acc[acc.length - 1].options.push(option);\n      } else {\n        if (true) {\n          if (indexBy.get(group) && !warn) {\n            console.warn(`MUI: The options provided combined with the \\`groupBy\\` method of ${componentName} returns duplicated headers.`, 'You can solve the issue by sorting the options with the output of `groupBy`.');\n            warn = true;\n          }\n          indexBy.set(group, true);\n        }\n        acc.push({\n          key: index,\n          index,\n          group,\n          options: [option]\n        });\n      }\n      return acc;\n    }, []);\n  }\n  if (disabledProp && focused) {\n    handleBlur();\n  }\n  return {\n    getRootProps: (other = {}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      'aria-owns': listboxAvailable ? `${id}-listbox` : null\n    }, other, {\n      onKeyDown: handleKeyDown(other),\n      onMouseDown: handleMouseDown,\n      onClick: handleClick\n    }),\n    getInputLabelProps: () => ({\n      id: `${id}-label`,\n      htmlFor: id\n    }),\n    getInputProps: () => ({\n      id,\n      value: inputValue,\n      onBlur: handleBlur,\n      onFocus: handleFocus,\n      onChange: handleInputChange,\n      onMouseDown: handleInputMouseDown,\n      // if open then this is handled imperativeley so don't let react override\n      // only have an opinion about this when closed\n      'aria-activedescendant': popupOpen ? '' : null,\n      'aria-autocomplete': autoComplete ? 'both' : 'list',\n      'aria-controls': listboxAvailable ? `${id}-listbox` : undefined,\n      'aria-expanded': listboxAvailable,\n      // Disable browser's suggestion that might overlap with the popup.\n      // Handle autocomplete but not autofill.\n      autoComplete: 'off',\n      ref: inputRef,\n      autoCapitalize: 'none',\n      spellCheck: 'false',\n      role: 'combobox'\n    }),\n    getClearProps: () => ({\n      tabIndex: -1,\n      onClick: handleClear\n    }),\n    getPopupIndicatorProps: () => ({\n      tabIndex: -1,\n      onClick: handlePopupIndicator\n    }),\n    getTagProps: ({\n      index\n    }) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      key: index,\n      'data-tag-index': index,\n      tabIndex: -1\n    }, !readOnly && {\n      onDelete: handleTagDelete(index)\n    }),\n    getListboxProps: () => ({\n      role: 'listbox',\n      id: `${id}-listbox`,\n      'aria-labelledby': `${id}-label`,\n      ref: handleListboxRef,\n      onMouseDown: event => {\n        // Prevent blur\n        event.preventDefault();\n      }\n    }),\n    getOptionProps: ({\n      index,\n      option\n    }) => {\n      const selected = (multiple ? value : [value]).some(value2 => value2 != null && isOptionEqualToValue(option, value2));\n      const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n      return {\n        key: getOptionLabel(option),\n        tabIndex: -1,\n        role: 'option',\n        id: `${id}-option-${index}`,\n        onMouseOver: handleOptionMouseOver,\n        onClick: handleOptionClick,\n        onTouchStart: handleOptionTouchStart,\n        'data-option-index': index,\n        'aria-disabled': disabled,\n        'aria-selected': selected\n      };\n    },\n    id,\n    inputValue,\n    value,\n    dirty,\n    popupOpen,\n    focused: focused || focusedTag !== -1,\n    anchorEl,\n    setAnchorEl,\n    focusedTag,\n    groupedOptions\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/base/AutocompleteUnstyled/useAutocomplete.js?");

/***/ }),

/***/ "./node_modules/@mui/base/FocusTrap/FocusTrap.js":
/*!*******************************************************!*\
  !*** ./node_modules/@mui/base/FocusTrap/FocusTrap.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useForkRef.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/ownerDocument.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/elementAcceptingRef.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/exactProp.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n/* eslint-disable consistent-return, jsx-a11y/no-noninteractive-tabindex */\n\n\n\n\n\n// Inspired by https://github.com/focus-trap/tabbable\nconst candidatesSelector = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'].join(',');\nfunction getTabIndex(node) {\n  const tabindexAttr = parseInt(node.getAttribute('tabindex') || '', 10);\n  if (!Number.isNaN(tabindexAttr)) {\n    return tabindexAttr;\n  }\n\n  // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=661108&q=contenteditable%20tabindex&can=2\n  // so if they don't have a tabindex attribute specifically set, assume it's 0.\n  // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n  //  `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n  //  yet they are still part of the regular tab order; in FF, they get a default\n  //  `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n  //  order, consider their tab index to be 0.\n  if (node.contentEditable === 'true' || (node.nodeName === 'AUDIO' || node.nodeName === 'VIDEO' || node.nodeName === 'DETAILS') && node.getAttribute('tabindex') === null) {\n    return 0;\n  }\n  return node.tabIndex;\n}\nfunction isNonTabbableRadio(node) {\n  if (node.tagName !== 'INPUT' || node.type !== 'radio') {\n    return false;\n  }\n  if (!node.name) {\n    return false;\n  }\n  const getRadio = selector => node.ownerDocument.querySelector(`input[type=\"radio\"]${selector}`);\n  let roving = getRadio(`[name=\"${node.name}\"]:checked`);\n  if (!roving) {\n    roving = getRadio(`[name=\"${node.name}\"]`);\n  }\n  return roving !== node;\n}\nfunction isNodeMatchingSelectorFocusable(node) {\n  if (node.disabled || node.tagName === 'INPUT' && node.type === 'hidden' || isNonTabbableRadio(node)) {\n    return false;\n  }\n  return true;\n}\nfunction defaultGetTabbable(root) {\n  const regularTabNodes = [];\n  const orderedTabNodes = [];\n  Array.from(root.querySelectorAll(candidatesSelector)).forEach((node, i) => {\n    const nodeTabIndex = getTabIndex(node);\n    if (nodeTabIndex === -1 || !isNodeMatchingSelectorFocusable(node)) {\n      return;\n    }\n    if (nodeTabIndex === 0) {\n      regularTabNodes.push(node);\n    } else {\n      orderedTabNodes.push({\n        documentOrder: i,\n        tabIndex: nodeTabIndex,\n        node: node\n      });\n    }\n  });\n  return orderedTabNodes.sort((a, b) => a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex).map(a => a.node).concat(regularTabNodes);\n}\nfunction defaultIsEnabled() {\n  return true;\n}\n\n/**\n * Utility component that locks focus inside the component.\n *\n * Demos:\n *\n * - [Focus Trap](https://mui.com/base/react-focus-trap/)\n *\n * API:\n *\n * - [FocusTrap API](https://mui.com/base/api/focus-trap/)\n */\nfunction FocusTrap(props) {\n  const {\n    children,\n    disableAutoFocus = false,\n    disableEnforceFocus = false,\n    disableRestoreFocus = false,\n    getTabbable = defaultGetTabbable,\n    isEnabled = defaultIsEnabled,\n    open\n  } = props;\n  const ignoreNextEnforceFocus = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);\n  const sentinelStart = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n  const sentinelEnd = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n  const nodeToRestore = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n  const reactFocusEventTarget = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n  // This variable is useful when disableAutoFocus is true.\n  // It waits for the active element to move into the component to activate.\n  const activated = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);\n  const rootRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n  // @ts-expect-error TODO upstream fix\n  const handleRef = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(children.ref, rootRef);\n  const lastKeydown = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n    // We might render an empty child.\n    if (!open || !rootRef.current) {\n      return;\n    }\n    activated.current = !disableAutoFocus;\n  }, [disableAutoFocus, open]);\n  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n    // We might render an empty child.\n    if (!open || !rootRef.current) {\n      return;\n    }\n    const doc = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(rootRef.current);\n    if (!rootRef.current.contains(doc.activeElement)) {\n      if (!rootRef.current.hasAttribute('tabIndex')) {\n        if (true) {\n          console.error(['MUI: The modal content node does not accept focus.', 'For the benefit of assistive technologies, ' + 'the tabIndex of the node is being set to \"-1\".'].join('\\n'));\n        }\n        rootRef.current.setAttribute('tabIndex', '-1');\n      }\n      if (activated.current) {\n        rootRef.current.focus();\n      }\n    }\n    return () => {\n      // restoreLastFocus()\n      if (!disableRestoreFocus) {\n        // In IE11 it is possible for document.activeElement to be null resulting\n        // in nodeToRestore.current being null.\n        // Not all elements in IE11 have a focus method.\n        // Once IE11 support is dropped the focus() call can be unconditional.\n        if (nodeToRestore.current && nodeToRestore.current.focus) {\n          ignoreNextEnforceFocus.current = true;\n          nodeToRestore.current.focus();\n        }\n        nodeToRestore.current = null;\n      }\n    };\n    // Missing `disableRestoreFocus` which is fine.\n    // We don't support changing that prop on an open FocusTrap\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [open]);\n  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n    // We might render an empty child.\n    if (!open || !rootRef.current) {\n      return;\n    }\n    const doc = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(rootRef.current);\n    const contain = nativeEvent => {\n      const {\n        current: rootElement\n      } = rootRef;\n\n      // Cleanup functions are executed lazily in React 17.\n      // Contain can be called between the component being unmounted and its cleanup function being run.\n      if (rootElement === null) {\n        return;\n      }\n      if (!doc.hasFocus() || disableEnforceFocus || !isEnabled() || ignoreNextEnforceFocus.current) {\n        ignoreNextEnforceFocus.current = false;\n        return;\n      }\n      if (!rootElement.contains(doc.activeElement)) {\n        // if the focus event is not coming from inside the children's react tree, reset the refs\n        if (nativeEvent && reactFocusEventTarget.current !== nativeEvent.target || doc.activeElement !== reactFocusEventTarget.current) {\n          reactFocusEventTarget.current = null;\n        } else if (reactFocusEventTarget.current !== null) {\n          return;\n        }\n        if (!activated.current) {\n          return;\n        }\n        let tabbable = [];\n        if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {\n          tabbable = getTabbable(rootRef.current);\n        }\n        if (tabbable.length > 0) {\n          var _lastKeydown$current, _lastKeydown$current2;\n          const isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === 'Tab');\n          const focusNext = tabbable[0];\n          const focusPrevious = tabbable[tabbable.length - 1];\n          if (typeof focusNext !== 'string' && typeof focusPrevious !== 'string') {\n            if (isShiftTab) {\n              focusPrevious.focus();\n            } else {\n              focusNext.focus();\n            }\n          }\n        } else {\n          rootElement.focus();\n        }\n      }\n    };\n    const loopFocus = nativeEvent => {\n      lastKeydown.current = nativeEvent;\n      if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== 'Tab') {\n        return;\n      }\n\n      // Make sure the next tab starts from the right place.\n      // doc.activeElement refers to the origin.\n      if (doc.activeElement === rootRef.current && nativeEvent.shiftKey) {\n        // We need to ignore the next contain as\n        // it will try to move the focus back to the rootRef element.\n        ignoreNextEnforceFocus.current = true;\n        if (sentinelEnd.current) {\n          sentinelEnd.current.focus();\n        }\n      }\n    };\n    doc.addEventListener('focusin', contain);\n    doc.addEventListener('keydown', loopFocus, true);\n\n    // With Edge, Safari and Firefox, no focus related events are fired when the focused area stops being a focused area.\n    // e.g. https://bugzilla.mozilla.org/show_bug.cgi?id=559561.\n    // Instead, we can look if the active element was restored on the BODY element.\n    //\n    // The whatwg spec defines how the browser should behave but does not explicitly mention any events:\n    // https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule.\n    const interval = setInterval(() => {\n      if (doc.activeElement && doc.activeElement.tagName === 'BODY') {\n        contain(null);\n      }\n    }, 50);\n    return () => {\n      clearInterval(interval);\n      doc.removeEventListener('focusin', contain);\n      doc.removeEventListener('keydown', loopFocus, true);\n    };\n  }, [disableAutoFocus, disableEnforceFocus, disableRestoreFocus, isEnabled, open, getTabbable]);\n  const onFocus = event => {\n    if (nodeToRestore.current === null) {\n      nodeToRestore.current = event.relatedTarget;\n    }\n    activated.current = true;\n    reactFocusEventTarget.current = event.target;\n    const childrenPropsHandler = children.props.onFocus;\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const handleFocusSentinel = event => {\n    if (nodeToRestore.current === null) {\n      nodeToRestore.current = event.relatedTarget;\n    }\n    activated.current = true;\n  };\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n      tabIndex: open ? 0 : -1,\n      onFocus: handleFocusSentinel,\n      ref: sentinelStart,\n      \"data-testid\": \"sentinelStart\"\n    }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(children, {\n      ref: handleRef,\n      onFocus\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n      tabIndex: open ? 0 : -1,\n      onFocus: handleFocusSentinel,\n      ref: sentinelEnd,\n      \"data-testid\": \"sentinelEnd\"\n    })]\n  });\n}\n true ? FocusTrap.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * A single child content element.\n   */\n  children: _mui_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n  /**\n   * If `true`, the focus trap will not automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes.\n   * This also works correctly with any focus trap children that have the `disableAutoFocus` prop.\n   *\n   * Generally this should never be set to `true` as it makes the focus trap less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableAutoFocus: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().bool),\n  /**\n   * If `true`, the focus trap will not prevent focus from leaving the focus trap while open.\n   *\n   * Generally this should never be set to `true` as it makes the focus trap less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableEnforceFocus: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().bool),\n  /**\n   * If `true`, the focus trap will not restore focus to previously focused element once\n   * focus trap is hidden or unmounted.\n   * @default false\n   */\n  disableRestoreFocus: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().bool),\n  /**\n   * Returns an array of ordered tabbable nodes (i.e. in tab order) within the root.\n   * For instance, you can provide the \"tabbable\" npm dependency.\n   * @param {HTMLElement} root\n   */\n  getTabbable: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n  /**\n   * This prop extends the `open` prop.\n   * It allows to toggle the open state without having to wait for a rerender when changing the `open` prop.\n   * This prop should be memoized.\n   * It can be used to support multiple focus trap mounted at the same time.\n   * @default function defaultIsEnabled(): boolean {\n   *   return true;\n   * }\n   */\n  isEnabled: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n  /**\n   * If `true`, focus is locked.\n   */\n  open: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().bool.isRequired)\n} : 0;\nif (true) {\n  // eslint-disable-next-line\n  FocusTrap['propTypes' + ''] = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(FocusTrap.propTypes);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (FocusTrap);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/base/FocusTrap/FocusTrap.js?");

/***/ }),

/***/ "./node_modules/@mui/base/ModalUnstyled/ModalManager.js":
/*!**************************************************************!*\
  !*** ./node_modules/@mui/base/ModalUnstyled/ModalManager.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ariaHidden\": function() { return /* binding */ ariaHidden; },\n/* harmony export */   \"default\": function() { return /* binding */ ModalManager; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/ownerDocument.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/ownerWindow.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/getScrollbarSize.js\");\n\n// Is a vertical scrollbar displayed?\nfunction isOverflowing(container) {\n  const doc = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(container);\n  if (doc.body === container) {\n    return (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(container).innerWidth > doc.documentElement.clientWidth;\n  }\n  return container.scrollHeight > container.clientHeight;\n}\nfunction ariaHidden(element, show) {\n  if (show) {\n    element.setAttribute('aria-hidden', 'true');\n  } else {\n    element.removeAttribute('aria-hidden');\n  }\n}\nfunction getPaddingRight(element) {\n  return parseInt((0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element).getComputedStyle(element).paddingRight, 10) || 0;\n}\nfunction isAriaHiddenForbiddenOnElement(element) {\n  // The forbidden HTML tags are the ones from ARIA specification that\n  // can be children of body and can't have aria-hidden attribute.\n  // cf. https://www.w3.org/TR/html-aria/#docconformance\n  const forbiddenTagNames = ['TEMPLATE', 'SCRIPT', 'STYLE', 'LINK', 'MAP', 'META', 'NOSCRIPT', 'PICTURE', 'COL', 'COLGROUP', 'PARAM', 'SLOT', 'SOURCE', 'TRACK'];\n  const isForbiddenTagName = forbiddenTagNames.indexOf(element.tagName) !== -1;\n  const isInputHidden = element.tagName === 'INPUT' && element.getAttribute('type') === 'hidden';\n  return isForbiddenTagName || isInputHidden;\n}\nfunction ariaHiddenSiblings(container, mountElement, currentElement, elementsToExclude, show) {\n  const blacklist = [mountElement, currentElement, ...elementsToExclude];\n  [].forEach.call(container.children, element => {\n    const isNotExcludedElement = blacklist.indexOf(element) === -1;\n    const isNotForbiddenElement = !isAriaHiddenForbiddenOnElement(element);\n    if (isNotExcludedElement && isNotForbiddenElement) {\n      ariaHidden(element, show);\n    }\n  });\n}\nfunction findIndexOf(items, callback) {\n  let idx = -1;\n  items.some((item, index) => {\n    if (callback(item)) {\n      idx = index;\n      return true;\n    }\n    return false;\n  });\n  return idx;\n}\nfunction handleContainer(containerInfo, props) {\n  const restoreStyle = [];\n  const container = containerInfo.container;\n  if (!props.disableScrollLock) {\n    if (isOverflowing(container)) {\n      // Compute the size before applying overflow hidden to avoid any scroll jumps.\n      const scrollbarSize = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((0,_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(container));\n      restoreStyle.push({\n        value: container.style.paddingRight,\n        property: 'padding-right',\n        el: container\n      });\n      // Use computed style, here to get the real padding to add our scrollbar width.\n      container.style.paddingRight = `${getPaddingRight(container) + scrollbarSize}px`;\n\n      // .mui-fixed is a global helper.\n      const fixedElements = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(container).querySelectorAll('.mui-fixed');\n      [].forEach.call(fixedElements, element => {\n        restoreStyle.push({\n          value: element.style.paddingRight,\n          property: 'padding-right',\n          el: element\n        });\n        element.style.paddingRight = `${getPaddingRight(element) + scrollbarSize}px`;\n      });\n    }\n    let scrollContainer;\n    if (container.parentNode instanceof DocumentFragment) {\n      scrollContainer = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(container).body;\n    } else {\n      // Improve Gatsby support\n      // https://css-tricks.com/snippets/css/force-vertical-scrollbar/\n      const parent = container.parentElement;\n      const containerWindow = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(container);\n      scrollContainer = (parent == null ? void 0 : parent.nodeName) === 'HTML' && containerWindow.getComputedStyle(parent).overflowY === 'scroll' ? parent : container;\n    }\n\n    // Block the scroll even if no scrollbar is visible to account for mobile keyboard\n    // screensize shrink.\n    restoreStyle.push({\n      value: scrollContainer.style.overflow,\n      property: 'overflow',\n      el: scrollContainer\n    }, {\n      value: scrollContainer.style.overflowX,\n      property: 'overflow-x',\n      el: scrollContainer\n    }, {\n      value: scrollContainer.style.overflowY,\n      property: 'overflow-y',\n      el: scrollContainer\n    });\n    scrollContainer.style.overflow = 'hidden';\n  }\n  const restore = () => {\n    restoreStyle.forEach(({\n      value,\n      el,\n      property\n    }) => {\n      if (value) {\n        el.style.setProperty(property, value);\n      } else {\n        el.style.removeProperty(property);\n      }\n    });\n  };\n  return restore;\n}\nfunction getHiddenSiblings(container) {\n  const hiddenSiblings = [];\n  [].forEach.call(container.children, element => {\n    if (element.getAttribute('aria-hidden') === 'true') {\n      hiddenSiblings.push(element);\n    }\n  });\n  return hiddenSiblings;\n}\n/**\n * @ignore - do not document.\n *\n * Proper state management for containers and the modals in those containers.\n * Simplified, but inspired by react-overlay's ModalManager class.\n * Used by the Modal to ensure proper styling of containers.\n */\nclass ModalManager {\n  constructor() {\n    this.containers = void 0;\n    this.modals = void 0;\n    this.modals = [];\n    this.containers = [];\n  }\n  add(modal, container) {\n    let modalIndex = this.modals.indexOf(modal);\n    if (modalIndex !== -1) {\n      return modalIndex;\n    }\n    modalIndex = this.modals.length;\n    this.modals.push(modal);\n\n    // If the modal we are adding is already in the DOM.\n    if (modal.modalRef) {\n      ariaHidden(modal.modalRef, false);\n    }\n    const hiddenSiblings = getHiddenSiblings(container);\n    ariaHiddenSiblings(container, modal.mount, modal.modalRef, hiddenSiblings, true);\n    const containerIndex = findIndexOf(this.containers, item => item.container === container);\n    if (containerIndex !== -1) {\n      this.containers[containerIndex].modals.push(modal);\n      return modalIndex;\n    }\n    this.containers.push({\n      modals: [modal],\n      container,\n      restore: null,\n      hiddenSiblings\n    });\n    return modalIndex;\n  }\n  mount(modal, props) {\n    const containerIndex = findIndexOf(this.containers, item => item.modals.indexOf(modal) !== -1);\n    const containerInfo = this.containers[containerIndex];\n    if (!containerInfo.restore) {\n      containerInfo.restore = handleContainer(containerInfo, props);\n    }\n  }\n  remove(modal, ariaHiddenState = true) {\n    const modalIndex = this.modals.indexOf(modal);\n    if (modalIndex === -1) {\n      return modalIndex;\n    }\n    const containerIndex = findIndexOf(this.containers, item => item.modals.indexOf(modal) !== -1);\n    const containerInfo = this.containers[containerIndex];\n    containerInfo.modals.splice(containerInfo.modals.indexOf(modal), 1);\n    this.modals.splice(modalIndex, 1);\n\n    // If that was the last modal in a container, clean up the container.\n    if (containerInfo.modals.length === 0) {\n      // The modal might be closed before it had the chance to be mounted in the DOM.\n      if (containerInfo.restore) {\n        containerInfo.restore();\n      }\n      if (modal.modalRef) {\n        // In case the modal wasn't in the DOM yet.\n        ariaHidden(modal.modalRef, ariaHiddenState);\n      }\n      ariaHiddenSiblings(containerInfo.container, modal.mount, modal.modalRef, containerInfo.hiddenSiblings, false);\n      this.containers.splice(containerIndex, 1);\n    } else {\n      // Otherwise make sure the next top modal is visible to a screen reader.\n      const nextTop = containerInfo.modals[containerInfo.modals.length - 1];\n      // as soon as a modal is adding its modalRef is undefined. it can't set\n      // aria-hidden because the dom element doesn't exist either\n      // when modal was unmounted before modalRef gets null\n      if (nextTop.modalRef) {\n        ariaHidden(nextTop.modalRef, false);\n      }\n    }\n    return modalIndex;\n  }\n  isTopModal(modal) {\n    return this.modals.length > 0 && this.modals[this.modals.length - 1] === modal;\n  }\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/base/ModalUnstyled/ModalManager.js?");

/***/ }),

/***/ "./node_modules/@mui/base/ModalUnstyled/ModalUnstyled.js":
/*!***************************************************************!*\
  !*** ./node_modules/@mui/base/ModalUnstyled/ModalUnstyled.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useForkRef.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/ownerDocument.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useEventCallback.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/createChainedFunction.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/elementAcceptingRef.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/HTMLElementType.js\");\n/* harmony import */ var _composeClasses__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../composeClasses */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _Portal__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../Portal */ \"./node_modules/@mui/base/Portal/Portal.js\");\n/* harmony import */ var _ModalManager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ModalManager */ \"./node_modules/@mui/base/ModalUnstyled/ModalManager.js\");\n/* harmony import */ var _FocusTrap__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../FocusTrap */ \"./node_modules/@mui/base/FocusTrap/FocusTrap.js\");\n/* harmony import */ var _modalUnstyledClasses__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modalUnstyledClasses */ \"./node_modules/@mui/base/ModalUnstyled/modalUnstyledClasses.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils */ \"./node_modules/@mui/base/utils/useSlotProps.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"children\", \"classes\", \"closeAfterTransition\", \"component\", \"container\", \"disableAutoFocus\", \"disableEnforceFocus\", \"disableEscapeKeyDown\", \"disablePortal\", \"disableRestoreFocus\", \"disableScrollLock\", \"hideBackdrop\", \"keepMounted\", \"manager\", \"onBackdropClick\", \"onClose\", \"onKeyDown\", \"open\", \"onTransitionEnter\", \"onTransitionExited\", \"slotProps\", \"slots\"];\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    open,\n    exited,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', !open && exited && 'hidden'],\n    backdrop: ['backdrop']\n  };\n  return (0,_composeClasses__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(slots, _modalUnstyledClasses__WEBPACK_IMPORTED_MODULE_5__.getModalUtilityClass, classes);\n};\nfunction getContainer(container) {\n  return typeof container === 'function' ? container() : container;\n}\nfunction getHasTransition(children) {\n  return children ? children.props.hasOwnProperty('in') : false;\n}\n\n// A modal manager used to track and manage the state of open Modals.\n// Modals don't open on the server so this won't conflict with concurrent requests.\nconst defaultManager = new _ModalManager__WEBPACK_IMPORTED_MODULE_6__[\"default\"]();\n\n/**\n * Modal is a lower-level construct that is leveraged by the following components:\n *\n * *   [Dialog](https://mui.com/material-ui/api/dialog/)\n * *   [Drawer](https://mui.com/material-ui/api/drawer/)\n * *   [Menu](https://mui.com/material-ui/api/menu/)\n * *   [Popover](https://mui.com/material-ui/api/popover/)\n *\n * If you are creating a modal dialog, you probably want to use the [Dialog](https://mui.com/material-ui/api/dialog/) component\n * rather than directly using Modal.\n *\n * This component shares many concepts with [react-overlays](https://react-bootstrap.github.io/react-overlays/#modals).\n *\n * Demos:\n *\n * - [Unstyled Modal](https://mui.com/base/react-modal/)\n *\n * API:\n *\n * - [ModalUnstyled API](https://mui.com/base/api/modal-unstyled/)\n */\nconst ModalUnstyled = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function ModalUnstyled(props, forwardedRef) {\n  var _props$ariaHidden, _ref;\n  const {\n      children,\n      classes: classesProp,\n      closeAfterTransition = false,\n      component,\n      container,\n      disableAutoFocus = false,\n      disableEnforceFocus = false,\n      disableEscapeKeyDown = false,\n      disablePortal = false,\n      disableRestoreFocus = false,\n      disableScrollLock = false,\n      hideBackdrop = false,\n      keepMounted = false,\n      // private\n      manager = defaultManager,\n      onBackdropClick,\n      onClose,\n      onKeyDown,\n      open,\n      onTransitionEnter,\n      onTransitionExited,\n      slotProps = {},\n      slots = {}\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const [exited, setExited] = react__WEBPACK_IMPORTED_MODULE_2__.useState(!open);\n  const modal = react__WEBPACK_IMPORTED_MODULE_2__.useRef({});\n  const mountNodeRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const modalRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const handleRef = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(modalRef, forwardedRef);\n  const hasTransition = getHasTransition(children);\n  const ariaHiddenProp = (_props$ariaHidden = props['aria-hidden']) != null ? _props$ariaHidden : true;\n  const getDoc = () => (0,_mui_utils__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(mountNodeRef.current);\n  const getModal = () => {\n    modal.current.modalRef = modalRef.current;\n    modal.current.mountNode = mountNodeRef.current;\n    return modal.current;\n  };\n  const handleMounted = () => {\n    manager.mount(getModal(), {\n      disableScrollLock\n    });\n\n    // Fix a bug on Chrome where the scroll isn't initially 0.\n    if (modalRef.current) {\n      modalRef.current.scrollTop = 0;\n    }\n  };\n  const handleOpen = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(() => {\n    const resolvedContainer = getContainer(container) || getDoc().body;\n    manager.add(getModal(), resolvedContainer);\n\n    // The element was already mounted.\n    if (modalRef.current) {\n      handleMounted();\n    }\n  });\n  const isTopModal = react__WEBPACK_IMPORTED_MODULE_2__.useCallback(() => manager.isTopModal(getModal()), [manager]);\n  const handlePortalRef = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(node => {\n    mountNodeRef.current = node;\n    if (!node || !modalRef.current) {\n      return;\n    }\n    if (open && isTopModal()) {\n      handleMounted();\n    } else {\n      (0,_ModalManager__WEBPACK_IMPORTED_MODULE_6__.ariaHidden)(modalRef.current, ariaHiddenProp);\n    }\n  });\n  const handleClose = react__WEBPACK_IMPORTED_MODULE_2__.useCallback(() => {\n    manager.remove(getModal(), ariaHiddenProp);\n  }, [manager, ariaHiddenProp]);\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    return () => {\n      handleClose();\n    };\n  }, [handleClose]);\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    if (open) {\n      handleOpen();\n    } else if (!hasTransition || !closeAfterTransition) {\n      handleClose();\n    }\n  }, [open, handleClose, hasTransition, closeAfterTransition, handleOpen]);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n    classes: classesProp,\n    closeAfterTransition,\n    disableAutoFocus,\n    disableEnforceFocus,\n    disableEscapeKeyDown,\n    disablePortal,\n    disableRestoreFocus,\n    disableScrollLock,\n    exited,\n    hideBackdrop,\n    keepMounted\n  });\n  const classes = useUtilityClasses(ownerState);\n  const handleEnter = () => {\n    setExited(false);\n    if (onTransitionEnter) {\n      onTransitionEnter();\n    }\n  };\n  const handleExited = () => {\n    setExited(true);\n    if (onTransitionExited) {\n      onTransitionExited();\n    }\n    if (closeAfterTransition) {\n      handleClose();\n    }\n  };\n  const handleBackdropClick = event => {\n    if (event.target !== event.currentTarget) {\n      return;\n    }\n    if (onBackdropClick) {\n      onBackdropClick(event);\n    }\n    if (onClose) {\n      onClose(event, 'backdropClick');\n    }\n  };\n  const handleKeyDown = event => {\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n\n    // The handler doesn't take event.defaultPrevented into account:\n    //\n    // event.preventDefault() is meant to stop default behaviors like\n    // clicking a checkbox to check it, hitting a button to submit a form,\n    // and hitting left arrow to move the cursor in a text input etc.\n    // Only special HTML elements have these default behaviors.\n    if (event.key !== 'Escape' || !isTopModal()) {\n      return;\n    }\n    if (!disableEscapeKeyDown) {\n      // Swallow the event, in case someone is listening for the escape key on the body.\n      event.stopPropagation();\n      if (onClose) {\n        onClose(event, 'escapeKeyDown');\n      }\n    }\n  };\n  const childProps = {};\n  if (children.props.tabIndex === undefined) {\n    childProps.tabIndex = '-1';\n  }\n\n  // It's a Transition like component\n  if (hasTransition) {\n    childProps.onEnter = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(handleEnter, children.props.onEnter);\n    childProps.onExited = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(handleExited, children.props.onExited);\n  }\n  const Root = (_ref = component != null ? component : slots.root) != null ? _ref : 'div';\n  const rootProps = (0,_utils__WEBPACK_IMPORTED_MODULE_11__[\"default\"])({\n    elementType: Root,\n    externalSlotProps: slotProps.root,\n    externalForwardedProps: other,\n    additionalProps: {\n      ref: handleRef,\n      role: 'presentation',\n      onKeyDown: handleKeyDown\n    },\n    className: classes.root,\n    ownerState\n  });\n  const BackdropComponent = slots.backdrop;\n  const backdropProps = (0,_utils__WEBPACK_IMPORTED_MODULE_11__[\"default\"])({\n    elementType: BackdropComponent,\n    externalSlotProps: slotProps.backdrop,\n    additionalProps: {\n      'aria-hidden': true,\n      onClick: handleBackdropClick,\n      open\n    },\n    className: classes.backdrop,\n    ownerState\n  });\n  if (!keepMounted && !open && (!hasTransition || exited)) {\n    return null;\n  }\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_Portal__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n  // @ts-expect-error TODO: include ref to MUI Base Portal props\n  , {\n    ref: handlePortalRef,\n    container: container,\n    disablePortal: disablePortal,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(Root, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, rootProps, {\n      children: [!hideBackdrop && BackdropComponent ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(BackdropComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, backdropProps)) : null, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_FocusTrap__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n        disableEnforceFocus: disableEnforceFocus,\n        disableAutoFocus: disableAutoFocus,\n        disableRestoreFocus: disableRestoreFocus,\n        isEnabled: isTopModal,\n        open: open,\n        children: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(children, childProps)\n      })]\n    }))\n  });\n});\n true ? ModalUnstyled.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * A single child content element.\n   */\n  children: _mui_utils__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isRequired,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object),\n  /**\n   * When set to true the Modal waits until a nested Transition is completed before closing.\n   * @default false\n   */\n  closeAfterTransition: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().elementType),\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: prop_types__WEBPACK_IMPORTED_MODULE_15___default().oneOfType([_mui_utils__WEBPACK_IMPORTED_MODULE_16__[\"default\"], (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func)]),\n  /**\n   * If `true`, the modal will not automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes.\n   * This also works correctly with any modal children that have the `disableAutoFocus` prop.\n   *\n   * Generally this should never be set to `true` as it makes the modal less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableAutoFocus: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * If `true`, the modal will not prevent focus from leaving the modal while open.\n   *\n   * Generally this should never be set to `true` as it makes the modal less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableEnforceFocus: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * If `true`, hitting escape will not fire the `onClose` callback.\n   * @default false\n   */\n  disableEscapeKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * If `true`, the modal will not restore focus to previously focused element once\n   * modal is hidden or unmounted.\n   * @default false\n   */\n  disableRestoreFocus: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * Disable the scroll lock behavior.\n   * @default false\n   */\n  disableScrollLock: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * If `true`, the backdrop is not rendered.\n   * @default false\n   */\n  hideBackdrop: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * Always keep the children in the DOM.\n   * This prop can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Modal.\n   * @default false\n   */\n  keepMounted: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * Callback fired when the backdrop is clicked.\n   * @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.\n   */\n  onBackdropClick: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func),\n  /**\n   * Callback fired when the component requests to be closed.\n   * The `reason` parameter can optionally be used to control the response to `onClose`.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n   */\n  onClose: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func),\n  /**\n   * @ignore\n   */\n  onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool.isRequired),\n  /**\n   * The props used for each slot inside the Modal.\n   * @default {}\n   */\n  slotProps: prop_types__WEBPACK_IMPORTED_MODULE_15___default().shape({\n    backdrop: prop_types__WEBPACK_IMPORTED_MODULE_15___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_15___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object)]),\n    root: prop_types__WEBPACK_IMPORTED_MODULE_15___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_15___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object)])\n  }),\n  /**\n   * The components used for each slot inside the Modal.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: prop_types__WEBPACK_IMPORTED_MODULE_15___default().shape({\n    backdrop: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().elementType),\n    root: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().elementType)\n  })\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (ModalUnstyled);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/base/ModalUnstyled/ModalUnstyled.js?");

/***/ }),

/***/ "./node_modules/@mui/base/ModalUnstyled/modalUnstyledClasses.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@mui/base/ModalUnstyled/modalUnstyledClasses.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getModalUtilityClass\": function() { return /* binding */ getModalUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _generateUtilityClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../generateUtilityClasses */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getModalUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiModal', slot);\n}\nconst modalUnstyledClasses = (0,_generateUtilityClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiModal', ['root', 'hidden']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (modalUnstyledClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/base/ModalUnstyled/modalUnstyledClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/base/PopperUnstyled/PopperUnstyled.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@mui/base/PopperUnstyled/PopperUnstyled.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useForkRef.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useEnhancedEffect.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/ownerDocument.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/chainPropTypes.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/HTMLElementType.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/refType.js\");\n/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @popperjs/core */ \"./node_modules/@popperjs/core/lib/popper.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _composeClasses__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../composeClasses */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _Portal__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Portal */ \"./node_modules/@mui/base/Portal/Portal.js\");\n/* harmony import */ var _popperUnstyledClasses__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./popperUnstyledClasses */ \"./node_modules/@mui/base/PopperUnstyled/popperUnstyledClasses.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils */ \"./node_modules/@mui/base/utils/useSlotProps.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"anchorEl\", \"children\", \"component\", \"direction\", \"disablePortal\", \"modifiers\", \"open\", \"ownerState\", \"placement\", \"popperOptions\", \"popperRef\", \"slotProps\", \"slots\", \"TransitionProps\"],\n  _excluded2 = [\"anchorEl\", \"children\", \"container\", \"direction\", \"disablePortal\", \"keepMounted\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"style\", \"transition\", \"slotProps\", \"slots\"];\n\n\n\n\n\n\n\n\n\nfunction flipPlacement(placement, direction) {\n  if (direction === 'ltr') {\n    return placement;\n  }\n  switch (placement) {\n    case 'bottom-end':\n      return 'bottom-start';\n    case 'bottom-start':\n      return 'bottom-end';\n    case 'top-end':\n      return 'top-start';\n    case 'top-start':\n      return 'top-end';\n    default:\n      return placement;\n  }\n}\nfunction resolveAnchorEl(anchorEl) {\n  return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nfunction isHTMLElement(element) {\n  return element.nodeType !== undefined;\n}\nfunction isVirtualElement(element) {\n  return !isHTMLElement(element);\n}\nconst useUtilityClasses = () => {\n  const slots = {\n    root: ['root']\n  };\n  return (0,_composeClasses__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(slots, _popperUnstyledClasses__WEBPACK_IMPORTED_MODULE_5__.getPopperUnstyledUtilityClass, {});\n};\nconst defaultPopperOptions = {};\nconst PopperTooltip = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function PopperTooltip(props, ref) {\n  var _ref;\n  const {\n      anchorEl,\n      children,\n      component,\n      direction,\n      disablePortal,\n      modifiers,\n      open,\n      ownerState,\n      placement: initialPlacement,\n      popperOptions,\n      popperRef: popperRefProp,\n      slotProps = {},\n      slots = {},\n      TransitionProps\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const tooltipRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const ownRef = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(tooltipRef, ref);\n  const popperRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const handlePopperRef = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(popperRef, popperRefProp);\n  const handlePopperRefRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(handlePopperRef);\n  (0,_mui_utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(() => {\n    handlePopperRefRef.current = handlePopperRef;\n  }, [handlePopperRef]);\n  react__WEBPACK_IMPORTED_MODULE_2__.useImperativeHandle(popperRefProp, () => popperRef.current, []);\n  const rtlPlacement = flipPlacement(initialPlacement, direction);\n  /**\n   * placement initialized from prop but can change during lifetime if modifiers.flip.\n   * modifiers.flip is essentially a flip for controlled/uncontrolled behavior\n   */\n  const [placement, setPlacement] = react__WEBPACK_IMPORTED_MODULE_2__.useState(rtlPlacement);\n  const [resolvedAnchorElement, setResolvedAnchorElement] = react__WEBPACK_IMPORTED_MODULE_2__.useState(resolveAnchorEl(anchorEl));\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    if (popperRef.current) {\n      popperRef.current.forceUpdate();\n    }\n  });\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    if (anchorEl) {\n      setResolvedAnchorElement(resolveAnchorEl(anchorEl));\n    }\n  }, [anchorEl]);\n  (0,_mui_utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(() => {\n    if (!resolvedAnchorElement || !open) {\n      return undefined;\n    }\n    const handlePopperUpdate = data => {\n      setPlacement(data.placement);\n    };\n    if (true) {\n      if (resolvedAnchorElement && isHTMLElement(resolvedAnchorElement) && resolvedAnchorElement.nodeType === 1) {\n        const box = resolvedAnchorElement.getBoundingClientRect();\n        if ( true && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n          console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n        }\n      }\n    }\n    let popperModifiers = [{\n      name: 'preventOverflow',\n      options: {\n        altBoundary: disablePortal\n      }\n    }, {\n      name: 'flip',\n      options: {\n        altBoundary: disablePortal\n      }\n    }, {\n      name: 'onUpdate',\n      enabled: true,\n      phase: 'afterWrite',\n      fn: ({\n        state\n      }) => {\n        handlePopperUpdate(state);\n      }\n    }];\n    if (modifiers != null) {\n      popperModifiers = popperModifiers.concat(modifiers);\n    }\n    if (popperOptions && popperOptions.modifiers != null) {\n      popperModifiers = popperModifiers.concat(popperOptions.modifiers);\n    }\n    const popper = (0,_popperjs_core__WEBPACK_IMPORTED_MODULE_8__.createPopper)(resolvedAnchorElement, tooltipRef.current, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      placement: rtlPlacement\n    }, popperOptions, {\n      modifiers: popperModifiers\n    }));\n    handlePopperRefRef.current(popper);\n    return () => {\n      popper.destroy();\n      handlePopperRefRef.current(null);\n    };\n  }, [resolvedAnchorElement, disablePortal, modifiers, open, popperOptions, rtlPlacement]);\n  const childProps = {\n    placement: placement\n  };\n  if (TransitionProps !== null) {\n    childProps.TransitionProps = TransitionProps;\n  }\n  const classes = useUtilityClasses();\n  const Root = (_ref = component != null ? component : slots.root) != null ? _ref : 'div';\n  const rootProps = (0,_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({\n    elementType: Root,\n    externalSlotProps: slotProps.root,\n    externalForwardedProps: other,\n    additionalProps: {\n      role: 'tooltip',\n      ref: ownRef\n    },\n    ownerState: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, ownerState),\n    className: classes.root\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(Root, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, rootProps, {\n    children: typeof children === 'function' ? children(childProps) : children\n  }));\n});\n\n/**\n * Poppers rely on the 3rd party library [Popper.js](https://popper.js.org/docs/v2/) for positioning.\n *\n * Demos:\n *\n * - [Unstyled Popper](https://mui.com/base/react-popper/)\n *\n * API:\n *\n * - [PopperUnstyled API](https://mui.com/base/api/popper-unstyled/)\n */\nconst PopperUnstyled = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function PopperUnstyled(props, ref) {\n  const {\n      anchorEl,\n      children,\n      container: containerProp,\n      direction = 'ltr',\n      disablePortal = false,\n      keepMounted = false,\n      modifiers,\n      open,\n      placement = 'bottom',\n      popperOptions = defaultPopperOptions,\n      popperRef,\n      style,\n      transition = false,\n      slotProps = {},\n      slots = {}\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded2);\n  const [exited, setExited] = react__WEBPACK_IMPORTED_MODULE_2__.useState(true);\n  const handleEnter = () => {\n    setExited(false);\n  };\n  const handleExited = () => {\n    setExited(true);\n  };\n  if (!keepMounted && !open && (!transition || exited)) {\n    return null;\n  }\n\n  // If the container prop is provided, use that\n  // If the anchorEl prop is provided, use its parent body element as the container\n  // If neither are provided let the Modal take care of choosing the container\n  let container;\n  if (containerProp) {\n    container = containerProp;\n  } else if (anchorEl) {\n    const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n    container = resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) ? (0,_mui_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(resolvedAnchorEl).body : (0,_mui_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(null).body;\n  }\n  const display = !open && keepMounted && (!transition || exited) ? 'none' : undefined;\n  const transitionProps = transition ? {\n    in: open,\n    onEnter: handleEnter,\n    onExited: handleExited\n  } : undefined;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_Portal__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n    disablePortal: disablePortal,\n    container: container,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(PopperTooltip, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      anchorEl: anchorEl,\n      direction: direction,\n      disablePortal: disablePortal,\n      modifiers: modifiers,\n      ref: ref,\n      open: transition ? !exited : open,\n      placement: placement,\n      popperOptions: popperOptions,\n      popperRef: popperRef,\n      slotProps: slotProps,\n      slots: slots\n    }, other, {\n      style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n        // Prevents scroll issue, waiting for Popper.js to add this style once initiated.\n        position: 'fixed',\n        // Fix Popper.js display issue\n        top: 0,\n        left: 0,\n        display\n      }, style),\n      TransitionProps: transitionProps,\n      children: children\n    }))\n  });\n});\n true ? PopperUnstyled.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n   * or a function that returns either.\n   * It's used to set the position of the popper.\n   * The return value will passed as the reference object of the Popper instance.\n   */\n  anchorEl: (0,_mui_utils__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([_mui_utils__WEBPACK_IMPORTED_MODULE_14__[\"default\"], (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func)]), props => {\n    if (props.open) {\n      const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n      if (resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) && resolvedAnchorEl.nodeType === 1) {\n        const box = resolvedAnchorEl.getBoundingClientRect();\n        if ( true && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n          return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n        }\n      } else if (!resolvedAnchorEl || typeof resolvedAnchorEl.getBoundingClientRect !== 'function' || isVirtualElement(resolvedAnchorEl) && resolvedAnchorEl.contextElement != null && resolvedAnchorEl.contextElement.nodeType !== 1) {\n        return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'It should be an HTML element instance or a virtualElement ', '(https://popper.js.org/docs/v2/virtual-elements/).'].join('\\n'));\n      }\n    }\n    return null;\n  }),\n  /**\n   * Popper render function or node.\n   */\n  children: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_13___default().node), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func)]),\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([_mui_utils__WEBPACK_IMPORTED_MODULE_14__[\"default\"], (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func)]),\n  /**\n   * Direction of the text.\n   * @default 'ltr'\n   */\n  direction: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['ltr', 'rtl']),\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * Always keep the children in the DOM.\n   * This prop can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Popper.\n   * @default false\n   */\n  keepMounted: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * Popper.js is based on a \"plugin-like\" architecture,\n   * most of its features are fully encapsulated \"modifiers\".\n   *\n   * A modifier is a function that is called each time Popper.js needs to\n   * compute the position of the popper.\n   * For this reason, modifiers should be very performant to avoid bottlenecks.\n   * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n   */\n  modifiers: prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_13___default().shape({\n    data: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object),\n    effect: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func),\n    enabled: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n    fn: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func),\n    name: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().any),\n    options: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object),\n    phase: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n    requires: prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)),\n    requiresIfExists: prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_13___default().string))\n  })),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool.isRequired),\n  /**\n   * Popper placement.\n   * @default 'bottom'\n   */\n  placement: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n  /**\n   * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n   * @default {}\n   */\n  popperOptions: prop_types__WEBPACK_IMPORTED_MODULE_13___default().shape({\n    modifiers: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().array),\n    onFirstUpdate: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func),\n    placement: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n    strategy: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['absolute', 'fixed'])\n  }),\n  /**\n   * A ref that points to the used popper instance.\n   */\n  popperRef: _mui_utils__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n  /**\n   * The props used for each slot inside the Popper.\n   * @default {}\n   */\n  slotProps: prop_types__WEBPACK_IMPORTED_MODULE_13___default().shape({\n    root: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_13___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object)])\n  }),\n  /**\n   * The components used for each slot inside the Popper.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: prop_types__WEBPACK_IMPORTED_MODULE_13___default().shape({\n    root: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().elementType)\n  }),\n  /**\n   * @ignore\n   */\n  style: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object),\n  /**\n   * Help supporting a react-transition-group/Transition component.\n   * @default false\n   */\n  transition: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (PopperUnstyled);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/base/PopperUnstyled/PopperUnstyled.js?");

/***/ }),

/***/ "./node_modules/@mui/base/PopperUnstyled/popperUnstyledClasses.js":
/*!************************************************************************!*\
  !*** ./node_modules/@mui/base/PopperUnstyled/popperUnstyledClasses.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getPopperUnstyledUtilityClass\": function() { return /* binding */ getPopperUnstyledUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n/* harmony import */ var _generateUtilityClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../generateUtilityClasses */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n\n\nfunction getPopperUnstyledUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiPopperUnstyled', slot);\n}\nconst popperUnstyledClasses = (0,_generateUtilityClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiPopperUnstyled', ['root']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (popperUnstyledClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/base/PopperUnstyled/popperUnstyledClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/base/Portal/Portal.js":
/*!*************************************************!*\
  !*** ./node_modules/@mui/base/Portal/Portal.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useForkRef.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useEnhancedEffect.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/setRef.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/HTMLElementType.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/exactProp.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n\nfunction getContainer(container) {\n  return typeof container === 'function' ? container() : container;\n}\n\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n *\n * Demos:\n *\n * - [Portal](https://mui.com/base/react-portal/)\n *\n * API:\n *\n * - [Portal API](https://mui.com/base/api/portal/)\n */\nconst Portal = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function Portal(props, ref) {\n  const {\n    children,\n    container,\n    disablePortal = false\n  } = props;\n  const [mountNode, setMountNode] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n  // @ts-expect-error TODO upstream fix\n  const handleRef = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(children) ? children.ref : null, ref);\n  (0,_mui_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(() => {\n    if (!disablePortal) {\n      setMountNode(getContainer(container) || document.body);\n    }\n  }, [container, disablePortal]);\n  (0,_mui_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(() => {\n    if (mountNode && !disablePortal) {\n      (0,_mui_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ref, mountNode);\n      return () => {\n        (0,_mui_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ref, null);\n      };\n    }\n    return undefined;\n  }, [ref, mountNode, disablePortal]);\n  if (disablePortal) {\n    if ( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(children)) {\n      const newProps = {\n        ref: handleRef\n      };\n      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(children, newProps);\n    }\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: children\n    });\n  }\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: mountNode ? /*#__PURE__*/react_dom__WEBPACK_IMPORTED_MODULE_1__.createPortal(children, mountNode) : mountNode\n  });\n});\n true ? Portal.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * The children to render into the `container`.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().node),\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: prop_types__WEBPACK_IMPORTED_MODULE_6___default().oneOfType([_mui_utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"], (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func)]),\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().bool)\n} : 0;\nif (true) {\n  // eslint-disable-next-line\n  Portal['propTypes' + ''] = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(Portal.propTypes);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (Portal);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/base/Portal/Portal.js?");

/***/ }),

/***/ "./node_modules/@mui/base/TextareaAutosize/TextareaAutosize.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@mui/base/TextareaAutosize/TextareaAutosize.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useForkRef.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/ownerWindow.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/debounce.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useEnhancedEffect.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"onChange\", \"maxRows\", \"minRows\", \"style\", \"value\"];\n\n\n\n\n\n\nfunction getStyleValue(computedStyle, property) {\n  return parseInt(computedStyle[property], 10) || 0;\n}\nconst styles = {\n  shadow: {\n    // Visibility needed to hide the extra text area on iPads\n    visibility: 'hidden',\n    // Remove from the content flow\n    position: 'absolute',\n    // Ignore the scrollbar width\n    overflow: 'hidden',\n    height: 0,\n    top: 0,\n    left: 0,\n    // Create a new layer, increase the isolation of the computed values\n    transform: 'translateZ(0)'\n  }\n};\nfunction isEmpty(obj) {\n  return obj === undefined || obj === null || Object.keys(obj).length === 0;\n}\nconst TextareaAutosize = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function TextareaAutosize(props, ref) {\n  const {\n      onChange,\n      maxRows,\n      minRows = 1,\n      style,\n      value\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const {\n    current: isControlled\n  } = react__WEBPACK_IMPORTED_MODULE_2__.useRef(value != null);\n  const inputRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const handleRef = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ref, inputRef);\n  const shadowRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const renders = react__WEBPACK_IMPORTED_MODULE_2__.useRef(0);\n  const [state, setState] = react__WEBPACK_IMPORTED_MODULE_2__.useState({});\n  const getUpdatedState = react__WEBPACK_IMPORTED_MODULE_2__.useCallback(() => {\n    const input = inputRef.current;\n    const containerWindow = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(input);\n    const computedStyle = containerWindow.getComputedStyle(input);\n\n    // If input's width is shrunk and it's not visible, don't sync height.\n    if (computedStyle.width === '0px') {\n      return {};\n    }\n    const inputShallow = shadowRef.current;\n    inputShallow.style.width = computedStyle.width;\n    inputShallow.value = input.value || props.placeholder || 'x';\n    if (inputShallow.value.slice(-1) === '\\n') {\n      // Certain fonts which overflow the line height will cause the textarea\n      // to report a different scrollHeight depending on whether the last line\n      // is empty. Make it non-empty to avoid this issue.\n      inputShallow.value += ' ';\n    }\n    const boxSizing = computedStyle['box-sizing'];\n    const padding = getStyleValue(computedStyle, 'padding-bottom') + getStyleValue(computedStyle, 'padding-top');\n    const border = getStyleValue(computedStyle, 'border-bottom-width') + getStyleValue(computedStyle, 'border-top-width');\n\n    // The height of the inner content\n    const innerHeight = inputShallow.scrollHeight;\n\n    // Measure height of a textarea with a single row\n    inputShallow.value = 'x';\n    const singleRowHeight = inputShallow.scrollHeight;\n\n    // The height of the outer content\n    let outerHeight = innerHeight;\n    if (minRows) {\n      outerHeight = Math.max(Number(minRows) * singleRowHeight, outerHeight);\n    }\n    if (maxRows) {\n      outerHeight = Math.min(Number(maxRows) * singleRowHeight, outerHeight);\n    }\n    outerHeight = Math.max(outerHeight, singleRowHeight);\n\n    // Take the box sizing into account for applying this value as a style.\n    const outerHeightStyle = outerHeight + (boxSizing === 'border-box' ? padding + border : 0);\n    const overflow = Math.abs(outerHeight - innerHeight) <= 1;\n    return {\n      outerHeightStyle,\n      overflow\n    };\n  }, [maxRows, minRows, props.placeholder]);\n  const updateState = (prevState, newState) => {\n    const {\n      outerHeightStyle,\n      overflow\n    } = newState;\n    // Need a large enough difference to update the height.\n    // This prevents infinite rendering loop.\n    if (renders.current < 20 && (outerHeightStyle > 0 && Math.abs((prevState.outerHeightStyle || 0) - outerHeightStyle) > 1 || prevState.overflow !== overflow)) {\n      renders.current += 1;\n      return {\n        overflow,\n        outerHeightStyle\n      };\n    }\n    if (true) {\n      if (renders.current === 20) {\n        console.error(['MUI: Too many re-renders. The layout is unstable.', 'TextareaAutosize limits the number of renders to prevent an infinite loop.'].join('\\n'));\n      }\n    }\n    return prevState;\n  };\n  const syncHeight = react__WEBPACK_IMPORTED_MODULE_2__.useCallback(() => {\n    const newState = getUpdatedState();\n    if (isEmpty(newState)) {\n      return;\n    }\n    setState(prevState => {\n      return updateState(prevState, newState);\n    });\n  }, [getUpdatedState]);\n  const syncHeightWithFlushSycn = () => {\n    const newState = getUpdatedState();\n    if (isEmpty(newState)) {\n      return;\n    }\n\n    // In React 18, state updates in a ResizeObserver's callback are happening after the paint which causes flickering\n    // when doing some visual updates in it. Using flushSync ensures that the dom will be painted after the states updates happen\n    // Related issue - https://github.com/facebook/react/issues/24331\n    (0,react_dom__WEBPACK_IMPORTED_MODULE_3__.flushSync)(() => {\n      setState(prevState => {\n        return updateState(prevState, newState);\n      });\n    });\n  };\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    const handleResize = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(() => {\n      renders.current = 0;\n\n      // If the TextareaAutosize component is replaced by Suspense with a fallback, the last\n      // ResizeObserver's handler that runs because of the change in the layout is trying to\n      // access a dom node that is no longer there (as the fallback component is being shown instead).\n      // See https://github.com/mui/material-ui/issues/32640\n      if (inputRef.current) {\n        syncHeightWithFlushSycn();\n      }\n    });\n    const containerWindow = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(inputRef.current);\n    containerWindow.addEventListener('resize', handleResize);\n    let resizeObserver;\n    if (typeof ResizeObserver !== 'undefined') {\n      resizeObserver = new ResizeObserver(handleResize);\n      resizeObserver.observe(inputRef.current);\n    }\n    return () => {\n      handleResize.clear();\n      containerWindow.removeEventListener('resize', handleResize);\n      if (resizeObserver) {\n        resizeObserver.disconnect();\n      }\n    };\n  });\n  (0,_mui_utils__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(() => {\n    syncHeight();\n  });\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    renders.current = 0;\n  }, [value]);\n  const handleChange = event => {\n    renders.current = 0;\n    if (!isControlled) {\n      syncHeight();\n    }\n    if (onChange) {\n      onChange(event);\n    }\n  };\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"textarea\", (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      value: value,\n      onChange: handleChange,\n      ref: handleRef\n      // Apply the rows prop to get a \"correct\" first SSR paint\n      ,\n      rows: minRows,\n      style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n        height: state.outerHeightStyle,\n        // Need a large enough difference to allow scrolling.\n        // This prevents infinite rendering loop.\n        overflow: state.overflow ? 'hidden' : null\n      }, style)\n    }, other)), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"textarea\", {\n      \"aria-hidden\": true,\n      className: props.className,\n      readOnly: true,\n      ref: shadowRef,\n      tabIndex: -1,\n      style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, styles.shadow, style, {\n        padding: 0\n      })\n    })]\n  });\n});\n true ? TextareaAutosize.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string),\n  /**\n   * Maximum number of rows to display.\n   */\n  maxRows: prop_types__WEBPACK_IMPORTED_MODULE_9___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_9___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string)]),\n  /**\n   * Minimum number of rows to display.\n   * @default 1\n   */\n  minRows: prop_types__WEBPACK_IMPORTED_MODULE_9___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_9___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string)]),\n  /**\n   * @ignore\n   */\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func),\n  /**\n   * @ignore\n   */\n  placeholder: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string),\n  /**\n   * @ignore\n   */\n  style: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object),\n  /**\n   * @ignore\n   */\n  value: prop_types__WEBPACK_IMPORTED_MODULE_9___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_9___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_9___default().string)), (prop_types__WEBPACK_IMPORTED_MODULE_9___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (TextareaAutosize);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/base/TextareaAutosize/TextareaAutosize.js?");

/***/ }),

/***/ "./node_modules/@mui/base/utils/appendOwnerState.js":
/*!**********************************************************!*\
  !*** ./node_modules/@mui/base/utils/appendOwnerState.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ appendOwnerState; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _isHostComponent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isHostComponent */ \"./node_modules/@mui/base/utils/isHostComponent.js\");\n\n\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nfunction appendOwnerState(elementType, otherProps, ownerState) {\n  if (elementType === undefined || (0,_isHostComponent__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(elementType)) {\n    return otherProps;\n  }\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, otherProps, {\n    ownerState: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, otherProps.ownerState, ownerState)\n  });\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/base/utils/appendOwnerState.js?");

/***/ }),

/***/ "./node_modules/@mui/base/utils/extractEventHandlers.js":
/*!**************************************************************!*\
  !*** ./node_modules/@mui/base/utils/extractEventHandlers.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ extractEventHandlers; }\n/* harmony export */ });\n/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nfunction extractEventHandlers(object, excludeKeys = []) {\n  if (object === undefined) {\n    return {};\n  }\n  const result = {};\n  Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n    result[prop] = object[prop];\n  });\n  return result;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/base/utils/extractEventHandlers.js?");

/***/ }),

/***/ "./node_modules/@mui/base/utils/isHostComponent.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/base/utils/isHostComponent.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nfunction isHostComponent(element) {\n  return typeof element === 'string';\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (isHostComponent);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/base/utils/isHostComponent.js?");

/***/ }),

/***/ "./node_modules/@mui/base/utils/mergeSlotProps.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/base/utils/mergeSlotProps.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ mergeSlotProps; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _extractEventHandlers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./extractEventHandlers */ \"./node_modules/@mui/base/utils/extractEventHandlers.js\");\n/* harmony import */ var _omitEventHandlers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./omitEventHandlers */ \"./node_modules/@mui/base/utils/omitEventHandlers.js\");\n\n\n\n\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on an unstyled component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nfunction mergeSlotProps(parameters) {\n  const {\n    getSlotProps,\n    additionalProps,\n    externalSlotProps,\n    externalForwardedProps,\n    className\n  } = parameters;\n  if (!getSlotProps) {\n    // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n    // so we can simply merge all the props without having to worry about extracting event handlers.\n    const joinedClasses = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className, className, additionalProps == null ? void 0 : additionalProps.className);\n    const mergedStyle = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n    const props = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, additionalProps, externalForwardedProps, externalSlotProps);\n    if (joinedClasses.length > 0) {\n      props.className = joinedClasses;\n    }\n    if (Object.keys(mergedStyle).length > 0) {\n      props.style = mergedStyle;\n    }\n    return {\n      props,\n      internalRef: undefined\n    };\n  }\n\n  // In this case, getSlotProps is responsible for calling the external event handlers.\n  // We don't need to include them in the merged props because of this.\n\n  const eventHandlers = (0,_extractEventHandlers__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, externalForwardedProps, externalSlotProps));\n  const componentsPropsWithoutEventHandlers = (0,_omitEventHandlers__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(externalSlotProps);\n  const otherPropsWithoutEventHandlers = (0,_omitEventHandlers__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(externalForwardedProps);\n  const internalSlotProps = getSlotProps(eventHandlers);\n\n  // The order of classes is important here.\n  // Emotion (that we use in libraries consuming MUI Base) depends on this order\n  // to properly override style. It requires the most important classes to be last\n  // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n  const joinedClasses = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(internalSlotProps == null ? void 0 : internalSlotProps.className, additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n  const mergedStyle = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, internalSlotProps == null ? void 0 : internalSlotProps.style, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n  const props = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, internalSlotProps, additionalProps, otherPropsWithoutEventHandlers, componentsPropsWithoutEventHandlers);\n  if (joinedClasses.length > 0) {\n    props.className = joinedClasses;\n  }\n  if (Object.keys(mergedStyle).length > 0) {\n    props.style = mergedStyle;\n  }\n  return {\n    props,\n    internalRef: internalSlotProps.ref\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/base/utils/mergeSlotProps.js?");

/***/ }),

/***/ "./node_modules/@mui/base/utils/omitEventHandlers.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/base/utils/omitEventHandlers.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ omitEventHandlers; }\n/* harmony export */ });\n/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nfunction omitEventHandlers(object) {\n  if (object === undefined) {\n    return {};\n  }\n  const result = {};\n  Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n    result[prop] = object[prop];\n  });\n  return result;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/base/utils/omitEventHandlers.js?");

/***/ }),

/***/ "./node_modules/@mui/base/utils/resolveComponentProps.js":
/*!***************************************************************!*\
  !*** ./node_modules/@mui/base/utils/resolveComponentProps.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ resolveComponentProps; }\n/* harmony export */ });\n/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nfunction resolveComponentProps(componentProps, ownerState) {\n  if (typeof componentProps === 'function') {\n    return componentProps(ownerState);\n  }\n  return componentProps;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/base/utils/resolveComponentProps.js?");

/***/ }),

/***/ "./node_modules/@mui/base/utils/useSlotProps.js":
/*!******************************************************!*\
  !*** ./node_modules/@mui/base/utils/useSlotProps.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ useSlotProps; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useForkRef.js\");\n/* harmony import */ var _appendOwnerState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./appendOwnerState */ \"./node_modules/@mui/base/utils/appendOwnerState.js\");\n/* harmony import */ var _mergeSlotProps__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mergeSlotProps */ \"./node_modules/@mui/base/utils/mergeSlotProps.js\");\n/* harmony import */ var _resolveComponentProps__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./resolveComponentProps */ \"./node_modules/@mui/base/utils/resolveComponentProps.js\");\n\n\nconst _excluded = [\"elementType\", \"externalSlotProps\", \"ownerState\"];\n\n\n\n\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nfunction useSlotProps(parameters) {\n  var _parameters$additiona;\n  const {\n      elementType,\n      externalSlotProps,\n      ownerState\n    } = parameters,\n    rest = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(parameters, _excluded);\n  const resolvedComponentsProps = (0,_resolveComponentProps__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(externalSlotProps, ownerState);\n  const {\n    props: mergedProps,\n    internalRef\n  } = (0,_mergeSlotProps__WEBPACK_IMPORTED_MODULE_3__[\"default\"])((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, rest, {\n    externalSlotProps: resolvedComponentsProps\n  }));\n  const ref = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, (_parameters$additiona = parameters.additionalProps) == null ? void 0 : _parameters$additiona.ref);\n  const props = (0,_appendOwnerState__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(elementType, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, mergedProps, {\n    ref\n  }), ownerState);\n  return props;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/base/utils/useSlotProps.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/CheckBox.js":
/*!******************************************************!*\
  !*** ./node_modules/@mui/icons-material/CheckBox.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckBox');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/CheckBox.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/CheckBoxOutlineBlank.js":
/*!******************************************************************!*\
  !*** ./node_modules/@mui/icons-material/CheckBoxOutlineBlank.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'CheckBoxOutlineBlank');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/CheckBoxOutlineBlank.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/Clear.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/icons-material/Clear.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Clear');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/Clear.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/Close.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/icons-material/Close.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/Close.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/CloudDownload.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/icons-material/CloudDownload.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM17 13l-5 5-5-5h3V9h4v4h3z\"\n}), 'CloudDownload');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/CloudDownload.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/Delete.js":
/*!****************************************************!*\
  !*** ./node_modules/@mui/icons-material/Delete.js ***!
  \****************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'Delete');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/Delete.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/ExpandMore.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/icons-material/ExpandMore.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n}), 'ExpandMore');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/ExpandMore.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/FileDownload.js":
/*!**********************************************************!*\
  !*** ./node_modules/@mui/icons-material/FileDownload.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z\"\n}), 'FileDownload');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/FileDownload.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/FilterList.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/icons-material/FilterList.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\"\n}), 'FilterList');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/FilterList.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/Help.js":
/*!**************************************************!*\
  !*** ./node_modules/@mui/icons-material/Help.js ***!
  \**************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z\"\n}), 'Help');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/Help.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/KeyboardArrowLeft.js":
/*!***************************************************************!*\
  !*** ./node_modules/@mui/icons-material/KeyboardArrowLeft.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M15.41 16.59 10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\"\n}), 'KeyboardArrowLeft');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/KeyboardArrowLeft.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/KeyboardArrowRight.js":
/*!****************************************************************!*\
  !*** ./node_modules/@mui/icons-material/KeyboardArrowRight.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'KeyboardArrowRight');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/KeyboardArrowRight.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/KeyboardDoubleArrowLeft.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@mui/icons-material/KeyboardDoubleArrowLeft.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)([/*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M17.59 18 19 16.59 14.42 12 19 7.41 17.59 6l-6 6z\"\n}, \"0\"), /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"m11 18 1.41-1.41L7.83 12l4.58-4.59L11 6l-6 6z\"\n}, \"1\")], 'KeyboardDoubleArrowLeft');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/KeyboardDoubleArrowLeft.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/KeyboardDoubleArrowRight.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@mui/icons-material/KeyboardDoubleArrowRight.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)([/*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M6.41 6 5 7.41 9.58 12 5 16.59 6.41 18l6-6z\"\n}, \"0\"), /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"m13 6-1.41 1.41L16.17 12l-4.58 4.59L13 18l6-6z\"\n}, \"1\")], 'KeyboardDoubleArrowRight');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/KeyboardDoubleArrowRight.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/Print.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/icons-material/Print.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z\"\n}), 'Print');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/Print.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/Remove.js":
/*!****************************************************!*\
  !*** ./node_modules/@mui/icons-material/Remove.js ***!
  \****************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M19 13H5v-2h14v2z\"\n}), 'Remove');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/Remove.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/Search.js":
/*!****************************************************!*\
  !*** ./node_modules/@mui/icons-material/Search.js ***!
  \****************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\n}), 'Search');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/Search.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/ViewColumn.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/icons-material/ViewColumn.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@mui/icons-material/utils/createSvgIcon.js\"));\nvar _jsxRuntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z\"\n}), 'ViewColumn');\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/ViewColumn.js?");

/***/ }),

/***/ "./node_modules/@mui/icons-material/utils/createSvgIcon.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@mui/icons-material/utils/createSvgIcon.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n  enumerable: true,\n  get: function () {\n    return _utils.createSvgIcon;\n  }\n}));\nvar _utils = __webpack_require__(/*! @mui/material/utils */ \"./node_modules/@mui/material/utils/index.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/icons-material/utils/createSvgIcon.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Accordion/Accordion.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/material/Accordion/Accordion.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-is */ \"./node_modules/@mui/material/node_modules/react-is/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/chainPropTypes.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _Collapse__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Collapse */ \"./node_modules/@mui/material/Collapse/Collapse.js\");\n/* harmony import */ var _Paper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Paper */ \"./node_modules/@mui/material/Paper/Paper.js\");\n/* harmony import */ var _AccordionContext__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./AccordionContext */ \"./node_modules/@mui/material/Accordion/AccordionContext.js\");\n/* harmony import */ var _utils_useControlled__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/useControlled */ \"./node_modules/@mui/material/utils/useControlled.js\");\n/* harmony import */ var _accordionClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./accordionClasses */ \"./node_modules/@mui/material/Accordion/accordionClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"children\", \"className\", \"defaultExpanded\", \"disabled\", \"disableGutters\", \"expanded\", \"onChange\", \"square\", \"TransitionComponent\", \"TransitionProps\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    square,\n    expanded,\n    disabled,\n    disableGutters\n  } = ownerState;\n  const slots = {\n    root: ['root', !square && 'rounded', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n    region: ['region']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _accordionClasses__WEBPACK_IMPORTED_MODULE_7__.getAccordionUtilityClass, classes);\n};\nconst AccordionRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_Paper__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n  name: 'MuiAccordion',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${_accordionClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].region}`]: styles.region\n    }, styles.root, !ownerState.square && styles.rounded, !ownerState.disableGutters && styles.gutters];\n  }\n})(({\n  theme\n}) => {\n  const transition = {\n    duration: theme.transitions.duration.shortest\n  };\n  return {\n    position: 'relative',\n    transition: theme.transitions.create(['margin'], transition),\n    overflowAnchor: 'none',\n    // Keep the same scrolling position\n    '&:before': {\n      position: 'absolute',\n      left: 0,\n      top: -1,\n      right: 0,\n      height: 1,\n      content: '\"\"',\n      opacity: 1,\n      backgroundColor: (theme.vars || theme).palette.divider,\n      transition: theme.transitions.create(['opacity', 'background-color'], transition)\n    },\n    '&:first-of-type': {\n      '&:before': {\n        display: 'none'\n      }\n    },\n    [`&.${_accordionClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].expanded}`]: {\n      '&:before': {\n        opacity: 0\n      },\n      '&:first-of-type': {\n        marginTop: 0\n      },\n      '&:last-of-type': {\n        marginBottom: 0\n      },\n      '& + &': {\n        '&:before': {\n          display: 'none'\n        }\n      }\n    },\n    [`&.${_accordionClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n    }\n  };\n}, ({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, !ownerState.square && {\n  borderRadius: 0,\n  '&:first-of-type': {\n    borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,\n    borderTopRightRadius: (theme.vars || theme).shape.borderRadius\n  },\n  '&:last-of-type': {\n    borderBottomLeftRadius: (theme.vars || theme).shape.borderRadius,\n    borderBottomRightRadius: (theme.vars || theme).shape.borderRadius,\n    // Fix a rendering issue on Edge\n    '@supports (-ms-ime-align: auto)': {\n      borderBottomLeftRadius: 0,\n      borderBottomRightRadius: 0\n    }\n  }\n}, !ownerState.disableGutters && {\n  [`&.${_accordionClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].expanded}`]: {\n    margin: '16px 0'\n  }\n}));\nconst Accordion = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Accordion(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__[\"default\"])({\n    props: inProps,\n    name: 'MuiAccordion'\n  });\n  const {\n      children: childrenProp,\n      className,\n      defaultExpanded = false,\n      disabled = false,\n      disableGutters = false,\n      expanded: expandedProp,\n      onChange,\n      square = false,\n      TransitionComponent = _Collapse__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n      TransitionProps\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const [expanded, setExpandedState] = (0,_utils_useControlled__WEBPACK_IMPORTED_MODULE_12__[\"default\"])({\n    controlled: expandedProp,\n    default: defaultExpanded,\n    name: 'Accordion',\n    state: 'expanded'\n  });\n  const handleChange = react__WEBPACK_IMPORTED_MODULE_2__.useCallback(event => {\n    setExpandedState(!expanded);\n    if (onChange) {\n      onChange(event, !expanded);\n    }\n  }, [expanded, onChange, setExpandedState]);\n  const [summary, ...children] = react__WEBPACK_IMPORTED_MODULE_2__.Children.toArray(childrenProp);\n  const contextValue = react__WEBPACK_IMPORTED_MODULE_2__.useMemo(() => ({\n    expanded,\n    disabled,\n    disableGutters,\n    toggle: handleChange\n  }), [expanded, disabled, disableGutters, handleChange]);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    square,\n    disabled,\n    disableGutters,\n    expanded\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(AccordionRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    square: square\n  }, other, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_AccordionContext__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Provider, {\n      value: contextValue,\n      children: summary\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(TransitionComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      in: expanded,\n      timeout: \"auto\"\n    }, TransitionProps, {\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"div\", {\n        \"aria-labelledby\": summary.props.id,\n        id: summary.props['aria-controls'],\n        role: \"region\",\n        className: classes.region,\n        children: children\n      })\n    }))]\n  }));\n});\n true ? Accordion.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: (0,_mui_utils__WEBPACK_IMPORTED_MODULE_14__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_15___default().node.isRequired), props => {\n    const summary = react__WEBPACK_IMPORTED_MODULE_2__.Children.toArray(props.children)[0];\n    if ((0,react_is__WEBPACK_IMPORTED_MODULE_3__.isFragment)(summary)) {\n      return new Error(\"MUI: The Accordion doesn't accept a Fragment as a child. \" + 'Consider providing an array instead.');\n    }\n    if (! /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.isValidElement(summary)) {\n      return new Error('MUI: Expected the first child of Accordion to be a valid element.');\n    }\n    return null;\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().string),\n  /**\n   * If `true`, expands the accordion by default.\n   * @default false\n   */\n  defaultExpanded: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * If `true`, it removes the margin between two expanded accordion items and the increase of height.\n   * @default false\n   */\n  disableGutters: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * If `true`, expands the accordion, otherwise collapse it.\n   * Setting this prop enables control over the accordion.\n   */\n  expanded: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * Callback fired when the expand/collapse state is changed.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n   * @param {boolean} expanded The `expanded` state of the accordion.\n   */\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func),\n  /**\n   * If `true`, rounded corners are disabled.\n   * @default false\n   */\n  square: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_15___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_15___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_15___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_15___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object)]),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Collapse\n   */\n  TransitionComponent: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().elementType),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n   */\n  TransitionProps: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object)\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Accordion);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Accordion/Accordion.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Accordion/AccordionContext.js":
/*!******************************************************************!*\
  !*** ./node_modules/@mui/material/Accordion/AccordionContext.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/**\n * @ignore - internal component.\n * @type {React.Context<{} | {expanded: boolean, disabled: boolean, toggle: () => void}>}\n */\nconst AccordionContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext({});\nif (true) {\n  AccordionContext.displayName = 'AccordionContext';\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (AccordionContext);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Accordion/AccordionContext.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Accordion/accordionClasses.js":
/*!******************************************************************!*\
  !*** ./node_modules/@mui/material/Accordion/accordionClasses.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getAccordionUtilityClass\": function() { return /* binding */ getAccordionUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getAccordionUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiAccordion', slot);\n}\nconst accordionClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiAccordion', ['root', 'rounded', 'expanded', 'disabled', 'gutters', 'region']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (accordionClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Accordion/accordionClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/AccordionDetails/AccordionDetails.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@mui/material/AccordionDetails/AccordionDetails.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _accordionDetailsClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./accordionDetailsClasses */ \"./node_modules/@mui/material/AccordionDetails/accordionDetailsClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"className\"];\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _accordionDetailsClasses__WEBPACK_IMPORTED_MODULE_6__.getAccordionDetailsUtilityClass, classes);\n};\nconst AccordionDetailsRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('div', {\n  name: 'MuiAccordionDetails',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(({\n  theme\n}) => ({\n  padding: theme.spacing(1, 2, 2)\n}));\nconst AccordionDetails = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function AccordionDetails(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n    props: inProps,\n    name: 'MuiAccordionDetails'\n  });\n  const {\n      className\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AccordionDetailsRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    ref: ref,\n    ownerState: ownerState\n  }, other));\n});\n true ? AccordionDetails.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_9___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_9___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_9___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_9___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_9___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (AccordionDetails);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/AccordionDetails/AccordionDetails.js?");

/***/ }),

/***/ "./node_modules/@mui/material/AccordionDetails/accordionDetailsClasses.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@mui/material/AccordionDetails/accordionDetailsClasses.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getAccordionDetailsUtilityClass\": function() { return /* binding */ getAccordionDetailsUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getAccordionDetailsUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiAccordionDetails', slot);\n}\nconst accordionDetailsClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiAccordionDetails', ['root']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (accordionDetailsClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/AccordionDetails/accordionDetailsClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/AccordionSummary/AccordionSummary.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@mui/material/AccordionSummary/AccordionSummary.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _ButtonBase__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ButtonBase */ \"./node_modules/@mui/material/ButtonBase/ButtonBase.js\");\n/* harmony import */ var _Accordion_AccordionContext__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Accordion/AccordionContext */ \"./node_modules/@mui/material/Accordion/AccordionContext.js\");\n/* harmony import */ var _accordionSummaryClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./accordionSummaryClasses */ \"./node_modules/@mui/material/AccordionSummary/accordionSummaryClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"children\", \"className\", \"expandIcon\", \"focusVisibleClassName\", \"onClick\"];\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    expanded,\n    disabled,\n    disableGutters\n  } = ownerState;\n  const slots = {\n    root: ['root', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n    focusVisible: ['focusVisible'],\n    content: ['content', expanded && 'expanded', !disableGutters && 'contentGutters'],\n    expandIconWrapper: ['expandIconWrapper', expanded && 'expanded']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _accordionSummaryClasses__WEBPACK_IMPORTED_MODULE_6__.getAccordionSummaryUtilityClass, classes);\n};\nconst AccordionSummaryRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_ButtonBase__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n  name: 'MuiAccordionSummary',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(({\n  theme,\n  ownerState\n}) => {\n  const transition = {\n    duration: theme.transitions.duration.shortest\n  };\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    display: 'flex',\n    minHeight: 48,\n    padding: theme.spacing(0, 2),\n    transition: theme.transitions.create(['min-height', 'background-color'], transition),\n    [`&.${_accordionSummaryClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].focusVisible}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.focus\n    },\n    [`&.${_accordionSummaryClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].disabled}`]: {\n      opacity: (theme.vars || theme).palette.action.disabledOpacity\n    },\n    [`&:hover:not(.${_accordionSummaryClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].disabled})`]: {\n      cursor: 'pointer'\n    }\n  }, !ownerState.disableGutters && {\n    [`&.${_accordionSummaryClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].expanded}`]: {\n      minHeight: 64\n    }\n  });\n});\nconst AccordionSummaryContent = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('div', {\n  name: 'MuiAccordionSummary',\n  slot: 'Content',\n  overridesResolver: (props, styles) => styles.content\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  display: 'flex',\n  flexGrow: 1,\n  margin: '12px 0'\n}, !ownerState.disableGutters && {\n  transition: theme.transitions.create(['margin'], {\n    duration: theme.transitions.duration.shortest\n  }),\n  [`&.${_accordionSummaryClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].expanded}`]: {\n    margin: '20px 0'\n  }\n}));\nconst AccordionSummaryExpandIconWrapper = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('div', {\n  name: 'MuiAccordionSummary',\n  slot: 'ExpandIconWrapper',\n  overridesResolver: (props, styles) => styles.expandIconWrapper\n})(({\n  theme\n}) => ({\n  display: 'flex',\n  color: (theme.vars || theme).palette.action.active,\n  transform: 'rotate(0deg)',\n  transition: theme.transitions.create('transform', {\n    duration: theme.transitions.duration.shortest\n  }),\n  [`&.${_accordionSummaryClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].expanded}`]: {\n    transform: 'rotate(180deg)'\n  }\n}));\nconst AccordionSummary = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function AccordionSummary(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({\n    props: inProps,\n    name: 'MuiAccordionSummary'\n  });\n  const {\n      children,\n      className,\n      expandIcon,\n      focusVisibleClassName,\n      onClick\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const {\n    disabled = false,\n    disableGutters,\n    expanded,\n    toggle\n  } = react__WEBPACK_IMPORTED_MODULE_2__.useContext(_Accordion_AccordionContext__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\n  const handleChange = event => {\n    if (toggle) {\n      toggle(event);\n    }\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    expanded,\n    disabled,\n    disableGutters\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(AccordionSummaryRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    focusRipple: false,\n    disableRipple: true,\n    disabled: disabled,\n    component: \"div\",\n    \"aria-expanded\": expanded,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    focusVisibleClassName: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.focusVisible, focusVisibleClassName),\n    onClick: handleChange,\n    ref: ref,\n    ownerState: ownerState\n  }, other, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AccordionSummaryContent, {\n      className: classes.content,\n      ownerState: ownerState,\n      children: children\n    }), expandIcon && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AccordionSummaryExpandIconWrapper, {\n      className: classes.expandIconWrapper,\n      ownerState: ownerState,\n      children: expandIcon\n    })]\n  }));\n});\n true ? AccordionSummary.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n  /**\n   * The icon to display as the expand indicator.\n   */\n  expandIcon: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().node),\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n  /**\n   * @ignore\n   */\n  onClick: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_11___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (AccordionSummary);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/AccordionSummary/AccordionSummary.js?");

/***/ }),

/***/ "./node_modules/@mui/material/AccordionSummary/accordionSummaryClasses.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@mui/material/AccordionSummary/accordionSummaryClasses.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getAccordionSummaryUtilityClass\": function() { return /* binding */ getAccordionSummaryUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getAccordionSummaryUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiAccordionSummary', slot);\n}\nconst accordionSummaryClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiAccordionSummary', ['root', 'expanded', 'focusVisible', 'disabled', 'gutters', 'contentGutters', 'content', 'expandIconWrapper']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (accordionSummaryClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/AccordionSummary/accordionSummaryClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Alert/Alert.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/material/Alert/Alert.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/colorManipulator.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _Paper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Paper */ \"./node_modules/@mui/material/Paper/Paper.js\");\n/* harmony import */ var _alertClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./alertClasses */ \"./node_modules/@mui/material/Alert/alertClasses.js\");\n/* harmony import */ var _IconButton__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../IconButton */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _internal_svg_icons_SuccessOutlined__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../internal/svg-icons/SuccessOutlined */ \"./node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js\");\n/* harmony import */ var _internal_svg_icons_ReportProblemOutlined__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../internal/svg-icons/ReportProblemOutlined */ \"./node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js\");\n/* harmony import */ var _internal_svg_icons_ErrorOutline__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../internal/svg-icons/ErrorOutline */ \"./node_modules/@mui/material/internal/svg-icons/ErrorOutline.js\");\n/* harmony import */ var _internal_svg_icons_InfoOutlined__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../internal/svg-icons/InfoOutlined */ \"./node_modules/@mui/material/internal/svg-icons/InfoOutlined.js\");\n/* harmony import */ var _internal_svg_icons_Close__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../internal/svg-icons/Close */ \"./node_modules/@mui/material/internal/svg-icons/Close.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"action\", \"children\", \"className\", \"closeText\", \"color\", \"components\", \"componentsProps\", \"icon\", \"iconMapping\", \"onClose\", \"role\", \"severity\", \"slotProps\", \"slots\", \"variant\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    variant,\n    color,\n    severity,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', `${variant}${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color || severity)}`, `${variant}`],\n    icon: ['icon'],\n    message: ['message'],\n    action: ['action']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _alertClasses__WEBPACK_IMPORTED_MODULE_7__.getAlertUtilityClass, classes);\n};\nconst AlertRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_Paper__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n  name: 'MuiAlert',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`${ownerState.variant}${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.color || ownerState.severity)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  const getColor = theme.palette.mode === 'light' ? _mui_system__WEBPACK_IMPORTED_MODULE_10__.darken : _mui_system__WEBPACK_IMPORTED_MODULE_10__.lighten;\n  const getBackgroundColor = theme.palette.mode === 'light' ? _mui_system__WEBPACK_IMPORTED_MODULE_10__.lighten : _mui_system__WEBPACK_IMPORTED_MODULE_10__.darken;\n  const color = ownerState.color || ownerState.severity;\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, theme.typography.body2, {\n    backgroundColor: 'transparent',\n    display: 'flex',\n    padding: '6px 16px'\n  }, color && ownerState.variant === 'standard' && {\n    color: theme.vars ? theme.vars.palette.Alert[`${color}Color`] : getColor(theme.palette[color].light, 0.6),\n    backgroundColor: theme.vars ? theme.vars.palette.Alert[`${color}StandardBg`] : getBackgroundColor(theme.palette[color].light, 0.9),\n    [`& .${_alertClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].icon}`]: theme.vars ? {\n      color: theme.vars.palette.Alert[`${color}IconColor`]\n    } : {\n      color: theme.palette[color].main\n    }\n  }, color && ownerState.variant === 'outlined' && {\n    color: theme.vars ? theme.vars.palette.Alert[`${color}Color`] : getColor(theme.palette[color].light, 0.6),\n    border: `1px solid ${(theme.vars || theme).palette[color].light}`,\n    [`& .${_alertClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].icon}`]: theme.vars ? {\n      color: theme.vars.palette.Alert[`${color}IconColor`]\n    } : {\n      color: theme.palette[color].main\n    }\n  }, color && ownerState.variant === 'filled' && (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    fontWeight: theme.typography.fontWeightMedium\n  }, theme.vars ? {\n    color: theme.vars.palette.Alert[`${color}FilledColor`],\n    backgroundColor: theme.vars.palette.Alert[`${color}FilledBg`]\n  } : {\n    backgroundColor: theme.palette.mode === 'dark' ? theme.palette[color].dark : theme.palette[color].main,\n    color: theme.palette.getContrastText(theme.palette[color].main)\n  }));\n});\nconst AlertIcon = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n  name: 'MuiAlert',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => styles.icon\n})({\n  marginRight: 12,\n  padding: '7px 0',\n  display: 'flex',\n  fontSize: 22,\n  opacity: 0.9\n});\nconst AlertMessage = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n  name: 'MuiAlert',\n  slot: 'Message',\n  overridesResolver: (props, styles) => styles.message\n})({\n  padding: '8px 0',\n  minWidth: 0,\n  overflow: 'auto'\n});\nconst AlertAction = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n  name: 'MuiAlert',\n  slot: 'Action',\n  overridesResolver: (props, styles) => styles.action\n})({\n  display: 'flex',\n  alignItems: 'flex-start',\n  padding: '4px 0 0 16px',\n  marginLeft: 'auto',\n  marginRight: -8\n});\nconst defaultIconMapping = {\n  success: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_internal_svg_icons_SuccessOutlined__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n    fontSize: \"inherit\"\n  }),\n  warning: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_internal_svg_icons_ReportProblemOutlined__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n    fontSize: \"inherit\"\n  }),\n  error: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_internal_svg_icons_ErrorOutline__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n    fontSize: \"inherit\"\n  }),\n  info: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_internal_svg_icons_InfoOutlined__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n    fontSize: \"inherit\"\n  })\n};\nconst Alert = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Alert(inProps, ref) {\n  var _ref, _slots$closeButton, _ref2, _slots$closeIcon, _slotProps$closeButto, _slotProps$closeIcon;\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_15__[\"default\"])({\n    props: inProps,\n    name: 'MuiAlert'\n  });\n  const {\n      action,\n      children,\n      className,\n      closeText = 'Close',\n      color,\n      components = {},\n      componentsProps = {},\n      icon,\n      iconMapping = defaultIconMapping,\n      onClose,\n      role = 'alert',\n      severity = 'success',\n      slotProps = {},\n      slots = {},\n      variant = 'standard'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    color,\n    severity,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const AlertCloseButton = (_ref = (_slots$closeButton = slots.closeButton) != null ? _slots$closeButton : components.CloseButton) != null ? _ref : _IconButton__WEBPACK_IMPORTED_MODULE_16__[\"default\"];\n  const AlertCloseIcon = (_ref2 = (_slots$closeIcon = slots.closeIcon) != null ? _slots$closeIcon : components.CloseIcon) != null ? _ref2 : _internal_svg_icons_Close__WEBPACK_IMPORTED_MODULE_17__[\"default\"];\n  const closeButtonProps = (_slotProps$closeButto = slotProps.closeButton) != null ? _slotProps$closeButto : componentsProps.closeButton;\n  const closeIconProps = (_slotProps$closeIcon = slotProps.closeIcon) != null ? _slotProps$closeIcon : componentsProps.closeIcon;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(AlertRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    role: role,\n    elevation: 0,\n    ownerState: ownerState,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    ref: ref\n  }, other, {\n    children: [icon !== false ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AlertIcon, {\n      ownerState: ownerState,\n      className: classes.icon,\n      children: icon || iconMapping[severity] || defaultIconMapping[severity]\n    }) : null, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AlertMessage, {\n      ownerState: ownerState,\n      className: classes.message,\n      children: children\n    }), action != null ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AlertAction, {\n      ownerState: ownerState,\n      className: classes.action,\n      children: action\n    }) : null, action == null && onClose ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AlertAction, {\n      ownerState: ownerState,\n      className: classes.action,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AlertCloseButton, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n        size: \"small\",\n        \"aria-label\": closeText,\n        title: closeText,\n        color: \"inherit\",\n        onClick: onClose\n      }, closeButtonProps, {\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AlertCloseIcon, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n          fontSize: \"small\"\n        }, closeIconProps))\n      }))\n    }) : null]\n  }));\n});\n true ? Alert.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The action to display. It renders after the message, at the end of the alert.\n   */\n  action: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().node),\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().string),\n  /**\n   * Override the default label for the *close popup* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Close'\n   */\n  closeText: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().string),\n  /**\n   * The color of the component. Unless provided, the value is taken from the `severity` prop.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   */\n  color: prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOf(['error', 'info', 'success', 'warning']), (prop_types__WEBPACK_IMPORTED_MODULE_18___default().string)]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: prop_types__WEBPACK_IMPORTED_MODULE_18___default().shape({\n    CloseButton: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().elementType),\n    CloseIcon: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().elementType)\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: prop_types__WEBPACK_IMPORTED_MODULE_18___default().shape({\n    closeButton: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().object),\n    closeIcon: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().object)\n  }),\n  /**\n   * Override the icon displayed before the children.\n   * Unless provided, the icon is mapped to the value of the `severity` prop.\n   * Set to `false` to remove the `icon`.\n   */\n  icon: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().node),\n  /**\n   * The component maps the `severity` prop to a range of different icons,\n   * for instance success to `<SuccessOutlined>`.\n   * If you wish to change this mapping, you can provide your own.\n   * Alternatively, you can use the `icon` prop to override the icon displayed.\n   */\n  iconMapping: prop_types__WEBPACK_IMPORTED_MODULE_18___default().shape({\n    error: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().node),\n    info: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().node),\n    success: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().node),\n    warning: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().node)\n  }),\n  /**\n   * Callback fired when the component requests to be closed.\n   * When provided and no `action` prop is set, a close icon button is displayed that triggers the callback when clicked.\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   */\n  onClose: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().func),\n  /**\n   * The ARIA role attribute of the element.\n   * @default 'alert'\n   */\n  role: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().string),\n  /**\n   * The severity of the alert. This defines the color and icon used.\n   * @default 'success'\n   */\n  severity: prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOf(['error', 'info', 'success', 'warning']),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: prop_types__WEBPACK_IMPORTED_MODULE_18___default().shape({\n    closeButton: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().object),\n    closeIcon: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().object)\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: prop_types__WEBPACK_IMPORTED_MODULE_18___default().shape({\n    closeButton: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().elementType),\n    closeIcon: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().elementType)\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_18___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_18___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_18___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_18___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_18___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_18___default().object)]),\n  /**\n   * The variant to use.\n   * @default 'standard'\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOf(['filled', 'outlined', 'standard']), (prop_types__WEBPACK_IMPORTED_MODULE_18___default().string)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Alert);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Alert/Alert.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Alert/alertClasses.js":
/*!**********************************************************!*\
  !*** ./node_modules/@mui/material/Alert/alertClasses.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getAlertUtilityClass\": function() { return /* binding */ getAlertUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getAlertUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiAlert', slot);\n}\nconst alertClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiAlert', ['root', 'action', 'icon', 'message', 'filled', 'filledSuccess', 'filledInfo', 'filledWarning', 'filledError', 'outlined', 'outlinedSuccess', 'outlinedInfo', 'outlinedWarning', 'outlinedError', 'standard', 'standardSuccess', 'standardInfo', 'standardWarning', 'standardError']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (alertClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Alert/alertClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Autocomplete/Autocomplete.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@mui/material/Autocomplete/Autocomplete.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createFilterOptions\": function() { return /* reexport safe */ _mui_base__WEBPACK_IMPORTED_MODULE_18__.createFilterOptions; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/chainPropTypes.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/integerPropType.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/base/AutocompleteUnstyled/useAutocomplete.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/colorManipulator.js\");\n/* harmony import */ var _Popper__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../Popper */ \"./node_modules/@mui/material/Popper/Popper.js\");\n/* harmony import */ var _ListSubheader__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../ListSubheader */ \"./node_modules/@mui/material/ListSubheader/ListSubheader.js\");\n/* harmony import */ var _Paper__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../Paper */ \"./node_modules/@mui/material/Paper/Paper.js\");\n/* harmony import */ var _IconButton__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../IconButton */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _Chip__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../Chip */ \"./node_modules/@mui/material/Chip/Chip.js\");\n/* harmony import */ var _Input_inputClasses__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Input/inputClasses */ \"./node_modules/@mui/material/Input/inputClasses.js\");\n/* harmony import */ var _InputBase_inputBaseClasses__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../InputBase/inputBaseClasses */ \"./node_modules/@mui/material/InputBase/inputBaseClasses.js\");\n/* harmony import */ var _OutlinedInput_outlinedInputClasses__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../OutlinedInput/outlinedInputClasses */ \"./node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js\");\n/* harmony import */ var _FilledInput_filledInputClasses__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../FilledInput/filledInputClasses */ \"./node_modules/@mui/material/FilledInput/filledInputClasses.js\");\n/* harmony import */ var _internal_svg_icons_Close__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../internal/svg-icons/Close */ \"./node_modules/@mui/material/internal/svg-icons/Close.js\");\n/* harmony import */ var _internal_svg_icons_ArrowDropDown__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../internal/svg-icons/ArrowDropDown */ \"./node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./autocompleteClasses */ \"./node_modules/@mui/material/Autocomplete/autocompleteClasses.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nvar _ClearIcon, _ArrowDropDownIcon;\nconst _excluded = [\"autoComplete\", \"autoHighlight\", \"autoSelect\", \"blurOnSelect\", \"ChipProps\", \"className\", \"clearIcon\", \"clearOnBlur\", \"clearOnEscape\", \"clearText\", \"closeText\", \"componentsProps\", \"defaultValue\", \"disableClearable\", \"disableCloseOnSelect\", \"disabled\", \"disabledItemsFocusable\", \"disableListWrap\", \"disablePortal\", \"filterOptions\", \"filterSelectedOptions\", \"forcePopupIcon\", \"freeSolo\", \"fullWidth\", \"getLimitTagsText\", \"getOptionDisabled\", \"getOptionLabel\", \"isOptionEqualToValue\", \"groupBy\", \"handleHomeEndKeys\", \"id\", \"includeInputInList\", \"inputValue\", \"limitTags\", \"ListboxComponent\", \"ListboxProps\", \"loading\", \"loadingText\", \"multiple\", \"noOptionsText\", \"onChange\", \"onClose\", \"onHighlightChange\", \"onInputChange\", \"onOpen\", \"open\", \"openOnFocus\", \"openText\", \"options\", \"PaperComponent\", \"PopperComponent\", \"popupIcon\", \"readOnly\", \"renderGroup\", \"renderInput\", \"renderOption\", \"renderTags\", \"selectOnFocus\", \"size\", \"slotProps\", \"value\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disablePortal,\n    focused,\n    fullWidth,\n    hasClearIcon,\n    hasPopupIcon,\n    inputFocused,\n    popupOpen,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', focused && 'focused', fullWidth && 'fullWidth', hasClearIcon && 'hasClearIcon', hasPopupIcon && 'hasPopupIcon'],\n    inputRoot: ['inputRoot'],\n    input: ['input', inputFocused && 'inputFocused'],\n    tag: ['tag', `tagSize${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`],\n    endAdornment: ['endAdornment'],\n    clearIndicator: ['clearIndicator'],\n    popupIndicator: ['popupIndicator', popupOpen && 'popupIndicatorOpen'],\n    popper: ['popper', disablePortal && 'popperDisablePortal'],\n    paper: ['paper'],\n    listbox: ['listbox'],\n    loading: ['loading'],\n    noOptions: ['noOptions'],\n    option: ['option'],\n    groupLabel: ['groupLabel'],\n    groupUl: ['groupUl']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__.getAutocompleteUtilityClass, classes);\n};\nconst AutocompleteRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n  name: 'MuiAutocomplete',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      fullWidth,\n      hasClearIcon,\n      hasPopupIcon,\n      inputFocused,\n      size\n    } = ownerState;\n    return [{\n      [`& .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].tag}`]: styles.tag\n    }, {\n      [`& .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].tag}`]: styles[`tagSize${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`]\n    }, {\n      [`& .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].inputRoot}`]: styles.inputRoot\n    }, {\n      [`& .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].input}`]: styles.input\n    }, {\n      [`& .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].input}`]: inputFocused && styles.inputFocused\n    }, styles.root, fullWidth && styles.fullWidth, hasPopupIcon && styles.hasPopupIcon, hasClearIcon && styles.hasClearIcon];\n  }\n})(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  [`&.${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].focused} .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].clearIndicator}`]: {\n    visibility: 'visible'\n  },\n  /* Avoid double tap issue on iOS */\n  '@media (pointer: fine)': {\n    [`&:hover .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].clearIndicator}`]: {\n      visibility: 'visible'\n    }\n  }\n}, ownerState.fullWidth && {\n  width: '100%'\n}, {\n  [`& .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].tag}`]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    margin: 3,\n    maxWidth: 'calc(100% - 6px)'\n  }, ownerState.size === 'small' && {\n    margin: 2,\n    maxWidth: 'calc(100% - 4px)'\n  }),\n  [`& .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].inputRoot}`]: {\n    flexWrap: 'wrap',\n    [`.${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].hasPopupIcon}&, .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].hasClearIcon}&`]: {\n      paddingRight: 26 + 4\n    },\n    [`.${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].hasPopupIcon}.${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].hasClearIcon}&`]: {\n      paddingRight: 52 + 4\n    },\n    [`& .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].input}`]: {\n      width: 0,\n      minWidth: 30\n    }\n  },\n  [`& .${_Input_inputClasses__WEBPACK_IMPORTED_MODULE_9__[\"default\"].root}`]: {\n    paddingBottom: 1,\n    '& .MuiInput-input': {\n      padding: '4px 4px 4px 0px'\n    }\n  },\n  [`& .${_Input_inputClasses__WEBPACK_IMPORTED_MODULE_9__[\"default\"].root}.${_InputBase_inputBaseClasses__WEBPACK_IMPORTED_MODULE_10__[\"default\"].sizeSmall}`]: {\n    [`& .${_Input_inputClasses__WEBPACK_IMPORTED_MODULE_9__[\"default\"].input}`]: {\n      padding: '2px 4px 3px 0'\n    }\n  },\n  [`& .${_OutlinedInput_outlinedInputClasses__WEBPACK_IMPORTED_MODULE_11__[\"default\"].root}`]: {\n    padding: 9,\n    [`.${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].hasPopupIcon}&, .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].hasClearIcon}&`]: {\n      paddingRight: 26 + 4 + 9\n    },\n    [`.${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].hasPopupIcon}.${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].hasClearIcon}&`]: {\n      paddingRight: 52 + 4 + 9\n    },\n    [`& .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].input}`]: {\n      padding: '7.5px 4px 7.5px 6px'\n    },\n    [`& .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].endAdornment}`]: {\n      right: 9\n    }\n  },\n  [`& .${_OutlinedInput_outlinedInputClasses__WEBPACK_IMPORTED_MODULE_11__[\"default\"].root}.${_InputBase_inputBaseClasses__WEBPACK_IMPORTED_MODULE_10__[\"default\"].sizeSmall}`]: {\n    // Don't specify paddingRight, as it overrides the default value set when there is only\n    // one of the popup or clear icon as the specificity is equal so the latter one wins\n    paddingTop: 6,\n    paddingBottom: 6,\n    paddingLeft: 6,\n    [`& .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].input}`]: {\n      padding: '2.5px 4px 2.5px 6px'\n    }\n  },\n  [`& .${_FilledInput_filledInputClasses__WEBPACK_IMPORTED_MODULE_12__[\"default\"].root}`]: {\n    paddingTop: 19,\n    paddingLeft: 8,\n    [`.${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].hasPopupIcon}&, .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].hasClearIcon}&`]: {\n      paddingRight: 26 + 4 + 9\n    },\n    [`.${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].hasPopupIcon}.${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].hasClearIcon}&`]: {\n      paddingRight: 52 + 4 + 9\n    },\n    [`& .${_FilledInput_filledInputClasses__WEBPACK_IMPORTED_MODULE_12__[\"default\"].input}`]: {\n      padding: '7px 4px'\n    },\n    [`& .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].endAdornment}`]: {\n      right: 9\n    }\n  },\n  [`& .${_FilledInput_filledInputClasses__WEBPACK_IMPORTED_MODULE_12__[\"default\"].root}.${_InputBase_inputBaseClasses__WEBPACK_IMPORTED_MODULE_10__[\"default\"].sizeSmall}`]: {\n    paddingBottom: 1,\n    [`& .${_FilledInput_filledInputClasses__WEBPACK_IMPORTED_MODULE_12__[\"default\"].input}`]: {\n      padding: '2.5px 4px'\n    }\n  },\n  [`& .${_InputBase_inputBaseClasses__WEBPACK_IMPORTED_MODULE_10__[\"default\"].hiddenLabel}`]: {\n    paddingTop: 8\n  },\n  [`& .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].input}`]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    flexGrow: 1,\n    textOverflow: 'ellipsis',\n    opacity: 0\n  }, ownerState.inputFocused && {\n    opacity: 1\n  })\n}));\nconst AutocompleteEndAdornment = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n  name: 'MuiAutocomplete',\n  slot: 'EndAdornment',\n  overridesResolver: (props, styles) => styles.endAdornment\n})({\n  // We use a position absolute to support wrapping tags.\n  position: 'absolute',\n  right: 0,\n  top: 'calc(50% - 14px)' // Center vertically\n});\n\nconst AutocompleteClearIndicator = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_IconButton__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n  name: 'MuiAutocomplete',\n  slot: 'ClearIndicator',\n  overridesResolver: (props, styles) => styles.clearIndicator\n})({\n  marginRight: -2,\n  padding: 4,\n  visibility: 'hidden'\n});\nconst AutocompletePopupIndicator = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_IconButton__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n  name: 'MuiAutocomplete',\n  slot: 'PopupIndicator',\n  overridesResolver: ({\n    ownerState\n  }, styles) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, styles.popupIndicator, ownerState.popupOpen && styles.popupIndicatorOpen)\n})(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  padding: 2,\n  marginRight: -2\n}, ownerState.popupOpen && {\n  transform: 'rotate(180deg)'\n}));\nconst AutocompletePopper = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_Popper__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n  name: 'MuiAutocomplete',\n  slot: 'Popper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].option}`]: styles.option\n    }, styles.popper, ownerState.disablePortal && styles.popperDisablePortal];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  zIndex: (theme.vars || theme).zIndex.modal\n}, ownerState.disablePortal && {\n  position: 'absolute'\n}));\nconst AutocompletePaper = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_Paper__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n  name: 'MuiAutocomplete',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => styles.paper\n})(({\n  theme\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, theme.typography.body1, {\n  overflow: 'auto'\n}));\nconst AutocompleteLoading = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n  name: 'MuiAutocomplete',\n  slot: 'Loading',\n  overridesResolver: (props, styles) => styles.loading\n})(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  padding: '14px 16px'\n}));\nconst AutocompleteNoOptions = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n  name: 'MuiAutocomplete',\n  slot: 'NoOptions',\n  overridesResolver: (props, styles) => styles.noOptions\n})(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  padding: '14px 16px'\n}));\nconst AutocompleteListbox = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n  name: 'MuiAutocomplete',\n  slot: 'Listbox',\n  overridesResolver: (props, styles) => styles.listbox\n})(({\n  theme\n}) => ({\n  listStyle: 'none',\n  margin: 0,\n  padding: '8px 0',\n  maxHeight: '40vh',\n  overflow: 'auto',\n  position: 'relative',\n  [`& .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].option}`]: {\n    minHeight: 48,\n    display: 'flex',\n    overflow: 'hidden',\n    justifyContent: 'flex-start',\n    alignItems: 'center',\n    cursor: 'pointer',\n    paddingTop: 6,\n    boxSizing: 'border-box',\n    outline: '0',\n    WebkitTapHighlightColor: 'transparent',\n    paddingBottom: 6,\n    paddingLeft: 16,\n    paddingRight: 16,\n    [theme.breakpoints.up('sm')]: {\n      minHeight: 'auto'\n    },\n    [`&.${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].focused}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.hover,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    },\n    '&[aria-disabled=\"true\"]': {\n      opacity: (theme.vars || theme).palette.action.disabledOpacity,\n      pointerEvents: 'none'\n    },\n    [`&.${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].focusVisible}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.focus\n    },\n    '&[aria-selected=\"true\"]': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_16__.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n      [`&.${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].focused}`]: {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_16__.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: (theme.vars || theme).palette.action.selected\n        }\n      },\n      [`&.${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].focusVisible}`]: {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_16__.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n      }\n    }\n  }\n}));\nconst AutocompleteGroupLabel = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_ListSubheader__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n  name: 'MuiAutocomplete',\n  slot: 'GroupLabel',\n  overridesResolver: (props, styles) => styles.groupLabel\n})(({\n  theme\n}) => ({\n  backgroundColor: (theme.vars || theme).palette.background.paper,\n  top: -8\n}));\nconst AutocompleteGroupUl = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('ul', {\n  name: 'MuiAutocomplete',\n  slot: 'GroupUl',\n  overridesResolver: (props, styles) => styles.groupUl\n})({\n  padding: 0,\n  [`& .${_autocompleteClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].option}`]: {\n    paddingLeft: 24\n  }\n});\n\nconst Autocomplete = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Autocomplete(inProps, ref) {\n  var _slotProps$clearIndic, _slotProps$paper, _slotProps$popper, _slotProps$popupIndic;\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_19__[\"default\"])({\n    props: inProps,\n    name: 'MuiAutocomplete'\n  });\n  /* eslint-disable @typescript-eslint/no-unused-vars */\n  const {\n      autoComplete = false,\n      autoHighlight = false,\n      autoSelect = false,\n      blurOnSelect = false,\n      ChipProps,\n      className,\n      clearIcon = _ClearIcon || (_ClearIcon = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_internal_svg_icons_Close__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n        fontSize: \"small\"\n      })),\n      clearOnBlur = !props.freeSolo,\n      clearOnEscape = false,\n      clearText = 'Clear',\n      closeText = 'Close',\n      componentsProps = {},\n      defaultValue = props.multiple ? [] : null,\n      disableClearable = false,\n      disableCloseOnSelect = false,\n      disabled = false,\n      disabledItemsFocusable = false,\n      disableListWrap = false,\n      disablePortal = false,\n      filterSelectedOptions = false,\n      forcePopupIcon = 'auto',\n      freeSolo = false,\n      fullWidth = false,\n      getLimitTagsText = more => `+${more}`,\n      getOptionLabel = option => {\n        var _option$label;\n        return (_option$label = option.label) != null ? _option$label : option;\n      },\n      groupBy,\n      handleHomeEndKeys = !props.freeSolo,\n      includeInputInList = false,\n      limitTags = -1,\n      ListboxComponent = 'ul',\n      ListboxProps,\n      loading = false,\n      loadingText = 'Loading…',\n      multiple = false,\n      noOptionsText = 'No options',\n      openOnFocus = false,\n      openText = 'Open',\n      PaperComponent = _Paper__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n      PopperComponent = _Popper__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n      popupIcon = _ArrowDropDownIcon || (_ArrowDropDownIcon = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_internal_svg_icons_ArrowDropDown__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {})),\n      readOnly = false,\n      renderGroup: renderGroupProp,\n      renderInput,\n      renderOption: renderOptionProp,\n      renderTags,\n      selectOnFocus = !props.freeSolo,\n      size = 'medium',\n      slotProps = {}\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  /* eslint-enable @typescript-eslint/no-unused-vars */\n\n  const {\n    getRootProps,\n    getInputProps,\n    getInputLabelProps,\n    getPopupIndicatorProps,\n    getClearProps,\n    getTagProps,\n    getListboxProps,\n    getOptionProps,\n    value,\n    dirty,\n    id,\n    popupOpen,\n    focused,\n    focusedTag,\n    anchorEl,\n    setAnchorEl,\n    inputValue,\n    groupedOptions\n  } = (0,_mui_base__WEBPACK_IMPORTED_MODULE_18__[\"default\"])((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    componentName: 'Autocomplete'\n  }));\n  const hasClearIcon = !disableClearable && !disabled && dirty && !readOnly;\n  const hasPopupIcon = (!freeSolo || forcePopupIcon === true) && forcePopupIcon !== false;\n\n  // If you modify this, make sure to keep the `AutocompleteOwnerState` type in sync.\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    disablePortal,\n    focused,\n    fullWidth,\n    hasClearIcon,\n    hasPopupIcon,\n    inputFocused: focusedTag === -1,\n    popupOpen,\n    size\n  });\n  const classes = useUtilityClasses(ownerState);\n  let startAdornment;\n  if (multiple && value.length > 0) {\n    const getCustomizedTagProps = params => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      className: classes.tag,\n      disabled\n    }, getTagProps(params));\n    if (renderTags) {\n      startAdornment = renderTags(value, getCustomizedTagProps, ownerState);\n    } else {\n      startAdornment = value.map((option, index) => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_Chip__WEBPACK_IMPORTED_MODULE_22__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n        label: getOptionLabel(option),\n        size: size\n      }, getCustomizedTagProps({\n        index\n      }), ChipProps)));\n    }\n  }\n  if (limitTags > -1 && Array.isArray(startAdornment)) {\n    const more = startAdornment.length - limitTags;\n    if (!focused && more > 0) {\n      startAdornment = startAdornment.splice(0, limitTags);\n      startAdornment.push( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"span\", {\n        className: classes.tag,\n        children: getLimitTagsText(more)\n      }, startAdornment.length));\n    }\n  }\n  const defaultRenderGroup = params => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"li\", {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AutocompleteGroupLabel, {\n      className: classes.groupLabel,\n      ownerState: ownerState,\n      component: \"div\",\n      children: params.group\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AutocompleteGroupUl, {\n      className: classes.groupUl,\n      ownerState: ownerState,\n      children: params.children\n    })]\n  }, params.key);\n  const renderGroup = renderGroupProp || defaultRenderGroup;\n  const defaultRenderOption = (props2, option) => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"li\", (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props2, {\n    children: getOptionLabel(option)\n  }));\n  const renderOption = renderOptionProp || defaultRenderOption;\n  const renderListOption = (option, index) => {\n    const optionProps = getOptionProps({\n      option,\n      index\n    });\n    return renderOption((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, optionProps, {\n      className: classes.option\n    }), option, {\n      selected: optionProps['aria-selected'],\n      index,\n      inputValue\n    });\n  };\n  const clearIndicatorSlotProps = (_slotProps$clearIndic = slotProps.clearIndicator) != null ? _slotProps$clearIndic : componentsProps.clearIndicator;\n  const paperSlotProps = (_slotProps$paper = slotProps.paper) != null ? _slotProps$paper : componentsProps.paper;\n  const popperSlotProps = (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper;\n  const popupIndicatorSlotProps = (_slotProps$popupIndic = slotProps.popupIndicator) != null ? _slotProps$popupIndic : componentsProps.popupIndicator;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AutocompleteRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      ref: ref,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n      ownerState: ownerState\n    }, getRootProps(other), {\n      children: renderInput({\n        id,\n        disabled,\n        fullWidth: true,\n        size: size === 'small' ? 'small' : undefined,\n        InputLabelProps: getInputLabelProps(),\n        InputProps: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n          ref: setAnchorEl,\n          className: classes.inputRoot,\n          startAdornment\n        }, (hasClearIcon || hasPopupIcon) && {\n          endAdornment: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(AutocompleteEndAdornment, {\n            className: classes.endAdornment,\n            ownerState: ownerState,\n            children: [hasClearIcon ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AutocompleteClearIndicator, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, getClearProps(), {\n              \"aria-label\": clearText,\n              title: clearText,\n              ownerState: ownerState\n            }, clearIndicatorSlotProps, {\n              className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.clearIndicator, clearIndicatorSlotProps == null ? void 0 : clearIndicatorSlotProps.className),\n              children: clearIcon\n            })) : null, hasPopupIcon ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AutocompletePopupIndicator, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, getPopupIndicatorProps(), {\n              disabled: disabled,\n              \"aria-label\": popupOpen ? closeText : openText,\n              title: popupOpen ? closeText : openText,\n              ownerState: ownerState\n            }, popupIndicatorSlotProps, {\n              className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.popupIndicator, popupIndicatorSlotProps == null ? void 0 : popupIndicatorSlotProps.className),\n              children: popupIcon\n            })) : null]\n          })\n        }),\n        inputProps: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n          className: classes.input,\n          disabled,\n          readOnly\n        }, getInputProps())\n      })\n    })), anchorEl ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AutocompletePopper, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      as: PopperComponent,\n      disablePortal: disablePortal,\n      style: {\n        width: anchorEl ? anchorEl.clientWidth : null\n      },\n      ownerState: ownerState,\n      role: \"presentation\",\n      anchorEl: anchorEl,\n      open: popupOpen\n    }, popperSlotProps, {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.popper, popperSlotProps == null ? void 0 : popperSlotProps.className),\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(AutocompletePaper, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n        ownerState: ownerState,\n        as: PaperComponent\n      }, paperSlotProps, {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.paper, paperSlotProps == null ? void 0 : paperSlotProps.className),\n        children: [loading && groupedOptions.length === 0 ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AutocompleteLoading, {\n          className: classes.loading,\n          ownerState: ownerState,\n          children: loadingText\n        }) : null, groupedOptions.length === 0 && !freeSolo && !loading ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AutocompleteNoOptions, {\n          className: classes.noOptions,\n          ownerState: ownerState,\n          role: \"presentation\",\n          onMouseDown: event => {\n            // Prevent input blur when interacting with the \"no options\" content\n            event.preventDefault();\n          },\n          children: noOptionsText\n        }) : null, groupedOptions.length > 0 ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AutocompleteListbox, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n          as: ListboxComponent,\n          className: classes.listbox,\n          ownerState: ownerState\n        }, getListboxProps(), ListboxProps, {\n          children: groupedOptions.map((option, index) => {\n            if (groupBy) {\n              return renderGroup({\n                key: option.key,\n                group: option.group,\n                children: option.options.map((option2, index2) => renderListOption(option2, option.index + index2))\n              });\n            }\n            return renderListOption(option, index);\n          })\n        })) : null]\n      }))\n    })) : null]\n  });\n});\n true ? Autocomplete.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, the portion of the selected suggestion that has not been typed by the user,\n   * known as the completion string, appears inline after the input cursor in the textbox.\n   * The inline completion string is visually highlighted and has a selected state.\n   * @default false\n   */\n  autoComplete: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * If `true`, the first option is automatically highlighted.\n   * @default false\n   */\n  autoHighlight: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * If `true`, the selected option becomes the value of the input\n   * when the Autocomplete loses focus unless the user chooses\n   * a different option or changes the character string in the input.\n   * @default false\n   */\n  autoSelect: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * Control if the input should be blurred when an option is selected:\n   *\n   * - `false` the input is not blurred.\n   * - `true` the input is always blurred.\n   * - `touch` the input is blurred after a touch event.\n   * - `mouse` the input is blurred after a mouse event.\n   * @default false\n   */\n  blurOnSelect: prop_types__WEBPACK_IMPORTED_MODULE_23___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_23___default().oneOf(['mouse', 'touch']), (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool)]),\n  /**\n   * Props applied to the [`Chip`](/material-ui/api/chip/) element.\n   */\n  ChipProps: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().object),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().string),\n  /**\n   * The icon to display in place of the default clear icon.\n   * @default <ClearIcon fontSize=\"small\" />\n   */\n  clearIcon: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().node),\n  /**\n   * If `true`, the input's text is cleared on blur if no value is selected.\n   *\n   * Set to `true` if you want to help the user enter a new value.\n   * Set to `false` if you want to help the user resume their search.\n   * @default !props.freeSolo\n   */\n  clearOnBlur: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * If `true`, clear all values when the user presses escape and the popup is closed.\n   * @default false\n   */\n  clearOnEscape: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * Override the default text for the *clear* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Clear'\n   */\n  clearText: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().string),\n  /**\n   * Override the default text for the *close popup* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Close'\n   */\n  closeText: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().string),\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  componentsProps: prop_types__WEBPACK_IMPORTED_MODULE_23___default().shape({\n    clearIndicator: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().object),\n    paper: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().object),\n    popper: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().object),\n    popupIndicator: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().object)\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   * @default props.multiple ? [] : null\n   */\n  defaultValue: (0,_mui_utils__WEBPACK_IMPORTED_MODULE_24__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_23___default().any), props => {\n    if (props.multiple && props.defaultValue !== undefined && !Array.isArray(props.defaultValue)) {\n      return new Error(['MUI: The Autocomplete expects the `defaultValue` prop to be an array when `multiple={true}` or undefined.', `However, ${props.defaultValue} was provided.`].join('\\n'));\n    }\n    return null;\n  }),\n  /**\n   * If `true`, the input can't be cleared.\n   * @default false\n   */\n  disableClearable: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * If `true`, the popup won't close when a value is selected.\n   * @default false\n   */\n  disableCloseOnSelect: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * If `true`, will allow focus on disabled items.\n   * @default false\n   */\n  disabledItemsFocusable: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * If `true`, the list box in the popup will not wrap focus.\n   * @default false\n   */\n  disableListWrap: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * If `true`, the `Popper` content will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * A function that determines the filtered options to be rendered on search.\n   *\n   * @param {T[]} options The options to render.\n   * @param {object} state The state of the component.\n   * @returns {T[]}\n   */\n  filterOptions: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().func),\n  /**\n   * If `true`, hide the selected options from the list box.\n   * @default false\n   */\n  filterSelectedOptions: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * Force the visibility display of the popup icon.\n   * @default 'auto'\n   */\n  forcePopupIcon: prop_types__WEBPACK_IMPORTED_MODULE_23___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_23___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool)]),\n  /**\n   * If `true`, the Autocomplete is free solo, meaning that the user input is not bound to provided options.\n   * @default false\n   */\n  freeSolo: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * If `true`, the input will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * The label to display when the tags are truncated (`limitTags`).\n   *\n   * @param {number} more The number of truncated tags.\n   * @returns {ReactNode}\n   * @default (more) => `+${more}`\n   */\n  getLimitTagsText: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().func),\n  /**\n   * Used to determine the disabled state for a given option.\n   *\n   * @param {T} option The option to test.\n   * @returns {boolean}\n   */\n  getOptionDisabled: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().func),\n  /**\n   * Used to determine the string value for a given option.\n   * It's used to fill the input (and the list box options if `renderOption` is not provided).\n   *\n   * If used in free solo mode, it must accept both the type of the options and a string.\n   *\n   * @param {T} option\n   * @returns {string}\n   * @default (option) => option.label ?? option\n   */\n  getOptionLabel: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().func),\n  /**\n   * If provided, the options will be grouped under the returned string.\n   * The groupBy value is also used as the text for group headings when `renderGroup` is not provided.\n   *\n   * @param {T} options The options to group.\n   * @returns {string}\n   */\n  groupBy: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().func),\n  /**\n   * If `true`, the component handles the \"Home\" and \"End\" keys when the popup is open.\n   * It should move focus to the first option and last option, respectively.\n   * @default !props.freeSolo\n   */\n  handleHomeEndKeys: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * This prop is used to help implement the accessibility logic.\n   * If you don't provide an id it will fall back to a randomly generated one.\n   */\n  id: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().string),\n  /**\n   * If `true`, the highlight can move to the input.\n   * @default false\n   */\n  includeInputInList: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * The input value.\n   */\n  inputValue: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().string),\n  /**\n   * Used to determine if the option represents the given value.\n   * Uses strict equality by default.\n   * ⚠️ Both arguments need to be handled, an option can only match with one value.\n   *\n   * @param {T} option The option to test.\n   * @param {T} value The value to test against.\n   * @returns {boolean}\n   */\n  isOptionEqualToValue: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().func),\n  /**\n   * The maximum number of tags that will be visible when not focused.\n   * Set `-1` to disable the limit.\n   * @default -1\n   */\n  limitTags: _mui_utils__WEBPACK_IMPORTED_MODULE_25__[\"default\"],\n  /**\n   * The component used to render the listbox.\n   * @default 'ul'\n   */\n  ListboxComponent: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().elementType),\n  /**\n   * Props applied to the Listbox element.\n   */\n  ListboxProps: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().object),\n  /**\n   * If `true`, the component is in a loading state.\n   * This shows the `loadingText` in place of suggestions (only if there are no suggestions to show, e.g. `options` are empty).\n   * @default false\n   */\n  loading: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * Text to display when in a loading state.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Loading…'\n   */\n  loadingText: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().node),\n  /**\n   * If `true`, `value` must be an array and the menu will support multiple selections.\n   * @default false\n   */\n  multiple: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * Text to display when there are no options.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'No options'\n   */\n  noOptionsText: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().node),\n  /**\n   * Callback fired when the value changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {T|T[]} value The new value of the component.\n   * @param {string} reason One of \"createOption\", \"selectOption\", \"removeOption\", \"blur\" or \"clear\".\n   * @param {string} [details]\n   */\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().func),\n  /**\n   * Callback fired when the popup requests to be closed.\n   * Use in controlled mode (see open).\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {string} reason Can be: `\"toggleInput\"`, `\"escape\"`, `\"selectOption\"`, `\"removeOption\"`, `\"blur\"`.\n   */\n  onClose: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().func),\n  /**\n   * Callback fired when the highlight option changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {T} option The highlighted option.\n   * @param {string} reason Can be: `\"keyboard\"`, `\"auto\"`, `\"mouse\"`.\n   */\n  onHighlightChange: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().func),\n  /**\n   * Callback fired when the input value changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {string} value The new value of the text input.\n   * @param {string} reason Can be: `\"input\"` (user input), `\"reset\"` (programmatic change), `\"clear\"`.\n   */\n  onInputChange: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().func),\n  /**\n   * Callback fired when the popup requests to be opened.\n   * Use in controlled mode (see open).\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   */\n  onOpen: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().func),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * If `true`, the popup will open on input focus.\n   * @default false\n   */\n  openOnFocus: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * Override the default text for the *open popup* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Open'\n   */\n  openText: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().string),\n  /**\n   * Array of options.\n   */\n  options: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().array.isRequired),\n  /**\n   * The component used to render the body of the popup.\n   * @default Paper\n   */\n  PaperComponent: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().elementType),\n  /**\n   * The component used to position the popup.\n   * @default Popper\n   */\n  PopperComponent: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().elementType),\n  /**\n   * The icon to display in place of the default popup icon.\n   * @default <ArrowDropDownIcon />\n   */\n  popupIcon: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().node),\n  /**\n   * If `true`, the component becomes readonly. It is also supported for multiple tags where the tag cannot be deleted.\n   * @default false\n   */\n  readOnly: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * Render the group.\n   *\n   * @param {AutocompleteRenderGroupParams} params The group to render.\n   * @returns {ReactNode}\n   */\n  renderGroup: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().func),\n  /**\n   * Render the input.\n   *\n   * @param {object} params\n   * @returns {ReactNode}\n   */\n  renderInput: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().func.isRequired),\n  /**\n   * Render the option, use `getOptionLabel` by default.\n   *\n   * @param {object} props The props to apply on the li element.\n   * @param {T} option The option to render.\n   * @param {object} state The state of the component.\n   * @returns {ReactNode}\n   */\n  renderOption: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().func),\n  /**\n   * Render the selected value.\n   *\n   * @param {T[]} value The `value` provided to the component.\n   * @param {function} getTagProps A tag props getter.\n   * @param {object} ownerState The state of the Autocomplete component.\n   * @returns {ReactNode}\n   */\n  renderTags: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().func),\n  /**\n   * If `true`, the input's text is selected on focus.\n   * It helps the user clear the selected value.\n   * @default !props.freeSolo\n   */\n  selectOnFocus: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool),\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: prop_types__WEBPACK_IMPORTED_MODULE_23___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_23___default().oneOf(['small', 'medium']), (prop_types__WEBPACK_IMPORTED_MODULE_23___default().string)]),\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: prop_types__WEBPACK_IMPORTED_MODULE_23___default().shape({\n    clearIndicator: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().object),\n    paper: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().object),\n    popper: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().object),\n    popupIndicator: (prop_types__WEBPACK_IMPORTED_MODULE_23___default().object)\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_23___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_23___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_23___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_23___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_23___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_23___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_23___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_23___default().object)]),\n  /**\n   * The value of the autocomplete.\n   *\n   * The value must have reference equality with the option in order to be selected.\n   * You can customize the equality behavior with the `isOptionEqualToValue` prop.\n   */\n  value: (0,_mui_utils__WEBPACK_IMPORTED_MODULE_24__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_23___default().any), props => {\n    if (props.multiple && props.value !== undefined && !Array.isArray(props.value)) {\n      return new Error(['MUI: The Autocomplete expects the `value` prop to be an array when `multiple={true}` or undefined.', `However, ${props.value} was provided.`].join('\\n'));\n    }\n    return null;\n  })\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Autocomplete);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Autocomplete/Autocomplete.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Autocomplete/autocompleteClasses.js":
/*!************************************************************************!*\
  !*** ./node_modules/@mui/material/Autocomplete/autocompleteClasses.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getAutocompleteUtilityClass\": function() { return /* binding */ getAutocompleteUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getAutocompleteUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiAutocomplete', slot);\n}\nconst autocompleteClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiAutocomplete', ['root', 'fullWidth', 'focused', 'focusVisible', 'tag', 'tagSizeSmall', 'tagSizeMedium', 'hasPopupIcon', 'hasClearIcon', 'inputRoot', 'input', 'inputFocused', 'endAdornment', 'clearIndicator', 'popupIndicator', 'popupIndicatorOpen', 'popper', 'popperDisablePortal', 'paper', 'listbox', 'loading', 'noOptions', 'option', 'groupLabel', 'groupUl']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (autocompleteClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Autocomplete/autocompleteClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Backdrop/Backdrop.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/material/Backdrop/Backdrop.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _Fade__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Fade */ \"./node_modules/@mui/material/Fade/Fade.js\");\n/* harmony import */ var _backdropClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./backdropClasses */ \"./node_modules/@mui/material/Backdrop/backdropClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"children\", \"component\", \"components\", \"componentsProps\", \"className\", \"invisible\", \"open\", \"slotProps\", \"slots\", \"transitionDuration\", \"TransitionComponent\"];\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    invisible\n  } = ownerState;\n  const slots = {\n    root: ['root', invisible && 'invisible']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _backdropClasses__WEBPACK_IMPORTED_MODULE_6__.getBackdropUtilityClass, classes);\n};\nconst BackdropRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('div', {\n  name: 'MuiBackdrop',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.invisible && styles.invisible];\n  }\n})(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  position: 'fixed',\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  right: 0,\n  bottom: 0,\n  top: 0,\n  left: 0,\n  backgroundColor: 'rgba(0, 0, 0, 0.5)',\n  WebkitTapHighlightColor: 'transparent'\n}, ownerState.invisible && {\n  backgroundColor: 'transparent'\n}));\nconst Backdrop = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Backdrop(inProps, ref) {\n  var _slotProps$root, _ref, _slots$root;\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n    props: inProps,\n    name: 'MuiBackdrop'\n  });\n  const {\n      children,\n      component = 'div',\n      components = {},\n      componentsProps = {},\n      className,\n      invisible = false,\n      open,\n      slotProps = {},\n      slots = {},\n      transitionDuration,\n      // eslint-disable-next-line react/prop-types\n      TransitionComponent = _Fade__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    component,\n    invisible\n  });\n  const classes = useUtilityClasses(ownerState);\n  const rootSlotProps = (_slotProps$root = slotProps.root) != null ? _slotProps$root : componentsProps.root;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TransitionComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    in: open,\n    timeout: transitionDuration\n  }, other, {\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(BackdropRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      \"aria-hidden\": true\n    }, rootSlotProps, {\n      as: (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : component,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className, rootSlotProps == null ? void 0 : rootSlotProps.className),\n      ownerState: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState, rootSlotProps == null ? void 0 : rootSlotProps.ownerState),\n      classes: classes,\n      ref: ref,\n      children: children\n    }))\n  }));\n});\n true ? Backdrop.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: prop_types__WEBPACK_IMPORTED_MODULE_10___default().shape({\n    Root: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType)\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: prop_types__WEBPACK_IMPORTED_MODULE_10___default().shape({\n    root: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)\n  }),\n  /**\n   * If `true`, the backdrop is invisible.\n   * It can be used when rendering a popover or a custom select component.\n   * @default false\n   */\n  invisible: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool.isRequired),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: prop_types__WEBPACK_IMPORTED_MODULE_10___default().shape({\n    root: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: prop_types__WEBPACK_IMPORTED_MODULE_10___default().shape({\n    root: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType)\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)]),\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   */\n  transitionDuration: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().number), prop_types__WEBPACK_IMPORTED_MODULE_10___default().shape({\n    appear: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().number),\n    enter: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().number),\n    exit: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().number)\n  })])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Backdrop);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Backdrop/Backdrop.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Backdrop/backdropClasses.js":
/*!****************************************************************!*\
  !*** ./node_modules/@mui/material/Backdrop/backdropClasses.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getBackdropUtilityClass\": function() { return /* binding */ getBackdropUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getBackdropUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiBackdrop', slot);\n}\nconst backdropClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiBackdrop', ['root', 'invisible']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (backdropClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Backdrop/backdropClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Box/Box.js":
/*!***********************************************!*\
  !*** ./node_modules/@mui/material/Box/Box.js ***!
  \***********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/createBox.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _className__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../className */ \"./node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../styles */ \"./node_modules/@mui/material/styles/createTheme.js\");\n\n\n\n\nconst defaultTheme = (0,_styles__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\nconst Box = (0,_mui_system__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  defaultTheme,\n  defaultClassName: 'MuiBox-root',\n  generateClassName: _className__WEBPACK_IMPORTED_MODULE_2__[\"default\"].generate\n});\n true ? Box.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * @ignore\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().elementType),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_3___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Box);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Box/Box.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Button/Button.js":
/*!*****************************************************!*\
  !*** ./node_modules/@mui/material/Button/Button.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/resolveProps.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/colorManipulator.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _ButtonBase__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../ButtonBase */ \"./node_modules/@mui/material/ButtonBase/ButtonBase.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _buttonClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./buttonClasses */ \"./node_modules/@mui/material/Button/buttonClasses.js\");\n/* harmony import */ var _ButtonGroup_ButtonGroupContext__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../ButtonGroup/ButtonGroupContext */ \"./node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"children\", \"color\", \"component\", \"className\", \"disabled\", \"disableElevation\", \"disableFocusRipple\", \"endIcon\", \"focusVisibleClassName\", \"fullWidth\", \"size\", \"startIcon\", \"type\", \"variant\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    disableElevation,\n    fullWidth,\n    size,\n    variant,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `${variant}${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`, `size${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`, `${variant}Size${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`, color === 'inherit' && 'colorInherit', disableElevation && 'disableElevation', fullWidth && 'fullWidth'],\n    label: ['label'],\n    startIcon: ['startIcon', `iconSize${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`],\n    endIcon: ['endIcon', `iconSize${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`]\n  };\n  const composedClasses = (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _buttonClasses__WEBPACK_IMPORTED_MODULE_7__.getButtonUtilityClass, classes);\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, classes, composedClasses);\n};\nconst commonIconStyles = ownerState => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState.size === 'small' && {\n  '& > *:nth-of-type(1)': {\n    fontSize: 18\n  }\n}, ownerState.size === 'medium' && {\n  '& > *:nth-of-type(1)': {\n    fontSize: 20\n  }\n}, ownerState.size === 'large' && {\n  '& > *:nth-of-type(1)': {\n    fontSize: 22\n  }\n});\nconst ButtonRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_ButtonBase__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n  shouldForwardProp: prop => (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__.rootShouldForwardProp)(prop) || prop === 'classes',\n  name: 'MuiButton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`${ownerState.variant}${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.color)}`], styles[`size${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.size)}`], styles[`${ownerState.variant}Size${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, ownerState.disableElevation && styles.disableElevation, ownerState.fullWidth && styles.fullWidth];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  var _theme$palette$getCon, _theme$palette;\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, theme.typography.button, {\n    minWidth: 64,\n    padding: '6px 16px',\n    borderRadius: (theme.vars || theme).shape.borderRadius,\n    transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color', 'color'], {\n      duration: theme.transitions.duration.short\n    }),\n    '&:hover': (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      textDecoration: 'none',\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_10__.alpha)(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_10__.alpha)(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    }, ownerState.variant === 'outlined' && ownerState.color !== 'inherit' && {\n      border: `1px solid ${(theme.vars || theme).palette[ownerState.color].main}`,\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_10__.alpha)(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    }, ownerState.variant === 'contained' && {\n      backgroundColor: (theme.vars || theme).palette.grey.A100,\n      boxShadow: (theme.vars || theme).shadows[4],\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        boxShadow: (theme.vars || theme).shadows[2],\n        backgroundColor: (theme.vars || theme).palette.grey[300]\n      }\n    }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n      backgroundColor: (theme.vars || theme).palette[ownerState.color].dark,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n      }\n    }),\n    '&:active': (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState.variant === 'contained' && {\n      boxShadow: (theme.vars || theme).shadows[8]\n    }),\n    [`&.${_buttonClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].focusVisible}`]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState.variant === 'contained' && {\n      boxShadow: (theme.vars || theme).shadows[6]\n    }),\n    [`&.${_buttonClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      color: (theme.vars || theme).palette.action.disabled\n    }, ownerState.variant === 'outlined' && {\n      border: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`\n    }, ownerState.variant === 'contained' && {\n      color: (theme.vars || theme).palette.action.disabled,\n      boxShadow: (theme.vars || theme).shadows[0],\n      backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n    })\n  }, ownerState.variant === 'text' && {\n    padding: '6px 8px'\n  }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n    color: (theme.vars || theme).palette[ownerState.color].main\n  }, ownerState.variant === 'outlined' && {\n    padding: '5px 15px',\n    border: '1px solid currentColor'\n  }, ownerState.variant === 'outlined' && ownerState.color !== 'inherit' && {\n    color: (theme.vars || theme).palette[ownerState.color].main,\n    border: theme.vars ? `1px solid rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.5)` : `1px solid ${(0,_mui_system__WEBPACK_IMPORTED_MODULE_10__.alpha)(theme.palette[ownerState.color].main, 0.5)}`\n  }, ownerState.variant === 'contained' && {\n    color: theme.vars ?\n    // this is safe because grey does not change between default light/dark mode\n    theme.vars.palette.text.primary : (_theme$palette$getCon = (_theme$palette = theme.palette).getContrastText) == null ? void 0 : _theme$palette$getCon.call(_theme$palette, theme.palette.grey[300]),\n    backgroundColor: (theme.vars || theme).palette.grey[300],\n    boxShadow: (theme.vars || theme).shadows[2]\n  }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n    color: (theme.vars || theme).palette[ownerState.color].contrastText,\n    backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n  }, ownerState.color === 'inherit' && {\n    color: 'inherit',\n    borderColor: 'currentColor'\n  }, ownerState.size === 'small' && ownerState.variant === 'text' && {\n    padding: '4px 5px',\n    fontSize: theme.typography.pxToRem(13)\n  }, ownerState.size === 'large' && ownerState.variant === 'text' && {\n    padding: '8px 11px',\n    fontSize: theme.typography.pxToRem(15)\n  }, ownerState.size === 'small' && ownerState.variant === 'outlined' && {\n    padding: '3px 9px',\n    fontSize: theme.typography.pxToRem(13)\n  }, ownerState.size === 'large' && ownerState.variant === 'outlined' && {\n    padding: '7px 21px',\n    fontSize: theme.typography.pxToRem(15)\n  }, ownerState.size === 'small' && ownerState.variant === 'contained' && {\n    padding: '4px 10px',\n    fontSize: theme.typography.pxToRem(13)\n  }, ownerState.size === 'large' && ownerState.variant === 'contained' && {\n    padding: '8px 22px',\n    fontSize: theme.typography.pxToRem(15)\n  }, ownerState.fullWidth && {\n    width: '100%'\n  });\n}, ({\n  ownerState\n}) => ownerState.disableElevation && {\n  boxShadow: 'none',\n  '&:hover': {\n    boxShadow: 'none'\n  },\n  [`&.${_buttonClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].focusVisible}`]: {\n    boxShadow: 'none'\n  },\n  '&:active': {\n    boxShadow: 'none'\n  },\n  [`&.${_buttonClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n    boxShadow: 'none'\n  }\n});\nconst ButtonStartIcon = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('span', {\n  name: 'MuiButton',\n  slot: 'StartIcon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.startIcon, styles[`iconSize${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.size)}`]];\n  }\n})(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  display: 'inherit',\n  marginRight: 8,\n  marginLeft: -4\n}, ownerState.size === 'small' && {\n  marginLeft: -2\n}, commonIconStyles(ownerState)));\nconst ButtonEndIcon = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('span', {\n  name: 'MuiButton',\n  slot: 'EndIcon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.endIcon, styles[`iconSize${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.size)}`]];\n  }\n})(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  display: 'inherit',\n  marginRight: -4,\n  marginLeft: 8\n}, ownerState.size === 'small' && {\n  marginRight: -2\n}, commonIconStyles(ownerState)));\nconst Button = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Button(inProps, ref) {\n  // props priority: `inProps` > `contextProps` > `themeDefaultProps`\n  const contextProps = react__WEBPACK_IMPORTED_MODULE_2__.useContext(_ButtonGroup_ButtonGroupContext__WEBPACK_IMPORTED_MODULE_11__[\"default\"]);\n  const resolvedProps = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(contextProps, inProps);\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_13__[\"default\"])({\n    props: resolvedProps,\n    name: 'MuiButton'\n  });\n  const {\n      children,\n      color = 'primary',\n      component = 'button',\n      className,\n      disabled = false,\n      disableElevation = false,\n      disableFocusRipple = false,\n      endIcon: endIconProp,\n      focusVisibleClassName,\n      fullWidth = false,\n      size = 'medium',\n      startIcon: startIconProp,\n      type,\n      variant = 'text'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    color,\n    component,\n    disabled,\n    disableElevation,\n    disableFocusRipple,\n    fullWidth,\n    size,\n    type,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const startIcon = startIconProp && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(ButtonStartIcon, {\n    className: classes.startIcon,\n    ownerState: ownerState,\n    children: startIconProp\n  });\n  const endIcon = endIconProp && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(ButtonEndIcon, {\n    className: classes.endIcon,\n    ownerState: ownerState,\n    children: endIconProp\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(ButtonRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    ownerState: ownerState,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(contextProps.className, classes.root, className),\n    component: component,\n    disabled: disabled,\n    focusRipple: !disableFocusRipple,\n    focusVisibleClassName: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.focusVisible, focusVisibleClassName),\n    ref: ref,\n    type: type\n  }, other, {\n    classes: classes,\n    children: [startIcon, children, endIcon]\n  }));\n});\n true ? Button.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string),\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'primary'\n   */\n  color: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOf(['inherit', 'primary', 'secondary', 'success', 'error', 'info', 'warning']), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string)]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().elementType),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n  /**\n   * If `true`, no elevation is used.\n   * @default false\n   */\n  disableElevation: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n  /**\n   * Element placed after the children.\n   */\n  endIcon: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().node),\n  /**\n   * @ignore\n   */\n  focusVisibleClassName: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string),\n  /**\n   * If `true`, the button will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n  /**\n   * The URL to link to when the button is clicked.\n   * If defined, an `a` element will be used as the root node.\n   */\n  href: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string),\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense button styling.\n   * @default 'medium'\n   */\n  size: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOf(['small', 'medium', 'large']), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string)]),\n  /**\n   * Element placed before the children.\n   */\n  startIcon: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().node),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_14___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object)]),\n  /**\n   * @ignore\n   */\n  type: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOf(['button', 'reset', 'submit']), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string)]),\n  /**\n   * The variant to use.\n   * @default 'text'\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOf(['contained', 'outlined', 'text']), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Button);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Button/Button.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Button/buttonClasses.js":
/*!************************************************************!*\
  !*** ./node_modules/@mui/material/Button/buttonClasses.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getButtonUtilityClass\": function() { return /* binding */ getButtonUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getButtonUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiButton', slot);\n}\nconst buttonClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'textSuccess', 'textError', 'textInfo', 'textWarning', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'outlinedSuccess', 'outlinedError', 'outlinedInfo', 'outlinedWarning', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'containedSuccess', 'containedError', 'containedInfo', 'containedWarning', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (buttonClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Button/buttonClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Button/index.js":
/*!****************************************************!*\
  !*** ./node_modules/@mui/material/Button/index.js ***!
  \****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"buttonClasses\": function() { return /* reexport safe */ _buttonClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; },\n/* harmony export */   \"default\": function() { return /* reexport safe */ _Button__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getButtonUtilityClass\": function() { return /* reexport safe */ _buttonClasses__WEBPACK_IMPORTED_MODULE_1__.getButtonUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Button */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _buttonClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./buttonClasses */ \"./node_modules/@mui/material/Button/buttonClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Button/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/ButtonBase/ButtonBase.js":
/*!*************************************************************!*\
  !*** ./node_modules/@mui/material/ButtonBase/ButtonBase.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ButtonBaseRoot\": function() { return /* binding */ ButtonBaseRoot; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/refType.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/elementTypeAcceptingRef.js\");\n/* harmony import */ var _mui_base_composeClasses__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base/composeClasses */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _utils_useForkRef__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/useForkRef */ \"./node_modules/@mui/material/utils/useForkRef.js\");\n/* harmony import */ var _utils_useEventCallback__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/useEventCallback */ \"./node_modules/@mui/material/utils/useEventCallback.js\");\n/* harmony import */ var _utils_useIsFocusVisible__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/useIsFocusVisible */ \"./node_modules/@mui/material/utils/useIsFocusVisible.js\");\n/* harmony import */ var _TouchRipple__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./TouchRipple */ \"./node_modules/@mui/material/ButtonBase/TouchRipple.js\");\n/* harmony import */ var _buttonBaseClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./buttonBaseClasses */ \"./node_modules/@mui/material/ButtonBase/buttonBaseClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"action\", \"centerRipple\", \"children\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"LinkComponent\", \"onBlur\", \"onClick\", \"onContextMenu\", \"onDragLeave\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"tabIndex\", \"TouchRippleProps\", \"touchRippleRef\", \"type\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    disabled,\n    focusVisible,\n    focusVisibleClassName,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n  };\n  const composedClasses = (0,_mui_base_composeClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _buttonBaseClasses__WEBPACK_IMPORTED_MODULE_6__.getButtonBaseUtilityClass, classes);\n  if (focusVisible && focusVisibleClassName) {\n    composedClasses.root += ` ${focusVisibleClassName}`;\n  }\n  return composedClasses;\n};\nconst ButtonBaseRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('button', {\n  name: 'MuiButtonBase',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'inline-flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  position: 'relative',\n  boxSizing: 'border-box',\n  WebkitTapHighlightColor: 'transparent',\n  backgroundColor: 'transparent',\n  // Reset default value\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0,\n  border: 0,\n  margin: 0,\n  // Remove the margin in Safari\n  borderRadius: 0,\n  padding: 0,\n  // Remove the padding in Firefox\n  cursor: 'pointer',\n  userSelect: 'none',\n  verticalAlign: 'middle',\n  MozAppearance: 'none',\n  // Reset\n  WebkitAppearance: 'none',\n  // Reset\n  textDecoration: 'none',\n  // So we take precedent over the style of a native <a /> element.\n  color: 'inherit',\n  '&::-moz-focus-inner': {\n    borderStyle: 'none' // Remove Firefox dotted outline.\n  },\n\n  [`&.${_buttonBaseClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].disabled}`]: {\n    pointerEvents: 'none',\n    // Disable link interactions\n    cursor: 'default'\n  },\n  '@media print': {\n    colorAdjust: 'exact'\n  }\n});\n\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\nconst ButtonBase = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function ButtonBase(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n    props: inProps,\n    name: 'MuiButtonBase'\n  });\n  const {\n      action,\n      centerRipple = false,\n      children,\n      className,\n      component = 'button',\n      disabled = false,\n      disableRipple = false,\n      disableTouchRipple = false,\n      focusRipple = false,\n      LinkComponent = 'a',\n      onBlur,\n      onClick,\n      onContextMenu,\n      onDragLeave,\n      onFocus,\n      onFocusVisible,\n      onKeyDown,\n      onKeyUp,\n      onMouseDown,\n      onMouseLeave,\n      onMouseUp,\n      onTouchEnd,\n      onTouchMove,\n      onTouchStart,\n      tabIndex = 0,\n      TouchRippleProps,\n      touchRippleRef,\n      type\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const buttonRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const rippleRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const handleRippleRef = (0,_utils_useForkRef__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(rippleRef, touchRippleRef);\n  const {\n    isFocusVisibleRef,\n    onFocus: handleFocusVisible,\n    onBlur: handleBlurVisible,\n    ref: focusVisibleRef\n  } = (0,_utils_useIsFocusVisible__WEBPACK_IMPORTED_MODULE_10__[\"default\"])();\n  const [focusVisible, setFocusVisible] = react__WEBPACK_IMPORTED_MODULE_2__.useState(false);\n  if (disabled && focusVisible) {\n    setFocusVisible(false);\n  }\n  react__WEBPACK_IMPORTED_MODULE_2__.useImperativeHandle(action, () => ({\n    focusVisible: () => {\n      setFocusVisible(true);\n      buttonRef.current.focus();\n    }\n  }), []);\n  const [mountedState, setMountedState] = react__WEBPACK_IMPORTED_MODULE_2__.useState(false);\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    setMountedState(true);\n  }, []);\n  const enableTouchRipple = mountedState && !disableRipple && !disabled;\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    if (focusVisible && focusRipple && !disableRipple && mountedState) {\n      rippleRef.current.pulsate();\n    }\n  }, [disableRipple, focusRipple, focusVisible, mountedState]);\n  function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) {\n    return (0,_utils_useEventCallback__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(event => {\n      if (eventCallback) {\n        eventCallback(event);\n      }\n      const ignore = skipRippleAction;\n      if (!ignore && rippleRef.current) {\n        rippleRef.current[rippleAction](event);\n      }\n      return true;\n    });\n  }\n  const handleMouseDown = useRippleHandler('start', onMouseDown);\n  const handleContextMenu = useRippleHandler('stop', onContextMenu);\n  const handleDragLeave = useRippleHandler('stop', onDragLeave);\n  const handleMouseUp = useRippleHandler('stop', onMouseUp);\n  const handleMouseLeave = useRippleHandler('stop', event => {\n    if (focusVisible) {\n      event.preventDefault();\n    }\n    if (onMouseLeave) {\n      onMouseLeave(event);\n    }\n  });\n  const handleTouchStart = useRippleHandler('start', onTouchStart);\n  const handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n  const handleTouchMove = useRippleHandler('stop', onTouchMove);\n  const handleBlur = useRippleHandler('stop', event => {\n    handleBlurVisible(event);\n    if (isFocusVisibleRef.current === false) {\n      setFocusVisible(false);\n    }\n    if (onBlur) {\n      onBlur(event);\n    }\n  }, false);\n  const handleFocus = (0,_utils_useEventCallback__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(event => {\n    // Fix for https://github.com/facebook/react/issues/7769\n    if (!buttonRef.current) {\n      buttonRef.current = event.currentTarget;\n    }\n    handleFocusVisible(event);\n    if (isFocusVisibleRef.current === true) {\n      setFocusVisible(true);\n      if (onFocusVisible) {\n        onFocusVisible(event);\n      }\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  });\n  const isNonNativeButton = () => {\n    const button = buttonRef.current;\n    return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n  };\n\n  /**\n   * IE11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n   */\n  const keydownRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(false);\n  const handleKeyDown = (0,_utils_useEventCallback__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(event => {\n    // Check if key is already down to avoid repeats being counted as multiple activations\n    if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n      keydownRef.current = true;\n      rippleRef.current.stop(event, () => {\n        rippleRef.current.start(event);\n      });\n    }\n    if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n      event.preventDefault();\n    }\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n\n    // Keyboard accessibility for non interactive elements\n    if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n      event.preventDefault();\n      if (onClick) {\n        onClick(event);\n      }\n    }\n  });\n  const handleKeyUp = (0,_utils_useEventCallback__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(event => {\n    // calling preventDefault in keyUp on a <button> will not dispatch a click event if Space is pressed\n    // https://codesandbox.io/s/button-keyup-preventdefault-dn7f0\n    if (focusRipple && event.key === ' ' && rippleRef.current && focusVisible && !event.defaultPrevented) {\n      keydownRef.current = false;\n      rippleRef.current.stop(event, () => {\n        rippleRef.current.pulsate(event);\n      });\n    }\n    if (onKeyUp) {\n      onKeyUp(event);\n    }\n\n    // Keyboard accessibility for non interactive elements\n    if (onClick && event.target === event.currentTarget && isNonNativeButton() && event.key === ' ' && !event.defaultPrevented) {\n      onClick(event);\n    }\n  });\n  let ComponentProp = component;\n  if (ComponentProp === 'button' && (other.href || other.to)) {\n    ComponentProp = LinkComponent;\n  }\n  const buttonProps = {};\n  if (ComponentProp === 'button') {\n    buttonProps.type = type === undefined ? 'button' : type;\n    buttonProps.disabled = disabled;\n  } else {\n    if (!other.href && !other.to) {\n      buttonProps.role = 'button';\n    }\n    if (disabled) {\n      buttonProps['aria-disabled'] = disabled;\n    }\n  }\n  const handleRef = (0,_utils_useForkRef__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(ref, focusVisibleRef, buttonRef);\n  if (true) {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n      if (enableTouchRipple && !rippleRef.current) {\n        console.error(['MUI: The `component` prop provided to ButtonBase is invalid.', 'Please make sure the children prop is rendered in this custom component.'].join('\\n'));\n      }\n    }, [enableTouchRipple]);\n  }\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n    centerRipple,\n    component,\n    disabled,\n    disableRipple,\n    disableTouchRipple,\n    focusRipple,\n    tabIndex,\n    focusVisible\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(ButtonBaseRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    as: ComponentProp,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    ownerState: ownerState,\n    onBlur: handleBlur,\n    onClick: onClick,\n    onContextMenu: handleContextMenu,\n    onFocus: handleFocus,\n    onKeyDown: handleKeyDown,\n    onKeyUp: handleKeyUp,\n    onMouseDown: handleMouseDown,\n    onMouseLeave: handleMouseLeave,\n    onMouseUp: handleMouseUp,\n    onDragLeave: handleDragLeave,\n    onTouchEnd: handleTouchEnd,\n    onTouchMove: handleTouchMove,\n    onTouchStart: handleTouchStart,\n    ref: handleRef,\n    tabIndex: disabled ? -1 : tabIndex,\n    type: type\n  }, buttonProps, other, {\n    children: [children, enableTouchRipple ?\n    /*#__PURE__*/\n    /* TouchRipple is only needed client-side, x2 boost on the server. */\n    (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_TouchRipple__WEBPACK_IMPORTED_MODULE_12__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      ref: handleRippleRef,\n      center: centerRipple\n    }, TouchRippleProps)) : null]\n  }));\n});\n true ? ButtonBase.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * A ref for imperative actions.\n   * It currently only supports `focusVisible()` action.\n   */\n  action: _mui_utils__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n  /**\n   * If `true`, the ripples are centered.\n   * They won't start at the cursor interaction position.\n   * @default false\n   */\n  centerRipple: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: _mui_utils__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n  /**\n   * If `true`, the touch ripple effect is disabled.\n   * @default false\n   */\n  disableTouchRipple: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n  /**\n   * If `true`, the base button will have a keyboard focus ripple.\n   * @default false\n   */\n  focusRipple: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string),\n  /**\n   * @ignore\n   */\n  href: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().any),\n  /**\n   * The component used to render a link when the `href` prop is provided.\n   * @default 'a'\n   */\n  LinkComponent: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().elementType),\n  /**\n   * @ignore\n   */\n  onBlur: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onClick: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onContextMenu: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onDragLeave: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onFocus: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * Callback fired when the component is focused with a keyboard.\n   * We trigger a `onFocus` callback too.\n   */\n  onFocusVisible: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onKeyUp: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onMouseDown: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onMouseLeave: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onMouseUp: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onTouchEnd: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onTouchMove: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onTouchStart: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_14___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object)]),\n  /**\n   * @default 0\n   */\n  tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().number),\n  /**\n   * Props applied to the `TouchRipple` element.\n   */\n  TouchRippleProps: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object),\n  /**\n   * A ref that points to the `TouchRipple` element.\n   */\n  touchRippleRef: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_14___default().func), prop_types__WEBPACK_IMPORTED_MODULE_14___default().shape({\n    current: prop_types__WEBPACK_IMPORTED_MODULE_14___default().shape({\n      pulsate: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func.isRequired),\n      start: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func.isRequired),\n      stop: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func.isRequired)\n    })\n  })]),\n  /**\n   * @ignore\n   */\n  type: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOf(['button', 'reset', 'submit']), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (ButtonBase);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/ButtonBase/ButtonBase.js?");

/***/ }),

/***/ "./node_modules/@mui/material/ButtonBase/Ripple.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/material/ButtonBase/Ripple.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n/**\n * @ignore - internal component.\n */\n\nfunction Ripple(props) {\n  const {\n    className,\n    classes,\n    pulsate = false,\n    rippleX,\n    rippleY,\n    rippleSize,\n    in: inProp,\n    onExited,\n    timeout\n  } = props;\n  const [leaving, setLeaving] = react__WEBPACK_IMPORTED_MODULE_0__.useState(false);\n  const rippleClassName = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n  const rippleStyles = {\n    width: rippleSize,\n    height: rippleSize,\n    top: -(rippleSize / 2) + rippleY,\n    left: -(rippleSize / 2) + rippleX\n  };\n  const childClassName = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n  if (!inProp && !leaving) {\n    setLeaving(true);\n  }\n  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n    if (!inProp && onExited != null) {\n      // react-transition-group#onExited\n      const timeoutId = setTimeout(onExited, timeout);\n      return () => {\n        clearTimeout(timeoutId);\n      };\n    }\n    return undefined;\n  }, [onExited, inProp, timeout]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n    className: rippleClassName,\n    style: rippleStyles,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(\"span\", {\n      className: childClassName\n    })\n  });\n}\n true ? Ripple.propTypes = {\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object.isRequired),\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n  /**\n   * @ignore - injected from TransitionGroup\n   */\n  in: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n  /**\n   * @ignore - injected from TransitionGroup\n   */\n  onExited: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n  /**\n   * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n   */\n  pulsate: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n  /**\n   * Diameter of the ripple.\n   */\n  rippleSize: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n  /**\n   * Horizontal position of the ripple center.\n   */\n  rippleX: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n  /**\n   * Vertical position of the ripple center.\n   */\n  rippleY: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n  /**\n   * exit delay\n   */\n  timeout: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number.isRequired)\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Ripple);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/ButtonBase/Ripple.js?");

/***/ }),

/***/ "./node_modules/@mui/material/ButtonBase/TouchRipple.js":
/*!**************************************************************!*\
  !*** ./node_modules/@mui/material/ButtonBase/TouchRipple.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DELAY_RIPPLE\": function() { return /* binding */ DELAY_RIPPLE; },\n/* harmony export */   \"TouchRippleRipple\": function() { return /* binding */ TouchRippleRipple; },\n/* harmony export */   \"TouchRippleRoot\": function() { return /* binding */ TouchRippleRoot; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var react_transition_group__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-transition-group */ \"./node_modules/react-transition-group/esm/TransitionGroup.js\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@emotion/react/dist/emotion-react.browser.esm.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _Ripple__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Ripple */ \"./node_modules/@mui/material/ButtonBase/Ripple.js\");\n/* harmony import */ var _touchRippleClasses__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./touchRippleClasses */ \"./node_modules/@mui/material/ButtonBase/touchRippleClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"center\", \"classes\", \"className\"];\nlet _ = t => t,\n  _t,\n  _t2,\n  _t3,\n  _t4;\n\n\n\n\n\n\n\n\n\n\nconst DURATION = 550;\nconst DELAY_RIPPLE = 80;\nconst enterKeyframe = (0,_mui_system__WEBPACK_IMPORTED_MODULE_5__.keyframes)(_t || (_t = _`\n  0% {\n    transform: scale(0);\n    opacity: 0.1;\n  }\n\n  100% {\n    transform: scale(1);\n    opacity: 0.3;\n  }\n`));\nconst exitKeyframe = (0,_mui_system__WEBPACK_IMPORTED_MODULE_5__.keyframes)(_t2 || (_t2 = _`\n  0% {\n    opacity: 1;\n  }\n\n  100% {\n    opacity: 0;\n  }\n`));\nconst pulsateKeyframe = (0,_mui_system__WEBPACK_IMPORTED_MODULE_5__.keyframes)(_t3 || (_t3 = _`\n  0% {\n    transform: scale(1);\n  }\n\n  50% {\n    transform: scale(0.92);\n  }\n\n  100% {\n    transform: scale(1);\n  }\n`));\nconst TouchRippleRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_6__[\"default\"])('span', {\n  name: 'MuiTouchRipple',\n  slot: 'Root'\n})({\n  overflow: 'hidden',\n  pointerEvents: 'none',\n  position: 'absolute',\n  zIndex: 0,\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0,\n  borderRadius: 'inherit'\n});\n\n// This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\nconst TouchRippleRipple = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_Ripple__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n  name: 'MuiTouchRipple',\n  slot: 'Ripple'\n})(_t4 || (_t4 = _`\n  opacity: 0;\n  position: absolute;\n\n  &.${0} {\n    opacity: 0.3;\n    transform: scale(1);\n    animation-name: ${0};\n    animation-duration: ${0}ms;\n    animation-timing-function: ${0};\n  }\n\n  &.${0} {\n    animation-duration: ${0}ms;\n  }\n\n  & .${0} {\n    opacity: 1;\n    display: block;\n    width: 100%;\n    height: 100%;\n    border-radius: 50%;\n    background-color: currentColor;\n  }\n\n  & .${0} {\n    opacity: 0;\n    animation-name: ${0};\n    animation-duration: ${0}ms;\n    animation-timing-function: ${0};\n  }\n\n  & .${0} {\n    position: absolute;\n    /* @noflip */\n    left: 0px;\n    top: 0;\n    animation-name: ${0};\n    animation-duration: 2500ms;\n    animation-timing-function: ${0};\n    animation-iteration-count: infinite;\n    animation-delay: 200ms;\n  }\n`), _touchRippleClasses__WEBPACK_IMPORTED_MODULE_8__[\"default\"].rippleVisible, enterKeyframe, DURATION, ({\n  theme\n}) => theme.transitions.easing.easeInOut, _touchRippleClasses__WEBPACK_IMPORTED_MODULE_8__[\"default\"].ripplePulsate, ({\n  theme\n}) => theme.transitions.duration.shorter, _touchRippleClasses__WEBPACK_IMPORTED_MODULE_8__[\"default\"].child, _touchRippleClasses__WEBPACK_IMPORTED_MODULE_8__[\"default\"].childLeaving, exitKeyframe, DURATION, ({\n  theme\n}) => theme.transitions.easing.easeInOut, _touchRippleClasses__WEBPACK_IMPORTED_MODULE_8__[\"default\"].childPulsate, pulsateKeyframe, ({\n  theme\n}) => theme.transitions.easing.easeInOut);\n\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\nconst TouchRipple = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function TouchRipple(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({\n    props: inProps,\n    name: 'MuiTouchRipple'\n  });\n  const {\n      center: centerProp = false,\n      classes = {},\n      className\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const [ripples, setRipples] = react__WEBPACK_IMPORTED_MODULE_2__.useState([]);\n  const nextKey = react__WEBPACK_IMPORTED_MODULE_2__.useRef(0);\n  const rippleCallback = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    if (rippleCallback.current) {\n      rippleCallback.current();\n      rippleCallback.current = null;\n    }\n  }, [ripples]);\n\n  // Used to filter out mouse emulated events on mobile.\n  const ignoringMouseDown = react__WEBPACK_IMPORTED_MODULE_2__.useRef(false);\n  // We use a timer in order to only show the ripples for touch \"click\" like events.\n  // We don't want to display the ripple for touch scroll events.\n  const startTimer = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n\n  // This is the hook called once the previous timeout is ready.\n  const startTimerCommit = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const container = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    return () => {\n      clearTimeout(startTimer.current);\n    };\n  }, []);\n  const startCommit = react__WEBPACK_IMPORTED_MODULE_2__.useCallback(params => {\n    const {\n      pulsate,\n      rippleX,\n      rippleY,\n      rippleSize,\n      cb\n    } = params;\n    setRipples(oldRipples => [...oldRipples, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TouchRippleRipple, {\n      classes: {\n        ripple: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.ripple, _touchRippleClasses__WEBPACK_IMPORTED_MODULE_8__[\"default\"].ripple),\n        rippleVisible: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.rippleVisible, _touchRippleClasses__WEBPACK_IMPORTED_MODULE_8__[\"default\"].rippleVisible),\n        ripplePulsate: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.ripplePulsate, _touchRippleClasses__WEBPACK_IMPORTED_MODULE_8__[\"default\"].ripplePulsate),\n        child: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.child, _touchRippleClasses__WEBPACK_IMPORTED_MODULE_8__[\"default\"].child),\n        childLeaving: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.childLeaving, _touchRippleClasses__WEBPACK_IMPORTED_MODULE_8__[\"default\"].childLeaving),\n        childPulsate: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.childPulsate, _touchRippleClasses__WEBPACK_IMPORTED_MODULE_8__[\"default\"].childPulsate)\n      },\n      timeout: DURATION,\n      pulsate: pulsate,\n      rippleX: rippleX,\n      rippleY: rippleY,\n      rippleSize: rippleSize\n    }, nextKey.current)]);\n    nextKey.current += 1;\n    rippleCallback.current = cb;\n  }, [classes]);\n  const start = react__WEBPACK_IMPORTED_MODULE_2__.useCallback((event = {}, options = {}, cb = () => {}) => {\n    const {\n      pulsate = false,\n      center = centerProp || options.pulsate,\n      fakeElement = false // For test purposes\n    } = options;\n    if ((event == null ? void 0 : event.type) === 'mousedown' && ignoringMouseDown.current) {\n      ignoringMouseDown.current = false;\n      return;\n    }\n    if ((event == null ? void 0 : event.type) === 'touchstart') {\n      ignoringMouseDown.current = true;\n    }\n    const element = fakeElement ? null : container.current;\n    const rect = element ? element.getBoundingClientRect() : {\n      width: 0,\n      height: 0,\n      left: 0,\n      top: 0\n    };\n\n    // Get the size of the ripple\n    let rippleX;\n    let rippleY;\n    let rippleSize;\n    if (center || event === undefined || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n      rippleX = Math.round(rect.width / 2);\n      rippleY = Math.round(rect.height / 2);\n    } else {\n      const {\n        clientX,\n        clientY\n      } = event.touches && event.touches.length > 0 ? event.touches[0] : event;\n      rippleX = Math.round(clientX - rect.left);\n      rippleY = Math.round(clientY - rect.top);\n    }\n    if (center) {\n      rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);\n\n      // For some reason the animation is broken on Mobile Chrome if the size is even.\n      if (rippleSize % 2 === 0) {\n        rippleSize += 1;\n      }\n    } else {\n      const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n      const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n      rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n    }\n\n    // Touche devices\n    if (event != null && event.touches) {\n      // check that this isn't another touchstart due to multitouch\n      // otherwise we will only clear a single timer when unmounting while two\n      // are running\n      if (startTimerCommit.current === null) {\n        // Prepare the ripple effect.\n        startTimerCommit.current = () => {\n          startCommit({\n            pulsate,\n            rippleX,\n            rippleY,\n            rippleSize,\n            cb\n          });\n        };\n        // Delay the execution of the ripple effect.\n        startTimer.current = setTimeout(() => {\n          if (startTimerCommit.current) {\n            startTimerCommit.current();\n            startTimerCommit.current = null;\n          }\n        }, DELAY_RIPPLE); // We have to make a tradeoff with this value.\n      }\n    } else {\n      startCommit({\n        pulsate,\n        rippleX,\n        rippleY,\n        rippleSize,\n        cb\n      });\n    }\n  }, [centerProp, startCommit]);\n  const pulsate = react__WEBPACK_IMPORTED_MODULE_2__.useCallback(() => {\n    start({}, {\n      pulsate: true\n    });\n  }, [start]);\n  const stop = react__WEBPACK_IMPORTED_MODULE_2__.useCallback((event, cb) => {\n    clearTimeout(startTimer.current);\n\n    // The touch interaction occurs too quickly.\n    // We still want to show ripple effect.\n    if ((event == null ? void 0 : event.type) === 'touchend' && startTimerCommit.current) {\n      startTimerCommit.current();\n      startTimerCommit.current = null;\n      startTimer.current = setTimeout(() => {\n        stop(event, cb);\n      });\n      return;\n    }\n    startTimerCommit.current = null;\n    setRipples(oldRipples => {\n      if (oldRipples.length > 0) {\n        return oldRipples.slice(1);\n      }\n      return oldRipples;\n    });\n    rippleCallback.current = cb;\n  }, []);\n  react__WEBPACK_IMPORTED_MODULE_2__.useImperativeHandle(ref, () => ({\n    pulsate,\n    start,\n    stop\n  }), [pulsate, start, stop]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TouchRippleRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_touchRippleClasses__WEBPACK_IMPORTED_MODULE_8__[\"default\"].root, classes.root, className),\n    ref: container\n  }, other, {\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(react_transition_group__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n      component: null,\n      exit: true,\n      children: ripples\n    })\n  }));\n});\n true ? TouchRipple.propTypes = {\n  /**\n   * If `true`, the ripple starts at the center of the component\n   * rather than at the point of interaction.\n   */\n  center: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string)\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (TouchRipple);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/ButtonBase/TouchRipple.js?");

/***/ }),

/***/ "./node_modules/@mui/material/ButtonBase/buttonBaseClasses.js":
/*!********************************************************************!*\
  !*** ./node_modules/@mui/material/ButtonBase/buttonBaseClasses.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getButtonBaseUtilityClass\": function() { return /* binding */ getButtonBaseUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getButtonBaseUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiButtonBase', slot);\n}\nconst buttonBaseClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiButtonBase', ['root', 'disabled', 'focusVisible']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (buttonBaseClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/ButtonBase/buttonBaseClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/ButtonBase/touchRippleClasses.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@mui/material/ButtonBase/touchRippleClasses.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTouchRippleUtilityClass\": function() { return /* binding */ getTouchRippleUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getTouchRippleUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiTouchRipple', slot);\n}\nconst touchRippleClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (touchRippleClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/ButtonBase/touchRippleClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\n * @ignore - internal component.\n */\nconst ButtonGroupContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext({});\nif (true) {\n  ButtonGroupContext.displayName = 'ButtonGroupContext';\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (ButtonGroupContext);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Checkbox/Checkbox.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/material/Checkbox/Checkbox.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/refType.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/colorManipulator.js\");\n/* harmony import */ var _internal_SwitchBase__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../internal/SwitchBase */ \"./node_modules/@mui/material/internal/SwitchBase.js\");\n/* harmony import */ var _internal_svg_icons_CheckBoxOutlineBlank__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../internal/svg-icons/CheckBoxOutlineBlank */ \"./node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js\");\n/* harmony import */ var _internal_svg_icons_CheckBox__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../internal/svg-icons/CheckBox */ \"./node_modules/@mui/material/internal/svg-icons/CheckBox.js\");\n/* harmony import */ var _internal_svg_icons_IndeterminateCheckBox__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../internal/svg-icons/IndeterminateCheckBox */ \"./node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _checkboxClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./checkboxClasses */ \"./node_modules/@mui/material/Checkbox/checkboxClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"checkedIcon\", \"color\", \"icon\", \"indeterminate\", \"indeterminateIcon\", \"inputProps\", \"size\", \"className\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    indeterminate,\n    color\n  } = ownerState;\n  const slots = {\n    root: ['root', indeterminate && 'indeterminate', `color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`]\n  };\n  const composedClasses = (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _checkboxClasses__WEBPACK_IMPORTED_MODULE_7__.getCheckboxUtilityClass, classes);\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, classes, composedClasses);\n};\nconst CheckboxRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_internal_SwitchBase__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n  shouldForwardProp: prop => (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__.rootShouldForwardProp)(prop) || prop === 'classes',\n  name: 'MuiCheckbox',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.indeterminate && styles.indeterminate, ownerState.color !== 'default' && styles[`color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.color)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  color: (theme.vars || theme).palette.text.secondary\n}, !ownerState.disableRipple && {\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${ownerState.color === 'default' ? theme.vars.palette.action.activeChannel : theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_10__.alpha)(ownerState.color === 'default' ? theme.palette.action.active : theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  }\n}, ownerState.color !== 'default' && {\n  [`&.${_checkboxClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].checked}, &.${_checkboxClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].indeterminate}`]: {\n    color: (theme.vars || theme).palette[ownerState.color].main\n  },\n  [`&.${_checkboxClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled\n  }\n}));\nconst defaultCheckedIcon = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_internal_svg_icons_CheckBox__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {});\nconst defaultIcon = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_internal_svg_icons_CheckBoxOutlineBlank__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {});\nconst defaultIndeterminateIcon = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_internal_svg_icons_IndeterminateCheckBox__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {});\nconst Checkbox = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Checkbox(inProps, ref) {\n  var _icon$props$fontSize, _indeterminateIcon$pr;\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_14__[\"default\"])({\n    props: inProps,\n    name: 'MuiCheckbox'\n  });\n  const {\n      checkedIcon = defaultCheckedIcon,\n      color = 'primary',\n      icon: iconProp = defaultIcon,\n      indeterminate = false,\n      indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,\n      inputProps,\n      size = 'medium',\n      className\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const icon = indeterminate ? indeterminateIconProp : iconProp;\n  const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    color,\n    indeterminate,\n    size\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(CheckboxRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    type: \"checkbox\",\n    inputProps: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      'data-indeterminate': indeterminate\n    }, inputProps),\n    icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(icon, {\n      fontSize: (_icon$props$fontSize = icon.props.fontSize) != null ? _icon$props$fontSize : size\n    }),\n    checkedIcon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(indeterminateIcon, {\n      fontSize: (_indeterminateIcon$pr = indeterminateIcon.props.fontSize) != null ? _indeterminateIcon$pr : size\n    }),\n    ownerState: ownerState,\n    ref: ref,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className)\n  }, other, {\n    classes: classes\n  }));\n});\n true ? Checkbox.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * The icon to display when the component is checked.\n   * @default <CheckBoxIcon />\n   */\n  checkedIcon: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().string),\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'primary'\n   */\n  color: prop_types__WEBPACK_IMPORTED_MODULE_15___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_15___default().oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), (prop_types__WEBPACK_IMPORTED_MODULE_15___default().string)]),\n  /**\n   * The default checked state. Use when the component is not controlled.\n   */\n  defaultChecked: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * If `true`, the ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * The icon to display when the component is unchecked.\n   * @default <CheckBoxOutlineBlankIcon />\n   */\n  icon: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().node),\n  /**\n   * The id of the `input` element.\n   */\n  id: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().string),\n  /**\n   * If `true`, the component appears indeterminate.\n   * This does not set the native input element to indeterminate due\n   * to inconsistent behavior across browsers.\n   * However, we set a `data-indeterminate` attribute on the `input`.\n   * @default false\n   */\n  indeterminate: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * The icon to display when the component is indeterminate.\n   * @default <IndeterminateCheckBoxIcon />\n   */\n  indeterminateIcon: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().node),\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object),\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: _mui_utils__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func),\n  /**\n   * If `true`, the `input` element is required.\n   * @default false\n   */\n  required: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense checkbox styling.\n   * @default 'medium'\n   */\n  size: prop_types__WEBPACK_IMPORTED_MODULE_15___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_15___default().oneOf(['medium', 'small']), (prop_types__WEBPACK_IMPORTED_MODULE_15___default().string)]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_15___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_15___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_15___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_15___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object)]),\n  /**\n   * The value of the component. The DOM API casts this to a string.\n   * The browser uses \"on\" as the default value.\n   */\n  value: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().any)\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Checkbox);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Checkbox/Checkbox.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Checkbox/checkboxClasses.js":
/*!****************************************************************!*\
  !*** ./node_modules/@mui/material/Checkbox/checkboxClasses.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getCheckboxUtilityClass\": function() { return /* binding */ getCheckboxUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getCheckboxUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiCheckbox', slot);\n}\nconst checkboxClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (checkboxClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Checkbox/checkboxClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Checkbox/index.js":
/*!******************************************************!*\
  !*** ./node_modules/@mui/material/Checkbox/index.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"checkboxClasses\": function() { return /* reexport safe */ _checkboxClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; },\n/* harmony export */   \"default\": function() { return /* reexport safe */ _Checkbox__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getCheckboxUtilityClass\": function() { return /* reexport safe */ _checkboxClasses__WEBPACK_IMPORTED_MODULE_1__.getCheckboxUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _Checkbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Checkbox */ \"./node_modules/@mui/material/Checkbox/Checkbox.js\");\n/* harmony import */ var _checkboxClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./checkboxClasses */ \"./node_modules/@mui/material/Checkbox/checkboxClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Checkbox/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Chip/Chip.js":
/*!*************************************************!*\
  !*** ./node_modules/@mui/material/Chip/Chip.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/colorManipulator.js\");\n/* harmony import */ var _internal_svg_icons_Cancel__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../internal/svg-icons/Cancel */ \"./node_modules/@mui/material/internal/svg-icons/Cancel.js\");\n/* harmony import */ var _utils_useForkRef__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/useForkRef */ \"./node_modules/@mui/material/utils/useForkRef.js\");\n/* harmony import */ var _utils_unsupportedProp__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/unsupportedProp */ \"./node_modules/@mui/material/utils/unsupportedProp.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _ButtonBase__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../ButtonBase */ \"./node_modules/@mui/material/ButtonBase/ButtonBase.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _chipClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./chipClasses */ \"./node_modules/@mui/material/Chip/chipClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"avatar\", \"className\", \"clickable\", \"color\", \"component\", \"deleteIcon\", \"disabled\", \"icon\", \"label\", \"onClick\", \"onDelete\", \"onKeyDown\", \"onKeyUp\", \"size\", \"variant\", \"tabIndex\", \"skipFocusWhenDisabled\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disabled,\n    size,\n    color,\n    iconColor,\n    onDelete,\n    clickable,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, disabled && 'disabled', `size${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`, `color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`, clickable && 'clickable', clickable && `clickableColor${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`, onDelete && 'deletable', onDelete && `deletableColor${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`, `${variant}${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`],\n    label: ['label', `label${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`],\n    avatar: ['avatar', `avatar${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`, `avatarColor${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`],\n    icon: ['icon', `icon${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`, `iconColor${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(iconColor)}`],\n    deleteIcon: ['deleteIcon', `deleteIcon${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`, `deleteIconColor${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`, `deleteIcon${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(variant)}Color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`]\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _chipClasses__WEBPACK_IMPORTED_MODULE_7__.getChipUtilityClass, classes);\n};\nconst ChipRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n  name: 'MuiChip',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      color,\n      iconColor,\n      clickable,\n      onDelete,\n      size,\n      variant\n    } = ownerState;\n    return [{\n      [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].avatar}`]: styles.avatar\n    }, {\n      [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].avatar}`]: styles[`avatar${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`]\n    }, {\n      [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].avatar}`]: styles[`avatarColor${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`]\n    }, {\n      [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].icon}`]: styles.icon\n    }, {\n      [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].icon}`]: styles[`icon${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`]\n    }, {\n      [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].icon}`]: styles[`iconColor${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(iconColor)}`]\n    }, {\n      [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].deleteIcon}`]: styles.deleteIcon\n    }, {\n      [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].deleteIcon}`]: styles[`deleteIcon${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`]\n    }, {\n      [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].deleteIcon}`]: styles[`deleteIconColor${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`]\n    }, {\n      [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].deleteIcon}`]: styles[`deleteIcon${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(variant)}Color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`]\n    }, styles.root, styles[`size${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`], styles[`color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`], clickable && styles.clickable, clickable && color !== 'default' && styles[`clickableColor${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)})`], onDelete && styles.deletable, onDelete && color !== 'default' && styles[`deletableColor${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`], styles[variant], styles[`${variant}${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  const deleteIconColor = (0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.alpha)(theme.palette.text.primary, 0.26);\n  const textColor = theme.palette.mode === 'light' ? theme.palette.grey[700] : theme.palette.grey[300];\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    maxWidth: '100%',\n    fontFamily: theme.typography.fontFamily,\n    fontSize: theme.typography.pxToRem(13),\n    display: 'inline-flex',\n    alignItems: 'center',\n    justifyContent: 'center',\n    height: 32,\n    color: (theme.vars || theme).palette.text.primary,\n    backgroundColor: (theme.vars || theme).palette.action.selected,\n    borderRadius: 32 / 2,\n    whiteSpace: 'nowrap',\n    transition: theme.transitions.create(['background-color', 'box-shadow']),\n    // label will inherit this from root, then `clickable` class overrides this for both\n    cursor: 'default',\n    // We disable the focus ring for mouse, touch and keyboard users.\n    outline: 0,\n    textDecoration: 'none',\n    border: 0,\n    // Remove `button` border\n    padding: 0,\n    // Remove `button` padding\n    verticalAlign: 'middle',\n    boxSizing: 'border-box',\n    [`&.${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n      opacity: (theme.vars || theme).palette.action.disabledOpacity,\n      pointerEvents: 'none'\n    },\n    [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].avatar}`]: {\n      marginLeft: 5,\n      marginRight: -6,\n      width: 24,\n      height: 24,\n      color: theme.vars ? theme.vars.palette.Chip.defaultAvatarColor : textColor,\n      fontSize: theme.typography.pxToRem(12)\n    },\n    [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].avatarColorPrimary}`]: {\n      color: (theme.vars || theme).palette.primary.contrastText,\n      backgroundColor: (theme.vars || theme).palette.primary.dark\n    },\n    [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].avatarColorSecondary}`]: {\n      color: (theme.vars || theme).palette.secondary.contrastText,\n      backgroundColor: (theme.vars || theme).palette.secondary.dark\n    },\n    [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].avatarSmall}`]: {\n      marginLeft: 4,\n      marginRight: -4,\n      width: 18,\n      height: 18,\n      fontSize: theme.typography.pxToRem(10)\n    },\n    [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].icon}`]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      marginLeft: 5,\n      marginRight: -6\n    }, ownerState.size === 'small' && {\n      fontSize: 18,\n      marginLeft: 4,\n      marginRight: -4\n    }, ownerState.iconColor === ownerState.color && (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      color: theme.vars ? theme.vars.palette.Chip.defaultIconColor : textColor\n    }, ownerState.color !== 'default' && {\n      color: 'inherit'\n    })),\n    [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].deleteIcon}`]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      WebkitTapHighlightColor: 'transparent',\n      color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.26)` : deleteIconColor,\n      fontSize: 22,\n      cursor: 'pointer',\n      margin: '0 5px 0 -6px',\n      '&:hover': {\n        color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.alpha)(deleteIconColor, 0.4)\n      }\n    }, ownerState.size === 'small' && {\n      fontSize: 16,\n      marginRight: 4,\n      marginLeft: -4\n    }, ownerState.color !== 'default' && {\n      color: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].contrastTextChannel} / 0.7)` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.alpha)(theme.palette[ownerState.color].contrastText, 0.7),\n      '&:hover, &:active': {\n        color: (theme.vars || theme).palette[ownerState.color].contrastText\n      }\n    })\n  }, ownerState.size === 'small' && {\n    height: 24\n  }, ownerState.color !== 'default' && {\n    backgroundColor: (theme.vars || theme).palette[ownerState.color].main,\n    color: (theme.vars || theme).palette[ownerState.color].contrastText\n  }, ownerState.onDelete && {\n    [`&.${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].focusVisible}`]: {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.alpha)(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n    }\n  }, ownerState.onDelete && ownerState.color !== 'default' && {\n    [`&.${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].focusVisible}`]: {\n      backgroundColor: (theme.vars || theme).palette[ownerState.color].dark\n    }\n  });\n}, ({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState.clickable && {\n  userSelect: 'none',\n  WebkitTapHighlightColor: 'transparent',\n  cursor: 'pointer',\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.alpha)(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity)\n  },\n  [`&.${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].focusVisible}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.alpha)(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n  },\n  '&:active': {\n    boxShadow: (theme.vars || theme).shadows[1]\n  }\n}, ownerState.clickable && ownerState.color !== 'default' && {\n  [`&:hover, &.${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette[ownerState.color].dark\n  }\n}), ({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState.variant === 'outlined' && {\n  backgroundColor: 'transparent',\n  border: theme.vars ? `1px solid ${theme.vars.palette.Chip.defaultBorder}` : `1px solid ${theme.palette.mode === 'light' ? theme.palette.grey[400] : theme.palette.grey[700]}`,\n  [`&.${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].clickable}:hover`]: {\n    backgroundColor: (theme.vars || theme).palette.action.hover\n  },\n  [`&.${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.focus\n  },\n  [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].avatar}`]: {\n    marginLeft: 4\n  },\n  [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].avatarSmall}`]: {\n    marginLeft: 2\n  },\n  [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].icon}`]: {\n    marginLeft: 4\n  },\n  [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].iconSmall}`]: {\n    marginLeft: 2\n  },\n  [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].deleteIcon}`]: {\n    marginRight: 5\n  },\n  [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].deleteIconSmall}`]: {\n    marginRight: 3\n  }\n}, ownerState.variant === 'outlined' && ownerState.color !== 'default' && {\n  color: (theme.vars || theme).palette[ownerState.color].main,\n  border: `1px solid ${theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.7)` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.alpha)(theme.palette[ownerState.color].main, 0.7)}`,\n  [`&.${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].clickable}:hover`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.alpha)(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity)\n  },\n  [`&.${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].focusVisible}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.focusOpacity})` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.alpha)(theme.palette[ownerState.color].main, theme.palette.action.focusOpacity)\n  },\n  [`& .${_chipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].deleteIcon}`]: {\n    color: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.7)` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.alpha)(theme.palette[ownerState.color].main, 0.7),\n    '&:hover, &:active': {\n      color: (theme.vars || theme).palette[ownerState.color].main\n    }\n  }\n}));\nconst ChipLabel = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('span', {\n  name: 'MuiChip',\n  slot: 'Label',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      size\n    } = ownerState;\n    return [styles.label, styles[`label${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`]];\n  }\n})(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  overflow: 'hidden',\n  textOverflow: 'ellipsis',\n  paddingLeft: 12,\n  paddingRight: 12,\n  whiteSpace: 'nowrap'\n}, ownerState.size === 'small' && {\n  paddingLeft: 8,\n  paddingRight: 8\n}));\nfunction isDeleteKeyboardEvent(keyboardEvent) {\n  return keyboardEvent.key === 'Backspace' || keyboardEvent.key === 'Delete';\n}\n\n/**\n * Chips represent complex entities in small blocks, such as a contact.\n */\nconst Chip = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Chip(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__[\"default\"])({\n    props: inProps,\n    name: 'MuiChip'\n  });\n  const {\n      avatar: avatarProp,\n      className,\n      clickable: clickableProp,\n      color = 'default',\n      component: ComponentProp,\n      deleteIcon: deleteIconProp,\n      disabled = false,\n      icon: iconProp,\n      label,\n      onClick,\n      onDelete,\n      onKeyDown,\n      onKeyUp,\n      size = 'medium',\n      variant = 'filled',\n      tabIndex,\n      skipFocusWhenDisabled = false\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const chipRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const handleRef = (0,_utils_useForkRef__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(chipRef, ref);\n  const handleDeleteIconClick = event => {\n    // Stop the event from bubbling up to the `Chip`\n    event.stopPropagation();\n    if (onDelete) {\n      onDelete(event);\n    }\n  };\n  const handleKeyDown = event => {\n    // Ignore events from children of `Chip`.\n    if (event.currentTarget === event.target && isDeleteKeyboardEvent(event)) {\n      // Will be handled in keyUp, otherwise some browsers\n      // might init navigation\n      event.preventDefault();\n    }\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n  };\n  const handleKeyUp = event => {\n    // Ignore events from children of `Chip`.\n    if (event.currentTarget === event.target) {\n      if (onDelete && isDeleteKeyboardEvent(event)) {\n        onDelete(event);\n      } else if (event.key === 'Escape' && chipRef.current) {\n        chipRef.current.blur();\n      }\n    }\n    if (onKeyUp) {\n      onKeyUp(event);\n    }\n  };\n  const clickable = clickableProp !== false && onClick ? true : clickableProp;\n  const component = clickable || onDelete ? _ButtonBase__WEBPACK_IMPORTED_MODULE_12__[\"default\"] : ComponentProp || 'div';\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    component,\n    disabled,\n    size,\n    color,\n    iconColor: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.isValidElement(iconProp) ? iconProp.props.color || color : color,\n    onDelete: !!onDelete,\n    clickable,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const moreProps = component === _ButtonBase__WEBPACK_IMPORTED_MODULE_12__[\"default\"] ? (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    component: ComponentProp || 'div',\n    focusVisibleClassName: classes.focusVisible\n  }, onDelete && {\n    disableRipple: true\n  }) : {};\n  let deleteIcon = null;\n  if (onDelete) {\n    deleteIcon = deleteIconProp && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.isValidElement(deleteIconProp) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(deleteIconProp, {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(deleteIconProp.props.className, classes.deleteIcon),\n      onClick: handleDeleteIconClick\n    }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_internal_svg_icons_Cancel__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.deleteIcon),\n      onClick: handleDeleteIconClick\n    });\n  }\n  let avatar = null;\n  if (avatarProp && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.isValidElement(avatarProp)) {\n    avatar = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(avatarProp, {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.avatar, avatarProp.props.className)\n    });\n  }\n  let icon = null;\n  if (iconProp && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.isValidElement(iconProp)) {\n    icon = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(iconProp, {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.icon, iconProp.props.className)\n    });\n  }\n  if (true) {\n    if (avatar && icon) {\n      console.error('MUI: The Chip component can not handle the avatar ' + 'and the icon prop at the same time. Pick one.');\n    }\n  }\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(ChipRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    as: component,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    disabled: clickable && disabled ? true : undefined,\n    onClick: onClick,\n    onKeyDown: handleKeyDown,\n    onKeyUp: handleKeyUp,\n    ref: handleRef,\n    tabIndex: skipFocusWhenDisabled && disabled ? -1 : tabIndex,\n    ownerState: ownerState\n  }, moreProps, other, {\n    children: [avatar || icon, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(ChipLabel, {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.label),\n      ownerState: ownerState,\n      children: label\n    }), deleteIcon]\n  }));\n});\n true ? Chip.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The Avatar element to display.\n   */\n  avatar: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().element),\n  /**\n   * This prop isn't supported.\n   * Use the `component` prop if you need to change the children structure.\n   */\n  children: _utils_unsupportedProp__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string),\n  /**\n   * If `true`, the chip will appear clickable, and will raise when pressed,\n   * even if the onClick prop is not defined.\n   * If `false`, the chip will not appear clickable, even if onClick prop is defined.\n   * This can be used, for example,\n   * along with the component prop to indicate an anchor Chip is clickable.\n   * Note: this controls the UI and does not affect the onClick event.\n   */\n  clickable: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'default'\n   */\n  color: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string)]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().elementType),\n  /**\n   * Override the default delete icon element. Shown only if `onDelete` is set.\n   */\n  deleteIcon: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().element),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n  /**\n   * Icon element.\n   */\n  icon: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().element),\n  /**\n   * The content of the component.\n   */\n  label: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().node),\n  /**\n   * @ignore\n   */\n  onClick: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * Callback fired when the delete icon is clicked.\n   * If set, the delete icon will be shown.\n   */\n  onDelete: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onKeyUp: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOf(['medium', 'small']), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string)]),\n  /**\n   * If `true`, allows the disabled chip to escape focus.\n   * If `false`, allows the disabled chip to receive focus.\n   * @default false\n   */\n  skipFocusWhenDisabled: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_14___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object)]),\n  /**\n   * @ignore\n   */\n  tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().number),\n  /**\n   * The variant to use.\n   * @default 'filled'\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOf(['filled', 'outlined']), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Chip);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Chip/Chip.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Chip/chipClasses.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/material/Chip/chipClasses.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getChipUtilityClass\": function() { return /* binding */ getChipUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getChipUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiChip', slot);\n}\nconst chipClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiChip', ['root', 'sizeSmall', 'sizeMedium', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'disabled', 'clickable', 'clickableColorPrimary', 'clickableColorSecondary', 'deletable', 'deletableColorPrimary', 'deletableColorSecondary', 'outlined', 'filled', 'outlinedPrimary', 'outlinedSecondary', 'filledPrimary', 'filledSecondary', 'avatar', 'avatarSmall', 'avatarMedium', 'avatarColorPrimary', 'avatarColorSecondary', 'icon', 'iconSmall', 'iconMedium', 'iconColorPrimary', 'iconColorSecondary', 'label', 'labelSmall', 'labelMedium', 'deleteIcon', 'deleteIconSmall', 'deleteIconMedium', 'deleteIconColorPrimary', 'deleteIconColorSecondary', 'deleteIconOutlinedColorPrimary', 'deleteIconOutlinedColorSecondary', 'deleteIconFilledColorPrimary', 'deleteIconFilledColorSecondary', 'focusVisible']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chipClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Chip/chipClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Chip/index.js":
/*!**************************************************!*\
  !*** ./node_modules/@mui/material/Chip/index.js ***!
  \**************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"chipClasses\": function() { return /* reexport safe */ _chipClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; },\n/* harmony export */   \"default\": function() { return /* reexport safe */ _Chip__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getChipUtilityClass\": function() { return /* reexport safe */ _chipClasses__WEBPACK_IMPORTED_MODULE_1__.getChipUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _Chip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Chip */ \"./node_modules/@mui/material/Chip/Chip.js\");\n/* harmony import */ var _chipClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chipClasses */ \"./node_modules/@mui/material/Chip/chipClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Chip/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Collapse/Collapse.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/material/Collapse/Collapse.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var react_transition_group__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-transition-group */ \"./node_modules/react-transition-group/esm/Transition.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/elementTypeAcceptingRef.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_createTransitions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles/createTransitions */ \"./node_modules/@mui/material/styles/createTransitions.js\");\n/* harmony import */ var _transitions_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../transitions/utils */ \"./node_modules/@mui/material/transitions/utils.js\");\n/* harmony import */ var _styles_useTheme__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../styles/useTheme */ \"./node_modules/@mui/material/styles/useTheme.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils */ \"./node_modules/@mui/material/utils/useForkRef.js\");\n/* harmony import */ var _collapseClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./collapseClasses */ \"./node_modules/@mui/material/Collapse/collapseClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"addEndListener\", \"children\", \"className\", \"collapsedSize\", \"component\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"orientation\", \"style\", \"timeout\", \"TransitionComponent\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    orientation,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', `${orientation}`],\n    entered: ['entered'],\n    hidden: ['hidden'],\n    wrapper: ['wrapper', `${orientation}`],\n    wrapperInner: ['wrapperInner', `${orientation}`]\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _collapseClasses__WEBPACK_IMPORTED_MODULE_6__.getCollapseUtilityClass, classes);\n};\nconst CollapseRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('div', {\n  name: 'MuiCollapse',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.orientation], ownerState.state === 'entered' && styles.entered, ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && styles.hidden];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  height: 0,\n  overflow: 'hidden',\n  transition: theme.transitions.create('height')\n}, ownerState.orientation === 'horizontal' && {\n  height: 'auto',\n  width: 0,\n  transition: theme.transitions.create('width')\n}, ownerState.state === 'entered' && (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  height: 'auto',\n  overflow: 'visible'\n}, ownerState.orientation === 'horizontal' && {\n  width: 'auto'\n}), ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && {\n  visibility: 'hidden'\n}));\nconst CollapseWrapper = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('div', {\n  name: 'MuiCollapse',\n  slot: 'Wrapper',\n  overridesResolver: (props, styles) => styles.wrapper\n})(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  // Hack to get children with a negative margin to not falsify the height computation.\n  display: 'flex',\n  width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n  width: 'auto',\n  height: '100%'\n}));\nconst CollapseWrapperInner = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('div', {\n  name: 'MuiCollapse',\n  slot: 'WrapperInner',\n  overridesResolver: (props, styles) => styles.wrapperInner\n})(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n  width: 'auto',\n  height: '100%'\n}));\n\n/**\n * The Collapse transition is used by the\n * [Vertical Stepper](/material-ui/react-stepper/#vertical-stepper) StepContent component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Collapse = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Collapse(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n    props: inProps,\n    name: 'MuiCollapse'\n  });\n  const {\n      addEndListener,\n      children,\n      className,\n      collapsedSize: collapsedSizeProp = '0px',\n      component,\n      easing,\n      in: inProp,\n      onEnter,\n      onEntered,\n      onEntering,\n      onExit,\n      onExited,\n      onExiting,\n      orientation = 'vertical',\n      style,\n      timeout = _styles_createTransitions__WEBPACK_IMPORTED_MODULE_9__.duration.standard,\n      // eslint-disable-next-line react/prop-types\n      TransitionComponent = react_transition_group__WEBPACK_IMPORTED_MODULE_10__[\"default\"]\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    orientation,\n    collapsedSize: collapsedSizeProp\n  });\n  const classes = useUtilityClasses(ownerState);\n  const theme = (0,_styles_useTheme__WEBPACK_IMPORTED_MODULE_11__[\"default\"])();\n  const timer = react__WEBPACK_IMPORTED_MODULE_2__.useRef();\n  const wrapperRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const autoTransitionDuration = react__WEBPACK_IMPORTED_MODULE_2__.useRef();\n  const collapsedSize = typeof collapsedSizeProp === 'number' ? `${collapsedSizeProp}px` : collapsedSizeProp;\n  const isHorizontal = orientation === 'horizontal';\n  const size = isHorizontal ? 'width' : 'height';\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    return () => {\n      clearTimeout(timer.current);\n    };\n  }, []);\n  const nodeRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const handleRef = (0,_utils__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(ref, nodeRef);\n  const normalizedTransitionCallback = callback => maybeIsAppearing => {\n    if (callback) {\n      const node = nodeRef.current;\n\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (maybeIsAppearing === undefined) {\n        callback(node);\n      } else {\n        callback(node, maybeIsAppearing);\n      }\n    }\n  };\n  const getWrapperSize = () => wrapperRef.current ? wrapperRef.current[isHorizontal ? 'clientWidth' : 'clientHeight'] : 0;\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    if (wrapperRef.current && isHorizontal) {\n      // Set absolute position to get the size of collapsed content\n      wrapperRef.current.style.position = 'absolute';\n    }\n    node.style[size] = collapsedSize;\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntering = normalizedTransitionCallback((node, isAppearing) => {\n    const wrapperSize = getWrapperSize();\n    if (wrapperRef.current && isHorizontal) {\n      // After the size is read reset the position back to default\n      wrapperRef.current.style.position = '';\n    }\n    const {\n      duration: transitionDuration,\n      easing: transitionTimingFunction\n    } = (0,_transitions_utils__WEBPACK_IMPORTED_MODULE_13__.getTransitionProps)({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'enter'\n    });\n    if (timeout === 'auto') {\n      const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n      node.style.transitionDuration = `${duration2}ms`;\n      autoTransitionDuration.current = duration2;\n    } else {\n      node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n    }\n    node.style[size] = `${wrapperSize}px`;\n    node.style.transitionTimingFunction = transitionTimingFunction;\n    if (onEntering) {\n      onEntering(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback((node, isAppearing) => {\n    node.style[size] = 'auto';\n    if (onEntered) {\n      onEntered(node, isAppearing);\n    }\n  });\n  const handleExit = normalizedTransitionCallback(node => {\n    node.style[size] = `${getWrapperSize()}px`;\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(onExited);\n  const handleExiting = normalizedTransitionCallback(node => {\n    const wrapperSize = getWrapperSize();\n    const {\n      duration: transitionDuration,\n      easing: transitionTimingFunction\n    } = (0,_transitions_utils__WEBPACK_IMPORTED_MODULE_13__.getTransitionProps)({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'exit'\n    });\n    if (timeout === 'auto') {\n      // TODO: rename getAutoHeightDuration to something more generic (width support)\n      // Actually it just calculates animation duration based on size\n      const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n      node.style.transitionDuration = `${duration2}ms`;\n      autoTransitionDuration.current = duration2;\n    } else {\n      node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n    }\n    node.style[size] = collapsedSize;\n    node.style.transitionTimingFunction = transitionTimingFunction;\n    if (onExiting) {\n      onExiting(node);\n    }\n  });\n  const handleAddEndListener = next => {\n    if (timeout === 'auto') {\n      timer.current = setTimeout(next, autoTransitionDuration.current || 0);\n    }\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(nodeRef.current, next);\n    }\n  };\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TransitionComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    in: inProp,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    nodeRef: nodeRef,\n    timeout: timeout === 'auto' ? null : timeout\n  }, other, {\n    children: (state, childProps) => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(CollapseRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      as: component,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className, {\n        'entered': classes.entered,\n        'exited': !inProp && collapsedSize === '0px' && classes.hidden\n      }[state]),\n      style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n        [isHorizontal ? 'minWidth' : 'minHeight']: collapsedSize\n      }, style),\n      ownerState: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState, {\n        state\n      }),\n      ref: handleRef\n    }, childProps, {\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(CollapseWrapper, {\n        ownerState: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState, {\n          state\n        }),\n        className: classes.wrapper,\n        ref: wrapperRef,\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(CollapseWrapperInner, {\n          ownerState: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState, {\n            state\n          }),\n          className: classes.wrapperInner,\n          children: children\n        })\n      })\n    }))\n  }));\n});\n true ? Collapse.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * The content node to be collapsed.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string),\n  /**\n   * The width (horizontal) or height (vertical) of the container when collapsed.\n   * @default '0px'\n   */\n  collapsedSize: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_14___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string)]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: _mui_utils__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   */\n  easing: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().shape({\n    enter: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string),\n    exit: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string)\n  }), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string)]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n  /**\n   * @ignore\n   */\n  onEnter: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onEntered: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onEntering: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onExit: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onExited: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * @ignore\n   */\n  onExiting: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * The transition orientation.\n   * @default 'vertical'\n   */\n  orientation: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOf(['horizontal', 'vertical']),\n  /**\n   * @ignore\n   */\n  style: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_14___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object)]),\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   *\n   * Set to 'auto' to automatically calculate transition time based on height.\n   * @default duration.standard\n   */\n  timeout: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().number), prop_types__WEBPACK_IMPORTED_MODULE_14___default().shape({\n    appear: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().number),\n    enter: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().number),\n    exit: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().number)\n  })])\n} : 0;\nCollapse.muiSupportAuto = true;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Collapse);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Collapse/Collapse.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Collapse/collapseClasses.js":
/*!****************************************************************!*\
  !*** ./node_modules/@mui/material/Collapse/collapseClasses.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getCollapseUtilityClass\": function() { return /* binding */ getCollapseUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getCollapseUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiCollapse', slot);\n}\nconst collapseClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiCollapse', ['root', 'horizontal', 'vertical', 'entered', 'hidden', 'wrapper', 'wrapperInner']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (collapseClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Collapse/collapseClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Divider/Divider.js":
/*!*******************************************************!*\
  !*** ./node_modules/@mui/material/Divider/Divider.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/colorManipulator.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _dividerClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dividerClasses */ \"./node_modules/@mui/material/Divider/dividerClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"absolute\", \"children\", \"className\", \"component\", \"flexItem\", \"light\", \"orientation\", \"role\", \"textAlign\", \"variant\"];\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    absolute,\n    children,\n    classes,\n    flexItem,\n    light,\n    orientation,\n    textAlign,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', absolute && 'absolute', variant, light && 'light', orientation === 'vertical' && 'vertical', flexItem && 'flexItem', children && 'withChildren', children && orientation === 'vertical' && 'withChildrenVertical', textAlign === 'right' && orientation !== 'vertical' && 'textAlignRight', textAlign === 'left' && orientation !== 'vertical' && 'textAlignLeft'],\n    wrapper: ['wrapper', orientation === 'vertical' && 'wrapperVertical']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _dividerClasses__WEBPACK_IMPORTED_MODULE_6__.getDividerUtilityClass, classes);\n};\nconst DividerRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('div', {\n  name: 'MuiDivider',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.absolute && styles.absolute, styles[ownerState.variant], ownerState.light && styles.light, ownerState.orientation === 'vertical' && styles.vertical, ownerState.flexItem && styles.flexItem, ownerState.children && styles.withChildren, ownerState.children && ownerState.orientation === 'vertical' && styles.withChildrenVertical, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && styles.textAlignRight, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && styles.textAlignLeft];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  margin: 0,\n  // Reset browser default style.\n  flexShrink: 0,\n  borderWidth: 0,\n  borderStyle: 'solid',\n  borderColor: (theme.vars || theme).palette.divider,\n  borderBottomWidth: 'thin'\n}, ownerState.absolute && {\n  position: 'absolute',\n  bottom: 0,\n  left: 0,\n  width: '100%'\n}, ownerState.light && {\n  borderColor: theme.vars ? `rgba(${theme.vars.palette.dividerChannel} / 0.08)` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_8__.alpha)(theme.palette.divider, 0.08)\n}, ownerState.variant === 'inset' && {\n  marginLeft: 72\n}, ownerState.variant === 'middle' && ownerState.orientation === 'horizontal' && {\n  marginLeft: theme.spacing(2),\n  marginRight: theme.spacing(2)\n}, ownerState.variant === 'middle' && ownerState.orientation === 'vertical' && {\n  marginTop: theme.spacing(1),\n  marginBottom: theme.spacing(1)\n}, ownerState.orientation === 'vertical' && {\n  height: '100%',\n  borderBottomWidth: 0,\n  borderRightWidth: 'thin'\n}, ownerState.flexItem && {\n  alignSelf: 'stretch',\n  height: 'auto'\n}), ({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState.children && {\n  display: 'flex',\n  whiteSpace: 'nowrap',\n  textAlign: 'center',\n  border: 0,\n  '&::before, &::after': {\n    position: 'relative',\n    width: '100%',\n    borderTop: `thin solid ${(theme.vars || theme).palette.divider}`,\n    top: '50%',\n    content: '\"\"',\n    transform: 'translateY(50%)'\n  }\n}), ({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState.children && ownerState.orientation === 'vertical' && {\n  flexDirection: 'column',\n  '&::before, &::after': {\n    height: '100%',\n    top: '0%',\n    left: '50%',\n    borderTop: 0,\n    borderLeft: `thin solid ${(theme.vars || theme).palette.divider}`,\n    transform: 'translateX(0%)'\n  }\n}), ({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && {\n  '&::before': {\n    width: '90%'\n  },\n  '&::after': {\n    width: '10%'\n  }\n}, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && {\n  '&::before': {\n    width: '10%'\n  },\n  '&::after': {\n    width: '90%'\n  }\n}));\nconst DividerWrapper = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('span', {\n  name: 'MuiDivider',\n  slot: 'Wrapper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.wrapper, ownerState.orientation === 'vertical' && styles.wrapperVertical];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  display: 'inline-block',\n  paddingLeft: `calc(${theme.spacing(1)} * 1.2)`,\n  paddingRight: `calc(${theme.spacing(1)} * 1.2)`\n}, ownerState.orientation === 'vertical' && {\n  paddingTop: `calc(${theme.spacing(1)} * 1.2)`,\n  paddingBottom: `calc(${theme.spacing(1)} * 1.2)`\n}));\nconst Divider = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Divider(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({\n    props: inProps,\n    name: 'MuiDivider'\n  });\n  const {\n      absolute = false,\n      children,\n      className,\n      component = children ? 'div' : 'hr',\n      flexItem = false,\n      light = false,\n      orientation = 'horizontal',\n      role = component !== 'hr' ? 'separator' : undefined,\n      textAlign = 'center',\n      variant = 'fullWidth'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    absolute,\n    component,\n    flexItem,\n    light,\n    orientation,\n    role,\n    textAlign,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(DividerRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    as: component,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    role: role,\n    ref: ref,\n    ownerState: ownerState\n  }, other, {\n    children: children ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(DividerWrapper, {\n      className: classes.wrapper,\n      ownerState: ownerState,\n      children: children\n    }) : null\n  }));\n});\n true ? Divider.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Absolutely position the element.\n   * @default false\n   */\n  absolute: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType),\n  /**\n   * If `true`, a vertical divider will have the correct height when used in flex container.\n   * (By default, a vertical divider will have a calculated height of `0px` if it is the child of a flex container.)\n   * @default false\n   */\n  flexItem: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * If `true`, the divider will have a lighter color.\n   * @default false\n   */\n  light: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * The component orientation.\n   * @default 'horizontal'\n   */\n  orientation: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOf(['horizontal', 'vertical']),\n  /**\n   * @ignore\n   */\n  role: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)]),\n  /**\n   * The text alignment.\n   * @default 'center'\n   */\n  textAlign: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOf(['center', 'left', 'right']),\n  /**\n   * The variant to use.\n   * @default 'fullWidth'\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOf(['fullWidth', 'inset', 'middle']), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Divider);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Divider/Divider.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Divider/dividerClasses.js":
/*!**************************************************************!*\
  !*** ./node_modules/@mui/material/Divider/dividerClasses.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getDividerUtilityClass\": function() { return /* binding */ getDividerUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getDividerUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiDivider', slot);\n}\nconst dividerClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiDivider', ['root', 'absolute', 'fullWidth', 'inset', 'middle', 'flexItem', 'light', 'vertical', 'withChildren', 'withChildrenVertical', 'textAlignRight', 'textAlignLeft', 'wrapper', 'wrapperVertical']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (dividerClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Divider/dividerClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Fade/Fade.js":
/*!*************************************************!*\
  !*** ./node_modules/@mui/material/Fade/Fade.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var react_transition_group__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-transition-group */ \"./node_modules/react-transition-group/esm/Transition.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/elementAcceptingRef.js\");\n/* harmony import */ var _styles_useTheme__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../styles/useTheme */ \"./node_modules/@mui/material/styles/useTheme.js\");\n/* harmony import */ var _transitions_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../transitions/utils */ \"./node_modules/@mui/material/transitions/utils.js\");\n/* harmony import */ var _utils_useForkRef__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/useForkRef */ \"./node_modules/@mui/material/utils/useForkRef.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\n\n\n\n\n\n\n\n\nconst styles = {\n  entering: {\n    opacity: 1\n  },\n  entered: {\n    opacity: 1\n  }\n};\n\n/**\n * The Fade transition is used by the [Modal](/material-ui/react-modal/) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Fade = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Fade(props, ref) {\n  const theme = (0,_styles_useTheme__WEBPACK_IMPORTED_MODULE_4__[\"default\"])();\n  const defaultTimeout = {\n    enter: theme.transitions.duration.enteringScreen,\n    exit: theme.transitions.duration.leavingScreen\n  };\n  const {\n      addEndListener,\n      appear = true,\n      children,\n      easing,\n      in: inProp,\n      onEnter,\n      onEntered,\n      onEntering,\n      onExit,\n      onExited,\n      onExiting,\n      style,\n      timeout = defaultTimeout,\n      // eslint-disable-next-line react/prop-types\n      TransitionComponent = react_transition_group__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const enableStrictModeCompat = true;\n  const nodeRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const handleRef = (0,_utils_useForkRef__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(nodeRef, children.ref, ref);\n  const normalizedTransitionCallback = callback => maybeIsAppearing => {\n    if (callback) {\n      const node = nodeRef.current;\n\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (maybeIsAppearing === undefined) {\n        callback(node);\n      } else {\n        callback(node, maybeIsAppearing);\n      }\n    }\n  };\n  const handleEntering = normalizedTransitionCallback(onEntering);\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    (0,_transitions_utils__WEBPACK_IMPORTED_MODULE_7__.reflow)(node); // So the animation always start from the start.\n\n    const transitionProps = (0,_transitions_utils__WEBPACK_IMPORTED_MODULE_7__.getTransitionProps)({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'enter'\n    });\n    node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n    node.style.transition = theme.transitions.create('opacity', transitionProps);\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback(onEntered);\n  const handleExiting = normalizedTransitionCallback(onExiting);\n  const handleExit = normalizedTransitionCallback(node => {\n    const transitionProps = (0,_transitions_utils__WEBPACK_IMPORTED_MODULE_7__.getTransitionProps)({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'exit'\n    });\n    node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n    node.style.transition = theme.transitions.create('opacity', transitionProps);\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(onExited);\n  const handleAddEndListener = next => {\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(nodeRef.current, next);\n    }\n  };\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(TransitionComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    appear: appear,\n    in: inProp,\n    nodeRef: enableStrictModeCompat ? nodeRef : undefined,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    timeout: timeout\n  }, other, {\n    children: (state, childProps) => {\n      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(children, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n        style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n          opacity: 0,\n          visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n        }, styles[state], style, children.props.style),\n        ref: handleRef\n      }, childProps));\n    }\n  }));\n});\n true ? Fade.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n  /**\n   * Perform the enter transition when it first mounts if `in` is also `true`.\n   * Set this to `false` to disable this behavior.\n   * @default true\n   */\n  appear: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().bool),\n  /**\n   * A single child content element.\n   */\n  children: _mui_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"].isRequired,\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   */\n  easing: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_8___default().shape({\n    enter: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string),\n    exit: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string)\n  }), (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string)]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().bool),\n  /**\n   * @ignore\n   */\n  onEnter: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n  /**\n   * @ignore\n   */\n  onEntered: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n  /**\n   * @ignore\n   */\n  onEntering: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n  /**\n   * @ignore\n   */\n  onExit: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n  /**\n   * @ignore\n   */\n  onExited: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n  /**\n   * @ignore\n   */\n  onExiting: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n  /**\n   * @ignore\n   */\n  style: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().object),\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   * @default {\n   *   enter: theme.transitions.duration.enteringScreen,\n   *   exit: theme.transitions.duration.leavingScreen,\n   * }\n   */\n  timeout: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_8___default().number), prop_types__WEBPACK_IMPORTED_MODULE_8___default().shape({\n    appear: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().number),\n    enter: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().number),\n    exit: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().number)\n  })])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Fade);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Fade/Fade.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FilledInput/FilledInput.js":
/*!***************************************************************!*\
  !*** ./node_modules/@mui/material/FilledInput/FilledInput.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/deepmerge.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/refType.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../InputBase/InputBase */ \"./node_modules/@mui/material/InputBase/InputBase.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _filledInputClasses__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./filledInputClasses */ \"./node_modules/@mui/material/FilledInput/filledInputClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"disableUnderline\", \"components\", \"componentsProps\", \"fullWidth\", \"hiddenLabel\", \"inputComponent\", \"multiline\", \"slotProps\", \"slots\", \"type\"];\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableUnderline\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableUnderline && 'underline'],\n    input: ['input']\n  };\n  const composedClasses = (0,_mui_base__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(slots, _filledInputClasses__WEBPACK_IMPORTED_MODULE_5__.getFilledInputUtilityClass, classes);\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, classes, composedClasses);\n};\nconst FilledInputRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__.InputBaseRoot, {\n  shouldForwardProp: prop => (0,_styles_styled__WEBPACK_IMPORTED_MODULE_6__.rootShouldForwardProp)(prop) || prop === 'classes',\n  name: 'MuiFilledInput',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [...(0,_InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__.rootOverridesResolver)(props, styles), !ownerState.disableUnderline && styles.underline];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  var _palette;\n  const light = theme.palette.mode === 'light';\n  const bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n  const backgroundColor = light ? 'rgba(0, 0, 0, 0.06)' : 'rgba(255, 255, 255, 0.09)';\n  const hoverBackground = light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.13)';\n  const disabledBackground = light ? 'rgba(0, 0, 0, 0.12)' : 'rgba(255, 255, 255, 0.12)';\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    position: 'relative',\n    backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor,\n    borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,\n    borderTopRightRadius: (theme.vars || theme).shape.borderRadius,\n    transition: theme.transitions.create('background-color', {\n      duration: theme.transitions.duration.shorter,\n      easing: theme.transitions.easing.easeOut\n    }),\n    '&:hover': {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.hoverBg : hoverBackground,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n      }\n    },\n    [`&.${_filledInputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].focused}`]: {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n    },\n    [`&.${_filledInputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].disabled}`]: {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.disabledBg : disabledBackground\n    }\n  }, !ownerState.disableUnderline && {\n    '&:after': {\n      borderBottom: `2px solid ${(_palette = (theme.vars || theme).palette[ownerState.color || 'primary']) == null ? void 0 : _palette.main}`,\n      left: 0,\n      bottom: 0,\n      // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n      content: '\"\"',\n      position: 'absolute',\n      right: 0,\n      transform: 'scaleX(0)',\n      transition: theme.transitions.create('transform', {\n        duration: theme.transitions.duration.shorter,\n        easing: theme.transitions.easing.easeOut\n      }),\n      pointerEvents: 'none' // Transparent to the hover style.\n    },\n\n    [`&.${_filledInputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].focused}:after`]: {\n      // translateX(0) is a workaround for Safari transform scale bug\n      // See https://github.com/mui/material-ui/issues/31766\n      transform: 'scaleX(1) translateX(0)'\n    },\n    [`&.${_filledInputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].error}`]: {\n      '&:before, &:after': {\n        borderBottomColor: (theme.vars || theme).palette.error.main\n      }\n    },\n    '&:before': {\n      borderBottom: `1px solid ${theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})` : bottomLineColor}`,\n      left: 0,\n      bottom: 0,\n      // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n      content: '\"\\\\00a0\"',\n      position: 'absolute',\n      right: 0,\n      transition: theme.transitions.create('border-bottom-color', {\n        duration: theme.transitions.duration.shorter\n      }),\n      pointerEvents: 'none' // Transparent to the hover style.\n    },\n\n    [`&:hover:not(.${_filledInputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].disabled}, .${_filledInputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].error}):before`]: {\n      borderBottom: `1px solid ${(theme.vars || theme).palette.text.primary}`\n    },\n    [`&.${_filledInputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].disabled}:before`]: {\n      borderBottomStyle: 'dotted'\n    }\n  }, ownerState.startAdornment && {\n    paddingLeft: 12\n  }, ownerState.endAdornment && {\n    paddingRight: 12\n  }, ownerState.multiline && (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    padding: '25px 12px 8px'\n  }, ownerState.size === 'small' && {\n    paddingTop: 21,\n    paddingBottom: 4\n  }, ownerState.hiddenLabel && {\n    paddingTop: 16,\n    paddingBottom: 17\n  }));\n});\nconst FilledInputInput = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__.InputBaseComponent, {\n  name: 'MuiFilledInput',\n  slot: 'Input',\n  overridesResolver: _InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__.inputOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  paddingTop: 25,\n  paddingRight: 12,\n  paddingBottom: 8,\n  paddingLeft: 12\n}, !theme.vars && {\n  '&:-webkit-autofill': {\n    WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',\n    WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',\n    caretColor: theme.palette.mode === 'light' ? null : '#fff',\n    borderTopLeftRadius: 'inherit',\n    borderTopRightRadius: 'inherit'\n  }\n}, theme.vars && {\n  '&:-webkit-autofill': {\n    borderTopLeftRadius: 'inherit',\n    borderTopRightRadius: 'inherit'\n  },\n  [theme.getColorSchemeSelector('dark')]: {\n    '&:-webkit-autofill': {\n      WebkitBoxShadow: '0 0 0 100px #266798 inset',\n      WebkitTextFillColor: '#fff',\n      caretColor: '#fff'\n    }\n  }\n}, ownerState.size === 'small' && {\n  paddingTop: 21,\n  paddingBottom: 4\n}, ownerState.hiddenLabel && {\n  paddingTop: 16,\n  paddingBottom: 17\n}, ownerState.multiline && {\n  paddingTop: 0,\n  paddingBottom: 0,\n  paddingLeft: 0,\n  paddingRight: 0\n}, ownerState.startAdornment && {\n  paddingLeft: 0\n}, ownerState.endAdornment && {\n  paddingRight: 0\n}, ownerState.hiddenLabel && ownerState.size === 'small' && {\n  paddingTop: 8,\n  paddingBottom: 9\n}));\nconst FilledInput = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function FilledInput(inProps, ref) {\n  var _ref, _slots$root, _ref2, _slots$input;\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n    props: inProps,\n    name: 'MuiFilledInput'\n  });\n  const {\n      components = {},\n      componentsProps: componentsPropsProp,\n      fullWidth = false,\n      // declare here to prevent spreading to DOM\n      inputComponent = 'input',\n      multiline = false,\n      slotProps,\n      slots = {},\n      type = 'text'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    fullWidth,\n    inputComponent,\n    multiline,\n    type\n  });\n  const classes = useUtilityClasses(props);\n  const filledInputComponentsProps = {\n    root: {\n      ownerState\n    },\n    input: {\n      ownerState\n    }\n  };\n  const componentsProps = (slotProps != null ? slotProps : componentsPropsProp) ? (0,_mui_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(slotProps != null ? slotProps : componentsPropsProp, filledInputComponentsProps) : filledInputComponentsProps;\n  const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : FilledInputRoot;\n  const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : FilledInputInput;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    slots: {\n      root: RootSlot,\n      input: InputSlot\n    },\n    componentsProps: componentsProps,\n    fullWidth: fullWidth,\n    inputComponent: inputComponent,\n    multiline: multiline,\n    ref: ref,\n    type: type\n  }, other, {\n    classes: classes\n  }));\n});\n true ? FilledInput.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOf(['primary', 'secondary']), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string)]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: prop_types__WEBPACK_IMPORTED_MODULE_10___default().shape({\n    Input: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType),\n    Root: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType)\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: prop_types__WEBPACK_IMPORTED_MODULE_10___default().shape({\n    input: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n    root: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().any),\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * If `true`, the input will not have an underline.\n   */\n  disableUnderline: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().node),\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * If `true`, the label is hidden.\n   * This is used to increase density for a `FilledInput`.\n   * Be sure to add `aria-label` to the `input` element.\n   * @default false\n   */\n  hiddenLabel: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * The id of the `input` element.\n   */\n  id: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType),\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: _mui_utils__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string)]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string)]),\n  /**\n   * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func),\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string)]),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: prop_types__WEBPACK_IMPORTED_MODULE_10___default().shape({\n    input: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n    root: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: prop_types__WEBPACK_IMPORTED_MODULE_10___default().shape({\n    input: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType),\n    root: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType)\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().node),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().any)\n} : 0;\nFilledInput.muiName = 'Input';\n/* harmony default export */ __webpack_exports__[\"default\"] = (FilledInput);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FilledInput/FilledInput.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FilledInput/filledInputClasses.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@mui/material/FilledInput/filledInputClasses.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getFilledInputUtilityClass\": function() { return /* binding */ getFilledInputUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n/* harmony import */ var _InputBase__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../InputBase */ \"./node_modules/@mui/material/InputBase/inputBaseClasses.js\");\n\n\n\n\nfunction getFilledInputUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiFilledInput', slot);\n}\nconst filledInputClasses = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _InputBase__WEBPACK_IMPORTED_MODULE_2__[\"default\"], (0,_mui_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('MuiFilledInput', ['root', 'underline', 'input']));\n/* harmony default export */ __webpack_exports__[\"default\"] = (filledInputClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FilledInput/filledInputClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FormControl/FormControl.js":
/*!***************************************************************!*\
  !*** ./node_modules/@mui/material/FormControl/FormControl.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _InputBase_utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../InputBase/utils */ \"./node_modules/@mui/material/InputBase/utils.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _utils_isMuiElement__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/isMuiElement */ \"./node_modules/@mui/material/utils/isMuiElement.js\");\n/* harmony import */ var _FormControlContext__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./FormControlContext */ \"./node_modules/@mui/material/FormControl/FormControlContext.js\");\n/* harmony import */ var _formControlClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./formControlClasses */ \"./node_modules/@mui/material/FormControl/formControlClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"focused\", \"fullWidth\", \"hiddenLabel\", \"margin\", \"required\", \"size\", \"variant\"];\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    margin,\n    fullWidth\n  } = ownerState;\n  const slots = {\n    root: ['root', margin !== 'none' && `margin${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(margin)}`, fullWidth && 'fullWidth']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _formControlClasses__WEBPACK_IMPORTED_MODULE_7__.getFormControlUtilityClasses, classes);\n};\nconst FormControlRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n  name: 'MuiFormControl',\n  slot: 'Root',\n  overridesResolver: ({\n    ownerState\n  }, styles) => {\n    return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, styles.root, styles[`margin${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.margin)}`], ownerState.fullWidth && styles.fullWidth);\n  }\n})(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  display: 'inline-flex',\n  flexDirection: 'column',\n  position: 'relative',\n  // Reset fieldset default style.\n  minWidth: 0,\n  padding: 0,\n  margin: 0,\n  border: 0,\n  verticalAlign: 'top'\n}, ownerState.margin === 'normal' && {\n  marginTop: 16,\n  marginBottom: 8\n}, ownerState.margin === 'dense' && {\n  marginTop: 8,\n  marginBottom: 4\n}, ownerState.fullWidth && {\n  width: '100%'\n}));\n\n/**\n * Provides context such as filled/focused/error/required for form inputs.\n * Relying on the context provides high flexibility and ensures that the state always stays\n * consistent across the children of the `FormControl`.\n * This context is used by the following components:\n *\n *  - FormLabel\n *  - FormHelperText\n *  - Input\n *  - InputLabel\n *\n * You can find one composition example below and more going to [the demos](/material-ui/react-text-field/#components).\n *\n * ```jsx\n * <FormControl>\n *   <InputLabel htmlFor=\"my-input\">Email address</InputLabel>\n *   <Input id=\"my-input\" aria-describedby=\"my-helper-text\" />\n *   <FormHelperText id=\"my-helper-text\">We'll never share your email.</FormHelperText>\n * </FormControl>\n * ```\n *\n * ⚠️ Only one `InputBase` can be used within a FormControl because it creates visual inconsistencies.\n * For instance, only one input can be focused at the same time, the state shouldn't be shared.\n */\nconst FormControl = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function FormControl(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({\n    props: inProps,\n    name: 'MuiFormControl'\n  });\n  const {\n      children,\n      className,\n      color = 'primary',\n      component = 'div',\n      disabled = false,\n      error = false,\n      focused: visuallyFocused,\n      fullWidth = false,\n      hiddenLabel = false,\n      margin = 'none',\n      required = false,\n      size = 'medium',\n      variant = 'outlined'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    color,\n    component,\n    disabled,\n    error,\n    fullWidth,\n    hiddenLabel,\n    margin,\n    required,\n    size,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const [adornedStart, setAdornedStart] = react__WEBPACK_IMPORTED_MODULE_2__.useState(() => {\n    // We need to iterate through the children and find the Input in order\n    // to fully support server-side rendering.\n    let initialAdornedStart = false;\n    if (children) {\n      react__WEBPACK_IMPORTED_MODULE_2__.Children.forEach(children, child => {\n        if (!(0,_utils_isMuiElement__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(child, ['Input', 'Select'])) {\n          return;\n        }\n        const input = (0,_utils_isMuiElement__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(child, ['Select']) ? child.props.input : child;\n        if (input && (0,_InputBase_utils__WEBPACK_IMPORTED_MODULE_11__.isAdornedStart)(input.props)) {\n          initialAdornedStart = true;\n        }\n      });\n    }\n    return initialAdornedStart;\n  });\n  const [filled, setFilled] = react__WEBPACK_IMPORTED_MODULE_2__.useState(() => {\n    // We need to iterate through the children and find the Input in order\n    // to fully support server-side rendering.\n    let initialFilled = false;\n    if (children) {\n      react__WEBPACK_IMPORTED_MODULE_2__.Children.forEach(children, child => {\n        if (!(0,_utils_isMuiElement__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(child, ['Input', 'Select'])) {\n          return;\n        }\n        if ((0,_InputBase_utils__WEBPACK_IMPORTED_MODULE_11__.isFilled)(child.props, true)) {\n          initialFilled = true;\n        }\n      });\n    }\n    return initialFilled;\n  });\n  const [focusedState, setFocused] = react__WEBPACK_IMPORTED_MODULE_2__.useState(false);\n  if (disabled && focusedState) {\n    setFocused(false);\n  }\n  const focused = visuallyFocused !== undefined && !disabled ? visuallyFocused : focusedState;\n  let registerEffect;\n  if (true) {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const registeredInput = react__WEBPACK_IMPORTED_MODULE_2__.useRef(false);\n    registerEffect = () => {\n      if (registeredInput.current) {\n        console.error(['MUI: There are multiple `InputBase` components inside a FormControl.', 'This creates visual inconsistencies, only use one `InputBase`.'].join('\\n'));\n      }\n      registeredInput.current = true;\n      return () => {\n        registeredInput.current = false;\n      };\n    };\n  }\n  const childContext = react__WEBPACK_IMPORTED_MODULE_2__.useMemo(() => {\n    return {\n      adornedStart,\n      setAdornedStart,\n      color,\n      disabled,\n      error,\n      filled,\n      focused,\n      fullWidth,\n      hiddenLabel,\n      size,\n      onBlur: () => {\n        setFocused(false);\n      },\n      onEmpty: () => {\n        setFilled(false);\n      },\n      onFilled: () => {\n        setFilled(true);\n      },\n      onFocus: () => {\n        setFocused(true);\n      },\n      registerEffect,\n      required,\n      variant\n    };\n  }, [adornedStart, color, disabled, error, filled, focused, fullWidth, hiddenLabel, registerEffect, required, size, variant]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_FormControlContext__WEBPACK_IMPORTED_MODULE_12__[\"default\"].Provider, {\n    value: childContext,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(FormControlRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      as: component,\n      ownerState: ownerState,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n      ref: ref\n    }, other, {\n      children: children\n    }))\n  });\n});\n true ? FormControl.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string),\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'primary'\n   */\n  color: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().elementType),\n  /**\n   * If `true`, the label, input and helper text should be displayed in a disabled state.\n   * @default false\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * If `true`, the label is displayed in an error state.\n   * @default false\n   */\n  error: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * If `true`, the component is displayed in focused state.\n   */\n  focused: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * If `true`, the component will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * If `true`, the label is hidden.\n   * This is used to increase density for a `FilledInput`.\n   * Be sure to add `aria-label` to the `input` element.\n   * @default false\n   */\n  hiddenLabel: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n   * @default 'none'\n   */\n  margin: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['dense', 'none', 'normal']),\n  /**\n   * If `true`, the label will indicate that the `input` is required.\n   * @default false\n   */\n  required: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['medium', 'small']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_13___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object)]),\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['filled', 'outlined', 'standard'])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (FormControl);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FormControl/FormControl.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FormControl/FormControlContext.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@mui/material/FormControl/FormControlContext.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\n * @ignore - internal component.\n */\nconst FormControlContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(undefined);\nif (true) {\n  FormControlContext.displayName = 'FormControlContext';\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (FormControlContext);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FormControl/FormControlContext.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FormControl/formControlClasses.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@mui/material/FormControl/formControlClasses.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getFormControlUtilityClasses\": function() { return /* binding */ getFormControlUtilityClasses; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getFormControlUtilityClasses(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiFormControl', slot);\n}\nconst formControlClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiFormControl', ['root', 'marginNone', 'marginNormal', 'marginDense', 'fullWidth', 'disabled']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (formControlClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FormControl/formControlClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FormControl/formControlState.js":
/*!********************************************************************!*\
  !*** ./node_modules/@mui/material/FormControl/formControlState.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ formControlState; }\n/* harmony export */ });\nfunction formControlState({\n  props,\n  states,\n  muiFormControl\n}) {\n  return states.reduce((acc, state) => {\n    acc[state] = props[state];\n    if (muiFormControl) {\n      if (typeof props[state] === 'undefined') {\n        acc[state] = muiFormControl[state];\n      }\n    }\n    return acc;\n  }, {});\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FormControl/formControlState.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FormControl/index.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/material/FormControl/index.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _FormControl__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"formControlClasses\": function() { return /* reexport safe */ _formControlClasses__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; },\n/* harmony export */   \"getFormControlUtilityClasses\": function() { return /* reexport safe */ _formControlClasses__WEBPACK_IMPORTED_MODULE_2__.getFormControlUtilityClasses; },\n/* harmony export */   \"useFormControl\": function() { return /* reexport safe */ _useFormControl__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _FormControl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FormControl */ \"./node_modules/@mui/material/FormControl/FormControl.js\");\n/* harmony import */ var _useFormControl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useFormControl */ \"./node_modules/@mui/material/FormControl/useFormControl.js\");\n/* harmony import */ var _formControlClasses__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formControlClasses */ \"./node_modules/@mui/material/FormControl/formControlClasses.js\");\n\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FormControl/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FormControl/useFormControl.js":
/*!******************************************************************!*\
  !*** ./node_modules/@mui/material/FormControl/useFormControl.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ useFormControl; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _FormControlContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FormControlContext */ \"./node_modules/@mui/material/FormControl/FormControlContext.js\");\n\n\nfunction useFormControl() {\n  return react__WEBPACK_IMPORTED_MODULE_0__.useContext(_FormControlContext__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FormControl/useFormControl.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FormControlLabel/FormControlLabel.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@mui/material/FormControlLabel/FormControlLabel.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FormControlLabelRoot\": function() { return /* binding */ FormControlLabelRoot; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/refType.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _FormControl__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../FormControl */ \"./node_modules/@mui/material/FormControl/useFormControl.js\");\n/* harmony import */ var _Typography__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../Typography */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _formControlLabelClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./formControlLabelClasses */ \"./node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js\");\n/* harmony import */ var _FormControl_formControlState__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../FormControl/formControlState */ \"./node_modules/@mui/material/FormControl/formControlState.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"checked\", \"className\", \"componentsProps\", \"control\", \"disabled\", \"disableTypography\", \"inputRef\", \"label\", \"labelPlacement\", \"name\", \"onChange\", \"slotProps\", \"value\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disabled,\n    labelPlacement,\n    error\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', `labelPlacement${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(labelPlacement)}`, error && 'error'],\n    label: ['label', disabled && 'disabled']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _formControlLabelClasses__WEBPACK_IMPORTED_MODULE_7__.getFormControlLabelUtilityClasses, classes);\n};\nconst FormControlLabelRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('label', {\n  name: 'MuiFormControlLabel',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${_formControlLabelClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].label}`]: styles.label\n    }, styles.root, styles[`labelPlacement${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.labelPlacement)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  display: 'inline-flex',\n  alignItems: 'center',\n  cursor: 'pointer',\n  // For correct alignment with the text.\n  verticalAlign: 'middle',\n  WebkitTapHighlightColor: 'transparent',\n  marginLeft: -11,\n  marginRight: 16,\n  // used for row presentation of radio/checkbox\n  [`&.${_formControlLabelClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n    cursor: 'default'\n  }\n}, ownerState.labelPlacement === 'start' && {\n  flexDirection: 'row-reverse',\n  marginLeft: 16,\n  // used for row presentation of radio/checkbox\n  marginRight: -11\n}, ownerState.labelPlacement === 'top' && {\n  flexDirection: 'column-reverse',\n  marginLeft: 16\n}, ownerState.labelPlacement === 'bottom' && {\n  flexDirection: 'column',\n  marginLeft: 16\n}, {\n  [`& .${_formControlLabelClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].label}`]: {\n    [`&.${_formControlLabelClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n      color: (theme.vars || theme).palette.text.disabled\n    }\n  }\n}));\n\n/**\n * Drop-in replacement of the `Radio`, `Switch` and `Checkbox` component.\n * Use this component if you want to display an extra label.\n */\nconst FormControlLabel = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function FormControlLabel(inProps, ref) {\n  var _slotProps$typography;\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({\n    props: inProps,\n    name: 'MuiFormControlLabel'\n  });\n  const {\n      className,\n      componentsProps = {},\n      control,\n      disabled: disabledProp,\n      disableTypography,\n      label: labelProp,\n      labelPlacement = 'end',\n      slotProps = {}\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const muiFormControl = (0,_FormControl__WEBPACK_IMPORTED_MODULE_10__[\"default\"])();\n  let disabled = disabledProp;\n  if (typeof disabled === 'undefined' && typeof control.props.disabled !== 'undefined') {\n    disabled = control.props.disabled;\n  }\n  if (typeof disabled === 'undefined' && muiFormControl) {\n    disabled = muiFormControl.disabled;\n  }\n  const controlProps = {\n    disabled\n  };\n  ['checked', 'name', 'onChange', 'value', 'inputRef'].forEach(key => {\n    if (typeof control.props[key] === 'undefined' && typeof props[key] !== 'undefined') {\n      controlProps[key] = props[key];\n    }\n  });\n  const fcs = (0,_FormControl_formControlState__WEBPACK_IMPORTED_MODULE_11__[\"default\"])({\n    props,\n    muiFormControl,\n    states: ['error']\n  });\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    disabled,\n    labelPlacement,\n    error: fcs.error\n  });\n  const classes = useUtilityClasses(ownerState);\n  const typographySlotProps = (_slotProps$typography = slotProps.typography) != null ? _slotProps$typography : componentsProps.typography;\n  let label = labelProp;\n  if (label != null && label.type !== _Typography__WEBPACK_IMPORTED_MODULE_12__[\"default\"] && !disableTypography) {\n    label = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_Typography__WEBPACK_IMPORTED_MODULE_12__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      component: \"span\"\n    }, typographySlotProps, {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.label, typographySlotProps == null ? void 0 : typographySlotProps.className),\n      children: label\n    }));\n  }\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(FormControlLabelRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    ownerState: ownerState,\n    ref: ref\n  }, other, {\n    children: [/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(control, controlProps), label]\n  }));\n});\n true ? FormControlLabel.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, the component appears selected.\n   */\n  checked: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string),\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  componentsProps: prop_types__WEBPACK_IMPORTED_MODULE_13___default().shape({\n    typography: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object)\n  }),\n  /**\n   * A control element. For instance, it can be a `Radio`, a `Switch` or a `Checkbox`.\n   */\n  control: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().element.isRequired),\n  /**\n   * If `true`, the control is disabled.\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * If `true`, the label is rendered as it is passed without an additional typography node.\n   */\n  disableTypography: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: _mui_utils__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n  /**\n   * A text or an element to be used in an enclosing label element.\n   */\n  label: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().node),\n  /**\n   * The position of the label.\n   * @default 'end'\n   */\n  labelPlacement: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['bottom', 'end', 'start', 'top']),\n  /**\n   * @ignore\n   */\n  name: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string),\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func),\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: prop_types__WEBPACK_IMPORTED_MODULE_13___default().shape({\n    typography: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object)\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_13___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object)]),\n  /**\n   * The value of the component.\n   */\n  value: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().any)\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (FormControlLabel);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FormControlLabel/FormControlLabel.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getFormControlLabelUtilityClasses\": function() { return /* binding */ getFormControlLabelUtilityClasses; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getFormControlLabelUtilityClasses(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiFormControlLabel', slot);\n}\nconst formControlLabelClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiFormControlLabel', ['root', 'labelPlacementStart', 'labelPlacementTop', 'labelPlacementBottom', 'disabled', 'label', 'error']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (formControlLabelClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FormControlLabel/index.js":
/*!**************************************************************!*\
  !*** ./node_modules/@mui/material/FormControlLabel/index.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _FormControlLabel__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"formControlLabelClasses\": function() { return /* reexport safe */ _formControlLabelClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; },\n/* harmony export */   \"getFormControlLabelUtilityClasses\": function() { return /* reexport safe */ _formControlLabelClasses__WEBPACK_IMPORTED_MODULE_1__.getFormControlLabelUtilityClasses; }\n/* harmony export */ });\n/* harmony import */ var _FormControlLabel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FormControlLabel */ \"./node_modules/@mui/material/FormControlLabel/FormControlLabel.js\");\n/* harmony import */ var _formControlLabelClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formControlLabelClasses */ \"./node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FormControlLabel/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FormGroup/FormGroup.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/material/FormGroup/FormGroup.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _formGroupClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./formGroupClasses */ \"./node_modules/@mui/material/FormGroup/formGroupClasses.js\");\n/* harmony import */ var _FormControl_useFormControl__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../FormControl/useFormControl */ \"./node_modules/@mui/material/FormControl/useFormControl.js\");\n/* harmony import */ var _FormControl_formControlState__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../FormControl/formControlState */ \"./node_modules/@mui/material/FormControl/formControlState.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"className\", \"row\"];\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    row,\n    error\n  } = ownerState;\n  const slots = {\n    root: ['root', row && 'row', error && 'error']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _formGroupClasses__WEBPACK_IMPORTED_MODULE_6__.getFormGroupUtilityClass, classes);\n};\nconst FormGroupRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('div', {\n  name: 'MuiFormGroup',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.row && styles.row];\n  }\n})(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  display: 'flex',\n  flexDirection: 'column',\n  flexWrap: 'wrap'\n}, ownerState.row && {\n  flexDirection: 'row'\n}));\n\n/**\n * `FormGroup` wraps controls such as `Checkbox` and `Switch`.\n * It provides compact row layout.\n * For the `Radio`, you should be using the `RadioGroup` component instead of this one.\n */\nconst FormGroup = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function FormGroup(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n    props: inProps,\n    name: 'MuiFormGroup'\n  });\n  const {\n      className,\n      row = false\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const muiFormControl = (0,_FormControl_useFormControl__WEBPACK_IMPORTED_MODULE_9__[\"default\"])();\n  const fcs = (0,_FormControl_formControlState__WEBPACK_IMPORTED_MODULE_10__[\"default\"])({\n    props,\n    muiFormControl,\n    states: ['error']\n  });\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    row,\n    error: fcs.error\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(FormGroupRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    ownerState: ownerState,\n    ref: ref\n  }, other));\n});\n true ? FormGroup.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n  /**\n   * Display group of elements in a compact row.\n   * @default false\n   */\n  row: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_11___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (FormGroup);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FormGroup/FormGroup.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FormGroup/formGroupClasses.js":
/*!******************************************************************!*\
  !*** ./node_modules/@mui/material/FormGroup/formGroupClasses.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getFormGroupUtilityClass\": function() { return /* binding */ getFormGroupUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getFormGroupUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiFormGroup', slot);\n}\nconst formGroupClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiFormGroup', ['root', 'row', 'error']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (formGroupClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FormGroup/formGroupClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FormGroup/index.js":
/*!*******************************************************!*\
  !*** ./node_modules/@mui/material/FormGroup/index.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _FormGroup__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"formGroupClasses\": function() { return /* reexport safe */ _formGroupClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; },\n/* harmony export */   \"getFormGroupUtilityClass\": function() { return /* reexport safe */ _formGroupClasses__WEBPACK_IMPORTED_MODULE_1__.getFormGroupUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _FormGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FormGroup */ \"./node_modules/@mui/material/FormGroup/FormGroup.js\");\n/* harmony import */ var _formGroupClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formGroupClasses */ \"./node_modules/@mui/material/FormGroup/formGroupClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FormGroup/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FormHelperText/FormHelperText.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@mui/material/FormHelperText/FormHelperText.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _FormControl_formControlState__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../FormControl/formControlState */ \"./node_modules/@mui/material/FormControl/formControlState.js\");\n/* harmony import */ var _FormControl_useFormControl__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../FormControl/useFormControl */ \"./node_modules/@mui/material/FormControl/useFormControl.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _formHelperTextClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./formHelperTextClasses */ \"./node_modules/@mui/material/FormHelperText/formHelperTextClasses.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nvar _span;\nconst _excluded = [\"children\", \"className\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"margin\", \"required\", \"variant\"];\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    contained,\n    size,\n    disabled,\n    error,\n    filled,\n    focused,\n    required\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', error && 'error', size && `size${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`, contained && 'contained', focused && 'focused', filled && 'filled', required && 'required']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _formHelperTextClasses__WEBPACK_IMPORTED_MODULE_7__.getFormHelperTextUtilityClasses, classes);\n};\nconst FormHelperTextRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('p', {\n  name: 'MuiFormHelperText',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.size && styles[`size${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.size)}`], ownerState.contained && styles.contained, ownerState.filled && styles.filled];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.caption, {\n  textAlign: 'left',\n  marginTop: 3,\n  marginRight: 0,\n  marginBottom: 0,\n  marginLeft: 0,\n  [`&.${_formHelperTextClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n    color: (theme.vars || theme).palette.text.disabled\n  },\n  [`&.${_formHelperTextClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n}, ownerState.size === 'small' && {\n  marginTop: 4\n}, ownerState.contained && {\n  marginLeft: 14,\n  marginRight: 14\n}));\nconst FormHelperText = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function FormHelperText(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({\n    props: inProps,\n    name: 'MuiFormHelperText'\n  });\n  const {\n      children,\n      className,\n      component = 'p'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const muiFormControl = (0,_FormControl_useFormControl__WEBPACK_IMPORTED_MODULE_10__[\"default\"])();\n  const fcs = (0,_FormControl_formControlState__WEBPACK_IMPORTED_MODULE_11__[\"default\"])({\n    props,\n    muiFormControl,\n    states: ['variant', 'size', 'disabled', 'error', 'filled', 'focused', 'required']\n  });\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    component,\n    contained: fcs.variant === 'filled' || fcs.variant === 'outlined',\n    variant: fcs.variant,\n    size: fcs.size,\n    disabled: fcs.disabled,\n    error: fcs.error,\n    filled: fcs.filled,\n    focused: fcs.focused,\n    required: fcs.required\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(FormHelperTextRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    as: component,\n    ownerState: ownerState,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    ref: ref\n  }, other, {\n    children: children === ' ' ? // notranslate needed while Google Translate will not fix zero-width space issue\n    _span || (_span = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"span\", {\n      className: \"notranslate\",\n      children: \"\\u200B\"\n    })) : children\n  }));\n});\n true ? FormHelperText.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   *\n   * If `' '` is provided, the component reserves one line height for displaying a future message.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().elementType),\n  /**\n   * If `true`, the helper text should be displayed in a disabled state.\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `true`, helper text should be displayed in an error state.\n   */\n  error: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `true`, the helper text should use filled classes key.\n   */\n  filled: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `true`, the helper text should use focused classes key.\n   */\n  focused: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   */\n  margin: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOf(['dense']),\n  /**\n   * If `true`, the helper text should use required classes key.\n   */\n  required: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_12___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_12___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object)]),\n  /**\n   * The variant to use.\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOf(['filled', 'outlined', 'standard']), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (FormHelperText);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FormHelperText/FormHelperText.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FormHelperText/formHelperTextClasses.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@mui/material/FormHelperText/formHelperTextClasses.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getFormHelperTextUtilityClasses\": function() { return /* binding */ getFormHelperTextUtilityClasses; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getFormHelperTextUtilityClasses(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiFormHelperText', slot);\n}\nconst formHelperTextClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiFormHelperText', ['root', 'error', 'disabled', 'sizeSmall', 'sizeMedium', 'contained', 'focused', 'filled', 'required']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (formHelperTextClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FormHelperText/formHelperTextClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FormLabel/FormLabel.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/material/FormLabel/FormLabel.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FormLabelRoot\": function() { return /* binding */ FormLabelRoot; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _FormControl_formControlState__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../FormControl/formControlState */ \"./node_modules/@mui/material/FormControl/formControlState.js\");\n/* harmony import */ var _FormControl_useFormControl__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../FormControl/useFormControl */ \"./node_modules/@mui/material/FormControl/useFormControl.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _formLabelClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./formLabelClasses */ \"./node_modules/@mui/material/FormLabel/formLabelClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"required\"];\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    focused,\n    disabled,\n    error,\n    filled,\n    required\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`, disabled && 'disabled', error && 'error', filled && 'filled', focused && 'focused', required && 'required'],\n    asterisk: ['asterisk', error && 'error']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _formLabelClasses__WEBPACK_IMPORTED_MODULE_7__.getFormLabelUtilityClasses, classes);\n};\nconst FormLabelRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('label', {\n  name: 'MuiFormLabel',\n  slot: 'Root',\n  overridesResolver: ({\n    ownerState\n  }, styles) => {\n    return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, styles.root, ownerState.color === 'secondary' && styles.colorSecondary, ownerState.filled && styles.filled);\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.body1, {\n  lineHeight: '1.4375em',\n  padding: 0,\n  position: 'relative',\n  [`&.${_formLabelClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].focused}`]: {\n    color: (theme.vars || theme).palette[ownerState.color].main\n  },\n  [`&.${_formLabelClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n    color: (theme.vars || theme).palette.text.disabled\n  },\n  [`&.${_formLabelClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n}));\nconst AsteriskComponent = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('span', {\n  name: 'MuiFormLabel',\n  slot: 'Asterisk',\n  overridesResolver: (props, styles) => styles.asterisk\n})(({\n  theme\n}) => ({\n  [`&.${_formLabelClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n}));\nconst FormLabel = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function FormLabel(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({\n    props: inProps,\n    name: 'MuiFormLabel'\n  });\n  const {\n      children,\n      className,\n      component = 'label'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const muiFormControl = (0,_FormControl_useFormControl__WEBPACK_IMPORTED_MODULE_10__[\"default\"])();\n  const fcs = (0,_FormControl_formControlState__WEBPACK_IMPORTED_MODULE_11__[\"default\"])({\n    props,\n    muiFormControl,\n    states: ['color', 'required', 'focused', 'disabled', 'error', 'filled']\n  });\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    color: fcs.color || 'primary',\n    component,\n    disabled: fcs.disabled,\n    error: fcs.error,\n    filled: fcs.filled,\n    focused: fcs.focused,\n    required: fcs.required\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(FormLabelRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    as: component,\n    ownerState: ownerState,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    ref: ref\n  }, other, {\n    children: [children, fcs.required && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(AsteriskComponent, {\n      ownerState: ownerState,\n      \"aria-hidden\": true,\n      className: classes.asterisk,\n      children: [\"\\u2009\", '*']\n    })]\n  }));\n});\n true ? FormLabel.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string),\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   */\n  color: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string)]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().elementType),\n  /**\n   * If `true`, the label should be displayed in a disabled state.\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `true`, the label is displayed in an error state.\n   */\n  error: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `true`, the label should use filled classes key.\n   */\n  filled: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `true`, the input of this label is focused (used by `FormGroup` components).\n   */\n  focused: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `true`, the label will indicate that the `input` is required.\n   */\n  required: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_12___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_12___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (FormLabel);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FormLabel/FormLabel.js?");

/***/ }),

/***/ "./node_modules/@mui/material/FormLabel/formLabelClasses.js":
/*!******************************************************************!*\
  !*** ./node_modules/@mui/material/FormLabel/formLabelClasses.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getFormLabelUtilityClasses\": function() { return /* binding */ getFormLabelUtilityClasses; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getFormLabelUtilityClasses(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiFormLabel', slot);\n}\nconst formLabelClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiFormLabel', ['root', 'colorSecondary', 'focused', 'disabled', 'error', 'filled', 'required', 'asterisk']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (formLabelClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/FormLabel/formLabelClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/GlobalStyles/GlobalStyles.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@mui/material/GlobalStyles/GlobalStyles.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js\");\n/* harmony import */ var _styles_defaultTheme__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../styles/defaultTheme */ \"./node_modules/@mui/material/styles/defaultTheme.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n\n\nfunction GlobalStyles(props) {\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_mui_system__WEBPACK_IMPORTED_MODULE_3__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n    defaultTheme: _styles_defaultTheme__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n  }));\n}\n true ? GlobalStyles.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The styles you want to apply globally.\n   */\n  styles: prop_types__WEBPACK_IMPORTED_MODULE_5___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_5___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_5___default().object), prop_types__WEBPACK_IMPORTED_MODULE_5___default().shape({\n    __emotion_styles: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().any.isRequired)\n  }), (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string), (prop_types__WEBPACK_IMPORTED_MODULE_5___default().bool)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (GlobalStyles);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/GlobalStyles/GlobalStyles.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Grid/Grid.js":
/*!*************************************************!*\
  !*** ./node_modules/@mui/material/Grid/Grid.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"generateColumnGap\": function() { return /* binding */ generateColumnGap; },\n/* harmony export */   \"generateDirection\": function() { return /* binding */ generateDirection; },\n/* harmony export */   \"generateGrid\": function() { return /* binding */ generateGrid; },\n/* harmony export */   \"generateRowGap\": function() { return /* binding */ generateRowGap; },\n/* harmony export */   \"resolveSpacingClasses\": function() { return /* binding */ resolveSpacingClasses; },\n/* harmony export */   \"resolveSpacingStyles\": function() { return /* binding */ resolveSpacingStyles; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/breakpoints.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _utils_requirePropFactory__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/requirePropFactory */ \"./node_modules/@mui/material/utils/requirePropFactory.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_useTheme__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../styles/useTheme */ \"./node_modules/@mui/material/styles/useTheme.js\");\n/* harmony import */ var _GridContext__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./GridContext */ \"./node_modules/@mui/material/Grid/GridContext.js\");\n/* harmony import */ var _gridClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./gridClasses */ \"./node_modules/@mui/material/Grid/gridClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"className\", \"columns\", \"columnSpacing\", \"component\", \"container\", \"direction\", \"item\", \"rowSpacing\", \"spacing\", \"wrap\", \"zeroMinWidth\"];\n// A grid component using the following libs as inspiration.\n//\n// For the implementation:\n// - https://getbootstrap.com/docs/4.3/layout/grid/\n// - https://github.com/kristoferjoseph/flexboxgrid/blob/master/src/css/flexboxgrid.css\n// - https://github.com/roylee0704/react-flexbox-grid\n// - https://material.angularjs.org/latest/layout/introduction\n//\n// Follow this flexbox Guide to better understand the underlying model:\n// - https://css-tricks.com/snippets/css/a-guide-to-flexbox/\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getOffset(val) {\n  const parse = parseFloat(val);\n  return `${parse}${String(val).replace(String(parse), '') || 'px'}`;\n}\nfunction generateGrid({\n  theme,\n  ownerState\n}) {\n  let size;\n  return theme.breakpoints.keys.reduce((globalStyles, breakpoint) => {\n    // Use side effect over immutability for better performance.\n    let styles = {};\n    if (ownerState[breakpoint]) {\n      size = ownerState[breakpoint];\n    }\n    if (!size) {\n      return globalStyles;\n    }\n    if (size === true) {\n      // For the auto layouting\n      styles = {\n        flexBasis: 0,\n        flexGrow: 1,\n        maxWidth: '100%'\n      };\n    } else if (size === 'auto') {\n      styles = {\n        flexBasis: 'auto',\n        flexGrow: 0,\n        flexShrink: 0,\n        maxWidth: 'none',\n        width: 'auto'\n      };\n    } else {\n      const columnsBreakpointValues = (0,_mui_system__WEBPACK_IMPORTED_MODULE_5__.resolveBreakpointValues)({\n        values: ownerState.columns,\n        breakpoints: theme.breakpoints.values\n      });\n      const columnValue = typeof columnsBreakpointValues === 'object' ? columnsBreakpointValues[breakpoint] : columnsBreakpointValues;\n      if (columnValue === undefined || columnValue === null) {\n        return globalStyles;\n      }\n      // Keep 7 significant numbers.\n      const width = `${Math.round(size / columnValue * 10e7) / 10e5}%`;\n      let more = {};\n      if (ownerState.container && ownerState.item && ownerState.columnSpacing !== 0) {\n        const themeSpacing = theme.spacing(ownerState.columnSpacing);\n        if (themeSpacing !== '0px') {\n          const fullWidth = `calc(${width} + ${getOffset(themeSpacing)})`;\n          more = {\n            flexBasis: fullWidth,\n            maxWidth: fullWidth\n          };\n        }\n      }\n\n      // Close to the bootstrap implementation:\n      // https://github.com/twbs/bootstrap/blob/8fccaa2439e97ec72a4b7dc42ccc1f649790adb0/scss/mixins/_grid.scss#L41\n      styles = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n        flexBasis: width,\n        flexGrow: 0,\n        maxWidth: width\n      }, more);\n    }\n\n    // No need for a media query for the first size.\n    if (theme.breakpoints.values[breakpoint] === 0) {\n      Object.assign(globalStyles, styles);\n    } else {\n      globalStyles[theme.breakpoints.up(breakpoint)] = styles;\n    }\n    return globalStyles;\n  }, {});\n}\nfunction generateDirection({\n  theme,\n  ownerState\n}) {\n  const directionValues = (0,_mui_system__WEBPACK_IMPORTED_MODULE_5__.resolveBreakpointValues)({\n    values: ownerState.direction,\n    breakpoints: theme.breakpoints.values\n  });\n  return (0,_mui_system__WEBPACK_IMPORTED_MODULE_5__.handleBreakpoints)({\n    theme\n  }, directionValues, propValue => {\n    const output = {\n      flexDirection: propValue\n    };\n    if (propValue.indexOf('column') === 0) {\n      output[`& > .${_gridClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].item}`] = {\n        maxWidth: 'none'\n      };\n    }\n    return output;\n  });\n}\n\n/**\n * Extracts zero value breakpoint keys before a non-zero value breakpoint key.\n * @example { xs: 0, sm: 0, md: 2, lg: 0, xl: 0 } or [0, 0, 2, 0, 0]\n * @returns [xs, sm]\n */\nfunction extractZeroValueBreakpointKeys({\n  breakpoints,\n  values\n}) {\n  let nonZeroKey = '';\n  Object.keys(values).forEach(key => {\n    if (nonZeroKey !== '') {\n      return;\n    }\n    if (values[key] !== 0) {\n      nonZeroKey = key;\n    }\n  });\n  const sortedBreakpointKeysByValue = Object.keys(breakpoints).sort((a, b) => {\n    return breakpoints[a] - breakpoints[b];\n  });\n  return sortedBreakpointKeysByValue.slice(0, sortedBreakpointKeysByValue.indexOf(nonZeroKey));\n}\nfunction generateRowGap({\n  theme,\n  ownerState\n}) {\n  const {\n    container,\n    rowSpacing\n  } = ownerState;\n  let styles = {};\n  if (container && rowSpacing !== 0) {\n    const rowSpacingValues = (0,_mui_system__WEBPACK_IMPORTED_MODULE_5__.resolveBreakpointValues)({\n      values: rowSpacing,\n      breakpoints: theme.breakpoints.values\n    });\n    let zeroValueBreakpointKeys;\n    if (typeof rowSpacingValues === 'object') {\n      zeroValueBreakpointKeys = extractZeroValueBreakpointKeys({\n        breakpoints: theme.breakpoints.values,\n        values: rowSpacingValues\n      });\n    }\n    styles = (0,_mui_system__WEBPACK_IMPORTED_MODULE_5__.handleBreakpoints)({\n      theme\n    }, rowSpacingValues, (propValue, breakpoint) => {\n      var _zeroValueBreakpointK;\n      const themeSpacing = theme.spacing(propValue);\n      if (themeSpacing !== '0px') {\n        return {\n          marginTop: `-${getOffset(themeSpacing)}`,\n          [`& > .${_gridClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].item}`]: {\n            paddingTop: getOffset(themeSpacing)\n          }\n        };\n      }\n      if ((_zeroValueBreakpointK = zeroValueBreakpointKeys) != null && _zeroValueBreakpointK.includes(breakpoint)) {\n        return {};\n      }\n      return {\n        marginTop: 0,\n        [`& > .${_gridClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].item}`]: {\n          paddingTop: 0\n        }\n      };\n    });\n  }\n  return styles;\n}\nfunction generateColumnGap({\n  theme,\n  ownerState\n}) {\n  const {\n    container,\n    columnSpacing\n  } = ownerState;\n  let styles = {};\n  if (container && columnSpacing !== 0) {\n    const columnSpacingValues = (0,_mui_system__WEBPACK_IMPORTED_MODULE_5__.resolveBreakpointValues)({\n      values: columnSpacing,\n      breakpoints: theme.breakpoints.values\n    });\n    let zeroValueBreakpointKeys;\n    if (typeof columnSpacingValues === 'object') {\n      zeroValueBreakpointKeys = extractZeroValueBreakpointKeys({\n        breakpoints: theme.breakpoints.values,\n        values: columnSpacingValues\n      });\n    }\n    styles = (0,_mui_system__WEBPACK_IMPORTED_MODULE_5__.handleBreakpoints)({\n      theme\n    }, columnSpacingValues, (propValue, breakpoint) => {\n      var _zeroValueBreakpointK2;\n      const themeSpacing = theme.spacing(propValue);\n      if (themeSpacing !== '0px') {\n        return {\n          width: `calc(100% + ${getOffset(themeSpacing)})`,\n          marginLeft: `-${getOffset(themeSpacing)}`,\n          [`& > .${_gridClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].item}`]: {\n            paddingLeft: getOffset(themeSpacing)\n          }\n        };\n      }\n      if ((_zeroValueBreakpointK2 = zeroValueBreakpointKeys) != null && _zeroValueBreakpointK2.includes(breakpoint)) {\n        return {};\n      }\n      return {\n        width: '100%',\n        marginLeft: 0,\n        [`& > .${_gridClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].item}`]: {\n          paddingLeft: 0\n        }\n      };\n    });\n  }\n  return styles;\n}\nfunction resolveSpacingStyles(spacing, breakpoints, styles = {}) {\n  // undefined/null or `spacing` <= 0\n  if (!spacing || spacing <= 0) {\n    return [];\n  }\n  // in case of string/number `spacing`\n  if (typeof spacing === 'string' && !Number.isNaN(Number(spacing)) || typeof spacing === 'number') {\n    return [styles[`spacing-xs-${String(spacing)}`]];\n  }\n  // in case of object `spacing`\n  const spacingStyles = [];\n  breakpoints.forEach(breakpoint => {\n    const value = spacing[breakpoint];\n    if (Number(value) > 0) {\n      spacingStyles.push(styles[`spacing-${breakpoint}-${String(value)}`]);\n    }\n  });\n  return spacingStyles;\n}\n\n// Default CSS values\n// flex: '0 1 auto',\n// flexDirection: 'row',\n// alignItems: 'flex-start',\n// flexWrap: 'nowrap',\n// justifyContent: 'flex-start',\nconst GridRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('div', {\n  name: 'MuiGrid',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      container,\n      direction,\n      item,\n      spacing,\n      wrap,\n      zeroMinWidth,\n      breakpoints\n    } = ownerState;\n    let spacingStyles = [];\n\n    // in case of grid item\n    if (container) {\n      spacingStyles = resolveSpacingStyles(spacing, breakpoints, styles);\n    }\n    const breakpointsStyles = [];\n    breakpoints.forEach(breakpoint => {\n      const value = ownerState[breakpoint];\n      if (value) {\n        breakpointsStyles.push(styles[`grid-${breakpoint}-${String(value)}`]);\n      }\n    });\n    return [styles.root, container && styles.container, item && styles.item, zeroMinWidth && styles.zeroMinWidth, ...spacingStyles, direction !== 'row' && styles[`direction-xs-${String(direction)}`], wrap !== 'wrap' && styles[`wrap-xs-${String(wrap)}`], ...breakpointsStyles];\n  }\n})(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  boxSizing: 'border-box'\n}, ownerState.container && {\n  display: 'flex',\n  flexWrap: 'wrap',\n  width: '100%'\n}, ownerState.item && {\n  margin: 0 // For instance, it's useful when used with a `figure` element.\n}, ownerState.zeroMinWidth && {\n  minWidth: 0\n}, ownerState.wrap !== 'wrap' && {\n  flexWrap: ownerState.wrap\n}), generateDirection, generateRowGap, generateColumnGap, generateGrid);\nfunction resolveSpacingClasses(spacing, breakpoints) {\n  // undefined/null or `spacing` <= 0\n  if (!spacing || spacing <= 0) {\n    return [];\n  }\n  // in case of string/number `spacing`\n  if (typeof spacing === 'string' && !Number.isNaN(Number(spacing)) || typeof spacing === 'number') {\n    return [`spacing-xs-${String(spacing)}`];\n  }\n  // in case of object `spacing`\n  const classes = [];\n  breakpoints.forEach(breakpoint => {\n    const value = spacing[breakpoint];\n    if (Number(value) > 0) {\n      const className = `spacing-${breakpoint}-${String(value)}`;\n      classes.push(className);\n    }\n  });\n  return classes;\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    container,\n    direction,\n    item,\n    spacing,\n    wrap,\n    zeroMinWidth,\n    breakpoints\n  } = ownerState;\n  let spacingClasses = [];\n\n  // in case of grid item\n  if (container) {\n    spacingClasses = resolveSpacingClasses(spacing, breakpoints);\n  }\n  const breakpointsClasses = [];\n  breakpoints.forEach(breakpoint => {\n    const value = ownerState[breakpoint];\n    if (value) {\n      breakpointsClasses.push(`grid-${breakpoint}-${String(value)}`);\n    }\n  });\n  const slots = {\n    root: ['root', container && 'container', item && 'item', zeroMinWidth && 'zeroMinWidth', ...spacingClasses, direction !== 'row' && `direction-xs-${String(direction)}`, wrap !== 'wrap' && `wrap-xs-${String(wrap)}`, ...breakpointsClasses]\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(slots, _gridClasses__WEBPACK_IMPORTED_MODULE_6__.getGridUtilityClass, classes);\n};\nconst Grid = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Grid(inProps, ref) {\n  const themeProps = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({\n    props: inProps,\n    name: 'MuiGrid'\n  });\n  const {\n    breakpoints\n  } = (0,_styles_useTheme__WEBPACK_IMPORTED_MODULE_10__[\"default\"])();\n  const props = (0,_mui_system__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(themeProps);\n  const {\n      className,\n      columns: columnsProp,\n      columnSpacing: columnSpacingProp,\n      component = 'div',\n      container = false,\n      direction = 'row',\n      item = false,\n      rowSpacing: rowSpacingProp,\n      spacing = 0,\n      wrap = 'wrap',\n      zeroMinWidth = false\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const rowSpacing = rowSpacingProp || spacing;\n  const columnSpacing = columnSpacingProp || spacing;\n  const columnsContext = react__WEBPACK_IMPORTED_MODULE_2__.useContext(_GridContext__WEBPACK_IMPORTED_MODULE_12__[\"default\"]);\n\n  // columns set with default breakpoint unit of 12\n  const columns = container ? columnsProp || 12 : columnsContext;\n  const breakpointsValues = {};\n  const otherFiltered = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, other);\n  breakpoints.keys.forEach(breakpoint => {\n    if (other[breakpoint] != null) {\n      breakpointsValues[breakpoint] = other[breakpoint];\n      delete otherFiltered[breakpoint];\n    }\n  });\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    columns,\n    container,\n    direction,\n    item,\n    rowSpacing,\n    columnSpacing,\n    wrap,\n    zeroMinWidth,\n    spacing\n  }, breakpointsValues, {\n    breakpoints: breakpoints.keys\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_GridContext__WEBPACK_IMPORTED_MODULE_12__[\"default\"].Provider, {\n    value: columns,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(GridRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      ownerState: ownerState,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n      as: component,\n      ref: ref\n    }, otherFiltered))\n  });\n});\n true ? Grid.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string),\n  /**\n   * The number of columns.\n   * @default 12\n   */\n  columns: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_13___default().number)), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object)]),\n  /**\n   * Defines the horizontal space between the type `item` components.\n   * It overrides the value of the `spacing` prop.\n   */\n  columnSpacing: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)])), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().elementType),\n  /**\n   * If `true`, the component will have the flex *container* behavior.\n   * You should be wrapping *items* with a *container*.\n   * @default false\n   */\n  container: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * Defines the `flex-direction` style property.\n   * It is applied for all screen sizes.\n   * @default 'row'\n   */\n  direction: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['column-reverse', 'column', 'row-reverse', 'row']), prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object)]),\n  /**\n   * If `true`, the component will have the flex *item* behavior.\n   * You should be wrapping *items* with a *container*.\n   * @default false\n   */\n  item: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for the `lg` breakpoint and wider screens if not overridden.\n   * @default false\n   */\n  lg: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)]),\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for the `md` breakpoint and wider screens if not overridden.\n   * @default false\n   */\n  md: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)]),\n  /**\n   * Defines the vertical space between the type `item` components.\n   * It overrides the value of the `spacing` prop.\n   */\n  rowSpacing: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)])), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)]),\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for the `sm` breakpoint and wider screens if not overridden.\n   * @default false\n   */\n  sm: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)]),\n  /**\n   * Defines the space between the type `item` components.\n   * It can only be used on a type `container` component.\n   * @default 0\n   */\n  spacing: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)])), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_13___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object)]),\n  /**\n   * Defines the `flex-wrap` style property.\n   * It's applied for all screen sizes.\n   * @default 'wrap'\n   */\n  wrap: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['nowrap', 'wrap-reverse', 'wrap']),\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for the `xl` breakpoint and wider screens if not overridden.\n   * @default false\n   */\n  xl: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)]),\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for all the screen sizes with the lowest priority.\n   * @default false\n   */\n  xs: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)]),\n  /**\n   * If `true`, it sets `min-width: 0` on the item.\n   * Refer to the limitations section of the documentation to better understand the use case.\n   * @default false\n   */\n  zeroMinWidth: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)\n} : 0;\nif (true) {\n  const requireProp = (0,_utils_requirePropFactory__WEBPACK_IMPORTED_MODULE_14__[\"default\"])('Grid', Grid);\n  // eslint-disable-next-line no-useless-concat\n  Grid['propTypes' + ''] = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, Grid.propTypes, {\n    direction: requireProp('container'),\n    lg: requireProp('item'),\n    md: requireProp('item'),\n    sm: requireProp('item'),\n    spacing: requireProp('container'),\n    wrap: requireProp('container'),\n    xs: requireProp('item'),\n    zeroMinWidth: requireProp('item')\n  });\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (Grid);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Grid/Grid.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Grid/GridContext.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/material/Grid/GridContext.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/**\n * @ignore - internal component.\n */\nconst GridContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext();\nif (true) {\n  GridContext.displayName = 'GridContext';\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (GridContext);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Grid/GridContext.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Grid/gridClasses.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/material/Grid/gridClasses.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getGridUtilityClass\": function() { return /* binding */ getGridUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getGridUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiGrid', slot);\n}\nconst SPACINGS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nconst DIRECTIONS = ['column-reverse', 'column', 'row-reverse', 'row'];\nconst WRAPS = ['nowrap', 'wrap-reverse', 'wrap'];\nconst GRID_SIZES = ['auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\nconst gridClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiGrid', ['root', 'container', 'item', 'zeroMinWidth',\n// spacings\n...SPACINGS.map(spacing => `spacing-xs-${spacing}`),\n// direction values\n...DIRECTIONS.map(direction => `direction-xs-${direction}`),\n// wrap values\n...WRAPS.map(wrap => `wrap-xs-${wrap}`),\n// grid sizes for all breakpoints\n...GRID_SIZES.map(size => `grid-xs-${size}`), ...GRID_SIZES.map(size => `grid-sm-${size}`), ...GRID_SIZES.map(size => `grid-md-${size}`), ...GRID_SIZES.map(size => `grid-lg-${size}`), ...GRID_SIZES.map(size => `grid-xl-${size}`)]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (gridClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Grid/gridClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Grid/index.js":
/*!**************************************************!*\
  !*** ./node_modules/@mui/material/Grid/index.js ***!
  \**************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _Grid__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getGridUtilityClass\": function() { return /* reexport safe */ _gridClasses__WEBPACK_IMPORTED_MODULE_1__.getGridUtilityClass; },\n/* harmony export */   \"gridClasses\": function() { return /* reexport safe */ _gridClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _Grid__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Grid */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/* harmony import */ var _gridClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./gridClasses */ \"./node_modules/@mui/material/Grid/gridClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Grid/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Grow/Grow.js":
/*!*************************************************!*\
  !*** ./node_modules/@mui/material/Grow/Grow.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/elementAcceptingRef.js\");\n/* harmony import */ var react_transition_group__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-transition-group */ \"./node_modules/react-transition-group/esm/Transition.js\");\n/* harmony import */ var _styles_useTheme__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../styles/useTheme */ \"./node_modules/@mui/material/styles/useTheme.js\");\n/* harmony import */ var _transitions_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../transitions/utils */ \"./node_modules/@mui/material/transitions/utils.js\");\n/* harmony import */ var _utils_useForkRef__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/useForkRef */ \"./node_modules/@mui/material/utils/useForkRef.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\n\n\n\n\n\n\n\n\nfunction getScale(value) {\n  return `scale(${value}, ${value ** 2})`;\n}\nconst styles = {\n  entering: {\n    opacity: 1,\n    transform: getScale(1)\n  },\n  entered: {\n    opacity: 1,\n    transform: 'none'\n  }\n};\n\n/*\n TODO v6: remove\n Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.\n */\nconst isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\\/)15(.|_)4/i.test(navigator.userAgent);\n\n/**\n * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and\n * [Popover](/material-ui/react-popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Grow = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Grow(props, ref) {\n  const {\n      addEndListener,\n      appear = true,\n      children,\n      easing,\n      in: inProp,\n      onEnter,\n      onEntered,\n      onEntering,\n      onExit,\n      onExited,\n      onExiting,\n      style,\n      timeout = 'auto',\n      // eslint-disable-next-line react/prop-types\n      TransitionComponent = react_transition_group__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const timer = react__WEBPACK_IMPORTED_MODULE_2__.useRef();\n  const autoTimeout = react__WEBPACK_IMPORTED_MODULE_2__.useRef();\n  const theme = (0,_styles_useTheme__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n  const nodeRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const handleRef = (0,_utils_useForkRef__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(nodeRef, children.ref, ref);\n  const normalizedTransitionCallback = callback => maybeIsAppearing => {\n    if (callback) {\n      const node = nodeRef.current;\n\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (maybeIsAppearing === undefined) {\n        callback(node);\n      } else {\n        callback(node, maybeIsAppearing);\n      }\n    }\n  };\n  const handleEntering = normalizedTransitionCallback(onEntering);\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    (0,_transitions_utils__WEBPACK_IMPORTED_MODULE_7__.reflow)(node); // So the animation always start from the start.\n\n    const {\n      duration: transitionDuration,\n      delay,\n      easing: transitionTimingFunction\n    } = (0,_transitions_utils__WEBPACK_IMPORTED_MODULE_7__.getTransitionProps)({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'enter'\n    });\n    let duration;\n    if (timeout === 'auto') {\n      duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n      autoTimeout.current = duration;\n    } else {\n      duration = transitionDuration;\n    }\n    node.style.transition = [theme.transitions.create('opacity', {\n      duration,\n      delay\n    }), theme.transitions.create('transform', {\n      duration: isWebKit154 ? duration : duration * 0.666,\n      delay,\n      easing: transitionTimingFunction\n    })].join(',');\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback(onEntered);\n  const handleExiting = normalizedTransitionCallback(onExiting);\n  const handleExit = normalizedTransitionCallback(node => {\n    const {\n      duration: transitionDuration,\n      delay,\n      easing: transitionTimingFunction\n    } = (0,_transitions_utils__WEBPACK_IMPORTED_MODULE_7__.getTransitionProps)({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'exit'\n    });\n    let duration;\n    if (timeout === 'auto') {\n      duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n      autoTimeout.current = duration;\n    } else {\n      duration = transitionDuration;\n    }\n    node.style.transition = [theme.transitions.create('opacity', {\n      duration,\n      delay\n    }), theme.transitions.create('transform', {\n      duration: isWebKit154 ? duration : duration * 0.666,\n      delay: isWebKit154 ? delay : delay || duration * 0.333,\n      easing: transitionTimingFunction\n    })].join(',');\n    node.style.opacity = 0;\n    node.style.transform = getScale(0.75);\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(onExited);\n  const handleAddEndListener = next => {\n    if (timeout === 'auto') {\n      timer.current = setTimeout(next, autoTimeout.current || 0);\n    }\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(nodeRef.current, next);\n    }\n  };\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    return () => {\n      clearTimeout(timer.current);\n    };\n  }, []);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(TransitionComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    appear: appear,\n    in: inProp,\n    nodeRef: nodeRef,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    timeout: timeout === 'auto' ? null : timeout\n  }, other, {\n    children: (state, childProps) => {\n      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(children, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n        style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n          opacity: 0,\n          transform: getScale(0.75),\n          visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n        }, styles[state], style, children.props.style),\n        ref: handleRef\n      }, childProps));\n    }\n  }));\n});\n true ? Grow.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n  /**\n   * Perform the enter transition when it first mounts if `in` is also `true`.\n   * Set this to `false` to disable this behavior.\n   * @default true\n   */\n  appear: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().bool),\n  /**\n   * A single child content element.\n   */\n  children: _mui_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"].isRequired,\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   */\n  easing: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_8___default().shape({\n    enter: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string),\n    exit: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string)\n  }), (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string)]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().bool),\n  /**\n   * @ignore\n   */\n  onEnter: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n  /**\n   * @ignore\n   */\n  onEntered: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n  /**\n   * @ignore\n   */\n  onEntering: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n  /**\n   * @ignore\n   */\n  onExit: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n  /**\n   * @ignore\n   */\n  onExited: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n  /**\n   * @ignore\n   */\n  onExiting: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n  /**\n   * @ignore\n   */\n  style: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().object),\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   *\n   * Set to 'auto' to automatically calculate transition time based on height.\n   * @default 'auto'\n   */\n  timeout: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_8___default().number), prop_types__WEBPACK_IMPORTED_MODULE_8___default().shape({\n    appear: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().number),\n    enter: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().number),\n    exit: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().number)\n  })])\n} : 0;\nGrow.muiSupportAuto = true;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Grow);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Grow/Grow.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Grow/index.js":
/*!**************************************************!*\
  !*** ./node_modules/@mui/material/Grow/index.js ***!
  \**************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _Grow__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _Grow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Grow */ \"./node_modules/@mui/material/Grow/Grow.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Grow/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/IconButton/IconButton.js":
/*!*************************************************************!*\
  !*** ./node_modules/@mui/material/IconButton/IconButton.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/chainPropTypes.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/colorManipulator.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _ButtonBase__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../ButtonBase */ \"./node_modules/@mui/material/ButtonBase/ButtonBase.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _iconButtonClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./iconButtonClasses */ \"./node_modules/@mui/material/IconButton/iconButtonClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"edge\", \"children\", \"className\", \"color\", \"disabled\", \"disableFocusRipple\", \"size\"];\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disabled,\n    color,\n    edge,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', color !== 'default' && `color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`, edge && `edge${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(edge)}`, `size${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`]\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _iconButtonClasses__WEBPACK_IMPORTED_MODULE_7__.getIconButtonUtilityClass, classes);\n};\nconst IconButtonRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_ButtonBase__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n  name: 'MuiIconButton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.color !== 'default' && styles[`color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.color)}`], ownerState.edge && styles[`edge${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.edge)}`], styles[`size${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.size)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  textAlign: 'center',\n  flex: '0 0 auto',\n  fontSize: theme.typography.pxToRem(24),\n  padding: 8,\n  borderRadius: '50%',\n  overflow: 'visible',\n  // Explicitly set the default value to solve a bug on IE11.\n  color: (theme.vars || theme).palette.action.active,\n  transition: theme.transitions.create('background-color', {\n    duration: theme.transitions.duration.shortest\n  })\n}, !ownerState.disableRipple && {\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_10__.alpha)(theme.palette.action.active, theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  }\n}, ownerState.edge === 'start' && {\n  marginLeft: ownerState.size === 'small' ? -3 : -12\n}, ownerState.edge === 'end' && {\n  marginRight: ownerState.size === 'small' ? -3 : -12\n}), ({\n  theme,\n  ownerState\n}) => {\n  var _palette;\n  const palette = (_palette = (theme.vars || theme).palette) == null ? void 0 : _palette[ownerState.color];\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState.color === 'inherit' && {\n    color: 'inherit'\n  }, ownerState.color !== 'inherit' && ownerState.color !== 'default' && (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    color: palette == null ? void 0 : palette.main\n  }, !ownerState.disableRipple && {\n    '&:hover': (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, palette && {\n      backgroundColor: theme.vars ? `rgba(${palette.mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_10__.alpha)(palette.main, theme.palette.action.hoverOpacity)\n    }, {\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    })\n  }), ownerState.size === 'small' && {\n    padding: 5,\n    fontSize: theme.typography.pxToRem(18)\n  }, ownerState.size === 'large' && {\n    padding: 12,\n    fontSize: theme.typography.pxToRem(28)\n  }, {\n    [`&.${_iconButtonClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n      backgroundColor: 'transparent',\n      color: (theme.vars || theme).palette.action.disabled\n    }\n  });\n});\n\n/**\n * Refer to the [Icons](/material-ui/icons/) section of the documentation\n * regarding the available icon options.\n */\nconst IconButton = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function IconButton(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_11__[\"default\"])({\n    props: inProps,\n    name: 'MuiIconButton'\n  });\n  const {\n      edge = false,\n      children,\n      className,\n      color = 'default',\n      disabled = false,\n      disableFocusRipple = false,\n      size = 'medium'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    edge,\n    color,\n    disabled,\n    disableFocusRipple,\n    size\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(IconButtonRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    centerRipple: true,\n    focusRipple: !disableFocusRipple,\n    disabled: disabled,\n    ref: ref,\n    ownerState: ownerState\n  }, other, {\n    children: children\n  }));\n});\n true ? IconButton.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The icon to display.\n   */\n  children: (0,_mui_utils__WEBPACK_IMPORTED_MODULE_12__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_13___default().node), props => {\n    const found = react__WEBPACK_IMPORTED_MODULE_2__.Children.toArray(props.children).some(child => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.isValidElement(child) && child.props.onClick);\n    if (found) {\n      return new Error(['MUI: You are providing an onClick event listener to a child of a button element.', 'Prefer applying it to the IconButton directly.', 'This guarantees that the whole <button> will be responsive to click events.'].join('\\n'));\n    }\n    return null;\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string),\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'default'\n   */\n  color: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['inherit', 'default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)]),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * If given, uses a negative margin to counteract the padding on one\n   * side (this is often helpful for aligning the left or right\n   * side of the icon with content above or below, without ruining the border\n   * size and shape).\n   * @default false\n   */\n  edge: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['end', 'start', false]),\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense button styling.\n   * @default 'medium'\n   */\n  size: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['small', 'medium', 'large']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_13___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (IconButton);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/IconButton/IconButton.js?");

/***/ }),

/***/ "./node_modules/@mui/material/IconButton/iconButtonClasses.js":
/*!********************************************************************!*\
  !*** ./node_modules/@mui/material/IconButton/iconButtonClasses.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getIconButtonUtilityClass\": function() { return /* binding */ getIconButtonUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getIconButtonUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiIconButton', slot);\n}\nconst iconButtonClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiIconButton', ['root', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'colorError', 'colorInfo', 'colorSuccess', 'colorWarning', 'edgeStart', 'edgeEnd', 'sizeSmall', 'sizeMedium', 'sizeLarge']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (iconButtonClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/IconButton/iconButtonClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/IconButton/index.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/material/IconButton/index.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _IconButton__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getIconButtonUtilityClass\": function() { return /* reexport safe */ _iconButtonClasses__WEBPACK_IMPORTED_MODULE_1__.getIconButtonUtilityClass; },\n/* harmony export */   \"iconButtonClasses\": function() { return /* reexport safe */ _iconButtonClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _IconButton__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./IconButton */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _iconButtonClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./iconButtonClasses */ \"./node_modules/@mui/material/IconButton/iconButtonClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/IconButton/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Input/Input.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/material/Input/Input.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/deepmerge.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/refType.js\");\n/* harmony import */ var _InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../InputBase/InputBase */ \"./node_modules/@mui/material/InputBase/InputBase.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _inputClasses__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./inputClasses */ \"./node_modules/@mui/material/Input/inputClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"disableUnderline\", \"components\", \"componentsProps\", \"fullWidth\", \"inputComponent\", \"multiline\", \"slotProps\", \"slots\", \"type\"];\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableUnderline\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableUnderline && 'underline'],\n    input: ['input']\n  };\n  const composedClasses = (0,_mui_base__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(slots, _inputClasses__WEBPACK_IMPORTED_MODULE_5__.getInputUtilityClass, classes);\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, classes, composedClasses);\n};\nconst InputRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__.InputBaseRoot, {\n  shouldForwardProp: prop => (0,_styles_styled__WEBPACK_IMPORTED_MODULE_6__.rootShouldForwardProp)(prop) || prop === 'classes',\n  name: 'MuiInput',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [...(0,_InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__.rootOverridesResolver)(props, styles), !ownerState.disableUnderline && styles.underline];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  const light = theme.palette.mode === 'light';\n  let bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n  if (theme.vars) {\n    bottomLineColor = `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})`;\n  }\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    position: 'relative'\n  }, ownerState.formControl && {\n    'label + &': {\n      marginTop: 16\n    }\n  }, !ownerState.disableUnderline && {\n    '&:after': {\n      borderBottom: `2px solid ${(theme.vars || theme).palette[ownerState.color].main}`,\n      left: 0,\n      bottom: 0,\n      // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n      content: '\"\"',\n      position: 'absolute',\n      right: 0,\n      transform: 'scaleX(0)',\n      transition: theme.transitions.create('transform', {\n        duration: theme.transitions.duration.shorter,\n        easing: theme.transitions.easing.easeOut\n      }),\n      pointerEvents: 'none' // Transparent to the hover style.\n    },\n\n    [`&.${_inputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].focused}:after`]: {\n      // translateX(0) is a workaround for Safari transform scale bug\n      // See https://github.com/mui/material-ui/issues/31766\n      transform: 'scaleX(1) translateX(0)'\n    },\n    [`&.${_inputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].error}`]: {\n      '&:before, &:after': {\n        borderBottomColor: (theme.vars || theme).palette.error.main\n      }\n    },\n    '&:before': {\n      borderBottom: `1px solid ${bottomLineColor}`,\n      left: 0,\n      bottom: 0,\n      // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n      content: '\"\\\\00a0\"',\n      position: 'absolute',\n      right: 0,\n      transition: theme.transitions.create('border-bottom-color', {\n        duration: theme.transitions.duration.shorter\n      }),\n      pointerEvents: 'none' // Transparent to the hover style.\n    },\n\n    [`&:hover:not(.${_inputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].disabled}, .${_inputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].error}):before`]: {\n      borderBottom: `2px solid ${(theme.vars || theme).palette.text.primary}`,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        borderBottom: `1px solid ${bottomLineColor}`\n      }\n    },\n    [`&.${_inputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].disabled}:before`]: {\n      borderBottomStyle: 'dotted'\n    }\n  });\n});\nconst InputInput = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__.InputBaseComponent, {\n  name: 'MuiInput',\n  slot: 'Input',\n  overridesResolver: _InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__.inputOverridesResolver\n})({});\nconst Input = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Input(inProps, ref) {\n  var _ref, _slots$root, _ref2, _slots$input;\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n    props: inProps,\n    name: 'MuiInput'\n  });\n  const {\n      disableUnderline,\n      components = {},\n      componentsProps: componentsPropsProp,\n      fullWidth = false,\n      inputComponent = 'input',\n      multiline = false,\n      slotProps,\n      slots = {},\n      type = 'text'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const classes = useUtilityClasses(props);\n  const ownerState = {\n    disableUnderline\n  };\n  const inputComponentsProps = {\n    root: {\n      ownerState\n    }\n  };\n  const componentsProps = (slotProps != null ? slotProps : componentsPropsProp) ? (0,_mui_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(slotProps != null ? slotProps : componentsPropsProp, inputComponentsProps) : inputComponentsProps;\n  const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : InputRoot;\n  const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : InputInput;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    slots: {\n      root: RootSlot,\n      input: InputSlot\n    },\n    slotProps: componentsProps,\n    fullWidth: fullWidth,\n    inputComponent: inputComponent,\n    multiline: multiline,\n    ref: ref,\n    type: type\n  }, other, {\n    classes: classes\n  }));\n});\n true ? Input.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOf(['primary', 'secondary']), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string)]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: prop_types__WEBPACK_IMPORTED_MODULE_10___default().shape({\n    Input: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType),\n    Root: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType)\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: prop_types__WEBPACK_IMPORTED_MODULE_10___default().shape({\n    input: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n    root: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().any),\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * If `true`, the `input` will not have an underline.\n   */\n  disableUnderline: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().node),\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * The id of the `input` element.\n   */\n  id: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType),\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: _mui_utils__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string)]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string)]),\n  /**\n   * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func),\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string)]),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: prop_types__WEBPACK_IMPORTED_MODULE_10___default().shape({\n    input: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n    root: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: prop_types__WEBPACK_IMPORTED_MODULE_10___default().shape({\n    input: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType),\n    root: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType)\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().node),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().any)\n} : 0;\nInput.muiName = 'Input';\n/* harmony default export */ __webpack_exports__[\"default\"] = (Input);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Input/Input.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Input/index.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/material/Input/index.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _Input__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getInputUtilityClass\": function() { return /* reexport safe */ _inputClasses__WEBPACK_IMPORTED_MODULE_1__.getInputUtilityClass; },\n/* harmony export */   \"inputClasses\": function() { return /* reexport safe */ _inputClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _Input__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Input */ \"./node_modules/@mui/material/Input/Input.js\");\n/* harmony import */ var _inputClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./inputClasses */ \"./node_modules/@mui/material/Input/inputClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Input/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Input/inputClasses.js":
/*!**********************************************************!*\
  !*** ./node_modules/@mui/material/Input/inputClasses.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getInputUtilityClass\": function() { return /* binding */ getInputUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n/* harmony import */ var _InputBase__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../InputBase */ \"./node_modules/@mui/material/InputBase/inputBaseClasses.js\");\n\n\n\n\nfunction getInputUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiInput', slot);\n}\nconst inputClasses = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _InputBase__WEBPACK_IMPORTED_MODULE_2__[\"default\"], (0,_mui_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('MuiInput', ['root', 'underline', 'input']));\n/* harmony default export */ __webpack_exports__[\"default\"] = (inputClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Input/inputClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/InputBase/InputBase.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/material/InputBase/InputBase.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"InputBaseComponent\": function() { return /* binding */ InputBaseComponent; },\n/* harmony export */   \"InputBaseRoot\": function() { return /* binding */ InputBaseRoot; },\n/* harmony export */   \"inputOverridesResolver\": function() { return /* binding */ inputOverridesResolver; },\n/* harmony export */   \"rootOverridesResolver\": function() { return /* binding */ rootOverridesResolver; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/elementTypeAcceptingRef.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/refType.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/base/TextareaAutosize/TextareaAutosize.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/base/utils/isHostComponent.js\");\n/* harmony import */ var _FormControl_formControlState__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../FormControl/formControlState */ \"./node_modules/@mui/material/FormControl/formControlState.js\");\n/* harmony import */ var _FormControl_FormControlContext__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../FormControl/FormControlContext */ \"./node_modules/@mui/material/FormControl/FormControlContext.js\");\n/* harmony import */ var _FormControl_useFormControl__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../FormControl/useFormControl */ \"./node_modules/@mui/material/FormControl/useFormControl.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _utils_useForkRef__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/useForkRef */ \"./node_modules/@mui/material/utils/useForkRef.js\");\n/* harmony import */ var _utils_useEnhancedEffect__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/useEnhancedEffect */ \"./node_modules/@mui/material/utils/useEnhancedEffect.js\");\n/* harmony import */ var _GlobalStyles__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../GlobalStyles */ \"./node_modules/@mui/material/GlobalStyles/GlobalStyles.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utils */ \"./node_modules/@mui/material/InputBase/utils.js\");\n/* harmony import */ var _inputBaseClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./inputBaseClasses */ \"./node_modules/@mui/material/InputBase/inputBaseClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\nconst _excluded = [\"aria-describedby\", \"autoComplete\", \"autoFocus\", \"className\", \"color\", \"components\", \"componentsProps\", \"defaultValue\", \"disabled\", \"disableInjectingGlobalStyles\", \"endAdornment\", \"error\", \"fullWidth\", \"id\", \"inputComponent\", \"inputProps\", \"inputRef\", \"margin\", \"maxRows\", \"minRows\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onClick\", \"onFocus\", \"onKeyDown\", \"onKeyUp\", \"placeholder\", \"readOnly\", \"renderSuffix\", \"rows\", \"size\", \"slotProps\", \"slots\", \"startAdornment\", \"type\", \"value\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst rootOverridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.formControl && styles.formControl, ownerState.startAdornment && styles.adornedStart, ownerState.endAdornment && styles.adornedEnd, ownerState.error && styles.error, ownerState.size === 'small' && styles.sizeSmall, ownerState.multiline && styles.multiline, ownerState.color && styles[`color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.color)}`], ownerState.fullWidth && styles.fullWidth, ownerState.hiddenLabel && styles.hiddenLabel];\n};\nconst inputOverridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.input, ownerState.size === 'small' && styles.inputSizeSmall, ownerState.multiline && styles.inputMultiline, ownerState.type === 'search' && styles.inputTypeSearch, ownerState.startAdornment && styles.inputAdornedStart, ownerState.endAdornment && styles.inputAdornedEnd, ownerState.hiddenLabel && styles.inputHiddenLabel];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    disabled,\n    error,\n    endAdornment,\n    focused,\n    formControl,\n    fullWidth,\n    hiddenLabel,\n    multiline,\n    readOnly,\n    size,\n    startAdornment,\n    type\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`, disabled && 'disabled', error && 'error', fullWidth && 'fullWidth', focused && 'focused', formControl && 'formControl', size === 'small' && 'sizeSmall', multiline && 'multiline', startAdornment && 'adornedStart', endAdornment && 'adornedEnd', hiddenLabel && 'hiddenLabel', readOnly && 'readOnly'],\n    input: ['input', disabled && 'disabled', type === 'search' && 'inputTypeSearch', multiline && 'inputMultiline', size === 'small' && 'inputSizeSmall', hiddenLabel && 'inputHiddenLabel', startAdornment && 'inputAdornedStart', endAdornment && 'inputAdornedEnd', readOnly && 'readOnly']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _inputBaseClasses__WEBPACK_IMPORTED_MODULE_7__.getInputBaseUtilityClass, classes);\n};\nconst InputBaseRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n  name: 'MuiInputBase',\n  slot: 'Root',\n  overridesResolver: rootOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, theme.typography.body1, {\n  color: (theme.vars || theme).palette.text.primary,\n  lineHeight: '1.4375em',\n  // 23px\n  boxSizing: 'border-box',\n  // Prevent padding issue with fullWidth.\n  position: 'relative',\n  cursor: 'text',\n  display: 'inline-flex',\n  alignItems: 'center',\n  [`&.${_inputBaseClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n    color: (theme.vars || theme).palette.text.disabled,\n    cursor: 'default'\n  }\n}, ownerState.multiline && (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  padding: '4px 0 5px'\n}, ownerState.size === 'small' && {\n  paddingTop: 1\n}), ownerState.fullWidth && {\n  width: '100%'\n}));\nconst InputBaseComponent = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('input', {\n  name: 'MuiInputBase',\n  slot: 'Input',\n  overridesResolver: inputOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => {\n  const light = theme.palette.mode === 'light';\n  const placeholder = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    color: 'currentColor'\n  }, theme.vars ? {\n    opacity: theme.vars.opacity.inputPlaceholder\n  } : {\n    opacity: light ? 0.42 : 0.5\n  }, {\n    transition: theme.transitions.create('opacity', {\n      duration: theme.transitions.duration.shorter\n    })\n  });\n  const placeholderHidden = {\n    opacity: '0 !important'\n  };\n  const placeholderVisible = theme.vars ? {\n    opacity: theme.vars.opacity.inputPlaceholder\n  } : {\n    opacity: light ? 0.42 : 0.5\n  };\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    font: 'inherit',\n    letterSpacing: 'inherit',\n    color: 'currentColor',\n    padding: '4px 0 5px',\n    border: 0,\n    boxSizing: 'content-box',\n    background: 'none',\n    height: '1.4375em',\n    // Reset 23pxthe native input line-height\n    margin: 0,\n    // Reset for Safari\n    WebkitTapHighlightColor: 'transparent',\n    display: 'block',\n    // Make the flex item shrink with Firefox\n    minWidth: 0,\n    width: '100%',\n    // Fix IE11 width issue\n    animationName: 'mui-auto-fill-cancel',\n    animationDuration: '10ms',\n    '&::-webkit-input-placeholder': placeholder,\n    '&::-moz-placeholder': placeholder,\n    // Firefox 19+\n    '&:-ms-input-placeholder': placeholder,\n    // IE11\n    '&::-ms-input-placeholder': placeholder,\n    // Edge\n    '&:focus': {\n      outline: 0\n    },\n    // Reset Firefox invalid required input style\n    '&:invalid': {\n      boxShadow: 'none'\n    },\n    '&::-webkit-search-decoration': {\n      // Remove the padding when type=search.\n      WebkitAppearance: 'none'\n    },\n    // Show and hide the placeholder logic\n    [`label[data-shrink=false] + .${_inputBaseClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].formControl} &`]: {\n      '&::-webkit-input-placeholder': placeholderHidden,\n      '&::-moz-placeholder': placeholderHidden,\n      // Firefox 19+\n      '&:-ms-input-placeholder': placeholderHidden,\n      // IE11\n      '&::-ms-input-placeholder': placeholderHidden,\n      // Edge\n      '&:focus::-webkit-input-placeholder': placeholderVisible,\n      '&:focus::-moz-placeholder': placeholderVisible,\n      // Firefox 19+\n      '&:focus:-ms-input-placeholder': placeholderVisible,\n      // IE11\n      '&:focus::-ms-input-placeholder': placeholderVisible // Edge\n    },\n\n    [`&.${_inputBaseClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n      opacity: 1,\n      // Reset iOS opacity\n      WebkitTextFillColor: (theme.vars || theme).palette.text.disabled // Fix opacity Safari bug\n    },\n\n    '&:-webkit-autofill': {\n      animationDuration: '5000s',\n      animationName: 'mui-auto-fill'\n    }\n  }, ownerState.size === 'small' && {\n    paddingTop: 1\n  }, ownerState.multiline && {\n    height: 'auto',\n    resize: 'none',\n    padding: 0,\n    paddingTop: 0\n  }, ownerState.type === 'search' && {\n    // Improve type search style.\n    MozAppearance: 'textfield'\n  });\n});\nconst inputGlobalStyles = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_GlobalStyles__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n  styles: {\n    '@keyframes mui-auto-fill': {\n      from: {\n        display: 'block'\n      }\n    },\n    '@keyframes mui-auto-fill-cancel': {\n      from: {\n        display: 'block'\n      }\n    }\n  }\n});\n\n/**\n * `InputBase` contains as few styles as possible.\n * It aims to be a simple building block for creating an input.\n * It contains a load of style reset and some state logic.\n */\nconst InputBase = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function InputBase(inProps, ref) {\n  var _slotProps$input;\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__[\"default\"])({\n    props: inProps,\n    name: 'MuiInputBase'\n  });\n  const {\n      'aria-describedby': ariaDescribedby,\n      autoComplete,\n      autoFocus,\n      className,\n      components = {},\n      componentsProps = {},\n      defaultValue,\n      disabled,\n      disableInjectingGlobalStyles,\n      endAdornment,\n      fullWidth = false,\n      id,\n      inputComponent = 'input',\n      inputProps: inputPropsProp = {},\n      inputRef: inputRefProp,\n      maxRows,\n      minRows,\n      multiline = false,\n      name,\n      onBlur,\n      onChange,\n      onClick,\n      onFocus,\n      onKeyDown,\n      onKeyUp,\n      placeholder,\n      readOnly,\n      renderSuffix,\n      rows,\n      slotProps = {},\n      slots = {},\n      startAdornment,\n      type = 'text',\n      value: valueProp\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const value = inputPropsProp.value != null ? inputPropsProp.value : valueProp;\n  const {\n    current: isControlled\n  } = react__WEBPACK_IMPORTED_MODULE_2__.useRef(value != null);\n  const inputRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef();\n  const handleInputRefWarning = react__WEBPACK_IMPORTED_MODULE_2__.useCallback(instance => {\n    if (true) {\n      if (instance && instance.nodeName !== 'INPUT' && !instance.focus) {\n        console.error(['MUI: You have provided a `inputComponent` to the input component', 'that does not correctly handle the `ref` prop.', 'Make sure the `ref` prop is called with a HTMLInputElement.'].join('\\n'));\n      }\n    }\n  }, []);\n  const handleInputRef = (0,_utils_useForkRef__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(inputRef, inputRefProp, inputPropsProp.ref, handleInputRefWarning);\n  const [focused, setFocused] = react__WEBPACK_IMPORTED_MODULE_2__.useState(false);\n  const muiFormControl = (0,_FormControl_useFormControl__WEBPACK_IMPORTED_MODULE_12__[\"default\"])();\n  if (true) {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n      if (muiFormControl) {\n        return muiFormControl.registerEffect();\n      }\n      return undefined;\n    }, [muiFormControl]);\n  }\n  const fcs = (0,_FormControl_formControlState__WEBPACK_IMPORTED_MODULE_13__[\"default\"])({\n    props,\n    muiFormControl,\n    states: ['color', 'disabled', 'error', 'hiddenLabel', 'size', 'required', 'filled']\n  });\n  fcs.focused = muiFormControl ? muiFormControl.focused : focused;\n\n  // The blur won't fire when the disabled state is set on a focused input.\n  // We need to book keep the focused state manually.\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    if (!muiFormControl && disabled && focused) {\n      setFocused(false);\n      if (onBlur) {\n        onBlur();\n      }\n    }\n  }, [muiFormControl, disabled, focused, onBlur]);\n  const onFilled = muiFormControl && muiFormControl.onFilled;\n  const onEmpty = muiFormControl && muiFormControl.onEmpty;\n  const checkDirty = react__WEBPACK_IMPORTED_MODULE_2__.useCallback(obj => {\n    if ((0,_utils__WEBPACK_IMPORTED_MODULE_14__.isFilled)(obj)) {\n      if (onFilled) {\n        onFilled();\n      }\n    } else if (onEmpty) {\n      onEmpty();\n    }\n  }, [onFilled, onEmpty]);\n  (0,_utils_useEnhancedEffect__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(() => {\n    if (isControlled) {\n      checkDirty({\n        value\n      });\n    }\n  }, [value, checkDirty, isControlled]);\n  const handleFocus = event => {\n    // Fix a bug with IE11 where the focus/blur events are triggered\n    // while the component is disabled.\n    if (fcs.disabled) {\n      event.stopPropagation();\n      return;\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n    if (inputPropsProp.onFocus) {\n      inputPropsProp.onFocus(event);\n    }\n    if (muiFormControl && muiFormControl.onFocus) {\n      muiFormControl.onFocus(event);\n    } else {\n      setFocused(true);\n    }\n  };\n  const handleBlur = event => {\n    if (onBlur) {\n      onBlur(event);\n    }\n    if (inputPropsProp.onBlur) {\n      inputPropsProp.onBlur(event);\n    }\n    if (muiFormControl && muiFormControl.onBlur) {\n      muiFormControl.onBlur(event);\n    } else {\n      setFocused(false);\n    }\n  };\n  const handleChange = (event, ...args) => {\n    if (!isControlled) {\n      const element = event.target || inputRef.current;\n      if (element == null) {\n        throw new Error( true ? `MUI: Expected valid input target. Did you use a custom \\`inputComponent\\` and forget to forward refs? See https://mui.com/r/input-component-ref-interface for more info.` : 0);\n      }\n      checkDirty({\n        value: element.value\n      });\n    }\n    if (inputPropsProp.onChange) {\n      inputPropsProp.onChange(event, ...args);\n    }\n\n    // Perform in the willUpdate\n    if (onChange) {\n      onChange(event, ...args);\n    }\n  };\n\n  // Check the input state on mount, in case it was filled by the user\n  // or auto filled by the browser before the hydration (for SSR).\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    checkDirty(inputRef.current);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n  const handleClick = event => {\n    if (inputRef.current && event.currentTarget === event.target) {\n      inputRef.current.focus();\n    }\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  let InputComponent = inputComponent;\n  let inputProps = inputPropsProp;\n  if (multiline && InputComponent === 'input') {\n    if (rows) {\n      if (true) {\n        if (minRows || maxRows) {\n          console.warn('MUI: You can not use the `minRows` or `maxRows` props when the input `rows` prop is set.');\n        }\n      }\n      inputProps = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n        type: undefined,\n        minRows: rows,\n        maxRows: rows\n      }, inputProps);\n    } else {\n      inputProps = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n        type: undefined,\n        maxRows,\n        minRows\n      }, inputProps);\n    }\n    InputComponent = _mui_base__WEBPACK_IMPORTED_MODULE_16__[\"default\"];\n  }\n  const handleAutoFill = event => {\n    // Provide a fake value as Chrome might not let you access it for security reasons.\n    checkDirty(event.animationName === 'mui-auto-fill-cancel' ? inputRef.current : {\n      value: 'x'\n    });\n  };\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    if (muiFormControl) {\n      muiFormControl.setAdornedStart(Boolean(startAdornment));\n    }\n  }, [muiFormControl, startAdornment]);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    color: fcs.color || 'primary',\n    disabled: fcs.disabled,\n    endAdornment,\n    error: fcs.error,\n    focused: fcs.focused,\n    formControl: muiFormControl,\n    fullWidth,\n    hiddenLabel: fcs.hiddenLabel,\n    multiline,\n    size: fcs.size,\n    startAdornment,\n    type\n  });\n  const classes = useUtilityClasses(ownerState);\n  const Root = slots.root || components.Root || InputBaseRoot;\n  const rootProps = slotProps.root || componentsProps.root || {};\n  const Input = slots.input || components.Input || InputBaseComponent;\n  inputProps = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, inputProps, (_slotProps$input = slotProps.input) != null ? _slotProps$input : componentsProps.input);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n    children: [!disableInjectingGlobalStyles && inputGlobalStyles, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(Root, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, rootProps, !(0,_mui_base__WEBPACK_IMPORTED_MODULE_17__[\"default\"])(Root) && {\n      ownerState: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState, rootProps.ownerState)\n    }, {\n      ref: ref,\n      onClick: handleClick\n    }, other, {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, rootProps.className, className),\n      children: [startAdornment, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_FormControl_FormControlContext__WEBPACK_IMPORTED_MODULE_18__[\"default\"].Provider, {\n        value: null,\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(Input, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n          ownerState: ownerState,\n          \"aria-invalid\": fcs.error,\n          \"aria-describedby\": ariaDescribedby,\n          autoComplete: autoComplete,\n          autoFocus: autoFocus,\n          defaultValue: defaultValue,\n          disabled: fcs.disabled,\n          id: id,\n          onAnimationStart: handleAutoFill,\n          name: name,\n          placeholder: placeholder,\n          readOnly: readOnly,\n          required: fcs.required,\n          rows: rows,\n          value: value,\n          onKeyDown: onKeyDown,\n          onKeyUp: onKeyUp,\n          type: type\n        }, inputProps, !(0,_mui_base__WEBPACK_IMPORTED_MODULE_17__[\"default\"])(Input) && {\n          as: InputComponent,\n          ownerState: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState, inputProps.ownerState)\n        }, {\n          ref: handleInputRef,\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.input, inputProps.className),\n          onBlur: handleBlur,\n          onChange: handleChange,\n          onFocus: handleFocus\n        }))\n      }), endAdornment, renderSuffix ? renderSuffix((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, fcs, {\n        startAdornment\n      })) : null]\n    }))]\n  });\n});\n true ? InputBase.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * @ignore\n   */\n  'aria-describedby': (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string),\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string),\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().bool),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string),\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string)]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: prop_types__WEBPACK_IMPORTED_MODULE_19___default().shape({\n    Input: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().elementType),\n    Root: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().elementType)\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: prop_types__WEBPACK_IMPORTED_MODULE_19___default().shape({\n    input: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().object),\n    root: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().object)\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().any),\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().bool),\n  /**\n   * If `true`, GlobalStyles for the auto-fill keyframes will not be injected/removed on mount/unmount. Make sure to inject them at the top of your application.\n   * This option is intended to help with boosting the initial rendering performance if you are loading a big amount of Input components at once.\n   * @default false\n   */\n  disableInjectingGlobalStyles: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().bool),\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().node),\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().bool),\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().bool),\n  /**\n   * The id of the `input` element.\n   */\n  id: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string),\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: _mui_utils__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().object),\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: _mui_utils__WEBPACK_IMPORTED_MODULE_21__[\"default\"],\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_19___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string)]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_19___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string)]),\n  /**\n   * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().bool),\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string),\n  /**\n   * Callback fired when the `input` is blurred.\n   *\n   * Notice that the first argument (event) might be undefined.\n   */\n  onBlur: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().func),\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().func),\n  /**\n   * @ignore\n   */\n  onClick: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().func),\n  /**\n   * @ignore\n   */\n  onFocus: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().func),\n  /**\n   * Callback fired when the `input` doesn't satisfy its constraints.\n   */\n  onInvalid: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().func),\n  /**\n   * @ignore\n   */\n  onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().func),\n  /**\n   * @ignore\n   */\n  onKeyUp: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().func),\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string),\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().bool),\n  /**\n   * @ignore\n   */\n  renderSuffix: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().func),\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().bool),\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_19___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string)]),\n  /**\n   * The size of the component.\n   */\n  size: prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOf(['medium', 'small']), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string)]),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: prop_types__WEBPACK_IMPORTED_MODULE_19___default().shape({\n    input: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().object),\n    root: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().object)\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: prop_types__WEBPACK_IMPORTED_MODULE_19___default().shape({\n    input: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().elementType),\n    root: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().elementType)\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().node),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_19___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_19___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().object)]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string),\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().any)\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (InputBase);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/InputBase/InputBase.js?");

/***/ }),

/***/ "./node_modules/@mui/material/InputBase/index.js":
/*!*******************************************************!*\
  !*** ./node_modules/@mui/material/InputBase/index.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _InputBase__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getInputBaseUtilityClass\": function() { return /* reexport safe */ _inputBaseClasses__WEBPACK_IMPORTED_MODULE_1__.getInputBaseUtilityClass; },\n/* harmony export */   \"inputBaseClasses\": function() { return /* reexport safe */ _inputBaseClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _InputBase__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./InputBase */ \"./node_modules/@mui/material/InputBase/InputBase.js\");\n/* harmony import */ var _inputBaseClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./inputBaseClasses */ \"./node_modules/@mui/material/InputBase/inputBaseClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/InputBase/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/InputBase/inputBaseClasses.js":
/*!******************************************************************!*\
  !*** ./node_modules/@mui/material/InputBase/inputBaseClasses.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getInputBaseUtilityClass\": function() { return /* binding */ getInputBaseUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getInputBaseUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiInputBase', slot);\n}\nconst inputBaseClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiInputBase', ['root', 'formControl', 'focused', 'disabled', 'adornedStart', 'adornedEnd', 'error', 'sizeSmall', 'multiline', 'colorSecondary', 'fullWidth', 'hiddenLabel', 'readOnly', 'input', 'inputSizeSmall', 'inputMultiline', 'inputTypeSearch', 'inputAdornedStart', 'inputAdornedEnd', 'inputHiddenLabel']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (inputBaseClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/InputBase/inputBaseClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/InputBase/utils.js":
/*!*******************************************************!*\
  !*** ./node_modules/@mui/material/InputBase/utils.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"hasValue\": function() { return /* binding */ hasValue; },\n/* harmony export */   \"isAdornedStart\": function() { return /* binding */ isAdornedStart; },\n/* harmony export */   \"isFilled\": function() { return /* binding */ isFilled; }\n/* harmony export */ });\n// Supports determination of isControlled().\n// Controlled input accepts its current value as a prop.\n//\n// @see https://facebook.github.io/react/docs/forms.html#controlled-components\n// @param value\n// @returns {boolean} true if string (including '') or number (including zero)\nfunction hasValue(value) {\n  return value != null && !(Array.isArray(value) && value.length === 0);\n}\n\n// Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n//                    True when any number or string with length.\nfunction isFilled(obj, SSR = false) {\n  return obj && (hasValue(obj.value) && obj.value !== '' || SSR && hasValue(obj.defaultValue) && obj.defaultValue !== '');\n}\n\n// Determine if an Input is adorned on start.\n// It's corresponding to the left with LTR.\n//\n// @param obj\n// @returns {boolean} False when no adornments.\n//                    True when adorned at the start.\nfunction isAdornedStart(obj) {\n  return obj.startAdornment;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/InputBase/utils.js?");

/***/ }),

/***/ "./node_modules/@mui/material/InputLabel/InputLabel.js":
/*!*************************************************************!*\
  !*** ./node_modules/@mui/material/InputLabel/InputLabel.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _FormControl_formControlState__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../FormControl/formControlState */ \"./node_modules/@mui/material/FormControl/formControlState.js\");\n/* harmony import */ var _FormControl_useFormControl__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../FormControl/useFormControl */ \"./node_modules/@mui/material/FormControl/useFormControl.js\");\n/* harmony import */ var _FormLabel__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../FormLabel */ \"./node_modules/@mui/material/FormLabel/FormLabel.js\");\n/* harmony import */ var _FormLabel__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../FormLabel */ \"./node_modules/@mui/material/FormLabel/formLabelClasses.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _inputLabelClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./inputLabelClasses */ \"./node_modules/@mui/material/InputLabel/inputLabelClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"disableAnimation\", \"margin\", \"shrink\", \"variant\", \"className\"];\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    formControl,\n    size,\n    shrink,\n    disableAnimation,\n    variant,\n    required\n  } = ownerState;\n  const slots = {\n    root: ['root', formControl && 'formControl', !disableAnimation && 'animated', shrink && 'shrink', size === 'small' && 'sizeSmall', variant],\n    asterisk: [required && 'asterisk']\n  };\n  const composedClasses = (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _inputLabelClasses__WEBPACK_IMPORTED_MODULE_6__.getInputLabelUtilityClasses, classes);\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, classes, composedClasses);\n};\nconst InputLabelRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_FormLabel__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n  shouldForwardProp: prop => (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__.rootShouldForwardProp)(prop) || prop === 'classes',\n  name: 'MuiInputLabel',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${_FormLabel__WEBPACK_IMPORTED_MODULE_9__[\"default\"].asterisk}`]: styles.asterisk\n    }, styles.root, ownerState.formControl && styles.formControl, ownerState.size === 'small' && styles.sizeSmall, ownerState.shrink && styles.shrink, !ownerState.disableAnimation && styles.animated, styles[ownerState.variant]];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  display: 'block',\n  transformOrigin: 'top left',\n  whiteSpace: 'nowrap',\n  overflow: 'hidden',\n  textOverflow: 'ellipsis',\n  maxWidth: '100%'\n}, ownerState.formControl && {\n  position: 'absolute',\n  left: 0,\n  top: 0,\n  // slight alteration to spec spacing to match visual spec result\n  transform: 'translate(0, 20px) scale(1)'\n}, ownerState.size === 'small' && {\n  // Compensation for the `Input.inputSizeSmall` style.\n  transform: 'translate(0, 17px) scale(1)'\n}, ownerState.shrink && {\n  transform: 'translate(0, -1.5px) scale(0.75)',\n  transformOrigin: 'top left',\n  maxWidth: '133%'\n}, !ownerState.disableAnimation && {\n  transition: theme.transitions.create(['color', 'transform', 'max-width'], {\n    duration: theme.transitions.duration.shorter,\n    easing: theme.transitions.easing.easeOut\n  })\n}, ownerState.variant === 'filled' && (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  // Chrome's autofill feature gives the input field a yellow background.\n  // Since the input field is behind the label in the HTML tree,\n  // the input field is drawn last and hides the label with an opaque background color.\n  // zIndex: 1 will raise the label above opaque background-colors of input.\n  zIndex: 1,\n  pointerEvents: 'none',\n  transform: 'translate(12px, 16px) scale(1)',\n  maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n  transform: 'translate(12px, 13px) scale(1)'\n}, ownerState.shrink && (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  userSelect: 'none',\n  pointerEvents: 'auto',\n  transform: 'translate(12px, 7px) scale(0.75)',\n  maxWidth: 'calc(133% - 24px)'\n}, ownerState.size === 'small' && {\n  transform: 'translate(12px, 4px) scale(0.75)'\n})), ownerState.variant === 'outlined' && (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  // see comment above on filled.zIndex\n  zIndex: 1,\n  pointerEvents: 'none',\n  transform: 'translate(14px, 16px) scale(1)',\n  maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n  transform: 'translate(14px, 9px) scale(1)'\n}, ownerState.shrink && {\n  userSelect: 'none',\n  pointerEvents: 'auto',\n  maxWidth: 'calc(133% - 24px)',\n  transform: 'translate(14px, -9px) scale(0.75)'\n})));\nconst InputLabel = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function InputLabel(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__[\"default\"])({\n    name: 'MuiInputLabel',\n    props: inProps\n  });\n  const {\n      disableAnimation = false,\n      shrink: shrinkProp,\n      className\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const muiFormControl = (0,_FormControl_useFormControl__WEBPACK_IMPORTED_MODULE_11__[\"default\"])();\n  let shrink = shrinkProp;\n  if (typeof shrink === 'undefined' && muiFormControl) {\n    shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n  }\n  const fcs = (0,_FormControl_formControlState__WEBPACK_IMPORTED_MODULE_12__[\"default\"])({\n    props,\n    muiFormControl,\n    states: ['size', 'variant', 'required']\n  });\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    disableAnimation,\n    formControl: muiFormControl,\n    shrink,\n    size: fcs.size,\n    variant: fcs.variant,\n    required: fcs.required\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(InputLabelRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    \"data-shrink\": shrink,\n    ownerState: ownerState,\n    ref: ref,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className)\n  }, other, {\n    classes: classes\n  }));\n});\n true ? InputLabel.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string),\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   */\n  color: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)]),\n  /**\n   * If `true`, the transition animation is disabled.\n   * @default false\n   */\n  disableAnimation: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * If `true`, the label is displayed in an error state.\n   */\n  error: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * If `true`, the `input` of this label is focused.\n   */\n  focused: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   */\n  margin: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['dense']),\n  /**\n   * if `true`, the label will indicate that the `input` is required.\n   */\n  required: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * If `true`, the label is shrunk.\n   */\n  shrink: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * The size of the component.\n   * @default 'normal'\n   */\n  size: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['normal', 'small']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_13___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object)]),\n  /**\n   * The variant to use.\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['filled', 'outlined', 'standard'])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (InputLabel);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/InputLabel/InputLabel.js?");

/***/ }),

/***/ "./node_modules/@mui/material/InputLabel/index.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/material/InputLabel/index.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _InputLabel__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getInputLabelUtilityClasses\": function() { return /* reexport safe */ _inputLabelClasses__WEBPACK_IMPORTED_MODULE_1__.getInputLabelUtilityClasses; },\n/* harmony export */   \"inputLabelClasses\": function() { return /* reexport safe */ _inputLabelClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _InputLabel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./InputLabel */ \"./node_modules/@mui/material/InputLabel/InputLabel.js\");\n/* harmony import */ var _inputLabelClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./inputLabelClasses */ \"./node_modules/@mui/material/InputLabel/inputLabelClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/InputLabel/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/InputLabel/inputLabelClasses.js":
/*!********************************************************************!*\
  !*** ./node_modules/@mui/material/InputLabel/inputLabelClasses.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getInputLabelUtilityClasses\": function() { return /* binding */ getInputLabelUtilityClasses; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getInputLabelUtilityClasses(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiInputLabel', slot);\n}\nconst inputLabelClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (inputLabelClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/InputLabel/inputLabelClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/List/List.js":
/*!*************************************************!*\
  !*** ./node_modules/@mui/material/List/List.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _ListContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ListContext */ \"./node_modules/@mui/material/List/ListContext.js\");\n/* harmony import */ var _listClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./listClasses */ \"./node_modules/@mui/material/List/listClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"children\", \"className\", \"component\", \"dense\", \"disablePadding\", \"subheader\"];\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disablePadding,\n    dense,\n    subheader\n  } = ownerState;\n  const slots = {\n    root: ['root', !disablePadding && 'padding', dense && 'dense', subheader && 'subheader']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _listClasses__WEBPACK_IMPORTED_MODULE_6__.getListUtilityClass, classes);\n};\nconst ListRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('ul', {\n  name: 'MuiList',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disablePadding && styles.padding, ownerState.dense && styles.dense, ownerState.subheader && styles.subheader];\n  }\n})(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  listStyle: 'none',\n  margin: 0,\n  padding: 0,\n  position: 'relative'\n}, !ownerState.disablePadding && {\n  paddingTop: 8,\n  paddingBottom: 8\n}, ownerState.subheader && {\n  paddingTop: 0\n}));\nconst List = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function List(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n    props: inProps,\n    name: 'MuiList'\n  });\n  const {\n      children,\n      className,\n      component = 'ul',\n      dense = false,\n      disablePadding = false,\n      subheader\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const context = react__WEBPACK_IMPORTED_MODULE_2__.useMemo(() => ({\n    dense\n  }), [dense]);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    component,\n    dense,\n    disablePadding\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_ListContext__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Provider, {\n    value: context,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(ListRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      as: component,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n      ref: ref,\n      ownerState: ownerState\n    }, other, {\n      children: [subheader, children]\n    }))\n  });\n});\n true ? List.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType),\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used for\n   * the list and list items.\n   * The prop is available to descendant components as the `dense` context.\n   * @default false\n   */\n  dense: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * If `true`, vertical padding is removed from the list.\n   * @default false\n   */\n  disablePadding: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * The content of the subheader, normally `ListSubheader`.\n   */\n  subheader: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().node),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (List);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/List/List.js?");

/***/ }),

/***/ "./node_modules/@mui/material/List/ListContext.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/material/List/ListContext.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/**\n * @ignore - internal component.\n */\nconst ListContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext({});\nif (true) {\n  ListContext.displayName = 'ListContext';\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (ListContext);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/List/ListContext.js?");

/***/ }),

/***/ "./node_modules/@mui/material/List/listClasses.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/material/List/listClasses.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getListUtilityClass\": function() { return /* binding */ getListUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getListUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiList', slot);\n}\nconst listClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiList', ['root', 'padding', 'dense', 'subheader']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (listClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/List/listClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/ListItemIcon/listItemIconClasses.js":
/*!************************************************************************!*\
  !*** ./node_modules/@mui/material/ListItemIcon/listItemIconClasses.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getListItemIconUtilityClass\": function() { return /* binding */ getListItemIconUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getListItemIconUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiListItemIcon', slot);\n}\nconst listItemIconClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiListItemIcon', ['root', 'alignItemsFlexStart']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (listItemIconClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/ListItemIcon/listItemIconClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/ListItemText/ListItemText.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@mui/material/ListItemText/ListItemText.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _Typography__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Typography */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _List_ListContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../List/ListContext */ \"./node_modules/@mui/material/List/ListContext.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _listItemTextClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./listItemTextClasses */ \"./node_modules/@mui/material/ListItemText/listItemTextClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"children\", \"className\", \"disableTypography\", \"inset\", \"primary\", \"primaryTypographyProps\", \"secondary\", \"secondaryTypographyProps\"];\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    inset,\n    primary,\n    secondary,\n    dense\n  } = ownerState;\n  const slots = {\n    root: ['root', inset && 'inset', dense && 'dense', primary && secondary && 'multiline'],\n    primary: ['primary'],\n    secondary: ['secondary']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _listItemTextClasses__WEBPACK_IMPORTED_MODULE_6__.getListItemTextUtilityClass, classes);\n};\nconst ListItemTextRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('div', {\n  name: 'MuiListItemText',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${_listItemTextClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].primary}`]: styles.primary\n    }, {\n      [`& .${_listItemTextClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].secondary}`]: styles.secondary\n    }, styles.root, ownerState.inset && styles.inset, ownerState.primary && ownerState.secondary && styles.multiline, ownerState.dense && styles.dense];\n  }\n})(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  flex: '1 1 auto',\n  minWidth: 0,\n  marginTop: 4,\n  marginBottom: 4\n}, ownerState.primary && ownerState.secondary && {\n  marginTop: 6,\n  marginBottom: 6\n}, ownerState.inset && {\n  paddingLeft: 56\n}));\nconst ListItemText = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function ListItemText(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n    props: inProps,\n    name: 'MuiListItemText'\n  });\n  const {\n      children,\n      className,\n      disableTypography = false,\n      inset = false,\n      primary: primaryProp,\n      primaryTypographyProps,\n      secondary: secondaryProp,\n      secondaryTypographyProps\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const {\n    dense\n  } = react__WEBPACK_IMPORTED_MODULE_2__.useContext(_List_ListContext__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n  let primary = primaryProp != null ? primaryProp : children;\n  let secondary = secondaryProp;\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    disableTypography,\n    inset,\n    primary: !!primary,\n    secondary: !!secondary,\n    dense\n  });\n  const classes = useUtilityClasses(ownerState);\n  if (primary != null && primary.type !== _Typography__WEBPACK_IMPORTED_MODULE_10__[\"default\"] && !disableTypography) {\n    primary = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_Typography__WEBPACK_IMPORTED_MODULE_10__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      variant: dense ? 'body2' : 'body1',\n      className: classes.primary,\n      component: primaryTypographyProps != null && primaryTypographyProps.variant ? undefined : 'span',\n      display: \"block\"\n    }, primaryTypographyProps, {\n      children: primary\n    }));\n  }\n  if (secondary != null && secondary.type !== _Typography__WEBPACK_IMPORTED_MODULE_10__[\"default\"] && !disableTypography) {\n    secondary = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_Typography__WEBPACK_IMPORTED_MODULE_10__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      variant: \"body2\",\n      className: classes.secondary,\n      color: \"text.secondary\",\n      display: \"block\"\n    }, secondaryTypographyProps, {\n      children: secondary\n    }));\n  }\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(ListItemTextRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    ownerState: ownerState,\n    ref: ref\n  }, other, {\n    children: [primary, secondary]\n  }));\n});\n true ? ListItemText.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Alias for the `primary` prop.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n  /**\n   * If `true`, the children won't be wrapped by a Typography component.\n   * This can be useful to render an alternative Typography variant by wrapping\n   * the `children` (or `primary`) text, and optional `secondary` text\n   * with the Typography component.\n   * @default false\n   */\n  disableTypography: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * If `true`, the children are indented.\n   * This should be used if there is no left avatar or left icon.\n   * @default false\n   */\n  inset: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * The main content element.\n   */\n  primary: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().node),\n  /**\n   * These props will be forwarded to the primary typography component\n   * (as long as disableTypography is not `true`).\n   */\n  primaryTypographyProps: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object),\n  /**\n   * The secondary content element.\n   */\n  secondary: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().node),\n  /**\n   * These props will be forwarded to the secondary typography component\n   * (as long as disableTypography is not `true`).\n   */\n  secondaryTypographyProps: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_11___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (ListItemText);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/ListItemText/ListItemText.js?");

/***/ }),

/***/ "./node_modules/@mui/material/ListItemText/index.js":
/*!**********************************************************!*\
  !*** ./node_modules/@mui/material/ListItemText/index.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _ListItemText__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getListItemTextUtilityClass\": function() { return /* reexport safe */ _listItemTextClasses__WEBPACK_IMPORTED_MODULE_1__.getListItemTextUtilityClass; },\n/* harmony export */   \"listItemTextClasses\": function() { return /* reexport safe */ _listItemTextClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _ListItemText__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ListItemText */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\n/* harmony import */ var _listItemTextClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./listItemTextClasses */ \"./node_modules/@mui/material/ListItemText/listItemTextClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/ListItemText/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/ListItemText/listItemTextClasses.js":
/*!************************************************************************!*\
  !*** ./node_modules/@mui/material/ListItemText/listItemTextClasses.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getListItemTextUtilityClass\": function() { return /* binding */ getListItemTextUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getListItemTextUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiListItemText', slot);\n}\nconst listItemTextClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiListItemText', ['root', 'multiline', 'dense', 'inset', 'primary', 'secondary']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (listItemTextClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/ListItemText/listItemTextClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/ListSubheader/ListSubheader.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@mui/material/ListSubheader/ListSubheader.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _listSubheaderClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./listSubheaderClasses */ \"./node_modules/@mui/material/ListSubheader/listSubheaderClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"className\", \"color\", \"component\", \"disableGutters\", \"disableSticky\", \"inset\"];\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    disableGutters,\n    inset,\n    disableSticky\n  } = ownerState;\n  const slots = {\n    root: ['root', color !== 'default' && `color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`, !disableGutters && 'gutters', inset && 'inset', !disableSticky && 'sticky']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _listSubheaderClasses__WEBPACK_IMPORTED_MODULE_7__.getListSubheaderUtilityClass, classes);\n};\nconst ListSubheaderRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('li', {\n  name: 'MuiListSubheader',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.color !== 'default' && styles[`color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.color)}`], !ownerState.disableGutters && styles.gutters, ownerState.inset && styles.inset, !ownerState.disableSticky && styles.sticky];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  boxSizing: 'border-box',\n  lineHeight: '48px',\n  listStyle: 'none',\n  color: (theme.vars || theme).palette.text.secondary,\n  fontFamily: theme.typography.fontFamily,\n  fontWeight: theme.typography.fontWeightMedium,\n  fontSize: theme.typography.pxToRem(14)\n}, ownerState.color === 'primary' && {\n  color: (theme.vars || theme).palette.primary.main\n}, ownerState.color === 'inherit' && {\n  color: 'inherit'\n}, !ownerState.disableGutters && {\n  paddingLeft: 16,\n  paddingRight: 16\n}, ownerState.inset && {\n  paddingLeft: 72\n}, !ownerState.disableSticky && {\n  position: 'sticky',\n  top: 0,\n  zIndex: 1,\n  backgroundColor: (theme.vars || theme).palette.background.paper\n}));\nconst ListSubheader = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function ListSubheader(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({\n    props: inProps,\n    name: 'MuiListSubheader'\n  });\n  const {\n      className,\n      color = 'default',\n      component = 'li',\n      disableGutters = false,\n      disableSticky = false,\n      inset = false\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    color,\n    component,\n    disableGutters,\n    disableSticky,\n    inset\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(ListSubheaderRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    as: component,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    ref: ref,\n    ownerState: ownerState\n  }, other));\n});\n true ? ListSubheader.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * The color of the component. It supports those theme colors that make sense for this component.\n   * @default 'default'\n   */\n  color: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOf(['default', 'inherit', 'primary']),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType),\n  /**\n   * If `true`, the List Subheader will not have gutters.\n   * @default false\n   */\n  disableGutters: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * If `true`, the List Subheader will not stick to the top during scroll.\n   * @default false\n   */\n  disableSticky: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * If `true`, the List Subheader is indented.\n   * @default false\n   */\n  inset: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (ListSubheader);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/ListSubheader/ListSubheader.js?");

/***/ }),

/***/ "./node_modules/@mui/material/ListSubheader/listSubheaderClasses.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@mui/material/ListSubheader/listSubheaderClasses.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getListSubheaderUtilityClass\": function() { return /* binding */ getListSubheaderUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getListSubheaderUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiListSubheader', slot);\n}\nconst listSubheaderClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiListSubheader', ['root', 'colorPrimary', 'colorInherit', 'gutters', 'inset', 'sticky']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (listSubheaderClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/ListSubheader/listSubheaderClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Menu/Menu.js":
/*!*************************************************!*\
  !*** ./node_modules/@mui/material/Menu/Menu.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-is */ \"./node_modules/@mui/material/node_modules/react-is/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/HTMLElementType.js\");\n/* harmony import */ var _MenuList__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../MenuList */ \"./node_modules/@mui/material/MenuList/MenuList.js\");\n/* harmony import */ var _Paper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Paper */ \"./node_modules/@mui/material/Paper/Paper.js\");\n/* harmony import */ var _Popover__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Popover */ \"./node_modules/@mui/material/Popover/Popover.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useTheme__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../styles/useTheme */ \"./node_modules/@mui/material/styles/useTheme.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _menuClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./menuClasses */ \"./node_modules/@mui/material/Menu/menuClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"onEntering\"],\n  _excluded2 = [\"autoFocus\", \"children\", \"disableAutoFocusItem\", \"MenuListProps\", \"onClose\", \"open\", \"PaperProps\", \"PopoverClasses\", \"transitionDuration\", \"TransitionProps\", \"variant\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst RTL_ORIGIN = {\n  vertical: 'top',\n  horizontal: 'right'\n};\nconst LTR_ORIGIN = {\n  vertical: 'top',\n  horizontal: 'left'\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    paper: ['paper'],\n    list: ['list']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _menuClasses__WEBPACK_IMPORTED_MODULE_7__.getMenuUtilityClass, classes);\n};\nconst MenuRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_Popover__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n  shouldForwardProp: prop => (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__.rootShouldForwardProp)(prop) || prop === 'classes',\n  name: 'MuiMenu',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\nconst MenuPaper = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_Paper__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n  name: 'MuiMenu',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => styles.paper\n})({\n  // specZ: The maximum height of a simple menu should be one or more rows less than the view\n  // height. This ensures a tapable area outside of the simple menu with which to dismiss\n  // the menu.\n  maxHeight: 'calc(100% - 96px)',\n  // Add iOS momentum scrolling for iOS < 13.0\n  WebkitOverflowScrolling: 'touch'\n});\nconst MenuMenuList = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_MenuList__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n  name: 'MuiMenu',\n  slot: 'List',\n  overridesResolver: (props, styles) => styles.list\n})({\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0\n});\nconst Menu = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Menu(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_12__[\"default\"])({\n    props: inProps,\n    name: 'MuiMenu'\n  });\n  const {\n      autoFocus = true,\n      children,\n      disableAutoFocusItem = false,\n      MenuListProps = {},\n      onClose,\n      open,\n      PaperProps = {},\n      PopoverClasses,\n      transitionDuration = 'auto',\n      TransitionProps: {\n        onEntering\n      } = {},\n      variant = 'selectedMenu'\n    } = props,\n    TransitionProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props.TransitionProps, _excluded),\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded2);\n  const theme = (0,_styles_useTheme__WEBPACK_IMPORTED_MODULE_13__[\"default\"])();\n  const isRtl = theme.direction === 'rtl';\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n    autoFocus,\n    disableAutoFocusItem,\n    MenuListProps,\n    onEntering,\n    PaperProps,\n    transitionDuration,\n    TransitionProps,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const autoFocusItem = autoFocus && !disableAutoFocusItem && open;\n  const menuListActionsRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const handleEntering = (element, isAppearing) => {\n    if (menuListActionsRef.current) {\n      menuListActionsRef.current.adjustStyleForScrollbar(element, theme);\n    }\n    if (onEntering) {\n      onEntering(element, isAppearing);\n    }\n  };\n  const handleListKeyDown = event => {\n    if (event.key === 'Tab') {\n      event.preventDefault();\n      if (onClose) {\n        onClose(event, 'tabKeyDown');\n      }\n    }\n  };\n\n  /**\n   * the index of the item should receive focus\n   * in a `variant=\"selectedMenu\"` it's the first `selected` item\n   * otherwise it's the very first item.\n   */\n  let activeItemIndex = -1;\n  // since we inject focus related props into children we have to do a lookahead\n  // to check if there is a `selected` item. We're looking for the last `selected`\n  // item and use the first valid item as a fallback\n  react__WEBPACK_IMPORTED_MODULE_2__.Children.map(children, (child, index) => {\n    if (! /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.isValidElement(child)) {\n      return;\n    }\n    if (true) {\n      if ((0,react_is__WEBPACK_IMPORTED_MODULE_3__.isFragment)(child)) {\n        console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    if (!child.props.disabled) {\n      if (variant === 'selectedMenu' && child.props.selected) {\n        activeItemIndex = index;\n      } else if (activeItemIndex === -1) {\n        activeItemIndex = index;\n      }\n    }\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(MenuRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    onClose: onClose,\n    anchorOrigin: {\n      vertical: 'bottom',\n      horizontal: isRtl ? 'right' : 'left'\n    },\n    transformOrigin: isRtl ? RTL_ORIGIN : LTR_ORIGIN,\n    PaperProps: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      component: MenuPaper\n    }, PaperProps, {\n      classes: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, PaperProps.classes, {\n        root: classes.paper\n      })\n    }),\n    className: classes.root,\n    open: open,\n    ref: ref,\n    transitionDuration: transitionDuration,\n    TransitionProps: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      onEntering: handleEntering\n    }, TransitionProps),\n    ownerState: ownerState\n  }, other, {\n    classes: PopoverClasses,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(MenuMenuList, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      onKeyDown: handleListKeyDown,\n      actions: menuListActionsRef,\n      autoFocus: autoFocus && (activeItemIndex === -1 || disableAutoFocusItem),\n      autoFocusItem: autoFocusItem,\n      variant: variant\n    }, MenuListProps, {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(classes.list, MenuListProps.className),\n      children: children\n    }))\n  }));\n});\n true ? Menu.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * An HTML element, or a function that returns one.\n   * It's used to set the position of the menu.\n   */\n  anchorEl: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([_mui_utils__WEBPACK_IMPORTED_MODULE_15__[\"default\"], (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func)]),\n  /**\n   * If `true` (Default) will focus the `[role=\"menu\"]` if no focusable child is found. Disabled\n   * children are not focusable. If you set this prop to `false` focus will be placed\n   * on the parent modal container. This has severe accessibility implications\n   * and should only be considered if you manage focus otherwise.\n   * @default true\n   */\n  autoFocus: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n  /**\n   * Menu contents, normally `MenuItem`s.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object),\n  /**\n   * When opening the menu will not focus the active item but the `[role=\"menu\"]`\n   * unless `autoFocus` is also set to `false`. Not using the default means not\n   * following WAI-ARIA authoring practices. Please be considerate about possible\n   * accessibility implications.\n   * @default false\n   */\n  disableAutoFocusItem: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n  /**\n   * Props applied to the [`MenuList`](/material-ui/api/menu-list/) element.\n   * @default {}\n   */\n  MenuListProps: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object),\n  /**\n   * Callback fired when the component requests to be closed.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`, `\"tabKeyDown\"`.\n   */\n  onClose: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool.isRequired),\n  /**\n   * @ignore\n   */\n  PaperProps: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object),\n  /**\n   * `classes` prop applied to the [`Popover`](/material-ui/api/popover/) element.\n   */\n  PopoverClasses: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_14___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object)]),\n  /**\n   * The length of the transition in `ms`, or 'auto'\n   * @default 'auto'\n   */\n  transitionDuration: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().number), prop_types__WEBPACK_IMPORTED_MODULE_14___default().shape({\n    appear: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().number),\n    enter: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().number),\n    exit: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().number)\n  })]),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n   * @default {}\n   */\n  TransitionProps: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object),\n  /**\n   * The variant to use. Use `menu` to prevent selected items from impacting the initial focus.\n   * @default 'selectedMenu'\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOf(['menu', 'selectedMenu'])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Menu);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Menu/Menu.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Menu/menuClasses.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/material/Menu/menuClasses.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getMenuUtilityClass\": function() { return /* binding */ getMenuUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getMenuUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiMenu', slot);\n}\nconst menuClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiMenu', ['root', 'paper', 'list']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (menuClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Menu/menuClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/MenuItem/MenuItem.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/material/MenuItem/MenuItem.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"overridesResolver\": function() { return /* binding */ overridesResolver; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/colorManipulator.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _List_ListContext__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../List/ListContext */ \"./node_modules/@mui/material/List/ListContext.js\");\n/* harmony import */ var _ButtonBase__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ButtonBase */ \"./node_modules/@mui/material/ButtonBase/ButtonBase.js\");\n/* harmony import */ var _utils_useEnhancedEffect__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/useEnhancedEffect */ \"./node_modules/@mui/material/utils/useEnhancedEffect.js\");\n/* harmony import */ var _utils_useForkRef__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/useForkRef */ \"./node_modules/@mui/material/utils/useForkRef.js\");\n/* harmony import */ var _Divider__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Divider */ \"./node_modules/@mui/material/Divider/dividerClasses.js\");\n/* harmony import */ var _ListItemIcon__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../ListItemIcon */ \"./node_modules/@mui/material/ListItemIcon/listItemIconClasses.js\");\n/* harmony import */ var _ListItemText__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../ListItemText */ \"./node_modules/@mui/material/ListItemText/listItemTextClasses.js\");\n/* harmony import */ var _menuItemClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./menuItemClasses */ \"./node_modules/@mui/material/MenuItem/menuItemClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"autoFocus\", \"component\", \"dense\", \"divider\", \"disableGutters\", \"focusVisibleClassName\", \"role\", \"tabIndex\", \"className\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.dense && styles.dense, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    disabled,\n    dense,\n    divider,\n    disableGutters,\n    selected,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', dense && 'dense', disabled && 'disabled', !disableGutters && 'gutters', divider && 'divider', selected && 'selected']\n  };\n  const composedClasses = (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _menuItemClasses__WEBPACK_IMPORTED_MODULE_6__.getMenuItemUtilityClass, classes);\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, classes, composedClasses);\n};\nconst MenuItemRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_ButtonBase__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n  shouldForwardProp: prop => (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__.rootShouldForwardProp)(prop) || prop === 'classes',\n  name: 'MuiMenuItem',\n  slot: 'Root',\n  overridesResolver\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, theme.typography.body1, {\n  display: 'flex',\n  justifyContent: 'flex-start',\n  alignItems: 'center',\n  position: 'relative',\n  textDecoration: 'none',\n  minHeight: 48,\n  paddingTop: 6,\n  paddingBottom: 6,\n  boxSizing: 'border-box',\n  whiteSpace: 'nowrap'\n}, !ownerState.disableGutters && {\n  paddingLeft: 16,\n  paddingRight: 16\n}, ownerState.divider && {\n  borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n  backgroundClip: 'padding-box'\n}, {\n  '&:hover': {\n    textDecoration: 'none',\n    backgroundColor: (theme.vars || theme).palette.action.hover,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  },\n  [`&.${_menuItemClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].selected}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n    [`&.${_menuItemClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].focusVisible}`]: {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n    }\n  },\n  [`&.${_menuItemClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].selected}:hover`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n    }\n  },\n  [`&.${_menuItemClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.focus\n  },\n  [`&.${_menuItemClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity\n  },\n  [`& + .${_Divider__WEBPACK_IMPORTED_MODULE_10__[\"default\"].root}`]: {\n    marginTop: theme.spacing(1),\n    marginBottom: theme.spacing(1)\n  },\n  [`& + .${_Divider__WEBPACK_IMPORTED_MODULE_10__[\"default\"].inset}`]: {\n    marginLeft: 52\n  },\n  [`& .${_ListItemText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].root}`]: {\n    marginTop: 0,\n    marginBottom: 0\n  },\n  [`& .${_ListItemText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].inset}`]: {\n    paddingLeft: 36\n  },\n  [`& .${_ListItemIcon__WEBPACK_IMPORTED_MODULE_12__[\"default\"].root}`]: {\n    minWidth: 36\n  }\n}, !ownerState.dense && {\n  [theme.breakpoints.up('sm')]: {\n    minHeight: 'auto'\n  }\n}, ownerState.dense && (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  minHeight: 32,\n  // https://m2.material.io/components/menus#specs > Dense\n  paddingTop: 4,\n  paddingBottom: 4\n}, theme.typography.body2, {\n  [`& .${_ListItemIcon__WEBPACK_IMPORTED_MODULE_12__[\"default\"].root} svg`]: {\n    fontSize: '1.25rem'\n  }\n})));\nconst MenuItem = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function MenuItem(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_13__[\"default\"])({\n    props: inProps,\n    name: 'MuiMenuItem'\n  });\n  const {\n      autoFocus = false,\n      component = 'li',\n      dense = false,\n      divider = false,\n      disableGutters = false,\n      focusVisibleClassName,\n      role = 'menuitem',\n      tabIndex: tabIndexProp,\n      className\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const context = react__WEBPACK_IMPORTED_MODULE_2__.useContext(_List_ListContext__WEBPACK_IMPORTED_MODULE_14__[\"default\"]);\n  const childContext = react__WEBPACK_IMPORTED_MODULE_2__.useMemo(() => ({\n    dense: dense || context.dense || false,\n    disableGutters\n  }), [context.dense, dense, disableGutters]);\n  const menuItemRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  (0,_utils_useEnhancedEffect__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(() => {\n    if (autoFocus) {\n      if (menuItemRef.current) {\n        menuItemRef.current.focus();\n      } else if (true) {\n        console.error('MUI: Unable to set focus to a MenuItem whose component has not been rendered.');\n      }\n    }\n  }, [autoFocus]);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    dense: childContext.dense,\n    divider,\n    disableGutters\n  });\n  const classes = useUtilityClasses(props);\n  const handleRef = (0,_utils_useForkRef__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(menuItemRef, ref);\n  let tabIndex;\n  if (!props.disabled) {\n    tabIndex = tabIndexProp !== undefined ? tabIndexProp : -1;\n  }\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_List_ListContext__WEBPACK_IMPORTED_MODULE_14__[\"default\"].Provider, {\n    value: childContext,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(MenuItemRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      ref: handleRef,\n      role: role,\n      tabIndex: tabIndex,\n      component: component,\n      focusVisibleClassName: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.focusVisible, focusVisibleClassName),\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className)\n    }, other, {\n      ownerState: ownerState,\n      classes: classes\n    }))\n  });\n});\n true ? MenuItem.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, the list item is focused during the first mount.\n   * Focus will also be triggered if the value changes from false to true.\n   * @default false\n   */\n  autoFocus: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().elementType),\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n   * The prop defaults to the value inherited from the parent Menu component.\n   * @default false\n   */\n  dense: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * @ignore\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * If `true`, a 1px light border is added to the bottom of the menu item.\n   * @default false\n   */\n  divider: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string),\n  /**\n   * @ignore\n   */\n  role: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string),\n  /**\n   * If `true`, the component is selected.\n   * @default false\n   */\n  selected: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_17___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_17___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object)]),\n  /**\n   * @default 0\n   */\n  tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().number)\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (MenuItem);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/MenuItem/MenuItem.js?");

/***/ }),

/***/ "./node_modules/@mui/material/MenuItem/index.js":
/*!******************************************************!*\
  !*** ./node_modules/@mui/material/MenuItem/index.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _MenuItem__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getMenuItemUtilityClass\": function() { return /* reexport safe */ _menuItemClasses__WEBPACK_IMPORTED_MODULE_1__.getMenuItemUtilityClass; },\n/* harmony export */   \"menuItemClasses\": function() { return /* reexport safe */ _menuItemClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _MenuItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MenuItem */ \"./node_modules/@mui/material/MenuItem/MenuItem.js\");\n/* harmony import */ var _menuItemClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./menuItemClasses */ \"./node_modules/@mui/material/MenuItem/menuItemClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/MenuItem/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/MenuItem/menuItemClasses.js":
/*!****************************************************************!*\
  !*** ./node_modules/@mui/material/MenuItem/menuItemClasses.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getMenuItemUtilityClass\": function() { return /* binding */ getMenuItemUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getMenuItemUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiMenuItem', slot);\n}\nconst menuItemClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiMenuItem', ['root', 'focusVisible', 'dense', 'disabled', 'divider', 'gutters', 'selected']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (menuItemClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/MenuItem/menuItemClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/MenuList/MenuList.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/material/MenuList/MenuList.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-is */ \"./node_modules/@mui/material/node_modules/react-is/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _utils_ownerDocument__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/ownerDocument */ \"./node_modules/@mui/material/utils/ownerDocument.js\");\n/* harmony import */ var _List__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../List */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _utils_getScrollbarSize__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/getScrollbarSize */ \"./node_modules/@mui/material/utils/getScrollbarSize.js\");\n/* harmony import */ var _utils_useForkRef__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/useForkRef */ \"./node_modules/@mui/material/utils/useForkRef.js\");\n/* harmony import */ var _utils_useEnhancedEffect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/useEnhancedEffect */ \"./node_modules/@mui/material/utils/useEnhancedEffect.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"actions\", \"autoFocus\", \"autoFocusItem\", \"children\", \"className\", \"disabledItemsFocusable\", \"disableListWrap\", \"onKeyDown\", \"variant\"];\n\n\n\n\n\n\n\n\n\nfunction nextItem(list, item, disableListWrap) {\n  if (list === item) {\n    return list.firstChild;\n  }\n  if (item && item.nextElementSibling) {\n    return item.nextElementSibling;\n  }\n  return disableListWrap ? null : list.firstChild;\n}\nfunction previousItem(list, item, disableListWrap) {\n  if (list === item) {\n    return disableListWrap ? list.firstChild : list.lastChild;\n  }\n  if (item && item.previousElementSibling) {\n    return item.previousElementSibling;\n  }\n  return disableListWrap ? null : list.lastChild;\n}\nfunction textCriteriaMatches(nextFocus, textCriteria) {\n  if (textCriteria === undefined) {\n    return true;\n  }\n  let text = nextFocus.innerText;\n  if (text === undefined) {\n    // jsdom doesn't support innerText\n    text = nextFocus.textContent;\n  }\n  text = text.trim().toLowerCase();\n  if (text.length === 0) {\n    return false;\n  }\n  if (textCriteria.repeating) {\n    return text[0] === textCriteria.keys[0];\n  }\n  return text.indexOf(textCriteria.keys.join('')) === 0;\n}\nfunction moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {\n  let wrappedOnce = false;\n  let nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);\n  while (nextFocus) {\n    // Prevent infinite loop.\n    if (nextFocus === list.firstChild) {\n      if (wrappedOnce) {\n        return false;\n      }\n      wrappedOnce = true;\n    }\n\n    // Same logic as useAutocomplete.js\n    const nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n    if (!nextFocus.hasAttribute('tabindex') || !textCriteriaMatches(nextFocus, textCriteria) || nextFocusDisabled) {\n      // Move to the next element.\n      nextFocus = traversalFunction(list, nextFocus, disableListWrap);\n    } else {\n      nextFocus.focus();\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * A permanently displayed menu following https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/.\n * It's exposed to help customization of the [`Menu`](/material-ui/api/menu/) component if you\n * use it separately you need to move focus into the component manually. Once\n * the focus is placed inside the component it is fully keyboard accessible.\n */\nconst MenuList = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function MenuList(props, ref) {\n  const {\n      // private\n      // eslint-disable-next-line react/prop-types\n      actions,\n      autoFocus = false,\n      autoFocusItem = false,\n      children,\n      className,\n      disabledItemsFocusable = false,\n      disableListWrap = false,\n      onKeyDown,\n      variant = 'selectedMenu'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const listRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const textCriteriaRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef({\n    keys: [],\n    repeating: true,\n    previousKeyMatched: true,\n    lastTime: null\n  });\n  (0,_utils_useEnhancedEffect__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(() => {\n    if (autoFocus) {\n      listRef.current.focus();\n    }\n  }, [autoFocus]);\n  react__WEBPACK_IMPORTED_MODULE_2__.useImperativeHandle(actions, () => ({\n    adjustStyleForScrollbar: (containerElement, theme) => {\n      // Let's ignore that piece of logic if users are already overriding the width\n      // of the menu.\n      const noExplicitWidth = !listRef.current.style.width;\n      if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {\n        const scrollbarSize = `${(0,_utils_getScrollbarSize__WEBPACK_IMPORTED_MODULE_6__[\"default\"])((0,_utils_ownerDocument__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(containerElement))}px`;\n        listRef.current.style[theme.direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;\n        listRef.current.style.width = `calc(100% + ${scrollbarSize})`;\n      }\n      return listRef.current;\n    }\n  }), []);\n  const handleKeyDown = event => {\n    const list = listRef.current;\n    const key = event.key;\n    /**\n     * @type {Element} - will always be defined since we are in a keydown handler\n     * attached to an element. A keydown event is either dispatched to the activeElement\n     * or document.body or document.documentElement. Only the first case will\n     * trigger this specific handler.\n     */\n    const currentFocus = (0,_utils_ownerDocument__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(list).activeElement;\n    if (key === 'ArrowDown') {\n      // Prevent scroll of the page\n      event.preventDefault();\n      moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);\n    } else if (key === 'ArrowUp') {\n      event.preventDefault();\n      moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);\n    } else if (key === 'Home') {\n      event.preventDefault();\n      moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);\n    } else if (key === 'End') {\n      event.preventDefault();\n      moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);\n    } else if (key.length === 1) {\n      const criteria = textCriteriaRef.current;\n      const lowerKey = key.toLowerCase();\n      const currTime = performance.now();\n      if (criteria.keys.length > 0) {\n        // Reset\n        if (currTime - criteria.lastTime > 500) {\n          criteria.keys = [];\n          criteria.repeating = true;\n          criteria.previousKeyMatched = true;\n        } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {\n          criteria.repeating = false;\n        }\n      }\n      criteria.lastTime = currTime;\n      criteria.keys.push(lowerKey);\n      const keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);\n      if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {\n        event.preventDefault();\n      } else {\n        criteria.previousKeyMatched = false;\n      }\n    }\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n  };\n  const handleRef = (0,_utils_useForkRef__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(listRef, ref);\n\n  /**\n   * the index of the item should receive focus\n   * in a `variant=\"selectedMenu\"` it's the first `selected` item\n   * otherwise it's the very first item.\n   */\n  let activeItemIndex = -1;\n  // since we inject focus related props into children we have to do a lookahead\n  // to check if there is a `selected` item. We're looking for the last `selected`\n  // item and use the first valid item as a fallback\n  react__WEBPACK_IMPORTED_MODULE_2__.Children.forEach(children, (child, index) => {\n    if (! /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.isValidElement(child)) {\n      return;\n    }\n    if (true) {\n      if ((0,react_is__WEBPACK_IMPORTED_MODULE_3__.isFragment)(child)) {\n        console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    if (!child.props.disabled) {\n      if (variant === 'selectedMenu' && child.props.selected) {\n        activeItemIndex = index;\n      } else if (activeItemIndex === -1) {\n        activeItemIndex = index;\n      }\n    }\n  });\n  const items = react__WEBPACK_IMPORTED_MODULE_2__.Children.map(children, (child, index) => {\n    if (index === activeItemIndex) {\n      const newChildProps = {};\n      if (autoFocusItem) {\n        newChildProps.autoFocus = true;\n      }\n      if (child.props.tabIndex === undefined && variant === 'selectedMenu') {\n        newChildProps.tabIndex = 0;\n      }\n      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(child, newChildProps);\n    }\n    return child;\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_List__WEBPACK_IMPORTED_MODULE_9__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    role: \"menu\",\n    ref: handleRef,\n    className: className,\n    onKeyDown: handleKeyDown,\n    tabIndex: autoFocus ? 0 : -1\n  }, other, {\n    children: items\n  }));\n});\n true ? MenuList.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, will focus the `[role=\"menu\"]` container and move into tab order.\n   * @default false\n   */\n  autoFocus: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * If `true`, will focus the first menuitem if `variant=\"menu\"` or selected item\n   * if `variant=\"selectedMenu\"`.\n   * @default false\n   */\n  autoFocusItem: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * MenuList contents, normally `MenuItem`s.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().node),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * If `true`, will allow focus on disabled items.\n   * @default false\n   */\n  disabledItemsFocusable: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * If `true`, the menu items will not wrap focus.\n   * @default false\n   */\n  disableListWrap: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * @ignore\n   */\n  onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func),\n  /**\n   * The variant to use. Use `menu` to prevent selected items from impacting the initial focus\n   * and the vertical alignment relative to the anchor element.\n   * @default 'selectedMenu'\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOf(['menu', 'selectedMenu'])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (MenuList);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/MenuList/MenuList.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Modal/Modal.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/material/Modal/Modal.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"modalClasses\": function() { return /* binding */ modalClasses; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _mui_base_ModalUnstyled__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/base/ModalUnstyled */ \"./node_modules/@mui/base/ModalUnstyled/modalUnstyledClasses.js\");\n/* harmony import */ var _mui_base_ModalUnstyled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/base/ModalUnstyled */ \"./node_modules/@mui/base/ModalUnstyled/ModalUnstyled.js\");\n/* harmony import */ var _mui_base_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/base/utils */ \"./node_modules/@mui/base/utils/resolveComponentProps.js\");\n/* harmony import */ var _mui_base_utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/base/utils */ \"./node_modules/@mui/base/utils/isHostComponent.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/elementAcceptingRef.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/HTMLElementType.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _Backdrop__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Backdrop */ \"./node_modules/@mui/material/Backdrop/Backdrop.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"BackdropComponent\", \"BackdropProps\", \"closeAfterTransition\", \"children\", \"component\", \"components\", \"componentsProps\", \"disableAutoFocus\", \"disableEnforceFocus\", \"disableEscapeKeyDown\", \"disablePortal\", \"disableRestoreFocus\", \"disableScrollLock\", \"hideBackdrop\", \"keepMounted\", \"slotProps\", \"slots\", \"theme\"];\n\n\n\n\n\n\n\n\n\nconst modalClasses = _mui_base_ModalUnstyled__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\nconst extendUtilityClasses = ownerState => {\n  return ownerState.classes;\n};\nconst ModalRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_5__[\"default\"])('div', {\n  name: 'MuiModal',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.open && ownerState.exited && styles.hidden];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  position: 'fixed',\n  zIndex: (theme.vars || theme).zIndex.modal,\n  right: 0,\n  bottom: 0,\n  top: 0,\n  left: 0\n}, !ownerState.open && ownerState.exited && {\n  visibility: 'hidden'\n}));\nconst ModalBackdrop = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_Backdrop__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n  name: 'MuiModal',\n  slot: 'Backdrop',\n  overridesResolver: (props, styles) => {\n    return styles.backdrop;\n  }\n})({\n  zIndex: -1\n});\n\n/**\n * Modal is a lower-level construct that is leveraged by the following components:\n *\n * - [Dialog](/material-ui/api/dialog/)\n * - [Drawer](/material-ui/api/drawer/)\n * - [Menu](/material-ui/api/menu/)\n * - [Popover](/material-ui/api/popover/)\n *\n * If you are creating a modal dialog, you probably want to use the [Dialog](/material-ui/api/dialog/) component\n * rather than directly using Modal.\n *\n * This component shares many concepts with [react-overlays](https://react-bootstrap.github.io/react-overlays/#modals).\n */\nconst Modal = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Modal(inProps, ref) {\n  var _ref, _slots$root, _ref2, _slots$backdrop, _slotProps$root, _slotProps$backdrop;\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_7__[\"default\"])({\n    name: 'MuiModal',\n    props: inProps\n  });\n  const {\n      BackdropComponent = ModalBackdrop,\n      BackdropProps,\n      closeAfterTransition = false,\n      children,\n      component,\n      components = {},\n      componentsProps = {},\n      disableAutoFocus = false,\n      disableEnforceFocus = false,\n      disableEscapeKeyDown = false,\n      disablePortal = false,\n      disableRestoreFocus = false,\n      disableScrollLock = false,\n      hideBackdrop = false,\n      keepMounted = false,\n      slotProps,\n      slots,\n      // eslint-disable-next-line react/prop-types\n      theme\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const [exited, setExited] = react__WEBPACK_IMPORTED_MODULE_2__.useState(true);\n  const commonProps = {\n    closeAfterTransition,\n    disableAutoFocus,\n    disableEnforceFocus,\n    disableEscapeKeyDown,\n    disablePortal,\n    disableRestoreFocus,\n    disableScrollLock,\n    hideBackdrop,\n    keepMounted\n  };\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, commonProps, {\n    exited\n  });\n  const classes = extendUtilityClasses(ownerState);\n  const RootSlot = (_ref = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components.Root) != null ? _ref : ModalRoot;\n  const BackdropSlot = (_ref2 = (_slots$backdrop = slots == null ? void 0 : slots.backdrop) != null ? _slots$backdrop : components.Backdrop) != null ? _ref2 : BackdropComponent;\n  const rootSlotProps = (_slotProps$root = slotProps == null ? void 0 : slotProps.root) != null ? _slotProps$root : componentsProps.root;\n  const backdropSlotProps = (_slotProps$backdrop = slotProps == null ? void 0 : slotProps.backdrop) != null ? _slotProps$backdrop : componentsProps.backdrop;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_mui_base_ModalUnstyled__WEBPACK_IMPORTED_MODULE_8__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    slots: {\n      root: RootSlot,\n      backdrop: BackdropSlot\n    },\n    slotProps: {\n      root: () => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, (0,_mui_base_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(rootSlotProps, ownerState), !(0,_mui_base_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(RootSlot) && {\n        as: component,\n        theme\n      }),\n      backdrop: () => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, BackdropProps, (0,_mui_base_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(backdropSlotProps, ownerState))\n    },\n    onTransitionEnter: () => setExited(false),\n    onTransitionExited: () => setExited(true),\n    ref: ref\n  }, other, {\n    classes: classes\n  }, commonProps, {\n    children: children\n  }));\n});\n true ? Modal.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * A backdrop component. This prop enables custom backdrop rendering.\n   * @deprecated Use `slots.backdrop` instead. While this prop currently works, it will be removed in the next major version.\n   * Use the `slots.backdrop` prop to make your application ready for the next version of Material UI.\n   * @default styled(Backdrop, {\n   *   name: 'MuiModal',\n   *   slot: 'Backdrop',\n   *   overridesResolver: (props, styles) => {\n   *     return styles.backdrop;\n   *   },\n   * })({\n   *   zIndex: -1,\n   * })\n   */\n  BackdropComponent: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().elementType),\n  /**\n   * Props applied to the [`Backdrop`](/material-ui/api/backdrop/) element.\n   * @deprecated Use `slotProps.backdrop` instead.\n   */\n  BackdropProps: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object),\n  /**\n   * A single child content element.\n   */\n  children: _mui_utils__WEBPACK_IMPORTED_MODULE_12__[\"default\"].isRequired,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object),\n  /**\n   * When set to true the Modal waits until a nested Transition is completed before closing.\n   * @default false\n   */\n  closeAfterTransition: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().elementType),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: prop_types__WEBPACK_IMPORTED_MODULE_11___default().shape({\n    Backdrop: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().elementType),\n    Root: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().elementType)\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: prop_types__WEBPACK_IMPORTED_MODULE_11___default().shape({\n    backdrop: prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object)]),\n    root: prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object)])\n  }),\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([_mui_utils__WEBPACK_IMPORTED_MODULE_13__[\"default\"], (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func)]),\n  /**\n   * If `true`, the modal will not automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes.\n   * This also works correctly with any modal children that have the `disableAutoFocus` prop.\n   *\n   * Generally this should never be set to `true` as it makes the modal less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableAutoFocus: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * If `true`, the modal will not prevent focus from leaving the modal while open.\n   *\n   * Generally this should never be set to `true` as it makes the modal less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableEnforceFocus: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * If `true`, hitting escape will not fire the `onClose` callback.\n   * @default false\n   */\n  disableEscapeKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * If `true`, the modal will not restore focus to previously focused element once\n   * modal is hidden or unmounted.\n   * @default false\n   */\n  disableRestoreFocus: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * Disable the scroll lock behavior.\n   * @default false\n   */\n  disableScrollLock: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * If `true`, the backdrop is not rendered.\n   * @default false\n   */\n  hideBackdrop: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * Always keep the children in the DOM.\n   * This prop can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Modal.\n   * @default false\n   */\n  keepMounted: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * Callback fired when the backdrop is clicked.\n   * @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.\n   */\n  onBackdropClick: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func),\n  /**\n   * Callback fired when the component requests to be closed.\n   * The `reason` parameter can optionally be used to control the response to `onClose`.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n   */\n  onClose: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool.isRequired),\n  /**\n   * The props used for each slot inside the Modal.\n   * @default {}\n   */\n  slotProps: prop_types__WEBPACK_IMPORTED_MODULE_11___default().shape({\n    backdrop: prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object)]),\n    root: prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object)])\n  }),\n  /**\n   * The components used for each slot inside the Modal.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: prop_types__WEBPACK_IMPORTED_MODULE_11___default().shape({\n    backdrop: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().elementType),\n    root: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().elementType)\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_11___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Modal);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Modal/Modal.js?");

/***/ }),

/***/ "./node_modules/@mui/material/NativeSelect/NativeSelectInput.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@mui/material/NativeSelect/NativeSelectInput.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"nativeSelectIconStyles\": function() { return /* binding */ nativeSelectIconStyles; },\n/* harmony export */   \"nativeSelectSelectStyles\": function() { return /* binding */ nativeSelectSelectStyles; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/refType.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _nativeSelectClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./nativeSelectClasses */ \"./node_modules/@mui/material/NativeSelect/nativeSelectClasses.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"className\", \"disabled\", \"IconComponent\", \"inputRef\", \"variant\"];\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    disabled,\n    multiple,\n    open\n  } = ownerState;\n  const slots = {\n    select: ['select', variant, disabled && 'disabled', multiple && 'multiple'],\n    icon: ['icon', `icon${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(variant)}`, open && 'iconOpen', disabled && 'disabled']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _nativeSelectClasses__WEBPACK_IMPORTED_MODULE_7__.getNativeSelectUtilityClasses, classes);\n};\nconst nativeSelectSelectStyles = ({\n  ownerState,\n  theme\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  MozAppearance: 'none',\n  // Reset\n  WebkitAppearance: 'none',\n  // Reset\n  // When interacting quickly, the text can end up selected.\n  // Native select can't be selected either.\n  userSelect: 'none',\n  borderRadius: 0,\n  // Reset\n  cursor: 'pointer',\n  '&:focus': (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, theme.vars ? {\n    backgroundColor: `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.05)`\n  } : {\n    backgroundColor: theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.05)' : 'rgba(255, 255, 255, 0.05)'\n  }, {\n    borderRadius: 0 // Reset Chrome style\n  }),\n\n  // Remove IE11 arrow\n  '&::-ms-expand': {\n    display: 'none'\n  },\n  [`&.${_nativeSelectClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n    cursor: 'default'\n  },\n  '&[multiple]': {\n    height: 'auto'\n  },\n  '&:not([multiple]) option, &:not([multiple]) optgroup': {\n    backgroundColor: (theme.vars || theme).palette.background.paper\n  },\n  // Bump specificity to allow extending custom inputs\n  '&&&': {\n    paddingRight: 24,\n    minWidth: 16 // So it doesn't collapse.\n  }\n}, ownerState.variant === 'filled' && {\n  '&&&': {\n    paddingRight: 32\n  }\n}, ownerState.variant === 'outlined' && {\n  borderRadius: (theme.vars || theme).shape.borderRadius,\n  '&:focus': {\n    borderRadius: (theme.vars || theme).shape.borderRadius // Reset the reset for Chrome style\n  },\n\n  '&&&': {\n    paddingRight: 32\n  }\n});\nconst NativeSelectSelect = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('select', {\n  name: 'MuiNativeSelect',\n  slot: 'Select',\n  shouldForwardProp: _styles_styled__WEBPACK_IMPORTED_MODULE_8__.rootShouldForwardProp,\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.select, styles[ownerState.variant], {\n      [`&.${_nativeSelectClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].multiple}`]: styles.multiple\n    }];\n  }\n})(nativeSelectSelectStyles);\nconst nativeSelectIconStyles = ({\n  ownerState,\n  theme\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  // We use a position absolute over a flexbox in order to forward the pointer events\n  // to the input and to support wrapping tags..\n  position: 'absolute',\n  right: 0,\n  top: 'calc(50% - .5em)',\n  // Center vertically, height is 1em\n  pointerEvents: 'none',\n  // Don't block pointer events on the select under the icon.\n  color: (theme.vars || theme).palette.action.active,\n  [`&.${_nativeSelectClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled\n  }\n}, ownerState.open && {\n  transform: 'rotate(180deg)'\n}, ownerState.variant === 'filled' && {\n  right: 7\n}, ownerState.variant === 'outlined' && {\n  right: 7\n});\nconst NativeSelectIcon = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('svg', {\n  name: 'MuiNativeSelect',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.icon, ownerState.variant && styles[`icon${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.variant)}`], ownerState.open && styles.iconOpen];\n  }\n})(nativeSelectIconStyles);\n\n/**\n * @ignore - internal component.\n */\nconst NativeSelectInput = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function NativeSelectInput(props, ref) {\n  const {\n      className,\n      disabled,\n      IconComponent,\n      inputRef,\n      variant = 'standard'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    disabled,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(NativeSelectSelect, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      ownerState: ownerState,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.select, className),\n      disabled: disabled,\n      ref: inputRef || ref\n    }, other)), props.multiple ? null : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(NativeSelectIcon, {\n      as: IconComponent,\n      ownerState: ownerState,\n      className: classes.icon\n    })]\n  });\n});\n true ? NativeSelectInput.propTypes = {\n  /**\n   * The option elements to populate the select with.\n   * Can be some `<option>` elements.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object),\n  /**\n   * The CSS class name of the select element.\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string),\n  /**\n   * If `true`, the select is disabled.\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().bool),\n  /**\n   * The icon that displays the arrow.\n   */\n  IconComponent: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().elementType.isRequired),\n  /**\n   * Use that prop to pass a ref to the native select element.\n   * @deprecated\n   */\n  inputRef: _mui_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n  /**\n   * @ignore\n   */\n  multiple: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().bool),\n  /**\n   * Name attribute of the `select` or hidden `input` element.\n   */\n  name: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string),\n  /**\n   * Callback fired when a menu item is selected.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func),\n  /**\n   * The input value.\n   */\n  value: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().any),\n  /**\n   * The variant to use.\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_9___default().oneOf(['standard', 'outlined', 'filled'])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (NativeSelectInput);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/NativeSelect/NativeSelectInput.js?");

/***/ }),

/***/ "./node_modules/@mui/material/NativeSelect/nativeSelectClasses.js":
/*!************************************************************************!*\
  !*** ./node_modules/@mui/material/NativeSelect/nativeSelectClasses.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getNativeSelectUtilityClasses\": function() { return /* binding */ getNativeSelectUtilityClasses; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getNativeSelectUtilityClasses(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiNativeSelect', slot);\n}\nconst nativeSelectClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiNativeSelect', ['root', 'select', 'multiple', 'filled', 'outlined', 'standard', 'disabled', 'icon', 'iconOpen', 'iconFilled', 'iconOutlined', 'iconStandard', 'nativeInput']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (nativeSelectClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/NativeSelect/nativeSelectClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/OutlinedInput/NotchedOutline.js":
/*!********************************************************************!*\
  !*** ./node_modules/@mui/material/OutlinedInput/NotchedOutline.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ NotchedOutline; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nvar _span;\nconst _excluded = [\"children\", \"classes\", \"className\", \"label\", \"notched\"];\n\n\n\n\nconst NotchedOutlineRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_4__[\"default\"])('fieldset')({\n  textAlign: 'left',\n  position: 'absolute',\n  bottom: 0,\n  right: 0,\n  top: -5,\n  left: 0,\n  margin: 0,\n  padding: '0 8px',\n  pointerEvents: 'none',\n  borderRadius: 'inherit',\n  borderStyle: 'solid',\n  borderWidth: 1,\n  overflow: 'hidden',\n  minWidth: '0%'\n});\nconst NotchedOutlineLegend = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_4__[\"default\"])('legend')(({\n  ownerState,\n  theme\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  float: 'unset',\n  // Fix conflict with bootstrap\n  width: 'auto',\n  // Fix conflict with bootstrap\n  overflow: 'hidden'\n}, !ownerState.withLabel && {\n  padding: 0,\n  lineHeight: '11px',\n  // sync with `height` in `legend` styles\n  transition: theme.transitions.create('width', {\n    duration: 150,\n    easing: theme.transitions.easing.easeOut\n  })\n}, ownerState.withLabel && (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  display: 'block',\n  // Fix conflict with normalize.css and sanitize.css\n  padding: 0,\n  height: 11,\n  // sync with `lineHeight` in `legend` styles\n  fontSize: '0.75em',\n  visibility: 'hidden',\n  maxWidth: 0.01,\n  transition: theme.transitions.create('max-width', {\n    duration: 50,\n    easing: theme.transitions.easing.easeOut\n  }),\n  whiteSpace: 'nowrap',\n  '& > span': {\n    paddingLeft: 5,\n    paddingRight: 5,\n    display: 'inline-block',\n    opacity: 0,\n    visibility: 'visible'\n  }\n}, ownerState.notched && {\n  maxWidth: '100%',\n  transition: theme.transitions.create('max-width', {\n    duration: 100,\n    easing: theme.transitions.easing.easeOut,\n    delay: 50\n  })\n})));\n\n/**\n * @ignore - internal component.\n */\nfunction NotchedOutline(props) {\n  const {\n      className,\n      label,\n      notched\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const withLabel = label != null && label !== '';\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    notched,\n    withLabel\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(NotchedOutlineRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    \"aria-hidden\": true,\n    className: className,\n    ownerState: ownerState\n  }, other, {\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(NotchedOutlineLegend, {\n      ownerState: ownerState,\n      children: withLabel ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n        children: label\n      }) : // notranslate needed while Google Translate will not fix zero-width space issue\n      _span || (_span = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"span\", {\n        className: \"notranslate\",\n        children: \"\\u200B\"\n      }))\n    })\n  }));\n}\n true ? NotchedOutline.propTypes = {\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string),\n  /**\n   * The label.\n   */\n  label: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().node),\n  /**\n   * If `true`, the outline is notched to accommodate the label.\n   */\n  notched: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().bool.isRequired),\n  /**\n   * @ignore\n   */\n  style: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().object)\n} : 0;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/OutlinedInput/NotchedOutline.js?");

/***/ }),

/***/ "./node_modules/@mui/material/OutlinedInput/OutlinedInput.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@mui/material/OutlinedInput/OutlinedInput.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/refType.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _NotchedOutline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./NotchedOutline */ \"./node_modules/@mui/material/OutlinedInput/NotchedOutline.js\");\n/* harmony import */ var _FormControl_useFormControl__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../FormControl/useFormControl */ \"./node_modules/@mui/material/FormControl/useFormControl.js\");\n/* harmony import */ var _FormControl_formControlState__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../FormControl/formControlState */ \"./node_modules/@mui/material/FormControl/formControlState.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _outlinedInputClasses__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./outlinedInputClasses */ \"./node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js\");\n/* harmony import */ var _InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../InputBase/InputBase */ \"./node_modules/@mui/material/InputBase/InputBase.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"components\", \"fullWidth\", \"inputComponent\", \"label\", \"multiline\", \"notched\", \"slots\", \"type\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    notchedOutline: ['notchedOutline'],\n    input: ['input']\n  };\n  const composedClasses = (0,_mui_base__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(slots, _outlinedInputClasses__WEBPACK_IMPORTED_MODULE_5__.getOutlinedInputUtilityClass, classes);\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, classes, composedClasses);\n};\nconst OutlinedInputRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__.InputBaseRoot, {\n  shouldForwardProp: prop => (0,_styles_styled__WEBPACK_IMPORTED_MODULE_6__.rootShouldForwardProp)(prop) || prop === 'classes',\n  name: 'MuiOutlinedInput',\n  slot: 'Root',\n  overridesResolver: _InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__.rootOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => {\n  const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    position: 'relative',\n    borderRadius: (theme.vars || theme).shape.borderRadius,\n    [`&:hover .${_outlinedInputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette.text.primary\n    },\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      [`&:hover .${_outlinedInputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].notchedOutline}`]: {\n        borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n      }\n    },\n    [`&.${_outlinedInputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].focused} .${_outlinedInputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette[ownerState.color].main,\n      borderWidth: 2\n    },\n    [`&.${_outlinedInputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].error} .${_outlinedInputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette.error.main\n    },\n    [`&.${_outlinedInputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].disabled} .${_outlinedInputClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette.action.disabled\n    }\n  }, ownerState.startAdornment && {\n    paddingLeft: 14\n  }, ownerState.endAdornment && {\n    paddingRight: 14\n  }, ownerState.multiline && (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    padding: '16.5px 14px'\n  }, ownerState.size === 'small' && {\n    padding: '8.5px 14px'\n  }));\n});\nconst NotchedOutlineRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_NotchedOutline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n  name: 'MuiOutlinedInput',\n  slot: 'NotchedOutline',\n  overridesResolver: (props, styles) => styles.notchedOutline\n})(({\n  theme\n}) => {\n  const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n  return {\n    borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n  };\n});\nconst OutlinedInputInput = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__.InputBaseComponent, {\n  name: 'MuiOutlinedInput',\n  slot: 'Input',\n  overridesResolver: _InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__.inputOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  padding: '16.5px 14px'\n}, !theme.vars && {\n  '&:-webkit-autofill': {\n    WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',\n    WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',\n    caretColor: theme.palette.mode === 'light' ? null : '#fff',\n    borderRadius: 'inherit'\n  }\n}, theme.vars && {\n  '&:-webkit-autofill': {\n    borderRadius: 'inherit'\n  },\n  [theme.getColorSchemeSelector('dark')]: {\n    '&:-webkit-autofill': {\n      WebkitBoxShadow: '0 0 0 100px #266798 inset',\n      WebkitTextFillColor: '#fff',\n      caretColor: '#fff'\n    }\n  }\n}, ownerState.size === 'small' && {\n  padding: '8.5px 14px'\n}, ownerState.multiline && {\n  padding: 0\n}, ownerState.startAdornment && {\n  paddingLeft: 0\n}, ownerState.endAdornment && {\n  paddingRight: 0\n}));\nconst OutlinedInput = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function OutlinedInput(inProps, ref) {\n  var _ref, _slots$root, _ref2, _slots$input, _React$Fragment;\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({\n    props: inProps,\n    name: 'MuiOutlinedInput'\n  });\n  const {\n      components = {},\n      fullWidth = false,\n      inputComponent = 'input',\n      label,\n      multiline = false,\n      notched,\n      slots = {},\n      type = 'text'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const classes = useUtilityClasses(props);\n  const muiFormControl = (0,_FormControl_useFormControl__WEBPACK_IMPORTED_MODULE_10__[\"default\"])();\n  const fcs = (0,_FormControl_formControlState__WEBPACK_IMPORTED_MODULE_11__[\"default\"])({\n    props,\n    muiFormControl,\n    states: ['required']\n  });\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    color: fcs.color || 'primary',\n    disabled: fcs.disabled,\n    error: fcs.error,\n    focused: fcs.focused,\n    formControl: muiFormControl,\n    fullWidth,\n    hiddenLabel: fcs.hiddenLabel,\n    multiline,\n    size: fcs.size,\n    type\n  });\n  const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : OutlinedInputRoot;\n  const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : OutlinedInputInput;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_InputBase_InputBase__WEBPACK_IMPORTED_MODULE_7__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    slots: {\n      root: RootSlot,\n      input: InputSlot\n    },\n    renderSuffix: state => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(NotchedOutlineRoot, {\n      ownerState: ownerState,\n      className: classes.notchedOutline,\n      label: label != null && label !== '' && fcs.required ? _React$Fragment || (_React$Fragment = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n        children: [label, \"\\xA0\", '*']\n      })) : label,\n      notched: typeof notched !== 'undefined' ? notched : Boolean(state.startAdornment || state.filled || state.focused)\n    }),\n    fullWidth: fullWidth,\n    inputComponent: inputComponent,\n    multiline: multiline,\n    ref: ref,\n    type: type\n  }, other, {\n    classes: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, classes, {\n      notchedOutline: null\n    })\n  }));\n});\n true ? OutlinedInput.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string),\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object),\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOf(['primary', 'secondary']), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string)]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: prop_types__WEBPACK_IMPORTED_MODULE_12___default().shape({\n    Input: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().elementType),\n    Root: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().elementType)\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().any),\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().node),\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * The id of the `input` element.\n   */\n  id: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string),\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().elementType),\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object),\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: _mui_utils__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n  /**\n   * The label of the `input`. It is only used for layout. The actual labelling\n   * is handled by `InputLabel`.\n   */\n  label: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().node),\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_12___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string)]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_12___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string)]),\n  /**\n   * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string),\n  /**\n   * If `true`, the outline is notched to accommodate the label.\n   */\n  notched: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func),\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string),\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_12___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string)]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: prop_types__WEBPACK_IMPORTED_MODULE_12___default().shape({\n    input: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().elementType),\n    root: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().elementType)\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().node),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_12___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_12___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object)]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string),\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().any)\n} : 0;\nOutlinedInput.muiName = 'Input';\n/* harmony default export */ __webpack_exports__[\"default\"] = (OutlinedInput);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/OutlinedInput/OutlinedInput.js?");

/***/ }),

/***/ "./node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getOutlinedInputUtilityClass\": function() { return /* binding */ getOutlinedInputUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n/* harmony import */ var _InputBase__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../InputBase */ \"./node_modules/@mui/material/InputBase/inputBaseClasses.js\");\n\n\n\n\nfunction getOutlinedInputUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiOutlinedInput', slot);\n}\nconst outlinedInputClasses = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _InputBase__WEBPACK_IMPORTED_MODULE_2__[\"default\"], (0,_mui_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('MuiOutlinedInput', ['root', 'notchedOutline', 'input']));\n/* harmony default export */ __webpack_exports__[\"default\"] = (outlinedInputClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Paper/Paper.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/material/Paper/Paper.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/chainPropTypes.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/integerPropType.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/colorManipulator.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_getOverlayAlpha__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles/getOverlayAlpha */ \"./node_modules/@mui/material/styles/getOverlayAlpha.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_useTheme__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../styles/useTheme */ \"./node_modules/@mui/material/styles/useTheme.js\");\n/* harmony import */ var _paperClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./paperClasses */ \"./node_modules/@mui/material/Paper/paperClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"className\", \"component\", \"elevation\", \"square\", \"variant\"];\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    square,\n    elevation,\n    variant,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, !square && 'rounded', variant === 'elevation' && `elevation${elevation}`]\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _paperClasses__WEBPACK_IMPORTED_MODULE_6__.getPaperUtilityClass, classes);\n};\nconst PaperRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('div', {\n  name: 'MuiPaper',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], !ownerState.square && styles.rounded, ownerState.variant === 'elevation' && styles[`elevation${ownerState.elevation}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  var _theme$vars$overlays;\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    backgroundColor: (theme.vars || theme).palette.background.paper,\n    color: (theme.vars || theme).palette.text.primary,\n    transition: theme.transitions.create('box-shadow')\n  }, !ownerState.square && {\n    borderRadius: theme.shape.borderRadius\n  }, ownerState.variant === 'outlined' && {\n    border: `1px solid ${(theme.vars || theme).palette.divider}`\n  }, ownerState.variant === 'elevation' && (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    boxShadow: (theme.vars || theme).shadows[ownerState.elevation]\n  }, !theme.vars && theme.palette.mode === 'dark' && {\n    backgroundImage: `linear-gradient(${(0,_mui_system__WEBPACK_IMPORTED_MODULE_8__.alpha)('#fff', (0,_styles_getOverlayAlpha__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(ownerState.elevation))}, ${(0,_mui_system__WEBPACK_IMPORTED_MODULE_8__.alpha)('#fff', (0,_styles_getOverlayAlpha__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(ownerState.elevation))})`\n  }, theme.vars && {\n    backgroundImage: (_theme$vars$overlays = theme.vars.overlays) == null ? void 0 : _theme$vars$overlays[ownerState.elevation]\n  }));\n});\nconst Paper = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Paper(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__[\"default\"])({\n    props: inProps,\n    name: 'MuiPaper'\n  });\n  const {\n      className,\n      component = 'div',\n      elevation = 1,\n      square = false,\n      variant = 'elevation'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    component,\n    elevation,\n    square,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  if (true) {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const theme = (0,_styles_useTheme__WEBPACK_IMPORTED_MODULE_11__[\"default\"])();\n    if (theme.shadows[elevation] === undefined) {\n      console.error([`MUI: The elevation provided <Paper elevation={${elevation}}> is not available in the theme.`, `Please make sure that \\`theme.shadows[${elevation}]\\` is defined.`].join('\\n'));\n    }\n  }\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(PaperRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    as: component,\n    ownerState: ownerState,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    ref: ref\n  }, other));\n});\n true ? Paper.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().elementType),\n  /**\n   * Shadow depth, corresponds to `dp` in the spec.\n   * It accepts values between 0 and 24 inclusive.\n   * @default 1\n   */\n  elevation: (0,_mui_utils__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(_mui_utils__WEBPACK_IMPORTED_MODULE_14__[\"default\"], props => {\n    const {\n      elevation,\n      variant\n    } = props;\n    if (elevation > 0 && variant === 'outlined') {\n      return new Error(`MUI: Combining \\`elevation={${elevation}}\\` with \\`variant=\"${variant}\"\\` has no effect. Either use \\`elevation={0}\\` or use a different \\`variant\\`.`);\n    }\n    return null;\n  }),\n  /**\n   * If `true`, rounded corners are disabled.\n   * @default false\n   */\n  square: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_12___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_12___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object)]),\n  /**\n   * The variant to use.\n   * @default 'elevation'\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOf(['elevation', 'outlined']), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Paper);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Paper/Paper.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Paper/index.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/material/Paper/index.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _Paper__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getPaperUtilityClass\": function() { return /* reexport safe */ _paperClasses__WEBPACK_IMPORTED_MODULE_1__.getPaperUtilityClass; },\n/* harmony export */   \"paperClasses\": function() { return /* reexport safe */ _paperClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _Paper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Paper */ \"./node_modules/@mui/material/Paper/Paper.js\");\n/* harmony import */ var _paperClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./paperClasses */ \"./node_modules/@mui/material/Paper/paperClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Paper/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Paper/paperClasses.js":
/*!**********************************************************!*\
  !*** ./node_modules/@mui/material/Paper/paperClasses.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getPaperUtilityClass\": function() { return /* binding */ getPaperUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getPaperUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiPaper', slot);\n}\nconst paperClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiPaper', ['root', 'rounded', 'outlined', 'elevation', 'elevation0', 'elevation1', 'elevation2', 'elevation3', 'elevation4', 'elevation5', 'elevation6', 'elevation7', 'elevation8', 'elevation9', 'elevation10', 'elevation11', 'elevation12', 'elevation13', 'elevation14', 'elevation15', 'elevation16', 'elevation17', 'elevation18', 'elevation19', 'elevation20', 'elevation21', 'elevation22', 'elevation23', 'elevation24']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (paperClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Paper/paperClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Popover/Popover.js":
/*!*******************************************************!*\
  !*** ./node_modules/@mui/material/Popover/Popover.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getOffsetLeft\": function() { return /* binding */ getOffsetLeft; },\n/* harmony export */   \"getOffsetTop\": function() { return /* binding */ getOffsetTop; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/refType.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/chainPropTypes.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/HTMLElementType.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/integerPropType.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/elementTypeAcceptingRef.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _utils_debounce__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/debounce */ \"./node_modules/@mui/material/utils/debounce.js\");\n/* harmony import */ var _utils_ownerDocument__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/ownerDocument */ \"./node_modules/@mui/material/utils/ownerDocument.js\");\n/* harmony import */ var _utils_ownerWindow__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/ownerWindow */ \"./node_modules/@mui/material/utils/ownerWindow.js\");\n/* harmony import */ var _utils_useForkRef__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/useForkRef */ \"./node_modules/@mui/material/utils/useForkRef.js\");\n/* harmony import */ var _Grow__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Grow */ \"./node_modules/@mui/material/Grow/Grow.js\");\n/* harmony import */ var _Modal__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Modal */ \"./node_modules/@mui/material/Modal/Modal.js\");\n/* harmony import */ var _Paper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Paper */ \"./node_modules/@mui/material/Paper/Paper.js\");\n/* harmony import */ var _popoverClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./popoverClasses */ \"./node_modules/@mui/material/Popover/popoverClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"onEntering\"],\n  _excluded2 = [\"action\", \"anchorEl\", \"anchorOrigin\", \"anchorPosition\", \"anchorReference\", \"children\", \"className\", \"container\", \"elevation\", \"marginThreshold\", \"open\", \"PaperProps\", \"transformOrigin\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getOffsetTop(rect, vertical) {\n  let offset = 0;\n  if (typeof vertical === 'number') {\n    offset = vertical;\n  } else if (vertical === 'center') {\n    offset = rect.height / 2;\n  } else if (vertical === 'bottom') {\n    offset = rect.height;\n  }\n  return offset;\n}\nfunction getOffsetLeft(rect, horizontal) {\n  let offset = 0;\n  if (typeof horizontal === 'number') {\n    offset = horizontal;\n  } else if (horizontal === 'center') {\n    offset = rect.width / 2;\n  } else if (horizontal === 'right') {\n    offset = rect.width;\n  }\n  return offset;\n}\nfunction getTransformOriginValue(transformOrigin) {\n  return [transformOrigin.horizontal, transformOrigin.vertical].map(n => typeof n === 'number' ? `${n}px` : n).join(' ');\n}\nfunction resolveAnchorEl(anchorEl) {\n  return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    paper: ['paper']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _popoverClasses__WEBPACK_IMPORTED_MODULE_6__.getPopoverUtilityClass, classes);\n};\nconst PopoverRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_Modal__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n  name: 'MuiPopover',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\nconst PopoverPaper = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_Paper__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n  name: 'MuiPopover',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => styles.paper\n})({\n  position: 'absolute',\n  overflowY: 'auto',\n  overflowX: 'hidden',\n  // So we see the popover when it's empty.\n  // It's most likely on issue on userland.\n  minWidth: 16,\n  minHeight: 16,\n  maxWidth: 'calc(100% - 32px)',\n  maxHeight: 'calc(100% - 32px)',\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0\n});\nconst Popover = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Popover(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__[\"default\"])({\n    props: inProps,\n    name: 'MuiPopover'\n  });\n  const {\n      action,\n      anchorEl,\n      anchorOrigin = {\n        vertical: 'top',\n        horizontal: 'left'\n      },\n      anchorPosition,\n      anchorReference = 'anchorEl',\n      children,\n      className,\n      container: containerProp,\n      elevation = 8,\n      marginThreshold = 16,\n      open,\n      PaperProps = {},\n      transformOrigin = {\n        vertical: 'top',\n        horizontal: 'left'\n      },\n      TransitionComponent = _Grow__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n      transitionDuration: transitionDurationProp = 'auto',\n      TransitionProps: {\n        onEntering\n      } = {}\n    } = props,\n    TransitionProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props.TransitionProps, _excluded),\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded2);\n  const paperRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef();\n  const handlePaperRef = (0,_utils_useForkRef__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(paperRef, PaperProps.ref);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n    anchorOrigin,\n    anchorReference,\n    elevation,\n    marginThreshold,\n    PaperProps,\n    transformOrigin,\n    TransitionComponent,\n    transitionDuration: transitionDurationProp,\n    TransitionProps\n  });\n  const classes = useUtilityClasses(ownerState);\n\n  // Returns the top/left offset of the position\n  // to attach to on the anchor element (or body if none is provided)\n  const getAnchorOffset = react__WEBPACK_IMPORTED_MODULE_2__.useCallback(() => {\n    if (anchorReference === 'anchorPosition') {\n      if (true) {\n        if (!anchorPosition) {\n          console.error('MUI: You need to provide a `anchorPosition` prop when using ' + '<Popover anchorReference=\"anchorPosition\" />.');\n        }\n      }\n      return anchorPosition;\n    }\n    const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n\n    // If an anchor element wasn't provided, just use the parent body element of this Popover\n    const anchorElement = resolvedAnchorEl && resolvedAnchorEl.nodeType === 1 ? resolvedAnchorEl : (0,_utils_ownerDocument__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(paperRef.current).body;\n    const anchorRect = anchorElement.getBoundingClientRect();\n    if (true) {\n      const box = anchorElement.getBoundingClientRect();\n      if ( true && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n        console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n      }\n    }\n    return {\n      top: anchorRect.top + getOffsetTop(anchorRect, anchorOrigin.vertical),\n      left: anchorRect.left + getOffsetLeft(anchorRect, anchorOrigin.horizontal)\n    };\n  }, [anchorEl, anchorOrigin.horizontal, anchorOrigin.vertical, anchorPosition, anchorReference]);\n\n  // Returns the base transform origin using the element\n  const getTransformOrigin = react__WEBPACK_IMPORTED_MODULE_2__.useCallback(elemRect => {\n    return {\n      vertical: getOffsetTop(elemRect, transformOrigin.vertical),\n      horizontal: getOffsetLeft(elemRect, transformOrigin.horizontal)\n    };\n  }, [transformOrigin.horizontal, transformOrigin.vertical]);\n  const getPositioningStyle = react__WEBPACK_IMPORTED_MODULE_2__.useCallback(element => {\n    const elemRect = {\n      width: element.offsetWidth,\n      height: element.offsetHeight\n    };\n\n    // Get the transform origin point on the element itself\n    const elemTransformOrigin = getTransformOrigin(elemRect);\n    if (anchorReference === 'none') {\n      return {\n        top: null,\n        left: null,\n        transformOrigin: getTransformOriginValue(elemTransformOrigin)\n      };\n    }\n\n    // Get the offset of the anchoring element\n    const anchorOffset = getAnchorOffset();\n\n    // Calculate element positioning\n    let top = anchorOffset.top - elemTransformOrigin.vertical;\n    let left = anchorOffset.left - elemTransformOrigin.horizontal;\n    const bottom = top + elemRect.height;\n    const right = left + elemRect.width;\n\n    // Use the parent window of the anchorEl if provided\n    const containerWindow = (0,_utils_ownerWindow__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(resolveAnchorEl(anchorEl));\n\n    // Window thresholds taking required margin into account\n    const heightThreshold = containerWindow.innerHeight - marginThreshold;\n    const widthThreshold = containerWindow.innerWidth - marginThreshold;\n\n    // Check if the vertical axis needs shifting\n    if (top < marginThreshold) {\n      const diff = top - marginThreshold;\n      top -= diff;\n      elemTransformOrigin.vertical += diff;\n    } else if (bottom > heightThreshold) {\n      const diff = bottom - heightThreshold;\n      top -= diff;\n      elemTransformOrigin.vertical += diff;\n    }\n    if (true) {\n      if (elemRect.height > heightThreshold && elemRect.height && heightThreshold) {\n        console.error(['MUI: The popover component is too tall.', `Some part of it can not be seen on the screen (${elemRect.height - heightThreshold}px).`, 'Please consider adding a `max-height` to improve the user-experience.'].join('\\n'));\n      }\n    }\n\n    // Check if the horizontal axis needs shifting\n    if (left < marginThreshold) {\n      const diff = left - marginThreshold;\n      left -= diff;\n      elemTransformOrigin.horizontal += diff;\n    } else if (right > widthThreshold) {\n      const diff = right - widthThreshold;\n      left -= diff;\n      elemTransformOrigin.horizontal += diff;\n    }\n    return {\n      top: `${Math.round(top)}px`,\n      left: `${Math.round(left)}px`,\n      transformOrigin: getTransformOriginValue(elemTransformOrigin)\n    };\n  }, [anchorEl, anchorReference, getAnchorOffset, getTransformOrigin, marginThreshold]);\n  const [isPositioned, setIsPositioned] = react__WEBPACK_IMPORTED_MODULE_2__.useState(open);\n  const setPositioningStyles = react__WEBPACK_IMPORTED_MODULE_2__.useCallback(() => {\n    const element = paperRef.current;\n    if (!element) {\n      return;\n    }\n    const positioning = getPositioningStyle(element);\n    if (positioning.top !== null) {\n      element.style.top = positioning.top;\n    }\n    if (positioning.left !== null) {\n      element.style.left = positioning.left;\n    }\n    element.style.transformOrigin = positioning.transformOrigin;\n    setIsPositioned(true);\n  }, [getPositioningStyle]);\n  const handleEntering = (element, isAppearing) => {\n    if (onEntering) {\n      onEntering(element, isAppearing);\n    }\n    setPositioningStyles();\n  };\n  const handleExited = () => {\n    setIsPositioned(false);\n  };\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    if (open) {\n      setPositioningStyles();\n    }\n  });\n  react__WEBPACK_IMPORTED_MODULE_2__.useImperativeHandle(action, () => open ? {\n    updatePosition: () => {\n      setPositioningStyles();\n    }\n  } : null, [open, setPositioningStyles]);\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    if (!open) {\n      return undefined;\n    }\n    const handleResize = (0,_utils_debounce__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(() => {\n      setPositioningStyles();\n    });\n    const containerWindow = (0,_utils_ownerWindow__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(anchorEl);\n    containerWindow.addEventListener('resize', handleResize);\n    return () => {\n      handleResize.clear();\n      containerWindow.removeEventListener('resize', handleResize);\n    };\n  }, [anchorEl, open, setPositioningStyles]);\n  let transitionDuration = transitionDurationProp;\n  if (transitionDurationProp === 'auto' && !TransitionComponent.muiSupportAuto) {\n    transitionDuration = undefined;\n  }\n\n  // If the container prop is provided, use that\n  // If the anchorEl prop is provided, use its parent body element as the container\n  // If neither are provided let the Modal take care of choosing the container\n  const container = containerProp || (anchorEl ? (0,_utils_ownerDocument__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(resolveAnchorEl(anchorEl)).body : undefined);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(PopoverRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    BackdropProps: {\n      invisible: true\n    },\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    container: container,\n    open: open,\n    ref: ref,\n    ownerState: ownerState\n  }, other, {\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TransitionComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      appear: true,\n      in: open,\n      onEntering: handleEntering,\n      onExited: handleExited,\n      timeout: transitionDuration\n    }, TransitionProps, {\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(PopoverPaper, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n        elevation: elevation\n      }, PaperProps, {\n        ref: handlePaperRef,\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.paper, PaperProps.className)\n      }, isPositioned ? undefined : {\n        style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, PaperProps.style, {\n          opacity: 0\n        })\n      }, {\n        ownerState: ownerState,\n        children: children\n      }))\n    }))\n  }));\n});\n true ? Popover.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * A ref for imperative actions.\n   * It currently only supports updatePosition() action.\n   */\n  action: _mui_utils__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n  /**\n   * An HTML element, or a function that returns one.\n   * It's used to set the position of the popover.\n   */\n  anchorEl: (0,_mui_utils__WEBPACK_IMPORTED_MODULE_17__[\"default\"])(prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOfType([_mui_utils__WEBPACK_IMPORTED_MODULE_19__[\"default\"], (prop_types__WEBPACK_IMPORTED_MODULE_18___default().func)]), props => {\n    if (props.open && (!props.anchorReference || props.anchorReference === 'anchorEl')) {\n      const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n      if (resolvedAnchorEl && resolvedAnchorEl.nodeType === 1) {\n        const box = resolvedAnchorEl.getBoundingClientRect();\n        if ( true && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n          return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n        }\n      } else {\n        return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', `It should be an Element instance but it's \\`${resolvedAnchorEl}\\` instead.`].join('\\n'));\n      }\n    }\n    return null;\n  }),\n  /**\n   * This is the point on the anchor where the popover's\n   * `anchorEl` will attach to. This is not used when the\n   * anchorReference is 'anchorPosition'.\n   *\n   * Options:\n   * vertical: [top, center, bottom];\n   * horizontal: [left, center, right].\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'left',\n   * }\n   */\n  anchorOrigin: prop_types__WEBPACK_IMPORTED_MODULE_18___default().shape({\n    horizontal: prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOf(['center', 'left', 'right']), (prop_types__WEBPACK_IMPORTED_MODULE_18___default().number)]).isRequired,\n    vertical: prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOf(['bottom', 'center', 'top']), (prop_types__WEBPACK_IMPORTED_MODULE_18___default().number)]).isRequired\n  }),\n  /**\n   * This is the position that may be used to set the position of the popover.\n   * The coordinates are relative to the application's client area.\n   */\n  anchorPosition: prop_types__WEBPACK_IMPORTED_MODULE_18___default().shape({\n    left: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().number.isRequired),\n    top: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().number.isRequired)\n  }),\n  /**\n   * This determines which anchor prop to refer to when setting\n   * the position of the popover.\n   * @default 'anchorEl'\n   */\n  anchorReference: prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOf(['anchorEl', 'anchorPosition', 'none']),\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().string),\n  /**\n   * An HTML element, component instance, or function that returns either.\n   * The `container` will passed to the Modal component.\n   *\n   * By default, it uses the body of the anchorEl's top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOfType([_mui_utils__WEBPACK_IMPORTED_MODULE_19__[\"default\"], (prop_types__WEBPACK_IMPORTED_MODULE_18___default().func)]),\n  /**\n   * The elevation of the popover.\n   * @default 8\n   */\n  elevation: _mui_utils__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n  /**\n   * Specifies how close to the edge of the window the popover can appear.\n   * @default 16\n   */\n  marginThreshold: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().number),\n  /**\n   * Callback fired when the component requests to be closed.\n   * The `reason` parameter can optionally be used to control the response to `onClose`.\n   */\n  onClose: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().func),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().bool.isRequired),\n  /**\n   * Props applied to the [`Paper`](/material-ui/api/paper/) element.\n   * @default {}\n   */\n  PaperProps: prop_types__WEBPACK_IMPORTED_MODULE_18___default().shape({\n    component: _mui_utils__WEBPACK_IMPORTED_MODULE_21__[\"default\"]\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_18___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_18___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_18___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_18___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_18___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_18___default().object)]),\n  /**\n   * This is the point on the popover which\n   * will attach to the anchor's origin.\n   *\n   * Options:\n   * vertical: [top, center, bottom, x(px)];\n   * horizontal: [left, center, right, x(px)].\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'left',\n   * }\n   */\n  transformOrigin: prop_types__WEBPACK_IMPORTED_MODULE_18___default().shape({\n    horizontal: prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOf(['center', 'left', 'right']), (prop_types__WEBPACK_IMPORTED_MODULE_18___default().number)]).isRequired,\n    vertical: prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOf(['bottom', 'center', 'top']), (prop_types__WEBPACK_IMPORTED_MODULE_18___default().number)]).isRequired\n  }),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Grow\n   */\n  TransitionComponent: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().elementType),\n  /**\n   * Set to 'auto' to automatically calculate transition time based on height.\n   * @default 'auto'\n   */\n  transitionDuration: prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_18___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_18___default().number), prop_types__WEBPACK_IMPORTED_MODULE_18___default().shape({\n    appear: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().number),\n    enter: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().number),\n    exit: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().number)\n  })]),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n   * @default {}\n   */\n  TransitionProps: (prop_types__WEBPACK_IMPORTED_MODULE_18___default().object)\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Popover);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Popover/Popover.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Popover/index.js":
/*!*****************************************************!*\
  !*** ./node_modules/@mui/material/Popover/index.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _Popover__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getOffsetLeft\": function() { return /* reexport safe */ _Popover__WEBPACK_IMPORTED_MODULE_0__.getOffsetLeft; },\n/* harmony export */   \"getOffsetTop\": function() { return /* reexport safe */ _Popover__WEBPACK_IMPORTED_MODULE_0__.getOffsetTop; },\n/* harmony export */   \"getPopoverUtilityClass\": function() { return /* reexport safe */ _popoverClasses__WEBPACK_IMPORTED_MODULE_1__.getPopoverUtilityClass; },\n/* harmony export */   \"popoverClasses\": function() { return /* reexport safe */ _popoverClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _Popover__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Popover */ \"./node_modules/@mui/material/Popover/Popover.js\");\n/* harmony import */ var _popoverClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./popoverClasses */ \"./node_modules/@mui/material/Popover/popoverClasses.js\");\n\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Popover/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Popover/popoverClasses.js":
/*!**************************************************************!*\
  !*** ./node_modules/@mui/material/Popover/popoverClasses.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getPopoverUtilityClass\": function() { return /* binding */ getPopoverUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getPopoverUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiPopover', slot);\n}\nconst popoverClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiPopover', ['root', 'paper']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (popoverClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Popover/popoverClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Popper/Popper.js":
/*!*****************************************************!*\
  !*** ./node_modules/@mui/material/Popper/Popper.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _mui_base_PopperUnstyled__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base/PopperUnstyled */ \"./node_modules/@mui/base/PopperUnstyled/PopperUnstyled.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/useThemeWithoutDefault.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/HTMLElementType.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/refType.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../styles */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"components\", \"componentsProps\", \"slots\", \"slotProps\"];\n\n\n\n\n\n\n\nconst PopperRoot = (0,_styles__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_mui_base_PopperUnstyled__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n  name: 'MuiPopper',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n *\n * Demos:\n *\n * - [Autocomplete](https://mui.com/material-ui/react-autocomplete/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n * - [Popper](https://mui.com/material-ui/react-popper/)\n *\n * API:\n *\n * - [Popper API](https://mui.com/material-ui/api/popper/)\n */\nconst Popper = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Popper(inProps, ref) {\n  var _slots$root;\n  const theme = (0,_mui_system__WEBPACK_IMPORTED_MODULE_6__[\"default\"])();\n  const props = (0,_styles__WEBPACK_IMPORTED_MODULE_7__[\"default\"])({\n    props: inProps,\n    name: 'MuiPopper'\n  });\n  const {\n      components,\n      componentsProps,\n      slots,\n      slotProps\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const RootComponent = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components == null ? void 0 : components.Root;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(PopperRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    direction: theme == null ? void 0 : theme.direction,\n    slots: {\n      root: RootComponent\n    },\n    slotProps: slotProps != null ? slotProps : componentsProps\n  }, other, {\n    ref: ref\n  }));\n});\n true ? Popper.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n   * or a function that returns either.\n   * It's used to set the position of the popper.\n   * The return value will passed as the reference object of the Popper instance.\n   */\n  anchorEl: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOfType([_mui_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"], (prop_types__WEBPACK_IMPORTED_MODULE_8___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func)]),\n  /**\n   * Popper render function or node.\n   */\n  children: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_8___default().node), (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func)]),\n  /**\n   * @ignore\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().elementType),\n  /**\n   * The components used for each slot inside the Popper.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  components: prop_types__WEBPACK_IMPORTED_MODULE_8___default().shape({\n    Root: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().elementType)\n  }),\n  /**\n   * The props used for each slot inside the Popper.\n   * @default {}\n   */\n  componentsProps: prop_types__WEBPACK_IMPORTED_MODULE_8___default().shape({\n    root: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_8___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_8___default().object)])\n  }),\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOfType([_mui_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"], (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func)]),\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().bool),\n  /**\n   * Always keep the children in the DOM.\n   * This prop can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Popper.\n   * @default false\n   */\n  keepMounted: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().bool),\n  /**\n   * Popper.js is based on a \"plugin-like\" architecture,\n   * most of its features are fully encapsulated \"modifiers\".\n   *\n   * A modifier is a function that is called each time Popper.js needs to\n   * compute the position of the popper.\n   * For this reason, modifiers should be very performant to avoid bottlenecks.\n   * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n   */\n  modifiers: prop_types__WEBPACK_IMPORTED_MODULE_8___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_8___default().shape({\n    data: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().object),\n    effect: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n    enabled: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().bool),\n    fn: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n    name: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().any),\n    options: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().object),\n    phase: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n    requires: prop_types__WEBPACK_IMPORTED_MODULE_8___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_8___default().string)),\n    requiresIfExists: prop_types__WEBPACK_IMPORTED_MODULE_8___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_8___default().string))\n  })),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().bool.isRequired),\n  /**\n   * @ignore\n   */\n  ownerState: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().any),\n  /**\n   * Popper placement.\n   * @default 'bottom'\n   */\n  placement: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n  /**\n   * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n   * @default {}\n   */\n  popperOptions: prop_types__WEBPACK_IMPORTED_MODULE_8___default().shape({\n    modifiers: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().array),\n    onFirstUpdate: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n    placement: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n    strategy: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOf(['absolute', 'fixed'])\n  }),\n  /**\n   * A ref that points to the used popper instance.\n   */\n  popperRef: _mui_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n  /**\n   * The props used for each slot inside the Popper.\n   * @default {}\n   */\n  slotProps: prop_types__WEBPACK_IMPORTED_MODULE_8___default().shape({\n    root: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_8___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_8___default().object)])\n  }),\n  /**\n   * The components used for each slot inside the Popper.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: prop_types__WEBPACK_IMPORTED_MODULE_8___default().shape({\n    root: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().elementType)\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_8___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_8___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_8___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_8___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_8___default().object)]),\n  /**\n   * Help supporting a react-transition-group/Transition component.\n   * @default false\n   */\n  transition: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().bool)\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Popper);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Popper/Popper.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Select/Select.js":
/*!*****************************************************!*\
  !*** ./node_modules/@mui/material/Select/Select.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/deepmerge.js\");\n/* harmony import */ var _SelectInput__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./SelectInput */ \"./node_modules/@mui/material/Select/SelectInput.js\");\n/* harmony import */ var _FormControl_formControlState__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../FormControl/formControlState */ \"./node_modules/@mui/material/FormControl/formControlState.js\");\n/* harmony import */ var _FormControl_useFormControl__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../FormControl/useFormControl */ \"./node_modules/@mui/material/FormControl/useFormControl.js\");\n/* harmony import */ var _internal_svg_icons_ArrowDropDown__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../internal/svg-icons/ArrowDropDown */ \"./node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js\");\n/* harmony import */ var _Input__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Input */ \"./node_modules/@mui/material/Input/Input.js\");\n/* harmony import */ var _NativeSelect_NativeSelectInput__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../NativeSelect/NativeSelectInput */ \"./node_modules/@mui/material/NativeSelect/NativeSelectInput.js\");\n/* harmony import */ var _FilledInput__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../FilledInput */ \"./node_modules/@mui/material/FilledInput/FilledInput.js\");\n/* harmony import */ var _OutlinedInput__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../OutlinedInput */ \"./node_modules/@mui/material/OutlinedInput/OutlinedInput.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _utils_useForkRef__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/useForkRef */ \"./node_modules/@mui/material/utils/useForkRef.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nvar _StyledInput, _StyledFilledInput;\nconst _excluded = [\"autoWidth\", \"children\", \"classes\", \"className\", \"defaultOpen\", \"displayEmpty\", \"IconComponent\", \"id\", \"input\", \"inputProps\", \"label\", \"labelId\", \"MenuProps\", \"multiple\", \"native\", \"onClose\", \"onOpen\", \"open\", \"renderValue\", \"SelectDisplayProps\", \"variant\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  return classes;\n};\nconst styledRootConfig = {\n  name: 'MuiSelect',\n  overridesResolver: (props, styles) => styles.root,\n  shouldForwardProp: prop => (0,_styles_styled__WEBPACK_IMPORTED_MODULE_5__.rootShouldForwardProp)(prop) && prop !== 'variant',\n  slot: 'Root'\n};\nconst StyledInput = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_Input__WEBPACK_IMPORTED_MODULE_6__[\"default\"], styledRootConfig)('');\nconst StyledOutlinedInput = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_OutlinedInput__WEBPACK_IMPORTED_MODULE_7__[\"default\"], styledRootConfig)('');\nconst StyledFilledInput = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_FilledInput__WEBPACK_IMPORTED_MODULE_8__[\"default\"], styledRootConfig)('');\nconst Select = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Select(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({\n    name: 'MuiSelect',\n    props: inProps\n  });\n  const {\n      autoWidth = false,\n      children,\n      classes: classesProp = {},\n      className,\n      defaultOpen = false,\n      displayEmpty = false,\n      IconComponent = _internal_svg_icons_ArrowDropDown__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n      id,\n      input,\n      inputProps,\n      label,\n      labelId,\n      MenuProps,\n      multiple = false,\n      native = false,\n      onClose,\n      onOpen,\n      open,\n      renderValue,\n      SelectDisplayProps,\n      variant: variantProp = 'outlined'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const inputComponent = native ? _NativeSelect_NativeSelectInput__WEBPACK_IMPORTED_MODULE_11__[\"default\"] : _SelectInput__WEBPACK_IMPORTED_MODULE_12__[\"default\"];\n  const muiFormControl = (0,_FormControl_useFormControl__WEBPACK_IMPORTED_MODULE_13__[\"default\"])();\n  const fcs = (0,_FormControl_formControlState__WEBPACK_IMPORTED_MODULE_14__[\"default\"])({\n    props,\n    muiFormControl,\n    states: ['variant']\n  });\n  const variant = fcs.variant || variantProp;\n  const InputComponent = input || {\n    standard: _StyledInput || (_StyledInput = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(StyledInput, {})),\n    outlined: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(StyledOutlinedInput, {\n      label: label\n    }),\n    filled: _StyledFilledInput || (_StyledFilledInput = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(StyledFilledInput, {}))\n  }[variant];\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n    variant,\n    classes: classesProp\n  });\n  const classes = useUtilityClasses(ownerState);\n  const inputComponentRef = (0,_utils_useForkRef__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(ref, InputComponent.ref);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n    children: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(InputComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      // Most of the logic is implemented in `SelectInput`.\n      // The `Select` component is a simple API wrapper to expose something better to play with.\n      inputComponent,\n      inputProps: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n        children,\n        IconComponent,\n        variant,\n        type: undefined,\n        // We render a select. We can ignore the type provided by the `Input`.\n        multiple\n      }, native ? {\n        id\n      } : {\n        autoWidth,\n        defaultOpen,\n        displayEmpty,\n        labelId,\n        MenuProps,\n        onClose,\n        onOpen,\n        open,\n        renderValue,\n        SelectDisplayProps: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n          id\n        }, SelectDisplayProps)\n      }, inputProps, {\n        classes: inputProps ? (0,_mui_utils__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(classes, inputProps.classes) : classes\n      }, input ? input.props.inputProps : {})\n    }, multiple && native && variant === 'outlined' ? {\n      notched: true\n    } : {}, {\n      ref: inputComponentRef,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(InputComponent.props.className, className)\n    }, !input && {\n      variant\n    }, other))\n  });\n});\n true ? Select.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, the width of the popover will automatically be set according to the items inside the\n   * menu, otherwise it will be at least the width of the select input.\n   * @default false\n   */\n  autoWidth: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * The option elements to populate the select with.\n   * Can be some `MenuItem` when `native` is false and `option` when `native` is true.\n   *\n   * ⚠️The `MenuItem` elements **must** be direct descendants when `native` is false.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   * @default {}\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string),\n  /**\n   * If `true`, the component is initially open. Use when the component open state is not controlled (i.e. the `open` prop is not defined).\n   * You can only use it when the `native` prop is `false` (default).\n   * @default false\n   */\n  defaultOpen: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().any),\n  /**\n   * If `true`, a value is displayed even if no items are selected.\n   *\n   * In order to display a meaningful value, a function can be passed to the `renderValue` prop which\n   * returns the value to be displayed when no items are selected.\n   *\n   * ⚠️ When using this prop, make sure the label doesn't overlap with the empty displayed value.\n   * The label should either be hidden or forced to a shrunk state.\n   * @default false\n   */\n  displayEmpty: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * The icon that displays the arrow.\n   * @default ArrowDropDownIcon\n   */\n  IconComponent: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().elementType),\n  /**\n   * The `id` of the wrapper element or the `select` element when `native`.\n   */\n  id: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string),\n  /**\n   * An `Input` element; does not have to be a material-ui specific `Input`.\n   */\n  input: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().element),\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * When `native` is `true`, the attributes are applied on the `select` element.\n   */\n  inputProps: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object),\n  /**\n   * See [OutlinedInput#label](/material-ui/api/outlined-input/#props)\n   */\n  label: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().node),\n  /**\n   * The ID of an element that acts as an additional label. The Select will\n   * be labelled by the additional label and the selected value.\n   */\n  labelId: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string),\n  /**\n   * Props applied to the [`Menu`](/material-ui/api/menu/) element.\n   */\n  MenuProps: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object),\n  /**\n   * If `true`, `value` must be an array and the menu will support multiple selections.\n   * @default false\n   */\n  multiple: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * If `true`, the component uses a native `select` element.\n   * @default false\n   */\n  native: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * Callback fired when a menu item is selected.\n   *\n   * @param {SelectChangeEvent<T>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (any).\n   * **Warning**: This is a generic event, not a change event, unless the change event is caused by browser autofill.\n   * @param {object} [child] The react element that was selected when `native` is `false` (default).\n   */\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func),\n  /**\n   * Callback fired when the component requests to be closed.\n   * Use it in either controlled (see the `open` prop), or uncontrolled mode (to detect when the Select collapes).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onClose: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func),\n  /**\n   * Callback fired when the component requests to be opened.\n   * Use it in either controlled (see the `open` prop), or uncontrolled mode (to detect when the Select expands).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onOpen: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func),\n  /**\n   * If `true`, the component is shown.\n   * You can only use it when the `native` prop is `false` (default).\n   */\n  open: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * Render the selected value.\n   * You can only use it when the `native` prop is `false` (default).\n   *\n   * @param {any} value The `value` provided to the component.\n   * @returns {ReactNode}\n   */\n  renderValue: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func),\n  /**\n   * Props applied to the clickable div element.\n   */\n  SelectDisplayProps: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_17___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_17___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object)]),\n  /**\n   * The `input` value. Providing an empty string will select no options.\n   * Set to an empty string `''` if you don't want any of the available options to be selected.\n   *\n   * If the value is an object it must have reference equality with the option in order to be selected.\n   * If the value is not an object, the string representation must match with the string representation of the option in order to be selected.\n   */\n  value: prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOf(['']), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().any)]),\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOf(['filled', 'outlined', 'standard'])\n} : 0;\nSelect.muiName = 'Select';\n/* harmony default export */ __webpack_exports__[\"default\"] = (Select);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Select/Select.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Select/SelectInput.js":
/*!**********************************************************!*\
  !*** ./node_modules/@mui/material/Select/SelectInput.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-is */ \"./node_modules/@mui/material/node_modules/react-is/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/refType.js\");\n/* harmony import */ var _utils_ownerDocument__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/ownerDocument */ \"./node_modules/@mui/material/utils/ownerDocument.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _Menu_Menu__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../Menu/Menu */ \"./node_modules/@mui/material/Menu/Menu.js\");\n/* harmony import */ var _NativeSelect_NativeSelectInput__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../NativeSelect/NativeSelectInput */ \"./node_modules/@mui/material/NativeSelect/NativeSelectInput.js\");\n/* harmony import */ var _InputBase_utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../InputBase/utils */ \"./node_modules/@mui/material/InputBase/utils.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _utils_useForkRef__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/useForkRef */ \"./node_modules/@mui/material/utils/useForkRef.js\");\n/* harmony import */ var _utils_useControlled__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/useControlled */ \"./node_modules/@mui/material/utils/useControlled.js\");\n/* harmony import */ var _selectClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./selectClasses */ \"./node_modules/@mui/material/Select/selectClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\nvar _span;\nconst _excluded = [\"aria-describedby\", \"aria-label\", \"autoFocus\", \"autoWidth\", \"children\", \"className\", \"defaultOpen\", \"defaultValue\", \"disabled\", \"displayEmpty\", \"IconComponent\", \"inputRef\", \"labelId\", \"MenuProps\", \"multiple\", \"name\", \"onBlur\", \"onChange\", \"onClose\", \"onFocus\", \"onOpen\", \"open\", \"readOnly\", \"renderValue\", \"SelectDisplayProps\", \"tabIndex\", \"type\", \"value\", \"variant\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst SelectSelect = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_6__[\"default\"])('div', {\n  name: 'MuiSelect',\n  slot: 'Select',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [\n    // Win specificity over the input base\n    {\n      [`&.${_selectClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].select}`]: styles.select\n    }, {\n      [`&.${_selectClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].select}`]: styles[ownerState.variant]\n    }, {\n      [`&.${_selectClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].multiple}`]: styles.multiple\n    }];\n  }\n})(_NativeSelect_NativeSelectInput__WEBPACK_IMPORTED_MODULE_8__.nativeSelectSelectStyles, {\n  // Win specificity over the input base\n  [`&.${_selectClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].select}`]: {\n    height: 'auto',\n    // Resets for multiple select with chips\n    minHeight: '1.4375em',\n    // Required for select\\text-field height consistency\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap',\n    overflow: 'hidden'\n  }\n});\nconst SelectIcon = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_6__[\"default\"])('svg', {\n  name: 'MuiSelect',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.icon, ownerState.variant && styles[`icon${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(ownerState.variant)}`], ownerState.open && styles.iconOpen];\n  }\n})(_NativeSelect_NativeSelectInput__WEBPACK_IMPORTED_MODULE_8__.nativeSelectIconStyles);\nconst SelectNativeInput = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_6__[\"default\"])('input', {\n  shouldForwardProp: prop => (0,_styles_styled__WEBPACK_IMPORTED_MODULE_6__.slotShouldForwardProp)(prop) && prop !== 'classes',\n  name: 'MuiSelect',\n  slot: 'NativeInput',\n  overridesResolver: (props, styles) => styles.nativeInput\n})({\n  bottom: 0,\n  left: 0,\n  position: 'absolute',\n  opacity: 0,\n  pointerEvents: 'none',\n  width: '100%',\n  boxSizing: 'border-box'\n});\nfunction areEqualValues(a, b) {\n  if (typeof b === 'object' && b !== null) {\n    return a === b;\n  }\n\n  // The value could be a number, the DOM will stringify it anyway.\n  return String(a) === String(b);\n}\nfunction isEmpty(display) {\n  return display == null || typeof display === 'string' && !display.trim();\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    disabled,\n    multiple,\n    open\n  } = ownerState;\n  const slots = {\n    select: ['select', variant, disabled && 'disabled', multiple && 'multiple'],\n    icon: ['icon', `icon${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(variant)}`, open && 'iconOpen', disabled && 'disabled'],\n    nativeInput: ['nativeInput']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(slots, _selectClasses__WEBPACK_IMPORTED_MODULE_7__.getSelectUtilityClasses, classes);\n};\n\n/**\n * @ignore - internal component.\n */\nconst SelectInput = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function SelectInput(props, ref) {\n  const {\n      'aria-describedby': ariaDescribedby,\n      'aria-label': ariaLabel,\n      autoFocus,\n      autoWidth,\n      children,\n      className,\n      defaultOpen,\n      defaultValue,\n      disabled,\n      displayEmpty,\n      IconComponent,\n      inputRef: inputRefProp,\n      labelId,\n      MenuProps = {},\n      multiple,\n      name,\n      onBlur,\n      onChange,\n      onClose,\n      onFocus,\n      onOpen,\n      open: openProp,\n      readOnly,\n      renderValue,\n      SelectDisplayProps = {},\n      tabIndex: tabIndexProp,\n      value: valueProp,\n      variant = 'standard'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const [value, setValueState] = (0,_utils_useControlled__WEBPACK_IMPORTED_MODULE_11__[\"default\"])({\n    controlled: valueProp,\n    default: defaultValue,\n    name: 'Select'\n  });\n  const [openState, setOpenState] = (0,_utils_useControlled__WEBPACK_IMPORTED_MODULE_11__[\"default\"])({\n    controlled: openProp,\n    default: defaultOpen,\n    name: 'Select'\n  });\n  const inputRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const displayRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const [displayNode, setDisplayNode] = react__WEBPACK_IMPORTED_MODULE_2__.useState(null);\n  const {\n    current: isOpenControlled\n  } = react__WEBPACK_IMPORTED_MODULE_2__.useRef(openProp != null);\n  const [menuMinWidthState, setMenuMinWidthState] = react__WEBPACK_IMPORTED_MODULE_2__.useState();\n  const handleRef = (0,_utils_useForkRef__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(ref, inputRefProp);\n  const handleDisplayRef = react__WEBPACK_IMPORTED_MODULE_2__.useCallback(node => {\n    displayRef.current = node;\n    if (node) {\n      setDisplayNode(node);\n    }\n  }, []);\n  const anchorElement = displayNode == null ? void 0 : displayNode.parentNode;\n  react__WEBPACK_IMPORTED_MODULE_2__.useImperativeHandle(handleRef, () => ({\n    focus: () => {\n      displayRef.current.focus();\n    },\n    node: inputRef.current,\n    value\n  }), [value]);\n\n  // Resize menu on `defaultOpen` automatic toggle.\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    if (defaultOpen && openState && displayNode && !isOpenControlled) {\n      setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);\n      displayRef.current.focus();\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [displayNode, autoWidth]);\n  // `isOpenControlled` is ignored because the component should never switch between controlled and uncontrolled modes.\n  // `defaultOpen` and `openState` are ignored to avoid unnecessary callbacks.\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    if (autoFocus) {\n      displayRef.current.focus();\n    }\n  }, [autoFocus]);\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    if (!labelId) {\n      return undefined;\n    }\n    const label = (0,_utils_ownerDocument__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(displayRef.current).getElementById(labelId);\n    if (label) {\n      const handler = () => {\n        if (getSelection().isCollapsed) {\n          displayRef.current.focus();\n        }\n      };\n      label.addEventListener('click', handler);\n      return () => {\n        label.removeEventListener('click', handler);\n      };\n    }\n    return undefined;\n  }, [labelId]);\n  const update = (open, event) => {\n    if (open) {\n      if (onOpen) {\n        onOpen(event);\n      }\n    } else if (onClose) {\n      onClose(event);\n    }\n    if (!isOpenControlled) {\n      setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);\n      setOpenState(open);\n    }\n  };\n  const handleMouseDown = event => {\n    // Ignore everything but left-click\n    if (event.button !== 0) {\n      return;\n    }\n    // Hijack the default focus behavior.\n    event.preventDefault();\n    displayRef.current.focus();\n    update(true, event);\n  };\n  const handleClose = event => {\n    update(false, event);\n  };\n  const childrenArray = react__WEBPACK_IMPORTED_MODULE_2__.Children.toArray(children);\n\n  // Support autofill.\n  const handleChange = event => {\n    const index = childrenArray.map(child => child.props.value).indexOf(event.target.value);\n    if (index === -1) {\n      return;\n    }\n    const child = childrenArray[index];\n    setValueState(child.props.value);\n    if (onChange) {\n      onChange(event, child);\n    }\n  };\n  const handleItemClick = child => event => {\n    let newValue;\n\n    // We use the tabindex attribute to signal the available options.\n    if (!event.currentTarget.hasAttribute('tabindex')) {\n      return;\n    }\n    if (multiple) {\n      newValue = Array.isArray(value) ? value.slice() : [];\n      const itemIndex = value.indexOf(child.props.value);\n      if (itemIndex === -1) {\n        newValue.push(child.props.value);\n      } else {\n        newValue.splice(itemIndex, 1);\n      }\n    } else {\n      newValue = child.props.value;\n    }\n    if (child.props.onClick) {\n      child.props.onClick(event);\n    }\n    if (value !== newValue) {\n      setValueState(newValue);\n      if (onChange) {\n        // Redefine target to allow name and value to be read.\n        // This allows seamless integration with the most popular form libraries.\n        // https://github.com/mui/material-ui/issues/13485#issuecomment-676048492\n        // Clone the event to not override `target` of the original event.\n        const nativeEvent = event.nativeEvent || event;\n        const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n        Object.defineProperty(clonedEvent, 'target', {\n          writable: true,\n          value: {\n            value: newValue,\n            name\n          }\n        });\n        onChange(clonedEvent, child);\n      }\n    }\n    if (!multiple) {\n      update(false, event);\n    }\n  };\n  const handleKeyDown = event => {\n    if (!readOnly) {\n      const validKeys = [' ', 'ArrowUp', 'ArrowDown',\n      // The native select doesn't respond to enter on macOS, but it's recommended by\n      // https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/\n      'Enter'];\n      if (validKeys.indexOf(event.key) !== -1) {\n        event.preventDefault();\n        update(true, event);\n      }\n    }\n  };\n  const open = displayNode !== null && openState;\n  const handleBlur = event => {\n    // if open event.stopImmediatePropagation\n    if (!open && onBlur) {\n      // Preact support, target is read only property on a native event.\n      Object.defineProperty(event, 'target', {\n        writable: true,\n        value: {\n          value,\n          name\n        }\n      });\n      onBlur(event);\n    }\n  };\n  delete other['aria-invalid'];\n  let display;\n  let displaySingle;\n  const displayMultiple = [];\n  let computeDisplay = false;\n  let foundMatch = false;\n\n  // No need to display any value if the field is empty.\n  if ((0,_InputBase_utils__WEBPACK_IMPORTED_MODULE_14__.isFilled)({\n    value\n  }) || displayEmpty) {\n    if (renderValue) {\n      display = renderValue(value);\n    } else {\n      computeDisplay = true;\n    }\n  }\n  const items = childrenArray.map((child, index, arr) => {\n    var _arr$, _arr$$props, _arr$2, _arr$2$props;\n    if (! /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.isValidElement(child)) {\n      return null;\n    }\n    if (true) {\n      if ((0,react_is__WEBPACK_IMPORTED_MODULE_3__.isFragment)(child)) {\n        console.error([\"MUI: The Select component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    let selected;\n    if (multiple) {\n      if (!Array.isArray(value)) {\n        throw new Error( true ? `MUI: The \\`value\\` prop must be an array when using the \\`Select\\` component with \\`multiple\\`.` : 0);\n      }\n      selected = value.some(v => areEqualValues(v, child.props.value));\n      if (selected && computeDisplay) {\n        displayMultiple.push(child.props.children);\n      }\n    } else {\n      selected = areEqualValues(value, child.props.value);\n      if (selected && computeDisplay) {\n        displaySingle = child.props.children;\n      }\n    }\n    if (selected) {\n      foundMatch = true;\n    }\n    if (child.props.value === undefined) {\n      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(child, {\n        'aria-readonly': true,\n        role: 'option'\n      });\n    }\n    const isFirstSelectableElement = () => {\n      if (value) {\n        return selected;\n      }\n      const firstSelectableElement = arr.find(item => {\n        var _item$props;\n        return (item == null ? void 0 : (_item$props = item.props) == null ? void 0 : _item$props.value) !== undefined && item.props.disabled !== true;\n      });\n      if (child === firstSelectableElement) {\n        return true;\n      }\n      return selected;\n    };\n    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(child, {\n      'aria-selected': selected ? 'true' : 'false',\n      onClick: handleItemClick(child),\n      onKeyUp: event => {\n        if (event.key === ' ') {\n          // otherwise our MenuItems dispatches a click event\n          // it's not behavior of the native <option> and causes\n          // the select to close immediately since we open on space keydown\n          event.preventDefault();\n        }\n        if (child.props.onKeyUp) {\n          child.props.onKeyUp(event);\n        }\n      },\n      role: 'option',\n      selected: ((_arr$ = arr[0]) == null ? void 0 : (_arr$$props = _arr$.props) == null ? void 0 : _arr$$props.value) === undefined || ((_arr$2 = arr[0]) == null ? void 0 : (_arr$2$props = _arr$2.props) == null ? void 0 : _arr$2$props.disabled) === true ? isFirstSelectableElement() : selected,\n      value: undefined,\n      // The value is most likely not a valid HTML attribute.\n      'data-value': child.props.value // Instead, we provide it as a data attribute.\n    });\n  });\n\n  if (true) {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n      if (!foundMatch && !multiple && value !== '') {\n        const values = childrenArray.map(child => child.props.value);\n        console.warn([`MUI: You have provided an out-of-range value \\`${value}\\` for the select ${name ? `(name=\"${name}\") ` : ''}component.`, \"Consider providing a value that matches one of the available options or ''.\", `The available values are ${values.filter(x => x != null).map(x => `\\`${x}\\``).join(', ') || '\"\"'}.`].join('\\n'));\n      }\n    }, [foundMatch, childrenArray, multiple, name, value]);\n  }\n  if (computeDisplay) {\n    if (multiple) {\n      if (displayMultiple.length === 0) {\n        display = null;\n      } else {\n        display = displayMultiple.reduce((output, child, index) => {\n          output.push(child);\n          if (index < displayMultiple.length - 1) {\n            output.push(', ');\n          }\n          return output;\n        }, []);\n      }\n    } else {\n      display = displaySingle;\n    }\n  }\n\n  // Avoid performing a layout computation in the render method.\n  let menuMinWidth = menuMinWidthState;\n  if (!autoWidth && isOpenControlled && displayNode) {\n    menuMinWidth = anchorElement.clientWidth;\n  }\n  let tabIndex;\n  if (typeof tabIndexProp !== 'undefined') {\n    tabIndex = tabIndexProp;\n  } else {\n    tabIndex = disabled ? null : 0;\n  }\n  const buttonId = SelectDisplayProps.id || (name ? `mui-component-select-${name}` : undefined);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n    variant,\n    value,\n    open\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(SelectSelect, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      ref: handleDisplayRef,\n      tabIndex: tabIndex,\n      role: \"button\",\n      \"aria-disabled\": disabled ? 'true' : undefined,\n      \"aria-expanded\": open ? 'true' : 'false',\n      \"aria-haspopup\": \"listbox\",\n      \"aria-label\": ariaLabel,\n      \"aria-labelledby\": [labelId, buttonId].filter(Boolean).join(' ') || undefined,\n      \"aria-describedby\": ariaDescribedby,\n      onKeyDown: handleKeyDown,\n      onMouseDown: disabled || readOnly ? null : handleMouseDown,\n      onBlur: handleBlur,\n      onFocus: onFocus\n    }, SelectDisplayProps, {\n      ownerState: ownerState,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(SelectDisplayProps.className, classes.select, className)\n      // The id is required for proper a11y\n      ,\n      id: buttonId,\n      children: isEmpty(display) ? // notranslate needed while Google Translate will not fix zero-width space issue\n      _span || (_span = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(\"span\", {\n        className: \"notranslate\",\n        children: \"\\u200B\"\n      })) : display\n    })), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(SelectNativeInput, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      value: Array.isArray(value) ? value.join(',') : value,\n      name: name,\n      ref: inputRef,\n      \"aria-hidden\": true,\n      onChange: handleChange,\n      tabIndex: -1,\n      disabled: disabled,\n      className: classes.nativeInput,\n      autoFocus: autoFocus,\n      ownerState: ownerState\n    }, other)), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(SelectIcon, {\n      as: IconComponent,\n      className: classes.icon,\n      ownerState: ownerState\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_Menu_Menu__WEBPACK_IMPORTED_MODULE_15__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      id: `menu-${name || ''}`,\n      anchorEl: anchorElement,\n      open: open,\n      onClose: handleClose,\n      anchorOrigin: {\n        vertical: 'bottom',\n        horizontal: 'center'\n      },\n      transformOrigin: {\n        vertical: 'top',\n        horizontal: 'center'\n      }\n    }, MenuProps, {\n      MenuListProps: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n        'aria-labelledby': labelId,\n        role: 'listbox',\n        disableListWrap: true\n      }, MenuProps.MenuListProps),\n      PaperProps: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, MenuProps.PaperProps, {\n        style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n          minWidth: menuMinWidth\n        }, MenuProps.PaperProps != null ? MenuProps.PaperProps.style : null)\n      }),\n      children: items\n    }))]\n  });\n});\n true ? SelectInput.propTypes = {\n  /**\n   * @ignore\n   */\n  'aria-describedby': (prop_types__WEBPACK_IMPORTED_MODULE_16___default().string),\n  /**\n   * @ignore\n   */\n  'aria-label': (prop_types__WEBPACK_IMPORTED_MODULE_16___default().string),\n  /**\n   * @ignore\n   */\n  autoFocus: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().bool),\n  /**\n   * If `true`, the width of the popover will automatically be set according to the items inside the\n   * menu, otherwise it will be at least the width of the select input.\n   */\n  autoWidth: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().bool),\n  /**\n   * The option elements to populate the select with.\n   * Can be some `<MenuItem>` elements.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().object),\n  /**\n   * The CSS class name of the select element.\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().string),\n  /**\n   * If `true`, the component is toggled on mount. Use when the component open state is not controlled.\n   * You can only use it when the `native` prop is `false` (default).\n   */\n  defaultOpen: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().bool),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().any),\n  /**\n   * If `true`, the select is disabled.\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().bool),\n  /**\n   * If `true`, the selected item is displayed even if its value is empty.\n   */\n  displayEmpty: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().bool),\n  /**\n   * The icon that displays the arrow.\n   */\n  IconComponent: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().elementType.isRequired),\n  /**\n   * Imperative handle implementing `{ value: T, node: HTMLElement, focus(): void }`\n   * Equivalent to `ref`\n   */\n  inputRef: _mui_utils__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n  /**\n   * The ID of an element that acts as an additional label. The Select will\n   * be labelled by the additional label and the selected value.\n   */\n  labelId: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().string),\n  /**\n   * Props applied to the [`Menu`](/material-ui/api/menu/) element.\n   */\n  MenuProps: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().object),\n  /**\n   * If `true`, `value` must be an array and the menu will support multiple selections.\n   */\n  multiple: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().bool),\n  /**\n   * Name attribute of the `select` or hidden `input` element.\n   */\n  name: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().string),\n  /**\n   * @ignore\n   */\n  onBlur: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().func),\n  /**\n   * Callback fired when a menu item is selected.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (any).\n   * @param {object} [child] The react element that was selected.\n   */\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().func),\n  /**\n   * Callback fired when the component requests to be closed.\n   * Use in controlled mode (see open).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onClose: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().func),\n  /**\n   * @ignore\n   */\n  onFocus: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().func),\n  /**\n   * Callback fired when the component requests to be opened.\n   * Use in controlled mode (see open).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onOpen: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().func),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().bool),\n  /**\n   * @ignore\n   */\n  readOnly: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().bool),\n  /**\n   * Render the selected value.\n   *\n   * @param {any} value The `value` provided to the component.\n   * @returns {ReactNode}\n   */\n  renderValue: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().func),\n  /**\n   * Props applied to the clickable div element.\n   */\n  SelectDisplayProps: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().object),\n  /**\n   * @ignore\n   */\n  tabIndex: prop_types__WEBPACK_IMPORTED_MODULE_16___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_16___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_16___default().string)]),\n  /**\n   * @ignore\n   */\n  type: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().any),\n  /**\n   * The input value.\n   */\n  value: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().any),\n  /**\n   * The variant to use.\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_16___default().oneOf(['standard', 'outlined', 'filled'])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (SelectInput);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Select/SelectInput.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Select/index.js":
/*!****************************************************!*\
  !*** ./node_modules/@mui/material/Select/index.js ***!
  \****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _Select__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getSelectUtilityClasses\": function() { return /* reexport safe */ _selectClasses__WEBPACK_IMPORTED_MODULE_1__.getSelectUtilityClasses; },\n/* harmony export */   \"selectClasses\": function() { return /* reexport safe */ _selectClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _Select__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Select */ \"./node_modules/@mui/material/Select/Select.js\");\n/* harmony import */ var _selectClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./selectClasses */ \"./node_modules/@mui/material/Select/selectClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Select/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Select/selectClasses.js":
/*!************************************************************!*\
  !*** ./node_modules/@mui/material/Select/selectClasses.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getSelectUtilityClasses\": function() { return /* binding */ getSelectUtilityClasses; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getSelectUtilityClasses(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiSelect', slot);\n}\nconst selectClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiSelect', ['select', 'multiple', 'filled', 'outlined', 'standard', 'disabled', 'focused', 'icon', 'iconOpen', 'iconFilled', 'iconOutlined', 'iconStandard', 'nativeInput']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (selectClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Select/selectClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Stack/Stack.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/material/Stack/Stack.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"style\": function() { return /* binding */ style; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/breakpoints.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/spacing.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/deepmerge.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"component\", \"direction\", \"spacing\", \"divider\", \"children\"];\n\n\n\n\n\n\n\n/**\n * Return an array with the separator React element interspersed between\n * each React node of the input children.\n *\n * > joinChildren([1,2,3], 0)\n * [1,0,2,0,3]\n */\n\nfunction joinChildren(children, separator) {\n  const childrenArray = react__WEBPACK_IMPORTED_MODULE_2__.Children.toArray(children).filter(Boolean);\n  return childrenArray.reduce((output, child, index) => {\n    output.push(child);\n    if (index < childrenArray.length - 1) {\n      output.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(separator, {\n        key: `separator-${index}`\n      }));\n    }\n    return output;\n  }, []);\n}\nconst getSideFromDirection = direction => {\n  return {\n    row: 'Left',\n    'row-reverse': 'Right',\n    column: 'Top',\n    'column-reverse': 'Bottom'\n  }[direction];\n};\nconst style = ({\n  ownerState,\n  theme\n}) => {\n  let styles = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    display: 'flex',\n    flexDirection: 'column'\n  }, (0,_mui_system__WEBPACK_IMPORTED_MODULE_4__.handleBreakpoints)({\n    theme\n  }, (0,_mui_system__WEBPACK_IMPORTED_MODULE_4__.resolveBreakpointValues)({\n    values: ownerState.direction,\n    breakpoints: theme.breakpoints.values\n  }), propValue => ({\n    flexDirection: propValue\n  })));\n  if (ownerState.spacing) {\n    const transformer = (0,_mui_system__WEBPACK_IMPORTED_MODULE_5__.createUnarySpacing)(theme);\n    const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {\n      if (typeof ownerState.spacing === 'object' && ownerState.spacing[breakpoint] != null || typeof ownerState.direction === 'object' && ownerState.direction[breakpoint] != null) {\n        acc[breakpoint] = true;\n      }\n      return acc;\n    }, {});\n    const directionValues = (0,_mui_system__WEBPACK_IMPORTED_MODULE_4__.resolveBreakpointValues)({\n      values: ownerState.direction,\n      base\n    });\n    const spacingValues = (0,_mui_system__WEBPACK_IMPORTED_MODULE_4__.resolveBreakpointValues)({\n      values: ownerState.spacing,\n      base\n    });\n    if (typeof directionValues === 'object') {\n      Object.keys(directionValues).forEach((breakpoint, index, breakpoints) => {\n        const directionValue = directionValues[breakpoint];\n        if (!directionValue) {\n          const previousDirectionValue = index > 0 ? directionValues[breakpoints[index - 1]] : 'column';\n          directionValues[breakpoint] = previousDirectionValue;\n        }\n      });\n    }\n    const styleFromPropValue = (propValue, breakpoint) => {\n      return {\n        '& > :not(style) + :not(style)': {\n          margin: 0,\n          [`margin${getSideFromDirection(breakpoint ? directionValues[breakpoint] : ownerState.direction)}`]: (0,_mui_system__WEBPACK_IMPORTED_MODULE_5__.getValue)(transformer, propValue)\n        }\n      };\n    };\n    styles = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(styles, (0,_mui_system__WEBPACK_IMPORTED_MODULE_4__.handleBreakpoints)({\n      theme\n    }, spacingValues, styleFromPropValue));\n  }\n  styles = (0,_mui_system__WEBPACK_IMPORTED_MODULE_4__.mergeBreakpointsInOrder)(theme.breakpoints, styles);\n  return styles;\n};\nconst StackRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('div', {\n  name: 'MuiStack',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    return [styles.root];\n  }\n})(style);\nconst Stack = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Stack(inProps, ref) {\n  const themeProps = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n    props: inProps,\n    name: 'MuiStack'\n  });\n  const props = (0,_mui_system__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(themeProps);\n  const {\n      component = 'div',\n      direction = 'column',\n      spacing = 0,\n      divider,\n      children\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = {\n    direction,\n    spacing\n  };\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(StackRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    as: component,\n    ownerState: ownerState,\n    ref: ref\n  }, other, {\n    children: divider ? joinChildren(children, divider) : children\n  }));\n});\n true ? Stack.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().node),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType),\n  /**\n   * Defines the `flex-direction` style property.\n   * It is applied for all screen sizes.\n   * @default 'column'\n   */\n  direction: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOf(['column-reverse', 'column', 'row-reverse', 'row']), prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)]),\n  /**\n   * Add an element between each child.\n   */\n  divider: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().node),\n  /**\n   * Defines the space between immediate children.\n   * @default 0\n   */\n  spacing: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string)])), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string)]),\n  /**\n   * The system prop, which allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Stack);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Stack/Stack.js?");

/***/ }),

/***/ "./node_modules/@mui/material/SvgIcon/SvgIcon.js":
/*!*******************************************************!*\
  !*** ./node_modules/@mui/material/SvgIcon/SvgIcon.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _svgIconClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./svgIconClasses */ \"./node_modules/@mui/material/SvgIcon/svgIconClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"inheritViewBox\", \"titleAccess\", \"viewBox\"];\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    fontSize,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', color !== 'inherit' && `color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`, `fontSize${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(fontSize)}`]\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _svgIconClasses__WEBPACK_IMPORTED_MODULE_7__.getSvgIconUtilityClass, classes);\n};\nconst SvgIconRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('svg', {\n  name: 'MuiSvgIcon',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.color !== 'inherit' && styles[`color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.color)}`], styles[`fontSize${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.fontSize)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  var _theme$transitions, _theme$transitions$cr, _theme$transitions2, _theme$transitions2$d, _theme$typography, _theme$typography$pxT, _theme$typography2, _theme$typography2$px, _theme$typography3, _theme$typography3$px, _palette$ownerState$c, _palette, _palette$ownerState$c2, _palette2, _palette2$action, _palette3, _palette3$action;\n  return {\n    userSelect: 'none',\n    width: '1em',\n    height: '1em',\n    display: 'inline-block',\n    fill: 'currentColor',\n    flexShrink: 0,\n    transition: (_theme$transitions = theme.transitions) == null ? void 0 : (_theme$transitions$cr = _theme$transitions.create) == null ? void 0 : _theme$transitions$cr.call(_theme$transitions, 'fill', {\n      duration: (_theme$transitions2 = theme.transitions) == null ? void 0 : (_theme$transitions2$d = _theme$transitions2.duration) == null ? void 0 : _theme$transitions2$d.shorter\n    }),\n    fontSize: {\n      inherit: 'inherit',\n      small: ((_theme$typography = theme.typography) == null ? void 0 : (_theme$typography$pxT = _theme$typography.pxToRem) == null ? void 0 : _theme$typography$pxT.call(_theme$typography, 20)) || '1.25rem',\n      medium: ((_theme$typography2 = theme.typography) == null ? void 0 : (_theme$typography2$px = _theme$typography2.pxToRem) == null ? void 0 : _theme$typography2$px.call(_theme$typography2, 24)) || '1.5rem',\n      large: ((_theme$typography3 = theme.typography) == null ? void 0 : (_theme$typography3$px = _theme$typography3.pxToRem) == null ? void 0 : _theme$typography3$px.call(_theme$typography3, 35)) || '2.1875rem'\n    }[ownerState.fontSize],\n    // TODO v5 deprecate, v6 remove for sx\n    color: (_palette$ownerState$c = (_palette = (theme.vars || theme).palette) == null ? void 0 : (_palette$ownerState$c2 = _palette[ownerState.color]) == null ? void 0 : _palette$ownerState$c2.main) != null ? _palette$ownerState$c : {\n      action: (_palette2 = (theme.vars || theme).palette) == null ? void 0 : (_palette2$action = _palette2.action) == null ? void 0 : _palette2$action.active,\n      disabled: (_palette3 = (theme.vars || theme).palette) == null ? void 0 : (_palette3$action = _palette3.action) == null ? void 0 : _palette3$action.disabled,\n      inherit: undefined\n    }[ownerState.color]\n  };\n});\nconst SvgIcon = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function SvgIcon(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({\n    props: inProps,\n    name: 'MuiSvgIcon'\n  });\n  const {\n      children,\n      className,\n      color = 'inherit',\n      component = 'svg',\n      fontSize = 'medium',\n      htmlColor,\n      inheritViewBox = false,\n      titleAccess,\n      viewBox = '0 0 24 24'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n    color,\n    component,\n    fontSize,\n    instanceFontSize: inProps.fontSize,\n    inheritViewBox,\n    viewBox\n  });\n  const more = {};\n  if (!inheritViewBox) {\n    more.viewBox = viewBox;\n  }\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(SvgIconRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    as: component,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    focusable: \"false\",\n    color: htmlColor,\n    \"aria-hidden\": titleAccess ? undefined : true,\n    role: titleAccess ? 'img' : undefined,\n    ref: ref\n  }, more, other, {\n    ownerState: ownerState,\n    children: [children, titleAccess ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"title\", {\n      children: titleAccess\n    }) : null]\n  }));\n});\n true ? SvgIcon.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Node passed into the SVG element.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n   * @default 'inherit'\n   */\n  color: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string)]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType),\n  /**\n   * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n   * @default 'medium'\n   */\n  fontSize: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOf(['inherit', 'large', 'medium', 'small']), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string)]),\n  /**\n   * Applies a color attribute to the SVG element.\n   */\n  htmlColor: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * If `true`, the root node will inherit the custom `component`'s viewBox and the `viewBox`\n   * prop will be ignored.\n   * Useful when you want to reference a custom `component` and have `SvgIcon` pass that\n   * `component`'s viewBox to the root node.\n   * @default false\n   */\n  inheritViewBox: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * The shape-rendering attribute. The behavior of the different options is described on the\n   * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n   * If you are having issues with blurry icons you should investigate this prop.\n   */\n  shapeRendering: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)]),\n  /**\n   * Provides a human-readable title for the element that contains it.\n   * https://www.w3.org/TR/SVG-access/#Equivalent\n   */\n  titleAccess: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * Allows you to redefine what the coordinates without units mean inside an SVG element.\n   * For example, if the SVG element is 500 (width) by 200 (height),\n   * and you pass viewBox=\"0 0 50 20\",\n   * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n   * to bottom right (50,20) and each unit will be worth 10px.\n   * @default '0 0 24 24'\n   */\n  viewBox: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string)\n} : 0;\nSvgIcon.muiName = 'SvgIcon';\n/* harmony default export */ __webpack_exports__[\"default\"] = (SvgIcon);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/SvgIcon/SvgIcon.js?");

/***/ }),

/***/ "./node_modules/@mui/material/SvgIcon/svgIconClasses.js":
/*!**************************************************************!*\
  !*** ./node_modules/@mui/material/SvgIcon/svgIconClasses.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getSvgIconUtilityClass\": function() { return /* binding */ getSvgIconUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getSvgIconUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiSvgIcon', slot);\n}\nconst svgIconClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiSvgIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (svgIconClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/SvgIcon/svgIconClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Switch/Switch.js":
/*!*****************************************************!*\
  !*** ./node_modules/@mui/material/Switch/Switch.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/refType.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/colorManipulator.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _internal_SwitchBase__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../internal/SwitchBase */ \"./node_modules/@mui/material/internal/SwitchBase.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _switchClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./switchClasses */ \"./node_modules/@mui/material/Switch/switchClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"className\", \"color\", \"edge\", \"size\", \"sx\"];\n// @inheritedComponent IconButton\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    edge,\n    size,\n    color,\n    checked,\n    disabled\n  } = ownerState;\n  const slots = {\n    root: ['root', edge && `edge${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(edge)}`, `size${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`],\n    switchBase: ['switchBase', `color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color)}`, checked && 'checked', disabled && 'disabled'],\n    thumb: ['thumb'],\n    track: ['track'],\n    input: ['input']\n  };\n  const composedClasses = (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _switchClasses__WEBPACK_IMPORTED_MODULE_7__.getSwitchUtilityClass, classes);\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, classes, composedClasses);\n};\nconst SwitchRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('span', {\n  name: 'MuiSwitch',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.edge && styles[`edge${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.edge)}`], styles[`size${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.size)}`]];\n  }\n})(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  display: 'inline-flex',\n  width: 34 + 12 * 2,\n  height: 14 + 12 * 2,\n  overflow: 'hidden',\n  padding: 12,\n  boxSizing: 'border-box',\n  position: 'relative',\n  flexShrink: 0,\n  zIndex: 0,\n  // Reset the stacking context.\n  verticalAlign: 'middle',\n  // For correct alignment with the text.\n  '@media print': {\n    colorAdjust: 'exact'\n  }\n}, ownerState.edge === 'start' && {\n  marginLeft: -8\n}, ownerState.edge === 'end' && {\n  marginRight: -8\n}, ownerState.size === 'small' && {\n  width: 40,\n  height: 24,\n  padding: 7,\n  [`& .${_switchClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].thumb}`]: {\n    width: 16,\n    height: 16\n  },\n  [`& .${_switchClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].switchBase}`]: {\n    padding: 4,\n    [`&.${_switchClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].checked}`]: {\n      transform: 'translateX(16px)'\n    }\n  }\n}));\nconst SwitchSwitchBase = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_internal_SwitchBase__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n  name: 'MuiSwitch',\n  slot: 'SwitchBase',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.switchBase, {\n      [`& .${_switchClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].input}`]: styles.input\n    }, ownerState.color !== 'default' && styles[`color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.color)}`]];\n  }\n})(({\n  theme\n}) => ({\n  position: 'absolute',\n  top: 0,\n  left: 0,\n  zIndex: 1,\n  // Render above the focus ripple.\n  color: theme.vars ? theme.vars.palette.Switch.defaultColor : `${theme.palette.mode === 'light' ? theme.palette.common.white : theme.palette.grey[300]}`,\n  transition: theme.transitions.create(['left', 'transform'], {\n    duration: theme.transitions.duration.shortest\n  }),\n  [`&.${_switchClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].checked}`]: {\n    transform: 'translateX(20px)'\n  },\n  [`&.${_switchClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n    color: theme.vars ? theme.vars.palette.Switch.defaultDisabledColor : `${theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[600]}`\n  },\n  [`&.${_switchClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].checked} + .${_switchClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].track}`]: {\n    opacity: 0.5\n  },\n  [`&.${_switchClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled} + .${_switchClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].track}`]: {\n    opacity: theme.vars ? theme.vars.opacity.switchTrackDisabled : `${theme.palette.mode === 'light' ? 0.12 : 0.2}`\n  },\n  [`& .${_switchClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].input}`]: {\n    left: '-100%',\n    width: '300%'\n  }\n}), ({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_10__.alpha)(theme.palette.action.active, theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  }\n}, ownerState.color !== 'default' && {\n  [`&.${_switchClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].checked}`]: {\n    color: (theme.vars || theme).palette[ownerState.color].main,\n    '&:hover': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_10__.alpha)(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    },\n    [`&.${_switchClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n      color: theme.vars ? theme.vars.palette.Switch[`${ownerState.color}DisabledColor`] : `${theme.palette.mode === 'light' ? (0,_mui_system__WEBPACK_IMPORTED_MODULE_10__.lighten)(theme.palette[ownerState.color].main, 0.62) : (0,_mui_system__WEBPACK_IMPORTED_MODULE_10__.darken)(theme.palette[ownerState.color].main, 0.55)}`\n    }\n  },\n  [`&.${_switchClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].checked} + .${_switchClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].track}`]: {\n    backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n  }\n}));\nconst SwitchTrack = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('span', {\n  name: 'MuiSwitch',\n  slot: 'Track',\n  overridesResolver: (props, styles) => styles.track\n})(({\n  theme\n}) => ({\n  height: '100%',\n  width: '100%',\n  borderRadius: 14 / 2,\n  zIndex: -1,\n  transition: theme.transitions.create(['opacity', 'background-color'], {\n    duration: theme.transitions.duration.shortest\n  }),\n  backgroundColor: theme.vars ? theme.vars.palette.common.onBackground : `${theme.palette.mode === 'light' ? theme.palette.common.black : theme.palette.common.white}`,\n  opacity: theme.vars ? theme.vars.opacity.switchTrack : `${theme.palette.mode === 'light' ? 0.38 : 0.3}`\n}));\nconst SwitchThumb = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('span', {\n  name: 'MuiSwitch',\n  slot: 'Thumb',\n  overridesResolver: (props, styles) => styles.thumb\n})(({\n  theme\n}) => ({\n  boxShadow: (theme.vars || theme).shadows[1],\n  backgroundColor: 'currentColor',\n  width: 20,\n  height: 20,\n  borderRadius: '50%'\n}));\nconst Switch = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Switch(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_11__[\"default\"])({\n    props: inProps,\n    name: 'MuiSwitch'\n  });\n  const {\n      className,\n      color = 'primary',\n      edge = false,\n      size = 'medium',\n      sx\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    color,\n    edge,\n    size\n  });\n  const classes = useUtilityClasses(ownerState);\n  const icon = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(SwitchThumb, {\n    className: classes.thumb,\n    ownerState: ownerState\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(SwitchRoot, {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    sx: sx,\n    ownerState: ownerState,\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(SwitchSwitchBase, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      type: \"checkbox\",\n      icon: icon,\n      checkedIcon: icon,\n      ref: ref,\n      ownerState: ownerState\n    }, other, {\n      classes: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, classes, {\n        root: classes.switchBase\n      })\n    })), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(SwitchTrack, {\n      className: classes.track,\n      ownerState: ownerState\n    })]\n  });\n});\n true ? Switch.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * The icon to display when the component is checked.\n   */\n  checkedIcon: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string),\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'primary'\n   */\n  color: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string)]),\n  /**\n   * The default checked state. Use when the component is not controlled.\n   */\n  defaultChecked: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `true`, the ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If given, uses a negative margin to counteract the padding on one\n   * side (this is often helpful for aligning the left or right\n   * side of the icon with content above or below, without ruining the border\n   * size and shape).\n   * @default false\n   */\n  edge: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOf(['end', 'start', false]),\n  /**\n   * The icon to display when the component is unchecked.\n   */\n  icon: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().node),\n  /**\n   * The id of the `input` element.\n   */\n  id: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string),\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object),\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: _mui_utils__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func),\n  /**\n   * If `true`, the `input` element is required.\n   * @default false\n   */\n  required: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense switch styling.\n   * @default 'medium'\n   */\n  size: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOf(['medium', 'small']), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string)]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_12___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_12___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object)]),\n  /**\n   * The value of the component. The DOM API casts this to a string.\n   * The browser uses \"on\" as the default value.\n   */\n  value: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().any)\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Switch);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Switch/Switch.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Switch/switchClasses.js":
/*!************************************************************!*\
  !*** ./node_modules/@mui/material/Switch/switchClasses.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getSwitchUtilityClass\": function() { return /* binding */ getSwitchUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getSwitchUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiSwitch', slot);\n}\nconst switchClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiSwitch', ['root', 'edgeStart', 'edgeEnd', 'switchBase', 'colorPrimary', 'colorSecondary', 'sizeSmall', 'sizeMedium', 'checked', 'disabled', 'input', 'thumb', 'track']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (switchClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Switch/switchClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Tab/Tab.js":
/*!***********************************************!*\
  !*** ./node_modules/@mui/material/Tab/Tab.js ***!
  \***********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _ButtonBase__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../ButtonBase */ \"./node_modules/@mui/material/ButtonBase/ButtonBase.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _utils_unsupportedProp__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/unsupportedProp */ \"./node_modules/@mui/material/utils/unsupportedProp.js\");\n/* harmony import */ var _tabClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./tabClasses */ \"./node_modules/@mui/material/Tab/tabClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"className\", \"disabled\", \"disableFocusRipple\", \"fullWidth\", \"icon\", \"iconPosition\", \"indicator\", \"label\", \"onChange\", \"onClick\", \"onFocus\", \"selected\", \"selectionFollowsFocus\", \"textColor\", \"value\", \"wrapped\"];\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    textColor,\n    fullWidth,\n    wrapped,\n    icon,\n    label,\n    selected,\n    disabled\n  } = ownerState;\n  const slots = {\n    root: ['root', icon && label && 'labelIcon', `textColor${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(textColor)}`, fullWidth && 'fullWidth', wrapped && 'wrapped', selected && 'selected', disabled && 'disabled'],\n    iconWrapper: ['iconWrapper']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _tabClasses__WEBPACK_IMPORTED_MODULE_7__.getTabUtilityClass, classes);\n};\nconst TabRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_ButtonBase__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n  name: 'MuiTab',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.label && ownerState.icon && styles.labelIcon, styles[`textColor${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.textColor)}`], ownerState.fullWidth && styles.fullWidth, ownerState.wrapped && styles.wrapped];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, theme.typography.button, {\n  maxWidth: 360,\n  minWidth: 90,\n  position: 'relative',\n  minHeight: 48,\n  flexShrink: 0,\n  padding: '12px 16px',\n  overflow: 'hidden',\n  whiteSpace: 'normal',\n  textAlign: 'center'\n}, ownerState.label && {\n  flexDirection: ownerState.iconPosition === 'top' || ownerState.iconPosition === 'bottom' ? 'column' : 'row'\n}, {\n  lineHeight: 1.25\n}, ownerState.icon && ownerState.label && {\n  minHeight: 72,\n  paddingTop: 9,\n  paddingBottom: 9,\n  [`& > .${_tabClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].iconWrapper}`]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState.iconPosition === 'top' && {\n    marginBottom: 6\n  }, ownerState.iconPosition === 'bottom' && {\n    marginTop: 6\n  }, ownerState.iconPosition === 'start' && {\n    marginRight: theme.spacing(1)\n  }, ownerState.iconPosition === 'end' && {\n    marginLeft: theme.spacing(1)\n  })\n}, ownerState.textColor === 'inherit' && {\n  color: 'inherit',\n  opacity: 0.6,\n  // same opacity as theme.palette.text.secondary\n  [`&.${_tabClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].selected}`]: {\n    opacity: 1\n  },\n  [`&.${_tabClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity\n  }\n}, ownerState.textColor === 'primary' && {\n  color: (theme.vars || theme).palette.text.secondary,\n  [`&.${_tabClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].selected}`]: {\n    color: (theme.vars || theme).palette.primary.main\n  },\n  [`&.${_tabClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n    color: (theme.vars || theme).palette.text.disabled\n  }\n}, ownerState.textColor === 'secondary' && {\n  color: (theme.vars || theme).palette.text.secondary,\n  [`&.${_tabClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].selected}`]: {\n    color: (theme.vars || theme).palette.secondary.main\n  },\n  [`&.${_tabClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled}`]: {\n    color: (theme.vars || theme).palette.text.disabled\n  }\n}, ownerState.fullWidth && {\n  flexShrink: 1,\n  flexGrow: 1,\n  flexBasis: 0,\n  maxWidth: 'none'\n}, ownerState.wrapped && {\n  fontSize: theme.typography.pxToRem(12)\n}));\nconst Tab = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Tab(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__[\"default\"])({\n    props: inProps,\n    name: 'MuiTab'\n  });\n  const {\n      className,\n      disabled = false,\n      disableFocusRipple = false,\n      // eslint-disable-next-line react/prop-types\n      fullWidth,\n      icon: iconProp,\n      iconPosition = 'top',\n      // eslint-disable-next-line react/prop-types\n      indicator,\n      label,\n      onChange,\n      onClick,\n      onFocus,\n      // eslint-disable-next-line react/prop-types\n      selected,\n      // eslint-disable-next-line react/prop-types\n      selectionFollowsFocus,\n      // eslint-disable-next-line react/prop-types\n      textColor = 'inherit',\n      value,\n      wrapped = false\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    disabled,\n    disableFocusRipple,\n    selected,\n    icon: !!iconProp,\n    iconPosition,\n    label: !!label,\n    fullWidth,\n    textColor,\n    wrapped\n  });\n  const classes = useUtilityClasses(ownerState);\n  const icon = iconProp && label && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.isValidElement(iconProp) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(iconProp, {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.iconWrapper, iconProp.props.className)\n  }) : iconProp;\n  const handleClick = event => {\n    if (!selected && onChange) {\n      onChange(event, value);\n    }\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  const handleFocus = event => {\n    if (selectionFollowsFocus && !selected && onChange) {\n      onChange(event, value);\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  };\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(TabRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    focusRipple: !disableFocusRipple,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    ref: ref,\n    role: \"tab\",\n    \"aria-selected\": selected,\n    disabled: disabled,\n    onClick: handleClick,\n    onFocus: handleFocus,\n    ownerState: ownerState,\n    tabIndex: selected ? 0 : -1\n  }, other, {\n    children: [iconPosition === 'top' || iconPosition === 'start' ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n      children: [icon, label]\n    }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n      children: [label, icon]\n    }), indicator]\n  }));\n});\n true ? Tab.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * This prop isn't supported.\n   * Use the `component` prop if you need to change the children structure.\n   */\n  children: _utils_unsupportedProp__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * The icon to display.\n   */\n  icon: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_12___default().element), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string)]),\n  /**\n   * The position of the icon relative to the label.\n   * @default 'top'\n   */\n  iconPosition: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOf(['bottom', 'end', 'start', 'top']),\n  /**\n   * The label element.\n   */\n  label: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().node),\n  /**\n   * @ignore\n   */\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func),\n  /**\n   * @ignore\n   */\n  onClick: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func),\n  /**\n   * @ignore\n   */\n  onFocus: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_12___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_12___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object)]),\n  /**\n   * You can provide your own value. Otherwise, we fallback to the child position index.\n   */\n  value: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().any),\n  /**\n   * Tab labels appear in a single row.\n   * They can use a second line if needed.\n   * @default false\n   */\n  wrapped: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool)\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Tab);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Tab/Tab.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Tab/tabClasses.js":
/*!******************************************************!*\
  !*** ./node_modules/@mui/material/Tab/tabClasses.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTabUtilityClass\": function() { return /* binding */ getTabUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getTabUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiTab', slot);\n}\nconst tabClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiTab', ['root', 'labelIcon', 'textColorInherit', 'textColorPrimary', 'textColorSecondary', 'selected', 'disabled', 'fullWidth', 'wrapped', 'iconWrapper']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (tabClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Tab/tabClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TabScrollButton/TabScrollButton.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@mui/material/TabScrollButton/TabScrollButton.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _internal_svg_icons_KeyboardArrowLeft__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../internal/svg-icons/KeyboardArrowLeft */ \"./node_modules/@mui/material/internal/svg-icons/KeyboardArrowLeft.js\");\n/* harmony import */ var _internal_svg_icons_KeyboardArrowRight__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../internal/svg-icons/KeyboardArrowRight */ \"./node_modules/@mui/material/internal/svg-icons/KeyboardArrowRight.js\");\n/* harmony import */ var _ButtonBase__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ButtonBase */ \"./node_modules/@mui/material/ButtonBase/ButtonBase.js\");\n/* harmony import */ var _styles_useTheme__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../styles/useTheme */ \"./node_modules/@mui/material/styles/useTheme.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _tabScrollButtonClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tabScrollButtonClasses */ \"./node_modules/@mui/material/TabScrollButton/tabScrollButtonClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nvar _KeyboardArrowLeft, _KeyboardArrowRight;\nconst _excluded = [\"className\", \"direction\", \"orientation\", \"disabled\"];\n/* eslint-disable jsx-a11y/aria-role */\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    orientation,\n    disabled\n  } = ownerState;\n  const slots = {\n    root: ['root', orientation, disabled && 'disabled']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _tabScrollButtonClasses__WEBPACK_IMPORTED_MODULE_6__.getTabScrollButtonUtilityClass, classes);\n};\nconst TabScrollButtonRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_ButtonBase__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n  name: 'MuiTabScrollButton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.orientation && styles[ownerState.orientation]];\n  }\n})(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  width: 40,\n  flexShrink: 0,\n  opacity: 0.8,\n  [`&.${_tabScrollButtonClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].disabled}`]: {\n    opacity: 0\n  }\n}, ownerState.orientation === 'vertical' && {\n  width: '100%',\n  height: 40,\n  '& svg': {\n    transform: `rotate(${ownerState.isRtl ? -90 : 90}deg)`\n  }\n}));\nconst TabScrollButton = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function TabScrollButton(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({\n    props: inProps,\n    name: 'MuiTabScrollButton'\n  });\n  const {\n      className,\n      direction\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const theme = (0,_styles_useTheme__WEBPACK_IMPORTED_MODULE_10__[\"default\"])();\n  const isRtl = theme.direction === 'rtl';\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    isRtl\n  }, props);\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TabScrollButtonRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    component: \"div\",\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    ref: ref,\n    role: null,\n    ownerState: ownerState,\n    tabIndex: null\n  }, other, {\n    children: direction === 'left' ? _KeyboardArrowLeft || (_KeyboardArrowLeft = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_internal_svg_icons_KeyboardArrowLeft__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n      fontSize: \"small\"\n    })) : _KeyboardArrowRight || (_KeyboardArrowRight = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_internal_svg_icons_KeyboardArrowRight__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n      fontSize: \"small\"\n    }))\n  }));\n});\n true ? TabScrollButton.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string),\n  /**\n   * The direction the button should indicate.\n   */\n  direction: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['left', 'right']).isRequired,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n  /**\n   * The component orientation (layout flow direction).\n   */\n  orientation: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['horizontal', 'vertical']).isRequired,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_13___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (TabScrollButton);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TabScrollButton/TabScrollButton.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TabScrollButton/tabScrollButtonClasses.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@mui/material/TabScrollButton/tabScrollButtonClasses.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTabScrollButtonUtilityClass\": function() { return /* binding */ getTabScrollButtonUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getTabScrollButtonUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiTabScrollButton', slot);\n}\nconst tabScrollButtonClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiTabScrollButton', ['root', 'vertical', 'horizontal', 'disabled']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (tabScrollButtonClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TabScrollButton/tabScrollButtonClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Table/Table.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/material/Table/Table.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _TableContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./TableContext */ \"./node_modules/@mui/material/Table/TableContext.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _tableClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tableClasses */ \"./node_modules/@mui/material/Table/tableClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"className\", \"component\", \"padding\", \"size\", \"stickyHeader\"];\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    stickyHeader\n  } = ownerState;\n  const slots = {\n    root: ['root', stickyHeader && 'stickyHeader']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _tableClasses__WEBPACK_IMPORTED_MODULE_6__.getTableUtilityClass, classes);\n};\nconst TableRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('table', {\n  name: 'MuiTable',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.stickyHeader && styles.stickyHeader];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  display: 'table',\n  width: '100%',\n  borderCollapse: 'collapse',\n  borderSpacing: 0,\n  '& caption': (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, theme.typography.body2, {\n    padding: theme.spacing(2),\n    color: (theme.vars || theme).palette.text.secondary,\n    textAlign: 'left',\n    captionSide: 'bottom'\n  })\n}, ownerState.stickyHeader && {\n  borderCollapse: 'separate'\n}));\nconst defaultComponent = 'table';\nconst Table = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Table(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n    props: inProps,\n    name: 'MuiTable'\n  });\n  const {\n      className,\n      component = defaultComponent,\n      padding = 'normal',\n      size = 'medium',\n      stickyHeader = false\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    component,\n    padding,\n    size,\n    stickyHeader\n  });\n  const classes = useUtilityClasses(ownerState);\n  const table = react__WEBPACK_IMPORTED_MODULE_2__.useMemo(() => ({\n    padding,\n    size,\n    stickyHeader\n  }), [padding, size, stickyHeader]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_TableContext__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Provider, {\n    value: table,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TableRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      as: component,\n      role: component === defaultComponent ? null : 'table',\n      ref: ref,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n      ownerState: ownerState\n    }, other))\n  });\n});\n true ? Table.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the table, normally `TableHead` and `TableBody`.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType),\n  /**\n   * Allows TableCells to inherit padding of the Table.\n   * @default 'normal'\n   */\n  padding: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOf(['checkbox', 'none', 'normal']),\n  /**\n   * Allows TableCells to inherit size of the Table.\n   * @default 'medium'\n   */\n  size: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOf(['medium', 'small']), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string)]),\n  /**\n   * Set the header sticky.\n   *\n   * ⚠️ It doesn't work with IE11.\n   * @default false\n   */\n  stickyHeader: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Table);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Table/Table.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Table/TableContext.js":
/*!**********************************************************!*\
  !*** ./node_modules/@mui/material/Table/TableContext.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/**\n * @ignore - internal component.\n */\nconst TableContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext();\nif (true) {\n  TableContext.displayName = 'TableContext';\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (TableContext);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Table/TableContext.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Table/Tablelvl2Context.js":
/*!**************************************************************!*\
  !*** ./node_modules/@mui/material/Table/Tablelvl2Context.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/**\n * @ignore - internal component.\n */\nconst Tablelvl2Context = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext();\nif (true) {\n  Tablelvl2Context.displayName = 'Tablelvl2Context';\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (Tablelvl2Context);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Table/Tablelvl2Context.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Table/index.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/material/Table/index.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _Table__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getTableUtilityClass\": function() { return /* reexport safe */ _tableClasses__WEBPACK_IMPORTED_MODULE_1__.getTableUtilityClass; },\n/* harmony export */   \"tableClasses\": function() { return /* reexport safe */ _tableClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _Table__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Table */ \"./node_modules/@mui/material/Table/Table.js\");\n/* harmony import */ var _tableClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tableClasses */ \"./node_modules/@mui/material/Table/tableClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Table/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Table/tableClasses.js":
/*!**********************************************************!*\
  !*** ./node_modules/@mui/material/Table/tableClasses.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTableUtilityClass\": function() { return /* binding */ getTableUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getTableUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiTable', slot);\n}\nconst tableClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiTable', ['root', 'stickyHeader']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (tableClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Table/tableClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableBody/TableBody.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/material/TableBody/TableBody.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _Table_Tablelvl2Context__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Table/Tablelvl2Context */ \"./node_modules/@mui/material/Table/Tablelvl2Context.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _tableBodyClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tableBodyClasses */ \"./node_modules/@mui/material/TableBody/tableBodyClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"className\", \"component\"];\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _tableBodyClasses__WEBPACK_IMPORTED_MODULE_6__.getTableBodyUtilityClass, classes);\n};\nconst TableBodyRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('tbody', {\n  name: 'MuiTableBody',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'table-row-group'\n});\nconst tablelvl2 = {\n  variant: 'body'\n};\nconst defaultComponent = 'tbody';\nconst TableBody = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function TableBody(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n    props: inProps,\n    name: 'MuiTableBody'\n  });\n  const {\n      className,\n      component = defaultComponent\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n    component\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_Table_Tablelvl2Context__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Provider, {\n    value: tablelvl2,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TableBodyRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n      as: component,\n      ref: ref,\n      role: component === defaultComponent ? null : 'rowgroup',\n      ownerState: ownerState\n    }, other))\n  });\n});\n true ? TableBody.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component, normally `TableRow`.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (TableBody);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableBody/TableBody.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableBody/index.js":
/*!*******************************************************!*\
  !*** ./node_modules/@mui/material/TableBody/index.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _TableBody__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getTableBodyUtilityClass\": function() { return /* reexport safe */ _tableBodyClasses__WEBPACK_IMPORTED_MODULE_1__.getTableBodyUtilityClass; },\n/* harmony export */   \"tableBodyClasses\": function() { return /* reexport safe */ _tableBodyClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _TableBody__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TableBody */ \"./node_modules/@mui/material/TableBody/TableBody.js\");\n/* harmony import */ var _tableBodyClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tableBodyClasses */ \"./node_modules/@mui/material/TableBody/tableBodyClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableBody/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableBody/tableBodyClasses.js":
/*!******************************************************************!*\
  !*** ./node_modules/@mui/material/TableBody/tableBodyClasses.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTableBodyUtilityClass\": function() { return /* binding */ getTableBodyUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getTableBodyUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiTableBody', slot);\n}\nconst tableBodyClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiTableBody', ['root']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (tableBodyClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableBody/tableBodyClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableCell/TableCell.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/material/TableCell/TableCell.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/colorManipulator.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _Table_TableContext__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Table/TableContext */ \"./node_modules/@mui/material/Table/TableContext.js\");\n/* harmony import */ var _Table_Tablelvl2Context__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../Table/Tablelvl2Context */ \"./node_modules/@mui/material/Table/Tablelvl2Context.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _tableCellClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./tableCellClasses */ \"./node_modules/@mui/material/TableCell/tableCellClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"align\", \"className\", \"component\", \"padding\", \"scope\", \"size\", \"sortDirection\", \"variant\"];\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    align,\n    padding,\n    size,\n    stickyHeader\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, stickyHeader && 'stickyHeader', align !== 'inherit' && `align${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(align)}`, padding !== 'normal' && `padding${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(padding)}`, `size${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(size)}`]\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _tableCellClasses__WEBPACK_IMPORTED_MODULE_7__.getTableCellUtilityClass, classes);\n};\nconst TableCellRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('td', {\n  name: 'MuiTableCell',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`size${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.size)}`], ownerState.padding !== 'normal' && styles[`padding${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.padding)}`], ownerState.align !== 'inherit' && styles[`align${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.align)}`], ownerState.stickyHeader && styles.stickyHeader];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, theme.typography.body2, {\n  display: 'table-cell',\n  verticalAlign: 'inherit',\n  // Workaround for a rendering bug with spanned columns in Chrome 62.0.\n  // Removes the alpha (sets it to 1), and lightens or darkens the theme color.\n  borderBottom: theme.vars ? `1px solid ${theme.vars.palette.TableCell.border}` : `1px solid\n    ${theme.palette.mode === 'light' ? (0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.lighten)((0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.alpha)(theme.palette.divider, 1), 0.88) : (0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.darken)((0,_mui_system__WEBPACK_IMPORTED_MODULE_9__.alpha)(theme.palette.divider, 1), 0.68)}`,\n  textAlign: 'left',\n  padding: 16\n}, ownerState.variant === 'head' && {\n  color: (theme.vars || theme).palette.text.primary,\n  lineHeight: theme.typography.pxToRem(24),\n  fontWeight: theme.typography.fontWeightMedium\n}, ownerState.variant === 'body' && {\n  color: (theme.vars || theme).palette.text.primary\n}, ownerState.variant === 'footer' && {\n  color: (theme.vars || theme).palette.text.secondary,\n  lineHeight: theme.typography.pxToRem(21),\n  fontSize: theme.typography.pxToRem(12)\n}, ownerState.size === 'small' && {\n  padding: '6px 16px',\n  [`&.${_tableCellClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].paddingCheckbox}`]: {\n    width: 24,\n    // prevent the checkbox column from growing\n    padding: '0 12px 0 16px',\n    '& > *': {\n      padding: 0\n    }\n  }\n}, ownerState.padding === 'checkbox' && {\n  width: 48,\n  // prevent the checkbox column from growing\n  padding: '0 0 0 4px'\n}, ownerState.padding === 'none' && {\n  padding: 0\n}, ownerState.align === 'left' && {\n  textAlign: 'left'\n}, ownerState.align === 'center' && {\n  textAlign: 'center'\n}, ownerState.align === 'right' && {\n  textAlign: 'right',\n  flexDirection: 'row-reverse'\n}, ownerState.align === 'justify' && {\n  textAlign: 'justify'\n}, ownerState.stickyHeader && {\n  position: 'sticky',\n  top: 0,\n  zIndex: 2,\n  backgroundColor: (theme.vars || theme).palette.background.default\n}));\n\n/**\n * The component renders a `<th>` element when the parent context is a header\n * or otherwise a `<td>` element.\n */\nconst TableCell = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function TableCell(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__[\"default\"])({\n    props: inProps,\n    name: 'MuiTableCell'\n  });\n  const {\n      align = 'inherit',\n      className,\n      component: componentProp,\n      padding: paddingProp,\n      scope: scopeProp,\n      size: sizeProp,\n      sortDirection,\n      variant: variantProp\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const table = react__WEBPACK_IMPORTED_MODULE_2__.useContext(_Table_TableContext__WEBPACK_IMPORTED_MODULE_11__[\"default\"]);\n  const tablelvl2 = react__WEBPACK_IMPORTED_MODULE_2__.useContext(_Table_Tablelvl2Context__WEBPACK_IMPORTED_MODULE_12__[\"default\"]);\n  const isHeadCell = tablelvl2 && tablelvl2.variant === 'head';\n  let component;\n  if (componentProp) {\n    component = componentProp;\n  } else {\n    component = isHeadCell ? 'th' : 'td';\n  }\n  let scope = scopeProp;\n  // scope is not a valid attribute for <td/> elements.\n  // source: https://html.spec.whatwg.org/multipage/tables.html#the-td-element\n  if (component === 'td') {\n    scope = undefined;\n  } else if (!scope && isHeadCell) {\n    scope = 'col';\n  }\n  const variant = variantProp || tablelvl2 && tablelvl2.variant;\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    align,\n    component,\n    padding: paddingProp || (table && table.padding ? table.padding : 'normal'),\n    size: sizeProp || (table && table.size ? table.size : 'medium'),\n    sortDirection,\n    stickyHeader: variant === 'head' && table && table.stickyHeader,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  let ariaSort = null;\n  if (sortDirection) {\n    ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';\n  }\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TableCellRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    as: component,\n    ref: ref,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    \"aria-sort\": ariaSort,\n    scope: scope,\n    ownerState: ownerState\n  }, other));\n});\n true ? TableCell.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Set the text-align on the table cell content.\n   *\n   * Monetary or generally number fields **should be right aligned** as that allows\n   * you to add them up quickly in your head without having to worry about decimals.\n   * @default 'inherit'\n   */\n  align: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['center', 'inherit', 'justify', 'left', 'right']),\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().elementType),\n  /**\n   * Sets the padding applied to the cell.\n   * The prop defaults to the value (`'default'`) inherited from the parent Table component.\n   */\n  padding: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['checkbox', 'none', 'normal']),\n  /**\n   * Set scope attribute.\n   */\n  scope: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string),\n  /**\n   * Specify the size of the cell.\n   * The prop defaults to the value (`'medium'`) inherited from the parent Table component.\n   */\n  size: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['medium', 'small']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)]),\n  /**\n   * Set aria-sort direction.\n   */\n  sortDirection: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['asc', 'desc', false]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_13___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object)]),\n  /**\n   * Specify the cell type.\n   * The prop defaults to the value inherited from the parent TableHead, TableBody, or TableFooter components.\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['body', 'footer', 'head']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (TableCell);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableCell/TableCell.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableCell/index.js":
/*!*******************************************************!*\
  !*** ./node_modules/@mui/material/TableCell/index.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _TableCell__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getTableCellUtilityClass\": function() { return /* reexport safe */ _tableCellClasses__WEBPACK_IMPORTED_MODULE_1__.getTableCellUtilityClass; },\n/* harmony export */   \"tableCellClasses\": function() { return /* reexport safe */ _tableCellClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _TableCell__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TableCell */ \"./node_modules/@mui/material/TableCell/TableCell.js\");\n/* harmony import */ var _tableCellClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tableCellClasses */ \"./node_modules/@mui/material/TableCell/tableCellClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableCell/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableCell/tableCellClasses.js":
/*!******************************************************************!*\
  !*** ./node_modules/@mui/material/TableCell/tableCellClasses.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTableCellUtilityClass\": function() { return /* binding */ getTableCellUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getTableCellUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiTableCell', slot);\n}\nconst tableCellClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiTableCell', ['root', 'head', 'body', 'footer', 'sizeSmall', 'sizeMedium', 'paddingCheckbox', 'paddingNone', 'alignLeft', 'alignCenter', 'alignRight', 'alignJustify', 'stickyHeader']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (tableCellClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableCell/tableCellClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableFooter/TableFooter.js":
/*!***************************************************************!*\
  !*** ./node_modules/@mui/material/TableFooter/TableFooter.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _Table_Tablelvl2Context__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Table/Tablelvl2Context */ \"./node_modules/@mui/material/Table/Tablelvl2Context.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _tableFooterClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tableFooterClasses */ \"./node_modules/@mui/material/TableFooter/tableFooterClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"className\", \"component\"];\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _tableFooterClasses__WEBPACK_IMPORTED_MODULE_6__.getTableFooterUtilityClass, classes);\n};\nconst TableFooterRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('tfoot', {\n  name: 'MuiTableFooter',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'table-footer-group'\n});\nconst tablelvl2 = {\n  variant: 'footer'\n};\nconst defaultComponent = 'tfoot';\nconst TableFooter = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function TableFooter(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n    props: inProps,\n    name: 'MuiTableFooter'\n  });\n  const {\n      className,\n      component = defaultComponent\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n    component\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_Table_Tablelvl2Context__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Provider, {\n    value: tablelvl2,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TableFooterRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      as: component,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n      ref: ref,\n      role: component === defaultComponent ? null : 'rowgroup',\n      ownerState: ownerState\n    }, other))\n  });\n});\n true ? TableFooter.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component, normally `TableRow`.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (TableFooter);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableFooter/TableFooter.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableFooter/index.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/material/TableFooter/index.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _TableFooter__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getTableFooterUtilityClass\": function() { return /* reexport safe */ _tableFooterClasses__WEBPACK_IMPORTED_MODULE_1__.getTableFooterUtilityClass; },\n/* harmony export */   \"tableFooterClasses\": function() { return /* reexport safe */ _tableFooterClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _TableFooter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TableFooter */ \"./node_modules/@mui/material/TableFooter/TableFooter.js\");\n/* harmony import */ var _tableFooterClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tableFooterClasses */ \"./node_modules/@mui/material/TableFooter/tableFooterClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableFooter/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableFooter/tableFooterClasses.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@mui/material/TableFooter/tableFooterClasses.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTableFooterUtilityClass\": function() { return /* binding */ getTableFooterUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getTableFooterUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiTableFooter', slot);\n}\nconst tableFooterClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiTableFooter', ['root']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (tableFooterClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableFooter/tableFooterClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableHead/TableHead.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/material/TableHead/TableHead.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _Table_Tablelvl2Context__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Table/Tablelvl2Context */ \"./node_modules/@mui/material/Table/Tablelvl2Context.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _tableHeadClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tableHeadClasses */ \"./node_modules/@mui/material/TableHead/tableHeadClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"className\", \"component\"];\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _tableHeadClasses__WEBPACK_IMPORTED_MODULE_6__.getTableHeadUtilityClass, classes);\n};\nconst TableHeadRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('thead', {\n  name: 'MuiTableHead',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'table-header-group'\n});\nconst tablelvl2 = {\n  variant: 'head'\n};\nconst defaultComponent = 'thead';\nconst TableHead = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function TableHead(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n    props: inProps,\n    name: 'MuiTableHead'\n  });\n  const {\n      className,\n      component = defaultComponent\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n    component\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_Table_Tablelvl2Context__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Provider, {\n    value: tablelvl2,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TableHeadRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      as: component,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n      ref: ref,\n      role: component === defaultComponent ? null : 'rowgroup',\n      ownerState: ownerState\n    }, other))\n  });\n});\n true ? TableHead.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component, normally `TableRow`.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().elementType),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_10___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (TableHead);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableHead/TableHead.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableHead/index.js":
/*!*******************************************************!*\
  !*** ./node_modules/@mui/material/TableHead/index.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _TableHead__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getTableHeadUtilityClass\": function() { return /* reexport safe */ _tableHeadClasses__WEBPACK_IMPORTED_MODULE_1__.getTableHeadUtilityClass; },\n/* harmony export */   \"tableHeadClasses\": function() { return /* reexport safe */ _tableHeadClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _TableHead__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TableHead */ \"./node_modules/@mui/material/TableHead/TableHead.js\");\n/* harmony import */ var _tableHeadClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tableHeadClasses */ \"./node_modules/@mui/material/TableHead/tableHeadClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableHead/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableHead/tableHeadClasses.js":
/*!******************************************************************!*\
  !*** ./node_modules/@mui/material/TableHead/tableHeadClasses.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTableHeadUtilityClass\": function() { return /* binding */ getTableHeadUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getTableHeadUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiTableHead', slot);\n}\nconst tableHeadClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiTableHead', ['root']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (tableHeadClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableHead/tableHeadClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TablePagination/TablePagination.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@mui/material/TablePagination/TablePagination.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/integerPropType.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/chainPropTypes.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/base/utils/isHostComponent.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _InputBase__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../InputBase */ \"./node_modules/@mui/material/InputBase/InputBase.js\");\n/* harmony import */ var _MenuItem__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../MenuItem */ \"./node_modules/@mui/material/MenuItem/MenuItem.js\");\n/* harmony import */ var _Select__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Select */ \"./node_modules/@mui/material/Select/Select.js\");\n/* harmony import */ var _TableCell__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../TableCell */ \"./node_modules/@mui/material/TableCell/TableCell.js\");\n/* harmony import */ var _Toolbar__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Toolbar */ \"./node_modules/@mui/material/Toolbar/Toolbar.js\");\n/* harmony import */ var _TablePaginationActions__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./TablePaginationActions */ \"./node_modules/@mui/material/TablePagination/TablePaginationActions.js\");\n/* harmony import */ var _utils_useId__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/useId */ \"./node_modules/@mui/material/utils/useId.js\");\n/* harmony import */ var _tablePaginationClasses__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./tablePaginationClasses */ \"./node_modules/@mui/material/TablePagination/tablePaginationClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nvar _InputBase;\nconst _excluded = [\"ActionsComponent\", \"backIconButtonProps\", \"className\", \"colSpan\", \"component\", \"count\", \"getItemAriaLabel\", \"labelDisplayedRows\", \"labelRowsPerPage\", \"nextIconButtonProps\", \"onPageChange\", \"onRowsPerPageChange\", \"page\", \"rowsPerPage\", \"rowsPerPageOptions\", \"SelectProps\", \"showFirstButton\", \"showLastButton\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst TablePaginationRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_TableCell__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n  name: 'MuiTablePagination',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(({\n  theme\n}) => ({\n  overflow: 'auto',\n  color: (theme.vars || theme).palette.text.primary,\n  fontSize: theme.typography.pxToRem(14),\n  // Increase the specificity to override TableCell.\n  '&:last-child': {\n    padding: 0\n  }\n}));\nconst TablePaginationToolbar = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_Toolbar__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n  name: 'MuiTablePagination',\n  slot: 'Toolbar',\n  overridesResolver: (props, styles) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    [`& .${_tablePaginationClasses__WEBPACK_IMPORTED_MODULE_8__[\"default\"].actions}`]: styles.actions\n  }, styles.toolbar)\n})(({\n  theme\n}) => ({\n  minHeight: 52,\n  paddingRight: 2,\n  [`${theme.breakpoints.up('xs')} and (orientation: landscape)`]: {\n    minHeight: 52\n  },\n  [theme.breakpoints.up('sm')]: {\n    minHeight: 52,\n    paddingRight: 2\n  },\n  [`& .${_tablePaginationClasses__WEBPACK_IMPORTED_MODULE_8__[\"default\"].actions}`]: {\n    flexShrink: 0,\n    marginLeft: 20\n  }\n}));\nconst TablePaginationSpacer = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_5__[\"default\"])('div', {\n  name: 'MuiTablePagination',\n  slot: 'Spacer',\n  overridesResolver: (props, styles) => styles.spacer\n})({\n  flex: '1 1 100%'\n});\nconst TablePaginationSelectLabel = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_5__[\"default\"])('p', {\n  name: 'MuiTablePagination',\n  slot: 'SelectLabel',\n  overridesResolver: (props, styles) => styles.selectLabel\n})(({\n  theme\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, theme.typography.body2, {\n  flexShrink: 0\n}));\nconst TablePaginationSelect = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_Select__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n  name: 'MuiTablePagination',\n  slot: 'Select',\n  overridesResolver: (props, styles) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    [`& .${_tablePaginationClasses__WEBPACK_IMPORTED_MODULE_8__[\"default\"].selectIcon}`]: styles.selectIcon,\n    [`& .${_tablePaginationClasses__WEBPACK_IMPORTED_MODULE_8__[\"default\"].select}`]: styles.select\n  }, styles.input, styles.selectRoot)\n})({\n  color: 'inherit',\n  fontSize: 'inherit',\n  flexShrink: 0,\n  marginRight: 32,\n  marginLeft: 8,\n  [`& .${_tablePaginationClasses__WEBPACK_IMPORTED_MODULE_8__[\"default\"].select}`]: {\n    paddingLeft: 8,\n    paddingRight: 24,\n    textAlign: 'right',\n    textAlignLast: 'right' // Align <select> on Chrome.\n  }\n});\n\nconst TablePaginationMenuItem = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_MenuItem__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n  name: 'MuiTablePagination',\n  slot: 'MenuItem',\n  overridesResolver: (props, styles) => styles.menuItem\n})({});\nconst TablePaginationDisplayedRows = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_5__[\"default\"])('p', {\n  name: 'MuiTablePagination',\n  slot: 'DisplayedRows',\n  overridesResolver: (props, styles) => styles.displayedRows\n})(({\n  theme\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, theme.typography.body2, {\n  flexShrink: 0\n}));\nfunction defaultLabelDisplayedRows({\n  from,\n  to,\n  count\n}) {\n  return `${from}–${to} of ${count !== -1 ? count : `more than ${to}`}`;\n}\nfunction defaultGetAriaLabel(type) {\n  return `Go to ${type} page`;\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    toolbar: ['toolbar'],\n    spacer: ['spacer'],\n    selectLabel: ['selectLabel'],\n    select: ['select'],\n    input: ['input'],\n    selectIcon: ['selectIcon'],\n    menuItem: ['menuItem'],\n    displayedRows: ['displayedRows'],\n    actions: ['actions']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(slots, _tablePaginationClasses__WEBPACK_IMPORTED_MODULE_8__.getTablePaginationUtilityClass, classes);\n};\n\n/**\n * A `TableCell` based component for placing inside `TableFooter` for pagination.\n */\nconst TablePagination = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function TablePagination(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_12__[\"default\"])({\n    props: inProps,\n    name: 'MuiTablePagination'\n  });\n  const {\n      ActionsComponent = _TablePaginationActions__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n      backIconButtonProps,\n      className,\n      colSpan: colSpanProp,\n      component = _TableCell__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n      count,\n      getItemAriaLabel = defaultGetAriaLabel,\n      labelDisplayedRows = defaultLabelDisplayedRows,\n      labelRowsPerPage = 'Rows per page:',\n      nextIconButtonProps,\n      onPageChange,\n      onRowsPerPageChange,\n      page,\n      rowsPerPage,\n      rowsPerPageOptions = [10, 25, 50, 100],\n      SelectProps = {},\n      showFirstButton = false,\n      showLastButton = false\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  const MenuItemComponent = SelectProps.native ? 'option' : TablePaginationMenuItem;\n  let colSpan;\n  if (component === _TableCell__WEBPACK_IMPORTED_MODULE_6__[\"default\"] || component === 'td') {\n    colSpan = colSpanProp || 1000; // col-span over everything\n  }\n\n  const selectId = (0,_utils_useId__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(SelectProps.id);\n  const labelId = (0,_utils_useId__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(SelectProps.labelId);\n  const getLabelDisplayedRowsTo = () => {\n    if (count === -1) {\n      return (page + 1) * rowsPerPage;\n    }\n    return rowsPerPage === -1 ? count : Math.min(count, (page + 1) * rowsPerPage);\n  };\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TablePaginationRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    colSpan: colSpan,\n    ref: ref,\n    as: component,\n    ownerState: ownerState,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className)\n  }, other, {\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(TablePaginationToolbar, {\n      className: classes.toolbar,\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TablePaginationSpacer, {\n        className: classes.spacer\n      }), rowsPerPageOptions.length > 1 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TablePaginationSelectLabel, {\n        className: classes.selectLabel,\n        id: labelId,\n        children: labelRowsPerPage\n      }), rowsPerPageOptions.length > 1 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TablePaginationSelect, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n        variant: \"standard\"\n      }, !SelectProps.variant && {\n        input: _InputBase || (_InputBase = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_InputBase__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {}))\n      }, {\n        value: rowsPerPage,\n        onChange: onRowsPerPageChange,\n        id: selectId,\n        labelId: labelId\n      }, SelectProps, {\n        classes: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, SelectProps.classes, {\n          // TODO v5 remove `classes.input`\n          root: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.input, classes.selectRoot, (SelectProps.classes || {}).root),\n          select: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.select, (SelectProps.classes || {}).select),\n          // TODO v5 remove `selectIcon`\n          icon: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.selectIcon, (SelectProps.classes || {}).icon)\n        }),\n        children: rowsPerPageOptions.map(rowsPerPageOption => /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_2__.createElement)(MenuItemComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, !(0,_mui_base__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(MenuItemComponent) && {\n          ownerState\n        }, {\n          className: classes.menuItem,\n          key: rowsPerPageOption.label ? rowsPerPageOption.label : rowsPerPageOption,\n          value: rowsPerPageOption.value ? rowsPerPageOption.value : rowsPerPageOption\n        }), rowsPerPageOption.label ? rowsPerPageOption.label : rowsPerPageOption))\n      })), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TablePaginationDisplayedRows, {\n        className: classes.displayedRows,\n        children: labelDisplayedRows({\n          from: count === 0 ? 0 : page * rowsPerPage + 1,\n          to: getLabelDisplayedRowsTo(),\n          count: count === -1 ? -1 : count,\n          page\n        })\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(ActionsComponent, {\n        className: classes.actions,\n        backIconButtonProps: backIconButtonProps,\n        count: count,\n        nextIconButtonProps: nextIconButtonProps,\n        onPageChange: onPageChange,\n        page: page,\n        rowsPerPage: rowsPerPage,\n        showFirstButton: showFirstButton,\n        showLastButton: showLastButton,\n        getItemAriaLabel: getItemAriaLabel\n      })]\n    })\n  }));\n});\n true ? TablePagination.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The component used for displaying the actions.\n   * Either a string to use a HTML element or a component.\n   * @default TablePaginationActions\n   */\n  ActionsComponent: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().elementType),\n  /**\n   * Props applied to the back arrow [`IconButton`](/material-ui/api/icon-button/) component.\n   */\n  backIconButtonProps: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string),\n  /**\n   * @ignore\n   */\n  colSpan: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().number),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().elementType),\n  /**\n   * The total number of rows.\n   *\n   * To enable server side pagination for an unknown number of items, provide -1.\n   */\n  count: _mui_utils__WEBPACK_IMPORTED_MODULE_18__[\"default\"].isRequired,\n  /**\n   * Accepts a function which returns a string value that provides a user-friendly name for the current page.\n   * This is important for screen reader users.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @param {string} type The link or button type to format ('first' | 'last' | 'next' | 'previous').\n   * @returns {string}\n   * @default function defaultGetAriaLabel(type) {\n   *   return `Go to ${type} page`;\n   * }\n   */\n  getItemAriaLabel: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func),\n  /**\n   * Customize the displayed rows label. Invoked with a `{ from, to, count, page }`\n   * object.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default function defaultLabelDisplayedRows({ from, to, count }) {\n   *   return `${from}–${to} of ${count !== -1 ? count : `more than ${to}`}`;\n   * }\n   */\n  labelDisplayedRows: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func),\n  /**\n   * Customize the rows per page label.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Rows per page:'\n   */\n  labelRowsPerPage: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().node),\n  /**\n   * Props applied to the next arrow [`IconButton`](/material-ui/api/icon-button/) element.\n   */\n  nextIconButtonProps: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object),\n  /**\n   * Callback fired when the page is changed.\n   *\n   * @param {React.MouseEvent<HTMLButtonElement> | null} event The event source of the callback.\n   * @param {number} page The page selected.\n   */\n  onPageChange: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func.isRequired),\n  /**\n   * Callback fired when the number of rows per page is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   */\n  onRowsPerPageChange: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func),\n  /**\n   * The zero-based index of the current page.\n   */\n  page: (0,_mui_utils__WEBPACK_IMPORTED_MODULE_19__[\"default\"])(_mui_utils__WEBPACK_IMPORTED_MODULE_18__[\"default\"].isRequired, props => {\n    const {\n      count,\n      page,\n      rowsPerPage\n    } = props;\n    if (count === -1) {\n      return null;\n    }\n    const newLastPage = Math.max(0, Math.ceil(count / rowsPerPage) - 1);\n    if (page < 0 || page > newLastPage) {\n      return new Error('MUI: The page prop of a TablePagination is out of range ' + `(0 to ${newLastPage}, but page is ${page}).`);\n    }\n    return null;\n  }),\n  /**\n   * The number of rows per page.\n   *\n   * Set -1 to display all the rows.\n   */\n  rowsPerPage: _mui_utils__WEBPACK_IMPORTED_MODULE_18__[\"default\"].isRequired,\n  /**\n   * Customizes the options of the rows per page select field. If less than two options are\n   * available, no select field will be displayed.\n   * Use -1 for the value with a custom label to show all the rows.\n   * @default [10, 25, 50, 100]\n   */\n  rowsPerPageOptions: prop_types__WEBPACK_IMPORTED_MODULE_17___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_17___default().number), prop_types__WEBPACK_IMPORTED_MODULE_17___default().shape({\n    label: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string.isRequired),\n    value: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().number.isRequired)\n  })]).isRequired),\n  /**\n   * Props applied to the rows per page [`Select`](/material-ui/api/select/) element.\n   * @default {}\n   */\n  SelectProps: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object),\n  /**\n   * If `true`, show the first-page button.\n   * @default false\n   */\n  showFirstButton: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * If `true`, show the last-page button.\n   * @default false\n   */\n  showLastButton: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_17___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_17___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (TablePagination);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TablePagination/TablePagination.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TablePagination/TablePaginationActions.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@mui/material/TablePagination/TablePaginationActions.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _internal_svg_icons_KeyboardArrowLeft__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../internal/svg-icons/KeyboardArrowLeft */ \"./node_modules/@mui/material/internal/svg-icons/KeyboardArrowLeft.js\");\n/* harmony import */ var _internal_svg_icons_KeyboardArrowRight__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../internal/svg-icons/KeyboardArrowRight */ \"./node_modules/@mui/material/internal/svg-icons/KeyboardArrowRight.js\");\n/* harmony import */ var _styles_useTheme__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../styles/useTheme */ \"./node_modules/@mui/material/styles/useTheme.js\");\n/* harmony import */ var _IconButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../IconButton */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _internal_svg_icons_LastPage__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../internal/svg-icons/LastPage */ \"./node_modules/@mui/material/internal/svg-icons/LastPage.js\");\n/* harmony import */ var _internal_svg_icons_FirstPage__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../internal/svg-icons/FirstPage */ \"./node_modules/@mui/material/internal/svg-icons/FirstPage.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nvar _LastPageIcon, _FirstPageIcon, _KeyboardArrowRight, _KeyboardArrowLeft, _KeyboardArrowLeft2, _KeyboardArrowRight2, _FirstPageIcon2, _LastPageIcon2;\nconst _excluded = [\"backIconButtonProps\", \"count\", \"getItemAriaLabel\", \"nextIconButtonProps\", \"onPageChange\", \"page\", \"rowsPerPage\", \"showFirstButton\", \"showLastButton\"];\n\n\n\n\n\n\n\n\n\n/**\n * @ignore - internal component.\n */\n\n\nconst TablePaginationActions = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function TablePaginationActions(props, ref) {\n  const {\n      backIconButtonProps,\n      count,\n      getItemAriaLabel,\n      nextIconButtonProps,\n      onPageChange,\n      page,\n      rowsPerPage,\n      showFirstButton,\n      showLastButton\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const theme = (0,_styles_useTheme__WEBPACK_IMPORTED_MODULE_4__[\"default\"])();\n  const handleFirstPageButtonClick = event => {\n    onPageChange(event, 0);\n  };\n  const handleBackButtonClick = event => {\n    onPageChange(event, page - 1);\n  };\n  const handleNextButtonClick = event => {\n    onPageChange(event, page + 1);\n  };\n  const handleLastPageButtonClick = event => {\n    onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));\n  };\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(\"div\", (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    ref: ref\n  }, other, {\n    children: [showFirstButton && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_IconButton__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n      onClick: handleFirstPageButtonClick,\n      disabled: page === 0,\n      \"aria-label\": getItemAriaLabel('first', page),\n      title: getItemAriaLabel('first', page),\n      children: theme.direction === 'rtl' ? _LastPageIcon || (_LastPageIcon = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_internal_svg_icons_LastPage__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {})) : _FirstPageIcon || (_FirstPageIcon = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_internal_svg_icons_FirstPage__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {}))\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_IconButton__WEBPACK_IMPORTED_MODULE_5__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      onClick: handleBackButtonClick,\n      disabled: page === 0,\n      color: \"inherit\",\n      \"aria-label\": getItemAriaLabel('previous', page),\n      title: getItemAriaLabel('previous', page)\n    }, backIconButtonProps, {\n      children: theme.direction === 'rtl' ? _KeyboardArrowRight || (_KeyboardArrowRight = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_internal_svg_icons_KeyboardArrowRight__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {})) : _KeyboardArrowLeft || (_KeyboardArrowLeft = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_internal_svg_icons_KeyboardArrowLeft__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {}))\n    })), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_IconButton__WEBPACK_IMPORTED_MODULE_5__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      onClick: handleNextButtonClick,\n      disabled: count !== -1 ? page >= Math.ceil(count / rowsPerPage) - 1 : false,\n      color: \"inherit\",\n      \"aria-label\": getItemAriaLabel('next', page),\n      title: getItemAriaLabel('next', page)\n    }, nextIconButtonProps, {\n      children: theme.direction === 'rtl' ? _KeyboardArrowLeft2 || (_KeyboardArrowLeft2 = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_internal_svg_icons_KeyboardArrowLeft__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {})) : _KeyboardArrowRight2 || (_KeyboardArrowRight2 = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_internal_svg_icons_KeyboardArrowRight__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {}))\n    })), showLastButton && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_IconButton__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n      onClick: handleLastPageButtonClick,\n      disabled: page >= Math.ceil(count / rowsPerPage) - 1,\n      \"aria-label\": getItemAriaLabel('last', page),\n      title: getItemAriaLabel('last', page),\n      children: theme.direction === 'rtl' ? _FirstPageIcon2 || (_FirstPageIcon2 = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_internal_svg_icons_FirstPage__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {})) : _LastPageIcon2 || (_LastPageIcon2 = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_internal_svg_icons_LastPage__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {}))\n    })]\n  }));\n});\n true ? TablePaginationActions.propTypes = {\n  /**\n   * Props applied to the back arrow [`IconButton`](/material-ui/api/icon-button/) element.\n   */\n  backIconButtonProps: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n  /**\n   * The total number of rows.\n   */\n  count: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().number.isRequired),\n  /**\n   * Accepts a function which returns a string value that provides a user-friendly name for the current page.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   *\n   * @param {string} type The link or button type to format ('page' | 'first' | 'last' | 'next' | 'previous'). Defaults to 'page'.\n   * @param {number} page The page number to format.\n   * @returns {string}\n   */\n  getItemAriaLabel: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func.isRequired),\n  /**\n   * Props applied to the next arrow [`IconButton`](/material-ui/api/icon-button/) element.\n   */\n  nextIconButtonProps: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().object),\n  /**\n   * Callback fired when the page is changed.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {number} page The page selected.\n   */\n  onPageChange: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func.isRequired),\n  /**\n   * The zero-based index of the current page.\n   */\n  page: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().number.isRequired),\n  /**\n   * The number of rows per page.\n   */\n  rowsPerPage: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().number.isRequired),\n  /**\n   * If `true`, show the first-page button.\n   */\n  showFirstButton: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool.isRequired),\n  /**\n   * If `true`, show the last-page button.\n   */\n  showLastButton: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool.isRequired)\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (TablePaginationActions);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TablePagination/TablePaginationActions.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TablePagination/index.js":
/*!*************************************************************!*\
  !*** ./node_modules/@mui/material/TablePagination/index.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _TablePagination__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getTablePaginationUtilityClass\": function() { return /* reexport safe */ _tablePaginationClasses__WEBPACK_IMPORTED_MODULE_1__.getTablePaginationUtilityClass; },\n/* harmony export */   \"tablePaginationClasses\": function() { return /* reexport safe */ _tablePaginationClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _TablePagination__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TablePagination */ \"./node_modules/@mui/material/TablePagination/TablePagination.js\");\n/* harmony import */ var _tablePaginationClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tablePaginationClasses */ \"./node_modules/@mui/material/TablePagination/tablePaginationClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TablePagination/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TablePagination/tablePaginationClasses.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@mui/material/TablePagination/tablePaginationClasses.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTablePaginationUtilityClass\": function() { return /* binding */ getTablePaginationUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getTablePaginationUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiTablePagination', slot);\n}\nconst tablePaginationClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiTablePagination', ['root', 'toolbar', 'spacer', 'selectLabel', 'selectRoot', 'select', 'selectIcon', 'input', 'menuItem', 'displayedRows', 'actions']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (tablePaginationClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TablePagination/tablePaginationClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableRow/TableRow.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/material/TableRow/TableRow.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/colorManipulator.js\");\n/* harmony import */ var _Table_Tablelvl2Context__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Table/Tablelvl2Context */ \"./node_modules/@mui/material/Table/Tablelvl2Context.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _tableRowClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tableRowClasses */ \"./node_modules/@mui/material/TableRow/tableRowClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"className\", \"component\", \"hover\", \"selected\"];\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    selected,\n    hover,\n    head,\n    footer\n  } = ownerState;\n  const slots = {\n    root: ['root', selected && 'selected', hover && 'hover', head && 'head', footer && 'footer']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _tableRowClasses__WEBPACK_IMPORTED_MODULE_6__.getTableRowUtilityClass, classes);\n};\nconst TableRowRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('tr', {\n  name: 'MuiTableRow',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.head && styles.head, ownerState.footer && styles.footer];\n  }\n})(({\n  theme\n}) => ({\n  color: 'inherit',\n  display: 'table-row',\n  verticalAlign: 'middle',\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0,\n  [`&.${_tableRowClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hover}:hover`]: {\n    backgroundColor: (theme.vars || theme).palette.action.hover\n  },\n  [`&.${_tableRowClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"].selected}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_8__.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n    '&:hover': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : (0,_mui_system__WEBPACK_IMPORTED_MODULE_8__.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity)\n    }\n  }\n}));\nconst defaultComponent = 'tr';\n/**\n * Will automatically set dynamic row height\n * based on the material table element parent (head, body, etc).\n */\nconst TableRow = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function TableRow(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({\n    props: inProps,\n    name: 'MuiTableRow'\n  });\n  const {\n      className,\n      component = defaultComponent,\n      hover = false,\n      selected = false\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const tablelvl2 = react__WEBPACK_IMPORTED_MODULE_2__.useContext(_Table_Tablelvl2Context__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n    component,\n    hover,\n    selected,\n    head: tablelvl2 && tablelvl2.variant === 'head',\n    footer: tablelvl2 && tablelvl2.variant === 'footer'\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TableRowRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    as: component,\n    ref: ref,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    role: component === defaultComponent ? null : 'row',\n    ownerState: ownerState\n  }, other));\n});\n true ? TableRow.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Should be valid <tr> children such as `TableCell`.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().elementType),\n  /**\n   * If `true`, the table row will shade on hover.\n   * @default false\n   */\n  hover: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * If `true`, the table row will have the selected shading.\n   * @default false\n   */\n  selected: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_11___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (TableRow);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableRow/TableRow.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableRow/index.js":
/*!******************************************************!*\
  !*** ./node_modules/@mui/material/TableRow/index.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _TableRow__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getTableRowUtilityClass\": function() { return /* reexport safe */ _tableRowClasses__WEBPACK_IMPORTED_MODULE_1__.getTableRowUtilityClass; },\n/* harmony export */   \"tableRowClasses\": function() { return /* reexport safe */ _tableRowClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _TableRow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TableRow */ \"./node_modules/@mui/material/TableRow/TableRow.js\");\n/* harmony import */ var _tableRowClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tableRowClasses */ \"./node_modules/@mui/material/TableRow/tableRowClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableRow/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableRow/tableRowClasses.js":
/*!****************************************************************!*\
  !*** ./node_modules/@mui/material/TableRow/tableRowClasses.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTableRowUtilityClass\": function() { return /* binding */ getTableRowUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getTableRowUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiTableRow', slot);\n}\nconst tableRowClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiTableRow', ['root', 'selected', 'hover', 'head', 'footer']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (tableRowClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableRow/tableRowClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableSortLabel/TableSortLabel.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@mui/material/TableSortLabel/TableSortLabel.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _ButtonBase__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../ButtonBase */ \"./node_modules/@mui/material/ButtonBase/ButtonBase.js\");\n/* harmony import */ var _internal_svg_icons_ArrowDownward__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../internal/svg-icons/ArrowDownward */ \"./node_modules/@mui/material/internal/svg-icons/ArrowDownward.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _tableSortLabelClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./tableSortLabelClasses */ \"./node_modules/@mui/material/TableSortLabel/tableSortLabelClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"active\", \"children\", \"className\", \"direction\", \"hideSortIcon\", \"IconComponent\"];\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    direction,\n    active\n  } = ownerState;\n  const slots = {\n    root: ['root', active && 'active'],\n    icon: ['icon', `iconDirection${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(direction)}`]\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _tableSortLabelClasses__WEBPACK_IMPORTED_MODULE_7__.getTableSortLabelUtilityClass, classes);\n};\nconst TableSortLabelRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_ButtonBase__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n  name: 'MuiTableSortLabel',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.active && styles.active];\n  }\n})(({\n  theme\n}) => ({\n  cursor: 'pointer',\n  display: 'inline-flex',\n  justifyContent: 'flex-start',\n  flexDirection: 'inherit',\n  alignItems: 'center',\n  '&:focus': {\n    color: (theme.vars || theme).palette.text.secondary\n  },\n  '&:hover': {\n    color: (theme.vars || theme).palette.text.secondary,\n    [`& .${_tableSortLabelClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].icon}`]: {\n      opacity: 0.5\n    }\n  },\n  [`&.${_tableSortLabelClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].active}`]: {\n    color: (theme.vars || theme).palette.text.primary,\n    [`& .${_tableSortLabelClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].icon}`]: {\n      opacity: 1,\n      color: (theme.vars || theme).palette.text.secondary\n    }\n  }\n}));\nconst TableSortLabelIcon = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('span', {\n  name: 'MuiTableSortLabel',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.icon, styles[`iconDirection${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.direction)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  fontSize: 18,\n  marginRight: 4,\n  marginLeft: 4,\n  opacity: 0,\n  transition: theme.transitions.create(['opacity', 'transform'], {\n    duration: theme.transitions.duration.shorter\n  }),\n  userSelect: 'none'\n}, ownerState.direction === 'desc' && {\n  transform: 'rotate(0deg)'\n}, ownerState.direction === 'asc' && {\n  transform: 'rotate(180deg)'\n}));\n\n/**\n * A button based label for placing inside `TableCell` for column sorting.\n */\nconst TableSortLabel = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.forwardRef(function TableSortLabel(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__[\"default\"])({\n    props: inProps,\n    name: 'MuiTableSortLabel'\n  });\n  const {\n      active = false,\n      children,\n      className,\n      direction = 'asc',\n      hideSortIcon = false,\n      IconComponent = _internal_svg_icons_ArrowDownward__WEBPACK_IMPORTED_MODULE_11__[\"default\"]\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    active,\n    direction,\n    hideSortIcon,\n    IconComponent\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(TableSortLabelRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(classes.root, className),\n    component: \"span\",\n    disableRipple: true,\n    ownerState: ownerState,\n    ref: ref\n  }, other, {\n    children: [children, hideSortIcon && !active ? null : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TableSortLabelIcon, {\n      as: IconComponent,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(classes.icon),\n      ownerState: ownerState\n    })]\n  }));\n});\n true ? TableSortLabel.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, the label will have the active styling (should be true for the sorted column).\n   * @default false\n   */\n  active: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * Label contents, the arrow will be appended automatically.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string),\n  /**\n   * The current sort direction.\n   * @default 'asc'\n   */\n  direction: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOf(['asc', 'desc']),\n  /**\n   * Hide sort icon when active is false.\n   * @default false\n   */\n  hideSortIcon: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * Sort icon to use.\n   * @default ArrowDownwardIcon\n   */\n  IconComponent: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().elementType),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_12___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_12___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (TableSortLabel);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableSortLabel/TableSortLabel.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableSortLabel/index.js":
/*!************************************************************!*\
  !*** ./node_modules/@mui/material/TableSortLabel/index.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _TableSortLabel__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getTableSortLabelUtilityClass\": function() { return /* reexport safe */ _tableSortLabelClasses__WEBPACK_IMPORTED_MODULE_1__.getTableSortLabelUtilityClass; },\n/* harmony export */   \"tableSortLabelClasses\": function() { return /* reexport safe */ _tableSortLabelClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _TableSortLabel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TableSortLabel */ \"./node_modules/@mui/material/TableSortLabel/TableSortLabel.js\");\n/* harmony import */ var _tableSortLabelClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tableSortLabelClasses */ \"./node_modules/@mui/material/TableSortLabel/tableSortLabelClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableSortLabel/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TableSortLabel/tableSortLabelClasses.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@mui/material/TableSortLabel/tableSortLabelClasses.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTableSortLabelUtilityClass\": function() { return /* binding */ getTableSortLabelUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getTableSortLabelUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiTableSortLabel', slot);\n}\nconst tableSortLabelClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiTableSortLabel', ['root', 'active', 'icon', 'iconDirectionDesc', 'iconDirectionAsc']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (tableSortLabelClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TableSortLabel/tableSortLabelClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Tabs/ScrollbarSize.js":
/*!**********************************************************!*\
  !*** ./node_modules/@mui/material/Tabs/ScrollbarSize.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ScrollbarSize; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _utils_debounce__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/debounce */ \"./node_modules/@mui/material/utils/debounce.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ \"./node_modules/@mui/material/utils/ownerWindow.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"onChange\"];\n\n\n\n\n\nconst styles = {\n  width: 99,\n  height: 99,\n  position: 'absolute',\n  top: -9999,\n  overflow: 'scroll'\n};\n\n/**\n * @ignore - internal component.\n * The component originates from https://github.com/STORIS/react-scrollbar-size.\n * It has been moved into the core in order to minimize the bundle size.\n */\nfunction ScrollbarSize(props) {\n  const {\n      onChange\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const scrollbarHeight = react__WEBPACK_IMPORTED_MODULE_2__.useRef();\n  const nodeRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const setMeasurements = () => {\n    scrollbarHeight.current = nodeRef.current.offsetHeight - nodeRef.current.clientHeight;\n  };\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    const handleResize = (0,_utils_debounce__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(() => {\n      const prevHeight = scrollbarHeight.current;\n      setMeasurements();\n      if (prevHeight !== scrollbarHeight.current) {\n        onChange(scrollbarHeight.current);\n      }\n    });\n    const containerWindow = (0,_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(nodeRef.current);\n    containerWindow.addEventListener('resize', handleResize);\n    return () => {\n      handleResize.clear();\n      containerWindow.removeEventListener('resize', handleResize);\n    };\n  }, [onChange]);\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    setMeasurements();\n    onChange(scrollbarHeight.current);\n  }, [onChange]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    style: styles,\n    ref: nodeRef\n  }, other));\n}\n true ? ScrollbarSize.propTypes = {\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func.isRequired)\n} : 0;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Tabs/ScrollbarSize.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Tabs/Tabs.js":
/*!*************************************************!*\
  !*** ./node_modules/@mui/material/Tabs/Tabs.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-is */ \"./node_modules/@mui/material/node_modules/react-is/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/refType.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_useTheme__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../styles/useTheme */ \"./node_modules/@mui/material/styles/useTheme.js\");\n/* harmony import */ var _utils_debounce__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/debounce */ \"./node_modules/@mui/material/utils/debounce.js\");\n/* harmony import */ var _utils_scrollLeft__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/scrollLeft */ \"./node_modules/@mui/utils/esm/scrollLeft.js\");\n/* harmony import */ var _internal_animate__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../internal/animate */ \"./node_modules/@mui/material/internal/animate.js\");\n/* harmony import */ var _ScrollbarSize__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ScrollbarSize */ \"./node_modules/@mui/material/Tabs/ScrollbarSize.js\");\n/* harmony import */ var _TabScrollButton__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../TabScrollButton */ \"./node_modules/@mui/material/TabScrollButton/TabScrollButton.js\");\n/* harmony import */ var _utils_useEventCallback__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/useEventCallback */ \"./node_modules/@mui/material/utils/useEventCallback.js\");\n/* harmony import */ var _tabsClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./tabsClasses */ \"./node_modules/@mui/material/Tabs/tabsClasses.js\");\n/* harmony import */ var _utils_ownerDocument__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../utils/ownerDocument */ \"./node_modules/@mui/material/utils/ownerDocument.js\");\n/* harmony import */ var _utils_ownerWindow__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utils/ownerWindow */ \"./node_modules/@mui/material/utils/ownerWindow.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"aria-label\", \"aria-labelledby\", \"action\", \"centered\", \"children\", \"className\", \"component\", \"allowScrollButtonsMobile\", \"indicatorColor\", \"onChange\", \"orientation\", \"ScrollButtonComponent\", \"scrollButtons\", \"selectionFollowsFocus\", \"TabIndicatorProps\", \"TabScrollButtonProps\", \"textColor\", \"value\", \"variant\", \"visibleScrollbar\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst nextItem = (list, item) => {\n  if (list === item) {\n    return list.firstChild;\n  }\n  if (item && item.nextElementSibling) {\n    return item.nextElementSibling;\n  }\n  return list.firstChild;\n};\nconst previousItem = (list, item) => {\n  if (list === item) {\n    return list.lastChild;\n  }\n  if (item && item.previousElementSibling) {\n    return item.previousElementSibling;\n  }\n  return list.lastChild;\n};\nconst moveFocus = (list, currentFocus, traversalFunction) => {\n  let wrappedOnce = false;\n  let nextFocus = traversalFunction(list, currentFocus);\n  while (nextFocus) {\n    // Prevent infinite loop.\n    if (nextFocus === list.firstChild) {\n      if (wrappedOnce) {\n        return;\n      }\n      wrappedOnce = true;\n    }\n\n    // Same logic as useAutocomplete.js\n    const nextFocusDisabled = nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n    if (!nextFocus.hasAttribute('tabindex') || nextFocusDisabled) {\n      // Move to the next element.\n      nextFocus = traversalFunction(list, nextFocus);\n    } else {\n      nextFocus.focus();\n      return;\n    }\n  }\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    vertical,\n    fixed,\n    hideScrollbar,\n    scrollableX,\n    scrollableY,\n    centered,\n    scrollButtonsHideMobile,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', vertical && 'vertical'],\n    scroller: ['scroller', fixed && 'fixed', hideScrollbar && 'hideScrollbar', scrollableX && 'scrollableX', scrollableY && 'scrollableY'],\n    flexContainer: ['flexContainer', vertical && 'flexContainerVertical', centered && 'centered'],\n    indicator: ['indicator'],\n    scrollButtons: ['scrollButtons', scrollButtonsHideMobile && 'scrollButtonsHideMobile'],\n    scrollableX: [scrollableX && 'scrollableX'],\n    hideScrollbar: [hideScrollbar && 'hideScrollbar']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _tabsClasses__WEBPACK_IMPORTED_MODULE_7__.getTabsUtilityClass, classes);\n};\nconst TabsRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n  name: 'MuiTabs',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${_tabsClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].scrollButtons}`]: styles.scrollButtons\n    }, {\n      [`& .${_tabsClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].scrollButtons}`]: ownerState.scrollButtonsHideMobile && styles.scrollButtonsHideMobile\n    }, styles.root, ownerState.vertical && styles.vertical];\n  }\n})(({\n  ownerState,\n  theme\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  overflow: 'hidden',\n  minHeight: 48,\n  // Add iOS momentum scrolling for iOS < 13.0\n  WebkitOverflowScrolling: 'touch',\n  display: 'flex'\n}, ownerState.vertical && {\n  flexDirection: 'column'\n}, ownerState.scrollButtonsHideMobile && {\n  [`& .${_tabsClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].scrollButtons}`]: {\n    [theme.breakpoints.down('sm')]: {\n      display: 'none'\n    }\n  }\n}));\nconst TabsScroller = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n  name: 'MuiTabs',\n  slot: 'Scroller',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.scroller, ownerState.fixed && styles.fixed, ownerState.hideScrollbar && styles.hideScrollbar, ownerState.scrollableX && styles.scrollableX, ownerState.scrollableY && styles.scrollableY];\n  }\n})(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  position: 'relative',\n  display: 'inline-block',\n  flex: '1 1 auto',\n  whiteSpace: 'nowrap'\n}, ownerState.fixed && {\n  overflowX: 'hidden',\n  width: '100%'\n}, ownerState.hideScrollbar && {\n  // Hide dimensionless scrollbar on macOS\n  scrollbarWidth: 'none',\n  // Firefox\n  '&::-webkit-scrollbar': {\n    display: 'none' // Safari + Chrome\n  }\n}, ownerState.scrollableX && {\n  overflowX: 'auto',\n  overflowY: 'hidden'\n}, ownerState.scrollableY && {\n  overflowY: 'auto',\n  overflowX: 'hidden'\n}));\nconst FlexContainer = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n  name: 'MuiTabs',\n  slot: 'FlexContainer',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.flexContainer, ownerState.vertical && styles.flexContainerVertical, ownerState.centered && styles.centered];\n  }\n})(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  display: 'flex'\n}, ownerState.vertical && {\n  flexDirection: 'column'\n}, ownerState.centered && {\n  justifyContent: 'center'\n}));\nconst TabsIndicator = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('span', {\n  name: 'MuiTabs',\n  slot: 'Indicator',\n  overridesResolver: (props, styles) => styles.indicator\n})(({\n  ownerState,\n  theme\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  position: 'absolute',\n  height: 2,\n  bottom: 0,\n  width: '100%',\n  transition: theme.transitions.create()\n}, ownerState.indicatorColor === 'primary' && {\n  backgroundColor: (theme.vars || theme).palette.primary.main\n}, ownerState.indicatorColor === 'secondary' && {\n  backgroundColor: (theme.vars || theme).palette.secondary.main\n}, ownerState.vertical && {\n  height: '100%',\n  width: 2,\n  right: 0\n}));\nconst TabsScrollbarSize = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_ScrollbarSize__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n  name: 'MuiTabs',\n  slot: 'ScrollbarSize'\n})({\n  overflowX: 'auto',\n  overflowY: 'hidden',\n  // Hide dimensionless scrollbar on macOS\n  scrollbarWidth: 'none',\n  // Firefox\n  '&::-webkit-scrollbar': {\n    display: 'none' // Safari + Chrome\n  }\n});\n\nconst defaultIndicatorStyle = {};\nlet warnedOnceTabPresent = false;\nconst Tabs = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Tabs(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_10__[\"default\"])({\n    props: inProps,\n    name: 'MuiTabs'\n  });\n  const theme = (0,_styles_useTheme__WEBPACK_IMPORTED_MODULE_11__[\"default\"])();\n  const isRtl = theme.direction === 'rtl';\n  const {\n      'aria-label': ariaLabel,\n      'aria-labelledby': ariaLabelledBy,\n      action,\n      centered = false,\n      children: childrenProp,\n      className,\n      component = 'div',\n      allowScrollButtonsMobile = false,\n      indicatorColor = 'primary',\n      onChange,\n      orientation = 'horizontal',\n      ScrollButtonComponent = _TabScrollButton__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n      scrollButtons = 'auto',\n      selectionFollowsFocus,\n      TabIndicatorProps = {},\n      TabScrollButtonProps = {},\n      textColor = 'primary',\n      value,\n      variant = 'standard',\n      visibleScrollbar = false\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const scrollable = variant === 'scrollable';\n  const vertical = orientation === 'vertical';\n  const scrollStart = vertical ? 'scrollTop' : 'scrollLeft';\n  const start = vertical ? 'top' : 'left';\n  const end = vertical ? 'bottom' : 'right';\n  const clientSize = vertical ? 'clientHeight' : 'clientWidth';\n  const size = vertical ? 'height' : 'width';\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    component,\n    allowScrollButtonsMobile,\n    indicatorColor,\n    orientation,\n    vertical,\n    scrollButtons,\n    textColor,\n    variant,\n    visibleScrollbar,\n    fixed: !scrollable,\n    hideScrollbar: scrollable && !visibleScrollbar,\n    scrollableX: scrollable && !vertical,\n    scrollableY: scrollable && vertical,\n    centered: centered && !scrollable,\n    scrollButtonsHideMobile: !allowScrollButtonsMobile\n  });\n  const classes = useUtilityClasses(ownerState);\n  if (true) {\n    if (centered && scrollable) {\n      console.error('MUI: You can not use the `centered={true}` and `variant=\"scrollable\"` properties ' + 'at the same time on a `Tabs` component.');\n    }\n  }\n  const [mounted, setMounted] = react__WEBPACK_IMPORTED_MODULE_2__.useState(false);\n  const [indicatorStyle, setIndicatorStyle] = react__WEBPACK_IMPORTED_MODULE_2__.useState(defaultIndicatorStyle);\n  const [displayScroll, setDisplayScroll] = react__WEBPACK_IMPORTED_MODULE_2__.useState({\n    start: false,\n    end: false\n  });\n  const [scrollerStyle, setScrollerStyle] = react__WEBPACK_IMPORTED_MODULE_2__.useState({\n    overflow: 'hidden',\n    scrollbarWidth: 0\n  });\n  const valueToIndex = new Map();\n  const tabsRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const tabListRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(null);\n  const getTabsMeta = () => {\n    const tabsNode = tabsRef.current;\n    let tabsMeta;\n    if (tabsNode) {\n      const rect = tabsNode.getBoundingClientRect();\n      // create a new object with ClientRect class props + scrollLeft\n      tabsMeta = {\n        clientWidth: tabsNode.clientWidth,\n        scrollLeft: tabsNode.scrollLeft,\n        scrollTop: tabsNode.scrollTop,\n        scrollLeftNormalized: (0,_utils_scrollLeft__WEBPACK_IMPORTED_MODULE_13__.getNormalizedScrollLeft)(tabsNode, theme.direction),\n        scrollWidth: tabsNode.scrollWidth,\n        top: rect.top,\n        bottom: rect.bottom,\n        left: rect.left,\n        right: rect.right\n      };\n    }\n    let tabMeta;\n    if (tabsNode && value !== false) {\n      const children = tabListRef.current.children;\n      if (children.length > 0) {\n        const tab = children[valueToIndex.get(value)];\n        if (true) {\n          if (!tab) {\n            console.error([`MUI: The \\`value\\` provided to the Tabs component is invalid.`, `None of the Tabs' children match with \"${value}\".`, valueToIndex.keys ? `You can provide one of the following values: ${Array.from(valueToIndex.keys()).join(', ')}.` : null].join('\\n'));\n          }\n        }\n        tabMeta = tab ? tab.getBoundingClientRect() : null;\n        if (true) {\n          if ( true && !warnedOnceTabPresent && tabMeta && tabMeta.width === 0 && tabMeta.height === 0 &&\n          // if the whole Tabs component is hidden, don't warn\n          tabsMeta.clientWidth !== 0) {\n            tabsMeta = null;\n            console.error(['MUI: The `value` provided to the Tabs component is invalid.', `The Tab with this \\`value\\` (\"${value}\") is not part of the document layout.`, \"Make sure the tab item is present in the document or that it's not `display: none`.\"].join('\\n'));\n            warnedOnceTabPresent = true;\n          }\n        }\n      }\n    }\n    return {\n      tabsMeta,\n      tabMeta\n    };\n  };\n  const updateIndicatorState = (0,_utils_useEventCallback__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(() => {\n    const {\n      tabsMeta,\n      tabMeta\n    } = getTabsMeta();\n    let startValue = 0;\n    let startIndicator;\n    if (vertical) {\n      startIndicator = 'top';\n      if (tabMeta && tabsMeta) {\n        startValue = tabMeta.top - tabsMeta.top + tabsMeta.scrollTop;\n      }\n    } else {\n      startIndicator = isRtl ? 'right' : 'left';\n      if (tabMeta && tabsMeta) {\n        const correction = isRtl ? tabsMeta.scrollLeftNormalized + tabsMeta.clientWidth - tabsMeta.scrollWidth : tabsMeta.scrollLeft;\n        startValue = (isRtl ? -1 : 1) * (tabMeta[startIndicator] - tabsMeta[startIndicator] + correction);\n      }\n    }\n    const newIndicatorStyle = {\n      [startIndicator]: startValue,\n      // May be wrong until the font is loaded.\n      [size]: tabMeta ? tabMeta[size] : 0\n    };\n\n    // IE11 support, replace with Number.isNaN\n    // eslint-disable-next-line no-restricted-globals\n    if (isNaN(indicatorStyle[startIndicator]) || isNaN(indicatorStyle[size])) {\n      setIndicatorStyle(newIndicatorStyle);\n    } else {\n      const dStart = Math.abs(indicatorStyle[startIndicator] - newIndicatorStyle[startIndicator]);\n      const dSize = Math.abs(indicatorStyle[size] - newIndicatorStyle[size]);\n      if (dStart >= 1 || dSize >= 1) {\n        setIndicatorStyle(newIndicatorStyle);\n      }\n    }\n  });\n  const scroll = (scrollValue, {\n    animation = true\n  } = {}) => {\n    if (animation) {\n      (0,_internal_animate__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(scrollStart, tabsRef.current, scrollValue, {\n        duration: theme.transitions.duration.standard\n      });\n    } else {\n      tabsRef.current[scrollStart] = scrollValue;\n    }\n  };\n  const moveTabsScroll = delta => {\n    let scrollValue = tabsRef.current[scrollStart];\n    if (vertical) {\n      scrollValue += delta;\n    } else {\n      scrollValue += delta * (isRtl ? -1 : 1);\n      // Fix for Edge\n      scrollValue *= isRtl && (0,_utils_scrollLeft__WEBPACK_IMPORTED_MODULE_13__.detectScrollType)() === 'reverse' ? -1 : 1;\n    }\n    scroll(scrollValue);\n  };\n  const getScrollSize = () => {\n    const containerSize = tabsRef.current[clientSize];\n    let totalSize = 0;\n    const children = Array.from(tabListRef.current.children);\n    for (let i = 0; i < children.length; i += 1) {\n      const tab = children[i];\n      if (totalSize + tab[clientSize] > containerSize) {\n        // If the first item is longer than the container size, then only scroll\n        // by the container size.\n        if (i === 0) {\n          totalSize = containerSize;\n        }\n        break;\n      }\n      totalSize += tab[clientSize];\n    }\n    return totalSize;\n  };\n  const handleStartScrollClick = () => {\n    moveTabsScroll(-1 * getScrollSize());\n  };\n  const handleEndScrollClick = () => {\n    moveTabsScroll(getScrollSize());\n  };\n\n  // TODO Remove <ScrollbarSize /> as browser support for hidding the scrollbar\n  // with CSS improves.\n  const handleScrollbarSizeChange = react__WEBPACK_IMPORTED_MODULE_2__.useCallback(scrollbarWidth => {\n    setScrollerStyle({\n      overflow: null,\n      scrollbarWidth\n    });\n  }, []);\n  const getConditionalElements = () => {\n    const conditionalElements = {};\n    conditionalElements.scrollbarSizeListener = scrollable ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(TabsScrollbarSize, {\n      onChange: handleScrollbarSizeChange,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(classes.scrollableX, classes.hideScrollbar)\n    }) : null;\n    const scrollButtonsActive = displayScroll.start || displayScroll.end;\n    const showScrollButtons = scrollable && (scrollButtons === 'auto' && scrollButtonsActive || scrollButtons === true);\n    conditionalElements.scrollButtonStart = showScrollButtons ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(ScrollButtonComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      orientation: orientation,\n      direction: isRtl ? 'right' : 'left',\n      onClick: handleStartScrollClick,\n      disabled: !displayScroll.start\n    }, TabScrollButtonProps, {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(classes.scrollButtons, TabScrollButtonProps.className)\n    })) : null;\n    conditionalElements.scrollButtonEnd = showScrollButtons ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(ScrollButtonComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      orientation: orientation,\n      direction: isRtl ? 'left' : 'right',\n      onClick: handleEndScrollClick,\n      disabled: !displayScroll.end\n    }, TabScrollButtonProps, {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(classes.scrollButtons, TabScrollButtonProps.className)\n    })) : null;\n    return conditionalElements;\n  };\n  const scrollSelectedIntoView = (0,_utils_useEventCallback__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(animation => {\n    const {\n      tabsMeta,\n      tabMeta\n    } = getTabsMeta();\n    if (!tabMeta || !tabsMeta) {\n      return;\n    }\n    if (tabMeta[start] < tabsMeta[start]) {\n      // left side of button is out of view\n      const nextScrollStart = tabsMeta[scrollStart] + (tabMeta[start] - tabsMeta[start]);\n      scroll(nextScrollStart, {\n        animation\n      });\n    } else if (tabMeta[end] > tabsMeta[end]) {\n      // right side of button is out of view\n      const nextScrollStart = tabsMeta[scrollStart] + (tabMeta[end] - tabsMeta[end]);\n      scroll(nextScrollStart, {\n        animation\n      });\n    }\n  });\n  const updateScrollButtonState = (0,_utils_useEventCallback__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(() => {\n    if (scrollable && scrollButtons !== false) {\n      const {\n        scrollTop,\n        scrollHeight,\n        clientHeight,\n        scrollWidth,\n        clientWidth\n      } = tabsRef.current;\n      let showStartScroll;\n      let showEndScroll;\n      if (vertical) {\n        showStartScroll = scrollTop > 1;\n        showEndScroll = scrollTop < scrollHeight - clientHeight - 1;\n      } else {\n        const scrollLeft = (0,_utils_scrollLeft__WEBPACK_IMPORTED_MODULE_13__.getNormalizedScrollLeft)(tabsRef.current, theme.direction);\n        // use 1 for the potential rounding error with browser zooms.\n        showStartScroll = isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n        showEndScroll = !isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n      }\n      if (showStartScroll !== displayScroll.start || showEndScroll !== displayScroll.end) {\n        setDisplayScroll({\n          start: showStartScroll,\n          end: showEndScroll\n        });\n      }\n    }\n  });\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    const handleResize = (0,_utils_debounce__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(() => {\n      // If the Tabs component is replaced by Suspense with a fallback, the last\n      // ResizeObserver's handler that runs because of the change in the layout is trying to\n      // access a dom node that is no longer there (as the fallback component is being shown instead).\n      // See https://github.com/mui/material-ui/issues/33276\n      // TODO: Add tests that will ensure the component is not failing when\n      // replaced by Suspense with a fallback, once React is updated to version 18\n      if (tabsRef.current) {\n        updateIndicatorState();\n        updateScrollButtonState();\n      }\n    });\n    const win = (0,_utils_ownerWindow__WEBPACK_IMPORTED_MODULE_17__[\"default\"])(tabsRef.current);\n    win.addEventListener('resize', handleResize);\n    let resizeObserver;\n    if (typeof ResizeObserver !== 'undefined') {\n      resizeObserver = new ResizeObserver(handleResize);\n      Array.from(tabListRef.current.children).forEach(child => {\n        resizeObserver.observe(child);\n      });\n    }\n    return () => {\n      handleResize.clear();\n      win.removeEventListener('resize', handleResize);\n      if (resizeObserver) {\n        resizeObserver.disconnect();\n      }\n    };\n  }, [updateIndicatorState, updateScrollButtonState]);\n  const handleTabsScroll = react__WEBPACK_IMPORTED_MODULE_2__.useMemo(() => (0,_utils_debounce__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(() => {\n    updateScrollButtonState();\n  }), [updateScrollButtonState]);\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    return () => {\n      handleTabsScroll.clear();\n    };\n  }, [handleTabsScroll]);\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    setMounted(true);\n  }, []);\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    updateIndicatorState();\n    updateScrollButtonState();\n  });\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    // Don't animate on the first render.\n    scrollSelectedIntoView(defaultIndicatorStyle !== indicatorStyle);\n  }, [scrollSelectedIntoView, indicatorStyle]);\n  react__WEBPACK_IMPORTED_MODULE_2__.useImperativeHandle(action, () => ({\n    updateIndicator: updateIndicatorState,\n    updateScrollButtons: updateScrollButtonState\n  }), [updateIndicatorState, updateScrollButtonState]);\n  const indicator = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(TabsIndicator, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, TabIndicatorProps, {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(classes.indicator, TabIndicatorProps.className),\n    ownerState: ownerState,\n    style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, indicatorStyle, TabIndicatorProps.style)\n  }));\n  let childIndex = 0;\n  const children = react__WEBPACK_IMPORTED_MODULE_2__.Children.map(childrenProp, child => {\n    if (! /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.isValidElement(child)) {\n      return null;\n    }\n    if (true) {\n      if ((0,react_is__WEBPACK_IMPORTED_MODULE_3__.isFragment)(child)) {\n        console.error([\"MUI: The Tabs component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    const childValue = child.props.value === undefined ? childIndex : child.props.value;\n    valueToIndex.set(childValue, childIndex);\n    const selected = childValue === value;\n    childIndex += 1;\n    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(child, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      fullWidth: variant === 'fullWidth',\n      indicator: selected && !mounted && indicator,\n      selected,\n      selectionFollowsFocus,\n      onChange,\n      textColor,\n      value: childValue\n    }, childIndex === 1 && value === false && !child.props.tabIndex ? {\n      tabIndex: 0\n    } : {}));\n  });\n  const handleKeyDown = event => {\n    const list = tabListRef.current;\n    const currentFocus = (0,_utils_ownerDocument__WEBPACK_IMPORTED_MODULE_18__[\"default\"])(list).activeElement;\n    // Keyboard navigation assumes that [role=\"tab\"] are siblings\n    // though we might warn in the future about nested, interactive elements\n    // as a a11y violation\n    const role = currentFocus.getAttribute('role');\n    if (role !== 'tab') {\n      return;\n    }\n    let previousItemKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';\n    let nextItemKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown';\n    if (orientation === 'horizontal' && isRtl) {\n      // swap previousItemKey with nextItemKey\n      previousItemKey = 'ArrowRight';\n      nextItemKey = 'ArrowLeft';\n    }\n    switch (event.key) {\n      case previousItemKey:\n        event.preventDefault();\n        moveFocus(list, currentFocus, previousItem);\n        break;\n      case nextItemKey:\n        event.preventDefault();\n        moveFocus(list, currentFocus, nextItem);\n        break;\n      case 'Home':\n        event.preventDefault();\n        moveFocus(list, null, nextItem);\n        break;\n      case 'End':\n        event.preventDefault();\n        moveFocus(list, null, previousItem);\n        break;\n      default:\n        break;\n    }\n  };\n  const conditionalElements = getConditionalElements();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(TabsRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    as: component\n  }, other, {\n    children: [conditionalElements.scrollButtonStart, conditionalElements.scrollbarSizeListener, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(TabsScroller, {\n      className: classes.scroller,\n      ownerState: ownerState,\n      style: {\n        overflow: scrollerStyle.overflow,\n        [vertical ? `margin${isRtl ? 'Left' : 'Right'}` : 'marginBottom']: visibleScrollbar ? undefined : -scrollerStyle.scrollbarWidth\n      },\n      ref: tabsRef,\n      onScroll: handleTabsScroll,\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(FlexContainer, {\n        \"aria-label\": ariaLabel,\n        \"aria-labelledby\": ariaLabelledBy,\n        \"aria-orientation\": orientation === 'vertical' ? 'vertical' : null,\n        className: classes.flexContainer,\n        ownerState: ownerState,\n        onKeyDown: handleKeyDown,\n        ref: tabListRef,\n        role: \"tablist\",\n        children: children\n      }), mounted && indicator]\n    }), conditionalElements.scrollButtonEnd]\n  }));\n});\n true ? Tabs.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Callback fired when the component mounts.\n   * This is useful when you want to trigger an action programmatically.\n   * It supports two actions: `updateIndicator()` and `updateScrollButtons()`\n   *\n   * @param {object} actions This object contains all possible actions\n   * that can be triggered programmatically.\n   */\n  action: _mui_utils__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n  /**\n   * If `true`, the scroll buttons aren't forced hidden on mobile.\n   * By default the scroll buttons are hidden on mobile and takes precedence over `scrollButtons`.\n   * @default false\n   */\n  allowScrollButtonsMobile: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().bool),\n  /**\n   * The label for the Tabs as a string.\n   */\n  'aria-label': (prop_types__WEBPACK_IMPORTED_MODULE_20___default().string),\n  /**\n   * An id or list of ids separated by a space that label the Tabs.\n   */\n  'aria-labelledby': (prop_types__WEBPACK_IMPORTED_MODULE_20___default().string),\n  /**\n   * If `true`, the tabs are centered.\n   * This prop is intended for large views.\n   * @default false\n   */\n  centered: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().bool),\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().string),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().elementType),\n  /**\n   * Determines the color of the indicator.\n   * @default 'primary'\n   */\n  indicatorColor: prop_types__WEBPACK_IMPORTED_MODULE_20___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_20___default().oneOf(['primary', 'secondary']), (prop_types__WEBPACK_IMPORTED_MODULE_20___default().string)]),\n  /**\n   * Callback fired when the value changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n   * @param {any} value We default to the index of the child (number)\n   */\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().func),\n  /**\n   * The component orientation (layout flow direction).\n   * @default 'horizontal'\n   */\n  orientation: prop_types__WEBPACK_IMPORTED_MODULE_20___default().oneOf(['horizontal', 'vertical']),\n  /**\n   * The component used to render the scroll buttons.\n   * @default TabScrollButton\n   */\n  ScrollButtonComponent: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().elementType),\n  /**\n   * Determine behavior of scroll buttons when tabs are set to scroll:\n   *\n   * - `auto` will only present them when not all the items are visible.\n   * - `true` will always present them.\n   * - `false` will never present them.\n   *\n   * By default the scroll buttons are hidden on mobile.\n   * This behavior can be disabled with `allowScrollButtonsMobile`.\n   * @default 'auto'\n   */\n  scrollButtons: prop_types__WEBPACK_IMPORTED_MODULE_20___default().oneOf(['auto', false, true]),\n  /**\n   * If `true` the selected tab changes on focus. Otherwise it only\n   * changes on activation.\n   */\n  selectionFollowsFocus: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().bool),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_20___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_20___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_20___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_20___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_20___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_20___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object)]),\n  /**\n   * Props applied to the tab indicator element.\n   * @default  {}\n   */\n  TabIndicatorProps: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object),\n  /**\n   * Props applied to the [`TabScrollButton`](/material-ui/api/tab-scroll-button/) element.\n   * @default {}\n   */\n  TabScrollButtonProps: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object),\n  /**\n   * Determines the color of the `Tab`.\n   * @default 'primary'\n   */\n  textColor: prop_types__WEBPACK_IMPORTED_MODULE_20___default().oneOf(['inherit', 'primary', 'secondary']),\n  /**\n   * The value of the currently selected `Tab`.\n   * If you don't want any selected `Tab`, you can set this prop to `false`.\n   */\n  value: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().any),\n  /**\n   * Determines additional display behavior of the tabs:\n   *\n   *  - `scrollable` will invoke scrolling properties and allow for horizontally\n   *  scrolling (or swiping) of the tab bar.\n   *  -`fullWidth` will make the tabs grow to use all the available space,\n   *  which should be used for small views, like on mobile.\n   *  - `standard` will render the default state.\n   * @default 'standard'\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_20___default().oneOf(['fullWidth', 'scrollable', 'standard']),\n  /**\n   * If `true`, the scrollbar is visible. It can be useful when displaying\n   * a long vertical list of tabs.\n   * @default false\n   */\n  visibleScrollbar: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().bool)\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Tabs);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Tabs/Tabs.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Tabs/tabsClasses.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/material/Tabs/tabsClasses.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTabsUtilityClass\": function() { return /* binding */ getTabsUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getTabsUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiTabs', slot);\n}\nconst tabsClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiTabs', ['root', 'vertical', 'flexContainer', 'flexContainerVertical', 'centered', 'scroller', 'fixed', 'scrollableX', 'scrollableY', 'hideScrollbar', 'scrollButtons', 'scrollButtonsHideMobile', 'indicator']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (tabsClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Tabs/tabsClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TextField/TextField.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/material/TextField/TextField.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useId.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/refType.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _Input__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Input */ \"./node_modules/@mui/material/Input/Input.js\");\n/* harmony import */ var _FilledInput__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../FilledInput */ \"./node_modules/@mui/material/FilledInput/FilledInput.js\");\n/* harmony import */ var _OutlinedInput__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../OutlinedInput */ \"./node_modules/@mui/material/OutlinedInput/OutlinedInput.js\");\n/* harmony import */ var _InputLabel__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../InputLabel */ \"./node_modules/@mui/material/InputLabel/InputLabel.js\");\n/* harmony import */ var _FormControl__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../FormControl */ \"./node_modules/@mui/material/FormControl/FormControl.js\");\n/* harmony import */ var _FormHelperText__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../FormHelperText */ \"./node_modules/@mui/material/FormHelperText/FormHelperText.js\");\n/* harmony import */ var _Select__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../Select */ \"./node_modules/@mui/material/Select/Select.js\");\n/* harmony import */ var _textFieldClasses__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./textFieldClasses */ \"./node_modules/@mui/material/TextField/textFieldClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"autoComplete\", \"autoFocus\", \"children\", \"className\", \"color\", \"defaultValue\", \"disabled\", \"error\", \"FormHelperTextProps\", \"fullWidth\", \"helperText\", \"id\", \"InputLabelProps\", \"inputProps\", \"InputProps\", \"inputRef\", \"label\", \"maxRows\", \"minRows\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"placeholder\", \"required\", \"rows\", \"select\", \"SelectProps\", \"type\", \"value\", \"variant\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst variantComponent = {\n  standard: _Input__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n  filled: _FilledInput__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n  outlined: _OutlinedInput__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(slots, _textFieldClasses__WEBPACK_IMPORTED_MODULE_9__.getTextFieldUtilityClass, classes);\n};\nconst TextFieldRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(_FormControl__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n  name: 'MuiTextField',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n * The `TextField` is a convenience wrapper for the most common cases (80%).\n * It cannot be all things to all people, otherwise the API would grow out of control.\n *\n * ## Advanced Configuration\n *\n * It's important to understand that the text field is a simple abstraction\n * on top of the following components:\n *\n * - [FormControl](/material-ui/api/form-control/)\n * - [InputLabel](/material-ui/api/input-label/)\n * - [FilledInput](/material-ui/api/filled-input/)\n * - [OutlinedInput](/material-ui/api/outlined-input/)\n * - [Input](/material-ui/api/input/)\n * - [FormHelperText](/material-ui/api/form-helper-text/)\n *\n * If you wish to alter the props applied to the `input` element, you can do so as follows:\n *\n * ```jsx\n * const inputProps = {\n *   step: 300,\n * };\n *\n * return <TextField id=\"time\" type=\"time\" inputProps={inputProps} />;\n * ```\n *\n * For advanced cases, please look at the source of TextField by clicking on the\n * \"Edit this page\" button above. Consider either:\n *\n * - using the upper case props for passing values directly to the components\n * - using the underlying components directly as shown in the demos\n */\nconst TextField = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function TextField(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_12__[\"default\"])({\n    props: inProps,\n    name: 'MuiTextField'\n  });\n  const {\n      autoComplete,\n      autoFocus = false,\n      children,\n      className,\n      color = 'primary',\n      defaultValue,\n      disabled = false,\n      error = false,\n      FormHelperTextProps,\n      fullWidth = false,\n      helperText,\n      id: idOverride,\n      InputLabelProps,\n      inputProps,\n      InputProps,\n      inputRef,\n      label,\n      maxRows,\n      minRows,\n      multiline = false,\n      name,\n      onBlur,\n      onChange,\n      onFocus,\n      placeholder,\n      required = false,\n      rows,\n      select = false,\n      SelectProps,\n      type,\n      value,\n      variant = 'outlined'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n    autoFocus,\n    color,\n    disabled,\n    error,\n    fullWidth,\n    multiline,\n    required,\n    select,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  if (true) {\n    if (select && !children) {\n      console.error('MUI: `children` must be passed when using the `TextField` component with `select`.');\n    }\n  }\n  const InputMore = {};\n  if (variant === 'outlined') {\n    if (InputLabelProps && typeof InputLabelProps.shrink !== 'undefined') {\n      InputMore.notched = InputLabelProps.shrink;\n    }\n    InputMore.label = label;\n  }\n  if (select) {\n    // unset defaults from textbox inputs\n    if (!SelectProps || !SelectProps.native) {\n      InputMore.id = undefined;\n    }\n    InputMore['aria-describedby'] = undefined;\n  }\n  const id = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(idOverride);\n  const helperTextId = helperText && id ? `${id}-helper-text` : undefined;\n  const inputLabelId = label && id ? `${id}-label` : undefined;\n  const InputComponent = variantComponent[variant];\n  const InputElement = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(InputComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    \"aria-describedby\": helperTextId,\n    autoComplete: autoComplete,\n    autoFocus: autoFocus,\n    defaultValue: defaultValue,\n    fullWidth: fullWidth,\n    multiline: multiline,\n    name: name,\n    rows: rows,\n    maxRows: maxRows,\n    minRows: minRows,\n    type: type,\n    value: value,\n    id: id,\n    inputRef: inputRef,\n    onBlur: onBlur,\n    onChange: onChange,\n    onFocus: onFocus,\n    placeholder: placeholder,\n    inputProps: inputProps\n  }, InputMore, InputProps));\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(TextFieldRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    disabled: disabled,\n    error: error,\n    fullWidth: fullWidth,\n    ref: ref,\n    required: required,\n    color: color,\n    variant: variant,\n    ownerState: ownerState\n  }, other, {\n    children: [label != null && label !== '' && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_InputLabel__WEBPACK_IMPORTED_MODULE_14__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      htmlFor: id,\n      id: inputLabelId\n    }, InputLabelProps, {\n      children: label\n    })), select ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_Select__WEBPACK_IMPORTED_MODULE_15__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      \"aria-describedby\": helperTextId,\n      id: id,\n      labelId: inputLabelId,\n      value: value,\n      input: InputElement\n    }, SelectProps, {\n      children: children\n    })) : InputElement, helperText && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_FormHelperText__WEBPACK_IMPORTED_MODULE_16__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      id: helperTextId\n    }, FormHelperTextProps, {\n      children: helperText\n    }))]\n  }));\n});\n true ? TextField.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string),\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   * @default false\n   */\n  autoFocus: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * @ignore\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string),\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'primary'\n   */\n  color: prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string)]),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().any),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * If `true`, the label is displayed in an error state.\n   * @default false\n   */\n  error: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * Props applied to the [`FormHelperText`](/material-ui/api/form-helper-text/) element.\n   */\n  FormHelperTextProps: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object),\n  /**\n   * If `true`, the input will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * The helper text content.\n   */\n  helperText: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().node),\n  /**\n   * The id of the `input` element.\n   * Use this prop to make `label` and `helperText` accessible for screen readers.\n   */\n  id: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string),\n  /**\n   * Props applied to the [`InputLabel`](/material-ui/api/input-label/) element.\n   * Pointer events like `onClick` are enabled if and only if `shrink` is `true`.\n   */\n  InputLabelProps: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object),\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object),\n  /**\n   * Props applied to the Input element.\n   * It will be a [`FilledInput`](/material-ui/api/filled-input/),\n   * [`OutlinedInput`](/material-ui/api/outlined-input/) or [`Input`](/material-ui/api/input/)\n   * component depending on the `variant` prop value.\n   */\n  InputProps: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object),\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: _mui_utils__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n  /**\n   * The label content.\n   */\n  label: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().node),\n  /**\n   * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n   * @default 'none'\n   */\n  margin: prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOf(['dense', 'none', 'normal']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_17___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string)]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_17___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string)]),\n  /**\n   * If `true`, a `textarea` element is rendered instead of an input.\n   * @default false\n   */\n  multiline: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string),\n  /**\n   * @ignore\n   */\n  onBlur: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func),\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func),\n  /**\n   * @ignore\n   */\n  onFocus: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func),\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string),\n  /**\n   * If `true`, the label is displayed as required and the `input` element is required.\n   * @default false\n   */\n  required: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_17___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string)]),\n  /**\n   * Render a [`Select`](/material-ui/api/select/) element while passing the Input element to `Select` as `input` parameter.\n   * If this option is set you must pass the options of the select as children.\n   * @default false\n   */\n  select: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool),\n  /**\n   * Props applied to the [`Select`](/material-ui/api/select/) element.\n   */\n  SelectProps: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object),\n  /**\n   * The size of the component.\n   */\n  size: prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOf(['medium', 'small']), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string)]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_17___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_17___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object)]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   */\n  type: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().string),\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().any),\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_17___default().oneOf(['filled', 'outlined', 'standard'])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (TextField);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TextField/TextField.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TextField/index.js":
/*!*******************************************************!*\
  !*** ./node_modules/@mui/material/TextField/index.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _TextField__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getTextFieldUtilityClass\": function() { return /* reexport safe */ _textFieldClasses__WEBPACK_IMPORTED_MODULE_1__.getTextFieldUtilityClass; },\n/* harmony export */   \"textFieldClasses\": function() { return /* reexport safe */ _textFieldClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _TextField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TextField */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _textFieldClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./textFieldClasses */ \"./node_modules/@mui/material/TextField/textFieldClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TextField/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/TextField/textFieldClasses.js":
/*!******************************************************************!*\
  !*** ./node_modules/@mui/material/TextField/textFieldClasses.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTextFieldUtilityClass\": function() { return /* binding */ getTextFieldUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getTextFieldUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiTextField', slot);\n}\nconst textFieldClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiTextField', ['root']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (textFieldClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/TextField/textFieldClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Toolbar/Toolbar.js":
/*!*******************************************************!*\
  !*** ./node_modules/@mui/material/Toolbar/Toolbar.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _toolbarClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./toolbarClasses */ \"./node_modules/@mui/material/Toolbar/toolbarClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"className\", \"component\", \"disableGutters\", \"variant\"];\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _toolbarClasses__WEBPACK_IMPORTED_MODULE_6__.getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center'\n}, !ownerState.disableGutters && {\n  paddingLeft: theme.spacing(2),\n  paddingRight: theme.spacing(2),\n  [theme.breakpoints.up('sm')]: {\n    paddingLeft: theme.spacing(3),\n    paddingRight: theme.spacing(3)\n  }\n}, ownerState.variant === 'dense' && {\n  minHeight: 48\n}), ({\n  theme,\n  ownerState\n}) => ownerState.variant === 'regular' && theme.mixins.toolbar);\nconst Toolbar = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Toolbar(inProps, ref) {\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n      className,\n      component = 'div',\n      disableGutters = false,\n      variant = 'regular'\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    component,\n    disableGutters,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(ToolbarRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    as: component,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    ref: ref,\n    ownerState: ownerState\n  }, other));\n});\n true ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properites to be used to lay out the children.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().elementType),\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().bool),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_9___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_9___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_9___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_9___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_9___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object)]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_9___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_9___default().oneOf(['dense', 'regular']), (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Toolbar);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Toolbar/Toolbar.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Toolbar/index.js":
/*!*****************************************************!*\
  !*** ./node_modules/@mui/material/Toolbar/index.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _Toolbar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getToolbarUtilityClass\": function() { return /* reexport safe */ _toolbarClasses__WEBPACK_IMPORTED_MODULE_1__.getToolbarUtilityClass; },\n/* harmony export */   \"toolbarClasses\": function() { return /* reexport safe */ _toolbarClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _Toolbar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Toolbar */ \"./node_modules/@mui/material/Toolbar/Toolbar.js\");\n/* harmony import */ var _toolbarClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./toolbarClasses */ \"./node_modules/@mui/material/Toolbar/toolbarClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Toolbar/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Toolbar/toolbarClasses.js":
/*!**************************************************************!*\
  !*** ./node_modules/@mui/material/Toolbar/toolbarClasses.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getToolbarUtilityClass\": function() { return /* binding */ getToolbarUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getToolbarUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiToolbar', slot);\n}\nconst toolbarClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (toolbarClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Toolbar/toolbarClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Tooltip/Tooltip.js":
/*!*******************************************************!*\
  !*** ./node_modules/@mui/material/Tooltip/Tooltip.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"testReset\": function() { return /* binding */ testReset; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/elementAcceptingRef.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/base/utils/appendOwnerState.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/colorManipulator.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useTheme__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../styles/useTheme */ \"./node_modules/@mui/material/styles/useTheme.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _Grow__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../Grow */ \"./node_modules/@mui/material/Grow/Grow.js\");\n/* harmony import */ var _Popper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Popper */ \"./node_modules/@mui/material/Popper/Popper.js\");\n/* harmony import */ var _utils_useEventCallback__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/useEventCallback */ \"./node_modules/@mui/material/utils/useEventCallback.js\");\n/* harmony import */ var _utils_useForkRef__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../utils/useForkRef */ \"./node_modules/@mui/material/utils/useForkRef.js\");\n/* harmony import */ var _utils_useId__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/useId */ \"./node_modules/@mui/material/utils/useId.js\");\n/* harmony import */ var _utils_useIsFocusVisible__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utils/useIsFocusVisible */ \"./node_modules/@mui/material/utils/useIsFocusVisible.js\");\n/* harmony import */ var _utils_useControlled__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/useControlled */ \"./node_modules/@mui/material/utils/useControlled.js\");\n/* harmony import */ var _tooltipClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./tooltipClasses */ \"./node_modules/@mui/material/Tooltip/tooltipClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"arrow\", \"children\", \"classes\", \"components\", \"componentsProps\", \"describeChild\", \"disableFocusListener\", \"disableHoverListener\", \"disableInteractive\", \"disableTouchListener\", \"enterDelay\", \"enterNextDelay\", \"enterTouchDelay\", \"followCursor\", \"id\", \"leaveDelay\", \"leaveTouchDelay\", \"onClose\", \"onOpen\", \"open\", \"placement\", \"PopperComponent\", \"PopperProps\", \"slotProps\", \"slots\", \"title\", \"TransitionComponent\", \"TransitionProps\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction round(value) {\n  return Math.round(value * 1e5) / 1e5;\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableInteractive,\n    arrow,\n    touch,\n    placement\n  } = ownerState;\n  const slots = {\n    popper: ['popper', !disableInteractive && 'popperInteractive', arrow && 'popperArrow'],\n    tooltip: ['tooltip', arrow && 'tooltipArrow', touch && 'touch', `tooltipPlacement${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(placement.split('-')[0])}`],\n    arrow: ['arrow']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _tooltipClasses__WEBPACK_IMPORTED_MODULE_7__.getTooltipUtilityClass, classes);\n};\nconst TooltipPopper = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_Popper__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n  name: 'MuiTooltip',\n  slot: 'Popper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.popper, !ownerState.disableInteractive && styles.popperInteractive, ownerState.arrow && styles.popperArrow, !ownerState.open && styles.popperClose];\n  }\n})(({\n  theme,\n  ownerState,\n  open\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  zIndex: (theme.vars || theme).zIndex.tooltip,\n  pointerEvents: 'none'\n}, !ownerState.disableInteractive && {\n  pointerEvents: 'auto'\n}, !open && {\n  pointerEvents: 'none'\n}, ownerState.arrow && {\n  [`&[data-popper-placement*=\"bottom\"] .${_tooltipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].arrow}`]: {\n    top: 0,\n    marginTop: '-0.71em',\n    '&::before': {\n      transformOrigin: '0 100%'\n    }\n  },\n  [`&[data-popper-placement*=\"top\"] .${_tooltipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].arrow}`]: {\n    bottom: 0,\n    marginBottom: '-0.71em',\n    '&::before': {\n      transformOrigin: '100% 0'\n    }\n  },\n  [`&[data-popper-placement*=\"right\"] .${_tooltipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].arrow}`]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, !ownerState.isRtl ? {\n    left: 0,\n    marginLeft: '-0.71em'\n  } : {\n    right: 0,\n    marginRight: '-0.71em'\n  }, {\n    height: '1em',\n    width: '0.71em',\n    '&::before': {\n      transformOrigin: '100% 100%'\n    }\n  }),\n  [`&[data-popper-placement*=\"left\"] .${_tooltipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].arrow}`]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, !ownerState.isRtl ? {\n    right: 0,\n    marginRight: '-0.71em'\n  } : {\n    left: 0,\n    marginLeft: '-0.71em'\n  }, {\n    height: '1em',\n    width: '0.71em',\n    '&::before': {\n      transformOrigin: '0 0'\n    }\n  })\n}));\nconst TooltipTooltip = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n  name: 'MuiTooltip',\n  slot: 'Tooltip',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.tooltip, ownerState.touch && styles.touch, ownerState.arrow && styles.tooltipArrow, styles[`tooltipPlacement${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.placement.split('-')[0])}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  backgroundColor: theme.vars ? theme.vars.palette.Tooltip.bg : (0,_mui_system__WEBPACK_IMPORTED_MODULE_10__.alpha)(theme.palette.grey[700], 0.92),\n  borderRadius: (theme.vars || theme).shape.borderRadius,\n  color: (theme.vars || theme).palette.common.white,\n  fontFamily: theme.typography.fontFamily,\n  padding: '4px 8px',\n  fontSize: theme.typography.pxToRem(11),\n  maxWidth: 300,\n  margin: 2,\n  wordWrap: 'break-word',\n  fontWeight: theme.typography.fontWeightMedium\n}, ownerState.arrow && {\n  position: 'relative',\n  margin: 0\n}, ownerState.touch && {\n  padding: '8px 16px',\n  fontSize: theme.typography.pxToRem(14),\n  lineHeight: `${round(16 / 14)}em`,\n  fontWeight: theme.typography.fontWeightRegular\n}, {\n  [`.${_tooltipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].popper}[data-popper-placement*=\"left\"] &`]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    transformOrigin: 'right center'\n  }, !ownerState.isRtl ? (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    marginRight: '14px'\n  }, ownerState.touch && {\n    marginRight: '24px'\n  }) : (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    marginLeft: '14px'\n  }, ownerState.touch && {\n    marginLeft: '24px'\n  })),\n  [`.${_tooltipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].popper}[data-popper-placement*=\"right\"] &`]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    transformOrigin: 'left center'\n  }, !ownerState.isRtl ? (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    marginLeft: '14px'\n  }, ownerState.touch && {\n    marginLeft: '24px'\n  }) : (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    marginRight: '14px'\n  }, ownerState.touch && {\n    marginRight: '24px'\n  })),\n  [`.${_tooltipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].popper}[data-popper-placement*=\"top\"] &`]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    transformOrigin: 'center bottom',\n    marginBottom: '14px'\n  }, ownerState.touch && {\n    marginBottom: '24px'\n  }),\n  [`.${_tooltipClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].popper}[data-popper-placement*=\"bottom\"] &`]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    transformOrigin: 'center top',\n    marginTop: '14px'\n  }, ownerState.touch && {\n    marginTop: '24px'\n  })\n}));\nconst TooltipArrow = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('span', {\n  name: 'MuiTooltip',\n  slot: 'Arrow',\n  overridesResolver: (props, styles) => styles.arrow\n})(({\n  theme\n}) => ({\n  overflow: 'hidden',\n  position: 'absolute',\n  width: '1em',\n  height: '0.71em' /* = width / sqrt(2) = (length of the hypotenuse) */,\n  boxSizing: 'border-box',\n  color: theme.vars ? theme.vars.palette.Tooltip.bg : (0,_mui_system__WEBPACK_IMPORTED_MODULE_10__.alpha)(theme.palette.grey[700], 0.9),\n  '&::before': {\n    content: '\"\"',\n    margin: 'auto',\n    display: 'block',\n    width: '100%',\n    height: '100%',\n    backgroundColor: 'currentColor',\n    transform: 'rotate(45deg)'\n  }\n}));\nlet hystersisOpen = false;\nlet hystersisTimer = null;\nlet cursorPosition = {\n  x: 0,\n  y: 0\n};\nfunction testReset() {\n  hystersisOpen = false;\n  clearTimeout(hystersisTimer);\n}\nfunction composeEventHandler(handler, eventHandler) {\n  return event => {\n    if (eventHandler) {\n      eventHandler(event);\n    }\n    handler(event);\n  };\n}\n\n// TODO v6: Remove PopperComponent, PopperProps, TransitionComponent and TransitionProps.\nconst Tooltip = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Tooltip(inProps, ref) {\n  var _ref, _slots$popper, _ref2, _ref3, _slots$transition, _ref4, _slots$tooltip, _ref5, _slots$arrow, _slotProps$popper, _ref6, _slotProps$popper2, _slotProps$transition, _slotProps$tooltip, _ref7, _slotProps$tooltip2, _slotProps$arrow, _ref8, _slotProps$arrow2;\n  const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_11__[\"default\"])({\n    props: inProps,\n    name: 'MuiTooltip'\n  });\n  const {\n      arrow = false,\n      children,\n      components = {},\n      componentsProps = {},\n      describeChild = false,\n      disableFocusListener = false,\n      disableHoverListener = false,\n      disableInteractive: disableInteractiveProp = false,\n      disableTouchListener = false,\n      enterDelay = 100,\n      enterNextDelay = 0,\n      enterTouchDelay = 700,\n      followCursor = false,\n      id: idProp,\n      leaveDelay = 0,\n      leaveTouchDelay = 1500,\n      onClose,\n      onOpen,\n      open: openProp,\n      placement = 'bottom',\n      PopperComponent: PopperComponentProp,\n      PopperProps = {},\n      slotProps = {},\n      slots = {},\n      title,\n      TransitionComponent: TransitionComponentProp = _Grow__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n      TransitionProps\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const theme = (0,_styles_useTheme__WEBPACK_IMPORTED_MODULE_13__[\"default\"])();\n  const isRtl = theme.direction === 'rtl';\n  const [childNode, setChildNode] = react__WEBPACK_IMPORTED_MODULE_2__.useState();\n  const [arrowRef, setArrowRef] = react__WEBPACK_IMPORTED_MODULE_2__.useState(null);\n  const ignoreNonTouchEvents = react__WEBPACK_IMPORTED_MODULE_2__.useRef(false);\n  const disableInteractive = disableInteractiveProp || followCursor;\n  const closeTimer = react__WEBPACK_IMPORTED_MODULE_2__.useRef();\n  const enterTimer = react__WEBPACK_IMPORTED_MODULE_2__.useRef();\n  const leaveTimer = react__WEBPACK_IMPORTED_MODULE_2__.useRef();\n  const touchTimer = react__WEBPACK_IMPORTED_MODULE_2__.useRef();\n  const [openState, setOpenState] = (0,_utils_useControlled__WEBPACK_IMPORTED_MODULE_14__[\"default\"])({\n    controlled: openProp,\n    default: false,\n    name: 'Tooltip',\n    state: 'open'\n  });\n  let open = openState;\n  if (true) {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const {\n      current: isControlled\n    } = react__WEBPACK_IMPORTED_MODULE_2__.useRef(openProp !== undefined);\n\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n      if (childNode && childNode.disabled && !isControlled && title !== '' && childNode.tagName.toLowerCase() === 'button') {\n        console.error(['MUI: You are providing a disabled `button` child to the Tooltip component.', 'A disabled element does not fire events.', \"Tooltip needs to listen to the child element's events to display the title.\", '', 'Add a simple wrapper element, such as a `span`.'].join('\\n'));\n      }\n    }, [title, childNode, isControlled]);\n  }\n  const id = (0,_utils_useId__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(idProp);\n  const prevUserSelect = react__WEBPACK_IMPORTED_MODULE_2__.useRef();\n  const stopTouchInteraction = react__WEBPACK_IMPORTED_MODULE_2__.useCallback(() => {\n    if (prevUserSelect.current !== undefined) {\n      document.body.style.WebkitUserSelect = prevUserSelect.current;\n      prevUserSelect.current = undefined;\n    }\n    clearTimeout(touchTimer.current);\n  }, []);\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    return () => {\n      clearTimeout(closeTimer.current);\n      clearTimeout(enterTimer.current);\n      clearTimeout(leaveTimer.current);\n      stopTouchInteraction();\n    };\n  }, [stopTouchInteraction]);\n  const handleOpen = event => {\n    clearTimeout(hystersisTimer);\n    hystersisOpen = true;\n\n    // The mouseover event will trigger for every nested element in the tooltip.\n    // We can skip rerendering when the tooltip is already open.\n    // We are using the mouseover event instead of the mouseenter event to fix a hide/show issue.\n    setOpenState(true);\n    if (onOpen && !open) {\n      onOpen(event);\n    }\n  };\n  const handleClose = (0,_utils_useEventCallback__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(\n  /**\n   * @param {React.SyntheticEvent | Event} event\n   */\n  event => {\n    clearTimeout(hystersisTimer);\n    hystersisTimer = setTimeout(() => {\n      hystersisOpen = false;\n    }, 800 + leaveDelay);\n    setOpenState(false);\n    if (onClose && open) {\n      onClose(event);\n    }\n    clearTimeout(closeTimer.current);\n    closeTimer.current = setTimeout(() => {\n      ignoreNonTouchEvents.current = false;\n    }, theme.transitions.duration.shortest);\n  });\n  const handleEnter = event => {\n    if (ignoreNonTouchEvents.current && event.type !== 'touchstart') {\n      return;\n    }\n\n    // Remove the title ahead of time.\n    // We don't want to wait for the next render commit.\n    // We would risk displaying two tooltips at the same time (native + this one).\n    if (childNode) {\n      childNode.removeAttribute('title');\n    }\n    clearTimeout(enterTimer.current);\n    clearTimeout(leaveTimer.current);\n    if (enterDelay || hystersisOpen && enterNextDelay) {\n      enterTimer.current = setTimeout(() => {\n        handleOpen(event);\n      }, hystersisOpen ? enterNextDelay : enterDelay);\n    } else {\n      handleOpen(event);\n    }\n  };\n  const handleLeave = event => {\n    clearTimeout(enterTimer.current);\n    clearTimeout(leaveTimer.current);\n    leaveTimer.current = setTimeout(() => {\n      handleClose(event);\n    }, leaveDelay);\n  };\n  const {\n    isFocusVisibleRef,\n    onBlur: handleBlurVisible,\n    onFocus: handleFocusVisible,\n    ref: focusVisibleRef\n  } = (0,_utils_useIsFocusVisible__WEBPACK_IMPORTED_MODULE_17__[\"default\"])();\n  // We don't necessarily care about the focusVisible state (which is safe to access via ref anyway).\n  // We just need to re-render the Tooltip if the focus-visible state changes.\n  const [, setChildIsFocusVisible] = react__WEBPACK_IMPORTED_MODULE_2__.useState(false);\n  const handleBlur = event => {\n    handleBlurVisible(event);\n    if (isFocusVisibleRef.current === false) {\n      setChildIsFocusVisible(false);\n      handleLeave(event);\n    }\n  };\n  const handleFocus = event => {\n    // Workaround for https://github.com/facebook/react/issues/7769\n    // The autoFocus of React might trigger the event before the componentDidMount.\n    // We need to account for this eventuality.\n    if (!childNode) {\n      setChildNode(event.currentTarget);\n    }\n    handleFocusVisible(event);\n    if (isFocusVisibleRef.current === true) {\n      setChildIsFocusVisible(true);\n      handleEnter(event);\n    }\n  };\n  const detectTouchStart = event => {\n    ignoreNonTouchEvents.current = true;\n    const childrenProps = children.props;\n    if (childrenProps.onTouchStart) {\n      childrenProps.onTouchStart(event);\n    }\n  };\n  const handleMouseOver = handleEnter;\n  const handleMouseLeave = handleLeave;\n  const handleTouchStart = event => {\n    detectTouchStart(event);\n    clearTimeout(leaveTimer.current);\n    clearTimeout(closeTimer.current);\n    stopTouchInteraction();\n    prevUserSelect.current = document.body.style.WebkitUserSelect;\n    // Prevent iOS text selection on long-tap.\n    document.body.style.WebkitUserSelect = 'none';\n    touchTimer.current = setTimeout(() => {\n      document.body.style.WebkitUserSelect = prevUserSelect.current;\n      handleEnter(event);\n    }, enterTouchDelay);\n  };\n  const handleTouchEnd = event => {\n    if (children.props.onTouchEnd) {\n      children.props.onTouchEnd(event);\n    }\n    stopTouchInteraction();\n    clearTimeout(leaveTimer.current);\n    leaveTimer.current = setTimeout(() => {\n      handleClose(event);\n    }, leaveTouchDelay);\n  };\n  react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n    if (!open) {\n      return undefined;\n    }\n\n    /**\n     * @param {KeyboardEvent} nativeEvent\n     */\n    function handleKeyDown(nativeEvent) {\n      // IE11, Edge (prior to using Bink?) use 'Esc'\n      if (nativeEvent.key === 'Escape' || nativeEvent.key === 'Esc') {\n        handleClose(nativeEvent);\n      }\n    }\n    document.addEventListener('keydown', handleKeyDown);\n    return () => {\n      document.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [handleClose, open]);\n  const handleRef = (0,_utils_useForkRef__WEBPACK_IMPORTED_MODULE_18__[\"default\"])(children.ref, focusVisibleRef, setChildNode, ref);\n\n  // There is no point in displaying an empty tooltip.\n  if (!title && title !== 0) {\n    open = false;\n  }\n  const popperRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef();\n  const handleMouseMove = event => {\n    const childrenProps = children.props;\n    if (childrenProps.onMouseMove) {\n      childrenProps.onMouseMove(event);\n    }\n    cursorPosition = {\n      x: event.clientX,\n      y: event.clientY\n    };\n    if (popperRef.current) {\n      popperRef.current.update();\n    }\n  };\n  const nameOrDescProps = {};\n  const titleIsString = typeof title === 'string';\n  if (describeChild) {\n    nameOrDescProps.title = !open && titleIsString && !disableHoverListener ? title : null;\n    nameOrDescProps['aria-describedby'] = open ? id : null;\n  } else {\n    nameOrDescProps['aria-label'] = titleIsString ? title : null;\n    nameOrDescProps['aria-labelledby'] = open && !titleIsString ? id : null;\n  }\n  const childrenProps = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, nameOrDescProps, other, children.props, {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(other.className, children.props.className),\n    onTouchStart: detectTouchStart,\n    ref: handleRef\n  }, followCursor ? {\n    onMouseMove: handleMouseMove\n  } : {});\n  if (true) {\n    childrenProps['data-mui-internal-clone-element'] = true;\n\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n      if (childNode && !childNode.getAttribute('data-mui-internal-clone-element')) {\n        console.error(['MUI: The `children` component of the Tooltip is not forwarding its props correctly.', 'Please make sure that props are spread on the same element that the ref is applied to.'].join('\\n'));\n      }\n    }, [childNode]);\n  }\n  const interactiveWrapperListeners = {};\n  if (!disableTouchListener) {\n    childrenProps.onTouchStart = handleTouchStart;\n    childrenProps.onTouchEnd = handleTouchEnd;\n  }\n  if (!disableHoverListener) {\n    childrenProps.onMouseOver = composeEventHandler(handleMouseOver, childrenProps.onMouseOver);\n    childrenProps.onMouseLeave = composeEventHandler(handleMouseLeave, childrenProps.onMouseLeave);\n    if (!disableInteractive) {\n      interactiveWrapperListeners.onMouseOver = handleMouseOver;\n      interactiveWrapperListeners.onMouseLeave = handleMouseLeave;\n    }\n  }\n  if (!disableFocusListener) {\n    childrenProps.onFocus = composeEventHandler(handleFocus, childrenProps.onFocus);\n    childrenProps.onBlur = composeEventHandler(handleBlur, childrenProps.onBlur);\n    if (!disableInteractive) {\n      interactiveWrapperListeners.onFocus = handleFocus;\n      interactiveWrapperListeners.onBlur = handleBlur;\n    }\n  }\n  if (true) {\n    if (children.props.title) {\n      console.error(['MUI: You have provided a `title` prop to the child of <Tooltip />.', `Remove this title prop \\`${children.props.title}\\` or the Tooltip component.`].join('\\n'));\n    }\n  }\n  const popperOptions = react__WEBPACK_IMPORTED_MODULE_2__.useMemo(() => {\n    var _PopperProps$popperOp;\n    let tooltipModifiers = [{\n      name: 'arrow',\n      enabled: Boolean(arrowRef),\n      options: {\n        element: arrowRef,\n        padding: 4\n      }\n    }];\n    if ((_PopperProps$popperOp = PopperProps.popperOptions) != null && _PopperProps$popperOp.modifiers) {\n      tooltipModifiers = tooltipModifiers.concat(PopperProps.popperOptions.modifiers);\n    }\n    return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, PopperProps.popperOptions, {\n      modifiers: tooltipModifiers\n    });\n  }, [arrowRef, PopperProps]);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    isRtl,\n    arrow,\n    disableInteractive,\n    placement,\n    PopperComponentProp,\n    touch: ignoreNonTouchEvents.current\n  });\n  const classes = useUtilityClasses(ownerState);\n  const PopperComponent = (_ref = (_slots$popper = slots.popper) != null ? _slots$popper : components.Popper) != null ? _ref : TooltipPopper;\n  const TransitionComponent = (_ref2 = (_ref3 = (_slots$transition = slots.transition) != null ? _slots$transition : components.Transition) != null ? _ref3 : TransitionComponentProp) != null ? _ref2 : _Grow__WEBPACK_IMPORTED_MODULE_12__[\"default\"];\n  const TooltipComponent = (_ref4 = (_slots$tooltip = slots.tooltip) != null ? _slots$tooltip : components.Tooltip) != null ? _ref4 : TooltipTooltip;\n  const ArrowComponent = (_ref5 = (_slots$arrow = slots.arrow) != null ? _slots$arrow : components.Arrow) != null ? _ref5 : TooltipArrow;\n  const popperProps = (0,_mui_base__WEBPACK_IMPORTED_MODULE_19__[\"default\"])(PopperComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, PopperProps, (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper, {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.popper, PopperProps == null ? void 0 : PopperProps.className, (_ref6 = (_slotProps$popper2 = slotProps.popper) != null ? _slotProps$popper2 : componentsProps.popper) == null ? void 0 : _ref6.className)\n  }), ownerState);\n  const transitionProps = (0,_mui_base__WEBPACK_IMPORTED_MODULE_19__[\"default\"])(TransitionComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, TransitionProps, (_slotProps$transition = slotProps.transition) != null ? _slotProps$transition : componentsProps.transition), ownerState);\n  const tooltipProps = (0,_mui_base__WEBPACK_IMPORTED_MODULE_19__[\"default\"])(TooltipComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, (_slotProps$tooltip = slotProps.tooltip) != null ? _slotProps$tooltip : componentsProps.tooltip, {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.tooltip, (_ref7 = (_slotProps$tooltip2 = slotProps.tooltip) != null ? _slotProps$tooltip2 : componentsProps.tooltip) == null ? void 0 : _ref7.className)\n  }), ownerState);\n  const tooltipArrowProps = (0,_mui_base__WEBPACK_IMPORTED_MODULE_19__[\"default\"])(ArrowComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, (_slotProps$arrow = slotProps.arrow) != null ? _slotProps$arrow : componentsProps.arrow, {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.arrow, (_ref8 = (_slotProps$arrow2 = slotProps.arrow) != null ? _slotProps$arrow2 : componentsProps.arrow) == null ? void 0 : _ref8.className)\n  }), ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n    children: [/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(children, childrenProps), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(PopperComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      as: PopperComponentProp != null ? PopperComponentProp : _Popper__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n      placement: placement,\n      anchorEl: followCursor ? {\n        getBoundingClientRect: () => ({\n          top: cursorPosition.y,\n          left: cursorPosition.x,\n          right: cursorPosition.x,\n          bottom: cursorPosition.y,\n          width: 0,\n          height: 0\n        })\n      } : childNode,\n      popperRef: popperRef,\n      open: childNode ? open : false,\n      id: id,\n      transition: true\n    }, interactiveWrapperListeners, popperProps, {\n      popperOptions: popperOptions,\n      children: ({\n        TransitionProps: TransitionPropsInner\n      }) => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TransitionComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n        timeout: theme.transitions.duration.shorter\n      }, TransitionPropsInner, transitionProps, {\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(TooltipComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, tooltipProps, {\n          children: [title, arrow ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(ArrowComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, tooltipArrowProps, {\n            ref: setArrowRef\n          })) : null]\n        }))\n      }))\n    }))]\n  });\n});\n true ? Tooltip.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, adds an arrow to the tooltip.\n   * @default false\n   */\n  arrow: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().bool),\n  /**\n   * Tooltip reference element.\n   */\n  children: _mui_utils__WEBPACK_IMPORTED_MODULE_21__[\"default\"].isRequired,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().string),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: prop_types__WEBPACK_IMPORTED_MODULE_20___default().shape({\n    Arrow: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().elementType),\n    Popper: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().elementType),\n    Tooltip: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().elementType),\n    Transition: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().elementType)\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: prop_types__WEBPACK_IMPORTED_MODULE_20___default().shape({\n    arrow: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object),\n    popper: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object),\n    tooltip: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object),\n    transition: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object)\n  }),\n  /**\n   * Set to `true` if the `title` acts as an accessible description.\n   * By default the `title` acts as an accessible label for the child.\n   * @default false\n   */\n  describeChild: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().bool),\n  /**\n   * Do not respond to focus-visible events.\n   * @default false\n   */\n  disableFocusListener: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().bool),\n  /**\n   * Do not respond to hover events.\n   * @default false\n   */\n  disableHoverListener: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().bool),\n  /**\n   * Makes a tooltip not interactive, i.e. it will close when the user\n   * hovers over the tooltip before the `leaveDelay` is expired.\n   * @default false\n   */\n  disableInteractive: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().bool),\n  /**\n   * Do not respond to long press touch events.\n   * @default false\n   */\n  disableTouchListener: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().bool),\n  /**\n   * The number of milliseconds to wait before showing the tooltip.\n   * This prop won't impact the enter touch delay (`enterTouchDelay`).\n   * @default 100\n   */\n  enterDelay: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().number),\n  /**\n   * The number of milliseconds to wait before showing the tooltip when one was already recently opened.\n   * @default 0\n   */\n  enterNextDelay: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().number),\n  /**\n   * The number of milliseconds a user must touch the element before showing the tooltip.\n   * @default 700\n   */\n  enterTouchDelay: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().number),\n  /**\n   * If `true`, the tooltip follow the cursor over the wrapped element.\n   * @default false\n   */\n  followCursor: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().bool),\n  /**\n   * This prop is used to help implement the accessibility logic.\n   * If you don't provide this prop. It falls back to a randomly generated id.\n   */\n  id: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().string),\n  /**\n   * The number of milliseconds to wait before hiding the tooltip.\n   * This prop won't impact the leave touch delay (`leaveTouchDelay`).\n   * @default 0\n   */\n  leaveDelay: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().number),\n  /**\n   * The number of milliseconds after the user stops touching an element before hiding the tooltip.\n   * @default 1500\n   */\n  leaveTouchDelay: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().number),\n  /**\n   * Callback fired when the component requests to be closed.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   */\n  onClose: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().func),\n  /**\n   * Callback fired when the component requests to be open.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   */\n  onOpen: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().func),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().bool),\n  /**\n   * Tooltip placement.\n   * @default 'bottom'\n   */\n  placement: prop_types__WEBPACK_IMPORTED_MODULE_20___default().oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n  /**\n   * The component used for the popper.\n   * @default Popper\n   */\n  PopperComponent: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().elementType),\n  /**\n   * Props applied to the [`Popper`](/material-ui/api/popper/) element.\n   * @default {}\n   */\n  PopperProps: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: prop_types__WEBPACK_IMPORTED_MODULE_20___default().shape({\n    arrow: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object),\n    popper: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object),\n    tooltip: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object),\n    transition: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object)\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: prop_types__WEBPACK_IMPORTED_MODULE_20___default().shape({\n    arrow: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().elementType),\n    popper: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().elementType),\n    tooltip: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().elementType),\n    transition: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().elementType)\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_20___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_20___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_20___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_20___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_20___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_20___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object)]),\n  /**\n   * Tooltip title. Zero-length titles string, undefined, null and false are never displayed.\n   */\n  title: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().node),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Grow\n   */\n  TransitionComponent: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().elementType),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n   */\n  TransitionProps: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object)\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Tooltip);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Tooltip/Tooltip.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Tooltip/index.js":
/*!*****************************************************!*\
  !*** ./node_modules/@mui/material/Tooltip/index.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _Tooltip__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getTooltipUtilityClass\": function() { return /* reexport safe */ _tooltipClasses__WEBPACK_IMPORTED_MODULE_1__.getTooltipUtilityClass; },\n/* harmony export */   \"tooltipClasses\": function() { return /* reexport safe */ _tooltipClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Tooltip */ \"./node_modules/@mui/material/Tooltip/Tooltip.js\");\n/* harmony import */ var _tooltipClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tooltipClasses */ \"./node_modules/@mui/material/Tooltip/tooltipClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Tooltip/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Tooltip/tooltipClasses.js":
/*!**************************************************************!*\
  !*** ./node_modules/@mui/material/Tooltip/tooltipClasses.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTooltipUtilityClass\": function() { return /* binding */ getTooltipUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getTooltipUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiTooltip', slot);\n}\nconst tooltipClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiTooltip', ['popper', 'popperInteractive', 'popperArrow', 'popperClose', 'tooltip', 'tooltipArrow', 'touch', 'tooltipPlacementLeft', 'tooltipPlacementRight', 'tooltipPlacementTop', 'tooltipPlacementBottom', 'arrow']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (tooltipClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Tooltip/tooltipClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Typography/Typography.js":
/*!*************************************************************!*\
  !*** ./node_modules/@mui/material/Typography/Typography.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TypographyRoot\": function() { return /* binding */ TypographyRoot; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles/useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _typographyClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./typographyClasses */ \"./node_modules/@mui/material/Typography/typographyClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"align\", \"className\", \"component\", \"gutterBottom\", \"noWrap\", \"paragraph\", \"variant\", \"variantMapping\"];\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    align,\n    gutterBottom,\n    noWrap,\n    paragraph,\n    variant,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, ownerState.align !== 'inherit' && `align${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(align)}`, gutterBottom && 'gutterBottom', noWrap && 'noWrap', paragraph && 'paragraph']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _typographyClasses__WEBPACK_IMPORTED_MODULE_7__.getTypographyUtilityClass, classes);\n};\nconst TypographyRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('span', {\n  name: 'MuiTypography',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.variant && styles[ownerState.variant], ownerState.align !== 'inherit' && styles[`align${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.align)}`], ownerState.noWrap && styles.noWrap, ownerState.gutterBottom && styles.gutterBottom, ownerState.paragraph && styles.paragraph];\n  }\n})(({\n  theme,\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  margin: 0\n}, ownerState.variant && theme.typography[ownerState.variant], ownerState.align !== 'inherit' && {\n  textAlign: ownerState.align\n}, ownerState.noWrap && {\n  overflow: 'hidden',\n  textOverflow: 'ellipsis',\n  whiteSpace: 'nowrap'\n}, ownerState.gutterBottom && {\n  marginBottom: '0.35em'\n}, ownerState.paragraph && {\n  marginBottom: 16\n}));\nconst defaultVariantMapping = {\n  h1: 'h1',\n  h2: 'h2',\n  h3: 'h3',\n  h4: 'h4',\n  h5: 'h5',\n  h6: 'h6',\n  subtitle1: 'h6',\n  subtitle2: 'h6',\n  body1: 'p',\n  body2: 'p',\n  inherit: 'p'\n};\n\n// TODO v6: deprecate these color values in v5.x and remove the transformation in v6\nconst colorTransformations = {\n  primary: 'primary.main',\n  textPrimary: 'text.primary',\n  secondary: 'secondary.main',\n  textSecondary: 'text.secondary',\n  error: 'error.main'\n};\nconst transformDeprecatedColors = color => {\n  return colorTransformations[color] || color;\n};\nconst Typography = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Typography(inProps, ref) {\n  const themeProps = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({\n    props: inProps,\n    name: 'MuiTypography'\n  });\n  const color = transformDeprecatedColors(themeProps.color);\n  const props = (0,_mui_system__WEBPACK_IMPORTED_MODULE_10__[\"default\"])((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, themeProps, {\n    color\n  }));\n  const {\n      align = 'inherit',\n      className,\n      component,\n      gutterBottom = false,\n      noWrap = false,\n      paragraph = false,\n      variant = 'body1',\n      variantMapping = defaultVariantMapping\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    align,\n    color,\n    className,\n    component,\n    gutterBottom,\n    noWrap,\n    paragraph,\n    variant,\n    variantMapping\n  });\n  const Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(TypographyRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    as: Component,\n    ref: ref,\n    ownerState: ownerState,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className)\n  }, other));\n});\n true ? Typography.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Set the text-align on the component.\n   * @default 'inherit'\n   */\n  align: prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOf(['center', 'inherit', 'justify', 'left', 'right']),\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().node),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().elementType),\n  /**\n   * If `true`, the text will have a bottom margin.\n   * @default false\n   */\n  gutterBottom: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * If `true`, the text will not wrap, but instead will truncate with a text overflow ellipsis.\n   *\n   * Note that text overflow can only happen with block or inline-block level elements\n   * (the element needs to have a width in order to overflow).\n   * @default false\n   */\n  noWrap: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * If `true`, the element will be a paragraph element.\n   * @default false\n   */\n  paragraph: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_11___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object)]),\n  /**\n   * Applies the theme typography styles.\n   * @default 'body1'\n   */\n  variant: prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string)]),\n  /**\n   * The component maps the variant prop to a range of different HTML element types.\n   * For instance, subtitle1 to `<h6>`.\n   * If you wish to change that mapping, you can provide your own.\n   * Alternatively, you can use the `component` prop.\n   * @default {\n   *   h1: 'h1',\n   *   h2: 'h2',\n   *   h3: 'h3',\n   *   h4: 'h4',\n   *   h5: 'h5',\n   *   h6: 'h6',\n   *   subtitle1: 'h6',\n   *   subtitle2: 'h6',\n   *   body1: 'p',\n   *   body2: 'p',\n   *   inherit: 'p',\n   * }\n   */\n  variantMapping: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object)\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Typography);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Typography/Typography.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Typography/index.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/material/Typography/index.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _Typography__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"getTypographyUtilityClass\": function() { return /* reexport safe */ _typographyClasses__WEBPACK_IMPORTED_MODULE_1__.getTypographyUtilityClass; },\n/* harmony export */   \"typographyClasses\": function() { return /* reexport safe */ _typographyClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _Typography__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Typography */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _typographyClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typographyClasses */ \"./node_modules/@mui/material/Typography/typographyClasses.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Typography/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Typography/typographyClasses.js":
/*!********************************************************************!*\
  !*** ./node_modules/@mui/material/Typography/typographyClasses.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTypographyUtilityClass\": function() { return /* binding */ getTypographyUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getTypographyUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiTypography', slot);\n}\nconst typographyClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiTypography', ['root', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'inherit', 'button', 'caption', 'overline', 'alignLeft', 'alignRight', 'alignCenter', 'alignJustify', 'noWrap', 'gutterBottom', 'paragraph']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (typographyClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Typography/typographyClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/Unstable_Grid2/Grid2.js":
/*!************************************************************!*\
  !*** ./node_modules/@mui/material/Unstable_Grid2/Grid2.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _mui_system_Unstable_Grid__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/system/Unstable_Grid */ \"./node_modules/@mui/system/esm/Unstable_Grid/createGrid.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../styles */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../styles */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n\n\n\nconst Grid2 = (0,_mui_system_Unstable_Grid__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  createStyledComponent: (0,_styles__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('div', {\n    name: 'MuiGrid2',\n    overridesResolver: (props, styles) => styles.root\n  }),\n  componentName: 'MuiGrid2',\n  // eslint-disable-next-line material-ui/mui-name-matches-component-name\n  useThemeProps: inProps => (0,_styles__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n    props: inProps,\n    name: 'MuiGrid2'\n  })\n});\n true ? Grid2.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n  /**\n   * @ignore\n   */\n  sx: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_3___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object)])\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Grid2);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/Unstable_Grid2/Grid2.js?");

/***/ }),

/***/ "./node_modules/@mui/material/colors/blue.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/material/colors/blue.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst blue = {\n  50: '#e3f2fd',\n  100: '#bbdefb',\n  200: '#90caf9',\n  300: '#64b5f6',\n  400: '#42a5f5',\n  500: '#2196f3',\n  600: '#1e88e5',\n  700: '#1976d2',\n  800: '#1565c0',\n  900: '#0d47a1',\n  A100: '#82b1ff',\n  A200: '#448aff',\n  A400: '#2979ff',\n  A700: '#2962ff'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (blue);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/colors/blue.js?");

/***/ }),

/***/ "./node_modules/@mui/material/colors/common.js":
/*!*****************************************************!*\
  !*** ./node_modules/@mui/material/colors/common.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst common = {\n  black: '#000',\n  white: '#fff'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (common);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/colors/common.js?");

/***/ }),

/***/ "./node_modules/@mui/material/colors/green.js":
/*!****************************************************!*\
  !*** ./node_modules/@mui/material/colors/green.js ***!
  \****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst green = {\n  50: '#e8f5e9',\n  100: '#c8e6c9',\n  200: '#a5d6a7',\n  300: '#81c784',\n  400: '#66bb6a',\n  500: '#4caf50',\n  600: '#43a047',\n  700: '#388e3c',\n  800: '#2e7d32',\n  900: '#1b5e20',\n  A100: '#b9f6ca',\n  A200: '#69f0ae',\n  A400: '#00e676',\n  A700: '#00c853'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (green);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/colors/green.js?");

/***/ }),

/***/ "./node_modules/@mui/material/colors/grey.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/material/colors/grey.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst grey = {\n  50: '#fafafa',\n  100: '#f5f5f5',\n  200: '#eeeeee',\n  300: '#e0e0e0',\n  400: '#bdbdbd',\n  500: '#9e9e9e',\n  600: '#757575',\n  700: '#616161',\n  800: '#424242',\n  900: '#212121',\n  A100: '#f5f5f5',\n  A200: '#eeeeee',\n  A400: '#bdbdbd',\n  A700: '#616161'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (grey);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/colors/grey.js?");

/***/ }),

/***/ "./node_modules/@mui/material/colors/lightBlue.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/material/colors/lightBlue.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst lightBlue = {\n  50: '#e1f5fe',\n  100: '#b3e5fc',\n  200: '#81d4fa',\n  300: '#4fc3f7',\n  400: '#29b6f6',\n  500: '#03a9f4',\n  600: '#039be5',\n  700: '#0288d1',\n  800: '#0277bd',\n  900: '#01579b',\n  A100: '#80d8ff',\n  A200: '#40c4ff',\n  A400: '#00b0ff',\n  A700: '#0091ea'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (lightBlue);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/colors/lightBlue.js?");

/***/ }),

/***/ "./node_modules/@mui/material/colors/orange.js":
/*!*****************************************************!*\
  !*** ./node_modules/@mui/material/colors/orange.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst orange = {\n  50: '#fff3e0',\n  100: '#ffe0b2',\n  200: '#ffcc80',\n  300: '#ffb74d',\n  400: '#ffa726',\n  500: '#ff9800',\n  600: '#fb8c00',\n  700: '#f57c00',\n  800: '#ef6c00',\n  900: '#e65100',\n  A100: '#ffd180',\n  A200: '#ffab40',\n  A400: '#ff9100',\n  A700: '#ff6d00'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (orange);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/colors/orange.js?");

/***/ }),

/***/ "./node_modules/@mui/material/colors/purple.js":
/*!*****************************************************!*\
  !*** ./node_modules/@mui/material/colors/purple.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst purple = {\n  50: '#f3e5f5',\n  100: '#e1bee7',\n  200: '#ce93d8',\n  300: '#ba68c8',\n  400: '#ab47bc',\n  500: '#9c27b0',\n  600: '#8e24aa',\n  700: '#7b1fa2',\n  800: '#6a1b9a',\n  900: '#4a148c',\n  A100: '#ea80fc',\n  A200: '#e040fb',\n  A400: '#d500f9',\n  A700: '#aa00ff'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (purple);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/colors/purple.js?");

/***/ }),

/***/ "./node_modules/@mui/material/colors/red.js":
/*!**************************************************!*\
  !*** ./node_modules/@mui/material/colors/red.js ***!
  \**************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst red = {\n  50: '#ffebee',\n  100: '#ffcdd2',\n  200: '#ef9a9a',\n  300: '#e57373',\n  400: '#ef5350',\n  500: '#f44336',\n  600: '#e53935',\n  700: '#d32f2f',\n  800: '#c62828',\n  900: '#b71c1c',\n  A100: '#ff8a80',\n  A200: '#ff5252',\n  A400: '#ff1744',\n  A700: '#d50000'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (red);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/colors/red.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/SwitchBase.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/material/internal/SwitchBase.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/refType.js\");\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/base */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _utils_useControlled__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/useControlled */ \"./node_modules/@mui/material/utils/useControlled.js\");\n/* harmony import */ var _FormControl_useFormControl__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../FormControl/useFormControl */ \"./node_modules/@mui/material/FormControl/useFormControl.js\");\n/* harmony import */ var _ButtonBase__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../ButtonBase */ \"./node_modules/@mui/material/ButtonBase/ButtonBase.js\");\n/* harmony import */ var _switchBaseClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./switchBaseClasses */ \"./node_modules/@mui/material/internal/switchBaseClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"autoFocus\", \"checked\", \"checkedIcon\", \"className\", \"defaultChecked\", \"disabled\", \"disableFocusRipple\", \"edge\", \"icon\", \"id\", \"inputProps\", \"inputRef\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"readOnly\", \"required\", \"tabIndex\", \"type\", \"value\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    checked,\n    disabled,\n    edge\n  } = ownerState;\n  const slots = {\n    root: ['root', checked && 'checked', disabled && 'disabled', edge && `edge${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(edge)}`],\n    input: ['input']\n  };\n  return (0,_mui_base__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _switchBaseClasses__WEBPACK_IMPORTED_MODULE_7__.getSwitchBaseUtilityClass, classes);\n};\nconst SwitchBaseRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_ButtonBase__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(({\n  ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n  padding: 9,\n  borderRadius: '50%'\n}, ownerState.edge === 'start' && {\n  marginLeft: ownerState.size === 'small' ? -3 : -12\n}, ownerState.edge === 'end' && {\n  marginRight: ownerState.size === 'small' ? -3 : -12\n}));\nconst SwitchBaseInput = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('input')({\n  cursor: 'inherit',\n  position: 'absolute',\n  opacity: 0,\n  width: '100%',\n  height: '100%',\n  top: 0,\n  left: 0,\n  margin: 0,\n  padding: 0,\n  zIndex: 1\n});\n\n/**\n * @ignore - internal component.\n */\nconst SwitchBase = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function SwitchBase(props, ref) {\n  const {\n      autoFocus,\n      checked: checkedProp,\n      checkedIcon,\n      className,\n      defaultChecked,\n      disabled: disabledProp,\n      disableFocusRipple = false,\n      edge = false,\n      icon,\n      id,\n      inputProps,\n      inputRef,\n      name,\n      onBlur,\n      onChange,\n      onFocus,\n      readOnly,\n      required = false,\n      tabIndex,\n      type,\n      value\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  const [checked, setCheckedState] = (0,_utils_useControlled__WEBPACK_IMPORTED_MODULE_10__[\"default\"])({\n    controlled: checkedProp,\n    default: Boolean(defaultChecked),\n    name: 'SwitchBase',\n    state: 'checked'\n  });\n  const muiFormControl = (0,_FormControl_useFormControl__WEBPACK_IMPORTED_MODULE_11__[\"default\"])();\n  const handleFocus = event => {\n    if (onFocus) {\n      onFocus(event);\n    }\n    if (muiFormControl && muiFormControl.onFocus) {\n      muiFormControl.onFocus(event);\n    }\n  };\n  const handleBlur = event => {\n    if (onBlur) {\n      onBlur(event);\n    }\n    if (muiFormControl && muiFormControl.onBlur) {\n      muiFormControl.onBlur(event);\n    }\n  };\n  const handleInputChange = event => {\n    // Workaround for https://github.com/facebook/react/issues/9023\n    if (event.nativeEvent.defaultPrevented) {\n      return;\n    }\n    const newChecked = event.target.checked;\n    setCheckedState(newChecked);\n    if (onChange) {\n      // TODO v6: remove the second argument.\n      onChange(event, newChecked);\n    }\n  };\n  let disabled = disabledProp;\n  if (muiFormControl) {\n    if (typeof disabled === 'undefined') {\n      disabled = muiFormControl.disabled;\n    }\n  }\n  const hasLabelFor = type === 'checkbox' || type === 'radio';\n  const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n    checked,\n    disabled,\n    disableFocusRipple,\n    edge\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(SwitchBaseRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    component: \"span\",\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n    centerRipple: true,\n    focusRipple: !disableFocusRipple,\n    disabled: disabled,\n    tabIndex: null,\n    role: undefined,\n    onFocus: handleFocus,\n    onBlur: handleBlur,\n    ownerState: ownerState,\n    ref: ref\n  }, other, {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(SwitchBaseInput, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      autoFocus: autoFocus,\n      checked: checkedProp,\n      defaultChecked: defaultChecked,\n      className: classes.input,\n      disabled: disabled,\n      id: hasLabelFor && id,\n      name: name,\n      onChange: handleInputChange,\n      readOnly: readOnly,\n      ref: inputRef,\n      required: required,\n      ownerState: ownerState,\n      tabIndex: tabIndex,\n      type: type\n    }, type === 'checkbox' && value === undefined ? {} : {\n      value\n    }, inputProps)), checked ? checkedIcon : icon]\n  }));\n});\n\n// NB: If changed, please update Checkbox, Switch and Radio\n// so that the API documentation is updated.\n true ? SwitchBase.propTypes = {\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * The icon to display when the component is checked.\n   */\n  checkedIcon: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().node.isRequired),\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object),\n  /**\n   * @ignore\n   */\n  className: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string),\n  /**\n   * @ignore\n   */\n  defaultChecked: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If given, uses a negative margin to counteract the padding on one\n   * side (this is often helpful for aligning the left or right\n   * side of the icon with content above or below, without ruining the border\n   * size and shape).\n   * @default false\n   */\n  edge: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOf(['end', 'start', false]),\n  /**\n   * The icon to display when the component is unchecked.\n   */\n  icon: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().node.isRequired),\n  /**\n   * The id of the `input` element.\n   */\n  id: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string),\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object),\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: _mui_utils__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n  /*\n   * @ignore\n   */\n  name: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string),\n  /**\n   * @ignore\n   */\n  onBlur: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func),\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func),\n  /**\n   * @ignore\n   */\n  onFocus: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func),\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * If `true`, the `input` element is required.\n   */\n  required: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object),\n  /**\n   * @ignore\n   */\n  tabIndex: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_12___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string)]),\n  /**\n   * The input component prop `type`.\n   */\n  type: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string.isRequired),\n  /**\n   * The value of the component.\n   */\n  value: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().any)\n} : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (SwitchBase);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/SwitchBase.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/animate.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/material/internal/animate.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ animate; }\n/* harmony export */ });\nfunction easeInOutSin(time) {\n  return (1 + Math.sin(Math.PI * time - Math.PI / 2)) / 2;\n}\nfunction animate(property, element, to, options = {}, cb = () => {}) {\n  const {\n    ease = easeInOutSin,\n    duration = 300 // standard\n  } = options;\n  let start = null;\n  const from = element[property];\n  let cancelled = false;\n  const cancel = () => {\n    cancelled = true;\n  };\n  const step = timestamp => {\n    if (cancelled) {\n      cb(new Error('Animation cancelled'));\n      return;\n    }\n    if (start === null) {\n      start = timestamp;\n    }\n    const time = Math.min(1, (timestamp - start) / duration);\n    element[property] = ease(time) * (to - from) + from;\n    if (time >= 1) {\n      requestAnimationFrame(() => {\n        cb(null);\n      });\n      return;\n    }\n    requestAnimationFrame(step);\n  };\n  if (from === to) {\n    cb(new Error('Element already at target position'));\n    return cancel;\n  }\n  requestAnimationFrame(step);\n  return cancel;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/animate.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/svg-icons/ArrowDownward.js":
/*!************************************************************************!*\
  !*** ./node_modules/@mui/material/internal/svg-icons/ArrowDownward.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n  d: \"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\"\n}), 'ArrowDownward'));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/svg-icons/ArrowDownward.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js":
/*!************************************************************************!*\
  !*** ./node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n  d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown'));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/svg-icons/Cancel.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@mui/material/internal/svg-icons/Cancel.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n  d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel'));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/svg-icons/Cancel.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/svg-icons/CheckBox.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@mui/material/internal/svg-icons/CheckBox.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n  d: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckBox'));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/svg-icons/CheckBox.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n  d: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'CheckBoxOutlineBlank'));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/svg-icons/Close.js":
/*!****************************************************************!*\
  !*** ./node_modules/@mui/material/internal/svg-icons/Close.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n/**\n * @ignore - internal component.\n *\n * Alias to `Clear`.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n  d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close'));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/svg-icons/Close.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/svg-icons/ErrorOutline.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@mui/material/internal/svg-icons/ErrorOutline.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n  d: \"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'ErrorOutline'));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/svg-icons/ErrorOutline.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/svg-icons/FirstPage.js":
/*!********************************************************************!*\
  !*** ./node_modules/@mui/material/internal/svg-icons/FirstPage.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n  d: \"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z\"\n}), 'FirstPage'));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/svg-icons/FirstPage.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n  d: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"\n}), 'IndeterminateCheckBox'));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/svg-icons/InfoOutlined.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@mui/material/internal/svg-icons/InfoOutlined.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n  d: \"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z\"\n}), 'InfoOutlined'));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/svg-icons/InfoOutlined.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/svg-icons/KeyboardArrowLeft.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@mui/material/internal/svg-icons/KeyboardArrowLeft.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n  d: \"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z\"\n}), 'KeyboardArrowLeft'));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/svg-icons/KeyboardArrowLeft.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/svg-icons/KeyboardArrowRight.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@mui/material/internal/svg-icons/KeyboardArrowRight.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n  d: \"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z\"\n}), 'KeyboardArrowRight'));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/svg-icons/KeyboardArrowRight.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/svg-icons/LastPage.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@mui/material/internal/svg-icons/LastPage.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n  d: \"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z\"\n}), 'LastPage'));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/svg-icons/LastPage.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n  d: \"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\"\n}), 'ReportProblemOutlined'));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n  d: \"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z\"\n}), 'SuccessOutlined'));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js?");

/***/ }),

/***/ "./node_modules/@mui/material/internal/switchBaseClasses.js":
/*!******************************************************************!*\
  !*** ./node_modules/@mui/material/internal/switchBaseClasses.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getSwitchBaseUtilityClass\": function() { return /* binding */ getSwitchBaseUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getSwitchBaseUtilityClass(slot) {\n  return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('PrivateSwitchBase', slot);\n}\nconst switchBaseClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('PrivateSwitchBase', ['root', 'checked', 'disabled', 'input', 'edgeStart', 'edgeEnd']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (switchBaseClasses);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/internal/switchBaseClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/material/node_modules/react-is/cjs/react-is.development.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@mui/material/node_modules/react-is/cjs/react-is.development.js ***!
  \**************************************************************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n  (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n          case REACT_SUSPENSE_LIST_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_SERVER_CONTEXT_TYPE:\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n    }\n  }\n\n  return false;\n}\nfunction isConcurrentMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n      hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n    }\n  }\n\n  return false;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n  return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/node_modules/react-is/cjs/react-is.development.js?");

/***/ }),

/***/ "./node_modules/@mui/material/node_modules/react-is/index.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@mui/material/node_modules/react-is/index.js ***!
  \*******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ \"./node_modules/@mui/material/node_modules/react-is/cjs/react-is.development.js\");\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/node_modules/react-is/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/CssVarsProvider.js":
/*!**************************************************************!*\
  !*** ./node_modules/@mui/material/styles/CssVarsProvider.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Experimental_CssVarsProvider\": function() { return /* binding */ CssVarsProvider; },\n/* harmony export */   \"getInitColorSchemeScript\": function() { return /* binding */ getInitColorSchemeScript; },\n/* harmony export */   \"shouldSkipGeneratingVar\": function() { return /* binding */ shouldSkipGeneratingVar; },\n/* harmony export */   \"useColorScheme\": function() { return /* binding */ useColorScheme; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/cssVars/createCssVarsProvider.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js\");\n/* harmony import */ var _experimental_extendTheme__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./experimental_extendTheme */ \"./node_modules/@mui/material/styles/experimental_extendTheme.js\");\n/* harmony import */ var _createTypography__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createTypography */ \"./node_modules/@mui/material/styles/createTypography.js\");\n/* harmony import */ var _excludeVariablesFromRoot__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./excludeVariablesFromRoot */ \"./node_modules/@mui/material/styles/excludeVariablesFromRoot.js\");\n\n\n\n\n\nconst shouldSkipGeneratingVar = keys => {\n  var _keys$;\n  return !!keys[0].match(/(typography|mixins|breakpoints|direction|transitions)/) || !!keys[0].match(/sxConfig$/) ||\n  // ends with sxConfig\n  keys[0] === 'palette' && !!((_keys$ = keys[1]) != null && _keys$.match(/(mode|contrastThreshold|tonalOffset)/));\n};\nconst defaultTheme = (0,_experimental_extendTheme__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\nconst {\n  CssVarsProvider,\n  useColorScheme,\n  getInitColorSchemeScript\n} = (0,_mui_system__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n  theme: defaultTheme,\n  attribute: 'data-mui-color-scheme',\n  modeStorageKey: 'mui-mode',\n  colorSchemeStorageKey: 'mui-color-scheme',\n  defaultColorScheme: {\n    light: 'light',\n    dark: 'dark'\n  },\n  resolveTheme: theme => {\n    const newTheme = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, theme, {\n      typography: (0,_createTypography__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(theme.palette, theme.typography)\n    });\n    newTheme.unstable_sx = function sx(props) {\n      return (0,_mui_system__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n        sx: props,\n        theme: this\n      });\n    };\n    return newTheme;\n  },\n  shouldSkipGeneratingVar,\n  excludeVariablesFromRoot: _excludeVariablesFromRoot__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/CssVarsProvider.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/adaptV4Theme.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/material/styles/adaptV4Theme.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ adaptV4Theme; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/createTheme/createSpacing.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/createTheme/createBreakpoints.js\");\n\n\nconst _excluded = [\"defaultProps\", \"mixins\", \"overrides\", \"palette\", \"props\", \"styleOverrides\"],\n  _excluded2 = [\"type\", \"mode\"];\n\nfunction adaptV4Theme(inputTheme) {\n  if (true) {\n    console.warn(['MUI: adaptV4Theme() is deprecated.', 'Follow the upgrade guide on https://mui.com/r/migration-v4#theme.'].join('\\n'));\n  }\n  const {\n      defaultProps = {},\n      mixins = {},\n      overrides = {},\n      palette = {},\n      props = {},\n      styleOverrides = {}\n    } = inputTheme,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(inputTheme, _excluded);\n  const theme = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, other, {\n    components: {}\n  });\n\n  // default props\n  Object.keys(defaultProps).forEach(component => {\n    const componentValue = theme.components[component] || {};\n    componentValue.defaultProps = defaultProps[component];\n    theme.components[component] = componentValue;\n  });\n  Object.keys(props).forEach(component => {\n    const componentValue = theme.components[component] || {};\n    componentValue.defaultProps = props[component];\n    theme.components[component] = componentValue;\n  });\n\n  // CSS overrides\n  Object.keys(styleOverrides).forEach(component => {\n    const componentValue = theme.components[component] || {};\n    componentValue.styleOverrides = styleOverrides[component];\n    theme.components[component] = componentValue;\n  });\n  Object.keys(overrides).forEach(component => {\n    const componentValue = theme.components[component] || {};\n    componentValue.styleOverrides = overrides[component];\n    theme.components[component] = componentValue;\n  });\n\n  // theme.spacing\n  theme.spacing = (0,_mui_system__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(inputTheme.spacing);\n\n  // theme.mixins.gutters\n  const breakpoints = (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(inputTheme.breakpoints || {});\n  const spacing = theme.spacing;\n  theme.mixins = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    gutters: (styles = {}) => {\n      return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n        paddingLeft: spacing(2),\n        paddingRight: spacing(2)\n      }, styles, {\n        [breakpoints.up('sm')]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n          paddingLeft: spacing(3),\n          paddingRight: spacing(3)\n        }, styles[breakpoints.up('sm')])\n      });\n    }\n  }, mixins);\n  const {\n      type: typeInput,\n      mode: modeInput\n    } = palette,\n    paletteRest = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(palette, _excluded2);\n  const finalMode = modeInput || typeInput || 'light';\n  theme.palette = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    // theme.palette.text.hint\n    text: {\n      hint: finalMode === 'dark' ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.38)'\n    },\n    mode: finalMode,\n    type: finalMode\n  }, paletteRest);\n  return theme;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/adaptV4Theme.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/createMixins.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/material/styles/createMixins.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ createMixins; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n\nfunction createMixins(breakpoints, mixins) {\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    toolbar: {\n      minHeight: 56,\n      [breakpoints.up('xs')]: {\n        '@media (orientation: landscape)': {\n          minHeight: 48\n        }\n      },\n      [breakpoints.up('sm')]: {\n        minHeight: 64\n      }\n    }\n  }, mixins);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/createMixins.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/createMuiStrictModeTheme.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@mui/material/styles/createMuiStrictModeTheme.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ createMuiStrictModeTheme; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/deepmerge.js\");\n/* harmony import */ var _createTheme__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createTheme */ \"./node_modules/@mui/material/styles/createTheme.js\");\n\n\nfunction createMuiStrictModeTheme(options, ...args) {\n  return (0,_createTheme__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    unstable_strictMode: true\n  }, options), ...args);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/createMuiStrictModeTheme.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/createPalette.js":
/*!************************************************************!*\
  !*** ./node_modules/@mui/material/styles/createPalette.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"dark\": function() { return /* binding */ dark; },\n/* harmony export */   \"default\": function() { return /* binding */ createPalette; },\n/* harmony export */   \"light\": function() { return /* binding */ light; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/deepmerge.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/colorManipulator.js\");\n/* harmony import */ var _colors_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../colors/common */ \"./node_modules/@mui/material/colors/common.js\");\n/* harmony import */ var _colors_grey__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../colors/grey */ \"./node_modules/@mui/material/colors/grey.js\");\n/* harmony import */ var _colors_purple__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../colors/purple */ \"./node_modules/@mui/material/colors/purple.js\");\n/* harmony import */ var _colors_red__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../colors/red */ \"./node_modules/@mui/material/colors/red.js\");\n/* harmony import */ var _colors_orange__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../colors/orange */ \"./node_modules/@mui/material/colors/orange.js\");\n/* harmony import */ var _colors_blue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../colors/blue */ \"./node_modules/@mui/material/colors/blue.js\");\n/* harmony import */ var _colors_lightBlue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../colors/lightBlue */ \"./node_modules/@mui/material/colors/lightBlue.js\");\n/* harmony import */ var _colors_green__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../colors/green */ \"./node_modules/@mui/material/colors/green.js\");\n\n\n\nconst _excluded = [\"mode\", \"contrastThreshold\", \"tonalOffset\"];\n\n\n\n\n\n\n\n\n\n\nconst light = {\n  // The colors used to style the text.\n  text: {\n    // The most important text.\n    primary: 'rgba(0, 0, 0, 0.87)',\n    // Secondary text.\n    secondary: 'rgba(0, 0, 0, 0.6)',\n    // Disabled text have even lower visual prominence.\n    disabled: 'rgba(0, 0, 0, 0.38)'\n  },\n  // The color used to divide different elements.\n  divider: 'rgba(0, 0, 0, 0.12)',\n  // The background colors used to style the surfaces.\n  // Consistency between these values is important.\n  background: {\n    paper: _colors_common__WEBPACK_IMPORTED_MODULE_2__[\"default\"].white,\n    default: _colors_common__WEBPACK_IMPORTED_MODULE_2__[\"default\"].white\n  },\n  // The colors used to style the action elements.\n  action: {\n    // The color of an active action like an icon button.\n    active: 'rgba(0, 0, 0, 0.54)',\n    // The color of an hovered action.\n    hover: 'rgba(0, 0, 0, 0.04)',\n    hoverOpacity: 0.04,\n    // The color of a selected action.\n    selected: 'rgba(0, 0, 0, 0.08)',\n    selectedOpacity: 0.08,\n    // The color of a disabled action.\n    disabled: 'rgba(0, 0, 0, 0.26)',\n    // The background color of a disabled action.\n    disabledBackground: 'rgba(0, 0, 0, 0.12)',\n    disabledOpacity: 0.38,\n    focus: 'rgba(0, 0, 0, 0.12)',\n    focusOpacity: 0.12,\n    activatedOpacity: 0.12\n  }\n};\nconst dark = {\n  text: {\n    primary: _colors_common__WEBPACK_IMPORTED_MODULE_2__[\"default\"].white,\n    secondary: 'rgba(255, 255, 255, 0.7)',\n    disabled: 'rgba(255, 255, 255, 0.5)',\n    icon: 'rgba(255, 255, 255, 0.5)'\n  },\n  divider: 'rgba(255, 255, 255, 0.12)',\n  background: {\n    paper: '#121212',\n    default: '#121212'\n  },\n  action: {\n    active: _colors_common__WEBPACK_IMPORTED_MODULE_2__[\"default\"].white,\n    hover: 'rgba(255, 255, 255, 0.08)',\n    hoverOpacity: 0.08,\n    selected: 'rgba(255, 255, 255, 0.16)',\n    selectedOpacity: 0.16,\n    disabled: 'rgba(255, 255, 255, 0.3)',\n    disabledBackground: 'rgba(255, 255, 255, 0.12)',\n    disabledOpacity: 0.38,\n    focus: 'rgba(255, 255, 255, 0.12)',\n    focusOpacity: 0.12,\n    activatedOpacity: 0.24\n  }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n  const tonalOffsetLight = tonalOffset.light || tonalOffset;\n  const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n  if (!intent[direction]) {\n    if (intent.hasOwnProperty(shade)) {\n      intent[direction] = intent[shade];\n    } else if (direction === 'light') {\n      intent.light = (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.lighten)(intent.main, tonalOffsetLight);\n    } else if (direction === 'dark') {\n      intent.dark = (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.darken)(intent.main, tonalOffsetDark);\n    }\n  }\n}\nfunction getDefaultPrimary(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: _colors_blue__WEBPACK_IMPORTED_MODULE_4__[\"default\"][200],\n      light: _colors_blue__WEBPACK_IMPORTED_MODULE_4__[\"default\"][50],\n      dark: _colors_blue__WEBPACK_IMPORTED_MODULE_4__[\"default\"][400]\n    };\n  }\n  return {\n    main: _colors_blue__WEBPACK_IMPORTED_MODULE_4__[\"default\"][700],\n    light: _colors_blue__WEBPACK_IMPORTED_MODULE_4__[\"default\"][400],\n    dark: _colors_blue__WEBPACK_IMPORTED_MODULE_4__[\"default\"][800]\n  };\n}\nfunction getDefaultSecondary(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: _colors_purple__WEBPACK_IMPORTED_MODULE_5__[\"default\"][200],\n      light: _colors_purple__WEBPACK_IMPORTED_MODULE_5__[\"default\"][50],\n      dark: _colors_purple__WEBPACK_IMPORTED_MODULE_5__[\"default\"][400]\n    };\n  }\n  return {\n    main: _colors_purple__WEBPACK_IMPORTED_MODULE_5__[\"default\"][500],\n    light: _colors_purple__WEBPACK_IMPORTED_MODULE_5__[\"default\"][300],\n    dark: _colors_purple__WEBPACK_IMPORTED_MODULE_5__[\"default\"][700]\n  };\n}\nfunction getDefaultError(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: _colors_red__WEBPACK_IMPORTED_MODULE_6__[\"default\"][500],\n      light: _colors_red__WEBPACK_IMPORTED_MODULE_6__[\"default\"][300],\n      dark: _colors_red__WEBPACK_IMPORTED_MODULE_6__[\"default\"][700]\n    };\n  }\n  return {\n    main: _colors_red__WEBPACK_IMPORTED_MODULE_6__[\"default\"][700],\n    light: _colors_red__WEBPACK_IMPORTED_MODULE_6__[\"default\"][400],\n    dark: _colors_red__WEBPACK_IMPORTED_MODULE_6__[\"default\"][800]\n  };\n}\nfunction getDefaultInfo(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: _colors_lightBlue__WEBPACK_IMPORTED_MODULE_7__[\"default\"][400],\n      light: _colors_lightBlue__WEBPACK_IMPORTED_MODULE_7__[\"default\"][300],\n      dark: _colors_lightBlue__WEBPACK_IMPORTED_MODULE_7__[\"default\"][700]\n    };\n  }\n  return {\n    main: _colors_lightBlue__WEBPACK_IMPORTED_MODULE_7__[\"default\"][700],\n    light: _colors_lightBlue__WEBPACK_IMPORTED_MODULE_7__[\"default\"][500],\n    dark: _colors_lightBlue__WEBPACK_IMPORTED_MODULE_7__[\"default\"][900]\n  };\n}\nfunction getDefaultSuccess(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: _colors_green__WEBPACK_IMPORTED_MODULE_8__[\"default\"][400],\n      light: _colors_green__WEBPACK_IMPORTED_MODULE_8__[\"default\"][300],\n      dark: _colors_green__WEBPACK_IMPORTED_MODULE_8__[\"default\"][700]\n    };\n  }\n  return {\n    main: _colors_green__WEBPACK_IMPORTED_MODULE_8__[\"default\"][800],\n    light: _colors_green__WEBPACK_IMPORTED_MODULE_8__[\"default\"][500],\n    dark: _colors_green__WEBPACK_IMPORTED_MODULE_8__[\"default\"][900]\n  };\n}\nfunction getDefaultWarning(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: _colors_orange__WEBPACK_IMPORTED_MODULE_9__[\"default\"][400],\n      light: _colors_orange__WEBPACK_IMPORTED_MODULE_9__[\"default\"][300],\n      dark: _colors_orange__WEBPACK_IMPORTED_MODULE_9__[\"default\"][700]\n    };\n  }\n  return {\n    main: '#ed6c02',\n    // closest to orange[800] that pass 3:1.\n    light: _colors_orange__WEBPACK_IMPORTED_MODULE_9__[\"default\"][500],\n    dark: _colors_orange__WEBPACK_IMPORTED_MODULE_9__[\"default\"][900]\n  };\n}\nfunction createPalette(palette) {\n  const {\n      mode = 'light',\n      contrastThreshold = 3,\n      tonalOffset = 0.2\n    } = palette,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(palette, _excluded);\n  const primary = palette.primary || getDefaultPrimary(mode);\n  const secondary = palette.secondary || getDefaultSecondary(mode);\n  const error = palette.error || getDefaultError(mode);\n  const info = palette.info || getDefaultInfo(mode);\n  const success = palette.success || getDefaultSuccess(mode);\n  const warning = palette.warning || getDefaultWarning(mode);\n\n  // Use the same logic as\n  // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n  // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n  function getContrastText(background) {\n    const contrastText = (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.getContrastRatio)(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n    if (true) {\n      const contrast = (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.getContrastRatio)(background, contrastText);\n      if (contrast < 3) {\n        console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n      }\n    }\n    return contrastText;\n  }\n  const augmentColor = ({\n    color,\n    name,\n    mainShade = 500,\n    lightShade = 300,\n    darkShade = 700\n  }) => {\n    color = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, color);\n    if (!color.main && color[mainShade]) {\n      color.main = color[mainShade];\n    }\n    if (!color.hasOwnProperty('main')) {\n      throw new Error( true ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : 0);\n    }\n    if (typeof color.main !== 'string') {\n      throw new Error( true ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n  primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n  primary: { main: green[500] },\n} });` : 0);\n    }\n    addLightOrDark(color, 'light', lightShade, tonalOffset);\n    addLightOrDark(color, 'dark', darkShade, tonalOffset);\n    if (!color.contrastText) {\n      color.contrastText = getContrastText(color.main);\n    }\n    return color;\n  };\n  const modes = {\n    dark,\n    light\n  };\n  if (true) {\n    if (!modes[mode]) {\n      console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n    }\n  }\n  const paletteOutput = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"])((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    // A collection of common colors.\n    common: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _colors_common__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n    // prevent mutable object.\n    // The palette mode, can be light or dark.\n    mode,\n    // The colors used to represent primary interface elements for a user.\n    primary: augmentColor({\n      color: primary,\n      name: 'primary'\n    }),\n    // The colors used to represent secondary interface elements for a user.\n    secondary: augmentColor({\n      color: secondary,\n      name: 'secondary',\n      mainShade: 'A400',\n      lightShade: 'A200',\n      darkShade: 'A700'\n    }),\n    // The colors used to represent interface elements that the user should be made aware of.\n    error: augmentColor({\n      color: error,\n      name: 'error'\n    }),\n    // The colors used to represent potentially dangerous actions or important messages.\n    warning: augmentColor({\n      color: warning,\n      name: 'warning'\n    }),\n    // The colors used to present information to the user that is neutral and not necessarily important.\n    info: augmentColor({\n      color: info,\n      name: 'info'\n    }),\n    // The colors used to indicate the successful completion of an action that user triggered.\n    success: augmentColor({\n      color: success,\n      name: 'success'\n    }),\n    // The grey colors.\n    grey: _colors_grey__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n    // Used by `getContrastText()` to maximize the contrast between\n    // the background and the text.\n    contrastThreshold,\n    // Takes a background color and returns the text color that maximizes the contrast.\n    getContrastText,\n    // Generate a rich color object.\n    augmentColor,\n    // Used by the functions below to shift a color's luminance by approximately\n    // two indexes within its tonal palette.\n    // E.g., shift from Red 500 to Red 300 or Red 700.\n    tonalOffset\n  }, modes[mode]), other);\n  return paletteOutput;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/createPalette.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/createStyles.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/material/styles/createStyles.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ createStyles; }\n/* harmony export */ });\nlet warnedOnce = false;\n\n// To remove in v6\nfunction createStyles(styles) {\n  if (!warnedOnce) {\n    console.warn(['MUI: createStyles from @mui/material/styles is deprecated.', 'Please use @mui/styles/createStyles'].join('\\n'));\n    warnedOnce = true;\n  }\n  return styles;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/createStyles.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/createTheme.js":
/*!**********************************************************!*\
  !*** ./node_modules/@mui/material/styles/createTheme.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createMuiTheme\": function() { return /* binding */ createMuiTheme; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/deepmerge.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/createTheme/createTheme.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js\");\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n/* harmony import */ var _createMixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createMixins */ \"./node_modules/@mui/material/styles/createMixins.js\");\n/* harmony import */ var _createPalette__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./createPalette */ \"./node_modules/@mui/material/styles/createPalette.js\");\n/* harmony import */ var _createTypography__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./createTypography */ \"./node_modules/@mui/material/styles/createTypography.js\");\n/* harmony import */ var _shadows__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./shadows */ \"./node_modules/@mui/material/styles/shadows.js\");\n/* harmony import */ var _createTransitions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./createTransitions */ \"./node_modules/@mui/material/styles/createTransitions.js\");\n/* harmony import */ var _zIndex__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./zIndex */ \"./node_modules/@mui/material/styles/zIndex.js\");\n\n\n\nconst _excluded = [\"breakpoints\", \"mixins\", \"spacing\", \"palette\", \"transitions\", \"typography\", \"shape\"];\n\n\n\n\n\n\n\n\n\nfunction createTheme(options = {}, ...args) {\n  const {\n      mixins: mixinsInput = {},\n      palette: paletteInput = {},\n      transitions: transitionsInput = {},\n      typography: typographyInput = {}\n    } = options,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(options, _excluded);\n  if (options.vars) {\n    throw new Error( true ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : 0);\n  }\n  const palette = (0,_createPalette__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(paletteInput);\n  const systemTheme = (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(options);\n  let muiTheme = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(systemTheme, {\n    mixins: (0,_createMixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(systemTheme.breakpoints, mixinsInput),\n    palette,\n    // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n    shadows: _shadows__WEBPACK_IMPORTED_MODULE_6__[\"default\"].slice(),\n    typography: (0,_createTypography__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(palette, typographyInput),\n    transitions: (0,_createTransitions__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(transitionsInput),\n    zIndex: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _zIndex__WEBPACK_IMPORTED_MODULE_9__[\"default\"])\n  });\n  muiTheme = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(muiTheme, other);\n  muiTheme = args.reduce((acc, argument) => (0,_mui_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(acc, argument), muiTheme);\n  if (true) {\n    const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n    const traverse = (node, component) => {\n      let key;\n\n      // eslint-disable-next-line guard-for-in, no-restricted-syntax\n      for (key in node) {\n        const child = node[key];\n        if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n          if (true) {\n            const stateClass = (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('', key);\n            console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n              root: {\n                [`&.${stateClass}`]: child\n              }\n            }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n          }\n          // Remove the style to prevent global conflicts.\n          node[key] = {};\n        }\n      }\n    };\n    Object.keys(muiTheme.components).forEach(component => {\n      const styleOverrides = muiTheme.components[component].styleOverrides;\n      if (styleOverrides && component.indexOf('Mui') === 0) {\n        traverse(styleOverrides, component);\n      }\n    });\n  }\n  muiTheme.unstable_sxConfig = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _mui_system__WEBPACK_IMPORTED_MODULE_11__[\"default\"], other == null ? void 0 : other.unstable_sxConfig);\n  muiTheme.unstable_sx = function sx(props) {\n    return (0,_mui_system__WEBPACK_IMPORTED_MODULE_12__[\"default\"])({\n      sx: props,\n      theme: this\n    });\n  };\n  return muiTheme;\n}\nlet warnedOnce = false;\nfunction createMuiTheme(...args) {\n  if (true) {\n    if (!warnedOnce) {\n      warnedOnce = true;\n      console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n    }\n  }\n  return createTheme(...args);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (createTheme);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/createTheme.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/createTransitions.js":
/*!****************************************************************!*\
  !*** ./node_modules/@mui/material/styles/createTransitions.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ createTransitions; },\n/* harmony export */   \"duration\": function() { return /* binding */ duration; },\n/* harmony export */   \"easing\": function() { return /* binding */ easing; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n\n\nconst _excluded = [\"duration\", \"easing\", \"delay\"];\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nconst easing = {\n  // This is the most common easing curve.\n  easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n  // Objects enter the screen at full velocity from off-screen and\n  // slowly decelerate to a resting point.\n  easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n  // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n  easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n  // The sharp curve is used by objects that may return to the screen at any time.\n  sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nconst duration = {\n  shortest: 150,\n  shorter: 200,\n  short: 250,\n  // most basic recommended timing\n  standard: 300,\n  // this is to be used in complex animations\n  complex: 375,\n  // recommended when something is entering screen\n  enteringScreen: 225,\n  // recommended when something is leaving screen\n  leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n  return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n  if (!height) {\n    return 0;\n  }\n  const constant = height / 36;\n\n  // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n  return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nfunction createTransitions(inputTransitions) {\n  const mergedEasing = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, easing, inputTransitions.easing);\n  const mergedDuration = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, duration, inputTransitions.duration);\n  const create = (props = ['all'], options = {}) => {\n    const {\n        duration: durationOption = mergedDuration.standard,\n        easing: easingOption = mergedEasing.easeInOut,\n        delay = 0\n      } = options,\n      other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(options, _excluded);\n    if (true) {\n      const isString = value => typeof value === 'string';\n      // IE11 support, replace with Number.isNaN\n      // eslint-disable-next-line no-restricted-globals\n      const isNumber = value => !isNaN(parseFloat(value));\n      if (!isString(props) && !Array.isArray(props)) {\n        console.error('MUI: Argument \"props\" must be a string or Array.');\n      }\n      if (!isNumber(durationOption) && !isString(durationOption)) {\n        console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n      }\n      if (!isString(easingOption)) {\n        console.error('MUI: Argument \"easing\" must be a string.');\n      }\n      if (!isNumber(delay) && !isString(delay)) {\n        console.error('MUI: Argument \"delay\" must be a number or a string.');\n      }\n      if (Object.keys(other).length !== 0) {\n        console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n      }\n    }\n    return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n  };\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    getAutoHeightDuration,\n    create\n  }, inputTransitions, {\n    easing: mergedEasing,\n    duration: mergedDuration\n  });\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/createTransitions.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/createTypography.js":
/*!***************************************************************!*\
  !*** ./node_modules/@mui/material/styles/createTypography.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ createTypography; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/deepmerge.js\");\n\n\nconst _excluded = [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"];\n\nfunction round(value) {\n  return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n  textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nfunction createTypography(palette, typography) {\n  const _ref = typeof typography === 'function' ? typography(palette) : typography,\n    {\n      fontFamily = defaultFontFamily,\n      // The default font size of the Material Specification.\n      fontSize = 14,\n      // px\n      fontWeightLight = 300,\n      fontWeightRegular = 400,\n      fontWeightMedium = 500,\n      fontWeightBold = 700,\n      // Tell MUI what's the font-size on the html element.\n      // 16px is the default font-size used by browsers.\n      htmlFontSize = 16,\n      // Apply the CSS properties to all the variants.\n      allVariants,\n      pxToRem: pxToRem2\n    } = _ref,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_ref, _excluded);\n  if (true) {\n    if (typeof fontSize !== 'number') {\n      console.error('MUI: `fontSize` is required to be a number.');\n    }\n    if (typeof htmlFontSize !== 'number') {\n      console.error('MUI: `htmlFontSize` is required to be a number.');\n    }\n  }\n  const coef = fontSize / 14;\n  const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n  const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    fontFamily,\n    fontWeight,\n    fontSize: pxToRem(size),\n    // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n    lineHeight\n  }, fontFamily === defaultFontFamily ? {\n    letterSpacing: `${round(letterSpacing / size)}em`\n  } : {}, casing, allVariants);\n  const variants = {\n    h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n    h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n    h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n    h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n    h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n    h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n    subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n    subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n    body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n    body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n    button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n    caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n    overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps)\n  };\n  return (0,_mui_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    htmlFontSize,\n    pxToRem,\n    fontFamily,\n    fontSize,\n    fontWeightLight,\n    fontWeightRegular,\n    fontWeightMedium,\n    fontWeightBold\n  }, variants), other, {\n    clone: false // No need to clone deep\n  });\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/createTypography.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/cssUtils.js":
/*!*******************************************************!*\
  !*** ./node_modules/@mui/material/styles/cssUtils.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"alignProperty\": function() { return /* binding */ alignProperty; },\n/* harmony export */   \"convertLength\": function() { return /* binding */ convertLength; },\n/* harmony export */   \"fontGrid\": function() { return /* binding */ fontGrid; },\n/* harmony export */   \"getUnit\": function() { return /* binding */ getUnit; },\n/* harmony export */   \"isUnitless\": function() { return /* binding */ isUnitless; },\n/* harmony export */   \"responsiveProperty\": function() { return /* binding */ responsiveProperty; },\n/* harmony export */   \"toUnitless\": function() { return /* binding */ toUnitless; }\n/* harmony export */ });\nfunction isUnitless(value) {\n  return String(parseFloat(value)).length === String(value).length;\n}\n\n// Ported from Compass\n// https://github.com/Compass/compass/blob/master/core/stylesheets/compass/typography/_units.scss\n// Emulate the sass function \"unit\"\nfunction getUnit(input) {\n  return String(input).match(/[\\d.\\-+]*\\s*(.*)/)[1] || '';\n}\n\n// Emulate the sass function \"unitless\"\nfunction toUnitless(length) {\n  return parseFloat(length);\n}\n\n// Convert any CSS <length> or <percentage> value to any another.\n// From https://github.com/KyleAMathews/convert-css-length\nfunction convertLength(baseFontSize) {\n  return (length, toUnit) => {\n    const fromUnit = getUnit(length);\n\n    // Optimize for cases where `from` and `to` units are accidentally the same.\n    if (fromUnit === toUnit) {\n      return length;\n    }\n\n    // Convert input length to pixels.\n    let pxLength = toUnitless(length);\n    if (fromUnit !== 'px') {\n      if (fromUnit === 'em') {\n        pxLength = toUnitless(length) * toUnitless(baseFontSize);\n      } else if (fromUnit === 'rem') {\n        pxLength = toUnitless(length) * toUnitless(baseFontSize);\n      }\n    }\n\n    // Convert length in pixels to the output unit\n    let outputLength = pxLength;\n    if (toUnit !== 'px') {\n      if (toUnit === 'em') {\n        outputLength = pxLength / toUnitless(baseFontSize);\n      } else if (toUnit === 'rem') {\n        outputLength = pxLength / toUnitless(baseFontSize);\n      } else {\n        return length;\n      }\n    }\n    return parseFloat(outputLength.toFixed(5)) + toUnit;\n  };\n}\nfunction alignProperty({\n  size,\n  grid\n}) {\n  const sizeBelow = size - size % grid;\n  const sizeAbove = sizeBelow + grid;\n  return size - sizeBelow < sizeAbove - size ? sizeBelow : sizeAbove;\n}\n\n// fontGrid finds a minimal grid (in rem) for the fontSize values so that the\n// lineHeight falls under a x pixels grid, 4px in the case of Material Design,\n// without changing the relative line height\nfunction fontGrid({\n  lineHeight,\n  pixels,\n  htmlFontSize\n}) {\n  return pixels / (lineHeight * htmlFontSize);\n}\n\n/**\n * generate a responsive version of a given CSS property\n * @example\n * responsiveProperty({\n *   cssProperty: 'fontSize',\n *   min: 15,\n *   max: 20,\n *   unit: 'px',\n *   breakpoints: [300, 600],\n * })\n *\n * // this returns\n *\n * {\n *   fontSize: '15px',\n *   '@media (min-width:300px)': {\n *     fontSize: '17.5px',\n *   },\n *   '@media (min-width:600px)': {\n *     fontSize: '20px',\n *   },\n * }\n * @param {Object} params\n * @param {string} params.cssProperty - The CSS property to be made responsive\n * @param {number} params.min - The smallest value of the CSS property\n * @param {number} params.max - The largest value of the CSS property\n * @param {string} [params.unit] - The unit to be used for the CSS property\n * @param {Array.number} [params.breakpoints]  - An array of breakpoints\n * @param {number} [params.alignStep] - Round scaled value to fall under this grid\n * @returns {Object} responsive styles for {params.cssProperty}\n */\nfunction responsiveProperty({\n  cssProperty,\n  min,\n  max,\n  unit = 'rem',\n  breakpoints = [600, 900, 1200],\n  transform = null\n}) {\n  const output = {\n    [cssProperty]: `${min}${unit}`\n  };\n  const factor = (max - min) / breakpoints[breakpoints.length - 1];\n  breakpoints.forEach(breakpoint => {\n    let value = min + factor * breakpoint;\n    if (transform !== null) {\n      value = transform(value);\n    }\n    output[`@media (min-width:${breakpoint}px)`] = {\n      [cssProperty]: `${Math.round(value * 10000) / 10000}${unit}`\n    };\n  });\n  return output;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/cssUtils.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/defaultTheme.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/material/styles/defaultTheme.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createTheme__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createTheme */ \"./node_modules/@mui/material/styles/createTheme.js\");\n\nconst defaultTheme = (0,_createTheme__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n/* harmony default export */ __webpack_exports__[\"default\"] = (defaultTheme);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/defaultTheme.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/excludeVariablesFromRoot.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@mui/material/styles/excludeVariablesFromRoot.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/**\n * @internal These variables should not appear in the :root stylesheet when the `defaultMode=\"dark\"`\n */\nconst excludeVariablesFromRoot = cssVarPrefix => [...[...Array(24)].map((_, index) => `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}overlays-${index + 1}`), `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkBg`, `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkColor`];\n/* harmony default export */ __webpack_exports__[\"default\"] = (excludeVariablesFromRoot);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/excludeVariablesFromRoot.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/experimental_extendTheme.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@mui/material/styles/experimental_extendTheme.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createGetCssVar\": function() { return /* binding */ createGetCssVar; },\n/* harmony export */   \"default\": function() { return /* binding */ extendTheme; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/deepmerge.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/colorManipulator.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/cssVars/createGetCssVar.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js\");\n/* harmony import */ var _createTheme__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createTheme */ \"./node_modules/@mui/material/styles/createTheme.js\");\n/* harmony import */ var _getOverlayAlpha__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getOverlayAlpha */ \"./node_modules/@mui/material/styles/getOverlayAlpha.js\");\n\n\nconst _excluded = [\"colorSchemes\", \"cssVarPrefix\"],\n  _excluded2 = [\"palette\"];\n\n\n\n\nconst defaultDarkOverlays = [...Array(25)].map((_, index) => {\n  if (index === 0) {\n    return undefined;\n  }\n  const overlay = (0,_getOverlayAlpha__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(index);\n  return `linear-gradient(rgba(255 255 255 / ${overlay}), rgba(255 255 255 / ${overlay}))`;\n});\nfunction assignNode(obj, keys) {\n  keys.forEach(k => {\n    if (!obj[k]) {\n      obj[k] = {};\n    }\n  });\n}\nfunction setColor(obj, key, defaultValue) {\n  if (!obj[key] && defaultValue) {\n    obj[key] = defaultValue;\n  }\n}\nfunction setColorChannel(obj, key) {\n  if (!(`${key}Channel` in obj)) {\n    // custom channel token is not provided, generate one.\n    // if channel token can't be generated, show a warning.\n    obj[`${key}Channel`] = (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeColorChannel)(obj[key], `MUI: Can't create \\`palette.${key}Channel\\` because \\`palette.${key}\\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` + '\\n' + `To suppress this warning, you need to explicitly provide the \\`palette.${key}Channel\\` as a string (in rgb format, e.g. \"12 12 12\") or undefined if you want to remove the channel token.`);\n  }\n}\nconst silent = fn => {\n  try {\n    return fn();\n  } catch (error) {\n    // ignore error\n  }\n  return undefined;\n};\nconst createGetCssVar = (cssVarPrefix = 'mui') => (0,_mui_system__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(cssVarPrefix);\nfunction extendTheme(options = {}, ...args) {\n  var _colorSchemesInput$li, _colorSchemesInput$da, _colorSchemesInput$li2, _colorSchemesInput$li3, _colorSchemesInput$da2, _colorSchemesInput$da3;\n  const {\n      colorSchemes: colorSchemesInput = {},\n      cssVarPrefix = 'mui'\n    } = options,\n    input = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(options, _excluded);\n  const getCssVar = createGetCssVar(cssVarPrefix);\n  const _createThemeWithoutVa = (0,_createTheme__WEBPACK_IMPORTED_MODULE_5__[\"default\"])((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, input, colorSchemesInput.light && {\n      palette: (_colorSchemesInput$li = colorSchemesInput.light) == null ? void 0 : _colorSchemesInput$li.palette\n    })),\n    {\n      palette: lightPalette\n    } = _createThemeWithoutVa,\n    muiTheme = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_createThemeWithoutVa, _excluded2);\n  const {\n    palette: darkPalette\n  } = (0,_createTheme__WEBPACK_IMPORTED_MODULE_5__[\"default\"])({\n    palette: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      mode: 'dark'\n    }, (_colorSchemesInput$da = colorSchemesInput.dark) == null ? void 0 : _colorSchemesInput$da.palette)\n  });\n  let theme = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, muiTheme, {\n    cssVarPrefix,\n    getCssVar,\n    colorSchemes: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, colorSchemesInput, {\n      light: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, colorSchemesInput.light, {\n        palette: lightPalette,\n        opacity: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n          inputPlaceholder: 0.42,\n          inputUnderline: 0.42,\n          switchTrackDisabled: 0.12,\n          switchTrack: 0.38\n        }, (_colorSchemesInput$li2 = colorSchemesInput.light) == null ? void 0 : _colorSchemesInput$li2.opacity),\n        overlays: ((_colorSchemesInput$li3 = colorSchemesInput.light) == null ? void 0 : _colorSchemesInput$li3.overlays) || []\n      }),\n      dark: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, colorSchemesInput.dark, {\n        palette: darkPalette,\n        opacity: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n          inputPlaceholder: 0.5,\n          inputUnderline: 0.7,\n          switchTrackDisabled: 0.2,\n          switchTrack: 0.3\n        }, (_colorSchemesInput$da2 = colorSchemesInput.dark) == null ? void 0 : _colorSchemesInput$da2.opacity),\n        overlays: ((_colorSchemesInput$da3 = colorSchemesInput.dark) == null ? void 0 : _colorSchemesInput$da3.overlays) || defaultDarkOverlays\n      })\n    })\n  });\n  Object.keys(theme.colorSchemes).forEach(key => {\n    const palette = theme.colorSchemes[key].palette;\n\n    // attach black & white channels to common node\n    if (key === 'light') {\n      setColor(palette.common, 'background', '#fff');\n      setColor(palette.common, 'onBackground', '#000');\n    } else {\n      setColor(palette.common, 'background', '#000');\n      setColor(palette.common, 'onBackground', '#fff');\n    }\n\n    // assign component variables\n    assignNode(palette, ['Alert', 'AppBar', 'Avatar', 'Chip', 'FilledInput', 'LinearProgress', 'Skeleton', 'Slider', 'SnackbarContent', 'SpeedDialAction', 'StepConnector', 'StepContent', 'Switch', 'TableCell', 'Tooltip']);\n    if (key === 'light') {\n      setColor(palette.Alert, 'errorColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.error.light, 0.6));\n      setColor(palette.Alert, 'infoColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.info.light, 0.6));\n      setColor(palette.Alert, 'successColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.success.light, 0.6));\n      setColor(palette.Alert, 'warningColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.warning.light, 0.6));\n      setColor(palette.Alert, 'errorFilledBg', getCssVar('palette-error-main'));\n      setColor(palette.Alert, 'infoFilledBg', getCssVar('palette-info-main'));\n      setColor(palette.Alert, 'successFilledBg', getCssVar('palette-success-main'));\n      setColor(palette.Alert, 'warningFilledBg', getCssVar('palette-warning-main'));\n      setColor(palette.Alert, 'errorFilledColor', silent(() => lightPalette.getContrastText(palette.error.main)));\n      setColor(palette.Alert, 'infoFilledColor', silent(() => lightPalette.getContrastText(palette.info.main)));\n      setColor(palette.Alert, 'successFilledColor', silent(() => lightPalette.getContrastText(palette.success.main)));\n      setColor(palette.Alert, 'warningFilledColor', silent(() => lightPalette.getContrastText(palette.warning.main)));\n      setColor(palette.Alert, 'errorStandardBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.error.light, 0.9));\n      setColor(palette.Alert, 'infoStandardBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.info.light, 0.9));\n      setColor(palette.Alert, 'successStandardBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.success.light, 0.9));\n      setColor(palette.Alert, 'warningStandardBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.warning.light, 0.9));\n      setColor(palette.Alert, 'errorIconColor', getCssVar('palette-error-main'));\n      setColor(palette.Alert, 'infoIconColor', getCssVar('palette-info-main'));\n      setColor(palette.Alert, 'successIconColor', getCssVar('palette-success-main'));\n      setColor(palette.Alert, 'warningIconColor', getCssVar('palette-warning-main'));\n      setColor(palette.AppBar, 'defaultBg', getCssVar('palette-grey-100'));\n      setColor(palette.Avatar, 'defaultBg', getCssVar('palette-grey-400'));\n      setColor(palette.Chip, 'defaultBorder', getCssVar('palette-grey-400'));\n      setColor(palette.Chip, 'defaultAvatarColor', getCssVar('palette-grey-700'));\n      setColor(palette.Chip, 'defaultIconColor', getCssVar('palette-grey-700'));\n      setColor(palette.FilledInput, 'bg', 'rgba(0, 0, 0, 0.06)');\n      setColor(palette.FilledInput, 'hoverBg', 'rgba(0, 0, 0, 0.09)');\n      setColor(palette.FilledInput, 'disabledBg', 'rgba(0, 0, 0, 0.12)');\n      setColor(palette.LinearProgress, 'primaryBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.primary.main, 0.62));\n      setColor(palette.LinearProgress, 'secondaryBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.secondary.main, 0.62));\n      setColor(palette.LinearProgress, 'errorBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.error.main, 0.62));\n      setColor(palette.LinearProgress, 'infoBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.info.main, 0.62));\n      setColor(palette.LinearProgress, 'successBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.success.main, 0.62));\n      setColor(palette.LinearProgress, 'warningBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.warning.main, 0.62));\n      setColor(palette.Skeleton, 'bg', `rgba(${getCssVar('palette-text-primaryChannel')} / 0.11)`);\n      setColor(palette.Slider, 'primaryTrack', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.primary.main, 0.62));\n      setColor(palette.Slider, 'secondaryTrack', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.secondary.main, 0.62));\n      setColor(palette.Slider, 'errorTrack', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.error.main, 0.62));\n      setColor(palette.Slider, 'infoTrack', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.info.main, 0.62));\n      setColor(palette.Slider, 'successTrack', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.success.main, 0.62));\n      setColor(palette.Slider, 'warningTrack', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.warning.main, 0.62));\n      const snackbarContentBackground = (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeEmphasize)(palette.background.default, 0.8);\n      setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);\n      setColor(palette.SnackbarContent, 'color', silent(() => lightPalette.getContrastText(snackbarContentBackground)));\n      setColor(palette.SpeedDialAction, 'fabHoverBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeEmphasize)(palette.background.paper, 0.15));\n      setColor(palette.StepConnector, 'border', getCssVar('palette-grey-400'));\n      setColor(palette.StepContent, 'border', getCssVar('palette-grey-400'));\n      setColor(palette.Switch, 'defaultColor', getCssVar('palette-common-white'));\n      setColor(palette.Switch, 'defaultDisabledColor', getCssVar('palette-grey-100'));\n      setColor(palette.Switch, 'primaryDisabledColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.primary.main, 0.62));\n      setColor(palette.Switch, 'secondaryDisabledColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.secondary.main, 0.62));\n      setColor(palette.Switch, 'errorDisabledColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.error.main, 0.62));\n      setColor(palette.Switch, 'infoDisabledColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.info.main, 0.62));\n      setColor(palette.Switch, 'successDisabledColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.success.main, 0.62));\n      setColor(palette.Switch, 'warningDisabledColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.warning.main, 0.62));\n      setColor(palette.TableCell, 'border', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)((0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeAlpha)(palette.divider, 1), 0.88));\n      setColor(palette.Tooltip, 'bg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeAlpha)(palette.grey[700], 0.92));\n    } else {\n      setColor(palette.Alert, 'errorColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.error.light, 0.6));\n      setColor(palette.Alert, 'infoColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.info.light, 0.6));\n      setColor(palette.Alert, 'successColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.success.light, 0.6));\n      setColor(palette.Alert, 'warningColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeLighten)(palette.warning.light, 0.6));\n      setColor(palette.Alert, 'errorFilledBg', getCssVar('palette-error-dark'));\n      setColor(palette.Alert, 'infoFilledBg', getCssVar('palette-info-dark'));\n      setColor(palette.Alert, 'successFilledBg', getCssVar('palette-success-dark'));\n      setColor(palette.Alert, 'warningFilledBg', getCssVar('palette-warning-dark'));\n      setColor(palette.Alert, 'errorFilledColor', silent(() => darkPalette.getContrastText(palette.error.dark)));\n      setColor(palette.Alert, 'infoFilledColor', silent(() => darkPalette.getContrastText(palette.info.dark)));\n      setColor(palette.Alert, 'successFilledColor', silent(() => darkPalette.getContrastText(palette.success.dark)));\n      setColor(palette.Alert, 'warningFilledColor', silent(() => darkPalette.getContrastText(palette.warning.dark)));\n      setColor(palette.Alert, 'errorStandardBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.error.light, 0.9));\n      setColor(palette.Alert, 'infoStandardBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.info.light, 0.9));\n      setColor(palette.Alert, 'successStandardBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.success.light, 0.9));\n      setColor(palette.Alert, 'warningStandardBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.warning.light, 0.9));\n      setColor(palette.Alert, 'errorIconColor', getCssVar('palette-error-main'));\n      setColor(palette.Alert, 'infoIconColor', getCssVar('palette-info-main'));\n      setColor(palette.Alert, 'successIconColor', getCssVar('palette-success-main'));\n      setColor(palette.Alert, 'warningIconColor', getCssVar('palette-warning-main'));\n      setColor(palette.AppBar, 'defaultBg', getCssVar('palette-grey-900'));\n      setColor(palette.AppBar, 'darkBg', getCssVar('palette-background-paper')); // specific for dark mode\n      setColor(palette.AppBar, 'darkColor', getCssVar('palette-text-primary')); // specific for dark mode\n      setColor(palette.Avatar, 'defaultBg', getCssVar('palette-grey-600'));\n      setColor(palette.Chip, 'defaultBorder', getCssVar('palette-grey-700'));\n      setColor(palette.Chip, 'defaultAvatarColor', getCssVar('palette-grey-300'));\n      setColor(palette.Chip, 'defaultIconColor', getCssVar('palette-grey-300'));\n      setColor(palette.FilledInput, 'bg', 'rgba(255, 255, 255, 0.09)');\n      setColor(palette.FilledInput, 'hoverBg', 'rgba(255, 255, 255, 0.13)');\n      setColor(palette.FilledInput, 'disabledBg', 'rgba(255, 255, 255, 0.12)');\n      setColor(palette.LinearProgress, 'primaryBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.primary.main, 0.5));\n      setColor(palette.LinearProgress, 'secondaryBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.secondary.main, 0.5));\n      setColor(palette.LinearProgress, 'errorBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.error.main, 0.5));\n      setColor(palette.LinearProgress, 'infoBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.info.main, 0.5));\n      setColor(palette.LinearProgress, 'successBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.success.main, 0.5));\n      setColor(palette.LinearProgress, 'warningBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.warning.main, 0.5));\n      setColor(palette.Skeleton, 'bg', `rgba(${getCssVar('palette-text-primaryChannel')} / 0.13)`);\n      setColor(palette.Slider, 'primaryTrack', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.primary.main, 0.5));\n      setColor(palette.Slider, 'secondaryTrack', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.secondary.main, 0.5));\n      setColor(palette.Slider, 'errorTrack', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.error.main, 0.5));\n      setColor(palette.Slider, 'infoTrack', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.info.main, 0.5));\n      setColor(palette.Slider, 'successTrack', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.success.main, 0.5));\n      setColor(palette.Slider, 'warningTrack', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.warning.main, 0.5));\n      const snackbarContentBackground = (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeEmphasize)(palette.background.default, 0.98);\n      setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);\n      setColor(palette.SnackbarContent, 'color', silent(() => darkPalette.getContrastText(snackbarContentBackground)));\n      setColor(palette.SpeedDialAction, 'fabHoverBg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeEmphasize)(palette.background.paper, 0.15));\n      setColor(palette.StepConnector, 'border', getCssVar('palette-grey-600'));\n      setColor(palette.StepContent, 'border', getCssVar('palette-grey-600'));\n      setColor(palette.Switch, 'defaultColor', getCssVar('palette-grey-300'));\n      setColor(palette.Switch, 'defaultDisabledColor', getCssVar('palette-grey-600'));\n      setColor(palette.Switch, 'primaryDisabledColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.primary.main, 0.55));\n      setColor(palette.Switch, 'secondaryDisabledColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.secondary.main, 0.55));\n      setColor(palette.Switch, 'errorDisabledColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.error.main, 0.55));\n      setColor(palette.Switch, 'infoDisabledColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.info.main, 0.55));\n      setColor(palette.Switch, 'successDisabledColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.success.main, 0.55));\n      setColor(palette.Switch, 'warningDisabledColor', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)(palette.warning.main, 0.55));\n      setColor(palette.TableCell, 'border', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeDarken)((0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeAlpha)(palette.divider, 1), 0.68));\n      setColor(palette.Tooltip, 'bg', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeAlpha)(palette.grey[700], 0.92));\n    }\n\n    // MUI X - DataGrid needs this token.\n    setColorChannel(palette.background, 'default');\n    setColorChannel(palette.common, 'background');\n    setColorChannel(palette.common, 'onBackground');\n    setColorChannel(palette, 'divider');\n    Object.keys(palette).forEach(color => {\n      const colors = palette[color];\n\n      // The default palettes (primary, secondary, error, info, success, and warning) errors are handled by the above `createTheme(...)`.\n\n      if (colors && typeof colors === 'object') {\n        // Silent the error for custom palettes.\n        if (colors.main) {\n          setColor(palette[color], 'mainChannel', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeColorChannel)(colors.main));\n        }\n        if (colors.light) {\n          setColor(palette[color], 'lightChannel', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeColorChannel)(colors.light));\n        }\n        if (colors.dark) {\n          setColor(palette[color], 'darkChannel', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeColorChannel)(colors.dark));\n        }\n        if (colors.contrastText) {\n          setColor(palette[color], 'contrastTextChannel', (0,_mui_system__WEBPACK_IMPORTED_MODULE_3__.private_safeColorChannel)(colors.contrastText));\n        }\n        if (color === 'text') {\n          // Text colors: text.primary, text.secondary\n          setColorChannel(palette[color], 'primary');\n          setColorChannel(palette[color], 'secondary');\n        }\n        if (color === 'action') {\n          // Action colors: action.active, action.selected\n          if (colors.active) {\n            setColorChannel(palette[color], 'active');\n          }\n          if (colors.selected) {\n            setColorChannel(palette[color], 'selected');\n          }\n        }\n      }\n    });\n  });\n  theme = args.reduce((acc, argument) => (0,_mui_utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(acc, argument), theme);\n  theme.unstable_sxConfig = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _mui_system__WEBPACK_IMPORTED_MODULE_7__[\"default\"], input == null ? void 0 : input.unstable_sxConfig);\n  theme.unstable_sx = function sx(props) {\n    return (0,_mui_system__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n      sx: props,\n      theme: this\n    });\n  };\n  return theme;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/experimental_extendTheme.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/getOverlayAlpha.js":
/*!**************************************************************!*\
  !*** ./node_modules/@mui/material/styles/getOverlayAlpha.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61\nconst getOverlayAlpha = elevation => {\n  let alphaValue;\n  if (elevation < 1) {\n    alphaValue = 5.11916 * elevation ** 2;\n  } else {\n    alphaValue = 4.5 * Math.log(elevation + 1) + 2;\n  }\n  return (alphaValue / 100).toFixed(2);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (getOverlayAlpha);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/getOverlayAlpha.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/index.js":
/*!****************************************************!*\
  !*** ./node_modules/@mui/material/styles/index.js ***!
  \****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Experimental_CssVarsProvider\": function() { return /* reexport safe */ _CssVarsProvider__WEBPACK_IMPORTED_MODULE_17__.Experimental_CssVarsProvider; },\n/* harmony export */   \"StyledEngineProvider\": function() { return /* reexport safe */ _mui_system__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; },\n/* harmony export */   \"ThemeProvider\": function() { return /* reexport safe */ _ThemeProvider__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; },\n/* harmony export */   \"adaptV4Theme\": function() { return /* reexport safe */ _adaptV4Theme__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"alpha\": function() { return /* reexport safe */ _mui_system__WEBPACK_IMPORTED_MODULE_1__.alpha; },\n/* harmony export */   \"createMuiTheme\": function() { return /* reexport safe */ _createTheme__WEBPACK_IMPORTED_MODULE_3__.createMuiTheme; },\n/* harmony export */   \"createStyles\": function() { return /* reexport safe */ _createStyles__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; },\n/* harmony export */   \"createTheme\": function() { return /* reexport safe */ _createTheme__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; },\n/* harmony export */   \"css\": function() { return /* reexport safe */ _mui_system__WEBPACK_IMPORTED_MODULE_2__.css; },\n/* harmony export */   \"darken\": function() { return /* reexport safe */ _mui_system__WEBPACK_IMPORTED_MODULE_1__.darken; },\n/* harmony export */   \"decomposeColor\": function() { return /* reexport safe */ _mui_system__WEBPACK_IMPORTED_MODULE_1__.decomposeColor; },\n/* harmony export */   \"duration\": function() { return /* reexport safe */ _createTransitions__WEBPACK_IMPORTED_MODULE_8__.duration; },\n/* harmony export */   \"easing\": function() { return /* reexport safe */ _createTransitions__WEBPACK_IMPORTED_MODULE_8__.easing; },\n/* harmony export */   \"emphasize\": function() { return /* reexport safe */ _mui_system__WEBPACK_IMPORTED_MODULE_1__.emphasize; },\n/* harmony export */   \"experimentalStyled\": function() { return /* reexport safe */ _styled__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; },\n/* harmony export */   \"experimental_extendTheme\": function() { return /* reexport safe */ _experimental_extendTheme__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; },\n/* harmony export */   \"experimental_sx\": function() { return /* binding */ experimental_sx; },\n/* harmony export */   \"getContrastRatio\": function() { return /* reexport safe */ _mui_system__WEBPACK_IMPORTED_MODULE_1__.getContrastRatio; },\n/* harmony export */   \"getInitColorSchemeScript\": function() { return /* reexport safe */ _CssVarsProvider__WEBPACK_IMPORTED_MODULE_17__.getInitColorSchemeScript; },\n/* harmony export */   \"getLuminance\": function() { return /* reexport safe */ _mui_system__WEBPACK_IMPORTED_MODULE_1__.getLuminance; },\n/* harmony export */   \"getOverlayAlpha\": function() { return /* reexport safe */ _getOverlayAlpha__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; },\n/* harmony export */   \"hexToRgb\": function() { return /* reexport safe */ _mui_system__WEBPACK_IMPORTED_MODULE_1__.hexToRgb; },\n/* harmony export */   \"hslToRgb\": function() { return /* reexport safe */ _mui_system__WEBPACK_IMPORTED_MODULE_1__.hslToRgb; },\n/* harmony export */   \"keyframes\": function() { return /* reexport safe */ _mui_system__WEBPACK_IMPORTED_MODULE_2__.keyframes; },\n/* harmony export */   \"lighten\": function() { return /* reexport safe */ _mui_system__WEBPACK_IMPORTED_MODULE_1__.lighten; },\n/* harmony export */   \"makeStyles\": function() { return /* reexport safe */ _makeStyles__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; },\n/* harmony export */   \"private_createTypography\": function() { return /* reexport safe */ _createTypography__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; },\n/* harmony export */   \"private_excludeVariablesFromRoot\": function() { return /* reexport safe */ _excludeVariablesFromRoot__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; },\n/* harmony export */   \"recomposeColor\": function() { return /* reexport safe */ _mui_system__WEBPACK_IMPORTED_MODULE_1__.recomposeColor; },\n/* harmony export */   \"responsiveFontSizes\": function() { return /* reexport safe */ _responsiveFontSizes__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; },\n/* harmony export */   \"rgbToHex\": function() { return /* reexport safe */ _mui_system__WEBPACK_IMPORTED_MODULE_1__.rgbToHex; },\n/* harmony export */   \"shouldSkipGeneratingVar\": function() { return /* reexport safe */ _CssVarsProvider__WEBPACK_IMPORTED_MODULE_17__.shouldSkipGeneratingVar; },\n/* harmony export */   \"styled\": function() { return /* reexport safe */ _styled__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; },\n/* harmony export */   \"unstable_createMuiStrictModeTheme\": function() { return /* reexport safe */ _createMuiStrictModeTheme__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; },\n/* harmony export */   \"unstable_getUnit\": function() { return /* reexport safe */ _cssUtils__WEBPACK_IMPORTED_MODULE_6__.getUnit; },\n/* harmony export */   \"unstable_toUnitless\": function() { return /* reexport safe */ _cssUtils__WEBPACK_IMPORTED_MODULE_6__.toUnitless; },\n/* harmony export */   \"useColorScheme\": function() { return /* reexport safe */ _CssVarsProvider__WEBPACK_IMPORTED_MODULE_17__.useColorScheme; },\n/* harmony export */   \"useTheme\": function() { return /* reexport safe */ _useTheme__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; },\n/* harmony export */   \"useThemeProps\": function() { return /* reexport safe */ _useThemeProps__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; },\n/* harmony export */   \"withStyles\": function() { return /* reexport safe */ _withStyles__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; },\n/* harmony export */   \"withTheme\": function() { return /* reexport safe */ _withTheme__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _adaptV4Theme__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adaptV4Theme */ \"./node_modules/@mui/material/styles/adaptV4Theme.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/colorManipulator.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@emotion/react/dist/emotion-react.browser.esm.js\");\n/* harmony import */ var _createTheme__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createTheme */ \"./node_modules/@mui/material/styles/createTheme.js\");\n/* harmony import */ var _createMuiStrictModeTheme__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./createMuiStrictModeTheme */ \"./node_modules/@mui/material/styles/createMuiStrictModeTheme.js\");\n/* harmony import */ var _createStyles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createStyles */ \"./node_modules/@mui/material/styles/createStyles.js\");\n/* harmony import */ var _cssUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./cssUtils */ \"./node_modules/@mui/material/styles/cssUtils.js\");\n/* harmony import */ var _responsiveFontSizes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./responsiveFontSizes */ \"./node_modules/@mui/material/styles/responsiveFontSizes.js\");\n/* harmony import */ var _createTransitions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./createTransitions */ \"./node_modules/@mui/material/styles/createTransitions.js\");\n/* harmony import */ var _useTheme__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./useTheme */ \"./node_modules/@mui/material/styles/useTheme.js\");\n/* harmony import */ var _useThemeProps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./useThemeProps */ \"./node_modules/@mui/material/styles/useThemeProps.js\");\n/* harmony import */ var _styled__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _ThemeProvider__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ThemeProvider */ \"./node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js\");\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js\");\n/* harmony import */ var _makeStyles__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./makeStyles */ \"./node_modules/@mui/material/styles/makeStyles.js\");\n/* harmony import */ var _withStyles__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./withStyles */ \"./node_modules/@mui/material/styles/withStyles.js\");\n/* harmony import */ var _withTheme__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./withTheme */ \"./node_modules/@mui/material/styles/withTheme.js\");\n/* harmony import */ var _CssVarsProvider__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./CssVarsProvider */ \"./node_modules/@mui/material/styles/CssVarsProvider.js\");\n/* harmony import */ var _experimental_extendTheme__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./experimental_extendTheme */ \"./node_modules/@mui/material/styles/experimental_extendTheme.js\");\n/* harmony import */ var _getOverlayAlpha__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./getOverlayAlpha */ \"./node_modules/@mui/material/styles/getOverlayAlpha.js\");\n/* harmony import */ var _createTypography__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./createTypography */ \"./node_modules/@mui/material/styles/createTypography.js\");\n/* harmony import */ var _excludeVariablesFromRoot__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./excludeVariablesFromRoot */ \"./node_modules/@mui/material/styles/excludeVariablesFromRoot.js\");\n\n\n\n// TODO: Remove this function in v6.\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction experimental_sx() {\n  throw new Error( true ? `MUI: The \\`experimental_sx\\` has been moved to \\`theme.unstable_sx\\`.For more details, see https://github.com/mui/material-ui/pull/35150.` : 0);\n}\n\n\n\n\n\n\n\n\n\n\n\n\n// The legacy utilities from @mui/styles\n// These are just empty functions that throws when invoked\n\n\n\n\n\n\n\n// Private methods for creating parts of the theme\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/makeStyles.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/material/styles/makeStyles.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ makeStyles; }\n/* harmony export */ });\n\nfunction makeStyles() {\n  throw new Error( true ? `MUI: makeStyles is no longer exported from @mui/material/styles.\nYou have to import it from @mui/styles.\nSee https://mui.com/r/migration-v4/#mui-material-styles for more details.` : 0);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/makeStyles.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/responsiveFontSizes.js":
/*!******************************************************************!*\
  !*** ./node_modules/@mui/material/styles/responsiveFontSizes.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ responsiveFontSizes; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _cssUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cssUtils */ \"./node_modules/@mui/material/styles/cssUtils.js\");\n\n\n\nfunction responsiveFontSizes(themeInput, options = {}) {\n  const {\n    breakpoints = ['sm', 'md', 'lg'],\n    disableAlign = false,\n    factor = 2,\n    variants = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'caption', 'button', 'overline']\n  } = options;\n  const theme = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, themeInput);\n  theme.typography = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, theme.typography);\n  const typography = theme.typography;\n\n  // Convert between CSS lengths e.g. em->px or px->rem\n  // Set the baseFontSize for your project. Defaults to 16px (also the browser default).\n  const convert = (0,_cssUtils__WEBPACK_IMPORTED_MODULE_1__.convertLength)(typography.htmlFontSize);\n  const breakpointValues = breakpoints.map(x => theme.breakpoints.values[x]);\n  variants.forEach(variant => {\n    const style = typography[variant];\n    const remFontSize = parseFloat(convert(style.fontSize, 'rem'));\n    if (remFontSize <= 1) {\n      return;\n    }\n    const maxFontSize = remFontSize;\n    const minFontSize = 1 + (maxFontSize - 1) / factor;\n    let {\n      lineHeight\n    } = style;\n    if (!(0,_cssUtils__WEBPACK_IMPORTED_MODULE_1__.isUnitless)(lineHeight) && !disableAlign) {\n      throw new Error( true ? `MUI: Unsupported non-unitless line height with grid alignment.\nUse unitless line heights instead.` : 0);\n    }\n    if (!(0,_cssUtils__WEBPACK_IMPORTED_MODULE_1__.isUnitless)(lineHeight)) {\n      // make it unitless\n      lineHeight = parseFloat(convert(lineHeight, 'rem')) / parseFloat(remFontSize);\n    }\n    let transform = null;\n    if (!disableAlign) {\n      transform = value => (0,_cssUtils__WEBPACK_IMPORTED_MODULE_1__.alignProperty)({\n        size: value,\n        grid: (0,_cssUtils__WEBPACK_IMPORTED_MODULE_1__.fontGrid)({\n          pixels: 4,\n          lineHeight,\n          htmlFontSize: typography.htmlFontSize\n        })\n      });\n    }\n    typography[variant] = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, style, (0,_cssUtils__WEBPACK_IMPORTED_MODULE_1__.responsiveProperty)({\n      cssProperty: 'fontSize',\n      min: minFontSize,\n      max: maxFontSize,\n      unit: 'rem',\n      breakpoints: breakpointValues,\n      transform\n    }));\n  });\n  return theme;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/responsiveFontSizes.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/shadows.js":
/*!******************************************************!*\
  !*** ./node_modules/@mui/material/styles/shadows.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n  return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\n/* harmony default export */ __webpack_exports__[\"default\"] = (shadows);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/shadows.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/styled.js":
/*!*****************************************************!*\
  !*** ./node_modules/@mui/material/styles/styled.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"rootShouldForwardProp\": function() { return /* binding */ rootShouldForwardProp; },\n/* harmony export */   \"slotShouldForwardProp\": function() { return /* binding */ slotShouldForwardProp; }\n/* harmony export */ });\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/createStyled.js\");\n/* harmony import */ var _defaultTheme__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultTheme */ \"./node_modules/@mui/material/styles/defaultTheme.js\");\n\n\nconst rootShouldForwardProp = prop => (0,_mui_system__WEBPACK_IMPORTED_MODULE_0__.shouldForwardProp)(prop) && prop !== 'classes';\nconst slotShouldForwardProp = _mui_system__WEBPACK_IMPORTED_MODULE_0__.shouldForwardProp;\nconst styled = (0,_mui_system__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  defaultTheme: _defaultTheme__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  rootShouldForwardProp\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (styled);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/styled.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/useTheme.js":
/*!*******************************************************!*\
  !*** ./node_modules/@mui/material/styles/useTheme.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ useTheme; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/useTheme.js\");\n/* harmony import */ var _defaultTheme__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./defaultTheme */ \"./node_modules/@mui/material/styles/defaultTheme.js\");\n\n\n\nfunction useTheme() {\n  const theme = (0,_mui_system__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_defaultTheme__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n  if (true) {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    react__WEBPACK_IMPORTED_MODULE_0__.useDebugValue(theme);\n  }\n  return theme;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/useTheme.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/useThemeProps.js":
/*!************************************************************!*\
  !*** ./node_modules/@mui/material/styles/useThemeProps.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ useThemeProps; }\n/* harmony export */ });\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/system */ \"./node_modules/@mui/system/esm/useThemeProps/useThemeProps.js\");\n/* harmony import */ var _defaultTheme__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultTheme */ \"./node_modules/@mui/material/styles/defaultTheme.js\");\n\n\nfunction useThemeProps({\n  props,\n  name\n}) {\n  return (0,_mui_system__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    props,\n    name,\n    defaultTheme: _defaultTheme__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  });\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/useThemeProps.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/withStyles.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/material/styles/withStyles.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ withStyles; }\n/* harmony export */ });\n\nfunction withStyles() {\n  throw new Error( true ? `MUI: withStyles is no longer exported from @mui/material/styles.\nYou have to import it from @mui/styles.\nSee https://mui.com/r/migration-v4/#mui-material-styles for more details.` : 0);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/withStyles.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/withTheme.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/material/styles/withTheme.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ withTheme; }\n/* harmony export */ });\n\nfunction withTheme() {\n  throw new Error( true ? `MUI: withTheme is no longer exported from @mui/material/styles.\nYou have to import it from @mui/styles.\nSee https://mui.com/r/migration-v4/#mui-material-styles for more details.` : 0);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/withTheme.js?");

/***/ }),

/***/ "./node_modules/@mui/material/styles/zIndex.js":
/*!*****************************************************!*\
  !*** ./node_modules/@mui/material/styles/zIndex.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n  mobileStepper: 1000,\n  fab: 1050,\n  speedDial: 1050,\n  appBar: 1100,\n  drawer: 1200,\n  modal: 1300,\n  snackbar: 1400,\n  tooltip: 1500\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (zIndex);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/styles/zIndex.js?");

/***/ }),

/***/ "./node_modules/@mui/material/transitions/utils.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/material/transitions/utils.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTransitionProps\": function() { return /* binding */ getTransitionProps; },\n/* harmony export */   \"reflow\": function() { return /* binding */ reflow; }\n/* harmony export */ });\nconst reflow = node => node.scrollTop;\nfunction getTransitionProps(props, options) {\n  var _style$transitionDura, _style$transitionTimi;\n  const {\n    timeout,\n    easing,\n    style = {}\n  } = props;\n  return {\n    duration: (_style$transitionDura = style.transitionDuration) != null ? _style$transitionDura : typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n    easing: (_style$transitionTimi = style.transitionTimingFunction) != null ? _style$transitionTimi : typeof easing === 'object' ? easing[options.mode] : easing,\n    delay: style.transitionDelay\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/transitions/utils.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/capitalize.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/material/utils/capitalize.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/capitalize.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/capitalize.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/createChainedFunction.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@mui/material/utils/createChainedFunction.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/createChainedFunction.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/createChainedFunction.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/createSvgIcon.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/material/utils/createSvgIcon.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ createSvgIcon; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _SvgIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../SvgIcon */ \"./node_modules/@mui/material/SvgIcon/SvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n/**\n * Private module reserved for @mui packages.\n */\n\nfunction createSvgIcon(path, displayName) {\n  function Component(props, ref) {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_SvgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      \"data-testid\": `${displayName}Icon`,\n      ref: ref\n    }, props, {\n      children: path\n    }));\n  }\n  if (true) {\n    // Need to set `displayName` on the inner component for React.memo.\n    // React prior to 16.14 ignores `displayName` on the wrapper.\n    Component.displayName = `${displayName}Icon`;\n  }\n  Component.muiName = _SvgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"].muiName;\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.memo( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(Component));\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/createSvgIcon.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/debounce.js":
/*!******************************************************!*\
  !*** ./node_modules/@mui/material/utils/debounce.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/debounce.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/debounce.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/deprecatedPropType.js":
/*!****************************************************************!*\
  !*** ./node_modules/@mui/material/utils/deprecatedPropType.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/deprecatedPropType.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/deprecatedPropType.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/getScrollbarSize.js":
/*!**************************************************************!*\
  !*** ./node_modules/@mui/material/utils/getScrollbarSize.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/getScrollbarSize.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/getScrollbarSize.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/index.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/material/utils/index.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"capitalize\": function() { return /* reexport safe */ _capitalize__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"createChainedFunction\": function() { return /* reexport safe */ _createChainedFunction__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; },\n/* harmony export */   \"createSvgIcon\": function() { return /* reexport safe */ _createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; },\n/* harmony export */   \"debounce\": function() { return /* reexport safe */ _debounce__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; },\n/* harmony export */   \"deprecatedPropType\": function() { return /* reexport safe */ _deprecatedPropType__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; },\n/* harmony export */   \"isMuiElement\": function() { return /* reexport safe */ _isMuiElement__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; },\n/* harmony export */   \"ownerDocument\": function() { return /* reexport safe */ _ownerDocument__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; },\n/* harmony export */   \"ownerWindow\": function() { return /* reexport safe */ _ownerWindow__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; },\n/* harmony export */   \"requirePropFactory\": function() { return /* reexport safe */ _requirePropFactory__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; },\n/* harmony export */   \"setRef\": function() { return /* reexport safe */ _setRef__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; },\n/* harmony export */   \"unstable_ClassNameGenerator\": function() { return /* binding */ unstable_ClassNameGenerator; },\n/* harmony export */   \"unstable_useEnhancedEffect\": function() { return /* reexport safe */ _useEnhancedEffect__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; },\n/* harmony export */   \"unstable_useId\": function() { return /* reexport safe */ _useId__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; },\n/* harmony export */   \"unsupportedProp\": function() { return /* reexport safe */ _unsupportedProp__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; },\n/* harmony export */   \"useControlled\": function() { return /* reexport safe */ _useControlled__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; },\n/* harmony export */   \"useEventCallback\": function() { return /* reexport safe */ _useEventCallback__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; },\n/* harmony export */   \"useForkRef\": function() { return /* reexport safe */ _useForkRef__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; },\n/* harmony export */   \"useIsFocusVisible\": function() { return /* reexport safe */ _useIsFocusVisible__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _mui_base_className__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/base/className */ \"./node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js\");\n/* harmony import */ var _capitalize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _createChainedFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createChainedFunction */ \"./node_modules/@mui/material/utils/createChainedFunction.js\");\n/* harmony import */ var _createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var _debounce__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./debounce */ \"./node_modules/@mui/material/utils/debounce.js\");\n/* harmony import */ var _deprecatedPropType__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./deprecatedPropType */ \"./node_modules/@mui/material/utils/deprecatedPropType.js\");\n/* harmony import */ var _isMuiElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isMuiElement */ \"./node_modules/@mui/material/utils/isMuiElement.js\");\n/* harmony import */ var _ownerDocument__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ownerDocument */ \"./node_modules/@mui/material/utils/ownerDocument.js\");\n/* harmony import */ var _ownerWindow__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ownerWindow */ \"./node_modules/@mui/material/utils/ownerWindow.js\");\n/* harmony import */ var _requirePropFactory__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./requirePropFactory */ \"./node_modules/@mui/material/utils/requirePropFactory.js\");\n/* harmony import */ var _setRef__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./setRef */ \"./node_modules/@mui/material/utils/setRef.js\");\n/* harmony import */ var _useEnhancedEffect__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./useEnhancedEffect */ \"./node_modules/@mui/material/utils/useEnhancedEffect.js\");\n/* harmony import */ var _useId__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./useId */ \"./node_modules/@mui/material/utils/useId.js\");\n/* harmony import */ var _unsupportedProp__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./unsupportedProp */ \"./node_modules/@mui/material/utils/unsupportedProp.js\");\n/* harmony import */ var _useControlled__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./useControlled */ \"./node_modules/@mui/material/utils/useControlled.js\");\n/* harmony import */ var _useEventCallback__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./useEventCallback */ \"./node_modules/@mui/material/utils/useEventCallback.js\");\n/* harmony import */ var _useForkRef__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./useForkRef */ \"./node_modules/@mui/material/utils/useForkRef.js\");\n/* harmony import */ var _useIsFocusVisible__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./useIsFocusVisible */ \"./node_modules/@mui/material/utils/useIsFocusVisible.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst unstable_ClassNameGenerator = {\n  configure: generator => {\n    if (true) {\n      console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n    }\n    _mui_base_className__WEBPACK_IMPORTED_MODULE_17__[\"default\"].configure(generator);\n  }\n};\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/index.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/isMuiElement.js":
/*!**********************************************************!*\
  !*** ./node_modules/@mui/material/utils/isMuiElement.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/isMuiElement.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/isMuiElement.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/ownerDocument.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/material/utils/ownerDocument.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/ownerDocument.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/ownerDocument.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/ownerWindow.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/material/utils/ownerWindow.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/ownerWindow.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/ownerWindow.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/requirePropFactory.js":
/*!****************************************************************!*\
  !*** ./node_modules/@mui/material/utils/requirePropFactory.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/requirePropFactory.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/requirePropFactory.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/setRef.js":
/*!****************************************************!*\
  !*** ./node_modules/@mui/material/utils/setRef.js ***!
  \****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/setRef.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/setRef.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/unsupportedProp.js":
/*!*************************************************************!*\
  !*** ./node_modules/@mui/material/utils/unsupportedProp.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/unsupportedProp.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/unsupportedProp.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/useControlled.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/material/utils/useControlled.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useControlled.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/useControlled.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/useEnhancedEffect.js":
/*!***************************************************************!*\
  !*** ./node_modules/@mui/material/utils/useEnhancedEffect.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useEnhancedEffect.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/useEnhancedEffect.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/useEventCallback.js":
/*!**************************************************************!*\
  !*** ./node_modules/@mui/material/utils/useEventCallback.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useEventCallback.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/useEventCallback.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/useForkRef.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/material/utils/useForkRef.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useForkRef.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/useForkRef.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/useId.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/material/utils/useId.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useId.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/useId.js?");

/***/ }),

/***/ "./node_modules/@mui/material/utils/useIsFocusVisible.js":
/*!***************************************************************!*\
  !*** ./node_modules/@mui/material/utils/useIsFocusVisible.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useIsFocusVisible.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/material/utils/useIsFocusVisible.js?");

/***/ }),

/***/ "./node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/exactProp.js\");\n/* harmony import */ var _useTheme_ThemeContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../useTheme/ThemeContext */ \"./node_modules/@mui/private-theming/useTheme/ThemeContext.js\");\n/* harmony import */ var _useTheme__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../useTheme */ \"./node_modules/@mui/private-theming/useTheme/useTheme.js\");\n/* harmony import */ var _nested__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./nested */ \"./node_modules/@mui/private-theming/ThemeProvider/nested.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n\n\n\n\n// To support composition of theme.\n\nfunction mergeOuterLocalTheme(outerTheme, localTheme) {\n  if (typeof localTheme === 'function') {\n    const mergedTheme = localTheme(outerTheme);\n    if (true) {\n      if (!mergedTheme) {\n        console.error(['MUI: You should return an object from your theme function, i.e.', '<ThemeProvider theme={() => ({})} />'].join('\\n'));\n      }\n    }\n    return mergedTheme;\n  }\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, outerTheme, localTheme);\n}\n\n/**\n * This component takes a `theme` prop.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */\nfunction ThemeProvider(props) {\n  const {\n    children,\n    theme: localTheme\n  } = props;\n  const outerTheme = (0,_useTheme__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n  if (true) {\n    if (outerTheme === null && typeof localTheme === 'function') {\n      console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n    }\n  }\n  const theme = react__WEBPACK_IMPORTED_MODULE_1__.useMemo(() => {\n    const output = outerTheme === null ? localTheme : mergeOuterLocalTheme(outerTheme, localTheme);\n    if (output != null) {\n      output[_nested__WEBPACK_IMPORTED_MODULE_4__[\"default\"]] = outerTheme !== null;\n    }\n    return output;\n  }, [localTheme, outerTheme]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_useTheme_ThemeContext__WEBPACK_IMPORTED_MODULE_5__[\"default\"].Provider, {\n    value: theme,\n    children: children\n  });\n}\n true ? ThemeProvider.propTypes = {\n  /**\n   * Your component tree.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().node),\n  /**\n   * A theme object. You can provide a function to extend the outer theme.\n   */\n  theme: prop_types__WEBPACK_IMPORTED_MODULE_6___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_6___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func)]).isRequired\n} : 0;\nif (true) {\n   true ? ThemeProvider.propTypes = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(ThemeProvider.propTypes) : 0;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (ThemeProvider);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js?");

/***/ }),

/***/ "./node_modules/@mui/private-theming/ThemeProvider/nested.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@mui/private-theming/ThemeProvider/nested.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst hasSymbol = typeof Symbol === 'function' && Symbol.for;\n/* harmony default export */ __webpack_exports__[\"default\"] = (hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__');\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/private-theming/ThemeProvider/nested.js?");

/***/ }),

/***/ "./node_modules/@mui/private-theming/useTheme/ThemeContext.js":
/*!********************************************************************!*\
  !*** ./node_modules/@mui/private-theming/useTheme/ThemeContext.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nconst ThemeContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);\nif (true) {\n  ThemeContext.displayName = 'ThemeContext';\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (ThemeContext);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/private-theming/useTheme/ThemeContext.js?");

/***/ }),

/***/ "./node_modules/@mui/private-theming/useTheme/useTheme.js":
/*!****************************************************************!*\
  !*** ./node_modules/@mui/private-theming/useTheme/useTheme.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ useTheme; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ThemeContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ThemeContext */ \"./node_modules/@mui/private-theming/useTheme/ThemeContext.js\");\n\n\nfunction useTheme() {\n  const theme = react__WEBPACK_IMPORTED_MODULE_0__.useContext(_ThemeContext__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n  if (true) {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    react__WEBPACK_IMPORTED_MODULE_0__.useDebugValue(theme);\n  }\n  return theme;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/private-theming/useTheme/useTheme.js?");

/***/ }),

/***/ "./node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ GlobalStyles; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _emotion_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @emotion/react */ \"./node_modules/@emotion/react/dist/emotion-react.browser.esm.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\nfunction isEmpty(obj) {\n  return obj === undefined || obj === null || Object.keys(obj).length === 0;\n}\nfunction GlobalStyles(props) {\n  const {\n    styles,\n    defaultTheme = {}\n  } = props;\n  const globalStyles = typeof styles === 'function' ? themeInput => styles(isEmpty(themeInput) ? defaultTheme : themeInput) : styles;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_emotion_react__WEBPACK_IMPORTED_MODULE_2__.Global, {\n    styles: globalStyles\n  });\n}\n true ? GlobalStyles.propTypes = {\n  defaultTheme: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object),\n  styles: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_3___default().string), (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)])\n} : 0;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js?");

/***/ }),

/***/ "./node_modules/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js ***!
  \**************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ StyledEngineProvider; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _emotion_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @emotion/react */ \"./node_modules/@emotion/react/dist/emotion-element-6a883da9.browser.esm.js\");\n/* harmony import */ var _emotion_cache__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @emotion/cache */ \"./node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n\n// prepend: true moves MUI styles to the top of the <head> so they're loaded first.\n// It allows developers to easily override MUI styles with other styling solutions, like CSS modules.\n\nlet cache;\nif (typeof document === 'object') {\n  cache = (0,_emotion_cache__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    key: 'css',\n    prepend: true\n  });\n}\nfunction StyledEngineProvider(props) {\n  const {\n    injectFirst,\n    children\n  } = props;\n  return injectFirst ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_emotion_react__WEBPACK_IMPORTED_MODULE_3__.C, {\n    value: cache,\n    children: children\n  }) : children;\n}\n true ? StyledEngineProvider.propTypes = {\n  /**\n   * Your component tree.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().node),\n  /**\n   * By default, the styles are injected last in the <head> element of the page.\n   * As a result, they gain more specificity than any other style sheet.\n   * If you want to override MUI's styles, set this prop.\n   */\n  injectFirst: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().bool)\n} : 0;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js?");

/***/ }),

/***/ "./node_modules/@mui/styled-engine/index.js":
/*!**************************************************!*\
  !*** ./node_modules/@mui/styled-engine/index.js ***!
  \**************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"GlobalStyles\": function() { return /* reexport safe */ _GlobalStyles__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; },\n/* harmony export */   \"StyledEngineProvider\": function() { return /* reexport safe */ _StyledEngineProvider__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; },\n/* harmony export */   \"ThemeContext\": function() { return /* reexport safe */ _emotion_react__WEBPACK_IMPORTED_MODULE_1__.T; },\n/* harmony export */   \"css\": function() { return /* reexport safe */ _emotion_react__WEBPACK_IMPORTED_MODULE_2__.css; },\n/* harmony export */   \"default\": function() { return /* binding */ styled; },\n/* harmony export */   \"internal_processStyles\": function() { return /* binding */ internal_processStyles; },\n/* harmony export */   \"keyframes\": function() { return /* reexport safe */ _emotion_react__WEBPACK_IMPORTED_MODULE_2__.keyframes; }\n/* harmony export */ });\n/* harmony import */ var _emotion_styled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @emotion/styled */ \"./node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js\");\n/* harmony import */ var _emotion_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @emotion/react */ \"./node_modules/@emotion/react/dist/emotion-element-6a883da9.browser.esm.js\");\n/* harmony import */ var _emotion_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @emotion/react */ \"./node_modules/@emotion/react/dist/emotion-react.browser.esm.js\");\n/* harmony import */ var _StyledEngineProvider__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./StyledEngineProvider */ \"./node_modules/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js\");\n/* harmony import */ var _GlobalStyles__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./GlobalStyles */ \"./node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js\");\n/**\n * @mui/styled-engine v5.11.8\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/* eslint-disable no-underscore-dangle */\n\nfunction styled(tag, options) {\n  const stylesFactory = (0,_emotion_styled__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(tag, options);\n  if (true) {\n    return (...styles) => {\n      const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n      if (styles.length === 0) {\n        console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n      } else if (styles.some(style => style === undefined)) {\n        console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n      }\n      return stylesFactory(...styles);\n    };\n  }\n  return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst internal_processStyles = (tag, processor) => {\n  // Emotion attaches all the styles as `__emotion_styles`.\n  // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n  if (Array.isArray(tag.__emotion_styles)) {\n    tag.__emotion_styles = processor(tag.__emotion_styles);\n  }\n};\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/styled-engine/index.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _mui_private_theming__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/private-theming */ \"./node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/exactProp.js\");\n/* harmony import */ var _mui_styled_engine__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/styled-engine */ \"./node_modules/@emotion/react/dist/emotion-element-6a883da9.browser.esm.js\");\n/* harmony import */ var _useTheme__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../useTheme */ \"./node_modules/@mui/system/esm/useTheme.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n\n\n\nconst EMPTY_THEME = {};\nfunction InnerThemeProvider(props) {\n  const theme = (0,_useTheme__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_mui_styled_engine__WEBPACK_IMPORTED_MODULE_3__.T.Provider, {\n    value: typeof theme === 'object' ? theme : EMPTY_THEME,\n    children: props.children\n  });\n}\n true ? InnerThemeProvider.propTypes = {\n  /**\n   * Your component tree.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().node)\n} : 0;\n\n/**\n * This component makes the `theme` available down the React tree.\n * It should preferably be used at **the root of your component tree**.\n */\nfunction ThemeProvider(props) {\n  const {\n    children,\n    theme: localTheme\n  } = props;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_mui_private_theming__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n    theme: localTheme,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(InnerThemeProvider, {\n      children: children\n    })\n  });\n}\n true ? ThemeProvider.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Your component tree.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().node),\n  /**\n   * A theme object. You can provide a function to extend the outer theme.\n   */\n  theme: prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_4___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_4___default().object)]).isRequired\n} : 0;\nif (true) {\n   true ? ThemeProvider.propTypes = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(ThemeProvider.propTypes) : 0;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (ThemeProvider);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/Unstable_Grid/createGrid.js":
/*!******************************************************************!*\
  !*** ./node_modules/@mui/system/esm/Unstable_Grid/createGrid.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ createGrid; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n/* harmony import */ var _styled__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../styled */ \"./node_modules/@mui/system/esm/styled.js\");\n/* harmony import */ var _useThemeProps__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../useThemeProps */ \"./node_modules/@mui/system/esm/useThemeProps/useThemeProps.js\");\n/* harmony import */ var _useTheme__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../useTheme */ \"./node_modules/@mui/system/esm/useTheme.js\");\n/* harmony import */ var _styleFunctionSx__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../styleFunctionSx */ \"./node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js\");\n/* harmony import */ var _createTheme__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../createTheme */ \"./node_modules/@mui/system/esm/createTheme/createTheme.js\");\n/* harmony import */ var _gridGenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./gridGenerator */ \"./node_modules/@mui/system/esm/Unstable_Grid/gridGenerator.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"className\", \"columns\", \"container\", \"component\", \"direction\", \"wrap\", \"spacing\", \"rowSpacing\", \"columnSpacing\", \"disableEqualOverflow\"];\n\n\n\n\n\n\n\n\n\n\n\nconst defaultTheme = (0,_createTheme__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n\n// widening Theme to any so that the consumer can own the theme structure.\nconst defaultCreateStyledComponent = (0,_styled__WEBPACK_IMPORTED_MODULE_6__[\"default\"])('div', {\n  name: 'MuiGrid',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n});\nfunction useThemePropsDefault(props) {\n  return (0,_useThemeProps__WEBPACK_IMPORTED_MODULE_7__[\"default\"])({\n    props,\n    name: 'MuiGrid',\n    defaultTheme\n  });\n}\nfunction createGrid(options = {}) {\n  const {\n    // This will allow adding custom styled fn (for example for custom sx style function)\n    createStyledComponent = defaultCreateStyledComponent,\n    useThemeProps = useThemePropsDefault,\n    componentName = 'MuiGrid'\n  } = options;\n  const NestedContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createContext(0);\n  const OverflowContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createContext(undefined);\n  const useUtilityClasses = (ownerState, theme) => {\n    const {\n      container,\n      direction,\n      spacing,\n      wrap,\n      gridSize\n    } = ownerState;\n    const slots = {\n      root: ['root', container && 'container', wrap !== 'wrap' && `wrap-xs-${String(wrap)}`, ...(0,_gridGenerator__WEBPACK_IMPORTED_MODULE_8__.generateDirectionClasses)(direction), ...(0,_gridGenerator__WEBPACK_IMPORTED_MODULE_8__.generateSizeClassNames)(gridSize), ...(container ? (0,_gridGenerator__WEBPACK_IMPORTED_MODULE_8__.generateSpacingClassNames)(spacing, theme.breakpoints.keys[0]) : [])]\n    };\n    return (0,_mui_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(slots, slot => (0,_mui_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(componentName, slot), {});\n  };\n  const GridRoot = createStyledComponent(_gridGenerator__WEBPACK_IMPORTED_MODULE_8__.generateGridColumnsStyles, _gridGenerator__WEBPACK_IMPORTED_MODULE_8__.generateGridColumnSpacingStyles, _gridGenerator__WEBPACK_IMPORTED_MODULE_8__.generateGridRowSpacingStyles, _gridGenerator__WEBPACK_IMPORTED_MODULE_8__.generateGridSizeStyles, _gridGenerator__WEBPACK_IMPORTED_MODULE_8__.generateGridDirectionStyles, _gridGenerator__WEBPACK_IMPORTED_MODULE_8__.generateGridStyles, _gridGenerator__WEBPACK_IMPORTED_MODULE_8__.generateGridOffsetStyles);\n  const Grid = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Grid(inProps, ref) {\n    var _inProps$columns, _inProps$spacing, _ref, _inProps$rowSpacing, _ref2, _inProps$columnSpacin, _ref3, _disableEqualOverflow;\n    const theme = (0,_useTheme__WEBPACK_IMPORTED_MODULE_11__[\"default\"])();\n    const themeProps = useThemeProps(inProps);\n    const props = (0,_styleFunctionSx__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(themeProps); // `color` type conflicts with html color attribute.\n    const level = react__WEBPACK_IMPORTED_MODULE_2__.useContext(NestedContext);\n    const overflow = react__WEBPACK_IMPORTED_MODULE_2__.useContext(OverflowContext);\n    const {\n        className,\n        columns: columnsProp = 12,\n        container = false,\n        component = 'div',\n        direction = 'row',\n        wrap = 'wrap',\n        spacing: spacingProp = 0,\n        rowSpacing: rowSpacingProp = spacingProp,\n        columnSpacing: columnSpacingProp = spacingProp,\n        disableEqualOverflow: themeDisableEqualOverflow\n      } = props,\n      rest = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n    // Because `disableEqualOverflow` can be set from the theme's defaultProps, the **nested** grid should look at the instance props instead.\n    let disableEqualOverflow = themeDisableEqualOverflow;\n    if (level && themeDisableEqualOverflow !== undefined) {\n      disableEqualOverflow = inProps.disableEqualOverflow;\n    }\n    // collect breakpoints related props because they can be customized from the theme.\n    const gridSize = {};\n    const gridOffset = {};\n    const other = {};\n    Object.entries(rest).forEach(([key, val]) => {\n      if (theme.breakpoints.values[key] !== undefined) {\n        gridSize[key] = val;\n      } else if (theme.breakpoints.values[key.replace('Offset', '')] !== undefined) {\n        gridOffset[key.replace('Offset', '')] = val;\n      } else {\n        other[key] = val;\n      }\n    });\n    const columns = (_inProps$columns = inProps.columns) != null ? _inProps$columns : level ? undefined : columnsProp;\n    const spacing = (_inProps$spacing = inProps.spacing) != null ? _inProps$spacing : level ? undefined : spacingProp;\n    const rowSpacing = (_ref = (_inProps$rowSpacing = inProps.rowSpacing) != null ? _inProps$rowSpacing : inProps.spacing) != null ? _ref : level ? undefined : rowSpacingProp;\n    const columnSpacing = (_ref2 = (_inProps$columnSpacin = inProps.columnSpacing) != null ? _inProps$columnSpacin : inProps.spacing) != null ? _ref2 : level ? undefined : columnSpacingProp;\n    const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n      level,\n      columns,\n      container,\n      direction,\n      wrap,\n      spacing,\n      rowSpacing,\n      columnSpacing,\n      gridSize,\n      gridOffset,\n      disableEqualOverflow: (_ref3 = (_disableEqualOverflow = disableEqualOverflow) != null ? _disableEqualOverflow : overflow) != null ? _ref3 : false,\n      // use context value if exists.\n      parentDisableEqualOverflow: overflow // for nested grid\n    });\n\n    const classes = useUtilityClasses(ownerState, theme);\n    let result = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(GridRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      ref: ref,\n      as: component,\n      ownerState: ownerState,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className)\n    }, other));\n    if (container) {\n      result = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(NestedContext.Provider, {\n        value: level + 1,\n        children: result\n      });\n    }\n    if (disableEqualOverflow !== undefined && disableEqualOverflow !== (overflow != null ? overflow : false)) {\n      // There are 2 possibilities that should wrap with the OverflowContext to communicate with the nested grids:\n      // 1. It is the root grid with `disableEqualOverflow`.\n      // 2. It is a nested grid with different `disableEqualOverflow` from the context.\n      result = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(OverflowContext.Provider, {\n        value: disableEqualOverflow,\n        children: result\n      });\n    }\n    return result;\n  });\n   true ? Grid.propTypes /* remove-proptypes */ = {\n    children: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().node),\n    className: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string),\n    columns: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_13___default().number)), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object)]),\n    columnSpacing: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)])), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)]),\n    component: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().elementType),\n    container: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n    direction: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['column-reverse', 'column', 'row-reverse', 'row']), prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object)]),\n    disableEqualOverflow: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n    lg: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)]),\n    lgOffset: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number)]),\n    md: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)]),\n    mdOffset: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number)]),\n    rowSpacing: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)])), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)]),\n    sm: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)]),\n    smOffset: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number)]),\n    spacing: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)])), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)]),\n    sx: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_13___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object)]),\n    wrap: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['nowrap', 'wrap-reverse', 'wrap']),\n    xl: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)]),\n    xlOffset: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number)]),\n    xs: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool)]),\n    xsOffset: prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_13___default().oneOf(['auto']), (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number)])\n  } : 0;\n  return Grid;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/Unstable_Grid/createGrid.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/Unstable_Grid/gridGenerator.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@mui/system/esm/Unstable_Grid/gridGenerator.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"filterBreakpointKeys\": function() { return /* binding */ filterBreakpointKeys; },\n/* harmony export */   \"generateDirectionClasses\": function() { return /* binding */ generateDirectionClasses; },\n/* harmony export */   \"generateGridColumnSpacingStyles\": function() { return /* binding */ generateGridColumnSpacingStyles; },\n/* harmony export */   \"generateGridColumnsStyles\": function() { return /* binding */ generateGridColumnsStyles; },\n/* harmony export */   \"generateGridDirectionStyles\": function() { return /* binding */ generateGridDirectionStyles; },\n/* harmony export */   \"generateGridOffsetStyles\": function() { return /* binding */ generateGridOffsetStyles; },\n/* harmony export */   \"generateGridRowSpacingStyles\": function() { return /* binding */ generateGridRowSpacingStyles; },\n/* harmony export */   \"generateGridSizeStyles\": function() { return /* binding */ generateGridSizeStyles; },\n/* harmony export */   \"generateGridStyles\": function() { return /* binding */ generateGridStyles; },\n/* harmony export */   \"generateSizeClassNames\": function() { return /* binding */ generateSizeClassNames; },\n/* harmony export */   \"generateSpacingClassNames\": function() { return /* binding */ generateSpacingClassNames; },\n/* harmony export */   \"traverseBreakpoints\": function() { return /* binding */ traverseBreakpoints; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n\nfunction isNestedContainer(ownerState) {\n  return ownerState.level > 0 && ownerState.container;\n}\nfunction createGetSelfSpacing(ownerState) {\n  return function getSelfSpacing(axis) {\n    return `var(--Grid-${axis}Spacing${ownerState.level || ''})`;\n  };\n}\nfunction createGetParentSpacing(ownerState) {\n  return function getParentSpacing(axis) {\n    if (ownerState.level === 0) {\n      return `var(--Grid-${axis}Spacing)`;\n    }\n    return `var(--Grid-${axis}Spacing${ownerState.level - 1 || ''})`;\n  };\n}\nconst filterBreakpointKeys = (breakpointsKeys, responsiveKeys) => breakpointsKeys.filter(key => responsiveKeys.includes(key));\nconst traverseBreakpoints = (breakpoints, responsive, iterator) => {\n  const smallestBreakpoint = breakpoints.keys[0]; // the keys is sorted from smallest to largest by `createBreakpoints`.\n\n  if (Array.isArray(responsive)) {\n    responsive.forEach((breakpointValue, index) => {\n      iterator((responsiveStyles, style) => {\n        if (index <= breakpoints.keys.length - 1) {\n          if (index === 0) {\n            Object.assign(responsiveStyles, style);\n          } else {\n            responsiveStyles[breakpoints.up(breakpoints.keys[index])] = style;\n          }\n        }\n      }, breakpointValue);\n    });\n  } else if (responsive && typeof responsive === 'object') {\n    // prevent null\n    // responsive could be a very big object, pick the smallest responsive values\n\n    const keys = Object.keys(responsive).length > breakpoints.keys.length ? breakpoints.keys : filterBreakpointKeys(breakpoints.keys, Object.keys(responsive));\n    keys.forEach(key => {\n      if (breakpoints.keys.indexOf(key) !== -1) {\n        // @ts-ignore already checked that responsive is an object\n        const breakpointValue = responsive[key];\n        if (breakpointValue !== undefined) {\n          iterator((responsiveStyles, style) => {\n            if (smallestBreakpoint === key) {\n              Object.assign(responsiveStyles, style);\n            } else {\n              responsiveStyles[breakpoints.up(key)] = style;\n            }\n          }, breakpointValue);\n        }\n      }\n    });\n  } else if (typeof responsive === 'number' || typeof responsive === 'string') {\n    iterator((responsiveStyles, style) => {\n      Object.assign(responsiveStyles, style);\n    }, responsive);\n  }\n};\nconst generateGridSizeStyles = ({\n  theme,\n  ownerState\n}) => {\n  const getSelfSpacing = createGetSelfSpacing(ownerState);\n  const styles = {};\n  traverseBreakpoints(theme.breakpoints, ownerState.gridSize, (appendStyle, value) => {\n    let style = {};\n    if (value === true) {\n      style = {\n        flexBasis: 0,\n        flexGrow: 1,\n        maxWidth: '100%'\n      };\n    }\n    if (value === 'auto') {\n      style = {\n        flexBasis: 'auto',\n        flexGrow: 0,\n        flexShrink: 0,\n        maxWidth: 'none',\n        width: 'auto'\n      };\n    }\n    if (typeof value === 'number') {\n      style = {\n        flexGrow: 0,\n        flexBasis: 'auto',\n        width: `calc(100% * ${value} / var(--Grid-columns)${isNestedContainer(ownerState) ? ` + ${getSelfSpacing('column')}` : ''})`\n      };\n    }\n    appendStyle(styles, style);\n  });\n  return styles;\n};\nconst generateGridOffsetStyles = ({\n  theme,\n  ownerState\n}) => {\n  const styles = {};\n  traverseBreakpoints(theme.breakpoints, ownerState.gridOffset, (appendStyle, value) => {\n    let style = {};\n    if (value === 'auto') {\n      style = {\n        marginLeft: 'auto'\n      };\n    }\n    if (typeof value === 'number') {\n      style = {\n        marginLeft: value === 0 ? '0px' : `calc(100% * ${value} / var(--Grid-columns))`\n      };\n    }\n    appendStyle(styles, style);\n  });\n  return styles;\n};\nconst generateGridColumnsStyles = ({\n  theme,\n  ownerState\n}) => {\n  if (!ownerState.container) {\n    return {};\n  }\n  const styles = {\n    '--Grid-columns': 12\n  };\n  traverseBreakpoints(theme.breakpoints, ownerState.columns, (appendStyle, value) => {\n    appendStyle(styles, {\n      '--Grid-columns': value\n    });\n  });\n  return styles;\n};\nconst generateGridRowSpacingStyles = ({\n  theme,\n  ownerState\n}) => {\n  if (!ownerState.container) {\n    return {};\n  }\n  const getParentSpacing = createGetParentSpacing(ownerState);\n  const styles = isNestedContainer(ownerState) ? {\n    // Set the default spacing as its parent spacing.\n    // It will be overridden if spacing props are provided\n    [`--Grid-rowSpacing${ownerState.level || ''}`]: getParentSpacing('row')\n  } : {};\n  traverseBreakpoints(theme.breakpoints, ownerState.rowSpacing, (appendStyle, value) => {\n    var _theme$spacing;\n    appendStyle(styles, {\n      [`--Grid-rowSpacing${ownerState.level || ''}`]: typeof value === 'string' ? value : (_theme$spacing = theme.spacing) == null ? void 0 : _theme$spacing.call(theme, value)\n    });\n  });\n  return styles;\n};\nconst generateGridColumnSpacingStyles = ({\n  theme,\n  ownerState\n}) => {\n  if (!ownerState.container) {\n    return {};\n  }\n  const getParentSpacing = createGetParentSpacing(ownerState);\n  const styles = isNestedContainer(ownerState) ? {\n    // Set the default spacing as its parent spacing.\n    // It will be overridden if spacing props are provided\n    [`--Grid-columnSpacing${ownerState.level || ''}`]: getParentSpacing('column')\n  } : {};\n  traverseBreakpoints(theme.breakpoints, ownerState.columnSpacing, (appendStyle, value) => {\n    var _theme$spacing2;\n    appendStyle(styles, {\n      [`--Grid-columnSpacing${ownerState.level || ''}`]: typeof value === 'string' ? value : (_theme$spacing2 = theme.spacing) == null ? void 0 : _theme$spacing2.call(theme, value)\n    });\n  });\n  return styles;\n};\nconst generateGridDirectionStyles = ({\n  theme,\n  ownerState\n}) => {\n  if (!ownerState.container) {\n    return {};\n  }\n  const styles = {};\n  traverseBreakpoints(theme.breakpoints, ownerState.direction, (appendStyle, value) => {\n    appendStyle(styles, {\n      flexDirection: value\n    });\n  });\n  return styles;\n};\nconst generateGridStyles = ({\n  ownerState\n}) => {\n  const getSelfSpacing = createGetSelfSpacing(ownerState);\n  const getParentSpacing = createGetParentSpacing(ownerState);\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    minWidth: 0,\n    boxSizing: 'border-box'\n  }, ownerState.container && (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    display: 'flex',\n    flexWrap: 'wrap'\n  }, ownerState.wrap && ownerState.wrap !== 'wrap' && {\n    flexWrap: ownerState.wrap\n  }, {\n    margin: `calc(${getSelfSpacing('row')} / -2) calc(${getSelfSpacing('column')} / -2)`\n  }, ownerState.disableEqualOverflow && {\n    margin: `calc(${getSelfSpacing('row')} * -1) 0px 0px calc(${getSelfSpacing('column')} * -1)`\n  }), (!ownerState.container || isNestedContainer(ownerState)) && (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    padding: `calc(${getParentSpacing('row')} / 2) calc(${getParentSpacing('column')} / 2)`\n  }, (ownerState.disableEqualOverflow || ownerState.parentDisableEqualOverflow) && {\n    padding: `${getParentSpacing('row')} 0px 0px ${getParentSpacing('column')}`\n  }));\n};\nconst generateSizeClassNames = gridSize => {\n  const classNames = [];\n  Object.entries(gridSize).forEach(([key, value]) => {\n    if (value !== false && value !== undefined) {\n      classNames.push(`grid-${key}-${String(value)}`);\n    }\n  });\n  return classNames;\n};\nconst generateSpacingClassNames = (spacing, smallestBreakpoint = 'xs') => {\n  function isValidSpacing(val) {\n    if (val === undefined) {\n      return false;\n    }\n    return typeof val === 'string' && !Number.isNaN(Number(val)) || typeof val === 'number' && val > 0;\n  }\n  if (isValidSpacing(spacing)) {\n    return [`spacing-${smallestBreakpoint}-${String(spacing)}`];\n  }\n  if (typeof spacing === 'object' && !Array.isArray(spacing)) {\n    const classNames = [];\n    Object.entries(spacing).forEach(([key, value]) => {\n      if (isValidSpacing(value)) {\n        classNames.push(`spacing-${key}-${String(value)}`);\n      }\n    });\n    return classNames;\n  }\n  return [];\n};\nconst generateDirectionClasses = direction => {\n  if (direction === undefined) {\n    return [];\n  }\n  if (typeof direction === 'object') {\n    return Object.entries(direction).map(([key, value]) => `direction-${key}-${value}`);\n  }\n  return [`direction-xs-${String(direction)}`];\n};\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/Unstable_Grid/gridGenerator.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/borders.js":
/*!*************************************************!*\
  !*** ./node_modules/@mui/system/esm/borders.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"border\": function() { return /* binding */ border; },\n/* harmony export */   \"borderBottom\": function() { return /* binding */ borderBottom; },\n/* harmony export */   \"borderBottomColor\": function() { return /* binding */ borderBottomColor; },\n/* harmony export */   \"borderColor\": function() { return /* binding */ borderColor; },\n/* harmony export */   \"borderLeft\": function() { return /* binding */ borderLeft; },\n/* harmony export */   \"borderLeftColor\": function() { return /* binding */ borderLeftColor; },\n/* harmony export */   \"borderRadius\": function() { return /* binding */ borderRadius; },\n/* harmony export */   \"borderRight\": function() { return /* binding */ borderRight; },\n/* harmony export */   \"borderRightColor\": function() { return /* binding */ borderRightColor; },\n/* harmony export */   \"borderTop\": function() { return /* binding */ borderTop; },\n/* harmony export */   \"borderTopColor\": function() { return /* binding */ borderTopColor; },\n/* harmony export */   \"borderTransform\": function() { return /* binding */ borderTransform; }\n/* harmony export */ });\n/* harmony import */ var _responsivePropType__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./responsivePropType */ \"./node_modules/@mui/system/esm/responsivePropType.js\");\n/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./style */ \"./node_modules/@mui/system/esm/style.js\");\n/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./compose */ \"./node_modules/@mui/system/esm/compose.js\");\n/* harmony import */ var _spacing__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./spacing */ \"./node_modules/@mui/system/esm/spacing.js\");\n/* harmony import */ var _breakpoints__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./breakpoints */ \"./node_modules/@mui/system/esm/breakpoints.js\");\n\n\n\n\n\nfunction borderTransform(value) {\n  if (typeof value !== 'number') {\n    return value;\n  }\n  return `${value}px solid`;\n}\nconst border = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'border',\n  themeKey: 'borders',\n  transform: borderTransform\n});\nconst borderTop = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'borderTop',\n  themeKey: 'borders',\n  transform: borderTransform\n});\nconst borderRight = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'borderRight',\n  themeKey: 'borders',\n  transform: borderTransform\n});\nconst borderBottom = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'borderBottom',\n  themeKey: 'borders',\n  transform: borderTransform\n});\nconst borderLeft = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'borderLeft',\n  themeKey: 'borders',\n  transform: borderTransform\n});\nconst borderColor = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'borderColor',\n  themeKey: 'palette'\n});\nconst borderTopColor = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'borderTopColor',\n  themeKey: 'palette'\n});\nconst borderRightColor = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'borderRightColor',\n  themeKey: 'palette'\n});\nconst borderBottomColor = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'borderBottomColor',\n  themeKey: 'palette'\n});\nconst borderLeftColor = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'borderLeftColor',\n  themeKey: 'palette'\n});\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nconst borderRadius = props => {\n  if (props.borderRadius !== undefined && props.borderRadius !== null) {\n    const transformer = (0,_spacing__WEBPACK_IMPORTED_MODULE_1__.createUnaryUnit)(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n    const styleFromPropValue = propValue => ({\n      borderRadius: (0,_spacing__WEBPACK_IMPORTED_MODULE_1__.getValue)(transformer, propValue)\n    });\n    return (0,_breakpoints__WEBPACK_IMPORTED_MODULE_2__.handleBreakpoints)(props, props.borderRadius, styleFromPropValue);\n  }\n  return null;\n};\nborderRadius.propTypes =  true ? {\n  borderRadius: _responsivePropType__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n} : 0;\nborderRadius.filterProps = ['borderRadius'];\nconst borders = (0,_compose__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius);\n/* harmony default export */ __webpack_exports__[\"default\"] = (borders);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/borders.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/breakpoints.js":
/*!*****************************************************!*\
  !*** ./node_modules/@mui/system/esm/breakpoints.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"computeBreakpointsBase\": function() { return /* binding */ computeBreakpointsBase; },\n/* harmony export */   \"createEmptyBreakpointObject\": function() { return /* binding */ createEmptyBreakpointObject; },\n/* harmony export */   \"handleBreakpoints\": function() { return /* binding */ handleBreakpoints; },\n/* harmony export */   \"mergeBreakpointsInOrder\": function() { return /* binding */ mergeBreakpointsInOrder; },\n/* harmony export */   \"removeUnusedBreakpoints\": function() { return /* binding */ removeUnusedBreakpoints; },\n/* harmony export */   \"resolveBreakpointValues\": function() { return /* binding */ resolveBreakpointValues; },\n/* harmony export */   \"values\": function() { return /* binding */ values; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/deepmerge.js\");\n/* harmony import */ var _merge__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./merge */ \"./node_modules/@mui/system/esm/merge.js\");\n\n\n\n\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nconst values = {\n  xs: 0,\n  // phone\n  sm: 600,\n  // tablet\n  md: 900,\n  // small laptop\n  lg: 1200,\n  // desktop\n  xl: 1536 // large screen\n};\n\nconst defaultBreakpoints = {\n  // Sorted ASC by size. That's important.\n  // It can't be configured as it's used statically for propTypes.\n  keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n  up: key => `@media (min-width:${values[key]}px)`\n};\nfunction handleBreakpoints(props, propValue, styleFromPropValue) {\n  const theme = props.theme || {};\n  if (Array.isArray(propValue)) {\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    return propValue.reduce((acc, item, index) => {\n      acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n      return acc;\n    }, {});\n  }\n  if (typeof propValue === 'object') {\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    return Object.keys(propValue).reduce((acc, breakpoint) => {\n      // key is breakpoint\n      if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n        const mediaKey = themeBreakpoints.up(breakpoint);\n        acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n      } else {\n        const cssKey = breakpoint;\n        acc[cssKey] = propValue[cssKey];\n      }\n      return acc;\n    }, {});\n  }\n  const output = styleFromPropValue(propValue);\n  return output;\n}\nfunction breakpoints(styleFunction) {\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const newStyleFunction = props => {\n    const theme = props.theme || {};\n    const base = styleFunction(props);\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    const extended = themeBreakpoints.keys.reduce((acc, key) => {\n      if (props[key]) {\n        acc = acc || {};\n        acc[themeBreakpoints.up(key)] = styleFunction((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n          theme\n        }, props[key]));\n      }\n      return acc;\n    }, null);\n    return (0,_merge__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(base, extended);\n  };\n  newStyleFunction.propTypes =  true ? (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, styleFunction.propTypes, {\n    xs: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object),\n    sm: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object),\n    md: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object),\n    lg: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object),\n    xl: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object)\n  }) : 0;\n  newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n  return newStyleFunction;\n}\nfunction createEmptyBreakpointObject(breakpointsInput = {}) {\n  var _breakpointsInput$key;\n  const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n    const breakpointStyleKey = breakpointsInput.up(key);\n    acc[breakpointStyleKey] = {};\n    return acc;\n  }, {});\n  return breakpointsInOrder || {};\n}\nfunction removeUnusedBreakpoints(breakpointKeys, style) {\n  return breakpointKeys.reduce((acc, key) => {\n    const breakpointOutput = acc[key];\n    const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n    if (isBreakpointUnused) {\n      delete acc[key];\n    }\n    return acc;\n  }, style);\n}\nfunction mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n  const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n  const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => (0,_mui_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(prev, next), {});\n  return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nfunction computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n  // fixed value\n  if (typeof breakpointValues !== 'object') {\n    return {};\n  }\n  const base = {};\n  const breakpointsKeys = Object.keys(themeBreakpoints);\n  if (Array.isArray(breakpointValues)) {\n    breakpointsKeys.forEach((breakpoint, i) => {\n      if (i < breakpointValues.length) {\n        base[breakpoint] = true;\n      }\n    });\n  } else {\n    breakpointsKeys.forEach(breakpoint => {\n      if (breakpointValues[breakpoint] != null) {\n        base[breakpoint] = true;\n      }\n    });\n  }\n  return base;\n}\nfunction resolveBreakpointValues({\n  values: breakpointValues,\n  breakpoints: themeBreakpoints,\n  base: customBase\n}) {\n  const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n  const keys = Object.keys(base);\n  if (keys.length === 0) {\n    return breakpointValues;\n  }\n  let previous;\n  return keys.reduce((acc, breakpoint, i) => {\n    if (Array.isArray(breakpointValues)) {\n      acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n      previous = i;\n    } else if (typeof breakpointValues === 'object') {\n      acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n      previous = breakpoint;\n    } else {\n      acc[breakpoint] = breakpointValues;\n    }\n    return acc;\n  }, {});\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (breakpoints);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/breakpoints.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/colorManipulator.js":
/*!**********************************************************!*\
  !*** ./node_modules/@mui/system/esm/colorManipulator.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"alpha\": function() { return /* binding */ alpha; },\n/* harmony export */   \"colorChannel\": function() { return /* binding */ colorChannel; },\n/* harmony export */   \"darken\": function() { return /* binding */ darken; },\n/* harmony export */   \"decomposeColor\": function() { return /* binding */ decomposeColor; },\n/* harmony export */   \"emphasize\": function() { return /* binding */ emphasize; },\n/* harmony export */   \"getContrastRatio\": function() { return /* binding */ getContrastRatio; },\n/* harmony export */   \"getLuminance\": function() { return /* binding */ getLuminance; },\n/* harmony export */   \"hexToRgb\": function() { return /* binding */ hexToRgb; },\n/* harmony export */   \"hslToRgb\": function() { return /* binding */ hslToRgb; },\n/* harmony export */   \"lighten\": function() { return /* binding */ lighten; },\n/* harmony export */   \"private_safeAlpha\": function() { return /* binding */ private_safeAlpha; },\n/* harmony export */   \"private_safeColorChannel\": function() { return /* binding */ private_safeColorChannel; },\n/* harmony export */   \"private_safeDarken\": function() { return /* binding */ private_safeDarken; },\n/* harmony export */   \"private_safeEmphasize\": function() { return /* binding */ private_safeEmphasize; },\n/* harmony export */   \"private_safeLighten\": function() { return /* binding */ private_safeLighten; },\n/* harmony export */   \"recomposeColor\": function() { return /* binding */ recomposeColor; },\n/* harmony export */   \"rgbToHex\": function() { return /* binding */ rgbToHex; }\n/* harmony export */ });\n\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clamp(value, min = 0, max = 1) {\n  if (true) {\n    if (value < min || value > max) {\n      console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n    }\n  }\n  return Math.min(Math.max(min, value), max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nfunction hexToRgb(color) {\n  color = color.slice(1);\n  const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n  let colors = color.match(re);\n  if (colors && colors[0].length === 1) {\n    colors = colors.map(n => n + n);\n  }\n  return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n    return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n  }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n  const hex = int.toString(16);\n  return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nfunction decomposeColor(color) {\n  // Idempotent\n  if (color.type) {\n    return color;\n  }\n  if (color.charAt(0) === '#') {\n    return decomposeColor(hexToRgb(color));\n  }\n  const marker = color.indexOf('(');\n  const type = color.substring(0, marker);\n  if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n    throw new Error( true ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : 0);\n  }\n  let values = color.substring(marker + 1, color.length - 1);\n  let colorSpace;\n  if (type === 'color') {\n    values = values.split(' ');\n    colorSpace = values.shift();\n    if (values.length === 4 && values[3].charAt(0) === '/') {\n      values[3] = values[3].slice(1);\n    }\n    if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n      throw new Error( true ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : 0);\n    }\n  } else {\n    values = values.split(',');\n  }\n  values = values.map(value => parseFloat(value));\n  return {\n    type,\n    values,\n    colorSpace\n  };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nconst colorChannel = color => {\n  const decomposedColor = decomposeColor(color);\n  return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nconst private_safeColorChannel = (color, warning) => {\n  try {\n    return colorChannel(color);\n  } catch (error) {\n    if (warning && \"development\" !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nfunction recomposeColor(color) {\n  const {\n    type,\n    colorSpace\n  } = color;\n  let {\n    values\n  } = color;\n  if (type.indexOf('rgb') !== -1) {\n    // Only convert the first 3 values to int (i.e. not alpha)\n    values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n  } else if (type.indexOf('hsl') !== -1) {\n    values[1] = `${values[1]}%`;\n    values[2] = `${values[2]}%`;\n  }\n  if (type.indexOf('color') !== -1) {\n    values = `${colorSpace} ${values.join(' ')}`;\n  } else {\n    values = `${values.join(', ')}`;\n  }\n  return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nfunction rgbToHex(color) {\n  // Idempotent\n  if (color.indexOf('#') === 0) {\n    return color;\n  }\n  const {\n    values\n  } = decomposeColor(color);\n  return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nfunction hslToRgb(color) {\n  color = decomposeColor(color);\n  const {\n    values\n  } = color;\n  const h = values[0];\n  const s = values[1] / 100;\n  const l = values[2] / 100;\n  const a = s * Math.min(l, 1 - l);\n  const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n  let type = 'rgb';\n  const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n  if (color.type === 'hsla') {\n    type += 'a';\n    rgb.push(values[3]);\n  }\n  return recomposeColor({\n    type,\n    values: rgb\n  });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nfunction getLuminance(color) {\n  color = decomposeColor(color);\n  let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n  rgb = rgb.map(val => {\n    if (color.type !== 'color') {\n      val /= 255; // normalized\n    }\n\n    return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n  });\n\n  // Truncate at 3 digits\n  return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nfunction getContrastRatio(foreground, background) {\n  const lumA = getLuminance(foreground);\n  const lumB = getLuminance(background);\n  return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction alpha(color, value) {\n  color = decomposeColor(color);\n  value = clamp(value);\n  if (color.type === 'rgb' || color.type === 'hsl') {\n    color.type += 'a';\n  }\n  if (color.type === 'color') {\n    color.values[3] = `/${value}`;\n  } else {\n    color.values[3] = value;\n  }\n  return recomposeColor(color);\n}\nfunction private_safeAlpha(color, value, warning) {\n  try {\n    return alpha(color, value);\n  } catch (error) {\n    if (warning && \"development\" !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction darken(color, coefficient) {\n  color = decomposeColor(color);\n  coefficient = clamp(coefficient);\n  if (color.type.indexOf('hsl') !== -1) {\n    color.values[2] *= 1 - coefficient;\n  } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] *= 1 - coefficient;\n    }\n  }\n  return recomposeColor(color);\n}\nfunction private_safeDarken(color, coefficient, warning) {\n  try {\n    return darken(color, coefficient);\n  } catch (error) {\n    if (warning && \"development\" !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction lighten(color, coefficient) {\n  color = decomposeColor(color);\n  coefficient = clamp(coefficient);\n  if (color.type.indexOf('hsl') !== -1) {\n    color.values[2] += (100 - color.values[2]) * coefficient;\n  } else if (color.type.indexOf('rgb') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] += (255 - color.values[i]) * coefficient;\n    }\n  } else if (color.type.indexOf('color') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] += (1 - color.values[i]) * coefficient;\n    }\n  }\n  return recomposeColor(color);\n}\nfunction private_safeLighten(color, coefficient, warning) {\n  try {\n    return lighten(color, coefficient);\n  } catch (error) {\n    if (warning && \"development\" !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction emphasize(color, coefficient = 0.15) {\n  return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nfunction private_safeEmphasize(color, coefficient, warning) {\n  try {\n    return private_safeEmphasize(color, coefficient);\n  } catch (error) {\n    if (warning && \"development\" !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/colorManipulator.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/compose.js":
/*!*************************************************!*\
  !*** ./node_modules/@mui/system/esm/compose.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _merge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./merge */ \"./node_modules/@mui/system/esm/merge.js\");\n\nfunction compose(...styles) {\n  const handlers = styles.reduce((acc, style) => {\n    style.filterProps.forEach(prop => {\n      acc[prop] = style;\n    });\n    return acc;\n  }, {});\n\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const fn = props => {\n    return Object.keys(props).reduce((acc, prop) => {\n      if (handlers[prop]) {\n        return (0,_merge__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(acc, handlers[prop](props));\n      }\n      return acc;\n    }, {});\n  };\n  fn.propTypes =  true ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : 0;\n  fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n  return fn;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (compose);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/compose.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/createBox.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/system/esm/createBox.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ createBox; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _mui_styled_engine__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/styled-engine */ \"./node_modules/@mui/styled-engine/index.js\");\n/* harmony import */ var _styleFunctionSx__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./styleFunctionSx */ \"./node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js\");\n/* harmony import */ var _styleFunctionSx__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./styleFunctionSx */ \"./node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js\");\n/* harmony import */ var _useTheme__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./useTheme */ \"./node_modules/@mui/system/esm/useTheme.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst _excluded = [\"className\", \"component\"];\n\n\n\n\n\n\nfunction createBox(options = {}) {\n  const {\n    defaultTheme,\n    defaultClassName = 'MuiBox-root',\n    generateClassName\n  } = options;\n  const BoxRoot = (0,_mui_styled_engine__WEBPACK_IMPORTED_MODULE_5__[\"default\"])('div', {\n    shouldForwardProp: prop => prop !== 'theme' && prop !== 'sx' && prop !== 'as'\n  })(_styleFunctionSx__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n  const Box = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Box(inProps, ref) {\n    const theme = (0,_useTheme__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(defaultTheme);\n    const _extendSxProp = (0,_styleFunctionSx__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(inProps),\n      {\n        className,\n        component = 'div'\n      } = _extendSxProp,\n      other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_extendSxProp, _excluded);\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(BoxRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      as: component,\n      ref: ref,\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(className, generateClassName ? generateClassName(defaultClassName) : defaultClassName),\n      theme: theme\n    }, other));\n  });\n  return Box;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/createBox.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/createStyled.js":
/*!******************************************************!*\
  !*** ./node_modules/@mui/system/esm/createStyled.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ createStyled; },\n/* harmony export */   \"shouldForwardProp\": function() { return /* binding */ shouldForwardProp; },\n/* harmony export */   \"systemDefaultTheme\": function() { return /* binding */ systemDefaultTheme; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _mui_styled_engine__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/styled-engine */ \"./node_modules/@mui/styled-engine/index.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/getDisplayName.js\");\n/* harmony import */ var _createTheme__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createTheme */ \"./node_modules/@mui/system/esm/createTheme/createTheme.js\");\n/* harmony import */ var _propsToClassKey__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./propsToClassKey */ \"./node_modules/@mui/system/esm/propsToClassKey.js\");\n/* harmony import */ var _styleFunctionSx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./styleFunctionSx */ \"./node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js\");\n\n\nconst _excluded = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"],\n  _excluded2 = [\"theme\"],\n  _excluded3 = [\"theme\"];\n/* eslint-disable no-underscore-dangle */\n\n\n\n\n\nfunction isEmpty(obj) {\n  return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n  return typeof tag === 'string' &&\n  // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96;\n}\nconst getStyleOverrides = (name, theme) => {\n  if (theme.components && theme.components[name] && theme.components[name].styleOverrides) {\n    return theme.components[name].styleOverrides;\n  }\n  return null;\n};\nconst getVariantStyles = (name, theme) => {\n  let variants = [];\n  if (theme && theme.components && theme.components[name] && theme.components[name].variants) {\n    variants = theme.components[name].variants;\n  }\n  const variantsStyles = {};\n  variants.forEach(definition => {\n    const key = (0,_propsToClassKey__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(definition.props);\n    variantsStyles[key] = definition.style;\n  });\n  return variantsStyles;\n};\nconst variantsResolver = (props, styles, theme, name) => {\n  var _theme$components, _theme$components$nam;\n  const {\n    ownerState = {}\n  } = props;\n  const variantsStyles = [];\n  const themeVariants = theme == null ? void 0 : (_theme$components = theme.components) == null ? void 0 : (_theme$components$nam = _theme$components[name]) == null ? void 0 : _theme$components$nam.variants;\n  if (themeVariants) {\n    themeVariants.forEach(themeVariant => {\n      let isMatch = true;\n      Object.keys(themeVariant.props).forEach(key => {\n        if (ownerState[key] !== themeVariant.props[key] && props[key] !== themeVariant.props[key]) {\n          isMatch = false;\n        }\n      });\n      if (isMatch) {\n        variantsStyles.push(styles[(0,_propsToClassKey__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(themeVariant.props)]);\n      }\n    });\n  }\n  return variantsStyles;\n};\n\n// Update /system/styled/#api in case if this changes\nfunction shouldForwardProp(prop) {\n  return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nconst systemDefaultTheme = (0,_createTheme__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\nconst lowercaseFirstLetter = string => {\n  return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction createStyled(input = {}) {\n  const {\n    defaultTheme = systemDefaultTheme,\n    rootShouldForwardProp = shouldForwardProp,\n    slotShouldForwardProp = shouldForwardProp\n  } = input;\n  const systemSx = props => {\n    const theme = isEmpty(props.theme) ? defaultTheme : props.theme;\n    return (0,_styleFunctionSx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n      theme\n    }));\n  };\n  systemSx.__mui_systemSx = true;\n  return (tag, inputOptions = {}) => {\n    // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n    (0,_mui_styled_engine__WEBPACK_IMPORTED_MODULE_5__.internal_processStyles)(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n    const {\n        name: componentName,\n        slot: componentSlot,\n        skipVariantsResolver: inputSkipVariantsResolver,\n        skipSx: inputSkipSx,\n        overridesResolver\n      } = inputOptions,\n      options = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(inputOptions, _excluded);\n\n    // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n    const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver : componentSlot && componentSlot !== 'Root' || false;\n    const skipSx = inputSkipSx || false;\n    let label;\n    if (true) {\n      if (componentName) {\n        label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n      }\n    }\n    let shouldForwardPropOption = shouldForwardProp;\n    if (componentSlot === 'Root') {\n      shouldForwardPropOption = rootShouldForwardProp;\n    } else if (componentSlot) {\n      // any other slot specified\n      shouldForwardPropOption = slotShouldForwardProp;\n    } else if (isStringTag(tag)) {\n      // for string (html) tag, preserve the behavior in emotion & styled-components.\n      shouldForwardPropOption = undefined;\n    }\n    const defaultStyledResolver = (0,_mui_styled_engine__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(tag, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n      shouldForwardProp: shouldForwardPropOption,\n      label\n    }, options));\n    const muiStyledResolver = (styleArg, ...expressions) => {\n      const expressionsWithDefaultTheme = expressions ? expressions.map(stylesArg => {\n        // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n        // component stays as a function. This condition makes sure that we do not interpolate functions\n        // which are basically components used as a selectors.\n        return typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg ? _ref => {\n          let {\n              theme: themeInput\n            } = _ref,\n            other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref, _excluded2);\n          return stylesArg((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n            theme: isEmpty(themeInput) ? defaultTheme : themeInput\n          }, other));\n        } : stylesArg;\n      }) : [];\n      let transformedStyleArg = styleArg;\n      if (componentName && overridesResolver) {\n        expressionsWithDefaultTheme.push(props => {\n          const theme = isEmpty(props.theme) ? defaultTheme : props.theme;\n          const styleOverrides = getStyleOverrides(componentName, theme);\n          if (styleOverrides) {\n            const resolvedStyleOverrides = {};\n            Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n              resolvedStyleOverrides[slotKey] = typeof slotStyle === 'function' ? slotStyle((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n                theme\n              })) : slotStyle;\n            });\n            return overridesResolver(props, resolvedStyleOverrides);\n          }\n          return null;\n        });\n      }\n      if (componentName && !skipVariantsResolver) {\n        expressionsWithDefaultTheme.push(props => {\n          const theme = isEmpty(props.theme) ? defaultTheme : props.theme;\n          return variantsResolver(props, getVariantStyles(componentName, theme), theme, componentName);\n        });\n      }\n      if (!skipSx) {\n        expressionsWithDefaultTheme.push(systemSx);\n      }\n      const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n      if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n        const placeholders = new Array(numOfCustomFnsApplied).fill('');\n        // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n        transformedStyleArg = [...styleArg, ...placeholders];\n        transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n      } else if (typeof styleArg === 'function' &&\n      // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n      // component stays as a function. This condition makes sure that we do not interpolate functions\n      // which are basically components used as a selectors.\n      styleArg.__emotion_real !== styleArg) {\n        // If the type is function, we need to define the default theme.\n        transformedStyleArg = _ref2 => {\n          let {\n              theme: themeInput\n            } = _ref2,\n            other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref2, _excluded3);\n          return styleArg((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n            theme: isEmpty(themeInput) ? defaultTheme : themeInput\n          }, other));\n        };\n      }\n      const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n      if (true) {\n        let displayName;\n        if (componentName) {\n          displayName = `${componentName}${componentSlot || ''}`;\n        }\n        if (displayName === undefined) {\n          displayName = `Styled(${(0,_mui_utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(tag)})`;\n        }\n        Component.displayName = displayName;\n      }\n      return Component;\n    };\n    if (defaultStyledResolver.withConfig) {\n      muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n    }\n    return muiStyledResolver;\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/createStyled.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/createTheme/createBreakpoints.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@mui/system/esm/createTheme/createBreakpoints.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"breakpointKeys\": function() { return /* binding */ breakpointKeys; },\n/* harmony export */   \"default\": function() { return /* binding */ createBreakpoints; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n\n\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nconst breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n  const breakpointsAsArray = Object.keys(values).map(key => ({\n    key,\n    val: values[key]\n  })) || [];\n  // Sort in ascending order\n  breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n  return breakpointsAsArray.reduce((acc, obj) => {\n    return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, acc, {\n      [obj.key]: obj.val\n    });\n  }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nfunction createBreakpoints(breakpoints) {\n  const {\n      // The breakpoint **start** at this value.\n      // For instance with the first breakpoint xs: [xs, sm).\n      values = {\n        xs: 0,\n        // phone\n        sm: 600,\n        // tablet\n        md: 900,\n        // small laptop\n        lg: 1200,\n        // desktop\n        xl: 1536 // large screen\n      },\n\n      unit = 'px',\n      step = 5\n    } = breakpoints,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(breakpoints, _excluded);\n  const sortedValues = sortBreakpointsValues(values);\n  const keys = Object.keys(sortedValues);\n  function up(key) {\n    const value = typeof values[key] === 'number' ? values[key] : key;\n    return `@media (min-width:${value}${unit})`;\n  }\n  function down(key) {\n    const value = typeof values[key] === 'number' ? values[key] : key;\n    return `@media (max-width:${value - step / 100}${unit})`;\n  }\n  function between(start, end) {\n    const endIndex = keys.indexOf(end);\n    return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n  }\n  function only(key) {\n    if (keys.indexOf(key) + 1 < keys.length) {\n      return between(key, keys[keys.indexOf(key) + 1]);\n    }\n    return up(key);\n  }\n  function not(key) {\n    // handle first and last key separately, for better readability\n    const keyIndex = keys.indexOf(key);\n    if (keyIndex === 0) {\n      return up(keys[1]);\n    }\n    if (keyIndex === keys.length - 1) {\n      return down(keys[keyIndex]);\n    }\n    return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n  }\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    keys,\n    values: sortedValues,\n    up,\n    down,\n    between,\n    only,\n    not,\n    unit\n  }, other);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/createTheme/createBreakpoints.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/createTheme/createSpacing.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@mui/system/esm/createTheme/createSpacing.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ createSpacing; }\n/* harmony export */ });\n/* harmony import */ var _spacing__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../spacing */ \"./node_modules/@mui/system/esm/spacing.js\");\n\n/* tslint:enable:unified-signatures */\n\nfunction createSpacing(spacingInput = 8) {\n  // Already transformed.\n  if (spacingInput.mui) {\n    return spacingInput;\n  }\n\n  // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n  // Smaller components, such as icons, can align to a 4dp grid.\n  // https://m2.material.io/design/layout/understanding-layout.html\n  const transform = (0,_spacing__WEBPACK_IMPORTED_MODULE_0__.createUnarySpacing)({\n    spacing: spacingInput\n  });\n  const spacing = (...argsInput) => {\n    if (true) {\n      if (!(argsInput.length <= 4)) {\n        console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n      }\n    }\n    const args = argsInput.length === 0 ? [1] : argsInput;\n    return args.map(argument => {\n      const output = transform(argument);\n      return typeof output === 'number' ? `${output}px` : output;\n    }).join(' ');\n  };\n  spacing.mui = true;\n  return spacing;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/createTheme/createSpacing.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/createTheme/createTheme.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@mui/system/esm/createTheme/createTheme.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/deepmerge.js\");\n/* harmony import */ var _createBreakpoints__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./createBreakpoints */ \"./node_modules/@mui/system/esm/createTheme/createBreakpoints.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./shape */ \"./node_modules/@mui/system/esm/createTheme/shape.js\");\n/* harmony import */ var _createSpacing__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createSpacing */ \"./node_modules/@mui/system/esm/createTheme/createSpacing.js\");\n/* harmony import */ var _styleFunctionSx_styleFunctionSx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styleFunctionSx/styleFunctionSx */ \"./node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js\");\n/* harmony import */ var _styleFunctionSx_defaultSxConfig__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../styleFunctionSx/defaultSxConfig */ \"./node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js\");\n\n\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\n\n\n\n\n\n\nfunction createTheme(options = {}, ...args) {\n  const {\n      breakpoints: breakpointsInput = {},\n      palette: paletteInput = {},\n      spacing: spacingInput,\n      shape: shapeInput = {}\n    } = options,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(options, _excluded);\n  const breakpoints = (0,_createBreakpoints__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(breakpointsInput);\n  const spacing = (0,_createSpacing__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(spacingInput);\n  let muiTheme = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n    breakpoints,\n    direction: 'ltr',\n    components: {},\n    // Inject component definitions.\n    palette: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      mode: 'light'\n    }, paletteInput),\n    spacing,\n    shape: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _shape__WEBPACK_IMPORTED_MODULE_5__[\"default\"], shapeInput)\n  }, other);\n  muiTheme = args.reduce((acc, argument) => (0,_mui_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(acc, argument), muiTheme);\n  muiTheme.unstable_sxConfig = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _styleFunctionSx_defaultSxConfig__WEBPACK_IMPORTED_MODULE_6__[\"default\"], other == null ? void 0 : other.unstable_sxConfig);\n  muiTheme.unstable_sx = function sx(props) {\n    return (0,_styleFunctionSx_styleFunctionSx__WEBPACK_IMPORTED_MODULE_7__[\"default\"])({\n      sx: props,\n      theme: this\n    });\n  };\n  return muiTheme;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (createTheme);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/createTheme/createTheme.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/createTheme/shape.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/system/esm/createTheme/shape.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst shape = {\n  borderRadius: 4\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (shape);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/createTheme/shape.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/cssGrid.js":
/*!*************************************************!*\
  !*** ./node_modules/@mui/system/esm/cssGrid.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"columnGap\": function() { return /* binding */ columnGap; },\n/* harmony export */   \"gap\": function() { return /* binding */ gap; },\n/* harmony export */   \"gridArea\": function() { return /* binding */ gridArea; },\n/* harmony export */   \"gridAutoColumns\": function() { return /* binding */ gridAutoColumns; },\n/* harmony export */   \"gridAutoFlow\": function() { return /* binding */ gridAutoFlow; },\n/* harmony export */   \"gridAutoRows\": function() { return /* binding */ gridAutoRows; },\n/* harmony export */   \"gridColumn\": function() { return /* binding */ gridColumn; },\n/* harmony export */   \"gridRow\": function() { return /* binding */ gridRow; },\n/* harmony export */   \"gridTemplateAreas\": function() { return /* binding */ gridTemplateAreas; },\n/* harmony export */   \"gridTemplateColumns\": function() { return /* binding */ gridTemplateColumns; },\n/* harmony export */   \"gridTemplateRows\": function() { return /* binding */ gridTemplateRows; },\n/* harmony export */   \"rowGap\": function() { return /* binding */ rowGap; }\n/* harmony export */ });\n/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./style */ \"./node_modules/@mui/system/esm/style.js\");\n/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./compose */ \"./node_modules/@mui/system/esm/compose.js\");\n/* harmony import */ var _spacing__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./spacing */ \"./node_modules/@mui/system/esm/spacing.js\");\n/* harmony import */ var _breakpoints__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./breakpoints */ \"./node_modules/@mui/system/esm/breakpoints.js\");\n/* harmony import */ var _responsivePropType__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./responsivePropType */ \"./node_modules/@mui/system/esm/responsivePropType.js\");\n\n\n\n\n\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nconst gap = props => {\n  if (props.gap !== undefined && props.gap !== null) {\n    const transformer = (0,_spacing__WEBPACK_IMPORTED_MODULE_0__.createUnaryUnit)(props.theme, 'spacing', 8, 'gap');\n    const styleFromPropValue = propValue => ({\n      gap: (0,_spacing__WEBPACK_IMPORTED_MODULE_0__.getValue)(transformer, propValue)\n    });\n    return (0,_breakpoints__WEBPACK_IMPORTED_MODULE_1__.handleBreakpoints)(props, props.gap, styleFromPropValue);\n  }\n  return null;\n};\ngap.propTypes =  true ? {\n  gap: _responsivePropType__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n} : 0;\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nconst columnGap = props => {\n  if (props.columnGap !== undefined && props.columnGap !== null) {\n    const transformer = (0,_spacing__WEBPACK_IMPORTED_MODULE_0__.createUnaryUnit)(props.theme, 'spacing', 8, 'columnGap');\n    const styleFromPropValue = propValue => ({\n      columnGap: (0,_spacing__WEBPACK_IMPORTED_MODULE_0__.getValue)(transformer, propValue)\n    });\n    return (0,_breakpoints__WEBPACK_IMPORTED_MODULE_1__.handleBreakpoints)(props, props.columnGap, styleFromPropValue);\n  }\n  return null;\n};\ncolumnGap.propTypes =  true ? {\n  columnGap: _responsivePropType__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n} : 0;\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nconst rowGap = props => {\n  if (props.rowGap !== undefined && props.rowGap !== null) {\n    const transformer = (0,_spacing__WEBPACK_IMPORTED_MODULE_0__.createUnaryUnit)(props.theme, 'spacing', 8, 'rowGap');\n    const styleFromPropValue = propValue => ({\n      rowGap: (0,_spacing__WEBPACK_IMPORTED_MODULE_0__.getValue)(transformer, propValue)\n    });\n    return (0,_breakpoints__WEBPACK_IMPORTED_MODULE_1__.handleBreakpoints)(props, props.rowGap, styleFromPropValue);\n  }\n  return null;\n};\nrowGap.propTypes =  true ? {\n  rowGap: _responsivePropType__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n} : 0;\nrowGap.filterProps = ['rowGap'];\nconst gridColumn = (0,_style__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n  prop: 'gridColumn'\n});\nconst gridRow = (0,_style__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n  prop: 'gridRow'\n});\nconst gridAutoFlow = (0,_style__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n  prop: 'gridAutoFlow'\n});\nconst gridAutoColumns = (0,_style__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n  prop: 'gridAutoColumns'\n});\nconst gridAutoRows = (0,_style__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n  prop: 'gridAutoRows'\n});\nconst gridTemplateColumns = (0,_style__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n  prop: 'gridTemplateColumns'\n});\nconst gridTemplateRows = (0,_style__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n  prop: 'gridTemplateRows'\n});\nconst gridTemplateAreas = (0,_style__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n  prop: 'gridTemplateAreas'\n});\nconst gridArea = (0,_style__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n  prop: 'gridArea'\n});\nconst grid = (0,_compose__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\n/* harmony default export */ __webpack_exports__[\"default\"] = (grid);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/cssGrid.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/cssVars/createCssVarsProvider.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@mui/system/esm/cssVars/createCssVarsProvider.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DISABLE_CSS_TRANSITION\": function() { return /* binding */ DISABLE_CSS_TRANSITION; },\n/* harmony export */   \"default\": function() { return /* binding */ createCssVarsProvider; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/deepmerge.js\");\n/* harmony import */ var _mui_styled_engine__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/styled-engine */ \"./node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js\");\n/* harmony import */ var _mui_private_theming__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/private-theming */ \"./node_modules/@mui/private-theming/useTheme/useTheme.js\");\n/* harmony import */ var _cssVarsParser__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./cssVarsParser */ \"./node_modules/@mui/system/esm/cssVars/cssVarsParser.js\");\n/* harmony import */ var _ThemeProvider__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../ThemeProvider */ \"./node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js\");\n/* harmony import */ var _getInitColorSchemeScript__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getInitColorSchemeScript */ \"./node_modules/@mui/system/esm/cssVars/getInitColorSchemeScript.js\");\n/* harmony import */ var _useCurrentColorScheme__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./useCurrentColorScheme */ \"./node_modules/@mui/system/esm/cssVars/useCurrentColorScheme.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\nconst _excluded = [\"colorSchemes\", \"components\", \"cssVarPrefix\"];\n\n\n\n\n\n\n\n\n\n\n\nconst DISABLE_CSS_TRANSITION = '*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}';\nfunction createCssVarsProvider(options) {\n  const {\n    theme: defaultTheme = {},\n    attribute: defaultAttribute = _getInitColorSchemeScript__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_ATTRIBUTE,\n    modeStorageKey: defaultModeStorageKey = _getInitColorSchemeScript__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_MODE_STORAGE_KEY,\n    colorSchemeStorageKey: defaultColorSchemeStorageKey = _getInitColorSchemeScript__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_COLOR_SCHEME_STORAGE_KEY,\n    defaultMode: designSystemMode = 'light',\n    defaultColorScheme: designSystemColorScheme,\n    disableTransitionOnChange: designSystemTransitionOnChange = false,\n    shouldSkipGeneratingVar: designSystemShouldSkipGeneratingVar,\n    resolveTheme,\n    excludeVariablesFromRoot\n  } = options;\n  if (!defaultTheme.colorSchemes || typeof designSystemColorScheme === 'string' && !defaultTheme.colorSchemes[designSystemColorScheme] || typeof designSystemColorScheme === 'object' && !defaultTheme.colorSchemes[designSystemColorScheme == null ? void 0 : designSystemColorScheme.light] || typeof designSystemColorScheme === 'object' && !defaultTheme.colorSchemes[designSystemColorScheme == null ? void 0 : designSystemColorScheme.dark]) {\n    console.error(`MUI: \\`${designSystemColorScheme}\\` does not exist in \\`theme.colorSchemes\\`.`);\n  }\n  const ColorSchemeContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createContext(undefined);\n  const useColorScheme = () => {\n    const value = react__WEBPACK_IMPORTED_MODULE_2__.useContext(ColorSchemeContext);\n    if (!value) {\n      throw new Error( true ? `MUI: \\`useColorScheme\\` must be called under <CssVarsProvider />` : 0);\n    }\n    return value;\n  };\n  function CssVarsProvider({\n    children,\n    theme: themeProp = defaultTheme,\n    modeStorageKey = defaultModeStorageKey,\n    colorSchemeStorageKey = defaultColorSchemeStorageKey,\n    attribute = defaultAttribute,\n    defaultMode = designSystemMode,\n    defaultColorScheme = designSystemColorScheme,\n    disableTransitionOnChange = designSystemTransitionOnChange,\n    storageWindow = typeof window === 'undefined' ? undefined : window,\n    documentNode = typeof document === 'undefined' ? undefined : document,\n    colorSchemeNode = typeof document === 'undefined' ? undefined : document.documentElement,\n    colorSchemeSelector = ':root',\n    shouldSkipGeneratingVar = designSystemShouldSkipGeneratingVar,\n    disableNestedContext = false,\n    disableStyleSheetGeneration = false\n  }) {\n    const hasMounted = react__WEBPACK_IMPORTED_MODULE_2__.useRef(false);\n    const upperTheme = (0,_mui_private_theming__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n    const ctx = react__WEBPACK_IMPORTED_MODULE_2__.useContext(ColorSchemeContext);\n    const nested = !!ctx && !disableNestedContext;\n    const {\n        colorSchemes = {},\n        components = {},\n        cssVarPrefix\n      } = themeProp,\n      restThemeProp = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(themeProp, _excluded);\n    const allColorSchemes = Object.keys(colorSchemes);\n    const defaultLightColorScheme = typeof defaultColorScheme === 'string' ? defaultColorScheme : defaultColorScheme.light;\n    const defaultDarkColorScheme = typeof defaultColorScheme === 'string' ? defaultColorScheme : defaultColorScheme.dark;\n\n    // 1. Get the data about the `mode`, `colorScheme`, and setter functions.\n    const {\n      mode: stateMode,\n      setMode,\n      systemMode,\n      lightColorScheme,\n      darkColorScheme,\n      colorScheme: stateColorScheme,\n      setColorScheme\n    } = (0,_useCurrentColorScheme__WEBPACK_IMPORTED_MODULE_6__[\"default\"])({\n      supportedColorSchemes: allColorSchemes,\n      defaultLightColorScheme,\n      defaultDarkColorScheme,\n      modeStorageKey,\n      colorSchemeStorageKey,\n      defaultMode,\n      storageWindow\n    });\n    let mode = stateMode;\n    let colorScheme = stateColorScheme;\n    if (nested) {\n      mode = ctx.mode;\n      colorScheme = ctx.colorScheme;\n    }\n    const calculatedMode = (() => {\n      if (mode) {\n        return mode;\n      }\n      // This scope occurs on the server\n      if (defaultMode === 'system') {\n        return designSystemMode;\n      }\n      return defaultMode;\n    })();\n    const calculatedColorScheme = (() => {\n      if (!colorScheme) {\n        // This scope occurs on the server\n        if (calculatedMode === 'dark') {\n          return defaultDarkColorScheme;\n        }\n        // use light color scheme, if default mode is 'light' | 'system'\n        return defaultLightColorScheme;\n      }\n      return colorScheme;\n    })();\n\n    // 2. Create CSS variables and store them in objects (to be generated in stylesheets in the final step)\n    const {\n      css: rootCss,\n      vars: rootVars\n    } = (0,_cssVarsParser__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(restThemeProp, {\n      prefix: cssVarPrefix,\n      shouldSkipGeneratingVar\n    });\n\n    // 3. Start composing the theme object\n    const theme = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, restThemeProp, {\n      components,\n      colorSchemes,\n      cssVarPrefix,\n      vars: rootVars,\n      getColorSchemeSelector: targetColorScheme => `[${attribute}=\"${targetColorScheme}\"] &`\n    });\n\n    // 4. Create color CSS variables and store them in objects (to be generated in stylesheets in the final step)\n    //    The default color scheme stylesheet is constructed to have the least CSS specificity.\n    //    The other color schemes uses selector, default as data attribute, to increase the CSS specificity so that they can override the default color scheme stylesheet.\n    const defaultColorSchemeStyleSheet = {};\n    const otherColorSchemesStyleSheet = {};\n    Object.entries(colorSchemes).forEach(([key, scheme]) => {\n      const {\n        css,\n        vars\n      } = (0,_cssVarsParser__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(scheme, {\n        prefix: cssVarPrefix,\n        shouldSkipGeneratingVar\n      });\n      theme.vars = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(theme.vars, vars);\n      if (key === calculatedColorScheme) {\n        // 4.1 Merge the selected color scheme to the theme\n        Object.keys(scheme).forEach(schemeKey => {\n          if (scheme[schemeKey] && typeof scheme[schemeKey] === 'object') {\n            // shallow merge the 1st level structure of the theme.\n            theme[schemeKey] = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, theme[schemeKey], scheme[schemeKey]);\n          } else {\n            theme[schemeKey] = scheme[schemeKey];\n          }\n        });\n        if (theme.palette) {\n          theme.palette.colorScheme = key;\n        }\n      }\n      const resolvedDefaultColorScheme = (() => {\n        if (typeof defaultColorScheme === 'string') {\n          return defaultColorScheme;\n        }\n        if (defaultMode === 'dark') {\n          return defaultColorScheme.dark;\n        }\n        return defaultColorScheme.light;\n      })();\n      if (key === resolvedDefaultColorScheme) {\n        if (excludeVariablesFromRoot) {\n          const excludedVariables = {};\n          excludeVariablesFromRoot(cssVarPrefix).forEach(cssVar => {\n            excludedVariables[cssVar] = css[cssVar];\n            delete css[cssVar];\n          });\n          defaultColorSchemeStyleSheet[`[${attribute}=\"${key}\"]`] = excludedVariables;\n        }\n        defaultColorSchemeStyleSheet[`${colorSchemeSelector}, [${attribute}=\"${key}\"]`] = css;\n      } else {\n        otherColorSchemesStyleSheet[`${colorSchemeSelector === ':root' ? '' : colorSchemeSelector}[${attribute}=\"${key}\"]`] = css;\n      }\n    });\n\n    // 5. Declaring effects\n    // 5.1 Updates the selector value to use the current color scheme which tells CSS to use the proper stylesheet.\n    react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n      if (colorScheme && colorSchemeNode) {\n        // attaches attribute to <html> because the css variables are attached to :root (html)\n        colorSchemeNode.setAttribute(attribute, colorScheme);\n      }\n    }, [colorScheme, attribute, colorSchemeNode]);\n\n    // 5.2 Remove the CSS transition when color scheme changes to create instant experience.\n    // credit: https://github.com/pacocoursey/next-themes/blob/b5c2bad50de2d61ad7b52a9c5cdc801a78507d7a/index.tsx#L313\n    react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n      let timer;\n      if (disableTransitionOnChange && hasMounted.current && documentNode) {\n        const css = documentNode.createElement('style');\n        css.appendChild(documentNode.createTextNode(DISABLE_CSS_TRANSITION));\n        documentNode.head.appendChild(css);\n\n        // Force browser repaint\n        (() => window.getComputedStyle(documentNode.body))();\n        timer = setTimeout(() => {\n          documentNode.head.removeChild(css);\n        }, 1);\n      }\n      return () => {\n        clearTimeout(timer);\n      };\n    }, [colorScheme, disableTransitionOnChange, documentNode]);\n    react__WEBPACK_IMPORTED_MODULE_2__.useEffect(() => {\n      hasMounted.current = true;\n      return () => {\n        hasMounted.current = false;\n      };\n    }, []);\n    const contextValue = react__WEBPACK_IMPORTED_MODULE_2__.useMemo(() => ({\n      mode,\n      systemMode,\n      setMode,\n      lightColorScheme,\n      darkColorScheme,\n      colorScheme,\n      setColorScheme,\n      allColorSchemes\n    }), [allColorSchemes, colorScheme, darkColorScheme, lightColorScheme, mode, setColorScheme, setMode, systemMode]);\n    let shouldGenerateStyleSheet = true;\n    if (disableStyleSheetGeneration || nested && (upperTheme == null ? void 0 : upperTheme.cssVarPrefix) === cssVarPrefix) {\n      shouldGenerateStyleSheet = false;\n    }\n    const element = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n      children: [shouldGenerateStyleSheet && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_mui_styled_engine__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n          styles: {\n            [colorSchemeSelector]: rootCss\n          }\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_mui_styled_engine__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n          styles: defaultColorSchemeStyleSheet\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_mui_styled_engine__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n          styles: otherColorSchemesStyleSheet\n        })]\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_ThemeProvider__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n        theme: resolveTheme ? resolveTheme(theme) : theme,\n        children: children\n      })]\n    });\n    if (nested) {\n      return element;\n    }\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(ColorSchemeContext.Provider, {\n      value: contextValue,\n      children: element\n    });\n  }\n   true ? CssVarsProvider.propTypes = {\n    /**\n     * The body attribute name to attach colorScheme.\n     */\n    attribute: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n    /**\n     * The component tree.\n     */\n    children: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().node),\n    /**\n     * The node used to attach the color-scheme attribute\n     */\n    colorSchemeNode: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().any),\n    /**\n     * The CSS selector for attaching the generated custom properties\n     */\n    colorSchemeSelector: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n    /**\n     * localStorage key used to store `colorScheme`\n     */\n    colorSchemeStorageKey: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n    /**\n     * The initial color scheme used.\n     */\n    defaultColorScheme: prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_11___default().string), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object)]),\n    /**\n     * The initial mode used.\n     */\n    defaultMode: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n    /**\n     * If `true`, the provider creates its own context and generate stylesheet as if it is a root `CssVarsProvider`.\n     */\n    disableNestedContext: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n    /**\n     * If `true`, the style sheet won't be generated.\n     *\n     * This is useful for controlling nested CssVarsProvider behavior.\n     */\n    disableStyleSheetGeneration: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n    /**\n     * Disable CSS transitions when switching between modes or color schemes\n     */\n    disableTransitionOnChange: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool),\n    /**\n     * The document to attach the attribute to\n     */\n    documentNode: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().any),\n    /**\n     * The key in the local storage used to store current color scheme.\n     */\n    modeStorageKey: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n    /**\n     * A function to determine if the key, value should be attached as CSS Variable\n     */\n    shouldSkipGeneratingVar: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func),\n    /**\n     * The window that attaches the 'storage' event listener\n     * @default window\n     */\n    storageWindow: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().any),\n    /**\n     * The calculated theme object that will be passed through context.\n     */\n    theme: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object)\n  } : 0;\n  const defaultLightColorScheme = typeof designSystemColorScheme === 'string' ? designSystemColorScheme : designSystemColorScheme.light;\n  const defaultDarkColorScheme = typeof designSystemColorScheme === 'string' ? designSystemColorScheme : designSystemColorScheme.dark;\n  const getInitColorSchemeScript = params => (0,_getInitColorSchemeScript__WEBPACK_IMPORTED_MODULE_4__[\"default\"])((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    attribute: defaultAttribute,\n    colorSchemeStorageKey: defaultColorSchemeStorageKey,\n    defaultMode: designSystemMode,\n    defaultLightColorScheme,\n    defaultDarkColorScheme,\n    modeStorageKey: defaultModeStorageKey\n  }, params));\n  return {\n    CssVarsProvider,\n    useColorScheme,\n    getInitColorSchemeScript\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/cssVars/createCssVarsProvider.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/cssVars/createGetCssVar.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@mui/system/esm/cssVars/createGetCssVar.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ createGetCssVar; }\n/* harmony export */ });\n/**\n * The benefit of this function is to help developers get CSS var from theme without specifying the whole variable\n * and they does not need to remember the prefix (defined once).\n */\nfunction createGetCssVar(prefix = '') {\n  function appendVar(...vars) {\n    if (!vars.length) {\n      return '';\n    }\n    const value = vars[0];\n    if (typeof value === 'string' && !value.match(/(#|\\(|\\)|(-?(\\d*\\.)?\\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))/)) {\n      return `, var(--${prefix ? `${prefix}-` : ''}${value}${appendVar(...vars.slice(1))})`;\n    }\n    return `, ${value}`;\n  }\n\n  // AdditionalVars makes `getCssVar` less strict, so it can be use like this `getCssVar('non-mui-variable')` without type error.\n  const getCssVar = (field, ...fallbacks) => {\n    return `var(--${prefix ? `${prefix}-` : ''}${field}${appendVar(...fallbacks)})`;\n  };\n  return getCssVar;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/cssVars/createGetCssVar.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/cssVars/cssVarsParser.js":
/*!***************************************************************!*\
  !*** ./node_modules/@mui/system/esm/cssVars/cssVarsParser.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"assignNestedKeys\": function() { return /* binding */ assignNestedKeys; },\n/* harmony export */   \"default\": function() { return /* binding */ cssVarsParser; },\n/* harmony export */   \"walkObjectDeep\": function() { return /* binding */ walkObjectDeep; }\n/* harmony export */ });\n/**\n * This function create an object from keys, value and then assign to target\n *\n * @param {Object} obj : the target object to be assigned\n * @param {string[]} keys\n * @param {string | number} value\n *\n * @example\n * const source = {}\n * assignNestedKeys(source, ['palette', 'primary'], 'var(--palette-primary)')\n * console.log(source) // { palette: { primary: 'var(--palette-primary)' } }\n *\n * @example\n * const source = { palette: { primary: 'var(--palette-primary)' } }\n * assignNestedKeys(source, ['palette', 'secondary'], 'var(--palette-secondary)')\n * console.log(source) // { palette: { primary: 'var(--palette-primary)', secondary: 'var(--palette-secondary)' } }\n */\nconst assignNestedKeys = (obj, keys, value, arrayKeys = []) => {\n  let temp = obj;\n  keys.forEach((k, index) => {\n    if (index === keys.length - 1) {\n      if (Array.isArray(temp)) {\n        temp[Number(k)] = value;\n      } else if (temp && typeof temp === 'object') {\n        temp[k] = value;\n      }\n    } else if (temp && typeof temp === 'object') {\n      if (!temp[k]) {\n        temp[k] = arrayKeys.includes(k) ? [] : {};\n      }\n      temp = temp[k];\n    }\n  });\n};\n\n/**\n *\n * @param {Object} obj : source object\n * @param {Function} callback : a function that will be called when\n *                   - the deepest key in source object is reached\n *                   - the value of the deepest key is NOT `undefined` | `null`\n *\n * @example\n * walkObjectDeep({ palette: { primary: { main: '#000000' } } }, console.log)\n * // ['palette', 'primary', 'main'] '#000000'\n */\nconst walkObjectDeep = (obj, callback, shouldSkipPaths) => {\n  function recurse(object, parentKeys = [], arrayKeys = []) {\n    Object.entries(object).forEach(([key, value]) => {\n      if (!shouldSkipPaths || shouldSkipPaths && !shouldSkipPaths([...parentKeys, key])) {\n        if (value !== undefined && value !== null) {\n          if (typeof value === 'object' && Object.keys(value).length > 0) {\n            recurse(value, [...parentKeys, key], Array.isArray(value) ? [...arrayKeys, key] : arrayKeys);\n          } else {\n            callback([...parentKeys, key], value, arrayKeys);\n          }\n        }\n      }\n    });\n  }\n  recurse(obj);\n};\nconst getCssValue = (keys, value) => {\n  if (typeof value === 'number') {\n    if (['lineHeight', 'fontWeight', 'opacity', 'zIndex'].some(prop => keys.includes(prop))) {\n      // CSS property that are unitless\n      return value;\n    }\n    const lastKey = keys[keys.length - 1];\n    if (lastKey.toLowerCase().indexOf('opacity') >= 0) {\n      // opacity values are unitless\n      return value;\n    }\n    return `${value}px`;\n  }\n  return value;\n};\n\n/**\n * a function that parse theme and return { css, vars }\n *\n * @param {Object} theme\n * @param {{\n *  prefix?: string,\n *  shouldSkipGeneratingVar?: (objectPathKeys: Array<string>, value: string | number) => boolean\n * }} options.\n *  `prefix`: The prefix of the generated CSS variables. This function does not change the value.\n *\n * @returns {{ css: Object, vars: Object }} `css` is the stylesheet, `vars` is an object to get css variable (same structure as theme).\n *\n * @example\n * const { css, vars } = parser({\n *   fontSize: 12,\n *   lineHeight: 1.2,\n *   palette: { primary: { 500: 'var(--color)' } }\n * }, { prefix: 'foo' })\n *\n * console.log(css) // { '--foo-fontSize': '12px', '--foo-lineHeight': 1.2, '--foo-palette-primary-500': 'var(--color)' }\n * console.log(vars) // { fontSize: 'var(--foo-fontSize)', lineHeight: 'var(--foo-lineHeight)', palette: { primary: { 500: 'var(--foo-palette-primary-500)' } } }\n */\nfunction cssVarsParser(theme, options) {\n  const {\n    prefix,\n    shouldSkipGeneratingVar\n  } = options || {};\n  const css = {};\n  const vars = {};\n  walkObjectDeep(theme, (keys, value, arrayKeys) => {\n    if (typeof value === 'string' || typeof value === 'number') {\n      if (!shouldSkipGeneratingVar || !shouldSkipGeneratingVar(keys, value)) {\n        // only create css & var if `shouldSkipGeneratingVar` return false\n        const cssVar = `--${prefix ? `${prefix}-` : ''}${keys.join('-')}`;\n        Object.assign(css, {\n          [cssVar]: getCssValue(keys, value)\n        });\n        assignNestedKeys(vars, keys, `var(${cssVar})`, arrayKeys);\n      }\n    }\n  }, keys => keys[0] === 'vars' // skip 'vars/*' paths\n  );\n\n  return {\n    css,\n    vars\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/cssVars/cssVarsParser.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/cssVars/getInitColorSchemeScript.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@mui/system/esm/cssVars/getInitColorSchemeScript.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DEFAULT_ATTRIBUTE\": function() { return /* binding */ DEFAULT_ATTRIBUTE; },\n/* harmony export */   \"DEFAULT_COLOR_SCHEME_STORAGE_KEY\": function() { return /* binding */ DEFAULT_COLOR_SCHEME_STORAGE_KEY; },\n/* harmony export */   \"DEFAULT_MODE_STORAGE_KEY\": function() { return /* binding */ DEFAULT_MODE_STORAGE_KEY; },\n/* harmony export */   \"default\": function() { return /* binding */ getInitColorSchemeScript; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\nconst DEFAULT_MODE_STORAGE_KEY = 'mode';\nconst DEFAULT_COLOR_SCHEME_STORAGE_KEY = 'color-scheme';\nconst DEFAULT_ATTRIBUTE = 'data-color-scheme';\nfunction getInitColorSchemeScript(options) {\n  const {\n    defaultMode = 'light',\n    defaultLightColorScheme = 'light',\n    defaultDarkColorScheme = 'dark',\n    modeStorageKey = DEFAULT_MODE_STORAGE_KEY,\n    colorSchemeStorageKey = DEFAULT_COLOR_SCHEME_STORAGE_KEY,\n    attribute = DEFAULT_ATTRIBUTE,\n    colorSchemeNode = 'document.documentElement'\n  } = options || {};\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"script\", {\n    // eslint-disable-next-line react/no-danger\n    dangerouslySetInnerHTML: {\n      __html: `(function() { try {\n        var mode = localStorage.getItem('${modeStorageKey}') || '${defaultMode}';\n        var cssColorScheme = mode;\n        var colorScheme = '';\n        if (mode === 'system') {\n          // handle system mode\n          var mql = window.matchMedia('(prefers-color-scheme: dark)');\n          if (mql.matches) {\n            cssColorScheme = 'dark';\n            colorScheme = localStorage.getItem('${colorSchemeStorageKey}-dark') || '${defaultDarkColorScheme}';\n          } else {\n            cssColorScheme = 'light';\n            colorScheme = localStorage.getItem('${colorSchemeStorageKey}-light') || '${defaultLightColorScheme}';\n          }\n        }\n        if (mode === 'light') {\n          colorScheme = localStorage.getItem('${colorSchemeStorageKey}-light') || '${defaultLightColorScheme}';\n        }\n        if (mode === 'dark') {\n          colorScheme = localStorage.getItem('${colorSchemeStorageKey}-dark') || '${defaultDarkColorScheme}';\n        }\n        if (colorScheme) {\n          ${colorSchemeNode}.setAttribute('${attribute}', colorScheme);\n        }\n      } catch (e) {} })();`\n    }\n  }, \"mui-color-scheme-init\");\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/cssVars/getInitColorSchemeScript.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/cssVars/useCurrentColorScheme.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@mui/system/esm/cssVars/useCurrentColorScheme.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ useCurrentColorScheme; },\n/* harmony export */   \"getColorScheme\": function() { return /* binding */ getColorScheme; },\n/* harmony export */   \"getSystemMode\": function() { return /* binding */ getSystemMode; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _getInitColorSchemeScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getInitColorSchemeScript */ \"./node_modules/@mui/system/esm/cssVars/getInitColorSchemeScript.js\");\n\n\n\nfunction getSystemMode(mode) {\n  if (typeof window !== 'undefined' && mode === 'system') {\n    const mql = window.matchMedia('(prefers-color-scheme: dark)');\n    if (mql.matches) {\n      return 'dark';\n    }\n    return 'light';\n  }\n  return undefined;\n}\nfunction processState(state, callback) {\n  if (state.mode === 'light' || state.mode === 'system' && state.systemMode === 'light') {\n    return callback('light');\n  }\n  if (state.mode === 'dark' || state.mode === 'system' && state.systemMode === 'dark') {\n    return callback('dark');\n  }\n  return undefined;\n}\nfunction getColorScheme(state) {\n  return processState(state, mode => {\n    if (mode === 'light') {\n      return state.lightColorScheme;\n    }\n    if (mode === 'dark') {\n      return state.darkColorScheme;\n    }\n    return undefined;\n  });\n}\nfunction initializeValue(key, defaultValue) {\n  if (typeof window === 'undefined') {\n    return undefined;\n  }\n  let value;\n  try {\n    value = localStorage.getItem(key) || undefined;\n    if (!value) {\n      // the first time that user enters the site.\n      localStorage.setItem(key, defaultValue);\n    }\n  } catch (e) {\n    // Unsupported\n  }\n  return value || defaultValue;\n}\nfunction useCurrentColorScheme(options) {\n  const {\n    defaultMode = 'light',\n    defaultLightColorScheme,\n    defaultDarkColorScheme,\n    supportedColorSchemes = [],\n    modeStorageKey = _getInitColorSchemeScript__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_MODE_STORAGE_KEY,\n    colorSchemeStorageKey = _getInitColorSchemeScript__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_COLOR_SCHEME_STORAGE_KEY,\n    storageWindow = typeof window === 'undefined' ? undefined : window\n  } = options;\n  const joinedColorSchemes = supportedColorSchemes.join(',');\n  const [state, setState] = react__WEBPACK_IMPORTED_MODULE_1__.useState(() => {\n    const initialMode = initializeValue(modeStorageKey, defaultMode);\n    const lightColorScheme = initializeValue(`${colorSchemeStorageKey}-light`, defaultLightColorScheme);\n    const darkColorScheme = initializeValue(`${colorSchemeStorageKey}-dark`, defaultDarkColorScheme);\n    return {\n      mode: initialMode,\n      systemMode: getSystemMode(initialMode),\n      lightColorScheme,\n      darkColorScheme\n    };\n  });\n  const colorScheme = getColorScheme(state);\n  const setMode = react__WEBPACK_IMPORTED_MODULE_1__.useCallback(mode => {\n    setState(currentState => {\n      if (mode === currentState.mode) {\n        // do nothing if mode does not change\n        return currentState;\n      }\n      const newMode = !mode ? defaultMode : mode;\n      try {\n        localStorage.setItem(modeStorageKey, newMode);\n      } catch (e) {\n        // Unsupported\n      }\n      return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, currentState, {\n        mode: newMode,\n        systemMode: getSystemMode(newMode)\n      });\n    });\n  }, [modeStorageKey, defaultMode]);\n  const setColorScheme = react__WEBPACK_IMPORTED_MODULE_1__.useCallback(value => {\n    if (!value) {\n      setState(currentState => {\n        try {\n          localStorage.setItem(`${colorSchemeStorageKey}-light`, defaultLightColorScheme);\n          localStorage.setItem(`${colorSchemeStorageKey}-dark`, defaultDarkColorScheme);\n        } catch (e) {\n          // Unsupported\n        }\n        return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, currentState, {\n          lightColorScheme: defaultLightColorScheme,\n          darkColorScheme: defaultDarkColorScheme\n        });\n      });\n    } else if (typeof value === 'string') {\n      if (value && !joinedColorSchemes.includes(value)) {\n        console.error(`\\`${value}\\` does not exist in \\`theme.colorSchemes\\`.`);\n      } else {\n        setState(currentState => {\n          const newState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, currentState);\n          processState(currentState, mode => {\n            try {\n              localStorage.setItem(`${colorSchemeStorageKey}-${mode}`, value);\n            } catch (e) {\n              // Unsupported\n            }\n            if (mode === 'light') {\n              newState.lightColorScheme = value;\n            }\n            if (mode === 'dark') {\n              newState.darkColorScheme = value;\n            }\n          });\n          return newState;\n        });\n      }\n    } else {\n      setState(currentState => {\n        const newState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, currentState);\n        const newLightColorScheme = value.light === null ? defaultLightColorScheme : value.light;\n        const newDarkColorScheme = value.dark === null ? defaultDarkColorScheme : value.dark;\n        if (newLightColorScheme) {\n          if (!joinedColorSchemes.includes(newLightColorScheme)) {\n            console.error(`\\`${newLightColorScheme}\\` does not exist in \\`theme.colorSchemes\\`.`);\n          } else {\n            newState.lightColorScheme = newLightColorScheme;\n            try {\n              localStorage.setItem(`${colorSchemeStorageKey}-light`, newLightColorScheme);\n            } catch (error) {\n              // Unsupported\n            }\n          }\n        }\n        if (newDarkColorScheme) {\n          if (!joinedColorSchemes.includes(newDarkColorScheme)) {\n            console.error(`\\`${newDarkColorScheme}\\` does not exist in \\`theme.colorSchemes\\`.`);\n          } else {\n            newState.darkColorScheme = newDarkColorScheme;\n            try {\n              localStorage.setItem(`${colorSchemeStorageKey}-dark`, newDarkColorScheme);\n            } catch (error) {\n              // Unsupported\n            }\n          }\n        }\n        return newState;\n      });\n    }\n  }, [joinedColorSchemes, colorSchemeStorageKey, defaultLightColorScheme, defaultDarkColorScheme]);\n  const handleMediaQuery = react__WEBPACK_IMPORTED_MODULE_1__.useCallback(e => {\n    if (state.mode === 'system') {\n      setState(currentState => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, currentState, {\n        systemMode: e != null && e.matches ? 'dark' : 'light'\n      }));\n    }\n  }, [state.mode]);\n\n  // Ref hack to avoid adding handleMediaQuery as a dep\n  const mediaListener = react__WEBPACK_IMPORTED_MODULE_1__.useRef(handleMediaQuery);\n  mediaListener.current = handleMediaQuery;\n  react__WEBPACK_IMPORTED_MODULE_1__.useEffect(() => {\n    const handler = (...args) => mediaListener.current(...args);\n\n    // Always listen to System preference\n    const media = window.matchMedia('(prefers-color-scheme: dark)');\n\n    // Intentionally use deprecated listener methods to support iOS & old browsers\n    media.addListener(handler);\n    handler(media);\n    return () => media.removeListener(handler);\n  }, []);\n\n  // Handle when localStorage has changed\n  react__WEBPACK_IMPORTED_MODULE_1__.useEffect(() => {\n    const handleStorage = event => {\n      const value = event.newValue;\n      if (typeof event.key === 'string' && event.key.startsWith(colorSchemeStorageKey) && (!value || joinedColorSchemes.match(value))) {\n        // If the key is deleted, value will be null then reset color scheme to the default one.\n        if (event.key.endsWith('light')) {\n          setColorScheme({\n            light: value\n          });\n        }\n        if (event.key.endsWith('dark')) {\n          setColorScheme({\n            dark: value\n          });\n        }\n      }\n      if (event.key === modeStorageKey && (!value || ['light', 'dark', 'system'].includes(value))) {\n        setMode(value || defaultMode);\n      }\n    };\n    if (storageWindow) {\n      // For syncing color-scheme changes between iframes\n      storageWindow.addEventListener('storage', handleStorage);\n      return () => storageWindow.removeEventListener('storage', handleStorage);\n    }\n    return undefined;\n  }, [setColorScheme, setMode, modeStorageKey, colorSchemeStorageKey, joinedColorSchemes, defaultMode, storageWindow]);\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n    colorScheme,\n    setMode,\n    setColorScheme\n  });\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/cssVars/useCurrentColorScheme.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/memoize.js":
/*!*************************************************!*\
  !*** ./node_modules/@mui/system/esm/memoize.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ memoize; }\n/* harmony export */ });\nfunction memoize(fn) {\n  const cache = {};\n  return arg => {\n    if (cache[arg] === undefined) {\n      cache[arg] = fn(arg);\n    }\n    return cache[arg];\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/memoize.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/merge.js":
/*!***********************************************!*\
  !*** ./node_modules/@mui/system/esm/merge.js ***!
  \***********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/deepmerge.js\");\n\nfunction merge(acc, item) {\n  if (!item) {\n    return acc;\n  }\n  return (0,_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(acc, item, {\n    clone: false // No need to clone deep, it's way faster.\n  });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (merge);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/merge.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/palette.js":
/*!*************************************************!*\
  !*** ./node_modules/@mui/system/esm/palette.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"backgroundColor\": function() { return /* binding */ backgroundColor; },\n/* harmony export */   \"bgcolor\": function() { return /* binding */ bgcolor; },\n/* harmony export */   \"color\": function() { return /* binding */ color; },\n/* harmony export */   \"paletteTransform\": function() { return /* binding */ paletteTransform; }\n/* harmony export */ });\n/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./style */ \"./node_modules/@mui/system/esm/style.js\");\n/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./compose */ \"./node_modules/@mui/system/esm/compose.js\");\n\n\nfunction paletteTransform(value, userValue) {\n  if (userValue === 'grey') {\n    return userValue;\n  }\n  return value;\n}\nconst color = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'color',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nconst bgcolor = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'bgcolor',\n  cssProperty: 'backgroundColor',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nconst backgroundColor = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'backgroundColor',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nconst palette = (0,_compose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(color, bgcolor, backgroundColor);\n/* harmony default export */ __webpack_exports__[\"default\"] = (palette);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/palette.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/propsToClassKey.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/system/esm/propsToClassKey.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ propsToClassKey; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/capitalize.js\");\n\nconst _excluded = [\"variant\"];\n\nfunction isEmpty(string) {\n  return string.length === 0;\n}\n\n/**\n * Generates string classKey based on the properties provided. It starts with the\n * variant if defined, and then it appends all other properties in alphabetical order.\n * @param {object} props - the properties for which the classKey should be created.\n */\nfunction propsToClassKey(props) {\n  const {\n      variant\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n  let classKey = variant || '';\n  Object.keys(other).sort().forEach(key => {\n    if (key === 'color') {\n      classKey += isEmpty(classKey) ? props[key] : (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props[key]);\n    } else {\n      classKey += `${isEmpty(classKey) ? key : (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(key)}${(0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props[key].toString())}`;\n    }\n  });\n  return classKey;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/propsToClassKey.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/responsivePropType.js":
/*!************************************************************!*\
  !*** ./node_modules/@mui/system/esm/responsivePropType.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_0__);\n\nconst responsivePropType =  true ? prop_types__WEBPACK_IMPORTED_MODULE_0___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_0___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_0___default().string), (prop_types__WEBPACK_IMPORTED_MODULE_0___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_0___default().array)]) : 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (responsivePropType);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/responsivePropType.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/sizing.js":
/*!************************************************!*\
  !*** ./node_modules/@mui/system/esm/sizing.js ***!
  \************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"boxSizing\": function() { return /* binding */ boxSizing; },\n/* harmony export */   \"height\": function() { return /* binding */ height; },\n/* harmony export */   \"maxHeight\": function() { return /* binding */ maxHeight; },\n/* harmony export */   \"maxWidth\": function() { return /* binding */ maxWidth; },\n/* harmony export */   \"minHeight\": function() { return /* binding */ minHeight; },\n/* harmony export */   \"minWidth\": function() { return /* binding */ minWidth; },\n/* harmony export */   \"sizeHeight\": function() { return /* binding */ sizeHeight; },\n/* harmony export */   \"sizeWidth\": function() { return /* binding */ sizeWidth; },\n/* harmony export */   \"sizingTransform\": function() { return /* binding */ sizingTransform; },\n/* harmony export */   \"width\": function() { return /* binding */ width; }\n/* harmony export */ });\n/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./style */ \"./node_modules/@mui/system/esm/style.js\");\n/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./compose */ \"./node_modules/@mui/system/esm/compose.js\");\n/* harmony import */ var _breakpoints__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./breakpoints */ \"./node_modules/@mui/system/esm/breakpoints.js\");\n\n\n\nfunction sizingTransform(value) {\n  return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nconst width = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'width',\n  transform: sizingTransform\n});\nconst maxWidth = props => {\n  if (props.maxWidth !== undefined && props.maxWidth !== null) {\n    const styleFromPropValue = propValue => {\n      var _props$theme, _props$theme$breakpoi, _props$theme$breakpoi2;\n      const breakpoint = ((_props$theme = props.theme) == null ? void 0 : (_props$theme$breakpoi = _props$theme.breakpoints) == null ? void 0 : (_props$theme$breakpoi2 = _props$theme$breakpoi.values) == null ? void 0 : _props$theme$breakpoi2[propValue]) || _breakpoints__WEBPACK_IMPORTED_MODULE_1__.values[propValue];\n      return {\n        maxWidth: breakpoint || sizingTransform(propValue)\n      };\n    };\n    return (0,_breakpoints__WEBPACK_IMPORTED_MODULE_1__.handleBreakpoints)(props, props.maxWidth, styleFromPropValue);\n  }\n  return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nconst minWidth = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'minWidth',\n  transform: sizingTransform\n});\nconst height = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'height',\n  transform: sizingTransform\n});\nconst maxHeight = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'maxHeight',\n  transform: sizingTransform\n});\nconst minHeight = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'minHeight',\n  transform: sizingTransform\n});\nconst sizeWidth = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'size',\n  cssProperty: 'width',\n  transform: sizingTransform\n});\nconst sizeHeight = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'size',\n  cssProperty: 'height',\n  transform: sizingTransform\n});\nconst boxSizing = (0,_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n  prop: 'boxSizing'\n});\nconst sizing = (0,_compose__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\n/* harmony default export */ __webpack_exports__[\"default\"] = (sizing);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/sizing.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/spacing.js":
/*!*************************************************!*\
  !*** ./node_modules/@mui/system/esm/spacing.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createUnarySpacing\": function() { return /* binding */ createUnarySpacing; },\n/* harmony export */   \"createUnaryUnit\": function() { return /* binding */ createUnaryUnit; },\n/* harmony export */   \"getStyleFromPropValue\": function() { return /* binding */ getStyleFromPropValue; },\n/* harmony export */   \"getValue\": function() { return /* binding */ getValue; },\n/* harmony export */   \"margin\": function() { return /* binding */ margin; },\n/* harmony export */   \"marginKeys\": function() { return /* binding */ marginKeys; },\n/* harmony export */   \"padding\": function() { return /* binding */ padding; },\n/* harmony export */   \"paddingKeys\": function() { return /* binding */ paddingKeys; }\n/* harmony export */ });\n/* harmony import */ var _responsivePropType__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./responsivePropType */ \"./node_modules/@mui/system/esm/responsivePropType.js\");\n/* harmony import */ var _breakpoints__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./breakpoints */ \"./node_modules/@mui/system/esm/breakpoints.js\");\n/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./style */ \"./node_modules/@mui/system/esm/style.js\");\n/* harmony import */ var _merge__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./merge */ \"./node_modules/@mui/system/esm/merge.js\");\n/* harmony import */ var _memoize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./memoize */ \"./node_modules/@mui/system/esm/memoize.js\");\n\n\n\n\n\nconst properties = {\n  m: 'margin',\n  p: 'padding'\n};\nconst directions = {\n  t: 'Top',\n  r: 'Right',\n  b: 'Bottom',\n  l: 'Left',\n  x: ['Left', 'Right'],\n  y: ['Top', 'Bottom']\n};\nconst aliases = {\n  marginX: 'mx',\n  marginY: 'my',\n  paddingX: 'px',\n  paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = (0,_memoize__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(prop => {\n  // It's not a shorthand notation.\n  if (prop.length > 2) {\n    if (aliases[prop]) {\n      prop = aliases[prop];\n    } else {\n      return [prop];\n    }\n  }\n  const [a, b] = prop.split('');\n  const property = properties[a];\n  const direction = directions[b] || '';\n  return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nconst marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nconst paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nfunction createUnaryUnit(theme, themeKey, defaultValue, propName) {\n  var _getPath;\n  const themeSpacing = (_getPath = (0,_style__WEBPACK_IMPORTED_MODULE_1__.getPath)(theme, themeKey, false)) != null ? _getPath : defaultValue;\n  if (typeof themeSpacing === 'number') {\n    return abs => {\n      if (typeof abs === 'string') {\n        return abs;\n      }\n      if (true) {\n        if (typeof abs !== 'number') {\n          console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n        }\n      }\n      return themeSpacing * abs;\n    };\n  }\n  if (Array.isArray(themeSpacing)) {\n    return abs => {\n      if (typeof abs === 'string') {\n        return abs;\n      }\n      if (true) {\n        if (!Number.isInteger(abs)) {\n          console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n        } else if (abs > themeSpacing.length - 1) {\n          console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n        }\n      }\n      return themeSpacing[abs];\n    };\n  }\n  if (typeof themeSpacing === 'function') {\n    return themeSpacing;\n  }\n  if (true) {\n    console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n  }\n  return () => undefined;\n}\nfunction createUnarySpacing(theme) {\n  return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nfunction getValue(transformer, propValue) {\n  if (typeof propValue === 'string' || propValue == null) {\n    return propValue;\n  }\n  const abs = Math.abs(propValue);\n  const transformed = transformer(abs);\n  if (propValue >= 0) {\n    return transformed;\n  }\n  if (typeof transformed === 'number') {\n    return -transformed;\n  }\n  return `-${transformed}`;\n}\nfunction getStyleFromPropValue(cssProperties, transformer) {\n  return propValue => cssProperties.reduce((acc, cssProperty) => {\n    acc[cssProperty] = getValue(transformer, propValue);\n    return acc;\n  }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n  // Using a hash computation over an array iteration could be faster, but with only 28 items,\n  // it's doesn't worth the bundle size.\n  if (keys.indexOf(prop) === -1) {\n    return null;\n  }\n  const cssProperties = getCssProperties(prop);\n  const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n  const propValue = props[prop];\n  return (0,_breakpoints__WEBPACK_IMPORTED_MODULE_2__.handleBreakpoints)(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n  const transformer = createUnarySpacing(props.theme);\n  return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(_merge__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {});\n}\nfunction margin(props) {\n  return style(props, marginKeys);\n}\nmargin.propTypes =  true ? marginKeys.reduce((obj, key) => {\n  obj[key] = _responsivePropType__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n  return obj;\n}, {}) : 0;\nmargin.filterProps = marginKeys;\nfunction padding(props) {\n  return style(props, paddingKeys);\n}\npadding.propTypes =  true ? paddingKeys.reduce((obj, key) => {\n  obj[key] = _responsivePropType__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n  return obj;\n}, {}) : 0;\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n  return style(props, spacingKeys);\n}\nspacing.propTypes =  true ? spacingKeys.reduce((obj, key) => {\n  obj[key] = _responsivePropType__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n  return obj;\n}, {}) : 0;\nspacing.filterProps = spacingKeys;\n/* harmony default export */ __webpack_exports__[\"default\"] = (spacing);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/spacing.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/style.js":
/*!***********************************************!*\
  !*** ./node_modules/@mui/system/esm/style.js ***!
  \***********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getPath\": function() { return /* binding */ getPath; },\n/* harmony export */   \"getStyleValue\": function() { return /* binding */ getStyleValue; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/capitalize.js\");\n/* harmony import */ var _responsivePropType__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./responsivePropType */ \"./node_modules/@mui/system/esm/responsivePropType.js\");\n/* harmony import */ var _breakpoints__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./breakpoints */ \"./node_modules/@mui/system/esm/breakpoints.js\");\n\n\n\nfunction getPath(obj, path, checkVars = true) {\n  if (!path || typeof path !== 'string') {\n    return null;\n  }\n\n  // Check if CSS variables are used\n  if (obj && obj.vars && checkVars) {\n    const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n    if (val != null) {\n      return val;\n    }\n  }\n  return path.split('.').reduce((acc, item) => {\n    if (acc && acc[item] != null) {\n      return acc[item];\n    }\n    return null;\n  }, obj);\n}\nfunction getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n  let value;\n  if (typeof themeMapping === 'function') {\n    value = themeMapping(propValueFinal);\n  } else if (Array.isArray(themeMapping)) {\n    value = themeMapping[propValueFinal] || userValue;\n  } else {\n    value = getPath(themeMapping, propValueFinal) || userValue;\n  }\n  if (transform) {\n    value = transform(value, userValue, themeMapping);\n  }\n  return value;\n}\nfunction style(options) {\n  const {\n    prop,\n    cssProperty = options.prop,\n    themeKey,\n    transform\n  } = options;\n\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const fn = props => {\n    if (props[prop] == null) {\n      return null;\n    }\n    const propValue = props[prop];\n    const theme = props.theme;\n    const themeMapping = getPath(theme, themeKey) || {};\n    const styleFromPropValue = propValueFinal => {\n      let value = getStyleValue(themeMapping, transform, propValueFinal);\n      if (propValueFinal === value && typeof propValueFinal === 'string') {\n        // Haven't found value\n        value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : (0,_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(propValueFinal)}`, propValueFinal);\n      }\n      if (cssProperty === false) {\n        return value;\n      }\n      return {\n        [cssProperty]: value\n      };\n    };\n    return (0,_breakpoints__WEBPACK_IMPORTED_MODULE_1__.handleBreakpoints)(props, propValue, styleFromPropValue);\n  };\n  fn.propTypes =  true ? {\n    [prop]: _responsivePropType__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n  } : 0;\n  fn.filterProps = [prop];\n  return fn;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (style);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/style.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _spacing__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../spacing */ \"./node_modules/@mui/system/esm/spacing.js\");\n/* harmony import */ var _borders__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../borders */ \"./node_modules/@mui/system/esm/borders.js\");\n/* harmony import */ var _cssGrid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cssGrid */ \"./node_modules/@mui/system/esm/cssGrid.js\");\n/* harmony import */ var _palette__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../palette */ \"./node_modules/@mui/system/esm/palette.js\");\n/* harmony import */ var _sizing__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../sizing */ \"./node_modules/@mui/system/esm/sizing.js\");\n\n\n\n\n\nconst defaultSxConfig = {\n  // borders\n  border: {\n    themeKey: 'borders',\n    transform: _borders__WEBPACK_IMPORTED_MODULE_0__.borderTransform\n  },\n  borderTop: {\n    themeKey: 'borders',\n    transform: _borders__WEBPACK_IMPORTED_MODULE_0__.borderTransform\n  },\n  borderRight: {\n    themeKey: 'borders',\n    transform: _borders__WEBPACK_IMPORTED_MODULE_0__.borderTransform\n  },\n  borderBottom: {\n    themeKey: 'borders',\n    transform: _borders__WEBPACK_IMPORTED_MODULE_0__.borderTransform\n  },\n  borderLeft: {\n    themeKey: 'borders',\n    transform: _borders__WEBPACK_IMPORTED_MODULE_0__.borderTransform\n  },\n  borderColor: {\n    themeKey: 'palette'\n  },\n  borderTopColor: {\n    themeKey: 'palette'\n  },\n  borderRightColor: {\n    themeKey: 'palette'\n  },\n  borderBottomColor: {\n    themeKey: 'palette'\n  },\n  borderLeftColor: {\n    themeKey: 'palette'\n  },\n  borderRadius: {\n    themeKey: 'shape.borderRadius',\n    style: _borders__WEBPACK_IMPORTED_MODULE_0__.borderRadius\n  },\n  // palette\n  color: {\n    themeKey: 'palette',\n    transform: _palette__WEBPACK_IMPORTED_MODULE_1__.paletteTransform\n  },\n  bgcolor: {\n    themeKey: 'palette',\n    cssProperty: 'backgroundColor',\n    transform: _palette__WEBPACK_IMPORTED_MODULE_1__.paletteTransform\n  },\n  backgroundColor: {\n    themeKey: 'palette',\n    transform: _palette__WEBPACK_IMPORTED_MODULE_1__.paletteTransform\n  },\n  // spacing\n  p: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  pt: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  pr: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  pb: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  pl: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  px: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  py: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  padding: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  paddingTop: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  paddingRight: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  paddingBottom: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  paddingLeft: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  paddingX: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  paddingY: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  paddingInline: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  paddingInlineStart: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  paddingInlineEnd: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  paddingBlock: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  paddingBlockStart: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  paddingBlockEnd: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.padding\n  },\n  m: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  mt: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  mr: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  mb: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  ml: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  mx: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  my: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  margin: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  marginTop: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  marginRight: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  marginBottom: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  marginLeft: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  marginX: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  marginY: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  marginInline: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  marginInlineStart: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  marginInlineEnd: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  marginBlock: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  marginBlockStart: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  marginBlockEnd: {\n    style: _spacing__WEBPACK_IMPORTED_MODULE_2__.margin\n  },\n  // display\n  displayPrint: {\n    cssProperty: false,\n    transform: value => ({\n      '@media print': {\n        display: value\n      }\n    })\n  },\n  display: {},\n  overflow: {},\n  textOverflow: {},\n  visibility: {},\n  whiteSpace: {},\n  // flexbox\n  flexBasis: {},\n  flexDirection: {},\n  flexWrap: {},\n  justifyContent: {},\n  alignItems: {},\n  alignContent: {},\n  order: {},\n  flex: {},\n  flexGrow: {},\n  flexShrink: {},\n  alignSelf: {},\n  justifyItems: {},\n  justifySelf: {},\n  // grid\n  gap: {\n    style: _cssGrid__WEBPACK_IMPORTED_MODULE_3__.gap\n  },\n  rowGap: {\n    style: _cssGrid__WEBPACK_IMPORTED_MODULE_3__.rowGap\n  },\n  columnGap: {\n    style: _cssGrid__WEBPACK_IMPORTED_MODULE_3__.columnGap\n  },\n  gridColumn: {},\n  gridRow: {},\n  gridAutoFlow: {},\n  gridAutoColumns: {},\n  gridAutoRows: {},\n  gridTemplateColumns: {},\n  gridTemplateRows: {},\n  gridTemplateAreas: {},\n  gridArea: {},\n  // positions\n  position: {},\n  zIndex: {\n    themeKey: 'zIndex'\n  },\n  top: {},\n  right: {},\n  bottom: {},\n  left: {},\n  // shadows\n  boxShadow: {\n    themeKey: 'shadows'\n  },\n  // sizing\n  width: {\n    transform: _sizing__WEBPACK_IMPORTED_MODULE_4__.sizingTransform\n  },\n  maxWidth: {\n    style: _sizing__WEBPACK_IMPORTED_MODULE_4__.maxWidth\n  },\n  minWidth: {\n    transform: _sizing__WEBPACK_IMPORTED_MODULE_4__.sizingTransform\n  },\n  height: {\n    transform: _sizing__WEBPACK_IMPORTED_MODULE_4__.sizingTransform\n  },\n  maxHeight: {\n    transform: _sizing__WEBPACK_IMPORTED_MODULE_4__.sizingTransform\n  },\n  minHeight: {\n    transform: _sizing__WEBPACK_IMPORTED_MODULE_4__.sizingTransform\n  },\n  boxSizing: {},\n  // typography\n  fontFamily: {\n    themeKey: 'typography'\n  },\n  fontSize: {\n    themeKey: 'typography'\n  },\n  fontStyle: {\n    themeKey: 'typography'\n  },\n  fontWeight: {\n    themeKey: 'typography'\n  },\n  letterSpacing: {},\n  textTransform: {},\n  lineHeight: {},\n  textAlign: {},\n  typography: {\n    cssProperty: false,\n    themeKey: 'typography'\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (defaultSxConfig);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ extendSxProp; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/deepmerge.js\");\n/* harmony import */ var _defaultSxConfig__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./defaultSxConfig */ \"./node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js\");\n\n\nconst _excluded = [\"sx\"];\n\n\nconst splitProps = props => {\n  var _props$theme$unstable, _props$theme;\n  const result = {\n    systemProps: {},\n    otherProps: {}\n  };\n  const config = (_props$theme$unstable = props == null ? void 0 : (_props$theme = props.theme) == null ? void 0 : _props$theme.unstable_sxConfig) != null ? _props$theme$unstable : _defaultSxConfig__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n  Object.keys(props).forEach(prop => {\n    if (config[prop]) {\n      result.systemProps[prop] = props[prop];\n    } else {\n      result.otherProps[prop] = props[prop];\n    }\n  });\n  return result;\n};\nfunction extendSxProp(props) {\n  const {\n      sx: inSx\n    } = props,\n    other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n  const {\n    systemProps,\n    otherProps\n  } = splitProps(other);\n  let finalSx;\n  if (Array.isArray(inSx)) {\n    finalSx = [systemProps, ...inSx];\n  } else if (typeof inSx === 'function') {\n    finalSx = (...args) => {\n      const result = inSx(...args);\n      if (!(0,_mui_utils__WEBPACK_IMPORTED_MODULE_3__.isPlainObject)(result)) {\n        return systemProps;\n      }\n      return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, systemProps, result);\n    };\n  } else {\n    finalSx = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, systemProps, inSx);\n  }\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, otherProps, {\n    sx: finalSx\n  });\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"unstable_createStyleFunctionSx\": function() { return /* binding */ unstable_createStyleFunctionSx; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/capitalize.js\");\n/* harmony import */ var _merge__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../merge */ \"./node_modules/@mui/system/esm/merge.js\");\n/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../style */ \"./node_modules/@mui/system/esm/style.js\");\n/* harmony import */ var _breakpoints__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../breakpoints */ \"./node_modules/@mui/system/esm/breakpoints.js\");\n/* harmony import */ var _defaultSxConfig__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaultSxConfig */ \"./node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js\");\n\n\n\n\n\nfunction objectsHaveSameKeys(...objects) {\n  const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n  const union = new Set(allKeys);\n  return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n  return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction unstable_createStyleFunctionSx() {\n  function getThemeValue(prop, val, theme, config) {\n    const props = {\n      [prop]: val,\n      theme\n    };\n    const options = config[prop];\n    if (!options) {\n      return {\n        [prop]: val\n      };\n    }\n    const {\n      cssProperty = prop,\n      themeKey,\n      transform,\n      style\n    } = options;\n    if (val == null) {\n      return null;\n    }\n    const themeMapping = (0,_style__WEBPACK_IMPORTED_MODULE_0__.getPath)(theme, themeKey) || {};\n    if (style) {\n      return style(props);\n    }\n    const styleFromPropValue = propValueFinal => {\n      let value = (0,_style__WEBPACK_IMPORTED_MODULE_0__.getStyleValue)(themeMapping, transform, propValueFinal);\n      if (propValueFinal === value && typeof propValueFinal === 'string') {\n        // Haven't found value\n        value = (0,_style__WEBPACK_IMPORTED_MODULE_0__.getStyleValue)(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(propValueFinal)}`, propValueFinal);\n      }\n      if (cssProperty === false) {\n        return value;\n      }\n      return {\n        [cssProperty]: value\n      };\n    };\n    return (0,_breakpoints__WEBPACK_IMPORTED_MODULE_2__.handleBreakpoints)(props, val, styleFromPropValue);\n  }\n  function styleFunctionSx(props) {\n    var _theme$unstable_sxCon;\n    const {\n      sx,\n      theme = {}\n    } = props || {};\n    if (!sx) {\n      return null; // Emotion & styled-components will neglect null\n    }\n\n    const config = (_theme$unstable_sxCon = theme.unstable_sxConfig) != null ? _theme$unstable_sxCon : _defaultSxConfig__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n\n    /*\n     * Receive `sxInput` as object or callback\n     * and then recursively check keys & values to create media query object styles.\n     * (the result will be used in `styled`)\n     */\n    function traverse(sxInput) {\n      let sxObject = sxInput;\n      if (typeof sxInput === 'function') {\n        sxObject = sxInput(theme);\n      } else if (typeof sxInput !== 'object') {\n        // value\n        return sxInput;\n      }\n      if (!sxObject) {\n        return null;\n      }\n      const emptyBreakpoints = (0,_breakpoints__WEBPACK_IMPORTED_MODULE_2__.createEmptyBreakpointObject)(theme.breakpoints);\n      const breakpointsKeys = Object.keys(emptyBreakpoints);\n      let css = emptyBreakpoints;\n      Object.keys(sxObject).forEach(styleKey => {\n        const value = callIfFn(sxObject[styleKey], theme);\n        if (value !== null && value !== undefined) {\n          if (typeof value === 'object') {\n            if (config[styleKey]) {\n              css = (0,_merge__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(css, getThemeValue(styleKey, value, theme, config));\n            } else {\n              const breakpointsValues = (0,_breakpoints__WEBPACK_IMPORTED_MODULE_2__.handleBreakpoints)({\n                theme\n              }, value, x => ({\n                [styleKey]: x\n              }));\n              if (objectsHaveSameKeys(breakpointsValues, value)) {\n                css[styleKey] = styleFunctionSx({\n                  sx: value,\n                  theme\n                });\n              } else {\n                css = (0,_merge__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(css, breakpointsValues);\n              }\n            }\n          } else {\n            css = (0,_merge__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(css, getThemeValue(styleKey, value, theme, config));\n          }\n        }\n      });\n      return (0,_breakpoints__WEBPACK_IMPORTED_MODULE_2__.removeUnusedBreakpoints)(breakpointsKeys, css);\n    }\n    return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n  }\n  return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\n/* harmony default export */ __webpack_exports__[\"default\"] = (styleFunctionSx);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/styled.js":
/*!************************************************!*\
  !*** ./node_modules/@mui/system/esm/styled.js ***!
  \************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createStyled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createStyled */ \"./node_modules/@mui/system/esm/createStyled.js\");\n\nconst styled = (0,_createStyled__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n/* harmony default export */ __webpack_exports__[\"default\"] = (styled);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/styled.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/useTheme.js":
/*!**************************************************!*\
  !*** ./node_modules/@mui/system/esm/useTheme.js ***!
  \**************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"systemDefaultTheme\": function() { return /* binding */ systemDefaultTheme; }\n/* harmony export */ });\n/* harmony import */ var _createTheme__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createTheme */ \"./node_modules/@mui/system/esm/createTheme/createTheme.js\");\n/* harmony import */ var _useThemeWithoutDefault__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useThemeWithoutDefault */ \"./node_modules/@mui/system/esm/useThemeWithoutDefault.js\");\n\n\nconst systemDefaultTheme = (0,_createTheme__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n  return (0,_useThemeWithoutDefault__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(defaultTheme);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (useTheme);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/useTheme.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/useThemeProps/getThemeProps.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@mui/system/esm/useThemeProps/getThemeProps.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getThemeProps; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/resolveProps.js\");\n\nfunction getThemeProps(params) {\n  const {\n    theme,\n    name,\n    props\n  } = params;\n  if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n    return props;\n  }\n  return (0,_mui_utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(theme.components[name].defaultProps, props);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/useThemeProps/getThemeProps.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/useThemeProps/useThemeProps.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@mui/system/esm/useThemeProps/useThemeProps.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ useThemeProps; }\n/* harmony export */ });\n/* harmony import */ var _getThemeProps__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getThemeProps */ \"./node_modules/@mui/system/esm/useThemeProps/getThemeProps.js\");\n/* harmony import */ var _useTheme__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../useTheme */ \"./node_modules/@mui/system/esm/useTheme.js\");\n\n\nfunction useThemeProps({\n  props,\n  name,\n  defaultTheme\n}) {\n  const theme = (0,_useTheme__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(defaultTheme);\n  const mergedProps = (0,_getThemeProps__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n    theme,\n    name,\n    props\n  });\n  return mergedProps;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/useThemeProps/useThemeProps.js?");

/***/ }),

/***/ "./node_modules/@mui/system/esm/useThemeWithoutDefault.js":
/*!****************************************************************!*\
  !*** ./node_modules/@mui/system/esm/useThemeWithoutDefault.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_private_theming__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/private-theming */ \"./node_modules/@mui/private-theming/useTheme/useTheme.js\");\n\nfunction isObjectEmpty(obj) {\n  return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n  const contextTheme = (0,_mui_private_theming__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n  return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (useTheme);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/system/esm/useThemeWithoutDefault.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n  let generate = defaultGenerator;\n  return {\n    configure(generator) {\n      generate = generator;\n    },\n    generate(componentName) {\n      return generate(componentName);\n    },\n    reset() {\n      generate = defaultGenerator;\n    }\n  };\n};\nconst ClassNameGenerator = createClassNameGenerator();\n/* harmony default export */ __webpack_exports__[\"default\"] = (ClassNameGenerator);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/HTMLElementType.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/utils/esm/HTMLElementType.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ HTMLElementType; }\n/* harmony export */ });\nfunction HTMLElementType(props, propName, componentName, location, propFullName) {\n  if (false) {}\n  const propValue = props[propName];\n  const safePropName = propFullName || propName;\n  if (propValue == null) {\n    return null;\n  }\n  if (propValue && propValue.nodeType !== 1) {\n    return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an HTMLElement.`);\n  }\n  return null;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/HTMLElementType.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/capitalize.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/utils/esm/capitalize.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ capitalize; }\n/* harmony export */ });\n\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nfunction capitalize(string) {\n  if (typeof string !== 'string') {\n    throw new Error( true ? `MUI: \\`capitalize(string)\\` expects a string argument.` : 0);\n  }\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/capitalize.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/chainPropTypes.js":
/*!*******************************************************!*\
  !*** ./node_modules/@mui/utils/esm/chainPropTypes.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ chainPropTypes; }\n/* harmony export */ });\nfunction chainPropTypes(propType1, propType2) {\n  if (false) {}\n  return function validate(...args) {\n    return propType1(...args) || propType2(...args);\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/chainPropTypes.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/composeClasses/composeClasses.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@mui/utils/esm/composeClasses/composeClasses.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ composeClasses; }\n/* harmony export */ });\nfunction composeClasses(slots, getUtilityClass, classes) {\n  const output = {};\n  Object.keys(slots).forEach(\n  // `Objet.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n  // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n  slot => {\n    output[slot] = slots[slot].reduce((acc, key) => {\n      if (key) {\n        acc.push(getUtilityClass(key));\n        if (classes && classes[key]) {\n          acc.push(classes[key]);\n        }\n      }\n      return acc;\n    }, []).join(' ');\n  });\n  return output;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/composeClasses/composeClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/createChainedFunction.js":
/*!**************************************************************!*\
  !*** ./node_modules/@mui/utils/esm/createChainedFunction.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ createChainedFunction; }\n/* harmony export */ });\n/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nfunction createChainedFunction(...funcs) {\n  return funcs.reduce((acc, func) => {\n    if (func == null) {\n      return acc;\n    }\n    return function chainedFunction(...args) {\n      acc.apply(this, args);\n      func.apply(this, args);\n    };\n  }, () => {});\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/createChainedFunction.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/debounce.js":
/*!*************************************************!*\
  !*** ./node_modules/@mui/utils/esm/debounce.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ debounce; }\n/* harmony export */ });\n// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nfunction debounce(func, wait = 166) {\n  let timeout;\n  function debounced(...args) {\n    const later = () => {\n      func.apply(this, args);\n    };\n    clearTimeout(timeout);\n    timeout = setTimeout(later, wait);\n  }\n  debounced.clear = () => {\n    clearTimeout(timeout);\n  };\n  return debounced;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/debounce.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/deepmerge.js":
/*!**************************************************!*\
  !*** ./node_modules/@mui/utils/esm/deepmerge.js ***!
  \**************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ deepmerge; },\n/* harmony export */   \"isPlainObject\": function() { return /* binding */ isPlainObject; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n\nfunction isPlainObject(item) {\n  return item !== null && typeof item === 'object' && item.constructor === Object;\n}\nfunction deepClone(source) {\n  if (!isPlainObject(source)) {\n    return source;\n  }\n  const output = {};\n  Object.keys(source).forEach(key => {\n    output[key] = deepClone(source[key]);\n  });\n  return output;\n}\nfunction deepmerge(target, source, options = {\n  clone: true\n}) {\n  const output = options.clone ? (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, target) : target;\n  if (isPlainObject(target) && isPlainObject(source)) {\n    Object.keys(source).forEach(key => {\n      // Avoid prototype pollution\n      if (key === '__proto__') {\n        return;\n      }\n      if (isPlainObject(source[key]) && key in target && isPlainObject(target[key])) {\n        // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n        output[key] = deepmerge(target[key], source[key], options);\n      } else if (options.clone) {\n        output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n      } else {\n        output[key] = source[key];\n      }\n    });\n  }\n  return output;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/deepmerge.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/deprecatedPropType.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/utils/esm/deprecatedPropType.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ deprecatedPropType; }\n/* harmony export */ });\nfunction deprecatedPropType(validator, reason) {\n  if (false) {}\n  return (props, propName, componentName, location, propFullName) => {\n    const componentNameSafe = componentName || '<<anonymous>>';\n    const propFullNameSafe = propFullName || propName;\n    if (typeof props[propName] !== 'undefined') {\n      return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n    }\n    return null;\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/deprecatedPropType.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/elementAcceptingRef.js":
/*!************************************************************!*\
  !*** ./node_modules/@mui/utils/esm/elementAcceptingRef.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _chainPropTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chainPropTypes */ \"./node_modules/@mui/utils/esm/chainPropTypes.js\");\n\n\nfunction isClassComponent(elementType) {\n  // elementType.prototype?.isReactComponent\n  const {\n    prototype = {}\n  } = elementType;\n  return Boolean(prototype.isReactComponent);\n}\nfunction acceptingRef(props, propName, componentName, location, propFullName) {\n  const element = props[propName];\n  const safePropName = propFullName || propName;\n  if (element == null ||\n  // When server-side rendering React doesn't warn either.\n  // This is not an accurate check for SSR.\n  // This is only in place for Emotion compat.\n  // TODO: Revisit once https://github.com/facebook/react/issues/20047 is resolved.\n  typeof window === 'undefined') {\n    return null;\n  }\n  let warningHint;\n  const elementType = element.type;\n  /**\n   * Blacklisting instead of whitelisting\n   *\n   * Blacklisting will miss some components, such as React.Fragment. Those will at least\n   * trigger a warning in React.\n   * We can't whitelist because there is no safe way to detect React.forwardRef\n   * or class components. \"Safe\" means there's no public API.\n   *\n   */\n  if (typeof elementType === 'function' && !isClassComponent(elementType)) {\n    warningHint = 'Did you accidentally use a plain function component for an element instead?';\n  }\n  if (warningHint !== undefined) {\n    return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an element that can hold a ref. ${warningHint} ` + 'For more information see https://mui.com/r/caveat-with-refs-guide');\n  }\n  return null;\n}\nconst elementAcceptingRef = (0,_chainPropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_1___default().element), acceptingRef);\nelementAcceptingRef.isRequired = (0,_chainPropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_1___default().element.isRequired), acceptingRef);\n/* harmony default export */ __webpack_exports__[\"default\"] = (elementAcceptingRef);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/elementAcceptingRef.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/elementTypeAcceptingRef.js":
/*!****************************************************************!*\
  !*** ./node_modules/@mui/utils/esm/elementTypeAcceptingRef.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _chainPropTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chainPropTypes */ \"./node_modules/@mui/utils/esm/chainPropTypes.js\");\n\n\nfunction isClassComponent(elementType) {\n  // elementType.prototype?.isReactComponent\n  const {\n    prototype = {}\n  } = elementType;\n  return Boolean(prototype.isReactComponent);\n}\nfunction elementTypeAcceptingRef(props, propName, componentName, location, propFullName) {\n  const propValue = props[propName];\n  const safePropName = propFullName || propName;\n  if (propValue == null ||\n  // When server-side rendering React doesn't warn either.\n  // This is not an accurate check for SSR.\n  // This is only in place for emotion compat.\n  // TODO: Revisit once https://github.com/facebook/react/issues/20047 is resolved.\n  typeof window === 'undefined') {\n    return null;\n  }\n  let warningHint;\n\n  /**\n   * Blacklisting instead of whitelisting\n   *\n   * Blacklisting will miss some components, such as React.Fragment. Those will at least\n   * trigger a warning in React.\n   * We can't whitelist because there is no safe way to detect React.forwardRef\n   * or class components. \"Safe\" means there's no public API.\n   *\n   */\n  if (typeof propValue === 'function' && !isClassComponent(propValue)) {\n    warningHint = 'Did you accidentally provide a plain function component instead?';\n  }\n  if (warningHint !== undefined) {\n    return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an element type that can hold a ref. ${warningHint} ` + 'For more information see https://mui.com/r/caveat-with-refs-guide');\n  }\n  return null;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_chainPropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_1___default().elementType), elementTypeAcceptingRef));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/elementTypeAcceptingRef.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/exactProp.js":
/*!**************************************************!*\
  !*** ./node_modules/@mui/utils/esm/exactProp.js ***!
  \**************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ exactProp; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n\n// This module is based on https://github.com/airbnb/prop-types-exact repository.\n// However, in order to reduce the number of dependencies and to remove some extra safe checks\n// the module was forked.\n\nconst specialProperty = 'exact-prop: \\u200b';\nfunction exactProp(propTypes) {\n  if (false) {}\n  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, propTypes, {\n    [specialProperty]: props => {\n      const unsupportedProps = Object.keys(props).filter(prop => !propTypes.hasOwnProperty(prop));\n      if (unsupportedProps.length > 0) {\n        return new Error(`The following props are not supported: ${unsupportedProps.map(prop => `\\`${prop}\\``).join(', ')}. Please remove them.`);\n      }\n      return null;\n    }\n  });\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/exactProp.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js ***!
  \**********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ generateUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _ClassNameGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ClassNameGenerator */ \"./node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js\");\n\nconst globalStateClassesMapping = {\n  active: 'active',\n  checked: 'checked',\n  completed: 'completed',\n  disabled: 'disabled',\n  error: 'error',\n  expanded: 'expanded',\n  focused: 'focused',\n  focusVisible: 'focusVisible',\n  required: 'required',\n  selected: 'selected'\n};\nfunction generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n  const globalStateClass = globalStateClassesMapping[slot];\n  return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${_ClassNameGenerator__WEBPACK_IMPORTED_MODULE_0__[\"default\"].generate(componentName)}-${slot}`;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js ***!
  \**************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ generateUtilityClasses; }\n/* harmony export */ });\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\nfunction generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n  const result = {};\n  slots.forEach(slot => {\n    result[slot] = (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(componentName, slot, globalStatePrefix);\n  });\n  return result;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/getDisplayName.js":
/*!*******************************************************!*\
  !*** ./node_modules/@mui/utils/esm/getDisplayName.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getDisplayName; },\n/* harmony export */   \"getFunctionName\": function() { return /* binding */ getFunctionName; }\n/* harmony export */ });\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-is */ \"./node_modules/@mui/utils/node_modules/react-is/index.js\");\n\n\n// Simplified polyfill for IE11 support\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\nconst fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nfunction getFunctionName(fn) {\n  const match = `${fn}`.match(fnNameMatchRegex);\n  const name = match && match[1];\n  return name || '';\n}\nfunction getFunctionComponentName(Component, fallback = '') {\n  return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n}\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  const functionName = getFunctionComponentName(innerType);\n  return outerType.displayName || (functionName !== '' ? `${wrapperName}(${functionName})` : wrapperName);\n}\n\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName with added IE11 support\n */\nfunction getDisplayName(Component) {\n  if (Component == null) {\n    return undefined;\n  }\n  if (typeof Component === 'string') {\n    return Component;\n  }\n  if (typeof Component === 'function') {\n    return getFunctionComponentName(Component, 'Component');\n  }\n\n  // TypeScript can't have components as objects but they exist in the form of `memo` or `Suspense`\n  if (typeof Component === 'object') {\n    switch (Component.$$typeof) {\n      case react_is__WEBPACK_IMPORTED_MODULE_0__.ForwardRef:\n        return getWrappedName(Component, Component.render, 'ForwardRef');\n      case react_is__WEBPACK_IMPORTED_MODULE_0__.Memo:\n        return getWrappedName(Component, Component.type, 'memo');\n      default:\n        return undefined;\n    }\n  }\n  return undefined;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/getDisplayName.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/getScrollbarSize.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/utils/esm/getScrollbarSize.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getScrollbarSize; }\n/* harmony export */ });\n// A change of the browser zoom change the scrollbar size.\n// Credit https://github.com/twbs/bootstrap/blob/488fd8afc535ca3a6ad4dc581f5e89217b6a36ac/js/src/util/scrollbar.js#L14-L18\nfunction getScrollbarSize(doc) {\n  // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n  const documentWidth = doc.documentElement.clientWidth;\n  return Math.abs(window.innerWidth - documentWidth);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/getScrollbarSize.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/integerPropType.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/utils/esm/integerPropType.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getTypeByValue\": function() { return /* binding */ getTypeByValue; }\n/* harmony export */ });\nfunction getTypeByValue(value) {\n  const valueType = typeof value;\n  switch (valueType) {\n    case 'number':\n      if (Number.isNaN(value)) {\n        return 'NaN';\n      }\n      if (!Number.isFinite(value)) {\n        return 'Infinity';\n      }\n      if (value !== Math.floor(value)) {\n        return 'float';\n      }\n      return 'number';\n    case 'object':\n      if (value === null) {\n        return 'null';\n      }\n      return value.constructor.name;\n    default:\n      return valueType;\n  }\n}\n\n// IE 11 support\nfunction ponyfillIsInteger(x) {\n  // eslint-disable-next-line no-restricted-globals\n  return typeof x === 'number' && isFinite(x) && Math.floor(x) === x;\n}\nconst isInteger = Number.isInteger || ponyfillIsInteger;\nfunction requiredInteger(props, propName, componentName, location) {\n  const propValue = props[propName];\n  if (propValue == null || !isInteger(propValue)) {\n    const propType = getTypeByValue(propValue);\n    return new RangeError(`Invalid ${location} \\`${propName}\\` of type \\`${propType}\\` supplied to \\`${componentName}\\`, expected \\`integer\\`.`);\n  }\n  return null;\n}\nfunction validator(props, propName, ...other) {\n  const propValue = props[propName];\n  if (propValue === undefined) {\n    return null;\n  }\n  return requiredInteger(props, propName, ...other);\n}\nfunction validatorNoop() {\n  return null;\n}\nvalidator.isRequired = requiredInteger;\nvalidatorNoop.isRequired = validatorNoop;\n/* harmony default export */ __webpack_exports__[\"default\"] = ( false ? 0 : validator);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/integerPropType.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/isMuiElement.js":
/*!*****************************************************!*\
  !*** ./node_modules/@mui/utils/esm/isMuiElement.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ isMuiElement; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction isMuiElement(element, muiNames) {\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/isMuiElement.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/ownerDocument.js":
/*!******************************************************!*\
  !*** ./node_modules/@mui/utils/esm/ownerDocument.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ownerDocument; }\n/* harmony export */ });\nfunction ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/ownerDocument.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/ownerWindow.js":
/*!****************************************************!*\
  !*** ./node_modules/@mui/utils/esm/ownerWindow.js ***!
  \****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ownerWindow; }\n/* harmony export */ });\n/* harmony import */ var _ownerDocument__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ownerDocument */ \"./node_modules/@mui/utils/esm/ownerDocument.js\");\n\nfunction ownerWindow(node) {\n  const doc = (0,_ownerDocument__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node);\n  return doc.defaultView || window;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/ownerWindow.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/refType.js":
/*!************************************************!*\
  !*** ./node_modules/@mui/utils/esm/refType.js ***!
  \************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_0__);\n\nconst refType = prop_types__WEBPACK_IMPORTED_MODULE_0___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_0___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_0___default().object)]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (refType);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/refType.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/requirePropFactory.js":
/*!***********************************************************!*\
  !*** ./node_modules/@mui/utils/esm/requirePropFactory.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ requirePropFactory; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n\nfunction requirePropFactory(componentNameInError, Component) {\n  if (false) {}\n\n  // eslint-disable-next-line react/forbid-foreign-prop-types\n  const prevPropTypes = Component ? (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, Component.propTypes) : null;\n  const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n    const propFullNameSafe = propFullName || propName;\n    const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n    if (defaultTypeChecker) {\n      const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n      if (typeCheckerResult) {\n        return typeCheckerResult;\n      }\n    }\n    if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n      return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n    }\n    return null;\n  };\n  return requireProp;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/requirePropFactory.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/resolveProps.js":
/*!*****************************************************!*\
  !*** ./node_modules/@mui/utils/esm/resolveProps.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ resolveProps; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nfunction resolveProps(defaultProps, props) {\n  const output = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props);\n  Object.keys(defaultProps).forEach(propName => {\n    if (propName.toString().match(/^(components|slots)$/)) {\n      output[propName] = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, defaultProps[propName], output[propName]);\n    } else if (propName.toString().match(/^(componentsProps|slotProps)$/)) {\n      const defaultSlotProps = defaultProps[propName] || {};\n      const slotProps = props[propName];\n      output[propName] = {};\n      if (!slotProps || !Object.keys(slotProps)) {\n        // Reduce the iteration if the slot props is empty\n        output[propName] = defaultSlotProps;\n      } else if (!defaultSlotProps || !Object.keys(defaultSlotProps)) {\n        // Reduce the iteration if the default slot props is empty\n        output[propName] = slotProps;\n      } else {\n        output[propName] = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, slotProps);\n        Object.keys(defaultSlotProps).forEach(slotPropName => {\n          output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n        });\n      }\n    } else if (output[propName] === undefined) {\n      output[propName] = defaultProps[propName];\n    }\n  });\n  return output;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/resolveProps.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/scrollLeft.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/utils/esm/scrollLeft.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"detectScrollType\": function() { return /* binding */ detectScrollType; },\n/* harmony export */   \"getNormalizedScrollLeft\": function() { return /* binding */ getNormalizedScrollLeft; }\n/* harmony export */ });\n// Source from https://github.com/alitaheri/normalize-scroll-left\nlet cachedType;\n\n/**\n * Based on the jquery plugin https://github.com/othree/jquery.rtl-scroll-type\n *\n * Types of scrollLeft, assuming scrollWidth=100 and direction is rtl.\n *\n * Type             | <- Most Left | Most Right -> | Initial\n * ---------------- | ------------ | ------------- | -------\n * default          | 0            | 100           | 100\n * negative (spec*) | -100         | 0             | 0\n * reverse          | 100          | 0             | 0\n *\n * Edge 85: default\n * Safari 14: negative\n * Chrome 85: negative\n * Firefox 81: negative\n * IE11: reverse\n *\n * spec* https://drafts.csswg.org/cssom-view/#dom-window-scroll\n */\nfunction detectScrollType() {\n  if (cachedType) {\n    return cachedType;\n  }\n  const dummy = document.createElement('div');\n  const container = document.createElement('div');\n  container.style.width = '10px';\n  container.style.height = '1px';\n  dummy.appendChild(container);\n  dummy.dir = 'rtl';\n  dummy.style.fontSize = '14px';\n  dummy.style.width = '4px';\n  dummy.style.height = '1px';\n  dummy.style.position = 'absolute';\n  dummy.style.top = '-1000px';\n  dummy.style.overflow = 'scroll';\n  document.body.appendChild(dummy);\n  cachedType = 'reverse';\n  if (dummy.scrollLeft > 0) {\n    cachedType = 'default';\n  } else {\n    dummy.scrollLeft = 1;\n    if (dummy.scrollLeft === 0) {\n      cachedType = 'negative';\n    }\n  }\n  document.body.removeChild(dummy);\n  return cachedType;\n}\n\n// Based on https://stackoverflow.com/a/24394376\nfunction getNormalizedScrollLeft(element, direction) {\n  const scrollLeft = element.scrollLeft;\n\n  // Perform the calculations only when direction is rtl to avoid messing up the ltr behavior\n  if (direction !== 'rtl') {\n    return scrollLeft;\n  }\n  const type = detectScrollType();\n  switch (type) {\n    case 'negative':\n      return element.scrollWidth - element.clientWidth + scrollLeft;\n    case 'reverse':\n      return element.scrollWidth - element.clientWidth - scrollLeft;\n    default:\n      return scrollLeft;\n  }\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/scrollLeft.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/setRef.js":
/*!***********************************************!*\
  !*** ./node_modules/@mui/utils/esm/setRef.js ***!
  \***********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ setRef; }\n/* harmony export */ });\n/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nfunction setRef(ref, value) {\n  if (typeof ref === 'function') {\n    ref(value);\n  } else if (ref) {\n    ref.current = value;\n  }\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/setRef.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/unsupportedProp.js":
/*!********************************************************!*\
  !*** ./node_modules/@mui/utils/esm/unsupportedProp.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ unsupportedProp; }\n/* harmony export */ });\nfunction unsupportedProp(props, propName, componentName, location, propFullName) {\n  if (false) {}\n  const propFullNameSafe = propFullName || propName;\n  if (typeof props[propName] !== 'undefined') {\n    return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n  }\n  return null;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/unsupportedProp.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/useControlled.js":
/*!******************************************************!*\
  !*** ./node_modules/@mui/utils/esm/useControlled.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ useControlled; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\n\nfunction useControlled({\n  controlled,\n  default: defaultProp,\n  name,\n  state = 'value'\n}) {\n  // isControlled is ignored in the hook dependency lists as it should never change.\n  const {\n    current: isControlled\n  } = react__WEBPACK_IMPORTED_MODULE_0__.useRef(controlled !== undefined);\n  const [valueState, setValue] = react__WEBPACK_IMPORTED_MODULE_0__.useState(defaultProp);\n  const value = isControlled ? controlled : valueState;\n  if (true) {\n    react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n      if (isControlled !== (controlled !== undefined)) {\n        console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n      }\n    }, [state, name, controlled]);\n    const {\n      current: defaultValue\n    } = react__WEBPACK_IMPORTED_MODULE_0__.useRef(defaultProp);\n    react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n      if (!isControlled && defaultValue !== defaultProp) {\n        console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n      }\n    }, [JSON.stringify(defaultProp)]);\n  }\n  const setValueIfUncontrolled = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(newValue => {\n    if (!isControlled) {\n      setValue(newValue);\n    }\n  }, []);\n  return [value, setValueIfUncontrolled];\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/useControlled.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/useEnhancedEffect.js":
/*!**********************************************************!*\
  !*** ./node_modules/@mui/utils/esm/useEnhancedEffect.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nconst useEnhancedEffect = typeof window !== 'undefined' ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : react__WEBPACK_IMPORTED_MODULE_0__.useEffect;\n/* harmony default export */ __webpack_exports__[\"default\"] = (useEnhancedEffect);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/useEnhancedEffect.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/useEventCallback.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/utils/esm/useEventCallback.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ useEventCallback; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _useEnhancedEffect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useEnhancedEffect */ \"./node_modules/@mui/utils/esm/useEnhancedEffect.js\");\n\n\n\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n */\nfunction useEventCallback(fn) {\n  const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(fn);\n  (0,_useEnhancedEffect__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(() => {\n    ref.current = fn;\n  });\n  return react__WEBPACK_IMPORTED_MODULE_0__.useCallback((...args) =>\n  // @ts-expect-error hide `this`\n  // tslint:disable-next-line:ban-comma-operator\n  (0, ref.current)(...args), []);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/useEventCallback.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/useForkRef.js":
/*!***************************************************!*\
  !*** ./node_modules/@mui/utils/esm/useForkRef.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ useForkRef; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _setRef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setRef */ \"./node_modules/@mui/utils/esm/setRef.js\");\n\n\nfunction useForkRef(...refs) {\n  /**\n   * This will create a new function if the refs passed to this hook change and are all defined.\n   * This means react will call the old forkRef with `null` and the new forkRef\n   * with the ref. Cleanup naturally emerges from this behavior.\n   */\n  return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => {\n    if (refs.every(ref => ref == null)) {\n      return null;\n    }\n    return instance => {\n      refs.forEach(ref => {\n        (0,_setRef__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(ref, instance);\n      });\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/useForkRef.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/useId.js":
/*!**********************************************!*\
  !*** ./node_modules/@mui/utils/esm/useId.js ***!
  \**********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ useId; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n  const [defaultId, setDefaultId] = react__WEBPACK_IMPORTED_MODULE_0__.useState(idOverride);\n  const id = idOverride || defaultId;\n  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n    if (defaultId == null) {\n      // Fallback to this default id when possible.\n      // Use the incrementing value for client-side rendering only.\n      // We can't use it server-side.\n      // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n      globalId += 1;\n      setDefaultId(`mui-${globalId}`);\n    }\n  }, [defaultId]);\n  return id;\n}\n\n// eslint-disable-next-line no-useless-concat -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = react__WEBPACK_IMPORTED_MODULE_0__['useId' + ''];\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nfunction useId(idOverride) {\n  if (maybeReactUseId !== undefined) {\n    const reactId = maybeReactUseId();\n    return idOverride != null ? idOverride : reactId;\n  }\n  // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n  return useGlobalId(idOverride);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/useId.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/useIsFocusVisible.js":
/*!**********************************************************!*\
  !*** ./node_modules/@mui/utils/esm/useIsFocusVisible.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ useIsFocusVisible; },\n/* harmony export */   \"teardown\": function() { return /* binding */ teardown; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\n\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nlet hadFocusVisibleRecentlyTimeout;\nconst inputTypesWhitelist = {\n  text: true,\n  search: true,\n  url: true,\n  tel: true,\n  email: true,\n  password: true,\n  number: true,\n  date: true,\n  month: true,\n  week: true,\n  time: true,\n  datetime: true,\n  'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n  const {\n    type,\n    tagName\n  } = node;\n  if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n    return true;\n  }\n  if (tagName === 'TEXTAREA' && !node.readOnly) {\n    return true;\n  }\n  if (node.isContentEditable) {\n    return true;\n  }\n  return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n  if (event.metaKey || event.altKey || event.ctrlKey) {\n    return;\n  }\n  hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n  hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n  if (this.visibilityState === 'hidden') {\n    // If the tab becomes active again, the browser will handle calling focus\n    // on the element (Safari actually calls it twice).\n    // If this tab change caused a blur on an element with focus-visible,\n    // re-apply the class when the user switches back to the tab.\n    if (hadFocusVisibleRecently) {\n      hadKeyboardEvent = true;\n    }\n  }\n}\nfunction prepare(doc) {\n  doc.addEventListener('keydown', handleKeyDown, true);\n  doc.addEventListener('mousedown', handlePointerDown, true);\n  doc.addEventListener('pointerdown', handlePointerDown, true);\n  doc.addEventListener('touchstart', handlePointerDown, true);\n  doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction teardown(doc) {\n  doc.removeEventListener('keydown', handleKeyDown, true);\n  doc.removeEventListener('mousedown', handlePointerDown, true);\n  doc.removeEventListener('pointerdown', handlePointerDown, true);\n  doc.removeEventListener('touchstart', handlePointerDown, true);\n  doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n  const {\n    target\n  } = event;\n  try {\n    return target.matches(':focus-visible');\n  } catch (error) {\n    // Browsers not implementing :focus-visible will throw a SyntaxError.\n    // We use our own heuristic for those browsers.\n    // Rethrow might be better if it's not the expected error but do we really\n    // want to crash if focus-visible malfunctioned?\n  }\n\n  // No need for validFocusTarget check. The user does that by attaching it to\n  // focusable events only.\n  return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nfunction useIsFocusVisible() {\n  const ref = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(node => {\n    if (node != null) {\n      prepare(node.ownerDocument);\n    }\n  }, []);\n  const isFocusVisibleRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);\n\n  /**\n   * Should be called if a blur event is fired\n   */\n  function handleBlurVisible() {\n    // checking against potential state variable does not suffice if we focus and blur synchronously.\n    // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n    // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n    // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n    // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n    if (isFocusVisibleRef.current) {\n      // To detect a tab/window switch, we look for a blur event followed\n      // rapidly by a visibility change.\n      // If we don't see a visibility change within 100ms, it's probably a\n      // regular focus change.\n      hadFocusVisibleRecently = true;\n      window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n      hadFocusVisibleRecentlyTimeout = window.setTimeout(() => {\n        hadFocusVisibleRecently = false;\n      }, 100);\n      isFocusVisibleRef.current = false;\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Should be called if a blur event is fired\n   */\n  function handleFocusVisible(event) {\n    if (isFocusVisible(event)) {\n      isFocusVisibleRef.current = true;\n      return true;\n    }\n    return false;\n  }\n  return {\n    isFocusVisibleRef,\n    onFocus: handleFocusVisible,\n    onBlur: handleBlurVisible,\n    ref\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/useIsFocusVisible.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/esm/usePreviousProps.js":
/*!*********************************************************!*\
  !*** ./node_modules/@mui/utils/esm/usePreviousProps.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nconst usePreviousProps = value => {\n  const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef({});\n  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n    ref.current = value;\n  });\n  return ref.current;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (usePreviousProps);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/esm/usePreviousProps.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/node_modules/react-is/cjs/react-is.development.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@mui/utils/node_modules/react-is/cjs/react-is.development.js ***!
  \***********************************************************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n  (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n          case REACT_SUSPENSE_LIST_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_SERVER_CONTEXT_TYPE:\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n    }\n  }\n\n  return false;\n}\nfunction isConcurrentMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n      hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n    }\n  }\n\n  return false;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n  return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/node_modules/react-is/cjs/react-is.development.js?");

/***/ }),

/***/ "./node_modules/@mui/utils/node_modules/react-is/index.js":
/*!****************************************************************!*\
  !*** ./node_modules/@mui/utils/node_modules/react-is/index.js ***!
  \****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ \"./node_modules/@mui/utils/node_modules/react-is/cjs/react-is.development.js\");\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@mui/utils/node_modules/react-is/index.js?");

/***/ }),

/***/ "./node_modules/@phylocanvas/phylocanvas.gl/dist/phylocanvas.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@phylocanvas/phylocanvas.gl/dist/phylocanvas.js ***!
  \**********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("!function(e,t){ true?module.exports=t(__webpack_require__(/*! @deck.gl/layers */ \"./node_modules/@deck.gl/layers/dist/esm/index.js\"),__webpack_require__(/*! @deck.gl/core */ \"./node_modules/@deck.gl/core/dist/esm/index.js\"),__webpack_require__(/*! @luma.gl/core */ \"./node_modules/@luma.gl/core/dist/esm/index.js\"),__webpack_require__(/*! @luma.gl/constants */ \"./node_modules/@luma.gl/constants/dist/esm/index.js\")):0}(this,(function(e,t,r,n){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"/dist/\",r(r.s=151)}([function(e,t,r){\"use strict\";r.r(t),r.d(t,\"Angles\",(function(){return n})),r.d(t,\"EmptyArray\",(function(){return o})),r.d(t,\"EmptyObject\",(function(){return a})),r.d(t,\"TreeTypes\",(function(){return i})),r.d(t,\"Shapes\",(function(){return u}));var n={Degrees0:0,Degrees45:.25*Math.PI,Degrees90:.5*Math.PI,Degrees180:Math.PI,Degrees270:1.5*Math.PI,Degrees360:2*Math.PI},o=[],a={},i={Circular:\"cr\",Diagonal:\"dg\",Hierarchical:\"hr\",Radial:\"rd\",Rectangular:\"rc\"},u={Chevron:\"chevron\",ChevronInverted:\"chevron-inverted\",ChevronLeft:\"chevron-left\",ChevronRight:\"chevron-right\",Circle:\"circle\",Cross:\"cross\",Diamond:\"diamond\",Dot:\"dot\",DoubleChevron:\"double-chevron\",DoubleChevronInverted:\"double-chevron-inverted\",DoubleChevronLeft:\"double-chevron-left\",DoubleChevronRight:\"double-chevron-right\",Heptagon:\"heptagon\",HeptagonInverted:\"heptagon-inverted\",Heptagram:\"heptagram\",HeptagramInverted:\"heptagram-inverted\",Hexagon:\"hexagon\",Hexagram:\"hexagram\",Octagon:\"octagon\",Octagram:\"octagram\",Pentagon:\"pentagon\",PentagonInverted:\"pentagon-inverted\",Pentagram:\"pentagram\",PentagramInverted:\"pentagram-inverted\",Plus:\"plus\",Square:\"square\",Star:\"pentagram\",StarInverted:\"pentagram-inverted\",Tetragram:\"tetragram\",Triangle:\"triangle\",TriangleInverted:\"triangle-inverted\",TriangleLeft:\"triangle-left\",TriangleRight:\"triangle-right\",Wye:\"wye\",WyeInverted:\"wye-inverted\"}},function(e,t,r){\"use strict\";var n=r(0);t.a=Object.freeze({alignLabels:!1,backgroundColour:null,blockHeaderFontSize:13,blockPadding:4,blocks:[],blockSize:16,branchLengthsDigits:4,branchLengthsFormat:null,branchZoom:0,centre:[.5,.5],collapsedIds:n.EmptyArray,edgeOverlapFactor:-.5,fillColour:[51,51,51,255],fontColour:[51,51,51,255],fontFamily:\"monospace\",fontSize:16,haloRadius:12,haloWidth:4,highlightColour:[60,115,131,255],interactive:!1,metadata:{},minScale:.01,nodeOverlapFactor:.1,nodeShape:\"circle\",nodeSize:14,padding:16,rootId:null,rotatedIds:n.EmptyArray,scaleLineAlpha:!1,selectedIds:n.EmptyArray,shapeBorderAlpha:.28,shapeBorderWidth:1,showBlockHeaders:!1,showBlockLabels:!1,showBranchLengths:!1,showEdges:!0,showInternalLabels:!1,showLabels:!1,showLeafLabels:!1,showPiecharts:!1,showShapeBorders:!1,showShapes:!0,size:{height:150,width:300},stepZoom:0,strokeColour:[34,34,34,255],strokeWidth:1,styleLeafLabels:!1,styleNodeEdges:!1,styles:{},treeToCanvasRatio:.25,type:n.TreeTypes.Rectangular,zoom:0})},function(e,t,r){\"use strict\";function n(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var n=t.pop(),o=null,a=null,i=null,u=function e(r){if(null===o||null===r.props||o!==r.props){for(var u=[],s=0;s<t.length;s++)u.push(t[s].call(null,r));u.push(r);var l=!1;if(null===a||null===u)l=!0;else for(var c=0;c<u.length;c++)if(a[c]!==u[c]){l=!0;break}if(l)if(r.log&&e.displayName){var f=performance.now();i=n.apply(null,u);var d=performance.now();r.log(\"selector %s took:\",e.displayName,d-f)}else i=n.apply(null,u);a=u}return o=r.props,i};return u}function o(){var e=arguments,t=Symbol(\"selector\"),r=function r(o){var a=o.cache.get(t);return void 0===a&&((a=n.apply(null,e)).displayName=r.displayName,o.cache.set(t,a)),a.apply(null,arguments)};return r}r.r(t),r.d(t,\"default\",(function(){return o}))},function(e,t){function r(t){return e.exports=r=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.default=e.exports,e.exports.__esModule=!0,r(t)}e.exports=r,e.exports.default=e.exports,e.exports.__esModule=!0},function(t,r){t.exports=e},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return i}));var n=r(26),o=new Map,a=[0,0,0,0];function i(e){if(Array.isArray(e))return e;if(\"transparent\"===e)return a;var t=Object(n.default)(),r=o.get(e);void 0===r&&(t.fillStyle=\"rgba(0, 0, 0, 0)\",t.fillStyle=e,t.fillRect(0,0,1,1),r=t.getImageData(0,0,1,1).data,o.set(e,r));return r}a.isTransparent=!0},function(e,t){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,r){e.exports=t},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){function r(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}e.exports=function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){var n=r(51);e.exports=function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&n(e,t)},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){var n=r(49).default,o=r(121);e.exports=function(e,t){return!t||\"object\"!==n(t)&&\"function\"!=typeof t?o(e):t},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){\"use strict\";function n(e){return Math.pow(2,e)}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){var n=r(70),o=r(71),a=r(53),i=r(72);e.exports=function(e,t){return n(e)||o(e,t)||a(e,t)||i()},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){var n=r(59),o=r(60),a=r(53),i=r(61);e.exports=function(e){return n(e)||o(e)||a(e)||i()},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){var n=r(120);function o(t,r,a){return\"undefined\"!=typeof Reflect&&Reflect.get?(e.exports=o=Reflect.get,e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=o=function(e,t,r){var o=n(e,t);if(o){var a=Object.getOwnPropertyDescriptor(o,t);return a.get?a.get.call(r):a.value}},e.exports.default=e.exports,e.exports.__esModule=!0),o(t,r,a||t)}e.exports=o,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){\"use strict\";r.r(t),t.default=function(e){return Math.log2(e)}},function(e,t,r){\"use strict\";r.r(t);var n=r(0);function o(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,a=n.Angles.Degrees270,i=n.Angles.Degrees360/e,u=[],s=0;s<=e;s+=1)u.push([t+o*Math.cos(a+s*i),r+o*Math.sin(a+s*i)]);return u.push(u[0]),u}function a(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,o=n,a=.5*o,i=Math.PI/e,u=[],s=Math.PI/2*3;u.push([t,r-o]);for(var l=0;l<e;l++)u.push([t+Math.cos(s)*o,r+Math.sin(s)*o]),s+=i,u.push([t+Math.cos(s)*a,r+Math.sin(s)*a]),s+=i;return u.push([t,r-o]),u}function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:180;return{renderCanvas:function(r,o,a,i){return i.rotate(t/180*n.Angles.Degrees180),e.renderCanvas(r,o,a,i)},renderSvg:function(r,n,o,a){return e.renderSvg(r,n,o,'transform=\"rotate('.concat(t,\",\").concat(r,\",\").concat(n,')\" ').concat(a))}}}function u(e){return{renderCanvas:function(t,r,n,o){o.moveTo(t+n*e[0][0],r+n*e[0][1]);for(var a=0;a<e.length;a++){var i=e[a];null===i?o.moveTo(t+n*e[a+1][0],r+n*e[a+1][1]):o.lineTo(t+n*i[0],r+n*i[1])}},renderSvg:function(t,r,n,o){var a=[];a.push(\"M \".concat(t+n*e[0][0],\",\").concat(r+n*e[0][1]));for(var i=0;i<e.length;i++){var u=e[i];null===u?a.push(\"M \".concat(t+n*e[i+1][0],\",\").concat(r+n*e[i+1][1])):a.push(\"L \".concat(t+n*u[0],\",\").concat(r+n*u[1]))}return'<path d=\"'.concat(a.join(\" \"),'Z\" ').concat(o,\" />\")}}}var s={};s.circle={renderCanvas:function(e,t,r,o){o.arc(e,t,r,n.Angles.Degrees0,n.Angles.Degrees360)},renderSvg:function(e,t,r,n){return'<circle cx=\"'.concat(e,'\" cy=\"').concat(t,'\" r=\"').concat(r,'\" ').concat(n,\" />\")}},s.diamond=u(o(4)),s.dot={renderCanvas:function(e,t,r,o){o.arc(e,t,r/8,n.Angles.Degrees0,n.Angles.Degrees360)},renderSvg:function(e,t,r,n){return'<circle cx=\"'.concat(e,'\" cy=\"').concat(t,'\" r=\"').concat(r/8,'\" ').concat(n,\" />\")}},s.heptagon=u(o(7)),s[\"heptagon-inverted\"]=i(s.heptagon),s.heptagram=u(a(7)),s[\"heptagram-inverted\"]=i(s.heptagram),s.hexagon=u(o(6)),s.hexagram=u(a(6)),s.octagon=u(o(8)),s.octagram=u(a(8)),s.pentagon=u(o(5)),s[\"pentagon-inverted\"]=i(s.pentagon),s.pentagram=u(a(5)),s[\"pentagram-inverted\"]=i(s.pentagram),s.plus=u([[-1/4,-1],[1/4,-1],[1/4,-1/4],[1,-1/4],[1,1/4],[1/4,1/4],[1/4,1],[-1/4,1],[-1/4,1/4],[-1,1/4],[-1,-1/4],[-1/4,-1/4],[-1/4,-1]]),s.cross=i(s.plus,45),s.square=u([[-1,-1],[-1,1],[1,1],[1,-1],[-1,-1]]),s.tetragram=u(a(4)),s.triangle=u(o(3)),s[\"triangle-inverted\"]=i(s.triangle),s[\"triangle-right\"]=i(s.triangle,90),s[\"triangle-left\"]=i(s.triangle,-90),s.chevron=u([[0,-1],[1,0],[1,1],[0,0],[-1,1],[-1,0],[0,-1]]),s[\"double-chevron\"]=u([[0,-1],[1,-.5],[1,0],[0,-.5],[-1,0],[-1,-.5],[0,-1],null,[0,0],[1,.5],[1,1],[0,.5],[-1,1],[-1,.5],[0,0]]),s[\"chevron-inverted\"]=i(s.chevron),s[\"double-chevron-inverted\"]=i(s[\"double-chevron\"]),s[\"chevron-right\"]=i(s.chevron,90),s[\"double-chevron-right\"]=i(s[\"double-chevron\"],90),s[\"chevron-left\"]=i(s.chevron,-90),s[\"double-chevron-left\"]=i(s[\"double-chevron\"],-90),s.wye=u([[.366025,.211325],[.366025,.943376],[-.366025,.943376],[-.366025,.211325],[-1,-.154701],[-.633975,-.788675],[0,-.42265],[.633975,-.788675],[1,-.154701]]),s[\"wye-inverted\"]=i(s.wye),s.star=s.pentagram,t.default=s},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return i}));var n=r(25);function o(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return a(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var i,u=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return u=e.done,e},e:function(e){s=!0,i=e},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw i}}}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function i(e){var t,r=[],a=o(Object(n.default)(e));try{for(a.s();!(t=a.n()).done;){var i=t.value,u=i.name||i.id||\"\";if(i.isLeaf)r.push(\"\".concat(u,\":\").concat(i.branchLength));else if(i!==e){var s=r.splice(r.length-i.children.length,i.children.length);r.push(\"(\".concat(s.join(\",\"),\")\").concat(u,\":\").concat(i.branchLength))}}}catch(e){a.e(e)}finally{a.f()}return\"(\".concat(r.join(\",\"),\");\")}},function(e,t,r){\"use strict\";function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(r){var n=e.indexOf(t);if(-1===n)return e.concat(t);var o=e.concat();return o.splice(n,1),o}return[t]}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(e,t){var r,o;return!0===(null!==(r=e.props.interactive)&&void 0!==r?r:n.a.interactive)||!0===(null===(o=e.props.interactive)||void 0===o?void 0:o[t])}},function(e,t,r){\"use strict\";r.d(t,\"a\",(function(){return a}));var n=r(13),o=r.n(n);function a(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=o()(e,4),n=r[0],a=r[1],i=r[2],u=r[3],s=void 0===u?255:u;return 0===s?\"none\":t||255===s?\"rgb(\".concat(n,\", \").concat(a,\", \").concat(i,\")\"):\"rgba(\".concat(n,\", \").concat(a,\", \").concat(i,\", \").concat(s/255,\")\")}},function(e,t,r){\"use strict\";var n=r(14),o=r.n(n),a=r(1),i=r(2);t.a=Object(i.default)((function(e){return e.getStrokeColour()}),(function(e){var t;return null!==(t=e.props.shapeBorderAlpha)&&void 0!==t?t:a.a.shapeBorderAlpha}),(function(e,t){var r=o()(e);return r[3]=255*t,r}))},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(0);function o(e){var t=e.angle/n.Angles.Degrees360*360;return e.inverted?180-t:360-t}},function(e,t){e.exports=r},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return a}));var n=r(14),o=r.n(n);function a(e){for(var t=[],r=[e];r.length;){var n=r.pop();Array.isArray(n.children)&&r.push.apply(r,o()(n.children)),t.push(n)}return t.reverse()}},function(e,t,r){\"use strict\";var n;r.r(t),t.default=function(){return n||(n=document.createElement(\"canvas\").getContext(\"2d\")),n}},function(e,t,r){\"use strict\";function n(e,t){var r=e.getCanvasSize(),n=e.getDrawingArea(),o=[r.width/2,r.height/2],a=[n.width/2+n.left,n.height/2+n.top],i=[o[0]-a[0],o[1]-a[1]];return[(-t[0]+i[0])/r.width+.5,(-t[1]+i[1])/r.height+.5]}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(27);function o(e,t,r,o){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"xy\",i=e.unprojectPoint(o),u=r/t,s=[i[0]*u,i[1]*u],l=e.projectPoint(s),c=e.getScale(),f=\"x\"===a||\"xy\"===a?(l[0]-o[0])/c:0,d=\"y\"===a||\"xy\"===a?(l[1]-o[1])/c:0,p=e.getView(),h=[p.target[0]+f,p.target[1]+d],g=Object(n.default)(e,h);return g}},function(e,t){e.exports=n},function(e,t){e.exports.parse_newick=function(e){for(var t=[],r={},n=e.split(/\\s*(;|\\(|\\)|,|:)\\s*/),o=0;o<n.length;o++){var a=n[o];switch(a){case\"(\":var i={};r.children=[i],t.push(r),r=i;break;case\",\":i={};t[t.length-1].children.push(i),r=i;break;case\")\":r=t.pop();break;case\":\":break;default:var u=n[o-1];\")\"==u||\"(\"==u||\",\"==u?r.name=a:\":\"==u&&(r.branch_length=parseFloat(a))}}return r}},function(e,t,r){\"use strict\";var n=r(0),o=r(2);function a(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return i(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return i(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,u=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return u=e.done,e},e:function(e){s=!0,a=e},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw a}}}}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var u=Object(o.default)((function(e){return e.getTreeType()}),(function(e){return e.getGraphAfterLayout()}),(function(e){return e.getBranchScale()}),(function(e){return e.getStepScale()}),(function(e){return e.getScale()}),(function(e){return e.getFontSize()}),(function(e,t,r,o,a,i){if(e===n.TreeTypes.Circular||e===n.TreeTypes.Radial){var u=t.root.totalSubtreeLength*r*a,s=.75*i,l=2*Math.asin(s/(2*u)),c=Math.floor(n.Angles.Degrees360/l);return Math.ceil(t.root.totalLeaves/c)}var f=t.root.totalLeaves*o*a/i,d=t.root.totalLeaves/f;return d<=1?1:Math.pow(2,Math.ceil(Math.log(d)/Math.log(2)))})),s=Object(o.default)((function(e){return e.getGraphWithStyles()}),(function(e){return e.getTreeType()}),u,(function(e,t,r){if(r<=1){var o,i=[],u=a(e.leaves);try{for(u.s();!(o=u.n()).done;){var s=o.value;s.label&&i.push(s)}}catch(e){u.e(e)}finally{u.f()}return i}for(var l=e.leaves.length-(t===n.TreeTypes.Circular||t===n.TreeTypes.Radial?Math.ceil(r/2):0),c=[],f=0;f<e.leaves.length;f++)if(f<l&&f%r==0){var d=e.leaves[f];d.label&&c.push(d)}return c}));s.displayName=\"labelled-leaf-nodes\",t.a=s},function(e,t,r){\"use strict\";var n=r(2);t.a=Object(n.default)((function(e){return e.getAlignLeafLabels()}),(function(e){return e.getGraphAfterLayout().root.totalSubtreeLength}),(function(e){return e.getBranchScale()}),(function(e){return e.getScale()}),(function(e){return e.getShowShapes()?e.getNodeSize():0}),(function(e,t,r,n,o){return function(a){var i=o/n;return e&&(i+=(t-a.distanceFromRoot)*r),[a.x+i*Math.cos(a.angle),a.y+i*Math.sin(a.angle)]}}))},function(e,t,r){\"use strict\";var n=r(1);t.a=function(e){var t;return null!==(t=e.props.shapeBorderWidth)&&void 0!==t?t:n.a.shapeBorderWidth}},function(e,t,r){\"use strict\";var n=r(2),o=r(5),a=r(0);function i(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return u(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return u(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,i=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){s=!0,a=e},f:function(){try{i||null==r.return||r.return()}finally{if(s)throw a}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}t.a=Object(n.default)((function(e){return e.getGraphWithStyles()}),(function(e){return e.getAlignLeafLabels()}),(function(e){return e.props.metadata||a.EmptyObject}),(function(e){return e.props.blocks||a.EmptyArray}),(function(e){return e.getMetadataColumnWidth()}),(function(e){return e.getBranchScale()}),(function(e){return e.getBlockPadding()}),(function(e,t,r,n,a,u,s){var l,c=[],f=i(e.leaves);try{for(f.s();!(l=f.n()).done;){var d=l.value;if(d.shape&&!d.isHidden&&d.id in r)for(var p=r[d.id],h=t?u*(e.root.totalSubtreeLength-d.distanceFromRoot):0,g=[d.x+h*Math.cos(d.angle),d.y+h*Math.sin(d.angle)],v=0,y=0;y<n.length;y++){var b=n[y],m=p[b];m&&m.colour&&c.push({position:g,offsetX:v+s+a/2,colour:Object(o.default)(m.colour),columnName:b,block:m,node:d}),v+=a}}}catch(e){f.e(e)}finally{f.f()}return c}))},function(e,t,r){\"use strict\";var n=r(0),o=r(2);t.a=Object(o.default)((function(e){return e.getGraphWithStyles()}),(function(e){return e.getAlignLeafLabels()}),(function(e){return e.hasMetadataLabels()}),(function(e){return e.props.blocks}),(function(e){return e.getMetadataColumnWidth()}),(function(e){return e.getBranchScale()}),(function(e){return e.getBlockSize()}),(function(e){return e.getBlockPadding()}),(function(e){return e.getStepScale()*e.getScale()}),(function(e,t,r,o,a,i,u,s,l){var c=[],f=e.postorderTraversal[e.root.postIndex-e.root.totalNodes+1],d=f.angle>n.Angles.Degrees90&&f.angle<n.Angles.Degrees270,p=t?i*(e.root.totalSubtreeLength-f.distanceFromRoot):0,h=[f.x+p*Math.cos(f.angle),f.y+p*Math.sin(f.angle)],g=f.angle;r||(g-=n.Angles.Degrees90);for(var v=0,y=(0===g?.5:-.5)*l,b=0;b<o.length;b++){var m=o[b];c.push({node:f,inverted:d,position:h,offsetX:v+s+a/2,offsetY:y,text:m,angle:360-g/n.Angles.Degrees360*360}),v+=a}return c}))},function(e,t,r){\"use strict\";var n=r(2);t.a=Object(n.default)((function(e){return e.getPixelOffsets().length}),(function(e){return function(t){var r=t.offsetX+e;return t.offsetY?[r*Math.cos(t.node.angle)+t.offsetY*Math.sin(t.node.angle),r*Math.sin(t.node.angle)+t.offsetY*Math.cos(t.node.angle)]:[r*Math.cos(t.node.angle),r*Math.sin(t.node.angle)]}}))},function(e,t,r){\"use strict\";t.a=function(e){var t=e.getBlockSize(),r=e.getBlockHeaderFontSize();return Math.min(t,r)}},function(e,t,r){\"use strict\";r.r(t);var n=r(14),o=r.n(n);function a(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return i(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return i(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,u=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return u=e.done,e},e:function(e){s=!0,a=e},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw a}}}}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function u(e,t,r){var n,i=[],u=a(r.children);try{for(u.s();!(n=u.n()).done;){var s=n.value,l=e.splice(t,s.totalNodes);i.push(l)}}catch(e){u.e(e)}finally{u.f()}for(var c=0,f=i;c<f.length;c++){var d=f[c];e.splice.apply(e,[t,0].concat(o()(d)))}}t.default=function(e,t){var r=e.preorderTraversal,n=e.postorderTraversal;u(r,r.indexOf(t)+1,t);for(var o=0;o<r.length;o++)r[o].preIndex=o;u(n,n.indexOf(t)-t.totalNodes+1,t);for(var a=0;a<n.length;a++)n[a].postIndex=a;t.children.reverse()}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(26);function o(e,t,r){var o=Object(n.default)();o.font=\"\".concat(r,\"px \").concat(t);var a=o.measureText(e);return Math.ceil(a.width)}},function(e,t,r){\"use strict\";var n=r(2),o=r(41),a=Object(n.default)((function(e){return e.getScale()}),(function(e){return e.getMaxScale()}),(function(e){var t;return null!==(t=e.props.minLineAlpha)&&void 0!==t?t:71}),(function(e,t,r){if(e<=1)return r;if(e+.01>=t)return 255;var n=Object(o.default)([1,t],[r,255])(e);return Math.floor(n)})),i=Object(n.default)((function(e){return e.getStrokeColour()}),(function(e){return e.props.scaleLineAlpha?a(e):255}),(function(e,t){return[e[0],e[1],e[2],t]}));t.a=i},function(e,t,r){\"use strict\";r.r(t);var n=r(13),o=r.n(n);t.default=function(e,t){var r=o()(e,2),n=r[0],a=r[1],i=o()(t,2),u=i[0],s=i[1],l=n-1,c=u,f=(s-u)/Math.log10(a-l);return function(e){return f*Math.log10(e-l)+c}}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return a}));var n=r(43),o=r(17);function a(e,t,r,a,i,u,s){if(a<=0||\"none\"===e)return\"\";var l=Object(n.default)(e);if(l)return'<text x=\"'.concat(t,'\" y=\"').concat(r,'\" font-size=\"').concat(2*a,'px\" font-family=\"Segoe UI Emoji\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"').concat(i,'\">').concat(l,\"</text>\");if(e in o.default)return o.default[e].renderSvg(t,r,a,'fill=\"'.concat(i,'\" stroke=\"').concat(u,'\" stroke-width=\"').concat(s,'\"'));throw new Error(\"Invalid shape \".concat(e))}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return a}));var n=/(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\u0023-\\u0039]\\ufe0f?\\u20e3|\\u3299|\\u3297|\\u303d|\\u3030|\\u24c2|\\ud83c[\\udd70-\\udd71]|\\ud83c[\\udd7e-\\udd7f]|\\ud83c\\udd8e|\\ud83c[\\udd91-\\udd9a]|\\ud83c[\\udde6-\\uddff]|[\\ud83c[\\ude01-\\ude02]|\\ud83c\\ude1a|\\ud83c\\ude2f|[\\ud83c[\\ude32-\\ude3a]|[\\ud83c[\\ude50-\\ude51]|\\u203c|\\u2049|[\\u25aa-\\u25ab]|\\u25b6|\\u25c0|[\\u25fb-\\u25fe]|\\u00a9|\\u00ae|\\u2122|\\u2139|\\ud83c\\udc04|[\\u2600-\\u26FF]|\\u2b05|\\u2b06|\\u2b07|\\u2b1b|\\u2b1c|\\u2b50|\\u2b55|\\u231a|\\u231b|\\u2328|\\u23cf|[\\u23e9-\\u23f3]|[\\u23f8-\\u23fa]|\\ud83c\\udccf|\\u2934|\\u2935|[\\u2190-\\u21ff])/i,o={ad:\"🇦🇩\",ae:\"🇦🇪\",af:\"🇦🇫\",ag:\"🇦🇬\",ai:\"🇦🇮\",al:\"🇦🇱\",am:\"🇦🇲\",ao:\"🇦🇴\",aq:\"🇦🇶\",ar:\"🇦🇷\",as:\"🇦🇸\",at:\"🇦🇹\",au:\"🇦🇺\",aw:\"🇦🇼\",ax:\"🇦🇽\",az:\"🇦🇿\",ba:\"🇧🇦\",bb:\"🇧🇧\",bd:\"🇧🇩\",be:\"🇧🇪\",bf:\"🇧🇫\",bg:\"🇧🇬\",bh:\"🇧🇭\",bi:\"🇧🇮\",bj:\"🇧🇯\",bl:\"🇧🇱\",bm:\"🇧🇲\",bn:\"🇧🇳\",bo:\"🇧🇴\",bq:\"🇧🇶\",br:\"🇧🇷\",bs:\"🇧🇸\",bt:\"🇧🇹\",bv:\"🇧🇻\",bw:\"🇧🇼\",by:\"🇧🇾\",bz:\"🇧🇿\",ca:\"🇨🇦\",cc:\"🇨🇨\",cd:\"🇨🇩\",cf:\"🇨🇫\",cg:\"🇨🇬\",ch:\"🇨🇭\",ci:\"🇨🇮\",ck:\"🇨🇰\",cl:\"🇨🇱\",cm:\"🇨🇲\",cn:\"🇨🇳\",co:\"🇨🇴\",cr:\"🇨🇷\",cu:\"🇨🇺\",cv:\"🇨🇻\",cw:\"🇨🇼\",cx:\"🇨🇽\",cy:\"🇨🇾\",cz:\"🇨🇿\",de:\"🇩🇪\",dj:\"🇩🇯\",dk:\"🇩🇰\",dm:\"🇩🇲\",do:\"🇩🇴\",dz:\"🇩🇿\",ec:\"🇪🇨\",ee:\"🇪🇪\",eg:\"🇪🇬\",eh:\"🇪🇭\",er:\"🇪🇷\",es:\"🇪🇸\",et:\"🇪🇹\",eu:\"🇪🇺\",fi:\"🇫🇮\",fj:\"🇫🇯\",fk:\"🇫🇰\",fm:\"🇫🇲\",fo:\"🇫🇴\",fr:\"🇫🇷\",ga:\"🇬🇦\",gb:\"🇬🇧\",gd:\"🇬🇩\",ge:\"🇬🇪\",gf:\"🇬🇫\",gg:\"🇬🇬\",gh:\"🇬🇭\",gi:\"🇬🇮\",gl:\"🇬🇱\",gm:\"🇬🇲\",gn:\"🇬🇳\",gp:\"🇬🇵\",gq:\"🇬🇶\",gr:\"🇬🇷\",gs:\"🇬🇸\",gt:\"🇬🇹\",gu:\"🇬🇺\",gw:\"🇬🇼\",gy:\"🇬🇾\",hk:\"🇭🇰\",hm:\"🇭🇲\",hn:\"🇭🇳\",hr:\"🇭🇷\",ht:\"🇭🇹\",hu:\"🇭🇺\",id:\"🇮🇩\",ie:\"🇮🇪\",il:\"🇮🇱\",im:\"🇮🇲\",in:\"🇮🇳\",io:\"🇮🇴\",iq:\"🇮🇶\",ir:\"🇮🇷\",is:\"🇮🇸\",it:\"🇮🇹\",je:\"🇯🇪\",jm:\"🇯🇲\",jo:\"🇯🇴\",jp:\"🇯🇵\",ke:\"🇰🇪\",kg:\"🇰🇬\",kh:\"🇰🇭\",ki:\"🇰🇮\",km:\"🇰🇲\",kn:\"🇰🇳\",kp:\"🇰🇵\",kr:\"🇰🇷\",kw:\"🇰🇼\",ky:\"🇰🇾\",kz:\"🇰🇿\",la:\"🇱🇦\",lb:\"🇱🇧\",lc:\"🇱🇨\",li:\"🇱🇮\",lk:\"🇱🇰\",lr:\"🇱🇷\",ls:\"🇱🇸\",lt:\"🇱🇹\",lu:\"🇱🇺\",lv:\"🇱🇻\",ly:\"🇱🇾\",ma:\"🇲🇦\",mc:\"🇲🇨\",md:\"🇲🇩\",me:\"🇲🇪\",mf:\"🇲🇫\",mg:\"🇲🇬\",mh:\"🇲🇭\",mk:\"🇲🇰\",ml:\"🇲🇱\",mm:\"🇲🇲\",mn:\"🇲🇳\",mo:\"🇲🇴\",mp:\"🇲🇵\",mq:\"🇲🇶\",mr:\"🇲🇷\",ms:\"🇲🇸\",mt:\"🇲🇹\",mu:\"🇲🇺\",mv:\"🇲🇻\",mw:\"🇲🇼\",mx:\"🇲🇽\",my:\"🇲🇾\",mz:\"🇲🇿\",na:\"🇳🇦\",nc:\"🇳🇨\",ne:\"🇳🇪\",nf:\"🇳🇫\",ng:\"🇳🇬\",ni:\"🇳🇮\",nl:\"🇳🇱\",no:\"🇳🇴\",np:\"🇳🇵\",nr:\"🇳🇷\",nu:\"🇳🇺\",nz:\"🇳🇿\",om:\"🇴🇲\",pa:\"🇵🇦\",pe:\"🇵🇪\",pf:\"🇵🇫\",pg:\"🇵🇬\",ph:\"🇵🇭\",pk:\"🇵🇰\",pl:\"🇵🇱\",pm:\"🇵🇲\",pn:\"🇵🇳\",pr:\"🇵🇷\",ps:\"🇵🇸\",pt:\"🇵🇹\",pw:\"🇵🇼\",py:\"🇵🇾\",qa:\"🇶🇦\",re:\"🇷🇪\",ro:\"🇷🇴\",rs:\"🇷🇸\",ru:\"🇷🇺\",rw:\"🇷🇼\",sa:\"🇸🇦\",sb:\"🇸🇧\",sc:\"🇸🇨\",sd:\"🇸🇩\",se:\"🇸🇪\",sg:\"🇸🇬\",sh:\"🇸🇭\",si:\"🇸🇮\",sj:\"🇸🇯\",sk:\"🇸🇰\",sl:\"🇸🇱\",sm:\"🇸🇲\",sn:\"🇸🇳\",so:\"🇸🇴\",sr:\"🇸🇷\",ss:\"🇸🇸\",st:\"🇸🇹\",sv:\"🇸🇻\",sx:\"🇸🇽\",sy:\"🇸🇾\",sz:\"🇸🇿\",tc:\"🇹🇨\",td:\"🇹🇩\",tf:\"🇹🇫\",tg:\"🇹🇬\",th:\"🇹🇭\",tj:\"🇹🇯\",tk:\"🇹🇰\",tl:\"🇹🇱\",tm:\"🇹🇲\",tn:\"🇹🇳\",to:\"🇹🇴\",tr:\"🇹🇷\",tt:\"🇹🇹\",tv:\"🇹🇻\",tw:\"🇹🇼\",tz:\"🇹🇿\",ua:\"🇺🇦\",ug:\"🇺🇬\",um:\"🇺🇲\",us:\"🇺🇸\",uy:\"🇺🇾\",uz:\"🇺🇿\",va:\"🇻🇦\",vc:\"🇻🇨\",ve:\"🇻🇪\",vg:\"🇻🇬\",vi:\"🇻🇮\",vn:\"🇻🇳\",vu:\"🇻🇺\",wf:\"🇼🇫\",ws:\"🇼🇸\",ye:\"🇾🇪\",yt:\"🇾🇹\",za:\"🇿🇦\",zm:\"🇿🇲\",zw:\"🇿🇼\"};function a(e){return e in o?o[e]:n.test(e)?e:void 0}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return s}));var n=r(0),o=r(45);function a(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return i(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return i(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,u=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return u=e.done,e},e:function(e){s=!0,a=e},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw a}}}}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function u(e,t,r,a,i){var u=Number.MAX_SAFE_INTEGER,s=Number.MAX_SAFE_INTEGER,l=Number.MIN_SAFE_INTEGER,c=Number.MIN_SAFE_INTEGER;if(i)u=-e.root.totalSubtreeLength,s=-e.root.totalSubtreeLength,l=e.root.totalSubtreeLength,c=e.root.totalSubtreeLength;else{var f=Object(o.default)(e.postorderTraversal,t,r,\"bx\",\"by\");u=f.min[0],s=f.min[1],l=f.max[0],c=f.max[1]}for(var d=(l+u)/2,p=(c+s)/2,h=t;h<=r;h++){var g=e.postorderTraversal[h];g.bx-=d,g.by-=p,a&&(g.bcx-=d,g.bcy-=p),g.angleDegrees=360-g.angle/n.Angles.Degrees360*360}return{min:[u-d,s-p],max:[l-d,c-p]}}function s(e,t,r){var o=e.root.postIndex-e.root.totalNodes+1,i=e.root.postIndex;if(t===n.TreeTypes.Circular){for(var s=0,l=o;l<i;l++){var c=e.postorderTraversal[l];if(c.isLeaf)c.angle=s*(n.Angles.Degrees360/e.root.visibleLeaves);else{var f=c.children[0].angle,d=c.children[c.children.length-1].angle;c.angle=(d+f)/2}c.coangle=c.angle+n.Angles.Degrees90;var p=Math.cos(c.angle),h=Math.sin(c.angle);c.bx=c.distanceFromRoot*p,c.by=c.distanceFromRoot*h,c.bcx=c.parent.distanceFromRoot*p,c.bcy=c.parent.distanceFromRoot*h,c.inverted=c.angle>n.Angles.Degrees90&&c.angle<=n.Angles.Degrees270,c.isHidden||!c.isLeaf&&!c.isCollapsed||(s+=1)}return e.root.bx=0,e.root.by=0,e.root.inverted=e.root.angle>n.Angles.Degrees90&&e.root.angle<=n.Angles.Degrees270,u(e,o,i,!0,r)}if(t===n.TreeTypes.Diagonal){for(var g=0,v=o;v<=i;v++){var y=e.postorderTraversal[v];if(y.angle=n.Angles.Degrees0,y.inverted=!1,y.bx=(e.root.visibleLeaves-y.visibleLeaves)/2,y.isLeaf)y.by=g;else if(y.isCollapsed)y.by=g;else{var b=y.visibleLeaves-y.children[0].visibleLeaves;y.by=y.children[0].by+b/2}y.isLeaf&&(g+=1)}return u(e,o,i)}if(t===n.TreeTypes.Hierarchical){for(var m=0,x=o;x<=i;x++){var O=e.postorderTraversal[x];if(O.angle=n.Angles.Degrees90,O.inverted=!1,O.by=O.distanceFromRoot,O.isLeaf)O.bx=-1*m;else if(O.isCollapsed)O.bx=m;else{var S=O.children[0].bx,w=O.children[O.children.length-1].bx;O.bx=(w+S)/2}O.isHidden||!O.isLeaf&&!O.isCollapsed||(m+=1)}return u(e,o,i)}if(t===n.TreeTypes.Radial){for(var j=0,A=o;A<=i;A++){var T=e.postorderTraversal[A];if(T.isLeaf)T.angle=j*(n.Angles.Degrees360/e.root.visibleLeaves);else{var P,C=0,L=a(T.children);try{for(L.s();!(P=L.n()).done;){var k=P.value;C+=k.angle*k.totalLeaves}}catch(e){L.e(e)}finally{L.f()}T.angle=C/T.totalLeaves}T.isHidden||!T.isLeaf&&!T.isCollapsed||(j+=1)}e.root.bx=e.root.branchLength*Math.cos(e.root.angle),e.root.by=e.root.branchLength*Math.sin(e.root.angle),e.root.inverted=e.root.angle>n.Angles.Degrees90&&e.root.angle<=n.Angles.Degrees270,e.root.quarter=Math.floor(e.root.angle/n.Angles.Degrees90)+1;for(var I=1;I<e.root.totalNodes;I++){var M=e.preorderTraversal[e.root.preIndex+I];M.bx=M.parent.bx+M.branchLength*Math.cos(M.angle),M.by=M.parent.by+M.branchLength*Math.sin(M.angle),M.inverted=M.angle>n.Angles.Degrees90&&M.angle<=n.Angles.Degrees270,M.quarter=Math.floor(M.angle/n.Angles.Degrees90)+1}return u(e,o,i)}if(t===n.TreeTypes.Rectangular){for(var R=0,z=o;z<=i;z++){var _=e.postorderTraversal[z];if(_.angle=n.Angles.Degrees0,_.inverted=!1,_.bx=_.distanceFromRoot,_.isLeaf)_.by=R;else if(_.isCollapsed)_.by=R;else{var E=_.children[0].by,D=_.children[_.children.length-1].by;_.by=(D+E)/2}_.isHidden||!_.isLeaf&&!_.isCollapsed||(R+=1)}return u(e,o,i)}throw new Error(\"Invalid tree type\")}},function(e,t,r){\"use strict\";function n(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length-1,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"x\",o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"y\",a=Number.MAX_SAFE_INTEGER,i=Number.MAX_SAFE_INTEGER,u=Number.MIN_SAFE_INTEGER,s=Number.MIN_SAFE_INTEGER,l=t;l<=r;l++){var c=e[l];c[n]<a&&(a=c[n]),c[o]<i&&(i=c[o]),c[n]>u&&(u=c[n]),c[o]>s&&(s=c[o])}var f=(u+a)/2,d=(s+i)/2,p=u-a,h=s-i;return{min:[a,i],max:[u,s],centre:[f,d],width:p,height:h}}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";r.r(t);var n=r(55),o=r.n(n),a=r(47),i=[\"type\",\"data\"],u=r(30);t.default=function(e){performance.mark(\"parse\");var t=e;\"string\"==typeof e&&(t={type:\"newick\",data:e});var r=t,n=r.type,s=r.data,l=o()(r,i),c=null;if(\"newick\"===n||void 0===n)performance.mark(\"parse newick\"),c=u.parse_newick(s),performance.measure(\"  parse newick\",\"parse newick\");else{if(\"biojs\"!==n)throw new Error(\"Source type is not supported: \".concat(n));c=s}performance.mark(\"treeTraversal\");var f=Object(a.default)(c,l);return performance.measure(\"  treeTraversal\",\"treeTraversal\"),performance.measure(\"parse\",\"parse\"),f}},function(e,t,r){\"use strict\";function n(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return o(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var i,u=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return u=e.done,e},e:function(e){s=!0,i=e},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw i}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function a(e){for(var t=[],r=[e];r.length;){var n=r.pop();n.children&&Array.prototype.push.apply(r,n.children),t.push(n)}return t.reverse()}function i(e){for(var t=[],r=[e];r.length;){var n=r.shift();t.push(n),n.children&&Array.prototype.unshift.apply(r,n.children)}return t}function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.trimQuotes,o=void 0===r||r;performance.mark(\"getPostorderTraversal\");var u=a(e);performance.measure(\"    getPostorderTraversal\",\"getPostorderTraversal\"),performance.mark(\"getPreorderTraversal\");var s=i(e);performance.measure(\"    getPreorderTraversal\",\"getPreorderTraversal\");var l=u.every((function(e){return 0===(e.branchLength||e.branch_length||0)}));if(l){e.branchLength=0;for(var c=0;c<s.length;c++){var f=s[c];if(f.children){var d,p=n(f.children);try{for(p.s();!(d=p.n()).done;){var h=d.value;h.branchLength=f.branchLength+1}}catch(e){p.e(e)}finally{p.f()}}}}performance.mark(\"bottom-up traversal\");for(var g=0;g<u.length;g++){var v=u[g];if(v.postIndex=g,v.isLeaf=!Array.isArray(v.children),v.branchLength=Math.abs(v.branchLength||v.branch_length||0),delete v.branch_length,v.isLeaf&&\"string\"==typeof v.name&&(v.id=o?v.name.trim().replace(/^['\"]|['\"]$/g,\"\"):v.name,delete v.name),v.totalNodes=1,v.totalLeaves=1,v.totalSubtreeLength=0,!v.isLeaf){v.totalNodes=1,v.totalLeaves=0;var y,b=0,m=n(v.children);try{for(m.s();!(y=m.n()).done;){var x=y.value;v.totalNodes+=x.totalNodes,v.totalLeaves+=x.totalLeaves,x.totalSubtreeLength+x.branchLength>b&&(b=x.totalSubtreeLength+x.branchLength),x.parent=v}}catch(e){m.e(e)}finally{m.f()}v.totalSubtreeLength=b}}performance.measure(\"    bottom-up traversal\",\"bottom-up traversal\"),performance.mark(\"top-down traversal\");for(var O={},S=0;S<s.length;S++){var w=s[S];w.preIndex=S,w.id||(w.id=S.toString()),O[w.id]=w,w.visibleLeaves=w.totalLeaves,w.isCollapsed=!1,w.isHidden=!1}return performance.measure(\"    top-down traversal\",\"top-down traversal\"),{nodeById:O,rootNode:e,postorderTraversal:u,preorderTraversal:s}}r.r(t),r.d(t,\"default\",(function(){return u}))},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return S}));var n=r(6),o=r.n(n),a=r(8),i=r.n(a),u=r(9),s=r.n(u),l=r(15),c=r.n(l),f=r(10),d=r.n(f),p=r(11),h=r.n(p),g=r(3),v=r.n(g),y=r(7),b=r(16);function m(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function x(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?m(Object(r),!0).forEach((function(t){o()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):m(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function O(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=v()(e);if(t){var o=v()(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return h()(this,r)}}function S(e){return function(t){d()(n,t);var r=O(n);function n(){return i()(this,n),r.apply(this,arguments)}return s()(n,[{key:\"getPointFromEvent\",value:function(e){var t=this.getCenter(e);return!!this.isPointInBounds(t,e)&&t}},{key:\"calculateScaleDeltaFromWheelDelta\",value:function(e){var t=2/(1+Math.exp(-Math.abs(.01*e)));return e<0&&0!==t?1/t:t}},{key:\"_onWheel\",value:function(t){if(t.srcEvent.metaKey||t.srcEvent.ctrlKey){t.preventDefault();var r=this.getPointFromEvent(t);if(r){var o=this.calculateScaleDeltaFromWheelDelta(t.delta),a=Object(b.default)(o),i=e.getBranchZoom()+a;e.setBranchZoom(i,r)}return!0}if(t.srcEvent.altKey||t.srcEvent.shiftKey){t.preventDefault();var u=this.getPointFromEvent(t);if(u){var s=this.calculateScaleDeltaFromWheelDelta(t.delta),l=Object(b.default)(s),f=e.getStepZoom()+l;e.setStepZoom(f,u)}return!0}return c()(v()(n.prototype),\"_onWheel\",this).call(this,t)}},{key:\"zoomIn\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:64,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.getCanvasCentrePoint(),n=this.calculateScaleDeltaFromWheelDelta(t);this.zoom(n,r)}},{key:\"zoomOut\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:64,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.getCanvasCentrePoint(),n=this.calculateScaleDeltaFromWheelDelta(-t);this.zoom(n,r)}},{key:\"zoom\",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.getCanvasCentrePoint(),n=this.ControllerState;this._controllerState=new n(x(x({makeViewport:this.makeViewport},this.controllerStateProps),this._state));var o=this._controllerState.zoom({pos:r,scale:t});this.updateViewport(o,{transitionDuration:0},{isZooming:!0,isPanning:!0})}}]),n}(y.OrthographicController)}},function(e,t){function r(t){return\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?(e.exports=r=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=r=function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),r(t)}e.exports=r,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){\"use strict\";function n(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return o(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var i,u=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return u=e.done,e},e:function(e){s=!0,i=e},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw i}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function a(e,t,r){var n=e[t];e[t]=function(){for(var t=arguments.length,o=new Array(t),a=0;a<t;a++)o[a]=arguments[a];return r.call(e,n.bind(e),o)}}r.r(t),t.default=function(e,t,r){var o,i=n(t);try{for(i.s();!(o=i.n()).done;){var u=o.value;if(\"function\"!=typeof u)throw new Error(\"Invalid plugin\");u.call(e,e,a.bind(e,e),r)}}catch(e){i.e(e)}finally{i.f()}}},function(e,t){function r(t,n){return e.exports=r=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},e.exports.default=e.exports,e.exports.__esModule=!0,r(t,n)}e.exports=r,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){var n=r(52);e.exports=function(e,t){if(e){if(\"string\"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===r&&e.constructor&&(r=e.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(e):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){var n=r(51),o=r(56);function a(t,r,i){return o()?(e.exports=a=Reflect.construct,e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=a=function(e,t,r){var o=[null];o.push.apply(o,t);var a=new(Function.bind.apply(e,o));return r&&n(a,r.prototype),a},e.exports.default=e.exports,e.exports.__esModule=!0),a.apply(null,arguments)}e.exports=a,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){var n=r(90);e.exports=function(e,t){if(null==e)return{};var r,o,a=n(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){\"use strict\";function n(e,t,r){var n={id:e,isVisible:t,renderLayer:r};return this.layers.push(n),n}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return i}));var n=r(18);function o(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return a(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var i,u=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return u=e.done,e},e:function(e){s=!0,i=e},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw i}}}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function i(){var e,t=this.getGraphAfterLayout(),r=o(t.postorderTraversal);try{for(r.s();!(e=r.n()).done;){var a=e.value;a.children&&a.children.sort((function(e,t){return t.totalNodes-e.totalNodes}))}}catch(e){r.e(e)}finally{r.f()}this.setSource(Object(n.default)(t.root),this.props.source)}},function(e,t,r){var n=r(52);e.exports=function(e){if(Array.isArray(e))return n(e)},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){\"use strict\";r.r(t);var n=r(0);t.default=function(){switch(this.getTreeType()){case n.TreeTypes.Rectangular:return\"x\";case n.TreeTypes.Hierarchical:return\"y\";case n.TreeTypes.Circular:case n.TreeTypes.Radial:return\"xy\";default:return}}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(19);function o(e){var t=this.findNodeById(e);if(t){var r=Object(n.default)(this.props.collapsedIds,t.id);this.setProps({collapsedIds:r})}}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return i}));var n=r(18);function o(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return a(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var i,u=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return u=e.done,e},e:function(e){s=!0,i=e},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw i}}}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function i(){var e,t=this.getGraphAfterLayout(),r=o(t.postorderTraversal);try{for(r.s();!(e=r.n()).done;){var a=e.value;a.children&&a.children.sort((function(e,t){return e.totalNodes-t.totalNodes}))}}catch(e){r.e(e)}finally{r.f()}this.setSource(Object(n.default)(t.root),this.props.source)}},function(e,t,r){\"use strict\";function n(){this.deck.finalize(),this.deck=void 0,delete this.deck,this.cache.clear(),this.cache=void 0,delete this.cache,this.view=void 0,delete this.view,this.layers=void 0,delete this.layers}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";function n(e,t){return JSON.stringify(this.props,t,e)}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";function n(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.getGraphAfterLayout(),n=e?this.findNodeById(e):r.root,o=t.excludeCollapsed,a=void 0===o||o,i=[],u=n.postIndex-n.totalNodes+1;u<n.postIndex;u++){var s=r.postorderTraversal[u];if(s.isLeaf)i.push(\"\".concat(s.label||s.id,\":\").concat(s.branchLength));else if(a&&s.isCollapsed)i.push(\"[\".concat(s.totalLeaves,\" hidden \").concat(1===s.totalLeaves?\"leaf\":\"leaves\",\"]:\").concat(s.branchLength));else{var l=i.splice(i.length-s.children.length,s.children.length);i.push(\"(\".concat(l.join(\",\"),\"):\").concat(s.branchLength))}}return\"(\".concat(i.join(\",\"),\");\")}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";function n(){this.deck.setProps({glOptions:{preserveDrawingBuffer:!0}}),this.deck.redraw(!0);var e=this.deck.canvas.toDataURL();return this.deck.setProps({glOptions:void 0}),this.deck.redraw(!0),e}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return O}));var n=r(13),o=r.n(n),a=r(31),i=r(32),u=r(33),s=r(22),l=r(34),c=r(35),f=r(36),d=r(37),p=r(40),h=r(42),g=r(21),v=r(0);function y(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return b(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return b(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,i=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){u=!0,a=e},f:function(){try{i||null==r.return||r.return()}finally{if(u)throw a}}}}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function m(e,t,r,n){return{x:e+r*Math.cos(n),y:t+r*Math.sin(n)}}function x(e,t,r,n,o){var a=m(e,t,r,o),i=m(e,t,r,n),u=o-n<=Math.PI?\"0\":\"1\",s=[\"M\",a.x,a.y,\"A\",r,r,0,u,0,i.x,i.y];return'<path fill=\"none\" d=\"'.concat(s.join(\" \"),'\" />')}function O(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.getGraphAfterLayout(),r=this.getCanvasSize(),n=this.getTreeType(),b=this.getNodeSize(),m=.5*b,O=[],S=this.getDrawingArea(),w=[S.width/2+S.left,S.height/2+S.top];O.push('<svg viewBox=\"0 0 '.concat(r.width,\" \").concat(r.height,'\" xmlns=\"http://www.w3.org/2000/svg\">\\n')),O.push('<g transform=\"translate('.concat(w.join(\" \"),')\" >\\n'));var j=this.getStrokeWidth(),A=Object(g.a)(Object(p.a)(this));O.push('<g stroke=\"'.concat(A,'\" stroke-width=\"').concat(j,'\" >\\n'));for(var T=t.firstIndex+1;T<t.lastIndex;T++){var P=t.preorderTraversal[T];if(n===v.TreeTypes.Circular){if(O.push('<line x1=\"'.concat(P.x,'\" y1=\"').concat(P.y,'\" x2=\"').concat(P.cx,'\" y2=\"').concat(P.cy,'\"  />\\n')),P.children&&P.children.length&&!P.isCollapsed){var C=P.children[0],L=P.children[P.children.length-1];O.push(x(t.root.x,t.root.y,P.dist,C.angle,L.angle))}}else n===v.TreeTypes.Diagonal||n===v.TreeTypes.Radial?O.push('<line x1=\"'.concat(P.x,'\" y1=\"').concat(P.y,'\" x2=\"').concat(P.parent.x,'\" y2=\"').concat(P.parent.y,'\"  />\\n')):n===v.TreeTypes.Hierarchical?(O.push('<line x1=\"'.concat(P.x,'\" y1=\"').concat(P.y,'\" x2=\"').concat(P.x,'\" y2=\"').concat(P.parent.y,'\"  />\\n')),O.push('<line x1=\"'.concat(P.x,'\" y1=\"').concat(P.parent.y,'\" x2=\"').concat(P.parent.x,'\" y2=\"').concat(P.parent.y,'\"  />\\n'))):n===v.TreeTypes.Rectangular&&(O.push('<line x1=\"'.concat(P.x,'\" y1=\"').concat(P.y,'\" x2=\"').concat(P.parent.x,'\" y2=\"').concat(P.y,'\"  />\\n')),O.push('<line x1=\"'.concat(P.parent.x,'\" y1=\"').concat(P.y,'\" x2=\"').concat(P.parent.x,'\" y2=\"').concat(P.parent.y,'\"  />\\n')));P.isCollapsed&&(T+=P.totalNodes-1)}O.push(\"</g>\\n\");var k=this.props.showShapeBorders,I=\"\",M=\"\";k&&(I=Object(u.a)(this),M=Object(g.a)(Object(s.a)(this))),O.push(\"<g>\\n\");for(var R=t.firstIndex;R<t.lastIndex;R++){var z=t.preorderTraversal[R];z.isLeaf&&z.shape&&!z.isHidden&&(O.push(Object(h.default)(z.shape,z.x,z.y,m,Object(g.a)(z.fillColour),M,I)),O.push(\"\\n\")),z.isCollapsed&&(R+=z.totalNodes-1)}if(O.push(\"</g>\\n\"),this.props.showLabels&&this.props.showLeafLabels){var _=Object(a.a)(this),E=Object(i.a)(this),D=this.getFontFamily(),F=this.getFontSize();O.push('<g font-family=\"'.concat(D.replace(/\"/g,\"'\"),'\" font-size=\"').concat(F,'\">\\n'));var N,W=y(_);try{for(W.s();!(N=W.n()).done;){var B=N.value,H=E(B),Z=o()(H,2),G=Z[0],U=Z[1],V=B.angle/v.Angles.Degrees360*360+(B.inverted?180:0);O.push('<text x=\"'.concat(G,'\" y=\"').concat(U,'\" text-anchor=\"').concat(B.inverted?\"end\":\"start\",'\" dominant-baseline=\"middle\" transform=\"rotate(').concat(V,\",\").concat(G,\",\").concat(U,')\">').concat(B.label,\"</text>\\n\"))}}catch(e){W.e(e)}finally{W.f()}O.push(\"</g>\\n\")}var q,Y=this.getPixelOffsets().length,X=this.getBlockSize(),K=X/2,J=this.getStepScale(),$=!this.isOrthogonal()||J>X?X:J,Q=$/2,ee=Object(l.a)(this),te=y(ee);try{for(te.s();!(q=te.n()).done;){var re=q.value,ne=re.node.angle/v.Angles.Degrees360*360+(re.node.inverted?180:0),oe=re.position[0]+(re.offsetX+Y)*Math.cos(re.node.angle),ae=re.position[1]+(re.offsetX+Y)*Math.sin(re.node.angle);O.push('<rect x=\"'.concat(oe-K,'\" y=\"').concat(ae-Q,'\" width=\"').concat(X,'\" height=\"').concat($,'\" transform=\"rotate(').concat(ne,\",\").concat(oe,\",\").concat(ae,')\" fill=\"').concat(Object(g.a)(re.colour),'\" />\\n'))}}catch(e){te.e(e)}finally{te.f()}if(this.hasMetadataHeaders()){var ie=Object(c.a)(this),ue=this.getFontFamily(),se=Object(d.a)(this),le=Object(f.a)(this);O.push('<g font-family=\"'.concat(ue.replace(/\"/g,\"'\"),'\" font-size=\"').concat(se,'\">\\n'));var ce,fe=y(ie);try{for(fe.s();!(ce=fe.n()).done;){var de=ce.value,pe=le(de),he=o()(pe,2),ge=he[0],ve=he[1],ye=o()(de.position,2),be=ye[0],me=ye[1],xe=be+ge,Oe=me+ve,Se=de.angle+180;O.push('<text x=\"'.concat(xe,'\" y=\"').concat(Oe,'\" text-anchor=\"').concat(de.inverted?\"end\":\"start\",'\" dominant-baseline=\"middle\" transform=\"rotate(').concat(Se,\",\").concat(xe,\",\").concat(Oe,')\">').concat(de.text,\"</text>\\n\"))}}catch(e){fe.e(e)}finally{fe.f()}O.push(\"</g>\\n\")}return O.push(\"</g>\\n\"),O.push(\"</svg>\\n\"),e?new Blob(O,{type:\"image/svg+xml\"}):(O.centre=w,O)}},function(e,t){e.exports=function(e){if(Array.isArray(e))return e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e,t){var r=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=r){var n,o,a=[],i=!0,u=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){u=!0,o=e}finally{try{i||null==r.return||r.return()}finally{if(u)throw o}}return a}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){\"use strict\";function n(e){var t,r=this.getGraphAfterLayout();\"string\"==typeof e||\"number\"==typeof e?t=e:e&&\"id\"in e&&(t=e.id);var n=r.ids[t];return null!=n?n:void 0}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(){this.setProps({branchZoom:n.a.branchZoom,centre:n.a.centre,stepZoom:n.a.stepZoom,zoom:n.a.zoom})}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return a}));var n=r(0),o=r(1);function a(){switch(this.getTreeType()){case n.TreeTypes.Circular:case n.TreeTypes.Hierarchical:case n.TreeTypes.Rectangular:return this.props.alignLabels||o.a.alignLabels;case n.TreeTypes.Diagonal:case n.TreeTypes.Radial:return!1;default:return}}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(){var e;return null!==(e=this.props.blockHeaderFontSize)&&void 0!==e?e:n.a.blockHeaderFontSize}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(){return this.props.blockPadding||n.a.blockPadding}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(){return this.props.blockSize||n.a.blockSize}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return s}));var n=r(0),o=r(2),a=r(12),i=Object(o.default)((function(e){return e.getGraphBeforeLayout()}),(function(e){return e.getTreeType()}),(function(e){return e.getDrawingArea()}),(function(e,t,r){if(e.root.totalSubtreeLength>0)switch(t){case n.TreeTypes.Diagonal:case n.TreeTypes.Rectangular:return r.width/e.root.totalSubtreeLength;case n.TreeTypes.Hierarchical:return r.height/e.root.totalSubtreeLength;case n.TreeTypes.Circular:case n.TreeTypes.Radial:var o=e.width,a=e.height;return r.width/o>r.height/a?r.height/a:r.width/o}throw new Error(\"Cannot compute default branch scale\")}));i.displayName=\"branchRatio\";var u=Object(o.default)(i,(function(e){return e.getBranchZoom()}),(function(e,t){return e*Object(a.default)(t)}));function s(){return u(this)}u.displayName=\"branch-scale\"},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(){var e;return null!==(e=this.props.branchZoom)&&void 0!==e?e:n.a.branchZoom}},function(e,t,r){\"use strict\";function n(){return[this.props.size.width/2,this.props.size.height/2]}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";r.r(t);var n=r(1);t.default=function(){return this.props.size||n.a.size}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return i}));var n=r(1),o=r(2),a=Object(o.default)((function(e){return e.getCanvasSize()}),(function(e){return e.props.treeToCanvasRatio||n.a.treeToCanvasRatio}),(function(e){return e.getPadding()}),(function(e){return e.getPixelOffsets()}),(function(e,t,r,n){var o=r+n.left,a=r+n.top,i=e.width-r-n.right,u=e.height-r-n.bottom,s=i-o;if(s<e.width*t){var l=e.width*(.5-t/2),c=e.width*(.5+t/2);o>l&&i<c?(o=l,i=c):o>l?o=e.width*t:i<c&&(i=e.width*t),s=i-o}var f=u-a;if(f<e.height*t){var d=e.height*(.5-t/2),p=e.height*(.5+t/2);a>d&&u<p?(a=d,u=p):a>d?a=e.height*t:u<p&&(u=e.height*t),f=u-a}return{width:s,height:f,left:o,top:a,right:i,bottom:u}}));function i(){return a(this)}a.displayName=\"drawing-area\"},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return a}));var n=r(1),o=r(5);function a(){return Object(o.default)(this.props.fillColour||n.a.fillColour)}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(){return this.props.fontFamily||n.a.fontFamily}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(){return this.props.fontSize||n.a.fontSize}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return f}));var n=r(6),o=r.n(n),a=r(0),i=r(2);function u(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?u(Object(r),!0).forEach((function(t){o()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):u(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t,r){return{min:[e.min[0]*t,e.min[1]*r],max:[e.max[0]*t,e.max[1]*r]}}var c=Object(i.default)((function(e){return e.getGraphBeforeLayout()}),(function(e){return e.getTreeType()}),(function(e){return e.getBranchScale()}),(function(e){return e.getStepScale()}),(function(e,t,r,n){var o=e.root.postIndex-e.root.totalNodes+1,i=e.root.postIndex;if(t===a.TreeTypes.Circular){e.root.x=e.root.bx*r,e.root.y=e.root.by*r;for(var u=0;u<e.root.totalNodes;u++){var c=e.preorderTraversal[e.root.preIndex+u];c.x=c.bx*r,c.y=c.by*r,c.dist=c.distanceFromRoot*r,c.cx=c.bcx*r,c.cy=c.bcy*r}return s(s({},e),{},{bounds:l(e.bounds,r,r)})}if(t===a.TreeTypes.Diagonal){e.root.x=e.root.bx*n,e.root.y=e.root.by*n;for(var f=1;f<e.root.totalNodes;f++){var d=e.preorderTraversal[e.root.preIndex+f];d.x=d.bx*n,d.y=d.by*n}return s(s({},e),{},{bounds:l(e.bounds,r,n)})}if(t===a.TreeTypes.Hierarchical){for(var p=o;p<=i;p++){var h=e.postorderTraversal[p];h.x=h.bx*n,h.y=h.by*r}return s(s({},e),{},{bounds:l(e.bounds,r,n)})}if(t===a.TreeTypes.Radial){e.root.x=e.root.bx*r,e.root.y=e.root.by*r;for(var g=1;g<e.root.totalNodes;g++){var v=e.preorderTraversal[e.root.preIndex+g];v.x=v.bx*r,v.y=v.by*r}return s(s({},e),{},{bounds:l(e.bounds,r,r)})}if(t===a.TreeTypes.Rectangular){for(var y=o;y<=i;y++){var b=e.postorderTraversal[y];b.x=b.bx*r,b.y=b.by*n}return s(s({},e),{},{bounds:l(e.bounds,r,n)})}throw new Error(\"Invalid tree type\")}));function f(){return c(this)}c.displayName=\"graph-after-layout\"},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return c}));var n=r(6),o=r.n(n),a=r(2),i=r(44);function u(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?u(Object(r),!0).forEach((function(t){o()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):u(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var l=Object(a.default)((function(e){return e.getGraphWithoutLayout()}),(function(e){return e.getTreeType()}),(function(e){return e.getAlignLeafLabels()&&e.hasLeafLabels()}),(function(e,t,r){var n=Object(i.default)(e,t,r);return s(s({},e),{},{width:2*Math.max(-n.min[0],n.max[0]),height:2*Math.max(-n.min[1],n.max[1]),bounds:n})}));function c(){return l(this)}l.displayName=\"graph-before-layout\"},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return v}));var n=r(6),o=r.n(n),a=r(2),i=r(46),u=r(38);function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){o()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return f(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return f(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,i=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){u=!0,a=e},f:function(){try{i||null==r.return||r.return()}finally{if(u)throw a}}}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var d=Object(a.default)((function(e){return e.props.source}),(function(e){var t=Object(i.default)(e),r=t.nodeById,n=t.rootNode;return{ids:r,postorderTraversal:t.postorderTraversal,preorderTraversal:t.preorderTraversal,source:e,originalRoot:n,originalSource:e.original||e}}));d.displayName=\"parse-source\";var p=Object(a.default)(d,(function(e){return e.props.rotatedIds}),(function(e,t){for(var r=new Set(t||[]),n=0;n<e.postorderTraversal.length;n++){var o=e.preorderTraversal[n];o.isRotated&&!r.has(o.id)?(Object(u.default)(e,o),o.isRotated=!1):!o.isRotated&&r.has(o.id)&&(Object(u.default)(e,o),o.isRotated=!0)}return r}));p.displayName=\"rotate-nodes\";var h=Object(a.default)(d,(function(e){return e.props.collapsedIds}),(function(e,t){for(var r=new Set(t),n=1;n<e.postorderTraversal.length;n++){var o=e.preorderTraversal[n];o.isCollapsed=r.has(o.id),o.isHidden=o.parent.isCollapsed||o.parent.isHidden}for(var a=0;a<e.postorderTraversal.length;a++){var i=e.postorderTraversal[a];if(i.isLeaf)i.visibleLeaves=1;else if(i.isCollapsed)i.visibleLeaves=1;else{i.visibleLeaves=0;var u,s=c(i.children);try{for(s.s();!(u=s.n()).done;){var l=u.value;i.visibleLeaves+=l.visibleLeaves}}catch(e){s.e(e)}finally{s.f()}}}return r}));h.displayName=\"collapse-nodes\";var g=Object(a.default)(d,(function(e){return e.props.rootId}),p,h,(function(e,t){var r=e.ids[t]||e.preorderTraversal[0];r.distanceFromRoot=0;for(var n=1;n<r.totalNodes;n++){var o=e.preorderTraversal[r.preIndex+n];o.distanceFromRoot=o.parent.distanceFromRoot+o.branchLength}for(var a=r.preIndex,i=r.preIndex+r.totalNodes,u=[],s=1;s<r.totalNodes;s++){var c=e.preorderTraversal[r.preIndex+s];c.isLeaf&&u.push(c),c.isCollapsed&&(s+=c.totalNodes-1)}return l(l({},e),{},{root:r,firstIndex:a,lastIndex:i,leaves:u})}));function v(){return g(this)}g.displayName=\"graph-without-layout\"},function(e,t){e.exports=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return p}));var n=r(6),o=r.n(n),a=r(1),i=r(2),u=r(5);function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return c(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return c(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,i=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){u=!0,a=e},f:function(){try{i||null==r.return||r.return()}finally{if(u)throw a}}}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var f={},d=Object(i.default)((function(e){return e.getGraphAfterLayout()}),(function(e){return e.props.styles||a.a.styles}),(function(e){return e.props.styleNodeEdges||a.a.styleNodeEdges}),(function(e){return e.props.showPiecharts||a.a.showPiecharts}),(function(e){var t;return null!==(t=e.props.nodeShape)&&void 0!==t?t:a.a.nodeShape}),(function(e){return e.getFillColour()}),(function(e){return e.getStrokeColour()}),(function(e,t,r,n,a,i,c){for(var d=e.root.preIndex,p=e.root.preIndex+e.root.totalNodes,h=d;h<p;h++){var g=e.preorderTraversal[h];if(g.isLeaf){var v=t[g.id]||f;g.shape=void 0===v.shape?a:v.shape,g.fillColour=v.fillColour?Object(u.default)(v.fillColour):i,g.strokeColour=r&&v.strokeColour?Object(u.default)(v.strokeColour):c,g.label=void 0===v.label?g.id:v.label}!n&&g.isCollapsed&&(h+=g.totalNodes-1)}if(r)for(var y=e.root.postIndex-e.root.totalNodes+1,b=e.root.postIndex,m=y;m<=b;m++){var x=e.postorderTraversal[m];if(!x.isLeaf){x.strokeColour=x.children[0].strokeColour;var O,S=l(x.children);try{for(S.s();!(O=S.n()).done;){if(O.value.strokeColour!==x.strokeColour){x.strokeColour=c;break}}}catch(e){S.e(e)}finally{S.f()}}}return function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){o()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({},e)}));function p(){return d(this)}d.displayName=\"graph-with-styles\"},function(e,t,r){\"use strict\";function n(){var e;return void 0!==(null!==(e=this.props.highlightedId)&&void 0!==e?e:void 0)?this.getGraphAfterLayout().ids[this.props.highlightedId]:null}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(0);function o(){var e=this.getTreeType(),t=this.getCanvasSize(),r=this.getNodeSize(),o=this.getStepScale();switch(e){case n.TreeTypes.Hierarchical:return t.width/(2*o);case n.TreeTypes.Diagonal:case n.TreeTypes.Rectangular:return t.height/(2*o);case n.TreeTypes.Radial:case n.TreeTypes.Circular:return Math.max(t.width,t.height)/r}return Number.MAX_SAFE_INTEGER}},function(e,t,r){\"use strict\";r.r(t);var n=r(16);t.default=function(){return Object(n.default)(this.getMaxScale())}},function(e,t,r){\"use strict\";function n(){return this.getBlockSize()+this.getBlockPadding()}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(){var e;return null!==(e=this.props.minScale)&&void 0!==e?e:n.a.minScale}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(16);function o(){return Object(n.default)(this.getMinScale())}},function(e,t,r){\"use strict\";r.r(t);var n=r(1);t.default=function(){return this.props.nodeSize||n.a.nodeSize}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(){var e;return null!==(e=this.props.padding)&&void 0!==e?e:n.a.padding}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return d}));var n=r(0),o=r(2),a=r(39);function i(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return u(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return u(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,i=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){s=!0,a=e},f:function(){try{i||null==r.return||r.return()}finally{if(s)throw a}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var s=Object(o.default)((function(e){return e.getGraphWithoutLayout()}),(function(e){return e.props.styles||n.EmptyObject}),(function(e,t){for(var r=\"\",n=0;n<e.root.totalNodes;n++){var o=e.preorderTraversal[e.root.preIndex+n];if(o.isLeaf&&!o.isHidden){var a=(o.id in t?t[o.id].label:null)||o.label||o.id;a.length>r.length&&(r=a)}}return r}));s.displayName=\"longest-label\";var l=Object(o.default)(s,(function(e){return e.getFontFamily()}),(function(e){return e.getFontSize()}),a.default);l.displayName=\"max-label-width\";var c=Object(o.default)((function(e){return e.props.blocks||n.EmptyArray}),(function(e){return e.getFontFamily()}),(function(e){return e.getBlockHeaderFontSize()}),(function(e,t,r){var n,o=0,u=i(e);try{for(u.s();!(n=u.n()).done;){var s=n.value;o=Math.max(o,Object(a.default)(s,t,r))}}catch(e){u.e(e)}finally{u.f()}return o}));c.metadataTotalLengthMemo=\"metadata-headers-length\";l.metadataTotalLengthMemo=\"metadata-total-length\";var f=Object(o.default)((function(e){return e.getTreeType()}),(function(e){return e.getShowShapes()?e.getNodeSize():0}),(function(e){return e.hasLeafLabels()?l(e):0}),(function(e){return e.hasMetadataHeaders()?c(e):0}),(function(e){return e.hasMetadata()?function(e){return e.getMetadataColumnWidth()*(e.props.blocks||n.EmptyArray).length}(e):0}),(function(e,t,r,o,a){var i=0;i+=t,i+=r,i+=a;var u=0,s=0,l=0,c=0;switch(e){case n.TreeTypes.Rectangular:case n.TreeTypes.Diagonal:l=Math.max(o,t/2),s=i,c=t/2;break;case n.TreeTypes.Hierarchical:u=Math.max(o,t/2),c=i,l=t/2;break;case n.TreeTypes.Circular:case n.TreeTypes.Radial:u=i,l=i,s=i,c=i}return{length:t+r,left:u,top:l,right:s,bottom:c}}));function d(){return f(this)}f.displayName=\"pixel-offsets\"},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(12);function o(){var e,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t?Object(n.default)(this.getZoom()):null!==(e=this.props.fixedScale)&&void 0!==e?e:Object(n.default)(this.getZoom())}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(){var e;return null!==(e=this.props.showShapes)&&void 0!==e?e:n.a.showShapes}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return s}));var n=r(0),o=r(2),a=r(12),i=Object(o.default)((function(e){return e.getGraphWithoutLayout()}),(function(e){return e.getTreeType()}),(function(e){return e.getDrawingArea()}),(function(e,t,r){if(t===n.TreeTypes.Rectangular||t===n.TreeTypes.Diagonal)return r.height/e.root.visibleLeaves;if(t===n.TreeTypes.Hierarchical)return r.width/e.root.visibleLeaves;if(t===n.TreeTypes.Circular||t===n.TreeTypes.Radial)return n.Angles.Degrees360/e.root.visibleLeaves;throw new Error(\"Invalid tree type\")}));i.displayName=\"step-ratio\";var u=Object(o.default)(i,(function(e){return e.getStepZoom()}),(function(e,t){return e*Object(a.default)(t)}));function s(){return u(this)}u.displayName=\"step-scale\"},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(){var e;return null!==(e=this.props.stepZoom)&&void 0!==e?e:n.a.stepZoom}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(0);function o(){switch(this.getTreeType()){case n.TreeTypes.Hierarchical:return\"x\";case n.TreeTypes.Diagonal:case n.TreeTypes.Rectangular:return\"y\";default:return}}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return a}));var n=r(1),o=r(5);function a(){var e;return Object(o.default)(null!==(e=this.props.strokeColour)&&void 0!==e?e:n.a.strokeColour)}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(){var e;return null!==(e=this.props.strokeWidth)&&void 0!==e?e:n.a.strokeWidth}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(){return this.props.type||n.a.type}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return u}));var n=r(1),o=r(2),a=Object(o.default)((function(e){var t;return null!==(t=e.props.centre)&&void 0!==t?t:n.a.centre}),(function(e){return e.getCanvasSize()}),(function(e){return e.getDrawingArea()}),(function(e,t,r){var n=[t.width/2,t.height/2],o=[r.width/2+r.left,r.height/2+r.top],a=[n[0]-o[0],n[1]-o[1]];return[-((e[0]-.5)*t.width-a[0]),-((e[1]-.5)*t.height-a[1])]})),i=Object(o.default)(a,(function(e){var t;return null!==(t=e.props.zoom)&&void 0!==t?t:n.a.zoom}),(function(e){return e.getMaxZoom()}),(function(e){return e.getMinZoom()}),(function(e,t,r,n){return{target:e,zoom:t,maxZoom:r,minZoom:n}}));function u(){return i(this)}},function(e,t,r){\"use strict\";function n(){var e=this.getGraphAfterLayout().bounds,t=this.getPixelOffsets(),r=this.getScale();return{min:[e.min[0]-t.left/r,e.min[1]-t.top/r],max:[e.max[0]+t.right/r,e.max[1]+t.bottom/r]}}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(){var e;return null!==(e=this.props.zoom)&&void 0!==e?e:n.a.zoom}},function(e,t,r){\"use strict\";function n(e,t){var r=this.pickNodeFromLayer(e);this.selectNode(r,t.srcEvent.metaKey||t.srcEvent.ctrlKey)}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";r.r(t);var n=r(20);t.default=function(e,t){var r=Object(n.default)(this,\"highlight\"),o=Object(n.default)(this,\"tooltip\");if(r||o){var a=this.pickNodeFromLayer(e);if(r&&this.highlightNode(a,t.srcEvent.metaKey||t.srcEvent.ctrlKey),o){var i=\"\";if(a){var u,s,l=null!==(u=a.label)&&void 0!==u?u:a.id;if(a.isLeaf?i=l:(i+=\"Leaves in subtree: \".concat(a.totalLeaves,\".\"),a.label&&(i+=\" Subtree label: \".concat(a.label,\".\"))),e.object.columnName&&e.object.block)i+=\". \".concat(e.object.columnName,\": \").concat(null!==(s=e.object.block.label)&&void 0!==s?s:e.object.block.colour,\".\")}this.setTooltip(i)}}}},function(e,t,r){\"use strict\";function n(){return this.props.showLabels&&this.props.showLeafLabels}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";function n(){return!!this.props.metadata&&this.props.blocks&&this.props.blocks.length}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(0);function o(){if(this.hasMetadata()&&this.props.showLabels&&this.props.showBlockHeaders){var e=this.getTreeType();return e===n.TreeTypes.Diagonal||this.props.alignLabels&&(e===n.TreeTypes.Rectangular||e===n.TreeTypes.Hierarchical)}return!1}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(){var e;return this.props.showLabels&&(null!==(e=this.props.showBlockLabels)&&void 0!==e?e:n.a.showBlockLabels)}},function(e,t,r){\"use strict\";function n(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,r=null!==t?this.findNodeById(t):null,n=r&&!r.isHidden?r.id:null;(null!==(e=this.props.highlightedId)&&void 0!==e?e:null)!==n&&this.setProps({highlightedId:n},\"hover\")}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";r.r(t),t.default=function(e,t){this.setProps(JSON.parse(e,t))}},function(e,t,r){var n=r(3);e.exports=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=n(e)););return e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){\"use strict\";function n(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=this.getCanvasSize(),n=e[0]>=t&&e[0]<=r.width-t&&e[1]>=t&&e[1]<=r.height-t;return n}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(0);function o(){switch(this.getTreeType()){case n.TreeTypes.Diagonal:case n.TreeTypes.Hierarchical:case n.TreeTypes.Rectangular:return!0;case n.TreeTypes.Circular:case n.TreeTypes.Radial:return!1;default:throw new Error(\"Invalid tree type\")}}},function(e,t,r){\"use strict\";function n(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=this.projectPoint(e);return this.isCanvasPointOnScreen(r,t)}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";r.r(t);var n=r(18);function o(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return a(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var i,u=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return u=e.done,e},e:function(e){s=!0,i=e},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw i}}}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}t.default=function(){var e,t=this.getGraphAfterLayout(),r=[],a=o(t.leaves);try{for(a.s();!(e=a.n()).done;){for(var i=e.value,u=[],s=i;s.parent;)u.unshift(s.parent),s=s.parent;r.push(u)}}catch(e){a.e(e)}finally{a.f()}for(var l,c,f=0,d=0;d<t.leaves.length;d++)for(var p=d+1;p<t.leaves.length;p++){for(var h=t.leaves[d],g=t.leaves[p],v=void 0,y=0;y<r[d].length&&y<r[p].length&&r[d][y]===r[p][y];y++)v=r[d][y];var b=h.distanceFromRoot+g.distanceFromRoot-2*v.distanceFromRoot;b>f&&(f=b,l=h,c=g)}var m=f/2,x=l.distanceFromRoot>m?l:c,O=r[t.leaves.indexOf(x)];O.push(x);var S,w,j=x.distanceFromRoot-m,A=o(O);try{for(A.s();!(w=A.n()).done;){var T=w.value;if(T.distanceFromRoot>j){S=T;break}}}catch(e){A.e(e)}finally{A.f()}var P={branchLength:0,children:[]};S.branchLength=S.parent.distanceFromRoot-j,function e(t,r,n,a){var i={branchLength:a.branchLength,children:[],parent:n};n.children.push(i);var u,s=o(a.parent.children);try{for(s.s();!(u=s.n()).done;){var l=u.value;l!==a&&i.children.push(l)}}catch(e){s.e(e)}finally{s.f()}a.parent.parent&&a.parent!==r&&e(t,r,i,a.parent)}(this,t.root,P,S),P.children.push(S),S.branchLength=S.distanceFromRoot-j,S.parent=P;var C={type:\"newick\",original:this.props.source,data:Object(n.default)(P)};this.setSource(C)}},function(e,t,r){\"use strict\";function n(e,t){var r=this.deck.pickObject({x:e,y:t});return r?this.pickNodeFromLayer(r):null}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";function n(e){var t,r,n=e.layer,o=e.object;return n&&o&&(\"shapes\"===n.id||\"edges\"===n.id||\"leaf-labels\"===n.id?r=o:\"piecharts\"===n.id||\"metadata\"===n.id?r=o.node:this.log&&this.log(\"Unknown layer \".concat(n.id))),null!==(t=r)&&void 0!==t?t:null}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";function n(e,t){var r=this.getView(this).target,n=null!=t?t:this.getScale(),o=this.getCanvasCentrePoint();return[(e[0]-r[0])*n+o[0],(e[1]-r[1])*n+o[1]]}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";function n(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return o(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var i,u=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return u=e.done,e},e:function(e){s=!0,i=e},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw i}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}r.r(t),t.default=function(){if(this.deferred.count>0)return this.deferred.render=!0,void(this.log&&this.log(\"render is suspended\"));var e=performance.now();this.getGraphAfterLayout();var t,r=performance.now(),o=[],a=n(this.layers);try{for(a.s();!(t=a.n()).done;){var i=t.value;if(!0===i.isVisible||i.isVisible(this.props)){i.renderer||(i.renderer=i.renderLayer(this));var u=i.renderer(this);o.push(u)}else i.renderer=null}}catch(e){a.e(e)}finally{a.f()}var s=this.getView(),l=performance.now();this.view.style.width=\"\".concat(this.props.size.width,\"px\"),this.view.style.height=\"\".concat(this.props.size.height,\"px\"),this.deck.setProps({viewState:s,width:this.props.size.width,height:this.props.size.height,layers:o});var c=performance.now();this.log&&this.log(\"layout took \",r-e,\" milliseconds.\",\"\\nrender took \",l-r,\" milliseconds.\",\"\\nupdate took \",c-l,\" milliseconds.\")}},function(e,t,r){\"use strict\";r.r(t);var n=r(25);function o(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return a(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var i,u=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return u=e.done,e},e:function(e){s=!0,i=e},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw i}}}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function i(e){var t,r=[],a=o(Object(n.default)(e));try{for(a.s();!(t=a.n()).done;){var i=t.value;if(i.isLeaf)r.push(\"\".concat(i.id,\":\").concat(i.branchLength));else if(i!==e){var u=r.splice(r.length-i.children.length,i.children.length);r.push(\"(\".concat(u.join(\",\"),\")\").concat(i.name||\"\",\":\").concat(i.branchLength))}}}catch(e){a.e(e)}finally{a.f()}return\"(\".concat(r.join(\",\"),\");\")}t.default=function(e){var t=this.findNodeById(e),r=this.getGraphAfterLayout();if(t.parent){var n={branchLength:0,children:[]};!function e(t,r,n,a){var i={branchLength:a.branchLength,children:[],parent:n,name:a.name};n.children.push(i);var u,s=o(a.parent.children);try{for(s.s();!(u=s.n()).done;){var l=u.value;l!==a&&i.children.push(l)}}catch(e){s.e(e)}finally{s.f()}a.parent.parent&&a.parent!==r&&e(t,r,i,a.parent)}(this,r.root,n,t),n.children.push(t);var a={type:\"newick\",original:this.props.source,data:i(n)};this.setSource(a)}}},function(e,t,r){\"use strict\";r.r(t),t.default=function(e,t){this.setProps({size:{width:e,height:t}})}},function(e,t,r){\"use strict\";r.r(t),t.default=function(){this.deferred.count>0&&(this.deferred.count-=1),0===this.deferred.count&&this.deferred.render&&(this.render(),this.deferred.render=!1)}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(19);function o(e){var t=this.findNodeById(e);t&&this.setProps({rotatedIds:Object(n.default)(this.props.rotatedIds,t.id)})}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return u}));var n=r(0);function o(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return a(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var i,u=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return u=e.done,e},e:function(e){s=!0,i=e},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw i}}}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function i(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(r&&e.length){var a,i=new Set(e),u=o(t);try{for(u.s();!(a=u.n()).done;){var s=a.value;i.add(s)}}catch(e){u.e(e)}finally{u.f()}return Array.from(i)}return t.length?t:n.EmptyArray}function u(e,t){e&&Array.isArray(e)&&this.setProps({selectedIds:i(this.props.selectedIds,e,t)})}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return a}));var n=r(1),o=r(19);function a(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=e?this.findNodeById(e):null;if(r&&r.isLeaf){var a=Object(o.default)(this.props.selectedIds,r.id,t);this.setProps({selectedIds:a})}else r||this.setProps({selectedIds:n.a.selectedIds})}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return i}));var n=r(1),o=r(28),a=r(12);function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getCanvasCentrePoint(),r=this.branchZoomingAxis();if(r){var i=null!=e?e:n.a.branchZoom;if(t){var u,s=null!==(u=this.props.branchZoom)&&void 0!==u?u:n.a.branchZoom,l=Object(a.default)(s),c=Object(a.default)(i),f=Object(o.default)(this,l,c,t,r);this.setProps({centre:f,branchZoom:i})}else this.setProps({branchZoom:i})}}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return u}));var n=r(6),o=r.n(n);function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t){e&&(this.props=Object.freeze(i(i({},this.props),e))),this.render()}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return l}));var n=r(6),o=r.n(n),a=r(0),i=r(1);function u(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?u(Object(r),!0).forEach((function(t){o()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):u(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a.EmptyObject,r=this.findNodeById(e);this.setProps(s({rootId:r?r.id:null,centre:i.a.centre,branchZoom:i.a.branchZoom,stepZoom:i.a.stepZoom,zoom:i.a.zoom},t))}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return a}));var n=r(1),o=r(16);function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getCanvasCentrePoint(),r=null!=e?e:n.a.scale,a=Object(o.default)(r);this.setZoom(a,t)}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(e,t){var r=e;t&&(r={type:\"newick\",original:t,data:e}),this.setProps({source:r,rootId:n.a.rootId,collapsedIds:n.a.collapsedIds,rotatedIds:n.a.rotatedId,centre:n.a.centre,branchZoom:n.a.branchZoom,stepZoom:n.a.stepZoom,zoom:n.a.zoom})}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return i}));var n=r(1),o=r(28),a=r(12);function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getCanvasCentrePoint(),r=this.getStepZoomingAxis();if(r){var i=null!=e?e:n.a.stepZoom;if(t){var u,s=null!==(u=this.props.stepZoom)&&void 0!==u?u:n.a.stepZoom,l=Object(a.default)(s),c=Object(a.default)(i),f=Object(o.default)(this,l,c,t,r);this.setProps({centre:f,stepZoom:i})}else this.setProps({stepZoom:i})}}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return n}));function n(e){this.view.title=e?\"\".concat(e).concat(\"​\".repeat(Math.floor(16*Math.random()))):\"\"}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(1);function o(e){this.setProps({type:e,centre:n.a.centre,branchZoom:n.a.branchZoom,stepZoom:n.a.stepZoom,zoom:n.a.zoom})}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return o}));var n=r(12);function o(){var e,t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=this.getView(),a=null!==(e=r.zoom)&&void 0!==e?e:o.zoom,i=null!==(t=r.centre)&&void 0!==t?t:o.centre;if(a<o.zoom){var u=this.getGraphAfterLayout(),s=u.bounds,l=this.getPixelOffsets(),c=Object(n.default)(this.getZoom()),f=this.getPadding(),d={min:[s.min[0]-l.left/c,s.min[1]-l.top/c],max:[s.max[0]+l.right/c,s.max[1]+l.bottom/c]},p=this.isCanvasPointOnScreen(this.projectPoint(d.min,c),f)&&this.isCanvasPointOnScreen(this.projectPoint(d.max,c),f);if(p)return}this.setProps({fixedScale:r.fixedScale,centre:i,zoom:a},\"viewport\")}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return a}));var n=r(1),o=r(12);function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getCanvasCentrePoint(),r=null!=e?e:n.a.zoom;if(t){var a=this.getScale(),i=Object(o.default)(r),u=i/a;this.deck.viewManager.controllers.OrthographicView.zoom(u,t)}else this.setView({zoom:r})}},function(e,t,r){\"use strict\";r.r(t),t.default=function(){this.deferred.count+=1}},function(e,t,r){\"use strict\";function n(e){var t=this.getView(this).target,r=this.getScale(),n=this.getCanvasCentrePoint();return[t[0]+(e[0]-n[0])/r,t[1]+(e[1]-n[1])/r]}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";function n(e,t){var r=e.getDrawingArea(),n=e.getCanvasSize(),o=[n.width/2,n.height/2],a=[r.width/2+r.left,r.height/2+r.top],i=[o[0]-a[0],o[1]-a[1]];return[-((t[0]-.5)*n.width-i[0]),-((t[1]-.5)*n.height-i[1])]}r.r(t),r.d(t,\"default\",(function(){return n}))},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"default\",(function(){return a}));var n=r(14),o=r.n(n);function a(e){for(var t=[],r=[e];r.length;){var n=r.shift();t.push(n),Array.isArray(n.children)&&r.unshift.apply(r,o()(n.children))}return t}},function(e,t,r){\"use strict\";r.r(t);var n=r(7),o=r(0),a=r(1),i=r(48),u=r(20),s=r(27),l=r(4),c=r(2),f=r(5),d=Object(c.default)((function(e){return e.props.fontColour||a.a.fontColour}),f.default),p=Object(c.default)((function(e){return e.getGraphAfterLayout()}),(function(e){for(var t=[],r=e.firstIndex+1;r<e.lastIndex;r++){var n=e.preorderTraversal[r];t.push(n),n.isCollapsed&&(r+=n.totalNodes-1)}return t})),h=Object(c.default)((function(e){return e.getFontSize()}),(function(e){return function(t){var r=e/3;return[(t.inverted?-1:1)*r*Math.sin(t.angle),(t.inverted?1:-1)*r*Math.cos(t.angle)]}})),g=Object(c.default)((function(e){return e.getTreeType()}),(function(e){return e.getBranchScale()}),(function(e){return e.getFontSize()}),(function(e){return e.getScale()}),(function(e,t,r,n){return function(r){if(e===o.TreeTypes.Diagonal)return[(r.x+r.parent.x)/2,(r.y+r.parent.y)/2];var n=r.branchLength*t/-2;return e===o.TreeTypes.Rectangular?[r.x+n,r.y]:e===o.TreeTypes.Hierarchical?[r.x,r.y+n]:[r.x+n*Math.cos(r.angle),r.y+n*Math.sin(r.angle)]}})),v=Object(c.default)((function(e){var t;return null!==(t=e.props.branchLengthsFormat)&&void 0!==t?t:a.a.branchLengthsFormat}),(function(e){var t;return null!==(t=e.props.branchLengthsDigits)&&void 0!==t?t:a.a.branchLengthsDigits}),(function(e,t){return\"decimal\"===e?function(e){var r;return null===(r=e.branchLength)||void 0===r?void 0:r.toFixed(t)}:\"scientific\"===e?function(e){var r;return null===(r=e.branchLength)||void 0===r?void 0:r.toExponential(t)}:function(e){var t;return null===(t=e.branchLength)||void 0===t?void 0:t.toString()}})),y=r(23),b=function(){return Object(c.default)(p,(function(e){var t;return null!==(t=e.props.branchLabelsFontSize)&&void 0!==t?t:.6*e.getFontSize()}),(function(e){return e.getFontFamily()}),d,h,g,v,(function(e,t,r,n,o,a,i){return new l.TextLayer({data:e,fontFamily:r,getAngle:y.default,getColor:n,getPixelOffset:o,getPosition:a,getSize:t,getText:i,getTextAnchor:\"middle\",id:\"branch-labels\",updateTriggers:{getPixelOffset:o,getText:i}})}))},m=r(14),x=r.n(m),O=r(40),S=Object(c.default)(O.a,(function(e){var t;return null!==(t=e.props.styleNodeEdges)&&void 0!==t?t:a.a.styleNodeEdges}),(function(e){var t;return Object(f.default)(null!==(t=e.props.highlightColour)&&void 0!==t?t:a.a.highlightColour)}),(function(e){return e.getHighlightedNode()}),(function(e,t,r,n){return n||t?function(o){if(n&&o.preIndex>n.preIndex&&o.preIndex<n.preIndex+n.totalNodes)return r;if(t){var a=x()(o.strokeColour);return a[3]=e[3],a}return e}:e})),w=r(8),j=r.n(w),A=r(9),T=r.n(A),P=r(10),C=r.n(P),L=r(11),k=r.n(L),I=r(3),M=r.n(I),R=r(6),z=r.n(R),_=r(15),E=r.n(_),D=r(29),F=r.n(D),N=r(24);function W(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function B(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?W(Object(r),!0).forEach((function(t){z()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):W(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function H(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=M()(e);if(t){var o=M()(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return k()(this,r)}}var Z={strokeWidth:{type:\"number\",min:0,value:1},getCentrePoint:{type:\"accessor\",value:function(e){return e.centrePoint}},getEndAngle:{type:\"accessor\",value:function(e){return e.endAngle}},getStartAngle:{type:\"accessor\",value:function(e){return e.startAngle}},getRadius:{type:\"accessor\",value:function(e){return e.radius}},getColor:{type:\"accessor\",value:[0,0,0,255]}},G=function(e){C()(r,e);var t=H(r);function r(){return j()(this,r),t.apply(this,arguments)}return T()(r,[{key:\"getShaders\",value:function(){return{vs:\"#define SHADER_NAME circular-curve-layer-vertex-shader\\n#define TWO_PI radians(360.0)\\n\\nattribute vec3 positions;\\nattribute vec3 instanceCentrePoints;\\nattribute vec4 instanceColors;\\nattribute vec3 instancePickingColors;\\nattribute float instanceRadius;\\nattribute float instanceStartAngle;\\nattribute float instanceEndAngle;\\n\\nuniform float numSegments;\\nuniform float strokeWidth;\\nuniform float opacity;\\n\\nvarying vec4 vColor;\\n\\n// offset vector by strokeWidth pixels\\n// offset_direction is -1 (left) or 1 (right)\\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction) {\\n  // normalized direction of the line\\n  vec2 dir_screenspace = normalize(line_clipspace * project_uViewportSize);\\n  // rotate by 90 degrees\\n  dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\\n\\n  vec2 offset_screenspace = dir_screenspace * offset_direction * strokeWidth / 2.0;\\n  vec2 offset_clipspace = project_pixel_size_to_clipspace(offset_screenspace).xy;\\n\\n  return offset_clipspace;\\n}\\n\\nfloat getSegmentRatio(float index) {\\n  return smoothstep(0.0, 1.0, index / numSegments);\\n}\\n\\nvec4 computeArcCurve(vec3 centrePoint, float radius, float startAngle, float arcAngle, float segmentRatio) {  \\n  float angle = startAngle + (arcAngle * segmentRatio);\\n\\n  vec3 instancePoint = vec3(\\n    centrePoint.x + (cos(angle) * radius),\\n    centrePoint.y + (sin(angle) * radius),\\n    0.0\\n  );\\n\\n  vec3 pointPos = project_position(instancePoint);\\n  vec4 point = project_common_position_to_clipspace(vec4(pointPos, 1.0));\\n\\n  return point;\\n}\\n\\nvoid main(void) {\\n  float arcAngle = (instanceEndAngle > instanceStartAngle) ? (instanceEndAngle - instanceStartAngle) : (TWO_PI + (instanceEndAngle - instanceStartAngle));\\n\\n  // linear interpolation of source & target to pick right coord\\n  float segmentIndex = positions.x;\\n  float segmentRatio = getSegmentRatio(segmentIndex);\\n  vec4 p = computeArcCurve(instanceCentrePoints, instanceRadius, instanceStartAngle, arcAngle, segmentRatio);\\n\\n  // next point\\n  float indexDir = mix(-1.0, 1.0, step(segmentIndex, 0.0));\\n  float nextSegmentRatio = getSegmentRatio(segmentIndex + indexDir);\\n  vec4 nextP = computeArcCurve(instanceCentrePoints, instanceRadius, instanceStartAngle, arcAngle, nextSegmentRatio);\\n\\n  // extrude\\n  float direction = float(positions.y);\\n  direction = indexDir *  direction;\\n  vec2 offset = getExtrusionOffset(nextP.xy - p.xy, direction);\\n  gl_Position = p + vec4(offset, 0.0, 0.0);\\n\\n  // Color\\n  vColor = vec4(instanceColors.rgb, instanceColors.a * opacity) / 255.;\\n\\n  // Set color to be rendered to picking fbo (also used to check for selection highlight).\\n  picking_setPickingColor(instancePickingColors);\\n}\\n\",fs:\"#define SHADER_NAME circular-curve-layer-fragment-shader\\n\\nprecision highp float;\\n\\nvarying vec4 vColor;\\n\\nvoid main(void) {\\n  gl_FragColor = vColor;\\n\\n  // use highlight color if this fragment belongs to the selected object.\\n  gl_FragColor = picking_filterHighlightColor(gl_FragColor);\\n\\n  // use picking color if rendering to picking FBO.\\n  gl_FragColor = picking_filterPickingColor(gl_FragColor);\\n}\\n\",modules:[n.project32,n.picking]}}},{key:\"initializeState\",value:function(){this.getAttributeManager().addInstanced({instanceCentrePoints:{size:3,transition:!1,accessor:\"getCentrePoint\"},instanceColors:{size:4,type:F.a.UNSIGNED_BYTE,transition:!0,accessor:\"getColor\",defaultValue:[0,0,0,255]},instanceRadius:{size:1,transition:!0,accessor:\"getRadius\",defaultValue:1},instanceStartAngle:{size:1,transition:!0,accessor:\"getStartAngle\",defaultValue:1},instanceEndAngle:{size:1,transition:!0,accessor:\"getEndAngle\",defaultValue:1}})}},{key:\"updateState\",value:function(e){var t=e.props,n=e.oldProps,o=e.changeFlags;if(E()(M()(r.prototype),\"updateState\",this).call(this,{props:t,oldProps:n,changeFlags:o}),o.extensionsChanged){var a=this.context.gl;this.state.model&&this.state.model.delete(),this.setState({model:this._getModel(a)})}}},{key:\"draw\",value:function(e){var t=e.uniforms,r=this.props.strokeWidth;this.state.model.setUniforms(B(B({},t),{},{strokeWidth:r})).draw()}},{key:\"_getModel\",value:function(e){for(var t=[],r=0;r<=40;r++)t=t.concat([r,-1,0,r,1,0]);var n=new N.Model(e,B(B({},this.getShaders()),{},{id:this.props.id,geometry:new N.Geometry({drawMode:F.a.TRIANGLE_STRIP,attributes:{positions:new Float32Array(t)}}),isInstanced:!0,shaderCache:this.context.shaderCache}));return n.setUniforms({numSegments:40}),n}},{key:\"calculateInstanceSourceTargetPositions64xyLow\",value:function(e){var t=this.props,r=t.data,o=t.getSourcePosition,a=t.getTargetPosition,i=e.value,u=e.size,s=0;r.forEach((function(e){var t=o(e),r=a(e);i[s+0]=Object(n.fp64LowPart)(t[0]),i[s+1]=Object(n.fp64LowPart)(t[1]),i[s+2]=Object(n.fp64LowPart)(r[0]),i[s+3]=Object(n.fp64LowPart)(r[1]),s+=u}))}}]),r}(n.Layer);function U(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return V(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return V(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,i=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){u=!0,a=e},f:function(){try{i||null==r.return||r.return()}finally{if(u)throw a}}}}function V(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function q(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=M()(e);if(t){var o=M()(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return k()(this,r)}}G.layerName=\"CircularArcLayer\",G.defaultProps=Z;var Y=Object.freeze([]),X=function(e){C()(r,e);var t=q(r);function r(){return j()(this,r),t.apply(this,arguments)}return T()(r,[{key:\"updateState\",value:function(e){var t=e.props,r=e.changeFlags;if(r.dataChanged){for(var n={roots:[t.data.root],nodes:[]},a=t.data.firstIndex+1;a<t.data.lastIndex;a++){var i=t.data.preorderTraversal[a];n.nodes.push(i),i.isCollapsed&&(a+=i.totalNodes-1)}if(this.props.treeType===o.TreeTypes.Circular&&r.dataChanged){n.nodesWithChldren=[];var u,s=U(n.nodes);try{for(s.s();!(u=s.n()).done;){var l=u.value;l.children&&l.children.length&&l.children.length>1&&n.nodesWithChldren.push(l)}}catch(e){s.e(e)}finally{s.f()}}this.setState(n)}}},{key:\"renderLayers\",value:function(){var e=this.state,t=e.nodes,r=e.roots,n=[];if(this.props.treeType===o.TreeTypes.Rectangular)n.push(new l.LineLayer({data:t,getColor:this.props.getColor,getWidth:this.props.lineWidth,id:\"edges-vertical-lines\",pickable:!0,updateTriggers:this.props.updateTriggers,getSourcePosition:function(e){return[e.parent.x,e.y]},getTargetPosition:function(e){return[e.x,e.y]}})),n.push(new l.LineLayer({data:t,getColor:this.props.getColor,getWidth:this.props.lineWidth,id:\"edges-horizontal-lines\",pickable:!0,updateTriggers:this.props.updateTriggers,getSourcePosition:function(e){return[e.parent.x,e.parent.y]},getTargetPosition:function(e){return[e.parent.x,e.y]}}));else if(this.props.treeType===o.TreeTypes.Hierarchical)n.push(new l.LineLayer({data:t,getColor:this.props.getColor,getWidth:this.props.lineWidth,id:\"edges-vertical-lines\",pickable:!0,updateTriggers:this.props.updateTriggers,getSourcePosition:function(e){return[e.x,e.parent.y]},getTargetPosition:function(e){return[e.x,e.y]}})),n.push(new l.LineLayer({data:t,getColor:this.props.getColor,getWidth:this.props.lineWidth,id:\"edges-horizontal-lines\",pickable:!0,updateTriggers:this.props.updateTriggers,getSourcePosition:function(e){return[e.parent.x,e.parent.y]},getTargetPosition:function(e){return[e.x,e.parent.y]}}));else if(this.props.treeType===o.TreeTypes.Diagonal||this.props.treeType===o.TreeTypes.Radial)n.push(new l.LineLayer({data:t,getColor:this.props.getColor,getWidth:this.props.lineWidth,id:\"edges-parent-lines\",pickable:!0,updateTriggers:this.props.updateTriggers,getSourcePosition:function(e){return[e.parent.x,e.parent.y]},getTargetPosition:function(e){return[e.x,e.y]}}));else if(this.props.treeType===o.TreeTypes.Circular){var a=this.state.nodesWithChldren;n.push(new l.LineLayer({data:t,getColor:this.props.getColor,getWidth:this.props.lineWidth,id:\"edges-central-lines\",pickable:!0,updateTriggers:this.props.updateTriggers,getSourcePosition:function(e){return[e.x,e.y]},getTargetPosition:function(e){return[e.cx,e.cy]}})),n.push(new G({data:a,getColor:this.props.getColor,id:\"edges-arcs\",pickable:!0,strokeWidth:this.props.lineWidth,updateTriggers:this.props.updateTriggers,getCentrePoint:[this.props.data.root.x,this.props.data.root.y],getEndAngle:function(e){return e.children[e.children.length-1].angle},getStartAngle:function(e){return e.children[0].angle},getRadius:function(e){return e.dist}}))}return this.props.treeType===o.TreeTypes.Rectangular||this.props.treeType===o.TreeTypes.Diagonal?n.push(new l.LineLayer({data:r,getColor:this.props.getColor,getWidth:this.props.lineWidth,id:\"edges-root-line\",pickable:!0,updateTriggers:this.props.updateTriggers,getSourcePosition:function(e){return[e.x,e.y]},getTargetPosition:function(e){return[e.x-10,e.y]}})):this.props.treeType===o.TreeTypes.Hierarchical&&n.push(new l.LineLayer({data:r,getColor:this.props.getColor,getWidth:this.props.lineWidth,id:\"edges-root-line\",pickable:!0,updateTriggers:this.props.updateTriggers,getSourcePosition:function(e){return[e.x,e.y]},getTargetPosition:function(e){return[e.x,e.y-10]}})),n}}]),r}(n.CompositeLayer);X.defaultProps={data:{type:\"data\",value:Y,async:!0},getColor:{type:\"accessor\",value:function(e){return e.fillColour}},lineWidth:1},X.componentName=\"EdgesLayer\";var K=function(){return Object(c.default)((function(e){return e.getGraphAfterLayout()}),(function(e){return e.getTreeType()}),(function(e){return e.getStrokeWidth()}),S,(function(e,t,r,n){return new X({treeType:t,getColor:n,id:\"edges\",data:e,lineWidth:r,updateTriggers:{getColor:n}})}))},J=Object(c.default)((function(e){return e.props.haloWidth||a.a.haloWidth}),(function(e){return e.props.nodeSize||a.a.nodeSize}),(function(e){return e.props.haloRadius||a.a.haloRadius}),(function(e,t,r){return{width:e,leaf:Math.max(.75*t,r)+e/2,internal:e+e/2}})),$=Object(c.default)((function(e){return e.getGraphAfterLayout()}),(function(e){var t;return null!==(t=e.props.highlightedId)&&void 0!==t?t:a.a.highlightedId}),(function(e,t){return void 0!==(null!=t?t:void 0)?[e.ids[t]]:o.EmptyArray})),Q=function(){return Object(c.default)($,(function(e){var t;return Object(f.default)(null!==(t=e.props.highlightColour)&&void 0!==t?t:a.a.highlightColour)}),(function(e){return e.props.haloWidth||a.a.haloWidth}),J,(function(e){return.5*e.getNodeSize()}),(function(e,t,r,n,o){return new l.ScatterplotLayer({id:\"highlights\",data:e,getPosition:function(e){return[e.x,e.y]},getRadius:function(e){var t=n.leaf;return e.isLeaf||(t=e.isCollapsed?o+e.ratio*o+r:n.internal),t},getLineWidth:r,getLineColor:t,filled:!1,stroked:!0,radiusUnits:\"pixels\",lineWidthUnits:\"pixels\"})}))},ee=Object(c.default)((function(e){return e.props.fontColour||a.a.fontColour}),f.default),te=Object(c.default)((function(e){return e.getGraphAfterLayout()}),(function(e){return e.props.internalLabelsFilterRange}),(function(e,t){for(var r=[],n=e.firstIndex;n<e.lastIndex;n++){var o=e.preorderTraversal[n];o.isLeaf||o.isHidden||!o.name||(t?o.name>=t[0]&&o.name<=t[1]&&r.push(o):r.push(o)),o.isCollapsed&&(n+=o.totalNodes-1)}return r})),re=Object(c.default)((function(e){return e.getFontSize()}),(function(e){return[e/2,0]}));function ne(e){return e.name}function oe(e){return[e.x,e.y]}function ae(e){return e.inverted?\"end\":\"start\"}var ie=function(){return Object(c.default)(te,(function(e){var t;return null!==(t=e.props.internalLabelsFontSize)&&void 0!==t?t:e.getFontSize()}),(function(e){return e.getFontFamily()}),ee,re,(function(e){return e.props.showInternalLabels}),(function(e,t,r,n,o){return new l.TextLayer({id:\"internal-labels\",data:e,getSize:t,getColor:n,fontFamily:r,getPosition:oe,getText:ne,getPixelOffset:o,getTextAnchor:ae})}))},ue=Object(c.default)((function(e){return e.props.fontColour||a.a.fontColour}),f.default),se=function(e){var t=ue(e);return e.props.styleLeafLabels||a.a.styleLeafLabels?function(e){var r;return null!==(r=e.fillColour)&&void 0!==r?r:t}:t},le=r(31),ce=r(32);function fe(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=M()(e);if(t){var o=M()(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return k()(this,r)}}function de(e){return e.inverted?\"end\":\"start\"}function pe(e){return e.label}function he(e){return[e.x,e.y]}var ge=function(e){C()(r,e);var t=fe(r);function r(){return j()(this,r),t.apply(this,arguments)}return T()(r,[{key:\"renderLayers\",value:function(){var e=[new l.TextLayer({id:\"leaf-labels-text\",data:this.props.data,getSize:this.props.fontSize,getPosition:this.props.getTextPosition,getText:pe,getAngle:y.default,getColor:this.props.fontColour,fontFamily:this.props.fontFamily,getTextAnchor:de,backgroundColor:this.props.backgroundColour,updateTriggers:{getPosition:this.props.updateTriggers.getTextPosition},pickable:!0})];return this.props.highlightedNode&&e.push(new l.TextLayer({id:\"leaf-labels-highlight\",data:[this.props.highlightedNode],getSize:this.props.fontSize,getPosition:this.props.getTextPosition,getText:pe,getAngle:y.default,getColor:this.props.highlightColour,fontFamily:this.props.fontFamily,getTextAnchor:de,backgroundColor:this.props.backgroundColour})),this.props.alignLeafLabels&&e.push(new l.LineLayer({id:\"leaf-labels-lines\",data:this.props.data,getSourcePosition:this.props.getTextPosition,getTargetPosition:he,getColor:this.props.lineColour,getWidth:this.props.lineWidth,opacity:.54,updateTriggers:{getSourcePosition:this.props.updateTriggers.getTextPosition}})),e}}]),r}(n.CompositeLayer);ge.componentName=\"LeafLabelsLayer\",ge.defaultProps={alignLeafLabels:!1,getTextPosition:{type:\"accessor\",value:function(e){return[e.x,e.y]}},fontSize:16,fontFamily:\"Monaco, monospace\",fontColour:[0,0,0,255],lineWidth:1,lineColour:[0,0,0,255]};var ve=function(){return Object(c.default)(le.a,(function(e){return e.getFontSize()}),(function(e){return e.getFontFamily()}),se,(function(e){return e.props.backgroundColour||a.a.backgroundColour}),(function(e){return e.getStrokeWidth()}),(function(e){return e.getStrokeColour()}),(function(e){return e.getAlignLeafLabels()}),ce.a,(function(e){return e.getHighlightedNode()}),(function(e){var t;return Object(f.default)(null!==(t=e.props.highlightColour)&&void 0!==t?t:a.a.highlightColour)}),(function(e,t,r,n,o,a,i,u,s,l,c){return new ge({alignLeafLabels:u,backgroundColour:o,data:e,fontColour:n,fontFamily:r,fontSize:t,getTextPosition:s,highlightColour:c,highlightedNode:l,id:\"leaf-labels\",lineColour:i,lineWidth:.5*a,updateTriggers:{getTextPosition:s}})}))},ye=r(37),be=r(34),me=r(35),xe=r(36);function Oe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Se(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Oe(Object(r),!0).forEach((function(t){z()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Oe(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function we(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=M()(e);if(t){var o=M()(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return k()(this,r)}}var je=function(e){C()(r,e);var t=we(r);function r(){return j()(this,r),t.apply(this,arguments)}return T()(r,[{key:\"getShaders\",value:function(e){return Se(Se({},E()(M()(r.prototype),\"getShaders\",this).call(this)),{},{fs:\"#define SHADER_NAME scatterplot-layer-fragment-shader\\n\\nuniform float maxSizeRatio;\\n\\nprecision highp float;\\n\\nuniform bool filled;\\nuniform float stroked;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying vec2 unitPosition;\\nvarying float innerUnitRadius;\\nvarying float outerRadiusPixels;\\n\\nvoid main(void) {\\n  geometry.uv = unitPosition;\\n\\n  float distToCenter = length(unitPosition) * outerRadiusPixels;\\n  // float inCircle = smoothedge(distToCenter, outerRadiusPixels);\\n\\n  // if (inCircle == 0.0) {\\n  //   discard;\\n  // }\\n\\n  if (maxSizeRatio < 1.0) {\\n    if (unitPosition.y > maxSizeRatio) {\\n      discard;\\n    }\\n    if (unitPosition.y < -maxSizeRatio) {\\n      discard;\\n    }\\n  }\\n\\n  if (stroked > 0.5) {\\n    float isLine = smoothedge(innerUnitRadius * outerRadiusPixels, distToCenter);\\n    if (filled) {\\n      gl_FragColor = mix(vFillColor, vLineColor, isLine);\\n    } else {\\n      if (isLine == 0.0) {\\n        discard;\\n      }\\n      gl_FragColor = vec4(vLineColor.rgb, vLineColor.a * isLine);\\n    }\\n  } else if (filled) {\\n    gl_FragColor = vFillColor;\\n  } else {\\n    discard;\\n  }\\n\\n  // gl_FragColor.a *= inCircle;\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\",vs:\"#define SHADER_NAME scatterplot-layer-vertex-shader\\n\\nattribute vec3 positions;\\n\\nattribute vec3 instancePositions;\\nattribute vec3 instancePositions64Low;\\nattribute float instanceRadius;\\nattribute float instanceLineWidths;\\nattribute vec4 instanceFillColors;\\nattribute vec4 instanceLineColors;\\nattribute vec3 instancePickingColors;\\n\\nattribute float instanceAngles;\\nattribute vec2 instancePixelOffset;\\n\\nuniform float opacity;\\nuniform float radiusScale;\\nuniform float radiusMinPixels;\\nuniform float radiusMaxPixels;\\nuniform float lineWidthScale;\\nuniform float lineWidthMinPixels;\\nuniform float lineWidthMaxPixels;\\nuniform float stroked;\\nuniform bool filled;\\nuniform bool billboard;\\nuniform int radiusUnits;\\nuniform int lineWidthUnits;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying vec2 unitPosition;\\nvarying float innerUnitRadius;\\nvarying float outerRadiusPixels;\\n\\nvec2 rotate_by_angle(vec2 vertex, float angle) {\\n  float angle_radian = angle * PI / 180.0;\\n  float cos_angle = cos(angle_radian);\\n  float sin_angle = sin(angle_radian);\\n  mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\\n  return rotationMatrix * vertex;\\n}\\n\\nvoid main(void) {\\n  geometry.worldPosition = instancePositions;\\n\\n  // Multiply out radius and clamp to limits\\n  outerRadiusPixels = clamp(\\n    project_size_to_pixel(radiusScale * instanceRadius, radiusUnits),\\n    radiusMinPixels, radiusMaxPixels\\n  );\\n  \\n  // Multiply out line width and clamp to limits\\n  float lineWidthPixels = clamp(\\n    project_size_to_pixel(lineWidthScale * instanceLineWidths, lineWidthUnits),\\n    lineWidthMinPixels, lineWidthMaxPixels\\n  );\\n\\n  // outer radius needs to offset by half stroke width\\n  outerRadiusPixels += stroked * lineWidthPixels / 2.0;\\n\\n  // position on the containing square in [-1, 1] space\\n  unitPosition = positions.xy;\\n  geometry.uv = unitPosition;\\n  geometry.pickingColor = instancePickingColors;\\n\\n  innerUnitRadius = 1.0 - stroked * lineWidthPixels / outerRadiusPixels;\\n  \\n  if (billboard) {\\n    gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\\n    vec3 offset = positions * outerRadiusPixels;\\n    DECKGL_FILTER_SIZE(offset, geometry);\\n    gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\\n  } else {\\n    vec3 offset = positions * project_pixel_size(outerRadiusPixels);\\n\\n    offset = vec3(rotate_by_angle(vec2(offset.x, offset.y), instanceAngles), 0.0);\\n    offset += vec3(project_pixel_size(instancePixelOffset), 0.0);\\n  \\n    // vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\\n\\n    DECKGL_FILTER_SIZE(offset, geometry);\\n    gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position);\\n  }\\n\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n  // Apply opacity to instance color, or return instance picking color\\n  vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\\n  DECKGL_FILTER_COLOR(vFillColor, geometry);\\n  vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\\n  DECKGL_FILTER_COLOR(vLineColor, geometry);\\n}\\n\"})}},{key:\"initializeState\",value:function(){E()(M()(r.prototype),\"initializeState\",this).call(this),this.getAttributeManager().addInstanced({instanceAngles:{size:1,transition:!0,accessor:\"getAngle\"},instancePixelOffset:{size:2,transition:!0,accessor:\"getPixelOffset\"}})}},{key:\"draw\",value:function(e){var t=e.uniforms,n=this.props.maxSizeRatio;this.state.model.setUniforms({maxSizeRatio:n}),E()(M()(r.prototype),\"draw\",this).call(this,{uniforms:t})}},{key:\"_getModel\",value:function(e){return new N.Model(e,Se(Se({},this.getShaders()),{},{id:this.props.id,geometry:new N.Geometry({drawMode:F.a.TRIANGLE_FAN,attributes:{positions:{size:2,value:new Float32Array([-1,-1,-1,1,1,1,1,-1])}}}),isInstanced:!0}))}}]),r}(l.ScatterplotLayer);function Ae(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=M()(e);if(t){var o=M()(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return k()(this,r)}}je.defaultProps={getAngle:{type:\"accessor\",value:0},getPixelOffset:{type:\"accessor\",value:[0,0]}},je.componentName=\"BlockLayer\";var Te=[0,0,0,64],Pe=function(e){C()(r,e);var t=Ae(r);function r(){return j()(this,r),t.apply(this,arguments)}return T()(r,[{key:\"renderLayers\",value:function(){return[new je({autoHighlight:!0,data:this.props.blocks,getAngle:function(e){return e.node.angleDegrees},getColor:function(e){return e.colour},getFillColor:function(e){return e.colour},getPixelOffset:this.props.getPixelOffset,getRadius:this.props.blockSize/2,maxSizeRatio:!this.props.isOrthogonal||this.props.stepSize>this.props.blockSize?1:this.props.stepSize/this.props.blockSize,highlightColor:Te,id:\"metadata-blocks\",pickable:!0,radiusUnits:\"pixels\",updateTriggers:{getPixelOffset:this.props.getPixelOffset}}),new l.TextLayer({data:this.props.headers,fontFamily:this.props.fontFamily,getAngle:function(e){return e.angle},getColor:this.props.fontColour,getPixelOffset:this.props.getPixelOffset,getSize:this.props.fontSize,getTextAnchor:function(e){return e.inverted?\"end\":\"start\"},id:\"metadata-headers\",updateTriggers:{getPixelOffset:this.props.getPixelOffset},visible:this.props.hasHeaders})]}}]),r}(n.CompositeLayer);Pe.componentName=\"MetadataLayer\";var Ce=function(){return Object(c.default)(be.a,(function(e){return e.getBlockSize()}),(function(e){return e.getStepScale()*e.getScale()}),me.a,(function(e){return e.getFontFamily()}),ye.a,xe.a,(function(e){return e.hasMetadataHeaders()}),(function(e){return e.isOrthogonal()}),(function(e,t,r,n,o,a,i,u,s){return new Pe({blocks:e,blockSize:t,stepSize:r,fontColour:Object(f.default)(\"black\"),fontFamily:o,fontSize:a,isOrthogonal:s,getPixelOffset:i,hasHeaders:u,headers:n,id:\"metadata\"})}))},Le=r(22),ke=r(13),Ie=r.n(ke);function Me(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return Re(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Re(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,i=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){u=!0,a=e},f:function(){try{i||null==r.return||r.return()}finally{if(u)throw a}}}}function Re(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var ze=Object(c.default)((function(e){return e.getGraphWithStyles()}),(function(e){return e.props.collapsedIds||a.a.collapsedIds}),(function(e,t){var r,n=[],a=0,i=Me(t);try{for(i.s();!(r=i.n()).done;){var u=r.value,s=e.ids[u];if(!s.isHidden){for(var l=s.postIndex-s.totalNodes+1,c=s.postIndex,f=new Map,d=0,p=l;p<=c;p++){var h=e.postorderTraversal[p];h.isLeaf&&h.shape&&(d+=1,f.set(h.fillColour,(f.get(h.fillColour)||0)+1))}a+=d;var g,v=o.Angles.Degrees0,y=Me(f.entries());try{for(y.s();!(g=y.n()).done;){var b=Ie()(g.value,2),m=b[0],x=b[1]/d,O=v+o.Angles.Degrees360*x;n.push({node:s,colour:m,startAngle:v,endAngle:O}),v=O}}catch(e){y.e(e)}finally{y.f()}s.numberOfActiveLeaves=d}}}catch(e){i.e(e)}finally{i.f()}var S,w=1/Math.log10(a),j=Me(t);try{for(j.s();!(S=j.n()).done;){var A=S.value,T=e.ids[A];T.isHidden||(T.ratio=w*Math.log10(T.numberOfActiveLeaves))}}catch(e){j.e(e)}finally{j.f()}return n}));function _e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Ee(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?_e(Object(r),!0).forEach((function(t){z()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):_e(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function De(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=M()(e);if(t){var o=M()(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return k()(this,r)}}var Fe=function(e){C()(r,e);var t=De(r);function r(){return j()(this,r),t.apply(this,arguments)}return T()(r,[{key:\"getShaders\",value:function(e){return Ee(Ee({},E()(M()(r.prototype),\"getShaders\",this).call(this)),{},{inject:{\"vs:#decl\":\"\\n          attribute float instanceStartAngle;\\n          attribute float instanceEndAngle;\\n          varying float startAngle;\\n          varying float endAngle;\\n        \",\"vs:#main-start\":\"\\n          startAngle = instanceStartAngle ;\\n          endAngle = instanceEndAngle ;\\n      \",\"fs:#decl\":\"\\n          varying float startAngle;\\n          varying float endAngle;\\n      \",\"fs:DECKGL_FILTER_COLOR\":\"\\n          float angle = atan(-geometry.uv.x, geometry.uv.y) + 3.1415926535897932384626433832795;\\n          if (angle < startAngle || angle > endAngle) {\\n            discard;\\n          }\\n        \"}})}},{key:\"initializeState\",value:function(){E()(M()(r.prototype),\"initializeState\",this).call(this),this.getAttributeManager().addInstanced({instanceStartAngle:{size:1,transition:!0,accessor:\"getStartAngle\",defaultValue:1},instanceEndAngle:{size:1,transition:!0,accessor:\"getEndAngle\",defaultValue:1}})}}]),r}(l.ScatterplotLayer);Fe.componentName=\"CircleSectorLayer\";var Ne=Fe,We=function(){return Object(c.default)(ze,(function(e){return e.getNodeSize()}),(function(e){return e.props.showShapeBorders}),(function(e){var t;return null!==(t=e.props.shapeBorderWidth)&&void 0!==t?t:a.a.shapeBorderWidth}),Le.a,(function(e){return e.getScale()}),(function(e,t,r,n,o,a){var i=t/2;return new Ne({id:\"piecharts\",data:e,getLineColor:o,getLineWidth:r?n:0,getPosition:function(e){return[e.node.x,e.node.y]},getFillColor:function(e){return e.colour},getCentrePoint:function(e){return[e.rootX,e.rootY]},getRadius:function(e){return i+e.node.ratio*i},getStartAngle:function(e){return e.startAngle},getEndAngle:function(e){return e.endAngle},pickable:!0,radiusUnits:\"pixels\"})}))};function Be(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return He(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return He(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,i=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){u=!0,a=e},f:function(){try{i||null==r.return||r.return()}finally{if(u)throw a}}}}function He(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var Ze=Object(c.default)((function(e){return e.getGraphAfterLayout()}),(function(e){var t;return null!==(t=e.props.selectedIds)&&void 0!==t?t:a.a.selectedIds}),(function(e,t){if(t&&t.length){var r,n=[],a=Be(e.leaves);try{for(a.s();!(r=a.n()).done;){var i=r.value;!i.isHidden&&t.includes(i.id)&&n.push(i)}}catch(e){a.e(e)}finally{a.f()}return n}return o.EmptyArray})),Ge=function(){return Object(c.default)(Ze,(function(e){return Object(f.default)(e.props.highlightColour||a.a.highlightColour)}),(function(e){return e.props.haloWidth||a.a.haloWidth}),J,(function(e,t,r,n){return new l.ScatterplotLayer({id:\"selection-halos\",data:e,getPosition:function(e){return[e.x,e.y]},getRadius:function(e){var t=n.leaf;return e.isLeaf||(t=e.isCollapsed?e.size+r:n.internal),t},getLineWidth:r,getLineColor:t,filled:!1,stroked:!0,radiusUnits:\"pixels\",lineWidthUnits:\"pixels\"})}))};function Ue(e,t){var r=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if(\"string\"==typeof e)return Ve(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ve(e,t)}(e))||t&&e&&\"number\"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,i=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){u=!0,a=e},f:function(){try{i||null==r.return||r.return()}finally{if(u)throw a}}}}function Ve(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var qe=Object(c.default)((function(e){return e.getGraphWithStyles()}),(function(e){var t,r=[],n=Ue(e.leaves);try{for(n.s();!(t=n.n()).done;){var o=t.value;!o.isHidden&&o.shape&&r.push(o)}}catch(e){n.e(e)}finally{n.f()}return r}));qe.displayName=\"visible-leaf-nodes\";var Ye=qe,Xe=r(33);function Ke(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=M()(e);if(t){var o=M()(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return k()(this,r)}}var Je=function(e){C()(r,e);var t=Ke(r);function r(){return j()(this,r),t.apply(this,arguments)}return T()(r,[{key:\"renderLayers\",value:function(){return[new l.IconLayer({id:\"shapes-border\",data:this.props.data,pickable:!1,iconAtlas:this.props.iconAtlas,iconMapping:this.props.iconMapping,getIcon:this.props.getIcon,getPosition:this.props.getPosition,getSize:this.props.getSize,sizeScale:this.props.borderSizeScale,getColor:this.props.borderColour,visible:this.props.showBorders,updateTriggers:{getSize:this.props.getSize}}),new l.IconLayer({id:\"shapes-fill\",data:this.props.data,pickable:!0,iconAtlas:this.props.iconAtlas,iconMapping:this.props.iconMapping,getIcon:this.props.getIcon,getPosition:this.props.getPosition,getSize:this.props.getSize,getColor:this.props.getColor,updateTriggers:{getSize:this.props.getSize}})]}}]),r}(n.CompositeLayer);Je.defaultProps={iconAtlas:{type:\"object\",value:null},iconMapping:{type:\"object\",value:{},async:!0},getPosition:{type:\"accessor\",value:function(e){return[e.x,e.y]}},getIcon:{type:\"accessor\",value:function(e){return e.shape}},getColor:{type:\"accessor\",value:function(e){return e.fillColour}},getSize:{type:\"accessor\",value:1},showBorders:!1,borderColor:[0,0,0],borderSizeScale:1},Je.componentName=\"ShapesLayer\";var $e,Qe=r(17);function et(e,t){var r=Object.keys(Qe.default),n=e-t,o=n/16,a=e,i=document.createElement(\"canvas\");i.width=r.length*a,i.height=e;var u=i.getContext(\"2d\");u.fillStyle=\"black\",u.strokeStyle=\"red\",u.lineWidth=o,u.globalAlpha=1;for(var s=0;s<r.length;s++){var l=r[s];u.save(),u.translate(s*a+a/2,a/2),u.beginPath(),u.fillStyle=\"black\",Qe.default[l].renderCanvas(0,0,n/2,u),u.fill(),u.closePath(),u.restore()}return i.toDataURL()}function tt(e,t){for(var r=Object.keys(Qe.default),n=e,o=e-t,a={},i=0;i<r.length;i++){a[r[i]]={x:i*n+t/2,y:t/2,width:o,height:o,mask:!0}}return a}var rt=function(){return $e||($e=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:64,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4,r=e+t,n=et(r,t),o=tt(r,t);return{image:n,mapping:o}}()),$e},nt=function(e){return!e.fillColour.isTransparent&&e.shape},ot=function(e){return[e.x,e.y]},at=function(e){return e.fillColour},it=function(){return Object(c.default)(Ye,(function(e){return e.getNodeSize()}),(function(e){return e.props.showShapeBorders}),Xe.a,Le.a,(function(e,t,r,n,o){var a=rt(),i=a.image,u=a.mapping;return new Je({id:\"shapes\",data:e,iconAtlas:i,iconMapping:u,getIcon:nt,getPosition:ot,getSize:t,getColor:at,showBorders:r,borderColour:o,borderSizeScale:1+2*n/t,updateTriggers:{getSize:t}})}))};t.default=function(){var e,t=this,r=function(){return t.setProps({fixedScale:null})};this.deck=new n.Deck({pickingRadius:2,useDevicePixels:!1,views:new n.OrthographicView({controller:!(!Object(u.default)(this,\"pan\")&&!Object(u.default)(this,\"zoom\"))&&Object(i.default)(this)}),initialViewState:{target:[0,0,0],zoom:0},layers:[],onViewStateChange:function(n){var o,a=n.viewState;clearTimeout(e),e=setTimeout(r,500),t.setView({centre:Object(s.default)(t,a.target),zoom:a.zoom,fixedScale:null!==(o=t.props.fixedScale)&&void 0!==o?o:t.getScale()})},onHover:function(e,r){return t.handleHover(e,r)},onClick:function(e,r){return t.handleClick(e,r)}}),this.view.appendChild(this.deck.canvas),this.view.style.position=\"relative\",this.view.style.backgroundImage='url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAAUCAYAAADFlsDIAAAABHNCSVQICAgIfAhkiAAABJpJREFUWIXtl0FvGkcUx/9vZqHKITKJ1PZoeuwppFJlBVx5/QlCjz2VfAIwJPIlsLsmFyuBXY49BX+C4nMuIAWIT3XUa6VuDjm0h4Y2lZrCzHs9EBxMnNSochSl/p1mdt+8efOfeW92gXPOOQto2QHr5Z08E90nYATA7zeqe2cQ13uJWnYAE4UEpACkBYjOIKb3lqXFIpGPj9pT0f43LCVW9tbuRRZ8J5BfRDAC0dbb7HOVunsav6e1e5fkKnV3o+gdOwzOMg60mXwuoAdgPGAn2e/f3X4+e5ct7xQIekVgfwdJJmHYHzO7ALr/5pdPafcuEZH0CyDGtDYDWBBro+ilJloXQXLJOhwd7AYxMD1RU6HkMgBYUvFwTqgZxo73D1pBvFb00tA6DxFkyzsFAVY4YfcPdoM4V6m7/Ua1C0x3b9YGpoIDABFJv1HdW9v20mqsCgAwDD3/WnmnCJFLSqmf+43qXq5Sd0kkZUUymuhQW9u1WrsPm7XO2raXTkx0BgCsSAYAOMntg90gnvPTnc0/Pxdp3QHzawIeS8OJ1hER+QRVdIx+9FUpuL6+FWwoM87NhJqqPv71bbviOEhDqWcAYK3tDpu11iyQl6cIi+3szTsZIpJBs9YWEVoremk90b5SCkqpLgAoosdKqa6QFL4sehlmdpnoW6VUV0BhrxWMBBQCAI1VXohW2KpYKdXVSqW0UaX18k6eiFylVNcYE8/m12NVGoaePww9H2ILJ63reM0i2pjrfMqOXgHUhdeH/fHXSc60o0rXtgJfoPKDe7f3AeCgFcQn2S5CMkkBeDINw8aO46ShsGqMac92n0WuMLNLjFTScab1RGS/36h25eVHEAv3cpW6qzRdN8b0CJMUM7sskiJWK0I0IiAj4HxCT08eAMhcugm/as9zTCxiah11RJ5ayz8YmJ8MzG/H7NTlT05yZg1Hw9DzBw2vdBqBliF7804GwOYw9HwWefwmO03UEXAe/HKjHB0mmSMi2waAfqPadYy5SlAdBoobRS+1tu2lTxPDsZrVD29H6+WdmIFUwtpOvxUcKZy9tXtRmRdfAOqCZk5veN7TXhCYZRdNQCpX8VwWfQUirwIxOBwrLuUqHoRVPsHGHzuqp7W+n6vUY6MngSPOlWwliCC0+ib/2touO07Iwi0AEMLIOE4oJGkC4mzRy0wcVYBIiojiv5UqqAm5ROhc2wp8ED1TRKsiEi/6fu3T4WGz1hk0a+3enFAAMLi7/dyAf5yumL6Z/Onsze9IwtrOYsolmaPF9iD0SsYgTlq7N/+u1wpGSebIGMQJZr/XCkbDhudba28YY4KD3SB2jLlqDUcJa792jDlMMkcJazsAYI3ZBIBeKxhZYzY/Ym4DwOBebVMMtQb3apsOm61BKzi0hiNYFfUb1RuPQi9KWlsYNGvtJHOUtHaPmZ8MmrX24nqW/t3JlndCIioB0zxPGPPZorBvI1epuyKSBknGGo5OW9POmmzxTkaUzQMAse4MWrcPF22WF6tS/56A/Nyjzfnr/0Nm+d8dpt5RRxDPX78fOkufLOBVKiWs7SyTguecc845/5F/ABRBaZJ181VHAAAAAElFTkSuQmCC\")',this.view.style.backgroundRepeat=\"no-repeat\",this.view.style.backgroundPosition=\"right bottom\",this.addLayer(\"edges\",(function(e){var t;return null!==(t=e.showEdges)&&void 0!==t?t:a.a.showEdges}),K),this.addLayer(\"leaf-labels\",(function(e){return e.showLabels&&e.showLeafLabels}),ve),this.addLayer(\"shapes\",(function(e){var t;return null!==(t=e.showShapes)&&void 0!==t?t:a.a.showShapes}),it),this.addLayer(\"internal-labels\",(function(e){return e.showLabels&&e.showInternalLabels}),ie),this.addLayer(\"branch-labels\",(function(e){return e.showLabels&&e.showBranchLengths}),b),this.addLayer(\"piecharts\",(function(e){return!1!==e.showPiecharts&&e.collapsedIds&&e.collapsedIds.length}),We),this.addLayer(\"metadata\",(function(e){return e.type!==o.TreeTypes.Radial&&e.metadata&&e.blocks&&e.blocks.length}),Ce),this.addLayer(\"selection\",(function(e){return e.selectedIds&&e.selectedIds.length}),Ge),this.addLayer(\"highlights\",!0,Q)}},function(e,t,r){\"use strict\";r.r(t),r.d(t,\"PhylocanvasGL\",(function(){return v})),r.d(t,\"Angles\",(function(){return n.Angles})),r.d(t,\"EmptyArray\",(function(){return n.EmptyArray})),r.d(t,\"EmptyObject\",(function(){return n.EmptyObject})),r.d(t,\"TreeTypes\",(function(){return n.TreeTypes})),r.d(t,\"Shapes\",(function(){return n.Shapes})),r.d(t,\"Utils\",(function(){return V})),r.d(t,\"Defaults\",(function(){return o.a})),r.d(t,\"Newick\",(function(){return q})),r.d(t,\"plugins\",(function(){return Y}));var n=r(0),o=r(1),a=r(54),i=r.n(a),u=r(6),s=r.n(u),l=r(8),c=r.n(l),f={addLayer:r(57).default,ascendingNodeOrder:r(58).default,branchZoomingAxis:r(62).default,collapseNode:r(63).default,descendingNodeOrder:r(64).default,destroy:r(65).default,exportJSON:r(66).default,exportNewick:r(67).default,exportPNG:r(68).default,exportSVG:r(69).default,findNodeById:r(73).default,fitInCanvas:r(74).default,getAlignLeafLabels:r(75).default,getBlockHeaderFontSize:r(76).default,getBlockPadding:r(77).default,getBlockSize:r(78).default,getBranchScale:r(79).default,getBranchZoom:r(80).default,getCanvasCentrePoint:r(81).default,getCanvasSize:r(82).default,getDrawingArea:r(83).default,getFillColour:r(84).default,getFontFamily:r(85).default,getFontSize:r(86).default,getGraphAfterLayout:r(87).default,getGraphBeforeLayout:r(88).default,getGraphWithoutLayout:r(89).default,getGraphWithStyles:r(91).default,getHighlightedNode:r(92).default,getMaxScale:r(93).default,getMaxZoom:r(94).default,getMetadataColumnWidth:r(95).default,getMinScale:r(96).default,getMinZoom:r(97).default,getNodeSize:r(98).default,getPadding:r(99).default,getPixelOffsets:r(100).default,getScale:r(101).default,getShowShapes:r(102).default,getStepScale:r(103).default,getStepZoom:r(104).default,getStepZoomingAxis:r(105).default,getStrokeColour:r(106).default,getStrokeWidth:r(107).default,getTreeType:r(108).default,getView:r(109).default,getWorldBounds:r(110).default,getZoom:r(111).default,handleClick:r(112).default,handleHover:r(113).default,hasLeafLabels:r(114).default,hasMetadata:r(115).default,hasMetadataHeaders:r(116).default,hasMetadataLabels:r(117).default,highlightNode:r(118).default,importJSON:r(119).default,init:r(150).default,isCanvasPointOnScreen:r(122).default,isOrthogonal:r(123).default,isTreePointOnScreen:r(124).default,midpointRoot:r(125).default,pickNodeAtCanvasPoint:r(126).default,pickNodeFromLayer:r(127).default,projectPoint:r(128).default,render:r(129).default,rerootNode:r(130).default,resize:r(131).default,resume:r(132).default,rotateNode:r(133).default,selectLeafNodes:r(134).default,selectNode:r(135).default,setBranchZoom:r(136).default,setProps:r(137).default,setRoot:r(138).default,setScale:r(139).default,setSource:r(140).default,setStepZoom:r(141).default,setTooltip:r(142).default,setTreeType:r(143).default,setView:r(144).default,setZoom:r(145).default,suspend:r(146).default,unprojectPoint:r(147).default},d=r(50);function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function h(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach((function(t){s()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var g=function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document.body,r=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];c()(this,e);var o=\"string\"==typeof t?document.getElementById(t):t;this.cache=new Map,this.view=o,this.deferred={count:0,render:!1},this.layers=[];var a=(null==r?void 0:r.size)||t.getBoundingClientRect();return this.props=h(h({},r),{},{size:a}),n.length&&Object(d.default)(this,n),this.init(),r&&this.setProps(this.props),this};Object.assign(g.prototype,f),g.create=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return i()(this,t)};var v=g,y=r(30),b=r.n(y),m=r(13),x=r.n(m),O=r(14),S=r.n(O),w=r(2),j=r(9),A=r.n(j),T=r(10),P=r.n(T),C=r(11),L=r.n(C),k=r(3),I=r.n(k),M=r(4);function R(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=I()(e);if(t){var o=I()(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return L()(this,r)}}var z=function(e){P()(r,e);var t=R(r);function r(){return c()(this,r),t.apply(this,arguments)}return A()(r,[{key:\"renderLayers\",value:function(){return[new M.TextLayer({id:\"scalebar-text\",data:this.props.data.labels,getSize:this.props.fontSize,getColor:this.props.fontColour,fontFamily:this.props.fontFamily,getAlignmentBaseline:\"bottom\",backgroundColor:this.props.backgroundColour}),new M.LineLayer({id:\"scalebar-lines\",data:this.props.data.lines,getColor:this.props.lineColour,getWidth:this.props.lineWidth})]}}]),r}(r(7).CompositeLayer);z.componentName=\"ScalebarLayer\";var _=r(49),E=r.n(_),D=Object.freeze({background:[255,255,255],digits:2,fillColour:[34,34,34],fontSize:13,height:24,lineWidth:1,opacity:.87,padding:4,position:{bottom:0,left:0},strokeColour:[34,34,34],textAlign:\"center\",textBaseline:\"hanging\",width:96});function F(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function N(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?F(Object(r),!0).forEach((function(t){s()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):F(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var W=Object(w.default)((function(e){return e.props.scalebar}),(function(e){return e&&\"object\"===E()(e)?N(N({},D),e):D}));W.displayName=\"scalebar-options\";var B=W,H=Math.log(10),Z=Object(w.default)((function(e){return e.getCanvasSize()}),(function(e){return[e.width/2,e.height/2]})),G=function(){return Object(w.default)(B,(function(e){return e.getBranchScale()}),(function(e){return e.getScale(!0)}),(function(e){return e.getCanvasSize()}),(function(e){return e.getFontFamily()}),Z,(function(e){return e.getView().target}),(function(e,t,r,n,o,a,i){var u=e.width,s=e.padding,l=e.position,c=e.height,f=0;void 0!==l.left?f=l.left:void 0!==l.centre?f=n.width/2-u/2+l.centre:void 0!==l.right?f=n.width-u-l.right:console.error(\"Invalid horizontal position specified. Supported values are `left`, `centre`, or `right`\");var d=0;void 0!==l.top?d=l.top:void 0!==l.middle?d=n.height/2-c+l.middle:void 0!==l.bottom?d=n.height-c-l.bottom:console.error(\"Invalid vertical position specified. Supported values are `top`, `middle`, or `bottom`\");var p=(u-2*s)/t/r,h=parseInt(Math.abs(Math.log(p)/H),10);f+=-a[0],f/=r,f+=i[0],d+=-a[1],d/=r,d+=i[1];var g=(s+e.lineWidth)/r,v=(u-s-e.lineWidth)/r,y=(e.height-s)/r;return new z({id:\"scalebar-plugin\",data:{labels:[{position:[f+e.width/r/2,d+y],text:p.toFixed(h+e.digits)}],lines:[{sourcePosition:[f+g,d+y],targetPosition:[f+v,d+y]}]},fontSize:e.fontSize,fontColour:e.fillColour,fontFamily:e.fontFamily||o,lineColour:e.strokeColour,lineWidth:e.lineWidth,backgroundColour:e.background})}))},U=r(21),V={appendToArray:r(19).default,applyPlugins:r(50).default,applyTreeLayout:r(44).default,calculateNodeBounds:r(45).default,calculateScaledCentre:r(28).default,canvasContext:r(26).default,centreToTarget:r(148).default,colourToRgba:r(5).default,createController:r(48).default,drawVectorShape:r(42).default,emoji:r(43).default,hasInteraction:r(20).default,logarithmicScale:r(41).default,measureTextWidth:r(39).default,memoise:r(2).default,newick:r(30).default,nodeAngleInDegrees:r(23).default,parseSourceAsGraph:r(46).default,postorderTraversal:r(25).default,preorderTraversal:r(149).default,rotateSubtree:r(38).default,scaleToZoom:r(16).default,serialiseAsNewick:r(18).default,shapes:r(17).default,targetToCentre:r(27).default,treeTraversal:r(47).default,zoomToScale:r(12).default};Object.assign(v,n),v.defaults=o.a;var q=b.a,Y={scalebar:function(e,t){t(\"init\",(function(t,r){t.apply(void 0,S()(r)),e.addLayer(\"scalebar\",(function(e){return!1!==e.scalebar}),G)})),t(\"exportSVG\",(function(t,r){var n=e.deck.layerManager.layers.find((function(e){return\"scalebar-plugin\"===e.id}));if(n){var o=t(!1);o.pop(),o.push('<g transform=\"translate('.concat(o.centre.join(\" \"),')\" >\\n'));var a=n.props,i=a.lineWidth,u=a.lineColour,s=x()(n.props.data.lines,1)[0];o.push('<g stroke=\"'.concat(Object(U.a)(u),'\" stroke-width=\"').concat(i,'\" >\\n')),o.push('<line x1=\"'.concat(s.sourcePosition[0],'\" y1=\"').concat(s.sourcePosition[1],'\" x2=\"').concat(s.targetPosition[0],'\" y2=\"').concat(s.targetPosition[1],'\"  />\\n')),o.push(\"</g>\\n\");var l=n.props,c=l.fontFamily,f=l.fontSize,d=x()(n.props.data.labels,1)[0];o.push('<g font-family=\"'.concat(c.replace(/\"/g,\"'\"),'\" font-size=\"').concat(f,'\">\\n'));var p=x()(d.position,2),h=p[0],g=p[1];o.push('<text x=\"'.concat(h,'\" y=\"').concat(g,'\" text-anchor=\"middle\" dominant-baseline=\"auto\" style=\"padding-bottom:2px\">').concat(d.text,\"</text>\\n\")),o.push(\"</g>\\n\"),o.push(\"</g>\\n\"),o.push(\"</svg>\\n\");var v=x()(r,1)[0];return void 0===v||v?new Blob(o,{type:\"image/svg+xml\"}):o}return t.apply(void 0,S()(r))}))}};t.default=v}])}));\n//# sourceMappingURL=phylocanvas.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@phylocanvas/phylocanvas.gl/dist/phylocanvas.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/createPopper.js":
/*!*********************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/createPopper.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createPopper\": function() { return /* binding */ createPopper; },\n/* harmony export */   \"detectOverflow\": function() { return /* reexport safe */ _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; },\n/* harmony export */   \"popperGenerator\": function() { return /* binding */ popperGenerator; }\n/* harmony export */ });\n/* harmony import */ var _dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./dom-utils/getCompositeRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js\");\n/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./dom-utils/getLayoutRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js\");\n/* harmony import */ var _dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom-utils/listScrollParents.js */ \"./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js\");\n/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./dom-utils/getOffsetParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\");\n/* harmony import */ var _dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./dom-utils/getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n/* harmony import */ var _utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/orderModifiers.js */ \"./node_modules/@popperjs/core/lib/utils/orderModifiers.js\");\n/* harmony import */ var _utils_debounce_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/debounce.js */ \"./node_modules/@popperjs/core/lib/utils/debounce.js\");\n/* harmony import */ var _utils_validateModifiers_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/validateModifiers.js */ \"./node_modules/@popperjs/core/lib/utils/validateModifiers.js\");\n/* harmony import */ var _utils_uniqueBy_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/uniqueBy.js */ \"./node_modules/@popperjs/core/lib/utils/uniqueBy.js\");\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/mergeByName.js */ \"./node_modules/@popperjs/core/lib/utils/mergeByName.js\");\n/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utils/detectOverflow.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom-utils/instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nfunction popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: (0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(reference) ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(reference) : reference.contextElement ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(reference.contextElement) : [],\n          popper: (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = (0,_utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((0,_utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        }); // Validate the provided modifiers so that the consumer will get warned\n        // if one of the modifiers is invalid for any reason\n\n        if (true) {\n          var modifiers = (0,_utils_uniqueBy_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n            var name = _ref.name;\n            return name;\n          });\n          (0,_utils_validateModifiers_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(modifiers);\n\n          if ((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(state.options.placement) === _enums_js__WEBPACK_IMPORTED_MODULE_7__.auto) {\n            var flipModifier = state.orderedModifiers.find(function (_ref2) {\n              var name = _ref2.name;\n              return name === 'flip';\n            });\n\n            if (!flipModifier) {\n              console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n            }\n          }\n\n          var _getComputedStyle = (0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(popper),\n              marginTop = _getComputedStyle.marginTop,\n              marginRight = _getComputedStyle.marginRight,\n              marginBottom = _getComputedStyle.marginBottom,\n              marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n          // cause bugs with positioning, so we'll warn the consumer\n\n\n          if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n            return parseFloat(margin);\n          })) {\n            console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n          }\n        }\n\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          if (true) {\n            console.error(INVALID_ELEMENT_ERROR);\n          }\n\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: (0,_dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(reference, (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(popper), state.options.strategy === 'fixed'),\n          popper: (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n        var __debug_loops__ = 0;\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (true) {\n            __debug_loops__ += 1;\n\n            if (__debug_loops__ > 100) {\n              console.error(INFINITE_LOOP_ERROR);\n              break;\n            }\n          }\n\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: (0,_utils_debounce_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      if (true) {\n        console.error(INVALID_ELEMENT_ERROR);\n      }\n\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref3) {\n        var name = _ref3.name,\n            _ref3$options = _ref3.options,\n            options = _ref3$options === void 0 ? {} : _ref3$options,\n            effect = _ref3.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nvar createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/createPopper.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/contains.js":
/*!***************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/contains.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ contains; }\n/* harmony export */ });\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\nfunction contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/contains.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getBoundingClientRect; }\n/* harmony export */ });\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isLayoutViewport.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js\");\n\n\n\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) {\n    scaleX = element.offsetWidth > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !(0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getClippingRect; }\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getViewportRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js\");\n/* harmony import */ var _getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getDocumentRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js\");\n/* harmony import */ var _listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./listScrollParents.js */ \"./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js\");\n/* harmony import */ var _getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./getOffsetParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js\");\n/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./getParentNode.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js\");\n/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./contains.js */ \"./node_modules/@popperjs/core/lib/dom-utils/contains.js\");\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/rectToClientRect.js */ \"./node_modules/@popperjs/core/lib/utils/rectToClientRect.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getInnerBoundingClientRect(element, strategy) {\n  var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element, false, strategy === 'fixed');\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n  return clippingParent === _enums_js__WEBPACK_IMPORTED_MODULE_1__.viewport ? (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((0,_getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element, strategy)) : (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((0,_getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = (0,_listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(element).position) >= 0;\n  var clipperElement = canEscapeClipping && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isHTMLElement)(element) ? (0,_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(element) : element;\n\n  if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) && (0,_contains_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(clippingParent, clipperElement) && (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nfunction getClippingRect(element, boundary, rootBoundary, strategy) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n    accRect.top = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.top, accRect.top);\n    accRect.right = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.right, accRect.right);\n    accRect.bottom = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.bottom, accRect.bottom);\n    accRect.left = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getCompositeRect; }\n/* harmony export */ });\n/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBoundingClientRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js\");\n/* harmony import */ var _getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getNodeScroll.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js\");\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js\");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isScrollParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\n\n\n\n\n\n\n\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.width) / element.offsetWidth || 1;\n  var scaleY = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nfunction getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent);\n  var offsetParentIsScaled = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(offsetParent);\n  var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(documentElement)) {\n      scroll = (0,_getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(offsetParent);\n    }\n\n    if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent)) {\n      offsets = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getComputedStyle; }\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n\nfunction getComputedStyle(element) {\n  return (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element).getComputedStyle(element);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getDocumentElement; }\n/* harmony export */ });\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\nfunction getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return (((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getDocumentRect; }\n/* harmony export */ });\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js\");\n/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindowScroll.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\n\n\n\n // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nfunction getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element);\n  var winScroll = (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element);\n  var y = -winScroll.scrollTop;\n\n  if ((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(body || html).direction === 'rtl') {\n    x += (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getHTMLElementScroll; }\n/* harmony export */ });\nfunction getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js":
/*!********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getLayoutRect; }\n/* harmony export */ });\n/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js\");\n // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nfunction getLayoutRect(element) {\n  var clientRect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js":
/*!******************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getNodeName; }\n/* harmony export */ });\nfunction getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js":
/*!********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getNodeScroll; }\n/* harmony export */ });\n/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js\");\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getHTMLElementScroll.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js\");\n\n\n\n\nfunction getNodeScroll(node) {\n  if (node === (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node) || !(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node)) {\n    return (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(node);\n  } else {\n    return (0,_getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(node);\n  }\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getOffsetParent; }\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _isTableElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isTableElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js\");\n/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js\");\n/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/userAgent.js */ \"./node_modules/@popperjs/core/lib/utils/userAgent.js\");\n\n\n\n\n\n\n\n\nfunction getTrueOffsetParent(element) {\n  if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || // https://github.com/popperjs/popper-core/issues/837\n  (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])());\n  var isIE = /Trident/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])());\n\n  if (isIE && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = (0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element);\n\n  if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(currentNode) && ['html', 'body'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(currentNode)) < 0) {\n    var css = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nfunction getOffsetParent(element) {\n  var window = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && (0,_isTableElement_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(offsetParent) && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(offsetParent) === 'html' || (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(offsetParent) === 'body' && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js":
/*!********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getParentNode; }\n/* harmony export */ });\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\n\n\nfunction getParentNode(element) {\n  if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isShadowRoot)(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element) // fallback\n\n  );\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getScrollParent; }\n/* harmony export */ });\n/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js\");\n/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js\");\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\n\n\n\nfunction getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node) && (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(node)) {\n    return node;\n  }\n\n  return getScrollParent((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(node));\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getViewportRect; }\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js\");\n/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isLayoutViewport.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js\");\n\n\n\n\nfunction getViewportRect(element, strategy) {\n  var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element);\n  var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    var layoutViewport = (0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n\n    if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element),\n    y: y\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js":
/*!****************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindow.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getWindow; }\n/* harmony export */ });\nfunction getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getWindowScroll; }\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n\nfunction getWindowScroll(node) {\n  var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getWindowScrollBarX; }\n/* harmony export */ });\n/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js\");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js\");\n\n\n\nfunction getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element)).left + (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element).scrollLeft;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isElement\": function() { return /* binding */ isElement; },\n/* harmony export */   \"isHTMLElement\": function() { return /* binding */ isHTMLElement; },\n/* harmony export */   \"isShadowRoot\": function() { return /* binding */ isShadowRoot; }\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n\n\nfunction isElement(node) {\n  var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ isLayoutViewport; }\n/* harmony export */ });\n/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/userAgent.js */ \"./node_modules/@popperjs/core/lib/utils/userAgent.js\");\n\nfunction isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])());\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ isScrollParent; }\n/* harmony export */ });\n/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n\nfunction isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ isTableElement; }\n/* harmony export */ });\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n\nfunction isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element)) >= 0;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js":
/*!************************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ listScrollParents; }\n/* harmony export */ });\n/* harmony import */ var _getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js\");\n/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js\");\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js\");\n\n\n\n\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nfunction listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = (0,_getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(target)));\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/enums.js":
/*!**************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/enums.js ***!
  \**************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"afterMain\": function() { return /* binding */ afterMain; },\n/* harmony export */   \"afterRead\": function() { return /* binding */ afterRead; },\n/* harmony export */   \"afterWrite\": function() { return /* binding */ afterWrite; },\n/* harmony export */   \"auto\": function() { return /* binding */ auto; },\n/* harmony export */   \"basePlacements\": function() { return /* binding */ basePlacements; },\n/* harmony export */   \"beforeMain\": function() { return /* binding */ beforeMain; },\n/* harmony export */   \"beforeRead\": function() { return /* binding */ beforeRead; },\n/* harmony export */   \"beforeWrite\": function() { return /* binding */ beforeWrite; },\n/* harmony export */   \"bottom\": function() { return /* binding */ bottom; },\n/* harmony export */   \"clippingParents\": function() { return /* binding */ clippingParents; },\n/* harmony export */   \"end\": function() { return /* binding */ end; },\n/* harmony export */   \"left\": function() { return /* binding */ left; },\n/* harmony export */   \"main\": function() { return /* binding */ main; },\n/* harmony export */   \"modifierPhases\": function() { return /* binding */ modifierPhases; },\n/* harmony export */   \"placements\": function() { return /* binding */ placements; },\n/* harmony export */   \"popper\": function() { return /* binding */ popper; },\n/* harmony export */   \"read\": function() { return /* binding */ read; },\n/* harmony export */   \"reference\": function() { return /* binding */ reference; },\n/* harmony export */   \"right\": function() { return /* binding */ right; },\n/* harmony export */   \"start\": function() { return /* binding */ start; },\n/* harmony export */   \"top\": function() { return /* binding */ top; },\n/* harmony export */   \"variationPlacements\": function() { return /* binding */ variationPlacements; },\n/* harmony export */   \"viewport\": function() { return /* binding */ viewport; },\n/* harmony export */   \"write\": function() { return /* binding */ write; }\n/* harmony export */ });\nvar top = 'top';\nvar bottom = 'bottom';\nvar right = 'right';\nvar left = 'left';\nvar auto = 'auto';\nvar basePlacements = [top, bottom, right, left];\nvar start = 'start';\nvar end = 'end';\nvar clippingParents = 'clippingParents';\nvar viewport = 'viewport';\nvar popper = 'popper';\nvar reference = 'reference';\nvar variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nvar placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nvar beforeRead = 'beforeRead';\nvar read = 'read';\nvar afterRead = 'afterRead'; // pure-logic modifiers\n\nvar beforeMain = 'beforeMain';\nvar main = 'main';\nvar afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nvar beforeWrite = 'beforeWrite';\nvar write = 'write';\nvar afterWrite = 'afterWrite';\nvar modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/enums.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js":
/*!******************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/modifiers/applyStyles.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\n // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n});\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/modifiers/arrow.js":
/*!************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/modifiers/arrow.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js\");\n/* harmony import */ var _dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../dom-utils/contains.js */ \"./node_modules/@popperjs/core/lib/dom-utils/contains.js\");\n/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\");\n/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js\");\n/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/within.js */ \"./node_modules/@popperjs/core/lib/utils/within.js\");\n/* harmony import */ var _utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/mergePaddingObject.js */ \"./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js\");\n/* harmony import */ var _utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/expandToHashMap.js */ \"./node_modules/@popperjs/core/lib/utils/expandToHashMap.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\n\n\n\n\n\n\n\n\n // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return (0,_utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(typeof padding !== 'number' ? padding : (0,_utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_2__.basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(state.placement);\n  var axis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(basePlacement);\n  var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_2__.left, _enums_js__WEBPACK_IMPORTED_MODULE_2__.right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(arrowElement);\n  var minProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.top : _enums_js__WEBPACK_IMPORTED_MODULE_2__.left;\n  var maxProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_2__.right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_7__.within)(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (true) {\n    if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_8__.isHTMLElement)(arrowElement)) {\n      console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n    }\n  }\n\n  if (!(0,_dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(state.elements.popper, arrowElement)) {\n    if (true) {\n      console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n    }\n\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n});\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/modifiers/arrow.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js":
/*!********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/modifiers/computeStyles.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"mapToStyles\": function() { return /* binding */ mapToStyles; }\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\");\n/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getVariation.js */ \"./node_modules/@popperjs/core/lib/utils/getVariation.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\n\n\n\n\n\n\n // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n  var x = _ref.x,\n      y = _ref.y;\n  var win = window;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(x * dpr) / dpr || 0,\n    y: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(y * dpr) / dpr || 0\n  };\n}\n\nfunction mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.left;\n  var sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(popper)) {\n      offsetParent = (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(popper);\n\n      if ((0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.right) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) {\n      sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) {\n      sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n  if (true) {\n    var transitionProperty = (0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(state.elements.popper).transitionProperty || '';\n\n    if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n      return transitionProperty.indexOf(property) >= 0;\n    })) {\n      console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n    }\n  }\n\n  var commonStyles = {\n    placement: (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(state.placement),\n    variation: (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n});\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/modifiers/eventListeners.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n});\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/modifiers/flip.js":
/*!***********************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/modifiers/flip.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getOppositePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js\");\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getOppositeVariationPlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js\");\n/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/detectOverflow.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/computeAutoPlacement.js */ \"./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/getVariation.js */ \"./node_modules/@popperjs/core/lib/utils/getVariation.js\");\n\n\n\n\n\n\n // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if ((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto) {\n    return [];\n  }\n\n  var oppositePlacement = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(placement);\n  return [(0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(placement), oppositePlacement, (0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [(0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto ? (0,_utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(placement);\n\n    var isStartVariation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.start;\n    var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.top, _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.right : _enums_js__WEBPACK_IMPORTED_MODULE_1__.left : isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_1__.top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(mainVariationSide);\n    }\n\n    var altVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases – research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n});\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/modifiers/flip.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/modifiers/hide.js":
/*!***********************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/modifiers/hide.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/detectOverflow.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n\n\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom, _enums_js__WEBPACK_IMPORTED_MODULE_0__.left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n});\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/modifiers/hide.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/modifiers/index.js":
/*!************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/modifiers/index.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"applyStyles\": function() { return /* reexport safe */ _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"arrow\": function() { return /* reexport safe */ _arrow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; },\n/* harmony export */   \"computeStyles\": function() { return /* reexport safe */ _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; },\n/* harmony export */   \"eventListeners\": function() { return /* reexport safe */ _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; },\n/* harmony export */   \"flip\": function() { return /* reexport safe */ _flip_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; },\n/* harmony export */   \"hide\": function() { return /* reexport safe */ _hide_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; },\n/* harmony export */   \"offset\": function() { return /* reexport safe */ _offset_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; },\n/* harmony export */   \"popperOffsets\": function() { return /* reexport safe */ _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; },\n/* harmony export */   \"preventOverflow\": function() { return /* reexport safe */ _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./applyStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/applyStyles.js\");\n/* harmony import */ var _arrow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arrow.js */ \"./node_modules/@popperjs/core/lib/modifiers/arrow.js\");\n/* harmony import */ var _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./computeStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/computeStyles.js\");\n/* harmony import */ var _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eventListeners.js */ \"./node_modules/@popperjs/core/lib/modifiers/eventListeners.js\");\n/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flip.js */ \"./node_modules/@popperjs/core/lib/modifiers/flip.js\");\n/* harmony import */ var _hide_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hide.js */ \"./node_modules/@popperjs/core/lib/modifiers/hide.js\");\n/* harmony import */ var _offset_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offset.js */ \"./node_modules/@popperjs/core/lib/modifiers/offset.js\");\n/* harmony import */ var _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./popperOffsets.js */ \"./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js\");\n/* harmony import */ var _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./preventOverflow.js */ \"./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js\");\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/modifiers/index.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/modifiers/offset.js":
/*!*************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/modifiers/offset.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"distanceAndSkiddingToXY\": function() { return /* binding */ distanceAndSkiddingToXY; }\n/* harmony export */ });\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n\n // eslint-disable-next-line import/no-unused-modules\n\nfunction distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(placement);\n  var invertDistance = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = _enums_js__WEBPACK_IMPORTED_MODULE_1__.placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n});\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/modifiers/offset.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js":
/*!********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/computeOffsets.js */ \"./node_modules/@popperjs/core/lib/utils/computeOffsets.js\");\n\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = (0,_utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n});\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js\");\n/* harmony import */ var _utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getAltAxis.js */ \"./node_modules/@popperjs/core/lib/utils/getAltAxis.js\");\n/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/within.js */ \"./node_modules/@popperjs/core/lib/utils/within.js\");\n/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js\");\n/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\");\n/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/detectOverflow.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getVariation.js */ \"./node_modules/@popperjs/core/lib/utils/getVariation.js\");\n/* harmony import */ var _utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getFreshSideObject.js */ \"./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(state.placement);\n  var variation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(basePlacement);\n  var altAxis = (0,_utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left;\n    var altSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : (0,_utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.min)(min, tetherMin) : min, offset, tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.max)(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left;\n\n    var _altSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [_enums_js__WEBPACK_IMPORTED_MODULE_5__.top, _enums_js__WEBPACK_IMPORTED_MODULE_5__.left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.withinMaxClamp)(_tetherMin, _offset, _tetherMax) : (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n});\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/popper-lite.js":
/*!********************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/popper-lite.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createPopper\": function() { return /* binding */ createPopper; },\n/* harmony export */   \"defaultModifiers\": function() { return /* binding */ defaultModifiers; },\n/* harmony export */   \"detectOverflow\": function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; },\n/* harmony export */   \"popperGenerator\": function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator; }\n/* harmony export */ });\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./createPopper.js */ \"./node_modules/@popperjs/core/lib/createPopper.js\");\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createPopper.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ \"./node_modules/@popperjs/core/lib/modifiers/eventListeners.js\");\n/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ \"./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js\");\n/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/computeStyles.js\");\n/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/applyStyles.js\");\n\n\n\n\n\nvar defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]];\nvar createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator)({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/popper-lite.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/popper.js":
/*!***************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/popper.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"applyStyles\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.applyStyles; },\n/* harmony export */   \"arrow\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.arrow; },\n/* harmony export */   \"computeStyles\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.computeStyles; },\n/* harmony export */   \"createPopper\": function() { return /* binding */ createPopper; },\n/* harmony export */   \"createPopperLite\": function() { return /* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__.createPopper; },\n/* harmony export */   \"defaultModifiers\": function() { return /* binding */ defaultModifiers; },\n/* harmony export */   \"detectOverflow\": function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; },\n/* harmony export */   \"eventListeners\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.eventListeners; },\n/* harmony export */   \"flip\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.flip; },\n/* harmony export */   \"hide\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.hide; },\n/* harmony export */   \"offset\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.offset; },\n/* harmony export */   \"popperGenerator\": function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator; },\n/* harmony export */   \"popperOffsets\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.popperOffsets; },\n/* harmony export */   \"preventOverflow\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.preventOverflow; }\n/* harmony export */ });\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./createPopper.js */ \"./node_modules/@popperjs/core/lib/createPopper.js\");\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./createPopper.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ \"./node_modules/@popperjs/core/lib/modifiers/eventListeners.js\");\n/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ \"./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js\");\n/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/computeStyles.js\");\n/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/applyStyles.js\");\n/* harmony import */ var _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modifiers/offset.js */ \"./node_modules/@popperjs/core/lib/modifiers/offset.js\");\n/* harmony import */ var _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modifiers/flip.js */ \"./node_modules/@popperjs/core/lib/modifiers/flip.js\");\n/* harmony import */ var _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modifiers/preventOverflow.js */ \"./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js\");\n/* harmony import */ var _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modifiers/arrow.js */ \"./node_modules/@popperjs/core/lib/modifiers/arrow.js\");\n/* harmony import */ var _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modifiers/hide.js */ \"./node_modules/@popperjs/core/lib/modifiers/hide.js\");\n/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./popper-lite.js */ \"./node_modules/@popperjs/core/lib/popper-lite.js\");\n/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modifiers/index.js */ \"./node_modules/@popperjs/core/lib/modifiers/index.js\");\n\n\n\n\n\n\n\n\n\n\nvar defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]];\nvar createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator)({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\n // eslint-disable-next-line import/no-unused-modules\n\n // eslint-disable-next-line import/no-unused-modules\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/popper.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ computeAutoPlacement; }\n/* harmony export */ });\n/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ \"./node_modules/@popperjs/core/lib/utils/getVariation.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./detectOverflow.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n\n\n\n\nfunction computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements : _options$allowedAutoP;\n  var variation = (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(placement);\n  var placements = variation ? flipVariations ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements : _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements.filter(function (placement) {\n    return (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(placement) === variation;\n  }) : _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n\n    if (true) {\n      console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n    }\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = (0,_detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[(0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/computeOffsets.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ computeOffsets; }\n/* harmony export */ });\n/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ \"./node_modules/@popperjs/core/lib/utils/getVariation.js\");\n/* harmony import */ var _getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getMainAxisFromPlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n\n\n\n\nfunction computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? (0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(placement) : null;\n  var variation = placement ? (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case _enums_js__WEBPACK_IMPORTED_MODULE_2__.top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case _enums_js__WEBPACK_IMPORTED_MODULE_2__.right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case _enums_js__WEBPACK_IMPORTED_MODULE_2__.left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? (0,_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case _enums_js__WEBPACK_IMPORTED_MODULE_2__.start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case _enums_js__WEBPACK_IMPORTED_MODULE_2__.end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/computeOffsets.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/debounce.js":
/*!***********************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/debounce.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ debounce; }\n/* harmony export */ });\nfunction debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/debounce.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/detectOverflow.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ detectOverflow; }\n/* harmony export */ });\n/* harmony import */ var _dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getClippingRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js\");\n/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getBoundingClientRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js\");\n/* harmony import */ var _computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./computeOffsets.js */ \"./node_modules/@popperjs/core/lib/utils/computeOffsets.js\");\n/* harmony import */ var _rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./rectToClientRect.js */ \"./node_modules/@popperjs/core/lib/utils/rectToClientRect.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergePaddingObject.js */ \"./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js\");\n/* harmony import */ var _expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./expandToHashMap.js */ \"./node_modules/@popperjs/core/lib/utils/expandToHashMap.js\");\n\n\n\n\n\n\n\n\n // eslint-disable-next-line import/no-unused-modules\n\nfunction detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$strategy = _options.strategy,\n      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = (0,_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(typeof padding !== 'number' ? padding : (0,_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements));\n  var altContext = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference : _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = (0,_dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])((0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(element) ? element : element.contextElement || (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(state.elements.popper), boundary, rootBoundary, strategy);\n  var referenceClientRect = (0,_dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(state.elements.reference);\n  var popperOffsets = (0,_computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = (0,_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/detectOverflow.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js":
/*!******************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/expandToHashMap.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ expandToHashMap; }\n/* harmony export */ });\nfunction expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/format.js":
/*!*********************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/format.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ format; }\n/* harmony export */ });\nfunction format(str) {\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n\n  return [].concat(args).reduce(function (p, c) {\n    return p.replace(/%s/, c);\n  }, str);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/format.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js":
/*!*************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/getAltAxis.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getAltAxis; }\n/* harmony export */ });\nfunction getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/getAltAxis.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/getBasePlacement.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getBasePlacement; }\n/* harmony export */ });\n\nfunction getBasePlacement(placement) {\n  return placement.split('-')[0];\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getFreshSideObject; }\n/* harmony export */ });\nfunction getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getMainAxisFromPlacement; }\n/* harmony export */ });\nfunction getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getOppositePlacement; }\n/* harmony export */ });\nvar hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getOppositeVariationPlacement; }\n/* harmony export */ });\nvar hash = {\n  start: 'end',\n  end: 'start'\n};\nfunction getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/getVariation.js":
/*!***************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/getVariation.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getVariation; }\n/* harmony export */ });\nfunction getVariation(placement) {\n  return placement.split('-')[1];\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/getVariation.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/math.js":
/*!*******************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/math.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"max\": function() { return /* binding */ max; },\n/* harmony export */   \"min\": function() { return /* binding */ min; },\n/* harmony export */   \"round\": function() { return /* binding */ round; }\n/* harmony export */ });\nvar max = Math.max;\nvar min = Math.min;\nvar round = Math.round;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/math.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/mergeByName.js":
/*!**************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/mergeByName.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ mergeByName; }\n/* harmony export */ });\nfunction mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/mergeByName.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ mergePaddingObject; }\n/* harmony export */ });\n/* harmony import */ var _getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getFreshSideObject.js */ \"./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js\");\n\nfunction mergePaddingObject(paddingObject) {\n  return Object.assign({}, (0,_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(), paddingObject);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/orderModifiers.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ orderModifiers; }\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nfunction orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/orderModifiers.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/rectToClientRect.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ rectToClientRect; }\n/* harmony export */ });\nfunction rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/uniqueBy.js":
/*!***********************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/uniqueBy.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ uniqueBy; }\n/* harmony export */ });\nfunction uniqueBy(arr, fn) {\n  var identifiers = new Set();\n  return arr.filter(function (item) {\n    var identifier = fn(item);\n\n    if (!identifiers.has(identifier)) {\n      identifiers.add(identifier);\n      return true;\n    }\n  });\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/uniqueBy.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/userAgent.js":
/*!************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/userAgent.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getUAString; }\n/* harmony export */ });\nfunction getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/userAgent.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/validateModifiers.js":
/*!********************************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/validateModifiers.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ validateModifiers; }\n/* harmony export */ });\n/* harmony import */ var _format_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./format.js */ \"./node_modules/@popperjs/core/lib/utils/format.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n\n\nvar INVALID_MODIFIER_ERROR = 'Popper: modifier \"%s\" provided an invalid %s property, expected %s but got %s';\nvar MISSING_DEPENDENCY_ERROR = 'Popper: modifier \"%s\" requires \"%s\", but \"%s\" modifier is not available';\nvar VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options'];\nfunction validateModifiers(modifiers) {\n  modifiers.forEach(function (modifier) {\n    [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)`\n    .filter(function (value, index, self) {\n      return self.indexOf(value) === index;\n    }).forEach(function (key) {\n      switch (key) {\n        case 'name':\n          if (typeof modifier.name !== 'string') {\n            console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(INVALID_MODIFIER_ERROR, String(modifier.name), '\"name\"', '\"string\"', \"\\\"\" + String(modifier.name) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'enabled':\n          if (typeof modifier.enabled !== 'boolean') {\n            console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(INVALID_MODIFIER_ERROR, modifier.name, '\"enabled\"', '\"boolean\"', \"\\\"\" + String(modifier.enabled) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'phase':\n          if (_enums_js__WEBPACK_IMPORTED_MODULE_1__.modifierPhases.indexOf(modifier.phase) < 0) {\n            console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(INVALID_MODIFIER_ERROR, modifier.name, '\"phase\"', \"either \" + _enums_js__WEBPACK_IMPORTED_MODULE_1__.modifierPhases.join(', '), \"\\\"\" + String(modifier.phase) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'fn':\n          if (typeof modifier.fn !== 'function') {\n            console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(INVALID_MODIFIER_ERROR, modifier.name, '\"fn\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'effect':\n          if (modifier.effect != null && typeof modifier.effect !== 'function') {\n            console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(INVALID_MODIFIER_ERROR, modifier.name, '\"effect\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'requires':\n          if (modifier.requires != null && !Array.isArray(modifier.requires)) {\n            console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(INVALID_MODIFIER_ERROR, modifier.name, '\"requires\"', '\"array\"', \"\\\"\" + String(modifier.requires) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'requiresIfExists':\n          if (!Array.isArray(modifier.requiresIfExists)) {\n            console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(INVALID_MODIFIER_ERROR, modifier.name, '\"requiresIfExists\"', '\"array\"', \"\\\"\" + String(modifier.requiresIfExists) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'options':\n        case 'data':\n          break;\n\n        default:\n          console.error(\"PopperJS: an invalid property has been provided to the \\\"\" + modifier.name + \"\\\" modifier, valid properties are \" + VALID_PROPERTIES.map(function (s) {\n            return \"\\\"\" + s + \"\\\"\";\n          }).join(', ') + \"; but \\\"\" + key + \"\\\" was provided.\");\n      }\n\n      modifier.requires && modifier.requires.forEach(function (requirement) {\n        if (modifiers.find(function (mod) {\n          return mod.name === requirement;\n        }) == null) {\n          console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));\n        }\n      });\n    });\n  });\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/validateModifiers.js?");

/***/ }),

/***/ "./node_modules/@popperjs/core/lib/utils/within.js":
/*!*********************************************************!*\
  !*** ./node_modules/@popperjs/core/lib/utils/within.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"within\": function() { return /* binding */ within; },\n/* harmony export */   \"withinMaxClamp\": function() { return /* binding */ withinMaxClamp; }\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\nfunction within(min, value, max) {\n  return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.max)(min, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.min)(value, max));\n}\nfunction withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@popperjs/core/lib/utils/within.js?");

/***/ }),

/***/ "./node_modules/@probe.gl/env/dist/esm/lib/get-browser.js":
/*!****************************************************************!*\
  !*** ./node_modules/@probe.gl/env/dist/esm/lib/get-browser.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getBrowser; },\n/* harmony export */   \"isMobile\": function() { return /* binding */ isMobile; }\n/* harmony export */ });\n/* harmony import */ var _is_browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-browser */ \"./node_modules/@probe.gl/env/dist/esm/lib/is-browser.js\");\n/* harmony import */ var _is_electron__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-electron */ \"./node_modules/@probe.gl/env/dist/esm/lib/is-electron.js\");\n\n\nconst window = globalThis;\nfunction isMobile() {\n  return typeof window.orientation !== 'undefined';\n}\nfunction getBrowser(mockUserAgent) {\n  if (!mockUserAgent && !(0,_is_browser__WEBPACK_IMPORTED_MODULE_0__[\"default\"])()) {\n    return 'Node';\n  }\n\n  if ((0,_is_electron__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(mockUserAgent)) {\n    return 'Electron';\n  }\n\n  const navigator_ = typeof navigator !== 'undefined' ? navigator : {};\n  const userAgent = mockUserAgent || navigator_.userAgent || '';\n\n  if (userAgent.indexOf('Edge') > -1) {\n    return 'Edge';\n  }\n\n  const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n  const isTrident = userAgent.indexOf('Trident/') !== -1;\n\n  if (isMSIE || isTrident) {\n    return 'IE';\n  }\n\n  if (window.chrome) {\n    return 'Chrome';\n  }\n\n  if (window.safari) {\n    return 'Safari';\n  }\n\n  if (window.mozInnerScreenX) {\n    return 'Firefox';\n  }\n\n  return 'Unknown';\n}\n//# sourceMappingURL=get-browser.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@probe.gl/env/dist/esm/lib/get-browser.js?");

/***/ }),

/***/ "./node_modules/@probe.gl/env/dist/esm/lib/globals.js":
/*!************************************************************!*\
  !*** ./node_modules/@probe.gl/env/dist/esm/lib/globals.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"console\": function() { return /* binding */ console_; },\n/* harmony export */   \"document\": function() { return /* binding */ document_; },\n/* harmony export */   \"global\": function() { return /* binding */ global_; },\n/* harmony export */   \"process\": function() { return /* binding */ process_; },\n/* harmony export */   \"self\": function() { return /* binding */ self_; },\n/* harmony export */   \"window\": function() { return /* binding */ window_; }\n/* harmony export */ });\n/* provided dependency */ var process = __webpack_require__(/*! process/browser */ \"./node_modules/process/browser.js\");\nconst globals = {\n  self: typeof self !== 'undefined' && self,\n  window: typeof window !== 'undefined' && window,\n  global: typeof __webpack_require__.g !== 'undefined' && __webpack_require__.g,\n  document: typeof document !== 'undefined' && document,\n  process: typeof process === 'object' && process\n};\nconst global_ = globalThis;\nconst self_ = globals.self || globals.window || globals.global;\nconst window_ = globals.window || globals.self || globals.global;\nconst document_ = globals.document || {};\nconst process_ = globals.process || {};\nconst console_ = console;\n\n//# sourceMappingURL=globals.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@probe.gl/env/dist/esm/lib/globals.js?");

/***/ }),

/***/ "./node_modules/@probe.gl/env/dist/esm/lib/is-browser.js":
/*!***************************************************************!*\
  !*** ./node_modules/@probe.gl/env/dist/esm/lib/is-browser.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ isBrowser; },\n/* harmony export */   \"isBrowserMainThread\": function() { return /* binding */ isBrowserMainThread; }\n/* harmony export */ });\n/* harmony import */ var _is_electron__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-electron */ \"./node_modules/@probe.gl/env/dist/esm/lib/is-electron.js\");\n/* provided dependency */ var process = __webpack_require__(/*! process/browser */ \"./node_modules/process/browser.js\");\n\nfunction isBrowser() {\n  const isNode = typeof process === 'object' && String(process) === '[object process]' && !process.browser;\n  return !isNode || (0,_is_electron__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n}\nfunction isBrowserMainThread() {\n  return isBrowser() && typeof document !== 'undefined';\n}\n//# sourceMappingURL=is-browser.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@probe.gl/env/dist/esm/lib/is-browser.js?");

/***/ }),

/***/ "./node_modules/@probe.gl/env/dist/esm/lib/is-electron.js":
/*!****************************************************************!*\
  !*** ./node_modules/@probe.gl/env/dist/esm/lib/is-electron.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ isElectron; }\n/* harmony export */ });\n/* provided dependency */ var process = __webpack_require__(/*! process/browser */ \"./node_modules/process/browser.js\");\nfunction isElectron(mockUserAgent) {\n  if (typeof window !== 'undefined' && typeof window.process === 'object' && window.process.type === 'renderer') {\n    return true;\n  }\n\n  if (typeof process !== 'undefined' && typeof process.versions === 'object' && Boolean(process.versions['electron'])) {\n    return true;\n  }\n\n  const realUserAgent = typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent;\n  const userAgent = mockUserAgent || realUserAgent;\n\n  if (userAgent && userAgent.indexOf('Electron') >= 0) {\n    return true;\n  }\n\n  return false;\n}\n//# sourceMappingURL=is-electron.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@probe.gl/env/dist/esm/lib/is-electron.js?");

/***/ }),

/***/ "./node_modules/@probe.gl/env/dist/esm/utils/globals.js":
/*!**************************************************************!*\
  !*** ./node_modules/@probe.gl/env/dist/esm/utils/globals.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"VERSION\": function() { return /* binding */ VERSION; },\n/* harmony export */   \"console\": function() { return /* reexport safe */ _lib_globals__WEBPACK_IMPORTED_MODULE_0__.console; },\n/* harmony export */   \"document\": function() { return /* reexport safe */ _lib_globals__WEBPACK_IMPORTED_MODULE_0__.document; },\n/* harmony export */   \"global\": function() { return /* reexport safe */ _lib_globals__WEBPACK_IMPORTED_MODULE_0__.global; },\n/* harmony export */   \"isBrowser\": function() { return /* binding */ isBrowser; },\n/* harmony export */   \"process\": function() { return /* reexport safe */ _lib_globals__WEBPACK_IMPORTED_MODULE_0__.process; },\n/* harmony export */   \"self\": function() { return /* reexport safe */ _lib_globals__WEBPACK_IMPORTED_MODULE_0__.self; },\n/* harmony export */   \"window\": function() { return /* reexport safe */ _lib_globals__WEBPACK_IMPORTED_MODULE_0__.window; }\n/* harmony export */ });\n/* harmony import */ var _lib_is_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lib/is-browser */ \"./node_modules/@probe.gl/env/dist/esm/lib/is-browser.js\");\n/* harmony import */ var _lib_globals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lib/globals */ \"./node_modules/@probe.gl/env/dist/esm/lib/globals.js\");\n\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\nconst isBrowser = (0,_lib_is_browser__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n//# sourceMappingURL=globals.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@probe.gl/env/dist/esm/utils/globals.js?");

/***/ }),

/***/ "./node_modules/@probe.gl/log/dist/esm/log.js":
/*!****************************************************!*\
  !*** ./node_modules/@probe.gl/log/dist/esm/log.js ***!
  \****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Log\": function() { return /* binding */ Log; },\n/* harmony export */   \"normalizeArguments\": function() { return /* binding */ normalizeArguments; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _probe_gl_env__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @probe.gl/env */ \"./node_modules/@probe.gl/env/dist/esm/lib/is-browser.js\");\n/* harmony import */ var _probe_gl_env__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @probe.gl/env */ \"./node_modules/@probe.gl/env/dist/esm/utils/globals.js\");\n/* harmony import */ var _utils_local_storage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/local-storage */ \"./node_modules/@probe.gl/log/dist/esm/utils/local-storage.js\");\n/* harmony import */ var _utils_formatters__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/formatters */ \"./node_modules/@probe.gl/log/dist/esm/utils/formatters.js\");\n/* harmony import */ var _utils_color__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/color */ \"./node_modules/@probe.gl/log/dist/esm/utils/color.js\");\n/* harmony import */ var _utils_autobind__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/autobind */ \"./node_modules/@probe.gl/log/dist/esm/utils/autobind.js\");\n/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/assert */ \"./node_modules/@probe.gl/log/dist/esm/utils/assert.js\");\n/* harmony import */ var _utils_hi_res_timestamp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/hi-res-timestamp */ \"./node_modules/@probe.gl/log/dist/esm/utils/hi-res-timestamp.js\");\n\n\n\n\n\n\n\n\nconst originalConsole = {\n  debug: _probe_gl_env__WEBPACK_IMPORTED_MODULE_1__[\"default\"] ? console.debug || console.log : console.log,\n  log: console.log,\n  info: console.info,\n  warn: console.warn,\n  error: console.error\n};\nconst DEFAULT_SETTINGS = {\n  enabled: true,\n  level: 0\n};\n\nfunction noop() {}\n\nconst cache = {};\nconst ONCE = {\n  once: true\n};\nclass Log {\n  constructor() {\n    let {\n      id\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n      id: ''\n    };\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"id\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"VERSION\", _probe_gl_env__WEBPACK_IMPORTED_MODULE_2__.VERSION);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_startTs\", (0,_utils_hi_res_timestamp__WEBPACK_IMPORTED_MODULE_3__.getHiResTimestamp)());\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_deltaTs\", (0,_utils_hi_res_timestamp__WEBPACK_IMPORTED_MODULE_3__.getHiResTimestamp)());\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_storage\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"userData\", {});\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"LOG_THROTTLE_TIMEOUT\", 0);\n\n    this.id = id;\n    this.userData = {};\n    this._storage = new _utils_local_storage__WEBPACK_IMPORTED_MODULE_4__.LocalStorage(\"__probe-\".concat(this.id, \"__\"), DEFAULT_SETTINGS);\n    this.timeStamp(\"\".concat(this.id, \" started\"));\n    (0,_utils_autobind__WEBPACK_IMPORTED_MODULE_5__.autobind)(this);\n    Object.seal(this);\n  }\n\n  set level(newLevel) {\n    this.setLevel(newLevel);\n  }\n\n  get level() {\n    return this.getLevel();\n  }\n\n  isEnabled() {\n    return this._storage.config.enabled;\n  }\n\n  getLevel() {\n    return this._storage.config.level;\n  }\n\n  getTotal() {\n    return Number(((0,_utils_hi_res_timestamp__WEBPACK_IMPORTED_MODULE_3__.getHiResTimestamp)() - this._startTs).toPrecision(10));\n  }\n\n  getDelta() {\n    return Number(((0,_utils_hi_res_timestamp__WEBPACK_IMPORTED_MODULE_3__.getHiResTimestamp)() - this._deltaTs).toPrecision(10));\n  }\n\n  set priority(newPriority) {\n    this.level = newPriority;\n  }\n\n  get priority() {\n    return this.level;\n  }\n\n  getPriority() {\n    return this.level;\n  }\n\n  enable() {\n    let enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n    this._storage.setConfiguration({\n      enabled\n    });\n\n    return this;\n  }\n\n  setLevel(level) {\n    this._storage.setConfiguration({\n      level\n    });\n\n    return this;\n  }\n\n  get(setting) {\n    return this._storage.config[setting];\n  }\n\n  set(setting, value) {\n    this._storage.setConfiguration({\n      [setting]: value\n    });\n  }\n\n  settings() {\n    if (console.table) {\n      console.table(this._storage.config);\n    } else {\n      console.log(this._storage.config);\n    }\n  }\n\n  assert(condition, message) {\n    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(condition, message);\n  }\n\n  warn(message) {\n    return this._getLogFunction(0, message, originalConsole.warn, arguments, ONCE);\n  }\n\n  error(message) {\n    return this._getLogFunction(0, message, originalConsole.error, arguments);\n  }\n\n  deprecated(oldUsage, newUsage) {\n    return this.warn(\"`\".concat(oldUsage, \"` is deprecated and will be removed in a later version. Use `\").concat(newUsage, \"` instead\"));\n  }\n\n  removed(oldUsage, newUsage) {\n    return this.error(\"`\".concat(oldUsage, \"` has been removed. Use `\").concat(newUsage, \"` instead\"));\n  }\n\n  probe(logLevel, message) {\n    return this._getLogFunction(logLevel, message, originalConsole.log, arguments, {\n      time: true,\n      once: true\n    });\n  }\n\n  log(logLevel, message) {\n    return this._getLogFunction(logLevel, message, originalConsole.debug, arguments);\n  }\n\n  info(logLevel, message) {\n    return this._getLogFunction(logLevel, message, console.info, arguments);\n  }\n\n  once(logLevel, message) {\n    for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n      args[_key - 2] = arguments[_key];\n    }\n\n    return this._getLogFunction(logLevel, message, originalConsole.debug || originalConsole.info, arguments, ONCE);\n  }\n\n  table(logLevel, table, columns) {\n    if (table) {\n      return this._getLogFunction(logLevel, table, console.table || noop, columns && [columns], {\n        tag: getTableHeader(table)\n      });\n    }\n\n    return noop;\n  }\n\n  image(_ref) {\n    let {\n      logLevel,\n      priority,\n      image,\n      message = '',\n      scale = 1\n    } = _ref;\n\n    if (!this._shouldLog(logLevel || priority)) {\n      return noop;\n    }\n\n    return _probe_gl_env__WEBPACK_IMPORTED_MODULE_1__[\"default\"] ? logImageInBrowser({\n      image,\n      message,\n      scale\n    }) : logImageInNode({\n      image,\n      message,\n      scale\n    });\n  }\n\n  time(logLevel, message) {\n    return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);\n  }\n\n  timeEnd(logLevel, message) {\n    return this._getLogFunction(logLevel, message, console.timeEnd ? console.timeEnd : console.info);\n  }\n\n  timeStamp(logLevel, message) {\n    return this._getLogFunction(logLevel, message, console.timeStamp || noop);\n  }\n\n  group(logLevel, message) {\n    let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n      collapsed: false\n    };\n    const options = normalizeArguments({\n      logLevel,\n      message,\n      opts\n    });\n    const {\n      collapsed\n    } = opts;\n    options.method = (collapsed ? console.groupCollapsed : console.group) || console.info;\n    return this._getLogFunction(options);\n  }\n\n  groupCollapsed(logLevel, message) {\n    let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    return this.group(logLevel, message, Object.assign({}, opts, {\n      collapsed: true\n    }));\n  }\n\n  groupEnd(logLevel) {\n    return this._getLogFunction(logLevel, '', console.groupEnd || noop);\n  }\n\n  withGroup(logLevel, message, func) {\n    this.group(logLevel, message)();\n\n    try {\n      func();\n    } finally {\n      this.groupEnd(logLevel)();\n    }\n  }\n\n  trace() {\n    if (console.trace) {\n      console.trace();\n    }\n  }\n\n  _shouldLog(logLevel) {\n    return this.isEnabled() && this.getLevel() >= normalizeLogLevel(logLevel);\n  }\n\n  _getLogFunction(logLevel, message, method, args, opts) {\n    if (this._shouldLog(logLevel)) {\n      opts = normalizeArguments({\n        logLevel,\n        message,\n        args,\n        opts\n      });\n      method = method || opts.method;\n      (0,_utils_assert__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(method);\n      opts.total = this.getTotal();\n      opts.delta = this.getDelta();\n      this._deltaTs = (0,_utils_hi_res_timestamp__WEBPACK_IMPORTED_MODULE_3__.getHiResTimestamp)();\n      const tag = opts.tag || opts.message;\n\n      if (opts.once) {\n        if (!cache[tag]) {\n          cache[tag] = (0,_utils_hi_res_timestamp__WEBPACK_IMPORTED_MODULE_3__.getHiResTimestamp)();\n        } else {\n          return noop;\n        }\n      }\n\n      message = decorateMessage(this.id, opts.message, opts);\n      return method.bind(console, message, ...opts.args);\n    }\n\n    return noop;\n  }\n\n}\n\n(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Log, \"VERSION\", _probe_gl_env__WEBPACK_IMPORTED_MODULE_2__.VERSION);\n\nfunction normalizeLogLevel(logLevel) {\n  if (!logLevel) {\n    return 0;\n  }\n\n  let resolvedLevel;\n\n  switch (typeof logLevel) {\n    case 'number':\n      resolvedLevel = logLevel;\n      break;\n\n    case 'object':\n      resolvedLevel = logLevel.logLevel || logLevel.priority || 0;\n      break;\n\n    default:\n      return 0;\n  }\n\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);\n  return resolvedLevel;\n}\n\nfunction normalizeArguments(opts) {\n  const {\n    logLevel,\n    message\n  } = opts;\n  opts.logLevel = normalizeLogLevel(logLevel);\n  const args = opts.args ? Array.from(opts.args) : [];\n\n  while (args.length && args.shift() !== message) {}\n\n  switch (typeof logLevel) {\n    case 'string':\n    case 'function':\n      if (message !== undefined) {\n        args.unshift(message);\n      }\n\n      opts.message = logLevel;\n      break;\n\n    case 'object':\n      Object.assign(opts, logLevel);\n      break;\n\n    default:\n  }\n\n  if (typeof opts.message === 'function') {\n    opts.message = opts.message();\n  }\n\n  const messageType = typeof opts.message;\n  (0,_utils_assert__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(messageType === 'string' || messageType === 'object');\n  return Object.assign(opts, {\n    args\n  }, opts.opts);\n}\n\nfunction decorateMessage(id, message, opts) {\n  if (typeof message === 'string') {\n    const time = opts.time ? (0,_utils_formatters__WEBPACK_IMPORTED_MODULE_7__.leftPad)((0,_utils_formatters__WEBPACK_IMPORTED_MODULE_7__.formatTime)(opts.total)) : '';\n    message = opts.time ? \"\".concat(id, \": \").concat(time, \"  \").concat(message) : \"\".concat(id, \": \").concat(message);\n    message = (0,_utils_color__WEBPACK_IMPORTED_MODULE_8__.addColor)(message, opts.color, opts.background);\n  }\n\n  return message;\n}\n\nfunction logImageInNode(_ref2) {\n  let {\n    image,\n    message = '',\n    scale = 1\n  } = _ref2;\n  console.warn('removed');\n  return noop;\n}\n\nfunction logImageInBrowser(_ref3) {\n  let {\n    image,\n    message = '',\n    scale = 1\n  } = _ref3;\n\n  if (typeof image === 'string') {\n    const img = new Image();\n\n    img.onload = () => {\n      const args = (0,_utils_formatters__WEBPACK_IMPORTED_MODULE_7__.formatImage)(img, message, scale);\n      console.log(...args);\n    };\n\n    img.src = image;\n    return noop;\n  }\n\n  const element = image.nodeName || '';\n\n  if (element.toLowerCase() === 'img') {\n    console.log(...(0,_utils_formatters__WEBPACK_IMPORTED_MODULE_7__.formatImage)(image, message, scale));\n    return noop;\n  }\n\n  if (element.toLowerCase() === 'canvas') {\n    const img = new Image();\n\n    img.onload = () => console.log(...(0,_utils_formatters__WEBPACK_IMPORTED_MODULE_7__.formatImage)(img, message, scale));\n\n    img.src = image.toDataURL();\n    return noop;\n  }\n\n  return noop;\n}\n\nfunction getTableHeader(table) {\n  for (const key in table) {\n    for (const title in table[key]) {\n      return title || 'untitled';\n    }\n  }\n\n  return 'empty';\n}\n//# sourceMappingURL=log.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@probe.gl/log/dist/esm/log.js?");

/***/ }),

/***/ "./node_modules/@probe.gl/log/dist/esm/utils/assert.js":
/*!*************************************************************!*\
  !*** ./node_modules/@probe.gl/log/dist/esm/utils/assert.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ assert; }\n/* harmony export */ });\nfunction assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'Assertion failed');\n  }\n}\n//# sourceMappingURL=assert.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@probe.gl/log/dist/esm/utils/assert.js?");

/***/ }),

/***/ "./node_modules/@probe.gl/log/dist/esm/utils/autobind.js":
/*!***************************************************************!*\
  !*** ./node_modules/@probe.gl/log/dist/esm/utils/autobind.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"autobind\": function() { return /* binding */ autobind; }\n/* harmony export */ });\nfunction autobind(obj) {\n  let predefined = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ['constructor'];\n  const proto = Object.getPrototypeOf(obj);\n  const propNames = Object.getOwnPropertyNames(proto);\n\n  for (const key of propNames) {\n    if (typeof obj[key] === 'function') {\n      if (!predefined.find(name => key === name)) {\n        obj[key] = obj[key].bind(obj);\n      }\n    }\n  }\n}\n//# sourceMappingURL=autobind.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@probe.gl/log/dist/esm/utils/autobind.js?");

/***/ }),

/***/ "./node_modules/@probe.gl/log/dist/esm/utils/color.js":
/*!************************************************************!*\
  !*** ./node_modules/@probe.gl/log/dist/esm/utils/color.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"COLOR\": function() { return /* binding */ COLOR; },\n/* harmony export */   \"addColor\": function() { return /* binding */ addColor; }\n/* harmony export */ });\n/* harmony import */ var _probe_gl_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @probe.gl/env */ \"./node_modules/@probe.gl/env/dist/esm/lib/is-browser.js\");\n\nlet COLOR;\n\n(function (COLOR) {\n  COLOR[COLOR[\"BLACK\"] = 30] = \"BLACK\";\n  COLOR[COLOR[\"RED\"] = 31] = \"RED\";\n  COLOR[COLOR[\"GREEN\"] = 32] = \"GREEN\";\n  COLOR[COLOR[\"YELLOW\"] = 33] = \"YELLOW\";\n  COLOR[COLOR[\"BLUE\"] = 34] = \"BLUE\";\n  COLOR[COLOR[\"MAGENTA\"] = 35] = \"MAGENTA\";\n  COLOR[COLOR[\"CYAN\"] = 36] = \"CYAN\";\n  COLOR[COLOR[\"WHITE\"] = 37] = \"WHITE\";\n  COLOR[COLOR[\"BRIGHT_BLACK\"] = 90] = \"BRIGHT_BLACK\";\n  COLOR[COLOR[\"BRIGHT_RED\"] = 91] = \"BRIGHT_RED\";\n  COLOR[COLOR[\"BRIGHT_GREEN\"] = 92] = \"BRIGHT_GREEN\";\n  COLOR[COLOR[\"BRIGHT_YELLOW\"] = 93] = \"BRIGHT_YELLOW\";\n  COLOR[COLOR[\"BRIGHT_BLUE\"] = 94] = \"BRIGHT_BLUE\";\n  COLOR[COLOR[\"BRIGHT_MAGENTA\"] = 95] = \"BRIGHT_MAGENTA\";\n  COLOR[COLOR[\"BRIGHT_CYAN\"] = 96] = \"BRIGHT_CYAN\";\n  COLOR[COLOR[\"BRIGHT_WHITE\"] = 97] = \"BRIGHT_WHITE\";\n})(COLOR || (COLOR = {}));\n\nfunction getColor(color) {\n  return typeof color === 'string' ? COLOR[color.toUpperCase()] || COLOR.WHITE : color;\n}\n\nfunction addColor(string, color, background) {\n  if (!_probe_gl_env__WEBPACK_IMPORTED_MODULE_0__[\"default\"] && typeof string === 'string') {\n    if (color) {\n      color = getColor(color);\n      string = \"\\x1B[\".concat(color, \"m\").concat(string, \"\\x1B[39m\");\n    }\n\n    if (background) {\n      color = getColor(background);\n      string = \"\\x1B[\".concat(background + 10, \"m\").concat(string, \"\\x1B[49m\");\n    }\n  }\n\n  return string;\n}\n//# sourceMappingURL=color.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@probe.gl/log/dist/esm/utils/color.js?");

/***/ }),

/***/ "./node_modules/@probe.gl/log/dist/esm/utils/formatters.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@probe.gl/log/dist/esm/utils/formatters.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"formatImage\": function() { return /* binding */ formatImage; },\n/* harmony export */   \"formatTime\": function() { return /* binding */ formatTime; },\n/* harmony export */   \"formatValue\": function() { return /* binding */ formatValue; },\n/* harmony export */   \"leftPad\": function() { return /* binding */ leftPad; },\n/* harmony export */   \"rightPad\": function() { return /* binding */ rightPad; }\n/* harmony export */ });\nfunction formatTime(ms) {\n  let formatted;\n\n  if (ms < 10) {\n    formatted = \"\".concat(ms.toFixed(2), \"ms\");\n  } else if (ms < 100) {\n    formatted = \"\".concat(ms.toFixed(1), \"ms\");\n  } else if (ms < 1000) {\n    formatted = \"\".concat(ms.toFixed(0), \"ms\");\n  } else {\n    formatted = \"\".concat((ms / 1000).toFixed(2), \"s\");\n  }\n\n  return formatted;\n}\nfunction leftPad(string) {\n  let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 8;\n  const padLength = Math.max(length - string.length, 0);\n  return \"\".concat(' '.repeat(padLength)).concat(string);\n}\nfunction rightPad(string) {\n  let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 8;\n  const padLength = Math.max(length - string.length, 0);\n  return \"\".concat(string).concat(' '.repeat(padLength));\n}\nfunction formatValue(v) {\n  let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const EPSILON = 1e-16;\n  const {\n    isInteger = false\n  } = opts;\n\n  if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n    return formatArrayValue(v, opts);\n  }\n\n  if (!Number.isFinite(v)) {\n    return String(v);\n  }\n\n  if (Math.abs(v) < EPSILON) {\n    return isInteger ? '0' : '0.';\n  }\n\n  if (isInteger) {\n    return v.toFixed(0);\n  }\n\n  if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n    return v.toFixed(0);\n  }\n\n  const string = v.toPrecision(2);\n  const decimal = string.indexOf('.0');\n  return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n\nfunction formatArrayValue(v, opts) {\n  const {\n    maxElts = 16,\n    size = 1\n  } = opts;\n  let string = '[';\n\n  for (let i = 0; i < v.length && i < maxElts; ++i) {\n    if (i > 0) {\n      string += \",\".concat(i % size === 0 ? ' ' : '');\n    }\n\n    string += formatValue(v[i], opts);\n  }\n\n  const terminator = v.length > maxElts ? '...' : ']';\n  return \"\".concat(string).concat(terminator);\n}\n\nfunction formatImage(image, message, scale) {\n  let maxWidth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 600;\n  const imageUrl = image.src.replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n\n  if (image.width > maxWidth) {\n    scale = Math.min(scale, maxWidth / image.width);\n  }\n\n  const width = image.width * scale;\n  const height = image.height * scale;\n  const style = ['font-size:1px;', \"padding:\".concat(Math.floor(height / 2), \"px \").concat(Math.floor(width / 2), \"px;\"), \"line-height:\".concat(height, \"px;\"), \"background:url(\".concat(imageUrl, \");\"), \"background-size:\".concat(width, \"px \").concat(height, \"px;\"), 'color:transparent;'].join('');\n  return [\"\".concat(message, \" %c+\"), style];\n}\n//# sourceMappingURL=formatters.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@probe.gl/log/dist/esm/utils/formatters.js?");

/***/ }),

/***/ "./node_modules/@probe.gl/log/dist/esm/utils/hi-res-timestamp.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@probe.gl/log/dist/esm/utils/hi-res-timestamp.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getHiResTimestamp\": function() { return /* binding */ getHiResTimestamp; }\n/* harmony export */ });\n/* harmony import */ var _probe_gl_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @probe.gl/env */ \"./node_modules/@probe.gl/env/dist/esm/lib/is-browser.js\");\n/* harmony import */ var _probe_gl_env__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @probe.gl/env */ \"./node_modules/@probe.gl/env/dist/esm/lib/globals.js\");\n\nfunction getHiResTimestamp() {\n  let timestamp;\n\n  if (_probe_gl_env__WEBPACK_IMPORTED_MODULE_0__[\"default\"] && \"performance\" in _probe_gl_env__WEBPACK_IMPORTED_MODULE_1__.window) {\n    var _window$performance, _window$performance$n;\n\n    timestamp = _probe_gl_env__WEBPACK_IMPORTED_MODULE_1__.window === null || _probe_gl_env__WEBPACK_IMPORTED_MODULE_1__.window === void 0 ? void 0 : (_window$performance = _probe_gl_env__WEBPACK_IMPORTED_MODULE_1__.window.performance) === null || _window$performance === void 0 ? void 0 : (_window$performance$n = _window$performance.now) === null || _window$performance$n === void 0 ? void 0 : _window$performance$n.call(_window$performance);\n  } else if (\"hrtime\" in _probe_gl_env__WEBPACK_IMPORTED_MODULE_1__.process) {\n    var _process$hrtime;\n\n    const timeParts = _probe_gl_env__WEBPACK_IMPORTED_MODULE_1__.process === null || _probe_gl_env__WEBPACK_IMPORTED_MODULE_1__.process === void 0 ? void 0 : (_process$hrtime = _probe_gl_env__WEBPACK_IMPORTED_MODULE_1__.process.hrtime) === null || _process$hrtime === void 0 ? void 0 : _process$hrtime.call(_probe_gl_env__WEBPACK_IMPORTED_MODULE_1__.process);\n    timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n  } else {\n    timestamp = Date.now();\n  }\n\n  return timestamp;\n}\n//# sourceMappingURL=hi-res-timestamp.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@probe.gl/log/dist/esm/utils/hi-res-timestamp.js?");

/***/ }),

/***/ "./node_modules/@probe.gl/log/dist/esm/utils/local-storage.js":
/*!********************************************************************!*\
  !*** ./node_modules/@probe.gl/log/dist/esm/utils/local-storage.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"LocalStorage\": function() { return /* binding */ LocalStorage; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\n\nfunction getStorage(type) {\n  try {\n    const storage = window[type];\n    const x = '__storage_test__';\n    storage.setItem(x, x);\n    storage.removeItem(x);\n    return storage;\n  } catch (e) {\n    return null;\n  }\n}\n\nclass LocalStorage {\n  constructor(id, defaultConfig) {\n    let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'sessionStorage';\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"storage\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"id\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"config\", void 0);\n\n    this.storage = getStorage(type);\n    this.id = id;\n    this.config = defaultConfig;\n\n    this._loadConfiguration();\n  }\n\n  getConfiguration() {\n    return this.config;\n  }\n\n  setConfiguration(configuration) {\n    Object.assign(this.config, configuration);\n\n    if (this.storage) {\n      const serialized = JSON.stringify(this.config);\n      this.storage.setItem(this.id, serialized);\n    }\n  }\n\n  _loadConfiguration() {\n    let configuration = {};\n\n    if (this.storage) {\n      const serializedConfiguration = this.storage.getItem(this.id);\n      configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};\n    }\n\n    Object.assign(this.config, configuration);\n    return this;\n  }\n\n}\n//# sourceMappingURL=local-storage.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@probe.gl/log/dist/esm/utils/local-storage.js?");

/***/ }),

/***/ "./node_modules/@probe.gl/stats/dist/esm/index.js":
/*!********************************************************!*\
  !*** ./node_modules/@probe.gl/stats/dist/esm/index.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Stat\": function() { return /* reexport safe */ _lib_stat__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; },\n/* harmony export */   \"Stats\": function() { return /* reexport safe */ _lib_stats__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"_getHiResTimestamp\": function() { return /* reexport safe */ _utils_hi_res_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _lib_stats__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/stats */ \"./node_modules/@probe.gl/stats/dist/esm/lib/stats.js\");\n/* harmony import */ var _lib_stat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/stat */ \"./node_modules/@probe.gl/stats/dist/esm/lib/stat.js\");\n/* harmony import */ var _utils_hi_res_timestamp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/hi-res-timestamp */ \"./node_modules/@probe.gl/stats/dist/esm/utils/hi-res-timestamp.js\");\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@probe.gl/stats/dist/esm/index.js?");

/***/ }),

/***/ "./node_modules/@probe.gl/stats/dist/esm/lib/stat.js":
/*!***********************************************************!*\
  !*** ./node_modules/@probe.gl/stats/dist/esm/lib/stat.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Stat; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _utils_hi_res_timestamp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/hi-res-timestamp */ \"./node_modules/@probe.gl/stats/dist/esm/utils/hi-res-timestamp.js\");\n\n\nclass Stat {\n  constructor(name, type) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"name\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"type\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"sampleSize\", 1);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"time\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"count\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"samples\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"lastTiming\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"lastSampleTime\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"lastSampleCount\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_count\", 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_time\", 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_samples\", 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_startTime\", 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_timerPending\", false);\n\n    this.name = name;\n    this.type = type;\n    this.reset();\n  }\n\n  setSampleSize(samples) {\n    this.sampleSize = samples;\n    return this;\n  }\n\n  incrementCount() {\n    this.addCount(1);\n    return this;\n  }\n\n  decrementCount() {\n    this.subtractCount(1);\n    return this;\n  }\n\n  addCount(value) {\n    this._count += value;\n    this._samples++;\n\n    this._checkSampling();\n\n    return this;\n  }\n\n  subtractCount(value) {\n    this._count -= value;\n    this._samples++;\n\n    this._checkSampling();\n\n    return this;\n  }\n\n  addTime(time) {\n    this._time += time;\n    this.lastTiming = time;\n    this._samples++;\n\n    this._checkSampling();\n\n    return this;\n  }\n\n  timeStart() {\n    this._startTime = (0,_utils_hi_res_timestamp__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n    this._timerPending = true;\n    return this;\n  }\n\n  timeEnd() {\n    if (!this._timerPending) {\n      return this;\n    }\n\n    this.addTime((0,_utils_hi_res_timestamp__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - this._startTime);\n    this._timerPending = false;\n\n    this._checkSampling();\n\n    return this;\n  }\n\n  getSampleAverageCount() {\n    return this.sampleSize > 0 ? this.lastSampleCount / this.sampleSize : 0;\n  }\n\n  getSampleAverageTime() {\n    return this.sampleSize > 0 ? this.lastSampleTime / this.sampleSize : 0;\n  }\n\n  getSampleHz() {\n    return this.lastSampleTime > 0 ? this.sampleSize / (this.lastSampleTime / 1000) : 0;\n  }\n\n  getAverageCount() {\n    return this.samples > 0 ? this.count / this.samples : 0;\n  }\n\n  getAverageTime() {\n    return this.samples > 0 ? this.time / this.samples : 0;\n  }\n\n  getHz() {\n    return this.time > 0 ? this.samples / (this.time / 1000) : 0;\n  }\n\n  reset() {\n    this.time = 0;\n    this.count = 0;\n    this.samples = 0;\n    this.lastTiming = 0;\n    this.lastSampleTime = 0;\n    this.lastSampleCount = 0;\n    this._count = 0;\n    this._time = 0;\n    this._samples = 0;\n    this._startTime = 0;\n    this._timerPending = false;\n    return this;\n  }\n\n  _checkSampling() {\n    if (this._samples === this.sampleSize) {\n      this.lastSampleTime = this._time;\n      this.lastSampleCount = this._count;\n      this.count += this._count;\n      this.time += this._time;\n      this.samples += this._samples;\n      this._time = 0;\n      this._count = 0;\n      this._samples = 0;\n    }\n  }\n\n}\n//# sourceMappingURL=stat.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@probe.gl/stats/dist/esm/lib/stat.js?");

/***/ }),

/***/ "./node_modules/@probe.gl/stats/dist/esm/lib/stats.js":
/*!************************************************************!*\
  !*** ./node_modules/@probe.gl/stats/dist/esm/lib/stats.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Stats; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _stat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stat */ \"./node_modules/@probe.gl/stats/dist/esm/lib/stat.js\");\n\n\nclass Stats {\n  constructor(options) {\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"id\", void 0);\n\n    (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"stats\", {});\n\n    this.id = options.id;\n    this.stats = {};\n\n    this._initializeStats(options.stats);\n\n    Object.seal(this);\n  }\n\n  get(name) {\n    let type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'count';\n    return this._getOrCreate({\n      name,\n      type\n    });\n  }\n\n  get size() {\n    return Object.keys(this.stats).length;\n  }\n\n  reset() {\n    for (const key in this.stats) {\n      this.stats[key].reset();\n    }\n\n    return this;\n  }\n\n  forEach(fn) {\n    for (const key in this.stats) {\n      fn(this.stats[key]);\n    }\n  }\n\n  getTable() {\n    const table = {};\n    this.forEach(stat => {\n      table[stat.name] = {\n        time: stat.time || 0,\n        count: stat.count || 0,\n        average: stat.getAverageTime() || 0,\n        hz: stat.getHz() || 0\n      };\n    });\n    return table;\n  }\n\n  _initializeStats() {\n    let stats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    stats.forEach(stat => this._getOrCreate(stat));\n  }\n\n  _getOrCreate(stat) {\n    if (!stat || !stat.name) {\n      return null;\n    }\n\n    const {\n      name,\n      type\n    } = stat;\n\n    if (!this.stats[name]) {\n      if (stat instanceof _stat__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) {\n        this.stats[name] = stat;\n      } else {\n        this.stats[name] = new _stat__WEBPACK_IMPORTED_MODULE_1__[\"default\"](name, type);\n      }\n    }\n\n    return this.stats[name];\n  }\n\n}\n//# sourceMappingURL=stats.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@probe.gl/stats/dist/esm/lib/stats.js?");

/***/ }),

/***/ "./node_modules/@probe.gl/stats/dist/esm/utils/hi-res-timestamp.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@probe.gl/stats/dist/esm/utils/hi-res-timestamp.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ getHiResTimestamp; }\n/* harmony export */ });\n/* provided dependency */ var process = __webpack_require__(/*! process/browser */ \"./node_modules/process/browser.js\");\nfunction getHiResTimestamp() {\n  let timestamp;\n\n  if (typeof window !== 'undefined' && window.performance) {\n    timestamp = window.performance.now();\n  } else if (typeof process !== 'undefined' && process.hrtime) {\n    const timeParts = process.hrtime();\n    timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n  } else {\n    timestamp = Date.now();\n  }\n\n  return timestamp;\n}\n//# sourceMappingURL=hi-res-timestamp.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@probe.gl/stats/dist/esm/utils/hi-res-timestamp.js?");

/***/ }),

/***/ "./node_modules/@react-dnd/invariant/dist/invariant.esm.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@react-dnd/invariant/dist/invariant.esm.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"invariant\": function() { return /* binding */ invariant; }\n/* harmony export */ });\n/**\r\n * Use invariant() to assert state which your program assumes to be true.\r\n *\r\n * Provide sprintf-style format (only %s is supported) and arguments\r\n * to provide information about what broke and what you were\r\n * expecting.\r\n *\r\n * The invariant message will be stripped in production, but the invariant\r\n * will remain to ensure logic does not differ in production.\r\n */\nfunction invariant(condition, format) {\n  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    args[_key - 2] = arguments[_key];\n  }\n\n  if (true) {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n\n    if (format === undefined) {\n      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n    } else {\n      var argIndex = 0;\n      error = new Error(format.replace(/%s/g, function () {\n        return args[argIndex++];\n      }));\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n\n    throw error;\n  }\n}\n\n\n//# sourceMappingURL=invariant.esm.js.map\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@react-dnd/invariant/dist/invariant.esm.js?");

/***/ }),

/***/ "./node_modules/@react-dnd/shallowequal/dist/shallowequal.esm.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@react-dnd/shallowequal/dist/shallowequal.esm.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"shallowEqual\": function() { return /* binding */ shallowEqual; }\n/* harmony export */ });\nfunction shallowEqual(objA, objB, compare, compareContext) {\n  var compareResult = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n  if (compareResult !== void 0) {\n    return !!compareResult;\n  }\n\n  if (objA === objB) {\n    return true;\n  }\n\n  if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); // Test for A's keys different from B.\n\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n\n    if (!bHasOwnProperty(key)) {\n      return false;\n    }\n\n    var valueA = objA[key];\n    var valueB = objB[key];\n    compareResult = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n    if (compareResult === false || compareResult === void 0 && valueA !== valueB) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n\n//# sourceMappingURL=shallowequal.esm.js.map\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@react-dnd/shallowequal/dist/shallowequal.esm.js?");

/***/ }),

/***/ "./src/components/AccordionMUI.js":
/*!****************************************!*\
  !*** ./src/components/AccordionMUI.js ***!
  \****************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_material_Accordion__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/material/Accordion */ \"./node_modules/@mui/material/Accordion/Accordion.js\");\n/* harmony import */ var _mui_material_AccordionSummary__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material/AccordionSummary */ \"./node_modules/@mui/material/AccordionSummary/AccordionSummary.js\");\n/* harmony import */ var _mui_material_AccordionDetails__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material/AccordionDetails */ \"./node_modules/@mui/material/AccordionDetails/AccordionDetails.js\");\n/* harmony import */ var _mui_icons_material_ExpandMore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/icons-material/ExpandMore */ \"./node_modules/@mui/icons-material/ExpandMore.js\");\n/* harmony import */ var _mui_material_Divider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material/Divider */ \"./node_modules/@mui/material/Divider/Divider.js\");\n/* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material/Stack */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n// Material-UI ExpansionPanel components\n\n\n\n\n\n\n\n\nvar AccordionMUI = _ref => {\n  var {\n    summaryText,\n    detailsData,\n    expanded,\n    alerts\n  } = _ref;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", {\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mui_material_Accordion__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n      defaultExpanded: expanded,\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material_AccordionSummary__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        expandIcon: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_icons_material_ExpandMore__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}),\n        \"aria-controls\": \"panella-content\",\n        id: \"panella-header\",\n        children: summaryText\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material_Divider__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mui_material_AccordionDetails__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n          sx: {\n            width: \"100%\",\n            marginTop: \"10px\",\n            marginBottom: \"20px\"\n          },\n          spacing: 1,\n          children: alerts\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", {\n          style: {\n            width: \"100%\",\n            height: \"100%\"\n          },\n          children: detailsData\n        })]\n      })]\n    })\n  });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (AccordionMUI);\n\n//# sourceURL=webpack://schemaevaluator/./src/components/AccordionMUI.js?");

/***/ }),

/***/ "./src/components/AlertMUI.js":
/*!************************************!*\
  !*** ./src/components/AlertMUI.js ***!
  \************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mui_material_Alert__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/material/Alert */ \"./node_modules/@mui/material/Alert/Alert.js\");\n/* harmony import */ var _mui_material_Typography__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material/Typography */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\nvar AlertMUI = _ref => {\n  var {\n    ind,\n    severity,\n    fontSize,\n    children\n  } = _ref;\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material_Alert__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n    severity: severity,\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n      sx: {\n        fontSize: fontSize\n      },\n      children: children\n    }, ind)\n  }, ind);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (AlertMUI);\n\n//# sourceURL=webpack://schemaevaluator/./src/components/AlertMUI.js?");

/***/ }),

/***/ "./src/components/App.js":
/*!*******************************!*\
  !*** ./src/components/App.js ***!
  \*******************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _pages_ReportPage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../pages/ReportPage */ \"./src/pages/ReportPage.js\");\n/* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material/styles */ \"./node_modules/@mui/material/styles/createTheme.js\");\n/* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material/styles */ \"./node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n// Import and define ThemeProvider at the root of the app\n\n\n// Global style overrides have changed in MUI5\n// Example: https://mui.com/material-ui/customization/theme-components/#global-style-overrides\n// Change Table title color\n\nvar theme = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n  components: {\n    // Override style in mui-datatables table title\n    MUIDataTableToolbar: {\n      styleOverrides: {\n        titleText: {\n          color: \"#bb7944\"\n          //fontWeight: 'bold'\n        }\n      }\n    },\n\n    // Override style in mui-datatables table header cells\n    MUIDataTableHeadCell: {\n      styleOverrides: {\n        data: {\n          fontWeight: 'bold',\n          textTransform: 'none',\n          textAlign: 'left'\n        }\n      }\n    },\n    // Override style in mui-datatables table body cells\n    // MUIDataTableBodyCell: {\n    // \tstyleOverrides: {\n    // \t\troot: {\n    // \t\t\tfontWeight: \"bold\",\n    // \t\t}\n    // \t}\n    // },\n    // Override style in MUI tabs\n    MuiTab: {\n      styleOverrides: {\n        root: {\n          fontWeight: 'bold',\n          textTransform: 'none'\n        }\n      }\n    }\n  }\n});\nvar App = () => {\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n    style: {\n      marginLeft: \"5%\",\n      marginRight: \"5%\",\n      marginTop: \"2%\",\n      marginBottom: \"2%\"\n    },\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_mui_material_styles__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n      theme: theme,\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_pages_ReportPage__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {})\n    })\n  });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (App);\n\n//# sourceURL=webpack://schemaevaluator/./src/components/App.js?");

/***/ }),

/***/ "./src/components/DataTable.js":
/*!*************************************!*\
  !*** ./src/components/DataTable.js ***!
  \*************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var mui_datatables__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mui-datatables */ \"./node_modules/mui-datatables/dist/index.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\n\nvar DataTable = _ref => {\n  var {\n    tableData,\n    tableTitle,\n    tableOptions,\n    tableConditionalFormatting,\n    hiddenColumns\n  } = _ref;\n  var columnData = tableData[0].columns.map(column => {\n    var displayColumn = true;\n    if (hiddenColumns) {\n      displayColumn = hiddenColumns.includes(column) ? false : true;\n    }\n    return {\n      name: column,\n      label: column,\n      options: {\n        filter: true,\n        sort: true,\n        sortThirdClickReset: true,\n        display: displayColumn\n      }\n    };\n  });\n  if (tableConditionalFormatting) {\n    var _loop = function _loop(key) {\n      // Add formatting to columns whose name contains the key\n      var matchedColumns = tableData[0].columns.filter(e => e.includes(key));\n      for (var columnName of matchedColumns) {\n        var columnIndex = tableData[0].columns.indexOf(columnName);\n        columnData[columnIndex].options = _objectSpread(_objectSpread({}, columnData[columnIndex].options), value);\n      }\n    };\n    for (var [key, value] of Object.entries(tableConditionalFormatting)) {\n      _loop(key);\n    }\n  }\n  ;\n  var rowData = tableData[1].rows;\n  var total_data_table = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(mui_datatables__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n    title: tableTitle,\n    data: rowData,\n    columns: columnData,\n    options: tableOptions\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n    children: total_data_table\n  });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (DataTable);\n\n//# sourceURL=webpack://schemaevaluator/./src/components/DataTable.js?");

/***/ }),

/***/ "./src/components/PhylogeneticTree.js":
/*!********************************************!*\
  !*** ./src/components/PhylogeneticTree.js ***!
  \********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ \"./src/constants.js\");\n/* harmony import */ var _phylocanvas_phylocanvas_gl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @phylocanvas/phylocanvas.gl */ \"./node_modules/@phylocanvas/phylocanvas.gl/dist/phylocanvas.js\");\n/* harmony import */ var _phylocanvas_phylocanvas_gl__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_phylocanvas_phylocanvas_gl__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_scroll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-scroll */ \"./node_modules/react-scroll/modules/index.js\");\n/* harmony import */ var _mui_material_Box__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material/Box */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material_Switch__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @mui/material/Switch */ \"./node_modules/@mui/material/Switch/Switch.js\");\n/* harmony import */ var _mui_material_Select__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material/Select */ \"./node_modules/@mui/material/Select/Select.js\");\n/* harmony import */ var _mui_material_Checkbox__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material/Checkbox */ \"./node_modules/@mui/material/Checkbox/Checkbox.js\");\n/* harmony import */ var _mui_material_MenuItem__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material/MenuItem */ \"./node_modules/@mui/material/MenuItem/MenuItem.js\");\n/* harmony import */ var _mui_material_TextField__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material/TextField */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material_InputLabel__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material/InputLabel */ \"./node_modules/@mui/material/InputLabel/InputLabel.js\");\n/* harmony import */ var _mui_material_IconButton__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material/IconButton */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material_FormControl__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material/FormControl */ \"./node_modules/@mui/material/FormControl/FormControl.js\");\n/* harmony import */ var _mui_material_Autocomplete__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material/Autocomplete */ \"./node_modules/@mui/material/Autocomplete/Autocomplete.js\");\n/* harmony import */ var _mui_icons_material_CheckBox__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/icons-material/CheckBox */ \"./node_modules/@mui/icons-material/CheckBox.js\");\n/* harmony import */ var _mui_icons_material_FileDownload__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/icons-material/FileDownload */ \"./node_modules/@mui/icons-material/FileDownload.js\");\n/* harmony import */ var _mui_material_FormControlLabel__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/material/FormControlLabel */ \"./node_modules/@mui/material/FormControlLabel/FormControlLabel.js\");\n/* harmony import */ var _mui_icons_material_CheckBoxOutlineBlank__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/icons-material/CheckBoxOutlineBlank */ \"./node_modules/@mui/icons-material/CheckBoxOutlineBlank.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\n\n// Import array with tree format download options\n\n\n// Phylocanvas imports\n\n\n\n// Package for animating vertical scrolling in the NJ Tree component\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar icon = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_icons_material_CheckBoxOutlineBlank__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n  fontSize: \"small\"\n});\nvar checkedIcon = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_icons_material_CheckBox__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n  fontSize: \"small\"\n});\nvar PhylogeneticTree = _ref => {\n  var {\n    treeSource,\n    validIDs\n  } = _ref;\n  var [phyloTree, setPhyloTree] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(undefined);\n\n  // State used to control the type/shape of the NJ tree\n  var [treeType, setTreeType] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(_phylocanvas_phylocanvas_gl__WEBPACK_IMPORTED_MODULE_2__.TreeTypes.Circular);\n  // Event handler used to change NJ tree type\n  var handleTreeTypeSelect = event => {\n    setTreeType(event.target.value);\n  };\n\n  // State used to determine if NJ tree node labels should be displayed\n  var [showNodeLabels, setShowNodeLabels] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n  // Event handler used to change visibility of NJ tree node labels\n  var handleTreeNodeLabelsCheck = event => {\n    setShowNodeLabels(event.target.checked);\n  };\n\n  // State used to determine if NJ tree branch lenghts should be displayed\n  var [showBranchLengths, setShowBranchLengths] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n  // Event handler used to change visibility of NJ tree branch lengths\n  var handleBranchLabelsCheck = event => {\n    setShowBranchLengths(event.target.checked);\n  };\n\n  // State used to determine which NJ tree nodes should be highlighted\n  var [selectedIds, setSelectedIds] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n  // Event handler used to change NJ tree node selection\n  var handleTreeNodeSelectChange = (event, newValue) => {\n    setSelectedIds(newValue);\n  };\n\n  // State used to set NJ tree node size\n  var [treeNodeSize, setTreeNodeSize] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(8);\n  // Event handler used to change NJ tree node size\n  var handleTreeNodeSize = value => {\n    setTreeNodeSize(+value);\n  };\n\n  // State used to set NJ tree font size\n  var [treeFontSize, setTreeFontSize] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(8);\n  // Event handler used to change NJ tree font size\n  var handleTreeFontSize = value => {\n    setTreeFontSize(+value);\n  };\n\n  // State used to set NJ tree node shape\n  var [treeNodeShape, setTreeNodeShape] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(_phylocanvas_phylocanvas_gl__WEBPACK_IMPORTED_MODULE_2__.Shapes.Circle);\n  // Event handler used to change NJ tree node shape\n  var handleTreeNodeShape = event => {\n    setTreeNodeShape(event.target.value);\n  };\n\n  // Piece of state used to trigger tree download\n  var [download, setDownload] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n  // Event handler used to change download state and trigger download\n  var handleClick = event => {\n    setDownload(!download);\n  };\n\n  // Piece of state used to set download file format\n  var [downloadType, setDownloadType] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"SVG\");\n  // Event handler used to change download file format\n  var handleExport = event => {\n    setDownloadType(event.target.value);\n  };\n  var treeDownloadMenuOptions = _constants__WEBPACK_IMPORTED_MODULE_1__.treeDownloadOptions.map(format => {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_MenuItem__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n      value: format,\n      children: format\n    }, format);\n  });\n  var treeShapeOptions = Object.entries(_phylocanvas_phylocanvas_gl__WEBPACK_IMPORTED_MODULE_2__.TreeTypes).map(type => {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_MenuItem__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n      value: type[1],\n      children: type[0]\n    }, type[0]);\n  });\n  var treeNodeShapeOptions = Object.entries(_phylocanvas_phylocanvas_gl__WEBPACK_IMPORTED_MODULE_2__.Shapes).map(shape => {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_MenuItem__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n      value: shape[1],\n      children: shape[0]\n    }, shape[0]);\n  });\n  var treeDownloadMenu = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n    sx: {\n      p: 1\n    },\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_mui_material_FormControl__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_InputLabel__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n        id: \"tree-export-select\",\n        children: \"File Format\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_Select__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n        labelId: \"tree-export-select\",\n        id: \"tree-export\",\n        value: downloadType,\n        label: \"Export format\",\n        onChange: handleExport,\n        sx: {\n          height: 40,\n          width: 110\n        },\n        children: treeDownloadMenuOptions\n      })]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_IconButton__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n      onClick: handleClick,\n      sx: {\n        height: 40,\n        width: 30,\n        borderRadius: \"4px\",\n        color: \"rgb(255, 255, 255)\",\n        backgroundColor: \"rgb(25, 118, 210)\"\n      },\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_icons_material_FileDownload__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {})\n    })]\n  }, \"tree-export-select\");\n\n  // Component to select tree nodes\n  var treeIdsSelect = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n    sx: {\n      p: 1\n    },\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_Autocomplete__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n      limitTags: 2,\n      multiple: true,\n      disablePortal: true,\n      id: \"select-tree-id\",\n      options: validIDs,\n      size: \"small\",\n      sx: {\n        height: 40,\n        width: 300\n      },\n      renderOption: (props, option, _ref2) => {\n        var {\n          selected\n        } = _ref2;\n        return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"li\", _objectSpread(_objectSpread({}, props), {}, {\n          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_Checkbox__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n            icon: icon,\n            checkedIcon: checkedIcon,\n            style: {\n              marginRight: 8\n            },\n            checked: selected\n          }), option]\n        }));\n      },\n      renderInput: params => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_TextField__WEBPACK_IMPORTED_MODULE_16__[\"default\"], _objectSpread(_objectSpread({}, params), {}, {\n        label: \"Select Ids\"\n      })),\n      onChange: handleTreeNodeSelectChange,\n      clearOnEscape: true,\n      disableCloseOnSelect: true\n    })\n  }, \"select-tree-id\");\n  var phyloTreeMenu = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n    sx: {\n      display: 'flex',\n      flexDirection: 'row',\n      flexWrap: 'wrap',\n      justifyContent: 'center',\n      alignItems: 'center',\n      alignContent: 'space-around'\n    },\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n      sx: {\n        p: 1\n      },\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_mui_material_FormControl__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_InputLabel__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n          id: \"tree-type-select\",\n          children: \"Tree Type\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_Select__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n          labelId: \"tree-type-select\",\n          id: \"tree-type\",\n          value: treeType,\n          label: \"Tree Type\",\n          onChange: handleTreeTypeSelect,\n          sx: {\n            height: 40,\n            width: 140\n          },\n          children: treeShapeOptions\n        })]\n      })\n    }, \"tree-type-select-box\"), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n      sx: {\n        p: 1\n      },\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_mui_material_FormControl__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_InputLabel__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n          id: \"tree-node-shape\",\n          children: \"Node Shape\"\n        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_Select__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n          labelId: \"tree-node-shape\",\n          id: \"node-shape\",\n          value: treeNodeShape,\n          label: \"Node Shape\",\n          onChange: handleTreeNodeShape,\n          sx: {\n            height: 40,\n            width: 230\n          },\n          children: treeNodeShapeOptions\n        })]\n      })\n    }, \"tree-node-shape-select\"), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n      component: \"form\",\n      noValidate: true,\n      autoComplete: \"off\",\n      sx: {\n        p: 1\n      },\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_TextField__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n        id: \"node-size\",\n        size: \"small\",\n        sx: {\n          height: 40,\n          width: 80\n        },\n        label: \"Node Size\",\n        variant: \"outlined\",\n        defaultValue: treeNodeSize,\n        onKeyDown: e => {\n          if (e.key === 'Enter') {\n            e.preventDefault();\n            handleTreeNodeSize(e.target.value);\n          }\n        }\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n      component: \"form\",\n      noValidate: true,\n      autoComplete: \"off\",\n      sx: {\n        p: 1\n      },\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_TextField__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n        id: \"tree-font-size\",\n        size: \"small\",\n        sx: {\n          height: 40,\n          width: 80\n        },\n        label: \"Font Size\",\n        variant: \"outlined\",\n        defaultValue: treeFontSize,\n        onKeyPress: e => {\n          if (e.key === 'Enter') {\n            e.preventDefault();\n            handleTreeFontSize(e.target.value);\n          }\n        }\n      })\n    }), treeIdsSelect, treeDownloadMenu, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n      sx: {\n        p: 1\n      },\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_FormControlLabel__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n        control: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_Switch__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n          defaultChecked: true,\n          size: \"medium\"\n        }, \"node-labels-switch\"),\n        label: \"Node Labels\",\n        labelPlacement: \"start\",\n        onChange: handleTreeNodeLabelsCheck,\n        sx: {\n          height: 40\n        }\n      }, \"node-labels-form\")\n    }, \"node-labels-form\"), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n      sx: {\n        p: 1\n      },\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_FormControlLabel__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n        control: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material_Switch__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n          size: \"medium\"\n        }, \"branch-labels-switch\"),\n        label: \"Branch Lengths\",\n        labelPlacement: \"start\",\n        onChange: handleBranchLabelsCheck,\n        sx: {\n          height: 40\n        }\n      }, \"branch-labels-form\")\n    }, \"branch-labels-form\")]\n  }, \"tree-options-menu\");\n\n  // Hook to check if tree is not undefined\n  // and destroy previous tree before rerendering\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    if (phyloTree) {\n      phyloTree.destroy();\n    }\n  }, [treeSource, treeType, showNodeLabels, showBranchLengths, selectedIds, treeNodeSize, treeFontSize, treeNodeShape]);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    if (phyloTree) {\n      // need to set mime type based on file type\n      var treeFile = undefined;\n      if (downloadType === \"SVG\") {\n        treeFile = new File([phyloTree.exportSVG()], \"tree.svg\", {\n          type: \"image/svg+xml\"\n        });\n      } else if (downloadType === \"Newick\") {\n        treeFile = new File([phyloTree.exportNewick()], \"tree.nwk\", {\n          type: \"text/plain\"\n        });\n      } else if (downloadType === \"JSON\") {\n        treeFile = new File([phyloTree.exportJSON()], \"tree.json\", {\n          type: \"text/plain\"\n        });\n      }\n      var anchor = document.createElement(\"a\");\n      anchor.setAttribute(\"href\", URL.createObjectURL(treeFile));\n      anchor.setAttribute(\"download\", treeFile.name);\n      anchor.click();\n    }\n  }, [download]);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    var treeView = document.querySelector(\"#phyloTree\");\n    setPhyloTree(new (_phylocanvas_phylocanvas_gl__WEBPACK_IMPORTED_MODULE_2___default())(treeView,\n    // Default prop values at https://gitlab.com/cgps/phylocanvas/phylocanvas.gl/-/blob/main/defaults.js\n    {\n      type: treeType,\n      size: {\n        width: 1440,\n        height: 700\n      },\n      source: treeSource,\n      showLabels: true,\n      showLeafLabels: showNodeLabels,\n      interactive: true,\n      padding: 15,\n      treeToCanvasRatio: 0.25,\n      selectedIds: selectedIds,\n      showBranchLengths: showBranchLengths,\n      scaleLineAlpha: false,\n      nodeShape: treeNodeShape,\n      nodeSize: treeNodeSize,\n      fontSize: treeFontSize,\n      fontFamily: \"monospace\",\n      collapsedIds: [],\n      centre: [0.5, 0.5]\n      // alignLabels: true\n    }, [_phylocanvas_phylocanvas_gl__WEBPACK_IMPORTED_MODULE_2__.plugins.scalebar]));\n  }, [treeSource, treeType, showNodeLabels, showBranchLengths, selectedIds, treeNodeSize, treeFontSize, treeNodeShape]);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n    children: [phyloTreeMenu, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(react_scroll__WEBPACK_IMPORTED_MODULE_3__.Element, {\n      name: \"phyloTree\",\n      className: \"element\",\n      id: \"containerElement\",\n      style: {\n        position: 'relative',\n        height: '750px',\n        overflow: 'scroll',\n        marginBottom: '0px'\n      },\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n        id: \"phyloTree\",\n        style: {\n          margin: \"auto\"\n        }\n      })\n    })]\n  });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (PhylogeneticTree);\n\n//# sourceURL=webpack://schemaevaluator/./src/components/PhylogeneticTree.js?");

/***/ }),

/***/ "./src/components/PlotlyPlot.js":
/*!**************************************!*\
  !*** ./src/components/PlotlyPlot.js ***!
  \**************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_plotly_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-plotly.js */ \"./node_modules/react-plotly.js/react-plotly.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _excluded = [\"plotData\", \"layoutProps\", \"configOptions\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n// use \"...rest\" notation to enable passing any number of custom event handlers\n\nvar PlotlyPlot = _ref => {\n  var {\n      plotData,\n      layoutProps,\n      configOptions\n    } = _ref,\n    rest = _objectWithoutProperties(_ref, _excluded);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(react_plotly_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], _objectSpread({\n    data: plotData,\n    layout: layoutProps,\n    config: configOptions,\n    useResizeHandler: true,\n    style: {\n      width: \"100%\",\n      height: \"100%\"\n    }\n  }, rest));\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (PlotlyPlot);\n\n//# sourceURL=webpack://schemaevaluator/./src/components/PlotlyPlot.js?");

/***/ }),

/***/ "./src/components/TabPanelMUI.js":
/*!***************************************!*\
  !*** ./src/components/TabPanelMUI.js ***!
  \***************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_material_Box__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material/Box */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material_Tab__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material/Tab */ \"./node_modules/@mui/material/Tab/Tab.js\");\n/* harmony import */ var _mui_material_Tabs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material/Tabs */ \"./node_modules/@mui/material/Tabs/Tabs.js\");\n/* harmony import */ var _mui_material_Paper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material/Paper */ \"./node_modules/@mui/material/Paper/Paper.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nvar _excluded = [\"children\", \"value\", \"index\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\n\n\n\nfunction TabPanel(props) {\n  var {\n      children,\n      value,\n      index\n    } = props,\n    other = _objectWithoutProperties(props, _excluded);\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", _objectSpread(_objectSpread({\n    role: \"tabpanel\",\n    hidden: value !== index,\n    id: \"simple-tabpanel-\".concat(index),\n    \"aria-labelledby\": \"simple-tab-\".concat(index)\n  }, other), {}, {\n    children: value === index && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n      sx: {\n        p: 3\n      },\n      children: children\n    })\n  }));\n}\n;\nfunction a11yProps(index) {\n  return {\n    id: \"simple-tab-\".concat(index),\n    'aria-controls': \"simple-tabpanel-\".concat(index)\n  };\n}\n;\nvar TabPanelMUI = _ref => {\n  var {\n    ContentTitles,\n    ContentData\n  } = _ref;\n  var [panel, setPanel] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);\n  var handleChange = (event, newValue) => {\n    // where is this value coming from?\n    setPanel(newValue);\n  };\n\n  // Create Tab component for each title\n  var TabTitles = ContentTitles.map((title, index) => {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_mui_material_Tab__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _objectSpread({\n      label: title,\n      wrapped: true\n    }, a11yProps(index)), index);\n  });\n\n  // create TabPanel component for each input data element\n  var TabPanelList = ContentData.map((element, index) => {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(TabPanel, {\n      value: panel,\n      index: index,\n      children: element\n    }, index);\n  });\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n    sx: {\n      width: \"100%\"\n    },\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(_mui_material_Paper__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n      elevation: 3,\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        sx: {\n          borderBottom: 1,\n          borderColor: 'divider'\n        },\n        children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_mui_material_Tabs__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n          value: panel,\n          onChange: handleChange,\n          \"aria-label\": \"basic tabs example\",\n          variant: \"scrollable\",\n          scrollButtons: true,\n          allowScrollButtonsMobile: true,\n          children: TabTitles\n        })\n      }), TabPanelList]\n    })\n  });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (TabPanelMUI);\n\n//# sourceURL=webpack://schemaevaluator/./src/components/TabPanelMUI.js?");

/***/ }),

/***/ "./src/constants.js":
/*!**************************!*\
  !*** ./src/constants.js ***!
  \**************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"alleleCallReportAlertMessages\": function() { return /* binding */ alleleCallReportAlertMessages; },\n/* harmony export */   \"alleleCallReportHeaderMessage\": function() { return /* binding */ alleleCallReportHeaderMessage; },\n/* harmony export */   \"globalTableOptions\": function() { return /* binding */ globalTableOptions; },\n/* harmony export */   \"lociTableHiddenColumns\": function() { return /* binding */ lociTableHiddenColumns; },\n/* harmony export */   \"locusReportAlertMessages\": function() { return /* binding */ locusReportAlertMessages; },\n/* harmony export */   \"locusReportHeaderMessage\": function() { return /* binding */ locusReportHeaderMessage; },\n/* harmony export */   \"msaColorSchemes\": function() { return /* binding */ msaColorSchemes; },\n/* harmony export */   \"msaDownloadOptions\": function() { return /* binding */ msaDownloadOptions; },\n/* harmony export */   \"sampleTableHiddenColumns\": function() { return /* binding */ sampleTableHiddenColumns; },\n/* harmony export */   \"schemaReportAlertMessages\": function() { return /* binding */ schemaReportAlertMessages; },\n/* harmony export */   \"schemaReportHeaderMessage\": function() { return /* binding */ schemaReportHeaderMessage; },\n/* harmony export */   \"treeDownloadOptions\": function() { return /* binding */ treeDownloadOptions; }\n/* harmony export */ });\n// Constants used in the reports\n\nvar schemaReportHeaderMessage = \"\\n### Schema Report\\n\\nThe schema report includes the following components:\\n\\n- **Schema Summary Data**\\n\\n  - Total number of loci and totals for the **Allele Analysis** categories.\\n\\n- **Loci statistics**\\n\\n  - Tab Panel with the following panels:\\n    - Total Alleles: distribution of the number of alleles for all loci.\\n    - Allele Mode Size: distribution of the allele mode size (most frequent allele size) for all loci.\\n    - Locus Statistics: total number of alleles and allele minimum, maximum and median size per locus.\\n    - Allele Size Variation: boxplots for the allele size variation per locus.  \\n\\n\\tIf you've provided the *--loci-reports* parameter to create the individual loci reports, the points in\\n\\tthe \\\"Locus Statistics\\\" and the boxplots in the \\\"Allele Size Variation\\\" plots are clickable and will open\\n\\tthe report for the corresponding locus.\\n\\n- **Loci Annotations**\\n\\t- Annotations provided for each locus (added from the TSV file passed to the *--a* parameter).\\n\\n\\tIf the TSV file provided to the *--a* parameter included a column named \\\"UniProt_URL\\\" with the URLs to the UniProt records that matched each locus, the column values will link to the pages of those records.  \\n\\tIf you've provided the *--loci-reports* parameter, the loci identifiers in the first column will link to the loci individual reports.\\n  \\n- **Allele Analysis**\\n\\t- Results of the allele analysis per locus. The results are organized into the following categories:\\n\\t\\t- Total alleles: number of alleles in the locus FASTA file.\\n\\t\\t- Valid alleles: number of alleles considered valid based on the configuration values.\\n\\t\\t- Incomplete ORF: number of alleles with a size value not multiple of 3.\\n\\t\\t- Missing Start/Stop Codon: number of alleles missing the start and/or stop codon.\\n\\t\\t- In-frame Stop Codon: number of alleles with in-frame stop codons.\\n\\t\\t- Alleles < minLen: number of alleles with smaller than the minimum sequence length defined in the configuration values.\\n\\t\\t- Alleles below threshold: number of alleles smaller than the allele length mode bot threshold.\\n\\t\\t- Alleles above threshold: number of alleles bigger than the allele length mode top threshold.\\n\\n\\tIf you've provided the *--loci-reports* parameter, the loci identifiers in the first column will link to the loci individual reports.\\n\\nThis report was created with the [React](https://react.dev/) library and uses the following JavaScript packages:\\n\\n  - [Material UI](https://www.npmjs.com/package/@mui/material) for most of the components.\\n  - [MUI-Datatables](https://www.npmjs.com/package/mui-datatables) for datatables components.\\n  - [MSA Viewer](https://www.npmjs.com/package/@jlab-contrib/msa) for the Multiple Sequence Alignmnet.\\n  - [Phylocanvas.gl](https://www.npmjs.com/package/@phylocanvas/phylocanvas.gl) for the NJ Tree.\\n  - [react-plotly.js](https://www.npmjs.com/package/react-plotly.js) for the charts.\\n  - [react-scroll](https://www.npmjs.com/package/react-scroll) for animating vertical scrolling in the NJ Tree component.\\n  - [Monaco Editor for React](https://www.npmjs.com/package/@monaco-editor/react) for the read-only code editor that displays the DNA and Protein sequences.\\n  - [react-markdown](https://www.npmjs.com/package/react-markdown) and [remark-gfm](https://www.npmjs.com/package/remark-gfm) to render markdown.\\n\\nYou can find more information in the SchemaEvaluator module [documentation](https://chewbbaca.readthedocs.io/en/latest/user/modules/SchemaEvaluator.html).  \\nIf you have any feature requests or issues to report, please visit chewBBACA's [GitHub repository](https://github.com/B-UMMI/chewBBACA).\\n\";\nvar locusReportHeaderMessage = \"\\n### Locus Report\\n\\nThe locus report includes the following components:\\n\\n- **Locus Summary Data**\\n\\n  - Locus identifier and totals for the **Allele Analysis** categories.\\n- **Locus Annotation Data**\\n\\n  - Annotations provided for the locus (added from the TSV file passed to the *--a* parameter).\\n- **Locus Size plots**\\n\\n  - Tab Panel with the following panels:\\n    - Allele Size Counts: distribution of the allele size values for the locus.\\n    - Allele Size: sequence size per allele.\\n- **Neighbor-Joining Tree**\\n\\n  - A tree drawn with Phylocanvas based on the Neighbor-Joining (NJ) tree created by MAFFT.\\n- **Multiple Sequence Alignment**\\n\\n  - Visualization of the MSA computed by MAFFT.\\n- **DNA sequences**\\n\\n  - Text Editor in read-only mode with the alleles in the FASTA file.\\n- **Protein sequences**\\n\\n  - Text Editor in read-only mode with the translated alleles that were considered valid based on the configuration values.\\n\\nThis report was created with the [React](https://react.dev/) library and uses the following JavaScript packages:\\n\\n- [Material UI](https://www.npmjs.com/package/@mui/material) for most of the components.\\n- [MUI-Datatables](https://www.npmjs.com/package/mui-datatables) for datatables components.\\n- [MSA Viewer](https://www.npmjs.com/package/@jlab-contrib/msa) for the Multiple Sequence Alignmnet.\\n- [Phylocanvas.gl](https://www.npmjs.com/package/@phylocanvas/phylocanvas.gl) for the NJ Tree.\\n- [react-plotly.js](https://www.npmjs.com/package/react-plotly.js) for the charts.\\n- [react-scroll](https://www.npmjs.com/package/react-scroll) for animating vertical scrolling in the NJ Tree component.\\n- [Monaco Editor for React](https://www.npmjs.com/package/@monaco-editor/react) for the read-only code editor that displays the DNA and Protein sequences.\\n- [react-markdown](https://www.npmjs.com/package/react-markdown) and [remark-gfm](https://www.npmjs.com/package/remark-gfm) to render markdown.\\n\\nYou can find more information in the SchemaEvaluator module [documentation](https://chewbbaca.readthedocs.io/en/latest/user/modules/SchemaEvaluator.html).  \\nIf you have any feature requests or issues to report, please visit chewBBACA's [GitHub repository](https://github.com/B-UMMI/chewBBACA).\\n\";\nvar alleleCallReportHeaderMessage = \"\\n### Allele Call Report\\n\\nThe allele call report includes the following components:\\n\\n- **Results Summary Data**\\n\\n  - The total number of samples, total number of loci, total number of coding sequences (CDSs) identified in the samples, total number of CDSs classified and totals per classification type.\\n- **Classification Counts**\\n  - Tab Panel with the following panels:\\n    - Counts per Sample: displays the stacked bar charts for the sample classification type count.\\n    - Counts per Locus: displays the stacked bar charts for the loci classification type counts.\\n\\n\\tThe samples/loci are sorted in order of decreasing number of valid (EXC+INF) classifications. The plot area\\n\\twill display at most data for 300 samples/loci. You can click the left/right arrows to view the previous/next\\n\\t300 samples/loci and the double left/right arrows to view the data for the first/last 300 samples/loci. The\\n\\tcomponent includes a slider to select the range of sample/loci bars that are visible.\\n- **Detailed Statistics**\\n  - Tab Panel with the following panels:\\n\\n    - Sample Stats: detailed sample statistics.\\n\\t- Loci Stats: detailed loci statistics.\\n\\n\\tThe dropdown menu below the tables allows the selection of a single column to generate a histogram for the values in the selected column.\\n- **Loci Annotations**\\n  - Annotations provided for each locus (added from the TSV file passed to the *--a* parameter).\\n\\n    If the TSV file provided to the *--a* parameter included a column named \\\"UniProt_URL\\\" with the URLs to the UniProt records that matched each locus, the column values will link to the pages of those records.  \\n    If you've provided the *--loci-reports* parameter, the loci identifiers in the first column will link to the loci individual reports.\\n- **Loci Presence-Absence**\\n\\n  - Heatmap representing the loci presence-absence matrix for all samples in the dataset. Blue cells (z=1) correspond to\\n    loci presence and grey cells (z=0) to loci absence. The \\\"Select Sample\\\" dropdown menu enables the selection of a single\\n\\tsample to display its heatmap on top of the main heatmap. The \\\"Select Locus\\\" dropdown menu enables the selection of a\\n\\tsingle locus to display its heatmap on the right of the main heatmap. \\n- **Allelic distances**\\n\\n  - Heatmap representing the allelic distance matrix for all samples in the dataset. The allelic distances are computed based\\n    on the cgMLST profiles (loci that are not present in all samples are not included in the computations). The \\\"Select Sample\\\"\\n\\tdropdown menu enables the selection of a single sample to display its heatmap on top of the main heatmap. The menu after\\n\\tthe heatmap enables the selection of a single sample and of a distance threshold to display a table with the list of samples\\n\\tat a distance equal or smaller than the specified distance value.\\n- **Core-genome Neighbor-Joining Tree**\\n\\n  - A tree drawn with Phylocanvas based on the Neighbor-Joining (NJ) tree computed by FastTree. The tree is computed based on the MSA for the set of loci that constitute the core-genome.\\n\\nThis report was created with the [React](https://react.dev/) library and uses the following JavaScript packages:\\n\\n- [Material UI](https://www.npmjs.com/package/@mui/material) for most of the components.\\n- [MUI-Datatables](https://www.npmjs.com/package/mui-datatables) for datatables components.\\n- [MSA Viewer](https://www.npmjs.com/package/@jlab-contrib/msa) for the Multiple Sequence Alignmnet.\\n- [Phylocanvas.gl](https://www.npmjs.com/package/@phylocanvas/phylocanvas.gl) for the NJ Tree.\\n- [react-plotly.js](https://www.npmjs.com/package/react-plotly.js) for the charts.\\n- [react-scroll](https://www.npmjs.com/package/react-scroll) for animating vertical scrolling in the NJ Tree component.\\n- [Monaco Editor for React](https://www.npmjs.com/package/@monaco-editor/react) for the read-only code editor that displays the DNA and Protein sequences.\\n- [react-markdown](https://www.npmjs.com/package/react-markdown) and [remark-gfm](https://www.npmjs.com/package/remark-gfm) to render markdown.\\n\\nYou can find more information in the AlleleCallEvaluator module [documentation]().  \\nIf you have any feature requests or issues to report, please visit chewBBACA's [GitHub repository](https://github.com/B-UMMI/chewBBACA).\\n\";\nvar schemaReportAlertMessages = [[\"Each point (locus) is clickable and will open a page with more details about it.\", \"info\"], [\"Each boxplot (locus) is clickable and will open a page with more details about it.\", \"info\"], [\"The loci annotations are not displayed because the user did not provide a file with annotations.\", \"warning\"]];\nvar locusReportAlertMessages = [[\"List of invalid alleles is not displayed because all alleles are considered valid.\", \"warning\"], [\"The locus annotations are not displayed because the user did not provide a file with annotations or there were no annotations for this locus.\", \"warning\"], [\"The red lines represent the bot and top allele length thresholds. The bar corresponding to the length mode is colored in green.\", \"info\"], [\"The red lines represent the bot and top allele length thresholds.\", \"info\"], [\"Valid alleles are colored in blue and invalid alleles are colored in grey.\", \"info\"], [\"The protein allele identifiers were assigned based on the first allele in the schema FASTA file that encoded each distinct protein.\", \"info\"], [\"Nodes are labeled with the allele identifiers. A tree might not be displayed if the distance between all alleles is 0.\", \"info\"], [\"Use the mouse wheel to Zoom In/Out. In the Hierarchical and Rectangular Tree Types, holding the Ctrl key while using the mouse wheel allows to resize the branches.\", \"info\"], [\"The NJ tree and MSA components are not displayed because this locus does not have valid alleles or has only one valid allele or the --light flag was provided.\", \"warning\"], [\"Displaying the MSA for the %VALUE% distinct proteins.\", \"info\"], [\"Click on a row/column label to select a row/column. Hold the Ctrl key for multiselection. The 'Row Selection' option exports the Full MSA if no rows are selected.\", \"info\"], [\"Displaying the %VALUE% sequences in the schema FASTA file.\", \"info\"], [\"Only displaying the %VALUE% alleles that were considered valid.\", \"info\"], [\"This locus has %VALUE% alleles that have not been synchronized with the remote schema in Chewie-NS (%VALUE2%).\", \"warning\"], [\"The Bar chart is not displayed because this locus does not have valid alleles.\", \"warning\"], [\"The table for the distinct protein alleles is not displayed because this locus does not have valid alleles.\", \"warning\"]];\nvar alleleCallReportAlertMessages = [[\"Click the left/right arrows to view the data for the previous/next 300 %VALUE%. Click the double left/right arrows to view the data for the first/last 300 %VALUE%.\", \"info\"], [\"Click the left/right arrows to view the data for the previous/next 300 %VALUE%. Click the double left/right arrows to view the data for the first/last 300 %VALUE%.\", \"info\"], [\"The loci annotations are not displayed because the user did not provide a file with annotations.\", \"warning\"], [\"Select a sample/locus to display the heatmap for that sample/locus.\", \"info\"], [\"Select a sample to display the heatmap for that sample.\", \"info\"], [\"Select a sample and a distance value to display a table with the list of samples with a distance to the selected sample equal or smaller than the specified distance value.\", \"info\"], [\"The distances were computed by determining the number of allelic differences from the set of %VALUE% core loci.\", \"info\"], [\"The tree was computed based on the MSA for the set of %VALUE% core loci.\", \"info\"]];\nvar msaColorSchemes = [[\"buried_index\", \"Buried\"], [\"cinema\", \"Cinema\"], [\"clustal\", \"Clustal\"], [\"clustal2\", \"Clustal2\"], [\"helix_propensity\", \"Helix propensity\"], [\"hydro\", \"Hydro\"], [\"lesk\", \"Lesk\"], [\"mae\", \"Mae\"], [\"nucleotide\", \"Nucleotide\"], [\"purine_pyrimidine\", \"Purine Pyrimidine\"], [\"strand_propensity\", \"Strand propensity\"], [\"taylor\", \"Taylor\"], [\"turn_propensity\", \"Turn propensity\"], [\"zappo\", \"Zappo\"]];\nvar msaDownloadOptions = [\"Full MSA\", \"Row Selection\", \"Image (PNG)\"];\nvar treeDownloadOptions = [\"SVG\", \"Newick\", \"JSON\"];\nvar globalTableOptions = {\n  responsive: \"simple\",\n  selectableRowsHeader: false,\n  selectableRows: \"none\",\n  selectableRowsOnClick: false,\n  print: false,\n  download: true,\n  filter: false,\n  search: false,\n  viewColumns: true,\n  pagination: true\n};\nvar sampleTableHiddenColumns = [\"EXC\", \"INF\", \"PLOT3\", \"PLOT5\", \"LOTSC\", \"NIPH\", \"NIPHEM\", \"ALM\", \"ASM\", \"PAMA\", \"LNF\"];\nvar lociTableHiddenColumns = [\"EXC\", \"INF\", \"PLOT3\", \"PLOT5\", \"LOTSC\", \"NIPH\", \"NIPHEM\", \"ALM\", \"ASM\", \"PAMA\", \"LNF\"];\n\n//# sourceURL=webpack://schemaevaluator/./src/constants.js?");

/***/ }),

/***/ "./src/index.js":
/*!**********************!*\
  !*** ./src/index.js ***!
  \**********************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_dom_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom/client */ \"./node_modules/react-dom/client.js\");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/App */ \"./src/components/App.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n\n\n\n\n// get reference to \"root\" element\n\nvar el = document.getElementById('root');\nvar root = react_dom_client__WEBPACK_IMPORTED_MODULE_1__.createRoot(el);\n// render the App component\nroot.render( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_components_App__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}));\n\n//# sourceURL=webpack://schemaevaluator/./src/index.js?");

/***/ }),

/***/ "./src/pages/ReportPage.js":
/*!*********************************!*\
  !*** ./src/pages/ReportPage.js ***!
  \*********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_material_Box__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material/Box */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material_Select__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @mui/material/Select */ \"./node_modules/@mui/material/Select/Select.js\");\n/* harmony import */ var _components_AlertMUI__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/AlertMUI */ \"./src/components/AlertMUI.js\");\n/* harmony import */ var _mui_material_MenuItem__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @mui/material/MenuItem */ \"./node_modules/@mui/material/MenuItem/MenuItem.js\");\n/* harmony import */ var _mui_material_Unstable_Grid2__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @mui/material/Unstable_Grid2 */ \"./node_modules/@mui/material/Unstable_Grid2/Grid2.js\");\n/* harmony import */ var _components_DataTable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/DataTable */ \"./src/components/DataTable.js\");\n/* harmony import */ var _mui_material_TextField__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/material/TextField */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material/Typography */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material_IconButton__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material/IconButton */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _components_PlotlyPlot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/PlotlyPlot */ \"./src/components/PlotlyPlot.js\");\n/* harmony import */ var _mui_material_InputLabel__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @mui/material/InputLabel */ \"./node_modules/@mui/material/InputLabel/InputLabel.js\");\n/* harmony import */ var _mui_material_FormControl__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @mui/material/FormControl */ \"./node_modules/@mui/material/FormControl/FormControl.js\");\n/* harmony import */ var _components_TabPanelMUI__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/TabPanelMUI */ \"./src/components/TabPanelMUI.js\");\n/* harmony import */ var _components_AccordionMUI__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/AccordionMUI */ \"./src/components/AccordionMUI.js\");\n/* harmony import */ var _mui_material_Autocomplete__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @mui/material/Autocomplete */ \"./node_modules/@mui/material/Autocomplete/Autocomplete.js\");\n/* harmony import */ var _mui_icons_material_KeyboardArrowLeft__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/icons-material/KeyboardArrowLeft */ \"./node_modules/@mui/icons-material/KeyboardArrowLeft.js\");\n/* harmony import */ var _mui_icons_material_KeyboardDoubleArrowLeft__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/icons-material/KeyboardDoubleArrowLeft */ \"./node_modules/@mui/icons-material/KeyboardDoubleArrowLeft.js\");\n/* harmony import */ var _mui_icons_material_KeyboardArrowRight__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @mui/icons-material/KeyboardArrowRight */ \"./node_modules/@mui/icons-material/KeyboardArrowRight.js\");\n/* harmony import */ var _mui_icons_material_KeyboardDoubleArrowRight__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @mui/icons-material/KeyboardDoubleArrowRight */ \"./node_modules/@mui/icons-material/KeyboardDoubleArrowRight.js\");\n/* harmony import */ var react_markdown__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react-markdown */ \"./node_modules/react-markdown/lib/react-markdown.js\");\n/* harmony import */ var remark_gfm__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! remark-gfm */ \"./node_modules/remark-gfm/index.js\");\n/* harmony import */ var _ReportPage_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ReportPage.css */ \"./src/pages/ReportPage.css\");\n/* harmony import */ var _components_PhylogeneticTree__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../components/PhylogeneticTree */ \"./src/components/PhylogeneticTree.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../constants */ \"./src/constants.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReportPage = () => {\n  // get pre-computed data\n  var data = window.preComputedData;\n\n  // Define function to apply to column with locus identifiers\n  var locusColumnFormatting = {\n    \"Locus\": {\n      customBodyRender: value => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"a\", {\n        href: \"./loci_reports/\".concat(value, \".html\"),\n        target: \"_blank\",\n        rel: \"noopener noreferrer\",\n        children: value\n      })\n    }\n  };\n\n  // Define function to apply when column name includes \"URL\"\n  var uniprotLinkColumnFormatting = {\n    \"URL\": {\n      customBodyRender: value => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"a\", {\n        href: value,\n        target: \"_blank\",\n        rel: \"noopener noreferrer\",\n        children: value\n      })\n    }\n  };\n\n  // Create Alert components\n  // Replace values in Alert Messages data\n  _constants__WEBPACK_IMPORTED_MODULE_8__.alleleCallReportAlertMessages[0][0] = _constants__WEBPACK_IMPORTED_MODULE_8__.alleleCallReportAlertMessages[0][0].replaceAll(\"%VALUE%\", 'samples');\n  _constants__WEBPACK_IMPORTED_MODULE_8__.alleleCallReportAlertMessages[1][0] = _constants__WEBPACK_IMPORTED_MODULE_8__.alleleCallReportAlertMessages[1][0].replaceAll(\"%VALUE%\", 'loci');\n  // Get size of cgMLST\n  var cgMLSTSize = data.cgMLST_size[0].cgMLST100;\n  _constants__WEBPACK_IMPORTED_MODULE_8__.alleleCallReportAlertMessages[6][0] = _constants__WEBPACK_IMPORTED_MODULE_8__.alleleCallReportAlertMessages[6][0].replaceAll(\"%VALUE%\", cgMLSTSize);\n  _constants__WEBPACK_IMPORTED_MODULE_8__.alleleCallReportAlertMessages[7][0] = _constants__WEBPACK_IMPORTED_MODULE_8__.alleleCallReportAlertMessages[7][0].replaceAll(\"%VALUE%\", cgMLSTSize);\n\n  // Create all Alert components\n  var alertMessagesComponents = _constants__WEBPACK_IMPORTED_MODULE_8__.alleleCallReportAlertMessages.map((alert, index) => {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_AlertMUI__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n      ind: index,\n      severity: alert[1],\n      fontSize: 14,\n      children: alert[0]\n    }, index);\n  });\n\n  // Create component to display report description\n  var HeaderSummary = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n    sx: {\n      color: '#bb7944',\n      fontSize: 20\n    },\n    children: \"Allele Call Report Description\"\n  });\n\n  // Need to change the root component attribute to avoid error related with\n  // passing something to <p>\n  var HeaderDescription = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n    component: 'div',\n    style: {\n      lineHeight: \"18px\"\n    },\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(react_markdown__WEBPACK_IMPORTED_MODULE_11__.ReactMarkdown, {\n      children: _constants__WEBPACK_IMPORTED_MODULE_8__.alleleCallReportHeaderMessage,\n      remarkPlugins: [remark_gfm__WEBPACK_IMPORTED_MODULE_12__[\"default\"]]\n    })\n  });\n  var HeaderComponent = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_AccordionMUI__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n    summaryText: HeaderSummary,\n    detailsData: HeaderDescription,\n    expanded: false\n  });\n\n  // Create component to display Summary Table\n  // data for Summary Data table\n  var summaryData = data.summaryData;\n  var summaryTableCustomOption = {\n    downloadOptions: {\n      filename: \"report_summary.tsv\",\n      separator: \"\\t\",\n      filterOptions: {\n        useDisplayedColumnsOnly: true,\n        useDisplayedRowsOnly: true\n      }\n    },\n    pagination: false,\n    draggableColumns: {\n      enabled: true\n    }\n  };\n  var summaryTableOptions = _objectSpread(_objectSpread({}, _constants__WEBPACK_IMPORTED_MODULE_8__.globalTableOptions), summaryTableCustomOption);\n\n  // Component for Summary table\n  var summaryTable = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_DataTable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n    tableData: summaryData,\n    tableTitle: \"Results Summary Data\",\n    tableOptions: summaryTableOptions\n  });\n\n  // Create components to display stacked bar plots for sample and locus classification counts\n  var classificationTypes = ['EXC', 'INF', 'PLOT3', 'PLOT5', 'LOTSC', 'NIPH', 'NIPHEM', 'ALM', 'ASM', 'PAMA', 'LNF'];\n  var typesColors = ['#1a9850', '#a6d96a', '#d6604d', '#b2182b', '#e08214', '#8073ac', '#542788', '#fee090', '#fdb462', '#80b1d3', '#878787'];\n\n  // Define bar plot step\n  var [barStep, setBarStep] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(300);\n\n  // Data for sample classification counts stacked barplots\n  var sampleIDs = data.sample_ids;\n  var sampleClassCounts = data.sample_data;\n  var [sampleBarIndex, setSampleBarIndex] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);\n  var sampleBarMin = 0;\n  var sampleBarMax = sampleIDs.length > barStep ? barStep : sampleIDs.length;\n  // Define array with barplot ranges\n  // Define number of ranges\n  var maxRanges = Math.ceil(sampleIDs.length / barStep);\n  var barplotRanges = [];\n  for (var i = 0; i < maxRanges; i++) {\n    barplotRanges.push([sampleBarMin, sampleBarMax]);\n    sampleBarMin = Math.min(sampleBarMin + barStep, sampleIDs.length - barStep);\n    sampleBarMax = Math.min(sampleBarMax + barStep, sampleIDs.length);\n  }\n  var sampleSliderMax = Math.min(sampleIDs.length, barStep / 2);\n  var sampleTraces = [];\n  for (var _i = 0; _i < classificationTypes.length; _i++) {\n    var classTrace = {\n      x: sampleIDs.slice(barplotRanges[sampleBarIndex][0], barplotRanges[sampleBarIndex][1]),\n      y: sampleClassCounts[_i].slice(barplotRanges[sampleBarIndex][0], barplotRanges[sampleBarIndex][1]),\n      type: 'bar',\n      name: classificationTypes[_i],\n      marker: {\n        color: typesColors[_i]\n      }\n    };\n    sampleTraces.push(classTrace);\n  }\n  var sampleTracesLayout = {\n    title: {\n      text: \"\"\n    },\n    xaxis: {\n      title: {\n        text: \"Sample\"\n      },\n      showgrid: false,\n      zeroline: false,\n      showline: true,\n      showticks: false,\n      showticklabels: false,\n      rangeslider: {\n        thickness: 0.15\n      },\n      range: [-0.5, sampleSliderMax]\n    },\n    yaxis: {\n      title: {\n        text: \"Class Counts\"\n      },\n      showgrid: true,\n      zeroline: false,\n      showline: true,\n      showticks: false\n      //dtick: 100\n    },\n\n    //bargap: 0,\n    bargroupgap: 0,\n    barmode: 'stack',\n    hovermode: 'x unified',\n    margin: {\n      t: 15\n    }\n  };\n  var sampleTracesConfig = {\n    toImageButtonOptions: {\n      format: 'svg',\n      filename: 'SampleCounts',\n      height: 500,\n      width: 1500,\n      scale: 1\n    }\n  };\n\n  // Component for Plotly bar chart with classification counts per locus\n  var sampleCountsStackedBar = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_PlotlyPlot__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n    plotData: sampleTraces,\n    layoutProps: sampleTracesLayout,\n    configOptions: sampleTracesConfig\n  }, \"sampleStackedCounts\");\n  var handleSampleBarButtonClick = event => {\n    if (event.target.id === 'minusSample') {\n      setSampleBarIndex(Math.max(sampleBarIndex - 1, 0));\n    } else if (event.target.id === 'plusSample') {\n      setSampleBarIndex(Math.min(sampleBarIndex + 1, maxRanges - 1));\n    }\n  };\n  var handleSampleBarFast = event => {\n    if (event.target.id === 'toSampleStart') {\n      setSampleBarIndex(0);\n    } else if (event.target.id === 'toSampleEnd') {\n      setSampleBarIndex(maxRanges - 1);\n    }\n  };\n\n  // Component to select sample range\n  var sampleButtonGroup = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_IconButton__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n      onClick: handleSampleBarFast,\n      size: \"small\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_icons_material_KeyboardDoubleArrowLeft__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n        id: \"toSampleStart\",\n        fontSize: \"large\"\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_IconButton__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n      onClick: handleSampleBarButtonClick,\n      size: \"small\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_icons_material_KeyboardArrowLeft__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n        id: \"minusSample\",\n        fontSize: \"large\"\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_TextField__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n      id: \"sampleRange\",\n      size: \"small\",\n      InputProps: {\n        readOnly: true\n      },\n      sx: {\n        width: 120,\n        textAlign: \"center\"\n      },\n      label: \"\".concat(barplotRanges[sampleBarIndex][0], \"-\").concat(barplotRanges[sampleBarIndex][1]),\n      disabled: true,\n      InputLabelProps: {\n        style: {\n          width: '100%',\n          color: 'black'\n        }\n      }\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_IconButton__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n      onClick: handleSampleBarButtonClick,\n      size: \"small\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_icons_material_KeyboardArrowRight__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n        id: \"plusSample\",\n        fontSize: \"large\"\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_IconButton__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n      onClick: handleSampleBarFast,\n      size: \"small\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_icons_material_KeyboardDoubleArrowRight__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n        id: \"toSampleEnd\",\n        fontSize: \"large\"\n      })\n    })]\n  });\n\n  // Data for loci classification counts stacked barplots\n  var lociIDs = data.loci_ids;\n  var lociClassCounts = data.loci_data;\n  var [lociBarIndex, setLociBarIndex] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);\n  var lociBarMin = 0;\n  var lociBarMax = lociIDs.length > barStep ? barStep : lociIDs.length;\n  // Define array with barplot ranges\n  // Define number of ranges\n  var lociMaxRanges = Math.ceil(lociIDs.length / barStep);\n  var lociBarplotRanges = [];\n  for (var _i2 = 0; _i2 < lociMaxRanges; _i2++) {\n    lociBarplotRanges.push([lociBarMin, lociBarMax]);\n    lociBarMin = Math.min(lociBarMin + barStep, lociIDs.length - barStep);\n    lociBarMax = Math.min(lociBarMax + barStep, lociIDs.length);\n  }\n  var lociSliderMax = Math.min(lociIDs.length, barStep / 2);\n  var lociTraces = [];\n  for (var _i3 = 0; _i3 < classificationTypes.length; _i3++) {\n    var _classTrace = {\n      x: lociIDs.slice(lociBarplotRanges[lociBarIndex][0], lociBarplotRanges[lociBarIndex][1]),\n      y: lociClassCounts[_i3].slice(lociBarplotRanges[lociBarIndex][0], lociBarplotRanges[lociBarIndex][1]),\n      type: 'bar',\n      name: classificationTypes[_i3],\n      marker: {\n        color: typesColors[_i3]\n      }\n    };\n    lociTraces.push(_classTrace);\n  }\n  var lociTracesLayout = {\n    title: {\n      text: \"\"\n    },\n    xaxis: {\n      title: {\n        text: \"Locus\"\n      },\n      showgrid: false,\n      zeroline: false,\n      showline: true,\n      showticks: false,\n      showticklabels: false,\n      rangeslider: {\n        thickness: 0.15\n      },\n      range: [-0.5, lociSliderMax]\n    },\n    yaxis: {\n      title: {\n        text: \"Class Counts\"\n      },\n      showgrid: true,\n      zeroline: false,\n      showline: true,\n      showticks: false\n      //dtick: 100\n    },\n\n    //bargap: 0,\n    bargroupgap: 0,\n    barmode: 'stack',\n    hovermode: 'x unified',\n    margin: {\n      t: 15\n    }\n  };\n  var lociTracesConfig = {\n    toImageButtonOptions: {\n      format: 'svg',\n      filename: 'LociCounts',\n      height: 500,\n      width: 1500,\n      scale: 1\n    }\n  };\n  // Component for Plotly Histogram with total alleles distribution\n  var lociCountsStackedBar = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_PlotlyPlot__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n    plotData: lociTraces,\n    layoutProps: lociTracesLayout,\n    configOptions: lociTracesConfig\n  }, \"lociStackedCounts\");\n  var handleLociBarButtonClick = event => {\n    if (event.target.id === 'minusLoci') {\n      setLociBarIndex(Math.max(lociBarIndex - 1, 0));\n    } else if (event.target.id === 'plusLoci') {\n      setLociBarIndex(Math.min(lociBarIndex + 1, lociMaxRanges - 1));\n    }\n  };\n  var handleLociBarFast = event => {\n    if (event.target.id === 'toLociStart') {\n      setLociBarIndex(0);\n    } else if (event.target.id === 'toLociEnd') {\n      setLociBarIndex(lociMaxRanges - 1);\n    }\n  };\n\n  // ButtonGroup component to select loci range\n  var lociButtonGroup = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_IconButton__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n      onClick: handleLociBarFast,\n      size: \"small\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_icons_material_KeyboardDoubleArrowLeft__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n        id: \"toLociStart\",\n        fontSize: \"large\"\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_IconButton__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n      onClick: handleLociBarButtonClick,\n      size: \"small\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_icons_material_KeyboardArrowLeft__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n        id: \"minusLoci\",\n        fontSize: \"large\"\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_TextField__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n      id: \"lociRange\",\n      size: \"small\",\n      InputProps: {\n        readOnly: true\n      },\n      sx: {\n        width: 120,\n        textAlign: \"center\"\n      },\n      label: \"\".concat(lociBarplotRanges[lociBarIndex][0], \"-\").concat(lociBarplotRanges[lociBarIndex][1]),\n      disabled: true,\n      InputLabelProps: {\n        style: {\n          width: '100%',\n          color: 'black'\n        }\n      }\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_IconButton__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n      onClick: handleLociBarButtonClick,\n      size: \"small\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_icons_material_KeyboardArrowRight__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n        id: \"plusLoci\",\n        fontSize: \"large\"\n      })\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_IconButton__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n      onClick: handleLociBarFast,\n      size: \"small\",\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_icons_material_KeyboardDoubleArrowRight__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n        id: \"toLociEnd\",\n        fontSize: \"large\"\n      })\n    })]\n  });\n\n  // Tab Panel for classification Counts\n  var TabPanelTitles = [\"Counts Per Sample\", \"Counts Per Locus\"];\n  var samplesTabPanelData = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n      sx: {\n        p: 1\n      },\n      children: alertMessagesComponents[0]\n    }, \"sample-info\"), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n      sx: {\n        p: 1\n      },\n      children: sampleButtonGroup\n    }, \"sample-menu\"), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n      sx: {\n        p: 1\n      },\n      children: sampleCountsStackedBar\n    }, \"sample-data\")]\n  }, \"sample-box\");\n  var lociTabPanelData = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n      sx: {\n        p: 1\n      },\n      children: alertMessagesComponents[1]\n    }, \"loci-info\"), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n      sx: {\n        p: 1\n      },\n      children: lociButtonGroup\n    }, \"loci-menu\"), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n      sx: {\n        p: 1\n      },\n      children: lociCountsStackedBar\n    }, \"loci-data\")]\n  }, \"loci-box\");\n  var TabPanelData = [[samplesTabPanelData], [lociTabPanelData]];\n  var stackedBarsTabPanel = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_TabPanelMUI__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n    ContentTitles: TabPanelTitles,\n    ContentData: TabPanelData\n  });\n\n  // Create components to display tables with sample and locus stats\n  // Data for table with sample stats\n  var sampleStats = data.sample_stats;\n\n  // Custom option for Sample stats Table\n  var sampleTableCustomOptions = {\n    downloadOptions: {\n      filename: \"sample_stats.tsv\",\n      separator: \"\\t\",\n      filterOptions: {\n        useDisplayedColumnsOnly: true,\n        useDisplayedRowsOnly: true\n      }\n    },\n    filter: true,\n    filterType: 'multiselect',\n    search: true,\n    rowsPerPage: 10,\n    rowsPerPageOptions: [10, 20, 40, 80, 100],\n    jumpToPage: true,\n    draggableColumns: {\n      enabled: true\n    },\n    elevation: 0\n  };\n  var sampleTableOptions = _objectSpread(_objectSpread({}, _constants__WEBPACK_IMPORTED_MODULE_8__.globalTableOptions), sampleTableCustomOptions);\n  // Component for Sample stats table\n  var sampleTable = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_DataTable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n    tableData: sampleStats,\n    tableTitle: \"Sample Stats\",\n    tableOptions: sampleTableOptions,\n    hiddenColumns: _constants__WEBPACK_IMPORTED_MODULE_8__.sampleTableHiddenColumns\n  });\n\n  // Data for table with loci stats\n  var lociStats = data.loci_stats;\n\n  // Custom option for Loci stats Table\n  var lociTableCustomOptions = {\n    downloadOptions: {\n      filename: \"loci_stats.tsv\",\n      separator: \"\\t\",\n      filterOptions: {\n        useDisplayedColumnsOnly: true,\n        useDisplayedRowsOnly: true\n      }\n    },\n    filter: true,\n    filterType: 'multiselect',\n    search: true,\n    rowsPerPage: 10,\n    rowsPerPageOptions: [10, 20, 40, 80, 100],\n    jumpToPage: true,\n    draggableColumns: {\n      enabled: true\n    },\n    elevation: 0\n  };\n  var lociTableOptions = _objectSpread(_objectSpread({}, _constants__WEBPACK_IMPORTED_MODULE_8__.globalTableOptions), lociTableCustomOptions);\n  // Component for Loci stats table\n  var lociTable = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_DataTable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n    tableData: lociStats,\n    tableTitle: \"Loci Stats\",\n    tableOptions: lociTableOptions,\n    hiddenColumns: _constants__WEBPACK_IMPORTED_MODULE_8__.lociTableHiddenColumns\n  });\n\n  // Component for histogram with sample stats\n  var [sampleColumn, setSampleColumn] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(1);\n  var handleSampleColumnChange = event => {\n    setSampleColumn(event.target.value);\n  };\n\n  // Get column name\n  var sampleColumnName = sampleStats[0].columns[sampleColumn];\n  var xSampleData = [];\n  var ySampleData = [];\n  for (var item of sampleStats[1].rows) {\n    xSampleData.push(item[sampleColumn]);\n    ySampleData.push(item[0]);\n  }\n  var plotSample = [{\n    x: xSampleData,\n    y: ySampleData,\n    type: \"histogram\",\n    name: \"Distribution of \".concat(sampleColumnName),\n    marker: {\n      color: \"#0570b0\",\n      line: {\n        color: \"#a6bddb\",\n        width: 1\n      }\n    }\n  }];\n  var layoutSample = {\n    title: {\n      text: \"Distribution of \".concat(sampleColumnName)\n    },\n    xaxis: {\n      title: {\n        text: sampleColumnName\n      },\n      showgrid: false,\n      zeroline: false,\n      showline: true,\n      showticklabels: false\n    },\n    yaxis: {\n      title: {\n        text: \"Count\"\n      },\n      showgrid: true,\n      zeroline: false,\n      showline: true,\n      ticks: \"outside\"\n      //dtick: 100\n    },\n\n    bargroupgap: 0,\n    bargap: 0\n  };\n  var configSample = {\n    toImageButtonOptions: {\n      format: 'svg',\n      filename: sampleColumnName,\n      height: 500,\n      width: 700,\n      scale: 1\n    }\n  };\n  // Component for Plotly Histogram with total alleles distribution\n  var sampleHistogram = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_PlotlyPlot__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n    plotData: plotSample,\n    layoutProps: layoutSample,\n    configOptions: configSample\n  }, \"sampleHistogram\");\n\n  // Create Select Menu to select stat to plot\n  var sampleStatsMenuOptions = sampleStats[0].columns.slice(1).map((item, index) => {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_MenuItem__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n      value: index + 1,\n      children: item\n    }, index);\n  });\n  var sampleStatsMenu = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n    sx: {\n      minWidth: 120,\n      marginTop: \"20px\"\n    },\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material_FormControl__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n      fullWidth: true,\n      size: \"small\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_InputLabel__WEBPACK_IMPORTED_MODULE_22__[\"default\"], {\n        id: \"sample-menu\",\n        children: \"Select Stat\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Select__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n        labelId: \"sample-select\",\n        id: \"sample-select\",\n        value: sampleColumn,\n        label: sampleColumnName,\n        onChange: handleSampleColumnChange,\n        children: sampleStatsMenuOptions\n      })]\n    })\n  });\n\n  // Component for histogram with loci stats\n  var [lociColumn, setLociColumn] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(1);\n\n  // Get column name\n  var lociColumnName = lociStats[0].columns[lociColumn];\n  var handleLociColumnChange = event => {\n    setLociColumn(event.target.value);\n  };\n  var xLociData = [];\n  var yLociData = [];\n  for (var _item of lociStats[1].rows) {\n    xLociData.push(_item[lociColumn]);\n    yLociData.push(_item[0]);\n  }\n  var plotLoci = [{\n    x: xLociData,\n    y: yLociData,\n    type: \"histogram\",\n    name: \"Distribution of \".concat(lociColumnName),\n    marker: {\n      color: \"#0570b0\",\n      line: {\n        color: \"#a6bddb\",\n        width: 1\n      }\n    }\n  }];\n  var layoutLoci = {\n    title: {\n      text: \"Distribution of \".concat(lociColumnName)\n    },\n    xaxis: {\n      title: {\n        text: lociColumnName\n      },\n      showgrid: false,\n      zeroline: false,\n      showline: true,\n      showticklabels: false\n    },\n    yaxis: {\n      title: {\n        text: \"Count\"\n      },\n      showgrid: true,\n      zeroline: false,\n      showline: true,\n      ticks: \"outside\"\n      //dtick: 100\n    },\n\n    bargroupgap: 0,\n    bargap: 0\n  };\n  var configLoci = {\n    toImageButtonOptions: {\n      format: 'svg',\n      filename: lociColumnName,\n      height: 500,\n      width: 700,\n      scale: 1\n    }\n  };\n  // Component for Plotly Histogram with total alleles distribution\n  var lociHistogram = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_PlotlyPlot__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n    plotData: plotLoci,\n    layoutProps: layoutLoci,\n    configOptions: configLoci\n  }, \"lociHistogram\");\n\n  // Create Select Menu to select stat to plot\n  var lociStatsMenuOptions = lociStats[0].columns.slice(1).map((item, index) => {\n    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_MenuItem__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n      value: index + 1,\n      children: item\n    }, index);\n  });\n  var lociStatsMenu = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n    sx: {\n      minWidth: 120,\n      marginTop: \"20px\"\n    },\n    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material_FormControl__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n      fullWidth: true,\n      size: \"small\",\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_InputLabel__WEBPACK_IMPORTED_MODULE_22__[\"default\"], {\n        id: \"loci-menu\",\n        children: \"Select Stat\"\n      }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Select__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n        labelId: \"loci-select\",\n        id: \"loci-select\",\n        value: lociColumn,\n        label: lociColumnName,\n        onChange: handleLociColumnChange,\n        children: lociStatsMenuOptions\n      })]\n    })\n  });\n\n  // Grid components\n  var sampleStatsGrid = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n    children: [sampleTable, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n      children: [sampleStatsMenu, sampleHistogram]\n    })]\n  }, \"sample-stats\");\n  var lociStatsGrid = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n    children: [lociTable, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n      children: [lociStatsMenu, lociHistogram]\n    })]\n  }, \"loci-stats\");\n\n  // Tab Panel for Sample and Loci stats\n  var StatsTabPanelTitles = [\"Sample Stats\", \"Loci Stats\"];\n  var StatsTabPanelData = [[sampleStatsGrid], [lociStatsGrid]];\n  var statsTabPanel = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_TabPanelMUI__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n    ContentTitles: StatsTabPanelTitles,\n    ContentData: StatsTabPanelData\n  });\n\n  // Create component to display table with loci annotations\n  // data for Annotations table\n  var annotationsData = data.annotations;\n  var annotationsTableCustomOptions = {\n    downloadOptions: {\n      filename: \"loci_annotations.tsv\",\n      separator: \"\\t\",\n      filterOptions: {\n        useDisplayedColumnsOnly: true,\n        useDisplayedRowsOnly: true\n      }\n    },\n    filter: true,\n    filterType: 'multiselect',\n    search: true,\n    rowsPerPage: 10,\n    rowsPerPageOptions: [10, 20, 40, 80, 100],\n    jumpToPage: true,\n    draggableColumns: {\n      enabled: true\n    }\n  };\n  var annotationsTableOptions = _objectSpread(_objectSpread({}, _constants__WEBPACK_IMPORTED_MODULE_8__.globalTableOptions), annotationsTableCustomOptions);\n\n  // Select conditional formatting function to apply\n  // Only add href to loci names if the loci reports were generated\n  var LociAnnotationsFormatting = undefined;\n  if (data.lociReports === 1) {\n    LociAnnotationsFormatting = _objectSpread(_objectSpread({}, locusColumnFormatting), uniprotLinkColumnFormatting);\n  } else {\n    LociAnnotationsFormatting = _objectSpread({}, uniprotLinkColumnFormatting);\n  }\n  // DataTable component to display loci annotations\n  // Only define component if there is annotation data\n  var LociAnnotationsTable = undefined;\n  if (annotationsData[0].columns.length > 0) {\n    LociAnnotationsTable = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_DataTable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n      tableData: annotationsData,\n      tableTitle: \"Loci Annotations\",\n      tableOptions: annotationsTableOptions,\n      tableConditionalFormatting: LociAnnotationsFormatting\n    });\n  }\n\n  // Create component to display Loci Presence-Absence Heatmap\n  var paRows = data.presence_absence[0].rows;\n  var paLociIDs = data.presence_absence[1].loci_ids;\n  var paSampleIDs = data.presence_absence[2].sample_ids;\n  var colorscaleValue = [[0, '#f7f7f7'], [1, '#053061']];\n  var paHeatmap = undefined;\n  if (paRows.length > 0) {\n    var paData = [{\n      z: paRows,\n      x: paLociIDs,\n      y: paSampleIDs,\n      type: 'heatmap',\n      showscale: false,\n      colorscale: colorscaleValue,\n      xgap: 0.05,\n      ygap: 0.05,\n      // Necessary to force binary colorscale when values are all the same\n      zmax: 1,\n      zmin: 0\n    }];\n    var paLayout = {\n      title: {\n        text: ''\n      },\n      xaxis: {\n        title: {\n          text: \"Locus\"\n        },\n        ticks: '',\n        showticklabels: false,\n        showticks: false\n      },\n      yaxis: {\n        title: {\n          text: \"Sample\"\n        },\n        ticks: '',\n        showticklabels: false,\n        showticks: false\n      },\n      height: 700,\n      margin: {\n        t: 20,\n        r: 20\n      }\n    };\n    var paConfig = {\n      toImageButtonOptions: {\n        format: 'svg',\n        filename: 'presence_absence',\n        height: 700,\n        scale: 1\n      }\n    };\n    paHeatmap = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_PlotlyPlot__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n      plotData: paData,\n      layoutProps: paLayout,\n      configOptions: paConfig\n    }, \"paHeatmap\");\n  }\n\n  // Component to show the Presence-Absence heatmap for a single sample\n  var [selectedSample, setSelectedSample] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(undefined);\n  var handleSampleSelect = (event, value) => {\n    setSelectedSample(value);\n  };\n  var paSampleHeatmap = undefined;\n  if (paRows.length > 0 && paSampleIDs.includes(selectedSample)) {\n    var selectedSampleIndex = paSampleIDs.indexOf(selectedSample);\n    var paSampleData = [{\n      z: [paRows[selectedSampleIndex]],\n      x: paLociIDs,\n      y: [paSampleIDs[selectedSampleIndex]],\n      type: 'heatmap',\n      showscale: false,\n      colorscale: colorscaleValue,\n      xgap: 0.05,\n      ygap: 0.05,\n      // Necessary to force binary colorscale when values are all the same\n      zmax: 1,\n      zmin: 0\n    }];\n    var paSampleLayout = {\n      title: {\n        text: ''\n      },\n      xaxis: {\n        title: {\n          text: ''\n        },\n        ticks: '',\n        showticklabels: false,\n        showticks: false\n      },\n      yaxis: {\n        title: {\n          text: ''\n        },\n        ticks: '',\n        showticklabels: false,\n        showticks: false\n      },\n      height: 80,\n      margin: {\n        t: 20,\n        b: 0,\n        r: 20\n      }\n    };\n    var paSampleConfig = {\n      toImageButtonOptions: {\n        format: 'svg',\n        filename: \"pa_\".concat(selectedSample),\n        height: 80,\n        scale: 1\n      },\n      displayModeBar: false\n    };\n    paSampleHeatmap = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_PlotlyPlot__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n      plotData: paSampleData,\n      layoutProps: paSampleLayout,\n      configOptions: paSampleConfig\n    }, \"paSampleHeatmap\");\n  }\n\n  // Create Menu to select single sample\n  var sampleSelectMenu = undefined;\n  if (paRows.length > 0) {\n    sampleSelectMenu = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n      sx: {\n        p: 1\n      },\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Autocomplete__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n        disablePortal: true,\n        id: \"sample-select\",\n        options: paSampleIDs,\n        sx: {\n          width: 300\n        },\n        size: \"small\",\n        renderInput: params => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_TextField__WEBPACK_IMPORTED_MODULE_17__[\"default\"], _objectSpread(_objectSpread({}, params), {}, {\n          label: \"Select Sample\"\n        })),\n        onInputChange: handleSampleSelect\n      })\n    }, \"select-sample\");\n  }\n\n  // Create component to display heatmap for a single locus\n  var [selectedLocus, setSelectedLocus] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(undefined);\n  var handleLocusSelect = (event, value) => {\n    setSelectedLocus(value);\n  };\n  var paLocusHeatmap = undefined;\n  if (paRows.length > 0 && paLociIDs.includes(selectedLocus)) {\n    var selectedLocusIndex = paLociIDs.indexOf(selectedLocus);\n\n    // Get locus values for all samples\n    var locusData = [];\n    for (var _item2 of paRows) {\n      locusData.push([_item2[selectedLocusIndex]]);\n    }\n    var paLocusData = [{\n      z: locusData,\n      x: [paLociIDs[selectedLocusIndex]],\n      y: paSampleIDs,\n      type: 'heatmap',\n      showscale: false,\n      colorscale: colorscaleValue,\n      xgap: 0.05,\n      ygap: 0.05,\n      // Necessary to force binary colorscale when values are all the same\n      zmax: 1,\n      zmin: 0\n    }];\n    var paLocusLayout = {\n      title: {\n        text: ''\n      },\n      xaxis: {\n        title: {\n          text: ''\n        },\n        ticks: '',\n        showticklabels: false,\n        showticks: false\n      },\n      yaxis: {\n        title: {\n          text: ''\n        },\n        ticks: '',\n        showticklabels: false,\n        showticks: false\n      },\n      height: 700,\n      width: 80,\n      margin: {\n        t: 20,\n        l: 0,\n        r: 20\n      }\n    };\n    var paLocusConfig = {\n      toImageButtonOptions: {\n        format: 'svg',\n        filename: \"pa_\".concat(selectedLocus),\n        height: 700,\n        scale: 1\n      },\n      displayModeBar: false\n    };\n    paLocusHeatmap = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_PlotlyPlot__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n      plotData: paLocusData,\n      layoutProps: paLocusLayout,\n      configOptions: paLocusConfig\n    }, \"paLocusHeatmap\");\n  }\n\n  // Create Menu to select single locus\n  var locusSelectMenu = undefined;\n  if (paRows.length > 0) {\n    locusSelectMenu = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n      sx: {\n        p: 1\n      },\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Autocomplete__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n        disablePortal: true,\n        id: \"locus-select\",\n        options: paLociIDs,\n        sx: {\n          width: 300\n        },\n        size: \"small\",\n        renderInput: params => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_TextField__WEBPACK_IMPORTED_MODULE_17__[\"default\"], _objectSpread(_objectSpread({}, params), {}, {\n          label: \"Select Locus\"\n        })),\n        onInputChange: handleLocusSelect\n      })\n    }, \"select-locus\");\n  }\n  var paComponent = undefined;\n  if (paRows.length > 0) {\n    var paTitle = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n      sx: {\n        color: '#bb7944',\n        fontSize: 20\n      },\n      children: \"Loci Presence-Absence\"\n    });\n\n    // Menu component\n    var paMenu = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n      sx: {\n        display: 'flex',\n        flexDirection: 'row',\n        flexWrap: 'wrap',\n        justifyContent: 'center',\n        alignItems: 'center',\n        alignContent: 'space-around'\n      },\n      children: [sampleSelectMenu, locusSelectMenu]\n    }, \"pa-options-menu\");\n    var paHeatmaps = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material_Unstable_Grid2__WEBPACK_IMPORTED_MODULE_25__[\"default\"], {\n      container: true,\n      spacing: 0,\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Unstable_Grid2__WEBPACK_IMPORTED_MODULE_25__[\"default\"], {\n        xs: 11,\n        children: paSampleHeatmap\n      }, \"sample-heatmap\"), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Unstable_Grid2__WEBPACK_IMPORTED_MODULE_25__[\"default\"], {\n        xs: 1\n      }, \"sample-fill\"), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Unstable_Grid2__WEBPACK_IMPORTED_MODULE_25__[\"default\"], {\n        xs: 11,\n        children: paHeatmap\n      }, \"main-heatmap\"), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Unstable_Grid2__WEBPACK_IMPORTED_MODULE_25__[\"default\"], {\n        xs: 1,\n        children: paLocusHeatmap\n      }, \"locus-heatmap\")]\n    }, \"pa-heatmaps\");\n    paComponent = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_AccordionMUI__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n      summaryText: paTitle,\n      detailsData: [paMenu, paHeatmaps],\n      expanded: false,\n      alerts: [alertMessagesComponents[3]]\n    });\n  }\n\n  // Create component to display Distance Matrix Heatmap\n  var dmRows = data.distance_matrix[0].rows;\n  var dmSampleIDs = data.distance_matrix[1].sample_ids;\n  var dmHeatmap = undefined;\n  if (dmRows.length > 0) {\n    var dmData = [{\n      z: dmRows,\n      x: dmSampleIDs,\n      y: dmSampleIDs,\n      type: 'heatmap',\n      showscale: true,\n      colorscale: 'Viridis',\n      xgap: 0.05,\n      ygap: 0.05\n    }];\n    var dmLayout = {\n      title: {\n        text: ''\n      },\n      xaxis: {\n        title: {\n          text: \"Sample\"\n        },\n        ticks: '',\n        showticklabels: false,\n        showticks: false\n      },\n      yaxis: {\n        title: {\n          text: \"Sample\"\n        },\n        ticks: '',\n        showticklabels: false,\n        showticks: false\n      },\n      height: 700,\n      margin: {\n        t: 20\n      }\n    };\n    var dmConfig = {\n      toImageButtonOptions: {\n        format: 'svg',\n        filename: 'distance_matrix',\n        height: 700,\n        scale: 1\n      }\n    };\n    dmHeatmap = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_PlotlyPlot__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n      plotData: dmData,\n      layoutProps: dmLayout,\n      configOptions: dmConfig\n    }, \"dmHeatmap\");\n  }\n\n  // Component to show a heatmap for a single sample\n  var [selectedDmSample, setSelectedDmSample] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(undefined);\n  var handleDmSampleSelect = (event, value) => {\n    setSelectedDmSample(value);\n  };\n  var dmSampleHeatmap = undefined;\n  if (dmRows.length > 0 && dmSampleIDs.includes(selectedDmSample)) {\n    var selectedDmSampleIndex = dmSampleIDs.indexOf(selectedDmSample);\n    var dmSampleData = [{\n      z: [dmRows[selectedDmSampleIndex]],\n      x: dmSampleIDs,\n      y: [dmSampleIDs[selectedDmSampleIndex]],\n      type: 'heatmap',\n      showscale: false,\n      colorscale: 'Viridis',\n      xgap: 0.05,\n      ygap: 0.05\n    }];\n    var dmSampleLayout = {\n      title: {\n        text: ''\n      },\n      xaxis: {\n        title: {\n          text: ''\n        },\n        ticks: '',\n        showticklabels: false,\n        showticks: false\n      },\n      yaxis: {\n        title: {\n          text: ''\n        },\n        ticks: '',\n        showticklabels: false,\n        showticks: false\n      },\n      height: 80,\n      margin: {\n        t: 20,\n        b: 0\n      }\n    };\n    var dmSampleConfig = {\n      toImageButtonOptions: {\n        format: 'svg',\n        filename: \"dm_\".concat(selectedDmSample),\n        height: 80,\n        scale: 1\n      },\n      displayModeBar: false\n    };\n    dmSampleHeatmap = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_PlotlyPlot__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n      plotData: dmSampleData,\n      layoutProps: dmSampleLayout,\n      configOptions: dmSampleConfig\n    }, \"dmSampleHeatmap\");\n  }\n\n  // Create Menu to select single sample\n  var dmMenu = undefined;\n  if (dmRows.length > 0) {\n    var sampleDmSelectMenu = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Autocomplete__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n      disablePortal: true,\n      id: \"sample-select\",\n      options: dmSampleIDs,\n      sx: {\n        width: 300\n      },\n      size: \"small\",\n      renderInput: params => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_TextField__WEBPACK_IMPORTED_MODULE_17__[\"default\"], _objectSpread(_objectSpread({}, params), {}, {\n        label: \"Select Sample\"\n      })),\n      onInputChange: handleDmSampleSelect\n    }, \"dm-sample-menu\");\n\n    // Upper Menu component\n    dmMenu = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n      sx: {\n        display: 'flex',\n        flexDirection: 'row',\n        flexWrap: 'wrap',\n        justifyContent: 'center',\n        alignItems: 'center',\n        alignContent: 'space-around'\n      },\n      children: sampleDmSelectMenu\n    }, \"dm-options-menu\");\n  }\n\n  // Bottom Menu component to find closest strains\n  var [sampleDistanceSelect, setSampleDistanceSelect] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(undefined);\n  var [closestSamples, setClosestSamples] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(undefined);\n  // Event handler used to change sample to compute distances\n  var handleSampleDistanceSelect = (event, value) => {\n    setSampleDistanceSelect(value);\n  };\n\n  // Component to select distance threshold\n  // State used to set distance threshold value\n  var [distanceValue, setDistanceValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(10);\n  // Event handler used to change distance threshold value\n  var handleDistanceValue = value => {\n    setDistanceValue(+value);\n  };\n  var sampleClosestStrains = undefined;\n  var sampleDistanceValue = undefined;\n  if (dmRows.length > 0) {\n    // Component to select sample\n    sampleClosestStrains = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Autocomplete__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n      disablePortal: true,\n      id: \"sample-distance-select\",\n      options: dmSampleIDs,\n      sx: {\n        width: 300\n      },\n      size: \"small\",\n      renderInput: params => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_TextField__WEBPACK_IMPORTED_MODULE_17__[\"default\"], _objectSpread(_objectSpread({}, params), {}, {\n        label: \"Select Sample\"\n      })),\n      onInputChange: handleSampleDistanceSelect\n    });\n    sampleDistanceValue = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_TextField__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n      id: \"distance-value\",\n      size: \"small\",\n      sx: {\n        height: 40,\n        width: 100\n      },\n      label: \"Max Distance\",\n      variant: \"outlined\",\n      defaultValue: distanceValue,\n      onKeyDown: e => {\n        if (e.key === 'Enter') {\n          e.preventDefault();\n          handleDistanceValue(e.target.value);\n        }\n      }\n    });\n  }\n\n  // Find closest samples\n  var selectedSamples = [{\n    'columns': ['Sample', 'Distance']\n  }, {\n    'rows': []\n  }];\n  if (dmSampleIDs.includes(sampleDistanceSelect)) {\n    // Find closest strains based on distance threshold\n    var sampleIndex = dmSampleIDs.indexOf(sampleDistanceSelect);\n    var sampleRow = dmRows[sampleIndex];\n    for (var _i4 = 0; _i4 < dmSampleIDs.length; _i4++) {\n      if (dmSampleIDs[_i4] !== sampleDistanceSelect) {\n        if (sampleRow[_i4] <= distanceValue) {\n          selectedSamples[1].rows.push([dmSampleIDs[_i4], sampleRow[_i4]]);\n        }\n      }\n    }\n  }\n\n  // Create table to display list of closest samples\n  var distanceTable = undefined;\n  if (sampleDistanceSelect) {\n    var distanceTableCustomOptions = {\n      downloadOptions: {\n        filename: \"closest_samples.tsv\",\n        separator: \"\\t\",\n        filterOptions: {\n          useDisplayedColumnsOnly: true,\n          useDisplayedRowsOnly: true\n        }\n      },\n      filter: true,\n      filterType: 'multiselect',\n      search: true,\n      rowsPerPage: 10,\n      rowsPerPageOptions: [10, 20, 40, 80, 100],\n      jumpToPage: true,\n      draggableColumns: {\n        enabled: true\n      },\n      elevation: 0\n    };\n    var distanceTableOptions = _objectSpread(_objectSpread({}, _constants__WEBPACK_IMPORTED_MODULE_8__.globalTableOptions), distanceTableCustomOptions);\n\n    // Component for Distance table\n    distanceTable = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_DataTable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n      tableData: selectedSamples,\n      tableTitle: \"Closest Samples\",\n      tableOptions: distanceTableOptions\n    });\n  }\n  var dmComponent = undefined;\n  if (dmRows.length > 0) {\n    var dmBottomMenu = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n      children: [alertMessagesComponents[5], /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n        sx: {\n          display: 'flex',\n          flexDirection: 'row',\n          flexWrap: 'wrap',\n          justifyContent: 'center',\n          alignItems: 'center',\n          alignContent: 'space-around',\n          p: 1\n        },\n        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n          sx: {\n            p: 1\n          },\n          children: sampleClosestStrains\n        }, \"dm-sample\"), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n          sx: {\n            p: 1\n          },\n          children: sampleDistanceValue\n        }, \"dm-distance\")]\n      }, \"dm-bottom-menu\")]\n    }, \"dm-bot-menu\");\n    var dmHeatmaps = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material_Unstable_Grid2__WEBPACK_IMPORTED_MODULE_25__[\"default\"], {\n      container: true,\n      spacing: 0.5,\n      children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Unstable_Grid2__WEBPACK_IMPORTED_MODULE_25__[\"default\"], {\n        xs: 12,\n        children: dmSampleHeatmap\n      }, \"dm-sample-heatmap\"), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Unstable_Grid2__WEBPACK_IMPORTED_MODULE_25__[\"default\"], {\n        xs: 12,\n        children: dmHeatmap\n      }, \"dm-main-heatmap\")]\n    }, \"dm-heatmaps\");\n    var dmTitle = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n      sx: {\n        color: '#bb7944',\n        fontSize: 20\n      },\n      children: \"Allelic Distances\"\n    });\n    dmComponent = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_AccordionMUI__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n      summaryText: dmTitle,\n      detailsData: [dmMenu, dmHeatmaps, dmBottomMenu, distanceTable],\n      expanded: false,\n      alerts: [alertMessagesComponents[4], alertMessagesComponents[6]]\n    });\n  }\n\n  // Create component to display NJ tree\n  // Get data for Phylocanvas tree\n  var phyloData = data.cgMLST_tree.phylo_data;\n\n  // Define title for tree component\n  var phylogeneticElementTitle = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n    sx: {\n      color: '#bb7944',\n      fontSize: 20\n    },\n    children: \"Core-genome Neighbor-Joining Tree\"\n  });\n  var phylogeneticElementTree = undefined;\n  if (phyloData.length > 0) {\n    phylogeneticElementTree = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n      sx: {\n        p: 1\n      },\n      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_PhylogeneticTree__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n        treeSource: phyloData,\n        validIDs: sampleIDs\n      })\n    }, \"tree-box\");\n  }\n  ;\n\n  // Create component to display tree\n  var PhylogeneticElement = undefined;\n  if (phylogeneticElementTree !== undefined) {\n    PhylogeneticElement = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_AccordionMUI__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n      summaryText: phylogeneticElementTitle,\n      detailsData: [phylogeneticElementTree],\n      expanded: false,\n      alerts: [alertMessagesComponents[7]]\n    });\n  }\n  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n    className: _ReportPage_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].mainDiv,\n    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n      children: HeaderComponent\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n      className: _ReportPage_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].secondaryDiv,\n      children: summaryTable\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n      className: _ReportPage_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].secondaryDiv,\n      children: stackedBarsTabPanel\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n      className: _ReportPage_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].secondaryDiv,\n      children: statsTabPanel\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(\"div\", {\n      className: _ReportPage_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].secondaryDiv,\n      children: [LociAnnotationsTable ? undefined : alertMessagesComponents[2], LociAnnotationsTable]\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n      className: _ReportPage_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].secondaryDiv,\n      children: paComponent\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n      className: _ReportPage_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].secondaryDiv,\n      children: dmComponent\n    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(\"div\", {\n      className: _ReportPage_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].secondaryDiv,\n      children: PhylogeneticElement\n    })]\n  });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (ReportPage);\n\n//# sourceURL=webpack://schemaevaluator/./src/pages/ReportPage.js?");

/***/ }),

/***/ "./node_modules/clsx/dist/clsx.m.js":
/*!******************************************!*\
  !*** ./node_modules/clsx/dist/clsx.m.js ***!
  \******************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"clsx\": function() { return /* binding */ clsx; }\n/* harmony export */ });\nfunction r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}/* harmony default export */ __webpack_exports__[\"default\"] = (clsx);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/clsx/dist/clsx.m.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/actual/array/from.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js-pure/actual/array/from.js ***!
  \********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../stable/array/from */ \"./node_modules/core-js-pure/stable/array/from.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/actual/array/from.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/actual/array/is-array.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/actual/array/is-array.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../stable/array/is-array */ \"./node_modules/core-js-pure/stable/array/is-array.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/actual/array/is-array.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/actual/get-iterator-method.js":
/*!*****************************************************************!*\
  !*** ./node_modules/core-js-pure/actual/get-iterator-method.js ***!
  \*****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../stable/get-iterator-method */ \"./node_modules/core-js-pure/stable/get-iterator-method.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/actual/get-iterator-method.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/actual/instance/bind.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/actual/instance/bind.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../stable/instance/bind */ \"./node_modules/core-js-pure/stable/instance/bind.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/actual/instance/bind.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/actual/instance/index-of.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/actual/instance/index-of.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../stable/instance/index-of */ \"./node_modules/core-js-pure/stable/instance/index-of.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/actual/instance/index-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/actual/instance/slice.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/actual/instance/slice.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../stable/instance/slice */ \"./node_modules/core-js-pure/stable/instance/slice.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/actual/instance/slice.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/actual/object/assign.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/actual/object/assign.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../stable/object/assign */ \"./node_modules/core-js-pure/stable/object/assign.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/actual/object/assign.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/actual/object/create.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/actual/object/create.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../stable/object/create */ \"./node_modules/core-js-pure/stable/object/create.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/actual/object/create.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/actual/object/define-property.js":
/*!********************************************************************!*\
  !*** ./node_modules/core-js-pure/actual/object/define-property.js ***!
  \********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../stable/object/define-property */ \"./node_modules/core-js-pure/stable/object/define-property.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/actual/object/define-property.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/actual/object/get-own-property-symbols.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/core-js-pure/actual/object/get-own-property-symbols.js ***!
  \*****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../stable/object/get-own-property-symbols */ \"./node_modules/core-js-pure/stable/object/get-own-property-symbols.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/actual/object/get-own-property-symbols.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/actual/object/get-prototype-of.js":
/*!*********************************************************************!*\
  !*** ./node_modules/core-js-pure/actual/object/get-prototype-of.js ***!
  \*********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../stable/object/get-prototype-of */ \"./node_modules/core-js-pure/stable/object/get-prototype-of.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/actual/object/get-prototype-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/actual/object/keys.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js-pure/actual/object/keys.js ***!
  \*********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../stable/object/keys */ \"./node_modules/core-js-pure/stable/object/keys.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/actual/object/keys.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/actual/object/set-prototype-of.js":
/*!*********************************************************************!*\
  !*** ./node_modules/core-js-pure/actual/object/set-prototype-of.js ***!
  \*********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../stable/object/set-prototype-of */ \"./node_modules/core-js-pure/stable/object/set-prototype-of.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/actual/object/set-prototype-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/actual/symbol/index.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js-pure/actual/symbol/index.js ***!
  \**********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../stable/symbol */ \"./node_modules/core-js-pure/stable/symbol/index.js\");\n\n__webpack_require__(/*! ../../modules/esnext.symbol.dispose */ \"./node_modules/core-js-pure/modules/esnext.symbol.dispose.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/actual/symbol/index.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/actual/symbol/iterator.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/actual/symbol/iterator.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../stable/symbol/iterator */ \"./node_modules/core-js-pure/stable/symbol/iterator.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/actual/symbol/iterator.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/actual/symbol/to-primitive.js":
/*!*****************************************************************!*\
  !*** ./node_modules/core-js-pure/actual/symbol/to-primitive.js ***!
  \*****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../stable/symbol/to-primitive */ \"./node_modules/core-js-pure/stable/symbol/to-primitive.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/actual/symbol/to-primitive.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/array/from.js":
/*!****************************************************!*\
  !*** ./node_modules/core-js-pure/es/array/from.js ***!
  \****************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.string.iterator */ \"./node_modules/core-js-pure/modules/es.string.iterator.js\");\n__webpack_require__(/*! ../../modules/es.array.from */ \"./node_modules/core-js-pure/modules/es.array.from.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nmodule.exports = path.Array.from;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/array/from.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/array/is-array.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js-pure/es/array/is-array.js ***!
  \********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.array.is-array */ \"./node_modules/core-js-pure/modules/es.array.is-array.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nmodule.exports = path.Array.isArray;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/array/is-array.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/array/virtual/concat.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/es/array/virtual/concat.js ***!
  \**************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../../modules/es.array.concat */ \"./node_modules/core-js-pure/modules/es.array.concat.js\");\nvar entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ \"./node_modules/core-js-pure/internals/entry-virtual.js\");\n\nmodule.exports = entryVirtual('Array').concat;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/array/virtual/concat.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/array/virtual/every.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/es/array/virtual/every.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../../modules/es.array.every */ \"./node_modules/core-js-pure/modules/es.array.every.js\");\nvar entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ \"./node_modules/core-js-pure/internals/entry-virtual.js\");\n\nmodule.exports = entryVirtual('Array').every;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/array/virtual/every.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/array/virtual/filter.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/es/array/virtual/filter.js ***!
  \**************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../../modules/es.array.filter */ \"./node_modules/core-js-pure/modules/es.array.filter.js\");\nvar entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ \"./node_modules/core-js-pure/internals/entry-virtual.js\");\n\nmodule.exports = entryVirtual('Array').filter;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/array/virtual/filter.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/array/virtual/find-index.js":
/*!******************************************************************!*\
  !*** ./node_modules/core-js-pure/es/array/virtual/find-index.js ***!
  \******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../../modules/es.array.find-index */ \"./node_modules/core-js-pure/modules/es.array.find-index.js\");\nvar entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ \"./node_modules/core-js-pure/internals/entry-virtual.js\");\n\nmodule.exports = entryVirtual('Array').findIndex;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/array/virtual/find-index.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/array/virtual/for-each.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/es/array/virtual/for-each.js ***!
  \****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../../modules/es.array.for-each */ \"./node_modules/core-js-pure/modules/es.array.for-each.js\");\nvar entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ \"./node_modules/core-js-pure/internals/entry-virtual.js\");\n\nmodule.exports = entryVirtual('Array').forEach;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/array/virtual/for-each.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/array/virtual/index-of.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/es/array/virtual/index-of.js ***!
  \****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../../modules/es.array.index-of */ \"./node_modules/core-js-pure/modules/es.array.index-of.js\");\nvar entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ \"./node_modules/core-js-pure/internals/entry-virtual.js\");\n\nmodule.exports = entryVirtual('Array').indexOf;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/array/virtual/index-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/array/virtual/map.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/es/array/virtual/map.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../../modules/es.array.map */ \"./node_modules/core-js-pure/modules/es.array.map.js\");\nvar entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ \"./node_modules/core-js-pure/internals/entry-virtual.js\");\n\nmodule.exports = entryVirtual('Array').map;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/array/virtual/map.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/array/virtual/reduce.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/es/array/virtual/reduce.js ***!
  \**************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../../modules/es.array.reduce */ \"./node_modules/core-js-pure/modules/es.array.reduce.js\");\nvar entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ \"./node_modules/core-js-pure/internals/entry-virtual.js\");\n\nmodule.exports = entryVirtual('Array').reduce;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/array/virtual/reduce.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/array/virtual/slice.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/es/array/virtual/slice.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../../modules/es.array.slice */ \"./node_modules/core-js-pure/modules/es.array.slice.js\");\nvar entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ \"./node_modules/core-js-pure/internals/entry-virtual.js\");\n\nmodule.exports = entryVirtual('Array').slice;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/array/virtual/slice.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/array/virtual/some.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/es/array/virtual/some.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../../modules/es.array.some */ \"./node_modules/core-js-pure/modules/es.array.some.js\");\nvar entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ \"./node_modules/core-js-pure/internals/entry-virtual.js\");\n\nmodule.exports = entryVirtual('Array').some;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/array/virtual/some.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/array/virtual/sort.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/es/array/virtual/sort.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../../modules/es.array.sort */ \"./node_modules/core-js-pure/modules/es.array.sort.js\");\nvar entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ \"./node_modules/core-js-pure/internals/entry-virtual.js\");\n\nmodule.exports = entryVirtual('Array').sort;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/array/virtual/sort.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/array/virtual/splice.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/es/array/virtual/splice.js ***!
  \**************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../../modules/es.array.splice */ \"./node_modules/core-js-pure/modules/es.array.splice.js\");\nvar entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ \"./node_modules/core-js-pure/internals/entry-virtual.js\");\n\nmodule.exports = entryVirtual('Array').splice;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/array/virtual/splice.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/function/virtual/bind.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/es/function/virtual/bind.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../../modules/es.function.bind */ \"./node_modules/core-js-pure/modules/es.function.bind.js\");\nvar entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ \"./node_modules/core-js-pure/internals/entry-virtual.js\");\n\nmodule.exports = entryVirtual('Function').bind;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/function/virtual/bind.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/get-iterator-method.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/es/get-iterator-method.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../modules/es.array.iterator */ \"./node_modules/core-js-pure/modules/es.array.iterator.js\");\n__webpack_require__(/*! ../modules/es.string.iterator */ \"./node_modules/core-js-pure/modules/es.string.iterator.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js-pure/internals/get-iterator-method.js\");\n\nmodule.exports = getIteratorMethod;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/get-iterator-method.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/instance/bind.js":
/*!*******************************************************!*\
  !*** ./node_modules/core-js-pure/es/instance/bind.js ***!
  \*******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\nvar method = __webpack_require__(/*! ../function/virtual/bind */ \"./node_modules/core-js-pure/es/function/virtual/bind.js\");\n\nvar FunctionPrototype = Function.prototype;\n\nmodule.exports = function (it) {\n  var own = it.bind;\n  return it === FunctionPrototype || (isPrototypeOf(FunctionPrototype, it) && own === FunctionPrototype.bind) ? method : own;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/instance/bind.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/instance/concat.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js-pure/es/instance/concat.js ***!
  \*********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\nvar method = __webpack_require__(/*! ../array/virtual/concat */ \"./node_modules/core-js-pure/es/array/virtual/concat.js\");\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.concat;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.concat) ? method : own;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/instance/concat.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/instance/every.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js-pure/es/instance/every.js ***!
  \********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\nvar method = __webpack_require__(/*! ../array/virtual/every */ \"./node_modules/core-js-pure/es/array/virtual/every.js\");\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.every;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.every) ? method : own;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/instance/every.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/instance/filter.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js-pure/es/instance/filter.js ***!
  \*********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\nvar method = __webpack_require__(/*! ../array/virtual/filter */ \"./node_modules/core-js-pure/es/array/virtual/filter.js\");\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.filter;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.filter) ? method : own;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/instance/filter.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/instance/find-index.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/es/instance/find-index.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\nvar method = __webpack_require__(/*! ../array/virtual/find-index */ \"./node_modules/core-js-pure/es/array/virtual/find-index.js\");\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.findIndex;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.findIndex) ? method : own;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/instance/find-index.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/instance/index-of.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/es/instance/index-of.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\nvar method = __webpack_require__(/*! ../array/virtual/index-of */ \"./node_modules/core-js-pure/es/array/virtual/index-of.js\");\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.indexOf;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.indexOf) ? method : own;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/instance/index-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/instance/map.js":
/*!******************************************************!*\
  !*** ./node_modules/core-js-pure/es/instance/map.js ***!
  \******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\nvar method = __webpack_require__(/*! ../array/virtual/map */ \"./node_modules/core-js-pure/es/array/virtual/map.js\");\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.map;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.map) ? method : own;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/instance/map.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/instance/reduce.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js-pure/es/instance/reduce.js ***!
  \*********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\nvar method = __webpack_require__(/*! ../array/virtual/reduce */ \"./node_modules/core-js-pure/es/array/virtual/reduce.js\");\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.reduce;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.reduce) ? method : own;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/instance/reduce.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/instance/slice.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js-pure/es/instance/slice.js ***!
  \********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\nvar method = __webpack_require__(/*! ../array/virtual/slice */ \"./node_modules/core-js-pure/es/array/virtual/slice.js\");\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.slice;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.slice) ? method : own;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/instance/slice.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/instance/some.js":
/*!*******************************************************!*\
  !*** ./node_modules/core-js-pure/es/instance/some.js ***!
  \*******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\nvar method = __webpack_require__(/*! ../array/virtual/some */ \"./node_modules/core-js-pure/es/array/virtual/some.js\");\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.some;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.some) ? method : own;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/instance/some.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/instance/sort.js":
/*!*******************************************************!*\
  !*** ./node_modules/core-js-pure/es/instance/sort.js ***!
  \*******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\nvar method = __webpack_require__(/*! ../array/virtual/sort */ \"./node_modules/core-js-pure/es/array/virtual/sort.js\");\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.sort;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.sort) ? method : own;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/instance/sort.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/instance/splice.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js-pure/es/instance/splice.js ***!
  \*********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\nvar method = __webpack_require__(/*! ../array/virtual/splice */ \"./node_modules/core-js-pure/es/array/virtual/splice.js\");\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.splice;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.splice) ? method : own;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/instance/splice.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/instance/starts-with.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/es/instance/starts-with.js ***!
  \**************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\nvar method = __webpack_require__(/*! ../string/virtual/starts-with */ \"./node_modules/core-js-pure/es/string/virtual/starts-with.js\");\n\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n  var own = it.startsWith;\n  return typeof it == 'string' || it === StringPrototype\n    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.startsWith) ? method : own;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/instance/starts-with.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/instance/trim.js":
/*!*******************************************************!*\
  !*** ./node_modules/core-js-pure/es/instance/trim.js ***!
  \*******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\nvar method = __webpack_require__(/*! ../string/virtual/trim */ \"./node_modules/core-js-pure/es/string/virtual/trim.js\");\n\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n  var own = it.trim;\n  return typeof it == 'string' || it === StringPrototype\n    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.trim) ? method : own;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/instance/trim.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/json/stringify.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js-pure/es/json/stringify.js ***!
  \********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.json.stringify */ \"./node_modules/core-js-pure/modules/es.json.stringify.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\nvar apply = __webpack_require__(/*! ../../internals/function-apply */ \"./node_modules/core-js-pure/internals/function-apply.js\");\n\n// eslint-disable-next-line es/no-json -- safe\nif (!path.JSON) path.JSON = { stringify: JSON.stringify };\n\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nmodule.exports = function stringify(it, replacer, space) {\n  return apply(path.JSON.stringify, null, arguments);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/json/stringify.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/object/assign.js":
/*!*******************************************************!*\
  !*** ./node_modules/core-js-pure/es/object/assign.js ***!
  \*******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.object.assign */ \"./node_modules/core-js-pure/modules/es.object.assign.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nmodule.exports = path.Object.assign;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/object/assign.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/object/create.js":
/*!*******************************************************!*\
  !*** ./node_modules/core-js-pure/es/object/create.js ***!
  \*******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.object.create */ \"./node_modules/core-js-pure/modules/es.object.create.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nvar Object = path.Object;\n\nmodule.exports = function create(P, D) {\n  return Object.create(P, D);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/object/create.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/object/define-properties.js":
/*!******************************************************************!*\
  !*** ./node_modules/core-js-pure/es/object/define-properties.js ***!
  \******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.object.define-properties */ \"./node_modules/core-js-pure/modules/es.object.define-properties.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nvar Object = path.Object;\n\nvar defineProperties = module.exports = function defineProperties(T, D) {\n  return Object.defineProperties(T, D);\n};\n\nif (Object.defineProperties.sham) defineProperties.sham = true;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/object/define-properties.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/object/define-property.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/es/object/define-property.js ***!
  \****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.object.define-property */ \"./node_modules/core-js-pure/modules/es.object.define-property.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n  return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/object/define-property.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/object/entries.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js-pure/es/object/entries.js ***!
  \********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.object.entries */ \"./node_modules/core-js-pure/modules/es.object.entries.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nmodule.exports = path.Object.entries;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/object/entries.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/object/get-own-property-descriptor.js":
/*!****************************************************************************!*\
  !*** ./node_modules/core-js-pure/es/object/get-own-property-descriptor.js ***!
  \****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.object.get-own-property-descriptor */ \"./node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nvar Object = path.Object;\n\nvar getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) {\n  return Object.getOwnPropertyDescriptor(it, key);\n};\n\nif (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/object/get-own-property-descriptor.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/object/get-own-property-descriptors.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/core-js-pure/es/object/get-own-property-descriptors.js ***!
  \*****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.object.get-own-property-descriptors */ \"./node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nmodule.exports = path.Object.getOwnPropertyDescriptors;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/object/get-own-property-descriptors.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/object/get-own-property-symbols.js":
/*!*************************************************************************!*\
  !*** ./node_modules/core-js-pure/es/object/get-own-property-symbols.js ***!
  \*************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.symbol */ \"./node_modules/core-js-pure/modules/es.symbol.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nmodule.exports = path.Object.getOwnPropertySymbols;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/object/get-own-property-symbols.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/object/get-prototype-of.js":
/*!*****************************************************************!*\
  !*** ./node_modules/core-js-pure/es/object/get-prototype-of.js ***!
  \*****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.object.get-prototype-of */ \"./node_modules/core-js-pure/modules/es.object.get-prototype-of.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nmodule.exports = path.Object.getPrototypeOf;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/object/get-prototype-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/object/keys.js":
/*!*****************************************************!*\
  !*** ./node_modules/core-js-pure/es/object/keys.js ***!
  \*****************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.object.keys */ \"./node_modules/core-js-pure/modules/es.object.keys.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nmodule.exports = path.Object.keys;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/object/keys.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/object/set-prototype-of.js":
/*!*****************************************************************!*\
  !*** ./node_modules/core-js-pure/es/object/set-prototype-of.js ***!
  \*****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.object.set-prototype-of */ \"./node_modules/core-js-pure/modules/es.object.set-prototype-of.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nmodule.exports = path.Object.setPrototypeOf;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/object/set-prototype-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/object/values.js":
/*!*******************************************************!*\
  !*** ./node_modules/core-js-pure/es/object/values.js ***!
  \*******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.object.values */ \"./node_modules/core-js-pure/modules/es.object.values.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nmodule.exports = path.Object.values;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/object/values.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/parse-int.js":
/*!***************************************************!*\
  !*** ./node_modules/core-js-pure/es/parse-int.js ***!
  \***************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../modules/es.parse-int */ \"./node_modules/core-js-pure/modules/es.parse-int.js\");\nvar path = __webpack_require__(/*! ../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nmodule.exports = path.parseInt;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/parse-int.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/reflect/construct.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/es/reflect/construct.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.reflect.construct */ \"./node_modules/core-js-pure/modules/es.reflect.construct.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nmodule.exports = path.Reflect.construct;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/reflect/construct.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/string/virtual/starts-with.js":
/*!********************************************************************!*\
  !*** ./node_modules/core-js-pure/es/string/virtual/starts-with.js ***!
  \********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../../modules/es.string.starts-with */ \"./node_modules/core-js-pure/modules/es.string.starts-with.js\");\nvar entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ \"./node_modules/core-js-pure/internals/entry-virtual.js\");\n\nmodule.exports = entryVirtual('String').startsWith;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/string/virtual/starts-with.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/string/virtual/trim.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/es/string/virtual/trim.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../../modules/es.string.trim */ \"./node_modules/core-js-pure/modules/es.string.trim.js\");\nvar entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ \"./node_modules/core-js-pure/internals/entry-virtual.js\");\n\nmodule.exports = entryVirtual('String').trim;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/string/virtual/trim.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/symbol/index.js":
/*!******************************************************!*\
  !*** ./node_modules/core-js-pure/es/symbol/index.js ***!
  \******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.array.concat */ \"./node_modules/core-js-pure/modules/es.array.concat.js\");\n__webpack_require__(/*! ../../modules/es.object.to-string */ \"./node_modules/core-js-pure/modules/es.object.to-string.js\");\n__webpack_require__(/*! ../../modules/es.symbol */ \"./node_modules/core-js-pure/modules/es.symbol.js\");\n__webpack_require__(/*! ../../modules/es.symbol.async-iterator */ \"./node_modules/core-js-pure/modules/es.symbol.async-iterator.js\");\n__webpack_require__(/*! ../../modules/es.symbol.description */ \"./node_modules/core-js-pure/modules/es.symbol.description.js\");\n__webpack_require__(/*! ../../modules/es.symbol.has-instance */ \"./node_modules/core-js-pure/modules/es.symbol.has-instance.js\");\n__webpack_require__(/*! ../../modules/es.symbol.is-concat-spreadable */ \"./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js\");\n__webpack_require__(/*! ../../modules/es.symbol.iterator */ \"./node_modules/core-js-pure/modules/es.symbol.iterator.js\");\n__webpack_require__(/*! ../../modules/es.symbol.match */ \"./node_modules/core-js-pure/modules/es.symbol.match.js\");\n__webpack_require__(/*! ../../modules/es.symbol.match-all */ \"./node_modules/core-js-pure/modules/es.symbol.match-all.js\");\n__webpack_require__(/*! ../../modules/es.symbol.replace */ \"./node_modules/core-js-pure/modules/es.symbol.replace.js\");\n__webpack_require__(/*! ../../modules/es.symbol.search */ \"./node_modules/core-js-pure/modules/es.symbol.search.js\");\n__webpack_require__(/*! ../../modules/es.symbol.species */ \"./node_modules/core-js-pure/modules/es.symbol.species.js\");\n__webpack_require__(/*! ../../modules/es.symbol.split */ \"./node_modules/core-js-pure/modules/es.symbol.split.js\");\n__webpack_require__(/*! ../../modules/es.symbol.to-primitive */ \"./node_modules/core-js-pure/modules/es.symbol.to-primitive.js\");\n__webpack_require__(/*! ../../modules/es.symbol.to-string-tag */ \"./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js\");\n__webpack_require__(/*! ../../modules/es.symbol.unscopables */ \"./node_modules/core-js-pure/modules/es.symbol.unscopables.js\");\n__webpack_require__(/*! ../../modules/es.json.to-string-tag */ \"./node_modules/core-js-pure/modules/es.json.to-string-tag.js\");\n__webpack_require__(/*! ../../modules/es.math.to-string-tag */ \"./node_modules/core-js-pure/modules/es.math.to-string-tag.js\");\n__webpack_require__(/*! ../../modules/es.reflect.to-string-tag */ \"./node_modules/core-js-pure/modules/es.reflect.to-string-tag.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nmodule.exports = path.Symbol;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/symbol/index.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/symbol/iterator.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js-pure/es/symbol/iterator.js ***!
  \*********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.array.iterator */ \"./node_modules/core-js-pure/modules/es.array.iterator.js\");\n__webpack_require__(/*! ../../modules/es.object.to-string */ \"./node_modules/core-js-pure/modules/es.object.to-string.js\");\n__webpack_require__(/*! ../../modules/es.string.iterator */ \"./node_modules/core-js-pure/modules/es.string.iterator.js\");\n__webpack_require__(/*! ../../modules/es.symbol.iterator */ \"./node_modules/core-js-pure/modules/es.symbol.iterator.js\");\nvar WrappedWellKnownSymbolModule = __webpack_require__(/*! ../../internals/well-known-symbol-wrapped */ \"./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js\");\n\nmodule.exports = WrappedWellKnownSymbolModule.f('iterator');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/symbol/iterator.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/es/symbol/to-primitive.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/es/symbol/to-primitive.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/es.date.to-primitive */ \"./node_modules/core-js-pure/modules/es.date.to-primitive.js\");\n__webpack_require__(/*! ../../modules/es.symbol.to-primitive */ \"./node_modules/core-js-pure/modules/es.symbol.to-primitive.js\");\nvar WrappedWellKnownSymbolModule = __webpack_require__(/*! ../../internals/well-known-symbol-wrapped */ \"./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js\");\n\nmodule.exports = WrappedWellKnownSymbolModule.f('toPrimitive');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/es/symbol/to-primitive.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/features/array/from.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js-pure/features/array/from.js ***!
  \**********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ../../full/array/from */ \"./node_modules/core-js-pure/full/array/from.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/features/array/from.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/features/array/is-array.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/features/array/is-array.js ***!
  \**************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ../../full/array/is-array */ \"./node_modules/core-js-pure/full/array/is-array.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/features/array/is-array.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/features/get-iterator-method.js":
/*!*******************************************************************!*\
  !*** ./node_modules/core-js-pure/features/get-iterator-method.js ***!
  \*******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ../full/get-iterator-method */ \"./node_modules/core-js-pure/full/get-iterator-method.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/features/get-iterator-method.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/features/instance/bind.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/features/instance/bind.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ../../full/instance/bind */ \"./node_modules/core-js-pure/full/instance/bind.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/features/instance/bind.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/features/instance/index-of.js":
/*!*****************************************************************!*\
  !*** ./node_modules/core-js-pure/features/instance/index-of.js ***!
  \*****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ../../full/instance/index-of */ \"./node_modules/core-js-pure/full/instance/index-of.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/features/instance/index-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/features/instance/slice.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/features/instance/slice.js ***!
  \**************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ../../full/instance/slice */ \"./node_modules/core-js-pure/full/instance/slice.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/features/instance/slice.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/features/object/assign.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/features/object/assign.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ../../full/object/assign */ \"./node_modules/core-js-pure/full/object/assign.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/features/object/assign.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/features/object/create.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/features/object/create.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ../../full/object/create */ \"./node_modules/core-js-pure/full/object/create.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/features/object/create.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/features/object/define-property.js":
/*!**********************************************************************!*\
  !*** ./node_modules/core-js-pure/features/object/define-property.js ***!
  \**********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ../../full/object/define-property */ \"./node_modules/core-js-pure/full/object/define-property.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/features/object/define-property.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/features/object/get-own-property-symbols.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/core-js-pure/features/object/get-own-property-symbols.js ***!
  \*******************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ../../full/object/get-own-property-symbols */ \"./node_modules/core-js-pure/full/object/get-own-property-symbols.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/features/object/get-own-property-symbols.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/features/object/get-prototype-of.js":
/*!***********************************************************************!*\
  !*** ./node_modules/core-js-pure/features/object/get-prototype-of.js ***!
  \***********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ../../full/object/get-prototype-of */ \"./node_modules/core-js-pure/full/object/get-prototype-of.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/features/object/get-prototype-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/features/object/keys.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/features/object/keys.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ../../full/object/keys */ \"./node_modules/core-js-pure/full/object/keys.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/features/object/keys.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/features/object/set-prototype-of.js":
/*!***********************************************************************!*\
  !*** ./node_modules/core-js-pure/features/object/set-prototype-of.js ***!
  \***********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ../../full/object/set-prototype-of */ \"./node_modules/core-js-pure/full/object/set-prototype-of.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/features/object/set-prototype-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/features/symbol/index.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/features/symbol/index.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ../../full/symbol */ \"./node_modules/core-js-pure/full/symbol/index.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/features/symbol/index.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/features/symbol/iterator.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/features/symbol/iterator.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ../../full/symbol/iterator */ \"./node_modules/core-js-pure/full/symbol/iterator.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/features/symbol/iterator.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/features/symbol/to-primitive.js":
/*!*******************************************************************!*\
  !*** ./node_modules/core-js-pure/features/symbol/to-primitive.js ***!
  \*******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ../../full/symbol/to-primitive */ \"./node_modules/core-js-pure/full/symbol/to-primitive.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/features/symbol/to-primitive.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/full/array/from.js":
/*!******************************************************!*\
  !*** ./node_modules/core-js-pure/full/array/from.js ***!
  \******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../actual/array/from */ \"./node_modules/core-js-pure/actual/array/from.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/full/array/from.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/full/array/is-array.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js-pure/full/array/is-array.js ***!
  \**********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../actual/array/is-array */ \"./node_modules/core-js-pure/actual/array/is-array.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/full/array/is-array.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/full/get-iterator-method.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/full/get-iterator-method.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../actual/get-iterator-method */ \"./node_modules/core-js-pure/actual/get-iterator-method.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/full/get-iterator-method.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/full/instance/bind.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js-pure/full/instance/bind.js ***!
  \*********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../actual/instance/bind */ \"./node_modules/core-js-pure/actual/instance/bind.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/full/instance/bind.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/full/instance/index-of.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/full/instance/index-of.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../actual/instance/index-of */ \"./node_modules/core-js-pure/actual/instance/index-of.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/full/instance/index-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/full/instance/slice.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js-pure/full/instance/slice.js ***!
  \**********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../actual/instance/slice */ \"./node_modules/core-js-pure/actual/instance/slice.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/full/instance/slice.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/full/object/assign.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js-pure/full/object/assign.js ***!
  \*********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../actual/object/assign */ \"./node_modules/core-js-pure/actual/object/assign.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/full/object/assign.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/full/object/create.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js-pure/full/object/create.js ***!
  \*********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../actual/object/create */ \"./node_modules/core-js-pure/actual/object/create.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/full/object/create.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/full/object/define-property.js":
/*!******************************************************************!*\
  !*** ./node_modules/core-js-pure/full/object/define-property.js ***!
  \******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../actual/object/define-property */ \"./node_modules/core-js-pure/actual/object/define-property.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/full/object/define-property.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/full/object/get-own-property-symbols.js":
/*!***************************************************************************!*\
  !*** ./node_modules/core-js-pure/full/object/get-own-property-symbols.js ***!
  \***************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../actual/object/get-own-property-symbols */ \"./node_modules/core-js-pure/actual/object/get-own-property-symbols.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/full/object/get-own-property-symbols.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/full/object/get-prototype-of.js":
/*!*******************************************************************!*\
  !*** ./node_modules/core-js-pure/full/object/get-prototype-of.js ***!
  \*******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../actual/object/get-prototype-of */ \"./node_modules/core-js-pure/actual/object/get-prototype-of.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/full/object/get-prototype-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/full/object/keys.js":
/*!*******************************************************!*\
  !*** ./node_modules/core-js-pure/full/object/keys.js ***!
  \*******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../actual/object/keys */ \"./node_modules/core-js-pure/actual/object/keys.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/full/object/keys.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/full/object/set-prototype-of.js":
/*!*******************************************************************!*\
  !*** ./node_modules/core-js-pure/full/object/set-prototype-of.js ***!
  \*******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../actual/object/set-prototype-of */ \"./node_modules/core-js-pure/actual/object/set-prototype-of.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/full/object/set-prototype-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/full/symbol/index.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js-pure/full/symbol/index.js ***!
  \********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../actual/symbol */ \"./node_modules/core-js-pure/actual/symbol/index.js\");\n__webpack_require__(/*! ../../modules/esnext.symbol.async-dispose */ \"./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js\");\n__webpack_require__(/*! ../../modules/esnext.symbol.matcher */ \"./node_modules/core-js-pure/modules/esnext.symbol.matcher.js\");\n__webpack_require__(/*! ../../modules/esnext.symbol.metadata-key */ \"./node_modules/core-js-pure/modules/esnext.symbol.metadata-key.js\");\n__webpack_require__(/*! ../../modules/esnext.symbol.observable */ \"./node_modules/core-js-pure/modules/esnext.symbol.observable.js\");\n// TODO: Remove from `core-js@4`\n__webpack_require__(/*! ../../modules/esnext.symbol.metadata */ \"./node_modules/core-js-pure/modules/esnext.symbol.metadata.js\");\n__webpack_require__(/*! ../../modules/esnext.symbol.pattern-match */ \"./node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js\");\n__webpack_require__(/*! ../../modules/esnext.symbol.replace-all */ \"./node_modules/core-js-pure/modules/esnext.symbol.replace-all.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/full/symbol/index.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/full/symbol/iterator.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/full/symbol/iterator.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../actual/symbol/iterator */ \"./node_modules/core-js-pure/actual/symbol/iterator.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/full/symbol/iterator.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/full/symbol/to-primitive.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/full/symbol/to-primitive.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../actual/symbol/to-primitive */ \"./node_modules/core-js-pure/actual/symbol/to-primitive.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/full/symbol/to-primitive.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/a-callable.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/a-callable.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js-pure/internals/try-to-string.js\");\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw $TypeError(tryToString(argument) + ' is not a function');\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/a-callable.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/a-constructor.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/a-constructor.js ***!
  \**************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \"./node_modules/core-js-pure/internals/is-constructor.js\");\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js-pure/internals/try-to-string.js\");\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n  if (isConstructor(argument)) return argument;\n  throw $TypeError(tryToString(argument) + ' is not a constructor');\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/a-constructor.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/a-possible-prototype.js":
/*!*********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/a-possible-prototype.js ***!
  \*********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n  if (typeof argument == 'object' || isCallable(argument)) return argument;\n  throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/a-possible-prototype.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/add-to-unscopables.js":
/*!*******************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/add-to-unscopables.js ***!
  \*******************************************************************/
/***/ (function(module) {

eval("module.exports = function () { /* empty */ };\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/add-to-unscopables.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/an-instance.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/an-instance.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw $TypeError('Incorrect invocation');\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/an-instance.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/an-object.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/an-object.js ***!
  \**********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw $TypeError($String(argument) + ' is not an object');\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/an-object.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/array-for-each.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/array-for-each.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar $forEach = (__webpack_require__(/*! ../internals/array-iteration */ \"./node_modules/core-js-pure/internals/array-iteration.js\").forEach);\nvar arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ \"./node_modules/core-js-pure/internals/array-method-is-strict.js\");\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/array-for-each.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/array-from.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/array-from.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js-pure/internals/function-bind-context.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js-pure/internals/function-call.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js-pure/internals/to-object.js\");\nvar callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ \"./node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js\");\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \"./node_modules/core-js-pure/internals/is-array-iterator-method.js\");\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \"./node_modules/core-js-pure/internals/is-constructor.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js-pure/internals/length-of-array-like.js\");\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \"./node_modules/core-js-pure/internals/create-property.js\");\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \"./node_modules/core-js-pure/internals/get-iterator.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js-pure/internals/get-iterator-method.js\");\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var IS_CONSTRUCTOR = isConstructor(this);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    result = IS_CONSTRUCTOR ? new this() : [];\n    for (;!(step = call(next, iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = lengthOfArrayLike(O);\n    result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/array-from.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/array-includes.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/array-includes.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js-pure/internals/to-indexed-object.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js-pure/internals/to-absolute-index.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js-pure/internals/length-of-array-like.js\");\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/array-includes.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/array-iteration.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/array-iteration.js ***!
  \****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js-pure/internals/function-bind-context.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js-pure/internals/indexed-object.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js-pure/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js-pure/internals/length-of-array-like.js\");\nvar arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ \"./node_modules/core-js-pure/internals/array-species-create.js\");\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var IS_FILTER_REJECT = TYPE == 7;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that);\n    var length = lengthOfArrayLike(self);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push(target, value);      // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push(target, value);      // filterReject\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterReject` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterReject: createMethod(7)\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/array-iteration.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/array-method-has-species-support.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/array-method-has-species-support.js ***!
  \*********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\nvar V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ \"./node_modules/core-js-pure/internals/engine-v8-version.js\");\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/array-method-has-species-support.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/array-method-is-strict.js":
/*!***********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/array-method-is-strict.js ***!
  \***********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call -- required for testing\n    method.call(null, argument || function () { return 1; }, 1);\n  });\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/array-method-is-strict.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/array-reduce.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/array-reduce.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js-pure/internals/a-callable.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js-pure/internals/to-object.js\");\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js-pure/internals/indexed-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js-pure/internals/length-of-array-like.js\");\n\nvar $TypeError = TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    aCallable(callbackfn);\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(O);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw $TypeError('Reduce of empty array with no initial value');\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/array-reduce.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/array-set-length.js":
/*!*****************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/array-set-length.js ***!
  \*****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \"./node_modules/core-js-pure/internals/is-array.js\");\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n  // makes no sense without proper strict mode support\n  if (this !== undefined) return true;\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n    throw $TypeError('Cannot set read only .length');\n  } return O.length = length;\n} : function (O, length) {\n  return O.length = length;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/array-set-length.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/array-slice-simple.js":
/*!*******************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/array-slice-simple.js ***!
  \*******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js-pure/internals/to-absolute-index.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js-pure/internals/length-of-array-like.js\");\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \"./node_modules/core-js-pure/internals/create-property.js\");\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n  var length = lengthOfArrayLike(O);\n  var k = toAbsoluteIndex(start, length);\n  var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n  var result = $Array(max(fin - k, 0));\n  for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n  result.length = n;\n  return result;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/array-slice-simple.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/array-slice.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/array-slice.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\n\nmodule.exports = uncurryThis([].slice);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/array-slice.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/array-sort.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/array-sort.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \"./node_modules/core-js-pure/internals/array-slice-simple.js\");\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n  var length = array.length;\n  var middle = floor(length / 2);\n  return length < 8 ? insertionSort(array, comparefn) : merge(\n    array,\n    mergeSort(arraySlice(array, 0, middle), comparefn),\n    mergeSort(arraySlice(array, middle), comparefn),\n    comparefn\n  );\n};\n\nvar insertionSort = function (array, comparefn) {\n  var length = array.length;\n  var i = 1;\n  var element, j;\n\n  while (i < length) {\n    j = i;\n    element = array[i];\n    while (j && comparefn(array[j - 1], element) > 0) {\n      array[j] = array[--j];\n    }\n    if (j !== i++) array[j] = element;\n  } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n  var llength = left.length;\n  var rlength = right.length;\n  var lindex = 0;\n  var rindex = 0;\n\n  while (lindex < llength || rindex < rlength) {\n    array[lindex + rindex] = (lindex < llength && rindex < rlength)\n      ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n      : lindex < llength ? left[lindex++] : right[rindex++];\n  } return array;\n};\n\nmodule.exports = mergeSort;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/array-sort.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/array-species-constructor.js":
/*!**************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/array-species-constructor.js ***!
  \**************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isArray = __webpack_require__(/*! ../internals/is-array */ \"./node_modules/core-js-pure/internals/is-array.js\");\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \"./node_modules/core-js-pure/internals/is-constructor.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? $Array : C;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/array-species-constructor.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/array-species-create.js":
/*!*********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/array-species-create.js ***!
  \*********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var arraySpeciesConstructor = __webpack_require__(/*! ../internals/array-species-constructor */ \"./node_modules/core-js-pure/internals/array-species-constructor.js\");\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/array-species-create.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js ***!
  \*********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\nvar iteratorClose = __webpack_require__(/*! ../internals/iterator-close */ \"./node_modules/core-js-pure/internals/iterator-close.js\");\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator, 'throw', error);\n  }\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/check-correctness-of-iteration.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/check-correctness-of-iteration.js ***!
  \*******************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/check-correctness-of-iteration.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/classof-raw.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/classof-raw.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/classof-raw.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/classof.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/classof.js ***!
  \********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ \"./node_modules/core-js-pure/internals/to-string-tag-support.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\nvar classofRaw = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js-pure/internals/classof-raw.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/classof.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/correct-is-regexp-logic.js":
/*!************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/correct-is-regexp-logic.js ***!
  \************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (error1) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (error2) { /* empty */ }\n  } return false;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/correct-is-regexp-logic.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/correct-prototype-getter.js":
/*!*************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/correct-prototype-getter.js ***!
  \*************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/correct-prototype-getter.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/create-iter-result-object.js":
/*!**************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/create-iter-result-object.js ***!
  \**************************************************************************/
/***/ (function(module) {

eval("// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n  return { value: value, done: done };\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/create-iter-result-object.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/create-non-enumerable-property.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/create-non-enumerable-property.js ***!
  \*******************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js-pure/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js-pure/internals/create-property-descriptor.js\");\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/create-non-enumerable-property.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/create-property-descriptor.js":
/*!***************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/create-property-descriptor.js ***!
  \***************************************************************************/
/***/ (function(module) {

eval("module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/create-property-descriptor.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/create-property.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/create-property.js ***!
  \****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \"./node_modules/core-js-pure/internals/to-property-key.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js-pure/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js-pure/internals/create-property-descriptor.js\");\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPropertyKey(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/create-property.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/define-built-in-accessor.js":
/*!*************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/define-built-in-accessor.js ***!
  \*************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js-pure/internals/object-define-property.js\");\n\nmodule.exports = function (target, name, descriptor) {\n  return defineProperty.f(target, name, descriptor);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/define-built-in-accessor.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/define-built-in.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/define-built-in.js ***!
  \****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js-pure/internals/create-non-enumerable-property.js\");\n\nmodule.exports = function (target, key, value, options) {\n  if (options && options.enumerable) target[key] = value;\n  else createNonEnumerableProperty(target, key, value);\n  return target;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/define-built-in.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/define-built-ins.js":
/*!*****************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/define-built-ins.js ***!
  \*****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js-pure/internals/define-built-in.js\");\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) {\n    if (options && options.unsafe && target[key]) target[key] = src[key];\n    else defineBuiltIn(target, key, src[key], options);\n  } return target;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/define-built-ins.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/define-global-property.js":
/*!***********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/define-global-property.js ***!
  \***********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/define-global-property.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/delete-property-or-throw.js":
/*!*************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/delete-property-or-throw.js ***!
  \*************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js-pure/internals/try-to-string.js\");\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n  if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/delete-property-or-throw.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/descriptors.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/descriptors.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/descriptors.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/document-all.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/document-all.js ***!
  \*************************************************************/
/***/ (function(module) {

eval("var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n  all: documentAll,\n  IS_HTMLDDA: IS_HTMLDDA\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/document-all.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/document-create-element.js":
/*!************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/document-create-element.js ***!
  \************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/document-create-element.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js ***!
  \*****************************************************************************/
/***/ (function(module) {

eval("var $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n  return it;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/dom-iterables.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/dom-iterables.js ***!
  \**************************************************************/
/***/ (function(module) {

eval("// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/dom-iterables.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/engine-ff-version.js":
/*!******************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/engine-ff-version.js ***!
  \******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js-pure/internals/engine-user-agent.js\");\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/engine-ff-version.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/engine-is-bun.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/engine-is-bun.js ***!
  \**************************************************************/
/***/ (function(module) {

eval("/* global Bun -- Deno case */\nmodule.exports = typeof Bun == 'function' && Bun && typeof Bun.version == 'string';\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/engine-is-bun.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/engine-is-ie-or-edge.js":
/*!*********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/engine-is-ie-or-edge.js ***!
  \*********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var UA = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js-pure/internals/engine-user-agent.js\");\n\nmodule.exports = /MSIE|Trident/.test(UA);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/engine-is-ie-or-edge.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/engine-is-node.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/engine-is-node.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("/* provided dependency */ var process = __webpack_require__(/*! process/browser */ \"./node_modules/process/browser.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js-pure/internals/classof-raw.js\");\n\nmodule.exports = typeof process != 'undefined' && classof(process) == 'process';\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/engine-is-node.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/engine-user-agent.js":
/*!******************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/engine-user-agent.js ***!
  \******************************************************************/
/***/ (function(module) {

eval("module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/engine-user-agent.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/engine-v8-version.js":
/*!******************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/engine-v8-version.js ***!
  \******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js-pure/internals/engine-user-agent.js\");\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/engine-v8-version.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/engine-webkit-version.js":
/*!**********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/engine-webkit-version.js ***!
  \**********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js-pure/internals/engine-user-agent.js\");\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/engine-webkit-version.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/entry-virtual.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/entry-virtual.js ***!
  \**************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var path = __webpack_require__(/*! ../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nmodule.exports = function (CONSTRUCTOR) {\n  return path[CONSTRUCTOR + 'Prototype'];\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/entry-virtual.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/enum-bug-keys.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/enum-bug-keys.js ***!
  \**************************************************************/
/***/ (function(module) {

eval("// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/enum-bug-keys.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/export.js":
/*!*******************************************************!*\
  !*** ./node_modules/core-js-pure/internals/export.js ***!
  \*******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \"./node_modules/core-js-pure/internals/function-apply.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \"./node_modules/core-js-pure/internals/function-uncurry-this-clause.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js\").f);\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \"./node_modules/core-js-pure/internals/is-forced.js\");\nvar path = __webpack_require__(/*! ../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js-pure/internals/function-bind-context.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js-pure/internals/create-non-enumerable-property.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js-pure/internals/has-own-property.js\");\n\nvar wrapConstructor = function (NativeConstructor) {\n  var Wrapper = function (a, b, c) {\n    if (this instanceof Wrapper) {\n      switch (arguments.length) {\n        case 0: return new NativeConstructor();\n        case 1: return new NativeConstructor(a);\n        case 2: return new NativeConstructor(a, b);\n      } return new NativeConstructor(a, b, c);\n    } return apply(NativeConstructor, this, arguments);\n  };\n  Wrapper.prototype = NativeConstructor.prototype;\n  return Wrapper;\n};\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var PROTO = options.proto;\n\n  var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n  var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];\n  var targetPrototype = target.prototype;\n\n  var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n  var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n  for (key in source) {\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contains in native\n    USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key);\n\n    targetProperty = target[key];\n\n    if (USE_NATIVE) if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(nativeSource, key);\n      nativeProperty = descriptor && descriptor.value;\n    } else nativeProperty = nativeSource[key];\n\n    // export native or implementation\n    sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n    if (USE_NATIVE && typeof targetProperty == typeof sourceProperty) continue;\n\n    // bind methods to global for calling from export context\n    if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n    // wrap global constructors for prevent changs in this version\n    else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n    // make static versions for prototype methods\n    else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty);\n    // default case\n    else resultProperty = sourceProperty;\n\n    // add a flag to not completely full polyfills\n    if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(resultProperty, 'sham', true);\n    }\n\n    createNonEnumerableProperty(target, key, resultProperty);\n\n    if (PROTO) {\n      VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n      if (!hasOwn(path, VIRTUAL_PROTOTYPE)) {\n        createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n      }\n      // export virtual prototype methods\n      createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);\n      // export real prototype methods\n      if (options.real && targetPrototype && (FORCED || !targetPrototype[key])) {\n        createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n      }\n    }\n  }\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/export.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/fails.js":
/*!******************************************************!*\
  !*** ./node_modules/core-js-pure/internals/fails.js ***!
  \******************************************************/
/***/ (function(module) {

eval("module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/fails.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/function-apply.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/function-apply.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \"./node_modules/core-js-pure/internals/function-bind-native.js\");\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/function-apply.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/function-bind-context.js":
/*!**********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/function-bind-context.js ***!
  \**********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \"./node_modules/core-js-pure/internals/function-uncurry-this-clause.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js-pure/internals/a-callable.js\");\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \"./node_modules/core-js-pure/internals/function-bind-native.js\");\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/function-bind-context.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/function-bind-native.js":
/*!*********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/function-bind-native.js ***!
  \*********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/function-bind-native.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/function-bind.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/function-bind.js ***!
  \**************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js-pure/internals/a-callable.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js-pure/internals/has-own-property.js\");\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice */ \"./node_modules/core-js-pure/internals/array-slice.js\");\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \"./node_modules/core-js-pure/internals/function-bind-native.js\");\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n  if (!hasOwn(factories, argsLength)) {\n    for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n    factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n  } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n  var F = aCallable(this);\n  var Prototype = F.prototype;\n  var partArgs = arraySlice(arguments, 1);\n  var boundFunction = function bound(/* args... */) {\n    var args = concat(partArgs, arraySlice(arguments));\n    return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n  };\n  if (isObject(Prototype)) boundFunction.prototype = Prototype;\n  return boundFunction;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/function-bind.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/function-call.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/function-call.js ***!
  \**************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \"./node_modules/core-js-pure/internals/function-bind-native.js\");\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/function-call.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/function-name.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/function-name.js ***!
  \**************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js-pure/internals/has-own-property.js\");\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/function-name.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/function-uncurry-this-clause.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/function-uncurry-this-clause.js ***!
  \*****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js-pure/internals/classof-raw.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\n\nmodule.exports = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/function-uncurry-this-clause.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/function-uncurry-this.js":
/*!**********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/function-uncurry-this.js ***!
  \**********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \"./node_modules/core-js-pure/internals/function-bind-native.js\");\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/function-uncurry-this.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/get-built-in.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/get-built-in.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var path = __webpack_require__(/*! ../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\n\nvar aFunction = function (variable) {\n  return isCallable(variable) ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/get-built-in.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/get-iterator-method.js":
/*!********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/get-iterator-method.js ***!
  \********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js-pure/internals/classof.js\");\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \"./node_modules/core-js-pure/internals/get-method.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js-pure/internals/is-null-or-undefined.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js-pure/internals/iterators.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/get-iterator-method.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/get-iterator.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/get-iterator.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js-pure/internals/function-call.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js-pure/internals/a-callable.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js-pure/internals/try-to-string.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js-pure/internals/get-iterator-method.js\");\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n  throw $TypeError(tryToString(argument) + ' is not iterable');\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/get-iterator.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/get-method.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/get-method.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js-pure/internals/a-callable.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js-pure/internals/is-null-or-undefined.js\");\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/get-method.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/global.js":
/*!*******************************************************!*\
  !*** ./node_modules/core-js-pure/internals/global.js ***!
  \*******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/global.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/has-own-property.js":
/*!*****************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/has-own-property.js ***!
  \*****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js-pure/internals/to-object.js\");\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/has-own-property.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/hidden-keys.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/hidden-keys.js ***!
  \************************************************************/
/***/ (function(module) {

eval("module.exports = {};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/hidden-keys.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/html.js":
/*!*****************************************************!*\
  !*** ./node_modules/core-js-pure/internals/html.js ***!
  \*****************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js-pure/internals/get-built-in.js\");\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/html.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/ie8-dom-define.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/ie8-dom-define.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar createElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js-pure/internals/document-create-element.js\");\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/ie8-dom-define.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/indexed-object.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/indexed-object.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js-pure/internals/classof-raw.js\");\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/indexed-object.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/inspect-source.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/inspect-source.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\nvar store = __webpack_require__(/*! ../internals/shared-store */ \"./node_modules/core-js-pure/internals/shared-store.js\");\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/inspect-source.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/internal-state.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/internal-state.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/weak-map-basic-detection */ \"./node_modules/core-js-pure/internals/weak-map-basic-detection.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js-pure/internals/create-non-enumerable-property.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js-pure/internals/has-own-property.js\");\nvar shared = __webpack_require__(/*! ../internals/shared-store */ \"./node_modules/core-js-pure/internals/shared-store.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js-pure/internals/shared-key.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js-pure/internals/hidden-keys.js\");\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/internal-state.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/is-array-iterator-method.js":
/*!*************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/is-array-iterator-method.js ***!
  \*************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js-pure/internals/iterators.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/is-array-iterator-method.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/is-array.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/is-array.js ***!
  \*********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js-pure/internals/classof-raw.js\");\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) == 'Array';\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/is-array.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/is-callable.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/is-callable.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var $documentAll = __webpack_require__(/*! ../internals/document-all */ \"./node_modules/core-js-pure/internals/document-all.js\");\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/is-callable.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/is-constructor.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/is-constructor.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js-pure/internals/classof.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js-pure/internals/get-built-in.js\");\nvar inspectSource = __webpack_require__(/*! ../internals/inspect-source */ \"./node_modules/core-js-pure/internals/inspect-source.js\");\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, empty, argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n  }\n  try {\n    // we can't check .prototype since constructors produced by .bind haven't it\n    // `Function#toString` throws on some built-it function in some legacy engines\n    // (for example, `DOMQuad` and similar in FF41-)\n    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n  } catch (error) {\n    return true;\n  }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/is-constructor.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/is-forced.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/is-forced.js ***!
  \**********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/is-forced.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/is-null-or-undefined.js":
/*!*********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/is-null-or-undefined.js ***!
  \*********************************************************************/
/***/ (function(module) {

eval("// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/is-null-or-undefined.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/is-object.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/is-object.js ***!
  \**********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\nvar $documentAll = __webpack_require__(/*! ../internals/document-all */ \"./node_modules/core-js-pure/internals/document-all.js\");\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/is-object.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/is-pure.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/is-pure.js ***!
  \********************************************************/
/***/ (function(module) {

eval("module.exports = true;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/is-pure.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/is-regexp.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/is-regexp.js ***!
  \**********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js-pure/internals/classof-raw.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/is-regexp.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/is-symbol.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/is-symbol.js ***!
  \**********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js-pure/internals/get-built-in.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\nvar USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ \"./node_modules/core-js-pure/internals/use-symbol-as-uid.js\");\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/is-symbol.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/iterator-close.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/iterator-close.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js-pure/internals/function-call.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \"./node_modules/core-js-pure/internals/get-method.js\");\n\nmodule.exports = function (iterator, kind, value) {\n  var innerResult, innerError;\n  anObject(iterator);\n  try {\n    innerResult = getMethod(iterator, 'return');\n    if (!innerResult) {\n      if (kind === 'throw') throw value;\n      return value;\n    }\n    innerResult = call(innerResult, iterator);\n  } catch (error) {\n    innerError = true;\n    innerResult = error;\n  }\n  if (kind === 'throw') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/iterator-close.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/iterator-create-constructor.js":
/*!****************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/iterator-create-constructor.js ***!
  \****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar IteratorPrototype = (__webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js-pure/internals/iterators-core.js\").IteratorPrototype);\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js-pure/internals/object-create.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js-pure/internals/create-property-descriptor.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js-pure/internals/set-to-string-tag.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js-pure/internals/iterators.js\");\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/iterator-create-constructor.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/iterator-define.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/iterator-define.js ***!
  \****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js-pure/internals/function-call.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js-pure/internals/is-pure.js\");\nvar FunctionName = __webpack_require__(/*! ../internals/function-name */ \"./node_modules/core-js-pure/internals/function-name.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\nvar createIteratorConstructor = __webpack_require__(/*! ../internals/iterator-create-constructor */ \"./node_modules/core-js-pure/internals/iterator-create-constructor.js\");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js-pure/internals/object-get-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js-pure/internals/object-set-prototype-of.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js-pure/internals/set-to-string-tag.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js-pure/internals/create-non-enumerable-property.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js-pure/internals/define-built-in.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js-pure/internals/iterators.js\");\nvar IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js-pure/internals/iterators-core.js\");\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n          defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n      createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n    } else {\n      INCORRECT_VALUES_NAME = true;\n      defaultIterator = function values() { return call(nativeIterator, this); };\n    }\n  }\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n  }\n  Iterators[NAME] = defaultIterator;\n\n  return methods;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/iterator-define.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/iterators-core.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/iterators-core.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js-pure/internals/object-create.js\");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js-pure/internals/object-get-prototype-of.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js-pure/internals/define-built-in.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js-pure/internals/is-pure.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/iterators-core.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/iterators.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/iterators.js ***!
  \**********************************************************/
/***/ (function(module) {

eval("module.exports = {};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/iterators.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/length-of-array-like.js":
/*!*********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/length-of-array-like.js ***!
  \*********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js-pure/internals/to-length.js\");\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/length-of-array-like.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/math-trunc.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/math-trunc.js ***!
  \***********************************************************/
/***/ (function(module) {

eval("var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/math-trunc.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/not-a-regexp.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/not-a-regexp.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \"./node_modules/core-js-pure/internals/is-regexp.js\");\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw $TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/not-a-regexp.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/number-parse-int.js":
/*!*****************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/number-parse-int.js ***!
  \*****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js-pure/internals/to-string.js\");\nvar trim = (__webpack_require__(/*! ../internals/string-trim */ \"./node_modules/core-js-pure/internals/string-trim.js\").trim);\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \"./node_modules/core-js-pure/internals/whitespaces.js\");\n\nvar $parseInt = global.parseInt;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar hex = /^[+-]?0x/i;\nvar exec = uncurryThis(hex.exec);\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n  var S = trim(toString(string));\n  return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\n} : $parseInt;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/number-parse-int.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/object-assign.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/object-assign.js ***!
  \**************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js-pure/internals/function-call.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js-pure/internals/object-keys.js\");\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \"./node_modules/core-js-pure/internals/object-get-own-property-symbols.js\");\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js-pure/internals/object-property-is-enumerable.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js-pure/internals/to-object.js\");\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js-pure/internals/indexed-object.js\");\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n  // should have correct order of operations (Edge bug)\n  if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n    enumerable: true,\n    get: function () {\n      defineProperty(this, 'b', {\n        value: 3,\n        enumerable: false\n      });\n    }\n  }), { b: 2 })).b !== 1) return true;\n  // should work with symbols and should have deterministic property order (V8 bug)\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line es/no-symbol -- safe\n  var symbol = Symbol();\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/object-assign.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/object-create.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/object-create.js ***!
  \**************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("/* global ActiveXObject -- old IE, WSH */\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\nvar definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ \"./node_modules/core-js-pure/internals/object-define-properties.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js-pure/internals/enum-bug-keys.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js-pure/internals/hidden-keys.js\");\nvar html = __webpack_require__(/*! ../internals/html */ \"./node_modules/core-js-pure/internals/html.js\");\nvar documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js-pure/internals/document-create-element.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js-pure/internals/shared-key.js\");\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/object-create.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/object-define-properties.js":
/*!*************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/object-define-properties.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ \"./node_modules/core-js-pure/internals/v8-prototype-define-bug.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js-pure/internals/object-define-property.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js-pure/internals/to-indexed-object.js\");\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js-pure/internals/object-keys.js\");\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/object-define-properties.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/object-define-property.js":
/*!***********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/object-define-property.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js-pure/internals/ie8-dom-define.js\");\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ \"./node_modules/core-js-pure/internals/v8-prototype-define-bug.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \"./node_modules/core-js-pure/internals/to-property-key.js\");\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/object-define-property.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js ***!
  \***********************************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js-pure/internals/function-call.js\");\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js-pure/internals/object-property-is-enumerable.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js-pure/internals/create-property-descriptor.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js-pure/internals/to-indexed-object.js\");\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \"./node_modules/core-js-pure/internals/to-property-key.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js-pure/internals/has-own-property.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js-pure/internals/ie8-dom-define.js\");\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/object-get-own-property-names-external.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/object-get-own-property-names-external.js ***!
  \***************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js-pure/internals/classof-raw.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js-pure/internals/to-indexed-object.js\");\nvar $getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js-pure/internals/object-get-own-property-names.js\").f);\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \"./node_modules/core-js-pure/internals/array-slice-simple.js\");\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return $getOwnPropertyNames(it);\n  } catch (error) {\n    return arraySlice(windowNames);\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && classof(it) == 'Window'\n    ? getWindowNames(it)\n    : $getOwnPropertyNames(toIndexedObject(it));\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/object-get-own-property-names-external.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/object-get-own-property-names.js":
/*!******************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/object-get-own-property-names.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

eval("var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \"./node_modules/core-js-pure/internals/object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js-pure/internals/enum-bug-keys.js\");\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/object-get-own-property-names.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/object-get-own-property-symbols.js":
/*!********************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/object-get-own-property-symbols.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, exports) {

eval("// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/object-get-own-property-symbols.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/object-get-prototype-of.js":
/*!************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/object-get-prototype-of.js ***!
  \************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js-pure/internals/has-own-property.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js-pure/internals/to-object.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js-pure/internals/shared-key.js\");\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ \"./node_modules/core-js-pure/internals/correct-prototype-getter.js\");\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof $Object ? ObjectPrototype : null;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/object-get-prototype-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/object-is-prototype-of.js":
/*!***********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/object-is-prototype-of.js ***!
  \***********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/object-is-prototype-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/object-keys-internal.js":
/*!*********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/object-keys-internal.js ***!
  \*********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js-pure/internals/has-own-property.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js-pure/internals/to-indexed-object.js\");\nvar indexOf = (__webpack_require__(/*! ../internals/array-includes */ \"./node_modules/core-js-pure/internals/array-includes.js\").indexOf);\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js-pure/internals/hidden-keys.js\");\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/object-keys-internal.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/object-keys.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/object-keys.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \"./node_modules/core-js-pure/internals/object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js-pure/internals/enum-bug-keys.js\");\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/object-keys.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/object-property-is-enumerable.js":
/*!******************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/object-property-is-enumerable.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/object-property-is-enumerable.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/object-set-prototype-of.js":
/*!************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/object-set-prototype-of.js ***!
  \************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("/* eslint-disable no-proto -- safe */\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\nvar aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ \"./node_modules/core-js-pure/internals/a-possible-prototype.js\");\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/object-set-prototype-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/object-to-array.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/object-to-array.js ***!
  \****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js-pure/internals/object-keys.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js-pure/internals/to-indexed-object.js\");\nvar $propertyIsEnumerable = (__webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js-pure/internals/object-property-is-enumerable.js\").f);\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n  return function (it) {\n    var O = toIndexedObject(it);\n    var keys = objectKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {\n        push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n\nmodule.exports = {\n  // `Object.entries` method\n  // https://tc39.es/ecma262/#sec-object.entries\n  entries: createMethod(true),\n  // `Object.values` method\n  // https://tc39.es/ecma262/#sec-object.values\n  values: createMethod(false)\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/object-to-array.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/object-to-string.js":
/*!*****************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/object-to-string.js ***!
  \*****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ \"./node_modules/core-js-pure/internals/to-string-tag-support.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js-pure/internals/classof.js\");\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/object-to-string.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/ordinary-to-primitive.js":
/*!**********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/ordinary-to-primitive.js ***!
  \**********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js-pure/internals/function-call.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw $TypeError(\"Can't convert object to primitive value\");\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/ordinary-to-primitive.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/own-keys.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/own-keys.js ***!
  \*********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js-pure/internals/get-built-in.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js-pure/internals/object-get-own-property-names.js\");\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \"./node_modules/core-js-pure/internals/object-get-own-property-symbols.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/own-keys.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/path.js":
/*!*****************************************************!*\
  !*** ./node_modules/core-js-pure/internals/path.js ***!
  \*****************************************************/
/***/ (function(module) {

eval("module.exports = {};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/path.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/require-object-coercible.js":
/*!*************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/require-object-coercible.js ***!
  \*************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js-pure/internals/is-null-or-undefined.js\");\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/require-object-coercible.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/schedulers-fix.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/schedulers-fix.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \"./node_modules/core-js-pure/internals/function-apply.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\nvar ENGINE_IS_BUN = __webpack_require__(/*! ../internals/engine-is-bun */ \"./node_modules/core-js-pure/internals/engine-is-bun.js\");\nvar USER_AGENT = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js-pure/internals/engine-user-agent.js\");\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice */ \"./node_modules/core-js-pure/internals/array-slice.js\");\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \"./node_modules/core-js-pure/internals/validate-arguments-length.js\");\n\nvar Function = global.Function;\n// dirty IE9- and Bun 0.3.0- checks\nvar WRAP = /MSIE .\\./.test(USER_AGENT) || ENGINE_IS_BUN && (function () {\n  var version = global.Bun.version.split('.');\n  return version.length < 3 || version[0] == 0 && (version[1] < 3 || version[1] == 3 && version[2] == 0);\n})();\n\n// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n// https://github.com/oven-sh/bun/issues/1633\nmodule.exports = function (scheduler, hasTimeArg) {\n  var firstParamIndex = hasTimeArg ? 2 : 1;\n  return WRAP ? function (handler, timeout /* , ...arguments */) {\n    var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];\n    var callback = boundArgs ? function () {\n      apply(fn, this, params);\n    } : fn;\n    return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);\n  } : scheduler;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/schedulers-fix.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/set-to-string-tag.js":
/*!******************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/set-to-string-tag.js ***!
  \******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ \"./node_modules/core-js-pure/internals/to-string-tag-support.js\");\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js-pure/internals/object-define-property.js\").f);\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js-pure/internals/create-non-enumerable-property.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js-pure/internals/has-own-property.js\");\nvar toString = __webpack_require__(/*! ../internals/object-to-string */ \"./node_modules/core-js-pure/internals/object-to-string.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n  if (it) {\n    var target = STATIC ? it : it.prototype;\n    if (!hasOwn(target, TO_STRING_TAG)) {\n      defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n    }\n    if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n      createNonEnumerableProperty(target, 'toString', toString);\n    }\n  }\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/set-to-string-tag.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/shared-key.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/shared-key.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js-pure/internals/shared.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js-pure/internals/uid.js\");\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/shared-key.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/shared-store.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/shared-store.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ \"./node_modules/core-js-pure/internals/define-global-property.js\");\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/shared-store.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/shared.js":
/*!*******************************************************!*\
  !*** ./node_modules/core-js-pure/internals/shared.js ***!
  \*******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js-pure/internals/is-pure.js\");\nvar store = __webpack_require__(/*! ../internals/shared-store */ \"./node_modules/core-js-pure/internals/shared-store.js\");\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.27.2',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.27.2/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/shared.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/string-multibyte.js":
/*!*****************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/string-multibyte.js ***!
  \*****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js-pure/internals/to-integer-or-infinity.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js-pure/internals/to-string.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js-pure/internals/require-object-coercible.js\");\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = toString(requireObjectCoercible($this));\n    var position = toIntegerOrInfinity(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/string-multibyte.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/string-punycode-to-ascii.js":
/*!*************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/string-punycode-to-ascii.js ***!
  \*************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\n\nvar $RangeError = RangeError;\nvar exec = uncurryThis(regexSeparators.exec);\nvar floor = Math.floor;\nvar fromCharCode = String.fromCharCode;\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar toLowerCase = uncurryThis(''.toLowerCase);\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n  var output = [];\n  var counter = 0;\n  var length = string.length;\n  while (counter < length) {\n    var value = charCodeAt(string, counter++);\n    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n      // It's a high surrogate, and there is a next character.\n      var extra = charCodeAt(string, counter++);\n      if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n        push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n      } else {\n        // It's an unmatched surrogate; only append this code unit, in case the\n        // next code unit is the high surrogate of a surrogate pair.\n        push(output, value);\n        counter--;\n      }\n    } else {\n      push(output, value);\n    }\n  }\n  return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n  //  0..25 map to ASCII a..z or A..Z\n  // 26..35 map to ASCII 0..9\n  return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n  var k = 0;\n  delta = firstTime ? floor(delta / damp) : delta >> 1;\n  delta += floor(delta / numPoints);\n  while (delta > baseMinusTMin * tMax >> 1) {\n    delta = floor(delta / baseMinusTMin);\n    k += base;\n  }\n  return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\nvar encode = function (input) {\n  var output = [];\n\n  // Convert the input in UCS-2 to an array of Unicode code points.\n  input = ucs2decode(input);\n\n  // Cache the length.\n  var inputLength = input.length;\n\n  // Initialize the state.\n  var n = initialN;\n  var delta = 0;\n  var bias = initialBias;\n  var i, currentValue;\n\n  // Handle the basic code points.\n  for (i = 0; i < input.length; i++) {\n    currentValue = input[i];\n    if (currentValue < 0x80) {\n      push(output, fromCharCode(currentValue));\n    }\n  }\n\n  var basicLength = output.length; // number of basic code points.\n  var handledCPCount = basicLength; // number of code points that have been handled;\n\n  // Finish the basic string with a delimiter unless it's empty.\n  if (basicLength) {\n    push(output, delimiter);\n  }\n\n  // Main encoding loop:\n  while (handledCPCount < inputLength) {\n    // All non-basic code points < n have been handled already. Find the next larger one:\n    var m = maxInt;\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue >= n && currentValue < m) {\n        m = currentValue;\n      }\n    }\n\n    // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n    var handledCPCountPlusOne = handledCPCount + 1;\n    if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n      throw $RangeError(OVERFLOW_ERROR);\n    }\n\n    delta += (m - n) * handledCPCountPlusOne;\n    n = m;\n\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue < n && ++delta > maxInt) {\n        throw $RangeError(OVERFLOW_ERROR);\n      }\n      if (currentValue == n) {\n        // Represent delta as a generalized variable-length integer.\n        var q = delta;\n        var k = base;\n        while (true) {\n          var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n          if (q < t) break;\n          var qMinusT = q - t;\n          var baseMinusT = base - t;\n          push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n          q = floor(qMinusT / baseMinusT);\n          k += base;\n        }\n\n        push(output, fromCharCode(digitToBasic(q)));\n        bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n        delta = 0;\n        handledCPCount++;\n      }\n    }\n\n    delta++;\n    n++;\n  }\n  return join(output, '');\n};\n\nmodule.exports = function (input) {\n  var encoded = [];\n  var labels = split(replace(toLowerCase(input), regexSeparators, '\\u002E'), '.');\n  var i, label;\n  for (i = 0; i < labels.length; i++) {\n    label = labels[i];\n    push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\n  }\n  return join(encoded, '.');\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/string-punycode-to-ascii.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/string-trim-forced.js":
/*!*******************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/string-trim-forced.js ***!
  \*******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var PROPER_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ \"./node_modules/core-js-pure/internals/function-name.js\").PROPER);\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \"./node_modules/core-js-pure/internals/whitespaces.js\");\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]()\n      || non[METHOD_NAME]() !== non\n      || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n  });\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/string-trim-forced.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/string-trim.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/string-trim.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js-pure/internals/require-object-coercible.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js-pure/internals/to-string.js\");\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \"./node_modules/core-js-pure/internals/whitespaces.js\");\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = replace(string, ltrim, '');\n    if (TYPE & 2) string = replace(string, rtrim, '');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/string-trim.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/symbol-constructor-detection.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/symbol-constructor-detection.js ***!
  \*****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ \"./node_modules/core-js-pure/internals/engine-v8-version.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/symbol-constructor-detection.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/symbol-define-to-primitive.js":
/*!***************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/symbol-define-to-primitive.js ***!
  \***************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js-pure/internals/function-call.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js-pure/internals/get-built-in.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js-pure/internals/define-built-in.js\");\n\nmodule.exports = function () {\n  var Symbol = getBuiltIn('Symbol');\n  var SymbolPrototype = Symbol && Symbol.prototype;\n  var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n  var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n  if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n    // `Symbol.prototype[@@toPrimitive]` method\n    // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n    // eslint-disable-next-line no-unused-vars -- required for .length\n    defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n      return call(valueOf, this);\n    }, { arity: 1 });\n  }\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/symbol-define-to-primitive.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/symbol-registry-detection.js":
/*!**************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/symbol-registry-detection.js ***!
  \**************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \"./node_modules/core-js-pure/internals/symbol-constructor-detection.js\");\n\n/* eslint-disable es/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/symbol-registry-detection.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/to-absolute-index.js":
/*!******************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/to-absolute-index.js ***!
  \******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js-pure/internals/to-integer-or-infinity.js\");\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/to-absolute-index.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/to-indexed-object.js":
/*!******************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/to-indexed-object.js ***!
  \******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js-pure/internals/indexed-object.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js-pure/internals/require-object-coercible.js\");\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/to-indexed-object.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/to-integer-or-infinity.js":
/*!***********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/to-integer-or-infinity.js ***!
  \***********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var trunc = __webpack_require__(/*! ../internals/math-trunc */ \"./node_modules/core-js-pure/internals/math-trunc.js\");\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/to-integer-or-infinity.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/to-length.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/to-length.js ***!
  \**********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js-pure/internals/to-integer-or-infinity.js\");\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/to-length.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/to-object.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/to-object.js ***!
  \**********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js-pure/internals/require-object-coercible.js\");\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/to-object.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/to-primitive.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/to-primitive.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js-pure/internals/function-call.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \"./node_modules/core-js-pure/internals/is-symbol.js\");\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \"./node_modules/core-js-pure/internals/get-method.js\");\nvar ordinaryToPrimitive = __webpack_require__(/*! ../internals/ordinary-to-primitive */ \"./node_modules/core-js-pure/internals/ordinary-to-primitive.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/to-primitive.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/to-property-key.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/to-property-key.js ***!
  \****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js-pure/internals/to-primitive.js\");\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \"./node_modules/core-js-pure/internals/is-symbol.js\");\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/to-property-key.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/to-string-tag-support.js":
/*!**********************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/to-string-tag-support.js ***!
  \**********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/to-string-tag-support.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/to-string.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js-pure/internals/to-string.js ***!
  \**********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js-pure/internals/classof.js\");\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n  return $String(argument);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/to-string.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/try-to-string.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/try-to-string.js ***!
  \**************************************************************/
/***/ (function(module) {

eval("var $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/try-to-string.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/uid.js":
/*!****************************************************!*\
  !*** ./node_modules/core-js-pure/internals/uid.js ***!
  \****************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/uid.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/url-constructor-detection.js":
/*!**************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/url-constructor-detection.js ***!
  \**************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js-pure/internals/is-pure.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n  var url = new URL('b?a=1&b=2&c=3', 'http://a');\n  var searchParams = url.searchParams;\n  var result = '';\n  url.pathname = 'c%20d';\n  searchParams.forEach(function (value, key) {\n    searchParams['delete']('b');\n    result += key + value;\n  });\n  return (IS_PURE && !url.toJSON)\n    || !searchParams.sort\n    || url.href !== 'http://a/c%20d?a=1&c=3'\n    || searchParams.get('c') !== '3'\n    || String(new URLSearchParams('?a=1')) !== 'a=1'\n    || !searchParams[ITERATOR]\n    // throws in Edge\n    || new URL('https://a@b').username !== 'a'\n    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n    // not punycoded in Edge\n    || new URL('http://тест').host !== 'xn--e1aybc'\n    // not escaped in Chrome 62-\n    || new URL('http://a#б').hash !== '#%D0%B1'\n    // fails in Chrome 66-\n    || result !== 'a1c3'\n    // throws in Safari\n    || new URL('http://x', undefined).host !== 'x';\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/url-constructor-detection.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/use-symbol-as-uid.js":
/*!******************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/use-symbol-as-uid.js ***!
  \******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \"./node_modules/core-js-pure/internals/symbol-constructor-detection.js\");\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/use-symbol-as-uid.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/v8-prototype-define-bug.js":
/*!************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/v8-prototype-define-bug.js ***!
  \************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype != 42;\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/v8-prototype-define-bug.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/validate-arguments-length.js":
/*!**************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/validate-arguments-length.js ***!
  \**************************************************************************/
/***/ (function(module) {

eval("var $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw $TypeError('Not enough arguments');\n  return passed;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/validate-arguments-length.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/weak-map-basic-detection.js":
/*!*************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/weak-map-basic-detection.js ***!
  \*************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/weak-map-basic-detection.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/well-known-symbol-define.js":
/*!*************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/well-known-symbol-define.js ***!
  \*************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var path = __webpack_require__(/*! ../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js-pure/internals/has-own-property.js\");\nvar wrappedWellKnownSymbolModule = __webpack_require__(/*! ../internals/well-known-symbol-wrapped */ \"./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js\");\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js-pure/internals/object-define-property.js\").f);\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/well-known-symbol-define.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js":
/*!**************************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

eval("var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nexports.f = wellKnownSymbol;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/well-known-symbol.js":
/*!******************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/well-known-symbol.js ***!
  \******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js-pure/internals/shared.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js-pure/internals/has-own-property.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js-pure/internals/uid.js\");\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \"./node_modules/core-js-pure/internals/symbol-constructor-detection.js\");\nvar USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ \"./node_modules/core-js-pure/internals/use-symbol-as-uid.js\");\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/well-known-symbol.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/internals/whitespaces.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/internals/whitespaces.js ***!
  \************************************************************/
/***/ (function(module) {

eval("// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/internals/whitespaces.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.array.concat.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.array.concat.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \"./node_modules/core-js-pure/internals/is-array.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js-pure/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js-pure/internals/length-of-array-like.js\");\nvar doesNotExceedSafeInteger = __webpack_require__(/*! ../internals/does-not-exceed-safe-integer */ \"./node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js\");\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \"./node_modules/core-js-pure/internals/create-property.js\");\nvar arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ \"./node_modules/core-js-pure/internals/array-species-create.js\");\nvar arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ \"./node_modules/core-js-pure/internals/array-method-has-species-support.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\nvar V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ \"./node_modules/core-js-pure/internals/engine-v8-version.js\");\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat');\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = lengthOfArrayLike(E);\n        doesNotExceedSafeInteger(n + len);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        doesNotExceedSafeInteger(n + 1);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.array.concat.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.array.every.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.array.every.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar $every = (__webpack_require__(/*! ../internals/array-iteration */ \"./node_modules/core-js-pure/internals/array-iteration.js\").every);\nvar arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ \"./node_modules/core-js-pure/internals/array-method-is-strict.js\");\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\n\n// `Array.prototype.every` method\n// https://tc39.es/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  every: function every(callbackfn /* , thisArg */) {\n    return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.array.every.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.array.filter.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.array.filter.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar $filter = (__webpack_require__(/*! ../internals/array-iteration */ \"./node_modules/core-js-pure/internals/array-iteration.js\").filter);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ \"./node_modules/core-js-pure/internals/array-method-has-species-support.js\");\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.array.filter.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.array.find-index.js":
/*!******************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.array.find-index.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar $findIndex = (__webpack_require__(/*! ../internals/array-iteration */ \"./node_modules/core-js-pure/internals/array-iteration.js\").findIndex);\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \"./node_modules/core-js-pure/internals/add-to-unscopables.js\");\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  findIndex: function findIndex(callbackfn /* , that = undefined */) {\n    return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.array.find-index.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.array.for-each.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.array.for-each.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar forEach = __webpack_require__(/*! ../internals/array-for-each */ \"./node_modules/core-js-pure/internals/array-for-each.js\");\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n  forEach: forEach\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.array.for-each.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.array.from.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.array.from.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar from = __webpack_require__(/*! ../internals/array-from */ \"./node_modules/core-js-pure/internals/array-from.js\");\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \"./node_modules/core-js-pure/internals/check-correctness-of-iteration.js\");\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  // eslint-disable-next-line es/no-array-from -- required for testing\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.array.from.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.array.index-of.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.array.index-of.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \"./node_modules/core-js-pure/internals/function-uncurry-this-clause.js\");\nvar $indexOf = (__webpack_require__(/*! ../internals/array-includes */ \"./node_modules/core-js-pure/internals/array-includes.js\").indexOf);\nvar arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ \"./node_modules/core-js-pure/internals/array-method-is-strict.js\");\n\nvar nativeIndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;\nvar FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf(this, searchElement, fromIndex) || 0\n      : $indexOf(this, searchElement, fromIndex);\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.array.index-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.array.is-array.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.array.is-array.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \"./node_modules/core-js-pure/internals/is-array.js\");\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n  isArray: isArray\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.array.is-array.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.array.iterator.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.array.iterator.js ***!
  \****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js-pure/internals/to-indexed-object.js\");\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \"./node_modules/core-js-pure/internals/add-to-unscopables.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js-pure/internals/iterators.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js-pure/internals/internal-state.js\");\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js-pure/internals/object-define-property.js\").f);\nvar defineIterator = __webpack_require__(/*! ../internals/iterator-define */ \"./node_modules/core-js-pure/internals/iterator-define.js\");\nvar createIterResultObject = __webpack_require__(/*! ../internals/create-iter-result-object */ \"./node_modules/core-js-pure/internals/create-iter-result-object.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js-pure/internals/is-pure.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return createIterResultObject(undefined, true);\n  }\n  if (kind == 'keys') return createIterResultObject(index, false);\n  if (kind == 'values') return createIterResultObject(target[index], false);\n  return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n  defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.array.iterator.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.array.map.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.array.map.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar $map = (__webpack_require__(/*! ../internals/array-iteration */ \"./node_modules/core-js-pure/internals/array-iteration.js\").map);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ \"./node_modules/core-js-pure/internals/array-method-has-species-support.js\");\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.array.map.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.array.reduce.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.array.reduce.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar $reduce = (__webpack_require__(/*! ../internals/array-reduce */ \"./node_modules/core-js-pure/internals/array-reduce.js\").left);\nvar arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ \"./node_modules/core-js-pure/internals/array-method-is-strict.js\");\nvar CHROME_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ \"./node_modules/core-js-pure/internals/engine-v8-version.js\");\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \"./node_modules/core-js-pure/internals/engine-is-node.js\");\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduce');\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    var length = arguments.length;\n    return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.array.reduce.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.array.slice.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.array.slice.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \"./node_modules/core-js-pure/internals/is-array.js\");\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \"./node_modules/core-js-pure/internals/is-constructor.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js-pure/internals/to-absolute-index.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js-pure/internals/length-of-array-like.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js-pure/internals/to-indexed-object.js\");\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \"./node_modules/core-js-pure/internals/create-property.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\nvar arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ \"./node_modules/core-js-pure/internals/array-method-has-species-support.js\");\nvar nativeSlice = __webpack_require__(/*! ../internals/array-slice */ \"./node_modules/core-js-pure/internals/array-slice.js\");\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = lengthOfArrayLike(O);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === $Array || Constructor === undefined) {\n        return nativeSlice(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.array.slice.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.array.some.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.array.some.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar $some = (__webpack_require__(/*! ../internals/array-iteration */ \"./node_modules/core-js-pure/internals/array-iteration.js\").some);\nvar arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ \"./node_modules/core-js-pure/internals/array-method-is-strict.js\");\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  some: function some(callbackfn /* , thisArg */) {\n    return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.array.some.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.array.sort.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.array.sort.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js-pure/internals/a-callable.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js-pure/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js-pure/internals/length-of-array-like.js\");\nvar deletePropertyOrThrow = __webpack_require__(/*! ../internals/delete-property-or-throw */ \"./node_modules/core-js-pure/internals/delete-property-or-throw.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js-pure/internals/to-string.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar internalSort = __webpack_require__(/*! ../internals/array-sort */ \"./node_modules/core-js-pure/internals/array-sort.js\");\nvar arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ \"./node_modules/core-js-pure/internals/array-method-is-strict.js\");\nvar FF = __webpack_require__(/*! ../internals/engine-ff-version */ \"./node_modules/core-js-pure/internals/engine-ff-version.js\");\nvar IE_OR_EDGE = __webpack_require__(/*! ../internals/engine-is-ie-or-edge */ \"./node_modules/core-js-pure/internals/engine-is-ie-or-edge.js\");\nvar V8 = __webpack_require__(/*! ../internals/engine-v8-version */ \"./node_modules/core-js-pure/internals/engine-v8-version.js\");\nvar WEBKIT = __webpack_require__(/*! ../internals/engine-webkit-version */ \"./node_modules/core-js-pure/internals/engine-webkit-version.js\");\n\nvar test = [];\nvar nativeSort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n  test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n  test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 70;\n  if (FF && FF > 3) return;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 603;\n\n  var result = '';\n  var code, chr, value, index;\n\n  // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n  for (code = 65; code < 76; code++) {\n    chr = String.fromCharCode(code);\n\n    switch (code) {\n      case 66: case 69: case 70: case 72: value = 3; break;\n      case 68: case 71: value = 4; break;\n      default: value = 2;\n    }\n\n    for (index = 0; index < 47; index++) {\n      test.push({ k: chr + index, v: value });\n    }\n  }\n\n  test.sort(function (a, b) { return b.v - a.v; });\n\n  for (index = 0; index < test.length; index++) {\n    chr = test[index].k.charAt(0);\n    if (result.charAt(result.length - 1) !== chr) result += chr;\n  }\n\n  return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (y === undefined) return -1;\n    if (x === undefined) return 1;\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    return toString(x) > toString(y) ? 1 : -1;\n  };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  sort: function sort(comparefn) {\n    if (comparefn !== undefined) aCallable(comparefn);\n\n    var array = toObject(this);\n\n    if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\n\n    var items = [];\n    var arrayLength = lengthOfArrayLike(array);\n    var itemsLength, index;\n\n    for (index = 0; index < arrayLength; index++) {\n      if (index in array) push(items, array[index]);\n    }\n\n    internalSort(items, getSortCompare(comparefn));\n\n    itemsLength = lengthOfArrayLike(items);\n    index = 0;\n\n    while (index < itemsLength) array[index] = items[index++];\n    while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n    return array;\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.array.sort.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.array.splice.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.array.splice.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js-pure/internals/to-object.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js-pure/internals/to-absolute-index.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js-pure/internals/to-integer-or-infinity.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js-pure/internals/length-of-array-like.js\");\nvar setArrayLength = __webpack_require__(/*! ../internals/array-set-length */ \"./node_modules/core-js-pure/internals/array-set-length.js\");\nvar doesNotExceedSafeInteger = __webpack_require__(/*! ../internals/does-not-exceed-safe-integer */ \"./node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js\");\nvar arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ \"./node_modules/core-js-pure/internals/array-species-create.js\");\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \"./node_modules/core-js-pure/internals/create-property.js\");\nvar deletePropertyOrThrow = __webpack_require__(/*! ../internals/delete-property-or-throw */ \"./node_modules/core-js-pure/internals/delete-property-or-throw.js\");\nvar arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ \"./node_modules/core-js-pure/internals/array-method-has-species-support.js\");\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n    }\n    doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else deletePropertyOrThrow(O, to);\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1);\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else deletePropertyOrThrow(O, to);\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    setArrayLength(O, len - actualDeleteCount + insertCount);\n    return A;\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.array.splice.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.date.to-primitive.js":
/*!*******************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.date.to-primitive.js ***!
  \*******************************************************************/
/***/ (function() {

eval("// empty\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.date.to-primitive.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.function.bind.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.function.bind.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("// TODO: Remove from `core-js@4`\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind */ \"./node_modules/core-js-pure/internals/function-bind.js\");\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n  bind: bind\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.function.bind.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.json.stringify.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.json.stringify.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js-pure/internals/get-built-in.js\");\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \"./node_modules/core-js-pure/internals/function-apply.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js-pure/internals/function-call.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \"./node_modules/core-js-pure/internals/is-array.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \"./node_modules/core-js-pure/internals/is-symbol.js\");\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice */ \"./node_modules/core-js-pure/internals/array-slice.js\");\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \"./node_modules/core-js-pure/internals/symbol-constructor-detection.js\");\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n  var symbol = getBuiltIn('Symbol')();\n  // MS Edge converts symbol values to JSON as {}\n  return $stringify([symbol]) != '[null]'\n    // WebKit converts symbol values to JSON as null\n    || $stringify({ a: symbol }) != '{}'\n    // V8 throws on boxed symbols\n    || $stringify(Object(symbol)) != '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n  return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n    || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n  var args = arraySlice(arguments);\n  var $replacer = replacer;\n  if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n  if (!isArray(replacer)) replacer = function (key, value) {\n    if (isCallable($replacer)) value = call($replacer, this, key, value);\n    if (!isSymbol(value)) return value;\n  };\n  args[1] = replacer;\n  return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n  var prev = charAt(string, offset - 1);\n  var next = charAt(string, offset + 1);\n  if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n    return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n  } return match;\n};\n\nif ($stringify) {\n  // `JSON.stringify` method\n  // https://tc39.es/ecma262/#sec-json.stringify\n  $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n    // eslint-disable-next-line no-unused-vars -- required for `.length`\n    stringify: function stringify(it, replacer, space) {\n      var args = arraySlice(arguments);\n      var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n      return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n    }\n  });\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.json.stringify.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.json.to-string-tag.js":
/*!********************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.json.to-string-tag.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js-pure/internals/set-to-string-tag.js\");\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.json.to-string-tag.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.math.to-string-tag.js":
/*!********************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.math.to-string-tag.js ***!
  \********************************************************************/
/***/ (function() {

eval("// empty\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.math.to-string-tag.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.object.assign.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.object.assign.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar assign = __webpack_require__(/*! ../internals/object-assign */ \"./node_modules/core-js-pure/internals/object-assign.js\");\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n  assign: assign\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.object.assign.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.object.create.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.object.create.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("// TODO: Remove from `core-js@4`\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js-pure/internals/object-create.js\");\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  create: create\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.object.create.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.object.define-properties.js":
/*!**************************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.object.define-properties.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar defineProperties = (__webpack_require__(/*! ../internals/object-define-properties */ \"./node_modules/core-js-pure/internals/object-define-properties.js\").f);\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperties !== defineProperties, sham: !DESCRIPTORS }, {\n  defineProperties: defineProperties\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.object.define-properties.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.object.define-property.js":
/*!************************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.object.define-property.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js-pure/internals/object-define-property.js\").f);\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n  defineProperty: defineProperty\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.object.define-property.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.object.entries.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.object.entries.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar $entries = (__webpack_require__(/*! ../internals/object-to-array */ \"./node_modules/core-js-pure/internals/object-to-array.js\").entries);\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n  entries: function entries(O) {\n    return $entries(O);\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.object.entries.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js":
/*!************************************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js ***!
  \************************************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js-pure/internals/to-indexed-object.js\");\nvar nativeGetOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js\").f);\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\n\nvar FORCED = !DESCRIPTORS || fails(function () { nativeGetOwnPropertyDescriptor(1); });\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n    return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js ***!
  \*************************************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar ownKeys = __webpack_require__(/*! ../internals/own-keys */ \"./node_modules/core-js-pure/internals/own-keys.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js-pure/internals/to-indexed-object.js\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js\");\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \"./node_modules/core-js-pure/internals/create-property.js\");\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIndexedObject(object);\n    var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var index = 0;\n    var key, descriptor;\n    while (keys.length > index) {\n      descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n      if (descriptor !== undefined) createProperty(result, key, descriptor);\n    }\n    return result;\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.object.get-own-property-symbols.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.object.get-own-property-symbols.js ***!
  \*********************************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \"./node_modules/core-js-pure/internals/symbol-constructor-detection.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \"./node_modules/core-js-pure/internals/object-get-own-property-symbols.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js-pure/internals/to-object.js\");\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n    return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.object.get-own-property-symbols.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.object.get-prototype-of.js":
/*!*************************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.object.get-prototype-of.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js-pure/internals/to-object.js\");\nvar nativeGetPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js-pure/internals/object-get-prototype-of.js\");\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ \"./node_modules/core-js-pure/internals/correct-prototype-getter.js\");\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(it) {\n    return nativeGetPrototypeOf(toObject(it));\n  }\n});\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.object.get-prototype-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.object.keys.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.object.keys.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js-pure/internals/to-object.js\");\nvar nativeKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js-pure/internals/object-keys.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  keys: function keys(it) {\n    return nativeKeys(toObject(it));\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.object.keys.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.object.set-prototype-of.js":
/*!*************************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.object.set-prototype-of.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js-pure/internals/object-set-prototype-of.js\");\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n  setPrototypeOf: setPrototypeOf\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.object.set-prototype-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.object.to-string.js":
/*!******************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.object.to-string.js ***!
  \******************************************************************/
/***/ (function() {

eval("// empty\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.object.to-string.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.object.values.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.object.values.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar $values = (__webpack_require__(/*! ../internals/object-to-array */ \"./node_modules/core-js-pure/internals/object-to-array.js\").values);\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n  values: function values(O) {\n    return $values(O);\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.object.values.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.parse-int.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.parse-int.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar $parseInt = __webpack_require__(/*! ../internals/number-parse-int */ \"./node_modules/core-js-pure/internals/number-parse-int.js\");\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != $parseInt }, {\n  parseInt: $parseInt\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.parse-int.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.reflect.construct.js":
/*!*******************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.reflect.construct.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js-pure/internals/get-built-in.js\");\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \"./node_modules/core-js-pure/internals/function-apply.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind */ \"./node_modules/core-js-pure/internals/function-bind.js\");\nvar aConstructor = __webpack_require__(/*! ../internals/a-constructor */ \"./node_modules/core-js-pure/internals/a-constructor.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js-pure/internals/object-create.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n  function F() { /* empty */ }\n  return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n  nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n  construct: function construct(Target, args /* , newTarget */) {\n    aConstructor(Target);\n    anObject(args);\n    var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n    if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n    if (Target == newTarget) {\n      // w/o altered newTarget, optimization for 0-4 arguments\n      switch (args.length) {\n        case 0: return new Target();\n        case 1: return new Target(args[0]);\n        case 2: return new Target(args[0], args[1]);\n        case 3: return new Target(args[0], args[1], args[2]);\n        case 4: return new Target(args[0], args[1], args[2], args[3]);\n      }\n      // w/o altered newTarget, lot of arguments case\n      var $args = [null];\n      apply(push, $args, args);\n      return new (apply(bind, Target, $args))();\n    }\n    // with altered newTarget, not support built-in constructors\n    var proto = newTarget.prototype;\n    var instance = create(isObject(proto) ? proto : ObjectPrototype);\n    var result = apply(Target, instance, args);\n    return isObject(result) ? result : instance;\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.reflect.construct.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.reflect.to-string-tag.js":
/*!***********************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.reflect.to-string-tag.js ***!
  \***********************************************************************/
/***/ (function() {

eval("// empty\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.reflect.to-string-tag.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.string.iterator.js":
/*!*****************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.string.iterator.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar charAt = (__webpack_require__(/*! ../internals/string-multibyte */ \"./node_modules/core-js-pure/internals/string-multibyte.js\").charAt);\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js-pure/internals/to-string.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js-pure/internals/internal-state.js\");\nvar defineIterator = __webpack_require__(/*! ../internals/iterator-define */ \"./node_modules/core-js-pure/internals/iterator-define.js\");\nvar createIterResultObject = __webpack_require__(/*! ../internals/create-iter-result-object */ \"./node_modules/core-js-pure/internals/create-iter-result-object.js\");\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: toString(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return createIterResultObject(undefined, true);\n  point = charAt(string, index);\n  state.index += point.length;\n  return createIterResultObject(point, false);\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.string.iterator.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.string.starts-with.js":
/*!********************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.string.starts-with.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \"./node_modules/core-js-pure/internals/function-uncurry-this-clause.js\");\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js\").f);\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js-pure/internals/to-length.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js-pure/internals/to-string.js\");\nvar notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ \"./node_modules/core-js-pure/internals/not-a-regexp.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js-pure/internals/require-object-coercible.js\");\nvar correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ \"./node_modules/core-js-pure/internals/correct-is-regexp-logic.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js-pure/internals/is-pure.js\");\n\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\nvar nativeStartsWith = uncurryThis(''.startsWith);\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = toString(searchString);\n    return nativeStartsWith\n      ? nativeStartsWith(that, search, index)\n      : stringSlice(that, index, index + search.length) === search;\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.string.starts-with.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.string.trim.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.string.trim.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar $trim = (__webpack_require__(/*! ../internals/string-trim */ \"./node_modules/core-js-pure/internals/string-trim.js\").trim);\nvar forcedStringTrimMethod = __webpack_require__(/*! ../internals/string-trim-forced */ \"./node_modules/core-js-pure/internals/string-trim-forced.js\");\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.string.trim.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.async-iterator.js":
/*!***********************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.async-iterator.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.async-iterator.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.constructor.js":
/*!********************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.constructor.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js-pure/internals/function-call.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js-pure/internals/is-pure.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \"./node_modules/core-js-pure/internals/symbol-constructor-detection.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js-pure/internals/has-own-property.js\");\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js-pure/internals/to-indexed-object.js\");\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \"./node_modules/core-js-pure/internals/to-property-key.js\");\nvar $toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js-pure/internals/to-string.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js-pure/internals/create-property-descriptor.js\");\nvar nativeObjectCreate = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js-pure/internals/object-create.js\");\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js-pure/internals/object-keys.js\");\nvar getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js-pure/internals/object-get-own-property-names.js\");\nvar getOwnPropertyNamesExternal = __webpack_require__(/*! ../internals/object-get-own-property-names-external */ \"./node_modules/core-js-pure/internals/object-get-own-property-names-external.js\");\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \"./node_modules/core-js-pure/internals/object-get-own-property-symbols.js\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js-pure/internals/object-define-property.js\");\nvar definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ \"./node_modules/core-js-pure/internals/object-define-properties.js\");\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js-pure/internals/object-property-is-enumerable.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js-pure/internals/define-built-in.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js-pure/internals/shared.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js-pure/internals/shared-key.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js-pure/internals/hidden-keys.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js-pure/internals/uid.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\nvar wrappedWellKnownSymbolModule = __webpack_require__(/*! ../internals/well-known-symbol-wrapped */ \"./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js\");\nvar defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\nvar defineSymbolToPrimitive = __webpack_require__(/*! ../internals/symbol-define-to-primitive */ \"./node_modules/core-js-pure/internals/symbol-define-to-primitive.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js-pure/internals/set-to-string-tag.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js-pure/internals/internal-state.js\");\nvar $forEach = (__webpack_require__(/*! ../internals/array-iteration */ \"./node_modules/core-js-pure/internals/array-iteration.js\").forEach);\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPropertyKey(P);\n  anObject(Attributes);\n  if (hasOwn(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPropertyKey(V);\n  var enumerable = call(nativePropertyIsEnumerable, this, P);\n  if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n    ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPropertyKey(P);\n  if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n      push(result, AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n      if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  SymbolPrototype = $Symbol[PROTOTYPE];\n\n  defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  definePropertiesModule.f = $defineProperties;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    nativeDefineProperty(SymbolPrototype, 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.es/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.es/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.es/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.constructor.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.description.js":
/*!********************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.description.js ***!
  \********************************************************************/
/***/ (function() {

eval("// empty\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.description.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.for.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.for.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js-pure/internals/get-built-in.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js-pure/internals/has-own-property.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js-pure/internals/to-string.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js-pure/internals/shared.js\");\nvar NATIVE_SYMBOL_REGISTRY = __webpack_require__(/*! ../internals/symbol-registry-detection */ \"./node_modules/core-js-pure/internals/symbol-registry-detection.js\");\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  'for': function (key) {\n    var string = toString(key);\n    if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = getBuiltIn('Symbol')(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.for.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.has-instance.js":
/*!*********************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.has-instance.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.has-instance.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.iterator.js":
/*!*****************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.iterator.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.iterator.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("// TODO: Remove this module from `core-js@4` since it's split to modules listed below\n__webpack_require__(/*! ../modules/es.symbol.constructor */ \"./node_modules/core-js-pure/modules/es.symbol.constructor.js\");\n__webpack_require__(/*! ../modules/es.symbol.for */ \"./node_modules/core-js-pure/modules/es.symbol.for.js\");\n__webpack_require__(/*! ../modules/es.symbol.key-for */ \"./node_modules/core-js-pure/modules/es.symbol.key-for.js\");\n__webpack_require__(/*! ../modules/es.json.stringify */ \"./node_modules/core-js-pure/modules/es.json.stringify.js\");\n__webpack_require__(/*! ../modules/es.object.get-own-property-symbols */ \"./node_modules/core-js-pure/modules/es.object.get-own-property-symbols.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.key-for.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.key-for.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js-pure/internals/has-own-property.js\");\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \"./node_modules/core-js-pure/internals/is-symbol.js\");\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js-pure/internals/try-to-string.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js-pure/internals/shared.js\");\nvar NATIVE_SYMBOL_REGISTRY = __webpack_require__(/*! ../internals/symbol-registry-detection */ \"./node_modules/core-js-pure/internals/symbol-registry-detection.js\");\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol');\n    if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  }\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.key-for.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.match-all.js":
/*!******************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.match-all.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.match-all.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.match.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.match.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.match.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.replace.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.replace.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.replace.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.search.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.search.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.search.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.species.js":
/*!****************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.species.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.species.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.split.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.split.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.split.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.to-primitive.js":
/*!*********************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.to-primitive.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\nvar defineSymbolToPrimitive = __webpack_require__(/*! ../internals/symbol-define-to-primitive */ \"./node_modules/core-js-pure/internals/symbol-define-to-primitive.js\");\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.to-primitive.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js":
/*!**********************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js-pure/internals/get-built-in.js\");\nvar defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js-pure/internals/set-to-string-tag.js\");\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/es.symbol.unscopables.js":
/*!********************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/es.symbol.unscopables.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/es.symbol.unscopables.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js":
/*!**************************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-async-explicit-resource-management\ndefineWellKnownSymbol('asyncDispose');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/esnext.symbol.dispose.js":
/*!********************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/esnext.symbol.dispose.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-explicit-resource-management\ndefineWellKnownSymbol('dispose');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/esnext.symbol.dispose.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/esnext.symbol.matcher.js":
/*!********************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/esnext.symbol.matcher.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.matcher` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('matcher');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/esnext.symbol.matcher.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/esnext.symbol.metadata-key.js":
/*!*************************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/esnext.symbol.metadata-key.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.metadataKey` well-known symbol\n// https://github.com/tc39/proposal-decorator-metadata\ndefineWellKnownSymbol('metadataKey');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/esnext.symbol.metadata-key.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/esnext.symbol.metadata.js":
/*!*********************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/esnext.symbol.metadata.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("// TODO: Remove from `core-js@4`\nvar defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.metadata` well-known symbol\n// https://github.com/tc39/proposal-decorators\ndefineWellKnownSymbol('metadata');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/esnext.symbol.metadata.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/esnext.symbol.observable.js":
/*!***********************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/esnext.symbol.observable.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/esnext.symbol.observable.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js":
/*!**************************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/esnext.symbol.replace-all.js":
/*!************************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/esnext.symbol.replace-all.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ \"./node_modules/core-js-pure/internals/well-known-symbol-define.js\");\n\ndefineWellKnownSymbol('replaceAll');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/esnext.symbol.replace-all.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/web.dom-collections.iterator.js":
/*!***************************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/web.dom-collections.iterator.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../modules/es.array.iterator */ \"./node_modules/core-js-pure/modules/es.array.iterator.js\");\nvar DOMIterables = __webpack_require__(/*! ../internals/dom-iterables */ \"./node_modules/core-js-pure/internals/dom-iterables.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js-pure/internals/classof.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js-pure/internals/create-non-enumerable-property.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js-pure/internals/iterators.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {\n    createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n  }\n  Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/web.dom-collections.iterator.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/web.set-interval.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/web.set-interval.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar schedulersFix = __webpack_require__(/*! ../internals/schedulers-fix */ \"./node_modules/core-js-pure/internals/schedulers-fix.js\");\n\nvar setInterval = schedulersFix(global.setInterval, true);\n\n// Bun / IE9- setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n$({ global: true, bind: true, forced: global.setInterval !== setInterval }, {\n  setInterval: setInterval\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/web.set-interval.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/web.set-timeout.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/web.set-timeout.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar schedulersFix = __webpack_require__(/*! ../internals/schedulers-fix */ \"./node_modules/core-js-pure/internals/schedulers-fix.js\");\n\nvar setTimeout = schedulersFix(global.setTimeout, true);\n\n// Bun / IE9- setTimeout additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n$({ global: true, bind: true, forced: global.setTimeout !== setTimeout }, {\n  setTimeout: setTimeout\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/web.set-timeout.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/web.timers.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js-pure/modules/web.timers.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("// TODO: Remove this module from `core-js@4` since it's split to modules listed below\n__webpack_require__(/*! ../modules/web.set-interval */ \"./node_modules/core-js-pure/modules/web.set-interval.js\");\n__webpack_require__(/*! ../modules/web.set-timeout */ \"./node_modules/core-js-pure/modules/web.set-timeout.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/web.timers.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/web.url-search-params.constructor.js":
/*!********************************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/web.url-search-params.constructor.js ***!
  \********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__webpack_require__(/*! ../modules/es.array.iterator */ \"./node_modules/core-js-pure/modules/es.array.iterator.js\");\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js-pure/internals/function-call.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar USE_NATIVE_URL = __webpack_require__(/*! ../internals/url-constructor-detection */ \"./node_modules/core-js-pure/internals/url-constructor-detection.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js-pure/internals/define-built-in.js\");\nvar defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ \"./node_modules/core-js-pure/internals/define-built-ins.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js-pure/internals/set-to-string-tag.js\");\nvar createIteratorConstructor = __webpack_require__(/*! ../internals/iterator-create-constructor */ \"./node_modules/core-js-pure/internals/iterator-create-constructor.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js-pure/internals/internal-state.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js-pure/internals/an-instance.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js-pure/internals/is-callable.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js-pure/internals/has-own-property.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js-pure/internals/function-bind-context.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js-pure/internals/classof.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\nvar $toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js-pure/internals/to-string.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js-pure/internals/object-create.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js-pure/internals/create-property-descriptor.js\");\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \"./node_modules/core-js-pure/internals/get-iterator.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js-pure/internals/get-iterator-method.js\");\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \"./node_modules/core-js-pure/internals/validate-arguments-length.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\nvar arraySort = __webpack_require__(/*! ../internals/array-sort */ \"./node_modules/core-js-pure/internals/array-sort.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nvar safeGetBuiltIn = function (name) {\n  if (!DESCRIPTORS) return global[name];\n  var descriptor = getOwnPropertyDescriptor(global, name);\n  return descriptor && descriptor.value;\n};\n\nvar nativeFetch = safeGetBuiltIn('fetch');\nvar NativeRequest = safeGetBuiltIn('Request');\nvar Headers = safeGetBuiltIn('Headers');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar RegExp = global.RegExp;\nvar TypeError = global.TypeError;\nvar decodeURIComponent = global.decodeURIComponent;\nvar encodeURIComponent = global.encodeURIComponent;\nvar charAt = uncurryThis(''.charAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar splice = uncurryThis([].splice);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n  return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n  try {\n    return decodeURIComponent(sequence);\n  } catch (error) {\n    return sequence;\n  }\n};\n\nvar deserialize = function (it) {\n  var result = replace(it, plus, ' ');\n  var bytes = 4;\n  try {\n    return decodeURIComponent(result);\n  } catch (error) {\n    while (bytes) {\n      result = replace(result, percentSequence(bytes--), percentDecode);\n    }\n    return result;\n  }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replacements = {\n  '!': '%21',\n  \"'\": '%27',\n  '(': '%28',\n  ')': '%29',\n  '~': '%7E',\n  '%20': '+'\n};\n\nvar replacer = function (match) {\n  return replacements[match];\n};\n\nvar serialize = function (it) {\n  return replace(encodeURIComponent(it), find, replacer);\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n  setInternalState(this, {\n    type: URL_SEARCH_PARAMS_ITERATOR,\n    iterator: getIterator(getInternalParamsState(params).entries),\n    kind: kind\n  });\n}, 'Iterator', function next() {\n  var state = getInternalIteratorState(this);\n  var kind = state.kind;\n  var step = state.iterator.next();\n  var entry = step.value;\n  if (!step.done) {\n    step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n  } return step;\n}, true);\n\nvar URLSearchParamsState = function (init) {\n  this.entries = [];\n  this.url = null;\n\n  if (init !== undefined) {\n    if (isObject(init)) this.parseObject(init);\n    else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\n  }\n};\n\nURLSearchParamsState.prototype = {\n  type: URL_SEARCH_PARAMS,\n  bindURL: function (url) {\n    this.url = url;\n    this.update();\n  },\n  parseObject: function (object) {\n    var iteratorMethod = getIteratorMethod(object);\n    var iterator, next, step, entryIterator, entryNext, first, second;\n\n    if (iteratorMethod) {\n      iterator = getIterator(object, iteratorMethod);\n      next = iterator.next;\n      while (!(step = call(next, iterator)).done) {\n        entryIterator = getIterator(anObject(step.value));\n        entryNext = entryIterator.next;\n        if (\n          (first = call(entryNext, entryIterator)).done ||\n          (second = call(entryNext, entryIterator)).done ||\n          !call(entryNext, entryIterator).done\n        ) throw TypeError('Expected sequence with length 2');\n        push(this.entries, { key: $toString(first.value), value: $toString(second.value) });\n      }\n    } else for (var key in object) if (hasOwn(object, key)) {\n      push(this.entries, { key: key, value: $toString(object[key]) });\n    }\n  },\n  parseQuery: function (query) {\n    if (query) {\n      var attributes = split(query, '&');\n      var index = 0;\n      var attribute, entry;\n      while (index < attributes.length) {\n        attribute = attributes[index++];\n        if (attribute.length) {\n          entry = split(attribute, '=');\n          push(this.entries, {\n            key: deserialize(shift(entry)),\n            value: deserialize(join(entry, '='))\n          });\n        }\n      }\n    }\n  },\n  serialize: function () {\n    var entries = this.entries;\n    var result = [];\n    var index = 0;\n    var entry;\n    while (index < entries.length) {\n      entry = entries[index++];\n      push(result, serialize(entry.key) + '=' + serialize(entry.value));\n    } return join(result, '&');\n  },\n  update: function () {\n    this.entries.length = 0;\n    this.parseQuery(this.url.query);\n  },\n  updateURL: function () {\n    if (this.url) this.url.update();\n  }\n};\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n  anInstance(this, URLSearchParamsPrototype);\n  var init = arguments.length > 0 ? arguments[0] : undefined;\n  setInternalState(this, new URLSearchParamsState(init));\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\ndefineBuiltIns(URLSearchParamsPrototype, {\n  // `URLSearchParams.prototype.append` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n  append: function append(name, value) {\n    validateArgumentsLength(arguments.length, 2);\n    var state = getInternalParamsState(this);\n    push(state.entries, { key: $toString(name), value: $toString(value) });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.delete` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n  'delete': function (name) {\n    validateArgumentsLength(arguments.length, 1);\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    var key = $toString(name);\n    var index = 0;\n    while (index < entries.length) {\n      if (entries[index].key === key) splice(entries, index, 1);\n      else index++;\n    }\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.get` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n  get: function get(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = $toString(name);\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) return entries[index].value;\n    }\n    return null;\n  },\n  // `URLSearchParams.prototype.getAll` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n  getAll: function getAll(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = $toString(name);\n    var result = [];\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) push(result, entries[index].value);\n    }\n    return result;\n  },\n  // `URLSearchParams.prototype.has` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n  has: function has(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = $toString(name);\n    var index = 0;\n    while (index < entries.length) {\n      if (entries[index++].key === key) return true;\n    }\n    return false;\n  },\n  // `URLSearchParams.prototype.set` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n  set: function set(name, value) {\n    validateArgumentsLength(arguments.length, 1);\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    var found = false;\n    var key = $toString(name);\n    var val = $toString(value);\n    var index = 0;\n    var entry;\n    for (; index < entries.length; index++) {\n      entry = entries[index];\n      if (entry.key === key) {\n        if (found) splice(entries, index--, 1);\n        else {\n          found = true;\n          entry.value = val;\n        }\n      }\n    }\n    if (!found) push(entries, { key: key, value: val });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.sort` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n  sort: function sort() {\n    var state = getInternalParamsState(this);\n    arraySort(state.entries, function (a, b) {\n      return a.key > b.key ? 1 : -1;\n    });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.forEach` method\n  forEach: function forEach(callback /* , thisArg */) {\n    var entries = getInternalParamsState(this).entries;\n    var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\n    var index = 0;\n    var entry;\n    while (index < entries.length) {\n      entry = entries[index++];\n      boundFunction(entry.value, entry.key, this);\n    }\n  },\n  // `URLSearchParams.prototype.keys` method\n  keys: function keys() {\n    return new URLSearchParamsIterator(this, 'keys');\n  },\n  // `URLSearchParams.prototype.values` method\n  values: function values() {\n    return new URLSearchParamsIterator(this, 'values');\n  },\n  // `URLSearchParams.prototype.entries` method\n  entries: function entries() {\n    return new URLSearchParamsIterator(this, 'entries');\n  }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\ndefineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\ndefineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {\n  return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {\n  URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n  var headersHas = uncurryThis(HeadersPrototype.has);\n  var headersSet = uncurryThis(HeadersPrototype.set);\n\n  var wrapRequestOptions = function (init) {\n    if (isObject(init)) {\n      var body = init.body;\n      var headers;\n      if (classof(body) === URL_SEARCH_PARAMS) {\n        headers = init.headers ? new Headers(init.headers) : new Headers();\n        if (!headersHas(headers, 'content-type')) {\n          headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n        return create(init, {\n          body: createPropertyDescriptor(0, $toString(body)),\n          headers: createPropertyDescriptor(0, headers)\n        });\n      }\n    } return init;\n  };\n\n  if (isCallable(nativeFetch)) {\n    $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {\n      fetch: function fetch(input /* , init */) {\n        return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n      }\n    });\n  }\n\n  if (isCallable(NativeRequest)) {\n    var RequestConstructor = function Request(input /* , init */) {\n      anInstance(this, RequestPrototype);\n      return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n    };\n\n    RequestPrototype.constructor = RequestConstructor;\n    RequestConstructor.prototype = RequestPrototype;\n\n    $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {\n      Request: RequestConstructor\n    });\n  }\n}\n\nmodule.exports = {\n  URLSearchParams: URLSearchParamsConstructor,\n  getState: getInternalParamsState\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/web.url-search-params.constructor.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/web.url-search-params.js":
/*!********************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/web.url-search-params.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(/*! ../modules/web.url-search-params.constructor */ \"./node_modules/core-js-pure/modules/web.url-search-params.constructor.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/web.url-search-params.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/web.url.constructor.js":
/*!******************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/web.url.constructor.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__webpack_require__(/*! ../modules/es.string.iterator */ \"./node_modules/core-js-pure/modules/es.string.iterator.js\");\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar USE_NATIVE_URL = __webpack_require__(/*! ../internals/url-constructor-detection */ \"./node_modules/core-js-pure/internals/url-constructor-detection.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js-pure/internals/function-bind-context.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js-pure/internals/function-uncurry-this.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js-pure/internals/define-built-in.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js-pure/internals/define-built-in-accessor.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js-pure/internals/an-instance.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js-pure/internals/has-own-property.js\");\nvar assign = __webpack_require__(/*! ../internals/object-assign */ \"./node_modules/core-js-pure/internals/object-assign.js\");\nvar arrayFrom = __webpack_require__(/*! ../internals/array-from */ \"./node_modules/core-js-pure/internals/array-from.js\");\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \"./node_modules/core-js-pure/internals/array-slice-simple.js\");\nvar codeAt = (__webpack_require__(/*! ../internals/string-multibyte */ \"./node_modules/core-js-pure/internals/string-multibyte.js\").codeAt);\nvar toASCII = __webpack_require__(/*! ../internals/string-punycode-to-ascii */ \"./node_modules/core-js-pure/internals/string-punycode-to-ascii.js\");\nvar $toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js-pure/internals/to-string.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js-pure/internals/set-to-string-tag.js\");\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \"./node_modules/core-js-pure/internals/validate-arguments-length.js\");\nvar URLSearchParamsModule = __webpack_require__(/*! ../modules/web.url-search-params.constructor */ \"./node_modules/core-js-pure/modules/web.url-search-params.constructor.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js-pure/internals/internal-state.js\");\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\n\nvar NativeURL = global.URL;\nvar TypeError = global.TypeError;\nvar parseInt = global.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar toLowerCase = uncurryThis(''.toLowerCase);\nvar unshift = uncurryThis([].unshift);\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+|[\\u0000-\\u0020]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-parser\nvar parseIPv4 = function (input) {\n  var parts = split(input, '.');\n  var partsLength, numbers, index, part, radix, number, ipv4;\n  if (parts.length && parts[parts.length - 1] == '') {\n    parts.length--;\n  }\n  partsLength = parts.length;\n  if (partsLength > 4) return input;\n  numbers = [];\n  for (index = 0; index < partsLength; index++) {\n    part = parts[index];\n    if (part == '') return input;\n    radix = 10;\n    if (part.length > 1 && charAt(part, 0) == '0') {\n      radix = exec(HEX_START, part) ? 16 : 8;\n      part = stringSlice(part, radix == 8 ? 1 : 2);\n    }\n    if (part === '') {\n      number = 0;\n    } else {\n      if (!exec(radix == 10 ? DEC : radix == 8 ? OCT : HEX, part)) return input;\n      number = parseInt(part, radix);\n    }\n    push(numbers, number);\n  }\n  for (index = 0; index < partsLength; index++) {\n    number = numbers[index];\n    if (index == partsLength - 1) {\n      if (number >= pow(256, 5 - partsLength)) return null;\n    } else if (number > 255) return null;\n  }\n  ipv4 = pop(numbers);\n  for (index = 0; index < numbers.length; index++) {\n    ipv4 += numbers[index] * pow(256, 3 - index);\n  }\n  return ipv4;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv6-parser\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n  var address = [0, 0, 0, 0, 0, 0, 0, 0];\n  var pieceIndex = 0;\n  var compress = null;\n  var pointer = 0;\n  var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n  var chr = function () {\n    return charAt(input, pointer);\n  };\n\n  if (chr() == ':') {\n    if (charAt(input, 1) != ':') return;\n    pointer += 2;\n    pieceIndex++;\n    compress = pieceIndex;\n  }\n  while (chr()) {\n    if (pieceIndex == 8) return;\n    if (chr() == ':') {\n      if (compress !== null) return;\n      pointer++;\n      pieceIndex++;\n      compress = pieceIndex;\n      continue;\n    }\n    value = length = 0;\n    while (length < 4 && exec(HEX, chr())) {\n      value = value * 16 + parseInt(chr(), 16);\n      pointer++;\n      length++;\n    }\n    if (chr() == '.') {\n      if (length == 0) return;\n      pointer -= length;\n      if (pieceIndex > 6) return;\n      numbersSeen = 0;\n      while (chr()) {\n        ipv4Piece = null;\n        if (numbersSeen > 0) {\n          if (chr() == '.' && numbersSeen < 4) pointer++;\n          else return;\n        }\n        if (!exec(DIGIT, chr())) return;\n        while (exec(DIGIT, chr())) {\n          number = parseInt(chr(), 10);\n          if (ipv4Piece === null) ipv4Piece = number;\n          else if (ipv4Piece == 0) return;\n          else ipv4Piece = ipv4Piece * 10 + number;\n          if (ipv4Piece > 255) return;\n          pointer++;\n        }\n        address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n        numbersSeen++;\n        if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n      }\n      if (numbersSeen != 4) return;\n      break;\n    } else if (chr() == ':') {\n      pointer++;\n      if (!chr()) return;\n    } else if (chr()) return;\n    address[pieceIndex++] = value;\n  }\n  if (compress !== null) {\n    swaps = pieceIndex - compress;\n    pieceIndex = 7;\n    while (pieceIndex != 0 && swaps > 0) {\n      swap = address[pieceIndex];\n      address[pieceIndex--] = address[compress + swaps - 1];\n      address[compress + --swaps] = swap;\n    }\n  } else if (pieceIndex != 8) return;\n  return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n  var maxIndex = null;\n  var maxLength = 1;\n  var currStart = null;\n  var currLength = 0;\n  var index = 0;\n  for (; index < 8; index++) {\n    if (ipv6[index] !== 0) {\n      if (currLength > maxLength) {\n        maxIndex = currStart;\n        maxLength = currLength;\n      }\n      currStart = null;\n      currLength = 0;\n    } else {\n      if (currStart === null) currStart = index;\n      ++currLength;\n    }\n  }\n  if (currLength > maxLength) {\n    maxIndex = currStart;\n    maxLength = currLength;\n  }\n  return maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n  var result, index, compress, ignore0;\n  // ipv4\n  if (typeof host == 'number') {\n    result = [];\n    for (index = 0; index < 4; index++) {\n      unshift(result, host % 256);\n      host = floor(host / 256);\n    } return join(result, '.');\n  // ipv6\n  } else if (typeof host == 'object') {\n    result = '';\n    compress = findLongestZeroSequence(host);\n    for (index = 0; index < 8; index++) {\n      if (ignore0 && host[index] === 0) continue;\n      if (ignore0) ignore0 = false;\n      if (compress === index) {\n        result += index ? ':' : '::';\n        ignore0 = true;\n      } else {\n        result += numberToString(host[index], 16);\n        if (index < 7) result += ':';\n      }\n    }\n    return '[' + result + ']';\n  } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n  ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n  '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n  '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n  var code = codeAt(chr, 0);\n  return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\n};\n\n// https://url.spec.whatwg.org/#special-scheme\nvar specialSchemes = {\n  ftp: 21,\n  file: null,\n  http: 80,\n  https: 443,\n  ws: 80,\n  wss: 443\n};\n\n// https://url.spec.whatwg.org/#windows-drive-letter\nvar isWindowsDriveLetter = function (string, normalized) {\n  var second;\n  return string.length == 2 && exec(ALPHA, charAt(string, 0))\n    && ((second = charAt(string, 1)) == ':' || (!normalized && second == '|'));\n};\n\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\nvar startsWithWindowsDriveLetter = function (string) {\n  var third;\n  return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\n    string.length == 2 ||\n    ((third = charAt(string, 2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n  );\n};\n\n// https://url.spec.whatwg.org/#single-dot-path-segment\nvar isSingleDot = function (segment) {\n  return segment === '.' || toLowerCase(segment) === '%2e';\n};\n\n// https://url.spec.whatwg.org/#double-dot-path-segment\nvar isDoubleDot = function (segment) {\n  segment = toLowerCase(segment);\n  return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\nvar URLState = function (url, isBase, base) {\n  var urlString = $toString(url);\n  var baseState, failure, searchParams;\n  if (isBase) {\n    failure = this.parse(urlString);\n    if (failure) throw TypeError(failure);\n    this.searchParams = null;\n  } else {\n    if (base !== undefined) baseState = new URLState(base, true);\n    failure = this.parse(urlString, null, baseState);\n    if (failure) throw TypeError(failure);\n    searchParams = getInternalSearchParamsState(new URLSearchParams());\n    searchParams.bindURL(this);\n    this.searchParams = searchParams;\n  }\n};\n\nURLState.prototype = {\n  type: 'URL',\n  // https://url.spec.whatwg.org/#url-parsing\n  // eslint-disable-next-line max-statements -- TODO\n  parse: function (input, stateOverride, base) {\n    var url = this;\n    var state = stateOverride || SCHEME_START;\n    var pointer = 0;\n    var buffer = '';\n    var seenAt = false;\n    var seenBracket = false;\n    var seenPasswordToken = false;\n    var codePoints, chr, bufferCodePoints, failure;\n\n    input = $toString(input);\n\n    if (!stateOverride) {\n      url.scheme = '';\n      url.username = '';\n      url.password = '';\n      url.host = null;\n      url.port = null;\n      url.path = [];\n      url.query = null;\n      url.fragment = null;\n      url.cannotBeABaseURL = false;\n      input = replace(input, LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n    }\n\n    input = replace(input, TAB_AND_NEW_LINE, '');\n\n    codePoints = arrayFrom(input);\n\n    while (pointer <= codePoints.length) {\n      chr = codePoints[pointer];\n      switch (state) {\n        case SCHEME_START:\n          if (chr && exec(ALPHA, chr)) {\n            buffer += toLowerCase(chr);\n            state = SCHEME;\n          } else if (!stateOverride) {\n            state = NO_SCHEME;\n            continue;\n          } else return INVALID_SCHEME;\n          break;\n\n        case SCHEME:\n          if (chr && (exec(ALPHANUMERIC, chr) || chr == '+' || chr == '-' || chr == '.')) {\n            buffer += toLowerCase(chr);\n          } else if (chr == ':') {\n            if (stateOverride && (\n              (url.isSpecial() != hasOwn(specialSchemes, buffer)) ||\n              (buffer == 'file' && (url.includesCredentials() || url.port !== null)) ||\n              (url.scheme == 'file' && !url.host)\n            )) return;\n            url.scheme = buffer;\n            if (stateOverride) {\n              if (url.isSpecial() && specialSchemes[url.scheme] == url.port) url.port = null;\n              return;\n            }\n            buffer = '';\n            if (url.scheme == 'file') {\n              state = FILE;\n            } else if (url.isSpecial() && base && base.scheme == url.scheme) {\n              state = SPECIAL_RELATIVE_OR_AUTHORITY;\n            } else if (url.isSpecial()) {\n              state = SPECIAL_AUTHORITY_SLASHES;\n            } else if (codePoints[pointer + 1] == '/') {\n              state = PATH_OR_AUTHORITY;\n              pointer++;\n            } else {\n              url.cannotBeABaseURL = true;\n              push(url.path, '');\n              state = CANNOT_BE_A_BASE_URL_PATH;\n            }\n          } else if (!stateOverride) {\n            buffer = '';\n            state = NO_SCHEME;\n            pointer = 0;\n            continue;\n          } else return INVALID_SCHEME;\n          break;\n\n        case NO_SCHEME:\n          if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME;\n          if (base.cannotBeABaseURL && chr == '#') {\n            url.scheme = base.scheme;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n            url.fragment = '';\n            url.cannotBeABaseURL = true;\n            state = FRAGMENT;\n            break;\n          }\n          state = base.scheme == 'file' ? FILE : RELATIVE;\n          continue;\n\n        case SPECIAL_RELATIVE_OR_AUTHORITY:\n          if (chr == '/' && codePoints[pointer + 1] == '/') {\n            state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n            pointer++;\n          } else {\n            state = RELATIVE;\n            continue;\n          } break;\n\n        case PATH_OR_AUTHORITY:\n          if (chr == '/') {\n            state = AUTHORITY;\n            break;\n          } else {\n            state = PATH;\n            continue;\n          }\n\n        case RELATIVE:\n          url.scheme = base.scheme;\n          if (chr == EOF) {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n          } else if (chr == '/' || (chr == '\\\\' && url.isSpecial())) {\n            state = RELATIVE_SLASH;\n          } else if (chr == '?') {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = '';\n            state = QUERY;\n          } else if (chr == '#') {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n            url.fragment = '';\n            state = FRAGMENT;\n          } else {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.path.length--;\n            state = PATH;\n            continue;\n          } break;\n\n        case RELATIVE_SLASH:\n          if (url.isSpecial() && (chr == '/' || chr == '\\\\')) {\n            state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n          } else if (chr == '/') {\n            state = AUTHORITY;\n          } else {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            state = PATH;\n            continue;\n          } break;\n\n        case SPECIAL_AUTHORITY_SLASHES:\n          state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n          if (chr != '/' || charAt(buffer, pointer + 1) != '/') continue;\n          pointer++;\n          break;\n\n        case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n          if (chr != '/' && chr != '\\\\') {\n            state = AUTHORITY;\n            continue;\n          } break;\n\n        case AUTHORITY:\n          if (chr == '@') {\n            if (seenAt) buffer = '%40' + buffer;\n            seenAt = true;\n            bufferCodePoints = arrayFrom(buffer);\n            for (var i = 0; i < bufferCodePoints.length; i++) {\n              var codePoint = bufferCodePoints[i];\n              if (codePoint == ':' && !seenPasswordToken) {\n                seenPasswordToken = true;\n                continue;\n              }\n              var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n              if (seenPasswordToken) url.password += encodedCodePoints;\n              else url.username += encodedCodePoints;\n            }\n            buffer = '';\n          } else if (\n            chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n            (chr == '\\\\' && url.isSpecial())\n          ) {\n            if (seenAt && buffer == '') return INVALID_AUTHORITY;\n            pointer -= arrayFrom(buffer).length + 1;\n            buffer = '';\n            state = HOST;\n          } else buffer += chr;\n          break;\n\n        case HOST:\n        case HOSTNAME:\n          if (stateOverride && url.scheme == 'file') {\n            state = FILE_HOST;\n            continue;\n          } else if (chr == ':' && !seenBracket) {\n            if (buffer == '') return INVALID_HOST;\n            failure = url.parseHost(buffer);\n            if (failure) return failure;\n            buffer = '';\n            state = PORT;\n            if (stateOverride == HOSTNAME) return;\n          } else if (\n            chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n            (chr == '\\\\' && url.isSpecial())\n          ) {\n            if (url.isSpecial() && buffer == '') return INVALID_HOST;\n            if (stateOverride && buffer == '' && (url.includesCredentials() || url.port !== null)) return;\n            failure = url.parseHost(buffer);\n            if (failure) return failure;\n            buffer = '';\n            state = PATH_START;\n            if (stateOverride) return;\n            continue;\n          } else {\n            if (chr == '[') seenBracket = true;\n            else if (chr == ']') seenBracket = false;\n            buffer += chr;\n          } break;\n\n        case PORT:\n          if (exec(DIGIT, chr)) {\n            buffer += chr;\n          } else if (\n            chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n            (chr == '\\\\' && url.isSpecial()) ||\n            stateOverride\n          ) {\n            if (buffer != '') {\n              var port = parseInt(buffer, 10);\n              if (port > 0xFFFF) return INVALID_PORT;\n              url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\n              buffer = '';\n            }\n            if (stateOverride) return;\n            state = PATH_START;\n            continue;\n          } else return INVALID_PORT;\n          break;\n\n        case FILE:\n          url.scheme = 'file';\n          if (chr == '/' || chr == '\\\\') state = FILE_SLASH;\n          else if (base && base.scheme == 'file') {\n            if (chr == EOF) {\n              url.host = base.host;\n              url.path = arraySlice(base.path);\n              url.query = base.query;\n            } else if (chr == '?') {\n              url.host = base.host;\n              url.path = arraySlice(base.path);\n              url.query = '';\n              state = QUERY;\n            } else if (chr == '#') {\n              url.host = base.host;\n              url.path = arraySlice(base.path);\n              url.query = base.query;\n              url.fragment = '';\n              state = FRAGMENT;\n            } else {\n              if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n                url.host = base.host;\n                url.path = arraySlice(base.path);\n                url.shortenPath();\n              }\n              state = PATH;\n              continue;\n            }\n          } else {\n            state = PATH;\n            continue;\n          } break;\n\n        case FILE_SLASH:\n          if (chr == '/' || chr == '\\\\') {\n            state = FILE_HOST;\n            break;\n          }\n          if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n            if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n            else url.host = base.host;\n          }\n          state = PATH;\n          continue;\n\n        case FILE_HOST:\n          if (chr == EOF || chr == '/' || chr == '\\\\' || chr == '?' || chr == '#') {\n            if (!stateOverride && isWindowsDriveLetter(buffer)) {\n              state = PATH;\n            } else if (buffer == '') {\n              url.host = '';\n              if (stateOverride) return;\n              state = PATH_START;\n            } else {\n              failure = url.parseHost(buffer);\n              if (failure) return failure;\n              if (url.host == 'localhost') url.host = '';\n              if (stateOverride) return;\n              buffer = '';\n              state = PATH_START;\n            } continue;\n          } else buffer += chr;\n          break;\n\n        case PATH_START:\n          if (url.isSpecial()) {\n            state = PATH;\n            if (chr != '/' && chr != '\\\\') continue;\n          } else if (!stateOverride && chr == '?') {\n            url.query = '';\n            state = QUERY;\n          } else if (!stateOverride && chr == '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr != EOF) {\n            state = PATH;\n            if (chr != '/') continue;\n          } break;\n\n        case PATH:\n          if (\n            chr == EOF || chr == '/' ||\n            (chr == '\\\\' && url.isSpecial()) ||\n            (!stateOverride && (chr == '?' || chr == '#'))\n          ) {\n            if (isDoubleDot(buffer)) {\n              url.shortenPath();\n              if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n                push(url.path, '');\n              }\n            } else if (isSingleDot(buffer)) {\n              if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n                push(url.path, '');\n              }\n            } else {\n              if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n                if (url.host) url.host = '';\n                buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\n              }\n              push(url.path, buffer);\n            }\n            buffer = '';\n            if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {\n              while (url.path.length > 1 && url.path[0] === '') {\n                shift(url.path);\n              }\n            }\n            if (chr == '?') {\n              url.query = '';\n              state = QUERY;\n            } else if (chr == '#') {\n              url.fragment = '';\n              state = FRAGMENT;\n            }\n          } else {\n            buffer += percentEncode(chr, pathPercentEncodeSet);\n          } break;\n\n        case CANNOT_BE_A_BASE_URL_PATH:\n          if (chr == '?') {\n            url.query = '';\n            state = QUERY;\n          } else if (chr == '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr != EOF) {\n            url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n          } break;\n\n        case QUERY:\n          if (!stateOverride && chr == '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr != EOF) {\n            if (chr == \"'\" && url.isSpecial()) url.query += '%27';\n            else if (chr == '#') url.query += '%23';\n            else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n          } break;\n\n        case FRAGMENT:\n          if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n          break;\n      }\n\n      pointer++;\n    }\n  },\n  // https://url.spec.whatwg.org/#host-parsing\n  parseHost: function (input) {\n    var result, codePoints, index;\n    if (charAt(input, 0) == '[') {\n      if (charAt(input, input.length - 1) != ']') return INVALID_HOST;\n      result = parseIPv6(stringSlice(input, 1, -1));\n      if (!result) return INVALID_HOST;\n      this.host = result;\n    // opaque host\n    } else if (!this.isSpecial()) {\n      if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n      result = '';\n      codePoints = arrayFrom(input);\n      for (index = 0; index < codePoints.length; index++) {\n        result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n      }\n      this.host = result;\n    } else {\n      input = toASCII(input);\n      if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n      result = parseIPv4(input);\n      if (result === null) return INVALID_HOST;\n      this.host = result;\n    }\n  },\n  // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n  cannotHaveUsernamePasswordPort: function () {\n    return !this.host || this.cannotBeABaseURL || this.scheme == 'file';\n  },\n  // https://url.spec.whatwg.org/#include-credentials\n  includesCredentials: function () {\n    return this.username != '' || this.password != '';\n  },\n  // https://url.spec.whatwg.org/#is-special\n  isSpecial: function () {\n    return hasOwn(specialSchemes, this.scheme);\n  },\n  // https://url.spec.whatwg.org/#shorten-a-urls-path\n  shortenPath: function () {\n    var path = this.path;\n    var pathSize = path.length;\n    if (pathSize && (this.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n      path.length--;\n    }\n  },\n  // https://url.spec.whatwg.org/#concept-url-serializer\n  serialize: function () {\n    var url = this;\n    var scheme = url.scheme;\n    var username = url.username;\n    var password = url.password;\n    var host = url.host;\n    var port = url.port;\n    var path = url.path;\n    var query = url.query;\n    var fragment = url.fragment;\n    var output = scheme + ':';\n    if (host !== null) {\n      output += '//';\n      if (url.includesCredentials()) {\n        output += username + (password ? ':' + password : '') + '@';\n      }\n      output += serializeHost(host);\n      if (port !== null) output += ':' + port;\n    } else if (scheme == 'file') output += '//';\n    output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n    if (query !== null) output += '?' + query;\n    if (fragment !== null) output += '#' + fragment;\n    return output;\n  },\n  // https://url.spec.whatwg.org/#dom-url-href\n  setHref: function (href) {\n    var failure = this.parse(href);\n    if (failure) throw TypeError(failure);\n    this.searchParams.update();\n  },\n  // https://url.spec.whatwg.org/#dom-url-origin\n  getOrigin: function () {\n    var scheme = this.scheme;\n    var port = this.port;\n    if (scheme == 'blob') try {\n      return new URLConstructor(scheme.path[0]).origin;\n    } catch (error) {\n      return 'null';\n    }\n    if (scheme == 'file' || !this.isSpecial()) return 'null';\n    return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\n  },\n  // https://url.spec.whatwg.org/#dom-url-protocol\n  getProtocol: function () {\n    return this.scheme + ':';\n  },\n  setProtocol: function (protocol) {\n    this.parse($toString(protocol) + ':', SCHEME_START);\n  },\n  // https://url.spec.whatwg.org/#dom-url-username\n  getUsername: function () {\n    return this.username;\n  },\n  setUsername: function (username) {\n    var codePoints = arrayFrom($toString(username));\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    this.username = '';\n    for (var i = 0; i < codePoints.length; i++) {\n      this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n    }\n  },\n  // https://url.spec.whatwg.org/#dom-url-password\n  getPassword: function () {\n    return this.password;\n  },\n  setPassword: function (password) {\n    var codePoints = arrayFrom($toString(password));\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    this.password = '';\n    for (var i = 0; i < codePoints.length; i++) {\n      this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n    }\n  },\n  // https://url.spec.whatwg.org/#dom-url-host\n  getHost: function () {\n    var host = this.host;\n    var port = this.port;\n    return host === null ? ''\n      : port === null ? serializeHost(host)\n      : serializeHost(host) + ':' + port;\n  },\n  setHost: function (host) {\n    if (this.cannotBeABaseURL) return;\n    this.parse(host, HOST);\n  },\n  // https://url.spec.whatwg.org/#dom-url-hostname\n  getHostname: function () {\n    var host = this.host;\n    return host === null ? '' : serializeHost(host);\n  },\n  setHostname: function (hostname) {\n    if (this.cannotBeABaseURL) return;\n    this.parse(hostname, HOSTNAME);\n  },\n  // https://url.spec.whatwg.org/#dom-url-port\n  getPort: function () {\n    var port = this.port;\n    return port === null ? '' : $toString(port);\n  },\n  setPort: function (port) {\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    port = $toString(port);\n    if (port == '') this.port = null;\n    else this.parse(port, PORT);\n  },\n  // https://url.spec.whatwg.org/#dom-url-pathname\n  getPathname: function () {\n    var path = this.path;\n    return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n  },\n  setPathname: function (pathname) {\n    if (this.cannotBeABaseURL) return;\n    this.path = [];\n    this.parse(pathname, PATH_START);\n  },\n  // https://url.spec.whatwg.org/#dom-url-search\n  getSearch: function () {\n    var query = this.query;\n    return query ? '?' + query : '';\n  },\n  setSearch: function (search) {\n    search = $toString(search);\n    if (search == '') {\n      this.query = null;\n    } else {\n      if ('?' == charAt(search, 0)) search = stringSlice(search, 1);\n      this.query = '';\n      this.parse(search, QUERY);\n    }\n    this.searchParams.update();\n  },\n  // https://url.spec.whatwg.org/#dom-url-searchparams\n  getSearchParams: function () {\n    return this.searchParams.facade;\n  },\n  // https://url.spec.whatwg.org/#dom-url-hash\n  getHash: function () {\n    var fragment = this.fragment;\n    return fragment ? '#' + fragment : '';\n  },\n  setHash: function (hash) {\n    hash = $toString(hash);\n    if (hash == '') {\n      this.fragment = null;\n      return;\n    }\n    if ('#' == charAt(hash, 0)) hash = stringSlice(hash, 1);\n    this.fragment = '';\n    this.parse(hash, FRAGMENT);\n  },\n  update: function () {\n    this.query = this.searchParams.serialize() || null;\n  }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n  var that = anInstance(this, URLPrototype);\n  var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\n  var state = setInternalState(that, new URLState(url, false, base));\n  if (!DESCRIPTORS) {\n    that.href = state.serialize();\n    that.origin = state.getOrigin();\n    that.protocol = state.getProtocol();\n    that.username = state.getUsername();\n    that.password = state.getPassword();\n    that.host = state.getHost();\n    that.hostname = state.getHostname();\n    that.port = state.getPort();\n    that.pathname = state.getPathname();\n    that.search = state.getSearch();\n    that.searchParams = state.getSearchParams();\n    that.hash = state.getHash();\n  }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar accessorDescriptor = function (getter, setter) {\n  return {\n    get: function () {\n      return getInternalURLState(this)[getter]();\n    },\n    set: setter && function (value) {\n      return getInternalURLState(this)[setter](value);\n    },\n    configurable: true,\n    enumerable: true\n  };\n};\n\nif (DESCRIPTORS) {\n  // `URL.prototype.href` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-href\n  defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));\n  // `URL.prototype.origin` getter\n  // https://url.spec.whatwg.org/#dom-url-origin\n  defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));\n  // `URL.prototype.protocol` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-protocol\n  defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));\n  // `URL.prototype.username` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-username\n  defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));\n  // `URL.prototype.password` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-password\n  defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));\n  // `URL.prototype.host` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-host\n  defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));\n  // `URL.prototype.hostname` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-hostname\n  defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));\n  // `URL.prototype.port` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-port\n  defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));\n  // `URL.prototype.pathname` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-pathname\n  defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));\n  // `URL.prototype.search` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-search\n  defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));\n  // `URL.prototype.searchParams` getter\n  // https://url.spec.whatwg.org/#dom-url-searchparams\n  defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));\n  // `URL.prototype.hash` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-hash\n  defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\ndefineBuiltIn(URLPrototype, 'toJSON', function toJSON() {\n  return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\ndefineBuiltIn(URLPrototype, 'toString', function toString() {\n  return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\nif (NativeURL) {\n  var nativeCreateObjectURL = NativeURL.createObjectURL;\n  var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n  // `URL.createObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n  if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n  // `URL.revokeObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n  if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n  URL: URLConstructor\n});\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/web.url.constructor.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/web.url.js":
/*!******************************************************!*\
  !*** ./node_modules/core-js-pure/modules/web.url.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(/*! ../modules/web.url.constructor */ \"./node_modules/core-js-pure/modules/web.url.constructor.js\");\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/web.url.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/modules/web.url.to-json.js":
/*!**************************************************************!*\
  !*** ./node_modules/core-js-pure/modules/web.url.to-json.js ***!
  \**************************************************************/
/***/ (function() {

eval("// empty\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/modules/web.url.to-json.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/array/from.js":
/*!********************************************************!*\
  !*** ./node_modules/core-js-pure/stable/array/from.js ***!
  \********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/array/from */ \"./node_modules/core-js-pure/es/array/from.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/array/from.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/array/is-array.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/array/is-array.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/array/is-array */ \"./node_modules/core-js-pure/es/array/is-array.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/array/is-array.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/array/virtual/for-each.js":
/*!********************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/array/virtual/for-each.js ***!
  \********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../../es/array/virtual/for-each */ \"./node_modules/core-js-pure/es/array/virtual/for-each.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/array/virtual/for-each.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/get-iterator-method.js":
/*!*****************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/get-iterator-method.js ***!
  \*****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../es/get-iterator-method */ \"./node_modules/core-js-pure/es/get-iterator-method.js\");\n__webpack_require__(/*! ../modules/web.dom-collections.iterator */ \"./node_modules/core-js-pure/modules/web.dom-collections.iterator.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/get-iterator-method.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/instance/bind.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/stable/instance/bind.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/instance/bind */ \"./node_modules/core-js-pure/es/instance/bind.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/instance/bind.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/instance/concat.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/instance/concat.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/instance/concat */ \"./node_modules/core-js-pure/es/instance/concat.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/instance/concat.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/instance/every.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/instance/every.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/instance/every */ \"./node_modules/core-js-pure/es/instance/every.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/instance/every.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/instance/filter.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/instance/filter.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/instance/filter */ \"./node_modules/core-js-pure/es/instance/filter.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/instance/filter.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/instance/find-index.js":
/*!*****************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/instance/find-index.js ***!
  \*****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/instance/find-index */ \"./node_modules/core-js-pure/es/instance/find-index.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/instance/find-index.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/instance/for-each.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/instance/for-each.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../../modules/web.dom-collections.iterator */ \"./node_modules/core-js-pure/modules/web.dom-collections.iterator.js\");\nvar classof = __webpack_require__(/*! ../../internals/classof */ \"./node_modules/core-js-pure/internals/classof.js\");\nvar hasOwn = __webpack_require__(/*! ../../internals/has-own-property */ \"./node_modules/core-js-pure/internals/has-own-property.js\");\nvar isPrototypeOf = __webpack_require__(/*! ../../internals/object-is-prototype-of */ \"./node_modules/core-js-pure/internals/object-is-prototype-of.js\");\nvar method = __webpack_require__(/*! ../array/virtual/for-each */ \"./node_modules/core-js-pure/stable/array/virtual/for-each.js\");\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n  DOMTokenList: true,\n  NodeList: true\n};\n\nmodule.exports = function (it) {\n  var own = it.forEach;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.forEach)\n    || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/instance/for-each.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/instance/index-of.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/instance/index-of.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/instance/index-of */ \"./node_modules/core-js-pure/es/instance/index-of.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/instance/index-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/instance/map.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js-pure/stable/instance/map.js ***!
  \**********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/instance/map */ \"./node_modules/core-js-pure/es/instance/map.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/instance/map.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/instance/reduce.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/instance/reduce.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/instance/reduce */ \"./node_modules/core-js-pure/es/instance/reduce.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/instance/reduce.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/instance/slice.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/instance/slice.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/instance/slice */ \"./node_modules/core-js-pure/es/instance/slice.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/instance/slice.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/instance/some.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/stable/instance/some.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/instance/some */ \"./node_modules/core-js-pure/es/instance/some.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/instance/some.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/instance/sort.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/stable/instance/sort.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/instance/sort */ \"./node_modules/core-js-pure/es/instance/sort.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/instance/sort.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/instance/splice.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/instance/splice.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/instance/splice */ \"./node_modules/core-js-pure/es/instance/splice.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/instance/splice.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/instance/starts-with.js":
/*!******************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/instance/starts-with.js ***!
  \******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/instance/starts-with */ \"./node_modules/core-js-pure/es/instance/starts-with.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/instance/starts-with.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/instance/trim.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/stable/instance/trim.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/instance/trim */ \"./node_modules/core-js-pure/es/instance/trim.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/instance/trim.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/json/stringify.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/json/stringify.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/json/stringify */ \"./node_modules/core-js-pure/es/json/stringify.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/json/stringify.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/object/assign.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/stable/object/assign.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/object/assign */ \"./node_modules/core-js-pure/es/object/assign.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/object/assign.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/object/create.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/stable/object/create.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/object/create */ \"./node_modules/core-js-pure/es/object/create.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/object/create.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/object/define-properties.js":
/*!**********************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/object/define-properties.js ***!
  \**********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/object/define-properties */ \"./node_modules/core-js-pure/es/object/define-properties.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/object/define-properties.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/object/define-property.js":
/*!********************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/object/define-property.js ***!
  \********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/object/define-property */ \"./node_modules/core-js-pure/es/object/define-property.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/object/define-property.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/object/entries.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/object/entries.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/object/entries */ \"./node_modules/core-js-pure/es/object/entries.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/object/entries.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/object/get-own-property-descriptor.js":
/*!********************************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/object/get-own-property-descriptor.js ***!
  \********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/object/get-own-property-descriptor */ \"./node_modules/core-js-pure/es/object/get-own-property-descriptor.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/object/get-own-property-descriptor.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/object/get-own-property-descriptors.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/object/get-own-property-descriptors.js ***!
  \*********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/object/get-own-property-descriptors */ \"./node_modules/core-js-pure/es/object/get-own-property-descriptors.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/object/get-own-property-descriptors.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/object/get-own-property-symbols.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/object/get-own-property-symbols.js ***!
  \*****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/object/get-own-property-symbols */ \"./node_modules/core-js-pure/es/object/get-own-property-symbols.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/object/get-own-property-symbols.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/object/get-prototype-of.js":
/*!*********************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/object/get-prototype-of.js ***!
  \*********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/object/get-prototype-of */ \"./node_modules/core-js-pure/es/object/get-prototype-of.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/object/get-prototype-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/object/keys.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js-pure/stable/object/keys.js ***!
  \*********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/object/keys */ \"./node_modules/core-js-pure/es/object/keys.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/object/keys.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/object/set-prototype-of.js":
/*!*********************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/object/set-prototype-of.js ***!
  \*********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/object/set-prototype-of */ \"./node_modules/core-js-pure/es/object/set-prototype-of.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/object/set-prototype-of.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/object/values.js":
/*!***********************************************************!*\
  !*** ./node_modules/core-js-pure/stable/object/values.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/object/values */ \"./node_modules/core-js-pure/es/object/values.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/object/values.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/parse-int.js":
/*!*******************************************************!*\
  !*** ./node_modules/core-js-pure/stable/parse-int.js ***!
  \*******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../es/parse-int */ \"./node_modules/core-js-pure/es/parse-int.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/parse-int.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/reflect/construct.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/reflect/construct.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/reflect/construct */ \"./node_modules/core-js-pure/es/reflect/construct.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/reflect/construct.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/set-timeout.js":
/*!*********************************************************!*\
  !*** ./node_modules/core-js-pure/stable/set-timeout.js ***!
  \*********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../modules/web.timers */ \"./node_modules/core-js-pure/modules/web.timers.js\");\nvar path = __webpack_require__(/*! ../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nmodule.exports = path.setTimeout;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/set-timeout.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/symbol/index.js":
/*!**********************************************************!*\
  !*** ./node_modules/core-js-pure/stable/symbol/index.js ***!
  \**********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/symbol */ \"./node_modules/core-js-pure/es/symbol/index.js\");\n__webpack_require__(/*! ../../modules/web.dom-collections.iterator */ \"./node_modules/core-js-pure/modules/web.dom-collections.iterator.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/symbol/index.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/symbol/iterator.js":
/*!*************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/symbol/iterator.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/symbol/iterator */ \"./node_modules/core-js-pure/es/symbol/iterator.js\");\n__webpack_require__(/*! ../../modules/web.dom-collections.iterator */ \"./node_modules/core-js-pure/modules/web.dom-collections.iterator.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/symbol/iterator.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/symbol/to-primitive.js":
/*!*****************************************************************!*\
  !*** ./node_modules/core-js-pure/stable/symbol/to-primitive.js ***!
  \*****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../es/symbol/to-primitive */ \"./node_modules/core-js-pure/es/symbol/to-primitive.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/symbol/to-primitive.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/stable/url/index.js":
/*!*******************************************************!*\
  !*** ./node_modules/core-js-pure/stable/url/index.js ***!
  \*******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parent = __webpack_require__(/*! ../../web/url */ \"./node_modules/core-js-pure/web/url.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/stable/url/index.js?");

/***/ }),

/***/ "./node_modules/core-js-pure/web/url.js":
/*!**********************************************!*\
  !*** ./node_modules/core-js-pure/web/url.js ***!
  \**********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! ../modules/web.url */ \"./node_modules/core-js-pure/modules/web.url.js\");\n__webpack_require__(/*! ../modules/web.url.to-json */ \"./node_modules/core-js-pure/modules/web.url.to-json.js\");\n__webpack_require__(/*! ../modules/web.url-search-params */ \"./node_modules/core-js-pure/modules/web.url-search-params.js\");\nvar path = __webpack_require__(/*! ../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nmodule.exports = path.URL;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/core-js-pure/web/url.js?");

/***/ }),

/***/ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./src/pages/ReportPage.css":
/*!****************************************************************************************************!*\
  !*** ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./src/pages/ReportPage.css ***!
  \****************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ePhHR7ZlZrsqmAx5ZamU {\\n\\tmargin-top: 10px;\\n\\tmargin-bottom: 10px;\\n}\\n\\n.BYvtJuT3vv6NrLVRZw5g {\\n\\tmargin-top: 20px;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"mainDiv\": \"ePhHR7ZlZrsqmAx5ZamU\",\n\t\"secondaryDiv\": \"BYvtJuT3vv6NrLVRZw5g\"\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://schemaevaluator/./src/pages/ReportPage.css?./node_modules/css-loader/dist/cjs.js??ruleSet%5B1%5D.rules%5B2%5D.use%5B1%5D");

/***/ }),

/***/ "./node_modules/css-loader/dist/runtime/api.js":
/*!*****************************************************!*\
  !*** ./node_modules/css-loader/dist/runtime/api.js ***!
  \*****************************************************/
/***/ (function(module) {

"use strict";
eval("\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n  var list = [];\n\n  // return the list of modules as css string\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = \"\";\n      var needLayer = typeof item[5] !== \"undefined\";\n      if (item[4]) {\n        content += \"@supports (\".concat(item[4], \") {\");\n      }\n      if (item[2]) {\n        content += \"@media \".concat(item[2], \" {\");\n      }\n      if (needLayer) {\n        content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n      }\n      content += cssWithMappingToString(item);\n      if (needLayer) {\n        content += \"}\";\n      }\n      if (item[2]) {\n        content += \"}\";\n      }\n      if (item[4]) {\n        content += \"}\";\n      }\n      return content;\n    }).join(\"\");\n  };\n\n  // import a list of modules into the list\n  list.i = function i(modules, media, dedupe, supports, layer) {\n    if (typeof modules === \"string\") {\n      modules = [[null, modules, undefined]];\n    }\n    var alreadyImportedModules = {};\n    if (dedupe) {\n      for (var k = 0; k < this.length; k++) {\n        var id = this[k][0];\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n    for (var _k = 0; _k < modules.length; _k++) {\n      var item = [].concat(modules[_k]);\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        continue;\n      }\n      if (typeof layer !== \"undefined\") {\n        if (typeof item[5] === \"undefined\") {\n          item[5] = layer;\n        } else {\n          item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n          item[5] = layer;\n        }\n      }\n      if (media) {\n        if (!item[2]) {\n          item[2] = media;\n        } else {\n          item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n          item[2] = media;\n        }\n      }\n      if (supports) {\n        if (!item[4]) {\n          item[4] = \"\".concat(supports);\n        } else {\n          item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n          item[4] = supports;\n        }\n      }\n      list.push(item);\n    }\n  };\n  return list;\n};\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/css-loader/dist/runtime/api.js?");

/***/ }),

/***/ "./node_modules/css-loader/dist/runtime/noSourceMaps.js":
/*!**************************************************************!*\
  !*** ./node_modules/css-loader/dist/runtime/noSourceMaps.js ***!
  \**************************************************************/
/***/ (function(module) {

"use strict";
eval("\n\nmodule.exports = function (i) {\n  return i[1];\n};\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/css-loader/dist/runtime/noSourceMaps.js?");

/***/ }),

/***/ "./node_modules/debug/src/browser.js":
/*!*******************************************!*\
  !*** ./node_modules/debug/src/browser.js ***!
  \*******************************************/
/***/ (function(module, exports, __webpack_require__) {

eval("/* provided dependency */ var process = __webpack_require__(/*! process/browser */ \"./node_modules/process/browser.js\");\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ \"./node_modules/debug/src/common.js\")(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/debug/src/browser.js?");

/***/ }),

/***/ "./node_modules/debug/src/common.js":
/*!******************************************!*\
  !*** ./node_modules/debug/src/common.js ***!
  \******************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = __webpack_require__(/*! ms */ \"./node_modules/ms/index.js\");\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/debug/src/common.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/DragDropManagerImpl.js":
/*!***************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/DragDropManagerImpl.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DragDropManagerImpl\": function() { return /* binding */ DragDropManagerImpl; }\n/* harmony export */ });\n/* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! redux */ \"./node_modules/redux/es/redux.js\");\n/* harmony import */ var _reducers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reducers */ \"./node_modules/dnd-core/dist/esm/reducers/index.js\");\n/* harmony import */ var _actions_dragDrop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./actions/dragDrop */ \"./node_modules/dnd-core/dist/esm/actions/dragDrop/index.js\");\n/* harmony import */ var _DragDropMonitorImpl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./DragDropMonitorImpl */ \"./node_modules/dnd-core/dist/esm/DragDropMonitorImpl.js\");\n/* harmony import */ var _HandlerRegistryImpl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./HandlerRegistryImpl */ \"./node_modules/dnd-core/dist/esm/HandlerRegistryImpl.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\nfunction makeStoreInstance(debugMode) {\n  // TODO: if we ever make a react-native version of this,\n  // we'll need to consider how to pull off dev-tooling\n  var reduxDevTools = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__;\n  return (0,redux__WEBPACK_IMPORTED_MODULE_0__.createStore)(_reducers__WEBPACK_IMPORTED_MODULE_1__.reduce, debugMode && reduxDevTools && reduxDevTools({\n    name: 'dnd-core',\n    instanceId: 'dnd-core'\n  }));\n}\n\nvar DragDropManagerImpl = /*#__PURE__*/function () {\n  function DragDropManagerImpl() {\n    var _this = this;\n\n    var debugMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n    _classCallCheck(this, DragDropManagerImpl);\n\n    this.isSetUp = false;\n\n    this.handleRefCountChange = function () {\n      var shouldSetUp = _this.store.getState().refCount > 0;\n\n      if (_this.backend) {\n        if (shouldSetUp && !_this.isSetUp) {\n          _this.backend.setup();\n\n          _this.isSetUp = true;\n        } else if (!shouldSetUp && _this.isSetUp) {\n          _this.backend.teardown();\n\n          _this.isSetUp = false;\n        }\n      }\n    };\n\n    var store = makeStoreInstance(debugMode);\n    this.store = store;\n    this.monitor = new _DragDropMonitorImpl__WEBPACK_IMPORTED_MODULE_2__.DragDropMonitorImpl(store, new _HandlerRegistryImpl__WEBPACK_IMPORTED_MODULE_3__.HandlerRegistryImpl(store));\n    store.subscribe(this.handleRefCountChange);\n  }\n\n  _createClass(DragDropManagerImpl, [{\n    key: \"receiveBackend\",\n    value: function receiveBackend(backend) {\n      this.backend = backend;\n    }\n  }, {\n    key: \"getMonitor\",\n    value: function getMonitor() {\n      return this.monitor;\n    }\n  }, {\n    key: \"getBackend\",\n    value: function getBackend() {\n      return this.backend;\n    }\n  }, {\n    key: \"getRegistry\",\n    value: function getRegistry() {\n      return this.monitor.registry;\n    }\n  }, {\n    key: \"getActions\",\n    value: function getActions() {\n      /* eslint-disable-next-line @typescript-eslint/no-this-alias */\n      var manager = this;\n      var dispatch = this.store.dispatch;\n\n      function bindActionCreator(actionCreator) {\n        return function () {\n          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n            args[_key] = arguments[_key];\n          }\n\n          var action = actionCreator.apply(manager, args);\n\n          if (typeof action !== 'undefined') {\n            dispatch(action);\n          }\n        };\n      }\n\n      var actions = (0,_actions_dragDrop__WEBPACK_IMPORTED_MODULE_4__.createDragDropActions)(this);\n      return Object.keys(actions).reduce(function (boundActions, key) {\n        var action = actions[key];\n        boundActions[key] = bindActionCreator(action);\n        return boundActions;\n      }, {});\n    }\n  }, {\n    key: \"dispatch\",\n    value: function dispatch(action) {\n      this.store.dispatch(action);\n    }\n  }]);\n\n  return DragDropManagerImpl;\n}();\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/DragDropManagerImpl.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/DragDropMonitorImpl.js":
/*!***************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/DragDropMonitorImpl.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DragDropMonitorImpl\": function() { return /* binding */ DragDropMonitorImpl; }\n/* harmony export */ });\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\n/* harmony import */ var _utils_matchesType__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/matchesType */ \"./node_modules/dnd-core/dist/esm/utils/matchesType.js\");\n/* harmony import */ var _utils_coords__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/coords */ \"./node_modules/dnd-core/dist/esm/utils/coords.js\");\n/* harmony import */ var _utils_dirtiness__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/dirtiness */ \"./node_modules/dnd-core/dist/esm/utils/dirtiness.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\nvar DragDropMonitorImpl = /*#__PURE__*/function () {\n  function DragDropMonitorImpl(store, registry) {\n    _classCallCheck(this, DragDropMonitorImpl);\n\n    this.store = store;\n    this.registry = registry;\n  }\n\n  _createClass(DragDropMonitorImpl, [{\n    key: \"subscribeToStateChange\",\n    value: function subscribeToStateChange(listener) {\n      var _this = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        handlerIds: undefined\n      };\n      var handlerIds = options.handlerIds;\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof listener === 'function', 'listener must be a function.');\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof handlerIds === 'undefined' || Array.isArray(handlerIds), 'handlerIds, when specified, must be an array of strings.');\n      var prevStateId = this.store.getState().stateId;\n\n      var handleChange = function handleChange() {\n        var state = _this.store.getState();\n\n        var currentStateId = state.stateId;\n\n        try {\n          var canSkipListener = currentStateId === prevStateId || currentStateId === prevStateId + 1 && !(0,_utils_dirtiness__WEBPACK_IMPORTED_MODULE_1__.areDirty)(state.dirtyHandlerIds, handlerIds);\n\n          if (!canSkipListener) {\n            listener();\n          }\n        } finally {\n          prevStateId = currentStateId;\n        }\n      };\n\n      return this.store.subscribe(handleChange);\n    }\n  }, {\n    key: \"subscribeToOffsetChange\",\n    value: function subscribeToOffsetChange(listener) {\n      var _this2 = this;\n\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof listener === 'function', 'listener must be a function.');\n      var previousState = this.store.getState().dragOffset;\n\n      var handleChange = function handleChange() {\n        var nextState = _this2.store.getState().dragOffset;\n\n        if (nextState === previousState) {\n          return;\n        }\n\n        previousState = nextState;\n        listener();\n      };\n\n      return this.store.subscribe(handleChange);\n    }\n  }, {\n    key: \"canDragSource\",\n    value: function canDragSource(sourceId) {\n      if (!sourceId) {\n        return false;\n      }\n\n      var source = this.registry.getSource(sourceId);\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(source, 'Expected to find a valid source.');\n\n      if (this.isDragging()) {\n        return false;\n      }\n\n      return source.canDrag(this, sourceId);\n    }\n  }, {\n    key: \"canDropOnTarget\",\n    value: function canDropOnTarget(targetId) {\n      // undefined on initial render\n      if (!targetId) {\n        return false;\n      }\n\n      var target = this.registry.getTarget(targetId);\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(target, 'Expected to find a valid target.');\n\n      if (!this.isDragging() || this.didDrop()) {\n        return false;\n      }\n\n      var targetType = this.registry.getTargetType(targetId);\n      var draggedItemType = this.getItemType();\n      return (0,_utils_matchesType__WEBPACK_IMPORTED_MODULE_2__.matchesType)(targetType, draggedItemType) && target.canDrop(this, targetId);\n    }\n  }, {\n    key: \"isDragging\",\n    value: function isDragging() {\n      return Boolean(this.getItemType());\n    }\n  }, {\n    key: \"isDraggingSource\",\n    value: function isDraggingSource(sourceId) {\n      // undefined on initial render\n      if (!sourceId) {\n        return false;\n      }\n\n      var source = this.registry.getSource(sourceId, true);\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(source, 'Expected to find a valid source.');\n\n      if (!this.isDragging() || !this.isSourcePublic()) {\n        return false;\n      }\n\n      var sourceType = this.registry.getSourceType(sourceId);\n      var draggedItemType = this.getItemType();\n\n      if (sourceType !== draggedItemType) {\n        return false;\n      }\n\n      return source.isDragging(this, sourceId);\n    }\n  }, {\n    key: \"isOverTarget\",\n    value: function isOverTarget(targetId) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        shallow: false\n      };\n\n      // undefined on initial render\n      if (!targetId) {\n        return false;\n      }\n\n      var shallow = options.shallow;\n\n      if (!this.isDragging()) {\n        return false;\n      }\n\n      var targetType = this.registry.getTargetType(targetId);\n      var draggedItemType = this.getItemType();\n\n      if (draggedItemType && !(0,_utils_matchesType__WEBPACK_IMPORTED_MODULE_2__.matchesType)(targetType, draggedItemType)) {\n        return false;\n      }\n\n      var targetIds = this.getTargetIds();\n\n      if (!targetIds.length) {\n        return false;\n      }\n\n      var index = targetIds.indexOf(targetId);\n\n      if (shallow) {\n        return index === targetIds.length - 1;\n      } else {\n        return index > -1;\n      }\n    }\n  }, {\n    key: \"getItemType\",\n    value: function getItemType() {\n      return this.store.getState().dragOperation.itemType;\n    }\n  }, {\n    key: \"getItem\",\n    value: function getItem() {\n      return this.store.getState().dragOperation.item;\n    }\n  }, {\n    key: \"getSourceId\",\n    value: function getSourceId() {\n      return this.store.getState().dragOperation.sourceId;\n    }\n  }, {\n    key: \"getTargetIds\",\n    value: function getTargetIds() {\n      return this.store.getState().dragOperation.targetIds;\n    }\n  }, {\n    key: \"getDropResult\",\n    value: function getDropResult() {\n      return this.store.getState().dragOperation.dropResult;\n    }\n  }, {\n    key: \"didDrop\",\n    value: function didDrop() {\n      return this.store.getState().dragOperation.didDrop;\n    }\n  }, {\n    key: \"isSourcePublic\",\n    value: function isSourcePublic() {\n      return Boolean(this.store.getState().dragOperation.isSourcePublic);\n    }\n  }, {\n    key: \"getInitialClientOffset\",\n    value: function getInitialClientOffset() {\n      return this.store.getState().dragOffset.initialClientOffset;\n    }\n  }, {\n    key: \"getInitialSourceClientOffset\",\n    value: function getInitialSourceClientOffset() {\n      return this.store.getState().dragOffset.initialSourceClientOffset;\n    }\n  }, {\n    key: \"getClientOffset\",\n    value: function getClientOffset() {\n      return this.store.getState().dragOffset.clientOffset;\n    }\n  }, {\n    key: \"getSourceClientOffset\",\n    value: function getSourceClientOffset() {\n      return (0,_utils_coords__WEBPACK_IMPORTED_MODULE_3__.getSourceClientOffset)(this.store.getState().dragOffset);\n    }\n  }, {\n    key: \"getDifferenceFromInitialOffset\",\n    value: function getDifferenceFromInitialOffset() {\n      return (0,_utils_coords__WEBPACK_IMPORTED_MODULE_3__.getDifferenceFromInitialOffset)(this.store.getState().dragOffset);\n    }\n  }]);\n\n  return DragDropMonitorImpl;\n}();\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/DragDropMonitorImpl.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/HandlerRegistryImpl.js":
/*!***************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/HandlerRegistryImpl.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"HandlerRegistryImpl\": function() { return /* binding */ HandlerRegistryImpl; }\n/* harmony export */ });\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\n/* harmony import */ var _actions_registry__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./actions/registry */ \"./node_modules/dnd-core/dist/esm/actions/registry.js\");\n/* harmony import */ var _utils_getNextUniqueId__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/getNextUniqueId */ \"./node_modules/dnd-core/dist/esm/utils/getNextUniqueId.js\");\n/* harmony import */ var _interfaces__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./interfaces */ \"./node_modules/dnd-core/dist/esm/interfaces.js\");\n/* harmony import */ var _contracts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./contracts */ \"./node_modules/dnd-core/dist/esm/contracts.js\");\n/* harmony import */ var _react_dnd_asap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @react-dnd/asap */ \"./node_modules/@react-dnd/asap/dist/esm/index.mjs\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\nfunction getNextHandlerId(role) {\n  var id = (0,_utils_getNextUniqueId__WEBPACK_IMPORTED_MODULE_2__.getNextUniqueId)().toString();\n\n  switch (role) {\n    case _interfaces__WEBPACK_IMPORTED_MODULE_3__.HandlerRole.SOURCE:\n      return \"S\".concat(id);\n\n    case _interfaces__WEBPACK_IMPORTED_MODULE_3__.HandlerRole.TARGET:\n      return \"T\".concat(id);\n\n    default:\n      throw new Error(\"Unknown Handler Role: \".concat(role));\n  }\n}\n\nfunction parseRoleFromHandlerId(handlerId) {\n  switch (handlerId[0]) {\n    case 'S':\n      return _interfaces__WEBPACK_IMPORTED_MODULE_3__.HandlerRole.SOURCE;\n\n    case 'T':\n      return _interfaces__WEBPACK_IMPORTED_MODULE_3__.HandlerRole.TARGET;\n\n    default:\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(false, \"Cannot parse handler ID: \".concat(handlerId));\n  }\n}\n\nfunction mapContainsValue(map, searchValue) {\n  var entries = map.entries();\n  var isDone = false;\n\n  do {\n    var _entries$next = entries.next(),\n        done = _entries$next.done,\n        _entries$next$value = _slicedToArray(_entries$next.value, 2),\n        value = _entries$next$value[1];\n\n    if (value === searchValue) {\n      return true;\n    }\n\n    isDone = !!done;\n  } while (!isDone);\n\n  return false;\n}\n\nvar HandlerRegistryImpl = /*#__PURE__*/function () {\n  function HandlerRegistryImpl(store) {\n    _classCallCheck(this, HandlerRegistryImpl);\n\n    this.types = new Map();\n    this.dragSources = new Map();\n    this.dropTargets = new Map();\n    this.pinnedSourceId = null;\n    this.pinnedSource = null;\n    this.store = store;\n  }\n\n  _createClass(HandlerRegistryImpl, [{\n    key: \"addSource\",\n    value: function addSource(type, source) {\n      (0,_contracts__WEBPACK_IMPORTED_MODULE_4__.validateType)(type);\n      (0,_contracts__WEBPACK_IMPORTED_MODULE_4__.validateSourceContract)(source);\n      var sourceId = this.addHandler(_interfaces__WEBPACK_IMPORTED_MODULE_3__.HandlerRole.SOURCE, type, source);\n      this.store.dispatch((0,_actions_registry__WEBPACK_IMPORTED_MODULE_5__.addSource)(sourceId));\n      return sourceId;\n    }\n  }, {\n    key: \"addTarget\",\n    value: function addTarget(type, target) {\n      (0,_contracts__WEBPACK_IMPORTED_MODULE_4__.validateType)(type, true);\n      (0,_contracts__WEBPACK_IMPORTED_MODULE_4__.validateTargetContract)(target);\n      var targetId = this.addHandler(_interfaces__WEBPACK_IMPORTED_MODULE_3__.HandlerRole.TARGET, type, target);\n      this.store.dispatch((0,_actions_registry__WEBPACK_IMPORTED_MODULE_5__.addTarget)(targetId));\n      return targetId;\n    }\n  }, {\n    key: \"containsHandler\",\n    value: function containsHandler(handler) {\n      return mapContainsValue(this.dragSources, handler) || mapContainsValue(this.dropTargets, handler);\n    }\n  }, {\n    key: \"getSource\",\n    value: function getSource(sourceId) {\n      var includePinned = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(this.isSourceId(sourceId), 'Expected a valid source ID.');\n      var isPinned = includePinned && sourceId === this.pinnedSourceId;\n      var source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId);\n      return source;\n    }\n  }, {\n    key: \"getTarget\",\n    value: function getTarget(targetId) {\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(this.isTargetId(targetId), 'Expected a valid target ID.');\n      return this.dropTargets.get(targetId);\n    }\n  }, {\n    key: \"getSourceType\",\n    value: function getSourceType(sourceId) {\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(this.isSourceId(sourceId), 'Expected a valid source ID.');\n      return this.types.get(sourceId);\n    }\n  }, {\n    key: \"getTargetType\",\n    value: function getTargetType(targetId) {\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(this.isTargetId(targetId), 'Expected a valid target ID.');\n      return this.types.get(targetId);\n    }\n  }, {\n    key: \"isSourceId\",\n    value: function isSourceId(handlerId) {\n      var role = parseRoleFromHandlerId(handlerId);\n      return role === _interfaces__WEBPACK_IMPORTED_MODULE_3__.HandlerRole.SOURCE;\n    }\n  }, {\n    key: \"isTargetId\",\n    value: function isTargetId(handlerId) {\n      var role = parseRoleFromHandlerId(handlerId);\n      return role === _interfaces__WEBPACK_IMPORTED_MODULE_3__.HandlerRole.TARGET;\n    }\n  }, {\n    key: \"removeSource\",\n    value: function removeSource(sourceId) {\n      var _this = this;\n\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(this.getSource(sourceId), 'Expected an existing source.');\n      this.store.dispatch((0,_actions_registry__WEBPACK_IMPORTED_MODULE_5__.removeSource)(sourceId));\n      (0,_react_dnd_asap__WEBPACK_IMPORTED_MODULE_1__.asap)(function () {\n        _this.dragSources.delete(sourceId);\n\n        _this.types.delete(sourceId);\n      });\n    }\n  }, {\n    key: \"removeTarget\",\n    value: function removeTarget(targetId) {\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(this.getTarget(targetId), 'Expected an existing target.');\n      this.store.dispatch((0,_actions_registry__WEBPACK_IMPORTED_MODULE_5__.removeTarget)(targetId));\n      this.dropTargets.delete(targetId);\n      this.types.delete(targetId);\n    }\n  }, {\n    key: \"pinSource\",\n    value: function pinSource(sourceId) {\n      var source = this.getSource(sourceId);\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(source, 'Expected an existing source.');\n      this.pinnedSourceId = sourceId;\n      this.pinnedSource = source;\n    }\n  }, {\n    key: \"unpinSource\",\n    value: function unpinSource() {\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(this.pinnedSource, 'No source is pinned at the time.');\n      this.pinnedSourceId = null;\n      this.pinnedSource = null;\n    }\n  }, {\n    key: \"addHandler\",\n    value: function addHandler(role, type, handler) {\n      var id = getNextHandlerId(role);\n      this.types.set(id, type);\n\n      if (role === _interfaces__WEBPACK_IMPORTED_MODULE_3__.HandlerRole.SOURCE) {\n        this.dragSources.set(id, handler);\n      } else if (role === _interfaces__WEBPACK_IMPORTED_MODULE_3__.HandlerRole.TARGET) {\n        this.dropTargets.set(id, handler);\n      }\n\n      return id;\n    }\n  }]);\n\n  return HandlerRegistryImpl;\n}();\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/HandlerRegistryImpl.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/actions/dragDrop/beginDrag.js":
/*!**********************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/actions/dragDrop/beginDrag.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createBeginDrag\": function() { return /* binding */ createBeginDrag; }\n/* harmony export */ });\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\n/* harmony import */ var _local_setClientOffset__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./local/setClientOffset */ \"./node_modules/dnd-core/dist/esm/actions/dragDrop/local/setClientOffset.js\");\n/* harmony import */ var _utils_js_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/js_utils */ \"./node_modules/dnd-core/dist/esm/utils/js_utils.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types */ \"./node_modules/dnd-core/dist/esm/actions/dragDrop/types.js\");\n\n\n\n\nvar ResetCoordinatesAction = {\n  type: _types__WEBPACK_IMPORTED_MODULE_1__.INIT_COORDS,\n  payload: {\n    clientOffset: null,\n    sourceClientOffset: null\n  }\n};\nfunction createBeginDrag(manager) {\n  return function beginDrag() {\n    var sourceIds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      publishSource: true\n    };\n    var _options$publishSourc = options.publishSource,\n        publishSource = _options$publishSourc === void 0 ? true : _options$publishSourc,\n        clientOffset = options.clientOffset,\n        getSourceClientOffset = options.getSourceClientOffset;\n    var monitor = manager.getMonitor();\n    var registry = manager.getRegistry(); // Initialize the coordinates using the client offset\n\n    manager.dispatch((0,_local_setClientOffset__WEBPACK_IMPORTED_MODULE_2__.setClientOffset)(clientOffset));\n    verifyInvariants(sourceIds, monitor, registry); // Get the draggable source\n\n    var sourceId = getDraggableSource(sourceIds, monitor);\n\n    if (sourceId === null) {\n      manager.dispatch(ResetCoordinatesAction);\n      return;\n    } // Get the source client offset\n\n\n    var sourceClientOffset = null;\n\n    if (clientOffset) {\n      if (!getSourceClientOffset) {\n        throw new Error('getSourceClientOffset must be defined');\n      }\n\n      verifyGetSourceClientOffsetIsFunction(getSourceClientOffset);\n      sourceClientOffset = getSourceClientOffset(sourceId);\n    } // Initialize the full coordinates\n\n\n    manager.dispatch((0,_local_setClientOffset__WEBPACK_IMPORTED_MODULE_2__.setClientOffset)(clientOffset, sourceClientOffset));\n    var source = registry.getSource(sourceId);\n    var item = source.beginDrag(monitor, sourceId);\n    verifyItemIsObject(item);\n    registry.pinSource(sourceId);\n    var itemType = registry.getSourceType(sourceId);\n    return {\n      type: _types__WEBPACK_IMPORTED_MODULE_1__.BEGIN_DRAG,\n      payload: {\n        itemType: itemType,\n        item: item,\n        sourceId: sourceId,\n        clientOffset: clientOffset || null,\n        sourceClientOffset: sourceClientOffset || null,\n        isSourcePublic: !!publishSource\n      }\n    };\n  };\n}\n\nfunction verifyInvariants(sourceIds, monitor, registry) {\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(!monitor.isDragging(), 'Cannot call beginDrag while dragging.');\n  sourceIds.forEach(function (sourceId) {\n    (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(registry.getSource(sourceId), 'Expected sourceIds to be registered.');\n  });\n}\n\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset) {\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof getSourceClientOffset === 'function', 'When clientOffset is provided, getSourceClientOffset must be a function.');\n}\n\nfunction verifyItemIsObject(item) {\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)((0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_3__.isObject)(item), 'Item must be an object.');\n}\n\nfunction getDraggableSource(sourceIds, monitor) {\n  var sourceId = null;\n\n  for (var i = sourceIds.length - 1; i >= 0; i--) {\n    if (monitor.canDragSource(sourceIds[i])) {\n      sourceId = sourceIds[i];\n      break;\n    }\n  }\n\n  return sourceId;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/actions/dragDrop/beginDrag.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/actions/dragDrop/drop.js":
/*!*****************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/actions/dragDrop/drop.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createDrop\": function() { return /* binding */ createDrop; }\n/* harmony export */ });\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types */ \"./node_modules/dnd-core/dist/esm/actions/dragDrop/types.js\");\n/* harmony import */ var _utils_js_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/js_utils */ \"./node_modules/dnd-core/dist/esm/utils/js_utils.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\nfunction createDrop(manager) {\n  return function drop() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var monitor = manager.getMonitor();\n    var registry = manager.getRegistry();\n    verifyInvariants(monitor);\n    var targetIds = getDroppableTargets(monitor); // Multiple actions are dispatched here, which is why this doesn't return an action\n\n    targetIds.forEach(function (targetId, index) {\n      var dropResult = determineDropResult(targetId, index, registry, monitor);\n      var action = {\n        type: _types__WEBPACK_IMPORTED_MODULE_1__.DROP,\n        payload: {\n          dropResult: _objectSpread(_objectSpread({}, options), dropResult)\n        }\n      };\n      manager.dispatch(action);\n    });\n  };\n}\n\nfunction verifyInvariants(monitor) {\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(monitor.isDragging(), 'Cannot call drop while not dragging.');\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(!monitor.didDrop(), 'Cannot call drop twice during one drag operation.');\n}\n\nfunction determineDropResult(targetId, index, registry, monitor) {\n  var target = registry.getTarget(targetId);\n  var dropResult = target ? target.drop(monitor, targetId) : undefined;\n  verifyDropResultType(dropResult);\n\n  if (typeof dropResult === 'undefined') {\n    dropResult = index === 0 ? {} : monitor.getDropResult();\n  }\n\n  return dropResult;\n}\n\nfunction verifyDropResultType(dropResult) {\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof dropResult === 'undefined' || (0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_2__.isObject)(dropResult), 'Drop result must either be an object or undefined.');\n}\n\nfunction getDroppableTargets(monitor) {\n  var targetIds = monitor.getTargetIds().filter(monitor.canDropOnTarget, monitor);\n  targetIds.reverse();\n  return targetIds;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/actions/dragDrop/drop.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/actions/dragDrop/endDrag.js":
/*!********************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/actions/dragDrop/endDrag.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createEndDrag\": function() { return /* binding */ createEndDrag; }\n/* harmony export */ });\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types */ \"./node_modules/dnd-core/dist/esm/actions/dragDrop/types.js\");\n\n\nfunction createEndDrag(manager) {\n  return function endDrag() {\n    var monitor = manager.getMonitor();\n    var registry = manager.getRegistry();\n    verifyIsDragging(monitor);\n    var sourceId = monitor.getSourceId();\n\n    if (sourceId != null) {\n      var source = registry.getSource(sourceId, true);\n      source.endDrag(monitor, sourceId);\n      registry.unpinSource();\n    }\n\n    return {\n      type: _types__WEBPACK_IMPORTED_MODULE_1__.END_DRAG\n    };\n  };\n}\n\nfunction verifyIsDragging(monitor) {\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(monitor.isDragging(), 'Cannot call endDrag while not dragging.');\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/actions/dragDrop/endDrag.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/actions/dragDrop/hover.js":
/*!******************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/actions/dragDrop/hover.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createHover\": function() { return /* binding */ createHover; }\n/* harmony export */ });\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\n/* harmony import */ var _utils_matchesType__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/matchesType */ \"./node_modules/dnd-core/dist/esm/utils/matchesType.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types */ \"./node_modules/dnd-core/dist/esm/actions/dragDrop/types.js\");\n\n\n\nfunction createHover(manager) {\n  return function hover(targetIdsArg) {\n    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        clientOffset = _ref.clientOffset;\n\n    verifyTargetIdsIsArray(targetIdsArg);\n    var targetIds = targetIdsArg.slice(0);\n    var monitor = manager.getMonitor();\n    var registry = manager.getRegistry();\n    checkInvariants(targetIds, monitor, registry);\n    var draggedItemType = monitor.getItemType();\n    removeNonMatchingTargetIds(targetIds, registry, draggedItemType);\n    hoverAllTargets(targetIds, monitor, registry);\n    return {\n      type: _types__WEBPACK_IMPORTED_MODULE_1__.HOVER,\n      payload: {\n        targetIds: targetIds,\n        clientOffset: clientOffset || null\n      }\n    };\n  };\n}\n\nfunction verifyTargetIdsIsArray(targetIdsArg) {\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.');\n}\n\nfunction checkInvariants(targetIds, monitor, registry) {\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(monitor.isDragging(), 'Cannot call hover while not dragging.');\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(!monitor.didDrop(), 'Cannot call hover after drop.');\n\n  for (var i = 0; i < targetIds.length; i++) {\n    var targetId = targetIds[i];\n    (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(targetIds.lastIndexOf(targetId) === i, 'Expected targetIds to be unique in the passed array.');\n    var target = registry.getTarget(targetId);\n    (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(target, 'Expected targetIds to be registered.');\n  }\n}\n\nfunction removeNonMatchingTargetIds(targetIds, registry, draggedItemType) {\n  // Remove those targetIds that don't match the targetType.  This\n  // fixes shallow isOver which would only be non-shallow because of\n  // non-matching targets.\n  for (var i = targetIds.length - 1; i >= 0; i--) {\n    var targetId = targetIds[i];\n    var targetType = registry.getTargetType(targetId);\n\n    if (!(0,_utils_matchesType__WEBPACK_IMPORTED_MODULE_2__.matchesType)(targetType, draggedItemType)) {\n      targetIds.splice(i, 1);\n    }\n  }\n}\n\nfunction hoverAllTargets(targetIds, monitor, registry) {\n  // Finally call hover on all matching targets.\n  targetIds.forEach(function (targetId) {\n    var target = registry.getTarget(targetId);\n    target.hover(monitor, targetId);\n  });\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/actions/dragDrop/hover.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/actions/dragDrop/index.js":
/*!******************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/actions/dragDrop/index.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BEGIN_DRAG\": function() { return /* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_0__.BEGIN_DRAG; },\n/* harmony export */   \"DROP\": function() { return /* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_0__.DROP; },\n/* harmony export */   \"END_DRAG\": function() { return /* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_0__.END_DRAG; },\n/* harmony export */   \"HOVER\": function() { return /* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_0__.HOVER; },\n/* harmony export */   \"INIT_COORDS\": function() { return /* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_0__.INIT_COORDS; },\n/* harmony export */   \"PUBLISH_DRAG_SOURCE\": function() { return /* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_0__.PUBLISH_DRAG_SOURCE; },\n/* harmony export */   \"createDragDropActions\": function() { return /* binding */ createDragDropActions; }\n/* harmony export */ });\n/* harmony import */ var _beginDrag__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./beginDrag */ \"./node_modules/dnd-core/dist/esm/actions/dragDrop/beginDrag.js\");\n/* harmony import */ var _publishDragSource__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./publishDragSource */ \"./node_modules/dnd-core/dist/esm/actions/dragDrop/publishDragSource.js\");\n/* harmony import */ var _hover__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hover */ \"./node_modules/dnd-core/dist/esm/actions/dragDrop/hover.js\");\n/* harmony import */ var _drop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./drop */ \"./node_modules/dnd-core/dist/esm/actions/dragDrop/drop.js\");\n/* harmony import */ var _endDrag__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./endDrag */ \"./node_modules/dnd-core/dist/esm/actions/dragDrop/endDrag.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types */ \"./node_modules/dnd-core/dist/esm/actions/dragDrop/types.js\");\n\n\n\n\n\n\nfunction createDragDropActions(manager) {\n  return {\n    beginDrag: (0,_beginDrag__WEBPACK_IMPORTED_MODULE_1__.createBeginDrag)(manager),\n    publishDragSource: (0,_publishDragSource__WEBPACK_IMPORTED_MODULE_2__.createPublishDragSource)(manager),\n    hover: (0,_hover__WEBPACK_IMPORTED_MODULE_3__.createHover)(manager),\n    drop: (0,_drop__WEBPACK_IMPORTED_MODULE_4__.createDrop)(manager),\n    endDrag: (0,_endDrag__WEBPACK_IMPORTED_MODULE_5__.createEndDrag)(manager)\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/actions/dragDrop/index.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/actions/dragDrop/local/setClientOffset.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/actions/dragDrop/local/setClientOffset.js ***!
  \**********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"setClientOffset\": function() { return /* binding */ setClientOffset; }\n/* harmony export */ });\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ \"./node_modules/dnd-core/dist/esm/actions/dragDrop/types.js\");\n\nfunction setClientOffset(clientOffset, sourceClientOffset) {\n  return {\n    type: _types__WEBPACK_IMPORTED_MODULE_0__.INIT_COORDS,\n    payload: {\n      sourceClientOffset: sourceClientOffset || null,\n      clientOffset: clientOffset || null\n    }\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/actions/dragDrop/local/setClientOffset.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/actions/dragDrop/publishDragSource.js":
/*!******************************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/actions/dragDrop/publishDragSource.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createPublishDragSource\": function() { return /* binding */ createPublishDragSource; }\n/* harmony export */ });\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types */ \"./node_modules/dnd-core/dist/esm/actions/dragDrop/types.js\");\n\nfunction createPublishDragSource(manager) {\n  return function publishDragSource() {\n    var monitor = manager.getMonitor();\n\n    if (monitor.isDragging()) {\n      return {\n        type: _types__WEBPACK_IMPORTED_MODULE_0__.PUBLISH_DRAG_SOURCE\n      };\n    }\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/actions/dragDrop/publishDragSource.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/actions/dragDrop/types.js":
/*!******************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/actions/dragDrop/types.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BEGIN_DRAG\": function() { return /* binding */ BEGIN_DRAG; },\n/* harmony export */   \"DROP\": function() { return /* binding */ DROP; },\n/* harmony export */   \"END_DRAG\": function() { return /* binding */ END_DRAG; },\n/* harmony export */   \"HOVER\": function() { return /* binding */ HOVER; },\n/* harmony export */   \"INIT_COORDS\": function() { return /* binding */ INIT_COORDS; },\n/* harmony export */   \"PUBLISH_DRAG_SOURCE\": function() { return /* binding */ PUBLISH_DRAG_SOURCE; }\n/* harmony export */ });\nvar INIT_COORDS = 'dnd-core/INIT_COORDS';\nvar BEGIN_DRAG = 'dnd-core/BEGIN_DRAG';\nvar PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE';\nvar HOVER = 'dnd-core/HOVER';\nvar DROP = 'dnd-core/DROP';\nvar END_DRAG = 'dnd-core/END_DRAG';\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/actions/dragDrop/types.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/actions/registry.js":
/*!************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/actions/registry.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ADD_SOURCE\": function() { return /* binding */ ADD_SOURCE; },\n/* harmony export */   \"ADD_TARGET\": function() { return /* binding */ ADD_TARGET; },\n/* harmony export */   \"REMOVE_SOURCE\": function() { return /* binding */ REMOVE_SOURCE; },\n/* harmony export */   \"REMOVE_TARGET\": function() { return /* binding */ REMOVE_TARGET; },\n/* harmony export */   \"addSource\": function() { return /* binding */ addSource; },\n/* harmony export */   \"addTarget\": function() { return /* binding */ addTarget; },\n/* harmony export */   \"removeSource\": function() { return /* binding */ removeSource; },\n/* harmony export */   \"removeTarget\": function() { return /* binding */ removeTarget; }\n/* harmony export */ });\nvar ADD_SOURCE = 'dnd-core/ADD_SOURCE';\nvar ADD_TARGET = 'dnd-core/ADD_TARGET';\nvar REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE';\nvar REMOVE_TARGET = 'dnd-core/REMOVE_TARGET';\nfunction addSource(sourceId) {\n  return {\n    type: ADD_SOURCE,\n    payload: {\n      sourceId: sourceId\n    }\n  };\n}\nfunction addTarget(targetId) {\n  return {\n    type: ADD_TARGET,\n    payload: {\n      targetId: targetId\n    }\n  };\n}\nfunction removeSource(sourceId) {\n  return {\n    type: REMOVE_SOURCE,\n    payload: {\n      sourceId: sourceId\n    }\n  };\n}\nfunction removeTarget(targetId) {\n  return {\n    type: REMOVE_TARGET,\n    payload: {\n      targetId: targetId\n    }\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/actions/registry.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/contracts.js":
/*!*****************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/contracts.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"validateSourceContract\": function() { return /* binding */ validateSourceContract; },\n/* harmony export */   \"validateTargetContract\": function() { return /* binding */ validateTargetContract; },\n/* harmony export */   \"validateType\": function() { return /* binding */ validateType; }\n/* harmony export */ });\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\nfunction validateSourceContract(source) {\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof source.canDrag === 'function', 'Expected canDrag to be a function.');\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof source.beginDrag === 'function', 'Expected beginDrag to be a function.');\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof source.endDrag === 'function', 'Expected endDrag to be a function.');\n}\nfunction validateTargetContract(target) {\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof target.canDrop === 'function', 'Expected canDrop to be a function.');\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof target.hover === 'function', 'Expected hover to be a function.');\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof target.drop === 'function', 'Expected beginDrag to be a function.');\n}\nfunction validateType(type, allowArray) {\n  if (allowArray && Array.isArray(type)) {\n    type.forEach(function (t) {\n      return validateType(t, false);\n    });\n    return;\n  }\n\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof type === 'string' || _typeof(type) === 'symbol', allowArray ? 'Type can only be a string, a symbol, or an array of either.' : 'Type can only be a string or a symbol.');\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/contracts.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/factories.js":
/*!*****************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/factories.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createDragDropManager\": function() { return /* binding */ createDragDropManager; }\n/* harmony export */ });\n/* harmony import */ var _DragDropManagerImpl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DragDropManagerImpl */ \"./node_modules/dnd-core/dist/esm/DragDropManagerImpl.js\");\n\nfunction createDragDropManager(backendFactory, globalContext, backendOptions, debugMode) {\n  var manager = new _DragDropManagerImpl__WEBPACK_IMPORTED_MODULE_0__.DragDropManagerImpl(debugMode);\n  var backend = backendFactory(manager, globalContext, backendOptions);\n  manager.receiveBackend(backend);\n  return manager;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/factories.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/interfaces.js":
/*!******************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/interfaces.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"HandlerRole\": function() { return /* binding */ HandlerRole; }\n/* harmony export */ });\nvar HandlerRole;\n\n(function (HandlerRole) {\n  HandlerRole[\"SOURCE\"] = \"SOURCE\";\n  HandlerRole[\"TARGET\"] = \"TARGET\";\n})(HandlerRole || (HandlerRole = {}));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/interfaces.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/reducers/dirtyHandlerIds.js":
/*!********************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/reducers/dirtyHandlerIds.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"reduce\": function() { return /* binding */ reduce; }\n/* harmony export */ });\n/* harmony import */ var _actions_dragDrop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../actions/dragDrop */ \"./node_modules/dnd-core/dist/esm/actions/dragDrop/types.js\");\n/* harmony import */ var _actions_registry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../actions/registry */ \"./node_modules/dnd-core/dist/esm/actions/registry.js\");\n/* harmony import */ var _utils_equality__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/equality */ \"./node_modules/dnd-core/dist/esm/utils/equality.js\");\n/* harmony import */ var _utils_dirtiness__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/dirtiness */ \"./node_modules/dnd-core/dist/esm/utils/dirtiness.js\");\n/* harmony import */ var _utils_js_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/js_utils */ \"./node_modules/dnd-core/dist/esm/utils/js_utils.js\");\n\n\n\n\n\nfunction reduce() {\n  var _state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _utils_dirtiness__WEBPACK_IMPORTED_MODULE_0__.NONE;\n\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n\n  switch (action.type) {\n    case _actions_dragDrop__WEBPACK_IMPORTED_MODULE_1__.HOVER:\n      break;\n\n    case _actions_registry__WEBPACK_IMPORTED_MODULE_2__.ADD_SOURCE:\n    case _actions_registry__WEBPACK_IMPORTED_MODULE_2__.ADD_TARGET:\n    case _actions_registry__WEBPACK_IMPORTED_MODULE_2__.REMOVE_TARGET:\n    case _actions_registry__WEBPACK_IMPORTED_MODULE_2__.REMOVE_SOURCE:\n      return _utils_dirtiness__WEBPACK_IMPORTED_MODULE_0__.NONE;\n\n    case _actions_dragDrop__WEBPACK_IMPORTED_MODULE_1__.BEGIN_DRAG:\n    case _actions_dragDrop__WEBPACK_IMPORTED_MODULE_1__.PUBLISH_DRAG_SOURCE:\n    case _actions_dragDrop__WEBPACK_IMPORTED_MODULE_1__.END_DRAG:\n    case _actions_dragDrop__WEBPACK_IMPORTED_MODULE_1__.DROP:\n    default:\n      return _utils_dirtiness__WEBPACK_IMPORTED_MODULE_0__.ALL;\n  }\n\n  var _action$payload = action.payload,\n      _action$payload$targe = _action$payload.targetIds,\n      targetIds = _action$payload$targe === void 0 ? [] : _action$payload$targe,\n      _action$payload$prevT = _action$payload.prevTargetIds,\n      prevTargetIds = _action$payload$prevT === void 0 ? [] : _action$payload$prevT;\n  var result = (0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_3__.xor)(targetIds, prevTargetIds);\n  var didChange = result.length > 0 || !(0,_utils_equality__WEBPACK_IMPORTED_MODULE_4__.areArraysEqual)(targetIds, prevTargetIds);\n\n  if (!didChange) {\n    return _utils_dirtiness__WEBPACK_IMPORTED_MODULE_0__.NONE;\n  } // Check the target ids at the innermost position. If they are valid, add them\n  // to the result\n\n\n  var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1];\n  var innermostTargetId = targetIds[targetIds.length - 1];\n\n  if (prevInnermostTargetId !== innermostTargetId) {\n    if (prevInnermostTargetId) {\n      result.push(prevInnermostTargetId);\n    }\n\n    if (innermostTargetId) {\n      result.push(innermostTargetId);\n    }\n  }\n\n  return result;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/reducers/dirtyHandlerIds.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/reducers/dragOffset.js":
/*!***************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/reducers/dragOffset.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"reduce\": function() { return /* binding */ reduce; }\n/* harmony export */ });\n/* harmony import */ var _actions_dragDrop__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../actions/dragDrop */ \"./node_modules/dnd-core/dist/esm/actions/dragDrop/types.js\");\n/* harmony import */ var _utils_equality__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/equality */ \"./node_modules/dnd-core/dist/esm/utils/equality.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nvar initialState = {\n  initialSourceClientOffset: null,\n  initialClientOffset: null,\n  clientOffset: null\n};\nfunction reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n  var payload = action.payload;\n\n  switch (action.type) {\n    case _actions_dragDrop__WEBPACK_IMPORTED_MODULE_0__.INIT_COORDS:\n    case _actions_dragDrop__WEBPACK_IMPORTED_MODULE_0__.BEGIN_DRAG:\n      return {\n        initialSourceClientOffset: payload.sourceClientOffset,\n        initialClientOffset: payload.clientOffset,\n        clientOffset: payload.clientOffset\n      };\n\n    case _actions_dragDrop__WEBPACK_IMPORTED_MODULE_0__.HOVER:\n      if ((0,_utils_equality__WEBPACK_IMPORTED_MODULE_1__.areCoordsEqual)(state.clientOffset, payload.clientOffset)) {\n        return state;\n      }\n\n      return _objectSpread(_objectSpread({}, state), {}, {\n        clientOffset: payload.clientOffset\n      });\n\n    case _actions_dragDrop__WEBPACK_IMPORTED_MODULE_0__.END_DRAG:\n    case _actions_dragDrop__WEBPACK_IMPORTED_MODULE_0__.DROP:\n      return initialState;\n\n    default:\n      return state;\n  }\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/reducers/dragOffset.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/reducers/dragOperation.js":
/*!******************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/reducers/dragOperation.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"reduce\": function() { return /* binding */ reduce; }\n/* harmony export */ });\n/* harmony import */ var _actions_dragDrop__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../actions/dragDrop */ \"./node_modules/dnd-core/dist/esm/actions/dragDrop/types.js\");\n/* harmony import */ var _actions_registry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../actions/registry */ \"./node_modules/dnd-core/dist/esm/actions/registry.js\");\n/* harmony import */ var _utils_js_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/js_utils */ \"./node_modules/dnd-core/dist/esm/utils/js_utils.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\nvar initialState = {\n  itemType: null,\n  item: null,\n  sourceId: null,\n  targetIds: [],\n  dropResult: null,\n  didDrop: false,\n  isSourcePublic: null\n};\nfunction reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n  var payload = action.payload;\n\n  switch (action.type) {\n    case _actions_dragDrop__WEBPACK_IMPORTED_MODULE_0__.BEGIN_DRAG:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        itemType: payload.itemType,\n        item: payload.item,\n        sourceId: payload.sourceId,\n        isSourcePublic: payload.isSourcePublic,\n        dropResult: null,\n        didDrop: false\n      });\n\n    case _actions_dragDrop__WEBPACK_IMPORTED_MODULE_0__.PUBLISH_DRAG_SOURCE:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        isSourcePublic: true\n      });\n\n    case _actions_dragDrop__WEBPACK_IMPORTED_MODULE_0__.HOVER:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        targetIds: payload.targetIds\n      });\n\n    case _actions_registry__WEBPACK_IMPORTED_MODULE_1__.REMOVE_TARGET:\n      if (state.targetIds.indexOf(payload.targetId) === -1) {\n        return state;\n      }\n\n      return _objectSpread(_objectSpread({}, state), {}, {\n        targetIds: (0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_2__.without)(state.targetIds, payload.targetId)\n      });\n\n    case _actions_dragDrop__WEBPACK_IMPORTED_MODULE_0__.DROP:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        dropResult: payload.dropResult,\n        didDrop: true,\n        targetIds: []\n      });\n\n    case _actions_dragDrop__WEBPACK_IMPORTED_MODULE_0__.END_DRAG:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        itemType: null,\n        item: null,\n        sourceId: null,\n        dropResult: null,\n        didDrop: false,\n        isSourcePublic: null,\n        targetIds: []\n      });\n\n    default:\n      return state;\n  }\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/reducers/dragOperation.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/reducers/index.js":
/*!**********************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/reducers/index.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"reduce\": function() { return /* binding */ reduce; }\n/* harmony export */ });\n/* harmony import */ var _dragOffset__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dragOffset */ \"./node_modules/dnd-core/dist/esm/reducers/dragOffset.js\");\n/* harmony import */ var _dragOperation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dragOperation */ \"./node_modules/dnd-core/dist/esm/reducers/dragOperation.js\");\n/* harmony import */ var _refCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./refCount */ \"./node_modules/dnd-core/dist/esm/reducers/refCount.js\");\n/* harmony import */ var _dirtyHandlerIds__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dirtyHandlerIds */ \"./node_modules/dnd-core/dist/esm/reducers/dirtyHandlerIds.js\");\n/* harmony import */ var _stateId__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./stateId */ \"./node_modules/dnd-core/dist/esm/reducers/stateId.js\");\n/* harmony import */ var _utils_js_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/js_utils */ \"./node_modules/dnd-core/dist/esm/utils/js_utils.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\nfunction reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n  return {\n    dirtyHandlerIds: (0,_dirtyHandlerIds__WEBPACK_IMPORTED_MODULE_0__.reduce)(state.dirtyHandlerIds, {\n      type: action.type,\n      payload: _objectSpread(_objectSpread({}, action.payload), {}, {\n        prevTargetIds: (0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_1__.get)(state, 'dragOperation.targetIds', [])\n      })\n    }),\n    dragOffset: (0,_dragOffset__WEBPACK_IMPORTED_MODULE_2__.reduce)(state.dragOffset, action),\n    refCount: (0,_refCount__WEBPACK_IMPORTED_MODULE_3__.reduce)(state.refCount, action),\n    dragOperation: (0,_dragOperation__WEBPACK_IMPORTED_MODULE_4__.reduce)(state.dragOperation, action),\n    stateId: (0,_stateId__WEBPACK_IMPORTED_MODULE_5__.reduce)(state.stateId)\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/reducers/index.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/reducers/refCount.js":
/*!*************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/reducers/refCount.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"reduce\": function() { return /* binding */ reduce; }\n/* harmony export */ });\n/* harmony import */ var _actions_registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../actions/registry */ \"./node_modules/dnd-core/dist/esm/actions/registry.js\");\n\nfunction reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n\n  switch (action.type) {\n    case _actions_registry__WEBPACK_IMPORTED_MODULE_0__.ADD_SOURCE:\n    case _actions_registry__WEBPACK_IMPORTED_MODULE_0__.ADD_TARGET:\n      return state + 1;\n\n    case _actions_registry__WEBPACK_IMPORTED_MODULE_0__.REMOVE_SOURCE:\n    case _actions_registry__WEBPACK_IMPORTED_MODULE_0__.REMOVE_TARGET:\n      return state - 1;\n\n    default:\n      return state;\n  }\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/reducers/refCount.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/reducers/stateId.js":
/*!************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/reducers/stateId.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"reduce\": function() { return /* binding */ reduce; }\n/* harmony export */ });\nfunction reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n  return state + 1;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/reducers/stateId.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/utils/coords.js":
/*!********************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/utils/coords.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"add\": function() { return /* binding */ add; },\n/* harmony export */   \"getDifferenceFromInitialOffset\": function() { return /* binding */ getDifferenceFromInitialOffset; },\n/* harmony export */   \"getSourceClientOffset\": function() { return /* binding */ getSourceClientOffset; },\n/* harmony export */   \"subtract\": function() { return /* binding */ subtract; }\n/* harmony export */ });\n/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nfunction add(a, b) {\n  return {\n    x: a.x + b.x,\n    y: a.y + b.y\n  };\n}\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\n\nfunction subtract(a, b) {\n  return {\n    x: a.x - b.x,\n    y: a.y - b.y\n  };\n}\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\n\nfunction getSourceClientOffset(state) {\n  var clientOffset = state.clientOffset,\n      initialClientOffset = state.initialClientOffset,\n      initialSourceClientOffset = state.initialSourceClientOffset;\n\n  if (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n    return null;\n  }\n\n  return subtract(add(clientOffset, initialSourceClientOffset), initialClientOffset);\n}\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\n\nfunction getDifferenceFromInitialOffset(state) {\n  var clientOffset = state.clientOffset,\n      initialClientOffset = state.initialClientOffset;\n\n  if (!clientOffset || !initialClientOffset) {\n    return null;\n  }\n\n  return subtract(clientOffset, initialClientOffset);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/utils/coords.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/utils/dirtiness.js":
/*!***********************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/utils/dirtiness.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ALL\": function() { return /* binding */ ALL; },\n/* harmony export */   \"NONE\": function() { return /* binding */ NONE; },\n/* harmony export */   \"areDirty\": function() { return /* binding */ areDirty; }\n/* harmony export */ });\n/* harmony import */ var _js_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./js_utils */ \"./node_modules/dnd-core/dist/esm/utils/js_utils.js\");\n\nvar NONE = [];\nvar ALL = [];\nNONE.__IS_NONE__ = true;\nALL.__IS_ALL__ = true;\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\n\nfunction areDirty(dirtyIds, handlerIds) {\n  if (dirtyIds === NONE) {\n    return false;\n  }\n\n  if (dirtyIds === ALL || typeof handlerIds === 'undefined') {\n    return true;\n  }\n\n  var commonIds = (0,_js_utils__WEBPACK_IMPORTED_MODULE_0__.intersection)(handlerIds, dirtyIds);\n  return commonIds.length > 0;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/utils/dirtiness.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/utils/equality.js":
/*!**********************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/utils/equality.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"areArraysEqual\": function() { return /* binding */ areArraysEqual; },\n/* harmony export */   \"areCoordsEqual\": function() { return /* binding */ areCoordsEqual; },\n/* harmony export */   \"strictEquality\": function() { return /* binding */ strictEquality; }\n/* harmony export */ });\nvar strictEquality = function strictEquality(a, b) {\n  return a === b;\n};\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\n\nfunction areCoordsEqual(offsetA, offsetB) {\n  if (!offsetA && !offsetB) {\n    return true;\n  } else if (!offsetA || !offsetB) {\n    return false;\n  } else {\n    return offsetA.x === offsetB.x && offsetA.y === offsetB.y;\n  }\n}\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\n\nfunction areArraysEqual(a, b) {\n  var isEqual = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : strictEquality;\n\n  if (a.length !== b.length) {\n    return false;\n  }\n\n  for (var i = 0; i < a.length; ++i) {\n    if (!isEqual(a[i], b[i])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/utils/equality.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/utils/getNextUniqueId.js":
/*!*****************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/utils/getNextUniqueId.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getNextUniqueId\": function() { return /* binding */ getNextUniqueId; }\n/* harmony export */ });\nvar nextUniqueId = 0;\nfunction getNextUniqueId() {\n  return nextUniqueId++;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/utils/getNextUniqueId.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/utils/js_utils.js":
/*!**********************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/utils/js_utils.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"get\": function() { return /* binding */ get; },\n/* harmony export */   \"intersection\": function() { return /* binding */ intersection; },\n/* harmony export */   \"isObject\": function() { return /* binding */ isObject; },\n/* harmony export */   \"isString\": function() { return /* binding */ isString; },\n/* harmony export */   \"without\": function() { return /* binding */ without; },\n/* harmony export */   \"xor\": function() { return /* binding */ xor; }\n/* harmony export */ });\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// cheap lodash replacements\n\n/**\n * drop-in replacement for _.get\n * @param obj\n * @param path\n * @param defaultValue\n */\nfunction get(obj, path, defaultValue) {\n  return path.split('.').reduce(function (a, c) {\n    return a && a[c] ? a[c] : defaultValue || null;\n  }, obj);\n}\n/**\n * drop-in replacement for _.without\n */\n\nfunction without(items, item) {\n  return items.filter(function (i) {\n    return i !== item;\n  });\n}\n/**\n * drop-in replacement for _.isString\n * @param input\n */\n\nfunction isString(input) {\n  return typeof input === 'string';\n}\n/**\n * drop-in replacement for _.isString\n * @param input\n */\n\nfunction isObject(input) {\n  return _typeof(input) === 'object';\n}\n/**\n * repalcement for _.xor\n * @param itemsA\n * @param itemsB\n */\n\nfunction xor(itemsA, itemsB) {\n  var map = new Map();\n\n  var insertItem = function insertItem(item) {\n    map.set(item, map.has(item) ? map.get(item) + 1 : 1);\n  };\n\n  itemsA.forEach(insertItem);\n  itemsB.forEach(insertItem);\n  var result = [];\n  map.forEach(function (count, key) {\n    if (count === 1) {\n      result.push(key);\n    }\n  });\n  return result;\n}\n/**\n * replacement for _.intersection\n * @param itemsA\n * @param itemsB\n */\n\nfunction intersection(itemsA, itemsB) {\n  return itemsA.filter(function (t) {\n    return itemsB.indexOf(t) > -1;\n  });\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/utils/js_utils.js?");

/***/ }),

/***/ "./node_modules/dnd-core/dist/esm/utils/matchesType.js":
/*!*************************************************************!*\
  !*** ./node_modules/dnd-core/dist/esm/utils/matchesType.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"matchesType\": function() { return /* binding */ matchesType; }\n/* harmony export */ });\nfunction matchesType(targetType, draggedItemType) {\n  if (draggedItemType === null) {\n    return targetType === null;\n  }\n\n  return Array.isArray(targetType) ? targetType.some(function (t) {\n    return t === draggedItemType;\n  }) : targetType === draggedItemType;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dnd-core/dist/esm/utils/matchesType.js?");

/***/ }),

/***/ "./node_modules/earcut/src/earcut.js":
/*!*******************************************!*\
  !*** ./node_modules/earcut/src/earcut.js ***!
  \*******************************************/
/***/ (function(module) {

"use strict";
eval("\n\nmodule.exports = earcut;\nmodule.exports[\"default\"] = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n    dim = dim || 2;\n\n    var hasHoles = holeIndices && holeIndices.length,\n        outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n        outerNode = linkedList(data, 0, outerLen, dim, true),\n        triangles = [];\n\n    if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n    var minX, minY, maxX, maxY, x, y, invSize;\n\n    if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n    // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n    if (data.length > 80 * dim) {\n        minX = maxX = data[0];\n        minY = maxY = data[1];\n\n        for (var i = dim; i < outerLen; i += dim) {\n            x = data[i];\n            y = data[i + 1];\n            if (x < minX) minX = x;\n            if (y < minY) minY = y;\n            if (x > maxX) maxX = x;\n            if (y > maxY) maxY = y;\n        }\n\n        // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n        invSize = Math.max(maxX - minX, maxY - minY);\n        invSize = invSize !== 0 ? 32767 / invSize : 0;\n    }\n\n    earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n    return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n    var i, last;\n\n    if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n        for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n    } else {\n        for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n    }\n\n    if (last && equals(last, last.next)) {\n        removeNode(last);\n        last = last.next;\n    }\n\n    return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n    if (!start) return start;\n    if (!end) end = start;\n\n    var p = start,\n        again;\n    do {\n        again = false;\n\n        if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n            removeNode(p);\n            p = end = p.prev;\n            if (p === p.next) break;\n            again = true;\n\n        } else {\n            p = p.next;\n        }\n    } while (again || p !== end);\n\n    return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n    if (!ear) return;\n\n    // interlink polygon nodes in z-order\n    if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n    var stop = ear,\n        prev, next;\n\n    // iterate through ears, slicing them one by one\n    while (ear.prev !== ear.next) {\n        prev = ear.prev;\n        next = ear.next;\n\n        if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n            // cut off the triangle\n            triangles.push(prev.i / dim | 0);\n            triangles.push(ear.i / dim | 0);\n            triangles.push(next.i / dim | 0);\n\n            removeNode(ear);\n\n            // skipping the next vertex leads to less sliver triangles\n            ear = next.next;\n            stop = next.next;\n\n            continue;\n        }\n\n        ear = next;\n\n        // if we looped through the whole remaining polygon and can't find any more ears\n        if (ear === stop) {\n            // try filtering points and slicing again\n            if (!pass) {\n                earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n            // if this didn't work, try curing all small self-intersections locally\n            } else if (pass === 1) {\n                ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n                earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n            // as a last resort, try splitting the remaining polygon into two\n            } else if (pass === 2) {\n                splitEarcut(ear, triangles, dim, minX, minY, invSize);\n            }\n\n            break;\n        }\n    }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n    var a = ear.prev,\n        b = ear,\n        c = ear.next;\n\n    if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n    // now make sure we don't have other points inside the potential ear\n    var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n    // triangle bbox; min & max are calculated like this for speed\n    var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n        y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n        x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n        y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n    var p = c.next;\n    while (p !== a) {\n        if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n            pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n            area(p.prev, p, p.next) >= 0) return false;\n        p = p.next;\n    }\n\n    return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n    var a = ear.prev,\n        b = ear,\n        c = ear.next;\n\n    if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n    var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n    // triangle bbox; min & max are calculated like this for speed\n    var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n        y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n        x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n        y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n    // z-order range for the current triangle bbox;\n    var minZ = zOrder(x0, y0, minX, minY, invSize),\n        maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n    var p = ear.prevZ,\n        n = ear.nextZ;\n\n    // look for points inside the triangle in both directions\n    while (p && p.z >= minZ && n && n.z <= maxZ) {\n        if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n            pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n        p = p.prevZ;\n\n        if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n            pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n        n = n.nextZ;\n    }\n\n    // look for remaining points in decreasing z-order\n    while (p && p.z >= minZ) {\n        if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n            pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n        p = p.prevZ;\n    }\n\n    // look for remaining points in increasing z-order\n    while (n && n.z <= maxZ) {\n        if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n            pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n        n = n.nextZ;\n    }\n\n    return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n    var p = start;\n    do {\n        var a = p.prev,\n            b = p.next.next;\n\n        if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n            triangles.push(a.i / dim | 0);\n            triangles.push(p.i / dim | 0);\n            triangles.push(b.i / dim | 0);\n\n            // remove two nodes involved\n            removeNode(p);\n            removeNode(p.next);\n\n            p = start = b;\n        }\n        p = p.next;\n    } while (p !== start);\n\n    return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n    // look for a valid diagonal that divides the polygon into two\n    var a = start;\n    do {\n        var b = a.next.next;\n        while (b !== a.prev) {\n            if (a.i !== b.i && isValidDiagonal(a, b)) {\n                // split the polygon in two by the diagonal\n                var c = splitPolygon(a, b);\n\n                // filter colinear points around the cuts\n                a = filterPoints(a, a.next);\n                c = filterPoints(c, c.next);\n\n                // run earcut on each half\n                earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n                earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n                return;\n            }\n            b = b.next;\n        }\n        a = a.next;\n    } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n    var queue = [],\n        i, len, start, end, list;\n\n    for (i = 0, len = holeIndices.length; i < len; i++) {\n        start = holeIndices[i] * dim;\n        end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n        list = linkedList(data, start, end, dim, false);\n        if (list === list.next) list.steiner = true;\n        queue.push(getLeftmost(list));\n    }\n\n    queue.sort(compareX);\n\n    // process holes from left to right\n    for (i = 0; i < queue.length; i++) {\n        outerNode = eliminateHole(queue[i], outerNode);\n    }\n\n    return outerNode;\n}\n\nfunction compareX(a, b) {\n    return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n    var bridge = findHoleBridge(hole, outerNode);\n    if (!bridge) {\n        return outerNode;\n    }\n\n    var bridgeReverse = splitPolygon(bridge, hole);\n\n    // filter collinear points around the cuts\n    filterPoints(bridgeReverse, bridgeReverse.next);\n    return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n    var p = outerNode,\n        hx = hole.x,\n        hy = hole.y,\n        qx = -Infinity,\n        m;\n\n    // find a segment intersected by a ray from the hole's leftmost point to the left;\n    // segment's endpoint with lesser x will be potential connection point\n    do {\n        if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n            var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n            if (x <= hx && x > qx) {\n                qx = x;\n                m = p.x < p.next.x ? p : p.next;\n                if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n            }\n        }\n        p = p.next;\n    } while (p !== outerNode);\n\n    if (!m) return null;\n\n    // look for points inside the triangle of hole point, segment intersection and endpoint;\n    // if there are no points found, we have a valid connection;\n    // otherwise choose the point of the minimum angle with the ray as connection point\n\n    var stop = m,\n        mx = m.x,\n        my = m.y,\n        tanMin = Infinity,\n        tan;\n\n    p = m;\n\n    do {\n        if (hx >= p.x && p.x >= mx && hx !== p.x &&\n                pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n            tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n            if (locallyInside(p, hole) &&\n                (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n                m = p;\n                tanMin = tan;\n            }\n        }\n\n        p = p.next;\n    } while (p !== stop);\n\n    return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n    return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n    var p = start;\n    do {\n        if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n        p.prevZ = p.prev;\n        p.nextZ = p.next;\n        p = p.next;\n    } while (p !== start);\n\n    p.prevZ.nextZ = null;\n    p.prevZ = null;\n\n    sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n    var i, p, q, e, tail, numMerges, pSize, qSize,\n        inSize = 1;\n\n    do {\n        p = list;\n        list = null;\n        tail = null;\n        numMerges = 0;\n\n        while (p) {\n            numMerges++;\n            q = p;\n            pSize = 0;\n            for (i = 0; i < inSize; i++) {\n                pSize++;\n                q = q.nextZ;\n                if (!q) break;\n            }\n            qSize = inSize;\n\n            while (pSize > 0 || (qSize > 0 && q)) {\n\n                if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n                    e = p;\n                    p = p.nextZ;\n                    pSize--;\n                } else {\n                    e = q;\n                    q = q.nextZ;\n                    qSize--;\n                }\n\n                if (tail) tail.nextZ = e;\n                else list = e;\n\n                e.prevZ = tail;\n                tail = e;\n            }\n\n            p = q;\n        }\n\n        tail.nextZ = null;\n        inSize *= 2;\n\n    } while (numMerges > 1);\n\n    return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n    // coords are transformed into non-negative 15-bit integer range\n    x = (x - minX) * invSize | 0;\n    y = (y - minY) * invSize | 0;\n\n    x = (x | (x << 8)) & 0x00FF00FF;\n    x = (x | (x << 4)) & 0x0F0F0F0F;\n    x = (x | (x << 2)) & 0x33333333;\n    x = (x | (x << 1)) & 0x55555555;\n\n    y = (y | (y << 8)) & 0x00FF00FF;\n    y = (y | (y << 4)) & 0x0F0F0F0F;\n    y = (y | (y << 2)) & 0x33333333;\n    y = (y | (y << 1)) & 0x55555555;\n\n    return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n    var p = start,\n        leftmost = start;\n    do {\n        if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n        p = p.next;\n    } while (p !== start);\n\n    return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n    return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n           (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n           (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n    return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n           (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n            (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n            equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n    return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n    return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n    var o1 = sign(area(p1, q1, p2));\n    var o2 = sign(area(p1, q1, q2));\n    var o3 = sign(area(p2, q2, p1));\n    var o4 = sign(area(p2, q2, q1));\n\n    if (o1 !== o2 && o3 !== o4) return true; // general case\n\n    if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n    if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n    if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n    if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n    return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n    return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n    return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n    var p = a;\n    do {\n        if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n                intersects(p, p.next, a, b)) return true;\n        p = p.next;\n    } while (p !== a);\n\n    return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n    return area(a.prev, a, a.next) < 0 ?\n        area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n        area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n    var p = a,\n        inside = false,\n        px = (a.x + b.x) / 2,\n        py = (a.y + b.y) / 2;\n    do {\n        if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n                (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n            inside = !inside;\n        p = p.next;\n    } while (p !== a);\n\n    return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n    var a2 = new Node(a.i, a.x, a.y),\n        b2 = new Node(b.i, b.x, b.y),\n        an = a.next,\n        bp = b.prev;\n\n    a.next = b;\n    b.prev = a;\n\n    a2.next = an;\n    an.prev = a2;\n\n    b2.next = a2;\n    a2.prev = b2;\n\n    bp.next = b2;\n    b2.prev = bp;\n\n    return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n    var p = new Node(i, x, y);\n\n    if (!last) {\n        p.prev = p;\n        p.next = p;\n\n    } else {\n        p.next = last.next;\n        p.prev = last;\n        last.next.prev = p;\n        last.next = p;\n    }\n    return p;\n}\n\nfunction removeNode(p) {\n    p.next.prev = p.prev;\n    p.prev.next = p.next;\n\n    if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n    if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n    // vertex index in coordinates array\n    this.i = i;\n\n    // vertex coordinates\n    this.x = x;\n    this.y = y;\n\n    // previous and next vertex nodes in a polygon ring\n    this.prev = null;\n    this.next = null;\n\n    // z-order curve value\n    this.z = 0;\n\n    // previous and next nodes in z-order\n    this.prevZ = null;\n    this.nextZ = null;\n\n    // indicates whether this is a steiner point\n    this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n    var hasHoles = holeIndices && holeIndices.length;\n    var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n    var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n    if (hasHoles) {\n        for (var i = 0, len = holeIndices.length; i < len; i++) {\n            var start = holeIndices[i] * dim;\n            var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n            polygonArea -= Math.abs(signedArea(data, start, end, dim));\n        }\n    }\n\n    var trianglesArea = 0;\n    for (i = 0; i < triangles.length; i += 3) {\n        var a = triangles[i] * dim;\n        var b = triangles[i + 1] * dim;\n        var c = triangles[i + 2] * dim;\n        trianglesArea += Math.abs(\n            (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n            (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n    }\n\n    return polygonArea === 0 && trianglesArea === 0 ? 0 :\n        Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n    var sum = 0;\n    for (var i = start, j = end - dim; i < end; i += dim) {\n        sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n        j = i;\n    }\n    return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n    var dim = data[0][0].length,\n        result = {vertices: [], holes: [], dimensions: dim},\n        holeIndex = 0;\n\n    for (var i = 0; i < data.length; i++) {\n        for (var j = 0; j < data[i].length; j++) {\n            for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n        }\n        if (i > 0) {\n            holeIndex += data[i - 1].length;\n            result.holes.push(holeIndex);\n        }\n    }\n    return result;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/earcut/src/earcut.js?");

/***/ }),

/***/ "./node_modules/extend/index.js":
/*!**************************************!*\
  !*** ./node_modules/extend/index.js ***!
  \**************************************/
/***/ (function(module) {

"use strict";
eval("\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/extend/index.js?");

/***/ }),

/***/ "./node_modules/gl-matrix/esm/common.js":
/*!**********************************************!*\
  !*** ./node_modules/gl-matrix/esm/common.js ***!
  \**********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ARRAY_TYPE\": function() { return /* binding */ ARRAY_TYPE; },\n/* harmony export */   \"EPSILON\": function() { return /* binding */ EPSILON; },\n/* harmony export */   \"RANDOM\": function() { return /* binding */ RANDOM; },\n/* harmony export */   \"equals\": function() { return /* binding */ equals; },\n/* harmony export */   \"setMatrixArrayType\": function() { return /* binding */ setMatrixArrayType; },\n/* harmony export */   \"toRadian\": function() { return /* binding */ toRadian; }\n/* harmony export */ });\n/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nvar EPSILON = 0.000001;\nvar ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nvar RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nfunction setMatrixArrayType(type) {\n  ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nfunction toRadian(a) {\n  return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nfunction equals(a, b) {\n  return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n  var y = 0,\n      i = arguments.length;\n\n  while (i--) {\n    y += arguments[i] * arguments[i];\n  }\n\n  return Math.sqrt(y);\n};\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/gl-matrix/esm/common.js?");

/***/ }),

/***/ "./node_modules/gl-matrix/esm/mat4.js":
/*!********************************************!*\
  !*** ./node_modules/gl-matrix/esm/mat4.js ***!
  \********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"add\": function() { return /* binding */ add; },\n/* harmony export */   \"adjoint\": function() { return /* binding */ adjoint; },\n/* harmony export */   \"clone\": function() { return /* binding */ clone; },\n/* harmony export */   \"copy\": function() { return /* binding */ copy; },\n/* harmony export */   \"create\": function() { return /* binding */ create; },\n/* harmony export */   \"determinant\": function() { return /* binding */ determinant; },\n/* harmony export */   \"equals\": function() { return /* binding */ equals; },\n/* harmony export */   \"exactEquals\": function() { return /* binding */ exactEquals; },\n/* harmony export */   \"frob\": function() { return /* binding */ frob; },\n/* harmony export */   \"fromQuat\": function() { return /* binding */ fromQuat; },\n/* harmony export */   \"fromQuat2\": function() { return /* binding */ fromQuat2; },\n/* harmony export */   \"fromRotation\": function() { return /* binding */ fromRotation; },\n/* harmony export */   \"fromRotationTranslation\": function() { return /* binding */ fromRotationTranslation; },\n/* harmony export */   \"fromRotationTranslationScale\": function() { return /* binding */ fromRotationTranslationScale; },\n/* harmony export */   \"fromRotationTranslationScaleOrigin\": function() { return /* binding */ fromRotationTranslationScaleOrigin; },\n/* harmony export */   \"fromScaling\": function() { return /* binding */ fromScaling; },\n/* harmony export */   \"fromTranslation\": function() { return /* binding */ fromTranslation; },\n/* harmony export */   \"fromValues\": function() { return /* binding */ fromValues; },\n/* harmony export */   \"fromXRotation\": function() { return /* binding */ fromXRotation; },\n/* harmony export */   \"fromYRotation\": function() { return /* binding */ fromYRotation; },\n/* harmony export */   \"fromZRotation\": function() { return /* binding */ fromZRotation; },\n/* harmony export */   \"frustum\": function() { return /* binding */ frustum; },\n/* harmony export */   \"getRotation\": function() { return /* binding */ getRotation; },\n/* harmony export */   \"getScaling\": function() { return /* binding */ getScaling; },\n/* harmony export */   \"getTranslation\": function() { return /* binding */ getTranslation; },\n/* harmony export */   \"identity\": function() { return /* binding */ identity; },\n/* harmony export */   \"invert\": function() { return /* binding */ invert; },\n/* harmony export */   \"lookAt\": function() { return /* binding */ lookAt; },\n/* harmony export */   \"mul\": function() { return /* binding */ mul; },\n/* harmony export */   \"multiply\": function() { return /* binding */ multiply; },\n/* harmony export */   \"multiplyScalar\": function() { return /* binding */ multiplyScalar; },\n/* harmony export */   \"multiplyScalarAndAdd\": function() { return /* binding */ multiplyScalarAndAdd; },\n/* harmony export */   \"ortho\": function() { return /* binding */ ortho; },\n/* harmony export */   \"orthoNO\": function() { return /* binding */ orthoNO; },\n/* harmony export */   \"orthoZO\": function() { return /* binding */ orthoZO; },\n/* harmony export */   \"perspective\": function() { return /* binding */ perspective; },\n/* harmony export */   \"perspectiveFromFieldOfView\": function() { return /* binding */ perspectiveFromFieldOfView; },\n/* harmony export */   \"perspectiveNO\": function() { return /* binding */ perspectiveNO; },\n/* harmony export */   \"perspectiveZO\": function() { return /* binding */ perspectiveZO; },\n/* harmony export */   \"rotate\": function() { return /* binding */ rotate; },\n/* harmony export */   \"rotateX\": function() { return /* binding */ rotateX; },\n/* harmony export */   \"rotateY\": function() { return /* binding */ rotateY; },\n/* harmony export */   \"rotateZ\": function() { return /* binding */ rotateZ; },\n/* harmony export */   \"scale\": function() { return /* binding */ scale; },\n/* harmony export */   \"set\": function() { return /* binding */ set; },\n/* harmony export */   \"str\": function() { return /* binding */ str; },\n/* harmony export */   \"sub\": function() { return /* binding */ sub; },\n/* harmony export */   \"subtract\": function() { return /* binding */ subtract; },\n/* harmony export */   \"targetTo\": function() { return /* binding */ targetTo; },\n/* harmony export */   \"translate\": function() { return /* binding */ translate; },\n/* harmony export */   \"transpose\": function() { return /* binding */ transpose; }\n/* harmony export */ });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n\n/**\n * 4x4 Matrix<br>Format: column-major, when typed out it looks like row-major<br>The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\n\nfunction create() {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(16);\n\n  if (_common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE != Float32Array) {\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[11] = 0;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = 0;\n  }\n\n  out[0] = 1;\n  out[5] = 1;\n  out[10] = 1;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\n\nfunction clone(a) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(16);\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  out[4] = a[4];\n  out[5] = a[5];\n  out[6] = a[6];\n  out[7] = a[7];\n  out[8] = a[8];\n  out[9] = a[9];\n  out[10] = a[10];\n  out[11] = a[11];\n  out[12] = a[12];\n  out[13] = a[13];\n  out[14] = a[14];\n  out[15] = a[15];\n  return out;\n}\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nfunction copy(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  out[4] = a[4];\n  out[5] = a[5];\n  out[6] = a[6];\n  out[7] = a[7];\n  out[8] = a[8];\n  out[9] = a[9];\n  out[10] = a[10];\n  out[11] = a[11];\n  out[12] = a[12];\n  out[13] = a[13];\n  out[14] = a[14];\n  out[15] = a[15];\n  return out;\n}\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\n\nfunction fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(16);\n  out[0] = m00;\n  out[1] = m01;\n  out[2] = m02;\n  out[3] = m03;\n  out[4] = m10;\n  out[5] = m11;\n  out[6] = m12;\n  out[7] = m13;\n  out[8] = m20;\n  out[9] = m21;\n  out[10] = m22;\n  out[11] = m23;\n  out[12] = m30;\n  out[13] = m31;\n  out[14] = m32;\n  out[15] = m33;\n  return out;\n}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\n\nfunction set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n  out[0] = m00;\n  out[1] = m01;\n  out[2] = m02;\n  out[3] = m03;\n  out[4] = m10;\n  out[5] = m11;\n  out[6] = m12;\n  out[7] = m13;\n  out[8] = m20;\n  out[9] = m21;\n  out[10] = m22;\n  out[11] = m23;\n  out[12] = m30;\n  out[13] = m31;\n  out[14] = m32;\n  out[15] = m33;\n  return out;\n}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\n\nfunction identity(out) {\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = 1;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 1;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nfunction transpose(out, a) {\n  // If we are transposing ourselves we can skip a few steps but have to cache some values\n  if (out === a) {\n    var a01 = a[1],\n        a02 = a[2],\n        a03 = a[3];\n    var a12 = a[6],\n        a13 = a[7];\n    var a23 = a[11];\n    out[1] = a[4];\n    out[2] = a[8];\n    out[3] = a[12];\n    out[4] = a01;\n    out[6] = a[9];\n    out[7] = a[13];\n    out[8] = a02;\n    out[9] = a12;\n    out[11] = a[14];\n    out[12] = a03;\n    out[13] = a13;\n    out[14] = a23;\n  } else {\n    out[0] = a[0];\n    out[1] = a[4];\n    out[2] = a[8];\n    out[3] = a[12];\n    out[4] = a[1];\n    out[5] = a[5];\n    out[6] = a[9];\n    out[7] = a[13];\n    out[8] = a[2];\n    out[9] = a[6];\n    out[10] = a[10];\n    out[11] = a[14];\n    out[12] = a[3];\n    out[13] = a[7];\n    out[14] = a[11];\n    out[15] = a[15];\n  }\n\n  return out;\n}\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nfunction invert(out, a) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a03 = a[3];\n  var a10 = a[4],\n      a11 = a[5],\n      a12 = a[6],\n      a13 = a[7];\n  var a20 = a[8],\n      a21 = a[9],\n      a22 = a[10],\n      a23 = a[11];\n  var a30 = a[12],\n      a31 = a[13],\n      a32 = a[14],\n      a33 = a[15];\n  var b00 = a00 * a11 - a01 * a10;\n  var b01 = a00 * a12 - a02 * a10;\n  var b02 = a00 * a13 - a03 * a10;\n  var b03 = a01 * a12 - a02 * a11;\n  var b04 = a01 * a13 - a03 * a11;\n  var b05 = a02 * a13 - a03 * a12;\n  var b06 = a20 * a31 - a21 * a30;\n  var b07 = a20 * a32 - a22 * a30;\n  var b08 = a20 * a33 - a23 * a30;\n  var b09 = a21 * a32 - a22 * a31;\n  var b10 = a21 * a33 - a23 * a31;\n  var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n  var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n  if (!det) {\n    return null;\n  }\n\n  det = 1.0 / det;\n  out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n  out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n  out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n  out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n  out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n  out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n  out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n  out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n  out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n  out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n  out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n  out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n  out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n  out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n  out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n  out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n  return out;\n}\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nfunction adjoint(out, a) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a03 = a[3];\n  var a10 = a[4],\n      a11 = a[5],\n      a12 = a[6],\n      a13 = a[7];\n  var a20 = a[8],\n      a21 = a[9],\n      a22 = a[10],\n      a23 = a[11];\n  var a30 = a[12],\n      a31 = a[13],\n      a32 = a[14],\n      a33 = a[15];\n  out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n  out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n  out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n  out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n  out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n  out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n  out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n  out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n  out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n  out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n  out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n  out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n  out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n  out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n  out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n  out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n  return out;\n}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\n\nfunction determinant(a) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a03 = a[3];\n  var a10 = a[4],\n      a11 = a[5],\n      a12 = a[6],\n      a13 = a[7];\n  var a20 = a[8],\n      a21 = a[9],\n      a22 = a[10],\n      a23 = a[11];\n  var a30 = a[12],\n      a31 = a[13],\n      a32 = a[14],\n      a33 = a[15];\n  var b00 = a00 * a11 - a01 * a10;\n  var b01 = a00 * a12 - a02 * a10;\n  var b02 = a00 * a13 - a03 * a10;\n  var b03 = a01 * a12 - a02 * a11;\n  var b04 = a01 * a13 - a03 * a11;\n  var b05 = a02 * a13 - a03 * a12;\n  var b06 = a20 * a31 - a21 * a30;\n  var b07 = a20 * a32 - a22 * a30;\n  var b08 = a20 * a33 - a23 * a30;\n  var b09 = a21 * a32 - a22 * a31;\n  var b10 = a21 * a33 - a23 * a31;\n  var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n  return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nfunction multiply(out, a, b) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a03 = a[3];\n  var a10 = a[4],\n      a11 = a[5],\n      a12 = a[6],\n      a13 = a[7];\n  var a20 = a[8],\n      a21 = a[9],\n      a22 = a[10],\n      a23 = a[11];\n  var a30 = a[12],\n      a31 = a[13],\n      a32 = a[14],\n      a33 = a[15]; // Cache only the current line of the second matrix\n\n  var b0 = b[0],\n      b1 = b[1],\n      b2 = b[2],\n      b3 = b[3];\n  out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n  out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n  out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n  out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n  b0 = b[4];\n  b1 = b[5];\n  b2 = b[6];\n  b3 = b[7];\n  out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n  out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n  out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n  out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n  b0 = b[8];\n  b1 = b[9];\n  b2 = b[10];\n  b3 = b[11];\n  out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n  out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n  out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n  out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n  b0 = b[12];\n  b1 = b[13];\n  b2 = b[14];\n  b3 = b[15];\n  out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n  out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n  out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n  out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n  return out;\n}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\n\nfunction translate(out, a, v) {\n  var x = v[0],\n      y = v[1],\n      z = v[2];\n  var a00, a01, a02, a03;\n  var a10, a11, a12, a13;\n  var a20, a21, a22, a23;\n\n  if (a === out) {\n    out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n    out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n    out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n    out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n  } else {\n    a00 = a[0];\n    a01 = a[1];\n    a02 = a[2];\n    a03 = a[3];\n    a10 = a[4];\n    a11 = a[5];\n    a12 = a[6];\n    a13 = a[7];\n    a20 = a[8];\n    a21 = a[9];\n    a22 = a[10];\n    a23 = a[11];\n    out[0] = a00;\n    out[1] = a01;\n    out[2] = a02;\n    out[3] = a03;\n    out[4] = a10;\n    out[5] = a11;\n    out[6] = a12;\n    out[7] = a13;\n    out[8] = a20;\n    out[9] = a21;\n    out[10] = a22;\n    out[11] = a23;\n    out[12] = a00 * x + a10 * y + a20 * z + a[12];\n    out[13] = a01 * x + a11 * y + a21 * z + a[13];\n    out[14] = a02 * x + a12 * y + a22 * z + a[14];\n    out[15] = a03 * x + a13 * y + a23 * z + a[15];\n  }\n\n  return out;\n}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\n\nfunction scale(out, a, v) {\n  var x = v[0],\n      y = v[1],\n      z = v[2];\n  out[0] = a[0] * x;\n  out[1] = a[1] * x;\n  out[2] = a[2] * x;\n  out[3] = a[3] * x;\n  out[4] = a[4] * y;\n  out[5] = a[5] * y;\n  out[6] = a[6] * y;\n  out[7] = a[7] * y;\n  out[8] = a[8] * z;\n  out[9] = a[9] * z;\n  out[10] = a[10] * z;\n  out[11] = a[11] * z;\n  out[12] = a[12];\n  out[13] = a[13];\n  out[14] = a[14];\n  out[15] = a[15];\n  return out;\n}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nfunction rotate(out, a, rad, axis) {\n  var x = axis[0],\n      y = axis[1],\n      z = axis[2];\n  var len = Math.hypot(x, y, z);\n  var s, c, t;\n  var a00, a01, a02, a03;\n  var a10, a11, a12, a13;\n  var a20, a21, a22, a23;\n  var b00, b01, b02;\n  var b10, b11, b12;\n  var b20, b21, b22;\n\n  if (len < _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON) {\n    return null;\n  }\n\n  len = 1 / len;\n  x *= len;\n  y *= len;\n  z *= len;\n  s = Math.sin(rad);\n  c = Math.cos(rad);\n  t = 1 - c;\n  a00 = a[0];\n  a01 = a[1];\n  a02 = a[2];\n  a03 = a[3];\n  a10 = a[4];\n  a11 = a[5];\n  a12 = a[6];\n  a13 = a[7];\n  a20 = a[8];\n  a21 = a[9];\n  a22 = a[10];\n  a23 = a[11]; // Construct the elements of the rotation matrix\n\n  b00 = x * x * t + c;\n  b01 = y * x * t + z * s;\n  b02 = z * x * t - y * s;\n  b10 = x * y * t - z * s;\n  b11 = y * y * t + c;\n  b12 = z * y * t + x * s;\n  b20 = x * z * t + y * s;\n  b21 = y * z * t - x * s;\n  b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n  out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n  out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n  out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n  out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n  out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n  out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n  out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n  out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n  out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n  out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n  out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n  out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n  if (a !== out) {\n    // If the source and destination differ, copy the unchanged last row\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n  }\n\n  return out;\n}\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction rotateX(out, a, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad);\n  var a10 = a[4];\n  var a11 = a[5];\n  var a12 = a[6];\n  var a13 = a[7];\n  var a20 = a[8];\n  var a21 = a[9];\n  var a22 = a[10];\n  var a23 = a[11];\n\n  if (a !== out) {\n    // If the source and destination differ, copy the unchanged rows\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n  } // Perform axis-specific matrix multiplication\n\n\n  out[4] = a10 * c + a20 * s;\n  out[5] = a11 * c + a21 * s;\n  out[6] = a12 * c + a22 * s;\n  out[7] = a13 * c + a23 * s;\n  out[8] = a20 * c - a10 * s;\n  out[9] = a21 * c - a11 * s;\n  out[10] = a22 * c - a12 * s;\n  out[11] = a23 * c - a13 * s;\n  return out;\n}\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction rotateY(out, a, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad);\n  var a00 = a[0];\n  var a01 = a[1];\n  var a02 = a[2];\n  var a03 = a[3];\n  var a20 = a[8];\n  var a21 = a[9];\n  var a22 = a[10];\n  var a23 = a[11];\n\n  if (a !== out) {\n    // If the source and destination differ, copy the unchanged rows\n    out[4] = a[4];\n    out[5] = a[5];\n    out[6] = a[6];\n    out[7] = a[7];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n  } // Perform axis-specific matrix multiplication\n\n\n  out[0] = a00 * c - a20 * s;\n  out[1] = a01 * c - a21 * s;\n  out[2] = a02 * c - a22 * s;\n  out[3] = a03 * c - a23 * s;\n  out[8] = a00 * s + a20 * c;\n  out[9] = a01 * s + a21 * c;\n  out[10] = a02 * s + a22 * c;\n  out[11] = a03 * s + a23 * c;\n  return out;\n}\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction rotateZ(out, a, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad);\n  var a00 = a[0];\n  var a01 = a[1];\n  var a02 = a[2];\n  var a03 = a[3];\n  var a10 = a[4];\n  var a11 = a[5];\n  var a12 = a[6];\n  var a13 = a[7];\n\n  if (a !== out) {\n    // If the source and destination differ, copy the unchanged last row\n    out[8] = a[8];\n    out[9] = a[9];\n    out[10] = a[10];\n    out[11] = a[11];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n  } // Perform axis-specific matrix multiplication\n\n\n  out[0] = a00 * c + a10 * s;\n  out[1] = a01 * c + a11 * s;\n  out[2] = a02 * c + a12 * s;\n  out[3] = a03 * c + a13 * s;\n  out[4] = a10 * c - a00 * s;\n  out[5] = a11 * c - a01 * s;\n  out[6] = a12 * c - a02 * s;\n  out[7] = a13 * c - a03 * s;\n  return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nfunction fromTranslation(out, v) {\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = 1;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 1;\n  out[11] = 0;\n  out[12] = v[0];\n  out[13] = v[1];\n  out[14] = v[2];\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\n\nfunction fromScaling(out, v) {\n  out[0] = v[0];\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = v[1];\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = v[2];\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nfunction fromRotation(out, rad, axis) {\n  var x = axis[0],\n      y = axis[1],\n      z = axis[2];\n  var len = Math.hypot(x, y, z);\n  var s, c, t;\n\n  if (len < _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON) {\n    return null;\n  }\n\n  len = 1 / len;\n  x *= len;\n  y *= len;\n  z *= len;\n  s = Math.sin(rad);\n  c = Math.cos(rad);\n  t = 1 - c; // Perform rotation-specific matrix multiplication\n\n  out[0] = x * x * t + c;\n  out[1] = y * x * t + z * s;\n  out[2] = z * x * t - y * s;\n  out[3] = 0;\n  out[4] = x * y * t - z * s;\n  out[5] = y * y * t + c;\n  out[6] = z * y * t + x * s;\n  out[7] = 0;\n  out[8] = x * z * t + y * s;\n  out[9] = y * z * t - x * s;\n  out[10] = z * z * t + c;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction fromXRotation(out, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = c;\n  out[6] = s;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = -s;\n  out[10] = c;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction fromYRotation(out, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n  out[0] = c;\n  out[1] = 0;\n  out[2] = -s;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = 1;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = s;\n  out[9] = 0;\n  out[10] = c;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction fromZRotation(out, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n  out[0] = c;\n  out[1] = s;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = -s;\n  out[5] = c;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 1;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, vec);\n *     let quatMat = mat4.create();\n *     quat4.toMat4(quat, quatMat);\n *     mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nfunction fromRotationTranslation(out, q, v) {\n  // Quaternion math\n  var x = q[0],\n      y = q[1],\n      z = q[2],\n      w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var xy = x * y2;\n  var xz = x * z2;\n  var yy = y * y2;\n  var yz = y * z2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  out[0] = 1 - (yy + zz);\n  out[1] = xy + wz;\n  out[2] = xz - wy;\n  out[3] = 0;\n  out[4] = xy - wz;\n  out[5] = 1 - (xx + zz);\n  out[6] = yz + wx;\n  out[7] = 0;\n  out[8] = xz + wy;\n  out[9] = yz - wx;\n  out[10] = 1 - (xx + yy);\n  out[11] = 0;\n  out[12] = v[0];\n  out[13] = v[1];\n  out[14] = v[2];\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\n\nfunction fromQuat2(out, a) {\n  var translation = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(3);\n  var bx = -a[0],\n      by = -a[1],\n      bz = -a[2],\n      bw = a[3],\n      ax = a[4],\n      ay = a[5],\n      az = a[6],\n      aw = a[7];\n  var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n  if (magnitude > 0) {\n    translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n    translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n    translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n  } else {\n    translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n    translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n    translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n  }\n\n  fromRotationTranslation(out, a, translation);\n  return out;\n}\n/**\n * Returns the translation vector component of a transformation\n *  matrix. If a matrix is built with fromRotationTranslation,\n *  the returned vector will be the same as the translation vector\n *  originally supplied.\n * @param  {vec3} out Vector to receive translation component\n * @param  {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nfunction getTranslation(out, mat) {\n  out[0] = mat[12];\n  out[1] = mat[13];\n  out[2] = mat[14];\n  return out;\n}\n/**\n * Returns the scaling factor component of a transformation\n *  matrix. If a matrix is built with fromRotationTranslationScale\n *  with a normalized Quaternion paramter, the returned vector will be\n *  the same as the scaling vector\n *  originally supplied.\n * @param  {vec3} out Vector to receive scaling factor component\n * @param  {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nfunction getScaling(out, mat) {\n  var m11 = mat[0];\n  var m12 = mat[1];\n  var m13 = mat[2];\n  var m21 = mat[4];\n  var m22 = mat[5];\n  var m23 = mat[6];\n  var m31 = mat[8];\n  var m32 = mat[9];\n  var m33 = mat[10];\n  out[0] = Math.hypot(m11, m12, m13);\n  out[1] = Math.hypot(m21, m22, m23);\n  out[2] = Math.hypot(m31, m32, m33);\n  return out;\n}\n/**\n * Returns a quaternion representing the rotational component\n *  of a transformation matrix. If a matrix is built with\n *  fromRotationTranslation, the returned quaternion will be the\n *  same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\n\nfunction getRotation(out, mat) {\n  var scaling = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(3);\n  getScaling(scaling, mat);\n  var is1 = 1 / scaling[0];\n  var is2 = 1 / scaling[1];\n  var is3 = 1 / scaling[2];\n  var sm11 = mat[0] * is1;\n  var sm12 = mat[1] * is2;\n  var sm13 = mat[2] * is3;\n  var sm21 = mat[4] * is1;\n  var sm22 = mat[5] * is2;\n  var sm23 = mat[6] * is3;\n  var sm31 = mat[8] * is1;\n  var sm32 = mat[9] * is2;\n  var sm33 = mat[10] * is3;\n  var trace = sm11 + sm22 + sm33;\n  var S = 0;\n\n  if (trace > 0) {\n    S = Math.sqrt(trace + 1.0) * 2;\n    out[3] = 0.25 * S;\n    out[0] = (sm23 - sm32) / S;\n    out[1] = (sm31 - sm13) / S;\n    out[2] = (sm12 - sm21) / S;\n  } else if (sm11 > sm22 && sm11 > sm33) {\n    S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n    out[3] = (sm23 - sm32) / S;\n    out[0] = 0.25 * S;\n    out[1] = (sm12 + sm21) / S;\n    out[2] = (sm31 + sm13) / S;\n  } else if (sm22 > sm33) {\n    S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n    out[3] = (sm31 - sm13) / S;\n    out[0] = (sm12 + sm21) / S;\n    out[1] = 0.25 * S;\n    out[2] = (sm23 + sm32) / S;\n  } else {\n    S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n    out[3] = (sm12 - sm21) / S;\n    out[0] = (sm31 + sm13) / S;\n    out[1] = (sm23 + sm32) / S;\n    out[2] = 0.25 * S;\n  }\n\n  return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, vec);\n *     let quatMat = mat4.create();\n *     quat4.toMat4(quat, quatMat);\n *     mat4.multiply(dest, quatMat);\n *     mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\n\nfunction fromRotationTranslationScale(out, q, v, s) {\n  // Quaternion math\n  var x = q[0],\n      y = q[1],\n      z = q[2],\n      w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var xy = x * y2;\n  var xz = x * z2;\n  var yy = y * y2;\n  var yz = y * z2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  var sx = s[0];\n  var sy = s[1];\n  var sz = s[2];\n  out[0] = (1 - (yy + zz)) * sx;\n  out[1] = (xy + wz) * sx;\n  out[2] = (xz - wy) * sx;\n  out[3] = 0;\n  out[4] = (xy - wz) * sy;\n  out[5] = (1 - (xx + zz)) * sy;\n  out[6] = (yz + wx) * sy;\n  out[7] = 0;\n  out[8] = (xz + wy) * sz;\n  out[9] = (yz - wx) * sz;\n  out[10] = (1 - (xx + yy)) * sz;\n  out[11] = 0;\n  out[12] = v[0];\n  out[13] = v[1];\n  out[14] = v[2];\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, vec);\n *     mat4.translate(dest, origin);\n *     let quatMat = mat4.create();\n *     quat4.toMat4(quat, quatMat);\n *     mat4.multiply(dest, quatMat);\n *     mat4.scale(dest, scale)\n *     mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\n\nfunction fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n  // Quaternion math\n  var x = q[0],\n      y = q[1],\n      z = q[2],\n      w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var xy = x * y2;\n  var xz = x * z2;\n  var yy = y * y2;\n  var yz = y * z2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  var sx = s[0];\n  var sy = s[1];\n  var sz = s[2];\n  var ox = o[0];\n  var oy = o[1];\n  var oz = o[2];\n  var out0 = (1 - (yy + zz)) * sx;\n  var out1 = (xy + wz) * sx;\n  var out2 = (xz - wy) * sx;\n  var out4 = (xy - wz) * sy;\n  var out5 = (1 - (xx + zz)) * sy;\n  var out6 = (yz + wx) * sy;\n  var out8 = (xz + wy) * sz;\n  var out9 = (yz - wx) * sz;\n  var out10 = (1 - (xx + yy)) * sz;\n  out[0] = out0;\n  out[1] = out1;\n  out[2] = out2;\n  out[3] = 0;\n  out[4] = out4;\n  out[5] = out5;\n  out[6] = out6;\n  out[7] = 0;\n  out[8] = out8;\n  out[9] = out9;\n  out[10] = out10;\n  out[11] = 0;\n  out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n  out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n  out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n  out[15] = 1;\n  return out;\n}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\n\nfunction fromQuat(out, q) {\n  var x = q[0],\n      y = q[1],\n      z = q[2],\n      w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var yx = y * x2;\n  var yy = y * y2;\n  var zx = z * x2;\n  var zy = z * y2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  out[0] = 1 - yy - zz;\n  out[1] = yx + wz;\n  out[2] = zx - wy;\n  out[3] = 0;\n  out[4] = yx - wz;\n  out[5] = 1 - xx - zz;\n  out[6] = zy + wx;\n  out[7] = 0;\n  out[8] = zx + wy;\n  out[9] = zy - wx;\n  out[10] = 1 - xx - yy;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nfunction frustum(out, left, right, bottom, top, near, far) {\n  var rl = 1 / (right - left);\n  var tb = 1 / (top - bottom);\n  var nf = 1 / (near - far);\n  out[0] = near * 2 * rl;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = near * 2 * tb;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = (right + left) * rl;\n  out[9] = (top + bottom) * tb;\n  out[10] = (far + near) * nf;\n  out[11] = -1;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = far * near * 2 * nf;\n  out[15] = 0;\n  return out;\n}\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nfunction perspectiveNO(out, fovy, aspect, near, far) {\n  var f = 1.0 / Math.tan(fovy / 2),\n      nf;\n  out[0] = f / aspect;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = f;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[11] = -1;\n  out[12] = 0;\n  out[13] = 0;\n  out[15] = 0;\n\n  if (far != null && far !== Infinity) {\n    nf = 1 / (near - far);\n    out[10] = (far + near) * nf;\n    out[14] = 2 * far * near * nf;\n  } else {\n    out[10] = -1;\n    out[14] = -2 * near;\n  }\n\n  return out;\n}\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\n\nvar perspective = perspectiveNO;\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nfunction perspectiveZO(out, fovy, aspect, near, far) {\n  var f = 1.0 / Math.tan(fovy / 2),\n      nf;\n  out[0] = f / aspect;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = f;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[11] = -1;\n  out[12] = 0;\n  out[13] = 0;\n  out[15] = 0;\n\n  if (far != null && far !== Infinity) {\n    nf = 1 / (near - far);\n    out[10] = far * nf;\n    out[14] = far * near * nf;\n  } else {\n    out[10] = -1;\n    out[14] = -near;\n  }\n\n  return out;\n}\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nfunction perspectiveFromFieldOfView(out, fov, near, far) {\n  var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n  var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n  var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n  var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n  var xScale = 2.0 / (leftTan + rightTan);\n  var yScale = 2.0 / (upTan + downTan);\n  out[0] = xScale;\n  out[1] = 0.0;\n  out[2] = 0.0;\n  out[3] = 0.0;\n  out[4] = 0.0;\n  out[5] = yScale;\n  out[6] = 0.0;\n  out[7] = 0.0;\n  out[8] = -((leftTan - rightTan) * xScale * 0.5);\n  out[9] = (upTan - downTan) * yScale * 0.5;\n  out[10] = far / (near - far);\n  out[11] = -1.0;\n  out[12] = 0.0;\n  out[13] = 0.0;\n  out[14] = far * near / (near - far);\n  out[15] = 0.0;\n  return out;\n}\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nfunction orthoNO(out, left, right, bottom, top, near, far) {\n  var lr = 1 / (left - right);\n  var bt = 1 / (bottom - top);\n  var nf = 1 / (near - far);\n  out[0] = -2 * lr;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = -2 * bt;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 2 * nf;\n  out[11] = 0;\n  out[12] = (left + right) * lr;\n  out[13] = (top + bottom) * bt;\n  out[14] = (far + near) * nf;\n  out[15] = 1;\n  return out;\n}\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\n\nvar ortho = orthoNO;\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nfunction orthoZO(out, left, right, bottom, top, near, far) {\n  var lr = 1 / (left - right);\n  var bt = 1 / (bottom - top);\n  var nf = 1 / (near - far);\n  out[0] = -2 * lr;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = -2 * bt;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = nf;\n  out[11] = 0;\n  out[12] = (left + right) * lr;\n  out[13] = (top + bottom) * bt;\n  out[14] = near * nf;\n  out[15] = 1;\n  return out;\n}\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nfunction lookAt(out, eye, center, up) {\n  var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n  var eyex = eye[0];\n  var eyey = eye[1];\n  var eyez = eye[2];\n  var upx = up[0];\n  var upy = up[1];\n  var upz = up[2];\n  var centerx = center[0];\n  var centery = center[1];\n  var centerz = center[2];\n\n  if (Math.abs(eyex - centerx) < _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON && Math.abs(eyey - centery) < _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON && Math.abs(eyez - centerz) < _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON) {\n    return identity(out);\n  }\n\n  z0 = eyex - centerx;\n  z1 = eyey - centery;\n  z2 = eyez - centerz;\n  len = 1 / Math.hypot(z0, z1, z2);\n  z0 *= len;\n  z1 *= len;\n  z2 *= len;\n  x0 = upy * z2 - upz * z1;\n  x1 = upz * z0 - upx * z2;\n  x2 = upx * z1 - upy * z0;\n  len = Math.hypot(x0, x1, x2);\n\n  if (!len) {\n    x0 = 0;\n    x1 = 0;\n    x2 = 0;\n  } else {\n    len = 1 / len;\n    x0 *= len;\n    x1 *= len;\n    x2 *= len;\n  }\n\n  y0 = z1 * x2 - z2 * x1;\n  y1 = z2 * x0 - z0 * x2;\n  y2 = z0 * x1 - z1 * x0;\n  len = Math.hypot(y0, y1, y2);\n\n  if (!len) {\n    y0 = 0;\n    y1 = 0;\n    y2 = 0;\n  } else {\n    len = 1 / len;\n    y0 *= len;\n    y1 *= len;\n    y2 *= len;\n  }\n\n  out[0] = x0;\n  out[1] = y0;\n  out[2] = z0;\n  out[3] = 0;\n  out[4] = x1;\n  out[5] = y1;\n  out[6] = z1;\n  out[7] = 0;\n  out[8] = x2;\n  out[9] = y2;\n  out[10] = z2;\n  out[11] = 0;\n  out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n  out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n  out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n  out[15] = 1;\n  return out;\n}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nfunction targetTo(out, eye, target, up) {\n  var eyex = eye[0],\n      eyey = eye[1],\n      eyez = eye[2],\n      upx = up[0],\n      upy = up[1],\n      upz = up[2];\n  var z0 = eyex - target[0],\n      z1 = eyey - target[1],\n      z2 = eyez - target[2];\n  var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n  if (len > 0) {\n    len = 1 / Math.sqrt(len);\n    z0 *= len;\n    z1 *= len;\n    z2 *= len;\n  }\n\n  var x0 = upy * z2 - upz * z1,\n      x1 = upz * z0 - upx * z2,\n      x2 = upx * z1 - upy * z0;\n  len = x0 * x0 + x1 * x1 + x2 * x2;\n\n  if (len > 0) {\n    len = 1 / Math.sqrt(len);\n    x0 *= len;\n    x1 *= len;\n    x2 *= len;\n  }\n\n  out[0] = x0;\n  out[1] = x1;\n  out[2] = x2;\n  out[3] = 0;\n  out[4] = z1 * x2 - z2 * x1;\n  out[5] = z2 * x0 - z0 * x2;\n  out[6] = z0 * x1 - z1 * x0;\n  out[7] = 0;\n  out[8] = z0;\n  out[9] = z1;\n  out[10] = z2;\n  out[11] = 0;\n  out[12] = eyex;\n  out[13] = eyey;\n  out[14] = eyez;\n  out[15] = 1;\n  return out;\n}\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nfunction str(a) {\n  return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nfunction frob(a) {\n  return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nfunction add(out, a, b) {\n  out[0] = a[0] + b[0];\n  out[1] = a[1] + b[1];\n  out[2] = a[2] + b[2];\n  out[3] = a[3] + b[3];\n  out[4] = a[4] + b[4];\n  out[5] = a[5] + b[5];\n  out[6] = a[6] + b[6];\n  out[7] = a[7] + b[7];\n  out[8] = a[8] + b[8];\n  out[9] = a[9] + b[9];\n  out[10] = a[10] + b[10];\n  out[11] = a[11] + b[11];\n  out[12] = a[12] + b[12];\n  out[13] = a[13] + b[13];\n  out[14] = a[14] + b[14];\n  out[15] = a[15] + b[15];\n  return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nfunction subtract(out, a, b) {\n  out[0] = a[0] - b[0];\n  out[1] = a[1] - b[1];\n  out[2] = a[2] - b[2];\n  out[3] = a[3] - b[3];\n  out[4] = a[4] - b[4];\n  out[5] = a[5] - b[5];\n  out[6] = a[6] - b[6];\n  out[7] = a[7] - b[7];\n  out[8] = a[8] - b[8];\n  out[9] = a[9] - b[9];\n  out[10] = a[10] - b[10];\n  out[11] = a[11] - b[11];\n  out[12] = a[12] - b[12];\n  out[13] = a[13] - b[13];\n  out[14] = a[14] - b[14];\n  out[15] = a[15] - b[15];\n  return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\n\nfunction multiplyScalar(out, a, b) {\n  out[0] = a[0] * b;\n  out[1] = a[1] * b;\n  out[2] = a[2] * b;\n  out[3] = a[3] * b;\n  out[4] = a[4] * b;\n  out[5] = a[5] * b;\n  out[6] = a[6] * b;\n  out[7] = a[7] * b;\n  out[8] = a[8] * b;\n  out[9] = a[9] * b;\n  out[10] = a[10] * b;\n  out[11] = a[11] * b;\n  out[12] = a[12] * b;\n  out[13] = a[13] * b;\n  out[14] = a[14] * b;\n  out[15] = a[15] * b;\n  return out;\n}\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\n\nfunction multiplyScalarAndAdd(out, a, b, scale) {\n  out[0] = a[0] + b[0] * scale;\n  out[1] = a[1] + b[1] * scale;\n  out[2] = a[2] + b[2] * scale;\n  out[3] = a[3] + b[3] * scale;\n  out[4] = a[4] + b[4] * scale;\n  out[5] = a[5] + b[5] * scale;\n  out[6] = a[6] + b[6] * scale;\n  out[7] = a[7] + b[7] * scale;\n  out[8] = a[8] + b[8] * scale;\n  out[9] = a[9] + b[9] * scale;\n  out[10] = a[10] + b[10] * scale;\n  out[11] = a[11] + b[11] * scale;\n  out[12] = a[12] + b[12] * scale;\n  out[13] = a[13] + b[13] * scale;\n  out[14] = a[14] + b[14] * scale;\n  out[15] = a[15] + b[15] * scale;\n  return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n  return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n  var a0 = a[0],\n      a1 = a[1],\n      a2 = a[2],\n      a3 = a[3];\n  var a4 = a[4],\n      a5 = a[5],\n      a6 = a[6],\n      a7 = a[7];\n  var a8 = a[8],\n      a9 = a[9],\n      a10 = a[10],\n      a11 = a[11];\n  var a12 = a[12],\n      a13 = a[13],\n      a14 = a[14],\n      a15 = a[15];\n  var b0 = b[0],\n      b1 = b[1],\n      b2 = b[2],\n      b3 = b[3];\n  var b4 = b[4],\n      b5 = b[5],\n      b6 = b[6],\n      b7 = b[7];\n  var b8 = b[8],\n      b9 = b[9],\n      b10 = b[10],\n      b11 = b[11];\n  var b12 = b[12],\n      b13 = b[13],\n      b14 = b[14],\n      b15 = b[15];\n  return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\n\nvar sub = subtract;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/gl-matrix/esm/mat4.js?");

/***/ }),

/***/ "./node_modules/gl-matrix/esm/vec2.js":
/*!********************************************!*\
  !*** ./node_modules/gl-matrix/esm/vec2.js ***!
  \********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"add\": function() { return /* binding */ add; },\n/* harmony export */   \"angle\": function() { return /* binding */ angle; },\n/* harmony export */   \"ceil\": function() { return /* binding */ ceil; },\n/* harmony export */   \"clone\": function() { return /* binding */ clone; },\n/* harmony export */   \"copy\": function() { return /* binding */ copy; },\n/* harmony export */   \"create\": function() { return /* binding */ create; },\n/* harmony export */   \"cross\": function() { return /* binding */ cross; },\n/* harmony export */   \"dist\": function() { return /* binding */ dist; },\n/* harmony export */   \"distance\": function() { return /* binding */ distance; },\n/* harmony export */   \"div\": function() { return /* binding */ div; },\n/* harmony export */   \"divide\": function() { return /* binding */ divide; },\n/* harmony export */   \"dot\": function() { return /* binding */ dot; },\n/* harmony export */   \"equals\": function() { return /* binding */ equals; },\n/* harmony export */   \"exactEquals\": function() { return /* binding */ exactEquals; },\n/* harmony export */   \"floor\": function() { return /* binding */ floor; },\n/* harmony export */   \"forEach\": function() { return /* binding */ forEach; },\n/* harmony export */   \"fromValues\": function() { return /* binding */ fromValues; },\n/* harmony export */   \"inverse\": function() { return /* binding */ inverse; },\n/* harmony export */   \"len\": function() { return /* binding */ len; },\n/* harmony export */   \"length\": function() { return /* binding */ length; },\n/* harmony export */   \"lerp\": function() { return /* binding */ lerp; },\n/* harmony export */   \"max\": function() { return /* binding */ max; },\n/* harmony export */   \"min\": function() { return /* binding */ min; },\n/* harmony export */   \"mul\": function() { return /* binding */ mul; },\n/* harmony export */   \"multiply\": function() { return /* binding */ multiply; },\n/* harmony export */   \"negate\": function() { return /* binding */ negate; },\n/* harmony export */   \"normalize\": function() { return /* binding */ normalize; },\n/* harmony export */   \"random\": function() { return /* binding */ random; },\n/* harmony export */   \"rotate\": function() { return /* binding */ rotate; },\n/* harmony export */   \"round\": function() { return /* binding */ round; },\n/* harmony export */   \"scale\": function() { return /* binding */ scale; },\n/* harmony export */   \"scaleAndAdd\": function() { return /* binding */ scaleAndAdd; },\n/* harmony export */   \"set\": function() { return /* binding */ set; },\n/* harmony export */   \"sqrDist\": function() { return /* binding */ sqrDist; },\n/* harmony export */   \"sqrLen\": function() { return /* binding */ sqrLen; },\n/* harmony export */   \"squaredDistance\": function() { return /* binding */ squaredDistance; },\n/* harmony export */   \"squaredLength\": function() { return /* binding */ squaredLength; },\n/* harmony export */   \"str\": function() { return /* binding */ str; },\n/* harmony export */   \"sub\": function() { return /* binding */ sub; },\n/* harmony export */   \"subtract\": function() { return /* binding */ subtract; },\n/* harmony export */   \"transformMat2\": function() { return /* binding */ transformMat2; },\n/* harmony export */   \"transformMat2d\": function() { return /* binding */ transformMat2d; },\n/* harmony export */   \"transformMat3\": function() { return /* binding */ transformMat3; },\n/* harmony export */   \"transformMat4\": function() { return /* binding */ transformMat4; },\n/* harmony export */   \"zero\": function() { return /* binding */ zero; }\n/* harmony export */ });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nfunction create() {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(2);\n\n  if (_common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE != Float32Array) {\n    out[0] = 0;\n    out[1] = 0;\n  }\n\n  return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nfunction clone(a) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(2);\n  out[0] = a[0];\n  out[1] = a[1];\n  return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nfunction fromValues(x, y) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(2);\n  out[0] = x;\n  out[1] = y;\n  return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nfunction copy(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nfunction set(out, x, y) {\n  out[0] = x;\n  out[1] = y;\n  return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction add(out, a, b) {\n  out[0] = a[0] + b[0];\n  out[1] = a[1] + b[1];\n  return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction subtract(out, a, b) {\n  out[0] = a[0] - b[0];\n  out[1] = a[1] - b[1];\n  return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction multiply(out, a, b) {\n  out[0] = a[0] * b[0];\n  out[1] = a[1] * b[1];\n  return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction divide(out, a, b) {\n  out[0] = a[0] / b[0];\n  out[1] = a[1] / b[1];\n  return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nfunction ceil(out, a) {\n  out[0] = Math.ceil(a[0]);\n  out[1] = Math.ceil(a[1]);\n  return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nfunction floor(out, a) {\n  out[0] = Math.floor(a[0]);\n  out[1] = Math.floor(a[1]);\n  return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction min(out, a, b) {\n  out[0] = Math.min(a[0], b[0]);\n  out[1] = Math.min(a[1], b[1]);\n  return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction max(out, a, b) {\n  out[0] = Math.max(a[0], b[0]);\n  out[1] = Math.max(a[1], b[1]);\n  return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nfunction round(out, a) {\n  out[0] = Math.round(a[0]);\n  out[1] = Math.round(a[1]);\n  return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nfunction scale(out, a, b) {\n  out[0] = a[0] * b;\n  out[1] = a[1] * b;\n  return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nfunction scaleAndAdd(out, a, b, scale) {\n  out[0] = a[0] + b[0] * scale;\n  out[1] = a[1] + b[1] * scale;\n  return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nfunction distance(a, b) {\n  var x = b[0] - a[0],\n      y = b[1] - a[1];\n  return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nfunction squaredDistance(a, b) {\n  var x = b[0] - a[0],\n      y = b[1] - a[1];\n  return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nfunction length(a) {\n  var x = a[0],\n      y = a[1];\n  return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nfunction squaredLength(a) {\n  var x = a[0],\n      y = a[1];\n  return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nfunction negate(out, a) {\n  out[0] = -a[0];\n  out[1] = -a[1];\n  return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nfunction inverse(out, a) {\n  out[0] = 1.0 / a[0];\n  out[1] = 1.0 / a[1];\n  return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nfunction normalize(out, a) {\n  var x = a[0],\n      y = a[1];\n  var len = x * x + y * y;\n\n  if (len > 0) {\n    //TODO: evaluate use of glm_invsqrt here?\n    len = 1 / Math.sqrt(len);\n  }\n\n  out[0] = a[0] * len;\n  out[1] = a[1] * len;\n  return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nfunction dot(a, b) {\n  return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nfunction cross(out, a, b) {\n  var z = a[0] * b[1] - a[1] * b[0];\n  out[0] = out[1] = 0;\n  out[2] = z;\n  return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nfunction lerp(out, a, b, t) {\n  var ax = a[0],\n      ay = a[1];\n  out[0] = ax + t * (b[0] - ax);\n  out[1] = ay + t * (b[1] - ay);\n  return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nfunction random(out, scale) {\n  scale = scale || 1.0;\n  var r = _common_js__WEBPACK_IMPORTED_MODULE_0__.RANDOM() * 2.0 * Math.PI;\n  out[0] = Math.cos(r) * scale;\n  out[1] = Math.sin(r) * scale;\n  return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nfunction transformMat2(out, a, m) {\n  var x = a[0],\n      y = a[1];\n  out[0] = m[0] * x + m[2] * y;\n  out[1] = m[1] * x + m[3] * y;\n  return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nfunction transformMat2d(out, a, m) {\n  var x = a[0],\n      y = a[1];\n  out[0] = m[0] * x + m[2] * y + m[4];\n  out[1] = m[1] * x + m[3] * y + m[5];\n  return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nfunction transformMat3(out, a, m) {\n  var x = a[0],\n      y = a[1];\n  out[0] = m[0] * x + m[3] * y + m[6];\n  out[1] = m[1] * x + m[4] * y + m[7];\n  return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nfunction transformMat4(out, a, m) {\n  var x = a[0];\n  var y = a[1];\n  out[0] = m[0] * x + m[4] * y + m[12];\n  out[1] = m[1] * x + m[5] * y + m[13];\n  return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nfunction rotate(out, a, b, rad) {\n  //Translate point to the origin\n  var p0 = a[0] - b[0],\n      p1 = a[1] - b[1],\n      sinC = Math.sin(rad),\n      cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n  out[0] = p0 * cosC - p1 * sinC + b[0];\n  out[1] = p0 * sinC + p1 * cosC + b[1];\n  return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nfunction angle(a, b) {\n  var x1 = a[0],\n      y1 = a[1],\n      x2 = b[0],\n      y2 = b[1],\n      // mag is the product of the magnitudes of a and b\n  mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n      // mag &&.. short circuits if mag == 0\n  cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n  return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nfunction zero(out) {\n  out[0] = 0.0;\n  out[1] = 0.0;\n  return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nfunction str(a) {\n  return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n  return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n  var a0 = a[0],\n      a1 = a[1];\n  var b0 = b[0],\n      b1 = b[1];\n  return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nvar len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nvar sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nvar div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nvar dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nvar sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nvar sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nvar forEach = function () {\n  var vec = create();\n  return function (a, stride, offset, count, fn, arg) {\n    var i, l;\n\n    if (!stride) {\n      stride = 2;\n    }\n\n    if (!offset) {\n      offset = 0;\n    }\n\n    if (count) {\n      l = Math.min(count * stride + offset, a.length);\n    } else {\n      l = a.length;\n    }\n\n    for (i = offset; i < l; i += stride) {\n      vec[0] = a[i];\n      vec[1] = a[i + 1];\n      fn(vec, vec, arg);\n      a[i] = vec[0];\n      a[i + 1] = vec[1];\n    }\n\n    return a;\n  };\n}();\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/gl-matrix/esm/vec2.js?");

/***/ }),

/***/ "./node_modules/gl-matrix/esm/vec3.js":
/*!********************************************!*\
  !*** ./node_modules/gl-matrix/esm/vec3.js ***!
  \********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"add\": function() { return /* binding */ add; },\n/* harmony export */   \"angle\": function() { return /* binding */ angle; },\n/* harmony export */   \"bezier\": function() { return /* binding */ bezier; },\n/* harmony export */   \"ceil\": function() { return /* binding */ ceil; },\n/* harmony export */   \"clone\": function() { return /* binding */ clone; },\n/* harmony export */   \"copy\": function() { return /* binding */ copy; },\n/* harmony export */   \"create\": function() { return /* binding */ create; },\n/* harmony export */   \"cross\": function() { return /* binding */ cross; },\n/* harmony export */   \"dist\": function() { return /* binding */ dist; },\n/* harmony export */   \"distance\": function() { return /* binding */ distance; },\n/* harmony export */   \"div\": function() { return /* binding */ div; },\n/* harmony export */   \"divide\": function() { return /* binding */ divide; },\n/* harmony export */   \"dot\": function() { return /* binding */ dot; },\n/* harmony export */   \"equals\": function() { return /* binding */ equals; },\n/* harmony export */   \"exactEquals\": function() { return /* binding */ exactEquals; },\n/* harmony export */   \"floor\": function() { return /* binding */ floor; },\n/* harmony export */   \"forEach\": function() { return /* binding */ forEach; },\n/* harmony export */   \"fromValues\": function() { return /* binding */ fromValues; },\n/* harmony export */   \"hermite\": function() { return /* binding */ hermite; },\n/* harmony export */   \"inverse\": function() { return /* binding */ inverse; },\n/* harmony export */   \"len\": function() { return /* binding */ len; },\n/* harmony export */   \"length\": function() { return /* binding */ length; },\n/* harmony export */   \"lerp\": function() { return /* binding */ lerp; },\n/* harmony export */   \"max\": function() { return /* binding */ max; },\n/* harmony export */   \"min\": function() { return /* binding */ min; },\n/* harmony export */   \"mul\": function() { return /* binding */ mul; },\n/* harmony export */   \"multiply\": function() { return /* binding */ multiply; },\n/* harmony export */   \"negate\": function() { return /* binding */ negate; },\n/* harmony export */   \"normalize\": function() { return /* binding */ normalize; },\n/* harmony export */   \"random\": function() { return /* binding */ random; },\n/* harmony export */   \"rotateX\": function() { return /* binding */ rotateX; },\n/* harmony export */   \"rotateY\": function() { return /* binding */ rotateY; },\n/* harmony export */   \"rotateZ\": function() { return /* binding */ rotateZ; },\n/* harmony export */   \"round\": function() { return /* binding */ round; },\n/* harmony export */   \"scale\": function() { return /* binding */ scale; },\n/* harmony export */   \"scaleAndAdd\": function() { return /* binding */ scaleAndAdd; },\n/* harmony export */   \"set\": function() { return /* binding */ set; },\n/* harmony export */   \"sqrDist\": function() { return /* binding */ sqrDist; },\n/* harmony export */   \"sqrLen\": function() { return /* binding */ sqrLen; },\n/* harmony export */   \"squaredDistance\": function() { return /* binding */ squaredDistance; },\n/* harmony export */   \"squaredLength\": function() { return /* binding */ squaredLength; },\n/* harmony export */   \"str\": function() { return /* binding */ str; },\n/* harmony export */   \"sub\": function() { return /* binding */ sub; },\n/* harmony export */   \"subtract\": function() { return /* binding */ subtract; },\n/* harmony export */   \"transformMat3\": function() { return /* binding */ transformMat3; },\n/* harmony export */   \"transformMat4\": function() { return /* binding */ transformMat4; },\n/* harmony export */   \"transformQuat\": function() { return /* binding */ transformQuat; },\n/* harmony export */   \"zero\": function() { return /* binding */ zero; }\n/* harmony export */ });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nfunction create() {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(3);\n\n  if (_common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE != Float32Array) {\n    out[0] = 0;\n    out[1] = 0;\n    out[2] = 0;\n  }\n\n  return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nfunction clone(a) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(3);\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nfunction length(a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nfunction fromValues(x, y, z) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(3);\n  out[0] = x;\n  out[1] = y;\n  out[2] = z;\n  return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nfunction copy(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nfunction set(out, x, y, z) {\n  out[0] = x;\n  out[1] = y;\n  out[2] = z;\n  return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction add(out, a, b) {\n  out[0] = a[0] + b[0];\n  out[1] = a[1] + b[1];\n  out[2] = a[2] + b[2];\n  return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction subtract(out, a, b) {\n  out[0] = a[0] - b[0];\n  out[1] = a[1] - b[1];\n  out[2] = a[2] - b[2];\n  return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction multiply(out, a, b) {\n  out[0] = a[0] * b[0];\n  out[1] = a[1] * b[1];\n  out[2] = a[2] * b[2];\n  return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction divide(out, a, b) {\n  out[0] = a[0] / b[0];\n  out[1] = a[1] / b[1];\n  out[2] = a[2] / b[2];\n  return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nfunction ceil(out, a) {\n  out[0] = Math.ceil(a[0]);\n  out[1] = Math.ceil(a[1]);\n  out[2] = Math.ceil(a[2]);\n  return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nfunction floor(out, a) {\n  out[0] = Math.floor(a[0]);\n  out[1] = Math.floor(a[1]);\n  out[2] = Math.floor(a[2]);\n  return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction min(out, a, b) {\n  out[0] = Math.min(a[0], b[0]);\n  out[1] = Math.min(a[1], b[1]);\n  out[2] = Math.min(a[2], b[2]);\n  return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction max(out, a, b) {\n  out[0] = Math.max(a[0], b[0]);\n  out[1] = Math.max(a[1], b[1]);\n  out[2] = Math.max(a[2], b[2]);\n  return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nfunction round(out, a) {\n  out[0] = Math.round(a[0]);\n  out[1] = Math.round(a[1]);\n  out[2] = Math.round(a[2]);\n  return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nfunction scale(out, a, b) {\n  out[0] = a[0] * b;\n  out[1] = a[1] * b;\n  out[2] = a[2] * b;\n  return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nfunction scaleAndAdd(out, a, b, scale) {\n  out[0] = a[0] + b[0] * scale;\n  out[1] = a[1] + b[1] * scale;\n  out[2] = a[2] + b[2] * scale;\n  return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nfunction distance(a, b) {\n  var x = b[0] - a[0];\n  var y = b[1] - a[1];\n  var z = b[2] - a[2];\n  return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nfunction squaredDistance(a, b) {\n  var x = b[0] - a[0];\n  var y = b[1] - a[1];\n  var z = b[2] - a[2];\n  return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nfunction squaredLength(a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nfunction negate(out, a) {\n  out[0] = -a[0];\n  out[1] = -a[1];\n  out[2] = -a[2];\n  return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nfunction inverse(out, a) {\n  out[0] = 1.0 / a[0];\n  out[1] = 1.0 / a[1];\n  out[2] = 1.0 / a[2];\n  return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nfunction normalize(out, a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  var len = x * x + y * y + z * z;\n\n  if (len > 0) {\n    //TODO: evaluate use of glm_invsqrt here?\n    len = 1 / Math.sqrt(len);\n  }\n\n  out[0] = a[0] * len;\n  out[1] = a[1] * len;\n  out[2] = a[2] * len;\n  return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nfunction dot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction cross(out, a, b) {\n  var ax = a[0],\n      ay = a[1],\n      az = a[2];\n  var bx = b[0],\n      by = b[1],\n      bz = b[2];\n  out[0] = ay * bz - az * by;\n  out[1] = az * bx - ax * bz;\n  out[2] = ax * by - ay * bx;\n  return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nfunction lerp(out, a, b, t) {\n  var ax = a[0];\n  var ay = a[1];\n  var az = a[2];\n  out[0] = ax + t * (b[0] - ax);\n  out[1] = ay + t * (b[1] - ay);\n  out[2] = az + t * (b[2] - az);\n  return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nfunction hermite(out, a, b, c, d, t) {\n  var factorTimes2 = t * t;\n  var factor1 = factorTimes2 * (2 * t - 3) + 1;\n  var factor2 = factorTimes2 * (t - 2) + t;\n  var factor3 = factorTimes2 * (t - 1);\n  var factor4 = factorTimes2 * (3 - 2 * t);\n  out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n  out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n  out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n  return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nfunction bezier(out, a, b, c, d, t) {\n  var inverseFactor = 1 - t;\n  var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n  var factorTimes2 = t * t;\n  var factor1 = inverseFactorTimesTwo * inverseFactor;\n  var factor2 = 3 * t * inverseFactorTimesTwo;\n  var factor3 = 3 * factorTimes2 * inverseFactor;\n  var factor4 = factorTimes2 * t;\n  out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n  out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n  out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n  return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nfunction random(out, scale) {\n  scale = scale || 1.0;\n  var r = _common_js__WEBPACK_IMPORTED_MODULE_0__.RANDOM() * 2.0 * Math.PI;\n  var z = _common_js__WEBPACK_IMPORTED_MODULE_0__.RANDOM() * 2.0 - 1.0;\n  var zScale = Math.sqrt(1.0 - z * z) * scale;\n  out[0] = Math.cos(r) * zScale;\n  out[1] = Math.sin(r) * zScale;\n  out[2] = z * scale;\n  return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nfunction transformMat4(out, a, m) {\n  var x = a[0],\n      y = a[1],\n      z = a[2];\n  var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n  w = w || 1.0;\n  out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n  out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n  out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n  return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nfunction transformMat3(out, a, m) {\n  var x = a[0],\n      y = a[1],\n      z = a[2];\n  out[0] = x * m[0] + y * m[3] + z * m[6];\n  out[1] = x * m[1] + y * m[4] + z * m[7];\n  out[2] = x * m[2] + y * m[5] + z * m[8];\n  return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nfunction transformQuat(out, a, q) {\n  // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n  var qx = q[0],\n      qy = q[1],\n      qz = q[2],\n      qw = q[3];\n  var x = a[0],\n      y = a[1],\n      z = a[2]; // var qvec = [qx, qy, qz];\n  // var uv = vec3.cross([], qvec, a);\n\n  var uvx = qy * z - qz * y,\n      uvy = qz * x - qx * z,\n      uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n  var uuvx = qy * uvz - qz * uvy,\n      uuvy = qz * uvx - qx * uvz,\n      uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n  var w2 = qw * 2;\n  uvx *= w2;\n  uvy *= w2;\n  uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n  uuvx *= 2;\n  uuvy *= 2;\n  uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n  out[0] = x + uvx + uuvx;\n  out[1] = y + uvy + uuvy;\n  out[2] = z + uvz + uuvz;\n  return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nfunction rotateX(out, a, b, rad) {\n  var p = [],\n      r = []; //Translate point to the origin\n\n  p[0] = a[0] - b[0];\n  p[1] = a[1] - b[1];\n  p[2] = a[2] - b[2]; //perform rotation\n\n  r[0] = p[0];\n  r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n  r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n  out[0] = r[0] + b[0];\n  out[1] = r[1] + b[1];\n  out[2] = r[2] + b[2];\n  return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nfunction rotateY(out, a, b, rad) {\n  var p = [],\n      r = []; //Translate point to the origin\n\n  p[0] = a[0] - b[0];\n  p[1] = a[1] - b[1];\n  p[2] = a[2] - b[2]; //perform rotation\n\n  r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n  r[1] = p[1];\n  r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n  out[0] = r[0] + b[0];\n  out[1] = r[1] + b[1];\n  out[2] = r[2] + b[2];\n  return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nfunction rotateZ(out, a, b, rad) {\n  var p = [],\n      r = []; //Translate point to the origin\n\n  p[0] = a[0] - b[0];\n  p[1] = a[1] - b[1];\n  p[2] = a[2] - b[2]; //perform rotation\n\n  r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n  r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n  r[2] = p[2]; //translate to correct position\n\n  out[0] = r[0] + b[0];\n  out[1] = r[1] + b[1];\n  out[2] = r[2] + b[2];\n  return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nfunction angle(a, b) {\n  var ax = a[0],\n      ay = a[1],\n      az = a[2],\n      bx = b[0],\n      by = b[1],\n      bz = b[2],\n      mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n      mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n      mag = mag1 * mag2,\n      cosine = mag && dot(a, b) / mag;\n  return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nfunction zero(out) {\n  out[0] = 0.0;\n  out[1] = 0.0;\n  out[2] = 0.0;\n  return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nfunction str(a) {\n  return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n  return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n  var a0 = a[0],\n      a1 = a[1],\n      a2 = a[2];\n  var b0 = b[0],\n      b1 = b[1],\n      b2 = b[2];\n  return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nvar sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nvar div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nvar dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nvar sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nvar len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nvar sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nvar forEach = function () {\n  var vec = create();\n  return function (a, stride, offset, count, fn, arg) {\n    var i, l;\n\n    if (!stride) {\n      stride = 3;\n    }\n\n    if (!offset) {\n      offset = 0;\n    }\n\n    if (count) {\n      l = Math.min(count * stride + offset, a.length);\n    } else {\n      l = a.length;\n    }\n\n    for (i = offset; i < l; i += stride) {\n      vec[0] = a[i];\n      vec[1] = a[i + 1];\n      vec[2] = a[i + 2];\n      fn(vec, vec, arg);\n      a[i] = vec[0];\n      a[i + 1] = vec[1];\n      a[i + 2] = vec[2];\n    }\n\n    return a;\n  };\n}();\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/gl-matrix/esm/vec3.js?");

/***/ }),

/***/ "./node_modules/gl-matrix/esm/vec4.js":
/*!********************************************!*\
  !*** ./node_modules/gl-matrix/esm/vec4.js ***!
  \********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"add\": function() { return /* binding */ add; },\n/* harmony export */   \"ceil\": function() { return /* binding */ ceil; },\n/* harmony export */   \"clone\": function() { return /* binding */ clone; },\n/* harmony export */   \"copy\": function() { return /* binding */ copy; },\n/* harmony export */   \"create\": function() { return /* binding */ create; },\n/* harmony export */   \"cross\": function() { return /* binding */ cross; },\n/* harmony export */   \"dist\": function() { return /* binding */ dist; },\n/* harmony export */   \"distance\": function() { return /* binding */ distance; },\n/* harmony export */   \"div\": function() { return /* binding */ div; },\n/* harmony export */   \"divide\": function() { return /* binding */ divide; },\n/* harmony export */   \"dot\": function() { return /* binding */ dot; },\n/* harmony export */   \"equals\": function() { return /* binding */ equals; },\n/* harmony export */   \"exactEquals\": function() { return /* binding */ exactEquals; },\n/* harmony export */   \"floor\": function() { return /* binding */ floor; },\n/* harmony export */   \"forEach\": function() { return /* binding */ forEach; },\n/* harmony export */   \"fromValues\": function() { return /* binding */ fromValues; },\n/* harmony export */   \"inverse\": function() { return /* binding */ inverse; },\n/* harmony export */   \"len\": function() { return /* binding */ len; },\n/* harmony export */   \"length\": function() { return /* binding */ length; },\n/* harmony export */   \"lerp\": function() { return /* binding */ lerp; },\n/* harmony export */   \"max\": function() { return /* binding */ max; },\n/* harmony export */   \"min\": function() { return /* binding */ min; },\n/* harmony export */   \"mul\": function() { return /* binding */ mul; },\n/* harmony export */   \"multiply\": function() { return /* binding */ multiply; },\n/* harmony export */   \"negate\": function() { return /* binding */ negate; },\n/* harmony export */   \"normalize\": function() { return /* binding */ normalize; },\n/* harmony export */   \"random\": function() { return /* binding */ random; },\n/* harmony export */   \"round\": function() { return /* binding */ round; },\n/* harmony export */   \"scale\": function() { return /* binding */ scale; },\n/* harmony export */   \"scaleAndAdd\": function() { return /* binding */ scaleAndAdd; },\n/* harmony export */   \"set\": function() { return /* binding */ set; },\n/* harmony export */   \"sqrDist\": function() { return /* binding */ sqrDist; },\n/* harmony export */   \"sqrLen\": function() { return /* binding */ sqrLen; },\n/* harmony export */   \"squaredDistance\": function() { return /* binding */ squaredDistance; },\n/* harmony export */   \"squaredLength\": function() { return /* binding */ squaredLength; },\n/* harmony export */   \"str\": function() { return /* binding */ str; },\n/* harmony export */   \"sub\": function() { return /* binding */ sub; },\n/* harmony export */   \"subtract\": function() { return /* binding */ subtract; },\n/* harmony export */   \"transformMat4\": function() { return /* binding */ transformMat4; },\n/* harmony export */   \"transformQuat\": function() { return /* binding */ transformQuat; },\n/* harmony export */   \"zero\": function() { return /* binding */ zero; }\n/* harmony export */ });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n\n/**\n * 4 Dimensional Vector\n * @module vec4\n */\n\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\n\nfunction create() {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(4);\n\n  if (_common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE != Float32Array) {\n    out[0] = 0;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n  }\n\n  return out;\n}\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {ReadonlyVec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\n\nfunction clone(a) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(4);\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  return out;\n}\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\n\nfunction fromValues(x, y, z, w) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(4);\n  out[0] = x;\n  out[1] = y;\n  out[2] = z;\n  out[3] = w;\n  return out;\n}\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the source vector\n * @returns {vec4} out\n */\n\nfunction copy(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  return out;\n}\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\n\nfunction set(out, x, y, z, w) {\n  out[0] = x;\n  out[1] = y;\n  out[2] = z;\n  out[3] = w;\n  return out;\n}\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction add(out, a, b) {\n  out[0] = a[0] + b[0];\n  out[1] = a[1] + b[1];\n  out[2] = a[2] + b[2];\n  out[3] = a[3] + b[3];\n  return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction subtract(out, a, b) {\n  out[0] = a[0] - b[0];\n  out[1] = a[1] - b[1];\n  out[2] = a[2] - b[2];\n  out[3] = a[3] - b[3];\n  return out;\n}\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction multiply(out, a, b) {\n  out[0] = a[0] * b[0];\n  out[1] = a[1] * b[1];\n  out[2] = a[2] * b[2];\n  out[3] = a[3] * b[3];\n  return out;\n}\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction divide(out, a, b) {\n  out[0] = a[0] / b[0];\n  out[1] = a[1] / b[1];\n  out[2] = a[2] / b[2];\n  out[3] = a[3] / b[3];\n  return out;\n}\n/**\n * Math.ceil the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to ceil\n * @returns {vec4} out\n */\n\nfunction ceil(out, a) {\n  out[0] = Math.ceil(a[0]);\n  out[1] = Math.ceil(a[1]);\n  out[2] = Math.ceil(a[2]);\n  out[3] = Math.ceil(a[3]);\n  return out;\n}\n/**\n * Math.floor the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to floor\n * @returns {vec4} out\n */\n\nfunction floor(out, a) {\n  out[0] = Math.floor(a[0]);\n  out[1] = Math.floor(a[1]);\n  out[2] = Math.floor(a[2]);\n  out[3] = Math.floor(a[3]);\n  return out;\n}\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction min(out, a, b) {\n  out[0] = Math.min(a[0], b[0]);\n  out[1] = Math.min(a[1], b[1]);\n  out[2] = Math.min(a[2], b[2]);\n  out[3] = Math.min(a[3], b[3]);\n  return out;\n}\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction max(out, a, b) {\n  out[0] = Math.max(a[0], b[0]);\n  out[1] = Math.max(a[1], b[1]);\n  out[2] = Math.max(a[2], b[2]);\n  out[3] = Math.max(a[3], b[3]);\n  return out;\n}\n/**\n * Math.round the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to round\n * @returns {vec4} out\n */\n\nfunction round(out, a) {\n  out[0] = Math.round(a[0]);\n  out[1] = Math.round(a[1]);\n  out[2] = Math.round(a[2]);\n  out[3] = Math.round(a[3]);\n  return out;\n}\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\n\nfunction scale(out, a, b) {\n  out[0] = a[0] * b;\n  out[1] = a[1] * b;\n  out[2] = a[2] * b;\n  out[3] = a[3] * b;\n  return out;\n}\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\n\nfunction scaleAndAdd(out, a, b, scale) {\n  out[0] = a[0] + b[0] * scale;\n  out[1] = a[1] + b[1] * scale;\n  out[2] = a[2] + b[2] * scale;\n  out[3] = a[3] + b[3] * scale;\n  return out;\n}\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} distance between a and b\n */\n\nfunction distance(a, b) {\n  var x = b[0] - a[0];\n  var y = b[1] - a[1];\n  var z = b[2] - a[2];\n  var w = b[3] - a[3];\n  return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nfunction squaredDistance(a, b) {\n  var x = b[0] - a[0];\n  var y = b[1] - a[1];\n  var z = b[2] - a[2];\n  var w = b[3] - a[3];\n  return x * x + y * y + z * z + w * w;\n}\n/**\n * Calculates the length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nfunction length(a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  var w = a[3];\n  return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nfunction squaredLength(a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  var w = a[3];\n  return x * x + y * y + z * z + w * w;\n}\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to negate\n * @returns {vec4} out\n */\n\nfunction negate(out, a) {\n  out[0] = -a[0];\n  out[1] = -a[1];\n  out[2] = -a[2];\n  out[3] = -a[3];\n  return out;\n}\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to invert\n * @returns {vec4} out\n */\n\nfunction inverse(out, a) {\n  out[0] = 1.0 / a[0];\n  out[1] = 1.0 / a[1];\n  out[2] = 1.0 / a[2];\n  out[3] = 1.0 / a[3];\n  return out;\n}\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to normalize\n * @returns {vec4} out\n */\n\nfunction normalize(out, a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  var w = a[3];\n  var len = x * x + y * y + z * z + w * w;\n\n  if (len > 0) {\n    len = 1 / Math.sqrt(len);\n  }\n\n  out[0] = x * len;\n  out[1] = y * len;\n  out[2] = z * len;\n  out[3] = w * len;\n  return out;\n}\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nfunction dot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\n * Returns the cross-product of three vectors in a 4-dimensional space\n *\n * @param {ReadonlyVec4} result the receiving vector\n * @param {ReadonlyVec4} U the first vector\n * @param {ReadonlyVec4} V the second vector\n * @param {ReadonlyVec4} W the third vector\n * @returns {vec4} result\n */\n\nfunction cross(out, u, v, w) {\n  var A = v[0] * w[1] - v[1] * w[0],\n      B = v[0] * w[2] - v[2] * w[0],\n      C = v[0] * w[3] - v[3] * w[0],\n      D = v[1] * w[2] - v[2] * w[1],\n      E = v[1] * w[3] - v[3] * w[1],\n      F = v[2] * w[3] - v[3] * w[2];\n  var G = u[0];\n  var H = u[1];\n  var I = u[2];\n  var J = u[3];\n  out[0] = H * F - I * E + J * D;\n  out[1] = -(G * F) + I * C - J * B;\n  out[2] = G * E - H * C + J * A;\n  out[3] = -(G * D) + H * B - I * A;\n  return out;\n}\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec4} out\n */\n\nfunction lerp(out, a, b, t) {\n  var ax = a[0];\n  var ay = a[1];\n  var az = a[2];\n  var aw = a[3];\n  out[0] = ax + t * (b[0] - ax);\n  out[1] = ay + t * (b[1] - ay);\n  out[2] = az + t * (b[2] - az);\n  out[3] = aw + t * (b[3] - aw);\n  return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */\n\nfunction random(out, scale) {\n  scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n  // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n  // http://projecteuclid.org/euclid.aoms/1177692644;\n\n  var v1, v2, v3, v4;\n  var s1, s2;\n\n  do {\n    v1 = _common_js__WEBPACK_IMPORTED_MODULE_0__.RANDOM() * 2 - 1;\n    v2 = _common_js__WEBPACK_IMPORTED_MODULE_0__.RANDOM() * 2 - 1;\n    s1 = v1 * v1 + v2 * v2;\n  } while (s1 >= 1);\n\n  do {\n    v3 = _common_js__WEBPACK_IMPORTED_MODULE_0__.RANDOM() * 2 - 1;\n    v4 = _common_js__WEBPACK_IMPORTED_MODULE_0__.RANDOM() * 2 - 1;\n    s2 = v3 * v3 + v4 * v4;\n  } while (s2 >= 1);\n\n  var d = Math.sqrt((1 - s1) / s2);\n  out[0] = scale * v1;\n  out[1] = scale * v2;\n  out[2] = scale * v3 * d;\n  out[3] = scale * v4 * d;\n  return out;\n}\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec4} out\n */\n\nfunction transformMat4(out, a, m) {\n  var x = a[0],\n      y = a[1],\n      z = a[2],\n      w = a[3];\n  out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n  out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n  out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n  out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n  return out;\n}\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec4} out\n */\n\nfunction transformQuat(out, a, q) {\n  var x = a[0],\n      y = a[1],\n      z = a[2];\n  var qx = q[0],\n      qy = q[1],\n      qz = q[2],\n      qw = q[3]; // calculate quat * vec\n\n  var ix = qw * x + qy * z - qz * y;\n  var iy = qw * y + qz * x - qx * z;\n  var iz = qw * z + qx * y - qy * x;\n  var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n  out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n  out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n  out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n  out[3] = a[3];\n  return out;\n}\n/**\n * Set the components of a vec4 to zero\n *\n * @param {vec4} out the receiving vector\n * @returns {vec4} out\n */\n\nfunction zero(out) {\n  out[0] = 0.0;\n  out[1] = 0.0;\n  out[2] = 0.0;\n  out[3] = 0.0;\n  return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec4} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nfunction str(a) {\n  return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n  return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n  var a0 = a[0],\n      a1 = a[1],\n      a2 = a[2],\n      a3 = a[3];\n  var b0 = b[0],\n      b1 = b[1],\n      b2 = b[2],\n      b3 = b[3];\n  return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\n\nvar sub = subtract;\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\n\nvar div = divide;\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\n\nvar dist = distance;\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\n\nvar sqrDist = squaredDistance;\n/**\n * Alias for {@link vec4.length}\n * @function\n */\n\nvar len = length;\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\n\nvar sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nvar forEach = function () {\n  var vec = create();\n  return function (a, stride, offset, count, fn, arg) {\n    var i, l;\n\n    if (!stride) {\n      stride = 4;\n    }\n\n    if (!offset) {\n      offset = 0;\n    }\n\n    if (count) {\n      l = Math.min(count * stride + offset, a.length);\n    } else {\n      l = a.length;\n    }\n\n    for (i = offset; i < l; i += stride) {\n      vec[0] = a[i];\n      vec[1] = a[i + 1];\n      vec[2] = a[i + 2];\n      vec[3] = a[i + 3];\n      fn(vec, vec, arg);\n      a[i] = vec[0];\n      a[i + 1] = vec[1];\n      a[i + 2] = vec[2];\n      a[i + 3] = vec[3];\n    }\n\n    return a;\n  };\n}();\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/gl-matrix/esm/vec4.js?");

/***/ }),

/***/ "./node_modules/hammerjs/hammer.js":
/*!*****************************************!*\
  !*** ./node_modules/hammerjs/hammer.js ***!
  \*****************************************/
/***/ (function(module, exports, __webpack_require__) {

eval("var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n  'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n    return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n    if (Array.isArray(arg)) {\n        each(arg, context[fn], context);\n        return true;\n    }\n    return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n    var i;\n\n    if (!obj) {\n        return;\n    }\n\n    if (obj.forEach) {\n        obj.forEach(iterator, context);\n    } else if (obj.length !== undefined) {\n        i = 0;\n        while (i < obj.length) {\n            iterator.call(context, obj[i], i, obj);\n            i++;\n        }\n    } else {\n        for (i in obj) {\n            obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n        }\n    }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n    var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n    return function() {\n        var e = new Error('get-stack-trace');\n        var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n            .replace(/^\\s+at\\s+/gm, '')\n            .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n        var log = window.console && (window.console.warn || window.console.log);\n        if (log) {\n            log.call(window.console, deprecationMessage, stack);\n        }\n        return method.apply(this, arguments);\n    };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n    assign = function assign(target) {\n        if (target === undefined || target === null) {\n            throw new TypeError('Cannot convert undefined or null to object');\n        }\n\n        var output = Object(target);\n        for (var index = 1; index < arguments.length; index++) {\n            var source = arguments[index];\n            if (source !== undefined && source !== null) {\n                for (var nextKey in source) {\n                    if (source.hasOwnProperty(nextKey)) {\n                        output[nextKey] = source[nextKey];\n                    }\n                }\n            }\n        }\n        return output;\n    };\n} else {\n    assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n    var keys = Object.keys(src);\n    var i = 0;\n    while (i < keys.length) {\n        if (!merge || (merge && dest[keys[i]] === undefined)) {\n            dest[keys[i]] = src[keys[i]];\n        }\n        i++;\n    }\n    return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n    return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n    var baseP = base.prototype,\n        childP;\n\n    childP = child.prototype = Object.create(baseP);\n    childP.constructor = child;\n    childP._super = baseP;\n\n    if (properties) {\n        assign(childP, properties);\n    }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n    return function boundFn() {\n        return fn.apply(context, arguments);\n    };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n    if (typeof val == TYPE_FUNCTION) {\n        return val.apply(args ? args[0] || undefined : undefined, args);\n    }\n    return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n    return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n    each(splitStr(types), function(type) {\n        target.addEventListener(type, handler, false);\n    });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n    each(splitStr(types), function(type) {\n        target.removeEventListener(type, handler, false);\n    });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n    while (node) {\n        if (node == parent) {\n            return true;\n        }\n        node = node.parentNode;\n    }\n    return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n    return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n    return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n    if (src.indexOf && !findByKey) {\n        return src.indexOf(find);\n    } else {\n        var i = 0;\n        while (i < src.length) {\n            if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n                return i;\n            }\n            i++;\n        }\n        return -1;\n    }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n    return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n    var results = [];\n    var values = [];\n    var i = 0;\n\n    while (i < src.length) {\n        var val = key ? src[i][key] : src[i];\n        if (inArray(values, val) < 0) {\n            results.push(src[i]);\n        }\n        values[i] = val;\n        i++;\n    }\n\n    if (sort) {\n        if (!key) {\n            results = results.sort();\n        } else {\n            results = results.sort(function sortUniqueArray(a, b) {\n                return a[key] > b[key];\n            });\n        }\n    }\n\n    return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n    var prefix, prop;\n    var camelProp = property[0].toUpperCase() + property.slice(1);\n\n    var i = 0;\n    while (i < VENDOR_PREFIXES.length) {\n        prefix = VENDOR_PREFIXES[i];\n        prop = (prefix) ? prefix + camelProp : property;\n\n        if (prop in obj) {\n            return prop;\n        }\n        i++;\n    }\n    return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n    return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n    var doc = element.ownerDocument || element;\n    return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n    var self = this;\n    this.manager = manager;\n    this.callback = callback;\n    this.element = manager.element;\n    this.target = manager.options.inputTarget;\n\n    // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n    // so when disabled the input events are completely bypassed.\n    this.domHandler = function(ev) {\n        if (boolOrFn(manager.options.enable, [manager])) {\n            self.handler(ev);\n        }\n    };\n\n    this.init();\n\n}\n\nInput.prototype = {\n    /**\n     * should handle the inputEvent data and trigger the callback\n     * @virtual\n     */\n    handler: function() { },\n\n    /**\n     * bind the events\n     */\n    init: function() {\n        this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n        this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n        this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n    },\n\n    /**\n     * unbind the events\n     */\n    destroy: function() {\n        this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n        this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n        this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n    }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n    var Type;\n    var inputClass = manager.options.inputClass;\n\n    if (inputClass) {\n        Type = inputClass;\n    } else if (SUPPORT_POINTER_EVENTS) {\n        Type = PointerEventInput;\n    } else if (SUPPORT_ONLY_TOUCH) {\n        Type = TouchInput;\n    } else if (!SUPPORT_TOUCH) {\n        Type = MouseInput;\n    } else {\n        Type = TouchMouseInput;\n    }\n    return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n    var pointersLen = input.pointers.length;\n    var changedPointersLen = input.changedPointers.length;\n    var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n    var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n    input.isFirst = !!isFirst;\n    input.isFinal = !!isFinal;\n\n    if (isFirst) {\n        manager.session = {};\n    }\n\n    // source event is the normalized value of the domEvents\n    // like 'touchstart, mouseup, pointerdown'\n    input.eventType = eventType;\n\n    // compute scale, rotation etc\n    computeInputData(manager, input);\n\n    // emit secret event\n    manager.emit('hammer.input', input);\n\n    manager.recognize(input);\n    manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n    var session = manager.session;\n    var pointers = input.pointers;\n    var pointersLength = pointers.length;\n\n    // store the first input to calculate the distance and direction\n    if (!session.firstInput) {\n        session.firstInput = simpleCloneInputData(input);\n    }\n\n    // to compute scale and rotation we need to store the multiple touches\n    if (pointersLength > 1 && !session.firstMultiple) {\n        session.firstMultiple = simpleCloneInputData(input);\n    } else if (pointersLength === 1) {\n        session.firstMultiple = false;\n    }\n\n    var firstInput = session.firstInput;\n    var firstMultiple = session.firstMultiple;\n    var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n    var center = input.center = getCenter(pointers);\n    input.timeStamp = now();\n    input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n    input.angle = getAngle(offsetCenter, center);\n    input.distance = getDistance(offsetCenter, center);\n\n    computeDeltaXY(session, input);\n    input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n    var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n    input.overallVelocityX = overallVelocity.x;\n    input.overallVelocityY = overallVelocity.y;\n    input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n    input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n    input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n    input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n        session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n    computeIntervalInputData(session, input);\n\n    // find the correct target\n    var target = manager.element;\n    if (hasParent(input.srcEvent.target, target)) {\n        target = input.srcEvent.target;\n    }\n    input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n    var center = input.center;\n    var offset = session.offsetDelta || {};\n    var prevDelta = session.prevDelta || {};\n    var prevInput = session.prevInput || {};\n\n    if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n        prevDelta = session.prevDelta = {\n            x: prevInput.deltaX || 0,\n            y: prevInput.deltaY || 0\n        };\n\n        offset = session.offsetDelta = {\n            x: center.x,\n            y: center.y\n        };\n    }\n\n    input.deltaX = prevDelta.x + (center.x - offset.x);\n    input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n    var last = session.lastInterval || input,\n        deltaTime = input.timeStamp - last.timeStamp,\n        velocity, velocityX, velocityY, direction;\n\n    if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n        var deltaX = input.deltaX - last.deltaX;\n        var deltaY = input.deltaY - last.deltaY;\n\n        var v = getVelocity(deltaTime, deltaX, deltaY);\n        velocityX = v.x;\n        velocityY = v.y;\n        velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n        direction = getDirection(deltaX, deltaY);\n\n        session.lastInterval = input;\n    } else {\n        // use latest velocity info if it doesn't overtake a minimum period\n        velocity = last.velocity;\n        velocityX = last.velocityX;\n        velocityY = last.velocityY;\n        direction = last.direction;\n    }\n\n    input.velocity = velocity;\n    input.velocityX = velocityX;\n    input.velocityY = velocityY;\n    input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n    // make a simple copy of the pointers because we will get a reference if we don't\n    // we only need clientXY for the calculations\n    var pointers = [];\n    var i = 0;\n    while (i < input.pointers.length) {\n        pointers[i] = {\n            clientX: round(input.pointers[i].clientX),\n            clientY: round(input.pointers[i].clientY)\n        };\n        i++;\n    }\n\n    return {\n        timeStamp: now(),\n        pointers: pointers,\n        center: getCenter(pointers),\n        deltaX: input.deltaX,\n        deltaY: input.deltaY\n    };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n    var pointersLength = pointers.length;\n\n    // no need to loop when only one touch\n    if (pointersLength === 1) {\n        return {\n            x: round(pointers[0].clientX),\n            y: round(pointers[0].clientY)\n        };\n    }\n\n    var x = 0, y = 0, i = 0;\n    while (i < pointersLength) {\n        x += pointers[i].clientX;\n        y += pointers[i].clientY;\n        i++;\n    }\n\n    return {\n        x: round(x / pointersLength),\n        y: round(y / pointersLength)\n    };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n    return {\n        x: x / deltaTime || 0,\n        y: y / deltaTime || 0\n    };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n    if (x === y) {\n        return DIRECTION_NONE;\n    }\n\n    if (abs(x) >= abs(y)) {\n        return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n    }\n    return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n    if (!props) {\n        props = PROPS_XY;\n    }\n    var x = p2[props[0]] - p1[props[0]],\n        y = p2[props[1]] - p1[props[1]];\n\n    return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n    if (!props) {\n        props = PROPS_XY;\n    }\n    var x = p2[props[0]] - p1[props[0]],\n        y = p2[props[1]] - p1[props[1]];\n    return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n    return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n    return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n    mousedown: INPUT_START,\n    mousemove: INPUT_MOVE,\n    mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n    this.evEl = MOUSE_ELEMENT_EVENTS;\n    this.evWin = MOUSE_WINDOW_EVENTS;\n\n    this.pressed = false; // mousedown state\n\n    Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n    /**\n     * handle mouse events\n     * @param {Object} ev\n     */\n    handler: function MEhandler(ev) {\n        var eventType = MOUSE_INPUT_MAP[ev.type];\n\n        // on start we want to have the left mouse button down\n        if (eventType & INPUT_START && ev.button === 0) {\n            this.pressed = true;\n        }\n\n        if (eventType & INPUT_MOVE && ev.which !== 1) {\n            eventType = INPUT_END;\n        }\n\n        // mouse must be down\n        if (!this.pressed) {\n            return;\n        }\n\n        if (eventType & INPUT_END) {\n            this.pressed = false;\n        }\n\n        this.callback(this.manager, eventType, {\n            pointers: [ev],\n            changedPointers: [ev],\n            pointerType: INPUT_TYPE_MOUSE,\n            srcEvent: ev\n        });\n    }\n});\n\nvar POINTER_INPUT_MAP = {\n    pointerdown: INPUT_START,\n    pointermove: INPUT_MOVE,\n    pointerup: INPUT_END,\n    pointercancel: INPUT_CANCEL,\n    pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n    2: INPUT_TYPE_TOUCH,\n    3: INPUT_TYPE_PEN,\n    4: INPUT_TYPE_MOUSE,\n    5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n    POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n    POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n    this.evEl = POINTER_ELEMENT_EVENTS;\n    this.evWin = POINTER_WINDOW_EVENTS;\n\n    Input.apply(this, arguments);\n\n    this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n    /**\n     * handle mouse events\n     * @param {Object} ev\n     */\n    handler: function PEhandler(ev) {\n        var store = this.store;\n        var removePointer = false;\n\n        var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n        var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n        var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n        var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n        // get index of the event in the store\n        var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n        // start and mouse must be down\n        if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n            if (storeIndex < 0) {\n                store.push(ev);\n                storeIndex = store.length - 1;\n            }\n        } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n            removePointer = true;\n        }\n\n        // it not found, so the pointer hasn't been down (so it's probably a hover)\n        if (storeIndex < 0) {\n            return;\n        }\n\n        // update the event in the store\n        store[storeIndex] = ev;\n\n        this.callback(this.manager, eventType, {\n            pointers: store,\n            changedPointers: [ev],\n            pointerType: pointerType,\n            srcEvent: ev\n        });\n\n        if (removePointer) {\n            // remove from the store\n            store.splice(storeIndex, 1);\n        }\n    }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n    touchstart: INPUT_START,\n    touchmove: INPUT_MOVE,\n    touchend: INPUT_END,\n    touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n    this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n    this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n    this.started = false;\n\n    Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n    handler: function TEhandler(ev) {\n        var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n        // should we handle the touch events?\n        if (type === INPUT_START) {\n            this.started = true;\n        }\n\n        if (!this.started) {\n            return;\n        }\n\n        var touches = normalizeSingleTouches.call(this, ev, type);\n\n        // when done, reset the started state\n        if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n            this.started = false;\n        }\n\n        this.callback(this.manager, type, {\n            pointers: touches[0],\n            changedPointers: touches[1],\n            pointerType: INPUT_TYPE_TOUCH,\n            srcEvent: ev\n        });\n    }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n    var all = toArray(ev.touches);\n    var changed = toArray(ev.changedTouches);\n\n    if (type & (INPUT_END | INPUT_CANCEL)) {\n        all = uniqueArray(all.concat(changed), 'identifier', true);\n    }\n\n    return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n    touchstart: INPUT_START,\n    touchmove: INPUT_MOVE,\n    touchend: INPUT_END,\n    touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n    this.evTarget = TOUCH_TARGET_EVENTS;\n    this.targetIds = {};\n\n    Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n    handler: function MTEhandler(ev) {\n        var type = TOUCH_INPUT_MAP[ev.type];\n        var touches = getTouches.call(this, ev, type);\n        if (!touches) {\n            return;\n        }\n\n        this.callback(this.manager, type, {\n            pointers: touches[0],\n            changedPointers: touches[1],\n            pointerType: INPUT_TYPE_TOUCH,\n            srcEvent: ev\n        });\n    }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n    var allTouches = toArray(ev.touches);\n    var targetIds = this.targetIds;\n\n    // when there is only one touch, the process can be simplified\n    if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n        targetIds[allTouches[0].identifier] = true;\n        return [allTouches, allTouches];\n    }\n\n    var i,\n        targetTouches,\n        changedTouches = toArray(ev.changedTouches),\n        changedTargetTouches = [],\n        target = this.target;\n\n    // get target touches from touches\n    targetTouches = allTouches.filter(function(touch) {\n        return hasParent(touch.target, target);\n    });\n\n    // collect touches\n    if (type === INPUT_START) {\n        i = 0;\n        while (i < targetTouches.length) {\n            targetIds[targetTouches[i].identifier] = true;\n            i++;\n        }\n    }\n\n    // filter changed touches to only contain touches that exist in the collected target ids\n    i = 0;\n    while (i < changedTouches.length) {\n        if (targetIds[changedTouches[i].identifier]) {\n            changedTargetTouches.push(changedTouches[i]);\n        }\n\n        // cleanup removed touches\n        if (type & (INPUT_END | INPUT_CANCEL)) {\n            delete targetIds[changedTouches[i].identifier];\n        }\n        i++;\n    }\n\n    if (!changedTargetTouches.length) {\n        return;\n    }\n\n    return [\n        // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n        uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n        changedTargetTouches\n    ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n    Input.apply(this, arguments);\n\n    var handler = bindFn(this.handler, this);\n    this.touch = new TouchInput(this.manager, handler);\n    this.mouse = new MouseInput(this.manager, handler);\n\n    this.primaryTouch = null;\n    this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n    /**\n     * handle mouse and touch events\n     * @param {Hammer} manager\n     * @param {String} inputEvent\n     * @param {Object} inputData\n     */\n    handler: function TMEhandler(manager, inputEvent, inputData) {\n        var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n            isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n        if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n            return;\n        }\n\n        // when we're in a touch event, record touches to  de-dupe synthetic mouse event\n        if (isTouch) {\n            recordTouches.call(this, inputEvent, inputData);\n        } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n            return;\n        }\n\n        this.callback(manager, inputEvent, inputData);\n    },\n\n    /**\n     * remove the event listeners\n     */\n    destroy: function destroy() {\n        this.touch.destroy();\n        this.mouse.destroy();\n    }\n});\n\nfunction recordTouches(eventType, eventData) {\n    if (eventType & INPUT_START) {\n        this.primaryTouch = eventData.changedPointers[0].identifier;\n        setLastTouch.call(this, eventData);\n    } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n        setLastTouch.call(this, eventData);\n    }\n}\n\nfunction setLastTouch(eventData) {\n    var touch = eventData.changedPointers[0];\n\n    if (touch.identifier === this.primaryTouch) {\n        var lastTouch = {x: touch.clientX, y: touch.clientY};\n        this.lastTouches.push(lastTouch);\n        var lts = this.lastTouches;\n        var removeLastTouch = function() {\n            var i = lts.indexOf(lastTouch);\n            if (i > -1) {\n                lts.splice(i, 1);\n            }\n        };\n        setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n    }\n}\n\nfunction isSyntheticEvent(eventData) {\n    var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n    for (var i = 0; i < this.lastTouches.length; i++) {\n        var t = this.lastTouches[i];\n        var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n        if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n            return true;\n        }\n    }\n    return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n    this.manager = manager;\n    this.set(value);\n}\n\nTouchAction.prototype = {\n    /**\n     * set the touchAction value on the element or enable the polyfill\n     * @param {String} value\n     */\n    set: function(value) {\n        // find out the touch-action by the event handlers\n        if (value == TOUCH_ACTION_COMPUTE) {\n            value = this.compute();\n        }\n\n        if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n            this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n        }\n        this.actions = value.toLowerCase().trim();\n    },\n\n    /**\n     * just re-set the touchAction value\n     */\n    update: function() {\n        this.set(this.manager.options.touchAction);\n    },\n\n    /**\n     * compute the value for the touchAction property based on the recognizer's settings\n     * @returns {String} value\n     */\n    compute: function() {\n        var actions = [];\n        each(this.manager.recognizers, function(recognizer) {\n            if (boolOrFn(recognizer.options.enable, [recognizer])) {\n                actions = actions.concat(recognizer.getTouchAction());\n            }\n        });\n        return cleanTouchActions(actions.join(' '));\n    },\n\n    /**\n     * this method is called on each input cycle and provides the preventing of the browser behavior\n     * @param {Object} input\n     */\n    preventDefaults: function(input) {\n        var srcEvent = input.srcEvent;\n        var direction = input.offsetDirection;\n\n        // if the touch action did prevented once this session\n        if (this.manager.session.prevented) {\n            srcEvent.preventDefault();\n            return;\n        }\n\n        var actions = this.actions;\n        var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n        var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n        var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n        if (hasNone) {\n            //do not prevent defaults if this is a tap gesture\n\n            var isTapPointer = input.pointers.length === 1;\n            var isTapMovement = input.distance < 2;\n            var isTapTouchTime = input.deltaTime < 250;\n\n            if (isTapPointer && isTapMovement && isTapTouchTime) {\n                return;\n            }\n        }\n\n        if (hasPanX && hasPanY) {\n            // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n            return;\n        }\n\n        if (hasNone ||\n            (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n            (hasPanX && direction & DIRECTION_VERTICAL)) {\n            return this.preventSrc(srcEvent);\n        }\n    },\n\n    /**\n     * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n     * @param {Object} srcEvent\n     */\n    preventSrc: function(srcEvent) {\n        this.manager.session.prevented = true;\n        srcEvent.preventDefault();\n    }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n    // none\n    if (inStr(actions, TOUCH_ACTION_NONE)) {\n        return TOUCH_ACTION_NONE;\n    }\n\n    var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n    var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n    // if both pan-x and pan-y are set (different recognizers\n    // for different directions, e.g. horizontal pan but vertical swipe?)\n    // we need none (as otherwise with pan-x pan-y combined none of these\n    // recognizers will work, since the browser would handle all panning\n    if (hasPanX && hasPanY) {\n        return TOUCH_ACTION_NONE;\n    }\n\n    // pan-x OR pan-y\n    if (hasPanX || hasPanY) {\n        return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n    }\n\n    // manipulation\n    if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n        return TOUCH_ACTION_MANIPULATION;\n    }\n\n    return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n    if (!NATIVE_TOUCH_ACTION) {\n        return false;\n    }\n    var touchMap = {};\n    var cssSupports = window.CSS && window.CSS.supports;\n    ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n        // If css.supports is not supported but there is native touch-action assume it supports\n        // all values. This is the case for IE 10 and 11.\n        touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n    });\n    return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n *               Possible\n *                  |\n *            +-----+---------------+\n *            |                     |\n *      +-----+-----+               |\n *      |           |               |\n *   Failed      Cancelled          |\n *                          +-------+------+\n *                          |              |\n *                      Recognized       Began\n *                                         |\n *                                      Changed\n *                                         |\n *                                  Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n    this.options = assign({}, this.defaults, options || {});\n\n    this.id = uniqueId();\n\n    this.manager = null;\n\n    // default is enable true\n    this.options.enable = ifUndefined(this.options.enable, true);\n\n    this.state = STATE_POSSIBLE;\n\n    this.simultaneous = {};\n    this.requireFail = [];\n}\n\nRecognizer.prototype = {\n    /**\n     * @virtual\n     * @type {Object}\n     */\n    defaults: {},\n\n    /**\n     * set options\n     * @param {Object} options\n     * @return {Recognizer}\n     */\n    set: function(options) {\n        assign(this.options, options);\n\n        // also update the touchAction, in case something changed about the directions/enabled state\n        this.manager && this.manager.touchAction.update();\n        return this;\n    },\n\n    /**\n     * recognize simultaneous with an other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    recognizeWith: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n            return this;\n        }\n\n        var simultaneous = this.simultaneous;\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        if (!simultaneous[otherRecognizer.id]) {\n            simultaneous[otherRecognizer.id] = otherRecognizer;\n            otherRecognizer.recognizeWith(this);\n        }\n        return this;\n    },\n\n    /**\n     * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    dropRecognizeWith: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n            return this;\n        }\n\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        delete this.simultaneous[otherRecognizer.id];\n        return this;\n    },\n\n    /**\n     * recognizer can only run when an other is failing\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    requireFailure: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n            return this;\n        }\n\n        var requireFail = this.requireFail;\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        if (inArray(requireFail, otherRecognizer) === -1) {\n            requireFail.push(otherRecognizer);\n            otherRecognizer.requireFailure(this);\n        }\n        return this;\n    },\n\n    /**\n     * drop the requireFailure link. it does not remove the link on the other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    dropRequireFailure: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n            return this;\n        }\n\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        var index = inArray(this.requireFail, otherRecognizer);\n        if (index > -1) {\n            this.requireFail.splice(index, 1);\n        }\n        return this;\n    },\n\n    /**\n     * has require failures boolean\n     * @returns {boolean}\n     */\n    hasRequireFailures: function() {\n        return this.requireFail.length > 0;\n    },\n\n    /**\n     * if the recognizer can recognize simultaneous with an other recognizer\n     * @param {Recognizer} otherRecognizer\n     * @returns {Boolean}\n     */\n    canRecognizeWith: function(otherRecognizer) {\n        return !!this.simultaneous[otherRecognizer.id];\n    },\n\n    /**\n     * You should use `tryEmit` instead of `emit` directly to check\n     * that all the needed recognizers has failed before emitting.\n     * @param {Object} input\n     */\n    emit: function(input) {\n        var self = this;\n        var state = this.state;\n\n        function emit(event) {\n            self.manager.emit(event, input);\n        }\n\n        // 'panstart' and 'panmove'\n        if (state < STATE_ENDED) {\n            emit(self.options.event + stateStr(state));\n        }\n\n        emit(self.options.event); // simple 'eventName' events\n\n        if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n            emit(input.additionalEvent);\n        }\n\n        // panend and pancancel\n        if (state >= STATE_ENDED) {\n            emit(self.options.event + stateStr(state));\n        }\n    },\n\n    /**\n     * Check that all the require failure recognizers has failed,\n     * if true, it emits a gesture event,\n     * otherwise, setup the state to FAILED.\n     * @param {Object} input\n     */\n    tryEmit: function(input) {\n        if (this.canEmit()) {\n            return this.emit(input);\n        }\n        // it's failing anyway\n        this.state = STATE_FAILED;\n    },\n\n    /**\n     * can we emit?\n     * @returns {boolean}\n     */\n    canEmit: function() {\n        var i = 0;\n        while (i < this.requireFail.length) {\n            if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n                return false;\n            }\n            i++;\n        }\n        return true;\n    },\n\n    /**\n     * update the recognizer\n     * @param {Object} inputData\n     */\n    recognize: function(inputData) {\n        // make a new copy of the inputData\n        // so we can change the inputData without messing up the other recognizers\n        var inputDataClone = assign({}, inputData);\n\n        // is is enabled and allow recognizing?\n        if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n            this.reset();\n            this.state = STATE_FAILED;\n            return;\n        }\n\n        // reset when we've reached the end\n        if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n            this.state = STATE_POSSIBLE;\n        }\n\n        this.state = this.process(inputDataClone);\n\n        // the recognizer has recognized a gesture\n        // so trigger an event\n        if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n            this.tryEmit(inputDataClone);\n        }\n    },\n\n    /**\n     * return the state of the recognizer\n     * the actual recognizing happens in this method\n     * @virtual\n     * @param {Object} inputData\n     * @returns {Const} STATE\n     */\n    process: function(inputData) { }, // jshint ignore:line\n\n    /**\n     * return the preferred touch-action\n     * @virtual\n     * @returns {Array}\n     */\n    getTouchAction: function() { },\n\n    /**\n     * called when the gesture isn't allowed to recognize\n     * like when another is being recognized or it is disabled\n     * @virtual\n     */\n    reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n    if (state & STATE_CANCELLED) {\n        return 'cancel';\n    } else if (state & STATE_ENDED) {\n        return 'end';\n    } else if (state & STATE_CHANGED) {\n        return 'move';\n    } else if (state & STATE_BEGAN) {\n        return 'start';\n    }\n    return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n    if (direction == DIRECTION_DOWN) {\n        return 'down';\n    } else if (direction == DIRECTION_UP) {\n        return 'up';\n    } else if (direction == DIRECTION_LEFT) {\n        return 'left';\n    } else if (direction == DIRECTION_RIGHT) {\n        return 'right';\n    }\n    return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n    var manager = recognizer.manager;\n    if (manager) {\n        return manager.get(otherRecognizer);\n    }\n    return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n    Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof AttrRecognizer\n     */\n    defaults: {\n        /**\n         * @type {Number}\n         * @default 1\n         */\n        pointers: 1\n    },\n\n    /**\n     * Used to check if it the recognizer receives valid input, like input.distance > 10.\n     * @memberof AttrRecognizer\n     * @param {Object} input\n     * @returns {Boolean} recognized\n     */\n    attrTest: function(input) {\n        var optionPointers = this.options.pointers;\n        return optionPointers === 0 || input.pointers.length === optionPointers;\n    },\n\n    /**\n     * Process the input and return the state for the recognizer\n     * @memberof AttrRecognizer\n     * @param {Object} input\n     * @returns {*} State\n     */\n    process: function(input) {\n        var state = this.state;\n        var eventType = input.eventType;\n\n        var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n        var isValid = this.attrTest(input);\n\n        // on cancel input and we've recognized before, return STATE_CANCELLED\n        if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n            return state | STATE_CANCELLED;\n        } else if (isRecognized || isValid) {\n            if (eventType & INPUT_END) {\n                return state | STATE_ENDED;\n            } else if (!(state & STATE_BEGAN)) {\n                return STATE_BEGAN;\n            }\n            return state | STATE_CHANGED;\n        }\n        return STATE_FAILED;\n    }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n\n    this.pX = null;\n    this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof PanRecognizer\n     */\n    defaults: {\n        event: 'pan',\n        threshold: 10,\n        pointers: 1,\n        direction: DIRECTION_ALL\n    },\n\n    getTouchAction: function() {\n        var direction = this.options.direction;\n        var actions = [];\n        if (direction & DIRECTION_HORIZONTAL) {\n            actions.push(TOUCH_ACTION_PAN_Y);\n        }\n        if (direction & DIRECTION_VERTICAL) {\n            actions.push(TOUCH_ACTION_PAN_X);\n        }\n        return actions;\n    },\n\n    directionTest: function(input) {\n        var options = this.options;\n        var hasMoved = true;\n        var distance = input.distance;\n        var direction = input.direction;\n        var x = input.deltaX;\n        var y = input.deltaY;\n\n        // lock to axis?\n        if (!(direction & options.direction)) {\n            if (options.direction & DIRECTION_HORIZONTAL) {\n                direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n                hasMoved = x != this.pX;\n                distance = Math.abs(input.deltaX);\n            } else {\n                direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n                hasMoved = y != this.pY;\n                distance = Math.abs(input.deltaY);\n            }\n        }\n        input.direction = direction;\n        return hasMoved && distance > options.threshold && direction & options.direction;\n    },\n\n    attrTest: function(input) {\n        return AttrRecognizer.prototype.attrTest.call(this, input) &&\n            (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n    },\n\n    emit: function(input) {\n\n        this.pX = input.deltaX;\n        this.pY = input.deltaY;\n\n        var direction = directionStr(input.direction);\n\n        if (direction) {\n            input.additionalEvent = this.options.event + direction;\n        }\n        this._super.emit.call(this, input);\n    }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof PinchRecognizer\n     */\n    defaults: {\n        event: 'pinch',\n        threshold: 0,\n        pointers: 2\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_NONE];\n    },\n\n    attrTest: function(input) {\n        return this._super.attrTest.call(this, input) &&\n            (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n    },\n\n    emit: function(input) {\n        if (input.scale !== 1) {\n            var inOut = input.scale < 1 ? 'in' : 'out';\n            input.additionalEvent = this.options.event + inOut;\n        }\n        this._super.emit.call(this, input);\n    }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n    Recognizer.apply(this, arguments);\n\n    this._timer = null;\n    this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof PressRecognizer\n     */\n    defaults: {\n        event: 'press',\n        pointers: 1,\n        time: 251, // minimal time of the pointer to be pressed\n        threshold: 9 // a minimal movement is ok, but keep it low\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_AUTO];\n    },\n\n    process: function(input) {\n        var options = this.options;\n        var validPointers = input.pointers.length === options.pointers;\n        var validMovement = input.distance < options.threshold;\n        var validTime = input.deltaTime > options.time;\n\n        this._input = input;\n\n        // we only allow little movement\n        // and we've reached an end event, so a tap is possible\n        if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n            this.reset();\n        } else if (input.eventType & INPUT_START) {\n            this.reset();\n            this._timer = setTimeoutContext(function() {\n                this.state = STATE_RECOGNIZED;\n                this.tryEmit();\n            }, options.time, this);\n        } else if (input.eventType & INPUT_END) {\n            return STATE_RECOGNIZED;\n        }\n        return STATE_FAILED;\n    },\n\n    reset: function() {\n        clearTimeout(this._timer);\n    },\n\n    emit: function(input) {\n        if (this.state !== STATE_RECOGNIZED) {\n            return;\n        }\n\n        if (input && (input.eventType & INPUT_END)) {\n            this.manager.emit(this.options.event + 'up', input);\n        } else {\n            this._input.timeStamp = now();\n            this.manager.emit(this.options.event, this._input);\n        }\n    }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof RotateRecognizer\n     */\n    defaults: {\n        event: 'rotate',\n        threshold: 0,\n        pointers: 2\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_NONE];\n    },\n\n    attrTest: function(input) {\n        return this._super.attrTest.call(this, input) &&\n            (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n    }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof SwipeRecognizer\n     */\n    defaults: {\n        event: 'swipe',\n        threshold: 10,\n        velocity: 0.3,\n        direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n        pointers: 1\n    },\n\n    getTouchAction: function() {\n        return PanRecognizer.prototype.getTouchAction.call(this);\n    },\n\n    attrTest: function(input) {\n        var direction = this.options.direction;\n        var velocity;\n\n        if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n            velocity = input.overallVelocity;\n        } else if (direction & DIRECTION_HORIZONTAL) {\n            velocity = input.overallVelocityX;\n        } else if (direction & DIRECTION_VERTICAL) {\n            velocity = input.overallVelocityY;\n        }\n\n        return this._super.attrTest.call(this, input) &&\n            direction & input.offsetDirection &&\n            input.distance > this.options.threshold &&\n            input.maxPointers == this.options.pointers &&\n            abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n    },\n\n    emit: function(input) {\n        var direction = directionStr(input.offsetDirection);\n        if (direction) {\n            this.manager.emit(this.options.event + direction, input);\n        }\n\n        this.manager.emit(this.options.event, input);\n    }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n    Recognizer.apply(this, arguments);\n\n    // previous time and center,\n    // used for tap counting\n    this.pTime = false;\n    this.pCenter = false;\n\n    this._timer = null;\n    this._input = null;\n    this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof PinchRecognizer\n     */\n    defaults: {\n        event: 'tap',\n        pointers: 1,\n        taps: 1,\n        interval: 300, // max time between the multi-tap taps\n        time: 250, // max time of the pointer to be down (like finger on the screen)\n        threshold: 9, // a minimal movement is ok, but keep it low\n        posThreshold: 10 // a multi-tap can be a bit off the initial position\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_MANIPULATION];\n    },\n\n    process: function(input) {\n        var options = this.options;\n\n        var validPointers = input.pointers.length === options.pointers;\n        var validMovement = input.distance < options.threshold;\n        var validTouchTime = input.deltaTime < options.time;\n\n        this.reset();\n\n        if ((input.eventType & INPUT_START) && (this.count === 0)) {\n            return this.failTimeout();\n        }\n\n        // we only allow little movement\n        // and we've reached an end event, so a tap is possible\n        if (validMovement && validTouchTime && validPointers) {\n            if (input.eventType != INPUT_END) {\n                return this.failTimeout();\n            }\n\n            var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n            var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n            this.pTime = input.timeStamp;\n            this.pCenter = input.center;\n\n            if (!validMultiTap || !validInterval) {\n                this.count = 1;\n            } else {\n                this.count += 1;\n            }\n\n            this._input = input;\n\n            // if tap count matches we have recognized it,\n            // else it has began recognizing...\n            var tapCount = this.count % options.taps;\n            if (tapCount === 0) {\n                // no failing requirements, immediately trigger the tap event\n                // or wait as long as the multitap interval to trigger\n                if (!this.hasRequireFailures()) {\n                    return STATE_RECOGNIZED;\n                } else {\n                    this._timer = setTimeoutContext(function() {\n                        this.state = STATE_RECOGNIZED;\n                        this.tryEmit();\n                    }, options.interval, this);\n                    return STATE_BEGAN;\n                }\n            }\n        }\n        return STATE_FAILED;\n    },\n\n    failTimeout: function() {\n        this._timer = setTimeoutContext(function() {\n            this.state = STATE_FAILED;\n        }, this.options.interval, this);\n        return STATE_FAILED;\n    },\n\n    reset: function() {\n        clearTimeout(this._timer);\n    },\n\n    emit: function() {\n        if (this.state == STATE_RECOGNIZED) {\n            this._input.tapCount = this.count;\n            this.manager.emit(this.options.event, this._input);\n        }\n    }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n    options = options || {};\n    options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n    return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n    /**\n     * set if DOM events are being triggered.\n     * But this is slower and unused by simple implementations, so disabled by default.\n     * @type {Boolean}\n     * @default false\n     */\n    domEvents: false,\n\n    /**\n     * The value for the touchAction property/fallback.\n     * When set to `compute` it will magically set the correct value based on the added recognizers.\n     * @type {String}\n     * @default compute\n     */\n    touchAction: TOUCH_ACTION_COMPUTE,\n\n    /**\n     * @type {Boolean}\n     * @default true\n     */\n    enable: true,\n\n    /**\n     * EXPERIMENTAL FEATURE -- can be removed/changed\n     * Change the parent input target element.\n     * If Null, then it is being set the to main element.\n     * @type {Null|EventTarget}\n     * @default null\n     */\n    inputTarget: null,\n\n    /**\n     * force an input class\n     * @type {Null|Function}\n     * @default null\n     */\n    inputClass: null,\n\n    /**\n     * Default recognizer setup when calling `Hammer()`\n     * When creating a new Manager these will be skipped.\n     * @type {Array}\n     */\n    preset: [\n        // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n        [RotateRecognizer, {enable: false}],\n        [PinchRecognizer, {enable: false}, ['rotate']],\n        [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n        [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n        [TapRecognizer],\n        [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n        [PressRecognizer]\n    ],\n\n    /**\n     * Some CSS properties can be used to improve the working of Hammer.\n     * Add them to this method and they will be set when creating a new Manager.\n     * @namespace\n     */\n    cssProps: {\n        /**\n         * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n         * @type {String}\n         * @default 'none'\n         */\n        userSelect: 'none',\n\n        /**\n         * Disable the Windows Phone grippers when pressing an element.\n         * @type {String}\n         * @default 'none'\n         */\n        touchSelect: 'none',\n\n        /**\n         * Disables the default callout shown when you touch and hold a touch target.\n         * On iOS, when you touch and hold a touch target such as a link, Safari displays\n         * a callout containing information about the link. This property allows you to disable that callout.\n         * @type {String}\n         * @default 'none'\n         */\n        touchCallout: 'none',\n\n        /**\n         * Specifies whether zooming is enabled. Used by IE10>\n         * @type {String}\n         * @default 'none'\n         */\n        contentZooming: 'none',\n\n        /**\n         * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n         * @type {String}\n         * @default 'none'\n         */\n        userDrag: 'none',\n\n        /**\n         * Overrides the highlight color shown when the user taps a link or a JavaScript\n         * clickable element in iOS. This property obeys the alpha value, if specified.\n         * @type {String}\n         * @default 'rgba(0,0,0,0)'\n         */\n        tapHighlightColor: 'rgba(0,0,0,0)'\n    }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n    this.options = assign({}, Hammer.defaults, options || {});\n\n    this.options.inputTarget = this.options.inputTarget || element;\n\n    this.handlers = {};\n    this.session = {};\n    this.recognizers = [];\n    this.oldCssProps = {};\n\n    this.element = element;\n    this.input = createInputInstance(this);\n    this.touchAction = new TouchAction(this, this.options.touchAction);\n\n    toggleCssProps(this, true);\n\n    each(this.options.recognizers, function(item) {\n        var recognizer = this.add(new (item[0])(item[1]));\n        item[2] && recognizer.recognizeWith(item[2]);\n        item[3] && recognizer.requireFailure(item[3]);\n    }, this);\n}\n\nManager.prototype = {\n    /**\n     * set options\n     * @param {Object} options\n     * @returns {Manager}\n     */\n    set: function(options) {\n        assign(this.options, options);\n\n        // Options that need a little more setup\n        if (options.touchAction) {\n            this.touchAction.update();\n        }\n        if (options.inputTarget) {\n            // Clean up existing event listeners and reinitialize\n            this.input.destroy();\n            this.input.target = options.inputTarget;\n            this.input.init();\n        }\n        return this;\n    },\n\n    /**\n     * stop recognizing for this session.\n     * This session will be discarded, when a new [input]start event is fired.\n     * When forced, the recognizer cycle is stopped immediately.\n     * @param {Boolean} [force]\n     */\n    stop: function(force) {\n        this.session.stopped = force ? FORCED_STOP : STOP;\n    },\n\n    /**\n     * run the recognizers!\n     * called by the inputHandler function on every movement of the pointers (touches)\n     * it walks through all the recognizers and tries to detect the gesture that is being made\n     * @param {Object} inputData\n     */\n    recognize: function(inputData) {\n        var session = this.session;\n        if (session.stopped) {\n            return;\n        }\n\n        // run the touch-action polyfill\n        this.touchAction.preventDefaults(inputData);\n\n        var recognizer;\n        var recognizers = this.recognizers;\n\n        // this holds the recognizer that is being recognized.\n        // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n        // if no recognizer is detecting a thing, it is set to `null`\n        var curRecognizer = session.curRecognizer;\n\n        // reset when the last recognizer is recognized\n        // or when we're in a new session\n        if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n            curRecognizer = session.curRecognizer = null;\n        }\n\n        var i = 0;\n        while (i < recognizers.length) {\n            recognizer = recognizers[i];\n\n            // find out if we are allowed try to recognize the input for this one.\n            // 1.   allow if the session is NOT forced stopped (see the .stop() method)\n            // 2.   allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n            //      that is being recognized.\n            // 3.   allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n            //      this can be setup with the `recognizeWith()` method on the recognizer.\n            if (session.stopped !== FORCED_STOP && ( // 1\n                    !curRecognizer || recognizer == curRecognizer || // 2\n                    recognizer.canRecognizeWith(curRecognizer))) { // 3\n                recognizer.recognize(inputData);\n            } else {\n                recognizer.reset();\n            }\n\n            // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n            // current active recognizer. but only if we don't already have an active recognizer\n            if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n                curRecognizer = session.curRecognizer = recognizer;\n            }\n            i++;\n        }\n    },\n\n    /**\n     * get a recognizer by its event name.\n     * @param {Recognizer|String} recognizer\n     * @returns {Recognizer|Null}\n     */\n    get: function(recognizer) {\n        if (recognizer instanceof Recognizer) {\n            return recognizer;\n        }\n\n        var recognizers = this.recognizers;\n        for (var i = 0; i < recognizers.length; i++) {\n            if (recognizers[i].options.event == recognizer) {\n                return recognizers[i];\n            }\n        }\n        return null;\n    },\n\n    /**\n     * add a recognizer to the manager\n     * existing recognizers with the same event name will be removed\n     * @param {Recognizer} recognizer\n     * @returns {Recognizer|Manager}\n     */\n    add: function(recognizer) {\n        if (invokeArrayArg(recognizer, 'add', this)) {\n            return this;\n        }\n\n        // remove existing\n        var existing = this.get(recognizer.options.event);\n        if (existing) {\n            this.remove(existing);\n        }\n\n        this.recognizers.push(recognizer);\n        recognizer.manager = this;\n\n        this.touchAction.update();\n        return recognizer;\n    },\n\n    /**\n     * remove a recognizer by name or instance\n     * @param {Recognizer|String} recognizer\n     * @returns {Manager}\n     */\n    remove: function(recognizer) {\n        if (invokeArrayArg(recognizer, 'remove', this)) {\n            return this;\n        }\n\n        recognizer = this.get(recognizer);\n\n        // let's make sure this recognizer exists\n        if (recognizer) {\n            var recognizers = this.recognizers;\n            var index = inArray(recognizers, recognizer);\n\n            if (index !== -1) {\n                recognizers.splice(index, 1);\n                this.touchAction.update();\n            }\n        }\n\n        return this;\n    },\n\n    /**\n     * bind event\n     * @param {String} events\n     * @param {Function} handler\n     * @returns {EventEmitter} this\n     */\n    on: function(events, handler) {\n        if (events === undefined) {\n            return;\n        }\n        if (handler === undefined) {\n            return;\n        }\n\n        var handlers = this.handlers;\n        each(splitStr(events), function(event) {\n            handlers[event] = handlers[event] || [];\n            handlers[event].push(handler);\n        });\n        return this;\n    },\n\n    /**\n     * unbind event, leave emit blank to remove all handlers\n     * @param {String} events\n     * @param {Function} [handler]\n     * @returns {EventEmitter} this\n     */\n    off: function(events, handler) {\n        if (events === undefined) {\n            return;\n        }\n\n        var handlers = this.handlers;\n        each(splitStr(events), function(event) {\n            if (!handler) {\n                delete handlers[event];\n            } else {\n                handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n            }\n        });\n        return this;\n    },\n\n    /**\n     * emit event to the listeners\n     * @param {String} event\n     * @param {Object} data\n     */\n    emit: function(event, data) {\n        // we also want to trigger dom events\n        if (this.options.domEvents) {\n            triggerDomEvent(event, data);\n        }\n\n        // no handlers, so skip it all\n        var handlers = this.handlers[event] && this.handlers[event].slice();\n        if (!handlers || !handlers.length) {\n            return;\n        }\n\n        data.type = event;\n        data.preventDefault = function() {\n            data.srcEvent.preventDefault();\n        };\n\n        var i = 0;\n        while (i < handlers.length) {\n            handlers[i](data);\n            i++;\n        }\n    },\n\n    /**\n     * destroy the manager and unbinds all events\n     * it doesn't unbind dom events, that is the user own responsibility\n     */\n    destroy: function() {\n        this.element && toggleCssProps(this, false);\n\n        this.handlers = {};\n        this.session = {};\n        this.input.destroy();\n        this.element = null;\n    }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n    var element = manager.element;\n    if (!element.style) {\n        return;\n    }\n    var prop;\n    each(manager.options.cssProps, function(value, name) {\n        prop = prefixed(element.style, name);\n        if (add) {\n            manager.oldCssProps[prop] = element.style[prop];\n            element.style[prop] = value;\n        } else {\n            element.style[prop] = manager.oldCssProps[prop] || '';\n        }\n    });\n    if (!add) {\n        manager.oldCssProps = {};\n    }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n    var gestureEvent = document.createEvent('Event');\n    gestureEvent.initEvent(event, true, true);\n    gestureEvent.gesture = data;\n    data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n    INPUT_START: INPUT_START,\n    INPUT_MOVE: INPUT_MOVE,\n    INPUT_END: INPUT_END,\n    INPUT_CANCEL: INPUT_CANCEL,\n\n    STATE_POSSIBLE: STATE_POSSIBLE,\n    STATE_BEGAN: STATE_BEGAN,\n    STATE_CHANGED: STATE_CHANGED,\n    STATE_ENDED: STATE_ENDED,\n    STATE_RECOGNIZED: STATE_RECOGNIZED,\n    STATE_CANCELLED: STATE_CANCELLED,\n    STATE_FAILED: STATE_FAILED,\n\n    DIRECTION_NONE: DIRECTION_NONE,\n    DIRECTION_LEFT: DIRECTION_LEFT,\n    DIRECTION_RIGHT: DIRECTION_RIGHT,\n    DIRECTION_UP: DIRECTION_UP,\n    DIRECTION_DOWN: DIRECTION_DOWN,\n    DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n    DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n    DIRECTION_ALL: DIRECTION_ALL,\n\n    Manager: Manager,\n    Input: Input,\n    TouchAction: TouchAction,\n\n    TouchInput: TouchInput,\n    MouseInput: MouseInput,\n    PointerEventInput: PointerEventInput,\n    TouchMouseInput: TouchMouseInput,\n    SingleTouchInput: SingleTouchInput,\n\n    Recognizer: Recognizer,\n    AttrRecognizer: AttrRecognizer,\n    Tap: TapRecognizer,\n    Pan: PanRecognizer,\n    Swipe: SwipeRecognizer,\n    Pinch: PinchRecognizer,\n    Rotate: RotateRecognizer,\n    Press: PressRecognizer,\n\n    on: addEventListeners,\n    off: removeEventListeners,\n    each: each,\n    merge: merge,\n    extend: extend,\n    assign: assign,\n    inherit: inherit,\n    bindFn: bindFn,\n    prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n//  style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (true) {\n    !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n        return Hammer;\n    }).call(exports, __webpack_require__, exports, module),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n} else {}\n\n})(window, document, 'Hammer');\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/hammerjs/hammer.js?");

/***/ }),

/***/ "./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js ***!
  \**********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\n\nvar reactIs = __webpack_require__(/*! react-is */ \"./node_modules/hoist-non-react-statics/node_modules/react-is/index.js\");\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js?");

/***/ }),

/***/ "./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js ***!
  \************************************************************************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\n\n\nif (true) {\n  (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_ASYNC_MODE_TYPE:\n          case REACT_CONCURRENT_MODE_TYPE:\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n    }\n  }\n\n  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js?");

/***/ }),

/***/ "./node_modules/hoist-non-react-statics/node_modules/react-is/index.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/hoist-non-react-statics/node_modules/react-is/index.js ***!
  \*****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ \"./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js\");\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/hoist-non-react-statics/node_modules/react-is/index.js?");

/***/ }),

/***/ "./node_modules/inline-style-parser/index.js":
/*!***************************************************!*\
  !*** ./node_modules/inline-style-parser/index.js ***!
  \***************************************************/
/***/ (function(module) {

eval("// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function(style, options) {\n  if (typeof style !== 'string') {\n    throw new TypeError('First argument must be a string');\n  }\n\n  if (!style) return [];\n\n  options = options || {};\n\n  /**\n   * Positional.\n   */\n  var lineno = 1;\n  var column = 1;\n\n  /**\n   * Update lineno and column based on `str`.\n   *\n   * @param {String} str\n   */\n  function updatePosition(str) {\n    var lines = str.match(NEWLINE_REGEX);\n    if (lines) lineno += lines.length;\n    var i = str.lastIndexOf(NEWLINE);\n    column = ~i ? str.length - i : column + str.length;\n  }\n\n  /**\n   * Mark position and patch `node.position`.\n   *\n   * @return {Function}\n   */\n  function position() {\n    var start = { line: lineno, column: column };\n    return function(node) {\n      node.position = new Position(start);\n      whitespace();\n      return node;\n    };\n  }\n\n  /**\n   * Store position information for a node.\n   *\n   * @constructor\n   * @property {Object} start\n   * @property {Object} end\n   * @property {undefined|String} source\n   */\n  function Position(start) {\n    this.start = start;\n    this.end = { line: lineno, column: column };\n    this.source = options.source;\n  }\n\n  /**\n   * Non-enumerable source string.\n   */\n  Position.prototype.content = style;\n\n  var errorsList = [];\n\n  /**\n   * Error `msg`.\n   *\n   * @param {String} msg\n   * @throws {Error}\n   */\n  function error(msg) {\n    var err = new Error(\n      options.source + ':' + lineno + ':' + column + ': ' + msg\n    );\n    err.reason = msg;\n    err.filename = options.source;\n    err.line = lineno;\n    err.column = column;\n    err.source = style;\n\n    if (options.silent) {\n      errorsList.push(err);\n    } else {\n      throw err;\n    }\n  }\n\n  /**\n   * Match `re` and return captures.\n   *\n   * @param {RegExp} re\n   * @return {undefined|Array}\n   */\n  function match(re) {\n    var m = re.exec(style);\n    if (!m) return;\n    var str = m[0];\n    updatePosition(str);\n    style = style.slice(str.length);\n    return m;\n  }\n\n  /**\n   * Parse whitespace.\n   */\n  function whitespace() {\n    match(WHITESPACE_REGEX);\n  }\n\n  /**\n   * Parse comments.\n   *\n   * @param {Object[]} [rules]\n   * @return {Object[]}\n   */\n  function comments(rules) {\n    var c;\n    rules = rules || [];\n    while ((c = comment())) {\n      if (c !== false) {\n        rules.push(c);\n      }\n    }\n    return rules;\n  }\n\n  /**\n   * Parse comment.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function comment() {\n    var pos = position();\n    if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n    var i = 2;\n    while (\n      EMPTY_STRING != style.charAt(i) &&\n      (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n    ) {\n      ++i;\n    }\n    i += 2;\n\n    if (EMPTY_STRING === style.charAt(i - 1)) {\n      return error('End of comment missing');\n    }\n\n    var str = style.slice(2, i - 2);\n    column += 2;\n    updatePosition(str);\n    style = style.slice(i);\n    column += 2;\n\n    return pos({\n      type: TYPE_COMMENT,\n      comment: str\n    });\n  }\n\n  /**\n   * Parse declaration.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function declaration() {\n    var pos = position();\n\n    // prop\n    var prop = match(PROPERTY_REGEX);\n    if (!prop) return;\n    comment();\n\n    // :\n    if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n    // val\n    var val = match(VALUE_REGEX);\n\n    var ret = pos({\n      type: TYPE_DECLARATION,\n      property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n      value: val\n        ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n        : EMPTY_STRING\n    });\n\n    // ;\n    match(SEMICOLON_REGEX);\n\n    return ret;\n  }\n\n  /**\n   * Parse declarations.\n   *\n   * @return {Object[]}\n   */\n  function declarations() {\n    var decls = [];\n\n    comments(decls);\n\n    // declarations\n    var decl;\n    while ((decl = declaration())) {\n      if (decl !== false) {\n        decls.push(decl);\n        comments(decls);\n      }\n    }\n\n    return decls;\n  }\n\n  whitespace();\n  return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n  return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/inline-style-parser/index.js?");

/***/ }),

/***/ "./node_modules/is-buffer/index.js":
/*!*****************************************!*\
  !*** ./node_modules/is-buffer/index.js ***!
  \*****************************************/
/***/ (function(module) {

eval("/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n  return obj != null && obj.constructor != null &&\n    typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/is-buffer/index.js?");

/***/ }),

/***/ "./node_modules/lodash.assignwith/index.js":
/*!*************************************************!*\
  !*** ./node_modules/lodash.assignwith/index.js ***!
  \*************************************************/
/***/ (function(module) {

eval("/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n    nativeMax = Math.max;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    object[key] = value;\n  }\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = array;\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    assignValue(object, key, newValue === undefined ? source[key] : newValue);\n  }\n  return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n *   return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n  copyObject(source, keys(source), object, customizer);\n});\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = assignWith;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/lodash.assignwith/index.js?");

/***/ }),

/***/ "./node_modules/lodash.clonedeep/index.js":
/*!************************************************!*\
  !*** ./node_modules/lodash.clonedeep/index.js ***!
  \************************************************/
/***/ (function(module, exports, __webpack_require__) {

eval("/* module decorator */ module = __webpack_require__.nmd(module);\n/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports =  true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && \"object\" == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n  // Don't return `map.set` because it's not chainable in IE 11.\n  map.set(pair[0], pair[1]);\n  return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n  // Don't return `set.add` because it's not chainable in IE 11.\n  set.add(value);\n  return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    getPrototype = overArg(Object.getPrototypeOf, Object),\n    objectCreate = Object.create,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n    nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n    nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n    Map = getNative(root, 'Map'),\n    Promise = getNative(root, 'Promise'),\n    Set = getNative(root, 'Set'),\n    WeakMap = getNative(root, 'WeakMap'),\n    nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  getMapData(this, key).set(key, value);\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var cache = this.__data__;\n  if (cache instanceof ListCache) {\n    var pairs = cache.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      return this;\n    }\n    cache = this.__data__ = new MapCache(pairs);\n  }\n  cache.set(key, value);\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    object[key] = value;\n  }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n  var result;\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      if (isHostObject(value)) {\n        return object ? value : {};\n      }\n      result = initCloneObject(isFunc ? {} : value);\n      if (!isDeep) {\n        return copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, baseClone, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (!isArr) {\n    var props = isFull ? getAllKeys(value) : keys(value);\n  }\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n  });\n  return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n  return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var result = new buffer.constructor(buffer.length);\n  buffer.copy(result);\n  return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n  var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n  return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n  var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n  return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    assignValue(object, key, newValue === undefined ? source[key] : newValue);\n  }\n  return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = objectToString.call(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : undefined;\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return cloneMap(object, isDeep, cloneFunc);\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return cloneSet(object, isDeep, cloneFunc);\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = cloneDeep;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/lodash.clonedeep/index.js?");

/***/ }),

/***/ "./node_modules/lodash.find/index.js":
/*!*******************************************!*\
  !*** ./node_modules/lodash.find/index.js ***!
  \*******************************************/
/***/ (function(module, exports, __webpack_require__) {

eval("/* module decorator */ module = __webpack_require__.nmd(module);\n/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n    PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991,\n    MAX_INTEGER = 1.7976931348623157e+308,\n    NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/,\n    reLeadingDot = /^\\./,\n    rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports =  true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && \"object\" == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    return freeProcess && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n    nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n    Map = getNative(root, 'Map'),\n    Promise = getNative(root, 'Promise'),\n    Set = getNative(root, 'Set'),\n    WeakMap = getNative(root, 'WeakMap'),\n    nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  getMapData(this, key).set(key, value);\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values ? values.length : 0;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var cache = this.__data__;\n  if (cache instanceof ListCache) {\n    var pairs = cache.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      return this;\n    }\n    cache = this.__data__ = new MapCache(pairs);\n  }\n  cache.set(key, value);\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n *  The bitmask may be composed of the following flags:\n *     1 - Unordered comparison\n *     2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = arrayTag,\n      othTag = arrayTag;\n\n  if (!objIsArr) {\n    objTag = getTag(object);\n    objTag = objTag == argsTag ? objectTag : objTag;\n  }\n  if (!othIsArr) {\n    othTag = getTag(other);\n    othTag = othTag == argsTag ? objectTag : othTag;\n  }\n  var objIsObj = objTag == objectTag && !isHostObject(object),\n      othIsObj = othTag == objectTag && !isHostObject(other),\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n      : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n  }\n  if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n  };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n  return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n  return function(collection, predicate, fromIndex) {\n    var iterable = Object(collection);\n    if (!isArrayLike(collection)) {\n      var iteratee = baseIteratee(predicate, 3);\n      collection = keys(collection);\n      predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n    }\n    var index = findIndexFunc(collection, predicate, fromIndex);\n    return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n  };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!seen.has(othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n              return seen.add(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, customizer, bitmask, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= UNORDERED_COMPARE_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      objProps = keys(object),\n      objLength = objProps.length,\n      othProps = keys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = objectToString.call(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : undefined;\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var result,\n      index = -1,\n      length = path.length;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result) {\n    return result;\n  }\n  var length = object ? object.length : 0;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n  string = toString(string);\n\n  var result = [];\n  if (reLeadingDot.test(string)) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, string) {\n    result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity]\n *  The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': false },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n  var length = array ? array.length : 0;\n  if (!length) {\n    return -1;\n  }\n  var index = fromIndex == null ? 0 : toInteger(fromIndex);\n  if (index < 0) {\n    index = nativeMax(length + index, 0);\n  }\n  return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity]\n *  The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'age': 36, 'active': true },\n *   { 'user': 'fred',    'age': 40, 'active': false },\n *   { 'user': 'pebbles', 'age': 1,  'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result);\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = find;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/lodash.find/index.js?");

/***/ }),

/***/ "./node_modules/lodash.isequal/index.js":
/*!**********************************************!*\
  !*** ./node_modules/lodash.isequal/index.js ***!
  \**********************************************/
/***/ (function(module, exports, __webpack_require__) {

eval("/* module decorator */ module = __webpack_require__.nmd(module);\n/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    asyncTag = '[object AsyncFunction]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    nullTag = '[object Null]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    proxyTag = '[object Proxy]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    undefinedTag = '[object Undefined]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports =  true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && \"object\" == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n    nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n    nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n    Map = getNative(root, 'Map'),\n    Promise = getNative(root, 'Promise'),\n    Set = getNative(root, 'Set'),\n    WeakMap = getNative(root, 'WeakMap'),\n    nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = isEqual;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/lodash.isequal/index.js?");

/***/ }),

/***/ "./node_modules/lodash.isundefined/index.js":
/*!**************************************************!*\
  !*** ./node_modules/lodash.isundefined/index.js ***!
  \**************************************************/
/***/ (function(module) {

eval("/**\n * lodash 3.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n  return value === undefined;\n}\n\nmodule.exports = isUndefined;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/lodash.isundefined/index.js?");

/***/ }),

/***/ "./node_modules/lodash.merge/index.js":
/*!********************************************!*\
  !*** ./node_modules/lodash.merge/index.js ***!
  \********************************************/
/***/ (function(module, exports, __webpack_require__) {

eval("/* module decorator */ module = __webpack_require__.nmd(module);\n/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    asyncTag = '[object AsyncFunction]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    nullTag = '[object Null]',\n    objectTag = '[object Object]',\n    proxyTag = '[object Proxy]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    undefinedTag = '[object Undefined]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports =  true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && \"object\" == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n    getPrototype = overArg(Object.getPrototypeOf, Object),\n    objectCreate = Object.create,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n    nativeMax = Math.max,\n    nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n    nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = merge;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/lodash.merge/index.js?");

/***/ }),

/***/ "./node_modules/lodash.throttle/index.js":
/*!***********************************************!*\
  !*** ./node_modules/lodash.throttle/index.js ***!
  \***********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/lodash.throttle/index.js?");

/***/ }),

/***/ "./node_modules/mjolnir.js/dist/esm/constants.js":
/*!*******************************************************!*\
  !*** ./node_modules/mjolnir.js/dist/esm/constants.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BASIC_EVENT_ALIASES\": function() { return /* binding */ BASIC_EVENT_ALIASES; },\n/* harmony export */   \"EVENT_RECOGNIZER_MAP\": function() { return /* binding */ EVENT_RECOGNIZER_MAP; },\n/* harmony export */   \"GESTURE_EVENT_ALIASES\": function() { return /* binding */ GESTURE_EVENT_ALIASES; },\n/* harmony export */   \"INPUT_EVENT_TYPES\": function() { return /* binding */ INPUT_EVENT_TYPES; },\n/* harmony export */   \"RECOGNIZERS\": function() { return /* binding */ RECOGNIZERS; },\n/* harmony export */   \"RECOGNIZER_COMPATIBLE_MAP\": function() { return /* binding */ RECOGNIZER_COMPATIBLE_MAP; },\n/* harmony export */   \"RECOGNIZER_FALLBACK_MAP\": function() { return /* binding */ RECOGNIZER_FALLBACK_MAP; }\n/* harmony export */ });\n/* harmony import */ var _utils_hammer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/hammer */ \"./node_modules/mjolnir.js/dist/esm/utils/hammer.browser.js\");\n\n// This module contains constants that must be conditionally required\n// due to `window`/`document` references downstream.\nconst RECOGNIZERS = _utils_hammer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n    ? [\n        [_utils_hammer__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Pan, { event: 'tripan', pointers: 3, threshold: 0, enable: false }],\n        [_utils_hammer__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Rotate, { enable: false }],\n        [_utils_hammer__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Pinch, { enable: false }],\n        [_utils_hammer__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Swipe, { enable: false }],\n        [_utils_hammer__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Pan, { threshold: 0, enable: false }],\n        [_utils_hammer__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Press, { enable: false }],\n        [_utils_hammer__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Tap, { event: 'doubletap', taps: 2, enable: false }],\n        // TODO - rename to 'tap' and 'singletap' in the next major release\n        [_utils_hammer__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Tap, { event: 'anytap', enable: false }],\n        [_utils_hammer__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Tap, { enable: false }]\n    ]\n    : null;\n// Recognize the following gestures even if a given recognizer succeeds\nconst RECOGNIZER_COMPATIBLE_MAP = {\n    tripan: ['rotate', 'pinch', 'pan'],\n    rotate: ['pinch'],\n    pinch: ['pan'],\n    pan: ['press', 'doubletap', 'anytap', 'tap'],\n    doubletap: ['anytap'],\n    anytap: ['tap']\n};\n// Recognize the folling gestures only if a given recognizer fails\nconst RECOGNIZER_FALLBACK_MAP = {\n    doubletap: ['tap']\n};\n/**\n * Only one set of basic input events will be fired by Hammer.js:\n * either pointer, touch, or mouse, depending on system support.\n * In order to enable an application to be agnostic of system support,\n * alias basic input events into \"classes\" of events: down, move, and up.\n * See `_onBasicInput()` for usage of these aliases.\n */\nconst BASIC_EVENT_ALIASES = {\n    pointerdown: 'pointerdown',\n    pointermove: 'pointermove',\n    pointerup: 'pointerup',\n    touchstart: 'pointerdown',\n    touchmove: 'pointermove',\n    touchend: 'pointerup',\n    mousedown: 'pointerdown',\n    mousemove: 'pointermove',\n    mouseup: 'pointerup'\n};\nconst INPUT_EVENT_TYPES = {\n    KEY_EVENTS: ['keydown', 'keyup'],\n    MOUSE_EVENTS: ['mousedown', 'mousemove', 'mouseup', 'mouseover', 'mouseout', 'mouseleave'],\n    WHEEL_EVENTS: [\n        // Chrome, Safari\n        'wheel',\n        // IE\n        'mousewheel'\n    ]\n};\n/**\n * \"Gestural\" events are those that have semantic meaning beyond the basic input event,\n * e.g. a click or tap is a sequence of `down` and `up` events with no `move` event in between.\n * Hammer.js handles these with its Recognizer system;\n * this block maps event names to the Recognizers required to detect the events.\n */\nconst EVENT_RECOGNIZER_MAP = {\n    tap: 'tap',\n    anytap: 'anytap',\n    doubletap: 'doubletap',\n    press: 'press',\n    pinch: 'pinch',\n    pinchin: 'pinch',\n    pinchout: 'pinch',\n    pinchstart: 'pinch',\n    pinchmove: 'pinch',\n    pinchend: 'pinch',\n    pinchcancel: 'pinch',\n    rotate: 'rotate',\n    rotatestart: 'rotate',\n    rotatemove: 'rotate',\n    rotateend: 'rotate',\n    rotatecancel: 'rotate',\n    tripan: 'tripan',\n    tripanstart: 'tripan',\n    tripanmove: 'tripan',\n    tripanup: 'tripan',\n    tripandown: 'tripan',\n    tripanleft: 'tripan',\n    tripanright: 'tripan',\n    tripanend: 'tripan',\n    tripancancel: 'tripan',\n    pan: 'pan',\n    panstart: 'pan',\n    panmove: 'pan',\n    panup: 'pan',\n    pandown: 'pan',\n    panleft: 'pan',\n    panright: 'pan',\n    panend: 'pan',\n    pancancel: 'pan',\n    swipe: 'swipe',\n    swipeleft: 'swipe',\n    swiperight: 'swipe',\n    swipeup: 'swipe',\n    swipedown: 'swipe'\n};\n/**\n * Map gestural events typically provided by browsers\n * that are not reported in 'hammer.input' events\n * to corresponding Hammer.js gestures.\n */\nconst GESTURE_EVENT_ALIASES = {\n    click: 'tap',\n    anyclick: 'anytap',\n    dblclick: 'doubletap',\n    mousedown: 'pointerdown',\n    mousemove: 'pointermove',\n    mouseup: 'pointerup',\n    mouseover: 'pointerover',\n    mouseout: 'pointerout',\n    mouseleave: 'pointerleave'\n};\n//# sourceMappingURL=constants.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mjolnir.js/dist/esm/constants.js?");

/***/ }),

/***/ "./node_modules/mjolnir.js/dist/esm/event-manager.js":
/*!***********************************************************!*\
  !*** ./node_modules/mjolnir.js/dist/esm/event-manager.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ EventManager; }\n/* harmony export */ });\n/* harmony import */ var _utils_hammer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/hammer */ \"./node_modules/mjolnir.js/dist/esm/utils/hammer.browser.js\");\n/* harmony import */ var _inputs_wheel_input__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./inputs/wheel-input */ \"./node_modules/mjolnir.js/dist/esm/inputs/wheel-input.js\");\n/* harmony import */ var _inputs_move_input__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./inputs/move-input */ \"./node_modules/mjolnir.js/dist/esm/inputs/move-input.js\");\n/* harmony import */ var _inputs_key_input__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./inputs/key-input */ \"./node_modules/mjolnir.js/dist/esm/inputs/key-input.js\");\n/* harmony import */ var _inputs_contextmenu_input__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./inputs/contextmenu-input */ \"./node_modules/mjolnir.js/dist/esm/inputs/contextmenu-input.js\");\n/* harmony import */ var _utils_event_registrar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/event-registrar */ \"./node_modules/mjolnir.js/dist/esm/utils/event-registrar.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./constants */ \"./node_modules/mjolnir.js/dist/esm/constants.js\");\n\n\n\n\n\n\n\nconst DEFAULT_OPTIONS = {\n    // event handlers\n    events: null,\n    // custom recognizers\n    recognizers: null,\n    recognizerOptions: {},\n    // Manager class\n    Manager: _utils_hammer__WEBPACK_IMPORTED_MODULE_0__.Manager,\n    // allow browser default touch action\n    // https://github.com/uber/react-map-gl/issues/506\n    touchAction: 'none',\n    tabIndex: 0\n};\n// Unified API for subscribing to events about both\n// basic input events (e.g. 'mousemove', 'touchstart', 'wheel')\n// and gestural input (e.g. 'click', 'tap', 'panstart').\n// Delegates gesture related event registration and handling to Hammer.js.\nclass EventManager {\n    constructor(element = null, options) {\n        /**\n         * Handle basic events using the 'hammer.input' Hammer.js API:\n         * Before running Recognizers, Hammer emits a 'hammer.input' event\n         * with the basic event info. This function emits all basic events\n         * aliased to the \"class\" of event received.\n         * See constants.BASIC_EVENT_CLASSES basic event class definitions.\n         */\n        this._onBasicInput = (event) => {\n            const { srcEvent } = event;\n            const alias = _constants__WEBPACK_IMPORTED_MODULE_6__.BASIC_EVENT_ALIASES[srcEvent.type];\n            if (alias) {\n                // fire all events aliased to srcEvent.type\n                this.manager.emit(alias, event);\n            }\n        };\n        /**\n         * Handle events not supported by Hammer.js,\n         * and pipe back out through same (Hammer) channel used by other events.\n         */\n        this._onOtherEvent = (event) => {\n            // console.log('onotherevent', event.type, event)\n            this.manager.emit(event.type, event);\n        };\n        this.options = { ...DEFAULT_OPTIONS, ...options };\n        this.events = new Map();\n        this.setElement(element);\n        // Register all passed events.\n        const { events } = this.options;\n        if (events) {\n            this.on(events);\n        }\n    }\n    getElement() {\n        return this.element;\n    }\n    setElement(element) {\n        if (this.element) {\n            // unregister all events\n            this.destroy();\n        }\n        this.element = element;\n        if (!element) {\n            return;\n        }\n        const { options } = this;\n        const ManagerClass = options.Manager;\n        this.manager = new ManagerClass(element, {\n            touchAction: options.touchAction,\n            recognizers: options.recognizers || _constants__WEBPACK_IMPORTED_MODULE_6__.RECOGNIZERS\n        }).on('hammer.input', this._onBasicInput);\n        if (!options.recognizers) {\n            // Set default recognize withs\n            // http://hammerjs.github.io/recognize-with/\n            Object.keys(_constants__WEBPACK_IMPORTED_MODULE_6__.RECOGNIZER_COMPATIBLE_MAP).forEach(name => {\n                const recognizer = this.manager.get(name);\n                if (recognizer) {\n                    _constants__WEBPACK_IMPORTED_MODULE_6__.RECOGNIZER_COMPATIBLE_MAP[name].forEach(otherName => {\n                        recognizer.recognizeWith(otherName);\n                    });\n                }\n            });\n        }\n        // Set recognizer options\n        for (const recognizerName in options.recognizerOptions) {\n            const recognizer = this.manager.get(recognizerName);\n            if (recognizer) {\n                const recognizerOption = options.recognizerOptions[recognizerName];\n                // `enable` is managed by the event registrations\n                delete recognizerOption.enable;\n                recognizer.set(recognizerOption);\n            }\n        }\n        // Handle events not handled by Hammer.js:\n        // - mouse wheel\n        // - pointer/touch/mouse move\n        this.wheelInput = new _inputs_wheel_input__WEBPACK_IMPORTED_MODULE_1__[\"default\"](element, this._onOtherEvent, {\n            enable: false\n        });\n        this.moveInput = new _inputs_move_input__WEBPACK_IMPORTED_MODULE_2__[\"default\"](element, this._onOtherEvent, {\n            enable: false\n        });\n        this.keyInput = new _inputs_key_input__WEBPACK_IMPORTED_MODULE_3__[\"default\"](element, this._onOtherEvent, {\n            enable: false,\n            tabIndex: options.tabIndex\n        });\n        this.contextmenuInput = new _inputs_contextmenu_input__WEBPACK_IMPORTED_MODULE_4__[\"default\"](element, this._onOtherEvent, {\n            enable: false\n        });\n        // Register all existing events\n        for (const [eventAlias, eventRegistrar] of this.events) {\n            if (!eventRegistrar.isEmpty()) {\n                // Enable recognizer for this event.\n                this._toggleRecognizer(eventRegistrar.recognizerName, true);\n                this.manager.on(eventAlias, eventRegistrar.handleEvent);\n            }\n        }\n    }\n    // Tear down internal event management implementations.\n    destroy() {\n        if (this.element) {\n            // wheelInput etc. are created in setElement() and therefore\n            // cannot exist if there is no element\n            this.wheelInput.destroy();\n            this.moveInput.destroy();\n            this.keyInput.destroy();\n            this.contextmenuInput.destroy();\n            this.manager.destroy();\n            this.wheelInput = null;\n            this.moveInput = null;\n            this.keyInput = null;\n            this.contextmenuInput = null;\n            this.manager = null;\n            this.element = null;\n        }\n    }\n    /** Register an event handler function to be called on `event` */\n    on(event, handler, opts) {\n        this._addEventHandler(event, handler, opts, false);\n    }\n    once(event, handler, opts) {\n        this._addEventHandler(event, handler, opts, true);\n    }\n    watch(event, handler, opts) {\n        this._addEventHandler(event, handler, opts, false, true);\n    }\n    off(event, handler) {\n        this._removeEventHandler(event, handler);\n    }\n    /*\n     * Enable/disable recognizer for the given event\n     */\n    _toggleRecognizer(name, enabled) {\n        const { manager } = this;\n        if (!manager) {\n            return;\n        }\n        const recognizer = manager.get(name);\n        // @ts-ignore\n        if (recognizer && recognizer.options.enable !== enabled) {\n            recognizer.set({ enable: enabled });\n            const fallbackRecognizers = _constants__WEBPACK_IMPORTED_MODULE_6__.RECOGNIZER_FALLBACK_MAP[name];\n            if (fallbackRecognizers && !this.options.recognizers) {\n                // Set default require failures\n                // http://hammerjs.github.io/require-failure/\n                fallbackRecognizers.forEach(otherName => {\n                    const otherRecognizer = manager.get(otherName);\n                    if (enabled) {\n                        // Wait for this recognizer to fail\n                        otherRecognizer.requireFailure(name);\n                        /**\n                         * This seems to be a bug in hammerjs:\n                         * requireFailure() adds both ways\n                         * dropRequireFailure() only drops one way\n                         * https://github.com/hammerjs/hammer.js/blob/master/src/recognizerjs/\n                           recognizer-constructor.js#L136\n                         */\n                        recognizer.dropRequireFailure(otherName);\n                    }\n                    else {\n                        // Do not wait for this recognizer to fail\n                        otherRecognizer.dropRequireFailure(name);\n                    }\n                });\n            }\n        }\n        this.wheelInput.enableEventType(name, enabled);\n        this.moveInput.enableEventType(name, enabled);\n        this.keyInput.enableEventType(name, enabled);\n        this.contextmenuInput.enableEventType(name, enabled);\n    }\n    /**\n     * Process the event registration for a single event + handler.\n     */\n    _addEventHandler(event, handler, opts, once, passive) {\n        if (typeof event !== 'string') {\n            // @ts-ignore\n            opts = handler;\n            // If `event` is a map, call `on()` for each entry.\n            for (const eventName in event) {\n                this._addEventHandler(eventName, event[eventName], opts, once, passive);\n            }\n            return;\n        }\n        const { manager, events } = this;\n        // Alias to a recognized gesture as necessary.\n        const eventAlias = _constants__WEBPACK_IMPORTED_MODULE_6__.GESTURE_EVENT_ALIASES[event] || event;\n        let eventRegistrar = events.get(eventAlias);\n        if (!eventRegistrar) {\n            eventRegistrar = new _utils_event_registrar__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this);\n            events.set(eventAlias, eventRegistrar);\n            // Enable recognizer for this event.\n            eventRegistrar.recognizerName = _constants__WEBPACK_IMPORTED_MODULE_6__.EVENT_RECOGNIZER_MAP[eventAlias] || eventAlias;\n            // Listen to the event\n            if (manager) {\n                manager.on(eventAlias, eventRegistrar.handleEvent);\n            }\n        }\n        eventRegistrar.add(event, handler, opts, once, passive);\n        if (!eventRegistrar.isEmpty()) {\n            this._toggleRecognizer(eventRegistrar.recognizerName, true);\n        }\n    }\n    /**\n     * Process the event deregistration for a single event + handler.\n     */\n    _removeEventHandler(event, handler) {\n        if (typeof event !== 'string') {\n            // If `event` is a map, call `off()` for each entry.\n            for (const eventName in event) {\n                this._removeEventHandler(eventName, event[eventName]);\n            }\n            return;\n        }\n        const { events } = this;\n        // Alias to a recognized gesture as necessary.\n        const eventAlias = _constants__WEBPACK_IMPORTED_MODULE_6__.GESTURE_EVENT_ALIASES[event] || event;\n        const eventRegistrar = events.get(eventAlias);\n        if (!eventRegistrar) {\n            return;\n        }\n        eventRegistrar.remove(event, handler);\n        if (eventRegistrar.isEmpty()) {\n            const { recognizerName } = eventRegistrar;\n            // Disable recognizer if no more handlers are attached to its events\n            let isRecognizerUsed = false;\n            for (const eh of events.values()) {\n                if (eh.recognizerName === recognizerName && !eh.isEmpty()) {\n                    isRecognizerUsed = true;\n                    break;\n                }\n            }\n            if (!isRecognizerUsed) {\n                this._toggleRecognizer(recognizerName, false);\n            }\n        }\n    }\n}\n//# sourceMappingURL=event-manager.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mjolnir.js/dist/esm/event-manager.js?");

/***/ }),

/***/ "./node_modules/mjolnir.js/dist/esm/index.js":
/*!***************************************************!*\
  !*** ./node_modules/mjolnir.js/dist/esm/index.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EventManager\": function() { return /* reexport safe */ _event_manager__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _event_manager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./event-manager */ \"./node_modules/mjolnir.js/dist/esm/event-manager.js\");\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mjolnir.js/dist/esm/index.js?");

/***/ }),

/***/ "./node_modules/mjolnir.js/dist/esm/inputs/contextmenu-input.js":
/*!**********************************************************************!*\
  !*** ./node_modules/mjolnir.js/dist/esm/inputs/contextmenu-input.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ ContextmenuInput; }\n/* harmony export */ });\n/* harmony import */ var _input__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./input */ \"./node_modules/mjolnir.js/dist/esm/inputs/input.js\");\n\nconst EVENT_TYPE = 'contextmenu';\nclass ContextmenuInput extends _input__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n    constructor(element, callback, options) {\n        super(element, callback, options);\n        this.handleEvent = (event) => {\n            if (!this.options.enable) {\n                return;\n            }\n            this.callback({\n                type: EVENT_TYPE,\n                center: {\n                    x: event.clientX,\n                    y: event.clientY\n                },\n                srcEvent: event,\n                pointerType: 'mouse',\n                target: event.target\n            });\n        };\n        element.addEventListener('contextmenu', this.handleEvent);\n    }\n    destroy() {\n        this.element.removeEventListener('contextmenu', this.handleEvent);\n    }\n    /**\n     * Enable this input (begin processing events)\n     * if the specified event type is among those handled by this input.\n     */\n    enableEventType(eventType, enabled) {\n        if (eventType === EVENT_TYPE) {\n            this.options.enable = enabled;\n        }\n    }\n}\n//# sourceMappingURL=contextmenu-input.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mjolnir.js/dist/esm/inputs/contextmenu-input.js?");

/***/ }),

/***/ "./node_modules/mjolnir.js/dist/esm/inputs/input.js":
/*!**********************************************************!*\
  !*** ./node_modules/mjolnir.js/dist/esm/inputs/input.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Input; }\n/* harmony export */ });\nclass Input {\n    constructor(element, callback, options) {\n        this.element = element;\n        this.callback = callback;\n        this.options = { enable: true, ...options };\n    }\n}\n//# sourceMappingURL=input.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mjolnir.js/dist/esm/inputs/input.js?");

/***/ }),

/***/ "./node_modules/mjolnir.js/dist/esm/inputs/key-input.js":
/*!**************************************************************!*\
  !*** ./node_modules/mjolnir.js/dist/esm/inputs/key-input.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ KeyInput; }\n/* harmony export */ });\n/* harmony import */ var _input__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./input */ \"./node_modules/mjolnir.js/dist/esm/inputs/input.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ \"./node_modules/mjolnir.js/dist/esm/constants.js\");\n\n\nconst { KEY_EVENTS } = _constants__WEBPACK_IMPORTED_MODULE_1__.INPUT_EVENT_TYPES;\nconst DOWN_EVENT_TYPE = 'keydown';\nconst UP_EVENT_TYPE = 'keyup';\nclass KeyInput extends _input__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n    constructor(element, callback, options) {\n        super(element, callback, options);\n        this.handleEvent = (event) => {\n            // Ignore if focused on text input\n            const targetElement = (event.target || event.srcElement);\n            if ((targetElement.tagName === 'INPUT' && targetElement.type === 'text') ||\n                targetElement.tagName === 'TEXTAREA') {\n                return;\n            }\n            if (this.enableDownEvent && event.type === 'keydown') {\n                this.callback({\n                    type: DOWN_EVENT_TYPE,\n                    srcEvent: event,\n                    key: event.key,\n                    target: event.target\n                });\n            }\n            if (this.enableUpEvent && event.type === 'keyup') {\n                this.callback({\n                    type: UP_EVENT_TYPE,\n                    srcEvent: event,\n                    key: event.key,\n                    target: event.target\n                });\n            }\n        };\n        this.enableDownEvent = this.options.enable;\n        this.enableUpEvent = this.options.enable;\n        this.events = (this.options.events || []).concat(KEY_EVENTS);\n        element.tabIndex = this.options.tabIndex || 0;\n        element.style.outline = 'none';\n        this.events.forEach(event => element.addEventListener(event, this.handleEvent));\n    }\n    destroy() {\n        this.events.forEach(event => this.element.removeEventListener(event, this.handleEvent));\n    }\n    /**\n     * Enable this input (begin processing events)\n     * if the specified event type is among those handled by this input.\n     */\n    enableEventType(eventType, enabled) {\n        if (eventType === DOWN_EVENT_TYPE) {\n            this.enableDownEvent = enabled;\n        }\n        if (eventType === UP_EVENT_TYPE) {\n            this.enableUpEvent = enabled;\n        }\n    }\n}\n//# sourceMappingURL=key-input.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mjolnir.js/dist/esm/inputs/key-input.js?");

/***/ }),

/***/ "./node_modules/mjolnir.js/dist/esm/inputs/move-input.js":
/*!***************************************************************!*\
  !*** ./node_modules/mjolnir.js/dist/esm/inputs/move-input.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ MoveInput; }\n/* harmony export */ });\n/* harmony import */ var _input__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./input */ \"./node_modules/mjolnir.js/dist/esm/inputs/input.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ \"./node_modules/mjolnir.js/dist/esm/constants.js\");\n\n\nconst { MOUSE_EVENTS } = _constants__WEBPACK_IMPORTED_MODULE_1__.INPUT_EVENT_TYPES;\nconst MOVE_EVENT_TYPE = 'pointermove';\nconst OVER_EVENT_TYPE = 'pointerover';\nconst OUT_EVENT_TYPE = 'pointerout';\nconst ENTER_EVENT_TYPE = 'pointerenter';\nconst LEAVE_EVENT_TYPE = 'pointerleave';\n/**\n * Hammer.js swallows 'move' events (for pointer/touch/mouse)\n * when the pointer is not down. This class sets up a handler\n * specifically for these events to work around this limitation.\n * Note that this could be extended to more intelligently handle\n * move events across input types, e.g. storing multiple simultaneous\n * pointer/touch events, calculating speed/direction, etc.\n */\nclass MoveInput extends _input__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n    constructor(element, callback, options) {\n        super(element, callback, options);\n        this.handleEvent = (event) => {\n            this.handleOverEvent(event);\n            this.handleOutEvent(event);\n            this.handleEnterEvent(event);\n            this.handleLeaveEvent(event);\n            this.handleMoveEvent(event);\n        };\n        this.pressed = false;\n        const { enable } = this.options;\n        this.enableMoveEvent = enable;\n        this.enableLeaveEvent = enable;\n        this.enableEnterEvent = enable;\n        this.enableOutEvent = enable;\n        this.enableOverEvent = enable;\n        this.events = (this.options.events || []).concat(MOUSE_EVENTS);\n        this.events.forEach(event => element.addEventListener(event, this.handleEvent));\n    }\n    destroy() {\n        this.events.forEach(event => this.element.removeEventListener(event, this.handleEvent));\n    }\n    /**\n     * Enable this input (begin processing events)\n     * if the specified event type is among those handled by this input.\n     */\n    enableEventType(eventType, enabled) {\n        if (eventType === MOVE_EVENT_TYPE) {\n            this.enableMoveEvent = enabled;\n        }\n        if (eventType === OVER_EVENT_TYPE) {\n            this.enableOverEvent = enabled;\n        }\n        if (eventType === OUT_EVENT_TYPE) {\n            this.enableOutEvent = enabled;\n        }\n        if (eventType === ENTER_EVENT_TYPE) {\n            this.enableEnterEvent = enabled;\n        }\n        if (eventType === LEAVE_EVENT_TYPE) {\n            this.enableLeaveEvent = enabled;\n        }\n    }\n    handleOverEvent(event) {\n        if (this.enableOverEvent) {\n            if (event.type === 'mouseover') {\n                this._emit(OVER_EVENT_TYPE, event);\n            }\n        }\n    }\n    handleOutEvent(event) {\n        if (this.enableOutEvent) {\n            if (event.type === 'mouseout') {\n                this._emit(OUT_EVENT_TYPE, event);\n            }\n        }\n    }\n    handleEnterEvent(event) {\n        if (this.enableEnterEvent) {\n            if (event.type === 'mouseenter') {\n                this._emit(ENTER_EVENT_TYPE, event);\n            }\n        }\n    }\n    handleLeaveEvent(event) {\n        if (this.enableLeaveEvent) {\n            if (event.type === 'mouseleave') {\n                this._emit(LEAVE_EVENT_TYPE, event);\n            }\n        }\n    }\n    handleMoveEvent(event) {\n        if (this.enableMoveEvent) {\n            switch (event.type) {\n                case 'mousedown':\n                    if (event.button >= 0) {\n                        // Button is down\n                        this.pressed = true;\n                    }\n                    break;\n                case 'mousemove':\n                    // Move events use `which` to track the button being pressed\n                    if (event.which === 0) {\n                        // Button is not down\n                        this.pressed = false;\n                    }\n                    if (!this.pressed) {\n                        // Drag events are emitted by hammer already\n                        // we just need to emit the move event on hover\n                        this._emit(MOVE_EVENT_TYPE, event);\n                    }\n                    break;\n                case 'mouseup':\n                    this.pressed = false;\n                    break;\n                default:\n            }\n        }\n    }\n    _emit(type, event) {\n        this.callback({\n            type,\n            center: {\n                x: event.clientX,\n                y: event.clientY\n            },\n            srcEvent: event,\n            pointerType: 'mouse',\n            target: event.target\n        });\n    }\n}\n//# sourceMappingURL=move-input.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mjolnir.js/dist/esm/inputs/move-input.js?");

/***/ }),

/***/ "./node_modules/mjolnir.js/dist/esm/inputs/wheel-input.js":
/*!****************************************************************!*\
  !*** ./node_modules/mjolnir.js/dist/esm/inputs/wheel-input.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ WheelInput; }\n/* harmony export */ });\n/* harmony import */ var _input__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./input */ \"./node_modules/mjolnir.js/dist/esm/inputs/input.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ \"./node_modules/mjolnir.js/dist/esm/constants.js\");\n/* harmony import */ var _utils_globals__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/globals */ \"./node_modules/mjolnir.js/dist/esm/utils/globals.js\");\n\n\n\nconst firefox = _utils_globals__WEBPACK_IMPORTED_MODULE_2__.userAgent.indexOf('firefox') !== -1;\nconst { WHEEL_EVENTS } = _constants__WEBPACK_IMPORTED_MODULE_1__.INPUT_EVENT_TYPES;\nconst EVENT_TYPE = 'wheel';\n// Constants for normalizing input delta\nconst WHEEL_DELTA_MAGIC_SCALER = 4.000244140625;\nconst WHEEL_DELTA_PER_LINE = 40;\n// Slow down zoom if shift key is held for more precise zooming\nconst SHIFT_MULTIPLIER = 0.25;\nclass WheelInput extends _input__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n    constructor(element, callback, options) {\n        super(element, callback, options);\n        /* eslint-disable complexity, max-statements */\n        this.handleEvent = (event) => {\n            if (!this.options.enable) {\n                return;\n            }\n            let value = event.deltaY;\n            if (_utils_globals__WEBPACK_IMPORTED_MODULE_2__.window.WheelEvent) {\n                // Firefox doubles the values on retina screens...\n                if (firefox && event.deltaMode === _utils_globals__WEBPACK_IMPORTED_MODULE_2__.window.WheelEvent.DOM_DELTA_PIXEL) {\n                    value /= _utils_globals__WEBPACK_IMPORTED_MODULE_2__.window.devicePixelRatio;\n                }\n                if (event.deltaMode === _utils_globals__WEBPACK_IMPORTED_MODULE_2__.window.WheelEvent.DOM_DELTA_LINE) {\n                    value *= WHEEL_DELTA_PER_LINE;\n                }\n            }\n            if (value !== 0 && value % WHEEL_DELTA_MAGIC_SCALER === 0) {\n                // This one is definitely a mouse wheel event.\n                // Normalize this value to match trackpad.\n                value = Math.floor(value / WHEEL_DELTA_MAGIC_SCALER);\n            }\n            if (event.shiftKey && value) {\n                value = value * SHIFT_MULTIPLIER;\n            }\n            this.callback({\n                type: EVENT_TYPE,\n                center: {\n                    x: event.clientX,\n                    y: event.clientY\n                },\n                delta: -value,\n                srcEvent: event,\n                pointerType: 'mouse',\n                target: event.target\n            });\n        };\n        this.events = (this.options.events || []).concat(WHEEL_EVENTS);\n        this.events.forEach(event => element.addEventListener(event, this.handleEvent, _utils_globals__WEBPACK_IMPORTED_MODULE_2__.passiveSupported ? { passive: false } : false));\n    }\n    destroy() {\n        this.events.forEach(event => this.element.removeEventListener(event, this.handleEvent));\n    }\n    /**\n     * Enable this input (begin processing events)\n     * if the specified event type is among those handled by this input.\n     */\n    enableEventType(eventType, enabled) {\n        if (eventType === EVENT_TYPE) {\n            this.options.enable = enabled;\n        }\n    }\n}\n//# sourceMappingURL=wheel-input.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mjolnir.js/dist/esm/inputs/wheel-input.js?");

/***/ }),

/***/ "./node_modules/mjolnir.js/dist/esm/utils/event-registrar.js":
/*!*******************************************************************!*\
  !*** ./node_modules/mjolnir.js/dist/esm/utils/event-registrar.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ EventRegistrar; }\n/* harmony export */ });\n/* harmony import */ var _event_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./event-utils */ \"./node_modules/mjolnir.js/dist/esm/utils/event-utils.js\");\n\nconst DEFAULT_OPTIONS = {\n    srcElement: 'root',\n    priority: 0\n};\nclass EventRegistrar {\n    constructor(eventManager) {\n        /**\n         * Handles hammerjs event\n         */\n        this.handleEvent = (event) => {\n            if (this.isEmpty()) {\n                return;\n            }\n            const mjolnirEvent = this._normalizeEvent(event);\n            let target = event.srcEvent.target;\n            while (target && target !== mjolnirEvent.rootElement) {\n                this._emit(mjolnirEvent, target);\n                if (mjolnirEvent.handled) {\n                    return;\n                }\n                target = target.parentNode;\n            }\n            this._emit(mjolnirEvent, 'root');\n        };\n        this.eventManager = eventManager;\n        this.handlers = [];\n        // Element -> handler map\n        this.handlersByElement = new Map();\n        this._active = false;\n    }\n    // Returns true if there are no non-passive handlers\n    isEmpty() {\n        return !this._active;\n    }\n    add(type, handler, options, once = false, passive = false) {\n        const { handlers, handlersByElement } = this;\n        let opts = DEFAULT_OPTIONS;\n        if (typeof options === 'string' || (options && options.addEventListener)) {\n            // is DOM element, backward compatibility\n            // @ts-ignore\n            opts = { ...DEFAULT_OPTIONS, srcElement: options };\n        }\n        else if (options) {\n            opts = { ...DEFAULT_OPTIONS, ...options };\n        }\n        let entries = handlersByElement.get(opts.srcElement);\n        if (!entries) {\n            entries = [];\n            handlersByElement.set(opts.srcElement, entries);\n        }\n        const entry = {\n            type,\n            handler,\n            srcElement: opts.srcElement,\n            priority: opts.priority\n        };\n        if (once) {\n            entry.once = true;\n        }\n        if (passive) {\n            entry.passive = true;\n        }\n        handlers.push(entry);\n        this._active = this._active || !entry.passive;\n        // Sort handlers by descending priority\n        // Handlers with the same priority are excuted in the order of registration\n        let insertPosition = entries.length - 1;\n        while (insertPosition >= 0) {\n            if (entries[insertPosition].priority >= entry.priority) {\n                break;\n            }\n            insertPosition--;\n        }\n        entries.splice(insertPosition + 1, 0, entry);\n    }\n    remove(type, handler) {\n        const { handlers, handlersByElement } = this;\n        for (let i = handlers.length - 1; i >= 0; i--) {\n            const entry = handlers[i];\n            if (entry.type === type && entry.handler === handler) {\n                handlers.splice(i, 1);\n                const entries = handlersByElement.get(entry.srcElement);\n                entries.splice(entries.indexOf(entry), 1);\n                if (entries.length === 0) {\n                    handlersByElement.delete(entry.srcElement);\n                }\n            }\n        }\n        this._active = handlers.some(entry => !entry.passive);\n    }\n    /**\n     * Invoke handlers on a particular element\n     */\n    _emit(event, srcElement) {\n        const entries = this.handlersByElement.get(srcElement);\n        if (entries) {\n            let immediatePropagationStopped = false;\n            // Prevents the current event from bubbling up\n            const stopPropagation = () => {\n                event.handled = true;\n            };\n            // Prevent any remaining listeners from being called\n            const stopImmediatePropagation = () => {\n                event.handled = true;\n                immediatePropagationStopped = true;\n            };\n            const entriesToRemove = [];\n            for (let i = 0; i < entries.length; i++) {\n                const { type, handler, once } = entries[i];\n                handler({\n                    ...event,\n                    // @ts-ignore\n                    type,\n                    stopPropagation,\n                    stopImmediatePropagation\n                });\n                if (once) {\n                    entriesToRemove.push(entries[i]);\n                }\n                if (immediatePropagationStopped) {\n                    break;\n                }\n            }\n            for (let i = 0; i < entriesToRemove.length; i++) {\n                const { type, handler } = entriesToRemove[i];\n                this.remove(type, handler);\n            }\n        }\n    }\n    /**\n     * Normalizes hammerjs and custom events to have predictable fields.\n     */\n    _normalizeEvent(event) {\n        const rootElement = this.eventManager.getElement();\n        return {\n            ...event,\n            ...(0,_event_utils__WEBPACK_IMPORTED_MODULE_0__.whichButtons)(event),\n            ...(0,_event_utils__WEBPACK_IMPORTED_MODULE_0__.getOffsetPosition)(event, rootElement),\n            preventDefault: () => {\n                event.srcEvent.preventDefault();\n            },\n            stopImmediatePropagation: null,\n            stopPropagation: null,\n            handled: false,\n            rootElement\n        };\n    }\n}\n//# sourceMappingURL=event-registrar.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mjolnir.js/dist/esm/utils/event-registrar.js?");

/***/ }),

/***/ "./node_modules/mjolnir.js/dist/esm/utils/event-utils.js":
/*!***************************************************************!*\
  !*** ./node_modules/mjolnir.js/dist/esm/utils/event-utils.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getOffsetPosition\": function() { return /* binding */ getOffsetPosition; },\n/* harmony export */   \"whichButtons\": function() { return /* binding */ whichButtons; }\n/* harmony export */ });\n/* Constants */\nconst DOWN_EVENT = 1;\nconst MOVE_EVENT = 2;\nconst UP_EVENT = 4;\nconst MOUSE_EVENTS = {\n    pointerdown: DOWN_EVENT,\n    pointermove: MOVE_EVENT,\n    pointerup: UP_EVENT,\n    mousedown: DOWN_EVENT,\n    mousemove: MOVE_EVENT,\n    mouseup: UP_EVENT\n};\n// MouseEvent.which https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which\nconst MOUSE_EVENT_WHICH_LEFT = 1;\nconst MOUSE_EVENT_WHICH_MIDDLE = 2;\nconst MOUSE_EVENT_WHICH_RIGHT = 3;\n// MouseEvent.button https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\nconst MOUSE_EVENT_BUTTON_LEFT = 0;\nconst MOUSE_EVENT_BUTTON_MIDDLE = 1;\nconst MOUSE_EVENT_BUTTON_RIGHT = 2;\n// MouseEvent.buttons https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\nconst MOUSE_EVENT_BUTTONS_LEFT_MASK = 1;\nconst MOUSE_EVENT_BUTTONS_RIGHT_MASK = 2;\nconst MOUSE_EVENT_BUTTONS_MIDDLE_MASK = 4;\n/**\n * Extract the involved mouse button\n */\nfunction whichButtons(event) {\n    const eventType = MOUSE_EVENTS[event.srcEvent.type];\n    if (!eventType) {\n        // Not a mouse evet\n        return null;\n    }\n    const { buttons, button, which } = event.srcEvent;\n    let leftButton = false;\n    let middleButton = false;\n    let rightButton = false;\n    if (\n    // button is up, need to find out which one was pressed before\n    eventType === UP_EVENT ||\n        // moving but does not support `buttons` API\n        (eventType === MOVE_EVENT && !Number.isFinite(buttons))) {\n        leftButton = which === MOUSE_EVENT_WHICH_LEFT;\n        middleButton = which === MOUSE_EVENT_WHICH_MIDDLE;\n        rightButton = which === MOUSE_EVENT_WHICH_RIGHT;\n    }\n    else if (eventType === MOVE_EVENT) {\n        leftButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_LEFT_MASK);\n        middleButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_MIDDLE_MASK);\n        rightButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_RIGHT_MASK);\n    }\n    else if (eventType === DOWN_EVENT) {\n        leftButton = button === MOUSE_EVENT_BUTTON_LEFT;\n        middleButton = button === MOUSE_EVENT_BUTTON_MIDDLE;\n        rightButton = button === MOUSE_EVENT_BUTTON_RIGHT;\n    }\n    return { leftButton, middleButton, rightButton };\n}\n/**\n * Calculate event position relative to the root element\n */\nfunction getOffsetPosition(event, rootElement) {\n    const center = event.center;\n    // `center` is a hammer.js event property\n    if (!center) {\n        // Not a gestural event\n        return null;\n    }\n    const rect = rootElement.getBoundingClientRect();\n    // Fix scale for map affected by a CSS transform.\n    // See https://stackoverflow.com/a/26893663/3528533\n    const scaleX = rect.width / rootElement.offsetWidth || 1;\n    const scaleY = rect.height / rootElement.offsetHeight || 1;\n    // Calculate center relative to the root element\n    const offsetCenter = {\n        x: (center.x - rect.left - rootElement.clientLeft) / scaleX,\n        y: (center.y - rect.top - rootElement.clientTop) / scaleY\n    };\n    return { center, offsetCenter };\n}\n//# sourceMappingURL=event-utils.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mjolnir.js/dist/esm/utils/event-utils.js?");

/***/ }),

/***/ "./node_modules/mjolnir.js/dist/esm/utils/globals.js":
/*!***********************************************************!*\
  !*** ./node_modules/mjolnir.js/dist/esm/utils/globals.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"document\": function() { return /* binding */ document_; },\n/* harmony export */   \"global\": function() { return /* binding */ global_; },\n/* harmony export */   \"passiveSupported\": function() { return /* binding */ passiveSupported; },\n/* harmony export */   \"userAgent\": function() { return /* binding */ userAgent; },\n/* harmony export */   \"window\": function() { return /* binding */ window_; }\n/* harmony export */ });\n// Purpose: include this in your module to avoids adding dependencies on\n// micro modules like 'global'\n/* global window, global, document, navigator */\nconst userAgent = typeof navigator !== 'undefined' && navigator.userAgent ? navigator.userAgent.toLowerCase() : '';\nconst window_ = typeof window !== 'undefined' ? window : __webpack_require__.g;\nconst global_ = typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : window;\nconst document_ = typeof document !== 'undefined' ? document : {};\n\n/*\n * Detect whether passive option is supported by the current browser.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n   #Safely_detecting_option_support\n */\nlet passiveSupported = false;\n/* eslint-disable accessor-pairs, no-empty */\ntry {\n    const options = {\n        // This function will be called when the browser\n        // attempts to access the passive property.\n        get passive() {\n            passiveSupported = true;\n            return true;\n        }\n    };\n    window_.addEventListener('test', null, options);\n    window_.removeEventListener('test', null);\n}\ncatch (err) {\n    passiveSupported = false;\n}\n\n//# sourceMappingURL=globals.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mjolnir.js/dist/esm/utils/globals.js?");

/***/ }),

/***/ "./node_modules/mjolnir.js/dist/esm/utils/hammer-overrides.js":
/*!********************************************************************!*\
  !*** ./node_modules/mjolnir.js/dist/esm/utils/hammer-overrides.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"enhanceMouseInput\": function() { return /* binding */ enhanceMouseInput; },\n/* harmony export */   \"enhancePointerEventInput\": function() { return /* binding */ enhancePointerEventInput; }\n/* harmony export */ });\n/**\n * This file contains overrides the default\n * hammer.js functions to add our own utility\n */\n/* eslint-disable */\n/* Hammer.js constants */\nconst INPUT_START = 1;\nconst INPUT_MOVE = 2;\nconst INPUT_END = 4;\nconst MOUSE_INPUT_MAP = {\n    mousedown: INPUT_START,\n    mousemove: INPUT_MOVE,\n    mouseup: INPUT_END\n};\n/**\n * Helper function that returns true if any element in an array meets given criteria.\n * Because older browsers do not support `Array.prototype.some`\n * @params array {Array}\n * @params predict {Function}\n */\nfunction some(array, predict) {\n    for (let i = 0; i < array.length; i++) {\n        if (predict(array[i])) {\n            return true;\n        }\n    }\n    return false;\n}\n/* eslint-disable no-invalid-this */\nfunction enhancePointerEventInput(PointerEventInput) {\n    const oldHandler = PointerEventInput.prototype.handler;\n    // overrides PointerEventInput.handler to accept right mouse button\n    PointerEventInput.prototype.handler = function handler(ev) {\n        const store = this.store;\n        // Allow non-left mouse buttons through\n        if (ev.button > 0 && ev.type === 'pointerdown') {\n            if (!some(store, e => e.pointerId === ev.pointerId)) {\n                store.push(ev);\n            }\n        }\n        oldHandler.call(this, ev);\n    };\n}\n// overrides MouseInput.handler to accept right mouse button\nfunction enhanceMouseInput(MouseInput) {\n    MouseInput.prototype.handler = function handler(ev) {\n        let eventType = MOUSE_INPUT_MAP[ev.type];\n        // on start we want to have the mouse button down\n        if (eventType & INPUT_START && ev.button >= 0) {\n            this.pressed = true;\n        }\n        if (eventType & INPUT_MOVE && ev.which === 0) {\n            eventType = INPUT_END;\n        }\n        // mouse must be down\n        if (!this.pressed) {\n            return;\n        }\n        if (eventType & INPUT_END) {\n            this.pressed = false;\n        }\n        this.callback(this.manager, eventType, {\n            pointers: [ev],\n            changedPointers: [ev],\n            pointerType: 'mouse',\n            srcEvent: ev\n        });\n    };\n}\n//# sourceMappingURL=hammer-overrides.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mjolnir.js/dist/esm/utils/hammer-overrides.js?");

/***/ }),

/***/ "./node_modules/mjolnir.js/dist/esm/utils/hammer.browser.js":
/*!******************************************************************!*\
  !*** ./node_modules/mjolnir.js/dist/esm/utils/hammer.browser.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Manager\": function() { return /* binding */ Manager; }\n/* harmony export */ });\n/* harmony import */ var hammerjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! hammerjs */ \"./node_modules/hammerjs/hammer.js\");\n/* harmony import */ var hammerjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(hammerjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _hammer_overrides__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hammer-overrides */ \"./node_modules/mjolnir.js/dist/esm/utils/hammer-overrides.js\");\n\n\n(0,_hammer_overrides__WEBPACK_IMPORTED_MODULE_1__.enhancePointerEventInput)(hammerjs__WEBPACK_IMPORTED_MODULE_0__.PointerEventInput);\n(0,_hammer_overrides__WEBPACK_IMPORTED_MODULE_1__.enhanceMouseInput)(hammerjs__WEBPACK_IMPORTED_MODULE_0__.MouseInput);\nconst Manager = hammerjs__WEBPACK_IMPORTED_MODULE_0__.Manager;\n/* harmony default export */ __webpack_exports__[\"default\"] = (hammerjs__WEBPACK_IMPORTED_MODULE_0__);\n//# sourceMappingURL=hammer.browser.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mjolnir.js/dist/esm/utils/hammer.browser.js?");

/***/ }),

/***/ "./node_modules/ms/index.js":
/*!**********************************!*\
  !*** ./node_modules/ms/index.js ***!
  \**********************************/
/***/ (function(module) {

eval("/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n  return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/ms/index.js?");

/***/ }),

/***/ "./node_modules/mui-datatables/dist/index.js":
/*!***************************************************!*\
  !*** ./node_modules/mui-datatables/dist/index.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n\nvar _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/reflect/construct */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js\");\nvar _Object$keys = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\");\nvar _Object$getOwnPropertySymbols = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js\");\nvar _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js\");\nvar _Object$getOwnPropertyDescriptors = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js\");\nvar _Object$defineProperties = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-properties */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js\");\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\nvar _extends = __webpack_require__(/*! @babel/runtime-corejs3/helpers/extends */ \"./node_modules/@babel/runtime-corejs3/helpers/extends.js\");\nvar _toConsumableArray = __webpack_require__(/*! @babel/runtime-corejs3/helpers/toConsumableArray */ \"./node_modules/@babel/runtime-corejs3/helpers/toConsumableArray.js\");\nvar _objectWithoutProperties = __webpack_require__(/*! @babel/runtime-corejs3/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime-corejs3/helpers/objectWithoutProperties.js\");\nvar _typeof = __webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"./node_modules/@babel/runtime-corejs3/helpers/typeof.js\");\nvar _classCallCheck = __webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\");\nvar _createClass = __webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"./node_modules/@babel/runtime-corejs3/helpers/createClass.js\");\nvar _assertThisInitialized = __webpack_require__(/*! @babel/runtime-corejs3/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js\");\nvar _inherits = __webpack_require__(/*! @babel/runtime-corejs3/helpers/inherits */ \"./node_modules/@babel/runtime-corejs3/helpers/inherits.js\");\nvar _possibleConstructorReturn = __webpack_require__(/*! @babel/runtime-corejs3/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js\");\nvar _getPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs3/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js\");\nvar _defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/helpers/defineProperty */ \"./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\");\nvar _indexOfInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/index-of */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js\");\nvar _mapInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js\");\nvar _Object$values = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/values */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/values.js\");\nvar _forEachInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/for-each */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js\");\nvar _Array$isArray = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\");\nvar _reduceInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/reduce */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js\");\nvar _spliceInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/splice */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/instance/splice.js\");\nvar _sortInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/sort */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/instance/sort.js\");\nvar _concatInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/concat */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js\");\nvar _findIndexInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find-index */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find-index.js\");\nvar _filterInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js\");\nvar _Object$assign = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/assign */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js\");\nvar _bindInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/bind */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js\");\nvar _someInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/some */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/instance/some.js\");\nvar _everyInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/every */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/instance/every.js\");\nvar Paper = __webpack_require__(/*! @mui/material/Paper */ \"./node_modules/@mui/material/Paper/index.js\");\nvar MuiTable = __webpack_require__(/*! @mui/material/Table */ \"./node_modules/@mui/material/Table/index.js\");\nvar MuiTooltip = __webpack_require__(/*! @mui/material/Tooltip */ \"./node_modules/@mui/material/Tooltip/index.js\");\nvar mui = __webpack_require__(/*! tss-react/mui */ \"./node_modules/tss-react/mui.js\");\nvar clsx = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\nvar assignwith = __webpack_require__(/*! lodash.assignwith */ \"./node_modules/lodash.assignwith/index.js\");\nvar cloneDeep = __webpack_require__(/*! lodash.clonedeep */ \"./node_modules/lodash.clonedeep/index.js\");\nvar find = __webpack_require__(/*! lodash.find */ \"./node_modules/lodash.find/index.js\");\nvar isEqual = __webpack_require__(/*! lodash.isequal */ \"./node_modules/lodash.isequal/index.js\");\nvar isUndefined = __webpack_require__(/*! lodash.isundefined */ \"./node_modules/lodash.isundefined/index.js\");\nvar merge = __webpack_require__(/*! lodash.merge */ \"./node_modules/lodash.merge/index.js\");\nvar PropTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\nvar _startsWithInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/starts-with */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/instance/starts-with.js\");\nvar Typography = __webpack_require__(/*! @mui/material/Typography */ \"./node_modules/@mui/material/Typography/index.js\");\nvar MuiTableBody = __webpack_require__(/*! @mui/material/TableBody */ \"./node_modules/@mui/material/TableBody/index.js\");\nvar _sliceInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/slice */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js\");\nvar TableCell = __webpack_require__(/*! @mui/material/TableCell */ \"./node_modules/@mui/material/TableCell/index.js\");\nvar TableRow = __webpack_require__(/*! @mui/material/TableRow */ \"./node_modules/@mui/material/TableRow/index.js\");\nvar Checkbox = __webpack_require__(/*! @mui/material/Checkbox */ \"./node_modules/@mui/material/Checkbox/index.js\");\nvar IconButton = __webpack_require__(/*! @mui/material/IconButton */ \"./node_modules/@mui/material/IconButton/index.js\");\nvar KeyboardArrowRightIcon = __webpack_require__(/*! @mui/icons-material/KeyboardArrowRight */ \"./node_modules/@mui/icons-material/KeyboardArrowRight.js\");\nvar RemoveIcon = __webpack_require__(/*! @mui/icons-material/Remove */ \"./node_modules/@mui/icons-material/Remove.js\");\nvar _trimInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/trim */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/instance/trim.js\");\nvar _URL = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/url */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/url.js\");\nvar Button = __webpack_require__(/*! @mui/material/Button */ \"./node_modules/@mui/material/Button/index.js\");\nvar FormControl = __webpack_require__(/*! @mui/material/FormControl */ \"./node_modules/@mui/material/FormControl/index.js\");\nvar FormControlLabel = __webpack_require__(/*! @mui/material/FormControlLabel */ \"./node_modules/@mui/material/FormControlLabel/index.js\");\nvar FormGroup = __webpack_require__(/*! @mui/material/FormGroup */ \"./node_modules/@mui/material/FormGroup/index.js\");\nvar Grid = __webpack_require__(/*! @mui/material/Grid */ \"./node_modules/@mui/material/Grid/index.js\");\nvar Input = __webpack_require__(/*! @mui/material/Input */ \"./node_modules/@mui/material/Input/index.js\");\nvar InputLabel = __webpack_require__(/*! @mui/material/InputLabel */ \"./node_modules/@mui/material/InputLabel/index.js\");\nvar ListItemText = __webpack_require__(/*! @mui/material/ListItemText */ \"./node_modules/@mui/material/ListItemText/index.js\");\nvar MenuItem = __webpack_require__(/*! @mui/material/MenuItem */ \"./node_modules/@mui/material/MenuItem/index.js\");\nvar Select = __webpack_require__(/*! @mui/material/Select */ \"./node_modules/@mui/material/Select/index.js\");\nvar TextField = __webpack_require__(/*! @mui/material/TextField */ \"./node_modules/@mui/material/TextField/index.js\");\nvar Chip = __webpack_require__(/*! @mui/material/Chip */ \"./node_modules/@mui/material/Chip/index.js\");\nvar MuiTableFooter = __webpack_require__(/*! @mui/material/TableFooter */ \"./node_modules/@mui/material/TableFooter/index.js\");\nvar MuiTablePagination = __webpack_require__(/*! @mui/material/TablePagination */ \"./node_modules/@mui/material/TablePagination/index.js\");\nvar _parseInt = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/parse-int */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/parse-int.js\");\nvar InputBase = __webpack_require__(/*! @mui/material/InputBase */ \"./node_modules/@mui/material/InputBase/index.js\");\nvar Toolbar = __webpack_require__(/*! @mui/material/Toolbar */ \"./node_modules/@mui/material/Toolbar/index.js\");\nvar _slicedToArray = __webpack_require__(/*! @babel/runtime-corejs3/helpers/slicedToArray */ \"./node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js\");\nvar MuiTableHead = __webpack_require__(/*! @mui/material/TableHead */ \"./node_modules/@mui/material/TableHead/index.js\");\nvar _setTimeout = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set-timeout */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/set-timeout.js\");\nvar HelpIcon = __webpack_require__(/*! @mui/icons-material/Help */ \"./node_modules/@mui/icons-material/Help.js\");\nvar TableSortLabel = __webpack_require__(/*! @mui/material/TableSortLabel */ \"./node_modules/@mui/material/TableSortLabel/index.js\");\nvar _Object$entries = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/entries */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/entries.js\");\nvar reactDnd = __webpack_require__(/*! react-dnd */ \"./node_modules/react-dnd/dist/esm/index.js\");\nvar MuiPopover = __webpack_require__(/*! @mui/material/Popover */ \"./node_modules/@mui/material/Popover/index.js\");\nvar CloseIcon = __webpack_require__(/*! @mui/icons-material/Close */ \"./node_modules/@mui/icons-material/Close.js\");\nvar Grow = __webpack_require__(/*! @mui/material/Grow */ \"./node_modules/@mui/material/Grow/index.js\");\nvar SearchIcon = __webpack_require__(/*! @mui/icons-material/Search */ \"./node_modules/@mui/icons-material/Search.js\");\nvar ClearIcon = __webpack_require__(/*! @mui/icons-material/Clear */ \"./node_modules/@mui/icons-material/Clear.js\");\nvar DownloadIcon = __webpack_require__(/*! @mui/icons-material/CloudDownload */ \"./node_modules/@mui/icons-material/CloudDownload.js\");\nvar PrintIcon = __webpack_require__(/*! @mui/icons-material/Print */ \"./node_modules/@mui/icons-material/Print.js\");\nvar ViewColumnIcon = __webpack_require__(/*! @mui/icons-material/ViewColumn */ \"./node_modules/@mui/icons-material/ViewColumn.js\");\nvar FilterIcon = __webpack_require__(/*! @mui/icons-material/FilterList */ \"./node_modules/@mui/icons-material/FilterList.js\");\nvar ReactToPrint = __webpack_require__(/*! react-to-print */ \"./node_modules/react-to-print/lib/index.js\");\nvar DeleteIcon = __webpack_require__(/*! @mui/icons-material/Delete */ \"./node_modules/@mui/icons-material/Delete.js\");\nvar reactDndHtml5Backend = __webpack_require__(/*! react-dnd-html5-backend */ \"./node_modules/react-dnd-html5-backend/dist/esm/index.js\");\nvar _JSON$stringify = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/json/stringify */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js\");\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar _Reflect$construct__default = /*#__PURE__*/_interopDefaultLegacy(_Reflect$construct);\nvar _Object$keys__default = /*#__PURE__*/_interopDefaultLegacy(_Object$keys);\nvar _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefaultLegacy(_Object$getOwnPropertySymbols);\nvar _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefaultLegacy(_Object$getOwnPropertyDescriptor);\nvar _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefaultLegacy(_Object$getOwnPropertyDescriptors);\nvar _Object$defineProperties__default = /*#__PURE__*/_interopDefaultLegacy(_Object$defineProperties);\nvar _Object$defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_Object$defineProperty);\nvar _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);\nvar _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);\nvar _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);\nvar _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);\nvar _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);\nvar _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);\nvar _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);\nvar _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);\nvar _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);\nvar _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);\nvar _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);\nvar _indexOfInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_indexOfInstanceProperty);\nvar _mapInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_mapInstanceProperty);\nvar _Object$values__default = /*#__PURE__*/_interopDefaultLegacy(_Object$values);\nvar _forEachInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_forEachInstanceProperty);\nvar _Array$isArray__default = /*#__PURE__*/_interopDefaultLegacy(_Array$isArray);\nvar _reduceInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_reduceInstanceProperty);\nvar _spliceInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_spliceInstanceProperty);\nvar _sortInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_sortInstanceProperty);\nvar _concatInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_concatInstanceProperty);\nvar _findIndexInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_findIndexInstanceProperty);\nvar _filterInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_filterInstanceProperty);\nvar _Object$assign__default = /*#__PURE__*/_interopDefaultLegacy(_Object$assign);\nvar _bindInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_bindInstanceProperty);\nvar _someInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_someInstanceProperty);\nvar _everyInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_everyInstanceProperty);\nvar Paper__default = /*#__PURE__*/_interopDefaultLegacy(Paper);\nvar MuiTable__default = /*#__PURE__*/_interopDefaultLegacy(MuiTable);\nvar MuiTooltip__default = /*#__PURE__*/_interopDefaultLegacy(MuiTooltip);\nvar clsx__default = /*#__PURE__*/_interopDefaultLegacy(clsx);\nvar assignwith__default = /*#__PURE__*/_interopDefaultLegacy(assignwith);\nvar cloneDeep__default = /*#__PURE__*/_interopDefaultLegacy(cloneDeep);\nvar find__default = /*#__PURE__*/_interopDefaultLegacy(find);\nvar isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual);\nvar isUndefined__default = /*#__PURE__*/_interopDefaultLegacy(isUndefined);\nvar merge__default = /*#__PURE__*/_interopDefaultLegacy(merge);\nvar PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);\nvar React__default = /*#__PURE__*/_interopDefaultLegacy(React);\nvar _startsWithInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_startsWithInstanceProperty);\nvar Typography__default = /*#__PURE__*/_interopDefaultLegacy(Typography);\nvar MuiTableBody__default = /*#__PURE__*/_interopDefaultLegacy(MuiTableBody);\nvar _sliceInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_sliceInstanceProperty);\nvar TableCell__default = /*#__PURE__*/_interopDefaultLegacy(TableCell);\nvar TableRow__default = /*#__PURE__*/_interopDefaultLegacy(TableRow);\nvar Checkbox__default = /*#__PURE__*/_interopDefaultLegacy(Checkbox);\nvar IconButton__default = /*#__PURE__*/_interopDefaultLegacy(IconButton);\nvar KeyboardArrowRightIcon__default = /*#__PURE__*/_interopDefaultLegacy(KeyboardArrowRightIcon);\nvar RemoveIcon__default = /*#__PURE__*/_interopDefaultLegacy(RemoveIcon);\nvar _trimInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_trimInstanceProperty);\nvar _URL__default = /*#__PURE__*/_interopDefaultLegacy(_URL);\nvar Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);\nvar FormControl__default = /*#__PURE__*/_interopDefaultLegacy(FormControl);\nvar FormControlLabel__default = /*#__PURE__*/_interopDefaultLegacy(FormControlLabel);\nvar FormGroup__default = /*#__PURE__*/_interopDefaultLegacy(FormGroup);\nvar Grid__default = /*#__PURE__*/_interopDefaultLegacy(Grid);\nvar Input__default = /*#__PURE__*/_interopDefaultLegacy(Input);\nvar InputLabel__default = /*#__PURE__*/_interopDefaultLegacy(InputLabel);\nvar ListItemText__default = /*#__PURE__*/_interopDefaultLegacy(ListItemText);\nvar MenuItem__default = /*#__PURE__*/_interopDefaultLegacy(MenuItem);\nvar Select__default = /*#__PURE__*/_interopDefaultLegacy(Select);\nvar TextField__default = /*#__PURE__*/_interopDefaultLegacy(TextField);\nvar Chip__default = /*#__PURE__*/_interopDefaultLegacy(Chip);\nvar MuiTableFooter__default = /*#__PURE__*/_interopDefaultLegacy(MuiTableFooter);\nvar MuiTablePagination__default = /*#__PURE__*/_interopDefaultLegacy(MuiTablePagination);\nvar _parseInt__default = /*#__PURE__*/_interopDefaultLegacy(_parseInt);\nvar InputBase__default = /*#__PURE__*/_interopDefaultLegacy(InputBase);\nvar Toolbar__default = /*#__PURE__*/_interopDefaultLegacy(Toolbar);\nvar _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);\nvar MuiTableHead__default = /*#__PURE__*/_interopDefaultLegacy(MuiTableHead);\nvar _setTimeout__default = /*#__PURE__*/_interopDefaultLegacy(_setTimeout);\nvar HelpIcon__default = /*#__PURE__*/_interopDefaultLegacy(HelpIcon);\nvar TableSortLabel__default = /*#__PURE__*/_interopDefaultLegacy(TableSortLabel);\nvar _Object$entries__default = /*#__PURE__*/_interopDefaultLegacy(_Object$entries);\nvar MuiPopover__default = /*#__PURE__*/_interopDefaultLegacy(MuiPopover);\nvar CloseIcon__default = /*#__PURE__*/_interopDefaultLegacy(CloseIcon);\nvar Grow__default = /*#__PURE__*/_interopDefaultLegacy(Grow);\nvar SearchIcon__default = /*#__PURE__*/_interopDefaultLegacy(SearchIcon);\nvar ClearIcon__default = /*#__PURE__*/_interopDefaultLegacy(ClearIcon);\nvar DownloadIcon__default = /*#__PURE__*/_interopDefaultLegacy(DownloadIcon);\nvar PrintIcon__default = /*#__PURE__*/_interopDefaultLegacy(PrintIcon);\nvar ViewColumnIcon__default = /*#__PURE__*/_interopDefaultLegacy(ViewColumnIcon);\nvar FilterIcon__default = /*#__PURE__*/_interopDefaultLegacy(FilterIcon);\nvar ReactToPrint__default = /*#__PURE__*/_interopDefaultLegacy(ReactToPrint);\nvar DeleteIcon__default = /*#__PURE__*/_interopDefaultLegacy(DeleteIcon);\nvar _JSON$stringify__default = /*#__PURE__*/_interopDefaultLegacy(_JSON$stringify);\n\nvar _excluded$6=[\"children\",\"colIndex\",\"columnHeader\",\"options\",\"dataIndex\",\"rowIndex\",\"className\",\"print\",\"tableId\"];var useStyles$a=mui.makeStyles({name:\"MUIDataTableBodyCell\"})((function(e){return {root:{},cellHide:{display:\"none\"},simpleHeader:_defineProperty__default[\"default\"]({},e.breakpoints.down(\"sm\"),{display:\"inline-block\",fontWeight:\"bold\",width:\"100%\",boxSizing:\"border-box\"}),simpleCell:_defineProperty__default[\"default\"]({},e.breakpoints.down(\"sm\"),{display:\"inline-block\",width:\"100%\",boxSizing:\"border-box\"}),stackedHeader:{verticalAlign:\"top\"},stackedCommon:_defineProperty__default[\"default\"]({},e.breakpoints.down(\"md\"),{display:\"inline-block\",fontSize:\"16px\",height:\"auto\",width:\"calc(50%)\",boxSizing:\"border-box\",\"&:last-child\":{borderBottom:\"none\"},\"&:nth-last-of-type(2)\":{borderBottom:\"none\"}}),stackedCommonAlways:{display:\"inline-block\",fontSize:\"16px\",height:\"auto\",width:\"calc(50%)\",boxSizing:\"border-box\",\"&:last-child\":{borderBottom:\"none\"},\"&:nth-last-of-type(2)\":{borderBottom:\"none\"}},stackedParent:_defineProperty__default[\"default\"]({},e.breakpoints.down(\"md\"),{display:\"inline-block\",fontSize:\"16px\",height:\"auto\",width:\"calc(100%)\",boxSizing:\"border-box\"}),stackedParentAlways:{display:\"inline-block\",fontSize:\"16px\",height:\"auto\",width:\"calc(100%)\",boxSizing:\"border-box\"},cellStackedSmall:_defineProperty__default[\"default\"]({},e.breakpoints.down(\"md\"),{width:\"50%\",boxSizing:\"border-box\"}),responsiveStackedSmall:_defineProperty__default[\"default\"]({},e.breakpoints.down(\"md\"),{width:\"50%\",boxSizing:\"border-box\"}),responsiveStackedSmallParent:_defineProperty__default[\"default\"]({},e.breakpoints.down(\"md\"),{width:\"100%\",boxSizing:\"border-box\"})}}));function TableBodyCell(e){var t,o,r,i,l=useStyles$a().classes,s=e.children,n=e.colIndex,a=e.columnHeader,d=e.options,p=e.dataIndex,c=e.rowIndex,b=e.className,m=e.print,y=e.tableId,f=_objectWithoutProperties__default[\"default\"](e,_excluded$6),k=d.onCellClick,P=React.useCallback((function(e){k(s,{colIndex:n,rowIndex:c,dataIndex:p,event:e});}),[k,s,n,c,p]),x={};k&&(x.onClick=P);var v,h=[React__default[\"default\"].createElement(\"div\",{key:1,className:clsx__default[\"default\"]((t={lastColumn:2===n},_defineProperty__default[\"default\"](t,l.root,!0),_defineProperty__default[\"default\"](t,l.cellHide,!0),_defineProperty__default[\"default\"](t,l.stackedHeader,!0),_defineProperty__default[\"default\"](t,l.stackedCommon,\"vertical\"===d.responsive||\"stacked\"===d.responsive||\"stackedFullWidth\"===d.responsive),_defineProperty__default[\"default\"](t,l.stackedCommonAlways,\"verticalAlways\"===d.responsive),_defineProperty__default[\"default\"](t,l.cellStackedSmall,\"stacked\"===d.responsive||\"stackedFullWidth\"===d.responsive&&(\"none\"===d.setTableProps().padding||\"small\"===d.setTableProps().size)),_defineProperty__default[\"default\"](t,l.simpleHeader,\"simple\"===d.responsive),_defineProperty__default[\"default\"](t,\"datatables-noprint\",!m),t),b)},a),React__default[\"default\"].createElement(\"div\",{key:2,className:clsx__default[\"default\"]((o={},_defineProperty__default[\"default\"](o,l.root,!0),_defineProperty__default[\"default\"](o,l.stackedCommon,\"vertical\"===d.responsive||\"stacked\"===d.responsive||\"stackedFullWidth\"===d.responsive),_defineProperty__default[\"default\"](o,l.stackedCommonAlways,\"verticalAlways\"===d.responsive),_defineProperty__default[\"default\"](o,l.responsiveStackedSmall,\"stacked\"===d.responsive||\"stackedFullWidth\"===d.responsive&&(\"none\"===d.setTableProps().padding||\"small\"===d.setTableProps().size)),_defineProperty__default[\"default\"](o,l.simpleCell,\"simple\"===d.responsive),_defineProperty__default[\"default\"](o,\"datatables-noprint\",!m),o),b)},\"function\"==typeof s?s(p,c):s)];return v=-1!==_indexOfInstanceProperty__default[\"default\"](r=[\"standard\",\"scrollMaxHeight\",\"scrollFullHeight\",\"scrollFullHeightFullWidth\"]).call(r,d.responsive)?_sliceInstanceProperty__default[\"default\"](h).call(h,1,2):h,React__default[\"default\"].createElement(TableCell__default[\"default\"],_extends__default[\"default\"]({},x,{\"data-colindex\":n,\"data-tableid\":y,className:clsx__default[\"default\"]((i={},_defineProperty__default[\"default\"](i,l.root,!0),_defineProperty__default[\"default\"](i,l.stackedParent,\"vertical\"===d.responsive||\"stacked\"===d.responsive||\"stackedFullWidth\"===d.responsive),_defineProperty__default[\"default\"](i,l.stackedParentAlways,\"verticalAlways\"===d.responsive),_defineProperty__default[\"default\"](i,l.responsiveStackedSmallParent,\"vertical\"===d.responsive||\"stacked\"===d.responsive||\"stackedFullWidth\"===d.responsive&&(\"none\"===d.setTableProps().padding||\"small\"===d.setTableProps().size)),_defineProperty__default[\"default\"](i,l.simpleCell,\"simple\"===d.responsive),_defineProperty__default[\"default\"](i,\"datatables-noprint\",!m),i),b)},f),v)}\n\nvar _excluded$5=[\"classes\",\"options\",\"rowSelected\",\"onClick\",\"className\",\"isRowSelectable\"];function _createSuper$7(e){var r=_isNativeReflectConstruct$7();return function(){var o,t=_getPrototypeOf__default[\"default\"](e);if(r){var s=_getPrototypeOf__default[\"default\"](this).constructor;o=_Reflect$construct__default[\"default\"](t,arguments,s);}else o=t.apply(this,arguments);return _possibleConstructorReturn__default[\"default\"](this,o)}}function _isNativeReflectConstruct$7(){if(\"undefined\"==typeof Reflect||!_Reflect$construct__default[\"default\"])return !1;if(_Reflect$construct__default[\"default\"].sham)return !1;if(\"function\"==typeof Proxy)return !0;try{return Boolean.prototype.valueOf.call(_Reflect$construct__default[\"default\"](Boolean,[],(function(){}))),!0}catch(e){return !1}}var defaultBodyRowStyles=function(e){return {root:{\"&.Mui-selected\":{backgroundColor:e.palette.action.selected},\"&.mui-row-selected\":{backgroundColor:e.palette.action.selected}},hoverCursor:{cursor:\"pointer\"},responsiveStacked:_defineProperty__default[\"default\"]({},e.breakpoints.down(\"md\"),{borderTop:\"solid 2px rgba(0, 0, 0, 0.15)\",borderBottom:\"solid 2px rgba(0, 0, 0, 0.15)\",padding:0,margin:0}),responsiveSimple:_defineProperty__default[\"default\"]({},e.breakpoints.down(\"sm\"),{borderTop:\"solid 2px rgba(0, 0, 0, 0.15)\",borderBottom:\"solid 2px rgba(0, 0, 0, 0.15)\",padding:0,margin:0})}},TableBodyRow=function(e){_inherits__default[\"default\"](o,e);var r=_createSuper$7(o);function o(){return _classCallCheck__default[\"default\"](this,o),r.apply(this,arguments)}return _createClass__default[\"default\"](o,[{key:\"render\",value:function(){var e,r=this.props,o=r.classes,t=r.options,s=r.rowSelected,i=r.onClick,l=r.className,c=r.isRowSelectable,n=_objectWithoutProperties__default[\"default\"](r,_excluded$5),p={};return i&&(p.onClick=i),React__default[\"default\"].createElement(TableRow__default[\"default\"],_extends__default[\"default\"]({hover:!!t.rowHover},p,{className:clsx__default[\"default\"]((e={},_defineProperty__default[\"default\"](e,o.root,!0),_defineProperty__default[\"default\"](e,o.hover,t.rowHover),_defineProperty__default[\"default\"](e,o.hoverCursor,t.selectableRowsOnClick&&c||t.expandableRowsOnClick),_defineProperty__default[\"default\"](e,o.responsiveSimple,\"simple\"===t.responsive),_defineProperty__default[\"default\"](e,o.responsiveStacked,\"vertical\"===t.responsive||\"stacked\"===t.responsive||\"stackedFullWidth\"===t.responsive),_defineProperty__default[\"default\"](e,\"mui-row-selected\",s),e),l),selected:s},n),this.props.children)}}]),o}(React__default[\"default\"].Component);_defineProperty__default[\"default\"](TableBodyRow,\"propTypes\",{options:PropTypes__default[\"default\"].object.isRequired,onClick:PropTypes__default[\"default\"].func,rowSelected:PropTypes__default[\"default\"].bool,classes:PropTypes__default[\"default\"].object});var TableBodyRow$1 = mui.withStyles(TableBodyRow,defaultBodyRowStyles,{name:\"MUIDataTableBodyRow\"});\n\nvar ExpandButton=function(e){var a=e.areAllRowsExpanded,t=e.buttonClass,n=e.expandableRowsHeader,o=e.expandedRows,r=e.iconClass,c=e.iconIndeterminateClass,l=e.isHeaderCell,d=e.onExpand;return React__default[\"default\"].createElement(React__default[\"default\"].Fragment,null,l&&!a()&&a&&o.data.length>0?React__default[\"default\"].createElement(IconButton__default[\"default\"],{onClick:d,style:{padding:0},disabled:!1===n,className:t},React__default[\"default\"].createElement(RemoveIcon__default[\"default\"],{id:\"expandable-button\",className:c})):React__default[\"default\"].createElement(IconButton__default[\"default\"],{onClick:d,style:{padding:0},disabled:!1===n,className:t},React__default[\"default\"].createElement(KeyboardArrowRightIcon__default[\"default\"],{id:\"expandable-button\",className:r})))};\n\nvar _excluded$4=[\"fixedHeader\",\"fixedSelectColumn\",\"isHeaderCell\",\"expandableOn\",\"selectableOn\",\"isRowExpanded\",\"onExpand\",\"isRowSelectable\",\"selectableRowsHeader\",\"hideExpandButton\",\"expandableRowsHeader\",\"expandedRows\",\"areAllRowsExpanded\",\"selectableRowsHideCheckboxes\",\"setHeadCellRef\",\"dataIndex\",\"components\"];var useStyles$9=mui.makeStyles({name:\"MUIDataTableSelectCell\"})((function(e){return {root:{\"@media print\":{display:\"none\"}},fixedHeader:{position:\"sticky\",top:\"0px\",zIndex:100},fixedLeft:{position:\"sticky\",left:\"0px\",zIndex:100},icon:{cursor:\"pointer\",transition:\"transform 0.25s\"},expanded:{transform:\"rotate(90deg)\"},hide:{visibility:\"hidden\"},headerCell:{zIndex:110,backgroundColor:e.palette.background.paper},expandDisabled:{},checkboxRoot:{},checked:{},disabled:{}}})),TableSelectCell=function(e){var o,t,a,d=e.fixedHeader,l=e.fixedSelectColumn,r=e.isHeaderCell,n=void 0!==r&&r,s=e.expandableOn,i=void 0!==s&&s,p=e.selectableOn,c=void 0===p?\"none\":p,x=e.isRowExpanded,b=void 0!==x&&x,f=e.onExpand,m=e.isRowSelectable,u=e.selectableRowsHeader,y=e.hideExpandButton,h=e.expandableRowsHeader,R=e.expandedRows,C=e.areAllRowsExpanded,P=void 0===C?function(){return !1}:C,w=e.selectableRowsHideCheckboxes,k=e.setHeadCellRef,E=e.dataIndex,_=e.components,H=void 0===_?{}:_,T=_objectWithoutProperties__default[\"default\"](e,_excluded$4),S=useStyles$9().classes,v=H.Checkbox||Checkbox__default[\"default\"],I=H.ExpandButton||ExpandButton;if(!1===i&&(\"none\"===c||!0===w))return null;var g=clsx__default[\"default\"]((_defineProperty__default[\"default\"](o={},S.root,!0),_defineProperty__default[\"default\"](o,S.fixedHeader,d&&n),_defineProperty__default[\"default\"](o,S.fixedLeft,l),_defineProperty__default[\"default\"](o,S.headerCell,n),o)),j=clsx__default[\"default\"](_defineProperty__default[\"default\"]({},S.expandDisabled,y)),B=clsx__default[\"default\"]((_defineProperty__default[\"default\"](t={},S.icon,!0),_defineProperty__default[\"default\"](t,S.hide,n&&!h),_defineProperty__default[\"default\"](t,S.expanded,b||n&&P()),t)),O=clsx__default[\"default\"]((_defineProperty__default[\"default\"](a={},S.icon,!0),_defineProperty__default[\"default\"](a,S.hide,n&&!h),a)),z={};k&&(z.ref=function(e){k(0,0,e);});return React__default[\"default\"].createElement(TableCell__default[\"default\"],_extends__default[\"default\"]({className:g,padding:\"checkbox\"},z),React__default[\"default\"].createElement(\"div\",{style:{display:\"flex\",alignItems:\"center\"}},i&&React__default[\"default\"].createElement(I,{isHeaderCell:n,areAllRowsExpanded:P,expandedRows:R,onExpand:f,expandableRowsHeader:h,buttonClass:j,iconIndeterminateClass:O,iconClass:B,dataIndex:E}),\"none\"!==c&&!0!==w&&(!n||\"multiple\"===c&&!1!==u?React__default[\"default\"].createElement(v,_extends__default[\"default\"]({classes:{root:S.checkboxRoot,checked:S.checked,disabled:S.disabled},\"data-description\":n?\"row-select-header\":\"row-select\",\"data-index\":E||null,color:\"primary\",disabled:!m},T)):null)))};TableSelectCell.propTypes={checked:PropTypes__default[\"default\"].bool.isRequired,fixedHeader:PropTypes__default[\"default\"].bool,onChange:PropTypes__default[\"default\"].func,classes:PropTypes__default[\"default\"].object,expandableOn:PropTypes__default[\"default\"].bool,hideExpandButton:PropTypes__default[\"default\"].bool,selectableOn:PropTypes__default[\"default\"].string,isRowSelectable:PropTypes__default[\"default\"].bool};\n\nfunction buildMap(e){return _reduceInstanceProperty__default[\"default\"](e).call(e,(function(e,t){return e[t.dataIndex]=!0,e}),{})}function escapeDangerousCSVCharacters(e){return \"string\"==typeof e?e.replace(/^\\+|^\\-|^\\=|^\\@/g,\"'$&\"):e}function warnDeprecated(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=\"function\"==typeof t?t:console.warn;t&&r(\"Deprecation Notice:  \".concat(e));}function warnInfo(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=\"function\"==typeof t?t:console.warn;t&&r(\"\".concat(e));}function getPageValue(e,t,r){var n=e<=t?1:Math.ceil(e/t);return r>=n?n-1:r}function getCollatorComparator(){if(Intl)return new Intl.Collator(void 0,{numeric:!0,sensitivity:\"base\"}).compare;return function(e,t){return e.localeCompare(t)}}function sortCompare(e){return function(t,r){var n=null===t.data||void 0===t.data?\"\":t.data,a=null===r.data||void 0===r.data?\"\":r.data;return (\"function\"==typeof n.localeCompare?n.localeCompare(a):n-a)*(\"asc\"===e?1:-1)}}function buildCSV(e,t,r){var n,a,o=function(e){return \"string\"==typeof e?e.replace(/\\\"/g,'\"\"'):e},c=function(e){var t;return _sliceInstanceProperty__default[\"default\"](t=_reduceInstanceProperty__default[\"default\"](e).call(e,(function(e,t){return t.download?e+'\"'+escapeDangerousCSVCharacters(o(t.label||t.name))+'\"'+r.downloadOptions.separator:e}),\"\")).call(t,0,-1)+\"\\r\\n\"},l=c(e),i=function(t){var n;return t.length?_trimInstanceProperty__default[\"default\"](n=_reduceInstanceProperty__default[\"default\"](t).call(t,(function(t,n){var a,c;return t+'\"'+_mapInstanceProperty__default[\"default\"](a=_filterInstanceProperty__default[\"default\"](c=n.data).call(c,(function(t,r){return e[r].download}))).call(a,(function(e){return escapeDangerousCSVCharacters(o(e))})).join('\"'+r.downloadOptions.separator+'\"')+'\"\\r\\n'}),\"\")).call(n):\"\"},s=i(t);return r.onDownload?r.onDownload(c,i,e,t):_trimInstanceProperty__default[\"default\"](n=_concatInstanceProperty__default[\"default\"](a=\"\".concat(l)).call(a,s)).call(n)}function downloadCSV(e,t){var r=new Blob([e],{type:\"text/csv\"});if(navigator&&navigator.msSaveOrOpenBlob)navigator.msSaveOrOpenBlob(r,t);else {var n=\"data:text/csv;charset=utf-8,\".concat(e),a=_URL__default[\"default\"]||window.webkitURL,o=void 0===a.createObjectURL?n:a.createObjectURL(r),c=document.createElement(\"a\");c.setAttribute(\"href\",o),c.setAttribute(\"download\",t),document.body.appendChild(c),c.click(),document.body.removeChild(c);}}function createCSVDownload(e,t,r,n){var a=buildCSV(e,t,r);r.onDownload&&!1===a||n(a,r.downloadOptions.filename);}\n\nfunction _createSuper$6(e){var t=_isNativeReflectConstruct$6();return function(){var o,r=_getPrototypeOf__default[\"default\"](e);if(t){var a=_getPrototypeOf__default[\"default\"](this).constructor;o=_Reflect$construct__default[\"default\"](r,arguments,a);}else o=r.apply(this,arguments);return _possibleConstructorReturn__default[\"default\"](this,o)}}function _isNativeReflectConstruct$6(){if(\"undefined\"==typeof Reflect||!_Reflect$construct__default[\"default\"])return !1;if(_Reflect$construct__default[\"default\"].sham)return !1;if(\"function\"==typeof Proxy)return !0;try{return Boolean.prototype.valueOf.call(_Reflect$construct__default[\"default\"](Boolean,[],(function(){}))),!0}catch(e){return !1}}var defaultBodyStyles=function(e){return {root:{},emptyTitle:{textAlign:\"center\"},lastStackedCell:_defineProperty__default[\"default\"]({},e.breakpoints.down(\"md\"),{\"& td:last-child\":{borderBottom:\"none\"}}),lastSimpleCell:_defineProperty__default[\"default\"]({},e.breakpoints.down(\"sm\"),{\"& td:last-child\":{borderBottom:\"none\"}})}},TableBody=function(e){_inherits__default[\"default\"](o,e);var t=_createSuper$6(o);function o(){var e,r;_classCallCheck__default[\"default\"](this,o);for(var a=arguments.length,n=new Array(a),l=0;l<a;l++)n[l]=arguments[l];return r=t.call.apply(t,_concatInstanceProperty__default[\"default\"](e=[this]).call(e,n)),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](r),\"handleRowSelect\",(function(e,t){var o=!(!t||!t.nativeEvent)&&t.nativeEvent.shiftKey,a=[],n=r.props.previousSelectedRow;if(o&&n&&n.index<r.props.data.length){var l,s=n.index,i=cloneDeep__default[\"default\"](r.props.selectedRows),p=r.props.data[e.index].dataIndex;0===_filterInstanceProperty__default[\"default\"](l=i.data).call(l,(function(e){return e.dataIndex===p})).length&&(i.data.push({index:e.index,dataIndex:p}),i.lookup[p]=!0);for(var c=function(){var t=r.props.data[s].dataIndex;if(r.isRowSelectable(t,i)){var o,n={index:s,dataIndex:t};0===_filterInstanceProperty__default[\"default\"](o=i.data).call(o,(function(e){return e.dataIndex===t})).length&&(i.data.push(n),i.lookup[t]=!0),a.push(n);}s=e.index>s?s+1:s-1;};s!==e.index;)c();}r.props.selectRowUpdate(\"cell\",e,a);})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](r),\"handleRowClick\",(function(e,t,o){var a;if(!(\"expandable-button\"===o.target.id||\"path\"===o.target.nodeName&&\"expandable-button\"===o.target.parentNode.id||o.target.id&&_startsWithInstanceProperty__default[\"default\"](a=o.target.id).call(a,\"MUIDataTableSelectCell\"))){if(r.props.options.selectableRowsOnClick&&\"none\"!==r.props.options.selectableRows&&r.isRowSelectable(t.dataIndex,r.props.selectedRows)){var n={index:t.rowIndex,dataIndex:t.dataIndex};r.handleRowSelect(n,o);}if(r.props.options.expandableRowsOnClick&&r.props.options.expandableRows&&r.isRowExpandable(t.dataIndex,r.props.expandedRows)){var l={index:t.rowIndex,dataIndex:t.dataIndex};r.props.toggleExpandRow(l);}r.props.options.selectableRowsOnClick||r.props.options.onRowClick&&r.props.options.onRowClick(e,t,o);}})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](r),\"processRow\",(function(e,t){for(var o=[],r=0;r<e.length;r++)o.push({value:e[t[r]],index:t[r]});return o})),r}return _createClass__default[\"default\"](o,[{key:\"buildRows\",value:function(){var e=this.props,t=e.data,o=e.page,r=e.rowsPerPage,a=e.count;if(this.props.options.serverSide)return t.length?t:null;var n=[],l=getPageValue(a,r,o),s=0===l?0:l*r,i=Math.min(a,(l+1)*r);o>l&&console.warn(\"Current page is out of range, using the highest page that is in range instead.\");for(var p=s;p<a&&p<i;p++)void 0!==t[p]&&n.push(t[p]);return n.length?n:null}},{key:\"getRowIndex\",value:function(e){var t=this.props,o=t.page,r=t.rowsPerPage;return t.options.serverSide?e:(0===o?0:o*r)+e}},{key:\"isRowSelected\",value:function(e){var t=this.props.selectedRows;return !(!t.lookup||!t.lookup[e])}},{key:\"isRowExpanded\",value:function(e){var t=this.props.expandedRows;return !(!t.lookup||!t.lookup[e])}},{key:\"isRowSelectable\",value:function(e,t){var o=this.props.options;return t=t||this.props.selectedRows,!o.isRowSelectable||o.isRowSelectable(e,t)}},{key:\"isRowExpandable\",value:function(e){var t=this.props,o=t.options,r=t.expandedRows;return !o.isRowExpandable||o.isRowExpandable(e,r)}},{key:\"render\",value:function(){var e,t=this,o=this.props,r=o.classes,a=o.columns,n=o.toggleExpandRow,l=o.options,s=o.columnOrder,i=void 0===s?_mapInstanceProperty__default[\"default\"](e=this.props.columns).call(e,(function(e,t){return t})):s,p=o.components,c=void 0===p?{}:p,d=o.tableId,u=this.buildRows(),b=_filterInstanceProperty__default[\"default\"](a).call(a,(function(e){return \"true\"===e.display})).length;return React__default[\"default\"].createElement(MuiTableBody__default[\"default\"],null,u&&u.length>0?_mapInstanceProperty__default[\"default\"](u).call(u,(function(e,o){var s,p,u,b,f,m=e.data,y=e.dataIndex;if(l.customRowRender)return l.customRowRender(m,y,o);var R=\"none\"!==l.selectableRows&&t.isRowSelected(y),x=t.isRowSelectable(y),w=l.setRowProps&&l.setRowProps(m,y,o)||{},h=t.processRow(m,i);return React__default[\"default\"].createElement(React__default[\"default\"].Fragment,{key:o},React__default[\"default\"].createElement(TableBodyRow$1,_extends__default[\"default\"]({},w,{options:l,rowSelected:R,isRowSelectable:x,onClick:_bindInstanceProperty__default[\"default\"](s=t.handleRowClick).call(s,null,m,{rowIndex:o,dataIndex:y}),className:clsx__default[\"default\"]((p={},_defineProperty__default[\"default\"](p,r.lastStackedCell,\"vertical\"===l.responsive||\"stacked\"===l.responsive||\"stackedFullWidth\"===l.responsive),_defineProperty__default[\"default\"](p,r.lastSimpleCell,\"simple\"===l.responsive),_defineProperty__default[\"default\"](p,w.className,w.className),p)),\"data-testid\":\"MUIDataTableBodyRow-\"+y,id:_concatInstanceProperty__default[\"default\"](u=\"MUIDataTableBodyRow-\".concat(d,\"-\")).call(u,y)}),React__default[\"default\"].createElement(TableSelectCell,{onChange:_bindInstanceProperty__default[\"default\"](b=t.handleRowSelect).call(b,null,{index:t.getRowIndex(o),dataIndex:y}),onExpand:_bindInstanceProperty__default[\"default\"](n).call(n,null,{index:t.getRowIndex(o),dataIndex:y}),fixedHeader:l.fixedHeader,fixedSelectColumn:l.fixedSelectColumn,checked:R,expandableOn:l.expandableRows,hideExpandButton:!t.isRowExpandable(y)&&l.expandableRows,selectableOn:l.selectableRows,selectableRowsHideCheckboxes:l.selectableRowsHideCheckboxes,isRowExpanded:t.isRowExpanded(y),isRowSelectable:x,dataIndex:y,id:_concatInstanceProperty__default[\"default\"](f=\"MUIDataTableSelectCell-\".concat(d,\"-\")).call(f,y),components:c}),_mapInstanceProperty__default[\"default\"](h).call(h,(function(e){var t;return \"true\"===a[e.index].display&&React__default[\"default\"].createElement(TableBodyCell,_extends__default[\"default\"]({},a[e.index].setCellProps&&a[e.index].setCellProps(e.value,y,e.index)||{},{\"data-testid\":_concatInstanceProperty__default[\"default\"](t=\"MuiDataTableBodyCell-\".concat(e.index,\"-\")).call(t,o),dataIndex:y,rowIndex:o,colIndex:e.index,columnHeader:a[e.index].label,print:a[e.index].print,options:l,tableId:d,key:e.index}),e.value)}))),t.isRowExpanded(y)&&l.renderExpandableRow(m,{rowIndex:o,dataIndex:y}))})):React__default[\"default\"].createElement(TableBodyRow$1,{options:l},React__default[\"default\"].createElement(TableBodyCell,{colSpan:\"none\"!==l.selectableRows||l.expandableRows?b+1:b,options:l,colIndex:0,rowIndex:0},React__default[\"default\"].createElement(Typography__default[\"default\"],{variant:\"body1\",className:r.emptyTitle,component:\"div\"},l.textLabels.body.noMatch))))}}]),o}(React__default[\"default\"].Component);_defineProperty__default[\"default\"](TableBody,\"propTypes\",{data:PropTypes__default[\"default\"].array.isRequired,count:PropTypes__default[\"default\"].number.isRequired,columns:PropTypes__default[\"default\"].array.isRequired,options:PropTypes__default[\"default\"].object.isRequired,filterList:PropTypes__default[\"default\"].array,onRowClick:PropTypes__default[\"default\"].func,expandedRows:PropTypes__default[\"default\"].object,selectedRows:PropTypes__default[\"default\"].object,selectRowUpdate:PropTypes__default[\"default\"].func,previousSelectedRow:PropTypes__default[\"default\"].object,searchText:PropTypes__default[\"default\"].string,toggleExpandRow:PropTypes__default[\"default\"].func,classes:PropTypes__default[\"default\"].object}),_defineProperty__default[\"default\"](TableBody,\"defaultProps\",{toggleExpandRow:function(){}});var DefaultTableBody = mui.withStyles(TableBody,defaultBodyStyles,{name:\"MUIDataTableBody\"});\n\nfunction _createSuper$5(e){var t=_isNativeReflectConstruct$5();return function(){var r,i=_getPrototypeOf__default[\"default\"](e);if(t){var n=_getPrototypeOf__default[\"default\"](this).constructor;r=_Reflect$construct__default[\"default\"](i,arguments,n);}else r=i.apply(this,arguments);return _possibleConstructorReturn__default[\"default\"](this,r)}}function _isNativeReflectConstruct$5(){if(\"undefined\"==typeof Reflect||!_Reflect$construct__default[\"default\"])return !1;if(_Reflect$construct__default[\"default\"].sham)return !1;if(\"function\"==typeof Proxy)return !0;try{return Boolean.prototype.valueOf.call(_Reflect$construct__default[\"default\"](Boolean,[],(function(){}))),!0}catch(e){return !1}}var defaultFilterStyles=function(e){return {root:{backgroundColor:e.palette.background.default,padding:\"24px 24px 36px 24px\",fontFamily:\"Roboto\"},header:{flex:\"0 0 auto\",marginBottom:\"16px\",width:\"100%\",display:\"flex\",justifyContent:\"space-between\"},title:{display:\"inline-block\",marginLeft:\"7px\",color:e.palette.text.primary,fontSize:\"14px\",fontWeight:500},noMargin:{marginLeft:\"0px\"},reset:{alignSelf:\"left\"},resetLink:{marginLeft:\"16px\",fontSize:\"12px\",cursor:\"pointer\"},filtersSelected:{alignSelf:\"right\"},checkboxListTitle:{marginLeft:\"7px\",marginBottom:\"8px\",fontSize:\"14px\",color:e.palette.text.secondary,textAlign:\"left\",fontWeight:500},checkboxFormGroup:{marginTop:\"8px\"},checkboxFormControl:{margin:\"0px\"},checkboxFormControlLabel:{fontSize:\"15px\",marginLeft:\"8px\",color:e.palette.text.primary},checkboxIcon:{width:\"32px\",height:\"32px\"},checkbox:{},checked:{},gridListTile:{marginTop:\"16px\"}}};var TableFilter=function(e){_inherits__default[\"default\"](r,e);var t=_createSuper$5(r);function r(e){var i;return _classCallCheck__default[\"default\"](this,r),i=t.call(this,e),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](i),\"filterUpdate\",(function(e,t,r,n,l){var o,a=_sliceInstanceProperty__default[\"default\"](o=i.state.filterList).call(o,0);i.props.updateFilterByType(a,e,t,n,l),i.setState({filterList:a});})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](i),\"handleCheckboxChange\",(function(e,t,r){i.filterUpdate(e,t,r,\"checkbox\"),!0!==i.props.options.confirmFilters&&i.props.onFilterUpdate(e,t,r,\"checkbox\");})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](i),\"handleDropdownChange\",(function(e,t,r){var n=_filterInstanceProperty__default[\"default\"](i.props.options.textLabels).all,l=e.target.value===n?[]:[e.target.value];i.filterUpdate(t,l,r,\"dropdown\"),!0!==i.props.options.confirmFilters&&i.props.onFilterUpdate(t,l,r,\"dropdown\");})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](i),\"handleMultiselectChange\",(function(e,t,r){i.filterUpdate(e,t,r,\"multiselect\"),!0!==i.props.options.confirmFilters&&i.props.onFilterUpdate(e,t,r,\"multiselect\");})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](i),\"handleTextFieldChange\",(function(e,t,r){i.filterUpdate(t,e.target.value,r,\"textField\"),!0!==i.props.options.confirmFilters&&i.props.onFilterUpdate(t,e.target.value,r,\"textField\");})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](i),\"handleCustomChange\",(function(e,t,r){i.filterUpdate(t,e,r.name,r.filterType),!0!==i.props.options.confirmFilters&&i.props.onFilterUpdate(t,e,r.name,r.filterType);})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](i),\"applyFilters\",(function(){var e;return _forEachInstanceProperty__default[\"default\"](e=i.state.filterList).call(e,(function(e,t){i.props.onFilterUpdate(t,e,i.props.columns[t],\"custom\");})),i.props.handleClose(),i.props.options.onFilterConfirm&&i.props.options.onFilterConfirm(i.state.filterList),i.state.filterList})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](i),\"resetFilters\",(function(){var e;i.setState({filterList:_mapInstanceProperty__default[\"default\"](e=i.props.columns).call(e,(function(){return []}))}),!0!==i.props.options.confirmFilters&&i.props.onFilterReset();})),i.state={filterList:cloneDeep__default[\"default\"](e.filterList)},i}return _createClass__default[\"default\"](r,[{key:\"renderCheckbox\",value:function(e,t){var r,i=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},l=n.Checkbox||Checkbox__default[\"default\"],o=this.props,a=o.classes,s=o.filterData,c=this.state.filterList,p=e.filterOptions&&e.filterOptions.renderValue?e.filterOptions.renderValue:function(e){return e};return React__default[\"default\"].createElement(Grid__default[\"default\"],{item:!0,key:t,xs:6},React__default[\"default\"].createElement(FormGroup__default[\"default\"],null,React__default[\"default\"].createElement(Grid__default[\"default\"],{item:!0,xs:12},React__default[\"default\"].createElement(Typography__default[\"default\"],{variant:\"body2\",className:a.checkboxListTitle},e.label)),React__default[\"default\"].createElement(Grid__default[\"default\"],{container:!0},_mapInstanceProperty__default[\"default\"](r=s[t]).call(r,(function(r,n){var o,s;return React__default[\"default\"].createElement(Grid__default[\"default\"],{item:!0,key:n},React__default[\"default\"].createElement(FormControlLabel__default[\"default\"],{key:n,classes:{root:a.checkboxFormControl,label:a.checkboxFormControlLabel},control:React__default[\"default\"].createElement(l,{\"data-description\":\"table-filter\",color:\"primary\",className:a.checkboxIcon,onChange:_bindInstanceProperty__default[\"default\"](o=i.handleCheckboxChange).call(o,null,t,r,e.name),checked:_indexOfInstanceProperty__default[\"default\"](s=c[t]).call(s,r)>=0,classes:{root:a.checkbox,checked:a.checked},value:null!=r?r.toString():\"\"}),label:p(r)}))})))))}},{key:\"renderSelect\",value:function(e,t){var r,i=this,n=this.props,l=n.classes,o=n.filterData,a=n.options,s=this.state.filterList,c=_filterInstanceProperty__default[\"default\"](a.textLabels),p=e.filterOptions&&e.filterOptions.renderValue?e.filterOptions.renderValue:function(e){return null!=e?e.toString():\"\"},m=!0===(e.filterOptions&&e.filterOptions.fullWidth)?12:6;return React__default[\"default\"].createElement(Grid__default[\"default\"],{item:!0,key:t,xs:m,classes:{\"grid-xs-12\":l.gridListTile,\"grid-xs-6\":l.gridListTile}},React__default[\"default\"].createElement(FormControl__default[\"default\"],{key:t,variant:\"standard\",fullWidth:!0},React__default[\"default\"].createElement(InputLabel__default[\"default\"],{htmlFor:e.name},e.label),React__default[\"default\"].createElement(Select__default[\"default\"],{fullWidth:!0,value:s[t].length?s[t].toString():c.all,name:e.name,onChange:function(r){return i.handleDropdownChange(r,t,e.name)},input:React__default[\"default\"].createElement(Input__default[\"default\"],{name:e.name,id:e.name})},React__default[\"default\"].createElement(MenuItem__default[\"default\"],{value:c.all,key:0},c.all),_mapInstanceProperty__default[\"default\"](r=o[t]).call(r,(function(e,t){return React__default[\"default\"].createElement(MenuItem__default[\"default\"],{value:e,key:t+1},p(e))})))))}},{key:\"renderTextField\",value:function(e,t){var r=this,i=this.props.classes,n=this.state.filterList;e.filterOptions&&e.filterOptions.renderValue&&console.warn(\"Custom renderValue not supported for textField filters\");var l=!0===(e.filterOptions&&e.filterOptions.fullWidth)?12:6;return React__default[\"default\"].createElement(Grid__default[\"default\"],{item:!0,key:t,xs:l,classes:{\"grid-xs-12\":i.gridListTile,\"grid-xs-6\":i.gridListTile}},React__default[\"default\"].createElement(FormControl__default[\"default\"],{key:t,fullWidth:!0},React__default[\"default\"].createElement(TextField__default[\"default\"],{fullWidth:!0,variant:\"standard\",label:e.label,value:n[t].toString()||\"\",\"data-testid\":\"filtertextfield-\"+e.name,onChange:function(i){return r.handleTextFieldChange(i,t,e.name)}})))}},{key:\"renderMultiselect\",value:function(e,t){var r,i=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},l=n.Checkbox||Checkbox__default[\"default\"],o=this.props,a=o.classes,s=o.filterData,c=this.state.filterList,p=e.filterOptions&&e.filterOptions.renderValue?e.filterOptions.renderValue:function(e){return e},m=!0===(e.filterOptions&&e.filterOptions.fullWidth)?12:6;return React__default[\"default\"].createElement(Grid__default[\"default\"],{item:!0,key:t,xs:m,classes:{\"grid-xs-12\":a.gridListTile,\"grid-xs-6\":a.gridListTile}},React__default[\"default\"].createElement(FormControl__default[\"default\"],{key:t,variant:\"standard\",fullWidth:!0},React__default[\"default\"].createElement(InputLabel__default[\"default\"],{htmlFor:e.name},e.label),React__default[\"default\"].createElement(Select__default[\"default\"],{multiple:!0,fullWidth:!0,value:c[t]||[],renderValue:function(e){return _mapInstanceProperty__default[\"default\"](e).call(e,p).join(\", \")},name:e.name,onChange:function(r){return i.handleMultiselectChange(t,r.target.value,e.name)},input:React__default[\"default\"].createElement(Input__default[\"default\"],{name:e.name,id:e.name})},_mapInstanceProperty__default[\"default\"](r=s[t]).call(r,(function(e,r){var i;return React__default[\"default\"].createElement(MenuItem__default[\"default\"],{value:e,key:r+1},React__default[\"default\"].createElement(l,{\"data-description\":\"table-filter\",color:\"primary\",checked:_indexOfInstanceProperty__default[\"default\"](i=c[t]).call(i,e)>=0,value:null!=e?e.toString():\"\",className:a.checkboxIcon,classes:{root:a.checkbox,checked:a.checked}}),React__default[\"default\"].createElement(ListItemText__default[\"default\"],{primary:p(e)}))})))))}},{key:\"renderCustomField\",value:function(e,t){var r=this.props,i=r.classes,n=r.filterData,l=r.options,o=this.state.filterList,a=!0===(e.filterOptions&&e.filterOptions.fullWidth)?12:6,s=e.filterOptions&&e.filterOptions.display||l.filterOptions&&l.filterOptions.display;if(s)return e.filterListOptions&&e.filterListOptions.renderValue&&console.warning('\"renderValue\" is ignored for custom filter fields'),React__default[\"default\"].createElement(Grid__default[\"default\"],{item:!0,key:t,xs:a,classes:{\"grid-xs-12\":i.gridListTile,\"grid-xs-6\":i.gridListTile}},React__default[\"default\"].createElement(FormControl__default[\"default\"],{key:t,fullWidth:!0},s(o,this.handleCustomChange,t,e,n)));console.error('Property \"display\" is required when using custom filter type.');}},{key:\"render\",value:function(){var e=this,t=this.props,r=t.classes,i=t.columns,n=t.options,l=t.customFooter,o=t.filterList,a=t.components,s=void 0===a?{}:a,c=_filterInstanceProperty__default[\"default\"](n.textLabels);return React__default[\"default\"].createElement(\"div\",{className:r.root},React__default[\"default\"].createElement(\"div\",{className:r.header},React__default[\"default\"].createElement(\"div\",{className:r.reset},React__default[\"default\"].createElement(Typography__default[\"default\"],{variant:\"body2\",className:clsx__default[\"default\"](_defineProperty__default[\"default\"]({},r.title,!0))},c.title),React__default[\"default\"].createElement(Button__default[\"default\"],{color:\"primary\",className:r.resetLink,tabIndex:0,\"aria-label\":c.reset,\"data-testid\":\"filterReset-button\",onClick:this.resetFilters},c.reset)),React__default[\"default\"].createElement(\"div\",{className:r.filtersSelected})),React__default[\"default\"].createElement(Grid__default[\"default\"],{container:!0,direction:\"row\",justifyContent:\"flex-start\",alignItems:\"center\",spacing:4},_mapInstanceProperty__default[\"default\"](i).call(i,(function(t,r){if(_filterInstanceProperty__default[\"default\"](t)){var i=t.filterType||n.filterType;return \"checkbox\"===i?e.renderCheckbox(t,r,s):\"multiselect\"===i?e.renderMultiselect(t,r,s):\"textField\"===i?e.renderTextField(t,r):\"custom\"===i?e.renderCustomField(t,r):e.renderSelect(t,r)}}))),l?l(o,this.applyFilters):\"\")}}]),r}(React__default[\"default\"].Component);_defineProperty__default[\"default\"](TableFilter,\"propTypes\",{filterData:PropTypes__default[\"default\"].array.isRequired,filterList:PropTypes__default[\"default\"].array.isRequired,options:PropTypes__default[\"default\"].object.isRequired,onFilterUpdate:PropTypes__default[\"default\"].func,onFilterReset:PropTypes__default[\"default\"].func,classes:PropTypes__default[\"default\"].object});var DefaultTableFilter = mui.withStyles(TableFilter,defaultFilterStyles,{name:\"MUIDataTableFilter\"});\n\nvar TableFilterListItem=function(e){var r=e.label,t=e.onDelete,s=e.className,l=e.filterProps;return (l=l||{}).className&&(s=clsx__default[\"default\"](s,l.className)),React__default[\"default\"].createElement(Chip__default[\"default\"],_extends__default[\"default\"]({label:r,onDelete:t,className:s},l))};TableFilterListItem.propTypes={label:PropTypes__default[\"default\"].node,onDelete:PropTypes__default[\"default\"].func.isRequired,className:PropTypes__default[\"default\"].string.isRequired};\n\nvar useStyles$8=mui.makeStyles({name:\"MUIDataTableFilterList\"})((function(){return {root:{display:\"flex\",justifyContent:\"left\",flexWrap:\"wrap\",margin:\"0px 16px 0px 16px\"},chip:{margin:\"8px 8px 0px 0px\"}}})),TableFilterList=function(e){var r=e.options,t=e.filterList,i=e.filterUpdate,a=e.filterListRenderers,s=e.columnNames,n=e.serverSideFilterList,p=e.customFilterListUpdate,o=e.ItemComponent,l=void 0===o?TableFilterListItem:o,m=useStyles$8().classes,c=r.serverSide,u=function(e,a,s,n){var p=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,o=a;_Array$isArray__default[\"default\"](o)&&0===o.length&&(o=t[e]),i(e,a,s,n,p,(function(t){r.onFilterChipClose&&r.onFilterChipClose(e,o,t);}));},y=function(e,t,i,a,n){var o;return o=n?p[t]?\"custom\":\"chip\":s[t].filterType,React__default[\"default\"].createElement(l,{label:e,key:i,onDelete:function(){return u(t,a[i]||[],s[t].name,o,p[t])},className:m.chip,itemKey:i,index:t,data:a,columnNames:s,filterProps:r.setFilterChipProps?r.setFilterChipProps(t,s[t].name,a[i]||[]):{}})},f=function(e){return _mapInstanceProperty__default[\"default\"](e).call(e,(function(t,i){if(\"custom\"===s[i].filterType&&e[i].length){var n=a[i](t);return _Array$isArray__default[\"default\"](n)?_mapInstanceProperty__default[\"default\"](n).call(n,(function(e,r){return y(e,i,r,t,!0)})):y(n,i,i,t,!1)}return _mapInstanceProperty__default[\"default\"](t).call(t,(function(e,t){return function(e,t,i){return React__default[\"default\"].createElement(l,{label:a[e](t),key:i,onDelete:function(){return u(e,t,s[e].name,\"chip\")},className:m.chip,itemKey:i,index:e,data:t,columnNames:s,filterProps:r.setFilterChipProps?r.setFilterChipProps(e,s[e].name,t):{}})}(i,e,t)}))}))};return React__default[\"default\"].createElement(\"div\",{className:m.root},f(c&&n?n:t))};TableFilterList.propTypes={filterList:PropTypes__default[\"default\"].array.isRequired,filterListRenderers:PropTypes__default[\"default\"].array.isRequired,columnNames:PropTypes__default[\"default\"].arrayOf(PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].string,PropTypes__default[\"default\"].shape({name:PropTypes__default[\"default\"].string.isRequired,filterType:PropTypes__default[\"default\"].string})])).isRequired,onFilterUpdate:PropTypes__default[\"default\"].func,ItemComponent:PropTypes__default[\"default\"].any};\n\nvar useStyles$7=mui.makeStyles({name:\"MUIDataTableJumpToPage\"})((function(e){return {root:{color:e.palette.text.primary},caption:{flexShrink:0},selectRoot:{marginRight:32,marginLeft:8},select:{paddingTop:6,paddingBottom:7,paddingLeft:8,paddingRight:24,textAlign:\"right\",textAlignLast:\"right\",fontSize:e.typography.pxToRem(14)},selectIcon:{},input:{color:\"inhert\",fontSize:\"inhert\",flexShrink:0}}}));function JumpToPage(e){for(var t=useStyles$7().classes,a=e.count,r=e.textLabels,o=e.rowsPerPage,i=e.page,n=(e.changePage,r.pagination.jumpToPage),m=[],p=Math.min(1e3,getPageValue(a,o,1e6)),s=0;s<=p;s++)m.push(s);var l=MenuItem__default[\"default\"];return React__default[\"default\"].createElement(Toolbar__default[\"default\"],{style:{display:\"flex\",minHeight:\"52px\",alignItems:\"center\"},className:t.root},React__default[\"default\"].createElement(Typography__default[\"default\"],{color:\"inherit\",variant:\"body2\",className:t.caption},n),React__default[\"default\"].createElement(Select__default[\"default\"],{classes:{select:t.select,icon:t.selectIcon},input:React__default[\"default\"].createElement(InputBase__default[\"default\"],{className:clsx__default[\"default\"](t.input,t.selectRoot)}),value:getPageValue(a,o,i),onChange:function(t){e.changePage(_parseInt__default[\"default\"](t.target.value,10));},style:{marginRight:0}},_mapInstanceProperty__default[\"default\"](m).call(m,(function(e){return React__default[\"default\"].createElement(l,{className:t.menuItem,key:e,value:e},e+1)}))))}JumpToPage.propTypes={count:PropTypes__default[\"default\"].number.isRequired,page:PropTypes__default[\"default\"].number.isRequired,rowsPerPage:PropTypes__default[\"default\"].number.isRequired,textLabels:PropTypes__default[\"default\"].object.isRequired};\n\nvar useStyles$6=mui.makeStyles({name:\"MUIDataTablePagination\"})((function(e){return {root:{},tableCellContainer:{padding:\"0px 24px 0px 24px\"},navContainer:{display:\"flex\",justifyContent:\"flex-end\"},toolbar:{},selectRoot:{},\"@media screen and (max-width: 400px)\":{toolbar:{\"& span:nth-of-type(2)\":{display:\"none\"}},selectRoot:{marginRight:\"8px\"}}}}));function TablePagination(e){var a=useStyles$6().classes,t=e.count,o=e.options,n=e.rowsPerPage,i=e.page,r=o.textLabels.pagination;return React__default[\"default\"].createElement(MuiTableFooter__default[\"default\"],null,React__default[\"default\"].createElement(TableRow__default[\"default\"],null,React__default[\"default\"].createElement(TableCell__default[\"default\"],{colSpan:\"1000\",className:a.tableCellContainer},React__default[\"default\"].createElement(\"div\",{className:a.navContainer},o.jumpToPage?React__default[\"default\"].createElement(JumpToPage,{count:t,page:i,rowsPerPage:n,textLabels:o.textLabels,changePage:e.changePage,changeRowsPerPage:e.changeRowsPerPage}):null,React__default[\"default\"].createElement(MuiTablePagination__default[\"default\"],{component:\"div\",className:a.root,classes:{caption:a.caption,toolbar:a.toolbar,selectRoot:a.selectRoot},count:t,rowsPerPage:n,page:getPageValue(t,n,i),labelRowsPerPage:r.rowsPerPage,labelDisplayedRows:function(e){var a,t,o,n=e.from,i=e.to,l=e.count;return _concatInstanceProperty__default[\"default\"](a=_concatInstanceProperty__default[\"default\"](t=_concatInstanceProperty__default[\"default\"](o=\"\".concat(n,\"-\")).call(o,i,\" \")).call(t,r.displayRows,\" \")).call(a,l)},backIconButtonProps:{id:\"pagination-back\",\"data-testid\":\"pagination-back\",\"aria-label\":r.previous,title:r.previous||\"\"},nextIconButtonProps:{id:\"pagination-next\",\"data-testid\":\"pagination-next\",\"aria-label\":r.next,title:r.next||\"\"},SelectProps:{id:\"pagination-input\",SelectDisplayProps:{id:\"pagination-rows\",\"data-testid\":\"pagination-rows\"},MenuProps:{id:\"pagination-menu\",\"data-testid\":\"pagination-menu\",MenuListProps:{id:\"pagination-menu-list\",\"data-testid\":\"pagination-menu-list\"}}},rowsPerPageOptions:o.rowsPerPageOptions,onPageChange:function(a,t){e.changePage(t);},onRowsPerPageChange:function(a){e.changeRowsPerPage(a.target.value);}})))))}TablePagination.propTypes={count:PropTypes__default[\"default\"].number.isRequired,options:PropTypes__default[\"default\"].object.isRequired,page:PropTypes__default[\"default\"].number.isRequired,rowsPerPage:PropTypes__default[\"default\"].number.isRequired,changeRowsPerPage:PropTypes__default[\"default\"].func.isRequired};\n\nvar useStyles$5=mui.makeStyles({name:\"MUIDataTableFooter\"})((function(){return {root:{\"@media print\":{display:\"none\"}}}})),TableFooter=function(e){var o=e.options,a=e.rowCount,r=e.page,t=e.rowsPerPage,s=e.changeRowsPerPage,p=e.changePage,n=useStyles$5().classes,i=o.customFooter,u=o.pagination,c=void 0===u||u;return i?React__default[\"default\"].createElement(MuiTable__default[\"default\"],{className:n.root},o.customFooter(a,r,t,s,p,o.textLabels.pagination)):c?React__default[\"default\"].createElement(MuiTable__default[\"default\"],{className:n.root},React__default[\"default\"].createElement(TablePagination,{count:a,page:r,rowsPerPage:t,changeRowsPerPage:s,changePage:p,component:\"div\",options:o})):null};TableFooter.propTypes={rowCount:PropTypes__default[\"default\"].number.isRequired,options:PropTypes__default[\"default\"].shape({customFooter:PropTypes__default[\"default\"].func,pagination:PropTypes__default[\"default\"].bool,textLabels:PropTypes__default[\"default\"].shape({pagination:PropTypes__default[\"default\"].object})}),page:PropTypes__default[\"default\"].number.isRequired,rowsPerPage:PropTypes__default[\"default\"].number.isRequired,changeRowsPerPage:PropTypes__default[\"default\"].func.isRequired,changePage:PropTypes__default[\"default\"].func.isRequired};\n\nvar getColModel=function(e,t,r){var o=[],n=e[0]?e[0]:null;if(null===n){n={offsetLeft:1/0};var a=_Object$entries__default[\"default\"](e);_forEachInstanceProperty__default[\"default\"](a).call(a,(function(e,t){var r=_slicedToArray__default[\"default\"](e,2),o=(r[0],r[1]);o&&o.offsetLeft<n.offsetLeft&&(n=o);})),n.offsetLeft===1/0&&(n={offsetParent:0,offsetWidth:0,offsetLeft:0});}for(var l=0,s=0,c=n.offsetParent;c&&(s=s+(c.offsetLeft||0)-(c.scrollLeft||0),c=c.offsetParent,!(++l>1e3)););return e[0]&&(o[0]={left:s+n.offsetLeft,width:n.offsetWidth,columnIndex:null,ref:n}),_forEachInstanceProperty__default[\"default\"](t).call(t,(function(t,a){var l=e[t+1],c=o.length-1;if(!r[t]||\"true\"===r[t].display){var f=-1!==c?o[c].left+o[c].width:s+n.offsetLeft;o.push({left:f,width:l.offsetWidth,columnIndex:t,ref:l});}})),o},reorderColumns=function(e,t,r){var o=_sliceInstanceProperty__default[\"default\"](e).call(e),n=_indexOfInstanceProperty__default[\"default\"](o).call(o,t),a=_indexOfInstanceProperty__default[\"default\"](o).call(o,r);if(-1!==n&&-1!==a){var l,s,c=o[n];o=_concatInstanceProperty__default[\"default\"](l=[]).call(l,_toConsumableArray__default[\"default\"](_sliceInstanceProperty__default[\"default\"](o).call(o,0,n)),_toConsumableArray__default[\"default\"](_sliceInstanceProperty__default[\"default\"](o).call(o,n+1))),o=_concatInstanceProperty__default[\"default\"](s=[]).call(s,_toConsumableArray__default[\"default\"](_sliceInstanceProperty__default[\"default\"](o).call(o,0,a)),[c],_toConsumableArray__default[\"default\"](_sliceInstanceProperty__default[\"default\"](o).call(o,a)));}return o},handleHover=function(e){e.item;var t=e.mon,r=e.index,o=e.headCellRefs,n=e.updateColumnOrder,a=e.columnOrder,l=e.transitionTime,s=void 0===l?300:l,c=e.tableRef,f=e.tableId,i=e.timers,m=e.columns,u=t.getItem().colIndex;if(o===t.getItem().headCellRefs&&u!==r){for(var d=reorderColumns(a,t.getItem().colIndex,r),p=getColModel(o,d,m),y=t.getClientOffset().x,b=-1,I=0;I<p.length;I++)if(y>p[I].left&&y<p[I].left+p[I].width){b=p[I].columnIndex;break}if(b===t.getItem().colIndex){clearTimeout(i.columnShift);var h=getColModel(o,a,m),_=[];_forEachInstanceProperty__default[\"default\"](p).call(p,(function(e){_[e.columnIndex]=e.left;})),_forEachInstanceProperty__default[\"default\"](h).call(h,(function(e){_[e.columnIndex]=_[e.columnIndex]-e.left;}));for(var v=1;v<a.length;v++){var x=a[v];m[x]&&\"true\"!==m[x].display||(o[v]&&(o[v].style.transition=\"280ms\"),o[v]&&(o[v].style.transform=\"translateX(\"+_[v-1]+\"px)\"));}for(var j=[],P=[],g=0;g<a.length;g++){for(var C=c?c.querySelectorAll('[data-colindex=\"'+g+'\"][data-tableid=\"'+f+'\"]'):[],A=0;A<C.length;A++)C[A].style.transition=s+\"ms\",C[A].style.transform=\"translateX(\"+_[g]+\"px)\",j.push(C[A]);for(var O=c?c.querySelectorAll('[data-divider-index=\"'+(g+1)+'\"][data-tableid=\"'+f+'\"]'):[],E=0;E<O.length;E++)O[E].style.transition=s+\"ms\",O[E].style.transform=\"translateX(\"+_[a[g]]+\"px)\",P.push(O[E]);}var L=t.getItem().colIndex;i.columnShift=_setTimeout__default[\"default\"]((function(){_forEachInstanceProperty__default[\"default\"](j).call(j,(function(e){e.style.transition=\"0s\",e.style.transform=\"translateX(0)\";})),_forEachInstanceProperty__default[\"default\"](P).call(P,(function(e){e.style.transition=\"0s\",e.style.transform=\"translateX(0)\";})),n(d,L,r);}),s);}}},useColumnDrop=function(e){var t=reactDnd.useDrop({accept:\"HEADER\",drop:n,hover:function(t,r){return handleHover(_Object$assign__default[\"default\"]({},e,{item:t,mon:r}))},collect:function(e){return {isOver:!!e.isOver(),canDrop:!!e.canDrop()}}}),r=_slicedToArray__default[\"default\"](t,2),o=r[0],n=(o.isOver,o.canDrop,r[1]);return [n]};\n\nvar _excluded$3=[\"className\"];function ownKeys$3(e,t){var o=_Object$keys__default[\"default\"](e);if(_Object$getOwnPropertySymbols__default[\"default\"]){var r=_Object$getOwnPropertySymbols__default[\"default\"](e);t&&(r=_filterInstanceProperty__default[\"default\"](r).call(r,(function(t){return _Object$getOwnPropertyDescriptor__default[\"default\"](e,t).enumerable}))),o.push.apply(o,r);}return o}function _objectSpread$3(e){for(var t=1;t<arguments.length;t++){var o,r,n=null!=arguments[t]?arguments[t]:{};t%2?_forEachInstanceProperty__default[\"default\"](o=ownKeys$3(Object(n),!0)).call(o,(function(t){_defineProperty__default[\"default\"](e,t,n[t]);})):_Object$getOwnPropertyDescriptors__default[\"default\"]?_Object$defineProperties__default[\"default\"](e,_Object$getOwnPropertyDescriptors__default[\"default\"](n)):_forEachInstanceProperty__default[\"default\"](r=ownKeys$3(Object(n))).call(r,(function(t){_Object$defineProperty__default[\"default\"](e,t,_Object$getOwnPropertyDescriptor__default[\"default\"](n,t));}));}return e}var useStyles$4=mui.makeStyles({name:\"MUIDataTableHeadCell\"})((function(e){return {root:{},fixedHeader:{position:\"sticky\",top:\"0px\",zIndex:100,backgroundColor:e.palette.background.paper},tooltip:{cursor:\"pointer\"},mypopper:{\"&[data-x-out-of-boundaries]\":{display:\"none\"}},data:{display:\"inline-block\"},sortAction:{display:\"flex\",cursor:\"pointer\"},dragCursor:{cursor:\"grab\"},sortLabelRoot:{height:\"20px\"},sortActive:{color:e.palette.text.primary},toolButton:{textTransform:\"none\",marginLeft:\"-8px\",minWidth:0,marginRight:\"8px\",paddingLeft:\"8px\",paddingRight:\"8px\"},contentWrapper:{display:\"flex\",alignItems:\"center\"},hintIconAlone:{marginTop:\"-3px\",marginLeft:\"3px\"},hintIconWithSortIcon:{marginTop:\"-3px\"}}})),TableHeadCell=function(e){var t,o,r=e.cellHeaderProps,n=void 0===r?{}:r,a=e.children,i=e.colPosition,l=e.column,s=e.columns,c=e.columnOrder,p=void 0===c?[]:c,m=e.components,d=void 0===m?{}:m,u=e.draggableHeadCellRefs,b=e.draggingHook,f=e.hint,y=e.index,j=e.options,g=e.print,_=e.setCellRef,P=_sortInstanceProperty__default[\"default\"](e),T=e.sortDirection,x=e.tableRef,h=e.tableId,O=e.timers,R=e.toggleSort,C=e.updateColumnOrder,I=React.useState(!1),S=_slicedToArray__default[\"default\"](I,2),v=S[0],D=S[1],E=React.useState(!1),A=_slicedToArray__default[\"default\"](E,2),H=A[0],w=A[1],$=useStyles$4().classes,k=_slicedToArray__default[\"default\"](b||[],2),L=k[0],N=k[1],W=n.className,B=_objectWithoutProperties__default[\"default\"](n,_excluded$3),q=d.Tooltip||MuiTooltip__default[\"default\"],K=\"none\"!==T&&void 0!==T,M=\"none\"!==T&&T,z=function(){return !!b&&(j.draggableColumns&&j.draggableColumns.enabled&&!1!==l.draggable)},U=_objectSpread$3({classes:{root:$.sortLabelRoot},tabIndex:-1,active:K,hideSortIcon:!0},M?{direction:T}:{}),F=reactDnd.useDrag({item:{type:\"HEADER\",colIndex:y,headCellRefs:u},begin:function(e){return _setTimeout__default[\"default\"]((function(){w(!1),D(!1),N(!0);}),0),null},end:function(e,t){N(!1);},collect:function(e){return {opacity:e.isDragging()?1:0}}}),G=_slicedToArray__default[\"default\"](F,3),J=(G[0].opacity,G[1]),Q=(G[2],useColumnDrop({drop:function(e,t){D(!1),w(!1),N(!1);},index:y,headCellRefs:u,updateColumnOrder:C,columnOrder:p,columns:s,transitionTime:j.draggableColumns?j.draggableColumns.transitionTime:300,tableRef:x?x():null,tableId:h||\"none\",timers:O})),V=_slicedToArray__default[\"default\"](Q,1)[0],X=clsx__default[\"default\"]((_defineProperty__default[\"default\"](t={},$.root,!0),_defineProperty__default[\"default\"](t,$.fixedHeader,j.fixedHeader),_defineProperty__default[\"default\"](t,\"datatables-noprint\",!g),_defineProperty__default[\"default\"](t,W,W),t));return React__default[\"default\"].createElement(TableCell__default[\"default\"],_extends__default[\"default\"]({ref:function(e){V&&V(e),_&&_(y+1,i+1,e);},className:X,scope:\"col\",sortDirection:M,\"data-colindex\":y,\"data-tableid\":h,onMouseDown:function(){D(!1);}},B),_sortInstanceProperty__default[\"default\"](j)&&P?React__default[\"default\"].createElement(\"span\",{className:$.contentWrapper},React__default[\"default\"].createElement(q,{title:L?\"\":j.textLabels?j.textLabels.body.columnHeaderTooltip?j.textLabels.body.columnHeaderTooltip(l):j.textLabels.body.toolTip:\"\",placement:\"bottom\",open:v,onOpen:function(){return D(!L)},onClose:function(){return D(!1)},classes:{tooltip:$.tooltip,popper:$.mypopper}},React__default[\"default\"].createElement(Button__default[\"default\"],{variant:\"\",onKeyUp:function(e){return \"Enter\"===e.key&&R(y),!1},onClick:function(){R(y);},className:$.toolButton,\"data-testid\":\"headcol-\".concat(y),ref:z()?J:null},React__default[\"default\"].createElement(\"div\",{className:$.sortAction},React__default[\"default\"].createElement(\"div\",{className:clsx__default[\"default\"]((o={},_defineProperty__default[\"default\"](o,$.data,!0),_defineProperty__default[\"default\"](o,$.sortActive,K),_defineProperty__default[\"default\"](o,$.dragCursor,z()),o))},a),React__default[\"default\"].createElement(\"div\",{className:$.sortAction},React__default[\"default\"].createElement(TableSortLabel__default[\"default\"],U))))),f&&React__default[\"default\"].createElement(q,{title:f},React__default[\"default\"].createElement(HelpIcon__default[\"default\"],{className:K?$.hintIconWithSortIcon:$.hintIconAlone,fontSize:\"small\"}))):React__default[\"default\"].createElement(\"div\",{className:f?$.sortAction:null,ref:z()?J:null},a,f&&React__default[\"default\"].createElement(q,{title:f,placement:\"bottom-end\",open:H,onOpen:function(){return D(!1),void w(!0)},onClose:function(){return w(!1)},classes:{tooltip:$.tooltip,popper:$.mypopper},enterDelay:300},React__default[\"default\"].createElement(HelpIcon__default[\"default\"],{className:$.hintIconAlone,fontSize:\"small\"}))))};TableHeadCell.propTypes={options:PropTypes__default[\"default\"].object.isRequired,sortDirection:PropTypes__default[\"default\"].oneOf([\"asc\",\"desc\",\"none\"]),toggleSort:PropTypes__default[\"default\"].func.isRequired,sort:PropTypes__default[\"default\"].bool.isRequired,hint:PropTypes__default[\"default\"].string,print:PropTypes__default[\"default\"].bool.isRequired,column:PropTypes__default[\"default\"].object,components:PropTypes__default[\"default\"].object};\n\nvar useStyles$3=mui.makeStyles({name:\"MUIDataTableHeadRow\"})((function(){return {root:{}}})),TableHeadRow=function(e){var r=e.children,o=useStyles$3().classes;return React__default[\"default\"].createElement(TableRow__default[\"default\"],{className:clsx__default[\"default\"](_defineProperty__default[\"default\"]({},o.root,!0))},r)};TableHeadRow.propTypes={children:PropTypes__default[\"default\"].node};\n\nfunction ownKeys$2(e,r){var t=_Object$keys__default[\"default\"](e);if(_Object$getOwnPropertySymbols__default[\"default\"]){var o=_Object$getOwnPropertySymbols__default[\"default\"](e);r&&(o=_filterInstanceProperty__default[\"default\"](o).call(o,(function(r){return _Object$getOwnPropertyDescriptor__default[\"default\"](e,r).enumerable}))),t.push.apply(t,o);}return t}function _objectSpread$2(e){for(var r=1;r<arguments.length;r++){var t,o,a=null!=arguments[r]?arguments[r]:{};r%2?_forEachInstanceProperty__default[\"default\"](t=ownKeys$2(Object(a),!0)).call(t,(function(r){_defineProperty__default[\"default\"](e,r,a[r]);})):_Object$getOwnPropertyDescriptors__default[\"default\"]?_Object$defineProperties__default[\"default\"](e,_Object$getOwnPropertyDescriptors__default[\"default\"](a)):_forEachInstanceProperty__default[\"default\"](o=ownKeys$2(Object(a))).call(o,(function(r){_Object$defineProperty__default[\"default\"](e,r,_Object$getOwnPropertyDescriptor__default[\"default\"](a,r));}));}return e}var useStyles$2=mui.makeStyles({name:\"MUIDataTableHead\"})((function(e){return {main:{},responsiveStacked:_defineProperty__default[\"default\"]({},e.breakpoints.down(\"md\"),{display:\"none\"}),responsiveStackedAlways:{display:\"none\"},responsiveSimple:_defineProperty__default[\"default\"]({},e.breakpoints.down(\"sm\"),{display:\"none\"})}})),TableHead=function(e){var r,t=e.columnOrder,o=void 0===t?null:t,a=e.columns,n=e.components,l=void 0===n?{}:n,s=e.count,c=e.data,i=e.draggableHeadCellRefs,p=e.expandedRows,d=e.options,b=e.selectedRows,m=e.selectRowUpdate,f=e.setCellRef,u=e.sortOrder,y=void 0===u?{}:u,j=e.tableRef,P=e.tableId,_=e.timers,w=e.toggleAllExpandableRows,O=e.toggleSort,R=e.updateColumnOrder,H=useStyles$2().classes;null===o&&(o=a?_mapInstanceProperty__default[\"default\"](a).call(a,(function(e,r){return r})):[]);var g=React.useState(!1),S=_slicedToArray__default[\"default\"](g,2),v=S[0],x=S[1],C=function(e){O(e);},T=function(){m(\"head\",null);},k=b&&b.data.length||0,h=k>0&&k<s,I=k>0&&k>=s;if(!0===d.disableToolbarSelect||\"none\"===d.selectToolbarPlacement||\"above\"===d.selectToolbarPlacement)if(I){for(var $=0;$<c.length;$++)if(!b.lookup[c[$].dataIndex]){I=!1,h=!0;break}}else k>s&&(h=!0);var E=_mapInstanceProperty__default[\"default\"](o).call(o,(function(e,r){return {column:a[e],index:e,colPos:r}}));return React__default[\"default\"].createElement(MuiTableHead__default[\"default\"],{className:clsx__default[\"default\"]((r={},_defineProperty__default[\"default\"](r,H.responsiveStacked,\"vertical\"===d.responsive||\"stacked\"===d.responsive||\"stackedFullWidth\"===d.responsive),_defineProperty__default[\"default\"](r,H.responsiveStackedAlways,\"verticalAlways\"===d.responsive),_defineProperty__default[\"default\"](r,H.responsiveSimple,\"simple\"===d.responsive),_defineProperty__default[\"default\"](r,H.main,!0),r))},React__default[\"default\"].createElement(TableHeadRow,null,React__default[\"default\"].createElement(TableSelectCell,{setHeadCellRef:f,onChange:_bindInstanceProperty__default[\"default\"](T).call(T,null),indeterminate:h,checked:I,isHeaderCell:!0,expandedRows:p,expandableRowsHeader:d.expandableRowsHeader,expandableOn:d.expandableRows,selectableOn:d.selectableRows,fixedHeader:d.fixedHeader,fixedSelectColumn:d.fixedSelectColumn,selectableRowsHeader:d.selectableRowsHeader,selectableRowsHideCheckboxes:d.selectableRowsHideCheckboxes,onExpand:w,isRowSelectable:!0,components:l}),_mapInstanceProperty__default[\"default\"](E).call(E,(function(e){var r=e.column,t=e.index,n=e.colPos;return \"true\"===r.display&&(r.customHeadRender?r.customHeadRender(_objectSpread$2({index:t},r),C,y):React__default[\"default\"].createElement(TableHeadCell,{cellHeaderProps:a[t].setCellHeaderProps&&a[t].setCellHeaderProps(_objectSpread$2({index:t},r))||{},key:t,index:t,colPosition:n,type:\"cell\",setCellRef:f,sort:_sortInstanceProperty__default[\"default\"](r),sortDirection:r.name===y.name?y.direction:\"none\",toggleSort:C,hint:r.hint,print:r.print,options:d,column:r,columns:a,updateColumnOrder:R,columnOrder:o,timers:_,draggingHook:[v,x],draggableHeadCellRefs:i,tableRef:j,tableId:P,components:l},r.customHeadLabelRender?r.customHeadLabelRender(_objectSpread$2({index:t,colPos:n},r)):r.label))}))))};\n\nfunction ownKeys$1(e,t){var r=_Object$keys__default[\"default\"](e);if(_Object$getOwnPropertySymbols__default[\"default\"]){var o=_Object$getOwnPropertySymbols__default[\"default\"](e);t&&(o=_filterInstanceProperty__default[\"default\"](o).call(o,(function(t){return _Object$getOwnPropertyDescriptor__default[\"default\"](e,t).enumerable}))),r.push.apply(r,o);}return r}function _objectSpread$1(e){for(var t=1;t<arguments.length;t++){var r,o,i=null!=arguments[t]?arguments[t]:{};t%2?_forEachInstanceProperty__default[\"default\"](r=ownKeys$1(Object(i),!0)).call(r,(function(t){_defineProperty__default[\"default\"](e,t,i[t]);})):_Object$getOwnPropertyDescriptors__default[\"default\"]?_Object$defineProperties__default[\"default\"](e,_Object$getOwnPropertyDescriptors__default[\"default\"](i)):_forEachInstanceProperty__default[\"default\"](o=ownKeys$1(Object(i))).call(o,(function(t){_Object$defineProperty__default[\"default\"](e,t,_Object$getOwnPropertyDescriptor__default[\"default\"](i,t));}));}return e}function _createSuper$4(e){var t=_isNativeReflectConstruct$4();return function(){var r,o=_getPrototypeOf__default[\"default\"](e);if(t){var i=_getPrototypeOf__default[\"default\"](this).constructor;r=_Reflect$construct__default[\"default\"](o,arguments,i);}else r=o.apply(this,arguments);return _possibleConstructorReturn__default[\"default\"](this,r)}}function _isNativeReflectConstruct$4(){if(\"undefined\"==typeof Reflect||!_Reflect$construct__default[\"default\"])return !1;if(_Reflect$construct__default[\"default\"].sham)return !1;if(\"function\"==typeof Proxy)return !0;try{return Boolean.prototype.valueOf.call(_Reflect$construct__default[\"default\"](Boolean,[],(function(){}))),!0}catch(e){return !1}}var defaultResizeStyles={root:{position:\"absolute\"},resizer:{position:\"absolute\",width:\"1px\",height:\"100%\",left:\"100px\",cursor:\"ew-resize\",border:\"0.1px solid rgba(224, 224, 224, 1)\"}};function getParentOffsetLeft(e){for(var t=0,r=0,o=e.offsetParent;o&&(r=r+(o.offsetLeft||0)-(o.scrollLeft||0),o=o.offsetParent,!(++t>1e3)););return r}var TableResize=function(e){_inherits__default[\"default\"](r,e);var t=_createSuper$4(r);function r(){var e,o;_classCallCheck__default[\"default\"](this,r);for(var i=arguments.length,n=new Array(i),s=0;s<i;s++)n[s]=arguments[s];return o=t.call.apply(t,_concatInstanceProperty__default[\"default\"](e=[this]).call(e,n)),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"state\",{resizeCoords:{},priorPosition:{},tableWidth:\"100%\",tableHeight:\"100%\"}),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"handleResize\",(function(){window.innerWidth!==o.windowWidth&&(o.windowWidth=window.innerWidth,o.setDividers());})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"setCellRefs\",(function(e,t){o.cellsRef=e,o.tableRef=t,o.setDividers();})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"setDividers\",(function(){var e=o.tableRef,t=e.getBoundingClientRect(),r=t.width,i=t.height,n=o.state.resizeCoords;for(var s in n)delete n[s];var a=getParentOffsetLeft(e),c=_Object$entries__default[\"default\"](o.cellsRef),l=_filterInstanceProperty__default[\"default\"](c).call(c,(function(e,t){return t+1<c.length}));_forEachInstanceProperty__default[\"default\"](l).call(l,(function(e,t){var r=_slicedToArray__default[\"default\"](e,2),o=r[0],i=r[1];if(i){var s=i.getBoundingClientRect().left;s=(s||0)-a;window.getComputedStyle(i,null);n[o]={left:s+i.offsetWidth};}})),o.setState({tableWidth:r,tableHeight:i,resizeCoords:n},o.updateWidths);})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"updateWidths\",(function(){var e,t=0,r=o.state,i=r.resizeCoords,n=r.tableWidth;_forEachInstanceProperty__default[\"default\"](e=_Object$entries__default[\"default\"](i)).call(e,(function(e){var r=_slicedToArray__default[\"default\"](e,2),i=r[0],s=r[1],a=Number((s.left-t)/n*100);\"object\"===_typeof__default[\"default\"](o.props.resizableColumns)&&o.props.resizableColumns.roundWidthPercentages&&(a=a.toFixed(2)),t=s.left;var c=o.cellsRef[i];c&&(c.style.width=a+\"%\");}));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"onResizeStart\",(function(e,t){var r=o.tableRef,i=r.style.width,n=0;r.style.width=\"1px\";var s=_Object$entries__default[\"default\"](o.cellsRef);_forEachInstanceProperty__default[\"default\"](s).call(s,(function(e,t){var r=_slicedToArray__default[\"default\"](e,2),i=r[0],s=r[1],a=s?s.getBoundingClientRect():{width:0,left:0};o.minWidths[i]=a.width,n=Math.max(i,n);})),r.style.width=i,o.setState({isResize:!0,id:e,lastColumn:n});})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"onResizeMove\",(function(e,t){var r=o.state,i=r.isResize,n=r.resizeCoords,s=r.lastColumn,a=o.minWidths[e],c=o.minWidths[function(e){for(var t=e+1,r=0;void 0===n[t]&&r<20;)t++,r++;return t}(_parseInt__default[\"default\"](e,10))]||o.minWidths[e],l=_parseInt__default[\"default\"](e,10),f=(_Object$entries__default[\"default\"](o.cellsRef),o.tableRef),p=f.getBoundingClientRect(),u=p.width,d=p.height,b=o.props.options.selectableRows,m=getParentOffsetLeft(f),h=function(e){for(var t=e+1,r=0;void 0===n[t]&&r<20;)t++,r++;return n[t]},y=function(e){for(var t=e-1;void 0===n[t]&&t>=0;)t--;return n[t]};if(i){var _=t.clientX-m,j=function(e,t,r){return e>t-r?t-r:e},v=function(e,t){return e<t?t:e},P=function(e,t,r,o){return void 0===h(r)?e:e>h(r).left-o?h(r).left-o:e},R=function(e,t,r,o){return void 0===y(r)?e:e<y(r).left+o?y(r).left+o:e},w=function(e,t){for(var r=1;!n[r]&&r<20;)r++;return \"none\"!==e&&0===t||\"none\"===e&&t===r},z=function(e,t){return e===function(e){for(var t=e-1;void 0===n[t]&&t>=0;)t--;return t}(s)};w(b,l)&&z(l)?_=j(_=v(_,a),u,c):!w(b,l)&&z(l)?_=R(_=j(_,u,c),0,l,a):w(b,l)&&!z(l)?_=P(_=v(_,a),0,l,c):w(b,l)||z(l)||(_=P(_=R(_,0,l,a),0,l,c));var g=_objectSpread$1(_objectSpread$1({},n[e]),{},{left:_}),O=_objectSpread$1(_objectSpread$1({},n),{},_defineProperty__default[\"default\"]({},e,g));o.setState({resizeCoords:O,tableHeight:d},o.updateWidths);}})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"onResizeEnd\",(function(e,t){o.setState({isResize:!1,id:null});})),o}return _createClass__default[\"default\"](r,[{key:\"componentDidMount\",value:function(){var e=this;this.minWidths=[],this.windowWidth=null,this.props.setResizeable(this.setCellRefs),this.props.updateDividers((function(){return e.setState({updateCoords:!0},(function(){return e.updateWidths}))})),window.addEventListener(\"resize\",this.handleResize,!1);}},{key:\"componentWillUnmount\",value:function(){window.removeEventListener(\"resize\",this.handleResize,!1);}},{key:\"render\",value:function(){var e,t=this,r=this.props,o=r.classes,i=r.tableId,n=this.state,s=n.id,a=n.isResize,c=n.resizeCoords,l=n.tableWidth,f=n.tableHeight;return React__default[\"default\"].createElement(\"div\",{className:o.root,style:{width:l}},_mapInstanceProperty__default[\"default\"](e=_Object$entries__default[\"default\"](c)).call(e,(function(e){var r,n,c,p=_slicedToArray__default[\"default\"](e,2),u=p[0],d=p[1];return React__default[\"default\"].createElement(\"div\",{\"data-divider-index\":u,\"data-tableid\":i,\"aria-hidden\":\"true\",key:u,onMouseMove:_bindInstanceProperty__default[\"default\"](r=t.onResizeMove).call(r,null,u),onMouseUp:_bindInstanceProperty__default[\"default\"](n=t.onResizeEnd).call(n,null,u),style:{width:a&&s==u?l:\"auto\",position:\"absolute\",height:f-2,cursor:\"ew-resize\",zIndex:1e3}},React__default[\"default\"].createElement(\"div\",{\"aria-hidden\":\"true\",onMouseDown:_bindInstanceProperty__default[\"default\"](c=t.onResizeStart).call(c,null,u),className:o.resizer,style:{left:d.left}}))})))}}]),r}(React__default[\"default\"].Component);_defineProperty__default[\"default\"](TableResize,\"propTypes\",{classes:PropTypes__default[\"default\"].object});var DefaultTableResize = mui.withStyles(TableResize,defaultResizeStyles,{name:\"MUIDataTableResize\"});\n\nvar _excluded$2=[\"className\",\"trigger\",\"refExit\",\"hide\",\"content\"];var Popover=function(e){e.className;var o=e.trigger,t=e.refExit,r=e.hide,n=e.content,i=_objectWithoutProperties__default[\"default\"](e,_excluded$2),c=React.useState(!1),s=_slicedToArray__default[\"default\"](c,2),a=s[0],l=s[1],p=React.useRef(null);React.useEffect((function(){a&&(\"boolean\"==typeof r&&r&&l(!1));}),[r,a,l]);var u=function(){l(!1);},m=i.classes.closeIcon;delete i.classes.closeIcon;var f={key:\"content\",onClick:function(e){o.props.onClick&&o.props.onClick(),function(e){p.current=e.currentTarget,l(!0);}(e);}};return React__default[\"default\"].createElement(React__default[\"default\"].Fragment,null,React__default[\"default\"].createElement(\"span\",f,o),React__default[\"default\"].createElement(MuiPopover__default[\"default\"],_extends__default[\"default\"]({elevation:2,open:a,TransitionProps:{onExited:function(){t&&t();}},onClose:u,anchorEl:p.current,anchorOrigin:{vertical:\"bottom\",horizontal:\"center\"},transformOrigin:{vertical:\"top\",horizontal:\"center\"}},i),React__default[\"default\"].createElement(IconButton__default[\"default\"],{\"aria-label\":\"Close\",onClick:u,className:m,style:{position:\"absolute\",right:\"4px\",top:\"4px\",zIndex:\"1000\"}},React__default[\"default\"].createElement(CloseIcon__default[\"default\"],null)),n))};Popover.propTypes={refExit:PropTypes__default[\"default\"].func,trigger:PropTypes__default[\"default\"].node.isRequired,content:PropTypes__default[\"default\"].node.isRequired,hide:PropTypes__default[\"default\"].bool};\n\nvar useStyles$1=mui.makeStyles({name:\"MUIDataTableViewCol\"})((function(e){return {root:{padding:\"16px 24px 16px 24px\",fontFamily:\"Roboto\"},title:{marginLeft:\"-7px\",marginRight:\"24px\",fontSize:\"14px\",color:e.palette.text.secondary,textAlign:\"left\",fontWeight:500},formGroup:{marginTop:\"8px\"},formControl:{},checkbox:{padding:\"0px\",width:\"32px\",height:\"32px\"},checkboxRoot:{},checked:{},label:{fontSize:\"15px\",marginLeft:\"8px\",color:e.palette.text.primary}}})),TableViewCol=function(e){var o=e.columns,t=e.options,r=e.components,a=void 0===r?{}:r,l=e.onColumnUpdate,m=(e.updateColumns,useStyles$1().classes),p=t.textLabels.viewColumns,i=a.Checkbox||Checkbox__default[\"default\"];return React__default[\"default\"].createElement(FormControl__default[\"default\"],{component:\"fieldset\",className:m.root,\"aria-label\":p.titleAria},React__default[\"default\"].createElement(Typography__default[\"default\"],{variant:\"caption\",className:m.title},p.title),React__default[\"default\"].createElement(FormGroup__default[\"default\"],{className:m.formGroup},_mapInstanceProperty__default[\"default\"](o).call(o,(function(e,o){return \"excluded\"!==e.display&&!1!==e.viewColumns&&React__default[\"default\"].createElement(FormControlLabel__default[\"default\"],{key:o,classes:{root:m.formControl,label:m.label},control:React__default[\"default\"].createElement(i,{color:\"primary\",\"data-description\":\"table-view-col\",className:m.checkbox,classes:{root:m.checkboxRoot,checked:m.checked},onChange:function(){return function(e){l(e);}(o)},checked:\"true\"===e.display,value:e.name}),label:e.label})}))))};TableViewCol.propTypes={columns:PropTypes__default[\"default\"].array.isRequired,options:PropTypes__default[\"default\"].object.isRequired,onColumnUpdate:PropTypes__default[\"default\"].func,classes:PropTypes__default[\"default\"].object};\n\nvar useStyles=mui.makeStyles({name:\"MUIDataTableSearch\"})((function(e){return {main:{display:\"flex\",flex:\"1 0 auto\",alignItems:\"center\"},searchIcon:{color:e.palette.text.secondary,marginRight:\"8px\"},searchText:{flex:\"0.8 0\"},clearIcon:{\"&:hover\":{color:e.palette.error.main}}}})),TableSearch=function(e){var a=e.options,t=e.searchText,r=e.onSearch,o=e.onHide,c=useStyles().classes,l=a.searchAlwaysOpen?\"hidden\":\"visible\";return React__default[\"default\"].createElement(Grow__default[\"default\"],{appear:!0,in:!0,timeout:300},React__default[\"default\"].createElement(\"div\",{className:c.main},React__default[\"default\"].createElement(SearchIcon__default[\"default\"],{className:c.searchIcon}),React__default[\"default\"].createElement(TextField__default[\"default\"],_extends__default[\"default\"]({className:c.searchText,autoFocus:!0,variant:\"standard\",InputProps:{\"data-test-id\":a.textLabels.toolbar.search},inputProps:{\"aria-label\":a.textLabels.toolbar.search},value:t||\"\",onKeyDown:function(e){\"Escape\"===e.key&&o();},onChange:function(e){r(e.target.value);},fullWidth:!0,placeholder:a.searchPlaceholder},a.searchProps?a.searchProps:{})),React__default[\"default\"].createElement(IconButton__default[\"default\"],{className:c.clearIcon,style:{visibility:l},onClick:o},React__default[\"default\"].createElement(ClearIcon__default[\"default\"],null))))};\n\nfunction _createSuper$3(e){var t=_isNativeReflectConstruct$3();return function(){var r,o=_getPrototypeOf__default[\"default\"](e);if(t){var a=_getPrototypeOf__default[\"default\"](this).constructor;r=_Reflect$construct__default[\"default\"](o,arguments,a);}else r=o.apply(this,arguments);return _possibleConstructorReturn__default[\"default\"](this,r)}}function _isNativeReflectConstruct$3(){if(\"undefined\"==typeof Reflect||!_Reflect$construct__default[\"default\"])return !1;if(_Reflect$construct__default[\"default\"].sham)return !1;if(\"function\"==typeof Proxy)return !0;try{return Boolean.prototype.valueOf.call(_Reflect$construct__default[\"default\"](Boolean,[],(function(){}))),!0}catch(e){return !1}}var defaultToolbarStyles=function(e){var t;return t={root:{\"@media print\":{display:\"none\"}},fullWidthRoot:{},left:{flex:\"1 1 auto\"},fullWidthLeft:{flex:\"1 1 auto\"},actions:{flex:\"1 1 auto\",textAlign:\"right\"},fullWidthActions:{flex:\"1 1 auto\",textAlign:\"right\"},titleRoot:{},titleText:{},fullWidthTitleText:{textAlign:\"left\"},icon:{\"&:hover\":{color:e.palette.primary.main}},iconActive:{color:e.palette.primary.main},filterPaper:{maxWidth:\"50%\"},filterCloseIcon:{position:\"absolute\",right:0,top:0,zIndex:100},searchIcon:{display:\"inline-flex\",marginTop:\"10px\",marginRight:\"8px\"}},_defineProperty__default[\"default\"](t,e.breakpoints.down(\"md\"),{titleRoot:{},titleText:{fontSize:\"16px\"},spacer:{display:\"none\"},left:{padding:\"8px 0px\"},actions:{textAlign:\"right\"}}),_defineProperty__default[\"default\"](t,e.breakpoints.down(\"sm\"),{root:{display:\"block\",\"@media print\":{display:\"none !important\"}},left:{padding:\"8px 0px 0px 0px\"},titleText:{textAlign:\"center\"},actions:{textAlign:\"center\"}}),_defineProperty__default[\"default\"](t,\"@media screen and (max-width: 480px)\",{}),t};var RESPONSIVE_FULL_WIDTH_NAME=\"scrollFullHeightFullWidth\",TableToolbar=function(e){_inherits__default[\"default\"](r,e);var t=_createSuper$3(r);function r(){var e,o;_classCallCheck__default[\"default\"](this,r);for(var a=arguments.length,n=new Array(a),i=0;i<a;i++)n[i]=arguments[i];return o=t.call.apply(t,_concatInstanceProperty__default[\"default\"](e=[this]).call(e,n)),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"state\",{iconActive:null,showSearch:Boolean(o.props.searchText||o.props.options.searchText||o.props.options.searchOpen||o.props.options.searchAlwaysOpen),searchText:o.props.searchText||null}),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"handleCSVDownload\",(function(){var e=o.props,t=e.data,r=e.displayData,a=e.columns,n=e.options,i=e.columnOrder,l=[],s=[],c=_Array$isArray__default[\"default\"](i)?_sliceInstanceProperty__default[\"default\"](i).call(i,0):[];if(0===c.length&&(c=_mapInstanceProperty__default[\"default\"](a).call(a,(function(e,t){return t}))),_forEachInstanceProperty__default[\"default\"](t).call(t,(function(e){var t={index:e.index,data:[]};_forEachInstanceProperty__default[\"default\"](c).call(c,(function(r){t.data.push(e.data[r]);})),l.push(t);})),_forEachInstanceProperty__default[\"default\"](c).call(c,(function(e){s.push(a[e]);})),n.downloadOptions&&n.downloadOptions.filterOptions){if(n.downloadOptions.filterOptions.useDisplayedRowsOnly){var p=_mapInstanceProperty__default[\"default\"](r).call(r,(function(e,r){var o,a=-1;return e.index=r,{data:_mapInstanceProperty__default[\"default\"](o=e.data).call(o,(function(r){a+=1;var o=\"object\"!==_typeof__default[\"default\"](r)||null===r||_Array$isArray__default[\"default\"](r)?r:find__default[\"default\"](t,(function(t){return t.index===e.dataIndex})).data[a];return o=\"function\"==typeof o?find__default[\"default\"](t,(function(t){return t.index===e.dataIndex})).data[a]:o}))}}));l=[],_forEachInstanceProperty__default[\"default\"](p).call(p,(function(e){var t={index:e.index,data:[]};_forEachInstanceProperty__default[\"default\"](c).call(c,(function(r){t.data.push(e.data[r]);})),l.push(t);}));}n.downloadOptions.filterOptions.useDisplayedColumnsOnly&&(s=_filterInstanceProperty__default[\"default\"](s).call(s,(function(e){return \"true\"===e.display})),l=_mapInstanceProperty__default[\"default\"](l).call(l,(function(e){var t;return e.data=_filterInstanceProperty__default[\"default\"](t=e.data).call(t,(function(e,t){return \"true\"===a[c[t]].display})),e})));}createCSVDownload(s,l,n,downloadCSV);})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"setActiveIcon\",(function(e){o.setState((function(t){return {showSearch:o.isSearchShown(e),iconActive:e,prevIconActive:t.iconActive}}),(function(){var e=o.state,t=e.iconActive,r=e.prevIconActive;\"filter\"===t&&(o.props.setTableAction(\"onFilterDialogOpen\"),o.props.options.onFilterDialogOpen&&o.props.options.onFilterDialogOpen()),void 0===t&&\"filter\"===r&&(o.props.setTableAction(\"onFilterDialogClose\"),o.props.options.onFilterDialogClose&&o.props.options.onFilterDialogClose());}));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"isSearchShown\",(function(e){if(o.props.options.searchAlwaysOpen)return !0;var t=!1;if(o.state.showSearch)if(o.state.searchText)t=!0;else {var r=o.props.options.onSearchClose;o.props.setTableAction(\"onSearchClose\"),r&&r(),t=!1;}else \"search\"===e&&(t=o.showSearch());return t})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"getActiveIcon\",(function(e,t){var r=o.state.iconActive===t;if(\"search\"===t){var a=o.state,n=a.showSearch,i=a.searchText;r=r||n||i;}return r?e.iconActive:e.icon})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"showSearch\",(function(){return o.props.setTableAction(\"onSearchOpen\"),o.props.options.onSearchOpen&&o.props.options.onSearchOpen(),!0})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"hideSearch\",(function(){var e=o.props.options.onSearchClose;o.props.setTableAction(\"onSearchClose\"),e&&e(),o.props.searchClose(),o.setState((function(){return {iconActive:null,showSearch:!1,searchText:null}}));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"handleSearch\",(function(e){o.setState({searchText:e}),o.props.searchTextUpdate(e);})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"handleSearchIconClick\",(function(){var e=o.state,t=e.showSearch,r=e.searchText;t&&!r?o.hideSearch():o.setActiveIcon(\"search\");})),o}return _createClass__default[\"default\"](r,[{key:\"componentDidUpdate\",value:function(e){this.props.searchText!==e.searchText&&this.setState({searchText:this.props.searchText});}},{key:\"render\",value:function(){var e,t,r,o=this,a=this.props,n=a.data,i=a.options,l=a.classes,s=a.columns,c=a.filterData,p=a.filterList,u=a.filterUpdate,d=a.resetFilters,m=a.toggleViewColumn,f=a.updateColumns,h=a.title,b=a.components,y=void 0===b?{}:b,I=a.updateFilterByType,_=y.icons,T=void 0===_?{}:_,v=y.Tooltip||MuiTooltip__default[\"default\"],P=y.TableViewCol||TableViewCol,S=y.TableFilter||DefaultTableFilter,C=T.SearchIcon||SearchIcon__default[\"default\"],x=T.DownloadIcon||DownloadIcon__default[\"default\"],R=T.PrintIcon||PrintIcon__default[\"default\"],w=T.ViewColumnIcon||ViewColumnIcon__default[\"default\"],E=T.FilterIcon||FilterIcon__default[\"default\"],A=i.textLabels.toolbar,g=A.search,F=A.downloadCsv,O=A.print,D=A.viewColumns,j=A.filterTable,V=this.state,L=V.showSearch,B=V.searchText;return React__default[\"default\"].createElement(Toolbar__default[\"default\"],{className:i.responsive!==RESPONSIVE_FULL_WIDTH_NAME?l.root:l.fullWidthRoot,role:\"toolbar\",\"aria-label\":\"Table Toolbar\"},React__default[\"default\"].createElement(\"div\",{className:i.responsive!==RESPONSIVE_FULL_WIDTH_NAME?l.left:l.fullWidthLeft},!0===L?i.customSearchRender?i.customSearchRender(B,this.handleSearch,this.hideSearch,i):React__default[\"default\"].createElement(TableSearch,{searchText:B,onSearch:this.handleSearch,onHide:this.hideSearch,options:i}):\"string\"!=typeof h?h:React__default[\"default\"].createElement(\"div\",{className:l.titleRoot,\"aria-hidden\":\"true\"},React__default[\"default\"].createElement(Typography__default[\"default\"],{variant:\"h6\",className:i.responsive!==RESPONSIVE_FULL_WIDTH_NAME?l.titleText:l.fullWidthTitleText},h))),React__default[\"default\"].createElement(\"div\",{className:i.responsive!==RESPONSIVE_FULL_WIDTH_NAME?l.actions:l.fullWidthActions},!(!1===i.search||\"false\"===i.search||!0===i.searchAlwaysOpen)&&React__default[\"default\"].createElement(v,{title:g,disableFocusListener:!0},React__default[\"default\"].createElement(IconButton__default[\"default\"],{\"aria-label\":g,\"data-testid\":g+\"-iconButton\",ref:function(e){return o.searchButton=e},classes:{root:this.getActiveIcon(l,\"search\")},disabled:\"disabled\"===i.search,onClick:this.handleSearchIconClick},React__default[\"default\"].createElement(C,null))),!(!1===i.download||\"false\"===i.download)&&React__default[\"default\"].createElement(v,{title:F},React__default[\"default\"].createElement(IconButton__default[\"default\"],{\"data-testid\":F.replace(/\\s/g,\"\")+\"-iconButton\",\"aria-label\":F,classes:{root:l.icon},disabled:\"disabled\"===i.download,onClick:this.handleCSVDownload},React__default[\"default\"].createElement(x,null))),!(!1===i.print||\"false\"===i.print)&&React__default[\"default\"].createElement(\"span\",null,React__default[\"default\"].createElement(ReactToPrint__default[\"default\"],{content:function(){return o.props.tableRef()}},React__default[\"default\"].createElement(ReactToPrint.PrintContextConsumer,null,(function(e){var t=e.handlePrint;return React__default[\"default\"].createElement(\"span\",null,React__default[\"default\"].createElement(v,{title:O},React__default[\"default\"].createElement(IconButton__default[\"default\"],{\"data-testid\":O+\"-iconButton\",\"aria-label\":O,disabled:\"disabled\"===i.print,onClick:t,classes:{root:l.icon}},React__default[\"default\"].createElement(R,null))))})))),!(!1===i.viewColumns||\"false\"===i.viewColumns)&&React__default[\"default\"].createElement(Popover,{refExit:_bindInstanceProperty__default[\"default\"](e=this.setActiveIcon).call(e,null),classes:{closeIcon:l.filterCloseIcon},hide:\"disabled\"===i.viewColumns,trigger:React__default[\"default\"].createElement(v,{title:D,disableFocusListener:!0},React__default[\"default\"].createElement(IconButton__default[\"default\"],{\"data-testid\":D+\"-iconButton\",\"aria-label\":D,classes:{root:this.getActiveIcon(l,\"viewcolumns\")},disabled:\"disabled\"===i.viewColumns,onClick:_bindInstanceProperty__default[\"default\"](t=this.setActiveIcon).call(t,null,\"viewcolumns\")},React__default[\"default\"].createElement(w,null))),content:React__default[\"default\"].createElement(P,{data:n,columns:s,options:i,onColumnUpdate:m,updateColumns:f,components:y})}),!(!1===_filterInstanceProperty__default[\"default\"](i)||\"false\"===_filterInstanceProperty__default[\"default\"](i))&&React__default[\"default\"].createElement(Popover,{refExit:function(){o.setState({hideFilterPopover:!1}),o.setActiveIcon();},hide:this.state.hideFilterPopover||\"disabled\"===_filterInstanceProperty__default[\"default\"](i),classes:{paper:l.filterPaper,closeIcon:l.filterCloseIcon},trigger:React__default[\"default\"].createElement(v,{title:j,disableFocusListener:!0},React__default[\"default\"].createElement(IconButton__default[\"default\"],{\"data-testid\":j+\"-iconButton\",\"aria-label\":j,classes:{root:this.getActiveIcon(l,\"filter\")},disabled:\"disabled\"===_filterInstanceProperty__default[\"default\"](i),onClick:_bindInstanceProperty__default[\"default\"](r=this.setActiveIcon).call(r,null,\"filter\")},React__default[\"default\"].createElement(E,null))),content:React__default[\"default\"].createElement(S,{customFooter:i.customFilterDialogFooter,columns:s,options:i,filterList:p,filterData:c,onFilterUpdate:u,onFilterReset:d,handleClose:function(){o.setState({hideFilterPopover:!0});},updateFilterByType:I,components:y})}),i.customToolbar&&i.customToolbar({displayData:this.props.displayData})))}}]),r}(React__default[\"default\"].Component);var DefaultTableToolbar = mui.withStyles(TableToolbar,defaultToolbarStyles,{name:\"MUIDataTableToolbar\"});\n\nfunction _createSuper$2(e){var t=_isNativeReflectConstruct$2();return function(){var r,o=_getPrototypeOf__default[\"default\"](e);if(t){var a=_getPrototypeOf__default[\"default\"](this).constructor;r=_Reflect$construct__default[\"default\"](o,arguments,a);}else r=o.apply(this,arguments);return _possibleConstructorReturn__default[\"default\"](this,r)}}function _isNativeReflectConstruct$2(){if(\"undefined\"==typeof Reflect||!_Reflect$construct__default[\"default\"])return !1;if(_Reflect$construct__default[\"default\"].sham)return !1;if(\"function\"==typeof Proxy)return !0;try{return Boolean.prototype.valueOf.call(_Reflect$construct__default[\"default\"](Boolean,[],(function(){}))),!0}catch(e){return !1}}var defaultToolbarSelectStyles=function(e){return {root:{backgroundColor:e.palette.background.default,flex:\"1 1 100%\",display:\"flex\",position:\"relative\",zIndex:120,justifyContent:\"space-between\",alignItems:\"center\",paddingTop:\"function\"==typeof e.spacing?e.spacing(1):e.spacing.unit,paddingBottom:\"function\"==typeof e.spacing?e.spacing(1):e.spacing.unit,\"@media print\":{display:\"none\"}},title:{paddingLeft:\"26px\"},iconButton:{marginRight:\"24px\"},deleteIcon:{}}},TableToolbarSelect=function(e){_inherits__default[\"default\"](r,e);var t=_createSuper$2(r);function r(){var e,o;_classCallCheck__default[\"default\"](this,r);for(var a=arguments.length,n=new Array(a),s=0;s<a;s++)n[s]=arguments[s];return o=t.call.apply(t,_concatInstanceProperty__default[\"default\"](e=[this]).call(e,n)),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"handleCustomSelectedRows\",(function(e){if(!_Array$isArray__default[\"default\"](e))throw new TypeError('\"selectedRows\" must be an \"array\", but it\\'s \"'.concat(_typeof__default[\"default\"](e),'\"'));if(_someInstanceProperty__default[\"default\"](e).call(e,(function(e){return \"number\"!=typeof e})))throw new TypeError('Array \"selectedRows\" must contain only numbers');var t=o.props.options;if(e.length>1&&\"single\"===t.selectableRows)throw new Error('Can not select more than one row when \"selectableRows\" is \"single\"');o.props.selectRowUpdate(\"custom\",e);})),o}return _createClass__default[\"default\"](r,[{key:\"render\",value:function(){var e=this.props,t=e.classes,r=e.onRowsDelete,o=e.selectedRows,a=e.options,n=e.displayData,s=e.components,l=void 0===s?{}:s,i=a.textLabels.selectedRows,c=l.Tooltip||MuiTooltip__default[\"default\"];return React__default[\"default\"].createElement(Paper__default[\"default\"],{className:t.root},React__default[\"default\"].createElement(\"div\",null,React__default[\"default\"].createElement(Typography__default[\"default\"],{variant:\"subtitle1\",className:t.title},o.data.length,\" \",i.text)),a.customToolbarSelect?a.customToolbarSelect(o,n,this.handleCustomSelectedRows):React__default[\"default\"].createElement(c,{title:i.delete},React__default[\"default\"].createElement(IconButton__default[\"default\"],{className:t.iconButton,onClick:r,\"aria-label\":i.deleteAria},React__default[\"default\"].createElement(DeleteIcon__default[\"default\"],{className:t.deleteIcon}))))}}]),r}(React__default[\"default\"].Component);_defineProperty__default[\"default\"](TableToolbarSelect,\"propTypes\",{options:PropTypes__default[\"default\"].object.isRequired,rowSelected:PropTypes__default[\"default\"].bool,onRowsDelete:PropTypes__default[\"default\"].func,classes:PropTypes__default[\"default\"].object});var DefaultTableToolbarSelect = mui.withStyles(TableToolbarSelect,defaultToolbarSelectStyles,{name:\"MUIDataTableToolbarSelect\"});\n\nvar getTextLabels=function(){return {body:{noMatch:\"Sorry, no matching records found\",toolTip:\"Sort\"},pagination:{next:\"Next Page\",previous:\"Previous Page\",rowsPerPage:\"Rows per page:\",displayRows:\"of\",jumpToPage:\"Jump to Page:\"},toolbar:{search:\"Search\",downloadCsv:\"Download CSV\",print:\"Print\",viewColumns:\"View Columns\",filterTable:\"Filter Table\"},filter:{all:\"All\",title:\"FILTERS\",reset:\"RESET\"},viewColumns:{title:\"Show Columns\",titleAria:\"Show/Hide Table Columns\"},selectedRows:{text:\"row(s) selected\",delete:\"Delete\",deleteAria:\"Delete Selected Rows\"}}};\n\nvar isBrowser=\"undefined\"!=typeof window&&void 0!==window.document;var load=function(o){if(isBrowser)return JSON.parse(window.localStorage.getItem(o));void 0===o||console.warn(\"storageKey support only on browser\");};\n\nvar _excluded$1=[\"selectedRows\",\"data\",\"displayData\"];var save=function(e,t){t.selectedRows,t.data,t.displayData;var o=_objectWithoutProperties__default[\"default\"](t,_excluded$1);window.localStorage.setItem(e,_JSON$stringify__default[\"default\"](o));};\n\nvar _excluded=[\"columns\",\"data\",\"displayData\",\"filterData\"];function ownKeys(e,t){var o=_Object$keys__default[\"default\"](e);if(_Object$getOwnPropertySymbols__default[\"default\"]){var s=_Object$getOwnPropertySymbols__default[\"default\"](e);t&&(s=_filterInstanceProperty__default[\"default\"](s).call(s,(function(t){return _Object$getOwnPropertyDescriptor__default[\"default\"](e,t).enumerable}))),o.push.apply(o,s);}return o}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var o,s,a=null!=arguments[t]?arguments[t]:{};t%2?_forEachInstanceProperty__default[\"default\"](o=ownKeys(Object(a),!0)).call(o,(function(t){_defineProperty__default[\"default\"](e,t,a[t]);})):_Object$getOwnPropertyDescriptors__default[\"default\"]?_Object$defineProperties__default[\"default\"](e,_Object$getOwnPropertyDescriptors__default[\"default\"](a)):_forEachInstanceProperty__default[\"default\"](s=ownKeys(Object(a))).call(s,(function(t){_Object$defineProperty__default[\"default\"](e,t,_Object$getOwnPropertyDescriptor__default[\"default\"](a,t));}));}return e}function _createSuper$1(e){var t=_isNativeReflectConstruct$1();return function(){var o,s=_getPrototypeOf__default[\"default\"](e);if(t){var a=_getPrototypeOf__default[\"default\"](this).constructor;o=_Reflect$construct__default[\"default\"](s,arguments,a);}else o=s.apply(this,arguments);return _possibleConstructorReturn__default[\"default\"](this,o)}}function _isNativeReflectConstruct$1(){if(\"undefined\"==typeof Reflect||!_Reflect$construct__default[\"default\"])return !1;if(_Reflect$construct__default[\"default\"].sham)return !1;if(\"function\"==typeof Proxy)return !0;try{return Boolean.prototype.valueOf.call(_Reflect$construct__default[\"default\"](Boolean,[],(function(){}))),!0}catch(e){return !1}}var defaultTableStyles=function(e){return {root:{\"& .datatables-noprint\":{\"@media print\":{display:\"none\"}}},paper:{isolation:\"isolate\"},paperResponsiveScrollFullHeightFullWidth:{position:\"absolute\"},tableRoot:{outline:\"none\"},responsiveBase:{overflow:\"auto\",\"@media print\":{height:\"auto !important\"}},responsiveScroll:{overflow:\"auto\",height:\"100%\"},responsiveScrollMaxHeight:{overflow:\"auto\",height:\"100%\"},responsiveScrollFullHeight:{height:\"100%\"},responsiveStacked:_defineProperty__default[\"default\"]({overflow:\"auto\"},e.breakpoints.down(\"md\"),{overflow:\"hidden\"}),responsiveStackedFullWidth:{},caption:{position:\"absolute\",left:\"-3000px\"},liveAnnounce:{border:\"0\",clip:\"rect(0 0 0 0)\",height:\"1px\",margin:\"-1px\",overflow:\"hidden\",padding:\"0\",position:\"absolute\",width:\"1px\"}}},TABLE_LOAD={INITIAL:1,UPDATE:2},TOOLBAR_ITEMS=[\"title\",\"filter\",\"search\",\"print\",\"download\",\"viewColumns\",\"customToolbar\"],hasToolbarItem=function(e,t){return e.title=t,!isUndefined__default[\"default\"](find__default[\"default\"](TOOLBAR_ITEMS,(function(t){return e[t]})))},STP={REPLACE:\"replace\",ABOVE:\"above\",NONE:\"none\",ALWAYS:\"always\"},MUIDataTable=function(e){_inherits__default[\"default\"](o,e);var t=_createSuper$1(o);function o(e){var s,a;_classCallCheck__default[\"default\"](this,o),a=t.call(this,e),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"getDefaultOptions\",(function(){return {caseSensitive:!1,consoleWarnings:!0,disableToolbarSelect:!1,download:!0,downloadOptions:{filename:\"tableDownload.csv\",separator:\",\"},draggableColumns:{enabled:!1,transitionTime:300},elevation:4,enableNestedDataAccess:\"\",expandableRows:!1,expandableRowsHeader:!0,expandableRowsOnClick:!1,filter:!0,filterArrayFullMatch:!0,filterType:\"dropdown\",fixedHeader:!0,fixedSelectColumn:!0,pagination:!0,print:!0,resizableColumns:!1,responsive:\"vertical\",rowHover:!0,rowsPerPageOptions:[10,15,100],search:!0,selectableRows:\"multiple\",selectableRowsHideCheckboxes:!1,selectableRowsOnClick:!1,selectableRowsHeader:!0,serverSide:!1,serverSideFilterList:null,setTableProps:function(){return {}},sort:!0,sortFilterList:!0,tableBodyHeight:\"auto\",tableBodyMaxHeight:null,sortOrder:{},textLabels:getTextLabels(),viewColumns:!0,selectToolbarPlacement:STP.REPLACE}})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"warnDep\",(function(e,t){warnDeprecated(e,a.options.consoleWarnings);})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"warnInfo\",(function(e,t){warnInfo(e,a.options.consoleWarnings);})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"handleOptionDeprecation\",(function(e){var t,o,s,r;(\"boolean\"==typeof a.options.selectableRows&&(a.warnDep(\"Using a boolean for selectableRows has been deprecated. Please use string option: multiple | single | none\"),a.options.selectableRows=a.options.selectableRows?\"multiple\":\"none\"),-1===_indexOfInstanceProperty__default[\"default\"](t=[\"standard\",\"vertical\",\"verticalAlways\",\"simple\"]).call(t,a.options.responsive))&&(-1!==_indexOfInstanceProperty__default[\"default\"](s=[\"scrollMaxHeight\",\"scrollFullHeight\",\"stacked\",\"stackedFullWidth\",\"scrollFullHeightFullWidth\",\"scroll\"]).call(s,a.options.responsive)?a.warnDep(a.options.responsive+\" has been deprecated, but will still work in version 3.x. Please use string option: standard | vertical | simple. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md\"):a.warnInfo(a.options.responsive+\" is not recognized as a valid input for responsive option. Please use string option: standard | vertical | simple. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md\"));(a.options.onRowsSelect&&a.warnDep(\"onRowsSelect has been renamed onRowSelectionChange. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md\"),a.options.onRowsExpand&&a.warnDep(\"onRowsExpand has been renamed onRowExpansionChange. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md\"),a.options.fixedHeaderOptions&&(void 0!==a.options.fixedHeaderOptions.yAxis&&void 0===a.options.fixedHeader&&(a.options.fixedHeader=a.options.fixedHeaderOptions.yAxis),void 0!==a.options.fixedHeaderOptions.xAxis&&void 0===a.options.fixedSelectColumn&&(a.options.fixedSelectColumn=a.options.fixedHeaderOptions.xAxis),a.warnDep(\"fixedHeaderOptions will still work but has been deprecated in favor of fixedHeader and fixedSelectColumn. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md\")),a.options.serverSideFilterList&&a.warnDep(\"serverSideFilterList will still work but has been deprecated in favor of the confirmFilters option. See this example for details: https://github.com/gregnb/mui-datatables/blob/master/examples/serverside-filters/index.js More info here: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md\"),_mapInstanceProperty__default[\"default\"](o=e.columns).call(o,(function(e){e.options&&e.options.customFilterListRender&&a.warnDep(\"The customFilterListRender option has been deprecated. It is being replaced by customFilterListOptions.render (Specify customFilterListOptions: { render: Function } in column options.)\");})),!0===a.options.disableToolbarSelect&&a.warnDep('disableToolbarSelect has been deprecated but will still work in version 3.x. It is being replaced by \"selectToolbarPlacement\"=\"none\". More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md'),_Object$values__default[\"default\"])&&(-1===_indexOfInstanceProperty__default[\"default\"](r=_Object$values__default[\"default\"](STP)).call(r,a.options.selectToolbarPlacement)&&a.warnDep(\"Invalid option value for selectToolbarPlacement. Please check the documentation: https://github.com/gregnb/mui-datatables#options\"));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"setTableAction\",(function(e){\"function\"==typeof a.options.onTableChange&&a.options.onTableChange(e,a.state),a.options.storageKey&&save(a.options.storageKey,a.state);})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"setTableInit\",(function(e){\"function\"==typeof a.options.onTableInit&&a.options.onTableInit(e,a.state);})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"setHeadCellRef\",(function(e,t,o){a.draggableHeadCellRefs[e]=o,a.resizeHeadCellRefs[t]=o;})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"getTableContentRef\",(function(){return a.tableContent.current})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"buildColumns\",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=arguments.length>2?arguments[2]:void 0,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],r=[],n=[],i=[],l=[];return _forEachInstanceProperty__default[\"default\"](e).call(e,(function(e,o){var s={display:\"true\",empty:!1,filter:!0,sort:!0,print:!0,searchable:!0,download:!0,viewColumns:!0,sortCompare:null,sortThirdClickReset:!1,sortDescFirst:!1};l.push(o);var p=_objectSpread({},e.options);\"object\"===_typeof__default[\"default\"](e)?(p&&(void 0!==p.display&&(p.display=p.display.toString()),(null===p.sortDirection||p.sortDirection)&&a.warnDep(\"The sortDirection column field has been deprecated. Please use the sortOrder option on the options object. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md\")),void 0===p.display&&t[o]&&t[o].name===e.name&&t[o].display&&(p.display=t[o].display),s=_objectSpread(_objectSpread({name:e.name,label:e.label?e.label:e.name},s),p)):(t[o]&&t[o].display&&(p.display=t[o].display),s=_objectSpread(_objectSpread(_objectSpread({},s),p),{},{name:e,label:e})),r.push(s),n[o]=[],i[o]=[];})),_Array$isArray__default[\"default\"](o)?l=o:_Array$isArray__default[\"default\"](s)&&_Array$isArray__default[\"default\"](e)&&_Array$isArray__default[\"default\"](t)&&e.length===t.length&&(l=s),{columns:r,filterData:n,filterList:i,columnOrder:l}})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"transformData\",(function(e,t){var o=a.options.enableNestedDataAccess;return _Array$isArray__default[\"default\"](t[0])?_mapInstanceProperty__default[\"default\"](t).call(t,(function(t){var o=-1;return _mapInstanceProperty__default[\"default\"](e).call(e,(function(e){return e.empty||o++,e.empty?void 0:t[o]}))})):_mapInstanceProperty__default[\"default\"](t).call(t,(function(t){return _mapInstanceProperty__default[\"default\"](e).call(e,(function(e){return s=t,a=e.name,_reduceInstanceProperty__default[\"default\"](r=o?a.split(o):a.split()).call(r,(function(e,t){return e?e[t]:void 0}),s);var s,a,r;}))}))})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"hasSearchText\",(function(e,t,o){var s=e.toString(),a=t.toString();return o||(a=a.toLowerCase(),s=s.toLowerCase()),_indexOfInstanceProperty__default[\"default\"](s).call(s,a)>=0})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"updateDataCol\",(function(e,t,o){a.setState((function(s){var r,n,i=cloneDeep__default[\"default\"](s.data),l=cloneDeep__default[\"default\"](s.filterData),p=a.getTableMeta(e,t,e,s.columns[t],s.data,s,s.data),c=s.columns[t].customBodyRender(o,p),d=React__default[\"default\"].isValidElement(c)&&c.props.value?c.props.value:s.data[e][t],u=_indexOfInstanceProperty__default[\"default\"](r=l[t]).call(r,d);if(_spliceInstanceProperty__default[\"default\"](n=l[t]).call(n,u,1,d),i[e].data[t]=o,a.options.sortFilterList){var f,b=getCollatorComparator();_sortInstanceProperty__default[\"default\"](f=l[t]).call(f,b);}return {data:i,filterData:l,displayData:a.getDisplayData(s.columns,i,s.filterList,s.searchText,null,a.props)}}));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"getTableMeta\",(function(e,t,o,s,a,r,n){r.columns,r.data,r.displayData,r.filterData;return {rowIndex:e,columnIndex:t,columnData:s,rowData:o,tableData:a,tableState:_objectWithoutProperties__default[\"default\"](r,_excluded),currentTableData:n}})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"toggleViewColumn\",(function(e){a.setState((function(t){var o=cloneDeep__default[\"default\"](t.columns);return o[e].display=\"true\"===o[e].display?\"false\":\"true\",{columns:o}}),(function(){a.setTableAction(\"viewColumnsChange\");var t=a.options.onViewColumnsChange||a.options.onColumnViewChange;t&&t(a.state.columns[e].name,\"true\"===a.state.columns[e].display?\"add\":\"remove\");}));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"updateColumns\",(function(e){a.setState((function(t){return {columns:e}}),(function(){a.setTableAction(\"viewColumnsChange\");var t=a.options.onViewColumnsChange||a.options.onColumnViewChange;t&&t(null,\"update\",e);}));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"toggleSortColumn\",(function(e){a.setState((function(t){var o,s=cloneDeep__default[\"default\"](t.columns),r=t.data,n=s[e].sortDescFirst?\"desc\":\"asc\",i=[\"asc\",\"desc\"];if(s[e].sortDescFirst&&(i=[\"desc\",\"asc\"]),s[e].sortThirdClickReset&&i.push(\"none\"),s[e].name===a.state.sortOrder.name){var l=_indexOfInstanceProperty__default[\"default\"](i).call(i,a.state.sortOrder.direction);-1!==l&&(++l>=i.length&&(l=0),n=i[l]);}var p={name:s[e].name,direction:n},c=a.getSortDirectionLabel(p),d={columns:s,announceText:_concatInstanceProperty__default[\"default\"](o=\"Table now sorted by \".concat(s[e].name,\" : \")).call(o,c),activeColumn:e};if(a.options.serverSide)d=_objectSpread(_objectSpread({},d),{},{data:t.data,displayData:t.displayData,selectedRows:t.selectedRows,sortOrder:p});else {var u=a.sortTable(r,e,n,s[e].sortCompare);d=_objectSpread(_objectSpread({},d),{},{data:u.data,displayData:a.getDisplayData(s,u.data,t.filterList,t.searchText,null,a.props),selectedRows:u.selectedRows,sortOrder:p,previousSelectedRow:null});}return d}),(function(){a.setTableAction(\"sort\"),a.options.onColumnSortChange&&a.options.onColumnSortChange(a.state.sortOrder.name,a.state.sortOrder.direction);}));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"changeRowsPerPage\",(function(e){var t=a.options.count||a.state.displayData.length;a.setState((function(){return {rowsPerPage:e,page:getPageValue(t,e,a.state.page)}}),(function(){a.setTableAction(\"changeRowsPerPage\"),a.options.onChangeRowsPerPage&&a.options.onChangeRowsPerPage(a.state.rowsPerPage);}));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"changePage\",(function(e){a.setState((function(){return {page:e}}),(function(){a.setTableAction(\"changePage\"),a.options.onChangePage&&a.options.onChangePage(a.state.page);}));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"searchClose\",(function(){a.setState((function(e){return {searchText:null,displayData:a.options.serverSide?e.displayData:a.getDisplayData(e.columns,e.data,e.filterList,null,null,a.props)}}),(function(){a.setTableAction(\"search\"),a.options.onSearchChange&&a.options.onSearchChange(a.state.searchText);}));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"searchTextUpdate\",(function(e){a.setState((function(t){return {searchText:e&&e.length?e:null,page:0,displayData:a.options.serverSide?t.displayData:a.getDisplayData(t.columns,t.data,t.filterList,e,null,a.props)}}),(function(){a.setTableAction(\"search\"),a.options.onSearchChange&&a.options.onSearchChange(a.state.searchText);}));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"resetFilters\",(function(){a.setState((function(e){var t,o=_mapInstanceProperty__default[\"default\"](t=e.columns).call(t,(function(){return []}));return {filterList:o,displayData:a.options.serverSide?e.displayData:a.getDisplayData(e.columns,e.data,o,e.searchText,null,a.props)}}),(function(){a.setTableAction(\"resetFilters\"),a.options.onFilterChange&&a.options.onFilterChange(null,a.state.filterList,\"reset\",null);}));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"updateFilterByType\",(function(e,t,o,s,a){var r,n,i,l=_findIndexInstanceProperty__default[\"default\"](r=e[t]).call(r,(function(e){return isEqual__default[\"default\"](e,o)}));switch(s){case\"checkbox\":l>=0?_spliceInstanceProperty__default[\"default\"](n=e[t]).call(n,l,1):e[t].push(o);break;case\"chip\":l>=0?_spliceInstanceProperty__default[\"default\"](i=e[t]).call(i,l,1):e[t].push(o);break;case\"multiselect\":e[t]=\"\"===o?[]:o;break;case\"dropdown\":e[t]=o;break;case\"custom\":a?e=a(e,l,t):e[t]=o;break;default:e[t]=l>=0||\"\"===o?[]:[o];}})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"filterUpdate\",(function(e,t,o,s,r,n){a.setState((function(o){var n=cloneDeep__default[\"default\"](o.filterList);return a.updateFilterByType(n,e,t,s,r),{page:0,filterList:n,displayData:a.options.serverSide?o.displayData:a.getDisplayData(o.columns,o.data,n,o.searchText,null,a.props),previousSelectedRow:null}}),(function(){a.setTableAction(\"filterChange\"),a.options.onFilterChange&&a.options.onFilterChange(o,a.state.filterList,s,e,a.state.displayData),n&&n(a.state.filterList);}));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"toggleAllExpandableRows\",(function(){var e=_toConsumableArray__default[\"default\"](a.state.expandedRows.data),t=a.options.isRowExpandable,o=[];if(e.length>0)for(var s=e.length-1;s>=0;s--){var r=e[s];(!t||t&&t(r.dataIndex,a.state.expandedRows))&&o.push(_spliceInstanceProperty__default[\"default\"](e).call(e,s,1));}else for(var n=0;n<a.state.data.length;n++){var i=a.state.data[n];if((!t||t&&t(i.dataIndex,a.state.expandedRows))&&!0!==a.state.expandedRows.lookup[i.index]){var l={index:n,dataIndex:i.index};e.push(l),o.push(l);}}a.setState({expandedRows:{lookup:buildMap(e),data:e}},(function(){var e;(a.setTableAction(\"expandRow\"),a.options.onRowExpansionChange)&&a.options.onRowExpansionChange(o,a.state.expandedRows.data,_mapInstanceProperty__default[\"default\"](e=a.state.expandedRows.data).call(e,(function(e){return e.dataIndex})));}));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"areAllRowsExpanded\",(function(){return a.state.expandedRows.data.length===a.state.data.length})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"updateColumnOrder\",(function(e,t,o){a.setState((function(t){return {columnOrder:e}}),(function(){a.setTableAction(\"columnOrderChange\"),a.options.onColumnOrderChange&&a.options.onColumnOrderChange(a.state.columnOrder,t,o);}));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"selectRowDelete\",(function(){var e=a.state,t=e.selectedRows,o=e.data,s=e.filterList,r=buildMap(t.data),n=_filterInstanceProperty__default[\"default\"](o).call(o,(function(e){var t=e.index;return !r[t]}));a.options.onRowsDelete&&!1===a.options.onRowsDelete(t,_mapInstanceProperty__default[\"default\"](n).call(n,(function(e){return e.data})))||a.setTableData({columns:a.props.columns,data:n,options:{filterList:s}},TABLE_LOAD.UPDATE,!0,(function(){a.setTableAction(\"rowDelete\");}));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"toggleExpandRow\",(function(e){for(var t=e.dataIndex,o=a.options.isRowExpandable,s=a.state.expandedRows,r=_toConsumableArray__default[\"default\"](s.data),n=!1,i=!1,l=[],p=0;p<r.length;p++)if(r[p].dataIndex===t){n=!0;break}n?(o&&o(t,s)||!o)&&(l=_spliceInstanceProperty__default[\"default\"](r).call(r,p,1),i=!0):o&&o(t,s)?r.push(e):o||r.push(e),a.setState({curExpandedRows:i?l:[e],expandedRows:{lookup:buildMap(r),data:r}},(function(){(a.setTableAction(\"rowExpansionChange\"),a.options.onRowExpansionChange||a.options.onRowsExpand)&&(a.options.onRowExpansionChange||a.options.onRowsExpand)(a.state.curExpandedRows,a.state.expandedRows.data);}));})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](a),\"selectRowUpdate\",(function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],s=a.options.selectableRows;if(\"none\"!==s)if(\"head\"===e){var r=a.options.isRowSelectable;a.setState((function(e){var t,o=e.displayData,s=e.selectedRows,n=e.selectedRows.data.length,i=n===o.length||n<o.length&&n>0,l=_reduceInstanceProperty__default[\"default\"](o).call(o,(function(e,t,a){return (!r||r(o[a].dataIndex,s))&&e.push({index:a,dataIndex:o[a].dataIndex}),e}),[]),p=_toConsumableArray__default[\"default\"](l),c=buildMap(p);if(a.options.selectToolbarPlacement===STP.NONE)if(n>o.length)i=!0;else for(var d=0;d<o.length;d++)c[o[d].dataIndex]||(i=!0);i&&(p=_filterInstanceProperty__default[\"default\"](t=e.selectedRows.data).call(t,(function(e){var t=e.dataIndex;return !c[t]})),c=buildMap(p));return {curSelectedRows:p,selectedRows:{data:p,lookup:c},previousSelectedRow:null}}),(function(){var e;if(a.setTableAction(\"rowSelectionChange\"),a.options.onRowSelectionChange)a.options.onRowSelectionChange(a.state.curSelectedRows,a.state.selectedRows.data,_mapInstanceProperty__default[\"default\"](e=a.state.selectedRows.data).call(e,(function(e){return e.dataIndex})));else if(a.options.onRowsSelect){var t;a.options.onRowsSelect(a.state.curSelectedRows,a.state.selectedRows.data,_mapInstanceProperty__default[\"default\"](t=a.state.selectedRows.data).call(t,(function(e){return e.dataIndex})));}}));}else if(\"cell\"===e)a.setState((function(e){for(var a=t.dataIndex,r=_toConsumableArray__default[\"default\"](e.selectedRows.data),n=-1,i=0;i<r.length;i++)if(r[i].dataIndex===a){n=i;break}if(n>=0){if(_spliceInstanceProperty__default[\"default\"](r).call(r,n,1),o.length>0)for(var l=buildMap(o),p=r.length-1;p>=0;p--)l[r[p].dataIndex]&&_spliceInstanceProperty__default[\"default\"](r).call(r,p,1);}else if(\"single\"===s)r=[t];else if(r.push(t),o.length>0){var c=buildMap(r);_forEachInstanceProperty__default[\"default\"](o).call(o,(function(e){c[e.dataIndex]||r.push(e);}));}return {selectedRows:{lookup:buildMap(r),data:r},previousSelectedRow:t}}),(function(){var e;if(a.setTableAction(\"rowSelectionChange\"),a.options.onRowSelectionChange)a.options.onRowSelectionChange([t],a.state.selectedRows.data,_mapInstanceProperty__default[\"default\"](e=a.state.selectedRows.data).call(e,(function(e){return e.dataIndex})));else if(a.options.onRowsSelect){var o;a.options.onRowsSelect([t],a.state.selectedRows.data,_mapInstanceProperty__default[\"default\"](o=a.state.selectedRows.data).call(o,(function(e){return e.dataIndex})));}}));else if(\"custom\"===e){var n=a.state.displayData,i=_mapInstanceProperty__default[\"default\"](t).call(t,(function(e){return {index:e,dataIndex:n[e].dataIndex}})),l=buildMap(i);a.setState({selectedRows:{data:i,lookup:l},previousSelectedRow:null},(function(){var e;if(a.setTableAction(\"rowSelectionChange\"),a.options.onRowSelectionChange)a.options.onRowSelectionChange(a.state.selectedRows.data,a.state.selectedRows.data,_mapInstanceProperty__default[\"default\"](e=a.state.selectedRows.data).call(e,(function(e){return e.dataIndex})));else if(a.options.onRowsSelect){var t;a.options.onRowsSelect(a.state.selectedRows.data,a.state.selectedRows.data,_mapInstanceProperty__default[\"default\"](t=a.state.selectedRows.data).call(t,(function(e){return e.dataIndex})));}}));}})),a.tableRef=React__default[\"default\"].createRef(),a.tableContent=React__default[\"default\"].createRef(),a.draggableHeadCellRefs={},a.resizeHeadCellRefs={},a.timers={},a.setHeadResizeable=function(){},a.updateDividers=function(){};a.mergeDefaultOptions(e);var r=load(e.options.storageKey);return a.state=_Object$assign__default[\"default\"]({activeColumn:null,announceText:null,count:0,columns:[],expandedRows:{data:[],lookup:{}},data:[],displayData:[],filterData:[],filterList:[],page:0,previousSelectedRow:null,rowsPerPage:10,searchProps:{},searchText:null,selectedRows:{data:[],lookup:{}},showResponsive:!1,sortOrder:{}},r||a.getInitTableOptions()),a.setTableData=_bindInstanceProperty__default[\"default\"](s=a.setTableData).call(s,_assertThisInitialized__default[\"default\"](a)),a.setTableData(e,TABLE_LOAD.INITIAL,!0,null,!0),a}return _createClass__default[\"default\"](o,[{key:\"componentDidMount\",value:function(){this.setHeadResizeable(this.resizeHeadCellRefs,this.tableRef),this.props.options.searchText&&!this.props.options.serverSide&&this.setState({page:0}),this.setTableInit(\"tableInitialized\");}},{key:\"componentDidUpdate\",value:function(e){var t=this;if(this.props.data!==e.data||this.props.columns!==e.columns||this.props.options!==e.options){this.updateOptions(this.options,this.props);var o=this.props.data!==e.data;this.props.data&&e.data&&(o=o&&this.props.data.length===e.data.length),this.setTableData(this.props,TABLE_LOAD.INITIAL,o,(function(){t.setTableAction(\"propsUpdate\");}));}this.props.options.searchText===e.options.searchText||this.props.options.serverSide||this.setState({page:0}),(!0===this.options.resizableColumns||this.options.resizableColumns&&this.options.resizableColumns.enabled)&&(this.setHeadResizeable(this.resizeHeadCellRefs,this.tableRef),this.updateDividers());}},{key:\"updateOptions\",value:function(e,t){!0===t.options.disableToolbarSelect&&void 0===t.options.selectToolbarPlacement&&(t.options.selectToolbarPlacement=STP.NONE),t.options.tableId||(t.options.tableId=(Math.random()+\"\").replace(/\\./,\"\")),this.options=assignwith__default[\"default\"](e,t.options,(function(e,t,o){if(\"textLabels\"===o||\"downloadOptions\"===o)return merge__default[\"default\"](e,t)})),this.handleOptionDeprecation(t);}},{key:\"mergeDefaultOptions\",value:function(e){var t=this.getDefaultOptions(),o=_Object$assign__default[\"default\"]({},e);o.options=o.options||{},this.updateOptions(t,o);}},{key:\"validateOptions\",value:function(e){var t;if(e.serverSide&&void 0===e.onTableChange)throw Error(\"onTableChange callback must be provided when using serverSide option\");if(e.expandableRows&&void 0===e.renderExpandableRow)throw Error(\"renderExpandableRow must be provided when using expandableRows option\");e.rowsSelected&&_Array$isArray__default[\"default\"](e.rowsSelected)&&_someInstanceProperty__default[\"default\"](t=e.rowsSelected).call(t,isNaN)&&warnInfo(\"When using the rowsSelected option, must be provided an array of numbers only.\");}},{key:\"getInitTableOptions\",value:function(){var e=this,t=[\"rowsPerPage\",\"page\",\"rowsSelected\",\"rowsPerPageOptions\"],o=_reduceInstanceProperty__default[\"default\"](t).call(t,(function(t,o){return void 0!==e.options[o]&&(t[o]=e.options[o]),t}),{});return this.validateOptions(o),o}},{key:\"setTableData\",value:function(e,t,o){var s,a,r,n=this,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},l=arguments.length>4&&void 0!==arguments[4]&&arguments[4],p=[],c=this.buildColumns(e.columns,this.state.columns,this.options.columnOrder,this.state.columnOrder),d=c.columns,u=c.filterData,f=c.filterList,b=c.columnOrder,m=null,h=\"none\";this.options.sortOrder&&this.options.sortOrder.direction&&this.options.sortOrder.name?a=_Object$assign__default[\"default\"]({},this.options.sortOrder):(a=_Object$assign__default[\"default\"]({},this.state.sortOrder)).direction||_forEachInstanceProperty__default[\"default\"](r=e.columns).call(r,(function(e,t){!e.options||\"asc\"!==e.options.sortDirection&&\"desc\"!==e.options.sortDirection||(a.name=e.name,a.sortDirection=e.sortDirection);}));var y=t===TABLE_LOAD.INITIAL?this.transformData(d,e.data):e.data,T=t===TABLE_LOAD.INITIAL?this.options.searchText:null;void 0===this.options.searchText&&void 0!==this.state.searchText&&(T=this.state.searchText);var g=this.state.rowsPerPage;\"number\"==typeof this.options.rowsPerPage&&(g=this.options.rowsPerPage);var P=this.state.page;\"number\"==typeof this.options.page&&(P=this.options.page),_forEachInstanceProperty__default[\"default\"](d).call(d,(function(e,o){for(var r=0;r<y.length;r++){var i=t===TABLE_LOAD.INITIAL?y[r][o]:y[r].data[o];if(void 0===p[r]&&p.push({index:t===TABLE_LOAD.INITIAL?r:y[r].index,data:t===TABLE_LOAD.INITIAL?y[r]:y[r].data}),!1!==_filterInstanceProperty__default[\"default\"](e)){var l;if(\"function\"==typeof e.customBodyRender){var c=p[r].data;s=n.getTableMeta(r,o,c,e,y,n.state,p);var d=e.customBodyRender(i,s);React__default[\"default\"].isValidElement(d)&&d.props.value?i=d.props.value:\"string\"==typeof d&&(i=d);}\"object\"!==_typeof__default[\"default\"](i)||_Array$isArray__default[\"default\"](i)||null===i||(i=i.toString?i.toString():\"\"),_indexOfInstanceProperty__default[\"default\"](l=u[o]).call(l,i)<0&&!_Array$isArray__default[\"default\"](i)?u[o].push(i):_Array$isArray__default[\"default\"](i)&&_forEachInstanceProperty__default[\"default\"](i).call(i,(function(e){var t,s;s=\"object\"===_typeof__default[\"default\"](e)&&null!==e||\"function\"==typeof e?e.toString?e.toString():\"\":e,_indexOfInstanceProperty__default[\"default\"](t=u[o]).call(t,s)<0&&u[o].push(s);}));}}if(e.filterOptions&&(_Array$isArray__default[\"default\"](e.filterOptions)?(u[o]=cloneDeep__default[\"default\"](e.filterOptions),n.warnDep(\"filterOptions must now be an object. see https://github.com/gregnb/mui-datatables/tree/master/examples/customize-filter example\")):_Array$isArray__default[\"default\"](e.filterOptions.names)&&(u[o]=cloneDeep__default[\"default\"](e.filterOptions.names))),e.filterList?f[o]=cloneDeep__default[\"default\"](e.filterList):n.state.filterList&&n.state.filterList[o]&&n.state.filterList[o].length>0&&(f[o]=cloneDeep__default[\"default\"](n.state.filterList[o])),n.options.sortFilterList){var b,T=getCollatorComparator();_sortInstanceProperty__default[\"default\"](b=u[o]).call(b,T);}e.name===a.name&&(h=a.direction,m=o);}));var w={data:[],lookup:{}},v={data:[],lookup:{}};{var R,_,x;if(this.options.rowsSelected&&this.options.rowsSelected.length&&\"multiple\"===this.options.selectableRows)_forEachInstanceProperty__default[\"default\"](R=_filterInstanceProperty__default[\"default\"](_=this.options.rowsSelected).call(_,(function(e){return 0===e||Number(e)&&e>0}))).call(R,(function(e){for(var t=e,o=0;o<n.state.displayData.length;o++)if(n.state.displayData[o].dataIndex===e){t=o;break}w.data.push({index:t,dataIndex:e}),w.lookup[e]=!0;}));else if(this.options.rowsSelected&&1===this.options.rowsSelected.length&&\"single\"===this.options.selectableRows){for(var I=this.options.rowsSelected[0],S=0;S<this.state.displayData.length;S++)if(this.state.displayData[S].dataIndex===this.options.rowsSelected[0]){I=S;break}w.data.push({index:I,dataIndex:this.options.rowsSelected[0]}),w.lookup[this.options.rowsSelected[0]]=!0;}else this.options.rowsSelected&&this.options.rowsSelected.length>1&&\"single\"===this.options.selectableRows?console.error('Multiple values provided for selectableRows, but selectableRows set to \"single\". Either supply only a single value or use \"multiple\".'):void 0===this.options.rowsSelected&&!1===o&&this.state.selectedRows&&(w=_Object$assign__default[\"default\"]({},this.state.selectedRows));if(this.options.rowsExpanded&&this.options.rowsExpanded.length&&this.options.expandableRows)_forEachInstanceProperty__default[\"default\"](x=this.options.rowsExpanded).call(x,(function(e){for(var t=e,o=0;o<n.state.displayData.length;o++)if(n.state.displayData[o].dataIndex===e){t=o;break}v.data.push({index:t,dataIndex:e}),v.lookup[e]=!0;}));else void 0===this.options.rowsExpanded&&!1===o&&this.state.expandedRows&&(v=_Object$assign__default[\"default\"]({},this.state.expandedRows));}if(!this.options.serverSide&&null!==m){var O=this.sortTable(p,m,h,d[m].sortCompare);p=O.data;}var D={columns:d,filterData:u,filterList:f,searchText:T,selectedRows:w,expandedRows:v,count:this.options.count,data:p,sortOrder:a,rowsPerPage:g,page:P,displayData:this.getDisplayData(d,p,f,T,s,e),columnOrder:b};l?this.state=_Object$assign__default[\"default\"]({},this.state,D):this.setState(D,i);}},{key:\"computeDisplayRow\",value:function(e,t,o,s,a,r,n,i,l){for(var p=this,c=!1,d=!1,u=[],f=function(){var i=t[b],f=t[b],m=e[b];if(m.customBodyRenderLite)u.push(m.customBodyRenderLite);else if(m.customBodyRender){var h,y=p.getTableMeta(o,b,t,m,r,_objectSpread(_objectSpread({},p.state),{},{filterList:s,searchText:a}),l),T=m.customBodyRender(f,y,_bindInstanceProperty__default[\"default\"](h=p.updateDataCol).call(h,null,o,b));i=T,f=\"string\"!=typeof T&&T?T.props&&T.props.value?T.props.value:f:T,u.push(i);}else u.push(i);var g=null==f?\"\":f.toString(),P=s[b],w=n.caseSensitive,v=m.filterType||n.filterType;if(P.length||\"custom\"===v)if(m.filterOptions&&m.filterOptions.logic)m.filterOptions.logic(f,P,t)&&(c=!0);else if(\"textField\"!==v||p.hasSearchText(g,P,w)){if(\"textField\"!==v&&!1===_Array$isArray__default[\"default\"](f)&&_indexOfInstanceProperty__default[\"default\"](P).call(P,f)<0)c=!0;else if(\"textField\"!==v&&_Array$isArray__default[\"default\"](f)){if(n.filterArrayFullMatch)_everyInstanceProperty__default[\"default\"](P).call(P,(function(e){return _indexOfInstanceProperty__default[\"default\"](f).call(f,e)>=0}))||(c=!0);else _someInstanceProperty__default[\"default\"](P).call(P,(function(e){return _indexOfInstanceProperty__default[\"default\"](f).call(f,e)>=0}))||(c=!0);}}else c=!0;a&&\"excluded\"!==m.display&&p.hasSearchText(g,a,w)&&\"false\"!==m.display&&m.searchable&&(d=!0);},b=0;b<t.length;b++)f();var m=i.options.customSearch;if(a&&m){var h=m(a,t,e);\"boolean\"!=typeof h?console.error(\"customSearch must return a boolean\"):d=h;}return n.serverSide?(m&&console.warn(\"Server-side filtering is enabled, hence custom search will be ignored.\"),u):c||a&&!d?null:u}},{key:\"getDisplayData\",value:function(e,t,o,s,a,r){for(var n=[],i=a?a.tableData:r.data,l=0;l<t.length;l++){var p=t[l].data,c=this.computeDisplayRow(e,p,l,o,s,i,this.options,r,t);c&&n.push({data:c,dataIndex:t[l].index});}return n}},{key:\"getSortDirectionLabel\",value:function(e){switch(e.direction){case\"asc\":return \"ascending\";case\"desc\":return \"descending\";case\"none\":return \"none\";default:return \"\"}}},{key:\"getTableProps\",value:function(){var e=this.props.classes,t=this.options.setTableProps()||{};return t.className=clsx__default[\"default\"](e.tableRoot,t.className),t}},{key:\"sortTable\",value:function(e,t,o){var s,a=this,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,n=this.options.customSort&&!r,i={selectedRows:this.state.selectedRows},l=n?this.options.customSort(e,t,o||(this.options.sortDescFirst?\"desc\":\"asc\"),i):e;\"none\"===o&&(s=_reduceInstanceProperty__default[\"default\"](e).call(e,(function(e,t){return e[t.index]=t,e}),[]));var p=_mapInstanceProperty__default[\"default\"](l).call(l,(function(e,o){return {data:e.data[t],rowData:e.data,position:o,rowSelected:!!a.state.selectedRows.lookup[e.index]}}));if(!n){var c=r||sortCompare;_sortInstanceProperty__default[\"default\"](p).call(p,c(o));}for(var d=[],u=[],f=0;f<p.length;f++){var b=p[f];d.push(l[b.position]),b.rowSelected&&u.push({index:f,dataIndex:l[b.position].index});}return {data:\"none\"===o?s:d,selectedRows:{lookup:buildMap(u),data:u}}}},{key:\"render\",value:function(){var e,t,o,s,a,r=this,n=this.props,i=n.classes,l=n.className,p=n.title,c=n.components,d=c.TableBody,u=c.TableFilterList,f=c.TableFooter,b=c.TableHead,m=c.TableResize,h=c.TableToolbar,y=c.TableToolbarSelect,T=c.DragDropBackend,g=void 0===T?reactDndHtml5Backend.HTML5Backend:T,P=this.state,w=P.announceText,v=P.activeColumn,R=P.data,_=P.displayData,x=P.columns,I=P.page,S=P.filterData,O=P.filterList,D=P.selectedRows,C=P.previousSelectedRow,j=P.expandedRows,A=P.searchText,L=P.sortOrder,F=(P.serverSideFilterList,P.columnOrder),E=d||DefaultTableBody,k=u||TableFilterList,H=f||TableFooter,z=b||TableHead,B=m||DefaultTableResize,M=h||DefaultTableToolbar,$=y||DefaultTableToolbarSelect,N=this.state.count||_.length,U=this.options.pagination?this.state.rowsPerPage:_.length,W=hasToolbarItem(this.options,p),V=_mapInstanceProperty__default[\"default\"](x).call(x,(function(e){return {name:e.name,filterType:e.filterType||r.options.filterType}})),q=this.options.responsive,K=_concatInstanceProperty__default[\"default\"](e=\"\".concat(i.paper,\" \")).call(e,l),Y=this.options.tableBodyMaxHeight;switch(q){case\"scroll\":a=i.responsiveScroll,Y=\"499px\";break;case\"scrollMaxHeight\":a=i.responsiveScrollMaxHeight,Y=\"499px\";break;case\"scrollFullHeight\":a=i.responsiveScrollFullHeight,Y=\"none\";break;case\"scrollFullHeightFullWidth\":a=i.responsiveScrollFullHeight,K=_concatInstanceProperty__default[\"default\"](t=\"\".concat(i.paperResponsiveScrollFullHeightFullWidth,\" \")).call(t,l);break;case\"stacked\":a=i.responsiveStacked,Y=\"none\";break;case\"stackedFullWidth\":a=i.responsiveStackedFullWidth,K=_concatInstanceProperty__default[\"default\"](o=\"\".concat(i.paperResponsiveScrollFullHeightFullWidth,\" \")).call(o,l),Y=\"none\";break;default:a=i.responsiveBase;}var G={};Y&&(G.maxHeight=Y),this.options.tableBodyHeight&&(G.height=this.options.tableBodyHeight);var J=this.options.setTableProps&&this.options.setTableProps()||{},Q=clsx__default[\"default\"](i.tableRoot,J.className);delete J.className;var X,Z={};return \"undefined\"!=typeof window&&(Z.context=window),React__default[\"default\"].createElement(Paper__default[\"default\"],{elevation:this.options.elevation,ref:this.tableContent,className:K},(this.options.selectToolbarPlacement===STP.ALWAYS||D.data.length>0&&this.options.selectToolbarPlacement!==STP.NONE)&&React__default[\"default\"].createElement($,{options:this.options,selectedRows:D,onRowsDelete:this.selectRowDelete,displayData:_,selectRowUpdate:this.selectRowUpdate,components:this.props.components}),(0===D.data.length||-1!==_indexOfInstanceProperty__default[\"default\"](s=[STP.ABOVE,STP.NONE]).call(s,this.options.selectToolbarPlacement))&&W&&React__default[\"default\"].createElement(M,{columns:x,columnOrder:F,displayData:_,data:R,filterData:S,filterList:O,filterUpdate:this.filterUpdate,updateFilterByType:this.updateFilterByType,options:this.options,resetFilters:this.resetFilters,searchText:A,searchTextUpdate:this.searchTextUpdate,searchClose:this.searchClose,tableRef:this.getTableContentRef,title:p,toggleViewColumn:this.toggleViewColumn,updateColumns:this.updateColumns,setTableAction:this.setTableAction,components:this.props.components}),React__default[\"default\"].createElement(k,{options:this.options,serverSideFilterList:this.props.options.serverSideFilterList,filterListRenderers:_mapInstanceProperty__default[\"default\"](x).call(x,(function(e){return e.customFilterListOptions&&e.customFilterListOptions.render?e.customFilterListOptions.render:e.customFilterListRender?e.customFilterListRender:function(e){return e}})),customFilterListUpdate:_mapInstanceProperty__default[\"default\"](x).call(x,(function(e){return e.customFilterListOptions&&e.customFilterListOptions.update?e.customFilterListOptions.update:null})),filterList:O,filterUpdate:this.filterUpdate,columnNames:V}),React__default[\"default\"].createElement(\"div\",{style:_objectSpread({position:\"relative\"},G),className:a},(!0===this.options.resizableColumns||this.options.resizableColumns&&this.options.resizableColumns.enabled)&&React__default[\"default\"].createElement(B,{key:N,columnOrder:F,updateDividers:function(e){return r.updateDividers=e},setResizeable:function(e){return r.setHeadResizeable=e},options:this.props.options,tableId:this.options.tableId}),(X=React__default[\"default\"].createElement(MuiTable__default[\"default\"],_extends__default[\"default\"]({ref:function(e){return r.tableRef=e},tabIndex:\"0\",role:\"grid\",className:Q},J),React__default[\"default\"].createElement(\"caption\",{className:i.caption},p),React__default[\"default\"].createElement(z,{columns:x,activeColumn:v,data:_,count:N,page:I,rowsPerPage:U,selectedRows:D,selectRowUpdate:r.selectRowUpdate,toggleSort:r.toggleSortColumn,setCellRef:r.setHeadCellRef,expandedRows:j,areAllRowsExpanded:r.areAllRowsExpanded,toggleAllExpandableRows:r.toggleAllExpandableRows,options:r.options,sortOrder:L,columnOrder:F,updateColumnOrder:r.updateColumnOrder,draggableHeadCellRefs:r.draggableHeadCellRefs,tableRef:r.getTableContentRef,tableId:r.options.tableId,timers:r.timers,components:r.props.components}),React__default[\"default\"].createElement(E,{data:_,count:N,columns:x,page:I,rowsPerPage:U,selectedRows:D,selectRowUpdate:r.selectRowUpdate,previousSelectedRow:C,expandedRows:j,toggleExpandRow:r.toggleExpandRow,options:r.options,columnOrder:F,filterList:O,components:r.props.components,tableId:r.options.tableId}),r.options.customTableBodyFooterRender?r.options.customTableBodyFooterRender({data:_,count:N,columns:x,selectedRows:D,selectableRows:r.options.selectableRows}):null),g?React__default[\"default\"].createElement(reactDnd.DndProvider,_extends__default[\"default\"]({backend:g},Z),X):X)),React__default[\"default\"].createElement(H,{options:this.options,page:I,rowCount:N,rowsPerPage:U,changeRowsPerPage:this.changeRowsPerPage,changePage:this.changePage}),React__default[\"default\"].createElement(\"div\",{className:i.liveAnnounce,\"aria-live\":\"polite\"},w))}}]),o}(React__default[\"default\"].Component);_defineProperty__default[\"default\"](MUIDataTable,\"propTypes\",{title:PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].string,PropTypes__default[\"default\"].element]).isRequired,data:PropTypes__default[\"default\"].array.isRequired,columns:PropTypes__default[\"default\"].PropTypes.arrayOf(PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].string,PropTypes__default[\"default\"].shape({label:PropTypes__default[\"default\"].string,name:PropTypes__default[\"default\"].string.isRequired,options:PropTypes__default[\"default\"].shape({display:PropTypes__default[\"default\"].oneOf([\"true\",\"false\",\"excluded\",\"always\",!0,!1]),empty:PropTypes__default[\"default\"].bool,filter:PropTypes__default[\"default\"].bool,sort:PropTypes__default[\"default\"].bool,print:PropTypes__default[\"default\"].bool,searchable:PropTypes__default[\"default\"].bool,download:PropTypes__default[\"default\"].bool,viewColumns:PropTypes__default[\"default\"].bool,filterList:PropTypes__default[\"default\"].array,filterOptions:PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].array,PropTypes__default[\"default\"].shape({names:PropTypes__default[\"default\"].array,logic:PropTypes__default[\"default\"].func,display:PropTypes__default[\"default\"].func})]),filterType:PropTypes__default[\"default\"].oneOf([\"dropdown\",\"checkbox\",\"multiselect\",\"textField\",\"custom\"]),customHeadRender:PropTypes__default[\"default\"].func,customBodyRender:PropTypes__default[\"default\"].func,customBodyRenderLite:PropTypes__default[\"default\"].func,customHeadLabelRender:PropTypes__default[\"default\"].func,customFilterListOptions:PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].shape({render:PropTypes__default[\"default\"].func,update:PropTypes__default[\"default\"].func})]),customFilterListRender:PropTypes__default[\"default\"].func,setCellProps:PropTypes__default[\"default\"].func,setCellHeaderProps:PropTypes__default[\"default\"].func,sortThirdClickReset:PropTypes__default[\"default\"].bool,sortDescFirst:PropTypes__default[\"default\"].bool})})])).isRequired,options:PropTypes__default[\"default\"].shape({caseSensitive:PropTypes__default[\"default\"].bool,columnOrder:PropTypes__default[\"default\"].array,count:PropTypes__default[\"default\"].number,confirmFilters:PropTypes__default[\"default\"].bool,consoleWarnings:PropTypes__default[\"default\"].bool,customFilterDialogFooter:PropTypes__default[\"default\"].func,customFooter:PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].func,PropTypes__default[\"default\"].element]),customRowRender:PropTypes__default[\"default\"].func,customSearch:PropTypes__default[\"default\"].func,customSearchRender:PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].func,PropTypes__default[\"default\"].element]),customSort:PropTypes__default[\"default\"].func,customToolbar:PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].func,PropTypes__default[\"default\"].element]),customToolbarSelect:PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].func,PropTypes__default[\"default\"].element]),draggableColumns:PropTypes__default[\"default\"].object,enableNestedDataAccess:PropTypes__default[\"default\"].string,expandableRows:PropTypes__default[\"default\"].bool,expandableRowsHeader:PropTypes__default[\"default\"].bool,expandableRowsOnClick:PropTypes__default[\"default\"].bool,disableToolbarSelect:PropTypes__default[\"default\"].bool,download:PropTypes__default[\"default\"].oneOf([!0,!1,\"true\",\"false\",\"disabled\"]),downloadOptions:PropTypes__default[\"default\"].shape({filename:PropTypes__default[\"default\"].string,separator:PropTypes__default[\"default\"].string,filterOptions:PropTypes__default[\"default\"].shape({useDisplayedColumnsOnly:PropTypes__default[\"default\"].bool,useDisplayedRowsOnly:PropTypes__default[\"default\"].bool})}),filter:PropTypes__default[\"default\"].oneOf([!0,!1,\"true\",\"false\",\"disabled\"]),filterArrayFullMatch:PropTypes__default[\"default\"].bool,filterType:PropTypes__default[\"default\"].oneOf([\"dropdown\",\"checkbox\",\"multiselect\",\"textField\",\"custom\"]),fixedHeader:PropTypes__default[\"default\"].bool,fixedSelectColumn:PropTypes__default[\"default\"].bool,getTextLabels:PropTypes__default[\"default\"].func,isRowExpandable:PropTypes__default[\"default\"].func,isRowSelectable:PropTypes__default[\"default\"].func,jumpToPage:PropTypes__default[\"default\"].bool,onDownload:PropTypes__default[\"default\"].func,onFilterChange:PropTypes__default[\"default\"].func,onFilterChipClose:PropTypes__default[\"default\"].func,onFilterConfirm:PropTypes__default[\"default\"].func,onFilterDialogOpen:PropTypes__default[\"default\"].func,onFilterDialogClose:PropTypes__default[\"default\"].func,onRowClick:PropTypes__default[\"default\"].func,onRowsExpand:PropTypes__default[\"default\"].func,onRowExpansionChange:PropTypes__default[\"default\"].func,onRowsSelect:PropTypes__default[\"default\"].func,onRowSelectionChange:PropTypes__default[\"default\"].func,onTableChange:PropTypes__default[\"default\"].func,onTableInit:PropTypes__default[\"default\"].func,page:PropTypes__default[\"default\"].number,pagination:PropTypes__default[\"default\"].bool,print:PropTypes__default[\"default\"].oneOf([!0,!1,\"true\",\"false\",\"disabled\"]),searchProps:PropTypes__default[\"default\"].object,selectableRows:PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].bool,PropTypes__default[\"default\"].oneOf([\"none\",\"single\",\"multiple\"])]),selectableRowsHeader:PropTypes__default[\"default\"].bool,selectableRowsHideCheckboxes:PropTypes__default[\"default\"].bool,selectableRowsOnClick:PropTypes__default[\"default\"].bool,serverSide:PropTypes__default[\"default\"].bool,tableId:PropTypes__default[\"default\"].string,tableBodyHeight:PropTypes__default[\"default\"].string,tableBodyMaxHeight:PropTypes__default[\"default\"].string,renderExpandableRow:PropTypes__default[\"default\"].func,resizableColumns:PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].bool,PropTypes__default[\"default\"].object]),responsive:PropTypes__default[\"default\"].oneOf([\"standard\",\"vertical\",\"verticalAlways\",\"simple\"]),rowHover:PropTypes__default[\"default\"].bool,rowsExpanded:PropTypes__default[\"default\"].array,rowsPerPage:PropTypes__default[\"default\"].number,rowsPerPageOptions:PropTypes__default[\"default\"].array,rowsSelected:PropTypes__default[\"default\"].array,search:PropTypes__default[\"default\"].oneOf([!0,!1,\"true\",\"false\",\"disabled\"]),searchOpen:PropTypes__default[\"default\"].bool,searchAlwaysOpen:PropTypes__default[\"default\"].bool,searchPlaceholder:PropTypes__default[\"default\"].string,searchText:PropTypes__default[\"default\"].string,setFilterChipProps:PropTypes__default[\"default\"].func,setRowProps:PropTypes__default[\"default\"].func,selectToolbarPlacement:PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].bool,PropTypes__default[\"default\"].oneOf([STP.REPLACE,STP.ABOVE,STP.NONE,STP.ALWAYS])]),setTableProps:PropTypes__default[\"default\"].func,sort:PropTypes__default[\"default\"].bool,sortOrder:PropTypes__default[\"default\"].object,storageKey:PropTypes__default[\"default\"].string,viewColumns:PropTypes__default[\"default\"].oneOf([!0,!1,\"true\",\"false\",\"disabled\"])}),className:PropTypes__default[\"default\"].string,components:PropTypes__default[\"default\"].objectOf(PropTypes__default[\"default\"].any)}),_defineProperty__default[\"default\"](MUIDataTable,\"defaultProps\",{title:\"\",options:{},data:[],columns:[],components:{TableBody:DefaultTableBody,TableFilter:DefaultTableFilter,TableFilterList:TableFilterList,TableFooter:TableFooter,TableHead:TableHead,TableResize:DefaultTableResize,TableToolbar:DefaultTableToolbar,TableToolbarSelect:DefaultTableToolbarSelect,Tooltip:MuiTooltip__default[\"default\"],icons:{}}});var MUIDataTable$1 = mui.withStyles(MUIDataTable,defaultTableStyles,{name:\"MUIDataTable\"});\n\nfunction _createSuper(e){var t=_isNativeReflectConstruct();return function(){var r,o=_getPrototypeOf__default[\"default\"](e);if(t){var n=_getPrototypeOf__default[\"default\"](this).constructor;r=_Reflect$construct__default[\"default\"](o,arguments,n);}else r=o.apply(this,arguments);return _possibleConstructorReturn__default[\"default\"](this,r)}}function _isNativeReflectConstruct(){if(\"undefined\"==typeof Reflect||!_Reflect$construct__default[\"default\"])return !1;if(_Reflect$construct__default[\"default\"].sham)return !1;if(\"function\"==typeof Proxy)return !0;try{return Boolean.prototype.valueOf.call(_Reflect$construct__default[\"default\"](Boolean,[],(function(){}))),!0}catch(e){return !1}}function debounce(e,t,r){var o;return function(){var n=this,a=arguments,c=function(){o=null,r||e.apply(n,a);},i=r&&!o;clearTimeout(o),o=_setTimeout__default[\"default\"](c,t),i&&e.apply(n,a);}}var defaultStyles=function(e){return {main:{display:\"flex\",flex:\"1 0 auto\",alignItems:\"center\"},searchIcon:{color:e.palette.text.secondary,marginRight:\"8px\"},searchText:{flex:\"0.8 0\"},clearIcon:{\"&:hover\":{color:e.palette.error.main}}}},_DebounceTableSearch=function(e){_inherits__default[\"default\"](r,e);var t=_createSuper(r);function r(){var e,o;_classCallCheck__default[\"default\"](this,r);for(var n=arguments.length,a=new Array(n),c=0;c<n;c++)a[c]=arguments[c];return o=t.call.apply(t,_concatInstanceProperty__default[\"default\"](e=[this]).call(e,a)),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"handleTextChangeWrapper\",(function(e){return function(t){e(t.target.value);}})),_defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](o),\"onKeyDown\",(function(e){27===e.keyCode&&o.props.onHide();})),o}return _createClass__default[\"default\"](r,[{key:\"componentDidMount\",value:function(){document.addEventListener(\"keydown\",this.onKeyDown,!1);}},{key:\"componentWillUnmount\",value:function(){document.removeEventListener(\"keydown\",this.onKeyDown,!1);}},{key:\"render\",value:function(){var e=this,t=this.props,r=t.classes,o=t.options,n=t.onHide,a=t.searchText,c=debounce((function(t){e.props.onSearch(t);}),t.debounceWait),i=o.searchAlwaysOpen?\"hidden\":\"visible\";return React__default[\"default\"].createElement(Grow__default[\"default\"],{appear:!0,in:!0,timeout:300},React__default[\"default\"].createElement(\"div\",{className:r.main},React__default[\"default\"].createElement(SearchIcon__default[\"default\"],{className:r.searchIcon}),React__default[\"default\"].createElement(TextField__default[\"default\"],_extends__default[\"default\"]({variant:\"standard\",className:r.searchText,autoFocus:!0,InputProps:{\"data-test-id\":o.textLabels.toolbar.search,\"aria-label\":o.textLabels.toolbar.search},defaultValue:a,onChange:this.handleTextChangeWrapper(c),fullWidth:!0,inputRef:function(t){return e.searchField=t},placeholder:o.searchPlaceholder},o.searchProps?o.searchProps:{})),React__default[\"default\"].createElement(IconButton__default[\"default\"],{className:r.clearIcon,style:{visibility:i},onClick:n},React__default[\"default\"].createElement(ClearIcon__default[\"default\"],null))))}}]),r}(React__default[\"default\"].Component),DebounceTableSearch=mui.withStyles(_DebounceTableSearch,defaultStyles,{name:\"MUIDataTableSearch\"});function debounceSearchRender(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:200;return function(t,r,o,n){return React__default[\"default\"].createElement(DebounceTableSearch,{searchText:t,onSearch:r,onHide:o,options:n,debounceWait:e})}}\n\nexports.DebounceTableSearch = DebounceTableSearch;\nexports.ExpandButton = ExpandButton;\nexports.Popover = Popover;\nexports.TableBody = DefaultTableBody;\nexports.TableBodyCell = TableBodyCell;\nexports.TableBodyRow = TableBodyRow$1;\nexports.TableFilter = DefaultTableFilter;\nexports.TableFilterList = TableFilterList;\nexports.TableFooter = TableFooter;\nexports.TableHead = TableHead;\nexports.TableHeadCell = TableHeadCell;\nexports.TableHeadRow = TableHeadRow;\nexports.TablePagination = TablePagination;\nexports.TableResize = DefaultTableResize;\nexports.TableSearch = TableSearch;\nexports.TableSelectCell = TableSelectCell;\nexports.TableToolbar = DefaultTableToolbar;\nexports.TableToolbarSelect = DefaultTableToolbarSelect;\nexports.TableViewCol = TableViewCol;\nexports.debounceSearchRender = debounceSearchRender;\nexports[\"default\"] = MUIDataTable$1;\n//# sourceMappingURL=index.js.map\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mui-datatables/dist/index.js?");

/***/ }),

/***/ "./node_modules/object-assign/index.js":
/*!*********************************************!*\
  !*** ./node_modules/object-assign/index.js ***!
  \*********************************************/
/***/ (function(module) {

"use strict";
eval("/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/object-assign/index.js?");

/***/ }),

/***/ "./node_modules/plotly.js/dist/plotly.js":
/*!***********************************************!*\
  !*** ./node_modules/plotly.js/dist/plotly.js ***!
  \***********************************************/
/***/ (function(module) {

eval("/**\n* plotly.js v2.18.1\n* Copyright 2012-2023, Plotly, Inc.\n* All rights reserved.\n* Licensed under the MIT license\n*/\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse {}\n})(self, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 98847:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_647__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_647__(71828);\nvar rules = {\n  \"X,X div\": \"direction:ltr;font-family:\\\"Open Sans\\\",verdana,arial,sans-serif;margin:0;padding:0;\",\n  \"X input,X button\": \"font-family:\\\"Open Sans\\\",verdana,arial,sans-serif;\",\n  \"X input:focus,X button:focus\": \"outline:none;\",\n  \"X a\": \"text-decoration:none;\",\n  \"X a:hover\": \"text-decoration:none;\",\n  \"X .crisp\": \"shape-rendering:crispEdges;\",\n  \"X .user-select-none\": \"-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;\",\n  \"X svg\": \"overflow:hidden;\",\n  \"X svg a\": \"fill:#447adb;\",\n  \"X svg a:hover\": \"fill:#3c6dc5;\",\n  \"X .main-svg\": \"position:absolute;top:0;left:0;pointer-events:none;\",\n  \"X .main-svg .draglayer\": \"pointer-events:all;\",\n  \"X .cursor-default\": \"cursor:default;\",\n  \"X .cursor-pointer\": \"cursor:pointer;\",\n  \"X .cursor-crosshair\": \"cursor:crosshair;\",\n  \"X .cursor-move\": \"cursor:move;\",\n  \"X .cursor-col-resize\": \"cursor:col-resize;\",\n  \"X .cursor-row-resize\": \"cursor:row-resize;\",\n  \"X .cursor-ns-resize\": \"cursor:ns-resize;\",\n  \"X .cursor-ew-resize\": \"cursor:ew-resize;\",\n  \"X .cursor-sw-resize\": \"cursor:sw-resize;\",\n  \"X .cursor-s-resize\": \"cursor:s-resize;\",\n  \"X .cursor-se-resize\": \"cursor:se-resize;\",\n  \"X .cursor-w-resize\": \"cursor:w-resize;\",\n  \"X .cursor-e-resize\": \"cursor:e-resize;\",\n  \"X .cursor-nw-resize\": \"cursor:nw-resize;\",\n  \"X .cursor-n-resize\": \"cursor:n-resize;\",\n  \"X .cursor-ne-resize\": \"cursor:ne-resize;\",\n  \"X .cursor-grab\": \"cursor:-webkit-grab;cursor:grab;\",\n  \"X .modebar\": \"position:absolute;top:2px;right:2px;\",\n  \"X .ease-bg\": \"-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;\",\n  \"X .modebar--hover>:not(.watermark)\": \"opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;\",\n  \"X:hover .modebar--hover .modebar-group\": \"opacity:1;\",\n  \"X .modebar-group\": \"float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;\",\n  \"X .modebar-btn\": \"position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;\",\n  \"X .modebar-btn svg\": \"position:relative;top:2px;\",\n  \"X .modebar.vertical\": \"display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;\",\n  \"X .modebar.vertical svg\": \"top:-1px;\",\n  \"X .modebar.vertical .modebar-group\": \"display:block;float:none;padding-left:0px;padding-bottom:8px;\",\n  \"X .modebar.vertical .modebar-group .modebar-btn\": \"display:block;text-align:center;\",\n  \"X [data-title]:before,X [data-title]:after\": \"position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;\",\n  \"X [data-title]:hover:before,X [data-title]:hover:after\": \"display:block;opacity:1;\",\n  \"X [data-title]:before\": \"content:\\\"\\\";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;\",\n  \"X [data-title]:after\": \"content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;\",\n  \"X .vertical [data-title]:before,X .vertical [data-title]:after\": \"top:0%;right:200%;\",\n  \"X .vertical [data-title]:before\": \"border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;\",\n  Y: \"font-family:\\\"Open Sans\\\",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;\",\n  \"Y p\": \"margin:0;\",\n  \"Y .notifier-note\": \"min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;\",\n  \"Y .notifier-close\": \"color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;\",\n  \"Y .notifier-close:hover\": \"color:#444;text-decoration:none;cursor:pointer;\"\n};\nfor (var selector in rules) {\n  var fullSelector = selector.replace(/^,/, ' ,').replace(/X/g, '.js-plotly-plot .plotly').replace(/Y/g, '.plotly-notifier');\n  Lib.addStyleRule(fullSelector, rules[selector]);\n}\n\n/***/ }),\n\n/***/ 98222:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5479__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_5479__(82887);\n\n/***/ }),\n\n/***/ 27206:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5639__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_5639__(60822);\n\n/***/ }),\n\n/***/ 59893:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5799__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_5799__(23381);\n\n/***/ }),\n\n/***/ 5224:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5958__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_5958__(83832);\n\n/***/ }),\n\n/***/ 59509:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_6118__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_6118__(72201);\n\n/***/ }),\n\n/***/ 75557:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_6278__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_6278__(91815);\n\n/***/ }),\n\n/***/ 40338:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_6438__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_6438__(21462);\n\n/***/ }),\n\n/***/ 35080:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_6598__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_6598__(51319);\n\n/***/ }),\n\n/***/ 61396:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_6758__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_6758__(57516);\n\n/***/ }),\n\n/***/ 40549:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_6918__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_6918__(98128);\n\n/***/ }),\n\n/***/ 49866:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7078__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_7078__(99442);\n\n/***/ }),\n\n/***/ 36089:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7238__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_7238__(93740);\n\n/***/ }),\n\n/***/ 19548:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7398__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_7398__(8729);\n\n/***/ }),\n\n/***/ 35831:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7557__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_7557__(93814);\n\n/***/ }),\n\n/***/ 61039:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7717__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_7717__(14382);\n\n/***/ }),\n\n/***/ 97040:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7877__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_7877__(51759);\n\n/***/ }),\n\n/***/ 77986:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8037__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_8037__(10421);\n\n/***/ }),\n\n/***/ 24296:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8197__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_8197__(43102);\n\n/***/ }),\n\n/***/ 58872:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8357__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_8357__(92165);\n\n/***/ }),\n\n/***/ 29626:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8517__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_8517__(3325);\n\n/***/ }),\n\n/***/ 65591:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8676__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_8676__(36071);\n\n/***/ }),\n\n/***/ 69738:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8836__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_8836__(43905);\n\n/***/ }),\n\n/***/ 92650:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8996__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_8996__(35902);\n\n/***/ }),\n\n/***/ 35630:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_9156__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_9156__(69816);\n\n/***/ }),\n\n/***/ 73434:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_9316__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_9316__(94507);\n\n/***/ }),\n\n/***/ 27909:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_9476__) {\n\n\"use strict\";\n\n\nvar Plotly = __nested_webpack_require_9476__(19548);\nPlotly.register([\n// traces\n__nested_webpack_require_9476__(27206), __nested_webpack_require_9476__(5224), __nested_webpack_require_9476__(58872), __nested_webpack_require_9476__(65591), __nested_webpack_require_9476__(69738), __nested_webpack_require_9476__(92650), __nested_webpack_require_9476__(49866), __nested_webpack_require_9476__(25743), __nested_webpack_require_9476__(6197), __nested_webpack_require_9476__(97040), __nested_webpack_require_9476__(85461), __nested_webpack_require_9476__(73434), __nested_webpack_require_9476__(54201), __nested_webpack_require_9476__(81299), __nested_webpack_require_9476__(47645), __nested_webpack_require_9476__(35630), __nested_webpack_require_9476__(77986), __nested_webpack_require_9476__(83043), __nested_webpack_require_9476__(93005), __nested_webpack_require_9476__(96881), __nested_webpack_require_9476__(4534), __nested_webpack_require_9476__(50581), __nested_webpack_require_9476__(40549), __nested_webpack_require_9476__(77900), __nested_webpack_require_9476__(47582), __nested_webpack_require_9476__(35080), __nested_webpack_require_9476__(21641), __nested_webpack_require_9476__(17280), __nested_webpack_require_9476__(5861), __nested_webpack_require_9476__(29626), __nested_webpack_require_9476__(10021), __nested_webpack_require_9476__(65317), __nested_webpack_require_9476__(96268), __nested_webpack_require_9476__(61396), __nested_webpack_require_9476__(35831), __nested_webpack_require_9476__(16122), __nested_webpack_require_9476__(46163), __nested_webpack_require_9476__(40344), __nested_webpack_require_9476__(40338), __nested_webpack_require_9476__(48131), __nested_webpack_require_9476__(36089), __nested_webpack_require_9476__(55334), __nested_webpack_require_9476__(75557), __nested_webpack_require_9476__(19440), __nested_webpack_require_9476__(99488), __nested_webpack_require_9476__(59893), __nested_webpack_require_9476__(97393),\n// transforms\n__nested_webpack_require_9476__(98222), __nested_webpack_require_9476__(61039), __nested_webpack_require_9476__(24296), __nested_webpack_require_9476__(66398),\n// components\n__nested_webpack_require_9476__(59509)]);\nmodule.exports = Plotly;\n\n/***/ }),\n\n/***/ 46163:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_11167__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_11167__(15154);\n\n/***/ }),\n\n/***/ 96881:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_11327__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_11327__(64943);\n\n/***/ }),\n\n/***/ 50581:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_11487__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_11487__(21164);\n\n/***/ }),\n\n/***/ 55334:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_11647__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_11647__(54186);\n\n/***/ }),\n\n/***/ 65317:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_11807__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_11807__(94873);\n\n/***/ }),\n\n/***/ 10021:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_11967__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_11967__(67618);\n\n/***/ }),\n\n/***/ 54201:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_12127__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_12127__(58810);\n\n/***/ }),\n\n/***/ 5861:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_12286__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_12286__(20593);\n\n/***/ }),\n\n/***/ 16122:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_12446__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_12446__(29396);\n\n/***/ }),\n\n/***/ 83043:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_12606__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_12606__(13551);\n\n/***/ }),\n\n/***/ 48131:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_12766__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_12766__(46858);\n\n/***/ }),\n\n/***/ 47582:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_12926__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_12926__(17988);\n\n/***/ }),\n\n/***/ 21641:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_13086__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_13086__(68868);\n\n/***/ }),\n\n/***/ 96268:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_13246__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_13246__(20467);\n\n/***/ }),\n\n/***/ 19440:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_13406__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_13406__(91271);\n\n/***/ }),\n\n/***/ 99488:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_13566__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_13566__(21461);\n\n/***/ }),\n\n/***/ 97393:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_13726__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_13726__(85956);\n\n/***/ }),\n\n/***/ 25743:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_13886__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_13886__(52979);\n\n/***/ }),\n\n/***/ 66398:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_14046__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_14046__(32275);\n\n/***/ }),\n\n/***/ 17280:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_14206__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_14206__(6419);\n\n/***/ }),\n\n/***/ 77900:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_14365__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_14365__(61510);\n\n/***/ }),\n\n/***/ 81299:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_14525__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_14525__(87619);\n\n/***/ }),\n\n/***/ 93005:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_14685__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_14685__(93601);\n\n/***/ }),\n\n/***/ 40344:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_14845__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_14845__(96595);\n\n/***/ }),\n\n/***/ 47645:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_15005__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_15005__(70954);\n\n/***/ }),\n\n/***/ 6197:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_15164__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_15164__(47462);\n\n/***/ }),\n\n/***/ 4534:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_15323__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_15323__(17659);\n\n/***/ }),\n\n/***/ 85461:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_15483__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_15483__(19990);\n\n/***/ }),\n\n/***/ 82884:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/**\n * All paths are tuned for maximum scalability of the arrowhead,\n * ie throughout arrowwidth=0.3..3 the head is joined smoothly\n * to the line, with the line coming from the left and ending at (0, 0).\n *\n * `backoff` is the distance to move the arrowhead and the end of the line,\n * in order that the arrowhead points to the desired place, either at\n * the tip of the arrow or (in the case of circle or square)\n * the center of the symbol.\n *\n * `noRotate`, if truthy, says that this arrowhead should not rotate with the\n * arrow. That's the case for squares, which should always be straight, and\n * circles, for which it's irrelevant.\n */\nmodule.exports = [\n// no arrow\n{\n  path: '',\n  backoff: 0\n},\n// wide with flat back\n{\n  path: 'M-2.4,-3V3L0.6,0Z',\n  backoff: 0.6\n},\n// narrower with flat back\n{\n  path: 'M-3.7,-2.5V2.5L1.3,0Z',\n  backoff: 1.3\n},\n// barbed\n{\n  path: 'M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z',\n  backoff: 1.55\n},\n// wide line-drawn\n{\n  path: 'M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z',\n  backoff: 1.6\n},\n// narrower line-drawn\n{\n  path: 'M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z',\n  backoff: 2\n},\n// circle\n{\n  path: 'M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z',\n  backoff: 0,\n  noRotate: true\n},\n// square\n{\n  path: 'M2,2V-2H-2V2Z',\n  backoff: 0,\n  noRotate: true\n}];\n\n/***/ }),\n\n/***/ 50215:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_17023__) {\n\n\"use strict\";\n\n\nvar ARROWPATHS = __nested_webpack_require_17023__(82884);\nvar fontAttrs = __nested_webpack_require_17023__(41940);\nvar cartesianConstants = __nested_webpack_require_17023__(85555);\nvar templatedArray = (__nested_webpack_require_17023__(44467).templatedArray);\nvar axisPlaceableObjs = __nested_webpack_require_17023__(24695);\nfunction arrowAxisRefDescription(axis) {\n  return ['In order for absolute positioning of the arrow to work, *a' + axis + 'ref* must be exactly the same as *' + axis + 'ref*, otherwise *a' + axis + 'ref* will revert to *pixel* (explained next).', 'For relative positioning, *a' + axis + 'ref* can be set to *pixel*,', 'in which case the *a' + axis + '* value is specified in pixels', 'relative to *' + axis + '*.', 'Absolute positioning is useful', 'for trendline annotations which should continue to indicate', 'the correct trend when zoomed. Relative positioning is useful', 'for specifying the text offset for an annotated point.'].join(' ');\n}\nfunction arrowCoordinateDescription(axis, lower, upper) {\n  return ['Sets the', axis, 'component of the arrow tail about the arrow head.', 'If `a' + axis + 'ref` is `pixel`, a positive (negative)', 'component corresponds to an arrow pointing', 'from', upper, 'to', lower, '(' + lower, 'to', upper + ').', 'If `a' + axis + 'ref` is not `pixel` and is exactly the same as `' + axis + 'ref`,', 'this is an absolute value on that axis,', 'like `' + axis + '`, specified in the same coordinates as `' + axis + 'ref`.'].join(' ');\n}\nmodule.exports = templatedArray('annotation', {\n  visible: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc+arraydraw'\n  },\n  text: {\n    valType: 'string',\n    editType: 'calc+arraydraw'\n  },\n  textangle: {\n    valType: 'angle',\n    dflt: 0,\n    editType: 'calc+arraydraw'\n  },\n  font: fontAttrs({\n    editType: 'calc+arraydraw',\n    colorEditType: 'arraydraw'\n  }),\n  width: {\n    valType: 'number',\n    min: 1,\n    dflt: null,\n    editType: 'calc+arraydraw'\n  },\n  height: {\n    valType: 'number',\n    min: 1,\n    dflt: null,\n    editType: 'calc+arraydraw'\n  },\n  opacity: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 1,\n    editType: 'arraydraw'\n  },\n  align: {\n    valType: 'enumerated',\n    values: ['left', 'center', 'right'],\n    dflt: 'center',\n    editType: 'arraydraw'\n  },\n  valign: {\n    valType: 'enumerated',\n    values: ['top', 'middle', 'bottom'],\n    dflt: 'middle',\n    editType: 'arraydraw'\n  },\n  bgcolor: {\n    valType: 'color',\n    dflt: 'rgba(0,0,0,0)',\n    editType: 'arraydraw'\n  },\n  bordercolor: {\n    valType: 'color',\n    dflt: 'rgba(0,0,0,0)',\n    editType: 'arraydraw'\n  },\n  borderpad: {\n    valType: 'number',\n    min: 0,\n    dflt: 1,\n    editType: 'calc+arraydraw'\n  },\n  borderwidth: {\n    valType: 'number',\n    min: 0,\n    dflt: 1,\n    editType: 'calc+arraydraw'\n  },\n  // arrow\n  showarrow: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc+arraydraw'\n  },\n  arrowcolor: {\n    valType: 'color',\n    editType: 'arraydraw'\n  },\n  arrowhead: {\n    valType: 'integer',\n    min: 0,\n    max: ARROWPATHS.length,\n    dflt: 1,\n    editType: 'arraydraw'\n  },\n  startarrowhead: {\n    valType: 'integer',\n    min: 0,\n    max: ARROWPATHS.length,\n    dflt: 1,\n    editType: 'arraydraw'\n  },\n  arrowside: {\n    valType: 'flaglist',\n    flags: ['end', 'start'],\n    extras: ['none'],\n    dflt: 'end',\n    editType: 'arraydraw'\n  },\n  arrowsize: {\n    valType: 'number',\n    min: 0.3,\n    dflt: 1,\n    editType: 'calc+arraydraw'\n  },\n  startarrowsize: {\n    valType: 'number',\n    min: 0.3,\n    dflt: 1,\n    editType: 'calc+arraydraw'\n  },\n  arrowwidth: {\n    valType: 'number',\n    min: 0.1,\n    editType: 'calc+arraydraw'\n  },\n  standoff: {\n    valType: 'number',\n    min: 0,\n    dflt: 0,\n    editType: 'calc+arraydraw'\n  },\n  startstandoff: {\n    valType: 'number',\n    min: 0,\n    dflt: 0,\n    editType: 'calc+arraydraw'\n  },\n  ax: {\n    valType: 'any',\n    editType: 'calc+arraydraw'\n  },\n  ay: {\n    valType: 'any',\n    editType: 'calc+arraydraw'\n  },\n  axref: {\n    valType: 'enumerated',\n    dflt: 'pixel',\n    values: ['pixel', cartesianConstants.idRegex.x.toString()],\n    editType: 'calc'\n  },\n  ayref: {\n    valType: 'enumerated',\n    dflt: 'pixel',\n    values: ['pixel', cartesianConstants.idRegex.y.toString()],\n    editType: 'calc'\n  },\n  // positioning\n  xref: {\n    valType: 'enumerated',\n    values: ['paper', cartesianConstants.idRegex.x.toString()],\n    editType: 'calc'\n  },\n  x: {\n    valType: 'any',\n    editType: 'calc+arraydraw'\n  },\n  xanchor: {\n    valType: 'enumerated',\n    values: ['auto', 'left', 'center', 'right'],\n    dflt: 'auto',\n    editType: 'calc+arraydraw'\n  },\n  xshift: {\n    valType: 'number',\n    dflt: 0,\n    editType: 'calc+arraydraw'\n  },\n  yref: {\n    valType: 'enumerated',\n    values: ['paper', cartesianConstants.idRegex.y.toString()],\n    editType: 'calc'\n  },\n  y: {\n    valType: 'any',\n    editType: 'calc+arraydraw'\n  },\n  yanchor: {\n    valType: 'enumerated',\n    values: ['auto', 'top', 'middle', 'bottom'],\n    dflt: 'auto',\n    editType: 'calc+arraydraw'\n  },\n  yshift: {\n    valType: 'number',\n    dflt: 0,\n    editType: 'calc+arraydraw'\n  },\n  clicktoshow: {\n    valType: 'enumerated',\n    values: [false, 'onoff', 'onout'],\n    dflt: false,\n    editType: 'arraydraw'\n  },\n  xclick: {\n    valType: 'any',\n    editType: 'arraydraw'\n  },\n  yclick: {\n    valType: 'any',\n    editType: 'arraydraw'\n  },\n  hovertext: {\n    valType: 'string',\n    editType: 'arraydraw'\n  },\n  hoverlabel: {\n    bgcolor: {\n      valType: 'color',\n      editType: 'arraydraw'\n    },\n    bordercolor: {\n      valType: 'color',\n      editType: 'arraydraw'\n    },\n    font: fontAttrs({\n      editType: 'arraydraw'\n    }),\n    editType: 'arraydraw'\n  },\n  captureevents: {\n    valType: 'boolean',\n    editType: 'arraydraw'\n  },\n  editType: 'calc',\n  _deprecated: {\n    ref: {\n      valType: 'string',\n      editType: 'calc'\n    }\n  }\n});\n\n/***/ }),\n\n/***/ 3749:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_23002__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_23002__(71828);\nvar Axes = __nested_webpack_require_23002__(89298);\nvar draw = (__nested_webpack_require_23002__(92605).draw);\nmodule.exports = function calcAutorange(gd) {\n  var fullLayout = gd._fullLayout;\n  var annotationList = Lib.filterVisible(fullLayout.annotations);\n  if (annotationList.length && gd._fullData.length) {\n    return Lib.syncOrAsync([draw, annAutorange], gd);\n  }\n};\nfunction annAutorange(gd) {\n  var fullLayout = gd._fullLayout;\n\n  // find the bounding boxes for each of these annotations'\n  // relative to their anchor points\n  // use the arrow and the text bg rectangle,\n  // as the whole anno may include hidden text in its bbox\n  Lib.filterVisible(fullLayout.annotations).forEach(function (ann) {\n    var xa = Axes.getFromId(gd, ann.xref);\n    var ya = Axes.getFromId(gd, ann.yref);\n    var xRefType = Axes.getRefType(ann.xref);\n    var yRefType = Axes.getRefType(ann.yref);\n    ann._extremes = {};\n    if (xRefType === 'range') calcAxisExpansion(ann, xa);\n    if (yRefType === 'range') calcAxisExpansion(ann, ya);\n  });\n}\nfunction calcAxisExpansion(ann, ax) {\n  var axId = ax._id;\n  var letter = axId.charAt(0);\n  var pos = ann[letter];\n  var apos = ann['a' + letter];\n  var ref = ann[letter + 'ref'];\n  var aref = ann['a' + letter + 'ref'];\n  var padplus = ann['_' + letter + 'padplus'];\n  var padminus = ann['_' + letter + 'padminus'];\n  var shift = {\n    x: 1,\n    y: -1\n  }[letter] * ann[letter + 'shift'];\n  var headSize = 3 * ann.arrowsize * ann.arrowwidth || 0;\n  var headPlus = headSize + shift;\n  var headMinus = headSize - shift;\n  var startHeadSize = 3 * ann.startarrowsize * ann.arrowwidth || 0;\n  var startHeadPlus = startHeadSize + shift;\n  var startHeadMinus = startHeadSize - shift;\n  var extremes;\n  if (aref === ref) {\n    // expand for the arrowhead (padded by arrowhead)\n    var extremeArrowHead = Axes.findExtremes(ax, [ax.r2c(pos)], {\n      ppadplus: headPlus,\n      ppadminus: headMinus\n    });\n    // again for the textbox (padded by textbox)\n    var extremeText = Axes.findExtremes(ax, [ax.r2c(apos)], {\n      ppadplus: Math.max(padplus, startHeadPlus),\n      ppadminus: Math.max(padminus, startHeadMinus)\n    });\n    extremes = {\n      min: [extremeArrowHead.min[0], extremeText.min[0]],\n      max: [extremeArrowHead.max[0], extremeText.max[0]]\n    };\n  } else {\n    startHeadPlus = apos ? startHeadPlus + apos : startHeadPlus;\n    startHeadMinus = apos ? startHeadMinus - apos : startHeadMinus;\n    extremes = Axes.findExtremes(ax, [ax.r2c(pos)], {\n      ppadplus: Math.max(padplus, headPlus, startHeadPlus),\n      ppadminus: Math.max(padminus, headMinus, startHeadMinus)\n    });\n  }\n  ann._extremes[axId] = extremes;\n}\n\n/***/ }),\n\n/***/ 44317:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_25788__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_25788__(71828);\nvar Registry = __nested_webpack_require_25788__(73972);\nvar arrayEditor = (__nested_webpack_require_25788__(44467).arrayEditor);\nmodule.exports = {\n  hasClickToShow: hasClickToShow,\n  onClick: onClick\n};\n\n/*\n * hasClickToShow: does the given hoverData have ANY annotations which will\n * turn ON if we click here? (used by hover events to set cursor)\n *\n * gd: graphDiv\n * hoverData: a hoverData array, as included with the *plotly_hover* or\n *     *plotly_click* events in the `points` attribute\n *\n * returns: boolean\n */\nfunction hasClickToShow(gd, hoverData) {\n  var sets = getToggleSets(gd, hoverData);\n  return sets.on.length > 0 || sets.explicitOff.length > 0;\n}\n\n/*\n * onClick: perform the toggling (via Plotly.update) implied by clicking\n * at this hoverData\n *\n * gd: graphDiv\n * hoverData: a hoverData array, as included with the *plotly_hover* or\n *     *plotly_click* events in the `points` attribute\n *\n * returns: Promise that the update is complete\n */\nfunction onClick(gd, hoverData) {\n  var toggleSets = getToggleSets(gd, hoverData);\n  var onSet = toggleSets.on;\n  var offSet = toggleSets.off.concat(toggleSets.explicitOff);\n  var update = {};\n  var annotationsOut = gd._fullLayout.annotations;\n  var i, editHelpers;\n  if (!(onSet.length || offSet.length)) return;\n  for (i = 0; i < onSet.length; i++) {\n    editHelpers = arrayEditor(gd.layout, 'annotations', annotationsOut[onSet[i]]);\n    editHelpers.modifyItem('visible', true);\n    Lib.extendFlat(update, editHelpers.getUpdateObj());\n  }\n  for (i = 0; i < offSet.length; i++) {\n    editHelpers = arrayEditor(gd.layout, 'annotations', annotationsOut[offSet[i]]);\n    editHelpers.modifyItem('visible', false);\n    Lib.extendFlat(update, editHelpers.getUpdateObj());\n  }\n  return Registry.call('update', gd, {}, update);\n}\n\n/*\n * getToggleSets: find the annotations which will turn on or off at this\n * hoverData\n *\n * gd: graphDiv\n * hoverData: a hoverData array, as included with the *plotly_hover* or\n *     *plotly_click* events in the `points` attribute\n *\n * returns: {\n *   on: Array (indices of annotations to turn on),\n *   off: Array (indices to turn off because you're not hovering on them),\n *   explicitOff: Array (indices to turn off because you *are* hovering on them)\n * }\n */\nfunction getToggleSets(gd, hoverData) {\n  var annotations = gd._fullLayout.annotations;\n  var onSet = [];\n  var offSet = [];\n  var explicitOffSet = [];\n  var hoverLen = (hoverData || []).length;\n  var i, j, anni, showMode, pointj, xa, ya, toggleType;\n  for (i = 0; i < annotations.length; i++) {\n    anni = annotations[i];\n    showMode = anni.clicktoshow;\n    if (showMode) {\n      for (j = 0; j < hoverLen; j++) {\n        pointj = hoverData[j];\n        xa = pointj.xaxis;\n        ya = pointj.yaxis;\n        if (xa._id === anni.xref && ya._id === anni.yref && xa.d2r(pointj.x) === clickData2r(anni._xclick, xa) && ya.d2r(pointj.y) === clickData2r(anni._yclick, ya)) {\n          // match! toggle this annotation\n          // regardless of its clicktoshow mode\n          // but if it's onout mode, off is implicit\n          if (anni.visible) {\n            if (showMode === 'onout') toggleType = offSet;else toggleType = explicitOffSet;\n          } else {\n            toggleType = onSet;\n          }\n          toggleType.push(i);\n          break;\n        }\n      }\n      if (j === hoverLen) {\n        // no match - only turn this annotation OFF, and only if\n        // showmode is 'onout'\n        if (anni.visible && showMode === 'onout') offSet.push(i);\n      }\n    }\n  }\n  return {\n    on: onSet,\n    off: offSet,\n    explicitOff: explicitOffSet\n  };\n}\n\n// to handle log axes until v3\nfunction clickData2r(d, ax) {\n  return ax.type === 'log' ? ax.l2r(d) : ax.d2r(d);\n}\n\n/***/ }),\n\n/***/ 25625:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_29644__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_29644__(71828);\nvar Color = __nested_webpack_require_29644__(7901);\n\n// defaults common to 'annotations' and 'annotations3d'\nmodule.exports = function handleAnnotationCommonDefaults(annIn, annOut, fullLayout, coerce) {\n  coerce('opacity');\n  var bgColor = coerce('bgcolor');\n  var borderColor = coerce('bordercolor');\n  var borderOpacity = Color.opacity(borderColor);\n  coerce('borderpad');\n  var borderWidth = coerce('borderwidth');\n  var showArrow = coerce('showarrow');\n  coerce('text', showArrow ? ' ' : fullLayout._dfltTitle.annotation);\n  coerce('textangle');\n  Lib.coerceFont(coerce, 'font', fullLayout.font);\n  coerce('width');\n  coerce('align');\n  var h = coerce('height');\n  if (h) coerce('valign');\n  if (showArrow) {\n    var arrowside = coerce('arrowside');\n    var arrowhead;\n    var arrowsize;\n    if (arrowside.indexOf('end') !== -1) {\n      arrowhead = coerce('arrowhead');\n      arrowsize = coerce('arrowsize');\n    }\n    if (arrowside.indexOf('start') !== -1) {\n      coerce('startarrowhead', arrowhead);\n      coerce('startarrowsize', arrowsize);\n    }\n    coerce('arrowcolor', borderOpacity ? annOut.bordercolor : Color.defaultLine);\n    coerce('arrowwidth', (borderOpacity && borderWidth || 1) * 2);\n    coerce('standoff');\n    coerce('startstandoff');\n  }\n  var hoverText = coerce('hovertext');\n  var globalHoverLabel = fullLayout.hoverlabel || {};\n  if (hoverText) {\n    var hoverBG = coerce('hoverlabel.bgcolor', globalHoverLabel.bgcolor || (Color.opacity(bgColor) ? Color.rgb(bgColor) : Color.defaultLine));\n    var hoverBorder = coerce('hoverlabel.bordercolor', globalHoverLabel.bordercolor || Color.contrast(hoverBG));\n    Lib.coerceFont(coerce, 'hoverlabel.font', {\n      family: globalHoverLabel.font.family,\n      size: globalHoverLabel.font.size,\n      color: globalHoverLabel.font.color || hoverBorder\n    });\n  }\n  coerce('captureevents', !!hoverText);\n};\n\n/***/ }),\n\n/***/ 94128:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_31657__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_31657__(92770);\nvar toLogRange = __nested_webpack_require_31657__(58163);\n\n/*\n * convertCoords: when converting an axis between log and linear\n * you need to alter any annotations on that axis to keep them\n * pointing at the same data point.\n * In v3.0 this will become obsolete\n *\n * gd: the plot div\n * ax: the axis being changed\n * newType: the type it's getting\n * doExtra: function(attr, val) from inside relayout that sets the attribute.\n *     Use this to make the changes as it's aware if any other changes in the\n *     same relayout call should override this conversion.\n */\nmodule.exports = function convertCoords(gd, ax, newType, doExtra) {\n  ax = ax || {};\n  var toLog = newType === 'log' && ax.type === 'linear';\n  var fromLog = newType === 'linear' && ax.type === 'log';\n  if (!(toLog || fromLog)) return;\n  var annotations = gd._fullLayout.annotations;\n  var axLetter = ax._id.charAt(0);\n  var ann;\n  var attrPrefix;\n  function convert(attr) {\n    var currentVal = ann[attr];\n    var newVal = null;\n    if (toLog) newVal = toLogRange(currentVal, ax.range);else newVal = Math.pow(10, currentVal);\n\n    // if conversion failed, delete the value so it gets a default value\n    if (!isNumeric(newVal)) newVal = null;\n    doExtra(attrPrefix + attr, newVal);\n  }\n  for (var i = 0; i < annotations.length; i++) {\n    ann = annotations[i];\n    attrPrefix = 'annotations[' + i + '].';\n    if (ann[axLetter + 'ref'] === ax._id) convert(axLetter);\n    if (ann['a' + axLetter + 'ref'] === ax._id) convert('a' + axLetter);\n  }\n};\n\n/***/ }),\n\n/***/ 84046:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_33320__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_33320__(71828);\nvar Axes = __nested_webpack_require_33320__(89298);\nvar handleArrayContainerDefaults = __nested_webpack_require_33320__(85501);\nvar handleAnnotationCommonDefaults = __nested_webpack_require_33320__(25625);\nvar attributes = __nested_webpack_require_33320__(50215);\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n  handleArrayContainerDefaults(layoutIn, layoutOut, {\n    name: 'annotations',\n    handleItemDefaults: handleAnnotationDefaults\n  });\n};\nfunction handleAnnotationDefaults(annIn, annOut, fullLayout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(annIn, annOut, attributes, attr, dflt);\n  }\n  var visible = coerce('visible');\n  var clickToShow = coerce('clicktoshow');\n  if (!(visible || clickToShow)) return;\n  handleAnnotationCommonDefaults(annIn, annOut, fullLayout, coerce);\n  var showArrow = annOut.showarrow;\n\n  // positioning\n  var axLetters = ['x', 'y'];\n  var arrowPosDflt = [-10, -30];\n  var gdMock = {\n    _fullLayout: fullLayout\n  };\n  for (var i = 0; i < 2; i++) {\n    var axLetter = axLetters[i];\n\n    // xref, yref\n    var axRef = Axes.coerceRef(annIn, annOut, gdMock, axLetter, '', 'paper');\n    if (axRef !== 'paper') {\n      var ax = Axes.getFromId(gdMock, axRef);\n      ax._annIndices.push(annOut._index);\n    }\n\n    // x, y\n    Axes.coercePosition(annOut, gdMock, coerce, axRef, axLetter, 0.5);\n    if (showArrow) {\n      var arrowPosAttr = 'a' + axLetter;\n      // axref, ayref\n      var aaxRef = Axes.coerceRef(annIn, annOut, gdMock, arrowPosAttr, 'pixel', ['pixel', 'paper']);\n\n      // for now the arrow can only be on the same axis or specified as pixels\n      // TODO: sometime it might be interesting to allow it to be on *any* axis\n      // but that would require updates to drawing & autorange code and maybe more\n      if (aaxRef !== 'pixel' && aaxRef !== axRef) {\n        aaxRef = annOut[arrowPosAttr] = 'pixel';\n      }\n\n      // ax, ay\n      var aDflt = aaxRef === 'pixel' ? arrowPosDflt[i] : 0.4;\n      Axes.coercePosition(annOut, gdMock, coerce, aaxRef, arrowPosAttr, aDflt);\n    }\n\n    // xanchor, yanchor\n    coerce(axLetter + 'anchor');\n\n    // xshift, yshift\n    coerce(axLetter + 'shift');\n  }\n\n  // if you have one coordinate you should have both\n  Lib.noneOrAll(annIn, annOut, ['x', 'y']);\n\n  // if you have one part of arrow length you should have both\n  if (showArrow) {\n    Lib.noneOrAll(annIn, annOut, ['ax', 'ay']);\n  }\n  if (clickToShow) {\n    var xClick = coerce('xclick');\n    var yClick = coerce('yclick');\n\n    // put the actual click data to bind to into private attributes\n    // so we don't have to do this little bit of logic on every hover event\n    annOut._xclick = xClick === undefined ? annOut.x : Axes.cleanPosition(xClick, gdMock, annOut.xref);\n    annOut._yclick = yClick === undefined ? annOut.y : Axes.cleanPosition(yClick, gdMock, annOut.yref);\n  }\n}\n\n/***/ }),\n\n/***/ 92605:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_36279__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_36279__(39898);\nvar Registry = __nested_webpack_require_36279__(73972);\nvar Plots = __nested_webpack_require_36279__(74875);\nvar Lib = __nested_webpack_require_36279__(71828);\nvar strTranslate = Lib.strTranslate;\nvar Axes = __nested_webpack_require_36279__(89298);\nvar Color = __nested_webpack_require_36279__(7901);\nvar Drawing = __nested_webpack_require_36279__(91424);\nvar Fx = __nested_webpack_require_36279__(30211);\nvar svgTextUtils = __nested_webpack_require_36279__(63893);\nvar setCursor = __nested_webpack_require_36279__(6964);\nvar dragElement = __nested_webpack_require_36279__(28569);\nvar arrayEditor = (__nested_webpack_require_36279__(44467).arrayEditor);\nvar drawArrowHead = __nested_webpack_require_36279__(13011);\n\n// Annotations are stored in gd.layout.annotations, an array of objects\n// index can point to one item in this array,\n//  or non-numeric to simply add a new one\n//  or -1 to modify all existing\n// opt can be the full options object, or one key (to be set to value)\n//  or undefined to simply redraw\n// if opt is blank, val can be 'add' or a full options object to add a new\n//  annotation at that point in the array, or 'remove' to delete this one\n\nmodule.exports = {\n  draw: draw,\n  drawOne: drawOne,\n  drawRaw: drawRaw\n};\n\n/*\n * draw: draw all annotations without any new modifications\n */\nfunction draw(gd) {\n  var fullLayout = gd._fullLayout;\n  fullLayout._infolayer.selectAll('.annotation').remove();\n  for (var i = 0; i < fullLayout.annotations.length; i++) {\n    if (fullLayout.annotations[i].visible) {\n      drawOne(gd, i);\n    }\n  }\n  return Plots.previousPromises(gd);\n}\n\n/*\n * drawOne: draw a single cartesian or paper-ref annotation, potentially with modifications\n *\n * index (int): the annotation to draw\n */\nfunction drawOne(gd, index) {\n  var fullLayout = gd._fullLayout;\n  var options = fullLayout.annotations[index] || {};\n  var xa = Axes.getFromId(gd, options.xref);\n  var ya = Axes.getFromId(gd, options.yref);\n  if (xa) xa.setScale();\n  if (ya) ya.setScale();\n  drawRaw(gd, options, index, false, xa, ya);\n}\n\n// Convert pixels to the coordinates relevant for the axis referred to. For\n// example, for paper it would convert to a value normalized by the dimension of\n// the plot.\n// axDomainRef: if true and axa defined, draws relative to axis domain,\n// otherwise draws relative to data (if axa defined) or paper (if not).\nfunction shiftPosition(axa, dAx, axLetter, gs, options) {\n  var optAx = options[axLetter];\n  var axRef = options[axLetter + 'ref'];\n  var vertical = axLetter.indexOf('y') !== -1;\n  var axDomainRef = Axes.getRefType(axRef) === 'domain';\n  var gsDim = vertical ? gs.h : gs.w;\n  if (axa) {\n    if (axDomainRef) {\n      // here optAx normalized to length of axis (e.g., normally in range\n      // 0 to 1). But dAx is in pixels. So we normalize dAx to length of\n      // axis before doing the math.\n      return optAx + (vertical ? -dAx : dAx) / axa._length;\n    } else {\n      return axa.p2r(axa.r2p(optAx) + dAx);\n    }\n  } else {\n    return optAx + (vertical ? -dAx : dAx) / gsDim;\n  }\n}\n\n/**\n * drawRaw: draw a single annotation, potentially with modifications\n *\n * @param {DOM element} gd\n * @param {object} options : this annotation's fullLayout options\n * @param {integer} index : index in 'annotations' container of the annotation to draw\n * @param {string} subplotId : id of the annotation's subplot\n *  - use false for 2d (i.e. cartesian or paper-ref) annotations\n * @param {object | undefined} xa : full x-axis object to compute subplot pos-to-px\n * @param {object | undefined} ya : ... y-axis\n */\nfunction drawRaw(gd, options, index, subplotId, xa, ya) {\n  var fullLayout = gd._fullLayout;\n  var gs = gd._fullLayout._size;\n  var edits = gd._context.edits;\n  var className, containerStr;\n  if (subplotId) {\n    className = 'annotation-' + subplotId;\n    containerStr = subplotId + '.annotations';\n  } else {\n    className = 'annotation';\n    containerStr = 'annotations';\n  }\n  var editHelpers = arrayEditor(gd.layout, containerStr, options);\n  var modifyBase = editHelpers.modifyBase;\n  var modifyItem = editHelpers.modifyItem;\n  var getUpdateObj = editHelpers.getUpdateObj;\n\n  // remove the existing annotation if there is one\n  fullLayout._infolayer.selectAll('.' + className + '[data-index=\"' + index + '\"]').remove();\n  var annClipID = 'clip' + fullLayout._uid + '_ann' + index;\n\n  // this annotation is gone - quit now after deleting it\n  // TODO: use d3 idioms instead of deleting and redrawing every time\n  if (!options._input || options.visible === false) {\n    d3.selectAll('#' + annClipID).remove();\n    return;\n  }\n\n  // calculated pixel positions\n  // x & y each will get text, head, and tail as appropriate\n  var annPosPx = {\n    x: {},\n    y: {}\n  };\n  var textangle = +options.textangle || 0;\n\n  // create the components\n  // made a single group to contain all, so opacity can work right\n  // with border/arrow together this could handle a whole bunch of\n  // cleanup at this point, but works for now\n  var annGroup = fullLayout._infolayer.append('g').classed(className, true).attr('data-index', String(index)).style('opacity', options.opacity);\n\n  // another group for text+background so that they can rotate together\n  var annTextGroup = annGroup.append('g').classed('annotation-text-g', true);\n  var editTextPosition = edits[options.showarrow ? 'annotationTail' : 'annotationPosition'];\n  var textEvents = options.captureevents || edits.annotationText || editTextPosition;\n  function makeEventData(initialEvent) {\n    var eventData = {\n      index: index,\n      annotation: options._input,\n      fullAnnotation: options,\n      event: initialEvent\n    };\n    if (subplotId) {\n      eventData.subplotId = subplotId;\n    }\n    return eventData;\n  }\n  var annTextGroupInner = annTextGroup.append('g').style('pointer-events', textEvents ? 'all' : null).call(setCursor, 'pointer').on('click', function () {\n    gd._dragging = false;\n    gd.emit('plotly_clickannotation', makeEventData(d3.event));\n  });\n  if (options.hovertext) {\n    annTextGroupInner.on('mouseover', function () {\n      var hoverOptions = options.hoverlabel;\n      var hoverFont = hoverOptions.font;\n      var bBox = this.getBoundingClientRect();\n      var bBoxRef = gd.getBoundingClientRect();\n      Fx.loneHover({\n        x0: bBox.left - bBoxRef.left,\n        x1: bBox.right - bBoxRef.left,\n        y: (bBox.top + bBox.bottom) / 2 - bBoxRef.top,\n        text: options.hovertext,\n        color: hoverOptions.bgcolor,\n        borderColor: hoverOptions.bordercolor,\n        fontFamily: hoverFont.family,\n        fontSize: hoverFont.size,\n        fontColor: hoverFont.color\n      }, {\n        container: fullLayout._hoverlayer.node(),\n        outerContainer: fullLayout._paper.node(),\n        gd: gd\n      });\n    }).on('mouseout', function () {\n      Fx.loneUnhover(fullLayout._hoverlayer.node());\n    });\n  }\n  var borderwidth = options.borderwidth;\n  var borderpad = options.borderpad;\n  var borderfull = borderwidth + borderpad;\n  var annTextBG = annTextGroupInner.append('rect').attr('class', 'bg').style('stroke-width', borderwidth + 'px').call(Color.stroke, options.bordercolor).call(Color.fill, options.bgcolor);\n  var isSizeConstrained = options.width || options.height;\n  var annTextClip = fullLayout._topclips.selectAll('#' + annClipID).data(isSizeConstrained ? [0] : []);\n  annTextClip.enter().append('clipPath').classed('annclip', true).attr('id', annClipID).append('rect');\n  annTextClip.exit().remove();\n  var font = options.font;\n  var text = fullLayout._meta ? Lib.templateString(options.text, fullLayout._meta) : options.text;\n  var annText = annTextGroupInner.append('text').classed('annotation-text', true).text(text);\n  function textLayout(s) {\n    s.call(Drawing.font, font).attr({\n      'text-anchor': {\n        left: 'start',\n        right: 'end'\n      }[options.align] || 'middle'\n    });\n    svgTextUtils.convertToTspans(s, gd, drawGraphicalElements);\n    return s;\n  }\n  function drawGraphicalElements() {\n    // if the text has *only* a link, make the whole box into a link\n    var anchor3 = annText.selectAll('a');\n    if (anchor3.size() === 1 && anchor3.text() === annText.text()) {\n      var wholeLink = annTextGroupInner.insert('a', ':first-child').attr({\n        'xlink:xlink:href': anchor3.attr('xlink:href'),\n        'xlink:xlink:show': anchor3.attr('xlink:show')\n      }).style({\n        cursor: 'pointer'\n      });\n      wholeLink.node().appendChild(annTextBG.node());\n    }\n    var mathjaxGroup = annTextGroupInner.select('.annotation-text-math-group');\n    var hasMathjax = !mathjaxGroup.empty();\n    var anntextBB = Drawing.bBox((hasMathjax ? mathjaxGroup : annText).node());\n    var textWidth = anntextBB.width;\n    var textHeight = anntextBB.height;\n    var annWidth = options.width || textWidth;\n    var annHeight = options.height || textHeight;\n    var outerWidth = Math.round(annWidth + 2 * borderfull);\n    var outerHeight = Math.round(annHeight + 2 * borderfull);\n    function shiftFraction(v, anchor) {\n      if (anchor === 'auto') {\n        if (v < 1 / 3) anchor = 'left';else if (v > 2 / 3) anchor = 'right';else anchor = 'center';\n      }\n      return {\n        center: 0,\n        middle: 0,\n        left: 0.5,\n        bottom: -0.5,\n        right: -0.5,\n        top: 0.5\n      }[anchor];\n    }\n    var annotationIsOffscreen = false;\n    var letters = ['x', 'y'];\n    for (var i = 0; i < letters.length; i++) {\n      var axLetter = letters[i];\n      var axRef = options[axLetter + 'ref'] || axLetter;\n      var tailRef = options['a' + axLetter + 'ref'];\n      var ax = {\n        x: xa,\n        y: ya\n      }[axLetter];\n      var dimAngle = (textangle + (axLetter === 'x' ? 0 : -90)) * Math.PI / 180;\n      // note that these two can be either positive or negative\n      var annSizeFromWidth = outerWidth * Math.cos(dimAngle);\n      var annSizeFromHeight = outerHeight * Math.sin(dimAngle);\n      // but this one is the positive total size\n      var annSize = Math.abs(annSizeFromWidth) + Math.abs(annSizeFromHeight);\n      var anchor = options[axLetter + 'anchor'];\n      var overallShift = options[axLetter + 'shift'] * (axLetter === 'x' ? 1 : -1);\n      var posPx = annPosPx[axLetter];\n      var basePx;\n      var textPadShift;\n      var alignPosition;\n      var autoAlignFraction;\n      var textShift;\n      var axRefType = Axes.getRefType(axRef);\n\n      /*\n       * calculate the *primary* pixel position\n       * which is the arrowhead if there is one,\n       * otherwise the text anchor point\n       */\n      if (ax && axRefType !== 'domain') {\n        // check if annotation is off screen, to bypass DOM manipulations\n        var posFraction = ax.r2fraction(options[axLetter]);\n        if (posFraction < 0 || posFraction > 1) {\n          if (tailRef === axRef) {\n            posFraction = ax.r2fraction(options['a' + axLetter]);\n            if (posFraction < 0 || posFraction > 1) {\n              annotationIsOffscreen = true;\n            }\n          } else {\n            annotationIsOffscreen = true;\n          }\n        }\n        basePx = ax._offset + ax.r2p(options[axLetter]);\n        autoAlignFraction = 0.5;\n      } else {\n        var axRefTypeEqDomain = axRefType === 'domain';\n        if (axLetter === 'x') {\n          alignPosition = options[axLetter];\n          basePx = axRefTypeEqDomain ? ax._offset + ax._length * alignPosition : basePx = gs.l + gs.w * alignPosition;\n        } else {\n          alignPosition = 1 - options[axLetter];\n          basePx = axRefTypeEqDomain ? ax._offset + ax._length * alignPosition : basePx = gs.t + gs.h * alignPosition;\n        }\n        autoAlignFraction = options.showarrow ? 0.5 : alignPosition;\n      }\n\n      // now translate this into pixel positions of head, tail, and text\n      // as well as paddings for autorange\n      if (options.showarrow) {\n        posPx.head = basePx;\n        var arrowLength = options['a' + axLetter];\n\n        // with an arrow, the text rotates around the anchor point\n        textShift = annSizeFromWidth * shiftFraction(0.5, options.xanchor) - annSizeFromHeight * shiftFraction(0.5, options.yanchor);\n        if (tailRef === axRef) {\n          // In the case tailRefType is 'domain' or 'paper', the arrow's\n          // position is set absolutely, which is consistent with how\n          // it behaves when its position is set in data ('range')\n          // coordinates.\n          var tailRefType = Axes.getRefType(tailRef);\n          if (tailRefType === 'domain') {\n            if (axLetter === 'y') {\n              arrowLength = 1 - arrowLength;\n            }\n            posPx.tail = ax._offset + ax._length * arrowLength;\n          } else if (tailRefType === 'paper') {\n            if (axLetter === 'y') {\n              arrowLength = 1 - arrowLength;\n              posPx.tail = gs.t + gs.h * arrowLength;\n            } else {\n              posPx.tail = gs.l + gs.w * arrowLength;\n            }\n          } else {\n            // assumed tailRef is range or paper referenced\n            posPx.tail = ax._offset + ax.r2p(arrowLength);\n          }\n          // tail is range- or domain-referenced: autorange pads the\n          // text in px from the tail\n          textPadShift = textShift;\n        } else {\n          posPx.tail = basePx + arrowLength;\n          // tail is specified in px from head, so autorange also pads vs head\n          textPadShift = textShift + arrowLength;\n        }\n        posPx.text = posPx.tail + textShift;\n\n        // constrain pixel/paper referenced so the draggers are at least\n        // partially visible\n        var maxPx = fullLayout[axLetter === 'x' ? 'width' : 'height'];\n        if (axRef === 'paper') {\n          posPx.head = Lib.constrain(posPx.head, 1, maxPx - 1);\n        }\n        if (tailRef === 'pixel') {\n          var shiftPlus = -Math.max(posPx.tail - 3, posPx.text);\n          var shiftMinus = Math.min(posPx.tail + 3, posPx.text) - maxPx;\n          if (shiftPlus > 0) {\n            posPx.tail += shiftPlus;\n            posPx.text += shiftPlus;\n          } else if (shiftMinus > 0) {\n            posPx.tail -= shiftMinus;\n            posPx.text -= shiftMinus;\n          }\n        }\n        posPx.tail += overallShift;\n        posPx.head += overallShift;\n      } else {\n        // with no arrow, the text rotates and *then* we put the anchor\n        // relative to the new bounding box\n        textShift = annSize * shiftFraction(autoAlignFraction, anchor);\n        textPadShift = textShift;\n        posPx.text = basePx + textShift;\n      }\n      posPx.text += overallShift;\n      textShift += overallShift;\n      textPadShift += overallShift;\n\n      // padplus/minus are used by autorange\n      options['_' + axLetter + 'padplus'] = annSize / 2 + textPadShift;\n      options['_' + axLetter + 'padminus'] = annSize / 2 - textPadShift;\n\n      // size/shift are used during dragging\n      options['_' + axLetter + 'size'] = annSize;\n      options['_' + axLetter + 'shift'] = textShift;\n    }\n    if (annotationIsOffscreen) {\n      annTextGroupInner.remove();\n      return;\n    }\n    var xShift = 0;\n    var yShift = 0;\n    if (options.align !== 'left') {\n      xShift = (annWidth - textWidth) * (options.align === 'center' ? 0.5 : 1);\n    }\n    if (options.valign !== 'top') {\n      yShift = (annHeight - textHeight) * (options.valign === 'middle' ? 0.5 : 1);\n    }\n    if (hasMathjax) {\n      mathjaxGroup.select('svg').attr({\n        x: borderfull + xShift - 1,\n        y: borderfull + yShift\n      }).call(Drawing.setClipUrl, isSizeConstrained ? annClipID : null, gd);\n    } else {\n      var texty = borderfull + yShift - anntextBB.top;\n      var textx = borderfull + xShift - anntextBB.left;\n      annText.call(svgTextUtils.positionText, textx, texty).call(Drawing.setClipUrl, isSizeConstrained ? annClipID : null, gd);\n    }\n    annTextClip.select('rect').call(Drawing.setRect, borderfull, borderfull, annWidth, annHeight);\n    annTextBG.call(Drawing.setRect, borderwidth / 2, borderwidth / 2, outerWidth - borderwidth, outerHeight - borderwidth);\n    annTextGroupInner.call(Drawing.setTranslate, Math.round(annPosPx.x.text - outerWidth / 2), Math.round(annPosPx.y.text - outerHeight / 2));\n\n    /*\n     * rotate text and background\n     * we already calculated the text center position *as rotated*\n     * because we needed that for autoranging anyway, so now whether\n     * we have an arrow or not, we rotate about the text center.\n     */\n    annTextGroup.attr({\n      transform: 'rotate(' + textangle + ',' + annPosPx.x.text + ',' + annPosPx.y.text + ')'\n    });\n\n    /*\n     * add the arrow\n     * uses options[arrowwidth,arrowcolor,arrowhead] for styling\n     * dx and dy are normally zero, but when you are dragging the textbox\n     * while the head stays put, dx and dy are the pixel offsets\n     */\n    var drawArrow = function (dx, dy) {\n      annGroup.selectAll('.annotation-arrow-g').remove();\n      var headX = annPosPx.x.head;\n      var headY = annPosPx.y.head;\n      var tailX = annPosPx.x.tail + dx;\n      var tailY = annPosPx.y.tail + dy;\n      var textX = annPosPx.x.text + dx;\n      var textY = annPosPx.y.text + dy;\n\n      // find the edge of the text box, where we'll start the arrow:\n      // create transform matrix to rotate the text box corners\n      var transform = Lib.rotationXYMatrix(textangle, textX, textY);\n      var applyTransform = Lib.apply2DTransform(transform);\n      var applyTransform2 = Lib.apply2DTransform2(transform);\n\n      // calculate and transform bounding box\n      var width = +annTextBG.attr('width');\n      var height = +annTextBG.attr('height');\n      var xLeft = textX - 0.5 * width;\n      var xRight = xLeft + width;\n      var yTop = textY - 0.5 * height;\n      var yBottom = yTop + height;\n      var edges = [[xLeft, yTop, xLeft, yBottom], [xLeft, yBottom, xRight, yBottom], [xRight, yBottom, xRight, yTop], [xRight, yTop, xLeft, yTop]].map(applyTransform2);\n\n      // Remove the line if it ends inside the box.  Use ray\n      // casting for rotated boxes: see which edges intersect a\n      // line from the arrowhead to far away and reduce with xor\n      // to get the parity of the number of intersections.\n      if (edges.reduce(function (a, x) {\n        return a ^ !!Lib.segmentsIntersect(headX, headY, headX + 1e6, headY + 1e6, x[0], x[1], x[2], x[3]);\n      }, false)) {\n        // no line or arrow - so quit drawArrow now\n        return;\n      }\n      edges.forEach(function (x) {\n        var p = Lib.segmentsIntersect(tailX, tailY, headX, headY, x[0], x[1], x[2], x[3]);\n        if (p) {\n          tailX = p.x;\n          tailY = p.y;\n        }\n      });\n      var strokewidth = options.arrowwidth;\n      var arrowColor = options.arrowcolor;\n      var arrowSide = options.arrowside;\n      var arrowGroup = annGroup.append('g').style({\n        opacity: Color.opacity(arrowColor)\n      }).classed('annotation-arrow-g', true);\n      var arrow = arrowGroup.append('path').attr('d', 'M' + tailX + ',' + tailY + 'L' + headX + ',' + headY).style('stroke-width', strokewidth + 'px').call(Color.stroke, Color.rgb(arrowColor));\n      drawArrowHead(arrow, arrowSide, options);\n\n      // the arrow dragger is a small square right at the head, then a line to the tail,\n      // all expanded by a stroke width of 6px plus the arrow line width\n      if (edits.annotationPosition && arrow.node().parentNode && !subplotId) {\n        var arrowDragHeadX = headX;\n        var arrowDragHeadY = headY;\n        if (options.standoff) {\n          var arrowLength = Math.sqrt(Math.pow(headX - tailX, 2) + Math.pow(headY - tailY, 2));\n          arrowDragHeadX += options.standoff * (tailX - headX) / arrowLength;\n          arrowDragHeadY += options.standoff * (tailY - headY) / arrowLength;\n        }\n        var arrowDrag = arrowGroup.append('path').classed('annotation-arrow', true).classed('anndrag', true).classed('cursor-move', true).attr({\n          d: 'M3,3H-3V-3H3ZM0,0L' + (tailX - arrowDragHeadX) + ',' + (tailY - arrowDragHeadY),\n          transform: strTranslate(arrowDragHeadX, arrowDragHeadY)\n        }).style('stroke-width', strokewidth + 6 + 'px').call(Color.stroke, 'rgba(0,0,0,0)').call(Color.fill, 'rgba(0,0,0,0)');\n        var annx0, anny0;\n\n        // dragger for the arrow & head: translates the whole thing\n        // (head/tail/text) all together\n        dragElement.init({\n          element: arrowDrag.node(),\n          gd: gd,\n          prepFn: function () {\n            var pos = Drawing.getTranslate(annTextGroupInner);\n            annx0 = pos.x;\n            anny0 = pos.y;\n            if (xa && xa.autorange) {\n              modifyBase(xa._name + '.autorange', true);\n            }\n            if (ya && ya.autorange) {\n              modifyBase(ya._name + '.autorange', true);\n            }\n          },\n          moveFn: function (dx, dy) {\n            var annxy0 = applyTransform(annx0, anny0);\n            var xcenter = annxy0[0] + dx;\n            var ycenter = annxy0[1] + dy;\n            annTextGroupInner.call(Drawing.setTranslate, xcenter, ycenter);\n            modifyItem('x', shiftPosition(xa, dx, 'x', gs, options));\n            modifyItem('y', shiftPosition(ya, dy, 'y', gs, options));\n\n            // for these 2 calls to shiftPosition, it is assumed xa, ya are\n            // defined, so gsDim will not be used, but we put it in\n            // anyways for consistency\n            if (options.axref === options.xref) {\n              modifyItem('ax', shiftPosition(xa, dx, 'ax', gs, options));\n            }\n            if (options.ayref === options.yref) {\n              modifyItem('ay', shiftPosition(ya, dy, 'ay', gs, options));\n            }\n            arrowGroup.attr('transform', strTranslate(dx, dy));\n            annTextGroup.attr({\n              transform: 'rotate(' + textangle + ',' + xcenter + ',' + ycenter + ')'\n            });\n          },\n          doneFn: function () {\n            Registry.call('_guiRelayout', gd, getUpdateObj());\n            var notesBox = document.querySelector('.js-notes-box-panel');\n            if (notesBox) notesBox.redraw(notesBox.selectedObj);\n          }\n        });\n      }\n    };\n    if (options.showarrow) drawArrow(0, 0);\n\n    // user dragging the annotation (text, not arrow)\n    if (editTextPosition) {\n      var baseTextTransform;\n\n      // dragger for the textbox: if there's an arrow, just drag the\n      // textbox and tail, leave the head untouched\n      dragElement.init({\n        element: annTextGroupInner.node(),\n        gd: gd,\n        prepFn: function () {\n          baseTextTransform = annTextGroup.attr('transform');\n        },\n        moveFn: function (dx, dy) {\n          var csr = 'pointer';\n          if (options.showarrow) {\n            // for these 2 calls to shiftPosition, it is assumed xa, ya are\n            // defined, so gsDim will not be used, but we put it in\n            // anyways for consistency\n            if (options.axref === options.xref) {\n              modifyItem('ax', shiftPosition(xa, dx, 'ax', gs, options));\n            } else {\n              modifyItem('ax', options.ax + dx);\n            }\n            if (options.ayref === options.yref) {\n              modifyItem('ay', shiftPosition(ya, dy, 'ay', gs.w, options));\n            } else {\n              modifyItem('ay', options.ay + dy);\n            }\n            drawArrow(dx, dy);\n          } else if (!subplotId) {\n            var xUpdate, yUpdate;\n            if (xa) {\n              // shiftPosition will not execute code where xa was\n              // undefined, so we use to calculate xUpdate too\n              xUpdate = shiftPosition(xa, dx, 'x', gs, options);\n            } else {\n              var widthFraction = options._xsize / gs.w;\n              var xLeft = options.x + (options._xshift - options.xshift) / gs.w - widthFraction / 2;\n              xUpdate = dragElement.align(xLeft + dx / gs.w, widthFraction, 0, 1, options.xanchor);\n            }\n            if (ya) {\n              // shiftPosition will not execute code where ya was\n              // undefined, so we use to calculate yUpdate too\n              yUpdate = shiftPosition(ya, dy, 'y', gs, options);\n            } else {\n              var heightFraction = options._ysize / gs.h;\n              var yBottom = options.y - (options._yshift + options.yshift) / gs.h - heightFraction / 2;\n              yUpdate = dragElement.align(yBottom - dy / gs.h, heightFraction, 0, 1, options.yanchor);\n            }\n            modifyItem('x', xUpdate);\n            modifyItem('y', yUpdate);\n            if (!xa || !ya) {\n              csr = dragElement.getCursor(xa ? 0.5 : xUpdate, ya ? 0.5 : yUpdate, options.xanchor, options.yanchor);\n            }\n          } else return;\n          annTextGroup.attr({\n            transform: strTranslate(dx, dy) + baseTextTransform\n          });\n          setCursor(annTextGroupInner, csr);\n        },\n        clickFn: function (_, initialEvent) {\n          if (options.captureevents) {\n            gd.emit('plotly_clickannotation', makeEventData(initialEvent));\n          }\n        },\n        doneFn: function () {\n          setCursor(annTextGroupInner);\n          Registry.call('_guiRelayout', gd, getUpdateObj());\n          var notesBox = document.querySelector('.js-notes-box-panel');\n          if (notesBox) notesBox.redraw(notesBox.selectedObj);\n        }\n      });\n    }\n  }\n  if (edits.annotationText) {\n    annText.call(svgTextUtils.makeEditable, {\n      delegate: annTextGroupInner,\n      gd: gd\n    }).call(textLayout).on('edit', function (_text) {\n      options.text = _text;\n      this.call(textLayout);\n      modifyItem('text', _text);\n      if (xa && xa.autorange) {\n        modifyBase(xa._name + '.autorange', true);\n      }\n      if (ya && ya.autorange) {\n        modifyBase(ya._name + '.autorange', true);\n      }\n      Registry.call('_guiRelayout', gd, getUpdateObj());\n    });\n  } else annText.call(textLayout);\n}\n\n/***/ }),\n\n/***/ 13011:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_62068__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_62068__(39898);\nvar Color = __nested_webpack_require_62068__(7901);\nvar ARROWPATHS = __nested_webpack_require_62068__(82884);\nvar Lib = __nested_webpack_require_62068__(71828);\nvar strScale = Lib.strScale;\nvar strRotate = Lib.strRotate;\nvar strTranslate = Lib.strTranslate;\n\n/**\n * Add arrowhead(s) to a path or line element\n *\n * @param {d3.selection} el3: a d3-selected line or path element\n *\n * @param {string} ends: 'none', 'start', 'end', or 'start+end' for which ends get arrowheads\n *\n * @param {object} options: style information. Must have all the following:\n * @param {number} options.arrowhead: end head style - see ./arrow_paths\n * @param {number} options.startarrowhead: start head style - see ./arrow_paths\n * @param {number} options.arrowsize: relative size of the end head vs line width\n * @param {number} options.startarrowsize: relative size of the start head vs line width\n * @param {number} options.standoff: distance in px to move the end arrow point from its target\n * @param {number} options.startstandoff: distance in px to move the start arrow point from its target\n * @param {number} options.arrowwidth: width of the arrow line\n * @param {string} options.arrowcolor: color of the arrow line, for the head to match\n *     Note that the opacity of this color is ignored, as it's assumed the container\n *     of both the line and head has opacity applied to it so there isn't greater opacity\n *     where they overlap.\n */\nmodule.exports = function drawArrowHead(el3, ends, options) {\n  var el = el3.node();\n  var headStyle = ARROWPATHS[options.arrowhead || 0];\n  var startHeadStyle = ARROWPATHS[options.startarrowhead || 0];\n  var scale = (options.arrowwidth || 1) * (options.arrowsize || 1);\n  var startScale = (options.arrowwidth || 1) * (options.startarrowsize || 1);\n  var doStart = ends.indexOf('start') >= 0;\n  var doEnd = ends.indexOf('end') >= 0;\n  var backOff = headStyle.backoff * scale + options.standoff;\n  var startBackOff = startHeadStyle.backoff * startScale + options.startstandoff;\n  var start, end, startRot, endRot;\n  if (el.nodeName === 'line') {\n    start = {\n      x: +el3.attr('x1'),\n      y: +el3.attr('y1')\n    };\n    end = {\n      x: +el3.attr('x2'),\n      y: +el3.attr('y2')\n    };\n    var dx = start.x - end.x;\n    var dy = start.y - end.y;\n    startRot = Math.atan2(dy, dx);\n    endRot = startRot + Math.PI;\n    if (backOff && startBackOff) {\n      if (backOff + startBackOff > Math.sqrt(dx * dx + dy * dy)) {\n        hideLine();\n        return;\n      }\n    }\n    if (backOff) {\n      if (backOff * backOff > dx * dx + dy * dy) {\n        hideLine();\n        return;\n      }\n      var backOffX = backOff * Math.cos(startRot);\n      var backOffY = backOff * Math.sin(startRot);\n      end.x += backOffX;\n      end.y += backOffY;\n      el3.attr({\n        x2: end.x,\n        y2: end.y\n      });\n    }\n    if (startBackOff) {\n      if (startBackOff * startBackOff > dx * dx + dy * dy) {\n        hideLine();\n        return;\n      }\n      var startBackOffX = startBackOff * Math.cos(startRot);\n      var startbackOffY = startBackOff * Math.sin(startRot);\n      start.x -= startBackOffX;\n      start.y -= startbackOffY;\n      el3.attr({\n        x1: start.x,\n        y1: start.y\n      });\n    }\n  } else if (el.nodeName === 'path') {\n    var pathlen = el.getTotalLength();\n    // using dash to hide the backOff region of the path.\n    // if we ever allow dash for the arrow we'll have to\n    // do better than this hack... maybe just manually\n    // combine the two\n    var dashArray = '';\n    if (pathlen < backOff + startBackOff) {\n      hideLine();\n      return;\n    }\n    var start0 = el.getPointAtLength(0);\n    var dstart = el.getPointAtLength(0.1);\n    startRot = Math.atan2(start0.y - dstart.y, start0.x - dstart.x);\n    start = el.getPointAtLength(Math.min(startBackOff, pathlen));\n    dashArray = '0px,' + startBackOff + 'px,';\n    var end0 = el.getPointAtLength(pathlen);\n    var dend = el.getPointAtLength(pathlen - 0.1);\n    endRot = Math.atan2(end0.y - dend.y, end0.x - dend.x);\n    end = el.getPointAtLength(Math.max(0, pathlen - backOff));\n    var shortening = dashArray ? startBackOff + backOff : backOff;\n    dashArray += pathlen - shortening + 'px,' + pathlen + 'px';\n    el3.style('stroke-dasharray', dashArray);\n  }\n  function hideLine() {\n    el3.style('stroke-dasharray', '0px,100px');\n  }\n  function drawhead(arrowHeadStyle, p, rot, arrowScale) {\n    if (!arrowHeadStyle.path) return;\n    if (arrowHeadStyle.noRotate) rot = 0;\n    d3.select(el.parentNode).append('path').attr({\n      'class': el3.attr('class'),\n      d: arrowHeadStyle.path,\n      transform: strTranslate(p.x, p.y) + strRotate(rot * 180 / Math.PI) + strScale(arrowScale)\n    }).style({\n      fill: Color.rgb(options.arrowcolor),\n      'stroke-width': 0\n    });\n  }\n  if (doStart) drawhead(startHeadStyle, start, startRot, startScale);\n  if (doEnd) drawhead(headStyle, end, endRot, scale);\n};\n\n/***/ }),\n\n/***/ 32745:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_67092__) {\n\n\"use strict\";\n\n\nvar drawModule = __nested_webpack_require_67092__(92605);\nvar clickModule = __nested_webpack_require_67092__(44317);\nmodule.exports = {\n  moduleType: 'component',\n  name: 'annotations',\n  layoutAttributes: __nested_webpack_require_67092__(50215),\n  supplyLayoutDefaults: __nested_webpack_require_67092__(84046),\n  includeBasePlot: __nested_webpack_require_67092__(76325)('annotations'),\n  calcAutorange: __nested_webpack_require_67092__(3749),\n  draw: drawModule.draw,\n  drawOne: drawModule.drawOne,\n  drawRaw: drawModule.drawRaw,\n  hasClickToShow: clickModule.hasClickToShow,\n  onClick: clickModule.onClick,\n  convertCoords: __nested_webpack_require_67092__(94128)\n};\n\n/***/ }),\n\n/***/ 26997:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_67785__) {\n\n\"use strict\";\n\n\nvar annAttrs = __nested_webpack_require_67785__(50215);\nvar overrideAll = (__nested_webpack_require_67785__(30962).overrideAll);\nvar templatedArray = (__nested_webpack_require_67785__(44467).templatedArray);\nmodule.exports = overrideAll(templatedArray('annotation', {\n  visible: annAttrs.visible,\n  x: {\n    valType: 'any'\n  },\n  y: {\n    valType: 'any'\n  },\n  z: {\n    valType: 'any'\n  },\n  ax: {\n    valType: 'number'\n  },\n  ay: {\n    valType: 'number'\n  },\n  xanchor: annAttrs.xanchor,\n  xshift: annAttrs.xshift,\n  yanchor: annAttrs.yanchor,\n  yshift: annAttrs.yshift,\n  text: annAttrs.text,\n  textangle: annAttrs.textangle,\n  font: annAttrs.font,\n  width: annAttrs.width,\n  height: annAttrs.height,\n  opacity: annAttrs.opacity,\n  align: annAttrs.align,\n  valign: annAttrs.valign,\n  bgcolor: annAttrs.bgcolor,\n  bordercolor: annAttrs.bordercolor,\n  borderpad: annAttrs.borderpad,\n  borderwidth: annAttrs.borderwidth,\n  showarrow: annAttrs.showarrow,\n  arrowcolor: annAttrs.arrowcolor,\n  arrowhead: annAttrs.arrowhead,\n  startarrowhead: annAttrs.startarrowhead,\n  arrowside: annAttrs.arrowside,\n  arrowsize: annAttrs.arrowsize,\n  startarrowsize: annAttrs.startarrowsize,\n  arrowwidth: annAttrs.arrowwidth,\n  standoff: annAttrs.standoff,\n  startstandoff: annAttrs.startstandoff,\n  hovertext: annAttrs.hovertext,\n  hoverlabel: annAttrs.hoverlabel,\n  captureevents: annAttrs.captureevents\n\n  // maybes later?\n  // clicktoshow: annAttrs.clicktoshow,\n  // xclick: annAttrs.xclick,\n  // yclick: annAttrs.yclick,\n\n  // not needed!\n  // axref: 'pixel'\n  // ayref: 'pixel'\n  // xref: 'x'\n  // yref: 'y\n  // zref: 'z'\n}), 'calc', 'from-root');\n\n/***/ }),\n\n/***/ 5485:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_69496__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_69496__(71828);\nvar Axes = __nested_webpack_require_69496__(89298);\nmodule.exports = function convert(scene) {\n  var fullSceneLayout = scene.fullSceneLayout;\n  var anns = fullSceneLayout.annotations;\n  for (var i = 0; i < anns.length; i++) {\n    mockAnnAxes(anns[i], scene);\n  }\n  scene.fullLayout._infolayer.selectAll('.annotation-' + scene.id).remove();\n};\nfunction mockAnnAxes(ann, scene) {\n  var fullSceneLayout = scene.fullSceneLayout;\n  var domain = fullSceneLayout.domain;\n  var size = scene.fullLayout._size;\n  var base = {\n    // this gets fill in on render\n    pdata: null,\n    // to get setConvert to not execute cleanly\n    type: 'linear',\n    // don't try to update them on `editable: true`\n    autorange: false,\n    // set infinite range so that annotation draw routine\n    // does not try to remove 'outside-range' annotations,\n    // this case is handled in the render loop\n    range: [-Infinity, Infinity]\n  };\n  ann._xa = {};\n  Lib.extendFlat(ann._xa, base);\n  Axes.setConvert(ann._xa);\n  ann._xa._offset = size.l + domain.x[0] * size.w;\n  ann._xa.l2p = function () {\n    return 0.5 * (1 + ann._pdata[0] / ann._pdata[3]) * size.w * (domain.x[1] - domain.x[0]);\n  };\n  ann._ya = {};\n  Lib.extendFlat(ann._ya, base);\n  Axes.setConvert(ann._ya);\n  ann._ya._offset = size.t + (1 - domain.y[1]) * size.h;\n  ann._ya.l2p = function () {\n    return 0.5 * (1 - ann._pdata[1] / ann._pdata[3]) * size.h * (domain.y[1] - domain.y[0]);\n  };\n}\n\n/***/ }),\n\n/***/ 20226:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_71068__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_71068__(71828);\nvar Axes = __nested_webpack_require_71068__(89298);\nvar handleArrayContainerDefaults = __nested_webpack_require_71068__(85501);\nvar handleAnnotationCommonDefaults = __nested_webpack_require_71068__(25625);\nvar attributes = __nested_webpack_require_71068__(26997);\nmodule.exports = function handleDefaults(sceneLayoutIn, sceneLayoutOut, opts) {\n  handleArrayContainerDefaults(sceneLayoutIn, sceneLayoutOut, {\n    name: 'annotations',\n    handleItemDefaults: handleAnnotationDefaults,\n    fullLayout: opts.fullLayout\n  });\n};\nfunction handleAnnotationDefaults(annIn, annOut, sceneLayout, opts) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(annIn, annOut, attributes, attr, dflt);\n  }\n  function coercePosition(axLetter) {\n    var axName = axLetter + 'axis';\n\n    // mock in such way that getFromId grabs correct 3D axis\n    var gdMock = {\n      _fullLayout: {}\n    };\n    gdMock._fullLayout[axName] = sceneLayout[axName];\n    return Axes.coercePosition(annOut, gdMock, coerce, axLetter, axLetter, 0.5);\n  }\n  var visible = coerce('visible');\n  if (!visible) return;\n  handleAnnotationCommonDefaults(annIn, annOut, opts.fullLayout, coerce);\n  coercePosition('x');\n  coercePosition('y');\n  coercePosition('z');\n\n  // if you have one coordinate you should all three\n  Lib.noneOrAll(annIn, annOut, ['x', 'y', 'z']);\n\n  // hard-set here for completeness\n  annOut.xref = 'x';\n  annOut.yref = 'y';\n  annOut.zref = 'z';\n  coerce('xanchor');\n  coerce('yanchor');\n  coerce('xshift');\n  coerce('yshift');\n  if (annOut.showarrow) {\n    annOut.axref = 'pixel';\n    annOut.ayref = 'pixel';\n\n    // TODO maybe default values should be bigger than the 2D case?\n    coerce('ax', -10);\n    coerce('ay', -30);\n\n    // if you have one part of arrow length you should have both\n    Lib.noneOrAll(annIn, annOut, ['ax', 'ay']);\n  }\n}\n\n/***/ }),\n\n/***/ 82188:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_72988__) {\n\n\"use strict\";\n\n\nvar drawRaw = (__nested_webpack_require_72988__(92605).drawRaw);\nvar project = __nested_webpack_require_72988__(63538);\nvar axLetters = ['x', 'y', 'z'];\nmodule.exports = function draw(scene) {\n  var fullSceneLayout = scene.fullSceneLayout;\n  var dataScale = scene.dataScale;\n  var anns = fullSceneLayout.annotations;\n  for (var i = 0; i < anns.length; i++) {\n    var ann = anns[i];\n    var annotationIsOffscreen = false;\n    for (var j = 0; j < 3; j++) {\n      var axLetter = axLetters[j];\n      var pos = ann[axLetter];\n      var ax = fullSceneLayout[axLetter + 'axis'];\n      var posFraction = ax.r2fraction(pos);\n      if (posFraction < 0 || posFraction > 1) {\n        annotationIsOffscreen = true;\n        break;\n      }\n    }\n    if (annotationIsOffscreen) {\n      scene.fullLayout._infolayer.select('.annotation-' + scene.id + '[data-index=\"' + i + '\"]').remove();\n    } else {\n      ann._pdata = project(scene.glplot.cameraParams, [fullSceneLayout.xaxis.r2l(ann.x) * dataScale[0], fullSceneLayout.yaxis.r2l(ann.y) * dataScale[1], fullSceneLayout.zaxis.r2l(ann.z) * dataScale[2]]);\n      drawRaw(scene.graphDiv, ann, i, scene.id, ann._xa, ann._ya);\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 2468:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_74244__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_74244__(73972);\nvar Lib = __nested_webpack_require_74244__(71828);\nmodule.exports = {\n  moduleType: 'component',\n  name: 'annotations3d',\n  schema: {\n    subplots: {\n      scene: {\n        annotations: __nested_webpack_require_74244__(26997)\n      }\n    }\n  },\n  layoutAttributes: __nested_webpack_require_74244__(26997),\n  handleDefaults: __nested_webpack_require_74244__(20226),\n  includeBasePlot: includeGL3D,\n  convert: __nested_webpack_require_74244__(5485),\n  draw: __nested_webpack_require_74244__(82188)\n};\nfunction includeGL3D(layoutIn, layoutOut) {\n  var GL3D = Registry.subplotsRegistry.gl3d;\n  if (!GL3D) return;\n  var attrRegex = GL3D.attrRegex;\n  var keys = Object.keys(layoutIn);\n  for (var i = 0; i < keys.length; i++) {\n    var k = keys[i];\n    if (attrRegex.test(k) && (layoutIn[k].annotations || []).length) {\n      Lib.pushUnique(layoutOut._basePlotModules, GL3D);\n      Lib.pushUnique(layoutOut._subplots.gl3d, k);\n    }\n  }\n}\n\n/***/ }),\n\n/***/ 7561:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_75255__) {\n\n\"use strict\";\n\n\n// a trimmed down version of:\n// https://github.com/alexcjohnson/world-calendars/blob/master/dist/index.js\nmodule.exports = __nested_webpack_require_75255__(63489);\n__nested_webpack_require_75255__(94338);\n__nested_webpack_require_75255__(3961);\n__nested_webpack_require_75255__(38751);\n__nested_webpack_require_75255__(86825);\n__nested_webpack_require_75255__(37715);\n__nested_webpack_require_75255__(99384);\n__nested_webpack_require_75255__(43805);\n__nested_webpack_require_75255__(88874);\n__nested_webpack_require_75255__(83290);\n__nested_webpack_require_75255__(29108);\n__nested_webpack_require_75255__(55422);\n__nested_webpack_require_75255__(94320);\n__nested_webpack_require_75255__(31320);\n__nested_webpack_require_75255__(51367);\n__nested_webpack_require_75255__(21457);\n\n/***/ }),\n\n/***/ 72201:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_75941__) {\n\n\"use strict\";\n\n\nvar calendars = __nested_webpack_require_75941__(7561);\nvar Lib = __nested_webpack_require_75941__(71828);\nvar constants = __nested_webpack_require_75941__(50606);\nvar EPOCHJD = constants.EPOCHJD;\nvar ONEDAY = constants.ONEDAY;\nvar attributes = {\n  valType: 'enumerated',\n  values: Lib.sortObjectKeys(calendars.calendars),\n  editType: 'calc',\n  dflt: 'gregorian'\n};\nvar handleDefaults = function (contIn, contOut, attr, dflt) {\n  var attrs = {};\n  attrs[attr] = attributes;\n  return Lib.coerce(contIn, contOut, attrs, attr, dflt);\n};\nvar handleTraceDefaults = function (traceIn, traceOut, coords, layout) {\n  for (var i = 0; i < coords.length; i++) {\n    handleDefaults(traceIn, traceOut, coords[i] + 'calendar', layout.calendar);\n  }\n};\n\n// each calendar needs its own default canonical tick. I would love to use\n// 2000-01-01 (or even 0000-01-01) for them all but they don't necessarily\n// all support either of those dates. Instead I'll use the most significant\n// number they *do* support, biased toward the present day.\nvar CANONICAL_TICK = {\n  chinese: '2000-01-01',\n  coptic: '2000-01-01',\n  discworld: '2000-01-01',\n  ethiopian: '2000-01-01',\n  hebrew: '5000-01-01',\n  islamic: '1000-01-01',\n  julian: '2000-01-01',\n  mayan: '5000-01-01',\n  nanakshahi: '1000-01-01',\n  nepali: '2000-01-01',\n  persian: '1000-01-01',\n  jalali: '1000-01-01',\n  taiwan: '1000-01-01',\n  thai: '2000-01-01',\n  ummalqura: '1400-01-01'\n};\n\n// Start on a Sunday - for week ticks\n// Discworld and Mayan calendars don't have 7-day weeks but we're going to give them\n// 7-day week ticks so start on our Sundays.\n// If anyone really cares we can customize the auto tick spacings for these calendars.\nvar CANONICAL_SUNDAY = {\n  chinese: '2000-01-02',\n  coptic: '2000-01-03',\n  discworld: '2000-01-03',\n  ethiopian: '2000-01-05',\n  hebrew: '5000-01-01',\n  islamic: '1000-01-02',\n  julian: '2000-01-03',\n  mayan: '5000-01-01',\n  nanakshahi: '1000-01-05',\n  nepali: '2000-01-05',\n  persian: '1000-01-01',\n  jalali: '1000-01-01',\n  taiwan: '1000-01-04',\n  thai: '2000-01-04',\n  ummalqura: '1400-01-06'\n};\nvar DFLTRANGE = {\n  chinese: ['2000-01-01', '2001-01-01'],\n  coptic: ['1700-01-01', '1701-01-01'],\n  discworld: ['1800-01-01', '1801-01-01'],\n  ethiopian: ['2000-01-01', '2001-01-01'],\n  hebrew: ['5700-01-01', '5701-01-01'],\n  islamic: ['1400-01-01', '1401-01-01'],\n  julian: ['2000-01-01', '2001-01-01'],\n  mayan: ['5200-01-01', '5201-01-01'],\n  nanakshahi: ['0500-01-01', '0501-01-01'],\n  nepali: ['2000-01-01', '2001-01-01'],\n  persian: ['1400-01-01', '1401-01-01'],\n  jalali: ['1400-01-01', '1401-01-01'],\n  taiwan: ['0100-01-01', '0101-01-01'],\n  thai: ['2500-01-01', '2501-01-01'],\n  ummalqura: ['1400-01-01', '1401-01-01']\n};\n\n/*\n * convert d3 templates to world-calendars templates, so our users only need\n * to know d3's specifiers. Map space padding to no padding, and unknown fields\n * to an ugly placeholder\n */\nvar UNKNOWN = '##';\nvar d3ToWorldCalendars = {\n  'd': {\n    '0': 'dd',\n    '-': 'd'\n  },\n  // 2-digit or unpadded day of month\n  'e': {\n    '0': 'd',\n    '-': 'd'\n  },\n  // alternate, always unpadded day of month\n  'a': {\n    '0': 'D',\n    '-': 'D'\n  },\n  // short weekday name\n  'A': {\n    '0': 'DD',\n    '-': 'DD'\n  },\n  // full weekday name\n  'j': {\n    '0': 'oo',\n    '-': 'o'\n  },\n  // 3-digit or unpadded day of the year\n  'W': {\n    '0': 'ww',\n    '-': 'w'\n  },\n  // 2-digit or unpadded week of the year (Monday first)\n  'm': {\n    '0': 'mm',\n    '-': 'm'\n  },\n  // 2-digit or unpadded month number\n  'b': {\n    '0': 'M',\n    '-': 'M'\n  },\n  // short month name\n  'B': {\n    '0': 'MM',\n    '-': 'MM'\n  },\n  // full month name\n  'y': {\n    '0': 'yy',\n    '-': 'yy'\n  },\n  // 2-digit year (map unpadded to zero-padded)\n  'Y': {\n    '0': 'yyyy',\n    '-': 'yyyy'\n  },\n  // 4-digit year (map unpadded to zero-padded)\n  'U': UNKNOWN,\n  // Sunday-first week of the year\n  'w': UNKNOWN,\n  // day of the week [0(sunday),6]\n  // combined format, we replace the date part with the world-calendar version\n  // and the %X stays there for d3 to handle with time parts\n  'c': {\n    '0': 'D M d %X yyyy',\n    '-': 'D M d %X yyyy'\n  },\n  'x': {\n    '0': 'mm/dd/yyyy',\n    '-': 'mm/dd/yyyy'\n  }\n};\nfunction worldCalFmt(fmt, x, calendar) {\n  var dateJD = Math.floor((x + 0.05) / ONEDAY) + EPOCHJD;\n  var cDate = getCal(calendar).fromJD(dateJD);\n  var i = 0;\n  var modifier, directive, directiveLen, directiveObj, replacementPart;\n  while ((i = fmt.indexOf('%', i)) !== -1) {\n    modifier = fmt.charAt(i + 1);\n    if (modifier === '0' || modifier === '-' || modifier === '_') {\n      directiveLen = 3;\n      directive = fmt.charAt(i + 2);\n      if (modifier === '_') modifier = '-';\n    } else {\n      directive = modifier;\n      modifier = '0';\n      directiveLen = 2;\n    }\n    directiveObj = d3ToWorldCalendars[directive];\n    if (!directiveObj) {\n      i += directiveLen;\n    } else {\n      // code is recognized as a date part but world-calendars doesn't support it\n      if (directiveObj === UNKNOWN) replacementPart = UNKNOWN;\n\n      // format the cDate according to the translated directive\n      else replacementPart = cDate.formatDate(directiveObj[modifier]);\n      fmt = fmt.substr(0, i) + replacementPart + fmt.substr(i + directiveLen);\n      i += replacementPart.length;\n    }\n  }\n  return fmt;\n}\n\n// cache world calendars, so we don't have to reinstantiate\n// during each date-time conversion\nvar allCals = {};\nfunction getCal(calendar) {\n  var calendarObj = allCals[calendar];\n  if (calendarObj) return calendarObj;\n  calendarObj = allCals[calendar] = calendars.instance(calendar);\n  return calendarObj;\n}\nfunction makeAttrs(description) {\n  return Lib.extendFlat({}, attributes, {\n    description: description\n  });\n}\nfunction makeTraceAttrsDescription(coord) {\n  return 'Sets the calendar system to use with `' + coord + '` date data.';\n}\nvar xAttrs = {\n  xcalendar: makeAttrs(makeTraceAttrsDescription('x'))\n};\nvar xyAttrs = Lib.extendFlat({}, xAttrs, {\n  ycalendar: makeAttrs(makeTraceAttrsDescription('y'))\n});\nvar xyzAttrs = Lib.extendFlat({}, xyAttrs, {\n  zcalendar: makeAttrs(makeTraceAttrsDescription('z'))\n});\nvar axisAttrs = makeAttrs(['Sets the calendar system to use for `range` and `tick0`', 'if this is a date axis. This does not set the calendar for', 'interpreting data on this axis, that\\'s specified in the trace', 'or via the global `layout.calendar`'].join(' '));\nmodule.exports = {\n  moduleType: 'component',\n  name: 'calendars',\n  schema: {\n    traces: {\n      scatter: xyAttrs,\n      bar: xyAttrs,\n      box: xyAttrs,\n      heatmap: xyAttrs,\n      contour: xyAttrs,\n      histogram: xyAttrs,\n      histogram2d: xyAttrs,\n      histogram2dcontour: xyAttrs,\n      scatter3d: xyzAttrs,\n      surface: xyzAttrs,\n      mesh3d: xyzAttrs,\n      scattergl: xyAttrs,\n      ohlc: xAttrs,\n      candlestick: xAttrs\n    },\n    layout: {\n      calendar: makeAttrs(['Sets the default calendar system to use for interpreting and', 'displaying dates throughout the plot.'].join(' '))\n    },\n    subplots: {\n      xaxis: {\n        calendar: axisAttrs\n      },\n      yaxis: {\n        calendar: axisAttrs\n      },\n      scene: {\n        xaxis: {\n          calendar: axisAttrs\n        },\n        // TODO: it's actually redundant to include yaxis and zaxis here\n        // because in the scene attributes these are the same object so merging\n        // into one merges into them all. However, I left them in for parity with\n        // cartesian, where yaxis is unused until we Plotschema.get() when we\n        // use its presence or absence to determine whether to delete attributes\n        // from yaxis if they only apply to x (rangeselector/rangeslider)\n        yaxis: {\n          calendar: axisAttrs\n        },\n        zaxis: {\n          calendar: axisAttrs\n        }\n      },\n      polar: {\n        radialaxis: {\n          calendar: axisAttrs\n        }\n      }\n    },\n    transforms: {\n      filter: {\n        valuecalendar: makeAttrs(['WARNING: All transforms are deprecated and may be removed from the API in next major version.', 'Sets the calendar system to use for `value`, if it is a date.'].join(' ')),\n        targetcalendar: makeAttrs(['WARNING: All transforms are deprecated and may be removed from the API in next major version.', 'Sets the calendar system to use for `target`, if it is an', 'array of dates. If `target` is a string (eg *x*) we use the', 'corresponding trace attribute (eg `xcalendar`) if it exists,', 'even if `targetcalendar` is provided.'].join(' '))\n      }\n    }\n  },\n  layoutAttributes: attributes,\n  handleDefaults: handleDefaults,\n  handleTraceDefaults: handleTraceDefaults,\n  CANONICAL_SUNDAY: CANONICAL_SUNDAY,\n  CANONICAL_TICK: CANONICAL_TICK,\n  DFLTRANGE: DFLTRANGE,\n  getCal: getCal,\n  worldCalFmt: worldCalFmt\n};\n\n/***/ }),\n\n/***/ 22399:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\n// IMPORTANT - default colors should be in hex for compatibility\nexports.defaults = ['#1f77b4',\n// muted blue\n'#ff7f0e',\n// safety orange\n'#2ca02c',\n// cooked asparagus green\n'#d62728',\n// brick red\n'#9467bd',\n// muted purple\n'#8c564b',\n// chestnut brown\n'#e377c2',\n// raspberry yogurt pink\n'#7f7f7f',\n// middle gray\n'#bcbd22',\n// curry yellow-green\n'#17becf' // blue-teal\n];\n\nexports.defaultLine = '#444';\nexports.lightLine = '#eee';\nexports.background = '#fff';\nexports.borderLine = '#BEC8D9';\n\n// with axis.color and Color.interp we aren't using lightLine\n// itself anymore, instead interpolating between axis.color\n// and the background color using tinycolor.mix. lightFraction\n// gives back exactly lightLine if the other colors are defaults.\nexports.lightFraction = 100 * (0xe - 0x4) / (0xf - 0x4);\n\n/***/ }),\n\n/***/ 7901:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_85682__) {\n\n\"use strict\";\n\n\nvar tinycolor = __nested_webpack_require_85682__(84267);\nvar isNumeric = __nested_webpack_require_85682__(92770);\nvar isTypedArray = (__nested_webpack_require_85682__(73627).isTypedArray);\nvar color = module.exports = {};\nvar colorAttrs = __nested_webpack_require_85682__(22399);\ncolor.defaults = colorAttrs.defaults;\nvar defaultLine = color.defaultLine = colorAttrs.defaultLine;\ncolor.lightLine = colorAttrs.lightLine;\nvar background = color.background = colorAttrs.background;\n\n/*\n * tinyRGB: turn a tinycolor into an rgb string, but\n * unlike the built-in tinycolor.toRgbString this never includes alpha\n */\ncolor.tinyRGB = function (tc) {\n  var c = tc.toRgb();\n  return 'rgb(' + Math.round(c.r) + ', ' + Math.round(c.g) + ', ' + Math.round(c.b) + ')';\n};\ncolor.rgb = function (cstr) {\n  return color.tinyRGB(tinycolor(cstr));\n};\ncolor.opacity = function (cstr) {\n  return cstr ? tinycolor(cstr).getAlpha() : 0;\n};\ncolor.addOpacity = function (cstr, op) {\n  var c = tinycolor(cstr).toRgb();\n  return 'rgba(' + Math.round(c.r) + ', ' + Math.round(c.g) + ', ' + Math.round(c.b) + ', ' + op + ')';\n};\n\n// combine two colors into one apparent color\n// if back has transparency or is missing,\n// color.background is assumed behind it\ncolor.combine = function (front, back) {\n  var fc = tinycolor(front).toRgb();\n  if (fc.a === 1) return tinycolor(front).toRgbString();\n  var bc = tinycolor(back || background).toRgb();\n  var bcflat = bc.a === 1 ? bc : {\n    r: 255 * (1 - bc.a) + bc.r * bc.a,\n    g: 255 * (1 - bc.a) + bc.g * bc.a,\n    b: 255 * (1 - bc.a) + bc.b * bc.a\n  };\n  var fcflat = {\n    r: bcflat.r * (1 - fc.a) + fc.r * fc.a,\n    g: bcflat.g * (1 - fc.a) + fc.g * fc.a,\n    b: bcflat.b * (1 - fc.a) + fc.b * fc.a\n  };\n  return tinycolor(fcflat).toRgbString();\n};\n\n/*\n * Create a color that contrasts with cstr.\n *\n * If cstr is a dark color, we lighten it; if it's light, we darken.\n *\n * If lightAmount / darkAmount are used, we adjust by these percentages,\n * otherwise we go all the way to white or black.\n */\ncolor.contrast = function (cstr, lightAmount, darkAmount) {\n  var tc = tinycolor(cstr);\n  if (tc.getAlpha() !== 1) tc = tinycolor(color.combine(cstr, background));\n  var newColor = tc.isDark() ? lightAmount ? tc.lighten(lightAmount) : background : darkAmount ? tc.darken(darkAmount) : defaultLine;\n  return newColor.toString();\n};\ncolor.stroke = function (s, c) {\n  var tc = tinycolor(c);\n  s.style({\n    'stroke': color.tinyRGB(tc),\n    'stroke-opacity': tc.getAlpha()\n  });\n};\ncolor.fill = function (s, c) {\n  var tc = tinycolor(c);\n  s.style({\n    'fill': color.tinyRGB(tc),\n    'fill-opacity': tc.getAlpha()\n  });\n};\n\n// search container for colors with the deprecated rgb(fractions) format\n// and convert them to rgb(0-255 values)\ncolor.clean = function (container) {\n  if (!container || typeof container !== 'object') return;\n  var keys = Object.keys(container);\n  var i, j, key, val;\n  for (i = 0; i < keys.length; i++) {\n    key = keys[i];\n    val = container[key];\n    if (key.substr(key.length - 5) === 'color') {\n      // only sanitize keys that end in \"color\" or \"colorscale\"\n\n      if (Array.isArray(val)) {\n        for (j = 0; j < val.length; j++) val[j] = cleanOne(val[j]);\n      } else container[key] = cleanOne(val);\n    } else if (key.substr(key.length - 10) === 'colorscale' && Array.isArray(val)) {\n      // colorscales have the format [[0, color1], [frac, color2], ... [1, colorN]]\n\n      for (j = 0; j < val.length; j++) {\n        if (Array.isArray(val[j])) val[j][1] = cleanOne(val[j][1]);\n      }\n    } else if (Array.isArray(val)) {\n      // recurse into arrays of objects, and plain objects\n\n      var el0 = val[0];\n      if (!Array.isArray(el0) && el0 && typeof el0 === 'object') {\n        for (j = 0; j < val.length; j++) color.clean(val[j]);\n      }\n    } else if (val && typeof val === 'object' && !isTypedArray(val)) color.clean(val);\n  }\n};\nfunction cleanOne(val) {\n  if (isNumeric(val) || typeof val !== 'string') return val;\n  var valTrim = val.trim();\n  if (valTrim.substr(0, 3) !== 'rgb') return val;\n  var match = valTrim.match(/^rgba?\\s*\\(([^()]*)\\)$/);\n  if (!match) return val;\n  var parts = match[1].trim().split(/\\s*[\\s,]\\s*/);\n  var rgba = valTrim.charAt(3) === 'a' && parts.length === 4;\n  if (!rgba && parts.length !== 3) return val;\n  for (var i = 0; i < parts.length; i++) {\n    if (!parts[i].length) return val;\n    parts[i] = Number(parts[i]);\n    if (!(parts[i] >= 0)) {\n      // all parts must be non-negative numbers\n\n      return val;\n    }\n    if (i === 3) {\n      // alpha>1 gets clipped to 1\n\n      if (parts[i] > 1) parts[i] = 1;\n    } else if (parts[i] >= 1) {\n      // r, g, b must be < 1 (ie 1 itself is not allowed)\n\n      return val;\n    }\n  }\n  var rgbStr = Math.round(parts[0] * 255) + ', ' + Math.round(parts[1] * 255) + ', ' + Math.round(parts[2] * 255);\n  if (rgba) return 'rgba(' + rgbStr + ', ' + parts[3] + ')';\n  return 'rgb(' + rgbStr + ')';\n}\n\n/***/ }),\n\n/***/ 63583:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_90682__) {\n\n\"use strict\";\n\n\nvar axesAttrs = __nested_webpack_require_90682__(13838);\nvar fontAttrs = __nested_webpack_require_90682__(41940);\nvar extendFlat = (__nested_webpack_require_90682__(1426).extendFlat);\nvar overrideAll = (__nested_webpack_require_90682__(30962).overrideAll);\nmodule.exports = overrideAll({\n  orientation: {\n    valType: 'enumerated',\n    values: ['h', 'v'],\n    dflt: 'v'\n  },\n  thicknessmode: {\n    valType: 'enumerated',\n    values: ['fraction', 'pixels'],\n    dflt: 'pixels'\n  },\n  thickness: {\n    valType: 'number',\n    min: 0,\n    dflt: 30\n  },\n  lenmode: {\n    valType: 'enumerated',\n    values: ['fraction', 'pixels'],\n    dflt: 'fraction'\n  },\n  len: {\n    valType: 'number',\n    min: 0,\n    dflt: 1\n  },\n  x: {\n    valType: 'number',\n    min: -2,\n    max: 3\n  },\n  xanchor: {\n    valType: 'enumerated',\n    values: ['left', 'center', 'right']\n  },\n  xpad: {\n    valType: 'number',\n    min: 0,\n    dflt: 10\n  },\n  y: {\n    valType: 'number',\n    min: -2,\n    max: 3\n  },\n  yanchor: {\n    valType: 'enumerated',\n    values: ['top', 'middle', 'bottom']\n  },\n  ypad: {\n    valType: 'number',\n    min: 0,\n    dflt: 10\n  },\n  // a possible line around the bar itself\n  outlinecolor: axesAttrs.linecolor,\n  outlinewidth: axesAttrs.linewidth,\n  // Should outlinewidth have {dflt: 0} ?\n  // another possible line outside the padding and tick labels\n  bordercolor: axesAttrs.linecolor,\n  borderwidth: {\n    valType: 'number',\n    min: 0,\n    dflt: 0\n  },\n  bgcolor: {\n    valType: 'color',\n    dflt: 'rgba(0,0,0,0)'\n  },\n  // tick and title properties named and function exactly as in axes\n  tickmode: axesAttrs.minor.tickmode,\n  nticks: axesAttrs.nticks,\n  tick0: axesAttrs.tick0,\n  dtick: axesAttrs.dtick,\n  tickvals: axesAttrs.tickvals,\n  ticktext: axesAttrs.ticktext,\n  ticks: extendFlat({}, axesAttrs.ticks, {\n    dflt: ''\n  }),\n  ticklabeloverflow: extendFlat({}, axesAttrs.ticklabeloverflow, {}),\n  // ticklabelposition: not used directly, as values depend on orientation\n  // left/right options are for x axes, and top/bottom options are for y axes\n  ticklabelposition: {\n    valType: 'enumerated',\n    values: ['outside', 'inside', 'outside top', 'inside top', 'outside left', 'inside left', 'outside right', 'inside right', 'outside bottom', 'inside bottom'],\n    dflt: 'outside'\n  },\n  ticklen: axesAttrs.ticklen,\n  tickwidth: axesAttrs.tickwidth,\n  tickcolor: axesAttrs.tickcolor,\n  ticklabelstep: axesAttrs.ticklabelstep,\n  showticklabels: axesAttrs.showticklabels,\n  tickfont: fontAttrs({}),\n  tickangle: axesAttrs.tickangle,\n  tickformat: axesAttrs.tickformat,\n  tickformatstops: axesAttrs.tickformatstops,\n  tickprefix: axesAttrs.tickprefix,\n  showtickprefix: axesAttrs.showtickprefix,\n  ticksuffix: axesAttrs.ticksuffix,\n  showticksuffix: axesAttrs.showticksuffix,\n  separatethousands: axesAttrs.separatethousands,\n  exponentformat: axesAttrs.exponentformat,\n  minexponent: axesAttrs.minexponent,\n  showexponent: axesAttrs.showexponent,\n  title: {\n    text: {\n      valType: 'string'\n    },\n    font: fontAttrs({}),\n    side: {\n      valType: 'enumerated',\n      values: ['right', 'top', 'bottom']\n    }\n  },\n  _deprecated: {\n    title: {\n      valType: 'string'\n    },\n    titlefont: fontAttrs({}),\n    titleside: {\n      valType: 'enumerated',\n      values: ['right', 'top', 'bottom'],\n      dflt: 'top'\n    }\n  }\n}, 'colorbars', 'from-root');\n\n/***/ }),\n\n/***/ 30939:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  cn: {\n    colorbar: 'colorbar',\n    cbbg: 'cbbg',\n    cbfill: 'cbfill',\n    cbfills: 'cbfills',\n    cbline: 'cbline',\n    cblines: 'cblines',\n    cbaxis: 'cbaxis',\n    cbtitleunshift: 'cbtitleunshift',\n    cbtitle: 'cbtitle',\n    cboutline: 'cboutline',\n    crisp: 'crisp',\n    jsPlaceholder: 'js-placeholder'\n  }\n};\n\n/***/ }),\n\n/***/ 62499:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_94512__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_94512__(71828);\nvar Template = __nested_webpack_require_94512__(44467);\nvar handleTickValueDefaults = __nested_webpack_require_94512__(26218);\nvar handleTickMarkDefaults = __nested_webpack_require_94512__(38701);\nvar handleTickLabelDefaults = __nested_webpack_require_94512__(96115);\nvar handlePrefixSuffixDefaults = __nested_webpack_require_94512__(89426);\nvar attributes = __nested_webpack_require_94512__(63583);\nmodule.exports = function colorbarDefaults(containerIn, containerOut, layout) {\n  var colorbarOut = Template.newContainer(containerOut, 'colorbar');\n  var colorbarIn = containerIn.colorbar || {};\n  function coerce(attr, dflt) {\n    return Lib.coerce(colorbarIn, colorbarOut, attributes, attr, dflt);\n  }\n  var margin = layout.margin || {\n    t: 0,\n    b: 0,\n    l: 0,\n    r: 0\n  };\n  var w = layout.width - margin.l - margin.r;\n  var h = layout.height - margin.t - margin.b;\n  var orientation = coerce('orientation');\n  var isVertical = orientation === 'v';\n  var thicknessmode = coerce('thicknessmode');\n  coerce('thickness', thicknessmode === 'fraction' ? 30 / (isVertical ? w : h) : 30);\n  var lenmode = coerce('lenmode');\n  coerce('len', lenmode === 'fraction' ? 1 : isVertical ? h : w);\n  coerce('x', isVertical ? 1.02 : 0.5);\n  coerce('xanchor', isVertical ? 'left' : 'center');\n  coerce('xpad');\n  coerce('y', isVertical ? 0.5 : 1.02);\n  coerce('yanchor', isVertical ? 'middle' : 'bottom');\n  coerce('ypad');\n  Lib.noneOrAll(colorbarIn, colorbarOut, ['x', 'y']);\n  coerce('outlinecolor');\n  coerce('outlinewidth');\n  coerce('bordercolor');\n  coerce('borderwidth');\n  coerce('bgcolor');\n  var ticklabelposition = Lib.coerce(colorbarIn, colorbarOut, {\n    ticklabelposition: {\n      valType: 'enumerated',\n      dflt: 'outside',\n      values: isVertical ? ['outside', 'inside', 'outside top', 'inside top', 'outside bottom', 'inside bottom'] : ['outside', 'inside', 'outside left', 'inside left', 'outside right', 'inside right']\n    }\n  }, 'ticklabelposition');\n  coerce('ticklabeloverflow', ticklabelposition.indexOf('inside') !== -1 ? 'hide past domain' : 'hide past div');\n  handleTickValueDefaults(colorbarIn, colorbarOut, coerce, 'linear');\n  var font = layout.font;\n  var opts = {\n    outerTicks: false,\n    font: font\n  };\n  if (ticklabelposition.indexOf('inside') !== -1) {\n    opts.bgColor = 'black'; // could we instead use the average of colors in the scale?\n  }\n\n  handlePrefixSuffixDefaults(colorbarIn, colorbarOut, coerce, 'linear', opts);\n  handleTickLabelDefaults(colorbarIn, colorbarOut, coerce, 'linear', opts);\n  handleTickMarkDefaults(colorbarIn, colorbarOut, coerce, 'linear', opts);\n  coerce('title.text', layout._dfltTitle.colorbar);\n  var tickFont = colorbarOut.tickfont;\n  var dfltTitleFont = Lib.extendFlat({}, tickFont, {\n    color: font.color,\n    size: Lib.bigFont(tickFont.size)\n  });\n  Lib.coerceFont(coerce, 'title.font', dfltTitleFont);\n  coerce('title.side', isVertical ? 'top' : 'right');\n};\n\n/***/ }),\n\n/***/ 98981:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_97520__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_97520__(39898);\nvar tinycolor = __nested_webpack_require_97520__(84267);\nvar Plots = __nested_webpack_require_97520__(74875);\nvar Registry = __nested_webpack_require_97520__(73972);\nvar Axes = __nested_webpack_require_97520__(89298);\nvar dragElement = __nested_webpack_require_97520__(28569);\nvar Lib = __nested_webpack_require_97520__(71828);\nvar strTranslate = Lib.strTranslate;\nvar extendFlat = (__nested_webpack_require_97520__(1426).extendFlat);\nvar setCursor = __nested_webpack_require_97520__(6964);\nvar Drawing = __nested_webpack_require_97520__(91424);\nvar Color = __nested_webpack_require_97520__(7901);\nvar Titles = __nested_webpack_require_97520__(92998);\nvar svgTextUtils = __nested_webpack_require_97520__(63893);\nvar flipScale = (__nested_webpack_require_97520__(52075).flipScale);\nvar handleAxisDefaults = __nested_webpack_require_97520__(71453);\nvar handleAxisPositionDefaults = __nested_webpack_require_97520__(52830);\nvar axisLayoutAttrs = __nested_webpack_require_97520__(13838);\nvar alignmentConstants = __nested_webpack_require_97520__(18783);\nvar LINE_SPACING = alignmentConstants.LINE_SPACING;\nvar FROM_TL = alignmentConstants.FROM_TL;\nvar FROM_BR = alignmentConstants.FROM_BR;\nvar cn = (__nested_webpack_require_97520__(30939).cn);\nfunction draw(gd) {\n  var fullLayout = gd._fullLayout;\n  var colorBars = fullLayout._infolayer.selectAll('g.' + cn.colorbar).data(makeColorBarData(gd), function (opts) {\n    return opts._id;\n  });\n  colorBars.enter().append('g').attr('class', function (opts) {\n    return opts._id;\n  }).classed(cn.colorbar, true);\n  colorBars.each(function (opts) {\n    var g = d3.select(this);\n    Lib.ensureSingle(g, 'rect', cn.cbbg);\n    Lib.ensureSingle(g, 'g', cn.cbfills);\n    Lib.ensureSingle(g, 'g', cn.cblines);\n    Lib.ensureSingle(g, 'g', cn.cbaxis, function (s) {\n      s.classed(cn.crisp, true);\n    });\n    Lib.ensureSingle(g, 'g', cn.cbtitleunshift, function (s) {\n      s.append('g').classed(cn.cbtitle, true);\n    });\n    Lib.ensureSingle(g, 'rect', cn.cboutline);\n    var done = drawColorBar(g, opts, gd);\n    if (done && done.then) (gd._promises || []).push(done);\n    if (gd._context.edits.colorbarPosition) {\n      makeEditable(g, opts, gd);\n    }\n  });\n  colorBars.exit().each(function (opts) {\n    Plots.autoMargin(gd, opts._id);\n  }).remove();\n  colorBars.order();\n}\nfunction makeColorBarData(gd) {\n  var fullLayout = gd._fullLayout;\n  var calcdata = gd.calcdata;\n  var out = [];\n\n  // single out item\n  var opts;\n  // colorbar attr parent container\n  var cont;\n  // trace attr container\n  var trace;\n  // colorbar options\n  var cbOpt;\n  function initOpts(opts) {\n    return extendFlat(opts, {\n      // fillcolor can be a d3 scale, domain is z values, range is colors\n      // or leave it out for no fill,\n      // or set to a string constant for single-color fill\n      _fillcolor: null,\n      // line.color has the same options as fillcolor\n      _line: {\n        color: null,\n        width: null,\n        dash: null\n      },\n      // levels of lines to draw.\n      // note that this DOES NOT determine the extent of the bar\n      // that's given by the domain of fillcolor\n      // (or line.color if no fillcolor domain)\n      _levels: {\n        start: null,\n        end: null,\n        size: null\n      },\n      // separate fill levels (for example, heatmap coloring of a\n      // contour map) if this is omitted, fillcolors will be\n      // evaluated halfway between levels\n      _filllevels: null,\n      // for continuous colorscales: fill with a gradient instead of explicit levels\n      // value should be the colorscale [[0, c0], [v1, c1], ..., [1, cEnd]]\n      _fillgradient: null,\n      // when using a gradient, we need the data range specified separately\n      _zrange: null\n    });\n  }\n  function calcOpts() {\n    if (typeof cbOpt.calc === 'function') {\n      cbOpt.calc(gd, trace, opts);\n    } else {\n      opts._fillgradient = cont.reversescale ? flipScale(cont.colorscale) : cont.colorscale;\n      opts._zrange = [cont[cbOpt.min], cont[cbOpt.max]];\n    }\n  }\n  for (var i = 0; i < calcdata.length; i++) {\n    var cd = calcdata[i];\n    trace = cd[0].trace;\n    var moduleOpts = trace._module.colorbar;\n    if (trace.visible === true && moduleOpts) {\n      var allowsMultiplotCbs = Array.isArray(moduleOpts);\n      var cbOpts = allowsMultiplotCbs ? moduleOpts : [moduleOpts];\n      for (var j = 0; j < cbOpts.length; j++) {\n        cbOpt = cbOpts[j];\n        var contName = cbOpt.container;\n        cont = contName ? trace[contName] : trace;\n        if (cont && cont.showscale) {\n          opts = initOpts(cont.colorbar);\n          opts._id = 'cb' + trace.uid + (allowsMultiplotCbs && contName ? '-' + contName : '');\n          opts._traceIndex = trace.index;\n          opts._propPrefix = (contName ? contName + '.' : '') + 'colorbar.';\n          opts._meta = trace._meta;\n          calcOpts();\n          out.push(opts);\n        }\n      }\n    }\n  }\n  for (var k in fullLayout._colorAxes) {\n    cont = fullLayout[k];\n    if (cont.showscale) {\n      var colorAxOpts = fullLayout._colorAxes[k];\n      opts = initOpts(cont.colorbar);\n      opts._id = 'cb' + k;\n      opts._propPrefix = k + '.colorbar.';\n      opts._meta = fullLayout._meta;\n      cbOpt = {\n        min: 'cmin',\n        max: 'cmax'\n      };\n      if (colorAxOpts[0] !== 'heatmap') {\n        trace = colorAxOpts[1];\n        cbOpt.calc = trace._module.colorbar.calc;\n      }\n      calcOpts();\n      out.push(opts);\n    }\n  }\n  return out;\n}\nfunction drawColorBar(g, opts, gd) {\n  var isVertical = opts.orientation === 'v';\n  var len = opts.len;\n  var lenmode = opts.lenmode;\n  var thickness = opts.thickness;\n  var thicknessmode = opts.thicknessmode;\n  var outlinewidth = opts.outlinewidth;\n  var borderwidth = opts.borderwidth;\n  var bgcolor = opts.bgcolor;\n  var xanchor = opts.xanchor;\n  var yanchor = opts.yanchor;\n  var xpad = opts.xpad;\n  var ypad = opts.ypad;\n  var optsX = opts.x;\n  var optsY = isVertical ? opts.y : 1 - opts.y;\n  var fullLayout = gd._fullLayout;\n  var gs = fullLayout._size;\n  var fillColor = opts._fillcolor;\n  var line = opts._line;\n  var title = opts.title;\n  var titleSide = title.side;\n  var zrange = opts._zrange || d3.extent((typeof fillColor === 'function' ? fillColor : line.color).domain());\n  var lineColormap = typeof line.color === 'function' ? line.color : function () {\n    return line.color;\n  };\n  var fillColormap = typeof fillColor === 'function' ? fillColor : function () {\n    return fillColor;\n  };\n  var levelsIn = opts._levels;\n  var levelsOut = calcLevels(gd, opts, zrange);\n  var fillLevels = levelsOut.fill;\n  var lineLevels = levelsOut.line;\n\n  // we calculate pixel sizes based on the specified graph size,\n  // not the actual (in case something pushed the margins around)\n  // which is a little odd but avoids an odd iterative effect\n  // when the colorbar itself is pushing the margins.\n  // but then the fractional size is calculated based on the\n  // actual graph size, so that the axes will size correctly.\n  var thickPx = Math.round(thickness * (thicknessmode === 'fraction' ? isVertical ? gs.w : gs.h : 1));\n  var thickFrac = thickPx / (isVertical ? gs.w : gs.h);\n  var lenPx = Math.round(len * (lenmode === 'fraction' ? isVertical ? gs.h : gs.w : 1));\n  var lenFrac = lenPx / (isVertical ? gs.h : gs.w);\n\n  // x positioning: do it initially just for left anchor,\n  // then fix at the end (since we don't know the width yet)\n  var uPx = Math.round(isVertical ? optsX * gs.w + xpad : optsY * gs.h + ypad);\n  var xRatio = {\n    center: 0.5,\n    right: 1\n  }[xanchor] || 0;\n  var yRatio = {\n    top: 1,\n    middle: 0.5\n  }[yanchor] || 0;\n\n  // for dragging... this is getting a little muddled...\n  var uFrac = isVertical ? optsX - xRatio * thickFrac : optsY - yRatio * thickFrac;\n\n  // y/x positioning (for v/h) we can do correctly from the start\n  var vFrac = isVertical ? optsY - yRatio * lenFrac : optsX - xRatio * lenFrac;\n  var vPx = Math.round(isVertical ? gs.h * (1 - vFrac) : gs.w * vFrac);\n\n  // stash a few things for makeEditable\n  opts._lenFrac = lenFrac;\n  opts._thickFrac = thickFrac;\n  opts._uFrac = uFrac;\n  opts._vFrac = vFrac;\n\n  // stash mocked axis for contour label formatting\n  var ax = opts._axis = mockColorBarAxis(gd, opts, zrange);\n\n  // position can't go in through supplyDefaults\n  // because that restricts it to [0,1]\n  ax.position = thickFrac + (isVertical ? optsX + xpad / gs.w : optsY + ypad / gs.h);\n  var topOrBottom = ['top', 'bottom'].indexOf(titleSide) !== -1;\n  if (isVertical && topOrBottom) {\n    ax.title.side = titleSide;\n    ax.titlex = optsX + xpad / gs.w;\n    ax.titley = vFrac + (title.side === 'top' ? lenFrac - ypad / gs.h : ypad / gs.h);\n  }\n  if (!isVertical && !topOrBottom) {\n    ax.title.side = titleSide;\n    ax.titley = optsY + ypad / gs.h;\n    ax.titlex = vFrac + xpad / gs.w; // right side\n  }\n\n  if (line.color && opts.tickmode === 'auto') {\n    ax.tickmode = 'linear';\n    ax.tick0 = levelsIn.start;\n    var dtick = levelsIn.size;\n    // expand if too many contours, so we don't get too many ticks\n    var autoNtick = Lib.constrain(lenPx / 50, 4, 15) + 1;\n    var dtFactor = (zrange[1] - zrange[0]) / ((opts.nticks || autoNtick) * dtick);\n    if (dtFactor > 1) {\n      var dtexp = Math.pow(10, Math.floor(Math.log(dtFactor) / Math.LN10));\n      dtick *= dtexp * Lib.roundUp(dtFactor / dtexp, [2, 5, 10]);\n      // if the contours are at round multiples, reset tick0\n      // so they're still at round multiples. Otherwise,\n      // keep the first label on the first contour level\n      if ((Math.abs(levelsIn.start) / levelsIn.size + 1e-6) % 1 < 2e-6) {\n        ax.tick0 = 0;\n      }\n    }\n    ax.dtick = dtick;\n  }\n\n  // set domain after init, because we may want to\n  // allow it outside [0,1]\n  ax.domain = isVertical ? [vFrac + ypad / gs.h, vFrac + lenFrac - ypad / gs.h] : [vFrac + xpad / gs.w, vFrac + lenFrac - xpad / gs.w];\n  ax.setScale();\n  g.attr('transform', strTranslate(Math.round(gs.l), Math.round(gs.t)));\n  var titleCont = g.select('.' + cn.cbtitleunshift).attr('transform', strTranslate(-Math.round(gs.l), -Math.round(gs.t)));\n  var ticklabelposition = ax.ticklabelposition;\n  var titleFontSize = ax.title.font.size;\n  var axLayer = g.select('.' + cn.cbaxis);\n  var titleEl;\n  var titleHeight = 0;\n  var titleWidth = 0;\n  function drawTitle(titleClass, titleOpts) {\n    var dfltTitleOpts = {\n      propContainer: ax,\n      propName: opts._propPrefix + 'title',\n      traceIndex: opts._traceIndex,\n      _meta: opts._meta,\n      placeholder: fullLayout._dfltTitle.colorbar,\n      containerGroup: g.select('.' + cn.cbtitle)\n    };\n\n    // this class-to-rotate thing with convertToTspans is\n    // getting hackier and hackier... delete groups with the\n    // wrong class (in case earlier the colorbar was drawn on\n    // a different side, I think?)\n    var otherClass = titleClass.charAt(0) === 'h' ? titleClass.substr(1) : 'h' + titleClass;\n    g.selectAll('.' + otherClass + ',.' + otherClass + '-math-group').remove();\n    Titles.draw(gd, titleClass, extendFlat(dfltTitleOpts, titleOpts || {}));\n  }\n  function drawDummyTitle() {\n    // draw the title so we know how much room it needs\n    // when we squish the axis.\n    // On vertical colorbars this only applies to top or bottom titles, not right side.\n    // On horizontal colorbars this only applies to right, etc.\n\n    if (isVertical && topOrBottom || !isVertical && !topOrBottom) {\n      var x, y;\n      if (titleSide === 'top') {\n        x = xpad + gs.l + gs.w * optsX;\n        y = ypad + gs.t + gs.h * (1 - vFrac - lenFrac) + 3 + titleFontSize * 0.75;\n      }\n      if (titleSide === 'bottom') {\n        x = xpad + gs.l + gs.w * optsX;\n        y = ypad + gs.t + gs.h * (1 - vFrac) - 3 - titleFontSize * 0.25;\n      }\n      if (titleSide === 'right') {\n        y = ypad + gs.t + gs.h * optsY + 3 + titleFontSize * 0.75;\n        x = xpad + gs.l + gs.w * vFrac;\n      }\n      drawTitle(ax._id + 'title', {\n        attributes: {\n          x: x,\n          y: y,\n          'text-anchor': isVertical ? 'start' : 'middle'\n        }\n      });\n    }\n  }\n  function drawCbTitle() {\n    if (isVertical && !topOrBottom || !isVertical && topOrBottom) {\n      var pos = ax.position || 0;\n      var mid = ax._offset + ax._length / 2;\n      var x, y;\n      if (titleSide === 'right') {\n        y = mid;\n        x = gs.l + gs.w * pos + 10 + titleFontSize * (ax.showticklabels ? 1 : 0.5);\n      } else {\n        x = mid;\n        if (titleSide === 'bottom') {\n          y = gs.t + gs.h * pos + 10 + (ticklabelposition.indexOf('inside') === -1 ? ax.tickfont.size : 0) + (ax.ticks !== 'intside' ? opts.ticklen || 0 : 0);\n        }\n        if (titleSide === 'top') {\n          var nlines = title.text.split('<br>').length;\n          y = gs.t + gs.h * pos + 10 - thickPx - LINE_SPACING * titleFontSize * nlines;\n        }\n      }\n      drawTitle((isVertical ?\n      // the 'h' + is a hack to get around the fact that\n      // convertToTspans rotates any 'y...' class by 90 degrees.\n      // TODO: find a better way to control this.\n      'h' : 'v') + ax._id + 'title', {\n        avoid: {\n          selection: d3.select(gd).selectAll('g.' + ax._id + 'tick'),\n          side: titleSide,\n          offsetTop: isVertical ? 0 : gs.t,\n          offsetLeft: isVertical ? gs.l : 0,\n          maxShift: isVertical ? fullLayout.width : fullLayout.height\n        },\n        attributes: {\n          x: x,\n          y: y,\n          'text-anchor': 'middle'\n        },\n        transform: {\n          rotate: isVertical ? -90 : 0,\n          offset: 0\n        }\n      });\n    }\n  }\n  function drawAxis() {\n    if (!isVertical && !topOrBottom || isVertical && topOrBottom) {\n      // squish the axis top to make room for the title\n      var titleGroup = g.select('.' + cn.cbtitle);\n      var titleText = titleGroup.select('text');\n      var titleTrans = [-outlinewidth / 2, outlinewidth / 2];\n      var mathJaxNode = titleGroup.select('.h' + ax._id + 'title-math-group').node();\n      var lineSize = 15.6;\n      if (titleText.node()) {\n        lineSize = parseInt(titleText.node().style.fontSize, 10) * LINE_SPACING;\n      }\n      var bb;\n      if (mathJaxNode) {\n        bb = Drawing.bBox(mathJaxNode);\n        titleWidth = bb.width;\n        titleHeight = bb.height;\n        if (titleHeight > lineSize) {\n          // not entirely sure how mathjax is doing\n          // vertical alignment, but this seems to work.\n          titleTrans[1] -= (titleHeight - lineSize) / 2;\n        }\n      } else if (titleText.node() && !titleText.classed(cn.jsPlaceholder)) {\n        bb = Drawing.bBox(titleText.node());\n        titleWidth = bb.width;\n        titleHeight = bb.height;\n      }\n      if (isVertical) {\n        if (titleHeight) {\n          // buffer btwn colorbar and title\n          // TODO: configurable\n          titleHeight += 5;\n          if (titleSide === 'top') {\n            ax.domain[1] -= titleHeight / gs.h;\n            titleTrans[1] *= -1;\n          } else {\n            ax.domain[0] += titleHeight / gs.h;\n            var nlines = svgTextUtils.lineCount(titleText);\n            titleTrans[1] += (1 - nlines) * lineSize;\n          }\n          titleGroup.attr('transform', strTranslate(titleTrans[0], titleTrans[1]));\n          ax.setScale();\n        }\n      } else {\n        // horizontal colorbars\n        if (titleWidth) {\n          if (titleSide === 'right') {\n            ax.domain[0] += (titleWidth + titleFontSize / 2) / gs.w;\n          }\n          titleGroup.attr('transform', strTranslate(titleTrans[0], titleTrans[1]));\n          ax.setScale();\n        }\n      }\n    }\n    g.selectAll('.' + cn.cbfills + ',.' + cn.cblines).attr('transform', isVertical ? strTranslate(0, Math.round(gs.h * (1 - ax.domain[1]))) : strTranslate(Math.round(gs.w * ax.domain[0]), 0));\n    axLayer.attr('transform', isVertical ? strTranslate(0, Math.round(-gs.t)) : strTranslate(Math.round(-gs.l), 0));\n    var fills = g.select('.' + cn.cbfills).selectAll('rect.' + cn.cbfill).attr('style', '').data(fillLevels);\n    fills.enter().append('rect').classed(cn.cbfill, true).style('stroke', 'none');\n    fills.exit().remove();\n    var zBounds = zrange.map(ax.c2p).map(Math.round).sort(function (a, b) {\n      return a - b;\n    });\n    fills.each(function (d, i) {\n      var z = [i === 0 ? zrange[0] : (fillLevels[i] + fillLevels[i - 1]) / 2, i === fillLevels.length - 1 ? zrange[1] : (fillLevels[i] + fillLevels[i + 1]) / 2].map(ax.c2p).map(Math.round);\n\n      // offset the side adjoining the next rectangle so they\n      // overlap, to prevent antialiasing gaps\n      if (isVertical) {\n        z[1] = Lib.constrain(z[1] + (z[1] > z[0]) ? 1 : -1, zBounds[0], zBounds[1]);\n      } /* else {\n          // TODO: horizontal case\n        } */\n\n      // Colorbar cannot currently support opacities so we\n      // use an opaque fill even when alpha channels present\n      var fillEl = d3.select(this).attr(isVertical ? 'x' : 'y', uPx).attr(isVertical ? 'y' : 'x', d3.min(z)).attr(isVertical ? 'width' : 'height', Math.max(thickPx, 2)).attr(isVertical ? 'height' : 'width', Math.max(d3.max(z) - d3.min(z), 2));\n      if (opts._fillgradient) {\n        Drawing.gradient(fillEl, gd, opts._id, isVertical ? 'vertical' : 'horizontalreversed', opts._fillgradient, 'fill');\n      } else {\n        // tinycolor can't handle exponents and\n        // at this scale, removing it makes no difference.\n        var colorString = fillColormap(d).replace('e-', '');\n        fillEl.attr('fill', tinycolor(colorString).toHexString());\n      }\n    });\n    var lines = g.select('.' + cn.cblines).selectAll('path.' + cn.cbline).data(line.color && line.width ? lineLevels : []);\n    lines.enter().append('path').classed(cn.cbline, true);\n    lines.exit().remove();\n    lines.each(function (d) {\n      var a = uPx;\n      var b = Math.round(ax.c2p(d)) + line.width / 2 % 1;\n      d3.select(this).attr('d', 'M' + (isVertical ? a + ',' + b : b + ',' + a) + (isVertical ? 'h' : 'v') + thickPx).call(Drawing.lineGroupStyle, line.width, lineColormap(d), line.dash);\n    });\n\n    // force full redraw of labels and ticks\n    axLayer.selectAll('g.' + ax._id + 'tick,path').remove();\n    var shift = uPx + thickPx + (outlinewidth || 0) / 2 - (opts.ticks === 'outside' ? 1 : 0);\n    var vals = Axes.calcTicks(ax);\n    var tickSign = Axes.getTickSigns(ax)[2];\n    Axes.drawTicks(gd, ax, {\n      vals: ax.ticks === 'inside' ? Axes.clipEnds(ax, vals) : vals,\n      layer: axLayer,\n      path: Axes.makeTickPath(ax, shift, tickSign),\n      transFn: Axes.makeTransTickFn(ax)\n    });\n    return Axes.drawLabels(gd, ax, {\n      vals: vals,\n      layer: axLayer,\n      transFn: Axes.makeTransTickLabelFn(ax),\n      labelFns: Axes.makeLabelFns(ax, shift)\n    });\n  }\n\n  // wait for the axis & title to finish rendering before\n  // continuing positioning\n  // TODO: why are we redrawing multiple times now with this?\n  // I guess autoMargin doesn't like being post-promise?\n  function positionCB() {\n    var bb;\n    var innerThickness = thickPx + outlinewidth / 2;\n    if (ticklabelposition.indexOf('inside') === -1) {\n      bb = Drawing.bBox(axLayer.node());\n      innerThickness += isVertical ? bb.width : bb.height;\n    }\n    titleEl = titleCont.select('text');\n    var titleWidth = 0;\n    var topSideVertical = isVertical && titleSide === 'top';\n    var rightSideHorizontal = !isVertical && titleSide === 'right';\n    var moveY = 0;\n    if (titleEl.node() && !titleEl.classed(cn.jsPlaceholder)) {\n      var _titleHeight;\n      var mathJaxNode = titleCont.select('.h' + ax._id + 'title-math-group').node();\n      if (mathJaxNode && (isVertical && topOrBottom || !isVertical && !topOrBottom)) {\n        bb = Drawing.bBox(mathJaxNode);\n        titleWidth = bb.width;\n        _titleHeight = bb.height;\n      } else {\n        // note: the formula below works for all title sides,\n        // (except for top/bottom mathjax, above)\n        // but the weird gs.l is because the titleunshift\n        // transform gets removed by Drawing.bBox\n        bb = Drawing.bBox(titleCont.node());\n        titleWidth = bb.right - gs.l - (isVertical ? uPx : vPx);\n        _titleHeight = bb.bottom - gs.t - (isVertical ? vPx : uPx);\n        if (!isVertical && titleSide === 'top') {\n          innerThickness += bb.height;\n          moveY = bb.height;\n        }\n      }\n      if (rightSideHorizontal) {\n        titleEl.attr('transform', strTranslate(titleWidth / 2 + titleFontSize / 2, 0));\n        titleWidth *= 2;\n      }\n      innerThickness = Math.max(innerThickness, isVertical ? titleWidth : _titleHeight);\n    }\n    var outerThickness = (isVertical ? xpad : ypad) * 2 + innerThickness + borderwidth + outlinewidth / 2;\n    var hColorbarMoveTitle = 0;\n    if (!isVertical && title.text && yanchor === 'bottom' && optsY <= 0) {\n      hColorbarMoveTitle = outerThickness / 2;\n      outerThickness += hColorbarMoveTitle;\n      moveY += hColorbarMoveTitle;\n    }\n    fullLayout._hColorbarMoveTitle = hColorbarMoveTitle;\n    fullLayout._hColorbarMoveCBTitle = moveY;\n    var extraW = borderwidth + outlinewidth;\n    g.select('.' + cn.cbbg).attr('x', (isVertical ? uPx : vPx) - extraW / 2 - (isVertical ? xpad : 0)).attr('y', (isVertical ? vPx : uPx) - (isVertical ? lenPx : ypad + moveY - hColorbarMoveTitle)).attr(isVertical ? 'width' : 'height', Math.max(outerThickness - hColorbarMoveTitle, 2)).attr(isVertical ? 'height' : 'width', Math.max(lenPx + extraW, 2)).call(Color.fill, bgcolor).call(Color.stroke, opts.bordercolor).style('stroke-width', borderwidth);\n    var moveX = rightSideHorizontal ? Math.max(titleWidth - 10, 0) : 0;\n    g.selectAll('.' + cn.cboutline).attr('x', (isVertical ? uPx : vPx + xpad) + moveX).attr('y', (isVertical ? vPx + ypad - lenPx : uPx) + (topSideVertical ? titleHeight : 0)).attr(isVertical ? 'width' : 'height', Math.max(thickPx, 2)).attr(isVertical ? 'height' : 'width', Math.max(lenPx - (isVertical ? 2 * ypad + titleHeight : 2 * xpad + moveX), 2)).call(Color.stroke, opts.outlinecolor).style({\n      fill: 'none',\n      'stroke-width': outlinewidth\n    });\n    g.attr('transform', strTranslate(gs.l - (isVertical ? xRatio * outerThickness : 0), gs.t - (isVertical ? 0 : (1 - yRatio) * outerThickness - moveY)));\n    if (!isVertical && (borderwidth || tinycolor(bgcolor).getAlpha() && !tinycolor.equals(fullLayout.paper_bgcolor, bgcolor))) {\n      // for horizontal colorbars when there is a border line or having different background color\n      // hide/adjust x positioning for the first/last tick labels if they go outside the border\n      var tickLabels = axLayer.selectAll('text');\n      var numTicks = tickLabels[0].length;\n      var border = g.select('.' + cn.cbbg).node();\n      var oBb = Drawing.bBox(border);\n      var oTr = Drawing.getTranslate(g);\n      var TEXTPAD = 2;\n      tickLabels.each(function (d, i) {\n        var first = 0;\n        var last = numTicks - 1;\n        if (i === first || i === last) {\n          var iBb = Drawing.bBox(this);\n          var iTr = Drawing.getTranslate(this);\n          var deltaX;\n          if (i === last) {\n            var iRight = iBb.right + iTr.x;\n            var oRight = oBb.right + oTr.x + vPx - borderwidth - TEXTPAD + optsX;\n            deltaX = oRight - iRight;\n            if (deltaX > 0) deltaX = 0;\n          } else if (i === first) {\n            var iLeft = iBb.left + iTr.x;\n            var oLeft = oBb.left + oTr.x + vPx + borderwidth + TEXTPAD;\n            deltaX = oLeft - iLeft;\n            if (deltaX < 0) deltaX = 0;\n          }\n          if (deltaX) {\n            if (numTicks < 3) {\n              // adjust position\n              this.setAttribute('transform', 'translate(' + deltaX + ',0) ' + this.getAttribute('transform'));\n            } else {\n              // hide\n              this.setAttribute('visibility', 'hidden');\n            }\n          }\n        }\n      });\n    }\n\n    // auto margin adjustment\n    var marginOpts = {};\n    var lFrac = FROM_TL[xanchor];\n    var rFrac = FROM_BR[xanchor];\n    var tFrac = FROM_TL[yanchor];\n    var bFrac = FROM_BR[yanchor];\n    var extraThickness = outerThickness - thickPx;\n    if (isVertical) {\n      if (lenmode === 'pixels') {\n        marginOpts.y = optsY;\n        marginOpts.t = lenPx * tFrac;\n        marginOpts.b = lenPx * bFrac;\n      } else {\n        marginOpts.t = marginOpts.b = 0;\n        marginOpts.yt = optsY + len * tFrac;\n        marginOpts.yb = optsY - len * bFrac;\n      }\n      if (thicknessmode === 'pixels') {\n        marginOpts.x = optsX;\n        marginOpts.l = outerThickness * lFrac;\n        marginOpts.r = outerThickness * rFrac;\n      } else {\n        marginOpts.l = extraThickness * lFrac;\n        marginOpts.r = extraThickness * rFrac;\n        marginOpts.xl = optsX - thickness * lFrac;\n        marginOpts.xr = optsX + thickness * rFrac;\n      }\n    } else {\n      // horizontal colorbars\n      if (lenmode === 'pixels') {\n        marginOpts.x = optsX;\n        marginOpts.l = lenPx * lFrac;\n        marginOpts.r = lenPx * rFrac;\n      } else {\n        marginOpts.l = marginOpts.r = 0;\n        marginOpts.xl = optsX + len * lFrac;\n        marginOpts.xr = optsX - len * rFrac;\n      }\n      if (thicknessmode === 'pixels') {\n        marginOpts.y = 1 - optsY;\n        marginOpts.t = outerThickness * tFrac;\n        marginOpts.b = outerThickness * bFrac;\n      } else {\n        marginOpts.t = extraThickness * tFrac;\n        marginOpts.b = extraThickness * bFrac;\n        marginOpts.yt = optsY - thickness * tFrac;\n        marginOpts.yb = optsY + thickness * bFrac;\n      }\n    }\n    Plots.autoMargin(gd, opts._id, marginOpts);\n  }\n  return Lib.syncOrAsync([Plots.previousPromises, drawDummyTitle, drawAxis, drawCbTitle, Plots.previousPromises, positionCB], gd);\n}\nfunction makeEditable(g, opts, gd) {\n  var isVertical = opts.orientation === 'v';\n  var fullLayout = gd._fullLayout;\n  var gs = fullLayout._size;\n  var t0, xf, yf;\n  dragElement.init({\n    element: g.node(),\n    gd: gd,\n    prepFn: function () {\n      t0 = g.attr('transform');\n      setCursor(g);\n    },\n    moveFn: function (dx, dy) {\n      g.attr('transform', t0 + strTranslate(dx, dy));\n      xf = dragElement.align((isVertical ? opts._uFrac : opts._vFrac) + dx / gs.w, isVertical ? opts._thickFrac : opts._lenFrac, 0, 1, opts.xanchor);\n      yf = dragElement.align((isVertical ? opts._vFrac : 1 - opts._uFrac) - dy / gs.h, isVertical ? opts._lenFrac : opts._thickFrac, 0, 1, opts.yanchor);\n      var csr = dragElement.getCursor(xf, yf, opts.xanchor, opts.yanchor);\n      setCursor(g, csr);\n    },\n    doneFn: function () {\n      setCursor(g);\n      if (xf !== undefined && yf !== undefined) {\n        var update = {};\n        update[opts._propPrefix + 'x'] = xf;\n        update[opts._propPrefix + 'y'] = yf;\n        if (opts._traceIndex !== undefined) {\n          Registry.call('_guiRestyle', gd, update, opts._traceIndex);\n        } else {\n          Registry.call('_guiRelayout', gd, update);\n        }\n      }\n    }\n  });\n}\nfunction calcLevels(gd, opts, zrange) {\n  var levelsIn = opts._levels;\n  var lineLevels = [];\n  var fillLevels = [];\n  var l;\n  var i;\n  var l0 = levelsIn.end + levelsIn.size / 100;\n  var ls = levelsIn.size;\n  var zr0 = 1.001 * zrange[0] - 0.001 * zrange[1];\n  var zr1 = 1.001 * zrange[1] - 0.001 * zrange[0];\n  for (i = 0; i < 1e5; i++) {\n    l = levelsIn.start + i * ls;\n    if (ls > 0 ? l >= l0 : l <= l0) break;\n    if (l > zr0 && l < zr1) lineLevels.push(l);\n  }\n  if (opts._fillgradient) {\n    fillLevels = [0];\n  } else if (typeof opts._fillcolor === 'function') {\n    var fillLevelsIn = opts._filllevels;\n    if (fillLevelsIn) {\n      l0 = fillLevelsIn.end + fillLevelsIn.size / 100;\n      ls = fillLevelsIn.size;\n      for (i = 0; i < 1e5; i++) {\n        l = fillLevelsIn.start + i * ls;\n        if (ls > 0 ? l >= l0 : l <= l0) break;\n        if (l > zrange[0] && l < zrange[1]) fillLevels.push(l);\n      }\n    } else {\n      fillLevels = lineLevels.map(function (v) {\n        return v - levelsIn.size / 2;\n      });\n      fillLevels.push(fillLevels[fillLevels.length - 1] + levelsIn.size);\n    }\n  } else if (opts._fillcolor && typeof opts._fillcolor === 'string') {\n    // doesn't matter what this value is, with a single value\n    // we'll make a single fill rect covering the whole bar\n    fillLevels = [0];\n  }\n  if (levelsIn.size < 0) {\n    lineLevels.reverse();\n    fillLevels.reverse();\n  }\n  return {\n    line: lineLevels,\n    fill: fillLevels\n  };\n}\nfunction mockColorBarAxis(gd, opts, zrange) {\n  var fullLayout = gd._fullLayout;\n  var isVertical = opts.orientation === 'v';\n  var cbAxisIn = {\n    type: 'linear',\n    range: zrange,\n    tickmode: opts.tickmode,\n    nticks: opts.nticks,\n    tick0: opts.tick0,\n    dtick: opts.dtick,\n    tickvals: opts.tickvals,\n    ticktext: opts.ticktext,\n    ticks: opts.ticks,\n    ticklen: opts.ticklen,\n    tickwidth: opts.tickwidth,\n    tickcolor: opts.tickcolor,\n    showticklabels: opts.showticklabels,\n    ticklabelposition: opts.ticklabelposition,\n    ticklabeloverflow: opts.ticklabeloverflow,\n    ticklabelstep: opts.ticklabelstep,\n    tickfont: opts.tickfont,\n    tickangle: opts.tickangle,\n    tickformat: opts.tickformat,\n    exponentformat: opts.exponentformat,\n    minexponent: opts.minexponent,\n    separatethousands: opts.separatethousands,\n    showexponent: opts.showexponent,\n    showtickprefix: opts.showtickprefix,\n    tickprefix: opts.tickprefix,\n    showticksuffix: opts.showticksuffix,\n    ticksuffix: opts.ticksuffix,\n    title: opts.title,\n    showline: true,\n    anchor: 'free',\n    side: isVertical ? 'right' : 'bottom',\n    position: 1\n  };\n  var letter = isVertical ? 'y' : 'x';\n  var cbAxisOut = {\n    type: 'linear',\n    _id: letter + opts._id\n  };\n  var axisOptions = {\n    letter: letter,\n    font: fullLayout.font,\n    noHover: true,\n    noTickson: true,\n    noTicklabelmode: true,\n    calendar: fullLayout.calendar // not really necessary (yet?)\n  };\n\n  function coerce(attr, dflt) {\n    return Lib.coerce(cbAxisIn, cbAxisOut, axisLayoutAttrs, attr, dflt);\n  }\n  handleAxisDefaults(cbAxisIn, cbAxisOut, coerce, axisOptions, fullLayout);\n  handleAxisPositionDefaults(cbAxisIn, cbAxisOut, coerce, axisOptions);\n  return cbAxisOut;\n}\nmodule.exports = {\n  draw: draw\n};\n\n/***/ }),\n\n/***/ 76228:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_127574__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_127574__(71828);\nmodule.exports = function hasColorbar(container) {\n  return Lib.isPlainObject(container.colorbar);\n};\n\n/***/ }),\n\n/***/ 12311:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_127829__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'component',\n  name: 'colorbar',\n  attributes: __nested_webpack_require_127829__(63583),\n  supplyDefaults: __nested_webpack_require_127829__(62499),\n  draw: (__nested_webpack_require_127829__(98981).draw),\n  hasColorbar: __nested_webpack_require_127829__(76228)\n};\n\n/***/ }),\n\n/***/ 50693:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_128186__) {\n\n\"use strict\";\n\n\nvar colorbarAttrs = __nested_webpack_require_128186__(63583);\nvar counterRegex = (__nested_webpack_require_128186__(30587).counter);\nvar sortObjectKeys = __nested_webpack_require_128186__(78607);\nvar palettes = (__nested_webpack_require_128186__(63282).scales);\nvar paletteStr = sortObjectKeys(palettes);\nfunction code(s) {\n  return '`' + s + '`';\n}\n\n/**\n * Make colorscale attribute declarations for\n *\n * - colorscale,\n * - (c|z)auto, (c|z)min, (c|z)max,\n * - autocolorscale, reversescale,\n * - showscale (optionally)\n * - color (optionally)\n *\n * @param {string} context (dflt: '', i.e. from trace root):\n *     the container this is in ('', *marker*, *marker.line* etc)\n *\n * @param {object} opts:\n *   - cLetter {string} (dflt: 'c'):\n *     leading letter for 'min', 'max and 'auto' attribute (either 'z' or 'c')\n *\n *   - colorAttr {string} (dflt: 'z' if `cLetter: 'z'`, 'color' if `cLetter: 'c'`):\n *     (for descriptions) sets the name of the color attribute that maps to the colorscale.\n *\n *     N.B. if `colorAttr: 'color'`, we include the `color` declaration here.\n *\n *   - onlyIfNumerical {string} (dflt: false' if `cLetter: 'z'`, true if `cLetter: 'c'`):\n *     (for descriptions) set to true if colorscale attribute only\n *\n *   - colorscaleDflt {string}:\n *     overrides the colorscale dflt\n *\n *   - autoColorDflt {boolean} (dflt true):\n *     normally autocolorscale.dflt is `true`, but pass `false` to override\n *\n *   - noScale {boolean} (dflt: true if `context: 'marker.line'`, false otherwise):\n *     set to `false` to not include showscale attribute (e.g. for 'marker.line')\n *\n *   - showScaleDflt {boolean} (dflt: true if `cLetter: 'z'`, false otherwise)\n *\n *   - editTypeOverride {boolean} (dflt: ''):\n *     most of these attributes already require a recalc, but the ones that do not\n *     have editType *style* or *plot* unless you override (presumably with *calc*)\n *\n *   - anim {boolean) (dflt: undefined): is 'color' animatable?\n *\n * @return {object}\n */\nmodule.exports = function colorScaleAttrs(context, opts) {\n  context = context || '';\n  opts = opts || {};\n  var cLetter = opts.cLetter || 'c';\n  var onlyIfNumerical = 'onlyIfNumerical' in opts ? opts.onlyIfNumerical : Boolean(context);\n  var noScale = 'noScale' in opts ? opts.noScale : context === 'marker.line';\n  var showScaleDflt = 'showScaleDflt' in opts ? opts.showScaleDflt : cLetter === 'z';\n  var colorscaleDflt = typeof opts.colorscaleDflt === 'string' ? palettes[opts.colorscaleDflt] : null;\n  var editTypeOverride = opts.editTypeOverride || '';\n  var contextHead = context ? context + '.' : '';\n  var colorAttr, colorAttrFull;\n  if ('colorAttr' in opts) {\n    colorAttr = opts.colorAttr;\n    colorAttrFull = opts.colorAttr;\n  } else {\n    colorAttr = {\n      z: 'z',\n      c: 'color'\n    }[cLetter];\n    colorAttrFull = 'in ' + code(contextHead + colorAttr);\n  }\n  var effectDesc = onlyIfNumerical ? ' Has an effect only if ' + colorAttrFull + ' is set to a numerical array.' : '';\n  var auto = cLetter + 'auto';\n  var min = cLetter + 'min';\n  var max = cLetter + 'max';\n  var mid = cLetter + 'mid';\n  var autoFull = code(contextHead + auto);\n  var minFull = code(contextHead + min);\n  var maxFull = code(contextHead + max);\n  var minmaxFull = minFull + ' and ' + maxFull;\n  var autoImpliedEdits = {};\n  autoImpliedEdits[min] = autoImpliedEdits[max] = undefined;\n  var minmaxImpliedEdits = {};\n  minmaxImpliedEdits[auto] = false;\n  var attrs = {};\n  if (colorAttr === 'color') {\n    attrs.color = {\n      valType: 'color',\n      arrayOk: true,\n      editType: editTypeOverride || 'style'\n    };\n    if (opts.anim) {\n      attrs.color.anim = true;\n    }\n  }\n  attrs[auto] = {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc',\n    impliedEdits: autoImpliedEdits\n  };\n  attrs[min] = {\n    valType: 'number',\n    dflt: null,\n    editType: editTypeOverride || 'plot',\n    impliedEdits: minmaxImpliedEdits\n  };\n  attrs[max] = {\n    valType: 'number',\n    dflt: null,\n    editType: editTypeOverride || 'plot',\n    impliedEdits: minmaxImpliedEdits\n  };\n  attrs[mid] = {\n    valType: 'number',\n    dflt: null,\n    editType: 'calc',\n    impliedEdits: autoImpliedEdits\n  };\n  attrs.colorscale = {\n    valType: 'colorscale',\n    editType: 'calc',\n    dflt: colorscaleDflt,\n    impliedEdits: {\n      autocolorscale: false\n    }\n  };\n  attrs.autocolorscale = {\n    valType: 'boolean',\n    // gets overrode in 'heatmap' & 'surface' for backwards comp.\n    dflt: opts.autoColorDflt === false ? false : true,\n    editType: 'calc',\n    impliedEdits: {\n      colorscale: undefined\n    }\n  };\n  attrs.reversescale = {\n    valType: 'boolean',\n    dflt: false,\n    editType: 'plot'\n  };\n  if (!noScale) {\n    attrs.showscale = {\n      valType: 'boolean',\n      dflt: showScaleDflt,\n      editType: 'calc'\n    };\n    attrs.colorbar = colorbarAttrs;\n  }\n  if (!opts.noColorAxis) {\n    attrs.coloraxis = {\n      valType: 'subplotid',\n      regex: counterRegex('coloraxis'),\n      dflt: null,\n      editType: 'calc'\n    };\n  }\n  return attrs;\n};\n\n/***/ }),\n\n/***/ 78803:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_133284__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_133284__(92770);\nvar Lib = __nested_webpack_require_133284__(71828);\nvar extractOpts = (__nested_webpack_require_133284__(52075).extractOpts);\nmodule.exports = function calc(gd, trace, opts) {\n  var fullLayout = gd._fullLayout;\n  var vals = opts.vals;\n  var containerStr = opts.containerStr;\n  var container = containerStr ? Lib.nestedProperty(trace, containerStr).get() : trace;\n  var cOpts = extractOpts(container);\n  var auto = cOpts.auto !== false;\n  var min = cOpts.min;\n  var max = cOpts.max;\n  var mid = cOpts.mid;\n  var minVal = function () {\n    return Lib.aggNums(Math.min, null, vals);\n  };\n  var maxVal = function () {\n    return Lib.aggNums(Math.max, null, vals);\n  };\n  if (min === undefined) {\n    min = minVal();\n  } else if (auto) {\n    if (container._colorAx && isNumeric(min)) {\n      min = Math.min(min, minVal());\n    } else {\n      min = minVal();\n    }\n  }\n  if (max === undefined) {\n    max = maxVal();\n  } else if (auto) {\n    if (container._colorAx && isNumeric(max)) {\n      max = Math.max(max, maxVal());\n    } else {\n      max = maxVal();\n    }\n  }\n  if (auto && mid !== undefined) {\n    if (max - mid > mid - min) {\n      min = mid - (max - mid);\n    } else if (max - mid < mid - min) {\n      max = mid + (mid - min);\n    }\n  }\n  if (min === max) {\n    min -= 0.5;\n    max += 0.5;\n  }\n  cOpts._sync('min', min);\n  cOpts._sync('max', max);\n  if (cOpts.autocolorscale) {\n    var scl;\n    if (min * max < 0) scl = fullLayout.colorscale.diverging;else if (min >= 0) scl = fullLayout.colorscale.sequential;else scl = fullLayout.colorscale.sequentialminus;\n    cOpts._sync('colorscale', scl);\n  }\n};\n\n/***/ }),\n\n/***/ 33046:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_135022__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_135022__(71828);\nvar hasColorscale = (__nested_webpack_require_135022__(52075).hasColorscale);\nvar extractOpts = (__nested_webpack_require_135022__(52075).extractOpts);\nmodule.exports = function crossTraceDefaults(fullData, fullLayout) {\n  function replace(cont, k) {\n    var val = cont['_' + k];\n    if (val !== undefined) {\n      cont[k] = val;\n    }\n  }\n  function relinkColorAttrs(outerCont, cbOpt) {\n    var cont = cbOpt.container ? Lib.nestedProperty(outerCont, cbOpt.container).get() : outerCont;\n    if (cont) {\n      if (cont.coloraxis) {\n        // stash ref to color axis\n        cont._colorAx = fullLayout[cont.coloraxis];\n      } else {\n        var cOpts = extractOpts(cont);\n        var isAuto = cOpts.auto;\n        if (isAuto || cOpts.min === undefined) {\n          replace(cont, cbOpt.min);\n        }\n        if (isAuto || cOpts.max === undefined) {\n          replace(cont, cbOpt.max);\n        }\n        if (cOpts.autocolorscale) {\n          replace(cont, 'colorscale');\n        }\n      }\n    }\n  }\n  for (var i = 0; i < fullData.length; i++) {\n    var trace = fullData[i];\n    var cbOpts = trace._module.colorbar;\n    if (cbOpts) {\n      if (Array.isArray(cbOpts)) {\n        for (var j = 0; j < cbOpts.length; j++) {\n          relinkColorAttrs(trace, cbOpts[j]);\n        }\n      } else {\n        relinkColorAttrs(trace, cbOpts);\n      }\n    }\n    if (hasColorscale(trace, 'marker.line')) {\n      relinkColorAttrs(trace, {\n        container: 'marker.line',\n        min: 'cmin',\n        max: 'cmax'\n      });\n    }\n  }\n  for (var k in fullLayout._colorAxes) {\n    relinkColorAttrs(fullLayout[k], {\n      min: 'cmin',\n      max: 'cmax'\n    });\n  }\n};\n\n/***/ }),\n\n/***/ 1586:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_136794__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_136794__(92770);\nvar Lib = __nested_webpack_require_136794__(71828);\nvar hasColorbar = __nested_webpack_require_136794__(76228);\nvar colorbarDefaults = __nested_webpack_require_136794__(62499);\nvar isValidScale = (__nested_webpack_require_136794__(63282).isValid);\nvar traceIs = (__nested_webpack_require_136794__(73972).traceIs);\nfunction npMaybe(parentCont, prefix) {\n  var containerStr = prefix.slice(0, prefix.length - 1);\n  return prefix ? Lib.nestedProperty(parentCont, containerStr).get() || {} : parentCont;\n}\n\n/**\n * Colorscale / colorbar default handler\n *\n * @param {object} parentContIn : user (input) parent container (e.g. trace or layout coloraxis object)\n * @param {object} parentContOut : full parent container\n * @param {object} layout : (full) layout object\n * @param {fn} coerce : Lib.coerce wrapper\n * @param {object} opts :\n * - prefix {string} : attr string prefix to colorscale container from parent root\n * - cLetter {string} : 'c or 'z' color letter\n */\nmodule.exports = function colorScaleDefaults(parentContIn, parentContOut, layout, coerce, opts) {\n  var prefix = opts.prefix;\n  var cLetter = opts.cLetter;\n  var inTrace = ('_module' in parentContOut);\n  var containerIn = npMaybe(parentContIn, prefix);\n  var containerOut = npMaybe(parentContOut, prefix);\n  var template = npMaybe(parentContOut._template || {}, prefix) || {};\n\n  // colorScaleDefaults wrapper called if-ever we need to reset the colorscale\n  // attributes for containers that were linked to invalid color axes\n  var thisFn = function () {\n    delete parentContIn.coloraxis;\n    delete parentContOut.coloraxis;\n    return colorScaleDefaults(parentContIn, parentContOut, layout, coerce, opts);\n  };\n  if (inTrace) {\n    var colorAxes = layout._colorAxes || {};\n    var colorAx = coerce(prefix + 'coloraxis');\n    if (colorAx) {\n      var colorbarVisuals = traceIs(parentContOut, 'contour') && Lib.nestedProperty(parentContOut, 'contours.coloring').get() || 'heatmap';\n      var stash = colorAxes[colorAx];\n      if (stash) {\n        stash[2].push(thisFn);\n        if (stash[0] !== colorbarVisuals) {\n          stash[0] = false;\n          Lib.warn(['Ignoring coloraxis:', colorAx, 'setting', 'as it is linked to incompatible colorscales.'].join(' '));\n        }\n      } else {\n        // stash:\n        // - colorbar visual 'type'\n        // - colorbar options to help in Colorbar.draw\n        // - list of colorScaleDefaults wrapper functions\n        colorAxes[colorAx] = [colorbarVisuals, parentContOut, [thisFn]];\n      }\n      return;\n    }\n  }\n  var minIn = containerIn[cLetter + 'min'];\n  var maxIn = containerIn[cLetter + 'max'];\n  var validMinMax = isNumeric(minIn) && isNumeric(maxIn) && minIn < maxIn;\n  var auto = coerce(prefix + cLetter + 'auto', !validMinMax);\n  if (auto) {\n    coerce(prefix + cLetter + 'mid');\n  } else {\n    coerce(prefix + cLetter + 'min');\n    coerce(prefix + cLetter + 'max');\n  }\n\n  // handles both the trace case (autocolorscale is false by default) and\n  // the marker and marker.line case (autocolorscale is true by default)\n  var sclIn = containerIn.colorscale;\n  var sclTemplate = template.colorscale;\n  var autoColorscaleDflt;\n  if (sclIn !== undefined) autoColorscaleDflt = !isValidScale(sclIn);\n  if (sclTemplate !== undefined) autoColorscaleDflt = !isValidScale(sclTemplate);\n  coerce(prefix + 'autocolorscale', autoColorscaleDflt);\n  coerce(prefix + 'colorscale');\n  coerce(prefix + 'reversescale');\n  if (prefix !== 'marker.line.') {\n    // handles both the trace case where the dflt is listed in attributes and\n    // the marker case where the dflt is determined by hasColorbar\n    var showScaleDflt;\n    if (prefix && inTrace) showScaleDflt = hasColorbar(containerIn);\n    var showScale = coerce(prefix + 'showscale', showScaleDflt);\n    if (showScale) {\n      if (prefix && template) containerOut._template = template;\n      colorbarDefaults(containerIn, containerOut, layout);\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 52075:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_140802__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_140802__(39898);\nvar tinycolor = __nested_webpack_require_140802__(84267);\nvar isNumeric = __nested_webpack_require_140802__(92770);\nvar Lib = __nested_webpack_require_140802__(71828);\nvar Color = __nested_webpack_require_140802__(7901);\nvar isValidScale = (__nested_webpack_require_140802__(63282).isValid);\nfunction hasColorscale(trace, containerStr, colorKey) {\n  var container = containerStr ? Lib.nestedProperty(trace, containerStr).get() || {} : trace;\n  var color = container[colorKey || 'color'];\n  var isArrayWithOneNumber = false;\n  if (Lib.isArrayOrTypedArray(color)) {\n    for (var i = 0; i < color.length; i++) {\n      if (isNumeric(color[i])) {\n        isArrayWithOneNumber = true;\n        break;\n      }\n    }\n  }\n  return Lib.isPlainObject(container) && (isArrayWithOneNumber || container.showscale === true || isNumeric(container.cmin) && isNumeric(container.cmax) || isValidScale(container.colorscale) || Lib.isPlainObject(container.colorbar));\n}\nvar constantAttrs = ['showscale', 'autocolorscale', 'colorscale', 'reversescale', 'colorbar'];\nvar letterAttrs = ['min', 'max', 'mid', 'auto'];\n\n/**\n * Extract 'c' / 'z', trace / color axis colorscale options\n *\n * Note that it would be nice to replace all z* with c* equivalents in v3\n *\n * @param {object} cont : attribute container\n * @return {object}:\n *  - min: cmin or zmin\n *  - max: cmax or zmax\n *  - mid: cmid or zmid\n *  - auto: cauto or zauto\n *  - *scale: *scale attrs\n *  - colorbar: colorbar\n *  - _sync: function syncing attr and underscore dual (useful when calc'ing min/max)\n */\nfunction extractOpts(cont) {\n  var colorAx = cont._colorAx;\n  var cont2 = colorAx ? colorAx : cont;\n  var out = {};\n  var cLetter;\n  var i, k;\n  for (i = 0; i < constantAttrs.length; i++) {\n    k = constantAttrs[i];\n    out[k] = cont2[k];\n  }\n  if (colorAx) {\n    cLetter = 'c';\n    for (i = 0; i < letterAttrs.length; i++) {\n      k = letterAttrs[i];\n      out[k] = cont2['c' + k];\n    }\n  } else {\n    var k2;\n    for (i = 0; i < letterAttrs.length; i++) {\n      k = letterAttrs[i];\n      k2 = 'c' + k;\n      if (k2 in cont2) {\n        out[k] = cont2[k2];\n        continue;\n      }\n      k2 = 'z' + k;\n      if (k2 in cont2) {\n        out[k] = cont2[k2];\n      }\n    }\n    cLetter = k2.charAt(0);\n  }\n  out._sync = function (k, v) {\n    var k2 = letterAttrs.indexOf(k) !== -1 ? cLetter + k : k;\n    cont2[k2] = cont2['_' + k2] = v;\n  };\n  return out;\n}\n\n/**\n * Extract colorscale into numeric domain and color range.\n *\n * @param {object} cont colorscale container (e.g. trace, marker)\n *  - colorscale {array of arrays}\n *  - cmin/zmin {number}\n *  - cmax/zmax {number}\n *  - reversescale {boolean}\n *\n * @return {object}\n *  - domain {array}\n *  - range {array}\n */\nfunction extractScale(cont) {\n  var cOpts = extractOpts(cont);\n  var cmin = cOpts.min;\n  var cmax = cOpts.max;\n  var scl = cOpts.reversescale ? flipScale(cOpts.colorscale) : cOpts.colorscale;\n  var N = scl.length;\n  var domain = new Array(N);\n  var range = new Array(N);\n  for (var i = 0; i < N; i++) {\n    var si = scl[i];\n    domain[i] = cmin + si[0] * (cmax - cmin);\n    range[i] = si[1];\n  }\n  return {\n    domain: domain,\n    range: range\n  };\n}\nfunction flipScale(scl) {\n  var N = scl.length;\n  var sclNew = new Array(N);\n  for (var i = N - 1, j = 0; i >= 0; i--, j++) {\n    var si = scl[i];\n    sclNew[j] = [1 - si[0], si[1]];\n  }\n  return sclNew;\n}\n\n/**\n * General colorscale function generator.\n *\n * @param {object} specs output of Colorscale.extractScale or precomputed domain, range.\n *  - domain {array}\n *  - range {array}\n *\n * @param {object} opts\n *  - noNumericCheck {boolean} if true, scale func bypasses numeric checks\n *  - returnArray {boolean} if true, scale func return 4-item array instead of color strings\n *\n * @return {function}\n */\nfunction makeColorScaleFunc(specs, opts) {\n  opts = opts || {};\n  var domain = specs.domain;\n  var range = specs.range;\n  var N = range.length;\n  var _range = new Array(N);\n  for (var i = 0; i < N; i++) {\n    var rgba = tinycolor(range[i]).toRgb();\n    _range[i] = [rgba.r, rgba.g, rgba.b, rgba.a];\n  }\n  var _sclFunc = d3.scale.linear().domain(domain).range(_range).clamp(true);\n  var noNumericCheck = opts.noNumericCheck;\n  var returnArray = opts.returnArray;\n  var sclFunc;\n  if (noNumericCheck && returnArray) {\n    sclFunc = _sclFunc;\n  } else if (noNumericCheck) {\n    sclFunc = function (v) {\n      return colorArray2rbga(_sclFunc(v));\n    };\n  } else if (returnArray) {\n    sclFunc = function (v) {\n      if (isNumeric(v)) return _sclFunc(v);else if (tinycolor(v).isValid()) return v;else return Color.defaultLine;\n    };\n  } else {\n    sclFunc = function (v) {\n      if (isNumeric(v)) return colorArray2rbga(_sclFunc(v));else if (tinycolor(v).isValid()) return v;else return Color.defaultLine;\n    };\n  }\n\n  // colorbar draw looks into the d3 scale closure for domain and range\n  sclFunc.domain = _sclFunc.domain;\n  sclFunc.range = function () {\n    return range;\n  };\n  return sclFunc;\n}\nfunction makeColorScaleFuncFromTrace(trace, opts) {\n  return makeColorScaleFunc(extractScale(trace), opts);\n}\nfunction colorArray2rbga(colorArray) {\n  var colorObj = {\n    r: colorArray[0],\n    g: colorArray[1],\n    b: colorArray[2],\n    a: colorArray[3]\n  };\n  return tinycolor(colorObj).toRgbString();\n}\nmodule.exports = {\n  hasColorscale: hasColorscale,\n  extractOpts: extractOpts,\n  extractScale: extractScale,\n  flipScale: flipScale,\n  makeColorScaleFunc: makeColorScaleFunc,\n  makeColorScaleFuncFromTrace: makeColorScaleFuncFromTrace\n};\n\n/***/ }),\n\n/***/ 21081:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_146401__) {\n\n\"use strict\";\n\n\nvar scales = __nested_webpack_require_146401__(63282);\nvar helpers = __nested_webpack_require_146401__(52075);\nmodule.exports = {\n  moduleType: 'component',\n  name: 'colorscale',\n  attributes: __nested_webpack_require_146401__(50693),\n  layoutAttributes: __nested_webpack_require_146401__(72673),\n  supplyLayoutDefaults: __nested_webpack_require_146401__(30959),\n  handleDefaults: __nested_webpack_require_146401__(1586),\n  crossTraceDefaults: __nested_webpack_require_146401__(33046),\n  calc: __nested_webpack_require_146401__(78803),\n  // ./scales.js is required in lib/coerce.js ;\n  // it needs to be a separate module to avoid a circular dependency\n  scales: scales.scales,\n  defaultScale: scales.defaultScale,\n  getScale: scales.get,\n  isValidScale: scales.isValid,\n  hasColorscale: helpers.hasColorscale,\n  extractOpts: helpers.extractOpts,\n  extractScale: helpers.extractScale,\n  flipScale: helpers.flipScale,\n  makeColorScaleFunc: helpers.makeColorScaleFunc,\n  makeColorScaleFuncFromTrace: helpers.makeColorScaleFuncFromTrace\n};\n\n/***/ }),\n\n/***/ 72673:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_147441__) {\n\n\"use strict\";\n\n\nvar extendFlat = (__nested_webpack_require_147441__(1426).extendFlat);\nvar colorScaleAttrs = __nested_webpack_require_147441__(50693);\nvar scales = (__nested_webpack_require_147441__(63282).scales);\nvar msg = 'Note that `autocolorscale` must be true for this attribute to work.';\nmodule.exports = {\n  editType: 'calc',\n  colorscale: {\n    editType: 'calc',\n    sequential: {\n      valType: 'colorscale',\n      dflt: scales.Reds,\n      editType: 'calc'\n    },\n    sequentialminus: {\n      valType: 'colorscale',\n      dflt: scales.Blues,\n      editType: 'calc'\n    },\n    diverging: {\n      valType: 'colorscale',\n      dflt: scales.RdBu,\n      editType: 'calc'\n    }\n  },\n  coloraxis: extendFlat({\n    // not really a 'subplot' attribute container,\n    // but this is the flag we use to denote attributes that\n    // support yaxis, yaxis2, yaxis3, ... counters\n    _isSubplotObj: true,\n    editType: 'calc'\n  }, colorScaleAttrs('', {\n    colorAttr: 'corresponding trace color array(s)',\n    noColorAxis: true,\n    showScaleDflt: true\n  }))\n};\n\n/***/ }),\n\n/***/ 30959:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_148557__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_148557__(71828);\nvar Template = __nested_webpack_require_148557__(44467);\nvar colorScaleAttrs = __nested_webpack_require_148557__(72673);\nvar colorScaleDefaults = __nested_webpack_require_148557__(1586);\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(layoutIn, layoutOut, colorScaleAttrs, attr, dflt);\n  }\n  coerce('colorscale.sequential');\n  coerce('colorscale.sequentialminus');\n  coerce('colorscale.diverging');\n  var colorAxes = layoutOut._colorAxes;\n  var colorAxIn, colorAxOut;\n  function coerceAx(attr, dflt) {\n    return Lib.coerce(colorAxIn, colorAxOut, colorScaleAttrs.coloraxis, attr, dflt);\n  }\n  for (var k in colorAxes) {\n    var stash = colorAxes[k];\n    if (stash[0]) {\n      colorAxIn = layoutIn[k] || {};\n      colorAxOut = Template.newContainer(layoutOut, k, 'coloraxis');\n      colorAxOut._name = k;\n      colorScaleDefaults(colorAxIn, colorAxOut, layoutOut, coerceAx, {\n        prefix: '',\n        cLetter: 'c'\n      });\n    } else {\n      // re-coerce colorscale attributes w/o coloraxis\n      for (var i = 0; i < stash[2].length; i++) {\n        stash[2][i]();\n      }\n      delete layoutOut._colorAxes[k];\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 63282:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_149870__) {\n\n\"use strict\";\n\n\nvar tinycolor = __nested_webpack_require_149870__(84267);\nvar scales = {\n  'Greys': [[0, 'rgb(0,0,0)'], [1, 'rgb(255,255,255)']],\n  'YlGnBu': [[0, 'rgb(8,29,88)'], [0.125, 'rgb(37,52,148)'], [0.25, 'rgb(34,94,168)'], [0.375, 'rgb(29,145,192)'], [0.5, 'rgb(65,182,196)'], [0.625, 'rgb(127,205,187)'], [0.75, 'rgb(199,233,180)'], [0.875, 'rgb(237,248,217)'], [1, 'rgb(255,255,217)']],\n  'Greens': [[0, 'rgb(0,68,27)'], [0.125, 'rgb(0,109,44)'], [0.25, 'rgb(35,139,69)'], [0.375, 'rgb(65,171,93)'], [0.5, 'rgb(116,196,118)'], [0.625, 'rgb(161,217,155)'], [0.75, 'rgb(199,233,192)'], [0.875, 'rgb(229,245,224)'], [1, 'rgb(247,252,245)']],\n  'YlOrRd': [[0, 'rgb(128,0,38)'], [0.125, 'rgb(189,0,38)'], [0.25, 'rgb(227,26,28)'], [0.375, 'rgb(252,78,42)'], [0.5, 'rgb(253,141,60)'], [0.625, 'rgb(254,178,76)'], [0.75, 'rgb(254,217,118)'], [0.875, 'rgb(255,237,160)'], [1, 'rgb(255,255,204)']],\n  'Bluered': [[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']],\n  // modified RdBu based on\n  // http://www.kennethmoreland.com/color-maps/\n  'RdBu': [[0, 'rgb(5,10,172)'], [0.35, 'rgb(106,137,247)'], [0.5, 'rgb(190,190,190)'], [0.6, 'rgb(220,170,132)'], [0.7, 'rgb(230,145,90)'], [1, 'rgb(178,10,28)']],\n  // Scale for non-negative numeric values\n  'Reds': [[0, 'rgb(220,220,220)'], [0.2, 'rgb(245,195,157)'], [0.4, 'rgb(245,160,105)'], [1, 'rgb(178,10,28)']],\n  // Scale for non-positive numeric values\n  'Blues': [[0, 'rgb(5,10,172)'], [0.35, 'rgb(40,60,190)'], [0.5, 'rgb(70,100,245)'], [0.6, 'rgb(90,120,245)'], [0.7, 'rgb(106,137,247)'], [1, 'rgb(220,220,220)']],\n  'Picnic': [[0, 'rgb(0,0,255)'], [0.1, 'rgb(51,153,255)'], [0.2, 'rgb(102,204,255)'], [0.3, 'rgb(153,204,255)'], [0.4, 'rgb(204,204,255)'], [0.5, 'rgb(255,255,255)'], [0.6, 'rgb(255,204,255)'], [0.7, 'rgb(255,153,255)'], [0.8, 'rgb(255,102,204)'], [0.9, 'rgb(255,102,102)'], [1, 'rgb(255,0,0)']],\n  'Rainbow': [[0, 'rgb(150,0,90)'], [0.125, 'rgb(0,0,200)'], [0.25, 'rgb(0,25,255)'], [0.375, 'rgb(0,152,255)'], [0.5, 'rgb(44,255,150)'], [0.625, 'rgb(151,255,0)'], [0.75, 'rgb(255,234,0)'], [0.875, 'rgb(255,111,0)'], [1, 'rgb(255,0,0)']],\n  'Portland': [[0, 'rgb(12,51,131)'], [0.25, 'rgb(10,136,186)'], [0.5, 'rgb(242,211,56)'], [0.75, 'rgb(242,143,56)'], [1, 'rgb(217,30,30)']],\n  'Jet': [[0, 'rgb(0,0,131)'], [0.125, 'rgb(0,60,170)'], [0.375, 'rgb(5,255,255)'], [0.625, 'rgb(255,255,0)'], [0.875, 'rgb(250,0,0)'], [1, 'rgb(128,0,0)']],\n  'Hot': [[0, 'rgb(0,0,0)'], [0.3, 'rgb(230,0,0)'], [0.6, 'rgb(255,210,0)'], [1, 'rgb(255,255,255)']],\n  'Blackbody': [[0, 'rgb(0,0,0)'], [0.2, 'rgb(230,0,0)'], [0.4, 'rgb(230,210,0)'], [0.7, 'rgb(255,255,255)'], [1, 'rgb(160,200,255)']],\n  'Earth': [[0, 'rgb(0,0,130)'], [0.1, 'rgb(0,180,180)'], [0.2, 'rgb(40,210,40)'], [0.4, 'rgb(230,230,50)'], [0.6, 'rgb(120,70,20)'], [1, 'rgb(255,255,255)']],\n  'Electric': [[0, 'rgb(0,0,0)'], [0.15, 'rgb(30,0,100)'], [0.4, 'rgb(120,0,100)'], [0.6, 'rgb(160,90,0)'], [0.8, 'rgb(230,200,0)'], [1, 'rgb(255,250,220)']],\n  'Viridis': [[0, '#440154'], [0.06274509803921569, '#48186a'], [0.12549019607843137, '#472d7b'], [0.18823529411764706, '#424086'], [0.25098039215686274, '#3b528b'], [0.3137254901960784, '#33638d'], [0.3764705882352941, '#2c728e'], [0.4392156862745098, '#26828e'], [0.5019607843137255, '#21918c'], [0.5647058823529412, '#1fa088'], [0.6274509803921569, '#28ae80'], [0.6901960784313725, '#3fbc73'], [0.7529411764705882, '#5ec962'], [0.8156862745098039, '#84d44b'], [0.8784313725490196, '#addc30'], [0.9411764705882353, '#d8e219'], [1, '#fde725']],\n  'Cividis': [[0.000000, 'rgb(0,32,76)'], [0.058824, 'rgb(0,42,102)'], [0.117647, 'rgb(0,52,110)'], [0.176471, 'rgb(39,63,108)'], [0.235294, 'rgb(60,74,107)'], [0.294118, 'rgb(76,85,107)'], [0.352941, 'rgb(91,95,109)'], [0.411765, 'rgb(104,106,112)'], [0.470588, 'rgb(117,117,117)'], [0.529412, 'rgb(131,129,120)'], [0.588235, 'rgb(146,140,120)'], [0.647059, 'rgb(161,152,118)'], [0.705882, 'rgb(176,165,114)'], [0.764706, 'rgb(192,177,109)'], [0.823529, 'rgb(209,191,102)'], [0.882353, 'rgb(225,204,92)'], [0.941176, 'rgb(243,219,79)'], [1.000000, 'rgb(255,233,69)']]\n};\nvar defaultScale = scales.RdBu;\nfunction getScale(scl, dflt) {\n  if (!dflt) dflt = defaultScale;\n  if (!scl) return dflt;\n  function parseScale() {\n    try {\n      scl = scales[scl] || JSON.parse(scl);\n    } catch (e) {\n      scl = dflt;\n    }\n  }\n  if (typeof scl === 'string') {\n    parseScale();\n    // occasionally scl is double-JSON encoded...\n    if (typeof scl === 'string') parseScale();\n  }\n  if (!isValidScaleArray(scl)) return dflt;\n  return scl;\n}\nfunction isValidScaleArray(scl) {\n  var highestVal = 0;\n  if (!Array.isArray(scl) || scl.length < 2) return false;\n  if (!scl[0] || !scl[scl.length - 1]) return false;\n  if (+scl[0][0] !== 0 || +scl[scl.length - 1][0] !== 1) return false;\n  for (var i = 0; i < scl.length; i++) {\n    var si = scl[i];\n    if (si.length !== 2 || +si[0] < highestVal || !tinycolor(si[1]).isValid()) {\n      return false;\n    }\n    highestVal = +si[0];\n  }\n  return true;\n}\nfunction isValidScale(scl) {\n  if (scales[scl] !== undefined) return true;else return isValidScaleArray(scl);\n}\nmodule.exports = {\n  scales: scales,\n  defaultScale: defaultScale,\n  get: getScale,\n  isValid: isValidScale\n};\n\n/***/ }),\n\n/***/ 92807:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// for automatic alignment on dragging, <1/3 means left align,\n// >2/3 means right, and between is center. Pick the right fraction\n// based on where you are, and return the fraction corresponding to\n// that position on the object\nmodule.exports = function align(v, dv, v0, v1, anchor) {\n  var vmin = (v - v0) / (v1 - v0);\n  var vmax = vmin + dv / (v1 - v0);\n  var vc = (vmin + vmax) / 2;\n\n  // explicitly specified anchor\n  if (anchor === 'left' || anchor === 'bottom') return vmin;\n  if (anchor === 'center' || anchor === 'middle') return vc;\n  if (anchor === 'right' || anchor === 'top') return vmax;\n\n  // automatic based on position\n  if (vmin < 2 / 3 - vc) return vmin;\n  if (vmax > 4 / 3 - vc) return vmax;\n  return vc;\n};\n\n/***/ }),\n\n/***/ 70461:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_155969__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_155969__(71828);\n\n// set cursors pointing toward the closest corner/side,\n// to indicate alignment\n// x and y are 0-1, fractions of the plot area\nvar cursorset = [['sw-resize', 's-resize', 'se-resize'], ['w-resize', 'move', 'e-resize'], ['nw-resize', 'n-resize', 'ne-resize']];\nmodule.exports = function getCursor(x, y, xanchor, yanchor) {\n  if (xanchor === 'left') x = 0;else if (xanchor === 'center') x = 1;else if (xanchor === 'right') x = 2;else x = Lib.constrain(Math.floor(x * 3), 0, 2);\n  if (yanchor === 'bottom') y = 0;else if (yanchor === 'middle') y = 1;else if (yanchor === 'top') y = 2;else y = Lib.constrain(Math.floor(y * 3), 0, 2);\n  return cursorset[y][x];\n};\n\n/***/ }),\n\n/***/ 64505:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\nexports.selectMode = function (dragmode) {\n  return dragmode === 'lasso' || dragmode === 'select';\n};\nexports.drawMode = function (dragmode) {\n  return dragmode === 'drawclosedpath' || dragmode === 'drawopenpath' || dragmode === 'drawline' || dragmode === 'drawrect' || dragmode === 'drawcircle';\n};\nexports.openMode = function (dragmode) {\n  return dragmode === 'drawline' || dragmode === 'drawopenpath';\n};\nexports.rectMode = function (dragmode) {\n  return dragmode === 'select' || dragmode === 'drawline' || dragmode === 'drawrect' || dragmode === 'drawcircle';\n};\nexports.freeMode = function (dragmode) {\n  return dragmode === 'lasso' || dragmode === 'drawclosedpath' || dragmode === 'drawopenpath';\n};\nexports.selectingOrDrawing = function (dragmode) {\n  return exports.freeMode(dragmode) || exports.rectMode(dragmode);\n};\n\n/***/ }),\n\n/***/ 28569:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_157704__) {\n\n\"use strict\";\n\n\nvar mouseOffset = __nested_webpack_require_157704__(48956);\nvar hasHover = __nested_webpack_require_157704__(57035);\nvar supportsPassive = __nested_webpack_require_157704__(38520);\nvar removeElement = (__nested_webpack_require_157704__(71828).removeElement);\nvar constants = __nested_webpack_require_157704__(85555);\nvar dragElement = module.exports = {};\ndragElement.align = __nested_webpack_require_157704__(92807);\ndragElement.getCursor = __nested_webpack_require_157704__(70461);\nvar unhover = __nested_webpack_require_157704__(26041);\ndragElement.unhover = unhover.wrapped;\ndragElement.unhoverRaw = unhover.raw;\n\n/**\n * Abstracts click & drag interactions\n *\n * During the interaction, a \"coverSlip\" element - a transparent\n * div covering the whole page - is created, which has two key effects:\n * - Lets you drag beyond the boundaries of the plot itself without\n *   dropping (but if you drag all the way out of the browser window the\n *   interaction will end)\n * - Freezes the cursor: whatever mouse cursor the drag element had when the\n *   interaction started gets copied to the coverSlip for use until mouseup\n *\n * If the user executes a drag bigger than MINDRAG, callbacks will fire as:\n *      prepFn, moveFn (1 or more times), doneFn\n * If the user does not drag enough, prepFn and clickFn will fire.\n *\n * Note: If you cancel contextmenu, clickFn will fire even with a right click\n * (unlike native events) so you'll get a `plotly_click` event. Cancel context eg:\n *    gd.addEventListener('contextmenu', function(e) { e.preventDefault(); });\n * TODO: we should probably turn this into a `config` parameter, so we can fix it\n * such that if you *don't* cancel contextmenu, we can prevent partial drags, which\n * put you in a weird state.\n *\n * If the user clicks multiple times quickly, clickFn will fire each time\n * but numClicks will increase to help you recognize doubleclicks.\n *\n * @param {object} options with keys:\n *      element (required) the DOM element to drag\n *      prepFn (optional) function(event, startX, startY)\n *          executed on mousedown\n *          startX and startY are the clientX and clientY pixel position\n *          of the mousedown event\n *      moveFn (optional) function(dx, dy)\n *          executed on move, ONLY after we've exceeded MINDRAG\n *          (we keep executing moveFn if you move back to where you started)\n *          dx and dy are the net pixel offset of the drag,\n *          dragged is true/false, has the mouse moved enough to\n *          constitute a drag\n *      doneFn (optional) function(e)\n *          executed on mouseup, ONLY if we exceeded MINDRAG (so you can be\n *          sure that moveFn has been called at least once)\n *          numClicks is how many clicks we've registered within\n *          a doubleclick time\n *          e is the original mouseup event\n *      clickFn (optional) function(numClicks, e)\n *          executed on mouseup if we have NOT exceeded MINDRAG (ie moveFn\n *          has not been called at all)\n *          numClicks is how many clicks we've registered within\n *          a doubleclick time\n *          e is the original mousedown event\n *      clampFn (optional, function(dx, dy) return [dx2, dy2])\n *          Provide custom clamping function for small displacements.\n *          By default, clamping is done using `minDrag` to x and y displacements\n *          independently.\n */\ndragElement.init = function init(options) {\n  var gd = options.gd;\n  var numClicks = 1;\n  var doubleClickDelay = gd._context.doubleClickDelay;\n  var element = options.element;\n  var startX, startY, newMouseDownTime, cursor, dragCover, initialEvent, initialTarget, rightClick;\n  if (!gd._mouseDownTime) gd._mouseDownTime = 0;\n  element.style.pointerEvents = 'all';\n  element.onmousedown = onStart;\n  if (!supportsPassive) {\n    element.ontouchstart = onStart;\n  } else {\n    if (element._ontouchstart) {\n      element.removeEventListener('touchstart', element._ontouchstart);\n    }\n    element._ontouchstart = onStart;\n    element.addEventListener('touchstart', onStart, {\n      passive: false\n    });\n  }\n  function _clampFn(dx, dy, minDrag) {\n    if (Math.abs(dx) < minDrag) dx = 0;\n    if (Math.abs(dy) < minDrag) dy = 0;\n    return [dx, dy];\n  }\n  var clampFn = options.clampFn || _clampFn;\n  function onStart(e) {\n    // make dragging and dragged into properties of gd\n    // so that others can look at and modify them\n    gd._dragged = false;\n    gd._dragging = true;\n    var offset = pointerOffset(e);\n    startX = offset[0];\n    startY = offset[1];\n    initialTarget = e.target;\n    initialEvent = e;\n    rightClick = e.buttons === 2 || e.ctrlKey;\n\n    // fix Fx.hover for touch events\n    if (typeof e.clientX === 'undefined' && typeof e.clientY === 'undefined') {\n      e.clientX = startX;\n      e.clientY = startY;\n    }\n    newMouseDownTime = new Date().getTime();\n    if (newMouseDownTime - gd._mouseDownTime < doubleClickDelay) {\n      // in a click train\n      numClicks += 1;\n    } else {\n      // new click train\n      numClicks = 1;\n      gd._mouseDownTime = newMouseDownTime;\n    }\n    if (options.prepFn) options.prepFn(e, startX, startY);\n    if (hasHover && !rightClick) {\n      dragCover = coverSlip();\n      dragCover.style.cursor = window.getComputedStyle(element).cursor;\n    } else if (!hasHover) {\n      // document acts as a dragcover for mobile, bc we can't create dragcover dynamically\n      dragCover = document;\n      cursor = window.getComputedStyle(document.documentElement).cursor;\n      document.documentElement.style.cursor = window.getComputedStyle(element).cursor;\n    }\n    document.addEventListener('mouseup', onDone);\n    document.addEventListener('touchend', onDone);\n    if (options.dragmode !== false) {\n      e.preventDefault();\n      document.addEventListener('mousemove', onMove);\n      document.addEventListener('touchmove', onMove, {\n        passive: false\n      });\n    }\n    return;\n  }\n  function onMove(e) {\n    e.preventDefault();\n    var offset = pointerOffset(e);\n    var minDrag = options.minDrag || constants.MINDRAG;\n    var dxdy = clampFn(offset[0] - startX, offset[1] - startY, minDrag);\n    var dx = dxdy[0];\n    var dy = dxdy[1];\n    if (dx || dy) {\n      gd._dragged = true;\n      dragElement.unhover(gd, e);\n    }\n    if (gd._dragged && options.moveFn && !rightClick) {\n      gd._dragdata = {\n        element: element,\n        dx: dx,\n        dy: dy\n      };\n      options.moveFn(dx, dy);\n    }\n    return;\n  }\n  function onDone(e) {\n    delete gd._dragdata;\n    if (options.dragmode !== false) {\n      e.preventDefault();\n      document.removeEventListener('mousemove', onMove);\n      document.removeEventListener('touchmove', onMove);\n    }\n    document.removeEventListener('mouseup', onDone);\n    document.removeEventListener('touchend', onDone);\n    if (hasHover) {\n      removeElement(dragCover);\n    } else if (cursor) {\n      dragCover.documentElement.style.cursor = cursor;\n      cursor = null;\n    }\n    if (!gd._dragging) {\n      gd._dragged = false;\n      return;\n    }\n    gd._dragging = false;\n\n    // don't count as a dblClick unless the mouseUp is also within\n    // the dblclick delay\n    if (new Date().getTime() - gd._mouseDownTime > doubleClickDelay) {\n      numClicks = Math.max(numClicks - 1, 1);\n    }\n    if (gd._dragged) {\n      if (options.doneFn) options.doneFn();\n    } else {\n      if (options.clickFn) options.clickFn(numClicks, initialEvent);\n\n      // If we haven't dragged, this should be a click. But because of the\n      // coverSlip changing the element, the natural system might not generate one,\n      // so we need to make our own. But right clicks don't normally generate\n      // click events, only contextmenu events, which happen on mousedown.\n      if (!rightClick) {\n        var e2;\n        try {\n          e2 = new MouseEvent('click', e);\n        } catch (err) {\n          var offset = pointerOffset(e);\n          e2 = document.createEvent('MouseEvents');\n          e2.initMouseEvent('click', e.bubbles, e.cancelable, e.view, e.detail, e.screenX, e.screenY, offset[0], offset[1], e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget);\n        }\n        initialTarget.dispatchEvent(e2);\n      }\n    }\n    gd._dragging = false;\n    gd._dragged = false;\n    return;\n  }\n};\nfunction coverSlip() {\n  var cover = document.createElement('div');\n  cover.className = 'dragcover';\n  var cStyle = cover.style;\n  cStyle.position = 'fixed';\n  cStyle.left = 0;\n  cStyle.right = 0;\n  cStyle.top = 0;\n  cStyle.bottom = 0;\n  cStyle.zIndex = 999999999;\n  cStyle.background = 'none';\n  document.body.appendChild(cover);\n  return cover;\n}\ndragElement.coverSlip = coverSlip;\nfunction pointerOffset(e) {\n  return mouseOffset(e.changedTouches ? e.changedTouches[0] : e, document.body);\n}\n\n/***/ }),\n\n/***/ 26041:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_166497__) {\n\n\"use strict\";\n\n\nvar Events = __nested_webpack_require_166497__(11086);\nvar throttle = __nested_webpack_require_166497__(79990);\nvar getGraphDiv = (__nested_webpack_require_166497__(24401).getGraphDiv);\nvar hoverConstants = __nested_webpack_require_166497__(26675);\nvar unhover = module.exports = {};\nunhover.wrapped = function (gd, evt, subplot) {\n  gd = getGraphDiv(gd);\n\n  // Important, clear any queued hovers\n  if (gd._fullLayout) {\n    throttle.clear(gd._fullLayout._uid + hoverConstants.HOVERID);\n  }\n  unhover.raw(gd, evt, subplot);\n};\n\n// remove hover effects on mouse out, and emit unhover event\nunhover.raw = function raw(gd, evt) {\n  var fullLayout = gd._fullLayout;\n  var oldhoverdata = gd._hoverdata;\n  if (!evt) evt = {};\n  if (evt.target && !gd._dragged && Events.triggerHandler(gd, 'plotly_beforehover', evt) === false) {\n    return;\n  }\n  fullLayout._hoverlayer.selectAll('g').remove();\n  fullLayout._hoverlayer.selectAll('line').remove();\n  fullLayout._hoverlayer.selectAll('circle').remove();\n  gd._hoverdata = undefined;\n  if (evt.target && oldhoverdata) {\n    gd.emit('plotly_unhover', {\n      event: evt,\n      points: oldhoverdata\n    });\n  }\n};\n\n/***/ }),\n\n/***/ 79952:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\nexports.P = {\n  valType: 'string',\n  // string type usually doesn't take values... this one should really be\n  // a special type or at least a special coercion function, from the GUI\n  // you only get these values but elsewhere the user can supply a list of\n  // dash lengths in px, and it will be honored\n  values: ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'],\n  dflt: 'solid',\n  editType: 'style'\n};\nexports.u = {\n  shape: {\n    valType: 'enumerated',\n    values: ['', '/', '\\\\', 'x', '-', '|', '+', '.'],\n    dflt: '',\n    arrayOk: true,\n    editType: 'style'\n  },\n  fillmode: {\n    valType: 'enumerated',\n    values: ['replace', 'overlay'],\n    dflt: 'replace',\n    editType: 'style'\n  },\n  bgcolor: {\n    valType: 'color',\n    arrayOk: true,\n    editType: 'style'\n  },\n  fgcolor: {\n    valType: 'color',\n    arrayOk: true,\n    editType: 'style'\n  },\n  fgopacity: {\n    valType: 'number',\n    editType: 'style',\n    min: 0,\n    max: 1\n  },\n  size: {\n    valType: 'number',\n    min: 0,\n    dflt: 8,\n    arrayOk: true,\n    editType: 'style'\n  },\n  solidity: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 0.3,\n    arrayOk: true,\n    editType: 'style'\n  },\n  editType: 'style'\n};\n\n/***/ }),\n\n/***/ 91424:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_169014__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_169014__(39898);\nvar Lib = __nested_webpack_require_169014__(71828);\nvar numberFormat = Lib.numberFormat;\nvar isNumeric = __nested_webpack_require_169014__(92770);\nvar tinycolor = __nested_webpack_require_169014__(84267);\nvar Registry = __nested_webpack_require_169014__(73972);\nvar Color = __nested_webpack_require_169014__(7901);\nvar Colorscale = __nested_webpack_require_169014__(21081);\nvar strTranslate = Lib.strTranslate;\nvar svgTextUtils = __nested_webpack_require_169014__(63893);\nvar xmlnsNamespaces = __nested_webpack_require_169014__(77922);\nvar alignment = __nested_webpack_require_169014__(18783);\nvar LINE_SPACING = alignment.LINE_SPACING;\nvar DESELECTDIM = (__nested_webpack_require_169014__(37822).DESELECTDIM);\nvar subTypes = __nested_webpack_require_169014__(34098);\nvar makeBubbleSizeFn = __nested_webpack_require_169014__(39984);\nvar appendArrayPointValue = (__nested_webpack_require_169014__(23469).appendArrayPointValue);\nvar drawing = module.exports = {};\n\n// -----------------------------------------------------\n// styling functions for plot elements\n// -----------------------------------------------------\n\ndrawing.font = function (s, family, size, color) {\n  // also allow the form font(s, {family, size, color})\n  if (Lib.isPlainObject(family)) {\n    color = family.color;\n    size = family.size;\n    family = family.family;\n  }\n  if (family) s.style('font-family', family);\n  if (size + 1) s.style('font-size', size + 'px');\n  if (color) s.call(Color.fill, color);\n};\n\n/*\n * Positioning helpers\n * Note: do not use `setPosition` with <text> nodes modified by\n * `svgTextUtils.convertToTspans`. Use `svgTextUtils.positionText`\n * instead, so that <tspan.line> elements get updated to match.\n */\ndrawing.setPosition = function (s, x, y) {\n  s.attr('x', x).attr('y', y);\n};\ndrawing.setSize = function (s, w, h) {\n  s.attr('width', w).attr('height', h);\n};\ndrawing.setRect = function (s, x, y, w, h) {\n  s.call(drawing.setPosition, x, y).call(drawing.setSize, w, h);\n};\n\n/** Translate node\n *\n * @param {object} d : calcdata point item\n * @param {sel} sel : d3 selction of node to translate\n * @param {object} xa : corresponding full xaxis object\n * @param {object} ya : corresponding full yaxis object\n *\n * @return {boolean} :\n *  true if selection got translated\n *  false if selection could not get translated\n */\ndrawing.translatePoint = function (d, sel, xa, ya) {\n  var x = xa.c2p(d.x);\n  var y = ya.c2p(d.y);\n  if (isNumeric(x) && isNumeric(y) && sel.node()) {\n    // for multiline text this works better\n    if (sel.node().nodeName === 'text') {\n      sel.attr('x', x).attr('y', y);\n    } else {\n      sel.attr('transform', strTranslate(x, y));\n    }\n  } else {\n    return false;\n  }\n  return true;\n};\ndrawing.translatePoints = function (s, xa, ya) {\n  s.each(function (d) {\n    var sel = d3.select(this);\n    drawing.translatePoint(d, sel, xa, ya);\n  });\n};\ndrawing.hideOutsideRangePoint = function (d, sel, xa, ya, xcalendar, ycalendar) {\n  sel.attr('display', xa.isPtWithinRange(d, xcalendar) && ya.isPtWithinRange(d, ycalendar) ? null : 'none');\n};\ndrawing.hideOutsideRangePoints = function (traceGroups, subplot) {\n  if (!subplot._hasClipOnAxisFalse) return;\n  var xa = subplot.xaxis;\n  var ya = subplot.yaxis;\n  traceGroups.each(function (d) {\n    var trace = d[0].trace;\n    var xcalendar = trace.xcalendar;\n    var ycalendar = trace.ycalendar;\n    var selector = Registry.traceIs(trace, 'bar-like') ? '.bartext' : '.point,.textpoint';\n    traceGroups.selectAll(selector).each(function (d) {\n      drawing.hideOutsideRangePoint(d, d3.select(this), xa, ya, xcalendar, ycalendar);\n    });\n  });\n};\ndrawing.crispRound = function (gd, lineWidth, dflt) {\n  // for lines that disable antialiasing we want to\n  // make sure the width is an integer, and at least 1 if it's nonzero\n\n  if (!lineWidth || !isNumeric(lineWidth)) return dflt || 0;\n\n  // but not for static plots - these don't get antialiased anyway.\n  if (gd._context.staticPlot) return lineWidth;\n  if (lineWidth < 1) return 1;\n  return Math.round(lineWidth);\n};\ndrawing.singleLineStyle = function (d, s, lw, lc, ld) {\n  s.style('fill', 'none');\n  var line = (((d || [])[0] || {}).trace || {}).line || {};\n  var lw1 = lw || line.width || 0;\n  var dash = ld || line.dash || '';\n  Color.stroke(s, lc || line.color);\n  drawing.dashLine(s, dash, lw1);\n};\ndrawing.lineGroupStyle = function (s, lw, lc, ld) {\n  s.style('fill', 'none').each(function (d) {\n    var line = (((d || [])[0] || {}).trace || {}).line || {};\n    var lw1 = lw || line.width || 0;\n    var dash = ld || line.dash || '';\n    d3.select(this).call(Color.stroke, lc || line.color).call(drawing.dashLine, dash, lw1);\n  });\n};\ndrawing.dashLine = function (s, dash, lineWidth) {\n  lineWidth = +lineWidth || 0;\n  dash = drawing.dashStyle(dash, lineWidth);\n  s.style({\n    'stroke-dasharray': dash,\n    'stroke-width': lineWidth + 'px'\n  });\n};\ndrawing.dashStyle = function (dash, lineWidth) {\n  lineWidth = +lineWidth || 1;\n  var dlw = Math.max(lineWidth, 3);\n  if (dash === 'solid') dash = '';else if (dash === 'dot') dash = dlw + 'px,' + dlw + 'px';else if (dash === 'dash') dash = 3 * dlw + 'px,' + 3 * dlw + 'px';else if (dash === 'longdash') dash = 5 * dlw + 'px,' + 5 * dlw + 'px';else if (dash === 'dashdot') {\n    dash = 3 * dlw + 'px,' + dlw + 'px,' + dlw + 'px,' + dlw + 'px';\n  } else if (dash === 'longdashdot') {\n    dash = 5 * dlw + 'px,' + 2 * dlw + 'px,' + dlw + 'px,' + 2 * dlw + 'px';\n  }\n  // otherwise user wrote the dasharray themselves - leave it be\n\n  return dash;\n};\nfunction setFillStyle(sel, trace, gd) {\n  var markerPattern = trace.fillpattern;\n  var patternShape = markerPattern && drawing.getPatternAttr(markerPattern.shape, 0, '');\n  if (patternShape) {\n    var patternBGColor = drawing.getPatternAttr(markerPattern.bgcolor, 0, null);\n    var patternFGColor = drawing.getPatternAttr(markerPattern.fgcolor, 0, null);\n    var patternFGOpacity = markerPattern.fgopacity;\n    var patternSize = drawing.getPatternAttr(markerPattern.size, 0, 8);\n    var patternSolidity = drawing.getPatternAttr(markerPattern.solidity, 0, 0.3);\n    var patternID = trace.uid;\n    drawing.pattern(sel, 'point', gd, patternID, patternShape, patternSize, patternSolidity, undefined, markerPattern.fillmode, patternBGColor, patternFGColor, patternFGOpacity);\n  } else if (trace.fillcolor) {\n    sel.call(Color.fill, trace.fillcolor);\n  }\n}\n\n// Same as fillGroupStyle, except in this case the selection may be a transition\ndrawing.singleFillStyle = function (sel, gd) {\n  var node = d3.select(sel.node());\n  var data = node.data();\n  var trace = ((data[0] || [])[0] || {}).trace || {};\n  setFillStyle(sel, trace, gd);\n};\ndrawing.fillGroupStyle = function (s, gd) {\n  s.style('stroke-width', 0).each(function (d) {\n    var shape = d3.select(this);\n    // N.B. 'd' won't be a calcdata item when\n    // fill !== 'none' on a segment-less and marker-less trace\n    if (d[0].trace) {\n      setFillStyle(shape, d[0].trace, gd);\n    }\n  });\n};\nvar SYMBOLDEFS = __nested_webpack_require_169014__(90998);\ndrawing.symbolNames = [];\ndrawing.symbolFuncs = [];\ndrawing.symbolBackOffs = [];\ndrawing.symbolNeedLines = {};\ndrawing.symbolNoDot = {};\ndrawing.symbolNoFill = {};\ndrawing.symbolList = [];\nObject.keys(SYMBOLDEFS).forEach(function (k) {\n  var symDef = SYMBOLDEFS[k];\n  var n = symDef.n;\n  drawing.symbolList.push(n, String(n), k, n + 100, String(n + 100), k + '-open');\n  drawing.symbolNames[n] = k;\n  drawing.symbolFuncs[n] = symDef.f;\n  drawing.symbolBackOffs[n] = symDef.backoff || 0;\n  if (symDef.needLine) {\n    drawing.symbolNeedLines[n] = true;\n  }\n  if (symDef.noDot) {\n    drawing.symbolNoDot[n] = true;\n  } else {\n    drawing.symbolList.push(n + 200, String(n + 200), k + '-dot', n + 300, String(n + 300), k + '-open-dot');\n  }\n  if (symDef.noFill) {\n    drawing.symbolNoFill[n] = true;\n  }\n});\nvar MAXSYMBOL = drawing.symbolNames.length;\n// add a dot in the middle of the symbol\nvar DOTPATH = 'M0,0.5L0.5,0L0,-0.5L-0.5,0Z';\ndrawing.symbolNumber = function (v) {\n  if (isNumeric(v)) {\n    v = +v;\n  } else if (typeof v === 'string') {\n    var vbase = 0;\n    if (v.indexOf('-open') > 0) {\n      vbase = 100;\n      v = v.replace('-open', '');\n    }\n    if (v.indexOf('-dot') > 0) {\n      vbase += 200;\n      v = v.replace('-dot', '');\n    }\n    v = drawing.symbolNames.indexOf(v);\n    if (v >= 0) {\n      v += vbase;\n    }\n  }\n  return v % 100 >= MAXSYMBOL || v >= 400 ? 0 : Math.floor(Math.max(v, 0));\n};\nfunction makePointPath(symbolNumber, r, t, s) {\n  var base = symbolNumber % 100;\n  return drawing.symbolFuncs[base](r, t, s) + (symbolNumber >= 200 ? DOTPATH : '');\n}\nvar HORZGRADIENT = {\n  x1: 1,\n  x2: 0,\n  y1: 0,\n  y2: 0\n};\nvar VERTGRADIENT = {\n  x1: 0,\n  x2: 0,\n  y1: 1,\n  y2: 0\n};\nvar stopFormatter = numberFormat('~f');\nvar gradientInfo = {\n  radial: {\n    node: 'radialGradient'\n  },\n  radialreversed: {\n    node: 'radialGradient',\n    reversed: true\n  },\n  horizontal: {\n    node: 'linearGradient',\n    attrs: HORZGRADIENT\n  },\n  horizontalreversed: {\n    node: 'linearGradient',\n    attrs: HORZGRADIENT,\n    reversed: true\n  },\n  vertical: {\n    node: 'linearGradient',\n    attrs: VERTGRADIENT\n  },\n  verticalreversed: {\n    node: 'linearGradient',\n    attrs: VERTGRADIENT,\n    reversed: true\n  }\n};\n\n/**\n * gradient: create and apply a gradient fill\n *\n * @param {object} sel: d3 selection to apply this gradient to\n *     You can use `selection.call(Drawing.gradient, ...)`\n * @param {DOM element} gd: the graph div `sel` is part of\n * @param {string} gradientID: a unique (within this plot) identifier\n *     for this gradient, so that we don't create unnecessary definitions\n * @param {string} type: 'radial', 'horizontal', or 'vertical', optionally with\n *     'reversed' at the end. Normally radial goes center to edge,\n *     horizontal goes right to left, and vertical goes bottom to top\n * @param {array} colorscale: as in attribute values, [[fraction, color], ...]\n * @param {string} prop: the property to apply to, 'fill' or 'stroke'\n */\ndrawing.gradient = function (sel, gd, gradientID, type, colorscale, prop) {\n  var len = colorscale.length;\n  var info = gradientInfo[type];\n  var colorStops = new Array(len);\n  for (var i = 0; i < len; i++) {\n    if (info.reversed) {\n      colorStops[len - 1 - i] = [stopFormatter((1 - colorscale[i][0]) * 100), colorscale[i][1]];\n    } else {\n      colorStops[i] = [stopFormatter(colorscale[i][0] * 100), colorscale[i][1]];\n    }\n  }\n  var fullLayout = gd._fullLayout;\n  var fullID = 'g' + fullLayout._uid + '-' + gradientID;\n  var gradient = fullLayout._defs.select('.gradients').selectAll('#' + fullID).data([type + colorStops.join(';')], Lib.identity);\n  gradient.exit().remove();\n  gradient.enter().append(info.node).each(function () {\n    var el = d3.select(this);\n    if (info.attrs) el.attr(info.attrs);\n    el.attr('id', fullID);\n    var stops = el.selectAll('stop').data(colorStops);\n    stops.exit().remove();\n    stops.enter().append('stop');\n    stops.each(function (d) {\n      var tc = tinycolor(d[1]);\n      d3.select(this).attr({\n        offset: d[0] + '%',\n        'stop-color': Color.tinyRGB(tc),\n        'stop-opacity': tc.getAlpha()\n      });\n    });\n  });\n  sel.style(prop, getFullUrl(fullID, gd)).style(prop + '-opacity', null);\n  sel.classed('gradient_filled', true);\n};\n\n/**\n * pattern: create and apply a pattern fill\n *\n * @param {object} sel: d3 selection to apply this pattern to\n *     You can use `selection.call(Drawing.pattern, ...)`\n * @param {string} calledBy: option to know the caller component\n * @param {DOM element} gd: the graph div `sel` is part of\n * @param {string} patternID: a unique (within this plot) identifier\n *     for this pattern, so that we don't create unnecessary definitions\n * @param {number} size: size of unit squares for repetition of this pattern\n * @param {number} solidity: how solid lines of this pattern are\n * @param {string} mcc: color when painted with colorscale\n * @param {string} fillmode: fillmode for this pattern\n * @param {string} bgcolor: background color for this pattern\n * @param {string} fgcolor: foreground color for this pattern\n * @param {number} fgopacity: foreground opacity for this pattern\n */\ndrawing.pattern = function (sel, calledBy, gd, patternID, shape, size, solidity, mcc, fillmode, bgcolor, fgcolor, fgopacity) {\n  var isLegend = calledBy === 'legend';\n  if (mcc) {\n    if (fillmode === 'overlay') {\n      bgcolor = mcc;\n      fgcolor = Color.contrast(bgcolor);\n    } else {\n      bgcolor = undefined;\n      fgcolor = mcc;\n    }\n  }\n  var fullLayout = gd._fullLayout;\n  var fullID = 'p' + fullLayout._uid + '-' + patternID;\n  var width, height;\n\n  // linear interpolation\n  var linearFn = function (x, x0, x1, y0, y1) {\n    return y0 + (y1 - y0) * (x - x0) / (x1 - x0);\n  };\n  var path, linewidth, radius;\n  var patternTag;\n  var patternAttrs = {};\n  var fgC = tinycolor(fgcolor);\n  var fgRGB = Color.tinyRGB(fgC);\n  var fgAlpha = fgC.getAlpha();\n  var opacity = fgopacity * fgAlpha;\n  switch (shape) {\n    case '/':\n      width = size * Math.sqrt(2);\n      height = size * Math.sqrt(2);\n      path = 'M-' + width / 4 + ',' + height / 4 + 'l' + width / 2 + ',-' + height / 2 + 'M0,' + height + 'L' + width + ',0' + 'M' + width / 4 * 3 + ',' + height / 4 * 5 + 'l' + width / 2 + ',-' + height / 2;\n      linewidth = solidity * size;\n      patternTag = 'path';\n      patternAttrs = {\n        'd': path,\n        'opacity': opacity,\n        'stroke': fgRGB,\n        'stroke-width': linewidth + 'px'\n      };\n      break;\n    case '\\\\':\n      width = size * Math.sqrt(2);\n      height = size * Math.sqrt(2);\n      path = 'M' + width / 4 * 3 + ',-' + height / 4 + 'l' + width / 2 + ',' + height / 2 + 'M0,0L' + width + ',' + height + 'M-' + width / 4 + ',' + height / 4 * 3 + 'l' + width / 2 + ',' + height / 2;\n      linewidth = solidity * size;\n      patternTag = 'path';\n      patternAttrs = {\n        'd': path,\n        'opacity': opacity,\n        'stroke': fgRGB,\n        'stroke-width': linewidth + 'px'\n      };\n      break;\n    case 'x':\n      width = size * Math.sqrt(2);\n      height = size * Math.sqrt(2);\n      path = 'M-' + width / 4 + ',' + height / 4 + 'l' + width / 2 + ',-' + height / 2 + 'M0,' + height + 'L' + width + ',0' + 'M' + width / 4 * 3 + ',' + height / 4 * 5 + 'l' + width / 2 + ',-' + height / 2 + 'M' + width / 4 * 3 + ',-' + height / 4 + 'l' + width / 2 + ',' + height / 2 + 'M0,0L' + width + ',' + height + 'M-' + width / 4 + ',' + height / 4 * 3 + 'l' + width / 2 + ',' + height / 2;\n      linewidth = size - size * Math.sqrt(1.0 - solidity);\n      patternTag = 'path';\n      patternAttrs = {\n        'd': path,\n        'opacity': opacity,\n        'stroke': fgRGB,\n        'stroke-width': linewidth + 'px'\n      };\n      break;\n    case '|':\n      width = size;\n      height = size;\n      patternTag = 'path';\n      path = 'M' + width / 2 + ',0L' + width / 2 + ',' + height;\n      linewidth = solidity * size;\n      patternTag = 'path';\n      patternAttrs = {\n        'd': path,\n        'opacity': opacity,\n        'stroke': fgRGB,\n        'stroke-width': linewidth + 'px'\n      };\n      break;\n    case '-':\n      width = size;\n      height = size;\n      patternTag = 'path';\n      path = 'M0,' + height / 2 + 'L' + width + ',' + height / 2;\n      linewidth = solidity * size;\n      patternTag = 'path';\n      patternAttrs = {\n        'd': path,\n        'opacity': opacity,\n        'stroke': fgRGB,\n        'stroke-width': linewidth + 'px'\n      };\n      break;\n    case '+':\n      width = size;\n      height = size;\n      patternTag = 'path';\n      path = 'M' + width / 2 + ',0L' + width / 2 + ',' + height + 'M0,' + height / 2 + 'L' + width + ',' + height / 2;\n      linewidth = size - size * Math.sqrt(1.0 - solidity);\n      patternTag = 'path';\n      patternAttrs = {\n        'd': path,\n        'opacity': opacity,\n        'stroke': fgRGB,\n        'stroke-width': linewidth + 'px'\n      };\n      break;\n    case '.':\n      width = size;\n      height = size;\n      if (solidity < Math.PI / 4) {\n        radius = Math.sqrt(solidity * size * size / Math.PI);\n      } else {\n        radius = linearFn(solidity, Math.PI / 4, 1.0, size / 2, size / Math.sqrt(2));\n      }\n      patternTag = 'circle';\n      patternAttrs = {\n        'cx': width / 2,\n        'cy': height / 2,\n        'r': radius,\n        'opacity': opacity,\n        'fill': fgRGB\n      };\n      break;\n  }\n  var str = [shape || 'noSh', bgcolor || 'noBg', fgcolor || 'noFg', size, solidity].join(';');\n  var pattern = fullLayout._defs.select('.patterns').selectAll('#' + fullID).data([str], Lib.identity);\n  pattern.exit().remove();\n  pattern.enter().append('pattern').each(function () {\n    var el = d3.select(this);\n    el.attr({\n      'id': fullID,\n      'width': width + 'px',\n      'height': height + 'px',\n      'patternUnits': 'userSpaceOnUse',\n      // for legends scale down patterns just a bit so that default size (i.e 8) nicely fit in small icons\n      'patternTransform': isLegend ? 'scale(0.8)' : ''\n    });\n    if (bgcolor) {\n      var bgC = tinycolor(bgcolor);\n      var bgRGB = Color.tinyRGB(bgC);\n      var bgAlpha = bgC.getAlpha();\n      var rects = el.selectAll('rect').data([0]);\n      rects.exit().remove();\n      rects.enter().append('rect').attr({\n        'width': width + 'px',\n        'height': height + 'px',\n        'fill': bgRGB,\n        'fill-opacity': bgAlpha\n      });\n    }\n    var patterns = el.selectAll(patternTag).data([0]);\n    patterns.exit().remove();\n    patterns.enter().append(patternTag).attr(patternAttrs);\n  });\n  sel.style('fill', getFullUrl(fullID, gd)).style('fill-opacity', null);\n  sel.classed('pattern_filled', true);\n};\n\n/*\n * Make the gradients container and clear out any previous gradients.\n * We never collect all the gradients we need in one place,\n * so we can't ever remove gradients that have stopped being useful,\n * except all at once before a full redraw.\n * The upside of this is arbitrary points can share gradient defs\n */\ndrawing.initGradients = function (gd) {\n  var fullLayout = gd._fullLayout;\n  var gradientsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'gradients');\n  gradientsGroup.selectAll('linearGradient,radialGradient').remove();\n  d3.select(gd).selectAll('.gradient_filled').classed('gradient_filled', false);\n};\ndrawing.initPatterns = function (gd) {\n  var fullLayout = gd._fullLayout;\n  var patternsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'patterns');\n  patternsGroup.selectAll('pattern').remove();\n  d3.select(gd).selectAll('.pattern_filled').classed('pattern_filled', false);\n};\ndrawing.getPatternAttr = function (mp, i, dflt) {\n  if (mp && Lib.isArrayOrTypedArray(mp)) {\n    return i < mp.length ? mp[i] : dflt;\n  }\n  return mp;\n};\ndrawing.pointStyle = function (s, trace, gd) {\n  if (!s.size()) return;\n  var fns = drawing.makePointStyleFns(trace);\n  s.each(function (d) {\n    drawing.singlePointStyle(d, d3.select(this), trace, fns, gd);\n  });\n};\ndrawing.singlePointStyle = function (d, sel, trace, fns, gd) {\n  var marker = trace.marker;\n  var markerLine = marker.line;\n  sel.style('opacity', fns.selectedOpacityFn ? fns.selectedOpacityFn(d) : d.mo === undefined ? marker.opacity : d.mo);\n  if (fns.ms2mrc) {\n    var r;\n\n    // handle multi-trace graph edit case\n    if (d.ms === 'various' || marker.size === 'various') {\n      r = 3;\n    } else {\n      r = fns.ms2mrc(d.ms);\n    }\n\n    // store the calculated size so hover can use it\n    d.mrc = r;\n    if (fns.selectedSizeFn) {\n      r = d.mrc = fns.selectedSizeFn(d);\n    }\n\n    // turn the symbol into a sanitized number\n    var x = drawing.symbolNumber(d.mx || marker.symbol) || 0;\n\n    // save if this marker is open\n    // because that impacts how to handle colors\n    d.om = x % 200 >= 100;\n    var angle = getMarkerAngle(d, trace);\n    var standoff = getMarkerStandoff(d, trace);\n    sel.attr('d', makePointPath(x, r, angle, standoff));\n  }\n  var perPointGradient = false;\n  var fillColor, lineColor, lineWidth;\n\n  // 'so' is suspected outliers, for box plots\n  if (d.so) {\n    lineWidth = markerLine.outlierwidth;\n    lineColor = markerLine.outliercolor;\n    fillColor = marker.outliercolor;\n  } else {\n    var markerLineWidth = (markerLine || {}).width;\n    lineWidth = (d.mlw + 1 || markerLineWidth + 1 ||\n    // TODO: we need the latter for legends... can we get rid of it?\n    (d.trace ? (d.trace.marker.line || {}).width : 0) + 1) - 1 || 0;\n    if ('mlc' in d) lineColor = d.mlcc = fns.lineScale(d.mlc);\n    // weird case: array wasn't long enough to apply to every point\n    else if (Lib.isArrayOrTypedArray(markerLine.color)) lineColor = Color.defaultLine;else lineColor = markerLine.color;\n    if (Lib.isArrayOrTypedArray(marker.color)) {\n      fillColor = Color.defaultLine;\n      perPointGradient = true;\n    }\n    if ('mc' in d) {\n      fillColor = d.mcc = fns.markerScale(d.mc);\n    } else {\n      fillColor = marker.color || 'rgba(0,0,0,0)';\n    }\n    if (fns.selectedColorFn) {\n      fillColor = fns.selectedColorFn(d);\n    }\n  }\n  if (d.om) {\n    // open markers can't have zero linewidth, default to 1px,\n    // and use fill color as stroke color\n    sel.call(Color.stroke, fillColor).style({\n      'stroke-width': (lineWidth || 1) + 'px',\n      fill: 'none'\n    });\n  } else {\n    sel.style('stroke-width', (d.isBlank ? 0 : lineWidth) + 'px');\n    var markerGradient = marker.gradient;\n    var gradientType = d.mgt;\n    if (gradientType) perPointGradient = true;else gradientType = markerGradient && markerGradient.type;\n\n    // for legend - arrays will propagate through here, but we don't need\n    // to treat it as per-point.\n    if (Lib.isArrayOrTypedArray(gradientType)) {\n      gradientType = gradientType[0];\n      if (!gradientInfo[gradientType]) gradientType = 0;\n    }\n    var markerPattern = marker.pattern;\n    var patternShape = markerPattern && drawing.getPatternAttr(markerPattern.shape, d.i, '');\n    if (gradientType && gradientType !== 'none') {\n      var gradientColor = d.mgc;\n      if (gradientColor) perPointGradient = true;else gradientColor = markerGradient.color;\n      var gradientID = trace.uid;\n      if (perPointGradient) gradientID += '-' + d.i;\n      drawing.gradient(sel, gd, gradientID, gradientType, [[0, gradientColor], [1, fillColor]], 'fill');\n    } else if (patternShape) {\n      var patternBGColor = drawing.getPatternAttr(markerPattern.bgcolor, d.i, null);\n      var patternFGColor = drawing.getPatternAttr(markerPattern.fgcolor, d.i, null);\n      var patternFGOpacity = markerPattern.fgopacity;\n      var patternSize = drawing.getPatternAttr(markerPattern.size, d.i, 8);\n      var patternSolidity = drawing.getPatternAttr(markerPattern.solidity, d.i, 0.3);\n      var perPointPattern = d.mcc || Lib.isArrayOrTypedArray(markerPattern.shape) || Lib.isArrayOrTypedArray(markerPattern.bgcolor) || Lib.isArrayOrTypedArray(markerPattern.size) || Lib.isArrayOrTypedArray(markerPattern.solidity);\n      var patternID = trace.uid;\n      if (perPointPattern) patternID += '-' + d.i;\n      drawing.pattern(sel, 'point', gd, patternID, patternShape, patternSize, patternSolidity, d.mcc, markerPattern.fillmode, patternBGColor, patternFGColor, patternFGOpacity);\n    } else {\n      Color.fill(sel, fillColor);\n    }\n    if (lineWidth) {\n      Color.stroke(sel, lineColor);\n    }\n  }\n};\ndrawing.makePointStyleFns = function (trace) {\n  var out = {};\n  var marker = trace.marker;\n\n  // allow array marker and marker line colors to be\n  // scaled by given max and min to colorscales\n  out.markerScale = drawing.tryColorscale(marker, '');\n  out.lineScale = drawing.tryColorscale(marker, 'line');\n  if (Registry.traceIs(trace, 'symbols')) {\n    out.ms2mrc = subTypes.isBubble(trace) ? makeBubbleSizeFn(trace) : function () {\n      return (marker.size || 6) / 2;\n    };\n  }\n  if (trace.selectedpoints) {\n    Lib.extendFlat(out, drawing.makeSelectedPointStyleFns(trace));\n  }\n  return out;\n};\ndrawing.makeSelectedPointStyleFns = function (trace) {\n  var out = {};\n  var selectedAttrs = trace.selected || {};\n  var unselectedAttrs = trace.unselected || {};\n  var marker = trace.marker || {};\n  var selectedMarker = selectedAttrs.marker || {};\n  var unselectedMarker = unselectedAttrs.marker || {};\n  var mo = marker.opacity;\n  var smo = selectedMarker.opacity;\n  var usmo = unselectedMarker.opacity;\n  var smoIsDefined = smo !== undefined;\n  var usmoIsDefined = usmo !== undefined;\n  if (Lib.isArrayOrTypedArray(mo) || smoIsDefined || usmoIsDefined) {\n    out.selectedOpacityFn = function (d) {\n      var base = d.mo === undefined ? marker.opacity : d.mo;\n      if (d.selected) {\n        return smoIsDefined ? smo : base;\n      } else {\n        return usmoIsDefined ? usmo : DESELECTDIM * base;\n      }\n    };\n  }\n  var mc = marker.color;\n  var smc = selectedMarker.color;\n  var usmc = unselectedMarker.color;\n  if (smc || usmc) {\n    out.selectedColorFn = function (d) {\n      var base = d.mcc || mc;\n      if (d.selected) {\n        return smc || base;\n      } else {\n        return usmc || base;\n      }\n    };\n  }\n  var ms = marker.size;\n  var sms = selectedMarker.size;\n  var usms = unselectedMarker.size;\n  var smsIsDefined = sms !== undefined;\n  var usmsIsDefined = usms !== undefined;\n  if (Registry.traceIs(trace, 'symbols') && (smsIsDefined || usmsIsDefined)) {\n    out.selectedSizeFn = function (d) {\n      var base = d.mrc || ms / 2;\n      if (d.selected) {\n        return smsIsDefined ? sms / 2 : base;\n      } else {\n        return usmsIsDefined ? usms / 2 : base;\n      }\n    };\n  }\n  return out;\n};\ndrawing.makeSelectedTextStyleFns = function (trace) {\n  var out = {};\n  var selectedAttrs = trace.selected || {};\n  var unselectedAttrs = trace.unselected || {};\n  var textFont = trace.textfont || {};\n  var selectedTextFont = selectedAttrs.textfont || {};\n  var unselectedTextFont = unselectedAttrs.textfont || {};\n  var tc = textFont.color;\n  var stc = selectedTextFont.color;\n  var utc = unselectedTextFont.color;\n  out.selectedTextColorFn = function (d) {\n    var base = d.tc || tc;\n    if (d.selected) {\n      return stc || base;\n    } else {\n      if (utc) return utc;else return stc ? base : Color.addOpacity(base, DESELECTDIM);\n    }\n  };\n  return out;\n};\ndrawing.selectedPointStyle = function (s, trace) {\n  if (!s.size() || !trace.selectedpoints) return;\n  var fns = drawing.makeSelectedPointStyleFns(trace);\n  var marker = trace.marker || {};\n  var seq = [];\n  if (fns.selectedOpacityFn) {\n    seq.push(function (pt, d) {\n      pt.style('opacity', fns.selectedOpacityFn(d));\n    });\n  }\n  if (fns.selectedColorFn) {\n    seq.push(function (pt, d) {\n      Color.fill(pt, fns.selectedColorFn(d));\n    });\n  }\n  if (fns.selectedSizeFn) {\n    seq.push(function (pt, d) {\n      var mx = d.mx || marker.symbol || 0;\n      var mrc2 = fns.selectedSizeFn(d);\n      pt.attr('d', makePointPath(drawing.symbolNumber(mx), mrc2, getMarkerAngle(d, trace), getMarkerStandoff(d, trace)));\n\n      // save for Drawing.selectedTextStyle\n      d.mrc2 = mrc2;\n    });\n  }\n  if (seq.length) {\n    s.each(function (d) {\n      var pt = d3.select(this);\n      for (var i = 0; i < seq.length; i++) {\n        seq[i](pt, d);\n      }\n    });\n  }\n};\ndrawing.tryColorscale = function (marker, prefix) {\n  var cont = prefix ? Lib.nestedProperty(marker, prefix).get() : marker;\n  if (cont) {\n    var colorArray = cont.color;\n    if ((cont.colorscale || cont._colorAx) && Lib.isArrayOrTypedArray(colorArray)) {\n      return Colorscale.makeColorScaleFuncFromTrace(cont);\n    }\n  }\n  return Lib.identity;\n};\nvar TEXTOFFSETSIGN = {\n  start: 1,\n  end: -1,\n  middle: 0,\n  bottom: 1,\n  top: -1\n};\nfunction textPointPosition(s, textPosition, fontSize, markerRadius, dontTouchParent) {\n  var group = d3.select(s.node().parentNode);\n  var v = textPosition.indexOf('top') !== -1 ? 'top' : textPosition.indexOf('bottom') !== -1 ? 'bottom' : 'middle';\n  var h = textPosition.indexOf('left') !== -1 ? 'end' : textPosition.indexOf('right') !== -1 ? 'start' : 'middle';\n\n  // if markers are shown, offset a little more than\n  // the nominal marker size\n  // ie 2/1.6 * nominal, bcs some markers are a bit bigger\n  var r = markerRadius ? markerRadius / 0.8 + 1 : 0;\n  var numLines = (svgTextUtils.lineCount(s) - 1) * LINE_SPACING + 1;\n  var dx = TEXTOFFSETSIGN[h] * r;\n  var dy = fontSize * 0.75 + TEXTOFFSETSIGN[v] * r + (TEXTOFFSETSIGN[v] - 1) * numLines * fontSize / 2;\n\n  // fix the overall text group position\n  s.attr('text-anchor', h);\n  if (!dontTouchParent) {\n    group.attr('transform', strTranslate(dx, dy));\n  }\n}\nfunction extracTextFontSize(d, trace) {\n  var fontSize = d.ts || trace.textfont.size;\n  return isNumeric(fontSize) && fontSize > 0 ? fontSize : 0;\n}\n\n// draw text at points\ndrawing.textPointStyle = function (s, trace, gd) {\n  if (!s.size()) return;\n  var selectedTextColorFn;\n  if (trace.selectedpoints) {\n    var fns = drawing.makeSelectedTextStyleFns(trace);\n    selectedTextColorFn = fns.selectedTextColorFn;\n  }\n  var texttemplate = trace.texttemplate;\n  var fullLayout = gd._fullLayout;\n  s.each(function (d) {\n    var p = d3.select(this);\n    var text = texttemplate ? Lib.extractOption(d, trace, 'txt', 'texttemplate') : Lib.extractOption(d, trace, 'tx', 'text');\n    if (!text && text !== 0) {\n      p.remove();\n      return;\n    }\n    if (texttemplate) {\n      var fn = trace._module.formatLabels;\n      var labels = fn ? fn(d, trace, fullLayout) : {};\n      var pointValues = {};\n      appendArrayPointValue(pointValues, trace, d.i);\n      var meta = trace._meta || {};\n      text = Lib.texttemplateString(text, labels, fullLayout._d3locale, pointValues, d, meta);\n    }\n    var pos = d.tp || trace.textposition;\n    var fontSize = extracTextFontSize(d, trace);\n    var fontColor = selectedTextColorFn ? selectedTextColorFn(d) : d.tc || trace.textfont.color;\n    p.call(drawing.font, d.tf || trace.textfont.family, fontSize, fontColor).text(text).call(svgTextUtils.convertToTspans, gd).call(textPointPosition, pos, fontSize, d.mrc);\n  });\n};\ndrawing.selectedTextStyle = function (s, trace) {\n  if (!s.size() || !trace.selectedpoints) return;\n  var fns = drawing.makeSelectedTextStyleFns(trace);\n  s.each(function (d) {\n    var tx = d3.select(this);\n    var tc = fns.selectedTextColorFn(d);\n    var tp = d.tp || trace.textposition;\n    var fontSize = extracTextFontSize(d, trace);\n    Color.fill(tx, tc);\n    var dontTouchParent = Registry.traceIs(trace, 'bar-like');\n    textPointPosition(tx, tp, fontSize, d.mrc2 || d.mrc, dontTouchParent);\n  });\n};\n\n// generalized Catmull-Rom splines, per\n// http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\nvar CatmullRomExp = 0.5;\ndrawing.smoothopen = function (pts, smoothness) {\n  if (pts.length < 3) {\n    return 'M' + pts.join('L');\n  }\n  var path = 'M' + pts[0];\n  var tangents = [];\n  var i;\n  for (i = 1; i < pts.length - 1; i++) {\n    tangents.push(makeTangent(pts[i - 1], pts[i], pts[i + 1], smoothness));\n  }\n  path += 'Q' + tangents[0][0] + ' ' + pts[1];\n  for (i = 2; i < pts.length - 1; i++) {\n    path += 'C' + tangents[i - 2][1] + ' ' + tangents[i - 1][0] + ' ' + pts[i];\n  }\n  path += 'Q' + tangents[pts.length - 3][1] + ' ' + pts[pts.length - 1];\n  return path;\n};\ndrawing.smoothclosed = function (pts, smoothness) {\n  if (pts.length < 3) {\n    return 'M' + pts.join('L') + 'Z';\n  }\n  var path = 'M' + pts[0];\n  var pLast = pts.length - 1;\n  var tangents = [makeTangent(pts[pLast], pts[0], pts[1], smoothness)];\n  var i;\n  for (i = 1; i < pLast; i++) {\n    tangents.push(makeTangent(pts[i - 1], pts[i], pts[i + 1], smoothness));\n  }\n  tangents.push(makeTangent(pts[pLast - 1], pts[pLast], pts[0], smoothness));\n  for (i = 1; i <= pLast; i++) {\n    path += 'C' + tangents[i - 1][1] + ' ' + tangents[i][0] + ' ' + pts[i];\n  }\n  path += 'C' + tangents[pLast][1] + ' ' + tangents[0][0] + ' ' + pts[0] + 'Z';\n  return path;\n};\nvar lastDrawnX, lastDrawnY;\nfunction roundEnd(pt, isY, isLastPoint) {\n  if (isLastPoint) pt = applyBackoff(pt);\n  return isY ? roundY(pt[1]) : roundX(pt[0]);\n}\nfunction roundX(p) {\n  var v = d3.round(p, 2);\n  lastDrawnX = v;\n  return v;\n}\nfunction roundY(p) {\n  var v = d3.round(p, 2);\n  lastDrawnY = v;\n  return v;\n}\nfunction makeTangent(prevpt, thispt, nextpt, smoothness) {\n  var d1x = prevpt[0] - thispt[0];\n  var d1y = prevpt[1] - thispt[1];\n  var d2x = nextpt[0] - thispt[0];\n  var d2y = nextpt[1] - thispt[1];\n  var d1a = Math.pow(d1x * d1x + d1y * d1y, CatmullRomExp / 2);\n  var d2a = Math.pow(d2x * d2x + d2y * d2y, CatmullRomExp / 2);\n  var numx = (d2a * d2a * d1x - d1a * d1a * d2x) * smoothness;\n  var numy = (d2a * d2a * d1y - d1a * d1a * d2y) * smoothness;\n  var denom1 = 3 * d2a * (d1a + d2a);\n  var denom2 = 3 * d1a * (d1a + d2a);\n  return [[roundX(thispt[0] + (denom1 && numx / denom1)), roundY(thispt[1] + (denom1 && numy / denom1))], [roundX(thispt[0] - (denom2 && numx / denom2)), roundY(thispt[1] - (denom2 && numy / denom2))]];\n}\n\n// step paths - returns a generator function for paths\n// with the given step shape\nvar STEPPATH = {\n  hv: function (p0, p1, isLastPoint) {\n    return 'H' + roundX(p1[0]) + 'V' + roundEnd(p1, 1, isLastPoint);\n  },\n  vh: function (p0, p1, isLastPoint) {\n    return 'V' + roundY(p1[1]) + 'H' + roundEnd(p1, 0, isLastPoint);\n  },\n  hvh: function (p0, p1, isLastPoint) {\n    return 'H' + roundX((p0[0] + p1[0]) / 2) + 'V' + roundY(p1[1]) + 'H' + roundEnd(p1, 0, isLastPoint);\n  },\n  vhv: function (p0, p1, isLastPoint) {\n    return 'V' + roundY((p0[1] + p1[1]) / 2) + 'H' + roundX(p1[0]) + 'V' + roundEnd(p1, 1, isLastPoint);\n  }\n};\nvar STEPLINEAR = function (p0, p1, isLastPoint) {\n  return 'L' + roundEnd(p1, 0, isLastPoint) + ',' + roundEnd(p1, 1, isLastPoint);\n};\ndrawing.steps = function (shape) {\n  var onestep = STEPPATH[shape] || STEPLINEAR;\n  return function (pts) {\n    var path = 'M' + roundX(pts[0][0]) + ',' + roundY(pts[0][1]);\n    var len = pts.length;\n    for (var i = 1; i < len; i++) {\n      path += onestep(pts[i - 1], pts[i], i === len - 1);\n    }\n    return path;\n  };\n};\nfunction applyBackoff(pt, start) {\n  var backoff = pt.backoff;\n  var trace = pt.trace;\n  var d = pt.d;\n  var i = pt.i;\n  if (backoff && trace && trace.marker && trace.marker.angle % 360 === 0 && trace.line && trace.line.shape !== 'spline') {\n    var arrayBackoff = Lib.isArrayOrTypedArray(backoff);\n    var end = pt;\n    var x1 = start ? start[0] : lastDrawnX || 0;\n    var y1 = start ? start[1] : lastDrawnY || 0;\n    var x2 = end[0];\n    var y2 = end[1];\n    var dx = x2 - x1;\n    var dy = y2 - y1;\n    var t = Math.atan2(dy, dx);\n    var b = arrayBackoff ? backoff[i] : backoff;\n    if (b === 'auto') {\n      var endI = end.i;\n      if (trace.type === 'scatter') endI--; // Why we need this hack?\n\n      var endMarker = end.marker;\n      var endMarkerSymbol = endMarker.symbol;\n      if (Lib.isArrayOrTypedArray(endMarkerSymbol)) endMarkerSymbol = endMarkerSymbol[endI];\n      var endMarkerSize = endMarker.size;\n      if (Lib.isArrayOrTypedArray(endMarkerSize)) endMarkerSize = endMarkerSize[endI];\n      b = endMarker ? drawing.symbolBackOffs[drawing.symbolNumber(endMarkerSymbol)] * endMarkerSize : 0;\n      b += drawing.getMarkerStandoff(d[endI], trace) || 0;\n    }\n    var x = x2 - b * Math.cos(t);\n    var y = y2 - b * Math.sin(t);\n    if ((x <= x2 && x >= x1 || x >= x2 && x <= x1) && (y <= y2 && y >= y1 || y >= y2 && y <= y1)) {\n      pt = [x, y];\n    }\n  }\n  return pt;\n}\ndrawing.applyBackoff = applyBackoff;\n\n// off-screen svg render testing element, shared by the whole page\n// uses the id 'js-plotly-tester' and stores it in drawing.tester\ndrawing.makeTester = function () {\n  var tester = Lib.ensureSingleById(d3.select('body'), 'svg', 'js-plotly-tester', function (s) {\n    s.attr(xmlnsNamespaces.svgAttrs).style({\n      position: 'absolute',\n      left: '-10000px',\n      top: '-10000px',\n      width: '9000px',\n      height: '9000px',\n      'z-index': '1'\n    });\n  });\n\n  // browsers differ on how they describe the bounding rect of\n  // the svg if its contents spill over... so make a 1x1px\n  // reference point we can measure off of.\n  var testref = Lib.ensureSingle(tester, 'path', 'js-reference-point', function (s) {\n    s.attr('d', 'M0,0H1V1H0Z').style({\n      'stroke-width': 0,\n      fill: 'black'\n    });\n  });\n  drawing.tester = tester;\n  drawing.testref = testref;\n};\n\n/*\n * use our offscreen tester to get a clientRect for an element,\n * in a reference frame where it isn't translated (or transformed) and\n * its anchor point is at (0,0)\n * always returns a copy of the bbox, so the caller can modify it safely\n *\n * @param {SVGElement} node: the element to measure. If possible this should be\n *   a <text> or MathJax <g> element that's already passed through\n *   `convertToTspans` because in that case we can cache the results, but it's\n *   possible to pass in any svg element.\n *\n * @param {boolean} inTester: is this element already in `drawing.tester`?\n *   If you are measuring a dummy element, rather than one you really intend\n *   to use on the plot, making it in `drawing.tester` in the first place\n *   allows us to test faster because it cuts out cloning and appending it.\n *\n * @param {string} hash: for internal use only, if we already know the cache key\n *   for this element beforehand.\n *\n * @return {object}: a plain object containing the width, height, left, right,\n *   top, and bottom of `node`\n */\ndrawing.savedBBoxes = {};\nvar savedBBoxesCount = 0;\nvar maxSavedBBoxes = 10000;\ndrawing.bBox = function (node, inTester, hash) {\n  /*\n   * Cache elements we've already measured so we don't have to\n   * remeasure the same thing many times\n   * We have a few bBox callers though who pass a node larger than\n   * a <text> or a MathJax <g>, such as an axis group containing many labels.\n   * These will not generate a hash (unless we figure out an appropriate\n   * hash key for them) and thus we will not hash them.\n   */\n  if (!hash) hash = nodeHash(node);\n  var out;\n  if (hash) {\n    out = drawing.savedBBoxes[hash];\n    if (out) return Lib.extendFlat({}, out);\n  } else if (node.childNodes.length === 1) {\n    /*\n     * If we have only one child element, which is itself hashable, make\n     * a new hash from this element plus its x,y,transform\n     * These bounding boxes *include* x,y,transform - mostly for use by\n     * callers trying to avoid overlaps (ie titles)\n     */\n    var innerNode = node.childNodes[0];\n    hash = nodeHash(innerNode);\n    if (hash) {\n      var x = +innerNode.getAttribute('x') || 0;\n      var y = +innerNode.getAttribute('y') || 0;\n      var transform = innerNode.getAttribute('transform');\n      if (!transform) {\n        // in this case, just varying x and y, don't bother caching\n        // the final bBox because the alteration is quick.\n        var innerBB = drawing.bBox(innerNode, false, hash);\n        if (x) {\n          innerBB.left += x;\n          innerBB.right += x;\n        }\n        if (y) {\n          innerBB.top += y;\n          innerBB.bottom += y;\n        }\n        return innerBB;\n      }\n      /*\n       * else we have a transform - rather than make a complicated\n       * (and error-prone and probably slow) transform parser/calculator,\n       * just continue on calculating the boundingClientRect of the group\n       * and use the new composite hash to cache it.\n       * That said, `innerNode.transform.baseVal` is an array of\n       * `SVGTransform` objects, that *do* seem to have a nice matrix\n       * multiplication interface that we could use to avoid making\n       * another getBoundingClientRect call...\n       */\n      hash += '~' + x + '~' + y + '~' + transform;\n      out = drawing.savedBBoxes[hash];\n      if (out) return Lib.extendFlat({}, out);\n    }\n  }\n  var testNode, tester;\n  if (inTester) {\n    testNode = node;\n  } else {\n    tester = drawing.tester.node();\n\n    // copy the node to test into the tester\n    testNode = node.cloneNode(true);\n    tester.appendChild(testNode);\n  }\n\n  // standardize its position (and newline tspans if any)\n  d3.select(testNode).attr('transform', null).call(svgTextUtils.positionText, 0, 0);\n  var testRect = testNode.getBoundingClientRect();\n  var refRect = drawing.testref.node().getBoundingClientRect();\n  if (!inTester) tester.removeChild(testNode);\n  var bb = {\n    height: testRect.height,\n    width: testRect.width,\n    left: testRect.left - refRect.left,\n    top: testRect.top - refRect.top,\n    right: testRect.right - refRect.left,\n    bottom: testRect.bottom - refRect.top\n  };\n\n  // make sure we don't have too many saved boxes,\n  // or a long session could overload on memory\n  // by saving boxes for long-gone elements\n  if (savedBBoxesCount >= maxSavedBBoxes) {\n    drawing.savedBBoxes = {};\n    savedBBoxesCount = 0;\n  }\n\n  // cache this bbox\n  if (hash) drawing.savedBBoxes[hash] = bb;\n  savedBBoxesCount++;\n  return Lib.extendFlat({}, bb);\n};\n\n// capture everything about a node (at least in our usage) that\n// impacts its bounding box, given that bBox clears x, y, and transform\nfunction nodeHash(node) {\n  var inputText = node.getAttribute('data-unformatted');\n  if (inputText === null) return;\n  return inputText + node.getAttribute('data-math') + node.getAttribute('text-anchor') + node.getAttribute('style');\n}\n\n/**\n * Set clipPath URL in a way that work for all situations.\n *\n * In details, graphs on pages with <base> HTML tags need to prepend\n * the clip path ids with the page's base url EXCEPT during toImage exports.\n *\n * @param {d3 selection} s : node to add clip-path attribute\n * @param {string} localId : local clip-path (w/o base url) id\n * @param {DOM element || object} gd\n * - context._baseUrl {string}\n * - context._exportedPlot {boolean}\n */\ndrawing.setClipUrl = function (s, localId, gd) {\n  s.attr('clip-path', getFullUrl(localId, gd));\n};\nfunction getFullUrl(localId, gd) {\n  if (!localId) return null;\n  var context = gd._context;\n  var baseUrl = context._exportedPlot ? '' : context._baseUrl || '';\n  return baseUrl ? 'url(\\'' + baseUrl + '#' + localId + '\\')' : 'url(#' + localId + ')';\n}\ndrawing.getTranslate = function (element) {\n  // Note the separator [^\\d] between x and y in this regex\n  // We generally use ',' but IE will convert it to ' '\n  var re = /.*\\btranslate\\((-?\\d*\\.?\\d*)[^-\\d]*(-?\\d*\\.?\\d*)[^\\d].*/;\n  var getter = element.attr ? 'attr' : 'getAttribute';\n  var transform = element[getter]('transform') || '';\n  var translate = transform.replace(re, function (match, p1, p2) {\n    return [p1, p2].join(' ');\n  }).split(' ');\n  return {\n    x: +translate[0] || 0,\n    y: +translate[1] || 0\n  };\n};\ndrawing.setTranslate = function (element, x, y) {\n  var re = /(\\btranslate\\(.*?\\);?)/;\n  var getter = element.attr ? 'attr' : 'getAttribute';\n  var setter = element.attr ? 'attr' : 'setAttribute';\n  var transform = element[getter]('transform') || '';\n  x = x || 0;\n  y = y || 0;\n  transform = transform.replace(re, '').trim();\n  transform += strTranslate(x, y);\n  transform = transform.trim();\n  element[setter]('transform', transform);\n  return transform;\n};\ndrawing.getScale = function (element) {\n  var re = /.*\\bscale\\((\\d*\\.?\\d*)[^\\d]*(\\d*\\.?\\d*)[^\\d].*/;\n  var getter = element.attr ? 'attr' : 'getAttribute';\n  var transform = element[getter]('transform') || '';\n  var translate = transform.replace(re, function (match, p1, p2) {\n    return [p1, p2].join(' ');\n  }).split(' ');\n  return {\n    x: +translate[0] || 1,\n    y: +translate[1] || 1\n  };\n};\ndrawing.setScale = function (element, x, y) {\n  var re = /(\\bscale\\(.*?\\);?)/;\n  var getter = element.attr ? 'attr' : 'getAttribute';\n  var setter = element.attr ? 'attr' : 'setAttribute';\n  var transform = element[getter]('transform') || '';\n  x = x || 1;\n  y = y || 1;\n  transform = transform.replace(re, '').trim();\n  transform += 'scale(' + x + ',' + y + ')';\n  transform = transform.trim();\n  element[setter]('transform', transform);\n  return transform;\n};\nvar SCALE_RE = /\\s*sc.*/;\ndrawing.setPointGroupScale = function (selection, xScale, yScale) {\n  xScale = xScale || 1;\n  yScale = yScale || 1;\n  if (!selection) return;\n\n  // The same scale transform for every point:\n  var scale = xScale === 1 && yScale === 1 ? '' : 'scale(' + xScale + ',' + yScale + ')';\n  selection.each(function () {\n    var t = (this.getAttribute('transform') || '').replace(SCALE_RE, '');\n    t += scale;\n    t = t.trim();\n    this.setAttribute('transform', t);\n  });\n};\nvar TEXT_POINT_LAST_TRANSLATION_RE = /translate\\([^)]*\\)\\s*$/;\ndrawing.setTextPointsScale = function (selection, xScale, yScale) {\n  if (!selection) return;\n  selection.each(function () {\n    var transforms;\n    var el = d3.select(this);\n    var text = el.select('text');\n    if (!text.node()) return;\n    var x = parseFloat(text.attr('x') || 0);\n    var y = parseFloat(text.attr('y') || 0);\n    var existingTransform = (el.attr('transform') || '').match(TEXT_POINT_LAST_TRANSLATION_RE);\n    if (xScale === 1 && yScale === 1) {\n      transforms = [];\n    } else {\n      transforms = [strTranslate(x, y), 'scale(' + xScale + ',' + yScale + ')', strTranslate(-x, -y)];\n    }\n    if (existingTransform) {\n      transforms.push(existingTransform);\n    }\n    el.attr('transform', transforms.join(''));\n  });\n};\nfunction getMarkerStandoff(d, trace) {\n  var standoff;\n  if (d) standoff = d.mf;\n  if (standoff === undefined) {\n    standoff = trace.marker ? trace.marker.standoff || 0 : 0;\n  }\n  if (!trace._geo && !trace._xA) {\n    // case of legends\n    return -standoff;\n  }\n  return standoff;\n}\ndrawing.getMarkerStandoff = getMarkerStandoff;\nvar atan2 = Math.atan2;\nvar cos = Math.cos;\nvar sin = Math.sin;\nfunction rotate(t, xy) {\n  var x = xy[0];\n  var y = xy[1];\n  return [x * cos(t) - y * sin(t), x * sin(t) + y * cos(t)];\n}\nvar previousLon;\nvar previousLat;\nvar previousX;\nvar previousY;\nvar previousI;\nvar previousTraceUid;\nfunction getMarkerAngle(d, trace) {\n  var angle = d.ma;\n  if (angle === undefined) {\n    angle = trace.marker.angle || 0;\n  }\n  var x, y;\n  var ref = trace.marker.angleref;\n  if (ref === 'previous' || ref === 'north') {\n    if (trace._geo) {\n      var p = trace._geo.project(d.lonlat);\n      x = p[0];\n      y = p[1];\n    } else {\n      var xa = trace._xA;\n      var ya = trace._yA;\n      if (xa && ya) {\n        x = xa.c2p(d.x);\n        y = ya.c2p(d.y);\n      } else {\n        // case of legends\n        return 90;\n      }\n    }\n    if (trace._geo) {\n      var lon = d.lonlat[0];\n      var lat = d.lonlat[1];\n      var north = trace._geo.project([lon, lat + 1e-5 // epsilon\n      ]);\n\n      var east = trace._geo.project([lon + 1e-5,\n      // epsilon\n      lat]);\n      var u = atan2(east[1] - y, east[0] - x);\n      var v = atan2(north[1] - y, north[0] - x);\n      var t;\n      if (ref === 'north') {\n        t = angle / 180 * Math.PI;\n        // To use counter-clockwise angles i.e.\n        // East: 90, West: -90\n        // to facilitate wind visualisations\n        // in future we should use t = -t here.\n      } else if (ref === 'previous') {\n        var lon1 = lon / 180 * Math.PI;\n        var lat1 = lat / 180 * Math.PI;\n        var lon2 = previousLon / 180 * Math.PI;\n        var lat2 = previousLat / 180 * Math.PI;\n        var dLon = lon2 - lon1;\n        var deltaY = cos(lat2) * sin(dLon);\n        var deltaX = sin(lat2) * cos(lat1) - cos(lat2) * sin(lat1) * cos(dLon);\n        t = -atan2(deltaY, deltaX) - Math.PI;\n        previousLon = lon;\n        previousLat = lat;\n      }\n      var A = rotate(u, [cos(t), 0]);\n      var B = rotate(v, [sin(t), 0]);\n      angle = atan2(A[1] + B[1], A[0] + B[0]) / Math.PI * 180;\n      if (ref === 'previous' && !(previousTraceUid === trace.uid && d.i === previousI + 1)) {\n        angle = null;\n      }\n    }\n    if (ref === 'previous' && !trace._geo) {\n      if (previousTraceUid === trace.uid && d.i === previousI + 1 && isNumeric(x) && isNumeric(y)) {\n        var dX = x - previousX;\n        var dY = y - previousY;\n        var shape = trace.line ? trace.line.shape || '' : '';\n        var lastShapeChar = shape.slice(shape.length - 1);\n        if (lastShapeChar === 'h') dY = 0;\n        if (lastShapeChar === 'v') dX = 0;\n        angle += atan2(dY, dX) / Math.PI * 180 + 90;\n      } else {\n        angle = null;\n      }\n    }\n  }\n  previousX = x;\n  previousY = y;\n  previousI = d.i;\n  previousTraceUid = trace.uid;\n  return angle;\n}\ndrawing.getMarkerAngle = getMarkerAngle;\n\n/***/ }),\n\n/***/ 90998:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_217185__) {\n\n\"use strict\";\n\n\nvar parseSvgPath = __nested_webpack_require_217185__(95616);\nvar round = (__nested_webpack_require_217185__(39898).round);\n\n/** Marker symbol definitions\n * users can specify markers either by number or name\n * add 100 (or '-open') and you get an open marker\n *  open markers have no fill and use line color as the stroke color\n * add 200 (or '-dot') and you get a dot in the middle\n * add both and you get both\n */\n\nvar emptyPath = 'M0,0Z';\nvar sqrt2 = Math.sqrt(2);\nvar sqrt3 = Math.sqrt(3);\nvar PI = Math.PI;\nvar cos = Math.cos;\nvar sin = Math.sin;\nmodule.exports = {\n  circle: {\n    n: 0,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rs = round(r, 2);\n      var circle = 'M' + rs + ',0A' + rs + ',' + rs + ' 0 1,1 0,-' + rs + 'A' + rs + ',' + rs + ' 0 0,1 ' + rs + ',0Z';\n      return standoff ? align(angle, standoff, circle) : circle;\n    }\n  },\n  square: {\n    n: 1,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rs = round(r, 2);\n      return align(angle, standoff, 'M' + rs + ',' + rs + 'H-' + rs + 'V-' + rs + 'H' + rs + 'Z');\n    }\n  },\n  diamond: {\n    n: 2,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rd = round(r * 1.3, 2);\n      return align(angle, standoff, 'M' + rd + ',0L0,' + rd + 'L-' + rd + ',0L0,-' + rd + 'Z');\n    }\n  },\n  cross: {\n    n: 3,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rc = round(r * 0.4, 2);\n      var rc2 = round(r * 1.2, 2);\n      return align(angle, standoff, 'M' + rc2 + ',' + rc + 'H' + rc + 'V' + rc2 + 'H-' + rc + 'V' + rc + 'H-' + rc2 + 'V-' + rc + 'H-' + rc + 'V-' + rc2 + 'H' + rc + 'V-' + rc + 'H' + rc2 + 'Z');\n    }\n  },\n  x: {\n    n: 4,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rx = round(r * 0.8 / sqrt2, 2);\n      var ne = 'l' + rx + ',' + rx;\n      var se = 'l' + rx + ',-' + rx;\n      var sw = 'l-' + rx + ',-' + rx;\n      var nw = 'l-' + rx + ',' + rx;\n      return align(angle, standoff, 'M0,' + rx + ne + se + sw + se + sw + nw + sw + nw + ne + nw + ne + 'Z');\n    }\n  },\n  'triangle-up': {\n    n: 5,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rt = round(r * 2 / sqrt3, 2);\n      var r2 = round(r / 2, 2);\n      var rs = round(r, 2);\n      return align(angle, standoff, 'M-' + rt + ',' + r2 + 'H' + rt + 'L0,-' + rs + 'Z');\n    }\n  },\n  'triangle-down': {\n    n: 6,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rt = round(r * 2 / sqrt3, 2);\n      var r2 = round(r / 2, 2);\n      var rs = round(r, 2);\n      return align(angle, standoff, 'M-' + rt + ',-' + r2 + 'H' + rt + 'L0,' + rs + 'Z');\n    }\n  },\n  'triangle-left': {\n    n: 7,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rt = round(r * 2 / sqrt3, 2);\n      var r2 = round(r / 2, 2);\n      var rs = round(r, 2);\n      return align(angle, standoff, 'M' + r2 + ',-' + rt + 'V' + rt + 'L-' + rs + ',0Z');\n    }\n  },\n  'triangle-right': {\n    n: 8,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rt = round(r * 2 / sqrt3, 2);\n      var r2 = round(r / 2, 2);\n      var rs = round(r, 2);\n      return align(angle, standoff, 'M-' + r2 + ',-' + rt + 'V' + rt + 'L' + rs + ',0Z');\n    }\n  },\n  'triangle-ne': {\n    n: 9,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var r1 = round(r * 0.6, 2);\n      var r2 = round(r * 1.2, 2);\n      return align(angle, standoff, 'M-' + r2 + ',-' + r1 + 'H' + r1 + 'V' + r2 + 'Z');\n    }\n  },\n  'triangle-se': {\n    n: 10,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var r1 = round(r * 0.6, 2);\n      var r2 = round(r * 1.2, 2);\n      return align(angle, standoff, 'M' + r1 + ',-' + r2 + 'V' + r1 + 'H-' + r2 + 'Z');\n    }\n  },\n  'triangle-sw': {\n    n: 11,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var r1 = round(r * 0.6, 2);\n      var r2 = round(r * 1.2, 2);\n      return align(angle, standoff, 'M' + r2 + ',' + r1 + 'H-' + r1 + 'V-' + r2 + 'Z');\n    }\n  },\n  'triangle-nw': {\n    n: 12,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var r1 = round(r * 0.6, 2);\n      var r2 = round(r * 1.2, 2);\n      return align(angle, standoff, 'M-' + r1 + ',' + r2 + 'V-' + r1 + 'H' + r2 + 'Z');\n    }\n  },\n  pentagon: {\n    n: 13,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var x1 = round(r * 0.951, 2);\n      var x2 = round(r * 0.588, 2);\n      var y0 = round(-r, 2);\n      var y1 = round(r * -0.309, 2);\n      var y2 = round(r * 0.809, 2);\n      return align(angle, standoff, 'M' + x1 + ',' + y1 + 'L' + x2 + ',' + y2 + 'H-' + x2 + 'L-' + x1 + ',' + y1 + 'L0,' + y0 + 'Z');\n    }\n  },\n  hexagon: {\n    n: 14,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var y0 = round(r, 2);\n      var y1 = round(r / 2, 2);\n      var x = round(r * sqrt3 / 2, 2);\n      return align(angle, standoff, 'M' + x + ',-' + y1 + 'V' + y1 + 'L0,' + y0 + 'L-' + x + ',' + y1 + 'V-' + y1 + 'L0,-' + y0 + 'Z');\n    }\n  },\n  hexagon2: {\n    n: 15,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var x0 = round(r, 2);\n      var x1 = round(r / 2, 2);\n      var y = round(r * sqrt3 / 2, 2);\n      return align(angle, standoff, 'M-' + x1 + ',' + y + 'H' + x1 + 'L' + x0 + ',0L' + x1 + ',-' + y + 'H-' + x1 + 'L-' + x0 + ',0Z');\n    }\n  },\n  octagon: {\n    n: 16,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var a = round(r * 0.924, 2);\n      var b = round(r * 0.383, 2);\n      return align(angle, standoff, 'M-' + b + ',-' + a + 'H' + b + 'L' + a + ',-' + b + 'V' + b + 'L' + b + ',' + a + 'H-' + b + 'L-' + a + ',' + b + 'V-' + b + 'Z');\n    }\n  },\n  star: {\n    n: 17,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rs = r * 1.4;\n      var x1 = round(rs * 0.225, 2);\n      var x2 = round(rs * 0.951, 2);\n      var x3 = round(rs * 0.363, 2);\n      var x4 = round(rs * 0.588, 2);\n      var y0 = round(-rs, 2);\n      var y1 = round(rs * -0.309, 2);\n      var y3 = round(rs * 0.118, 2);\n      var y4 = round(rs * 0.809, 2);\n      var y5 = round(rs * 0.382, 2);\n      return align(angle, standoff, 'M' + x1 + ',' + y1 + 'H' + x2 + 'L' + x3 + ',' + y3 + 'L' + x4 + ',' + y4 + 'L0,' + y5 + 'L-' + x4 + ',' + y4 + 'L-' + x3 + ',' + y3 + 'L-' + x2 + ',' + y1 + 'H-' + x1 + 'L0,' + y0 + 'Z');\n    }\n  },\n  hexagram: {\n    n: 18,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var y = round(r * 0.66, 2);\n      var x1 = round(r * 0.38, 2);\n      var x2 = round(r * 0.76, 2);\n      return align(angle, standoff, 'M-' + x2 + ',0l-' + x1 + ',-' + y + 'h' + x2 + 'l' + x1 + ',-' + y + 'l' + x1 + ',' + y + 'h' + x2 + 'l-' + x1 + ',' + y + 'l' + x1 + ',' + y + 'h-' + x2 + 'l-' + x1 + ',' + y + 'l-' + x1 + ',-' + y + 'h-' + x2 + 'Z');\n    }\n  },\n  'star-triangle-up': {\n    n: 19,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var x = round(r * sqrt3 * 0.8, 2);\n      var y1 = round(r * 0.8, 2);\n      var y2 = round(r * 1.6, 2);\n      var rc = round(r * 4, 2);\n      var aPart = 'A ' + rc + ',' + rc + ' 0 0 1 ';\n      return align(angle, standoff, 'M-' + x + ',' + y1 + aPart + x + ',' + y1 + aPart + '0,-' + y2 + aPart + '-' + x + ',' + y1 + 'Z');\n    }\n  },\n  'star-triangle-down': {\n    n: 20,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var x = round(r * sqrt3 * 0.8, 2);\n      var y1 = round(r * 0.8, 2);\n      var y2 = round(r * 1.6, 2);\n      var rc = round(r * 4, 2);\n      var aPart = 'A ' + rc + ',' + rc + ' 0 0 1 ';\n      return align(angle, standoff, 'M' + x + ',-' + y1 + aPart + '-' + x + ',-' + y1 + aPart + '0,' + y2 + aPart + x + ',-' + y1 + 'Z');\n    }\n  },\n  'star-square': {\n    n: 21,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rp = round(r * 1.1, 2);\n      var rc = round(r * 2, 2);\n      var aPart = 'A ' + rc + ',' + rc + ' 0 0 1 ';\n      return align(angle, standoff, 'M-' + rp + ',-' + rp + aPart + '-' + rp + ',' + rp + aPart + rp + ',' + rp + aPart + rp + ',-' + rp + aPart + '-' + rp + ',-' + rp + 'Z');\n    }\n  },\n  'star-diamond': {\n    n: 22,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rp = round(r * 1.4, 2);\n      var rc = round(r * 1.9, 2);\n      var aPart = 'A ' + rc + ',' + rc + ' 0 0 1 ';\n      return align(angle, standoff, 'M-' + rp + ',0' + aPart + '0,' + rp + aPart + rp + ',0' + aPart + '0,-' + rp + aPart + '-' + rp + ',0' + 'Z');\n    }\n  },\n  'diamond-tall': {\n    n: 23,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var x = round(r * 0.7, 2);\n      var y = round(r * 1.4, 2);\n      return align(angle, standoff, 'M0,' + y + 'L' + x + ',0L0,-' + y + 'L-' + x + ',0Z');\n    }\n  },\n  'diamond-wide': {\n    n: 24,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var x = round(r * 1.4, 2);\n      var y = round(r * 0.7, 2);\n      return align(angle, standoff, 'M0,' + y + 'L' + x + ',0L0,-' + y + 'L-' + x + ',0Z');\n    }\n  },\n  hourglass: {\n    n: 25,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rs = round(r, 2);\n      return align(angle, standoff, 'M' + rs + ',' + rs + 'H-' + rs + 'L' + rs + ',-' + rs + 'H-' + rs + 'Z');\n    },\n    noDot: true\n  },\n  bowtie: {\n    n: 26,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rs = round(r, 2);\n      return align(angle, standoff, 'M' + rs + ',' + rs + 'V-' + rs + 'L-' + rs + ',' + rs + 'V-' + rs + 'Z');\n    },\n    noDot: true\n  },\n  'circle-cross': {\n    n: 27,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rs = round(r, 2);\n      return align(angle, standoff, 'M0,' + rs + 'V-' + rs + 'M' + rs + ',0H-' + rs + 'M' + rs + ',0A' + rs + ',' + rs + ' 0 1,1 0,-' + rs + 'A' + rs + ',' + rs + ' 0 0,1 ' + rs + ',0Z');\n    },\n    needLine: true,\n    noDot: true\n  },\n  'circle-x': {\n    n: 28,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rs = round(r, 2);\n      var rc = round(r / sqrt2, 2);\n      return align(angle, standoff, 'M' + rc + ',' + rc + 'L-' + rc + ',-' + rc + 'M' + rc + ',-' + rc + 'L-' + rc + ',' + rc + 'M' + rs + ',0A' + rs + ',' + rs + ' 0 1,1 0,-' + rs + 'A' + rs + ',' + rs + ' 0 0,1 ' + rs + ',0Z');\n    },\n    needLine: true,\n    noDot: true\n  },\n  'square-cross': {\n    n: 29,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rs = round(r, 2);\n      return align(angle, standoff, 'M0,' + rs + 'V-' + rs + 'M' + rs + ',0H-' + rs + 'M' + rs + ',' + rs + 'H-' + rs + 'V-' + rs + 'H' + rs + 'Z');\n    },\n    needLine: true,\n    noDot: true\n  },\n  'square-x': {\n    n: 30,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rs = round(r, 2);\n      return align(angle, standoff, 'M' + rs + ',' + rs + 'L-' + rs + ',-' + rs + 'M' + rs + ',-' + rs + 'L-' + rs + ',' + rs + 'M' + rs + ',' + rs + 'H-' + rs + 'V-' + rs + 'H' + rs + 'Z');\n    },\n    needLine: true,\n    noDot: true\n  },\n  'diamond-cross': {\n    n: 31,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rd = round(r * 1.3, 2);\n      return align(angle, standoff, 'M' + rd + ',0L0,' + rd + 'L-' + rd + ',0L0,-' + rd + 'Z' + 'M0,-' + rd + 'V' + rd + 'M-' + rd + ',0H' + rd);\n    },\n    needLine: true,\n    noDot: true\n  },\n  'diamond-x': {\n    n: 32,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rd = round(r * 1.3, 2);\n      var r2 = round(r * 0.65, 2);\n      return align(angle, standoff, 'M' + rd + ',0L0,' + rd + 'L-' + rd + ',0L0,-' + rd + 'Z' + 'M-' + r2 + ',-' + r2 + 'L' + r2 + ',' + r2 + 'M-' + r2 + ',' + r2 + 'L' + r2 + ',-' + r2);\n    },\n    needLine: true,\n    noDot: true\n  },\n  'cross-thin': {\n    n: 33,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rc = round(r * 1.4, 2);\n      return align(angle, standoff, 'M0,' + rc + 'V-' + rc + 'M' + rc + ',0H-' + rc);\n    },\n    needLine: true,\n    noDot: true,\n    noFill: true\n  },\n  'x-thin': {\n    n: 34,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rx = round(r, 2);\n      return align(angle, standoff, 'M' + rx + ',' + rx + 'L-' + rx + ',-' + rx + 'M' + rx + ',-' + rx + 'L-' + rx + ',' + rx);\n    },\n    needLine: true,\n    noDot: true,\n    noFill: true\n  },\n  asterisk: {\n    n: 35,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rc = round(r * 1.2, 2);\n      var rs = round(r * 0.85, 2);\n      return align(angle, standoff, 'M0,' + rc + 'V-' + rc + 'M' + rc + ',0H-' + rc + 'M' + rs + ',' + rs + 'L-' + rs + ',-' + rs + 'M' + rs + ',-' + rs + 'L-' + rs + ',' + rs);\n    },\n    needLine: true,\n    noDot: true,\n    noFill: true\n  },\n  hash: {\n    n: 36,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var r1 = round(r / 2, 2);\n      var r2 = round(r, 2);\n      return align(angle, standoff, 'M' + r1 + ',' + r2 + 'V-' + r2 + 'M' + (r1 - r2) + ',-' + r2 + 'V' + r2 + 'M' + r2 + ',' + r1 + 'H-' + r2 + 'M-' + r2 + ',' + (r1 - r2) + 'H' + r2);\n    },\n    needLine: true,\n    noFill: true\n  },\n  'y-up': {\n    n: 37,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var x = round(r * 1.2, 2);\n      var y0 = round(r * 1.6, 2);\n      var y1 = round(r * 0.8, 2);\n      return align(angle, standoff, 'M-' + x + ',' + y1 + 'L0,0M' + x + ',' + y1 + 'L0,0M0,-' + y0 + 'L0,0');\n    },\n    needLine: true,\n    noDot: true,\n    noFill: true\n  },\n  'y-down': {\n    n: 38,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var x = round(r * 1.2, 2);\n      var y0 = round(r * 1.6, 2);\n      var y1 = round(r * 0.8, 2);\n      return align(angle, standoff, 'M-' + x + ',-' + y1 + 'L0,0M' + x + ',-' + y1 + 'L0,0M0,' + y0 + 'L0,0');\n    },\n    needLine: true,\n    noDot: true,\n    noFill: true\n  },\n  'y-left': {\n    n: 39,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var y = round(r * 1.2, 2);\n      var x0 = round(r * 1.6, 2);\n      var x1 = round(r * 0.8, 2);\n      return align(angle, standoff, 'M' + x1 + ',' + y + 'L0,0M' + x1 + ',-' + y + 'L0,0M-' + x0 + ',0L0,0');\n    },\n    needLine: true,\n    noDot: true,\n    noFill: true\n  },\n  'y-right': {\n    n: 40,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var y = round(r * 1.2, 2);\n      var x0 = round(r * 1.6, 2);\n      var x1 = round(r * 0.8, 2);\n      return align(angle, standoff, 'M-' + x1 + ',' + y + 'L0,0M-' + x1 + ',-' + y + 'L0,0M' + x0 + ',0L0,0');\n    },\n    needLine: true,\n    noDot: true,\n    noFill: true\n  },\n  'line-ew': {\n    n: 41,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rc = round(r * 1.4, 2);\n      return align(angle, standoff, 'M' + rc + ',0H-' + rc);\n    },\n    needLine: true,\n    noDot: true,\n    noFill: true\n  },\n  'line-ns': {\n    n: 42,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rc = round(r * 1.4, 2);\n      return align(angle, standoff, 'M0,' + rc + 'V-' + rc);\n    },\n    needLine: true,\n    noDot: true,\n    noFill: true\n  },\n  'line-ne': {\n    n: 43,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rx = round(r, 2);\n      return align(angle, standoff, 'M' + rx + ',-' + rx + 'L-' + rx + ',' + rx);\n    },\n    needLine: true,\n    noDot: true,\n    noFill: true\n  },\n  'line-nw': {\n    n: 44,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rx = round(r, 2);\n      return align(angle, standoff, 'M' + rx + ',' + rx + 'L-' + rx + ',-' + rx);\n    },\n    needLine: true,\n    noDot: true,\n    noFill: true\n  },\n  'arrow-up': {\n    n: 45,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rx = round(r, 2);\n      var ry = round(r * 2, 2);\n      return align(angle, standoff, 'M0,0L-' + rx + ',' + ry + 'H' + rx + 'Z');\n    },\n    backoff: 1,\n    noDot: true\n  },\n  'arrow-down': {\n    n: 46,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rx = round(r, 2);\n      var ry = round(r * 2, 2);\n      return align(angle, standoff, 'M0,0L-' + rx + ',-' + ry + 'H' + rx + 'Z');\n    },\n    noDot: true\n  },\n  'arrow-left': {\n    n: 47,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rx = round(r * 2, 2);\n      var ry = round(r, 2);\n      return align(angle, standoff, 'M0,0L' + rx + ',-' + ry + 'V' + ry + 'Z');\n    },\n    noDot: true\n  },\n  'arrow-right': {\n    n: 48,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rx = round(r * 2, 2);\n      var ry = round(r, 2);\n      return align(angle, standoff, 'M0,0L-' + rx + ',-' + ry + 'V' + ry + 'Z');\n    },\n    noDot: true\n  },\n  'arrow-bar-up': {\n    n: 49,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rx = round(r, 2);\n      var ry = round(r * 2, 2);\n      return align(angle, standoff, 'M-' + rx + ',0H' + rx + 'M0,0L-' + rx + ',' + ry + 'H' + rx + 'Z');\n    },\n    backoff: 1,\n    needLine: true,\n    noDot: true\n  },\n  'arrow-bar-down': {\n    n: 50,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rx = round(r, 2);\n      var ry = round(r * 2, 2);\n      return align(angle, standoff, 'M-' + rx + ',0H' + rx + 'M0,0L-' + rx + ',-' + ry + 'H' + rx + 'Z');\n    },\n    needLine: true,\n    noDot: true\n  },\n  'arrow-bar-left': {\n    n: 51,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rx = round(r * 2, 2);\n      var ry = round(r, 2);\n      return align(angle, standoff, 'M0,-' + ry + 'V' + ry + 'M0,0L' + rx + ',-' + ry + 'V' + ry + 'Z');\n    },\n    needLine: true,\n    noDot: true\n  },\n  'arrow-bar-right': {\n    n: 52,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var rx = round(r * 2, 2);\n      var ry = round(r, 2);\n      return align(angle, standoff, 'M0,-' + ry + 'V' + ry + 'M0,0L-' + rx + ',-' + ry + 'V' + ry + 'Z');\n    },\n    needLine: true,\n    noDot: true\n  },\n  'arrow': {\n    n: 53,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var headAngle = PI / 2.5; // 36 degrees - golden ratio\n      var x = 2 * r * cos(headAngle);\n      var y = 2 * r * sin(headAngle);\n      return align(angle, standoff, 'M0,0' + 'L' + -x + ',' + y + 'L' + x + ',' + y + 'Z');\n    },\n    backoff: 0.9,\n    noDot: true\n  },\n  'arrow-wide': {\n    n: 54,\n    f: function (r, angle, standoff) {\n      if (skipAngle(angle)) return emptyPath;\n      var headAngle = PI / 4; // 90 degrees\n      var x = 2 * r * cos(headAngle);\n      var y = 2 * r * sin(headAngle);\n      return align(angle, standoff, 'M0,0' + 'L' + -x + ',' + y + 'A ' + 2 * r + ',' + 2 * r + ' 0 0 1 ' + x + ',' + y + 'Z');\n    },\n    backoff: 0.4,\n    noDot: true\n  }\n};\nfunction skipAngle(angle) {\n  return angle === null;\n}\nvar lastPathIn, lastPathOut;\nvar lastAngle, lastStandoff;\nfunction align(angle, standoff, path) {\n  if ((!angle || angle % 360 === 0) && !standoff) return path;\n  if (lastAngle === angle && lastStandoff === standoff && lastPathIn === path) return lastPathOut;\n  lastAngle = angle;\n  lastStandoff = standoff;\n  lastPathIn = path;\n  function rotate(t, xy) {\n    var cosT = cos(t);\n    var sinT = sin(t);\n    var x = xy[0];\n    var y = xy[1] + (standoff || 0);\n    return [x * cosT - y * sinT, x * sinT + y * cosT];\n  }\n  var t = angle / 180 * PI;\n  var x = 0;\n  var y = 0;\n  var cmd = parseSvgPath(path);\n  var str = '';\n  for (var i = 0; i < cmd.length; i++) {\n    var cmdI = cmd[i];\n    var op = cmdI[0];\n    var x0 = x;\n    var y0 = y;\n    if (op === 'M' || op === 'L') {\n      x = +cmdI[1];\n      y = +cmdI[2];\n    } else if (op === 'm' || op === 'l') {\n      x += +cmdI[1];\n      y += +cmdI[2];\n    } else if (op === 'H') {\n      x = +cmdI[1];\n    } else if (op === 'h') {\n      x += +cmdI[1];\n    } else if (op === 'V') {\n      y = +cmdI[1];\n    } else if (op === 'v') {\n      y += +cmdI[1];\n    } else if (op === 'A') {\n      x = +cmdI[1];\n      y = +cmdI[2];\n      var E = rotate(t, [+cmdI[6], +cmdI[7]]);\n      cmdI[6] = E[0];\n      cmdI[7] = E[1];\n      cmdI[3] = +cmdI[3] + angle;\n    }\n\n    // change from H, V, h, v to L or l\n    if (op === 'H' || op === 'V') op = 'L';\n    if (op === 'h' || op === 'v') op = 'l';\n    if (op === 'm' || op === 'l') {\n      x -= x0;\n      y -= y0;\n    }\n    var B = rotate(t, [x, y]);\n    if (op === 'H' || op === 'V') op = 'L';\n    if (op === 'M' || op === 'L' || op === 'm' || op === 'l') {\n      cmdI[1] = B[0];\n      cmdI[2] = B[1];\n    }\n    cmdI[0] = op;\n    str += cmdI[0] + cmdI.slice(1).join(',');\n  }\n  lastPathOut = str;\n  return str;\n}\n\n/***/ }),\n\n/***/ 25673:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  visible: {\n    valType: 'boolean',\n    editType: 'calc'\n  },\n  type: {\n    valType: 'enumerated',\n    values: ['percent', 'constant', 'sqrt', 'data'],\n    editType: 'calc'\n  },\n  symmetric: {\n    valType: 'boolean',\n    editType: 'calc'\n  },\n  array: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  arrayminus: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  value: {\n    valType: 'number',\n    min: 0,\n    dflt: 10,\n    editType: 'calc'\n  },\n  valueminus: {\n    valType: 'number',\n    min: 0,\n    dflt: 10,\n    editType: 'calc'\n  },\n  traceref: {\n    valType: 'integer',\n    min: 0,\n    dflt: 0,\n    editType: 'style'\n  },\n  tracerefminus: {\n    valType: 'integer',\n    min: 0,\n    dflt: 0,\n    editType: 'style'\n  },\n  copy_ystyle: {\n    valType: 'boolean',\n    editType: 'plot'\n  },\n  copy_zstyle: {\n    valType: 'boolean',\n    editType: 'style'\n  },\n  color: {\n    valType: 'color',\n    editType: 'style'\n  },\n  thickness: {\n    valType: 'number',\n    min: 0,\n    dflt: 2,\n    editType: 'style'\n  },\n  width: {\n    valType: 'number',\n    min: 0,\n    editType: 'plot'\n  },\n  editType: 'calc',\n  _deprecated: {\n    opacity: {\n      valType: 'number',\n      editType: 'style'\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 84532:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_240255__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_240255__(92770);\nvar Registry = __nested_webpack_require_240255__(73972);\nvar Axes = __nested_webpack_require_240255__(89298);\nvar Lib = __nested_webpack_require_240255__(71828);\nvar makeComputeError = __nested_webpack_require_240255__(45827);\nmodule.exports = function calc(gd) {\n  var calcdata = gd.calcdata;\n  for (var i = 0; i < calcdata.length; i++) {\n    var calcTrace = calcdata[i];\n    var trace = calcTrace[0].trace;\n    if (trace.visible === true && Registry.traceIs(trace, 'errorBarsOK')) {\n      var xa = Axes.getFromId(gd, trace.xaxis);\n      var ya = Axes.getFromId(gd, trace.yaxis);\n      calcOneAxis(calcTrace, trace, xa, 'x');\n      calcOneAxis(calcTrace, trace, ya, 'y');\n    }\n  }\n};\nfunction calcOneAxis(calcTrace, trace, axis, coord) {\n  var opts = trace['error_' + coord] || {};\n  var isVisible = opts.visible && ['linear', 'log'].indexOf(axis.type) !== -1;\n  var vals = [];\n  if (!isVisible) return;\n  var computeError = makeComputeError(opts);\n  for (var i = 0; i < calcTrace.length; i++) {\n    var calcPt = calcTrace[i];\n    var iIn = calcPt.i;\n\n    // for types that don't include `i` in each calcdata point\n    if (iIn === undefined) iIn = i;\n\n    // for stacked area inserted points\n    // TODO: errorbars have been tested cursorily with stacked area,\n    // but not thoroughly. It's not even really clear what you want to do:\n    // Should it just be calculated based on that trace's size data?\n    // Should you add errors from below in quadrature?\n    // And what about normalization, where in principle the errors shrink\n    // again when you get up to the top end?\n    // One option would be to forbid errorbars with stacking until we\n    // decide how to handle these questions.\n    else if (iIn === null) continue;\n    var calcCoord = calcPt[coord];\n    if (!isNumeric(axis.c2l(calcCoord))) continue;\n    var errors = computeError(calcCoord, iIn);\n    if (isNumeric(errors[0]) && isNumeric(errors[1])) {\n      var shoe = calcPt[coord + 's'] = calcCoord - errors[0];\n      var hat = calcPt[coord + 'h'] = calcCoord + errors[1];\n      vals.push(shoe, hat);\n    }\n  }\n  var axId = axis._id;\n  var baseExtremes = trace._extremes[axId];\n  var extremes = Axes.findExtremes(axis, vals, Lib.extendFlat({\n    tozero: baseExtremes.opts.tozero\n  }, {\n    padded: true\n  }));\n  baseExtremes.min = baseExtremes.min.concat(extremes.min);\n  baseExtremes.max = baseExtremes.max.concat(extremes.max);\n}\n\n/***/ }),\n\n/***/ 45827:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/**\n * Error bar computing function generator\n *\n * N.B. The generated function does not clean the dataPt entries. Non-numeric\n * entries result in undefined error magnitudes.\n *\n * @param {object} opts error bar attributes\n *\n * @return {function} :\n *      @param {numeric} dataPt data point from where to compute the error magnitude\n *      @param {number} index index of dataPt in its corresponding data array\n *      @return {array}\n *        - error[0] : error magnitude in the negative direction\n *        - error[1] : \" \" \" \" positive \"\n */\nmodule.exports = function makeComputeError(opts) {\n  var type = opts.type;\n  var symmetric = opts.symmetric;\n  if (type === 'data') {\n    var array = opts.array || [];\n    if (symmetric) {\n      return function computeError(dataPt, index) {\n        var val = +array[index];\n        return [val, val];\n      };\n    } else {\n      var arrayminus = opts.arrayminus || [];\n      return function computeError(dataPt, index) {\n        var val = +array[index];\n        var valMinus = +arrayminus[index];\n        // in case one is present and the other is missing, fill in 0\n        // so we still see the present one. Mostly useful during manual\n        // data entry.\n        if (!isNaN(val) || !isNaN(valMinus)) {\n          return [valMinus || 0, val || 0];\n        }\n        return [NaN, NaN];\n      };\n    }\n  } else {\n    var computeErrorValue = makeComputeErrorValue(type, opts.value);\n    var computeErrorValueMinus = makeComputeErrorValue(type, opts.valueminus);\n    if (symmetric || opts.valueminus === undefined) {\n      return function computeError(dataPt) {\n        var val = computeErrorValue(dataPt);\n        return [val, val];\n      };\n    } else {\n      return function computeError(dataPt) {\n        return [computeErrorValueMinus(dataPt), computeErrorValue(dataPt)];\n      };\n    }\n  }\n};\n\n/**\n * Compute error bar magnitude (for all types except data)\n *\n * @param {string} type error bar type\n * @param {numeric} value error bar value\n *\n * @return {function} :\n *      @param {numeric} dataPt\n */\nfunction makeComputeErrorValue(type, value) {\n  if (type === 'percent') {\n    return function (dataPt) {\n      return Math.abs(dataPt * value / 100);\n    };\n  }\n  if (type === 'constant') {\n    return function () {\n      return Math.abs(value);\n    };\n  }\n  if (type === 'sqrt') {\n    return function (dataPt) {\n      return Math.sqrt(Math.abs(dataPt));\n    };\n  }\n}\n\n/***/ }),\n\n/***/ 97587:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_245257__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_245257__(92770);\nvar Registry = __nested_webpack_require_245257__(73972);\nvar Lib = __nested_webpack_require_245257__(71828);\nvar Template = __nested_webpack_require_245257__(44467);\nvar attributes = __nested_webpack_require_245257__(25673);\nmodule.exports = function (traceIn, traceOut, defaultColor, opts) {\n  var objName = 'error_' + opts.axis;\n  var containerOut = Template.newContainer(traceOut, objName);\n  var containerIn = traceIn[objName] || {};\n  function coerce(attr, dflt) {\n    return Lib.coerce(containerIn, containerOut, attributes, attr, dflt);\n  }\n  var hasErrorBars = containerIn.array !== undefined || containerIn.value !== undefined || containerIn.type === 'sqrt';\n  var visible = coerce('visible', hasErrorBars);\n  if (visible === false) return;\n  var type = coerce('type', 'array' in containerIn ? 'data' : 'percent');\n  var symmetric = true;\n  if (type !== 'sqrt') {\n    symmetric = coerce('symmetric', !((type === 'data' ? 'arrayminus' : 'valueminus') in containerIn));\n  }\n  if (type === 'data') {\n    coerce('array');\n    coerce('traceref');\n    if (!symmetric) {\n      coerce('arrayminus');\n      coerce('tracerefminus');\n    }\n  } else if (type === 'percent' || type === 'constant') {\n    coerce('value');\n    if (!symmetric) coerce('valueminus');\n  }\n  var copyAttr = 'copy_' + opts.inherit + 'style';\n  if (opts.inherit) {\n    var inheritObj = traceOut['error_' + opts.inherit];\n    if ((inheritObj || {}).visible) {\n      coerce(copyAttr, !(containerIn.color || isNumeric(containerIn.thickness) || isNumeric(containerIn.width)));\n    }\n  }\n  if (!opts.inherit || !containerOut[copyAttr]) {\n    coerce('color', defaultColor);\n    coerce('thickness');\n    coerce('width', Registry.traceIs(traceOut, 'gl3d') ? 0 : 4);\n  }\n};\n\n/***/ }),\n\n/***/ 37369:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_247096__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_247096__(71828);\nvar overrideAll = (__nested_webpack_require_247096__(30962).overrideAll);\nvar attributes = __nested_webpack_require_247096__(25673);\nvar xyAttrs = {\n  error_x: Lib.extendFlat({}, attributes),\n  error_y: Lib.extendFlat({}, attributes)\n};\ndelete xyAttrs.error_x.copy_zstyle;\ndelete xyAttrs.error_y.copy_zstyle;\ndelete xyAttrs.error_y.copy_ystyle;\nvar xyzAttrs = {\n  error_x: Lib.extendFlat({}, attributes),\n  error_y: Lib.extendFlat({}, attributes),\n  error_z: Lib.extendFlat({}, attributes)\n};\ndelete xyzAttrs.error_x.copy_ystyle;\ndelete xyzAttrs.error_y.copy_ystyle;\ndelete xyzAttrs.error_z.copy_ystyle;\ndelete xyzAttrs.error_z.copy_zstyle;\nmodule.exports = {\n  moduleType: 'component',\n  name: 'errorbars',\n  schema: {\n    traces: {\n      scatter: xyAttrs,\n      bar: xyAttrs,\n      histogram: xyAttrs,\n      scatter3d: overrideAll(xyzAttrs, 'calc', 'nested'),\n      scattergl: overrideAll(xyAttrs, 'calc', 'nested')\n    }\n  },\n  supplyDefaults: __nested_webpack_require_247096__(97587),\n  calc: __nested_webpack_require_247096__(84532),\n  makeComputeError: __nested_webpack_require_247096__(45827),\n  plot: __nested_webpack_require_247096__(19398),\n  style: __nested_webpack_require_247096__(62662),\n  hoverInfo: hoverInfo\n};\nfunction hoverInfo(calcPoint, trace, hoverPoint) {\n  if ((trace.error_y || {}).visible) {\n    hoverPoint.yerr = calcPoint.yh - calcPoint.y;\n    if (!trace.error_y.symmetric) hoverPoint.yerrneg = calcPoint.y - calcPoint.ys;\n  }\n  if ((trace.error_x || {}).visible) {\n    hoverPoint.xerr = calcPoint.xh - calcPoint.x;\n    if (!trace.error_x.symmetric) hoverPoint.xerrneg = calcPoint.x - calcPoint.xs;\n  }\n}\n\n/***/ }),\n\n/***/ 19398:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_248784__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_248784__(39898);\nvar isNumeric = __nested_webpack_require_248784__(92770);\nvar Drawing = __nested_webpack_require_248784__(91424);\nvar subTypes = __nested_webpack_require_248784__(34098);\nmodule.exports = function plot(gd, traces, plotinfo, transitionOpts) {\n  var isNew;\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  var hasAnimation = transitionOpts && transitionOpts.duration > 0;\n  var isStatic = gd._context.staticPlot;\n  traces.each(function (d) {\n    var trace = d[0].trace;\n    // || {} is in case the trace (specifically scatterternary)\n    // doesn't support error bars at all, but does go through\n    // the scatter.plot mechanics, which calls ErrorBars.plot\n    // internally\n    var xObj = trace.error_x || {};\n    var yObj = trace.error_y || {};\n    var keyFunc;\n    if (trace.ids) {\n      keyFunc = function (d) {\n        return d.id;\n      };\n    }\n    var sparse = subTypes.hasMarkers(trace) && trace.marker.maxdisplayed > 0;\n    if (!yObj.visible && !xObj.visible) d = [];\n    var errorbars = d3.select(this).selectAll('g.errorbar').data(d, keyFunc);\n    errorbars.exit().remove();\n    if (!d.length) return;\n    if (!xObj.visible) errorbars.selectAll('path.xerror').remove();\n    if (!yObj.visible) errorbars.selectAll('path.yerror').remove();\n    errorbars.style('opacity', 1);\n    var enter = errorbars.enter().append('g').classed('errorbar', true);\n    if (hasAnimation) {\n      enter.style('opacity', 0).transition().duration(transitionOpts.duration).style('opacity', 1);\n    }\n    Drawing.setClipUrl(errorbars, plotinfo.layerClipId, gd);\n    errorbars.each(function (d) {\n      var errorbar = d3.select(this);\n      var coords = errorCoords(d, xa, ya);\n      if (sparse && !d.vis) return;\n      var path;\n      var yerror = errorbar.select('path.yerror');\n      if (yObj.visible && isNumeric(coords.x) && isNumeric(coords.yh) && isNumeric(coords.ys)) {\n        var yw = yObj.width;\n        path = 'M' + (coords.x - yw) + ',' + coords.yh + 'h' + 2 * yw +\n        // hat\n        'm-' + yw + ',0V' + coords.ys; // bar\n\n        if (!coords.noYS) path += 'm-' + yw + ',0h' + 2 * yw; // shoe\n\n        isNew = !yerror.size();\n        if (isNew) {\n          yerror = errorbar.append('path').style('vector-effect', isStatic ? 'none' : 'non-scaling-stroke').classed('yerror', true);\n        } else if (hasAnimation) {\n          yerror = yerror.transition().duration(transitionOpts.duration).ease(transitionOpts.easing);\n        }\n        yerror.attr('d', path);\n      } else yerror.remove();\n      var xerror = errorbar.select('path.xerror');\n      if (xObj.visible && isNumeric(coords.y) && isNumeric(coords.xh) && isNumeric(coords.xs)) {\n        var xw = (xObj.copy_ystyle ? yObj : xObj).width;\n        path = 'M' + coords.xh + ',' + (coords.y - xw) + 'v' + 2 * xw +\n        // hat\n        'm0,-' + xw + 'H' + coords.xs; // bar\n\n        if (!coords.noXS) path += 'm0,-' + xw + 'v' + 2 * xw; // shoe\n\n        isNew = !xerror.size();\n        if (isNew) {\n          xerror = errorbar.append('path').style('vector-effect', isStatic ? 'none' : 'non-scaling-stroke').classed('xerror', true);\n        } else if (hasAnimation) {\n          xerror = xerror.transition().duration(transitionOpts.duration).ease(transitionOpts.easing);\n        }\n        xerror.attr('d', path);\n      } else xerror.remove();\n    });\n  });\n};\n\n// compute the coordinates of the error-bar objects\nfunction errorCoords(d, xa, ya) {\n  var out = {\n    x: xa.c2p(d.x),\n    y: ya.c2p(d.y)\n  };\n\n  // calculate the error bar size and hat and shoe locations\n  if (d.yh !== undefined) {\n    out.yh = ya.c2p(d.yh);\n    out.ys = ya.c2p(d.ys);\n\n    // if the shoes go off-scale (ie log scale, error bars past zero)\n    // clip the bar and hide the shoes\n    if (!isNumeric(out.ys)) {\n      out.noYS = true;\n      out.ys = ya.c2p(d.ys, true);\n    }\n  }\n  if (d.xh !== undefined) {\n    out.xh = xa.c2p(d.xh);\n    out.xs = xa.c2p(d.xs);\n    if (!isNumeric(out.xs)) {\n      out.noXS = true;\n      out.xs = xa.c2p(d.xs, true);\n    }\n  }\n  return out;\n}\n\n/***/ }),\n\n/***/ 62662:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_252908__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_252908__(39898);\nvar Color = __nested_webpack_require_252908__(7901);\nmodule.exports = function style(traces) {\n  traces.each(function (d) {\n    var trace = d[0].trace;\n    var yObj = trace.error_y || {};\n    var xObj = trace.error_x || {};\n    var s = d3.select(this);\n    s.selectAll('path.yerror').style('stroke-width', yObj.thickness + 'px').call(Color.stroke, yObj.color);\n    if (xObj.copy_ystyle) xObj = yObj;\n    s.selectAll('path.xerror').style('stroke-width', xObj.thickness + 'px').call(Color.stroke, xObj.color);\n  });\n};\n\n/***/ }),\n\n/***/ 77914:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_253563__) {\n\n\"use strict\";\n\n\nvar fontAttrs = __nested_webpack_require_253563__(41940);\nvar hoverLabelAttrs = (__nested_webpack_require_253563__(528).hoverlabel);\nvar extendFlat = (__nested_webpack_require_253563__(1426).extendFlat);\nmodule.exports = {\n  hoverlabel: {\n    bgcolor: extendFlat({}, hoverLabelAttrs.bgcolor, {\n      arrayOk: true\n    }),\n    bordercolor: extendFlat({}, hoverLabelAttrs.bordercolor, {\n      arrayOk: true\n    }),\n    font: fontAttrs({\n      arrayOk: true,\n      editType: 'none'\n    }),\n    align: extendFlat({}, hoverLabelAttrs.align, {\n      arrayOk: true\n    }),\n    namelength: extendFlat({}, hoverLabelAttrs.namelength, {\n      arrayOk: true\n    }),\n    editType: 'none'\n  }\n};\n\n/***/ }),\n\n/***/ 30732:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_254319__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_254319__(71828);\nvar Registry = __nested_webpack_require_254319__(73972);\nmodule.exports = function calc(gd) {\n  var calcdata = gd.calcdata;\n  var fullLayout = gd._fullLayout;\n  function makeCoerceHoverInfo(trace) {\n    return function (val) {\n      return Lib.coerceHoverinfo({\n        hoverinfo: val\n      }, {\n        _module: trace._module\n      }, fullLayout);\n    };\n  }\n  for (var i = 0; i < calcdata.length; i++) {\n    var cd = calcdata[i];\n    var trace = cd[0].trace;\n\n    // don't include hover calc fields for pie traces\n    // as calcdata items might be sorted by value and\n    // won't match the data array order.\n    if (Registry.traceIs(trace, 'pie-like')) continue;\n    var fillFn = Registry.traceIs(trace, '2dMap') ? paste : Lib.fillArray;\n    fillFn(trace.hoverinfo, cd, 'hi', makeCoerceHoverInfo(trace));\n    if (trace.hovertemplate) fillFn(trace.hovertemplate, cd, 'ht');\n    if (!trace.hoverlabel) continue;\n    fillFn(trace.hoverlabel.bgcolor, cd, 'hbg');\n    fillFn(trace.hoverlabel.bordercolor, cd, 'hbc');\n    fillFn(trace.hoverlabel.font.size, cd, 'hts');\n    fillFn(trace.hoverlabel.font.color, cd, 'htc');\n    fillFn(trace.hoverlabel.font.family, cd, 'htf');\n    fillFn(trace.hoverlabel.namelength, cd, 'hnl');\n    fillFn(trace.hoverlabel.align, cd, 'hta');\n  }\n};\nfunction paste(traceAttr, cd, cdAttr, fn) {\n  fn = fn || Lib.identity;\n  if (Array.isArray(traceAttr)) {\n    cd[0][cdAttr] = fn(traceAttr);\n  }\n}\n\n/***/ }),\n\n/***/ 75914:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_255881__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_255881__(73972);\nvar hover = (__nested_webpack_require_255881__(88335).hover);\nmodule.exports = function click(gd, evt, subplot) {\n  var annotationsDone = Registry.getComponentMethod('annotations', 'onClick')(gd, gd._hoverdata);\n\n  // fallback to fail-safe in case the plot type's hover method doesn't pass the subplot.\n  // Ternary, for example, didn't, but it was caught because tested.\n  if (subplot !== undefined) {\n    // The true flag at the end causes it to re-run the hover computation to figure out *which*\n    // point is being clicked. Without this, clicking is somewhat unreliable.\n    hover(gd, evt, subplot, true);\n  }\n  function emitClick() {\n    gd.emit('plotly_click', {\n      points: gd._hoverdata,\n      event: evt\n    });\n  }\n  if (gd._hoverdata && evt && evt.target) {\n    if (annotationsDone && annotationsDone.then) {\n      annotationsDone.then(emitClick);\n    } else emitClick();\n\n    // why do we get a double event without this???\n    if (evt.stopImmediatePropagation) evt.stopImmediatePropagation();\n  }\n};\n\n/***/ }),\n\n/***/ 26675:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  // hover labels for multiple horizontal bars get tilted by this angle\n  YANGLE: 60,\n  // size and display constants for hover text\n\n  // pixel size of hover arrows\n  HOVERARROWSIZE: 6,\n  // pixels padding around text\n  HOVERTEXTPAD: 3,\n  // hover font\n  HOVERFONTSIZE: 13,\n  HOVERFONT: 'Arial, sans-serif',\n  // minimum time (msec) between hover calls\n  HOVERMINTIME: 50,\n  // ID suffix (with fullLayout._uid) for hover events in the throttle cache\n  HOVERID: '-hover'\n};\n\n/***/ }),\n\n/***/ 54268:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_257603__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_257603__(71828);\nvar attributes = __nested_webpack_require_257603__(77914);\nvar handleHoverLabelDefaults = __nested_webpack_require_257603__(38048);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var opts = Lib.extendFlat({}, layout.hoverlabel);\n  if (traceOut.hovertemplate) opts.namelength = -1;\n  handleHoverLabelDefaults(traceIn, traceOut, coerce, opts);\n};\n\n/***/ }),\n\n/***/ 23469:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_258214__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_258214__(71828);\n\n// look for either subplot or xaxis and yaxis attributes\n// does not handle splom case\nexports.getSubplot = function (trace) {\n  return trace.subplot || trace.xaxis + trace.yaxis || trace.geo;\n};\n\n// is trace in given list of subplots?\n// does handle splom case\nexports.isTraceInSubplots = function (trace, subplots) {\n  if (trace.type === 'splom') {\n    var xaxes = trace.xaxes || [];\n    var yaxes = trace.yaxes || [];\n    for (var i = 0; i < xaxes.length; i++) {\n      for (var j = 0; j < yaxes.length; j++) {\n        if (subplots.indexOf(xaxes[i] + yaxes[j]) !== -1) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n  return subplots.indexOf(exports.getSubplot(trace)) !== -1;\n};\n\n// convenience functions for mapping all relevant axes\nexports.flat = function (subplots, v) {\n  var out = new Array(subplots.length);\n  for (var i = 0; i < subplots.length; i++) {\n    out[i] = v;\n  }\n  return out;\n};\nexports.p2c = function (axArray, v) {\n  var out = new Array(axArray.length);\n  for (var i = 0; i < axArray.length; i++) {\n    out[i] = axArray[i].p2c(v);\n  }\n  return out;\n};\nexports.getDistanceFunction = function (mode, dx, dy, dxy) {\n  if (mode === 'closest') return dxy || exports.quadrature(dx, dy);\n  return mode.charAt(0) === 'x' ? dx : dy;\n};\nexports.getClosest = function (cd, distfn, pointData) {\n  // do we already have a point number? (array mode only)\n  if (pointData.index !== false) {\n    if (pointData.index >= 0 && pointData.index < cd.length) {\n      pointData.distance = 0;\n    } else pointData.index = false;\n  } else {\n    // apply the distance function to each data point\n    // this is the longest loop... if this bogs down, we may need\n    // to create pre-sorted data (by x or y), not sure how to\n    // do this for 'closest'\n    for (var i = 0; i < cd.length; i++) {\n      var newDistance = distfn(cd[i]);\n      if (newDistance <= pointData.distance) {\n        pointData.index = i;\n        pointData.distance = newDistance;\n      }\n    }\n  }\n  return pointData;\n};\n\n/*\n * pseudo-distance function for hover effects on areas: inside the region\n * distance is finite (`passVal`), outside it's Infinity.\n *\n * @param {number} v0: signed difference between the current position and the left edge\n * @param {number} v1: signed difference between the current position and the right edge\n * @param {number} passVal: the value to return on success\n */\nexports.inbox = function (v0, v1, passVal) {\n  return v0 * v1 < 0 || v0 === 0 ? passVal : Infinity;\n};\nexports.quadrature = function (dx, dy) {\n  return function (di) {\n    var x = dx(di);\n    var y = dy(di);\n    return Math.sqrt(x * x + y * y);\n  };\n};\n\n/** Fill event data point object for hover and selection.\n *  Invokes _module.eventData if present.\n *\n * N.B. note that point 'index' corresponds to input data array index\n *  whereas 'number' is its post-transform version.\n *\n * If the hovered/selected pt corresponds to an multiple input points\n * (e.g. for histogram and transformed traces), 'pointNumbers` and 'pointIndices'\n * are include in the event data.\n *\n * @param {object} pt\n * @param {object} trace\n * @param {object} cd\n * @return {object}\n */\nexports.makeEventData = function (pt, trace, cd) {\n  // hover uses 'index', select uses 'pointNumber'\n  var pointNumber = 'index' in pt ? pt.index : pt.pointNumber;\n  var out = {\n    data: trace._input,\n    fullData: trace,\n    curveNumber: trace.index,\n    pointNumber: pointNumber\n  };\n  if (trace._indexToPoints) {\n    var pointIndices = trace._indexToPoints[pointNumber];\n    if (pointIndices.length === 1) {\n      out.pointIndex = pointIndices[0];\n    } else {\n      out.pointIndices = pointIndices;\n    }\n  } else {\n    out.pointIndex = pointNumber;\n  }\n  if (trace._module.eventData) {\n    out = trace._module.eventData(out, pt, trace, cd, pointNumber);\n  } else {\n    if ('xVal' in pt) out.x = pt.xVal;else if ('x' in pt) out.x = pt.x;\n    if ('yVal' in pt) out.y = pt.yVal;else if ('y' in pt) out.y = pt.y;\n    if (pt.xa) out.xaxis = pt.xa;\n    if (pt.ya) out.yaxis = pt.ya;\n    if (pt.zLabelVal !== undefined) out.z = pt.zLabelVal;\n  }\n  exports.appendArrayPointValue(out, trace, pointNumber);\n  return out;\n};\n\n/** Appends values inside array attributes corresponding to given point number\n *\n * @param {object} pointData : point data object (gets mutated here)\n * @param {object} trace : full trace object\n * @param {number|Array(number)} pointNumber : point number. May be a length-2 array\n *     [row, col] to dig into 2D arrays\n */\nexports.appendArrayPointValue = function (pointData, trace, pointNumber) {\n  var arrayAttrs = trace._arrayAttrs;\n  if (!arrayAttrs) {\n    return;\n  }\n  for (var i = 0; i < arrayAttrs.length; i++) {\n    var astr = arrayAttrs[i];\n    var key = getPointKey(astr);\n    if (pointData[key] === undefined) {\n      var val = Lib.nestedProperty(trace, astr).get();\n      var pointVal = getPointData(val, pointNumber);\n      if (pointVal !== undefined) pointData[key] = pointVal;\n    }\n  }\n};\n\n/**\n * Appends values inside array attributes corresponding to given point number array\n * For use when pointData references a plot entity that arose (or potentially arose)\n * from multiple points in the input data\n *\n * @param {object} pointData : point data object (gets mutated here)\n * @param {object} trace : full trace object\n * @param {Array(number)|Array(Array(number))} pointNumbers : Array of point numbers.\n *     Each entry in the array may itself be a length-2 array [row, col] to dig into 2D arrays\n */\nexports.appendArrayMultiPointValues = function (pointData, trace, pointNumbers) {\n  var arrayAttrs = trace._arrayAttrs;\n  if (!arrayAttrs) {\n    return;\n  }\n  for (var i = 0; i < arrayAttrs.length; i++) {\n    var astr = arrayAttrs[i];\n    var key = getPointKey(astr);\n    if (pointData[key] === undefined) {\n      var val = Lib.nestedProperty(trace, astr).get();\n      var keyVal = new Array(pointNumbers.length);\n      for (var j = 0; j < pointNumbers.length; j++) {\n        keyVal[j] = getPointData(val, pointNumbers[j]);\n      }\n      pointData[key] = keyVal;\n    }\n  }\n};\nvar pointKeyMap = {\n  ids: 'id',\n  locations: 'location',\n  labels: 'label',\n  values: 'value',\n  'marker.colors': 'color',\n  parents: 'parent'\n};\nfunction getPointKey(astr) {\n  return pointKeyMap[astr] || astr;\n}\nfunction getPointData(val, pointNumber) {\n  if (Array.isArray(pointNumber)) {\n    if (Array.isArray(val) && Array.isArray(val[pointNumber[0]])) {\n      return val[pointNumber[0]][pointNumber[1]];\n    }\n  } else {\n    return val[pointNumber];\n  }\n}\nvar xyHoverMode = {\n  x: true,\n  y: true\n};\nvar unifiedHoverMode = {\n  'x unified': true,\n  'y unified': true\n};\nexports.isUnifiedHover = function (hovermode) {\n  if (typeof hovermode !== 'string') return false;\n  return !!unifiedHoverMode[hovermode];\n};\nexports.isXYhover = function (hovermode) {\n  if (typeof hovermode !== 'string') return false;\n  return !!xyHoverMode[hovermode];\n};\n\n/***/ }),\n\n/***/ 88335:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_265300__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_265300__(39898);\nvar isNumeric = __nested_webpack_require_265300__(92770);\nvar tinycolor = __nested_webpack_require_265300__(84267);\nvar Lib = __nested_webpack_require_265300__(71828);\nvar strTranslate = Lib.strTranslate;\nvar strRotate = Lib.strRotate;\nvar Events = __nested_webpack_require_265300__(11086);\nvar svgTextUtils = __nested_webpack_require_265300__(63893);\nvar overrideCursor = __nested_webpack_require_265300__(39918);\nvar Drawing = __nested_webpack_require_265300__(91424);\nvar Color = __nested_webpack_require_265300__(7901);\nvar dragElement = __nested_webpack_require_265300__(28569);\nvar Axes = __nested_webpack_require_265300__(89298);\nvar Registry = __nested_webpack_require_265300__(73972);\nvar helpers = __nested_webpack_require_265300__(23469);\nvar constants = __nested_webpack_require_265300__(26675);\nvar legendSupplyDefaults = __nested_webpack_require_265300__(99017);\nvar legendDraw = __nested_webpack_require_265300__(43969);\n\n// hover labels for multiple horizontal bars get tilted by some angle,\n// then need to be offset differently if they overlap\nvar YANGLE = constants.YANGLE;\nvar YA_RADIANS = Math.PI * YANGLE / 180;\n\n// expansion of projected height\nvar YFACTOR = 1 / Math.sin(YA_RADIANS);\n\n// to make the appropriate post-rotation x offset,\n// you need both x and y offsets\nvar YSHIFTX = Math.cos(YA_RADIANS);\nvar YSHIFTY = Math.sin(YA_RADIANS);\n\n// size and display constants for hover text\nvar HOVERARROWSIZE = constants.HOVERARROWSIZE;\nvar HOVERTEXTPAD = constants.HOVERTEXTPAD;\nvar multipleHoverPoints = {\n  box: true,\n  ohlc: true,\n  violin: true,\n  candlestick: true\n};\nvar cartesianScatterPoints = {\n  scatter: true,\n  scattergl: true,\n  splom: true\n};\n\n// fx.hover: highlight data on hover\n// evt can be a mousemove event, or an object with data about what points\n//   to hover on\n//      {xpx,ypx[,hovermode]} - pixel locations from top left\n//          (with optional overriding hovermode)\n//      {xval,yval[,hovermode]} - data values\n//      [{curveNumber,(pointNumber|xval and/or yval)}] -\n//              array of specific points to highlight\n//          pointNumber is a single integer if gd.data[curveNumber] is 1D,\n//              or a two-element array if it's 2D\n//          xval and yval are data values,\n//              1D data may specify either or both,\n//              2D data must specify both\n// subplot is an id string (default \"xy\")\n// makes use of gl.hovermode, which can be:\n//      x (find the points with the closest x values, ie a column),\n//      closest (find the single closest point)\n//    internally there are two more that occasionally get used:\n//      y (pick out a row - only used for multiple horizontal bar charts)\n//      array (used when the user specifies an explicit\n//          array of points to hover on)\n//\n// We wrap the hovers in a timer, to limit their frequency.\n// The actual rendering is done by private function _hover.\nexports.hover = function hover(gd, evt, subplot, noHoverEvent) {\n  gd = Lib.getGraphDiv(gd);\n  // The 'target' property changes when bubbling out of Shadow DOM.\n  // Throttling can delay reading the target, so we save the current value.\n  var eventTarget = evt.target;\n  Lib.throttle(gd._fullLayout._uid + constants.HOVERID, constants.HOVERMINTIME, function () {\n    _hover(gd, evt, subplot, noHoverEvent, eventTarget);\n  });\n};\n\n/*\n * Draw a single hover item or an array of hover item in a pre-existing svg container somewhere\n * hoverItem should have keys:\n *    - x and y (or x0, x1, y0, and y1):\n *      the pixel position to mark, relative to opts.container\n *    - xLabel, yLabel, zLabel, text, and name:\n *      info to go in the label\n *    - color:\n *      the background color for the label.\n *    - idealAlign (optional):\n *      'left' or 'right' for which side of the x/y box to try to put this on first\n *    - borderColor (optional):\n *      color for the border, defaults to strongest contrast with color\n *    - fontFamily (optional):\n *      string, the font for this label, defaults to constants.HOVERFONT\n *    - fontSize (optional):\n *      the label font size, defaults to constants.HOVERFONTSIZE\n *    - fontColor (optional):\n *      defaults to borderColor\n * opts should have keys:\n *    - bgColor:\n *      the background color this is against, used if the trace is\n *      non-opaque, and for the name, which goes outside the box\n *    - container:\n *      a <svg> or <g> element to add the hover label to\n *    - outerContainer:\n *      normally a parent of `container`, sets the bounding box to use to\n *      constrain the hover label and determine whether to show it on the left or right\n * opts can have optional keys:\n *    - anchorIndex:\n        the index of the hover item used as an anchor for positioning.\n        The other hover items will be pushed up or down to prevent overlap.\n */\nexports.loneHover = function loneHover(hoverItems, opts) {\n  var multiHover = true;\n  if (!Array.isArray(hoverItems)) {\n    multiHover = false;\n    hoverItems = [hoverItems];\n  }\n  var gd = opts.gd;\n  var gTop = getTopOffset(gd);\n  var gLeft = getLeftOffset(gd);\n  var pointsData = hoverItems.map(function (hoverItem) {\n    var _x0 = hoverItem._x0 || hoverItem.x0 || hoverItem.x || 0;\n    var _x1 = hoverItem._x1 || hoverItem.x1 || hoverItem.x || 0;\n    var _y0 = hoverItem._y0 || hoverItem.y0 || hoverItem.y || 0;\n    var _y1 = hoverItem._y1 || hoverItem.y1 || hoverItem.y || 0;\n    var eventData = hoverItem.eventData;\n    if (eventData) {\n      var x0 = Math.min(_x0, _x1);\n      var x1 = Math.max(_x0, _x1);\n      var y0 = Math.min(_y0, _y1);\n      var y1 = Math.max(_y0, _y1);\n      var trace = hoverItem.trace;\n      if (Registry.traceIs(trace, 'gl3d')) {\n        var container = gd._fullLayout[trace.scene]._scene.container;\n        var dx = container.offsetLeft;\n        var dy = container.offsetTop;\n        x0 += dx;\n        x1 += dx;\n        y0 += dy;\n        y1 += dy;\n      } // TODO: handle heatmapgl\n\n      eventData.bbox = {\n        x0: x0 + gLeft,\n        x1: x1 + gLeft,\n        y0: y0 + gTop,\n        y1: y1 + gTop\n      };\n      if (opts.inOut_bbox) {\n        opts.inOut_bbox.push(eventData.bbox);\n      }\n    } else {\n      eventData = false;\n    }\n    return {\n      color: hoverItem.color || Color.defaultLine,\n      x0: hoverItem.x0 || hoverItem.x || 0,\n      x1: hoverItem.x1 || hoverItem.x || 0,\n      y0: hoverItem.y0 || hoverItem.y || 0,\n      y1: hoverItem.y1 || hoverItem.y || 0,\n      xLabel: hoverItem.xLabel,\n      yLabel: hoverItem.yLabel,\n      zLabel: hoverItem.zLabel,\n      text: hoverItem.text,\n      name: hoverItem.name,\n      idealAlign: hoverItem.idealAlign,\n      // optional extra bits of styling\n      borderColor: hoverItem.borderColor,\n      fontFamily: hoverItem.fontFamily,\n      fontSize: hoverItem.fontSize,\n      fontColor: hoverItem.fontColor,\n      nameLength: hoverItem.nameLength,\n      textAlign: hoverItem.textAlign,\n      // filler to make createHoverText happy\n      trace: hoverItem.trace || {\n        index: 0,\n        hoverinfo: ''\n      },\n      xa: {\n        _offset: 0\n      },\n      ya: {\n        _offset: 0\n      },\n      index: 0,\n      hovertemplate: hoverItem.hovertemplate || false,\n      hovertemplateLabels: hoverItem.hovertemplateLabels || false,\n      eventData: eventData\n    };\n  });\n  var rotateLabels = false;\n  var hoverLabel = createHoverText(pointsData, {\n    gd: gd,\n    hovermode: 'closest',\n    rotateLabels: rotateLabels,\n    bgColor: opts.bgColor || Color.background,\n    container: d3.select(opts.container),\n    outerContainer: opts.outerContainer || opts.container\n  });\n\n  // Fix vertical overlap\n  var tooltipSpacing = 5;\n  var lastBottomY = 0;\n  var anchor = 0;\n  hoverLabel.sort(function (a, b) {\n    return a.y0 - b.y0;\n  }).each(function (d, i) {\n    var topY = d.y0 - d.by / 2;\n    if (topY - tooltipSpacing < lastBottomY) {\n      d.offset = lastBottomY - topY + tooltipSpacing;\n    } else {\n      d.offset = 0;\n    }\n    lastBottomY = topY + d.by + d.offset;\n    if (i === opts.anchorIndex || 0) anchor = d.offset;\n  }).each(function (d) {\n    d.offset -= anchor;\n  });\n  var scaleX = gd._fullLayout._invScaleX;\n  var scaleY = gd._fullLayout._invScaleY;\n  alignHoverText(hoverLabel, rotateLabels, scaleX, scaleY);\n  return multiHover ? hoverLabel : hoverLabel.node();\n};\n\n// The actual implementation is here:\nfunction _hover(gd, evt, subplot, noHoverEvent, eventTarget) {\n  if (!subplot) subplot = 'xy';\n\n  // if the user passed in an array of subplots,\n  // use those instead of finding overlayed plots\n  var subplots = Array.isArray(subplot) ? subplot : [subplot];\n  var fullLayout = gd._fullLayout;\n  var plots = fullLayout._plots || [];\n  var plotinfo = plots[subplot];\n  var hasCartesian = fullLayout._has('cartesian');\n\n  // list of all overlaid subplots to look at\n  if (plotinfo) {\n    var overlayedSubplots = plotinfo.overlays.map(function (pi) {\n      return pi.id;\n    });\n    subplots = subplots.concat(overlayedSubplots);\n  }\n  var len = subplots.length;\n  var xaArray = new Array(len);\n  var yaArray = new Array(len);\n  var supportsCompare = false;\n  for (var i = 0; i < len; i++) {\n    var spId = subplots[i];\n    if (plots[spId]) {\n      // 'cartesian' case\n      supportsCompare = true;\n      xaArray[i] = plots[spId].xaxis;\n      yaArray[i] = plots[spId].yaxis;\n    } else if (fullLayout[spId] && fullLayout[spId]._subplot) {\n      // other subplot types\n      var _subplot = fullLayout[spId]._subplot;\n      xaArray[i] = _subplot.xaxis;\n      yaArray[i] = _subplot.yaxis;\n    } else {\n      Lib.warn('Unrecognized subplot: ' + spId);\n      return;\n    }\n  }\n  var hovermode = evt.hovermode || fullLayout.hovermode;\n  if (hovermode && !supportsCompare) hovermode = 'closest';\n  if (['x', 'y', 'closest', 'x unified', 'y unified'].indexOf(hovermode) === -1 || !gd.calcdata || gd.querySelector('.zoombox') || gd._dragging) {\n    return dragElement.unhoverRaw(gd, evt);\n  }\n  var hoverdistance = fullLayout.hoverdistance;\n  if (hoverdistance === -1) hoverdistance = Infinity;\n  var spikedistance = fullLayout.spikedistance;\n  if (spikedistance === -1) spikedistance = Infinity;\n\n  // hoverData: the set of candidate points we've found to highlight\n  var hoverData = [];\n\n  // searchData: the data to search in. Mostly this is just a copy of\n  // gd.calcdata, filtered to the subplot and overlays we're on\n  // but if a point array is supplied it will be a mapping\n  // of indicated curves\n  var searchData = [];\n\n  // [x|y]valArray: the axis values of the hover event\n  // mapped onto each of the currently selected overlaid subplots\n  var xvalArray, yvalArray;\n  var itemnum, curvenum, cd, trace, subplotId, subploti, _mode, xval, yval, pointData, closedataPreviousLength;\n\n  // spikePoints: the set of candidate points we've found to draw spikes to\n  var spikePoints = {\n    hLinePoint: null,\n    vLinePoint: null\n  };\n\n  // does subplot have one (or more) horizontal traces?\n  // This is used to determine whether we rotate the labels or not\n  var hasOneHorizontalTrace = false;\n\n  // Figure out what we're hovering on:\n  // mouse location or user-supplied data\n\n  if (Array.isArray(evt)) {\n    // user specified an array of points to highlight\n    hovermode = 'array';\n    for (itemnum = 0; itemnum < evt.length; itemnum++) {\n      cd = gd.calcdata[evt[itemnum].curveNumber || 0];\n      if (cd) {\n        trace = cd[0].trace;\n        if (cd[0].trace.hoverinfo !== 'skip') {\n          searchData.push(cd);\n          if (trace.orientation === 'h') {\n            hasOneHorizontalTrace = true;\n          }\n        }\n      }\n    }\n  } else {\n    for (curvenum = 0; curvenum < gd.calcdata.length; curvenum++) {\n      cd = gd.calcdata[curvenum];\n      trace = cd[0].trace;\n      if (trace.hoverinfo !== 'skip' && helpers.isTraceInSubplots(trace, subplots)) {\n        searchData.push(cd);\n        if (trace.orientation === 'h') {\n          hasOneHorizontalTrace = true;\n        }\n      }\n    }\n\n    // [x|y]px: the pixels (from top left) of the mouse location\n    // on the currently selected plot area\n    // add pointerX|Y property for drawing the spikes in spikesnap 'cursor' situation\n    var hasUserCalledHover = !eventTarget;\n    var xpx, ypx;\n    if (hasUserCalledHover) {\n      if ('xpx' in evt) xpx = evt.xpx;else xpx = xaArray[0]._length / 2;\n      if ('ypx' in evt) ypx = evt.ypx;else ypx = yaArray[0]._length / 2;\n    } else {\n      // fire the beforehover event and quit if it returns false\n      // note that we're only calling this on real mouse events, so\n      // manual calls to fx.hover will always run.\n      if (Events.triggerHandler(gd, 'plotly_beforehover', evt) === false) {\n        return;\n      }\n      var dbb = eventTarget.getBoundingClientRect();\n      xpx = evt.clientX - dbb.left;\n      ypx = evt.clientY - dbb.top;\n      fullLayout._calcInverseTransform(gd);\n      var transformedCoords = Lib.apply3DTransform(fullLayout._invTransform)(xpx, ypx);\n      xpx = transformedCoords[0];\n      ypx = transformedCoords[1];\n\n      // in case hover was called from mouseout into hovertext,\n      // it's possible you're not actually over the plot anymore\n      if (xpx < 0 || xpx > xaArray[0]._length || ypx < 0 || ypx > yaArray[0]._length) {\n        return dragElement.unhoverRaw(gd, evt);\n      }\n    }\n    evt.pointerX = xpx + xaArray[0]._offset;\n    evt.pointerY = ypx + yaArray[0]._offset;\n    if ('xval' in evt) xvalArray = helpers.flat(subplots, evt.xval);else xvalArray = helpers.p2c(xaArray, xpx);\n    if ('yval' in evt) yvalArray = helpers.flat(subplots, evt.yval);else yvalArray = helpers.p2c(yaArray, ypx);\n    if (!isNumeric(xvalArray[0]) || !isNumeric(yvalArray[0])) {\n      Lib.warn('Fx.hover failed', evt, gd);\n      return dragElement.unhoverRaw(gd, evt);\n    }\n  }\n\n  // the pixel distance to beat as a matching point\n  // in 'x' or 'y' mode this resets for each trace\n  var distance = Infinity;\n\n  // find the closest point in each trace\n  // this is minimum dx and/or dy, depending on mode\n  // and the pixel position for the label (labelXpx, labelYpx)\n  function findHoverPoints(customXVal, customYVal) {\n    for (curvenum = 0; curvenum < searchData.length; curvenum++) {\n      cd = searchData[curvenum];\n\n      // filter out invisible or broken data\n      if (!cd || !cd[0] || !cd[0].trace) continue;\n      trace = cd[0].trace;\n      if (trace.visible !== true || trace._length === 0) continue;\n\n      // Explicitly bail out for these two. I don't know how to otherwise prevent\n      // the rest of this function from running and failing\n      if (['carpet', 'contourcarpet'].indexOf(trace._module.name) !== -1) continue;\n      if (trace.type === 'splom') {\n        // splom traces do not generate overlay subplots,\n        // it is safe to assume here splom traces correspond to the 0th subplot\n        subploti = 0;\n        subplotId = subplots[subploti];\n      } else {\n        subplotId = helpers.getSubplot(trace);\n        subploti = subplots.indexOf(subplotId);\n      }\n\n      // within one trace mode can sometimes be overridden\n      _mode = hovermode;\n      if (helpers.isUnifiedHover(_mode)) {\n        _mode = _mode.charAt(0);\n      }\n\n      // container for new point, also used to pass info into module.hoverPoints\n      pointData = {\n        // trace properties\n        cd: cd,\n        trace: trace,\n        xa: xaArray[subploti],\n        ya: yaArray[subploti],\n        // max distances for hover and spikes - for points that want to show but do not\n        // want to override other points, set distance/spikeDistance equal to max*Distance\n        // and it will not get filtered out but it will be guaranteed to have a greater\n        // distance than any point that calculated a real distance.\n        maxHoverDistance: hoverdistance,\n        maxSpikeDistance: spikedistance,\n        // point properties - override all of these\n        index: false,\n        // point index in trace - only used by plotly.js hoverdata consumers\n        distance: Math.min(distance, hoverdistance),\n        // pixel distance or pseudo-distance\n\n        // distance/pseudo-distance for spikes. This distance should always be calculated\n        // as if in \"closest\" mode, and should only be set if this point should\n        // generate a spike.\n        spikeDistance: Infinity,\n        // in some cases the spikes have different positioning from the hover label\n        // they don't need x0/x1, just one position\n        xSpike: undefined,\n        ySpike: undefined,\n        // where and how to display the hover label\n        color: Color.defaultLine,\n        // trace color\n        name: trace.name,\n        x0: undefined,\n        x1: undefined,\n        y0: undefined,\n        y1: undefined,\n        xLabelVal: undefined,\n        yLabelVal: undefined,\n        zLabelVal: undefined,\n        text: undefined\n      };\n\n      // add ref to subplot object (non-cartesian case)\n      if (fullLayout[subplotId]) {\n        pointData.subplot = fullLayout[subplotId]._subplot;\n      }\n      // add ref to splom scene\n      if (fullLayout._splomScenes && fullLayout._splomScenes[trace.uid]) {\n        pointData.scene = fullLayout._splomScenes[trace.uid];\n      }\n      closedataPreviousLength = hoverData.length;\n\n      // for a highlighting array, figure out what\n      // we're searching for with this element\n      if (_mode === 'array') {\n        var selection = evt[curvenum];\n        if ('pointNumber' in selection) {\n          pointData.index = selection.pointNumber;\n          _mode = 'closest';\n        } else {\n          _mode = '';\n          if ('xval' in selection) {\n            xval = selection.xval;\n            _mode = 'x';\n          }\n          if ('yval' in selection) {\n            yval = selection.yval;\n            _mode = _mode ? 'closest' : 'y';\n          }\n        }\n      } else if (customXVal !== undefined && customYVal !== undefined) {\n        xval = customXVal;\n        yval = customYVal;\n      } else {\n        xval = xvalArray[subploti];\n        yval = yvalArray[subploti];\n      }\n\n      // Now if there is range to look in, find the points to hover.\n      if (hoverdistance !== 0) {\n        if (trace._module && trace._module.hoverPoints) {\n          var newPoints = trace._module.hoverPoints(pointData, xval, yval, _mode, {\n            finiteRange: true,\n            hoverLayer: fullLayout._hoverlayer\n          });\n          if (newPoints) {\n            var newPoint;\n            for (var newPointNum = 0; newPointNum < newPoints.length; newPointNum++) {\n              newPoint = newPoints[newPointNum];\n              if (isNumeric(newPoint.x0) && isNumeric(newPoint.y0)) {\n                hoverData.push(cleanPoint(newPoint, hovermode));\n              }\n            }\n          }\n        } else {\n          Lib.log('Unrecognized trace type in hover:', trace);\n        }\n      }\n\n      // in closest mode, remove any existing (farther) points\n      // and don't look any farther than this latest point (or points, some\n      // traces like box & violin make multiple hover labels at once)\n      if (hovermode === 'closest' && hoverData.length > closedataPreviousLength) {\n        hoverData.splice(0, closedataPreviousLength);\n        distance = hoverData[0].distance;\n      }\n\n      // Now if there is range to look in, find the points to draw the spikelines\n      // Do it only if there is no hoverData\n      if (hasCartesian && spikedistance !== 0) {\n        if (hoverData.length === 0) {\n          pointData.distance = spikedistance;\n          pointData.index = false;\n          var closestPoints = trace._module.hoverPoints(pointData, xval, yval, 'closest', {\n            hoverLayer: fullLayout._hoverlayer\n          });\n          if (closestPoints) {\n            closestPoints = closestPoints.filter(function (point) {\n              // some hover points, like scatter fills, do not allow spikes,\n              // so will generate a hover point but without a valid spikeDistance\n              return point.spikeDistance <= spikedistance;\n            });\n          }\n          if (closestPoints && closestPoints.length) {\n            var tmpPoint;\n            var closestVPoints = closestPoints.filter(function (point) {\n              return point.xa.showspikes && point.xa.spikesnap !== 'hovered data';\n            });\n            if (closestVPoints.length) {\n              var closestVPt = closestVPoints[0];\n              if (isNumeric(closestVPt.x0) && isNumeric(closestVPt.y0)) {\n                tmpPoint = fillSpikePoint(closestVPt);\n                if (!spikePoints.vLinePoint || spikePoints.vLinePoint.spikeDistance > tmpPoint.spikeDistance) {\n                  spikePoints.vLinePoint = tmpPoint;\n                }\n              }\n            }\n            var closestHPoints = closestPoints.filter(function (point) {\n              return point.ya.showspikes && point.ya.spikesnap !== 'hovered data';\n            });\n            if (closestHPoints.length) {\n              var closestHPt = closestHPoints[0];\n              if (isNumeric(closestHPt.x0) && isNumeric(closestHPt.y0)) {\n                tmpPoint = fillSpikePoint(closestHPt);\n                if (!spikePoints.hLinePoint || spikePoints.hLinePoint.spikeDistance > tmpPoint.spikeDistance) {\n                  spikePoints.hLinePoint = tmpPoint;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n  findHoverPoints();\n  function selectClosestPoint(pointsData, spikedistance, spikeOnWinning) {\n    var resultPoint = null;\n    var minDistance = Infinity;\n    var thisSpikeDistance;\n    for (var i = 0; i < pointsData.length; i++) {\n      thisSpikeDistance = pointsData[i].spikeDistance;\n      if (spikeOnWinning && i === 0) thisSpikeDistance = -Infinity;\n      if (thisSpikeDistance <= minDistance && thisSpikeDistance <= spikedistance) {\n        resultPoint = pointsData[i];\n        minDistance = thisSpikeDistance;\n      }\n    }\n    return resultPoint;\n  }\n  function fillSpikePoint(point) {\n    if (!point) return null;\n    return {\n      xa: point.xa,\n      ya: point.ya,\n      x: point.xSpike !== undefined ? point.xSpike : (point.x0 + point.x1) / 2,\n      y: point.ySpike !== undefined ? point.ySpike : (point.y0 + point.y1) / 2,\n      distance: point.distance,\n      spikeDistance: point.spikeDistance,\n      curveNumber: point.trace.index,\n      color: point.color,\n      pointNumber: point.index\n    };\n  }\n  var spikelineOpts = {\n    fullLayout: fullLayout,\n    container: fullLayout._hoverlayer,\n    event: evt\n  };\n  var oldspikepoints = gd._spikepoints;\n  var newspikepoints = {\n    vLinePoint: spikePoints.vLinePoint,\n    hLinePoint: spikePoints.hLinePoint\n  };\n  gd._spikepoints = newspikepoints;\n  var sortHoverData = function () {\n    hoverData.sort(function (d1, d2) {\n      return d1.distance - d2.distance;\n    });\n\n    // move period positioned points and box/bar-like traces to the end of the list\n    hoverData = orderRangePoints(hoverData, hovermode);\n  };\n  sortHoverData();\n  var axLetter = hovermode.charAt(0);\n  var spikeOnWinning = (axLetter === 'x' || axLetter === 'y') && hoverData[0] && cartesianScatterPoints[hoverData[0].trace.type];\n\n  // Now if it is not restricted by spikedistance option, set the points to draw the spikelines\n  if (hasCartesian && spikedistance !== 0) {\n    if (hoverData.length !== 0) {\n      var tmpHPointData = hoverData.filter(function (point) {\n        return point.ya.showspikes;\n      });\n      var tmpHPoint = selectClosestPoint(tmpHPointData, spikedistance, spikeOnWinning);\n      spikePoints.hLinePoint = fillSpikePoint(tmpHPoint);\n      var tmpVPointData = hoverData.filter(function (point) {\n        return point.xa.showspikes;\n      });\n      var tmpVPoint = selectClosestPoint(tmpVPointData, spikedistance, spikeOnWinning);\n      spikePoints.vLinePoint = fillSpikePoint(tmpVPoint);\n    }\n  }\n\n  // if hoverData is empty check for the spikes to draw and quit if there are none\n  if (hoverData.length === 0) {\n    var result = dragElement.unhoverRaw(gd, evt);\n    if (hasCartesian && (spikePoints.hLinePoint !== null || spikePoints.vLinePoint !== null)) {\n      if (spikesChanged(oldspikepoints)) {\n        createSpikelines(gd, spikePoints, spikelineOpts);\n      }\n    }\n    return result;\n  }\n  if (hasCartesian) {\n    if (spikesChanged(oldspikepoints)) {\n      createSpikelines(gd, spikePoints, spikelineOpts);\n    }\n  }\n  if (helpers.isXYhover(_mode) && hoverData[0].length !== 0 && hoverData[0].trace.type !== 'splom' // TODO: add support for splom\n  ) {\n    // pick winning point\n    var winningPoint = hoverData[0];\n    // discard other points\n    if (multipleHoverPoints[winningPoint.trace.type]) {\n      hoverData = hoverData.filter(function (d) {\n        return d.trace.index === winningPoint.trace.index;\n      });\n    } else {\n      hoverData = [winningPoint];\n    }\n    var initLen = hoverData.length;\n    var winX = getCoord('x', winningPoint, fullLayout);\n    var winY = getCoord('y', winningPoint, fullLayout);\n\n    // in compare mode, select every point at position\n    findHoverPoints(winX, winY);\n    var finalPoints = [];\n    var seen = {};\n    var id = 0;\n    var insert = function (newHd) {\n      var key = multipleHoverPoints[newHd.trace.type] ? hoverDataKey(newHd) : newHd.trace.index;\n      if (!seen[key]) {\n        id++;\n        seen[key] = id;\n        finalPoints.push(newHd);\n      } else {\n        var oldId = seen[key] - 1;\n        var oldHd = finalPoints[oldId];\n        if (oldId > 0 && Math.abs(newHd.distance) < Math.abs(oldHd.distance)) {\n          // replace with closest\n          finalPoints[oldId] = newHd;\n        }\n      }\n    };\n    var k;\n    // insert the winnig point(s) first\n    for (k = 0; k < initLen; k++) {\n      insert(hoverData[k]);\n    }\n    // override from the end\n    for (k = hoverData.length - 1; k > initLen - 1; k--) {\n      insert(hoverData[k]);\n    }\n    hoverData = finalPoints;\n    sortHoverData();\n  }\n\n  // lastly, emit custom hover/unhover events\n  var oldhoverdata = gd._hoverdata;\n  var newhoverdata = [];\n  var gTop = getTopOffset(gd);\n  var gLeft = getLeftOffset(gd);\n\n  // pull out just the data that's useful to\n  // other people and send it to the event\n  for (itemnum = 0; itemnum < hoverData.length; itemnum++) {\n    var pt = hoverData[itemnum];\n    var eventData = helpers.makeEventData(pt, pt.trace, pt.cd);\n    if (pt.hovertemplate !== false) {\n      var ht = false;\n      if (pt.cd[pt.index] && pt.cd[pt.index].ht) {\n        ht = pt.cd[pt.index].ht;\n      }\n      pt.hovertemplate = ht || pt.trace.hovertemplate || false;\n    }\n    if (pt.xa && pt.ya) {\n      var _x0 = pt.x0 + pt.xa._offset;\n      var _x1 = pt.x1 + pt.xa._offset;\n      var _y0 = pt.y0 + pt.ya._offset;\n      var _y1 = pt.y1 + pt.ya._offset;\n      var x0 = Math.min(_x0, _x1);\n      var x1 = Math.max(_x0, _x1);\n      var y0 = Math.min(_y0, _y1);\n      var y1 = Math.max(_y0, _y1);\n      eventData.bbox = {\n        x0: x0 + gLeft,\n        x1: x1 + gLeft,\n        y0: y0 + gTop,\n        y1: y1 + gTop\n      };\n    }\n    pt.eventData = [eventData];\n    newhoverdata.push(eventData);\n  }\n  gd._hoverdata = newhoverdata;\n  var rotateLabels = hovermode === 'y' && (searchData.length > 1 || hoverData.length > 1) || hovermode === 'closest' && hasOneHorizontalTrace && hoverData.length > 1;\n  var bgColor = Color.combine(fullLayout.plot_bgcolor || Color.background, fullLayout.paper_bgcolor);\n  var hoverLabels = createHoverText(hoverData, {\n    gd: gd,\n    hovermode: hovermode,\n    rotateLabels: rotateLabels,\n    bgColor: bgColor,\n    container: fullLayout._hoverlayer,\n    outerContainer: fullLayout._paper.node(),\n    commonLabelOpts: fullLayout.hoverlabel,\n    hoverdistance: fullLayout.hoverdistance\n  });\n  if (!helpers.isUnifiedHover(hovermode)) {\n    hoverAvoidOverlaps(hoverLabels, rotateLabels ? 'xa' : 'ya', fullLayout);\n    alignHoverText(hoverLabels, rotateLabels, fullLayout._invScaleX, fullLayout._invScaleY);\n  } // TODO: tagName hack is needed to appease geo.js's hack of using eventTarget=true\n  // we should improve the \"fx\" API so other plots can use it without these hack.\n  if (eventTarget && eventTarget.tagName) {\n    var hasClickToShow = Registry.getComponentMethod('annotations', 'hasClickToShow')(gd, newhoverdata);\n    overrideCursor(d3.select(eventTarget), hasClickToShow ? 'pointer' : '');\n  }\n\n  // don't emit events if called manually\n  if (!eventTarget || noHoverEvent || !hoverChanged(gd, evt, oldhoverdata)) return;\n  if (oldhoverdata) {\n    gd.emit('plotly_unhover', {\n      event: evt,\n      points: oldhoverdata\n    });\n  }\n  gd.emit('plotly_hover', {\n    event: evt,\n    points: gd._hoverdata,\n    xaxes: xaArray,\n    yaxes: yaArray,\n    xvals: xvalArray,\n    yvals: yvalArray\n  });\n}\nfunction hoverDataKey(d) {\n  return [d.trace.index, d.index, d.x0, d.y0, d.name, d.attr, d.xa ? d.xa._id : '', d.ya ? d.ya._id : ''].join(',');\n}\nvar EXTRA_STRING_REGEX = /<extra>([\\s\\S]*)<\\/extra>/;\nfunction createHoverText(hoverData, opts) {\n  var gd = opts.gd;\n  var fullLayout = gd._fullLayout;\n  var hovermode = opts.hovermode;\n  var rotateLabels = opts.rotateLabels;\n  var bgColor = opts.bgColor;\n  var container = opts.container;\n  var outerContainer = opts.outerContainer;\n  var commonLabelOpts = opts.commonLabelOpts || {};\n  // Early exit if no labels are drawn\n  if (hoverData.length === 0) return [[]];\n\n  // opts.fontFamily/Size are used for the common label\n  // and as defaults for each hover label, though the individual labels\n  // can override this.\n  var fontFamily = opts.fontFamily || constants.HOVERFONT;\n  var fontSize = opts.fontSize || constants.HOVERFONTSIZE;\n  var c0 = hoverData[0];\n  var xa = c0.xa;\n  var ya = c0.ya;\n  var axLetter = hovermode.charAt(0);\n  var axLabel = axLetter + 'Label';\n  var t0 = c0[axLabel];\n\n  // search in array for the label\n  if (t0 === undefined && xa.type === 'multicategory') {\n    for (var q = 0; q < hoverData.length; q++) {\n      t0 = hoverData[q][axLabel];\n      if (t0 !== undefined) break;\n    }\n  }\n  var outerContainerBB = getBoundingClientRect(gd, outerContainer);\n  var outerTop = outerContainerBB.top;\n  var outerWidth = outerContainerBB.width;\n  var outerHeight = outerContainerBB.height;\n\n  // show the common label, if any, on the axis\n  // never show a common label in array mode,\n  // even if sometimes there could be one\n  var showCommonLabel = t0 !== undefined && c0.distance <= opts.hoverdistance && (hovermode === 'x' || hovermode === 'y');\n\n  // all hover traces hoverinfo must contain the hovermode\n  // to have common labels\n  if (showCommonLabel) {\n    var allHaveZ = true;\n    var i, traceHoverinfo;\n    for (i = 0; i < hoverData.length; i++) {\n      if (allHaveZ && hoverData[i].zLabel === undefined) allHaveZ = false;\n      traceHoverinfo = hoverData[i].hoverinfo || hoverData[i].trace.hoverinfo;\n      if (traceHoverinfo) {\n        var parts = Array.isArray(traceHoverinfo) ? traceHoverinfo : traceHoverinfo.split('+');\n        if (parts.indexOf('all') === -1 && parts.indexOf(hovermode) === -1) {\n          showCommonLabel = false;\n          break;\n        }\n      }\n    }\n\n    // xyz labels put all info in their main label, so have no need of a common label\n    if (allHaveZ) showCommonLabel = false;\n  }\n  var commonLabel = container.selectAll('g.axistext').data(showCommonLabel ? [0] : []);\n  commonLabel.enter().append('g').classed('axistext', true);\n  commonLabel.exit().remove();\n  commonLabel.each(function () {\n    var label = d3.select(this);\n    var lpath = Lib.ensureSingle(label, 'path', '', function (s) {\n      s.style({\n        'stroke-width': '1px'\n      });\n    });\n    var ltext = Lib.ensureSingle(label, 'text', '', function (s) {\n      // prohibit tex interpretation until we can handle\n      // tex and regular text together\n      s.attr('data-notex', 1);\n    });\n    var commonBgColor = commonLabelOpts.bgcolor || Color.defaultLine;\n    var commonStroke = commonLabelOpts.bordercolor || Color.contrast(commonBgColor);\n    var contrastColor = Color.contrast(commonBgColor);\n    var commonLabelFont = {\n      family: commonLabelOpts.font.family || fontFamily,\n      size: commonLabelOpts.font.size || fontSize,\n      color: commonLabelOpts.font.color || contrastColor\n    };\n    lpath.style({\n      fill: commonBgColor,\n      stroke: commonStroke\n    });\n    ltext.text(t0).call(Drawing.font, commonLabelFont).call(svgTextUtils.positionText, 0, 0).call(svgTextUtils.convertToTspans, gd);\n    label.attr('transform', '');\n    var tbb = getBoundingClientRect(gd, ltext.node());\n    var lx, ly;\n    if (hovermode === 'x') {\n      var topsign = xa.side === 'top' ? '-' : '';\n      ltext.attr('text-anchor', 'middle').call(svgTextUtils.positionText, 0, xa.side === 'top' ? outerTop - tbb.bottom - HOVERARROWSIZE - HOVERTEXTPAD : outerTop - tbb.top + HOVERARROWSIZE + HOVERTEXTPAD);\n      lx = xa._offset + (c0.x0 + c0.x1) / 2;\n      ly = ya._offset + (xa.side === 'top' ? 0 : ya._length);\n      var halfWidth = tbb.width / 2 + HOVERTEXTPAD;\n      if (lx < halfWidth) {\n        lx = halfWidth;\n        lpath.attr('d', 'M-' + (halfWidth - HOVERARROWSIZE) + ',0' + 'L-' + (halfWidth - HOVERARROWSIZE * 2) + ',' + topsign + HOVERARROWSIZE + 'H' + (HOVERTEXTPAD + tbb.width / 2) + 'v' + topsign + (HOVERTEXTPAD * 2 + tbb.height) + 'H-' + halfWidth + 'V' + topsign + HOVERARROWSIZE + 'Z');\n      } else if (lx > fullLayout.width - halfWidth) {\n        lx = fullLayout.width - halfWidth;\n        lpath.attr('d', 'M' + (halfWidth - HOVERARROWSIZE) + ',0' + 'L' + halfWidth + ',' + topsign + HOVERARROWSIZE + 'v' + topsign + (HOVERTEXTPAD * 2 + tbb.height) + 'H-' + halfWidth + 'V' + topsign + HOVERARROWSIZE + 'H' + (halfWidth - HOVERARROWSIZE * 2) + 'Z');\n      } else {\n        lpath.attr('d', 'M0,0' + 'L' + HOVERARROWSIZE + ',' + topsign + HOVERARROWSIZE + 'H' + (HOVERTEXTPAD + tbb.width / 2) + 'v' + topsign + (HOVERTEXTPAD * 2 + tbb.height) + 'H-' + (HOVERTEXTPAD + tbb.width / 2) + 'V' + topsign + HOVERARROWSIZE + 'H-' + HOVERARROWSIZE + 'Z');\n      }\n    } else {\n      var anchor;\n      var sgn;\n      var leftsign;\n      if (ya.side === 'right') {\n        anchor = 'start';\n        sgn = 1;\n        leftsign = '';\n        lx = xa._offset + xa._length;\n      } else {\n        anchor = 'end';\n        sgn = -1;\n        leftsign = '-';\n        lx = xa._offset;\n      }\n      ly = ya._offset + (c0.y0 + c0.y1) / 2;\n      ltext.attr('text-anchor', anchor);\n      lpath.attr('d', 'M0,0' + 'L' + leftsign + HOVERARROWSIZE + ',' + HOVERARROWSIZE + 'V' + (HOVERTEXTPAD + tbb.height / 2) + 'h' + leftsign + (HOVERTEXTPAD * 2 + tbb.width) + 'V-' + (HOVERTEXTPAD + tbb.height / 2) + 'H' + leftsign + HOVERARROWSIZE + 'V-' + HOVERARROWSIZE + 'Z');\n      var halfHeight = tbb.height / 2;\n      var lty = outerTop - tbb.top - halfHeight;\n      var clipId = 'clip' + fullLayout._uid + 'commonlabel' + ya._id;\n      var clipPath;\n      if (lx < tbb.width + 2 * HOVERTEXTPAD + HOVERARROWSIZE) {\n        clipPath = 'M-' + (HOVERARROWSIZE + HOVERTEXTPAD) + '-' + halfHeight + 'h-' + (tbb.width - HOVERTEXTPAD) + 'V' + halfHeight + 'h' + (tbb.width - HOVERTEXTPAD) + 'Z';\n        var ltx = tbb.width - lx + HOVERTEXTPAD;\n        svgTextUtils.positionText(ltext, ltx, lty);\n\n        // shift each line (except the longest) so that start-of-line\n        // is always visible\n        if (anchor === 'end') {\n          ltext.selectAll('tspan').each(function () {\n            var s = d3.select(this);\n            var dummy = Drawing.tester.append('text').text(s.text()).call(Drawing.font, commonLabelFont);\n            var dummyBB = getBoundingClientRect(gd, dummy.node());\n            if (Math.round(dummyBB.width) < Math.round(tbb.width)) {\n              s.attr('x', ltx - dummyBB.width);\n            }\n            dummy.remove();\n          });\n        }\n      } else {\n        svgTextUtils.positionText(ltext, sgn * (HOVERTEXTPAD + HOVERARROWSIZE), lty);\n        clipPath = null;\n      }\n      var textClip = fullLayout._topclips.selectAll('#' + clipId).data(clipPath ? [0] : []);\n      textClip.enter().append('clipPath').attr('id', clipId).append('path');\n      textClip.exit().remove();\n      textClip.select('path').attr('d', clipPath);\n      Drawing.setClipUrl(ltext, clipPath ? clipId : null, gd);\n    }\n    label.attr('transform', strTranslate(lx, ly));\n  });\n\n  // Show a single hover label\n  if (helpers.isUnifiedHover(hovermode)) {\n    // Delete leftover hover labels from other hovermodes\n    container.selectAll('g.hovertext').remove();\n    var groupedHoverData = hoverData.filter(function (data) {\n      return data.hoverinfo !== 'none';\n    });\n    // Return early if nothing is hovered on\n    if (groupedHoverData.length === 0) return;\n\n    // mock legend\n    var hoverlabel = fullLayout.hoverlabel;\n    var font = hoverlabel.font;\n    var mockLayoutIn = {\n      showlegend: true,\n      legend: {\n        title: {\n          text: t0,\n          font: font\n        },\n        font: font,\n        bgcolor: hoverlabel.bgcolor,\n        bordercolor: hoverlabel.bordercolor,\n        borderwidth: 1,\n        tracegroupgap: 7,\n        traceorder: fullLayout.legend ? fullLayout.legend.traceorder : undefined,\n        orientation: 'v'\n      }\n    };\n    var mockLayoutOut = {\n      font: font\n    };\n    legendSupplyDefaults(mockLayoutIn, mockLayoutOut, gd._fullData);\n    var mockLegend = mockLayoutOut.legend;\n\n    // prepare items for the legend\n    mockLegend.entries = [];\n    for (var j = 0; j < groupedHoverData.length; j++) {\n      var pt = groupedHoverData[j];\n      if (pt.hoverinfo === 'none') continue;\n      var texts = getHoverLabelText(pt, true, hovermode, fullLayout, t0);\n      var text = texts[0];\n      var name = texts[1];\n      pt.name = name;\n      if (name !== '') {\n        pt.text = name + ' : ' + text;\n      } else {\n        pt.text = text;\n      }\n\n      // pass through marker's calcdata to style legend items\n      var cd = pt.cd[pt.index];\n      if (cd) {\n        if (cd.mc) pt.mc = cd.mc;\n        if (cd.mcc) pt.mc = cd.mcc;\n        if (cd.mlc) pt.mlc = cd.mlc;\n        if (cd.mlcc) pt.mlc = cd.mlcc;\n        if (cd.mlw) pt.mlw = cd.mlw;\n        if (cd.mrc) pt.mrc = cd.mrc;\n        if (cd.dir) pt.dir = cd.dir;\n      }\n      pt._distinct = true;\n      mockLegend.entries.push([pt]);\n    }\n    mockLegend.entries.sort(function (a, b) {\n      return a[0].trace.index - b[0].trace.index;\n    });\n    mockLegend.layer = container;\n\n    // Draw unified hover label\n    mockLegend._inHover = true;\n    mockLegend._groupTitleFont = hoverlabel.grouptitlefont;\n    legendDraw(gd, mockLegend);\n\n    // Position the hover\n    var legendContainer = container.select('g.legend');\n    var tbb = getBoundingClientRect(gd, legendContainer.node());\n    var tWidth = tbb.width + 2 * HOVERTEXTPAD;\n    var tHeight = tbb.height + 2 * HOVERTEXTPAD;\n    var winningPoint = groupedHoverData[0];\n    var avgX = (winningPoint.x0 + winningPoint.x1) / 2;\n    var avgY = (winningPoint.y0 + winningPoint.y1) / 2;\n    // When a scatter (or e.g. heatmap) point wins, it's OK for the hovelabel to occlude the bar and other points.\n    var pointWon = !(Registry.traceIs(winningPoint.trace, 'bar-like') || Registry.traceIs(winningPoint.trace, 'box-violin'));\n    var lyBottom, lyTop;\n    if (axLetter === 'y') {\n      if (pointWon) {\n        lyTop = avgY - HOVERTEXTPAD;\n        lyBottom = avgY + HOVERTEXTPAD;\n      } else {\n        lyTop = Math.min.apply(null, groupedHoverData.map(function (c) {\n          return Math.min(c.y0, c.y1);\n        }));\n        lyBottom = Math.max.apply(null, groupedHoverData.map(function (c) {\n          return Math.max(c.y0, c.y1);\n        }));\n      }\n    } else {\n      lyTop = lyBottom = Lib.mean(groupedHoverData.map(function (c) {\n        return (c.y0 + c.y1) / 2;\n      })) - tHeight / 2;\n    }\n    var lxRight, lxLeft;\n    if (axLetter === 'x') {\n      if (pointWon) {\n        lxRight = avgX + HOVERTEXTPAD;\n        lxLeft = avgX - HOVERTEXTPAD;\n      } else {\n        lxRight = Math.max.apply(null, groupedHoverData.map(function (c) {\n          return Math.max(c.x0, c.x1);\n        }));\n        lxLeft = Math.min.apply(null, groupedHoverData.map(function (c) {\n          return Math.min(c.x0, c.x1);\n        }));\n      }\n    } else {\n      lxRight = lxLeft = Lib.mean(groupedHoverData.map(function (c) {\n        return (c.x0 + c.x1) / 2;\n      })) - tWidth / 2;\n    }\n    var xOffset = xa._offset;\n    var yOffset = ya._offset;\n    lyBottom += yOffset;\n    lxRight += xOffset;\n    lxLeft += xOffset - tWidth;\n    lyTop += yOffset - tHeight;\n    var lx, ly; // top and left positions of the hover box\n\n    // horizontal alignment to end up on screen\n    if (lxRight + tWidth < outerWidth && lxRight >= 0) {\n      lx = lxRight;\n    } else if (lxLeft + tWidth < outerWidth && lxLeft >= 0) {\n      lx = lxLeft;\n    } else if (xOffset + tWidth < outerWidth) {\n      lx = xOffset; // subplot left corner\n    } else {\n      // closest left or right side of the paper\n      if (lxRight - avgX < avgX - lxLeft + tWidth) {\n        lx = outerWidth - tWidth;\n      } else {\n        lx = 0;\n      }\n    }\n    lx += HOVERTEXTPAD;\n\n    // vertical alignement to end up on screen\n    if (lyBottom + tHeight < outerHeight && lyBottom >= 0) {\n      ly = lyBottom;\n    } else if (lyTop + tHeight < outerHeight && lyTop >= 0) {\n      ly = lyTop;\n    } else if (yOffset + tHeight < outerHeight) {\n      ly = yOffset; // subplot top corner\n    } else {\n      // closest top or bottom side of the paper\n      if (lyBottom - avgY < avgY - lyTop + tHeight) {\n        ly = outerHeight - tHeight;\n      } else {\n        ly = 0;\n      }\n    }\n    ly += HOVERTEXTPAD;\n    legendContainer.attr('transform', strTranslate(lx - 1, ly - 1));\n    return legendContainer;\n  }\n\n  // show all the individual labels\n\n  // first create the objects\n  var hoverLabels = container.selectAll('g.hovertext').data(hoverData, function (d) {\n    // N.B. when multiple items have the same result key-function value,\n    // only the first of those items in hoverData gets rendered\n    return hoverDataKey(d);\n  });\n  hoverLabels.enter().append('g').classed('hovertext', true).each(function () {\n    var g = d3.select(this);\n    // trace name label (rect and text.name)\n    g.append('rect').call(Color.fill, Color.addOpacity(bgColor, 0.8));\n    g.append('text').classed('name', true);\n    // trace data label (path and text.nums)\n    g.append('path').style('stroke-width', '1px');\n    g.append('text').classed('nums', true).call(Drawing.font, fontFamily, fontSize);\n  });\n  hoverLabels.exit().remove();\n\n  // then put the text in, position the pointer to the data,\n  // and figure out sizes\n  hoverLabels.each(function (d) {\n    var g = d3.select(this).attr('transform', '');\n    var dColor = d.color;\n    if (Array.isArray(dColor)) {\n      dColor = dColor[d.eventData[0].pointNumber];\n    }\n\n    // combine possible non-opaque trace color with bgColor\n    var color0 = d.bgcolor || dColor;\n    // color for 'nums' part of the label\n    var numsColor = Color.combine(Color.opacity(color0) ? color0 : Color.defaultLine, bgColor);\n    // color for 'name' part of the label\n    var nameColor = Color.combine(Color.opacity(dColor) ? dColor : Color.defaultLine, bgColor);\n    // find a contrasting color for border and text\n    var contrastColor = d.borderColor || Color.contrast(numsColor);\n    var texts = getHoverLabelText(d, showCommonLabel, hovermode, fullLayout, t0, g);\n    var text = texts[0];\n    var name = texts[1];\n\n    // main label\n    var tx = g.select('text.nums').call(Drawing.font, d.fontFamily || fontFamily, d.fontSize || fontSize, d.fontColor || contrastColor).text(text).attr('data-notex', 1).call(svgTextUtils.positionText, 0, 0).call(svgTextUtils.convertToTspans, gd);\n    var tx2 = g.select('text.name');\n    var tx2width = 0;\n    var tx2height = 0;\n\n    // secondary label for non-empty 'name'\n    if (name && name !== text) {\n      tx2.call(Drawing.font, d.fontFamily || fontFamily, d.fontSize || fontSize, nameColor).text(name).attr('data-notex', 1).call(svgTextUtils.positionText, 0, 0).call(svgTextUtils.convertToTspans, gd);\n      var t2bb = getBoundingClientRect(gd, tx2.node());\n      tx2width = t2bb.width + 2 * HOVERTEXTPAD;\n      tx2height = t2bb.height + 2 * HOVERTEXTPAD;\n    } else {\n      tx2.remove();\n      g.select('rect').remove();\n    }\n    g.select('path').style({\n      fill: numsColor,\n      stroke: contrastColor\n    });\n    var htx = d.xa._offset + (d.x0 + d.x1) / 2;\n    var hty = d.ya._offset + (d.y0 + d.y1) / 2;\n    var dx = Math.abs(d.x1 - d.x0);\n    var dy = Math.abs(d.y1 - d.y0);\n    var tbb = getBoundingClientRect(gd, tx.node());\n    var tbbWidth = tbb.width / fullLayout._invScaleX;\n    var tbbHeight = tbb.height / fullLayout._invScaleY;\n    d.ty0 = (outerTop - tbb.top) / fullLayout._invScaleY;\n    d.bx = tbbWidth + 2 * HOVERTEXTPAD;\n    d.by = Math.max(tbbHeight + 2 * HOVERTEXTPAD, tx2height);\n    d.anchor = 'start';\n    d.txwidth = tbbWidth;\n    d.tx2width = tx2width;\n    d.offset = 0;\n    var txTotalWidth = (tbbWidth + HOVERARROWSIZE + HOVERTEXTPAD + tx2width) * fullLayout._invScaleX;\n    var anchorStartOK, anchorEndOK;\n    if (rotateLabels) {\n      d.pos = htx;\n      anchorStartOK = hty + dy / 2 + txTotalWidth <= outerHeight;\n      anchorEndOK = hty - dy / 2 - txTotalWidth >= 0;\n      if ((d.idealAlign === 'top' || !anchorStartOK) && anchorEndOK) {\n        hty -= dy / 2;\n        d.anchor = 'end';\n      } else if (anchorStartOK) {\n        hty += dy / 2;\n        d.anchor = 'start';\n      } else d.anchor = 'middle';\n    } else {\n      d.pos = hty;\n      anchorStartOK = htx + dx / 2 + txTotalWidth <= outerWidth;\n      anchorEndOK = htx - dx / 2 - txTotalWidth >= 0;\n      if ((d.idealAlign === 'left' || !anchorStartOK) && anchorEndOK) {\n        htx -= dx / 2;\n        d.anchor = 'end';\n      } else if (anchorStartOK) {\n        htx += dx / 2;\n        d.anchor = 'start';\n      } else {\n        d.anchor = 'middle';\n        var txHalfWidth = txTotalWidth / 2;\n        var overflowR = htx + txHalfWidth - outerWidth;\n        var overflowL = htx - txHalfWidth;\n        if (overflowR > 0) htx -= overflowR;\n        if (overflowL < 0) htx += -overflowL;\n      }\n    }\n    tx.attr('text-anchor', d.anchor);\n    if (tx2width) tx2.attr('text-anchor', d.anchor);\n    g.attr('transform', strTranslate(htx, hty) + (rotateLabels ? strRotate(YANGLE) : ''));\n  });\n  return hoverLabels;\n}\nfunction getHoverLabelText(d, showCommonLabel, hovermode, fullLayout, t0, g) {\n  var name = '';\n  var text = '';\n  // to get custom 'name' labels pass cleanPoint\n  if (d.nameOverride !== undefined) d.name = d.nameOverride;\n  if (d.name) {\n    if (d.trace._meta) {\n      d.name = Lib.templateString(d.name, d.trace._meta);\n    }\n    name = plainText(d.name, d.nameLength);\n  }\n  var h0 = hovermode.charAt(0);\n  var h1 = h0 === 'x' ? 'y' : 'x';\n  if (d.zLabel !== undefined) {\n    if (d.xLabel !== undefined) text += 'x: ' + d.xLabel + '<br>';\n    if (d.yLabel !== undefined) text += 'y: ' + d.yLabel + '<br>';\n    if (d.trace.type !== 'choropleth' && d.trace.type !== 'choroplethmapbox') {\n      text += (text ? 'z: ' : '') + d.zLabel;\n    }\n  } else if (showCommonLabel && d[h0 + 'Label'] === t0) {\n    text = d[h1 + 'Label'] || '';\n  } else if (d.xLabel === undefined) {\n    if (d.yLabel !== undefined && d.trace.type !== 'scattercarpet') {\n      text = d.yLabel;\n    }\n  } else if (d.yLabel === undefined) text = d.xLabel;else text = '(' + d.xLabel + ', ' + d.yLabel + ')';\n  if ((d.text || d.text === 0) && !Array.isArray(d.text)) {\n    text += (text ? '<br>' : '') + d.text;\n  }\n\n  // used by other modules (initially just ternary) that\n  // manage their own hoverinfo independent of cleanPoint\n  // the rest of this will still apply, so such modules\n  // can still put things in (x|y|z)Label, text, and name\n  // and hoverinfo will still determine their visibility\n  if (d.extraText !== undefined) text += (text ? '<br>' : '') + d.extraText;\n\n  // if 'text' is empty at this point,\n  // and hovertemplate is not defined,\n  // put 'name' in main label and don't show secondary label\n  if (g && text === '' && !d.hovertemplate) {\n    // if 'name' is also empty, remove entire label\n    if (name === '') g.remove();\n    text = name;\n  }\n\n  // hovertemplate\n  var hovertemplate = d.hovertemplate || false;\n  if (hovertemplate) {\n    var labels = d.hovertemplateLabels || d;\n    if (d[h0 + 'Label'] !== t0) {\n      labels[h0 + 'other'] = labels[h0 + 'Val'];\n      labels[h0 + 'otherLabel'] = labels[h0 + 'Label'];\n    }\n    text = Lib.hovertemplateString(hovertemplate, labels, fullLayout._d3locale, d.eventData[0] || {}, d.trace._meta);\n    text = text.replace(EXTRA_STRING_REGEX, function (match, extra) {\n      // assign name for secondary text label\n      name = plainText(extra, d.nameLength);\n      // remove from main text label\n      return '';\n    });\n  }\n  return [text, name];\n}\n\n// Make groups of touching points, and within each group\n// move each point so that no labels overlap, but the average\n// label position is the same as it was before moving. Incidentally,\n// this is equivalent to saying all the labels are on equal linear\n// springs about their initial position. Initially, each point is\n// its own group, but as we find overlaps we will clump the points.\n//\n// Also, there are hard constraints at the edges of the graphs,\n// that push all groups to the middle so they are visible. I don't\n// know what happens if the group spans all the way from one edge to\n// the other, though it hardly matters - there's just too much\n// information then.\nfunction hoverAvoidOverlaps(hoverLabels, axKey, fullLayout) {\n  var nummoves = 0;\n  var axSign = 1;\n  var nLabels = hoverLabels.size();\n\n  // make groups of touching points\n  var pointgroups = new Array(nLabels);\n  var k = 0;\n  hoverLabels.each(function (d) {\n    var ax = d[axKey];\n    var axIsX = ax._id.charAt(0) === 'x';\n    var rng = ax.range;\n    if (k === 0 && rng && rng[0] > rng[1] !== axIsX) {\n      axSign = -1;\n    }\n    pointgroups[k++] = [{\n      datum: d,\n      traceIndex: d.trace.index,\n      dp: 0,\n      pos: d.pos,\n      posref: d.posref,\n      size: d.by * (axIsX ? YFACTOR : 1) / 2,\n      pmin: 0,\n      pmax: axIsX ? fullLayout.width : fullLayout.height\n    }];\n  });\n  pointgroups.sort(function (a, b) {\n    return a[0].posref - b[0].posref ||\n    // for equal positions, sort trace indices increasing or decreasing\n    // depending on whether the axis is reversed or not... so stacked\n    // traces will generally keep their order even if one trace adds\n    // nothing to the stack.\n    axSign * (b[0].traceIndex - a[0].traceIndex);\n  });\n  var donepositioning, topOverlap, bottomOverlap, i, j, pti, sumdp;\n  function constrainGroup(grp) {\n    var minPt = grp[0];\n    var maxPt = grp[grp.length - 1];\n\n    // overlap with the top - positive vals are overlaps\n    topOverlap = minPt.pmin - minPt.pos - minPt.dp + minPt.size;\n\n    // overlap with the bottom - positive vals are overlaps\n    bottomOverlap = maxPt.pos + maxPt.dp + maxPt.size - minPt.pmax;\n\n    // check for min overlap first, so that we always\n    // see the largest labels\n    // allow for .01px overlap, so we don't get an\n    // infinite loop from rounding errors\n    if (topOverlap > 0.01) {\n      for (j = grp.length - 1; j >= 0; j--) grp[j].dp += topOverlap;\n      donepositioning = false;\n    }\n    if (bottomOverlap < 0.01) return;\n    if (topOverlap < -0.01) {\n      // make sure we're not pushing back and forth\n      for (j = grp.length - 1; j >= 0; j--) grp[j].dp -= bottomOverlap;\n      donepositioning = false;\n    }\n    if (!donepositioning) return;\n\n    // no room to fix positioning, delete off-screen points\n\n    // first see how many points we need to delete\n    var deleteCount = 0;\n    for (i = 0; i < grp.length; i++) {\n      pti = grp[i];\n      if (pti.pos + pti.dp + pti.size > minPt.pmax) deleteCount++;\n    }\n\n    // start by deleting points whose data is off screen\n    for (i = grp.length - 1; i >= 0; i--) {\n      if (deleteCount <= 0) break;\n      pti = grp[i];\n\n      // pos has already been constrained to [pmin,pmax]\n      // so look for points close to that to delete\n      if (pti.pos > minPt.pmax - 1) {\n        pti.del = true;\n        deleteCount--;\n      }\n    }\n    for (i = 0; i < grp.length; i++) {\n      if (deleteCount <= 0) break;\n      pti = grp[i];\n\n      // pos has already been constrained to [pmin,pmax]\n      // so look for points close to that to delete\n      if (pti.pos < minPt.pmin + 1) {\n        pti.del = true;\n        deleteCount--;\n\n        // shift the whole group minus into this new space\n        bottomOverlap = pti.size * 2;\n        for (j = grp.length - 1; j >= 0; j--) grp[j].dp -= bottomOverlap;\n      }\n    }\n    // then delete points that go off the bottom\n    for (i = grp.length - 1; i >= 0; i--) {\n      if (deleteCount <= 0) break;\n      pti = grp[i];\n      if (pti.pos + pti.dp + pti.size > minPt.pmax) {\n        pti.del = true;\n        deleteCount--;\n      }\n    }\n  }\n\n  // loop through groups, combining them if they overlap,\n  // until nothing moves\n  while (!donepositioning && nummoves <= nLabels) {\n    // to avoid infinite loops, don't move more times\n    // than there are traces\n    nummoves++;\n\n    // assume nothing will move in this iteration,\n    // reverse this if it does\n    donepositioning = true;\n    i = 0;\n    while (i < pointgroups.length - 1) {\n      // the higher (g0) and lower (g1) point group\n      var g0 = pointgroups[i];\n      var g1 = pointgroups[i + 1];\n\n      // the lowest point in the higher group (p0)\n      // the highest point in the lower group (p1)\n      var p0 = g0[g0.length - 1];\n      var p1 = g1[0];\n      topOverlap = p0.pos + p0.dp + p0.size - p1.pos - p1.dp + p1.size;\n\n      // Only group points that lie on the same axes\n      if (topOverlap > 0.01 && p0.pmin === p1.pmin && p0.pmax === p1.pmax) {\n        // push the new point(s) added to this group out of the way\n        for (j = g1.length - 1; j >= 0; j--) g1[j].dp += topOverlap;\n\n        // add them to the group\n        g0.push.apply(g0, g1);\n        pointgroups.splice(i + 1, 1);\n\n        // adjust for minimum average movement\n        sumdp = 0;\n        for (j = g0.length - 1; j >= 0; j--) sumdp += g0[j].dp;\n        bottomOverlap = sumdp / g0.length;\n        for (j = g0.length - 1; j >= 0; j--) g0[j].dp -= bottomOverlap;\n        donepositioning = false;\n      } else i++;\n    }\n\n    // check if we're going off the plot on either side and fix\n    pointgroups.forEach(constrainGroup);\n  }\n\n  // now put these offsets into hoverData\n  for (i = pointgroups.length - 1; i >= 0; i--) {\n    var grp = pointgroups[i];\n    for (j = grp.length - 1; j >= 0; j--) {\n      var pt = grp[j];\n      var hoverPt = pt.datum;\n      hoverPt.offset = pt.dp;\n      hoverPt.del = pt.del;\n    }\n  }\n}\nfunction alignHoverText(hoverLabels, rotateLabels, scaleX, scaleY) {\n  var pX = function (x) {\n    return x * scaleX;\n  };\n  var pY = function (y) {\n    return y * scaleY;\n  };\n\n  // finally set the text positioning relative to the data and draw the\n  // box around it\n  hoverLabels.each(function (d) {\n    var g = d3.select(this);\n    if (d.del) return g.remove();\n    var tx = g.select('text.nums');\n    var anchor = d.anchor;\n    var horzSign = anchor === 'end' ? -1 : 1;\n    var alignShift = {\n      start: 1,\n      end: -1,\n      middle: 0\n    }[anchor];\n    var txx = alignShift * (HOVERARROWSIZE + HOVERTEXTPAD);\n    var tx2x = txx + alignShift * (d.txwidth + HOVERTEXTPAD);\n    var offsetX = 0;\n    var offsetY = d.offset;\n    var isMiddle = anchor === 'middle';\n    if (isMiddle) {\n      txx -= d.tx2width / 2;\n      tx2x += d.txwidth / 2 + HOVERTEXTPAD;\n    }\n    if (rotateLabels) {\n      offsetY *= -YSHIFTY;\n      offsetX = d.offset * YSHIFTX;\n    }\n    g.select('path').attr('d', isMiddle ?\n    // middle aligned: rect centered on data\n    'M-' + pX(d.bx / 2 + d.tx2width / 2) + ',' + pY(offsetY - d.by / 2) + 'h' + pX(d.bx) + 'v' + pY(d.by) + 'h-' + pX(d.bx) + 'Z' :\n    // left or right aligned: side rect with arrow to data\n    'M0,0L' + pX(horzSign * HOVERARROWSIZE + offsetX) + ',' + pY(HOVERARROWSIZE + offsetY) + 'v' + pY(d.by / 2 - HOVERARROWSIZE) + 'h' + pX(horzSign * d.bx) + 'v-' + pY(d.by) + 'H' + pX(horzSign * HOVERARROWSIZE + offsetX) + 'V' + pY(offsetY - HOVERARROWSIZE) + 'Z');\n    var posX = offsetX + txx;\n    var posY = offsetY + d.ty0 - d.by / 2 + HOVERTEXTPAD;\n    var textAlign = d.textAlign || 'auto';\n    if (textAlign !== 'auto') {\n      if (textAlign === 'left' && anchor !== 'start') {\n        tx.attr('text-anchor', 'start');\n        posX = isMiddle ? -d.bx / 2 - d.tx2width / 2 + HOVERTEXTPAD : -d.bx - HOVERTEXTPAD;\n      } else if (textAlign === 'right' && anchor !== 'end') {\n        tx.attr('text-anchor', 'end');\n        posX = isMiddle ? d.bx / 2 - d.tx2width / 2 - HOVERTEXTPAD : d.bx + HOVERTEXTPAD;\n      }\n    }\n    tx.call(svgTextUtils.positionText, pX(posX), pY(posY));\n    if (d.tx2width) {\n      g.select('text.name').call(svgTextUtils.positionText, pX(tx2x + alignShift * HOVERTEXTPAD + offsetX), pY(offsetY + d.ty0 - d.by / 2 + HOVERTEXTPAD));\n      g.select('rect').call(Drawing.setRect, pX(tx2x + (alignShift - 1) * d.tx2width / 2 + offsetX), pY(offsetY - d.by / 2 - 1), pX(d.tx2width), pY(d.by + 2));\n    }\n  });\n}\nfunction cleanPoint(d, hovermode) {\n  var index = d.index;\n  var trace = d.trace || {};\n  var cd0 = d.cd[0];\n  var cd = d.cd[index] || {};\n  function pass(v) {\n    return v || isNumeric(v) && v === 0;\n  }\n  var getVal = Array.isArray(index) ? function (calcKey, traceKey) {\n    var v = Lib.castOption(cd0, index, calcKey);\n    return pass(v) ? v : Lib.extractOption({}, trace, '', traceKey);\n  } : function (calcKey, traceKey) {\n    return Lib.extractOption(cd, trace, calcKey, traceKey);\n  };\n  function fill(key, calcKey, traceKey) {\n    var val = getVal(calcKey, traceKey);\n    if (pass(val)) d[key] = val;\n  }\n  fill('hoverinfo', 'hi', 'hoverinfo');\n  fill('bgcolor', 'hbg', 'hoverlabel.bgcolor');\n  fill('borderColor', 'hbc', 'hoverlabel.bordercolor');\n  fill('fontFamily', 'htf', 'hoverlabel.font.family');\n  fill('fontSize', 'hts', 'hoverlabel.font.size');\n  fill('fontColor', 'htc', 'hoverlabel.font.color');\n  fill('nameLength', 'hnl', 'hoverlabel.namelength');\n  fill('textAlign', 'hta', 'hoverlabel.align');\n  d.posref = hovermode === 'y' || hovermode === 'closest' && trace.orientation === 'h' ? d.xa._offset + (d.x0 + d.x1) / 2 : d.ya._offset + (d.y0 + d.y1) / 2;\n\n  // then constrain all the positions to be on the plot\n  d.x0 = Lib.constrain(d.x0, 0, d.xa._length);\n  d.x1 = Lib.constrain(d.x1, 0, d.xa._length);\n  d.y0 = Lib.constrain(d.y0, 0, d.ya._length);\n  d.y1 = Lib.constrain(d.y1, 0, d.ya._length);\n\n  // and convert the x and y label values into formatted text\n  if (d.xLabelVal !== undefined) {\n    d.xLabel = 'xLabel' in d ? d.xLabel : Axes.hoverLabelText(d.xa, d.xLabelVal, trace.xhoverformat);\n    d.xVal = d.xa.c2d(d.xLabelVal);\n  }\n  if (d.yLabelVal !== undefined) {\n    d.yLabel = 'yLabel' in d ? d.yLabel : Axes.hoverLabelText(d.ya, d.yLabelVal, trace.yhoverformat);\n    d.yVal = d.ya.c2d(d.yLabelVal);\n  }\n\n  // Traces like heatmaps generate the zLabel in their hoverPoints function\n  if (d.zLabelVal !== undefined && d.zLabel === undefined) {\n    d.zLabel = String(d.zLabelVal);\n  }\n\n  // for box means and error bars, add the range to the label\n  if (!isNaN(d.xerr) && !(d.xa.type === 'log' && d.xerr <= 0)) {\n    var xeText = Axes.tickText(d.xa, d.xa.c2l(d.xerr), 'hover').text;\n    if (d.xerrneg !== undefined) {\n      d.xLabel += ' +' + xeText + ' / -' + Axes.tickText(d.xa, d.xa.c2l(d.xerrneg), 'hover').text;\n    } else d.xLabel += ' ± ' + xeText;\n\n    // small distance penalty for error bars, so that if there are\n    // traces with errors and some without, the error bar label will\n    // hoist up to the point\n    if (hovermode === 'x') d.distance += 1;\n  }\n  if (!isNaN(d.yerr) && !(d.ya.type === 'log' && d.yerr <= 0)) {\n    var yeText = Axes.tickText(d.ya, d.ya.c2l(d.yerr), 'hover').text;\n    if (d.yerrneg !== undefined) {\n      d.yLabel += ' +' + yeText + ' / -' + Axes.tickText(d.ya, d.ya.c2l(d.yerrneg), 'hover').text;\n    } else d.yLabel += ' ± ' + yeText;\n    if (hovermode === 'y') d.distance += 1;\n  }\n  var infomode = d.hoverinfo || d.trace.hoverinfo;\n  if (infomode && infomode !== 'all') {\n    infomode = Array.isArray(infomode) ? infomode : infomode.split('+');\n    if (infomode.indexOf('x') === -1) d.xLabel = undefined;\n    if (infomode.indexOf('y') === -1) d.yLabel = undefined;\n    if (infomode.indexOf('z') === -1) d.zLabel = undefined;\n    if (infomode.indexOf('text') === -1) d.text = undefined;\n    if (infomode.indexOf('name') === -1) d.name = undefined;\n  }\n  return d;\n}\nfunction createSpikelines(gd, closestPoints, opts) {\n  var container = opts.container;\n  var fullLayout = opts.fullLayout;\n  var gs = fullLayout._size;\n  var evt = opts.event;\n  var showY = !!closestPoints.hLinePoint;\n  var showX = !!closestPoints.vLinePoint;\n  var xa, ya;\n\n  // Remove old spikeline items\n  container.selectAll('.spikeline').remove();\n  if (!(showX || showY)) return;\n  var contrastColor = Color.combine(fullLayout.plot_bgcolor, fullLayout.paper_bgcolor);\n\n  // Horizontal line (to y-axis)\n  if (showY) {\n    var hLinePoint = closestPoints.hLinePoint;\n    var hLinePointX, hLinePointY;\n    xa = hLinePoint && hLinePoint.xa;\n    ya = hLinePoint && hLinePoint.ya;\n    var ySnap = ya.spikesnap;\n    if (ySnap === 'cursor') {\n      hLinePointX = evt.pointerX;\n      hLinePointY = evt.pointerY;\n    } else {\n      hLinePointX = xa._offset + hLinePoint.x;\n      hLinePointY = ya._offset + hLinePoint.y;\n    }\n    var dfltHLineColor = tinycolor.readability(hLinePoint.color, contrastColor) < 1.5 ? Color.contrast(contrastColor) : hLinePoint.color;\n    var yMode = ya.spikemode;\n    var yThickness = ya.spikethickness;\n    var yColor = ya.spikecolor || dfltHLineColor;\n    var xEdge = Axes.getPxPosition(gd, ya);\n    var xBase, xEndSpike;\n    if (yMode.indexOf('toaxis') !== -1 || yMode.indexOf('across') !== -1) {\n      if (yMode.indexOf('toaxis') !== -1) {\n        xBase = xEdge;\n        xEndSpike = hLinePointX;\n      }\n      if (yMode.indexOf('across') !== -1) {\n        var xAcross0 = ya._counterDomainMin;\n        var xAcross1 = ya._counterDomainMax;\n        if (ya.anchor === 'free') {\n          xAcross0 = Math.min(xAcross0, ya.position);\n          xAcross1 = Math.max(xAcross1, ya.position);\n        }\n        xBase = gs.l + xAcross0 * gs.w;\n        xEndSpike = gs.l + xAcross1 * gs.w;\n      }\n\n      // Foreground horizontal line (to y-axis)\n      container.insert('line', ':first-child').attr({\n        x1: xBase,\n        x2: xEndSpike,\n        y1: hLinePointY,\n        y2: hLinePointY,\n        'stroke-width': yThickness,\n        stroke: yColor,\n        'stroke-dasharray': Drawing.dashStyle(ya.spikedash, yThickness)\n      }).classed('spikeline', true).classed('crisp', true);\n\n      // Background horizontal Line (to y-axis)\n      container.insert('line', ':first-child').attr({\n        x1: xBase,\n        x2: xEndSpike,\n        y1: hLinePointY,\n        y2: hLinePointY,\n        'stroke-width': yThickness + 2,\n        stroke: contrastColor\n      }).classed('spikeline', true).classed('crisp', true);\n    }\n    // Y axis marker\n    if (yMode.indexOf('marker') !== -1) {\n      container.insert('circle', ':first-child').attr({\n        cx: xEdge + (ya.side !== 'right' ? yThickness : -yThickness),\n        cy: hLinePointY,\n        r: yThickness,\n        fill: yColor\n      }).classed('spikeline', true);\n    }\n  }\n  if (showX) {\n    var vLinePoint = closestPoints.vLinePoint;\n    var vLinePointX, vLinePointY;\n    xa = vLinePoint && vLinePoint.xa;\n    ya = vLinePoint && vLinePoint.ya;\n    var xSnap = xa.spikesnap;\n    if (xSnap === 'cursor') {\n      vLinePointX = evt.pointerX;\n      vLinePointY = evt.pointerY;\n    } else {\n      vLinePointX = xa._offset + vLinePoint.x;\n      vLinePointY = ya._offset + vLinePoint.y;\n    }\n    var dfltVLineColor = tinycolor.readability(vLinePoint.color, contrastColor) < 1.5 ? Color.contrast(contrastColor) : vLinePoint.color;\n    var xMode = xa.spikemode;\n    var xThickness = xa.spikethickness;\n    var xColor = xa.spikecolor || dfltVLineColor;\n    var yEdge = Axes.getPxPosition(gd, xa);\n    var yBase, yEndSpike;\n    if (xMode.indexOf('toaxis') !== -1 || xMode.indexOf('across') !== -1) {\n      if (xMode.indexOf('toaxis') !== -1) {\n        yBase = yEdge;\n        yEndSpike = vLinePointY;\n      }\n      if (xMode.indexOf('across') !== -1) {\n        var yAcross0 = xa._counterDomainMin;\n        var yAcross1 = xa._counterDomainMax;\n        if (xa.anchor === 'free') {\n          yAcross0 = Math.min(yAcross0, xa.position);\n          yAcross1 = Math.max(yAcross1, xa.position);\n        }\n        yBase = gs.t + (1 - yAcross1) * gs.h;\n        yEndSpike = gs.t + (1 - yAcross0) * gs.h;\n      }\n\n      // Foreground vertical line (to x-axis)\n      container.insert('line', ':first-child').attr({\n        x1: vLinePointX,\n        x2: vLinePointX,\n        y1: yBase,\n        y2: yEndSpike,\n        'stroke-width': xThickness,\n        stroke: xColor,\n        'stroke-dasharray': Drawing.dashStyle(xa.spikedash, xThickness)\n      }).classed('spikeline', true).classed('crisp', true);\n\n      // Background vertical line (to x-axis)\n      container.insert('line', ':first-child').attr({\n        x1: vLinePointX,\n        x2: vLinePointX,\n        y1: yBase,\n        y2: yEndSpike,\n        'stroke-width': xThickness + 2,\n        stroke: contrastColor\n      }).classed('spikeline', true).classed('crisp', true);\n    }\n\n    // X axis marker\n    if (xMode.indexOf('marker') !== -1) {\n      container.insert('circle', ':first-child').attr({\n        cx: vLinePointX,\n        cy: yEdge - (xa.side !== 'top' ? xThickness : -xThickness),\n        r: xThickness,\n        fill: xColor\n      }).classed('spikeline', true);\n    }\n  }\n}\nfunction hoverChanged(gd, evt, oldhoverdata) {\n  // don't emit any events if nothing changed\n  if (!oldhoverdata || oldhoverdata.length !== gd._hoverdata.length) return true;\n  for (var i = oldhoverdata.length - 1; i >= 0; i--) {\n    var oldPt = oldhoverdata[i];\n    var newPt = gd._hoverdata[i];\n    if (oldPt.curveNumber !== newPt.curveNumber || String(oldPt.pointNumber) !== String(newPt.pointNumber) || String(oldPt.pointNumbers) !== String(newPt.pointNumbers)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction spikesChanged(gd, oldspikepoints) {\n  // don't relayout the plot because of new spikelines if spikelines points didn't change\n  if (!oldspikepoints) return true;\n  if (oldspikepoints.vLinePoint !== gd._spikepoints.vLinePoint || oldspikepoints.hLinePoint !== gd._spikepoints.hLinePoint) return true;\n  return false;\n}\nfunction plainText(s, len) {\n  return svgTextUtils.plainText(s || '', {\n    len: len,\n    allowedTags: ['br', 'sub', 'sup', 'b', 'i', 'em']\n  });\n}\nfunction orderRangePoints(hoverData, hovermode) {\n  var axLetter = hovermode.charAt(0);\n  var first = [];\n  var second = [];\n  var last = [];\n  for (var i = 0; i < hoverData.length; i++) {\n    var d = hoverData[i];\n    if (Registry.traceIs(d.trace, 'bar-like') || Registry.traceIs(d.trace, 'box-violin')) {\n      last.push(d);\n    } else if (d.trace[axLetter + 'period']) {\n      second.push(d);\n    } else {\n      first.push(d);\n    }\n  }\n  return first.concat(second).concat(last);\n}\nfunction getCoord(axLetter, winningPoint, fullLayout) {\n  var ax = winningPoint[axLetter + 'a'];\n  var val = winningPoint[axLetter + 'Val'];\n  var cd0 = winningPoint.cd[0];\n  if (ax.type === 'category' || ax.type === 'multicategory') val = ax._categoriesMap[val];else if (ax.type === 'date') {\n    var periodalignment = winningPoint.trace[axLetter + 'periodalignment'];\n    if (periodalignment) {\n      var d = winningPoint.cd[winningPoint.index];\n      var start = d[axLetter + 'Start'];\n      if (start === undefined) start = d[axLetter];\n      var end = d[axLetter + 'End'];\n      if (end === undefined) end = d[axLetter];\n      var diff = end - start;\n      if (periodalignment === 'end') {\n        val += diff;\n      } else if (periodalignment === 'middle') {\n        val += diff / 2;\n      }\n    }\n    val = ax.d2c(val);\n  }\n  if (cd0 && cd0.t && cd0.t.posLetter === ax._id) {\n    if (fullLayout.boxmode === 'group' || fullLayout.violinmode === 'group') {\n      val += cd0.t.dPos;\n    }\n  }\n  return val;\n}\n\n// Top/left hover offsets relative to graph div. As long as hover content is\n// a sibling of the graph div, it will be positioned correctly relative to\n// the offset parent, whatever that may be.\nfunction getTopOffset(gd) {\n  return gd.offsetTop + gd.clientTop;\n}\nfunction getLeftOffset(gd) {\n  return gd.offsetLeft + gd.clientLeft;\n}\nfunction getBoundingClientRect(gd, node) {\n  var fullLayout = gd._fullLayout;\n  var rect = node.getBoundingClientRect();\n  var x0 = rect.left;\n  var y0 = rect.top;\n  var x1 = x0 + rect.width;\n  var y1 = y0 + rect.height;\n  var A = Lib.apply3DTransform(fullLayout._invTransform)(x0, y0);\n  var B = Lib.apply3DTransform(fullLayout._invTransform)(x1, y1);\n  var Ax = A[0];\n  var Ay = A[1];\n  var Bx = B[0];\n  var By = B[1];\n  return {\n    x: Ax,\n    y: Ay,\n    width: Bx - Ax,\n    height: By - Ay,\n    top: Math.min(Ay, By),\n    left: Math.min(Ax, Bx),\n    right: Math.max(Ax, Bx),\n    bottom: Math.max(Ay, By)\n  };\n}\n\n/***/ }),\n\n/***/ 38048:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_334464__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_334464__(71828);\nvar Color = __nested_webpack_require_334464__(7901);\nvar isUnifiedHover = (__nested_webpack_require_334464__(23469).isUnifiedHover);\nmodule.exports = function handleHoverLabelDefaults(contIn, contOut, coerce, opts) {\n  opts = opts || {};\n  var hasLegend = contOut.legend;\n  function inheritFontAttr(attr) {\n    if (!opts.font[attr]) {\n      opts.font[attr] = hasLegend ? contOut.legend.font[attr] : contOut.font[attr];\n    }\n  }\n\n  // In unified hover, inherit from layout.legend if available or layout\n  if (contOut && isUnifiedHover(contOut.hovermode)) {\n    if (!opts.font) opts.font = {};\n    inheritFontAttr('size');\n    inheritFontAttr('family');\n    inheritFontAttr('color');\n    if (hasLegend) {\n      if (!opts.bgcolor) opts.bgcolor = Color.combine(contOut.legend.bgcolor, contOut.paper_bgcolor);\n      if (!opts.bordercolor) opts.bordercolor = contOut.legend.bordercolor;\n    } else {\n      if (!opts.bgcolor) opts.bgcolor = contOut.paper_bgcolor;\n    }\n  }\n  coerce('hoverlabel.bgcolor', opts.bgcolor);\n  coerce('hoverlabel.bordercolor', opts.bordercolor);\n  coerce('hoverlabel.namelength', opts.namelength);\n  Lib.coerceFont(coerce, 'hoverlabel.font', opts.font);\n  coerce('hoverlabel.align', opts.align);\n};\n\n/***/ }),\n\n/***/ 98212:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_335810__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_335810__(71828);\nvar layoutAttributes = __nested_webpack_require_335810__(528);\nmodule.exports = function handleHoverModeDefaults(layoutIn, layoutOut) {\n  function coerce(attr, dflt) {\n    // don't coerce if it is already coerced in other place e.g. in cartesian defaults\n    if (layoutOut[attr] !== undefined) return layoutOut[attr];\n    return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n  }\n  coerce('clickmode');\n  return coerce('hovermode');\n};\n\n/***/ }),\n\n/***/ 30211:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_336401__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_336401__(39898);\nvar Lib = __nested_webpack_require_336401__(71828);\nvar dragElement = __nested_webpack_require_336401__(28569);\nvar helpers = __nested_webpack_require_336401__(23469);\nvar layoutAttributes = __nested_webpack_require_336401__(528);\nvar hoverModule = __nested_webpack_require_336401__(88335);\nmodule.exports = {\n  moduleType: 'component',\n  name: 'fx',\n  constants: __nested_webpack_require_336401__(26675),\n  schema: {\n    layout: layoutAttributes\n  },\n  attributes: __nested_webpack_require_336401__(77914),\n  layoutAttributes: layoutAttributes,\n  supplyLayoutGlobalDefaults: __nested_webpack_require_336401__(22774),\n  supplyDefaults: __nested_webpack_require_336401__(54268),\n  supplyLayoutDefaults: __nested_webpack_require_336401__(34938),\n  calc: __nested_webpack_require_336401__(30732),\n  getDistanceFunction: helpers.getDistanceFunction,\n  getClosest: helpers.getClosest,\n  inbox: helpers.inbox,\n  quadrature: helpers.quadrature,\n  appendArrayPointValue: helpers.appendArrayPointValue,\n  castHoverOption: castHoverOption,\n  castHoverinfo: castHoverinfo,\n  hover: hoverModule.hover,\n  unhover: dragElement.unhover,\n  loneHover: hoverModule.loneHover,\n  loneUnhover: loneUnhover,\n  click: __nested_webpack_require_336401__(75914)\n};\nfunction loneUnhover(containerOrSelection) {\n  // duck type whether the arg is a d3 selection because ie9 doesn't\n  // handle instanceof like modern browsers do.\n  var selection = Lib.isD3Selection(containerOrSelection) ? containerOrSelection : d3.select(containerOrSelection);\n  selection.selectAll('g.hovertext').remove();\n  selection.selectAll('.spikeline').remove();\n}\n\n// helpers for traces that use Fx.loneHover\n\nfunction castHoverOption(trace, ptNumber, attr) {\n  return Lib.castOption(trace, ptNumber, 'hoverlabel.' + attr);\n}\nfunction castHoverinfo(trace, fullLayout, ptNumber) {\n  function _coerce(val) {\n    return Lib.coerceHoverinfo({\n      hoverinfo: val\n    }, {\n      _module: trace._module\n    }, fullLayout);\n  }\n  return Lib.castOption(trace, ptNumber, 'hoverinfo', _coerce);\n}\n\n/***/ }),\n\n/***/ 528:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_338419__) {\n\n\"use strict\";\n\n\nvar constants = __nested_webpack_require_338419__(26675);\nvar fontAttrs = __nested_webpack_require_338419__(41940);\nvar font = fontAttrs({\n  editType: 'none'\n});\nfont.family.dflt = constants.HOVERFONT;\nfont.size.dflt = constants.HOVERFONTSIZE;\nmodule.exports = {\n  clickmode: {\n    valType: 'flaglist',\n    flags: ['event', 'select'],\n    dflt: 'event',\n    editType: 'plot',\n    extras: ['none']\n  },\n  dragmode: {\n    valType: 'enumerated',\n    values: ['zoom', 'pan', 'select', 'lasso', 'drawclosedpath', 'drawopenpath', 'drawline', 'drawrect', 'drawcircle', 'orbit', 'turntable', false],\n    dflt: 'zoom',\n    editType: 'modebar'\n  },\n  hovermode: {\n    valType: 'enumerated',\n    values: ['x', 'y', 'closest', false, 'x unified', 'y unified'],\n    dflt: 'closest',\n    editType: 'modebar'\n  },\n  hoverdistance: {\n    valType: 'integer',\n    min: -1,\n    dflt: 20,\n    editType: 'none'\n  },\n  spikedistance: {\n    valType: 'integer',\n    min: -1,\n    dflt: -1,\n    editType: 'none'\n  },\n  hoverlabel: {\n    bgcolor: {\n      valType: 'color',\n      editType: 'none'\n    },\n    bordercolor: {\n      valType: 'color',\n      editType: 'none'\n    },\n    font: font,\n    grouptitlefont: fontAttrs({\n      editType: 'none'\n    }),\n    align: {\n      valType: 'enumerated',\n      values: ['left', 'right', 'auto'],\n      dflt: 'auto',\n      editType: 'none'\n    },\n    namelength: {\n      valType: 'integer',\n      min: -1,\n      dflt: 15,\n      editType: 'none'\n    },\n    editType: 'none'\n  },\n  selectdirection: {\n    valType: 'enumerated',\n    values: ['h', 'v', 'd', 'any'],\n    dflt: 'any',\n    editType: 'none'\n  }\n};\n\n/***/ }),\n\n/***/ 34938:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_340127__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_340127__(71828);\nvar layoutAttributes = __nested_webpack_require_340127__(528);\nvar handleHoverModeDefaults = __nested_webpack_require_340127__(98212);\nvar handleHoverLabelDefaults = __nested_webpack_require_340127__(38048);\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n  }\n  var hoverMode = handleHoverModeDefaults(layoutIn, layoutOut);\n  if (hoverMode) {\n    coerce('hoverdistance');\n    coerce('spikedistance');\n  }\n  var dragMode = coerce('dragmode');\n  if (dragMode === 'select') coerce('selectdirection');\n\n  // if only mapbox or geo subplots is present on graph,\n  // reset 'zoom' dragmode to 'pan' until 'zoom' is implemented,\n  // so that the correct modebar button is active\n  var hasMapbox = layoutOut._has('mapbox');\n  var hasGeo = layoutOut._has('geo');\n  var len = layoutOut._basePlotModules.length;\n  if (layoutOut.dragmode === 'zoom' && ((hasMapbox || hasGeo) && len === 1 || hasMapbox && hasGeo && len === 2)) {\n    layoutOut.dragmode = 'pan';\n  }\n  handleHoverLabelDefaults(layoutIn, layoutOut, coerce);\n  Lib.coerceFont(coerce, 'hoverlabel.grouptitlefont', layoutOut.hoverlabel.font);\n};\n\n/***/ }),\n\n/***/ 22774:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_341459__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_341459__(71828);\nvar handleHoverLabelDefaults = __nested_webpack_require_341459__(38048);\nvar layoutAttributes = __nested_webpack_require_341459__(528);\nmodule.exports = function supplyLayoutGlobalDefaults(layoutIn, layoutOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n  }\n  handleHoverLabelDefaults(layoutIn, layoutOut, coerce);\n};\n\n/***/ }),\n\n/***/ 83312:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_341966__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_341966__(71828);\nvar counterRegex = (__nested_webpack_require_341966__(30587).counter);\nvar domainAttrs = (__nested_webpack_require_341966__(27670)/* .attributes */ .Y);\nvar cartesianIdRegex = (__nested_webpack_require_341966__(85555).idRegex);\nvar Template = __nested_webpack_require_341966__(44467);\nvar gridAttrs = {\n  rows: {\n    valType: 'integer',\n    min: 1,\n    editType: 'plot'\n  },\n  roworder: {\n    valType: 'enumerated',\n    values: ['top to bottom', 'bottom to top'],\n    dflt: 'top to bottom',\n    editType: 'plot'\n  },\n  columns: {\n    valType: 'integer',\n    min: 1,\n    editType: 'plot'\n  },\n  subplots: {\n    valType: 'info_array',\n    freeLength: true,\n    dimensions: 2,\n    items: {\n      valType: 'enumerated',\n      values: [counterRegex('xy').toString(), ''],\n      editType: 'plot'\n    },\n    editType: 'plot'\n  },\n  xaxes: {\n    valType: 'info_array',\n    freeLength: true,\n    items: {\n      valType: 'enumerated',\n      values: [cartesianIdRegex.x.toString(), ''],\n      editType: 'plot'\n    },\n    editType: 'plot'\n  },\n  yaxes: {\n    valType: 'info_array',\n    freeLength: true,\n    items: {\n      valType: 'enumerated',\n      values: [cartesianIdRegex.y.toString(), ''],\n      editType: 'plot'\n    },\n    editType: 'plot'\n  },\n  pattern: {\n    valType: 'enumerated',\n    values: ['independent', 'coupled'],\n    dflt: 'coupled',\n    editType: 'plot'\n  },\n  xgap: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    editType: 'plot'\n  },\n  ygap: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    editType: 'plot'\n  },\n  domain: domainAttrs({\n    name: 'grid',\n    editType: 'plot',\n    noGridCell: true\n  }, {}),\n  xside: {\n    valType: 'enumerated',\n    values: ['bottom', 'bottom plot', 'top plot', 'top'],\n    dflt: 'bottom plot',\n    editType: 'plot'\n  },\n  yside: {\n    valType: 'enumerated',\n    values: ['left', 'left plot', 'right plot', 'right'],\n    dflt: 'left plot',\n    editType: 'plot'\n  },\n  editType: 'plot'\n};\nfunction getAxes(layout, grid, axLetter) {\n  var gridVal = grid[axLetter + 'axes'];\n  var splomVal = Object.keys((layout._splomAxes || {})[axLetter] || {});\n  if (Array.isArray(gridVal)) return gridVal;\n  if (splomVal.length) return splomVal;\n}\n\n// the shape of the grid - this needs to be done BEFORE supplyDataDefaults\n// so that non-subplot traces can place themselves in the grid\nfunction sizeDefaults(layoutIn, layoutOut) {\n  var gridIn = layoutIn.grid || {};\n  var xAxes = getAxes(layoutOut, gridIn, 'x');\n  var yAxes = getAxes(layoutOut, gridIn, 'y');\n  if (!layoutIn.grid && !xAxes && !yAxes) return;\n  var hasSubplotGrid = Array.isArray(gridIn.subplots) && Array.isArray(gridIn.subplots[0]);\n  var hasXaxes = Array.isArray(xAxes);\n  var hasYaxes = Array.isArray(yAxes);\n  var isSplomGenerated = hasXaxes && xAxes !== gridIn.xaxes && hasYaxes && yAxes !== gridIn.yaxes;\n  var dfltRows, dfltColumns;\n  if (hasSubplotGrid) {\n    dfltRows = gridIn.subplots.length;\n    dfltColumns = gridIn.subplots[0].length;\n  } else {\n    if (hasYaxes) dfltRows = yAxes.length;\n    if (hasXaxes) dfltColumns = xAxes.length;\n  }\n  var gridOut = Template.newContainer(layoutOut, 'grid');\n  function coerce(attr, dflt) {\n    return Lib.coerce(gridIn, gridOut, gridAttrs, attr, dflt);\n  }\n  var rows = coerce('rows', dfltRows);\n  var columns = coerce('columns', dfltColumns);\n  if (!(rows * columns > 1)) {\n    delete layoutOut.grid;\n    return;\n  }\n  if (!hasSubplotGrid && !hasXaxes && !hasYaxes) {\n    var useDefaultSubplots = coerce('pattern') === 'independent';\n    if (useDefaultSubplots) hasSubplotGrid = true;\n  }\n  gridOut._hasSubplotGrid = hasSubplotGrid;\n  var rowOrder = coerce('roworder');\n  var reversed = rowOrder === 'top to bottom';\n  var dfltGapX = hasSubplotGrid ? 0.2 : 0.1;\n  var dfltGapY = hasSubplotGrid ? 0.3 : 0.1;\n  var dfltSideX, dfltSideY;\n  if (isSplomGenerated && layoutOut._splomGridDflt) {\n    dfltSideX = layoutOut._splomGridDflt.xside;\n    dfltSideY = layoutOut._splomGridDflt.yside;\n  }\n  gridOut._domains = {\n    x: fillGridPositions('x', coerce, dfltGapX, dfltSideX, columns),\n    y: fillGridPositions('y', coerce, dfltGapY, dfltSideY, rows, reversed)\n  };\n}\n\n// coerce x or y sizing attributes and return an array of domains for this direction\nfunction fillGridPositions(axLetter, coerce, dfltGap, dfltSide, len, reversed) {\n  var dirGap = coerce(axLetter + 'gap', dfltGap);\n  var domain = coerce('domain.' + axLetter);\n  coerce(axLetter + 'side', dfltSide);\n  var out = new Array(len);\n  var start = domain[0];\n  var step = (domain[1] - start) / (len - dirGap);\n  var cellDomain = step * (1 - dirGap);\n  for (var i = 0; i < len; i++) {\n    var cellStart = start + step * i;\n    out[reversed ? len - 1 - i : i] = [cellStart, cellStart + cellDomain];\n  }\n  return out;\n}\n\n// the (cartesian) contents of the grid - this needs to happen AFTER supplyDataDefaults\n// so that we know what cartesian subplots are available\nfunction contentDefaults(layoutIn, layoutOut) {\n  var gridOut = layoutOut.grid;\n  // make sure we got to the end of handleGridSizing\n  if (!gridOut || !gridOut._domains) return;\n  var gridIn = layoutIn.grid || {};\n  var subplots = layoutOut._subplots;\n  var hasSubplotGrid = gridOut._hasSubplotGrid;\n  var rows = gridOut.rows;\n  var columns = gridOut.columns;\n  var useDefaultSubplots = gridOut.pattern === 'independent';\n  var i, j, xId, yId, subplotId, subplotsOut, yPos;\n  var axisMap = gridOut._axisMap = {};\n  if (hasSubplotGrid) {\n    var subplotsIn = gridIn.subplots || [];\n    subplotsOut = gridOut.subplots = new Array(rows);\n    var index = 1;\n    for (i = 0; i < rows; i++) {\n      var rowOut = subplotsOut[i] = new Array(columns);\n      var rowIn = subplotsIn[i] || [];\n      for (j = 0; j < columns; j++) {\n        if (useDefaultSubplots) {\n          subplotId = index === 1 ? 'xy' : 'x' + index + 'y' + index;\n          index++;\n        } else subplotId = rowIn[j];\n        rowOut[j] = '';\n        if (subplots.cartesian.indexOf(subplotId) !== -1) {\n          yPos = subplotId.indexOf('y');\n          xId = subplotId.slice(0, yPos);\n          yId = subplotId.slice(yPos);\n          if (axisMap[xId] !== undefined && axisMap[xId] !== j || axisMap[yId] !== undefined && axisMap[yId] !== i) {\n            continue;\n          }\n          rowOut[j] = subplotId;\n          axisMap[xId] = j;\n          axisMap[yId] = i;\n        }\n      }\n    }\n  } else {\n    var xAxes = getAxes(layoutOut, gridIn, 'x');\n    var yAxes = getAxes(layoutOut, gridIn, 'y');\n    gridOut.xaxes = fillGridAxes(xAxes, subplots.xaxis, columns, axisMap, 'x');\n    gridOut.yaxes = fillGridAxes(yAxes, subplots.yaxis, rows, axisMap, 'y');\n  }\n  var anchors = gridOut._anchors = {};\n  var reversed = gridOut.roworder === 'top to bottom';\n  for (var axisId in axisMap) {\n    var axLetter = axisId.charAt(0);\n    var side = gridOut[axLetter + 'side'];\n    var i0, inc, iFinal;\n    if (side.length < 8) {\n      // grid edge -  ie not \"* plot\" - make these as free axes\n      // since we're not guaranteed to have a subplot there at all\n      anchors[axisId] = 'free';\n    } else if (axLetter === 'x') {\n      if (side.charAt(0) === 't' === reversed) {\n        i0 = 0;\n        inc = 1;\n        iFinal = rows;\n      } else {\n        i0 = rows - 1;\n        inc = -1;\n        iFinal = -1;\n      }\n      if (hasSubplotGrid) {\n        var column = axisMap[axisId];\n        for (i = i0; i !== iFinal; i += inc) {\n          subplotId = subplotsOut[i][column];\n          if (!subplotId) continue;\n          yPos = subplotId.indexOf('y');\n          if (subplotId.slice(0, yPos) === axisId) {\n            anchors[axisId] = subplotId.slice(yPos);\n            break;\n          }\n        }\n      } else {\n        for (i = i0; i !== iFinal; i += inc) {\n          yId = gridOut.yaxes[i];\n          if (subplots.cartesian.indexOf(axisId + yId) !== -1) {\n            anchors[axisId] = yId;\n            break;\n          }\n        }\n      }\n    } else {\n      if (side.charAt(0) === 'l') {\n        i0 = 0;\n        inc = 1;\n        iFinal = columns;\n      } else {\n        i0 = columns - 1;\n        inc = -1;\n        iFinal = -1;\n      }\n      if (hasSubplotGrid) {\n        var row = axisMap[axisId];\n        for (i = i0; i !== iFinal; i += inc) {\n          subplotId = subplotsOut[row][i];\n          if (!subplotId) continue;\n          yPos = subplotId.indexOf('y');\n          if (subplotId.slice(yPos) === axisId) {\n            anchors[axisId] = subplotId.slice(0, yPos);\n            break;\n          }\n        }\n      } else {\n        for (i = i0; i !== iFinal; i += inc) {\n          xId = gridOut.xaxes[i];\n          if (subplots.cartesian.indexOf(xId + axisId) !== -1) {\n            anchors[axisId] = xId;\n            break;\n          }\n        }\n      }\n    }\n  }\n}\nfunction fillGridAxes(axesIn, axesAllowed, len, axisMap, axLetter) {\n  var out = new Array(len);\n  var i;\n  function fillOneAxis(i, axisId) {\n    if (axesAllowed.indexOf(axisId) !== -1 && axisMap[axisId] === undefined) {\n      out[i] = axisId;\n      axisMap[axisId] = i;\n    } else out[i] = '';\n  }\n  if (Array.isArray(axesIn)) {\n    for (i = 0; i < len; i++) {\n      fillOneAxis(i, axesIn[i]);\n    }\n  } else {\n    // default axis list is the first `len` axis ids\n    fillOneAxis(0, axLetter);\n    for (i = 1; i < len; i++) {\n      fillOneAxis(i, axLetter + (i + 1));\n    }\n  }\n  return out;\n}\nmodule.exports = {\n  moduleType: 'component',\n  name: 'grid',\n  schema: {\n    layout: {\n      grid: gridAttrs\n    }\n  },\n  layoutAttributes: gridAttrs,\n  sizeDefaults: sizeDefaults,\n  contentDefaults: contentDefaults\n};\n\n/***/ }),\n\n/***/ 69819:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_351587__) {\n\n\"use strict\";\n\n\nvar cartesianConstants = __nested_webpack_require_351587__(85555);\nvar templatedArray = (__nested_webpack_require_351587__(44467).templatedArray);\nvar axisPlaceableObjs = __nested_webpack_require_351587__(24695);\nmodule.exports = templatedArray('image', {\n  visible: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'arraydraw'\n  },\n  source: {\n    valType: 'string',\n    editType: 'arraydraw'\n  },\n  layer: {\n    valType: 'enumerated',\n    values: ['below', 'above'],\n    dflt: 'above',\n    editType: 'arraydraw'\n  },\n  sizex: {\n    valType: 'number',\n    dflt: 0,\n    editType: 'arraydraw'\n  },\n  sizey: {\n    valType: 'number',\n    dflt: 0,\n    editType: 'arraydraw'\n  },\n  sizing: {\n    valType: 'enumerated',\n    values: ['fill', 'contain', 'stretch'],\n    dflt: 'contain',\n    editType: 'arraydraw'\n  },\n  opacity: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 1,\n    editType: 'arraydraw'\n  },\n  x: {\n    valType: 'any',\n    dflt: 0,\n    editType: 'arraydraw'\n  },\n  y: {\n    valType: 'any',\n    dflt: 0,\n    editType: 'arraydraw'\n  },\n  xanchor: {\n    valType: 'enumerated',\n    values: ['left', 'center', 'right'],\n    dflt: 'left',\n    editType: 'arraydraw'\n  },\n  yanchor: {\n    valType: 'enumerated',\n    values: ['top', 'middle', 'bottom'],\n    dflt: 'top',\n    editType: 'arraydraw'\n  },\n  xref: {\n    valType: 'enumerated',\n    values: ['paper', cartesianConstants.idRegex.x.toString()],\n    dflt: 'paper',\n    editType: 'arraydraw'\n  },\n  yref: {\n    valType: 'enumerated',\n    values: ['paper', cartesianConstants.idRegex.y.toString()],\n    dflt: 'paper',\n    editType: 'arraydraw'\n  },\n  editType: 'arraydraw'\n});\n\n/***/ }),\n\n/***/ 75378:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_353312__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_353312__(92770);\nvar toLogRange = __nested_webpack_require_353312__(58163);\n\n/*\n * convertCoords: when converting an axis between log and linear\n * you need to alter any images on that axis to keep them\n * pointing at the same data point.\n * In v3.0 this will become obsolete (or perhaps size will still need conversion?)\n * we convert size by declaring that the maximum extent *in data units* should be\n * the same, assuming the image is anchored by its center (could remove that restriction\n * if we think it's important) even though the actual left and right values will not be\n * quite the same since the scale becomes nonlinear (and central anchor means the pixel\n * center of the image, not the data units center)\n *\n * gd: the plot div\n * ax: the axis being changed\n * newType: the type it's getting\n * doExtra: function(attr, val) from inside relayout that sets the attribute.\n *     Use this to make the changes as it's aware if any other changes in the\n *     same relayout call should override this conversion.\n */\nmodule.exports = function convertCoords(gd, ax, newType, doExtra) {\n  ax = ax || {};\n  var toLog = newType === 'log' && ax.type === 'linear';\n  var fromLog = newType === 'linear' && ax.type === 'log';\n  if (!(toLog || fromLog)) return;\n  var images = gd._fullLayout.images;\n  var axLetter = ax._id.charAt(0);\n  var image;\n  var attrPrefix;\n  for (var i = 0; i < images.length; i++) {\n    image = images[i];\n    attrPrefix = 'images[' + i + '].';\n    if (image[axLetter + 'ref'] === ax._id) {\n      var currentPos = image[axLetter];\n      var currentSize = image['size' + axLetter];\n      var newPos = null;\n      var newSize = null;\n      if (toLog) {\n        newPos = toLogRange(currentPos, ax.range);\n\n        // this is the inverse of the conversion we do in fromLog below\n        // so that the conversion is reversible (notice the fromLog conversion\n        // is like sinh, and this one looks like arcsinh)\n        var dx = currentSize / Math.pow(10, newPos) / 2;\n        newSize = 2 * Math.log(dx + Math.sqrt(1 + dx * dx)) / Math.LN10;\n      } else {\n        newPos = Math.pow(10, currentPos);\n        newSize = newPos * (Math.pow(10, currentSize / 2) - Math.pow(10, -currentSize / 2));\n      }\n\n      // if conversion failed, delete the value so it can get a default later on\n      if (!isNumeric(newPos)) {\n        newPos = null;\n        newSize = null;\n      } else if (!isNumeric(newSize)) newSize = null;\n      doExtra(attrPrefix + axLetter, newPos);\n      doExtra(attrPrefix + 'size' + axLetter, newSize);\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 81603:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_355998__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_355998__(71828);\nvar Axes = __nested_webpack_require_355998__(89298);\nvar handleArrayContainerDefaults = __nested_webpack_require_355998__(85501);\nvar attributes = __nested_webpack_require_355998__(69819);\nvar name = 'images';\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n  var opts = {\n    name: name,\n    handleItemDefaults: imageDefaults\n  };\n  handleArrayContainerDefaults(layoutIn, layoutOut, opts);\n};\nfunction imageDefaults(imageIn, imageOut, fullLayout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(imageIn, imageOut, attributes, attr, dflt);\n  }\n  var source = coerce('source');\n  var visible = coerce('visible', !!source);\n  if (!visible) return imageOut;\n  coerce('layer');\n  coerce('xanchor');\n  coerce('yanchor');\n  coerce('sizex');\n  coerce('sizey');\n  coerce('sizing');\n  coerce('opacity');\n  var gdMock = {\n    _fullLayout: fullLayout\n  };\n  var axLetters = ['x', 'y'];\n  for (var i = 0; i < 2; i++) {\n    // 'paper' is the fallback axref\n    var axLetter = axLetters[i];\n    var axRef = Axes.coerceRef(imageIn, imageOut, gdMock, axLetter, 'paper', undefined);\n    if (axRef !== 'paper') {\n      var ax = Axes.getFromId(gdMock, axRef);\n      ax._imgIndices.push(imageOut._index);\n    }\n    Axes.coercePosition(imageOut, gdMock, coerce, axRef, axLetter, 0);\n  }\n  return imageOut;\n}\n\n/***/ }),\n\n/***/ 80750:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_357426__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_357426__(39898);\nvar Drawing = __nested_webpack_require_357426__(91424);\nvar Axes = __nested_webpack_require_357426__(89298);\nvar axisIds = __nested_webpack_require_357426__(41675);\nvar xmlnsNamespaces = __nested_webpack_require_357426__(77922);\nmodule.exports = function draw(gd) {\n  var fullLayout = gd._fullLayout;\n  var imageDataAbove = [];\n  var imageDataSubplot = {};\n  var imageDataBelow = [];\n  var subplot;\n  var i;\n\n  // Sort into top, subplot, and bottom layers\n  for (i = 0; i < fullLayout.images.length; i++) {\n    var img = fullLayout.images[i];\n    if (img.visible) {\n      if (img.layer === 'below' && img.xref !== 'paper' && img.yref !== 'paper') {\n        subplot = axisIds.ref2id(img.xref) + axisIds.ref2id(img.yref);\n        var plotinfo = fullLayout._plots[subplot];\n        if (!plotinfo) {\n          // Fall back to _imageLowerLayer in case the requested subplot doesn't exist.\n          // This can happen if you reference the image to an x / y axis combination\n          // that doesn't have any data on it (and layer is below)\n          imageDataBelow.push(img);\n          continue;\n        }\n        if (plotinfo.mainplot) {\n          subplot = plotinfo.mainplot.id;\n        }\n        if (!imageDataSubplot[subplot]) {\n          imageDataSubplot[subplot] = [];\n        }\n        imageDataSubplot[subplot].push(img);\n      } else if (img.layer === 'above') {\n        imageDataAbove.push(img);\n      } else {\n        imageDataBelow.push(img);\n      }\n    }\n  }\n  var anchors = {\n    x: {\n      left: {\n        sizing: 'xMin',\n        offset: 0\n      },\n      center: {\n        sizing: 'xMid',\n        offset: -1 / 2\n      },\n      right: {\n        sizing: 'xMax',\n        offset: -1\n      }\n    },\n    y: {\n      top: {\n        sizing: 'YMin',\n        offset: 0\n      },\n      middle: {\n        sizing: 'YMid',\n        offset: -1 / 2\n      },\n      bottom: {\n        sizing: 'YMax',\n        offset: -1\n      }\n    }\n  };\n\n  // Images must be converted to dataURL's for exporting.\n  function setImage(d) {\n    var thisImage = d3.select(this);\n    if (this._imgSrc === d.source) {\n      return;\n    }\n    thisImage.attr('xmlns', xmlnsNamespaces.svg);\n    if (d.source && d.source.slice(0, 5) === 'data:') {\n      thisImage.attr('xlink:href', d.source);\n      this._imgSrc = d.source;\n    } else {\n      var imagePromise = new Promise(function (resolve) {\n        var img = new Image();\n        this.img = img;\n\n        // If not set, a `tainted canvas` error is thrown\n        img.setAttribute('crossOrigin', 'anonymous');\n        img.onerror = errorHandler;\n        img.onload = function () {\n          var canvas = document.createElement('canvas');\n          canvas.width = this.width;\n          canvas.height = this.height;\n          var ctx = canvas.getContext('2d', {\n            willReadFrequently: true\n          });\n          ctx.drawImage(this, 0, 0);\n          var dataURL = canvas.toDataURL('image/png');\n          thisImage.attr('xlink:href', dataURL);\n\n          // resolve promise in onload handler instead of on 'load' to support IE11\n          // see https://github.com/plotly/plotly.js/issues/1685\n          // for more details\n          resolve();\n        };\n        thisImage.on('error', errorHandler);\n        img.src = d.source;\n        this._imgSrc = d.source;\n        function errorHandler() {\n          thisImage.remove();\n          resolve();\n        }\n      }.bind(this));\n      gd._promises.push(imagePromise);\n    }\n  }\n  function applyAttributes(d) {\n    var thisImage = d3.select(this);\n\n    // Axes if specified\n    var xa = Axes.getFromId(gd, d.xref);\n    var ya = Axes.getFromId(gd, d.yref);\n    var xIsDomain = Axes.getRefType(d.xref) === 'domain';\n    var yIsDomain = Axes.getRefType(d.yref) === 'domain';\n    var size = fullLayout._size;\n    var width, height;\n    if (xa !== undefined) {\n      width = typeof d.xref === 'string' && xIsDomain ? xa._length * d.sizex : Math.abs(xa.l2p(d.sizex) - xa.l2p(0));\n    } else {\n      width = d.sizex * size.w;\n    }\n    if (ya !== undefined) {\n      height = typeof d.yref === 'string' && yIsDomain ? ya._length * d.sizey : Math.abs(ya.l2p(d.sizey) - ya.l2p(0));\n    } else {\n      height = d.sizey * size.h;\n    }\n\n    // Offsets for anchor positioning\n    var xOffset = width * anchors.x[d.xanchor].offset;\n    var yOffset = height * anchors.y[d.yanchor].offset;\n    var sizing = anchors.x[d.xanchor].sizing + anchors.y[d.yanchor].sizing;\n\n    // Final positions\n    var xPos, yPos;\n    if (xa !== undefined) {\n      xPos = typeof d.xref === 'string' && xIsDomain ? xa._length * d.x + xa._offset : xa.r2p(d.x) + xa._offset;\n    } else {\n      xPos = d.x * size.w + size.l;\n    }\n    xPos += xOffset;\n    if (ya !== undefined) {\n      yPos = typeof d.yref === 'string' && yIsDomain ?\n      // consistent with \"paper\" yref value, where positive values\n      // move up the page\n      ya._length * (1 - d.y) + ya._offset : ya.r2p(d.y) + ya._offset;\n    } else {\n      yPos = size.h - d.y * size.h + size.t;\n    }\n    yPos += yOffset;\n\n    // Construct the proper aspectRatio attribute\n    switch (d.sizing) {\n      case 'fill':\n        sizing += ' slice';\n        break;\n      case 'stretch':\n        sizing = 'none';\n        break;\n    }\n    thisImage.attr({\n      x: xPos,\n      y: yPos,\n      width: width,\n      height: height,\n      preserveAspectRatio: sizing,\n      opacity: d.opacity\n    });\n\n    // Set proper clipping on images\n    var xId = xa && Axes.getRefType(d.xref) !== 'domain' ? xa._id : '';\n    var yId = ya && Axes.getRefType(d.yref) !== 'domain' ? ya._id : '';\n    var clipAxes = xId + yId;\n    Drawing.setClipUrl(thisImage, clipAxes ? 'clip' + fullLayout._uid + clipAxes : null, gd);\n  }\n  var imagesBelow = fullLayout._imageLowerLayer.selectAll('image').data(imageDataBelow);\n  var imagesAbove = fullLayout._imageUpperLayer.selectAll('image').data(imageDataAbove);\n  imagesBelow.enter().append('image');\n  imagesAbove.enter().append('image');\n  imagesBelow.exit().remove();\n  imagesAbove.exit().remove();\n  imagesBelow.each(function (d) {\n    setImage.bind(this)(d);\n    applyAttributes.bind(this)(d);\n  });\n  imagesAbove.each(function (d) {\n    setImage.bind(this)(d);\n    applyAttributes.bind(this)(d);\n  });\n  var allSubplots = Object.keys(fullLayout._plots);\n  for (i = 0; i < allSubplots.length; i++) {\n    subplot = allSubplots[i];\n    var subplotObj = fullLayout._plots[subplot];\n\n    // filter out overlaid plots (which have their images on the main plot)\n    // and gl2d plots (which don't support below images, at least not yet)\n    if (!subplotObj.imagelayer) continue;\n    var imagesOnSubplot = subplotObj.imagelayer.selectAll('image')\n    // even if there are no images on this subplot, we need to run\n    // enter and exit in case there were previously\n    .data(imageDataSubplot[subplot] || []);\n    imagesOnSubplot.enter().append('image');\n    imagesOnSubplot.exit().remove();\n    imagesOnSubplot.each(function (d) {\n      setImage.bind(this)(d);\n      applyAttributes.bind(this)(d);\n    });\n  }\n};\n\n/***/ }),\n\n/***/ 68804:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_364543__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'component',\n  name: 'images',\n  layoutAttributes: __nested_webpack_require_364543__(69819),\n  supplyLayoutDefaults: __nested_webpack_require_364543__(81603),\n  includeBasePlot: __nested_webpack_require_364543__(76325)('images'),\n  draw: __nested_webpack_require_364543__(80750),\n  convertCoords: __nested_webpack_require_364543__(75378)\n};\n\n/***/ }),\n\n/***/ 33030:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_364962__) {\n\n\"use strict\";\n\n\nvar fontAttrs = __nested_webpack_require_364962__(41940);\nvar colorAttrs = __nested_webpack_require_364962__(22399);\nmodule.exports = {\n  bgcolor: {\n    valType: 'color',\n    editType: 'legend'\n  },\n  bordercolor: {\n    valType: 'color',\n    dflt: colorAttrs.defaultLine,\n    editType: 'legend'\n  },\n  borderwidth: {\n    valType: 'number',\n    min: 0,\n    dflt: 0,\n    editType: 'legend'\n  },\n  font: fontAttrs({\n    editType: 'legend'\n  }),\n  grouptitlefont: fontAttrs({\n    editType: 'legend'\n  }),\n  orientation: {\n    valType: 'enumerated',\n    values: ['v', 'h'],\n    dflt: 'v',\n    editType: 'legend'\n  },\n  traceorder: {\n    valType: 'flaglist',\n    flags: ['reversed', 'grouped'],\n    extras: ['normal'],\n    editType: 'legend'\n  },\n  tracegroupgap: {\n    valType: 'number',\n    min: 0,\n    dflt: 10,\n    editType: 'legend'\n  },\n  entrywidth: {\n    valType: 'number',\n    min: 0,\n    editType: 'legend'\n  },\n  entrywidthmode: {\n    valType: 'enumerated',\n    values: ['fraction', 'pixels'],\n    dflt: 'pixels',\n    editType: 'legend'\n  },\n  itemsizing: {\n    valType: 'enumerated',\n    values: ['trace', 'constant'],\n    dflt: 'trace',\n    editType: 'legend'\n  },\n  itemwidth: {\n    valType: 'number',\n    min: 30,\n    dflt: 30,\n    editType: 'legend'\n  },\n  itemclick: {\n    valType: 'enumerated',\n    values: ['toggle', 'toggleothers', false],\n    dflt: 'toggle',\n    editType: 'legend'\n  },\n  itemdoubleclick: {\n    valType: 'enumerated',\n    values: ['toggle', 'toggleothers', false],\n    dflt: 'toggleothers',\n    editType: 'legend'\n  },\n  groupclick: {\n    valType: 'enumerated',\n    values: ['toggleitem', 'togglegroup'],\n    dflt: 'togglegroup',\n    editType: 'legend'\n  },\n  x: {\n    valType: 'number',\n    min: -2,\n    max: 3,\n    editType: 'legend'\n  },\n  xanchor: {\n    valType: 'enumerated',\n    values: ['auto', 'left', 'center', 'right'],\n    dflt: 'left',\n    editType: 'legend'\n  },\n  y: {\n    valType: 'number',\n    min: -2,\n    max: 3,\n    editType: 'legend'\n  },\n  yanchor: {\n    valType: 'enumerated',\n    values: ['auto', 'top', 'middle', 'bottom'],\n    editType: 'legend'\n  },\n  uirevision: {\n    valType: 'any',\n    editType: 'none'\n  },\n  valign: {\n    valType: 'enumerated',\n    values: ['top', 'middle', 'bottom'],\n    dflt: 'middle',\n    editType: 'legend'\n  },\n  title: {\n    text: {\n      valType: 'string',\n      dflt: '',\n      editType: 'legend'\n    },\n    font: fontAttrs({\n      editType: 'legend'\n    }),\n    side: {\n      valType: 'enumerated',\n      values: ['top', 'left', 'top left'],\n      editType: 'legend'\n    },\n    editType: 'legend'\n  },\n  editType: 'legend'\n};\n\n/***/ }),\n\n/***/ 14928:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  scrollBarWidth: 6,\n  scrollBarMinHeight: 20,\n  scrollBarColor: '#808BA4',\n  scrollBarMargin: 4,\n  scrollBarEnterAttrs: {\n    rx: 20,\n    ry: 3,\n    width: 0,\n    height: 0\n  },\n  // number of px between legend title and (left) side of legend (always in x direction and from inner border)\n  titlePad: 2,\n  // number of px between each legend item (x and/or y direction)\n  itemGap: 5\n};\n\n/***/ }),\n\n/***/ 99017:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_368140__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_368140__(73972);\nvar Lib = __nested_webpack_require_368140__(71828);\nvar Template = __nested_webpack_require_368140__(44467);\nvar plotsAttrs = __nested_webpack_require_368140__(9012);\nvar attributes = __nested_webpack_require_368140__(33030);\nvar basePlotLayoutAttributes = __nested_webpack_require_368140__(10820);\nvar helpers = __nested_webpack_require_368140__(10130);\nmodule.exports = function legendDefaults(layoutIn, layoutOut, fullData) {\n  var containerIn = layoutIn.legend || {};\n  var containerOut = Template.newContainer(layoutOut, 'legend');\n  function coerce(attr, dflt) {\n    return Lib.coerce(containerIn, containerOut, attributes, attr, dflt);\n  }\n  var trace;\n  var traceCoerce = function (attr, dflt) {\n    var traceIn = trace._input;\n    var traceOut = trace;\n    return Lib.coerce(traceIn, traceOut, plotsAttrs, attr, dflt);\n  };\n  var globalFont = layoutOut.font || {};\n  var grouptitlefont = Lib.coerceFont(coerce, 'grouptitlefont', Lib.extendFlat({}, globalFont, {\n    size: Math.round(globalFont.size * 1.1)\n  }));\n  var legendTraceCount = 0;\n  var legendReallyHasATrace = false;\n  var defaultOrder = 'normal';\n  for (var i = 0; i < fullData.length; i++) {\n    trace = fullData[i];\n    if (!trace.visible) continue;\n\n    // Note that we explicitly count any trace that is either shown or\n    // *would* be shown by default, toward the two traces you need to\n    // ensure the legend is shown by default, because this can still help\n    // disambiguate.\n    if (trace.showlegend || trace._dfltShowLegend && !(trace._module && trace._module.attributes && trace._module.attributes.showlegend && trace._module.attributes.showlegend.dflt === false)) {\n      legendTraceCount++;\n      if (trace.showlegend) {\n        legendReallyHasATrace = true;\n        // Always show the legend by default if there's a pie,\n        // or if there's only one trace but it's explicitly shown\n        if (Registry.traceIs(trace, 'pie-like') || trace._input.showlegend === true) {\n          legendTraceCount++;\n        }\n      }\n      Lib.coerceFont(traceCoerce, 'legendgrouptitle.font', grouptitlefont);\n    }\n    if (Registry.traceIs(trace, 'bar') && layoutOut.barmode === 'stack' || ['tonextx', 'tonexty'].indexOf(trace.fill) !== -1) {\n      defaultOrder = helpers.isGrouped({\n        traceorder: defaultOrder\n      }) ? 'grouped+reversed' : 'reversed';\n    }\n    if (trace.legendgroup !== undefined && trace.legendgroup !== '') {\n      defaultOrder = helpers.isReversed({\n        traceorder: defaultOrder\n      }) ? 'reversed+grouped' : 'grouped';\n    }\n  }\n  var showLegend = Lib.coerce(layoutIn, layoutOut, basePlotLayoutAttributes, 'showlegend', legendReallyHasATrace && legendTraceCount > 1);\n\n  // delete legend\n  if (showLegend === false) layoutOut.legend = undefined;\n  if (showLegend === false && !containerIn.uirevision) return;\n  coerce('uirevision', layoutOut.uirevision);\n  if (showLegend === false) return;\n  coerce('bgcolor', layoutOut.paper_bgcolor);\n  coerce('bordercolor');\n  coerce('borderwidth');\n  var itemFont = Lib.coerceFont(coerce, 'font', layoutOut.font);\n  var orientation = coerce('orientation');\n  var isHorizontal = orientation === 'h';\n  var defaultX, defaultY, defaultYAnchor;\n  if (isHorizontal) {\n    defaultX = 0;\n    if (Registry.getComponentMethod('rangeslider', 'isVisible')(layoutIn.xaxis)) {\n      defaultY = 1.1;\n      defaultYAnchor = 'bottom';\n    } else {\n      // maybe use y=1.1 / yanchor=bottom as above\n      //   to avoid https://github.com/plotly/plotly.js/issues/1199\n      //   in v3\n      defaultY = -0.1;\n      defaultYAnchor = 'top';\n    }\n  } else {\n    defaultX = 1.02;\n    defaultY = 1;\n    defaultYAnchor = 'auto';\n  }\n  coerce('traceorder', defaultOrder);\n  if (helpers.isGrouped(layoutOut.legend)) coerce('tracegroupgap');\n  coerce('entrywidth');\n  coerce('entrywidthmode');\n  coerce('itemsizing');\n  coerce('itemwidth');\n  coerce('itemclick');\n  coerce('itemdoubleclick');\n  coerce('groupclick');\n  coerce('x', defaultX);\n  coerce('xanchor');\n  coerce('y', defaultY);\n  coerce('yanchor', defaultYAnchor);\n  coerce('valign');\n  Lib.noneOrAll(containerIn, containerOut, ['x', 'y']);\n  var titleText = coerce('title.text');\n  if (titleText) {\n    coerce('title.side', isHorizontal ? 'left' : 'top');\n    var dfltTitleFont = Lib.extendFlat({}, itemFont, {\n      size: Lib.bigFont(itemFont.size)\n    });\n    Lib.coerceFont(coerce, 'title.font', dfltTitleFont);\n  }\n};\n\n/***/ }),\n\n/***/ 43969:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_372625__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_372625__(39898);\nvar Lib = __nested_webpack_require_372625__(71828);\nvar Plots = __nested_webpack_require_372625__(74875);\nvar Registry = __nested_webpack_require_372625__(73972);\nvar Events = __nested_webpack_require_372625__(11086);\nvar dragElement = __nested_webpack_require_372625__(28569);\nvar Drawing = __nested_webpack_require_372625__(91424);\nvar Color = __nested_webpack_require_372625__(7901);\nvar svgTextUtils = __nested_webpack_require_372625__(63893);\nvar handleClick = __nested_webpack_require_372625__(85167);\nvar constants = __nested_webpack_require_372625__(14928);\nvar alignmentConstants = __nested_webpack_require_372625__(18783);\nvar LINE_SPACING = alignmentConstants.LINE_SPACING;\nvar FROM_TL = alignmentConstants.FROM_TL;\nvar FROM_BR = alignmentConstants.FROM_BR;\nvar getLegendData = __nested_webpack_require_372625__(82424);\nvar style = __nested_webpack_require_372625__(53630);\nvar helpers = __nested_webpack_require_372625__(10130);\nvar MAIN_TITLE = 1;\nmodule.exports = function draw(gd, opts) {\n  if (!opts) opts = gd._fullLayout.legend || {};\n  return _draw(gd, opts);\n};\nfunction _draw(gd, legendObj) {\n  var fullLayout = gd._fullLayout;\n  var clipId = 'legend' + fullLayout._uid;\n  var layer;\n  var inHover = legendObj._inHover;\n  if (inHover) {\n    layer = legendObj.layer;\n    clipId += '-hover';\n  } else {\n    layer = fullLayout._infolayer;\n  }\n  if (!layer) return;\n  if (!gd._legendMouseDownTime) gd._legendMouseDownTime = 0;\n  var legendData;\n  if (!inHover) {\n    if (!gd.calcdata) return;\n    legendData = fullLayout.showlegend && getLegendData(gd.calcdata, legendObj);\n  } else {\n    if (!legendObj.entries) return;\n    legendData = getLegendData(legendObj.entries, legendObj);\n  }\n  var hiddenSlices = fullLayout.hiddenlabels || [];\n  if (!inHover && (!fullLayout.showlegend || !legendData.length)) {\n    layer.selectAll('.legend').remove();\n    fullLayout._topdefs.select('#' + clipId).remove();\n    return Plots.autoMargin(gd, 'legend');\n  }\n  var legend = Lib.ensureSingle(layer, 'g', 'legend', function (s) {\n    if (!inHover) s.attr('pointer-events', 'all');\n  });\n  var clipPath = Lib.ensureSingleById(fullLayout._topdefs, 'clipPath', clipId, function (s) {\n    s.append('rect');\n  });\n  var bg = Lib.ensureSingle(legend, 'rect', 'bg', function (s) {\n    s.attr('shape-rendering', 'crispEdges');\n  });\n  bg.call(Color.stroke, legendObj.bordercolor).call(Color.fill, legendObj.bgcolor).style('stroke-width', legendObj.borderwidth + 'px');\n  var scrollBox = Lib.ensureSingle(legend, 'g', 'scrollbox');\n  var title = legendObj.title;\n  legendObj._titleWidth = 0;\n  legendObj._titleHeight = 0;\n  if (title.text) {\n    var titleEl = Lib.ensureSingle(scrollBox, 'text', 'legendtitletext');\n    titleEl.attr('text-anchor', 'start').call(Drawing.font, title.font).text(title.text);\n    textLayout(titleEl, scrollBox, gd, legendObj, MAIN_TITLE); // handle mathjax or multi-line text and compute title height\n  } else {\n    scrollBox.selectAll('.legendtitletext').remove();\n  }\n  var scrollBar = Lib.ensureSingle(legend, 'rect', 'scrollbar', function (s) {\n    s.attr(constants.scrollBarEnterAttrs).call(Color.fill, constants.scrollBarColor);\n  });\n  var groups = scrollBox.selectAll('g.groups').data(legendData);\n  groups.enter().append('g').attr('class', 'groups');\n  groups.exit().remove();\n  var traces = groups.selectAll('g.traces').data(Lib.identity);\n  traces.enter().append('g').attr('class', 'traces');\n  traces.exit().remove();\n  traces.style('opacity', function (d) {\n    var trace = d[0].trace;\n    if (Registry.traceIs(trace, 'pie-like')) {\n      return hiddenSlices.indexOf(d[0].label) !== -1 ? 0.5 : 1;\n    } else {\n      return trace.visible === 'legendonly' ? 0.5 : 1;\n    }\n  }).each(function () {\n    d3.select(this).call(drawTexts, gd, legendObj);\n  }).call(style, gd, legendObj).each(function () {\n    if (!inHover) d3.select(this).call(setupTraceToggle, gd);\n  });\n  Lib.syncOrAsync([Plots.previousPromises, function () {\n    return computeLegendDimensions(gd, groups, traces, legendObj);\n  }, function () {\n    var gs = fullLayout._size;\n    var bw = legendObj.borderwidth;\n    if (!inHover) {\n      var expMargin = expandMargin(gd);\n\n      // IF expandMargin return a Promise (which is truthy),\n      // we're under a doAutoMargin redraw, so we don't have to\n      // draw the remaining pieces below\n      if (expMargin) return;\n      var lx = gs.l + gs.w * legendObj.x - FROM_TL[getXanchor(legendObj)] * legendObj._width;\n      var ly = gs.t + gs.h * (1 - legendObj.y) - FROM_TL[getYanchor(legendObj)] * legendObj._effHeight;\n      if (fullLayout.margin.autoexpand) {\n        var lx0 = lx;\n        var ly0 = ly;\n        lx = Lib.constrain(lx, 0, fullLayout.width - legendObj._width);\n        ly = Lib.constrain(ly, 0, fullLayout.height - legendObj._effHeight);\n        if (lx !== lx0) {\n          Lib.log('Constrain legend.x to make legend fit inside graph');\n        }\n        if (ly !== ly0) {\n          Lib.log('Constrain legend.y to make legend fit inside graph');\n        }\n      }\n\n      // Set size and position of all the elements that make up a legend:\n      // legend, background and border, scroll box and scroll bar as well as title\n      Drawing.setTranslate(legend, lx, ly);\n    }\n\n    // to be safe, remove previous listeners\n    scrollBar.on('.drag', null);\n    legend.on('wheel', null);\n    if (inHover || legendObj._height <= legendObj._maxHeight || gd._context.staticPlot) {\n      // if scrollbar should not be shown.\n      var height = legendObj._effHeight;\n\n      // if unified hover, let it be its full size\n      if (inHover) height = legendObj._height;\n      bg.attr({\n        width: legendObj._width - bw,\n        height: height - bw,\n        x: bw / 2,\n        y: bw / 2\n      });\n      Drawing.setTranslate(scrollBox, 0, 0);\n      clipPath.select('rect').attr({\n        width: legendObj._width - 2 * bw,\n        height: height - 2 * bw,\n        x: bw,\n        y: bw\n      });\n      Drawing.setClipUrl(scrollBox, clipId, gd);\n      Drawing.setRect(scrollBar, 0, 0, 0, 0);\n      delete legendObj._scrollY;\n    } else {\n      var scrollBarHeight = Math.max(constants.scrollBarMinHeight, legendObj._effHeight * legendObj._effHeight / legendObj._height);\n      var scrollBarYMax = legendObj._effHeight - scrollBarHeight - 2 * constants.scrollBarMargin;\n      var scrollBoxYMax = legendObj._height - legendObj._effHeight;\n      var scrollRatio = scrollBarYMax / scrollBoxYMax;\n      var scrollBoxY = Math.min(legendObj._scrollY || 0, scrollBoxYMax);\n\n      // increase the background and clip-path width\n      // by the scrollbar width and margin\n      bg.attr({\n        width: legendObj._width - 2 * bw + constants.scrollBarWidth + constants.scrollBarMargin,\n        height: legendObj._effHeight - bw,\n        x: bw / 2,\n        y: bw / 2\n      });\n      clipPath.select('rect').attr({\n        width: legendObj._width - 2 * bw + constants.scrollBarWidth + constants.scrollBarMargin,\n        height: legendObj._effHeight - 2 * bw,\n        x: bw,\n        y: bw + scrollBoxY\n      });\n      Drawing.setClipUrl(scrollBox, clipId, gd);\n      scrollHandler(scrollBoxY, scrollBarHeight, scrollRatio);\n\n      // scroll legend by mousewheel or touchpad swipe up/down\n      legend.on('wheel', function () {\n        scrollBoxY = Lib.constrain(legendObj._scrollY + d3.event.deltaY / scrollBarYMax * scrollBoxYMax, 0, scrollBoxYMax);\n        scrollHandler(scrollBoxY, scrollBarHeight, scrollRatio);\n        if (scrollBoxY !== 0 && scrollBoxY !== scrollBoxYMax) {\n          d3.event.preventDefault();\n        }\n      });\n      var eventY0, eventY1, scrollBoxY0;\n      var getScrollBarDragY = function (scrollBoxY0, eventY0, eventY1) {\n        var y = (eventY1 - eventY0) / scrollRatio + scrollBoxY0;\n        return Lib.constrain(y, 0, scrollBoxYMax);\n      };\n      var getNaturalDragY = function (scrollBoxY0, eventY0, eventY1) {\n        var y = (eventY0 - eventY1) / scrollRatio + scrollBoxY0;\n        return Lib.constrain(y, 0, scrollBoxYMax);\n      };\n\n      // scroll legend by dragging scrollBAR\n      var scrollBarDrag = d3.behavior.drag().on('dragstart', function () {\n        var e = d3.event.sourceEvent;\n        if (e.type === 'touchstart') {\n          eventY0 = e.changedTouches[0].clientY;\n        } else {\n          eventY0 = e.clientY;\n        }\n        scrollBoxY0 = scrollBoxY;\n      }).on('drag', function () {\n        var e = d3.event.sourceEvent;\n        if (e.buttons === 2 || e.ctrlKey) return;\n        if (e.type === 'touchmove') {\n          eventY1 = e.changedTouches[0].clientY;\n        } else {\n          eventY1 = e.clientY;\n        }\n        scrollBoxY = getScrollBarDragY(scrollBoxY0, eventY0, eventY1);\n        scrollHandler(scrollBoxY, scrollBarHeight, scrollRatio);\n      });\n      scrollBar.call(scrollBarDrag);\n\n      // scroll legend by touch-dragging scrollBOX\n      var scrollBoxTouchDrag = d3.behavior.drag().on('dragstart', function () {\n        var e = d3.event.sourceEvent;\n        if (e.type === 'touchstart') {\n          eventY0 = e.changedTouches[0].clientY;\n          scrollBoxY0 = scrollBoxY;\n        }\n      }).on('drag', function () {\n        var e = d3.event.sourceEvent;\n        if (e.type === 'touchmove') {\n          eventY1 = e.changedTouches[0].clientY;\n          scrollBoxY = getNaturalDragY(scrollBoxY0, eventY0, eventY1);\n          scrollHandler(scrollBoxY, scrollBarHeight, scrollRatio);\n        }\n      });\n      scrollBox.call(scrollBoxTouchDrag);\n    }\n    function scrollHandler(scrollBoxY, scrollBarHeight, scrollRatio) {\n      legendObj._scrollY = gd._fullLayout.legend._scrollY = scrollBoxY;\n      Drawing.setTranslate(scrollBox, 0, -scrollBoxY);\n      Drawing.setRect(scrollBar, legendObj._width, constants.scrollBarMargin + scrollBoxY * scrollRatio, constants.scrollBarWidth, scrollBarHeight);\n      clipPath.select('rect').attr('y', bw + scrollBoxY);\n    }\n    if (gd._context.edits.legendPosition) {\n      var xf, yf, x0, y0;\n      legend.classed('cursor-move', true);\n      dragElement.init({\n        element: legend.node(),\n        gd: gd,\n        prepFn: function () {\n          var transform = Drawing.getTranslate(legend);\n          x0 = transform.x;\n          y0 = transform.y;\n        },\n        moveFn: function (dx, dy) {\n          var newX = x0 + dx;\n          var newY = y0 + dy;\n          Drawing.setTranslate(legend, newX, newY);\n          xf = dragElement.align(newX, 0, gs.l, gs.l + gs.w, legendObj.xanchor);\n          yf = dragElement.align(newY, 0, gs.t + gs.h, gs.t, legendObj.yanchor);\n        },\n        doneFn: function () {\n          if (xf !== undefined && yf !== undefined) {\n            Registry.call('_guiRelayout', gd, {\n              'legend.x': xf,\n              'legend.y': yf\n            });\n          }\n        },\n        clickFn: function (numClicks, e) {\n          var clickedTrace = layer.selectAll('g.traces').filter(function () {\n            var bbox = this.getBoundingClientRect();\n            return e.clientX >= bbox.left && e.clientX <= bbox.right && e.clientY >= bbox.top && e.clientY <= bbox.bottom;\n          });\n          if (clickedTrace.size() > 0) {\n            clickOrDoubleClick(gd, legend, clickedTrace, numClicks, e);\n          }\n        }\n      });\n    }\n  }], gd);\n}\nfunction getTraceWidth(d, legendObj, textGap) {\n  var legendItem = d[0];\n  var legendWidth = legendItem.width;\n  var mode = legendObj.entrywidthmode;\n  var traceLegendWidth = legendItem.trace.legendwidth || legendObj.entrywidth;\n  if (mode === 'fraction') return legendObj._maxWidth * traceLegendWidth;\n  return textGap + (traceLegendWidth || legendWidth);\n}\nfunction clickOrDoubleClick(gd, legend, legendItem, numClicks, evt) {\n  var trace = legendItem.data()[0][0].trace;\n  var evtData = {\n    event: evt,\n    node: legendItem.node(),\n    curveNumber: trace.index,\n    expandedIndex: trace._expandedIndex,\n    data: gd.data,\n    layout: gd.layout,\n    frames: gd._transitionData._frames,\n    config: gd._context,\n    fullData: gd._fullData,\n    fullLayout: gd._fullLayout\n  };\n  if (trace._group) {\n    evtData.group = trace._group;\n  }\n  if (Registry.traceIs(trace, 'pie-like')) {\n    evtData.label = legendItem.datum()[0].label;\n  }\n  var clickVal = Events.triggerHandler(gd, 'plotly_legendclick', evtData);\n  if (clickVal === false) return;\n  if (numClicks === 1) {\n    legend._clickTimeout = setTimeout(function () {\n      if (!gd._fullLayout) return;\n      handleClick(legendItem, gd, numClicks);\n    }, gd._context.doubleClickDelay);\n  } else if (numClicks === 2) {\n    if (legend._clickTimeout) clearTimeout(legend._clickTimeout);\n    gd._legendMouseDownTime = 0;\n    var dblClickVal = Events.triggerHandler(gd, 'plotly_legenddoubleclick', evtData);\n    if (dblClickVal !== false) handleClick(legendItem, gd, numClicks);\n  }\n}\nfunction drawTexts(g, gd, legendObj) {\n  var legendItem = g.data()[0][0];\n  var trace = legendItem.trace;\n  var isPieLike = Registry.traceIs(trace, 'pie-like');\n  var isEditable = !legendObj._inHover && gd._context.edits.legendText && !isPieLike;\n  var maxNameLength = legendObj._maxNameLength;\n  var name, font;\n  if (legendItem.groupTitle) {\n    name = legendItem.groupTitle.text;\n    font = legendItem.groupTitle.font;\n  } else {\n    font = legendObj.font;\n    if (!legendObj.entries) {\n      name = isPieLike ? legendItem.label : trace.name;\n      if (trace._meta) {\n        name = Lib.templateString(name, trace._meta);\n      }\n    } else {\n      name = legendItem.text;\n    }\n  }\n  var textEl = Lib.ensureSingle(g, 'text', 'legendtext');\n  textEl.attr('text-anchor', 'start').call(Drawing.font, font).text(isEditable ? ensureLength(name, maxNameLength) : name);\n  var textGap = legendObj.itemwidth + constants.itemGap * 2;\n  svgTextUtils.positionText(textEl, textGap, 0);\n  if (isEditable) {\n    textEl.call(svgTextUtils.makeEditable, {\n      gd: gd,\n      text: name\n    }).call(textLayout, g, gd, legendObj).on('edit', function (newName) {\n      this.text(ensureLength(newName, maxNameLength)).call(textLayout, g, gd, legendObj);\n      var fullInput = legendItem.trace._fullInput || {};\n      var update = {};\n      if (Registry.hasTransform(fullInput, 'groupby')) {\n        var groupbyIndices = Registry.getTransformIndices(fullInput, 'groupby');\n        var index = groupbyIndices[groupbyIndices.length - 1];\n        var kcont = Lib.keyedContainer(fullInput, 'transforms[' + index + '].styles', 'target', 'value.name');\n        kcont.set(legendItem.trace._group, newName);\n        update = kcont.constructUpdate();\n      } else {\n        update.name = newName;\n      }\n      return Registry.call('_guiRestyle', gd, update, trace.index);\n    });\n  } else {\n    textLayout(textEl, g, gd, legendObj);\n  }\n}\n\n/*\n * Make sure we have a reasonably clickable region.\n * If this string is missing or very short, pad it with spaces out to at least\n * 4 characters, up to the max length of other labels, on the assumption that\n * most characters are wider than spaces so a string of spaces will usually be\n * no wider than the real labels.\n */\nfunction ensureLength(str, maxLength) {\n  var targetLength = Math.max(4, maxLength);\n  if (str && str.trim().length >= targetLength / 2) return str;\n  str = str || '';\n  for (var i = targetLength - str.length; i > 0; i--) str += ' ';\n  return str;\n}\nfunction setupTraceToggle(g, gd) {\n  var doubleClickDelay = gd._context.doubleClickDelay;\n  var newMouseDownTime;\n  var numClicks = 1;\n  var traceToggle = Lib.ensureSingle(g, 'rect', 'legendtoggle', function (s) {\n    if (!gd._context.staticPlot) {\n      s.style('cursor', 'pointer').attr('pointer-events', 'all');\n    }\n    s.call(Color.fill, 'rgba(0,0,0,0)');\n  });\n  if (gd._context.staticPlot) return;\n  traceToggle.on('mousedown', function () {\n    newMouseDownTime = new Date().getTime();\n    if (newMouseDownTime - gd._legendMouseDownTime < doubleClickDelay) {\n      // in a click train\n      numClicks += 1;\n    } else {\n      // new click train\n      numClicks = 1;\n      gd._legendMouseDownTime = newMouseDownTime;\n    }\n  });\n  traceToggle.on('mouseup', function () {\n    if (gd._dragged || gd._editing) return;\n    var legend = gd._fullLayout.legend;\n    if (new Date().getTime() - gd._legendMouseDownTime > doubleClickDelay) {\n      numClicks = Math.max(numClicks - 1, 1);\n    }\n    clickOrDoubleClick(gd, legend, g, numClicks, d3.event);\n  });\n}\nfunction textLayout(s, g, gd, legendObj, aTitle) {\n  if (legendObj._inHover) s.attr('data-notex', true); // do not process MathJax for unified hover\n  svgTextUtils.convertToTspans(s, gd, function () {\n    computeTextDimensions(g, gd, legendObj, aTitle);\n  });\n}\nfunction computeTextDimensions(g, gd, legendObj, aTitle) {\n  var legendItem = g.data()[0][0];\n  if (!legendObj._inHover && legendItem && !legendItem.trace.showlegend) {\n    g.remove();\n    return;\n  }\n  var mathjaxGroup = g.select('g[class*=math-group]');\n  var mathjaxNode = mathjaxGroup.node();\n  if (!legendObj) legendObj = gd._fullLayout.legend;\n  var bw = legendObj.borderwidth;\n  var font;\n  if (aTitle === MAIN_TITLE) {\n    font = legendObj.title.font;\n  } else if (legendItem.groupTitle) {\n    font = legendItem.groupTitle.font;\n  } else {\n    font = legendObj.font;\n  }\n  var lineHeight = font.size * LINE_SPACING;\n  var height, width;\n  if (mathjaxNode) {\n    var mathjaxBB = Drawing.bBox(mathjaxNode);\n    height = mathjaxBB.height;\n    width = mathjaxBB.width;\n    if (aTitle === MAIN_TITLE) {\n      Drawing.setTranslate(mathjaxGroup, bw, bw + height * 0.75);\n    } else {\n      // legend item\n      Drawing.setTranslate(mathjaxGroup, 0, height * 0.25);\n    }\n  } else {\n    var textEl = g.select(aTitle === MAIN_TITLE ? '.legendtitletext' : '.legendtext');\n    var textLines = svgTextUtils.lineCount(textEl);\n    var textNode = textEl.node();\n    height = lineHeight * textLines;\n    width = textNode ? Drawing.bBox(textNode).width : 0;\n\n    // approximation to height offset to center the font\n    // to avoid getBoundingClientRect\n    if (aTitle === MAIN_TITLE) {\n      if (legendObj.title.side === 'left') {\n        // add extra space between legend title and itmes\n        width += constants.itemGap * 2;\n      }\n      svgTextUtils.positionText(textEl, bw + constants.titlePad, bw + lineHeight);\n    } else {\n      // legend item\n      var x = constants.itemGap * 2 + legendObj.itemwidth;\n      if (legendItem.groupTitle) {\n        x = constants.itemGap;\n        width -= legendObj.itemwidth;\n      }\n      svgTextUtils.positionText(textEl, x, -lineHeight * ((textLines - 1) / 2 - 0.3));\n    }\n  }\n  if (aTitle === MAIN_TITLE) {\n    legendObj._titleWidth = width;\n    legendObj._titleHeight = height;\n  } else {\n    // legend item\n    legendItem.lineHeight = lineHeight;\n    legendItem.height = Math.max(height, 16) + 3;\n    legendItem.width = width;\n  }\n}\nfunction getTitleSize(legendObj) {\n  var w = 0;\n  var h = 0;\n  var side = legendObj.title.side;\n  if (side) {\n    if (side.indexOf('left') !== -1) {\n      w = legendObj._titleWidth;\n    }\n    if (side.indexOf('top') !== -1) {\n      h = legendObj._titleHeight;\n    }\n  }\n  return [w, h];\n}\n\n/*\n * Computes in fullLayout.legend:\n *\n *  - _height: legend height including items past scrollbox height\n *  - _maxHeight: maximum legend height before scrollbox is required\n *  - _effHeight: legend height w/ or w/o scrollbox\n *\n *  - _width: legend width\n *  - _maxWidth (for orientation:h only): maximum width before starting new row\n */\nfunction computeLegendDimensions(gd, groups, traces, legendObj) {\n  var fullLayout = gd._fullLayout;\n  if (!legendObj) legendObj = fullLayout.legend;\n  var gs = fullLayout._size;\n  var isVertical = helpers.isVertical(legendObj);\n  var isGrouped = helpers.isGrouped(legendObj);\n  var isFraction = legendObj.entrywidthmode === 'fraction';\n  var bw = legendObj.borderwidth;\n  var bw2 = 2 * bw;\n  var itemGap = constants.itemGap;\n  var textGap = legendObj.itemwidth + itemGap * 2;\n  var endPad = 2 * (bw + itemGap);\n  var yanchor = getYanchor(legendObj);\n  var isBelowPlotArea = legendObj.y < 0 || legendObj.y === 0 && yanchor === 'top';\n  var isAbovePlotArea = legendObj.y > 1 || legendObj.y === 1 && yanchor === 'bottom';\n  var traceGroupGap = legendObj.tracegroupgap;\n  var legendGroupWidths = {};\n\n  // - if below/above plot area, give it the maximum potential margin-push value\n  // - otherwise, extend the height of the plot area\n  legendObj._maxHeight = Math.max(isBelowPlotArea || isAbovePlotArea ? fullLayout.height / 2 : gs.h, 30);\n  var toggleRectWidth = 0;\n  legendObj._width = 0;\n  legendObj._height = 0;\n  var titleSize = getTitleSize(legendObj);\n  if (isVertical) {\n    traces.each(function (d) {\n      var h = d[0].height;\n      Drawing.setTranslate(this, bw + titleSize[0], bw + titleSize[1] + legendObj._height + h / 2 + itemGap);\n      legendObj._height += h;\n      legendObj._width = Math.max(legendObj._width, d[0].width);\n    });\n    toggleRectWidth = textGap + legendObj._width;\n    legendObj._width += itemGap + textGap + bw2;\n    legendObj._height += endPad;\n    if (isGrouped) {\n      groups.each(function (d, i) {\n        Drawing.setTranslate(this, 0, i * legendObj.tracegroupgap);\n      });\n      legendObj._height += (legendObj._lgroupsLength - 1) * legendObj.tracegroupgap;\n    }\n  } else {\n    var xanchor = getXanchor(legendObj);\n    var isLeftOfPlotArea = legendObj.x < 0 || legendObj.x === 0 && xanchor === 'right';\n    var isRightOfPlotArea = legendObj.x > 1 || legendObj.x === 1 && xanchor === 'left';\n    var isBeyondPlotAreaY = isAbovePlotArea || isBelowPlotArea;\n    var hw = fullLayout.width / 2;\n\n    // - if placed within x-margins, extend the width of the plot area\n    // - else if below/above plot area and anchored in the margin, extend to opposite margin,\n    // - otherwise give it the maximum potential margin-push value\n    legendObj._maxWidth = Math.max(isLeftOfPlotArea ? isBeyondPlotAreaY && xanchor === 'left' ? gs.l + gs.w : hw : isRightOfPlotArea ? isBeyondPlotAreaY && xanchor === 'right' ? gs.r + gs.w : hw : gs.w, 2 * textGap);\n    var maxItemWidth = 0;\n    var combinedItemWidth = 0;\n    traces.each(function (d) {\n      var w = getTraceWidth(d, legendObj, textGap);\n      maxItemWidth = Math.max(maxItemWidth, w);\n      combinedItemWidth += w;\n    });\n    toggleRectWidth = null;\n    var maxRowWidth = 0;\n    if (isGrouped) {\n      var maxGroupHeightInRow = 0;\n      var groupOffsetX = 0;\n      var groupOffsetY = 0;\n      groups.each(function () {\n        var maxWidthInGroup = 0;\n        var offsetY = 0;\n        d3.select(this).selectAll('g.traces').each(function (d) {\n          var w = getTraceWidth(d, legendObj, textGap);\n          var h = d[0].height;\n          Drawing.setTranslate(this, titleSize[0], titleSize[1] + bw + itemGap + h / 2 + offsetY);\n          offsetY += h;\n          maxWidthInGroup = Math.max(maxWidthInGroup, w);\n          legendGroupWidths[d[0].trace.legendgroup] = maxWidthInGroup;\n        });\n        var next = maxWidthInGroup + itemGap;\n\n        // horizontal_wrapping\n        if (\n        // not on the first column already\n        groupOffsetX > 0 &&\n        // goes beyound limit\n        next + bw + groupOffsetX > legendObj._maxWidth) {\n          maxRowWidth = Math.max(maxRowWidth, groupOffsetX);\n          groupOffsetX = 0;\n          groupOffsetY += maxGroupHeightInRow + traceGroupGap;\n          maxGroupHeightInRow = offsetY;\n        } else {\n          maxGroupHeightInRow = Math.max(maxGroupHeightInRow, offsetY);\n        }\n        Drawing.setTranslate(this, groupOffsetX, groupOffsetY);\n        groupOffsetX += next;\n      });\n      legendObj._width = Math.max(maxRowWidth, groupOffsetX) + bw;\n      legendObj._height = groupOffsetY + maxGroupHeightInRow + endPad;\n    } else {\n      var nTraces = traces.size();\n      var oneRowLegend = combinedItemWidth + bw2 + (nTraces - 1) * itemGap < legendObj._maxWidth;\n      var maxItemHeightInRow = 0;\n      var offsetX = 0;\n      var offsetY = 0;\n      var rowWidth = 0;\n      traces.each(function (d) {\n        var h = d[0].height;\n        var w = getTraceWidth(d, legendObj, textGap, isGrouped);\n        var next = oneRowLegend ? w : maxItemWidth;\n        if (!isFraction) {\n          next += itemGap;\n        }\n        if (next + bw + offsetX - itemGap >= legendObj._maxWidth) {\n          maxRowWidth = Math.max(maxRowWidth, rowWidth);\n          offsetX = 0;\n          offsetY += maxItemHeightInRow;\n          legendObj._height += maxItemHeightInRow;\n          maxItemHeightInRow = 0;\n        }\n        Drawing.setTranslate(this, titleSize[0] + bw + offsetX, titleSize[1] + bw + offsetY + h / 2 + itemGap);\n        rowWidth = offsetX + w + itemGap;\n        offsetX += next;\n        maxItemHeightInRow = Math.max(maxItemHeightInRow, h);\n      });\n      if (oneRowLegend) {\n        legendObj._width = offsetX + bw2;\n        legendObj._height = maxItemHeightInRow + endPad;\n      } else {\n        legendObj._width = Math.max(maxRowWidth, rowWidth) + bw2;\n        legendObj._height += maxItemHeightInRow + endPad;\n      }\n    }\n  }\n  legendObj._width = Math.ceil(Math.max(legendObj._width + titleSize[0], legendObj._titleWidth + 2 * (bw + constants.titlePad)));\n  legendObj._height = Math.ceil(Math.max(legendObj._height + titleSize[1], legendObj._titleHeight + 2 * (bw + constants.itemGap)));\n  legendObj._effHeight = Math.min(legendObj._height, legendObj._maxHeight);\n  var edits = gd._context.edits;\n  var isEditable = edits.legendText || edits.legendPosition;\n  traces.each(function (d) {\n    var traceToggle = d3.select(this).select('.legendtoggle');\n    var h = d[0].height;\n    var legendgroup = d[0].trace.legendgroup;\n    var traceWidth = getTraceWidth(d, legendObj, textGap);\n    if (isGrouped && legendgroup !== '') {\n      traceWidth = legendGroupWidths[legendgroup];\n    }\n    var w = isEditable ? textGap : toggleRectWidth || traceWidth;\n    if (!isVertical && !isFraction) {\n      w += itemGap / 2;\n    }\n    Drawing.setRect(traceToggle, 0, -h / 2, w, h);\n  });\n}\nfunction expandMargin(gd) {\n  var fullLayout = gd._fullLayout;\n  var legendObj = fullLayout.legend;\n  var xanchor = getXanchor(legendObj);\n  var yanchor = getYanchor(legendObj);\n  return Plots.autoMargin(gd, 'legend', {\n    x: legendObj.x,\n    y: legendObj.y,\n    l: legendObj._width * FROM_TL[xanchor],\n    r: legendObj._width * FROM_BR[xanchor],\n    b: legendObj._effHeight * FROM_BR[yanchor],\n    t: legendObj._effHeight * FROM_TL[yanchor]\n  });\n}\nfunction getXanchor(legendObj) {\n  return Lib.isRightAnchor(legendObj) ? 'right' : Lib.isCenterAnchor(legendObj) ? 'center' : 'left';\n}\nfunction getYanchor(legendObj) {\n  return Lib.isBottomAnchor(legendObj) ? 'bottom' : Lib.isMiddleAnchor(legendObj) ? 'middle' : 'top';\n}\n\n/***/ }),\n\n/***/ 82424:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_399227__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_399227__(73972);\nvar helpers = __nested_webpack_require_399227__(10130);\nmodule.exports = function getLegendData(calcdata, opts) {\n  var inHover = opts._inHover;\n  var grouped = helpers.isGrouped(opts);\n  var reversed = helpers.isReversed(opts);\n  var lgroupToTraces = {};\n  var lgroups = [];\n  var hasOneNonBlankGroup = false;\n  var slicesShown = {};\n  var lgroupi = 0;\n  var maxNameLength = 0;\n  var i, j;\n  function addOneItem(legendGroup, legendItem) {\n    // each '' legend group is treated as a separate group\n    if (legendGroup === '' || !helpers.isGrouped(opts)) {\n      // TODO: check this against fullData legendgroups?\n      var uniqueGroup = '~~i' + lgroupi;\n      lgroups.push(uniqueGroup);\n      lgroupToTraces[uniqueGroup] = [legendItem];\n      lgroupi++;\n    } else if (lgroups.indexOf(legendGroup) === -1) {\n      lgroups.push(legendGroup);\n      hasOneNonBlankGroup = true;\n      lgroupToTraces[legendGroup] = [legendItem];\n    } else {\n      lgroupToTraces[legendGroup].push(legendItem);\n    }\n  }\n\n  // build an { legendgroup: [cd0, cd0], ... } object\n  for (i = 0; i < calcdata.length; i++) {\n    var cd = calcdata[i];\n    var cd0 = cd[0];\n    var trace = cd0.trace;\n    var lgroup = trace.legendgroup;\n    if (!inHover && (!trace.visible || !trace.showlegend)) continue;\n    if (Registry.traceIs(trace, 'pie-like')) {\n      if (!slicesShown[lgroup]) slicesShown[lgroup] = {};\n      for (j = 0; j < cd.length; j++) {\n        var labelj = cd[j].label;\n        if (!slicesShown[lgroup][labelj]) {\n          addOneItem(lgroup, {\n            label: labelj,\n            color: cd[j].color,\n            i: cd[j].i,\n            trace: trace,\n            pts: cd[j].pts\n          });\n          slicesShown[lgroup][labelj] = true;\n          maxNameLength = Math.max(maxNameLength, (labelj || '').length);\n        }\n      }\n    } else {\n      addOneItem(lgroup, cd0);\n      maxNameLength = Math.max(maxNameLength, (trace.name || '').length);\n    }\n  }\n\n  // won't draw a legend in this case\n  if (!lgroups.length) return [];\n\n  // collapse all groups into one if all groups are blank\n  var shouldCollapse = !hasOneNonBlankGroup || !grouped;\n  var legendData = [];\n  for (i = 0; i < lgroups.length; i++) {\n    var t = lgroupToTraces[lgroups[i]];\n    if (shouldCollapse) {\n      legendData.push(t[0]);\n    } else {\n      legendData.push(t);\n    }\n  }\n  if (shouldCollapse) legendData = [legendData];\n  for (i = 0; i < legendData.length; i++) {\n    // find minimum rank within group\n    var groupMinRank = Infinity;\n    for (j = 0; j < legendData[i].length; j++) {\n      var rank = legendData[i][j].trace.legendrank;\n      if (groupMinRank > rank) groupMinRank = rank;\n    }\n\n    // record on first group element\n    legendData[i][0]._groupMinRank = groupMinRank;\n    legendData[i][0]._preGroupSort = i;\n  }\n  var orderFn1 = function (a, b) {\n    return a[0]._groupMinRank - b[0]._groupMinRank || a[0]._preGroupSort - b[0]._preGroupSort // fallback for old Chrome < 70 https://bugs.chromium.org/p/v8/issues/detail?id=90\n    ;\n  };\n\n  var orderFn2 = function (a, b) {\n    return a.trace.legendrank - b.trace.legendrank || a._preSort - b._preSort // fallback for old Chrome < 70 https://bugs.chromium.org/p/v8/issues/detail?id=90\n    ;\n  };\n\n  // sort considering minimum group legendrank\n  legendData.forEach(function (a, k) {\n    a[0]._preGroupSort = k;\n  });\n  legendData.sort(orderFn1);\n  for (i = 0; i < legendData.length; i++) {\n    // sort considering trace.legendrank and legend.traceorder\n    legendData[i].forEach(function (a, k) {\n      a._preSort = k;\n    });\n    legendData[i].sort(orderFn2);\n    var firstItemTrace = legendData[i][0].trace;\n    var groupTitle = null;\n    // get group title text\n    for (j = 0; j < legendData[i].length; j++) {\n      var gt = legendData[i][j].trace.legendgrouptitle;\n      if (gt && gt.text) {\n        groupTitle = gt;\n        if (inHover) gt.font = opts._groupTitleFont;\n        break;\n      }\n    }\n\n    // reverse order\n    if (reversed) legendData[i].reverse();\n    if (groupTitle) {\n      var hasPieLike = false;\n      for (j = 0; j < legendData[i].length; j++) {\n        if (Registry.traceIs(legendData[i][j].trace, 'pie-like')) {\n          hasPieLike = true;\n          break;\n        }\n      }\n\n      // set group title text\n      legendData[i].unshift({\n        i: -1,\n        groupTitle: groupTitle,\n        noClick: hasPieLike,\n        trace: {\n          showlegend: firstItemTrace.showlegend,\n          legendgroup: firstItemTrace.legendgroup,\n          visible: opts.groupclick === 'toggleitem' ? true : firstItemTrace.visible\n        }\n      });\n    }\n\n    // rearrange lgroupToTraces into a d3-friendly array of arrays\n    for (j = 0; j < legendData[i].length; j++) {\n      legendData[i][j] = [legendData[i][j]];\n    }\n  }\n\n  // number of legend groups - needed in legend/draw.js\n  opts._lgroupsLength = legendData.length;\n  // maximum name/label length - needed in legend/draw.js\n  opts._maxNameLength = maxNameLength;\n  return legendData;\n};\n\n/***/ }),\n\n/***/ 85167:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_404367__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_404367__(71828);\nvar Registry = __nested_webpack_require_404367__(73972);\nvar SHOWISOLATETIP = true;\nmodule.exports = function handleClick(g, gd, numClicks) {\n  var fullLayout = gd._fullLayout;\n  if (gd._dragged || gd._editing) return;\n  var itemClick = fullLayout.legend.itemclick;\n  var itemDoubleClick = fullLayout.legend.itemdoubleclick;\n  var groupClick = fullLayout.legend.groupclick;\n  if (numClicks === 1 && itemClick === 'toggle' && itemDoubleClick === 'toggleothers' && SHOWISOLATETIP && gd.data && gd._context.showTips) {\n    Lib.notifier(Lib._(gd, 'Double-click on legend to isolate one trace'), 'long');\n    SHOWISOLATETIP = false;\n  } else {\n    SHOWISOLATETIP = false;\n  }\n  var mode;\n  if (numClicks === 1) mode = itemClick;else if (numClicks === 2) mode = itemDoubleClick;\n  if (!mode) return;\n  var toggleGroup = groupClick === 'togglegroup';\n  var hiddenSlices = fullLayout.hiddenlabels ? fullLayout.hiddenlabels.slice() : [];\n  var legendItem = g.data()[0][0];\n  if (legendItem.groupTitle && legendItem.noClick) return;\n  var fullData = gd._fullData;\n  var fullTrace = legendItem.trace;\n  var legendgroup = fullTrace.legendgroup;\n  var i, j, kcont, key, keys, val;\n  var attrUpdate = {};\n  var attrIndices = [];\n  var carrs = [];\n  var carrIdx = [];\n  function insertUpdate(traceIndex, key, value) {\n    var attrIndex = attrIndices.indexOf(traceIndex);\n    var valueArray = attrUpdate[key];\n    if (!valueArray) {\n      valueArray = attrUpdate[key] = [];\n    }\n    if (attrIndices.indexOf(traceIndex) === -1) {\n      attrIndices.push(traceIndex);\n      attrIndex = attrIndices.length - 1;\n    }\n    valueArray[attrIndex] = value;\n    return attrIndex;\n  }\n  function setVisibility(fullTrace, visibility) {\n    if (legendItem.groupTitle && !toggleGroup) return;\n    var fullInput = fullTrace._fullInput;\n    if (Registry.hasTransform(fullInput, 'groupby')) {\n      var kcont = carrs[fullInput.index];\n      if (!kcont) {\n        var groupbyIndices = Registry.getTransformIndices(fullInput, 'groupby');\n        var lastGroupbyIndex = groupbyIndices[groupbyIndices.length - 1];\n        kcont = Lib.keyedContainer(fullInput, 'transforms[' + lastGroupbyIndex + '].styles', 'target', 'value.visible');\n        carrs[fullInput.index] = kcont;\n      }\n      var curState = kcont.get(fullTrace._group);\n\n      // If not specified, assume visible. This happens if there are other style\n      // properties set for a group but not the visibility. There are many similar\n      // ways to do this (e.g. why not just `curState = fullTrace.visible`??? The\n      // answer is: because it breaks other things like groupby trace names in\n      // subtle ways.)\n      if (curState === undefined) {\n        curState = true;\n      }\n      if (curState !== false) {\n        // true -> legendonly. All others toggle to true:\n        kcont.set(fullTrace._group, visibility);\n      }\n      carrIdx[fullInput.index] = insertUpdate(fullInput.index, 'visible', fullInput.visible === false ? false : true);\n    } else {\n      // false -> false (not possible since will not be visible in legend)\n      // true -> legendonly\n      // legendonly -> true\n      var nextVisibility = fullInput.visible === false ? false : visibility;\n      insertUpdate(fullInput.index, 'visible', nextVisibility);\n    }\n  }\n  if (Registry.traceIs(fullTrace, 'pie-like')) {\n    var thisLabel = legendItem.label;\n    var thisLabelIndex = hiddenSlices.indexOf(thisLabel);\n    if (mode === 'toggle') {\n      if (thisLabelIndex === -1) hiddenSlices.push(thisLabel);else hiddenSlices.splice(thisLabelIndex, 1);\n    } else if (mode === 'toggleothers') {\n      hiddenSlices = [];\n      gd.calcdata[0].forEach(function (d) {\n        if (thisLabel !== d.label) {\n          hiddenSlices.push(d.label);\n        }\n      });\n      if (gd._fullLayout.hiddenlabels && gd._fullLayout.hiddenlabels.length === hiddenSlices.length && thisLabelIndex === -1) {\n        hiddenSlices = [];\n      }\n    }\n    Registry.call('_guiRelayout', gd, 'hiddenlabels', hiddenSlices);\n  } else {\n    var hasLegendgroup = legendgroup && legendgroup.length;\n    var traceIndicesInGroup = [];\n    var tracei;\n    if (hasLegendgroup) {\n      for (i = 0; i < fullData.length; i++) {\n        tracei = fullData[i];\n        if (!tracei.visible) continue;\n        if (tracei.legendgroup === legendgroup) {\n          traceIndicesInGroup.push(i);\n        }\n      }\n    }\n    if (mode === 'toggle') {\n      var nextVisibility;\n      switch (fullTrace.visible) {\n        case true:\n          nextVisibility = 'legendonly';\n          break;\n        case false:\n          nextVisibility = false;\n          break;\n        case 'legendonly':\n          nextVisibility = true;\n          break;\n      }\n      if (hasLegendgroup) {\n        if (toggleGroup) {\n          for (i = 0; i < fullData.length; i++) {\n            if (fullData[i].visible !== false && fullData[i].legendgroup === legendgroup) {\n              setVisibility(fullData[i], nextVisibility);\n            }\n          }\n        } else {\n          setVisibility(fullTrace, nextVisibility);\n        }\n      } else {\n        setVisibility(fullTrace, nextVisibility);\n      }\n    } else if (mode === 'toggleothers') {\n      // Compute the clicked index. expandedIndex does what we want for expanded traces\n      // but also culls hidden traces. That means we have some work to do.\n      var isClicked, isInGroup, notInLegend, otherState;\n      var isIsolated = true;\n      for (i = 0; i < fullData.length; i++) {\n        isClicked = fullData[i] === fullTrace;\n        notInLegend = fullData[i].showlegend !== true;\n        if (isClicked || notInLegend) continue;\n        isInGroup = hasLegendgroup && fullData[i].legendgroup === legendgroup;\n        if (!isInGroup && fullData[i].visible === true && !Registry.traceIs(fullData[i], 'notLegendIsolatable')) {\n          isIsolated = false;\n          break;\n        }\n      }\n      for (i = 0; i < fullData.length; i++) {\n        // False is sticky; we don't change it.\n        if (fullData[i].visible === false) continue;\n        if (Registry.traceIs(fullData[i], 'notLegendIsolatable')) {\n          continue;\n        }\n        switch (fullTrace.visible) {\n          case 'legendonly':\n            setVisibility(fullData[i], true);\n            break;\n          case true:\n            otherState = isIsolated ? true : 'legendonly';\n            isClicked = fullData[i] === fullTrace;\n            // N.B. consider traces that have a set legendgroup as toggleable\n            notInLegend = fullData[i].showlegend !== true && !fullData[i].legendgroup;\n            isInGroup = isClicked || hasLegendgroup && fullData[i].legendgroup === legendgroup;\n            setVisibility(fullData[i], isInGroup || notInLegend ? true : otherState);\n            break;\n        }\n      }\n    }\n    for (i = 0; i < carrs.length; i++) {\n      kcont = carrs[i];\n      if (!kcont) continue;\n      var update = kcont.constructUpdate();\n      var updateKeys = Object.keys(update);\n      for (j = 0; j < updateKeys.length; j++) {\n        key = updateKeys[j];\n        val = attrUpdate[key] = attrUpdate[key] || [];\n        val[carrIdx[i]] = update[key];\n      }\n    }\n\n    // The length of the value arrays should be equal and any unspecified\n    // values should be explicitly undefined for them to get properly culled\n    // as updates and not accidentally reset to the default value. This fills\n    // out sparse arrays with the required number of undefined values:\n    keys = Object.keys(attrUpdate);\n    for (i = 0; i < keys.length; i++) {\n      key = keys[i];\n      for (j = 0; j < attrIndices.length; j++) {\n        // Use hasOwnProperty to protect against falsy values:\n        if (!attrUpdate[key].hasOwnProperty(j)) {\n          attrUpdate[key][j] = undefined;\n        }\n      }\n    }\n    Registry.call('_guiRestyle', gd, attrUpdate, attrIndices);\n  }\n};\n\n/***/ }),\n\n/***/ 10130:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\nexports.isGrouped = function isGrouped(legendLayout) {\n  return (legendLayout.traceorder || '').indexOf('grouped') !== -1;\n};\nexports.isVertical = function isVertical(legendLayout) {\n  return legendLayout.orientation !== 'h';\n};\nexports.isReversed = function isReversed(legendLayout) {\n  return (legendLayout.traceorder || '').indexOf('reversed') !== -1;\n};\n\n/***/ }),\n\n/***/ 2199:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_412794__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'component',\n  name: 'legend',\n  layoutAttributes: __nested_webpack_require_412794__(33030),\n  supplyLayoutDefaults: __nested_webpack_require_412794__(99017),\n  draw: __nested_webpack_require_412794__(43969),\n  style: __nested_webpack_require_412794__(53630)\n};\n\n/***/ }),\n\n/***/ 53630:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_413148__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_413148__(39898);\nvar Registry = __nested_webpack_require_413148__(73972);\nvar Lib = __nested_webpack_require_413148__(71828);\nvar strTranslate = Lib.strTranslate;\nvar Drawing = __nested_webpack_require_413148__(91424);\nvar Color = __nested_webpack_require_413148__(7901);\nvar extractOpts = (__nested_webpack_require_413148__(52075).extractOpts);\nvar subTypes = __nested_webpack_require_413148__(34098);\nvar stylePie = __nested_webpack_require_413148__(63463);\nvar pieCastOption = (__nested_webpack_require_413148__(53581).castOption);\nvar constants = __nested_webpack_require_413148__(14928);\nvar CST_MARKER_SIZE = 12;\nvar CST_LINE_WIDTH = 5;\nvar CST_MARKER_LINE_WIDTH = 2;\nvar MAX_LINE_WIDTH = 10;\nvar MAX_MARKER_LINE_WIDTH = 5;\nmodule.exports = function style(s, gd, legend) {\n  var fullLayout = gd._fullLayout;\n  if (!legend) legend = fullLayout.legend;\n  var constantItemSizing = legend.itemsizing === 'constant';\n  var itemWidth = legend.itemwidth;\n  var centerPos = (itemWidth + constants.itemGap * 2) / 2;\n  var centerTransform = strTranslate(centerPos, 0);\n  var boundLineWidth = function (mlw, cont, max, cst) {\n    var v;\n    if (mlw + 1) {\n      v = mlw;\n    } else if (cont && cont.width > 0) {\n      v = cont.width;\n    } else {\n      return 0;\n    }\n    return constantItemSizing ? cst : Math.min(v, max);\n  };\n  s.each(function (d) {\n    var traceGroup = d3.select(this);\n    var layers = Lib.ensureSingle(traceGroup, 'g', 'layers');\n    layers.style('opacity', d[0].trace.opacity);\n    var valign = legend.valign;\n    var lineHeight = d[0].lineHeight;\n    var height = d[0].height;\n    if (valign === 'middle' || !lineHeight || !height) {\n      layers.attr('transform', null);\n    } else {\n      var factor = {\n        top: 1,\n        bottom: -1\n      }[valign];\n      var markerOffsetY = factor * (0.5 * (lineHeight - height + 3));\n      layers.attr('transform', strTranslate(0, markerOffsetY));\n    }\n    var fill = layers.selectAll('g.legendfill').data([d]);\n    fill.enter().append('g').classed('legendfill', true);\n    var line = layers.selectAll('g.legendlines').data([d]);\n    line.enter().append('g').classed('legendlines', true);\n    var symbol = layers.selectAll('g.legendsymbols').data([d]);\n    symbol.enter().append('g').classed('legendsymbols', true);\n    symbol.selectAll('g.legendpoints').data([d]).enter().append('g').classed('legendpoints', true);\n  }).each(styleSpatial).each(styleWaterfalls).each(styleFunnels).each(styleBars).each(styleBoxes).each(styleFunnelareas).each(stylePies).each(styleLines).each(stylePoints).each(styleCandles).each(styleOHLC);\n  function styleLines(d) {\n    var styleGuide = getStyleGuide(d);\n    var showFill = styleGuide.showFill;\n    var showLine = styleGuide.showLine;\n    var showGradientLine = styleGuide.showGradientLine;\n    var showGradientFill = styleGuide.showGradientFill;\n    var anyFill = styleGuide.anyFill;\n    var anyLine = styleGuide.anyLine;\n    var d0 = d[0];\n    var trace = d0.trace;\n    var dMod, tMod;\n    var cOpts = extractOpts(trace);\n    var colorscale = cOpts.colorscale;\n    var reversescale = cOpts.reversescale;\n    var fillStyle = function (s) {\n      if (s.size()) {\n        if (showFill) {\n          Drawing.fillGroupStyle(s, gd);\n        } else {\n          var gradientID = 'legendfill-' + trace.uid;\n          Drawing.gradient(s, gd, gradientID, getGradientDirection(reversescale), colorscale, 'fill');\n        }\n      }\n    };\n    var lineGradient = function (s) {\n      if (s.size()) {\n        var gradientID = 'legendline-' + trace.uid;\n        Drawing.lineGroupStyle(s);\n        Drawing.gradient(s, gd, gradientID, getGradientDirection(reversescale), colorscale, 'stroke');\n      }\n    };\n\n    // with fill and no markers or text, move the line and fill up a bit\n    // so it's more centered\n\n    var pathStart = subTypes.hasMarkers(trace) || !anyFill ? 'M5,0' :\n    // with a line leave it slightly below center, to leave room for the\n    // line thickness and because the line is usually more prominent\n    anyLine ? 'M5,-2' : 'M5,-3';\n    var this3 = d3.select(this);\n    var fill = this3.select('.legendfill').selectAll('path').data(showFill || showGradientFill ? [d] : []);\n    fill.enter().append('path').classed('js-fill', true);\n    fill.exit().remove();\n    fill.attr('d', pathStart + 'h' + itemWidth + 'v6h-' + itemWidth + 'z').call(fillStyle);\n    if (showLine || showGradientLine) {\n      var lw = boundLineWidth(undefined, trace.line, MAX_LINE_WIDTH, CST_LINE_WIDTH);\n      tMod = Lib.minExtend(trace, {\n        line: {\n          width: lw\n        }\n      });\n      dMod = [Lib.minExtend(d0, {\n        trace: tMod\n      })];\n    }\n    var line = this3.select('.legendlines').selectAll('path').data(showLine || showGradientLine ? [dMod] : []);\n    line.enter().append('path').classed('js-line', true);\n    line.exit().remove();\n\n    // this is ugly... but you can't apply a gradient to a perfectly\n    // horizontal or vertical line. Presumably because then\n    // the system doesn't know how to scale vertical variation, even\n    // though there *is* no vertical variation in this case.\n    // so add an invisibly small angle to the line\n    // This issue (and workaround) exist across (Mac) Chrome, FF, and Safari\n    line.attr('d', pathStart + (showGradientLine ? 'l' + itemWidth + ',0.0001' : 'h' + itemWidth)).call(showLine ? Drawing.lineGroupStyle : lineGradient);\n  }\n  function stylePoints(d) {\n    var styleGuide = getStyleGuide(d);\n    var anyFill = styleGuide.anyFill;\n    var anyLine = styleGuide.anyLine;\n    var showLine = styleGuide.showLine;\n    var showMarker = styleGuide.showMarker;\n    var d0 = d[0];\n    var trace = d0.trace;\n    var showText = !showMarker && !anyLine && !anyFill && subTypes.hasText(trace);\n    var dMod, tMod;\n\n    // 'scatter3d' don't use gd.calcdata,\n    // use d0.trace to infer arrayOk attributes\n\n    function boundVal(attrIn, arrayToValFn, bounds, cst) {\n      var valIn = Lib.nestedProperty(trace, attrIn).get();\n      var valToBound = Lib.isArrayOrTypedArray(valIn) && arrayToValFn ? arrayToValFn(valIn) : valIn;\n      if (constantItemSizing && valToBound && cst !== undefined) {\n        valToBound = cst;\n      }\n      if (bounds) {\n        if (valToBound < bounds[0]) return bounds[0];else if (valToBound > bounds[1]) return bounds[1];\n      }\n      return valToBound;\n    }\n    function pickFirst(array) {\n      if (d0._distinct && d0.index && array[d0.index]) return array[d0.index];\n      return array[0];\n    }\n\n    // constrain text, markers, etc so they'll fit on the legend\n    if (showMarker || showText || showLine) {\n      var dEdit = {};\n      var tEdit = {};\n      if (showMarker) {\n        dEdit.mc = boundVal('marker.color', pickFirst);\n        dEdit.mx = boundVal('marker.symbol', pickFirst);\n        dEdit.mo = boundVal('marker.opacity', Lib.mean, [0.2, 1]);\n        dEdit.mlc = boundVal('marker.line.color', pickFirst);\n        dEdit.mlw = boundVal('marker.line.width', Lib.mean, [0, 5], CST_MARKER_LINE_WIDTH);\n        tEdit.marker = {\n          sizeref: 1,\n          sizemin: 1,\n          sizemode: 'diameter'\n        };\n        var ms = boundVal('marker.size', Lib.mean, [2, 16], CST_MARKER_SIZE);\n        dEdit.ms = ms;\n        tEdit.marker.size = ms;\n      }\n      if (showLine) {\n        tEdit.line = {\n          width: boundVal('line.width', pickFirst, [0, 10], CST_LINE_WIDTH)\n        };\n      }\n      if (showText) {\n        dEdit.tx = 'Aa';\n        dEdit.tp = boundVal('textposition', pickFirst);\n        dEdit.ts = 10;\n        dEdit.tc = boundVal('textfont.color', pickFirst);\n        dEdit.tf = boundVal('textfont.family', pickFirst);\n      }\n      dMod = [Lib.minExtend(d0, dEdit)];\n      tMod = Lib.minExtend(trace, tEdit);\n\n      // always show legend items in base state\n      tMod.selectedpoints = null;\n\n      // never show texttemplate\n      tMod.texttemplate = null;\n    }\n    var ptgroup = d3.select(this).select('g.legendpoints');\n    var pts = ptgroup.selectAll('path.scatterpts').data(showMarker ? dMod : []);\n    // make sure marker is on the bottom, in case it enters after text\n    pts.enter().insert('path', ':first-child').classed('scatterpts', true).attr('transform', centerTransform);\n    pts.exit().remove();\n    pts.call(Drawing.pointStyle, tMod, gd);\n\n    // 'mrc' is set in pointStyle and used in textPointStyle:\n    // constrain it here\n    if (showMarker) dMod[0].mrc = 3;\n    var txt = ptgroup.selectAll('g.pointtext').data(showText ? dMod : []);\n    txt.enter().append('g').classed('pointtext', true).append('text').attr('transform', centerTransform);\n    txt.exit().remove();\n    txt.selectAll('text').call(Drawing.textPointStyle, tMod, gd);\n  }\n  function styleWaterfalls(d) {\n    var trace = d[0].trace;\n    var isWaterfall = trace.type === 'waterfall';\n    if (d[0]._distinct && isWaterfall) {\n      var cont = d[0].trace[d[0].dir].marker;\n      d[0].mc = cont.color;\n      d[0].mlw = cont.line.width;\n      d[0].mlc = cont.line.color;\n      return styleBarLike(d, this, 'waterfall');\n    }\n    var ptsData = [];\n    if (trace.visible && isWaterfall) {\n      ptsData = d[0].hasTotals ? [['increasing', 'M-6,-6V6H0Z'], ['totals', 'M6,6H0L-6,-6H-0Z'], ['decreasing', 'M6,6V-6H0Z']] : [['increasing', 'M-6,-6V6H6Z'], ['decreasing', 'M6,6V-6H-6Z']];\n    }\n    var pts = d3.select(this).select('g.legendpoints').selectAll('path.legendwaterfall').data(ptsData);\n    pts.enter().append('path').classed('legendwaterfall', true).attr('transform', centerTransform).style('stroke-miterlimit', 1);\n    pts.exit().remove();\n    pts.each(function (dd) {\n      var pt = d3.select(this);\n      var cont = trace[dd[0]].marker;\n      var lw = boundLineWidth(undefined, cont.line, MAX_MARKER_LINE_WIDTH, CST_MARKER_LINE_WIDTH);\n      pt.attr('d', dd[1]).style('stroke-width', lw + 'px').call(Color.fill, cont.color);\n      if (lw) {\n        pt.call(Color.stroke, cont.line.color);\n      }\n    });\n  }\n  function styleBars(d) {\n    styleBarLike(d, this);\n  }\n  function styleFunnels(d) {\n    styleBarLike(d, this, 'funnel');\n  }\n  function styleBarLike(d, lThis, desiredType) {\n    var trace = d[0].trace;\n    var marker = trace.marker || {};\n    var markerLine = marker.line || {};\n    var isVisible = !desiredType ? Registry.traceIs(trace, 'bar') : trace.visible && trace.type === desiredType;\n    var barpath = d3.select(lThis).select('g.legendpoints').selectAll('path.legend' + desiredType).data(isVisible ? [d] : []);\n    barpath.enter().append('path').classed('legend' + desiredType, true).attr('d', 'M6,6H-6V-6H6Z').attr('transform', centerTransform);\n    barpath.exit().remove();\n    barpath.each(function (d) {\n      var p = d3.select(this);\n      var d0 = d[0];\n      var w = boundLineWidth(d0.mlw, marker.line, MAX_MARKER_LINE_WIDTH, CST_MARKER_LINE_WIDTH);\n      p.style('stroke-width', w + 'px');\n      var mcc = d0.mcc;\n      if (!legend._inHover && 'mc' in d0) {\n        // not in unified hover but\n        // for legend use the color in the middle of scale\n        var cOpts = extractOpts(marker);\n        var mid = cOpts.mid;\n        if (mid === undefined) mid = (cOpts.max + cOpts.min) / 2;\n        mcc = Drawing.tryColorscale(marker, '')(mid);\n      }\n      var fillColor = mcc || d0.mc || marker.color;\n      var markerPattern = marker.pattern;\n      var patternShape = markerPattern && Drawing.getPatternAttr(markerPattern.shape, 0, '');\n      if (patternShape) {\n        var patternBGColor = Drawing.getPatternAttr(markerPattern.bgcolor, 0, null);\n        var patternFGColor = Drawing.getPatternAttr(markerPattern.fgcolor, 0, null);\n        var patternFGOpacity = markerPattern.fgopacity;\n        var patternSize = dimAttr(markerPattern.size, 8, 10);\n        var patternSolidity = dimAttr(markerPattern.solidity, 0.5, 1);\n        var patternID = 'legend-' + trace.uid;\n        p.call(Drawing.pattern, 'legend', gd, patternID, patternShape, patternSize, patternSolidity, mcc, markerPattern.fillmode, patternBGColor, patternFGColor, patternFGOpacity);\n      } else {\n        p.call(Color.fill, fillColor);\n      }\n      if (w) Color.stroke(p, d0.mlc || markerLine.color);\n    });\n  }\n  function styleBoxes(d) {\n    var trace = d[0].trace;\n    var pts = d3.select(this).select('g.legendpoints').selectAll('path.legendbox').data(trace.visible && Registry.traceIs(trace, 'box-violin') ? [d] : []);\n    pts.enter().append('path').classed('legendbox', true)\n    // if we want the median bar, prepend M6,0H-6\n    .attr('d', 'M6,6H-6V-6H6Z').attr('transform', centerTransform);\n    pts.exit().remove();\n    pts.each(function () {\n      var p = d3.select(this);\n      if ((trace.boxpoints === 'all' || trace.points === 'all') && Color.opacity(trace.fillcolor) === 0 && Color.opacity((trace.line || {}).color) === 0) {\n        var tMod = Lib.minExtend(trace, {\n          marker: {\n            size: constantItemSizing ? CST_MARKER_SIZE : Lib.constrain(trace.marker.size, 2, 16),\n            sizeref: 1,\n            sizemin: 1,\n            sizemode: 'diameter'\n          }\n        });\n        pts.call(Drawing.pointStyle, tMod, gd);\n      } else {\n        var w = boundLineWidth(undefined, trace.line, MAX_MARKER_LINE_WIDTH, CST_MARKER_LINE_WIDTH);\n        p.style('stroke-width', w + 'px').call(Color.fill, trace.fillcolor);\n        if (w) Color.stroke(p, trace.line.color);\n      }\n    });\n  }\n  function styleCandles(d) {\n    var trace = d[0].trace;\n    var pts = d3.select(this).select('g.legendpoints').selectAll('path.legendcandle').data(trace.visible && trace.type === 'candlestick' ? [d, d] : []);\n    pts.enter().append('path').classed('legendcandle', true).attr('d', function (_, i) {\n      if (i) return 'M-15,0H-8M-8,6V-6H8Z'; // increasing\n      return 'M15,0H8M8,-6V6H-8Z'; // decreasing\n    }).attr('transform', centerTransform).style('stroke-miterlimit', 1);\n    pts.exit().remove();\n    pts.each(function (_, i) {\n      var p = d3.select(this);\n      var cont = trace[i ? 'increasing' : 'decreasing'];\n      var w = boundLineWidth(undefined, cont.line, MAX_MARKER_LINE_WIDTH, CST_MARKER_LINE_WIDTH);\n      p.style('stroke-width', w + 'px').call(Color.fill, cont.fillcolor);\n      if (w) Color.stroke(p, cont.line.color);\n    });\n  }\n  function styleOHLC(d) {\n    var trace = d[0].trace;\n    var pts = d3.select(this).select('g.legendpoints').selectAll('path.legendohlc').data(trace.visible && trace.type === 'ohlc' ? [d, d] : []);\n    pts.enter().append('path').classed('legendohlc', true).attr('d', function (_, i) {\n      if (i) return 'M-15,0H0M-8,-6V0'; // increasing\n      return 'M15,0H0M8,6V0'; // decreasing\n    }).attr('transform', centerTransform).style('stroke-miterlimit', 1);\n    pts.exit().remove();\n    pts.each(function (_, i) {\n      var p = d3.select(this);\n      var cont = trace[i ? 'increasing' : 'decreasing'];\n      var w = boundLineWidth(undefined, cont.line, MAX_MARKER_LINE_WIDTH, CST_MARKER_LINE_WIDTH);\n      p.style('fill', 'none').call(Drawing.dashLine, cont.line.dash, w);\n      if (w) Color.stroke(p, cont.line.color);\n    });\n  }\n  function stylePies(d) {\n    stylePieLike(d, this, 'pie');\n  }\n  function styleFunnelareas(d) {\n    stylePieLike(d, this, 'funnelarea');\n  }\n  function stylePieLike(d, lThis, desiredType) {\n    var d0 = d[0];\n    var trace = d0.trace;\n    var isVisible = !desiredType ? Registry.traceIs(trace, desiredType) : trace.visible && trace.type === desiredType;\n    var pts = d3.select(lThis).select('g.legendpoints').selectAll('path.legend' + desiredType).data(isVisible ? [d] : []);\n    pts.enter().append('path').classed('legend' + desiredType, true).attr('d', 'M6,6H-6V-6H6Z').attr('transform', centerTransform);\n    pts.exit().remove();\n    if (pts.size()) {\n      var cont = (trace.marker || {}).line;\n      var lw = boundLineWidth(pieCastOption(cont.width, d0.pts), cont, MAX_MARKER_LINE_WIDTH, CST_MARKER_LINE_WIDTH);\n      var tMod = Lib.minExtend(trace, {\n        marker: {\n          line: {\n            width: lw\n          }\n        }\n      });\n      // since minExtend do not slice more than 3 items we need to patch line.color here\n      tMod.marker.line.color = cont.color;\n      var d0Mod = Lib.minExtend(d0, {\n        trace: tMod\n      });\n      stylePie(pts, d0Mod, tMod);\n    }\n  }\n  function styleSpatial(d) {\n    // i.e. maninly traces having z and colorscale\n    var trace = d[0].trace;\n    var useGradient;\n    var ptsData = [];\n    if (trace.visible) {\n      switch (trace.type) {\n        case 'histogram2d':\n        case 'heatmap':\n          ptsData = [['M-15,-2V4H15V-2Z'] // similar to contour\n          ];\n\n          useGradient = true;\n          break;\n        case 'choropleth':\n        case 'choroplethmapbox':\n          ptsData = [['M-6,-6V6H6V-6Z']];\n          useGradient = true;\n          break;\n        case 'densitymapbox':\n          ptsData = [['M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0']];\n          useGradient = 'radial';\n          break;\n        case 'cone':\n          ptsData = [['M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z'], ['M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z'], ['M-6,-2 A2,2 0 0,0 -6,2 L6,0Z']];\n          useGradient = false;\n          break;\n        case 'streamtube':\n          ptsData = [['M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z'], ['M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z'], ['M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z']];\n          useGradient = false;\n          break;\n        case 'surface':\n          ptsData = [['M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z'], ['M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z']];\n          useGradient = true;\n          break;\n        case 'mesh3d':\n          ptsData = [['M-6,6H0L-6,-6Z'], ['M6,6H0L6,-6Z'], ['M-6,-6H6L0,6Z']];\n          useGradient = false;\n          break;\n        case 'volume':\n          ptsData = [['M-6,6H0L-6,-6Z'], ['M6,6H0L6,-6Z'], ['M-6,-6H6L0,6Z']];\n          useGradient = true;\n          break;\n        case 'isosurface':\n          ptsData = [['M-6,6H0L-6,-6Z'], ['M6,6H0L6,-6Z'], ['M-6,-6 A12,24 0 0,0 6,-6 L0,6Z']];\n          useGradient = false;\n          break;\n      }\n    }\n    var pts = d3.select(this).select('g.legendpoints').selectAll('path.legend3dandfriends').data(ptsData);\n    pts.enter().append('path').classed('legend3dandfriends', true).attr('transform', centerTransform).style('stroke-miterlimit', 1);\n    pts.exit().remove();\n    pts.each(function (dd, i) {\n      var pt = d3.select(this);\n      var cOpts = extractOpts(trace);\n      var colorscale = cOpts.colorscale;\n      var reversescale = cOpts.reversescale;\n      var fillGradient = function (s) {\n        if (s.size()) {\n          var gradientID = 'legendfill-' + trace.uid;\n          Drawing.gradient(s, gd, gradientID, getGradientDirection(reversescale, useGradient === 'radial'), colorscale, 'fill');\n        }\n      };\n      var fillColor;\n      if (!colorscale) {\n        var color = trace.vertexcolor || trace.facecolor || trace.color;\n        fillColor = Lib.isArrayOrTypedArray(color) ? color[i] || color[0] : color;\n      } else {\n        if (!useGradient) {\n          var len = colorscale.length;\n          fillColor = i === 0 ? colorscale[reversescale ? len - 1 : 0][1] :\n          // minimum\n          i === 1 ? colorscale[reversescale ? 0 : len - 1][1] :\n          // maximum\n          colorscale[Math.floor((len - 1) / 2)][1]; // middle\n        }\n      }\n\n      pt.attr('d', dd[0]);\n      if (fillColor) {\n        pt.call(Color.fill, fillColor);\n      } else {\n        pt.call(fillGradient);\n      }\n    });\n  }\n};\nfunction getGradientDirection(reversescale, isRadial) {\n  var str = isRadial ? 'radial' : 'horizontal';\n  return str + (reversescale ? '' : 'reversed');\n}\nfunction getStyleGuide(d) {\n  var trace = d[0].trace;\n  var contours = trace.contours;\n  var showLine = subTypes.hasLines(trace);\n  var showMarker = subTypes.hasMarkers(trace);\n  var showFill = trace.visible && trace.fill && trace.fill !== 'none';\n  var showGradientLine = false;\n  var showGradientFill = false;\n  if (contours) {\n    var coloring = contours.coloring;\n    if (coloring === 'lines') {\n      showGradientLine = true;\n    } else {\n      showLine = coloring === 'none' || coloring === 'heatmap' || contours.showlines;\n    }\n    if (contours.type === 'constraint') {\n      showFill = contours._operation !== '=';\n    } else if (coloring === 'fill' || coloring === 'heatmap') {\n      showGradientFill = true;\n    }\n  }\n  return {\n    showMarker: showMarker,\n    showLine: showLine,\n    showFill: showFill,\n    showGradientLine: showGradientLine,\n    showGradientFill: showGradientFill,\n    anyLine: showLine || showGradientLine,\n    anyFill: showFill || showGradientFill\n  };\n}\nfunction dimAttr(v, dflt, max) {\n  if (v && Lib.isArrayOrTypedArray(v)) return dflt;\n  if (v > max) return max;\n  return v;\n}\n\n/***/ }),\n\n/***/ 42068:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_433830__) {\n\n\"use strict\";\n\n\nvar constants = __nested_webpack_require_433830__(93348);\nmodule.exports = {\n  editType: 'modebar',\n  orientation: {\n    valType: 'enumerated',\n    values: ['v', 'h'],\n    dflt: 'h',\n    editType: 'modebar'\n  },\n  bgcolor: {\n    valType: 'color',\n    editType: 'modebar'\n  },\n  color: {\n    valType: 'color',\n    editType: 'modebar'\n  },\n  activecolor: {\n    valType: 'color',\n    editType: 'modebar'\n  },\n  uirevision: {\n    valType: 'any',\n    editType: 'none'\n  },\n  add: {\n    valType: 'string',\n    arrayOk: true,\n    dflt: '',\n    editType: 'modebar'\n  },\n  remove: {\n    valType: 'string',\n    arrayOk: true,\n    dflt: '',\n    editType: 'modebar'\n  }\n};\n\n/***/ }),\n\n/***/ 26023:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_434592__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_434592__(73972);\nvar Plots = __nested_webpack_require_434592__(74875);\nvar axisIds = __nested_webpack_require_434592__(41675);\nvar Icons = __nested_webpack_require_434592__(24255);\nvar eraseActiveShape = (__nested_webpack_require_434592__(34031).eraseActiveShape);\nvar Lib = __nested_webpack_require_434592__(71828);\nvar _ = Lib._;\nvar modeBarButtons = module.exports = {};\n\n/**\n * ModeBar buttons configuration\n *\n * @param {string} name\n *      name / id of the buttons (for tracking)\n * @param {string} title\n *      text that appears while hovering over the button,\n *      enter null, false or '' for no hover text\n * @param {string} icon\n *      svg icon object associated with the button\n *      can be linked to Plotly.Icons to use the default plotly icons\n * @param {string} [gravity]\n *      icon positioning\n * @param {function} click\n *      click handler associated with the button, a function of\n *      'gd' (the main graph object) and\n *      'ev' (the event object)\n * @param {string} [attr]\n *      attribute associated with button,\n *      use this with 'val' to keep track of the state\n * @param {*} [val]\n *      initial 'attr' value, can be a function of gd\n * @param {boolean} [toggle]\n *      is the button a toggle button?\n */\nmodeBarButtons.toImage = {\n  name: 'toImage',\n  title: function (gd) {\n    var opts = gd._context.toImageButtonOptions || {};\n    var format = opts.format || 'png';\n    return format === 'png' ? _(gd, 'Download plot as a png') :\n    // legacy text\n    _(gd, 'Download plot'); // generic non-PNG text\n  },\n\n  icon: Icons.camera,\n  click: function (gd) {\n    var toImageButtonOptions = gd._context.toImageButtonOptions;\n    var opts = {\n      format: toImageButtonOptions.format || 'png'\n    };\n    Lib.notifier(_(gd, 'Taking snapshot - this may take a few seconds'), 'long');\n    if (opts.format !== 'svg' && Lib.isIE()) {\n      Lib.notifier(_(gd, 'IE only supports svg.  Changing format to svg.'), 'long');\n      opts.format = 'svg';\n    }\n    ['filename', 'width', 'height', 'scale'].forEach(function (key) {\n      if (key in toImageButtonOptions) {\n        opts[key] = toImageButtonOptions[key];\n      }\n    });\n    Registry.call('downloadImage', gd, opts).then(function (filename) {\n      Lib.notifier(_(gd, 'Snapshot succeeded') + ' - ' + filename, 'long');\n    }).catch(function () {\n      Lib.notifier(_(gd, 'Sorry, there was a problem downloading your snapshot!'), 'long');\n    });\n  }\n};\nmodeBarButtons.sendDataToCloud = {\n  name: 'sendDataToCloud',\n  title: function (gd) {\n    return _(gd, 'Edit in Chart Studio');\n  },\n  icon: Icons.disk,\n  click: function (gd) {\n    Plots.sendDataToCloud(gd);\n  }\n};\nmodeBarButtons.editInChartStudio = {\n  name: 'editInChartStudio',\n  title: function (gd) {\n    return _(gd, 'Edit in Chart Studio');\n  },\n  icon: Icons.pencil,\n  click: function (gd) {\n    Plots.sendDataToCloud(gd);\n  }\n};\nmodeBarButtons.zoom2d = {\n  name: 'zoom2d',\n  _cat: 'zoom',\n  title: function (gd) {\n    return _(gd, 'Zoom');\n  },\n  attr: 'dragmode',\n  val: 'zoom',\n  icon: Icons.zoombox,\n  click: handleCartesian\n};\nmodeBarButtons.pan2d = {\n  name: 'pan2d',\n  _cat: 'pan',\n  title: function (gd) {\n    return _(gd, 'Pan');\n  },\n  attr: 'dragmode',\n  val: 'pan',\n  icon: Icons.pan,\n  click: handleCartesian\n};\nmodeBarButtons.select2d = {\n  name: 'select2d',\n  _cat: 'select',\n  title: function (gd) {\n    return _(gd, 'Box Select');\n  },\n  attr: 'dragmode',\n  val: 'select',\n  icon: Icons.selectbox,\n  click: handleCartesian\n};\nmodeBarButtons.lasso2d = {\n  name: 'lasso2d',\n  _cat: 'lasso',\n  title: function (gd) {\n    return _(gd, 'Lasso Select');\n  },\n  attr: 'dragmode',\n  val: 'lasso',\n  icon: Icons.lasso,\n  click: handleCartesian\n};\nmodeBarButtons.drawclosedpath = {\n  name: 'drawclosedpath',\n  title: function (gd) {\n    return _(gd, 'Draw closed freeform');\n  },\n  attr: 'dragmode',\n  val: 'drawclosedpath',\n  icon: Icons.drawclosedpath,\n  click: handleCartesian\n};\nmodeBarButtons.drawopenpath = {\n  name: 'drawopenpath',\n  title: function (gd) {\n    return _(gd, 'Draw open freeform');\n  },\n  attr: 'dragmode',\n  val: 'drawopenpath',\n  icon: Icons.drawopenpath,\n  click: handleCartesian\n};\nmodeBarButtons.drawline = {\n  name: 'drawline',\n  title: function (gd) {\n    return _(gd, 'Draw line');\n  },\n  attr: 'dragmode',\n  val: 'drawline',\n  icon: Icons.drawline,\n  click: handleCartesian\n};\nmodeBarButtons.drawrect = {\n  name: 'drawrect',\n  title: function (gd) {\n    return _(gd, 'Draw rectangle');\n  },\n  attr: 'dragmode',\n  val: 'drawrect',\n  icon: Icons.drawrect,\n  click: handleCartesian\n};\nmodeBarButtons.drawcircle = {\n  name: 'drawcircle',\n  title: function (gd) {\n    return _(gd, 'Draw circle');\n  },\n  attr: 'dragmode',\n  val: 'drawcircle',\n  icon: Icons.drawcircle,\n  click: handleCartesian\n};\nmodeBarButtons.eraseshape = {\n  name: 'eraseshape',\n  title: function (gd) {\n    return _(gd, 'Erase active shape');\n  },\n  icon: Icons.eraseshape,\n  click: eraseActiveShape\n};\nmodeBarButtons.zoomIn2d = {\n  name: 'zoomIn2d',\n  _cat: 'zoomin',\n  title: function (gd) {\n    return _(gd, 'Zoom in');\n  },\n  attr: 'zoom',\n  val: 'in',\n  icon: Icons.zoom_plus,\n  click: handleCartesian\n};\nmodeBarButtons.zoomOut2d = {\n  name: 'zoomOut2d',\n  _cat: 'zoomout',\n  title: function (gd) {\n    return _(gd, 'Zoom out');\n  },\n  attr: 'zoom',\n  val: 'out',\n  icon: Icons.zoom_minus,\n  click: handleCartesian\n};\nmodeBarButtons.autoScale2d = {\n  name: 'autoScale2d',\n  _cat: 'autoscale',\n  title: function (gd) {\n    return _(gd, 'Autoscale');\n  },\n  attr: 'zoom',\n  val: 'auto',\n  icon: Icons.autoscale,\n  click: handleCartesian\n};\nmodeBarButtons.resetScale2d = {\n  name: 'resetScale2d',\n  _cat: 'resetscale',\n  title: function (gd) {\n    return _(gd, 'Reset axes');\n  },\n  attr: 'zoom',\n  val: 'reset',\n  icon: Icons.home,\n  click: handleCartesian\n};\nmodeBarButtons.hoverClosestCartesian = {\n  name: 'hoverClosestCartesian',\n  _cat: 'hoverclosest',\n  title: function (gd) {\n    return _(gd, 'Show closest data on hover');\n  },\n  attr: 'hovermode',\n  val: 'closest',\n  icon: Icons.tooltip_basic,\n  gravity: 'ne',\n  click: handleCartesian\n};\nmodeBarButtons.hoverCompareCartesian = {\n  name: 'hoverCompareCartesian',\n  _cat: 'hoverCompare',\n  title: function (gd) {\n    return _(gd, 'Compare data on hover');\n  },\n  attr: 'hovermode',\n  val: function (gd) {\n    return gd._fullLayout._isHoriz ? 'y' : 'x';\n  },\n  icon: Icons.tooltip_compare,\n  gravity: 'ne',\n  click: handleCartesian\n};\nfunction handleCartesian(gd, ev) {\n  var button = ev.currentTarget;\n  var astr = button.getAttribute('data-attr');\n  var val = button.getAttribute('data-val') || true;\n  var fullLayout = gd._fullLayout;\n  var aobj = {};\n  var axList = axisIds.list(gd, null, true);\n  var allSpikesEnabled = fullLayout._cartesianSpikesEnabled;\n  var ax, i;\n  if (astr === 'zoom') {\n    var mag = val === 'in' ? 0.5 : 2;\n    var r0 = (1 + mag) / 2;\n    var r1 = (1 - mag) / 2;\n    var axName;\n    for (i = 0; i < axList.length; i++) {\n      ax = axList[i];\n      if (!ax.fixedrange) {\n        axName = ax._name;\n        if (val === 'auto') {\n          aobj[axName + '.autorange'] = true;\n        } else if (val === 'reset') {\n          if (ax._rangeInitial === undefined) {\n            aobj[axName + '.autorange'] = true;\n          } else {\n            var rangeInitial = ax._rangeInitial.slice();\n            aobj[axName + '.range[0]'] = rangeInitial[0];\n            aobj[axName + '.range[1]'] = rangeInitial[1];\n          }\n\n          // N.B. \"reset\" also resets showspikes\n          if (ax._showSpikeInitial !== undefined) {\n            aobj[axName + '.showspikes'] = ax._showSpikeInitial;\n            if (allSpikesEnabled === 'on' && !ax._showSpikeInitial) {\n              allSpikesEnabled = 'off';\n            }\n          }\n        } else {\n          var rangeNow = [ax.r2l(ax.range[0]), ax.r2l(ax.range[1])];\n          var rangeNew = [r0 * rangeNow[0] + r1 * rangeNow[1], r0 * rangeNow[1] + r1 * rangeNow[0]];\n          aobj[axName + '.range[0]'] = ax.l2r(rangeNew[0]);\n          aobj[axName + '.range[1]'] = ax.l2r(rangeNew[1]);\n        }\n      }\n    }\n  } else {\n    // if ALL traces have orientation 'h', 'hovermode': 'x' otherwise: 'y'\n    if (astr === 'hovermode' && (val === 'x' || val === 'y')) {\n      val = fullLayout._isHoriz ? 'y' : 'x';\n      button.setAttribute('data-val', val);\n    }\n    aobj[astr] = val;\n  }\n  fullLayout._cartesianSpikesEnabled = allSpikesEnabled;\n  Registry.call('_guiRelayout', gd, aobj);\n}\nmodeBarButtons.zoom3d = {\n  name: 'zoom3d',\n  _cat: 'zoom',\n  title: function (gd) {\n    return _(gd, 'Zoom');\n  },\n  attr: 'scene.dragmode',\n  val: 'zoom',\n  icon: Icons.zoombox,\n  click: handleDrag3d\n};\nmodeBarButtons.pan3d = {\n  name: 'pan3d',\n  _cat: 'pan',\n  title: function (gd) {\n    return _(gd, 'Pan');\n  },\n  attr: 'scene.dragmode',\n  val: 'pan',\n  icon: Icons.pan,\n  click: handleDrag3d\n};\nmodeBarButtons.orbitRotation = {\n  name: 'orbitRotation',\n  title: function (gd) {\n    return _(gd, 'Orbital rotation');\n  },\n  attr: 'scene.dragmode',\n  val: 'orbit',\n  icon: Icons['3d_rotate'],\n  click: handleDrag3d\n};\nmodeBarButtons.tableRotation = {\n  name: 'tableRotation',\n  title: function (gd) {\n    return _(gd, 'Turntable rotation');\n  },\n  attr: 'scene.dragmode',\n  val: 'turntable',\n  icon: Icons['z-axis'],\n  click: handleDrag3d\n};\nfunction handleDrag3d(gd, ev) {\n  var button = ev.currentTarget;\n  var attr = button.getAttribute('data-attr');\n  var val = button.getAttribute('data-val') || true;\n  var sceneIds = gd._fullLayout._subplots.gl3d || [];\n  var layoutUpdate = {};\n  var parts = attr.split('.');\n  for (var i = 0; i < sceneIds.length; i++) {\n    layoutUpdate[sceneIds[i] + '.' + parts[1]] = val;\n  }\n\n  // for multi-type subplots\n  var val2d = val === 'pan' ? val : 'zoom';\n  layoutUpdate.dragmode = val2d;\n  Registry.call('_guiRelayout', gd, layoutUpdate);\n}\nmodeBarButtons.resetCameraDefault3d = {\n  name: 'resetCameraDefault3d',\n  _cat: 'resetCameraDefault',\n  title: function (gd) {\n    return _(gd, 'Reset camera to default');\n  },\n  attr: 'resetDefault',\n  icon: Icons.home,\n  click: handleCamera3d\n};\nmodeBarButtons.resetCameraLastSave3d = {\n  name: 'resetCameraLastSave3d',\n  _cat: 'resetCameraLastSave',\n  title: function (gd) {\n    return _(gd, 'Reset camera to last save');\n  },\n  attr: 'resetLastSave',\n  icon: Icons.movie,\n  click: handleCamera3d\n};\nfunction handleCamera3d(gd, ev) {\n  var button = ev.currentTarget;\n  var attr = button.getAttribute('data-attr');\n  var resetLastSave = attr === 'resetLastSave';\n  var resetDefault = attr === 'resetDefault';\n  var fullLayout = gd._fullLayout;\n  var sceneIds = fullLayout._subplots.gl3d || [];\n  var aobj = {};\n  for (var i = 0; i < sceneIds.length; i++) {\n    var sceneId = sceneIds[i];\n    var camera = sceneId + '.camera';\n    var aspectratio = sceneId + '.aspectratio';\n    var aspectmode = sceneId + '.aspectmode';\n    var scene = fullLayout[sceneId]._scene;\n    var didUpdate;\n    if (resetLastSave) {\n      aobj[camera + '.up'] = scene.viewInitial.up;\n      aobj[camera + '.eye'] = scene.viewInitial.eye;\n      aobj[camera + '.center'] = scene.viewInitial.center;\n      didUpdate = true;\n    } else if (resetDefault) {\n      aobj[camera + '.up'] = null;\n      aobj[camera + '.eye'] = null;\n      aobj[camera + '.center'] = null;\n      didUpdate = true;\n    }\n    if (didUpdate) {\n      aobj[aspectratio + '.x'] = scene.viewInitial.aspectratio.x;\n      aobj[aspectratio + '.y'] = scene.viewInitial.aspectratio.y;\n      aobj[aspectratio + '.z'] = scene.viewInitial.aspectratio.z;\n      aobj[aspectmode] = scene.viewInitial.aspectmode;\n    }\n  }\n  Registry.call('_guiRelayout', gd, aobj);\n}\nmodeBarButtons.hoverClosest3d = {\n  name: 'hoverClosest3d',\n  _cat: 'hoverclosest',\n  title: function (gd) {\n    return _(gd, 'Toggle show closest data on hover');\n  },\n  attr: 'hovermode',\n  val: null,\n  toggle: true,\n  icon: Icons.tooltip_basic,\n  gravity: 'ne',\n  click: handleHover3d\n};\nfunction getNextHover3d(gd, ev) {\n  var button = ev.currentTarget;\n  var val = button._previousVal;\n  var fullLayout = gd._fullLayout;\n  var sceneIds = fullLayout._subplots.gl3d || [];\n  var axes = ['xaxis', 'yaxis', 'zaxis'];\n\n  // initialize 'current spike' object to be stored in the DOM\n  var currentSpikes = {};\n  var layoutUpdate = {};\n  if (val) {\n    layoutUpdate = val;\n    button._previousVal = null;\n  } else {\n    for (var i = 0; i < sceneIds.length; i++) {\n      var sceneId = sceneIds[i];\n      var sceneLayout = fullLayout[sceneId];\n      var hovermodeAStr = sceneId + '.hovermode';\n      currentSpikes[hovermodeAStr] = sceneLayout.hovermode;\n      layoutUpdate[hovermodeAStr] = false;\n\n      // copy all the current spike attrs\n      for (var j = 0; j < 3; j++) {\n        var axis = axes[j];\n        var spikeAStr = sceneId + '.' + axis + '.showspikes';\n        layoutUpdate[spikeAStr] = false;\n        currentSpikes[spikeAStr] = sceneLayout[axis].showspikes;\n      }\n    }\n    button._previousVal = currentSpikes;\n  }\n  return layoutUpdate;\n}\nfunction handleHover3d(gd, ev) {\n  var layoutUpdate = getNextHover3d(gd, ev);\n  Registry.call('_guiRelayout', gd, layoutUpdate);\n}\nmodeBarButtons.zoomInGeo = {\n  name: 'zoomInGeo',\n  _cat: 'zoomin',\n  title: function (gd) {\n    return _(gd, 'Zoom in');\n  },\n  attr: 'zoom',\n  val: 'in',\n  icon: Icons.zoom_plus,\n  click: handleGeo\n};\nmodeBarButtons.zoomOutGeo = {\n  name: 'zoomOutGeo',\n  _cat: 'zoomout',\n  title: function (gd) {\n    return _(gd, 'Zoom out');\n  },\n  attr: 'zoom',\n  val: 'out',\n  icon: Icons.zoom_minus,\n  click: handleGeo\n};\nmodeBarButtons.resetGeo = {\n  name: 'resetGeo',\n  _cat: 'reset',\n  title: function (gd) {\n    return _(gd, 'Reset');\n  },\n  attr: 'reset',\n  val: null,\n  icon: Icons.autoscale,\n  click: handleGeo\n};\nmodeBarButtons.hoverClosestGeo = {\n  name: 'hoverClosestGeo',\n  _cat: 'hoverclosest',\n  title: function (gd) {\n    return _(gd, 'Toggle show closest data on hover');\n  },\n  attr: 'hovermode',\n  val: null,\n  toggle: true,\n  icon: Icons.tooltip_basic,\n  gravity: 'ne',\n  click: toggleHover\n};\nfunction handleGeo(gd, ev) {\n  var button = ev.currentTarget;\n  var attr = button.getAttribute('data-attr');\n  var val = button.getAttribute('data-val') || true;\n  var fullLayout = gd._fullLayout;\n  var geoIds = fullLayout._subplots.geo || [];\n  for (var i = 0; i < geoIds.length; i++) {\n    var id = geoIds[i];\n    var geoLayout = fullLayout[id];\n    if (attr === 'zoom') {\n      var scale = geoLayout.projection.scale;\n      var newScale = val === 'in' ? 2 * scale : 0.5 * scale;\n      Registry.call('_guiRelayout', gd, id + '.projection.scale', newScale);\n    }\n  }\n  if (attr === 'reset') {\n    resetView(gd, 'geo');\n  }\n}\nmodeBarButtons.hoverClosestGl2d = {\n  name: 'hoverClosestGl2d',\n  _cat: 'hoverclosest',\n  title: function (gd) {\n    return _(gd, 'Toggle show closest data on hover');\n  },\n  attr: 'hovermode',\n  val: null,\n  toggle: true,\n  icon: Icons.tooltip_basic,\n  gravity: 'ne',\n  click: toggleHover\n};\nmodeBarButtons.hoverClosestPie = {\n  name: 'hoverClosestPie',\n  _cat: 'hoverclosest',\n  title: function (gd) {\n    return _(gd, 'Toggle show closest data on hover');\n  },\n  attr: 'hovermode',\n  val: 'closest',\n  icon: Icons.tooltip_basic,\n  gravity: 'ne',\n  click: toggleHover\n};\nfunction getNextHover(gd) {\n  var fullLayout = gd._fullLayout;\n  if (fullLayout.hovermode) return false;\n  if (fullLayout._has('cartesian')) {\n    return fullLayout._isHoriz ? 'y' : 'x';\n  }\n  return 'closest';\n}\nfunction toggleHover(gd) {\n  var newHover = getNextHover(gd);\n  Registry.call('_guiRelayout', gd, 'hovermode', newHover);\n}\nmodeBarButtons.resetViewSankey = {\n  name: 'resetSankeyGroup',\n  title: function (gd) {\n    return _(gd, 'Reset view');\n  },\n  icon: Icons.home,\n  click: function (gd) {\n    var aObj = {\n      'node.groups': [],\n      'node.x': [],\n      'node.y': []\n    };\n    for (var i = 0; i < gd._fullData.length; i++) {\n      var viewInitial = gd._fullData[i]._viewInitial;\n      aObj['node.groups'].push(viewInitial.node.groups.slice());\n      aObj['node.x'].push(viewInitial.node.x.slice());\n      aObj['node.y'].push(viewInitial.node.y.slice());\n    }\n    Registry.call('restyle', gd, aObj);\n  }\n};\n\n// buttons when more then one plot types are present\n\nmodeBarButtons.toggleHover = {\n  name: 'toggleHover',\n  title: function (gd) {\n    return _(gd, 'Toggle show closest data on hover');\n  },\n  attr: 'hovermode',\n  val: null,\n  toggle: true,\n  icon: Icons.tooltip_basic,\n  gravity: 'ne',\n  click: function (gd, ev) {\n    var layoutUpdate = getNextHover3d(gd, ev);\n    layoutUpdate.hovermode = getNextHover(gd);\n    Registry.call('_guiRelayout', gd, layoutUpdate);\n  }\n};\nmodeBarButtons.resetViews = {\n  name: 'resetViews',\n  title: function (gd) {\n    return _(gd, 'Reset views');\n  },\n  icon: Icons.home,\n  click: function (gd, ev) {\n    var button = ev.currentTarget;\n    button.setAttribute('data-attr', 'zoom');\n    button.setAttribute('data-val', 'reset');\n    handleCartesian(gd, ev);\n    button.setAttribute('data-attr', 'resetLastSave');\n    handleCamera3d(gd, ev);\n    resetView(gd, 'geo');\n    resetView(gd, 'mapbox');\n  }\n};\nmodeBarButtons.toggleSpikelines = {\n  name: 'toggleSpikelines',\n  title: function (gd) {\n    return _(gd, 'Toggle Spike Lines');\n  },\n  icon: Icons.spikeline,\n  attr: '_cartesianSpikesEnabled',\n  val: 'on',\n  click: function (gd) {\n    var fullLayout = gd._fullLayout;\n    var allSpikesEnabled = fullLayout._cartesianSpikesEnabled;\n    fullLayout._cartesianSpikesEnabled = allSpikesEnabled === 'on' ? 'off' : 'on';\n    Registry.call('_guiRelayout', gd, setSpikelineVisibility(gd));\n  }\n};\nfunction setSpikelineVisibility(gd) {\n  var fullLayout = gd._fullLayout;\n  var areSpikesOn = fullLayout._cartesianSpikesEnabled === 'on';\n  var axList = axisIds.list(gd, null, true);\n  var aobj = {};\n  for (var i = 0; i < axList.length; i++) {\n    var ax = axList[i];\n    aobj[ax._name + '.showspikes'] = areSpikesOn ? true : ax._showSpikeInitial;\n  }\n  return aobj;\n}\nmodeBarButtons.resetViewMapbox = {\n  name: 'resetViewMapbox',\n  _cat: 'resetView',\n  title: function (gd) {\n    return _(gd, 'Reset view');\n  },\n  attr: 'reset',\n  icon: Icons.home,\n  click: function (gd) {\n    resetView(gd, 'mapbox');\n  }\n};\nmodeBarButtons.zoomInMapbox = {\n  name: 'zoomInMapbox',\n  _cat: 'zoomin',\n  title: function (gd) {\n    return _(gd, 'Zoom in');\n  },\n  attr: 'zoom',\n  val: 'in',\n  icon: Icons.zoom_plus,\n  click: handleMapboxZoom\n};\nmodeBarButtons.zoomOutMapbox = {\n  name: 'zoomOutMapbox',\n  _cat: 'zoomout',\n  title: function (gd) {\n    return _(gd, 'Zoom out');\n  },\n  attr: 'zoom',\n  val: 'out',\n  icon: Icons.zoom_minus,\n  click: handleMapboxZoom\n};\nfunction handleMapboxZoom(gd, ev) {\n  var button = ev.currentTarget;\n  var val = button.getAttribute('data-val');\n  var fullLayout = gd._fullLayout;\n  var subplotIds = fullLayout._subplots.mapbox || [];\n  var scalar = 1.05;\n  var aObj = {};\n  for (var i = 0; i < subplotIds.length; i++) {\n    var id = subplotIds[i];\n    var current = fullLayout[id].zoom;\n    var next = val === 'in' ? scalar * current : current / scalar;\n    aObj[id + '.zoom'] = next;\n  }\n  Registry.call('_guiRelayout', gd, aObj);\n}\nfunction resetView(gd, subplotType) {\n  var fullLayout = gd._fullLayout;\n  var subplotIds = fullLayout._subplots[subplotType] || [];\n  var aObj = {};\n  for (var i = 0; i < subplotIds.length; i++) {\n    var id = subplotIds[i];\n    var subplotObj = fullLayout[id]._subplot;\n    var viewInitial = subplotObj.viewInitial;\n    var viewKeys = Object.keys(viewInitial);\n    for (var j = 0; j < viewKeys.length; j++) {\n      var key = viewKeys[j];\n      aObj[id + '.' + key] = viewInitial[key];\n    }\n  }\n  Registry.call('_guiRelayout', gd, aObj);\n}\n\n/***/ }),\n\n/***/ 93348:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_454352__) {\n\n\"use strict\";\n\n\nvar modeBarButtons = __nested_webpack_require_454352__(26023);\nvar buttonList = Object.keys(modeBarButtons);\nvar DRAW_MODES = ['drawline', 'drawopenpath', 'drawclosedpath', 'drawcircle', 'drawrect', 'eraseshape'];\nvar backButtons = ['v1hovermode', 'hoverclosest', 'hovercompare', 'togglehover', 'togglespikelines'].concat(DRAW_MODES);\nvar foreButtons = [];\nvar addToForeButtons = function (b) {\n  if (backButtons.indexOf(b._cat || b.name) !== -1) return;\n  // for convenience add lowercase shotname e.g. zoomin as well fullname zoomInGeo\n  var name = b.name;\n  var _cat = (b._cat || b.name).toLowerCase();\n  if (foreButtons.indexOf(name) === -1) foreButtons.push(name);\n  if (foreButtons.indexOf(_cat) === -1) foreButtons.push(_cat);\n};\nbuttonList.forEach(function (k) {\n  addToForeButtons(modeBarButtons[k]);\n});\nforeButtons.sort();\nmodule.exports = {\n  DRAW_MODES: DRAW_MODES,\n  backButtons: backButtons,\n  foreButtons: foreButtons\n};\n\n/***/ }),\n\n/***/ 35750:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_455390__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_455390__(71828);\nvar Color = __nested_webpack_require_455390__(7901);\nvar Template = __nested_webpack_require_455390__(44467);\nvar attributes = __nested_webpack_require_455390__(42068);\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n  var containerIn = layoutIn.modebar || {};\n  var containerOut = Template.newContainer(layoutOut, 'modebar');\n  function coerce(attr, dflt) {\n    return Lib.coerce(containerIn, containerOut, attributes, attr, dflt);\n  }\n  coerce('orientation');\n  coerce('bgcolor', Color.addOpacity(layoutOut.paper_bgcolor, 0.5));\n  var defaultColor = Color.contrast(Color.rgb(layoutOut.modebar.bgcolor));\n  coerce('color', Color.addOpacity(defaultColor, 0.3));\n  coerce('activecolor', Color.addOpacity(defaultColor, 0.7));\n  coerce('uirevision', layoutOut.uirevision);\n  coerce('add');\n  coerce('remove');\n};\n\n/***/ }),\n\n/***/ 64168:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_456333__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'component',\n  name: 'modebar',\n  layoutAttributes: __nested_webpack_require_456333__(42068),\n  supplyLayoutDefaults: __nested_webpack_require_456333__(35750),\n  manage: __nested_webpack_require_456333__(14192)\n};\n\n/***/ }),\n\n/***/ 14192:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_456653__) {\n\n\"use strict\";\n\n\nvar axisIds = __nested_webpack_require_456653__(41675);\nvar scatterSubTypes = __nested_webpack_require_456653__(34098);\nvar Registry = __nested_webpack_require_456653__(73972);\nvar isUnifiedHover = (__nested_webpack_require_456653__(23469).isUnifiedHover);\nvar createModeBar = __nested_webpack_require_456653__(37676);\nvar modeBarButtons = __nested_webpack_require_456653__(26023);\nvar DRAW_MODES = (__nested_webpack_require_456653__(93348).DRAW_MODES);\nvar extendDeep = (__nested_webpack_require_456653__(71828).extendDeep);\n\n/**\n * ModeBar wrapper around 'create' and 'update',\n * chooses buttons to pass to ModeBar constructor based on\n * plot type and plot config.\n *\n * @param {object} gd main plot object\n *\n */\nmodule.exports = function manageModeBar(gd) {\n  var fullLayout = gd._fullLayout;\n  var context = gd._context;\n  var modeBar = fullLayout._modeBar;\n  if (!context.displayModeBar && !context.watermark) {\n    if (modeBar) {\n      modeBar.destroy();\n      delete fullLayout._modeBar;\n    }\n    return;\n  }\n  if (!Array.isArray(context.modeBarButtonsToRemove)) {\n    throw new Error(['*modeBarButtonsToRemove* configuration options', 'must be an array.'].join(' '));\n  }\n  if (!Array.isArray(context.modeBarButtonsToAdd)) {\n    throw new Error(['*modeBarButtonsToAdd* configuration options', 'must be an array.'].join(' '));\n  }\n  var customButtons = context.modeBarButtons;\n  var buttonGroups;\n  if (Array.isArray(customButtons) && customButtons.length) {\n    buttonGroups = fillCustomButton(customButtons);\n  } else if (!context.displayModeBar && context.watermark) {\n    buttonGroups = [];\n  } else {\n    buttonGroups = getButtonGroups(gd);\n  }\n  if (modeBar) modeBar.update(gd, buttonGroups);else fullLayout._modeBar = createModeBar(gd, buttonGroups);\n};\n\n// logic behind which buttons are displayed by default\nfunction getButtonGroups(gd) {\n  var fullLayout = gd._fullLayout;\n  var fullData = gd._fullData;\n  var context = gd._context;\n  function match(name, B) {\n    if (typeof B === 'string') {\n      if (B.toLowerCase() === name.toLowerCase()) return true;\n    } else {\n      var v0 = B.name;\n      var v1 = B._cat || B.name;\n      if (v0 === name || v1 === name.toLowerCase()) return true;\n    }\n    return false;\n  }\n  var layoutAdd = fullLayout.modebar.add;\n  if (typeof layoutAdd === 'string') layoutAdd = [layoutAdd];\n  var layoutRemove = fullLayout.modebar.remove;\n  if (typeof layoutRemove === 'string') layoutRemove = [layoutRemove];\n  var buttonsToAdd = context.modeBarButtonsToAdd.concat(layoutAdd.filter(function (e) {\n    for (var i = 0; i < context.modeBarButtonsToRemove.length; i++) {\n      if (match(e, context.modeBarButtonsToRemove[i])) return false;\n    }\n    return true;\n  }));\n  var buttonsToRemove = context.modeBarButtonsToRemove.concat(layoutRemove.filter(function (e) {\n    for (var i = 0; i < context.modeBarButtonsToAdd.length; i++) {\n      if (match(e, context.modeBarButtonsToAdd[i])) return false;\n    }\n    return true;\n  }));\n  var hasCartesian = fullLayout._has('cartesian');\n  var hasGL3D = fullLayout._has('gl3d');\n  var hasGeo = fullLayout._has('geo');\n  var hasPie = fullLayout._has('pie');\n  var hasFunnelarea = fullLayout._has('funnelarea');\n  var hasGL2D = fullLayout._has('gl2d');\n  var hasTernary = fullLayout._has('ternary');\n  var hasMapbox = fullLayout._has('mapbox');\n  var hasPolar = fullLayout._has('polar');\n  var hasSmith = fullLayout._has('smith');\n  var hasSankey = fullLayout._has('sankey');\n  var allAxesFixed = areAllAxesFixed(fullLayout);\n  var hasUnifiedHoverLabel = isUnifiedHover(fullLayout.hovermode);\n  var groups = [];\n  function addGroup(newGroup) {\n    if (!newGroup.length) return;\n    var out = [];\n    for (var i = 0; i < newGroup.length; i++) {\n      var name = newGroup[i];\n      var B = modeBarButtons[name];\n      var v0 = B.name.toLowerCase();\n      var v1 = (B._cat || B.name).toLowerCase();\n      var found = false;\n      for (var q = 0; q < buttonsToRemove.length; q++) {\n        var t = buttonsToRemove[q].toLowerCase();\n        if (t === v0 || t === v1) {\n          found = true;\n          break;\n        }\n      }\n      if (found) continue;\n      out.push(modeBarButtons[name]);\n    }\n    groups.push(out);\n  }\n\n  // buttons common to all plot types\n  var commonGroup = ['toImage'];\n  if (context.showEditInChartStudio) commonGroup.push('editInChartStudio');else if (context.showSendToCloud) commonGroup.push('sendDataToCloud');\n  addGroup(commonGroup);\n  var zoomGroup = [];\n  var hoverGroup = [];\n  var resetGroup = [];\n  var dragModeGroup = [];\n  if ((hasCartesian || hasGL2D || hasPie || hasFunnelarea || hasTernary) + hasGeo + hasGL3D + hasMapbox + hasPolar + hasSmith > 1) {\n    // graphs with more than one plot types get 'union buttons'\n    // which reset the view or toggle hover labels across all subplots.\n    hoverGroup = ['toggleHover'];\n    resetGroup = ['resetViews'];\n  } else if (hasGeo) {\n    zoomGroup = ['zoomInGeo', 'zoomOutGeo'];\n    hoverGroup = ['hoverClosestGeo'];\n    resetGroup = ['resetGeo'];\n  } else if (hasGL3D) {\n    hoverGroup = ['hoverClosest3d'];\n    resetGroup = ['resetCameraDefault3d', 'resetCameraLastSave3d'];\n  } else if (hasMapbox) {\n    zoomGroup = ['zoomInMapbox', 'zoomOutMapbox'];\n    hoverGroup = ['toggleHover'];\n    resetGroup = ['resetViewMapbox'];\n  } else if (hasGL2D) {\n    hoverGroup = ['hoverClosestGl2d'];\n  } else if (hasPie) {\n    hoverGroup = ['hoverClosestPie'];\n  } else if (hasSankey) {\n    hoverGroup = ['hoverClosestCartesian', 'hoverCompareCartesian'];\n    resetGroup = ['resetViewSankey'];\n  } else {\n    // hasPolar, hasSmith, hasTernary\n    // always show at least one hover icon.\n    hoverGroup = ['toggleHover'];\n  }\n  // if we have cartesian, allow switching between closest and compare\n  // regardless of what other types are on the plot, since they'll all\n  // just treat any truthy hovermode as 'closest'\n  if (hasCartesian) {\n    hoverGroup = ['toggleSpikelines', 'hoverClosestCartesian', 'hoverCompareCartesian'];\n  }\n  if (hasNoHover(fullData) || hasUnifiedHoverLabel) {\n    hoverGroup = [];\n  }\n  if ((hasCartesian || hasGL2D) && !allAxesFixed) {\n    zoomGroup = ['zoomIn2d', 'zoomOut2d', 'autoScale2d'];\n    if (resetGroup[0] !== 'resetViews') resetGroup = ['resetScale2d'];\n  }\n  if (hasGL3D) {\n    dragModeGroup = ['zoom3d', 'pan3d', 'orbitRotation', 'tableRotation'];\n  } else if ((hasCartesian || hasGL2D) && !allAxesFixed || hasTernary) {\n    dragModeGroup = ['zoom2d', 'pan2d'];\n  } else if (hasMapbox || hasGeo) {\n    dragModeGroup = ['pan2d'];\n  } else if (hasPolar) {\n    dragModeGroup = ['zoom2d'];\n  }\n  if (isSelectable(fullData)) {\n    dragModeGroup.push('select2d', 'lasso2d');\n  }\n  var enabledHoverGroup = [];\n  var enableHover = function (a) {\n    // return if already added\n    if (enabledHoverGroup.indexOf(a) !== -1) return;\n    // should be in hoverGroup\n    if (hoverGroup.indexOf(a) !== -1) {\n      enabledHoverGroup.push(a);\n    }\n  };\n  if (Array.isArray(buttonsToAdd)) {\n    var newList = [];\n    for (var i = 0; i < buttonsToAdd.length; i++) {\n      var b = buttonsToAdd[i];\n      if (typeof b === 'string') {\n        b = b.toLowerCase();\n        if (DRAW_MODES.indexOf(b) !== -1) {\n          // accept pre-defined drag modes i.e. shape drawing features as string\n          if (fullLayout._has('mapbox') ||\n          // draw shapes in paper coordinate (could be improved in future to support data coordinate, when there is no pitch)\n          fullLayout._has('cartesian') // draw shapes in data coordinate\n          ) {\n            dragModeGroup.push(b);\n          }\n        } else if (b === 'togglespikelines') {\n          enableHover('toggleSpikelines');\n        } else if (b === 'togglehover') {\n          enableHover('toggleHover');\n        } else if (b === 'hovercompare') {\n          enableHover('hoverCompareCartesian');\n        } else if (b === 'hoverclosest') {\n          enableHover('hoverClosestCartesian');\n          enableHover('hoverClosestGeo');\n          enableHover('hoverClosest3d');\n          enableHover('hoverClosestGl2d');\n          enableHover('hoverClosestPie');\n        } else if (b === 'v1hovermode') {\n          enableHover('toggleHover');\n          enableHover('hoverClosestCartesian');\n          enableHover('hoverCompareCartesian');\n          enableHover('hoverClosestGeo');\n          enableHover('hoverClosest3d');\n          enableHover('hoverClosestGl2d');\n          enableHover('hoverClosestPie');\n        }\n      } else newList.push(b);\n    }\n    buttonsToAdd = newList;\n  }\n  addGroup(dragModeGroup);\n  addGroup(zoomGroup.concat(resetGroup));\n  addGroup(enabledHoverGroup);\n  return appendButtonsToGroups(groups, buttonsToAdd);\n}\nfunction areAllAxesFixed(fullLayout) {\n  var axList = axisIds.list({\n    _fullLayout: fullLayout\n  }, null, true);\n  for (var i = 0; i < axList.length; i++) {\n    if (!axList[i].fixedrange) {\n      return false;\n    }\n  }\n  return true;\n}\n\n// look for traces that support selection\n// to be updated as we add more selectPoints handlers\nfunction isSelectable(fullData) {\n  var selectable = false;\n  for (var i = 0; i < fullData.length; i++) {\n    if (selectable) break;\n    var trace = fullData[i];\n    if (!trace._module || !trace._module.selectPoints) continue;\n    if (Registry.traceIs(trace, 'scatter-like')) {\n      if (scatterSubTypes.hasMarkers(trace) || scatterSubTypes.hasText(trace)) {\n        selectable = true;\n      }\n    } else if (Registry.traceIs(trace, 'box-violin')) {\n      if (trace.boxpoints === 'all' || trace.points === 'all') {\n        selectable = true;\n      }\n    } else {\n      // assume that in general if the trace module has selectPoints,\n      // then it's selectable. Scatter is an exception to this because it must\n      // have markers or text, not just be a scatter type.\n\n      selectable = true;\n    }\n  }\n  return selectable;\n}\n\n// check whether all trace are 'noHover'\nfunction hasNoHover(fullData) {\n  for (var i = 0; i < fullData.length; i++) {\n    if (!Registry.traceIs(fullData[i], 'noHover')) return false;\n  }\n  return true;\n}\nfunction appendButtonsToGroups(groups, buttons) {\n  if (buttons.length) {\n    if (Array.isArray(buttons[0])) {\n      for (var i = 0; i < buttons.length; i++) {\n        groups.push(buttons[i]);\n      }\n    } else groups.push(buttons);\n  }\n  return groups;\n}\n\n// fill in custom buttons referring to default mode bar buttons\nfunction fillCustomButton(originalModeBarButtons) {\n  var customButtons = extendDeep([], originalModeBarButtons);\n  for (var i = 0; i < customButtons.length; i++) {\n    var buttonGroup = customButtons[i];\n    for (var j = 0; j < buttonGroup.length; j++) {\n      var button = buttonGroup[j];\n      if (typeof button === 'string') {\n        if (modeBarButtons[button] !== undefined) {\n          customButtons[i][j] = modeBarButtons[button];\n        } else {\n          throw new Error(['*modeBarButtons* configuration options', 'invalid button name'].join(' '));\n        }\n      }\n    }\n  }\n  return customButtons;\n}\n\n/***/ }),\n\n/***/ 37676:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_467635__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_467635__(39898);\nvar isNumeric = __nested_webpack_require_467635__(92770);\nvar Lib = __nested_webpack_require_467635__(71828);\nvar Icons = __nested_webpack_require_467635__(24255);\nvar version = (__nested_webpack_require_467635__(11506).version);\nvar Parser = new DOMParser();\n\n/**\n * UI controller for interactive plots\n * @Class\n * @Param {object} opts\n * @Param {object} opts.buttons    nested arrays of grouped buttons config objects\n * @Param {object} opts.container  container div to append modeBar\n * @Param {object} opts.graphInfo  primary plot object containing data and layout\n */\nfunction ModeBar(opts) {\n  this.container = opts.container;\n  this.element = document.createElement('div');\n  this.update(opts.graphInfo, opts.buttons);\n  this.container.appendChild(this.element);\n}\nvar proto = ModeBar.prototype;\n\n/**\n * Update modeBar (buttons and logo)\n *\n * @param {object} graphInfo  primary plot object containing data and layout\n * @param {array of arrays} buttons nested arrays of grouped buttons to initialize\n *\n */\nproto.update = function (graphInfo, buttons) {\n  this.graphInfo = graphInfo;\n  var context = this.graphInfo._context;\n  var fullLayout = this.graphInfo._fullLayout;\n  var modeBarId = 'modebar-' + fullLayout._uid;\n  this.element.setAttribute('id', modeBarId);\n  this._uid = modeBarId;\n  this.element.className = 'modebar';\n  if (context.displayModeBar === 'hover') this.element.className += ' modebar--hover ease-bg';\n  if (fullLayout.modebar.orientation === 'v') {\n    this.element.className += ' vertical';\n    buttons = buttons.reverse();\n  }\n  var style = fullLayout.modebar;\n  var bgSelector = context.displayModeBar === 'hover' ? '.js-plotly-plot .plotly:hover ' : '';\n  Lib.deleteRelatedStyleRule(modeBarId);\n  Lib.addRelatedStyleRule(modeBarId, bgSelector + '#' + modeBarId + ' .modebar-group', 'background-color: ' + style.bgcolor);\n  Lib.addRelatedStyleRule(modeBarId, '#' + modeBarId + ' .modebar-btn .icon path', 'fill: ' + style.color);\n  Lib.addRelatedStyleRule(modeBarId, '#' + modeBarId + ' .modebar-btn:hover .icon path', 'fill: ' + style.activecolor);\n  Lib.addRelatedStyleRule(modeBarId, '#' + modeBarId + ' .modebar-btn.active .icon path', 'fill: ' + style.activecolor);\n\n  // if buttons or logo have changed, redraw modebar interior\n  var needsNewButtons = !this.hasButtons(buttons);\n  var needsNewLogo = this.hasLogo !== context.displaylogo;\n  var needsNewLocale = this.locale !== context.locale;\n  this.locale = context.locale;\n  if (needsNewButtons || needsNewLogo || needsNewLocale) {\n    this.removeAllButtons();\n    this.updateButtons(buttons);\n    if (context.watermark || context.displaylogo) {\n      var logoGroup = this.getLogo();\n      if (context.watermark) {\n        logoGroup.className = logoGroup.className + ' watermark';\n      }\n      if (fullLayout.modebar.orientation === 'v') {\n        this.element.insertBefore(logoGroup, this.element.childNodes[0]);\n      } else {\n        this.element.appendChild(logoGroup);\n      }\n      this.hasLogo = true;\n    }\n  }\n  this.updateActiveButton();\n};\nproto.updateButtons = function (buttons) {\n  var _this = this;\n  this.buttons = buttons;\n  this.buttonElements = [];\n  this.buttonsNames = [];\n  this.buttons.forEach(function (buttonGroup) {\n    var group = _this.createGroup();\n    buttonGroup.forEach(function (buttonConfig) {\n      var buttonName = buttonConfig.name;\n      if (!buttonName) {\n        throw new Error('must provide button \\'name\\' in button config');\n      }\n      if (_this.buttonsNames.indexOf(buttonName) !== -1) {\n        throw new Error('button name \\'' + buttonName + '\\' is taken');\n      }\n      _this.buttonsNames.push(buttonName);\n      var button = _this.createButton(buttonConfig);\n      _this.buttonElements.push(button);\n      group.appendChild(button);\n    });\n    _this.element.appendChild(group);\n  });\n};\n\n/**\n * Empty div for containing a group of buttons\n * @Return {HTMLelement}\n */\nproto.createGroup = function () {\n  var group = document.createElement('div');\n  group.className = 'modebar-group';\n  return group;\n};\n\n/**\n * Create a new button div and set constant and configurable attributes\n * @Param {object} config (see ./buttons.js for more info)\n * @Return {HTMLelement}\n */\nproto.createButton = function (config) {\n  var _this = this;\n  var button = document.createElement('a');\n  button.setAttribute('rel', 'tooltip');\n  button.className = 'modebar-btn';\n  var title = config.title;\n  if (title === undefined) title = config.name;\n  // for localization: allow title to be a callable that takes gd as arg\n  else if (typeof title === 'function') title = title(this.graphInfo);\n  if (title || title === 0) button.setAttribute('data-title', title);\n  if (config.attr !== undefined) button.setAttribute('data-attr', config.attr);\n  var val = config.val;\n  if (val !== undefined) {\n    if (typeof val === 'function') val = val(this.graphInfo);\n    button.setAttribute('data-val', val);\n  }\n  var click = config.click;\n  if (typeof click !== 'function') {\n    throw new Error('must provide button \\'click\\' function in button config');\n  } else {\n    button.addEventListener('click', function (ev) {\n      config.click(_this.graphInfo, ev);\n\n      // only needed for 'hoverClosestGeo' which does not call relayout\n      _this.updateActiveButton(ev.currentTarget);\n    });\n  }\n  button.setAttribute('data-toggle', config.toggle || false);\n  if (config.toggle) d3.select(button).classed('active', true);\n  var icon = config.icon;\n  if (typeof icon === 'function') {\n    button.appendChild(icon());\n  } else {\n    button.appendChild(this.createIcon(icon || Icons.question));\n  }\n  button.setAttribute('data-gravity', config.gravity || 'n');\n  return button;\n};\n\n/**\n * Add an icon to a button\n * @Param {object} thisIcon\n * @Param {number} thisIcon.width\n * @Param {string} thisIcon.path\n * @Param {string} thisIcon.color\n * @Return {HTMLelement}\n */\nproto.createIcon = function (thisIcon) {\n  var iconHeight = isNumeric(thisIcon.height) ? Number(thisIcon.height) : thisIcon.ascent - thisIcon.descent;\n  var svgNS = 'http://www.w3.org/2000/svg';\n  var icon;\n  if (thisIcon.path) {\n    icon = document.createElementNS(svgNS, 'svg');\n    icon.setAttribute('viewBox', [0, 0, thisIcon.width, iconHeight].join(' '));\n    icon.setAttribute('class', 'icon');\n    var path = document.createElementNS(svgNS, 'path');\n    path.setAttribute('d', thisIcon.path);\n    if (thisIcon.transform) {\n      path.setAttribute('transform', thisIcon.transform);\n    } else if (thisIcon.ascent !== undefined) {\n      // Legacy icon transform calculation\n      path.setAttribute('transform', 'matrix(1 0 0 -1 0 ' + thisIcon.ascent + ')');\n    }\n    icon.appendChild(path);\n  }\n  if (thisIcon.svg) {\n    var svgDoc = Parser.parseFromString(thisIcon.svg, 'application/xml');\n    icon = svgDoc.childNodes[0];\n  }\n  icon.setAttribute('height', '1em');\n  icon.setAttribute('width', '1em');\n  return icon;\n};\n\n/**\n * Updates active button with attribute specified in layout\n * @Param {object} graphInfo plot object containing data and layout\n * @Return {HTMLelement}\n */\nproto.updateActiveButton = function (buttonClicked) {\n  var fullLayout = this.graphInfo._fullLayout;\n  var dataAttrClicked = buttonClicked !== undefined ? buttonClicked.getAttribute('data-attr') : null;\n  this.buttonElements.forEach(function (button) {\n    var thisval = button.getAttribute('data-val') || true;\n    var dataAttr = button.getAttribute('data-attr');\n    var isToggleButton = button.getAttribute('data-toggle') === 'true';\n    var button3 = d3.select(button);\n\n    // Use 'data-toggle' and 'buttonClicked' to toggle buttons\n    // that have no one-to-one equivalent in fullLayout\n    if (isToggleButton) {\n      if (dataAttr === dataAttrClicked) {\n        button3.classed('active', !button3.classed('active'));\n      }\n    } else {\n      var val = dataAttr === null ? dataAttr : Lib.nestedProperty(fullLayout, dataAttr).get();\n      button3.classed('active', val === thisval);\n    }\n  });\n};\n\n/**\n * Check if modeBar is configured as button configuration argument\n *\n * @Param {object} buttons 2d array of grouped button config objects\n * @Return {boolean}\n */\nproto.hasButtons = function (buttons) {\n  var currentButtons = this.buttons;\n  if (!currentButtons) return false;\n  if (buttons.length !== currentButtons.length) return false;\n  for (var i = 0; i < buttons.length; ++i) {\n    if (buttons[i].length !== currentButtons[i].length) return false;\n    for (var j = 0; j < buttons[i].length; j++) {\n      if (buttons[i][j].name !== currentButtons[i][j].name) return false;\n    }\n  }\n  return true;\n};\nfunction jsVersion(str) {\n  return str + ' (v' + version + ')';\n}\n\n/**\n * @return {HTMLDivElement} The logo image wrapped in a group\n */\nproto.getLogo = function () {\n  var group = this.createGroup();\n  var a = document.createElement('a');\n  a.href = 'https://plotly.com/';\n  a.target = '_blank';\n  a.setAttribute('data-title', jsVersion(Lib._(this.graphInfo, 'Produced with Plotly.js')));\n  a.className = 'modebar-btn plotlyjsicon modebar-btn--logo';\n  a.appendChild(this.createIcon(Icons.newplotlylogo));\n  group.appendChild(a);\n  return group;\n};\nproto.removeAllButtons = function () {\n  while (this.element.firstChild) {\n    this.element.removeChild(this.element.firstChild);\n  }\n  this.hasLogo = false;\n};\nproto.destroy = function () {\n  Lib.removeElement(this.container.querySelector('.modebar'));\n  Lib.deleteRelatedStyleRule(this._uid);\n};\nfunction createModeBar(gd, buttons) {\n  var fullLayout = gd._fullLayout;\n  var modeBar = new ModeBar({\n    graphInfo: gd,\n    container: fullLayout._modebardiv.node(),\n    buttons: buttons\n  });\n  if (fullLayout._privateplot) {\n    d3.select(modeBar.element).append('span').classed('badge-private float--left', true).text('PRIVATE');\n  }\n  return modeBar;\n}\nmodule.exports = createModeBar;\n\n/***/ }),\n\n/***/ 37113:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_477561__) {\n\n\"use strict\";\n\n\nvar fontAttrs = __nested_webpack_require_477561__(41940);\nvar colorAttrs = __nested_webpack_require_477561__(22399);\nvar templatedArray = (__nested_webpack_require_477561__(44467).templatedArray);\nvar buttonAttrs = templatedArray('button', {\n  visible: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'plot'\n  },\n  step: {\n    valType: 'enumerated',\n    values: ['month', 'year', 'day', 'hour', 'minute', 'second', 'all'],\n    dflt: 'month',\n    editType: 'plot'\n  },\n  stepmode: {\n    valType: 'enumerated',\n    values: ['backward', 'todate'],\n    dflt: 'backward',\n    editType: 'plot'\n  },\n  count: {\n    valType: 'number',\n    min: 0,\n    dflt: 1,\n    editType: 'plot'\n  },\n  label: {\n    valType: 'string',\n    editType: 'plot'\n  },\n  editType: 'plot'\n});\nmodule.exports = {\n  visible: {\n    valType: 'boolean',\n    editType: 'plot'\n  },\n  buttons: buttonAttrs,\n  x: {\n    valType: 'number',\n    min: -2,\n    max: 3,\n    editType: 'plot'\n  },\n  xanchor: {\n    valType: 'enumerated',\n    values: ['auto', 'left', 'center', 'right'],\n    dflt: 'left',\n    editType: 'plot'\n  },\n  y: {\n    valType: 'number',\n    min: -2,\n    max: 3,\n    editType: 'plot'\n  },\n  yanchor: {\n    valType: 'enumerated',\n    values: ['auto', 'top', 'middle', 'bottom'],\n    dflt: 'bottom',\n    editType: 'plot'\n  },\n  font: fontAttrs({\n    editType: 'plot'\n  }),\n  bgcolor: {\n    valType: 'color',\n    dflt: colorAttrs.lightLine,\n    editType: 'plot'\n  },\n  activecolor: {\n    valType: 'color',\n    editType: 'plot'\n  },\n  bordercolor: {\n    valType: 'color',\n    dflt: colorAttrs.defaultLine,\n    editType: 'plot'\n  },\n  borderwidth: {\n    valType: 'number',\n    min: 0,\n    dflt: 0,\n    editType: 'plot'\n  },\n  editType: 'plot'\n};\n\n/***/ }),\n\n/***/ 89573:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  // 'y' position pad above counter axis domain\n  yPad: 0.02,\n  // minimum button width (regardless of text size)\n  minButtonWidth: 30,\n  // buttons rect radii\n  rx: 3,\n  ry: 3,\n  // light fraction used to compute the 'activecolor' default\n  lightAmount: 25,\n  darkAmount: 10\n};\n\n/***/ }),\n\n/***/ 28674:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_479722__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_479722__(71828);\nvar Color = __nested_webpack_require_479722__(7901);\nvar Template = __nested_webpack_require_479722__(44467);\nvar handleArrayContainerDefaults = __nested_webpack_require_479722__(85501);\nvar attributes = __nested_webpack_require_479722__(37113);\nvar constants = __nested_webpack_require_479722__(89573);\nmodule.exports = function handleDefaults(containerIn, containerOut, layout, counterAxes, calendar) {\n  var selectorIn = containerIn.rangeselector || {};\n  var selectorOut = Template.newContainer(containerOut, 'rangeselector');\n  function coerce(attr, dflt) {\n    return Lib.coerce(selectorIn, selectorOut, attributes, attr, dflt);\n  }\n  var buttons = handleArrayContainerDefaults(selectorIn, selectorOut, {\n    name: 'buttons',\n    handleItemDefaults: buttonDefaults,\n    calendar: calendar\n  });\n  var visible = coerce('visible', buttons.length > 0);\n  if (visible) {\n    var posDflt = getPosDflt(containerOut, layout, counterAxes);\n    coerce('x', posDflt[0]);\n    coerce('y', posDflt[1]);\n    Lib.noneOrAll(containerIn, containerOut, ['x', 'y']);\n    coerce('xanchor');\n    coerce('yanchor');\n    Lib.coerceFont(coerce, 'font', layout.font);\n    var bgColor = coerce('bgcolor');\n    coerce('activecolor', Color.contrast(bgColor, constants.lightAmount, constants.darkAmount));\n    coerce('bordercolor');\n    coerce('borderwidth');\n  }\n};\nfunction buttonDefaults(buttonIn, buttonOut, selectorOut, opts) {\n  var calendar = opts.calendar;\n  function coerce(attr, dflt) {\n    return Lib.coerce(buttonIn, buttonOut, attributes.buttons, attr, dflt);\n  }\n  var visible = coerce('visible');\n  if (visible) {\n    var step = coerce('step');\n    if (step !== 'all') {\n      if (calendar && calendar !== 'gregorian' && (step === 'month' || step === 'year')) {\n        buttonOut.stepmode = 'backward';\n      } else {\n        coerce('stepmode');\n      }\n      coerce('count');\n    }\n    coerce('label');\n  }\n}\nfunction getPosDflt(containerOut, layout, counterAxes) {\n  var anchoredList = counterAxes.filter(function (ax) {\n    return layout[ax].anchor === containerOut._id;\n  });\n  var posY = 0;\n  for (var i = 0; i < anchoredList.length; i++) {\n    var domain = layout[anchoredList[i]].domain;\n    if (domain) posY = Math.max(domain[1], posY);\n  }\n  return [containerOut.domain[0], posY + constants.yPad];\n}\n\n/***/ }),\n\n/***/ 21598:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_482106__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_482106__(39898);\nvar Registry = __nested_webpack_require_482106__(73972);\nvar Plots = __nested_webpack_require_482106__(74875);\nvar Color = __nested_webpack_require_482106__(7901);\nvar Drawing = __nested_webpack_require_482106__(91424);\nvar Lib = __nested_webpack_require_482106__(71828);\nvar strTranslate = Lib.strTranslate;\nvar svgTextUtils = __nested_webpack_require_482106__(63893);\nvar axisIds = __nested_webpack_require_482106__(41675);\nvar alignmentConstants = __nested_webpack_require_482106__(18783);\nvar LINE_SPACING = alignmentConstants.LINE_SPACING;\nvar FROM_TL = alignmentConstants.FROM_TL;\nvar FROM_BR = alignmentConstants.FROM_BR;\nvar constants = __nested_webpack_require_482106__(89573);\nvar getUpdateObject = __nested_webpack_require_482106__(70565);\nmodule.exports = function draw(gd) {\n  var fullLayout = gd._fullLayout;\n  var selectors = fullLayout._infolayer.selectAll('.rangeselector').data(makeSelectorData(gd), selectorKeyFunc);\n  selectors.enter().append('g').classed('rangeselector', true);\n  selectors.exit().remove();\n  selectors.style({\n    cursor: 'pointer',\n    'pointer-events': 'all'\n  });\n  selectors.each(function (d) {\n    var selector = d3.select(this);\n    var axisLayout = d;\n    var selectorLayout = axisLayout.rangeselector;\n    var buttons = selector.selectAll('g.button').data(Lib.filterVisible(selectorLayout.buttons));\n    buttons.enter().append('g').classed('button', true);\n    buttons.exit().remove();\n    buttons.each(function (d) {\n      var button = d3.select(this);\n      var update = getUpdateObject(axisLayout, d);\n      d._isActive = isActive(axisLayout, d, update);\n      button.call(drawButtonRect, selectorLayout, d);\n      button.call(drawButtonText, selectorLayout, d, gd);\n      button.on('click', function () {\n        if (gd._dragged) return;\n        Registry.call('_guiRelayout', gd, update);\n      });\n      button.on('mouseover', function () {\n        d._isHovered = true;\n        button.call(drawButtonRect, selectorLayout, d);\n      });\n      button.on('mouseout', function () {\n        d._isHovered = false;\n        button.call(drawButtonRect, selectorLayout, d);\n      });\n    });\n    reposition(gd, buttons, selectorLayout, axisLayout._name, selector);\n  });\n};\nfunction makeSelectorData(gd) {\n  var axes = axisIds.list(gd, 'x', true);\n  var data = [];\n  for (var i = 0; i < axes.length; i++) {\n    var axis = axes[i];\n    if (axis.rangeselector && axis.rangeselector.visible) {\n      data.push(axis);\n    }\n  }\n  return data;\n}\nfunction selectorKeyFunc(d) {\n  return d._id;\n}\nfunction isActive(axisLayout, opts, update) {\n  if (opts.step === 'all') {\n    return axisLayout.autorange === true;\n  } else {\n    var keys = Object.keys(update);\n    return axisLayout.range[0] === update[keys[0]] && axisLayout.range[1] === update[keys[1]];\n  }\n}\nfunction drawButtonRect(button, selectorLayout, d) {\n  var rect = Lib.ensureSingle(button, 'rect', 'selector-rect', function (s) {\n    s.attr('shape-rendering', 'crispEdges');\n  });\n  rect.attr({\n    'rx': constants.rx,\n    'ry': constants.ry\n  });\n  rect.call(Color.stroke, selectorLayout.bordercolor).call(Color.fill, getFillColor(selectorLayout, d)).style('stroke-width', selectorLayout.borderwidth + 'px');\n}\nfunction getFillColor(selectorLayout, d) {\n  return d._isActive || d._isHovered ? selectorLayout.activecolor : selectorLayout.bgcolor;\n}\nfunction drawButtonText(button, selectorLayout, d, gd) {\n  function textLayout(s) {\n    svgTextUtils.convertToTspans(s, gd);\n  }\n  var text = Lib.ensureSingle(button, 'text', 'selector-text', function (s) {\n    s.attr('text-anchor', 'middle');\n  });\n  text.call(Drawing.font, selectorLayout.font).text(getLabel(d, gd._fullLayout._meta)).call(textLayout);\n}\nfunction getLabel(opts, _meta) {\n  if (opts.label) {\n    return _meta ? Lib.templateString(opts.label, _meta) : opts.label;\n  }\n  if (opts.step === 'all') return 'all';\n  return opts.count + opts.step.charAt(0);\n}\nfunction reposition(gd, buttons, opts, axName, selector) {\n  var width = 0;\n  var height = 0;\n  var borderWidth = opts.borderwidth;\n  buttons.each(function () {\n    var button = d3.select(this);\n    var text = button.select('.selector-text');\n    var tHeight = opts.font.size * LINE_SPACING;\n    var hEff = Math.max(tHeight * svgTextUtils.lineCount(text), 16) + 3;\n    height = Math.max(height, hEff);\n  });\n  buttons.each(function () {\n    var button = d3.select(this);\n    var rect = button.select('.selector-rect');\n    var text = button.select('.selector-text');\n    var tWidth = text.node() && Drawing.bBox(text.node()).width;\n    var tHeight = opts.font.size * LINE_SPACING;\n    var tLines = svgTextUtils.lineCount(text);\n    var wEff = Math.max(tWidth + 10, constants.minButtonWidth);\n\n    // TODO add MathJax support\n\n    // TODO add buttongap attribute\n\n    button.attr('transform', strTranslate(borderWidth + width, borderWidth));\n    rect.attr({\n      x: 0,\n      y: 0,\n      width: wEff,\n      height: height\n    });\n    svgTextUtils.positionText(text, wEff / 2, height / 2 - (tLines - 1) * tHeight / 2 + 3);\n    width += wEff + 5;\n  });\n  var graphSize = gd._fullLayout._size;\n  var lx = graphSize.l + graphSize.w * opts.x;\n  var ly = graphSize.t + graphSize.h * (1 - opts.y);\n  var xanchor = 'left';\n  if (Lib.isRightAnchor(opts)) {\n    lx -= width;\n    xanchor = 'right';\n  }\n  if (Lib.isCenterAnchor(opts)) {\n    lx -= width / 2;\n    xanchor = 'center';\n  }\n  var yanchor = 'top';\n  if (Lib.isBottomAnchor(opts)) {\n    ly -= height;\n    yanchor = 'bottom';\n  }\n  if (Lib.isMiddleAnchor(opts)) {\n    ly -= height / 2;\n    yanchor = 'middle';\n  }\n  width = Math.ceil(width);\n  height = Math.ceil(height);\n  lx = Math.round(lx);\n  ly = Math.round(ly);\n  Plots.autoMargin(gd, axName + '-range-selector', {\n    x: opts.x,\n    y: opts.y,\n    l: width * FROM_TL[xanchor],\n    r: width * FROM_BR[xanchor],\n    b: height * FROM_BR[yanchor],\n    t: height * FROM_TL[yanchor]\n  });\n  selector.attr('transform', strTranslate(lx, ly));\n}\n\n/***/ }),\n\n/***/ 70565:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_488076__) {\n\n\"use strict\";\n\n\nvar d3Time = __nested_webpack_require_488076__(81041);\nvar titleCase = (__nested_webpack_require_488076__(71828).titleCase);\nmodule.exports = function getUpdateObject(axisLayout, buttonLayout) {\n  var axName = axisLayout._name;\n  var update = {};\n  if (buttonLayout.step === 'all') {\n    update[axName + '.autorange'] = true;\n  } else {\n    var xrange = getXRange(axisLayout, buttonLayout);\n    update[axName + '.range[0]'] = xrange[0];\n    update[axName + '.range[1]'] = xrange[1];\n  }\n  return update;\n};\nfunction getXRange(axisLayout, buttonLayout) {\n  var currentRange = axisLayout.range;\n  var base = new Date(axisLayout.r2l(currentRange[1]));\n  var step = buttonLayout.step;\n  var utcStep = d3Time['utc' + titleCase(step)];\n  var count = buttonLayout.count;\n  var range0;\n  switch (buttonLayout.stepmode) {\n    case 'backward':\n      range0 = axisLayout.l2r(+utcStep.offset(base, -count));\n      break;\n    case 'todate':\n      var base2 = utcStep.offset(base, -count);\n      range0 = axisLayout.l2r(+utcStep.ceil(base2));\n      break;\n  }\n  var range1 = currentRange[1];\n  return [range0, range1];\n}\n\n/***/ }),\n\n/***/ 97218:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_489270__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'component',\n  name: 'rangeselector',\n  schema: {\n    subplots: {\n      xaxis: {\n        rangeselector: __nested_webpack_require_489270__(37113)\n      }\n    }\n  },\n  layoutAttributes: __nested_webpack_require_489270__(37113),\n  handleDefaults: __nested_webpack_require_489270__(28674),\n  draw: __nested_webpack_require_489270__(21598)\n};\n\n/***/ }),\n\n/***/ 75148:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_489700__) {\n\n\"use strict\";\n\n\nvar colorAttributes = __nested_webpack_require_489700__(22399);\nmodule.exports = {\n  bgcolor: {\n    valType: 'color',\n    dflt: colorAttributes.background,\n    editType: 'plot'\n  },\n  bordercolor: {\n    valType: 'color',\n    dflt: colorAttributes.defaultLine,\n    editType: 'plot'\n  },\n  borderwidth: {\n    valType: 'integer',\n    dflt: 0,\n    min: 0,\n    editType: 'plot'\n  },\n  autorange: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc',\n    impliedEdits: {\n      'range[0]': undefined,\n      'range[1]': undefined\n    }\n  },\n  range: {\n    valType: 'info_array',\n    items: [{\n      valType: 'any',\n      editType: 'calc',\n      impliedEdits: {\n        '^autorange': false\n      }\n    }, {\n      valType: 'any',\n      editType: 'calc',\n      impliedEdits: {\n        '^autorange': false\n      }\n    }],\n    editType: 'calc',\n    impliedEdits: {\n      'autorange': false\n    }\n  },\n  thickness: {\n    valType: 'number',\n    dflt: 0.15,\n    min: 0,\n    max: 1,\n    editType: 'plot'\n  },\n  visible: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc'\n  },\n  editType: 'calc'\n};\n\n/***/ }),\n\n/***/ 88443:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_490904__) {\n\n\"use strict\";\n\n\nvar listAxes = (__nested_webpack_require_490904__(41675).list);\nvar getAutoRange = (__nested_webpack_require_490904__(71739).getAutoRange);\nvar constants = __nested_webpack_require_490904__(73251);\nmodule.exports = function calcAutorange(gd) {\n  var axes = listAxes(gd, 'x', true);\n\n  // Compute new slider range using axis autorange if necessary.\n  //\n  // Copy back range to input range slider container to skip\n  // this step in subsequent draw calls.\n\n  for (var i = 0; i < axes.length; i++) {\n    var ax = axes[i];\n    var opts = ax[constants.name];\n    if (opts && opts.visible && opts.autorange) {\n      opts._input.autorange = true;\n      opts._input.range = opts.range = getAutoRange(gd, ax);\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 73251:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  // attribute container name\n  name: 'rangeslider',\n  // class names\n\n  containerClassName: 'rangeslider-container',\n  bgClassName: 'rangeslider-bg',\n  rangePlotClassName: 'rangeslider-rangeplot',\n  maskMinClassName: 'rangeslider-mask-min',\n  maskMaxClassName: 'rangeslider-mask-max',\n  slideBoxClassName: 'rangeslider-slidebox',\n  grabberMinClassName: 'rangeslider-grabber-min',\n  grabAreaMinClassName: 'rangeslider-grabarea-min',\n  handleMinClassName: 'rangeslider-handle-min',\n  grabberMaxClassName: 'rangeslider-grabber-max',\n  grabAreaMaxClassName: 'rangeslider-grabarea-max',\n  handleMaxClassName: 'rangeslider-handle-max',\n  maskMinOppAxisClassName: 'rangeslider-mask-min-opp-axis',\n  maskMaxOppAxisClassName: 'rangeslider-mask-max-opp-axis',\n  // style constants\n\n  maskColor: 'rgba(0,0,0,0.4)',\n  maskOppAxisColor: 'rgba(0,0,0,0.2)',\n  slideBoxFill: 'transparent',\n  slideBoxCursor: 'ew-resize',\n  grabAreaFill: 'transparent',\n  grabAreaCursor: 'col-resize',\n  grabAreaWidth: 10,\n  handleWidth: 4,\n  handleRadius: 1,\n  handleStrokeWidth: 1,\n  extraPad: 15\n};\n\n/***/ }),\n\n/***/ 26377:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_492848__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_492848__(71828);\nvar Template = __nested_webpack_require_492848__(44467);\nvar axisIds = __nested_webpack_require_492848__(41675);\nvar attributes = __nested_webpack_require_492848__(75148);\nvar oppAxisAttrs = __nested_webpack_require_492848__(47850);\nmodule.exports = function handleDefaults(layoutIn, layoutOut, axName) {\n  var axIn = layoutIn[axName];\n  var axOut = layoutOut[axName];\n  if (!(axIn.rangeslider || layoutOut._requestRangeslider[axOut._id])) return;\n\n  // not super proud of this (maybe store _ in axis object instead\n  if (!Lib.isPlainObject(axIn.rangeslider)) {\n    axIn.rangeslider = {};\n  }\n  var containerIn = axIn.rangeslider;\n  var containerOut = Template.newContainer(axOut, 'rangeslider');\n  function coerce(attr, dflt) {\n    return Lib.coerce(containerIn, containerOut, attributes, attr, dflt);\n  }\n  var rangeContainerIn, rangeContainerOut;\n  function coerceRange(attr, dflt) {\n    return Lib.coerce(rangeContainerIn, rangeContainerOut, oppAxisAttrs, attr, dflt);\n  }\n  var visible = coerce('visible');\n  if (!visible) return;\n  coerce('bgcolor', layoutOut.plot_bgcolor);\n  coerce('bordercolor');\n  coerce('borderwidth');\n  coerce('thickness');\n  coerce('autorange', !axOut.isValidRange(containerIn.range));\n  coerce('range');\n  var subplots = layoutOut._subplots;\n  if (subplots) {\n    var yIds = subplots.cartesian.filter(function (subplotId) {\n      return subplotId.substr(0, subplotId.indexOf('y')) === axisIds.name2id(axName);\n    }).map(function (subplotId) {\n      return subplotId.substr(subplotId.indexOf('y'), subplotId.length);\n    });\n    var yNames = Lib.simpleMap(yIds, axisIds.id2name);\n    for (var i = 0; i < yNames.length; i++) {\n      var yName = yNames[i];\n      rangeContainerIn = containerIn[yName] || {};\n      rangeContainerOut = Template.newContainer(containerOut, yName, 'yaxis');\n      var yAxOut = layoutOut[yName];\n      var rangemodeDflt;\n      if (rangeContainerIn.range && yAxOut.isValidRange(rangeContainerIn.range)) {\n        rangemodeDflt = 'fixed';\n      }\n      var rangeMode = coerceRange('rangemode', rangemodeDflt);\n      if (rangeMode !== 'match') {\n        coerceRange('range', yAxOut.range.slice());\n      }\n    }\n  }\n\n  // to map back range slider (auto) range\n  containerOut._input = containerIn;\n};\n\n/***/ }),\n\n/***/ 72413:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_495200__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_495200__(39898);\nvar Registry = __nested_webpack_require_495200__(73972);\nvar Plots = __nested_webpack_require_495200__(74875);\nvar Lib = __nested_webpack_require_495200__(71828);\nvar strTranslate = Lib.strTranslate;\nvar Drawing = __nested_webpack_require_495200__(91424);\nvar Color = __nested_webpack_require_495200__(7901);\nvar Titles = __nested_webpack_require_495200__(92998);\nvar Cartesian = __nested_webpack_require_495200__(93612);\nvar axisIDs = __nested_webpack_require_495200__(41675);\nvar dragElement = __nested_webpack_require_495200__(28569);\nvar setCursor = __nested_webpack_require_495200__(6964);\nvar constants = __nested_webpack_require_495200__(73251);\nmodule.exports = function (gd) {\n  var fullLayout = gd._fullLayout;\n  var rangeSliderData = fullLayout._rangeSliderData;\n  for (var i = 0; i < rangeSliderData.length; i++) {\n    var opts = rangeSliderData[i][constants.name];\n    // fullLayout._uid may not exist when we call makeData\n    opts._clipId = opts._id + '-' + fullLayout._uid;\n  }\n\n  /*\n   * <g container />\n   *  <rect bg />\n   *  < .... range plot />\n   *  <rect mask-min />\n   *  <rect mask-max />\n   *  <rect slidebox />\n   *  <g grabber-min />\n   *      <rect handle-min />\n   *      <rect grabare-min />\n   *  <g grabber-max />\n   *      <rect handle-max />\n   *      <rect grabare-max />\n   *\n   *  ...\n   */\n\n  function keyFunction(axisOpts) {\n    return axisOpts._name;\n  }\n  var rangeSliders = fullLayout._infolayer.selectAll('g.' + constants.containerClassName).data(rangeSliderData, keyFunction);\n\n  // remove exiting sliders and their corresponding clip paths\n  rangeSliders.exit().each(function (axisOpts) {\n    var opts = axisOpts[constants.name];\n    fullLayout._topdefs.select('#' + opts._clipId).remove();\n  }).remove();\n\n  // return early if no range slider is visible\n  if (rangeSliderData.length === 0) return;\n  rangeSliders.enter().append('g').classed(constants.containerClassName, true).attr('pointer-events', 'all');\n\n  // for all present range sliders\n  rangeSliders.each(function (axisOpts) {\n    var rangeSlider = d3.select(this);\n    var opts = axisOpts[constants.name];\n    var oppAxisOpts = fullLayout[axisIDs.id2name(axisOpts.anchor)];\n    var oppAxisRangeOpts = opts[axisIDs.id2name(axisOpts.anchor)];\n\n    // update range\n    // Expand slider range to the axis range\n    if (opts.range) {\n      var rng = Lib.simpleMap(opts.range, axisOpts.r2l);\n      var axRng = Lib.simpleMap(axisOpts.range, axisOpts.r2l);\n      var newRng;\n      if (axRng[0] < axRng[1]) {\n        newRng = [Math.min(rng[0], axRng[0]), Math.max(rng[1], axRng[1])];\n      } else {\n        newRng = [Math.max(rng[0], axRng[0]), Math.min(rng[1], axRng[1])];\n      }\n      opts.range = opts._input.range = Lib.simpleMap(newRng, axisOpts.l2r);\n    }\n    axisOpts.cleanRange('rangeslider.range');\n\n    // update range slider dimensions\n\n    var gs = fullLayout._size;\n    var domain = axisOpts.domain;\n    opts._width = gs.w * (domain[1] - domain[0]);\n    var x = Math.round(gs.l + gs.w * domain[0]);\n    var y = Math.round(gs.t + gs.h * (1 - axisOpts._counterDomainMin) + (axisOpts.side === 'bottom' ? axisOpts._depth : 0) + opts._offsetShift + constants.extraPad);\n    rangeSlider.attr('transform', strTranslate(x, y));\n\n    // update data <--> pixel coordinate conversion methods\n\n    opts._rl = Lib.simpleMap(opts.range, axisOpts.r2l);\n    var rl0 = opts._rl[0];\n    var rl1 = opts._rl[1];\n    var drl = rl1 - rl0;\n    opts.p2d = function (v) {\n      return v / opts._width * drl + rl0;\n    };\n    opts.d2p = function (v) {\n      return (v - rl0) / drl * opts._width;\n    };\n    if (axisOpts.rangebreaks) {\n      var rsBreaks = axisOpts.locateBreaks(rl0, rl1);\n      if (rsBreaks.length) {\n        var j, brk;\n        var lBreaks = 0;\n        for (j = 0; j < rsBreaks.length; j++) {\n          brk = rsBreaks[j];\n          lBreaks += brk.max - brk.min;\n        }\n\n        // TODO fix for reversed-range axes !!!\n\n        // compute slope and piecewise offsets\n        var m2 = opts._width / (rl1 - rl0 - lBreaks);\n        var _B = [-m2 * rl0];\n        for (j = 0; j < rsBreaks.length; j++) {\n          brk = rsBreaks[j];\n          _B.push(_B[_B.length - 1] - m2 * (brk.max - brk.min));\n        }\n        opts.d2p = function (v) {\n          var b = _B[0];\n          for (var j = 0; j < rsBreaks.length; j++) {\n            var brk = rsBreaks[j];\n            if (v >= brk.max) b = _B[j + 1];else if (v < brk.min) break;\n          }\n          return b + m2 * v;\n        };\n\n        // fill pixel (i.e. 'p') min/max here,\n        // to not have to loop through the _rangebreaks twice during `p2d`\n        for (j = 0; j < rsBreaks.length; j++) {\n          brk = rsBreaks[j];\n          brk.pmin = opts.d2p(brk.min);\n          brk.pmax = opts.d2p(brk.max);\n        }\n        opts.p2d = function (v) {\n          var b = _B[0];\n          for (var j = 0; j < rsBreaks.length; j++) {\n            var brk = rsBreaks[j];\n            if (v >= brk.pmax) b = _B[j + 1];else if (v < brk.pmin) break;\n          }\n          return (v - b) / m2;\n        };\n      }\n    }\n    if (oppAxisRangeOpts.rangemode !== 'match') {\n      var range0OppAxis = oppAxisOpts.r2l(oppAxisRangeOpts.range[0]);\n      var range1OppAxis = oppAxisOpts.r2l(oppAxisRangeOpts.range[1]);\n      var distOppAxis = range1OppAxis - range0OppAxis;\n      opts.d2pOppAxis = function (v) {\n        return (v - range0OppAxis) / distOppAxis * opts._height;\n      };\n    }\n\n    // update inner nodes\n\n    rangeSlider.call(drawBg, gd, axisOpts, opts).call(addClipPath, gd, axisOpts, opts).call(drawRangePlot, gd, axisOpts, opts).call(drawMasks, gd, axisOpts, opts, oppAxisRangeOpts).call(drawSlideBox, gd, axisOpts, opts).call(drawGrabbers, gd, axisOpts, opts);\n\n    // setup drag element\n    setupDragElement(rangeSlider, gd, axisOpts, opts);\n\n    // update current range\n    setPixelRange(rangeSlider, gd, axisOpts, opts, oppAxisOpts, oppAxisRangeOpts);\n\n    // title goes next to range slider instead of tick labels, so\n    // just take it over and draw it from here\n    if (axisOpts.side === 'bottom') {\n      Titles.draw(gd, axisOpts._id + 'title', {\n        propContainer: axisOpts,\n        propName: axisOpts._name + '.title',\n        placeholder: fullLayout._dfltTitle.x,\n        attributes: {\n          x: axisOpts._offset + axisOpts._length / 2,\n          y: y + opts._height + opts._offsetShift + 10 + 1.5 * axisOpts.title.font.size,\n          'text-anchor': 'middle'\n        }\n      });\n    }\n  });\n};\nfunction setupDragElement(rangeSlider, gd, axisOpts, opts) {\n  if (gd._context.staticPlot) return;\n  var slideBox = rangeSlider.select('rect.' + constants.slideBoxClassName).node();\n  var grabAreaMin = rangeSlider.select('rect.' + constants.grabAreaMinClassName).node();\n  var grabAreaMax = rangeSlider.select('rect.' + constants.grabAreaMaxClassName).node();\n  function mouseDownHandler() {\n    var event = d3.event;\n    var target = event.target;\n    var startX = event.clientX || event.touches[0].clientX;\n    var offsetX = startX - rangeSlider.node().getBoundingClientRect().left;\n    var minVal = opts.d2p(axisOpts._rl[0]);\n    var maxVal = opts.d2p(axisOpts._rl[1]);\n    var dragCover = dragElement.coverSlip();\n    this.addEventListener('touchmove', mouseMove);\n    this.addEventListener('touchend', mouseUp);\n    dragCover.addEventListener('mousemove', mouseMove);\n    dragCover.addEventListener('mouseup', mouseUp);\n    function mouseMove(e) {\n      var clientX = e.clientX || e.touches[0].clientX;\n      var delta = +clientX - startX;\n      var pixelMin, pixelMax, cursor;\n      switch (target) {\n        case slideBox:\n          cursor = 'ew-resize';\n          pixelMin = minVal + delta;\n          pixelMax = maxVal + delta;\n          break;\n        case grabAreaMin:\n          cursor = 'col-resize';\n          pixelMin = minVal + delta;\n          pixelMax = maxVal;\n          break;\n        case grabAreaMax:\n          cursor = 'col-resize';\n          pixelMin = minVal;\n          pixelMax = maxVal + delta;\n          break;\n        default:\n          cursor = 'ew-resize';\n          pixelMin = offsetX;\n          pixelMax = offsetX + delta;\n          break;\n      }\n      if (pixelMax < pixelMin) {\n        var tmp = pixelMax;\n        pixelMax = pixelMin;\n        pixelMin = tmp;\n      }\n      opts._pixelMin = pixelMin;\n      opts._pixelMax = pixelMax;\n      setCursor(d3.select(dragCover), cursor);\n      setDataRange(rangeSlider, gd, axisOpts, opts);\n    }\n    function mouseUp() {\n      dragCover.removeEventListener('mousemove', mouseMove);\n      dragCover.removeEventListener('mouseup', mouseUp);\n      this.removeEventListener('touchmove', mouseMove);\n      this.removeEventListener('touchend', mouseUp);\n      Lib.removeElement(dragCover);\n    }\n  }\n  rangeSlider.on('mousedown', mouseDownHandler);\n  rangeSlider.on('touchstart', mouseDownHandler);\n}\nfunction setDataRange(rangeSlider, gd, axisOpts, opts) {\n  function clamp(v) {\n    return axisOpts.l2r(Lib.constrain(v, opts._rl[0], opts._rl[1]));\n  }\n  var dataMin = clamp(opts.p2d(opts._pixelMin));\n  var dataMax = clamp(opts.p2d(opts._pixelMax));\n  window.requestAnimationFrame(function () {\n    Registry.call('_guiRelayout', gd, axisOpts._name + '.range', [dataMin, dataMax]);\n  });\n}\nfunction setPixelRange(rangeSlider, gd, axisOpts, opts, oppAxisOpts, oppAxisRangeOpts) {\n  var hw2 = constants.handleWidth / 2;\n  function clamp(v) {\n    return Lib.constrain(v, 0, opts._width);\n  }\n  function clampOppAxis(v) {\n    return Lib.constrain(v, 0, opts._height);\n  }\n  function clampHandle(v) {\n    return Lib.constrain(v, -hw2, opts._width + hw2);\n  }\n  var pixelMin = clamp(opts.d2p(axisOpts._rl[0]));\n  var pixelMax = clamp(opts.d2p(axisOpts._rl[1]));\n  rangeSlider.select('rect.' + constants.slideBoxClassName).attr('x', pixelMin).attr('width', pixelMax - pixelMin);\n  rangeSlider.select('rect.' + constants.maskMinClassName).attr('width', pixelMin);\n  rangeSlider.select('rect.' + constants.maskMaxClassName).attr('x', pixelMax).attr('width', opts._width - pixelMax);\n  if (oppAxisRangeOpts.rangemode !== 'match') {\n    var pixelMinOppAxis = opts._height - clampOppAxis(opts.d2pOppAxis(oppAxisOpts._rl[1]));\n    var pixelMaxOppAxis = opts._height - clampOppAxis(opts.d2pOppAxis(oppAxisOpts._rl[0]));\n    rangeSlider.select('rect.' + constants.maskMinOppAxisClassName).attr('x', pixelMin).attr('height', pixelMinOppAxis).attr('width', pixelMax - pixelMin);\n    rangeSlider.select('rect.' + constants.maskMaxOppAxisClassName).attr('x', pixelMin).attr('y', pixelMaxOppAxis).attr('height', opts._height - pixelMaxOppAxis).attr('width', pixelMax - pixelMin);\n    rangeSlider.select('rect.' + constants.slideBoxClassName).attr('y', pixelMinOppAxis).attr('height', pixelMaxOppAxis - pixelMinOppAxis);\n  }\n\n  // add offset for crispier corners\n  // https://github.com/plotly/plotly.js/pull/1409\n  var offset = 0.5;\n  var xMin = Math.round(clampHandle(pixelMin - hw2)) - offset;\n  var xMax = Math.round(clampHandle(pixelMax - hw2)) + offset;\n  rangeSlider.select('g.' + constants.grabberMinClassName).attr('transform', strTranslate(xMin, offset));\n  rangeSlider.select('g.' + constants.grabberMaxClassName).attr('transform', strTranslate(xMax, offset));\n}\nfunction drawBg(rangeSlider, gd, axisOpts, opts) {\n  var bg = Lib.ensureSingle(rangeSlider, 'rect', constants.bgClassName, function (s) {\n    s.attr({\n      x: 0,\n      y: 0,\n      'shape-rendering': 'crispEdges'\n    });\n  });\n  var borderCorrect = opts.borderwidth % 2 === 0 ? opts.borderwidth : opts.borderwidth - 1;\n  var offsetShift = -opts._offsetShift;\n  var lw = Drawing.crispRound(gd, opts.borderwidth);\n  bg.attr({\n    width: opts._width + borderCorrect,\n    height: opts._height + borderCorrect,\n    transform: strTranslate(offsetShift, offsetShift),\n    'stroke-width': lw\n  }).call(Color.stroke, opts.bordercolor).call(Color.fill, opts.bgcolor);\n}\nfunction addClipPath(rangeSlider, gd, axisOpts, opts) {\n  var fullLayout = gd._fullLayout;\n  var clipPath = Lib.ensureSingleById(fullLayout._topdefs, 'clipPath', opts._clipId, function (s) {\n    s.append('rect').attr({\n      x: 0,\n      y: 0\n    });\n  });\n  clipPath.select('rect').attr({\n    width: opts._width,\n    height: opts._height\n  });\n}\nfunction drawRangePlot(rangeSlider, gd, axisOpts, opts) {\n  var calcData = gd.calcdata;\n  var rangePlots = rangeSlider.selectAll('g.' + constants.rangePlotClassName).data(axisOpts._subplotsWith, Lib.identity);\n  rangePlots.enter().append('g').attr('class', function (id) {\n    return constants.rangePlotClassName + ' ' + id;\n  }).call(Drawing.setClipUrl, opts._clipId, gd);\n  rangePlots.order();\n  rangePlots.exit().remove();\n  var mainplotinfo;\n  rangePlots.each(function (id, i) {\n    var plotgroup = d3.select(this);\n    var isMainPlot = i === 0;\n    var oppAxisOpts = axisIDs.getFromId(gd, id, 'y');\n    var oppAxisName = oppAxisOpts._name;\n    var oppAxisRangeOpts = opts[oppAxisName];\n    var mockFigure = {\n      data: [],\n      layout: {\n        xaxis: {\n          type: axisOpts.type,\n          domain: [0, 1],\n          range: opts.range.slice(),\n          calendar: axisOpts.calendar\n        },\n        width: opts._width,\n        height: opts._height,\n        margin: {\n          t: 0,\n          b: 0,\n          l: 0,\n          r: 0\n        }\n      },\n      _context: gd._context\n    };\n    if (axisOpts.rangebreaks) {\n      mockFigure.layout.xaxis.rangebreaks = axisOpts.rangebreaks;\n    }\n    mockFigure.layout[oppAxisName] = {\n      type: oppAxisOpts.type,\n      domain: [0, 1],\n      range: oppAxisRangeOpts.rangemode !== 'match' ? oppAxisRangeOpts.range.slice() : oppAxisOpts.range.slice(),\n      calendar: oppAxisOpts.calendar\n    };\n    if (oppAxisOpts.rangebreaks) {\n      mockFigure.layout[oppAxisName].rangebreaks = oppAxisOpts.rangebreaks;\n    }\n    Plots.supplyDefaults(mockFigure);\n    var xa = mockFigure._fullLayout.xaxis;\n    var ya = mockFigure._fullLayout[oppAxisName];\n    xa.clearCalc();\n    xa.setScale();\n    ya.clearCalc();\n    ya.setScale();\n    var plotinfo = {\n      id: id,\n      plotgroup: plotgroup,\n      xaxis: xa,\n      yaxis: ya,\n      isRangePlot: true\n    };\n    if (isMainPlot) mainplotinfo = plotinfo;else {\n      plotinfo.mainplot = 'xy';\n      plotinfo.mainplotinfo = mainplotinfo;\n    }\n    Cartesian.rangePlot(gd, plotinfo, filterRangePlotCalcData(calcData, id));\n  });\n}\nfunction filterRangePlotCalcData(calcData, subplotId) {\n  var out = [];\n  for (var i = 0; i < calcData.length; i++) {\n    var calcTrace = calcData[i];\n    var trace = calcTrace[0].trace;\n    if (trace.xaxis + trace.yaxis === subplotId) {\n      out.push(calcTrace);\n    }\n  }\n  return out;\n}\nfunction drawMasks(rangeSlider, gd, axisOpts, opts, oppAxisRangeOpts) {\n  var maskMin = Lib.ensureSingle(rangeSlider, 'rect', constants.maskMinClassName, function (s) {\n    s.attr({\n      x: 0,\n      y: 0,\n      'shape-rendering': 'crispEdges'\n    });\n  });\n  maskMin.attr('height', opts._height).call(Color.fill, constants.maskColor);\n  var maskMax = Lib.ensureSingle(rangeSlider, 'rect', constants.maskMaxClassName, function (s) {\n    s.attr({\n      y: 0,\n      'shape-rendering': 'crispEdges'\n    });\n  });\n  maskMax.attr('height', opts._height).call(Color.fill, constants.maskColor);\n\n  // masks used for oppAxis zoom\n  if (oppAxisRangeOpts.rangemode !== 'match') {\n    var maskMinOppAxis = Lib.ensureSingle(rangeSlider, 'rect', constants.maskMinOppAxisClassName, function (s) {\n      s.attr({\n        y: 0,\n        'shape-rendering': 'crispEdges'\n      });\n    });\n    maskMinOppAxis.attr('width', opts._width).call(Color.fill, constants.maskOppAxisColor);\n    var maskMaxOppAxis = Lib.ensureSingle(rangeSlider, 'rect', constants.maskMaxOppAxisClassName, function (s) {\n      s.attr({\n        y: 0,\n        'shape-rendering': 'crispEdges'\n      });\n    });\n    maskMaxOppAxis.attr('width', opts._width).style('border-top', constants.maskOppBorder).call(Color.fill, constants.maskOppAxisColor);\n  }\n}\nfunction drawSlideBox(rangeSlider, gd, axisOpts, opts) {\n  if (gd._context.staticPlot) return;\n  var slideBox = Lib.ensureSingle(rangeSlider, 'rect', constants.slideBoxClassName, function (s) {\n    s.attr({\n      y: 0,\n      cursor: constants.slideBoxCursor,\n      'shape-rendering': 'crispEdges'\n    });\n  });\n  slideBox.attr({\n    height: opts._height,\n    fill: constants.slideBoxFill\n  });\n}\nfunction drawGrabbers(rangeSlider, gd, axisOpts, opts) {\n  // <g grabber />\n  var grabberMin = Lib.ensureSingle(rangeSlider, 'g', constants.grabberMinClassName);\n  var grabberMax = Lib.ensureSingle(rangeSlider, 'g', constants.grabberMaxClassName);\n\n  // <g handle />\n  var handleFixAttrs = {\n    x: 0,\n    width: constants.handleWidth,\n    rx: constants.handleRadius,\n    fill: Color.background,\n    stroke: Color.defaultLine,\n    'stroke-width': constants.handleStrokeWidth,\n    'shape-rendering': 'crispEdges'\n  };\n  var handleDynamicAttrs = {\n    y: Math.round(opts._height / 4),\n    height: Math.round(opts._height / 2)\n  };\n  var handleMin = Lib.ensureSingle(grabberMin, 'rect', constants.handleMinClassName, function (s) {\n    s.attr(handleFixAttrs);\n  });\n  handleMin.attr(handleDynamicAttrs);\n  var handleMax = Lib.ensureSingle(grabberMax, 'rect', constants.handleMaxClassName, function (s) {\n    s.attr(handleFixAttrs);\n  });\n  handleMax.attr(handleDynamicAttrs);\n\n  // <g grabarea />\n  var grabAreaFixAttrs = {\n    width: constants.grabAreaWidth,\n    x: 0,\n    y: 0,\n    fill: constants.grabAreaFill,\n    cursor: !gd._context.staticPlot ? constants.grabAreaCursor : undefined\n  };\n  var grabAreaMin = Lib.ensureSingle(grabberMin, 'rect', constants.grabAreaMinClassName, function (s) {\n    s.attr(grabAreaFixAttrs);\n  });\n  grabAreaMin.attr('height', opts._height);\n  var grabAreaMax = Lib.ensureSingle(grabberMax, 'rect', constants.grabAreaMaxClassName, function (s) {\n    s.attr(grabAreaFixAttrs);\n  });\n  grabAreaMax.attr('height', opts._height);\n}\n\n/***/ }),\n\n/***/ 549:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_513072__) {\n\n\"use strict\";\n\n\nvar axisIDs = __nested_webpack_require_513072__(41675);\nvar svgTextUtils = __nested_webpack_require_513072__(63893);\nvar constants = __nested_webpack_require_513072__(73251);\nvar LINE_SPACING = (__nested_webpack_require_513072__(18783).LINE_SPACING);\nvar name = constants.name;\nfunction isVisible(ax) {\n  var rangeSlider = ax && ax[name];\n  return rangeSlider && rangeSlider.visible;\n}\nexports.isVisible = isVisible;\nexports.makeData = function (fullLayout) {\n  var axes = axisIDs.list({\n    _fullLayout: fullLayout\n  }, 'x', true);\n  var margin = fullLayout.margin;\n  var rangeSliderData = [];\n  if (!fullLayout._has('gl2d')) {\n    for (var i = 0; i < axes.length; i++) {\n      var ax = axes[i];\n      if (isVisible(ax)) {\n        rangeSliderData.push(ax);\n        var opts = ax[name];\n        opts._id = name + ax._id;\n        opts._height = (fullLayout.height - margin.b - margin.t) * opts.thickness;\n        opts._offsetShift = Math.floor(opts.borderwidth / 2);\n      }\n    }\n  }\n  fullLayout._rangeSliderData = rangeSliderData;\n};\nexports.autoMarginOpts = function (gd, ax) {\n  var fullLayout = gd._fullLayout;\n  var opts = ax[name];\n  var axLetter = ax._id.charAt(0);\n  var bottomDepth = 0;\n  var titleHeight = 0;\n  if (ax.side === 'bottom') {\n    bottomDepth = ax._depth;\n    if (ax.title.text !== fullLayout._dfltTitle[axLetter]) {\n      // as in rangeslider/draw.js\n      titleHeight = 1.5 * ax.title.font.size + 10 + opts._offsetShift;\n      // multi-line extra bump\n      var extraLines = (ax.title.text.match(svgTextUtils.BR_TAG_ALL) || []).length;\n      titleHeight += extraLines * ax.title.font.size * LINE_SPACING;\n    }\n  }\n  return {\n    x: 0,\n    y: ax._counterDomainMin,\n    l: 0,\n    r: 0,\n    t: 0,\n    b: opts._height + bottomDepth + Math.max(fullLayout.margin.b, titleHeight),\n    pad: constants.extraPad + opts._offsetShift * 2\n  };\n};\n\n/***/ }),\n\n/***/ 13137:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_514991__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_514991__(71828);\nvar attrs = __nested_webpack_require_514991__(75148);\nvar oppAxisAttrs = __nested_webpack_require_514991__(47850);\nvar helpers = __nested_webpack_require_514991__(549);\nmodule.exports = {\n  moduleType: 'component',\n  name: 'rangeslider',\n  schema: {\n    subplots: {\n      xaxis: {\n        rangeslider: Lib.extendFlat({}, attrs, {\n          yaxis: oppAxisAttrs\n        })\n      }\n    }\n  },\n  layoutAttributes: __nested_webpack_require_514991__(75148),\n  handleDefaults: __nested_webpack_require_514991__(26377),\n  calcAutorange: __nested_webpack_require_514991__(88443),\n  draw: __nested_webpack_require_514991__(72413),\n  isVisible: helpers.isVisible,\n  makeData: helpers.makeData,\n  autoMarginOpts: helpers.autoMarginOpts\n};\n\n/***/ }),\n\n/***/ 47850:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  // not really a 'subplot' attribute container,\n  // but this is the flag we use to denote attributes that\n  // support yaxis, yaxis2, yaxis3, ... counters\n  _isSubplotObj: true,\n  rangemode: {\n    valType: 'enumerated',\n    values: ['auto', 'fixed', 'match'],\n    dflt: 'match',\n    editType: 'calc'\n  },\n  range: {\n    valType: 'info_array',\n    items: [{\n      valType: 'any',\n      editType: 'plot'\n    }, {\n      valType: 'any',\n      editType: 'plot'\n    }],\n    editType: 'plot'\n  },\n  editType: 'calc'\n};\n\n/***/ }),\n\n/***/ 8389:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_516373__) {\n\n\"use strict\";\n\n\nvar annAttrs = __nested_webpack_require_516373__(50215);\nvar scatterLineAttrs = (__nested_webpack_require_516373__(82196).line);\nvar dash = (__nested_webpack_require_516373__(79952)/* .dash */ .P);\nvar extendFlat = (__nested_webpack_require_516373__(1426).extendFlat);\nvar overrideAll = (__nested_webpack_require_516373__(30962).overrideAll);\nvar templatedArray = (__nested_webpack_require_516373__(44467).templatedArray);\nvar axisPlaceableObjs = __nested_webpack_require_516373__(24695);\nmodule.exports = overrideAll(templatedArray('selection', {\n  type: {\n    valType: 'enumerated',\n    values: ['rect', 'path']\n  },\n  xref: extendFlat({}, annAttrs.xref, {}),\n  yref: extendFlat({}, annAttrs.yref, {}),\n  x0: {\n    valType: 'any'\n  },\n  x1: {\n    valType: 'any'\n  },\n  y0: {\n    valType: 'any'\n  },\n  y1: {\n    valType: 'any'\n  },\n  path: {\n    valType: 'string',\n    editType: 'arraydraw'\n  },\n  opacity: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 0.7,\n    editType: 'arraydraw'\n  },\n  line: {\n    color: scatterLineAttrs.color,\n    width: extendFlat({}, scatterLineAttrs.width, {\n      min: 1,\n      dflt: 1\n    }),\n    dash: extendFlat({}, dash, {\n      dflt: 'dot'\n    })\n  }\n}), 'arraydraw', 'from-root');\n\n/***/ }),\n\n/***/ 34122:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  // max pixels off straight before a lasso select line counts as bent\n  BENDPX: 1.5,\n  // smallest dimension allowed for a select box\n  MINSELECT: 12,\n  // throttling limit (ms) for selectPoints calls\n  SELECTDELAY: 100,\n  // cache ID suffix for throttle\n  SELECTID: '-select'\n};\n\n/***/ }),\n\n/***/ 59402:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_517987__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_517987__(71828);\nvar Axes = __nested_webpack_require_517987__(89298);\nvar handleArrayContainerDefaults = __nested_webpack_require_517987__(85501);\nvar attributes = __nested_webpack_require_517987__(8389);\nvar helpers = __nested_webpack_require_517987__(30477);\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n  handleArrayContainerDefaults(layoutIn, layoutOut, {\n    name: 'selections',\n    handleItemDefaults: handleSelectionDefaults\n  });\n\n  // Drop rect selections with undefined x0, y0, x1, x1 values.\n  // In future we may accept partially defined rects e.g.\n  // a case with only x0 and x1 may be used to define\n  // [-Infinity, +Infinity] range on the y axis, etc.\n  var selections = layoutOut.selections;\n  for (var i = 0; i < selections.length; i++) {\n    var selection = selections[i];\n    if (!selection) continue;\n    if (selection.path === undefined) {\n      if (selection.x0 === undefined || selection.x1 === undefined || selection.y0 === undefined || selection.y1 === undefined) {\n        layoutOut.selections[i] = null;\n      }\n    }\n  }\n};\nfunction handleSelectionDefaults(selectionIn, selectionOut, fullLayout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(selectionIn, selectionOut, attributes, attr, dflt);\n  }\n  var path = coerce('path');\n  var dfltType = path ? 'path' : 'rect';\n  var selectionType = coerce('type', dfltType);\n  var noPath = selectionType !== 'path';\n  if (noPath) delete selectionOut.path;\n  coerce('opacity');\n  coerce('line.color');\n  coerce('line.width');\n  coerce('line.dash');\n\n  // positioning\n  var axLetters = ['x', 'y'];\n  for (var i = 0; i < 2; i++) {\n    var axLetter = axLetters[i];\n    var gdMock = {\n      _fullLayout: fullLayout\n    };\n    var ax;\n    var pos2r;\n    var r2pos;\n\n    // xref, yref\n    var axRef = Axes.coerceRef(selectionIn, selectionOut, gdMock, axLetter);\n\n    // axRefType is 'range' for selections\n    ax = Axes.getFromId(gdMock, axRef);\n    ax._selectionIndices.push(selectionOut._index);\n    r2pos = helpers.rangeToShapePosition(ax);\n    pos2r = helpers.shapePositionToRange(ax);\n\n    // Coerce x0, x1, y0, y1\n    if (noPath) {\n      // hack until V3.0 when log has regular range behavior - make it look like other\n      // ranges to send to coerce, then put it back after\n      // this is all to give reasonable default position behavior on log axes, which is\n      // a pretty unimportant edge case so we could just ignore this.\n      var attr0 = axLetter + '0';\n      var attr1 = axLetter + '1';\n      var in0 = selectionIn[attr0];\n      var in1 = selectionIn[attr1];\n      selectionIn[attr0] = pos2r(selectionIn[attr0], true);\n      selectionIn[attr1] = pos2r(selectionIn[attr1], true);\n      Axes.coercePosition(selectionOut, gdMock, coerce, axRef, attr0);\n      Axes.coercePosition(selectionOut, gdMock, coerce, axRef, attr1);\n      var p0 = selectionOut[attr0];\n      var p1 = selectionOut[attr1];\n      if (p0 !== undefined && p1 !== undefined) {\n        // hack part 2\n        selectionOut[attr0] = r2pos(p0);\n        selectionOut[attr1] = r2pos(p1);\n        selectionIn[attr0] = in0;\n        selectionIn[attr1] = in1;\n      }\n    }\n  }\n  if (noPath) {\n    Lib.noneOrAll(selectionIn, selectionOut, ['x0', 'x1', 'y0', 'y1']);\n  }\n}\n\n/***/ }),\n\n/***/ 32485:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_521316__) {\n\n\"use strict\";\n\n\nvar readPaths = (__nested_webpack_require_521316__(60165).readPaths);\nvar displayOutlines = __nested_webpack_require_521316__(42359);\nvar clearOutlineControllers = (__nested_webpack_require_521316__(51873).clearOutlineControllers);\nvar Color = __nested_webpack_require_521316__(7901);\nvar Drawing = __nested_webpack_require_521316__(91424);\nvar arrayEditor = (__nested_webpack_require_521316__(44467).arrayEditor);\nvar helpers = __nested_webpack_require_521316__(30477);\nvar getPathString = helpers.getPathString;\n\n// Selections are stored in gd.layout.selections, an array of objects\n// index can point to one item in this array,\n//  or non-numeric to simply add a new one\n//  or -1 to modify all existing\n// opt can be the full options object, or one key (to be set to value)\n//  or undefined to simply redraw\n// if opt is blank, val can be 'add' or a full options object to add a new\n//  annotation at that point in the array, or 'remove' to delete this one\n\nmodule.exports = {\n  draw: draw,\n  drawOne: drawOne,\n  activateLastSelection: activateLastSelection\n};\nfunction draw(gd) {\n  var fullLayout = gd._fullLayout;\n  clearOutlineControllers(gd);\n\n  // Remove previous selections before drawing new selections in fullLayout.selections\n  fullLayout._selectionLayer.selectAll('path').remove();\n  for (var k in fullLayout._plots) {\n    var selectionLayer = fullLayout._plots[k].selectionLayer;\n    if (selectionLayer) selectionLayer.selectAll('path').remove();\n  }\n  for (var i = 0; i < fullLayout.selections.length; i++) {\n    drawOne(gd, i);\n  }\n}\nfunction couldHaveActiveSelection(gd) {\n  return gd._context.editSelection;\n}\nfunction drawOne(gd, index) {\n  // remove the existing selection if there is one.\n  // because indices can change, we need to look in all selection layers\n  gd._fullLayout._paperdiv.selectAll('.selectionlayer [data-index=\"' + index + '\"]').remove();\n  var o = helpers.makeSelectionsOptionsAndPlotinfo(gd, index);\n  var options = o.options;\n  var plotinfo = o.plotinfo;\n\n  // this selection is gone - quit now after deleting it\n  // TODO: use d3 idioms instead of deleting and redrawing every time\n  if (!options._input) return;\n  drawSelection(gd._fullLayout._selectionLayer);\n  function drawSelection(selectionLayer) {\n    var d = getPathString(gd, options);\n    var attrs = {\n      'data-index': index,\n      'fill-rule': 'evenodd',\n      d: d\n    };\n    var opacity = options.opacity;\n    var fillColor = 'rgba(0,0,0,0)';\n    var lineColor = options.line.color || Color.contrast(gd._fullLayout.plot_bgcolor);\n    var lineWidth = options.line.width;\n    var lineDash = options.line.dash;\n    if (!lineWidth) {\n      // ensure invisible border to activate the selection\n      lineWidth = 5;\n      lineDash = 'solid';\n    }\n    var isActiveSelection = couldHaveActiveSelection(gd) && gd._fullLayout._activeSelectionIndex === index;\n    if (isActiveSelection) {\n      fillColor = gd._fullLayout.activeselection.fillcolor;\n      opacity = gd._fullLayout.activeselection.opacity;\n    }\n    var allPaths = [];\n    for (var sensory = 1; sensory >= 0; sensory--) {\n      var path = selectionLayer.append('path').attr(attrs).style('opacity', sensory ? 0.1 : opacity).call(Color.stroke, lineColor).call(Color.fill, fillColor)\n      // make it easier to select senory background path\n      .call(Drawing.dashLine, sensory ? 'solid' : lineDash, sensory ? 4 + lineWidth : lineWidth);\n      setClipPath(path, gd, options);\n      if (isActiveSelection) {\n        var editHelpers = arrayEditor(gd.layout, 'selections', options);\n        path.style({\n          'cursor': 'move'\n        });\n        var dragOptions = {\n          element: path.node(),\n          plotinfo: plotinfo,\n          gd: gd,\n          editHelpers: editHelpers,\n          isActiveSelection: true // i.e. to enable controllers\n        };\n\n        var polygons = readPaths(d, gd);\n        // display polygons on the screen\n        displayOutlines(polygons, path, dragOptions);\n      } else {\n        path.style('pointer-events', sensory ? 'all' : 'none');\n      }\n      allPaths[sensory] = path;\n    }\n    var forePath = allPaths[0];\n    var backPath = allPaths[1];\n    backPath.node().addEventListener('click', function () {\n      return activateSelection(gd, forePath);\n    });\n  }\n}\nfunction setClipPath(selectionPath, gd, selectionOptions) {\n  var clipAxes = selectionOptions.xref + selectionOptions.yref;\n  Drawing.setClipUrl(selectionPath, 'clip' + gd._fullLayout._uid + clipAxes, gd);\n}\nfunction activateSelection(gd, path) {\n  if (!couldHaveActiveSelection(gd)) return;\n  var element = path.node();\n  var id = +element.getAttribute('data-index');\n  if (id >= 0) {\n    // deactivate if already active\n    if (id === gd._fullLayout._activeSelectionIndex) {\n      deactivateSelection(gd);\n      return;\n    }\n    gd._fullLayout._activeSelectionIndex = id;\n    gd._fullLayout._deactivateSelection = deactivateSelection;\n    draw(gd);\n  }\n}\nfunction activateLastSelection(gd) {\n  if (!couldHaveActiveSelection(gd)) return;\n  var id = gd._fullLayout.selections.length - 1;\n  gd._fullLayout._activeSelectionIndex = id;\n  gd._fullLayout._deactivateSelection = deactivateSelection;\n  draw(gd);\n}\nfunction deactivateSelection(gd) {\n  if (!couldHaveActiveSelection(gd)) return;\n  var id = gd._fullLayout._activeSelectionIndex;\n  if (id >= 0) {\n    clearOutlineControllers(gd);\n    delete gd._fullLayout._activeSelectionIndex;\n    draw(gd);\n  }\n}\n\n/***/ }),\n\n/***/ 53777:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_526760__) {\n\n\"use strict\";\n\n\nvar dash = (__nested_webpack_require_526760__(79952)/* .dash */ .P);\nvar extendFlat = (__nested_webpack_require_526760__(1426).extendFlat);\nmodule.exports = {\n  newselection: {\n    mode: {\n      valType: 'enumerated',\n      values: ['immediate', 'gradual'],\n      dflt: 'immediate',\n      editType: 'none'\n    },\n    line: {\n      color: {\n        valType: 'color',\n        editType: 'none'\n      },\n      width: {\n        valType: 'number',\n        min: 1,\n        dflt: 1,\n        editType: 'none'\n      },\n      dash: extendFlat({}, dash, {\n        dflt: 'dot',\n        editType: 'none'\n      }),\n      editType: 'none'\n    },\n    // no drawdirection here noting that layout.selectdirection is used instead.\n\n    editType: 'none'\n  },\n  activeselection: {\n    fillcolor: {\n      valType: 'color',\n      dflt: 'rgba(0,0,0,0)',\n      editType: 'none'\n    },\n    opacity: {\n      valType: 'number',\n      min: 0,\n      max: 1,\n      dflt: 0.5,\n      editType: 'none'\n    },\n    editType: 'none'\n  }\n};\n\n/***/ }),\n\n/***/ 90849:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function supplyDrawNewSelectionDefaults(layoutIn, layoutOut, coerce) {\n  coerce('newselection.mode');\n  var newselectionLineWidth = coerce('newselection.line.width');\n  if (newselectionLineWidth) {\n    coerce('newselection.line.color');\n    coerce('newselection.line.dash');\n  }\n  coerce('activeselection.fillcolor');\n  coerce('activeselection.opacity');\n};\n\n/***/ }),\n\n/***/ 35855:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_528292__) {\n\n\"use strict\";\n\n\nvar dragHelpers = __nested_webpack_require_528292__(64505);\nvar selectMode = dragHelpers.selectMode;\nvar handleOutline = __nested_webpack_require_528292__(51873);\nvar clearOutline = handleOutline.clearOutline;\nvar helpers = __nested_webpack_require_528292__(60165);\nvar readPaths = helpers.readPaths;\nvar writePaths = helpers.writePaths;\nvar fixDatesForPaths = helpers.fixDatesForPaths;\nmodule.exports = function newSelections(outlines, dragOptions) {\n  if (!outlines.length) return;\n  var e = outlines[0][0]; // pick first\n  if (!e) return;\n  var d = e.getAttribute('d');\n  var gd = dragOptions.gd;\n  var newStyle = gd._fullLayout.newselection;\n  var plotinfo = dragOptions.plotinfo;\n  var xaxis = plotinfo.xaxis;\n  var yaxis = plotinfo.yaxis;\n  var isActiveSelection = dragOptions.isActiveSelection;\n  var dragmode = dragOptions.dragmode;\n  var selections = (gd.layout || {}).selections || [];\n  if (!selectMode(dragmode) && isActiveSelection !== undefined) {\n    var id = gd._fullLayout._activeSelectionIndex;\n    if (id < selections.length) {\n      switch (gd._fullLayout.selections[id].type) {\n        case 'rect':\n          dragmode = 'select';\n          break;\n        case 'path':\n          dragmode = 'lasso';\n          break;\n      }\n    }\n  }\n  var polygons = readPaths(d, gd, plotinfo, isActiveSelection);\n  var newSelection = {\n    xref: xaxis._id,\n    yref: yaxis._id,\n    opacity: newStyle.opacity,\n    line: {\n      color: newStyle.line.color,\n      width: newStyle.line.width,\n      dash: newStyle.line.dash\n    }\n  };\n  var cell;\n  // rect can be in one cell\n  // only define cell if there is single cell\n  if (polygons.length === 1) cell = polygons[0];\n  if (cell && cell.length === 5 &&\n  // ensure we only have 4 corners for a rect\n  dragmode === 'select') {\n    newSelection.type = 'rect';\n    newSelection.x0 = cell[0][1];\n    newSelection.y0 = cell[0][2];\n    newSelection.x1 = cell[2][1];\n    newSelection.y1 = cell[2][2];\n  } else {\n    newSelection.type = 'path';\n    if (xaxis && yaxis) fixDatesForPaths(polygons, xaxis, yaxis);\n    newSelection.path = writePaths(polygons);\n    cell = null;\n  }\n  clearOutline(gd);\n  var editHelpers = dragOptions.editHelpers;\n  var modifyItem = (editHelpers || {}).modifyItem;\n  var allSelections = [];\n  for (var q = 0; q < selections.length; q++) {\n    var beforeEdit = gd._fullLayout.selections[q];\n    if (!beforeEdit) {\n      allSelections[q] = beforeEdit;\n      continue;\n    }\n    allSelections[q] = beforeEdit._input;\n    if (isActiveSelection !== undefined && q === gd._fullLayout._activeSelectionIndex) {\n      var afterEdit = newSelection;\n      switch (beforeEdit.type) {\n        case 'rect':\n          modifyItem('x0', afterEdit.x0);\n          modifyItem('x1', afterEdit.x1);\n          modifyItem('y0', afterEdit.y0);\n          modifyItem('y1', afterEdit.y1);\n          break;\n        case 'path':\n          modifyItem('path', afterEdit.path);\n          break;\n      }\n    }\n  }\n  if (isActiveSelection === undefined) {\n    allSelections.push(newSelection); // add new selection\n    return allSelections;\n  }\n  return editHelpers ? editHelpers.getUpdateObj() : {};\n};\n\n/***/ }),\n\n/***/ 75549:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_531509__) {\n\n\"use strict\";\n\n\nvar strTranslate = (__nested_webpack_require_531509__(71828).strTranslate);\n\n// in v3 (once log ranges are fixed),\n// we'll be able to p2r here for all axis types\nfunction p2r(ax, v) {\n  switch (ax.type) {\n    case 'log':\n      return ax.p2d(v);\n    case 'date':\n      return ax.p2r(v, 0, ax.calendar);\n    default:\n      return ax.p2r(v);\n  }\n}\nfunction r2p(ax, v) {\n  switch (ax.type) {\n    case 'log':\n      return ax.d2p(v);\n    case 'date':\n      return ax.r2p(v, 0, ax.calendar);\n    default:\n      return ax.r2p(v);\n  }\n}\nfunction axValue(ax) {\n  var index = ax._id.charAt(0) === 'y' ? 1 : 0;\n  return function (v) {\n    return p2r(ax, v[index]);\n  };\n}\nfunction getTransform(plotinfo) {\n  return strTranslate(plotinfo.xaxis._offset, plotinfo.yaxis._offset);\n}\nmodule.exports = {\n  p2r: p2r,\n  r2p: r2p,\n  axValue: axValue,\n  getTransform: getTransform\n};\n\n/***/ }),\n\n/***/ 47322:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_532473__) {\n\n\"use strict\";\n\n\nvar drawModule = __nested_webpack_require_532473__(32485);\nvar select = __nested_webpack_require_532473__(3937);\nmodule.exports = {\n  moduleType: 'component',\n  name: 'selections',\n  layoutAttributes: __nested_webpack_require_532473__(8389),\n  supplyLayoutDefaults: __nested_webpack_require_532473__(59402),\n  supplyDrawNewSelectionDefaults: __nested_webpack_require_532473__(90849),\n  includeBasePlot: __nested_webpack_require_532473__(76325)('selections'),\n  draw: drawModule.draw,\n  drawOne: drawModule.drawOne,\n  reselect: select.reselect,\n  prepSelect: select.prepSelect,\n  clearOutline: select.clearOutline,\n  clearSelectionsCache: select.clearSelectionsCache,\n  selectOnClick: select.selectOnClick\n};\n\n/***/ }),\n\n/***/ 3937:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_533211__) {\n\n\"use strict\";\n\n\nvar polybool = __nested_webpack_require_533211__(52142);\nvar pointInPolygon = __nested_webpack_require_533211__(38258); // could we use contains lib/polygon instead?\n\nvar Registry = __nested_webpack_require_533211__(73972);\nvar dashStyle = (__nested_webpack_require_533211__(91424).dashStyle);\nvar Color = __nested_webpack_require_533211__(7901);\nvar Fx = __nested_webpack_require_533211__(30211);\nvar makeEventData = (__nested_webpack_require_533211__(23469).makeEventData);\nvar dragHelpers = __nested_webpack_require_533211__(64505);\nvar freeMode = dragHelpers.freeMode;\nvar rectMode = dragHelpers.rectMode;\nvar drawMode = dragHelpers.drawMode;\nvar openMode = dragHelpers.openMode;\nvar selectMode = dragHelpers.selectMode;\nvar shapeHelpers = __nested_webpack_require_533211__(30477);\nvar shapeConstants = __nested_webpack_require_533211__(21459);\nvar displayOutlines = __nested_webpack_require_533211__(42359);\nvar clearOutline = (__nested_webpack_require_533211__(51873).clearOutline);\nvar newShapeHelpers = __nested_webpack_require_533211__(60165);\nvar handleEllipse = newShapeHelpers.handleEllipse;\nvar readPaths = newShapeHelpers.readPaths;\nvar newShapes = __nested_webpack_require_533211__(90551);\nvar newSelections = __nested_webpack_require_533211__(35855);\nvar activateLastSelection = (__nested_webpack_require_533211__(32485).activateLastSelection);\nvar Lib = __nested_webpack_require_533211__(71828);\nvar ascending = Lib.sorterAsc;\nvar libPolygon = __nested_webpack_require_533211__(61082);\nvar throttle = __nested_webpack_require_533211__(79990);\nvar getFromId = (__nested_webpack_require_533211__(41675).getFromId);\nvar clearGlCanvases = __nested_webpack_require_533211__(33306);\nvar redrawReglTraces = (__nested_webpack_require_533211__(61549).redrawReglTraces);\nvar constants = __nested_webpack_require_533211__(34122);\nvar MINSELECT = constants.MINSELECT;\nvar filteredPolygon = libPolygon.filter;\nvar polygonTester = libPolygon.tester;\nvar helpers = __nested_webpack_require_533211__(75549);\nvar p2r = helpers.p2r;\nvar axValue = helpers.axValue;\nvar getTransform = helpers.getTransform;\nfunction hasSubplot(dragOptions) {\n  // N.B. subplot may be falsy e.g zero sankey index!\n  return dragOptions.subplot !== undefined;\n}\nfunction prepSelect(evt, startX, startY, dragOptions, mode) {\n  var isCartesian = !hasSubplot(dragOptions);\n  var isFreeMode = freeMode(mode);\n  var isRectMode = rectMode(mode);\n  var isOpenMode = openMode(mode);\n  var isDrawMode = drawMode(mode);\n  var isSelectMode = selectMode(mode);\n  var isLine = mode === 'drawline';\n  var isEllipse = mode === 'drawcircle';\n  var isLineOrEllipse = isLine || isEllipse; // cases with two start & end positions\n\n  var gd = dragOptions.gd;\n  var fullLayout = gd._fullLayout;\n  var immediateSelect = isSelectMode && fullLayout.newselection.mode === 'immediate' && isCartesian; // N.B. only cartesian subplots have persistent selection\n\n  var zoomLayer = fullLayout._zoomlayer;\n  var dragBBox = dragOptions.element.getBoundingClientRect();\n  var plotinfo = dragOptions.plotinfo;\n  var transform = getTransform(plotinfo);\n  var x0 = startX - dragBBox.left;\n  var y0 = startY - dragBBox.top;\n  fullLayout._calcInverseTransform(gd);\n  var transformedCoords = Lib.apply3DTransform(fullLayout._invTransform)(x0, y0);\n  x0 = transformedCoords[0];\n  y0 = transformedCoords[1];\n  var scaleX = fullLayout._invScaleX;\n  var scaleY = fullLayout._invScaleY;\n  var x1 = x0;\n  var y1 = y0;\n  var path0 = 'M' + x0 + ',' + y0;\n  var xAxis = dragOptions.xaxes[0];\n  var yAxis = dragOptions.yaxes[0];\n  var pw = xAxis._length;\n  var ph = yAxis._length;\n  var subtract = evt.altKey && !(drawMode(mode) && isOpenMode);\n  var filterPoly, selectionTesters, mergedPolygons, currentPolygon;\n  var i, searchInfo, eventData;\n  coerceSelectionsCache(evt, gd, dragOptions);\n  if (isFreeMode) {\n    filterPoly = filteredPolygon([[x0, y0]], constants.BENDPX);\n  }\n  var outlines = zoomLayer.selectAll('path.select-outline-' + plotinfo.id).data([1]);\n  var newStyle = isDrawMode ? fullLayout.newshape : fullLayout.newselection;\n  var fillC = isDrawMode && !isOpenMode ? newStyle.fillcolor : 'rgba(0,0,0,0)';\n  var strokeC = newStyle.line.color || (isCartesian ? Color.contrast(gd._fullLayout.plot_bgcolor) : '#7f7f7f' // non-cartesian subplot\n  );\n\n  outlines.enter().append('path').attr('class', 'select-outline select-outline-' + plotinfo.id).style({\n    opacity: isDrawMode ? newStyle.opacity / 2 : 1,\n    'stroke-dasharray': dashStyle(newStyle.line.dash, newStyle.line.width),\n    'stroke-width': newStyle.line.width + 'px',\n    'shape-rendering': 'crispEdges'\n  }).call(Color.stroke, strokeC).call(Color.fill, fillC).attr('fill-rule', 'evenodd').classed('cursor-move', isDrawMode ? true : false).attr('transform', transform).attr('d', path0 + 'Z');\n  var corners = zoomLayer.append('path').attr('class', 'zoombox-corners').style({\n    fill: Color.background,\n    stroke: Color.defaultLine,\n    'stroke-width': 1\n  }).attr('transform', transform).attr('d', 'M0,0Z');\n  var throttleID = fullLayout._uid + constants.SELECTID;\n  var selection = [];\n\n  // find the traces to search for selection points\n  var searchTraces = determineSearchTraces(gd, dragOptions.xaxes, dragOptions.yaxes, dragOptions.subplot);\n  if (immediateSelect && !evt.shiftKey) {\n    dragOptions._clearSubplotSelections = function () {\n      if (!isCartesian) return;\n      var xRef = xAxis._id;\n      var yRef = yAxis._id;\n      deselectSubplot(gd, xRef, yRef, searchTraces);\n      var selections = (gd.layout || {}).selections || [];\n      var list = [];\n      var selectionErased = false;\n      for (var q = 0; q < selections.length; q++) {\n        var s = fullLayout.selections[q];\n        if (s.xref !== xRef || s.yref !== yRef) {\n          list.push(selections[q]);\n        } else {\n          selectionErased = true;\n        }\n      }\n      if (selectionErased) {\n        gd._fullLayout._noEmitSelectedAtStart = true;\n        Registry.call('_guiRelayout', gd, {\n          selections: list\n        });\n      }\n    };\n  }\n  var fillRangeItems = getFillRangeItems(dragOptions);\n  dragOptions.moveFn = function (dx0, dy0) {\n    if (dragOptions._clearSubplotSelections) {\n      dragOptions._clearSubplotSelections();\n      dragOptions._clearSubplotSelections = undefined;\n    }\n    x1 = Math.max(0, Math.min(pw, scaleX * dx0 + x0));\n    y1 = Math.max(0, Math.min(ph, scaleY * dy0 + y0));\n    var dx = Math.abs(x1 - x0);\n    var dy = Math.abs(y1 - y0);\n    if (isRectMode) {\n      var direction;\n      var start, end;\n      if (isSelectMode) {\n        var q = fullLayout.selectdirection;\n        if (q === 'any') {\n          if (dy < Math.min(dx * 0.6, MINSELECT)) {\n            direction = 'h';\n          } else if (dx < Math.min(dy * 0.6, MINSELECT)) {\n            direction = 'v';\n          } else {\n            direction = 'd';\n          }\n        } else {\n          direction = q;\n        }\n        switch (direction) {\n          case 'h':\n            start = isEllipse ? ph / 2 : 0;\n            end = ph;\n            break;\n          case 'v':\n            start = isEllipse ? pw / 2 : 0;\n            end = pw;\n            break;\n        }\n      }\n      if (isDrawMode) {\n        switch (fullLayout.newshape.drawdirection) {\n          case 'vertical':\n            direction = 'h';\n            start = isEllipse ? ph / 2 : 0;\n            end = ph;\n            break;\n          case 'horizontal':\n            direction = 'v';\n            start = isEllipse ? pw / 2 : 0;\n            end = pw;\n            break;\n          case 'ortho':\n            if (dx < dy) {\n              direction = 'h';\n              start = y0;\n              end = y1;\n            } else {\n              direction = 'v';\n              start = x0;\n              end = x1;\n            }\n            break;\n          default:\n            // i.e. case of 'diagonal'\n            direction = 'd';\n        }\n      }\n      if (direction === 'h') {\n        // horizontal motion\n        currentPolygon = isLineOrEllipse ? handleEllipse(isEllipse, [x1, start], [x1, end]) :\n        // using x1 instead of x0 allows adjusting the line while drawing\n        [[x0, start], [x0, end], [x1, end], [x1, start]]; // make a vertical box\n\n        currentPolygon.xmin = isLineOrEllipse ? x1 : Math.min(x0, x1);\n        currentPolygon.xmax = isLineOrEllipse ? x1 : Math.max(x0, x1);\n        currentPolygon.ymin = Math.min(start, end);\n        currentPolygon.ymax = Math.max(start, end);\n        // extras to guide users in keeping a straight selection\n        corners.attr('d', 'M' + currentPolygon.xmin + ',' + (y0 - MINSELECT) + 'h-4v' + 2 * MINSELECT + 'h4Z' + 'M' + (currentPolygon.xmax - 1) + ',' + (y0 - MINSELECT) + 'h4v' + 2 * MINSELECT + 'h-4Z');\n      } else if (direction === 'v') {\n        // vertical motion\n        currentPolygon = isLineOrEllipse ? handleEllipse(isEllipse, [start, y1], [end, y1]) :\n        // using y1 instead of y0 allows adjusting the line while drawing\n        [[start, y0], [start, y1], [end, y1], [end, y0]]; // make a horizontal box\n\n        currentPolygon.xmin = Math.min(start, end);\n        currentPolygon.xmax = Math.max(start, end);\n        currentPolygon.ymin = isLineOrEllipse ? y1 : Math.min(y0, y1);\n        currentPolygon.ymax = isLineOrEllipse ? y1 : Math.max(y0, y1);\n        corners.attr('d', 'M' + (x0 - MINSELECT) + ',' + currentPolygon.ymin + 'v-4h' + 2 * MINSELECT + 'v4Z' + 'M' + (x0 - MINSELECT) + ',' + (currentPolygon.ymax - 1) + 'v4h' + 2 * MINSELECT + 'v-4Z');\n      } else if (direction === 'd') {\n        // diagonal motion\n        currentPolygon = isLineOrEllipse ? handleEllipse(isEllipse, [x0, y0], [x1, y1]) : [[x0, y0], [x0, y1], [x1, y1], [x1, y0]];\n        currentPolygon.xmin = Math.min(x0, x1);\n        currentPolygon.xmax = Math.max(x0, x1);\n        currentPolygon.ymin = Math.min(y0, y1);\n        currentPolygon.ymax = Math.max(y0, y1);\n        corners.attr('d', 'M0,0Z');\n      }\n    } else if (isFreeMode) {\n      filterPoly.addPt([x1, y1]);\n      currentPolygon = filterPoly.filtered;\n    }\n\n    // create outline & tester\n    if (dragOptions.selectionDefs && dragOptions.selectionDefs.length) {\n      mergedPolygons = mergePolygons(dragOptions.mergedPolygons, currentPolygon, subtract);\n      currentPolygon.subtract = subtract;\n      selectionTesters = multiTester(dragOptions.selectionDefs.concat([currentPolygon]));\n    } else {\n      mergedPolygons = [currentPolygon];\n      selectionTesters = polygonTester(currentPolygon);\n    }\n\n    // display polygons on the screen\n    displayOutlines(convertPoly(mergedPolygons, isOpenMode), outlines, dragOptions);\n    if (isSelectMode) {\n      var _res = reselect(gd, false);\n      var extraPoints = _res.eventData ? _res.eventData.points.slice() : [];\n      _res = reselect(gd, false, selectionTesters, searchTraces, dragOptions);\n      selectionTesters = _res.selectionTesters;\n      eventData = _res.eventData;\n      var poly;\n      if (filterPoly) {\n        poly = filterPoly.filtered;\n      } else {\n        poly = castMultiPolygon(mergedPolygons);\n      }\n      throttle.throttle(throttleID, constants.SELECTDELAY, function () {\n        selection = _doSelect(selectionTesters, searchTraces);\n        var newPoints = selection.slice();\n        for (var w = 0; w < extraPoints.length; w++) {\n          var p = extraPoints[w];\n          var found = false;\n          for (var u = 0; u < newPoints.length; u++) {\n            if (newPoints[u].curveNumber === p.curveNumber && newPoints[u].pointNumber === p.pointNumber) {\n              found = true;\n              break;\n            }\n          }\n          if (!found) newPoints.push(p);\n        }\n        if (newPoints.length) {\n          if (!eventData) eventData = {};\n          eventData.points = newPoints;\n        }\n        fillRangeItems(eventData, poly);\n        emitSelecting(gd, eventData);\n      });\n    }\n  };\n  dragOptions.clickFn = function (numClicks, evt) {\n    corners.remove();\n    if (gd._fullLayout._activeShapeIndex >= 0) {\n      gd._fullLayout._deactivateShape(gd);\n      return;\n    }\n    if (isDrawMode) return;\n    var clickmode = fullLayout.clickmode;\n    throttle.done(throttleID).then(function () {\n      throttle.clear(throttleID);\n      if (numClicks === 2) {\n        // clear selection on doubleclick\n        outlines.remove();\n        for (i = 0; i < searchTraces.length; i++) {\n          searchInfo = searchTraces[i];\n          searchInfo._module.selectPoints(searchInfo, false);\n        }\n        updateSelectedState(gd, searchTraces);\n        clearSelectionsCache(dragOptions);\n        emitDeselect(gd);\n        if (searchTraces.length) {\n          var clickedXaxis = searchTraces[0].xaxis;\n          var clickedYaxis = searchTraces[0].yaxis;\n          if (clickedXaxis && clickedYaxis) {\n            // drop selections in the clicked subplot\n            var subSelections = [];\n            var allSelections = gd._fullLayout.selections;\n            for (var k = 0; k < allSelections.length; k++) {\n              var s = allSelections[k];\n              if (!s) continue; // also drop null selections if any\n\n              if (s.xref !== clickedXaxis._id || s.yref !== clickedYaxis._id) {\n                subSelections.push(s);\n              }\n            }\n            if (subSelections.length < allSelections.length) {\n              gd._fullLayout._noEmitSelectedAtStart = true;\n              Registry.call('_guiRelayout', gd, {\n                selections: subSelections\n              });\n            }\n          }\n        }\n      } else {\n        if (clickmode.indexOf('select') > -1) {\n          selectOnClick(evt, gd, dragOptions.xaxes, dragOptions.yaxes, dragOptions.subplot, dragOptions, outlines);\n        }\n        if (clickmode === 'event') {\n          // TODO: remove in v3 - this was probably never intended to work as it does,\n          // but in case anyone depends on it we don't want to break it now.\n          // Note that click-to-select introduced pre v3 also emitts proper\n          // event data when clickmode is having 'select' in its flag list.\n          emitSelected(gd, undefined);\n        }\n      }\n      Fx.click(gd, evt);\n    }).catch(Lib.error);\n  };\n  dragOptions.doneFn = function () {\n    corners.remove();\n    throttle.done(throttleID).then(function () {\n      throttle.clear(throttleID);\n      if (!immediateSelect && currentPolygon && dragOptions.selectionDefs) {\n        // save last polygons\n        currentPolygon.subtract = subtract;\n        dragOptions.selectionDefs.push(currentPolygon);\n\n        // we have to keep reference to arrays container\n        dragOptions.mergedPolygons.length = 0;\n        [].push.apply(dragOptions.mergedPolygons, mergedPolygons);\n      }\n      if (immediateSelect || isDrawMode) {\n        clearSelectionsCache(dragOptions, immediateSelect);\n      }\n      if (dragOptions.doneFnCompleted) {\n        dragOptions.doneFnCompleted(selection);\n      }\n      if (isSelectMode) {\n        emitSelected(gd, eventData);\n      }\n    }).catch(Lib.error);\n  };\n}\nfunction selectOnClick(evt, gd, xAxes, yAxes, subplot, dragOptions, polygonOutlines) {\n  var hoverData = gd._hoverdata;\n  var fullLayout = gd._fullLayout;\n  var clickmode = fullLayout.clickmode;\n  var sendEvents = clickmode.indexOf('event') > -1;\n  var selection = [];\n  var searchTraces, searchInfo, currentSelectionDef, selectionTesters, traceSelection;\n  var thisTracesSelection, pointOrBinSelected, subtract, eventData, i;\n  if (isHoverDataSet(hoverData)) {\n    coerceSelectionsCache(evt, gd, dragOptions);\n    searchTraces = determineSearchTraces(gd, xAxes, yAxes, subplot);\n    var clickedPtInfo = extractClickedPtInfo(hoverData, searchTraces);\n    var isBinnedTrace = clickedPtInfo.pointNumbers.length > 0;\n\n    // Note: potentially costly operation isPointOrBinSelected is\n    // called as late as possible through the use of an assignment\n    // in an if condition.\n    if (isBinnedTrace ? isOnlyThisBinSelected(searchTraces, clickedPtInfo) : isOnlyOnePointSelected(searchTraces) && (pointOrBinSelected = isPointOrBinSelected(clickedPtInfo))) {\n      if (polygonOutlines) polygonOutlines.remove();\n      for (i = 0; i < searchTraces.length; i++) {\n        searchInfo = searchTraces[i];\n        searchInfo._module.selectPoints(searchInfo, false);\n      }\n      updateSelectedState(gd, searchTraces);\n      clearSelectionsCache(dragOptions);\n      if (sendEvents) {\n        emitDeselect(gd);\n      }\n    } else {\n      subtract = evt.shiftKey && (pointOrBinSelected !== undefined ? pointOrBinSelected : isPointOrBinSelected(clickedPtInfo));\n      currentSelectionDef = newPointSelectionDef(clickedPtInfo.pointNumber, clickedPtInfo.searchInfo, subtract);\n      var allSelectionDefs = dragOptions.selectionDefs.concat([currentSelectionDef]);\n      selectionTesters = multiTester(allSelectionDefs, selectionTesters);\n      for (i = 0; i < searchTraces.length; i++) {\n        traceSelection = searchTraces[i]._module.selectPoints(searchTraces[i], selectionTesters);\n        thisTracesSelection = fillSelectionItem(traceSelection, searchTraces[i]);\n        if (selection.length) {\n          for (var j = 0; j < thisTracesSelection.length; j++) {\n            selection.push(thisTracesSelection[j]);\n          }\n        } else selection = thisTracesSelection;\n      }\n      eventData = {\n        points: selection\n      };\n      updateSelectedState(gd, searchTraces, eventData);\n      if (currentSelectionDef && dragOptions) {\n        dragOptions.selectionDefs.push(currentSelectionDef);\n      }\n      if (polygonOutlines) {\n        var polygons = dragOptions.mergedPolygons;\n        var isOpenMode = openMode(dragOptions.dragmode);\n\n        // display polygons on the screen\n        displayOutlines(convertPoly(polygons, isOpenMode), polygonOutlines, dragOptions);\n      }\n      if (sendEvents) {\n        emitSelected(gd, eventData);\n      }\n    }\n  }\n}\n\n/**\n * Constructs a new point selection definition object.\n */\nfunction newPointSelectionDef(pointNumber, searchInfo, subtract) {\n  return {\n    pointNumber: pointNumber,\n    searchInfo: searchInfo,\n    subtract: !!subtract\n  };\n}\nfunction isPointSelectionDef(o) {\n  return 'pointNumber' in o && 'searchInfo' in o;\n}\n\n/*\n * Constructs a new point number tester.\n */\nfunction newPointNumTester(pointSelectionDef) {\n  return {\n    xmin: 0,\n    xmax: 0,\n    ymin: 0,\n    ymax: 0,\n    pts: [],\n    contains: function (pt, omitFirstEdge, pointNumber, searchInfo) {\n      var idxWantedTrace = pointSelectionDef.searchInfo.cd[0].trace._expandedIndex;\n      var idxActualTrace = searchInfo.cd[0].trace._expandedIndex;\n      return idxActualTrace === idxWantedTrace && pointNumber === pointSelectionDef.pointNumber;\n    },\n    isRect: false,\n    degenerate: false,\n    subtract: !!pointSelectionDef.subtract\n  };\n}\n\n/**\n * Wraps multiple selection testers.\n *\n * @param {Array} list - An array of selection testers.\n *\n * @return a selection tester object with a contains function\n * that can be called to evaluate a point against all wrapped\n * selection testers that were passed in list.\n */\nfunction multiTester(list) {\n  if (!list.length) return;\n  var testers = [];\n  var xmin = isPointSelectionDef(list[0]) ? 0 : list[0][0][0];\n  var xmax = xmin;\n  var ymin = isPointSelectionDef(list[0]) ? 0 : list[0][0][1];\n  var ymax = ymin;\n  for (var i = 0; i < list.length; i++) {\n    if (isPointSelectionDef(list[i])) {\n      testers.push(newPointNumTester(list[i]));\n    } else {\n      var tester = polygonTester(list[i]);\n      tester.subtract = !!list[i].subtract;\n      testers.push(tester);\n      xmin = Math.min(xmin, tester.xmin);\n      xmax = Math.max(xmax, tester.xmax);\n      ymin = Math.min(ymin, tester.ymin);\n      ymax = Math.max(ymax, tester.ymax);\n    }\n  }\n\n  /**\n   * Tests if the given point is within this tester.\n   *\n   * @param {Array} pt - [0] is the x coordinate, [1] is the y coordinate of the point.\n   * @param {*} arg - An optional parameter to pass down to wrapped testers.\n   * @param {number} pointNumber - The point number of the point within the underlying data array.\n   * @param {number} searchInfo - An object identifying the trace the point is contained in.\n   *\n   * @return {boolean} true if point is considered to be selected, false otherwise.\n   */\n  function contains(pt, arg, pointNumber, searchInfo) {\n    var contained = false;\n    for (var i = 0; i < testers.length; i++) {\n      if (testers[i].contains(pt, arg, pointNumber, searchInfo)) {\n        // if contained by subtract tester - exclude the point\n        contained = !testers[i].subtract;\n      }\n    }\n    return contained;\n  }\n  return {\n    xmin: xmin,\n    xmax: xmax,\n    ymin: ymin,\n    ymax: ymax,\n    pts: [],\n    contains: contains,\n    isRect: false,\n    degenerate: false\n  };\n}\nfunction coerceSelectionsCache(evt, gd, dragOptions) {\n  var fullLayout = gd._fullLayout;\n  var plotinfo = dragOptions.plotinfo;\n  var dragmode = dragOptions.dragmode;\n  var selectingOnSameSubplot = fullLayout._lastSelectedSubplot && fullLayout._lastSelectedSubplot === plotinfo.id;\n  var hasModifierKey = (evt.shiftKey || evt.altKey) && !(drawMode(dragmode) && openMode(dragmode));\n  if (selectingOnSameSubplot && hasModifierKey && plotinfo.selection && plotinfo.selection.selectionDefs && !dragOptions.selectionDefs) {\n    // take over selection definitions from prev mode, if any\n    dragOptions.selectionDefs = plotinfo.selection.selectionDefs;\n    dragOptions.mergedPolygons = plotinfo.selection.mergedPolygons;\n  } else if (!hasModifierKey || !plotinfo.selection) {\n    clearSelectionsCache(dragOptions);\n  }\n\n  // clear selection outline when selecting a different subplot\n  if (!selectingOnSameSubplot) {\n    clearOutline(gd);\n    fullLayout._lastSelectedSubplot = plotinfo.id;\n  }\n}\nfunction hasActiveShape(gd) {\n  return gd._fullLayout._activeShapeIndex >= 0;\n}\nfunction hasActiveSelection(gd) {\n  return gd._fullLayout._activeSelectionIndex >= 0;\n}\nfunction clearSelectionsCache(dragOptions, immediateSelect) {\n  var dragmode = dragOptions.dragmode;\n  var plotinfo = dragOptions.plotinfo;\n  var gd = dragOptions.gd;\n  if (hasActiveShape(gd)) {\n    gd._fullLayout._deactivateShape(gd);\n  }\n  if (hasActiveSelection(gd)) {\n    gd._fullLayout._deactivateSelection(gd);\n  }\n  var fullLayout = gd._fullLayout;\n  var zoomLayer = fullLayout._zoomlayer;\n  var isDrawMode = drawMode(dragmode);\n  var isSelectMode = selectMode(dragmode);\n  if (isDrawMode || isSelectMode) {\n    var outlines = zoomLayer.selectAll('.select-outline-' + plotinfo.id);\n    if (outlines && gd._fullLayout._outlining) {\n      // add shape\n      var shapes;\n      if (isDrawMode) {\n        shapes = newShapes(outlines, dragOptions);\n      }\n      if (shapes) {\n        Registry.call('_guiRelayout', gd, {\n          shapes: shapes\n        });\n      }\n\n      // add selection\n      var selections;\n      if (isSelectMode && !hasSubplot(dragOptions) // only allow cartesian - no mapbox for now\n      ) {\n        selections = newSelections(outlines, dragOptions);\n      }\n      if (selections) {\n        gd._fullLayout._noEmitSelectedAtStart = true;\n        Registry.call('_guiRelayout', gd, {\n          selections: selections\n        }).then(function () {\n          if (immediateSelect) {\n            activateLastSelection(gd);\n          }\n        });\n      }\n      gd._fullLayout._outlining = false;\n    }\n  }\n  plotinfo.selection = {};\n  plotinfo.selection.selectionDefs = dragOptions.selectionDefs = [];\n  plotinfo.selection.mergedPolygons = dragOptions.mergedPolygons = [];\n}\nfunction getAxId(ax) {\n  return ax._id;\n}\nfunction determineSearchTraces(gd, xAxes, yAxes, subplot) {\n  if (!gd.calcdata) return [];\n  var searchTraces = [];\n  var xAxisIds = xAxes.map(getAxId);\n  var yAxisIds = yAxes.map(getAxId);\n  var cd, trace, i;\n  for (i = 0; i < gd.calcdata.length; i++) {\n    cd = gd.calcdata[i];\n    trace = cd[0].trace;\n    if (trace.visible !== true || !trace._module || !trace._module.selectPoints) continue;\n    if (hasSubplot({\n      subplot: subplot\n    }) && (trace.subplot === subplot || trace.geo === subplot)) {\n      searchTraces.push(createSearchInfo(trace._module, cd, xAxes[0], yAxes[0]));\n    } else if (trace.type === 'splom') {\n      // FIXME: make sure we don't have more than single axis for splom\n      if (trace._xaxes[xAxisIds[0]] && trace._yaxes[yAxisIds[0]]) {\n        var info = createSearchInfo(trace._module, cd, xAxes[0], yAxes[0]);\n        info.scene = gd._fullLayout._splomScenes[trace.uid];\n        searchTraces.push(info);\n      }\n    } else if (trace.type === 'sankey') {\n      var sankeyInfo = createSearchInfo(trace._module, cd, xAxes[0], yAxes[0]);\n      searchTraces.push(sankeyInfo);\n    } else {\n      if (xAxisIds.indexOf(trace.xaxis) === -1) continue;\n      if (yAxisIds.indexOf(trace.yaxis) === -1) continue;\n      searchTraces.push(createSearchInfo(trace._module, cd, getFromId(gd, trace.xaxis), getFromId(gd, trace.yaxis)));\n    }\n  }\n  return searchTraces;\n}\nfunction createSearchInfo(module, calcData, xaxis, yaxis) {\n  return {\n    _module: module,\n    cd: calcData,\n    xaxis: xaxis,\n    yaxis: yaxis\n  };\n}\nfunction isHoverDataSet(hoverData) {\n  return hoverData && Array.isArray(hoverData) && hoverData[0].hoverOnBox !== true;\n}\nfunction extractClickedPtInfo(hoverData, searchTraces) {\n  var hoverDatum = hoverData[0];\n  var pointNumber = -1;\n  var pointNumbers = [];\n  var searchInfo, i;\n  for (i = 0; i < searchTraces.length; i++) {\n    searchInfo = searchTraces[i];\n    if (hoverDatum.fullData._expandedIndex === searchInfo.cd[0].trace._expandedIndex) {\n      // Special case for box (and violin)\n      if (hoverDatum.hoverOnBox === true) {\n        break;\n      }\n\n      // Hint: in some traces like histogram, one graphical element\n      // doesn't correspond to one particular data point, but to\n      // bins of data points. Thus, hoverDatum can have a binNumber\n      // property instead of pointNumber.\n      if (hoverDatum.pointNumber !== undefined) {\n        pointNumber = hoverDatum.pointNumber;\n      } else if (hoverDatum.binNumber !== undefined) {\n        pointNumber = hoverDatum.binNumber;\n        pointNumbers = hoverDatum.pointNumbers;\n      }\n      break;\n    }\n  }\n  return {\n    pointNumber: pointNumber,\n    pointNumbers: pointNumbers,\n    searchInfo: searchInfo\n  };\n}\nfunction isPointOrBinSelected(clickedPtInfo) {\n  var trace = clickedPtInfo.searchInfo.cd[0].trace;\n  var ptNum = clickedPtInfo.pointNumber;\n  var ptNums = clickedPtInfo.pointNumbers;\n  var ptNumsSet = ptNums.length > 0;\n\n  // When pointsNumbers is set (e.g. histogram's binning),\n  // it is assumed that when the first point of\n  // a bin is selected, all others are as well\n  var ptNumToTest = ptNumsSet ? ptNums[0] : ptNum;\n\n  // TODO potential performance improvement\n  // Primarily we need this function to determine if a click adds\n  // or subtracts from a selection.\n  // In cases `trace.selectedpoints` is a huge array, indexOf\n  // might be slow. One remedy would be to introduce a hash somewhere.\n  return trace.selectedpoints ? trace.selectedpoints.indexOf(ptNumToTest) > -1 : false;\n}\nfunction isOnlyThisBinSelected(searchTraces, clickedPtInfo) {\n  var tracesWithSelectedPts = [];\n  var searchInfo, trace, isSameTrace, i;\n  for (i = 0; i < searchTraces.length; i++) {\n    searchInfo = searchTraces[i];\n    if (searchInfo.cd[0].trace.selectedpoints && searchInfo.cd[0].trace.selectedpoints.length > 0) {\n      tracesWithSelectedPts.push(searchInfo);\n    }\n  }\n  if (tracesWithSelectedPts.length === 1) {\n    isSameTrace = tracesWithSelectedPts[0] === clickedPtInfo.searchInfo;\n    if (isSameTrace) {\n      trace = clickedPtInfo.searchInfo.cd[0].trace;\n      if (trace.selectedpoints.length === clickedPtInfo.pointNumbers.length) {\n        for (i = 0; i < clickedPtInfo.pointNumbers.length; i++) {\n          if (trace.selectedpoints.indexOf(clickedPtInfo.pointNumbers[i]) < 0) {\n            return false;\n          }\n        }\n        return true;\n      }\n    }\n  }\n  return false;\n}\nfunction isOnlyOnePointSelected(searchTraces) {\n  var len = 0;\n  var searchInfo, trace, i;\n  for (i = 0; i < searchTraces.length; i++) {\n    searchInfo = searchTraces[i];\n    trace = searchInfo.cd[0].trace;\n    if (trace.selectedpoints) {\n      if (trace.selectedpoints.length > 1) return false;\n      len += trace.selectedpoints.length;\n      if (len > 1) return false;\n    }\n  }\n  return len === 1;\n}\nfunction updateSelectedState(gd, searchTraces, eventData) {\n  var i;\n\n  // before anything else, update preGUI if necessary\n  for (i = 0; i < searchTraces.length; i++) {\n    var fullInputTrace = searchTraces[i].cd[0].trace._fullInput;\n    var tracePreGUI = gd._fullLayout._tracePreGUI[fullInputTrace.uid] || {};\n    if (tracePreGUI.selectedpoints === undefined) {\n      tracePreGUI.selectedpoints = fullInputTrace._input.selectedpoints || null;\n    }\n  }\n  var trace;\n  if (eventData) {\n    var pts = eventData.points || [];\n    for (i = 0; i < searchTraces.length; i++) {\n      trace = searchTraces[i].cd[0].trace;\n      trace._input.selectedpoints = trace._fullInput.selectedpoints = [];\n      if (trace._fullInput !== trace) trace.selectedpoints = [];\n    }\n    for (var k = 0; k < pts.length; k++) {\n      var pt = pts[k];\n      var data = pt.data;\n      var fullData = pt.fullData;\n      var pointIndex = pt.pointIndex;\n      var pointIndices = pt.pointIndices;\n      if (pointIndices) {\n        [].push.apply(data.selectedpoints, pointIndices);\n        if (trace._fullInput !== trace) {\n          [].push.apply(fullData.selectedpoints, pointIndices);\n        }\n      } else {\n        data.selectedpoints.push(pointIndex);\n        if (trace._fullInput !== trace) {\n          fullData.selectedpoints.push(pointIndex);\n        }\n      }\n    }\n  } else {\n    for (i = 0; i < searchTraces.length; i++) {\n      trace = searchTraces[i].cd[0].trace;\n      delete trace.selectedpoints;\n      delete trace._input.selectedpoints;\n      if (trace._fullInput !== trace) {\n        delete trace._fullInput.selectedpoints;\n      }\n    }\n  }\n  updateReglSelectedState(gd, searchTraces);\n}\nfunction updateReglSelectedState(gd, searchTraces) {\n  var hasRegl = false;\n  for (var i = 0; i < searchTraces.length; i++) {\n    var searchInfo = searchTraces[i];\n    var cd = searchInfo.cd;\n    if (Registry.traceIs(cd[0].trace, 'regl')) {\n      hasRegl = true;\n    }\n    var _module = searchInfo._module;\n    var fn = _module.styleOnSelect || _module.style;\n    if (fn) {\n      fn(gd, cd, cd[0].node3);\n      if (cd[0].nodeRangePlot3) fn(gd, cd, cd[0].nodeRangePlot3);\n    }\n  }\n  if (hasRegl) {\n    clearGlCanvases(gd);\n    redrawReglTraces(gd);\n  }\n}\nfunction mergePolygons(list, poly, subtract) {\n  var fn = subtract ? polybool.difference : polybool.union;\n  var res = fn({\n    regions: list\n  }, {\n    regions: [poly]\n  });\n  var allPolygons = res.regions.reverse();\n  for (var i = 0; i < allPolygons.length; i++) {\n    var polygon = allPolygons[i];\n    polygon.subtract = getSubtract(polygon, allPolygons.slice(0, i));\n  }\n  return allPolygons;\n}\nfunction fillSelectionItem(selection, searchInfo) {\n  if (Array.isArray(selection)) {\n    var cd = searchInfo.cd;\n    var trace = searchInfo.cd[0].trace;\n    for (var i = 0; i < selection.length; i++) {\n      selection[i] = makeEventData(selection[i], trace, cd);\n    }\n  }\n  return selection;\n}\nfunction convertPoly(polygonsIn, isOpenMode) {\n  // add M and L command to draft positions\n  var polygonsOut = [];\n  for (var i = 0; i < polygonsIn.length; i++) {\n    polygonsOut[i] = [];\n    for (var j = 0; j < polygonsIn[i].length; j++) {\n      polygonsOut[i][j] = [];\n      polygonsOut[i][j][0] = j ? 'L' : 'M';\n      for (var k = 0; k < polygonsIn[i][j].length; k++) {\n        polygonsOut[i][j].push(polygonsIn[i][j][k]);\n      }\n    }\n    if (!isOpenMode) {\n      polygonsOut[i].push(['Z', polygonsOut[i][0][1],\n      // initial x\n      polygonsOut[i][0][2] // initial y\n      ]);\n    }\n  }\n\n  return polygonsOut;\n}\nfunction _doSelect(selectionTesters, searchTraces) {\n  var allSelections = [];\n  var thisSelection;\n  var traceSelections = [];\n  var traceSelection;\n  for (var i = 0; i < searchTraces.length; i++) {\n    var searchInfo = searchTraces[i];\n    traceSelection = searchInfo._module.selectPoints(searchInfo, selectionTesters);\n    traceSelections.push(traceSelection);\n    thisSelection = fillSelectionItem(traceSelection, searchInfo);\n    allSelections = allSelections.concat(thisSelection);\n  }\n  return allSelections;\n}\nfunction reselect(gd, mayEmitSelected, selectionTesters, searchTraces, dragOptions) {\n  var hadSearchTraces = !!searchTraces;\n  var plotinfo, xRef, yRef;\n  if (dragOptions) {\n    plotinfo = dragOptions.plotinfo;\n    xRef = dragOptions.xaxes[0]._id;\n    yRef = dragOptions.yaxes[0]._id;\n  }\n  var allSelections = [];\n  var allSearchTraces = [];\n\n  // select layout.selection polygons\n  var layoutPolygons = getLayoutPolygons(gd);\n\n  // add draft outline polygons to layoutPolygons\n  var fullLayout = gd._fullLayout;\n  if (plotinfo) {\n    var zoomLayer = fullLayout._zoomlayer;\n    var mode = fullLayout.dragmode;\n    var isDrawMode = drawMode(mode);\n    var isSelectMode = selectMode(mode);\n    if (isDrawMode || isSelectMode) {\n      var xaxis = getFromId(gd, xRef, 'x');\n      var yaxis = getFromId(gd, yRef, 'y');\n      if (xaxis && yaxis) {\n        var outlines = zoomLayer.selectAll('.select-outline-' + plotinfo.id);\n        if (outlines && gd._fullLayout._outlining) {\n          if (outlines.length) {\n            var e = outlines[0][0]; // pick first\n            var d = e.getAttribute('d');\n            var outlinePolys = readPaths(d, gd, plotinfo);\n            var draftPolygons = [];\n            for (var u = 0; u < outlinePolys.length; u++) {\n              var p = outlinePolys[u];\n              var polygon = [];\n              for (var t = 0; t < p.length; t++) {\n                polygon.push([convert(xaxis, p[t][1]), convert(yaxis, p[t][2])]);\n              }\n              polygon.xref = xRef;\n              polygon.yref = yRef;\n              polygon.subtract = getSubtract(polygon, draftPolygons);\n              draftPolygons.push(polygon);\n            }\n            layoutPolygons = layoutPolygons.concat(draftPolygons);\n          }\n        }\n      }\n    }\n  }\n  var subplots = xRef && yRef ? [xRef + yRef] : fullLayout._subplots.cartesian;\n  epmtySplomSelectionBatch(gd);\n  var seenSplom = {};\n  for (var i = 0; i < subplots.length; i++) {\n    var subplot = subplots[i];\n    var yAt = subplot.indexOf('y');\n    var _xRef = subplot.slice(0, yAt);\n    var _yRef = subplot.slice(yAt);\n    var _selectionTesters = xRef && yRef ? selectionTesters : undefined;\n    _selectionTesters = addTester(layoutPolygons, _xRef, _yRef, _selectionTesters);\n    if (_selectionTesters) {\n      var _searchTraces = searchTraces;\n      if (!hadSearchTraces) {\n        var _xA = getFromId(gd, _xRef, 'x');\n        var _yA = getFromId(gd, _yRef, 'y');\n        _searchTraces = determineSearchTraces(gd, [_xA], [_yA], subplot);\n        for (var w = 0; w < _searchTraces.length; w++) {\n          var s = _searchTraces[w];\n          var cd0 = s.cd[0];\n          var trace = cd0.trace;\n          if (s._module.name === 'scattergl' && !cd0.t.xpx) {\n            var x = trace.x;\n            var y = trace.y;\n            var len = trace._length;\n            // generate stash for scattergl\n            cd0.t.xpx = [];\n            cd0.t.ypx = [];\n            for (var j = 0; j < len; j++) {\n              cd0.t.xpx[j] = _xA.c2p(x[j]);\n              cd0.t.ypx[j] = _yA.c2p(y[j]);\n            }\n          }\n          if (s._module.name === 'splom') {\n            if (!seenSplom[trace.uid]) {\n              seenSplom[trace.uid] = true;\n            }\n          }\n        }\n      }\n      var selection = _doSelect(_selectionTesters, _searchTraces);\n      allSelections = allSelections.concat(selection);\n      allSearchTraces = allSearchTraces.concat(_searchTraces);\n    }\n  }\n  var eventData = {\n    points: allSelections\n  };\n  updateSelectedState(gd, allSearchTraces, eventData);\n  var clickmode = fullLayout.clickmode;\n  var sendEvents = clickmode.indexOf('event') > -1 && mayEmitSelected;\n  if (!plotinfo &&\n  // get called from plot_api & plots\n  mayEmitSelected) {\n    var activePolygons = getLayoutPolygons(gd, true);\n    if (activePolygons.length) {\n      var xref = activePolygons[0].xref;\n      var yref = activePolygons[0].yref;\n      if (xref && yref) {\n        var poly = castMultiPolygon(activePolygons);\n        var fillRangeItems = makeFillRangeItems([getFromId(gd, xref, 'x'), getFromId(gd, yref, 'y')]);\n        fillRangeItems(eventData, poly);\n      }\n    }\n    if (gd._fullLayout._noEmitSelectedAtStart) {\n      gd._fullLayout._noEmitSelectedAtStart = false;\n    } else {\n      if (sendEvents) emitSelected(gd, eventData);\n    }\n    fullLayout._reselect = false;\n  }\n  if (!plotinfo &&\n  // get called from plot_api & plots\n  fullLayout._deselect) {\n    var deselect = fullLayout._deselect;\n    xRef = deselect.xref;\n    yRef = deselect.yref;\n    if (!subplotSelected(xRef, yRef, allSearchTraces)) {\n      deselectSubplot(gd, xRef, yRef, searchTraces);\n    }\n    if (sendEvents) {\n      if (eventData.points.length) {\n        emitSelected(gd, eventData);\n      } else {\n        emitDeselect(gd);\n      }\n    }\n    fullLayout._deselect = false;\n  }\n  return {\n    eventData: eventData,\n    selectionTesters: selectionTesters\n  };\n}\nfunction epmtySplomSelectionBatch(gd) {\n  var cd = gd.calcdata;\n  if (!cd) return;\n  for (var i = 0; i < cd.length; i++) {\n    var cd0 = cd[i][0];\n    var trace = cd0.trace;\n    var splomScenes = gd._fullLayout._splomScenes;\n    if (splomScenes) {\n      var scene = splomScenes[trace.uid];\n      if (scene) {\n        scene.selectBatch = [];\n      }\n    }\n  }\n}\nfunction subplotSelected(xRef, yRef, searchTraces) {\n  for (var i = 0; i < searchTraces.length; i++) {\n    var s = searchTraces[i];\n    if (s.xaxis && s.xaxis._id === xRef && s.yaxis && s.yaxis._id === yRef) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction deselectSubplot(gd, xRef, yRef, searchTraces) {\n  searchTraces = determineSearchTraces(gd, [getFromId(gd, xRef, 'x')], [getFromId(gd, yRef, 'y')], xRef + yRef);\n  for (var k = 0; k < searchTraces.length; k++) {\n    var searchInfo = searchTraces[k];\n    searchInfo._module.selectPoints(searchInfo, false);\n  }\n  updateSelectedState(gd, searchTraces);\n}\nfunction addTester(layoutPolygons, xRef, yRef, selectionTesters) {\n  var mergedPolygons;\n  for (var i = 0; i < layoutPolygons.length; i++) {\n    var currentPolygon = layoutPolygons[i];\n    if (xRef !== currentPolygon.xref || yRef !== currentPolygon.yref) continue;\n    if (mergedPolygons) {\n      var subtract = !!currentPolygon.subtract;\n      mergedPolygons = mergePolygons(mergedPolygons, currentPolygon, subtract);\n      selectionTesters = multiTester(mergedPolygons);\n    } else {\n      mergedPolygons = [currentPolygon];\n      selectionTesters = polygonTester(currentPolygon);\n    }\n  }\n  return selectionTesters;\n}\nfunction getLayoutPolygons(gd, onlyActiveOnes) {\n  var allPolygons = [];\n  var fullLayout = gd._fullLayout;\n  var allSelections = fullLayout.selections;\n  var len = allSelections.length;\n  for (var i = 0; i < len; i++) {\n    if (onlyActiveOnes && i !== fullLayout._activeSelectionIndex) continue;\n    var selection = allSelections[i];\n    if (!selection) continue;\n    var xref = selection.xref;\n    var yref = selection.yref;\n    var xaxis = getFromId(gd, xref, 'x');\n    var yaxis = getFromId(gd, yref, 'y');\n    var xmin, xmax, ymin, ymax;\n    var polygon;\n    if (selection.type === 'rect') {\n      polygon = [];\n      var x0 = convert(xaxis, selection.x0);\n      var x1 = convert(xaxis, selection.x1);\n      var y0 = convert(yaxis, selection.y0);\n      var y1 = convert(yaxis, selection.y1);\n      polygon = [[x0, y0], [x0, y1], [x1, y1], [x1, y0]];\n      xmin = Math.min(x0, x1);\n      xmax = Math.max(x0, x1);\n      ymin = Math.min(y0, y1);\n      ymax = Math.max(y0, y1);\n      polygon.xmin = xmin;\n      polygon.xmax = xmax;\n      polygon.ymin = ymin;\n      polygon.ymax = ymax;\n      polygon.xref = xref;\n      polygon.yref = yref;\n      polygon.subtract = false;\n      polygon.isRect = true;\n      allPolygons.push(polygon);\n    } else if (selection.type === 'path') {\n      var segments = selection.path.split('Z');\n      var multiPolygons = [];\n      for (var j = 0; j < segments.length; j++) {\n        var path = segments[j];\n        if (!path) continue;\n        path += 'Z';\n        var allX = shapeHelpers.extractPathCoords(path, shapeConstants.paramIsX, 'raw');\n        var allY = shapeHelpers.extractPathCoords(path, shapeConstants.paramIsY, 'raw');\n        xmin = Infinity;\n        xmax = -Infinity;\n        ymin = Infinity;\n        ymax = -Infinity;\n        polygon = [];\n        for (var k = 0; k < allX.length; k++) {\n          var x = convert(xaxis, allX[k]);\n          var y = convert(yaxis, allY[k]);\n          polygon.push([x, y]);\n          xmin = Math.min(x, xmin);\n          xmax = Math.max(x, xmax);\n          ymin = Math.min(y, ymin);\n          ymax = Math.max(y, ymax);\n        }\n        polygon.xmin = xmin;\n        polygon.xmax = xmax;\n        polygon.ymin = ymin;\n        polygon.ymax = ymax;\n        polygon.xref = xref;\n        polygon.yref = yref;\n        polygon.subtract = getSubtract(polygon, multiPolygons);\n        multiPolygons.push(polygon);\n        allPolygons.push(polygon);\n      }\n    }\n  }\n  return allPolygons;\n}\nfunction getSubtract(polygon, previousPolygons) {\n  var subtract = false;\n  for (var i = 0; i < previousPolygons.length; i++) {\n    var previousPolygon = previousPolygons[i];\n\n    // find out if a point of polygon is inside previous polygons\n    for (var k = 0; k < polygon.length; k++) {\n      if (pointInPolygon(polygon[k], previousPolygon)) {\n        subtract = !subtract;\n        break;\n      }\n    }\n  }\n  return subtract;\n}\nfunction convert(ax, d) {\n  if (ax.type === 'date') d = d.replace('_', ' ');\n  return ax.type === 'log' ? ax.c2p(d) : ax.r2p(d, null, ax.calendar);\n}\nfunction castMultiPolygon(allPolygons) {\n  var len = allPolygons.length;\n\n  // descibe multi polygons in one polygon\n  var p = [];\n  for (var i = 0; i < len; i++) {\n    var polygon = allPolygons[i];\n    p = p.concat(polygon);\n\n    // add starting vertex to close\n    // which indicates next polygon\n    p = p.concat([polygon[0]]);\n  }\n  return computeRectAndRanges(p);\n}\nfunction computeRectAndRanges(poly) {\n  poly.isRect = poly.length === 5 && poly[0][0] === poly[4][0] && poly[0][1] === poly[4][1] && poly[0][0] === poly[1][0] && poly[2][0] === poly[3][0] && poly[0][1] === poly[3][1] && poly[1][1] === poly[2][1] || poly[0][1] === poly[1][1] && poly[2][1] === poly[3][1] && poly[0][0] === poly[3][0] && poly[1][0] === poly[2][0];\n  if (poly.isRect) {\n    poly.xmin = Math.min(poly[0][0], poly[2][0]);\n    poly.xmax = Math.max(poly[0][0], poly[2][0]);\n    poly.ymin = Math.min(poly[0][1], poly[2][1]);\n    poly.ymax = Math.max(poly[0][1], poly[2][1]);\n  }\n  return poly;\n}\nfunction makeFillRangeItems(allAxes) {\n  return function (eventData, poly) {\n    var range;\n    var lassoPoints;\n    for (var i = 0; i < allAxes.length; i++) {\n      var ax = allAxes[i];\n      var id = ax._id;\n      var axLetter = id.charAt(0);\n      if (poly.isRect) {\n        if (!range) range = {};\n        var min = poly[axLetter + 'min'];\n        var max = poly[axLetter + 'max'];\n        if (min !== undefined && max !== undefined) {\n          range[id] = [p2r(ax, min), p2r(ax, max)].sort(ascending);\n        }\n      } else {\n        if (!lassoPoints) lassoPoints = {};\n        lassoPoints[id] = poly.map(axValue(ax));\n      }\n    }\n    if (range) {\n      eventData.range = range;\n    }\n    if (lassoPoints) {\n      eventData.lassoPoints = lassoPoints;\n    }\n  };\n}\nfunction getFillRangeItems(dragOptions) {\n  var plotinfo = dragOptions.plotinfo;\n  return plotinfo.fillRangeItems ||\n  // allow subplots (i.e. geo, mapbox, sankey) to override fillRangeItems routine\n  makeFillRangeItems(dragOptions.xaxes.concat(dragOptions.yaxes));\n}\nfunction emitSelecting(gd, eventData) {\n  gd.emit('plotly_selecting', eventData);\n}\nfunction emitSelected(gd, eventData) {\n  if (eventData) {\n    eventData.selections = (gd.layout || {}).selections || [];\n  }\n  gd.emit('plotly_selected', eventData);\n}\nfunction emitDeselect(gd) {\n  gd.emit('plotly_deselect', null);\n}\nmodule.exports = {\n  reselect: reselect,\n  prepSelect: prepSelect,\n  clearOutline: clearOutline,\n  clearSelectionsCache: clearSelectionsCache,\n  selectOnClick: selectOnClick\n};\n\n/***/ }),\n\n/***/ 89827:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_577499__) {\n\n\"use strict\";\n\n\nvar annAttrs = __nested_webpack_require_577499__(50215);\nvar scatterLineAttrs = (__nested_webpack_require_577499__(82196).line);\nvar dash = (__nested_webpack_require_577499__(79952)/* .dash */ .P);\nvar extendFlat = (__nested_webpack_require_577499__(1426).extendFlat);\nvar templatedArray = (__nested_webpack_require_577499__(44467).templatedArray);\nvar axisPlaceableObjs = __nested_webpack_require_577499__(24695);\nmodule.exports = templatedArray('shape', {\n  visible: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc+arraydraw'\n  },\n  type: {\n    valType: 'enumerated',\n    values: ['circle', 'rect', 'path', 'line'],\n    editType: 'calc+arraydraw'\n  },\n  layer: {\n    valType: 'enumerated',\n    values: ['below', 'above'],\n    dflt: 'above',\n    editType: 'arraydraw'\n  },\n  xref: extendFlat({}, annAttrs.xref, {}),\n  xsizemode: {\n    valType: 'enumerated',\n    values: ['scaled', 'pixel'],\n    dflt: 'scaled',\n    editType: 'calc+arraydraw'\n  },\n  xanchor: {\n    valType: 'any',\n    editType: 'calc+arraydraw'\n  },\n  x0: {\n    valType: 'any',\n    editType: 'calc+arraydraw'\n  },\n  x1: {\n    valType: 'any',\n    editType: 'calc+arraydraw'\n  },\n  yref: extendFlat({}, annAttrs.yref, {}),\n  ysizemode: {\n    valType: 'enumerated',\n    values: ['scaled', 'pixel'],\n    dflt: 'scaled',\n    editType: 'calc+arraydraw'\n  },\n  yanchor: {\n    valType: 'any',\n    editType: 'calc+arraydraw'\n  },\n  y0: {\n    valType: 'any',\n    editType: 'calc+arraydraw'\n  },\n  y1: {\n    valType: 'any',\n    editType: 'calc+arraydraw'\n  },\n  path: {\n    valType: 'string',\n    editType: 'calc+arraydraw'\n  },\n  opacity: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 1,\n    editType: 'arraydraw'\n  },\n  line: {\n    color: extendFlat({}, scatterLineAttrs.color, {\n      editType: 'arraydraw'\n    }),\n    width: extendFlat({}, scatterLineAttrs.width, {\n      editType: 'calc+arraydraw'\n    }),\n    dash: extendFlat({}, dash, {\n      editType: 'arraydraw'\n    }),\n    editType: 'calc+arraydraw'\n  },\n  fillcolor: {\n    valType: 'color',\n    dflt: 'rgba(0,0,0,0)',\n    editType: 'arraydraw'\n  },\n  fillrule: {\n    valType: 'enumerated',\n    values: ['evenodd', 'nonzero'],\n    dflt: 'evenodd',\n    editType: 'arraydraw'\n  },\n  editable: {\n    valType: 'boolean',\n    dflt: false,\n    editType: 'calc+arraydraw'\n  },\n  editType: 'arraydraw'\n});\n\n/***/ }),\n\n/***/ 5627:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_579871__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_579871__(71828);\nvar Axes = __nested_webpack_require_579871__(89298);\nvar constants = __nested_webpack_require_579871__(21459);\nvar helpers = __nested_webpack_require_579871__(30477);\nmodule.exports = function calcAutorange(gd) {\n  var fullLayout = gd._fullLayout;\n  var shapeList = Lib.filterVisible(fullLayout.shapes);\n  if (!shapeList.length || !gd._fullData.length) return;\n  for (var i = 0; i < shapeList.length; i++) {\n    var shape = shapeList[i];\n    shape._extremes = {};\n    var ax;\n    var bounds;\n    var xRefType = Axes.getRefType(shape.xref);\n    var yRefType = Axes.getRefType(shape.yref);\n\n    // paper and axis domain referenced shapes don't affect autorange\n    if (shape.xref !== 'paper' && xRefType !== 'domain') {\n      var vx0 = shape.xsizemode === 'pixel' ? shape.xanchor : shape.x0;\n      var vx1 = shape.xsizemode === 'pixel' ? shape.xanchor : shape.x1;\n      ax = Axes.getFromId(gd, shape.xref);\n      bounds = shapeBounds(ax, vx0, vx1, shape.path, constants.paramIsX);\n      if (bounds) {\n        shape._extremes[ax._id] = Axes.findExtremes(ax, bounds, calcXPaddingOptions(shape));\n      }\n    }\n    if (shape.yref !== 'paper' && yRefType !== 'domain') {\n      var vy0 = shape.ysizemode === 'pixel' ? shape.yanchor : shape.y0;\n      var vy1 = shape.ysizemode === 'pixel' ? shape.yanchor : shape.y1;\n      ax = Axes.getFromId(gd, shape.yref);\n      bounds = shapeBounds(ax, vy0, vy1, shape.path, constants.paramIsY);\n      if (bounds) {\n        shape._extremes[ax._id] = Axes.findExtremes(ax, bounds, calcYPaddingOptions(shape));\n      }\n    }\n  }\n};\nfunction calcXPaddingOptions(shape) {\n  return calcPaddingOptions(shape.line.width, shape.xsizemode, shape.x0, shape.x1, shape.path, false);\n}\nfunction calcYPaddingOptions(shape) {\n  return calcPaddingOptions(shape.line.width, shape.ysizemode, shape.y0, shape.y1, shape.path, true);\n}\nfunction calcPaddingOptions(lineWidth, sizeMode, v0, v1, path, isYAxis) {\n  var ppad = lineWidth / 2;\n  var axisDirectionReverted = isYAxis;\n  if (sizeMode === 'pixel') {\n    var coords = path ? helpers.extractPathCoords(path, isYAxis ? constants.paramIsY : constants.paramIsX) : [v0, v1];\n    var maxValue = Lib.aggNums(Math.max, null, coords);\n    var minValue = Lib.aggNums(Math.min, null, coords);\n    var beforePad = minValue < 0 ? Math.abs(minValue) + ppad : ppad;\n    var afterPad = maxValue > 0 ? maxValue + ppad : ppad;\n    return {\n      ppad: ppad,\n      ppadplus: axisDirectionReverted ? beforePad : afterPad,\n      ppadminus: axisDirectionReverted ? afterPad : beforePad\n    };\n  } else {\n    return {\n      ppad: ppad\n    };\n  }\n}\nfunction shapeBounds(ax, v0, v1, path, paramsToUse) {\n  var convertVal = ax.type === 'category' || ax.type === 'multicategory' ? ax.r2c : ax.d2c;\n  if (v0 !== undefined) return [convertVal(v0), convertVal(v1)];\n  if (!path) return;\n  var min = Infinity;\n  var max = -Infinity;\n  var segments = path.match(constants.segmentRE);\n  var i;\n  var segment;\n  var drawnParam;\n  var params;\n  var val;\n  if (ax.type === 'date') convertVal = helpers.decodeDate(convertVal);\n  for (i = 0; i < segments.length; i++) {\n    segment = segments[i];\n    drawnParam = paramsToUse[segment.charAt(0)].drawn;\n    if (drawnParam === undefined) continue;\n    params = segments[i].substr(1).match(constants.paramRE);\n    if (!params || params.length < drawnParam) continue;\n    val = convertVal(params[drawnParam]);\n    if (val < min) min = val;\n    if (val > max) max = val;\n  }\n  if (max >= min) return [min, max];\n}\n\n/***/ }),\n\n/***/ 21459:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  segmentRE: /[MLHVQCTSZ][^MLHVQCTSZ]*/g,\n  paramRE: /[^\\s,]+/g,\n  // which numbers in each path segment are x (or y) values\n  // drawn is which param is a drawn point, as opposed to a\n  // control point (which doesn't count toward autorange.\n  // TODO: this means curved paths could extend beyond the\n  // autorange bounds. This is a bit tricky to get right\n  // unless we revert to bounding boxes, but perhaps there's\n  // a calculation we could do...)\n  paramIsX: {\n    M: {\n      0: true,\n      drawn: 0\n    },\n    L: {\n      0: true,\n      drawn: 0\n    },\n    H: {\n      0: true,\n      drawn: 0\n    },\n    V: {},\n    Q: {\n      0: true,\n      2: true,\n      drawn: 2\n    },\n    C: {\n      0: true,\n      2: true,\n      4: true,\n      drawn: 4\n    },\n    T: {\n      0: true,\n      drawn: 0\n    },\n    S: {\n      0: true,\n      2: true,\n      drawn: 2\n    },\n    // A: {0: true, 5: true},\n    Z: {}\n  },\n  paramIsY: {\n    M: {\n      1: true,\n      drawn: 1\n    },\n    L: {\n      1: true,\n      drawn: 1\n    },\n    H: {},\n    V: {\n      0: true,\n      drawn: 0\n    },\n    Q: {\n      1: true,\n      3: true,\n      drawn: 3\n    },\n    C: {\n      1: true,\n      3: true,\n      5: true,\n      drawn: 5\n    },\n    T: {\n      1: true,\n      drawn: 1\n    },\n    S: {\n      1: true,\n      3: true,\n      drawn: 5\n    },\n    // A: {1: true, 6: true},\n    Z: {}\n  },\n  numParams: {\n    M: 2,\n    L: 2,\n    H: 1,\n    V: 1,\n    Q: 4,\n    C: 6,\n    T: 2,\n    S: 4,\n    // A: 7,\n    Z: 0\n  }\n};\n\n/***/ }),\n\n/***/ 84726:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_585038__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_585038__(71828);\nvar Axes = __nested_webpack_require_585038__(89298);\nvar handleArrayContainerDefaults = __nested_webpack_require_585038__(85501);\nvar attributes = __nested_webpack_require_585038__(89827);\nvar helpers = __nested_webpack_require_585038__(30477);\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n  handleArrayContainerDefaults(layoutIn, layoutOut, {\n    name: 'shapes',\n    handleItemDefaults: handleShapeDefaults\n  });\n};\nfunction handleShapeDefaults(shapeIn, shapeOut, fullLayout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(shapeIn, shapeOut, attributes, attr, dflt);\n  }\n  var visible = coerce('visible');\n  if (!visible) return;\n  var path = coerce('path');\n  var dfltType = path ? 'path' : 'rect';\n  var shapeType = coerce('type', dfltType);\n  var noPath = shapeType !== 'path';\n  if (noPath) delete shapeOut.path;\n  coerce('editable');\n  coerce('layer');\n  coerce('opacity');\n  coerce('fillcolor');\n  coerce('fillrule');\n  var lineWidth = coerce('line.width');\n  if (lineWidth) {\n    coerce('line.color');\n    coerce('line.dash');\n  }\n  var xSizeMode = coerce('xsizemode');\n  var ySizeMode = coerce('ysizemode');\n\n  // positioning\n  var axLetters = ['x', 'y'];\n  for (var i = 0; i < 2; i++) {\n    var axLetter = axLetters[i];\n    var attrAnchor = axLetter + 'anchor';\n    var sizeMode = axLetter === 'x' ? xSizeMode : ySizeMode;\n    var gdMock = {\n      _fullLayout: fullLayout\n    };\n    var ax;\n    var pos2r;\n    var r2pos;\n\n    // xref, yref\n    var axRef = Axes.coerceRef(shapeIn, shapeOut, gdMock, axLetter, undefined, 'paper');\n    var axRefType = Axes.getRefType(axRef);\n    if (axRefType === 'range') {\n      ax = Axes.getFromId(gdMock, axRef);\n      ax._shapeIndices.push(shapeOut._index);\n      r2pos = helpers.rangeToShapePosition(ax);\n      pos2r = helpers.shapePositionToRange(ax);\n    } else {\n      pos2r = r2pos = Lib.identity;\n    }\n\n    // Coerce x0, x1, y0, y1\n    if (noPath) {\n      var dflt0 = 0.25;\n      var dflt1 = 0.75;\n\n      // hack until V3.0 when log has regular range behavior - make it look like other\n      // ranges to send to coerce, then put it back after\n      // this is all to give reasonable default position behavior on log axes, which is\n      // a pretty unimportant edge case so we could just ignore this.\n      var attr0 = axLetter + '0';\n      var attr1 = axLetter + '1';\n      var in0 = shapeIn[attr0];\n      var in1 = shapeIn[attr1];\n      shapeIn[attr0] = pos2r(shapeIn[attr0], true);\n      shapeIn[attr1] = pos2r(shapeIn[attr1], true);\n      if (sizeMode === 'pixel') {\n        coerce(attr0, 0);\n        coerce(attr1, 10);\n      } else {\n        Axes.coercePosition(shapeOut, gdMock, coerce, axRef, attr0, dflt0);\n        Axes.coercePosition(shapeOut, gdMock, coerce, axRef, attr1, dflt1);\n      }\n\n      // hack part 2\n      shapeOut[attr0] = r2pos(shapeOut[attr0]);\n      shapeOut[attr1] = r2pos(shapeOut[attr1]);\n      shapeIn[attr0] = in0;\n      shapeIn[attr1] = in1;\n    }\n\n    // Coerce xanchor and yanchor\n    if (sizeMode === 'pixel') {\n      // Hack for log axis described above\n      var inAnchor = shapeIn[attrAnchor];\n      shapeIn[attrAnchor] = pos2r(shapeIn[attrAnchor], true);\n      Axes.coercePosition(shapeOut, gdMock, coerce, axRef, attrAnchor, 0.25);\n\n      // Hack part 2\n      shapeOut[attrAnchor] = r2pos(shapeOut[attrAnchor]);\n      shapeIn[attrAnchor] = inAnchor;\n    }\n  }\n  if (noPath) {\n    Lib.noneOrAll(shapeIn, shapeOut, ['x0', 'x1', 'y0', 'y1']);\n  }\n}\n\n/***/ }),\n\n/***/ 42359:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_588608__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_588608__(71828);\nvar strTranslate = Lib.strTranslate;\nvar dragElement = __nested_webpack_require_588608__(28569);\nvar dragHelpers = __nested_webpack_require_588608__(64505);\nvar drawMode = dragHelpers.drawMode;\nvar selectMode = dragHelpers.selectMode;\nvar Registry = __nested_webpack_require_588608__(73972);\nvar Color = __nested_webpack_require_588608__(7901);\nvar constants = __nested_webpack_require_588608__(89995);\nvar i000 = constants.i000;\nvar i090 = constants.i090;\nvar i180 = constants.i180;\nvar i270 = constants.i270;\nvar handleOutline = __nested_webpack_require_588608__(51873);\nvar clearOutlineControllers = handleOutline.clearOutlineControllers;\nvar helpers = __nested_webpack_require_588608__(60165);\nvar pointsOnRectangle = helpers.pointsOnRectangle;\nvar pointsOnEllipse = helpers.pointsOnEllipse;\nvar writePaths = helpers.writePaths;\nvar newShapes = __nested_webpack_require_588608__(90551);\nvar newSelections = __nested_webpack_require_588608__(35855);\nmodule.exports = function displayOutlines(polygons, outlines, dragOptions, nCalls) {\n  if (!nCalls) nCalls = 0;\n  var gd = dragOptions.gd;\n  function redraw() {\n    // recursive call\n    displayOutlines(polygons, outlines, dragOptions, nCalls++);\n    if (pointsOnEllipse(polygons[0])) {\n      update({\n        redrawing: true\n      });\n    }\n  }\n  function update(opts) {\n    var updateObject = {};\n    if (dragOptions.isActiveShape !== undefined) {\n      dragOptions.isActiveShape = false; // i.e. to disable shape controllers\n      updateObject = newShapes(outlines, dragOptions);\n    }\n    if (dragOptions.isActiveSelection !== undefined) {\n      dragOptions.isActiveSelection = false; // i.e. to disable selection controllers\n      updateObject = newSelections(outlines, dragOptions);\n      gd._fullLayout._reselect = true;\n    }\n    if (Object.keys(updateObject).length) {\n      Registry.call((opts || {}).redrawing ? 'relayout' : '_guiRelayout', gd, updateObject);\n    }\n  }\n  var fullLayout = gd._fullLayout;\n  var zoomLayer = fullLayout._zoomlayer;\n  var dragmode = dragOptions.dragmode;\n  var isDrawMode = drawMode(dragmode);\n  var isSelectMode = selectMode(dragmode);\n  if (isDrawMode || isSelectMode) {\n    gd._fullLayout._outlining = true;\n  }\n  clearOutlineControllers(gd);\n\n  // make outline\n  outlines.attr('d', writePaths(polygons));\n\n  // add controllers\n  var vertexDragOptions;\n  var groupDragOptions;\n  var indexI; // cell index\n  var indexJ; // vertex or cell-controller index\n  var copyPolygons;\n  if (!nCalls && (dragOptions.isActiveShape || dragOptions.isActiveSelection)) {\n    copyPolygons = recordPositions([], polygons);\n    var g = zoomLayer.append('g').attr('class', 'outline-controllers');\n    addVertexControllers(g);\n    addGroupControllers();\n  }\n  function startDragVertex(evt) {\n    indexI = +evt.srcElement.getAttribute('data-i');\n    indexJ = +evt.srcElement.getAttribute('data-j');\n    vertexDragOptions[indexI][indexJ].moveFn = moveVertexController;\n  }\n  function moveVertexController(dx, dy) {\n    if (!polygons.length) return;\n    var x0 = copyPolygons[indexI][indexJ][1];\n    var y0 = copyPolygons[indexI][indexJ][2];\n    var cell = polygons[indexI];\n    var len = cell.length;\n    if (pointsOnRectangle(cell)) {\n      var _dx = dx;\n      var _dy = dy;\n      if (dragOptions.isActiveSelection) {\n        // handle an edge contoller for rect selections\n        var nextPoint = getNextPoint(cell, indexJ);\n        if (nextPoint[1] === cell[indexJ][1]) {\n          // a vertical edge\n          _dy = 0;\n        } else {\n          // a horizontal edge\n          _dx = 0;\n        }\n      }\n      for (var q = 0; q < len; q++) {\n        if (q === indexJ) continue;\n\n        // move other corners of rectangle\n        var pos = cell[q];\n        if (pos[1] === cell[indexJ][1]) {\n          pos[1] = x0 + _dx;\n        }\n        if (pos[2] === cell[indexJ][2]) {\n          pos[2] = y0 + _dy;\n        }\n      }\n      // move the corner\n      cell[indexJ][1] = x0 + _dx;\n      cell[indexJ][2] = y0 + _dy;\n      if (!pointsOnRectangle(cell)) {\n        // reject result to rectangles with ensure areas\n        for (var j = 0; j < len; j++) {\n          for (var k = 0; k < cell[j].length; k++) {\n            cell[j][k] = copyPolygons[indexI][j][k];\n          }\n        }\n      }\n    } else {\n      // other polylines\n      cell[indexJ][1] = x0 + dx;\n      cell[indexJ][2] = y0 + dy;\n    }\n    redraw();\n  }\n  function endDragVertexController() {\n    update();\n  }\n  function removeVertex() {\n    if (!polygons.length) return;\n    if (!polygons[indexI]) return;\n    if (!polygons[indexI].length) return;\n    var newPolygon = [];\n    for (var j = 0; j < polygons[indexI].length; j++) {\n      if (j !== indexJ) {\n        newPolygon.push(polygons[indexI][j]);\n      }\n    }\n    if (newPolygon.length > 1 && !(newPolygon.length === 2 && newPolygon[1][0] === 'Z')) {\n      if (indexJ === 0) {\n        newPolygon[0][0] = 'M';\n      }\n      polygons[indexI] = newPolygon;\n      redraw();\n      update();\n    }\n  }\n  function clickVertexController(numClicks, evt) {\n    if (numClicks === 2) {\n      indexI = +evt.srcElement.getAttribute('data-i');\n      indexJ = +evt.srcElement.getAttribute('data-j');\n      var cell = polygons[indexI];\n      if (!pointsOnRectangle(cell) && !pointsOnEllipse(cell)) {\n        removeVertex();\n      }\n    }\n  }\n  function addVertexControllers(g) {\n    vertexDragOptions = [];\n    for (var i = 0; i < polygons.length; i++) {\n      var cell = polygons[i];\n      var onRect = pointsOnRectangle(cell);\n      var onEllipse = !onRect && pointsOnEllipse(cell);\n      vertexDragOptions[i] = [];\n      var len = cell.length;\n      for (var j = 0; j < len; j++) {\n        if (cell[j][0] === 'Z') continue;\n        if (onEllipse && j !== i000 && j !== i090 && j !== i180 && j !== i270) {\n          continue;\n        }\n        var rectSelection = onRect && dragOptions.isActiveSelection;\n        var nextPoint;\n        if (rectSelection) nextPoint = getNextPoint(cell, j);\n        var x = cell[j][1];\n        var y = cell[j][2];\n        var vertex = g.append(rectSelection ? 'rect' : 'circle').attr('data-i', i).attr('data-j', j).style({\n          fill: Color.background,\n          stroke: Color.defaultLine,\n          'stroke-width': 1,\n          'shape-rendering': 'crispEdges'\n        });\n        if (rectSelection) {\n          // convert a vertex controller to an edge controller for rect selections\n          var dx = nextPoint[1] - x;\n          var dy = nextPoint[2] - y;\n          var width = dy ? 5 : Math.max(Math.min(25, Math.abs(dx) - 5), 5);\n          var height = dx ? 5 : Math.max(Math.min(25, Math.abs(dy) - 5), 5);\n          vertex.classed(dy ? 'cursor-ew-resize' : 'cursor-ns-resize', true).attr('width', width).attr('height', height).attr('x', x - width / 2).attr('y', y - height / 2).attr('transform', strTranslate(dx / 2, dy / 2));\n        } else {\n          vertex.classed('cursor-grab', true).attr('r', 5).attr('cx', x).attr('cy', y);\n        }\n        vertexDragOptions[i][j] = {\n          element: vertex.node(),\n          gd: gd,\n          prepFn: startDragVertex,\n          doneFn: endDragVertexController,\n          clickFn: clickVertexController\n        };\n        dragElement.init(vertexDragOptions[i][j]);\n      }\n    }\n  }\n  function moveGroup(dx, dy) {\n    if (!polygons.length) return;\n    for (var i = 0; i < polygons.length; i++) {\n      for (var j = 0; j < polygons[i].length; j++) {\n        for (var k = 0; k + 2 < polygons[i][j].length; k += 2) {\n          polygons[i][j][k + 1] = copyPolygons[i][j][k + 1] + dx;\n          polygons[i][j][k + 2] = copyPolygons[i][j][k + 2] + dy;\n        }\n      }\n    }\n  }\n  function moveGroupController(dx, dy) {\n    moveGroup(dx, dy);\n    redraw();\n  }\n  function startDragGroupController(evt) {\n    indexI = +evt.srcElement.getAttribute('data-i');\n    if (!indexI) indexI = 0; // ensure non-existing move button get zero index\n\n    groupDragOptions[indexI].moveFn = moveGroupController;\n  }\n  function endDragGroupController() {\n    update();\n  }\n  function clickGroupController(numClicks) {\n    if (numClicks === 2) {\n      eraseActiveSelection(gd);\n    }\n  }\n  function addGroupControllers() {\n    groupDragOptions = [];\n    if (!polygons.length) return;\n    var i = 0;\n    groupDragOptions[i] = {\n      element: outlines[0][0],\n      gd: gd,\n      prepFn: startDragGroupController,\n      doneFn: endDragGroupController,\n      clickFn: clickGroupController\n    };\n    dragElement.init(groupDragOptions[i]);\n  }\n};\nfunction recordPositions(polygonsOut, polygonsIn) {\n  for (var i = 0; i < polygonsIn.length; i++) {\n    var cell = polygonsIn[i];\n    polygonsOut[i] = [];\n    for (var j = 0; j < cell.length; j++) {\n      polygonsOut[i][j] = [];\n      for (var k = 0; k < cell[j].length; k++) {\n        polygonsOut[i][j][k] = cell[j][k];\n      }\n    }\n  }\n  return polygonsOut;\n}\nfunction getNextPoint(cell, j) {\n  var x = cell[j][1];\n  var y = cell[j][2];\n  var len = cell.length;\n  var nextJ, nextX, nextY;\n  nextJ = (j + 1) % len;\n  nextX = cell[nextJ][1];\n  nextY = cell[nextJ][2];\n\n  // avoid potential double points (closing points)\n  if (nextX === x && nextY === y) {\n    nextJ = (j + 2) % len;\n    nextX = cell[nextJ][1];\n    nextY = cell[nextJ][2];\n  }\n  return [nextJ, nextX, nextY];\n}\nfunction eraseActiveSelection(gd) {\n  // Do not allow removal of selections on other dragmodes.\n  // This ensures the user could still double click to\n  // deselect all trace.selectedpoints,\n  // if that's what they wanted.\n  // Also double click to zoom back won't result in\n  // any surprising selection removal.\n  if (!selectMode(gd._fullLayout.dragmode)) return;\n  clearOutlineControllers(gd);\n  var id = gd._fullLayout._activeSelectionIndex;\n  var selections = (gd.layout || {}).selections || [];\n  if (id < selections.length) {\n    var list = [];\n    for (var q = 0; q < selections.length; q++) {\n      if (q !== id) {\n        list.push(selections[q]);\n      }\n    }\n    delete gd._fullLayout._activeSelectionIndex;\n    var erasedSelection = gd._fullLayout.selections[id];\n    gd._fullLayout._deselect = {\n      xref: erasedSelection.xref,\n      yref: erasedSelection.yref\n    };\n    Registry.call('_guiRelayout', gd, {\n      selections: list\n    });\n  }\n}\n\n/***/ }),\n\n/***/ 34031:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_598862__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_598862__(73972);\nvar Lib = __nested_webpack_require_598862__(71828);\nvar Axes = __nested_webpack_require_598862__(89298);\nvar readPaths = (__nested_webpack_require_598862__(60165).readPaths);\nvar displayOutlines = __nested_webpack_require_598862__(42359);\nvar clearOutlineControllers = (__nested_webpack_require_598862__(51873).clearOutlineControllers);\nvar Color = __nested_webpack_require_598862__(7901);\nvar Drawing = __nested_webpack_require_598862__(91424);\nvar arrayEditor = (__nested_webpack_require_598862__(44467).arrayEditor);\nvar dragElement = __nested_webpack_require_598862__(28569);\nvar setCursor = __nested_webpack_require_598862__(6964);\nvar constants = __nested_webpack_require_598862__(21459);\nvar helpers = __nested_webpack_require_598862__(30477);\nvar getPathString = helpers.getPathString;\n\n// Shapes are stored in gd.layout.shapes, an array of objects\n// index can point to one item in this array,\n//  or non-numeric to simply add a new one\n//  or -1 to modify all existing\n// opt can be the full options object, or one key (to be set to value)\n//  or undefined to simply redraw\n// if opt is blank, val can be 'add' or a full options object to add a new\n//  annotation at that point in the array, or 'remove' to delete this one\n\nmodule.exports = {\n  draw: draw,\n  drawOne: drawOne,\n  eraseActiveShape: eraseActiveShape\n};\nfunction draw(gd) {\n  var fullLayout = gd._fullLayout;\n\n  // Remove previous shapes before drawing new in shapes in fullLayout.shapes\n  fullLayout._shapeUpperLayer.selectAll('path').remove();\n  fullLayout._shapeLowerLayer.selectAll('path').remove();\n  for (var k in fullLayout._plots) {\n    var shapelayer = fullLayout._plots[k].shapelayer;\n    if (shapelayer) shapelayer.selectAll('path').remove();\n  }\n  for (var i = 0; i < fullLayout.shapes.length; i++) {\n    if (fullLayout.shapes[i].visible) {\n      drawOne(gd, i);\n    }\n  }\n\n  // may need to resurrect this if we put text (LaTeX) in shapes\n  // return Plots.previousPromises(gd);\n}\n\nfunction shouldSkipEdits(gd) {\n  return !!gd._fullLayout._outlining;\n}\nfunction couldHaveActiveShape(gd) {\n  // for now keep config.editable: true as it was before shape-drawing PR\n  return !gd._context.edits.shapePosition;\n}\nfunction drawOne(gd, index) {\n  // remove the existing shape if there is one.\n  // because indices can change, we need to look in all shape layers\n  gd._fullLayout._paperdiv.selectAll('.shapelayer [data-index=\"' + index + '\"]').remove();\n  var o = helpers.makeShapesOptionsAndPlotinfo(gd, index);\n  var options = o.options;\n  var plotinfo = o.plotinfo;\n\n  // this shape is gone - quit now after deleting it\n  // TODO: use d3 idioms instead of deleting and redrawing every time\n  if (!options._input || options.visible === false) return;\n  if (options.layer !== 'below') {\n    drawShape(gd._fullLayout._shapeUpperLayer);\n  } else if (options.xref === 'paper' || options.yref === 'paper') {\n    drawShape(gd._fullLayout._shapeLowerLayer);\n  } else {\n    if (plotinfo._hadPlotinfo) {\n      var mainPlot = plotinfo.mainplotinfo || plotinfo;\n      drawShape(mainPlot.shapelayer);\n    } else {\n      // Fall back to _shapeLowerLayer in case the requested subplot doesn't exist.\n      // This can happen if you reference the shape to an x / y axis combination\n      // that doesn't have any data on it (and layer is below)\n      drawShape(gd._fullLayout._shapeLowerLayer);\n    }\n  }\n  function drawShape(shapeLayer) {\n    var d = getPathString(gd, options);\n    var attrs = {\n      'data-index': index,\n      'fill-rule': options.fillrule,\n      d: d\n    };\n    var opacity = options.opacity;\n    var fillColor = options.fillcolor;\n    var lineColor = options.line.width ? options.line.color : 'rgba(0,0,0,0)';\n    var lineWidth = options.line.width;\n    var lineDash = options.line.dash;\n    if (!lineWidth && options.editable === true) {\n      // ensure invisible border to activate the shape\n      lineWidth = 5;\n      lineDash = 'solid';\n    }\n    var isOpen = d[d.length - 1] !== 'Z';\n    var isActiveShape = couldHaveActiveShape(gd) && options.editable && gd._fullLayout._activeShapeIndex === index;\n    if (isActiveShape) {\n      fillColor = isOpen ? 'rgba(0,0,0,0)' : gd._fullLayout.activeshape.fillcolor;\n      opacity = gd._fullLayout.activeshape.opacity;\n    }\n    var path = shapeLayer.append('path').attr(attrs).style('opacity', opacity).call(Color.stroke, lineColor).call(Color.fill, fillColor).call(Drawing.dashLine, lineDash, lineWidth);\n    setClipPath(path, gd, options);\n    var editHelpers;\n    if (isActiveShape || gd._context.edits.shapePosition) editHelpers = arrayEditor(gd.layout, 'shapes', options);\n    if (isActiveShape) {\n      path.style({\n        'cursor': 'move'\n      });\n      var dragOptions = {\n        element: path.node(),\n        plotinfo: plotinfo,\n        gd: gd,\n        editHelpers: editHelpers,\n        isActiveShape: true // i.e. to enable controllers\n      };\n\n      var polygons = readPaths(d, gd);\n      // display polygons on the screen\n      displayOutlines(polygons, path, dragOptions);\n    } else {\n      if (gd._context.edits.shapePosition) {\n        setupDragElement(gd, path, options, index, shapeLayer, editHelpers);\n      } else if (options.editable === true) {\n        path.style('pointer-events', isOpen || Color.opacity(fillColor) * opacity <= 0.5 ? 'stroke' : 'all');\n      }\n    }\n    path.node().addEventListener('click', function () {\n      return activateShape(gd, path);\n    });\n  }\n}\nfunction setClipPath(shapePath, gd, shapeOptions) {\n  // note that for layer=\"below\" the clipAxes can be different from the\n  // subplot we're drawing this in. This could cause problems if the shape\n  // spans two subplots. See https://github.com/plotly/plotly.js/issues/1452\n  //\n  // if axis is 'paper' or an axis with \" domain\" appended, then there is no\n  // clip axis\n  var clipAxes = (shapeOptions.xref + shapeOptions.yref).replace(/paper/g, '').replace(/[xyz][1-9]* *domain/g, '');\n  Drawing.setClipUrl(shapePath, clipAxes ? 'clip' + gd._fullLayout._uid + clipAxes : null, gd);\n}\nfunction setupDragElement(gd, shapePath, shapeOptions, index, shapeLayer, editHelpers) {\n  var MINWIDTH = 10;\n  var MINHEIGHT = 10;\n  var xPixelSized = shapeOptions.xsizemode === 'pixel';\n  var yPixelSized = shapeOptions.ysizemode === 'pixel';\n  var isLine = shapeOptions.type === 'line';\n  var isPath = shapeOptions.type === 'path';\n  var modifyItem = editHelpers.modifyItem;\n  var x0, y0, x1, y1, xAnchor, yAnchor;\n  var n0, s0, w0, e0, optN, optS, optW, optE;\n  var pathIn;\n\n  // setup conversion functions\n  var xa = Axes.getFromId(gd, shapeOptions.xref);\n  var xRefType = Axes.getRefType(shapeOptions.xref);\n  var ya = Axes.getFromId(gd, shapeOptions.yref);\n  var yRefType = Axes.getRefType(shapeOptions.yref);\n  var x2p = helpers.getDataToPixel(gd, xa, false, xRefType);\n  var y2p = helpers.getDataToPixel(gd, ya, true, yRefType);\n  var p2x = helpers.getPixelToData(gd, xa, false, xRefType);\n  var p2y = helpers.getPixelToData(gd, ya, true, yRefType);\n  var sensoryElement = obtainSensoryElement();\n  var dragOptions = {\n    element: sensoryElement.node(),\n    gd: gd,\n    prepFn: startDrag,\n    doneFn: endDrag,\n    clickFn: abortDrag\n  };\n  var dragMode;\n  dragElement.init(dragOptions);\n  sensoryElement.node().onmousemove = updateDragMode;\n  function obtainSensoryElement() {\n    return isLine ? createLineDragHandles() : shapePath;\n  }\n  function createLineDragHandles() {\n    var minSensoryWidth = 10;\n    var sensoryWidth = Math.max(shapeOptions.line.width, minSensoryWidth);\n\n    // Helper shapes group\n    // Note that by setting the `data-index` attr, it is ensured that\n    // the helper group is purged in this modules `draw` function\n    var g = shapeLayer.append('g').attr('data-index', index);\n\n    // Helper path for moving\n    g.append('path').attr('d', shapePath.attr('d')).style({\n      'cursor': 'move',\n      'stroke-width': sensoryWidth,\n      'stroke-opacity': '0' // ensure not visible\n    });\n\n    // Helper circles for resizing\n    var circleStyle = {\n      'fill-opacity': '0' // ensure not visible\n    };\n\n    var circleRadius = Math.max(sensoryWidth / 2, minSensoryWidth);\n    g.append('circle').attr({\n      'data-line-point': 'start-point',\n      'cx': xPixelSized ? x2p(shapeOptions.xanchor) + shapeOptions.x0 : x2p(shapeOptions.x0),\n      'cy': yPixelSized ? y2p(shapeOptions.yanchor) - shapeOptions.y0 : y2p(shapeOptions.y0),\n      'r': circleRadius\n    }).style(circleStyle).classed('cursor-grab', true);\n    g.append('circle').attr({\n      'data-line-point': 'end-point',\n      'cx': xPixelSized ? x2p(shapeOptions.xanchor) + shapeOptions.x1 : x2p(shapeOptions.x1),\n      'cy': yPixelSized ? y2p(shapeOptions.yanchor) - shapeOptions.y1 : y2p(shapeOptions.y1),\n      'r': circleRadius\n    }).style(circleStyle).classed('cursor-grab', true);\n    return g;\n  }\n  function updateDragMode(evt) {\n    if (shouldSkipEdits(gd)) {\n      dragMode = null;\n      return;\n    }\n    if (isLine) {\n      if (evt.target.tagName === 'path') {\n        dragMode = 'move';\n      } else {\n        dragMode = evt.target.attributes['data-line-point'].value === 'start-point' ? 'resize-over-start-point' : 'resize-over-end-point';\n      }\n    } else {\n      // element might not be on screen at time of setup,\n      // so obtain bounding box here\n      var dragBBox = dragOptions.element.getBoundingClientRect();\n\n      // choose 'move' or 'resize'\n      // based on initial position of cursor within the drag element\n      var w = dragBBox.right - dragBBox.left;\n      var h = dragBBox.bottom - dragBBox.top;\n      var x = evt.clientX - dragBBox.left;\n      var y = evt.clientY - dragBBox.top;\n      var cursor = !isPath && w > MINWIDTH && h > MINHEIGHT && !evt.shiftKey ? dragElement.getCursor(x / w, 1 - y / h) : 'move';\n      setCursor(shapePath, cursor);\n\n      // possible values 'move', 'sw', 'w', 'se', 'e', 'ne', 'n', 'nw' and 'w'\n      dragMode = cursor.split('-')[0];\n    }\n  }\n  function startDrag(evt) {\n    if (shouldSkipEdits(gd)) return;\n\n    // setup update strings and initial values\n    if (xPixelSized) {\n      xAnchor = x2p(shapeOptions.xanchor);\n    }\n    if (yPixelSized) {\n      yAnchor = y2p(shapeOptions.yanchor);\n    }\n    if (shapeOptions.type === 'path') {\n      pathIn = shapeOptions.path;\n    } else {\n      x0 = xPixelSized ? shapeOptions.x0 : x2p(shapeOptions.x0);\n      y0 = yPixelSized ? shapeOptions.y0 : y2p(shapeOptions.y0);\n      x1 = xPixelSized ? shapeOptions.x1 : x2p(shapeOptions.x1);\n      y1 = yPixelSized ? shapeOptions.y1 : y2p(shapeOptions.y1);\n    }\n    if (x0 < x1) {\n      w0 = x0;\n      optW = 'x0';\n      e0 = x1;\n      optE = 'x1';\n    } else {\n      w0 = x1;\n      optW = 'x1';\n      e0 = x0;\n      optE = 'x0';\n    }\n\n    // For fixed size shapes take opposing direction of y-axis into account.\n    // Hint: For data sized shapes this is done by the y2p function.\n    if (!yPixelSized && y0 < y1 || yPixelSized && y0 > y1) {\n      n0 = y0;\n      optN = 'y0';\n      s0 = y1;\n      optS = 'y1';\n    } else {\n      n0 = y1;\n      optN = 'y1';\n      s0 = y0;\n      optS = 'y0';\n    }\n\n    // setup dragMode and the corresponding handler\n    updateDragMode(evt);\n    renderVisualCues(shapeLayer, shapeOptions);\n    deactivateClipPathTemporarily(shapePath, shapeOptions, gd);\n    dragOptions.moveFn = dragMode === 'move' ? moveShape : resizeShape;\n    dragOptions.altKey = evt.altKey;\n  }\n  function endDrag() {\n    if (shouldSkipEdits(gd)) return;\n    setCursor(shapePath);\n    removeVisualCues(shapeLayer);\n\n    // Don't rely on clipPath being activated during re-layout\n    setClipPath(shapePath, gd, shapeOptions);\n    Registry.call('_guiRelayout', gd, editHelpers.getUpdateObj());\n  }\n  function abortDrag() {\n    if (shouldSkipEdits(gd)) return;\n    removeVisualCues(shapeLayer);\n  }\n  function moveShape(dx, dy) {\n    if (shapeOptions.type === 'path') {\n      var noOp = function (coord) {\n        return coord;\n      };\n      var moveX = noOp;\n      var moveY = noOp;\n      if (xPixelSized) {\n        modifyItem('xanchor', shapeOptions.xanchor = p2x(xAnchor + dx));\n      } else {\n        moveX = function moveX(x) {\n          return p2x(x2p(x) + dx);\n        };\n        if (xa && xa.type === 'date') moveX = helpers.encodeDate(moveX);\n      }\n      if (yPixelSized) {\n        modifyItem('yanchor', shapeOptions.yanchor = p2y(yAnchor + dy));\n      } else {\n        moveY = function moveY(y) {\n          return p2y(y2p(y) + dy);\n        };\n        if (ya && ya.type === 'date') moveY = helpers.encodeDate(moveY);\n      }\n      modifyItem('path', shapeOptions.path = movePath(pathIn, moveX, moveY));\n    } else {\n      if (xPixelSized) {\n        modifyItem('xanchor', shapeOptions.xanchor = p2x(xAnchor + dx));\n      } else {\n        modifyItem('x0', shapeOptions.x0 = p2x(x0 + dx));\n        modifyItem('x1', shapeOptions.x1 = p2x(x1 + dx));\n      }\n      if (yPixelSized) {\n        modifyItem('yanchor', shapeOptions.yanchor = p2y(yAnchor + dy));\n      } else {\n        modifyItem('y0', shapeOptions.y0 = p2y(y0 + dy));\n        modifyItem('y1', shapeOptions.y1 = p2y(y1 + dy));\n      }\n    }\n    shapePath.attr('d', getPathString(gd, shapeOptions));\n    renderVisualCues(shapeLayer, shapeOptions);\n  }\n  function resizeShape(dx, dy) {\n    if (isPath) {\n      // TODO: implement path resize, don't forget to update dragMode code\n      var noOp = function (coord) {\n        return coord;\n      };\n      var moveX = noOp;\n      var moveY = noOp;\n      if (xPixelSized) {\n        modifyItem('xanchor', shapeOptions.xanchor = p2x(xAnchor + dx));\n      } else {\n        moveX = function moveX(x) {\n          return p2x(x2p(x) + dx);\n        };\n        if (xa && xa.type === 'date') moveX = helpers.encodeDate(moveX);\n      }\n      if (yPixelSized) {\n        modifyItem('yanchor', shapeOptions.yanchor = p2y(yAnchor + dy));\n      } else {\n        moveY = function moveY(y) {\n          return p2y(y2p(y) + dy);\n        };\n        if (ya && ya.type === 'date') moveY = helpers.encodeDate(moveY);\n      }\n      modifyItem('path', shapeOptions.path = movePath(pathIn, moveX, moveY));\n    } else if (isLine) {\n      if (dragMode === 'resize-over-start-point') {\n        var newX0 = x0 + dx;\n        var newY0 = yPixelSized ? y0 - dy : y0 + dy;\n        modifyItem('x0', shapeOptions.x0 = xPixelSized ? newX0 : p2x(newX0));\n        modifyItem('y0', shapeOptions.y0 = yPixelSized ? newY0 : p2y(newY0));\n      } else if (dragMode === 'resize-over-end-point') {\n        var newX1 = x1 + dx;\n        var newY1 = yPixelSized ? y1 - dy : y1 + dy;\n        modifyItem('x1', shapeOptions.x1 = xPixelSized ? newX1 : p2x(newX1));\n        modifyItem('y1', shapeOptions.y1 = yPixelSized ? newY1 : p2y(newY1));\n      }\n    } else {\n      var has = function (str) {\n        return dragMode.indexOf(str) !== -1;\n      };\n      var hasN = has('n');\n      var hasS = has('s');\n      var hasW = has('w');\n      var hasE = has('e');\n      var newN = hasN ? n0 + dy : n0;\n      var newS = hasS ? s0 + dy : s0;\n      var newW = hasW ? w0 + dx : w0;\n      var newE = hasE ? e0 + dx : e0;\n      if (yPixelSized) {\n        // Do things in opposing direction for y-axis.\n        // Hint: for data-sized shapes the reversal of axis direction is done in p2y.\n        if (hasN) newN = n0 - dy;\n        if (hasS) newS = s0 - dy;\n      }\n\n      // Update shape eventually. Again, be aware of the\n      // opposing direction of the y-axis of fixed size shapes.\n      if (!yPixelSized && newS - newN > MINHEIGHT || yPixelSized && newN - newS > MINHEIGHT) {\n        modifyItem(optN, shapeOptions[optN] = yPixelSized ? newN : p2y(newN));\n        modifyItem(optS, shapeOptions[optS] = yPixelSized ? newS : p2y(newS));\n      }\n      if (newE - newW > MINWIDTH) {\n        modifyItem(optW, shapeOptions[optW] = xPixelSized ? newW : p2x(newW));\n        modifyItem(optE, shapeOptions[optE] = xPixelSized ? newE : p2x(newE));\n      }\n    }\n    shapePath.attr('d', getPathString(gd, shapeOptions));\n    renderVisualCues(shapeLayer, shapeOptions);\n  }\n  function renderVisualCues(shapeLayer, shapeOptions) {\n    if (xPixelSized || yPixelSized) {\n      renderAnchor();\n    }\n    function renderAnchor() {\n      var isNotPath = shapeOptions.type !== 'path';\n\n      // d3 join with dummy data to satisfy d3 data-binding\n      var visualCues = shapeLayer.selectAll('.visual-cue').data([0]);\n\n      // Enter\n      var strokeWidth = 1;\n      visualCues.enter().append('path').attr({\n        'fill': '#fff',\n        'fill-rule': 'evenodd',\n        'stroke': '#000',\n        'stroke-width': strokeWidth\n      }).classed('visual-cue', true);\n\n      // Update\n      var posX = x2p(xPixelSized ? shapeOptions.xanchor : Lib.midRange(isNotPath ? [shapeOptions.x0, shapeOptions.x1] : helpers.extractPathCoords(shapeOptions.path, constants.paramIsX)));\n      var posY = y2p(yPixelSized ? shapeOptions.yanchor : Lib.midRange(isNotPath ? [shapeOptions.y0, shapeOptions.y1] : helpers.extractPathCoords(shapeOptions.path, constants.paramIsY)));\n      posX = helpers.roundPositionForSharpStrokeRendering(posX, strokeWidth);\n      posY = helpers.roundPositionForSharpStrokeRendering(posY, strokeWidth);\n      if (xPixelSized && yPixelSized) {\n        var crossPath = 'M' + (posX - 1 - strokeWidth) + ',' + (posY - 1 - strokeWidth) + 'h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z';\n        visualCues.attr('d', crossPath);\n      } else if (xPixelSized) {\n        var vBarPath = 'M' + (posX - 1 - strokeWidth) + ',' + (posY - 9 - strokeWidth) + 'v18 h2 v-18 Z';\n        visualCues.attr('d', vBarPath);\n      } else {\n        var hBarPath = 'M' + (posX - 9 - strokeWidth) + ',' + (posY - 1 - strokeWidth) + 'h18 v2 h-18 Z';\n        visualCues.attr('d', hBarPath);\n      }\n    }\n  }\n  function removeVisualCues(shapeLayer) {\n    shapeLayer.selectAll('.visual-cue').remove();\n  }\n  function deactivateClipPathTemporarily(shapePath, shapeOptions, gd) {\n    var xref = shapeOptions.xref;\n    var yref = shapeOptions.yref;\n    var xa = Axes.getFromId(gd, xref);\n    var ya = Axes.getFromId(gd, yref);\n    var clipAxes = '';\n    if (xref !== 'paper' && !xa.autorange) clipAxes += xref;\n    if (yref !== 'paper' && !ya.autorange) clipAxes += yref;\n    Drawing.setClipUrl(shapePath, clipAxes ? 'clip' + gd._fullLayout._uid + clipAxes : null, gd);\n  }\n}\nfunction movePath(pathIn, moveX, moveY) {\n  return pathIn.replace(constants.segmentRE, function (segment) {\n    var paramNumber = 0;\n    var segmentType = segment.charAt(0);\n    var xParams = constants.paramIsX[segmentType];\n    var yParams = constants.paramIsY[segmentType];\n    var nParams = constants.numParams[segmentType];\n    var paramString = segment.substr(1).replace(constants.paramRE, function (param) {\n      if (paramNumber >= nParams) return param;\n      if (xParams[paramNumber]) param = moveX(param);else if (yParams[paramNumber]) param = moveY(param);\n      paramNumber++;\n      return param;\n    });\n    return segmentType + paramString;\n  });\n}\nfunction activateShape(gd, path) {\n  if (!couldHaveActiveShape(gd)) return;\n  var element = path.node();\n  var id = +element.getAttribute('data-index');\n  if (id >= 0) {\n    // deactivate if already active\n    if (id === gd._fullLayout._activeShapeIndex) {\n      deactivateShape(gd);\n      return;\n    }\n    gd._fullLayout._activeShapeIndex = id;\n    gd._fullLayout._deactivateShape = deactivateShape;\n    draw(gd);\n  }\n}\nfunction deactivateShape(gd) {\n  if (!couldHaveActiveShape(gd)) return;\n  var id = gd._fullLayout._activeShapeIndex;\n  if (id >= 0) {\n    clearOutlineControllers(gd);\n    delete gd._fullLayout._activeShapeIndex;\n    draw(gd);\n  }\n}\nfunction eraseActiveShape(gd) {\n  if (!couldHaveActiveShape(gd)) return;\n  clearOutlineControllers(gd);\n  var id = gd._fullLayout._activeShapeIndex;\n  var shapes = (gd.layout || {}).shapes || [];\n  if (id < shapes.length) {\n    var list = [];\n    for (var q = 0; q < shapes.length; q++) {\n      if (q !== id) {\n        list.push(shapes[q]);\n      }\n    }\n    delete gd._fullLayout._activeShapeIndex;\n    Registry.call('_guiRelayout', gd, {\n      shapes: list\n    });\n  }\n}\n\n/***/ }),\n\n/***/ 29241:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_618893__) {\n\n\"use strict\";\n\n\nvar dash = (__nested_webpack_require_618893__(79952)/* .dash */ .P);\nvar extendFlat = (__nested_webpack_require_618893__(1426).extendFlat);\nmodule.exports = {\n  newshape: {\n    line: {\n      color: {\n        valType: 'color',\n        editType: 'none'\n      },\n      width: {\n        valType: 'number',\n        min: 0,\n        dflt: 4,\n        editType: 'none'\n      },\n      dash: extendFlat({}, dash, {\n        dflt: 'solid',\n        editType: 'none'\n      }),\n      editType: 'none'\n    },\n    fillcolor: {\n      valType: 'color',\n      dflt: 'rgba(0,0,0,0)',\n      editType: 'none'\n    },\n    fillrule: {\n      valType: 'enumerated',\n      values: ['evenodd', 'nonzero'],\n      dflt: 'evenodd',\n      editType: 'none'\n    },\n    opacity: {\n      valType: 'number',\n      min: 0,\n      max: 1,\n      dflt: 1,\n      editType: 'none'\n    },\n    layer: {\n      valType: 'enumerated',\n      values: ['below', 'above'],\n      dflt: 'above',\n      editType: 'none'\n    },\n    drawdirection: {\n      valType: 'enumerated',\n      values: ['ortho', 'horizontal', 'vertical', 'diagonal'],\n      dflt: 'diagonal',\n      editType: 'none'\n    },\n    editType: 'none'\n  },\n  activeshape: {\n    fillcolor: {\n      valType: 'color',\n      dflt: 'rgb(255,0,255)',\n      editType: 'none'\n    },\n    opacity: {\n      valType: 'number',\n      min: 0,\n      max: 1,\n      dflt: 0.5,\n      editType: 'none'\n    },\n    editType: 'none'\n  }\n};\n\n/***/ }),\n\n/***/ 89995:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar CIRCLE_SIDES = 32; // should be divisible by 4\n\nmodule.exports = {\n  CIRCLE_SIDES: CIRCLE_SIDES,\n  i000: 0,\n  i090: CIRCLE_SIDES / 4,\n  i180: CIRCLE_SIDES / 2,\n  i270: CIRCLE_SIDES / 4 * 3,\n  cos45: Math.cos(Math.PI / 4),\n  sin45: Math.sin(Math.PI / 4),\n  SQRT2: Math.sqrt(2)\n};\n\n/***/ }),\n\n/***/ 45547:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_620753__) {\n\n\"use strict\";\n\n\nvar Color = __nested_webpack_require_620753__(7901);\nmodule.exports = function supplyDrawNewShapeDefaults(layoutIn, layoutOut, coerce) {\n  coerce('newshape.drawdirection');\n  coerce('newshape.layer');\n  coerce('newshape.fillcolor');\n  coerce('newshape.fillrule');\n  coerce('newshape.opacity');\n  var newshapeLineWidth = coerce('newshape.line.width');\n  if (newshapeLineWidth) {\n    var bgcolor = (layoutIn || {}).plot_bgcolor || '#FFF';\n    coerce('newshape.line.color', Color.contrast(bgcolor));\n    coerce('newshape.line.dash');\n  }\n  coerce('activeshape.fillcolor');\n  coerce('activeshape.opacity');\n};\n\n/***/ }),\n\n/***/ 60165:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_621460__) {\n\n\"use strict\";\n\n\nvar parseSvgPath = __nested_webpack_require_621460__(95616);\nvar constants = __nested_webpack_require_621460__(89995);\nvar CIRCLE_SIDES = constants.CIRCLE_SIDES;\nvar SQRT2 = constants.SQRT2;\nvar cartesianHelpers = __nested_webpack_require_621460__(75549);\nvar p2r = cartesianHelpers.p2r;\nvar r2p = cartesianHelpers.r2p;\nvar iC = [0, 3, 4, 5, 6, 1, 2];\nvar iQS = [0, 3, 4, 1, 2];\nexports.writePaths = function (polygons) {\n  var nI = polygons.length;\n  if (!nI) return 'M0,0Z';\n  var str = '';\n  for (var i = 0; i < nI; i++) {\n    var nJ = polygons[i].length;\n    for (var j = 0; j < nJ; j++) {\n      var w = polygons[i][j][0];\n      if (w === 'Z') {\n        str += 'Z';\n      } else {\n        var nK = polygons[i][j].length;\n        for (var k = 0; k < nK; k++) {\n          var realK = k;\n          if (w === 'Q' || w === 'S') {\n            realK = iQS[k];\n          } else if (w === 'C') {\n            realK = iC[k];\n          }\n          str += polygons[i][j][realK];\n          if (k > 0 && k < nK - 1) {\n            str += ',';\n          }\n        }\n      }\n    }\n  }\n  return str;\n};\nexports.readPaths = function (str, gd, plotinfo, isActiveShape) {\n  var cmd = parseSvgPath(str);\n  var polys = [];\n  var n = -1;\n  var newPoly = function () {\n    n++;\n    polys[n] = [];\n  };\n  var k;\n  var x = 0;\n  var y = 0;\n  var initX;\n  var initY;\n  var recStart = function () {\n    initX = x;\n    initY = y;\n  };\n  recStart();\n  for (var i = 0; i < cmd.length; i++) {\n    var newPos = [];\n    var x1, x2, y1, y2; // i.e. extra params for curves\n\n    var c = cmd[i][0];\n    var w = c;\n    switch (c) {\n      case 'M':\n        newPoly();\n        x = +cmd[i][1];\n        y = +cmd[i][2];\n        newPos.push([w, x, y]);\n        recStart();\n        break;\n      case 'Q':\n      case 'S':\n        x1 = +cmd[i][1];\n        y1 = +cmd[i][2];\n        x = +cmd[i][3];\n        y = +cmd[i][4];\n        newPos.push([w, x, y, x1, y1]); // -> iQS order\n        break;\n      case 'C':\n        x1 = +cmd[i][1];\n        y1 = +cmd[i][2];\n        x2 = +cmd[i][3];\n        y2 = +cmd[i][4];\n        x = +cmd[i][5];\n        y = +cmd[i][6];\n        newPos.push([w, x, y, x1, y1, x2, y2]); // -> iC order\n        break;\n      case 'T':\n      case 'L':\n        x = +cmd[i][1];\n        y = +cmd[i][2];\n        newPos.push([w, x, y]);\n        break;\n      case 'H':\n        w = 'L'; // convert to line (for now)\n        x = +cmd[i][1];\n        newPos.push([w, x, y]);\n        break;\n      case 'V':\n        w = 'L'; // convert to line (for now)\n        y = +cmd[i][1];\n        newPos.push([w, x, y]);\n        break;\n      case 'A':\n        w = 'L'; // convert to line to handle circle\n        var rx = +cmd[i][1];\n        var ry = +cmd[i][2];\n        if (!+cmd[i][4]) {\n          rx = -rx;\n          ry = -ry;\n        }\n        var cenX = x - rx;\n        var cenY = y;\n        for (k = 1; k <= CIRCLE_SIDES / 2; k++) {\n          var t = 2 * Math.PI * k / CIRCLE_SIDES;\n          newPos.push([w, cenX + rx * Math.cos(t), cenY + ry * Math.sin(t)]);\n        }\n        break;\n      case 'Z':\n        if (x !== initX || y !== initY) {\n          x = initX;\n          y = initY;\n          newPos.push([w, x, y]);\n        }\n        break;\n    }\n    var domain = (plotinfo || {}).domain;\n    var size = gd._fullLayout._size;\n    var xPixelSized = plotinfo && plotinfo.xsizemode === 'pixel';\n    var yPixelSized = plotinfo && plotinfo.ysizemode === 'pixel';\n    var noOffset = isActiveShape === false;\n    for (var j = 0; j < newPos.length; j++) {\n      for (k = 0; k + 2 < 7; k += 2) {\n        var _x = newPos[j][k + 1];\n        var _y = newPos[j][k + 2];\n        if (_x === undefined || _y === undefined) continue;\n        // keep track of end point for Z\n        x = _x;\n        y = _y;\n        if (plotinfo) {\n          if (plotinfo.xaxis && plotinfo.xaxis.p2r) {\n            if (noOffset) _x -= plotinfo.xaxis._offset;\n            if (xPixelSized) {\n              _x = r2p(plotinfo.xaxis, plotinfo.xanchor) + _x;\n            } else {\n              _x = p2r(plotinfo.xaxis, _x);\n            }\n          } else {\n            if (noOffset) _x -= size.l;\n            if (domain) _x = domain.x[0] + _x / size.w;else _x = _x / size.w;\n          }\n          if (plotinfo.yaxis && plotinfo.yaxis.p2r) {\n            if (noOffset) _y -= plotinfo.yaxis._offset;\n            if (yPixelSized) {\n              _y = r2p(plotinfo.yaxis, plotinfo.yanchor) - _y;\n            } else {\n              _y = p2r(plotinfo.yaxis, _y);\n            }\n          } else {\n            if (noOffset) _y -= size.t;\n            if (domain) _y = domain.y[1] - _y / size.h;else _y = 1 - _y / size.h;\n          }\n        }\n        newPos[j][k + 1] = _x;\n        newPos[j][k + 2] = _y;\n      }\n      polys[n].push(newPos[j].slice());\n    }\n  }\n  return polys;\n};\nfunction almostEq(a, b) {\n  return Math.abs(a - b) <= 1e-6;\n}\nfunction dist(a, b) {\n  var dx = b[1] - a[1];\n  var dy = b[2] - a[2];\n  return Math.sqrt(dx * dx + dy * dy);\n}\nexports.pointsOnRectangle = function (cell) {\n  var len = cell.length;\n  if (len !== 5) return false;\n  for (var j = 1; j < 3; j++) {\n    var e01 = cell[0][j] - cell[1][j];\n    var e32 = cell[3][j] - cell[2][j];\n    if (!almostEq(e01, e32)) return false;\n    var e03 = cell[0][j] - cell[3][j];\n    var e12 = cell[1][j] - cell[2][j];\n    if (!almostEq(e03, e12)) return false;\n  }\n\n  // N.B. rotated rectangles are not valid rects since rotation is not supported in shapes for now.\n  if (!almostEq(cell[0][1], cell[1][1]) && !almostEq(cell[0][1], cell[3][1])) return false;\n\n  // reject cases with zero area\n  return !!(dist(cell[0], cell[1]) * dist(cell[0], cell[3]));\n};\nexports.pointsOnEllipse = function (cell) {\n  var len = cell.length;\n  if (len !== CIRCLE_SIDES + 1) return false;\n\n  // opposite diagonals should be the same\n  len = CIRCLE_SIDES;\n  for (var i = 0; i < len; i++) {\n    var k = (len * 2 - i) % len;\n    var k2 = (len / 2 + k) % len;\n    var i2 = (len / 2 + i) % len;\n    if (!almostEq(dist(cell[i], cell[i2]), dist(cell[k], cell[k2]))) return false;\n  }\n  return true;\n};\nexports.handleEllipse = function (isEllipse, start, end) {\n  if (!isEllipse) return [start, end]; // i.e. case of line\n\n  var pos = exports.ellipseOver({\n    x0: start[0],\n    y0: start[1],\n    x1: end[0],\n    y1: end[1]\n  });\n  var cx = (pos.x1 + pos.x0) / 2;\n  var cy = (pos.y1 + pos.y0) / 2;\n  var rx = (pos.x1 - pos.x0) / 2;\n  var ry = (pos.y1 - pos.y0) / 2;\n\n  // make a circle when one dimension is zero\n  if (!rx) rx = ry = ry / SQRT2;\n  if (!ry) ry = rx = rx / SQRT2;\n  var cell = [];\n  for (var i = 0; i < CIRCLE_SIDES; i++) {\n    var t = i * 2 * Math.PI / CIRCLE_SIDES;\n    cell.push([cx + rx * Math.cos(t), cy + ry * Math.sin(t)]);\n  }\n  return cell;\n};\nexports.ellipseOver = function (pos) {\n  var x0 = pos.x0;\n  var y0 = pos.y0;\n  var x1 = pos.x1;\n  var y1 = pos.y1;\n  var dx = x1 - x0;\n  var dy = y1 - y0;\n  x0 -= dx;\n  y0 -= dy;\n  var cx = (x0 + x1) / 2;\n  var cy = (y0 + y1) / 2;\n  var scale = SQRT2;\n  dx *= scale;\n  dy *= scale;\n  return {\n    x0: cx - dx,\n    y0: cy - dy,\n    x1: cx + dx,\n    y1: cy + dy\n  };\n};\nexports.fixDatesForPaths = function (polygons, xaxis, yaxis) {\n  var xIsDate = xaxis.type === 'date';\n  var yIsDate = yaxis.type === 'date';\n  if (!xIsDate && !yIsDate) return polygons;\n  for (var i = 0; i < polygons.length; i++) {\n    for (var j = 0; j < polygons[i].length; j++) {\n      for (var k = 0; k + 2 < polygons[i][j].length; k += 2) {\n        if (xIsDate) polygons[i][j][k + 1] = polygons[i][j][k + 1].replace(' ', '_');\n        if (yIsDate) polygons[i][j][k + 2] = polygons[i][j][k + 2].replace(' ', '_');\n      }\n    }\n  }\n  return polygons;\n};\n\n/***/ }),\n\n/***/ 90551:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_629176__) {\n\n\"use strict\";\n\n\nvar dragHelpers = __nested_webpack_require_629176__(64505);\nvar drawMode = dragHelpers.drawMode;\nvar openMode = dragHelpers.openMode;\nvar constants = __nested_webpack_require_629176__(89995);\nvar i000 = constants.i000;\nvar i090 = constants.i090;\nvar i180 = constants.i180;\nvar i270 = constants.i270;\nvar cos45 = constants.cos45;\nvar sin45 = constants.sin45;\nvar cartesianHelpers = __nested_webpack_require_629176__(75549);\nvar p2r = cartesianHelpers.p2r;\nvar r2p = cartesianHelpers.r2p;\nvar handleOutline = __nested_webpack_require_629176__(51873);\nvar clearOutline = handleOutline.clearOutline;\nvar helpers = __nested_webpack_require_629176__(60165);\nvar readPaths = helpers.readPaths;\nvar writePaths = helpers.writePaths;\nvar ellipseOver = helpers.ellipseOver;\nvar fixDatesForPaths = helpers.fixDatesForPaths;\nmodule.exports = function newShapes(outlines, dragOptions) {\n  if (!outlines.length) return;\n  var e = outlines[0][0]; // pick first\n  if (!e) return;\n  var d = e.getAttribute('d');\n  var gd = dragOptions.gd;\n  var newStyle = gd._fullLayout.newshape;\n  var plotinfo = dragOptions.plotinfo;\n  var xaxis = plotinfo.xaxis;\n  var yaxis = plotinfo.yaxis;\n  var xPaper = !!plotinfo.domain || !plotinfo.xaxis;\n  var yPaper = !!plotinfo.domain || !plotinfo.yaxis;\n  var isActiveShape = dragOptions.isActiveShape;\n  var dragmode = dragOptions.dragmode;\n  var shapes = (gd.layout || {}).shapes || [];\n  if (!drawMode(dragmode) && isActiveShape !== undefined) {\n    var id = gd._fullLayout._activeShapeIndex;\n    if (id < shapes.length) {\n      switch (gd._fullLayout.shapes[id].type) {\n        case 'rect':\n          dragmode = 'drawrect';\n          break;\n        case 'circle':\n          dragmode = 'drawcircle';\n          break;\n        case 'line':\n          dragmode = 'drawline';\n          break;\n        case 'path':\n          var path = shapes[id].path || '';\n          if (path[path.length - 1] === 'Z') {\n            dragmode = 'drawclosedpath';\n          } else {\n            dragmode = 'drawopenpath';\n          }\n          break;\n      }\n    }\n  }\n  var isOpenMode = openMode(dragmode);\n  var polygons = readPaths(d, gd, plotinfo, isActiveShape);\n  var newShape = {\n    editable: true,\n    xref: xPaper ? 'paper' : xaxis._id,\n    yref: yPaper ? 'paper' : yaxis._id,\n    layer: newStyle.layer,\n    opacity: newStyle.opacity,\n    line: {\n      color: newStyle.line.color,\n      width: newStyle.line.width,\n      dash: newStyle.line.dash\n    }\n  };\n  if (!isOpenMode) {\n    newShape.fillcolor = newStyle.fillcolor;\n    newShape.fillrule = newStyle.fillrule;\n  }\n  var cell;\n  // line, rect and circle can be in one cell\n  // only define cell if there is single cell\n  if (polygons.length === 1) cell = polygons[0];\n  if (cell && cell.length === 5 &&\n  // ensure we only have 4 corners for a rect\n  dragmode === 'drawrect') {\n    newShape.type = 'rect';\n    newShape.x0 = cell[0][1];\n    newShape.y0 = cell[0][2];\n    newShape.x1 = cell[2][1];\n    newShape.y1 = cell[2][2];\n  } else if (cell && dragmode === 'drawline') {\n    newShape.type = 'line';\n    newShape.x0 = cell[0][1];\n    newShape.y0 = cell[0][2];\n    newShape.x1 = cell[1][1];\n    newShape.y1 = cell[1][2];\n  } else if (cell && dragmode === 'drawcircle') {\n    newShape.type = 'circle'; // an ellipse!\n\n    var xA = cell[i000][1];\n    var xB = cell[i090][1];\n    var xC = cell[i180][1];\n    var xD = cell[i270][1];\n    var yA = cell[i000][2];\n    var yB = cell[i090][2];\n    var yC = cell[i180][2];\n    var yD = cell[i270][2];\n    var xDateOrLog = plotinfo.xaxis && (plotinfo.xaxis.type === 'date' || plotinfo.xaxis.type === 'log');\n    var yDateOrLog = plotinfo.yaxis && (plotinfo.yaxis.type === 'date' || plotinfo.yaxis.type === 'log');\n    if (xDateOrLog) {\n      xA = r2p(plotinfo.xaxis, xA);\n      xB = r2p(plotinfo.xaxis, xB);\n      xC = r2p(plotinfo.xaxis, xC);\n      xD = r2p(plotinfo.xaxis, xD);\n    }\n    if (yDateOrLog) {\n      yA = r2p(plotinfo.yaxis, yA);\n      yB = r2p(plotinfo.yaxis, yB);\n      yC = r2p(plotinfo.yaxis, yC);\n      yD = r2p(plotinfo.yaxis, yD);\n    }\n    var x0 = (xB + xD) / 2;\n    var y0 = (yA + yC) / 2;\n    var rx = (xD - xB + xC - xA) / 2;\n    var ry = (yD - yB + yC - yA) / 2;\n    var pos = ellipseOver({\n      x0: x0,\n      y0: y0,\n      x1: x0 + rx * cos45,\n      y1: y0 + ry * sin45\n    });\n    if (xDateOrLog) {\n      pos.x0 = p2r(plotinfo.xaxis, pos.x0);\n      pos.x1 = p2r(plotinfo.xaxis, pos.x1);\n    }\n    if (yDateOrLog) {\n      pos.y0 = p2r(plotinfo.yaxis, pos.y0);\n      pos.y1 = p2r(plotinfo.yaxis, pos.y1);\n    }\n    newShape.x0 = pos.x0;\n    newShape.y0 = pos.y0;\n    newShape.x1 = pos.x1;\n    newShape.y1 = pos.y1;\n  } else {\n    newShape.type = 'path';\n    if (xaxis && yaxis) fixDatesForPaths(polygons, xaxis, yaxis);\n    newShape.path = writePaths(polygons);\n    cell = null;\n  }\n  clearOutline(gd);\n  var editHelpers = dragOptions.editHelpers;\n  var modifyItem = (editHelpers || {}).modifyItem;\n  var allShapes = [];\n  for (var q = 0; q < shapes.length; q++) {\n    var beforeEdit = gd._fullLayout.shapes[q];\n    allShapes[q] = beforeEdit._input;\n    if (isActiveShape !== undefined && q === gd._fullLayout._activeShapeIndex) {\n      var afterEdit = newShape;\n      switch (beforeEdit.type) {\n        case 'line':\n        case 'rect':\n        case 'circle':\n          modifyItem('x0', afterEdit.x0);\n          modifyItem('x1', afterEdit.x1);\n          modifyItem('y0', afterEdit.y0);\n          modifyItem('y1', afterEdit.y1);\n          break;\n        case 'path':\n          modifyItem('path', afterEdit.path);\n          break;\n      }\n    }\n  }\n  if (isActiveShape === undefined) {\n    allShapes.push(newShape); // add new shape\n    return allShapes;\n  }\n  return editHelpers ? editHelpers.getUpdateObj() : {};\n};\n\n/***/ }),\n\n/***/ 51873:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nfunction clearOutlineControllers(gd) {\n  var zoomLayer = gd._fullLayout._zoomlayer;\n  if (zoomLayer) {\n    zoomLayer.selectAll('.outline-controllers').remove();\n  }\n}\nfunction clearOutline(gd) {\n  var zoomLayer = gd._fullLayout._zoomlayer;\n  if (zoomLayer) {\n    // until we get around to persistent selections, remove the outline\n    // here. The selection itself will be removed when the plot redraws\n    // at the end.\n    zoomLayer.selectAll('.select-outline').remove();\n  }\n  gd._fullLayout._outlining = false;\n}\nmodule.exports = {\n  clearOutlineControllers: clearOutlineControllers,\n  clearOutline: clearOutline\n};\n\n/***/ }),\n\n/***/ 30477:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_635654__) {\n\n\"use strict\";\n\n\nvar constants = __nested_webpack_require_635654__(21459);\nvar Lib = __nested_webpack_require_635654__(71828);\nvar Axes = __nested_webpack_require_635654__(89298);\n\n// special position conversion functions... category axis positions can't be\n// specified by their data values, because they don't make a continuous mapping.\n// so these have to be specified in terms of the category serial numbers,\n// but can take fractional values. Other axis types we specify position based on\n// the actual data values.\n// TODO: in V3.0 (when log axis ranges are in data units) range and shape position\n// will be identical, so rangeToShapePosition and shapePositionToRange can be\n// removed entirely.\n\nexports.rangeToShapePosition = function (ax) {\n  return ax.type === 'log' ? ax.r2d : function (v) {\n    return v;\n  };\n};\nexports.shapePositionToRange = function (ax) {\n  return ax.type === 'log' ? ax.d2r : function (v) {\n    return v;\n  };\n};\nexports.decodeDate = function (convertToPx) {\n  return function (v) {\n    if (v.replace) v = v.replace('_', ' ');\n    return convertToPx(v);\n  };\n};\nexports.encodeDate = function (convertToDate) {\n  return function (v) {\n    return convertToDate(v).replace(' ', '_');\n  };\n};\nexports.extractPathCoords = function (path, paramsToUse, isRaw) {\n  var extractedCoordinates = [];\n  var segments = path.match(constants.segmentRE);\n  segments.forEach(function (segment) {\n    var relevantParamIdx = paramsToUse[segment.charAt(0)].drawn;\n    if (relevantParamIdx === undefined) return;\n    var params = segment.substr(1).match(constants.paramRE);\n    if (!params || params.length < relevantParamIdx) return;\n    var str = params[relevantParamIdx];\n    var pos = isRaw ? str : Lib.cleanNumber(str);\n    extractedCoordinates.push(pos);\n  });\n  return extractedCoordinates;\n};\nexports.getDataToPixel = function (gd, axis, isVertical, refType) {\n  var gs = gd._fullLayout._size;\n  var dataToPixel;\n  if (axis) {\n    if (refType === 'domain') {\n      dataToPixel = function (v) {\n        return axis._length * (isVertical ? 1 - v : v) + axis._offset;\n      };\n    } else {\n      var d2r = exports.shapePositionToRange(axis);\n      dataToPixel = function (v) {\n        return axis._offset + axis.r2p(d2r(v, true));\n      };\n      if (axis.type === 'date') dataToPixel = exports.decodeDate(dataToPixel);\n    }\n  } else if (isVertical) {\n    dataToPixel = function (v) {\n      return gs.t + gs.h * (1 - v);\n    };\n  } else {\n    dataToPixel = function (v) {\n      return gs.l + gs.w * v;\n    };\n  }\n  return dataToPixel;\n};\nexports.getPixelToData = function (gd, axis, isVertical, opt) {\n  var gs = gd._fullLayout._size;\n  var pixelToData;\n  if (axis) {\n    if (opt === 'domain') {\n      pixelToData = function (p) {\n        var q = (p - axis._offset) / axis._length;\n        return isVertical ? 1 - q : q;\n      };\n    } else {\n      var r2d = exports.rangeToShapePosition(axis);\n      pixelToData = function (p) {\n        return r2d(axis.p2r(p - axis._offset));\n      };\n    }\n  } else if (isVertical) {\n    pixelToData = function (p) {\n      return 1 - (p - gs.t) / gs.h;\n    };\n  } else {\n    pixelToData = function (p) {\n      return (p - gs.l) / gs.w;\n    };\n  }\n  return pixelToData;\n};\n\n/**\n * Based on the given stroke width, rounds the passed\n * position value to represent either a full or half pixel.\n *\n * In case of an odd stroke width (e.g. 1), this measure ensures\n * that a stroke positioned at the returned position isn't rendered\n * blurry due to anti-aliasing.\n *\n * In case of an even stroke width (e.g. 2), this measure ensures\n * that the position value is transformed to a full pixel value\n * so that anti-aliasing doesn't take effect either.\n *\n * @param {number} pos The raw position value to be transformed\n * @param {number} strokeWidth The stroke width\n * @returns {number} either an integer or a .5 decimal number\n */\nexports.roundPositionForSharpStrokeRendering = function (pos, strokeWidth) {\n  var strokeWidthIsOdd = Math.round(strokeWidth % 2) === 1;\n  var posValAsInt = Math.round(pos);\n  return strokeWidthIsOdd ? posValAsInt + 0.5 : posValAsInt;\n};\nexports.makeShapesOptionsAndPlotinfo = function (gd, index) {\n  var options = gd._fullLayout.shapes[index] || {};\n  var plotinfo = gd._fullLayout._plots[options.xref + options.yref];\n  var hasPlotinfo = !!plotinfo;\n  if (hasPlotinfo) {\n    plotinfo._hadPlotinfo = true;\n  } else {\n    plotinfo = {};\n    if (options.xref && options.xref !== 'paper') plotinfo.xaxis = gd._fullLayout[options.xref + 'axis'];\n    if (options.yref && options.yref !== 'paper') plotinfo.yaxis = gd._fullLayout[options.yref + 'axis'];\n  }\n  plotinfo.xsizemode = options.xsizemode;\n  plotinfo.ysizemode = options.ysizemode;\n  plotinfo.xanchor = options.xanchor;\n  plotinfo.yanchor = options.yanchor;\n  return {\n    options: options,\n    plotinfo: plotinfo\n  };\n};\n\n// TODO: move to selections helpers?\nexports.makeSelectionsOptionsAndPlotinfo = function (gd, index) {\n  var options = gd._fullLayout.selections[index] || {};\n  var plotinfo = gd._fullLayout._plots[options.xref + options.yref];\n  var hasPlotinfo = !!plotinfo;\n  if (hasPlotinfo) {\n    plotinfo._hadPlotinfo = true;\n  } else {\n    plotinfo = {};\n    if (options.xref) plotinfo.xaxis = gd._fullLayout[options.xref + 'axis'];\n    if (options.yref) plotinfo.yaxis = gd._fullLayout[options.yref + 'axis'];\n  }\n  return {\n    options: options,\n    plotinfo: plotinfo\n  };\n};\nexports.getPathString = function (gd, options) {\n  var type = options.type;\n  var xRefType = Axes.getRefType(options.xref);\n  var yRefType = Axes.getRefType(options.yref);\n  var xa = Axes.getFromId(gd, options.xref);\n  var ya = Axes.getFromId(gd, options.yref);\n  var gs = gd._fullLayout._size;\n  var x2r, x2p, y2r, y2p;\n  var x0, x1, y0, y1;\n  if (xa) {\n    if (xRefType === 'domain') {\n      x2p = function (v) {\n        return xa._offset + xa._length * v;\n      };\n    } else {\n      x2r = exports.shapePositionToRange(xa);\n      x2p = function (v) {\n        return xa._offset + xa.r2p(x2r(v, true));\n      };\n    }\n  } else {\n    x2p = function (v) {\n      return gs.l + gs.w * v;\n    };\n  }\n  if (ya) {\n    if (yRefType === 'domain') {\n      y2p = function (v) {\n        return ya._offset + ya._length * (1 - v);\n      };\n    } else {\n      y2r = exports.shapePositionToRange(ya);\n      y2p = function (v) {\n        return ya._offset + ya.r2p(y2r(v, true));\n      };\n    }\n  } else {\n    y2p = function (v) {\n      return gs.t + gs.h * (1 - v);\n    };\n  }\n  if (type === 'path') {\n    if (xa && xa.type === 'date') x2p = exports.decodeDate(x2p);\n    if (ya && ya.type === 'date') y2p = exports.decodeDate(y2p);\n    return convertPath(options, x2p, y2p);\n  }\n  if (options.xsizemode === 'pixel') {\n    var xAnchorPos = x2p(options.xanchor);\n    x0 = xAnchorPos + options.x0;\n    x1 = xAnchorPos + options.x1;\n  } else {\n    x0 = x2p(options.x0);\n    x1 = x2p(options.x1);\n  }\n  if (options.ysizemode === 'pixel') {\n    var yAnchorPos = y2p(options.yanchor);\n    y0 = yAnchorPos - options.y0;\n    y1 = yAnchorPos - options.y1;\n  } else {\n    y0 = y2p(options.y0);\n    y1 = y2p(options.y1);\n  }\n  if (type === 'line') return 'M' + x0 + ',' + y0 + 'L' + x1 + ',' + y1;\n  if (type === 'rect') return 'M' + x0 + ',' + y0 + 'H' + x1 + 'V' + y1 + 'H' + x0 + 'Z';\n\n  // circle\n  var cx = (x0 + x1) / 2;\n  var cy = (y0 + y1) / 2;\n  var rx = Math.abs(cx - x0);\n  var ry = Math.abs(cy - y0);\n  var rArc = 'A' + rx + ',' + ry;\n  var rightPt = cx + rx + ',' + cy;\n  var topPt = cx + ',' + (cy - ry);\n  return 'M' + rightPt + rArc + ' 0 1,1 ' + topPt + rArc + ' 0 0,1 ' + rightPt + 'Z';\n};\nfunction convertPath(options, x2p, y2p) {\n  var pathIn = options.path;\n  var xSizemode = options.xsizemode;\n  var ySizemode = options.ysizemode;\n  var xAnchor = options.xanchor;\n  var yAnchor = options.yanchor;\n  return pathIn.replace(constants.segmentRE, function (segment) {\n    var paramNumber = 0;\n    var segmentType = segment.charAt(0);\n    var xParams = constants.paramIsX[segmentType];\n    var yParams = constants.paramIsY[segmentType];\n    var nParams = constants.numParams[segmentType];\n    var paramString = segment.substr(1).replace(constants.paramRE, function (param) {\n      if (xParams[paramNumber]) {\n        if (xSizemode === 'pixel') param = x2p(xAnchor) + Number(param);else param = x2p(param);\n      } else if (yParams[paramNumber]) {\n        if (ySizemode === 'pixel') param = y2p(yAnchor) - Number(param);else param = y2p(param);\n      }\n      paramNumber++;\n      if (paramNumber > nParams) param = 'X';\n      return param;\n    });\n    if (paramNumber > nParams) {\n      paramString = paramString.replace(/[\\s,]*X.*/, '');\n      Lib.log('Ignoring extra params in segment ' + segment);\n    }\n    return segmentType + paramString;\n  });\n}\n\n/***/ }),\n\n/***/ 89853:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_644478__) {\n\n\"use strict\";\n\n\nvar drawModule = __nested_webpack_require_644478__(34031);\nmodule.exports = {\n  moduleType: 'component',\n  name: 'shapes',\n  layoutAttributes: __nested_webpack_require_644478__(89827),\n  supplyLayoutDefaults: __nested_webpack_require_644478__(84726),\n  supplyDrawNewShapeDefaults: __nested_webpack_require_644478__(45547),\n  includeBasePlot: __nested_webpack_require_644478__(76325)('shapes'),\n  calcAutorange: __nested_webpack_require_644478__(5627),\n  draw: drawModule.draw,\n  drawOne: drawModule.drawOne\n};\n\n/***/ }),\n\n/***/ 75067:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_645019__) {\n\n\"use strict\";\n\n\nvar fontAttrs = __nested_webpack_require_645019__(41940);\nvar padAttrs = __nested_webpack_require_645019__(35025);\nvar extendDeepAll = (__nested_webpack_require_645019__(1426).extendDeepAll);\nvar overrideAll = (__nested_webpack_require_645019__(30962).overrideAll);\nvar animationAttrs = __nested_webpack_require_645019__(85594);\nvar templatedArray = (__nested_webpack_require_645019__(44467).templatedArray);\nvar constants = __nested_webpack_require_645019__(98292);\nvar stepsAttrs = templatedArray('step', {\n  visible: {\n    valType: 'boolean',\n    dflt: true\n  },\n  method: {\n    valType: 'enumerated',\n    values: ['restyle', 'relayout', 'animate', 'update', 'skip'],\n    dflt: 'restyle'\n  },\n  args: {\n    valType: 'info_array',\n    freeLength: true,\n    items: [{\n      valType: 'any'\n    }, {\n      valType: 'any'\n    }, {\n      valType: 'any'\n    }]\n  },\n  label: {\n    valType: 'string'\n  },\n  value: {\n    valType: 'string'\n  },\n  execute: {\n    valType: 'boolean',\n    dflt: true\n  }\n});\nmodule.exports = overrideAll(templatedArray('slider', {\n  visible: {\n    valType: 'boolean',\n    dflt: true\n  },\n  active: {\n    valType: 'number',\n    min: 0,\n    dflt: 0\n  },\n  steps: stepsAttrs,\n  lenmode: {\n    valType: 'enumerated',\n    values: ['fraction', 'pixels'],\n    dflt: 'fraction'\n  },\n  len: {\n    valType: 'number',\n    min: 0,\n    dflt: 1\n  },\n  x: {\n    valType: 'number',\n    min: -2,\n    max: 3,\n    dflt: 0\n  },\n  pad: extendDeepAll(padAttrs({\n    editType: 'arraydraw'\n  }), {}, {\n    t: {\n      dflt: 20\n    }\n  }),\n  xanchor: {\n    valType: 'enumerated',\n    values: ['auto', 'left', 'center', 'right'],\n    dflt: 'left'\n  },\n  y: {\n    valType: 'number',\n    min: -2,\n    max: 3,\n    dflt: 0\n  },\n  yanchor: {\n    valType: 'enumerated',\n    values: ['auto', 'top', 'middle', 'bottom'],\n    dflt: 'top'\n  },\n  transition: {\n    duration: {\n      valType: 'number',\n      min: 0,\n      dflt: 150\n    },\n    easing: {\n      valType: 'enumerated',\n      values: animationAttrs.transition.easing.values,\n      dflt: 'cubic-in-out'\n    }\n  },\n  currentvalue: {\n    visible: {\n      valType: 'boolean',\n      dflt: true\n    },\n    xanchor: {\n      valType: 'enumerated',\n      values: ['left', 'center', 'right'],\n      dflt: 'left'\n    },\n    offset: {\n      valType: 'number',\n      dflt: 10\n    },\n    prefix: {\n      valType: 'string'\n    },\n    suffix: {\n      valType: 'string'\n    },\n    font: fontAttrs({})\n  },\n  font: fontAttrs({}),\n  activebgcolor: {\n    valType: 'color',\n    dflt: constants.gripBgActiveColor\n  },\n  bgcolor: {\n    valType: 'color',\n    dflt: constants.railBgColor\n  },\n  bordercolor: {\n    valType: 'color',\n    dflt: constants.railBorderColor\n  },\n  borderwidth: {\n    valType: 'number',\n    min: 0,\n    dflt: constants.railBorderWidth\n  },\n  ticklen: {\n    valType: 'number',\n    min: 0,\n    dflt: constants.tickLength\n  },\n  tickcolor: {\n    valType: 'color',\n    dflt: constants.tickColor\n  },\n  tickwidth: {\n    valType: 'number',\n    min: 0,\n    dflt: 1\n  },\n  minorticklen: {\n    valType: 'number',\n    min: 0,\n    dflt: constants.minorTickLength\n  }\n}), 'arraydraw', 'from-root');\n\n/***/ }),\n\n/***/ 98292:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  // layout attribute name\n  name: 'sliders',\n  // class names\n  containerClassName: 'slider-container',\n  groupClassName: 'slider-group',\n  inputAreaClass: 'slider-input-area',\n  railRectClass: 'slider-rail-rect',\n  railTouchRectClass: 'slider-rail-touch-rect',\n  gripRectClass: 'slider-grip-rect',\n  tickRectClass: 'slider-tick-rect',\n  inputProxyClass: 'slider-input-proxy',\n  labelsClass: 'slider-labels',\n  labelGroupClass: 'slider-label-group',\n  labelClass: 'slider-label',\n  currentValueClass: 'slider-current-value',\n  railHeight: 5,\n  // DOM attribute name in button group keeping track\n  // of active update menu\n  menuIndexAttrName: 'slider-active-index',\n  // id root pass to Plots.autoMargin\n  autoMarginIdRoot: 'slider-',\n  // min item width / height\n  minWidth: 30,\n  minHeight: 30,\n  // padding around item text\n  textPadX: 40,\n  // arrow offset off right edge\n  arrowOffsetX: 4,\n  railRadius: 2,\n  railWidth: 5,\n  railBorder: 4,\n  railBorderWidth: 1,\n  railBorderColor: '#bec8d9',\n  railBgColor: '#f8fafc',\n  // The distance of the rail from the edge of the touchable area\n  // Slightly less than the step inset because of the curved edges\n  // of the rail\n  railInset: 8,\n  // The distance from the extremal tick marks to the edge of the\n  // touchable area. This is basically the same as the grip radius,\n  // but for other styles it wouldn't really need to be.\n  stepInset: 10,\n  gripRadius: 10,\n  gripWidth: 20,\n  gripHeight: 20,\n  gripBorder: 20,\n  gripBorderWidth: 1,\n  gripBorderColor: '#bec8d9',\n  gripBgColor: '#f6f8fa',\n  gripBgActiveColor: '#dbdde0',\n  labelPadding: 8,\n  labelOffset: 0,\n  tickWidth: 1,\n  tickColor: '#333',\n  tickOffset: 25,\n  tickLength: 7,\n  minorTickOffset: 25,\n  minorTickColor: '#333',\n  minorTickLength: 4,\n  // Extra space below the current value label:\n  currentValuePadding: 8,\n  currentValueInset: 0\n};\n\n/***/ }),\n\n/***/ 12343:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_650118__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_650118__(71828);\nvar handleArrayContainerDefaults = __nested_webpack_require_650118__(85501);\nvar attributes = __nested_webpack_require_650118__(75067);\nvar constants = __nested_webpack_require_650118__(98292);\nvar name = constants.name;\nvar stepAttrs = attributes.steps;\nmodule.exports = function slidersDefaults(layoutIn, layoutOut) {\n  handleArrayContainerDefaults(layoutIn, layoutOut, {\n    name: name,\n    handleItemDefaults: sliderDefaults\n  });\n};\nfunction sliderDefaults(sliderIn, sliderOut, layoutOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(sliderIn, sliderOut, attributes, attr, dflt);\n  }\n  var steps = handleArrayContainerDefaults(sliderIn, sliderOut, {\n    name: 'steps',\n    handleItemDefaults: stepDefaults\n  });\n  var stepCount = 0;\n  for (var i = 0; i < steps.length; i++) {\n    if (steps[i].visible) stepCount++;\n  }\n  var visible;\n  // If it has fewer than two options, it's not really a slider\n  if (stepCount < 2) visible = sliderOut.visible = false;else visible = coerce('visible');\n  if (!visible) return;\n  sliderOut._stepCount = stepCount;\n  var visSteps = sliderOut._visibleSteps = Lib.filterVisible(steps);\n  var active = coerce('active');\n  if (!(steps[active] || {}).visible) sliderOut.active = visSteps[0]._index;\n  coerce('x');\n  coerce('y');\n  Lib.noneOrAll(sliderIn, sliderOut, ['x', 'y']);\n  coerce('xanchor');\n  coerce('yanchor');\n  coerce('len');\n  coerce('lenmode');\n  coerce('pad.t');\n  coerce('pad.r');\n  coerce('pad.b');\n  coerce('pad.l');\n  Lib.coerceFont(coerce, 'font', layoutOut.font);\n  var currentValueIsVisible = coerce('currentvalue.visible');\n  if (currentValueIsVisible) {\n    coerce('currentvalue.xanchor');\n    coerce('currentvalue.prefix');\n    coerce('currentvalue.suffix');\n    coerce('currentvalue.offset');\n    Lib.coerceFont(coerce, 'currentvalue.font', sliderOut.font);\n  }\n  coerce('transition.duration');\n  coerce('transition.easing');\n  coerce('bgcolor');\n  coerce('activebgcolor');\n  coerce('bordercolor');\n  coerce('borderwidth');\n  coerce('ticklen');\n  coerce('tickwidth');\n  coerce('tickcolor');\n  coerce('minorticklen');\n}\nfunction stepDefaults(valueIn, valueOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(valueIn, valueOut, stepAttrs, attr, dflt);\n  }\n  var visible;\n  if (valueIn.method !== 'skip' && !Array.isArray(valueIn.args)) {\n    visible = valueOut.visible = false;\n  } else visible = coerce('visible');\n  if (visible) {\n    coerce('method');\n    coerce('args');\n    var label = coerce('label', 'step-' + valueOut._index);\n    coerce('value', label);\n    coerce('execute');\n  }\n}\n\n/***/ }),\n\n/***/ 44504:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_652799__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_652799__(39898);\nvar Plots = __nested_webpack_require_652799__(74875);\nvar Color = __nested_webpack_require_652799__(7901);\nvar Drawing = __nested_webpack_require_652799__(91424);\nvar Lib = __nested_webpack_require_652799__(71828);\nvar strTranslate = Lib.strTranslate;\nvar svgTextUtils = __nested_webpack_require_652799__(63893);\nvar arrayEditor = (__nested_webpack_require_652799__(44467).arrayEditor);\nvar constants = __nested_webpack_require_652799__(98292);\nvar alignmentConstants = __nested_webpack_require_652799__(18783);\nvar LINE_SPACING = alignmentConstants.LINE_SPACING;\nvar FROM_TL = alignmentConstants.FROM_TL;\nvar FROM_BR = alignmentConstants.FROM_BR;\nmodule.exports = function draw(gd) {\n  var staticPlot = gd._context.staticPlot;\n  var fullLayout = gd._fullLayout;\n  var sliderData = makeSliderData(fullLayout, gd);\n\n  // draw a container for *all* sliders:\n  var sliders = fullLayout._infolayer.selectAll('g.' + constants.containerClassName).data(sliderData.length > 0 ? [0] : []);\n  sliders.enter().append('g').classed(constants.containerClassName, true).style('cursor', staticPlot ? null : 'ew-resize');\n  function clearSlider(sliderOpts) {\n    if (sliderOpts._commandObserver) {\n      sliderOpts._commandObserver.remove();\n      delete sliderOpts._commandObserver;\n    }\n\n    // Most components don't need to explicitly remove autoMargin, because\n    // marginPushers does this - but slider updates don't go through\n    // a full replot so we need to explicitly remove it.\n    Plots.autoMargin(gd, autoMarginId(sliderOpts));\n  }\n  sliders.exit().each(function () {\n    d3.select(this).selectAll('g.' + constants.groupClassName).each(clearSlider);\n  }).remove();\n\n  // Return early if no menus visible:\n  if (sliderData.length === 0) return;\n  var sliderGroups = sliders.selectAll('g.' + constants.groupClassName).data(sliderData, keyFunction);\n  sliderGroups.enter().append('g').classed(constants.groupClassName, true);\n  sliderGroups.exit().each(clearSlider).remove();\n\n  // Find the dimensions of the sliders:\n  for (var i = 0; i < sliderData.length; i++) {\n    var sliderOpts = sliderData[i];\n    findDimensions(gd, sliderOpts);\n  }\n  sliderGroups.each(function (sliderOpts) {\n    var gSlider = d3.select(this);\n    computeLabelSteps(sliderOpts);\n    Plots.manageCommandObserver(gd, sliderOpts, sliderOpts._visibleSteps, function (data) {\n      // NB: Same as below. This is *not* always the same as sliderOpts since\n      // if a new set of steps comes in, the reference in this callback would\n      // be invalid. We need to refetch it from the slider group, which is\n      // the join data that creates this slider. So if this slider still exists,\n      // the group should be valid, *to the best of my knowledge.* If not,\n      // we'd have to look it up by d3 data join index/key.\n      var opts = gSlider.data()[0];\n      if (opts.active === data.index) return;\n      if (opts._dragging) return;\n      setActive(gd, gSlider, opts, data.index, false, true);\n    });\n    drawSlider(gd, d3.select(this), sliderOpts);\n  });\n};\nfunction autoMarginId(sliderOpts) {\n  return constants.autoMarginIdRoot + sliderOpts._index;\n}\n\n// This really only just filters by visibility:\nfunction makeSliderData(fullLayout, gd) {\n  var contOpts = fullLayout[constants.name];\n  var sliderData = [];\n  for (var i = 0; i < contOpts.length; i++) {\n    var item = contOpts[i];\n    if (!item.visible) continue;\n    item._gd = gd;\n    sliderData.push(item);\n  }\n  return sliderData;\n}\n\n// This is set in the defaults step:\nfunction keyFunction(opts) {\n  return opts._index;\n}\n\n// Compute the dimensions (mutates sliderOpts):\nfunction findDimensions(gd, sliderOpts) {\n  var sliderLabels = Drawing.tester.selectAll('g.' + constants.labelGroupClass).data(sliderOpts._visibleSteps);\n  sliderLabels.enter().append('g').classed(constants.labelGroupClass, true);\n\n  // loop over fake buttons to find width / height\n  var maxLabelWidth = 0;\n  var labelHeight = 0;\n  sliderLabels.each(function (stepOpts) {\n    var labelGroup = d3.select(this);\n    var text = drawLabel(labelGroup, {\n      step: stepOpts\n    }, sliderOpts);\n    var textNode = text.node();\n    if (textNode) {\n      var bBox = Drawing.bBox(textNode);\n      labelHeight = Math.max(labelHeight, bBox.height);\n      maxLabelWidth = Math.max(maxLabelWidth, bBox.width);\n    }\n  });\n  sliderLabels.remove();\n  var dims = sliderOpts._dims = {};\n  dims.inputAreaWidth = Math.max(constants.railWidth, constants.gripHeight);\n\n  // calculate some overall dimensions - some of these are needed for\n  // calculating the currentValue dimensions\n  var graphSize = gd._fullLayout._size;\n  dims.lx = graphSize.l + graphSize.w * sliderOpts.x;\n  dims.ly = graphSize.t + graphSize.h * (1 - sliderOpts.y);\n  if (sliderOpts.lenmode === 'fraction') {\n    // fraction:\n    dims.outerLength = Math.round(graphSize.w * sliderOpts.len);\n  } else {\n    // pixels:\n    dims.outerLength = sliderOpts.len;\n  }\n\n  // The length of the rail, *excluding* padding on either end:\n  dims.inputAreaStart = 0;\n  dims.inputAreaLength = Math.round(dims.outerLength - sliderOpts.pad.l - sliderOpts.pad.r);\n  var textableInputLength = dims.inputAreaLength - 2 * constants.stepInset;\n  var availableSpacePerLabel = textableInputLength / (sliderOpts._stepCount - 1);\n  var computedSpacePerLabel = maxLabelWidth + constants.labelPadding;\n  dims.labelStride = Math.max(1, Math.ceil(computedSpacePerLabel / availableSpacePerLabel));\n  dims.labelHeight = labelHeight;\n\n  // loop over all possible values for currentValue to find the\n  // area we need for it\n  dims.currentValueMaxWidth = 0;\n  dims.currentValueHeight = 0;\n  dims.currentValueTotalHeight = 0;\n  dims.currentValueMaxLines = 1;\n  if (sliderOpts.currentvalue.visible) {\n    // Get the dimensions of the current value label:\n    var dummyGroup = Drawing.tester.append('g');\n    sliderLabels.each(function (stepOpts) {\n      var curValPrefix = drawCurrentValue(dummyGroup, sliderOpts, stepOpts.label);\n      var curValSize = curValPrefix.node() && Drawing.bBox(curValPrefix.node()) || {\n        width: 0,\n        height: 0\n      };\n      var lines = svgTextUtils.lineCount(curValPrefix);\n      dims.currentValueMaxWidth = Math.max(dims.currentValueMaxWidth, Math.ceil(curValSize.width));\n      dims.currentValueHeight = Math.max(dims.currentValueHeight, Math.ceil(curValSize.height));\n      dims.currentValueMaxLines = Math.max(dims.currentValueMaxLines, lines);\n    });\n    dims.currentValueTotalHeight = dims.currentValueHeight + sliderOpts.currentvalue.offset;\n    dummyGroup.remove();\n  }\n  dims.height = dims.currentValueTotalHeight + constants.tickOffset + sliderOpts.ticklen + constants.labelOffset + dims.labelHeight + sliderOpts.pad.t + sliderOpts.pad.b;\n  var xanchor = 'left';\n  if (Lib.isRightAnchor(sliderOpts)) {\n    dims.lx -= dims.outerLength;\n    xanchor = 'right';\n  }\n  if (Lib.isCenterAnchor(sliderOpts)) {\n    dims.lx -= dims.outerLength / 2;\n    xanchor = 'center';\n  }\n  var yanchor = 'top';\n  if (Lib.isBottomAnchor(sliderOpts)) {\n    dims.ly -= dims.height;\n    yanchor = 'bottom';\n  }\n  if (Lib.isMiddleAnchor(sliderOpts)) {\n    dims.ly -= dims.height / 2;\n    yanchor = 'middle';\n  }\n  dims.outerLength = Math.ceil(dims.outerLength);\n  dims.height = Math.ceil(dims.height);\n  dims.lx = Math.round(dims.lx);\n  dims.ly = Math.round(dims.ly);\n  var marginOpts = {\n    y: sliderOpts.y,\n    b: dims.height * FROM_BR[yanchor],\n    t: dims.height * FROM_TL[yanchor]\n  };\n  if (sliderOpts.lenmode === 'fraction') {\n    marginOpts.l = 0;\n    marginOpts.xl = sliderOpts.x - sliderOpts.len * FROM_TL[xanchor];\n    marginOpts.r = 0;\n    marginOpts.xr = sliderOpts.x + sliderOpts.len * FROM_BR[xanchor];\n  } else {\n    marginOpts.x = sliderOpts.x;\n    marginOpts.l = dims.outerLength * FROM_TL[xanchor];\n    marginOpts.r = dims.outerLength * FROM_BR[xanchor];\n  }\n  Plots.autoMargin(gd, autoMarginId(sliderOpts), marginOpts);\n}\nfunction drawSlider(gd, sliderGroup, sliderOpts) {\n  // This is related to the other long notes in this file regarding what happens\n  // when slider steps disappear. This particular fix handles what happens when\n  // the *current* slider step is removed. The drawing functions will error out\n  // when they fail to find it, so the fix for now is that it will just draw the\n  // slider in the first position but will not execute the command.\n  if (!(sliderOpts.steps[sliderOpts.active] || {}).visible) {\n    sliderOpts.active = sliderOpts._visibleSteps[0]._index;\n  }\n\n  // These are carefully ordered for proper z-ordering:\n  sliderGroup.call(drawCurrentValue, sliderOpts).call(drawRail, sliderOpts).call(drawLabelGroup, sliderOpts).call(drawTicks, sliderOpts).call(drawTouchRect, gd, sliderOpts).call(drawGrip, gd, sliderOpts);\n  var dims = sliderOpts._dims;\n\n  // Position the rectangle:\n  Drawing.setTranslate(sliderGroup, dims.lx + sliderOpts.pad.l, dims.ly + sliderOpts.pad.t);\n  sliderGroup.call(setGripPosition, sliderOpts, false);\n  sliderGroup.call(drawCurrentValue, sliderOpts);\n}\nfunction drawCurrentValue(sliderGroup, sliderOpts, valueOverride) {\n  if (!sliderOpts.currentvalue.visible) return;\n  var dims = sliderOpts._dims;\n  var x0, textAnchor;\n  switch (sliderOpts.currentvalue.xanchor) {\n    case 'right':\n      // This is anchored left and adjusted by the width of the longest label\n      // so that the prefix doesn't move. The goal of this is to emphasize\n      // what's actually changing and make the update less distracting.\n      x0 = dims.inputAreaLength - constants.currentValueInset - dims.currentValueMaxWidth;\n      textAnchor = 'left';\n      break;\n    case 'center':\n      x0 = dims.inputAreaLength * 0.5;\n      textAnchor = 'middle';\n      break;\n    default:\n      x0 = constants.currentValueInset;\n      textAnchor = 'left';\n  }\n  var text = Lib.ensureSingle(sliderGroup, 'text', constants.labelClass, function (s) {\n    s.attr({\n      'text-anchor': textAnchor,\n      'data-notex': 1\n    });\n  });\n  var str = sliderOpts.currentvalue.prefix ? sliderOpts.currentvalue.prefix : '';\n  if (typeof valueOverride === 'string') {\n    str += valueOverride;\n  } else {\n    var curVal = sliderOpts.steps[sliderOpts.active].label;\n    var _meta = sliderOpts._gd._fullLayout._meta;\n    if (_meta) curVal = Lib.templateString(curVal, _meta);\n    str += curVal;\n  }\n  if (sliderOpts.currentvalue.suffix) {\n    str += sliderOpts.currentvalue.suffix;\n  }\n  text.call(Drawing.font, sliderOpts.currentvalue.font).text(str).call(svgTextUtils.convertToTspans, sliderOpts._gd);\n  var lines = svgTextUtils.lineCount(text);\n  var y0 = (dims.currentValueMaxLines + 1 - lines) * sliderOpts.currentvalue.font.size * LINE_SPACING;\n  svgTextUtils.positionText(text, x0, y0);\n  return text;\n}\nfunction drawGrip(sliderGroup, gd, sliderOpts) {\n  var grip = Lib.ensureSingle(sliderGroup, 'rect', constants.gripRectClass, function (s) {\n    s.call(attachGripEvents, gd, sliderGroup, sliderOpts).style('pointer-events', 'all');\n  });\n  grip.attr({\n    width: constants.gripWidth,\n    height: constants.gripHeight,\n    rx: constants.gripRadius,\n    ry: constants.gripRadius\n  }).call(Color.stroke, sliderOpts.bordercolor).call(Color.fill, sliderOpts.bgcolor).style('stroke-width', sliderOpts.borderwidth + 'px');\n}\nfunction drawLabel(item, data, sliderOpts) {\n  var text = Lib.ensureSingle(item, 'text', constants.labelClass, function (s) {\n    s.attr({\n      'text-anchor': 'middle',\n      'data-notex': 1\n    });\n  });\n  var tx = data.step.label;\n  var _meta = sliderOpts._gd._fullLayout._meta;\n  if (_meta) tx = Lib.templateString(tx, _meta);\n  text.call(Drawing.font, sliderOpts.font).text(tx).call(svgTextUtils.convertToTspans, sliderOpts._gd);\n  return text;\n}\nfunction drawLabelGroup(sliderGroup, sliderOpts) {\n  var labels = Lib.ensureSingle(sliderGroup, 'g', constants.labelsClass);\n  var dims = sliderOpts._dims;\n  var labelItems = labels.selectAll('g.' + constants.labelGroupClass).data(dims.labelSteps);\n  labelItems.enter().append('g').classed(constants.labelGroupClass, true);\n  labelItems.exit().remove();\n  labelItems.each(function (d) {\n    var item = d3.select(this);\n    item.call(drawLabel, d, sliderOpts);\n    Drawing.setTranslate(item, normalizedValueToPosition(sliderOpts, d.fraction), constants.tickOffset + sliderOpts.ticklen +\n    // position is the baseline of the top line of text only, even\n    // if the label spans multiple lines\n    sliderOpts.font.size * LINE_SPACING + constants.labelOffset + dims.currentValueTotalHeight);\n  });\n}\nfunction handleInput(gd, sliderGroup, sliderOpts, normalizedPosition, doTransition) {\n  var quantizedPosition = Math.round(normalizedPosition * (sliderOpts._stepCount - 1));\n  var quantizedIndex = sliderOpts._visibleSteps[quantizedPosition]._index;\n  if (quantizedIndex !== sliderOpts.active) {\n    setActive(gd, sliderGroup, sliderOpts, quantizedIndex, true, doTransition);\n  }\n}\nfunction setActive(gd, sliderGroup, sliderOpts, index, doCallback, doTransition) {\n  var previousActive = sliderOpts.active;\n  sliderOpts.active = index;\n\n  // due to templating, it's possible this slider doesn't even exist yet\n  arrayEditor(gd.layout, constants.name, sliderOpts).applyUpdate('active', index);\n  var step = sliderOpts.steps[sliderOpts.active];\n  sliderGroup.call(setGripPosition, sliderOpts, doTransition);\n  sliderGroup.call(drawCurrentValue, sliderOpts);\n  gd.emit('plotly_sliderchange', {\n    slider: sliderOpts,\n    step: sliderOpts.steps[sliderOpts.active],\n    interaction: doCallback,\n    previousActive: previousActive\n  });\n  if (step && step.method && doCallback) {\n    if (sliderGroup._nextMethod) {\n      // If we've already queued up an update, just overwrite it with the most recent:\n      sliderGroup._nextMethod.step = step;\n      sliderGroup._nextMethod.doCallback = doCallback;\n      sliderGroup._nextMethod.doTransition = doTransition;\n    } else {\n      sliderGroup._nextMethod = {\n        step: step,\n        doCallback: doCallback,\n        doTransition: doTransition\n      };\n      sliderGroup._nextMethodRaf = window.requestAnimationFrame(function () {\n        var _step = sliderGroup._nextMethod.step;\n        if (!_step.method) return;\n        if (_step.execute) {\n          Plots.executeAPICommand(gd, _step.method, _step.args);\n        }\n        sliderGroup._nextMethod = null;\n        sliderGroup._nextMethodRaf = null;\n      });\n    }\n  }\n}\nfunction attachGripEvents(item, gd, sliderGroup) {\n  if (gd._context.staticPlot) return;\n  var node = sliderGroup.node();\n  var $gd = d3.select(gd);\n\n  // NB: This is *not* the same as sliderOpts itself! These callbacks\n  // are in a closure so this array won't actually be correct if the\n  // steps have changed since this was initialized. The sliderGroup,\n  // however, has not changed since that *is* the slider, so it must\n  // be present to receive mouse events.\n  function getSliderOpts() {\n    return sliderGroup.data()[0];\n  }\n  function mouseDownHandler() {\n    var sliderOpts = getSliderOpts();\n    gd.emit('plotly_sliderstart', {\n      slider: sliderOpts\n    });\n    var grip = sliderGroup.select('.' + constants.gripRectClass);\n    d3.event.stopPropagation();\n    d3.event.preventDefault();\n    grip.call(Color.fill, sliderOpts.activebgcolor);\n    var normalizedPosition = positionToNormalizedValue(sliderOpts, d3.mouse(node)[0]);\n    handleInput(gd, sliderGroup, sliderOpts, normalizedPosition, true);\n    sliderOpts._dragging = true;\n    function mouseMoveHandler() {\n      var sliderOpts = getSliderOpts();\n      var normalizedPosition = positionToNormalizedValue(sliderOpts, d3.mouse(node)[0]);\n      handleInput(gd, sliderGroup, sliderOpts, normalizedPosition, false);\n    }\n    $gd.on('mousemove', mouseMoveHandler);\n    $gd.on('touchmove', mouseMoveHandler);\n    function mouseUpHandler() {\n      var sliderOpts = getSliderOpts();\n      sliderOpts._dragging = false;\n      grip.call(Color.fill, sliderOpts.bgcolor);\n      $gd.on('mouseup', null);\n      $gd.on('mousemove', null);\n      $gd.on('touchend', null);\n      $gd.on('touchmove', null);\n      gd.emit('plotly_sliderend', {\n        slider: sliderOpts,\n        step: sliderOpts.steps[sliderOpts.active]\n      });\n    }\n    $gd.on('mouseup', mouseUpHandler);\n    $gd.on('touchend', mouseUpHandler);\n  }\n  item.on('mousedown', mouseDownHandler);\n  item.on('touchstart', mouseDownHandler);\n}\nfunction drawTicks(sliderGroup, sliderOpts) {\n  var tick = sliderGroup.selectAll('rect.' + constants.tickRectClass).data(sliderOpts._visibleSteps);\n  var dims = sliderOpts._dims;\n  tick.enter().append('rect').classed(constants.tickRectClass, true);\n  tick.exit().remove();\n  tick.attr({\n    width: sliderOpts.tickwidth + 'px',\n    'shape-rendering': 'crispEdges'\n  });\n  tick.each(function (d, i) {\n    var isMajor = i % dims.labelStride === 0;\n    var item = d3.select(this);\n    item.attr({\n      height: isMajor ? sliderOpts.ticklen : sliderOpts.minorticklen\n    }).call(Color.fill, isMajor ? sliderOpts.tickcolor : sliderOpts.tickcolor);\n    Drawing.setTranslate(item, normalizedValueToPosition(sliderOpts, i / (sliderOpts._stepCount - 1)) - 0.5 * sliderOpts.tickwidth, (isMajor ? constants.tickOffset : constants.minorTickOffset) + dims.currentValueTotalHeight);\n  });\n}\nfunction computeLabelSteps(sliderOpts) {\n  var dims = sliderOpts._dims;\n  dims.labelSteps = [];\n  var nsteps = sliderOpts._stepCount;\n  for (var i = 0; i < nsteps; i += dims.labelStride) {\n    dims.labelSteps.push({\n      fraction: i / (nsteps - 1),\n      step: sliderOpts._visibleSteps[i]\n    });\n  }\n}\nfunction setGripPosition(sliderGroup, sliderOpts, doTransition) {\n  var grip = sliderGroup.select('rect.' + constants.gripRectClass);\n  var quantizedIndex = 0;\n  for (var i = 0; i < sliderOpts._stepCount; i++) {\n    if (sliderOpts._visibleSteps[i]._index === sliderOpts.active) {\n      quantizedIndex = i;\n      break;\n    }\n  }\n  var x = normalizedValueToPosition(sliderOpts, quantizedIndex / (sliderOpts._stepCount - 1));\n\n  // If this is true, then *this component* is already invoking its own command\n  // and has triggered its own animation.\n  if (sliderOpts._invokingCommand) return;\n  var el = grip;\n  if (doTransition && sliderOpts.transition.duration > 0) {\n    el = el.transition().duration(sliderOpts.transition.duration).ease(sliderOpts.transition.easing);\n  }\n\n  // Drawing.setTranslate doesn't work here because of the transition duck-typing.\n  // It's also not necessary because there are no other transitions to preserve.\n  el.attr('transform', strTranslate(x - constants.gripWidth * 0.5, sliderOpts._dims.currentValueTotalHeight));\n}\n\n// Convert a number from [0-1] to a pixel position relative to the slider group container:\nfunction normalizedValueToPosition(sliderOpts, normalizedPosition) {\n  var dims = sliderOpts._dims;\n  return dims.inputAreaStart + constants.stepInset + (dims.inputAreaLength - 2 * constants.stepInset) * Math.min(1, Math.max(0, normalizedPosition));\n}\n\n// Convert a position relative to the slider group to a nubmer in [0, 1]\nfunction positionToNormalizedValue(sliderOpts, position) {\n  var dims = sliderOpts._dims;\n  return Math.min(1, Math.max(0, (position - constants.stepInset - dims.inputAreaStart) / (dims.inputAreaLength - 2 * constants.stepInset - 2 * dims.inputAreaStart)));\n}\nfunction drawTouchRect(sliderGroup, gd, sliderOpts) {\n  var dims = sliderOpts._dims;\n  var rect = Lib.ensureSingle(sliderGroup, 'rect', constants.railTouchRectClass, function (s) {\n    s.call(attachGripEvents, gd, sliderGroup, sliderOpts).style('pointer-events', 'all');\n  });\n  rect.attr({\n    width: dims.inputAreaLength,\n    height: Math.max(dims.inputAreaWidth, constants.tickOffset + sliderOpts.ticklen + dims.labelHeight)\n  }).call(Color.fill, sliderOpts.bgcolor).attr('opacity', 0);\n  Drawing.setTranslate(rect, 0, dims.currentValueTotalHeight);\n}\nfunction drawRail(sliderGroup, sliderOpts) {\n  var dims = sliderOpts._dims;\n  var computedLength = dims.inputAreaLength - constants.railInset * 2;\n  var rect = Lib.ensureSingle(sliderGroup, 'rect', constants.railRectClass);\n  rect.attr({\n    width: computedLength,\n    height: constants.railWidth,\n    rx: constants.railRadius,\n    ry: constants.railRadius,\n    'shape-rendering': 'crispEdges'\n  }).call(Color.stroke, sliderOpts.bordercolor).call(Color.fill, sliderOpts.bgcolor).style('stroke-width', sliderOpts.borderwidth + 'px');\n  Drawing.setTranslate(rect, constants.railInset, (dims.inputAreaWidth - constants.railWidth) * 0.5 + dims.currentValueTotalHeight);\n}\n\n/***/ }),\n\n/***/ 23243:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_673264__) {\n\n\"use strict\";\n\n\nvar constants = __nested_webpack_require_673264__(98292);\nmodule.exports = {\n  moduleType: 'component',\n  name: constants.name,\n  layoutAttributes: __nested_webpack_require_673264__(75067),\n  supplyLayoutDefaults: __nested_webpack_require_673264__(12343),\n  draw: __nested_webpack_require_673264__(44504)\n};\n\n/***/ }),\n\n/***/ 92998:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_673631__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_673631__(39898);\nvar isNumeric = __nested_webpack_require_673631__(92770);\nvar Plots = __nested_webpack_require_673631__(74875);\nvar Registry = __nested_webpack_require_673631__(73972);\nvar Lib = __nested_webpack_require_673631__(71828);\nvar strTranslate = Lib.strTranslate;\nvar Drawing = __nested_webpack_require_673631__(91424);\nvar Color = __nested_webpack_require_673631__(7901);\nvar svgTextUtils = __nested_webpack_require_673631__(63893);\nvar interactConstants = __nested_webpack_require_673631__(37822);\nvar OPPOSITE_SIDE = (__nested_webpack_require_673631__(18783).OPPOSITE_SIDE);\nvar numStripRE = / [XY][0-9]* /;\n\n/**\n * Titles - (re)draw titles on the axes and plot:\n * @param {DOM element} gd - the graphDiv\n * @param {string} titleClass - the css class of this title\n * @param {object} options - how and what to draw\n *      propContainer - the layout object containing `title` and `titlefont`\n *          attributes that apply to this title\n *      propName - the full name of the title property (for Plotly.relayout)\n *      [traceIndex] - include only if this property applies to one trace\n *          (such as a colorbar title) - then editing pipes to Plotly.restyle\n *          instead of Plotly.relayout\n *      placeholder - placeholder text for an empty editable title\n *      [avoid] {object} - include if this title should move to avoid other elements\n *          selection - d3 selection of elements to avoid\n *          side - which direction to move if there is a conflict\n *          [offsetLeft] - if these elements are subject to a translation\n *              wrt the title element\n *          [offsetTop]\n *      attributes {object} - position and alignment attributes\n *          x - pixels\n *          y - pixels\n *          text-anchor - start|middle|end\n *      transform {object} - how to transform the title after positioning\n *          rotate - degrees\n *          offset - shift up/down in the rotated frame (unused?)\n *      containerGroup - if an svg <g> element already exists to hold this\n *          title, include here. Otherwise it will go in fullLayout._infolayer\n *      _meta {object (optional} - meta key-value to for title with\n *          Lib.templateString, default to fullLayout._meta, if not provided\n *\n *  @return {selection} d3 selection of title container group\n */\nfunction draw(gd, titleClass, options) {\n  var cont = options.propContainer;\n  var prop = options.propName;\n  var placeholder = options.placeholder;\n  var traceIndex = options.traceIndex;\n  var avoid = options.avoid || {};\n  var attributes = options.attributes;\n  var transform = options.transform;\n  var group = options.containerGroup;\n  var fullLayout = gd._fullLayout;\n  var opacity = 1;\n  var isplaceholder = false;\n  var title = cont.title;\n  var txt = (title && title.text ? title.text : '').trim();\n  var font = title && title.font ? title.font : {};\n  var fontFamily = font.family;\n  var fontSize = font.size;\n  var fontColor = font.color;\n\n  // only make this title editable if we positively identify its property\n  // as one that has editing enabled.\n  var editAttr;\n  if (prop === 'title.text') editAttr = 'titleText';else if (prop.indexOf('axis') !== -1) editAttr = 'axisTitleText';else if (prop.indexOf('colorbar' !== -1)) editAttr = 'colorbarTitleText';\n  var editable = gd._context.edits[editAttr];\n  if (txt === '') opacity = 0;\n  // look for placeholder text while stripping out numbers from eg X2, Y3\n  // this is just for backward compatibility with the old version that had\n  // \"Click to enter X2 title\" and may have gotten saved in some old plots,\n  // we don't want this to show up when these are displayed.\n  else if (txt.replace(numStripRE, ' % ') === placeholder.replace(numStripRE, ' % ')) {\n    opacity = 0.2;\n    isplaceholder = true;\n    if (!editable) txt = '';\n  }\n  if (options._meta) {\n    txt = Lib.templateString(txt, options._meta);\n  } else if (fullLayout._meta) {\n    txt = Lib.templateString(txt, fullLayout._meta);\n  }\n  var elShouldExist = txt || editable;\n  var hColorbarMoveTitle;\n  if (!group) {\n    group = Lib.ensureSingle(fullLayout._infolayer, 'g', 'g-' + titleClass);\n    hColorbarMoveTitle = fullLayout._hColorbarMoveTitle;\n  }\n  var el = group.selectAll('text').data(elShouldExist ? [0] : []);\n  el.enter().append('text');\n  el.text(txt)\n  // this is hacky, but convertToTspans uses the class\n  // to determine whether to rotate mathJax...\n  // so we need to clear out any old class and put the\n  // correct one (only relevant for colorbars, at least\n  // for now) - ie don't use .classed\n  .attr('class', titleClass);\n  el.exit().remove();\n  if (!elShouldExist) return group;\n  function titleLayout(titleEl) {\n    Lib.syncOrAsync([drawTitle, scootTitle], titleEl);\n  }\n  function drawTitle(titleEl) {\n    var transformVal;\n    if (!transform && hColorbarMoveTitle) {\n      transform = {};\n    }\n    if (transform) {\n      transformVal = '';\n      if (transform.rotate) {\n        transformVal += 'rotate(' + [transform.rotate, attributes.x, attributes.y] + ')';\n      }\n      if (transform.offset || hColorbarMoveTitle) {\n        transformVal += strTranslate(0, (transform.offset || 0) - (hColorbarMoveTitle || 0));\n      }\n    } else {\n      transformVal = null;\n    }\n    titleEl.attr('transform', transformVal);\n    titleEl.style({\n      'font-family': fontFamily,\n      'font-size': d3.round(fontSize, 2) + 'px',\n      fill: Color.rgb(fontColor),\n      opacity: opacity * Color.opacity(fontColor),\n      'font-weight': Plots.fontWeight\n    }).attr(attributes).call(svgTextUtils.convertToTspans, gd);\n    return Plots.previousPromises(gd);\n  }\n  function scootTitle(titleElIn) {\n    var titleGroup = d3.select(titleElIn.node().parentNode);\n    if (avoid && avoid.selection && avoid.side && txt) {\n      titleGroup.attr('transform', null);\n\n      // move toward avoid.side (= left, right, top, bottom) if needed\n      // can include pad (pixels, default 2)\n      var backside = OPPOSITE_SIDE[avoid.side];\n      var shiftSign = avoid.side === 'left' || avoid.side === 'top' ? -1 : 1;\n      var pad = isNumeric(avoid.pad) ? avoid.pad : 2;\n      var titlebb = Drawing.bBox(titleGroup.node());\n      var paperbb = {\n        left: 0,\n        top: 0,\n        right: fullLayout.width,\n        bottom: fullLayout.height\n      };\n      var maxshift = avoid.maxShift || shiftSign * (paperbb[avoid.side] - titlebb[avoid.side]);\n      var shift = 0;\n\n      // Prevent the title going off the paper\n      if (maxshift < 0) {\n        shift = maxshift;\n      } else {\n        // so we don't have to offset each avoided element,\n        // give the title the opposite offset\n        var offsetLeft = avoid.offsetLeft || 0;\n        var offsetTop = avoid.offsetTop || 0;\n        titlebb.left -= offsetLeft;\n        titlebb.right -= offsetLeft;\n        titlebb.top -= offsetTop;\n        titlebb.bottom -= offsetTop;\n\n        // iterate over a set of elements (avoid.selection)\n        // to avoid collisions with\n        avoid.selection.each(function () {\n          var avoidbb = Drawing.bBox(this);\n          if (Lib.bBoxIntersect(titlebb, avoidbb, pad)) {\n            shift = Math.max(shift, shiftSign * (avoidbb[avoid.side] - titlebb[backside]) + pad);\n          }\n        });\n        shift = Math.min(maxshift, shift);\n        // Keeping track of this for calculation of full axis size if needed\n        cont._titleScoot = Math.abs(shift);\n      }\n      if (shift > 0 || maxshift < 0) {\n        var shiftTemplate = {\n          left: [-shift, 0],\n          right: [shift, 0],\n          top: [0, -shift],\n          bottom: [0, shift]\n        }[avoid.side];\n        titleGroup.attr('transform', strTranslate(shiftTemplate[0], shiftTemplate[1]));\n      }\n    }\n  }\n  el.call(titleLayout);\n  function setPlaceholder() {\n    opacity = 0;\n    isplaceholder = true;\n    el.text(placeholder).on('mouseover.opacity', function () {\n      d3.select(this).transition().duration(interactConstants.SHOW_PLACEHOLDER).style('opacity', 1);\n    }).on('mouseout.opacity', function () {\n      d3.select(this).transition().duration(interactConstants.HIDE_PLACEHOLDER).style('opacity', 0);\n    });\n  }\n  if (editable) {\n    if (!txt) setPlaceholder();else el.on('.opacity', null);\n    el.call(svgTextUtils.makeEditable, {\n      gd: gd\n    }).on('edit', function (text) {\n      if (traceIndex !== undefined) {\n        Registry.call('_guiRestyle', gd, prop, text, traceIndex);\n      } else {\n        Registry.call('_guiRelayout', gd, prop, text);\n      }\n    }).on('cancel', function () {\n      this.text(this.attr('data-unformatted')).call(titleLayout);\n    }).on('input', function (d) {\n      this.text(d || ' ').call(svgTextUtils.positionText, attributes.x, attributes.y);\n    });\n  }\n  el.classed('js-placeholder', isplaceholder);\n  return group;\n}\nmodule.exports = {\n  draw: draw\n};\n\n/***/ }),\n\n/***/ 7163:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_682465__) {\n\n\"use strict\";\n\n\nvar fontAttrs = __nested_webpack_require_682465__(41940);\nvar colorAttrs = __nested_webpack_require_682465__(22399);\nvar extendFlat = (__nested_webpack_require_682465__(1426).extendFlat);\nvar overrideAll = (__nested_webpack_require_682465__(30962).overrideAll);\nvar padAttrs = __nested_webpack_require_682465__(35025);\nvar templatedArray = (__nested_webpack_require_682465__(44467).templatedArray);\nvar buttonsAttrs = templatedArray('button', {\n  visible: {\n    valType: 'boolean'\n  },\n  method: {\n    valType: 'enumerated',\n    values: ['restyle', 'relayout', 'animate', 'update', 'skip'],\n    dflt: 'restyle'\n  },\n  args: {\n    valType: 'info_array',\n    freeLength: true,\n    items: [{\n      valType: 'any'\n    }, {\n      valType: 'any'\n    }, {\n      valType: 'any'\n    }]\n  },\n  args2: {\n    valType: 'info_array',\n    freeLength: true,\n    items: [{\n      valType: 'any'\n    }, {\n      valType: 'any'\n    }, {\n      valType: 'any'\n    }]\n  },\n  label: {\n    valType: 'string',\n    dflt: ''\n  },\n  execute: {\n    valType: 'boolean',\n    dflt: true\n  }\n});\nmodule.exports = overrideAll(templatedArray('updatemenu', {\n  _arrayAttrRegexps: [/^updatemenus\\[(0|[1-9][0-9]+)\\]\\.buttons/],\n  visible: {\n    valType: 'boolean'\n  },\n  type: {\n    valType: 'enumerated',\n    values: ['dropdown', 'buttons'],\n    dflt: 'dropdown'\n  },\n  direction: {\n    valType: 'enumerated',\n    values: ['left', 'right', 'up', 'down'],\n    dflt: 'down'\n  },\n  active: {\n    valType: 'integer',\n    min: -1,\n    dflt: 0\n  },\n  showactive: {\n    valType: 'boolean',\n    dflt: true\n  },\n  buttons: buttonsAttrs,\n  x: {\n    valType: 'number',\n    min: -2,\n    max: 3,\n    dflt: -0.05\n  },\n  xanchor: {\n    valType: 'enumerated',\n    values: ['auto', 'left', 'center', 'right'],\n    dflt: 'right'\n  },\n  y: {\n    valType: 'number',\n    min: -2,\n    max: 3,\n    dflt: 1\n  },\n  yanchor: {\n    valType: 'enumerated',\n    values: ['auto', 'top', 'middle', 'bottom'],\n    dflt: 'top'\n  },\n  pad: extendFlat(padAttrs({\n    editType: 'arraydraw'\n  }), {}),\n  font: fontAttrs({}),\n  bgcolor: {\n    valType: 'color'\n  },\n  bordercolor: {\n    valType: 'color',\n    dflt: colorAttrs.borderLine\n  },\n  borderwidth: {\n    valType: 'number',\n    min: 0,\n    dflt: 1,\n    editType: 'arraydraw'\n  }\n}), 'arraydraw', 'from-root');\n\n/***/ }),\n\n/***/ 75909:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  // layout attribute name\n  name: 'updatemenus',\n  // class names\n  containerClassName: 'updatemenu-container',\n  headerGroupClassName: 'updatemenu-header-group',\n  headerClassName: 'updatemenu-header',\n  headerArrowClassName: 'updatemenu-header-arrow',\n  dropdownButtonGroupClassName: 'updatemenu-dropdown-button-group',\n  dropdownButtonClassName: 'updatemenu-dropdown-button',\n  buttonClassName: 'updatemenu-button',\n  itemRectClassName: 'updatemenu-item-rect',\n  itemTextClassName: 'updatemenu-item-text',\n  // DOM attribute name in button group keeping track\n  // of active update menu\n  menuIndexAttrName: 'updatemenu-active-index',\n  // id root pass to Plots.autoMargin\n  autoMarginIdRoot: 'updatemenu-',\n  // options when 'active: -1'\n  blankHeaderOpts: {\n    label: '  '\n  },\n  // min item width / height\n  minWidth: 30,\n  minHeight: 30,\n  // padding around item text\n  textPadX: 24,\n  arrowPadX: 16,\n  // item rect radii\n  rx: 2,\n  ry: 2,\n  // item  text x offset off left edge\n  textOffsetX: 12,\n  // item  text y offset (w.r.t. middle)\n  textOffsetY: 3,\n  // arrow offset off right edge\n  arrowOffsetX: 4,\n  // gap between header and buttons\n  gapButtonHeader: 5,\n  // gap between between buttons\n  gapButton: 2,\n  // color given to active buttons\n  activeColor: '#F4FAFF',\n  // color given to hovered buttons\n  hoverColor: '#F4FAFF',\n  // symbol for menu open arrow\n  arrowSymbol: {\n    left: '◄',\n    right: '►',\n    up: '▲',\n    down: '▼'\n  }\n};\n\n/***/ }),\n\n/***/ 64897:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_686333__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_686333__(71828);\nvar handleArrayContainerDefaults = __nested_webpack_require_686333__(85501);\nvar attributes = __nested_webpack_require_686333__(7163);\nvar constants = __nested_webpack_require_686333__(75909);\nvar name = constants.name;\nvar buttonAttrs = attributes.buttons;\nmodule.exports = function updateMenusDefaults(layoutIn, layoutOut) {\n  var opts = {\n    name: name,\n    handleItemDefaults: menuDefaults\n  };\n  handleArrayContainerDefaults(layoutIn, layoutOut, opts);\n};\nfunction menuDefaults(menuIn, menuOut, layoutOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(menuIn, menuOut, attributes, attr, dflt);\n  }\n  var buttons = handleArrayContainerDefaults(menuIn, menuOut, {\n    name: 'buttons',\n    handleItemDefaults: buttonDefaults\n  });\n  var visible = coerce('visible', buttons.length > 0);\n  if (!visible) return;\n  coerce('active');\n  coerce('direction');\n  coerce('type');\n  coerce('showactive');\n  coerce('x');\n  coerce('y');\n  Lib.noneOrAll(menuIn, menuOut, ['x', 'y']);\n  coerce('xanchor');\n  coerce('yanchor');\n  coerce('pad.t');\n  coerce('pad.r');\n  coerce('pad.b');\n  coerce('pad.l');\n  Lib.coerceFont(coerce, 'font', layoutOut.font);\n  coerce('bgcolor', layoutOut.paper_bgcolor);\n  coerce('bordercolor');\n  coerce('borderwidth');\n}\nfunction buttonDefaults(buttonIn, buttonOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(buttonIn, buttonOut, buttonAttrs, attr, dflt);\n  }\n  var visible = coerce('visible', buttonIn.method === 'skip' || Array.isArray(buttonIn.args));\n  if (visible) {\n    coerce('method');\n    coerce('args');\n    coerce('args2');\n    coerce('label');\n    coerce('execute');\n  }\n}\n\n/***/ }),\n\n/***/ 13689:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_688071__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_688071__(39898);\nvar Plots = __nested_webpack_require_688071__(74875);\nvar Color = __nested_webpack_require_688071__(7901);\nvar Drawing = __nested_webpack_require_688071__(91424);\nvar Lib = __nested_webpack_require_688071__(71828);\nvar svgTextUtils = __nested_webpack_require_688071__(63893);\nvar arrayEditor = (__nested_webpack_require_688071__(44467).arrayEditor);\nvar LINE_SPACING = (__nested_webpack_require_688071__(18783).LINE_SPACING);\nvar constants = __nested_webpack_require_688071__(75909);\nvar ScrollBox = __nested_webpack_require_688071__(25849);\nmodule.exports = function draw(gd) {\n  var fullLayout = gd._fullLayout;\n  var menuData = Lib.filterVisible(fullLayout[constants.name]);\n\n  /* Update menu data is bound to the header-group.\n   * The items in the header group are always present.\n   *\n   * Upon clicking on a header its corresponding button\n   * data is bound to the button-group.\n   *\n   * We draw all headers in one group before all buttons\n   * so that the buttons *always* appear above the headers.\n   *\n   * Note that only one set of buttons are visible at once.\n   *\n   * <g container />\n   *\n   *     <g header-group />\n   *         <g item header />\n   *         <text item header-arrow />\n   *     <g header-group />\n   *         <g item header />\n   *         <text item header-arrow />\n   *     ...\n   *\n   *     <g button-group />\n   *         <g item button />\n   *         <g item button />\n   *         ...\n   */\n\n  function clearAutoMargin(menuOpts) {\n    Plots.autoMargin(gd, autoMarginId(menuOpts));\n  }\n\n  // draw update menu container\n  var menus = fullLayout._menulayer.selectAll('g.' + constants.containerClassName).data(menuData.length > 0 ? [0] : []);\n  menus.enter().append('g').classed(constants.containerClassName, true).style('cursor', 'pointer');\n  menus.exit().each(function () {\n    // Most components don't need to explicitly remove autoMargin, because\n    // marginPushers does this - but updatemenu updates don't go through\n    // a full replot so we need to explicitly remove it.\n    // This is for removing *all* updatemenus, removing individuals is\n    // handled below, in headerGroups.exit\n    d3.select(this).selectAll('g.' + constants.headerGroupClassName).each(clearAutoMargin);\n  }).remove();\n\n  // return early if no update menus are visible\n  if (menuData.length === 0) return;\n\n  // join header group\n  var headerGroups = menus.selectAll('g.' + constants.headerGroupClassName).data(menuData, keyFunction);\n  headerGroups.enter().append('g').classed(constants.headerGroupClassName, true);\n\n  // draw dropdown button container\n  var gButton = Lib.ensureSingle(menus, 'g', constants.dropdownButtonGroupClassName, function (s) {\n    s.style('pointer-events', 'all');\n  });\n\n  // find dimensions before plotting anything (this mutates menuOpts)\n  for (var i = 0; i < menuData.length; i++) {\n    var menuOpts = menuData[i];\n    findDimensions(gd, menuOpts);\n  }\n\n  // setup scrollbox\n  var scrollBoxId = 'updatemenus' + fullLayout._uid;\n  var scrollBox = new ScrollBox(gd, gButton, scrollBoxId);\n\n  // remove exiting header, remove dropped buttons and reset margins\n  if (headerGroups.enter().size()) {\n    // make sure gButton is on top of all headers\n    gButton.node().parentNode.appendChild(gButton.node());\n    gButton.call(removeAllButtons);\n  }\n  headerGroups.exit().each(function (menuOpts) {\n    gButton.call(removeAllButtons);\n    clearAutoMargin(menuOpts);\n  }).remove();\n\n  // draw headers!\n  headerGroups.each(function (menuOpts) {\n    var gHeader = d3.select(this);\n    var _gButton = menuOpts.type === 'dropdown' ? gButton : null;\n    Plots.manageCommandObserver(gd, menuOpts, menuOpts.buttons, function (data) {\n      setActive(gd, menuOpts, menuOpts.buttons[data.index], gHeader, _gButton, scrollBox, data.index, true);\n    });\n    if (menuOpts.type === 'dropdown') {\n      drawHeader(gd, gHeader, gButton, scrollBox, menuOpts);\n\n      // if this menu is active, update the dropdown container\n      if (isActive(gButton, menuOpts)) {\n        drawButtons(gd, gHeader, gButton, scrollBox, menuOpts);\n      }\n    } else {\n      drawButtons(gd, gHeader, null, null, menuOpts);\n    }\n  });\n};\n\n// Note that '_index' is set at the default step,\n// it corresponds to the menu index in the user layout update menu container.\n// Because a menu can be set invisible,\n// this is a more 'consistent' field than the index in the menuData.\nfunction keyFunction(menuOpts) {\n  return menuOpts._index;\n}\nfunction isFolded(gButton) {\n  return +gButton.attr(constants.menuIndexAttrName) === -1;\n}\nfunction isActive(gButton, menuOpts) {\n  return +gButton.attr(constants.menuIndexAttrName) === menuOpts._index;\n}\nfunction setActive(gd, menuOpts, buttonOpts, gHeader, gButton, scrollBox, buttonIndex, isSilentUpdate) {\n  // update 'active' attribute in menuOpts\n  menuOpts.active = buttonIndex;\n\n  // due to templating, it's possible this slider doesn't even exist yet\n  arrayEditor(gd.layout, constants.name, menuOpts).applyUpdate('active', buttonIndex);\n  if (menuOpts.type === 'buttons') {\n    drawButtons(gd, gHeader, null, null, menuOpts);\n  } else if (menuOpts.type === 'dropdown') {\n    // fold up buttons and redraw header\n    gButton.attr(constants.menuIndexAttrName, '-1');\n    drawHeader(gd, gHeader, gButton, scrollBox, menuOpts);\n    if (!isSilentUpdate) {\n      drawButtons(gd, gHeader, gButton, scrollBox, menuOpts);\n    }\n  }\n}\nfunction drawHeader(gd, gHeader, gButton, scrollBox, menuOpts) {\n  var header = Lib.ensureSingle(gHeader, 'g', constants.headerClassName, function (s) {\n    s.style('pointer-events', 'all');\n  });\n  var dims = menuOpts._dims;\n  var active = menuOpts.active;\n  var headerOpts = menuOpts.buttons[active] || constants.blankHeaderOpts;\n  var posOpts = {\n    y: menuOpts.pad.t,\n    yPad: 0,\n    x: menuOpts.pad.l,\n    xPad: 0,\n    index: 0\n  };\n  var positionOverrides = {\n    width: dims.headerWidth,\n    height: dims.headerHeight\n  };\n  header.call(drawItem, menuOpts, headerOpts, gd).call(setItemPosition, menuOpts, posOpts, positionOverrides);\n\n  // draw drop arrow at the right edge\n  var arrow = Lib.ensureSingle(gHeader, 'text', constants.headerArrowClassName, function (s) {\n    s.attr('text-anchor', 'end').call(Drawing.font, menuOpts.font).text(constants.arrowSymbol[menuOpts.direction]);\n  });\n  arrow.attr({\n    x: dims.headerWidth - constants.arrowOffsetX + menuOpts.pad.l,\n    y: dims.headerHeight / 2 + constants.textOffsetY + menuOpts.pad.t\n  });\n  header.on('click', function () {\n    gButton.call(removeAllButtons, String(isActive(gButton, menuOpts) ? -1 : menuOpts._index));\n    drawButtons(gd, gHeader, gButton, scrollBox, menuOpts);\n  });\n  header.on('mouseover', function () {\n    header.call(styleOnMouseOver);\n  });\n  header.on('mouseout', function () {\n    header.call(styleOnMouseOut, menuOpts);\n  });\n\n  // translate header group\n  Drawing.setTranslate(gHeader, dims.lx, dims.ly);\n}\nfunction drawButtons(gd, gHeader, gButton, scrollBox, menuOpts) {\n  // If this is a set of buttons, set pointer events = all since we play\n  // some minor games with which container is which in order to simplify\n  // the drawing of *either* buttons or menus\n  if (!gButton) {\n    gButton = gHeader;\n    gButton.attr('pointer-events', 'all');\n  }\n  var buttonData = !isFolded(gButton) || menuOpts.type === 'buttons' ? menuOpts.buttons : [];\n  var klass = menuOpts.type === 'dropdown' ? constants.dropdownButtonClassName : constants.buttonClassName;\n  var buttons = gButton.selectAll('g.' + klass).data(Lib.filterVisible(buttonData));\n  var enter = buttons.enter().append('g').classed(klass, true);\n  var exit = buttons.exit();\n  if (menuOpts.type === 'dropdown') {\n    enter.attr('opacity', '0').transition().attr('opacity', '1');\n    exit.transition().attr('opacity', '0').remove();\n  } else {\n    exit.remove();\n  }\n  var x0 = 0;\n  var y0 = 0;\n  var dims = menuOpts._dims;\n  var isVertical = ['up', 'down'].indexOf(menuOpts.direction) !== -1;\n  if (menuOpts.type === 'dropdown') {\n    if (isVertical) {\n      y0 = dims.headerHeight + constants.gapButtonHeader;\n    } else {\n      x0 = dims.headerWidth + constants.gapButtonHeader;\n    }\n  }\n  if (menuOpts.type === 'dropdown' && menuOpts.direction === 'up') {\n    y0 = -constants.gapButtonHeader + constants.gapButton - dims.openHeight;\n  }\n  if (menuOpts.type === 'dropdown' && menuOpts.direction === 'left') {\n    x0 = -constants.gapButtonHeader + constants.gapButton - dims.openWidth;\n  }\n  var posOpts = {\n    x: dims.lx + x0 + menuOpts.pad.l,\n    y: dims.ly + y0 + menuOpts.pad.t,\n    yPad: constants.gapButton,\n    xPad: constants.gapButton,\n    index: 0\n  };\n  var scrollBoxPosition = {\n    l: posOpts.x + menuOpts.borderwidth,\n    t: posOpts.y + menuOpts.borderwidth\n  };\n  buttons.each(function (buttonOpts, buttonIndex) {\n    var button = d3.select(this);\n    button.call(drawItem, menuOpts, buttonOpts, gd).call(setItemPosition, menuOpts, posOpts);\n    button.on('click', function () {\n      // skip `dragend` events\n      if (d3.event.defaultPrevented) return;\n      if (buttonOpts.execute) {\n        if (buttonOpts.args2 && menuOpts.active === buttonIndex) {\n          setActive(gd, menuOpts, buttonOpts, gHeader, gButton, scrollBox, -1);\n          Plots.executeAPICommand(gd, buttonOpts.method, buttonOpts.args2);\n        } else {\n          setActive(gd, menuOpts, buttonOpts, gHeader, gButton, scrollBox, buttonIndex);\n          Plots.executeAPICommand(gd, buttonOpts.method, buttonOpts.args);\n        }\n      }\n      gd.emit('plotly_buttonclicked', {\n        menu: menuOpts,\n        button: buttonOpts,\n        active: menuOpts.active\n      });\n    });\n    button.on('mouseover', function () {\n      button.call(styleOnMouseOver);\n    });\n    button.on('mouseout', function () {\n      button.call(styleOnMouseOut, menuOpts);\n      buttons.call(styleButtons, menuOpts);\n    });\n  });\n  buttons.call(styleButtons, menuOpts);\n  if (isVertical) {\n    scrollBoxPosition.w = Math.max(dims.openWidth, dims.headerWidth);\n    scrollBoxPosition.h = posOpts.y - scrollBoxPosition.t;\n  } else {\n    scrollBoxPosition.w = posOpts.x - scrollBoxPosition.l;\n    scrollBoxPosition.h = Math.max(dims.openHeight, dims.headerHeight);\n  }\n  scrollBoxPosition.direction = menuOpts.direction;\n  if (scrollBox) {\n    if (buttons.size()) {\n      drawScrollBox(gd, gHeader, gButton, scrollBox, menuOpts, scrollBoxPosition);\n    } else {\n      hideScrollBox(scrollBox);\n    }\n  }\n}\nfunction drawScrollBox(gd, gHeader, gButton, scrollBox, menuOpts, position) {\n  // enable the scrollbox\n  var direction = menuOpts.direction;\n  var isVertical = direction === 'up' || direction === 'down';\n  var dims = menuOpts._dims;\n  var active = menuOpts.active;\n  var translateX, translateY;\n  var i;\n  if (isVertical) {\n    translateY = 0;\n    for (i = 0; i < active; i++) {\n      translateY += dims.heights[i] + constants.gapButton;\n    }\n  } else {\n    translateX = 0;\n    for (i = 0; i < active; i++) {\n      translateX += dims.widths[i] + constants.gapButton;\n    }\n  }\n  scrollBox.enable(position, translateX, translateY);\n  if (scrollBox.hbar) {\n    scrollBox.hbar.attr('opacity', '0').transition().attr('opacity', '1');\n  }\n  if (scrollBox.vbar) {\n    scrollBox.vbar.attr('opacity', '0').transition().attr('opacity', '1');\n  }\n}\nfunction hideScrollBox(scrollBox) {\n  var hasHBar = !!scrollBox.hbar;\n  var hasVBar = !!scrollBox.vbar;\n  if (hasHBar) {\n    scrollBox.hbar.transition().attr('opacity', '0').each('end', function () {\n      hasHBar = false;\n      if (!hasVBar) scrollBox.disable();\n    });\n  }\n  if (hasVBar) {\n    scrollBox.vbar.transition().attr('opacity', '0').each('end', function () {\n      hasVBar = false;\n      if (!hasHBar) scrollBox.disable();\n    });\n  }\n}\nfunction drawItem(item, menuOpts, itemOpts, gd) {\n  item.call(drawItemRect, menuOpts).call(drawItemText, menuOpts, itemOpts, gd);\n}\nfunction drawItemRect(item, menuOpts) {\n  var rect = Lib.ensureSingle(item, 'rect', constants.itemRectClassName, function (s) {\n    s.attr({\n      rx: constants.rx,\n      ry: constants.ry,\n      'shape-rendering': 'crispEdges'\n    });\n  });\n  rect.call(Color.stroke, menuOpts.bordercolor).call(Color.fill, menuOpts.bgcolor).style('stroke-width', menuOpts.borderwidth + 'px');\n}\nfunction drawItemText(item, menuOpts, itemOpts, gd) {\n  var text = Lib.ensureSingle(item, 'text', constants.itemTextClassName, function (s) {\n    s.attr({\n      'text-anchor': 'start',\n      'data-notex': 1\n    });\n  });\n  var tx = itemOpts.label;\n  var _meta = gd._fullLayout._meta;\n  if (_meta) tx = Lib.templateString(tx, _meta);\n  text.call(Drawing.font, menuOpts.font).text(tx).call(svgTextUtils.convertToTspans, gd);\n}\nfunction styleButtons(buttons, menuOpts) {\n  var active = menuOpts.active;\n  buttons.each(function (buttonOpts, i) {\n    var button = d3.select(this);\n    if (i === active && menuOpts.showactive) {\n      button.select('rect.' + constants.itemRectClassName).call(Color.fill, constants.activeColor);\n    }\n  });\n}\nfunction styleOnMouseOver(item) {\n  item.select('rect.' + constants.itemRectClassName).call(Color.fill, constants.hoverColor);\n}\nfunction styleOnMouseOut(item, menuOpts) {\n  item.select('rect.' + constants.itemRectClassName).call(Color.fill, menuOpts.bgcolor);\n}\n\n// find item dimensions (this mutates menuOpts)\nfunction findDimensions(gd, menuOpts) {\n  var dims = menuOpts._dims = {\n    width1: 0,\n    height1: 0,\n    heights: [],\n    widths: [],\n    totalWidth: 0,\n    totalHeight: 0,\n    openWidth: 0,\n    openHeight: 0,\n    lx: 0,\n    ly: 0\n  };\n  var fakeButtons = Drawing.tester.selectAll('g.' + constants.dropdownButtonClassName).data(Lib.filterVisible(menuOpts.buttons));\n  fakeButtons.enter().append('g').classed(constants.dropdownButtonClassName, true);\n  var isVertical = ['up', 'down'].indexOf(menuOpts.direction) !== -1;\n\n  // loop over fake buttons to find width / height\n  fakeButtons.each(function (buttonOpts, i) {\n    var button = d3.select(this);\n    button.call(drawItem, menuOpts, buttonOpts, gd);\n    var text = button.select('.' + constants.itemTextClassName);\n\n    // width is given by max width of all buttons\n    var tWidth = text.node() && Drawing.bBox(text.node()).width;\n    var wEff = Math.max(tWidth + constants.textPadX, constants.minWidth);\n\n    // height is determined by item text\n    var tHeight = menuOpts.font.size * LINE_SPACING;\n    var tLines = svgTextUtils.lineCount(text);\n    var hEff = Math.max(tHeight * tLines, constants.minHeight) + constants.textOffsetY;\n    hEff = Math.ceil(hEff);\n    wEff = Math.ceil(wEff);\n\n    // Store per-item sizes since a row of horizontal buttons, for example,\n    // don't all need to be the same width:\n    dims.widths[i] = wEff;\n    dims.heights[i] = hEff;\n\n    // Height and width of individual element:\n    dims.height1 = Math.max(dims.height1, hEff);\n    dims.width1 = Math.max(dims.width1, wEff);\n    if (isVertical) {\n      dims.totalWidth = Math.max(dims.totalWidth, wEff);\n      dims.openWidth = dims.totalWidth;\n      dims.totalHeight += hEff + constants.gapButton;\n      dims.openHeight += hEff + constants.gapButton;\n    } else {\n      dims.totalWidth += wEff + constants.gapButton;\n      dims.openWidth += wEff + constants.gapButton;\n      dims.totalHeight = Math.max(dims.totalHeight, hEff);\n      dims.openHeight = dims.totalHeight;\n    }\n  });\n  if (isVertical) {\n    dims.totalHeight -= constants.gapButton;\n  } else {\n    dims.totalWidth -= constants.gapButton;\n  }\n  dims.headerWidth = dims.width1 + constants.arrowPadX;\n  dims.headerHeight = dims.height1;\n  if (menuOpts.type === 'dropdown') {\n    if (isVertical) {\n      dims.width1 += constants.arrowPadX;\n      dims.totalHeight = dims.height1;\n    } else {\n      dims.totalWidth = dims.width1;\n    }\n    dims.totalWidth += constants.arrowPadX;\n  }\n  fakeButtons.remove();\n  var paddedWidth = dims.totalWidth + menuOpts.pad.l + menuOpts.pad.r;\n  var paddedHeight = dims.totalHeight + menuOpts.pad.t + menuOpts.pad.b;\n  var graphSize = gd._fullLayout._size;\n  dims.lx = graphSize.l + graphSize.w * menuOpts.x;\n  dims.ly = graphSize.t + graphSize.h * (1 - menuOpts.y);\n  var xanchor = 'left';\n  if (Lib.isRightAnchor(menuOpts)) {\n    dims.lx -= paddedWidth;\n    xanchor = 'right';\n  }\n  if (Lib.isCenterAnchor(menuOpts)) {\n    dims.lx -= paddedWidth / 2;\n    xanchor = 'center';\n  }\n  var yanchor = 'top';\n  if (Lib.isBottomAnchor(menuOpts)) {\n    dims.ly -= paddedHeight;\n    yanchor = 'bottom';\n  }\n  if (Lib.isMiddleAnchor(menuOpts)) {\n    dims.ly -= paddedHeight / 2;\n    yanchor = 'middle';\n  }\n  dims.totalWidth = Math.ceil(dims.totalWidth);\n  dims.totalHeight = Math.ceil(dims.totalHeight);\n  dims.lx = Math.round(dims.lx);\n  dims.ly = Math.round(dims.ly);\n  Plots.autoMargin(gd, autoMarginId(menuOpts), {\n    x: menuOpts.x,\n    y: menuOpts.y,\n    l: paddedWidth * ({\n      right: 1,\n      center: 0.5\n    }[xanchor] || 0),\n    r: paddedWidth * ({\n      left: 1,\n      center: 0.5\n    }[xanchor] || 0),\n    b: paddedHeight * ({\n      top: 1,\n      middle: 0.5\n    }[yanchor] || 0),\n    t: paddedHeight * ({\n      bottom: 1,\n      middle: 0.5\n    }[yanchor] || 0)\n  });\n}\nfunction autoMarginId(menuOpts) {\n  return constants.autoMarginIdRoot + menuOpts._index;\n}\n\n// set item positions (mutates posOpts)\nfunction setItemPosition(item, menuOpts, posOpts, overrideOpts) {\n  overrideOpts = overrideOpts || {};\n  var rect = item.select('.' + constants.itemRectClassName);\n  var text = item.select('.' + constants.itemTextClassName);\n  var borderWidth = menuOpts.borderwidth;\n  var index = posOpts.index;\n  var dims = menuOpts._dims;\n  Drawing.setTranslate(item, borderWidth + posOpts.x, borderWidth + posOpts.y);\n  var isVertical = ['up', 'down'].indexOf(menuOpts.direction) !== -1;\n  var finalHeight = overrideOpts.height || (isVertical ? dims.heights[index] : dims.height1);\n  rect.attr({\n    x: 0,\n    y: 0,\n    width: overrideOpts.width || (isVertical ? dims.width1 : dims.widths[index]),\n    height: finalHeight\n  });\n  var tHeight = menuOpts.font.size * LINE_SPACING;\n  var tLines = svgTextUtils.lineCount(text);\n  var spanOffset = (tLines - 1) * tHeight / 2;\n  svgTextUtils.positionText(text, constants.textOffsetX, finalHeight / 2 - spanOffset + constants.textOffsetY);\n  if (isVertical) {\n    posOpts.y += dims.heights[index] + posOpts.yPad;\n  } else {\n    posOpts.x += dims.widths[index] + posOpts.xPad;\n  }\n  posOpts.index++;\n}\nfunction removeAllButtons(gButton, newMenuIndexAttr) {\n  gButton.attr(constants.menuIndexAttrName, newMenuIndexAttr || '-1').selectAll('g.' + constants.dropdownButtonClassName).remove();\n}\n\n/***/ }),\n\n/***/ 20763:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_706624__) {\n\n\"use strict\";\n\n\nvar constants = __nested_webpack_require_706624__(75909);\nmodule.exports = {\n  moduleType: 'component',\n  name: constants.name,\n  layoutAttributes: __nested_webpack_require_706624__(7163),\n  supplyLayoutDefaults: __nested_webpack_require_706624__(64897),\n  draw: __nested_webpack_require_706624__(13689)\n};\n\n/***/ }),\n\n/***/ 25849:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_706990__) {\n\n\"use strict\";\n\n\nmodule.exports = ScrollBox;\nvar d3 = __nested_webpack_require_706990__(39898);\nvar Color = __nested_webpack_require_706990__(7901);\nvar Drawing = __nested_webpack_require_706990__(91424);\nvar Lib = __nested_webpack_require_706990__(71828);\n\n/**\n * Helper class to setup a scroll box\n *\n * @class\n * @param           gd          Plotly's graph div\n * @param           container   Container to be scroll-boxed (as a D3 selection)\n * @param {string}  id          Id for the clip path to implement the scroll box\n */\nfunction ScrollBox(gd, container, id) {\n  this.gd = gd;\n  this.container = container;\n  this.id = id;\n\n  // See ScrollBox.prototype.enable for further definition\n  this.position = null; // scrollbox position\n  this.translateX = null; // scrollbox horizontal translation\n  this.translateY = null; // scrollbox vertical translation\n  this.hbar = null; // horizontal scrollbar D3 selection\n  this.vbar = null; // vertical scrollbar D3 selection\n\n  // <rect> element to capture pointer events\n  this.bg = this.container.selectAll('rect.scrollbox-bg').data([0]);\n  this.bg.exit().on('.drag', null).on('wheel', null).remove();\n  this.bg.enter().append('rect').classed('scrollbox-bg', true).style('pointer-events', 'all').attr({\n    opacity: 0,\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  });\n}\n\n// scroll bar dimensions\nScrollBox.barWidth = 2;\nScrollBox.barLength = 20;\nScrollBox.barRadius = 2;\nScrollBox.barPad = 1;\nScrollBox.barColor = '#808BA4';\n\n/**\n * If needed, setup a clip path and scrollbars\n *\n * @method\n * @param {Object}  position\n * @param {number}  position.l  Left side position (in pixels)\n * @param {number}  position.t  Top side (in pixels)\n * @param {number}  position.w  Width (in pixels)\n * @param {number}  position.h  Height (in pixels)\n * @param {string}  [position.direction='down']\n *                  Either 'down', 'left', 'right' or 'up'\n * @param {number}  [translateX=0]  Horizontal offset (in pixels)\n * @param {number}  [translateY=0]  Vertical offset (in pixels)\n */\nScrollBox.prototype.enable = function enable(position, translateX, translateY) {\n  var fullLayout = this.gd._fullLayout;\n  var fullWidth = fullLayout.width;\n  var fullHeight = fullLayout.height;\n\n  // compute position of scrollbox\n  this.position = position;\n  var l = this.position.l;\n  var w = this.position.w;\n  var t = this.position.t;\n  var h = this.position.h;\n  var direction = this.position.direction;\n  var isDown = direction === 'down';\n  var isLeft = direction === 'left';\n  var isRight = direction === 'right';\n  var isUp = direction === 'up';\n  var boxW = w;\n  var boxH = h;\n  var boxL, boxR;\n  var boxT, boxB;\n  if (!isDown && !isLeft && !isRight && !isUp) {\n    this.position.direction = 'down';\n    isDown = true;\n  }\n  var isVertical = isDown || isUp;\n  if (isVertical) {\n    boxL = l;\n    boxR = boxL + boxW;\n    if (isDown) {\n      // anchor to top side\n      boxT = t;\n      boxB = Math.min(boxT + boxH, fullHeight);\n      boxH = boxB - boxT;\n    } else {\n      // anchor to bottom side\n      boxB = t + boxH;\n      boxT = Math.max(boxB - boxH, 0);\n      boxH = boxB - boxT;\n    }\n  } else {\n    boxT = t;\n    boxB = boxT + boxH;\n    if (isLeft) {\n      // anchor to right side\n      boxR = l + boxW;\n      boxL = Math.max(boxR - boxW, 0);\n      boxW = boxR - boxL;\n    } else {\n      // anchor to left side\n      boxL = l;\n      boxR = Math.min(boxL + boxW, fullWidth);\n      boxW = boxR - boxL;\n    }\n  }\n  this._box = {\n    l: boxL,\n    t: boxT,\n    w: boxW,\n    h: boxH\n  };\n\n  // compute position of horizontal scroll bar\n  var needsHorizontalScrollBar = w > boxW;\n  var hbarW = ScrollBox.barLength + 2 * ScrollBox.barPad;\n  var hbarH = ScrollBox.barWidth + 2 * ScrollBox.barPad;\n  // draw horizontal scrollbar on the bottom side\n  var hbarL = l;\n  var hbarT = t + h;\n  if (hbarT + hbarH > fullHeight) hbarT = fullHeight - hbarH;\n  var hbar = this.container.selectAll('rect.scrollbar-horizontal').data(needsHorizontalScrollBar ? [0] : []);\n  hbar.exit().on('.drag', null).remove();\n  hbar.enter().append('rect').classed('scrollbar-horizontal', true).call(Color.fill, ScrollBox.barColor);\n  if (needsHorizontalScrollBar) {\n    this.hbar = hbar.attr({\n      'rx': ScrollBox.barRadius,\n      'ry': ScrollBox.barRadius,\n      'x': hbarL,\n      'y': hbarT,\n      'width': hbarW,\n      'height': hbarH\n    });\n\n    // hbar center moves between hbarXMin and hbarXMin + hbarTranslateMax\n    this._hbarXMin = hbarL + hbarW / 2;\n    this._hbarTranslateMax = boxW - hbarW;\n  } else {\n    delete this.hbar;\n    delete this._hbarXMin;\n    delete this._hbarTranslateMax;\n  }\n\n  // compute position of vertical scroll bar\n  var needsVerticalScrollBar = h > boxH;\n  var vbarW = ScrollBox.barWidth + 2 * ScrollBox.barPad;\n  var vbarH = ScrollBox.barLength + 2 * ScrollBox.barPad;\n  // draw vertical scrollbar on the right side\n  var vbarL = l + w;\n  var vbarT = t;\n  if (vbarL + vbarW > fullWidth) vbarL = fullWidth - vbarW;\n  var vbar = this.container.selectAll('rect.scrollbar-vertical').data(needsVerticalScrollBar ? [0] : []);\n  vbar.exit().on('.drag', null).remove();\n  vbar.enter().append('rect').classed('scrollbar-vertical', true).call(Color.fill, ScrollBox.barColor);\n  if (needsVerticalScrollBar) {\n    this.vbar = vbar.attr({\n      'rx': ScrollBox.barRadius,\n      'ry': ScrollBox.barRadius,\n      'x': vbarL,\n      'y': vbarT,\n      'width': vbarW,\n      'height': vbarH\n    });\n\n    // vbar center moves between vbarYMin and vbarYMin + vbarTranslateMax\n    this._vbarYMin = vbarT + vbarH / 2;\n    this._vbarTranslateMax = boxH - vbarH;\n  } else {\n    delete this.vbar;\n    delete this._vbarYMin;\n    delete this._vbarTranslateMax;\n  }\n\n  // setup a clip path (if scroll bars are needed)\n  var clipId = this.id;\n  var clipL = boxL - 0.5;\n  var clipR = needsVerticalScrollBar ? boxR + vbarW + 0.5 : boxR + 0.5;\n  var clipT = boxT - 0.5;\n  var clipB = needsHorizontalScrollBar ? boxB + hbarH + 0.5 : boxB + 0.5;\n  var clipPath = fullLayout._topdefs.selectAll('#' + clipId).data(needsHorizontalScrollBar || needsVerticalScrollBar ? [0] : []);\n  clipPath.exit().remove();\n  clipPath.enter().append('clipPath').attr('id', clipId).append('rect');\n  if (needsHorizontalScrollBar || needsVerticalScrollBar) {\n    this._clipRect = clipPath.select('rect').attr({\n      x: Math.floor(clipL),\n      y: Math.floor(clipT),\n      width: Math.ceil(clipR) - Math.floor(clipL),\n      height: Math.ceil(clipB) - Math.floor(clipT)\n    });\n    this.container.call(Drawing.setClipUrl, clipId, this.gd);\n    this.bg.attr({\n      x: l,\n      y: t,\n      width: w,\n      height: h\n    });\n  } else {\n    this.bg.attr({\n      width: 0,\n      height: 0\n    });\n    this.container.on('wheel', null).on('.drag', null).call(Drawing.setClipUrl, null);\n    delete this._clipRect;\n  }\n\n  // set up drag listeners (if scroll bars are needed)\n  if (needsHorizontalScrollBar || needsVerticalScrollBar) {\n    var onBoxDrag = d3.behavior.drag().on('dragstart', function () {\n      d3.event.sourceEvent.preventDefault();\n    }).on('drag', this._onBoxDrag.bind(this));\n    this.container.on('wheel', null).on('wheel', this._onBoxWheel.bind(this)).on('.drag', null).call(onBoxDrag);\n    var onBarDrag = d3.behavior.drag().on('dragstart', function () {\n      d3.event.sourceEvent.preventDefault();\n      d3.event.sourceEvent.stopPropagation();\n    }).on('drag', this._onBarDrag.bind(this));\n    if (needsHorizontalScrollBar) {\n      this.hbar.on('.drag', null).call(onBarDrag);\n    }\n    if (needsVerticalScrollBar) {\n      this.vbar.on('.drag', null).call(onBarDrag);\n    }\n  }\n\n  // set scrollbox translation\n  this.setTranslate(translateX, translateY);\n};\n\n/**\n * If present, remove clip-path and scrollbars\n *\n * @method\n */\nScrollBox.prototype.disable = function disable() {\n  if (this.hbar || this.vbar) {\n    this.bg.attr({\n      width: 0,\n      height: 0\n    });\n    this.container.on('wheel', null).on('.drag', null).call(Drawing.setClipUrl, null);\n    delete this._clipRect;\n  }\n  if (this.hbar) {\n    this.hbar.on('.drag', null);\n    this.hbar.remove();\n    delete this.hbar;\n    delete this._hbarXMin;\n    delete this._hbarTranslateMax;\n  }\n  if (this.vbar) {\n    this.vbar.on('.drag', null);\n    this.vbar.remove();\n    delete this.vbar;\n    delete this._vbarYMin;\n    delete this._vbarTranslateMax;\n  }\n};\n\n/**\n * Handles scroll box drag events\n *\n * @method\n */\nScrollBox.prototype._onBoxDrag = function _onBoxDrag() {\n  var translateX = this.translateX;\n  var translateY = this.translateY;\n  if (this.hbar) {\n    translateX -= d3.event.dx;\n  }\n  if (this.vbar) {\n    translateY -= d3.event.dy;\n  }\n  this.setTranslate(translateX, translateY);\n};\n\n/**\n * Handles scroll box wheel events\n *\n * @method\n */\nScrollBox.prototype._onBoxWheel = function _onBoxWheel() {\n  var translateX = this.translateX;\n  var translateY = this.translateY;\n  if (this.hbar) {\n    translateX += d3.event.deltaY;\n  }\n  if (this.vbar) {\n    translateY += d3.event.deltaY;\n  }\n  this.setTranslate(translateX, translateY);\n};\n\n/**\n * Handles scroll bar drag events\n *\n * @method\n */\nScrollBox.prototype._onBarDrag = function _onBarDrag() {\n  var translateX = this.translateX;\n  var translateY = this.translateY;\n  if (this.hbar) {\n    var xMin = translateX + this._hbarXMin;\n    var xMax = xMin + this._hbarTranslateMax;\n    var x = Lib.constrain(d3.event.x, xMin, xMax);\n    var xf = (x - xMin) / (xMax - xMin);\n    var translateXMax = this.position.w - this._box.w;\n    translateX = xf * translateXMax;\n  }\n  if (this.vbar) {\n    var yMin = translateY + this._vbarYMin;\n    var yMax = yMin + this._vbarTranslateMax;\n    var y = Lib.constrain(d3.event.y, yMin, yMax);\n    var yf = (y - yMin) / (yMax - yMin);\n    var translateYMax = this.position.h - this._box.h;\n    translateY = yf * translateYMax;\n  }\n  this.setTranslate(translateX, translateY);\n};\n\n/**\n * Set clip path and scroll bar translate transform\n *\n * @method\n * @param {number}  [translateX=0]  Horizontal offset (in pixels)\n * @param {number}  [translateY=0]  Vertical offset (in pixels)\n */\nScrollBox.prototype.setTranslate = function setTranslate(translateX, translateY) {\n  // store translateX and translateY (needed by mouse event handlers)\n  var translateXMax = this.position.w - this._box.w;\n  var translateYMax = this.position.h - this._box.h;\n  translateX = Lib.constrain(translateX || 0, 0, translateXMax);\n  translateY = Lib.constrain(translateY || 0, 0, translateYMax);\n  this.translateX = translateX;\n  this.translateY = translateY;\n  this.container.call(Drawing.setTranslate, this._box.l - this.position.l - translateX, this._box.t - this.position.t - translateY);\n  if (this._clipRect) {\n    this._clipRect.attr({\n      x: Math.floor(this.position.l + translateX - 0.5),\n      y: Math.floor(this.position.t + translateY - 0.5)\n    });\n  }\n  if (this.hbar) {\n    var xf = translateX / translateXMax;\n    this.hbar.call(Drawing.setTranslate, translateX + xf * this._hbarTranslateMax, translateY);\n  }\n  if (this.vbar) {\n    var yf = translateY / translateYMax;\n    this.vbar.call(Drawing.setTranslate, translateX, translateY + yf * this._vbarTranslateMax);\n  }\n};\n\n/***/ }),\n\n/***/ 18783:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// fraction of some size to get to a named position\nmodule.exports = {\n  // from bottom left: this is the origin of our paper-reference\n  // positioning system\n  FROM_BL: {\n    left: 0,\n    center: 0.5,\n    right: 1,\n    bottom: 0,\n    middle: 0.5,\n    top: 1\n  },\n  // from top left: this is the screen pixel positioning origin\n  FROM_TL: {\n    left: 0,\n    center: 0.5,\n    right: 1,\n    bottom: 1,\n    middle: 0.5,\n    top: 0\n  },\n  // from bottom right: sometimes you just need the opposite of ^^\n  FROM_BR: {\n    left: 1,\n    center: 0.5,\n    right: 0,\n    bottom: 0,\n    middle: 0.5,\n    top: 1\n  },\n  // multiple of fontSize to get the vertical offset between lines\n  LINE_SPACING: 1.3,\n  // multiple of fontSize to shift from the baseline\n  // to the cap (captical letter) line\n  // (to use when we don't calculate this shift from Drawing.bBox)\n  // This is an approximation since in reality cap height can differ\n  // from font to font. However, according to Wikipedia\n  //   an \"average\" font might have a cap height of 70% of the em\n  // https://en.wikipedia.org/wiki/Em_(typography)#History\n  CAP_SHIFT: 0.70,\n  // half the cap height (distance between baseline and cap line)\n  // of an \"average\" font (for more info see above).\n  MID_SHIFT: 0.35,\n  OPPOSITE_SIDE: {\n    left: 'right',\n    right: 'left',\n    top: 'bottom',\n    bottom: 'top'\n  }\n};\n\n/***/ }),\n\n/***/ 24695:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  axisRefDescription: function (axisname, lower, upper) {\n    return ['If set to a', axisname, 'axis id (e.g. *' + axisname + '* or', '*' + axisname + '2*), the `' + axisname + '` position refers to a', axisname, 'coordinate. If set to *paper*, the `' + axisname + '`', 'position refers to the distance from the', lower, 'of the plotting', 'area in normalized coordinates where *0* (*1*) corresponds to the', lower, '(' + upper + '). If set to a', axisname, 'axis ID followed by', '*domain* (separated by a space), the position behaves like for', '*paper*, but refers to the distance in fractions of the domain', 'length from the', lower, 'of the domain of that axis: e.g.,', '*' + axisname + '2 domain* refers to the domain of the second', axisname, ' axis and a', axisname, 'position of 0.5 refers to the', 'point between the', lower, 'and the', upper, 'of the domain of the', 'second', axisname, 'axis.'].join(' ');\n  }\n};\n\n/***/ }),\n\n/***/ 22372:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  INCREASING: {\n    COLOR: '#3D9970',\n    SYMBOL: '▲'\n  },\n  DECREASING: {\n    COLOR: '#FF4136',\n    SYMBOL: '▼'\n  }\n};\n\n/***/ }),\n\n/***/ 31562:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  FORMAT_LINK: 'https://github.com/d3/d3-format/tree/v1.4.5#d3-format',\n  DATE_FORMAT_LINK: 'https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format'\n};\n\n/***/ }),\n\n/***/ 74808:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  COMPARISON_OPS: ['=', '!=', '<', '>=', '>', '<='],\n  COMPARISON_OPS2: ['=', '<', '>=', '>', '<='],\n  INTERVAL_OPS: ['[]', '()', '[)', '(]', '][', ')(', '](', ')['],\n  SET_OPS: ['{}', '}{'],\n  CONSTRAINT_REDUCTION: {\n    // for contour constraints, open/closed endpoints are equivalent\n    '=': '=',\n    '<': '<',\n    '<=': '<',\n    '>': '>',\n    '>=': '>',\n    '[]': '[]',\n    '()': '[]',\n    '[)': '[]',\n    '(]': '[]',\n    '][': '][',\n    ')(': '][',\n    '](': '][',\n    ')[': ']['\n  }\n};\n\n/***/ }),\n\n/***/ 29659:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  solid: [[], 0],\n  dot: [[0.5, 1], 200],\n  dash: [[0.5, 1], 50],\n  longdash: [[0.5, 1], 10],\n  dashdot: [[0.5, 0.625, 0.875, 1], 50],\n  longdashdot: [[0.5, 0.7, 0.8, 1], 10]\n};\n\n/***/ }),\n\n/***/ 87381:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  circle: '●',\n  'circle-open': '○',\n  square: '■',\n  'square-open': '□',\n  diamond: '◆',\n  'diamond-open': '◇',\n  cross: '+',\n  x: '❌'\n};\n\n/***/ }),\n\n/***/ 37822:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  /**\n   * Timing information for interactive elements\n   */\n  SHOW_PLACEHOLDER: 100,\n  HIDE_PLACEHOLDER: 1000,\n  // opacity dimming fraction for points that are not in selection\n  DESELECTDIM: 0.2\n};\n\n/***/ }),\n\n/***/ 50606:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  /**\n   * Standardize all missing data in calcdata to use undefined\n   * never null or NaN.\n   * That way we can use !==undefined, or !== BADNUM,\n   * to test for real data\n   */\n  BADNUM: undefined,\n  /*\n   * Limit certain operations to well below floating point max value\n   * to avoid glitches: Make sure that even when you multiply it by the\n   * number of pixels on a giant screen it still works\n   */\n  FP_SAFE: Number.MAX_VALUE * 1e-4,\n  /*\n   * conversion of date units to milliseconds\n   * year and month constants are marked \"AVG\"\n   * to remind us that not all years and months\n   * have the same length\n   */\n  ONEMAXYEAR: 31622400000,\n  // 366 * ONEDAY\n  ONEAVGYEAR: 31557600000,\n  // 365.25 days\n  ONEMINYEAR: 31536000000,\n  // 365 * ONEDAY\n  ONEMAXQUARTER: 7948800000,\n  // 92 * ONEDAY\n  ONEAVGQUARTER: 7889400000,\n  // 1/4 of ONEAVGYEAR\n  ONEMINQUARTER: 7689600000,\n  // 89 * ONEDAY\n  ONEMAXMONTH: 2678400000,\n  // 31 * ONEDAY\n  ONEAVGMONTH: 2629800000,\n  // 1/12 of ONEAVGYEAR\n  ONEMINMONTH: 2419200000,\n  // 28 * ONEDAY\n  ONEWEEK: 604800000,\n  // 7 * ONEDAY\n  ONEDAY: 86400000,\n  // 24 * ONEHOUR\n  ONEHOUR: 3600000,\n  ONEMIN: 60000,\n  ONESEC: 1000,\n  /*\n   * For fast conversion btwn world calendars and epoch ms, the Julian Day Number\n   * of the unix epoch. From calendars.instance().newDate(1970, 1, 1).toJD()\n   */\n  EPOCHJD: 2440587.5,\n  /*\n   * Are two values nearly equal? Compare to 1PPM\n   */\n  ALMOST_EQUAL: 1 - 1e-6,\n  /*\n   * If we're asked to clip a non-positive log value, how far off-screen\n   * do we put it?\n   */\n  LOG_CLIP: 10,\n  /*\n   * not a number, but for displaying numbers: the \"minus sign\" symbol is\n   * wider than the regular ascii dash \"-\"\n   */\n  MINUS_SIGN: '\\u2212'\n};\n\n/***/ }),\n\n/***/ 77922:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\nexports.xmlns = 'http://www.w3.org/2000/xmlns/';\nexports.svg = 'http://www.w3.org/2000/svg';\nexports.xlink = 'http://www.w3.org/1999/xlink';\n\n// the 'old' d3 quirk got fix in v3.5.7\n// https://github.com/mbostock/d3/commit/a6f66e9dd37f764403fc7c1f26be09ab4af24fed\nexports.svgAttrs = {\n  xmlns: exports.svg,\n  'xmlns:xlink': exports.xlink\n};\n\n/***/ }),\n\n/***/ 8729:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_724670__) {\n\n\"use strict\";\n\n\nexports.version = __nested_webpack_require_724670__(11506).version;\n\n// inject promise polyfill\n__nested_webpack_require_724670__(7417);\n\n// inject plot css\n__nested_webpack_require_724670__(98847);\n\n// include registry module and expose register method\nvar Registry = __nested_webpack_require_724670__(73972);\nvar register = exports.register = Registry.register;\n\n// expose plot api methods\nvar plotApi = __nested_webpack_require_724670__(10641);\nvar methodNames = Object.keys(plotApi);\nfor (var i = 0; i < methodNames.length; i++) {\n  var name = methodNames[i];\n  // _ -> private API methods, but still registered for internal use\n  if (name.charAt(0) !== '_') exports[name] = plotApi[name];\n  register({\n    moduleType: 'apiMethod',\n    name: name,\n    fn: plotApi[name]\n  });\n}\n\n// scatter is the only trace included by default\nregister(__nested_webpack_require_724670__(67368));\n\n// register all registrable components modules\nregister([__nested_webpack_require_724670__(2199), __nested_webpack_require_724670__(30211),\n// fx needs to come after legend\n__nested_webpack_require_724670__(32745), __nested_webpack_require_724670__(2468), __nested_webpack_require_724670__(47322), __nested_webpack_require_724670__(89853), __nested_webpack_require_724670__(68804), __nested_webpack_require_724670__(20763), __nested_webpack_require_724670__(23243), __nested_webpack_require_724670__(13137), __nested_webpack_require_724670__(97218), __nested_webpack_require_724670__(83312), __nested_webpack_require_724670__(37369), __nested_webpack_require_724670__(21081), __nested_webpack_require_724670__(12311), __nested_webpack_require_724670__(64168)]);\n\n// locales en and en-US are required for default behavior\nregister([__nested_webpack_require_724670__(92177), __nested_webpack_require_724670__(37815)]);\n\n// locales that are present in the window should be loaded\nif (window.PlotlyLocales && Array.isArray(window.PlotlyLocales)) {\n  register(window.PlotlyLocales);\n  delete window.PlotlyLocales;\n}\n\n// plot icons\nexports.Icons = __nested_webpack_require_724670__(24255);\n\n// unofficial 'beta' plot methods, use at your own risk\nvar Fx = __nested_webpack_require_724670__(30211);\nvar Plots = __nested_webpack_require_724670__(74875);\nexports.Plots = {\n  resize: Plots.resize,\n  graphJson: Plots.graphJson,\n  sendDataToCloud: Plots.sendDataToCloud\n};\nexports.Fx = {\n  hover: Fx.hover,\n  unhover: Fx.unhover,\n  loneHover: Fx.loneHover,\n  loneUnhover: Fx.loneUnhover\n};\nexports.Snapshot = __nested_webpack_require_724670__(44511);\nexports.PlotSchema = __nested_webpack_require_724670__(86281);\n\n/***/ }),\n\n/***/ 24255:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  'undo': {\n    'width': 857.1,\n    'height': 1000,\n    'path': 'm857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'home': {\n    'width': 928.6,\n    'height': 1000,\n    'path': 'm786 296v-267q0-15-11-26t-25-10h-214v214h-143v-214h-214q-15 0-25 10t-11 26v267q0 1 0 2t0 2l321 264 321-264q1-1 1-4z m124 39l-34-41q-5-5-12-6h-2q-7 0-12 3l-386 322-386-322q-7-4-13-4-7 2-12 7l-35 41q-4 5-3 13t6 12l401 334q18 15 42 15t43-15l136-114v109q0 8 5 13t13 5h107q8 0 13-5t5-13v-227l122-102q5-5 6-12t-4-13z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'camera-retro': {\n    'width': 1000,\n    'height': 1000,\n    'path': 'm518 386q0 8-5 13t-13 5q-37 0-63-27t-26-63q0-8 5-13t13-5 12 5 5 13q0 23 16 38t38 16q8 0 13 5t5 13z m125-73q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m-572-320h858v71h-858v-71z m643 320q0 89-62 152t-152 62-151-62-63-152 63-151 151-63 152 63 62 151z m-571 358h214v72h-214v-72z m-72-107h858v143h-462l-36-71h-360v-72z m929 143v-714q0-30-21-51t-50-21h-858q-29 0-50 21t-21 51v714q0 30 21 51t50 21h858q29 0 50-21t21-51z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'zoombox': {\n    'width': 1000,\n    'height': 1000,\n    'path': 'm1000-25l-250 251c40 63 63 138 63 218 0 224-182 406-407 406-224 0-406-182-406-406s183-406 407-406c80 0 155 22 218 62l250-250 125 125z m-812 250l0 438 437 0 0-438-437 0z m62 375l313 0 0-312-313 0 0 312z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'pan': {\n    'width': 1000,\n    'height': 1000,\n    'path': 'm1000 350l-187 188 0-125-250 0 0 250 125 0-188 187-187-187 125 0 0-250-250 0 0 125-188-188 186-187 0 125 252 0 0-250-125 0 187-188 188 188-125 0 0 250 250 0 0-126 187 188z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'zoom_plus': {\n    'width': 875,\n    'height': 1000,\n    'path': 'm1 787l0-875 875 0 0 875-875 0z m687-500l-187 0 0-187-125 0 0 187-188 0 0 125 188 0 0 187 125 0 0-187 187 0 0-125z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'zoom_minus': {\n    'width': 875,\n    'height': 1000,\n    'path': 'm0 788l0-876 875 0 0 876-875 0z m688-500l-500 0 0 125 500 0 0-125z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'autoscale': {\n    'width': 1000,\n    'height': 1000,\n    'path': 'm250 850l-187 0-63 0 0-62 0-188 63 0 0 188 187 0 0 62z m688 0l-188 0 0-62 188 0 0-188 62 0 0 188 0 62-62 0z m-875-938l0 188-63 0 0-188 0-62 63 0 187 0 0 62-187 0z m875 188l0-188-188 0 0-62 188 0 62 0 0 62 0 188-62 0z m-125 188l-1 0-93-94-156 156 156 156 92-93 2 0 0 250-250 0 0-2 93-92-156-156-156 156 94 92 0 2-250 0 0-250 0 0 93 93 157-156-157-156-93 94 0 0 0-250 250 0 0 0-94 93 156 157 156-157-93-93 0 0 250 0 0 250z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'tooltip_basic': {\n    'width': 1500,\n    'height': 1000,\n    'path': 'm375 725l0 0-375-375 375-374 0-1 1125 0 0 750-1125 0z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'tooltip_compare': {\n    'width': 1125,\n    'height': 1000,\n    'path': 'm187 786l0 2-187-188 188-187 0 0 937 0 0 373-938 0z m0-499l0 1-187-188 188-188 0 0 937 0 0 376-938-1z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'plotlylogo': {\n    'width': 1542,\n    'height': 1000,\n    'path': 'm0-10h182v-140h-182v140z m228 146h183v-286h-183v286z m225 714h182v-1000h-182v1000z m225-285h182v-715h-182v715z m225 142h183v-857h-183v857z m231-428h182v-429h-182v429z m225-291h183v-138h-183v138z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'z-axis': {\n    'width': 1000,\n    'height': 1000,\n    'path': 'm833 5l-17 108v41l-130-65 130-66c0 0 0 38 0 39 0-1 36-14 39-25 4-15-6-22-16-30-15-12-39-16-56-20-90-22-187-23-279-23-261 0-341 34-353 59 3 60 228 110 228 110-140-8-351-35-351-116 0-120 293-142 474-142 155 0 477 22 477 142 0 50-74 79-163 96z m-374 94c-58-5-99-21-99-40 0-24 65-43 144-43 79 0 143 19 143 43 0 19-42 34-98 40v216h87l-132 135-133-135h88v-216z m167 515h-136v1c16 16 31 34 46 52l84 109v54h-230v-71h124v-1c-16-17-28-32-44-51l-89-114v-51h245v72z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  '3d_rotate': {\n    'width': 1000,\n    'height': 1000,\n    'path': 'm922 660c-5 4-9 7-14 11-359 263-580-31-580-31l-102 28 58-400c0 1 1 1 2 2 118 108 351 249 351 249s-62 27-100 42c88 83 222 183 347 122 16-8 30-17 44-27-2 1-4 2-6 4z m36-329c0 0 64 229-88 296-62 27-124 14-175-11 157-78 225-208 249-266 8-19 11-31 11-31 2 5 6 15 11 32-5-13-8-20-8-20z m-775-239c70-31 117-50 198-32-121 80-199 346-199 346l-96-15-58-12c0 0 55-226 155-287z m603 133l-317-139c0 0 4-4 19-14 7-5 24-15 24-15s-177-147-389 4c235-287 536-112 536-112l31-22 100 299-4-1z m-298-153c6-4 14-9 24-15 0 0-17 10-24 15z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'camera': {\n    'width': 1000,\n    'height': 1000,\n    'path': 'm500 450c-83 0-150-67-150-150 0-83 67-150 150-150 83 0 150 67 150 150 0 83-67 150-150 150z m400 150h-120c-16 0-34 13-39 29l-31 93c-6 15-23 28-40 28h-340c-16 0-34-13-39-28l-31-94c-6-15-23-28-40-28h-120c-55 0-100-45-100-100v-450c0-55 45-100 100-100h800c55 0 100 45 100 100v450c0 55-45 100-100 100z m-400-550c-138 0-250 112-250 250 0 138 112 250 250 250 138 0 250-112 250-250 0-138-112-250-250-250z m365 380c-19 0-35 16-35 35 0 19 16 35 35 35 19 0 35-16 35-35 0-19-16-35-35-35z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'movie': {\n    'width': 1000,\n    'height': 1000,\n    'path': 'm938 413l-188-125c0 37-17 71-44 94 64 38 107 107 107 187 0 121-98 219-219 219-121 0-219-98-219-219 0-61 25-117 66-156h-115c30 33 49 76 49 125 0 103-84 187-187 187s-188-84-188-187c0-57 26-107 65-141-38-22-65-62-65-109v-250c0-70 56-126 125-126h500c69 0 125 56 125 126l188-126c34 0 62 28 62 63v375c0 35-28 63-62 63z m-750 0c-69 0-125 56-125 125s56 125 125 125 125-56 125-125-56-125-125-125z m406-1c-87 0-157 70-157 157 0 86 70 156 157 156s156-70 156-156-70-157-156-157z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'question': {\n    'width': 857.1,\n    'height': 1000,\n    'path': 'm500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-14 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-16-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'disk': {\n    'width': 857.1,\n    'height': 1000,\n    'path': 'm214-7h429v214h-429v-214z m500 0h72v500q0 8-6 21t-11 20l-157 156q-5 6-19 12t-22 5v-232q0-22-15-38t-38-16h-322q-22 0-37 16t-16 38v232h-72v-714h72v232q0 22 16 38t37 16h465q22 0 38-16t15-38v-232z m-214 518v178q0 8-5 13t-13 5h-107q-7 0-13-5t-5-13v-178q0-8 5-13t13-5h107q7 0 13 5t5 13z m357-18v-518q0-22-15-38t-38-16h-750q-23 0-38 16t-16 38v750q0 22 16 38t38 16h517q23 0 50-12t42-26l156-157q16-15 27-42t11-49z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'drawopenpath': {\n    'width': 70,\n    'height': 70,\n    'path': 'M33.21,85.65a7.31,7.31,0,0,1-2.59-.48c-8.16-3.11-9.27-19.8-9.88-41.3-.1-3.58-.19-6.68-.35-9-.15-2.1-.67-3.48-1.43-3.79-2.13-.88-7.91,2.32-12,5.86L3,32.38c1.87-1.64,11.55-9.66,18.27-6.9,2.13.87,4.75,3.14,5.17,9,.17,2.43.26,5.59.36,9.25a224.17,224.17,0,0,0,1.5,23.4c1.54,10.76,4,12.22,4.48,12.4.84.32,2.79-.46,5.76-3.59L43,80.07C41.53,81.57,37.68,85.64,33.21,85.65ZM74.81,69a11.34,11.34,0,0,0,6.09-6.72L87.26,44.5,74.72,32,56.9,38.35c-2.37.86-5.57,3.42-6.61,6L38.65,72.14l8.42,8.43ZM55,46.27a7.91,7.91,0,0,1,3.64-3.17l14.8-5.3,8,8L76.11,60.6l-.06.19a6.37,6.37,0,0,1-3,3.43L48.25,74.59,44.62,71Zm16.57,7.82A6.9,6.9,0,1,0,64.64,61,6.91,6.91,0,0,0,71.54,54.09Zm-4.05,0a2.85,2.85,0,1,1-2.85-2.85A2.86,2.86,0,0,1,67.49,54.09Zm-4.13,5.22L60.5,56.45,44.26,72.7l2.86,2.86ZM97.83,35.67,84.14,22l-8.57,8.57L89.26,44.24Zm-13.69-8,8,8-2.85,2.85-8-8Z',\n    'transform': 'matrix(1 0 0 1 -15 -15)'\n  },\n  'drawclosedpath': {\n    'width': 90,\n    'height': 90,\n    'path': 'M88.41,21.12a26.56,26.56,0,0,0-36.18,0l-2.07,2-2.07-2a26.57,26.57,0,0,0-36.18,0,23.74,23.74,0,0,0,0,34.8L48,90.12a3.22,3.22,0,0,0,4.42,0l36-34.21a23.73,23.73,0,0,0,0-34.79ZM84,51.24,50.16,83.35,16.35,51.25a17.28,17.28,0,0,1,0-25.47,20,20,0,0,1,27.3,0l4.29,4.07a3.23,3.23,0,0,0,4.44,0l4.29-4.07a20,20,0,0,1,27.3,0,17.27,17.27,0,0,1,0,25.46ZM66.76,47.68h-33v6.91h33ZM53.35,35H46.44V68h6.91Z',\n    'transform': 'matrix(1 0 0 1 -5 -5)'\n  },\n  'lasso': {\n    'width': 1031,\n    'height': 1000,\n    'path': 'm1018 538c-36 207-290 336-568 286-277-48-473-256-436-463 10-57 36-108 76-151-13-66 11-137 68-183 34-28 75-41 114-42l-55-70 0 0c-2-1-3-2-4-3-10-14-8-34 5-45 14-11 34-8 45 4 1 1 2 3 2 5l0 0 113 140c16 11 31 24 45 40 4 3 6 7 8 11 48-3 100 0 151 9 278 48 473 255 436 462z m-624-379c-80 14-149 48-197 96 42 42 109 47 156 9 33-26 47-66 41-105z m-187-74c-19 16-33 37-39 60 50-32 109-55 174-68-42-25-95-24-135 8z m360 75c-34-7-69-9-102-8 8 62-16 128-68 170-73 59-175 54-244-5-9 20-16 40-20 61-28 159 121 317 333 354s407-60 434-217c28-159-121-318-333-355z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'selectbox': {\n    'width': 1000,\n    'height': 1000,\n    'path': 'm0 850l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-285l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z',\n    'transform': 'matrix(1 0 0 -1 0 850)'\n  },\n  'drawline': {\n    'width': 70,\n    'height': 70,\n    'path': 'M60.64,62.3a11.29,11.29,0,0,0,6.09-6.72l6.35-17.72L60.54,25.31l-17.82,6.4c-2.36.86-5.57,3.41-6.6,6L24.48,65.5l8.42,8.42ZM40.79,39.63a7.89,7.89,0,0,1,3.65-3.17l14.79-5.31,8,8L61.94,54l-.06.19a6.44,6.44,0,0,1-3,3.43L34.07,68l-3.62-3.63Zm16.57,7.81a6.9,6.9,0,1,0-6.89,6.9A6.9,6.9,0,0,0,57.36,47.44Zm-4,0a2.86,2.86,0,1,1-2.85-2.85A2.86,2.86,0,0,1,53.32,47.44Zm-4.13,5.22L46.33,49.8,30.08,66.05l2.86,2.86ZM83.65,29,70,15.34,61.4,23.9,75.09,37.59ZM70,21.06l8,8-2.84,2.85-8-8ZM87,80.49H10.67V87H87Z',\n    'transform': 'matrix(1 0 0 1 -15 -15)'\n  },\n  'drawrect': {\n    'width': 80,\n    'height': 80,\n    'path': 'M78,22V79H21V22H78m9-9H12V88H87V13ZM68,46.22H31V54H68ZM53,32H45.22V69H53Z',\n    'transform': 'matrix(1 0 0 1 -10 -10)'\n  },\n  'drawcircle': {\n    'width': 80,\n    'height': 80,\n    'path': 'M50,84.72C26.84,84.72,8,69.28,8,50.3S26.84,15.87,50,15.87,92,31.31,92,50.3,73.16,84.72,50,84.72Zm0-60.59c-18.6,0-33.74,11.74-33.74,26.17S31.4,76.46,50,76.46,83.74,64.72,83.74,50.3,68.6,24.13,50,24.13Zm17.15,22h-34v7.11h34Zm-13.8-13H46.24v34h7.11Z',\n    'transform': 'matrix(1 0 0 1 -10 -10)'\n  },\n  'eraseshape': {\n    'width': 80,\n    'height': 80,\n    'path': 'M82.77,78H31.85L6,49.57,31.85,21.14H82.77a8.72,8.72,0,0,1,8.65,8.77V69.24A8.72,8.72,0,0,1,82.77,78ZM35.46,69.84H82.77a.57.57,0,0,0,.49-.6V29.91a.57.57,0,0,0-.49-.61H35.46L17,49.57Zm32.68-34.7-24,24,5,5,24-24Zm-19,.53-5,5,24,24,5-5Z',\n    'transform': 'matrix(1 0 0 1 -10 -10)'\n  },\n  'spikeline': {\n    'width': 1000,\n    'height': 1000,\n    'path': 'M512 409c0-57-46-104-103-104-57 0-104 47-104 104 0 57 47 103 104 103 57 0 103-46 103-103z m-327-39l92 0 0 92-92 0z m-185 0l92 0 0 92-92 0z m370-186l92 0 0 93-92 0z m0-184l92 0 0 92-92 0z',\n    'transform': 'matrix(1.5 0 0 -1.5 0 850)'\n  },\n  'pencil': {\n    'width': 1792,\n    'height': 1792,\n    'path': 'M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z',\n    'transform': 'matrix(1 0 0 1 0 1)'\n  },\n  'newplotlylogo': {\n    'name': 'newplotlylogo',\n    'svg': ['<svg xmlns=\\'http://www.w3.org/2000/svg\\' viewBox=\\'0 0 132 132\\'>', '<defs>', ' <style>', '  .cls-0{fill:#000;}', '  .cls-1{fill:#FFF;}', '  .cls-2{fill:#F26;}', '  .cls-3{fill:#D69;}', '  .cls-4{fill:#BAC;}', '  .cls-5{fill:#9EF;}', ' </style>', '</defs>', ' <title>plotly-logomark</title>', ' <g id=\\'symbol\\'>', '  <rect class=\\'cls-0\\' x=\\'0\\' y=\\'0\\' width=\\'132\\' height=\\'132\\' rx=\\'18\\' ry=\\'18\\'/>', '  <circle class=\\'cls-5\\' cx=\\'102\\' cy=\\'30\\' r=\\'6\\'/>', '  <circle class=\\'cls-4\\' cx=\\'78\\' cy=\\'30\\' r=\\'6\\'/>', '  <circle class=\\'cls-4\\' cx=\\'78\\' cy=\\'54\\' r=\\'6\\'/>', '  <circle class=\\'cls-3\\' cx=\\'54\\' cy=\\'30\\' r=\\'6\\'/>', '  <circle class=\\'cls-2\\' cx=\\'30\\' cy=\\'30\\' r=\\'6\\'/>', '  <circle class=\\'cls-2\\' cx=\\'30\\' cy=\\'54\\' r=\\'6\\'/>', '  <path class=\\'cls-1\\' d=\\'M30,72a6,6,0,0,0-6,6v24a6,6,0,0,0,12,0V78A6,6,0,0,0,30,72Z\\'/>', '  <path class=\\'cls-1\\' d=\\'M78,72a6,6,0,0,0-6,6v24a6,6,0,0,0,12,0V78A6,6,0,0,0,78,72Z\\'/>', '  <path class=\\'cls-1\\' d=\\'M54,48a6,6,0,0,0-6,6v48a6,6,0,0,0,12,0V54A6,6,0,0,0,54,48Z\\'/>', '  <path class=\\'cls-1\\' d=\\'M102,48a6,6,0,0,0-6,6v48a6,6,0,0,0,12,0V54A6,6,0,0,0,102,48Z\\'/>', ' </g>', '</svg>'].join('')\n  }\n};\n\n/***/ }),\n\n/***/ 99863:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\n/**\n * Determine the position anchor property of x/y xanchor/yanchor components.\n *\n * - values < 1/3 align the low side at that fraction,\n * - values [1/3, 2/3] align the center at that fraction,\n * - values > 2/3 align the right at that fraction.\n */\nexports.isLeftAnchor = function isLeftAnchor(opts) {\n  return opts.xanchor === 'left' || opts.xanchor === 'auto' && opts.x <= 1 / 3;\n};\nexports.isCenterAnchor = function isCenterAnchor(opts) {\n  return opts.xanchor === 'center' || opts.xanchor === 'auto' && opts.x > 1 / 3 && opts.x < 2 / 3;\n};\nexports.isRightAnchor = function isRightAnchor(opts) {\n  return opts.xanchor === 'right' || opts.xanchor === 'auto' && opts.x >= 2 / 3;\n};\nexports.isTopAnchor = function isTopAnchor(opts) {\n  return opts.yanchor === 'top' || opts.yanchor === 'auto' && opts.y >= 2 / 3;\n};\nexports.isMiddleAnchor = function isMiddleAnchor(opts) {\n  return opts.yanchor === 'middle' || opts.yanchor === 'auto' && opts.y > 1 / 3 && opts.y < 2 / 3;\n};\nexports.isBottomAnchor = function isBottomAnchor(opts) {\n  return opts.yanchor === 'bottom' || opts.yanchor === 'auto' && opts.y <= 1 / 3;\n};\n\n/***/ }),\n\n/***/ 26348:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_741483__) {\n\n\"use strict\";\n\n\nvar modModule = __nested_webpack_require_741483__(64872);\nvar mod = modModule.mod;\nvar modHalf = modModule.modHalf;\nvar PI = Math.PI;\nvar twoPI = 2 * PI;\nfunction deg2rad(deg) {\n  return deg / 180 * PI;\n}\nfunction rad2deg(rad) {\n  return rad / PI * 180;\n}\n\n/**\n * is sector a full circle?\n * ... this comes up a lot in SVG path-drawing routines\n *\n * N.B. we consider all sectors that span more that 2pi 'full' circles\n *\n * @param {2-item array} aBnds : angular bounds in *radians*\n * @return {boolean}\n */\nfunction isFullCircle(aBnds) {\n  return Math.abs(aBnds[1] - aBnds[0]) > twoPI - 1e-14;\n}\n\n/**\n * angular delta between angle 'a' and 'b'\n * solution taken from: https://stackoverflow.com/a/2007279\n *\n * @param {number} a : first angle in *radians*\n * @param {number} b : second angle in *radians*\n * @return {number} angular delta in *radians*\n */\nfunction angleDelta(a, b) {\n  return modHalf(b - a, twoPI);\n}\n\n/**\n * angular distance between angle 'a' and 'b'\n *\n * @param {number} a : first angle in *radians*\n * @param {number} b : second angle in *radians*\n * @return {number} angular distance in *radians*\n */\nfunction angleDist(a, b) {\n  return Math.abs(angleDelta(a, b));\n}\n\n/**\n * is angle inside sector?\n *\n * @param {number} a : angle to test in *radians*\n * @param {2-item array} aBnds : sector's angular bounds in *radians*\n * @param {boolean}\n */\nfunction isAngleInsideSector(a, aBnds) {\n  if (isFullCircle(aBnds)) return true;\n  var s0, s1;\n  if (aBnds[0] < aBnds[1]) {\n    s0 = aBnds[0];\n    s1 = aBnds[1];\n  } else {\n    s0 = aBnds[1];\n    s1 = aBnds[0];\n  }\n  s0 = mod(s0, twoPI);\n  s1 = mod(s1, twoPI);\n  if (s0 > s1) s1 += twoPI;\n  var a0 = mod(a, twoPI);\n  var a1 = a0 + twoPI;\n  return a0 >= s0 && a0 <= s1 || a1 >= s0 && a1 <= s1;\n}\n\n/**\n * is pt (r,a) inside sector?\n *\n * @param {number} r : pt's radial coordinate\n * @param {number} a : pt's angular coordinate in *radians*\n * @param {2-item array} rBnds : sector's radial bounds\n * @param {2-item array} aBnds : sector's angular bounds in *radians*\n * @return {boolean}\n */\nfunction isPtInsideSector(r, a, rBnds, aBnds) {\n  if (!isAngleInsideSector(a, aBnds)) return false;\n  var r0, r1;\n  if (rBnds[0] < rBnds[1]) {\n    r0 = rBnds[0];\n    r1 = rBnds[1];\n  } else {\n    r0 = rBnds[1];\n    r1 = rBnds[0];\n  }\n  return r >= r0 && r <= r1;\n}\n\n// common to pathArc, pathSector and pathAnnulus\nfunction _path(r0, r1, a0, a1, cx, cy, isClosed) {\n  cx = cx || 0;\n  cy = cy || 0;\n  var isCircle = isFullCircle([a0, a1]);\n  var aStart, aMid, aEnd;\n  var rStart, rEnd;\n  if (isCircle) {\n    aStart = 0;\n    aMid = PI;\n    aEnd = twoPI;\n  } else {\n    if (a0 < a1) {\n      aStart = a0;\n      aEnd = a1;\n    } else {\n      aStart = a1;\n      aEnd = a0;\n    }\n  }\n  if (r0 < r1) {\n    rStart = r0;\n    rEnd = r1;\n  } else {\n    rStart = r1;\n    rEnd = r0;\n  }\n\n  // N.B. svg coordinates here, where y increases downward\n  function pt(r, a) {\n    return [r * Math.cos(a) + cx, cy - r * Math.sin(a)];\n  }\n  var largeArc = Math.abs(aEnd - aStart) <= PI ? 0 : 1;\n  function arc(r, a, cw) {\n    return 'A' + [r, r] + ' ' + [0, largeArc, cw] + ' ' + pt(r, a);\n  }\n  var p;\n  if (isCircle) {\n    if (rStart === null) {\n      p = 'M' + pt(rEnd, aStart) + arc(rEnd, aMid, 0) + arc(rEnd, aEnd, 0) + 'Z';\n    } else {\n      p = 'M' + pt(rStart, aStart) + arc(rStart, aMid, 0) + arc(rStart, aEnd, 0) + 'Z' + 'M' + pt(rEnd, aStart) + arc(rEnd, aMid, 1) + arc(rEnd, aEnd, 1) + 'Z';\n    }\n  } else {\n    if (rStart === null) {\n      p = 'M' + pt(rEnd, aStart) + arc(rEnd, aEnd, 0);\n      if (isClosed) p += 'L0,0Z';\n    } else {\n      p = 'M' + pt(rStart, aStart) + 'L' + pt(rEnd, aStart) + arc(rEnd, aEnd, 0) + 'L' + pt(rStart, aEnd) + arc(rStart, aStart, 1) + 'Z';\n    }\n  }\n  return p;\n}\n\n/**\n * path an arc\n *\n * @param {number} r : radius\n * @param {number} a0 : first angular coordinate in *radians*\n * @param {number} a1 : second angular coordinate in *radians*\n * @param {number (optional)} cx : x coordinate of center\n * @param {number (optional)} cy : y coordinate of center\n * @return {string} svg path\n */\nfunction pathArc(r, a0, a1, cx, cy) {\n  return _path(null, r, a0, a1, cx, cy, 0);\n}\n\n/**\n * path a sector\n *\n * @param {number} r : radius\n * @param {number} a0 : first angular coordinate in *radians*\n * @param {number} a1 : second angular coordinate in *radians*\n * @param {number (optional)} cx : x coordinate of center\n * @param {number (optional)} cy : y coordinate of center\n * @return {string} svg path\n */\nfunction pathSector(r, a0, a1, cx, cy) {\n  return _path(null, r, a0, a1, cx, cy, 1);\n}\n\n/**\n * path an annulus\n *\n * @param {number} r0 : first radial coordinate\n * @param {number} r1 : second radial coordinate\n * @param {number} a0 : first angular coordinate in *radians*\n * @param {number} a1 : second angular coordinate in *radians*\n * @param {number (optional)} cx : x coordinate of center\n * @param {number (optional)} cy : y coordinate of center\n * @return {string} svg path\n */\nfunction pathAnnulus(r0, r1, a0, a1, cx, cy) {\n  return _path(r0, r1, a0, a1, cx, cy, 1);\n}\nmodule.exports = {\n  deg2rad: deg2rad,\n  rad2deg: rad2deg,\n  angleDelta: angleDelta,\n  angleDist: angleDist,\n  isFullCircle: isFullCircle,\n  isAngleInsideSector: isAngleInsideSector,\n  isPtInsideSector: isPtInsideSector,\n  pathArc: pathArc,\n  pathSector: pathSector,\n  pathAnnulus: pathAnnulus\n};\n\n/***/ }),\n\n/***/ 73627:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\nvar isArray = Array.isArray;\nvar ab = ArrayBuffer;\nvar dv = DataView;\nfunction isTypedArray(a) {\n  return ab.isView(a) && !(a instanceof dv);\n}\nexports.isTypedArray = isTypedArray;\nfunction isArrayOrTypedArray(a) {\n  return isArray(a) || isTypedArray(a);\n}\nexports.isArrayOrTypedArray = isArrayOrTypedArray;\n\n/*\n * Test whether an input object is 1D.\n *\n * Assumes we already know the object is an array.\n *\n * Looks only at the first element, if the dimensionality is\n * not consistent we won't figure that out here.\n */\nfunction isArray1D(a) {\n  return !isArrayOrTypedArray(a[0]);\n}\nexports.isArray1D = isArray1D;\n\n/*\n * Ensures an array has the right amount of storage space. If it doesn't\n * exist, it creates an array. If it does exist, it returns it if too\n * short or truncates it in-place.\n *\n * The goal is to just reuse memory to avoid a bit of excessive garbage\n * collection.\n */\nexports.ensureArray = function (out, n) {\n  // TODO: typed array support here? This is only used in\n  // traces/carpet/compute_control_points\n  if (!isArray(out)) out = [];\n\n  // If too long, truncate. (If too short, it will grow\n  // automatically so we don't care about that case)\n  out.length = n;\n  return out;\n};\n\n/*\n * TypedArray-compatible concatenation of n arrays\n * if all arrays are the same type it will preserve that type,\n * otherwise it falls back on Array.\n * Also tries to avoid copying, in case one array has zero length\n * But never mutates an existing array\n */\nexports.concat = function () {\n  var args = [];\n  var allArray = true;\n  var totalLen = 0;\n  var _constructor, arg0, i, argi, posi, leni, out, j;\n  for (i = 0; i < arguments.length; i++) {\n    argi = arguments[i];\n    leni = argi.length;\n    if (leni) {\n      if (arg0) args.push(argi);else {\n        arg0 = argi;\n        posi = leni;\n      }\n      if (isArray(argi)) {\n        _constructor = false;\n      } else {\n        allArray = false;\n        if (!totalLen) {\n          _constructor = argi.constructor;\n        } else if (_constructor !== argi.constructor) {\n          // TODO: in principle we could upgrade here,\n          // ie keep typed array but convert all to Float64Array?\n          _constructor = false;\n        }\n      }\n      totalLen += leni;\n    }\n  }\n  if (!totalLen) return [];\n  if (!args.length) return arg0;\n  if (allArray) return arg0.concat.apply(arg0, args);\n  if (_constructor) {\n    // matching typed arrays\n    out = new _constructor(totalLen);\n    out.set(arg0);\n    for (i = 0; i < args.length; i++) {\n      argi = args[i];\n      out.set(argi, posi);\n      posi += argi.length;\n    }\n    return out;\n  }\n\n  // mismatched types or Array + typed\n  out = new Array(totalLen);\n  for (j = 0; j < arg0.length; j++) out[j] = arg0[j];\n  for (i = 0; i < args.length; i++) {\n    argi = args[i];\n    for (j = 0; j < argi.length; j++) out[posi + j] = argi[j];\n    posi += j;\n  }\n  return out;\n};\nexports.maxRowLength = function (z) {\n  return _rowLength(z, Math.max, 0);\n};\nexports.minRowLength = function (z) {\n  return _rowLength(z, Math.min, Infinity);\n};\nfunction _rowLength(z, fn, len0) {\n  if (isArrayOrTypedArray(z)) {\n    if (isArrayOrTypedArray(z[0])) {\n      var len = len0;\n      for (var i = 0; i < z.length; i++) {\n        len = fn(len, z[i].length);\n      }\n      return len;\n    } else {\n      return z.length;\n    }\n  }\n  return 0;\n}\n\n/***/ }),\n\n/***/ 95218:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_750382__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_750382__(92770);\nvar BADNUM = (__nested_webpack_require_750382__(50606).BADNUM);\n\n// precompile for speed\nvar JUNK = /^['\"%,$#\\s']+|[, ]|['\"%,$#\\s']+$/g;\n\n/**\n * cleanNumber: remove common leading and trailing cruft\n * Always returns either a number or BADNUM.\n */\nmodule.exports = function cleanNumber(v) {\n  if (typeof v === 'string') {\n    v = v.replace(JUNK, '');\n  }\n  if (isNumeric(v)) return Number(v);\n  return BADNUM;\n};\n\n/***/ }),\n\n/***/ 33306:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/**\n * Clear gl frame (if any). This is a common pattern as\n * we usually set `preserveDrawingBuffer: true` during\n * gl context creation (e.g. via `reglUtils.prepare`).\n *\n * @param {DOM node or object} gd : graph div object\n */\nmodule.exports = function clearGlCanvases(gd) {\n  var fullLayout = gd._fullLayout;\n  if (fullLayout._glcanvas && fullLayout._glcanvas.size()) {\n    fullLayout._glcanvas.each(function (d) {\n      if (d.regl) d.regl.clear({\n        color: true,\n        depth: true\n      });\n    });\n  }\n};\n\n/***/ }),\n\n/***/ 86367:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/**\n * Clear responsive handlers (if any).\n *\n * @param {DOM node or object} gd : graph div object\n */\nmodule.exports = function clearResponsive(gd) {\n  if (gd._responsiveChartHandler) {\n    window.removeEventListener('resize', gd._responsiveChartHandler);\n    delete gd._responsiveChartHandler;\n  }\n};\n\n/***/ }),\n\n/***/ 96554:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_751897__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_751897__(92770);\nvar tinycolor = __nested_webpack_require_751897__(84267);\nvar baseTraceAttrs = __nested_webpack_require_751897__(9012);\nvar colorscales = __nested_webpack_require_751897__(63282);\nvar Color = __nested_webpack_require_751897__(7901);\nvar DESELECTDIM = (__nested_webpack_require_751897__(37822).DESELECTDIM);\nvar nestedProperty = __nested_webpack_require_751897__(65487);\nvar counterRegex = (__nested_webpack_require_751897__(30587).counter);\nvar modHalf = (__nested_webpack_require_751897__(64872).modHalf);\nvar isArrayOrTypedArray = (__nested_webpack_require_751897__(73627).isArrayOrTypedArray);\nexports.valObjectMeta = {\n  data_array: {\n    // You can use *dflt=[] to force said array to exist though.\n    coerceFunction: function (v, propOut, dflt) {\n      // TODO maybe `v: {type: 'float32', vals: [/* ... */]}` also\n      if (isArrayOrTypedArray(v)) propOut.set(v);else if (dflt !== undefined) propOut.set(dflt);\n    }\n  },\n  enumerated: {\n    coerceFunction: function (v, propOut, dflt, opts) {\n      if (opts.coerceNumber) v = +v;\n      if (opts.values.indexOf(v) === -1) propOut.set(dflt);else propOut.set(v);\n    },\n    validateFunction: function (v, opts) {\n      if (opts.coerceNumber) v = +v;\n      var values = opts.values;\n      for (var i = 0; i < values.length; i++) {\n        var k = String(values[i]);\n        if (k.charAt(0) === '/' && k.charAt(k.length - 1) === '/') {\n          var regex = new RegExp(k.substr(1, k.length - 2));\n          if (regex.test(v)) return true;\n        } else if (v === values[i]) return true;\n      }\n      return false;\n    }\n  },\n  'boolean': {\n    coerceFunction: function (v, propOut, dflt) {\n      if (v === true || v === false) propOut.set(v);else propOut.set(dflt);\n    }\n  },\n  number: {\n    coerceFunction: function (v, propOut, dflt, opts) {\n      if (!isNumeric(v) || opts.min !== undefined && v < opts.min || opts.max !== undefined && v > opts.max) {\n        propOut.set(dflt);\n      } else propOut.set(+v);\n    }\n  },\n  integer: {\n    coerceFunction: function (v, propOut, dflt, opts) {\n      if (v % 1 || !isNumeric(v) || opts.min !== undefined && v < opts.min || opts.max !== undefined && v > opts.max) {\n        propOut.set(dflt);\n      } else propOut.set(+v);\n    }\n  },\n  string: {\n    // TODO 'values shouldn't be in there (edge case: 'dash' in Scatter)\n    coerceFunction: function (v, propOut, dflt, opts) {\n      if (typeof v !== 'string') {\n        var okToCoerce = typeof v === 'number';\n        if (opts.strict === true || !okToCoerce) propOut.set(dflt);else propOut.set(String(v));\n      } else if (opts.noBlank && !v) propOut.set(dflt);else propOut.set(v);\n    }\n  },\n  color: {\n    coerceFunction: function (v, propOut, dflt) {\n      if (tinycolor(v).isValid()) propOut.set(v);else propOut.set(dflt);\n    }\n  },\n  colorlist: {\n    coerceFunction: function (v, propOut, dflt) {\n      function isColor(color) {\n        return tinycolor(color).isValid();\n      }\n      if (!Array.isArray(v) || !v.length) propOut.set(dflt);else if (v.every(isColor)) propOut.set(v);else propOut.set(dflt);\n    }\n  },\n  colorscale: {\n    coerceFunction: function (v, propOut, dflt) {\n      propOut.set(colorscales.get(v, dflt));\n    }\n  },\n  angle: {\n    coerceFunction: function (v, propOut, dflt) {\n      if (v === 'auto') propOut.set('auto');else if (!isNumeric(v)) propOut.set(dflt);else propOut.set(modHalf(+v, 360));\n    }\n  },\n  subplotid: {\n    coerceFunction: function (v, propOut, dflt, opts) {\n      var regex = opts.regex || counterRegex(dflt);\n      if (typeof v === 'string' && regex.test(v)) {\n        propOut.set(v);\n        return;\n      }\n      propOut.set(dflt);\n    },\n    validateFunction: function (v, opts) {\n      var dflt = opts.dflt;\n      if (v === dflt) return true;\n      if (typeof v !== 'string') return false;\n      if (counterRegex(dflt).test(v)) return true;\n      return false;\n    }\n  },\n  flaglist: {\n    coerceFunction: function (v, propOut, dflt, opts) {\n      if ((opts.extras || []).indexOf(v) !== -1) {\n        propOut.set(v);\n        return;\n      }\n      if (typeof v !== 'string') {\n        propOut.set(dflt);\n        return;\n      }\n      var vParts = v.split('+');\n      var i = 0;\n      while (i < vParts.length) {\n        var vi = vParts[i];\n        if (opts.flags.indexOf(vi) === -1 || vParts.indexOf(vi) < i) {\n          vParts.splice(i, 1);\n        } else i++;\n      }\n      if (!vParts.length) propOut.set(dflt);else propOut.set(vParts.join('+'));\n    }\n  },\n  any: {\n    coerceFunction: function (v, propOut, dflt) {\n      if (v === undefined) propOut.set(dflt);else propOut.set(v);\n    }\n  },\n  info_array: {\n    // set `dimensions=2` for a 2D array or '1-2' for either\n    // `items` may be a single object instead of an array, in which case\n    // `freeLength` must be true.\n    // if `dimensions='1-2'` and items is a 1D array, then the value can\n    // either be a matching 1D array or an array of such matching 1D arrays\n    coerceFunction: function (v, propOut, dflt, opts) {\n      // simplified coerce function just for array items\n      function coercePart(v, opts, dflt) {\n        var out;\n        var propPart = {\n          set: function (v) {\n            out = v;\n          }\n        };\n        if (dflt === undefined) dflt = opts.dflt;\n        exports.valObjectMeta[opts.valType].coerceFunction(v, propPart, dflt, opts);\n        return out;\n      }\n      var twoD = opts.dimensions === 2 || opts.dimensions === '1-2' && Array.isArray(v) && Array.isArray(v[0]);\n      if (!Array.isArray(v)) {\n        propOut.set(dflt);\n        return;\n      }\n      var items = opts.items;\n      var vOut = [];\n      var arrayItems = Array.isArray(items);\n      var arrayItems2D = arrayItems && twoD && Array.isArray(items[0]);\n      var innerItemsOnly = twoD && arrayItems && !arrayItems2D;\n      var len = arrayItems && !innerItemsOnly ? items.length : v.length;\n      var i, j, row, item, len2, vNew;\n      dflt = Array.isArray(dflt) ? dflt : [];\n      if (twoD) {\n        for (i = 0; i < len; i++) {\n          vOut[i] = [];\n          row = Array.isArray(v[i]) ? v[i] : [];\n          if (innerItemsOnly) len2 = items.length;else if (arrayItems) len2 = items[i].length;else len2 = row.length;\n          for (j = 0; j < len2; j++) {\n            if (innerItemsOnly) item = items[j];else if (arrayItems) item = items[i][j];else item = items;\n            vNew = coercePart(row[j], item, (dflt[i] || [])[j]);\n            if (vNew !== undefined) vOut[i][j] = vNew;\n          }\n        }\n      } else {\n        for (i = 0; i < len; i++) {\n          vNew = coercePart(v[i], arrayItems ? items[i] : items, dflt[i]);\n          if (vNew !== undefined) vOut[i] = vNew;\n        }\n      }\n      propOut.set(vOut);\n    },\n    validateFunction: function (v, opts) {\n      if (!Array.isArray(v)) return false;\n      var items = opts.items;\n      var arrayItems = Array.isArray(items);\n      var twoD = opts.dimensions === 2;\n\n      // when free length is off, input and declared lengths must match\n      if (!opts.freeLength && v.length !== items.length) return false;\n\n      // valid when all input items are valid\n      for (var i = 0; i < v.length; i++) {\n        if (twoD) {\n          if (!Array.isArray(v[i]) || !opts.freeLength && v[i].length !== items[i].length) {\n            return false;\n          }\n          for (var j = 0; j < v[i].length; j++) {\n            if (!validate(v[i][j], arrayItems ? items[i][j] : items)) {\n              return false;\n            }\n          }\n        } else if (!validate(v[i], arrayItems ? items[i] : items)) return false;\n      }\n      return true;\n    }\n  }\n};\n\n/**\n * Ensures that container[attribute] has a valid value.\n *\n * attributes[attribute] is an object with possible keys:\n * - valType: data_array, enumerated, boolean, ... as in valObjectMeta\n * - values: (enumerated only) array of allowed vals\n * - min, max: (number, integer only) inclusive bounds on allowed vals\n *      either or both may be omitted\n * - dflt: if attribute is invalid or missing, use this default\n *      if dflt is provided as an argument to lib.coerce it takes precedence\n *      as a convenience, returns the value it finally set\n */\nexports.coerce = function (containerIn, containerOut, attributes, attribute, dflt) {\n  var opts = nestedProperty(attributes, attribute).get();\n  var propIn = nestedProperty(containerIn, attribute);\n  var propOut = nestedProperty(containerOut, attribute);\n  var v = propIn.get();\n  var template = containerOut._template;\n  if (v === undefined && template) {\n    v = nestedProperty(template, attribute).get();\n    // already used the template value, so short-circuit the second check\n    template = 0;\n  }\n  if (dflt === undefined) dflt = opts.dflt;\n\n  /**\n   * arrayOk: value MAY be an array, then we do no value checking\n   * at this point, because it can be more complicated than the\n   * individual form (eg. some array vals can be numbers, even if the\n   * single values must be color strings)\n   */\n  if (opts.arrayOk && isArrayOrTypedArray(v)) {\n    propOut.set(v);\n    return v;\n  }\n  var coerceFunction = exports.valObjectMeta[opts.valType].coerceFunction;\n  coerceFunction(v, propOut, dflt, opts);\n  var out = propOut.get();\n  // in case v was provided but invalid, try the template again so it still\n  // overrides the regular default\n  if (template && out === dflt && !validate(v, opts)) {\n    v = nestedProperty(template, attribute).get();\n    coerceFunction(v, propOut, dflt, opts);\n    out = propOut.get();\n  }\n  return out;\n};\n\n/**\n * Variation on coerce\n *\n * Uses coerce to get attribute value if user input is valid,\n * returns attribute default if user input it not valid or\n * returns false if there is no user input.\n */\nexports.coerce2 = function (containerIn, containerOut, attributes, attribute, dflt) {\n  var propIn = nestedProperty(containerIn, attribute);\n  var propOut = exports.coerce(containerIn, containerOut, attributes, attribute, dflt);\n  var valIn = propIn.get();\n  return valIn !== undefined && valIn !== null ? propOut : false;\n};\n\n/*\n * Shortcut to coerce the three font attributes\n *\n * 'coerce' is a lib.coerce wrapper with implied first three arguments\n */\nexports.coerceFont = function (coerce, attr, dfltObj) {\n  var out = {};\n  dfltObj = dfltObj || {};\n  out.family = coerce(attr + '.family', dfltObj.family);\n  out.size = coerce(attr + '.size', dfltObj.size);\n  out.color = coerce(attr + '.color', dfltObj.color);\n  return out;\n};\n\n/*\n * Shortcut to coerce the pattern attributes\n */\nexports.coercePattern = function (coerce, attr, markerColor, hasMarkerColorscale) {\n  var shape = coerce(attr + '.shape');\n  if (shape) {\n    coerce(attr + '.solidity');\n    coerce(attr + '.size');\n    var fillmode = coerce(attr + '.fillmode');\n    var isOverlay = fillmode === 'overlay';\n    if (!hasMarkerColorscale) {\n      var bgcolor = coerce(attr + '.bgcolor', isOverlay ? markerColor : undefined);\n      coerce(attr + '.fgcolor', isOverlay ? Color.contrast(bgcolor) : markerColor);\n    }\n    coerce(attr + '.fgopacity', isOverlay ? 0.5 : 1);\n  }\n};\n\n/** Coerce shortcut for 'hoverinfo'\n * handling 1-vs-multi-trace dflt logic\n *\n * @param {object} traceIn : user trace object\n * @param {object} traceOut : full trace object (requires _module ref)\n * @param {object} layoutOut : full layout object (require _dataLength ref)\n * @return {any} : the coerced value\n */\nexports.coerceHoverinfo = function (traceIn, traceOut, layoutOut) {\n  var moduleAttrs = traceOut._module.attributes;\n  var attrs = moduleAttrs.hoverinfo ? moduleAttrs : baseTraceAttrs;\n  var valObj = attrs.hoverinfo;\n  var dflt;\n  if (layoutOut._dataLength === 1) {\n    var flags = valObj.dflt === 'all' ? valObj.flags.slice() : valObj.dflt.split('+');\n    flags.splice(flags.indexOf('name'), 1);\n    dflt = flags.join('+');\n  }\n  return exports.coerce(traceIn, traceOut, attrs, 'hoverinfo', dflt);\n};\n\n/** Coerce shortcut for [un]selected.marker.opacity,\n *  which has special default logic, to ensure that it corresponds to the\n *  default selection behavior while allowing to be overtaken by any other\n *  [un]selected attribute.\n *\n *  N.B. This must be called *after* coercing all the other [un]selected attrs,\n *  to give the intended result.\n *\n * @param {object} traceOut : fullData item\n * @param {function} coerce : lib.coerce wrapper with implied first three arguments\n */\nexports.coerceSelectionMarkerOpacity = function (traceOut, coerce) {\n  if (!traceOut.marker) return;\n  var mo = traceOut.marker.opacity;\n  // you can still have a `marker` container with no markers if there's text\n  if (mo === undefined) return;\n  var smoDflt;\n  var usmoDflt;\n\n  // Don't give [un]selected.marker.opacity a default value if\n  // marker.opacity is an array: handle this during style step.\n  //\n  // Only give [un]selected.marker.opacity a default value if you don't\n  // set any other [un]selected attributes.\n  if (!isArrayOrTypedArray(mo) && !traceOut.selected && !traceOut.unselected) {\n    smoDflt = mo;\n    usmoDflt = DESELECTDIM * mo;\n  }\n  coerce('selected.marker.opacity', smoDflt);\n  coerce('unselected.marker.opacity', usmoDflt);\n};\nfunction validate(value, opts) {\n  var valObjectDef = exports.valObjectMeta[opts.valType];\n  if (opts.arrayOk && isArrayOrTypedArray(value)) return true;\n  if (valObjectDef.validateFunction) {\n    return valObjectDef.validateFunction(value, opts);\n  }\n  var failed = {};\n  var out = failed;\n  var propMock = {\n    set: function (v) {\n      out = v;\n    }\n  };\n\n  // 'failed' just something mutable that won't be === anything else\n\n  valObjectDef.coerceFunction(value, propMock, failed, opts);\n  return out !== failed;\n}\nexports.validate = validate;\n\n/***/ }),\n\n/***/ 41631:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_765577__) {\n\n\"use strict\";\n\n\nvar timeFormat = (__nested_webpack_require_765577__(84096)/* .timeFormat */ .i$);\nvar isNumeric = __nested_webpack_require_765577__(92770);\nvar Loggers = __nested_webpack_require_765577__(47769);\nvar mod = (__nested_webpack_require_765577__(64872).mod);\nvar constants = __nested_webpack_require_765577__(50606);\nvar BADNUM = constants.BADNUM;\nvar ONEDAY = constants.ONEDAY;\nvar ONEHOUR = constants.ONEHOUR;\nvar ONEMIN = constants.ONEMIN;\nvar ONESEC = constants.ONESEC;\nvar EPOCHJD = constants.EPOCHJD;\nvar Registry = __nested_webpack_require_765577__(73972);\nvar utcFormat = (__nested_webpack_require_765577__(84096)/* .utcFormat */ .g0);\nvar DATETIME_REGEXP = /^\\s*(-?\\d\\d\\d\\d|\\d\\d)(-(\\d?\\d)(-(\\d?\\d)([ Tt]([01]?\\d|2[0-3])(:([0-5]\\d)(:([0-5]\\d(\\.\\d+)?))?(Z|z|[+\\-]\\d\\d(:?\\d\\d)?)?)?)?)?)?\\s*$/m;\n// special regex for chinese calendars to support yyyy-mmi-dd etc for intercalary months\nvar DATETIME_REGEXP_CN = /^\\s*(-?\\d\\d\\d\\d|\\d\\d)(-(\\d?\\di?)(-(\\d?\\d)([ Tt]([01]?\\d|2[0-3])(:([0-5]\\d)(:([0-5]\\d(\\.\\d+)?))?(Z|z|[+\\-]\\d\\d(:?\\d\\d)?)?)?)?)?)?\\s*$/m;\n\n// for 2-digit years, the first year we map them onto\nvar YFIRST = new Date().getFullYear() - 70;\nfunction isWorldCalendar(calendar) {\n  return calendar && Registry.componentsRegistry.calendars && typeof calendar === 'string' && calendar !== 'gregorian';\n}\n\n/*\n * dateTick0: get the canonical tick for this calendar\n *\n * integer weekdays : Saturday: 0, Sunday: 1, Monday: 2, etc.\n */\nexports.dateTick0 = function (calendar, dayOfWeek) {\n  var tick0 = _dateTick0(calendar, !!dayOfWeek);\n  if (dayOfWeek < 2) return tick0;\n  var v = exports.dateTime2ms(tick0, calendar);\n  v += ONEDAY * (dayOfWeek - 1); // shift Sunday to Monday, etc.\n  return exports.ms2DateTime(v, 0, calendar);\n};\n\n/*\n * _dateTick0: get the canonical tick for this calendar\n *\n * bool sunday is for week ticks, shift it to a Sunday.\n */\nfunction _dateTick0(calendar, sunday) {\n  if (isWorldCalendar(calendar)) {\n    return sunday ? Registry.getComponentMethod('calendars', 'CANONICAL_SUNDAY')[calendar] : Registry.getComponentMethod('calendars', 'CANONICAL_TICK')[calendar];\n  } else {\n    return sunday ? '2000-01-02' : '2000-01-01';\n  }\n}\n\n/*\n * dfltRange: for each calendar, give a valid default range\n */\nexports.dfltRange = function (calendar) {\n  if (isWorldCalendar(calendar)) {\n    return Registry.getComponentMethod('calendars', 'DFLTRANGE')[calendar];\n  } else {\n    return ['2000-01-01', '2001-01-01'];\n  }\n};\n\n// is an object a javascript date?\nexports.isJSDate = function (v) {\n  return typeof v === 'object' && v !== null && typeof v.getTime === 'function';\n};\n\n// The absolute limits of our date-time system\n// This is a little weird: we use MIN_MS and MAX_MS in dateTime2ms\n// but we use dateTime2ms to calculate them (after defining it!)\nvar MIN_MS, MAX_MS;\n\n/**\n * dateTime2ms - turn a date object or string s into milliseconds\n * (relative to 1970-01-01, per javascript standard)\n * optional calendar (string) to use a non-gregorian calendar\n *\n * Returns BADNUM if it doesn't find a date\n *\n * strings should have the form:\n *\n *    -?YYYY-mm-dd<sep>HH:MM:SS.sss<tzInfo>?\n *\n * <sep>: space (our normal standard) or T or t (ISO-8601)\n * <tzInfo>: Z, z, [+\\-]HH:?MM or [+\\-]HH and we THROW IT AWAY\n * this format comes from https://tools.ietf.org/html/rfc3339#section-5.6\n * and 4.2.5.1 Difference between local time and UTC of day (ISO-8601)\n * but we allow it even with a space as the separator\n *\n * May truncate after any full field, and sss can be any length\n * even >3 digits, though javascript dates truncate to milliseconds,\n * we keep as much as javascript numeric precision can hold, but we only\n * report back up to 100 microsecond precision, because most dates support\n * this precision (close to 1970 support more, very far away support less)\n *\n * Expanded to support negative years to -9999 but you must always\n * give 4 digits, except for 2-digit positive years which we assume are\n * near the present time.\n * Note that we follow ISO 8601:2004: there *is* a year 0, which\n * is 1BC/BCE, and -1===2BC etc.\n *\n * World calendars: not all of these *have* agreed extensions to this full range,\n * if you have another calendar system but want a date range outside its validity,\n * you can use a gregorian date string prefixed with 'G' or 'g'.\n *\n * Where to cut off 2-digit years between 1900s and 2000s?\n * from https://docs.microsoft.com/en-us/office/troubleshoot/excel/two-digit-year-numbers#the-2029-rule:\n *   1930-2029 (the most retro of all...)\n * but in my mac chrome from eg. d=new Date(Date.parse('8/19/50')):\n *   1950-2049\n * by Java, from http://stackoverflow.com/questions/2024273/:\n *   now-80 - now+19\n * or FileMaker Pro, from\n *      https://fmhelp.filemaker.com/help/18/fmp/en/index.html#page/FMP_Help/dates-with-two-digit-years.html:\n *   now-70 - now+29\n * but python strptime etc, via\n *      http://docs.python.org/py3k/library/time.html:\n *   1969-2068 (super forward-looking, but static, not sliding!)\n *\n * lets go with now-70 to now+29, and if anyone runs into this problem\n * they can learn the hard way not to use 2-digit years, as no choice we\n * make now will cover all possibilities. mostly this will all be taken\n * care of in initial parsing, should only be an issue for hand-entered data\n * currently (2016) this range is:\n *   1946-2045\n */\nexports.dateTime2ms = function (s, calendar) {\n  // first check if s is a date object\n  if (exports.isJSDate(s)) {\n    // Convert to the UTC milliseconds that give the same\n    // hours as this date has in the local timezone\n    var tzOffset = s.getTimezoneOffset() * ONEMIN;\n    var offsetTweak = (s.getUTCMinutes() - s.getMinutes()) * ONEMIN + (s.getUTCSeconds() - s.getSeconds()) * ONESEC + (s.getUTCMilliseconds() - s.getMilliseconds());\n    if (offsetTweak) {\n      var comb = 3 * ONEMIN;\n      tzOffset = tzOffset - comb / 2 + mod(offsetTweak - tzOffset + comb / 2, comb);\n    }\n    s = Number(s) - tzOffset;\n    if (s >= MIN_MS && s <= MAX_MS) return s;\n    return BADNUM;\n  }\n  // otherwise only accept strings and numbers\n  if (typeof s !== 'string' && typeof s !== 'number') return BADNUM;\n  s = String(s);\n  var isWorld = isWorldCalendar(calendar);\n\n  // to handle out-of-range dates in international calendars, accept\n  // 'G' as a prefix to force the built-in gregorian calendar.\n  var s0 = s.charAt(0);\n  if (isWorld && (s0 === 'G' || s0 === 'g')) {\n    s = s.substr(1);\n    calendar = '';\n  }\n  var isChinese = isWorld && calendar.substr(0, 7) === 'chinese';\n  var match = s.match(isChinese ? DATETIME_REGEXP_CN : DATETIME_REGEXP);\n  if (!match) return BADNUM;\n  var y = match[1];\n  var m = match[3] || '1';\n  var d = Number(match[5] || 1);\n  var H = Number(match[7] || 0);\n  var M = Number(match[9] || 0);\n  var S = Number(match[11] || 0);\n  if (isWorld) {\n    // disallow 2-digit years for world calendars\n    if (y.length === 2) return BADNUM;\n    y = Number(y);\n    var cDate;\n    try {\n      var calInstance = Registry.getComponentMethod('calendars', 'getCal')(calendar);\n      if (isChinese) {\n        var isIntercalary = m.charAt(m.length - 1) === 'i';\n        m = parseInt(m, 10);\n        cDate = calInstance.newDate(y, calInstance.toMonthIndex(y, m, isIntercalary), d);\n      } else {\n        cDate = calInstance.newDate(y, Number(m), d);\n      }\n    } catch (e) {\n      return BADNUM;\n    } // Invalid ... date\n\n    if (!cDate) return BADNUM;\n    return (cDate.toJD() - EPOCHJD) * ONEDAY + H * ONEHOUR + M * ONEMIN + S * ONESEC;\n  }\n  if (y.length === 2) {\n    y = (Number(y) + 2000 - YFIRST) % 100 + YFIRST;\n  } else y = Number(y);\n\n  // new Date uses months from 0; subtract 1 here just so we\n  // don't have to do it again during the validity test below\n  m -= 1;\n\n  // javascript takes new Date(0..99,m,d) to mean 1900-1999, so\n  // to support years 0-99 we need to use setFullYear explicitly\n  // Note that 2000 is a leap year.\n  var date = new Date(Date.UTC(2000, m, d, H, M));\n  date.setUTCFullYear(y);\n  if (date.getUTCMonth() !== m) return BADNUM;\n  if (date.getUTCDate() !== d) return BADNUM;\n  return date.getTime() + S * ONESEC;\n};\nMIN_MS = exports.MIN_MS = exports.dateTime2ms('-9999');\nMAX_MS = exports.MAX_MS = exports.dateTime2ms('9999-12-31 23:59:59.9999');\n\n// is string s a date? (see above)\nexports.isDateTime = function (s, calendar) {\n  return exports.dateTime2ms(s, calendar) !== BADNUM;\n};\n\n// pad a number with zeroes, to given # of digits before the decimal point\nfunction lpad(val, digits) {\n  return String(val + Math.pow(10, digits)).substr(1);\n}\n\n/**\n * Turn ms into string of the form YYYY-mm-dd HH:MM:SS.ssss\n * Crop any trailing zeros in time, except never stop right after hours\n * (we could choose to crop '-01' from date too but for now we always\n * show the whole date)\n * Optional range r is the data range that applies, also in ms.\n * If rng is big, the later parts of time will be omitted\n */\nvar NINETYDAYS = 90 * ONEDAY;\nvar THREEHOURS = 3 * ONEHOUR;\nvar FIVEMIN = 5 * ONEMIN;\nexports.ms2DateTime = function (ms, r, calendar) {\n  if (typeof ms !== 'number' || !(ms >= MIN_MS && ms <= MAX_MS)) return BADNUM;\n  if (!r) r = 0;\n  var msecTenths = Math.floor(mod(ms + 0.05, 1) * 10);\n  var msRounded = Math.round(ms - msecTenths / 10);\n  var dateStr, h, m, s, msec10, d;\n  if (isWorldCalendar(calendar)) {\n    var dateJD = Math.floor(msRounded / ONEDAY) + EPOCHJD;\n    var timeMs = Math.floor(mod(ms, ONEDAY));\n    try {\n      dateStr = Registry.getComponentMethod('calendars', 'getCal')(calendar).fromJD(dateJD).formatDate('yyyy-mm-dd');\n    } catch (e) {\n      // invalid date in this calendar - fall back to Gyyyy-mm-dd\n      dateStr = utcFormat('G%Y-%m-%d')(new Date(msRounded));\n    }\n\n    // yyyy does NOT guarantee 4-digit years. YYYY mostly does, but does\n    // other things for a few calendars, so we can't trust it. Just pad\n    // it manually (after the '-' if there is one)\n    if (dateStr.charAt(0) === '-') {\n      while (dateStr.length < 11) dateStr = '-0' + dateStr.substr(1);\n    } else {\n      while (dateStr.length < 10) dateStr = '0' + dateStr;\n    }\n\n    // TODO: if this is faster, we could use this block for extracting\n    // the time components of regular gregorian too\n    h = r < NINETYDAYS ? Math.floor(timeMs / ONEHOUR) : 0;\n    m = r < NINETYDAYS ? Math.floor(timeMs % ONEHOUR / ONEMIN) : 0;\n    s = r < THREEHOURS ? Math.floor(timeMs % ONEMIN / ONESEC) : 0;\n    msec10 = r < FIVEMIN ? timeMs % ONESEC * 10 + msecTenths : 0;\n  } else {\n    d = new Date(msRounded);\n    dateStr = utcFormat('%Y-%m-%d')(d);\n\n    // <90 days: add hours and minutes - never *only* add hours\n    h = r < NINETYDAYS ? d.getUTCHours() : 0;\n    m = r < NINETYDAYS ? d.getUTCMinutes() : 0;\n    // <3 hours: add seconds\n    s = r < THREEHOURS ? d.getUTCSeconds() : 0;\n    // <5 minutes: add ms (plus one extra digit, this is msec*10)\n    msec10 = r < FIVEMIN ? d.getUTCMilliseconds() * 10 + msecTenths : 0;\n  }\n  return includeTime(dateStr, h, m, s, msec10);\n};\n\n// For converting old-style milliseconds to date strings,\n// we use the local timezone rather than UTC like we use\n// everywhere else, both for backward compatibility and\n// because that's how people mostly use javasript date objects.\n// Clip one extra day off our date range though so we can't get\n// thrown beyond the range by the timezone shift.\nexports.ms2DateTimeLocal = function (ms) {\n  if (!(ms >= MIN_MS + ONEDAY && ms <= MAX_MS - ONEDAY)) return BADNUM;\n  var msecTenths = Math.floor(mod(ms + 0.05, 1) * 10);\n  var d = new Date(Math.round(ms - msecTenths / 10));\n  var dateStr = timeFormat('%Y-%m-%d')(d);\n  var h = d.getHours();\n  var m = d.getMinutes();\n  var s = d.getSeconds();\n  var msec10 = d.getUTCMilliseconds() * 10 + msecTenths;\n  return includeTime(dateStr, h, m, s, msec10);\n};\nfunction includeTime(dateStr, h, m, s, msec10) {\n  // include each part that has nonzero data in or after it\n  if (h || m || s || msec10) {\n    dateStr += ' ' + lpad(h, 2) + ':' + lpad(m, 2);\n    if (s || msec10) {\n      dateStr += ':' + lpad(s, 2);\n      if (msec10) {\n        var digits = 4;\n        while (msec10 % 10 === 0) {\n          digits -= 1;\n          msec10 /= 10;\n        }\n        dateStr += '.' + lpad(msec10, digits);\n      }\n    }\n  }\n  return dateStr;\n}\n\n// normalize date format to date string, in case it starts as\n// a Date object or milliseconds\n// optional dflt is the return value if cleaning fails\nexports.cleanDate = function (v, dflt, calendar) {\n  // let us use cleanDate to provide a missing default without an error\n  if (v === BADNUM) return dflt;\n  if (exports.isJSDate(v) || typeof v === 'number' && isFinite(v)) {\n    // do not allow milliseconds (old) or jsdate objects (inherently\n    // described as gregorian dates) with world calendars\n    if (isWorldCalendar(calendar)) {\n      Loggers.error('JS Dates and milliseconds are incompatible with world calendars', v);\n      return dflt;\n    }\n\n    // NOTE: if someone puts in a year as a number rather than a string,\n    // this will mistakenly convert it thinking it's milliseconds from 1970\n    // that is: '2012' -> Jan. 1, 2012, but 2012 -> 2012 epoch milliseconds\n    v = exports.ms2DateTimeLocal(+v);\n    if (!v && dflt !== undefined) return dflt;\n  } else if (!exports.isDateTime(v, calendar)) {\n    Loggers.error('unrecognized date', v);\n    return dflt;\n  }\n  return v;\n};\n\n/*\n *  Date formatting for ticks and hovertext\n */\n\n/*\n * modDateFormat: Support world calendars, and add two items to\n * d3's vocabulary:\n * %{n}f where n is the max number of digits of fractional seconds\n * %h formats: half of the year as a decimal number [1,2]\n */\nvar fracMatch = /%\\d?f/g;\nvar halfYearMatch = /%h/g;\nvar quarterToHalfYear = {\n  '1': '1',\n  '2': '1',\n  '3': '2',\n  '4': '2'\n};\nfunction modDateFormat(fmt, x, formatter, calendar) {\n  fmt = fmt.replace(fracMatch, function (match) {\n    var digits = Math.min(+match.charAt(1) || 6, 6);\n    var fracSecs = (x / 1000 % 1 + 2).toFixed(digits).substr(2).replace(/0+$/, '') || '0';\n    return fracSecs;\n  });\n  var d = new Date(Math.floor(x + 0.05));\n  fmt = fmt.replace(halfYearMatch, function () {\n    return quarterToHalfYear[formatter('%q')(d)];\n  });\n  if (isWorldCalendar(calendar)) {\n    try {\n      fmt = Registry.getComponentMethod('calendars', 'worldCalFmt')(fmt, x, calendar);\n    } catch (e) {\n      return 'Invalid';\n    }\n  }\n  return formatter(fmt)(d);\n}\n\n/*\n * formatTime: create a time string from:\n *   x: milliseconds\n *   tr: tickround ('M', 'S', or # digits)\n * only supports UTC times (where every day is 24 hours and 0 is at midnight)\n */\nvar MAXSECONDS = [59, 59.9, 59.99, 59.999, 59.9999];\nfunction formatTime(x, tr) {\n  var timePart = mod(x + 0.05, ONEDAY);\n  var timeStr = lpad(Math.floor(timePart / ONEHOUR), 2) + ':' + lpad(mod(Math.floor(timePart / ONEMIN), 60), 2);\n  if (tr !== 'M') {\n    if (!isNumeric(tr)) tr = 0; // should only be 'S'\n\n    /*\n     * this is a weird one - and shouldn't come up unless people\n     * monkey with tick0 in weird ways, but we need to do something!\n     * IN PARTICULAR we had better not display garbage (see below)\n     * for numbers we always round to the nearest increment of the\n     * precision we're showing, and this seems like the right way to\n     * handle seconds and milliseconds, as they have a decimal point\n     * and people will interpret that to mean rounding like numbers.\n     * but for larger increments we floor the value: it's always\n     * 2013 until the ball drops on the new year. We could argue about\n     * which field it is where we start rounding (should 12:08:59\n     * round to 12:09 if we're stopping at minutes?) but for now I'll\n     * say we round seconds but floor everything else. BUT that means\n     * we need to never round up to 60 seconds, ie 23:59:60\n     */\n    var sec = Math.min(mod(x / ONESEC, 60), MAXSECONDS[tr]);\n    var secStr = (100 + sec).toFixed(tr).substr(1);\n    if (tr > 0) {\n      secStr = secStr.replace(/0+$/, '').replace(/[\\.]$/, '');\n    }\n    timeStr += ':' + secStr;\n  }\n  return timeStr;\n}\n\n/*\n * formatDate: turn a date into tick or hover label text.\n *\n *   x: milliseconds, the value to convert\n *   fmt: optional, an explicit format string (d3 format, even for world calendars)\n *   tr: tickround ('y', 'm', 'd', 'M', 'S', or # digits)\n *      used if no explicit fmt is provided\n *   formatter: locale-aware d3 date formatter for standard gregorian calendars\n *      should be the result of exports.getD3DateFormat(gd)\n *   calendar: optional string, the world calendar system to use\n *\n * returns the date/time as a string, potentially with the leading portion\n * on a separate line (after '\\n')\n * Note that this means if you provide an explicit format which includes '\\n'\n * the axis may choose to strip things after it when they don't change from\n * one tick to the next (as it does with automatic formatting)\n */\nexports.formatDate = function (x, fmt, tr, formatter, calendar, extraFormat) {\n  calendar = isWorldCalendar(calendar) && calendar;\n  if (!fmt) {\n    if (tr === 'y') fmt = extraFormat.year;else if (tr === 'm') fmt = extraFormat.month;else if (tr === 'd') {\n      fmt = extraFormat.dayMonth + '\\n' + extraFormat.year;\n    } else {\n      return formatTime(x, tr) + '\\n' + modDateFormat(extraFormat.dayMonthYear, x, formatter, calendar);\n    }\n  }\n  return modDateFormat(fmt, x, formatter, calendar);\n};\n\n/*\n * incrementMonth: make a new milliseconds value from the given one,\n * having changed the month\n *\n * special case for world calendars: multiples of 12 are treated as years,\n * even for calendar systems that don't have (always or ever) 12 months/year\n * TODO: perhaps we need a different code for year increments to support this?\n *\n * ms (number): the initial millisecond value\n * dMonth (int): the (signed) number of months to shift\n * calendar (string): the calendar system to use\n *\n * changing month does not (and CANNOT) always preserve day, since\n * months have different lengths. The worst example of this is:\n *   d = new Date(1970,0,31); d.setMonth(1) -> Feb 31 turns into Mar 3\n *\n * But we want to be able to iterate over the last day of each month,\n * regardless of what its number is.\n * So shift 3 days forward, THEN set the new month, then unshift:\n *   1/31 -> 2/28 (or 29) -> 3/31 -> 4/30 -> ...\n *\n * Note that odd behavior still exists if you start from the 26th-28th:\n *   1/28 -> 2/28 -> 3/31\n * but at least you can't shift any dates into the wrong month,\n * and ticks on these days incrementing by month would be very unusual\n */\nvar THREEDAYS = 3 * ONEDAY;\nexports.incrementMonth = function (ms, dMonth, calendar) {\n  calendar = isWorldCalendar(calendar) && calendar;\n\n  // pull time out and operate on pure dates, then add time back at the end\n  // this gives maximum precision - not that we *normally* care if we're\n  // incrementing by month, but better to be safe!\n  var timeMs = mod(ms, ONEDAY);\n  ms = Math.round(ms - timeMs);\n  if (calendar) {\n    try {\n      var dateJD = Math.round(ms / ONEDAY) + EPOCHJD;\n      var calInstance = Registry.getComponentMethod('calendars', 'getCal')(calendar);\n      var cDate = calInstance.fromJD(dateJD);\n      if (dMonth % 12) calInstance.add(cDate, dMonth, 'm');else calInstance.add(cDate, dMonth / 12, 'y');\n      return (cDate.toJD() - EPOCHJD) * ONEDAY + timeMs;\n    } catch (e) {\n      Loggers.error('invalid ms ' + ms + ' in calendar ' + calendar);\n      // then keep going in gregorian even though the result will be 'Invalid'\n    }\n  }\n\n  var y = new Date(ms + THREEDAYS);\n  return y.setUTCMonth(y.getUTCMonth() + dMonth) + timeMs - THREEDAYS;\n};\n\n/*\n * findExactDates: what fraction of data is exact days, months, or years?\n *\n * data: array of millisecond values\n * calendar (string) the calendar to test against\n */\nexports.findExactDates = function (data, calendar) {\n  var exactYears = 0;\n  var exactMonths = 0;\n  var exactDays = 0;\n  var blankCount = 0;\n  var d;\n  var di;\n  var calInstance = isWorldCalendar(calendar) && Registry.getComponentMethod('calendars', 'getCal')(calendar);\n  for (var i = 0; i < data.length; i++) {\n    di = data[i];\n\n    // not date data at all\n    if (!isNumeric(di)) {\n      blankCount++;\n      continue;\n    }\n\n    // not an exact date\n    if (di % ONEDAY) continue;\n    if (calInstance) {\n      try {\n        d = calInstance.fromJD(di / ONEDAY + EPOCHJD);\n        if (d.day() === 1) {\n          if (d.month() === 1) exactYears++;else exactMonths++;\n        } else exactDays++;\n      } catch (e) {\n        // invalid date in this calendar - ignore it here.\n      }\n    } else {\n      d = new Date(di);\n      if (d.getUTCDate() === 1) {\n        if (d.getUTCMonth() === 0) exactYears++;else exactMonths++;\n      } else exactDays++;\n    }\n  }\n  exactMonths += exactYears;\n  exactDays += exactMonths;\n  var dataCount = data.length - blankCount;\n  return {\n    exactYears: exactYears / dataCount,\n    exactMonths: exactMonths / dataCount,\n    exactDays: exactDays / dataCount\n  };\n};\n\n/***/ }),\n\n/***/ 24401:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_786528__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_786528__(39898);\nvar loggers = __nested_webpack_require_786528__(47769);\nvar matrix = __nested_webpack_require_786528__(35657);\nvar mat4X4 = __nested_webpack_require_786528__(79576);\n\n/**\n * Allow referencing a graph DOM element either directly\n * or by its id string\n *\n * @param {HTMLDivElement|string} gd: a graph element or its id\n *\n * @returns {HTMLDivElement} the DOM element of the graph\n */\nfunction getGraphDiv(gd) {\n  var gdElement;\n  if (typeof gd === 'string') {\n    gdElement = document.getElementById(gd);\n    if (gdElement === null) {\n      throw new Error('No DOM element with id \\'' + gd + '\\' exists on the page.');\n    }\n    return gdElement;\n  } else if (gd === null || gd === undefined) {\n    throw new Error('DOM element provided is null or undefined');\n  }\n\n  // otherwise assume that gd is a DOM element\n  return gd;\n}\nfunction isPlotDiv(el) {\n  var el3 = d3.select(el);\n  return el3.node() instanceof HTMLElement && el3.size() && el3.classed('js-plotly-plot');\n}\nfunction removeElement(el) {\n  var elParent = el && el.parentNode;\n  if (elParent) elParent.removeChild(el);\n}\n\n/**\n * for dynamically adding style rules\n * makes one stylesheet that contains all rules added\n * by all calls to this function\n */\nfunction addStyleRule(selector, styleString) {\n  addRelatedStyleRule('global', selector, styleString);\n}\n\n/**\n * for dynamically adding style rules\n * to a stylesheet uniquely identified by a uid\n */\nfunction addRelatedStyleRule(uid, selector, styleString) {\n  var id = 'plotly.js-style-' + uid;\n  var style = document.getElementById(id);\n  if (!style) {\n    style = document.createElement('style');\n    style.setAttribute('id', id);\n    // WebKit hack :(\n    style.appendChild(document.createTextNode(''));\n    document.head.appendChild(style);\n  }\n  var styleSheet = style.sheet;\n  if (styleSheet.insertRule) {\n    styleSheet.insertRule(selector + '{' + styleString + '}', 0);\n  } else if (styleSheet.addRule) {\n    styleSheet.addRule(selector, styleString, 0);\n  } else loggers.warn('addStyleRule failed');\n}\n\n/**\n * to remove from the page a stylesheet identified by a given uid\n */\nfunction deleteRelatedStyleRule(uid) {\n  var id = 'plotly.js-style-' + uid;\n  var style = document.getElementById(id);\n  if (style) removeElement(style);\n}\nfunction getFullTransformMatrix(element) {\n  var allElements = getElementAndAncestors(element);\n  // the identity matrix\n  var out = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n  allElements.forEach(function (e) {\n    var t = getElementTransformMatrix(e);\n    if (t) {\n      var m = matrix.convertCssMatrix(t);\n      out = mat4X4.multiply(out, out, m);\n    }\n  });\n  return out;\n}\n\n/**\n * extracts and parses the 2d css style transform matrix from some element\n */\nfunction getElementTransformMatrix(element) {\n  var style = window.getComputedStyle(element, null);\n  var transform = style.getPropertyValue('-webkit-transform') || style.getPropertyValue('-moz-transform') || style.getPropertyValue('-ms-transform') || style.getPropertyValue('-o-transform') || style.getPropertyValue('transform');\n  if (transform === 'none') return null;\n  // the transform is a string in the form of matrix(a, b, ...) or matrix3d(...)\n  return transform.replace('matrix', '').replace('3d', '').slice(1, -1).split(',').map(function (n) {\n    return +n;\n  });\n}\n/**\n * retrieve all DOM elements that are ancestors of the specified one (including itself)\n */\nfunction getElementAndAncestors(element) {\n  var allElements = [];\n  while (isTransformableElement(element)) {\n    allElements.push(element);\n    element = element.parentNode;\n  }\n  return allElements;\n}\nfunction isTransformableElement(element) {\n  return element && (element instanceof Element || element instanceof HTMLElement);\n}\nfunction equalDomRects(a, b) {\n  return a && b && a.top === b.top && a.left === b.left && a.right === b.right && a.bottom === b.bottom;\n}\nmodule.exports = {\n  getGraphDiv: getGraphDiv,\n  isPlotDiv: isPlotDiv,\n  removeElement: removeElement,\n  addStyleRule: addStyleRule,\n  addRelatedStyleRule: addRelatedStyleRule,\n  deleteRelatedStyleRule: deleteRelatedStyleRule,\n  getFullTransformMatrix: getFullTransformMatrix,\n  getElementTransformMatrix: getElementTransformMatrix,\n  getElementAndAncestors: getElementAndAncestors,\n  equalDomRects: equalDomRects\n};\n\n/***/ }),\n\n/***/ 11086:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_790931__) {\n\n\"use strict\";\n\n\n/* global jQuery:false */\nvar EventEmitter = (__nested_webpack_require_790931__(15398).EventEmitter);\nvar Events = {\n  init: function (plotObj) {\n    /*\n     * If we have already instantiated an emitter for this plot\n     * return early.\n     */\n    if (plotObj._ev instanceof EventEmitter) return plotObj;\n    var ev = new EventEmitter();\n    var internalEv = new EventEmitter();\n\n    /*\n     * Assign to plot._ev while we still live in a land\n     * where plot is a DOM element with stuff attached to it.\n     * In the future we can make plot the event emitter itself.\n     */\n    plotObj._ev = ev;\n\n    /*\n     * Create a second event handler that will manage events *internally*.\n     * This allows parts of plotly to respond to thing like relayout without\n     * having to use the user-facing event handler. They cannot peacefully\n     * coexist on the same handler because a user invoking\n     * plotObj.removeAllListeners() would detach internal events, breaking\n     * plotly.\n     */\n    plotObj._internalEv = internalEv;\n\n    /*\n     * Assign bound methods from the ev to the plot object. These methods\n     * will reference the 'this' of plot._ev even though they are methods\n     * of plot. This will keep the event machinery away from the plot object\n     * which currently is often a DOM element but presents an API that will\n     * continue to function when plot becomes an emitter. Not all EventEmitter\n     * methods have been bound to `plot` as some do not currently add value to\n     * the Plotly event API.\n     */\n    plotObj.on = ev.on.bind(ev);\n    plotObj.once = ev.once.bind(ev);\n    plotObj.removeListener = ev.removeListener.bind(ev);\n    plotObj.removeAllListeners = ev.removeAllListeners.bind(ev);\n\n    /*\n     * Create functions for managing internal events. These are *only* triggered\n     * by the mirroring of external events via the emit function.\n     */\n    plotObj._internalOn = internalEv.on.bind(internalEv);\n    plotObj._internalOnce = internalEv.once.bind(internalEv);\n    plotObj._removeInternalListener = internalEv.removeListener.bind(internalEv);\n    plotObj._removeAllInternalListeners = internalEv.removeAllListeners.bind(internalEv);\n\n    /*\n     * We must wrap emit to continue to support JQuery events. The idea\n     * is to check to see if the user is using JQuery events, if they are\n     * we emit JQuery events to trigger user handlers as well as the EventEmitter\n     * events.\n     */\n    plotObj.emit = function (event, data) {\n      if (typeof jQuery !== 'undefined') {\n        jQuery(plotObj).trigger(event, data);\n      }\n      ev.emit(event, data);\n      internalEv.emit(event, data);\n    };\n    return plotObj;\n  },\n  /*\n   * This function behaves like jQuery's triggerHandler. It calls\n   * all handlers for a particular event and returns the return value\n   * of the LAST handler. This function also triggers jQuery's\n   * triggerHandler for backwards compatibility.\n   */\n  triggerHandler: function (plotObj, event, data) {\n    var jQueryHandlerValue;\n    var nodeEventHandlerValue;\n\n    /*\n     * If jQuery exists run all its handlers for this event and\n     * collect the return value of the LAST handler function\n     */\n    if (typeof jQuery !== 'undefined') {\n      jQueryHandlerValue = jQuery(plotObj).triggerHandler(event, data);\n    }\n\n    /*\n     * Now run all the node style event handlers\n     */\n    var ev = plotObj._ev;\n    if (!ev) return jQueryHandlerValue;\n    var handlers = ev._events[event];\n    if (!handlers) return jQueryHandlerValue;\n\n    // making sure 'this' is the EventEmitter instance\n    function apply(handler) {\n      // The 'once' case, we can't just call handler() as we need\n      // the return value here. So,\n      // - remove handler\n      // - call listener and grab return value!\n      // - stash 'fired' key to not call handler twice\n      if (handler.listener) {\n        ev.removeListener(event, handler.listener);\n        if (!handler.fired) {\n          handler.fired = true;\n          return handler.listener.apply(ev, [data]);\n        }\n      } else {\n        return handler.apply(ev, [data]);\n      }\n    }\n\n    // handlers can be function or an array of functions\n    handlers = Array.isArray(handlers) ? handlers : [handlers];\n    var i;\n    for (i = 0; i < handlers.length - 1; i++) {\n      apply(handlers[i]);\n    }\n    // now call the final handler and collect its value\n    nodeEventHandlerValue = apply(handlers[i]);\n\n    /*\n     * Return either the jQuery handler value if it exists or the\n     * nodeEventHandler value. jQuery event value supersedes nodejs\n     * events for backwards compatibility reasons.\n     */\n    return jQueryHandlerValue !== undefined ? jQueryHandlerValue : nodeEventHandlerValue;\n  },\n  purge: function (plotObj) {\n    delete plotObj._ev;\n    delete plotObj.on;\n    delete plotObj.once;\n    delete plotObj.removeListener;\n    delete plotObj.removeAllListeners;\n    delete plotObj.emit;\n    delete plotObj._ev;\n    delete plotObj._internalEv;\n    delete plotObj._internalOn;\n    delete plotObj._internalOnce;\n    delete plotObj._removeInternalListener;\n    delete plotObj._removeAllInternalListeners;\n    return plotObj;\n  }\n};\nmodule.exports = Events;\n\n/***/ }),\n\n/***/ 1426:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_796229__) {\n\n\"use strict\";\n\n\nvar isPlainObject = __nested_webpack_require_796229__(41965);\nvar isArray = Array.isArray;\nfunction primitivesLoopSplice(source, target) {\n  var i, value;\n  for (i = 0; i < source.length; i++) {\n    value = source[i];\n    if (value !== null && typeof value === 'object') {\n      return false;\n    }\n    if (value !== void 0) {\n      target[i] = value;\n    }\n  }\n  return true;\n}\nexports.extendFlat = function () {\n  return _extend(arguments, false, false, false);\n};\nexports.extendDeep = function () {\n  return _extend(arguments, true, false, false);\n};\nexports.extendDeepAll = function () {\n  return _extend(arguments, true, true, false);\n};\nexports.extendDeepNoArrays = function () {\n  return _extend(arguments, true, false, true);\n};\n\n/*\n * Inspired by https://github.com/justmoon/node-extend/blob/master/index.js\n * All credit to the jQuery authors for perfecting this amazing utility.\n *\n * API difference with jQuery version:\n * - No optional boolean (true -> deep extend) first argument,\n *   use `extendFlat` for first-level only extend and\n *   use `extendDeep` for a deep extend.\n *\n * Other differences with jQuery version:\n * - Uses a modern (and faster) isPlainObject routine.\n * - Expected to work with object {} and array [] arguments only.\n * - Does not check for circular structure.\n *   FYI: jQuery only does a check across one level.\n *   Warning: this might result in infinite loops.\n *\n */\nfunction _extend(inputs, isDeep, keepAllKeys, noArrayCopies) {\n  var target = inputs[0];\n  var length = inputs.length;\n  var input, key, src, copy, copyIsArray, clone, allPrimitives;\n\n  // TODO does this do the right thing for typed arrays?\n\n  if (length === 2 && isArray(target) && isArray(inputs[1]) && target.length === 0) {\n    allPrimitives = primitivesLoopSplice(inputs[1], target);\n    if (allPrimitives) {\n      return target;\n    } else {\n      target.splice(0, target.length); // reset target and continue to next block\n    }\n  }\n\n  for (var i = 1; i < length; i++) {\n    input = inputs[i];\n    for (key in input) {\n      src = target[key];\n      copy = input[key];\n      if (noArrayCopies && isArray(copy)) {\n        // Stop early and just transfer the array if array copies are disallowed:\n\n        target[key] = copy;\n      } else if (isDeep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n        // recurse if we're merging plain objects or arrays\n\n        if (copyIsArray) {\n          copyIsArray = false;\n          clone = src && isArray(src) ? src : [];\n        } else {\n          clone = src && isPlainObject(src) ? src : {};\n        }\n\n        // never move original objects, clone them\n        target[key] = _extend([clone, copy], isDeep, keepAllKeys, noArrayCopies);\n      } else if (typeof copy !== 'undefined' || keepAllKeys) {\n        // don't bring in undefined values, except for extendDeepAll\n\n        target[key] = copy;\n      }\n    }\n  }\n  return target;\n}\n\n/***/ }),\n\n/***/ 75744:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/**\n * Return news array containing only the unique items\n * found in input array.\n *\n * IMPORTANT: Note that items are considered unique\n * if `String({})` is unique. For example;\n *\n *  Lib.filterUnique([ { a: 1 }, { b: 2 } ])\n *\n *  returns [{ a: 1 }]\n *\n * and\n *\n *  Lib.filterUnique([ '1', 1 ])\n *\n *  returns ['1']\n *\n *\n * @param {array} array base array\n * @return {array} new filtered array\n */\nmodule.exports = function filterUnique(array) {\n  var seen = {};\n  var out = [];\n  var j = 0;\n  for (var i = 0; i < array.length; i++) {\n    var item = array[i];\n    if (seen[item] !== 1) {\n      seen[item] = 1;\n      out[j++] = item;\n    }\n  }\n  return out;\n};\n\n/***/ }),\n\n/***/ 76756:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/** Filter out object items with visible !== true\n *  insider array container.\n *\n *  @param {array of objects} container\n *  @return {array of objects} of length <= container\n *\n */\nmodule.exports = function filterVisible(container) {\n  var filterFn = isCalcData(container) ? calcDataFilter : baseFilter;\n  var out = [];\n  for (var i = 0; i < container.length; i++) {\n    var item = container[i];\n    if (filterFn(item)) out.push(item);\n  }\n  return out;\n};\nfunction baseFilter(item) {\n  return item.visible === true;\n}\nfunction calcDataFilter(item) {\n  var trace = item[0].trace;\n  return trace.visible === true && trace._length !== 0;\n}\nfunction isCalcData(cont) {\n  return Array.isArray(cont) && Array.isArray(cont[0]) && cont[0][0] && cont[0][0].trace;\n}\n\n/***/ }),\n\n/***/ 41327:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_800812__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_800812__(39898);\nvar countryRegex = __nested_webpack_require_800812__(24138);\nvar turfArea = __nested_webpack_require_800812__(30774);\nvar turfCentroid = __nested_webpack_require_800812__(29261);\nvar turfBbox = __nested_webpack_require_800812__(85268);\nvar identity = __nested_webpack_require_800812__(23389);\nvar loggers = __nested_webpack_require_800812__(47769);\nvar isPlainObject = __nested_webpack_require_800812__(41965);\nvar nestedProperty = __nested_webpack_require_800812__(65487);\nvar polygon = __nested_webpack_require_800812__(61082);\n\n// make list of all country iso3 ids from at runtime\nvar countryIds = Object.keys(countryRegex);\nvar locationmodeToIdFinder = {\n  'ISO-3': identity,\n  'USA-states': identity,\n  'country names': countryNameToISO3\n};\nfunction countryNameToISO3(countryName) {\n  for (var i = 0; i < countryIds.length; i++) {\n    var iso3 = countryIds[i];\n    var regex = new RegExp(countryRegex[iso3]);\n    if (regex.test(countryName.trim().toLowerCase())) return iso3;\n  }\n  loggers.log('Unrecognized country name: ' + countryName + '.');\n  return false;\n}\nfunction locationToFeature(locationmode, location, features) {\n  if (!location || typeof location !== 'string') return false;\n  var locationId = locationmodeToIdFinder[locationmode](location);\n  var filteredFeatures;\n  var f, i;\n  if (locationId) {\n    if (locationmode === 'USA-states') {\n      // Filter out features out in USA\n      //\n      // This is important as the Natural Earth files\n      // include state/provinces from USA, Canada, Australia and Brazil\n      // which have some overlay in their two-letter ids. For example,\n      // 'WA' is used for both Washington state and Western Australia.\n      filteredFeatures = [];\n      for (i = 0; i < features.length; i++) {\n        f = features[i];\n        if (f.properties && f.properties.gu && f.properties.gu === 'USA') {\n          filteredFeatures.push(f);\n        }\n      }\n    } else {\n      filteredFeatures = features;\n    }\n    for (i = 0; i < filteredFeatures.length; i++) {\n      f = filteredFeatures[i];\n      if (f.id === locationId) return f;\n    }\n    loggers.log(['Location with id', locationId, 'does not have a matching topojson feature at this resolution.'].join(' '));\n  }\n  return false;\n}\nfunction feature2polygons(feature) {\n  var geometry = feature.geometry;\n  var coords = geometry.coordinates;\n  var loc = feature.id;\n  var polygons = [];\n  var appendPolygon, j, k, m;\n  function doesCrossAntiMerdian(pts) {\n    for (var l = 0; l < pts.length - 1; l++) {\n      if (pts[l][0] > 0 && pts[l + 1][0] < 0) return l;\n    }\n    return null;\n  }\n  if (loc === 'RUS' || loc === 'FJI') {\n    // Russia and Fiji have landmasses that cross the antimeridian,\n    // we need to add +360 to their longitude coordinates, so that\n    // polygon 'contains' doesn't get confused when crossing the antimeridian.\n    //\n    // Note that other countries have polygons on either side of the antimeridian\n    // (e.g. some Aleutian island for the USA), but those don't confuse\n    // the 'contains' method; these are skipped here.\n    appendPolygon = function (_pts) {\n      var pts;\n      if (doesCrossAntiMerdian(_pts) === null) {\n        pts = _pts;\n      } else {\n        pts = new Array(_pts.length);\n        for (m = 0; m < _pts.length; m++) {\n          // do not mutate calcdata[i][j].geojson !!\n          pts[m] = [_pts[m][0] < 0 ? _pts[m][0] + 360 : _pts[m][0], _pts[m][1]];\n        }\n      }\n      polygons.push(polygon.tester(pts));\n    };\n  } else if (loc === 'ATA') {\n    // Antarctica has a landmass that wraps around every longitudes which\n    // confuses the 'contains' methods.\n    appendPolygon = function (pts) {\n      var crossAntiMeridianIndex = doesCrossAntiMerdian(pts);\n\n      // polygon that do not cross anti-meridian need no special handling\n      if (crossAntiMeridianIndex === null) {\n        return polygons.push(polygon.tester(pts));\n      }\n\n      // stitch polygon by adding pt over South Pole,\n      // so that it covers the projected region covers all latitudes\n      //\n      // Note that the algorithm below only works for polygons that\n      // start and end on longitude -180 (like the ones built by\n      // https://github.com/etpinard/sane-topojson).\n      var stitch = new Array(pts.length + 1);\n      var si = 0;\n      for (m = 0; m < pts.length; m++) {\n        if (m > crossAntiMeridianIndex) {\n          stitch[si++] = [pts[m][0] + 360, pts[m][1]];\n        } else if (m === crossAntiMeridianIndex) {\n          stitch[si++] = pts[m];\n          stitch[si++] = [pts[m][0], -90];\n        } else {\n          stitch[si++] = pts[m];\n        }\n      }\n\n      // polygon.tester by default appends pt[0] to the points list,\n      // we must remove it here, to avoid a jump in longitude from 180 to -180,\n      // that would confuse the 'contains' method\n      var tester = polygon.tester(stitch);\n      tester.pts.pop();\n      polygons.push(tester);\n    };\n  } else {\n    // otherwise using same array ref is fine\n    appendPolygon = function (pts) {\n      polygons.push(polygon.tester(pts));\n    };\n  }\n  switch (geometry.type) {\n    case 'MultiPolygon':\n      for (j = 0; j < coords.length; j++) {\n        for (k = 0; k < coords[j].length; k++) {\n          appendPolygon(coords[j][k]);\n        }\n      }\n      break;\n    case 'Polygon':\n      for (j = 0; j < coords.length; j++) {\n        appendPolygon(coords[j]);\n      }\n      break;\n  }\n  return polygons;\n}\nfunction getTraceGeojson(trace) {\n  var g = trace.geojson;\n  var PlotlyGeoAssets = window.PlotlyGeoAssets || {};\n  var geojsonIn = typeof g === 'string' ? PlotlyGeoAssets[g] : g;\n\n  // This should not happen, but just in case something goes\n  // really wrong when fetching the GeoJSON\n  if (!isPlainObject(geojsonIn)) {\n    loggers.error('Oops ... something went wrong when fetching ' + g);\n    return false;\n  }\n  return geojsonIn;\n}\nfunction extractTraceFeature(calcTrace) {\n  var trace = calcTrace[0].trace;\n  var geojsonIn = getTraceGeojson(trace);\n  if (!geojsonIn) return false;\n  var lookup = {};\n  var featuresOut = [];\n  var i;\n  for (i = 0; i < trace._length; i++) {\n    var cdi = calcTrace[i];\n    if (cdi.loc || cdi.loc === 0) {\n      lookup[cdi.loc] = cdi;\n    }\n  }\n  function appendFeature(fIn) {\n    var id = nestedProperty(fIn, trace.featureidkey || 'id').get();\n    var cdi = lookup[id];\n    if (cdi) {\n      var geometry = fIn.geometry;\n      if (geometry.type === 'Polygon' || geometry.type === 'MultiPolygon') {\n        var fOut = {\n          type: 'Feature',\n          id: id,\n          geometry: geometry,\n          properties: {}\n        };\n\n        // Compute centroid, add it to the properties\n        fOut.properties.ct = findCentroid(fOut);\n\n        // Mutate in in/out features into calcdata\n        cdi.fIn = fIn;\n        cdi.fOut = fOut;\n        featuresOut.push(fOut);\n      } else {\n        loggers.log(['Location', cdi.loc, 'does not have a valid GeoJSON geometry.', 'Traces with locationmode *geojson-id* only support', '*Polygon* and *MultiPolygon* geometries.'].join(' '));\n      }\n    }\n\n    // remove key from lookup, so that we can track (if any)\n    // the locations that did not have a corresponding GeoJSON feature\n    delete lookup[id];\n  }\n  switch (geojsonIn.type) {\n    case 'FeatureCollection':\n      var featuresIn = geojsonIn.features;\n      for (i = 0; i < featuresIn.length; i++) {\n        appendFeature(featuresIn[i]);\n      }\n      break;\n    case 'Feature':\n      appendFeature(geojsonIn);\n      break;\n    default:\n      loggers.warn(['Invalid GeoJSON type', (geojsonIn.type || 'none') + '.', 'Traces with locationmode *geojson-id* only support', '*FeatureCollection* and *Feature* types.'].join(' '));\n      return false;\n  }\n  for (var loc in lookup) {\n    loggers.log(['Location *' + loc + '*', 'does not have a matching feature with id-key', '*' + trace.featureidkey + '*.'].join(' '));\n  }\n  return featuresOut;\n}\n\n// TODO this find the centroid of the polygon of maxArea\n// (just like we currently do for geo choropleth polygons),\n// maybe instead it would make more sense to compute the centroid\n// of each polygon and consider those on hover/select\nfunction findCentroid(feature) {\n  var geometry = feature.geometry;\n  var poly;\n  if (geometry.type === 'MultiPolygon') {\n    var coords = geometry.coordinates;\n    var maxArea = 0;\n    for (var i = 0; i < coords.length; i++) {\n      var polyi = {\n        type: 'Polygon',\n        coordinates: coords[i]\n      };\n      var area = turfArea.default(polyi);\n      if (area > maxArea) {\n        maxArea = area;\n        poly = polyi;\n      }\n    }\n  } else {\n    poly = geometry;\n  }\n  return turfCentroid.default(poly).geometry.coordinates;\n}\nfunction fetchTraceGeoData(calcData) {\n  var PlotlyGeoAssets = window.PlotlyGeoAssets || {};\n  var promises = [];\n  function fetch(url) {\n    return new Promise(function (resolve, reject) {\n      d3.json(url, function (err, d) {\n        if (err) {\n          delete PlotlyGeoAssets[url];\n          var msg = err.status === 404 ? 'GeoJSON at URL \"' + url + '\" does not exist.' : 'Unexpected error while fetching from ' + url;\n          return reject(new Error(msg));\n        }\n        PlotlyGeoAssets[url] = d;\n        return resolve(d);\n      });\n    });\n  }\n  function wait(url) {\n    return new Promise(function (resolve, reject) {\n      var cnt = 0;\n      var interval = setInterval(function () {\n        if (PlotlyGeoAssets[url] && PlotlyGeoAssets[url] !== 'pending') {\n          clearInterval(interval);\n          return resolve(PlotlyGeoAssets[url]);\n        }\n        if (cnt > 100) {\n          clearInterval(interval);\n          return reject('Unexpected error while fetching from ' + url);\n        }\n        cnt++;\n      }, 50);\n    });\n  }\n  for (var i = 0; i < calcData.length; i++) {\n    var trace = calcData[i][0].trace;\n    var url = trace.geojson;\n    if (typeof url === 'string') {\n      if (!PlotlyGeoAssets[url]) {\n        PlotlyGeoAssets[url] = 'pending';\n        promises.push(fetch(url));\n      } else if (PlotlyGeoAssets[url] === 'pending') {\n        promises.push(wait(url));\n      }\n    }\n  }\n  return promises;\n}\n\n// TODO `turf/bbox` gives wrong result when the input feature/geometry\n// crosses the anti-meridian. We should try to implement our own bbox logic.\nfunction computeBbox(d) {\n  return turfBbox.default(d);\n}\nmodule.exports = {\n  locationToFeature: locationToFeature,\n  feature2polygons: feature2polygons,\n  getTraceGeojson: getTraceGeojson,\n  extractTraceFeature: extractTraceFeature,\n  fetchTraceGeoData: fetchTraceGeoData,\n  computeBbox: computeBbox\n};\n\n/***/ }),\n\n/***/ 18214:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_811408__) {\n\n\"use strict\";\n\n\nvar BADNUM = (__nested_webpack_require_811408__(50606).BADNUM);\n\n/**\n * Convert calcTrace to GeoJSON 'MultiLineString' coordinate arrays\n *\n * @param {object} calcTrace\n *  gd.calcdata item.\n *  Note that calcTrace[i].lonlat is assumed to be defined\n *\n * @return {array}\n *  return line coords array (or array of arrays)\n *\n */\nexports.calcTraceToLineCoords = function (calcTrace) {\n  var trace = calcTrace[0].trace;\n  var connectgaps = trace.connectgaps;\n  var coords = [];\n  var lineString = [];\n  for (var i = 0; i < calcTrace.length; i++) {\n    var calcPt = calcTrace[i];\n    var lonlat = calcPt.lonlat;\n    if (lonlat[0] !== BADNUM) {\n      lineString.push(lonlat);\n    } else if (!connectgaps && lineString.length > 0) {\n      coords.push(lineString);\n      lineString = [];\n    }\n  }\n  if (lineString.length > 0) {\n    coords.push(lineString);\n  }\n  return coords;\n};\n\n/**\n * Make line ('LineString' or 'MultiLineString') GeoJSON\n *\n * @param {array} coords\n *  results form calcTraceToLineCoords\n * @return {object} out\n *  GeoJSON object\n *\n */\nexports.makeLine = function (coords) {\n  if (coords.length === 1) {\n    return {\n      type: 'LineString',\n      coordinates: coords[0]\n    };\n  } else {\n    return {\n      type: 'MultiLineString',\n      coordinates: coords\n    };\n  }\n};\n\n/**\n * Make polygon ('Polygon' or 'MultiPolygon') GeoJSON\n *\n * @param {array} coords\n *  results form calcTraceToLineCoords\n * @return {object} out\n *  GeoJSON object\n */\nexports.makePolygon = function (coords) {\n  if (coords.length === 1) {\n    return {\n      type: 'Polygon',\n      coordinates: coords\n    };\n  } else {\n    var _coords = new Array(coords.length);\n    for (var i = 0; i < coords.length; i++) {\n      _coords[i] = [coords[i]];\n    }\n    return {\n      type: 'MultiPolygon',\n      coordinates: _coords\n    };\n  }\n};\n\n/**\n * Make blank GeoJSON\n *\n * @return {object}\n *  Blank GeoJSON object\n *\n */\nexports.makeBlank = function () {\n  return {\n    type: 'Point',\n    coordinates: []\n  };\n};\n\n/***/ }),\n\n/***/ 87642:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_813510__) {\n\n\"use strict\";\n\n\nvar mod = (__nested_webpack_require_813510__(64872).mod);\n\n/*\n * look for intersection of two line segments\n *   (1->2 and 3->4) - returns array [x,y] if they do, null if not\n */\nexports.segmentsIntersect = segmentsIntersect;\nfunction segmentsIntersect(x1, y1, x2, y2, x3, y3, x4, y4) {\n  var a = x2 - x1;\n  var b = x3 - x1;\n  var c = x4 - x3;\n  var d = y2 - y1;\n  var e = y3 - y1;\n  var f = y4 - y3;\n  var det = a * f - c * d;\n  // parallel lines? intersection is undefined\n  // ignore the case where they are colinear\n  if (det === 0) return null;\n  var t = (b * f - c * e) / det;\n  var u = (b * d - a * e) / det;\n  // segments do not intersect?\n  if (u < 0 || u > 1 || t < 0 || t > 1) return null;\n  return {\n    x: x1 + a * t,\n    y: y1 + d * t\n  };\n}\n\n/*\n * find the minimum distance between two line segments (1->2 and 3->4)\n */\nexports.segmentDistance = function segmentDistance(x1, y1, x2, y2, x3, y3, x4, y4) {\n  if (segmentsIntersect(x1, y1, x2, y2, x3, y3, x4, y4)) return 0;\n\n  // the two segments and their lengths squared\n  var x12 = x2 - x1;\n  var y12 = y2 - y1;\n  var x34 = x4 - x3;\n  var y34 = y4 - y3;\n  var ll12 = x12 * x12 + y12 * y12;\n  var ll34 = x34 * x34 + y34 * y34;\n\n  // calculate distance squared, then take the sqrt at the very end\n  var dist2 = Math.min(perpDistance2(x12, y12, ll12, x3 - x1, y3 - y1), perpDistance2(x12, y12, ll12, x4 - x1, y4 - y1), perpDistance2(x34, y34, ll34, x1 - x3, y1 - y3), perpDistance2(x34, y34, ll34, x2 - x3, y2 - y3));\n  return Math.sqrt(dist2);\n};\n\n/*\n * distance squared from segment ab to point c\n * [xab, yab] is the vector b-a\n * [xac, yac] is the vector c-a\n * llab is the length squared of (b-a), just to simplify calculation\n */\nfunction perpDistance2(xab, yab, llab, xac, yac) {\n  var fcAB = xac * xab + yac * yab;\n  if (fcAB < 0) {\n    // point c is closer to point a\n    return xac * xac + yac * yac;\n  } else if (fcAB > llab) {\n    // point c is closer to point b\n    var xbc = xac - xab;\n    var ybc = yac - yab;\n    return xbc * xbc + ybc * ybc;\n  } else {\n    // perpendicular distance is the shortest\n    var crossProduct = xac * yab - yac * xab;\n    return crossProduct * crossProduct / llab;\n  }\n}\n\n// a very short-term cache for getTextLocation, just because\n// we're often looping over the same locations multiple times\n// invalidated as soon as we look at a different path\nvar locationCache, workingPath, workingTextWidth;\n\n// turn a path and position along it into x, y, and angle for the given text\nexports.getTextLocation = function getTextLocation(path, totalPathLen, positionOnPath, textWidth) {\n  if (path !== workingPath || textWidth !== workingTextWidth) {\n    locationCache = {};\n    workingPath = path;\n    workingTextWidth = textWidth;\n  }\n  if (locationCache[positionOnPath]) {\n    return locationCache[positionOnPath];\n  }\n\n  // for the angle, use points on the path separated by the text width\n  // even though due to curvature, the text will cover a bit more than that\n  var p0 = path.getPointAtLength(mod(positionOnPath - textWidth / 2, totalPathLen));\n  var p1 = path.getPointAtLength(mod(positionOnPath + textWidth / 2, totalPathLen));\n  // note: atan handles 1/0 nicely\n  var theta = Math.atan((p1.y - p0.y) / (p1.x - p0.x));\n  // center the text at 2/3 of the center position plus 1/3 the p0/p1 midpoint\n  // that's the average position of this segment, assuming it's roughly quadratic\n  var pCenter = path.getPointAtLength(mod(positionOnPath, totalPathLen));\n  var x = (pCenter.x * 4 + p0.x + p1.x) / 6;\n  var y = (pCenter.y * 4 + p0.y + p1.y) / 6;\n  var out = {\n    x: x,\n    y: y,\n    theta: theta\n  };\n  locationCache[positionOnPath] = out;\n  return out;\n};\nexports.clearLocationCache = function () {\n  workingPath = null;\n};\n\n/*\n * Find the segment of `path` that's within the visible area\n * given by `bounds` {left, right, top, bottom}, to within a\n * precision of `buffer` px\n *\n * returns: undefined if nothing is visible, else object:\n * {\n *   min: position where the path first enters bounds, or 0 if it\n *        starts within bounds\n *   max: position where the path last exits bounds, or the path length\n *        if it finishes within bounds\n *   len: max - min, ie the length of visible path\n *   total: the total path length - just included so the caller doesn't\n *        need to call path.getTotalLength() again\n *   isClosed: true iff the start and end points of the path are both visible\n *        and are at the same point\n * }\n *\n * Works by starting from either end and repeatedly finding the distance from\n * that point to the plot area, and if it's outside the plot, moving along the\n * path by that distance (because the plot must be at least that far away on\n * the path). Note that if a path enters, exits, and re-enters the plot, we\n * will not capture this behavior.\n */\nexports.getVisibleSegment = function getVisibleSegment(path, bounds, buffer) {\n  var left = bounds.left;\n  var right = bounds.right;\n  var top = bounds.top;\n  var bottom = bounds.bottom;\n  var pMin = 0;\n  var pTotal = path.getTotalLength();\n  var pMax = pTotal;\n  var pt0, ptTotal;\n  function getDistToPlot(len) {\n    var pt = path.getPointAtLength(len);\n\n    // hold on to the start and end points for `closed`\n    if (len === 0) pt0 = pt;else if (len === pTotal) ptTotal = pt;\n    var dx = pt.x < left ? left - pt.x : pt.x > right ? pt.x - right : 0;\n    var dy = pt.y < top ? top - pt.y : pt.y > bottom ? pt.y - bottom : 0;\n    return Math.sqrt(dx * dx + dy * dy);\n  }\n  var distToPlot = getDistToPlot(pMin);\n  while (distToPlot) {\n    pMin += distToPlot + buffer;\n    if (pMin > pMax) return;\n    distToPlot = getDistToPlot(pMin);\n  }\n  distToPlot = getDistToPlot(pMax);\n  while (distToPlot) {\n    pMax -= distToPlot + buffer;\n    if (pMin > pMax) return;\n    distToPlot = getDistToPlot(pMax);\n  }\n  return {\n    min: pMin,\n    max: pMax,\n    len: pMax - pMin,\n    total: pTotal,\n    isClosed: pMin === 0 && pMax === pTotal && Math.abs(pt0.x - ptTotal.x) < 0.1 && Math.abs(pt0.y - ptTotal.y) < 0.1\n  };\n};\n\n/**\n * Find point on SVG path corresponding to a given constraint coordinate\n *\n * @param {SVGPathElement} path\n * @param {Number} val : constraint coordinate value\n * @param {String} coord : 'x' or 'y' the constraint coordinate\n * @param {Object} opts :\n *  - {Number} pathLength : supply total path length before hand\n *  - {Number} tolerance\n *  - {Number} iterationLimit\n * @return {SVGPoint}\n */\nexports.findPointOnPath = function findPointOnPath(path, val, coord, opts) {\n  opts = opts || {};\n  var pathLength = opts.pathLength || path.getTotalLength();\n  var tolerance = opts.tolerance || 1e-3;\n  var iterationLimit = opts.iterationLimit || 30;\n\n  // if path starts at a val greater than the path tail (like on vertical violins),\n  // we must flip the sign of the computed diff.\n  var mul = path.getPointAtLength(0)[coord] > path.getPointAtLength(pathLength)[coord] ? -1 : 1;\n  var i = 0;\n  var b0 = 0;\n  var b1 = pathLength;\n  var mid;\n  var pt;\n  var diff;\n  while (i < iterationLimit) {\n    mid = (b0 + b1) / 2;\n    pt = path.getPointAtLength(mid);\n    diff = pt[coord] - val;\n    if (Math.abs(diff) < tolerance) {\n      return pt;\n    } else {\n      if (mul * diff > 0) {\n        b1 = mid;\n      } else {\n        b0 = mid;\n      }\n      i++;\n    }\n  }\n  return pt;\n};\n\n/***/ }),\n\n/***/ 81697:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_820907__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_820907__(92770);\nvar tinycolor = __nested_webpack_require_820907__(84267);\nvar rgba = __nested_webpack_require_820907__(25075);\nvar Colorscale = __nested_webpack_require_820907__(21081);\nvar colorDflt = (__nested_webpack_require_820907__(22399).defaultLine);\nvar isArrayOrTypedArray = (__nested_webpack_require_820907__(73627).isArrayOrTypedArray);\nvar colorDfltRgba = rgba(colorDflt);\nvar opacityDflt = 1;\nfunction calculateColor(colorIn, opacityIn) {\n  var colorOut = colorIn;\n  colorOut[3] *= opacityIn;\n  return colorOut;\n}\nfunction validateColor(colorIn) {\n  if (isNumeric(colorIn)) return colorDfltRgba;\n  var colorOut = rgba(colorIn);\n  return colorOut.length ? colorOut : colorDfltRgba;\n}\nfunction validateOpacity(opacityIn) {\n  return isNumeric(opacityIn) ? opacityIn : opacityDflt;\n}\nfunction formatColor(containerIn, opacityIn, len) {\n  var colorIn = containerIn.color;\n  var isArrayColorIn = isArrayOrTypedArray(colorIn);\n  var isArrayOpacityIn = isArrayOrTypedArray(opacityIn);\n  var cOpts = Colorscale.extractOpts(containerIn);\n  var colorOut = [];\n  var sclFunc, getColor, getOpacity, colori, opacityi;\n  if (cOpts.colorscale !== undefined) {\n    sclFunc = Colorscale.makeColorScaleFuncFromTrace(containerIn);\n  } else {\n    sclFunc = validateColor;\n  }\n  if (isArrayColorIn) {\n    getColor = function (c, i) {\n      // FIXME: there is double work, considering that sclFunc does the opposite\n      return c[i] === undefined ? colorDfltRgba : rgba(sclFunc(c[i]));\n    };\n  } else getColor = validateColor;\n  if (isArrayOpacityIn) {\n    getOpacity = function (o, i) {\n      return o[i] === undefined ? opacityDflt : validateOpacity(o[i]);\n    };\n  } else getOpacity = validateOpacity;\n  if (isArrayColorIn || isArrayOpacityIn) {\n    for (var i = 0; i < len; i++) {\n      colori = getColor(colorIn, i);\n      opacityi = getOpacity(opacityIn, i);\n      colorOut[i] = calculateColor(colori, opacityi);\n    }\n  } else colorOut = calculateColor(rgba(colorIn), opacityIn);\n  return colorOut;\n}\nfunction parseColorScale(cont) {\n  var cOpts = Colorscale.extractOpts(cont);\n  var colorscale = cOpts.colorscale;\n  if (cOpts.reversescale) colorscale = Colorscale.flipScale(cOpts.colorscale);\n  return colorscale.map(function (elem) {\n    var index = elem[0];\n    var color = tinycolor(elem[1]);\n    var rgb = color.toRgb();\n    return {\n      index: index,\n      rgb: [rgb.r, rgb.g, rgb.b, rgb.a]\n    };\n  });\n}\nmodule.exports = {\n  formatColor: formatColor,\n  parseColorScale: parseColorScale\n};\n\n/***/ }),\n\n/***/ 28984:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_823478__) {\n\n\"use strict\";\n\n\nvar identity = __nested_webpack_require_823478__(23389);\nfunction wrap(d) {\n  return [d];\n}\nmodule.exports = {\n  // The D3 data binding concept and the General Update Pattern promotes the idea of\n  // traversing into the scenegraph by using the `.data(fun, keyFun)` call.\n  // The `fun` is most often a `repeat`, ie. the elements beneath a `<g>` element need\n  // access to the same data, or a `descend`, which fans a scenegraph node into a bunch of\n  // of elements, e.g. points, lines, rows, requiring an array as input.\n  // The role of the `keyFun` is to identify what elements are being entered/exited/updated,\n  // otherwise D3 reverts to using a plain index which would screw up `transition`s.\n  keyFun: function (d) {\n    return d.key;\n  },\n  repeat: wrap,\n  descend: identity,\n  // Plotly.js uses a convention of storing the actual contents of the `calcData` as the\n  // element zero of a container array. These helpers are just used for clarity as a\n  // newcomer to the codebase may not know what the `[0]` is, and whether there can be further\n  // elements (not atm).\n  wrap: wrap,\n  unwrap: function (d) {\n    return d[0];\n  }\n};\n\n/***/ }),\n\n/***/ 23389:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// Simple helper functions\n// none of these need any external deps\nmodule.exports = function identity(d) {\n  return d;\n};\n\n/***/ }),\n\n/***/ 39240:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function incrementNumeric(x, delta) {\n  if (!delta) return x;\n\n  // Note 1:\n  // 0.3 != 0.1 + 0.2 == 0.30000000000000004\n  // but 0.3 == (10 * 0.1 + 10 * 0.2) / 10\n  // Attempt to use integer steps to increment\n  var scale = 1 / Math.abs(delta);\n  var newX = scale > 1 ? (scale * x + scale * delta) / scale : x + delta;\n\n  // Note 2:\n  // now we may also consider rounding to cover few more edge cases\n  // e.g. 0.3 * 3 = 0.8999999999999999\n  var lenX1 = String(newX).length;\n  if (lenX1 > 16) {\n    var lenDt = String(delta).length;\n    var lenX0 = String(x).length;\n    if (lenX1 >= lenX0 + lenDt) {\n      // likely a rounding error!\n      var s = parseFloat(newX).toPrecision(12);\n      if (s.indexOf('e+') === -1) newX = +s;\n    }\n  }\n  return newX;\n};\n\n/***/ }),\n\n/***/ 71828:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_825754__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_825754__(39898);\nvar utcFormat = (__nested_webpack_require_825754__(84096)/* .utcFormat */ .g0);\nvar d3Format = (__nested_webpack_require_825754__(60721)/* .format */ .WU);\nvar isNumeric = __nested_webpack_require_825754__(92770);\nvar numConstants = __nested_webpack_require_825754__(50606);\nvar MAX_SAFE = numConstants.FP_SAFE;\nvar MIN_SAFE = -MAX_SAFE;\nvar BADNUM = numConstants.BADNUM;\nvar lib = module.exports = {};\nlib.adjustFormat = function adjustFormat(formatStr) {\n  if (!formatStr || /^\\d[.]\\df/.test(formatStr) || /[.]\\d%/.test(formatStr)) return formatStr;\n  if (formatStr === '0.f') return '~f';\n  if (/^\\d%/.test(formatStr)) return '~%';\n  if (/^\\ds/.test(formatStr)) return '~s';\n\n  // try adding tilde to the start of format in order to trim\n  if (!/^[~,.0$]/.test(formatStr) && /[&fps]/.test(formatStr)) return '~' + formatStr;\n  return formatStr;\n};\nvar seenBadFormats = {};\nlib.warnBadFormat = function (f) {\n  var key = String(f);\n  if (!seenBadFormats[key]) {\n    seenBadFormats[key] = 1;\n    lib.warn('encountered bad format: \"' + key + '\"');\n  }\n};\nlib.noFormat = function (value) {\n  return String(value);\n};\nlib.numberFormat = function (formatStr) {\n  var fn;\n  try {\n    fn = d3Format(lib.adjustFormat(formatStr));\n  } catch (e) {\n    lib.warnBadFormat(formatStr);\n    return lib.noFormat;\n  }\n  return fn;\n};\nlib.nestedProperty = __nested_webpack_require_825754__(65487);\nlib.keyedContainer = __nested_webpack_require_825754__(66636);\nlib.relativeAttr = __nested_webpack_require_825754__(6962);\nlib.isPlainObject = __nested_webpack_require_825754__(41965);\nlib.toLogRange = __nested_webpack_require_825754__(58163);\nlib.relinkPrivateKeys = __nested_webpack_require_825754__(51332);\nvar arrayModule = __nested_webpack_require_825754__(73627);\nlib.isTypedArray = arrayModule.isTypedArray;\nlib.isArrayOrTypedArray = arrayModule.isArrayOrTypedArray;\nlib.isArray1D = arrayModule.isArray1D;\nlib.ensureArray = arrayModule.ensureArray;\nlib.concat = arrayModule.concat;\nlib.maxRowLength = arrayModule.maxRowLength;\nlib.minRowLength = arrayModule.minRowLength;\nvar modModule = __nested_webpack_require_825754__(64872);\nlib.mod = modModule.mod;\nlib.modHalf = modModule.modHalf;\nvar coerceModule = __nested_webpack_require_825754__(96554);\nlib.valObjectMeta = coerceModule.valObjectMeta;\nlib.coerce = coerceModule.coerce;\nlib.coerce2 = coerceModule.coerce2;\nlib.coerceFont = coerceModule.coerceFont;\nlib.coercePattern = coerceModule.coercePattern;\nlib.coerceHoverinfo = coerceModule.coerceHoverinfo;\nlib.coerceSelectionMarkerOpacity = coerceModule.coerceSelectionMarkerOpacity;\nlib.validate = coerceModule.validate;\nvar datesModule = __nested_webpack_require_825754__(41631);\nlib.dateTime2ms = datesModule.dateTime2ms;\nlib.isDateTime = datesModule.isDateTime;\nlib.ms2DateTime = datesModule.ms2DateTime;\nlib.ms2DateTimeLocal = datesModule.ms2DateTimeLocal;\nlib.cleanDate = datesModule.cleanDate;\nlib.isJSDate = datesModule.isJSDate;\nlib.formatDate = datesModule.formatDate;\nlib.incrementMonth = datesModule.incrementMonth;\nlib.dateTick0 = datesModule.dateTick0;\nlib.dfltRange = datesModule.dfltRange;\nlib.findExactDates = datesModule.findExactDates;\nlib.MIN_MS = datesModule.MIN_MS;\nlib.MAX_MS = datesModule.MAX_MS;\nvar searchModule = __nested_webpack_require_825754__(65888);\nlib.findBin = searchModule.findBin;\nlib.sorterAsc = searchModule.sorterAsc;\nlib.sorterDes = searchModule.sorterDes;\nlib.distinctVals = searchModule.distinctVals;\nlib.roundUp = searchModule.roundUp;\nlib.sort = searchModule.sort;\nlib.findIndexOfMin = searchModule.findIndexOfMin;\nlib.sortObjectKeys = __nested_webpack_require_825754__(78607);\nvar statsModule = __nested_webpack_require_825754__(80038);\nlib.aggNums = statsModule.aggNums;\nlib.len = statsModule.len;\nlib.mean = statsModule.mean;\nlib.median = statsModule.median;\nlib.midRange = statsModule.midRange;\nlib.variance = statsModule.variance;\nlib.stdev = statsModule.stdev;\nlib.interp = statsModule.interp;\nvar matrixModule = __nested_webpack_require_825754__(35657);\nlib.init2dArray = matrixModule.init2dArray;\nlib.transposeRagged = matrixModule.transposeRagged;\nlib.dot = matrixModule.dot;\nlib.translationMatrix = matrixModule.translationMatrix;\nlib.rotationMatrix = matrixModule.rotationMatrix;\nlib.rotationXYMatrix = matrixModule.rotationXYMatrix;\nlib.apply3DTransform = matrixModule.apply3DTransform;\nlib.apply2DTransform = matrixModule.apply2DTransform;\nlib.apply2DTransform2 = matrixModule.apply2DTransform2;\nlib.convertCssMatrix = matrixModule.convertCssMatrix;\nlib.inverseTransformMatrix = matrixModule.inverseTransformMatrix;\nvar anglesModule = __nested_webpack_require_825754__(26348);\nlib.deg2rad = anglesModule.deg2rad;\nlib.rad2deg = anglesModule.rad2deg;\nlib.angleDelta = anglesModule.angleDelta;\nlib.angleDist = anglesModule.angleDist;\nlib.isFullCircle = anglesModule.isFullCircle;\nlib.isAngleInsideSector = anglesModule.isAngleInsideSector;\nlib.isPtInsideSector = anglesModule.isPtInsideSector;\nlib.pathArc = anglesModule.pathArc;\nlib.pathSector = anglesModule.pathSector;\nlib.pathAnnulus = anglesModule.pathAnnulus;\nvar anchorUtils = __nested_webpack_require_825754__(99863);\nlib.isLeftAnchor = anchorUtils.isLeftAnchor;\nlib.isCenterAnchor = anchorUtils.isCenterAnchor;\nlib.isRightAnchor = anchorUtils.isRightAnchor;\nlib.isTopAnchor = anchorUtils.isTopAnchor;\nlib.isMiddleAnchor = anchorUtils.isMiddleAnchor;\nlib.isBottomAnchor = anchorUtils.isBottomAnchor;\nvar geom2dModule = __nested_webpack_require_825754__(87642);\nlib.segmentsIntersect = geom2dModule.segmentsIntersect;\nlib.segmentDistance = geom2dModule.segmentDistance;\nlib.getTextLocation = geom2dModule.getTextLocation;\nlib.clearLocationCache = geom2dModule.clearLocationCache;\nlib.getVisibleSegment = geom2dModule.getVisibleSegment;\nlib.findPointOnPath = geom2dModule.findPointOnPath;\nvar extendModule = __nested_webpack_require_825754__(1426);\nlib.extendFlat = extendModule.extendFlat;\nlib.extendDeep = extendModule.extendDeep;\nlib.extendDeepAll = extendModule.extendDeepAll;\nlib.extendDeepNoArrays = extendModule.extendDeepNoArrays;\nvar loggersModule = __nested_webpack_require_825754__(47769);\nlib.log = loggersModule.log;\nlib.warn = loggersModule.warn;\nlib.error = loggersModule.error;\nvar regexModule = __nested_webpack_require_825754__(30587);\nlib.counterRegex = regexModule.counter;\nvar throttleModule = __nested_webpack_require_825754__(79990);\nlib.throttle = throttleModule.throttle;\nlib.throttleDone = throttleModule.done;\nlib.clearThrottle = throttleModule.clear;\nvar domModule = __nested_webpack_require_825754__(24401);\nlib.getGraphDiv = domModule.getGraphDiv;\nlib.isPlotDiv = domModule.isPlotDiv;\nlib.removeElement = domModule.removeElement;\nlib.addStyleRule = domModule.addStyleRule;\nlib.addRelatedStyleRule = domModule.addRelatedStyleRule;\nlib.deleteRelatedStyleRule = domModule.deleteRelatedStyleRule;\nlib.getFullTransformMatrix = domModule.getFullTransformMatrix;\nlib.getElementTransformMatrix = domModule.getElementTransformMatrix;\nlib.getElementAndAncestors = domModule.getElementAndAncestors;\nlib.equalDomRects = domModule.equalDomRects;\nlib.clearResponsive = __nested_webpack_require_825754__(86367);\nlib.preserveDrawingBuffer = __nested_webpack_require_825754__(45142);\nlib.makeTraceGroups = __nested_webpack_require_825754__(77310);\nlib._ = __nested_webpack_require_825754__(15867);\nlib.notifier = __nested_webpack_require_825754__(75046);\nlib.filterUnique = __nested_webpack_require_825754__(75744);\nlib.filterVisible = __nested_webpack_require_825754__(76756);\nlib.pushUnique = __nested_webpack_require_825754__(75138);\nlib.increment = __nested_webpack_require_825754__(39240);\nlib.cleanNumber = __nested_webpack_require_825754__(95218);\nlib.ensureNumber = function ensureNumber(v) {\n  if (!isNumeric(v)) return BADNUM;\n  v = Number(v);\n  return v > MAX_SAFE || v < MIN_SAFE ? BADNUM : v;\n};\n\n/**\n * Is v a valid array index? Accepts numeric strings as well as numbers.\n *\n * @param {any} v: the value to test\n * @param {Optional[integer]} len: the array length we are indexing\n *\n * @return {bool}: v is a valid array index\n */\nlib.isIndex = function (v, len) {\n  if (len !== undefined && v >= len) return false;\n  return isNumeric(v) && v >= 0 && v % 1 === 0;\n};\nlib.noop = __nested_webpack_require_825754__(64213);\nlib.identity = __nested_webpack_require_825754__(23389);\n\n/**\n * create an array of length 'cnt' filled with 'v' at all indices\n *\n * @param {any} v\n * @param {number} cnt\n * @return {array}\n */\nlib.repeat = function (v, cnt) {\n  var out = new Array(cnt);\n  for (var i = 0; i < cnt; i++) {\n    out[i] = v;\n  }\n  return out;\n};\n\n/**\n * swap x and y of the same attribute in container cont\n * specify attr with a ? in place of x/y\n * you can also swap other things than x/y by providing part1 and part2\n */\nlib.swapAttrs = function (cont, attrList, part1, part2) {\n  if (!part1) part1 = 'x';\n  if (!part2) part2 = 'y';\n  for (var i = 0; i < attrList.length; i++) {\n    var attr = attrList[i];\n    var xp = lib.nestedProperty(cont, attr.replace('?', part1));\n    var yp = lib.nestedProperty(cont, attr.replace('?', part2));\n    var temp = xp.get();\n    xp.set(yp.get());\n    yp.set(temp);\n  }\n};\n\n/**\n * SVG painter's algo worked around with reinsertion\n */\nlib.raiseToTop = function raiseToTop(elem) {\n  elem.parentNode.appendChild(elem);\n};\n\n/**\n * cancel a possibly pending transition; returned selection may be used by caller\n */\nlib.cancelTransition = function (selection) {\n  return selection.transition().duration(0);\n};\n\n// constrain - restrict a number v to be between v0 and v1\nlib.constrain = function (v, v0, v1) {\n  if (v0 > v1) return Math.max(v1, Math.min(v0, v));\n  return Math.max(v0, Math.min(v1, v));\n};\n\n/**\n * do two bounding boxes from getBoundingClientRect,\n * ie {left,right,top,bottom,width,height}, overlap?\n * takes optional padding pixels\n */\nlib.bBoxIntersect = function (a, b, pad) {\n  pad = pad || 0;\n  return a.left <= b.right + pad && b.left <= a.right + pad && a.top <= b.bottom + pad && b.top <= a.bottom + pad;\n};\n\n/*\n * simpleMap: alternative to Array.map that only\n * passes on the element and up to 2 extra args you\n * provide (but not the array index or the whole array)\n *\n * array: the array to map it to\n * func: the function to apply\n * x1, x2: optional extra args\n */\nlib.simpleMap = function (array, func, x1, x2, opts) {\n  var len = array.length;\n  var out = new Array(len);\n  for (var i = 0; i < len; i++) out[i] = func(array[i], x1, x2, opts);\n  return out;\n};\n\n/**\n * Random string generator\n *\n * @param {object} existing\n *     pass in strings to avoid as keys with truthy values\n * @param {int} bits\n *     bits of information in the output string, default 24\n * @param {int} base\n *     base of string representation, default 16. Should be a power of 2.\n */\nlib.randstr = function randstr(existing, bits, base, _recursion) {\n  if (!base) base = 16;\n  if (bits === undefined) bits = 24;\n  if (bits <= 0) return '0';\n  var digits = Math.log(Math.pow(2, bits)) / Math.log(base);\n  var res = '';\n  var i, b, x;\n  for (i = 2; digits === Infinity; i *= 2) {\n    digits = Math.log(Math.pow(2, bits / i)) / Math.log(base) * i;\n  }\n  var rem = digits - Math.floor(digits);\n  for (i = 0; i < Math.floor(digits); i++) {\n    x = Math.floor(Math.random() * base).toString(base);\n    res = x + res;\n  }\n  if (rem) {\n    b = Math.pow(base, rem);\n    x = Math.floor(Math.random() * b).toString(base);\n    res = x + res;\n  }\n  var parsed = parseInt(res, base);\n  if (existing && existing[res] || parsed !== Infinity && parsed >= Math.pow(2, bits)) {\n    if (_recursion > 10) {\n      lib.warn('randstr failed uniqueness');\n      return res;\n    }\n    return randstr(existing, bits, base, (_recursion || 0) + 1);\n  } else return res;\n};\nlib.OptionControl = function (opt, optname) {\n  /*\n   * An environment to contain all option setters and\n   * getters that collectively modify opts.\n   *\n   * You can call up opts from any function in new object\n   * as this.optname || this.opt\n   *\n   * See FitOpts for example of usage\n   */\n  if (!opt) opt = {};\n  if (!optname) optname = 'opt';\n  var self = {};\n  self.optionList = [];\n  self._newoption = function (optObj) {\n    optObj[optname] = opt;\n    self[optObj.name] = optObj;\n    self.optionList.push(optObj);\n  };\n  self['_' + optname] = opt;\n  return self;\n};\n\n/**\n * lib.smooth: smooth arrayIn by convolving with\n * a hann window with given full width at half max\n * bounce the ends in, so the output has the same length as the input\n */\nlib.smooth = function (arrayIn, FWHM) {\n  FWHM = Math.round(FWHM) || 0; // only makes sense for integers\n  if (FWHM < 2) return arrayIn;\n  var alen = arrayIn.length;\n  var alen2 = 2 * alen;\n  var wlen = 2 * FWHM - 1;\n  var w = new Array(wlen);\n  var arrayOut = new Array(alen);\n  var i;\n  var j;\n  var k;\n  var v;\n\n  // first make the window array\n  for (i = 0; i < wlen; i++) {\n    w[i] = (1 - Math.cos(Math.PI * (i + 1) / FWHM)) / (2 * FWHM);\n  }\n\n  // now do the convolution\n  for (i = 0; i < alen; i++) {\n    v = 0;\n    for (j = 0; j < wlen; j++) {\n      k = i + j + 1 - FWHM;\n\n      // multibounce\n      if (k < -alen) k -= alen2 * Math.round(k / alen2);else if (k >= alen2) k -= alen2 * Math.floor(k / alen2);\n\n      // single bounce\n      if (k < 0) k = -1 - k;else if (k >= alen) k = alen2 - 1 - k;\n      v += arrayIn[k] * w[j];\n    }\n    arrayOut[i] = v;\n  }\n  return arrayOut;\n};\n\n/**\n * syncOrAsync: run a sequence of functions synchronously\n * as long as its returns are not promises (ie have no .then)\n * includes one argument arg to send to all functions...\n * this is mainly just to prevent us having to make wrapper functions\n * when the only purpose of the wrapper is to reference gd\n * and a final step to be executed at the end\n * TODO: if there's an error and everything is sync,\n * this doesn't happen yet because we want to make sure\n * that it gets reported\n */\nlib.syncOrAsync = function (sequence, arg, finalStep) {\n  var ret, fni;\n  function continueAsync() {\n    return lib.syncOrAsync(sequence, arg, finalStep);\n  }\n  while (sequence.length) {\n    fni = sequence.splice(0, 1)[0];\n    ret = fni(arg);\n    if (ret && ret.then) {\n      return ret.then(continueAsync);\n    }\n  }\n  return finalStep && finalStep(arg);\n};\n\n/**\n * Helper to strip trailing slash, from\n * http://stackoverflow.com/questions/6680825/return-string-without-trailing-slash\n */\nlib.stripTrailingSlash = function (str) {\n  if (str.substr(-1) === '/') return str.substr(0, str.length - 1);\n  return str;\n};\nlib.noneOrAll = function (containerIn, containerOut, attrList) {\n  /**\n   * some attributes come together, so if you have one of them\n   * in the input, you should copy the default values of the others\n   * to the input as well.\n   */\n  if (!containerIn) return;\n  var hasAny = false;\n  var hasAll = true;\n  var i;\n  var val;\n  for (i = 0; i < attrList.length; i++) {\n    val = containerIn[attrList[i]];\n    if (val !== undefined && val !== null) hasAny = true;else hasAll = false;\n  }\n  if (hasAny && !hasAll) {\n    for (i = 0; i < attrList.length; i++) {\n      containerIn[attrList[i]] = containerOut[attrList[i]];\n    }\n  }\n};\n\n/** merges calcdata field (given by cdAttr) with traceAttr values\n *\n * N.B. Loop over minimum of cd.length and traceAttr.length\n * i.e. it does not try to fill in beyond traceAttr.length-1\n *\n * @param {array} traceAttr : trace attribute\n * @param {object} cd : calcdata trace\n * @param {string} cdAttr : calcdata key\n */\nlib.mergeArray = function (traceAttr, cd, cdAttr, fn) {\n  var hasFn = typeof fn === 'function';\n  if (lib.isArrayOrTypedArray(traceAttr)) {\n    var imax = Math.min(traceAttr.length, cd.length);\n    for (var i = 0; i < imax; i++) {\n      var v = traceAttr[i];\n      cd[i][cdAttr] = hasFn ? fn(v) : v;\n    }\n  }\n};\n\n// cast numbers to positive numbers, returns 0 if not greater than 0\nlib.mergeArrayCastPositive = function (traceAttr, cd, cdAttr) {\n  return lib.mergeArray(traceAttr, cd, cdAttr, function (v) {\n    var w = +v;\n    return !isFinite(w) ? 0 : w > 0 ? w : 0;\n  });\n};\n\n/** fills calcdata field (given by cdAttr) with traceAttr values\n *  or function of traceAttr values (e.g. some fallback)\n *\n * N.B. Loops over all cd items.\n *\n * @param {array} traceAttr : trace attribute\n * @param {object} cd : calcdata trace\n * @param {string} cdAttr : calcdata key\n * @param {function} [fn] : optional function to apply to each array item\n */\nlib.fillArray = function (traceAttr, cd, cdAttr, fn) {\n  fn = fn || lib.identity;\n  if (lib.isArrayOrTypedArray(traceAttr)) {\n    for (var i = 0; i < cd.length; i++) {\n      cd[i][cdAttr] = fn(traceAttr[i]);\n    }\n  }\n};\n\n/** Handler for trace-wide vs per-point options\n *\n * @param {object} trace : (full) trace object\n * @param {number} ptNumber : index of the point in question\n * @param {string} astr : attribute string\n * @param {function} [fn] : optional function to apply to each array item\n *\n * @return {any}\n */\nlib.castOption = function (trace, ptNumber, astr, fn) {\n  fn = fn || lib.identity;\n  var val = lib.nestedProperty(trace, astr).get();\n  if (lib.isArrayOrTypedArray(val)) {\n    if (Array.isArray(ptNumber) && lib.isArrayOrTypedArray(val[ptNumber[0]])) {\n      return fn(val[ptNumber[0]][ptNumber[1]]);\n    } else {\n      return fn(val[ptNumber]);\n    }\n  } else {\n    return val;\n  }\n};\n\n/** Extract option from calcdata item, correctly falling back to\n *  trace value if not found.\n *\n *  @param {object} calcPt : calcdata[i][j] item\n *  @param {object} trace : (full) trace object\n *  @param {string} calcKey : calcdata key\n *  @param {string} traceKey : aka trace attribute string\n *  @return {any}\n */\nlib.extractOption = function (calcPt, trace, calcKey, traceKey) {\n  if (calcKey in calcPt) return calcPt[calcKey];\n\n  // fallback to trace value,\n  //   must check if value isn't itself an array\n  //   which means the trace attribute has a corresponding\n  //   calcdata key, but its value is falsy\n  var traceVal = lib.nestedProperty(trace, traceKey).get();\n  if (!Array.isArray(traceVal)) return traceVal;\n};\nfunction makePtIndex2PtNumber(indexToPoints) {\n  var ptIndex2ptNumber = {};\n  for (var k in indexToPoints) {\n    var pts = indexToPoints[k];\n    for (var j = 0; j < pts.length; j++) {\n      ptIndex2ptNumber[pts[j]] = +k;\n    }\n  }\n  return ptIndex2ptNumber;\n}\n\n/** Tag selected calcdata items\n *\n * N.B. note that point 'index' corresponds to input data array index\n *  whereas 'number' is its post-transform version.\n *\n * @param {array} calcTrace\n * @param {object} trace\n *  - selectedpoints {array}\n *  - _indexToPoints {object}\n * @param {ptNumber2cdIndex} ptNumber2cdIndex (optional)\n *  optional map object for trace types that do not have 1-to-1 point number to\n *  calcdata item index correspondence (e.g. histogram)\n */\nlib.tagSelected = function (calcTrace, trace, ptNumber2cdIndex) {\n  var selectedpoints = trace.selectedpoints;\n  var indexToPoints = trace._indexToPoints;\n  var ptIndex2ptNumber;\n\n  // make pt index-to-number map object, which takes care of transformed traces\n  if (indexToPoints) {\n    ptIndex2ptNumber = makePtIndex2PtNumber(indexToPoints);\n  }\n  function isCdIndexValid(v) {\n    return v !== undefined && v < calcTrace.length;\n  }\n  for (var i = 0; i < selectedpoints.length; i++) {\n    var ptIndex = selectedpoints[i];\n    if (lib.isIndex(ptIndex) || lib.isArrayOrTypedArray(ptIndex) && lib.isIndex(ptIndex[0]) && lib.isIndex(ptIndex[1])) {\n      var ptNumber = ptIndex2ptNumber ? ptIndex2ptNumber[ptIndex] : ptIndex;\n      var cdIndex = ptNumber2cdIndex ? ptNumber2cdIndex[ptNumber] : ptNumber;\n      if (isCdIndexValid(cdIndex)) {\n        calcTrace[cdIndex].selected = 1;\n      }\n    }\n  }\n};\nlib.selIndices2selPoints = function (trace) {\n  var selectedpoints = trace.selectedpoints;\n  var indexToPoints = trace._indexToPoints;\n  if (indexToPoints) {\n    var ptIndex2ptNumber = makePtIndex2PtNumber(indexToPoints);\n    var out = [];\n    for (var i = 0; i < selectedpoints.length; i++) {\n      var ptIndex = selectedpoints[i];\n      if (lib.isIndex(ptIndex)) {\n        var ptNumber = ptIndex2ptNumber[ptIndex];\n        if (lib.isIndex(ptNumber)) {\n          out.push(ptNumber);\n        }\n      }\n    }\n    return out;\n  } else {\n    return selectedpoints;\n  }\n};\n\n/** Returns target as set by 'target' transform attribute\n *\n * @param {object} trace : full trace object\n * @param {object} transformOpts : transform option object\n *  - target (string} :\n *      either an attribute string referencing an array in the trace object, or\n *      a set array.\n *\n * @return {array or false} : the target array (NOT a copy!!) or false if invalid\n */\nlib.getTargetArray = function (trace, transformOpts) {\n  var target = transformOpts.target;\n  if (typeof target === 'string' && target) {\n    var array = lib.nestedProperty(trace, target).get();\n    return Array.isArray(array) ? array : false;\n  } else if (Array.isArray(target)) {\n    return target;\n  }\n  return false;\n};\n\n/**\n * modified version of jQuery's extend to strip out private objs and functions,\n * and cut arrays down to first <arraylen> or 1 elements\n * because extend-like algorithms are hella slow\n * obj2 is assumed to already be clean of these things (including no arrays)\n */\nlib.minExtend = function (obj1, obj2) {\n  var objOut = {};\n  if (typeof obj2 !== 'object') obj2 = {};\n  var arrayLen = 3;\n  var keys = Object.keys(obj1);\n  var i, k, v;\n  for (i = 0; i < keys.length; i++) {\n    k = keys[i];\n    v = obj1[k];\n    if (k.charAt(0) === '_' || typeof v === 'function') continue;else if (k === 'module') objOut[k] = v;else if (Array.isArray(v)) {\n      if (k === 'colorscale') {\n        objOut[k] = v.slice();\n      } else {\n        objOut[k] = v.slice(0, arrayLen);\n      }\n    } else if (lib.isTypedArray(v)) {\n      objOut[k] = v.subarray(0, arrayLen);\n    } else if (v && typeof v === 'object') objOut[k] = lib.minExtend(obj1[k], obj2[k]);else objOut[k] = v;\n  }\n  keys = Object.keys(obj2);\n  for (i = 0; i < keys.length; i++) {\n    k = keys[i];\n    v = obj2[k];\n    if (typeof v !== 'object' || !(k in objOut) || typeof objOut[k] !== 'object') {\n      objOut[k] = v;\n    }\n  }\n  return objOut;\n};\nlib.titleCase = function (s) {\n  return s.charAt(0).toUpperCase() + s.substr(1);\n};\nlib.containsAny = function (s, fragments) {\n  for (var i = 0; i < fragments.length; i++) {\n    if (s.indexOf(fragments[i]) !== -1) return true;\n  }\n  return false;\n};\nlib.isIE = function () {\n  return typeof window.navigator.msSaveBlob !== 'undefined';\n};\nvar IS_SAFARI_REGEX = /Version\\/[\\d\\.]+.*Safari/;\nlib.isSafari = function () {\n  return IS_SAFARI_REGEX.test(window.navigator.userAgent);\n};\nvar IS_IOS_REGEX = /iPad|iPhone|iPod/;\nlib.isIOS = function () {\n  return IS_IOS_REGEX.test(window.navigator.userAgent);\n};\nvar FIREFOX_VERSION_REGEX = /Firefox\\/(\\d+)\\.\\d+/;\nlib.getFirefoxVersion = function () {\n  var match = FIREFOX_VERSION_REGEX.exec(window.navigator.userAgent);\n  if (match && match.length === 2) {\n    var versionInt = parseInt(match[1]);\n    if (!isNaN(versionInt)) {\n      return versionInt;\n    }\n  }\n  return null;\n};\nlib.isD3Selection = function (obj) {\n  return obj instanceof d3.selection;\n};\n\n/**\n * Append element to DOM only if not present.\n *\n * @param {d3 selection} parent : parent selection of the element in question\n * @param {string} nodeType : node type of element to append\n * @param {string} className (optional) : class name of element in question\n * @param {fn} enterFn (optional) : optional fn applied to entering elements only\n * @return {d3 selection} selection of new layer\n *\n * Previously, we were using the following pattern:\n *\n * ```\n * var sel = parent.selectAll('.' + className)\n *     .data([0]);\n *\n * sel.enter().append(nodeType)\n *     .classed(className, true);\n *\n * return sel;\n * ```\n *\n * in numerous places in our codebase to achieve the same behavior.\n *\n * The logic below performs much better, mostly as we are using\n * `.select` instead `.selectAll` that is `querySelector` instead of\n * `querySelectorAll`.\n *\n */\nlib.ensureSingle = function (parent, nodeType, className, enterFn) {\n  var sel = parent.select(nodeType + (className ? '.' + className : ''));\n  if (sel.size()) return sel;\n  var layer = parent.append(nodeType);\n  if (className) layer.classed(className, true);\n  if (enterFn) layer.call(enterFn);\n  return layer;\n};\n\n/**\n * Same as Lib.ensureSingle, but using id as selector.\n * This version is mostly used for clipPath nodes.\n *\n * @param {d3 selection} parent : parent selection of the element in question\n * @param {string} nodeType : node type of element to append\n * @param {string} id : id of element in question\n * @param {fn} enterFn (optional) : optional fn applied to entering elements only\n * @return {d3 selection} selection of new layer\n */\nlib.ensureSingleById = function (parent, nodeType, id, enterFn) {\n  var sel = parent.select(nodeType + '#' + id);\n  if (sel.size()) return sel;\n  var layer = parent.append(nodeType).attr('id', id);\n  if (enterFn) layer.call(enterFn);\n  return layer;\n};\n\n/**\n * Converts a string path to an object.\n *\n * When given a string containing an array element, it will create a `null`\n * filled array of the given size.\n *\n * @example\n * lib.objectFromPath('nested.test[2].path', 'value');\n * // returns { nested: { test: [null, null, { path: 'value' }]}\n *\n * @param   {string}    path to nested value\n * @param   {*}         any value to be set\n *\n * @return {Object} the constructed object with a full nested path\n */\nlib.objectFromPath = function (path, value) {\n  var keys = path.split('.');\n  var tmpObj;\n  var obj = tmpObj = {};\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    var el = null;\n    var parts = keys[i].match(/(.*)\\[([0-9]+)\\]/);\n    if (parts) {\n      key = parts[1];\n      el = parts[2];\n      tmpObj = tmpObj[key] = [];\n      if (i === keys.length - 1) {\n        tmpObj[el] = value;\n      } else {\n        tmpObj[el] = {};\n      }\n      tmpObj = tmpObj[el];\n    } else {\n      if (i === keys.length - 1) {\n        tmpObj[key] = value;\n      } else {\n        tmpObj[key] = {};\n      }\n      tmpObj = tmpObj[key];\n    }\n  }\n  return obj;\n};\n\n/**\n * Iterate through an object in-place, converting dotted properties to objects.\n *\n * Examples:\n *\n *   lib.expandObjectPaths({'nested.test.path': 'value'});\n *     => { nested: { test: {path: 'value'}}}\n *\n * It also handles array notation, e.g.:\n *\n *   lib.expandObjectPaths({'foo[1].bar': 'value'});\n *     => { foo: [null, {bar: value}] }\n *\n * It handles merges the results when two properties are specified in parallel:\n *\n *   lib.expandObjectPaths({'foo[1].bar': 10, 'foo[0].bar': 20});\n *     => { foo: [{bar: 10}, {bar: 20}] }\n *\n * It does NOT, however, merge multiple multiply-nested arrays::\n *\n *   lib.expandObjectPaths({'marker[1].range[1]': 5, 'marker[1].range[0]': 4})\n *     => { marker: [null, {range: 4}] }\n */\n\n// Store this to avoid recompiling regex on *every* prop since this may happen many\n// many times for animations. Could maybe be inside the function. Not sure about\n// scoping vs. recompilation tradeoff, but at least it's not just inlining it into\n// the inner loop.\nvar dottedPropertyRegex = /^([^\\[\\.]+)\\.(.+)?/;\nvar indexedPropertyRegex = /^([^\\.]+)\\[([0-9]+)\\](\\.)?(.+)?/;\nlib.expandObjectPaths = function (data) {\n  var match, key, prop, datum, idx, dest, trailingPath;\n  if (typeof data === 'object' && !Array.isArray(data)) {\n    for (key in data) {\n      if (data.hasOwnProperty(key)) {\n        if (match = key.match(dottedPropertyRegex)) {\n          datum = data[key];\n          prop = match[1];\n          delete data[key];\n          data[prop] = lib.extendDeepNoArrays(data[prop] || {}, lib.objectFromPath(key, lib.expandObjectPaths(datum))[prop]);\n        } else if (match = key.match(indexedPropertyRegex)) {\n          datum = data[key];\n          prop = match[1];\n          idx = parseInt(match[2]);\n          delete data[key];\n          data[prop] = data[prop] || [];\n          if (match[3] === '.') {\n            // This is the case where theere are subsequent properties into which\n            // we must recurse, e.g. transforms[0].value\n            trailingPath = match[4];\n            dest = data[prop][idx] = data[prop][idx] || {};\n\n            // NB: Extend deep no arrays prevents this from working on multiple\n            // nested properties in the same object, e.g.\n            //\n            // {\n            //   foo[0].bar[1].range\n            //   foo[0].bar[0].range\n            // }\n            //\n            // In this case, the extendDeepNoArrays will overwrite one array with\n            // the other, so that both properties *will not* be present in the\n            // result. Fixing this would require a more intelligent tracking\n            // of changes and merging than extendDeepNoArrays currently accomplishes.\n            lib.extendDeepNoArrays(dest, lib.objectFromPath(trailingPath, lib.expandObjectPaths(datum)));\n          } else {\n            // This is the case where this property is the end of the line,\n            // e.g. xaxis.range[0]\n            data[prop][idx] = lib.expandObjectPaths(datum);\n          }\n        } else {\n          data[key] = lib.expandObjectPaths(data[key]);\n        }\n      }\n    }\n  }\n  return data;\n};\n\n/**\n * Converts value to string separated by the provided separators.\n *\n * @example\n * lib.numSeparate(2016, '.,');\n * // returns '2016'\n *\n * @example\n * lib.numSeparate(3000, '.,', true);\n * // returns '3,000'\n *\n * @example\n * lib.numSeparate(1234.56, '|,')\n * // returns '1,234|56'\n *\n * @param   {string|number} value       the value to be converted\n * @param   {string}    separators  string of decimal, then thousands separators\n * @param   {boolean}    separatethousands  boolean, 4-digit integers are separated if true\n *\n * @return  {string}    the value that has been separated\n */\nlib.numSeparate = function (value, separators, separatethousands) {\n  if (!separatethousands) separatethousands = false;\n  if (typeof separators !== 'string' || separators.length === 0) {\n    throw new Error('Separator string required for formatting!');\n  }\n  if (typeof value === 'number') {\n    value = String(value);\n  }\n  var thousandsRe = /(\\d+)(\\d{3})/;\n  var decimalSep = separators.charAt(0);\n  var thouSep = separators.charAt(1);\n  var x = value.split('.');\n  var x1 = x[0];\n  var x2 = x.length > 1 ? decimalSep + x[1] : '';\n\n  // Years are ignored for thousands separators\n  if (thouSep && (x.length > 1 || x1.length > 4 || separatethousands)) {\n    while (thousandsRe.test(x1)) {\n      x1 = x1.replace(thousandsRe, '$1' + thouSep + '$2');\n    }\n  }\n  return x1 + x2;\n};\nlib.TEMPLATE_STRING_REGEX = /%{([^\\s%{}:]*)([:|\\|][^}]*)?}/g;\nvar SIMPLE_PROPERTY_REGEX = /^\\w*$/;\n\n/**\n * Substitute values from an object into a string\n *\n * Examples:\n *  Lib.templateString('name: %{trace}', {trace: 'asdf'}) --> 'name: asdf'\n *  Lib.templateString('name: %{trace[0].name}', {trace: [{name: 'asdf'}]}) --> 'name: asdf'\n *\n * @param {string}  input string containing %{...} template strings\n * @param {obj}     data object containing substitution values\n *\n * @return {string} templated string\n */\nlib.templateString = function (string, obj) {\n  // Not all that useful, but cache nestedProperty instantiation\n  // just in case it speeds things up *slightly*:\n  var getterCache = {};\n  return string.replace(lib.TEMPLATE_STRING_REGEX, function (dummy, key) {\n    var v;\n    if (SIMPLE_PROPERTY_REGEX.test(key)) {\n      v = obj[key];\n    } else {\n      getterCache[key] = getterCache[key] || lib.nestedProperty(obj, key).get;\n      v = getterCache[key]();\n    }\n    return lib.isValidTextValue(v) ? v : '';\n  });\n};\nvar hovertemplateWarnings = {\n  max: 10,\n  count: 0,\n  name: 'hovertemplate'\n};\nlib.hovertemplateString = function () {\n  return templateFormatString.apply(hovertemplateWarnings, arguments);\n};\nvar texttemplateWarnings = {\n  max: 10,\n  count: 0,\n  name: 'texttemplate'\n};\nlib.texttemplateString = function () {\n  return templateFormatString.apply(texttemplateWarnings, arguments);\n};\nvar TEMPLATE_STRING_FORMAT_SEPARATOR = /^[:|\\|]/;\n/**\n * Substitute values from an object into a string and optionally formats them using d3-format,\n * or fallback to associated labels.\n *\n * Examples:\n *  Lib.hovertemplateString('name: %{trace}', {trace: 'asdf'}) --> 'name: asdf'\n *  Lib.hovertemplateString('name: %{trace[0].name}', {trace: [{name: 'asdf'}]}) --> 'name: asdf'\n *  Lib.hovertemplateString('price: %{y:$.2f}', {y: 1}) --> 'price: $1.00'\n *\n * @param {string}  input string containing %{...:...} template strings\n * @param {obj}     data object containing fallback text when no formatting is specified, ex.: {yLabel: 'formattedYValue'}\n * @param {obj}     d3 locale\n * @param {obj}     data objects containing substitution values\n *\n * @return {string} templated string\n */\nfunction templateFormatString(string, labels, d3locale) {\n  var opts = this;\n  var args = arguments;\n  if (!labels) labels = {};\n  // Not all that useful, but cache nestedProperty instantiation\n  // just in case it speeds things up *slightly*:\n  var getterCache = {};\n  return string.replace(lib.TEMPLATE_STRING_REGEX, function (match, rawKey, format) {\n    var isOther = rawKey === 'xother' || rawKey === 'yother';\n    var isSpaceOther = rawKey === '_xother' || rawKey === '_yother';\n    var isSpaceOtherSpace = rawKey === '_xother_' || rawKey === '_yother_';\n    var isOtherSpace = rawKey === 'xother_' || rawKey === 'yother_';\n    var hasOther = isOther || isSpaceOther || isOtherSpace || isSpaceOtherSpace;\n    var key = rawKey;\n    if (isSpaceOther || isSpaceOtherSpace) key = key.substring(1);\n    if (isOtherSpace || isSpaceOtherSpace) key = key.substring(0, key.length - 1);\n    var value;\n    if (hasOther) {\n      value = labels[key];\n      if (value === undefined) return '';\n    } else {\n      var obj, i;\n      for (i = 3; i < args.length; i++) {\n        obj = args[i];\n        if (!obj) continue;\n        if (obj.hasOwnProperty(key)) {\n          value = obj[key];\n          break;\n        }\n        if (!SIMPLE_PROPERTY_REGEX.test(key)) {\n          value = lib.nestedProperty(obj, key).get();\n          value = getterCache[key] || lib.nestedProperty(obj, key).get();\n          if (value) getterCache[key] = value;\n        }\n        if (value !== undefined) break;\n      }\n    }\n    if (value === undefined && opts) {\n      if (opts.count < opts.max) {\n        lib.warn('Variable \\'' + key + '\\' in ' + opts.name + ' could not be found!');\n        value = match;\n      }\n      if (opts.count === opts.max) {\n        lib.warn('Too many ' + opts.name + ' warnings - additional warnings will be suppressed');\n      }\n      opts.count++;\n      return match;\n    }\n    if (format) {\n      var fmt;\n      if (format[0] === ':') {\n        fmt = d3locale ? d3locale.numberFormat : lib.numberFormat;\n        value = fmt(format.replace(TEMPLATE_STRING_FORMAT_SEPARATOR, ''))(value);\n      }\n      if (format[0] === '|') {\n        fmt = d3locale ? d3locale.timeFormat : utcFormat;\n        var ms = lib.dateTime2ms(value);\n        value = lib.formatDate(ms, format.replace(TEMPLATE_STRING_FORMAT_SEPARATOR, ''), false, fmt);\n      }\n    } else {\n      var keyLabel = key + 'Label';\n      if (labels.hasOwnProperty(keyLabel)) value = labels[keyLabel];\n    }\n    if (hasOther) {\n      value = '(' + value + ')';\n      if (isSpaceOther || isSpaceOtherSpace) value = ' ' + value;\n      if (isOtherSpace || isSpaceOtherSpace) value = value + ' ';\n    }\n    return value;\n  });\n}\n\n/*\n * alphanumeric string sort, tailored for subplot IDs like scene2, scene10, x10y13 etc\n */\nvar char0 = 48;\nvar char9 = 57;\nlib.subplotSort = function (a, b) {\n  var l = Math.min(a.length, b.length) + 1;\n  var numA = 0;\n  var numB = 0;\n  for (var i = 0; i < l; i++) {\n    var charA = a.charCodeAt(i) || 0;\n    var charB = b.charCodeAt(i) || 0;\n    var isNumA = charA >= char0 && charA <= char9;\n    var isNumB = charB >= char0 && charB <= char9;\n    if (isNumA) numA = 10 * numA + charA - char0;\n    if (isNumB) numB = 10 * numB + charB - char0;\n    if (!isNumA || !isNumB) {\n      if (numA !== numB) return numA - numB;\n      if (charA !== charB) return charA - charB;\n    }\n  }\n  return numB - numA;\n};\n\n// repeatable pseudorandom generator\nvar randSeed = 2000000000;\nlib.seedPseudoRandom = function () {\n  randSeed = 2000000000;\n};\nlib.pseudoRandom = function () {\n  var lastVal = randSeed;\n  randSeed = (69069 * randSeed + 1) % 4294967296;\n  // don't let consecutive vals be too close together\n  // gets away from really trying to be random, in favor of better local uniformity\n  if (Math.abs(randSeed - lastVal) < 429496729) return lib.pseudoRandom();\n  return randSeed / 4294967296;\n};\n\n/** Fill hover 'pointData' container with 'correct' hover text value\n *\n * - If trace hoverinfo contains a 'text' flag and hovertext is not set,\n *   the text elements will be seen in the hover labels.\n *\n * - If trace hoverinfo contains a 'text' flag and hovertext is set,\n *   hovertext takes precedence over text\n *   i.e. the hoverinfo elements will be seen in the hover labels\n *\n *  @param {object} calcPt\n *  @param {object} trace\n *  @param {object || array} contOut (mutated here)\n */\nlib.fillText = function (calcPt, trace, contOut) {\n  var fill = Array.isArray(contOut) ? function (v) {\n    contOut.push(v);\n  } : function (v) {\n    contOut.text = v;\n  };\n  var htx = lib.extractOption(calcPt, trace, 'htx', 'hovertext');\n  if (lib.isValidTextValue(htx)) return fill(htx);\n  var tx = lib.extractOption(calcPt, trace, 'tx', 'text');\n  if (lib.isValidTextValue(tx)) return fill(tx);\n};\n\n// accept all truthy values and 0 (which gets cast to '0' in the hover labels)\nlib.isValidTextValue = function (v) {\n  return v || v === 0;\n};\n\n/**\n * @param {number} ratio\n * @param {number} n (number of decimal places)\n */\nlib.formatPercent = function (ratio, n) {\n  n = n || 0;\n  var str = (Math.round(100 * ratio * Math.pow(10, n)) * Math.pow(0.1, n)).toFixed(n) + '%';\n  for (var i = 0; i < n; i++) {\n    if (str.indexOf('.') !== -1) {\n      str = str.replace('0%', '%');\n      str = str.replace('.%', '%');\n    }\n  }\n  return str;\n};\nlib.isHidden = function (gd) {\n  var display = window.getComputedStyle(gd).display;\n  return !display || display === 'none';\n};\nlib.strTranslate = function (x, y) {\n  return x || y ? 'translate(' + x + ',' + y + ')' : '';\n};\nlib.strRotate = function (a) {\n  return a ? 'rotate(' + a + ')' : '';\n};\nlib.strScale = function (s) {\n  return s !== 1 ? 'scale(' + s + ')' : '';\n};\n\n/** Return transform text for bar bar-like rectangles and pie-like slices\n *  @param {object} transform\n *  - targetX: desired position on the x-axis\n *  - targetY: desired position on the y-axis\n *  - textX: text middle position on the x-axis\n *  - textY: text middle position on the y-axis\n *  - anchorX: (optional) text anchor position on the x-axis (computed from textX), zero for middle anchor\n *  - anchorY: (optional) text anchor position on the y-axis (computed from textY), zero for middle anchor\n *  - scale: (optional) scale applied after translate\n *  - rotate: (optional) rotation applied after scale\n *  - noCenter: when defined no extra arguments needed in rotation\n */\nlib.getTextTransform = function (transform) {\n  var noCenter = transform.noCenter;\n  var textX = transform.textX;\n  var textY = transform.textY;\n  var targetX = transform.targetX;\n  var targetY = transform.targetY;\n  var anchorX = transform.anchorX || 0;\n  var anchorY = transform.anchorY || 0;\n  var rotate = transform.rotate;\n  var scale = transform.scale;\n  if (!scale) scale = 0;else if (scale > 1) scale = 1;\n  return lib.strTranslate(targetX - scale * (textX + anchorX), targetY - scale * (textY + anchorY)) + lib.strScale(scale) + (rotate ? 'rotate(' + rotate + (noCenter ? '' : ' ' + textX + ' ' + textY) + ')' : '');\n};\nlib.setTransormAndDisplay = function (s, transform) {\n  s.attr('transform', lib.getTextTransform(transform));\n  s.style('display', transform.scale ? null : 'none');\n};\nlib.ensureUniformFontSize = function (gd, baseFont) {\n  var out = lib.extendFlat({}, baseFont);\n  out.size = Math.max(baseFont.size, gd._fullLayout.uniformtext.minsize || 0);\n  return out;\n};\n\n/**\n * provide a human-readable list e.g. \"A, B, C and D\" with an ending separator\n *\n * @param {array} arr : the array to join\n * @param {string} mainSeparator : main separator\n * @param {string} lastSeparator : last separator\n *\n * @return {string} : joined list\n */\nlib.join2 = function (arr, mainSeparator, lastSeparator) {\n  var len = arr.length;\n  if (len > 1) {\n    return arr.slice(0, -1).join(mainSeparator) + lastSeparator + arr[len - 1];\n  }\n  return arr.join(mainSeparator);\n};\nlib.bigFont = function (size) {\n  return Math.round(1.2 * size);\n};\nvar firefoxVersion = lib.getFirefoxVersion();\n// see https://bugzilla.mozilla.org/show_bug.cgi?id=1684973\nvar isProblematicFirefox = firefoxVersion !== null && firefoxVersion < 86;\n\n/**\n * Return the mouse position from the last event registered by D3.\n * @returns An array with two numbers, representing the x and y coordinates of the mouse pointer\n *   at the event relative to the targeted node.\n */\nlib.getPositionFromD3Event = function () {\n  if (isProblematicFirefox) {\n    // layerX and layerY are non-standard, so we only fallback to them when we have to:\n    return [d3.event.layerX, d3.event.layerY];\n  } else {\n    return [d3.event.offsetX, d3.event.offsetY];\n  }\n};\n\n/***/ }),\n\n/***/ 41965:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// more info: http://stackoverflow.com/questions/18531624/isplainobject-thing\nmodule.exports = function isPlainObject(obj) {\n  // We need to be a little less strict in the `imagetest` container because\n  // of how async image requests are handled.\n  //\n  // N.B. isPlainObject(new Constructor()) will return true in `imagetest`\n  if (window && window.process && window.process.versions) {\n    return Object.prototype.toString.call(obj) === '[object Object]';\n  }\n  return Object.prototype.toString.call(obj) === '[object Object]' && Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty');\n};\n\n/***/ }),\n\n/***/ 66636:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_867444__) {\n\n\"use strict\";\n\n\nvar nestedProperty = __nested_webpack_require_867444__(65487);\nvar SIMPLE_PROPERTY_REGEX = /^\\w*$/;\n\n// bitmask for deciding what's updated. Sometimes the name needs to be updated,\n// sometimes the value needs to be updated, and sometimes both do. This is just\n// a simple way to track what's updated such that it's a simple OR operation to\n// assimilate new updates.\n//\n// The only exception is the UNSET bit that tracks when we need to explicitly\n// unset and remove the property. This concrn arises because of the special\n// way in which nestedProperty handles null/undefined. When you specify `null`,\n// it prunes any unused items in the tree. I ran into some issues with it getting\n// null vs undefined confused, so UNSET is just a bit that forces the property\n// update to send `null`, removing the property explicitly rather than setting\n// it to undefined.\nvar NONE = 0;\nvar NAME = 1;\nvar VALUE = 2;\nvar BOTH = 3;\nvar UNSET = 4;\nmodule.exports = function keyedContainer(baseObj, path, keyName, valueName) {\n  keyName = keyName || 'name';\n  valueName = valueName || 'value';\n  var i, arr, baseProp;\n  var changeTypes = {};\n  if (path && path.length) {\n    baseProp = nestedProperty(baseObj, path);\n    arr = baseProp.get();\n  } else {\n    arr = baseObj;\n  }\n  path = path || '';\n\n  // Construct an index:\n  var indexLookup = {};\n  if (arr) {\n    for (i = 0; i < arr.length; i++) {\n      indexLookup[arr[i][keyName]] = i;\n    }\n  }\n  var isSimpleValueProp = SIMPLE_PROPERTY_REGEX.test(valueName);\n  var obj = {\n    set: function (name, value) {\n      var changeType = value === null ? UNSET : NONE;\n\n      // create the base array if necessary\n      if (!arr) {\n        if (!baseProp || changeType === UNSET) return;\n        arr = [];\n        baseProp.set(arr);\n      }\n      var idx = indexLookup[name];\n      if (idx === undefined) {\n        if (changeType === UNSET) return;\n        changeType = changeType | BOTH;\n        idx = arr.length;\n        indexLookup[name] = idx;\n      } else if (value !== (isSimpleValueProp ? arr[idx][valueName] : nestedProperty(arr[idx], valueName).get())) {\n        changeType = changeType | VALUE;\n      }\n      var newValue = arr[idx] = arr[idx] || {};\n      newValue[keyName] = name;\n      if (isSimpleValueProp) {\n        newValue[valueName] = value;\n      } else {\n        nestedProperty(newValue, valueName).set(value);\n      }\n\n      // If it's not an unset, force that bit to be unset. This is all related to the fact\n      // that undefined and null are a bit specially implemented in nestedProperties.\n      if (value !== null) {\n        changeType = changeType & ~UNSET;\n      }\n      changeTypes[idx] = changeTypes[idx] | changeType;\n      return obj;\n    },\n    get: function (name) {\n      if (!arr) return;\n      var idx = indexLookup[name];\n      if (idx === undefined) {\n        return undefined;\n      } else if (isSimpleValueProp) {\n        return arr[idx][valueName];\n      } else {\n        return nestedProperty(arr[idx], valueName).get();\n      }\n    },\n    rename: function (name, newName) {\n      var idx = indexLookup[name];\n      if (idx === undefined) return obj;\n      changeTypes[idx] = changeTypes[idx] | NAME;\n      indexLookup[newName] = idx;\n      delete indexLookup[name];\n      arr[idx][keyName] = newName;\n      return obj;\n    },\n    remove: function (name) {\n      var idx = indexLookup[name];\n      if (idx === undefined) return obj;\n      var object = arr[idx];\n      if (Object.keys(object).length > 2) {\n        // This object contains more than just the key/value, so unset\n        // the value without modifying the entry otherwise:\n        changeTypes[idx] = changeTypes[idx] | VALUE;\n        return obj.set(name, null);\n      }\n      if (isSimpleValueProp) {\n        for (i = idx; i < arr.length; i++) {\n          changeTypes[i] = changeTypes[i] | BOTH;\n        }\n        for (i = idx; i < arr.length; i++) {\n          indexLookup[arr[i][keyName]]--;\n        }\n        arr.splice(idx, 1);\n        delete indexLookup[name];\n      } else {\n        // Perform this update *strictly* so we can check whether the result's\n        // been pruned. If so, it's a removal. If not, it's a value unset only.\n        nestedProperty(object, valueName).set(null);\n\n        // Now check if the top level nested property has any keys left. If so,\n        // the object still has values so we only want to unset the key. If not,\n        // the entire object can be removed since there's no other data.\n        // var topLevelKeys = Object.keys(object[valueName.split('.')[0]] || []);\n\n        changeTypes[idx] = changeTypes[idx] | VALUE | UNSET;\n      }\n      return obj;\n    },\n    constructUpdate: function () {\n      var astr, idx;\n      var update = {};\n      var changed = Object.keys(changeTypes);\n      for (var i = 0; i < changed.length; i++) {\n        idx = changed[i];\n        astr = path + '[' + idx + ']';\n        if (arr[idx]) {\n          if (changeTypes[idx] & NAME) {\n            update[astr + '.' + keyName] = arr[idx][keyName];\n          }\n          if (changeTypes[idx] & VALUE) {\n            if (isSimpleValueProp) {\n              update[astr + '.' + valueName] = changeTypes[idx] & UNSET ? null : arr[idx][valueName];\n            } else {\n              update[astr + '.' + valueName] = changeTypes[idx] & UNSET ? null : nestedProperty(arr[idx], valueName).get();\n            }\n          }\n        } else {\n          update[astr] = null;\n        }\n      }\n      return update;\n    }\n  };\n  return obj;\n};\n\n/***/ }),\n\n/***/ 15867:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_873039__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_873039__(73972);\n\n/**\n * localize: translate a string for the current locale\n *\n * @param {object} gd: the graphDiv for context\n *  gd._context.locale determines the language (& optional region/country)\n *  the dictionary for each locale may either be supplied in\n *  gd._context.locales or globally via Plotly.register\n * @param {string} s: the string to translate\n */\nmodule.exports = function localize(gd, s) {\n  var locale = gd._context.locale;\n\n  /*\n   * Priority of lookup:\n   *     contextDicts[locale],\n   *     registeredDicts[locale],\n   *     contextDicts[baseLocale], (if baseLocale is distinct)\n   *     registeredDicts[baseLocale]\n   * Return the first translation we find.\n   * This way if you have a regionalization you are allowed to specify\n   * only what's different from the base locale, everything else will\n   * fall back on the base.\n   */\n  for (var i = 0; i < 2; i++) {\n    var locales = gd._context.locales;\n    for (var j = 0; j < 2; j++) {\n      var dict = (locales[locale] || {}).dictionary;\n      if (dict) {\n        var out = dict[s];\n        if (out) return out;\n      }\n      locales = Registry.localeRegistry;\n    }\n    var baseLocale = locale.split('-')[0];\n    if (baseLocale === locale) break;\n    locale = baseLocale;\n  }\n  return s;\n};\n\n/***/ }),\n\n/***/ 47769:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_874455__) {\n\n\"use strict\";\n\n\n/* eslint-disable no-console */\nvar dfltConfig = (__nested_webpack_require_874455__(72075).dfltConfig);\nvar notifier = __nested_webpack_require_874455__(75046);\nvar loggers = module.exports = {};\n\n/**\n * ------------------------------------------\n * debugging tools\n * ------------------------------------------\n */\n\nloggers.log = function () {\n  var i;\n  if (dfltConfig.logging > 1) {\n    var messages = ['LOG:'];\n    for (i = 0; i < arguments.length; i++) {\n      messages.push(arguments[i]);\n    }\n    console.trace.apply(console, messages);\n  }\n  if (dfltConfig.notifyOnLogging > 1) {\n    var lines = [];\n    for (i = 0; i < arguments.length; i++) {\n      lines.push(arguments[i]);\n    }\n    notifier(lines.join('<br>'), 'long');\n  }\n};\nloggers.warn = function () {\n  var i;\n  if (dfltConfig.logging > 0) {\n    var messages = ['WARN:'];\n    for (i = 0; i < arguments.length; i++) {\n      messages.push(arguments[i]);\n    }\n    console.trace.apply(console, messages);\n  }\n  if (dfltConfig.notifyOnLogging > 0) {\n    var lines = [];\n    for (i = 0; i < arguments.length; i++) {\n      lines.push(arguments[i]);\n    }\n    notifier(lines.join('<br>'), 'stick');\n  }\n};\nloggers.error = function () {\n  var i;\n  if (dfltConfig.logging > 0) {\n    var messages = ['ERROR:'];\n    for (i = 0; i < arguments.length; i++) {\n      messages.push(arguments[i]);\n    }\n    console.error.apply(console, messages);\n  }\n  if (dfltConfig.notifyOnLogging > 0) {\n    var lines = [];\n    for (i = 0; i < arguments.length; i++) {\n      lines.push(arguments[i]);\n    }\n    notifier(lines.join('<br>'), 'stick');\n  }\n};\n\n/***/ }),\n\n/***/ 77310:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_876139__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_876139__(39898);\n\n/**\n * General helper to manage trace groups based on calcdata\n *\n * @param {d3.selection} traceLayer: a selection containing a single group\n *     to draw these traces into\n * @param {array} cdModule: array of calcdata items for this\n *     module and subplot combination. Assumes the calcdata item for each\n *     trace is an array with the fullData trace attached to the first item.\n * @param {string} cls: the class attribute to give each trace group\n *     so you can give multiple classes separated by spaces\n */\nmodule.exports = function makeTraceGroups(traceLayer, cdModule, cls) {\n  var traces = traceLayer.selectAll('g.' + cls.replace(/\\s/g, '.')).data(cdModule, function (cd) {\n    return cd[0].trace.uid;\n  });\n  traces.exit().remove();\n  traces.enter().append('g').attr('class', cls);\n  traces.order();\n\n  // stash ref node to trace group in calcdata,\n  // useful for (fast) styleOnSelect\n  var k = traceLayer.classed('rangeplot') ? 'nodeRangePlot3' : 'node3';\n  traces.each(function (cd) {\n    cd[0][k] = d3.select(this);\n  });\n  return traces;\n};\n\n/***/ }),\n\n/***/ 35657:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_877354__) {\n\n\"use strict\";\n\n\nvar mat4X4 = __nested_webpack_require_877354__(79576);\nexports.init2dArray = function (rowLength, colLength) {\n  var array = new Array(rowLength);\n  for (var i = 0; i < rowLength; i++) array[i] = new Array(colLength);\n  return array;\n};\n\n/**\n * transpose a (possibly ragged) 2d array z. inspired by\n * http://stackoverflow.com/questions/17428587/\n * transposing-a-2d-array-in-javascript\n */\nexports.transposeRagged = function (z) {\n  var maxlen = 0;\n  var zlen = z.length;\n  var i, j;\n  // Maximum row length:\n  for (i = 0; i < zlen; i++) maxlen = Math.max(maxlen, z[i].length);\n  var t = new Array(maxlen);\n  for (i = 0; i < maxlen; i++) {\n    t[i] = new Array(zlen);\n    for (j = 0; j < zlen; j++) t[i][j] = z[j][i];\n  }\n  return t;\n};\n\n// our own dot function so that we don't need to include numeric\nexports.dot = function (x, y) {\n  if (!(x.length && y.length) || x.length !== y.length) return null;\n  var len = x.length;\n  var out;\n  var i;\n  if (x[0].length) {\n    // mat-vec or mat-mat\n    out = new Array(len);\n    for (i = 0; i < len; i++) out[i] = exports.dot(x[i], y);\n  } else if (y[0].length) {\n    // vec-mat\n    var yTranspose = exports.transposeRagged(y);\n    out = new Array(yTranspose.length);\n    for (i = 0; i < yTranspose.length; i++) out[i] = exports.dot(x, yTranspose[i]);\n  } else {\n    // vec-vec\n    out = 0;\n    for (i = 0; i < len; i++) out += x[i] * y[i];\n  }\n  return out;\n};\n\n// translate by (x,y)\nexports.translationMatrix = function (x, y) {\n  return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n};\n\n// rotate by alpha around (0,0)\nexports.rotationMatrix = function (alpha) {\n  var a = alpha * Math.PI / 180;\n  return [[Math.cos(a), -Math.sin(a), 0], [Math.sin(a), Math.cos(a), 0], [0, 0, 1]];\n};\n\n// rotate by alpha around (x,y)\nexports.rotationXYMatrix = function (a, x, y) {\n  return exports.dot(exports.dot(exports.translationMatrix(x, y), exports.rotationMatrix(a)), exports.translationMatrix(-x, -y));\n};\n\n// applies a 3D transformation matrix to either x, y and z params\n// Note: z is optional\nexports.apply3DTransform = function (transform) {\n  return function () {\n    var args = arguments;\n    var xyz = arguments.length === 1 ? args[0] : [args[0], args[1], args[2] || 0];\n    return exports.dot(transform, [xyz[0], xyz[1], xyz[2], 1]).slice(0, 3);\n  };\n};\n\n// applies a 2D transformation matrix to either x and y params or an [x,y] array\nexports.apply2DTransform = function (transform) {\n  return function () {\n    var args = arguments;\n    if (args.length === 3) {\n      args = args[0];\n    } // from map\n    var xy = arguments.length === 1 ? args[0] : [args[0], args[1]];\n    return exports.dot(transform, [xy[0], xy[1], 1]).slice(0, 2);\n  };\n};\n\n// applies a 2D transformation matrix to an [x1,y1,x2,y2] array (to transform a segment)\nexports.apply2DTransform2 = function (transform) {\n  var at = exports.apply2DTransform(transform);\n  return function (xys) {\n    return at(xys.slice(0, 2)).concat(at(xys.slice(2, 4)));\n  };\n};\nexports.convertCssMatrix = function (m) {\n  if (m) {\n    var len = m.length;\n    if (len === 16) return m;\n    if (len === 6) {\n      // converts a 2x3 css transform matrix to a 4x4 matrix see https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix\n      return [m[0], m[1], 0, 0, m[2], m[3], 0, 0, 0, 0, 1, 0, m[4], m[5], 0, 1];\n    }\n  }\n  return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\n// find the inverse for a 4x4 affine transform matrix\nexports.inverseTransformMatrix = function (m) {\n  var out = [];\n  mat4X4.invert(out, m);\n  return [[out[0], out[1], out[2], out[3]], [out[4], out[5], out[6], out[7]], [out[8], out[9], out[10], out[11]], [out[12], out[13], out[14], out[15]]];\n};\n\n/***/ }),\n\n/***/ 64872:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/**\n * sanitized modulus function that always returns in the range [0, d)\n * rather than (-d, 0] if v is negative\n */\nfunction mod(v, d) {\n  var out = v % d;\n  return out < 0 ? out + d : out;\n}\n\n/**\n * sanitized modulus function that always returns in the range [-d/2, d/2]\n * rather than (-d, 0] if v is negative\n */\nfunction modHalf(v, d) {\n  return Math.abs(v) > d / 2 ? v - Math.round(v / d) * d : v;\n}\nmodule.exports = {\n  mod: mod,\n  modHalf: modHalf\n};\n\n/***/ }),\n\n/***/ 65487:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_881670__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_881670__(92770);\nvar isArrayOrTypedArray = (__nested_webpack_require_881670__(73627).isArrayOrTypedArray);\n\n/**\n * convert a string s (such as 'xaxis.range[0]')\n * representing a property of nested object into set and get methods\n * also return the string and object so we don't have to keep track of them\n * allows [-1] for an array index, to set a property inside all elements\n * of an array\n * eg if obj = {arr: [{a: 1}, {a: 2}]}\n * you can do p = nestedProperty(obj, 'arr[-1].a')\n * but you cannot set the array itself this way, to do that\n * just set the whole array.\n * eg if obj = {arr: [1, 2, 3]}\n * you can't do nestedProperty(obj, 'arr[-1]').set(5)\n * but you can do nestedProperty(obj, 'arr').set([5, 5, 5])\n */\nmodule.exports = function nestedProperty(container, propStr) {\n  if (isNumeric(propStr)) propStr = String(propStr);else if (typeof propStr !== 'string' || propStr.substr(propStr.length - 4) === '[-1]') {\n    throw 'bad property string';\n  }\n  var j = 0;\n  var propParts = propStr.split('.');\n  var indexed;\n  var indices;\n  var i;\n\n  // check for parts of the nesting hierarchy that are numbers (ie array elements)\n  while (j < propParts.length) {\n    // look for non-bracket chars, then any number of [##] blocks\n    indexed = String(propParts[j]).match(/^([^\\[\\]]*)((\\[\\-?[0-9]*\\])+)$/);\n    if (indexed) {\n      if (indexed[1]) propParts[j] = indexed[1];\n      // allow propStr to start with bracketed array indices\n      else if (j === 0) propParts.splice(0, 1);else throw 'bad property string';\n      indices = indexed[2].substr(1, indexed[2].length - 2).split('][');\n      for (i = 0; i < indices.length; i++) {\n        j++;\n        propParts.splice(j, 0, Number(indices[i]));\n      }\n    }\n    j++;\n  }\n  if (typeof container !== 'object') {\n    return badContainer(container, propStr, propParts);\n  }\n  return {\n    set: npSet(container, propParts, propStr),\n    get: npGet(container, propParts),\n    astr: propStr,\n    parts: propParts,\n    obj: container\n  };\n};\nfunction npGet(cont, parts) {\n  return function () {\n    var curCont = cont;\n    var curPart;\n    var allSame;\n    var out;\n    var i;\n    var j;\n    for (i = 0; i < parts.length - 1; i++) {\n      curPart = parts[i];\n      if (curPart === -1) {\n        allSame = true;\n        out = [];\n        for (j = 0; j < curCont.length; j++) {\n          out[j] = npGet(curCont[j], parts.slice(i + 1))();\n          if (out[j] !== out[0]) allSame = false;\n        }\n        return allSame ? out[0] : out;\n      }\n      if (typeof curPart === 'number' && !isArrayOrTypedArray(curCont)) {\n        return undefined;\n      }\n      curCont = curCont[curPart];\n      if (typeof curCont !== 'object' || curCont === null) {\n        return undefined;\n      }\n    }\n\n    // only hit this if parts.length === 1\n    if (typeof curCont !== 'object' || curCont === null) return undefined;\n    out = curCont[parts[i]];\n    if (out === null) return undefined;\n    return out;\n  };\n}\n\n/*\n * Can this value be deleted? We can delete `undefined`, and `null` except INSIDE an\n * *args* array.\n *\n * Previously we also deleted some `{}` and `[]`, in order to try and make set/unset\n * a net noop; but this causes far more complication than it's worth, and still had\n * lots of exceptions. See https://github.com/plotly/plotly.js/issues/1410\n *\n * *args* arrays get passed directly to API methods and we should respect null if\n * the user put it there, but otherwise null is deleted as we use it as code\n * in restyle/relayout/update for \"delete this value\" whereas undefined means\n * \"ignore this edit\"\n */\nvar ARGS_PATTERN = /(^|\\.)args\\[/;\nfunction isDeletable(val, propStr) {\n  return val === undefined || val === null && !propStr.match(ARGS_PATTERN);\n}\nfunction npSet(cont, parts, propStr) {\n  return function (val) {\n    var curCont = cont;\n    var propPart = '';\n    var containerLevels = [[cont, propPart]];\n    var toDelete = isDeletable(val, propStr);\n    var curPart;\n    var i;\n    for (i = 0; i < parts.length - 1; i++) {\n      curPart = parts[i];\n      if (typeof curPart === 'number' && !isArrayOrTypedArray(curCont)) {\n        throw 'array index but container is not an array';\n      }\n\n      // handle special -1 array index\n      if (curPart === -1) {\n        toDelete = !setArrayAll(curCont, parts.slice(i + 1), val, propStr);\n        if (toDelete) break;else return;\n      }\n      if (!checkNewContainer(curCont, curPart, parts[i + 1], toDelete)) {\n        break;\n      }\n      curCont = curCont[curPart];\n      if (typeof curCont !== 'object' || curCont === null) {\n        throw 'container is not an object';\n      }\n      propPart = joinPropStr(propPart, curPart);\n      containerLevels.push([curCont, propPart]);\n    }\n    if (toDelete) {\n      if (i === parts.length - 1) {\n        delete curCont[parts[i]];\n\n        // The one bit of pruning we still do: drop `undefined` from the end of arrays.\n        // In case someone has already unset previous items, continue until we hit a\n        // non-undefined value.\n        if (Array.isArray(curCont) && +parts[i] === curCont.length - 1) {\n          while (curCont.length && curCont[curCont.length - 1] === undefined) {\n            curCont.pop();\n          }\n        }\n      }\n    } else curCont[parts[i]] = val;\n  };\n}\nfunction joinPropStr(propStr, newPart) {\n  var toAdd = newPart;\n  if (isNumeric(newPart)) toAdd = '[' + newPart + ']';else if (propStr) toAdd = '.' + newPart;\n  return propStr + toAdd;\n}\n\n// handle special -1 array index\nfunction setArrayAll(containerArray, innerParts, val, propStr) {\n  var arrayVal = isArrayOrTypedArray(val);\n  var allSet = true;\n  var thisVal = val;\n  var thisPropStr = propStr.replace('-1', 0);\n  var deleteThis = arrayVal ? false : isDeletable(val, thisPropStr);\n  var firstPart = innerParts[0];\n  var i;\n  for (i = 0; i < containerArray.length; i++) {\n    thisPropStr = propStr.replace('-1', i);\n    if (arrayVal) {\n      thisVal = val[i % val.length];\n      deleteThis = isDeletable(thisVal, thisPropStr);\n    }\n    if (deleteThis) allSet = false;\n    if (!checkNewContainer(containerArray, i, firstPart, deleteThis)) {\n      continue;\n    }\n    npSet(containerArray[i], innerParts, propStr.replace('-1', i))(thisVal);\n  }\n  return allSet;\n}\n\n/**\n * make new sub-container as needed.\n * returns false if there's no container and none is needed\n * because we're only deleting an attribute\n */\nfunction checkNewContainer(container, part, nextPart, toDelete) {\n  if (container[part] === undefined) {\n    if (toDelete) return false;\n    if (typeof nextPart === 'number') container[part] = [];else container[part] = {};\n  }\n  return true;\n}\nfunction badContainer(container, propStr, propParts) {\n  return {\n    set: function () {\n      throw 'bad container';\n    },\n    get: function () {},\n    astr: propStr,\n    parts: propParts,\n    obj: container\n  };\n}\n\n/***/ }),\n\n/***/ 64213:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// Simple helper functions\n// none of these need any external deps\nmodule.exports = function noop() {};\n\n/***/ }),\n\n/***/ 75046:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_888803__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_888803__(39898);\nvar isNumeric = __nested_webpack_require_888803__(92770);\nvar NOTEDATA = [];\n\n/**\n * notifier\n * @param {String} text The person's user name\n * @param {Number} [delay=1000] The delay time in milliseconds\n *          or 'long' which provides 2000 ms delay time.\n * @return {undefined} this function does not return a value\n */\nmodule.exports = function (text, displayLength) {\n  if (NOTEDATA.indexOf(text) !== -1) return;\n  NOTEDATA.push(text);\n  var ts = 1000;\n  if (isNumeric(displayLength)) ts = displayLength;else if (displayLength === 'long') ts = 3000;\n  var notifierContainer = d3.select('body').selectAll('.plotly-notifier').data([0]);\n  notifierContainer.enter().append('div').classed('plotly-notifier', true);\n  var notes = notifierContainer.selectAll('.notifier-note').data(NOTEDATA);\n  function killNote(transition) {\n    transition.duration(700).style('opacity', 0).each('end', function (thisText) {\n      var thisIndex = NOTEDATA.indexOf(thisText);\n      if (thisIndex !== -1) NOTEDATA.splice(thisIndex, 1);\n      d3.select(this).remove();\n    });\n  }\n  notes.enter().append('div').classed('notifier-note', true).style('opacity', 0).each(function (thisText) {\n    var note = d3.select(this);\n    note.append('button').classed('notifier-close', true).html('&times;').on('click', function () {\n      note.transition().call(killNote);\n    });\n    var p = note.append('p');\n    var lines = thisText.split(/<br\\s*\\/?>/g);\n    for (var i = 0; i < lines.length; i++) {\n      if (i) p.append('br');\n      p.append('span').text(lines[i]);\n    }\n    if (displayLength === 'stick') {\n      note.transition().duration(350).style('opacity', 1);\n    } else {\n      note.transition().duration(700).style('opacity', 1).transition().delay(ts).call(killNote);\n    }\n  });\n};\n\n/***/ }),\n\n/***/ 39918:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_890711__) {\n\n\"use strict\";\n\n\nvar setCursor = __nested_webpack_require_890711__(6964);\nvar STASHATTR = 'data-savedcursor';\nvar NO_CURSOR = '!!';\n\n/*\n * works with our CSS cursor classes (see css/_cursor.scss)\n * to override a previous cursor set on d3 single-element selections,\n * by moving the name of the original cursor to the data-savedcursor attr.\n * omit cursor to revert to the previously set value.\n */\nmodule.exports = function overrideCursor(el3, csr) {\n  var savedCursor = el3.attr(STASHATTR);\n  if (csr) {\n    if (!savedCursor) {\n      var classes = (el3.attr('class') || '').split(' ');\n      for (var i = 0; i < classes.length; i++) {\n        var cls = classes[i];\n        if (cls.indexOf('cursor-') === 0) {\n          el3.attr(STASHATTR, cls.substr(7)).classed(cls, false);\n        }\n      }\n      if (!el3.attr(STASHATTR)) {\n        el3.attr(STASHATTR, NO_CURSOR);\n      }\n    }\n    setCursor(el3, csr);\n  } else if (savedCursor) {\n    el3.attr(STASHATTR, null);\n    if (savedCursor === NO_CURSOR) setCursor(el3);else setCursor(el3, savedCursor);\n  }\n};\n\n/***/ }),\n\n/***/ 61082:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_891853__) {\n\n\"use strict\";\n\n\nvar dot = (__nested_webpack_require_891853__(35657).dot);\nvar BADNUM = (__nested_webpack_require_891853__(50606).BADNUM);\nvar polygon = module.exports = {};\n\n/**\n * Turn an array of [x, y] pairs into a polygon object\n * that can test if points are inside it\n *\n * @param ptsIn Array of [x, y] pairs\n *\n * @returns polygon Object {xmin, xmax, ymin, ymax, pts, contains}\n *      (x|y)(min|max) are the bounding rect of the polygon\n *      pts is the original array, with the first pair repeated at the end\n *      contains is a function: (pt, omitFirstEdge)\n *          pt is the [x, y] pair to test\n *          omitFirstEdge truthy means points exactly on the first edge don't\n *              count. This is for use adding one polygon to another so we\n *              don't double-count the edge where they meet.\n *          returns boolean: is pt inside the polygon (including on its edges)\n */\npolygon.tester = function tester(ptsIn) {\n  var pts = ptsIn.slice();\n  var xmin = pts[0][0];\n  var xmax = xmin;\n  var ymin = pts[0][1];\n  var ymax = ymin;\n  var i;\n  if (pts[pts.length - 1][0] !== pts[0][0] || pts[pts.length - 1][1] !== pts[0][1]) {\n    // close the polygon\n    pts.push(pts[0]);\n  }\n  for (i = 1; i < pts.length; i++) {\n    xmin = Math.min(xmin, pts[i][0]);\n    xmax = Math.max(xmax, pts[i][0]);\n    ymin = Math.min(ymin, pts[i][1]);\n    ymax = Math.max(ymax, pts[i][1]);\n  }\n\n  // do we have a rectangle? Handle this here, so we can use the same\n  // tester for the rectangular case without sacrificing speed\n\n  var isRect = false;\n  var rectFirstEdgeTest;\n  if (pts.length === 5) {\n    if (pts[0][0] === pts[1][0]) {\n      // vert, horz, vert, horz\n      if (pts[2][0] === pts[3][0] && pts[0][1] === pts[3][1] && pts[1][1] === pts[2][1]) {\n        isRect = true;\n        rectFirstEdgeTest = function (pt) {\n          return pt[0] === pts[0][0];\n        };\n      }\n    } else if (pts[0][1] === pts[1][1]) {\n      // horz, vert, horz, vert\n      if (pts[2][1] === pts[3][1] && pts[0][0] === pts[3][0] && pts[1][0] === pts[2][0]) {\n        isRect = true;\n        rectFirstEdgeTest = function (pt) {\n          return pt[1] === pts[0][1];\n        };\n      }\n    }\n  }\n  function rectContains(pt, omitFirstEdge) {\n    var x = pt[0];\n    var y = pt[1];\n    if (x === BADNUM || x < xmin || x > xmax || y === BADNUM || y < ymin || y > ymax) {\n      // pt is outside the bounding box of polygon\n      return false;\n    }\n    if (omitFirstEdge && rectFirstEdgeTest(pt)) return false;\n    return true;\n  }\n  function contains(pt, omitFirstEdge) {\n    var x = pt[0];\n    var y = pt[1];\n    if (x === BADNUM || x < xmin || x > xmax || y === BADNUM || y < ymin || y > ymax) {\n      // pt is outside the bounding box of polygon\n      return false;\n    }\n    var imax = pts.length;\n    var x1 = pts[0][0];\n    var y1 = pts[0][1];\n    var crossings = 0;\n    var i;\n    var x0;\n    var y0;\n    var xmini;\n    var ycross;\n    for (i = 1; i < imax; i++) {\n      // find all crossings of a vertical line upward from pt with\n      // polygon segments\n      // crossings exactly at xmax don't count, unless the point is\n      // exactly on the segment, then it counts as inside.\n      x0 = x1;\n      y0 = y1;\n      x1 = pts[i][0];\n      y1 = pts[i][1];\n      xmini = Math.min(x0, x1);\n      if (x < xmini || x > Math.max(x0, x1) || y > Math.max(y0, y1)) {\n        // outside the bounding box of this segment, it's only a crossing\n        // if it's below the box.\n\n        continue;\n      } else if (y < Math.min(y0, y1)) {\n        // don't count the left-most point of the segment as a crossing\n        // because we don't want to double-count adjacent crossings\n        // UNLESS the polygon turns past vertical at exactly this x\n        // Note that this is repeated below, but we can't factor it out\n        // because\n        if (x !== xmini) crossings++;\n      } else {\n        // inside the bounding box, check the actual line intercept\n\n        // vertical segment - we know already that the point is exactly\n        // on the segment, so mark the crossing as exactly at the point.\n        if (x1 === x0) ycross = y;\n        // any other angle\n        else ycross = y0 + (x - x0) * (y1 - y0) / (x1 - x0);\n\n        // exactly on the edge: counts as inside the polygon, unless it's the\n        // first edge and we're omitting it.\n        if (y === ycross) {\n          if (i === 1 && omitFirstEdge) return false;\n          return true;\n        }\n        if (y <= ycross && x !== xmini) crossings++;\n      }\n    }\n\n    // if we've gotten this far, odd crossings means inside, even is outside\n    return crossings % 2 === 1;\n  }\n\n  // detect if poly is degenerate\n  var degenerate = true;\n  var lastPt = pts[0];\n  for (i = 1; i < pts.length; i++) {\n    if (lastPt[0] !== pts[i][0] || lastPt[1] !== pts[i][1]) {\n      degenerate = false;\n      break;\n    }\n  }\n  return {\n    xmin: xmin,\n    xmax: xmax,\n    ymin: ymin,\n    ymax: ymax,\n    pts: pts,\n    contains: isRect ? rectContains : contains,\n    isRect: isRect,\n    degenerate: degenerate\n  };\n};\n\n/**\n * Test if a segment of a points array is bent or straight\n *\n * @param pts Array of [x, y] pairs\n * @param start the index of the proposed start of the straight section\n * @param end the index of the proposed end point\n * @param tolerance the max distance off the line connecting start and end\n *      before the line counts as bent\n * @returns boolean: true means this segment is bent, false means straight\n */\npolygon.isSegmentBent = function isSegmentBent(pts, start, end, tolerance) {\n  var startPt = pts[start];\n  var segment = [pts[end][0] - startPt[0], pts[end][1] - startPt[1]];\n  var segmentSquared = dot(segment, segment);\n  var segmentLen = Math.sqrt(segmentSquared);\n  var unitPerp = [-segment[1] / segmentLen, segment[0] / segmentLen];\n  var i;\n  var part;\n  var partParallel;\n  for (i = start + 1; i < end; i++) {\n    part = [pts[i][0] - startPt[0], pts[i][1] - startPt[1]];\n    partParallel = dot(part, segment);\n    if (partParallel < 0 || partParallel > segmentSquared || Math.abs(dot(part, unitPerp)) > tolerance) return true;\n  }\n  return false;\n};\n\n/**\n * Make a filtering polygon, to minimize the number of segments\n *\n * @param pts Array of [x, y] pairs (must start with at least 1 pair)\n * @param tolerance the maximum deviation from straight allowed for\n *      removing points to simplify the polygon\n *\n * @returns Object {addPt, raw, filtered}\n *      addPt is a function(pt: [x, y] pair) to add a raw point and\n *          continue filtering\n *      raw is all the input points\n *      filtered is the resulting filtered Array of [x, y] pairs\n */\npolygon.filter = function filter(pts, tolerance) {\n  var ptsFiltered = [pts[0]];\n  var doneRawIndex = 0;\n  var doneFilteredIndex = 0;\n  function addPt(pt) {\n    pts.push(pt);\n    var prevFilterLen = ptsFiltered.length;\n    var iLast = doneRawIndex;\n    ptsFiltered.splice(doneFilteredIndex + 1);\n    for (var i = iLast + 1; i < pts.length; i++) {\n      if (i === pts.length - 1 || polygon.isSegmentBent(pts, iLast, i + 1, tolerance)) {\n        ptsFiltered.push(pts[i]);\n        if (ptsFiltered.length < prevFilterLen - 2) {\n          doneRawIndex = i;\n          doneFilteredIndex = ptsFiltered.length - 1;\n        }\n        iLast = i;\n      }\n    }\n  }\n  if (pts.length > 1) {\n    var lastPt = pts.pop();\n    addPt(lastPt);\n  }\n  return {\n    addPt: addPt,\n    raw: pts,\n    filtered: ptsFiltered\n  };\n};\n\n/***/ }),\n\n/***/ 79749:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_899373__) {\n\n\"use strict\";\n\n\nvar showNoWebGlMsg = __nested_webpack_require_899373__(58617);\n\n// Note that this module should be ONLY required into\n// files corresponding to regl trace modules\n// so that bundles with non-regl only don't include\n// regl and all its bytes.\nvar createRegl = __nested_webpack_require_899373__(98580);\n\n/**\n * Idempotent version of createRegl. Create regl instances\n * in the correct canvases with the correct attributes and\n * options\n *\n * @param {DOM node or object} gd : graph div object\n * @param {array} extensions : list of extension to pass to createRegl\n *\n * @return {boolean} true if all createRegl calls succeeded, false otherwise\n */\nmodule.exports = function prepareRegl(gd, extensions, reglPrecompiled) {\n  var fullLayout = gd._fullLayout;\n  var success = true;\n  fullLayout._glcanvas.each(function (d) {\n    if (d.regl) {\n      d.regl.preloadCachedCode(reglPrecompiled);\n      return;\n    }\n    // only parcoords needs pick layer\n    if (d.pick && !fullLayout._has('parcoords')) return;\n    try {\n      d.regl = createRegl({\n        canvas: this,\n        attributes: {\n          antialias: !d.pick,\n          preserveDrawingBuffer: true\n        },\n        pixelRatio: gd._context.plotGlPixelRatio || __nested_webpack_require_899373__.g.devicePixelRatio,\n        extensions: extensions || [],\n        cachedCode: reglPrecompiled || {}\n      });\n    } catch (e) {\n      success = false;\n    }\n    if (!d.regl) success = false;\n    if (success) {\n      this.addEventListener('webglcontextlost', function (event) {\n        if (gd && gd.emit) {\n          gd.emit('plotly_webglcontextlost', {\n            event: event,\n            layer: d.key\n          });\n        }\n      }, false);\n    }\n  });\n  if (!success) {\n    showNoWebGlMsg({\n      container: fullLayout._glcontainer.node()\n    });\n  }\n  return success;\n};\n\n/***/ }),\n\n/***/ 45142:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_901272__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_901272__(92770);\nvar isMobileOrTablet = __nested_webpack_require_901272__(35791);\nmodule.exports = function preserveDrawingBuffer(opts) {\n  var ua;\n  if (opts && opts.hasOwnProperty('userAgent')) {\n    ua = opts.userAgent;\n  } else {\n    ua = getUserAgent();\n  }\n  if (typeof ua !== 'string') return true;\n  var enable = isMobileOrTablet({\n    ua: {\n      headers: {\n        'user-agent': ua\n      }\n    },\n    tablet: true,\n    featureDetect: false\n  });\n  if (!enable) {\n    var allParts = ua.split(' ');\n    for (var i = 1; i < allParts.length; i++) {\n      var part = allParts[i];\n      if (part.indexOf('Safari') !== -1) {\n        // find Safari version\n        for (var k = i - 1; k > -1; k--) {\n          var prevPart = allParts[k];\n          if (prevPart.substr(0, 8) === 'Version/') {\n            var v = prevPart.substr(8).split('.')[0];\n            if (isNumeric(v)) v = +v;\n            if (v >= 13) return true;\n          }\n        }\n      }\n    }\n  }\n  return enable;\n};\nfunction getUserAgent() {\n  // similar to https://github.com/juliangruber/is-mobile/blob/91ca39ccdd4cfc5edfb5391e2515b923a730fbea/index.js#L14-L17\n  var ua;\n  if (typeof navigator !== 'undefined') {\n    ua = navigator.userAgent;\n  }\n  if (ua && ua.headers && typeof ua.headers['user-agent'] === 'string') {\n    ua = ua.headers['user-agent'];\n  }\n  return ua;\n}\n\n/***/ }),\n\n/***/ 75138:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/**\n * Push array with unique items\n *\n * Ignores falsy items, except 0 so we can use it to construct arrays of indices.\n *\n * @param {array} array\n *  array to be filled\n * @param {any} item\n *  item to be or not to be inserted\n * @return {array}\n *  ref to array (now possibly containing one more item)\n *\n */\nmodule.exports = function pushUnique(array, item) {\n  if (item instanceof RegExp) {\n    var itemStr = item.toString();\n    for (var i = 0; i < array.length; i++) {\n      if (array[i] instanceof RegExp && array[i].toString() === itemStr) {\n        return array;\n      }\n    }\n    array.push(item);\n  } else if ((item || item === 0) && array.indexOf(item) === -1) array.push(item);\n  return array;\n};\n\n/***/ }),\n\n/***/ 10847:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_903524__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_903524__(71828);\nvar dfltConfig = (__nested_webpack_require_903524__(72075).dfltConfig);\n\n/**\n * Copy arg array *without* removing `undefined` values from objects.\n *\n * @param gd\n * @param args\n * @returns {Array}\n */\nfunction copyArgArray(gd, args) {\n  var copy = [];\n  var arg;\n  for (var i = 0; i < args.length; i++) {\n    arg = args[i];\n    if (arg === gd) copy[i] = arg;else if (typeof arg === 'object') {\n      copy[i] = Array.isArray(arg) ? Lib.extendDeep([], arg) : Lib.extendDeepAll({}, arg);\n    } else copy[i] = arg;\n  }\n  return copy;\n}\n\n// -----------------------------------------------------\n// Undo/Redo queue for plots\n// -----------------------------------------------------\n\nvar queue = {};\n\n// TODO: disable/enable undo and redo buttons appropriately\n\n/**\n * Add an item to the undoQueue for a graphDiv\n *\n * @param gd\n * @param undoFunc Function undo this operation\n * @param undoArgs Args to supply undoFunc with\n * @param redoFunc Function to redo this operation\n * @param redoArgs Args to supply redoFunc with\n */\nqueue.add = function (gd, undoFunc, undoArgs, redoFunc, redoArgs) {\n  var queueObj, queueIndex;\n\n  // make sure we have the queue and our position in it\n  gd.undoQueue = gd.undoQueue || {\n    index: 0,\n    queue: [],\n    sequence: false\n  };\n  queueIndex = gd.undoQueue.index;\n\n  // if we're already playing an undo or redo, or if this is an auto operation\n  // (like pane resize... any others?) then we don't save this to the undo queue\n  if (gd.autoplay) {\n    if (!gd.undoQueue.inSequence) gd.autoplay = false;\n    return;\n  }\n\n  // if we're not in a sequence or are just starting, we need a new queue item\n  if (!gd.undoQueue.sequence || gd.undoQueue.beginSequence) {\n    queueObj = {\n      undo: {\n        calls: [],\n        args: []\n      },\n      redo: {\n        calls: [],\n        args: []\n      }\n    };\n    gd.undoQueue.queue.splice(queueIndex, gd.undoQueue.queue.length - queueIndex, queueObj);\n    gd.undoQueue.index += 1;\n  } else {\n    queueObj = gd.undoQueue.queue[queueIndex - 1];\n  }\n  gd.undoQueue.beginSequence = false;\n\n  // we unshift to handle calls for undo in a forward for loop later\n  if (queueObj) {\n    queueObj.undo.calls.unshift(undoFunc);\n    queueObj.undo.args.unshift(undoArgs);\n    queueObj.redo.calls.push(redoFunc);\n    queueObj.redo.args.push(redoArgs);\n  }\n  if (gd.undoQueue.queue.length > dfltConfig.queueLength) {\n    gd.undoQueue.queue.shift();\n    gd.undoQueue.index--;\n  }\n};\n\n/**\n * Begin a sequence of undoQueue changes\n *\n * @param gd\n */\nqueue.startSequence = function (gd) {\n  gd.undoQueue = gd.undoQueue || {\n    index: 0,\n    queue: [],\n    sequence: false\n  };\n  gd.undoQueue.sequence = true;\n  gd.undoQueue.beginSequence = true;\n};\n\n/**\n * Stop a sequence of undoQueue changes\n *\n * Call this *after* you're sure your undo chain has ended\n *\n * @param gd\n */\nqueue.stopSequence = function (gd) {\n  gd.undoQueue = gd.undoQueue || {\n    index: 0,\n    queue: [],\n    sequence: false\n  };\n  gd.undoQueue.sequence = false;\n  gd.undoQueue.beginSequence = false;\n};\n\n/**\n * Move one step back in the undo queue, and undo the object there.\n *\n * @param gd\n */\nqueue.undo = function undo(gd) {\n  var queueObj, i;\n  if (gd.undoQueue === undefined || isNaN(gd.undoQueue.index) || gd.undoQueue.index <= 0) {\n    return;\n  }\n\n  // index is pointing to next *forward* queueObj, point to the one we're undoing\n  gd.undoQueue.index--;\n\n  // get the queueObj for instructions on how to undo\n  queueObj = gd.undoQueue.queue[gd.undoQueue.index];\n\n  // this sequence keeps things from adding to the queue during undo/redo\n  gd.undoQueue.inSequence = true;\n  for (i = 0; i < queueObj.undo.calls.length; i++) {\n    queue.plotDo(gd, queueObj.undo.calls[i], queueObj.undo.args[i]);\n  }\n  gd.undoQueue.inSequence = false;\n  gd.autoplay = false;\n};\n\n/**\n * Redo the current object in the undo, then move forward in the queue.\n *\n * @param gd\n */\nqueue.redo = function redo(gd) {\n  var queueObj, i;\n  if (gd.undoQueue === undefined || isNaN(gd.undoQueue.index) || gd.undoQueue.index >= gd.undoQueue.queue.length) {\n    return;\n  }\n\n  // get the queueObj for instructions on how to undo\n  queueObj = gd.undoQueue.queue[gd.undoQueue.index];\n\n  // this sequence keeps things from adding to the queue during undo/redo\n  gd.undoQueue.inSequence = true;\n  for (i = 0; i < queueObj.redo.calls.length; i++) {\n    queue.plotDo(gd, queueObj.redo.calls[i], queueObj.redo.args[i]);\n  }\n  gd.undoQueue.inSequence = false;\n  gd.autoplay = false;\n\n  // index is pointing to the thing we just redid, move it\n  gd.undoQueue.index++;\n};\n\n/**\n * Called by undo/redo to make the actual changes.\n *\n * Not meant to be called publically, but included for mocking out in tests.\n *\n * @param gd\n * @param func\n * @param args\n */\nqueue.plotDo = function (gd, func, args) {\n  gd.autoplay = true;\n\n  // this *won't* copy gd and it preserves `undefined` properties!\n  args = copyArgArray(gd, args);\n\n  // call the supplied function\n  func.apply(null, args);\n};\nmodule.exports = queue;\n\n/***/ }),\n\n/***/ 30587:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\n/*\n * make a regex for matching counter ids/names ie xaxis, xaxis2, xaxis10...\n *\n * @param {string} head: the head of the pattern, eg 'x' matches 'x', 'x2', 'x10' etc.\n *      'xy' is a special case for cartesian subplots: it matches 'x2y3' etc\n * @param {Optional(string)} tail: a fixed piece after the id\n *      eg counterRegex('scene', '.annotations') for scene2.annotations etc.\n * @param {boolean} openEnded: if true, the string may continue past the match.\n * @param {boolean} matchBeginning: if false, the string may start before the match.\n */\nexports.counter = function (head, tail, openEnded, matchBeginning) {\n  var fullTail = (tail || '') + (openEnded ? '' : '$');\n  var startWithPrefix = matchBeginning === false ? '' : '^';\n  if (head === 'xy') {\n    return new RegExp(startWithPrefix + 'x([2-9]|[1-9][0-9]+)?y([2-9]|[1-9][0-9]+)?' + fullTail);\n  }\n  return new RegExp(startWithPrefix + head + '([2-9]|[1-9][0-9]+)?' + fullTail);\n};\n\n/***/ }),\n\n/***/ 6962:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// ASCEND: chop off the last nesting level - either [<n>] or .<key> - to ascend\n// the attribute tree. the remaining attrString is in match[1]\nvar ASCEND = /^(.*)(\\.[^\\.\\[\\]]+|\\[\\d\\])$/;\n\n// SIMPLEATTR: is this an un-nested attribute? (no dots or brackets)\nvar SIMPLEATTR = /^[^\\.\\[\\]]+$/;\n\n/*\n * calculate a relative attribute string, similar to a relative path\n *\n * @param {string} baseAttr:\n *   an attribute string, such as 'annotations[3].x'. The \"current location\"\n *   is the attribute string minus the last component ('annotations[3]')\n * @param {string} relativeAttr:\n *   a route to the desired attribute string, using '^' to ascend\n *\n * @return {string} attrString:\n *   for example:\n *     relativeAttr('annotations[3].x', 'y') = 'annotations[3].y'\n *     relativeAttr('annotations[3].x', '^[2].z') = 'annotations[2].z'\n *     relativeAttr('annotations[3].x', '^^margin') = 'margin'\n *     relativeAttr('annotations[3].x', '^^margin.r') = 'margin.r'\n */\nmodule.exports = function (baseAttr, relativeAttr) {\n  while (relativeAttr) {\n    var match = baseAttr.match(ASCEND);\n    if (match) baseAttr = match[1];else if (baseAttr.match(SIMPLEATTR)) baseAttr = '';else throw new Error('bad relativeAttr call:' + [baseAttr, relativeAttr]);\n    if (relativeAttr.charAt(0) === '^') relativeAttr = relativeAttr.slice(1);else break;\n  }\n  if (baseAttr && relativeAttr.charAt(0) !== '[') {\n    return baseAttr + '.' + relativeAttr;\n  }\n  return baseAttr + relativeAttr;\n};\n\n/***/ }),\n\n/***/ 51332:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_911253__) {\n\n\"use strict\";\n\n\nvar isArrayOrTypedArray = (__nested_webpack_require_911253__(73627).isArrayOrTypedArray);\nvar isPlainObject = __nested_webpack_require_911253__(41965);\n\n/**\n * Relink private _keys and keys with a function value from one container\n * to the new container.\n * Relink means copying if object is pass-by-value and adding a reference\n * if object is pass-by-ref.\n * This prevents deepCopying massive structures like a webgl context.\n */\nmodule.exports = function relinkPrivateKeys(toContainer, fromContainer) {\n  for (var k in fromContainer) {\n    var fromVal = fromContainer[k];\n    var toVal = toContainer[k];\n    if (toVal === fromVal) continue;\n    if (k.charAt(0) === '_' || typeof fromVal === 'function') {\n      // if it already exists at this point, it's something\n      // that we recreate each time around, so ignore it\n      if (k in toContainer) continue;\n      toContainer[k] = fromVal;\n    } else if (isArrayOrTypedArray(fromVal) && isArrayOrTypedArray(toVal) && isPlainObject(fromVal[0])) {\n      // filter out data_array items that can contain user objects\n      // most of the time the toVal === fromVal check will catch these early\n      // but if the user makes new ones we also don't want to recurse in.\n      if (k === 'customdata' || k === 'ids') continue;\n\n      // recurse into arrays containers\n      var minLen = Math.min(fromVal.length, toVal.length);\n      for (var j = 0; j < minLen; j++) {\n        if (toVal[j] !== fromVal[j] && isPlainObject(fromVal[j]) && isPlainObject(toVal[j])) {\n          relinkPrivateKeys(toVal[j], fromVal[j]);\n        }\n      }\n    } else if (isPlainObject(fromVal) && isPlainObject(toVal)) {\n      // recurse into objects, but only if they still exist\n      relinkPrivateKeys(toVal, fromVal);\n      if (!Object.keys(toVal).length) delete toContainer[k];\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 65888:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_913160__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_913160__(92770);\nvar loggers = __nested_webpack_require_913160__(47769);\nvar identity = __nested_webpack_require_913160__(23389);\nvar BADNUM = (__nested_webpack_require_913160__(50606).BADNUM);\n\n// don't trust floating point equality - fraction of bin size to call\n// \"on the line\" and ensure that they go the right way specified by\n// linelow\nvar roundingError = 1e-9;\n\n/**\n * findBin - find the bin for val - note that it can return outside the\n * bin range any pos. or neg. integer for linear bins, or -1 or\n * bins.length-1 for explicit.\n * bins is either an object {start,size,end} or an array length #bins+1\n * bins can be either increasing or decreasing but must be monotonic\n * for linear bins, we can just calculate. For listed bins, run a binary\n * search linelow (truthy) says the bin boundary should be attributed to\n * the lower bin rather than the default upper bin\n */\nexports.findBin = function (val, bins, linelow) {\n  if (isNumeric(bins.start)) {\n    return linelow ? Math.ceil((val - bins.start) / bins.size - roundingError) - 1 : Math.floor((val - bins.start) / bins.size + roundingError);\n  } else {\n    var n1 = 0;\n    var n2 = bins.length;\n    var c = 0;\n    var binSize = n2 > 1 ? (bins[n2 - 1] - bins[0]) / (n2 - 1) : 1;\n    var n, test;\n    if (binSize >= 0) {\n      test = linelow ? lessThan : lessOrEqual;\n    } else {\n      test = linelow ? greaterOrEqual : greaterThan;\n    }\n    val += binSize * roundingError * (linelow ? -1 : 1) * (binSize >= 0 ? 1 : -1);\n    // c is just to avoid infinite loops if there's an error\n    while (n1 < n2 && c++ < 100) {\n      n = Math.floor((n1 + n2) / 2);\n      if (test(bins[n], val)) n1 = n + 1;else n2 = n;\n    }\n    if (c > 90) loggers.log('Long binary search...');\n    return n1 - 1;\n  }\n};\nfunction lessThan(a, b) {\n  return a < b;\n}\nfunction lessOrEqual(a, b) {\n  return a <= b;\n}\nfunction greaterThan(a, b) {\n  return a > b;\n}\nfunction greaterOrEqual(a, b) {\n  return a >= b;\n}\nexports.sorterAsc = function (a, b) {\n  return a - b;\n};\nexports.sorterDes = function (a, b) {\n  return b - a;\n};\n\n/**\n * find distinct values in an array, lumping together ones that appear to\n * just be off by a rounding error\n * return the distinct values and the minimum difference between any two\n */\nexports.distinctVals = function (valsIn) {\n  var vals = valsIn.slice(); // otherwise we sort the original array...\n  vals.sort(exports.sorterAsc); // undefined listed in the end - also works on IE11\n\n  var last;\n  for (last = vals.length - 1; last > -1; last--) {\n    if (vals[last] !== BADNUM) break;\n  }\n  var minDiff = vals[last] - vals[0] || 1;\n  var errDiff = minDiff / (last || 1) / 10000;\n  var newVals = [];\n  var preV;\n  for (var i = 0; i <= last; i++) {\n    var v = vals[i];\n\n    // make sure values aren't just off by a rounding error\n    var diff = v - preV;\n    if (preV === undefined) {\n      newVals.push(v);\n      preV = v;\n    } else if (diff > errDiff) {\n      minDiff = Math.min(minDiff, diff);\n      newVals.push(v);\n      preV = v;\n    }\n  }\n  return {\n    vals: newVals,\n    minDiff: minDiff\n  };\n};\n\n/**\n * return the smallest element from (sorted) array arrayIn that's bigger than val,\n * or (reverse) the largest element smaller than val\n * used to find the best tick given the minimum (non-rounded) tick\n * particularly useful for date/time where things are not powers of 10\n * binary search is probably overkill here...\n */\nexports.roundUp = function (val, arrayIn, reverse) {\n  var low = 0;\n  var high = arrayIn.length - 1;\n  var mid;\n  var c = 0;\n  var dlow = reverse ? 0 : 1;\n  var dhigh = reverse ? 1 : 0;\n  var rounded = reverse ? Math.ceil : Math.floor;\n  // c is just to avoid infinite loops if there's an error\n  while (low < high && c++ < 100) {\n    mid = rounded((low + high) / 2);\n    if (arrayIn[mid] <= val) low = mid + dlow;else high = mid - dhigh;\n  }\n  return arrayIn[low];\n};\n\n/**\n * Tweak to Array.sort(sortFn) that improves performance for pre-sorted arrays\n *\n * Note that newer browsers (such as Chrome v70+) are starting to pick up\n * on pre-sorted arrays which may render the following optimization unnecessary\n * in the future.\n *\n * Motivation: sometimes we need to sort arrays but the input is likely to\n * already be sorted. Browsers don't seem to pick up on pre-sorted arrays,\n * and in fact Chrome is actually *slower* sorting pre-sorted arrays than purely\n * random arrays. FF is at least faster if the array is pre-sorted, but still\n * not as fast as it could be.\n * Here's how this plays out sorting a length-1e6 array:\n *\n * Calls to Sort FN  |  Chrome bare  |  FF bare  |  Chrome tweak  |  FF tweak\n *                   |  v68.0 Mac    |  v61.0 Mac|                |\n * ------------------+---------------+-----------+----------------+------------\n * ordered           |  30.4e6       |  10.1e6   |  1e6           |  1e6\n * reversed          |  29.4e6       |  9.9e6    |  1e6 + reverse |  1e6 + reverse\n * random            |  ~21e6        |  ~18.7e6  |  ~21e6         |  ~18.7e6\n *\n * So this is a substantial win for pre-sorted (ordered or exactly reversed)\n * arrays. Including this wrapper on an unsorted array adds a penalty that will\n * in general be only a few calls to the sort function. The only case this\n * penalty will be significant is if the array is mostly sorted but there are\n * a few unsorted items near the end, but the penalty is still at most N calls\n * out of (for N=1e6) ~20N total calls\n *\n * @param {Array} array: the array, to be sorted in place\n * @param {function} sortFn: As in Array.sort, function(a, b) that puts\n *     item a before item b if the return is negative, a after b if positive,\n *     and no change if zero.\n * @return {Array}: the original array, sorted in place.\n */\nexports.sort = function (array, sortFn) {\n  var notOrdered = 0;\n  var notReversed = 0;\n  for (var i = 1; i < array.length; i++) {\n    var pairOrder = sortFn(array[i], array[i - 1]);\n    if (pairOrder < 0) notOrdered = 1;else if (pairOrder > 0) notReversed = 1;\n    if (notOrdered && notReversed) return array.sort(sortFn);\n  }\n  return notReversed ? array : array.reverse();\n};\n\n/**\n * find index in array 'arr' that minimizes 'fn'\n *\n * @param {array} arr : array where to search\n * @param {fn (optional)} fn : function to minimize,\n *   if not given, fn is the identity function\n * @return {integer}\n */\nexports.findIndexOfMin = function (arr, fn) {\n  fn = fn || identity;\n  var min = Infinity;\n  var ind;\n  for (var i = 0; i < arr.length; i++) {\n    var v = fn(arr[i]);\n    if (v < min) {\n      min = v;\n      ind = i;\n    }\n  }\n  return ind;\n};\n\n/***/ }),\n\n/***/ 6964:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// works with our CSS cursor classes (see css/_cursor.scss)\n// to apply cursors to d3 single-element selections.\n// omit cursor to revert to the default.\nmodule.exports = function setCursor(el3, csr) {\n  (el3.attr('class') || '').split(' ').forEach(function (cls) {\n    if (cls.indexOf('cursor-') === 0) el3.classed(cls, false);\n  });\n  if (csr) el3.classed('cursor-' + csr, true);\n};\n\n/***/ }),\n\n/***/ 58617:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_920292__) {\n\n\"use strict\";\n\n\nvar Color = __nested_webpack_require_920292__(7901);\nvar noop = function () {};\n\n/**\n * Prints a no webgl error message into the scene container\n * @param {scene instance} scene\n *\n * Expects 'scene' to have property 'container'\n *\n */\nmodule.exports = function showNoWebGlMsg(scene) {\n  for (var prop in scene) {\n    if (typeof scene[prop] === 'function') scene[prop] = noop;\n  }\n  scene.destroy = function () {\n    scene.container.parentNode.removeChild(scene.container);\n  };\n  var div = document.createElement('div');\n  div.className = 'no-webgl';\n  div.style.cursor = 'pointer';\n  div.style.fontSize = '24px';\n  div.style.color = Color.defaults[0];\n  div.style.position = 'absolute';\n  div.style.left = div.style.top = '0px';\n  div.style.width = div.style.height = '100%';\n  div.style['background-color'] = Color.lightLine;\n  div.style['z-index'] = 30;\n  var p = document.createElement('p');\n  p.textContent = 'WebGL is not supported by your browser - visit https://get.webgl.org for more info';\n  p.style.position = 'relative';\n  p.style.top = '50%';\n  p.style.left = '50%';\n  p.style.height = '30%';\n  p.style.width = '50%';\n  p.style.margin = '-15% 0 0 -25%';\n  div.appendChild(p);\n  scene.container.appendChild(div);\n  scene.container.style.background = '#FFFFFF';\n  scene.container.onclick = function () {\n    window.open('https://get.webgl.org');\n  };\n\n  // return before setting up camera and onrender methods\n  return false;\n};\n\n/***/ }),\n\n/***/ 78607:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function sortObjectKeys(obj) {\n  return Object.keys(obj).sort();\n};\n\n/***/ }),\n\n/***/ 80038:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_921987__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_921987__(92770);\nvar isArrayOrTypedArray = (__nested_webpack_require_921987__(73627).isArrayOrTypedArray);\n\n/**\n * aggNums() returns the result of an aggregate function applied to an array of\n * values, where non-numerical values have been tossed out.\n *\n * @param {function} f - aggregation function (e.g., Math.min)\n * @param {Number} v - initial value (continuing from previous calls)\n *      if there's no continuing value, use null for selector-type\n *      functions (max,min), or 0 for summations\n * @param {Array} a - array to aggregate (may be nested, we will recurse,\n *                    but all elements must have the same dimension)\n * @param {Number} len - maximum length of a to aggregate\n * @return {Number} - result of f applied to a starting from v\n */\nexports.aggNums = function (f, v, a, len) {\n  var i, b;\n  if (!len || len > a.length) len = a.length;\n  if (!isNumeric(v)) v = false;\n  if (isArrayOrTypedArray(a[0])) {\n    b = new Array(len);\n    for (i = 0; i < len; i++) b[i] = exports.aggNums(f, v, a[i]);\n    a = b;\n  }\n  for (i = 0; i < len; i++) {\n    if (!isNumeric(v)) v = a[i];else if (isNumeric(a[i])) v = f(+v, +a[i]);\n  }\n  return v;\n};\n\n/**\n * mean & std dev functions using aggNums, so it handles non-numerics nicely\n * even need to use aggNums instead of .length, to toss out non-numerics\n */\nexports.len = function (data) {\n  return exports.aggNums(function (a) {\n    return a + 1;\n  }, 0, data);\n};\nexports.mean = function (data, len) {\n  if (!len) len = exports.len(data);\n  return exports.aggNums(function (a, b) {\n    return a + b;\n  }, 0, data) / len;\n};\nexports.midRange = function (numArr) {\n  if (numArr === undefined || numArr.length === 0) return undefined;\n  return (exports.aggNums(Math.max, null, numArr) + exports.aggNums(Math.min, null, numArr)) / 2;\n};\nexports.variance = function (data, len, mean) {\n  if (!len) len = exports.len(data);\n  if (!isNumeric(mean)) mean = exports.mean(data, len);\n  return exports.aggNums(function (a, b) {\n    return a + Math.pow(b - mean, 2);\n  }, 0, data) / len;\n};\nexports.stdev = function (data, len, mean) {\n  return Math.sqrt(exports.variance(data, len, mean));\n};\n\n/**\n * median of a finite set of numbers\n * reference page: https://en.wikipedia.org/wiki/Median#Finite_set_of_numbers\n**/\nexports.median = function (data) {\n  var b = data.slice().sort();\n  return exports.interp(b, 0.5);\n};\n\n/**\n * interp() computes a percentile (quantile) for a given distribution.\n * We interpolate the distribution (to compute quantiles, we follow method #10 here:\n * http://jse.amstat.org/v14n3/langford.html).\n * Typically the index or rank (n * arr.length) may be non-integer.\n * For reference: ends are clipped to the extreme values in the array;\n * For box plots: index you get is half a point too high (see\n * http://en.wikipedia.org/wiki/Percentile#Nearest_rank) but note that this definition\n * indexes from 1 rather than 0, so we subtract 1/2 (instead of add).\n *\n * @param {Array} arr - This array contains the values that make up the distribution.\n * @param {Number} n - Between 0 and 1, n = p/100 is such that we compute the p^th percentile.\n * For example, the 50th percentile (or median) corresponds to n = 0.5\n * @return {Number} - percentile\n */\nexports.interp = function (arr, n) {\n  if (!isNumeric(n)) throw 'n should be a finite number';\n  n = n * arr.length - 0.5;\n  if (n < 0) return arr[0];\n  if (n > arr.length - 1) return arr[arr.length - 1];\n  var frac = n % 1;\n  return frac * arr[Math.ceil(n)] + (1 - frac) * arr[Math.floor(n)];\n};\n\n/***/ }),\n\n/***/ 78614:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_925652__) {\n\n\"use strict\";\n\n\nvar rgba = __nested_webpack_require_925652__(25075);\nfunction str2RgbaArray(color) {\n  if (!color) return [0, 0, 0, 1];\n  return rgba(color);\n}\nmodule.exports = str2RgbaArray;\n\n/***/ }),\n\n/***/ 63893:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_925929__) {\n\n\"use strict\";\n\n\n/* global MathJax:false */\nvar d3 = __nested_webpack_require_925929__(39898);\nvar Lib = __nested_webpack_require_925929__(71828);\nvar strTranslate = Lib.strTranslate;\nvar xmlnsNamespaces = __nested_webpack_require_925929__(77922);\nvar LINE_SPACING = (__nested_webpack_require_925929__(18783).LINE_SPACING);\n\n// text converter\n\nvar FIND_TEX = /([^$]*)([$]+[^$]*[$]+)([^$]*)/;\nexports.convertToTspans = function (_context, gd, _callback) {\n  var str = _context.text();\n\n  // Until we get tex integrated more fully (so it can be used along with non-tex)\n  // allow some elements to prohibit it by attaching 'data-notex' to the original\n  var tex = !_context.attr('data-notex') && gd && gd._context.typesetMath && typeof MathJax !== 'undefined' && str.match(FIND_TEX);\n  var parent = d3.select(_context.node().parentNode);\n  if (parent.empty()) return;\n  var svgClass = _context.attr('class') ? _context.attr('class').split(' ')[0] : 'text';\n  svgClass += '-math';\n  parent.selectAll('svg.' + svgClass).remove();\n  parent.selectAll('g.' + svgClass + '-group').remove();\n  _context.style('display', null).attr({\n    // some callers use data-unformatted *from the <text> element* in 'cancel'\n    // so we need it here even if we're going to turn it into math\n    // these two (plus style and text-anchor attributes) form the key we're\n    // going to use for Drawing.bBox\n    'data-unformatted': str,\n    'data-math': 'N'\n  });\n  function showText() {\n    if (!parent.empty()) {\n      svgClass = _context.attr('class') + '-math';\n      parent.select('svg.' + svgClass).remove();\n    }\n    _context.text('').style('white-space', 'pre');\n    var hasLink = buildSVGText(_context.node(), str);\n    if (hasLink) {\n      // at least in Chrome, pointer-events does not seem\n      // to be honored in children of <text> elements\n      // so if we have an anchor, we have to make the\n      // whole element respond\n      _context.style('pointer-events', 'all');\n    }\n    exports.positionText(_context);\n    if (_callback) _callback.call(_context);\n  }\n  if (tex) {\n    (gd && gd._promises || []).push(new Promise(function (resolve) {\n      _context.style('display', 'none');\n      var fontSize = parseInt(_context.node().style.fontSize, 10);\n      var config = {\n        fontSize: fontSize\n      };\n      texToSVG(tex[2], config, function (_svgEl, _glyphDefs, _svgBBox) {\n        parent.selectAll('svg.' + svgClass).remove();\n        parent.selectAll('g.' + svgClass + '-group').remove();\n        var newSvg = _svgEl && _svgEl.select('svg');\n        if (!newSvg || !newSvg.node()) {\n          showText();\n          resolve();\n          return;\n        }\n        var mathjaxGroup = parent.append('g').classed(svgClass + '-group', true).attr({\n          'pointer-events': 'none',\n          'data-unformatted': str,\n          'data-math': 'Y'\n        });\n        mathjaxGroup.node().appendChild(newSvg.node());\n\n        // stitch the glyph defs\n        if (_glyphDefs && _glyphDefs.node()) {\n          newSvg.node().insertBefore(_glyphDefs.node().cloneNode(true), newSvg.node().firstChild);\n        }\n        var w0 = _svgBBox.width;\n        var h0 = _svgBBox.height;\n        newSvg.attr({\n          'class': svgClass,\n          height: h0,\n          preserveAspectRatio: 'xMinYMin meet'\n        }).style({\n          overflow: 'visible',\n          'pointer-events': 'none'\n        });\n        var fill = _context.node().style.fill || 'black';\n        var g = newSvg.select('g');\n        g.attr({\n          fill: fill,\n          stroke: fill\n        });\n        var bb = g.node().getBoundingClientRect();\n        var w = bb.width;\n        var h = bb.height;\n        if (w > w0 || h > h0) {\n          // this happen in firefox v82+ | see https://bugzilla.mozilla.org/show_bug.cgi?id=1709251 addressed\n          // temporary fix:\n          newSvg.style('overflow', 'hidden');\n          bb = newSvg.node().getBoundingClientRect();\n          w = bb.width;\n          h = bb.height;\n        }\n        var x = +_context.attr('x');\n        var y = +_context.attr('y');\n\n        // font baseline is about 1/4 fontSize below centerline\n        var textHeight = fontSize || _context.node().getBoundingClientRect().height;\n        var dy = -textHeight / 4;\n        if (svgClass[0] === 'y') {\n          mathjaxGroup.attr({\n            transform: 'rotate(' + [-90, x, y] + ')' + strTranslate(-w / 2, dy - h / 2)\n          });\n        } else if (svgClass[0] === 'l') {\n          y = dy - h / 2;\n        } else if (svgClass[0] === 'a' && svgClass.indexOf('atitle') !== 0) {\n          x = 0;\n          y = dy;\n        } else {\n          var anchor = _context.attr('text-anchor');\n          x = x - w * (anchor === 'middle' ? 0.5 : anchor === 'end' ? 1 : 0);\n          y = y + dy - h / 2;\n        }\n        newSvg.attr({\n          x: x,\n          y: y\n        });\n        if (_callback) _callback.call(_context, mathjaxGroup);\n        resolve(mathjaxGroup);\n      });\n    }));\n  } else showText();\n  return _context;\n};\n\n// MathJax\n\nvar LT_MATCH = /(<|&lt;|&#60;)/g;\nvar GT_MATCH = /(>|&gt;|&#62;)/g;\nfunction cleanEscapesForTex(s) {\n  return s.replace(LT_MATCH, '\\\\lt ').replace(GT_MATCH, '\\\\gt ');\n}\nvar inlineMath = [['$', '$'], ['\\\\(', '\\\\)']];\nfunction texToSVG(_texString, _config, _callback) {\n  var MathJaxVersion = parseInt((MathJax.version || '').split('.')[0]);\n  if (MathJaxVersion !== 2 && MathJaxVersion !== 3) {\n    Lib.warn('No MathJax version:', MathJax.version);\n    return;\n  }\n  var originalRenderer, originalConfig, originalProcessSectionDelay, tmpDiv;\n  var setConfig2 = function () {\n    originalConfig = Lib.extendDeepAll({}, MathJax.Hub.config);\n    originalProcessSectionDelay = MathJax.Hub.processSectionDelay;\n    if (MathJax.Hub.processSectionDelay !== undefined) {\n      // MathJax 2.5+ but not 3+\n      MathJax.Hub.processSectionDelay = 0;\n    }\n    return MathJax.Hub.Config({\n      messageStyle: 'none',\n      tex2jax: {\n        inlineMath: inlineMath\n      },\n      displayAlign: 'left'\n    });\n  };\n  var setConfig3 = function () {\n    originalConfig = Lib.extendDeepAll({}, MathJax.config);\n    if (!MathJax.config.tex) {\n      MathJax.config.tex = {};\n    }\n    MathJax.config.tex.inlineMath = inlineMath;\n  };\n  var setRenderer2 = function () {\n    originalRenderer = MathJax.Hub.config.menuSettings.renderer;\n    if (originalRenderer !== 'SVG') {\n      return MathJax.Hub.setRenderer('SVG');\n    }\n  };\n  var setRenderer3 = function () {\n    originalRenderer = MathJax.config.startup.output;\n    if (originalRenderer !== 'svg') {\n      MathJax.config.startup.output = 'svg';\n    }\n  };\n  var initiateMathJax = function () {\n    var randomID = 'math-output-' + Lib.randstr({}, 64);\n    tmpDiv = d3.select('body').append('div').attr({\n      id: randomID\n    }).style({\n      visibility: 'hidden',\n      position: 'absolute',\n      'font-size': _config.fontSize + 'px'\n    }).text(cleanEscapesForTex(_texString));\n    var tmpNode = tmpDiv.node();\n    return MathJaxVersion === 2 ? MathJax.Hub.Typeset(tmpNode) : MathJax.typeset([tmpNode]);\n  };\n  var finalizeMathJax = function () {\n    var sel = tmpDiv.select(MathJaxVersion === 2 ? '.MathJax_SVG' : '.MathJax');\n    var node = !sel.empty() && tmpDiv.select('svg').node();\n    if (!node) {\n      Lib.log('There was an error in the tex syntax.', _texString);\n      _callback();\n    } else {\n      var nodeBBox = node.getBoundingClientRect();\n      var glyphDefs;\n      if (MathJaxVersion === 2) {\n        glyphDefs = d3.select('body').select('#MathJax_SVG_glyphs');\n      } else {\n        glyphDefs = sel.select('defs');\n      }\n      _callback(sel, glyphDefs, nodeBBox);\n    }\n    tmpDiv.remove();\n  };\n  var resetRenderer2 = function () {\n    if (originalRenderer !== 'SVG') {\n      return MathJax.Hub.setRenderer(originalRenderer);\n    }\n  };\n  var resetRenderer3 = function () {\n    if (originalRenderer !== 'svg') {\n      MathJax.config.startup.output = originalRenderer;\n    }\n  };\n  var resetConfig2 = function () {\n    if (originalProcessSectionDelay !== undefined) {\n      MathJax.Hub.processSectionDelay = originalProcessSectionDelay;\n    }\n    return MathJax.Hub.Config(originalConfig);\n  };\n  var resetConfig3 = function () {\n    MathJax.config = originalConfig;\n  };\n  if (MathJaxVersion === 2) {\n    MathJax.Hub.Queue(setConfig2, setRenderer2, initiateMathJax, finalizeMathJax, resetRenderer2, resetConfig2);\n  } else if (MathJaxVersion === 3) {\n    setConfig3();\n    setRenderer3();\n    MathJax.startup.defaultReady();\n    MathJax.startup.promise.then(function () {\n      initiateMathJax();\n      finalizeMathJax();\n      resetRenderer3();\n      resetConfig3();\n    });\n  }\n}\nvar TAG_STYLES = {\n  // would like to use baseline-shift for sub/sup but FF doesn't support it\n  // so we need to use dy along with the uber hacky shift-back-to\n  // baseline below\n  sup: 'font-size:70%',\n  sub: 'font-size:70%',\n  b: 'font-weight:bold',\n  i: 'font-style:italic',\n  a: 'cursor:pointer',\n  span: '',\n  em: 'font-style:italic;font-weight:bold'\n};\n\n// baseline shifts for sub and sup\nvar SHIFT_DY = {\n  sub: '0.3em',\n  sup: '-0.6em'\n};\n// reset baseline by adding a tspan (empty except for a zero-width space)\n// with dy of -70% * SHIFT_DY (because font-size=70%)\nvar RESET_DY = {\n  sub: '-0.21em',\n  sup: '0.42em'\n};\nvar ZERO_WIDTH_SPACE = '\\u200b';\n\n/*\n * Whitelist of protocols in user-supplied urls. Mostly we want to avoid javascript\n * and related attack vectors. The empty items are there for IE, that in various\n * versions treats relative paths as having different flavors of no protocol, while\n * other browsers have these explicitly inherit the protocol of the page they're in.\n */\nvar PROTOCOLS = ['http:', 'https:', 'mailto:', '', undefined, ':'];\nvar NEWLINES = exports.NEWLINES = /(\\r\\n?|\\n)/g;\nvar SPLIT_TAGS = /(<[^<>]*>)/;\nvar ONE_TAG = /<(\\/?)([^ >]*)(\\s+(.*))?>/i;\nvar BR_TAG = /<br(\\s+.*)?>/i;\nexports.BR_TAG_ALL = /<br(\\s+.*)?>/gi;\n\n/*\n * style and href: pull them out of either single or double quotes. Also\n * - target: (_blank|_self|_parent|_top|framename)\n *     note that you can't use target to get a popup but if you use popup,\n *     a `framename` will be passed along as the name of the popup window.\n *     per the spec, cannot contain whitespace.\n *     for backward compatibility we default to '_blank'\n * - popup: a custom one for us to enable popup (new window) links. String\n *     for window.open -> strWindowFeatures, like 'menubar=yes,width=500,height=550'\n *     note that at least in Chrome, you need to give at least one property\n *     in this string or the page will open in a new tab anyway. We follow this\n *     convention and will not make a popup if this string is empty.\n *     per the spec, cannot contain whitespace.\n *\n * Because we hack in other attributes with style (sub & sup), drop any trailing\n * semicolon in user-supplied styles so we can consistently append the tag-dependent style\n *\n * These are for tag attributes; Chrome anyway will convert entities in\n * attribute values, but not in attribute names\n * you can test this by for example:\n * > p = document.createElement('p')\n * > p.innerHTML = '<span styl&#x65;=\"font-color:r&#x65;d;\">Hi</span>'\n * > p.innerHTML\n * <- '<span styl&#x65;=\"font-color:red;\">Hi</span>'\n */\nvar STYLEMATCH = /(^|[\\s\"'])style\\s*=\\s*(\"([^\"]*);?\"|'([^']*);?')/i;\nvar HREFMATCH = /(^|[\\s\"'])href\\s*=\\s*(\"([^\"]*)\"|'([^']*)')/i;\nvar TARGETMATCH = /(^|[\\s\"'])target\\s*=\\s*(\"([^\"\\s]*)\"|'([^'\\s]*)')/i;\nvar POPUPMATCH = /(^|[\\s\"'])popup\\s*=\\s*(\"([\\w=,]*)\"|'([\\w=,]*)')/i;\n\n// dedicated matcher for these quoted regexes, that can return their results\n// in two different places\nfunction getQuotedMatch(_str, re) {\n  if (!_str) return null;\n  var match = _str.match(re);\n  var result = match && (match[3] || match[4]);\n  return result && convertEntities(result);\n}\nvar COLORMATCH = /(^|;)\\s*color:/;\n\n/**\n * Strip string of tags\n *\n * @param {string} _str : input string\n * @param {object} opts :\n * - len {number} max length of output string\n * - allowedTags {array} list of pseudo-html tags to NOT strip\n * @return {string}\n */\nexports.plainText = function (_str, opts) {\n  opts = opts || {};\n  var len = opts.len !== undefined && opts.len !== -1 ? opts.len : Infinity;\n  var allowedTags = opts.allowedTags !== undefined ? opts.allowedTags : ['br'];\n  var ellipsis = '...';\n  var eLen = ellipsis.length;\n  var oldParts = _str.split(SPLIT_TAGS);\n  var newParts = [];\n  var prevTag = '';\n  var l = 0;\n  for (var i = 0; i < oldParts.length; i++) {\n    var p = oldParts[i];\n    var match = p.match(ONE_TAG);\n    var tagType = match && match[2].toLowerCase();\n    if (tagType) {\n      // N.B. tags do not count towards string length\n      if (allowedTags.indexOf(tagType) !== -1) {\n        newParts.push(p);\n        prevTag = tagType;\n      }\n    } else {\n      var pLen = p.length;\n      if (l + pLen < len) {\n        newParts.push(p);\n        l += pLen;\n      } else if (l < len) {\n        var pLen2 = len - l;\n        if (prevTag && (prevTag !== 'br' || pLen2 <= eLen || pLen <= eLen)) {\n          newParts.pop();\n        }\n        if (len > eLen) {\n          newParts.push(p.substr(0, pLen2 - eLen) + ellipsis);\n        } else {\n          newParts.push(p.substr(0, pLen2));\n        }\n        break;\n      }\n      prevTag = '';\n    }\n  }\n  return newParts.join('');\n};\n\n/*\n * N.B. HTML entities are listed without the leading '&' and trailing ';'\n * https://www.freeformatter.com/html-entities.html\n *\n * FWIW if we wanted to support the full set, it has 2261 entries:\n * https://www.w3.org/TR/html5/entities.json\n * though I notice that some of these are duplicates and/or are missing \";\"\n * eg: \"&amp;\", \"&amp\", \"&AMP;\", and \"&AMP\" all map to \"&\"\n * We no longer need to include numeric entities here, these are now handled\n * by String.fromCodePoint/fromCharCode\n *\n * Anyway the only ones that are really important to allow are the HTML special\n * chars <, >, and &, because these ones can trigger special processing if not\n * replaced by the corresponding entity.\n */\nvar entityToUnicode = {\n  mu: 'μ',\n  amp: '&',\n  lt: '<',\n  gt: '>',\n  nbsp: ' ',\n  times: '×',\n  plusmn: '±',\n  deg: '°'\n};\n\n// NOTE: in general entities can contain uppercase too (so [a-zA-Z]) but all the\n// ones we support use only lowercase. If we ever change that, update the regex.\nvar ENTITY_MATCH = /&(#\\d+|#x[\\da-fA-F]+|[a-z]+);/g;\nfunction convertEntities(_str) {\n  return _str.replace(ENTITY_MATCH, function (fullMatch, innerMatch) {\n    var outChar;\n    if (innerMatch.charAt(0) === '#') {\n      // cannot use String.fromCodePoint in IE\n      outChar = fromCodePoint(innerMatch.charAt(1) === 'x' ? parseInt(innerMatch.substr(2), 16) : parseInt(innerMatch.substr(1), 10));\n    } else outChar = entityToUnicode[innerMatch];\n\n    // as in regular HTML, if we didn't decode the entity just\n    // leave the raw text in place.\n    return outChar || fullMatch;\n  });\n}\nexports.convertEntities = convertEntities;\nfunction fromCodePoint(code) {\n  // Don't allow overflow. In Chrome this turns into � but I feel like it's\n  // more useful to just not convert it at all.\n  if (code > 0x10FFFF) return;\n  var stringFromCodePoint = String.fromCodePoint;\n  if (stringFromCodePoint) return stringFromCodePoint(code);\n\n  // IE doesn't have String.fromCodePoint\n  // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint\n  var stringFromCharCode = String.fromCharCode;\n  if (code <= 0xFFFF) return stringFromCharCode(code);\n  return stringFromCharCode((code >> 10) + 0xD7C0, code % 0x400 + 0xDC00);\n}\n\n/*\n * buildSVGText: convert our pseudo-html into SVG tspan elements, and attach these\n * to containerNode\n *\n * @param {svg text element} containerNode: the <text> node to insert this text into\n * @param {string} str: the pseudo-html string to convert to svg\n *\n * @returns {bool}: does the result contain any links? We need to handle the text element\n *   somewhat differently if it does, so just keep track of this when it happens.\n */\nfunction buildSVGText(containerNode, str) {\n  /*\n   * Normalize behavior between IE and others wrt newlines and whitespace:pre\n   * this combination makes IE barf https://github.com/plotly/plotly.js/issues/746\n   * Chrome and FF display \\n, \\r, or \\r\\n as a space in this mode.\n   * I feel like at some point we turned these into <br> but currently we don't so\n   * I'm just going to cement what we do now in Chrome and FF\n   */\n  str = str.replace(NEWLINES, ' ');\n  var hasLink = false;\n\n  // as we're building the text, keep track of what elements we're nested inside\n  // nodeStack will be an array of {node, type, style, href, target, popup}\n  // where only type: 'a' gets the last 3 and node is only added when it's created\n  var nodeStack = [];\n  var currentNode;\n  var currentLine = -1;\n  function newLine() {\n    currentLine++;\n    var lineNode = document.createElementNS(xmlnsNamespaces.svg, 'tspan');\n    d3.select(lineNode).attr({\n      class: 'line',\n      dy: currentLine * LINE_SPACING + 'em'\n    });\n    containerNode.appendChild(lineNode);\n    currentNode = lineNode;\n    var oldNodeStack = nodeStack;\n    nodeStack = [{\n      node: lineNode\n    }];\n    if (oldNodeStack.length > 1) {\n      for (var i = 1; i < oldNodeStack.length; i++) {\n        enterNode(oldNodeStack[i]);\n      }\n    }\n  }\n  function enterNode(nodeSpec) {\n    var type = nodeSpec.type;\n    var nodeAttrs = {};\n    var nodeType;\n    if (type === 'a') {\n      nodeType = 'a';\n      var target = nodeSpec.target;\n      var href = nodeSpec.href;\n      var popup = nodeSpec.popup;\n      if (href) {\n        nodeAttrs = {\n          'xlink:xlink:show': target === '_blank' || target.charAt(0) !== '_' ? 'new' : 'replace',\n          target: target,\n          'xlink:xlink:href': href\n        };\n        if (popup) {\n          // security: href and target are not inserted as code but\n          // as attributes. popup is, but limited to /[A-Za-z0-9_=,]/\n          nodeAttrs.onclick = 'window.open(this.href.baseVal,this.target.baseVal,\"' + popup + '\");return false;';\n        }\n      }\n    } else nodeType = 'tspan';\n    if (nodeSpec.style) nodeAttrs.style = nodeSpec.style;\n    var newNode = document.createElementNS(xmlnsNamespaces.svg, nodeType);\n    if (type === 'sup' || type === 'sub') {\n      addTextNode(currentNode, ZERO_WIDTH_SPACE);\n      currentNode.appendChild(newNode);\n      var resetter = document.createElementNS(xmlnsNamespaces.svg, 'tspan');\n      addTextNode(resetter, ZERO_WIDTH_SPACE);\n      d3.select(resetter).attr('dy', RESET_DY[type]);\n      nodeAttrs.dy = SHIFT_DY[type];\n      currentNode.appendChild(newNode);\n      currentNode.appendChild(resetter);\n    } else {\n      currentNode.appendChild(newNode);\n    }\n    d3.select(newNode).attr(nodeAttrs);\n    currentNode = nodeSpec.node = newNode;\n    nodeStack.push(nodeSpec);\n  }\n  function addTextNode(node, text) {\n    node.appendChild(document.createTextNode(text));\n  }\n  function exitNode(type) {\n    // A bare closing tag can't close the root node. If we encounter this it\n    // means there's an extra closing tag that can just be ignored:\n    if (nodeStack.length === 1) {\n      Lib.log('Ignoring unexpected end tag </' + type + '>.', str);\n      return;\n    }\n    var innerNode = nodeStack.pop();\n    if (type !== innerNode.type) {\n      Lib.log('Start tag <' + innerNode.type + '> doesnt match end tag <' + type + '>. Pretending it did match.', str);\n    }\n    currentNode = nodeStack[nodeStack.length - 1].node;\n  }\n  var hasLines = BR_TAG.test(str);\n  if (hasLines) newLine();else {\n    currentNode = containerNode;\n    nodeStack = [{\n      node: containerNode\n    }];\n  }\n  var parts = str.split(SPLIT_TAGS);\n  for (var i = 0; i < parts.length; i++) {\n    var parti = parts[i];\n    var match = parti.match(ONE_TAG);\n    var tagType = match && match[2].toLowerCase();\n    var tagStyle = TAG_STYLES[tagType];\n    if (tagType === 'br') {\n      newLine();\n    } else if (tagStyle === undefined) {\n      addTextNode(currentNode, convertEntities(parti));\n    } else {\n      // tag - open or close\n      if (match[1]) {\n        exitNode(tagType);\n      } else {\n        var extra = match[4];\n        var nodeSpec = {\n          type: tagType\n        };\n\n        // now add style, from both the tag name and any extra css\n        // Most of the svg css that users will care about is just like html,\n        // but font color is different (uses fill). Let our users ignore this.\n        var css = getQuotedMatch(extra, STYLEMATCH);\n        if (css) {\n          css = css.replace(COLORMATCH, '$1 fill:');\n          if (tagStyle) css += ';' + tagStyle;\n        } else if (tagStyle) css = tagStyle;\n        if (css) nodeSpec.style = css;\n        if (tagType === 'a') {\n          hasLink = true;\n          var href = getQuotedMatch(extra, HREFMATCH);\n          if (href) {\n            var safeHref = sanitizeHref(href);\n            if (safeHref) {\n              nodeSpec.href = safeHref;\n              nodeSpec.target = getQuotedMatch(extra, TARGETMATCH) || '_blank';\n              nodeSpec.popup = getQuotedMatch(extra, POPUPMATCH);\n            }\n          }\n        }\n        enterNode(nodeSpec);\n      }\n    }\n  }\n  return hasLink;\n}\nfunction sanitizeHref(href) {\n  var decodedHref = encodeURI(decodeURI(href));\n  var dummyAnchor1 = document.createElement('a');\n  var dummyAnchor2 = document.createElement('a');\n  dummyAnchor1.href = href;\n  dummyAnchor2.href = decodedHref;\n  var p1 = dummyAnchor1.protocol;\n  var p2 = dummyAnchor2.protocol;\n\n  // check safe protocols\n  if (PROTOCOLS.indexOf(p1) !== -1 && PROTOCOLS.indexOf(p2) !== -1) {\n    return decodedHref;\n  } else {\n    return '';\n  }\n}\n\n/*\n * sanitizeHTML: port of buildSVGText aimed at providing a clean subset of HTML\n * @param {string} str: the html string to clean\n * @returns {string}: a cleaned and normalized version of the input,\n *     supporting only a small subset of html\n */\nexports.sanitizeHTML = function sanitizeHTML(str) {\n  str = str.replace(NEWLINES, ' ');\n  var rootNode = document.createElement('p');\n  var currentNode = rootNode;\n  var nodeStack = [];\n  var parts = str.split(SPLIT_TAGS);\n  for (var i = 0; i < parts.length; i++) {\n    var parti = parts[i];\n    var match = parti.match(ONE_TAG);\n    var tagType = match && match[2].toLowerCase();\n    if (tagType in TAG_STYLES) {\n      if (match[1]) {\n        if (nodeStack.length) {\n          currentNode = nodeStack.pop();\n        }\n      } else {\n        var extra = match[4];\n        var css = getQuotedMatch(extra, STYLEMATCH);\n        var nodeAttrs = css ? {\n          style: css\n        } : {};\n        if (tagType === 'a') {\n          var href = getQuotedMatch(extra, HREFMATCH);\n          if (href) {\n            var safeHref = sanitizeHref(href);\n            if (safeHref) {\n              nodeAttrs.href = safeHref;\n              var target = getQuotedMatch(extra, TARGETMATCH);\n              if (target) {\n                nodeAttrs.target = target;\n              }\n            }\n          }\n        }\n        var newNode = document.createElement(tagType);\n        currentNode.appendChild(newNode);\n        d3.select(newNode).attr(nodeAttrs);\n        currentNode = newNode;\n        nodeStack.push(newNode);\n      }\n    } else {\n      currentNode.appendChild(document.createTextNode(convertEntities(parti)));\n    }\n  }\n  var key = 'innerHTML'; // i.e. to avoid pass test-syntax\n  return rootNode[key];\n};\nexports.lineCount = function lineCount(s) {\n  return s.selectAll('tspan.line').size() || 1;\n};\nexports.positionText = function positionText(s, x, y) {\n  return s.each(function () {\n    var text = d3.select(this);\n    function setOrGet(attr, val) {\n      if (val === undefined) {\n        val = text.attr(attr);\n        if (val === null) {\n          text.attr(attr, 0);\n          val = 0;\n        }\n      } else text.attr(attr, val);\n      return val;\n    }\n    var thisX = setOrGet('x', x);\n    var thisY = setOrGet('y', y);\n    if (this.nodeName === 'text') {\n      text.selectAll('tspan.line').attr({\n        x: thisX,\n        y: thisY\n      });\n    }\n  });\n};\nfunction alignHTMLWith(_base, container, options) {\n  var alignH = options.horizontalAlign;\n  var alignV = options.verticalAlign || 'top';\n  var bRect = _base.node().getBoundingClientRect();\n  var cRect = container.node().getBoundingClientRect();\n  var thisRect;\n  var getTop;\n  var getLeft;\n  if (alignV === 'bottom') {\n    getTop = function () {\n      return bRect.bottom - thisRect.height;\n    };\n  } else if (alignV === 'middle') {\n    getTop = function () {\n      return bRect.top + (bRect.height - thisRect.height) / 2;\n    };\n  } else {\n    // default: top\n    getTop = function () {\n      return bRect.top;\n    };\n  }\n  if (alignH === 'right') {\n    getLeft = function () {\n      return bRect.right - thisRect.width;\n    };\n  } else if (alignH === 'center') {\n    getLeft = function () {\n      return bRect.left + (bRect.width - thisRect.width) / 2;\n    };\n  } else {\n    // default: left\n    getLeft = function () {\n      return bRect.left;\n    };\n  }\n  return function () {\n    thisRect = this.node().getBoundingClientRect();\n    var x0 = getLeft() - cRect.left;\n    var y0 = getTop() - cRect.top;\n    var gd = options.gd || {};\n    if (options.gd) {\n      gd._fullLayout._calcInverseTransform(gd);\n      var transformedCoords = Lib.apply3DTransform(gd._fullLayout._invTransform)(x0, y0);\n      x0 = transformedCoords[0];\n      y0 = transformedCoords[1];\n    }\n    this.style({\n      top: y0 + 'px',\n      left: x0 + 'px',\n      'z-index': 1000\n    });\n    return this;\n  };\n}\nvar onePx = '1px ';\nexports.makeTextShadow = function (color) {\n  var x = onePx;\n  var y = onePx;\n  var b = onePx;\n  return x + y + b + color + ', ' + '-' + x + '-' + y + b + color + ', ' + x + '-' + y + b + color + ', ' + '-' + x + y + b + color;\n};\n\n/*\n * Editable title\n * @param {d3.selection} context: the element being edited. Normally text,\n *   but if it isn't, you should provide the styling options\n * @param {object} options:\n *   @param {div} options.gd: graphDiv\n *   @param {d3.selection} options.delegate: item to bind events to if not this\n *   @param {boolean} options.immediate: start editing now (true) or on click (false, default)\n *   @param {string} options.fill: font color if not as shown\n *   @param {string} options.background: background color if not as shown\n *   @param {string} options.text: initial text, if not as shown\n *   @param {string} options.horizontalAlign: alignment of the edit box wrt. the bound element\n *   @param {string} options.verticalAlign: alignment of the edit box wrt. the bound element\n */\n\nexports.makeEditable = function (context, options) {\n  var gd = options.gd;\n  var _delegate = options.delegate;\n  var dispatch = d3.dispatch('edit', 'input', 'cancel');\n  var handlerElement = _delegate || context;\n  context.style({\n    'pointer-events': _delegate ? 'none' : 'all'\n  });\n  if (context.size() !== 1) throw new Error('boo');\n  function handleClick() {\n    appendEditable();\n    context.style({\n      opacity: 0\n    });\n    // also hide any mathjax svg\n    var svgClass = handlerElement.attr('class');\n    var mathjaxClass;\n    if (svgClass) mathjaxClass = '.' + svgClass.split(' ')[0] + '-math-group';else mathjaxClass = '[class*=-math-group]';\n    if (mathjaxClass) {\n      d3.select(context.node().parentNode).select(mathjaxClass).style({\n        opacity: 0\n      });\n    }\n  }\n  function selectElementContents(_el) {\n    var el = _el.node();\n    var range = document.createRange();\n    range.selectNodeContents(el);\n    var sel = window.getSelection();\n    sel.removeAllRanges();\n    sel.addRange(range);\n    el.focus();\n  }\n  function appendEditable() {\n    var plotDiv = d3.select(gd);\n    var container = plotDiv.select('.svg-container');\n    var div = container.append('div');\n    var cStyle = context.node().style;\n    var fontSize = parseFloat(cStyle.fontSize || 12);\n    var initialText = options.text;\n    if (initialText === undefined) initialText = context.attr('data-unformatted');\n    div.classed('plugin-editable editable', true).style({\n      position: 'absolute',\n      'font-family': cStyle.fontFamily || 'Arial',\n      'font-size': fontSize,\n      color: options.fill || cStyle.fill || 'black',\n      opacity: 1,\n      'background-color': options.background || 'transparent',\n      outline: '#ffffff33 1px solid',\n      margin: [-fontSize / 8 + 1, 0, 0, -1].join('px ') + 'px',\n      padding: '0',\n      'box-sizing': 'border-box'\n    }).attr({\n      contenteditable: true\n    }).text(initialText).call(alignHTMLWith(context, container, options)).on('blur', function () {\n      gd._editing = false;\n      context.text(this.textContent).style({\n        opacity: 1\n      });\n      var svgClass = d3.select(this).attr('class');\n      var mathjaxClass;\n      if (svgClass) mathjaxClass = '.' + svgClass.split(' ')[0] + '-math-group';else mathjaxClass = '[class*=-math-group]';\n      if (mathjaxClass) {\n        d3.select(context.node().parentNode).select(mathjaxClass).style({\n          opacity: 0\n        });\n      }\n      var text = this.textContent;\n      d3.select(this).transition().duration(0).remove();\n      d3.select(document).on('mouseup', null);\n      dispatch.edit.call(context, text);\n    }).on('focus', function () {\n      var editDiv = this;\n      gd._editing = true;\n      d3.select(document).on('mouseup', function () {\n        if (d3.event.target === editDiv) return false;\n        if (document.activeElement === div.node()) div.node().blur();\n      });\n    }).on('keyup', function () {\n      if (d3.event.which === 27) {\n        gd._editing = false;\n        context.style({\n          opacity: 1\n        });\n        d3.select(this).style({\n          opacity: 0\n        }).on('blur', function () {\n          return false;\n        }).transition().remove();\n        dispatch.cancel.call(context, this.textContent);\n      } else {\n        dispatch.input.call(context, this.textContent);\n        d3.select(this).call(alignHTMLWith(context, container, options));\n      }\n    }).on('keydown', function () {\n      if (d3.event.which === 13) this.blur();\n    }).call(selectElementContents);\n  }\n  if (options.immediate) handleClick();else handlerElement.on('click', handleClick);\n  return d3.rebind(context, dispatch, 'on');\n};\n\n/***/ }),\n\n/***/ 79990:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\nvar timerCache = {};\n\n/**\n * Throttle a callback. `callback` executes synchronously only if\n * more than `minInterval` milliseconds have already elapsed since the latest\n * call (if any). Otherwise we wait until `minInterval` is over and execute the\n * last callback received while waiting.\n * So the first and last events in a train are always executed (eventually)\n * but some of the events in the middle can be dropped.\n *\n * @param {string} id: an identifier to mark events to throttle together\n * @param {number} minInterval: minimum time, in milliseconds, between\n *   invocations of `callback`\n * @param {function} callback: the function to throttle. `callback` itself\n *   should be a purely synchronous function.\n */\nexports.throttle = function throttle(id, minInterval, callback) {\n  var cache = timerCache[id];\n  var now = Date.now();\n  if (!cache) {\n    /*\n     * Throw out old items before making a new one, to prevent the cache\n     * getting overgrown, for example from old plots that have been replaced.\n     * 1 minute age is arbitrary.\n     */\n    for (var idi in timerCache) {\n      if (timerCache[idi].ts < now - 60000) {\n        delete timerCache[idi];\n      }\n    }\n    cache = timerCache[id] = {\n      ts: 0,\n      timer: null\n    };\n  }\n  _clearTimeout(cache);\n  function exec() {\n    callback();\n    cache.ts = Date.now();\n    if (cache.onDone) {\n      cache.onDone();\n      cache.onDone = null;\n    }\n  }\n  if (now > cache.ts + minInterval) {\n    exec();\n    return;\n  }\n  cache.timer = setTimeout(function () {\n    exec();\n    cache.timer = null;\n  }, minInterval);\n};\nexports.done = function (id) {\n  var cache = timerCache[id];\n  if (!cache || !cache.timer) return Promise.resolve();\n  return new Promise(function (resolve) {\n    var previousOnDone = cache.onDone;\n    cache.onDone = function onDone() {\n      if (previousOnDone) previousOnDone();\n      resolve();\n      cache.onDone = null;\n    };\n  });\n};\n\n/**\n * Clear the throttle cache for one or all timers\n * @param {optional string} id:\n *   if provided, clear just this timer\n *   if omitted, clear all timers (mainly useful for testing)\n */\nexports.clear = function (id) {\n  if (id) {\n    _clearTimeout(timerCache[id]);\n    delete timerCache[id];\n  } else {\n    for (var idi in timerCache) exports.clear(idi);\n  }\n};\nfunction _clearTimeout(cache) {\n  if (cache && cache.timer !== null) {\n    clearTimeout(cache.timer);\n    cache.timer = null;\n  }\n}\n\n/***/ }),\n\n/***/ 58163:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_958783__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_958783__(92770);\n\n/**\n * convert a linear value into a logged value, folding negative numbers into\n * the given range\n */\nmodule.exports = function toLogRange(val, range) {\n  if (val > 0) return Math.log(val) / Math.LN10;\n\n  // move a negative value reference to a log axis - just put the\n  // result at the lowest range value on the plot (or if the range also went negative,\n  // one millionth of the top of the range)\n  var newVal = Math.log(Math.min(range[0], range[1])) / Math.LN10;\n  if (!isNumeric(newVal)) newVal = Math.log(Math.max(range[0], range[1])) / Math.LN10 - 6;\n  return newVal;\n};\n\n/***/ }),\n\n/***/ 90973:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_959523__) {\n\n\"use strict\";\n\n\nvar topojsonUtils = module.exports = {};\nvar locationmodeToLayer = (__nested_webpack_require_959523__(78776).locationmodeToLayer);\nvar topojsonFeature = (__nested_webpack_require_959523__(96892)/* .feature */ .zL);\ntopojsonUtils.getTopojsonName = function (geoLayout) {\n  return [geoLayout.scope.replace(/ /g, '-'), '_', geoLayout.resolution.toString(), 'm'].join('');\n};\ntopojsonUtils.getTopojsonPath = function (topojsonURL, topojsonName) {\n  return topojsonURL + topojsonName + '.json';\n};\ntopojsonUtils.getTopojsonFeatures = function (trace, topojson) {\n  var layer = locationmodeToLayer[trace.locationmode];\n  var obj = topojson.objects[layer];\n  return topojsonFeature(topojson, obj).features;\n};\n\n/***/ }),\n\n/***/ 37815:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'locale',\n  name: 'en-US',\n  dictionary: {\n    'Click to enter Colorscale title': 'Click to enter Colorscale title'\n  },\n  format: {\n    date: '%m/%d/%Y'\n  }\n};\n\n/***/ }),\n\n/***/ 92177:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'locale',\n  name: 'en',\n  dictionary: {\n    'Click to enter Colorscale title': 'Click to enter Colourscale title'\n  },\n  format: {\n    days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n    shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n    months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n    shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n    periods: ['AM', 'PM'],\n    dateTime: '%a %b %e %X %Y',\n    date: '%d/%m/%Y',\n    time: '%H:%M:%S',\n    decimal: '.',\n    thousands: ',',\n    grouping: [3],\n    currency: ['$', ''],\n    year: '%Y',\n    month: '%b %Y',\n    dayMonth: '%b %-d',\n    dayMonthYear: '%b %-d, %Y'\n  }\n};\n\n/***/ }),\n\n/***/ 14458:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_961485__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_961485__(73972);\n\n/*\n * containerArrayMatch: does this attribute string point into a\n * layout container array?\n *\n * @param {String} astr: an attribute string, like *annotations[2].text*\n *\n * @returns {Object | false} Returns false if `astr` doesn't match a container\n *  array. If it does, returns:\n *     {array: {String}, index: {Number}, property: {String}}\n *  ie the attribute string for the array, the index within the array (or ''\n *  if the whole array) and the property within that (or '' if the whole array\n *  or the whole object)\n */\nmodule.exports = function containerArrayMatch(astr) {\n  var rootContainers = Registry.layoutArrayContainers;\n  var regexpContainers = Registry.layoutArrayRegexes;\n  var rootPart = astr.split('[')[0];\n  var arrayStr;\n  var match;\n\n  // look for regexp matches first, because they may be nested inside root matches\n  // eg updatemenus[i].buttons is nested inside updatemenus\n  for (var i = 0; i < regexpContainers.length; i++) {\n    match = astr.match(regexpContainers[i]);\n    if (match && match.index === 0) {\n      arrayStr = match[0];\n      break;\n    }\n  }\n\n  // now look for root matches\n  if (!arrayStr) arrayStr = rootContainers[rootContainers.indexOf(rootPart)];\n  if (!arrayStr) return false;\n  var tail = astr.substr(arrayStr.length);\n  if (!tail) return {\n    array: arrayStr,\n    index: '',\n    property: ''\n  };\n  match = tail.match(/^\\[(0|[1-9][0-9]*)\\](\\.(.+))?$/);\n  if (!match) return false;\n  return {\n    array: arrayStr,\n    index: Number(match[1]),\n    property: match[3] || ''\n  };\n};\n\n/***/ }),\n\n/***/ 30962:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_963181__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_963181__(71828);\nvar extendFlat = Lib.extendFlat;\nvar isPlainObject = Lib.isPlainObject;\nvar traceOpts = {\n  valType: 'flaglist',\n  extras: ['none'],\n  flags: ['calc', 'clearAxisTypes', 'plot', 'style', 'markerSize', 'colorbars']\n};\nvar layoutOpts = {\n  valType: 'flaglist',\n  extras: ['none'],\n  flags: ['calc', 'plot', 'legend', 'ticks', 'axrange', 'layoutstyle', 'modebar', 'camera', 'arraydraw', 'colorbars']\n};\n\n// flags for inside restyle/relayout include a few extras\n// that shouldn't be used in attributes, to deal with certain\n// combinations and conditionals efficiently\nvar traceEditTypeFlags = traceOpts.flags.slice().concat(['fullReplot']);\nvar layoutEditTypeFlags = layoutOpts.flags.slice().concat('layoutReplot');\nmodule.exports = {\n  traces: traceOpts,\n  layout: layoutOpts,\n  /*\n   * default (all false) edit flags for restyle (traces)\n   * creates a new object each call, so the caller can mutate freely\n   */\n  traceFlags: function () {\n    return falseObj(traceEditTypeFlags);\n  },\n  /*\n   * default (all false) edit flags for relayout\n   * creates a new object each call, so the caller can mutate freely\n   */\n  layoutFlags: function () {\n    return falseObj(layoutEditTypeFlags);\n  },\n  /*\n   * update `flags` with the `editType` values found in `attr`\n   */\n  update: function (flags, attr) {\n    var editType = attr.editType;\n    if (editType && editType !== 'none') {\n      var editTypeParts = editType.split('+');\n      for (var i = 0; i < editTypeParts.length; i++) {\n        flags[editTypeParts[i]] = true;\n      }\n    }\n  },\n  overrideAll: overrideAll\n};\nfunction falseObj(keys) {\n  var out = {};\n  for (var i = 0; i < keys.length; i++) out[keys[i]] = false;\n  return out;\n}\n\n/**\n * For attributes that are largely copied from elsewhere into a plot type that doesn't\n * support partial redraws - overrides the editType field of all attributes in the object\n *\n * @param {object} attrs: the attributes to override. Will not be mutated.\n * @param {string} editTypeOverride: the new editType to use\n * @param {'nested'|'from-root'} overrideContainers:\n *   - 'nested' will override editType for nested containers but not the root.\n *   - 'from-root' will also override editType of the root container.\n *   Containers below the absolute top level (trace or layout root) DO need an\n *   editType even if they are not `valObject`s themselves (eg `scatter.marker`)\n *   to handle the case where you edit the whole container.\n *\n * @return {object} a new attributes object with `editType` modified as directed\n */\nfunction overrideAll(attrs, editTypeOverride, overrideContainers) {\n  var out = extendFlat({}, attrs);\n  for (var key in out) {\n    var attr = out[key];\n    if (isPlainObject(attr)) {\n      out[key] = overrideOne(attr, editTypeOverride, overrideContainers, key);\n    }\n  }\n  if (overrideContainers === 'from-root') out.editType = editTypeOverride;\n  return out;\n}\nfunction overrideOne(attr, editTypeOverride, overrideContainers, key) {\n  if (attr.valType) {\n    var out = extendFlat({}, attr);\n    out.editType = editTypeOverride;\n    if (Array.isArray(attr.items)) {\n      out.items = new Array(attr.items.length);\n      for (var i = 0; i < attr.items.length; i++) {\n        out.items[i] = overrideOne(attr.items[i], editTypeOverride, 'from-root');\n      }\n    }\n    return out;\n  } else {\n    // don't provide an editType for the _deprecated container\n    return overrideAll(attr, editTypeOverride, key.charAt(0) === '_' ? 'nested' : 'from-root');\n  }\n}\n\n/***/ }),\n\n/***/ 58377:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_966809__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_966809__(92770);\nvar m4FromQuat = __nested_webpack_require_966809__(27812);\nvar Registry = __nested_webpack_require_966809__(73972);\nvar Lib = __nested_webpack_require_966809__(71828);\nvar Plots = __nested_webpack_require_966809__(74875);\nvar AxisIds = __nested_webpack_require_966809__(41675);\nvar Color = __nested_webpack_require_966809__(7901);\nvar cleanId = AxisIds.cleanId;\nvar getFromTrace = AxisIds.getFromTrace;\nvar traceIs = Registry.traceIs;\n\n// clear the promise queue if one of them got rejected\nexports.clearPromiseQueue = function (gd) {\n  if (Array.isArray(gd._promises) && gd._promises.length > 0) {\n    Lib.log('Clearing previous rejected promises from queue.');\n  }\n  gd._promises = [];\n};\n\n// make a few changes to the layout right away\n// before it gets used for anything\n// backward compatibility and cleanup of nonstandard options\nexports.cleanLayout = function (layout) {\n  var i, j;\n  if (!layout) layout = {};\n\n  // cannot have (x|y)axis1, numbering goes axis, axis2, axis3...\n  if (layout.xaxis1) {\n    if (!layout.xaxis) layout.xaxis = layout.xaxis1;\n    delete layout.xaxis1;\n  }\n  if (layout.yaxis1) {\n    if (!layout.yaxis) layout.yaxis = layout.yaxis1;\n    delete layout.yaxis1;\n  }\n  if (layout.scene1) {\n    if (!layout.scene) layout.scene = layout.scene1;\n    delete layout.scene1;\n  }\n  var axisAttrRegex = (Plots.subplotsRegistry.cartesian || {}).attrRegex;\n  var polarAttrRegex = (Plots.subplotsRegistry.polar || {}).attrRegex;\n  var ternaryAttrRegex = (Plots.subplotsRegistry.ternary || {}).attrRegex;\n  var sceneAttrRegex = (Plots.subplotsRegistry.gl3d || {}).attrRegex;\n  var keys = Object.keys(layout);\n  for (i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (axisAttrRegex && axisAttrRegex.test(key)) {\n      // modifications to cartesian axes\n\n      var ax = layout[key];\n      if (ax.anchor && ax.anchor !== 'free') {\n        ax.anchor = cleanId(ax.anchor);\n      }\n      if (ax.overlaying) ax.overlaying = cleanId(ax.overlaying);\n\n      // old method of axis type - isdate and islog (before category existed)\n      if (!ax.type) {\n        if (ax.isdate) ax.type = 'date';else if (ax.islog) ax.type = 'log';else if (ax.isdate === false && ax.islog === false) ax.type = 'linear';\n      }\n      if (ax.autorange === 'withzero' || ax.autorange === 'tozero') {\n        ax.autorange = true;\n        ax.rangemode = 'tozero';\n      }\n      delete ax.islog;\n      delete ax.isdate;\n      delete ax.categories; // replaced by _categories\n\n      // prune empty domain arrays made before the new nestedProperty\n      if (emptyContainer(ax, 'domain')) delete ax.domain;\n\n      // autotick -> tickmode\n      if (ax.autotick !== undefined) {\n        if (ax.tickmode === undefined) {\n          ax.tickmode = ax.autotick ? 'auto' : 'linear';\n        }\n        delete ax.autotick;\n      }\n      cleanTitle(ax);\n    } else if (polarAttrRegex && polarAttrRegex.test(key)) {\n      // modifications for polar\n\n      var polar = layout[key];\n      cleanTitle(polar.radialaxis);\n    } else if (ternaryAttrRegex && ternaryAttrRegex.test(key)) {\n      // modifications for ternary\n\n      var ternary = layout[key];\n      cleanTitle(ternary.aaxis);\n      cleanTitle(ternary.baxis);\n      cleanTitle(ternary.caxis);\n    } else if (sceneAttrRegex && sceneAttrRegex.test(key)) {\n      // modifications for 3D scenes\n\n      var scene = layout[key];\n\n      // clean old Camera coords\n      var cameraposition = scene.cameraposition;\n      if (Array.isArray(cameraposition) && cameraposition[0].length === 4) {\n        var rotation = cameraposition[0];\n        var center = cameraposition[1];\n        var radius = cameraposition[2];\n        var mat = m4FromQuat([], rotation);\n        var eye = [];\n        for (j = 0; j < 3; ++j) {\n          eye[j] = center[j] + radius * mat[2 + 4 * j];\n        }\n        scene.camera = {\n          eye: {\n            x: eye[0],\n            y: eye[1],\n            z: eye[2]\n          },\n          center: {\n            x: center[0],\n            y: center[1],\n            z: center[2]\n          },\n          up: {\n            x: 0,\n            y: 0,\n            z: 1\n          } // we just ignore calculating camera z up in this case\n        };\n\n        delete scene.cameraposition;\n      }\n\n      // clean axis titles\n      cleanTitle(scene.xaxis);\n      cleanTitle(scene.yaxis);\n      cleanTitle(scene.zaxis);\n    }\n  }\n  var annotationsLen = Array.isArray(layout.annotations) ? layout.annotations.length : 0;\n  for (i = 0; i < annotationsLen; i++) {\n    var ann = layout.annotations[i];\n    if (!Lib.isPlainObject(ann)) continue;\n    if (ann.ref) {\n      if (ann.ref === 'paper') {\n        ann.xref = 'paper';\n        ann.yref = 'paper';\n      } else if (ann.ref === 'data') {\n        ann.xref = 'x';\n        ann.yref = 'y';\n      }\n      delete ann.ref;\n    }\n    cleanAxRef(ann, 'xref');\n    cleanAxRef(ann, 'yref');\n  }\n  var shapesLen = Array.isArray(layout.shapes) ? layout.shapes.length : 0;\n  for (i = 0; i < shapesLen; i++) {\n    var shape = layout.shapes[i];\n    if (!Lib.isPlainObject(shape)) continue;\n    cleanAxRef(shape, 'xref');\n    cleanAxRef(shape, 'yref');\n  }\n  var imagesLen = Array.isArray(layout.images) ? layout.images.length : 0;\n  for (i = 0; i < imagesLen; i++) {\n    var image = layout.images[i];\n    if (!Lib.isPlainObject(image)) continue;\n    cleanAxRef(image, 'xref');\n    cleanAxRef(image, 'yref');\n  }\n  var legend = layout.legend;\n  if (legend) {\n    // check for old-style legend positioning (x or y is +/- 100)\n    if (legend.x > 3) {\n      legend.x = 1.02;\n      legend.xanchor = 'left';\n    } else if (legend.x < -2) {\n      legend.x = -0.02;\n      legend.xanchor = 'right';\n    }\n    if (legend.y > 3) {\n      legend.y = 1.02;\n      legend.yanchor = 'bottom';\n    } else if (legend.y < -2) {\n      legend.y = -0.02;\n      legend.yanchor = 'top';\n    }\n  }\n\n  // clean plot title\n  cleanTitle(layout);\n\n  /*\n   * Moved from rotate -> orbit for dragmode\n   */\n  if (layout.dragmode === 'rotate') layout.dragmode = 'orbit';\n\n  // sanitize rgb(fractions) and rgba(fractions) that old tinycolor\n  // supported, but new tinycolor does not because they're not valid css\n  Color.clean(layout);\n\n  // clean the layout container in layout.template\n  if (layout.template && layout.template.layout) {\n    exports.cleanLayout(layout.template.layout);\n  }\n  return layout;\n};\nfunction cleanAxRef(container, attr) {\n  var valIn = container[attr];\n  var axLetter = attr.charAt(0);\n  if (valIn && valIn !== 'paper') {\n    container[attr] = cleanId(valIn, axLetter, true);\n  }\n}\n\n/**\n * Cleans up old title attribute structure (flat) in favor of the new one (nested).\n *\n * @param {Object} titleContainer - an object potentially including deprecated title attributes\n */\nfunction cleanTitle(titleContainer) {\n  if (titleContainer) {\n    // title -> title.text\n    // (although title used to be a string attribute,\n    // numbers are accepted as well)\n    if (typeof titleContainer.title === 'string' || typeof titleContainer.title === 'number') {\n      titleContainer.title = {\n        text: titleContainer.title\n      };\n    }\n    rewireAttr('titlefont', 'font');\n    rewireAttr('titleposition', 'position');\n    rewireAttr('titleside', 'side');\n    rewireAttr('titleoffset', 'offset');\n  }\n  function rewireAttr(oldAttrName, newAttrName) {\n    var oldAttrSet = titleContainer[oldAttrName];\n    var newAttrSet = titleContainer.title && titleContainer.title[newAttrName];\n    if (oldAttrSet && !newAttrSet) {\n      // Ensure title object exists\n      if (!titleContainer.title) {\n        titleContainer.title = {};\n      }\n      titleContainer.title[newAttrName] = titleContainer[oldAttrName];\n      delete titleContainer[oldAttrName];\n    }\n  }\n}\n\n/*\n * cleanData: Make a few changes to the data for backward compatibility\n * before it gets used for anything. Modifies the data traces users provide.\n *\n * Important: if you're going to add something here that modifies a data array,\n * update it in place so the new array === the old one.\n */\nexports.cleanData = function (data) {\n  for (var tracei = 0; tracei < data.length; tracei++) {\n    var trace = data[tracei];\n    var i;\n\n    // use xbins to bin data in x, and ybins to bin data in y\n    if (trace.type === 'histogramy' && 'xbins' in trace && !('ybins' in trace)) {\n      trace.ybins = trace.xbins;\n      delete trace.xbins;\n    }\n\n    // error_y.opacity is obsolete - merge into color\n    if (trace.error_y && 'opacity' in trace.error_y) {\n      var dc = Color.defaults;\n      var yeColor = trace.error_y.color || (traceIs(trace, 'bar') ? Color.defaultLine : dc[tracei % dc.length]);\n      trace.error_y.color = Color.addOpacity(Color.rgb(yeColor), Color.opacity(yeColor) * trace.error_y.opacity);\n      delete trace.error_y.opacity;\n    }\n\n    // convert bardir to orientation, and put the data into\n    // the axes it's eventually going to be used with\n    if ('bardir' in trace) {\n      if (trace.bardir === 'h' && (traceIs(trace, 'bar') || trace.type.substr(0, 9) === 'histogram')) {\n        trace.orientation = 'h';\n        exports.swapXYData(trace);\n      }\n      delete trace.bardir;\n    }\n\n    // now we have only one 1D histogram type, and whether\n    // it uses x or y data depends on trace.orientation\n    if (trace.type === 'histogramy') exports.swapXYData(trace);\n    if (trace.type === 'histogramx' || trace.type === 'histogramy') {\n      trace.type = 'histogram';\n    }\n\n    // scl->scale, reversescl->reversescale\n    if ('scl' in trace && !('colorscale' in trace)) {\n      trace.colorscale = trace.scl;\n      delete trace.scl;\n    }\n    if ('reversescl' in trace && !('reversescale' in trace)) {\n      trace.reversescale = trace.reversescl;\n      delete trace.reversescl;\n    }\n\n    // axis ids x1 -> x, y1-> y\n    if (trace.xaxis) trace.xaxis = cleanId(trace.xaxis, 'x');\n    if (trace.yaxis) trace.yaxis = cleanId(trace.yaxis, 'y');\n\n    // scene ids scene1 -> scene\n    if (traceIs(trace, 'gl3d') && trace.scene) {\n      trace.scene = Plots.subplotsRegistry.gl3d.cleanId(trace.scene);\n    }\n    if (!traceIs(trace, 'pie-like') && !traceIs(trace, 'bar-like')) {\n      if (Array.isArray(trace.textposition)) {\n        for (i = 0; i < trace.textposition.length; i++) {\n          trace.textposition[i] = cleanTextPosition(trace.textposition[i]);\n        }\n      } else if (trace.textposition) {\n        trace.textposition = cleanTextPosition(trace.textposition);\n      }\n    }\n\n    // fix typo in colorscale definition\n    var _module = Registry.getModule(trace);\n    if (_module && _module.colorbar) {\n      var containerName = _module.colorbar.container;\n      var container = containerName ? trace[containerName] : trace;\n      if (container && container.colorscale) {\n        if (container.colorscale === 'YIGnBu') container.colorscale = 'YlGnBu';\n        if (container.colorscale === 'YIOrRd') container.colorscale = 'YlOrRd';\n      }\n    }\n\n    // fix typo in surface 'highlight*' definitions\n    if (trace.type === 'surface' && Lib.isPlainObject(trace.contours)) {\n      var dims = ['x', 'y', 'z'];\n      for (i = 0; i < dims.length; i++) {\n        var opts = trace.contours[dims[i]];\n        if (!Lib.isPlainObject(opts)) continue;\n        if (opts.highlightColor) {\n          opts.highlightcolor = opts.highlightColor;\n          delete opts.highlightColor;\n        }\n        if (opts.highlightWidth) {\n          opts.highlightwidth = opts.highlightWidth;\n          delete opts.highlightWidth;\n        }\n      }\n    }\n\n    // fixes from converting finance from transforms to real trace types\n    if (trace.type === 'candlestick' || trace.type === 'ohlc') {\n      var increasingShowlegend = (trace.increasing || {}).showlegend !== false;\n      var decreasingShowlegend = (trace.decreasing || {}).showlegend !== false;\n      var increasingName = cleanFinanceDir(trace.increasing);\n      var decreasingName = cleanFinanceDir(trace.decreasing);\n\n      // now figure out something smart to do with the separate direction\n      // names we removed\n      if (increasingName !== false && decreasingName !== false) {\n        // both sub-names existed: base name previously had no effect\n        // so ignore it and try to find a shared part of the sub-names\n\n        var newName = commonPrefix(increasingName, decreasingName, increasingShowlegend, decreasingShowlegend);\n        // if no common part, leave whatever name was (or wasn't) there\n        if (newName) trace.name = newName;\n      } else if ((increasingName || decreasingName) && !trace.name) {\n        // one sub-name existed but not the base name - just use the sub-name\n        trace.name = increasingName || decreasingName;\n      }\n    }\n\n    // transforms backward compatibility fixes\n    if (Array.isArray(trace.transforms)) {\n      var transforms = trace.transforms;\n      for (i = 0; i < transforms.length; i++) {\n        var transform = transforms[i];\n        if (!Lib.isPlainObject(transform)) continue;\n        switch (transform.type) {\n          case 'filter':\n            if (transform.filtersrc) {\n              transform.target = transform.filtersrc;\n              delete transform.filtersrc;\n            }\n            if (transform.calendar) {\n              if (!transform.valuecalendar) {\n                transform.valuecalendar = transform.calendar;\n              }\n              delete transform.calendar;\n            }\n            break;\n          case 'groupby':\n            // Name has changed from `style` to `styles`, so use `style` but prefer `styles`:\n            transform.styles = transform.styles || transform.style;\n            if (transform.styles && !Array.isArray(transform.styles)) {\n              var prevStyles = transform.styles;\n              var styleKeys = Object.keys(prevStyles);\n              transform.styles = [];\n              for (var j = 0; j < styleKeys.length; j++) {\n                transform.styles.push({\n                  target: styleKeys[j],\n                  value: prevStyles[styleKeys[j]]\n                });\n              }\n            }\n            break;\n        }\n      }\n    }\n\n    // prune empty containers made before the new nestedProperty\n    if (emptyContainer(trace, 'line')) delete trace.line;\n    if ('marker' in trace) {\n      if (emptyContainer(trace.marker, 'line')) delete trace.marker.line;\n      if (emptyContainer(trace, 'marker')) delete trace.marker;\n    }\n\n    // sanitize rgb(fractions) and rgba(fractions) that old tinycolor\n    // supported, but new tinycolor does not because they're not valid css\n    Color.clean(trace);\n\n    // remove obsolete autobin(x|y) attributes, but only if true\n    // if false, this needs to happen in Histogram.calc because it\n    // can be a one-time autobin so we need to know the results before\n    // we can push them back into the trace.\n    if (trace.autobinx) {\n      delete trace.autobinx;\n      delete trace.xbins;\n    }\n    if (trace.autobiny) {\n      delete trace.autobiny;\n      delete trace.ybins;\n    }\n    cleanTitle(trace);\n    if (trace.colorbar) cleanTitle(trace.colorbar);\n    if (trace.marker && trace.marker.colorbar) cleanTitle(trace.marker.colorbar);\n    if (trace.line && trace.line.colorbar) cleanTitle(trace.line.colorbar);\n    if (trace.aaxis) cleanTitle(trace.aaxis);\n    if (trace.baxis) cleanTitle(trace.baxis);\n  }\n};\nfunction cleanFinanceDir(dirContainer) {\n  if (!Lib.isPlainObject(dirContainer)) return false;\n  var dirName = dirContainer.name;\n  delete dirContainer.name;\n  delete dirContainer.showlegend;\n  return (typeof dirName === 'string' || typeof dirName === 'number') && String(dirName);\n}\nfunction commonPrefix(name1, name2, show1, show2) {\n  // if only one is shown in the legend, use that\n  if (show1 && !show2) return name1;\n  if (show2 && !show1) return name2;\n\n  // if both or neither are in the legend, check if one is blank (or whitespace)\n  // and use the other one\n  // note that hover labels can still use the name even if the legend doesn't\n  if (!name1.trim()) return name2;\n  if (!name2.trim()) return name1;\n  var minLen = Math.min(name1.length, name2.length);\n  var i;\n  for (i = 0; i < minLen; i++) {\n    if (name1.charAt(i) !== name2.charAt(i)) break;\n  }\n  var out = name1.substr(0, i);\n  return out.trim();\n}\n\n// textposition - support partial attributes (ie just 'top')\n// and incorrect use of middle / center etc.\nfunction cleanTextPosition(textposition) {\n  var posY = 'middle';\n  var posX = 'center';\n  if (typeof textposition === 'string') {\n    if (textposition.indexOf('top') !== -1) posY = 'top';else if (textposition.indexOf('bottom') !== -1) posY = 'bottom';\n    if (textposition.indexOf('left') !== -1) posX = 'left';else if (textposition.indexOf('right') !== -1) posX = 'right';\n  }\n  return posY + ' ' + posX;\n}\nfunction emptyContainer(outer, innerStr) {\n  return innerStr in outer && typeof outer[innerStr] === 'object' && Object.keys(outer[innerStr]).length === 0;\n}\n\n// swap all the data and data attributes associated with x and y\nexports.swapXYData = function (trace) {\n  var i;\n  Lib.swapAttrs(trace, ['?', '?0', 'd?', '?bins', 'nbins?', 'autobin?', '?src', 'error_?']);\n  if (Array.isArray(trace.z) && Array.isArray(trace.z[0])) {\n    if (trace.transpose) delete trace.transpose;else trace.transpose = true;\n  }\n  if (trace.error_x && trace.error_y) {\n    var errorY = trace.error_y;\n    var copyYstyle = 'copy_ystyle' in errorY ? errorY.copy_ystyle : !(errorY.color || errorY.thickness || errorY.width);\n    Lib.swapAttrs(trace, ['error_?.copy_ystyle']);\n    if (copyYstyle) {\n      Lib.swapAttrs(trace, ['error_?.color', 'error_?.thickness', 'error_?.width']);\n    }\n  }\n  if (typeof trace.hoverinfo === 'string') {\n    var hoverInfoParts = trace.hoverinfo.split('+');\n    for (i = 0; i < hoverInfoParts.length; i++) {\n      if (hoverInfoParts[i] === 'x') hoverInfoParts[i] = 'y';else if (hoverInfoParts[i] === 'y') hoverInfoParts[i] = 'x';\n    }\n    trace.hoverinfo = hoverInfoParts.join('+');\n  }\n};\n\n// coerce traceIndices input to array of trace indices\nexports.coerceTraceIndices = function (gd, traceIndices) {\n  if (isNumeric(traceIndices)) {\n    return [traceIndices];\n  } else if (!Array.isArray(traceIndices) || !traceIndices.length) {\n    return gd.data.map(function (_, i) {\n      return i;\n    });\n  } else if (Array.isArray(traceIndices)) {\n    var traceIndicesOut = [];\n    for (var i = 0; i < traceIndices.length; i++) {\n      if (Lib.isIndex(traceIndices[i], gd.data.length)) {\n        traceIndicesOut.push(traceIndices[i]);\n      } else {\n        Lib.warn('trace index (', traceIndices[i], ') is not a number or is out of bounds');\n      }\n    }\n    return traceIndicesOut;\n  }\n  return traceIndices;\n};\n\n/**\n * Manages logic around array container item creation / deletion / update\n * that nested property alone can't handle.\n *\n * @param {Object} np\n *  nested property of update attribute string about trace or layout object\n * @param {*} newVal\n *  update value passed to restyle / relayout / update\n * @param {Object} undoit\n *  undo hash (N.B. undoit may be mutated here).\n *\n */\nexports.manageArrayContainers = function (np, newVal, undoit) {\n  var obj = np.obj;\n  var parts = np.parts;\n  var pLength = parts.length;\n  var pLast = parts[pLength - 1];\n  var pLastIsNumber = isNumeric(pLast);\n  if (pLastIsNumber && newVal === null) {\n    // delete item\n\n    // Clear item in array container when new value is null\n    var contPath = parts.slice(0, pLength - 1).join('.');\n    var cont = Lib.nestedProperty(obj, contPath).get();\n    cont.splice(pLast, 1);\n\n    // Note that nested property clears null / undefined at end of\n    // array container, but not within them.\n  } else if (pLastIsNumber && np.get() === undefined) {\n    // create item\n\n    // When adding a new item, make sure undo command will remove it\n    if (np.get() === undefined) undoit[np.astr] = null;\n    np.set(newVal);\n  } else {\n    // update item\n\n    // If the last part of attribute string isn't a number,\n    // np.set is all we need.\n    np.set(newVal);\n  }\n};\n\n/*\n * Match the part to strip off to turn an attribute into its parent\n * really it should be either '.some_characters' or '[number]'\n * but we're a little more permissive here and match either\n * '.not_brackets_or_dot' or '[not_brackets_or_dot]'\n */\nvar ATTR_TAIL_RE = /(\\.[^\\[\\]\\.]+|\\[[^\\[\\]\\.]+\\])$/;\nfunction getParent(attr) {\n  var tail = attr.search(ATTR_TAIL_RE);\n  if (tail > 0) return attr.substr(0, tail);\n}\n\n/*\n * hasParent: does an attribute object contain a parent of the given attribute?\n * for example, given 'images[2].x' do we also have 'images' or 'images[2]'?\n *\n * @param {Object} aobj\n *  update object, whose keys are attribute strings and values are their new settings\n * @param {string} attr\n *  the attribute string to test against\n * @returns {Boolean}\n *  is a parent of attr present in aobj?\n */\nexports.hasParent = function (aobj, attr) {\n  var attrParent = getParent(attr);\n  while (attrParent) {\n    if (attrParent in aobj) return true;\n    attrParent = getParent(attrParent);\n  }\n  return false;\n};\n\n/**\n * Empty out types for all axes containing these traces so we auto-set them again\n *\n * @param {object} gd\n * @param {[integer]} traces: trace indices to search for axes to clear the types of\n * @param {object} layoutUpdate: any update being done concurrently to the layout,\n *   which may supercede clearing the axis types\n */\nvar axLetters = ['x', 'y', 'z'];\nexports.clearAxisTypes = function (gd, traces, layoutUpdate) {\n  for (var i = 0; i < traces.length; i++) {\n    var trace = gd._fullData[i];\n    for (var j = 0; j < 3; j++) {\n      var ax = getFromTrace(gd, trace, axLetters[j]);\n\n      // do not clear log type - that's never an auto result so must have been intentional\n      if (ax && ax.type !== 'log') {\n        var axAttr = ax._name;\n        var sceneName = ax._id.substr(1);\n        if (sceneName.substr(0, 5) === 'scene') {\n          if (layoutUpdate[sceneName] !== undefined) continue;\n          axAttr = sceneName + '.' + axAttr;\n        }\n        var typeAttr = axAttr + '.type';\n        if (layoutUpdate[axAttr] === undefined && layoutUpdate[typeAttr] === undefined) {\n          Lib.nestedProperty(gd.layout, typeAttr).set(null);\n        }\n      }\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 10641:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_989064__) {\n\n\"use strict\";\n\n\nvar main = __nested_webpack_require_989064__(72391);\nexports._doPlot = main._doPlot;\nexports.newPlot = main.newPlot;\nexports.restyle = main.restyle;\nexports.relayout = main.relayout;\nexports.redraw = main.redraw;\nexports.update = main.update;\nexports._guiRestyle = main._guiRestyle;\nexports._guiRelayout = main._guiRelayout;\nexports._guiUpdate = main._guiUpdate;\nexports._storeDirectGUIEdit = main._storeDirectGUIEdit;\nexports.react = main.react;\nexports.extendTraces = main.extendTraces;\nexports.prependTraces = main.prependTraces;\nexports.addTraces = main.addTraces;\nexports.deleteTraces = main.deleteTraces;\nexports.moveTraces = main.moveTraces;\nexports.purge = main.purge;\nexports.addFrames = main.addFrames;\nexports.deleteFrames = main.deleteFrames;\nexports.animate = main.animate;\nexports.setPlotConfig = main.setPlotConfig;\nexports.toImage = __nested_webpack_require_989064__(403);\nexports.validate = __nested_webpack_require_989064__(84936);\nexports.downloadImage = __nested_webpack_require_989064__(7239);\nvar templateApi = __nested_webpack_require_989064__(96318);\nexports.makeTemplate = templateApi.makeTemplate;\nexports.validateTemplate = templateApi.validateTemplate;\n\n/***/ }),\n\n/***/ 6611:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_990289__) {\n\n\"use strict\";\n\n\nvar isPlainObject = __nested_webpack_require_990289__(41965);\nvar noop = __nested_webpack_require_990289__(64213);\nvar Loggers = __nested_webpack_require_990289__(47769);\nvar sorterAsc = (__nested_webpack_require_990289__(65888).sorterAsc);\nvar Registry = __nested_webpack_require_990289__(73972);\nexports.containerArrayMatch = __nested_webpack_require_990289__(14458);\nvar isAddVal = exports.isAddVal = function isAddVal(val) {\n  return val === 'add' || isPlainObject(val);\n};\nvar isRemoveVal = exports.isRemoveVal = function isRemoveVal(val) {\n  return val === null || val === 'remove';\n};\n\n/*\n * applyContainerArrayChanges: for managing arrays of layout components in relayout\n * handles them all with a consistent interface.\n *\n * Here are the supported actions -> relayout calls -> edits we get here\n * (as prepared in _relayout):\n *\n * add an empty obj -> {'annotations[2]': 'add'} -> {2: {'': 'add'}}\n * add a specific obj -> {'annotations[2]': {attrs}} -> {2: {'': {attrs}}}\n * delete an obj -> {'annotations[2]': 'remove'} -> {2: {'': 'remove'}}\n *               -> {'annotations[2]': null} -> {2: {'': null}}\n * delete the whole array -> {'annotations': 'remove'} -> {'': {'': 'remove'}}\n *                        -> {'annotations': null} -> {'': {'': null}}\n * edit an object -> {'annotations[2].text': 'boo'} -> {2: {'text': 'boo'}}\n *\n * You can combine many edits to different objects. Objects are added and edited\n * in ascending order, then removed in descending order.\n * For example, starting with [a, b, c], if you want to:\n * - replace b with d:\n *   {'annotations[1]': d, 'annotations[2]': null} (b is item 2 after adding d)\n * - add a new item d between a and b, and edit b:\n *    {'annotations[1]': d, 'annotations[2].x': newX} (b is item 2 after adding d)\n * - delete b and edit c:\n *    {'annotations[1]': null, 'annotations[2].x': newX} (c is edited before b is removed)\n *\n * You CANNOT combine adding/deleting an item at index `i` with edits to the same index `i`\n * You CANNOT combine replacing/deleting the whole array with anything else (for the same array).\n *\n * @param {HTMLDivElement} gd\n *  the DOM element of the graph container div\n * @param {Lib.nestedProperty} componentType: the array we are editing\n * @param {Object} edits\n *  the changes to make; keys are indices to edit, values are themselves objects:\n *  {attr: newValue} of changes to make to that index (with add/remove behavior\n *  in special values of the empty attr)\n * @param {Object} flags\n *  the flags for which actions we're going to perform to display these (and\n *  any other) changes. If we're already `recalc`ing, we don't need to redraw\n *  individual items\n * @param {function} _nestedProperty\n *  a (possibly modified for gui edits) nestedProperty constructor\n *  The modified version takes a 3rd argument, for a prefix to the attribute\n *  string necessary for storing GUI edits\n *\n * @returns {bool} `true` if it managed to complete drawing of the changes\n *  `false` would mean the parent should replot.\n */\nexports.applyContainerArrayChanges = function applyContainerArrayChanges(gd, np, edits, flags, _nestedProperty) {\n  var componentType = np.astr;\n  var supplyComponentDefaults = Registry.getComponentMethod(componentType, 'supplyLayoutDefaults');\n  var draw = Registry.getComponentMethod(componentType, 'draw');\n  var drawOne = Registry.getComponentMethod(componentType, 'drawOne');\n  var replotLater = flags.replot || flags.recalc || supplyComponentDefaults === noop || draw === noop;\n  var layout = gd.layout;\n  var fullLayout = gd._fullLayout;\n  if (edits['']) {\n    if (Object.keys(edits).length > 1) {\n      Loggers.warn('Full array edits are incompatible with other edits', componentType);\n    }\n    var fullVal = edits[''][''];\n    if (isRemoveVal(fullVal)) np.set(null);else if (Array.isArray(fullVal)) np.set(fullVal);else {\n      Loggers.warn('Unrecognized full array edit value', componentType, fullVal);\n      return true;\n    }\n    if (replotLater) return false;\n    supplyComponentDefaults(layout, fullLayout);\n    draw(gd);\n    return true;\n  }\n  var componentNums = Object.keys(edits).map(Number).sort(sorterAsc);\n  var componentArrayIn = np.get();\n  var componentArray = componentArrayIn || [];\n  // componentArrayFull is used just to keep splices in line between\n  // full and input arrays, so private keys can be copied over after\n  // redoing supplyDefaults\n  // TODO: this assumes componentArray is in gd.layout - which will not be\n  // true after we extend this to restyle\n  var componentArrayFull = _nestedProperty(fullLayout, componentType).get();\n  var deletes = [];\n  var firstIndexChange = -1;\n  var maxIndex = componentArray.length;\n  var i;\n  var j;\n  var componentNum;\n  var objEdits;\n  var objKeys;\n  var objVal;\n  var adding, prefix;\n\n  // first make the add and edit changes\n  for (i = 0; i < componentNums.length; i++) {\n    componentNum = componentNums[i];\n    objEdits = edits[componentNum];\n    objKeys = Object.keys(objEdits);\n    objVal = objEdits[''], adding = isAddVal(objVal);\n    if (componentNum < 0 || componentNum > componentArray.length - (adding ? 0 : 1)) {\n      Loggers.warn('index out of range', componentType, componentNum);\n      continue;\n    }\n    if (objVal !== undefined) {\n      if (objKeys.length > 1) {\n        Loggers.warn('Insertion & removal are incompatible with edits to the same index.', componentType, componentNum);\n      }\n      if (isRemoveVal(objVal)) {\n        deletes.push(componentNum);\n      } else if (adding) {\n        if (objVal === 'add') objVal = {};\n        componentArray.splice(componentNum, 0, objVal);\n        if (componentArrayFull) componentArrayFull.splice(componentNum, 0, {});\n      } else {\n        Loggers.warn('Unrecognized full object edit value', componentType, componentNum, objVal);\n      }\n      if (firstIndexChange === -1) firstIndexChange = componentNum;\n    } else {\n      for (j = 0; j < objKeys.length; j++) {\n        prefix = componentType + '[' + componentNum + '].';\n        _nestedProperty(componentArray[componentNum], objKeys[j], prefix).set(objEdits[objKeys[j]]);\n      }\n    }\n  }\n\n  // now do deletes\n  for (i = deletes.length - 1; i >= 0; i--) {\n    componentArray.splice(deletes[i], 1);\n    // TODO: this drops private keys that had been stored in componentArrayFull\n    // does this have any ill effects?\n    if (componentArrayFull) componentArrayFull.splice(deletes[i], 1);\n  }\n  if (!componentArray.length) np.set(null);else if (!componentArrayIn) np.set(componentArray);\n  if (replotLater) return false;\n  supplyComponentDefaults(layout, fullLayout);\n\n  // finally draw all the components we need to\n  // if we added or removed any, redraw all after it\n  if (drawOne !== noop) {\n    var indicesToDraw;\n    if (firstIndexChange === -1) {\n      // there's no re-indexing to do, so only redraw components that changed\n      indicesToDraw = componentNums;\n    } else {\n      // in case the component array was shortened, we still need do call\n      // drawOne on the latter items so they get properly removed\n      maxIndex = Math.max(componentArray.length, maxIndex);\n      indicesToDraw = [];\n      for (i = 0; i < componentNums.length; i++) {\n        componentNum = componentNums[i];\n        if (componentNum >= firstIndexChange) break;\n        indicesToDraw.push(componentNum);\n      }\n      for (i = firstIndexChange; i < maxIndex; i++) {\n        indicesToDraw.push(i);\n      }\n    }\n    for (i = 0; i < indicesToDraw.length; i++) {\n      drawOne(gd, indicesToDraw[i]);\n    }\n  } else draw(gd);\n  return true;\n};\n\n/***/ }),\n\n/***/ 72391:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_997876__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_997876__(39898);\nvar isNumeric = __nested_webpack_require_997876__(92770);\nvar hasHover = __nested_webpack_require_997876__(57035);\nvar Lib = __nested_webpack_require_997876__(71828);\nvar nestedProperty = Lib.nestedProperty;\nvar Events = __nested_webpack_require_997876__(11086);\nvar Queue = __nested_webpack_require_997876__(10847);\nvar Registry = __nested_webpack_require_997876__(73972);\nvar PlotSchema = __nested_webpack_require_997876__(86281);\nvar Plots = __nested_webpack_require_997876__(74875);\nvar Axes = __nested_webpack_require_997876__(89298);\nvar Drawing = __nested_webpack_require_997876__(91424);\nvar Color = __nested_webpack_require_997876__(7901);\nvar initInteractions = (__nested_webpack_require_997876__(4305).initInteractions);\nvar xmlnsNamespaces = __nested_webpack_require_997876__(77922);\nvar clearOutline = (__nested_webpack_require_997876__(47322).clearOutline);\nvar dfltConfig = (__nested_webpack_require_997876__(72075).dfltConfig);\nvar manageArrays = __nested_webpack_require_997876__(6611);\nvar helpers = __nested_webpack_require_997876__(58377);\nvar subroutines = __nested_webpack_require_997876__(61549);\nvar editTypes = __nested_webpack_require_997876__(30962);\nvar AX_NAME_PATTERN = (__nested_webpack_require_997876__(85555).AX_NAME_PATTERN);\nvar numericNameWarningCount = 0;\nvar numericNameWarningCountLimit = 5;\n\n/**\n * Internal plot-creation function\n *\n * @param {string id or DOM element} gd\n *      the id or DOM element of the graph container div\n * @param {array of objects} data\n *      array of traces, containing the data and display information for each trace\n * @param {object} layout\n *      object describing the overall display of the plot,\n *      all the stuff that doesn't pertain to any individual trace\n * @param {object} config\n *      configuration options (see ./plot_config.js for more info)\n *\n * OR\n *\n * @param {string id or DOM element} gd\n *      the id or DOM element of the graph container div\n * @param {object} figure\n *      object containing `data`, `layout`, `config`, and `frames` members\n *\n */\nfunction _doPlot(gd, data, layout, config) {\n  var frames;\n  gd = Lib.getGraphDiv(gd);\n\n  // Events.init is idempotent and bails early if gd has already been init'd\n  Events.init(gd);\n  if (Lib.isPlainObject(data)) {\n    var obj = data;\n    data = obj.data;\n    layout = obj.layout;\n    config = obj.config;\n    frames = obj.frames;\n  }\n  var okToPlot = Events.triggerHandler(gd, 'plotly_beforeplot', [data, layout, config]);\n  if (okToPlot === false) return Promise.reject();\n\n  // if there's no data or layout, and this isn't yet a plotly plot\n  // container, log a warning to help plotly.js users debug\n  if (!data && !layout && !Lib.isPlotDiv(gd)) {\n    Lib.warn('Calling _doPlot as if redrawing ' + 'but this container doesn\\'t yet have a plot.', gd);\n  }\n  function addFrames() {\n    if (frames) {\n      return exports.addFrames(gd, frames);\n    }\n  }\n\n  // transfer configuration options to gd until we move over to\n  // a more OO like model\n  setPlotContext(gd, config);\n  if (!layout) layout = {};\n\n  // hook class for plots main container (in case of plotly.js\n  // this won't be #embedded-graph or .js-tab-contents)\n  d3.select(gd).classed('js-plotly-plot', true);\n\n  // off-screen getBoundingClientRect testing space,\n  // in #js-plotly-tester (and stored as Drawing.tester)\n  // so we can share cached text across tabs\n  Drawing.makeTester();\n\n  // collect promises for any async actions during plotting\n  // any part of the plotting code can push to gd._promises, then\n  // before we move to the next step, we check that they're all\n  // complete, and empty out the promise list again.\n  if (!Array.isArray(gd._promises)) gd._promises = [];\n  var graphWasEmpty = (gd.data || []).length === 0 && Array.isArray(data);\n\n  // if there is already data on the graph, append the new data\n  // if you only want to redraw, pass a non-array for data\n  if (Array.isArray(data)) {\n    helpers.cleanData(data);\n    if (graphWasEmpty) gd.data = data;else gd.data.push.apply(gd.data, data);\n\n    // for routines outside graph_obj that want a clean tab\n    // (rather than appending to an existing one) gd.empty\n    // is used to determine whether to make a new tab\n    gd.empty = false;\n  }\n  if (!gd.layout || graphWasEmpty) {\n    gd.layout = helpers.cleanLayout(layout);\n  }\n  Plots.supplyDefaults(gd);\n  var fullLayout = gd._fullLayout;\n  var hasCartesian = fullLayout._has('cartesian');\n\n  // so we don't try to re-call _doPlot from inside\n  // legend and colorbar, if margins changed\n  fullLayout._replotting = true;\n\n  // make or remake the framework if we need to\n  if (graphWasEmpty || fullLayout._shouldCreateBgLayer) {\n    makePlotFramework(gd);\n    if (fullLayout._shouldCreateBgLayer) {\n      delete fullLayout._shouldCreateBgLayer;\n    }\n  }\n\n  // clear gradient and pattern defs on each .plot call, because we know we'll loop through all traces\n  Drawing.initGradients(gd);\n  Drawing.initPatterns(gd);\n\n  // save initial show spikes once per graph\n  if (graphWasEmpty) Axes.saveShowSpikeInitial(gd);\n\n  // prepare the data and find the autorange\n\n  // generate calcdata, if we need to\n  // to force redoing calcdata, just delete it before calling _doPlot\n  var recalc = !gd.calcdata || gd.calcdata.length !== (gd._fullData || []).length;\n  if (recalc) Plots.doCalcdata(gd);\n\n  // in case it has changed, attach fullData traces to calcdata\n  for (var i = 0; i < gd.calcdata.length; i++) {\n    gd.calcdata[i][0].trace = gd._fullData[i];\n  }\n\n  // make the figure responsive\n  if (gd._context.responsive) {\n    if (!gd._responsiveChartHandler) {\n      // Keep a reference to the resize handler to purge it down the road\n      gd._responsiveChartHandler = function () {\n        if (!Lib.isHidden(gd)) Plots.resize(gd);\n      };\n\n      // Listen to window resize\n      window.addEventListener('resize', gd._responsiveChartHandler);\n    }\n  } else {\n    Lib.clearResponsive(gd);\n  }\n\n  /*\n   * start async-friendly code - now we're actually drawing things\n   */\n\n  var oldMargins = Lib.extendFlat({}, fullLayout._size);\n\n  // draw framework first so that margin-pushing\n  // components can position themselves correctly\n  var drawFrameworkCalls = 0;\n  function drawFramework() {\n    var basePlotModules = fullLayout._basePlotModules;\n    for (var i = 0; i < basePlotModules.length; i++) {\n      if (basePlotModules[i].drawFramework) {\n        basePlotModules[i].drawFramework(gd);\n      }\n    }\n    if (!fullLayout._glcanvas && fullLayout._has('gl')) {\n      fullLayout._glcanvas = fullLayout._glcontainer.selectAll('.gl-canvas').data([{\n        key: 'contextLayer',\n        context: true,\n        pick: false\n      }, {\n        key: 'focusLayer',\n        context: false,\n        pick: false\n      }, {\n        key: 'pickLayer',\n        context: false,\n        pick: true\n      }], function (d) {\n        return d.key;\n      });\n      fullLayout._glcanvas.enter().append('canvas').attr('class', function (d) {\n        return 'gl-canvas gl-canvas-' + d.key.replace('Layer', '');\n      }).style({\n        position: 'absolute',\n        top: 0,\n        left: 0,\n        overflow: 'visible',\n        'pointer-events': 'none'\n      });\n    }\n    var plotGlPixelRatio = gd._context.plotGlPixelRatio;\n    if (fullLayout._glcanvas) {\n      fullLayout._glcanvas.attr('width', fullLayout.width * plotGlPixelRatio).attr('height', fullLayout.height * plotGlPixelRatio).style('width', fullLayout.width + 'px').style('height', fullLayout.height + 'px');\n      var regl = fullLayout._glcanvas.data()[0].regl;\n      if (regl) {\n        // Unfortunately, this can happen when relayouting to large\n        // width/height on some browsers.\n        if (Math.floor(fullLayout.width * plotGlPixelRatio) !== regl._gl.drawingBufferWidth || Math.floor(fullLayout.height * plotGlPixelRatio) !== regl._gl.drawingBufferHeight) {\n          var msg = 'WebGL context buffer and canvas dimensions do not match due to browser/WebGL bug.';\n          if (drawFrameworkCalls) {\n            Lib.error(msg);\n          } else {\n            Lib.log(msg + ' Clearing graph and plotting again.');\n            Plots.cleanPlot([], {}, gd._fullData, fullLayout);\n            Plots.supplyDefaults(gd);\n            fullLayout = gd._fullLayout;\n            Plots.doCalcdata(gd);\n            drawFrameworkCalls++;\n            return drawFramework();\n          }\n        }\n      }\n    }\n    if (fullLayout.modebar.orientation === 'h') {\n      fullLayout._modebardiv.style('height', null).style('width', '100%');\n    } else {\n      fullLayout._modebardiv.style('width', null).style('height', fullLayout.height + 'px');\n    }\n    return Plots.previousPromises(gd);\n  }\n\n  // draw anything that can affect margins.\n  function marginPushers() {\n    // First reset the list of things that are allowed to change the margins\n    // So any deleted traces or components will be wiped out of the\n    // automargin calculation.\n    // This means *every* margin pusher must be listed here, even if it\n    // doesn't actually try to push the margins until later.\n    Plots.clearAutoMarginIds(gd);\n    subroutines.drawMarginPushers(gd);\n    Axes.allowAutoMargin(gd);\n\n    // TODO can this be moved elsewhere?\n    if (fullLayout._has('pie')) {\n      var fullData = gd._fullData;\n      for (var i = 0; i < fullData.length; i++) {\n        var trace = fullData[i];\n        if (trace.type === 'pie' && trace.automargin) {\n          Plots.allowAutoMargin(gd, 'pie.' + trace.uid + '.automargin');\n        }\n      }\n    }\n    Plots.doAutoMargin(gd);\n    return Plots.previousPromises(gd);\n  }\n\n  // in case the margins changed, draw margin pushers again\n  function marginPushersAgain() {\n    if (!Plots.didMarginChange(oldMargins, fullLayout._size)) return;\n    return Lib.syncOrAsync([marginPushers, subroutines.layoutStyles], gd);\n  }\n  function positionAndAutorange() {\n    if (!recalc) {\n      doAutoRangeAndConstraints();\n      return;\n    }\n\n    // TODO: autosize extra for text markers and images\n    // see https://github.com/plotly/plotly.js/issues/1111\n    return Lib.syncOrAsync([Registry.getComponentMethod('shapes', 'calcAutorange'), Registry.getComponentMethod('annotations', 'calcAutorange'), doAutoRangeAndConstraints], gd);\n  }\n  function doAutoRangeAndConstraints() {\n    if (gd._transitioning) return;\n    subroutines.doAutoRangeAndConstraints(gd);\n\n    // store initial ranges *after* enforcing constraints, otherwise\n    // we will never look like we're at the initial ranges\n    if (graphWasEmpty) Axes.saveRangeInitial(gd);\n\n    // this one is different from shapes/annotations calcAutorange\n    // the others incorporate those components into ax._extremes,\n    // this one actually sets the ranges in rangesliders.\n    Registry.getComponentMethod('rangeslider', 'calcAutorange')(gd);\n  }\n\n  // draw ticks, titles, and calculate axis scaling (._b, ._m)\n  function drawAxes() {\n    return Axes.draw(gd, graphWasEmpty ? '' : 'redraw');\n  }\n  var seq = [Plots.previousPromises, addFrames, drawFramework, marginPushers, marginPushersAgain];\n  if (hasCartesian) seq.push(positionAndAutorange);\n  seq.push(subroutines.layoutStyles);\n  if (hasCartesian) {\n    seq.push(drawAxes, function insideTickLabelsAutorange(gd) {\n      if (gd._fullLayout._insideTickLabelsAutorange) {\n        relayout(gd, gd._fullLayout._insideTickLabelsAutorange).then(function () {\n          gd._fullLayout._insideTickLabelsAutorange = undefined;\n        });\n      }\n    });\n  }\n  seq.push(subroutines.drawData, subroutines.finalDraw, initInteractions, Plots.addLinks, Plots.rehover, Plots.redrag, Plots.reselect,\n  // TODO: doAutoMargin is only needed here for axis automargin, which\n  // happens outside of marginPushers where all the other automargins are\n  // calculated. Would be much better to separate margin calculations from\n  // component drawing - see https://github.com/plotly/plotly.js/issues/2704\n  Plots.doAutoMargin, saveRangeInitialForInsideTickLabels, Plots.previousPromises);\n  function saveRangeInitialForInsideTickLabels(gd) {\n    if (gd._fullLayout._insideTickLabelsAutorange) {\n      if (graphWasEmpty) Axes.saveRangeInitial(gd, true);\n    }\n  }\n\n  // even if everything we did was synchronous, return a promise\n  // so that the caller doesn't care which route we took\n  var plotDone = Lib.syncOrAsync(seq, gd);\n  if (!plotDone || !plotDone.then) plotDone = Promise.resolve();\n  return plotDone.then(function () {\n    emitAfterPlot(gd);\n    return gd;\n  });\n}\nfunction emitAfterPlot(gd) {\n  var fullLayout = gd._fullLayout;\n  if (fullLayout._redrawFromAutoMarginCount) {\n    fullLayout._redrawFromAutoMarginCount--;\n  } else {\n    gd.emit('plotly_afterplot');\n  }\n}\nfunction setPlotConfig(obj) {\n  return Lib.extendFlat(dfltConfig, obj);\n}\nfunction setBackground(gd, bgColor) {\n  try {\n    gd._fullLayout._paper.style('background', bgColor);\n  } catch (e) {\n    Lib.error(e);\n  }\n}\nfunction opaqueSetBackground(gd, bgColor) {\n  var blend = Color.combine(bgColor, 'white');\n  setBackground(gd, blend);\n}\nfunction setPlotContext(gd, config) {\n  if (!gd._context) {\n    gd._context = Lib.extendDeep({}, dfltConfig);\n\n    // stash <base> href, used to make robust clipPath URLs\n    var base = d3.select('base');\n    gd._context._baseUrl = base.size() && base.attr('href') ? window.location.href.split('#')[0] : '';\n  }\n  var context = gd._context;\n  var i, keys, key;\n  if (config) {\n    keys = Object.keys(config);\n    for (i = 0; i < keys.length; i++) {\n      key = keys[i];\n      if (key === 'editable' || key === 'edits') continue;\n      if (key in context) {\n        if (key === 'setBackground' && config[key] === 'opaque') {\n          context[key] = opaqueSetBackground;\n        } else {\n          context[key] = config[key];\n        }\n      }\n    }\n\n    // map plot3dPixelRatio to plotGlPixelRatio for backward compatibility\n    if (config.plot3dPixelRatio && !context.plotGlPixelRatio) {\n      context.plotGlPixelRatio = context.plot3dPixelRatio;\n    }\n\n    // now deal with editable and edits - first editable overrides\n    // everything, then edits refines\n    var editable = config.editable;\n    if (editable !== undefined) {\n      // we're not going to *use* context.editable, we're only going to\n      // use context.edits... but keep it for the record\n      context.editable = editable;\n      keys = Object.keys(context.edits);\n      for (i = 0; i < keys.length; i++) {\n        context.edits[keys[i]] = editable;\n      }\n    }\n    if (config.edits) {\n      keys = Object.keys(config.edits);\n      for (i = 0; i < keys.length; i++) {\n        key = keys[i];\n        if (key in context.edits) {\n          context.edits[key] = config.edits[key];\n        }\n      }\n    }\n\n    // not part of the user-facing config options\n    context._exportedPlot = config._exportedPlot;\n  }\n\n  // staticPlot forces a bunch of others:\n  if (context.staticPlot) {\n    context.editable = false;\n    context.edits = {};\n    context.autosizable = false;\n    context.scrollZoom = false;\n    context.doubleClick = false;\n    context.showTips = false;\n    context.showLink = false;\n    context.displayModeBar = false;\n  }\n\n  // make sure hover-only devices have mode bar visible\n  if (context.displayModeBar === 'hover' && !hasHover) {\n    context.displayModeBar = true;\n  }\n\n  // default and fallback for setBackground\n  if (context.setBackground === 'transparent' || typeof context.setBackground !== 'function') {\n    context.setBackground = setBackground;\n  }\n\n  // Check if gd has a specified widht/height to begin with\n  context._hasZeroHeight = context._hasZeroHeight || gd.clientHeight === 0;\n  context._hasZeroWidth = context._hasZeroWidth || gd.clientWidth === 0;\n\n  // fill context._scrollZoom helper to help manage scrollZoom flaglist\n  var szIn = context.scrollZoom;\n  var szOut = context._scrollZoom = {};\n  if (szIn === true) {\n    szOut.cartesian = 1;\n    szOut.gl3d = 1;\n    szOut.geo = 1;\n    szOut.mapbox = 1;\n  } else if (typeof szIn === 'string') {\n    var parts = szIn.split('+');\n    for (i = 0; i < parts.length; i++) {\n      szOut[parts[i]] = 1;\n    }\n  } else if (szIn !== false) {\n    szOut.gl3d = 1;\n    szOut.geo = 1;\n    szOut.mapbox = 1;\n  }\n}\n\n// convenience function to force a full redraw, mostly for use by plotly.js\nfunction redraw(gd) {\n  gd = Lib.getGraphDiv(gd);\n  if (!Lib.isPlotDiv(gd)) {\n    throw new Error('This element is not a Plotly plot: ' + gd);\n  }\n  helpers.cleanData(gd.data);\n  helpers.cleanLayout(gd.layout);\n  gd.calcdata = undefined;\n  return exports._doPlot(gd).then(function () {\n    gd.emit('plotly_redraw');\n    return gd;\n  });\n}\n\n/**\n * Convenience function to make idempotent plot option obvious to users.\n *\n * @param gd\n * @param {Object[]} data\n * @param {Object} layout\n * @param {Object} config\n */\nfunction newPlot(gd, data, layout, config) {\n  gd = Lib.getGraphDiv(gd);\n\n  // remove gl contexts\n  Plots.cleanPlot([], {}, gd._fullData || [], gd._fullLayout || {});\n  Plots.purge(gd);\n  return exports._doPlot(gd, data, layout, config);\n}\n\n/**\n * Wrap negative indicies to their positive counterparts.\n *\n * @param {Number[]} indices An array of indices\n * @param {Number} maxIndex The maximum index allowable (arr.length - 1)\n */\nfunction positivifyIndices(indices, maxIndex) {\n  var parentLength = maxIndex + 1;\n  var positiveIndices = [];\n  var i;\n  var index;\n  for (i = 0; i < indices.length; i++) {\n    index = indices[i];\n    if (index < 0) {\n      positiveIndices.push(parentLength + index);\n    } else {\n      positiveIndices.push(index);\n    }\n  }\n  return positiveIndices;\n}\n\n/**\n * Ensures that an index array for manipulating gd.data is valid.\n *\n * Intended for use with addTraces, deleteTraces, and moveTraces.\n *\n * @param gd\n * @param indices\n * @param arrayName\n */\nfunction assertIndexArray(gd, indices, arrayName) {\n  var i, index;\n  for (i = 0; i < indices.length; i++) {\n    index = indices[i];\n\n    // validate that indices are indeed integers\n    if (index !== parseInt(index, 10)) {\n      throw new Error('all values in ' + arrayName + ' must be integers');\n    }\n\n    // check that all indices are in bounds for given gd.data array length\n    if (index >= gd.data.length || index < -gd.data.length) {\n      throw new Error(arrayName + ' must be valid indices for gd.data.');\n    }\n\n    // check that indices aren't repeated\n    if (indices.indexOf(index, i + 1) > -1 || index >= 0 && indices.indexOf(-gd.data.length + index) > -1 || index < 0 && indices.indexOf(gd.data.length + index) > -1) {\n      throw new Error('each index in ' + arrayName + ' must be unique.');\n    }\n  }\n}\n\n/**\n * Private function used by Plotly.moveTraces to check input args\n *\n * @param gd\n * @param currentIndices\n * @param newIndices\n */\nfunction checkMoveTracesArgs(gd, currentIndices, newIndices) {\n  // check that gd has attribute 'data' and 'data' is array\n  if (!Array.isArray(gd.data)) {\n    throw new Error('gd.data must be an array.');\n  }\n\n  // validate currentIndices array\n  if (typeof currentIndices === 'undefined') {\n    throw new Error('currentIndices is a required argument.');\n  } else if (!Array.isArray(currentIndices)) {\n    currentIndices = [currentIndices];\n  }\n  assertIndexArray(gd, currentIndices, 'currentIndices');\n\n  // validate newIndices array if it exists\n  if (typeof newIndices !== 'undefined' && !Array.isArray(newIndices)) {\n    newIndices = [newIndices];\n  }\n  if (typeof newIndices !== 'undefined') {\n    assertIndexArray(gd, newIndices, 'newIndices');\n  }\n\n  // check currentIndices and newIndices are the same length if newIdices exists\n  if (typeof newIndices !== 'undefined' && currentIndices.length !== newIndices.length) {\n    throw new Error('current and new indices must be of equal length.');\n  }\n}\n/**\n * A private function to reduce the type checking clutter in addTraces.\n *\n * @param gd\n * @param traces\n * @param newIndices\n */\nfunction checkAddTracesArgs(gd, traces, newIndices) {\n  var i, value;\n\n  // check that gd has attribute 'data' and 'data' is array\n  if (!Array.isArray(gd.data)) {\n    throw new Error('gd.data must be an array.');\n  }\n\n  // make sure traces exists\n  if (typeof traces === 'undefined') {\n    throw new Error('traces must be defined.');\n  }\n\n  // make sure traces is an array\n  if (!Array.isArray(traces)) {\n    traces = [traces];\n  }\n\n  // make sure each value in traces is an object\n  for (i = 0; i < traces.length; i++) {\n    value = traces[i];\n    if (typeof value !== 'object' || Array.isArray(value) || value === null) {\n      throw new Error('all values in traces array must be non-array objects');\n    }\n  }\n\n  // make sure we have an index for each trace\n  if (typeof newIndices !== 'undefined' && !Array.isArray(newIndices)) {\n    newIndices = [newIndices];\n  }\n  if (typeof newIndices !== 'undefined' && newIndices.length !== traces.length) {\n    throw new Error('if indices is specified, traces.length must equal indices.length');\n  }\n}\n\n/**\n * A private function to reduce the type checking clutter in spliceTraces.\n * Get all update Properties from gd.data. Validate inputs and outputs.\n * Used by prependTrace and extendTraces\n *\n * @param gd\n * @param update\n * @param indices\n * @param maxPoints\n */\nfunction assertExtendTracesArgs(gd, update, indices, maxPoints) {\n  var maxPointsIsObject = Lib.isPlainObject(maxPoints);\n  if (!Array.isArray(gd.data)) {\n    throw new Error('gd.data must be an array');\n  }\n  if (!Lib.isPlainObject(update)) {\n    throw new Error('update must be a key:value object');\n  }\n  if (typeof indices === 'undefined') {\n    throw new Error('indices must be an integer or array of integers');\n  }\n  assertIndexArray(gd, indices, 'indices');\n  for (var key in update) {\n    /*\n     * Verify that the attribute to be updated contains as many trace updates\n     * as indices. Failure must result in throw and no-op\n     */\n    if (!Array.isArray(update[key]) || update[key].length !== indices.length) {\n      throw new Error('attribute ' + key + ' must be an array of length equal to indices array length');\n    }\n\n    /*\n     * if maxPoints is an object it must match keys and array lengths of 'update' 1:1\n     */\n    if (maxPointsIsObject && (!(key in maxPoints) || !Array.isArray(maxPoints[key]) || maxPoints[key].length !== update[key].length)) {\n      throw new Error('when maxPoints is set as a key:value object it must contain a 1:1 ' + 'corrispondence with the keys and number of traces in the update object');\n    }\n  }\n}\n\n/**\n * A private function to reduce the type checking clutter in spliceTraces.\n *\n * @param {Object|HTMLDivElement} gd\n * @param {Object} update\n * @param {Number[]} indices\n * @param {Number||Object} maxPoints\n * @return {Object[]}\n */\nfunction getExtendProperties(gd, update, indices, maxPoints) {\n  var maxPointsIsObject = Lib.isPlainObject(maxPoints);\n  var updateProps = [];\n  var trace, target, prop, insert, maxp;\n\n  // allow scalar index to represent a single trace position\n  if (!Array.isArray(indices)) indices = [indices];\n\n  // negative indices are wrapped around to their positive value. Equivalent to python indexing.\n  indices = positivifyIndices(indices, gd.data.length - 1);\n\n  // loop through all update keys and traces and harvest validated data.\n  for (var key in update) {\n    for (var j = 0; j < indices.length; j++) {\n      /*\n       * Choose the trace indexed by the indices map argument and get the prop setter-getter\n       * instance that references the key and value for this particular trace.\n       */\n      trace = gd.data[indices[j]];\n      prop = nestedProperty(trace, key);\n\n      /*\n       * Target is the existing gd.data.trace.dataArray value like \"x\" or \"marker.size\"\n       * Target must exist as an Array to allow the extend operation to be performed.\n       */\n      target = prop.get();\n      insert = update[key][j];\n      if (!Lib.isArrayOrTypedArray(insert)) {\n        throw new Error('attribute: ' + key + ' index: ' + j + ' must be an array');\n      }\n      if (!Lib.isArrayOrTypedArray(target)) {\n        throw new Error('cannot extend missing or non-array attribute: ' + key);\n      }\n      if (target.constructor !== insert.constructor) {\n        throw new Error('cannot extend array with an array of a different type: ' + key);\n      }\n\n      /*\n       * maxPoints may be an object map or a scalar. If object select the key:value, else\n       * Use the scalar maxPoints for all key and trace combinations.\n       */\n      maxp = maxPointsIsObject ? maxPoints[key][j] : maxPoints;\n\n      // could have chosen null here, -1 just tells us to not take a window\n      if (!isNumeric(maxp)) maxp = -1;\n\n      /*\n       * Wrap the nestedProperty in an object containing required data\n       * for lengthening and windowing this particular trace - key combination.\n       * Flooring maxp mirrors the behaviour of floats in the Array.slice JSnative function.\n       */\n      updateProps.push({\n        prop: prop,\n        target: target,\n        insert: insert,\n        maxp: Math.floor(maxp)\n      });\n    }\n  }\n\n  // all target and insertion data now validated\n  return updateProps;\n}\n\n/**\n * A private function to key Extend and Prepend traces DRY\n *\n * @param {Object|HTMLDivElement} gd\n * @param {Object} update\n * @param {Number[]} indices\n * @param {Number||Object} maxPoints\n * @param {Function} updateArray\n * @return {Object}\n */\nfunction spliceTraces(gd, update, indices, maxPoints, updateArray) {\n  assertExtendTracesArgs(gd, update, indices, maxPoints);\n  var updateProps = getExtendProperties(gd, update, indices, maxPoints);\n  var undoUpdate = {};\n  var undoPoints = {};\n  for (var i = 0; i < updateProps.length; i++) {\n    var prop = updateProps[i].prop;\n    var maxp = updateProps[i].maxp;\n\n    // return new array and remainder\n    var out = updateArray(updateProps[i].target, updateProps[i].insert, maxp);\n    prop.set(out[0]);\n\n    // build the inverse update object for the undo operation\n    if (!Array.isArray(undoUpdate[prop.astr])) undoUpdate[prop.astr] = [];\n    undoUpdate[prop.astr].push(out[1]);\n\n    // build the matching maxPoints undo object containing original trace lengths\n    if (!Array.isArray(undoPoints[prop.astr])) undoPoints[prop.astr] = [];\n    undoPoints[prop.astr].push(updateProps[i].target.length);\n  }\n  return {\n    update: undoUpdate,\n    maxPoints: undoPoints\n  };\n}\nfunction concatTypedArray(arr0, arr1) {\n  var arr2 = new arr0.constructor(arr0.length + arr1.length);\n  arr2.set(arr0);\n  arr2.set(arr1, arr0.length);\n  return arr2;\n}\n\n/**\n * extend && prepend traces at indices with update arrays, window trace lengths to maxPoints\n *\n * Extend and Prepend have identical APIs. Prepend inserts an array at the head while Extend\n * inserts an array off the tail. Prepend truncates the tail of the array - counting maxPoints\n * from the head, whereas Extend truncates the head of the array, counting backward maxPoints\n * from the tail.\n *\n * If maxPoints is undefined, nonNumeric, negative or greater than extended trace length no\n * truncation / windowing will be performed. If its zero, well the whole trace is truncated.\n *\n * @param {Object|HTMLDivElement} gd The graph div\n * @param {Object} update The key:array map of target attributes to extend\n * @param {Number|Number[]} indices The locations of traces to be extended\n * @param {Number|Object} [maxPoints] Number of points for trace window after lengthening.\n *\n */\nfunction extendTraces(gd, update, indices, maxPoints) {\n  gd = Lib.getGraphDiv(gd);\n  function updateArray(target, insert, maxp) {\n    var newArray, remainder;\n    if (Lib.isTypedArray(target)) {\n      if (maxp < 0) {\n        var none = new target.constructor(0);\n        var both = concatTypedArray(target, insert);\n        if (maxp < 0) {\n          newArray = both;\n          remainder = none;\n        } else {\n          newArray = none;\n          remainder = both;\n        }\n      } else {\n        newArray = new target.constructor(maxp);\n        remainder = new target.constructor(target.length + insert.length - maxp);\n        if (maxp === insert.length) {\n          newArray.set(insert);\n          remainder.set(target);\n        } else if (maxp < insert.length) {\n          var numberOfItemsFromInsert = insert.length - maxp;\n          newArray.set(insert.subarray(numberOfItemsFromInsert));\n          remainder.set(target);\n          remainder.set(insert.subarray(0, numberOfItemsFromInsert), target.length);\n        } else {\n          var numberOfItemsFromTarget = maxp - insert.length;\n          var targetBegin = target.length - numberOfItemsFromTarget;\n          newArray.set(target.subarray(targetBegin));\n          newArray.set(insert, numberOfItemsFromTarget);\n          remainder.set(target.subarray(0, targetBegin));\n        }\n      }\n    } else {\n      newArray = target.concat(insert);\n      remainder = maxp >= 0 && maxp < newArray.length ? newArray.splice(0, newArray.length - maxp) : [];\n    }\n    return [newArray, remainder];\n  }\n  var undo = spliceTraces(gd, update, indices, maxPoints, updateArray);\n  var promise = exports.redraw(gd);\n  var undoArgs = [gd, undo.update, indices, undo.maxPoints];\n  Queue.add(gd, exports.prependTraces, undoArgs, extendTraces, arguments);\n  return promise;\n}\nfunction prependTraces(gd, update, indices, maxPoints) {\n  gd = Lib.getGraphDiv(gd);\n  function updateArray(target, insert, maxp) {\n    var newArray, remainder;\n    if (Lib.isTypedArray(target)) {\n      if (maxp <= 0) {\n        var none = new target.constructor(0);\n        var both = concatTypedArray(insert, target);\n        if (maxp < 0) {\n          newArray = both;\n          remainder = none;\n        } else {\n          newArray = none;\n          remainder = both;\n        }\n      } else {\n        newArray = new target.constructor(maxp);\n        remainder = new target.constructor(target.length + insert.length - maxp);\n        if (maxp === insert.length) {\n          newArray.set(insert);\n          remainder.set(target);\n        } else if (maxp < insert.length) {\n          var numberOfItemsFromInsert = insert.length - maxp;\n          newArray.set(insert.subarray(0, numberOfItemsFromInsert));\n          remainder.set(insert.subarray(numberOfItemsFromInsert));\n          remainder.set(target, numberOfItemsFromInsert);\n        } else {\n          var numberOfItemsFromTarget = maxp - insert.length;\n          newArray.set(insert);\n          newArray.set(target.subarray(0, numberOfItemsFromTarget), insert.length);\n          remainder.set(target.subarray(numberOfItemsFromTarget));\n        }\n      }\n    } else {\n      newArray = insert.concat(target);\n      remainder = maxp >= 0 && maxp < newArray.length ? newArray.splice(maxp, newArray.length) : [];\n    }\n    return [newArray, remainder];\n  }\n  var undo = spliceTraces(gd, update, indices, maxPoints, updateArray);\n  var promise = exports.redraw(gd);\n  var undoArgs = [gd, undo.update, indices, undo.maxPoints];\n  Queue.add(gd, exports.extendTraces, undoArgs, prependTraces, arguments);\n  return promise;\n}\n\n/**\n * Add data traces to an existing graph div.\n *\n * @param {Object|HTMLDivElement} gd The graph div\n * @param {Object[]} gd.data The array of traces we're adding to\n * @param {Object[]|Object} traces The object or array of objects to add\n * @param {Number[]|Number} [newIndices=[gd.data.length]] Locations to add traces\n *\n */\nfunction addTraces(gd, traces, newIndices) {\n  gd = Lib.getGraphDiv(gd);\n  var currentIndices = [];\n  var undoFunc = exports.deleteTraces;\n  var redoFunc = addTraces;\n  var undoArgs = [gd, currentIndices];\n  var redoArgs = [gd, traces]; // no newIndices here\n  var i;\n  var promise;\n\n  // all validation is done elsewhere to remove clutter here\n  checkAddTracesArgs(gd, traces, newIndices);\n\n  // make sure traces is an array\n  if (!Array.isArray(traces)) {\n    traces = [traces];\n  }\n\n  // make sure traces do not repeat existing ones\n  traces = traces.map(function (trace) {\n    return Lib.extendFlat({}, trace);\n  });\n  helpers.cleanData(traces);\n\n  // add the traces to gd.data (no redrawing yet!)\n  for (i = 0; i < traces.length; i++) {\n    gd.data.push(traces[i]);\n  }\n\n  // to continue, we need to call moveTraces which requires currentIndices\n  for (i = 0; i < traces.length; i++) {\n    currentIndices.push(-traces.length + i);\n  }\n\n  // if the user didn't define newIndices, they just want the traces appended\n  // i.e., we can simply redraw and be done\n  if (typeof newIndices === 'undefined') {\n    promise = exports.redraw(gd);\n    Queue.add(gd, undoFunc, undoArgs, redoFunc, redoArgs);\n    return promise;\n  }\n\n  // make sure indices is property defined\n  if (!Array.isArray(newIndices)) {\n    newIndices = [newIndices];\n  }\n  try {\n    // this is redundant, but necessary to not catch later possible errors!\n    checkMoveTracesArgs(gd, currentIndices, newIndices);\n  } catch (error) {\n    // something went wrong, reset gd to be safe and rethrow error\n    gd.data.splice(gd.data.length - traces.length, traces.length);\n    throw error;\n  }\n\n  // if we're here, the user has defined specific places to place the new traces\n  // this requires some extra work that moveTraces will do\n  Queue.startSequence(gd);\n  Queue.add(gd, undoFunc, undoArgs, redoFunc, redoArgs);\n  promise = exports.moveTraces(gd, currentIndices, newIndices);\n  Queue.stopSequence(gd);\n  return promise;\n}\n\n/**\n * Delete traces at `indices` from gd.data array.\n *\n * @param {Object|HTMLDivElement} gd The graph div\n * @param {Object[]} gd.data The array of traces we're removing from\n * @param {Number|Number[]} indices The indices\n */\nfunction deleteTraces(gd, indices) {\n  gd = Lib.getGraphDiv(gd);\n  var traces = [];\n  var undoFunc = exports.addTraces;\n  var redoFunc = deleteTraces;\n  var undoArgs = [gd, traces, indices];\n  var redoArgs = [gd, indices];\n  var i;\n  var deletedTrace;\n\n  // make sure indices are defined\n  if (typeof indices === 'undefined') {\n    throw new Error('indices must be an integer or array of integers.');\n  } else if (!Array.isArray(indices)) {\n    indices = [indices];\n  }\n  assertIndexArray(gd, indices, 'indices');\n\n  // convert negative indices to positive indices\n  indices = positivifyIndices(indices, gd.data.length - 1);\n\n  // we want descending here so that splicing later doesn't affect indexing\n  indices.sort(Lib.sorterDes);\n  for (i = 0; i < indices.length; i += 1) {\n    deletedTrace = gd.data.splice(indices[i], 1)[0];\n    traces.push(deletedTrace);\n  }\n  var promise = exports.redraw(gd);\n  Queue.add(gd, undoFunc, undoArgs, redoFunc, redoArgs);\n  return promise;\n}\n\n/**\n * Move traces at currentIndices array to locations in newIndices array.\n *\n * If newIndices is omitted, currentIndices will be moved to the end. E.g.,\n * these are equivalent:\n *\n * Plotly.moveTraces(gd, [1, 2, 3], [-3, -2, -1])\n * Plotly.moveTraces(gd, [1, 2, 3])\n *\n * @param {Object|HTMLDivElement} gd The graph div\n * @param {Object[]} gd.data The array of traces we're removing from\n * @param {Number|Number[]} currentIndices The locations of traces to be moved\n * @param {Number|Number[]} [newIndices] The locations to move traces to\n *\n * Example calls:\n *\n *      // move trace i to location x\n *      Plotly.moveTraces(gd, i, x)\n *\n *      // move trace i to end of array\n *      Plotly.moveTraces(gd, i)\n *\n *      // move traces i, j, k to end of array (i != j != k)\n *      Plotly.moveTraces(gd, [i, j, k])\n *\n *      // move traces [i, j, k] to [x, y, z] (i != j != k) (x != y != z)\n *      Plotly.moveTraces(gd, [i, j, k], [x, y, z])\n *\n *      // reorder all traces (assume there are 5--a, b, c, d, e)\n *      Plotly.moveTraces(gd, [b, d, e, a, c])  // same as 'move to end'\n */\nfunction moveTraces(gd, currentIndices, newIndices) {\n  gd = Lib.getGraphDiv(gd);\n  var newData = [];\n  var movingTraceMap = [];\n  var undoFunc = moveTraces;\n  var redoFunc = moveTraces;\n  var undoArgs = [gd, newIndices, currentIndices];\n  var redoArgs = [gd, currentIndices, newIndices];\n  var i;\n\n  // to reduce complexity here, check args elsewhere\n  // this throws errors where appropriate\n  checkMoveTracesArgs(gd, currentIndices, newIndices);\n\n  // make sure currentIndices is an array\n  currentIndices = Array.isArray(currentIndices) ? currentIndices : [currentIndices];\n\n  // if undefined, define newIndices to point to the end of gd.data array\n  if (typeof newIndices === 'undefined') {\n    newIndices = [];\n    for (i = 0; i < currentIndices.length; i++) {\n      newIndices.push(-currentIndices.length + i);\n    }\n  }\n\n  // make sure newIndices is an array if it's user-defined\n  newIndices = Array.isArray(newIndices) ? newIndices : [newIndices];\n\n  // convert negative indices to positive indices (they're the same length)\n  currentIndices = positivifyIndices(currentIndices, gd.data.length - 1);\n  newIndices = positivifyIndices(newIndices, gd.data.length - 1);\n\n  // at this point, we've coerced the index arrays into predictable forms\n\n  // get the traces that aren't being moved around\n  for (i = 0; i < gd.data.length; i++) {\n    // if index isn't in currentIndices, include it in ignored!\n    if (currentIndices.indexOf(i) === -1) {\n      newData.push(gd.data[i]);\n    }\n  }\n\n  // get a mapping of indices to moving traces\n  for (i = 0; i < currentIndices.length; i++) {\n    movingTraceMap.push({\n      newIndex: newIndices[i],\n      trace: gd.data[currentIndices[i]]\n    });\n  }\n\n  // reorder this mapping by newIndex, ascending\n  movingTraceMap.sort(function (a, b) {\n    return a.newIndex - b.newIndex;\n  });\n\n  // now, add the moving traces back in, in order!\n  for (i = 0; i < movingTraceMap.length; i += 1) {\n    newData.splice(movingTraceMap[i].newIndex, 0, movingTraceMap[i].trace);\n  }\n  gd.data = newData;\n  var promise = exports.redraw(gd);\n  Queue.add(gd, undoFunc, undoArgs, redoFunc, redoArgs);\n  return promise;\n}\n\n/**\n * restyle: update trace attributes of an existing plot\n *\n * Can be called two ways.\n *\n * Signature 1:\n * @param {String | HTMLDivElement} gd\n *  the id or DOM element of the graph container div\n * @param {String} astr\n *  attribute string (like `'marker.symbol'`) to update\n * @param {*} val\n *  value to give this attribute\n * @param {Number[] | Number} [traces]\n *  integer or array of integers for the traces to alter (all if omitted)\n *\n * Signature 2:\n * @param {String | HTMLDivElement} gd\n *  (as in signature 1)\n * @param {Object} aobj\n *  attribute object `{astr1: val1, astr2: val2 ...}`\n *  allows setting multiple attributes simultaneously\n * @param {Number[] | Number} [traces]\n *  (as in signature 1)\n *\n * `val` (or `val1`, `val2` ... in the object form) can be an array,\n * to apply different values to each trace.\n *\n * If the array is too short, it will wrap around (useful for\n * style files that want to specify cyclical default values).\n */\nfunction restyle(gd, astr, val, _traces) {\n  gd = Lib.getGraphDiv(gd);\n  helpers.clearPromiseQueue(gd);\n  var aobj = {};\n  if (typeof astr === 'string') aobj[astr] = val;else if (Lib.isPlainObject(astr)) {\n    // the 3-arg form\n    aobj = Lib.extendFlat({}, astr);\n    if (_traces === undefined) _traces = val;\n  } else {\n    Lib.warn('Restyle fail.', astr, val, _traces);\n    return Promise.reject();\n  }\n  if (Object.keys(aobj).length) gd.changed = true;\n  var traces = helpers.coerceTraceIndices(gd, _traces);\n  var specs = _restyle(gd, aobj, traces);\n  var flags = specs.flags;\n\n  // clear calcdata and/or axis types if required so they get regenerated\n  if (flags.calc) gd.calcdata = undefined;\n  if (flags.clearAxisTypes) helpers.clearAxisTypes(gd, traces, {});\n\n  // fill in redraw sequence\n  var seq = [];\n  if (flags.fullReplot) {\n    seq.push(exports._doPlot);\n  } else {\n    seq.push(Plots.previousPromises);\n\n    // maybe only call Plots.supplyDataDefaults in the splom case,\n    // to skip over long and slow axes defaults\n    Plots.supplyDefaults(gd);\n    if (flags.markerSize) {\n      Plots.doCalcdata(gd);\n      addAxRangeSequence(seq);\n\n      // TODO\n      // if all axes have autorange:false, then\n      // proceed to subroutines.doTraceStyle(),\n      // otherwise we must go through addAxRangeSequence,\n      // which in general must redraws 'all' axes\n    }\n\n    if (flags.style) seq.push(subroutines.doTraceStyle);\n    if (flags.colorbars) seq.push(subroutines.doColorBars);\n    seq.push(emitAfterPlot);\n  }\n  seq.push(Plots.rehover, Plots.redrag, Plots.reselect);\n  Queue.add(gd, restyle, [gd, specs.undoit, specs.traces], restyle, [gd, specs.redoit, specs.traces]);\n  var plotDone = Lib.syncOrAsync(seq, gd);\n  if (!plotDone || !plotDone.then) plotDone = Promise.resolve();\n  return plotDone.then(function () {\n    gd.emit('plotly_restyle', specs.eventData);\n    return gd;\n  });\n}\n\n// for undo: undefined initial vals must be turned into nulls\n// so that we unset rather than ignore them\nfunction undefinedToNull(val) {\n  if (val === undefined) return null;\n  return val;\n}\n\n/**\n * Factory function to wrap nestedProperty with GUI edits if necessary\n * with GUI edits we add an optional prefix to the nestedProperty constructor\n * to prepend to the attribute string in the preGUI store.\n */\nfunction makeNP(preGUI, guiEditFlag) {\n  if (!guiEditFlag) return nestedProperty;\n  return function (container, attr, prefix) {\n    var np = nestedProperty(container, attr);\n    var npSet = np.set;\n    np.set = function (val) {\n      var fullAttr = (prefix || '') + attr;\n      storeCurrent(fullAttr, np.get(), val, preGUI);\n      npSet(val);\n    };\n    return np;\n  };\n}\nfunction storeCurrent(attr, val, newVal, preGUI) {\n  if (Array.isArray(val) || Array.isArray(newVal)) {\n    var arrayVal = Array.isArray(val) ? val : [];\n    var arrayNew = Array.isArray(newVal) ? newVal : [];\n    var maxLen = Math.max(arrayVal.length, arrayNew.length);\n    for (var i = 0; i < maxLen; i++) {\n      storeCurrent(attr + '[' + i + ']', arrayVal[i], arrayNew[i], preGUI);\n    }\n  } else if (Lib.isPlainObject(val) || Lib.isPlainObject(newVal)) {\n    var objVal = Lib.isPlainObject(val) ? val : {};\n    var objNew = Lib.isPlainObject(newVal) ? newVal : {};\n    var objBoth = Lib.extendFlat({}, objVal, objNew);\n    for (var key in objBoth) {\n      storeCurrent(attr + '.' + key, objVal[key], objNew[key], preGUI);\n    }\n  } else if (preGUI[attr] === undefined) {\n    preGUI[attr] = undefinedToNull(val);\n  }\n}\n\n/**\n * storeDirectGUIEdit: for routines that skip restyle/relayout and mock it\n * by emitting a plotly_restyle or plotly_relayout event, this routine\n * keeps track of the initial state in _preGUI for use by uirevision\n * Does *not* apply these changes to data/layout - that's the responsibility\n * of the calling routine.\n *\n * @param {object} container: the input attributes container (eg `layout` or a `trace`)\n * @param {object} preGUI: where original values should be stored, either\n *     `layout._preGUI` or `layout._tracePreGUI[uid]`\n * @param {object} edits: the {attr: val} object as normally passed to `relayout` etc\n */\nfunction _storeDirectGUIEdit(container, preGUI, edits) {\n  for (var attr in edits) {\n    var np = nestedProperty(container, attr);\n    storeCurrent(attr, np.get(), edits[attr], preGUI);\n  }\n}\nfunction _restyle(gd, aobj, traces) {\n  var fullLayout = gd._fullLayout;\n  var fullData = gd._fullData;\n  var data = gd.data;\n  var guiEditFlag = fullLayout._guiEditing;\n  var layoutNP = makeNP(fullLayout._preGUI, guiEditFlag);\n  var eventData = Lib.extendDeepAll({}, aobj);\n  var i;\n  cleanDeprecatedAttributeKeys(aobj);\n\n  // initialize flags\n  var flags = editTypes.traceFlags();\n\n  // copies of the change (and previous values of anything affected)\n  // for the undo / redo queue\n  var redoit = {};\n  var undoit = {};\n  var axlist;\n\n  // make a new empty vals array for undoit\n  function a0() {\n    return traces.map(function () {\n      return undefined;\n    });\n  }\n\n  // for autoranging multiple axes\n  function addToAxlist(axid) {\n    var axName = Axes.id2name(axid);\n    if (axlist.indexOf(axName) === -1) axlist.push(axName);\n  }\n  function autorangeAttr(axName) {\n    return 'LAYOUT' + axName + '.autorange';\n  }\n  function rangeAttr(axName) {\n    return 'LAYOUT' + axName + '.range';\n  }\n  function getFullTrace(traceIndex) {\n    // usually fullData maps 1:1 onto data, but with groupby transforms\n    // the fullData index can be greater. Take the *first* matching trace.\n    for (var j = traceIndex; j < fullData.length; j++) {\n      if (fullData[j]._input === data[traceIndex]) return fullData[j];\n    }\n    // should never get here - and if we *do* it should cause an error\n    // later on undefined fullTrace is passed to nestedProperty.\n  }\n\n  // for attrs that interact (like scales & autoscales), save the\n  // old vals before making the change\n  // val=undefined will not set a value, just record what the value was.\n  // val=null will delete the attribute\n  // attr can be an array to set several at once (all to the same val)\n  function doextra(attr, val, i) {\n    if (Array.isArray(attr)) {\n      attr.forEach(function (a) {\n        doextra(a, val, i);\n      });\n      return;\n    }\n    // quit if explicitly setting this elsewhere\n    if (attr in aobj || helpers.hasParent(aobj, attr)) return;\n    var extraparam;\n    if (attr.substr(0, 6) === 'LAYOUT') {\n      extraparam = layoutNP(gd.layout, attr.replace('LAYOUT', ''));\n    } else {\n      var tracei = traces[i];\n      var preGUI = fullLayout._tracePreGUI[getFullTrace(tracei)._fullInput.uid];\n      extraparam = makeNP(preGUI, guiEditFlag)(data[tracei], attr);\n    }\n    if (!(attr in undoit)) {\n      undoit[attr] = a0();\n    }\n    if (undoit[attr][i] === undefined) {\n      undoit[attr][i] = undefinedToNull(extraparam.get());\n    }\n    if (val !== undefined) {\n      extraparam.set(val);\n    }\n  }\n  function allBins(binAttr) {\n    return function (j) {\n      return fullData[j][binAttr];\n    };\n  }\n  function arrayBins(binAttr) {\n    return function (vij, j) {\n      return vij === false ? fullData[traces[j]][binAttr] : null;\n    };\n  }\n\n  // now make the changes to gd.data (and occasionally gd.layout)\n  // and figure out what kind of graphics update we need to do\n  for (var ai in aobj) {\n    if (helpers.hasParent(aobj, ai)) {\n      throw new Error('cannot set ' + ai + ' and a parent attribute simultaneously');\n    }\n    var vi = aobj[ai];\n    var cont;\n    var contFull;\n    var param;\n    var oldVal;\n    var newVal;\n    var valObject;\n\n    // Backward compatibility shim for turning histogram autobin on,\n    // or freezing previous autobinned values.\n    // Replace obsolete `autobin(x|y): true` with `(x|y)bins: null`\n    // and `autobin(x|y): false` with the `(x|y)bins` in `fullData`\n    if (ai === 'autobinx' || ai === 'autobiny') {\n      ai = ai.charAt(ai.length - 1) + 'bins';\n      if (Array.isArray(vi)) vi = vi.map(arrayBins(ai));else if (vi === false) vi = traces.map(allBins(ai));else vi = null;\n    }\n    redoit[ai] = vi;\n    if (ai.substr(0, 6) === 'LAYOUT') {\n      param = layoutNP(gd.layout, ai.replace('LAYOUT', ''));\n      undoit[ai] = [undefinedToNull(param.get())];\n      // since we're allowing val to be an array, allow it here too,\n      // even though that's meaningless\n      param.set(Array.isArray(vi) ? vi[0] : vi);\n      // ironically, the layout attrs in restyle only require replot,\n      // not relayout\n      flags.calc = true;\n      continue;\n    }\n\n    // set attribute in gd.data\n    undoit[ai] = a0();\n    for (i = 0; i < traces.length; i++) {\n      cont = data[traces[i]];\n      contFull = getFullTrace(traces[i]);\n      var preGUI = fullLayout._tracePreGUI[contFull._fullInput.uid];\n      param = makeNP(preGUI, guiEditFlag)(cont, ai);\n      oldVal = param.get();\n      newVal = Array.isArray(vi) ? vi[i % vi.length] : vi;\n      if (newVal === undefined) continue;\n      var finalPart = param.parts[param.parts.length - 1];\n      var prefix = ai.substr(0, ai.length - finalPart.length - 1);\n      var prefixDot = prefix ? prefix + '.' : '';\n      var innerContFull = prefix ? nestedProperty(contFull, prefix).get() : contFull;\n      valObject = PlotSchema.getTraceValObject(contFull, param.parts);\n      if (valObject && valObject.impliedEdits && newVal !== null) {\n        for (var impliedKey in valObject.impliedEdits) {\n          doextra(Lib.relativeAttr(ai, impliedKey), valObject.impliedEdits[impliedKey], i);\n        }\n      } else if ((finalPart === 'thicknessmode' || finalPart === 'lenmode') && oldVal !== newVal && (newVal === 'fraction' || newVal === 'pixels') && innerContFull) {\n        // changing colorbar size modes,\n        // make the resulting size not change\n        // note that colorbar fractional sizing is based on the\n        // original plot size, before anything (like a colorbar)\n        // increases the margins\n\n        var gs = fullLayout._size;\n        var orient = innerContFull.orient;\n        var topOrBottom = orient === 'top' || orient === 'bottom';\n        if (finalPart === 'thicknessmode') {\n          var thicknorm = topOrBottom ? gs.h : gs.w;\n          doextra(prefixDot + 'thickness', innerContFull.thickness * (newVal === 'fraction' ? 1 / thicknorm : thicknorm), i);\n        } else {\n          var lennorm = topOrBottom ? gs.w : gs.h;\n          doextra(prefixDot + 'len', innerContFull.len * (newVal === 'fraction' ? 1 / lennorm : lennorm), i);\n        }\n      } else if (ai === 'type' && (newVal === 'pie' !== (oldVal === 'pie') || newVal === 'funnelarea' !== (oldVal === 'funnelarea'))) {\n        var labelsTo = 'x';\n        var valuesTo = 'y';\n        if ((newVal === 'bar' || oldVal === 'bar') && cont.orientation === 'h') {\n          labelsTo = 'y';\n          valuesTo = 'x';\n        }\n        Lib.swapAttrs(cont, ['?', '?src'], 'labels', labelsTo);\n        Lib.swapAttrs(cont, ['d?', '?0'], 'label', labelsTo);\n        Lib.swapAttrs(cont, ['?', '?src'], 'values', valuesTo);\n        if (oldVal === 'pie' || oldVal === 'funnelarea') {\n          nestedProperty(cont, 'marker.color').set(nestedProperty(cont, 'marker.colors').get());\n\n          // super kludgy - but if all pies are gone we won't remove them otherwise\n          fullLayout._pielayer.selectAll('g.trace').remove();\n        } else if (Registry.traceIs(cont, 'cartesian')) {\n          nestedProperty(cont, 'marker.colors').set(nestedProperty(cont, 'marker.color').get());\n        }\n      }\n      undoit[ai][i] = undefinedToNull(oldVal);\n      // set the new value - if val is an array, it's one el per trace\n      // first check for attributes that get more complex alterations\n      var swapAttrs = ['swapxy', 'swapxyaxes', 'orientation', 'orientationaxes'];\n      if (swapAttrs.indexOf(ai) !== -1) {\n        // setting an orientation: make sure it's changing\n        // before we swap everything else\n        if (ai === 'orientation') {\n          param.set(newVal);\n          // obnoxious that we need this level of coupling... but in order to\n          // properly handle setting orientation to `null` we need to mimic\n          // the logic inside Bars.supplyDefaults for default orientation\n          var defaultOrientation = cont.x && !cont.y ? 'h' : 'v';\n          if ((param.get() || defaultOrientation) === contFull.orientation) {\n            continue;\n          }\n        } else if (ai === 'orientationaxes') {\n          // orientationaxes has no value,\n          // it flips everything and the axes\n\n          cont.orientation = {\n            v: 'h',\n            h: 'v'\n          }[contFull.orientation];\n        }\n        helpers.swapXYData(cont);\n        flags.calc = flags.clearAxisTypes = true;\n      } else if (Plots.dataArrayContainers.indexOf(param.parts[0]) !== -1) {\n        // TODO: use manageArrays.applyContainerArrayChanges here too\n        helpers.manageArrayContainers(param, newVal, undoit);\n        flags.calc = true;\n      } else {\n        if (valObject) {\n          // must redo calcdata when restyling array values of arrayOk attributes\n          // ... but no need to this for regl-based traces\n          if (valObject.arrayOk && !Registry.traceIs(contFull, 'regl') && (Lib.isArrayOrTypedArray(newVal) || Lib.isArrayOrTypedArray(oldVal))) {\n            flags.calc = true;\n          } else editTypes.update(flags, valObject);\n        } else {\n          /*\n           * if we couldn't find valObject,  assume a full recalc.\n           * This can happen if you're changing type and making\n           * some other edits too, so the modules we're\n           * looking at don't have these attributes in them.\n           */\n          flags.calc = true;\n        }\n\n        // all the other ones, just modify that one attribute\n        param.set(newVal);\n      }\n    }\n\n    // swap the data attributes of the relevant x and y axes?\n    if (['swapxyaxes', 'orientationaxes'].indexOf(ai) !== -1) {\n      Axes.swap(gd, traces);\n    }\n\n    // swap hovermode if set to \"compare x/y data\"\n    if (ai === 'orientationaxes') {\n      var hovermode = nestedProperty(gd.layout, 'hovermode');\n      var h = hovermode.get();\n      if (h === 'x') {\n        hovermode.set('y');\n      } else if (h === 'y') {\n        hovermode.set('x');\n      } else if (h === 'x unified') {\n        hovermode.set('y unified');\n      } else if (h === 'y unified') {\n        hovermode.set('x unified');\n      }\n    }\n\n    // Major enough changes deserve autoscale and\n    // non-reversed axes so people don't get confused\n    //\n    // Note: autobin (or its new analog bin clearing) is not included here\n    // since we're not pushing bins back to gd.data, so if we have bin\n    // info it was explicitly provided by the user.\n    if (['orientation', 'type'].indexOf(ai) !== -1) {\n      axlist = [];\n      for (i = 0; i < traces.length; i++) {\n        var trace = data[traces[i]];\n        if (Registry.traceIs(trace, 'cartesian')) {\n          addToAxlist(trace.xaxis || 'x');\n          addToAxlist(trace.yaxis || 'y');\n        }\n      }\n      doextra(axlist.map(autorangeAttr), true, 0);\n      doextra(axlist.map(rangeAttr), [0, 1], 0);\n    }\n  }\n  if (flags.calc || flags.plot) {\n    flags.fullReplot = true;\n  }\n  return {\n    flags: flags,\n    undoit: undoit,\n    redoit: redoit,\n    traces: traces,\n    eventData: Lib.extendDeepNoArrays([], [eventData, traces])\n  };\n}\n\n/**\n * Converts deprecated attribute keys to\n * the current API to ensure backwards compatibility.\n *\n * This is needed for the update mechanism to determine which\n * subroutines to run based on the actual attribute\n * definitions (that don't include the deprecated ones).\n *\n * E.g. Maps {'xaxis.title': 'A chart'} to {'xaxis.title.text': 'A chart'}\n * and {titlefont: {...}} to {'title.font': {...}}.\n *\n * @param aobj\n */\nfunction cleanDeprecatedAttributeKeys(aobj) {\n  var oldAxisTitleRegex = Lib.counterRegex('axis', '\\.title', false, false);\n  var colorbarRegex = /colorbar\\.title$/;\n  var keys = Object.keys(aobj);\n  var i, key, value;\n  for (i = 0; i < keys.length; i++) {\n    key = keys[i];\n    value = aobj[key];\n    if ((key === 'title' || oldAxisTitleRegex.test(key) || colorbarRegex.test(key)) && (typeof value === 'string' || typeof value === 'number')) {\n      replace(key, key.replace('title', 'title.text'));\n    } else if (key.indexOf('titlefont') > -1 && key.indexOf('grouptitlefont') === -1) {\n      replace(key, key.replace('titlefont', 'title.font'));\n    } else if (key.indexOf('titleposition') > -1) {\n      replace(key, key.replace('titleposition', 'title.position'));\n    } else if (key.indexOf('titleside') > -1) {\n      replace(key, key.replace('titleside', 'title.side'));\n    } else if (key.indexOf('titleoffset') > -1) {\n      replace(key, key.replace('titleoffset', 'title.offset'));\n    }\n  }\n  function replace(oldAttrStr, newAttrStr) {\n    aobj[newAttrStr] = aobj[oldAttrStr];\n    delete aobj[oldAttrStr];\n  }\n}\n\n/**\n * relayout: update layout attributes of an existing plot\n *\n * Can be called two ways:\n *\n * Signature 1:\n * @param {String | HTMLDivElement} gd\n *  the id or dom element of the graph container div\n * @param {String} astr\n *  attribute string (like `'xaxis.range[0]'`) to update\n * @param {*} val\n *  value to give this attribute\n *\n * Signature 2:\n * @param {String | HTMLDivElement} gd\n *  (as in signature 1)\n * @param {Object} aobj\n *  attribute object `{astr1: val1, astr2: val2 ...}`\n *  allows setting multiple attributes simultaneously\n */\nfunction relayout(gd, astr, val) {\n  gd = Lib.getGraphDiv(gd);\n  helpers.clearPromiseQueue(gd);\n  var aobj = {};\n  if (typeof astr === 'string') {\n    aobj[astr] = val;\n  } else if (Lib.isPlainObject(astr)) {\n    aobj = Lib.extendFlat({}, astr);\n  } else {\n    Lib.warn('Relayout fail.', astr, val);\n    return Promise.reject();\n  }\n  if (Object.keys(aobj).length) gd.changed = true;\n  var specs = _relayout(gd, aobj);\n  var flags = specs.flags;\n\n  // clear calcdata if required\n  if (flags.calc) gd.calcdata = undefined;\n\n  // fill in redraw sequence\n\n  // even if we don't have anything left in aobj,\n  // something may have happened within relayout that we\n  // need to wait for\n  var seq = [Plots.previousPromises];\n  if (flags.layoutReplot) {\n    seq.push(subroutines.layoutReplot);\n  } else if (Object.keys(aobj).length) {\n    axRangeSupplyDefaultsByPass(gd, flags, specs) || Plots.supplyDefaults(gd);\n    if (flags.legend) seq.push(subroutines.doLegend);\n    if (flags.layoutstyle) seq.push(subroutines.layoutStyles);\n    if (flags.axrange) addAxRangeSequence(seq, specs.rangesAltered);\n    if (flags.ticks) seq.push(subroutines.doTicksRelayout);\n    if (flags.modebar) seq.push(subroutines.doModeBar);\n    if (flags.camera) seq.push(subroutines.doCamera);\n    if (flags.colorbars) seq.push(subroutines.doColorBars);\n    seq.push(emitAfterPlot);\n  }\n  seq.push(Plots.rehover, Plots.redrag, Plots.reselect);\n  Queue.add(gd, relayout, [gd, specs.undoit], relayout, [gd, specs.redoit]);\n  var plotDone = Lib.syncOrAsync(seq, gd);\n  if (!plotDone || !plotDone.then) plotDone = Promise.resolve(gd);\n  return plotDone.then(function () {\n    gd.emit('plotly_relayout', specs.eventData);\n    return gd;\n  });\n}\n\n// Optimization mostly for large splom traces where\n// Plots.supplyDefaults can take > 100ms\nfunction axRangeSupplyDefaultsByPass(gd, flags, specs) {\n  var fullLayout = gd._fullLayout;\n  if (!flags.axrange) return false;\n  for (var k in flags) {\n    if (k !== 'axrange' && flags[k]) return false;\n  }\n  for (var axId in specs.rangesAltered) {\n    var axName = Axes.id2name(axId);\n    var axIn = gd.layout[axName];\n    var axOut = fullLayout[axName];\n    axOut.autorange = axIn.autorange;\n    if (axIn.range) {\n      axOut.range = axIn.range.slice();\n    }\n    axOut.cleanRange();\n    if (axOut._matchGroup) {\n      for (var axId2 in axOut._matchGroup) {\n        if (axId2 !== axId) {\n          var ax2 = fullLayout[Axes.id2name(axId2)];\n          ax2.autorange = axOut.autorange;\n          ax2.range = axOut.range.slice();\n          ax2._input.range = axOut.range.slice();\n        }\n      }\n    }\n  }\n  return true;\n}\nfunction addAxRangeSequence(seq, rangesAltered) {\n  // N.B. leave as sequence of subroutines (for now) instead of\n  // subroutine of its own so that finalDraw always gets\n  // executed after drawData\n  var drawAxes = rangesAltered ? function (gd) {\n    var axIds = [];\n    var skipTitle = true;\n    for (var id in rangesAltered) {\n      var ax = Axes.getFromId(gd, id);\n      axIds.push(id);\n      if ((ax.ticklabelposition || '').indexOf('inside') !== -1) {\n        if (ax._anchorAxis) {\n          axIds.push(ax._anchorAxis._id);\n        }\n      }\n      if (ax._matchGroup) {\n        for (var id2 in ax._matchGroup) {\n          if (!rangesAltered[id2]) {\n            axIds.push(id2);\n          }\n        }\n      }\n    }\n    return Axes.draw(gd, axIds, {\n      skipTitle: skipTitle\n    });\n  } : function (gd) {\n    return Axes.draw(gd, 'redraw');\n  };\n  seq.push(clearOutline, subroutines.doAutoRangeAndConstraints, drawAxes, subroutines.drawData, subroutines.finalDraw);\n}\nvar AX_RANGE_RE = /^[xyz]axis[0-9]*\\.range(\\[[0|1]\\])?$/;\nvar AX_AUTORANGE_RE = /^[xyz]axis[0-9]*\\.autorange$/;\nvar AX_DOMAIN_RE = /^[xyz]axis[0-9]*\\.domain(\\[[0|1]\\])?$/;\nfunction _relayout(gd, aobj) {\n  var layout = gd.layout;\n  var fullLayout = gd._fullLayout;\n  var guiEditFlag = fullLayout._guiEditing;\n  var layoutNP = makeNP(fullLayout._preGUI, guiEditFlag);\n  var keys = Object.keys(aobj);\n  var axes = Axes.list(gd);\n  var eventData = Lib.extendDeepAll({}, aobj);\n  var arrayEdits = {};\n  var arrayStr, i, j;\n  cleanDeprecatedAttributeKeys(aobj);\n  keys = Object.keys(aobj);\n\n  // look for 'allaxes', split out into all axes\n  // in case of 3D the axis are nested within a scene which is held in _id\n  for (i = 0; i < keys.length; i++) {\n    if (keys[i].indexOf('allaxes') === 0) {\n      for (j = 0; j < axes.length; j++) {\n        var scene = axes[j]._id.substr(1);\n        var axisAttr = scene.indexOf('scene') !== -1 ? scene + '.' : '';\n        var newkey = keys[i].replace('allaxes', axisAttr + axes[j]._name);\n        if (!aobj[newkey]) aobj[newkey] = aobj[keys[i]];\n      }\n      delete aobj[keys[i]];\n    }\n  }\n\n  // initialize flags\n  var flags = editTypes.layoutFlags();\n\n  // copies of the change (and previous values of anything affected)\n  // for the undo / redo queue\n  var redoit = {};\n  var undoit = {};\n\n  // for attrs that interact (like scales & autoscales), save the\n  // old vals before making the change\n  // val=undefined will not set a value, just record what the value was.\n  // attr can be an array to set several at once (all to the same val)\n  function doextra(attr, val) {\n    if (Array.isArray(attr)) {\n      attr.forEach(function (a) {\n        doextra(a, val);\n      });\n      return;\n    }\n\n    // if we have another value for this attribute (explicitly or\n    // via a parent) do not override with this auto-generated extra\n    if (attr in aobj || helpers.hasParent(aobj, attr)) return;\n    var p = layoutNP(layout, attr);\n    if (!(attr in undoit)) {\n      undoit[attr] = undefinedToNull(p.get());\n    }\n    if (val !== undefined) p.set(val);\n  }\n\n  // for constraint enforcement: keep track of all axes (as {id: name})\n  // we're editing the (auto)range of, so we can tell the others constrained\n  // to scale with them that it's OK for them to shrink\n  var rangesAltered = {};\n  var ax;\n  function recordAlteredAxis(pleafPlus) {\n    var axId = Axes.name2id(pleafPlus.split('.')[0]);\n    rangesAltered[axId] = 1;\n    return axId;\n  }\n\n  // alter gd.layout\n  for (var ai in aobj) {\n    if (helpers.hasParent(aobj, ai)) {\n      throw new Error('cannot set ' + ai + ' and a parent attribute simultaneously');\n    }\n    var p = layoutNP(layout, ai);\n    var vi = aobj[ai];\n    var plen = p.parts.length;\n    // p.parts may end with an index integer if the property is an array\n    var pend = plen - 1;\n    while (pend > 0 && typeof p.parts[pend] !== 'string') pend--;\n    // last property in chain (leaf node)\n    var pleaf = p.parts[pend];\n    // leaf plus immediate parent\n    var pleafPlus = p.parts[pend - 1] + '.' + pleaf;\n    // trunk nodes (everything except the leaf)\n    var ptrunk = p.parts.slice(0, pend).join('.');\n    var parentIn = nestedProperty(gd.layout, ptrunk).get();\n    var parentFull = nestedProperty(fullLayout, ptrunk).get();\n    var vOld = p.get();\n    if (vi === undefined) continue;\n    redoit[ai] = vi;\n\n    // axis reverse is special - it is its own inverse\n    // op and has no flag.\n    undoit[ai] = pleaf === 'reverse' ? vi : undefinedToNull(vOld);\n    var valObject = PlotSchema.getLayoutValObject(fullLayout, p.parts);\n    if (valObject && valObject.impliedEdits && vi !== null) {\n      for (var impliedKey in valObject.impliedEdits) {\n        doextra(Lib.relativeAttr(ai, impliedKey), valObject.impliedEdits[impliedKey]);\n      }\n    }\n\n    // Setting width or height to null must reset the graph's width / height\n    // back to its initial value as computed during the first pass in Plots.plotAutoSize.\n    //\n    // To do so, we must manually set them back here using the _initialAutoSize cache.\n    // can't use impliedEdits for this because behavior depends on vi\n    if (['width', 'height'].indexOf(ai) !== -1) {\n      if (vi) {\n        doextra('autosize', null);\n        // currently we don't support autosize one dim only - so\n        // explicitly set the other one. Note that doextra will\n        // ignore this if the same relayout call also provides oppositeAttr\n        var oppositeAttr = ai === 'height' ? 'width' : 'height';\n        doextra(oppositeAttr, fullLayout[oppositeAttr]);\n      } else {\n        fullLayout[ai] = gd._initialAutoSize[ai];\n      }\n    } else if (ai === 'autosize') {\n      // depends on vi here too, so again can't use impliedEdits\n      doextra('width', vi ? null : fullLayout.width);\n      doextra('height', vi ? null : fullLayout.height);\n    } else if (pleafPlus.match(AX_RANGE_RE)) {\n      // check autorange vs range\n\n      recordAlteredAxis(pleafPlus);\n      nestedProperty(fullLayout, ptrunk + '._inputRange').set(null);\n    } else if (pleafPlus.match(AX_AUTORANGE_RE)) {\n      recordAlteredAxis(pleafPlus);\n      nestedProperty(fullLayout, ptrunk + '._inputRange').set(null);\n      var axFull = nestedProperty(fullLayout, ptrunk).get();\n      if (axFull._inputDomain) {\n        // if we're autoranging and this axis has a constrained domain,\n        // reset it so we don't get locked into a shrunken size\n        axFull._input.domain = axFull._inputDomain.slice();\n      }\n    } else if (pleafPlus.match(AX_DOMAIN_RE)) {\n      nestedProperty(fullLayout, ptrunk + '._inputDomain').set(null);\n    }\n\n    // toggling axis type between log and linear: we need to convert\n    // positions for components that are still using linearized values,\n    // not data values like newer components.\n    // previously we did this for log <-> not-log, but now only do it\n    // for log <-> linear\n    if (pleaf === 'type') {\n      ax = parentIn;\n      var toLog = parentFull.type === 'linear' && vi === 'log';\n      var fromLog = parentFull.type === 'log' && vi === 'linear';\n      if (toLog || fromLog) {\n        if (!ax || !ax.range) {\n          // 2D never gets here, but 3D does\n          // I don't think this is needed, but left here in case there\n          // are edge cases I'm not thinking of.\n          doextra(ptrunk + '.autorange', true);\n        } else if (!parentFull.autorange) {\n          // toggling log without autorange: need to also recalculate ranges\n          // because log axes use linearized values for range endpoints\n          var r0 = ax.range[0];\n          var r1 = ax.range[1];\n          if (toLog) {\n            // if both limits are negative, autorange\n            if (r0 <= 0 && r1 <= 0) {\n              doextra(ptrunk + '.autorange', true);\n            }\n            // if one is negative, set it 6 orders below the other.\n            if (r0 <= 0) r0 = r1 / 1e6;else if (r1 <= 0) r1 = r0 / 1e6;\n            // now set the range values as appropriate\n            doextra(ptrunk + '.range[0]', Math.log(r0) / Math.LN10);\n            doextra(ptrunk + '.range[1]', Math.log(r1) / Math.LN10);\n          } else {\n            doextra(ptrunk + '.range[0]', Math.pow(10, r0));\n            doextra(ptrunk + '.range[1]', Math.pow(10, r1));\n          }\n        } else if (toLog) {\n          // just make sure the range is positive and in the right\n          // order, it'll get recalculated later\n          ax.range = ax.range[1] > ax.range[0] ? [1, 2] : [2, 1];\n        }\n\n        // clear polar view initial stash for radial range so that\n        // value get recomputed in correct units\n        if (Array.isArray(fullLayout._subplots.polar) && fullLayout._subplots.polar.length && fullLayout[p.parts[0]] && p.parts[1] === 'radialaxis') {\n          delete fullLayout[p.parts[0]]._subplot.viewInitial['radialaxis.range'];\n        }\n\n        // Annotations and images also need to convert to/from linearized coords\n        // Shapes do not need this :)\n        Registry.getComponentMethod('annotations', 'convertCoords')(gd, parentFull, vi, doextra);\n        Registry.getComponentMethod('images', 'convertCoords')(gd, parentFull, vi, doextra);\n      } else {\n        // any other type changes: the range from the previous type\n        // will not make sense, so autorange it.\n        doextra(ptrunk + '.autorange', true);\n        doextra(ptrunk + '.range', null);\n      }\n      nestedProperty(fullLayout, ptrunk + '._inputRange').set(null);\n    } else if (pleaf.match(AX_NAME_PATTERN)) {\n      var fullProp = nestedProperty(fullLayout, ai).get();\n      var newType = (vi || {}).type;\n\n      // This can potentially cause strange behavior if the autotype is not\n      // numeric (linear, because we don't auto-log) but the previous type\n      // was log. That's a very strange edge case though\n      if (!newType || newType === '-') newType = 'linear';\n      Registry.getComponentMethod('annotations', 'convertCoords')(gd, fullProp, newType, doextra);\n      Registry.getComponentMethod('images', 'convertCoords')(gd, fullProp, newType, doextra);\n    }\n\n    // alter gd.layout\n\n    // collect array component edits for execution all together\n    // so we can ensure consistent behavior adding/removing items\n    // and order-independence for add/remove/edit all together in\n    // one relayout call\n    var containerArrayMatch = manageArrays.containerArrayMatch(ai);\n    if (containerArrayMatch) {\n      arrayStr = containerArrayMatch.array;\n      i = containerArrayMatch.index;\n      var propStr = containerArrayMatch.property;\n      var updateValObject = valObject || {\n        editType: 'calc'\n      };\n      if (i !== '' && propStr === '') {\n        // special handling of undoit if we're adding or removing an element\n        // ie 'annotations[2]' which can be {...} (add) or null,\n        // does not work when replacing the entire array\n        if (manageArrays.isAddVal(vi)) {\n          undoit[ai] = null;\n        } else if (manageArrays.isRemoveVal(vi)) {\n          undoit[ai] = (nestedProperty(layout, arrayStr).get() || [])[i];\n        } else {\n          Lib.warn('unrecognized full object value', aobj);\n        }\n      }\n      editTypes.update(flags, updateValObject);\n\n      // prepare the edits object we'll send to applyContainerArrayChanges\n      if (!arrayEdits[arrayStr]) arrayEdits[arrayStr] = {};\n      var objEdits = arrayEdits[arrayStr][i];\n      if (!objEdits) objEdits = arrayEdits[arrayStr][i] = {};\n      objEdits[propStr] = vi;\n      delete aobj[ai];\n    } else if (pleaf === 'reverse') {\n      // handle axis reversal explicitly, as there's no 'reverse' attribute\n\n      if (parentIn.range) parentIn.range.reverse();else {\n        doextra(ptrunk + '.autorange', true);\n        parentIn.range = [1, 0];\n      }\n      if (parentFull.autorange) flags.calc = true;else flags.plot = true;\n    } else {\n      if (ai === 'dragmode' && (vi === false && vOld !== false || vi !== false && vOld === false)) {\n        flags.plot = true;\n      } else if (fullLayout._has('scatter-like') && fullLayout._has('regl') && ai === 'dragmode' && (vi === 'lasso' || vi === 'select') && !(vOld === 'lasso' || vOld === 'select')) {\n        flags.plot = true;\n      } else if (fullLayout._has('gl2d')) {\n        flags.plot = true;\n      } else if (valObject) editTypes.update(flags, valObject);else flags.calc = true;\n      p.set(vi);\n    }\n  }\n\n  // now we've collected component edits - execute them all together\n  for (arrayStr in arrayEdits) {\n    var finished = manageArrays.applyContainerArrayChanges(gd, layoutNP(layout, arrayStr), arrayEdits[arrayStr], flags, layoutNP);\n    if (!finished) flags.plot = true;\n  }\n\n  // figure out if we need to recalculate axis constraints\n  for (var axId in rangesAltered) {\n    ax = Axes.getFromId(gd, axId);\n    var group = ax && ax._constraintGroup;\n    if (group) {\n      // Always recalc if we're changing constrained ranges.\n      // Otherwise it's possible to violate the constraints by\n      // specifying arbitrary ranges for all axes in the group.\n      // this way some ranges may expand beyond what's specified,\n      // as they do at first draw, to satisfy the constraints.\n      flags.calc = true;\n      for (var groupAxId in group) {\n        if (!rangesAltered[groupAxId]) {\n          Axes.getFromId(gd, groupAxId)._constraintShrinkable = true;\n        }\n      }\n    }\n  }\n\n  // If the autosize changed or height or width was explicitly specified,\n  // this triggers a redraw\n  // TODO: do we really need special aobj.height/width handling here?\n  // couldn't editType do this?\n  if (updateAutosize(gd) || aobj.height || aobj.width) flags.plot = true;\n  if (flags.plot || flags.calc) {\n    flags.layoutReplot = true;\n  }\n\n  // now all attribute mods are done, as are\n  // redo and undo so we can save them\n\n  return {\n    flags: flags,\n    rangesAltered: rangesAltered,\n    undoit: undoit,\n    redoit: redoit,\n    eventData: eventData\n  };\n}\n\n/*\n * updateAutosize: we made a change, does it change the autosize result?\n * puts the new size into fullLayout\n * returns true if either height or width changed\n */\nfunction updateAutosize(gd) {\n  var fullLayout = gd._fullLayout;\n  var oldWidth = fullLayout.width;\n  var oldHeight = fullLayout.height;\n\n  // calculate autosizing\n  if (gd.layout.autosize) Plots.plotAutoSize(gd, gd.layout, fullLayout);\n  return fullLayout.width !== oldWidth || fullLayout.height !== oldHeight;\n}\n\n/**\n * update: update trace and layout attributes of an existing plot\n *\n * @param {String | HTMLDivElement} gd\n *  the id or DOM element of the graph container div\n * @param {Object} traceUpdate\n *  attribute object `{astr1: val1, astr2: val2 ...}`\n *  corresponding to updates in the plot's traces\n * @param {Object} layoutUpdate\n *  attribute object `{astr1: val1, astr2: val2 ...}`\n *  corresponding to updates in the plot's layout\n * @param {Number[] | Number} [traces]\n *  integer or array of integers for the traces to alter (all if omitted)\n *\n */\nfunction update(gd, traceUpdate, layoutUpdate, _traces) {\n  gd = Lib.getGraphDiv(gd);\n  helpers.clearPromiseQueue(gd);\n  if (!Lib.isPlainObject(traceUpdate)) traceUpdate = {};\n  if (!Lib.isPlainObject(layoutUpdate)) layoutUpdate = {};\n  if (Object.keys(traceUpdate).length) gd.changed = true;\n  if (Object.keys(layoutUpdate).length) gd.changed = true;\n  var traces = helpers.coerceTraceIndices(gd, _traces);\n  var restyleSpecs = _restyle(gd, Lib.extendFlat({}, traceUpdate), traces);\n  var restyleFlags = restyleSpecs.flags;\n  var relayoutSpecs = _relayout(gd, Lib.extendFlat({}, layoutUpdate));\n  var relayoutFlags = relayoutSpecs.flags;\n\n  // clear calcdata and/or axis types if required\n  if (restyleFlags.calc || relayoutFlags.calc) gd.calcdata = undefined;\n  if (restyleFlags.clearAxisTypes) helpers.clearAxisTypes(gd, traces, layoutUpdate);\n\n  // fill in redraw sequence\n  var seq = [];\n  if (relayoutFlags.layoutReplot) {\n    // N.B. works fine when both\n    // relayoutFlags.layoutReplot and restyleFlags.fullReplot are true\n    seq.push(subroutines.layoutReplot);\n  } else if (restyleFlags.fullReplot) {\n    seq.push(exports._doPlot);\n  } else {\n    seq.push(Plots.previousPromises);\n    axRangeSupplyDefaultsByPass(gd, relayoutFlags, relayoutSpecs) || Plots.supplyDefaults(gd);\n    if (restyleFlags.style) seq.push(subroutines.doTraceStyle);\n    if (restyleFlags.colorbars || relayoutFlags.colorbars) seq.push(subroutines.doColorBars);\n    if (relayoutFlags.legend) seq.push(subroutines.doLegend);\n    if (relayoutFlags.layoutstyle) seq.push(subroutines.layoutStyles);\n    if (relayoutFlags.axrange) addAxRangeSequence(seq, relayoutSpecs.rangesAltered);\n    if (relayoutFlags.ticks) seq.push(subroutines.doTicksRelayout);\n    if (relayoutFlags.modebar) seq.push(subroutines.doModeBar);\n    if (relayoutFlags.camera) seq.push(subroutines.doCamera);\n    seq.push(emitAfterPlot);\n  }\n  seq.push(Plots.rehover, Plots.redrag, Plots.reselect);\n  Queue.add(gd, update, [gd, restyleSpecs.undoit, relayoutSpecs.undoit, restyleSpecs.traces], update, [gd, restyleSpecs.redoit, relayoutSpecs.redoit, restyleSpecs.traces]);\n  var plotDone = Lib.syncOrAsync(seq, gd);\n  if (!plotDone || !plotDone.then) plotDone = Promise.resolve(gd);\n  return plotDone.then(function () {\n    gd.emit('plotly_update', {\n      data: restyleSpecs.eventData,\n      layout: relayoutSpecs.eventData\n    });\n    return gd;\n  });\n}\n\n/*\n * internal-use-only restyle/relayout/update variants that record the initial\n * values in (fullLayout|fullTrace)._preGUI so changes can be persisted across\n * Plotly.react data updates, dependent on uirevision attributes\n */\nfunction guiEdit(func) {\n  return function wrappedEdit(gd) {\n    gd._fullLayout._guiEditing = true;\n    var p = func.apply(null, arguments);\n    gd._fullLayout._guiEditing = false;\n    return p;\n  };\n}\n\n// For connecting edited layout attributes to uirevision attrs\n// If no `attr` we use `match[1] + '.uirevision'`\n// Ordered by most common edits first, to minimize our search time\nvar layoutUIControlPatterns = [{\n  pattern: /^hiddenlabels/,\n  attr: 'legend.uirevision'\n}, {\n  pattern: /^((x|y)axis\\d*)\\.((auto)?range|title\\.text)/\n},\n// showspikes and modes include those nested inside scenes\n{\n  pattern: /axis\\d*\\.showspikes$/,\n  attr: 'modebar.uirevision'\n}, {\n  pattern: /(hover|drag)mode$/,\n  attr: 'modebar.uirevision'\n}, {\n  pattern: /^(scene\\d*)\\.camera/\n}, {\n  pattern: /^(geo\\d*)\\.(projection|center|fitbounds)/\n}, {\n  pattern: /^(ternary\\d*\\.[abc]axis)\\.(min|title\\.text)$/\n}, {\n  pattern: /^(polar\\d*\\.radialaxis)\\.((auto)?range|angle|title\\.text)/\n}, {\n  pattern: /^(polar\\d*\\.angularaxis)\\.rotation/\n}, {\n  pattern: /^(mapbox\\d*)\\.(center|zoom|bearing|pitch)/\n}, {\n  pattern: /^legend\\.(x|y)$/,\n  attr: 'editrevision'\n}, {\n  pattern: /^(shapes|annotations)/,\n  attr: 'editrevision'\n}, {\n  pattern: /^title\\.text$/,\n  attr: 'editrevision'\n}];\n\n// same for trace attributes: if `attr` is given it's in layout,\n// or with no `attr` we use `trace.uirevision`\nvar traceUIControlPatterns = [{\n  pattern: /^selectedpoints$/,\n  attr: 'selectionrevision'\n},\n// \"visible\" includes trace.transforms[i].styles[j].value.visible\n{\n  pattern: /(^|value\\.)visible$/,\n  attr: 'legend.uirevision'\n}, {\n  pattern: /^dimensions\\[\\d+\\]\\.constraintrange/\n}, {\n  pattern: /^node\\.(x|y|groups)/\n},\n// for Sankey nodes\n{\n  pattern: /^level$/\n},\n// for Sunburst, Treemap and Icicle traces\n\n// below this you must be in editable: true mode\n// TODO: I still put name and title with `trace.uirevision`\n// reasonable or should these be `editrevision`?\n// Also applies to axis titles up in the layout section\n\n// \"name\" also includes transform.styles\n{\n  pattern: /(^|value\\.)name$/\n},\n// including nested colorbar attributes (ie marker.colorbar)\n{\n  pattern: /colorbar\\.title\\.text$/\n}, {\n  pattern: /colorbar\\.(x|y)$/,\n  attr: 'editrevision'\n}];\nfunction findUIPattern(key, patternSpecs) {\n  for (var i = 0; i < patternSpecs.length; i++) {\n    var spec = patternSpecs[i];\n    var match = key.match(spec.pattern);\n    if (match) {\n      var head = match[1] || '';\n      return {\n        head: head,\n        tail: key.substr(head.length + 1),\n        attr: spec.attr\n      };\n    }\n  }\n}\n\n// We're finding the new uirevision before supplyDefaults, so do the\n// inheritance manually. Note that only `undefined` inherits - other\n// falsy values are returned.\nfunction getNewRev(revAttr, container) {\n  var newRev = nestedProperty(container, revAttr).get();\n  if (newRev !== undefined) return newRev;\n  var parts = revAttr.split('.');\n  parts.pop();\n  while (parts.length > 1) {\n    parts.pop();\n    newRev = nestedProperty(container, parts.join('.') + '.uirevision').get();\n    if (newRev !== undefined) return newRev;\n  }\n  return container.uirevision;\n}\nfunction getFullTraceIndexFromUid(uid, fullData) {\n  for (var i = 0; i < fullData.length; i++) {\n    if (fullData[i]._fullInput.uid === uid) return i;\n  }\n  return -1;\n}\nfunction getTraceIndexFromUid(uid, data, tracei) {\n  for (var i = 0; i < data.length; i++) {\n    if (data[i].uid === uid) return i;\n  }\n  // fall back on trace order, but only if user didn't provide a uid for that trace\n  return !data[tracei] || data[tracei].uid ? -1 : tracei;\n}\nfunction valsMatch(v1, v2) {\n  var v1IsObj = Lib.isPlainObject(v1);\n  var v1IsArray = Array.isArray(v1);\n  if (v1IsObj || v1IsArray) {\n    return (v1IsObj && Lib.isPlainObject(v2) || v1IsArray && Array.isArray(v2)) && JSON.stringify(v1) === JSON.stringify(v2);\n  }\n  return v1 === v2;\n}\nfunction applyUIRevisions(data, layout, oldFullData, oldFullLayout) {\n  var layoutPreGUI = oldFullLayout._preGUI;\n  var key, revAttr, oldRev, newRev, match, preGUIVal, newNP, newVal, head, tail;\n  var bothInheritAutorange = [];\n  var newAutorangeIn = {};\n  var newRangeAccepted = {};\n  for (key in layoutPreGUI) {\n    match = findUIPattern(key, layoutUIControlPatterns);\n    if (match) {\n      head = match.head;\n      tail = match.tail;\n      revAttr = match.attr || head + '.uirevision';\n      oldRev = nestedProperty(oldFullLayout, revAttr).get();\n      newRev = oldRev && getNewRev(revAttr, layout);\n      if (newRev && newRev === oldRev) {\n        preGUIVal = layoutPreGUI[key];\n        if (preGUIVal === null) preGUIVal = undefined;\n        newNP = nestedProperty(layout, key);\n        newVal = newNP.get();\n        if (valsMatch(newVal, preGUIVal)) {\n          if (newVal === undefined && tail === 'autorange') {\n            bothInheritAutorange.push(head);\n          }\n          newNP.set(undefinedToNull(nestedProperty(oldFullLayout, key).get()));\n          continue;\n        } else if (tail === 'autorange' || tail.substr(0, 6) === 'range[') {\n          // Special case for (auto)range since we push it back into the layout\n          // so all null should be treated equivalently to autorange: true with any range\n          var pre0 = layoutPreGUI[head + '.range[0]'];\n          var pre1 = layoutPreGUI[head + '.range[1]'];\n          var preAuto = layoutPreGUI[head + '.autorange'];\n          if (preAuto || preAuto === null && pre0 === null && pre1 === null) {\n            // Only read the input layout once and stash the result,\n            // so we get it before we start modifying it\n            if (!(head in newAutorangeIn)) {\n              var newContainer = nestedProperty(layout, head).get();\n              newAutorangeIn[head] = newContainer && (newContainer.autorange || newContainer.autorange !== false && (!newContainer.range || newContainer.range.length !== 2));\n            }\n            if (newAutorangeIn[head]) {\n              newNP.set(undefinedToNull(nestedProperty(oldFullLayout, key).get()));\n              continue;\n            }\n          }\n        }\n      }\n    } else {\n      Lib.warn('unrecognized GUI edit: ' + key);\n    }\n    // if we got this far, the new value was accepted as the new starting\n    // point (either because it changed or revision changed)\n    // so remove it from _preGUI for next time.\n    delete layoutPreGUI[key];\n    if (match && match.tail.substr(0, 6) === 'range[') {\n      newRangeAccepted[match.head] = 1;\n    }\n  }\n\n  // More special logic for `autorange`, since it interacts with `range`:\n  // If the new figure's matching `range` was kept, and `autorange`\n  // wasn't supplied explicitly in either the original or the new figure,\n  // we shouldn't alter that - but we may just have done that, so fix it.\n  for (var i = 0; i < bothInheritAutorange.length; i++) {\n    var axAttr = bothInheritAutorange[i];\n    if (newRangeAccepted[axAttr]) {\n      var newAx = nestedProperty(layout, axAttr).get();\n      if (newAx) delete newAx.autorange;\n    }\n  }\n\n  // Now traces - try to match them up by uid (in case we added/deleted in\n  // the middle), then fall back on index.\n  var allTracePreGUI = oldFullLayout._tracePreGUI;\n  for (var uid in allTracePreGUI) {\n    var tracePreGUI = allTracePreGUI[uid];\n    var newTrace = null;\n    var fullInput;\n    for (key in tracePreGUI) {\n      // wait until we know we have preGUI values to look for traces\n      // but if we don't find both, stop looking at this uid\n      if (!newTrace) {\n        var fulli = getFullTraceIndexFromUid(uid, oldFullData);\n        if (fulli < 0) {\n          // Somehow we didn't even have this trace in oldFullData...\n          // I guess this could happen with `deleteTraces` or something\n          delete allTracePreGUI[uid];\n          break;\n        }\n        var fullTrace = oldFullData[fulli];\n        fullInput = fullTrace._fullInput;\n        var newTracei = getTraceIndexFromUid(uid, data, fullInput.index);\n        if (newTracei < 0) {\n          // No match in new data\n          delete allTracePreGUI[uid];\n          break;\n        }\n        newTrace = data[newTracei];\n      }\n      match = findUIPattern(key, traceUIControlPatterns);\n      if (match) {\n        if (match.attr) {\n          oldRev = nestedProperty(oldFullLayout, match.attr).get();\n          newRev = oldRev && getNewRev(match.attr, layout);\n        } else {\n          oldRev = fullInput.uirevision;\n          // inheritance for trace.uirevision is simple, just layout.uirevision\n          newRev = newTrace.uirevision;\n          if (newRev === undefined) newRev = layout.uirevision;\n        }\n        if (newRev && newRev === oldRev) {\n          preGUIVal = tracePreGUI[key];\n          if (preGUIVal === null) preGUIVal = undefined;\n          newNP = nestedProperty(newTrace, key);\n          newVal = newNP.get();\n          if (valsMatch(newVal, preGUIVal)) {\n            newNP.set(undefinedToNull(nestedProperty(fullInput, key).get()));\n            continue;\n          }\n        }\n      } else {\n        Lib.warn('unrecognized GUI edit: ' + key + ' in trace uid ' + uid);\n      }\n      delete tracePreGUI[key];\n    }\n  }\n}\n\n/**\n * Plotly.react:\n * A plot/update method that takes the full plot state (same API as plot/newPlot)\n * and diffs to determine the minimal update pathway\n *\n * @param {string id or DOM element} gd\n *      the id or DOM element of the graph container div\n * @param {array of objects} data\n *      array of traces, containing the data and display information for each trace\n * @param {object} layout\n *      object describing the overall display of the plot,\n *      all the stuff that doesn't pertain to any individual trace\n * @param {object} config\n *      configuration options (see ./plot_config.js for more info)\n *\n * OR\n *\n * @param {string id or DOM element} gd\n *      the id or DOM element of the graph container div\n * @param {object} figure\n *      object containing `data`, `layout`, `config`, and `frames` members\n *\n */\nfunction react(gd, data, layout, config) {\n  var frames, plotDone;\n  function addFrames() {\n    return exports.addFrames(gd, frames);\n  }\n  gd = Lib.getGraphDiv(gd);\n  helpers.clearPromiseQueue(gd);\n  var oldFullData = gd._fullData;\n  var oldFullLayout = gd._fullLayout;\n\n  // you can use this as the initial draw as well as to update\n  if (!Lib.isPlotDiv(gd) || !oldFullData || !oldFullLayout) {\n    plotDone = exports.newPlot(gd, data, layout, config);\n  } else {\n    if (Lib.isPlainObject(data)) {\n      var obj = data;\n      data = obj.data;\n      layout = obj.layout;\n      config = obj.config;\n      frames = obj.frames;\n    }\n    var configChanged = false;\n    // assume that if there's a config at all, we're reacting to it too,\n    // and completely replace the previous config\n    if (config) {\n      var oldConfig = Lib.extendDeep({}, gd._context);\n      gd._context = undefined;\n      setPlotContext(gd, config);\n      configChanged = diffConfig(oldConfig, gd._context);\n    }\n    gd.data = data || [];\n    helpers.cleanData(gd.data);\n    gd.layout = layout || {};\n    helpers.cleanLayout(gd.layout);\n    applyUIRevisions(gd.data, gd.layout, oldFullData, oldFullLayout);\n\n    // \"true\" skips updating calcdata and remapping arrays from calcTransforms,\n    // which supplyDefaults usually does at the end, but we may need to NOT do\n    // if the diff (which we haven't determined yet) says we'll recalc\n    Plots.supplyDefaults(gd, {\n      skipUpdateCalc: true\n    });\n    var newFullData = gd._fullData;\n    var newFullLayout = gd._fullLayout;\n    var immutable = newFullLayout.datarevision === undefined;\n    var transition = newFullLayout.transition;\n    var relayoutFlags = diffLayout(gd, oldFullLayout, newFullLayout, immutable, transition);\n    var newDataRevision = relayoutFlags.newDataRevision;\n    var restyleFlags = diffData(gd, oldFullData, newFullData, immutable, transition, newDataRevision);\n\n    // TODO: how to translate this part of relayout to Plotly.react?\n    // // Setting width or height to null must reset the graph's width / height\n    // // back to its initial value as computed during the first pass in Plots.plotAutoSize.\n    // //\n    // // To do so, we must manually set them back here using the _initialAutoSize cache.\n    // if(['width', 'height'].indexOf(ai) !== -1 && vi === null) {\n    //     fullLayout[ai] = gd._initialAutoSize[ai];\n    // }\n\n    if (updateAutosize(gd)) relayoutFlags.layoutReplot = true;\n\n    // clear calcdata and empty categories if required\n    if (restyleFlags.calc || relayoutFlags.calc) {\n      gd.calcdata = undefined;\n      var allNames = Object.getOwnPropertyNames(newFullLayout);\n      for (var q = 0; q < allNames.length; q++) {\n        var name = allNames[q];\n        var start = name.substring(0, 5);\n        if (start === 'xaxis' || start === 'yaxis') {\n          var emptyCategories = newFullLayout[name]._emptyCategories;\n          if (emptyCategories) emptyCategories();\n        }\n      }\n      // otherwise do the calcdata updates and calcTransform array remaps that we skipped earlier\n    } else {\n      Plots.supplyDefaultsUpdateCalc(gd.calcdata, newFullData);\n    }\n\n    // Note: what restyle/relayout use impliedEdits and clearAxisTypes for\n    // must be handled by the user when using Plotly.react.\n\n    // fill in redraw sequence\n    var seq = [];\n    if (frames) {\n      gd._transitionData = {};\n      Plots.createTransitionData(gd);\n      seq.push(addFrames);\n    }\n\n    // Transition pathway,\n    // only used when 'transition' is set by user and\n    // when at least one animatable attribute has changed,\n    // N.B. config changed aren't animatable\n    if (newFullLayout.transition && !configChanged && (restyleFlags.anim || relayoutFlags.anim)) {\n      if (relayoutFlags.ticks) seq.push(subroutines.doTicksRelayout);\n      Plots.doCalcdata(gd);\n      subroutines.doAutoRangeAndConstraints(gd);\n      seq.push(function () {\n        return Plots.transitionFromReact(gd, restyleFlags, relayoutFlags, oldFullLayout);\n      });\n    } else if (restyleFlags.fullReplot || relayoutFlags.layoutReplot || configChanged) {\n      gd._fullLayout._skipDefaults = true;\n      seq.push(exports._doPlot);\n    } else {\n      for (var componentType in relayoutFlags.arrays) {\n        var indices = relayoutFlags.arrays[componentType];\n        if (indices.length) {\n          var drawOne = Registry.getComponentMethod(componentType, 'drawOne');\n          if (drawOne !== Lib.noop) {\n            for (var i = 0; i < indices.length; i++) {\n              drawOne(gd, indices[i]);\n            }\n          } else {\n            var draw = Registry.getComponentMethod(componentType, 'draw');\n            if (draw === Lib.noop) {\n              throw new Error('cannot draw components: ' + componentType);\n            }\n            draw(gd);\n          }\n        }\n      }\n      seq.push(Plots.previousPromises);\n      if (restyleFlags.style) seq.push(subroutines.doTraceStyle);\n      if (restyleFlags.colorbars || relayoutFlags.colorbars) seq.push(subroutines.doColorBars);\n      if (relayoutFlags.legend) seq.push(subroutines.doLegend);\n      if (relayoutFlags.layoutstyle) seq.push(subroutines.layoutStyles);\n      if (relayoutFlags.axrange) addAxRangeSequence(seq);\n      if (relayoutFlags.ticks) seq.push(subroutines.doTicksRelayout);\n      if (relayoutFlags.modebar) seq.push(subroutines.doModeBar);\n      if (relayoutFlags.camera) seq.push(subroutines.doCamera);\n      seq.push(emitAfterPlot);\n    }\n    seq.push(Plots.rehover, Plots.redrag, Plots.reselect);\n    plotDone = Lib.syncOrAsync(seq, gd);\n    if (!plotDone || !plotDone.then) plotDone = Promise.resolve(gd);\n  }\n  return plotDone.then(function () {\n    gd.emit('plotly_react', {\n      data: data,\n      layout: layout\n    });\n    return gd;\n  });\n}\nfunction diffData(gd, oldFullData, newFullData, immutable, transition, newDataRevision) {\n  var sameTraceLength = oldFullData.length === newFullData.length;\n  if (!transition && !sameTraceLength) {\n    return {\n      fullReplot: true,\n      calc: true\n    };\n  }\n  var flags = editTypes.traceFlags();\n  flags.arrays = {};\n  flags.nChanges = 0;\n  flags.nChangesAnim = 0;\n  var i, trace;\n  function getTraceValObject(parts) {\n    var out = PlotSchema.getTraceValObject(trace, parts);\n    if (!trace._module.animatable && out.anim) {\n      out.anim = false;\n    }\n    return out;\n  }\n  var diffOpts = {\n    getValObject: getTraceValObject,\n    flags: flags,\n    immutable: immutable,\n    transition: transition,\n    newDataRevision: newDataRevision,\n    gd: gd\n  };\n  var seenUIDs = {};\n  for (i = 0; i < oldFullData.length; i++) {\n    if (newFullData[i]) {\n      trace = newFullData[i]._fullInput;\n      if (Plots.hasMakesDataTransform(trace)) trace = newFullData[i];\n      if (seenUIDs[trace.uid]) continue;\n      seenUIDs[trace.uid] = 1;\n      getDiffFlags(oldFullData[i]._fullInput, trace, [], diffOpts);\n    }\n  }\n  if (flags.calc || flags.plot) {\n    flags.fullReplot = true;\n  }\n  if (transition && flags.nChanges && flags.nChangesAnim) {\n    flags.anim = flags.nChanges === flags.nChangesAnim && sameTraceLength ? 'all' : 'some';\n  }\n  return flags;\n}\nfunction diffLayout(gd, oldFullLayout, newFullLayout, immutable, transition) {\n  var flags = editTypes.layoutFlags();\n  flags.arrays = {};\n  flags.rangesAltered = {};\n  flags.nChanges = 0;\n  flags.nChangesAnim = 0;\n  function getLayoutValObject(parts) {\n    return PlotSchema.getLayoutValObject(newFullLayout, parts);\n  }\n  var diffOpts = {\n    getValObject: getLayoutValObject,\n    flags: flags,\n    immutable: immutable,\n    transition: transition,\n    gd: gd\n  };\n  getDiffFlags(oldFullLayout, newFullLayout, [], diffOpts);\n  if (flags.plot || flags.calc) {\n    flags.layoutReplot = true;\n  }\n  if (transition && flags.nChanges && flags.nChangesAnim) {\n    flags.anim = flags.nChanges === flags.nChangesAnim ? 'all' : 'some';\n  }\n  return flags;\n}\nfunction getDiffFlags(oldContainer, newContainer, outerparts, opts) {\n  var valObject, key, astr;\n  var getValObject = opts.getValObject;\n  var flags = opts.flags;\n  var immutable = opts.immutable;\n  var inArray = opts.inArray;\n  var arrayIndex = opts.arrayIndex;\n  function changed() {\n    var editType = valObject.editType;\n    if (inArray && editType.indexOf('arraydraw') !== -1) {\n      Lib.pushUnique(flags.arrays[inArray], arrayIndex);\n      return;\n    }\n    editTypes.update(flags, valObject);\n    if (editType !== 'none') {\n      flags.nChanges++;\n    }\n\n    // track animatable changes\n    if (opts.transition && valObject.anim) {\n      flags.nChangesAnim++;\n    }\n\n    // track cartesian axes with altered ranges\n    if (AX_RANGE_RE.test(astr) || AX_AUTORANGE_RE.test(astr)) {\n      flags.rangesAltered[outerparts[0]] = 1;\n    }\n\n    // clear _inputDomain on cartesian axes with altered domains\n    if (AX_DOMAIN_RE.test(astr)) {\n      nestedProperty(newContainer, '_inputDomain').set(null);\n    }\n\n    // track datarevision changes\n    if (key === 'datarevision') {\n      flags.newDataRevision = 1;\n    }\n  }\n  function valObjectCanBeDataArray(valObject) {\n    return valObject.valType === 'data_array' || valObject.arrayOk;\n  }\n  for (key in oldContainer) {\n    // short-circuit based on previous calls or previous keys that already maximized the pathway\n    if (flags.calc && !opts.transition) return;\n    var oldVal = oldContainer[key];\n    var newVal = newContainer[key];\n    var parts = outerparts.concat(key);\n    astr = parts.join('.');\n    if (key.charAt(0) === '_' || typeof oldVal === 'function' || oldVal === newVal) continue;\n\n    // FIXME: ax.tick0 and dtick get filled in during plotting (except for geo subplots),\n    // and unlike other auto values they don't make it back into the input,\n    // so newContainer won't have them.\n    if ((key === 'tick0' || key === 'dtick') && outerparts[0] !== 'geo') {\n      var tickMode = newContainer.tickmode;\n      if (tickMode === 'auto' || tickMode === 'array' || !tickMode) continue;\n    }\n    // FIXME: Similarly for axis ranges for 3D\n    // contourcarpet doesn't HAVE zmin/zmax, they're just auto-added. It needs them.\n    if (key === 'range' && newContainer.autorange) continue;\n    if ((key === 'zmin' || key === 'zmax') && newContainer.type === 'contourcarpet') continue;\n    valObject = getValObject(parts);\n\n    // in case type changed, we may not even *have* a valObject.\n    if (!valObject) continue;\n    if (valObject._compareAsJSON && JSON.stringify(oldVal) === JSON.stringify(newVal)) continue;\n    var valType = valObject.valType;\n    var i;\n    var canBeDataArray = valObjectCanBeDataArray(valObject);\n    var wasArray = Array.isArray(oldVal);\n    var nowArray = Array.isArray(newVal);\n\n    // hack for traces that modify the data in supplyDefaults, like\n    // converting 1D to 2D arrays, which will always create new objects\n    if (wasArray && nowArray) {\n      var inputKey = '_input_' + key;\n      var oldValIn = oldContainer[inputKey];\n      var newValIn = newContainer[inputKey];\n      if (Array.isArray(oldValIn) && oldValIn === newValIn) continue;\n    }\n    if (newVal === undefined) {\n      if (canBeDataArray && wasArray) flags.calc = true;else changed();\n    } else if (valObject._isLinkedToArray) {\n      var arrayEditIndices = [];\n      var extraIndices = false;\n      if (!inArray) flags.arrays[key] = arrayEditIndices;\n      var minLen = Math.min(oldVal.length, newVal.length);\n      var maxLen = Math.max(oldVal.length, newVal.length);\n      if (minLen !== maxLen) {\n        if (valObject.editType === 'arraydraw') {\n          extraIndices = true;\n        } else {\n          changed();\n          continue;\n        }\n      }\n      for (i = 0; i < minLen; i++) {\n        getDiffFlags(oldVal[i], newVal[i], parts.concat(i),\n        // add array indices, but not if we're already in an array\n        Lib.extendFlat({\n          inArray: key,\n          arrayIndex: i\n        }, opts));\n      }\n\n      // put this at the end so that we know our collected array indices are sorted\n      // but the check for length changes happens up front so we can short-circuit\n      // diffing if appropriate\n      if (extraIndices) {\n        for (i = minLen; i < maxLen; i++) {\n          arrayEditIndices.push(i);\n        }\n      }\n    } else if (!valType && Lib.isPlainObject(oldVal)) {\n      getDiffFlags(oldVal, newVal, parts, opts);\n    } else if (canBeDataArray) {\n      if (wasArray && nowArray) {\n        // don't try to diff two data arrays. If immutable we know the data changed,\n        // if not, assume it didn't and let `layout.datarevision` tell us if it did\n        if (immutable) {\n          flags.calc = true;\n        }\n\n        // look for animatable attributes when the data changed\n        if (immutable || opts.newDataRevision) {\n          changed();\n        }\n      } else if (wasArray !== nowArray) {\n        flags.calc = true;\n      } else changed();\n    } else if (wasArray && nowArray) {\n      // info array, colorscale, 'any' - these are short, just stringify.\n      // I don't *think* that covers up any real differences post-validation, does it?\n      // otherwise we need to dive in 1 (info_array) or 2 (colorscale) levels and compare\n      // all elements.\n      if (oldVal.length !== newVal.length || String(oldVal) !== String(newVal)) {\n        changed();\n      }\n    } else {\n      changed();\n    }\n  }\n  for (key in newContainer) {\n    if (!(key in oldContainer || key.charAt(0) === '_' || typeof newContainer[key] === 'function')) {\n      valObject = getValObject(outerparts.concat(key));\n      if (valObjectCanBeDataArray(valObject) && Array.isArray(newContainer[key])) {\n        flags.calc = true;\n        return;\n      } else changed();\n    }\n  }\n}\n\n/*\n * simple diff for config - for now, just treat all changes as equivalent\n */\nfunction diffConfig(oldConfig, newConfig) {\n  var key;\n  for (key in oldConfig) {\n    if (key.charAt(0) === '_') continue;\n    var oldVal = oldConfig[key];\n    var newVal = newConfig[key];\n    if (oldVal !== newVal) {\n      if (Lib.isPlainObject(oldVal) && Lib.isPlainObject(newVal)) {\n        if (diffConfig(oldVal, newVal)) {\n          return true;\n        }\n      } else if (Array.isArray(oldVal) && Array.isArray(newVal)) {\n        if (oldVal.length !== newVal.length) {\n          return true;\n        }\n        for (var i = 0; i < oldVal.length; i++) {\n          if (oldVal[i] !== newVal[i]) {\n            if (Lib.isPlainObject(oldVal[i]) && Lib.isPlainObject(newVal[i])) {\n              if (diffConfig(oldVal[i], newVal[i])) {\n                return true;\n              }\n            } else {\n              return true;\n            }\n          }\n        }\n      } else {\n        return true;\n      }\n    }\n  }\n}\n\n/**\n * Animate to a frame, sequence of frame, frame group, or frame definition\n *\n * @param {string id or DOM element} gd\n *      the id or DOM element of the graph container div\n *\n * @param {string or object or array of strings or array of objects} frameOrGroupNameOrFrameList\n *      a single frame, array of frames, or group to which to animate. The intent is\n *      inferred by the type of the input. Valid inputs are:\n *\n *      - string, e.g. 'groupname': animate all frames of a given `group` in the order\n *            in which they are defined via `Plotly.addFrames`.\n *\n *      - array of strings, e.g. ['frame1', frame2']: a list of frames by name to which\n *            to animate in sequence\n *\n *      - object: {data: ...}: a frame definition to which to animate. The frame is not\n *            and does not need to be added via `Plotly.addFrames`. It may contain any of\n *            the properties of a frame, including `data`, `layout`, and `traces`. The\n *            frame is used as provided and does not use the `baseframe` property.\n *\n *      - array of objects, e.g. [{data: ...}, {data: ...}]: a list of frame objects,\n *            each following the same rules as a single `object`.\n *\n * @param {object} animationOpts\n *      configuration for the animation\n */\nfunction animate(gd, frameOrGroupNameOrFrameList, animationOpts) {\n  gd = Lib.getGraphDiv(gd);\n  if (!Lib.isPlotDiv(gd)) {\n    throw new Error('This element is not a Plotly plot: ' + gd + '. It\\'s likely that you\\'ve failed ' + 'to create a plot before animating it. For more details, see ' + 'https://plotly.com/javascript/animations/');\n  }\n  var trans = gd._transitionData;\n\n  // This is the queue of frames that will be animated as soon as possible. They\n  // are popped immediately upon the *start* of a transition:\n  if (!trans._frameQueue) {\n    trans._frameQueue = [];\n  }\n  animationOpts = Plots.supplyAnimationDefaults(animationOpts);\n  var transitionOpts = animationOpts.transition;\n  var frameOpts = animationOpts.frame;\n\n  // Since frames are popped immediately, an empty queue only means all frames have\n  // *started* to transition, not that the animation is complete. To solve that,\n  // track a separate counter that increments at the same time as frames are added\n  // to the queue, but decrements only when the transition is complete.\n  if (trans._frameWaitingCnt === undefined) {\n    trans._frameWaitingCnt = 0;\n  }\n  function getTransitionOpts(i) {\n    if (Array.isArray(transitionOpts)) {\n      if (i >= transitionOpts.length) {\n        return transitionOpts[0];\n      } else {\n        return transitionOpts[i];\n      }\n    } else {\n      return transitionOpts;\n    }\n  }\n  function getFrameOpts(i) {\n    if (Array.isArray(frameOpts)) {\n      if (i >= frameOpts.length) {\n        return frameOpts[0];\n      } else {\n        return frameOpts[i];\n      }\n    } else {\n      return frameOpts;\n    }\n  }\n\n  // Execute a callback after the wrapper function has been called n times.\n  // This is used to defer the resolution until a transition has resolved *and*\n  // the frame has completed. If it's not done this way, then we get a race\n  // condition in which the animation might resolve before a transition is complete\n  // or vice versa.\n  function callbackOnNthTime(cb, n) {\n    var cnt = 0;\n    return function () {\n      if (cb && ++cnt === n) {\n        return cb();\n      }\n    };\n  }\n  return new Promise(function (resolve, reject) {\n    function discardExistingFrames() {\n      if (trans._frameQueue.length === 0) {\n        return;\n      }\n      while (trans._frameQueue.length) {\n        var next = trans._frameQueue.pop();\n        if (next.onInterrupt) {\n          next.onInterrupt();\n        }\n      }\n      gd.emit('plotly_animationinterrupted', []);\n    }\n    function queueFrames(frameList) {\n      if (frameList.length === 0) return;\n      for (var i = 0; i < frameList.length; i++) {\n        var computedFrame;\n        if (frameList[i].type === 'byname') {\n          // If it's a named frame, compute it:\n          computedFrame = Plots.computeFrame(gd, frameList[i].name);\n        } else {\n          // Otherwise we must have been given a simple object, so treat\n          // the input itself as the computed frame.\n          computedFrame = frameList[i].data;\n        }\n        var frameOpts = getFrameOpts(i);\n        var transitionOpts = getTransitionOpts(i);\n\n        // It doesn't make much sense for the transition duration to be greater than\n        // the frame duration, so limit it:\n        transitionOpts.duration = Math.min(transitionOpts.duration, frameOpts.duration);\n        var nextFrame = {\n          frame: computedFrame,\n          name: frameList[i].name,\n          frameOpts: frameOpts,\n          transitionOpts: transitionOpts\n        };\n        if (i === frameList.length - 1) {\n          // The last frame in this .animate call stores the promise resolve\n          // and reject callbacks. This is how we ensure that the animation\n          // loop (which may exist as a result of a *different* .animate call)\n          // still resolves or rejecdts this .animate call's promise. once it's\n          // complete.\n          nextFrame.onComplete = callbackOnNthTime(resolve, 2);\n          nextFrame.onInterrupt = reject;\n        }\n        trans._frameQueue.push(nextFrame);\n      }\n\n      // Set it as never having transitioned to a frame. This will cause the animation\n      // loop to immediately transition to the next frame (which, for immediate mode,\n      // is the first frame in the list since all others would have been discarded\n      // below)\n      if (animationOpts.mode === 'immediate') {\n        trans._lastFrameAt = -Infinity;\n      }\n\n      // Only it's not already running, start a RAF loop. This could be avoided in the\n      // case that there's only one frame, but it significantly complicated the logic\n      // and only sped things up by about 5% or so for a lorenz attractor simulation.\n      // It would be a fine thing to implement, but the benefit of that optimization\n      // doesn't seem worth the extra complexity.\n      if (!trans._animationRaf) {\n        beginAnimationLoop();\n      }\n    }\n    function stopAnimationLoop() {\n      gd.emit('plotly_animated');\n\n      // Be sure to unset also since it's how we know whether a loop is already running:\n      window.cancelAnimationFrame(trans._animationRaf);\n      trans._animationRaf = null;\n    }\n    function nextFrame() {\n      if (trans._currentFrame && trans._currentFrame.onComplete) {\n        // Execute the callback and unset it to ensure it doesn't\n        // accidentally get called twice\n        trans._currentFrame.onComplete();\n      }\n      var newFrame = trans._currentFrame = trans._frameQueue.shift();\n      if (newFrame) {\n        // Since it's sometimes necessary to do deep digging into frame data,\n        // we'll consider it not 100% impossible for nulls or numbers to sneak through,\n        // so check when casting the name, just to be absolutely certain:\n        var stringName = newFrame.name ? newFrame.name.toString() : null;\n        gd._fullLayout._currentFrame = stringName;\n        trans._lastFrameAt = Date.now();\n        trans._timeToNext = newFrame.frameOpts.duration;\n\n        // This is simply called and it's left to .transition to decide how to manage\n        // interrupting current transitions. That means we don't need to worry about\n        // how it resolves or what happens after this:\n        Plots.transition(gd, newFrame.frame.data, newFrame.frame.layout, helpers.coerceTraceIndices(gd, newFrame.frame.traces), newFrame.frameOpts, newFrame.transitionOpts).then(function () {\n          if (newFrame.onComplete) {\n            newFrame.onComplete();\n          }\n        });\n        gd.emit('plotly_animatingframe', {\n          name: stringName,\n          frame: newFrame.frame,\n          animation: {\n            frame: newFrame.frameOpts,\n            transition: newFrame.transitionOpts\n          }\n        });\n      } else {\n        // If there are no more frames, then stop the RAF loop:\n        stopAnimationLoop();\n      }\n    }\n    function beginAnimationLoop() {\n      gd.emit('plotly_animating');\n\n      // If no timer is running, then set last frame = long ago so that the next\n      // frame is immediately transitioned:\n      trans._lastFrameAt = -Infinity;\n      trans._timeToNext = 0;\n      trans._runningTransitions = 0;\n      trans._currentFrame = null;\n      var doFrame = function () {\n        // This *must* be requested before nextFrame since nextFrame may decide\n        // to cancel it if there's nothing more to animated:\n        trans._animationRaf = window.requestAnimationFrame(doFrame);\n\n        // Check if we're ready for a new frame:\n        if (Date.now() - trans._lastFrameAt > trans._timeToNext) {\n          nextFrame();\n        }\n      };\n      doFrame();\n    }\n\n    // This is an animate-local counter that helps match up option input list\n    // items with the particular frame.\n    var configCounter = 0;\n    function setTransitionConfig(frame) {\n      if (Array.isArray(transitionOpts)) {\n        if (configCounter >= transitionOpts.length) {\n          frame.transitionOpts = transitionOpts[configCounter];\n        } else {\n          frame.transitionOpts = transitionOpts[0];\n        }\n      } else {\n        frame.transitionOpts = transitionOpts;\n      }\n      configCounter++;\n      return frame;\n    }\n\n    // Disambiguate what's sort of frames have been received\n    var i, frame;\n    var frameList = [];\n    var allFrames = frameOrGroupNameOrFrameList === undefined || frameOrGroupNameOrFrameList === null;\n    var isFrameArray = Array.isArray(frameOrGroupNameOrFrameList);\n    var isSingleFrame = !allFrames && !isFrameArray && Lib.isPlainObject(frameOrGroupNameOrFrameList);\n    if (isSingleFrame) {\n      // In this case, a simple object has been passed to animate.\n      frameList.push({\n        type: 'object',\n        data: setTransitionConfig(Lib.extendFlat({}, frameOrGroupNameOrFrameList))\n      });\n    } else if (allFrames || ['string', 'number'].indexOf(typeof frameOrGroupNameOrFrameList) !== -1) {\n      // In this case, null or undefined has been passed so that we want to\n      // animate *all* currently defined frames\n      for (i = 0; i < trans._frames.length; i++) {\n        frame = trans._frames[i];\n        if (!frame) continue;\n        if (allFrames || String(frame.group) === String(frameOrGroupNameOrFrameList)) {\n          frameList.push({\n            type: 'byname',\n            name: String(frame.name),\n            data: setTransitionConfig({\n              name: frame.name\n            })\n          });\n        }\n      }\n    } else if (isFrameArray) {\n      for (i = 0; i < frameOrGroupNameOrFrameList.length; i++) {\n        var frameOrName = frameOrGroupNameOrFrameList[i];\n        if (['number', 'string'].indexOf(typeof frameOrName) !== -1) {\n          frameOrName = String(frameOrName);\n          // In this case, there's an array and this frame is a string name:\n          frameList.push({\n            type: 'byname',\n            name: frameOrName,\n            data: setTransitionConfig({\n              name: frameOrName\n            })\n          });\n        } else if (Lib.isPlainObject(frameOrName)) {\n          frameList.push({\n            type: 'object',\n            data: setTransitionConfig(Lib.extendFlat({}, frameOrName))\n          });\n        }\n      }\n    }\n\n    // Verify that all of these frames actually exist; return and reject if not:\n    for (i = 0; i < frameList.length; i++) {\n      frame = frameList[i];\n      if (frame.type === 'byname' && !trans._frameHash[frame.data.name]) {\n        Lib.warn('animate failure: frame not found: \"' + frame.data.name + '\"');\n        reject();\n        return;\n      }\n    }\n\n    // If the mode is either next or immediate, then all currently queued frames must\n    // be dumped and the corresponding .animate promises rejected.\n    if (['next', 'immediate'].indexOf(animationOpts.mode) !== -1) {\n      discardExistingFrames();\n    }\n    if (animationOpts.direction === 'reverse') {\n      frameList.reverse();\n    }\n    var currentFrame = gd._fullLayout._currentFrame;\n    if (currentFrame && animationOpts.fromcurrent) {\n      var idx = -1;\n      for (i = 0; i < frameList.length; i++) {\n        frame = frameList[i];\n        if (frame.type === 'byname' && frame.name === currentFrame) {\n          idx = i;\n          break;\n        }\n      }\n      if (idx > 0 && idx < frameList.length - 1) {\n        var filteredFrameList = [];\n        for (i = 0; i < frameList.length; i++) {\n          frame = frameList[i];\n          if (frameList[i].type !== 'byname' || i > idx) {\n            filteredFrameList.push(frame);\n          }\n        }\n        frameList = filteredFrameList;\n      }\n    }\n    if (frameList.length > 0) {\n      queueFrames(frameList);\n    } else {\n      // This is the case where there were simply no frames. It's a little strange\n      // since there's not much to do:\n      gd.emit('plotly_animated');\n      resolve();\n    }\n  });\n}\n\n/**\n * Register new frames\n *\n * @param {string id or DOM element} gd\n *      the id or DOM element of the graph container div\n *\n * @param {array of objects} frameList\n *      list of frame definitions, in which each object includes any of:\n *      - name: {string} name of frame to add\n *      - data: {array of objects} trace data\n *      - layout {object} layout definition\n *      - traces {array} trace indices\n *      - baseframe {string} name of frame from which this frame gets defaults\n *\n *  @param {array of integers} indices\n *      an array of integer indices matching the respective frames in `frameList`. If not\n *      provided, an index will be provided in serial order. If already used, the frame\n *      will be overwritten.\n */\nfunction addFrames(gd, frameList, indices) {\n  gd = Lib.getGraphDiv(gd);\n  if (frameList === null || frameList === undefined) {\n    return Promise.resolve();\n  }\n  if (!Lib.isPlotDiv(gd)) {\n    throw new Error('This element is not a Plotly plot: ' + gd + '. It\\'s likely that you\\'ve failed ' + 'to create a plot before adding frames. For more details, see ' + 'https://plotly.com/javascript/animations/');\n  }\n  var i, frame, j, idx;\n  var _frames = gd._transitionData._frames;\n  var _frameHash = gd._transitionData._frameHash;\n  if (!Array.isArray(frameList)) {\n    throw new Error('addFrames failure: frameList must be an Array of frame definitions' + frameList);\n  }\n\n  // Create a sorted list of insertions since we run into lots of problems if these\n  // aren't in ascending order of index:\n  //\n  // Strictly for sorting. Make sure this is guaranteed to never collide with any\n  // already-exisisting indices:\n  var bigIndex = _frames.length + frameList.length * 2;\n  var insertions = [];\n  var _frameHashLocal = {};\n  for (i = frameList.length - 1; i >= 0; i--) {\n    if (!Lib.isPlainObject(frameList[i])) continue;\n\n    // The entire logic for checking for this type of name collision can be removed once we migrate to ES6 and\n    // use a Map instead of an Object instance, as Map keys aren't converted to strings.\n    var lookupName = frameList[i].name;\n    var name = (_frameHash[lookupName] || _frameHashLocal[lookupName] || {}).name;\n    var newName = frameList[i].name;\n    var collisionPresent = _frameHash[name] || _frameHashLocal[name];\n    if (name && newName && typeof newName === 'number' && collisionPresent && numericNameWarningCount < numericNameWarningCountLimit) {\n      numericNameWarningCount++;\n      Lib.warn('addFrames: overwriting frame \"' + (_frameHash[name] || _frameHashLocal[name]).name + '\" with a frame whose name of type \"number\" also equates to \"' + name + '\". This is valid but may potentially lead to unexpected ' + 'behavior since all plotly.js frame names are stored internally ' + 'as strings.');\n      if (numericNameWarningCount === numericNameWarningCountLimit) {\n        Lib.warn('addFrames: This API call has yielded too many of these warnings. ' + 'For the rest of this call, further warnings about numeric frame ' + 'names will be suppressed.');\n      }\n    }\n    _frameHashLocal[lookupName] = {\n      name: lookupName\n    };\n    insertions.push({\n      frame: Plots.supplyFrameDefaults(frameList[i]),\n      index: indices && indices[i] !== undefined && indices[i] !== null ? indices[i] : bigIndex + i\n    });\n  }\n\n  // Sort this, taking note that undefined insertions end up at the end:\n  insertions.sort(function (a, b) {\n    if (a.index > b.index) return -1;\n    if (a.index < b.index) return 1;\n    return 0;\n  });\n  var ops = [];\n  var revops = [];\n  var frameCount = _frames.length;\n  for (i = insertions.length - 1; i >= 0; i--) {\n    frame = insertions[i].frame;\n    if (typeof frame.name === 'number') {\n      Lib.warn('Warning: addFrames accepts frames with numeric names, but the numbers are' + 'implicitly cast to strings');\n    }\n    if (!frame.name) {\n      // Repeatedly assign a default name, incrementing the counter each time until\n      // we get a name that's not in the hashed lookup table:\n      while (_frameHash[frame.name = 'frame ' + gd._transitionData._counter++]);\n    }\n    if (_frameHash[frame.name]) {\n      // If frame is present, overwrite its definition:\n      for (j = 0; j < _frames.length; j++) {\n        if ((_frames[j] || {}).name === frame.name) break;\n      }\n      ops.push({\n        type: 'replace',\n        index: j,\n        value: frame\n      });\n      revops.unshift({\n        type: 'replace',\n        index: j,\n        value: _frames[j]\n      });\n    } else {\n      // Otherwise insert it at the end of the list:\n      idx = Math.max(0, Math.min(insertions[i].index, frameCount));\n      ops.push({\n        type: 'insert',\n        index: idx,\n        value: frame\n      });\n      revops.unshift({\n        type: 'delete',\n        index: idx\n      });\n      frameCount++;\n    }\n  }\n  var undoFunc = Plots.modifyFrames;\n  var redoFunc = Plots.modifyFrames;\n  var undoArgs = [gd, revops];\n  var redoArgs = [gd, ops];\n  if (Queue) Queue.add(gd, undoFunc, undoArgs, redoFunc, redoArgs);\n  return Plots.modifyFrames(gd, ops);\n}\n\n/**\n * Delete frame\n *\n * @param {string id or DOM element} gd\n *      the id or DOM element of the graph container div\n *\n * @param {array of integers} frameList\n *      list of integer indices of frames to be deleted\n */\nfunction deleteFrames(gd, frameList) {\n  gd = Lib.getGraphDiv(gd);\n  if (!Lib.isPlotDiv(gd)) {\n    throw new Error('This element is not a Plotly plot: ' + gd);\n  }\n  var i, idx;\n  var _frames = gd._transitionData._frames;\n  var ops = [];\n  var revops = [];\n  if (!frameList) {\n    frameList = [];\n    for (i = 0; i < _frames.length; i++) {\n      frameList.push(i);\n    }\n  }\n  frameList = frameList.slice();\n  frameList.sort();\n  for (i = frameList.length - 1; i >= 0; i--) {\n    idx = frameList[i];\n    ops.push({\n      type: 'delete',\n      index: idx\n    });\n    revops.unshift({\n      type: 'insert',\n      index: idx,\n      value: _frames[idx]\n    });\n  }\n  var undoFunc = Plots.modifyFrames;\n  var redoFunc = Plots.modifyFrames;\n  var undoArgs = [gd, revops];\n  var redoArgs = [gd, ops];\n  if (Queue) Queue.add(gd, undoFunc, undoArgs, redoFunc, redoArgs);\n  return Plots.modifyFrames(gd, ops);\n}\n\n/**\n * Purge a graph container div back to its initial pre-_doPlot state\n *\n * @param {string id or DOM element} gd\n *      the id or DOM element of the graph container div\n */\nfunction purge(gd) {\n  gd = Lib.getGraphDiv(gd);\n  var fullLayout = gd._fullLayout || {};\n  var fullData = gd._fullData || [];\n\n  // remove gl contexts\n  Plots.cleanPlot([], {}, fullData, fullLayout);\n\n  // purge properties\n  Plots.purge(gd);\n\n  // purge event emitter methods\n  Events.purge(gd);\n\n  // remove plot container\n  if (fullLayout._container) fullLayout._container.remove();\n\n  // in contrast to _doPlots.purge which does NOT clear _context!\n  delete gd._context;\n  return gd;\n}\n\n// determines if the graph div requires a recalculation of its inverse matrix transforms by comparing old + new bounding boxes.\nfunction calcInverseTransform(gd) {\n  var fullLayout = gd._fullLayout;\n  var newBBox = gd.getBoundingClientRect();\n  if (Lib.equalDomRects(newBBox, fullLayout._lastBBox)) return;\n  var m = fullLayout._invTransform = Lib.inverseTransformMatrix(Lib.getFullTransformMatrix(gd));\n  fullLayout._invScaleX = Math.sqrt(m[0][0] * m[0][0] + m[0][1] * m[0][1] + m[0][2] * m[0][2]);\n  fullLayout._invScaleY = Math.sqrt(m[1][0] * m[1][0] + m[1][1] * m[1][1] + m[1][2] * m[1][2]);\n  fullLayout._lastBBox = newBBox;\n}\n\n// -------------------------------------------------------\n// makePlotFramework: Create the plot container and axes\n// -------------------------------------------------------\nfunction makePlotFramework(gd) {\n  var gd3 = d3.select(gd);\n  var fullLayout = gd._fullLayout;\n  fullLayout._calcInverseTransform = calcInverseTransform;\n  fullLayout._calcInverseTransform(gd);\n\n  // Plot container\n  fullLayout._container = gd3.selectAll('.plot-container').data([0]);\n  fullLayout._container.enter().insert('div', ':first-child').classed('plot-container', true).classed('plotly', true);\n\n  // Make the svg container\n  fullLayout._paperdiv = fullLayout._container.selectAll('.svg-container').data([0]);\n  fullLayout._paperdiv.enter().append('div').classed('user-select-none', true).classed('svg-container', true).style('position', 'relative');\n\n  // Make the graph containers\n  // start fresh each time we get here, so we know the order comes out\n  // right, rather than enter/exit which can muck up the order\n  // TODO: sort out all the ordering so we don't have to\n  // explicitly delete anything\n  // FIXME: parcoords reuses this object, not the best pattern\n  fullLayout._glcontainer = fullLayout._paperdiv.selectAll('.gl-container').data([{}]);\n  fullLayout._glcontainer.enter().append('div').classed('gl-container', true);\n  fullLayout._paperdiv.selectAll('.main-svg').remove();\n  fullLayout._paperdiv.select('.modebar-container').remove();\n  fullLayout._paper = fullLayout._paperdiv.insert('svg', ':first-child').classed('main-svg', true);\n  fullLayout._toppaper = fullLayout._paperdiv.append('svg').classed('main-svg', true);\n  fullLayout._modebardiv = fullLayout._paperdiv.append('div');\n  delete fullLayout._modeBar;\n  fullLayout._hoverpaper = fullLayout._paperdiv.append('svg').classed('main-svg', true);\n  if (!fullLayout._uid) {\n    var otherUids = {};\n    d3.selectAll('defs').each(function () {\n      if (this.id) otherUids[this.id.split('-')[1]] = 1;\n    });\n    fullLayout._uid = Lib.randstr(otherUids);\n  }\n  fullLayout._paperdiv.selectAll('.main-svg').attr(xmlnsNamespaces.svgAttrs);\n  fullLayout._defs = fullLayout._paper.append('defs').attr('id', 'defs-' + fullLayout._uid);\n  fullLayout._clips = fullLayout._defs.append('g').classed('clips', true);\n  fullLayout._topdefs = fullLayout._toppaper.append('defs').attr('id', 'topdefs-' + fullLayout._uid);\n  fullLayout._topclips = fullLayout._topdefs.append('g').classed('clips', true);\n  fullLayout._bgLayer = fullLayout._paper.append('g').classed('bglayer', true);\n  fullLayout._draggers = fullLayout._paper.append('g').classed('draglayer', true);\n\n  // lower shape/image layer - note that this is behind\n  // all subplots data/grids but above the backgrounds\n  // except inset subplots, whose backgrounds are drawn\n  // inside their own group so that they appear above\n  // the data for the main subplot\n  // lower shapes and images which are fully referenced to\n  // a subplot still get drawn within the subplot's group\n  // so they will work correctly on insets\n  var layerBelow = fullLayout._paper.append('g').classed('layer-below', true);\n  fullLayout._imageLowerLayer = layerBelow.append('g').classed('imagelayer', true);\n  fullLayout._shapeLowerLayer = layerBelow.append('g').classed('shapelayer', true);\n\n  // single cartesian layer for the whole plot\n  fullLayout._cartesianlayer = fullLayout._paper.append('g').classed('cartesianlayer', true);\n\n  // single polar layer for the whole plot\n  fullLayout._polarlayer = fullLayout._paper.append('g').classed('polarlayer', true);\n\n  // single smith layer for the whole plot\n  fullLayout._smithlayer = fullLayout._paper.append('g').classed('smithlayer', true);\n\n  // single ternary layer for the whole plot\n  fullLayout._ternarylayer = fullLayout._paper.append('g').classed('ternarylayer', true);\n\n  // single geo layer for the whole plot\n  fullLayout._geolayer = fullLayout._paper.append('g').classed('geolayer', true);\n\n  // single funnelarea layer for the whole plot\n  fullLayout._funnelarealayer = fullLayout._paper.append('g').classed('funnelarealayer', true);\n\n  // single pie layer for the whole plot\n  fullLayout._pielayer = fullLayout._paper.append('g').classed('pielayer', true);\n\n  // single treemap layer for the whole plot\n  fullLayout._iciclelayer = fullLayout._paper.append('g').classed('iciclelayer', true);\n\n  // single treemap layer for the whole plot\n  fullLayout._treemaplayer = fullLayout._paper.append('g').classed('treemaplayer', true);\n\n  // single sunburst layer for the whole plot\n  fullLayout._sunburstlayer = fullLayout._paper.append('g').classed('sunburstlayer', true);\n\n  // single indicator layer for the whole plot\n  fullLayout._indicatorlayer = fullLayout._toppaper.append('g').classed('indicatorlayer', true);\n\n  // fill in image server scrape-svg\n  fullLayout._glimages = fullLayout._paper.append('g').classed('glimages', true);\n\n  // lastly upper shapes, info (legend, annotations) and hover layers go on top\n  // these are in a different svg element normally, but get collapsed into a single\n  // svg when exporting (after inserting 3D)\n  // upper shapes/images are only those drawn above the whole plot, including subplots\n  var layerAbove = fullLayout._toppaper.append('g').classed('layer-above', true);\n  fullLayout._imageUpperLayer = layerAbove.append('g').classed('imagelayer', true);\n  fullLayout._shapeUpperLayer = layerAbove.append('g').classed('shapelayer', true);\n  fullLayout._selectionLayer = fullLayout._toppaper.append('g').classed('selectionlayer', true);\n  fullLayout._infolayer = fullLayout._toppaper.append('g').classed('infolayer', true);\n  fullLayout._menulayer = fullLayout._toppaper.append('g').classed('menulayer', true);\n  fullLayout._zoomlayer = fullLayout._toppaper.append('g').classed('zoomlayer', true);\n  fullLayout._hoverlayer = fullLayout._hoverpaper.append('g').classed('hoverlayer', true);\n\n  // Make the modebar container\n  fullLayout._modebardiv.classed('modebar-container', true).style('position', 'absolute').style('top', '0px').style('right', '0px');\n  gd.emit('plotly_framework');\n}\nexports.animate = animate;\nexports.addFrames = addFrames;\nexports.deleteFrames = deleteFrames;\nexports.addTraces = addTraces;\nexports.deleteTraces = deleteTraces;\nexports.extendTraces = extendTraces;\nexports.moveTraces = moveTraces;\nexports.prependTraces = prependTraces;\nexports.newPlot = newPlot;\nexports._doPlot = _doPlot;\nexports.purge = purge;\nexports.react = react;\nexports.redraw = redraw;\nexports.relayout = relayout;\nexports.restyle = restyle;\nexports.setPlotConfig = setPlotConfig;\nexports.update = update;\nexports._guiRelayout = guiEdit(relayout);\nexports._guiRestyle = guiEdit(restyle);\nexports._guiUpdate = guiEdit(update);\nexports._storeDirectGUIEdit = _storeDirectGUIEdit;\n\n/***/ }),\n\n/***/ 72075:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/**\n * This will be transferred over to gd and overridden by\n * config args to Plotly.newPlot.\n *\n * The defaults are the appropriate settings for plotly.js,\n * so we get the right experience without any config argument.\n *\n * N.B. the config options are not coerced using Lib.coerce so keys\n * like `valType` and `values` are only set for documentation purposes\n * at the moment.\n */\nvar configAttributes = {\n  staticPlot: {\n    valType: 'boolean',\n    dflt: false\n  },\n  typesetMath: {\n    valType: 'boolean',\n    dflt: true\n  },\n  plotlyServerURL: {\n    valType: 'string',\n    dflt: ''\n  },\n  editable: {\n    valType: 'boolean',\n    dflt: false\n  },\n  edits: {\n    annotationPosition: {\n      valType: 'boolean',\n      dflt: false\n    },\n    annotationTail: {\n      valType: 'boolean',\n      dflt: false\n    },\n    annotationText: {\n      valType: 'boolean',\n      dflt: false\n    },\n    axisTitleText: {\n      valType: 'boolean',\n      dflt: false\n    },\n    colorbarPosition: {\n      valType: 'boolean',\n      dflt: false\n    },\n    colorbarTitleText: {\n      valType: 'boolean',\n      dflt: false\n    },\n    legendPosition: {\n      valType: 'boolean',\n      dflt: false\n    },\n    legendText: {\n      valType: 'boolean',\n      dflt: false\n    },\n    shapePosition: {\n      valType: 'boolean',\n      dflt: false\n    },\n    titleText: {\n      valType: 'boolean',\n      dflt: false\n    }\n  },\n  editSelection: {\n    valType: 'boolean',\n    dflt: true\n  },\n  autosizable: {\n    valType: 'boolean',\n    dflt: false\n  },\n  responsive: {\n    valType: 'boolean',\n    dflt: false\n  },\n  fillFrame: {\n    valType: 'boolean',\n    dflt: false\n  },\n  frameMargins: {\n    valType: 'number',\n    dflt: 0,\n    min: 0,\n    max: 0.5\n  },\n  scrollZoom: {\n    valType: 'flaglist',\n    flags: ['cartesian', 'gl3d', 'geo', 'mapbox'],\n    extras: [true, false],\n    dflt: 'gl3d+geo+mapbox'\n  },\n  doubleClick: {\n    valType: 'enumerated',\n    values: [false, 'reset', 'autosize', 'reset+autosize'],\n    dflt: 'reset+autosize'\n  },\n  doubleClickDelay: {\n    valType: 'number',\n    dflt: 300,\n    min: 0\n  },\n  showAxisDragHandles: {\n    valType: 'boolean',\n    dflt: true\n  },\n  showAxisRangeEntryBoxes: {\n    valType: 'boolean',\n    dflt: true\n  },\n  showTips: {\n    valType: 'boolean',\n    dflt: true\n  },\n  showLink: {\n    valType: 'boolean',\n    dflt: false\n  },\n  linkText: {\n    valType: 'string',\n    dflt: 'Edit chart',\n    noBlank: true\n  },\n  sendData: {\n    valType: 'boolean',\n    dflt: true\n  },\n  showSources: {\n    valType: 'any',\n    dflt: false\n  },\n  displayModeBar: {\n    valType: 'enumerated',\n    values: ['hover', true, false],\n    dflt: 'hover'\n  },\n  showSendToCloud: {\n    valType: 'boolean',\n    dflt: false\n  },\n  showEditInChartStudio: {\n    valType: 'boolean',\n    dflt: false\n  },\n  modeBarButtonsToRemove: {\n    valType: 'any',\n    dflt: []\n  },\n  modeBarButtonsToAdd: {\n    valType: 'any',\n    dflt: []\n  },\n  modeBarButtons: {\n    valType: 'any',\n    dflt: false\n  },\n  toImageButtonOptions: {\n    valType: 'any',\n    dflt: {}\n  },\n  displaylogo: {\n    valType: 'boolean',\n    dflt: true\n  },\n  watermark: {\n    valType: 'boolean',\n    dflt: false\n  },\n  plotGlPixelRatio: {\n    valType: 'number',\n    dflt: 2,\n    min: 1,\n    max: 4\n  },\n  setBackground: {\n    valType: 'any',\n    dflt: 'transparent'\n  },\n  topojsonURL: {\n    valType: 'string',\n    noBlank: true,\n    dflt: 'https://cdn.plot.ly/'\n  },\n  mapboxAccessToken: {\n    valType: 'string',\n    dflt: null\n  },\n  logging: {\n    valType: 'integer',\n    min: 0,\n    max: 2,\n    dflt: 1\n  },\n  notifyOnLogging: {\n    valType: 'integer',\n    min: 0,\n    max: 2,\n    dflt: 0\n  },\n  queueLength: {\n    valType: 'integer',\n    min: 0,\n    dflt: 0\n  },\n  globalTransforms: {\n    valType: 'any',\n    dflt: []\n  },\n  locale: {\n    valType: 'string',\n    dflt: 'en-US'\n  },\n  locales: {\n    valType: 'any',\n    dflt: {}\n  }\n};\nvar dfltConfig = {};\nfunction crawl(src, target) {\n  for (var k in src) {\n    var obj = src[k];\n    if (obj.valType) {\n      target[k] = obj.dflt;\n    } else {\n      if (!target[k]) {\n        target[k] = {};\n      }\n      crawl(obj, target[k]);\n    }\n  }\n}\ncrawl(configAttributes, dfltConfig);\nmodule.exports = {\n  configAttributes: configAttributes,\n  dfltConfig: dfltConfig\n};\n\n/***/ }),\n\n/***/ 86281:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_1130312__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_1130312__(73972);\nvar Lib = __nested_webpack_require_1130312__(71828);\nvar baseAttributes = __nested_webpack_require_1130312__(9012);\nvar baseLayoutAttributes = __nested_webpack_require_1130312__(10820);\nvar frameAttributes = __nested_webpack_require_1130312__(31391);\nvar animationAttributes = __nested_webpack_require_1130312__(85594);\nvar configAttributes = (__nested_webpack_require_1130312__(72075).configAttributes);\nvar editTypes = __nested_webpack_require_1130312__(30962);\nvar extendDeepAll = Lib.extendDeepAll;\nvar isPlainObject = Lib.isPlainObject;\nvar isArrayOrTypedArray = Lib.isArrayOrTypedArray;\nvar nestedProperty = Lib.nestedProperty;\nvar valObjectMeta = Lib.valObjectMeta;\nvar IS_SUBPLOT_OBJ = '_isSubplotObj';\nvar IS_LINKED_TO_ARRAY = '_isLinkedToArray';\nvar ARRAY_ATTR_REGEXPS = '_arrayAttrRegexps';\nvar DEPRECATED = '_deprecated';\nvar UNDERSCORE_ATTRS = [IS_SUBPLOT_OBJ, IS_LINKED_TO_ARRAY, ARRAY_ATTR_REGEXPS, DEPRECATED];\nexports.IS_SUBPLOT_OBJ = IS_SUBPLOT_OBJ;\nexports.IS_LINKED_TO_ARRAY = IS_LINKED_TO_ARRAY;\nexports.DEPRECATED = DEPRECATED;\nexports.UNDERSCORE_ATTRS = UNDERSCORE_ATTRS;\n\n/** Outputs the full plotly.js plot schema\n *\n * @return {object}\n *  - defs\n *  - traces\n *  - layout\n *  - transforms\n *  - frames\n *  - animations\n *  - config\n */\nexports.get = function () {\n  var traces = {};\n  Registry.allTypes.forEach(function (type) {\n    traces[type] = getTraceAttributes(type);\n  });\n  var transforms = {};\n  Object.keys(Registry.transformsRegistry).forEach(function (type) {\n    transforms[type] = getTransformAttributes(type);\n  });\n  return {\n    defs: {\n      valObjects: valObjectMeta,\n      metaKeys: UNDERSCORE_ATTRS.concat(['description', 'role', 'editType', 'impliedEdits']),\n      editType: {\n        traces: editTypes.traces,\n        layout: editTypes.layout\n      },\n      impliedEdits: {}\n    },\n    traces: traces,\n    layout: getLayoutAttributes(),\n    transforms: transforms,\n    frames: getFramesAttributes(),\n    animation: formatAttributes(animationAttributes),\n    config: formatAttributes(configAttributes)\n  };\n};\n\n/**\n * Crawl the attribute tree, recursively calling a callback function\n *\n * @param {object} attrs\n *  The node of the attribute tree (e.g. the root) from which recursion originates\n * @param {Function} callback\n *  A callback function with the signature:\n *          @callback callback\n *          @param {object} attr an attribute\n *          @param {String} attrName name string\n *          @param {object[]} attrs all the attributes\n *          @param {Number} level the recursion level, 0 at the root\n *          @param {String} fullAttrString full attribute name (ie 'marker.line')\n * @param {Number} [specifiedLevel]\n *  The level in the tree, in order to let the callback function detect descend or backtrack,\n *  typically unsupplied (implied 0), just used by the self-recursive call.\n *  The necessity arises because the tree traversal is not controlled by callback return values.\n *  The decision to not use callback return values for controlling tree pruning arose from\n *  the goal of keeping the crawler backwards compatible. Observe that one of the pruning conditions\n *  precedes the callback call.\n * @param {string} [attrString]\n *  the path to the current attribute, as an attribute string (ie 'marker.line')\n *  typically unsupplied, but you may supply it if you want to disambiguate which attrs tree you\n *  are starting from\n *\n * @return {object} transformOut\n *  copy of transformIn that contains attribute defaults\n */\nexports.crawl = function (attrs, callback, specifiedLevel, attrString) {\n  var level = specifiedLevel || 0;\n  attrString = attrString || '';\n  Object.keys(attrs).forEach(function (attrName) {\n    var attr = attrs[attrName];\n    if (UNDERSCORE_ATTRS.indexOf(attrName) !== -1) return;\n    var fullAttrString = (attrString ? attrString + '.' : '') + attrName;\n    callback(attr, attrName, attrs, level, fullAttrString);\n    if (exports.isValObject(attr)) return;\n    if (isPlainObject(attr) && attrName !== 'impliedEdits') {\n      exports.crawl(attr, callback, level + 1, fullAttrString);\n    }\n  });\n};\n\n/** Is object a value object (or a container object)?\n *\n * @param {object} obj\n * @return {boolean}\n *  returns true for a valid value object and\n *  false for tree nodes in the attribute hierarchy\n */\nexports.isValObject = function (obj) {\n  return obj && obj.valType !== undefined;\n};\n\n/**\n * Find all data array attributes in a given trace object - including\n * `arrayOk` attributes.\n *\n * @param {object} trace\n *  full trace object that contains a reference to `_module.attributes`\n *\n * @return {array} arrayAttributes\n *  list of array attributes for the given trace\n */\nexports.findArrayAttributes = function (trace) {\n  var arrayAttributes = [];\n  var stack = [];\n  var isArrayStack = [];\n  var baseContainer, baseAttrName;\n  function callback(attr, attrName, attrs, level) {\n    stack = stack.slice(0, level).concat([attrName]);\n    isArrayStack = isArrayStack.slice(0, level).concat([attr && attr._isLinkedToArray]);\n    var splittableAttr = attr && (attr.valType === 'data_array' || attr.arrayOk === true) && !(stack[level - 1] === 'colorbar' && (attrName === 'ticktext' || attrName === 'tickvals'));\n\n    // Manually exclude 'colorbar.tickvals' and 'colorbar.ticktext' for now\n    // which are declared as `valType: 'data_array'` but scale independently of\n    // the coordinate arrays.\n    //\n    // Down the road, we might want to add a schema field (e.g `uncorrelatedArray: true`)\n    // to distinguish attributes of the likes.\n\n    if (!splittableAttr) return;\n    crawlIntoTrace(baseContainer, 0, '');\n  }\n  function crawlIntoTrace(container, i, astrPartial) {\n    var item = container[stack[i]];\n    var newAstrPartial = astrPartial + stack[i];\n    if (i === stack.length - 1) {\n      if (isArrayOrTypedArray(item)) {\n        arrayAttributes.push(baseAttrName + newAstrPartial);\n      }\n    } else {\n      if (isArrayStack[i]) {\n        if (Array.isArray(item)) {\n          for (var j = 0; j < item.length; j++) {\n            if (isPlainObject(item[j])) {\n              crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n            }\n          }\n        }\n      } else if (isPlainObject(item)) {\n        crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n      }\n    }\n  }\n  baseContainer = trace;\n  baseAttrName = '';\n  exports.crawl(baseAttributes, callback);\n  if (trace._module && trace._module.attributes) {\n    exports.crawl(trace._module.attributes, callback);\n  }\n  var transforms = trace.transforms;\n  if (transforms) {\n    for (var i = 0; i < transforms.length; i++) {\n      var transform = transforms[i];\n      var module = transform._module;\n      if (module) {\n        baseAttrName = 'transforms[' + i + '].';\n        baseContainer = transform;\n        exports.crawl(module.attributes, callback);\n      }\n    }\n  }\n  return arrayAttributes;\n};\n\n/*\n * Find the valObject for one attribute in an existing trace\n *\n * @param {object} trace\n *  full trace object that contains a reference to `_module.attributes`\n * @param {object} parts\n *  an array of parts, like ['transforms', 1, 'value']\n *  typically from nestedProperty(...).parts\n *\n * @return {object|false}\n *  the valObject for this attribute, or the last found parent\n *  in some cases the innermost valObject will not exist, for example\n *  `valType: 'any'` attributes where we might set a part of the attribute.\n *  In that case, stop at the deepest valObject we *do* find.\n */\nexports.getTraceValObject = function (trace, parts) {\n  var head = parts[0];\n  var i = 1; // index to start recursing from\n  var moduleAttrs, valObject;\n  if (head === 'transforms') {\n    if (parts.length === 1) {\n      return baseAttributes.transforms;\n    }\n    var transforms = trace.transforms;\n    if (!Array.isArray(transforms) || !transforms.length) return false;\n    var tNum = parts[1];\n    if (!isIndex(tNum) || tNum >= transforms.length) {\n      return false;\n    }\n    moduleAttrs = (Registry.transformsRegistry[transforms[tNum].type] || {}).attributes;\n    valObject = moduleAttrs && moduleAttrs[parts[2]];\n    i = 3; // start recursing only inside the transform\n  } else {\n    // first look in the module for this trace\n    // components have already merged their trace attributes in here\n    var _module = trace._module;\n    if (!_module) _module = (Registry.modules[trace.type || baseAttributes.type.dflt] || {})._module;\n    if (!_module) return false;\n    moduleAttrs = _module.attributes;\n    valObject = moduleAttrs && moduleAttrs[head];\n\n    // then look in the subplot attributes\n    if (!valObject) {\n      var subplotModule = _module.basePlotModule;\n      if (subplotModule && subplotModule.attributes) {\n        valObject = subplotModule.attributes[head];\n      }\n    }\n\n    // finally look in the global attributes\n    if (!valObject) valObject = baseAttributes[head];\n  }\n  return recurseIntoValObject(valObject, parts, i);\n};\n\n/*\n * Find the valObject for one layout attribute\n *\n * @param {array} parts\n *  an array of parts, like ['annotations', 1, 'x']\n *  typically from nestedProperty(...).parts\n *\n * @return {object|false}\n *  the valObject for this attribute, or the last found parent\n *  in some cases the innermost valObject will not exist, for example\n *  `valType: 'any'` attributes where we might set a part of the attribute.\n *  In that case, stop at the deepest valObject we *do* find.\n */\nexports.getLayoutValObject = function (fullLayout, parts) {\n  var valObject = layoutHeadAttr(fullLayout, parts[0]);\n  return recurseIntoValObject(valObject, parts, 1);\n};\nfunction layoutHeadAttr(fullLayout, head) {\n  var i, key, _module, attributes;\n\n  // look for attributes of the subplot types used on the plot\n  var basePlotModules = fullLayout._basePlotModules;\n  if (basePlotModules) {\n    var out;\n    for (i = 0; i < basePlotModules.length; i++) {\n      _module = basePlotModules[i];\n      if (_module.attrRegex && _module.attrRegex.test(head)) {\n        // if a module defines overrides, these take precedence\n        // initially this is to allow gl2d different editTypes from svg cartesian\n        if (_module.layoutAttrOverrides) return _module.layoutAttrOverrides;\n\n        // otherwise take the first attributes we find\n        if (!out && _module.layoutAttributes) out = _module.layoutAttributes;\n      }\n\n      // a module can also override the behavior of base (and component) module layout attrs\n      // again see gl2d for initial use case\n      var baseOverrides = _module.baseLayoutAttrOverrides;\n      if (baseOverrides && head in baseOverrides) return baseOverrides[head];\n    }\n    if (out) return out;\n  }\n\n  // look for layout attributes contributed by traces on the plot\n  var modules = fullLayout._modules;\n  if (modules) {\n    for (i = 0; i < modules.length; i++) {\n      attributes = modules[i].layoutAttributes;\n      if (attributes && head in attributes) {\n        return attributes[head];\n      }\n    }\n  }\n\n  /*\n   * Next look in components.\n   * Components that define a schema have already merged this into\n   * base and subplot attribute defs, so ignore these.\n   * Others (older style) all put all their attributes\n   * inside a container matching the module `name`\n   * eg `attributes` (array) or `legend` (object)\n   */\n  for (key in Registry.componentsRegistry) {\n    _module = Registry.componentsRegistry[key];\n    if (_module.name === 'colorscale' && head.indexOf('coloraxis') === 0) {\n      return _module.layoutAttributes[head];\n    } else if (!_module.schema && head === _module.name) {\n      return _module.layoutAttributes;\n    }\n  }\n  if (head in baseLayoutAttributes) return baseLayoutAttributes[head];\n  return false;\n}\nfunction recurseIntoValObject(valObject, parts, i) {\n  if (!valObject) return false;\n  if (valObject._isLinkedToArray) {\n    // skip array index, abort if we try to dive into an array without an index\n    if (isIndex(parts[i])) i++;else if (i < parts.length) return false;\n  }\n\n  // now recurse as far as we can. Occasionally we have an attribute\n  // setting an internal part below what's in the schema; just return\n  // the innermost schema item we find.\n  for (; i < parts.length; i++) {\n    var newValObject = valObject[parts[i]];\n    if (isPlainObject(newValObject)) valObject = newValObject;else break;\n    if (i === parts.length - 1) break;\n    if (valObject._isLinkedToArray) {\n      i++;\n      if (!isIndex(parts[i])) return false;\n    } else if (valObject.valType === 'info_array') {\n      i++;\n      var index = parts[i];\n      if (!isIndex(index)) return false;\n      var items = valObject.items;\n      if (Array.isArray(items)) {\n        if (index >= items.length) return false;\n        if (valObject.dimensions === 2) {\n          i++;\n          if (parts.length === i) return valObject;\n          var index2 = parts[i];\n          if (!isIndex(index2)) return false;\n          valObject = items[index][index2];\n        } else valObject = items[index];\n      } else {\n        valObject = items;\n      }\n    }\n  }\n  return valObject;\n}\n\n// note: this is different from Lib.isIndex, this one doesn't accept numeric\n// strings, only actual numbers.\nfunction isIndex(val) {\n  return val === Math.round(val) && val >= 0;\n}\nfunction getTraceAttributes(type) {\n  var _module, basePlotModule;\n  _module = Registry.modules[type]._module, basePlotModule = _module.basePlotModule;\n  var attributes = {};\n\n  // make 'type' the first attribute in the object\n  attributes.type = null;\n  var copyBaseAttributes = extendDeepAll({}, baseAttributes);\n  var copyModuleAttributes = extendDeepAll({}, _module.attributes);\n\n  // prune global-level trace attributes that are already defined in a trace\n  exports.crawl(copyModuleAttributes, function (attr, attrName, attrs, level, fullAttrString) {\n    nestedProperty(copyBaseAttributes, fullAttrString).set(undefined);\n    // Prune undefined attributes\n    if (attr === undefined) nestedProperty(copyModuleAttributes, fullAttrString).set(undefined);\n  });\n\n  // base attributes (same for all trace types)\n  extendDeepAll(attributes, copyBaseAttributes);\n\n  // prune-out base attributes based on trace module categories\n  if (Registry.traceIs(type, 'noOpacity')) {\n    delete attributes.opacity;\n  }\n  if (!Registry.traceIs(type, 'showLegend')) {\n    delete attributes.showlegend;\n    delete attributes.legendgroup;\n  }\n  if (Registry.traceIs(type, 'noHover')) {\n    delete attributes.hoverinfo;\n    delete attributes.hoverlabel;\n  }\n  if (!_module.selectPoints) {\n    delete attributes.selectedpoints;\n  }\n\n  // module attributes\n  extendDeepAll(attributes, copyModuleAttributes);\n\n  // subplot attributes\n  if (basePlotModule.attributes) {\n    extendDeepAll(attributes, basePlotModule.attributes);\n  }\n\n  // 'type' gets overwritten by baseAttributes; reset it here\n  attributes.type = type;\n  var out = {\n    meta: _module.meta || {},\n    categories: _module.categories || {},\n    animatable: Boolean(_module.animatable),\n    type: type,\n    attributes: formatAttributes(attributes)\n  };\n\n  // trace-specific layout attributes\n  if (_module.layoutAttributes) {\n    var layoutAttributes = {};\n    extendDeepAll(layoutAttributes, _module.layoutAttributes);\n    out.layoutAttributes = formatAttributes(layoutAttributes);\n  }\n\n  // drop anim:true in non-animatable modules\n  if (!_module.animatable) {\n    exports.crawl(out, function (attr) {\n      if (exports.isValObject(attr) && 'anim' in attr) {\n        delete attr.anim;\n      }\n    });\n  }\n  return out;\n}\nfunction getLayoutAttributes() {\n  var layoutAttributes = {};\n  var key, _module;\n\n  // global layout attributes\n  extendDeepAll(layoutAttributes, baseLayoutAttributes);\n\n  // add base plot module layout attributes\n  for (key in Registry.subplotsRegistry) {\n    _module = Registry.subplotsRegistry[key];\n    if (!_module.layoutAttributes) continue;\n    if (Array.isArray(_module.attr)) {\n      for (var i = 0; i < _module.attr.length; i++) {\n        handleBasePlotModule(layoutAttributes, _module, _module.attr[i]);\n      }\n    } else {\n      var astr = _module.attr === 'subplot' ? _module.name : _module.attr;\n      handleBasePlotModule(layoutAttributes, _module, astr);\n    }\n  }\n\n  // add registered components layout attributes\n  for (key in Registry.componentsRegistry) {\n    _module = Registry.componentsRegistry[key];\n    var schema = _module.schema;\n    if (schema && (schema.subplots || schema.layout)) {\n      /*\n       * Components with defined schema have already been merged in at register time\n       * but a few components define attributes that apply only to xaxis\n       * not yaxis (rangeselector, rangeslider) - delete from y schema.\n       * Note that the input attributes for xaxis/yaxis are the same object\n       * so it's not possible to only add them to xaxis from the start.\n       * If we ever have such asymmetry the other way, or anywhere else,\n       * we will need to extend both this code and mergeComponentAttrsToSubplot\n       * (which will not find yaxis only for example)\n       */\n      var subplots = schema.subplots;\n      if (subplots && subplots.xaxis && !subplots.yaxis) {\n        for (var xkey in subplots.xaxis) {\n          delete layoutAttributes.yaxis[xkey];\n        }\n      }\n\n      /*\n       * Also some attributes e.g. shift & autoshift only implemented on the yaxis\n       * at the moment. Remove them from the xaxis.\n      */\n      delete layoutAttributes.xaxis.shift;\n      delete layoutAttributes.xaxis.autoshift;\n    } else if (_module.name === 'colorscale') {\n      extendDeepAll(layoutAttributes, _module.layoutAttributes);\n    } else if (_module.layoutAttributes) {\n      // older style without schema need to be explicitly merged in now\n      insertAttrs(layoutAttributes, _module.layoutAttributes, _module.name);\n    }\n  }\n  return {\n    layoutAttributes: formatAttributes(layoutAttributes)\n  };\n}\nfunction getTransformAttributes(type) {\n  var _module = Registry.transformsRegistry[type];\n  var attributes = extendDeepAll({}, _module.attributes);\n\n  // add registered components transform attributes\n  Object.keys(Registry.componentsRegistry).forEach(function (k) {\n    var _module = Registry.componentsRegistry[k];\n    if (_module.schema && _module.schema.transforms && _module.schema.transforms[type]) {\n      Object.keys(_module.schema.transforms[type]).forEach(function (v) {\n        insertAttrs(attributes, _module.schema.transforms[type][v], v);\n      });\n    }\n  });\n  return {\n    attributes: formatAttributes(attributes)\n  };\n}\nfunction getFramesAttributes() {\n  var attrs = {\n    frames: extendDeepAll({}, frameAttributes)\n  };\n  formatAttributes(attrs);\n  return attrs.frames;\n}\nfunction formatAttributes(attrs) {\n  mergeValTypeAndRole(attrs);\n  formatArrayContainers(attrs);\n  stringify(attrs);\n  return attrs;\n}\nfunction mergeValTypeAndRole(attrs) {\n  function makeSrcAttr(attrName) {\n    return {\n      valType: 'string',\n      editType: 'none'\n    };\n  }\n  function callback(attr, attrName, attrs) {\n    if (exports.isValObject(attr)) {\n      if (attr.arrayOk === true || attr.valType === 'data_array') {\n        // all 'arrayOk' and 'data_array' attrs have a corresponding 'src' attr\n        attrs[attrName + 'src'] = makeSrcAttr(attrName);\n      }\n    } else if (isPlainObject(attr)) {\n      // all attrs container objects get role 'object'\n      attr.role = 'object';\n    }\n  }\n  exports.crawl(attrs, callback);\n}\nfunction formatArrayContainers(attrs) {\n  function callback(attr, attrName, attrs) {\n    if (!attr) return;\n    var itemName = attr[IS_LINKED_TO_ARRAY];\n    if (!itemName) return;\n    delete attr[IS_LINKED_TO_ARRAY];\n    attrs[attrName] = {\n      items: {}\n    };\n    attrs[attrName].items[itemName] = attr;\n    attrs[attrName].role = 'object';\n  }\n  exports.crawl(attrs, callback);\n}\n\n// this can take around 10ms and should only be run from PlotSchema.get(),\n// to ensure JSON.stringify(PlotSchema.get()) gives the intended result.\nfunction stringify(attrs) {\n  function walk(attr) {\n    for (var k in attr) {\n      if (isPlainObject(attr[k])) {\n        walk(attr[k]);\n      } else if (Array.isArray(attr[k])) {\n        for (var i = 0; i < attr[k].length; i++) {\n          walk(attr[k][i]);\n        }\n      } else {\n        // as JSON.stringify(/test/) // => {}\n        if (attr[k] instanceof RegExp) {\n          attr[k] = attr[k].toString();\n        }\n      }\n    }\n  }\n  walk(attrs);\n}\nfunction handleBasePlotModule(layoutAttributes, _module, astr) {\n  var np = nestedProperty(layoutAttributes, astr);\n  var attrs = extendDeepAll({}, _module.layoutAttributes);\n  attrs[IS_SUBPLOT_OBJ] = true;\n  np.set(attrs);\n}\nfunction insertAttrs(baseAttrs, newAttrs, astr) {\n  var np = nestedProperty(baseAttrs, astr);\n  np.set(extendDeepAll(np.get() || {}, newAttrs));\n}\n\n/***/ }),\n\n/***/ 44467:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_1151116__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_1151116__(71828);\nvar plotAttributes = __nested_webpack_require_1151116__(9012);\nvar TEMPLATEITEMNAME = 'templateitemname';\nvar templateAttrs = {\n  name: {\n    valType: 'string',\n    editType: 'none'\n  }\n};\ntemplateAttrs[TEMPLATEITEMNAME] = {\n  valType: 'string',\n  editType: 'calc'\n};\n\n/**\n * templatedArray: decorate an attributes object with templating (and array)\n * properties.\n *\n * @param {string} name: the singular form of the array name. Sets\n *     `_isLinkedToArray` to this, so the schema knows to treat this as an array.\n * @param {object} attrs: the item attributes. Since all callers are expected\n *     to be constructing this object on the spot, we mutate it here for\n *     performance, rather than extending a new object with it.\n *\n * @returns {object}: the decorated `attrs` object\n */\nexports.templatedArray = function (name, attrs) {\n  attrs._isLinkedToArray = name;\n  attrs.name = templateAttrs.name;\n  attrs[TEMPLATEITEMNAME] = templateAttrs[TEMPLATEITEMNAME];\n  return attrs;\n};\n\n/**\n * traceTemplater: logic for matching traces to trace templates\n *\n * @param {object} dataTemplate: collection of {traceType: [{template}, ...]}\n *     ie each type the template applies to contains a list of template objects,\n *     to be provided cyclically to data traces of that type.\n *\n * @returns {object}: {newTrace}, a function:\n *     newTrace(traceIn): that takes the input traceIn, coerces its type, then\n *         uses that type to find the next template to apply. returns the output\n *         traceOut with template attached, ready to continue supplyDefaults.\n */\nexports.traceTemplater = function (dataTemplate) {\n  var traceCounts = {};\n  var traceType, typeTemplates;\n  for (traceType in dataTemplate) {\n    typeTemplates = dataTemplate[traceType];\n    if (Array.isArray(typeTemplates) && typeTemplates.length) {\n      traceCounts[traceType] = 0;\n    }\n  }\n  function newTrace(traceIn) {\n    traceType = Lib.coerce(traceIn, {}, plotAttributes, 'type');\n    var traceOut = {\n      type: traceType,\n      _template: null\n    };\n    if (traceType in traceCounts) {\n      typeTemplates = dataTemplate[traceType];\n      // cycle through traces in the template set for this type\n      var typei = traceCounts[traceType] % typeTemplates.length;\n      traceCounts[traceType]++;\n      traceOut._template = typeTemplates[typei];\n    } else {\n      // TODO: anything we should do for types missing from the template?\n      // try to apply some other type? Or just bail as we do here?\n      // Actually I think yes, we should apply other types; would be nice\n      // if all scatter* could inherit from each other, and if histogram\n      // could inherit from bar, etc... but how to specify this? And do we\n      // compose them, or if a type is present require it to be complete?\n      // Actually this could apply to layout too - 3D annotations\n      // inheriting from 2D, axes of different types inheriting from each\n      // other...\n    }\n    return traceOut;\n  }\n  return {\n    newTrace: newTrace\n    // TODO: function to figure out what's left & what didn't work\n  };\n};\n\n/**\n * newContainer: Create a new sub-container inside `container` and propagate any\n * applicable template to it. If there's no template, still propagates\n * `undefined` so relinkPrivate will not retain an old template!\n *\n * @param {object} container: the outer container, should already have _template\n *     if there *is* a template for this plot\n * @param {string} name: the key of the new container to make\n * @param {string} baseName: if applicable, a base attribute to take the\n *     template from, ie for xaxis3 the base would be xaxis\n *\n * @returns {object}: an object for inclusion _full*, empty except for the\n *     appropriate template piece\n */\nexports.newContainer = function (container, name, baseName) {\n  var template = container._template;\n  var part = template && (template[name] || baseName && template[baseName]);\n  if (!Lib.isPlainObject(part)) part = null;\n  var out = container[name] = {\n    _template: part\n  };\n  return out;\n};\n\n/**\n * arrayTemplater: special logic for templating both defaults and specific items\n * in a container array (annotations etc)\n *\n * @param {object} container: the outer container, should already have _template\n *     if there *is* a template for this plot\n * @param {string} name: the name of the array to template (ie 'annotations')\n *     will be used to find default ('annotationdefaults' object) and specific\n *     ('annotations' array) template specs.\n * @param {string} inclusionAttr: the attribute determining this item's\n *     inclusion in the output, usually 'visible' or 'enabled'\n *\n * @returns {object}: {newItem, defaultItems}, both functions:\n *     newItem(itemIn): create an output item, bare except for the correct\n *         template and name(s), as the base for supplyDefaults\n *     defaultItems(): to be called after all newItem calls, return any\n *         specific template items that have not already beeen included,\n *         also as bare output items ready for supplyDefaults.\n */\nexports.arrayTemplater = function (container, name, inclusionAttr) {\n  var template = container._template;\n  var defaultsTemplate = template && template[arrayDefaultKey(name)];\n  var templateItems = template && template[name];\n  if (!Array.isArray(templateItems) || !templateItems.length) {\n    templateItems = [];\n  }\n  var usedNames = {};\n  function newItem(itemIn) {\n    // include name and templateitemname in the output object for ALL\n    // container array items. Note: you could potentially use different\n    // name and templateitemname, if you're using one template to make\n    // another template. templateitemname would be the name in the original\n    // template, and name is the new \"subclassed\" item name.\n    var out = {\n      name: itemIn.name,\n      _input: itemIn\n    };\n    var templateItemName = out[TEMPLATEITEMNAME] = itemIn[TEMPLATEITEMNAME];\n\n    // no itemname: use the default template\n    if (!validItemName(templateItemName)) {\n      out._template = defaultsTemplate;\n      return out;\n    }\n\n    // look for an item matching this itemname\n    // note these do not inherit from the default template, only the item.\n    for (var i = 0; i < templateItems.length; i++) {\n      var templateItem = templateItems[i];\n      if (templateItem.name === templateItemName) {\n        // Note: it's OK to use a template item more than once\n        // but using it at least once will stop it from generating\n        // a default item at the end.\n        usedNames[templateItemName] = 1;\n        out._template = templateItem;\n        return out;\n      }\n    }\n\n    // Didn't find a matching template item, so since this item is intended\n    // to only be modifications it's most likely broken. Hide it unless\n    // it's explicitly marked visible - in which case it gets NO template,\n    // not even the default.\n    out[inclusionAttr] = itemIn[inclusionAttr] || false;\n    // special falsy value we can look for in validateTemplate\n    out._template = false;\n    return out;\n  }\n  function defaultItems() {\n    var out = [];\n    for (var i = 0; i < templateItems.length; i++) {\n      var templateItem = templateItems[i];\n      var name = templateItem.name;\n      // only allow named items to be added as defaults,\n      // and only allow each name once\n      if (validItemName(name) && !usedNames[name]) {\n        var outi = {\n          _template: templateItem,\n          name: name,\n          _input: {\n            _templateitemname: name\n          }\n        };\n        outi[TEMPLATEITEMNAME] = templateItem[TEMPLATEITEMNAME];\n        out.push(outi);\n        usedNames[name] = 1;\n      }\n    }\n    return out;\n  }\n  return {\n    newItem: newItem,\n    defaultItems: defaultItems\n  };\n};\nfunction validItemName(name) {\n  return name && typeof name === 'string';\n}\nfunction arrayDefaultKey(name) {\n  var lastChar = name.length - 1;\n  if (name.charAt(lastChar) !== 's') {\n    Lib.warn('bad argument to arrayDefaultKey: ' + name);\n  }\n  return name.substr(0, name.length - 1) + 'defaults';\n}\nexports.arrayDefaultKey = arrayDefaultKey;\n\n/**\n * arrayEditor: helper for editing array items that may have come from\n *     template defaults (in which case they will not exist in the input yet)\n *\n * @param {object} parentIn: the input container (eg gd.layout)\n * @param {string} containerStr: the attribute string for the container inside\n *     `parentIn`.\n * @param {object} itemOut: the _full* item (eg gd._fullLayout.annotations[0])\n *     that we'll be editing. Assumed to have been created by `arrayTemplater`.\n *\n * @returns {object}: {modifyBase, modifyItem, getUpdateObj, applyUpdate}, all functions:\n *     modifyBase(attr, value): Add an update that's *not* related to the item.\n *         `attr` is the full attribute string.\n *     modifyItem(attr, value): Add an update to the item. `attr` is just the\n *         portion of the attribute string inside the item.\n *     getUpdateObj(): Get the final constructed update object, to use in\n *         `restyle` or `relayout`. Also resets the update object in case this\n *         update was canceled.\n *     applyUpdate(attr, value): optionally add an update `attr: value`,\n *         then apply it to `parent` which should be the parent of `containerIn`,\n *         ie the object to which `containerStr` is the attribute string.\n */\nexports.arrayEditor = function (parentIn, containerStr, itemOut) {\n  var lengthIn = (Lib.nestedProperty(parentIn, containerStr).get() || []).length;\n  var index = itemOut._index;\n  // Check that we are indeed off the end of this container.\n  // Otherwise a devious user could put a key `_templateitemname` in their\n  // own input and break lots of things.\n  var templateItemName = index >= lengthIn && (itemOut._input || {})._templateitemname;\n  if (templateItemName) index = lengthIn;\n  var itemStr = containerStr + '[' + index + ']';\n  var update;\n  function resetUpdate() {\n    update = {};\n    if (templateItemName) {\n      update[itemStr] = {};\n      update[itemStr][TEMPLATEITEMNAME] = templateItemName;\n    }\n  }\n  resetUpdate();\n  function modifyBase(attr, value) {\n    update[attr] = value;\n  }\n  function modifyItem(attr, value) {\n    if (templateItemName) {\n      // we're making a new object: edit that object\n      Lib.nestedProperty(update[itemStr], attr).set(value);\n    } else {\n      // we're editing an existing object: include *just* the edit\n      update[itemStr + '.' + attr] = value;\n    }\n  }\n  function getUpdateObj() {\n    var updateOut = update;\n    resetUpdate();\n    return updateOut;\n  }\n  function applyUpdate(attr, value) {\n    if (attr) modifyItem(attr, value);\n    var updateToApply = getUpdateObj();\n    for (var key in updateToApply) {\n      Lib.nestedProperty(parentIn, key).set(updateToApply[key]);\n    }\n  }\n  return {\n    modifyBase: modifyBase,\n    modifyItem: modifyItem,\n    getUpdateObj: getUpdateObj,\n    applyUpdate: applyUpdate\n  };\n};\n\n/***/ }),\n\n/***/ 61549:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_1162184__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_1162184__(39898);\nvar Registry = __nested_webpack_require_1162184__(73972);\nvar Plots = __nested_webpack_require_1162184__(74875);\nvar Lib = __nested_webpack_require_1162184__(71828);\nvar clearGlCanvases = __nested_webpack_require_1162184__(33306);\nvar Color = __nested_webpack_require_1162184__(7901);\nvar Drawing = __nested_webpack_require_1162184__(91424);\nvar Titles = __nested_webpack_require_1162184__(92998);\nvar ModeBar = __nested_webpack_require_1162184__(64168);\nvar Axes = __nested_webpack_require_1162184__(89298);\nvar alignmentConstants = __nested_webpack_require_1162184__(18783);\nvar axisConstraints = __nested_webpack_require_1162184__(99082);\nvar enforceAxisConstraints = axisConstraints.enforce;\nvar cleanAxisConstraints = axisConstraints.clean;\nvar doAutoRange = (__nested_webpack_require_1162184__(71739).doAutoRange);\nvar SVG_TEXT_ANCHOR_START = 'start';\nvar SVG_TEXT_ANCHOR_MIDDLE = 'middle';\nvar SVG_TEXT_ANCHOR_END = 'end';\nexports.layoutStyles = function (gd) {\n  return Lib.syncOrAsync([Plots.doAutoMargin, lsInner], gd);\n};\nfunction overlappingDomain(xDomain, yDomain, domains) {\n  for (var i = 0; i < domains.length; i++) {\n    var existingX = domains[i][0];\n    var existingY = domains[i][1];\n    if (existingX[0] >= xDomain[1] || existingX[1] <= xDomain[0]) {\n      continue;\n    }\n    if (existingY[0] < yDomain[1] && existingY[1] > yDomain[0]) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction lsInner(gd) {\n  var fullLayout = gd._fullLayout;\n  var gs = fullLayout._size;\n  var pad = gs.p;\n  var axList = Axes.list(gd, '', true);\n  var i, subplot, plotinfo, ax, xa, ya;\n  fullLayout._paperdiv.style({\n    width: gd._context.responsive && fullLayout.autosize && !gd._context._hasZeroWidth && !gd.layout.width ? '100%' : fullLayout.width + 'px',\n    height: gd._context.responsive && fullLayout.autosize && !gd._context._hasZeroHeight && !gd.layout.height ? '100%' : fullLayout.height + 'px'\n  }).selectAll('.main-svg').call(Drawing.setSize, fullLayout.width, fullLayout.height);\n  gd._context.setBackground(gd, fullLayout.paper_bgcolor);\n  exports.drawMainTitle(gd);\n  ModeBar.manage(gd);\n\n  // _has('cartesian') means SVG specifically, not GL2D - but GL2D\n  // can still get here because it makes some of the SVG structure\n  // for shared features like selections.\n  if (!fullLayout._has('cartesian')) {\n    return Plots.previousPromises(gd);\n  }\n  function getLinePosition(ax, counterAx, side) {\n    var lwHalf = ax._lw / 2;\n    if (ax._id.charAt(0) === 'x') {\n      if (!counterAx) return gs.t + gs.h * (1 - (ax.position || 0)) + lwHalf % 1;else if (side === 'top') return counterAx._offset - pad - lwHalf;\n      return counterAx._offset + counterAx._length + pad + lwHalf;\n    }\n    if (!counterAx) return gs.l + gs.w * (ax.position || 0) + lwHalf % 1;else if (side === 'right') return counterAx._offset + counterAx._length + pad + lwHalf;\n    return counterAx._offset - pad - lwHalf;\n  }\n\n  // some preparation of axis position info\n  for (i = 0; i < axList.length; i++) {\n    ax = axList[i];\n    var counterAx = ax._anchorAxis;\n\n    // clear axis line positions, to be set in the subplot loop below\n    ax._linepositions = {};\n\n    // stash crispRounded linewidth so we don't need to pass gd all over the place\n    ax._lw = Drawing.crispRound(gd, ax.linewidth, 1);\n\n    // figure out the main axis line and main mirror line position.\n    // it's easier to follow the logic if we handle these separately from\n    // ax._linepositions, which are only used by mirror=allticks\n    // for non-main-subplot ticks, and mirror=all(ticks)? for zero line\n    // hiding logic\n    ax._mainLinePosition = getLinePosition(ax, counterAx, ax.side);\n    ax._mainMirrorPosition = ax.mirror && counterAx ? getLinePosition(ax, counterAx, alignmentConstants.OPPOSITE_SIDE[ax.side]) : null;\n  }\n\n  // figure out which backgrounds we need to draw,\n  // and in which layers to put them\n  var lowerBackgroundIDs = [];\n  var backgroundIds = [];\n  var lowerDomains = [];\n  // no need to draw background when paper and plot color are the same color,\n  // activate mode just for large splom (which benefit the most from this\n  // optimization), but this could apply to all cartesian subplots.\n  var noNeedForBg = Color.opacity(fullLayout.paper_bgcolor) === 1 && Color.opacity(fullLayout.plot_bgcolor) === 1 && fullLayout.paper_bgcolor === fullLayout.plot_bgcolor;\n  for (subplot in fullLayout._plots) {\n    plotinfo = fullLayout._plots[subplot];\n    if (plotinfo.mainplot) {\n      // mainplot is a reference to the main plot this one is overlaid on\n      // so if it exists, this is an overlaid plot and we don't need to\n      // give it its own background\n      if (plotinfo.bg) {\n        plotinfo.bg.remove();\n      }\n      plotinfo.bg = undefined;\n    } else {\n      var xDomain = plotinfo.xaxis.domain;\n      var yDomain = plotinfo.yaxis.domain;\n      var plotgroup = plotinfo.plotgroup;\n      if (overlappingDomain(xDomain, yDomain, lowerDomains)) {\n        var pgNode = plotgroup.node();\n        var plotgroupBg = plotinfo.bg = Lib.ensureSingle(plotgroup, 'rect', 'bg');\n        pgNode.insertBefore(plotgroupBg.node(), pgNode.childNodes[0]);\n        backgroundIds.push(subplot);\n      } else {\n        plotgroup.select('rect.bg').remove();\n        lowerDomains.push([xDomain, yDomain]);\n        if (!noNeedForBg) {\n          lowerBackgroundIDs.push(subplot);\n          backgroundIds.push(subplot);\n        }\n      }\n    }\n  }\n\n  // now create all the lower-layer backgrounds at once now that\n  // we have the list of subplots that need them\n  var lowerBackgrounds = fullLayout._bgLayer.selectAll('.bg').data(lowerBackgroundIDs);\n  lowerBackgrounds.enter().append('rect').classed('bg', true);\n  lowerBackgrounds.exit().remove();\n  lowerBackgrounds.each(function (subplot) {\n    fullLayout._plots[subplot].bg = d3.select(this);\n  });\n\n  // style all backgrounds\n  for (i = 0; i < backgroundIds.length; i++) {\n    plotinfo = fullLayout._plots[backgroundIds[i]];\n    xa = plotinfo.xaxis;\n    ya = plotinfo.yaxis;\n    if (plotinfo.bg && xa._offset !== undefined && ya._offset !== undefined) {\n      plotinfo.bg.call(Drawing.setRect, xa._offset - pad, ya._offset - pad, xa._length + 2 * pad, ya._length + 2 * pad).call(Color.fill, fullLayout.plot_bgcolor).style('stroke-width', 0);\n    }\n  }\n  if (!fullLayout._hasOnlyLargeSploms) {\n    for (subplot in fullLayout._plots) {\n      plotinfo = fullLayout._plots[subplot];\n      xa = plotinfo.xaxis;\n      ya = plotinfo.yaxis;\n\n      // Clip so that data only shows up on the plot area.\n      var clipId = plotinfo.clipId = 'clip' + fullLayout._uid + subplot + 'plot';\n      var plotClip = Lib.ensureSingleById(fullLayout._clips, 'clipPath', clipId, function (s) {\n        s.classed('plotclip', true).append('rect');\n      });\n      plotinfo.clipRect = plotClip.select('rect').attr({\n        width: xa._length,\n        height: ya._length\n      });\n      Drawing.setTranslate(plotinfo.plot, xa._offset, ya._offset);\n      var plotClipId;\n      var layerClipId;\n      if (plotinfo._hasClipOnAxisFalse) {\n        plotClipId = null;\n        layerClipId = clipId;\n      } else {\n        plotClipId = clipId;\n        layerClipId = null;\n      }\n      Drawing.setClipUrl(plotinfo.plot, plotClipId, gd);\n\n      // stash layer clipId value (null or same as clipId)\n      // to DRY up Drawing.setClipUrl calls on trace-module and trace layers\n      // downstream\n      plotinfo.layerClipId = layerClipId;\n    }\n  }\n  var xLinesXLeft, xLinesXRight, xLinesYBottom, xLinesYTop, leftYLineWidth, rightYLineWidth;\n  var yLinesYBottom, yLinesYTop, yLinesXLeft, yLinesXRight, connectYBottom, connectYTop;\n  var extraSubplot;\n  function xLinePath(y) {\n    return 'M' + xLinesXLeft + ',' + y + 'H' + xLinesXRight;\n  }\n  function xLinePathFree(y) {\n    return 'M' + xa._offset + ',' + y + 'h' + xa._length;\n  }\n  function yLinePath(x) {\n    return 'M' + x + ',' + yLinesYTop + 'V' + yLinesYBottom;\n  }\n  function yLinePathFree(x) {\n    if (ya._shift !== undefined) {\n      x += ya._shift;\n    }\n    return 'M' + x + ',' + ya._offset + 'v' + ya._length;\n  }\n  function mainPath(ax, pathFn, pathFnFree) {\n    if (!ax.showline || subplot !== ax._mainSubplot) return '';\n    if (!ax._anchorAxis) return pathFnFree(ax._mainLinePosition);\n    var out = pathFn(ax._mainLinePosition);\n    if (ax.mirror) out += pathFn(ax._mainMirrorPosition);\n    return out;\n  }\n  for (subplot in fullLayout._plots) {\n    plotinfo = fullLayout._plots[subplot];\n    xa = plotinfo.xaxis;\n    ya = plotinfo.yaxis;\n\n    /*\n     * x lines get longer where they meet y lines, to make a crisp corner.\n     * The x lines get the padding (margin.pad) plus the y line width to\n     * fill up the corner nicely. Free x lines are excluded - they always\n     * span exactly the data area of the plot\n     *\n     *  | XXXXX\n     *  | XXXXX\n     *  |\n     *  +------\n     *     x1\n     *    -----\n     *     x2\n     */\n    var xPath = 'M0,0';\n    if (shouldShowLinesOrTicks(xa, subplot)) {\n      leftYLineWidth = findCounterAxisLineWidth(xa, 'left', ya, axList);\n      xLinesXLeft = xa._offset - (leftYLineWidth ? pad + leftYLineWidth : 0);\n      rightYLineWidth = findCounterAxisLineWidth(xa, 'right', ya, axList);\n      xLinesXRight = xa._offset + xa._length + (rightYLineWidth ? pad + rightYLineWidth : 0);\n      xLinesYBottom = getLinePosition(xa, ya, 'bottom');\n      xLinesYTop = getLinePosition(xa, ya, 'top');\n\n      // save axis line positions for extra ticks to reference\n      // each subplot that gets ticks from \"allticks\" gets an entry:\n      //    [left or bottom, right or top]\n      extraSubplot = !xa._anchorAxis || subplot !== xa._mainSubplot;\n      if (extraSubplot && (xa.mirror === 'allticks' || xa.mirror === 'all')) {\n        xa._linepositions[subplot] = [xLinesYBottom, xLinesYTop];\n      }\n      xPath = mainPath(xa, xLinePath, xLinePathFree);\n      if (extraSubplot && xa.showline && (xa.mirror === 'all' || xa.mirror === 'allticks')) {\n        xPath += xLinePath(xLinesYBottom) + xLinePath(xLinesYTop);\n      }\n      plotinfo.xlines.style('stroke-width', xa._lw + 'px').call(Color.stroke, xa.showline ? xa.linecolor : 'rgba(0,0,0,0)');\n    }\n    plotinfo.xlines.attr('d', xPath);\n\n    /*\n     * y lines that meet x axes get longer only by margin.pad, because\n     * the x axes fill in the corner space. Free y axes, like free x axes,\n     * always span exactly the data area of the plot\n     *\n     *   |   | XXXX\n     * y2| y1| XXXX\n     *   |   | XXXX\n     *       |\n     *       +-----\n     */\n    var yPath = 'M0,0';\n    if (shouldShowLinesOrTicks(ya, subplot)) {\n      connectYBottom = findCounterAxisLineWidth(ya, 'bottom', xa, axList);\n      yLinesYBottom = ya._offset + ya._length + (connectYBottom ? pad : 0);\n      connectYTop = findCounterAxisLineWidth(ya, 'top', xa, axList);\n      yLinesYTop = ya._offset - (connectYTop ? pad : 0);\n      yLinesXLeft = getLinePosition(ya, xa, 'left');\n      yLinesXRight = getLinePosition(ya, xa, 'right');\n      extraSubplot = !ya._anchorAxis || subplot !== ya._mainSubplot;\n      if (extraSubplot && (ya.mirror === 'allticks' || ya.mirror === 'all')) {\n        ya._linepositions[subplot] = [yLinesXLeft, yLinesXRight];\n      }\n      yPath = mainPath(ya, yLinePath, yLinePathFree);\n      if (extraSubplot && ya.showline && (ya.mirror === 'all' || ya.mirror === 'allticks')) {\n        yPath += yLinePath(yLinesXLeft) + yLinePath(yLinesXRight);\n      }\n      plotinfo.ylines.style('stroke-width', ya._lw + 'px').call(Color.stroke, ya.showline ? ya.linecolor : 'rgba(0,0,0,0)');\n    }\n    plotinfo.ylines.attr('d', yPath);\n  }\n  Axes.makeClipPaths(gd);\n  return Plots.previousPromises(gd);\n}\nfunction shouldShowLinesOrTicks(ax, subplot) {\n  return (ax.ticks || ax.showline) && (subplot === ax._mainSubplot || ax.mirror === 'all' || ax.mirror === 'allticks');\n}\n\n/*\n * should we draw a line on counterAx at this side of ax?\n * It's assumed that counterAx is known to overlay the subplot we're working on\n * but it may not be its main axis.\n */\nfunction shouldShowLineThisSide(ax, side, counterAx) {\n  // does counterAx get a line at all?\n  if (!counterAx.showline || !counterAx._lw) return false;\n\n  // are we drawing *all* lines for counterAx?\n  if (counterAx.mirror === 'all' || counterAx.mirror === 'allticks') return true;\n  var anchorAx = counterAx._anchorAxis;\n\n  // is this a free axis? free axes can only have a subplot side-line with all(ticks)? mirroring\n  if (!anchorAx) return false;\n\n  // in order to handle cases where the user forgot to anchor this axis correctly\n  // (because its default anchor has the same domain on the relevant end)\n  // check whether the relevant position is the same.\n  var sideIndex = alignmentConstants.FROM_BL[side];\n  if (counterAx.side === side) {\n    return anchorAx.domain[sideIndex] === ax.domain[sideIndex];\n  }\n  return counterAx.mirror && anchorAx.domain[1 - sideIndex] === ax.domain[1 - sideIndex];\n}\n\n/*\n * Is there another axis intersecting `side` end of `ax`?\n * First look at `counterAx` (the axis for this subplot),\n * then at all other potential counteraxes on or overlaying this subplot.\n * Take the line width from the first one that has a line.\n */\nfunction findCounterAxisLineWidth(ax, side, counterAx, axList) {\n  if (shouldShowLineThisSide(ax, side, counterAx)) {\n    return counterAx._lw;\n  }\n  for (var i = 0; i < axList.length; i++) {\n    var axi = axList[i];\n    if (axi._mainAxis === counterAx._mainAxis && shouldShowLineThisSide(ax, side, axi)) {\n      return axi._lw;\n    }\n  }\n  return 0;\n}\nexports.drawMainTitle = function (gd) {\n  var fullLayout = gd._fullLayout;\n  var textAnchor = getMainTitleTextAnchor(fullLayout);\n  var dy = getMainTitleDy(fullLayout);\n  Titles.draw(gd, 'gtitle', {\n    propContainer: fullLayout,\n    propName: 'title.text',\n    placeholder: fullLayout._dfltTitle.plot,\n    attributes: {\n      x: getMainTitleX(fullLayout, textAnchor),\n      y: getMainTitleY(fullLayout, dy),\n      'text-anchor': textAnchor,\n      dy: dy\n    }\n  });\n};\nfunction getMainTitleX(fullLayout, textAnchor) {\n  var title = fullLayout.title;\n  var gs = fullLayout._size;\n  var hPadShift = 0;\n  if (textAnchor === SVG_TEXT_ANCHOR_START) {\n    hPadShift = title.pad.l;\n  } else if (textAnchor === SVG_TEXT_ANCHOR_END) {\n    hPadShift = -title.pad.r;\n  }\n  switch (title.xref) {\n    case 'paper':\n      return gs.l + gs.w * title.x + hPadShift;\n    case 'container':\n    default:\n      return fullLayout.width * title.x + hPadShift;\n  }\n}\nfunction getMainTitleY(fullLayout, dy) {\n  var title = fullLayout.title;\n  var gs = fullLayout._size;\n  var vPadShift = 0;\n  if (dy === '0em' || !dy) {\n    vPadShift = -title.pad.b;\n  } else if (dy === alignmentConstants.CAP_SHIFT + 'em') {\n    vPadShift = title.pad.t;\n  }\n  if (title.y === 'auto') {\n    return gs.t / 2;\n  } else {\n    switch (title.yref) {\n      case 'paper':\n        return gs.t + gs.h - gs.h * title.y + vPadShift;\n      case 'container':\n      default:\n        return fullLayout.height - fullLayout.height * title.y + vPadShift;\n    }\n  }\n}\nfunction getMainTitleTextAnchor(fullLayout) {\n  var title = fullLayout.title;\n  var textAnchor = SVG_TEXT_ANCHOR_MIDDLE;\n  if (Lib.isRightAnchor(title)) {\n    textAnchor = SVG_TEXT_ANCHOR_END;\n  } else if (Lib.isLeftAnchor(title)) {\n    textAnchor = SVG_TEXT_ANCHOR_START;\n  }\n  return textAnchor;\n}\nfunction getMainTitleDy(fullLayout) {\n  var title = fullLayout.title;\n  var dy = '0em';\n  if (Lib.isTopAnchor(title)) {\n    dy = alignmentConstants.CAP_SHIFT + 'em';\n  } else if (Lib.isMiddleAnchor(title)) {\n    dy = alignmentConstants.MID_SHIFT + 'em';\n  }\n  return dy;\n}\nexports.doTraceStyle = function (gd) {\n  var calcdata = gd.calcdata;\n  var editStyleCalls = [];\n  var i;\n  for (i = 0; i < calcdata.length; i++) {\n    var cd = calcdata[i];\n    var cd0 = cd[0] || {};\n    var trace = cd0.trace || {};\n    var _module = trace._module || {};\n\n    // See if we need to do arraysToCalcdata\n    // call it regardless of what change we made, in case\n    // supplyDefaults brought in an array that was already\n    // in gd.data but not in gd._fullData previously\n    var arraysToCalcdata = _module.arraysToCalcdata;\n    if (arraysToCalcdata) arraysToCalcdata(cd, trace);\n    var editStyle = _module.editStyle;\n    if (editStyle) editStyleCalls.push({\n      fn: editStyle,\n      cd0: cd0\n    });\n  }\n  if (editStyleCalls.length) {\n    for (i = 0; i < editStyleCalls.length; i++) {\n      var edit = editStyleCalls[i];\n      edit.fn(gd, edit.cd0);\n    }\n    clearGlCanvases(gd);\n    exports.redrawReglTraces(gd);\n  }\n  Plots.style(gd);\n  Registry.getComponentMethod('legend', 'draw')(gd);\n  return Plots.previousPromises(gd);\n};\nexports.doColorBars = function (gd) {\n  Registry.getComponentMethod('colorbar', 'draw')(gd);\n  return Plots.previousPromises(gd);\n};\n\n// force plot() to redo the layout and replot with the modified layout\nexports.layoutReplot = function (gd) {\n  var layout = gd.layout;\n  gd.layout = undefined;\n  return Registry.call('_doPlot', gd, '', layout);\n};\nexports.doLegend = function (gd) {\n  Registry.getComponentMethod('legend', 'draw')(gd);\n  return Plots.previousPromises(gd);\n};\nexports.doTicksRelayout = function (gd) {\n  Axes.draw(gd, 'redraw');\n  if (gd._fullLayout._hasOnlyLargeSploms) {\n    Registry.subplotsRegistry.splom.updateGrid(gd);\n    clearGlCanvases(gd);\n    exports.redrawReglTraces(gd);\n  }\n  exports.drawMainTitle(gd);\n  return Plots.previousPromises(gd);\n};\nexports.doModeBar = function (gd) {\n  var fullLayout = gd._fullLayout;\n  ModeBar.manage(gd);\n  for (var i = 0; i < fullLayout._basePlotModules.length; i++) {\n    var updateFx = fullLayout._basePlotModules[i].updateFx;\n    if (updateFx) updateFx(gd);\n  }\n  return Plots.previousPromises(gd);\n};\nexports.doCamera = function (gd) {\n  var fullLayout = gd._fullLayout;\n  var sceneIds = fullLayout._subplots.gl3d;\n  for (var i = 0; i < sceneIds.length; i++) {\n    var sceneLayout = fullLayout[sceneIds[i]];\n    var scene = sceneLayout._scene;\n    scene.setViewport(sceneLayout);\n  }\n};\nexports.drawData = function (gd) {\n  var fullLayout = gd._fullLayout;\n  clearGlCanvases(gd);\n\n  // loop over the base plot modules present on graph\n  var basePlotModules = fullLayout._basePlotModules;\n  for (var i = 0; i < basePlotModules.length; i++) {\n    basePlotModules[i].plot(gd);\n  }\n  exports.redrawReglTraces(gd);\n\n  // styling separate from drawing\n  Plots.style(gd);\n\n  // draw components that can be drawn on axes,\n  // and that do not push the margins\n  Registry.getComponentMethod('selections', 'draw')(gd);\n  Registry.getComponentMethod('shapes', 'draw')(gd);\n  Registry.getComponentMethod('annotations', 'draw')(gd);\n  Registry.getComponentMethod('images', 'draw')(gd);\n\n  // Mark the first render as complete\n  fullLayout._replotting = false;\n  return Plots.previousPromises(gd);\n};\n\n// Draw (or redraw) all regl-based traces in one go,\n// useful during drag and selection where buffers of targeted traces are updated,\n// but all traces need to be redrawn following clearGlCanvases.\n//\n// Note that _module.plot for regl trace does NOT draw things\n// on the canvas, they only update the buffers.\n// Drawing is perform here.\n//\n// TODO try adding per-subplot option using gl.SCISSOR_TEST for\n// non-overlaying, disjoint subplots.\n//\n// TODO try to include parcoords in here.\n// https://github.com/plotly/plotly.js/issues/3069\nexports.redrawReglTraces = function (gd) {\n  var fullLayout = gd._fullLayout;\n  if (fullLayout._has('regl')) {\n    var fullData = gd._fullData;\n    var cartesianIds = [];\n    var polarIds = [];\n    var i, sp;\n    if (fullLayout._hasOnlyLargeSploms) {\n      fullLayout._splomGrid.draw();\n    }\n\n    // N.B.\n    // - Loop over fullData (not _splomScenes) to preserve splom trace-to-trace ordering\n    // - Fill list if subplot ids (instead of fullLayout._subplots) to handle cases where all traces\n    //   of a given module are `visible !== true`\n    for (i = 0; i < fullData.length; i++) {\n      var trace = fullData[i];\n      if (trace.visible === true && trace._length !== 0) {\n        if (trace.type === 'splom') {\n          fullLayout._splomScenes[trace.uid].draw();\n        } else if (trace.type === 'scattergl') {\n          Lib.pushUnique(cartesianIds, trace.xaxis + trace.yaxis);\n        } else if (trace.type === 'scatterpolargl') {\n          Lib.pushUnique(polarIds, trace.subplot);\n        }\n      }\n    }\n    for (i = 0; i < cartesianIds.length; i++) {\n      sp = fullLayout._plots[cartesianIds[i]];\n      if (sp._scene) sp._scene.draw();\n    }\n    for (i = 0; i < polarIds.length; i++) {\n      sp = fullLayout[polarIds[i]]._subplot;\n      if (sp._scene) sp._scene.draw();\n    }\n  }\n};\nexports.doAutoRangeAndConstraints = function (gd) {\n  var axList = Axes.list(gd, '', true);\n  var ax;\n  var autoRangeDone = {};\n  for (var i = 0; i < axList.length; i++) {\n    ax = axList[i];\n    if (!autoRangeDone[ax._id]) {\n      autoRangeDone[ax._id] = 1;\n      cleanAxisConstraints(gd, ax);\n      doAutoRange(gd, ax);\n\n      // For matching axes, just propagate this autorange to the group.\n      // The extra arg to doAutoRange avoids recalculating the range,\n      // since doAutoRange by itself accounts for all matching axes. but\n      // there are other side-effects of doAutoRange that we still want.\n      var matchGroup = ax._matchGroup;\n      if (matchGroup) {\n        for (var id2 in matchGroup) {\n          var ax2 = Axes.getFromId(gd, id2);\n          doAutoRange(gd, ax2, ax.range);\n          autoRangeDone[id2] = 1;\n        }\n      }\n    }\n  }\n  enforceAxisConstraints(gd);\n};\n\n// An initial paint must be completed before these components can be\n// correctly sized and the whole plot re-margined. fullLayout._replotting must\n// be set to false before these will work properly.\nexports.finalDraw = function (gd) {\n  // TODO: rangesliders really belong in marginPushers but they need to be\n  // drawn after data - can we at least get the margin pushing part separated\n  // out and done earlier?\n  Registry.getComponentMethod('rangeslider', 'draw')(gd);\n  // TODO: rangeselector only needs to be here (in addition to drawMarginPushers)\n  // because the margins need to be fully determined before we can call\n  // autorange and update axis ranges (which rangeselector needs to know which\n  // button is active). Can we break out its automargin step from its draw step?\n  Registry.getComponentMethod('rangeselector', 'draw')(gd);\n};\nexports.drawMarginPushers = function (gd) {\n  Registry.getComponentMethod('legend', 'draw')(gd);\n  Registry.getComponentMethod('rangeselector', 'draw')(gd);\n  Registry.getComponentMethod('sliders', 'draw')(gd);\n  Registry.getComponentMethod('updatemenus', 'draw')(gd);\n  Registry.getComponentMethod('colorbar', 'draw')(gd);\n};\n\n/***/ }),\n\n/***/ 96318:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_1184872__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_1184872__(71828);\nvar isPlainObject = Lib.isPlainObject;\nvar PlotSchema = __nested_webpack_require_1184872__(86281);\nvar Plots = __nested_webpack_require_1184872__(74875);\nvar plotAttributes = __nested_webpack_require_1184872__(9012);\nvar Template = __nested_webpack_require_1184872__(44467);\nvar dfltConfig = (__nested_webpack_require_1184872__(72075).dfltConfig);\n\n/**\n * Plotly.makeTemplate: create a template off an existing figure to reuse\n * style attributes on other figures.\n *\n * Note: separated from the rest of templates because otherwise we get circular\n * references due to PlotSchema.\n *\n * @param {object|DOM element|string} figure: The figure to base the template on\n *     should contain a trace array `figure.data`\n *     and a layout object `figure.layout`\n * @returns {object} template: the extracted template - can then be used as\n *     `layout.template` in another figure.\n */\nexports.makeTemplate = function (figure) {\n  figure = Lib.isPlainObject(figure) ? figure : Lib.getGraphDiv(figure);\n  figure = Lib.extendDeep({\n    _context: dfltConfig\n  }, {\n    data: figure.data,\n    layout: figure.layout\n  });\n  Plots.supplyDefaults(figure);\n  var data = figure.data || [];\n  var layout = figure.layout || {};\n  // copy over a few items to help follow the schema\n  layout._basePlotModules = figure._fullLayout._basePlotModules;\n  layout._modules = figure._fullLayout._modules;\n  var template = {\n    data: {},\n    layout: {}\n  };\n\n  /*\n   * Note: we do NOT validate template values, we just take what's in the\n   * user inputs data and layout, not the validated values in fullData and\n   * fullLayout. Even if we were to validate here, there's no guarantee that\n   * these values would still be valid when applied to a new figure, which\n   * may contain different trace modes, different axes, etc. So it's\n   * important that when applying a template we still validate the template\n   * values, rather than just using them as defaults.\n   */\n\n  data.forEach(function (trace) {\n    // TODO: What if no style info is extracted for this trace. We may\n    // not want an empty object as the null value.\n    // TODO: allow transforms to contribute to templates?\n    // as it stands they are ignored, which may be for the best...\n\n    var traceTemplate = {};\n    walkStyleKeys(trace, traceTemplate, getTraceInfo.bind(null, trace));\n    var traceType = Lib.coerce(trace, {}, plotAttributes, 'type');\n    var typeTemplates = template.data[traceType];\n    if (!typeTemplates) typeTemplates = template.data[traceType] = [];\n    typeTemplates.push(traceTemplate);\n  });\n  walkStyleKeys(layout, template.layout, getLayoutInfo.bind(null, layout));\n\n  /*\n   * Compose the new template with an existing one to the same effect\n   *\n   * NOTE: there's a possibility of slightly different behavior: if the plot\n   * has an invalid value and the old template has a valid value for the same\n   * attribute, the plot will use the old template value but this routine\n   * will pull the invalid value (resulting in the original default).\n   * In the general case it's not possible to solve this with a single value,\n   * since valid options can be context-dependent. It could be solved with\n   * a *list* of values, but that would be huge complexity for little gain.\n   */\n  delete template.layout.template;\n  var oldTemplate = layout.template;\n  if (isPlainObject(oldTemplate)) {\n    var oldLayoutTemplate = oldTemplate.layout;\n    var i, traceType, oldTypeTemplates, oldTypeLen, typeTemplates, typeLen;\n    if (isPlainObject(oldLayoutTemplate)) {\n      mergeTemplates(oldLayoutTemplate, template.layout);\n    }\n    var oldDataTemplate = oldTemplate.data;\n    if (isPlainObject(oldDataTemplate)) {\n      for (traceType in template.data) {\n        oldTypeTemplates = oldDataTemplate[traceType];\n        if (Array.isArray(oldTypeTemplates)) {\n          typeTemplates = template.data[traceType];\n          typeLen = typeTemplates.length;\n          oldTypeLen = oldTypeTemplates.length;\n          for (i = 0; i < typeLen; i++) {\n            mergeTemplates(oldTypeTemplates[i % oldTypeLen], typeTemplates[i]);\n          }\n          for (i = typeLen; i < oldTypeLen; i++) {\n            typeTemplates.push(Lib.extendDeep({}, oldTypeTemplates[i]));\n          }\n        }\n      }\n      for (traceType in oldDataTemplate) {\n        if (!(traceType in template.data)) {\n          template.data[traceType] = Lib.extendDeep([], oldDataTemplate[traceType]);\n        }\n      }\n    }\n  }\n  return template;\n};\nfunction mergeTemplates(oldTemplate, newTemplate) {\n  // we don't care about speed here, just make sure we have a totally\n  // distinct object from the previous template\n  oldTemplate = Lib.extendDeep({}, oldTemplate);\n\n  // sort keys so we always get annotationdefaults before annotations etc\n  // so arrayTemplater will work right\n  var oldKeys = Object.keys(oldTemplate).sort();\n  var i, j;\n  function mergeOne(oldVal, newVal, key) {\n    if (isPlainObject(newVal) && isPlainObject(oldVal)) {\n      mergeTemplates(oldVal, newVal);\n    } else if (Array.isArray(newVal) && Array.isArray(oldVal)) {\n      // Note: omitted `inclusionAttr` from arrayTemplater here,\n      // it's irrelevant as we only want the resulting `_template`.\n      var templater = Template.arrayTemplater({\n        _template: oldTemplate\n      }, key);\n      for (j = 0; j < newVal.length; j++) {\n        var item = newVal[j];\n        var oldItem = templater.newItem(item)._template;\n        if (oldItem) mergeTemplates(oldItem, item);\n      }\n      var defaultItems = templater.defaultItems();\n      for (j = 0; j < defaultItems.length; j++) newVal.push(defaultItems[j]._template);\n\n      // templateitemname only applies to receiving plots\n      for (j = 0; j < newVal.length; j++) delete newVal[j].templateitemname;\n    }\n  }\n  for (i = 0; i < oldKeys.length; i++) {\n    var key = oldKeys[i];\n    var oldVal = oldTemplate[key];\n    if (key in newTemplate) {\n      mergeOne(oldVal, newTemplate[key], key);\n    } else newTemplate[key] = oldVal;\n\n    // if this is a base key from the old template (eg xaxis), look for\n    // extended keys (eg xaxis2) in the new template to merge into\n    if (getBaseKey(key) === key) {\n      for (var key2 in newTemplate) {\n        var baseKey2 = getBaseKey(key2);\n        if (key2 !== baseKey2 && baseKey2 === key && !(key2 in oldTemplate)) {\n          mergeOne(oldVal, newTemplate[key2], key);\n        }\n      }\n    }\n  }\n}\nfunction getBaseKey(key) {\n  return key.replace(/[0-9]+$/, '');\n}\nfunction walkStyleKeys(parent, templateOut, getAttributeInfo, path, basePath) {\n  var pathAttr = basePath && getAttributeInfo(basePath);\n  for (var key in parent) {\n    var child = parent[key];\n    var nextPath = getNextPath(parent, key, path);\n    var nextBasePath = getNextPath(parent, key, basePath);\n    var attr = getAttributeInfo(nextBasePath);\n    if (!attr) {\n      var baseKey = getBaseKey(key);\n      if (baseKey !== key) {\n        nextBasePath = getNextPath(parent, baseKey, basePath);\n        attr = getAttributeInfo(nextBasePath);\n      }\n    }\n\n    // we'll get an attr if path starts with a valid part, then has an\n    // invalid ending. Make sure we got all the way to the end.\n    if (pathAttr && pathAttr === attr) continue;\n    if (!attr || attr._noTemplating || attr.valType === 'data_array' || attr.arrayOk && Array.isArray(child)) {\n      continue;\n    }\n    if (!attr.valType && isPlainObject(child)) {\n      walkStyleKeys(child, templateOut, getAttributeInfo, nextPath, nextBasePath);\n    } else if (attr._isLinkedToArray && Array.isArray(child)) {\n      var dfltDone = false;\n      var namedIndex = 0;\n      var usedNames = {};\n      for (var i = 0; i < child.length; i++) {\n        var item = child[i];\n        if (isPlainObject(item)) {\n          var name = item.name;\n          if (name) {\n            if (!usedNames[name]) {\n              // named array items: allow all attributes except data arrays\n              walkStyleKeys(item, templateOut, getAttributeInfo, getNextPath(child, namedIndex, nextPath), getNextPath(child, namedIndex, nextBasePath));\n              namedIndex++;\n              usedNames[name] = 1;\n            }\n          } else if (!dfltDone) {\n            var dfltKey = Template.arrayDefaultKey(key);\n            var dfltPath = getNextPath(parent, dfltKey, path);\n\n            // getAttributeInfo will fail if we try to use dfltKey directly.\n            // Instead put this item into the next array element, then\n            // pull it out and move it to dfltKey.\n            var pathInArray = getNextPath(child, namedIndex, nextPath);\n            walkStyleKeys(item, templateOut, getAttributeInfo, pathInArray, getNextPath(child, namedIndex, nextBasePath));\n            var itemPropInArray = Lib.nestedProperty(templateOut, pathInArray);\n            var dfltProp = Lib.nestedProperty(templateOut, dfltPath);\n            dfltProp.set(itemPropInArray.get());\n            itemPropInArray.set(null);\n            dfltDone = true;\n          }\n        }\n      }\n    } else {\n      var templateProp = Lib.nestedProperty(templateOut, nextPath);\n      templateProp.set(child);\n    }\n  }\n}\nfunction getLayoutInfo(layout, path) {\n  return PlotSchema.getLayoutValObject(layout, Lib.nestedProperty({}, path).parts);\n}\nfunction getTraceInfo(trace, path) {\n  return PlotSchema.getTraceValObject(trace, Lib.nestedProperty({}, path).parts);\n}\nfunction getNextPath(parent, key, path) {\n  var nextPath;\n  if (!path) nextPath = key;else if (Array.isArray(parent)) nextPath = path + '[' + key + ']';else nextPath = path + '.' + key;\n  return nextPath;\n}\n\n/**\n * validateTemplate: Test for consistency between the given figure and\n * a template, either already included in the figure or given separately.\n * Note that not every issue we identify here is necessarily a problem,\n * it depends on what you're using the template for.\n *\n * @param {object|DOM element} figure: the plot, with {data, layout} members,\n *     to test the template against\n * @param {Optional(object)} template: the template, with its own {data, layout},\n *     to test. If omitted, we will look for a template already attached as the\n *     plot's `layout.template` attribute.\n *\n * @returns {array} array of error objects each containing:\n *  - {string} code\n *      error code ('missing', 'unused', 'reused', 'noLayout', 'noData')\n *  - {string} msg\n *      a full readable description of the issue.\n */\nexports.validateTemplate = function (figureIn, template) {\n  var figure = Lib.extendDeep({}, {\n    _context: dfltConfig,\n    data: figureIn.data,\n    layout: figureIn.layout\n  });\n  var layout = figure.layout || {};\n  if (!isPlainObject(template)) template = layout.template || {};\n  var layoutTemplate = template.layout;\n  var dataTemplate = template.data;\n  var errorList = [];\n  figure.layout = layout;\n  figure.layout.template = template;\n  Plots.supplyDefaults(figure);\n  var fullLayout = figure._fullLayout;\n  var fullData = figure._fullData;\n  var layoutPaths = {};\n  function crawlLayoutForContainers(obj, paths) {\n    for (var key in obj) {\n      if (key.charAt(0) !== '_' && isPlainObject(obj[key])) {\n        var baseKey = getBaseKey(key);\n        var nextPaths = [];\n        var i;\n        for (i = 0; i < paths.length; i++) {\n          nextPaths.push(getNextPath(obj, key, paths[i]));\n          if (baseKey !== key) nextPaths.push(getNextPath(obj, baseKey, paths[i]));\n        }\n        for (i = 0; i < nextPaths.length; i++) {\n          layoutPaths[nextPaths[i]] = 1;\n        }\n        crawlLayoutForContainers(obj[key], nextPaths);\n      }\n    }\n  }\n  function crawlLayoutTemplateForContainers(obj, path) {\n    for (var key in obj) {\n      if (key.indexOf('defaults') === -1 && isPlainObject(obj[key])) {\n        var nextPath = getNextPath(obj, key, path);\n        if (layoutPaths[nextPath]) {\n          crawlLayoutTemplateForContainers(obj[key], nextPath);\n        } else {\n          errorList.push({\n            code: 'unused',\n            path: nextPath\n          });\n        }\n      }\n    }\n  }\n  if (!isPlainObject(layoutTemplate)) {\n    errorList.push({\n      code: 'layout'\n    });\n  } else {\n    crawlLayoutForContainers(fullLayout, ['layout']);\n    crawlLayoutTemplateForContainers(layoutTemplate, 'layout');\n  }\n  if (!isPlainObject(dataTemplate)) {\n    errorList.push({\n      code: 'data'\n    });\n  } else {\n    var typeCount = {};\n    var traceType;\n    for (var i = 0; i < fullData.length; i++) {\n      var fullTrace = fullData[i];\n      traceType = fullTrace.type;\n      typeCount[traceType] = (typeCount[traceType] || 0) + 1;\n      if (!fullTrace._fullInput._template) {\n        // this takes care of the case of traceType in the data but not\n        // the template\n        errorList.push({\n          code: 'missing',\n          index: fullTrace._fullInput.index,\n          traceType: traceType\n        });\n      }\n    }\n    for (traceType in dataTemplate) {\n      var templateCount = dataTemplate[traceType].length;\n      var dataCount = typeCount[traceType] || 0;\n      if (templateCount > dataCount) {\n        errorList.push({\n          code: 'unused',\n          traceType: traceType,\n          templateCount: templateCount,\n          dataCount: dataCount\n        });\n      } else if (dataCount > templateCount) {\n        errorList.push({\n          code: 'reused',\n          traceType: traceType,\n          templateCount: templateCount,\n          dataCount: dataCount\n        });\n      }\n    }\n  }\n\n  // _template: false is when someone tried to modify an array item\n  // but there was no template with matching name\n  function crawlForMissingTemplates(obj, path) {\n    for (var key in obj) {\n      if (key.charAt(0) === '_') continue;\n      var val = obj[key];\n      var nextPath = getNextPath(obj, key, path);\n      if (isPlainObject(val)) {\n        if (Array.isArray(obj) && val._template === false && val.templateitemname) {\n          errorList.push({\n            code: 'missing',\n            path: nextPath,\n            templateitemname: val.templateitemname\n          });\n        }\n        crawlForMissingTemplates(val, nextPath);\n      } else if (Array.isArray(val) && hasPlainObject(val)) {\n        crawlForMissingTemplates(val, nextPath);\n      }\n    }\n  }\n  crawlForMissingTemplates({\n    data: fullData,\n    layout: fullLayout\n  }, '');\n  if (errorList.length) return errorList.map(format);\n};\nfunction hasPlainObject(arr) {\n  for (var i = 0; i < arr.length; i++) {\n    if (isPlainObject(arr[i])) return true;\n  }\n}\nfunction format(opts) {\n  var msg;\n  switch (opts.code) {\n    case 'data':\n      msg = 'The template has no key data.';\n      break;\n    case 'layout':\n      msg = 'The template has no key layout.';\n      break;\n    case 'missing':\n      if (opts.path) {\n        msg = 'There are no templates for item ' + opts.path + ' with name ' + opts.templateitemname;\n      } else {\n        msg = 'There are no templates for trace ' + opts.index + ', of type ' + opts.traceType + '.';\n      }\n      break;\n    case 'unused':\n      if (opts.path) {\n        msg = 'The template item at ' + opts.path + ' was not used in constructing the plot.';\n      } else if (opts.dataCount) {\n        msg = 'Some of the templates of type ' + opts.traceType + ' were not used. The template has ' + opts.templateCount + ' traces, the data only has ' + opts.dataCount + ' of this type.';\n      } else {\n        msg = 'The template has ' + opts.templateCount + ' traces of type ' + opts.traceType + ' but there are none in the data.';\n      }\n      break;\n    case 'reused':\n      msg = 'Some of the templates of type ' + opts.traceType + ' were used more than once. The template has ' + opts.templateCount + ' traces, the data has ' + opts.dataCount + ' of this type.';\n      break;\n  }\n  opts.msg = msg;\n  return opts;\n}\n\n/***/ }),\n\n/***/ 403:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1200685__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_1200685__(92770);\nvar plotApi = __nested_webpack_require_1200685__(72391);\nvar plots = __nested_webpack_require_1200685__(74875);\nvar Lib = __nested_webpack_require_1200685__(71828);\nvar helpers = __nested_webpack_require_1200685__(25095);\nvar toSVG = __nested_webpack_require_1200685__(5900);\nvar svgToImg = __nested_webpack_require_1200685__(70942);\nvar version = (__nested_webpack_require_1200685__(11506).version);\nvar attrs = {\n  format: {\n    valType: 'enumerated',\n    values: ['png', 'jpeg', 'webp', 'svg', 'full-json'],\n    dflt: 'png'\n  },\n  width: {\n    valType: 'number',\n    min: 1\n  },\n  height: {\n    valType: 'number',\n    min: 1\n  },\n  scale: {\n    valType: 'number',\n    min: 0,\n    dflt: 1\n  },\n  setBackground: {\n    valType: 'any',\n    dflt: false\n  },\n  imageDataOnly: {\n    valType: 'boolean',\n    dflt: false\n  }\n};\n\n/** Plotly.toImage\n *\n * @param {object | string | HTML div} gd\n *   can either be a data/layout/config object\n *   or an existing graph <div>\n *   or an id to an existing graph <div>\n * @param {object} opts (see above)\n * @return {promise}\n */\nfunction toImage(gd, opts) {\n  opts = opts || {};\n  var data;\n  var layout;\n  var config;\n  var fullLayout;\n  if (Lib.isPlainObject(gd)) {\n    data = gd.data || [];\n    layout = gd.layout || {};\n    config = gd.config || {};\n    fullLayout = {};\n  } else {\n    gd = Lib.getGraphDiv(gd);\n    data = Lib.extendDeep([], gd.data);\n    layout = Lib.extendDeep({}, gd.layout);\n    config = gd._context;\n    fullLayout = gd._fullLayout || {};\n  }\n  function isImpliedOrValid(attr) {\n    return !(attr in opts) || Lib.validate(opts[attr], attrs[attr]);\n  }\n  if (!isImpliedOrValid('width') && opts.width !== null || !isImpliedOrValid('height') && opts.height !== null) {\n    throw new Error('Height and width should be pixel values.');\n  }\n  if (!isImpliedOrValid('format')) {\n    throw new Error('Export format is not ' + Lib.join2(attrs.format.values, ', ', ' or ') + '.');\n  }\n  var fullOpts = {};\n  function coerce(attr, dflt) {\n    return Lib.coerce(opts, fullOpts, attrs, attr, dflt);\n  }\n  var format = coerce('format');\n  var width = coerce('width');\n  var height = coerce('height');\n  var scale = coerce('scale');\n  var setBackground = coerce('setBackground');\n  var imageDataOnly = coerce('imageDataOnly');\n\n  // put the cloned div somewhere off screen before attaching to DOM\n  var clonedGd = document.createElement('div');\n  clonedGd.style.position = 'absolute';\n  clonedGd.style.left = '-5000px';\n  document.body.appendChild(clonedGd);\n\n  // extend layout with image options\n  var layoutImage = Lib.extendFlat({}, layout);\n  if (width) {\n    layoutImage.width = width;\n  } else if (opts.width === null && isNumeric(fullLayout.width)) {\n    layoutImage.width = fullLayout.width;\n  }\n  if (height) {\n    layoutImage.height = height;\n  } else if (opts.height === null && isNumeric(fullLayout.height)) {\n    layoutImage.height = fullLayout.height;\n  }\n\n  // extend config for static plot\n  var configImage = Lib.extendFlat({}, config, {\n    _exportedPlot: true,\n    staticPlot: true,\n    setBackground: setBackground\n  });\n  var redrawFunc = helpers.getRedrawFunc(clonedGd);\n  function wait() {\n    return new Promise(function (resolve) {\n      setTimeout(resolve, helpers.getDelay(clonedGd._fullLayout));\n    });\n  }\n  function convert() {\n    return new Promise(function (resolve, reject) {\n      var svg = toSVG(clonedGd, format, scale);\n      var width = clonedGd._fullLayout.width;\n      var height = clonedGd._fullLayout.height;\n      function cleanup() {\n        plotApi.purge(clonedGd);\n        document.body.removeChild(clonedGd);\n      }\n      if (format === 'full-json') {\n        var json = plots.graphJson(clonedGd, false, 'keepdata', 'object', true, true);\n        json.version = version;\n        json = JSON.stringify(json);\n        cleanup();\n        if (imageDataOnly) {\n          return resolve(json);\n        } else {\n          return resolve(helpers.encodeJSON(json));\n        }\n      }\n      cleanup();\n      if (format === 'svg') {\n        if (imageDataOnly) {\n          return resolve(svg);\n        } else {\n          return resolve(helpers.encodeSVG(svg));\n        }\n      }\n      var canvas = document.createElement('canvas');\n      canvas.id = Lib.randstr();\n      svgToImg({\n        format: format,\n        width: width,\n        height: height,\n        scale: scale,\n        canvas: canvas,\n        svg: svg,\n        // ask svgToImg to return a Promise\n        //  rather than EventEmitter\n        //  leave EventEmitter for backward\n        //  compatibility\n        promise: true\n      }).then(resolve).catch(reject);\n    });\n  }\n  function urlToImageData(url) {\n    if (imageDataOnly) {\n      return url.replace(helpers.IMAGE_URL_PREFIX, '');\n    } else {\n      return url;\n    }\n  }\n  return new Promise(function (resolve, reject) {\n    plotApi.newPlot(clonedGd, data, layoutImage, configImage).then(redrawFunc).then(wait).then(convert).then(function (url) {\n      resolve(urlToImageData(url));\n    }).catch(function (err) {\n      reject(err);\n    });\n  });\n}\nmodule.exports = toImage;\n\n/***/ }),\n\n/***/ 84936:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1205825__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_1205825__(71828);\nvar Plots = __nested_webpack_require_1205825__(74875);\nvar PlotSchema = __nested_webpack_require_1205825__(86281);\nvar dfltConfig = (__nested_webpack_require_1205825__(72075).dfltConfig);\nvar isPlainObject = Lib.isPlainObject;\nvar isArray = Array.isArray;\nvar isArrayOrTypedArray = Lib.isArrayOrTypedArray;\n\n/**\n * Validate a data array and layout object.\n *\n * @param {array} data\n * @param {object} layout\n *\n * @return {array} array of error objects each containing:\n *  - {string} code\n *      error code ('object', 'array', 'schema', 'unused', 'invisible' or 'value')\n *  - {string} container\n *      container where the error occurs ('data' or 'layout')\n *  - {number} trace\n *      trace index of the 'data' container where the error occurs\n *  - {array} path\n *      nested path to the key that causes the error\n *  - {string} astr\n *      attribute string variant of 'path' compatible with Plotly.restyle and\n *      Plotly.relayout.\n *  - {string} msg\n *      error message (shown in console in logger config argument is enable)\n */\nmodule.exports = function validate(data, layout) {\n  if (data === undefined) data = [];\n  if (layout === undefined) layout = {};\n  var schema = PlotSchema.get();\n  var errorList = [];\n  var gd = {\n    _context: Lib.extendFlat({}, dfltConfig)\n  };\n  var dataIn, layoutIn;\n  if (isArray(data)) {\n    gd.data = Lib.extendDeep([], data);\n    dataIn = data;\n  } else {\n    gd.data = [];\n    dataIn = [];\n    errorList.push(format('array', 'data'));\n  }\n  if (isPlainObject(layout)) {\n    gd.layout = Lib.extendDeep({}, layout);\n    layoutIn = layout;\n  } else {\n    gd.layout = {};\n    layoutIn = {};\n    if (arguments.length > 1) {\n      errorList.push(format('object', 'layout'));\n    }\n  }\n\n  // N.B. dataIn and layoutIn are in general not the same as\n  // gd.data and gd.layout after supplyDefaults as some attributes\n  // in gd.data and gd.layout (still) get mutated during this step.\n\n  Plots.supplyDefaults(gd);\n  var dataOut = gd._fullData;\n  var len = dataIn.length;\n  for (var i = 0; i < len; i++) {\n    var traceIn = dataIn[i];\n    var base = ['data', i];\n    if (!isPlainObject(traceIn)) {\n      errorList.push(format('object', base));\n      continue;\n    }\n    var traceOut = dataOut[i];\n    var traceType = traceOut.type;\n    var traceSchema = schema.traces[traceType].attributes;\n\n    // PlotSchema does something fancy with trace 'type', reset it here\n    // to make the trace schema compatible with Lib.validate.\n    traceSchema.type = {\n      valType: 'enumerated',\n      values: [traceType]\n    };\n    if (traceOut.visible === false && traceIn.visible !== false) {\n      errorList.push(format('invisible', base));\n    }\n    crawl(traceIn, traceOut, traceSchema, errorList, base);\n    var transformsIn = traceIn.transforms;\n    var transformsOut = traceOut.transforms;\n    if (transformsIn) {\n      if (!isArray(transformsIn)) {\n        errorList.push(format('array', base, ['transforms']));\n      }\n      base.push('transforms');\n      for (var j = 0; j < transformsIn.length; j++) {\n        var path = ['transforms', j];\n        var transformType = transformsIn[j].type;\n        if (!isPlainObject(transformsIn[j])) {\n          errorList.push(format('object', base, path));\n          continue;\n        }\n        var transformSchema = schema.transforms[transformType] ? schema.transforms[transformType].attributes : {};\n\n        // add 'type' to transform schema to validate the transform type\n        transformSchema.type = {\n          valType: 'enumerated',\n          values: Object.keys(schema.transforms)\n        };\n        crawl(transformsIn[j], transformsOut[j], transformSchema, errorList, base, path);\n      }\n    }\n  }\n  var layoutOut = gd._fullLayout;\n  var layoutSchema = fillLayoutSchema(schema, dataOut);\n  crawl(layoutIn, layoutOut, layoutSchema, errorList, 'layout');\n\n  // return undefined if no validation errors were found\n  return errorList.length === 0 ? void 0 : errorList;\n};\nfunction crawl(objIn, objOut, schema, list, base, path) {\n  path = path || [];\n  var keys = Object.keys(objIn);\n  for (var i = 0; i < keys.length; i++) {\n    var k = keys[i];\n\n    // transforms are handled separately\n    if (k === 'transforms') continue;\n    var p = path.slice();\n    p.push(k);\n    var valIn = objIn[k];\n    var valOut = objOut[k];\n    var nestedSchema = getNestedSchema(schema, k);\n    var nestedValType = (nestedSchema || {}).valType;\n    var isInfoArray = nestedValType === 'info_array';\n    var isColorscale = nestedValType === 'colorscale';\n    var items = (nestedSchema || {}).items;\n    if (!isInSchema(schema, k)) {\n      list.push(format('schema', base, p));\n    } else if (isPlainObject(valIn) && isPlainObject(valOut) && nestedValType !== 'any') {\n      crawl(valIn, valOut, nestedSchema, list, base, p);\n    } else if (isInfoArray && isArray(valIn)) {\n      if (valIn.length > valOut.length) {\n        list.push(format('unused', base, p.concat(valOut.length)));\n      }\n      var len = valOut.length;\n      var arrayItems = Array.isArray(items);\n      if (arrayItems) len = Math.min(len, items.length);\n      var m, n, item, valInPart, valOutPart;\n      if (nestedSchema.dimensions === 2) {\n        for (n = 0; n < len; n++) {\n          if (isArray(valIn[n])) {\n            if (valIn[n].length > valOut[n].length) {\n              list.push(format('unused', base, p.concat(n, valOut[n].length)));\n            }\n            var len2 = valOut[n].length;\n            for (m = 0; m < (arrayItems ? Math.min(len2, items[n].length) : len2); m++) {\n              item = arrayItems ? items[n][m] : items;\n              valInPart = valIn[n][m];\n              valOutPart = valOut[n][m];\n              if (!Lib.validate(valInPart, item)) {\n                list.push(format('value', base, p.concat(n, m), valInPart));\n              } else if (valOutPart !== valInPart && valOutPart !== +valInPart) {\n                list.push(format('dynamic', base, p.concat(n, m), valInPart, valOutPart));\n              }\n            }\n          } else {\n            list.push(format('array', base, p.concat(n), valIn[n]));\n          }\n        }\n      } else {\n        for (n = 0; n < len; n++) {\n          item = arrayItems ? items[n] : items;\n          valInPart = valIn[n];\n          valOutPart = valOut[n];\n          if (!Lib.validate(valInPart, item)) {\n            list.push(format('value', base, p.concat(n), valInPart));\n          } else if (valOutPart !== valInPart && valOutPart !== +valInPart) {\n            list.push(format('dynamic', base, p.concat(n), valInPart, valOutPart));\n          }\n        }\n      }\n    } else if (nestedSchema.items && !isInfoArray && isArray(valIn)) {\n      var _nestedSchema = items[Object.keys(items)[0]];\n      var indexList = [];\n      var j, _p;\n\n      // loop over valOut items while keeping track of their\n      // corresponding input container index (given by _index)\n      for (j = 0; j < valOut.length; j++) {\n        var _index = valOut[j]._index || j;\n        _p = p.slice();\n        _p.push(_index);\n        if (isPlainObject(valIn[_index]) && isPlainObject(valOut[j])) {\n          indexList.push(_index);\n          var valInj = valIn[_index];\n          var valOutj = valOut[j];\n          if (isPlainObject(valInj) && valInj.visible !== false && valOutj.visible === false) {\n            list.push(format('invisible', base, _p));\n          } else crawl(valInj, valOutj, _nestedSchema, list, base, _p);\n        }\n      }\n\n      // loop over valIn to determine where it went wrong for some items\n      for (j = 0; j < valIn.length; j++) {\n        _p = p.slice();\n        _p.push(j);\n        if (!isPlainObject(valIn[j])) {\n          list.push(format('object', base, _p, valIn[j]));\n        } else if (indexList.indexOf(j) === -1) {\n          list.push(format('unused', base, _p));\n        }\n      }\n    } else if (!isPlainObject(valIn) && isPlainObject(valOut)) {\n      list.push(format('object', base, p, valIn));\n    } else if (!isArrayOrTypedArray(valIn) && isArrayOrTypedArray(valOut) && !isInfoArray && !isColorscale) {\n      list.push(format('array', base, p, valIn));\n    } else if (!(k in objOut)) {\n      list.push(format('unused', base, p, valIn));\n    } else if (!Lib.validate(valIn, nestedSchema)) {\n      list.push(format('value', base, p, valIn));\n    } else if (nestedSchema.valType === 'enumerated' && (nestedSchema.coerceNumber && valIn !== +valOut || valIn !== valOut)) {\n      list.push(format('dynamic', base, p, valIn, valOut));\n    }\n  }\n  return list;\n}\n\n// the 'full' layout schema depends on the traces types presents\nfunction fillLayoutSchema(schema, dataOut) {\n  var layoutSchema = schema.layout.layoutAttributes;\n  for (var i = 0; i < dataOut.length; i++) {\n    var traceOut = dataOut[i];\n    var traceSchema = schema.traces[traceOut.type];\n    var traceLayoutAttr = traceSchema.layoutAttributes;\n    if (traceLayoutAttr) {\n      if (traceOut.subplot) {\n        Lib.extendFlat(layoutSchema[traceSchema.attributes.subplot.dflt], traceLayoutAttr);\n      } else {\n        Lib.extendFlat(layoutSchema, traceLayoutAttr);\n      }\n    }\n  }\n  return layoutSchema;\n}\n\n// validation error codes\nvar code2msgFunc = {\n  object: function (base, astr) {\n    var prefix;\n    if (base === 'layout' && astr === '') prefix = 'The layout argument';else if (base[0] === 'data' && astr === '') {\n      prefix = 'Trace ' + base[1] + ' in the data argument';\n    } else prefix = inBase(base) + 'key ' + astr;\n    return prefix + ' must be linked to an object container';\n  },\n  array: function (base, astr) {\n    var prefix;\n    if (base === 'data') prefix = 'The data argument';else prefix = inBase(base) + 'key ' + astr;\n    return prefix + ' must be linked to an array container';\n  },\n  schema: function (base, astr) {\n    return inBase(base) + 'key ' + astr + ' is not part of the schema';\n  },\n  unused: function (base, astr, valIn) {\n    var target = isPlainObject(valIn) ? 'container' : 'key';\n    return inBase(base) + target + ' ' + astr + ' did not get coerced';\n  },\n  dynamic: function (base, astr, valIn, valOut) {\n    return [inBase(base) + 'key', astr, '(set to \\'' + valIn + '\\')', 'got reset to', '\\'' + valOut + '\\'', 'during defaults.'].join(' ');\n  },\n  invisible: function (base, astr) {\n    return (astr ? inBase(base) + 'item ' + astr : 'Trace ' + base[1]) + ' got defaulted to be not visible';\n  },\n  value: function (base, astr, valIn) {\n    return [inBase(base) + 'key ' + astr, 'is set to an invalid value (' + valIn + ')'].join(' ');\n  }\n};\nfunction inBase(base) {\n  if (isArray(base)) return 'In data trace ' + base[1] + ', ';\n  return 'In ' + base + ', ';\n}\nfunction format(code, base, path, valIn, valOut) {\n  path = path || '';\n  var container, trace;\n\n  // container is either 'data' or 'layout\n  // trace is the trace index if 'data', null otherwise\n\n  if (isArray(base)) {\n    container = base[0];\n    trace = base[1];\n  } else {\n    container = base;\n    trace = null;\n  }\n  var astr = convertPathToAttributeString(path);\n  var msg = code2msgFunc[code](base, astr, valIn, valOut);\n\n  // log to console if logger config option is enabled\n  Lib.log(msg);\n  return {\n    code: code,\n    container: container,\n    trace: trace,\n    path: path,\n    astr: astr,\n    msg: msg\n  };\n}\nfunction isInSchema(schema, key) {\n  var parts = splitKey(key);\n  var keyMinusId = parts.keyMinusId;\n  var id = parts.id;\n  if (keyMinusId in schema && schema[keyMinusId]._isSubplotObj && id) {\n    return true;\n  }\n  return key in schema;\n}\nfunction getNestedSchema(schema, key) {\n  if (key in schema) return schema[key];\n  var parts = splitKey(key);\n  return schema[parts.keyMinusId];\n}\nvar idRegex = Lib.counterRegex('([a-z]+)');\nfunction splitKey(key) {\n  var idMatch = key.match(idRegex);\n  return {\n    keyMinusId: idMatch && idMatch[1],\n    id: idMatch && idMatch[2]\n  };\n}\nfunction convertPathToAttributeString(path) {\n  if (!isArray(path)) return String(path);\n  var astr = '';\n  for (var i = 0; i < path.length; i++) {\n    var p = path[i];\n    if (typeof p === 'number') {\n      astr = astr.substr(0, astr.length - 1) + '[' + p + ']';\n    } else {\n      astr += p;\n    }\n    if (i < path.length - 1) astr += '.';\n  }\n  return astr;\n}\n\n/***/ }),\n\n/***/ 85594:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  mode: {\n    valType: 'enumerated',\n    dflt: 'afterall',\n    values: ['immediate', 'next', 'afterall']\n  },\n  direction: {\n    valType: 'enumerated',\n    values: ['forward', 'reverse'],\n    dflt: 'forward'\n  },\n  fromcurrent: {\n    valType: 'boolean',\n    dflt: false\n  },\n  frame: {\n    duration: {\n      valType: 'number',\n      min: 0,\n      dflt: 500\n    },\n    redraw: {\n      valType: 'boolean',\n      dflt: true\n    }\n  },\n  transition: {\n    duration: {\n      valType: 'number',\n      min: 0,\n      dflt: 500,\n      editType: 'none'\n    },\n    easing: {\n      valType: 'enumerated',\n      dflt: 'cubic-in-out',\n      values: ['linear', 'quad', 'cubic', 'sin', 'exp', 'circle', 'elastic', 'back', 'bounce', 'linear-in', 'quad-in', 'cubic-in', 'sin-in', 'exp-in', 'circle-in', 'elastic-in', 'back-in', 'bounce-in', 'linear-out', 'quad-out', 'cubic-out', 'sin-out', 'exp-out', 'circle-out', 'elastic-out', 'back-out', 'bounce-out', 'linear-in-out', 'quad-in-out', 'cubic-in-out', 'sin-in-out', 'exp-in-out', 'circle-in-out', 'elastic-in-out', 'back-in-out', 'bounce-in-out'],\n      editType: 'none'\n    },\n    ordering: {\n      valType: 'enumerated',\n      values: ['layout first', 'traces first'],\n      dflt: 'layout first',\n      editType: 'none'\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 85501:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1219459__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_1219459__(71828);\nvar Template = __nested_webpack_require_1219459__(44467);\n\n/** Convenience wrapper for making array container logic DRY and consistent\n *\n * @param {object} parentObjIn\n *  user input object where the container in question is linked\n *  (i.e. either a user trace object or the user layout object)\n *\n * @param {object} parentObjOut\n *  full object where the coerced container will be linked\n *  (i.e. either a full trace object or the full layout object)\n *\n * @param {object} opts\n *  options object:\n *   - name {string}\n *      name of the key linking the container in question\n *   - inclusionAttr {string}\n *      name of the item attribute for inclusion/exclusion. Default is 'visible'.\n *      Since inclusion is true, use eg 'enabled' instead of 'disabled'.\n *   - handleItemDefaults {function}\n *      defaults method to be called on each item in the array container in question\n *\n *      Its arguments are:\n *          - itemIn {object} item in user layout\n *          - itemOut {object} item in full layout\n *          - parentObj {object} (as in closure)\n *          - opts {object} (as in closure)\n * N.B.\n *\n *  - opts is passed to handleItemDefaults so it can also store\n *    links to supplementary data (e.g. fullData for layout components)\n *\n */\nmodule.exports = function handleArrayContainerDefaults(parentObjIn, parentObjOut, opts) {\n  var name = opts.name;\n  var inclusionAttr = opts.inclusionAttr || 'visible';\n  var previousContOut = parentObjOut[name];\n  var contIn = Lib.isArrayOrTypedArray(parentObjIn[name]) ? parentObjIn[name] : [];\n  var contOut = parentObjOut[name] = [];\n  var templater = Template.arrayTemplater(parentObjOut, name, inclusionAttr);\n  var i, itemOut;\n  for (i = 0; i < contIn.length; i++) {\n    var itemIn = contIn[i];\n    if (!Lib.isPlainObject(itemIn)) {\n      itemOut = templater.newItem({});\n      itemOut[inclusionAttr] = false;\n    } else {\n      itemOut = templater.newItem(itemIn);\n    }\n    itemOut._index = i;\n    if (itemOut[inclusionAttr] !== false) {\n      opts.handleItemDefaults(itemIn, itemOut, parentObjOut, opts);\n    }\n    contOut.push(itemOut);\n  }\n  var defaultItems = templater.defaultItems();\n  for (i = 0; i < defaultItems.length; i++) {\n    itemOut = defaultItems[i];\n    itemOut._index = contOut.length;\n    opts.handleItemDefaults({}, itemOut, parentObjOut, opts, {});\n    contOut.push(itemOut);\n  }\n\n  // in case this array gets its defaults rebuilt independent of the whole layout,\n  // relink the private keys just for this array.\n  if (Lib.isArrayOrTypedArray(previousContOut)) {\n    var len = Math.min(previousContOut.length, contOut.length);\n    for (i = 0; i < len; i++) {\n      Lib.relinkPrivateKeys(contOut[i], previousContOut[i]);\n    }\n  }\n  return contOut;\n};\n\n/***/ }),\n\n/***/ 9012:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1222344__) {\n\n\"use strict\";\n\n\nvar fontAttrs = __nested_webpack_require_1222344__(41940);\nvar fxAttrs = __nested_webpack_require_1222344__(77914);\nmodule.exports = {\n  type: {\n    valType: 'enumerated',\n    values: [],\n    // listed dynamically\n    dflt: 'scatter',\n    editType: 'calc+clearAxisTypes',\n    _noTemplating: true // we handle this at a higher level\n  },\n\n  visible: {\n    valType: 'enumerated',\n    values: [true, false, 'legendonly'],\n    dflt: true,\n    editType: 'calc'\n  },\n  showlegend: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'style'\n  },\n  legendgroup: {\n    valType: 'string',\n    dflt: '',\n    editType: 'style'\n  },\n  legendgrouptitle: {\n    text: {\n      valType: 'string',\n      dflt: '',\n      editType: 'style'\n    },\n    font: fontAttrs({\n      editType: 'style'\n    }),\n    editType: 'style'\n  },\n  legendrank: {\n    valType: 'number',\n    dflt: 1000,\n    editType: 'style'\n  },\n  legendwidth: {\n    valType: 'number',\n    min: 0,\n    editType: 'style'\n  },\n  opacity: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 1,\n    editType: 'style'\n  },\n  name: {\n    valType: 'string',\n    editType: 'style'\n  },\n  uid: {\n    valType: 'string',\n    editType: 'plot',\n    anim: true\n  },\n  ids: {\n    valType: 'data_array',\n    editType: 'calc',\n    anim: true\n  },\n  customdata: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  meta: {\n    valType: 'any',\n    arrayOk: true,\n    editType: 'plot'\n  },\n  // N.B. these cannot be 'data_array' as they do not have the same length as\n  // other data arrays and arrayOk attributes in general\n  //\n  // Maybe add another valType:\n  // https://github.com/plotly/plotly.js/issues/1894\n  selectedpoints: {\n    valType: 'any',\n    editType: 'calc'\n  },\n  hoverinfo: {\n    valType: 'flaglist',\n    flags: ['x', 'y', 'z', 'text', 'name'],\n    extras: ['all', 'none', 'skip'],\n    arrayOk: true,\n    dflt: 'all',\n    editType: 'none'\n  },\n  hoverlabel: fxAttrs.hoverlabel,\n  stream: {\n    token: {\n      valType: 'string',\n      noBlank: true,\n      strict: true,\n      editType: 'calc'\n    },\n    maxpoints: {\n      valType: 'number',\n      min: 0,\n      max: 10000,\n      dflt: 500,\n      editType: 'calc'\n    },\n    editType: 'calc'\n  },\n  transforms: {\n    _isLinkedToArray: 'transform',\n    editType: 'calc'\n  },\n  uirevision: {\n    valType: 'any',\n    editType: 'none'\n  }\n};\n\n/***/ }),\n\n/***/ 42973:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1224775__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_1224775__(92770);\nvar Lib = __nested_webpack_require_1224775__(71828);\nvar dateTime2ms = Lib.dateTime2ms;\nvar incrementMonth = Lib.incrementMonth;\nvar constants = __nested_webpack_require_1224775__(50606);\nvar ONEAVGMONTH = constants.ONEAVGMONTH;\nmodule.exports = function alignPeriod(trace, ax, axLetter, vals) {\n  if (ax.type !== 'date') return {\n    vals: vals\n  };\n  var alignment = trace[axLetter + 'periodalignment'];\n  if (!alignment) return {\n    vals: vals\n  };\n  var period = trace[axLetter + 'period'];\n  var mPeriod;\n  if (isNumeric(period)) {\n    period = +period;\n    if (period <= 0) return {\n      vals: vals\n    };\n  } else if (typeof period === 'string' && period.charAt(0) === 'M') {\n    var n = +period.substring(1);\n    if (n > 0 && Math.round(n) === n) {\n      mPeriod = n;\n    } else return {\n      vals: vals\n    };\n  }\n  var calendar = ax.calendar;\n  var isStart = 'start' === alignment;\n  // var isMiddle = 'middle' === alignment;\n  var isEnd = 'end' === alignment;\n  var period0 = trace[axLetter + 'period0'];\n  var base = dateTime2ms(period0, calendar) || 0;\n  var newVals = [];\n  var starts = [];\n  var ends = [];\n  var len = vals.length;\n  for (var i = 0; i < len; i++) {\n    var v = vals[i];\n    var nEstimated, startTime, endTime;\n    if (mPeriod) {\n      // guess at how many periods away from base we are\n      nEstimated = Math.round((v - base) / (mPeriod * ONEAVGMONTH));\n      endTime = incrementMonth(base, mPeriod * nEstimated, calendar);\n\n      // iterate to get the exact bounds before and after v\n      // there may be ways to make this faster, but most of the time\n      // we'll only execute each loop zero or one time.\n      while (endTime > v) {\n        endTime = incrementMonth(endTime, -mPeriod, calendar);\n      }\n      while (endTime <= v) {\n        endTime = incrementMonth(endTime, mPeriod, calendar);\n      }\n\n      // now we know endTime is the boundary immediately after v\n      // so startTime is obtained by incrementing backward one period.\n      startTime = incrementMonth(endTime, -mPeriod, calendar);\n    } else {\n      // case of ms\n      nEstimated = Math.round((v - base) / period);\n      endTime = base + nEstimated * period;\n      while (endTime > v) {\n        endTime -= period;\n      }\n      while (endTime <= v) {\n        endTime += period;\n      }\n      startTime = endTime - period;\n    }\n    newVals[i] = isStart ? startTime : isEnd ? endTime : (startTime + endTime) / 2;\n    starts[i] = startTime;\n    ends[i] = endTime;\n  }\n  return {\n    vals: newVals,\n    starts: starts,\n    ends: ends\n  };\n};\n\n/***/ }),\n\n/***/ 89502:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  xaxis: {\n    valType: 'subplotid',\n    dflt: 'x',\n    editType: 'calc+clearAxisTypes'\n  },\n  yaxis: {\n    valType: 'subplotid',\n    dflt: 'y',\n    editType: 'calc+clearAxisTypes'\n  }\n};\n\n/***/ }),\n\n/***/ 71739:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1227732__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_1227732__(39898);\nvar isNumeric = __nested_webpack_require_1227732__(92770);\nvar Lib = __nested_webpack_require_1227732__(71828);\nvar FP_SAFE = (__nested_webpack_require_1227732__(50606).FP_SAFE);\nvar Registry = __nested_webpack_require_1227732__(73972);\nvar Drawing = __nested_webpack_require_1227732__(91424);\nvar axIds = __nested_webpack_require_1227732__(41675);\nvar getFromId = axIds.getFromId;\nvar isLinked = axIds.isLinked;\nmodule.exports = {\n  getAutoRange: getAutoRange,\n  makePadFn: makePadFn,\n  doAutoRange: doAutoRange,\n  findExtremes: findExtremes,\n  concatExtremes: concatExtremes\n};\n\n/**\n * getAutoRange\n *\n * Collects all _extremes values corresponding to a given axis\n * and computes its auto range.\n *\n * Note that getAutoRange uses return values from findExtremes.\n *\n * @param {object} gd:\n *   graph div object with filled-in fullData and fullLayout, in particular\n *   with filled-in '_extremes' containers:\n *   {\n *      val: calcdata value,\n *      pad: extra pixels beyond this value,\n *      extrapad: bool, does this point want 5% extra padding\n *   }\n * @param {object} ax:\n *   full axis object, in particular with filled-in '_traceIndices'\n *   and '_annIndices' / '_shapeIndices' if applicable\n * @return {array}\n *   an array of [min, max]. These are calcdata for log and category axes\n *   and data for linear and date axes.\n *\n * TODO: we want to change log to data as well, but it's hard to do this\n * maintaining backward compatibility. category will always have to use calcdata\n * though, because otherwise values between categories (or outside all categories)\n * would be impossible.\n */\nfunction getAutoRange(gd, ax) {\n  var i, j;\n  var newRange = [];\n  var fullLayout = gd._fullLayout;\n  var getPadMin = makePadFn(fullLayout, ax, 0);\n  var getPadMax = makePadFn(fullLayout, ax, 1);\n  var extremes = concatExtremes(gd, ax);\n  var minArray = extremes.min;\n  var maxArray = extremes.max;\n  if (minArray.length === 0 || maxArray.length === 0) {\n    return Lib.simpleMap(ax.range, ax.r2l);\n  }\n  var minmin = minArray[0].val;\n  var maxmax = maxArray[0].val;\n  for (i = 1; i < minArray.length; i++) {\n    if (minmin !== maxmax) break;\n    minmin = Math.min(minmin, minArray[i].val);\n  }\n  for (i = 1; i < maxArray.length; i++) {\n    if (minmin !== maxmax) break;\n    maxmax = Math.max(maxmax, maxArray[i].val);\n  }\n  var axReverse = false;\n  if (ax.range) {\n    var rng = Lib.simpleMap(ax.range, ax.r2l);\n    axReverse = rng[1] < rng[0];\n  }\n  // one-time setting to easily reverse the axis\n  // when plotting from code\n  if (ax.autorange === 'reversed') {\n    axReverse = true;\n    ax.autorange = true;\n  }\n  var rangeMode = ax.rangemode;\n  var toZero = rangeMode === 'tozero';\n  var nonNegative = rangeMode === 'nonnegative';\n  var axLen = ax._length;\n  // don't allow padding to reduce the data to < 10% of the length\n  var minSpan = axLen / 10;\n  var mbest = 0;\n  var minpt, maxpt, minbest, maxbest, dp, dv;\n  for (i = 0; i < minArray.length; i++) {\n    minpt = minArray[i];\n    for (j = 0; j < maxArray.length; j++) {\n      maxpt = maxArray[j];\n      dv = maxpt.val - minpt.val - calcBreaksLength(ax, minpt.val, maxpt.val);\n      if (dv > 0) {\n        dp = axLen - getPadMin(minpt) - getPadMax(maxpt);\n        if (dp > minSpan) {\n          if (dv / dp > mbest) {\n            minbest = minpt;\n            maxbest = maxpt;\n            mbest = dv / dp;\n          }\n        } else if (dv / axLen > mbest) {\n          // in case of padding longer than the axis\n          // at least include the unpadded data values.\n          minbest = {\n            val: minpt.val,\n            nopad: 1\n          };\n          maxbest = {\n            val: maxpt.val,\n            nopad: 1\n          };\n          mbest = dv / axLen;\n        }\n      }\n    }\n  }\n  function maximumPad(prev, pt) {\n    return Math.max(prev, getPadMax(pt));\n  }\n  if (minmin === maxmax) {\n    var lower = minmin - 1;\n    var upper = minmin + 1;\n    if (toZero) {\n      if (minmin === 0) {\n        // The only value we have on this axis is 0, and we want to\n        // autorange so zero is one end.\n        // In principle this could be [0, 1] or [-1, 0] but usually\n        // 'tozero' pins 0 to the low end, so follow that.\n        newRange = [0, 1];\n      } else {\n        var maxPad = (minmin > 0 ? maxArray : minArray).reduce(maximumPad, 0);\n        // we're pushing a single value away from the edge due to its\n        // padding, with the other end clamped at zero\n        // 0.5 means don't push it farther than the center.\n        var rangeEnd = minmin / (1 - Math.min(0.5, maxPad / axLen));\n        newRange = minmin > 0 ? [0, rangeEnd] : [rangeEnd, 0];\n      }\n    } else if (nonNegative) {\n      newRange = [Math.max(0, lower), Math.max(1, upper)];\n    } else {\n      newRange = [lower, upper];\n    }\n  } else {\n    if (toZero) {\n      if (minbest.val >= 0) {\n        minbest = {\n          val: 0,\n          nopad: 1\n        };\n      }\n      if (maxbest.val <= 0) {\n        maxbest = {\n          val: 0,\n          nopad: 1\n        };\n      }\n    } else if (nonNegative) {\n      if (minbest.val - mbest * getPadMin(minbest) < 0) {\n        minbest = {\n          val: 0,\n          nopad: 1\n        };\n      }\n      if (maxbest.val <= 0) {\n        maxbest = {\n          val: 1,\n          nopad: 1\n        };\n      }\n    }\n\n    // in case it changed again...\n    mbest = (maxbest.val - minbest.val - calcBreaksLength(ax, minpt.val, maxpt.val)) / (axLen - getPadMin(minbest) - getPadMax(maxbest));\n    newRange = [minbest.val - mbest * getPadMin(minbest), maxbest.val + mbest * getPadMax(maxbest)];\n  }\n\n  // maintain reversal\n  if (axReverse) newRange.reverse();\n  return Lib.simpleMap(newRange, ax.l2r || Number);\n}\n\n// find axis rangebreaks in [v0,v1] and compute its length in value space\nfunction calcBreaksLength(ax, v0, v1) {\n  var lBreaks = 0;\n  if (ax.rangebreaks) {\n    var rangebreaksOut = ax.locateBreaks(v0, v1);\n    for (var i = 0; i < rangebreaksOut.length; i++) {\n      var brk = rangebreaksOut[i];\n      lBreaks += brk.max - brk.min;\n    }\n  }\n  return lBreaks;\n}\n\n/*\n * calculate the pixel padding for ax._min and ax._max entries with\n * optional extrapad as 5% of the total axis length\n */\nfunction makePadFn(fullLayout, ax, max) {\n  // 5% padding for points that specify extrapad: true\n  var extrappad = 0.05 * ax._length;\n  var anchorAxis = ax._anchorAxis || {};\n  if ((ax.ticklabelposition || '').indexOf('inside') !== -1 || (anchorAxis.ticklabelposition || '').indexOf('inside') !== -1) {\n    var axReverse = ax.autorange === 'reversed';\n    if (!axReverse) {\n      var rng = Lib.simpleMap(ax.range, ax.r2l);\n      axReverse = rng[1] < rng[0];\n    }\n    if (axReverse) max = !max;\n  }\n  var zero = 0;\n  if (!isLinked(fullLayout, ax._id)) {\n    zero = padInsideLabelsOnAnchorAxis(fullLayout, ax, max);\n  }\n  extrappad = Math.max(zero, extrappad);\n\n  // domain-constrained axes: base extrappad on the unconstrained\n  // domain so it's consistent as the domain changes\n  if (ax.constrain === 'domain' && ax._inputDomain) {\n    extrappad *= (ax._inputDomain[1] - ax._inputDomain[0]) / (ax.domain[1] - ax.domain[0]);\n  }\n  return function getPad(pt) {\n    if (pt.nopad) return 0;\n    return pt.pad + (pt.extrapad ? extrappad : zero);\n  };\n}\nvar TEXTPAD = 3;\nfunction padInsideLabelsOnAnchorAxis(fullLayout, ax, max) {\n  var pad = 0;\n  var isX = ax._id.charAt(0) === 'x';\n  for (var subplot in fullLayout._plots) {\n    var plotinfo = fullLayout._plots[subplot];\n    if (ax._id !== plotinfo.xaxis._id && ax._id !== plotinfo.yaxis._id) continue;\n    var anchorAxis = (isX ? plotinfo.yaxis : plotinfo.xaxis) || {};\n    if ((anchorAxis.ticklabelposition || '').indexOf('inside') !== -1) {\n      // increase padding to make more room for inside tick labels of the counter axis\n      if (!max && (anchorAxis.side === 'left' || anchorAxis.side === 'bottom') || max && (anchorAxis.side === 'top' || anchorAxis.side === 'right')) {\n        if (anchorAxis._vals) {\n          var rad = Lib.deg2rad(anchorAxis._tickAngles[anchorAxis._id + 'tick'] || 0);\n          var cosA = Math.abs(Math.cos(rad));\n          var sinA = Math.abs(Math.sin(rad));\n\n          // no stashed bounding boxes - stash bounding boxes\n          if (!anchorAxis._vals[0].bb) {\n            var cls = anchorAxis._id + 'tick';\n            var tickLabels = anchorAxis._selections[cls];\n            tickLabels.each(function (d) {\n              var thisLabel = d3.select(this);\n              var mathjaxGroup = thisLabel.select('.text-math-group');\n              if (mathjaxGroup.empty()) {\n                d.bb = Drawing.bBox(thisLabel.node());\n              }\n            });\n          }\n\n          // use bounding boxes\n          for (var i = 0; i < anchorAxis._vals.length; i++) {\n            var t = anchorAxis._vals[i];\n            var bb = t.bb;\n            if (bb) {\n              var w = 2 * TEXTPAD + bb.width;\n              var h = 2 * TEXTPAD + bb.height;\n              pad = Math.max(pad, isX ? Math.max(w * cosA, h * sinA) : Math.max(h * cosA, w * sinA));\n            }\n          }\n        }\n        if (anchorAxis.ticks === 'inside' && anchorAxis.ticklabelposition === 'inside') {\n          pad += anchorAxis.ticklen || 0;\n        }\n      }\n    }\n  }\n  return pad;\n}\nfunction concatExtremes(gd, ax, noMatch) {\n  var axId = ax._id;\n  var fullData = gd._fullData;\n  var fullLayout = gd._fullLayout;\n  var minArray = [];\n  var maxArray = [];\n  var i, j, d;\n  function _concat(cont, indices) {\n    for (i = 0; i < indices.length; i++) {\n      var item = cont[indices[i]];\n      var extremes = (item._extremes || {})[axId];\n      if (item.visible === true && extremes) {\n        for (j = 0; j < extremes.min.length; j++) {\n          d = extremes.min[j];\n          collapseMinArray(minArray, d.val, d.pad, {\n            extrapad: d.extrapad\n          });\n        }\n        for (j = 0; j < extremes.max.length; j++) {\n          d = extremes.max[j];\n          collapseMaxArray(maxArray, d.val, d.pad, {\n            extrapad: d.extrapad\n          });\n        }\n      }\n    }\n  }\n  _concat(fullData, ax._traceIndices);\n  _concat(fullLayout.annotations || [], ax._annIndices || []);\n  _concat(fullLayout.shapes || [], ax._shapeIndices || []);\n\n  // Include the extremes from other matched axes with this one\n  if (ax._matchGroup && !noMatch) {\n    for (var axId2 in ax._matchGroup) {\n      if (axId2 !== ax._id) {\n        var ax2 = getFromId(gd, axId2);\n        var extremes2 = concatExtremes(gd, ax2, true);\n        // convert padding on the second axis to the first with lenRatio\n        var lenRatio = ax._length / ax2._length;\n        for (j = 0; j < extremes2.min.length; j++) {\n          d = extremes2.min[j];\n          collapseMinArray(minArray, d.val, d.pad * lenRatio, {\n            extrapad: d.extrapad\n          });\n        }\n        for (j = 0; j < extremes2.max.length; j++) {\n          d = extremes2.max[j];\n          collapseMaxArray(maxArray, d.val, d.pad * lenRatio, {\n            extrapad: d.extrapad\n          });\n        }\n      }\n    }\n  }\n  return {\n    min: minArray,\n    max: maxArray\n  };\n}\nfunction doAutoRange(gd, ax, presetRange) {\n  ax.setScale();\n  if (ax.autorange) {\n    ax.range = presetRange ? presetRange.slice() : getAutoRange(gd, ax);\n    ax._r = ax.range.slice();\n    ax._rl = Lib.simpleMap(ax._r, ax.r2l);\n\n    // doAutoRange will get called on fullLayout,\n    // but we want to report its results back to layout\n\n    var axIn = ax._input;\n\n    // before we edit _input, store preGUI values\n    var edits = {};\n    edits[ax._attr + '.range'] = ax.range;\n    edits[ax._attr + '.autorange'] = ax.autorange;\n    Registry.call('_storeDirectGUIEdit', gd.layout, gd._fullLayout._preGUI, edits);\n    axIn.range = ax.range.slice();\n    axIn.autorange = ax.autorange;\n  }\n  var anchorAx = ax._anchorAxis;\n  if (anchorAx && anchorAx.rangeslider) {\n    var axeRangeOpts = anchorAx.rangeslider[ax._name];\n    if (axeRangeOpts) {\n      if (axeRangeOpts.rangemode === 'auto') {\n        axeRangeOpts.range = getAutoRange(gd, ax);\n      }\n    }\n    anchorAx._input.rangeslider[ax._name] = Lib.extendFlat({}, axeRangeOpts);\n  }\n}\n\n/**\n * findExtremes\n *\n * Find min/max extremes of an array of coordinates on a given axis.\n *\n * Note that findExtremes is called during `calc`, when we don't yet know the axis\n * length; all the inputs should be based solely on the trace data, nothing\n * about the axis layout.\n *\n * Note that `ppad` and `vpad` as well as their asymmetric variants refer to\n * the before and after padding of the passed `data` array, not to the whole axis.\n *\n * @param {object} ax: full axis object\n *   relies on\n *   - ax.type\n *   - ax._m (just its sign)\n *   - ax.d2l\n * @param {array} data:\n *  array of numbers (i.e. already run though ax.d2c)\n * @param {object} opts:\n *  available keys are:\n *      vpad: (number or number array) pad values (data value +-vpad)\n *      ppad: (number or number array) pad pixels (pixel location +-ppad)\n *      ppadplus, ppadminus, vpadplus, vpadminus:\n *          separate padding for each side, overrides symmetric\n *      padded: (boolean) add 5% padding to both ends\n *          (unless one end is overridden by tozero)\n *      tozero: (boolean) make sure to include zero if axis is linear,\n *          and make it a tight bound if possible\n *      vpadLinearized: (boolean) whether or not vpad (or vpadplus/vpadminus)\n *          is linearized (for log scale axes)\n *\n * @return {object}\n *  - min {array of objects}\n *  - max {array of objects}\n *  each object item has fields:\n *    - val {number}\n *    - pad {number}\n *    - extrappad {number}\n *  - opts {object}: a ref to the passed \"options\" object\n */\nfunction findExtremes(ax, data, opts) {\n  if (!opts) opts = {};\n  if (!ax._m) ax.setScale();\n  var minArray = [];\n  var maxArray = [];\n  var len = data.length;\n  var extrapad = opts.padded || false;\n  var tozero = opts.tozero && (ax.type === 'linear' || ax.type === '-');\n  var isLog = ax.type === 'log';\n  var hasArrayOption = false;\n  var vpadLinearized = opts.vpadLinearized || false;\n  var i, v, di, dmin, dmax, ppadiplus, ppadiminus, vmin, vmax;\n  function makePadAccessor(item) {\n    if (Array.isArray(item)) {\n      hasArrayOption = true;\n      return function (i) {\n        return Math.max(Number(item[i] || 0), 0);\n      };\n    } else {\n      var v = Math.max(Number(item || 0), 0);\n      return function () {\n        return v;\n      };\n    }\n  }\n  var ppadplus = makePadAccessor((ax._m > 0 ? opts.ppadplus : opts.ppadminus) || opts.ppad || 0);\n  var ppadminus = makePadAccessor((ax._m > 0 ? opts.ppadminus : opts.ppadplus) || opts.ppad || 0);\n  var vpadplus = makePadAccessor(opts.vpadplus || opts.vpad);\n  var vpadminus = makePadAccessor(opts.vpadminus || opts.vpad);\n  if (!hasArrayOption) {\n    // with no arrays other than `data` we don't need to consider\n    // every point, only the extreme data points\n    vmin = Infinity;\n    vmax = -Infinity;\n    if (isLog) {\n      for (i = 0; i < len; i++) {\n        v = data[i];\n        // data is not linearized yet so we still have to filter out negative logs\n        if (v < vmin && v > 0) vmin = v;\n        if (v > vmax && v < FP_SAFE) vmax = v;\n      }\n    } else {\n      for (i = 0; i < len; i++) {\n        v = data[i];\n        if (v < vmin && v > -FP_SAFE) vmin = v;\n        if (v > vmax && v < FP_SAFE) vmax = v;\n      }\n    }\n    data = [vmin, vmax];\n    len = 2;\n  }\n  var collapseOpts = {\n    tozero: tozero,\n    extrapad: extrapad\n  };\n  function addItem(i) {\n    di = data[i];\n    if (!isNumeric(di)) return;\n    ppadiplus = ppadplus(i);\n    ppadiminus = ppadminus(i);\n    if (vpadLinearized) {\n      dmin = ax.c2l(di) - vpadminus(i);\n      dmax = ax.c2l(di) + vpadplus(i);\n    } else {\n      vmin = di - vpadminus(i);\n      vmax = di + vpadplus(i);\n      // special case for log axes: if vpad makes this object span\n      // more than an order of mag, clip it to one order. This is so\n      // we don't have non-positive errors or absurdly large lower\n      // range due to rounding errors\n      if (isLog && vmin < vmax / 10) vmin = vmax / 10;\n      dmin = ax.c2l(vmin);\n      dmax = ax.c2l(vmax);\n    }\n    if (tozero) {\n      dmin = Math.min(0, dmin);\n      dmax = Math.max(0, dmax);\n    }\n    if (goodNumber(dmin)) {\n      collapseMinArray(minArray, dmin, ppadiminus, collapseOpts);\n    }\n    if (goodNumber(dmax)) {\n      collapseMaxArray(maxArray, dmax, ppadiplus, collapseOpts);\n    }\n  }\n\n  // For efficiency covering monotonic or near-monotonic data,\n  // check a few points at both ends first and then sweep\n  // through the middle\n  var iMax = Math.min(6, len);\n  for (i = 0; i < iMax; i++) addItem(i);\n  for (i = len - 1; i >= iMax; i--) addItem(i);\n  return {\n    min: minArray,\n    max: maxArray,\n    opts: opts\n  };\n}\nfunction collapseMinArray(array, newVal, newPad, opts) {\n  collapseArray(array, newVal, newPad, opts, lessOrEqual);\n}\nfunction collapseMaxArray(array, newVal, newPad, opts) {\n  collapseArray(array, newVal, newPad, opts, greaterOrEqual);\n}\n\n/**\n * collapseArray\n *\n * Takes items from 'array' and compares them to 'newVal', 'newPad'.\n *\n * @param {array} array:\n *  current set of min or max extremes\n * @param {number} newVal:\n *  new value to compare against\n * @param {number} newPad:\n *  pad value associated with 'newVal'\n * @param {object} opts:\n *  - tozero {boolean}\n *  - extrapad {number}\n * @param {function} atLeastAsExtreme:\n *  comparison function, use\n *  - lessOrEqual for min 'array' and\n *  - greaterOrEqual for max 'array'\n *\n * In practice, 'array' is either\n *  - 'extremes[ax._id].min' or\n *  - 'extremes[ax._id].max\n *  found in traces and layout items that affect autorange.\n *\n * Since we don't yet know the relationship between pixels and values\n * (that's what we're trying to figure out!) AND we don't yet know how\n * many pixels `extrapad` represents (it's going to be 5% of the length,\n * but we don't want to have to redo calc just because length changed)\n * two point must satisfy three criteria simultaneously for one to supersede the other:\n *  - at least as extreme a `val`\n *  - at least as big a `pad`\n *  - an unpadded point cannot supersede a padded point, but any other combination can\n *\n * Then:\n * - If the item supersedes the new point, set includeThis false\n * - If the new pt supersedes the item, delete it from 'array'\n */\nfunction collapseArray(array, newVal, newPad, opts, atLeastAsExtreme) {\n  var tozero = opts.tozero;\n  var extrapad = opts.extrapad;\n  var includeThis = true;\n  for (var j = 0; j < array.length && includeThis; j++) {\n    var v = array[j];\n    if (atLeastAsExtreme(v.val, newVal) && v.pad >= newPad && (v.extrapad || !extrapad)) {\n      includeThis = false;\n      break;\n    } else if (atLeastAsExtreme(newVal, v.val) && v.pad <= newPad && (extrapad || !v.extrapad)) {\n      array.splice(j, 1);\n      j--;\n    }\n  }\n  if (includeThis) {\n    var clipAtZero = tozero && newVal === 0;\n    array.push({\n      val: newVal,\n      pad: clipAtZero ? 0 : newPad,\n      extrapad: clipAtZero ? false : extrapad\n    });\n  }\n}\n\n// In order to stop overflow errors, don't consider points\n// too close to the limits of js floating point\nfunction goodNumber(v) {\n  return isNumeric(v) && Math.abs(v) < FP_SAFE;\n}\nfunction lessOrEqual(v0, v1) {\n  return v0 <= v1;\n}\nfunction greaterOrEqual(v0, v1) {\n  return v0 >= v1;\n}\n\n/***/ }),\n\n/***/ 89298:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1247121__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_1247121__(39898);\nvar isNumeric = __nested_webpack_require_1247121__(92770);\nvar Plots = __nested_webpack_require_1247121__(74875);\nvar Registry = __nested_webpack_require_1247121__(73972);\nvar Lib = __nested_webpack_require_1247121__(71828);\nvar strTranslate = Lib.strTranslate;\nvar svgTextUtils = __nested_webpack_require_1247121__(63893);\nvar Titles = __nested_webpack_require_1247121__(92998);\nvar Color = __nested_webpack_require_1247121__(7901);\nvar Drawing = __nested_webpack_require_1247121__(91424);\nvar axAttrs = __nested_webpack_require_1247121__(13838);\nvar cleanTicks = __nested_webpack_require_1247121__(66287);\nvar constants = __nested_webpack_require_1247121__(50606);\nvar ONEMAXYEAR = constants.ONEMAXYEAR;\nvar ONEAVGYEAR = constants.ONEAVGYEAR;\nvar ONEMINYEAR = constants.ONEMINYEAR;\nvar ONEMAXQUARTER = constants.ONEMAXQUARTER;\nvar ONEAVGQUARTER = constants.ONEAVGQUARTER;\nvar ONEMINQUARTER = constants.ONEMINQUARTER;\nvar ONEMAXMONTH = constants.ONEMAXMONTH;\nvar ONEAVGMONTH = constants.ONEAVGMONTH;\nvar ONEMINMONTH = constants.ONEMINMONTH;\nvar ONEWEEK = constants.ONEWEEK;\nvar ONEDAY = constants.ONEDAY;\nvar HALFDAY = ONEDAY / 2;\nvar ONEHOUR = constants.ONEHOUR;\nvar ONEMIN = constants.ONEMIN;\nvar ONESEC = constants.ONESEC;\nvar MINUS_SIGN = constants.MINUS_SIGN;\nvar BADNUM = constants.BADNUM;\nvar ZERO_PATH = {\n  K: 'zeroline'\n};\nvar GRID_PATH = {\n  K: 'gridline',\n  L: 'path'\n};\nvar MINORGRID_PATH = {\n  K: 'minor-gridline',\n  L: 'path'\n};\nvar TICK_PATH = {\n  K: 'tick',\n  L: 'path'\n};\nvar TICK_TEXT = {\n  K: 'tick',\n  L: 'text'\n};\nvar MARGIN_MAPPING = {\n  width: ['x', 'r', 'l', 'xl', 'xr'],\n  height: ['y', 't', 'b', 'yt', 'yb'],\n  right: ['r', 'xr'],\n  left: ['l', 'xl'],\n  top: ['t', 'yt'],\n  bottom: ['b', 'yb']\n};\nvar alignmentConstants = __nested_webpack_require_1247121__(18783);\nvar MID_SHIFT = alignmentConstants.MID_SHIFT;\nvar CAP_SHIFT = alignmentConstants.CAP_SHIFT;\nvar LINE_SPACING = alignmentConstants.LINE_SPACING;\nvar OPPOSITE_SIDE = alignmentConstants.OPPOSITE_SIDE;\nvar TEXTPAD = 3;\nvar axes = module.exports = {};\naxes.setConvert = __nested_webpack_require_1247121__(21994);\nvar autoType = __nested_webpack_require_1247121__(4322);\nvar axisIds = __nested_webpack_require_1247121__(41675);\nvar idSort = axisIds.idSort;\nvar isLinked = axisIds.isLinked;\n\n// tight coupling to chart studio\naxes.id2name = axisIds.id2name;\naxes.name2id = axisIds.name2id;\naxes.cleanId = axisIds.cleanId;\naxes.list = axisIds.list;\naxes.listIds = axisIds.listIds;\naxes.getFromId = axisIds.getFromId;\naxes.getFromTrace = axisIds.getFromTrace;\nvar autorange = __nested_webpack_require_1247121__(71739);\naxes.getAutoRange = autorange.getAutoRange;\naxes.findExtremes = autorange.findExtremes;\nvar epsilon = 0.0001;\nfunction expandRange(range) {\n  var delta = (range[1] - range[0]) * epsilon;\n  return [range[0] - delta, range[1] + delta];\n}\n\n/*\n * find the list of possible axes to reference with an xref or yref attribute\n * and coerce it to that list\n *\n * attr: the attribute we're generating a reference for. Should end in 'x' or 'y'\n *     but can be prefixed, like 'ax' for annotation's arrow x\n * dflt: the default to coerce to, or blank to use the first axis (falling back on\n *     extraOption if there is no axis)\n * extraOption: aside from existing axes with this letter, what non-axis value is allowed?\n *     Only required if it's different from `dflt`\n */\naxes.coerceRef = function (containerIn, containerOut, gd, attr, dflt, extraOption) {\n  var axLetter = attr.charAt(attr.length - 1);\n  var axlist = gd._fullLayout._subplots[axLetter + 'axis'];\n  var refAttr = attr + 'ref';\n  var attrDef = {};\n  if (!dflt) dflt = axlist[0] || (typeof extraOption === 'string' ? extraOption : extraOption[0]);\n  if (!extraOption) extraOption = dflt;\n  axlist = axlist.concat(axlist.map(function (x) {\n    return x + ' domain';\n  }));\n\n  // data-ref annotations are not supported in gl2d yet\n\n  attrDef[refAttr] = {\n    valType: 'enumerated',\n    values: axlist.concat(extraOption ? typeof extraOption === 'string' ? [extraOption] : extraOption : []),\n    dflt: dflt\n  };\n\n  // xref, yref\n  return Lib.coerce(containerIn, containerOut, attrDef, refAttr);\n};\n\n/*\n * Get the type of an axis reference. This can be 'range', 'domain', or 'paper'.\n * This assumes ar is a valid axis reference and returns 'range' if it doesn't\n * match the patterns for 'paper' or 'domain'.\n *\n * ar: the axis reference string\n *\n */\naxes.getRefType = function (ar) {\n  if (ar === undefined) {\n    return ar;\n  }\n  if (ar === 'paper') {\n    return 'paper';\n  }\n  if (ar === 'pixel') {\n    return 'pixel';\n  }\n  if (/( domain)$/.test(ar)) {\n    return 'domain';\n  } else {\n    return 'range';\n  }\n};\n\n/*\n * coerce position attributes (range-type) that can be either on axes or absolute\n * (paper or pixel) referenced. The biggest complication here is that we don't know\n * before looking at the axis whether the value must be a number or not (it may be\n * a date string), so we can't use the regular valType='number' machinery\n *\n * axRef (string): the axis this position is referenced to, or:\n *     paper: fraction of the plot area\n *     pixel: pixels relative to some starting position\n * attr (string): the attribute in containerOut we are coercing\n * dflt (number): the default position, as a fraction or pixels. If the attribute\n *     is to be axis-referenced, this will be converted to an axis data value\n *\n * Also cleans the values, since the attribute definition itself has to say\n * valType: 'any' to handle date axes. This allows us to accept:\n * - for category axes: category names, and convert them here into serial numbers.\n *   Note that this will NOT work for axis range endpoints, because we don't know\n *   the category list yet (it's set by ax.makeCalcdata during calc)\n *   but it works for component (note, shape, images) positions.\n * - for date axes: JS Dates or milliseconds, and convert to date strings\n * - for other types: coerce them to numbers\n */\naxes.coercePosition = function (containerOut, gd, coerce, axRef, attr, dflt) {\n  var cleanPos, pos;\n  var axRefType = axes.getRefType(axRef);\n  if (axRefType !== 'range') {\n    cleanPos = Lib.ensureNumber;\n    pos = coerce(attr, dflt);\n  } else {\n    var ax = axes.getFromId(gd, axRef);\n    dflt = ax.fraction2r(dflt);\n    pos = coerce(attr, dflt);\n    cleanPos = ax.cleanPos;\n  }\n  containerOut[attr] = cleanPos(pos);\n};\naxes.cleanPosition = function (pos, gd, axRef) {\n  var cleanPos = axRef === 'paper' || axRef === 'pixel' ? Lib.ensureNumber : axes.getFromId(gd, axRef).cleanPos;\n  return cleanPos(pos);\n};\naxes.redrawComponents = function (gd, axIds) {\n  axIds = axIds ? axIds : axes.listIds(gd);\n  var fullLayout = gd._fullLayout;\n  function _redrawOneComp(moduleName, methodName, stashName, shortCircuit) {\n    var method = Registry.getComponentMethod(moduleName, methodName);\n    var stash = {};\n    for (var i = 0; i < axIds.length; i++) {\n      var ax = fullLayout[axes.id2name(axIds[i])];\n      var indices = ax[stashName];\n      for (var j = 0; j < indices.length; j++) {\n        var ind = indices[j];\n        if (!stash[ind]) {\n          method(gd, ind);\n          stash[ind] = 1;\n          // once is enough for images (which doesn't use the `i` arg anyway)\n          if (shortCircuit) return;\n        }\n      }\n    }\n  }\n\n  // annotations and shapes 'draw' method is slow,\n  // use the finer-grained 'drawOne' method instead\n  _redrawOneComp('annotations', 'drawOne', '_annIndices');\n  _redrawOneComp('shapes', 'drawOne', '_shapeIndices');\n  _redrawOneComp('images', 'draw', '_imgIndices', true);\n  _redrawOneComp('selections', 'drawOne', '_selectionIndices');\n};\nvar getDataConversions = axes.getDataConversions = function (gd, trace, target, targetArray) {\n  var ax;\n\n  // If target points to an axis, use the type we already have for that\n  // axis to find the data type. Otherwise use the values to autotype.\n  var d2cTarget = target === 'x' || target === 'y' || target === 'z' ? target : targetArray;\n\n  // In the case of an array target, make a mock data array\n  // and call supplyDefaults to the data type and\n  // setup the data-to-calc method.\n  if (Array.isArray(d2cTarget)) {\n    ax = {\n      type: autoType(targetArray, undefined, {\n        autotypenumbers: gd._fullLayout.autotypenumbers\n      }),\n      _categories: []\n    };\n    axes.setConvert(ax);\n\n    // build up ax._categories (usually done during ax.makeCalcdata()\n    if (ax.type === 'category') {\n      for (var i = 0; i < targetArray.length; i++) {\n        ax.d2c(targetArray[i]);\n      }\n    }\n    // TODO what to do for transforms?\n  } else {\n    ax = axes.getFromTrace(gd, trace, d2cTarget);\n  }\n\n  // if 'target' has corresponding axis\n  // -> use setConvert method\n  if (ax) return {\n    d2c: ax.d2c,\n    c2d: ax.c2d\n  };\n\n  // special case for 'ids'\n  // -> cast to String\n  if (d2cTarget === 'ids') return {\n    d2c: toString,\n    c2d: toString\n  };\n\n  // otherwise (e.g. numeric-array of 'marker.color' or 'marker.size')\n  // -> cast to Number\n\n  return {\n    d2c: toNum,\n    c2d: toNum\n  };\n};\nfunction toNum(v) {\n  return +v;\n}\nfunction toString(v) {\n  return String(v);\n}\naxes.getDataToCoordFunc = function (gd, trace, target, targetArray) {\n  return getDataConversions(gd, trace, target, targetArray).d2c;\n};\n\n// get counteraxis letter for this axis (name or id)\n// this can also be used as the id for default counter axis\naxes.counterLetter = function (id) {\n  var axLetter = id.charAt(0);\n  if (axLetter === 'x') return 'y';\n  if (axLetter === 'y') return 'x';\n};\n\n// incorporate a new minimum difference and first tick into\n// forced\n// note that _forceTick0 is linearized, so needs to be turned into\n// a range value for setting tick0\naxes.minDtick = function (ax, newDiff, newFirst, allow) {\n  // doesn't make sense to do forced min dTick on log or category axes,\n  // and the plot itself may decide to cancel (ie non-grouped bars)\n  if (['log', 'category', 'multicategory'].indexOf(ax.type) !== -1 || !allow) {\n    ax._minDtick = 0;\n  } else if (ax._minDtick === undefined) {\n    // undefined means there's nothing there yet\n\n    ax._minDtick = newDiff;\n    ax._forceTick0 = newFirst;\n  } else if (ax._minDtick) {\n    if ((ax._minDtick / newDiff + 1e-6) % 1 < 2e-6 &&\n    // existing minDtick is an integer multiple of newDiff\n    // (within rounding err)\n    // and forceTick0 can be shifted to newFirst\n\n    ((newFirst - ax._forceTick0) / newDiff % 1 + 1.000001) % 1 < 2e-6) {\n      ax._minDtick = newDiff;\n      ax._forceTick0 = newFirst;\n    } else if ((newDiff / ax._minDtick + 1e-6) % 1 > 2e-6 ||\n    // if the converse is true (newDiff is a multiple of minDtick and\n    // newFirst can be shifted to forceTick0) then do nothing - same\n    // forcing stands. Otherwise, cancel forced minimum\n\n    ((newFirst - ax._forceTick0) / ax._minDtick % 1 + 1.000001) % 1 > 2e-6) {\n      ax._minDtick = 0;\n    }\n  }\n};\n\n// save a copy of the initial axis ranges in fullLayout\n// use them in mode bar and dblclick events\naxes.saveRangeInitial = function (gd, overwrite) {\n  var axList = axes.list(gd, '', true);\n  var hasOneAxisChanged = false;\n  for (var i = 0; i < axList.length; i++) {\n    var ax = axList[i];\n    var isNew = ax._rangeInitial === undefined;\n    var hasChanged = isNew || !(ax.range[0] === ax._rangeInitial[0] && ax.range[1] === ax._rangeInitial[1]);\n    if (isNew && ax.autorange === false || overwrite && hasChanged) {\n      ax._rangeInitial = ax.range.slice();\n      hasOneAxisChanged = true;\n    }\n  }\n  return hasOneAxisChanged;\n};\n\n// save a copy of the initial spike visibility\naxes.saveShowSpikeInitial = function (gd, overwrite) {\n  var axList = axes.list(gd, '', true);\n  var hasOneAxisChanged = false;\n  var allSpikesEnabled = 'on';\n  for (var i = 0; i < axList.length; i++) {\n    var ax = axList[i];\n    var isNew = ax._showSpikeInitial === undefined;\n    var hasChanged = isNew || !(ax.showspikes === ax._showspikes);\n    if (isNew || overwrite && hasChanged) {\n      ax._showSpikeInitial = ax.showspikes;\n      hasOneAxisChanged = true;\n    }\n    if (allSpikesEnabled === 'on' && !ax.showspikes) {\n      allSpikesEnabled = 'off';\n    }\n  }\n  gd._fullLayout._cartesianSpikesEnabled = allSpikesEnabled;\n  return hasOneAxisChanged;\n};\naxes.autoBin = function (data, ax, nbins, is2d, calendar, size) {\n  var dataMin = Lib.aggNums(Math.min, null, data);\n  var dataMax = Lib.aggNums(Math.max, null, data);\n  if (ax.type === 'category' || ax.type === 'multicategory') {\n    return {\n      start: dataMin - 0.5,\n      end: dataMax + 0.5,\n      size: Math.max(1, Math.round(size) || 1),\n      _dataSpan: dataMax - dataMin\n    };\n  }\n  if (!calendar) calendar = ax.calendar;\n\n  // piggyback off tick code to make \"nice\" bin sizes and edges\n  var dummyAx;\n  if (ax.type === 'log') {\n    dummyAx = {\n      type: 'linear',\n      range: [dataMin, dataMax]\n    };\n  } else {\n    dummyAx = {\n      type: ax.type,\n      range: Lib.simpleMap([dataMin, dataMax], ax.c2r, 0, calendar),\n      calendar: calendar\n    };\n  }\n  axes.setConvert(dummyAx);\n  size = size && cleanTicks.dtick(size, dummyAx.type);\n  if (size) {\n    dummyAx.dtick = size;\n    dummyAx.tick0 = cleanTicks.tick0(undefined, dummyAx.type, calendar);\n  } else {\n    var size0;\n    if (nbins) size0 = (dataMax - dataMin) / nbins;else {\n      // totally auto: scale off std deviation so the highest bin is\n      // somewhat taller than the total number of bins, but don't let\n      // the size get smaller than the 'nice' rounded down minimum\n      // difference between values\n      var distinctData = Lib.distinctVals(data);\n      var msexp = Math.pow(10, Math.floor(Math.log(distinctData.minDiff) / Math.LN10));\n      var minSize = msexp * Lib.roundUp(distinctData.minDiff / msexp, [0.9, 1.9, 4.9, 9.9], true);\n      size0 = Math.max(minSize, 2 * Lib.stdev(data) / Math.pow(data.length, is2d ? 0.25 : 0.4));\n\n      // fallback if ax.d2c output BADNUMs\n      // e.g. when user try to plot categorical bins\n      // on a layout.xaxis.type: 'linear'\n      if (!isNumeric(size0)) size0 = 1;\n    }\n    axes.autoTicks(dummyAx, size0);\n  }\n  var finalSize = dummyAx.dtick;\n  var binStart = axes.tickIncrement(axes.tickFirst(dummyAx), finalSize, 'reverse', calendar);\n  var binEnd, bincount;\n\n  // check for too many data points right at the edges of bins\n  // (>50% within 1% of bin edges) or all data points integral\n  // and offset the bins accordingly\n  if (typeof finalSize === 'number') {\n    binStart = autoShiftNumericBins(binStart, data, dummyAx, dataMin, dataMax);\n    bincount = 1 + Math.floor((dataMax - binStart) / finalSize);\n    binEnd = binStart + bincount * finalSize;\n  } else {\n    // month ticks - should be the only nonlinear kind we have at this point.\n    // dtick (as supplied by axes.autoTick) only has nonlinear values on\n    // date and log axes, but even if you display a histogram on a log axis\n    // we bin it on a linear axis (which one could argue against, but that's\n    // a separate issue)\n    if (dummyAx.dtick.charAt(0) === 'M') {\n      binStart = autoShiftMonthBins(binStart, data, finalSize, dataMin, calendar);\n    }\n\n    // calculate the endpoint for nonlinear ticks - you have to\n    // just increment until you're done\n    binEnd = binStart;\n    bincount = 0;\n    while (binEnd <= dataMax) {\n      binEnd = axes.tickIncrement(binEnd, finalSize, false, calendar);\n      bincount++;\n    }\n  }\n  return {\n    start: ax.c2r(binStart, 0, calendar),\n    end: ax.c2r(binEnd, 0, calendar),\n    size: finalSize,\n    _dataSpan: dataMax - dataMin\n  };\n};\nfunction autoShiftNumericBins(binStart, data, ax, dataMin, dataMax) {\n  var edgecount = 0;\n  var midcount = 0;\n  var intcount = 0;\n  var blankCount = 0;\n  function nearEdge(v) {\n    // is a value within 1% of a bin edge?\n    return (1 + (v - binStart) * 100 / ax.dtick) % 100 < 2;\n  }\n  for (var i = 0; i < data.length; i++) {\n    if (data[i] % 1 === 0) intcount++;else if (!isNumeric(data[i])) blankCount++;\n    if (nearEdge(data[i])) edgecount++;\n    if (nearEdge(data[i] + ax.dtick / 2)) midcount++;\n  }\n  var dataCount = data.length - blankCount;\n  if (intcount === dataCount && ax.type !== 'date') {\n    if (ax.dtick < 1) {\n      // all integers: if bin size is <1, it's because\n      // that was specifically requested (large nbins)\n      // so respect that... but center the bins containing\n      // integers on those integers\n\n      binStart = dataMin - 0.5 * ax.dtick;\n    } else {\n      // otherwise start half an integer down regardless of\n      // the bin size, just enough to clear up endpoint\n      // ambiguity about which integers are in which bins.\n\n      binStart -= 0.5;\n      if (binStart + ax.dtick < dataMin) binStart += ax.dtick;\n    }\n  } else if (midcount < dataCount * 0.1) {\n    if (edgecount > dataCount * 0.3 || nearEdge(dataMin) || nearEdge(dataMax)) {\n      // lots of points at the edge, not many in the middle\n      // shift half a bin\n      var binshift = ax.dtick / 2;\n      binStart += binStart + binshift < dataMin ? binshift : -binshift;\n    }\n  }\n  return binStart;\n}\nfunction autoShiftMonthBins(binStart, data, dtick, dataMin, calendar) {\n  var stats = Lib.findExactDates(data, calendar);\n  // number of data points that needs to be an exact value\n  // to shift that increment to (near) the bin center\n  var threshold = 0.8;\n  if (stats.exactDays > threshold) {\n    var numMonths = Number(dtick.substr(1));\n    if (stats.exactYears > threshold && numMonths % 12 === 0) {\n      // The exact middle of a non-leap-year is 1.5 days into July\n      // so if we start the bins here, all but leap years will\n      // get hover-labeled as exact years.\n      binStart = axes.tickIncrement(binStart, 'M6', 'reverse') + ONEDAY * 1.5;\n    } else if (stats.exactMonths > threshold) {\n      // Months are not as clean, but if we shift half the *longest*\n      // month (31/2 days) then 31-day months will get labeled exactly\n      // and shorter months will get labeled with the correct month\n      // but shifted 12-36 hours into it.\n      binStart = axes.tickIncrement(binStart, 'M1', 'reverse') + ONEDAY * 15.5;\n    } else {\n      // Shifting half a day is exact, but since these are month bins it\n      // will always give a somewhat odd-looking label, until we do something\n      // smarter like showing the bin boundaries (or the bounds of the actual\n      // data in each bin)\n      binStart -= HALFDAY;\n    }\n    var nextBinStart = axes.tickIncrement(binStart, dtick);\n    if (nextBinStart <= dataMin) return nextBinStart;\n  }\n  return binStart;\n}\n\n// ----------------------------------------------------\n// Ticks and grids\n// ----------------------------------------------------\n\n// ensure we have minor tick0 and dtick calculated\naxes.prepMinorTicks = function (mockAx, ax, opts) {\n  if (!ax.minor.dtick) {\n    delete mockAx.dtick;\n    var hasMajor = ax.dtick && isNumeric(ax._tmin);\n    var mockMinorRange;\n    if (hasMajor) {\n      var tick2 = axes.tickIncrement(ax._tmin, ax.dtick, true);\n      // mock range a tiny bit smaller than one major tick interval\n      mockMinorRange = [ax._tmin, tick2 * 0.99 + ax._tmin * 0.01];\n    } else {\n      var rl = Lib.simpleMap(ax.range, ax.r2l);\n      // If we don't have a major dtick, the concept of minor ticks is a little\n      // ambiguous - just take a stab and say minor.nticks should span 1/5 the axis\n      mockMinorRange = [rl[0], 0.8 * rl[0] + 0.2 * rl[1]];\n    }\n    mockAx.range = Lib.simpleMap(mockMinorRange, ax.l2r);\n    mockAx._isMinor = true;\n    axes.prepTicks(mockAx, opts);\n    if (hasMajor) {\n      var numericMajor = isNumeric(ax.dtick);\n      var numericMinor = isNumeric(mockAx.dtick);\n      var majorNum = numericMajor ? ax.dtick : +ax.dtick.substring(1);\n      var minorNum = numericMinor ? mockAx.dtick : +mockAx.dtick.substring(1);\n      if (numericMajor && numericMinor) {\n        if (!isMultiple(majorNum, minorNum)) {\n          // give up on minor ticks - outside the below exceptions,\n          // this can only happen if minor.nticks is smaller than two jumps\n          // in the auto-tick scale and the first jump is not an even multiple\n          // (5 -> 2 or for dates 3 ->2, 15 -> 10 etc)  or if you provided\n          // an explicit dtick, in which case it's fine to give up,\n          // you can provide an explicit minor.dtick.\n          if (majorNum === 2 * ONEWEEK && minorNum === 3 * ONEDAY) {\n            mockAx.dtick = ONEWEEK;\n          } else if (majorNum === ONEWEEK && !(ax._input.minor || {}).nticks) {\n            // minor.nticks defaults to 5, but in this one case we want 7,\n            // so the minor ticks show on all days of the week\n            mockAx.dtick = ONEDAY;\n          } else if (isClose(majorNum / minorNum, 2.5)) {\n            // 5*10^n -> 2*10^n and you've set nticks < 5\n            // quarters are pretty common, we don't do this by default as it\n            // would add an extra digit to display, but minor has no labels\n            mockAx.dtick = majorNum / 2;\n          } else {\n            mockAx.dtick = majorNum;\n          }\n        } else if (majorNum === 2 * ONEWEEK && minorNum === 2 * ONEDAY) {\n          // this is a weird one: we don't want to automatically choose\n          // 2-day minor ticks for 2-week major, even though it IS an even multiple,\n          // because people would expect to see the weeks clearly\n          mockAx.dtick = ONEWEEK;\n        }\n      } else if (String(ax.dtick).charAt(0) === 'M') {\n        if (numericMinor) {\n          mockAx.dtick = 'M1';\n        } else {\n          if (!isMultiple(majorNum, minorNum)) {\n            // unless you provided an explicit ax.dtick (in which case\n            // it's OK for us to give up, you can provide an explicit\n            // minor.dtick too), this can only happen with:\n            // minor.nticks < 3 and dtick === M3, or\n            // minor.nticks < 5 and dtick === 5 * 10^n years\n            // so in all cases we just give up.\n            mockAx.dtick = ax.dtick;\n          } else if (majorNum >= 12 && minorNum === 2) {\n            // another special carve-out: for year major ticks, don't show\n            // 2-month minor ticks, bump to quarters\n            mockAx.dtick = 'M3';\n          }\n        }\n      } else if (String(mockAx.dtick).charAt(0) === 'L') {\n        if (String(ax.dtick).charAt(0) === 'L') {\n          if (!isMultiple(majorNum, minorNum)) {\n            mockAx.dtick = isClose(majorNum / minorNum, 2.5) ? ax.dtick / 2 : ax.dtick;\n          }\n        } else {\n          mockAx.dtick = 'D1';\n        }\n      } else if (mockAx.dtick === 'D2' && +ax.dtick > 1) {\n        // the D2 log axis tick spacing is confusing for unlabeled minor ticks if\n        // the major dtick is more than one order of magnitude.\n        mockAx.dtick = 1;\n      }\n    }\n    // put back the original range, to use to find the full set of minor ticks\n    mockAx.range = ax.range;\n  }\n  if (ax.minor._tick0Init === undefined) {\n    // ensure identical tick0\n    mockAx.tick0 = ax.tick0;\n  }\n};\nfunction isMultiple(bigger, smaller) {\n  return Math.abs((bigger / smaller + 0.5) % 1 - 0.5) < 0.001;\n}\nfunction isClose(a, b) {\n  return Math.abs(a / b - 1) < 0.001;\n}\n\n// ensure we have tick0, dtick, and tick rounding calculated\naxes.prepTicks = function (ax, opts) {\n  var rng = Lib.simpleMap(ax.range, ax.r2l, undefined, undefined, opts);\n\n  // calculate max number of (auto) ticks to display based on plot size\n  if (ax.tickmode === 'auto' || !ax.dtick) {\n    var nt = ax.nticks;\n    var minPx;\n    if (!nt) {\n      if (ax.type === 'category' || ax.type === 'multicategory') {\n        minPx = ax.tickfont ? Lib.bigFont(ax.tickfont.size || 12) : 15;\n        nt = ax._length / minPx;\n      } else {\n        minPx = ax._id.charAt(0) === 'y' ? 40 : 80;\n        nt = Lib.constrain(ax._length / minPx, 4, 9) + 1;\n      }\n\n      // radial axes span half their domain,\n      // multiply nticks value by two to get correct number of auto ticks.\n      if (ax._name === 'radialaxis') nt *= 2;\n    }\n    if (!(ax.minor && ax.minor.tickmode !== 'array')) {\n      // add a couple of extra digits for filling in ticks when we\n      // have explicit tickvals without tick text\n      if (ax.tickmode === 'array') nt *= 100;\n    }\n    ax._roughDTick = Math.abs(rng[1] - rng[0]) / nt;\n    axes.autoTicks(ax, ax._roughDTick);\n\n    // check for a forced minimum dtick\n    if (ax._minDtick > 0 && ax.dtick < ax._minDtick * 2) {\n      ax.dtick = ax._minDtick;\n      ax.tick0 = ax.l2r(ax._forceTick0);\n    }\n  }\n  if (ax.ticklabelmode === 'period') {\n    adjustPeriodDelta(ax);\n  }\n\n  // check for missing tick0\n  if (!ax.tick0) {\n    ax.tick0 = ax.type === 'date' ? '2000-01-01' : 0;\n  }\n\n  // ensure we don't try to make ticks below our minimum precision\n  // see https://github.com/plotly/plotly.js/issues/2892\n  if (ax.type === 'date' && ax.dtick < 0.1) ax.dtick = 0.1;\n\n  // now figure out rounding of tick values\n  autoTickRound(ax);\n};\nfunction nMonths(dtick) {\n  return +dtick.substring(1);\n}\nfunction adjustPeriodDelta(ax) {\n  // adjusts ax.dtick and sets ax._definedDelta\n  var definedDelta;\n  function mDate() {\n    return !(isNumeric(ax.dtick) || ax.dtick.charAt(0) !== 'M');\n  }\n  var isMDate = mDate();\n  var tickformat = axes.getTickFormat(ax);\n  if (tickformat) {\n    var noDtick = ax._dtickInit !== ax.dtick;\n    if (!/%[fLQsSMX]/.test(tickformat)\n    // %f: microseconds as a decimal number [000000, 999999]\n    // %L: milliseconds as a decimal number [000, 999]\n    // %Q: milliseconds since UNIX epoch\n    // %s: seconds since UNIX epoch\n    // %S: second as a decimal number [00,61]\n    // %M: minute as a decimal number [00,59]\n    // %X: the locale’s time, such as %-I:%M:%S %p\n    ) {\n      if (/%[HI]/.test(tickformat)\n      // %H: hour (24-hour clock) as a decimal number [00,23]\n      // %I: hour (12-hour clock) as a decimal number [01,12]\n      ) {\n        definedDelta = ONEHOUR;\n        if (noDtick && !isMDate && ax.dtick < ONEHOUR) ax.dtick = ONEHOUR;\n      } else if (/%p/.test(tickformat) // %p: either AM or PM\n      ) {\n        definedDelta = HALFDAY;\n        if (noDtick && !isMDate && ax.dtick < HALFDAY) ax.dtick = HALFDAY;\n      } else if (/%[Aadejuwx]/.test(tickformat)\n      // %A: full weekday name\n      // %a: abbreviated weekday name\n      // %d: zero-padded day of the month as a decimal number [01,31]\n      // %e: space-padded day of the month as a decimal number [ 1,31]\n      // %j: day of the year as a decimal number [001,366]\n      // %u: Monday-based (ISO 8601) weekday as a decimal number [1,7]\n      // %w: Sunday-based weekday as a decimal number [0,6]\n      // %x: the locale’s date, such as %-m/%-d/%Y\n      ) {\n        definedDelta = ONEDAY;\n        if (noDtick && !isMDate && ax.dtick < ONEDAY) ax.dtick = ONEDAY;\n      } else if (/%[UVW]/.test(tickformat)\n      // %U: Sunday-based week of the year as a decimal number [00,53]\n      // %V: ISO 8601 week of the year as a decimal number [01, 53]\n      // %W: Monday-based week of the year as a decimal number [00,53]\n      ) {\n        definedDelta = ONEWEEK;\n        if (noDtick && !isMDate && ax.dtick < ONEWEEK) ax.dtick = ONEWEEK;\n      } else if (/%[Bbm]/.test(tickformat)\n      // %B: full month name\n      // %b: abbreviated month name\n      // %m: month as a decimal number [01,12]\n      ) {\n        definedDelta = ONEAVGMONTH;\n        if (noDtick && (isMDate ? nMonths(ax.dtick) < 1 : ax.dtick < ONEMINMONTH)) ax.dtick = 'M1';\n      } else if (/%[q]/.test(tickformat)\n      // %q: quarter of the year as a decimal number [1,4]\n      ) {\n        definedDelta = ONEAVGQUARTER;\n        if (noDtick && (isMDate ? nMonths(ax.dtick) < 3 : ax.dtick < ONEMINQUARTER)) ax.dtick = 'M3';\n      } else if (/%[Yy]/.test(tickformat)\n      // %Y: year with century as a decimal number, such as 1999\n      // %y: year without century as a decimal number [00,99]\n      ) {\n        definedDelta = ONEAVGYEAR;\n        if (noDtick && (isMDate ? nMonths(ax.dtick) < 12 : ax.dtick < ONEMINYEAR)) ax.dtick = 'M12';\n      }\n    }\n  }\n  isMDate = mDate();\n  if (isMDate && ax.tick0 === ax._dowTick0) {\n    // discard Sunday/Monday tweaks\n    ax.tick0 = ax._rawTick0;\n  }\n  ax._definedDelta = definedDelta;\n}\nfunction positionPeriodTicks(tickVals, ax, definedDelta) {\n  for (var i = 0; i < tickVals.length; i++) {\n    var v = tickVals[i].value;\n    var a = i;\n    var b = i + 1;\n    if (i < tickVals.length - 1) {\n      a = i;\n      b = i + 1;\n    } else if (i > 0) {\n      a = i - 1;\n      b = i;\n    } else {\n      a = i;\n      b = i;\n    }\n    var A = tickVals[a].value;\n    var B = tickVals[b].value;\n    var actualDelta = Math.abs(B - A);\n    var delta = definedDelta || actualDelta;\n    var periodLength = 0;\n    if (delta >= ONEMINYEAR) {\n      if (actualDelta >= ONEMINYEAR && actualDelta <= ONEMAXYEAR) {\n        periodLength = actualDelta;\n      } else {\n        periodLength = ONEAVGYEAR;\n      }\n    } else if (definedDelta === ONEAVGQUARTER && delta >= ONEMINQUARTER) {\n      if (actualDelta >= ONEMINQUARTER && actualDelta <= ONEMAXQUARTER) {\n        periodLength = actualDelta;\n      } else {\n        periodLength = ONEAVGQUARTER;\n      }\n    } else if (delta >= ONEMINMONTH) {\n      if (actualDelta >= ONEMINMONTH && actualDelta <= ONEMAXMONTH) {\n        periodLength = actualDelta;\n      } else {\n        periodLength = ONEAVGMONTH;\n      }\n    } else if (definedDelta === ONEWEEK && delta >= ONEWEEK) {\n      periodLength = ONEWEEK;\n    } else if (delta >= ONEDAY) {\n      periodLength = ONEDAY;\n    } else if (definedDelta === HALFDAY && delta >= HALFDAY) {\n      periodLength = HALFDAY;\n    } else if (definedDelta === ONEHOUR && delta >= ONEHOUR) {\n      periodLength = ONEHOUR;\n    }\n    var inBetween;\n    if (periodLength >= actualDelta) {\n      // ensure new label positions remain between ticks\n      periodLength = actualDelta;\n      inBetween = true;\n    }\n    var endPeriod = v + periodLength;\n    if (ax.rangebreaks && periodLength > 0) {\n      var nAll = 84; // highly divisible 7 * 12\n      var n = 0;\n      for (var c = 0; c < nAll; c++) {\n        var r = (c + 0.5) / nAll;\n        if (ax.maskBreaks(v * (1 - r) + r * endPeriod) !== BADNUM) n++;\n      }\n      periodLength *= n / nAll;\n      if (!periodLength) {\n        tickVals[i].drop = true;\n      }\n      if (inBetween && actualDelta > ONEWEEK) periodLength = actualDelta; // center monthly & longer periods\n    }\n\n    if (periodLength > 0 ||\n    // not instant\n    i === 0 // taking care first tick added\n    ) {\n      tickVals[i].periodX = v + periodLength / 2;\n    }\n  }\n}\n\n// calculate the ticks: text, values, positioning\n// if ticks are set to automatic, determine the right values (tick0,dtick)\n// in any case, set tickround to # of digits to round tick labels to,\n// or codes to this effect for log and date scales\naxes.calcTicks = function calcTicks(ax, opts) {\n  var type = ax.type;\n  var calendar = ax.calendar;\n  var ticklabelstep = ax.ticklabelstep;\n  var isPeriod = ax.ticklabelmode === 'period';\n  var rng = Lib.simpleMap(ax.range, ax.r2l, undefined, undefined, opts);\n  var axrev = rng[1] < rng[0];\n  var minRange = Math.min(rng[0], rng[1]);\n  var maxRange = Math.max(rng[0], rng[1]);\n  var maxTicks = Math.max(1000, ax._length || 0);\n  var ticksOut = [];\n  var minorTicks = [];\n  var tickVals = [];\n  var minorTickVals = [];\n  var hasMinor = ax.minor && (ax.minor.ticks || ax.minor.showgrid);\n\n  // calc major first\n  for (var major = 1; major >= (hasMinor ? 0 : 1); major--) {\n    var isMinor = !major;\n    if (major) {\n      ax._dtickInit = ax.dtick;\n      ax._tick0Init = ax.tick0;\n    } else {\n      ax.minor._dtickInit = ax.minor.dtick;\n      ax.minor._tick0Init = ax.minor.tick0;\n    }\n    var mockAx = major ? ax : Lib.extendFlat({}, ax, ax.minor);\n    if (isMinor) {\n      axes.prepMinorTicks(mockAx, ax, opts);\n    } else {\n      axes.prepTicks(mockAx, opts);\n    }\n\n    // now that we've figured out the auto values for formatting\n    // in case we're missing some ticktext, we can break out for array ticks\n    if (mockAx.tickmode === 'array') {\n      if (major) {\n        tickVals = [];\n        ticksOut = arrayTicks(ax);\n      } else {\n        minorTickVals = [];\n        minorTicks = arrayTicks(ax);\n      }\n      continue;\n    }\n\n    // fill tickVals based on overlaying axis\n    if (mockAx.tickmode === 'sync') {\n      tickVals = [];\n      ticksOut = syncTicks(ax);\n      continue;\n    }\n\n    // add a tiny bit so we get ticks which may have rounded out\n    var exRng = expandRange(rng);\n    var startTick = exRng[0];\n    var endTick = exRng[1];\n    var numDtick = isNumeric(mockAx.dtick);\n    var isDLog = type === 'log' && !(numDtick || mockAx.dtick.charAt(0) === 'L');\n\n    // find the first tick\n    var x0 = axes.tickFirst(mockAx, opts);\n    if (major) {\n      ax._tmin = x0;\n\n      // No visible ticks? Quit.\n      // I've only seen this on category axes with all categories off the edge.\n      if (x0 < startTick !== axrev) break;\n\n      // return the full set of tick vals\n      if (type === 'category' || type === 'multicategory') {\n        endTick = axrev ? Math.max(-0.5, endTick) : Math.min(ax._categories.length - 0.5, endTick);\n      }\n    }\n    var prevX = null;\n    var x = x0;\n    var majorId;\n    if (major) {\n      // ids for ticklabelstep\n      var _dTick;\n      if (numDtick) {\n        _dTick = ax.dtick;\n      } else {\n        if (type === 'date') {\n          if (typeof ax.dtick === 'string' && ax.dtick.charAt(0) === 'M') {\n            _dTick = ONEAVGMONTH * ax.dtick.substring(1);\n          }\n        } else {\n          _dTick = ax._roughDTick;\n        }\n      }\n      majorId = Math.round((ax.r2l(x) - ax.r2l(ax.tick0)) / _dTick) - 1;\n    }\n    var dtick = mockAx.dtick;\n    if (mockAx.rangebreaks && mockAx._tick0Init !== mockAx.tick0) {\n      // adjust tick0\n      x = moveOutsideBreak(x, ax);\n      if (!axrev) {\n        x = axes.tickIncrement(x, dtick, !axrev, calendar);\n      }\n    }\n    if (major && isPeriod) {\n      // add one item to label period before tick0\n      x = axes.tickIncrement(x, dtick, !axrev, calendar);\n      majorId--;\n    }\n    for (; axrev ? x >= endTick : x <= endTick; x = axes.tickIncrement(x, dtick, axrev, calendar)) {\n      if (major) majorId++;\n      if (mockAx.rangebreaks) {\n        if (!axrev) {\n          if (x < startTick) continue;\n          if (mockAx.maskBreaks(x) === BADNUM && moveOutsideBreak(x, mockAx) >= maxRange) break;\n        }\n      }\n\n      // prevent infinite loops - no more than one tick per pixel,\n      // and make sure each value is different from the previous\n      if (tickVals.length > maxTicks || x === prevX) break;\n      prevX = x;\n      var obj = {\n        value: x\n      };\n      if (major) {\n        if (isDLog && x !== (x | 0)) {\n          obj.simpleLabel = true;\n        }\n        if (ticklabelstep > 1 && majorId % ticklabelstep) {\n          obj.skipLabel = true;\n        }\n        tickVals.push(obj);\n      } else {\n        obj.minor = true;\n        minorTickVals.push(obj);\n      }\n    }\n  }\n  if (hasMinor) {\n    var canOverlap = ax.minor.ticks === 'inside' && ax.ticks === 'outside' || ax.minor.ticks === 'outside' && ax.ticks === 'inside';\n    if (!canOverlap) {\n      // remove duplicate minors\n\n      var majorValues = tickVals.map(function (d) {\n        return d.value;\n      });\n      var list = [];\n      for (var k = 0; k < minorTickVals.length; k++) {\n        var T = minorTickVals[k];\n        var v = T.value;\n        if (majorValues.indexOf(v) !== -1) {\n          continue;\n        }\n        var found = false;\n        for (var q = 0; !found && q < tickVals.length; q++) {\n          if (\n          // add 10e6 to eliminate problematic digits\n          10e6 + tickVals[q].value === 10e6 + v) {\n            found = true;\n          }\n        }\n        if (!found) list.push(T);\n      }\n      minorTickVals = list;\n    }\n  }\n  if (isPeriod) positionPeriodTicks(tickVals, ax, ax._definedDelta);\n  var i;\n  if (ax.rangebreaks) {\n    var flip = ax._id.charAt(0) === 'y';\n    var fontSize = 1; // one pixel minimum\n    if (ax.tickmode === 'auto') {\n      fontSize = ax.tickfont ? ax.tickfont.size : 12;\n    }\n    var prevL = NaN;\n    for (i = tickVals.length - 1; i > -1; i--) {\n      if (tickVals[i].drop) {\n        tickVals.splice(i, 1);\n        continue;\n      }\n      tickVals[i].value = moveOutsideBreak(tickVals[i].value, ax);\n\n      // avoid overlaps\n      var l = ax.c2p(tickVals[i].value);\n      if (flip ? prevL > l - fontSize : prevL < l + fontSize) {\n        // ensure one pixel minimum\n        tickVals.splice(axrev ? i + 1 : i, 1);\n      } else {\n        prevL = l;\n      }\n    }\n  }\n\n  // If same angle over a full circle, the last tick vals is a duplicate.\n  // TODO must do something similar for angular date axes.\n  if (isAngular(ax) && Math.abs(rng[1] - rng[0]) === 360) {\n    tickVals.pop();\n  }\n\n  // save the last tick as well as first, so we can\n  // show the exponent only on the last one\n  ax._tmax = (tickVals[tickVals.length - 1] || {}).value;\n\n  // for showing the rest of a date when the main tick label is only the\n  // latter part: ax._prevDateHead holds what we showed most recently.\n  // Start with it cleared and mark that we're in calcTicks (ie calculating a\n  // whole string of these so we should care what the previous date head was!)\n  ax._prevDateHead = '';\n  ax._inCalcTicks = true;\n  var lastVisibleHead;\n  var hideLabel = function (tick) {\n    tick.text = '';\n    ax._prevDateHead = lastVisibleHead;\n  };\n  tickVals = tickVals.concat(minorTickVals);\n  var t, p;\n  for (i = 0; i < tickVals.length; i++) {\n    var _minor = tickVals[i].minor;\n    var _value = tickVals[i].value;\n    if (_minor) {\n      minorTicks.push({\n        x: _value,\n        minor: true\n      });\n    } else {\n      lastVisibleHead = ax._prevDateHead;\n      t = axes.tickText(ax, _value, false,\n      // hover\n      tickVals[i].simpleLabel // noSuffixPrefix\n      );\n\n      p = tickVals[i].periodX;\n      if (p !== undefined) {\n        t.periodX = p;\n        if (p > maxRange || p < minRange) {\n          // hide label if outside the range\n          if (p > maxRange) t.periodX = maxRange;\n          if (p < minRange) t.periodX = minRange;\n          hideLabel(t);\n        }\n      }\n      if (tickVals[i].skipLabel) {\n        hideLabel(t);\n      }\n      ticksOut.push(t);\n    }\n  }\n  ticksOut = ticksOut.concat(minorTicks);\n  ax._inCalcTicks = false;\n  if (isPeriod && ticksOut.length) {\n    // drop very first tick that we added to handle period\n    ticksOut[0].noTick = true;\n  }\n  return ticksOut;\n};\nfunction filterRangeBreaks(ax, ticksOut) {\n  if (ax.rangebreaks) {\n    // remove ticks falling inside rangebreaks\n    ticksOut = ticksOut.filter(function (d) {\n      return ax.maskBreaks(d.x) !== BADNUM;\n    });\n  }\n  return ticksOut;\n}\nfunction syncTicks(ax) {\n  // get the overlaying axis\n  var baseAxis = ax._mainAxis;\n  var ticksOut = [];\n  if (baseAxis._vals) {\n    for (var i = 0; i < baseAxis._vals.length; i++) {\n      // filter vals with noTick flag\n      if (baseAxis._vals[i].noTick) {\n        continue;\n      }\n\n      // get the position of the every tick\n      var pos = baseAxis.l2p(baseAxis._vals[i].x);\n\n      // get the tick for the current axis based on position\n      var vali = ax.p2l(pos);\n      var obj = axes.tickText(ax, vali);\n\n      // assign minor ticks\n      if (baseAxis._vals[i].minor) {\n        obj.minor = true;\n        obj.text = '';\n      }\n      ticksOut.push(obj);\n    }\n  }\n  ticksOut = filterRangeBreaks(ax, ticksOut);\n  return ticksOut;\n}\nfunction arrayTicks(ax) {\n  var rng = Lib.simpleMap(ax.range, ax.r2l);\n  var exRng = expandRange(rng);\n  var tickMin = Math.min(exRng[0], exRng[1]);\n  var tickMax = Math.max(exRng[0], exRng[1]);\n\n  // make sure showing ticks doesn't accidentally add new categories\n  // TODO multicategory, if we allow ticktext / tickvals\n  var tickVal2l = ax.type === 'category' ? ax.d2l_noadd : ax.d2l;\n\n  // array ticks on log axes always show the full number\n  // (if no explicit ticktext overrides it)\n  if (ax.type === 'log' && String(ax.dtick).charAt(0) !== 'L') {\n    ax.dtick = 'L' + Math.pow(10, Math.floor(Math.min(ax.range[0], ax.range[1])) - 1);\n  }\n  var ticksOut = [];\n  for (var isMinor = 0; isMinor <= 1; isMinor++) {\n    if (isMinor && !ax.minor) continue;\n    var vals = !isMinor ? ax.tickvals : ax.minor.tickvals;\n    var text = !isMinor ? ax.ticktext : [];\n    if (!vals) continue;\n\n    // without a text array, just format the given values as any other ticks\n    // except with more precision to the numbers\n    if (!Array.isArray(text)) text = [];\n    for (var i = 0; i < vals.length; i++) {\n      var vali = tickVal2l(vals[i]);\n      if (vali > tickMin && vali < tickMax) {\n        var obj = text[i] === undefined ? axes.tickText(ax, vali) : tickTextObj(ax, vali, String(text[i]));\n        if (isMinor) {\n          obj.minor = true;\n          obj.text = '';\n        }\n        ticksOut.push(obj);\n      }\n    }\n  }\n  ticksOut = filterRangeBreaks(ax, ticksOut);\n  return ticksOut;\n}\nvar roundBase10 = [2, 5, 10];\nvar roundBase24 = [1, 2, 3, 6, 12];\nvar roundBase60 = [1, 2, 5, 10, 15, 30];\n// 2&3 day ticks are weird, but need something btwn 1&7\nvar roundDays = [1, 2, 3, 7, 14];\n// approx. tick positions for log axes, showing all (1) and just 1, 2, 5 (2)\n// these don't have to be exact, just close enough to round to the right value\nvar roundLog1 = [-0.046, 0, 0.301, 0.477, 0.602, 0.699, 0.778, 0.845, 0.903, 0.954, 1];\nvar roundLog2 = [-0.301, 0, 0.301, 0.699, 1];\n// N.B. `thetaunit; 'radians' angular axes must be converted to degrees\nvar roundAngles = [15, 30, 45, 90, 180];\nfunction roundDTick(roughDTick, base, roundingSet) {\n  return base * Lib.roundUp(roughDTick / base, roundingSet);\n}\n\n// autoTicks: calculate best guess at pleasant ticks for this axis\n// inputs:\n//      ax - an axis object\n//      roughDTick - rough tick spacing (to be turned into a nice round number)\n// outputs (into ax):\n//   tick0: starting point for ticks (not necessarily on the graph)\n//      usually 0 for numeric (=10^0=1 for log) or jan 1, 2000 for dates\n//   dtick: the actual, nice round tick spacing, usually a little larger than roughDTick\n//      if the ticks are spaced linearly (linear scale, categories,\n//          log with only full powers, date ticks < month),\n//          this will just be a number\n//      months: M#\n//      years: M# where # is 12*number of years\n//      log with linear ticks: L# where # is the linear tick spacing\n//      log showing powers plus some intermediates:\n//          D1 shows all digits, D2 shows 2 and 5\naxes.autoTicks = function (ax, roughDTick, isMinor) {\n  var base;\n  function getBase(v) {\n    return Math.pow(v, Math.floor(Math.log(roughDTick) / Math.LN10));\n  }\n  if (ax.type === 'date') {\n    ax.tick0 = Lib.dateTick0(ax.calendar, 0);\n\n    // the criteria below are all based on the rough spacing we calculate\n    // being > half of the final unit - so precalculate twice the rough val\n    var roughX2 = 2 * roughDTick;\n    if (roughX2 > ONEAVGYEAR) {\n      roughDTick /= ONEAVGYEAR;\n      base = getBase(10);\n      ax.dtick = 'M' + 12 * roundDTick(roughDTick, base, roundBase10);\n    } else if (roughX2 > ONEAVGMONTH) {\n      roughDTick /= ONEAVGMONTH;\n      ax.dtick = 'M' + roundDTick(roughDTick, 1, roundBase24);\n    } else if (roughX2 > ONEDAY) {\n      ax.dtick = roundDTick(roughDTick, ONEDAY, ax._hasDayOfWeekBreaks ? [1, 2, 7, 14] : roundDays);\n      if (!isMinor) {\n        // get week ticks on sunday\n        // this will also move the base tick off 2000-01-01 if dtick is\n        // 2 or 3 days... but that's a weird enough case that we'll ignore it.\n        var tickformat = axes.getTickFormat(ax);\n        var isPeriod = ax.ticklabelmode === 'period';\n        if (isPeriod) ax._rawTick0 = ax.tick0;\n        if (/%[uVW]/.test(tickformat)) {\n          ax.tick0 = Lib.dateTick0(ax.calendar, 2); // Monday\n        } else {\n          ax.tick0 = Lib.dateTick0(ax.calendar, 1); // Sunday\n        }\n\n        if (isPeriod) ax._dowTick0 = ax.tick0;\n      }\n    } else if (roughX2 > ONEHOUR) {\n      ax.dtick = roundDTick(roughDTick, ONEHOUR, roundBase24);\n    } else if (roughX2 > ONEMIN) {\n      ax.dtick = roundDTick(roughDTick, ONEMIN, roundBase60);\n    } else if (roughX2 > ONESEC) {\n      ax.dtick = roundDTick(roughDTick, ONESEC, roundBase60);\n    } else {\n      // milliseconds\n      base = getBase(10);\n      ax.dtick = roundDTick(roughDTick, base, roundBase10);\n    }\n  } else if (ax.type === 'log') {\n    ax.tick0 = 0;\n    var rng = Lib.simpleMap(ax.range, ax.r2l);\n    if (ax._isMinor) {\n      // Log axes by default get MORE than nTicks based on the metrics below\n      // But for minor ticks we don't want this increase, we already have\n      // the major ticks.\n      roughDTick *= 1.5;\n    }\n    if (roughDTick > 0.7) {\n      // only show powers of 10\n      ax.dtick = Math.ceil(roughDTick);\n    } else if (Math.abs(rng[1] - rng[0]) < 1) {\n      // span is less than one power of 10\n      var nt = 1.5 * Math.abs((rng[1] - rng[0]) / roughDTick);\n\n      // ticks on a linear scale, labeled fully\n      roughDTick = Math.abs(Math.pow(10, rng[1]) - Math.pow(10, rng[0])) / nt;\n      base = getBase(10);\n      ax.dtick = 'L' + roundDTick(roughDTick, base, roundBase10);\n    } else {\n      // include intermediates between powers of 10,\n      // labeled with small digits\n      // ax.dtick = \"D2\" (show 2 and 5) or \"D1\" (show all digits)\n      ax.dtick = roughDTick > 0.3 ? 'D2' : 'D1';\n    }\n  } else if (ax.type === 'category' || ax.type === 'multicategory') {\n    ax.tick0 = 0;\n    ax.dtick = Math.ceil(Math.max(roughDTick, 1));\n  } else if (isAngular(ax)) {\n    ax.tick0 = 0;\n    base = 1;\n    ax.dtick = roundDTick(roughDTick, base, roundAngles);\n  } else {\n    // auto ticks always start at 0\n    ax.tick0 = 0;\n    base = getBase(10);\n    ax.dtick = roundDTick(roughDTick, base, roundBase10);\n  }\n\n  // prevent infinite loops\n  if (ax.dtick === 0) ax.dtick = 1;\n\n  // TODO: this is from log axis histograms with autorange off\n  if (!isNumeric(ax.dtick) && typeof ax.dtick !== 'string') {\n    var olddtick = ax.dtick;\n    ax.dtick = 1;\n    throw 'ax.dtick error: ' + String(olddtick);\n  }\n};\n\n// after dtick is already known, find tickround = precision\n// to display in tick labels\n//   for numeric ticks, integer # digits after . to round to\n//   for date ticks, the last date part to show (y,m,d,H,M,S)\n//      or an integer # digits past seconds\nfunction autoTickRound(ax) {\n  var dtick = ax.dtick;\n  ax._tickexponent = 0;\n  if (!isNumeric(dtick) && typeof dtick !== 'string') {\n    dtick = 1;\n  }\n  if (ax.type === 'category' || ax.type === 'multicategory') {\n    ax._tickround = null;\n  }\n  if (ax.type === 'date') {\n    // If tick0 is unusual, give tickround a bit more information\n    // not necessarily *all* the information in tick0 though, if it's really odd\n    // minimal string length for tick0: 'd' is 10, 'M' is 16, 'S' is 19\n    // take off a leading minus (year < 0) and i (intercalary month) so length is consistent\n    var tick0ms = ax.r2l(ax.tick0);\n    var tick0str = ax.l2r(tick0ms).replace(/(^-|i)/g, '');\n    var tick0len = tick0str.length;\n    if (String(dtick).charAt(0) === 'M') {\n      // any tick0 more specific than a year: alway show the full date\n      if (tick0len > 10 || tick0str.substr(5) !== '01-01') ax._tickround = 'd';\n      // show the month unless ticks are full multiples of a year\n      else ax._tickround = +dtick.substr(1) % 12 === 0 ? 'y' : 'm';\n    } else if (dtick >= ONEDAY && tick0len <= 10 || dtick >= ONEDAY * 15) ax._tickround = 'd';else if (dtick >= ONEMIN && tick0len <= 16 || dtick >= ONEHOUR) ax._tickround = 'M';else if (dtick >= ONESEC && tick0len <= 19 || dtick >= ONEMIN) ax._tickround = 'S';else {\n      // tickround is a number of digits of fractional seconds\n      // of any two adjacent ticks, at least one will have the maximum fractional digits\n      // of all possible ticks - so take the max. length of tick0 and the next one\n      var tick1len = ax.l2r(tick0ms + dtick).replace(/^-/, '').length;\n      ax._tickround = Math.max(tick0len, tick1len) - 20;\n\n      // We shouldn't get here... but in case there's a situation I'm\n      // not thinking of where tick0str and tick1str are identical or\n      // something, fall back on maximum precision\n      if (ax._tickround < 0) ax._tickround = 4;\n    }\n  } else if (isNumeric(dtick) || dtick.charAt(0) === 'L') {\n    // linear or log (except D1, D2)\n    var rng = ax.range.map(ax.r2d || Number);\n    if (!isNumeric(dtick)) dtick = Number(dtick.substr(1));\n    // 2 digits past largest digit of dtick\n    ax._tickround = 2 - Math.floor(Math.log(dtick) / Math.LN10 + 0.01);\n    var maxend = Math.max(Math.abs(rng[0]), Math.abs(rng[1]));\n    var rangeexp = Math.floor(Math.log(maxend) / Math.LN10 + 0.01);\n    var minexponent = ax.minexponent === undefined ? 3 : ax.minexponent;\n    if (Math.abs(rangeexp) > minexponent) {\n      if (isSIFormat(ax.exponentformat) && !beyondSI(rangeexp)) {\n        ax._tickexponent = 3 * Math.round((rangeexp - 1) / 3);\n      } else ax._tickexponent = rangeexp;\n    }\n  } else {\n    // D1 or D2 (log)\n    ax._tickround = null;\n  }\n}\n\n// months and years don't have constant millisecond values\n// (but a year is always 12 months so we only need months)\n// log-scale ticks are also not consistently spaced, except\n// for pure powers of 10\n// numeric ticks always have constant differences, other datetime ticks\n// can all be calculated as constant number of milliseconds\naxes.tickIncrement = function (x, dtick, axrev, calendar) {\n  var axSign = axrev ? -1 : 1;\n\n  // includes linear, all dates smaller than month, and pure 10^n in log\n  if (isNumeric(dtick)) return Lib.increment(x, axSign * dtick);\n\n  // everything else is a string, one character plus a number\n  var tType = dtick.charAt(0);\n  var dtSigned = axSign * Number(dtick.substr(1));\n\n  // Dates: months (or years - see Lib.incrementMonth)\n  if (tType === 'M') return Lib.incrementMonth(x, dtSigned, calendar);\n\n  // Log scales: Linear, Digits\n  if (tType === 'L') return Math.log(Math.pow(10, x) + dtSigned) / Math.LN10;\n\n  // log10 of 2,5,10, or all digits (logs just have to be\n  // close enough to round)\n  if (tType === 'D') {\n    var tickset = dtick === 'D2' ? roundLog2 : roundLog1;\n    var x2 = x + axSign * 0.01;\n    var frac = Lib.roundUp(Lib.mod(x2, 1), tickset, axrev);\n    return Math.floor(x2) + Math.log(d3.round(Math.pow(10, frac), 1)) / Math.LN10;\n  }\n  throw 'unrecognized dtick ' + String(dtick);\n};\n\n// calculate the first tick on an axis\naxes.tickFirst = function (ax, opts) {\n  var r2l = ax.r2l || Number;\n  var rng = Lib.simpleMap(ax.range, r2l, undefined, undefined, opts);\n  var axrev = rng[1] < rng[0];\n  var sRound = axrev ? Math.floor : Math.ceil;\n  // add a tiny extra bit to make sure we get ticks\n  // that may have been rounded out\n  var r0 = expandRange(rng)[0];\n  var dtick = ax.dtick;\n  var tick0 = r2l(ax.tick0);\n  if (isNumeric(dtick)) {\n    var tmin = sRound((r0 - tick0) / dtick) * dtick + tick0;\n\n    // make sure no ticks outside the category list\n    if (ax.type === 'category' || ax.type === 'multicategory') {\n      tmin = Lib.constrain(tmin, 0, ax._categories.length - 1);\n    }\n    return tmin;\n  }\n  var tType = dtick.charAt(0);\n  var dtNum = Number(dtick.substr(1));\n\n  // Dates: months (or years)\n  if (tType === 'M') {\n    var cnt = 0;\n    var t0 = tick0;\n    var t1, mult, newDTick;\n\n    // This algorithm should work for *any* nonlinear (but close to linear!)\n    // tick spacing. Limit to 10 iterations, for gregorian months it's normally <=3.\n    while (cnt < 10) {\n      t1 = axes.tickIncrement(t0, dtick, axrev, ax.calendar);\n      if ((t1 - r0) * (t0 - r0) <= 0) {\n        // t1 and t0 are on opposite sides of r0! we've succeeded!\n        if (axrev) return Math.min(t0, t1);\n        return Math.max(t0, t1);\n      }\n      mult = (r0 - (t0 + t1) / 2) / (t1 - t0);\n      newDTick = tType + (Math.abs(Math.round(mult)) || 1) * dtNum;\n      t0 = axes.tickIncrement(t0, newDTick, mult < 0 ? !axrev : axrev, ax.calendar);\n      cnt++;\n    }\n    Lib.error('tickFirst did not converge', ax);\n    return t0;\n  } else if (tType === 'L') {\n    // Log scales: Linear, Digits\n\n    return Math.log(sRound((Math.pow(10, r0) - tick0) / dtNum) * dtNum + tick0) / Math.LN10;\n  } else if (tType === 'D') {\n    var tickset = dtick === 'D2' ? roundLog2 : roundLog1;\n    var frac = Lib.roundUp(Lib.mod(r0, 1), tickset, axrev);\n    return Math.floor(r0) + Math.log(d3.round(Math.pow(10, frac), 1)) / Math.LN10;\n  } else throw 'unrecognized dtick ' + String(dtick);\n};\n\n// draw the text for one tick.\n// px,py are the location on gd.paper\n// prefix is there so the x axis ticks can be dropped a line\n// ax is the axis layout, x is the tick value\n// hover is a (truthy) flag for whether to show numbers with a bit\n// more precision for hovertext\naxes.tickText = function (ax, x, hover, noSuffixPrefix) {\n  var out = tickTextObj(ax, x);\n  var arrayMode = ax.tickmode === 'array';\n  var extraPrecision = hover || arrayMode;\n  var axType = ax.type;\n  // TODO multicategory, if we allow ticktext / tickvals\n  var tickVal2l = axType === 'category' ? ax.d2l_noadd : ax.d2l;\n  var i;\n  if (arrayMode && Array.isArray(ax.ticktext)) {\n    var rng = Lib.simpleMap(ax.range, ax.r2l);\n    var minDiff = (Math.abs(rng[1] - rng[0]) - (ax._lBreaks || 0)) / 10000;\n    for (i = 0; i < ax.ticktext.length; i++) {\n      if (Math.abs(x - tickVal2l(ax.tickvals[i])) < minDiff) break;\n    }\n    if (i < ax.ticktext.length) {\n      out.text = String(ax.ticktext[i]);\n      return out;\n    }\n  }\n  function isHidden(showAttr) {\n    if (showAttr === undefined) return true;\n    if (hover) return showAttr === 'none';\n    var firstOrLast = {\n      first: ax._tmin,\n      last: ax._tmax\n    }[showAttr];\n    return showAttr !== 'all' && x !== firstOrLast;\n  }\n  var hideexp = hover ? 'never' : ax.exponentformat !== 'none' && isHidden(ax.showexponent) ? 'hide' : '';\n  if (axType === 'date') formatDate(ax, out, hover, extraPrecision);else if (axType === 'log') formatLog(ax, out, hover, extraPrecision, hideexp);else if (axType === 'category') formatCategory(ax, out);else if (axType === 'multicategory') formatMultiCategory(ax, out, hover);else if (isAngular(ax)) formatAngle(ax, out, hover, extraPrecision, hideexp);else formatLinear(ax, out, hover, extraPrecision, hideexp);\n\n  // add prefix and suffix\n  if (!noSuffixPrefix) {\n    if (ax.tickprefix && !isHidden(ax.showtickprefix)) out.text = ax.tickprefix + out.text;\n    if (ax.ticksuffix && !isHidden(ax.showticksuffix)) out.text += ax.ticksuffix;\n  }\n\n  // Setup ticks and grid lines boundaries\n  // at 1/2 a 'category' to the left/bottom\n  if (ax.tickson === 'boundaries' || ax.showdividers) {\n    var inbounds = function (v) {\n      var p = ax.l2p(v);\n      return p >= 0 && p <= ax._length ? v : null;\n    };\n    out.xbnd = [inbounds(out.x - 0.5), inbounds(out.x + ax.dtick - 0.5)];\n  }\n  return out;\n};\n\n/**\n * create text for a hover label on this axis, with special handling of\n * log axes (where negative values can't be displayed but can appear in hover text)\n *\n * @param {object} ax: the axis to format text for\n * @param {number or array of numbers} values: calcdata value(s) to format\n * @param {Optional(string)} hoverformat: trace (x|y)hoverformat to override axis.hoverformat\n *\n * @returns {string} `val` formatted as a string appropriate to this axis, or\n *     first value and second value as a range (ie '<val1> - <val2>') if the second value is provided and\n *     it's different from the first value.\n */\naxes.hoverLabelText = function (ax, values, hoverformat) {\n  if (hoverformat) ax = Lib.extendFlat({}, ax, {\n    hoverformat: hoverformat\n  });\n  var val = Array.isArray(values) ? values[0] : values;\n  var val2 = Array.isArray(values) ? values[1] : undefined;\n  if (val2 !== undefined && val2 !== val) {\n    return axes.hoverLabelText(ax, val, hoverformat) + ' - ' + axes.hoverLabelText(ax, val2, hoverformat);\n  }\n  var logOffScale = ax.type === 'log' && val <= 0;\n  var tx = axes.tickText(ax, ax.c2l(logOffScale ? -val : val), 'hover').text;\n  if (logOffScale) {\n    return val === 0 ? '0' : MINUS_SIGN + tx;\n  }\n\n  // TODO: should we do something special if the axis calendar and\n  // the data calendar are different? Somehow display both dates with\n  // their system names? Right now it will just display in the axis calendar\n  // but users could add the other one as text.\n  return tx;\n};\nfunction tickTextObj(ax, x, text) {\n  var tf = ax.tickfont || {};\n  return {\n    x: x,\n    dx: 0,\n    dy: 0,\n    text: text || '',\n    fontSize: tf.size,\n    font: tf.family,\n    fontColor: tf.color\n  };\n}\nfunction formatDate(ax, out, hover, extraPrecision) {\n  var tr = ax._tickround;\n  var fmt = hover && ax.hoverformat || axes.getTickFormat(ax);\n  if (extraPrecision) {\n    // second or sub-second precision: extra always shows max digits.\n    // for other fields, extra precision just adds one field.\n    if (isNumeric(tr)) tr = 4;else tr = {\n      y: 'm',\n      m: 'd',\n      d: 'M',\n      M: 'S',\n      S: 4\n    }[tr];\n  }\n  var dateStr = Lib.formatDate(out.x, fmt, tr, ax._dateFormat, ax.calendar, ax._extraFormat);\n  var headStr;\n  var splitIndex = dateStr.indexOf('\\n');\n  if (splitIndex !== -1) {\n    headStr = dateStr.substr(splitIndex + 1);\n    dateStr = dateStr.substr(0, splitIndex);\n  }\n  if (extraPrecision) {\n    // if extraPrecision led to trailing zeros, strip them off\n    // actually, this can lead to removing even more zeros than\n    // in the original rounding, but that's fine because in these\n    // contexts uniformity is not so important (if there's even\n    // anything to be uniform with!)\n\n    // can we remove the whole time part?\n    if (dateStr === '00:00:00' || dateStr === '00:00') {\n      dateStr = headStr;\n      headStr = '';\n    } else if (dateStr.length === 8) {\n      // strip off seconds if they're zero (zero fractional seconds\n      // are already omitted)\n      // but we never remove minutes and leave just hours\n      dateStr = dateStr.replace(/:00$/, '');\n    }\n  }\n  if (headStr) {\n    if (hover) {\n      // hover puts it all on one line, so headPart works best up front\n      // except for year headPart: turn this into \"Jan 1, 2000\" etc.\n      if (tr === 'd') dateStr += ', ' + headStr;else dateStr = headStr + (dateStr ? ', ' + dateStr : '');\n    } else {\n      if (!ax._inCalcTicks || ax._prevDateHead !== headStr) {\n        ax._prevDateHead = headStr;\n        dateStr += '<br>' + headStr;\n      } else {\n        var isInside = insideTicklabelposition(ax);\n        var side = ax._trueSide || ax.side; // polar mocks the side of the radial axis\n        if (!isInside && side === 'top' || isInside && side === 'bottom') {\n          dateStr += '<br> ';\n        }\n      }\n    }\n  }\n  out.text = dateStr;\n}\nfunction formatLog(ax, out, hover, extraPrecision, hideexp) {\n  var dtick = ax.dtick;\n  var x = out.x;\n  var tickformat = ax.tickformat;\n  var dtChar0 = typeof dtick === 'string' && dtick.charAt(0);\n  if (hideexp === 'never') {\n    // If this is a hover label, then we must *never* hide the exponent\n    // for the sake of display, which could give the wrong value by\n    // potentially many orders of magnitude. If hideexp was 'never', then\n    // it's now succeeded by preventing the other condition from automating\n    // this choice. Thus we can unset it so that the axis formatting takes\n    // precedence.\n    hideexp = '';\n  }\n  if (extraPrecision && dtChar0 !== 'L') {\n    dtick = 'L3';\n    dtChar0 = 'L';\n  }\n  if (tickformat || dtChar0 === 'L') {\n    out.text = numFormat(Math.pow(10, x), ax, hideexp, extraPrecision);\n  } else if (isNumeric(dtick) || dtChar0 === 'D' && Lib.mod(x + 0.01, 1) < 0.1) {\n    var p = Math.round(x);\n    var absP = Math.abs(p);\n    var exponentFormat = ax.exponentformat;\n    if (exponentFormat === 'power' || isSIFormat(exponentFormat) && beyondSI(p)) {\n      if (p === 0) out.text = 1;else if (p === 1) out.text = '10';else out.text = '10<sup>' + (p > 1 ? '' : MINUS_SIGN) + absP + '</sup>';\n      out.fontSize *= 1.25;\n    } else if ((exponentFormat === 'e' || exponentFormat === 'E') && absP > 2) {\n      out.text = '1' + exponentFormat + (p > 0 ? '+' : MINUS_SIGN) + absP;\n    } else {\n      out.text = numFormat(Math.pow(10, x), ax, '', 'fakehover');\n      if (dtick === 'D1' && ax._id.charAt(0) === 'y') {\n        out.dy -= out.fontSize / 6;\n      }\n    }\n  } else if (dtChar0 === 'D') {\n    out.text = String(Math.round(Math.pow(10, Lib.mod(x, 1))));\n    out.fontSize *= 0.75;\n  } else throw 'unrecognized dtick ' + String(dtick);\n\n  // if 9's are printed on log scale, move the 10's away a bit\n  if (ax.dtick === 'D1') {\n    var firstChar = String(out.text).charAt(0);\n    if (firstChar === '0' || firstChar === '1') {\n      if (ax._id.charAt(0) === 'y') {\n        out.dx -= out.fontSize / 4;\n      } else {\n        out.dy += out.fontSize / 2;\n        out.dx += (ax.range[1] > ax.range[0] ? 1 : -1) * out.fontSize * (x < 0 ? 0.5 : 0.25);\n      }\n    }\n  }\n}\nfunction formatCategory(ax, out) {\n  var tt = ax._categories[Math.round(out.x)];\n  if (tt === undefined) tt = '';\n  out.text = String(tt);\n}\nfunction formatMultiCategory(ax, out, hover) {\n  var v = Math.round(out.x);\n  var cats = ax._categories[v] || [];\n  var tt = cats[1] === undefined ? '' : String(cats[1]);\n  var tt2 = cats[0] === undefined ? '' : String(cats[0]);\n  if (hover) {\n    // TODO is this what we want?\n    out.text = tt2 + ' - ' + tt;\n  } else {\n    // setup for secondary labels\n    out.text = tt;\n    out.text2 = tt2;\n  }\n}\nfunction formatLinear(ax, out, hover, extraPrecision, hideexp) {\n  if (hideexp === 'never') {\n    // If this is a hover label, then we must *never* hide the exponent\n    // for the sake of display, which could give the wrong value by\n    // potentially many orders of magnitude. If hideexp was 'never', then\n    // it's now succeeded by preventing the other condition from automating\n    // this choice. Thus we can unset it so that the axis formatting takes\n    // precedence.\n    hideexp = '';\n  } else if (ax.showexponent === 'all' && Math.abs(out.x / ax.dtick) < 1e-6) {\n    // don't add an exponent to zero if we're showing all exponents\n    // so the only reason you'd show an exponent on zero is if it's the\n    // ONLY tick to get an exponent (first or last)\n    hideexp = 'hide';\n  }\n  out.text = numFormat(out.x, ax, hideexp, extraPrecision);\n}\nfunction formatAngle(ax, out, hover, extraPrecision, hideexp) {\n  if (ax.thetaunit === 'radians' && !hover) {\n    var num = out.x / 180;\n    if (num === 0) {\n      out.text = '0';\n    } else {\n      var frac = num2frac(num);\n      if (frac[1] >= 100) {\n        out.text = numFormat(Lib.deg2rad(out.x), ax, hideexp, extraPrecision);\n      } else {\n        var isNeg = out.x < 0;\n        if (frac[1] === 1) {\n          if (frac[0] === 1) out.text = 'π';else out.text = frac[0] + 'π';\n        } else {\n          out.text = ['<sup>', frac[0], '</sup>', '⁄', '<sub>', frac[1], '</sub>', 'π'].join('');\n        }\n        if (isNeg) out.text = MINUS_SIGN + out.text;\n      }\n    }\n  } else {\n    out.text = numFormat(out.x, ax, hideexp, extraPrecision);\n  }\n}\n\n// inspired by\n// https://github.com/yisibl/num2fraction/blob/master/index.js\nfunction num2frac(num) {\n  function almostEq(a, b) {\n    return Math.abs(a - b) <= 1e-6;\n  }\n  function findGCD(a, b) {\n    return almostEq(b, 0) ? a : findGCD(b, a % b);\n  }\n  function findPrecision(n) {\n    var e = 1;\n    while (!almostEq(Math.round(n * e) / e, n)) {\n      e *= 10;\n    }\n    return e;\n  }\n  var precision = findPrecision(num);\n  var number = num * precision;\n  var gcd = Math.abs(findGCD(number, precision));\n  return [\n  // numerator\n  Math.round(number / gcd),\n  // denominator\n  Math.round(precision / gcd)];\n}\n\n// format a number (tick value) according to the axis settings\n// new, more reliable procedure than d3.round or similar:\n// add half the rounding increment, then stringify and truncate\n// also automatically switch to sci. notation\nvar SIPREFIXES = ['f', 'p', 'n', 'μ', 'm', '', 'k', 'M', 'G', 'T'];\nfunction isSIFormat(exponentFormat) {\n  return exponentFormat === 'SI' || exponentFormat === 'B';\n}\n\n// are we beyond the range of common SI prefixes?\n// 10^-16 -> 1x10^-16\n// 10^-15 -> 1f\n// ...\n// 10^14 -> 100T\n// 10^15 -> 1x10^15\n// 10^16 -> 1x10^16\nfunction beyondSI(exponent) {\n  return exponent > 14 || exponent < -15;\n}\nfunction numFormat(v, ax, fmtoverride, hover) {\n  var isNeg = v < 0;\n  // max number of digits past decimal point to show\n  var tickRound = ax._tickround;\n  var exponentFormat = fmtoverride || ax.exponentformat || 'B';\n  var exponent = ax._tickexponent;\n  var tickformat = axes.getTickFormat(ax);\n  var separatethousands = ax.separatethousands;\n\n  // special case for hover: set exponent just for this value, and\n  // add a couple more digits of precision over tick labels\n  if (hover) {\n    // make a dummy axis obj to get the auto rounding and exponent\n    var ah = {\n      exponentformat: exponentFormat,\n      minexponent: ax.minexponent,\n      dtick: ax.showexponent === 'none' ? ax.dtick : isNumeric(v) ? Math.abs(v) || 1 : 1,\n      // if not showing any exponents, don't change the exponent\n      // from what we calculate\n      range: ax.showexponent === 'none' ? ax.range.map(ax.r2d) : [0, v || 1]\n    };\n    autoTickRound(ah);\n    tickRound = (Number(ah._tickround) || 0) + 4;\n    exponent = ah._tickexponent;\n    if (ax.hoverformat) tickformat = ax.hoverformat;\n  }\n  if (tickformat) return ax._numFormat(tickformat)(v).replace(/-/g, MINUS_SIGN);\n\n  // 'epsilon' - rounding increment\n  var e = Math.pow(10, -tickRound) / 2;\n\n  // exponentFormat codes:\n  // 'e' (1.2e+6, default)\n  // 'E' (1.2E+6)\n  // 'SI' (1.2M)\n  // 'B' (same as SI except 10^9=B not G)\n  // 'none' (1200000)\n  // 'power' (1.2x10^6)\n  // 'hide' (1.2, use 3rd argument=='hide' to eg\n  //      only show exponent on last tick)\n  if (exponentFormat === 'none') exponent = 0;\n\n  // take the sign out, put it back manually at the end\n  // - makes cases easier\n  v = Math.abs(v);\n  if (v < e) {\n    // 0 is just 0, but may get exponent if it's the last tick\n    v = '0';\n    isNeg = false;\n  } else {\n    v += e;\n    // take out a common exponent, if any\n    if (exponent) {\n      v *= Math.pow(10, -exponent);\n      tickRound += exponent;\n    }\n    // round the mantissa\n    if (tickRound === 0) v = String(Math.floor(v));else if (tickRound < 0) {\n      v = String(Math.round(v));\n      v = v.substr(0, v.length + tickRound);\n      for (var i = tickRound; i < 0; i++) v += '0';\n    } else {\n      v = String(v);\n      var dp = v.indexOf('.') + 1;\n      if (dp) v = v.substr(0, dp + tickRound).replace(/\\.?0+$/, '');\n    }\n    // insert appropriate decimal point and thousands separator\n    v = Lib.numSeparate(v, ax._separators, separatethousands);\n  }\n\n  // add exponent\n  if (exponent && exponentFormat !== 'hide') {\n    if (isSIFormat(exponentFormat) && beyondSI(exponent)) exponentFormat = 'power';\n    var signedExponent;\n    if (exponent < 0) signedExponent = MINUS_SIGN + -exponent;else if (exponentFormat !== 'power') signedExponent = '+' + exponent;else signedExponent = String(exponent);\n    if (exponentFormat === 'e' || exponentFormat === 'E') {\n      v += exponentFormat + signedExponent;\n    } else if (exponentFormat === 'power') {\n      v += '×10<sup>' + signedExponent + '</sup>';\n    } else if (exponentFormat === 'B' && exponent === 9) {\n      v += 'B';\n    } else if (isSIFormat(exponentFormat)) {\n      v += SIPREFIXES[exponent / 3 + 5];\n    }\n  }\n\n  // put sign back in and return\n  // replace standard minus character (which is technically a hyphen)\n  // with a true minus sign\n  if (isNeg) return MINUS_SIGN + v;\n  return v;\n}\naxes.getTickFormat = function (ax) {\n  var i;\n  function convertToMs(dtick) {\n    return typeof dtick !== 'string' ? dtick : Number(dtick.replace('M', '')) * ONEAVGMONTH;\n  }\n  function compareLogTicks(left, right) {\n    var priority = ['L', 'D'];\n    if (typeof left === typeof right) {\n      if (typeof left === 'number') {\n        return left - right;\n      } else {\n        var leftPriority = priority.indexOf(left.charAt(0));\n        var rightPriority = priority.indexOf(right.charAt(0));\n        if (leftPriority === rightPriority) {\n          return Number(left.replace(/(L|D)/g, '')) - Number(right.replace(/(L|D)/g, ''));\n        } else {\n          return leftPriority - rightPriority;\n        }\n      }\n    } else {\n      return typeof left === 'number' ? 1 : -1;\n    }\n  }\n  function isProperStop(dtick, range, convert) {\n    var convertFn = convert || function (x) {\n      return x;\n    };\n    var leftDtick = range[0];\n    var rightDtick = range[1];\n    return (!leftDtick && typeof leftDtick !== 'number' || convertFn(leftDtick) <= convertFn(dtick)) && (!rightDtick && typeof rightDtick !== 'number' || convertFn(rightDtick) >= convertFn(dtick));\n  }\n  function isProperLogStop(dtick, range) {\n    var isLeftDtickNull = range[0] === null;\n    var isRightDtickNull = range[1] === null;\n    var isDtickInRangeLeft = compareLogTicks(dtick, range[0]) >= 0;\n    var isDtickInRangeRight = compareLogTicks(dtick, range[1]) <= 0;\n    return (isLeftDtickNull || isDtickInRangeLeft) && (isRightDtickNull || isDtickInRangeRight);\n  }\n  var tickstop, stopi;\n  if (ax.tickformatstops && ax.tickformatstops.length > 0) {\n    switch (ax.type) {\n      case 'date':\n      case 'linear':\n        {\n          for (i = 0; i < ax.tickformatstops.length; i++) {\n            stopi = ax.tickformatstops[i];\n            if (stopi.enabled && isProperStop(ax.dtick, stopi.dtickrange, convertToMs)) {\n              tickstop = stopi;\n              break;\n            }\n          }\n          break;\n        }\n      case 'log':\n        {\n          for (i = 0; i < ax.tickformatstops.length; i++) {\n            stopi = ax.tickformatstops[i];\n            if (stopi.enabled && isProperLogStop(ax.dtick, stopi.dtickrange)) {\n              tickstop = stopi;\n              break;\n            }\n          }\n          break;\n        }\n      default:\n    }\n  }\n  return tickstop ? tickstop.value : ax.tickformat;\n};\n\n// getSubplots - extract all subplot IDs we need\n// as an array of items like 'xy', 'x2y', 'x2y2'...\n// sorted by x (x,x2,x3...) then y\n// optionally restrict to only subplots containing axis object ax\n//\n// NOTE: this is currently only used OUTSIDE plotly.js (toolpanel, webapp)\n// ideally we get rid of it there (or just copy this there) and remove it here\naxes.getSubplots = function (gd, ax) {\n  var subplotObj = gd._fullLayout._subplots;\n  var allSubplots = subplotObj.cartesian.concat(subplotObj.gl2d || []);\n  var out = ax ? axes.findSubplotsWithAxis(allSubplots, ax) : allSubplots;\n  out.sort(function (a, b) {\n    var aParts = a.substr(1).split('y');\n    var bParts = b.substr(1).split('y');\n    if (aParts[0] === bParts[0]) return +aParts[1] - +bParts[1];\n    return +aParts[0] - +bParts[0];\n  });\n  return out;\n};\n\n// find all subplots with axis 'ax'\n// NOTE: this is only used in axes.getSubplots (only used outside plotly.js) and\n// gl2d/convert (where it restricts axis subplots to only those with gl2d)\naxes.findSubplotsWithAxis = function (subplots, ax) {\n  var axMatch = new RegExp(ax._id.charAt(0) === 'x' ? '^' + ax._id + 'y' : ax._id + '$');\n  var subplotsWithAx = [];\n  for (var i = 0; i < subplots.length; i++) {\n    var sp = subplots[i];\n    if (axMatch.test(sp)) subplotsWithAx.push(sp);\n  }\n  return subplotsWithAx;\n};\n\n// makeClipPaths: prepare clipPaths for all single axes and all possible xy pairings\naxes.makeClipPaths = function (gd) {\n  var fullLayout = gd._fullLayout;\n\n  // for more info: https://github.com/plotly/plotly.js/issues/2595\n  if (fullLayout._hasOnlyLargeSploms) return;\n  var fullWidth = {\n    _offset: 0,\n    _length: fullLayout.width,\n    _id: ''\n  };\n  var fullHeight = {\n    _offset: 0,\n    _length: fullLayout.height,\n    _id: ''\n  };\n  var xaList = axes.list(gd, 'x', true);\n  var yaList = axes.list(gd, 'y', true);\n  var clipList = [];\n  var i, j;\n  for (i = 0; i < xaList.length; i++) {\n    clipList.push({\n      x: xaList[i],\n      y: fullHeight\n    });\n    for (j = 0; j < yaList.length; j++) {\n      if (i === 0) clipList.push({\n        x: fullWidth,\n        y: yaList[j]\n      });\n      clipList.push({\n        x: xaList[i],\n        y: yaList[j]\n      });\n    }\n  }\n\n  // selectors don't work right with camelCase tags,\n  // have to use class instead\n  // https://groups.google.com/forum/#!topic/d3-js/6EpAzQ2gU9I\n  var axClips = fullLayout._clips.selectAll('.axesclip').data(clipList, function (d) {\n    return d.x._id + d.y._id;\n  });\n  axClips.enter().append('clipPath').classed('axesclip', true).attr('id', function (d) {\n    return 'clip' + fullLayout._uid + d.x._id + d.y._id;\n  }).append('rect');\n  axClips.exit().remove();\n  axClips.each(function (d) {\n    d3.select(this).select('rect').attr({\n      x: d.x._offset || 0,\n      y: d.y._offset || 0,\n      width: d.x._length || 1,\n      height: d.y._length || 1\n    });\n  });\n};\n\n/**\n * Main multi-axis drawing routine!\n *\n * @param {DOM element} gd : graph div\n * @param {string or array of strings} arg : polymorphic argument\n * @param {object} opts:\n * - @param {boolean} skipTitle : optional flag to skip axis title draw/update\n *\n * Signature 1: Axes.draw(gd, 'redraw')\n *   use this to clear and redraw all axes on graph\n *\n * Signature 2: Axes.draw(gd, '')\n *   use this to draw all axes on graph w/o the selectAll().remove()\n *   of the 'redraw' signature\n *\n * Signature 3: Axes.draw(gd, [axId, axId2, ...])\n *   where the items are axis id string,\n *   use this to update multiple axes in one call\n *\n * N.B draw updates:\n * - ax._r (stored range for use by zoom/pan)\n * - ax._rl (stored linearized range for use by zoom/pan)\n */\naxes.draw = function (gd, arg, opts) {\n  var fullLayout = gd._fullLayout;\n  if (arg === 'redraw') {\n    fullLayout._paper.selectAll('g.subplot').each(function (d) {\n      var id = d[0];\n      var plotinfo = fullLayout._plots[id];\n      if (plotinfo) {\n        var xa = plotinfo.xaxis;\n        var ya = plotinfo.yaxis;\n        plotinfo.xaxislayer.selectAll('.' + xa._id + 'tick').remove();\n        plotinfo.yaxislayer.selectAll('.' + ya._id + 'tick').remove();\n        plotinfo.xaxislayer.selectAll('.' + xa._id + 'tick2').remove();\n        plotinfo.yaxislayer.selectAll('.' + ya._id + 'tick2').remove();\n        plotinfo.xaxislayer.selectAll('.' + xa._id + 'divider').remove();\n        plotinfo.yaxislayer.selectAll('.' + ya._id + 'divider').remove();\n        if (plotinfo.minorGridlayer) plotinfo.minorGridlayer.selectAll('path').remove();\n        if (plotinfo.gridlayer) plotinfo.gridlayer.selectAll('path').remove();\n        if (plotinfo.zerolinelayer) plotinfo.zerolinelayer.selectAll('path').remove();\n        fullLayout._infolayer.select('.g-' + xa._id + 'title').remove();\n        fullLayout._infolayer.select('.g-' + ya._id + 'title').remove();\n      }\n    });\n  }\n  var axList = !arg || arg === 'redraw' ? axes.listIds(gd) : arg;\n  var fullAxList = axes.list(gd);\n  // Get the list of the overlaying axis for all 'shift' axes\n  var overlayingShiftedAx = fullAxList.filter(function (ax) {\n    return ax.autoshift;\n  }).map(function (ax) {\n    return ax.overlaying;\n  });\n\n  // order axes that have dependency to other axes\n  axList.map(function (axId) {\n    var ax = axes.getFromId(gd, axId);\n    if (ax.tickmode === 'sync' && ax.overlaying) {\n      var overlayingIndex = axList.findIndex(function (axis) {\n        return axis === ax.overlaying;\n      });\n      if (overlayingIndex >= 0) {\n        axList.unshift(axList.splice(overlayingIndex, 1).shift());\n      }\n    }\n  });\n  var axShifts = {\n    'false': {\n      'left': 0,\n      'right': 0\n    }\n  };\n  return Lib.syncOrAsync(axList.map(function (axId) {\n    return function () {\n      if (!axId) return;\n      var ax = axes.getFromId(gd, axId);\n      if (!opts) opts = {};\n      opts.axShifts = axShifts;\n      opts.overlayingShiftedAx = overlayingShiftedAx;\n      var axDone = axes.drawOne(gd, ax, opts);\n      if (ax._shiftPusher) {\n        incrementShift(ax, ax._fullDepth || 0, axShifts, true);\n      }\n      ax._r = ax.range.slice();\n      ax._rl = Lib.simpleMap(ax._r, ax.r2l);\n      return axDone;\n    };\n  }));\n};\n\n/**\n * Draw one cartesian axis\n *\n * @param {DOM element} gd\n * @param {object} ax (full) axis object\n * @param {object} opts\n * - @param {boolean} skipTitle (set to true to skip axis title draw call)\n *\n * Depends on:\n * - ax._mainSubplot (from linkSubplots)\n * - ax._mainAxis\n * - ax._anchorAxis\n * - ax._subplotsWith\n * - ax._counterDomainMin, ax._counterDomainMax (optionally, from linkSubplots)\n * - ax._tickAngles (on redraw only, old value relinked during supplyDefaults)\n * - ax._mainLinePosition (from lsInner)\n * - ax._mainMirrorPosition\n * - ax._linepositions\n *\n * Fills in:\n * - ax._vals:\n * - ax._gridVals:\n * - ax._selections:\n * - ax._tickAngles:\n * - ax._depth (when required only):\n * - and calls ax.setScale\n */\naxes.drawOne = function (gd, ax, opts) {\n  opts = opts || {};\n  var axShifts = opts.axShifts || {};\n  var overlayingShiftedAx = opts.overlayingShiftedAx || [];\n  var i, sp, plotinfo;\n  ax.setScale();\n  var fullLayout = gd._fullLayout;\n  var axId = ax._id;\n  var axLetter = axId.charAt(0);\n  var counterLetter = axes.counterLetter(axId);\n  var mainPlotinfo = fullLayout._plots[ax._mainSubplot];\n\n  // this happens when updating matched group with 'missing' axes\n  if (!mainPlotinfo) return;\n  ax._shiftPusher = ax.autoshift || overlayingShiftedAx.indexOf(ax._id) !== -1 || overlayingShiftedAx.indexOf(ax.overlaying) !== -1;\n  // An axis is also shifted by 1/2 of its own linewidth and inside tick length if applicable\n  // as well as its manually specified `shift` val if we're in the context of `autoshift`\n  if (ax._shiftPusher & ax.anchor === 'free') {\n    var selfPush = ax.linewidth / 2 || 0;\n    if (ax.ticks === 'inside') {\n      selfPush += ax.ticklen;\n    }\n    incrementShift(ax, selfPush, axShifts, true);\n    incrementShift(ax, ax.shift || 0, axShifts, false);\n  }\n\n  // Somewhat inelegant way of making sure that the shift value is only updated when the\n  // Axes.DrawOne() function is called from the right context. An issue when redrawing the\n  // axis as result of using the dragbox, for example.\n  if (opts.skipTitle !== true || ax._shift === undefined) ax._shift = setShiftVal(ax, axShifts);\n  var mainAxLayer = mainPlotinfo[axLetter + 'axislayer'];\n  var mainLinePosition = ax._mainLinePosition;\n  var mainLinePositionShift = mainLinePosition += ax._shift;\n  var mainMirrorPosition = ax._mainMirrorPosition;\n  var vals = ax._vals = axes.calcTicks(ax);\n\n  // Add a couple of axis properties that should cause us to recreate\n  // elements. Used in d3 data function.\n  var axInfo = [ax.mirror, mainLinePositionShift, mainMirrorPosition].join('_');\n  for (i = 0; i < vals.length; i++) {\n    vals[i].axInfo = axInfo;\n  }\n\n  // stash selections to avoid DOM queries e.g.\n  // - stash tickLabels selection, so that drawTitle can use it to scoot title\n  ax._selections = {};\n  // stash tick angle (including the computed 'auto' values) per tick-label class\n  // linkup 'previous' tick angles on redraws\n  if (ax._tickAngles) ax._prevTickAngles = ax._tickAngles;\n  ax._tickAngles = {};\n  // measure [in px] between axis position and outward-most part of bounding box\n  // (touching either the tick label or ticks)\n  // depth can be expansive to compute, so we only do so when required\n  ax._depth = null;\n\n  // calcLabelLevelBbox can be expensive,\n  // so make sure to not call it twice during the same Axes.drawOne call\n  // by stashing label-level bounding boxes per tick-label class\n  var llbboxes = {};\n  function getLabelLevelBbox(suffix) {\n    var cls = axId + (suffix || 'tick');\n    if (!llbboxes[cls]) llbboxes[cls] = calcLabelLevelBbox(ax, cls);\n    return llbboxes[cls];\n  }\n  if (!ax.visible) return;\n  var transTickFn = axes.makeTransTickFn(ax);\n  var transTickLabelFn = axes.makeTransTickLabelFn(ax);\n  var tickVals;\n  // We remove zero lines, grid lines, and inside ticks if they're within 1px of the end\n  // The key case here is removing zero lines when the axis bound is zero\n  var valsClipped;\n  var insideTicks = ax.ticks === 'inside';\n  var outsideTicks = ax.ticks === 'outside';\n  if (ax.tickson === 'boundaries') {\n    var boundaryVals = getBoundaryVals(ax, vals);\n    valsClipped = axes.clipEnds(ax, boundaryVals);\n    tickVals = insideTicks ? valsClipped : boundaryVals;\n  } else {\n    valsClipped = axes.clipEnds(ax, vals);\n    tickVals = insideTicks && ax.ticklabelmode !== 'period' ? valsClipped : vals;\n  }\n  var gridVals = ax._gridVals = valsClipped;\n  var dividerVals = getDividerVals(ax, vals);\n  if (!fullLayout._hasOnlyLargeSploms) {\n    var subplotsWithAx = ax._subplotsWith;\n\n    // keep track of which subplots (by main counter axis) we've already\n    // drawn grids for, so we don't overdraw overlaying subplots\n    var finishedGrids = {};\n    for (i = 0; i < subplotsWithAx.length; i++) {\n      sp = subplotsWithAx[i];\n      plotinfo = fullLayout._plots[sp];\n      var counterAxis = plotinfo[counterLetter + 'axis'];\n      var mainCounterID = counterAxis._mainAxis._id;\n      if (finishedGrids[mainCounterID]) continue;\n      finishedGrids[mainCounterID] = 1;\n      var gridPath = axLetter === 'x' ? 'M0,' + counterAxis._offset + 'v' + counterAxis._length : 'M' + counterAxis._offset + ',0h' + counterAxis._length;\n      axes.drawGrid(gd, ax, {\n        vals: gridVals,\n        counterAxis: counterAxis,\n        layer: plotinfo.gridlayer.select('.' + axId),\n        minorLayer: plotinfo.minorGridlayer.select('.' + axId),\n        path: gridPath,\n        transFn: transTickFn\n      });\n      axes.drawZeroLine(gd, ax, {\n        counterAxis: counterAxis,\n        layer: plotinfo.zerolinelayer,\n        path: gridPath,\n        transFn: transTickFn\n      });\n    }\n  }\n  var tickPath;\n  var majorTickSigns = axes.getTickSigns(ax);\n  var minorTickSigns = axes.getTickSigns(ax, 'minor');\n  if (ax.ticks || ax.minor && ax.minor.ticks) {\n    var majorTickPath = axes.makeTickPath(ax, mainLinePositionShift, majorTickSigns[2]);\n    var minorTickPath = axes.makeTickPath(ax, mainLinePositionShift, minorTickSigns[2], {\n      minor: true\n    });\n    var mirrorMajorTickPath;\n    var mirrorMinorTickPath;\n    var fullMajorTickPath;\n    var fullMinorTickPath;\n    if (ax._anchorAxis && ax.mirror && ax.mirror !== true) {\n      mirrorMajorTickPath = axes.makeTickPath(ax, mainMirrorPosition, majorTickSigns[3]);\n      mirrorMinorTickPath = axes.makeTickPath(ax, mainMirrorPosition, minorTickSigns[3], {\n        minor: true\n      });\n      fullMajorTickPath = majorTickPath + mirrorMajorTickPath;\n      fullMinorTickPath = minorTickPath + mirrorMinorTickPath;\n    } else {\n      mirrorMajorTickPath = '';\n      mirrorMinorTickPath = '';\n      fullMajorTickPath = majorTickPath;\n      fullMinorTickPath = minorTickPath;\n    }\n    if (ax.showdividers && outsideTicks && ax.tickson === 'boundaries') {\n      var dividerLookup = {};\n      for (i = 0; i < dividerVals.length; i++) {\n        dividerLookup[dividerVals[i].x] = 1;\n      }\n      tickPath = function (d) {\n        return dividerLookup[d.x] ? mirrorMajorTickPath : fullMajorTickPath;\n      };\n    } else {\n      tickPath = function (d) {\n        return d.minor ? fullMinorTickPath : fullMajorTickPath;\n      };\n    }\n  }\n  axes.drawTicks(gd, ax, {\n    vals: tickVals,\n    layer: mainAxLayer,\n    path: tickPath,\n    transFn: transTickFn\n  });\n  if (ax.mirror === 'allticks') {\n    var tickSubplots = Object.keys(ax._linepositions || {});\n    for (i = 0; i < tickSubplots.length; i++) {\n      sp = tickSubplots[i];\n      plotinfo = fullLayout._plots[sp];\n      // [bottom or left, top or right], free and main are handled above\n      var linepositions = ax._linepositions[sp] || [];\n      var p0 = linepositions[0];\n      var p1 = linepositions[1];\n      var isMinor = linepositions[2];\n      var spTickPath = axes.makeTickPath(ax, p0, isMinor ? majorTickSigns[0] : minorTickSigns[0], {\n        minor: isMinor\n      }) + axes.makeTickPath(ax, p1, isMinor ? majorTickSigns[1] : minorTickSigns[1], {\n        minor: isMinor\n      });\n      axes.drawTicks(gd, ax, {\n        vals: tickVals,\n        layer: plotinfo[axLetter + 'axislayer'],\n        path: spTickPath,\n        transFn: transTickFn\n      });\n    }\n  }\n  var seq = [];\n\n  // tick labels - for now just the main labels.\n  // TODO: mirror labels, esp for subplots\n\n  seq.push(function () {\n    return axes.drawLabels(gd, ax, {\n      vals: vals,\n      layer: mainAxLayer,\n      plotinfo: plotinfo,\n      transFn: transTickLabelFn,\n      labelFns: axes.makeLabelFns(ax, mainLinePositionShift)\n    });\n  });\n  if (ax.type === 'multicategory') {\n    var pad = {\n      x: 2,\n      y: 10\n    }[axLetter];\n    seq.push(function () {\n      var bboxKey = {\n        x: 'height',\n        y: 'width'\n      }[axLetter];\n      var standoff = getLabelLevelBbox()[bboxKey] + pad + (ax._tickAngles[axId + 'tick'] ? ax.tickfont.size * LINE_SPACING : 0);\n      return axes.drawLabels(gd, ax, {\n        vals: getSecondaryLabelVals(ax, vals),\n        layer: mainAxLayer,\n        cls: axId + 'tick2',\n        repositionOnUpdate: true,\n        secondary: true,\n        transFn: transTickFn,\n        labelFns: axes.makeLabelFns(ax, mainLinePositionShift + standoff * majorTickSigns[4])\n      });\n    });\n    seq.push(function () {\n      ax._depth = majorTickSigns[4] * (getLabelLevelBbox('tick2')[ax.side] - mainLinePositionShift);\n      return drawDividers(gd, ax, {\n        vals: dividerVals,\n        layer: mainAxLayer,\n        path: axes.makeTickPath(ax, mainLinePositionShift, majorTickSigns[4], {\n          len: ax._depth\n        }),\n        transFn: transTickFn\n      });\n    });\n  } else if (ax.title.hasOwnProperty('standoff')) {\n    seq.push(function () {\n      ax._depth = majorTickSigns[4] * (getLabelLevelBbox()[ax.side] - mainLinePositionShift);\n    });\n  }\n  var hasRangeSlider = Registry.getComponentMethod('rangeslider', 'isVisible')(ax);\n  if (!opts.skipTitle && !(hasRangeSlider && ax.side === 'bottom')) {\n    seq.push(function () {\n      return drawTitle(gd, ax);\n    });\n  }\n  seq.push(function () {\n    var s = ax.side.charAt(0);\n    var sMirror = OPPOSITE_SIDE[ax.side].charAt(0);\n    var pos = axes.getPxPosition(gd, ax);\n    var outsideTickLen = outsideTicks ? ax.ticklen : 0;\n    var llbbox;\n    var push;\n    var mirrorPush;\n    var rangeSliderPush;\n    if (ax.automargin || hasRangeSlider || ax._shiftPusher) {\n      if (ax.type === 'multicategory') {\n        llbbox = getLabelLevelBbox('tick2');\n      } else {\n        llbbox = getLabelLevelBbox();\n        if (axLetter === 'x' && s === 'b') {\n          ax._depth = Math.max(llbbox.width > 0 ? llbbox.bottom - pos : 0, outsideTickLen);\n        }\n      }\n    }\n    var axDepth = 0;\n    var titleDepth = 0;\n    if (ax._shiftPusher) {\n      axDepth = Math.max(outsideTickLen, llbbox.height > 0 ? s === 'l' ? pos - llbbox.left : llbbox.right - pos : 0);\n      if (ax.title.text !== fullLayout._dfltTitle[axLetter]) {\n        titleDepth = (ax._titleStandoff || 0) + (ax._titleScoot || 0);\n        if (s === 'l') {\n          titleDepth += approxTitleDepth(ax);\n        }\n      }\n      ax._fullDepth = Math.max(axDepth, titleDepth);\n    }\n    if (ax.automargin) {\n      push = {\n        x: 0,\n        y: 0,\n        r: 0,\n        l: 0,\n        t: 0,\n        b: 0\n      };\n      var domainIndices = [0, 1];\n      var shift = typeof ax._shift === 'number' ? ax._shift : 0;\n      if (axLetter === 'x') {\n        if (s === 'b') {\n          push[s] = ax._depth;\n        } else {\n          push[s] = ax._depth = Math.max(llbbox.width > 0 ? pos - llbbox.top : 0, outsideTickLen);\n          domainIndices.reverse();\n        }\n        if (llbbox.width > 0) {\n          var rExtra = llbbox.right - (ax._offset + ax._length);\n          if (rExtra > 0) {\n            push.xr = 1;\n            push.r = rExtra;\n          }\n          var lExtra = ax._offset - llbbox.left;\n          if (lExtra > 0) {\n            push.xl = 0;\n            push.l = lExtra;\n          }\n        }\n      } else {\n        if (s === 'l') {\n          ax._depth = Math.max(llbbox.height > 0 ? pos - llbbox.left : 0, outsideTickLen);\n          push[s] = ax._depth - shift;\n        } else {\n          ax._depth = Math.max(llbbox.height > 0 ? llbbox.right - pos : 0, outsideTickLen);\n          push[s] = ax._depth + shift;\n          domainIndices.reverse();\n        }\n        if (llbbox.height > 0) {\n          var bExtra = llbbox.bottom - (ax._offset + ax._length);\n          if (bExtra > 0) {\n            push.yb = 0;\n            push.b = bExtra;\n          }\n          var tExtra = ax._offset - llbbox.top;\n          if (tExtra > 0) {\n            push.yt = 1;\n            push.t = tExtra;\n          }\n        }\n      }\n      push[counterLetter] = ax.anchor === 'free' ? ax.position : ax._anchorAxis.domain[domainIndices[0]];\n      if (ax.title.text !== fullLayout._dfltTitle[axLetter]) {\n        push[s] += approxTitleDepth(ax) + (ax.title.standoff || 0);\n      }\n      if (ax.mirror && ax.anchor !== 'free') {\n        mirrorPush = {\n          x: 0,\n          y: 0,\n          r: 0,\n          l: 0,\n          t: 0,\n          b: 0\n        };\n        mirrorPush[sMirror] = ax.linewidth;\n        if (ax.mirror && ax.mirror !== true) mirrorPush[sMirror] += outsideTickLen;\n        if (ax.mirror === true || ax.mirror === 'ticks') {\n          mirrorPush[counterLetter] = ax._anchorAxis.domain[domainIndices[1]];\n        } else if (ax.mirror === 'all' || ax.mirror === 'allticks') {\n          mirrorPush[counterLetter] = [ax._counterDomainMin, ax._counterDomainMax][domainIndices[1]];\n        }\n      }\n    }\n    if (hasRangeSlider) {\n      rangeSliderPush = Registry.getComponentMethod('rangeslider', 'autoMarginOpts')(gd, ax);\n    }\n    if (typeof ax.automargin === 'string') {\n      filterPush(push, ax.automargin);\n      filterPush(mirrorPush, ax.automargin);\n    }\n    Plots.autoMargin(gd, axAutoMarginID(ax), push);\n    Plots.autoMargin(gd, axMirrorAutoMarginID(ax), mirrorPush);\n    Plots.autoMargin(gd, rangeSliderAutoMarginID(ax), rangeSliderPush);\n  });\n  return Lib.syncOrAsync(seq);\n};\nfunction filterPush(push, automargin) {\n  if (!push) return;\n  var keepMargin = Object.keys(MARGIN_MAPPING).reduce(function (data, nextKey) {\n    if (automargin.indexOf(nextKey) !== -1) {\n      MARGIN_MAPPING[nextKey].forEach(function (key) {\n        data[key] = 1;\n      });\n    }\n    return data;\n  }, {});\n  Object.keys(push).forEach(function (key) {\n    if (!keepMargin[key]) {\n      if (key.length === 1) push[key] = 0;else delete push[key];\n    }\n  });\n}\nfunction getBoundaryVals(ax, vals) {\n  var out = [];\n  var i;\n\n  // boundaryVals are never used for labels;\n  // no need to worry about the other tickTextObj keys\n  var _push = function (d, bndIndex) {\n    var xb = d.xbnd[bndIndex];\n    if (xb !== null) {\n      out.push(Lib.extendFlat({}, d, {\n        x: xb\n      }));\n    }\n  };\n  if (vals.length) {\n    for (i = 0; i < vals.length; i++) {\n      _push(vals[i], 0);\n    }\n    _push(vals[i - 1], 1);\n  }\n  return out;\n}\nfunction getSecondaryLabelVals(ax, vals) {\n  var out = [];\n  var lookup = {};\n  for (var i = 0; i < vals.length; i++) {\n    var d = vals[i];\n    if (lookup[d.text2]) {\n      lookup[d.text2].push(d.x);\n    } else {\n      lookup[d.text2] = [d.x];\n    }\n  }\n  for (var k in lookup) {\n    out.push(tickTextObj(ax, Lib.interp(lookup[k], 0.5), k));\n  }\n  return out;\n}\nfunction getDividerVals(ax, vals) {\n  var out = [];\n  var i, current;\n  var reversed = vals.length && vals[vals.length - 1].x < vals[0].x;\n\n  // never used for labels;\n  // no need to worry about the other tickTextObj keys\n  var _push = function (d, bndIndex) {\n    var xb = d.xbnd[bndIndex];\n    if (xb !== null) {\n      out.push(Lib.extendFlat({}, d, {\n        x: xb\n      }));\n    }\n  };\n  if (ax.showdividers && vals.length) {\n    for (i = 0; i < vals.length; i++) {\n      var d = vals[i];\n      if (d.text2 !== current) {\n        _push(d, reversed ? 1 : 0);\n      }\n      current = d.text2;\n    }\n    _push(vals[i - 1], reversed ? 0 : 1);\n  }\n  return out;\n}\nfunction calcLabelLevelBbox(ax, cls) {\n  var top, bottom;\n  var left, right;\n  if (ax._selections[cls].size()) {\n    top = Infinity;\n    bottom = -Infinity;\n    left = Infinity;\n    right = -Infinity;\n    ax._selections[cls].each(function () {\n      var thisLabel = selectTickLabel(this);\n      // Use parent node <g.(x|y)tick>, to make Drawing.bBox\n      // retrieve a bbox computed with transform info\n      //\n      // To improve perf, it would be nice to use `thisLabel.node()`\n      // (like in fixLabelOverlaps) instead and use Axes.getPxPosition\n      // together with the makeLabelFns outputs and `tickangle`\n      // to compute one bbox per (tick value x tick style)\n      var bb = Drawing.bBox(thisLabel.node().parentNode);\n      top = Math.min(top, bb.top);\n      bottom = Math.max(bottom, bb.bottom);\n      left = Math.min(left, bb.left);\n      right = Math.max(right, bb.right);\n    });\n  } else {\n    top = 0;\n    bottom = 0;\n    left = 0;\n    right = 0;\n  }\n  return {\n    top: top,\n    bottom: bottom,\n    left: left,\n    right: right,\n    height: bottom - top,\n    width: right - left\n  };\n}\n\n/**\n * Which direction do the 'ax.side' values, and free ticks go?\n *\n * @param {object} ax (full) axis object\n *  - {string} _id (starting with 'x' or 'y')\n *  - {string} side\n *  - {string} ticks\n * @return {array} all entries are either -1 or 1\n *  - [0]: sign for top/right ticks (i.e. negative SVG direction)\n *  - [1]: sign for bottom/left ticks (i.e. positive SVG direction)\n *  - [2]: sign for ticks corresponding to 'ax.side'\n *  - [3]: sign for ticks mirroring 'ax.side'\n *  - [4]: sign of arrow starting at axis pointing towards margin\n */\naxes.getTickSigns = function (ax, minor) {\n  var axLetter = ax._id.charAt(0);\n  var sideOpposite = {\n    x: 'top',\n    y: 'right'\n  }[axLetter];\n  var main = ax.side === sideOpposite ? 1 : -1;\n  var out = [-1, 1, main, -main];\n  // then we flip if outside XOR y axis\n\n  var ticks = minor ? (ax.minor || {}).ticks : ax.ticks;\n  if (ticks !== 'inside' === (axLetter === 'x')) {\n    out = out.map(function (v) {\n      return -v;\n    });\n  }\n  // independent of `ticks`; do not flip this one\n  if (ax.side) {\n    out.push({\n      l: -1,\n      t: -1,\n      r: 1,\n      b: 1\n    }[ax.side.charAt(0)]);\n  }\n  return out;\n};\n\n/**\n * Make axis translate transform function\n *\n * @param {object} ax (full) axis object\n *  - {string} _id\n *  - {number} _offset\n *  - {fn} l2p\n * @return {fn} function of calcTicks items\n */\naxes.makeTransTickFn = function (ax) {\n  return ax._id.charAt(0) === 'x' ? function (d) {\n    return strTranslate(ax._offset + ax.l2p(d.x), 0);\n  } : function (d) {\n    return strTranslate(0, ax._offset + ax.l2p(d.x));\n  };\n};\naxes.makeTransTickLabelFn = function (ax) {\n  var uv = getTickLabelUV(ax);\n  var u = uv[0];\n  var v = uv[1];\n  return ax._id.charAt(0) === 'x' ? function (d) {\n    return strTranslate(u + ax._offset + ax.l2p(getPosX(d)), v);\n  } : function (d) {\n    return strTranslate(v, u + ax._offset + ax.l2p(getPosX(d)));\n  };\n};\nfunction getPosX(d) {\n  return d.periodX !== undefined ? d.periodX : d.x;\n}\n\n// u is a shift along the axis,\n// v is a shift perpendicular to the axis\nfunction getTickLabelUV(ax) {\n  var ticklabelposition = ax.ticklabelposition || '';\n  var has = function (str) {\n    return ticklabelposition.indexOf(str) !== -1;\n  };\n  var isTop = has('top');\n  var isLeft = has('left');\n  var isRight = has('right');\n  var isBottom = has('bottom');\n  var isInside = has('inside');\n  var isAligned = isBottom || isLeft || isTop || isRight;\n\n  // early return\n  if (!isAligned && !isInside) return [0, 0];\n  var side = ax.side;\n  var u = isAligned ? (ax.tickwidth || 0) / 2 : 0;\n  var v = TEXTPAD;\n  var fontSize = ax.tickfont ? ax.tickfont.size : 12;\n  if (isBottom || isTop) {\n    u += fontSize * CAP_SHIFT;\n    v += (ax.linewidth || 0) / 2;\n  }\n  if (isLeft || isRight) {\n    u += (ax.linewidth || 0) / 2;\n    v += TEXTPAD;\n  }\n  if (isInside && side === 'top') {\n    v -= fontSize * (1 - CAP_SHIFT);\n  }\n  if (isLeft || isTop) u = -u;\n  if (side === 'bottom' || side === 'right') v = -v;\n  return [isAligned ? u : 0, isInside ? v : 0];\n}\n\n/**\n * Make axis tick path string\n *\n * @param {object} ax (full) axis object\n *  - {string} _id\n *  - {number} ticklen\n *  - {number} linewidth\n * @param {number} shift along direction of ticklen\n * @param {1 or -1} sgn tick sign\n * @param {object} opts\n * - {number (optional)} len tick length\n * @return {string}\n */\naxes.makeTickPath = function (ax, shift, sgn, opts) {\n  if (!opts) opts = {};\n  var minor = opts.minor;\n  if (minor && !ax.minor) return '';\n  var len = opts.len !== undefined ? opts.len : minor ? ax.minor.ticklen : ax.ticklen;\n  var axLetter = ax._id.charAt(0);\n  var pad = (ax.linewidth || 1) / 2;\n  return axLetter === 'x' ? 'M0,' + (shift + pad * sgn) + 'v' + len * sgn : 'M' + (shift + pad * sgn) + ',0h' + len * sgn;\n};\n\n/**\n * Make axis tick label x, y and anchor functions\n *\n * @param {object} ax (full) axis object\n *  - {string} _id\n *  - {string} ticks\n *  - {number} ticklen\n *  - {string} side\n *  - {number} linewidth\n *  - {number} tickfont.size\n *  - {boolean} showline\n * @param {number} shift\n * @param {number} angle [in degrees] ...\n * @return {object}\n *  - {fn} xFn\n *  - {fn} yFn\n *  - {fn} anchorFn\n *  - {fn} heightFn\n *  - {number} labelStandoff (gap parallel to ticks)\n *  - {number} labelShift (gap perpendicular to ticks)\n */\naxes.makeLabelFns = function (ax, shift, angle) {\n  var ticklabelposition = ax.ticklabelposition || '';\n  var has = function (str) {\n    return ticklabelposition.indexOf(str) !== -1;\n  };\n  var isTop = has('top');\n  var isLeft = has('left');\n  var isRight = has('right');\n  var isBottom = has('bottom');\n  var isAligned = isBottom || isLeft || isTop || isRight;\n  var insideTickLabels = has('inside');\n  var labelsOverTicks = ticklabelposition === 'inside' && ax.ticks === 'inside' || !insideTickLabels && ax.ticks === 'outside' && ax.tickson !== 'boundaries';\n  var labelStandoff = 0;\n  var labelShift = 0;\n  var tickLen = labelsOverTicks ? ax.ticklen : 0;\n  if (insideTickLabels) {\n    tickLen *= -1;\n  } else if (isAligned) {\n    tickLen = 0;\n  }\n  if (labelsOverTicks) {\n    labelStandoff += tickLen;\n    if (angle) {\n      var rad = Lib.deg2rad(angle);\n      labelStandoff = tickLen * Math.cos(rad) + 1;\n      labelShift = tickLen * Math.sin(rad);\n    }\n  }\n  if (ax.showticklabels && (labelsOverTicks || ax.showline)) {\n    labelStandoff += 0.2 * ax.tickfont.size;\n  }\n  labelStandoff += (ax.linewidth || 1) / 2 * (insideTickLabels ? -1 : 1);\n  var out = {\n    labelStandoff: labelStandoff,\n    labelShift: labelShift\n  };\n  var x0, y0, ff, flipIt;\n  var xQ = 0;\n  var side = ax.side;\n  var axLetter = ax._id.charAt(0);\n  var tickangle = ax.tickangle;\n  var endSide;\n  if (axLetter === 'x') {\n    endSide = !insideTickLabels && side === 'bottom' || insideTickLabels && side === 'top';\n    flipIt = endSide ? 1 : -1;\n    if (insideTickLabels) flipIt *= -1;\n    x0 = labelShift * flipIt;\n    y0 = shift + labelStandoff * flipIt;\n    ff = endSide ? 1 : -0.2;\n    if (Math.abs(tickangle) === 90) {\n      if (insideTickLabels) {\n        ff += MID_SHIFT;\n      } else {\n        if (tickangle === -90 && side === 'bottom') {\n          ff = CAP_SHIFT;\n        } else if (tickangle === 90 && side === 'top') {\n          ff = MID_SHIFT;\n        } else {\n          ff = 0.5;\n        }\n      }\n      xQ = MID_SHIFT / 2 * (tickangle / 90);\n    }\n    out.xFn = function (d) {\n      return d.dx + x0 + xQ * d.fontSize;\n    };\n    out.yFn = function (d) {\n      return d.dy + y0 + d.fontSize * ff;\n    };\n    out.anchorFn = function (d, a) {\n      if (isAligned) {\n        if (isLeft) return 'end';\n        if (isRight) return 'start';\n      }\n      if (!isNumeric(a) || a === 0 || a === 180) {\n        return 'middle';\n      }\n      return a * flipIt < 0 !== insideTickLabels ? 'end' : 'start';\n    };\n    out.heightFn = function (d, a, h) {\n      return a < -60 || a > 60 ? -0.5 * h : ax.side === 'top' !== insideTickLabels ? -h : 0;\n    };\n  } else if (axLetter === 'y') {\n    endSide = !insideTickLabels && side === 'left' || insideTickLabels && side === 'right';\n    flipIt = endSide ? 1 : -1;\n    if (insideTickLabels) flipIt *= -1;\n    x0 = labelStandoff;\n    y0 = labelShift * flipIt;\n    ff = 0;\n    if (!insideTickLabels && Math.abs(tickangle) === 90) {\n      if (tickangle === -90 && side === 'left' || tickangle === 90 && side === 'right') {\n        ff = CAP_SHIFT;\n      } else {\n        ff = 0.5;\n      }\n    }\n    if (insideTickLabels) {\n      var ang = isNumeric(tickangle) ? +tickangle : 0;\n      if (ang !== 0) {\n        var rA = Lib.deg2rad(ang);\n        xQ = Math.abs(Math.sin(rA)) * CAP_SHIFT * flipIt;\n        ff = 0;\n      }\n    }\n    out.xFn = function (d) {\n      return d.dx + shift - (x0 + d.fontSize * ff) * flipIt + xQ * d.fontSize;\n    };\n    out.yFn = function (d) {\n      return d.dy + y0 + d.fontSize * MID_SHIFT;\n    };\n    out.anchorFn = function (d, a) {\n      if (isNumeric(a) && Math.abs(a) === 90) {\n        return 'middle';\n      }\n      return endSide ? 'end' : 'start';\n    };\n    out.heightFn = function (d, a, h) {\n      if (ax.side === 'right') a *= -1;\n      return a < -30 ? -h : a < 30 ? -0.5 * h : 0;\n    };\n  }\n  return out;\n};\nfunction tickDataFn(d) {\n  return [d.text, d.x, d.axInfo, d.font, d.fontSize, d.fontColor].join('_');\n}\n\n/**\n * Draw axis ticks\n *\n * @param {DOM element} gd\n * @param {object} ax (full) axis object\n *  - {string} _id\n *  - {string} ticks\n *  - {number} linewidth\n *  - {string} tickcolor\n * @param {object} opts\n * - {array of object} vals (calcTicks output-like)\n * - {d3 selection} layer\n * - {string or fn} path\n * - {fn} transFn\n * - {boolean} crisp (set to false to unset crisp-edge SVG rendering)\n */\naxes.drawTicks = function (gd, ax, opts) {\n  opts = opts || {};\n  var cls = ax._id + 'tick';\n  var vals = [].concat(ax.minor && ax.minor.ticks ?\n  // minor vals\n  opts.vals.filter(function (d) {\n    return d.minor && !d.noTick;\n  }) : []).concat(ax.ticks ?\n  // major vals\n  opts.vals.filter(function (d) {\n    return !d.minor && !d.noTick;\n  }) : []);\n  var ticks = opts.layer.selectAll('path.' + cls).data(vals, tickDataFn);\n  ticks.exit().remove();\n  ticks.enter().append('path').classed(cls, 1).classed('ticks', 1).classed('crisp', opts.crisp !== false).each(function (d) {\n    return Color.stroke(d3.select(this), d.minor ? ax.minor.tickcolor : ax.tickcolor);\n  }).style('stroke-width', function (d) {\n    return Drawing.crispRound(gd, d.minor ? ax.minor.tickwidth : ax.tickwidth, 1) + 'px';\n  }).attr('d', opts.path).style('display', null); // visible\n\n  hideCounterAxisInsideTickLabels(ax, [TICK_PATH]);\n  ticks.attr('transform', opts.transFn);\n};\n\n/**\n * Draw axis grid\n *\n * @param {DOM element} gd\n * @param {object} ax (full) axis object\n *  - {string} _id\n *  - {boolean} showgrid\n *  - {string} gridcolor\n *  - {string} gridwidth\n *  - {string} griddash\n *  - {boolean} zeroline\n *  - {string} type\n *  - {string} dtick\n * @param {object} opts\n * - {array of object} vals (calcTicks output-like)\n * - {d3 selection} layer\n * - {object} counterAxis (full axis object corresponding to counter axis)\n *     optional - only required if this axis supports zero lines\n * - {string or fn} path\n * - {fn} transFn\n * - {boolean} crisp (set to false to unset crisp-edge SVG rendering)\n */\naxes.drawGrid = function (gd, ax, opts) {\n  opts = opts || {};\n  if (ax.tickmode === 'sync') {\n    // for tickmode sync we use the overlaying axis grid\n    return;\n  }\n  var cls = ax._id + 'grid';\n  var hasMinor = ax.minor && ax.minor.showgrid;\n  var minorVals = hasMinor ? opts.vals.filter(function (d) {\n    return d.minor;\n  }) : [];\n  var majorVals = ax.showgrid ? opts.vals.filter(function (d) {\n    return !d.minor;\n  }) : [];\n  var counterAx = opts.counterAxis;\n  if (counterAx && axes.shouldShowZeroLine(gd, ax, counterAx)) {\n    var isArrayMode = ax.tickmode === 'array';\n    for (var i = 0; i < majorVals.length; i++) {\n      var xi = majorVals[i].x;\n      if (isArrayMode ? !xi : Math.abs(xi) < ax.dtick / 100) {\n        majorVals = majorVals.slice(0, i).concat(majorVals.slice(i + 1));\n        // In array mode you can in principle have multiple\n        // ticks at 0, so test them all. Otherwise once we found\n        // one we can stop.\n        if (isArrayMode) i--;else break;\n      }\n    }\n  }\n  ax._gw = Drawing.crispRound(gd, ax.gridwidth, 1);\n  var wMinor = !hasMinor ? 0 : Drawing.crispRound(gd, ax.minor.gridwidth, 1);\n  var majorLayer = opts.layer;\n  var minorLayer = opts.minorLayer;\n  for (var major = 1; major >= 0; major--) {\n    var layer = major ? majorLayer : minorLayer;\n    if (!layer) continue;\n    var grid = layer.selectAll('path.' + cls).data(major ? majorVals : minorVals, tickDataFn);\n    grid.exit().remove();\n    grid.enter().append('path').classed(cls, 1).classed('crisp', opts.crisp !== false);\n    grid.attr('transform', opts.transFn).attr('d', opts.path).each(function (d) {\n      return Color.stroke(d3.select(this), d.minor ? ax.minor.gridcolor : ax.gridcolor || '#ddd');\n    }).style('stroke-dasharray', function (d) {\n      return Drawing.dashStyle(d.minor ? ax.minor.griddash : ax.griddash, d.minor ? ax.minor.gridwidth : ax.gridwidth);\n    }).style('stroke-width', function (d) {\n      return (d.minor ? wMinor : ax._gw) + 'px';\n    }).style('display', null); // visible\n\n    if (typeof opts.path === 'function') grid.attr('d', opts.path);\n  }\n  hideCounterAxisInsideTickLabels(ax, [GRID_PATH, MINORGRID_PATH]);\n};\n\n/**\n * Draw axis zero-line\n *\n * @param {DOM element} gd\n * @param {object} ax (full) axis object\n *  - {string} _id\n *  - {boolean} zeroline\n *  - {number} zerolinewidth\n *  - {string} zerolinecolor\n *  - {number (optional)} _gridWidthCrispRound\n * @param {object} opts\n * - {d3 selection} layer\n * - {object} counterAxis (full axis object corresponding to counter axis)\n * - {string or fn} path\n * - {fn} transFn\n * - {boolean} crisp (set to false to unset crisp-edge SVG rendering)\n */\naxes.drawZeroLine = function (gd, ax, opts) {\n  opts = opts || opts;\n  var cls = ax._id + 'zl';\n  var show = axes.shouldShowZeroLine(gd, ax, opts.counterAxis);\n  var zl = opts.layer.selectAll('path.' + cls).data(show ? [{\n    x: 0,\n    id: ax._id\n  }] : []);\n  zl.exit().remove();\n  zl.enter().append('path').classed(cls, 1).classed('zl', 1).classed('crisp', opts.crisp !== false).each(function () {\n    // use the fact that only one element can enter to trigger a sort.\n    // If several zerolines enter at the same time we will sort once per,\n    // but generally this should be a minimal overhead.\n    opts.layer.selectAll('path').sort(function (da, db) {\n      return idSort(da.id, db.id);\n    });\n  });\n  zl.attr('transform', opts.transFn).attr('d', opts.path).call(Color.stroke, ax.zerolinecolor || Color.defaultLine).style('stroke-width', Drawing.crispRound(gd, ax.zerolinewidth, ax._gw || 1) + 'px').style('display', null); // visible\n\n  hideCounterAxisInsideTickLabels(ax, [ZERO_PATH]);\n};\n\n/**\n * Draw axis tick labels\n *\n * @param {DOM element} gd\n * @param {object} ax (full) axis object\n *  - {string} _id\n *  - {boolean} showticklabels\n *  - {number} tickangle\n *  - {object (optional)} _selections\n *  - {object} (optional)} _tickAngles\n *  - {object} (optional)} _prevTickAngles\n * @param {object} opts\n * - {array of object} vals (calcTicks output-like)\n * - {d3 selection} layer\n * - {string (optional)} cls (node className)\n * - {boolean} repositionOnUpdate (set to true to reposition update selection)\n * - {boolean} secondary\n * - {fn} transFn\n * - {object} labelFns\n *  + {fn} xFn\n *  + {fn} yFn\n *  + {fn} anchorFn\n *  + {fn} heightFn\n */\naxes.drawLabels = function (gd, ax, opts) {\n  opts = opts || {};\n  var fullLayout = gd._fullLayout;\n  var axId = ax._id;\n  var axLetter = axId.charAt(0);\n  var cls = opts.cls || axId + 'tick';\n  var vals = opts.vals.filter(function (d) {\n    return d.text;\n  });\n  var labelFns = opts.labelFns;\n  var tickAngle = opts.secondary ? 0 : ax.tickangle;\n  var prevAngle = (ax._prevTickAngles || {})[cls];\n  var tickLabels = opts.layer.selectAll('g.' + cls).data(ax.showticklabels ? vals : [], tickDataFn);\n  var labelsReady = [];\n  tickLabels.enter().append('g').classed(cls, 1).append('text')\n  // only so tex has predictable alignment that we can\n  // alter later\n  .attr('text-anchor', 'middle').each(function (d) {\n    var thisLabel = d3.select(this);\n    var newPromise = gd._promises.length;\n    thisLabel.call(svgTextUtils.positionText, labelFns.xFn(d), labelFns.yFn(d)).call(Drawing.font, d.font, d.fontSize, d.fontColor).text(d.text).call(svgTextUtils.convertToTspans, gd);\n    if (gd._promises[newPromise]) {\n      // if we have an async label, we'll deal with that\n      // all here so take it out of gd._promises and\n      // instead position the label and promise this in\n      // labelsReady\n      labelsReady.push(gd._promises.pop().then(function () {\n        positionLabels(thisLabel, tickAngle);\n      }));\n    } else {\n      // sync label: just position it now.\n      positionLabels(thisLabel, tickAngle);\n    }\n  });\n  hideCounterAxisInsideTickLabels(ax, [TICK_TEXT]);\n  tickLabels.exit().remove();\n  if (opts.repositionOnUpdate) {\n    tickLabels.each(function (d) {\n      d3.select(this).select('text').call(svgTextUtils.positionText, labelFns.xFn(d), labelFns.yFn(d));\n    });\n  }\n  function positionLabels(s, angle) {\n    s.each(function (d) {\n      var thisLabel = d3.select(this);\n      var mathjaxGroup = thisLabel.select('.text-math-group');\n      var anchor = labelFns.anchorFn(d, angle);\n      var transform = opts.transFn.call(thisLabel.node(), d) + (isNumeric(angle) && +angle !== 0 ? ' rotate(' + angle + ',' + labelFns.xFn(d) + ',' + (labelFns.yFn(d) - d.fontSize / 2) + ')' : '');\n\n      // how much to shift a multi-line label to center it vertically.\n      var nLines = svgTextUtils.lineCount(thisLabel);\n      var lineHeight = LINE_SPACING * d.fontSize;\n      var anchorHeight = labelFns.heightFn(d, isNumeric(angle) ? +angle : 0, (nLines - 1) * lineHeight);\n      if (anchorHeight) {\n        transform += strTranslate(0, anchorHeight);\n      }\n      if (mathjaxGroup.empty()) {\n        var thisText = thisLabel.select('text');\n        thisText.attr({\n          transform: transform,\n          'text-anchor': anchor\n        });\n        thisText.style('opacity', 1); // visible\n\n        if (ax._adjustTickLabelsOverflow) {\n          ax._adjustTickLabelsOverflow();\n        }\n      } else {\n        var mjWidth = Drawing.bBox(mathjaxGroup.node()).width;\n        var mjShift = mjWidth * {\n          end: -0.5,\n          start: 0.5\n        }[anchor];\n        mathjaxGroup.attr('transform', transform + strTranslate(mjShift, 0));\n      }\n    });\n  }\n  ax._adjustTickLabelsOverflow = function () {\n    var ticklabeloverflow = ax.ticklabeloverflow;\n    if (!ticklabeloverflow || ticklabeloverflow === 'allow') return;\n    var hideOverflow = ticklabeloverflow.indexOf('hide') !== -1;\n    var isX = ax._id.charAt(0) === 'x';\n    // div positions\n    var p0 = 0;\n    var p1 = isX ? gd._fullLayout.width : gd._fullLayout.height;\n    if (ticklabeloverflow.indexOf('domain') !== -1) {\n      // domain positions\n      var rl = Lib.simpleMap(ax.range, ax.r2l);\n      p0 = ax.l2p(rl[0]) + ax._offset;\n      p1 = ax.l2p(rl[1]) + ax._offset;\n    }\n    var min = Math.min(p0, p1);\n    var max = Math.max(p0, p1);\n    var side = ax.side;\n    var visibleLabelMin = Infinity;\n    var visibleLabelMax = -Infinity;\n    tickLabels.each(function (d) {\n      var thisLabel = d3.select(this);\n      var mathjaxGroup = thisLabel.select('.text-math-group');\n      if (mathjaxGroup.empty()) {\n        var bb = Drawing.bBox(thisLabel.node());\n        var adjust = 0;\n        if (isX) {\n          if (bb.right > max) adjust = 1;else if (bb.left < min) adjust = 1;\n        } else {\n          if (bb.bottom > max) adjust = 1;else if (bb.top + (ax.tickangle ? 0 : d.fontSize / 4) < min) adjust = 1;\n        }\n        var t = thisLabel.select('text');\n        if (adjust) {\n          if (hideOverflow) t.style('opacity', 0); // hidden\n        } else {\n          t.style('opacity', 1); // visible\n\n          if (side === 'bottom' || side === 'right') {\n            visibleLabelMin = Math.min(visibleLabelMin, isX ? bb.top : bb.left);\n          } else {\n            visibleLabelMin = -Infinity;\n          }\n          if (side === 'top' || side === 'left') {\n            visibleLabelMax = Math.max(visibleLabelMax, isX ? bb.bottom : bb.right);\n          } else {\n            visibleLabelMax = Infinity;\n          }\n        }\n      } // TODO: hide mathjax?\n    });\n\n    for (var subplot in fullLayout._plots) {\n      var plotinfo = fullLayout._plots[subplot];\n      if (ax._id !== plotinfo.xaxis._id && ax._id !== plotinfo.yaxis._id) continue;\n      var anchorAx = isX ? plotinfo.yaxis : plotinfo.xaxis;\n      if (anchorAx) {\n        anchorAx['_visibleLabelMin_' + ax._id] = visibleLabelMin;\n        anchorAx['_visibleLabelMax_' + ax._id] = visibleLabelMax;\n      }\n    }\n  };\n  ax._hideCounterAxisInsideTickLabels = function (partialOpts) {\n    var isX = ax._id.charAt(0) === 'x';\n    var anchoredAxes = [];\n    for (var subplot in fullLayout._plots) {\n      var plotinfo = fullLayout._plots[subplot];\n      if (ax._id !== plotinfo.xaxis._id && ax._id !== plotinfo.yaxis._id) continue;\n      anchoredAxes.push(isX ? plotinfo.yaxis : plotinfo.xaxis);\n    }\n    anchoredAxes.forEach(function (anchorAx, idx) {\n      if (anchorAx && insideTicklabelposition(anchorAx)) {\n        (partialOpts || [ZERO_PATH, MINORGRID_PATH, GRID_PATH, TICK_PATH, TICK_TEXT]).forEach(function (e) {\n          var isPeriodLabel = e.K === 'tick' && e.L === 'text' && ax.ticklabelmode === 'period';\n          var mainPlotinfo = fullLayout._plots[ax._mainSubplot];\n          var sel;\n          if (e.K === ZERO_PATH.K) sel = mainPlotinfo.zerolinelayer.selectAll('.' + ax._id + 'zl');else if (e.K === MINORGRID_PATH.K) sel = mainPlotinfo.minorGridlayer.selectAll('.' + ax._id);else if (e.K === GRID_PATH.K) sel = mainPlotinfo.gridlayer.selectAll('.' + ax._id);else sel = mainPlotinfo[ax._id.charAt(0) + 'axislayer'];\n          sel.each(function () {\n            var w = d3.select(this);\n            if (e.L) w = w.selectAll(e.L);\n            w.each(function (d) {\n              var q = ax.l2p(isPeriodLabel ? getPosX(d) : d.x) + ax._offset;\n              var t = d3.select(this);\n              if (q < ax['_visibleLabelMax_' + anchorAx._id] && q > ax['_visibleLabelMin_' + anchorAx._id]) {\n                t.style('display', 'none'); // hidden\n              } else if (e.K === 'tick' && !idx) {\n                t.style('display', null); // visible\n              }\n            });\n          });\n        });\n      }\n    });\n  };\n\n  // make sure all labels are correctly positioned at their base angle\n  // the positionLabels call above is only for newly drawn labels.\n  // do this without waiting, using the last calculated angle to\n  // minimize flicker, then do it again when we know all labels are\n  // there, putting back the prescribed angle to check for overlaps.\n  positionLabels(tickLabels, prevAngle + 1 ? prevAngle : tickAngle);\n  function allLabelsReady() {\n    return labelsReady.length && Promise.all(labelsReady);\n  }\n  var autoangle = null;\n  function fixLabelOverlaps() {\n    positionLabels(tickLabels, tickAngle);\n\n    // check for auto-angling if x labels overlap\n    // don't auto-angle at all for log axes with\n    // base and digit format\n    if (vals.length && axLetter === 'x' && !isNumeric(tickAngle) && (ax.type !== 'log' || String(ax.dtick).charAt(0) !== 'D')) {\n      autoangle = 0;\n      var maxFontSize = 0;\n      var lbbArray = [];\n      var i;\n      tickLabels.each(function (d) {\n        maxFontSize = Math.max(maxFontSize, d.fontSize);\n        var x = ax.l2p(d.x);\n        var thisLabel = selectTickLabel(this);\n        var bb = Drawing.bBox(thisLabel.node());\n        lbbArray.push({\n          // ignore about y, just deal with x overlaps\n          top: 0,\n          bottom: 10,\n          height: 10,\n          left: x - bb.width / 2,\n          // impose a 2px gap\n          right: x + bb.width / 2 + 2,\n          width: bb.width + 2\n        });\n      });\n      if ((ax.tickson === 'boundaries' || ax.showdividers) && !opts.secondary) {\n        var gap = 2;\n        if (ax.ticks) gap += ax.tickwidth / 2;\n\n        // TODO should secondary labels also fall into this fix-overlap regime?\n\n        for (i = 0; i < lbbArray.length; i++) {\n          var xbnd = vals[i].xbnd;\n          var lbb = lbbArray[i];\n          if (xbnd[0] !== null && lbb.left - ax.l2p(xbnd[0]) < gap || xbnd[1] !== null && ax.l2p(xbnd[1]) - lbb.right < gap) {\n            autoangle = 90;\n            break;\n          }\n        }\n      } else {\n        var vLen = vals.length;\n        var tickSpacing = Math.abs((vals[vLen - 1].x - vals[0].x) * ax._m) / (vLen - 1);\n        var ticklabelposition = ax.ticklabelposition || '';\n        var has = function (str) {\n          return ticklabelposition.indexOf(str) !== -1;\n        };\n        var isTop = has('top');\n        var isLeft = has('left');\n        var isRight = has('right');\n        var isBottom = has('bottom');\n        var isAligned = isBottom || isLeft || isTop || isRight;\n        var pad = !isAligned ? 0 : (ax.tickwidth || 0) + 2 * TEXTPAD;\n        var rotate90 = tickSpacing < maxFontSize * 2.5 || ax.type === 'multicategory' || ax._name === 'realaxis';\n\n        // any overlap at all - set 30 degrees or 90 degrees\n        for (i = 0; i < lbbArray.length - 1; i++) {\n          if (Lib.bBoxIntersect(lbbArray[i], lbbArray[i + 1], pad)) {\n            autoangle = rotate90 ? 90 : 30;\n            break;\n          }\n        }\n      }\n      if (autoangle) {\n        positionLabels(tickLabels, autoangle);\n      }\n    }\n  }\n  if (ax._selections) {\n    ax._selections[cls] = tickLabels;\n  }\n  var seq = [allLabelsReady];\n\n  // N.B. during auto-margin redraws, if the axis fixed its label overlaps\n  // by rotating 90 degrees, do not attempt to re-fix its label overlaps\n  // as this can lead to infinite redraw loops!\n  if (ax.automargin && fullLayout._redrawFromAutoMarginCount && prevAngle === 90) {\n    autoangle = 90;\n    seq.push(function () {\n      positionLabels(tickLabels, prevAngle);\n    });\n  } else {\n    seq.push(fixLabelOverlaps);\n  }\n\n  // save current tick angle for future redraws\n  if (ax._tickAngles) {\n    seq.push(function () {\n      ax._tickAngles[cls] = autoangle === null ? isNumeric(tickAngle) ? tickAngle : 0 : autoangle;\n    });\n  }\n  var anchorAx = ax._anchorAxis;\n  if (anchorAx && anchorAx.autorange && insideTicklabelposition(ax) && !isLinked(fullLayout, ax._id)) {\n    if (!fullLayout._insideTickLabelsAutorange) {\n      fullLayout._insideTickLabelsAutorange = {};\n    }\n    fullLayout._insideTickLabelsAutorange[anchorAx._name + '.autorange'] = anchorAx.autorange;\n    seq.push(function computeFinalTickLabelBoundingBoxes() {\n      tickLabels.each(function (d, i) {\n        var thisLabel = selectTickLabel(this);\n        var mathjaxGroup = thisLabel.select('.text-math-group');\n        if (mathjaxGroup.empty()) {\n          ax._vals[i].bb = Drawing.bBox(thisLabel.node());\n        }\n      });\n    });\n  }\n  var done = Lib.syncOrAsync(seq);\n  if (done && done.then) gd._promises.push(done);\n  return done;\n};\n\n/**\n * Draw axis dividers\n *\n * @param {DOM element} gd\n * @param {object} ax (full) axis object\n *  - {string} _id\n *  - {string} showdividers\n *  - {number} dividerwidth\n *  - {string} dividercolor\n * @param {object} opts\n * - {array of object} vals (calcTicks output-like)\n * - {d3 selection} layer\n * - {fn} path\n * - {fn} transFn\n */\nfunction drawDividers(gd, ax, opts) {\n  var cls = ax._id + 'divider';\n  var vals = opts.vals;\n  var dividers = opts.layer.selectAll('path.' + cls).data(vals, tickDataFn);\n  dividers.exit().remove();\n  dividers.enter().insert('path', ':first-child').classed(cls, 1).classed('crisp', 1).call(Color.stroke, ax.dividercolor).style('stroke-width', Drawing.crispRound(gd, ax.dividerwidth, 1) + 'px');\n  dividers.attr('transform', opts.transFn).attr('d', opts.path);\n}\n\n/**\n * Get axis position in px, that is the distance for the graph's\n * top (left) edge for x (y) axes.\n *\n * @param {DOM element} gd\n * @param {object} ax (full) axis object\n *  - {string} _id\n *  - {string} side\n *  if anchored:\n *  - {object} _anchorAxis\n *  Otherwise:\n *  - {number} position\n * @return {number}\n */\naxes.getPxPosition = function (gd, ax) {\n  var gs = gd._fullLayout._size;\n  var axLetter = ax._id.charAt(0);\n  var side = ax.side;\n  var anchorAxis;\n  if (ax.anchor !== 'free') {\n    anchorAxis = ax._anchorAxis;\n  } else if (axLetter === 'x') {\n    anchorAxis = {\n      _offset: gs.t + (1 - (ax.position || 0)) * gs.h,\n      _length: 0\n    };\n  } else if (axLetter === 'y') {\n    anchorAxis = {\n      _offset: gs.l + (ax.position || 0) * gs.w + ax._shift,\n      _length: 0\n    };\n  }\n  if (side === 'top' || side === 'left') {\n    return anchorAxis._offset;\n  } else if (side === 'bottom' || side === 'right') {\n    return anchorAxis._offset + anchorAxis._length;\n  }\n};\n\n/**\n * Approximate axis title depth (w/o computing its bounding box)\n *\n * @param {object} ax (full) axis object\n *  - {string} title.text\n *  - {number} title.font.size\n *  - {number} title.standoff\n * @return {number} (in px)\n */\nfunction approxTitleDepth(ax) {\n  var fontSize = ax.title.font.size;\n  var extraLines = (ax.title.text.match(svgTextUtils.BR_TAG_ALL) || []).length;\n  if (ax.title.hasOwnProperty('standoff')) {\n    return extraLines ? fontSize * (CAP_SHIFT + extraLines * LINE_SPACING) : fontSize * CAP_SHIFT;\n  } else {\n    return extraLines ? fontSize * (extraLines + 1) * LINE_SPACING : fontSize;\n  }\n}\n\n/**\n * Draw axis title, compute default standoff if necessary\n *\n * @param {DOM element} gd\n * @param {object} ax (full) axis object\n *  - {string} _id\n *  - {string} _name\n *  - {string} side\n *  - {number} title.font.size\n *  - {object} _selections\n *\n *  - {number} _depth\n *  - {number} title.standoff\n *  OR\n *  - {number} linewidth\n *  - {boolean} showticklabels\n */\nfunction drawTitle(gd, ax) {\n  var fullLayout = gd._fullLayout;\n  var axId = ax._id;\n  var axLetter = axId.charAt(0);\n  var fontSize = ax.title.font.size;\n  var titleStandoff;\n  if (ax.title.hasOwnProperty('standoff')) {\n    titleStandoff = ax._depth + ax.title.standoff + approxTitleDepth(ax);\n  } else {\n    var isInside = insideTicklabelposition(ax);\n    if (ax.type === 'multicategory') {\n      titleStandoff = ax._depth;\n    } else {\n      var offsetBase = 1.5 * fontSize;\n      if (isInside) {\n        offsetBase = 0.5 * fontSize;\n        if (ax.ticks === 'outside') {\n          offsetBase += ax.ticklen;\n        }\n      }\n      titleStandoff = 10 + offsetBase + (ax.linewidth ? ax.linewidth - 1 : 0);\n    }\n    if (!isInside) {\n      if (axLetter === 'x') {\n        titleStandoff += ax.side === 'top' ? fontSize * (ax.showticklabels ? 1 : 0) : fontSize * (ax.showticklabels ? 1.5 : 0.5);\n      } else {\n        titleStandoff += ax.side === 'right' ? fontSize * (ax.showticklabels ? 1 : 0.5) : fontSize * (ax.showticklabels ? 0.5 : 0);\n      }\n    }\n  }\n  var pos = axes.getPxPosition(gd, ax);\n  var transform, x, y;\n  if (axLetter === 'x') {\n    x = ax._offset + ax._length / 2;\n    y = ax.side === 'top' ? pos - titleStandoff : pos + titleStandoff;\n  } else {\n    y = ax._offset + ax._length / 2;\n    x = ax.side === 'right' ? pos + titleStandoff : pos - titleStandoff;\n    transform = {\n      rotate: '-90',\n      offset: 0\n    };\n  }\n  var avoid;\n  if (ax.type !== 'multicategory') {\n    var tickLabels = ax._selections[ax._id + 'tick'];\n    avoid = {\n      selection: tickLabels,\n      side: ax.side\n    };\n    if (tickLabels && tickLabels.node() && tickLabels.node().parentNode) {\n      var translation = Drawing.getTranslate(tickLabels.node().parentNode);\n      avoid.offsetLeft = translation.x;\n      avoid.offsetTop = translation.y;\n    }\n    if (ax.title.hasOwnProperty('standoff')) {\n      avoid.pad = 0;\n    }\n  }\n  ax._titleStandoff = titleStandoff;\n  return Titles.draw(gd, axId + 'title', {\n    propContainer: ax,\n    propName: ax._name + '.title.text',\n    placeholder: fullLayout._dfltTitle[axLetter],\n    avoid: avoid,\n    transform: transform,\n    attributes: {\n      x: x,\n      y: y,\n      'text-anchor': 'middle'\n    }\n  });\n}\naxes.shouldShowZeroLine = function (gd, ax, counterAxis) {\n  var rng = Lib.simpleMap(ax.range, ax.r2l);\n  return rng[0] * rng[1] <= 0 && ax.zeroline && (ax.type === 'linear' || ax.type === '-') && !(ax.rangebreaks && ax.maskBreaks(0) === BADNUM) && (clipEnds(ax, 0) || !anyCounterAxLineAtZero(gd, ax, counterAxis, rng) || hasBarsOrFill(gd, ax));\n};\naxes.clipEnds = function (ax, vals) {\n  return vals.filter(function (d) {\n    return clipEnds(ax, d.x);\n  });\n};\nfunction clipEnds(ax, l) {\n  var p = ax.l2p(l);\n  return p > 1 && p < ax._length - 1;\n}\nfunction anyCounterAxLineAtZero(gd, ax, counterAxis, rng) {\n  var mainCounterAxis = counterAxis._mainAxis;\n  if (!mainCounterAxis) return;\n  var fullLayout = gd._fullLayout;\n  var axLetter = ax._id.charAt(0);\n  var counterLetter = axes.counterLetter(ax._id);\n  var zeroPosition = ax._offset + (Math.abs(rng[0]) < Math.abs(rng[1]) === (axLetter === 'x') ? 0 : ax._length);\n  function lineNearZero(ax2) {\n    if (!ax2.showline || !ax2.linewidth) return false;\n    var tolerance = Math.max((ax2.linewidth + ax.zerolinewidth) / 2, 1);\n    function closeEnough(pos2) {\n      return typeof pos2 === 'number' && Math.abs(pos2 - zeroPosition) < tolerance;\n    }\n    if (closeEnough(ax2._mainLinePosition) || closeEnough(ax2._mainMirrorPosition)) {\n      return true;\n    }\n    var linePositions = ax2._linepositions || {};\n    for (var k in linePositions) {\n      if (closeEnough(linePositions[k][0]) || closeEnough(linePositions[k][1])) {\n        return true;\n      }\n    }\n  }\n  var plotinfo = fullLayout._plots[counterAxis._mainSubplot];\n  if (!(plotinfo.mainplotinfo || plotinfo).overlays.length) {\n    return lineNearZero(counterAxis, zeroPosition);\n  }\n  var counterLetterAxes = axes.list(gd, counterLetter);\n  for (var i = 0; i < counterLetterAxes.length; i++) {\n    var counterAxis2 = counterLetterAxes[i];\n    if (counterAxis2._mainAxis === mainCounterAxis && lineNearZero(counterAxis2, zeroPosition)) {\n      return true;\n    }\n  }\n}\nfunction hasBarsOrFill(gd, ax) {\n  var fullData = gd._fullData;\n  var subplot = ax._mainSubplot;\n  var axLetter = ax._id.charAt(0);\n  for (var i = 0; i < fullData.length; i++) {\n    var trace = fullData[i];\n    if (trace.visible === true && trace.xaxis + trace.yaxis === subplot) {\n      if (Registry.traceIs(trace, 'bar-like') && trace.orientation === {\n        x: 'h',\n        y: 'v'\n      }[axLetter]) return true;\n      if (trace.fill && trace.fill.charAt(trace.fill.length - 1) === axLetter) return true;\n    }\n  }\n  return false;\n}\nfunction selectTickLabel(gTick) {\n  var s = d3.select(gTick);\n  var mj = s.select('.text-math-group');\n  return mj.empty() ? s.select('text') : mj;\n}\n\n/**\n * Find all margin pushers for 2D axes and reserve them for later use\n * Both label and rangeslider automargin calculations happen later so\n * we need to explicitly allow their ids in order to not delete them.\n *\n * TODO: can we pull the actual automargin calls forward to avoid this hack?\n * We're probably also doing multiple redraws in this case, would be faster\n * if we can just do the whole calculation ahead of time and draw once.\n */\naxes.allowAutoMargin = function (gd) {\n  var axList = axes.list(gd, '', true);\n  for (var i = 0; i < axList.length; i++) {\n    var ax = axList[i];\n    if (ax.automargin) {\n      Plots.allowAutoMargin(gd, axAutoMarginID(ax));\n      if (ax.mirror) {\n        Plots.allowAutoMargin(gd, axMirrorAutoMarginID(ax));\n      }\n    }\n    if (Registry.getComponentMethod('rangeslider', 'isVisible')(ax)) {\n      Plots.allowAutoMargin(gd, rangeSliderAutoMarginID(ax));\n    }\n  }\n};\nfunction axAutoMarginID(ax) {\n  return ax._id + '.automargin';\n}\nfunction axMirrorAutoMarginID(ax) {\n  return axAutoMarginID(ax) + '.mirror';\n}\nfunction rangeSliderAutoMarginID(ax) {\n  return ax._id + '.rangeslider';\n}\n\n// swap all the presentation attributes of the axes showing these traces\naxes.swap = function (gd, traces) {\n  var axGroups = makeAxisGroups(gd, traces);\n  for (var i = 0; i < axGroups.length; i++) {\n    swapAxisGroup(gd, axGroups[i].x, axGroups[i].y);\n  }\n};\nfunction makeAxisGroups(gd, traces) {\n  var groups = [];\n  var i, j;\n  for (i = 0; i < traces.length; i++) {\n    var groupsi = [];\n    var xi = gd._fullData[traces[i]].xaxis;\n    var yi = gd._fullData[traces[i]].yaxis;\n    if (!xi || !yi) continue; // not a 2D cartesian trace?\n\n    for (j = 0; j < groups.length; j++) {\n      if (groups[j].x.indexOf(xi) !== -1 || groups[j].y.indexOf(yi) !== -1) {\n        groupsi.push(j);\n      }\n    }\n    if (!groupsi.length) {\n      groups.push({\n        x: [xi],\n        y: [yi]\n      });\n      continue;\n    }\n    var group0 = groups[groupsi[0]];\n    var groupj;\n    if (groupsi.length > 1) {\n      for (j = 1; j < groupsi.length; j++) {\n        groupj = groups[groupsi[j]];\n        mergeAxisGroups(group0.x, groupj.x);\n        mergeAxisGroups(group0.y, groupj.y);\n      }\n    }\n    mergeAxisGroups(group0.x, [xi]);\n    mergeAxisGroups(group0.y, [yi]);\n  }\n  return groups;\n}\nfunction mergeAxisGroups(intoSet, fromSet) {\n  for (var i = 0; i < fromSet.length; i++) {\n    if (intoSet.indexOf(fromSet[i]) === -1) intoSet.push(fromSet[i]);\n  }\n}\nfunction swapAxisGroup(gd, xIds, yIds) {\n  var xFullAxes = [];\n  var yFullAxes = [];\n  var layout = gd.layout;\n  var i, j;\n  for (i = 0; i < xIds.length; i++) xFullAxes.push(axes.getFromId(gd, xIds[i]));\n  for (i = 0; i < yIds.length; i++) yFullAxes.push(axes.getFromId(gd, yIds[i]));\n  var allAxKeys = Object.keys(axAttrs);\n  var noSwapAttrs = ['anchor', 'domain', 'overlaying', 'position', 'side', 'tickangle', 'editType'];\n  var numericTypes = ['linear', 'log'];\n  for (i = 0; i < allAxKeys.length; i++) {\n    var keyi = allAxKeys[i];\n    var xVal = xFullAxes[0][keyi];\n    var yVal = yFullAxes[0][keyi];\n    var allEqual = true;\n    var coerceLinearX = false;\n    var coerceLinearY = false;\n    if (keyi.charAt(0) === '_' || typeof xVal === 'function' || noSwapAttrs.indexOf(keyi) !== -1) {\n      continue;\n    }\n    for (j = 1; j < xFullAxes.length && allEqual; j++) {\n      var xVali = xFullAxes[j][keyi];\n      if (keyi === 'type' && numericTypes.indexOf(xVal) !== -1 && numericTypes.indexOf(xVali) !== -1 && xVal !== xVali) {\n        // type is special - if we find a mixture of linear and log,\n        // coerce them all to linear on flipping\n        coerceLinearX = true;\n      } else if (xVali !== xVal) allEqual = false;\n    }\n    for (j = 1; j < yFullAxes.length && allEqual; j++) {\n      var yVali = yFullAxes[j][keyi];\n      if (keyi === 'type' && numericTypes.indexOf(yVal) !== -1 && numericTypes.indexOf(yVali) !== -1 && yVal !== yVali) {\n        // type is special - if we find a mixture of linear and log,\n        // coerce them all to linear on flipping\n        coerceLinearY = true;\n      } else if (yFullAxes[j][keyi] !== yVal) allEqual = false;\n    }\n    if (allEqual) {\n      if (coerceLinearX) layout[xFullAxes[0]._name].type = 'linear';\n      if (coerceLinearY) layout[yFullAxes[0]._name].type = 'linear';\n      swapAxisAttrs(layout, keyi, xFullAxes, yFullAxes, gd._fullLayout._dfltTitle);\n    }\n  }\n\n  // now swap x&y for any annotations anchored to these x & y\n  for (i = 0; i < gd._fullLayout.annotations.length; i++) {\n    var ann = gd._fullLayout.annotations[i];\n    if (xIds.indexOf(ann.xref) !== -1 && yIds.indexOf(ann.yref) !== -1) {\n      Lib.swapAttrs(layout.annotations[i], ['?']);\n    }\n  }\n}\nfunction swapAxisAttrs(layout, key, xFullAxes, yFullAxes, dfltTitle) {\n  // in case the value is the default for either axis,\n  // look at the first axis in each list and see if\n  // this key's value is undefined\n  var np = Lib.nestedProperty;\n  var xVal = np(layout[xFullAxes[0]._name], key).get();\n  var yVal = np(layout[yFullAxes[0]._name], key).get();\n  var i;\n  if (key === 'title') {\n    // special handling of placeholder titles\n    if (xVal && xVal.text === dfltTitle.x) {\n      xVal.text = dfltTitle.y;\n    }\n    if (yVal && yVal.text === dfltTitle.y) {\n      yVal.text = dfltTitle.x;\n    }\n  }\n  for (i = 0; i < xFullAxes.length; i++) {\n    np(layout, xFullAxes[i]._name + '.' + key).set(yVal);\n  }\n  for (i = 0; i < yFullAxes.length; i++) {\n    np(layout, yFullAxes[i]._name + '.' + key).set(xVal);\n  }\n}\nfunction isAngular(ax) {\n  return ax._id === 'angularaxis';\n}\nfunction moveOutsideBreak(v, ax) {\n  var len = ax._rangebreaks.length;\n  for (var k = 0; k < len; k++) {\n    var brk = ax._rangebreaks[k];\n    if (v >= brk.min && v < brk.max) {\n      return brk.max;\n    }\n  }\n  return v;\n}\nfunction insideTicklabelposition(ax) {\n  return (ax.ticklabelposition || '').indexOf('inside') !== -1;\n}\nfunction hideCounterAxisInsideTickLabels(ax, opts) {\n  if (insideTicklabelposition(ax._anchorAxis || {})) {\n    if (ax._hideCounterAxisInsideTickLabels) {\n      ax._hideCounterAxisInsideTickLabels(opts);\n    }\n  }\n}\nfunction incrementShift(ax, shiftVal, axShifts, normalize) {\n  // Need to set 'overlay' for anchored axis\n  var overlay = ax.anchor !== 'free' && (ax.overlaying === undefined || ax.overlaying === false) ? ax._id : ax.overlaying;\n  var shiftValAdj;\n  if (normalize) {\n    shiftValAdj = ax.side === 'right' ? shiftVal : -shiftVal;\n  } else {\n    shiftValAdj = shiftVal;\n  }\n  if (!(overlay in axShifts)) {\n    axShifts[overlay] = {};\n  }\n  if (!(ax.side in axShifts[overlay])) {\n    axShifts[overlay][ax.side] = 0;\n  }\n  axShifts[overlay][ax.side] += shiftValAdj;\n}\nfunction setShiftVal(ax, axShifts) {\n  return ax.autoshift ? axShifts[ax.overlaying][ax.side] : ax.shift || 0;\n}\n\n/***/ }),\n\n/***/ 4322:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1381068__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_1381068__(92770);\nvar Lib = __nested_webpack_require_1381068__(71828);\nvar BADNUM = (__nested_webpack_require_1381068__(50606).BADNUM);\nvar isArrayOrTypedArray = Lib.isArrayOrTypedArray;\nvar isDateTime = Lib.isDateTime;\nvar cleanNumber = Lib.cleanNumber;\nvar round = Math.round;\nmodule.exports = function autoType(array, calendar, opts) {\n  var a = array;\n  var noMultiCategory = opts.noMultiCategory;\n  if (isArrayOrTypedArray(a) && !a.length) return '-';\n  if (!noMultiCategory && multiCategory(a)) return 'multicategory';\n  if (noMultiCategory && Array.isArray(a[0])) {\n    // no need to flat typed arrays here\n    var b = [];\n    for (var i = 0; i < a.length; i++) {\n      if (isArrayOrTypedArray(a[i])) {\n        for (var j = 0; j < a[i].length; j++) {\n          b.push(a[i][j]);\n        }\n      }\n    }\n    a = b;\n  }\n  if (moreDates(a, calendar)) return 'date';\n  var convertNumeric = opts.autotypenumbers !== 'strict'; // compare against strict, just in case autotypenumbers was not provided in opts\n  if (category(a, convertNumeric)) return 'category';\n  if (linearOK(a, convertNumeric)) return 'linear';\n  return '-';\n};\nfunction hasTypeNumber(v, convertNumeric) {\n  return convertNumeric ? isNumeric(v) : typeof v === 'number';\n}\n\n// is there at least one number in array? If not, we should leave\n// ax.type empty so it can be autoset later\nfunction linearOK(a, convertNumeric) {\n  var len = a.length;\n  for (var i = 0; i < len; i++) {\n    if (hasTypeNumber(a[i], convertNumeric)) return true;\n  }\n  return false;\n}\n\n// does the array a have mostly dates rather than numbers?\n// note: some values can be neither (such as blanks, text)\n// 2- or 4-digit integers can be both, so require twice as many\n// dates as non-dates, to exclude cases with mostly 2 & 4 digit\n// numbers and a few dates\n// as with categories, consider DISTINCT values only.\nfunction moreDates(a, calendar) {\n  var len = a.length;\n  var inc = getIncrement(len);\n  var dats = 0;\n  var nums = 0;\n  var seen = {};\n  for (var f = 0; f < len; f += inc) {\n    var i = round(f);\n    var ai = a[i];\n    var stri = String(ai);\n    if (seen[stri]) continue;\n    seen[stri] = 1;\n    if (isDateTime(ai, calendar)) dats++;\n    if (isNumeric(ai)) nums++;\n  }\n  return dats > nums * 2;\n}\n\n// return increment to test at most 1000 points, evenly spaced\nfunction getIncrement(len) {\n  return Math.max(1, (len - 1) / 1000);\n}\n\n// are the (x,y)-values in gd.data mostly text?\n// require twice as many DISTINCT categories as distinct numbers\nfunction category(a, convertNumeric) {\n  var len = a.length;\n  var inc = getIncrement(len);\n  var nums = 0;\n  var cats = 0;\n  var seen = {};\n  for (var f = 0; f < len; f += inc) {\n    var i = round(f);\n    var ai = a[i];\n    var stri = String(ai);\n    if (seen[stri]) continue;\n    seen[stri] = 1;\n    var t = typeof ai;\n    if (t === 'boolean') cats++;else if (convertNumeric ? cleanNumber(ai) !== BADNUM : t === 'number') nums++;else if (t === 'string') cats++;\n  }\n  return cats > nums * 2;\n}\n\n// very-loose requirements for multicategory,\n// trace modules that should never auto-type to multicategory\n// should be declared with 'noMultiCategory'\nfunction multiCategory(a) {\n  return isArrayOrTypedArray(a[0]) && isArrayOrTypedArray(a[1]);\n}\n\n/***/ }),\n\n/***/ 71453:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1384426__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_1384426__(92770);\nvar Registry = __nested_webpack_require_1384426__(73972);\nvar Lib = __nested_webpack_require_1384426__(71828);\nvar Template = __nested_webpack_require_1384426__(44467);\nvar handleArrayContainerDefaults = __nested_webpack_require_1384426__(85501);\nvar layoutAttributes = __nested_webpack_require_1384426__(13838);\nvar handleTickValueDefaults = __nested_webpack_require_1384426__(26218);\nvar handleTickMarkDefaults = __nested_webpack_require_1384426__(38701);\nvar handleTickLabelDefaults = __nested_webpack_require_1384426__(96115);\nvar handlePrefixSuffixDefaults = __nested_webpack_require_1384426__(89426);\nvar handleCategoryOrderDefaults = __nested_webpack_require_1384426__(15258);\nvar handleLineGridDefaults = __nested_webpack_require_1384426__(92128);\nvar setConvert = __nested_webpack_require_1384426__(21994);\nvar DAY_OF_WEEK = (__nested_webpack_require_1384426__(85555).WEEKDAY_PATTERN);\nvar HOUR = (__nested_webpack_require_1384426__(85555).HOUR_PATTERN);\n\n/**\n * options: object containing:\n *\n *  letter: 'x' or 'y'\n *  title: name of the axis (ie 'Colorbar') to go in default title\n *  font: the default font to inherit\n *  outerTicks: boolean, should ticks default to outside?\n *  showGrid: boolean, should gridlines be shown by default?\n *  noHover: boolean, this axis doesn't support hover effects?\n *  noTickson: boolean, this axis doesn't support 'tickson'\n *  data: the plot data, used to manage categories\n *  bgColor: the plot background color, to calculate default gridline colors\n *  calendar:\n *  splomStash:\n *  visibleDflt: boolean\n *  reverseDflt: boolean\n *  automargin: boolean\n */\nmodule.exports = function handleAxisDefaults(containerIn, containerOut, coerce, options, layoutOut) {\n  var letter = options.letter;\n  var font = options.font || {};\n  var splomStash = options.splomStash || {};\n  var visible = coerce('visible', !options.visibleDflt);\n  var axTemplate = containerOut._template || {};\n  var axType = containerOut.type || axTemplate.type || '-';\n  var ticklabelmode;\n  if (axType === 'date') {\n    var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleDefaults');\n    handleCalendarDefaults(containerIn, containerOut, 'calendar', options.calendar);\n    if (!options.noTicklabelmode) {\n      ticklabelmode = coerce('ticklabelmode');\n    }\n  }\n  var ticklabelposition = '';\n  if (!options.noTicklabelposition || axType === 'multicategory') {\n    ticklabelposition = Lib.coerce(containerIn, containerOut, {\n      ticklabelposition: {\n        valType: 'enumerated',\n        dflt: 'outside',\n        values: ticklabelmode === 'period' ? ['outside', 'inside'] : letter === 'x' ? ['outside', 'inside', 'outside left', 'inside left', 'outside right', 'inside right'] : ['outside', 'inside', 'outside top', 'inside top', 'outside bottom', 'inside bottom']\n      }\n    }, 'ticklabelposition');\n  }\n  if (!options.noTicklabeloverflow) {\n    coerce('ticklabeloverflow', ticklabelposition.indexOf('inside') !== -1 ? 'hide past domain' : axType === 'category' || axType === 'multicategory' ? 'allow' : 'hide past div');\n  }\n  setConvert(containerOut, layoutOut);\n  var autorangeDflt = !containerOut.isValidRange(containerIn.range);\n  if (autorangeDflt && options.reverseDflt) autorangeDflt = 'reversed';\n  var autoRange = coerce('autorange', autorangeDflt);\n  if (autoRange && (axType === 'linear' || axType === '-')) coerce('rangemode');\n  coerce('range');\n  containerOut.cleanRange();\n  handleCategoryOrderDefaults(containerIn, containerOut, coerce, options);\n  if (axType !== 'category' && !options.noHover) coerce('hoverformat');\n  var dfltColor = coerce('color');\n  // if axis.color was provided, use it for fonts too; otherwise,\n  // inherit from global font color in case that was provided.\n  // Compare to dflt rather than to containerIn, so we can provide color via\n  // template too.\n  var dfltFontColor = dfltColor !== layoutAttributes.color.dflt ? dfltColor : font.color;\n  // try to get default title from splom trace, fallback to graph-wide value\n  var dfltTitle = splomStash.label || layoutOut._dfltTitle[letter];\n  handlePrefixSuffixDefaults(containerIn, containerOut, coerce, axType, options);\n  if (!visible) return containerOut;\n  coerce('title.text', dfltTitle);\n  Lib.coerceFont(coerce, 'title.font', {\n    family: font.family,\n    size: Lib.bigFont(font.size),\n    color: dfltFontColor\n  });\n\n  // major ticks\n  handleTickValueDefaults(containerIn, containerOut, coerce, axType);\n  var hasMinor = options.hasMinor;\n  if (hasMinor) {\n    // minor ticks\n    Template.newContainer(containerOut, 'minor');\n    handleTickValueDefaults(containerIn, containerOut, coerce, axType, {\n      isMinor: true\n    });\n  }\n  handleTickLabelDefaults(containerIn, containerOut, coerce, axType, options);\n\n  // major and minor ticks\n  handleTickMarkDefaults(containerIn, containerOut, coerce, options);\n  if (hasMinor) {\n    var keepIsMinor = options.isMinor;\n    options.isMinor = true;\n    handleTickMarkDefaults(containerIn, containerOut, coerce, options);\n    options.isMinor = keepIsMinor;\n  }\n  handleLineGridDefaults(containerIn, containerOut, coerce, {\n    dfltColor: dfltColor,\n    bgColor: options.bgColor,\n    showGrid: options.showGrid,\n    hasMinor: hasMinor,\n    attributes: layoutAttributes\n  });\n\n  // delete minor when no minor ticks or gridlines\n  if (hasMinor && !containerOut.minor.ticks && !containerOut.minor.showgrid) {\n    delete containerOut.minor;\n  }\n\n  // mirror\n  if (containerOut.showline || containerOut.ticks) coerce('mirror');\n  var isMultiCategory = axType === 'multicategory';\n  if (!options.noTickson && (axType === 'category' || isMultiCategory) && (containerOut.ticks || containerOut.showgrid)) {\n    var ticksonDflt;\n    if (isMultiCategory) ticksonDflt = 'boundaries';\n    var tickson = coerce('tickson', ticksonDflt);\n    if (tickson === 'boundaries') {\n      delete containerOut.ticklabelposition;\n    }\n  }\n  if (isMultiCategory) {\n    var showDividers = coerce('showdividers');\n    if (showDividers) {\n      coerce('dividercolor');\n      coerce('dividerwidth');\n    }\n  }\n  if (axType === 'date') {\n    handleArrayContainerDefaults(containerIn, containerOut, {\n      name: 'rangebreaks',\n      inclusionAttr: 'enabled',\n      handleItemDefaults: rangebreaksDefaults\n    });\n    if (!containerOut.rangebreaks.length) {\n      delete containerOut.rangebreaks;\n    } else {\n      for (var k = 0; k < containerOut.rangebreaks.length; k++) {\n        if (containerOut.rangebreaks[k].pattern === DAY_OF_WEEK) {\n          containerOut._hasDayOfWeekBreaks = true;\n          break;\n        }\n      }\n      setConvert(containerOut, layoutOut);\n      if (layoutOut._has('scattergl') || layoutOut._has('splom')) {\n        for (var i = 0; i < options.data.length; i++) {\n          var trace = options.data[i];\n          if (trace.type === 'scattergl' || trace.type === 'splom') {\n            trace.visible = false;\n            Lib.warn(trace.type + ' traces do not work on axes with rangebreaks.' + ' Setting trace ' + trace.index + ' to `visible: false`.');\n          }\n        }\n      }\n    }\n  }\n  return containerOut;\n};\nfunction rangebreaksDefaults(itemIn, itemOut, containerOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(itemIn, itemOut, layoutAttributes.rangebreaks, attr, dflt);\n  }\n  var enabled = coerce('enabled');\n  if (enabled) {\n    var bnds = coerce('bounds');\n    if (bnds && bnds.length >= 2) {\n      var dfltPattern = '';\n      var i, q;\n      if (bnds.length === 2) {\n        for (i = 0; i < 2; i++) {\n          q = indexOfDay(bnds[i]);\n          if (q) {\n            dfltPattern = DAY_OF_WEEK;\n            break;\n          }\n        }\n      }\n      var pattern = coerce('pattern', dfltPattern);\n      if (pattern === DAY_OF_WEEK) {\n        for (i = 0; i < 2; i++) {\n          q = indexOfDay(bnds[i]);\n          if (q) {\n            // convert to integers i.e 'Sunday' --> 0\n            itemOut.bounds[i] = bnds[i] = q - 1;\n          }\n        }\n      }\n      if (pattern) {\n        // ensure types and ranges\n        for (i = 0; i < 2; i++) {\n          q = bnds[i];\n          switch (pattern) {\n            case DAY_OF_WEEK:\n              if (!isNumeric(q)) {\n                itemOut.enabled = false;\n                return;\n              }\n              q = +q;\n              if (q !== Math.floor(q) ||\n              // don't accept fractional days for mow\n              q < 0 || q >= 7) {\n                itemOut.enabled = false;\n                return;\n              }\n              // use number\n              itemOut.bounds[i] = bnds[i] = q;\n              break;\n            case HOUR:\n              if (!isNumeric(q)) {\n                itemOut.enabled = false;\n                return;\n              }\n              q = +q;\n              if (q < 0 || q > 24) {\n                // accept 24\n                itemOut.enabled = false;\n                return;\n              }\n              // use number\n              itemOut.bounds[i] = bnds[i] = q;\n              break;\n          }\n        }\n      }\n      if (containerOut.autorange === false) {\n        var rng = containerOut.range;\n\n        // if bounds are bigger than the (set) range, disable break\n        if (rng[0] < rng[1]) {\n          if (bnds[0] < rng[0] && bnds[1] > rng[1]) {\n            itemOut.enabled = false;\n            return;\n          }\n        } else if (bnds[0] > rng[0] && bnds[1] < rng[1]) {\n          itemOut.enabled = false;\n          return;\n        }\n      }\n    } else {\n      var values = coerce('values');\n      if (values && values.length) {\n        coerce('dvalue');\n      } else {\n        itemOut.enabled = false;\n        return;\n      }\n    }\n  }\n}\n\n// these numbers are one more than what bounds would be mapped to\nvar dayStrToNum = {\n  sun: 1,\n  mon: 2,\n  tue: 3,\n  wed: 4,\n  thu: 5,\n  fri: 6,\n  sat: 7\n};\nfunction indexOfDay(v) {\n  if (typeof v !== 'string') return;\n  return dayStrToNum[v.substr(0, 3).toLowerCase()];\n}\n\n/***/ }),\n\n/***/ 12663:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1394301__) {\n\n\"use strict\";\n\n\nvar docs = __nested_webpack_require_1394301__(31562);\nvar FORMAT_LINK = docs.FORMAT_LINK;\nvar DATE_FORMAT_LINK = docs.DATE_FORMAT_LINK;\nfunction axisHoverFormat(x, noDates) {\n  return {\n    valType: 'string',\n    dflt: '',\n    editType: 'none',\n    description: (noDates ? descriptionOnlyNumbers : descriptionWithDates)('hover text', x) + ['By default the values are formatted using ' + (noDates ? 'generic number format' : '`' + x + 'axis.hoverformat`') + '.'].join(' ')\n  };\n}\nfunction descriptionOnlyNumbers(label, x) {\n  return ['Sets the ' + label + ' formatting rule' + (x ? 'for `' + x + '` ' : ''), 'using d3 formatting mini-languages', 'which are very similar to those in Python. For numbers, see: ' + FORMAT_LINK + '.'].join(' ');\n}\nfunction descriptionWithDates(label, x) {\n  return descriptionOnlyNumbers(label, x) + [' And for dates see: ' + DATE_FORMAT_LINK + '.', 'We add two items to d3\\'s date formatter:', '*%h* for half of the year as a decimal number as well as', '*%{n}f* for fractional seconds', 'with n digits. For example, *2016-10-13 09:15:23.456* with tickformat', '*%H~%M~%S.%2f* would display *09~15~23.46*'].join(' ');\n}\nmodule.exports = {\n  axisHoverFormat: axisHoverFormat,\n  descriptionOnlyNumbers: descriptionOnlyNumbers,\n  descriptionWithDates: descriptionWithDates\n};\n\n/***/ }),\n\n/***/ 41675:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_1395704__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_1395704__(73972);\nvar constants = __nested_webpack_require_1395704__(85555);\n\n// convert between axis names (xaxis, xaxis2, etc, elements of gd.layout)\n// and axis id's (x, x2, etc). Would probably have ditched 'xaxis'\n// completely in favor of just 'x' if it weren't ingrained in the API etc.\nexports.id2name = function id2name(id) {\n  if (typeof id !== 'string' || !id.match(constants.AX_ID_PATTERN)) return;\n  var axNum = id.split(' ')[0].substr(1);\n  if (axNum === '1') axNum = '';\n  return id.charAt(0) + 'axis' + axNum;\n};\nexports.name2id = function name2id(name) {\n  if (!name.match(constants.AX_NAME_PATTERN)) return;\n  var axNum = name.substr(5);\n  if (axNum === '1') axNum = '';\n  return name.charAt(0) + axNum;\n};\n\n/*\n * Cleans up the number of an axis, e.g., 'x002'->'x2', 'x0'->'x', 'x1' -> 'x',\n * etc.\n * If domainId is true, then id could be a domain reference and if it is, the\n * ' domain' part is kept at the end of the axis ID string.\n */\nexports.cleanId = function cleanId(id, axLetter, domainId) {\n  var domainTest = /( domain)$/.test(id);\n  if (typeof id !== 'string' || !id.match(constants.AX_ID_PATTERN)) return;\n  if (axLetter && id.charAt(0) !== axLetter) return;\n  if (domainTest && !domainId) return;\n  var axNum = id.split(' ')[0].substr(1).replace(/^0+/, '');\n  if (axNum === '1') axNum = '';\n  return id.charAt(0) + axNum + (domainTest && domainId ? ' domain' : '');\n};\n\n// get all axis objects, as restricted in listNames\nexports.list = function (gd, axLetter, only2d) {\n  var fullLayout = gd._fullLayout;\n  if (!fullLayout) return [];\n  var idList = exports.listIds(gd, axLetter);\n  var out = new Array(idList.length);\n  var i;\n  for (i = 0; i < idList.length; i++) {\n    var idi = idList[i];\n    out[i] = fullLayout[idi.charAt(0) + 'axis' + idi.substr(1)];\n  }\n  if (!only2d) {\n    var sceneIds3D = fullLayout._subplots.gl3d || [];\n    for (i = 0; i < sceneIds3D.length; i++) {\n      var scene = fullLayout[sceneIds3D[i]];\n      if (axLetter) out.push(scene[axLetter + 'axis']);else out.push(scene.xaxis, scene.yaxis, scene.zaxis);\n    }\n  }\n  return out;\n};\n\n// get all axis ids, optionally restricted by letter\n// this only makes sense for 2d axes\nexports.listIds = function (gd, axLetter) {\n  var fullLayout = gd._fullLayout;\n  if (!fullLayout) return [];\n  var subplotLists = fullLayout._subplots;\n  if (axLetter) return subplotLists[axLetter + 'axis'];\n  return subplotLists.xaxis.concat(subplotLists.yaxis);\n};\n\n// get an axis object from its id 'x','x2' etc\n// optionally, id can be a subplot (ie 'x2y3') and type gets x or y from it\nexports.getFromId = function (gd, id, type) {\n  var fullLayout = gd._fullLayout;\n  // remove \"domain\" suffix\n  id = id === undefined || typeof id !== 'string' ? id : id.replace(' domain', '');\n  if (type === 'x') id = id.replace(/y[0-9]*/, '');else if (type === 'y') id = id.replace(/x[0-9]*/, '');\n  return fullLayout[exports.id2name(id)];\n};\n\n// get an axis object of specified type from the containing trace\nexports.getFromTrace = function (gd, fullTrace, type) {\n  var fullLayout = gd._fullLayout;\n  var ax = null;\n  if (Registry.traceIs(fullTrace, 'gl3d')) {\n    var scene = fullTrace.scene;\n    if (scene.substr(0, 5) === 'scene') {\n      ax = fullLayout[scene][type + 'axis'];\n    }\n  } else {\n    ax = exports.getFromId(gd, fullTrace[type + 'axis'] || type);\n  }\n  return ax;\n};\n\n// sort x, x2, x10, y, y2, y10...\nexports.idSort = function (id1, id2) {\n  var letter1 = id1.charAt(0);\n  var letter2 = id2.charAt(0);\n  if (letter1 !== letter2) return letter1 > letter2 ? 1 : -1;\n  return +(id1.substr(1) || 1) - +(id2.substr(1) || 1);\n};\n\n/*\n * An axis reference (e.g., the contents at the 'xref' key of an object) might\n * have extra information appended. Extract the axis ID only.\n *\n * ar: the axis reference string\n *\n */\nexports.ref2id = function (ar) {\n  // This assumes ar has been coerced via coerceRef, and uses the shortcut of\n  // checking if the first letter matches [xyz] to determine if it should\n  // return the axis ID. Otherwise it returns false.\n  return /^[xyz]/.test(ar) ? ar.split(' ')[0] : false;\n};\nfunction isFound(axId, list) {\n  if (list && list.length) {\n    for (var i = 0; i < list.length; i++) {\n      if (list[i][axId]) return true;\n    }\n  }\n  return false;\n}\nexports.isLinked = function (fullLayout, axId) {\n  return isFound(axId, fullLayout._axisMatchGroups) || isFound(axId, fullLayout._axisConstraintGroups);\n};\n\n/***/ }),\n\n/***/ 15258:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nfunction findCategories(ax, opts) {\n  var dataAttr = opts.dataAttr || ax._id.charAt(0);\n  var lookup = {};\n  var axData;\n  var i, j;\n  if (opts.axData) {\n    // non-x/y case\n    axData = opts.axData;\n  } else {\n    // x/y case\n    axData = [];\n    for (i = 0; i < opts.data.length; i++) {\n      var trace = opts.data[i];\n      if (trace[dataAttr + 'axis'] === ax._id) {\n        axData.push(trace);\n      }\n    }\n  }\n  for (i = 0; i < axData.length; i++) {\n    var vals = axData[i][dataAttr];\n    for (j = 0; j < vals.length; j++) {\n      var v = vals[j];\n      if (v !== null && v !== undefined) {\n        lookup[v] = 1;\n      }\n    }\n  }\n  return Object.keys(lookup);\n}\n\n/**\n * Fills in category* default and initial categories.\n *\n * @param {object} containerIn : input axis object\n * @param {object} containerOut : full axis object\n * @param {function} coerce : Lib.coerce fn wrapper\n * @param {object} opts :\n *   - data {array} : (full) data trace\n * OR\n *   - axData {array} : (full) data associated with axis being coerced here\n *   - dataAttr {string} : attribute name corresponding to coordinate array\n */\nmodule.exports = function handleCategoryOrderDefaults(containerIn, containerOut, coerce, opts) {\n  if (containerOut.type !== 'category') return;\n  var arrayIn = containerIn.categoryarray;\n  var isValidArray = Array.isArray(arrayIn) && arrayIn.length > 0;\n\n  // override default 'categoryorder' value when non-empty array is supplied\n  var orderDefault;\n  if (isValidArray) orderDefault = 'array';\n  var order = coerce('categoryorder', orderDefault);\n  var array;\n\n  // coerce 'categoryarray' only in array order case\n  if (order === 'array') {\n    array = coerce('categoryarray');\n  }\n\n  // cannot set 'categoryorder' to 'array' with an invalid 'categoryarray'\n  if (!isValidArray && order === 'array') {\n    order = containerOut.categoryorder = 'trace';\n  }\n\n  // set up things for makeCalcdata\n  if (order === 'trace') {\n    containerOut._initialCategories = [];\n  } else if (order === 'array') {\n    containerOut._initialCategories = array.slice();\n  } else {\n    array = findCategories(containerOut, opts).sort();\n    if (order === 'category ascending') {\n      containerOut._initialCategories = array;\n    } else if (order === 'category descending') {\n      containerOut._initialCategories = array.reverse();\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 66287:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_1402669__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_1402669__(92770);\nvar Lib = __nested_webpack_require_1402669__(71828);\nvar constants = __nested_webpack_require_1402669__(50606);\nvar ONEDAY = constants.ONEDAY;\nvar ONEWEEK = constants.ONEWEEK;\n\n/**\n * Return a validated dtick value for this axis\n *\n * @param {any} dtick: the candidate dtick. valid values are numbers and strings,\n *     and further constrained depending on the axis type.\n * @param {string} axType: the axis type\n */\nexports.dtick = function (dtick, axType) {\n  var isLog = axType === 'log';\n  var isDate = axType === 'date';\n  var isCat = axType === 'category';\n  var dtickDflt = isDate ? ONEDAY : 1;\n  if (!dtick) return dtickDflt;\n  if (isNumeric(dtick)) {\n    dtick = Number(dtick);\n    if (dtick <= 0) return dtickDflt;\n    if (isCat) {\n      // category dtick must be positive integers\n      return Math.max(1, Math.round(dtick));\n    }\n    if (isDate) {\n      // date dtick must be at least 0.1ms (our current precision)\n      return Math.max(0.1, dtick);\n    }\n    return dtick;\n  }\n  if (typeof dtick !== 'string' || !(isDate || isLog)) {\n    return dtickDflt;\n  }\n  var prefix = dtick.charAt(0);\n  var dtickNum = dtick.substr(1);\n  dtickNum = isNumeric(dtickNum) ? Number(dtickNum) : 0;\n  if (dtickNum <= 0 || !(\n  // \"M<n>\" gives ticks every (integer) n months\n  isDate && prefix === 'M' && dtickNum === Math.round(dtickNum) ||\n  // \"L<f>\" gives ticks linearly spaced in data (not in position) every (float) f\n  isLog && prefix === 'L' ||\n  // \"D1\" gives powers of 10 with all small digits between, \"D2\" gives only 2 and 5\n  isLog && prefix === 'D' && (dtickNum === 1 || dtickNum === 2))) {\n    return dtickDflt;\n  }\n  return dtick;\n};\n\n/**\n * Return a validated tick0 for this axis\n *\n * @param {any} tick0: the candidate tick0. Valid values are numbers and strings,\n *     further constrained depending on the axis type\n * @param {string} axType: the axis type\n * @param {string} calendar: for date axes, the calendar to validate/convert with\n * @param {any} dtick: an already valid dtick. Only used for D1 and D2 log dticks,\n *     which do not support tick0 at all.\n */\nexports.tick0 = function (tick0, axType, calendar, dtick) {\n  if (axType === 'date') {\n    return Lib.cleanDate(tick0, Lib.dateTick0(calendar, dtick % ONEWEEK === 0 ? 1 : 0));\n  }\n  if (dtick === 'D1' || dtick === 'D2') {\n    // D1 and D2 modes ignore tick0 entirely\n    return undefined;\n  }\n  // Aside from date axes, tick0 must be numeric\n  return isNumeric(tick0) ? Number(tick0) : 0;\n};\n\n/***/ }),\n\n/***/ 85555:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1405276__) {\n\n\"use strict\";\n\n\nvar counterRegex = (__nested_webpack_require_1405276__(30587).counter);\nmodule.exports = {\n  idRegex: {\n    x: counterRegex('x', '( domain)?'),\n    y: counterRegex('y', '( domain)?')\n  },\n  attrRegex: counterRegex('[xy]axis'),\n  // axis match regular expression\n  xAxisMatch: counterRegex('xaxis'),\n  yAxisMatch: counterRegex('yaxis'),\n  // pattern matching axis ids and names\n  // note that this is more permissive than counterRegex, as\n  // id2name, name2id, and cleanId accept \"x1\" etc\n  AX_ID_PATTERN: /^[xyz][0-9]*( domain)?$/,\n  AX_NAME_PATTERN: /^[xyz]axis[0-9]*$/,\n  // and for 2D subplots\n  SUBPLOT_PATTERN: /^x([0-9]*)y([0-9]*)$/,\n  HOUR_PATTERN: 'hour',\n  WEEKDAY_PATTERN: 'day of week',\n  // pixels to move mouse before you stop clamping to starting point\n  MINDRAG: 8,\n  // smallest dimension allowed for a zoombox\n  MINZOOM: 20,\n  // width of axis drag regions\n  DRAGGERSIZE: 20,\n  // delay before a redraw (relayout) after smooth panning and zooming\n  REDRAWDELAY: 50,\n  // last resort axis ranges for x and y axes if we have no data\n  DFLTRANGEX: [-1, 6],\n  DFLTRANGEY: [-1, 4],\n  // Layers to keep trace types in the right order\n  // N.B. each  'unique' plot method must have its own layer\n  traceLayerClasses: ['imagelayer', 'heatmaplayer', 'contourcarpetlayer', 'contourlayer', 'funnellayer', 'waterfalllayer', 'barlayer', 'carpetlayer', 'violinlayer', 'boxlayer', 'ohlclayer', 'scattercarpetlayer', 'scatterlayer'],\n  clipOnAxisFalseQuery: ['.scatterlayer', '.barlayer', '.funnellayer', '.waterfalllayer'],\n  layerValue2layerClass: {\n    'above traces': 'above',\n    'below traces': 'below'\n  }\n};\n\n/***/ }),\n\n/***/ 99082:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_1406994__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_1406994__(71828);\nvar autorange = __nested_webpack_require_1406994__(71739);\nvar id2name = (__nested_webpack_require_1406994__(41675).id2name);\nvar layoutAttributes = __nested_webpack_require_1406994__(13838);\nvar scaleZoom = __nested_webpack_require_1406994__(42449);\nvar setConvert = __nested_webpack_require_1406994__(21994);\nvar ALMOST_EQUAL = (__nested_webpack_require_1406994__(50606).ALMOST_EQUAL);\nvar FROM_BL = (__nested_webpack_require_1406994__(18783).FROM_BL);\nexports.handleDefaults = function (layoutIn, layoutOut, opts) {\n  var axIds = opts.axIds;\n  var axHasImage = opts.axHasImage;\n\n  // sets of axes linked by `scaleanchor` OR `matches` along with the\n  // scaleratios compounded together, populated in handleConstraintDefaults\n  var constraintGroups = layoutOut._axisConstraintGroups = [];\n  // similar to _axisConstraintGroups, but only matching axes\n  var matchGroups = layoutOut._axisMatchGroups = [];\n  var i, group, axId, axName, axIn, axOut, attr, val;\n  for (i = 0; i < axIds.length; i++) {\n    axName = id2name(axIds[i]);\n    axIn = layoutIn[axName];\n    axOut = layoutOut[axName];\n    handleOneAxDefaults(axIn, axOut, {\n      axIds: axIds,\n      layoutOut: layoutOut,\n      hasImage: axHasImage[axName]\n    });\n  }\n\n  // save matchGroup on each matching axis\n  function stash(groups, stashAttr) {\n    for (i = 0; i < groups.length; i++) {\n      group = groups[i];\n      for (axId in group) {\n        layoutOut[id2name(axId)][stashAttr] = group;\n      }\n    }\n  }\n  stash(matchGroups, '_matchGroup');\n\n  // If any axis in a constraint group is fixedrange, they all get fixed\n  // This covers matches axes, as they're now in the constraintgroup too\n  // and have not yet been removed (if the group is *only* matching)\n  for (i = 0; i < constraintGroups.length; i++) {\n    group = constraintGroups[i];\n    for (axId in group) {\n      axOut = layoutOut[id2name(axId)];\n      if (axOut.fixedrange) {\n        for (var axId2 in group) {\n          var axName2 = id2name(axId2);\n          if ((layoutIn[axName2] || {}).fixedrange === false) {\n            Lib.warn('fixedrange was specified as false for axis ' + axName2 + ' but was overridden because another ' + 'axis in its constraint group has fixedrange true');\n          }\n          layoutOut[axName2].fixedrange = true;\n        }\n        break;\n      }\n    }\n  }\n\n  // remove constraint groups that simply duplicate match groups\n  i = 0;\n  while (i < constraintGroups.length) {\n    group = constraintGroups[i];\n    for (axId in group) {\n      axOut = layoutOut[id2name(axId)];\n      if (axOut._matchGroup && Object.keys(axOut._matchGroup).length === Object.keys(group).length) {\n        constraintGroups.splice(i, 1);\n        i--;\n      }\n      break;\n    }\n    i++;\n  }\n\n  // save constraintGroup on each constrained axis\n  stash(constraintGroups, '_constraintGroup');\n\n  // make sure `matching` axes share values of necessary attributes\n  // Precedence (base axis is the one that doesn't list a `matches`, ie others\n  // all point to it):\n  // (1) explicitly defined value in the base axis\n  // (2) explicitly defined in another axis (arbitrary order)\n  // (3) default in the base axis\n  var matchAttrs = ['constrain', 'range', 'autorange', 'rangemode', 'rangebreaks', 'categoryorder', 'categoryarray'];\n  var hasRange = false;\n  var hasDayOfWeekBreaks = false;\n  function setAttrVal() {\n    val = axOut[attr];\n    if (attr === 'rangebreaks') {\n      hasDayOfWeekBreaks = axOut._hasDayOfWeekBreaks;\n    }\n  }\n  for (i = 0; i < matchGroups.length; i++) {\n    group = matchGroups[i];\n\n    // find 'matching' range attrs\n    for (var j = 0; j < matchAttrs.length; j++) {\n      attr = matchAttrs[j];\n      val = null;\n      var baseAx;\n      for (axId in group) {\n        axName = id2name(axId);\n        axIn = layoutIn[axName];\n        axOut = layoutOut[axName];\n        if (!(attr in axOut)) {\n          continue;\n        }\n        if (!axOut.matches) {\n          baseAx = axOut;\n          // top priority: explicit value in base axis\n          if (attr in axIn) {\n            setAttrVal();\n            break;\n          }\n        }\n        if (val === null && attr in axIn) {\n          // second priority: first explicit value in another axis\n          setAttrVal();\n        }\n      }\n\n      // special logic for coupling of range and autorange\n      // if nobody explicitly specifies autorange, but someone does\n      // explicitly specify range, autorange must be disabled.\n      if (attr === 'range' && val) {\n        hasRange = true;\n      }\n      if (attr === 'autorange' && val === null && hasRange) {\n        val = false;\n      }\n      if (val === null && attr in baseAx) {\n        // fallback: default value in base axis\n        val = baseAx[attr];\n      }\n      // but we still might not have a value, which is fine.\n      if (val !== null) {\n        for (axId in group) {\n          axOut = layoutOut[id2name(axId)];\n          axOut[attr] = attr === 'range' ? val.slice() : val;\n          if (attr === 'rangebreaks') {\n            axOut._hasDayOfWeekBreaks = hasDayOfWeekBreaks;\n            setConvert(axOut, layoutOut);\n          }\n        }\n      }\n    }\n  }\n};\nfunction handleOneAxDefaults(axIn, axOut, opts) {\n  var axIds = opts.axIds;\n  var layoutOut = opts.layoutOut;\n  var hasImage = opts.hasImage;\n  var constraintGroups = layoutOut._axisConstraintGroups;\n  var matchGroups = layoutOut._axisMatchGroups;\n  var axId = axOut._id;\n  var axLetter = axId.charAt(0);\n  var splomStash = ((layoutOut._splomAxes || {})[axLetter] || {})[axId] || {};\n  var thisID = axOut._id;\n  var isX = thisID.charAt(0) === 'x';\n\n  // Clear _matchGroup & _constraintGroup so relinkPrivateKeys doesn't keep\n  // an old one around. If this axis is in a group we'll set this again later\n  axOut._matchGroup = null;\n  axOut._constraintGroup = null;\n  function coerce(attr, dflt) {\n    return Lib.coerce(axIn, axOut, layoutAttributes, attr, dflt);\n  }\n\n  // coerce the constraint mechanics even if this axis has no scaleanchor\n  // because it may be the anchor of another axis.\n  coerce('constrain', hasImage ? 'domain' : 'range');\n  Lib.coerce(axIn, axOut, {\n    constraintoward: {\n      valType: 'enumerated',\n      values: isX ? ['left', 'center', 'right'] : ['bottom', 'middle', 'top'],\n      dflt: isX ? 'center' : 'middle'\n    }\n  }, 'constraintoward');\n\n  // If this axis is already part of a constraint group, we can't\n  // scaleanchor any other axis in that group, or we'd make a loop.\n  // Filter axIds to enforce this, also matching axis types.\n  var thisType = axOut.type;\n  var i, idi;\n  var linkableAxes = [];\n  for (i = 0; i < axIds.length; i++) {\n    idi = axIds[i];\n    if (idi === thisID) continue;\n    var axi = layoutOut[id2name(idi)];\n    if (axi.type === thisType) {\n      linkableAxes.push(idi);\n    }\n  }\n  var thisGroup = getConstraintGroup(constraintGroups, thisID);\n  if (thisGroup) {\n    var linkableAxesNoLoops = [];\n    for (i = 0; i < linkableAxes.length; i++) {\n      idi = linkableAxes[i];\n      if (!thisGroup[idi]) linkableAxesNoLoops.push(idi);\n    }\n    linkableAxes = linkableAxesNoLoops;\n  }\n  var canLink = linkableAxes.length;\n  var matches, scaleanchor;\n  if (canLink && (axIn.matches || splomStash.matches)) {\n    matches = Lib.coerce(axIn, axOut, {\n      matches: {\n        valType: 'enumerated',\n        values: linkableAxes,\n        dflt: linkableAxes.indexOf(splomStash.matches) !== -1 ? splomStash.matches : undefined\n      }\n    }, 'matches');\n  }\n\n  // 'matches' wins over 'scaleanchor' - each axis can only specify one\n  // constraint, but you can chain matches and scaleanchor constraints by\n  // specifying them in separate axes.\n  var scaleanchorDflt = hasImage && !isX ? axOut.anchor : undefined;\n  if (canLink && !matches && (axIn.scaleanchor || scaleanchorDflt)) {\n    scaleanchor = Lib.coerce(axIn, axOut, {\n      scaleanchor: {\n        valType: 'enumerated',\n        values: linkableAxes\n      }\n    }, 'scaleanchor', scaleanchorDflt);\n  }\n  if (matches) {\n    axOut._matchGroup = updateConstraintGroups(matchGroups, thisID, matches, 1);\n\n    // Also include match constraints in the scale groups\n    var matchedAx = layoutOut[id2name(matches)];\n    var matchRatio = extent(layoutOut, axOut) / extent(layoutOut, matchedAx);\n    if (isX !== (matches.charAt(0) === 'x')) {\n      // We don't yet know the actual scale ratio of x/y matches constraints,\n      // due to possible automargins, so just leave a placeholder for this:\n      // 'x' means \"x size over y size\", 'y' means the inverse.\n      // in principle in the constraint group you could get multiple of these.\n      matchRatio = (isX ? 'x' : 'y') + matchRatio;\n    }\n    updateConstraintGroups(constraintGroups, thisID, matches, matchRatio);\n  } else if (axIn.matches && axIds.indexOf(axIn.matches) !== -1) {\n    Lib.warn('ignored ' + axOut._name + '.matches: \"' + axIn.matches + '\" to avoid an infinite loop');\n  }\n  if (scaleanchor) {\n    var scaleratio = coerce('scaleratio');\n\n    // TODO: I suppose I could do attribute.min: Number.MIN_VALUE to avoid zero,\n    // but that seems hacky. Better way to say \"must be a positive number\"?\n    // Of course if you use several super-tiny values you could eventually\n    // force a product of these to zero and all hell would break loose...\n    // Likewise with super-huge values.\n    if (!scaleratio) scaleratio = axOut.scaleratio = 1;\n    updateConstraintGroups(constraintGroups, thisID, scaleanchor, scaleratio);\n  } else if (axIn.scaleanchor && axIds.indexOf(axIn.scaleanchor) !== -1) {\n    Lib.warn('ignored ' + axOut._name + '.scaleanchor: \"' + axIn.scaleanchor + '\" to avoid either an infinite loop ' + 'and possibly inconsistent scaleratios, or because this axis ' + 'declares a *matches* constraint.');\n  }\n}\nfunction extent(layoutOut, ax) {\n  var domain = ax.domain;\n  if (!domain) {\n    // at this point overlaying axes haven't yet inherited their main domains\n    // TODO: constrain: domain with overlaying axes is likely a bug.\n    domain = layoutOut[id2name(ax.overlaying)].domain;\n  }\n  return domain[1] - domain[0];\n}\nfunction getConstraintGroup(groups, thisID) {\n  for (var i = 0; i < groups.length; i++) {\n    if (groups[i][thisID]) {\n      return groups[i];\n    }\n  }\n  return null;\n}\n\n/*\n * Add this axis to the axis constraint groups, which is the collection\n * of axes that are all constrained together on scale (or matching).\n *\n * constraintGroups: a list of objects. each object is\n * {axis_id: scale_within_group}, where scale_within_group is\n * only important relative to the rest of the group, and defines\n * the relative scales between all axes in the group\n *\n * thisGroup: the group the current axis is already in\n * thisID: the id if the current axis\n * thatID: the id of the axis to scale it with\n * scaleratio: the ratio of this axis to the thatID axis\n */\nfunction updateConstraintGroups(constraintGroups, thisID, thatID, scaleratio) {\n  var i, j, groupi, keyj, thisGroupIndex;\n  var thisGroup = getConstraintGroup(constraintGroups, thisID);\n  if (thisGroup === null) {\n    thisGroup = {};\n    thisGroup[thisID] = 1;\n    thisGroupIndex = constraintGroups.length;\n    constraintGroups.push(thisGroup);\n  } else {\n    thisGroupIndex = constraintGroups.indexOf(thisGroup);\n  }\n  var thisGroupKeys = Object.keys(thisGroup);\n\n  // we know that this axis isn't in any other groups, but we don't know\n  // about the thatID axis. If it is, we need to merge the groups.\n  for (i = 0; i < constraintGroups.length; i++) {\n    groupi = constraintGroups[i];\n    if (i !== thisGroupIndex && groupi[thatID]) {\n      var baseScale = groupi[thatID];\n      for (j = 0; j < thisGroupKeys.length; j++) {\n        keyj = thisGroupKeys[j];\n        groupi[keyj] = multiplyScales(baseScale, multiplyScales(scaleratio, thisGroup[keyj]));\n      }\n      constraintGroups.splice(thisGroupIndex, 1);\n      return;\n    }\n  }\n\n  // otherwise, we insert the new thatID axis as the base scale (1)\n  // in its group, and scale the rest of the group to it\n  if (scaleratio !== 1) {\n    for (j = 0; j < thisGroupKeys.length; j++) {\n      var key = thisGroupKeys[j];\n      thisGroup[key] = multiplyScales(scaleratio, thisGroup[key]);\n    }\n  }\n  thisGroup[thatID] = 1;\n}\n\n// scales may be numbers or 'x1.3', 'yy4.5' etc to multiply by as-yet-unknown\n// ratios between x and y plot sizes n times\nfunction multiplyScales(a, b) {\n  var aPrefix = '';\n  var bPrefix = '';\n  var aLen, bLen;\n  if (typeof a === 'string') {\n    aPrefix = a.match(/^[xy]*/)[0];\n    aLen = aPrefix.length;\n    a = +a.substr(aLen);\n  }\n  if (typeof b === 'string') {\n    bPrefix = b.match(/^[xy]*/)[0];\n    bLen = bPrefix.length;\n    b = +b.substr(bLen);\n  }\n  var c = a * b;\n\n  // just two numbers\n  if (!aLen && !bLen) {\n    return c;\n  }\n\n  // one or more prefixes of the same type\n  if (!aLen || !bLen || aPrefix.charAt(0) === bPrefix.charAt(0)) {\n    return aPrefix + bPrefix + a * b;\n  }\n\n  // x and y cancel each other out exactly - back to a number\n  if (aLen === bLen) {\n    return c;\n  }\n\n  // partial cancelation of prefixes\n  return (aLen > bLen ? aPrefix.substr(bLen) : bPrefix.substr(aLen)) + c;\n}\nfunction finalRatios(group, fullLayout) {\n  var size = fullLayout._size;\n  var yRatio = size.h / size.w;\n  var out = {};\n  var keys = Object.keys(group);\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    var val = group[key];\n    if (typeof val === 'string') {\n      var prefix = val.match(/^[xy]*/)[0];\n      var pLen = prefix.length;\n      val = +val.substr(pLen);\n      var mult = prefix.charAt(0) === 'y' ? yRatio : 1 / yRatio;\n      for (var j = 0; j < pLen; j++) {\n        val *= mult;\n      }\n    }\n    out[key] = val;\n  }\n  return out;\n}\nexports.enforce = function enforce(gd) {\n  var fullLayout = gd._fullLayout;\n  var constraintGroups = fullLayout._axisConstraintGroups || [];\n  var i, j, group, axisID, ax, normScale, mode, factor;\n\n  // matching constraints are handled in the autorange code when autoranged,\n  // or in the supplyDefaults code when explicitly ranged.\n  // now we just need to handle scaleanchor constraints\n  // matches constraints that chain with scaleanchor constraints are included\n  // here too, but because matches has already been satisfied,\n  // any changes here should preserve that.\n  for (i = 0; i < constraintGroups.length; i++) {\n    group = finalRatios(constraintGroups[i], fullLayout);\n    var axisIDs = Object.keys(group);\n    var minScale = Infinity;\n    var maxScale = 0;\n    // mostly matchScale will be the same as minScale\n    // ie we expand axis ranges to encompass *everything*\n    // that's currently in any of their ranges, but during\n    // autorange of a subset of axes we will ignore other\n    // axes for this purpose.\n    var matchScale = Infinity;\n    var normScales = {};\n    var axes = {};\n    var hasAnyDomainConstraint = false;\n\n    // find the (normalized) scale of each axis in the group\n    for (j = 0; j < axisIDs.length; j++) {\n      axisID = axisIDs[j];\n      axes[axisID] = ax = fullLayout[id2name(axisID)];\n      if (ax._inputDomain) ax.domain = ax._inputDomain.slice();else ax._inputDomain = ax.domain.slice();\n      if (!ax._inputRange) ax._inputRange = ax.range.slice();\n\n      // set axis scale here so we can use _m rather than\n      // having to calculate it from length and range\n      ax.setScale();\n\n      // abs: inverted scales still satisfy the constraint\n      normScales[axisID] = normScale = Math.abs(ax._m) / group[axisID];\n      minScale = Math.min(minScale, normScale);\n      if (ax.constrain === 'domain' || !ax._constraintShrinkable) {\n        matchScale = Math.min(matchScale, normScale);\n      }\n\n      // this has served its purpose, so remove it\n      delete ax._constraintShrinkable;\n      maxScale = Math.max(maxScale, normScale);\n      if (ax.constrain === 'domain') hasAnyDomainConstraint = true;\n    }\n\n    // Do we have a constraint mismatch? Give a small buffer for rounding errors\n    if (minScale > ALMOST_EQUAL * maxScale && !hasAnyDomainConstraint) continue;\n\n    // now increase any ranges we need to until all normalized scales are equal\n    for (j = 0; j < axisIDs.length; j++) {\n      axisID = axisIDs[j];\n      normScale = normScales[axisID];\n      ax = axes[axisID];\n      mode = ax.constrain;\n\n      // even if the scale didn't change, if we're shrinking domain\n      // we need to recalculate in case `constraintoward` changed\n      if (normScale !== matchScale || mode === 'domain') {\n        factor = normScale / matchScale;\n        if (mode === 'range') {\n          scaleZoom(ax, factor);\n        } else {\n          // mode === 'domain'\n\n          var inputDomain = ax._inputDomain;\n          var domainShrunk = (ax.domain[1] - ax.domain[0]) / (inputDomain[1] - inputDomain[0]);\n          var rangeShrunk = (ax.r2l(ax.range[1]) - ax.r2l(ax.range[0])) / (ax.r2l(ax._inputRange[1]) - ax.r2l(ax._inputRange[0]));\n          factor /= domainShrunk;\n          if (factor * rangeShrunk < 1) {\n            // we've asked to magnify the axis more than we can just by\n            // enlarging the domain - so we need to constrict range\n            ax.domain = ax._input.domain = inputDomain.slice();\n            scaleZoom(ax, factor);\n            continue;\n          }\n          if (rangeShrunk < 1) {\n            // the range has previously been constricted by ^^, but we've\n            // switched to the domain-constricted regime, so reset range\n            ax.range = ax._input.range = ax._inputRange.slice();\n            factor *= rangeShrunk;\n          }\n          if (ax.autorange) {\n            /*\n             * range & factor may need to change because range was\n             * calculated for the larger scaling, so some pixel\n             * paddings may get cut off when we reduce the domain.\n             *\n             * This is easier than the regular autorange calculation\n             * because we already know the scaling `m`, but we still\n             * need to cut out impossible constraints (like\n             * annotations with super-long arrows). That's what\n             * outerMin/Max are for - if the expansion was going to\n             * go beyond the original domain, it must be impossible\n             */\n            var rl0 = ax.r2l(ax.range[0]);\n            var rl1 = ax.r2l(ax.range[1]);\n            var rangeCenter = (rl0 + rl1) / 2;\n            var rangeMin = rangeCenter;\n            var rangeMax = rangeCenter;\n            var halfRange = Math.abs(rl1 - rangeCenter);\n            // extra tiny bit for rounding errors, in case we actually\n            // *are* expanding to the full domain\n            var outerMin = rangeCenter - halfRange * factor * 1.0001;\n            var outerMax = rangeCenter + halfRange * factor * 1.0001;\n            var getPadMin = autorange.makePadFn(fullLayout, ax, 0);\n            var getPadMax = autorange.makePadFn(fullLayout, ax, 1);\n            updateDomain(ax, factor);\n            var m = Math.abs(ax._m);\n            var extremes = autorange.concatExtremes(gd, ax);\n            var minArray = extremes.min;\n            var maxArray = extremes.max;\n            var newVal;\n            var k;\n            for (k = 0; k < minArray.length; k++) {\n              newVal = minArray[k].val - getPadMin(minArray[k]) / m;\n              if (newVal > outerMin && newVal < rangeMin) {\n                rangeMin = newVal;\n              }\n            }\n            for (k = 0; k < maxArray.length; k++) {\n              newVal = maxArray[k].val + getPadMax(maxArray[k]) / m;\n              if (newVal < outerMax && newVal > rangeMax) {\n                rangeMax = newVal;\n              }\n            }\n            var domainExpand = (rangeMax - rangeMin) / (2 * halfRange);\n            factor /= domainExpand;\n            rangeMin = ax.l2r(rangeMin);\n            rangeMax = ax.l2r(rangeMax);\n            ax.range = ax._input.range = rl0 < rl1 ? [rangeMin, rangeMax] : [rangeMax, rangeMin];\n          }\n          updateDomain(ax, factor);\n        }\n      }\n    }\n  }\n};\nexports.getAxisGroup = function getAxisGroup(fullLayout, axId) {\n  var matchGroups = fullLayout._axisMatchGroups;\n  for (var i = 0; i < matchGroups.length; i++) {\n    var group = matchGroups[i];\n    if (group[axId]) return 'g' + i;\n  }\n  return axId;\n};\n\n// For use before autoranging, check if this axis was previously constrained\n// by domain but no longer is\nexports.clean = function clean(gd, ax) {\n  if (ax._inputDomain) {\n    var isConstrained = false;\n    var axId = ax._id;\n    var constraintGroups = gd._fullLayout._axisConstraintGroups;\n    for (var j = 0; j < constraintGroups.length; j++) {\n      if (constraintGroups[j][axId]) {\n        isConstrained = true;\n        break;\n      }\n    }\n    if (!isConstrained || ax.constrain !== 'domain') {\n      ax._input.domain = ax.domain = ax._inputDomain;\n      delete ax._inputDomain;\n    }\n  }\n};\nfunction updateDomain(ax, factor) {\n  var inputDomain = ax._inputDomain;\n  var centerFraction = FROM_BL[ax.constraintoward];\n  var center = inputDomain[0] + (inputDomain[1] - inputDomain[0]) * centerFraction;\n  ax.domain = ax._input.domain = [center + (inputDomain[0] - center) / factor, center + (inputDomain[1] - center) / factor];\n  ax.setScale();\n}\n\n/***/ }),\n\n/***/ 29323:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1428183__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_1428183__(39898);\nvar Lib = __nested_webpack_require_1428183__(71828);\nvar numberFormat = Lib.numberFormat;\nvar tinycolor = __nested_webpack_require_1428183__(84267);\nvar supportsPassive = __nested_webpack_require_1428183__(38520);\nvar Registry = __nested_webpack_require_1428183__(73972);\nvar strTranslate = Lib.strTranslate;\nvar svgTextUtils = __nested_webpack_require_1428183__(63893);\nvar Color = __nested_webpack_require_1428183__(7901);\nvar Drawing = __nested_webpack_require_1428183__(91424);\nvar Fx = __nested_webpack_require_1428183__(30211);\nvar Axes = __nested_webpack_require_1428183__(89298);\nvar setCursor = __nested_webpack_require_1428183__(6964);\nvar dragElement = __nested_webpack_require_1428183__(28569);\nvar helpers = __nested_webpack_require_1428183__(64505);\nvar selectingOrDrawing = helpers.selectingOrDrawing;\nvar freeMode = helpers.freeMode;\nvar FROM_TL = (__nested_webpack_require_1428183__(18783).FROM_TL);\nvar clearGlCanvases = __nested_webpack_require_1428183__(33306);\nvar redrawReglTraces = (__nested_webpack_require_1428183__(61549).redrawReglTraces);\nvar Plots = __nested_webpack_require_1428183__(74875);\nvar getFromId = (__nested_webpack_require_1428183__(41675).getFromId);\nvar prepSelect = (__nested_webpack_require_1428183__(47322).prepSelect);\nvar clearOutline = (__nested_webpack_require_1428183__(47322).clearOutline);\nvar selectOnClick = (__nested_webpack_require_1428183__(47322).selectOnClick);\nvar scaleZoom = __nested_webpack_require_1428183__(42449);\nvar constants = __nested_webpack_require_1428183__(85555);\nvar MINDRAG = constants.MINDRAG;\nvar MINZOOM = constants.MINZOOM;\n\n// flag for showing \"doubleclick to zoom out\" only at the beginning\nvar SHOWZOOMOUTTIP = true;\n\n// dragBox: create an element to drag one or more axis ends\n// inputs:\n//      plotinfo - which subplot are we making dragboxes on?\n//      x,y,w,h - left, top, width, height of the box\n//      ns - how does this drag the vertical axis?\n//          'n' - top only\n//          's' - bottom only\n//          'ns' - top and bottom together, difference unchanged\n//      ew - same for horizontal axis\nfunction makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) {\n  // mouseDown stores ms of first mousedown event in the last\n  // `gd._context.doubleClickDelay` ms on the drag bars\n  // numClicks stores how many mousedowns have been seen\n  // within `gd._context.doubleClickDelay` so we can check for click or doubleclick events\n  // dragged stores whether a drag has occurred, so we don't have to\n  // redraw unnecessarily, ie if no move bigger than MINDRAG or MINZOOM px\n  var zoomlayer = gd._fullLayout._zoomlayer;\n  var isMainDrag = ns + ew === 'nsew';\n  var singleEnd = (ns + ew).length === 1;\n\n  // main subplot x and y (i.e. found in plotinfo - the main ones)\n  var xa0, ya0;\n  // {ax._id: ax} hash objects\n  var xaHash, yaHash;\n  // xaHash/yaHash values (arrays)\n  var xaxes, yaxes;\n  // main axis offsets\n  var xs, ys;\n  // main axis lengths\n  var pw, ph;\n  // contains keys 'xaHash', 'yaHash', 'xaxes', and 'yaxes'\n  // which are the x/y {ax._id: ax} hash objects and their values\n  // for linked axis relative to this subplot\n  var links;\n  // similar to `links` but for matching axes\n  var matches;\n  // set to ew/ns val when active, set to '' when inactive\n  var xActive, yActive;\n  // are all axes in this subplot are fixed?\n  var allFixedRanges;\n  // do we need to edit x/y ranges?\n  var editX, editY;\n  // graph-wide optimization flags\n  var hasScatterGl, hasSplom, hasSVG;\n  // collected changes to be made to the plot by relayout at the end\n  var updates;\n  // scaling factors from css transform\n  var scaleX;\n  var scaleY;\n\n  // offset the x location of the box if needed\n  x += plotinfo.yaxis._shift;\n  function recomputeAxisLists() {\n    xa0 = plotinfo.xaxis;\n    ya0 = plotinfo.yaxis;\n    pw = xa0._length;\n    ph = ya0._length;\n    xs = xa0._offset;\n    ys = ya0._offset;\n    xaHash = {};\n    xaHash[xa0._id] = xa0;\n    yaHash = {};\n    yaHash[ya0._id] = ya0;\n\n    // if we're dragging two axes at once, also drag overlays\n    if (ns && ew) {\n      var overlays = plotinfo.overlays;\n      for (var i = 0; i < overlays.length; i++) {\n        var xa = overlays[i].xaxis;\n        xaHash[xa._id] = xa;\n        var ya = overlays[i].yaxis;\n        yaHash[ya._id] = ya;\n      }\n    }\n    xaxes = hashValues(xaHash);\n    yaxes = hashValues(yaHash);\n    xActive = isDirectionActive(xaxes, ew);\n    yActive = isDirectionActive(yaxes, ns);\n    allFixedRanges = !yActive && !xActive;\n    matches = calcLinks(gd, gd._fullLayout._axisMatchGroups, xaHash, yaHash);\n    links = calcLinks(gd, gd._fullLayout._axisConstraintGroups, xaHash, yaHash, matches);\n    var spConstrained = links.isSubplotConstrained || matches.isSubplotConstrained;\n    editX = ew || spConstrained;\n    editY = ns || spConstrained;\n    var fullLayout = gd._fullLayout;\n    hasScatterGl = fullLayout._has('scattergl');\n    hasSplom = fullLayout._has('splom');\n    hasSVG = fullLayout._has('svg');\n  }\n  recomputeAxisLists();\n  var cursor = getDragCursor(yActive + xActive, gd._fullLayout.dragmode, isMainDrag);\n  var dragger = makeRectDragger(plotinfo, ns + ew + 'drag', cursor, x, y, w, h);\n\n  // still need to make the element if the axes are disabled\n  // but nuke its events (except for maindrag which needs them for hover)\n  // and stop there\n  if (allFixedRanges && !isMainDrag) {\n    dragger.onmousedown = null;\n    dragger.style.pointerEvents = 'none';\n    return dragger;\n  }\n  var dragOptions = {\n    element: dragger,\n    gd: gd,\n    plotinfo: plotinfo\n  };\n  dragOptions.prepFn = function (e, startX, startY) {\n    var dragModePrev = dragOptions.dragmode;\n    var dragModeNow = gd._fullLayout.dragmode;\n    if (dragModeNow !== dragModePrev) {\n      dragOptions.dragmode = dragModeNow;\n    }\n    recomputeAxisLists();\n    scaleX = gd._fullLayout._invScaleX;\n    scaleY = gd._fullLayout._invScaleY;\n    if (!allFixedRanges) {\n      if (isMainDrag) {\n        // main dragger handles all drag modes, and changes\n        // to pan (or to zoom if it already is pan) on shift\n        if (e.shiftKey) {\n          if (dragModeNow === 'pan') dragModeNow = 'zoom';else if (!selectingOrDrawing(dragModeNow)) dragModeNow = 'pan';\n        } else if (e.ctrlKey) {\n          dragModeNow = 'pan';\n        }\n      } else {\n        // all other draggers just pan\n        dragModeNow = 'pan';\n      }\n    }\n    if (freeMode(dragModeNow)) dragOptions.minDrag = 1;else dragOptions.minDrag = undefined;\n    if (selectingOrDrawing(dragModeNow)) {\n      dragOptions.xaxes = xaxes;\n      dragOptions.yaxes = yaxes;\n      // this attaches moveFn, clickFn, doneFn on dragOptions\n      prepSelect(e, startX, startY, dragOptions, dragModeNow);\n    } else {\n      dragOptions.clickFn = clickFn;\n      if (selectingOrDrawing(dragModePrev)) {\n        // TODO Fix potential bug\n        // Note: clearing / resetting selection state only happens, when user\n        // triggers at least one interaction in pan/zoom mode. Otherwise, the\n        // select/lasso outlines are deleted (in plots.js.cleanPlot) but the selection\n        // cache isn't cleared. So when the user switches back to select/lasso and\n        // 'adds to a selection' with Shift, the \"old\", seemingly removed outlines\n        // are redrawn again because the selection cache still holds their coordinates.\n        // However, this isn't easily solved, since plots.js would need\n        // to have a reference to the dragOptions object (which holds the\n        // selection cache).\n        clearAndResetSelect();\n      }\n      if (!allFixedRanges) {\n        if (dragModeNow === 'zoom') {\n          dragOptions.moveFn = zoomMove;\n          dragOptions.doneFn = zoomDone;\n\n          // zoomMove takes care of the threshold, but we need to\n          // minimize this so that constrained zoom boxes will flip\n          // orientation at the right place\n          dragOptions.minDrag = 1;\n          zoomPrep(e, startX, startY);\n        } else if (dragModeNow === 'pan') {\n          dragOptions.moveFn = plotDrag;\n          dragOptions.doneFn = dragTail;\n        }\n      }\n    }\n    gd._fullLayout._redrag = function () {\n      var dragDataNow = gd._dragdata;\n      if (dragDataNow && dragDataNow.element === dragger) {\n        var dragModeNow = gd._fullLayout.dragmode;\n        if (!selectingOrDrawing(dragModeNow)) {\n          recomputeAxisLists();\n          updateSubplots([0, 0, pw, ph]);\n          dragOptions.moveFn(dragDataNow.dx, dragDataNow.dy);\n        }\n      }\n    };\n  };\n  function clearAndResetSelect() {\n    // clear selection polygon cache (if any)\n    dragOptions.plotinfo.selection = false;\n    // clear selection outlines\n    clearOutline(gd);\n  }\n  function clickFn(numClicks, evt) {\n    var gd = dragOptions.gd;\n    if (gd._fullLayout._activeShapeIndex >= 0) {\n      gd._fullLayout._deactivateShape(gd);\n      return;\n    }\n    var clickmode = gd._fullLayout.clickmode;\n    removeZoombox(gd);\n    if (numClicks === 2 && !singleEnd) doubleClick();\n    if (isMainDrag) {\n      if (clickmode.indexOf('select') > -1) {\n        selectOnClick(evt, gd, xaxes, yaxes, plotinfo.id, dragOptions);\n      }\n      if (clickmode.indexOf('event') > -1) {\n        Fx.click(gd, evt, plotinfo.id);\n      }\n    } else if (numClicks === 1 && singleEnd) {\n      var ax = ns ? ya0 : xa0;\n      var end = ns === 's' || ew === 'w' ? 0 : 1;\n      var attrStr = ax._name + '.range[' + end + ']';\n      var initialText = getEndText(ax, end);\n      var hAlign = 'left';\n      var vAlign = 'middle';\n      if (ax.fixedrange) return;\n      if (ns) {\n        vAlign = ns === 'n' ? 'top' : 'bottom';\n        if (ax.side === 'right') hAlign = 'right';\n      } else if (ew === 'e') hAlign = 'right';\n      if (gd._context.showAxisRangeEntryBoxes) {\n        d3.select(dragger).call(svgTextUtils.makeEditable, {\n          gd: gd,\n          immediate: true,\n          background: gd._fullLayout.paper_bgcolor,\n          text: String(initialText),\n          fill: ax.tickfont ? ax.tickfont.color : '#444',\n          horizontalAlign: hAlign,\n          verticalAlign: vAlign\n        }).on('edit', function (text) {\n          var v = ax.d2r(text);\n          if (v !== undefined) {\n            Registry.call('_guiRelayout', gd, attrStr, v);\n          }\n        });\n      }\n    }\n  }\n  dragElement.init(dragOptions);\n\n  // x/y px position at start of drag\n  var x0, y0;\n  // bbox object of the zoombox\n  var box;\n  // luminance of bg behind zoombox\n  var lum;\n  // zoombox path outline\n  var path0;\n  // is zoombox dimmed (during drag)\n  var dimmed;\n  // 'x'-only, 'y' or 'xy' zooming\n  var zoomMode;\n  // zoombox d3 selection\n  var zb;\n  // zoombox corner d3 selection\n  var corners;\n  // zoom takes over minDrag, so it also has to take over gd._dragged\n  var zoomDragged;\n  function zoomPrep(e, startX, startY) {\n    var dragBBox = dragger.getBoundingClientRect();\n    x0 = startX - dragBBox.left;\n    y0 = startY - dragBBox.top;\n    gd._fullLayout._calcInverseTransform(gd);\n    var transformedCoords = Lib.apply3DTransform(gd._fullLayout._invTransform)(x0, y0);\n    x0 = transformedCoords[0];\n    y0 = transformedCoords[1];\n    box = {\n      l: x0,\n      r: x0,\n      w: 0,\n      t: y0,\n      b: y0,\n      h: 0\n    };\n    lum = gd._hmpixcount ? gd._hmlumcount / gd._hmpixcount : tinycolor(gd._fullLayout.plot_bgcolor).getLuminance();\n    path0 = 'M0,0H' + pw + 'V' + ph + 'H0V0';\n    dimmed = false;\n    zoomMode = 'xy';\n    zoomDragged = false;\n    zb = makeZoombox(zoomlayer, lum, xs, ys, path0);\n    corners = makeCorners(zoomlayer, xs, ys);\n  }\n  function zoomMove(dx0, dy0) {\n    if (gd._transitioningWithDuration) {\n      return false;\n    }\n    var x1 = Math.max(0, Math.min(pw, scaleX * dx0 + x0));\n    var y1 = Math.max(0, Math.min(ph, scaleY * dy0 + y0));\n    var dx = Math.abs(x1 - x0);\n    var dy = Math.abs(y1 - y0);\n    box.l = Math.min(x0, x1);\n    box.r = Math.max(x0, x1);\n    box.t = Math.min(y0, y1);\n    box.b = Math.max(y0, y1);\n    function noZoom() {\n      zoomMode = '';\n      box.r = box.l;\n      box.t = box.b;\n      corners.attr('d', 'M0,0Z');\n    }\n    if (links.isSubplotConstrained) {\n      if (dx > MINZOOM || dy > MINZOOM) {\n        zoomMode = 'xy';\n        if (dx / pw > dy / ph) {\n          dy = dx * ph / pw;\n          if (y0 > y1) box.t = y0 - dy;else box.b = y0 + dy;\n        } else {\n          dx = dy * pw / ph;\n          if (x0 > x1) box.l = x0 - dx;else box.r = x0 + dx;\n        }\n        corners.attr('d', xyCorners(box));\n      } else {\n        noZoom();\n      }\n    } else if (matches.isSubplotConstrained) {\n      if (dx > MINZOOM || dy > MINZOOM) {\n        zoomMode = 'xy';\n        var r0 = Math.min(box.l / pw, (ph - box.b) / ph);\n        var r1 = Math.max(box.r / pw, (ph - box.t) / ph);\n        box.l = r0 * pw;\n        box.r = r1 * pw;\n        box.b = (1 - r0) * ph;\n        box.t = (1 - r1) * ph;\n        corners.attr('d', xyCorners(box));\n      } else {\n        noZoom();\n      }\n    } else if (!yActive || dy < Math.min(Math.max(dx * 0.6, MINDRAG), MINZOOM)) {\n      // look for small drags in one direction or the other,\n      // and only drag the other axis\n\n      if (dx < MINDRAG || !xActive) {\n        noZoom();\n      } else {\n        box.t = 0;\n        box.b = ph;\n        zoomMode = 'x';\n        corners.attr('d', xCorners(box, y0));\n      }\n    } else if (!xActive || dx < Math.min(dy * 0.6, MINZOOM)) {\n      box.l = 0;\n      box.r = pw;\n      zoomMode = 'y';\n      corners.attr('d', yCorners(box, x0));\n    } else {\n      zoomMode = 'xy';\n      corners.attr('d', xyCorners(box));\n    }\n    box.w = box.r - box.l;\n    box.h = box.b - box.t;\n    if (zoomMode) zoomDragged = true;\n    gd._dragged = zoomDragged;\n    updateZoombox(zb, corners, box, path0, dimmed, lum);\n    computeZoomUpdates();\n    gd.emit('plotly_relayouting', updates);\n    dimmed = true;\n  }\n  function computeZoomUpdates() {\n    updates = {};\n\n    // TODO: edit linked axes in zoomAxRanges and in dragTail\n    if (zoomMode === 'xy' || zoomMode === 'x') {\n      zoomAxRanges(xaxes, box.l / pw, box.r / pw, updates, links.xaxes);\n      updateMatchedAxRange('x', updates);\n    }\n    if (zoomMode === 'xy' || zoomMode === 'y') {\n      zoomAxRanges(yaxes, (ph - box.b) / ph, (ph - box.t) / ph, updates, links.yaxes);\n      updateMatchedAxRange('y', updates);\n    }\n  }\n  function zoomDone() {\n    computeZoomUpdates();\n    removeZoombox(gd);\n    dragTail();\n    showDoubleClickNotifier(gd);\n  }\n\n  // scroll zoom, on all draggers except corners\n  var scrollViewBox = [0, 0, pw, ph];\n  // wait a little after scrolling before redrawing\n  var redrawTimer = null;\n  var REDRAWDELAY = constants.REDRAWDELAY;\n  var mainplot = plotinfo.mainplot ? gd._fullLayout._plots[plotinfo.mainplot] : plotinfo;\n  function zoomWheel(e) {\n    // deactivate mousewheel scrolling on embedded graphs\n    // devs can override this with layout._enablescrollzoom,\n    // but _ ensures this setting won't leave their page\n    if (!gd._context._scrollZoom.cartesian && !gd._fullLayout._enablescrollzoom) {\n      return;\n    }\n    clearAndResetSelect();\n\n    // If a transition is in progress, then disable any behavior:\n    if (gd._transitioningWithDuration) {\n      e.preventDefault();\n      e.stopPropagation();\n      return;\n    }\n    recomputeAxisLists();\n    clearTimeout(redrawTimer);\n    var wheelDelta = -e.deltaY;\n    if (!isFinite(wheelDelta)) wheelDelta = e.wheelDelta / 10;\n    if (!isFinite(wheelDelta)) {\n      Lib.log('Did not find wheel motion attributes: ', e);\n      return;\n    }\n    var zoom = Math.exp(-Math.min(Math.max(wheelDelta, -20), 20) / 200);\n    var gbb = mainplot.draglayer.select('.nsewdrag').node().getBoundingClientRect();\n    var xfrac = (e.clientX - gbb.left) / gbb.width;\n    var yfrac = (gbb.bottom - e.clientY) / gbb.height;\n    var i;\n    function zoomWheelOneAxis(ax, centerFraction, zoom) {\n      if (ax.fixedrange) return;\n      var axRange = Lib.simpleMap(ax.range, ax.r2l);\n      var v0 = axRange[0] + (axRange[1] - axRange[0]) * centerFraction;\n      function doZoom(v) {\n        return ax.l2r(v0 + (v - v0) * zoom);\n      }\n      ax.range = axRange.map(doZoom);\n    }\n    if (editX) {\n      // if we're only zooming this axis because of constraints,\n      // zoom it about the center\n      if (!ew) xfrac = 0.5;\n      for (i = 0; i < xaxes.length; i++) {\n        zoomWheelOneAxis(xaxes[i], xfrac, zoom);\n      }\n      updateMatchedAxRange('x');\n      scrollViewBox[2] *= zoom;\n      scrollViewBox[0] += scrollViewBox[2] * xfrac * (1 / zoom - 1);\n    }\n    if (editY) {\n      if (!ns) yfrac = 0.5;\n      for (i = 0; i < yaxes.length; i++) {\n        zoomWheelOneAxis(yaxes[i], yfrac, zoom);\n      }\n      updateMatchedAxRange('y');\n      scrollViewBox[3] *= zoom;\n      scrollViewBox[1] += scrollViewBox[3] * (1 - yfrac) * (1 / zoom - 1);\n    }\n\n    // viewbox redraw at first\n    updateSubplots(scrollViewBox);\n    ticksAndAnnotations();\n    gd.emit('plotly_relayouting', updates);\n\n    // then replot after a delay to make sure\n    // no more scrolling is coming\n    redrawTimer = setTimeout(function () {\n      if (!gd._fullLayout) return;\n      scrollViewBox = [0, 0, pw, ph];\n      dragTail();\n    }, REDRAWDELAY);\n    e.preventDefault();\n    return;\n  }\n\n  // everything but the corners gets wheel zoom\n  if (ns.length * ew.length !== 1) {\n    attachWheelEventHandler(dragger, zoomWheel);\n  }\n\n  // plotDrag: move the plot in response to a drag\n  function plotDrag(dx, dy) {\n    dx = dx * scaleX;\n    dy = dy * scaleY;\n    // If a transition is in progress, then disable any behavior:\n    if (gd._transitioningWithDuration) {\n      return;\n    }\n\n    // prevent axis drawing from monkeying with margins until we're done\n    gd._fullLayout._replotting = true;\n    if (xActive === 'ew' || yActive === 'ns') {\n      var spDx = xActive ? -dx : 0;\n      var spDy = yActive ? -dy : 0;\n      if (matches.isSubplotConstrained) {\n        if (xActive && yActive) {\n          var frac = (dx / pw - dy / ph) / 2;\n          dx = frac * pw;\n          dy = -frac * ph;\n          spDx = -dx;\n          spDy = -dy;\n        }\n        if (yActive) {\n          spDx = -spDy * pw / ph;\n        } else {\n          spDy = -spDx * ph / pw;\n        }\n      }\n      if (xActive) {\n        dragAxList(xaxes, dx);\n        updateMatchedAxRange('x');\n      }\n      if (yActive) {\n        dragAxList(yaxes, dy);\n        updateMatchedAxRange('y');\n      }\n      updateSubplots([spDx, spDy, pw, ph]);\n      ticksAndAnnotations();\n      gd.emit('plotly_relayouting', updates);\n      return;\n    }\n\n    // dz: set a new value for one end (0 or 1) of an axis array axArray,\n    // and return a pixel shift for that end for the viewbox\n    // based on pixel drag distance d\n    // TODO: this makes (generally non-fatal) errors when you get\n    // near floating point limits\n    function dz(axArray, end, d) {\n      var otherEnd = 1 - end;\n      var movedAx;\n      var newLinearizedEnd;\n      for (var i = 0; i < axArray.length; i++) {\n        var axi = axArray[i];\n        if (axi.fixedrange) continue;\n        movedAx = axi;\n        newLinearizedEnd = axi._rl[otherEnd] + (axi._rl[end] - axi._rl[otherEnd]) / dZoom(d / axi._length);\n        var newEnd = axi.l2r(newLinearizedEnd);\n\n        // if l2r comes back false or undefined, it means we've dragged off\n        // the end of valid ranges - so stop.\n        if (newEnd !== false && newEnd !== undefined) axi.range[end] = newEnd;\n      }\n      return movedAx._length * (movedAx._rl[end] - newLinearizedEnd) / (movedAx._rl[end] - movedAx._rl[otherEnd]);\n    }\n    var dxySign = xActive === 'w' === (yActive === 'n') ? 1 : -1;\n    if (xActive && yActive && (links.isSubplotConstrained || matches.isSubplotConstrained)) {\n      // dragging a corner of a constrained subplot:\n      // respect the fixed corner, but harmonize dx and dy\n      var dxyFraction = (dx / pw + dxySign * dy / ph) / 2;\n      dx = dxyFraction * pw;\n      dy = dxySign * dxyFraction * ph;\n    }\n    var xStart, yStart;\n    if (xActive === 'w') dx = dz(xaxes, 0, dx);else if (xActive === 'e') dx = dz(xaxes, 1, -dx);else if (!xActive) dx = 0;\n    if (yActive === 'n') dy = dz(yaxes, 1, dy);else if (yActive === 's') dy = dz(yaxes, 0, -dy);else if (!yActive) dy = 0;\n    xStart = xActive === 'w' ? dx : 0;\n    yStart = yActive === 'n' ? dy : 0;\n    if (links.isSubplotConstrained && !matches.isSubplotConstrained ||\n    // NW or SE on matching axes - create a symmetric zoom\n    matches.isSubplotConstrained && xActive && yActive && dxySign > 0) {\n      var i;\n      if (matches.isSubplotConstrained || !xActive && yActive.length === 1) {\n        // dragging one end of the y axis of a constrained subplot\n        // scale the other axis the same about its middle\n        for (i = 0; i < xaxes.length; i++) {\n          xaxes[i].range = xaxes[i]._r.slice();\n          scaleZoom(xaxes[i], 1 - dy / ph);\n        }\n        dx = dy * pw / ph;\n        xStart = dx / 2;\n      }\n      if (matches.isSubplotConstrained || !yActive && xActive.length === 1) {\n        for (i = 0; i < yaxes.length; i++) {\n          yaxes[i].range = yaxes[i]._r.slice();\n          scaleZoom(yaxes[i], 1 - dx / pw);\n        }\n        dy = dx * ph / pw;\n        yStart = dy / 2;\n      }\n    }\n    if (!matches.isSubplotConstrained || !yActive) {\n      updateMatchedAxRange('x');\n    }\n    if (!matches.isSubplotConstrained || !xActive) {\n      updateMatchedAxRange('y');\n    }\n    var xSize = pw - dx;\n    var ySize = ph - dy;\n    if (matches.isSubplotConstrained && !(xActive && yActive)) {\n      if (xActive) {\n        yStart = xStart ? 0 : dx * ph / pw;\n        ySize = xSize * ph / pw;\n      } else {\n        xStart = yStart ? 0 : dy * pw / ph;\n        xSize = ySize * pw / ph;\n      }\n    }\n    updateSubplots([xStart, yStart, xSize, ySize]);\n    ticksAndAnnotations();\n    gd.emit('plotly_relayouting', updates);\n  }\n  function updateMatchedAxRange(axLetter, out) {\n    var matchedAxes = matches.isSubplotConstrained ? {\n      x: yaxes,\n      y: xaxes\n    }[axLetter] : matches[axLetter + 'axes'];\n    var constrainedAxes = matches.isSubplotConstrained ? {\n      x: xaxes,\n      y: yaxes\n    }[axLetter] : [];\n    for (var i = 0; i < matchedAxes.length; i++) {\n      var ax = matchedAxes[i];\n      var axId = ax._id;\n      var axId2 = matches.xLinks[axId] || matches.yLinks[axId];\n      var ax2 = constrainedAxes[0] || xaHash[axId2] || yaHash[axId2];\n      if (ax2) {\n        if (out) {\n          // zoombox case - don't mutate 'range', just add keys in 'updates'\n          out[ax._name + '.range[0]'] = out[ax2._name + '.range[0]'];\n          out[ax._name + '.range[1]'] = out[ax2._name + '.range[1]'];\n        } else {\n          ax.range = ax2.range.slice();\n        }\n      }\n    }\n  }\n\n  // Draw ticks and annotations (and other components) when ranges change.\n  // Also records the ranges that have changed for use by update at the end.\n  function ticksAndAnnotations() {\n    var activeAxIds = [];\n    var i;\n    function pushActiveAxIds(axList) {\n      for (i = 0; i < axList.length; i++) {\n        if (!axList[i].fixedrange) activeAxIds.push(axList[i]._id);\n      }\n    }\n    function pushActiveAxIdsSynced(axList, axisType) {\n      for (i = 0; i < axList.length; i++) {\n        var axListI = axList[i];\n        var axListIType = axListI[axisType];\n        if (!axListI.fixedrange && axListIType.tickmode === 'sync') activeAxIds.push(axListIType._id);\n      }\n    }\n    if (editX) {\n      pushActiveAxIds(xaxes);\n      pushActiveAxIds(links.xaxes);\n      pushActiveAxIds(matches.xaxes);\n      pushActiveAxIdsSynced(plotinfo.overlays, 'xaxis');\n    }\n    if (editY) {\n      pushActiveAxIds(yaxes);\n      pushActiveAxIds(links.yaxes);\n      pushActiveAxIds(matches.yaxes);\n      pushActiveAxIdsSynced(plotinfo.overlays, 'yaxis');\n    }\n    updates = {};\n    for (i = 0; i < activeAxIds.length; i++) {\n      var axId = activeAxIds[i];\n      var ax = getFromId(gd, axId);\n      Axes.drawOne(gd, ax, {\n        skipTitle: true\n      });\n      updates[ax._name + '.range[0]'] = ax.range[0];\n      updates[ax._name + '.range[1]'] = ax.range[1];\n    }\n    Axes.redrawComponents(gd, activeAxIds);\n  }\n  function doubleClick() {\n    if (gd._transitioningWithDuration) return;\n    var doubleClickConfig = gd._context.doubleClick;\n    var axList = [];\n    if (xActive) axList = axList.concat(xaxes);\n    if (yActive) axList = axList.concat(yaxes);\n    if (matches.xaxes) axList = axList.concat(matches.xaxes);\n    if (matches.yaxes) axList = axList.concat(matches.yaxes);\n    var attrs = {};\n    var ax, i, rangeInitial;\n\n    // For reset+autosize mode:\n    // If *any* of the main axes is not at its initial range\n    // (or autoranged, if we have no initial range, to match the logic in\n    // doubleClickConfig === 'reset' below), we reset.\n    // If they are *all* at their initial ranges, then we autosize.\n    if (doubleClickConfig === 'reset+autosize') {\n      doubleClickConfig = 'autosize';\n      for (i = 0; i < axList.length; i++) {\n        ax = axList[i];\n        if (ax._rangeInitial && (ax.range[0] !== ax._rangeInitial[0] || ax.range[1] !== ax._rangeInitial[1]) || !ax._rangeInitial && !ax.autorange) {\n          doubleClickConfig = 'reset';\n          break;\n        }\n      }\n    }\n    if (doubleClickConfig === 'autosize') {\n      // don't set the linked axes here, so relayout marks them as shrinkable\n      // and we autosize just to the requested axis/axes\n      for (i = 0; i < axList.length; i++) {\n        ax = axList[i];\n        if (!ax.fixedrange) attrs[ax._name + '.autorange'] = true;\n      }\n    } else if (doubleClickConfig === 'reset') {\n      // when we're resetting, reset all linked axes too, so we get back\n      // to the fully-auto-with-constraints situation\n      if (xActive || links.isSubplotConstrained) axList = axList.concat(links.xaxes);\n      if (yActive && !links.isSubplotConstrained) axList = axList.concat(links.yaxes);\n      if (links.isSubplotConstrained) {\n        if (!xActive) axList = axList.concat(xaxes);else if (!yActive) axList = axList.concat(yaxes);\n      }\n      for (i = 0; i < axList.length; i++) {\n        ax = axList[i];\n        if (!ax.fixedrange) {\n          if (!ax._rangeInitial) {\n            attrs[ax._name + '.autorange'] = true;\n          } else {\n            rangeInitial = ax._rangeInitial;\n            attrs[ax._name + '.range[0]'] = rangeInitial[0];\n            attrs[ax._name + '.range[1]'] = rangeInitial[1];\n          }\n        }\n      }\n    }\n    gd.emit('plotly_doubleclick', null);\n    Registry.call('_guiRelayout', gd, attrs);\n  }\n\n  // dragTail - finish a drag event with a redraw\n  function dragTail() {\n    // put the subplot viewboxes back to default (Because we're going to)\n    // be repositioning the data in the relayout. But DON'T call\n    // ticksAndAnnotations again - it's unnecessary and would overwrite `updates`\n    updateSubplots([0, 0, pw, ph]);\n\n    // since we may have been redrawing some things during the drag, we may have\n    // accumulated MathJax promises - wait for them before we relayout.\n    Lib.syncOrAsync([Plots.previousPromises, function () {\n      gd._fullLayout._replotting = false;\n      Registry.call('_guiRelayout', gd, updates);\n    }], gd);\n  }\n\n  // updateSubplots - find all plot viewboxes that should be\n  // affected by this drag, and update them. look for all plots\n  // sharing an affected axis (including the one being dragged),\n  // includes also scattergl and splom logic.\n  function updateSubplots(viewBox) {\n    var fullLayout = gd._fullLayout;\n    var plotinfos = fullLayout._plots;\n    var subplots = fullLayout._subplots.cartesian;\n    var i, sp, xa, ya;\n    if (hasSplom) {\n      Registry.subplotsRegistry.splom.drag(gd);\n    }\n    if (hasScatterGl) {\n      for (i = 0; i < subplots.length; i++) {\n        sp = plotinfos[subplots[i]];\n        xa = sp.xaxis;\n        ya = sp.yaxis;\n        if (sp._scene) {\n          var xrng = Lib.simpleMap(xa.range, xa.r2l);\n          var yrng = Lib.simpleMap(ya.range, ya.r2l);\n          sp._scene.update({\n            range: [xrng[0], yrng[0], xrng[1], yrng[1]]\n          });\n        }\n      }\n    }\n    if (hasSplom || hasScatterGl) {\n      clearGlCanvases(gd);\n      redrawReglTraces(gd);\n    }\n    if (hasSVG) {\n      var xScaleFactor = viewBox[2] / xa0._length;\n      var yScaleFactor = viewBox[3] / ya0._length;\n      for (i = 0; i < subplots.length; i++) {\n        sp = plotinfos[subplots[i]];\n        xa = sp.xaxis;\n        ya = sp.yaxis;\n        var editX2 = (editX || matches.isSubplotConstrained) && !xa.fixedrange && xaHash[xa._id];\n        var editY2 = (editY || matches.isSubplotConstrained) && !ya.fixedrange && yaHash[ya._id];\n        var xScaleFactor2, yScaleFactor2;\n        var clipDx, clipDy;\n        if (editX2) {\n          xScaleFactor2 = xScaleFactor;\n          clipDx = ew || matches.isSubplotConstrained ? viewBox[0] : getShift(xa, xScaleFactor2);\n        } else if (matches.xaHash[xa._id]) {\n          xScaleFactor2 = xScaleFactor;\n          clipDx = viewBox[0] * xa._length / xa0._length;\n        } else if (matches.yaHash[xa._id]) {\n          xScaleFactor2 = yScaleFactor;\n          clipDx = yActive === 'ns' ? -viewBox[1] * xa._length / ya0._length : getShift(xa, xScaleFactor2, {\n            n: 'top',\n            s: 'bottom'\n          }[yActive]);\n        } else {\n          xScaleFactor2 = getLinkedScaleFactor(xa, xScaleFactor, yScaleFactor);\n          clipDx = scaleAndGetShift(xa, xScaleFactor2);\n        }\n        if (editY2) {\n          yScaleFactor2 = yScaleFactor;\n          clipDy = ns || matches.isSubplotConstrained ? viewBox[1] : getShift(ya, yScaleFactor2);\n        } else if (matches.yaHash[ya._id]) {\n          yScaleFactor2 = yScaleFactor;\n          clipDy = viewBox[1] * ya._length / ya0._length;\n        } else if (matches.xaHash[ya._id]) {\n          yScaleFactor2 = xScaleFactor;\n          clipDy = xActive === 'ew' ? -viewBox[0] * ya._length / xa0._length : getShift(ya, yScaleFactor2, {\n            e: 'right',\n            w: 'left'\n          }[xActive]);\n        } else {\n          yScaleFactor2 = getLinkedScaleFactor(ya, xScaleFactor, yScaleFactor);\n          clipDy = scaleAndGetShift(ya, yScaleFactor2);\n        }\n\n        // don't scale at all if neither axis is scalable here\n        if (!xScaleFactor2 && !yScaleFactor2) {\n          continue;\n        }\n\n        // but if only one is, reset the other axis scaling\n        if (!xScaleFactor2) xScaleFactor2 = 1;\n        if (!yScaleFactor2) yScaleFactor2 = 1;\n        var plotDx = xa._offset - clipDx / xScaleFactor2;\n        var plotDy = ya._offset - clipDy / yScaleFactor2;\n\n        // TODO could be more efficient here:\n        // setTranslate and setScale do a lot of extra work\n        // when working independently, should perhaps combine\n        // them into a single routine.\n        sp.clipRect.call(Drawing.setTranslate, clipDx, clipDy).call(Drawing.setScale, xScaleFactor2, yScaleFactor2);\n        sp.plot.call(Drawing.setTranslate, plotDx, plotDy).call(Drawing.setScale, 1 / xScaleFactor2, 1 / yScaleFactor2);\n\n        // apply an inverse scale to individual points to counteract\n        // the scale of the trace group.\n        // apply only when scale changes, as adjusting the scale of\n        // all the points can be expansive.\n        if (xScaleFactor2 !== sp.xScaleFactor || yScaleFactor2 !== sp.yScaleFactor) {\n          Drawing.setPointGroupScale(sp.zoomScalePts, xScaleFactor2, yScaleFactor2);\n          Drawing.setTextPointsScale(sp.zoomScaleTxt, xScaleFactor2, yScaleFactor2);\n        }\n        Drawing.hideOutsideRangePoints(sp.clipOnAxisFalseTraces, sp);\n\n        // update x/y scaleFactor stash\n        sp.xScaleFactor = xScaleFactor2;\n        sp.yScaleFactor = yScaleFactor2;\n      }\n    }\n  }\n\n  // Find the appropriate scaling for this axis, if it's linked to the\n  // dragged axes by constraints. 0 is special, it means this axis shouldn't\n  // ever be scaled (will be converted to 1 if the other axis is scaled)\n  function getLinkedScaleFactor(ax, xScaleFactor, yScaleFactor) {\n    if (ax.fixedrange) return 0;\n    if (editX && links.xaHash[ax._id]) {\n      return xScaleFactor;\n    }\n    if (editY && (links.isSubplotConstrained ? links.xaHash : links.yaHash)[ax._id]) {\n      return yScaleFactor;\n    }\n    return 0;\n  }\n  function scaleAndGetShift(ax, scaleFactor) {\n    if (scaleFactor) {\n      ax.range = ax._r.slice();\n      scaleZoom(ax, scaleFactor);\n      return getShift(ax, scaleFactor);\n    }\n    return 0;\n  }\n  function getShift(ax, scaleFactor, from) {\n    return ax._length * (1 - scaleFactor) * FROM_TL[from || ax.constraintoward || 'middle'];\n  }\n  return dragger;\n}\nfunction makeDragger(plotinfo, nodeName, dragClass, cursor) {\n  var dragger3 = Lib.ensureSingle(plotinfo.draglayer, nodeName, dragClass, function (s) {\n    s.classed('drag', true).style({\n      fill: 'transparent',\n      'stroke-width': 0\n    }).attr('data-subplot', plotinfo.id);\n  });\n  dragger3.call(setCursor, cursor);\n  return dragger3.node();\n}\nfunction makeRectDragger(plotinfo, dragClass, cursor, x, y, w, h) {\n  var dragger = makeDragger(plotinfo, 'rect', dragClass, cursor);\n  d3.select(dragger).call(Drawing.setRect, x, y, w, h);\n  return dragger;\n}\nfunction isDirectionActive(axList, activeVal) {\n  for (var i = 0; i < axList.length; i++) {\n    if (!axList[i].fixedrange) return activeVal;\n  }\n  return '';\n}\nfunction getEndText(ax, end) {\n  var initialVal = ax.range[end];\n  var diff = Math.abs(initialVal - ax.range[1 - end]);\n  var dig;\n\n  // TODO: this should basically be ax.r2d but we're doing extra\n  // rounding here... can we clean up at all?\n  if (ax.type === 'date') {\n    return initialVal;\n  } else if (ax.type === 'log') {\n    dig = Math.ceil(Math.max(0, -Math.log(diff) / Math.LN10)) + 3;\n    return numberFormat('.' + dig + 'g')(Math.pow(10, initialVal));\n  } else {\n    // linear numeric (or category... but just show numbers here)\n    dig = Math.floor(Math.log(Math.abs(initialVal)) / Math.LN10) - Math.floor(Math.log(diff) / Math.LN10) + 4;\n    return numberFormat('.' + String(dig) + 'g')(initialVal);\n  }\n}\nfunction zoomAxRanges(axList, r0Fraction, r1Fraction, updates, linkedAxes) {\n  for (var i = 0; i < axList.length; i++) {\n    var axi = axList[i];\n    if (axi.fixedrange) continue;\n    if (axi.rangebreaks) {\n      var isY = axi._id.charAt(0) === 'y';\n      var r0F = isY ? 1 - r0Fraction : r0Fraction;\n      var r1F = isY ? 1 - r1Fraction : r1Fraction;\n      updates[axi._name + '.range[0]'] = axi.l2r(axi.p2l(r0F * axi._length));\n      updates[axi._name + '.range[1]'] = axi.l2r(axi.p2l(r1F * axi._length));\n    } else {\n      var axRangeLinear0 = axi._rl[0];\n      var axRangeLinearSpan = axi._rl[1] - axRangeLinear0;\n      updates[axi._name + '.range[0]'] = axi.l2r(axRangeLinear0 + axRangeLinearSpan * r0Fraction);\n      updates[axi._name + '.range[1]'] = axi.l2r(axRangeLinear0 + axRangeLinearSpan * r1Fraction);\n    }\n  }\n\n  // zoom linked axes about their centers\n  if (linkedAxes && linkedAxes.length) {\n    var linkedR0Fraction = (r0Fraction + (1 - r1Fraction)) / 2;\n    zoomAxRanges(linkedAxes, linkedR0Fraction, 1 - linkedR0Fraction, updates, []);\n  }\n}\nfunction dragAxList(axList, pix) {\n  for (var i = 0; i < axList.length; i++) {\n    var axi = axList[i];\n    if (!axi.fixedrange) {\n      if (axi.rangebreaks) {\n        var p0 = 0;\n        var p1 = axi._length;\n        var d0 = axi.p2l(p0 + pix) - axi.p2l(p0);\n        var d1 = axi.p2l(p1 + pix) - axi.p2l(p1);\n        var delta = (d0 + d1) / 2;\n        axi.range = [axi.l2r(axi._rl[0] - delta), axi.l2r(axi._rl[1] - delta)];\n      } else {\n        axi.range = [axi.l2r(axi._rl[0] - pix / axi._m), axi.l2r(axi._rl[1] - pix / axi._m)];\n      }\n    }\n  }\n}\n\n// common transform for dragging one end of an axis\n// d>0 is compressing scale (cursor is over the plot,\n//  the axis end should move with the cursor)\n// d<0 is expanding (cursor is off the plot, axis end moves\n//  nonlinearly so you can expand far)\nfunction dZoom(d) {\n  return 1 - (d >= 0 ? Math.min(d, 0.9) : 1 / (1 / Math.max(d, -0.3) + 3.222));\n}\nfunction getDragCursor(nsew, dragmode, isMainDrag) {\n  if (!nsew) return 'pointer';\n  if (nsew === 'nsew') {\n    // in this case here, clear cursor and\n    // use the cursor style set on <g .draglayer>\n    if (isMainDrag) return '';\n    if (dragmode === 'pan') return 'move';\n    return 'crosshair';\n  }\n  return nsew.toLowerCase() + '-resize';\n}\nfunction makeZoombox(zoomlayer, lum, xs, ys, path0) {\n  return zoomlayer.append('path').attr('class', 'zoombox').style({\n    'fill': lum > 0.2 ? 'rgba(0,0,0,0)' : 'rgba(255,255,255,0)',\n    'stroke-width': 0\n  }).attr('transform', strTranslate(xs, ys)).attr('d', path0 + 'Z');\n}\nfunction makeCorners(zoomlayer, xs, ys) {\n  return zoomlayer.append('path').attr('class', 'zoombox-corners').style({\n    fill: Color.background,\n    stroke: Color.defaultLine,\n    'stroke-width': 1,\n    opacity: 0\n  }).attr('transform', strTranslate(xs, ys)).attr('d', 'M0,0Z');\n}\nfunction updateZoombox(zb, corners, box, path0, dimmed, lum) {\n  zb.attr('d', path0 + 'M' + box.l + ',' + box.t + 'v' + box.h + 'h' + box.w + 'v-' + box.h + 'h-' + box.w + 'Z');\n  transitionZoombox(zb, corners, dimmed, lum);\n}\nfunction transitionZoombox(zb, corners, dimmed, lum) {\n  if (!dimmed) {\n    zb.transition().style('fill', lum > 0.2 ? 'rgba(0,0,0,0.4)' : 'rgba(255,255,255,0.3)').duration(200);\n    corners.transition().style('opacity', 1).duration(200);\n  }\n}\nfunction removeZoombox(gd) {\n  d3.select(gd).selectAll('.zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners').remove();\n}\nfunction showDoubleClickNotifier(gd) {\n  if (SHOWZOOMOUTTIP && gd.data && gd._context.showTips) {\n    Lib.notifier(Lib._(gd, 'Double-click to zoom back out'), 'long');\n    SHOWZOOMOUTTIP = false;\n  }\n}\nfunction xCorners(box, y0) {\n  return 'M' + (box.l - 0.5) + ',' + (y0 - MINZOOM - 0.5) + 'h-3v' + (2 * MINZOOM + 1) + 'h3ZM' + (box.r + 0.5) + ',' + (y0 - MINZOOM - 0.5) + 'h3v' + (2 * MINZOOM + 1) + 'h-3Z';\n}\nfunction yCorners(box, x0) {\n  return 'M' + (x0 - MINZOOM - 0.5) + ',' + (box.t - 0.5) + 'v-3h' + (2 * MINZOOM + 1) + 'v3ZM' + (x0 - MINZOOM - 0.5) + ',' + (box.b + 0.5) + 'v3h' + (2 * MINZOOM + 1) + 'v-3Z';\n}\nfunction xyCorners(box) {\n  var clen = Math.floor(Math.min(box.b - box.t, box.r - box.l, MINZOOM) / 2);\n  return 'M' + (box.l - 3.5) + ',' + (box.t - 0.5 + clen) + 'h3v' + -clen + 'h' + clen + 'v-3h-' + (clen + 3) + 'ZM' + (box.r + 3.5) + ',' + (box.t - 0.5 + clen) + 'h-3v' + -clen + 'h' + -clen + 'v-3h' + (clen + 3) + 'ZM' + (box.r + 3.5) + ',' + (box.b + 0.5 - clen) + 'h-3v' + clen + 'h' + -clen + 'v3h' + (clen + 3) + 'ZM' + (box.l - 3.5) + ',' + (box.b + 0.5 - clen) + 'h3v' + clen + 'h' + clen + 'v3h-' + (clen + 3) + 'Z';\n}\nfunction calcLinks(gd, groups, xaHash, yaHash, exclude) {\n  var isSubplotConstrained = false;\n  var xLinks = {};\n  var yLinks = {};\n  var xID, yID, xLinkID, yLinkID;\n  var xExclude = (exclude || {}).xaHash;\n  var yExclude = (exclude || {}).yaHash;\n  for (var i = 0; i < groups.length; i++) {\n    var group = groups[i];\n    // check if any of the x axes we're dragging is in this constraint group\n    for (xID in xaHash) {\n      if (group[xID]) {\n        // put the rest of these axes into xLinks, if we're not already\n        // dragging them, so we know to scale these axes automatically too\n        // to match the changes in the dragged x axes\n        for (xLinkID in group) {\n          if (!(exclude && (xExclude[xLinkID] || yExclude[xLinkID])) && !(xLinkID.charAt(0) === 'x' ? xaHash : yaHash)[xLinkID]) {\n            xLinks[xLinkID] = xID;\n          }\n        }\n\n        // check if the x and y axes of THIS drag are linked\n        for (yID in yaHash) {\n          if (!(exclude && (xExclude[yID] || yExclude[yID])) && group[yID]) {\n            isSubplotConstrained = true;\n          }\n        }\n      }\n    }\n\n    // now check if any of the y axes we're dragging is in this constraint group\n    // only look for outside links, as we've already checked for links within the dragger\n    for (yID in yaHash) {\n      if (group[yID]) {\n        for (yLinkID in group) {\n          if (!(exclude && (xExclude[yLinkID] || yExclude[yLinkID])) && !(yLinkID.charAt(0) === 'x' ? xaHash : yaHash)[yLinkID]) {\n            yLinks[yLinkID] = yID;\n          }\n        }\n      }\n    }\n  }\n  if (isSubplotConstrained) {\n    // merge xLinks and yLinks if the subplot is constrained,\n    // since we'll always apply both anyway and the two will contain\n    // duplicates\n    Lib.extendFlat(xLinks, yLinks);\n    yLinks = {};\n  }\n  var xaHashLinked = {};\n  var xaxesLinked = [];\n  for (xLinkID in xLinks) {\n    var xa = getFromId(gd, xLinkID);\n    xaxesLinked.push(xa);\n    xaHashLinked[xa._id] = xa;\n  }\n  var yaHashLinked = {};\n  var yaxesLinked = [];\n  for (yLinkID in yLinks) {\n    var ya = getFromId(gd, yLinkID);\n    yaxesLinked.push(ya);\n    yaHashLinked[ya._id] = ya;\n  }\n  return {\n    xaHash: xaHashLinked,\n    yaHash: yaHashLinked,\n    xaxes: xaxesLinked,\n    yaxes: yaxesLinked,\n    xLinks: xLinks,\n    yLinks: yLinks,\n    isSubplotConstrained: isSubplotConstrained\n  };\n}\n\n// still seems to be some confusion about onwheel vs onmousewheel...\nfunction attachWheelEventHandler(element, handler) {\n  if (!supportsPassive) {\n    if (element.onwheel !== undefined) element.onwheel = handler;else if (element.onmousewheel !== undefined) element.onmousewheel = handler;else if (!element.isAddedWheelEvent) {\n      element.isAddedWheelEvent = true;\n      element.addEventListener('wheel', handler, {\n        passive: false\n      });\n    }\n  } else {\n    var wheelEventName = element.onwheel !== undefined ? 'wheel' : 'mousewheel';\n    if (element._onwheel) {\n      element.removeEventListener(wheelEventName, element._onwheel);\n    }\n    element._onwheel = handler;\n    element.addEventListener(wheelEventName, handler, {\n      passive: false\n    });\n  }\n}\nfunction hashValues(hash) {\n  var out = [];\n  for (var k in hash) out.push(hash[k]);\n  return out;\n}\nmodule.exports = {\n  makeDragBox: makeDragBox,\n  makeDragger: makeDragger,\n  makeRectDragger: makeRectDragger,\n  makeZoombox: makeZoombox,\n  makeCorners: makeCorners,\n  updateZoombox: updateZoombox,\n  xyCorners: xyCorners,\n  transitionZoombox: transitionZoombox,\n  removeZoombox: removeZoombox,\n  showDoubleClickNotifier: showDoubleClickNotifier,\n  attachWheelEventHandler: attachWheelEventHandler\n};\n\n/***/ }),\n\n/***/ 4305:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_1470329__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_1470329__(39898);\nvar Fx = __nested_webpack_require_1470329__(30211);\nvar dragElement = __nested_webpack_require_1470329__(28569);\nvar setCursor = __nested_webpack_require_1470329__(6964);\nvar makeDragBox = (__nested_webpack_require_1470329__(29323).makeDragBox);\nvar DRAGGERSIZE = (__nested_webpack_require_1470329__(85555).DRAGGERSIZE);\nexports.initInteractions = function initInteractions(gd) {\n  var fullLayout = gd._fullLayout;\n  if (gd._context.staticPlot) {\n    // this sweeps up more than just cartesian drag elements...\n    d3.select(gd).selectAll('.drag').remove();\n    return;\n  }\n  if (!fullLayout._has('cartesian') && !fullLayout._has('splom')) return;\n  var subplots = Object.keys(fullLayout._plots || {}).sort(function (a, b) {\n    // sort overlays last, then by x axis number, then y axis number\n    if ((fullLayout._plots[a].mainplot && true) === (fullLayout._plots[b].mainplot && true)) {\n      var aParts = a.split('y');\n      var bParts = b.split('y');\n      return aParts[0] === bParts[0] ? Number(aParts[1] || 1) - Number(bParts[1] || 1) : Number(aParts[0] || 1) - Number(bParts[0] || 1);\n    }\n    return fullLayout._plots[a].mainplot ? 1 : -1;\n  });\n  subplots.forEach(function (subplot) {\n    var plotinfo = fullLayout._plots[subplot];\n    var xa = plotinfo.xaxis;\n    var ya = plotinfo.yaxis;\n\n    // main and corner draggers need not be repeated for\n    // overlaid subplots - these draggers drag them all\n    if (!plotinfo.mainplot) {\n      // main dragger goes over the grids and data, so we use its\n      // mousemove events for all data hover effects\n      var maindrag = makeDragBox(gd, plotinfo, xa._offset, ya._offset, xa._length, ya._length, 'ns', 'ew');\n      maindrag.onmousemove = function (evt) {\n        // This is on `gd._fullLayout`, *not* fullLayout because the reference\n        // changes by the time this is called again.\n        gd._fullLayout._rehover = function () {\n          if (gd._fullLayout._hoversubplot === subplot && gd._fullLayout._plots[subplot]) {\n            Fx.hover(gd, evt, subplot);\n          }\n        };\n        Fx.hover(gd, evt, subplot);\n\n        // Note that we have *not* used the cached fullLayout variable here\n        // since that may be outdated when this is called as a callback later on\n        gd._fullLayout._lasthover = maindrag;\n        gd._fullLayout._hoversubplot = subplot;\n      };\n\n      /*\n       * IMPORTANT:\n       * We must check for the presence of the drag cover here.\n       * If we don't, a 'mouseout' event is triggered on the\n       * maindrag before each 'click' event, which has the effect\n       * of clearing the hoverdata; thus, cancelling the click event.\n       */\n      maindrag.onmouseout = function (evt) {\n        if (gd._dragging) return;\n\n        // When the mouse leaves this maindrag, unset the hovered subplot.\n        // This may cause problems if it leaves the subplot directly *onto*\n        // another subplot, but that's a tiny corner case at the moment.\n        gd._fullLayout._hoversubplot = null;\n        dragElement.unhover(gd, evt);\n      };\n\n      // corner draggers\n      if (gd._context.showAxisDragHandles) {\n        makeDragBox(gd, plotinfo, xa._offset - DRAGGERSIZE, ya._offset - DRAGGERSIZE, DRAGGERSIZE, DRAGGERSIZE, 'n', 'w');\n        makeDragBox(gd, plotinfo, xa._offset + xa._length, ya._offset - DRAGGERSIZE, DRAGGERSIZE, DRAGGERSIZE, 'n', 'e');\n        makeDragBox(gd, plotinfo, xa._offset - DRAGGERSIZE, ya._offset + ya._length, DRAGGERSIZE, DRAGGERSIZE, 's', 'w');\n        makeDragBox(gd, plotinfo, xa._offset + xa._length, ya._offset + ya._length, DRAGGERSIZE, DRAGGERSIZE, 's', 'e');\n      }\n    }\n    if (gd._context.showAxisDragHandles) {\n      // x axis draggers - if you have overlaid plots,\n      // these drag each axis separately\n      if (subplot === xa._mainSubplot) {\n        // the y position of the main x axis line\n        var y0 = xa._mainLinePosition;\n        if (xa.side === 'top') y0 -= DRAGGERSIZE;\n        makeDragBox(gd, plotinfo, xa._offset + xa._length * 0.1, y0, xa._length * 0.8, DRAGGERSIZE, '', 'ew');\n        makeDragBox(gd, plotinfo, xa._offset, y0, xa._length * 0.1, DRAGGERSIZE, '', 'w');\n        makeDragBox(gd, plotinfo, xa._offset + xa._length * 0.9, y0, xa._length * 0.1, DRAGGERSIZE, '', 'e');\n      }\n      // y axis draggers\n      if (subplot === ya._mainSubplot) {\n        // the x position of the main y axis line\n        var x0 = ya._mainLinePosition;\n        if (ya.side !== 'right') x0 -= DRAGGERSIZE;\n        makeDragBox(gd, plotinfo, x0, ya._offset + ya._length * 0.1, DRAGGERSIZE, ya._length * 0.8, 'ns', '');\n        makeDragBox(gd, plotinfo, x0, ya._offset + ya._length * 0.9, DRAGGERSIZE, ya._length * 0.1, 's', '');\n        makeDragBox(gd, plotinfo, x0, ya._offset, DRAGGERSIZE, ya._length * 0.1, 'n', '');\n      }\n    }\n  });\n\n  // In case you mousemove over some hovertext, send it to Fx.hover too\n  // we do this so that we can put the hover text in front of everything,\n  // but still be able to interact with everything as if it isn't there\n  var hoverLayer = fullLayout._hoverlayer.node();\n  hoverLayer.onmousemove = function (evt) {\n    evt.target = gd._fullLayout._lasthover;\n    Fx.hover(gd, evt, fullLayout._hoversubplot);\n  };\n  hoverLayer.onclick = function (evt) {\n    evt.target = gd._fullLayout._lasthover;\n    Fx.click(gd, evt);\n  };\n\n  // also delegate mousedowns... TODO: does this actually work?\n  hoverLayer.onmousedown = function (evt) {\n    gd._fullLayout._lasthover.onmousedown(evt);\n  };\n  exports.updateFx(gd);\n};\n\n// Minimal set of update needed on 'modebar' edits.\n// We only need to update the <g .draglayer> cursor style.\n//\n// Note that changing the axis configuration and/or the fixedrange attribute\n// should trigger a full initInteractions.\nexports.updateFx = function (gd) {\n  var fullLayout = gd._fullLayout;\n  var cursor = fullLayout.dragmode === 'pan' ? 'move' : 'crosshair';\n  setCursor(fullLayout._draggers, cursor);\n};\n\n/***/ }),\n\n/***/ 76325:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1476336__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_1476336__(73972);\nvar Lib = __nested_webpack_require_1476336__(71828);\nvar axisIds = __nested_webpack_require_1476336__(41675);\n\n/**\n * Factory function for checking component arrays for subplot references.\n *\n * @param {string} containerArrayName: the top-level array in gd.layout to check\n *   If an item in this container is found that references a cartesian x and/or y axis,\n *   ensure cartesian is marked as a base plot module and record the axes (and subplot\n *   if both refs are axes) in gd._fullLayout\n *\n * @return {function}: with args layoutIn (gd.layout) and layoutOut (gd._fullLayout)\n * as expected of a component includeBasePlot method\n */\nmodule.exports = function makeIncludeComponents(containerArrayName) {\n  return function includeComponents(layoutIn, layoutOut) {\n    var array = layoutIn[containerArrayName];\n    if (!Array.isArray(array)) return;\n    var Cartesian = Registry.subplotsRegistry.cartesian;\n    var idRegex = Cartesian.idRegex;\n    var subplots = layoutOut._subplots;\n    var xaList = subplots.xaxis;\n    var yaList = subplots.yaxis;\n    var cartesianList = subplots.cartesian;\n    var hasCartesianOrGL2D = layoutOut._has('cartesian') || layoutOut._has('gl2d');\n    for (var i = 0; i < array.length; i++) {\n      var itemi = array[i];\n      if (!Lib.isPlainObject(itemi)) continue;\n\n      // call cleanId because if xref, or yref has something appended\n      // (e.g., ' domain') this will get removed.\n      var xref = axisIds.cleanId(itemi.xref, 'x', false);\n      var yref = axisIds.cleanId(itemi.yref, 'y', false);\n      var hasXref = idRegex.x.test(xref);\n      var hasYref = idRegex.y.test(yref);\n      if (hasXref || hasYref) {\n        if (!hasCartesianOrGL2D) Lib.pushUnique(layoutOut._basePlotModules, Cartesian);\n        var newAxis = false;\n        if (hasXref && xaList.indexOf(xref) === -1) {\n          xaList.push(xref);\n          newAxis = true;\n        }\n        if (hasYref && yaList.indexOf(yref) === -1) {\n          yaList.push(yref);\n          newAxis = true;\n        }\n\n        /*\n         * Notice the logic here: only add a subplot for a component if\n         * it's referencing both x and y axes AND it's creating a new axis\n         * so for example if your plot already has xy and x2y2, an annotation\n         * on x2y or xy2 will not create a new subplot.\n         */\n        if (newAxis && hasXref && hasYref) {\n          cartesianList.push(xref + yref);\n        }\n      }\n    }\n  };\n};\n\n/***/ }),\n\n/***/ 93612:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_1478898__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_1478898__(39898);\nvar Registry = __nested_webpack_require_1478898__(73972);\nvar Lib = __nested_webpack_require_1478898__(71828);\nvar Plots = __nested_webpack_require_1478898__(74875);\nvar Drawing = __nested_webpack_require_1478898__(91424);\nvar getModuleCalcData = (__nested_webpack_require_1478898__(27659)/* .getModuleCalcData */ .a0);\nvar axisIds = __nested_webpack_require_1478898__(41675);\nvar constants = __nested_webpack_require_1478898__(85555);\nvar xmlnsNamespaces = __nested_webpack_require_1478898__(77922);\nvar ensureSingle = Lib.ensureSingle;\nfunction ensureSingleAndAddDatum(parent, nodeType, className) {\n  return Lib.ensureSingle(parent, nodeType, className, function (s) {\n    s.datum(className);\n  });\n}\nexports.name = 'cartesian';\nexports.attr = ['xaxis', 'yaxis'];\nexports.idRoot = ['x', 'y'];\nexports.idRegex = constants.idRegex;\nexports.attrRegex = constants.attrRegex;\nexports.attributes = __nested_webpack_require_1478898__(89502);\nexports.layoutAttributes = __nested_webpack_require_1478898__(13838);\nexports.supplyLayoutDefaults = __nested_webpack_require_1478898__(86763);\nexports.transitionAxes = __nested_webpack_require_1478898__(66847);\nexports.finalizeSubplots = function (layoutIn, layoutOut) {\n  var subplots = layoutOut._subplots;\n  var xList = subplots.xaxis;\n  var yList = subplots.yaxis;\n  var spSVG = subplots.cartesian;\n  var spAll = spSVG.concat(subplots.gl2d || []);\n  var allX = {};\n  var allY = {};\n  var i, xi, yi;\n  for (i = 0; i < spAll.length; i++) {\n    var parts = spAll[i].split('y');\n    allX[parts[0]] = 1;\n    allY['y' + parts[1]] = 1;\n  }\n\n  // check for x axes with no subplot, and make one from the anchor of that x axis\n  for (i = 0; i < xList.length; i++) {\n    xi = xList[i];\n    if (!allX[xi]) {\n      yi = (layoutIn[axisIds.id2name(xi)] || {}).anchor;\n      if (!constants.idRegex.y.test(yi)) yi = 'y';\n      spSVG.push(xi + yi);\n      spAll.push(xi + yi);\n      if (!allY[yi]) {\n        allY[yi] = 1;\n        Lib.pushUnique(yList, yi);\n      }\n    }\n  }\n\n  // same for y axes with no subplot\n  for (i = 0; i < yList.length; i++) {\n    yi = yList[i];\n    if (!allY[yi]) {\n      xi = (layoutIn[axisIds.id2name(yi)] || {}).anchor;\n      if (!constants.idRegex.x.test(xi)) xi = 'x';\n      spSVG.push(xi + yi);\n      spAll.push(xi + yi);\n      if (!allX[xi]) {\n        allX[xi] = 1;\n        Lib.pushUnique(xList, xi);\n      }\n    }\n  }\n\n  // finally, if we've gotten here we're supposed to show cartesian...\n  // so if there are NO subplots at all, make one from the first\n  // x & y axes in the input layout\n  if (!spAll.length) {\n    xi = '';\n    yi = '';\n    for (var ki in layoutIn) {\n      if (constants.attrRegex.test(ki)) {\n        var axLetter = ki.charAt(0);\n        if (axLetter === 'x') {\n          if (!xi || +ki.substr(5) < +xi.substr(5)) {\n            xi = ki;\n          }\n        } else if (!yi || +ki.substr(5) < +yi.substr(5)) {\n          yi = ki;\n        }\n      }\n    }\n    xi = xi ? axisIds.name2id(xi) : 'x';\n    yi = yi ? axisIds.name2id(yi) : 'y';\n    xList.push(xi);\n    yList.push(yi);\n    spSVG.push(xi + yi);\n  }\n};\n\n/**\n * Cartesian.plot\n *\n * @param {DOM div | object} gd\n * @param {array (optional)} traces\n *  array of traces indices to plot\n *  if undefined, plots all cartesian traces,\n * @param {object} (optional) transitionOpts\n *  transition option object\n * @param {function} (optional) makeOnCompleteCallback\n *  transition make callback function from Plots.transition\n */\nexports.plot = function (gd, traces, transitionOpts, makeOnCompleteCallback) {\n  var fullLayout = gd._fullLayout;\n  var subplots = fullLayout._subplots.cartesian;\n  var calcdata = gd.calcdata;\n  var i;\n  if (!Array.isArray(traces)) {\n    // If traces is not provided, then it's a complete replot and missing\n    // traces are removed\n    traces = [];\n    for (i = 0; i < calcdata.length; i++) traces.push(i);\n  }\n  for (i = 0; i < subplots.length; i++) {\n    var subplot = subplots[i];\n    var subplotInfo = fullLayout._plots[subplot];\n\n    // Get all calcdata for this subplot:\n    var cdSubplot = [];\n    var pcd;\n    for (var j = 0; j < calcdata.length; j++) {\n      var cd = calcdata[j];\n      var trace = cd[0].trace;\n\n      // Skip trace if whitelist provided and it's not whitelisted:\n      // if (Array.isArray(traces) && traces.indexOf(i) === -1) continue;\n      if (trace.xaxis + trace.yaxis === subplot) {\n        // XXX: Should trace carpet dependencies. Only replot all carpet plots if the carpet\n        // axis has actually changed:\n        //\n        // If this trace is specifically requested, add it to the list:\n        if (traces.indexOf(trace.index) !== -1 || trace.carpet) {\n          // Okay, so example: traces 0, 1, and 2 have fill = tonext. You animate\n          // traces 0 and 2. Trace 1 also needs to be updated, otherwise its fill\n          // is outdated. So this retroactively adds the previous trace if the\n          // traces are interdependent.\n          if (pcd && pcd[0].trace.xaxis + pcd[0].trace.yaxis === subplot && ['tonextx', 'tonexty', 'tonext'].indexOf(trace.fill) !== -1 && cdSubplot.indexOf(pcd) === -1) {\n            cdSubplot.push(pcd);\n          }\n          cdSubplot.push(cd);\n        }\n\n        // Track the previous trace on this subplot for the retroactive-add step\n        // above:\n        pcd = cd;\n      }\n    }\n    plotOne(gd, subplotInfo, cdSubplot, transitionOpts, makeOnCompleteCallback);\n  }\n};\nfunction plotOne(gd, plotinfo, cdSubplot, transitionOpts, makeOnCompleteCallback) {\n  var traceLayerClasses = constants.traceLayerClasses;\n  var fullLayout = gd._fullLayout;\n  var modules = fullLayout._modules;\n  var _module, cdModuleAndOthers, cdModule;\n  var layerData = [];\n  var zoomScaleQueryParts = [];\n  for (var i = 0; i < modules.length; i++) {\n    _module = modules[i];\n    var name = _module.name;\n    var categories = Registry.modules[name].categories;\n    if (categories.svg) {\n      var className = _module.layerName || name + 'layer';\n      var plotMethod = _module.plot;\n\n      // plot all visible traces of this type on this subplot at once\n      cdModuleAndOthers = getModuleCalcData(cdSubplot, plotMethod);\n      cdModule = cdModuleAndOthers[0];\n      // don't need to search the found traces again - in fact we need to NOT\n      // so that if two modules share the same plotter we don't double-plot\n      cdSubplot = cdModuleAndOthers[1];\n      if (cdModule.length) {\n        layerData.push({\n          i: traceLayerClasses.indexOf(className),\n          className: className,\n          plotMethod: plotMethod,\n          cdModule: cdModule\n        });\n      }\n      if (categories.zoomScale) {\n        zoomScaleQueryParts.push('.' + className);\n      }\n    }\n  }\n  layerData.sort(function (a, b) {\n    return a.i - b.i;\n  });\n  var layers = plotinfo.plot.selectAll('g.mlayer').data(layerData, function (d) {\n    return d.className;\n  });\n  layers.enter().append('g').attr('class', function (d) {\n    return d.className;\n  }).classed('mlayer', true).classed('rangeplot', plotinfo.isRangePlot);\n  layers.exit().remove();\n  layers.order();\n  layers.each(function (d) {\n    var sel = d3.select(this);\n    var className = d.className;\n    d.plotMethod(gd, plotinfo, d.cdModule, sel, transitionOpts, makeOnCompleteCallback);\n\n    // layers that allow `cliponaxis: false`\n    if (constants.clipOnAxisFalseQuery.indexOf('.' + className) === -1) {\n      Drawing.setClipUrl(sel, plotinfo.layerClipId, gd);\n    }\n  });\n\n  // call Scattergl.plot separately\n  if (fullLayout._has('scattergl')) {\n    _module = Registry.getModule('scattergl');\n    cdModule = getModuleCalcData(cdSubplot, _module)[0];\n    _module.plot(gd, plotinfo, cdModule);\n  }\n\n  // stash \"hot\" selections for faster interaction on drag and scroll\n  if (!gd._context.staticPlot) {\n    if (plotinfo._hasClipOnAxisFalse) {\n      plotinfo.clipOnAxisFalseTraces = plotinfo.plot.selectAll(constants.clipOnAxisFalseQuery.join(',')).selectAll('.trace');\n    }\n    if (zoomScaleQueryParts.length) {\n      var traces = plotinfo.plot.selectAll(zoomScaleQueryParts.join(',')).selectAll('.trace');\n      plotinfo.zoomScalePts = traces.selectAll('path.point');\n      plotinfo.zoomScaleTxt = traces.selectAll('.textpoint');\n    }\n  }\n}\nexports.clean = function (newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  var oldPlots = oldFullLayout._plots || {};\n  var newPlots = newFullLayout._plots || {};\n  var oldSubplotList = oldFullLayout._subplots || {};\n  var plotinfo;\n  var i, k;\n\n  // when going from a large splom graph to something else,\n  // we need to clear <g subplot> so that the new cartesian subplot\n  // can have the correct layer ordering\n  if (oldFullLayout._hasOnlyLargeSploms && !newFullLayout._hasOnlyLargeSploms) {\n    for (k in oldPlots) {\n      plotinfo = oldPlots[k];\n      if (plotinfo.plotgroup) plotinfo.plotgroup.remove();\n    }\n  }\n  var hadGl = oldFullLayout._has && oldFullLayout._has('gl');\n  var hasGl = newFullLayout._has && newFullLayout._has('gl');\n  if (hadGl && !hasGl) {\n    for (k in oldPlots) {\n      plotinfo = oldPlots[k];\n      if (plotinfo._scene) plotinfo._scene.destroy();\n    }\n  }\n\n  // delete any titles we don't need anymore\n  // check if axis list has changed, and if so clear old titles\n  if (oldSubplotList.xaxis && oldSubplotList.yaxis) {\n    var oldAxIDs = axisIds.listIds({\n      _fullLayout: oldFullLayout\n    });\n    for (i = 0; i < oldAxIDs.length; i++) {\n      var oldAxId = oldAxIDs[i];\n      if (!newFullLayout[axisIds.id2name(oldAxId)]) {\n        oldFullLayout._infolayer.selectAll('.g-' + oldAxId + 'title').remove();\n      }\n    }\n  }\n  var hadCartesian = oldFullLayout._has && oldFullLayout._has('cartesian');\n  var hasCartesian = newFullLayout._has && newFullLayout._has('cartesian');\n  if (hadCartesian && !hasCartesian) {\n    // if we've gotten rid of all cartesian traces, remove all the subplot svg items\n\n    purgeSubplotLayers(oldFullLayout._cartesianlayer.selectAll('.subplot'), oldFullLayout);\n    oldFullLayout._defs.selectAll('.axesclip').remove();\n    delete oldFullLayout._axisConstraintGroups;\n    delete oldFullLayout._axisMatchGroups;\n  } else if (oldSubplotList.cartesian) {\n    // otherwise look for subplots we need to remove\n\n    for (i = 0; i < oldSubplotList.cartesian.length; i++) {\n      var oldSubplotId = oldSubplotList.cartesian[i];\n      if (!newPlots[oldSubplotId]) {\n        var selector = '.' + oldSubplotId + ',.' + oldSubplotId + '-x,.' + oldSubplotId + '-y';\n        oldFullLayout._cartesianlayer.selectAll(selector).remove();\n        removeSubplotExtras(oldSubplotId, oldFullLayout);\n      }\n    }\n  }\n};\nexports.drawFramework = function (gd) {\n  var fullLayout = gd._fullLayout;\n  var subplotData = makeSubplotData(gd);\n  var subplotLayers = fullLayout._cartesianlayer.selectAll('.subplot').data(subplotData, String);\n  subplotLayers.enter().append('g').attr('class', function (d) {\n    return 'subplot ' + d[0];\n  });\n  subplotLayers.order();\n  subplotLayers.exit().call(purgeSubplotLayers, fullLayout);\n  subplotLayers.each(function (d) {\n    var id = d[0];\n    var plotinfo = fullLayout._plots[id];\n    plotinfo.plotgroup = d3.select(this);\n    makeSubplotLayer(gd, plotinfo);\n\n    // make separate drag layers for each subplot,\n    // but append them to paper rather than the plot groups,\n    // so they end up on top of the rest\n    plotinfo.draglayer = ensureSingle(fullLayout._draggers, 'g', id);\n  });\n};\nexports.rangePlot = function (gd, plotinfo, cdSubplot) {\n  makeSubplotLayer(gd, plotinfo);\n  plotOne(gd, plotinfo, cdSubplot);\n  Plots.style(gd);\n};\nfunction makeSubplotData(gd) {\n  var fullLayout = gd._fullLayout;\n  var ids = fullLayout._subplots.cartesian;\n  var len = ids.length;\n  var i, j, id, plotinfo, xa, ya;\n\n  // split 'regular' and 'overlaying' subplots\n  var regulars = [];\n  var overlays = [];\n  for (i = 0; i < len; i++) {\n    id = ids[i];\n    plotinfo = fullLayout._plots[id];\n    xa = plotinfo.xaxis;\n    ya = plotinfo.yaxis;\n    var xa2 = xa._mainAxis;\n    var ya2 = ya._mainAxis;\n    var mainplot = xa2._id + ya2._id;\n    var mainplotinfo = fullLayout._plots[mainplot];\n    plotinfo.overlays = [];\n    if (mainplot !== id && mainplotinfo) {\n      plotinfo.mainplot = mainplot;\n      plotinfo.mainplotinfo = mainplotinfo;\n      overlays.push(id);\n    } else {\n      plotinfo.mainplot = undefined;\n      plotinfo.mainplotinfo = undefined;\n      regulars.push(id);\n    }\n  }\n\n  // fill in list of overlaying subplots in 'main plot'\n  for (i = 0; i < overlays.length; i++) {\n    id = overlays[i];\n    plotinfo = fullLayout._plots[id];\n    plotinfo.mainplotinfo.overlays.push(plotinfo);\n  }\n\n  // put 'regular' subplot data before 'overlaying'\n  var subplotIds = regulars.concat(overlays);\n  var subplotData = new Array(len);\n  for (i = 0; i < len; i++) {\n    id = subplotIds[i];\n    plotinfo = fullLayout._plots[id];\n    xa = plotinfo.xaxis;\n    ya = plotinfo.yaxis;\n\n    // use info about axis layer and overlaying pattern\n    // to clean what need to be cleaned up in exit selection\n    var d = [id, xa.layer, ya.layer, xa.overlaying || '', ya.overlaying || ''];\n    for (j = 0; j < plotinfo.overlays.length; j++) {\n      d.push(plotinfo.overlays[j].id);\n    }\n    subplotData[i] = d;\n  }\n  return subplotData;\n}\nfunction makeSubplotLayer(gd, plotinfo) {\n  var plotgroup = plotinfo.plotgroup;\n  var id = plotinfo.id;\n  var xLayer = constants.layerValue2layerClass[plotinfo.xaxis.layer];\n  var yLayer = constants.layerValue2layerClass[plotinfo.yaxis.layer];\n  var hasOnlyLargeSploms = gd._fullLayout._hasOnlyLargeSploms;\n  if (!plotinfo.mainplot) {\n    if (hasOnlyLargeSploms) {\n      // TODO could do even better\n      // - we don't need plot (but we would have to mock it in lsInner\n      //   and other places\n      // - we don't (x|y)lines and (x|y)axislayer for most subplots\n      //   usually just the bottom x and left y axes.\n      plotinfo.xlines = ensureSingle(plotgroup, 'path', 'xlines-above');\n      plotinfo.ylines = ensureSingle(plotgroup, 'path', 'ylines-above');\n      plotinfo.xaxislayer = ensureSingle(plotgroup, 'g', 'xaxislayer-above');\n      plotinfo.yaxislayer = ensureSingle(plotgroup, 'g', 'yaxislayer-above');\n    } else {\n      var backLayer = ensureSingle(plotgroup, 'g', 'layer-subplot');\n      plotinfo.shapelayer = ensureSingle(backLayer, 'g', 'shapelayer');\n      plotinfo.imagelayer = ensureSingle(backLayer, 'g', 'imagelayer');\n      plotinfo.minorGridlayer = ensureSingle(plotgroup, 'g', 'minor-gridlayer');\n      plotinfo.gridlayer = ensureSingle(plotgroup, 'g', 'gridlayer');\n      plotinfo.zerolinelayer = ensureSingle(plotgroup, 'g', 'zerolinelayer');\n      ensureSingle(plotgroup, 'path', 'xlines-below');\n      ensureSingle(plotgroup, 'path', 'ylines-below');\n      plotinfo.overlinesBelow = ensureSingle(plotgroup, 'g', 'overlines-below');\n      ensureSingle(plotgroup, 'g', 'xaxislayer-below');\n      ensureSingle(plotgroup, 'g', 'yaxislayer-below');\n      plotinfo.overaxesBelow = ensureSingle(plotgroup, 'g', 'overaxes-below');\n      plotinfo.plot = ensureSingle(plotgroup, 'g', 'plot');\n      plotinfo.overplot = ensureSingle(plotgroup, 'g', 'overplot');\n      plotinfo.xlines = ensureSingle(plotgroup, 'path', 'xlines-above');\n      plotinfo.ylines = ensureSingle(plotgroup, 'path', 'ylines-above');\n      plotinfo.overlinesAbove = ensureSingle(plotgroup, 'g', 'overlines-above');\n      ensureSingle(plotgroup, 'g', 'xaxislayer-above');\n      ensureSingle(plotgroup, 'g', 'yaxislayer-above');\n      plotinfo.overaxesAbove = ensureSingle(plotgroup, 'g', 'overaxes-above');\n\n      // set refs to correct layers as determined by 'axis.layer'\n      plotinfo.xlines = plotgroup.select('.xlines-' + xLayer);\n      plotinfo.ylines = plotgroup.select('.ylines-' + yLayer);\n      plotinfo.xaxislayer = plotgroup.select('.xaxislayer-' + xLayer);\n      plotinfo.yaxislayer = plotgroup.select('.yaxislayer-' + yLayer);\n    }\n  } else {\n    var mainplotinfo = plotinfo.mainplotinfo;\n    var mainplotgroup = mainplotinfo.plotgroup;\n    var xId = id + '-x';\n    var yId = id + '-y';\n\n    // now make the components of overlaid subplots\n    // overlays don't have backgrounds, and append all\n    // their other components to the corresponding\n    // extra groups of their main plots.\n\n    plotinfo.minorGridlayer = mainplotinfo.minorGridlayer;\n    plotinfo.gridlayer = mainplotinfo.gridlayer;\n    plotinfo.zerolinelayer = mainplotinfo.zerolinelayer;\n    ensureSingle(mainplotinfo.overlinesBelow, 'path', xId);\n    ensureSingle(mainplotinfo.overlinesBelow, 'path', yId);\n    ensureSingle(mainplotinfo.overaxesBelow, 'g', xId);\n    ensureSingle(mainplotinfo.overaxesBelow, 'g', yId);\n    plotinfo.plot = ensureSingle(mainplotinfo.overplot, 'g', id);\n    ensureSingle(mainplotinfo.overlinesAbove, 'path', xId);\n    ensureSingle(mainplotinfo.overlinesAbove, 'path', yId);\n    ensureSingle(mainplotinfo.overaxesAbove, 'g', xId);\n    ensureSingle(mainplotinfo.overaxesAbove, 'g', yId);\n\n    // set refs to correct layers as determined by 'abovetraces'\n    plotinfo.xlines = mainplotgroup.select('.overlines-' + xLayer).select('.' + xId);\n    plotinfo.ylines = mainplotgroup.select('.overlines-' + yLayer).select('.' + yId);\n    plotinfo.xaxislayer = mainplotgroup.select('.overaxes-' + xLayer).select('.' + xId);\n    plotinfo.yaxislayer = mainplotgroup.select('.overaxes-' + yLayer).select('.' + yId);\n  }\n\n  // common attributes for all subplots, overlays or not\n\n  if (!hasOnlyLargeSploms) {\n    ensureSingleAndAddDatum(plotinfo.minorGridlayer, 'g', plotinfo.xaxis._id);\n    ensureSingleAndAddDatum(plotinfo.minorGridlayer, 'g', plotinfo.yaxis._id);\n    plotinfo.minorGridlayer.selectAll('g').map(function (d) {\n      return d[0];\n    }).sort(axisIds.idSort);\n    ensureSingleAndAddDatum(plotinfo.gridlayer, 'g', plotinfo.xaxis._id);\n    ensureSingleAndAddDatum(plotinfo.gridlayer, 'g', plotinfo.yaxis._id);\n    plotinfo.gridlayer.selectAll('g').map(function (d) {\n      return d[0];\n    }).sort(axisIds.idSort);\n  }\n  plotinfo.xlines.style('fill', 'none').classed('crisp', true);\n  plotinfo.ylines.style('fill', 'none').classed('crisp', true);\n}\nfunction purgeSubplotLayers(layers, fullLayout) {\n  if (!layers) return;\n  var overlayIdsToRemove = {};\n  layers.each(function (d) {\n    var id = d[0];\n    var plotgroup = d3.select(this);\n    plotgroup.remove();\n    removeSubplotExtras(id, fullLayout);\n    overlayIdsToRemove[id] = true;\n\n    // do not remove individual axis <clipPath>s here\n    // as other subplots may need them\n  });\n\n  // must remove overlaid subplot trace layers 'manually'\n\n  for (var k in fullLayout._plots) {\n    var subplotInfo = fullLayout._plots[k];\n    var overlays = subplotInfo.overlays || [];\n    for (var j = 0; j < overlays.length; j++) {\n      var overlayInfo = overlays[j];\n      if (overlayIdsToRemove[overlayInfo.id]) {\n        overlayInfo.plot.selectAll('.trace').remove();\n      }\n    }\n  }\n}\nfunction removeSubplotExtras(subplotId, fullLayout) {\n  fullLayout._draggers.selectAll('g.' + subplotId).remove();\n  fullLayout._defs.select('#clip' + fullLayout._uid + subplotId + 'plot').remove();\n}\nexports.toSVG = function (gd) {\n  var imageRoot = gd._fullLayout._glimages;\n  var root = d3.select(gd).selectAll('.svg-container');\n  var canvases = root.filter(function (d, i) {\n    return i === root.size() - 1;\n  }).selectAll('.gl-canvas-context, .gl-canvas-focus');\n  function canvasToImage() {\n    var canvas = this;\n    var imageData = canvas.toDataURL('image/png');\n    var image = imageRoot.append('svg:image');\n    image.attr({\n      xmlns: xmlnsNamespaces.svg,\n      'xlink:href': imageData,\n      preserveAspectRatio: 'none',\n      x: 0,\n      y: 0,\n      width: canvas.style.width,\n      height: canvas.style.height\n    });\n  }\n  canvases.each(canvasToImage);\n};\nexports.updateFx = __nested_webpack_require_1478898__(4305).updateFx;\n\n/***/ }),\n\n/***/ 13838:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1498668__) {\n\n\"use strict\";\n\n\nvar fontAttrs = __nested_webpack_require_1498668__(41940);\nvar colorAttrs = __nested_webpack_require_1498668__(22399);\nvar dash = (__nested_webpack_require_1498668__(79952)/* .dash */ .P);\nvar extendFlat = (__nested_webpack_require_1498668__(1426).extendFlat);\nvar templatedArray = (__nested_webpack_require_1498668__(44467).templatedArray);\nvar descriptionWithDates = (__nested_webpack_require_1498668__(12663).descriptionWithDates);\nvar ONEDAY = (__nested_webpack_require_1498668__(50606).ONEDAY);\nvar constants = __nested_webpack_require_1498668__(85555);\nvar HOUR = constants.HOUR_PATTERN;\nvar DAY_OF_WEEK = constants.WEEKDAY_PATTERN;\nvar minorTickmode = {\n  valType: 'enumerated',\n  values: ['auto', 'linear', 'array'],\n  editType: 'ticks',\n  impliedEdits: {\n    tick0: undefined,\n    dtick: undefined\n  }\n};\nvar tickmode = extendFlat({}, minorTickmode, {\n  values: minorTickmode.values.slice().concat(['sync'])\n});\nfunction makeNticks(minor) {\n  return {\n    valType: 'integer',\n    min: 0,\n    dflt: minor ? 5 : 0,\n    editType: 'ticks'\n  };\n}\nvar tick0 = {\n  valType: 'any',\n  editType: 'ticks',\n  impliedEdits: {\n    tickmode: 'linear'\n  }\n};\nvar dtick = {\n  valType: 'any',\n  editType: 'ticks',\n  impliedEdits: {\n    tickmode: 'linear'\n  }\n};\nvar tickvals = {\n  valType: 'data_array',\n  editType: 'ticks'\n};\nvar ticks = {\n  valType: 'enumerated',\n  values: ['outside', 'inside', ''],\n  editType: 'ticks'\n};\nfunction makeTicklen(minor) {\n  var obj = {\n    valType: 'number',\n    min: 0,\n    editType: 'ticks'\n  };\n  if (!minor) obj.dflt = 5;\n  return obj;\n}\nfunction makeTickwidth(minor) {\n  var obj = {\n    valType: 'number',\n    min: 0,\n    editType: 'ticks'\n  };\n  if (!minor) obj.dflt = 1;\n  return obj;\n}\nvar tickcolor = {\n  valType: 'color',\n  dflt: colorAttrs.defaultLine,\n  editType: 'ticks'\n};\nvar gridcolor = {\n  valType: 'color',\n  dflt: colorAttrs.lightLine,\n  editType: 'ticks'\n};\nfunction makeGridwidth(minor) {\n  var obj = {\n    valType: 'number',\n    min: 0,\n    editType: 'ticks'\n  };\n  if (!minor) obj.dflt = 1;\n  return obj;\n}\nvar griddash = extendFlat({}, dash, {\n  editType: 'ticks'\n});\nvar showgrid = {\n  valType: 'boolean',\n  editType: 'ticks'\n};\nmodule.exports = {\n  visible: {\n    valType: 'boolean',\n    editType: 'plot'\n  },\n  color: {\n    valType: 'color',\n    dflt: colorAttrs.defaultLine,\n    editType: 'ticks'\n  },\n  title: {\n    text: {\n      valType: 'string',\n      editType: 'ticks'\n    },\n    font: fontAttrs({\n      editType: 'ticks'\n    }),\n    standoff: {\n      valType: 'number',\n      min: 0,\n      editType: 'ticks'\n    },\n    editType: 'ticks'\n  },\n  type: {\n    valType: 'enumerated',\n    // '-' means we haven't yet run autotype or couldn't find any data\n    // it gets turned into linear in gd._fullLayout but not copied back\n    // to gd.data like the others are.\n    values: ['-', 'linear', 'log', 'date', 'category', 'multicategory'],\n    dflt: '-',\n    editType: 'calc',\n    // we forget when an axis has been autotyped, just writing the auto\n    // value back to the input - so it doesn't make sense to template this.\n    // Note: we do NOT prohibit this in `coerce`, so if someone enters a\n    // type in the template explicitly it will be honored as the default.\n    _noTemplating: true\n  },\n  autotypenumbers: {\n    valType: 'enumerated',\n    values: ['convert types', 'strict'],\n    dflt: 'convert types',\n    editType: 'calc'\n  },\n  autorange: {\n    valType: 'enumerated',\n    values: [true, false, 'reversed'],\n    dflt: true,\n    editType: 'axrange',\n    impliedEdits: {\n      'range[0]': undefined,\n      'range[1]': undefined\n    }\n  },\n  rangemode: {\n    valType: 'enumerated',\n    values: ['normal', 'tozero', 'nonnegative'],\n    dflt: 'normal',\n    editType: 'plot'\n  },\n  range: {\n    valType: 'info_array',\n    items: [{\n      valType: 'any',\n      editType: 'axrange',\n      impliedEdits: {\n        '^autorange': false\n      },\n      anim: true\n    }, {\n      valType: 'any',\n      editType: 'axrange',\n      impliedEdits: {\n        '^autorange': false\n      },\n      anim: true\n    }],\n    editType: 'axrange',\n    impliedEdits: {\n      'autorange': false\n    },\n    anim: true\n  },\n  fixedrange: {\n    valType: 'boolean',\n    dflt: false,\n    editType: 'calc'\n  },\n  // scaleanchor: not used directly, just put here for reference\n  // values are any opposite-letter axis id\n  scaleanchor: {\n    valType: 'enumerated',\n    values: [constants.idRegex.x.toString(), constants.idRegex.y.toString()],\n    editType: 'plot'\n  },\n  scaleratio: {\n    valType: 'number',\n    min: 0,\n    dflt: 1,\n    editType: 'plot'\n  },\n  constrain: {\n    valType: 'enumerated',\n    values: ['range', 'domain'],\n    editType: 'plot'\n  },\n  // constraintoward: not used directly, just put here for reference\n  constraintoward: {\n    valType: 'enumerated',\n    values: ['left', 'center', 'right', 'top', 'middle', 'bottom'],\n    editType: 'plot'\n  },\n  matches: {\n    valType: 'enumerated',\n    values: [constants.idRegex.x.toString(), constants.idRegex.y.toString()],\n    editType: 'calc'\n  },\n  rangebreaks: templatedArray('rangebreak', {\n    enabled: {\n      valType: 'boolean',\n      dflt: true,\n      editType: 'calc'\n    },\n    bounds: {\n      valType: 'info_array',\n      items: [{\n        valType: 'any',\n        editType: 'calc'\n      }, {\n        valType: 'any',\n        editType: 'calc'\n      }],\n      editType: 'calc'\n    },\n    pattern: {\n      valType: 'enumerated',\n      values: [DAY_OF_WEEK, HOUR, ''],\n      editType: 'calc'\n    },\n    values: {\n      valType: 'info_array',\n      freeLength: true,\n      editType: 'calc',\n      items: {\n        valType: 'any',\n        editType: 'calc'\n      }\n    },\n    dvalue: {\n      // TODO could become 'any' to add support for 'months', 'years'\n      valType: 'number',\n      editType: 'calc',\n      min: 0,\n      dflt: ONEDAY\n    },\n    /*\n    gap: {\n        valType: 'number',\n        min: 0,\n        dflt: 0, // for *date* axes, maybe something else for *linear*\n        editType: 'calc',\n    },\n    gapmode: {\n        valType: 'enumerated',\n        values: ['pixels', 'fraction'],\n        dflt: 'pixels',\n        editType: 'calc',\n    },\n    */\n\n    // To complete https://github.com/plotly/plotly.js/issues/4210\n    // we additionally need `gap` and make this work on *linear*, and\n    // possibly all other cartesian axis types. We possibly would also need\n    // some style attributes controlling the zig-zag on the corresponding\n    // axis.\n\n    editType: 'calc'\n  }),\n  // ticks\n  tickmode: tickmode,\n  nticks: makeNticks(),\n  tick0: tick0,\n  dtick: dtick,\n  ticklabelstep: {\n    valType: 'integer',\n    min: 1,\n    dflt: 1,\n    editType: 'ticks'\n  },\n  tickvals: tickvals,\n  ticktext: {\n    valType: 'data_array',\n    editType: 'ticks'\n  },\n  ticks: ticks,\n  tickson: {\n    valType: 'enumerated',\n    values: ['labels', 'boundaries'],\n    dflt: 'labels',\n    editType: 'ticks'\n  },\n  ticklabelmode: {\n    valType: 'enumerated',\n    values: ['instant', 'period'],\n    dflt: 'instant',\n    editType: 'ticks'\n  },\n  // ticklabelposition: not used directly, as values depend on direction (similar to side)\n  // left/right options are for x axes, and top/bottom options are for y axes\n  ticklabelposition: {\n    valType: 'enumerated',\n    values: ['outside', 'inside', 'outside top', 'inside top', 'outside left', 'inside left', 'outside right', 'inside right', 'outside bottom', 'inside bottom'],\n    dflt: 'outside',\n    editType: 'calc'\n  },\n  ticklabeloverflow: {\n    valType: 'enumerated',\n    values: ['allow', 'hide past div', 'hide past domain'],\n    editType: 'calc'\n  },\n  mirror: {\n    valType: 'enumerated',\n    values: [true, 'ticks', false, 'all', 'allticks'],\n    dflt: false,\n    editType: 'ticks+layoutstyle'\n  },\n  ticklen: makeTicklen(),\n  tickwidth: makeTickwidth(),\n  tickcolor: tickcolor,\n  showticklabels: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'ticks'\n  },\n  automargin: {\n    valType: 'flaglist',\n    flags: ['height', 'width', 'left', 'right', 'top', 'bottom'],\n    extras: [true, false],\n    dflt: false,\n    editType: 'ticks'\n  },\n  showspikes: {\n    valType: 'boolean',\n    dflt: false,\n    editType: 'modebar'\n  },\n  spikecolor: {\n    valType: 'color',\n    dflt: null,\n    editType: 'none'\n  },\n  spikethickness: {\n    valType: 'number',\n    dflt: 3,\n    editType: 'none'\n  },\n  spikedash: extendFlat({}, dash, {\n    dflt: 'dash',\n    editType: 'none'\n  }),\n  spikemode: {\n    valType: 'flaglist',\n    flags: ['toaxis', 'across', 'marker'],\n    dflt: 'toaxis',\n    editType: 'none'\n  },\n  spikesnap: {\n    valType: 'enumerated',\n    values: ['data', 'cursor', 'hovered data'],\n    dflt: 'hovered data',\n    editType: 'none'\n  },\n  tickfont: fontAttrs({\n    editType: 'ticks'\n  }),\n  tickangle: {\n    valType: 'angle',\n    dflt: 'auto',\n    editType: 'ticks'\n  },\n  tickprefix: {\n    valType: 'string',\n    dflt: '',\n    editType: 'ticks'\n  },\n  showtickprefix: {\n    valType: 'enumerated',\n    values: ['all', 'first', 'last', 'none'],\n    dflt: 'all',\n    editType: 'ticks'\n  },\n  ticksuffix: {\n    valType: 'string',\n    dflt: '',\n    editType: 'ticks'\n  },\n  showticksuffix: {\n    valType: 'enumerated',\n    values: ['all', 'first', 'last', 'none'],\n    dflt: 'all',\n    editType: 'ticks'\n  },\n  showexponent: {\n    valType: 'enumerated',\n    values: ['all', 'first', 'last', 'none'],\n    dflt: 'all',\n    editType: 'ticks'\n  },\n  exponentformat: {\n    valType: 'enumerated',\n    values: ['none', 'e', 'E', 'power', 'SI', 'B'],\n    dflt: 'B',\n    editType: 'ticks'\n  },\n  minexponent: {\n    valType: 'number',\n    dflt: 3,\n    min: 0,\n    editType: 'ticks'\n  },\n  separatethousands: {\n    valType: 'boolean',\n    dflt: false,\n    editType: 'ticks'\n  },\n  tickformat: {\n    valType: 'string',\n    dflt: '',\n    editType: 'ticks',\n    description: descriptionWithDates('tick label')\n  },\n  tickformatstops: templatedArray('tickformatstop', {\n    enabled: {\n      valType: 'boolean',\n      dflt: true,\n      editType: 'ticks'\n    },\n    dtickrange: {\n      valType: 'info_array',\n      items: [{\n        valType: 'any',\n        editType: 'ticks'\n      }, {\n        valType: 'any',\n        editType: 'ticks'\n      }],\n      editType: 'ticks'\n    },\n    value: {\n      valType: 'string',\n      dflt: '',\n      editType: 'ticks'\n    },\n    editType: 'ticks'\n  }),\n  hoverformat: {\n    valType: 'string',\n    dflt: '',\n    editType: 'none',\n    description: descriptionWithDates('hover text')\n  },\n  // lines and grids\n  showline: {\n    valType: 'boolean',\n    dflt: false,\n    editType: 'ticks+layoutstyle'\n  },\n  linecolor: {\n    valType: 'color',\n    dflt: colorAttrs.defaultLine,\n    editType: 'layoutstyle'\n  },\n  linewidth: {\n    valType: 'number',\n    min: 0,\n    dflt: 1,\n    editType: 'ticks+layoutstyle'\n  },\n  showgrid: showgrid,\n  gridcolor: gridcolor,\n  gridwidth: makeGridwidth(),\n  griddash: griddash,\n  zeroline: {\n    valType: 'boolean',\n    editType: 'ticks'\n  },\n  zerolinecolor: {\n    valType: 'color',\n    dflt: colorAttrs.defaultLine,\n    editType: 'ticks'\n  },\n  zerolinewidth: {\n    valType: 'number',\n    dflt: 1,\n    editType: 'ticks'\n  },\n  showdividers: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'ticks'\n  },\n  dividercolor: {\n    valType: 'color',\n    dflt: colorAttrs.defaultLine,\n    editType: 'ticks'\n  },\n  dividerwidth: {\n    valType: 'number',\n    dflt: 1,\n    editType: 'ticks'\n  },\n  // TODO dividerlen: that would override \"to label base\" length?\n\n  // positioning attributes\n  // anchor: not used directly, just put here for reference\n  // values are any opposite-letter axis id\n  anchor: {\n    valType: 'enumerated',\n    values: ['free', constants.idRegex.x.toString(), constants.idRegex.y.toString()],\n    editType: 'plot'\n  },\n  // side: not used directly, as values depend on direction\n  // values are top, bottom for x axes, and left, right for y\n  side: {\n    valType: 'enumerated',\n    values: ['top', 'bottom', 'left', 'right'],\n    editType: 'plot'\n  },\n  // overlaying: not used directly, just put here for reference\n  // values are false and any other same-letter axis id that's not\n  // itself overlaying anything\n  overlaying: {\n    valType: 'enumerated',\n    values: ['free', constants.idRegex.x.toString(), constants.idRegex.y.toString()],\n    editType: 'plot'\n  },\n  minor: {\n    tickmode: minorTickmode,\n    nticks: makeNticks('minor'),\n    tick0: tick0,\n    dtick: dtick,\n    tickvals: tickvals,\n    ticks: ticks,\n    ticklen: makeTicklen('minor'),\n    tickwidth: makeTickwidth('minor'),\n    tickcolor: tickcolor,\n    gridcolor: gridcolor,\n    gridwidth: makeGridwidth('minor'),\n    griddash: griddash,\n    showgrid: showgrid,\n    editType: 'ticks'\n  },\n  layer: {\n    valType: 'enumerated',\n    values: ['above traces', 'below traces'],\n    dflt: 'above traces',\n    editType: 'plot'\n  },\n  domain: {\n    valType: 'info_array',\n    items: [{\n      valType: 'number',\n      min: 0,\n      max: 1,\n      editType: 'plot'\n    }, {\n      valType: 'number',\n      min: 0,\n      max: 1,\n      editType: 'plot'\n    }],\n    dflt: [0, 1],\n    editType: 'plot'\n  },\n  position: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 0,\n    editType: 'plot'\n  },\n  autoshift: {\n    valType: 'boolean',\n    dflt: false,\n    editType: 'plot'\n  },\n  shift: {\n    valType: 'number',\n    editType: 'plot'\n  },\n  categoryorder: {\n    valType: 'enumerated',\n    values: ['trace', 'category ascending', 'category descending', 'array', 'total ascending', 'total descending', 'min ascending', 'min descending', 'max ascending', 'max descending', 'sum ascending', 'sum descending', 'mean ascending', 'mean descending', 'median ascending', 'median descending'],\n    dflt: 'trace',\n    editType: 'calc'\n  },\n  categoryarray: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  uirevision: {\n    valType: 'any',\n    editType: 'none'\n  },\n  editType: 'calc',\n  _deprecated: {\n    autotick: {\n      valType: 'boolean',\n      editType: 'ticks'\n    },\n    title: {\n      valType: 'string',\n      editType: 'ticks'\n    },\n    titlefont: fontAttrs({\n      editType: 'ticks'\n    })\n  }\n};\n\n/***/ }),\n\n/***/ 86763:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1512759__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_1512759__(71828);\nvar Color = __nested_webpack_require_1512759__(7901);\nvar isUnifiedHover = (__nested_webpack_require_1512759__(23469).isUnifiedHover);\nvar handleHoverModeDefaults = __nested_webpack_require_1512759__(98212);\nvar Template = __nested_webpack_require_1512759__(44467);\nvar basePlotLayoutAttributes = __nested_webpack_require_1512759__(10820);\nvar layoutAttributes = __nested_webpack_require_1512759__(13838);\nvar handleTypeDefaults = __nested_webpack_require_1512759__(951);\nvar handleAxisDefaults = __nested_webpack_require_1512759__(71453);\nvar constraints = __nested_webpack_require_1512759__(99082);\nvar handlePositionDefaults = __nested_webpack_require_1512759__(52830);\nvar axisIds = __nested_webpack_require_1512759__(41675);\nvar id2name = axisIds.id2name;\nvar name2id = axisIds.name2id;\nvar AX_ID_PATTERN = (__nested_webpack_require_1512759__(85555).AX_ID_PATTERN);\nvar Registry = __nested_webpack_require_1512759__(73972);\nvar traceIs = Registry.traceIs;\nvar getComponentMethod = Registry.getComponentMethod;\nfunction appendList(cont, k, item) {\n  if (Array.isArray(cont[k])) cont[k].push(item);else cont[k] = [item];\n}\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {\n  var autotypenumbersDflt = layoutOut.autotypenumbers;\n  var ax2traces = {};\n  var xaMayHide = {};\n  var yaMayHide = {};\n  var xaMustDisplay = {};\n  var yaMustDisplay = {};\n  var yaMustNotReverse = {};\n  var yaMayReverse = {};\n  var axHasImage = {};\n  var outerTicks = {};\n  var noGrids = {};\n  var i, j;\n\n  // look for axes in the data\n  for (i = 0; i < fullData.length; i++) {\n    var trace = fullData[i];\n    if (!traceIs(trace, 'cartesian') && !traceIs(trace, 'gl2d')) continue;\n    var xaName;\n    if (trace.xaxis) {\n      xaName = id2name(trace.xaxis);\n      appendList(ax2traces, xaName, trace);\n    } else if (trace.xaxes) {\n      for (j = 0; j < trace.xaxes.length; j++) {\n        appendList(ax2traces, id2name(trace.xaxes[j]), trace);\n      }\n    }\n    var yaName;\n    if (trace.yaxis) {\n      yaName = id2name(trace.yaxis);\n      appendList(ax2traces, yaName, trace);\n    } else if (trace.yaxes) {\n      for (j = 0; j < trace.yaxes.length; j++) {\n        appendList(ax2traces, id2name(trace.yaxes[j]), trace);\n      }\n    }\n\n    // logic for funnels\n    if (trace.type === 'funnel') {\n      if (trace.orientation === 'h') {\n        if (xaName) xaMayHide[xaName] = true;\n        if (yaName) yaMayReverse[yaName] = true;\n      } else {\n        if (yaName) yaMayHide[yaName] = true;\n      }\n    } else if (trace.type === 'image') {\n      if (yaName) axHasImage[yaName] = true;\n      if (xaName) axHasImage[xaName] = true;\n    } else {\n      if (yaName) {\n        yaMustDisplay[yaName] = true;\n        yaMustNotReverse[yaName] = true;\n      }\n      if (!traceIs(trace, 'carpet') || trace.type === 'carpet' && !trace._cheater) {\n        if (xaName) xaMustDisplay[xaName] = true;\n      }\n    }\n\n    // Two things trigger axis visibility:\n    // 1. is not carpet\n    // 2. carpet that's not cheater\n\n    // The above check for definitely-not-cheater is not adequate. This\n    // second list tracks which axes *could* be a cheater so that the\n    // full condition triggering hiding is:\n    //   *could* be a cheater and *is not definitely visible*\n    if (trace.type === 'carpet' && trace._cheater) {\n      if (xaName) xaMayHide[xaName] = true;\n    }\n\n    // check for default formatting tweaks\n    if (traceIs(trace, '2dMap')) {\n      outerTicks[xaName] = true;\n      outerTicks[yaName] = true;\n    }\n    if (traceIs(trace, 'oriented')) {\n      var positionAxis = trace.orientation === 'h' ? yaName : xaName;\n      noGrids[positionAxis] = true;\n    }\n  }\n  var subplots = layoutOut._subplots;\n  var xIds = subplots.xaxis;\n  var yIds = subplots.yaxis;\n  var xNames = Lib.simpleMap(xIds, id2name);\n  var yNames = Lib.simpleMap(yIds, id2name);\n  var axNames = xNames.concat(yNames);\n\n  // plot_bgcolor only makes sense if there's a (2D) plot!\n  // TODO: bgcolor for each subplot, to inherit from the main one\n  var plotBgColor = Color.background;\n  if (xIds.length && yIds.length) {\n    plotBgColor = Lib.coerce(layoutIn, layoutOut, basePlotLayoutAttributes, 'plot_bgcolor');\n  }\n  var bgColor = Color.combine(plotBgColor, layoutOut.paper_bgcolor);\n\n  // name of single axis (e.g. 'xaxis', 'yaxis2')\n  var axName;\n  // id of single axis (e.g. 'y', 'x5')\n  var axId;\n  // 'x' or 'y'\n  var axLetter;\n  // input layout axis container\n  var axLayoutIn;\n  // full layout axis container\n  var axLayoutOut;\n  function newAxLayoutOut() {\n    var traces = ax2traces[axName] || [];\n    axLayoutOut._traceIndices = traces.map(function (t) {\n      return t._expandedIndex;\n    });\n    axLayoutOut._annIndices = [];\n    axLayoutOut._shapeIndices = [];\n    axLayoutOut._selectionIndices = [];\n    axLayoutOut._imgIndices = [];\n    axLayoutOut._subplotsWith = [];\n    axLayoutOut._counterAxes = [];\n    axLayoutOut._name = axLayoutOut._attr = axName;\n    axLayoutOut._id = axId;\n  }\n  function coerce(attr, dflt) {\n    return Lib.coerce(axLayoutIn, axLayoutOut, layoutAttributes, attr, dflt);\n  }\n  function coerce2(attr, dflt) {\n    return Lib.coerce2(axLayoutIn, axLayoutOut, layoutAttributes, attr, dflt);\n  }\n  function getCounterAxes(axLetter) {\n    return axLetter === 'x' ? yIds : xIds;\n  }\n  function getOverlayableAxes(axLetter, axName) {\n    var list = axLetter === 'x' ? xNames : yNames;\n    var out = [];\n    for (var j = 0; j < list.length; j++) {\n      var axName2 = list[j];\n      if (axName2 !== axName && !(layoutIn[axName2] || {}).overlaying) {\n        out.push(name2id(axName2));\n      }\n    }\n    return out;\n  }\n\n  // list of available counter axis names\n  var counterAxes = {\n    x: getCounterAxes('x'),\n    y: getCounterAxes('y')\n  };\n  // list of all x AND y axis ids\n  var allAxisIds = counterAxes.x.concat(counterAxes.y);\n  // lookup and list of axis ids that axes in axNames have a reference to,\n  // even though they are missing from allAxisIds\n  var missingMatchedAxisIdsLookup = {};\n  var missingMatchedAxisIds = [];\n\n  // fill in 'missing' axis lookup when an axis is set to match an axis\n  // not part of the allAxisIds list, save axis type so that we can propagate\n  // it to the missing axes\n  function addMissingMatchedAxis() {\n    var matchesIn = axLayoutIn.matches;\n    if (AX_ID_PATTERN.test(matchesIn) && allAxisIds.indexOf(matchesIn) === -1) {\n      missingMatchedAxisIdsLookup[matchesIn] = axLayoutIn.type;\n      missingMatchedAxisIds = Object.keys(missingMatchedAxisIdsLookup);\n    }\n  }\n  var hovermode = handleHoverModeDefaults(layoutIn, layoutOut);\n  var unifiedHover = isUnifiedHover(hovermode);\n\n  // first pass creates the containers, determines types, and handles most of the settings\n  for (i = 0; i < axNames.length; i++) {\n    axName = axNames[i];\n    axId = name2id(axName);\n    axLetter = axName.charAt(0);\n    if (!Lib.isPlainObject(layoutIn[axName])) {\n      layoutIn[axName] = {};\n    }\n    axLayoutIn = layoutIn[axName];\n    axLayoutOut = Template.newContainer(layoutOut, axName, axLetter + 'axis');\n    newAxLayoutOut();\n    var visibleDflt = axLetter === 'x' && !xaMustDisplay[axName] && xaMayHide[axName] || axLetter === 'y' && !yaMustDisplay[axName] && yaMayHide[axName];\n    var reverseDflt = axLetter === 'y' && (!yaMustNotReverse[axName] && yaMayReverse[axName] || axHasImage[axName]);\n    var defaultOptions = {\n      hasMinor: true,\n      letter: axLetter,\n      font: layoutOut.font,\n      outerTicks: outerTicks[axName],\n      showGrid: !noGrids[axName],\n      data: ax2traces[axName] || [],\n      bgColor: bgColor,\n      calendar: layoutOut.calendar,\n      automargin: true,\n      visibleDflt: visibleDflt,\n      reverseDflt: reverseDflt,\n      autotypenumbersDflt: autotypenumbersDflt,\n      splomStash: ((layoutOut._splomAxes || {})[axLetter] || {})[axId]\n    };\n    coerce('uirevision', layoutOut.uirevision);\n    handleTypeDefaults(axLayoutIn, axLayoutOut, coerce, defaultOptions);\n    handleAxisDefaults(axLayoutIn, axLayoutOut, coerce, defaultOptions, layoutOut);\n    var unifiedSpike = unifiedHover && axLetter === hovermode.charAt(0);\n    var spikecolor = coerce2('spikecolor', unifiedHover ? axLayoutOut.color : undefined);\n    var spikethickness = coerce2('spikethickness', unifiedHover ? 1.5 : undefined);\n    var spikedash = coerce2('spikedash', unifiedHover ? 'dot' : undefined);\n    var spikemode = coerce2('spikemode', unifiedHover ? 'across' : undefined);\n    var spikesnap = coerce2('spikesnap');\n    var showSpikes = coerce('showspikes', !!unifiedSpike || !!spikecolor || !!spikethickness || !!spikedash || !!spikemode || !!spikesnap);\n    if (!showSpikes) {\n      delete axLayoutOut.spikecolor;\n      delete axLayoutOut.spikethickness;\n      delete axLayoutOut.spikedash;\n      delete axLayoutOut.spikemode;\n      delete axLayoutOut.spikesnap;\n    }\n\n    // If it exists, the the domain of the axis for the anchor of the overlaying axis\n    var overlayingAxis = id2name(axLayoutIn.overlaying);\n    var overlayingAnchorDomain = [0, 1];\n    if (layoutOut[overlayingAxis] !== undefined) {\n      var overlayingAnchor = id2name(layoutOut[overlayingAxis].anchor);\n      if (layoutOut[overlayingAnchor] !== undefined) {\n        overlayingAnchorDomain = layoutOut[overlayingAnchor].domain;\n      }\n    }\n    handlePositionDefaults(axLayoutIn, axLayoutOut, coerce, {\n      letter: axLetter,\n      counterAxes: counterAxes[axLetter],\n      overlayableAxes: getOverlayableAxes(axLetter, axName),\n      grid: layoutOut.grid,\n      overlayingDomain: overlayingAnchorDomain\n    });\n    coerce('title.standoff');\n    addMissingMatchedAxis();\n    axLayoutOut._input = axLayoutIn;\n  }\n\n  // coerce the 'missing' axes\n  i = 0;\n  while (i < missingMatchedAxisIds.length) {\n    axId = missingMatchedAxisIds[i++];\n    axName = id2name(axId);\n    axLetter = axName.charAt(0);\n    if (!Lib.isPlainObject(layoutIn[axName])) {\n      layoutIn[axName] = {};\n    }\n    axLayoutIn = layoutIn[axName];\n    axLayoutOut = Template.newContainer(layoutOut, axName, axLetter + 'axis');\n    newAxLayoutOut();\n    var defaultOptions2 = {\n      letter: axLetter,\n      font: layoutOut.font,\n      outerTicks: outerTicks[axName],\n      showGrid: !noGrids[axName],\n      data: [],\n      bgColor: bgColor,\n      calendar: layoutOut.calendar,\n      automargin: true,\n      visibleDflt: false,\n      reverseDflt: false,\n      autotypenumbersDflt: autotypenumbersDflt,\n      splomStash: ((layoutOut._splomAxes || {})[axLetter] || {})[axId]\n    };\n    coerce('uirevision', layoutOut.uirevision);\n    axLayoutOut.type = missingMatchedAxisIdsLookup[axId] || 'linear';\n    handleAxisDefaults(axLayoutIn, axLayoutOut, coerce, defaultOptions2, layoutOut);\n    handlePositionDefaults(axLayoutIn, axLayoutOut, coerce, {\n      letter: axLetter,\n      counterAxes: counterAxes[axLetter],\n      overlayableAxes: getOverlayableAxes(axLetter, axName),\n      grid: layoutOut.grid\n    });\n    coerce('fixedrange');\n    addMissingMatchedAxis();\n    axLayoutOut._input = axLayoutIn;\n  }\n\n  // quick second pass for range slider and selector defaults\n  var rangeSliderDefaults = getComponentMethod('rangeslider', 'handleDefaults');\n  var rangeSelectorDefaults = getComponentMethod('rangeselector', 'handleDefaults');\n  for (i = 0; i < xNames.length; i++) {\n    axName = xNames[i];\n    axLayoutIn = layoutIn[axName];\n    axLayoutOut = layoutOut[axName];\n    rangeSliderDefaults(layoutIn, layoutOut, axName);\n    if (axLayoutOut.type === 'date') {\n      rangeSelectorDefaults(axLayoutIn, axLayoutOut, layoutOut, yNames, axLayoutOut.calendar);\n    }\n    coerce('fixedrange');\n  }\n  for (i = 0; i < yNames.length; i++) {\n    axName = yNames[i];\n    axLayoutIn = layoutIn[axName];\n    axLayoutOut = layoutOut[axName];\n    var anchoredAxis = layoutOut[id2name(axLayoutOut.anchor)];\n    var fixedRangeDflt = getComponentMethod('rangeslider', 'isVisible')(anchoredAxis);\n    coerce('fixedrange', fixedRangeDflt);\n  }\n\n  // Finally, handle scale constraints and matching axes.\n  //\n  // We need to do this after all axes have coerced both `type`\n  // (so we link only axes of the same type) and\n  // `fixedrange` (so we can avoid linking from OR TO a fixed axis).\n  constraints.handleDefaults(layoutIn, layoutOut, {\n    axIds: allAxisIds.concat(missingMatchedAxisIds).sort(axisIds.idSort),\n    axHasImage: axHasImage\n  });\n};\n\n/***/ }),\n\n/***/ 92128:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1525054__) {\n\n\"use strict\";\n\n\nvar colorMix = (__nested_webpack_require_1525054__(84267).mix);\nvar colorAttrs = __nested_webpack_require_1525054__(22399);\nvar Lib = __nested_webpack_require_1525054__(71828);\n\n/**\n * @param {object} opts :\n *   - dfltColor {string} : default axis color\n *   - bgColor {string} : combined subplot bg color\n *   - blend {number, optional} : blend percentage (to compute dflt grid color)\n *   - showLine {boolean} : show line by default\n *   - showGrid {boolean} : show grid by default\n *   - noZeroLine {boolean} : don't coerce zeroline* attributes\n *   - attributes {object} : attribute object associated with input containers\n */\nmodule.exports = function handleLineGridDefaults(containerIn, containerOut, coerce, opts) {\n  opts = opts || {};\n  var dfltColor = opts.dfltColor;\n  function coerce2(attr, dflt) {\n    return Lib.coerce2(containerIn, containerOut, opts.attributes, attr, dflt);\n  }\n  var lineColor = coerce2('linecolor', dfltColor);\n  var lineWidth = coerce2('linewidth');\n  var showLine = coerce('showline', opts.showLine || !!lineColor || !!lineWidth);\n  if (!showLine) {\n    delete containerOut.linecolor;\n    delete containerOut.linewidth;\n  }\n  var gridColorDflt = colorMix(dfltColor, opts.bgColor, opts.blend || colorAttrs.lightFraction).toRgbString();\n  var gridColor = coerce2('gridcolor', gridColorDflt);\n  var gridWidth = coerce2('gridwidth');\n  var gridDash = coerce2('griddash');\n  var showGridLines = coerce('showgrid', opts.showGrid || !!gridColor || !!gridWidth || !!gridDash);\n  if (!showGridLines) {\n    delete containerOut.gridcolor;\n    delete containerOut.gridwidth;\n    delete containerOut.griddash;\n  }\n  if (opts.hasMinor) {\n    var minorGridColorDflt = colorMix(containerOut.gridcolor, opts.bgColor, 67).toRgbString();\n    var minorGridColor = coerce2('minor.gridcolor', minorGridColorDflt);\n    var minorGridWidth = coerce2('minor.gridwidth', containerOut.gridwidth || 1);\n    var minorGridDash = coerce2('minor.griddash', containerOut.griddash || 'solid');\n    var minorShowGridLines = coerce('minor.showgrid', !!minorGridColor || !!minorGridWidth || !!minorGridDash);\n    if (!minorShowGridLines) {\n      delete containerOut.minor.gridcolor;\n      delete containerOut.minor.gridwidth;\n      delete containerOut.minor.griddash;\n    }\n  }\n  if (!opts.noZeroLine) {\n    var zeroLineColor = coerce2('zerolinecolor', dfltColor);\n    var zeroLineWidth = coerce2('zerolinewidth');\n    var showZeroLine = coerce('zeroline', opts.showGrid || !!zeroLineColor || !!zeroLineWidth);\n    if (!showZeroLine) {\n      delete containerOut.zerolinecolor;\n      delete containerOut.zerolinewidth;\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 52830:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1527755__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_1527755__(92770);\nvar Lib = __nested_webpack_require_1527755__(71828);\nmodule.exports = function handlePositionDefaults(containerIn, containerOut, coerce, options) {\n  var counterAxes = options.counterAxes || [];\n  var overlayableAxes = options.overlayableAxes || [];\n  var letter = options.letter;\n  var grid = options.grid;\n  var overlayingDomain = options.overlayingDomain;\n  var dfltAnchor, dfltDomain, dfltSide, dfltPosition, dfltShift, dfltAutomargin;\n  if (grid) {\n    dfltDomain = grid._domains[letter][grid._axisMap[containerOut._id]];\n    dfltAnchor = grid._anchors[containerOut._id];\n    if (dfltDomain) {\n      dfltSide = grid[letter + 'side'].split(' ')[0];\n      dfltPosition = grid.domain[letter][dfltSide === 'right' || dfltSide === 'top' ? 1 : 0];\n    }\n  }\n\n  // Even if there's a grid, this axis may not be in it - fall back on non-grid defaults\n  dfltDomain = dfltDomain || [0, 1];\n  dfltAnchor = dfltAnchor || (isNumeric(containerIn.position) ? 'free' : counterAxes[0] || 'free');\n  dfltSide = dfltSide || (letter === 'x' ? 'bottom' : 'left');\n  dfltPosition = dfltPosition || 0;\n  dfltShift = 0;\n  dfltAutomargin = false;\n  var anchor = Lib.coerce(containerIn, containerOut, {\n    anchor: {\n      valType: 'enumerated',\n      values: ['free'].concat(counterAxes),\n      dflt: dfltAnchor\n    }\n  }, 'anchor');\n  var side = Lib.coerce(containerIn, containerOut, {\n    side: {\n      valType: 'enumerated',\n      values: letter === 'x' ? ['bottom', 'top'] : ['left', 'right'],\n      dflt: dfltSide\n    }\n  }, 'side');\n  if (anchor === 'free') {\n    if (letter === 'y') {\n      var autoshift = coerce('autoshift');\n      if (autoshift) {\n        dfltPosition = side === 'left' ? overlayingDomain[0] : overlayingDomain[1];\n        dfltAutomargin = containerOut.automargin ? containerOut.automargin : true;\n        dfltShift = side === 'left' ? -3 : 3;\n      }\n      coerce('shift', dfltShift);\n    }\n    coerce('position', dfltPosition);\n  }\n  coerce('automargin', dfltAutomargin);\n  var overlaying = false;\n  if (overlayableAxes.length) {\n    overlaying = Lib.coerce(containerIn, containerOut, {\n      overlaying: {\n        valType: 'enumerated',\n        values: [false].concat(overlayableAxes),\n        dflt: false\n      }\n    }, 'overlaying');\n  }\n  if (!overlaying) {\n    // TODO: right now I'm copying this domain over to overlaying axes\n    // in ax.setscale()... but this means we still need (imperfect) logic\n    // in the axes popover to hide domain for the overlaying axis.\n    // perhaps I should make a private version _domain that all axes get???\n    var domain = coerce('domain', dfltDomain);\n\n    // according to https://www.npmjs.com/package/canvas-size\n    // the minimum value of max canvas width across browsers and devices is 4096\n    // which applied in the calculation below:\n    if (domain[0] > domain[1] - 1 / 4096) containerOut.domain = dfltDomain;\n    Lib.noneOrAll(containerIn.domain, containerOut.domain, dfltDomain);\n\n    // tickmode sync needs an overlaying axis, otherwise\n    // we should default it to 'auto'\n    if (containerOut.tickmode === 'sync') {\n      containerOut.tickmode = 'auto';\n    }\n  }\n  coerce('layer');\n  return containerOut;\n};\n\n/***/ }),\n\n/***/ 89426:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1531076__) {\n\n\"use strict\";\n\n\nvar getShowAttrDflt = __nested_webpack_require_1531076__(59652);\nmodule.exports = function handlePrefixSuffixDefaults(containerIn, containerOut, coerce, axType, options) {\n  if (!options) options = {};\n  var tickSuffixDflt = options.tickSuffixDflt;\n  var showAttrDflt = getShowAttrDflt(containerIn);\n  var tickPrefix = coerce('tickprefix');\n  if (tickPrefix) coerce('showtickprefix', showAttrDflt);\n  var tickSuffix = coerce('ticksuffix', tickSuffixDflt);\n  if (tickSuffix) coerce('showticksuffix', showAttrDflt);\n};\n\n/***/ }),\n\n/***/ 42449:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1531693__) {\n\n\"use strict\";\n\n\nvar FROM_BL = (__nested_webpack_require_1531693__(18783).FROM_BL);\nmodule.exports = function scaleZoom(ax, factor, centerFraction) {\n  if (centerFraction === undefined) {\n    centerFraction = FROM_BL[ax.constraintoward || 'center'];\n  }\n  var rangeLinear = [ax.r2l(ax.range[0]), ax.r2l(ax.range[1])];\n  var center = rangeLinear[0] + (rangeLinear[1] - rangeLinear[0]) * centerFraction;\n  ax.range = ax._input.range = [ax.l2r(center + (rangeLinear[0] - center) * factor), ax.l2r(center + (rangeLinear[1] - center) * factor)];\n  ax.setScale();\n};\n\n/***/ }),\n\n/***/ 21994:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1532337__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_1532337__(39898);\nvar utcFormat = (__nested_webpack_require_1532337__(84096)/* .utcFormat */ .g0);\nvar Lib = __nested_webpack_require_1532337__(71828);\nvar numberFormat = Lib.numberFormat;\nvar isNumeric = __nested_webpack_require_1532337__(92770);\nvar cleanNumber = Lib.cleanNumber;\nvar ms2DateTime = Lib.ms2DateTime;\nvar dateTime2ms = Lib.dateTime2ms;\nvar ensureNumber = Lib.ensureNumber;\nvar isArrayOrTypedArray = Lib.isArrayOrTypedArray;\nvar numConstants = __nested_webpack_require_1532337__(50606);\nvar FP_SAFE = numConstants.FP_SAFE;\nvar BADNUM = numConstants.BADNUM;\nvar LOG_CLIP = numConstants.LOG_CLIP;\nvar ONEWEEK = numConstants.ONEWEEK;\nvar ONEDAY = numConstants.ONEDAY;\nvar ONEHOUR = numConstants.ONEHOUR;\nvar ONEMIN = numConstants.ONEMIN;\nvar ONESEC = numConstants.ONESEC;\nvar axisIds = __nested_webpack_require_1532337__(41675);\nvar constants = __nested_webpack_require_1532337__(85555);\nvar HOUR_PATTERN = constants.HOUR_PATTERN;\nvar WEEKDAY_PATTERN = constants.WEEKDAY_PATTERN;\nfunction fromLog(v) {\n  return Math.pow(10, v);\n}\nfunction isValidCategory(v) {\n  return v !== null && v !== undefined;\n}\n\n/**\n * Define the conversion functions for an axis data is used in 5 ways:\n *\n *  d: data, in whatever form it's provided\n *  c: calcdata: turned into numbers, but not linearized\n *  l: linearized - same as c except for log axes (and other nonlinear\n *      mappings later?) this is used when we need to know if it's\n *      *possible* to show some data on this axis, without caring about\n *      the current range\n *  p: pixel value - mapped to the screen with current size and zoom\n *  r: ranges, tick0, and annotation positions match one of the above\n *     but are handled differently for different types:\n *     - linear and date: data format (d)\n *     - category: calcdata format (c), and will stay that way because\n *       the data format has no continuous mapping\n *     - log: linearized (l) format\n *       TODO: in v3.0 we plan to change it to data format. At that point\n *       shapes will work the same way as ranges, tick0, and annotations\n *       so they can use this conversion too.\n *\n * Creates/updates these conversion functions, and a few more utilities\n * like cleanRange, and makeCalcdata\n *\n * also clears the autotick constraints ._minDtick, ._forceTick0\n */\nmodule.exports = function setConvert(ax, fullLayout) {\n  fullLayout = fullLayout || {};\n  var axId = ax._id || 'x';\n  var axLetter = axId.charAt(0);\n  function toLog(v, clip) {\n    if (v > 0) return Math.log(v) / Math.LN10;else if (v <= 0 && clip && ax.range && ax.range.length === 2) {\n      // clip NaN (ie past negative infinity) to LOG_CLIP axis\n      // length past the negative edge\n      var r0 = ax.range[0];\n      var r1 = ax.range[1];\n      return 0.5 * (r0 + r1 - 2 * LOG_CLIP * Math.abs(r0 - r1));\n    } else return BADNUM;\n  }\n\n  /*\n   * wrapped dateTime2ms that:\n   * - accepts ms numbers for backward compatibility\n   * - inserts a dummy arg so calendar is the 3rd arg (see notes below).\n   * - defaults to ax.calendar\n   */\n  function dt2ms(v, _, calendar, opts) {\n    if ((opts || {}).msUTC && isNumeric(v)) {\n      // For now it is only used\n      // to fix bar length in milliseconds & gl3d ticks\n      // It could be applied in other places in v3\n      return +v;\n    }\n\n    // NOTE: Changed this behavior: previously we took any numeric value\n    // to be a ms, even if it was a string that could be a bare year.\n    // Now we convert it as a date if at all possible, and only try\n    // as (local) ms if that fails.\n    var ms = dateTime2ms(v, calendar || ax.calendar);\n    if (ms === BADNUM) {\n      if (isNumeric(v)) {\n        v = +v;\n        // keep track of tenths of ms, that `new Date` will drop\n        // same logic as in Lib.ms2DateTime\n        var msecTenths = Math.floor(Lib.mod(v + 0.05, 1) * 10);\n        var msRounded = Math.round(v - msecTenths / 10);\n        ms = dateTime2ms(new Date(msRounded)) + msecTenths / 10;\n      } else return BADNUM;\n    }\n    return ms;\n  }\n\n  // wrapped ms2DateTime to insert default ax.calendar\n  function ms2dt(v, r, calendar) {\n    return ms2DateTime(v, r, calendar || ax.calendar);\n  }\n  function getCategoryName(v) {\n    return ax._categories[Math.round(v)];\n  }\n\n  /*\n   * setCategoryIndex: return the index of category v,\n   * inserting it in the list if it's not already there\n   *\n   * this will enter the categories in the order it\n   * encounters them, ie all the categories from the\n   * first data set, then all the ones from the second\n   * that aren't in the first etc.\n   *\n   * it is assumed that this function is being invoked in the\n   * already sorted category order; otherwise there would be\n   * a disconnect between the array and the index returned\n   */\n  function setCategoryIndex(v) {\n    if (isValidCategory(v)) {\n      if (ax._categoriesMap === undefined) {\n        ax._categoriesMap = {};\n      }\n      if (ax._categoriesMap[v] !== undefined) {\n        return ax._categoriesMap[v];\n      } else {\n        ax._categories.push(typeof v === 'number' ? String(v) : v);\n        var curLength = ax._categories.length - 1;\n        ax._categoriesMap[v] = curLength;\n        return curLength;\n      }\n    }\n    return BADNUM;\n  }\n  function setMultiCategoryIndex(arrayIn, len) {\n    var arrayOut = new Array(len);\n    for (var i = 0; i < len; i++) {\n      var v0 = (arrayIn[0] || [])[i];\n      var v1 = (arrayIn[1] || [])[i];\n      arrayOut[i] = getCategoryIndex([v0, v1]);\n    }\n    return arrayOut;\n  }\n  function getCategoryIndex(v) {\n    if (ax._categoriesMap) {\n      return ax._categoriesMap[v];\n    }\n  }\n  function getCategoryPosition(v) {\n    // d2l/d2c variant that that won't add categories but will also\n    // allow numbers to be mapped to the linearized axis positions\n    var index = getCategoryIndex(v);\n    if (index !== undefined) return index;\n    if (isNumeric(v)) return +v;\n  }\n  function getRangePosition(v) {\n    return isNumeric(v) ? +v : getCategoryIndex(v);\n  }\n\n  // include 2 fractional digits on pixel, for PDF zooming etc\n  function _l2p(v, m, b) {\n    return d3.round(b + m * v, 2);\n  }\n  function _p2l(px, m, b) {\n    return (px - b) / m;\n  }\n  var l2p = function l2p(v) {\n    if (!isNumeric(v)) return BADNUM;\n    return _l2p(v, ax._m, ax._b);\n  };\n  var p2l = function (px) {\n    return _p2l(px, ax._m, ax._b);\n  };\n  if (ax.rangebreaks) {\n    var isY = axLetter === 'y';\n    l2p = function (v) {\n      if (!isNumeric(v)) return BADNUM;\n      var len = ax._rangebreaks.length;\n      if (!len) return _l2p(v, ax._m, ax._b);\n      var flip = isY;\n      if (ax.range[0] > ax.range[1]) flip = !flip;\n      var signAx = flip ? -1 : 1;\n      var pos = signAx * v;\n      var q = 0;\n      for (var i = 0; i < len; i++) {\n        var min = signAx * ax._rangebreaks[i].min;\n        var max = signAx * ax._rangebreaks[i].max;\n        if (pos < min) break;\n        if (pos > max) q = i + 1;else {\n          // when falls into break, pick 'closest' offset\n          q = pos < (min + max) / 2 ? i : i + 1;\n          break;\n        }\n      }\n      var b2 = ax._B[q] || 0;\n      if (!isFinite(b2)) return 0; // avoid NaN translate e.g. in positionLabels if one keep zooming exactly into a break\n      return _l2p(v, ax._m2, b2);\n    };\n    p2l = function (px) {\n      var len = ax._rangebreaks.length;\n      if (!len) return _p2l(px, ax._m, ax._b);\n      var q = 0;\n      for (var i = 0; i < len; i++) {\n        if (px < ax._rangebreaks[i].pmin) break;\n        if (px > ax._rangebreaks[i].pmax) q = i + 1;\n      }\n      return _p2l(px, ax._m2, ax._B[q]);\n    };\n  }\n\n  // conversions among c/l/p are fairly simple - do them together for all axis types\n  ax.c2l = ax.type === 'log' ? toLog : ensureNumber;\n  ax.l2c = ax.type === 'log' ? fromLog : ensureNumber;\n  ax.l2p = l2p;\n  ax.p2l = p2l;\n  ax.c2p = ax.type === 'log' ? function (v, clip) {\n    return l2p(toLog(v, clip));\n  } : l2p;\n  ax.p2c = ax.type === 'log' ? function (px) {\n    return fromLog(p2l(px));\n  } : p2l;\n\n  /*\n   * now type-specific conversions for **ALL** other combinations\n   * they're all written out, instead of being combinations of each other, for\n   * both clarity and speed.\n   */\n  if (['linear', '-'].indexOf(ax.type) !== -1) {\n    // all are data vals, but d and r need cleaning\n    ax.d2r = ax.r2d = ax.d2c = ax.r2c = ax.d2l = ax.r2l = cleanNumber;\n    ax.c2d = ax.c2r = ax.l2d = ax.l2r = ensureNumber;\n    ax.d2p = ax.r2p = function (v) {\n      return ax.l2p(cleanNumber(v));\n    };\n    ax.p2d = ax.p2r = p2l;\n    ax.cleanPos = ensureNumber;\n  } else if (ax.type === 'log') {\n    // d and c are data vals, r and l are logged (but d and r need cleaning)\n    ax.d2r = ax.d2l = function (v, clip) {\n      return toLog(cleanNumber(v), clip);\n    };\n    ax.r2d = ax.r2c = function (v) {\n      return fromLog(cleanNumber(v));\n    };\n    ax.d2c = ax.r2l = cleanNumber;\n    ax.c2d = ax.l2r = ensureNumber;\n    ax.c2r = toLog;\n    ax.l2d = fromLog;\n    ax.d2p = function (v, clip) {\n      return ax.l2p(ax.d2r(v, clip));\n    };\n    ax.p2d = function (px) {\n      return fromLog(p2l(px));\n    };\n    ax.r2p = function (v) {\n      return ax.l2p(cleanNumber(v));\n    };\n    ax.p2r = p2l;\n    ax.cleanPos = ensureNumber;\n  } else if (ax.type === 'date') {\n    // r and d are date strings, l and c are ms\n\n    /*\n     * Any of these functions with r and d on either side, calendar is the\n     * **3rd** argument. log has reserved the second argument.\n     *\n     * Unless you need the special behavior of the second arg (ms2DateTime\n     * uses this to limit precision, toLog uses true to clip negatives\n     * to offscreen low rather than undefined), it's safe to pass 0.\n     */\n    ax.d2r = ax.r2d = Lib.identity;\n    ax.d2c = ax.r2c = ax.d2l = ax.r2l = dt2ms;\n    ax.c2d = ax.c2r = ax.l2d = ax.l2r = ms2dt;\n    ax.d2p = ax.r2p = function (v, _, calendar) {\n      return ax.l2p(dt2ms(v, 0, calendar));\n    };\n    ax.p2d = ax.p2r = function (px, r, calendar) {\n      return ms2dt(p2l(px), r, calendar);\n    };\n    ax.cleanPos = function (v) {\n      return Lib.cleanDate(v, BADNUM, ax.calendar);\n    };\n  } else if (ax.type === 'category') {\n    // d is categories (string)\n    // c and l are indices (numbers)\n    // r is categories or numbers\n\n    ax.d2c = ax.d2l = setCategoryIndex;\n    ax.r2d = ax.c2d = ax.l2d = getCategoryName;\n    ax.d2r = ax.d2l_noadd = getCategoryPosition;\n    ax.r2c = function (v) {\n      var index = getRangePosition(v);\n      return index !== undefined ? index : ax.fraction2r(0.5);\n    };\n    ax.l2r = ax.c2r = ensureNumber;\n    ax.r2l = getRangePosition;\n    ax.d2p = function (v) {\n      return ax.l2p(ax.r2c(v));\n    };\n    ax.p2d = function (px) {\n      return getCategoryName(p2l(px));\n    };\n    ax.r2p = ax.d2p;\n    ax.p2r = p2l;\n    ax.cleanPos = function (v) {\n      if (typeof v === 'string' && v !== '') return v;\n      return ensureNumber(v);\n    };\n  } else if (ax.type === 'multicategory') {\n    // N.B. multicategory axes don't define d2c and d2l,\n    // as 'data-to-calcdata' conversion needs to take into\n    // account all data array items as in ax.makeCalcdata.\n\n    ax.r2d = ax.c2d = ax.l2d = getCategoryName;\n    ax.d2r = ax.d2l_noadd = getCategoryPosition;\n    ax.r2c = function (v) {\n      var index = getCategoryPosition(v);\n      return index !== undefined ? index : ax.fraction2r(0.5);\n    };\n    ax.r2c_just_indices = getCategoryIndex;\n    ax.l2r = ax.c2r = ensureNumber;\n    ax.r2l = getCategoryPosition;\n    ax.d2p = function (v) {\n      return ax.l2p(ax.r2c(v));\n    };\n    ax.p2d = function (px) {\n      return getCategoryName(p2l(px));\n    };\n    ax.r2p = ax.d2p;\n    ax.p2r = p2l;\n    ax.cleanPos = function (v) {\n      if (Array.isArray(v) || typeof v === 'string' && v !== '') return v;\n      return ensureNumber(v);\n    };\n    ax.setupMultiCategory = function (fullData) {\n      var traceIndices = ax._traceIndices;\n      var i, j;\n      var group = ax._matchGroup;\n      if (group && ax._categories.length === 0) {\n        for (var axId2 in group) {\n          if (axId2 !== axId) {\n            var ax2 = fullLayout[axisIds.id2name(axId2)];\n            traceIndices = traceIndices.concat(ax2._traceIndices);\n          }\n        }\n      }\n\n      // [ [cnt, {$cat: index}], for 1,2 ]\n      var seen = [[0, {}], [0, {}]];\n      // [ [arrayIn[0][i], arrayIn[1][i]], for i .. N ]\n      var list = [];\n      for (i = 0; i < traceIndices.length; i++) {\n        var trace = fullData[traceIndices[i]];\n        if (axLetter in trace) {\n          var arrayIn = trace[axLetter];\n          var len = trace._length || Lib.minRowLength(arrayIn);\n          if (isArrayOrTypedArray(arrayIn[0]) && isArrayOrTypedArray(arrayIn[1])) {\n            for (j = 0; j < len; j++) {\n              var v0 = arrayIn[0][j];\n              var v1 = arrayIn[1][j];\n              if (isValidCategory(v0) && isValidCategory(v1)) {\n                list.push([v0, v1]);\n                if (!(v0 in seen[0][1])) {\n                  seen[0][1][v0] = seen[0][0]++;\n                }\n                if (!(v1 in seen[1][1])) {\n                  seen[1][1][v1] = seen[1][0]++;\n                }\n              }\n            }\n          }\n        }\n      }\n      list.sort(function (a, b) {\n        var ind0 = seen[0][1];\n        var d = ind0[a[0]] - ind0[b[0]];\n        if (d) return d;\n        var ind1 = seen[1][1];\n        return ind1[a[1]] - ind1[b[1]];\n      });\n      for (i = 0; i < list.length; i++) {\n        setCategoryIndex(list[i]);\n      }\n    };\n  }\n\n  // find the range value at the specified (linear) fraction of the axis\n  ax.fraction2r = function (v) {\n    var rl0 = ax.r2l(ax.range[0]);\n    var rl1 = ax.r2l(ax.range[1]);\n    return ax.l2r(rl0 + v * (rl1 - rl0));\n  };\n\n  // find the fraction of the range at the specified range value\n  ax.r2fraction = function (v) {\n    var rl0 = ax.r2l(ax.range[0]);\n    var rl1 = ax.r2l(ax.range[1]);\n    return (ax.r2l(v) - rl0) / (rl1 - rl0);\n  };\n\n  /*\n   * cleanRange: make sure range is a couplet of valid & distinct values\n   * keep numbers away from the limits of floating point numbers,\n   * and dates away from the ends of our date system (+/- 9999 years)\n   *\n   * optional param rangeAttr: operate on a different attribute, like\n   * ax._r, rather than ax.range\n   */\n  ax.cleanRange = function (rangeAttr, opts) {\n    if (!opts) opts = {};\n    if (!rangeAttr) rangeAttr = 'range';\n    var range = Lib.nestedProperty(ax, rangeAttr).get();\n    var i, dflt;\n    if (ax.type === 'date') dflt = Lib.dfltRange(ax.calendar);else if (axLetter === 'y') dflt = constants.DFLTRANGEY;else if (ax._name === 'realaxis') dflt = [0, 1];else dflt = opts.dfltRange || constants.DFLTRANGEX;\n\n    // make sure we don't later mutate the defaults\n    dflt = dflt.slice();\n    if (ax.rangemode === 'tozero' || ax.rangemode === 'nonnegative') {\n      dflt[0] = 0;\n    }\n    if (!range || range.length !== 2) {\n      Lib.nestedProperty(ax, rangeAttr).set(dflt);\n      return;\n    }\n    if (ax.type === 'date' && !ax.autorange) {\n      // check if milliseconds or js date objects are provided for range\n      // and convert to date strings\n      range[0] = Lib.cleanDate(range[0], BADNUM, ax.calendar);\n      range[1] = Lib.cleanDate(range[1], BADNUM, ax.calendar);\n    }\n    for (i = 0; i < 2; i++) {\n      if (ax.type === 'date') {\n        if (!Lib.isDateTime(range[i], ax.calendar)) {\n          ax[rangeAttr] = dflt;\n          break;\n        }\n        if (ax.r2l(range[0]) === ax.r2l(range[1])) {\n          // split by +/- 1 second\n          var linCenter = Lib.constrain(ax.r2l(range[0]), Lib.MIN_MS + 1000, Lib.MAX_MS - 1000);\n          range[0] = ax.l2r(linCenter - 1000);\n          range[1] = ax.l2r(linCenter + 1000);\n          break;\n        }\n      } else {\n        if (!isNumeric(range[i])) {\n          if (isNumeric(range[1 - i])) {\n            range[i] = range[1 - i] * (i ? 10 : 0.1);\n          } else {\n            ax[rangeAttr] = dflt;\n            break;\n          }\n        }\n        if (range[i] < -FP_SAFE) range[i] = -FP_SAFE;else if (range[i] > FP_SAFE) range[i] = FP_SAFE;\n        if (range[0] === range[1]) {\n          // somewhat arbitrary: split by 1 or 1ppm, whichever is bigger\n          var inc = Math.max(1, Math.abs(range[0] * 1e-6));\n          range[0] -= inc;\n          range[1] += inc;\n        }\n      }\n    }\n  };\n\n  // set scaling to pixels\n  ax.setScale = function (usePrivateRange) {\n    var gs = fullLayout._size;\n\n    // make sure we have a domain (pull it in from the axis\n    // this one is overlaying if necessary)\n    if (ax.overlaying) {\n      var ax2 = axisIds.getFromId({\n        _fullLayout: fullLayout\n      }, ax.overlaying);\n      ax.domain = ax2.domain;\n    }\n\n    // While transitions are occurring, we get a double-transform\n    // issue if we transform the drawn layer *and* use the new axis range to\n    // draw the data. This allows us to construct setConvert using the pre-\n    // interaction values of the range:\n    var rangeAttr = usePrivateRange && ax._r ? '_r' : 'range';\n    var calendar = ax.calendar;\n    ax.cleanRange(rangeAttr);\n    var rl0 = ax.r2l(ax[rangeAttr][0], calendar);\n    var rl1 = ax.r2l(ax[rangeAttr][1], calendar);\n    var isY = axLetter === 'y';\n    if (isY) {\n      ax._offset = gs.t + (1 - ax.domain[1]) * gs.h;\n      ax._length = gs.h * (ax.domain[1] - ax.domain[0]);\n      ax._m = ax._length / (rl0 - rl1);\n      ax._b = -ax._m * rl1;\n    } else {\n      ax._offset = gs.l + ax.domain[0] * gs.w;\n      ax._length = gs.w * (ax.domain[1] - ax.domain[0]);\n      ax._m = ax._length / (rl1 - rl0);\n      ax._b = -ax._m * rl0;\n    }\n\n    // set of \"N\" disjoint rangebreaks inside the range\n    ax._rangebreaks = [];\n    // length of these rangebreaks in value space - negative on reversed axes\n    ax._lBreaks = 0;\n    // l2p slope (same for all intervals)\n    ax._m2 = 0;\n    // set of l2p offsets (one for each of the (N+1) piecewise intervals)\n    ax._B = [];\n    if (ax.rangebreaks) {\n      var i, brk;\n      ax._rangebreaks = ax.locateBreaks(Math.min(rl0, rl1), Math.max(rl0, rl1));\n      if (ax._rangebreaks.length) {\n        for (i = 0; i < ax._rangebreaks.length; i++) {\n          brk = ax._rangebreaks[i];\n          ax._lBreaks += Math.abs(brk.max - brk.min);\n        }\n        var flip = isY;\n        if (rl0 > rl1) flip = !flip;\n        if (flip) ax._rangebreaks.reverse();\n        var sign = flip ? -1 : 1;\n        ax._m2 = sign * ax._length / (Math.abs(rl1 - rl0) - ax._lBreaks);\n        ax._B.push(-ax._m2 * (isY ? rl1 : rl0));\n        for (i = 0; i < ax._rangebreaks.length; i++) {\n          brk = ax._rangebreaks[i];\n          ax._B.push(ax._B[ax._B.length - 1] - sign * ax._m2 * (brk.max - brk.min));\n        }\n\n        // fill pixel (i.e. 'p') min/max here,\n        // to not have to loop through the _rangebreaks twice during `p2l`\n        for (i = 0; i < ax._rangebreaks.length; i++) {\n          brk = ax._rangebreaks[i];\n          brk.pmin = l2p(brk.min);\n          brk.pmax = l2p(brk.max);\n        }\n      }\n    }\n    if (!isFinite(ax._m) || !isFinite(ax._b) || ax._length < 0) {\n      fullLayout._replotting = false;\n      throw new Error('Something went wrong with axis scaling');\n    }\n  };\n  ax.maskBreaks = function (v) {\n    var rangebreaksIn = ax.rangebreaks || [];\n    var bnds, b0, b1, vb, vDate;\n    if (!rangebreaksIn._cachedPatterns) {\n      rangebreaksIn._cachedPatterns = rangebreaksIn.map(function (brk) {\n        return brk.enabled && brk.bounds ? Lib.simpleMap(brk.bounds, brk.pattern ? cleanNumber : ax.d2c // case of pattern: ''\n        ) : null;\n      });\n    }\n    if (!rangebreaksIn._cachedValues) {\n      rangebreaksIn._cachedValues = rangebreaksIn.map(function (brk) {\n        return brk.enabled && brk.values ? Lib.simpleMap(brk.values, ax.d2c).sort(Lib.sorterAsc) : null;\n      });\n    }\n    for (var i = 0; i < rangebreaksIn.length; i++) {\n      var brk = rangebreaksIn[i];\n      if (brk.enabled) {\n        if (brk.bounds) {\n          var pattern = brk.pattern;\n          bnds = rangebreaksIn._cachedPatterns[i];\n          b0 = bnds[0];\n          b1 = bnds[1];\n          switch (pattern) {\n            case WEEKDAY_PATTERN:\n              vDate = new Date(v);\n              vb = vDate.getUTCDay();\n              if (b0 > b1) {\n                b1 += 7;\n                if (vb < b0) vb += 7;\n              }\n              break;\n            case HOUR_PATTERN:\n              vDate = new Date(v);\n              var hours = vDate.getUTCHours();\n              var minutes = vDate.getUTCMinutes();\n              var seconds = vDate.getUTCSeconds();\n              var milliseconds = vDate.getUTCMilliseconds();\n              vb = hours + (minutes / 60 + seconds / 3600 + milliseconds / 3600000);\n              if (b0 > b1) {\n                b1 += 24;\n                if (vb < b0) vb += 24;\n              }\n              break;\n            case '':\n              // N.B. should work on date axes as well!\n              // e.g. { bounds: ['2020-01-04', '2020-01-05 23:59'] }\n              // TODO should work with reversed-range axes\n              vb = v;\n              break;\n          }\n          if (vb >= b0 && vb < b1) return BADNUM;\n        } else {\n          var vals = rangebreaksIn._cachedValues[i];\n          for (var j = 0; j < vals.length; j++) {\n            b0 = vals[j];\n            b1 = b0 + brk.dvalue;\n            if (v >= b0 && v < b1) return BADNUM;\n          }\n        }\n      }\n    }\n    return v;\n  };\n  ax.locateBreaks = function (r0, r1) {\n    var i, bnds, b0, b1;\n    var rangebreaksOut = [];\n    if (!ax.rangebreaks) return rangebreaksOut;\n    var rangebreaksIn = ax.rangebreaks.slice().sort(function (a, b) {\n      if (a.pattern === WEEKDAY_PATTERN && b.pattern === HOUR_PATTERN) return -1;\n      if (b.pattern === WEEKDAY_PATTERN && a.pattern === HOUR_PATTERN) return 1;\n      return 0;\n    });\n    var addBreak = function (min, max) {\n      min = Lib.constrain(min, r0, r1);\n      max = Lib.constrain(max, r0, r1);\n      if (min === max) return;\n      var isNewBreak = true;\n      for (var j = 0; j < rangebreaksOut.length; j++) {\n        var brkj = rangebreaksOut[j];\n        if (min < brkj.max && max >= brkj.min) {\n          if (min < brkj.min) {\n            brkj.min = min;\n          }\n          if (max > brkj.max) {\n            brkj.max = max;\n          }\n          isNewBreak = false;\n        }\n      }\n      if (isNewBreak) {\n        rangebreaksOut.push({\n          min: min,\n          max: max\n        });\n      }\n    };\n    for (i = 0; i < rangebreaksIn.length; i++) {\n      var brk = rangebreaksIn[i];\n      if (brk.enabled) {\n        if (brk.bounds) {\n          var t0 = r0;\n          var t1 = r1;\n          if (brk.pattern) {\n            // to remove decimal (most often found in auto ranges)\n            t0 = Math.floor(t0);\n          }\n          bnds = Lib.simpleMap(brk.bounds, brk.pattern ? cleanNumber : ax.r2l);\n          b0 = bnds[0];\n          b1 = bnds[1];\n\n          // r0 value as date\n          var t0Date = new Date(t0);\n          // r0 value for break pattern\n          var bndDelta;\n          // step in ms between rangebreaks\n          var step;\n          switch (brk.pattern) {\n            case WEEKDAY_PATTERN:\n              step = ONEWEEK;\n              bndDelta = ((b1 < b0 ? 7 : 0) + (b1 - b0)) * ONEDAY;\n              t0 += b0 * ONEDAY - (t0Date.getUTCDay() * ONEDAY + t0Date.getUTCHours() * ONEHOUR + t0Date.getUTCMinutes() * ONEMIN + t0Date.getUTCSeconds() * ONESEC + t0Date.getUTCMilliseconds());\n              break;\n            case HOUR_PATTERN:\n              step = ONEDAY;\n              bndDelta = ((b1 < b0 ? 24 : 0) + (b1 - b0)) * ONEHOUR;\n              t0 += b0 * ONEHOUR - (t0Date.getUTCHours() * ONEHOUR + t0Date.getUTCMinutes() * ONEMIN + t0Date.getUTCSeconds() * ONESEC + t0Date.getUTCMilliseconds());\n              break;\n            default:\n              t0 = Math.min(bnds[0], bnds[1]);\n              t1 = Math.max(bnds[0], bnds[1]);\n              step = t1 - t0;\n              bndDelta = step;\n          }\n          for (var t = t0; t < t1; t += step) {\n            addBreak(t, t + bndDelta);\n          }\n        } else {\n          var vals = Lib.simpleMap(brk.values, ax.d2c);\n          for (var j = 0; j < vals.length; j++) {\n            b0 = vals[j];\n            b1 = b0 + brk.dvalue;\n            addBreak(b0, b1);\n          }\n        }\n      }\n    }\n    rangebreaksOut.sort(function (a, b) {\n      return a.min - b.min;\n    });\n    return rangebreaksOut;\n  };\n\n  // makeCalcdata: takes an x or y array and converts it\n  // to a position on the axis object \"ax\"\n  // inputs:\n  //      trace - a data object from gd.data\n  //      axLetter - a string, either 'x' or 'y', for which item\n  //          to convert (TODO: is this now always the same as\n  //          the first letter of ax._id?)\n  // in case the expected data isn't there, make a list of\n  // integers based on the opposite data\n  ax.makeCalcdata = function (trace, axLetter, opts) {\n    var arrayIn, arrayOut, i, len;\n    var axType = ax.type;\n    var cal = axType === 'date' && trace[axLetter + 'calendar'];\n    if (axLetter in trace) {\n      arrayIn = trace[axLetter];\n      len = trace._length || Lib.minRowLength(arrayIn);\n      if (Lib.isTypedArray(arrayIn) && (axType === 'linear' || axType === 'log')) {\n        if (len === arrayIn.length) {\n          return arrayIn;\n        } else if (arrayIn.subarray) {\n          return arrayIn.subarray(0, len);\n        }\n      }\n      if (axType === 'multicategory') {\n        return setMultiCategoryIndex(arrayIn, len);\n      }\n      arrayOut = new Array(len);\n      for (i = 0; i < len; i++) {\n        arrayOut[i] = ax.d2c(arrayIn[i], 0, cal, opts);\n      }\n    } else {\n      var v0 = axLetter + '0' in trace ? ax.d2c(trace[axLetter + '0'], 0, cal) : 0;\n      var dv = trace['d' + axLetter] ? Number(trace['d' + axLetter]) : 1;\n\n      // the opposing data, for size if we have x and dx etc\n      arrayIn = trace[{\n        x: 'y',\n        y: 'x'\n      }[axLetter]];\n      len = trace._length || arrayIn.length;\n      arrayOut = new Array(len);\n      for (i = 0; i < len; i++) {\n        arrayOut[i] = v0 + i * dv;\n      }\n    }\n\n    // mask (i.e. set to BADNUM) coords that fall inside rangebreaks\n    if (ax.rangebreaks) {\n      for (i = 0; i < len; i++) {\n        arrayOut[i] = ax.maskBreaks(arrayOut[i]);\n      }\n    }\n    return arrayOut;\n  };\n  ax.isValidRange = function (range) {\n    return Array.isArray(range) && range.length === 2 && isNumeric(ax.r2l(range[0])) && isNumeric(ax.r2l(range[1]));\n  };\n  ax.isPtWithinRange = function (d, calendar) {\n    var coord = ax.c2l(d[axLetter], null, calendar);\n    var r0 = ax.r2l(ax.range[0]);\n    var r1 = ax.r2l(ax.range[1]);\n    if (r0 < r1) {\n      return r0 <= coord && coord <= r1;\n    } else {\n      // Reversed axis case.\n      return r1 <= coord && coord <= r0;\n    }\n  };\n  ax._emptyCategories = function () {\n    ax._categories = [];\n    ax._categoriesMap = {};\n  };\n\n  // should skip if not category nor multicategory\n  ax.clearCalc = function () {\n    var group = ax._matchGroup;\n    if (group) {\n      var categories = null;\n      var categoriesMap = null;\n      for (var axId2 in group) {\n        var ax2 = fullLayout[axisIds.id2name(axId2)];\n        if (ax2._categories) {\n          categories = ax2._categories;\n          categoriesMap = ax2._categoriesMap;\n          break;\n        }\n      }\n      if (categories && categoriesMap) {\n        ax._categories = categories;\n        ax._categoriesMap = categoriesMap;\n      } else {\n        ax._emptyCategories();\n      }\n    } else {\n      ax._emptyCategories();\n    }\n    if (ax._initialCategories) {\n      for (var j = 0; j < ax._initialCategories.length; j++) {\n        setCategoryIndex(ax._initialCategories[j]);\n      }\n    }\n  };\n\n  // sort the axis (and all the matching ones) by _initialCategories\n  // returns the indices of the traces affected by the reordering\n  ax.sortByInitialCategories = function () {\n    var affectedTraces = [];\n    ax._emptyCategories();\n    if (ax._initialCategories) {\n      for (var j = 0; j < ax._initialCategories.length; j++) {\n        setCategoryIndex(ax._initialCategories[j]);\n      }\n    }\n    affectedTraces = affectedTraces.concat(ax._traceIndices);\n\n    // Propagate to matching axes\n    var group = ax._matchGroup;\n    for (var axId2 in group) {\n      if (axId === axId2) continue;\n      var ax2 = fullLayout[axisIds.id2name(axId2)];\n      ax2._categories = ax._categories;\n      ax2._categoriesMap = ax._categoriesMap;\n      affectedTraces = affectedTraces.concat(ax2._traceIndices);\n    }\n    return affectedTraces;\n  };\n\n  // Propagate localization into the axis so that\n  // methods in Axes can use it w/o having to pass fullLayout\n  // Default (non-d3) number formatting uses separators directly\n  // dates and d3-formatted numbers use the d3 locale\n  // Fall back on default format for dummy axes that don't care about formatting\n  var locale = fullLayout._d3locale;\n  if (ax.type === 'date') {\n    ax._dateFormat = locale ? locale.timeFormat : utcFormat;\n    ax._extraFormat = fullLayout._extraFormat;\n  }\n  // occasionally we need _numFormat to pass through\n  // even though it won't be needed by this axis\n  ax._separators = fullLayout.separators;\n  ax._numFormat = locale ? locale.numberFormat : numberFormat;\n\n  // and for bar charts and box plots: reset forced minimum tick spacing\n  delete ax._minDtick;\n  delete ax._forceTick0;\n};\n\n/***/ }),\n\n/***/ 59652:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/*\n * Attributes 'showexponent', 'showtickprefix' and 'showticksuffix'\n * share values.\n *\n * If only 1 attribute is set,\n * the remaining attributes inherit that value.\n *\n * If 2 attributes are set to the same value,\n * the remaining attribute inherits that value.\n *\n * If 2 attributes are set to different values,\n * the remaining is set to its dflt value.\n *\n */\nmodule.exports = function getShowAttrDflt(containerIn) {\n  var showAttrsAll = ['showexponent', 'showtickprefix', 'showticksuffix'];\n  var showAttrs = showAttrsAll.filter(function (a) {\n    return containerIn[a] !== undefined;\n  });\n  var sameVal = function (a) {\n    return containerIn[a] === containerIn[showAttrs[0]];\n  };\n  if (showAttrs.every(sameVal) || showAttrs.length === 1) {\n    return containerIn[showAttrs[0]];\n  }\n};\n\n/***/ }),\n\n/***/ 96115:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1562614__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_1562614__(71828);\nvar contrast = (__nested_webpack_require_1562614__(7901).contrast);\nvar layoutAttributes = __nested_webpack_require_1562614__(13838);\nvar getShowAttrDflt = __nested_webpack_require_1562614__(59652);\nvar handleArrayContainerDefaults = __nested_webpack_require_1562614__(85501);\nmodule.exports = function handleTickLabelDefaults(containerIn, containerOut, coerce, axType, options) {\n  if (!options) options = {};\n  var showAttrDflt = getShowAttrDflt(containerIn);\n  var showTickLabels = coerce('showticklabels');\n  if (showTickLabels) {\n    var font = options.font || {};\n    var contColor = containerOut.color;\n    var position = containerOut.ticklabelposition || '';\n    var dfltFontColor = position.indexOf('inside') !== -1 ? contrast(options.bgColor) :\n    // as with titlefont.color, inherit axis.color only if one was\n    // explicitly provided\n    contColor && contColor !== layoutAttributes.color.dflt ? contColor : font.color;\n    Lib.coerceFont(coerce, 'tickfont', {\n      family: font.family,\n      size: font.size,\n      color: dfltFontColor\n    });\n    if (!options.noTicklabelstep && axType !== 'multicategory' && axType !== 'log') {\n      coerce('ticklabelstep');\n    }\n    if (!options.noAng) coerce('tickangle');\n    if (axType !== 'category') {\n      var tickFormat = coerce('tickformat');\n      handleArrayContainerDefaults(containerIn, containerOut, {\n        name: 'tickformatstops',\n        inclusionAttr: 'enabled',\n        handleItemDefaults: tickformatstopDefaults\n      });\n      if (!containerOut.tickformatstops.length) {\n        delete containerOut.tickformatstops;\n      }\n      if (!options.noExp && !tickFormat && axType !== 'date') {\n        coerce('showexponent', showAttrDflt);\n        coerce('exponentformat');\n        coerce('minexponent');\n        coerce('separatethousands');\n      }\n    }\n  }\n};\nfunction tickformatstopDefaults(valueIn, valueOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(valueIn, valueOut, layoutAttributes.tickformatstops, attr, dflt);\n  }\n  var enabled = coerce('enabled');\n  if (enabled) {\n    coerce('dtickrange');\n    coerce('value');\n  }\n}\n\n/***/ }),\n\n/***/ 38701:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1564823__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_1564823__(71828);\nvar layoutAttributes = __nested_webpack_require_1564823__(13838);\n\n/**\n * options: inherits outerTicks from axes.handleAxisDefaults\n */\nmodule.exports = function handleTickMarkDefaults(containerIn, containerOut, coerce, options) {\n  var isMinor = options.isMinor;\n  var cIn = isMinor ? containerIn.minor || {} : containerIn;\n  var cOut = isMinor ? containerOut.minor : containerOut;\n  var lAttr = isMinor ? layoutAttributes.minor : layoutAttributes;\n  var prefix = isMinor ? 'minor.' : '';\n  var tickLen = Lib.coerce2(cIn, cOut, lAttr, 'ticklen', isMinor ? (containerOut.ticklen || 5) * 0.6 : undefined);\n  var tickWidth = Lib.coerce2(cIn, cOut, lAttr, 'tickwidth', isMinor ? containerOut.tickwidth || 1 : undefined);\n  var tickColor = Lib.coerce2(cIn, cOut, lAttr, 'tickcolor', (isMinor ? containerOut.tickcolor : undefined) || cOut.color);\n  var showTicks = coerce(prefix + 'ticks', !isMinor && options.outerTicks || tickLen || tickWidth || tickColor ? 'outside' : '');\n  if (!showTicks) {\n    delete cOut.ticklen;\n    delete cOut.tickwidth;\n    delete cOut.tickcolor;\n  }\n};\n\n/***/ }),\n\n/***/ 26218:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1566039__) {\n\n\"use strict\";\n\n\nvar cleanTicks = __nested_webpack_require_1566039__(66287);\nvar isArrayOrTypedArray = (__nested_webpack_require_1566039__(71828).isArrayOrTypedArray);\nmodule.exports = function handleTickValueDefaults(containerIn, containerOut, coerce, axType, opts) {\n  if (!opts) opts = {};\n  var isMinor = opts.isMinor;\n  var cIn = isMinor ? containerIn.minor || {} : containerIn;\n  var cOut = isMinor ? containerOut.minor : containerOut;\n  var prefix = isMinor ? 'minor.' : '';\n  function readInput(attr) {\n    var v = cIn[attr];\n    return v !== undefined ? v : (cOut._template || {})[attr];\n  }\n  var _tick0 = readInput('tick0');\n  var _dtick = readInput('dtick');\n  var _tickvals = readInput('tickvals');\n  var tickmodeDefault = isArrayOrTypedArray(_tickvals) ? 'array' : _dtick ? 'linear' : 'auto';\n  var tickmode = coerce(prefix + 'tickmode', tickmodeDefault);\n  if (tickmode === 'auto' || tickmode === 'sync') {\n    coerce(prefix + 'nticks');\n  } else if (tickmode === 'linear') {\n    // dtick is usually a positive number, but there are some\n    // special strings available for log or date axes\n    // tick0 also has special logic\n    var dtick = cOut.dtick = cleanTicks.dtick(_dtick, axType);\n    cOut.tick0 = cleanTicks.tick0(_tick0, axType, containerOut.calendar, dtick);\n  } else if (axType !== 'multicategory') {\n    var tickvals = coerce(prefix + 'tickvals');\n    if (tickvals === undefined) cOut.tickmode = 'auto';else if (!isMinor) coerce('ticktext');\n  }\n};\n\n/***/ }),\n\n/***/ 66847:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1567586__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_1567586__(39898);\nvar Registry = __nested_webpack_require_1567586__(73972);\nvar Lib = __nested_webpack_require_1567586__(71828);\nvar Drawing = __nested_webpack_require_1567586__(91424);\nvar Axes = __nested_webpack_require_1567586__(89298);\n\n/**\n * transitionAxes\n *\n * transition axes from one set of ranges to another, using a svg\n * transformations, similar to during panning.\n *\n * @param {DOM element | object} gd\n * @param {array} edits : array of 'edits', each item with\n * - plotinfo {object} subplot object\n * - xr0 {array} initial x-range\n * - xr1 {array} end x-range\n * - yr0 {array} initial y-range\n * - yr1 {array} end y-range\n * @param {object} transitionOpts\n * @param {function} makeOnCompleteCallback\n */\nmodule.exports = function transitionAxes(gd, edits, transitionOpts, makeOnCompleteCallback) {\n  var fullLayout = gd._fullLayout;\n\n  // special case for redraw:false Plotly.animate that relies on this\n  // to update axis-referenced layout components\n  if (edits.length === 0) {\n    Axes.redrawComponents(gd);\n    return;\n  }\n  function unsetSubplotTransform(subplot) {\n    var xa = subplot.xaxis;\n    var ya = subplot.yaxis;\n    fullLayout._defs.select('#' + subplot.clipId + '> rect').call(Drawing.setTranslate, 0, 0).call(Drawing.setScale, 1, 1);\n    subplot.plot.call(Drawing.setTranslate, xa._offset, ya._offset).call(Drawing.setScale, 1, 1);\n    var traceGroups = subplot.plot.selectAll('.scatterlayer .trace');\n\n    // This is specifically directed at scatter traces, applying an inverse\n    // scale to individual points to counteract the scale of the trace\n    // as a whole:\n    traceGroups.selectAll('.point').call(Drawing.setPointGroupScale, 1, 1);\n    traceGroups.selectAll('.textpoint').call(Drawing.setTextPointsScale, 1, 1);\n    traceGroups.call(Drawing.hideOutsideRangePoints, subplot);\n  }\n  function updateSubplot(edit, progress) {\n    var plotinfo = edit.plotinfo;\n    var xa = plotinfo.xaxis;\n    var ya = plotinfo.yaxis;\n    var xlen = xa._length;\n    var ylen = ya._length;\n    var editX = !!edit.xr1;\n    var editY = !!edit.yr1;\n    var viewBox = [];\n    if (editX) {\n      var xr0 = Lib.simpleMap(edit.xr0, xa.r2l);\n      var xr1 = Lib.simpleMap(edit.xr1, xa.r2l);\n      var dx0 = xr0[1] - xr0[0];\n      var dx1 = xr1[1] - xr1[0];\n      viewBox[0] = (xr0[0] * (1 - progress) + progress * xr1[0] - xr0[0]) / (xr0[1] - xr0[0]) * xlen;\n      viewBox[2] = xlen * (1 - progress + progress * dx1 / dx0);\n      xa.range[0] = xa.l2r(xr0[0] * (1 - progress) + progress * xr1[0]);\n      xa.range[1] = xa.l2r(xr0[1] * (1 - progress) + progress * xr1[1]);\n    } else {\n      viewBox[0] = 0;\n      viewBox[2] = xlen;\n    }\n    if (editY) {\n      var yr0 = Lib.simpleMap(edit.yr0, ya.r2l);\n      var yr1 = Lib.simpleMap(edit.yr1, ya.r2l);\n      var dy0 = yr0[1] - yr0[0];\n      var dy1 = yr1[1] - yr1[0];\n      viewBox[1] = (yr0[1] * (1 - progress) + progress * yr1[1] - yr0[1]) / (yr0[0] - yr0[1]) * ylen;\n      viewBox[3] = ylen * (1 - progress + progress * dy1 / dy0);\n      ya.range[0] = xa.l2r(yr0[0] * (1 - progress) + progress * yr1[0]);\n      ya.range[1] = ya.l2r(yr0[1] * (1 - progress) + progress * yr1[1]);\n    } else {\n      viewBox[1] = 0;\n      viewBox[3] = ylen;\n    }\n    Axes.drawOne(gd, xa, {\n      skipTitle: true\n    });\n    Axes.drawOne(gd, ya, {\n      skipTitle: true\n    });\n    Axes.redrawComponents(gd, [xa._id, ya._id]);\n    var xScaleFactor = editX ? xlen / viewBox[2] : 1;\n    var yScaleFactor = editY ? ylen / viewBox[3] : 1;\n    var clipDx = editX ? viewBox[0] : 0;\n    var clipDy = editY ? viewBox[1] : 0;\n    var fracDx = editX ? viewBox[0] / viewBox[2] * xlen : 0;\n    var fracDy = editY ? viewBox[1] / viewBox[3] * ylen : 0;\n    var plotDx = xa._offset - fracDx;\n    var plotDy = ya._offset - fracDy;\n    plotinfo.clipRect.call(Drawing.setTranslate, clipDx, clipDy).call(Drawing.setScale, 1 / xScaleFactor, 1 / yScaleFactor);\n    plotinfo.plot.call(Drawing.setTranslate, plotDx, plotDy).call(Drawing.setScale, xScaleFactor, yScaleFactor);\n\n    // apply an inverse scale to individual points to counteract\n    // the scale of the trace group.\n    Drawing.setPointGroupScale(plotinfo.zoomScalePts, 1 / xScaleFactor, 1 / yScaleFactor);\n    Drawing.setTextPointsScale(plotinfo.zoomScaleTxt, 1 / xScaleFactor, 1 / yScaleFactor);\n  }\n  var onComplete;\n  if (makeOnCompleteCallback) {\n    // This module makes the choice whether or not it notifies Plotly.transition\n    // about completion:\n    onComplete = makeOnCompleteCallback();\n  }\n  function transitionComplete() {\n    var aobj = {};\n    for (var i = 0; i < edits.length; i++) {\n      var edit = edits[i];\n      var xa = edit.plotinfo.xaxis;\n      var ya = edit.plotinfo.yaxis;\n      if (edit.xr1) aobj[xa._name + '.range'] = edit.xr1.slice();\n      if (edit.yr1) aobj[ya._name + '.range'] = edit.yr1.slice();\n    }\n\n    // Signal that this transition has completed:\n    onComplete && onComplete();\n    return Registry.call('relayout', gd, aobj).then(function () {\n      for (var i = 0; i < edits.length; i++) {\n        unsetSubplotTransform(edits[i].plotinfo);\n      }\n    });\n  }\n  function transitionInterrupt() {\n    var aobj = {};\n    for (var i = 0; i < edits.length; i++) {\n      var edit = edits[i];\n      var xa = edit.plotinfo.xaxis;\n      var ya = edit.plotinfo.yaxis;\n      if (edit.xr0) aobj[xa._name + '.range'] = edit.xr0.slice();\n      if (edit.yr0) aobj[ya._name + '.range'] = edit.yr0.slice();\n    }\n    return Registry.call('relayout', gd, aobj).then(function () {\n      for (var i = 0; i < edits.length; i++) {\n        unsetSubplotTransform(edits[i].plotinfo);\n      }\n    });\n  }\n  var t1, t2, raf;\n  var easeFn = d3.ease(transitionOpts.easing);\n  gd._transitionData._interruptCallbacks.push(function () {\n    window.cancelAnimationFrame(raf);\n    raf = null;\n    return transitionInterrupt();\n  });\n  function doFrame() {\n    t2 = Date.now();\n    var tInterp = Math.min(1, (t2 - t1) / transitionOpts.duration);\n    var progress = easeFn(tInterp);\n    for (var i = 0; i < edits.length; i++) {\n      updateSubplot(edits[i], progress);\n    }\n    if (t2 - t1 > transitionOpts.duration) {\n      transitionComplete();\n      raf = window.cancelAnimationFrame(doFrame);\n    } else {\n      raf = window.requestAnimationFrame(doFrame);\n    }\n  }\n  t1 = Date.now();\n  raf = window.requestAnimationFrame(doFrame);\n  return Promise.resolve();\n};\n\n/***/ }),\n\n/***/ 951:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1574027__) {\n\n\"use strict\";\n\n\nvar traceIs = (__nested_webpack_require_1574027__(73972).traceIs);\nvar autoType = __nested_webpack_require_1574027__(4322);\n\n/*\n *  data: the plot data to use in choosing auto type\n *  name: axis object name (ie 'xaxis') if one should be stored\n */\nmodule.exports = function handleTypeDefaults(containerIn, containerOut, coerce, options) {\n  coerce('autotypenumbers', options.autotypenumbersDflt);\n  var axType = coerce('type', (options.splomStash || {}).type);\n  if (axType === '-') {\n    setAutoType(containerOut, options.data);\n    if (containerOut.type === '-') {\n      containerOut.type = 'linear';\n    } else {\n      // copy autoType back to input axis\n      // note that if this object didn't exist\n      // in the input layout, we have to put it in\n      // this happens in the main supplyDefaults function\n      containerIn.type = containerOut.type;\n    }\n  }\n};\nfunction setAutoType(ax, data) {\n  // new logic: let people specify any type they want,\n  // only autotype if type is '-'\n  if (ax.type !== '-') return;\n  var id = ax._id;\n  var axLetter = id.charAt(0);\n  var i;\n\n  // support 3d\n  if (id.indexOf('scene') !== -1) id = axLetter;\n  var d0 = getFirstNonEmptyTrace(data, id, axLetter);\n  if (!d0) return;\n\n  // first check for histograms, as the count direction\n  // should always default to a linear axis\n  if (d0.type === 'histogram' && axLetter === {\n    v: 'y',\n    h: 'x'\n  }[d0.orientation || 'v']) {\n    ax.type = 'linear';\n    return;\n  }\n  var calAttr = axLetter + 'calendar';\n  var calendar = d0[calAttr];\n  var opts = {\n    noMultiCategory: !traceIs(d0, 'cartesian') || traceIs(d0, 'noMultiCategory')\n  };\n\n  // To not confuse 2D x/y used for per-box sample points for multicategory coordinates\n  if (d0.type === 'box' && d0._hasPreCompStats && axLetter === {\n    h: 'x',\n    v: 'y'\n  }[d0.orientation || 'v']) {\n    opts.noMultiCategory = true;\n  }\n  opts.autotypenumbers = ax.autotypenumbers;\n\n  // check all boxes on this x axis to see\n  // if they're dates, numbers, or categories\n  if (isBoxWithoutPositionCoords(d0, axLetter)) {\n    var posLetter = getBoxPosLetter(d0);\n    var boxPositions = [];\n    for (i = 0; i < data.length; i++) {\n      var trace = data[i];\n      if (!traceIs(trace, 'box-violin') || (trace[axLetter + 'axis'] || axLetter) !== id) continue;\n      if (trace[posLetter] !== undefined) boxPositions.push(trace[posLetter][0]);else if (trace.name !== undefined) boxPositions.push(trace.name);else boxPositions.push('text');\n      if (trace[calAttr] !== calendar) calendar = undefined;\n    }\n    ax.type = autoType(boxPositions, calendar, opts);\n  } else if (d0.type === 'splom') {\n    var dimensions = d0.dimensions;\n    var dim = dimensions[d0._axesDim[id]];\n    if (dim.visible) ax.type = autoType(dim.values, calendar, opts);\n  } else {\n    ax.type = autoType(d0[axLetter] || [d0[axLetter + '0']], calendar, opts);\n  }\n}\nfunction getFirstNonEmptyTrace(data, id, axLetter) {\n  for (var i = 0; i < data.length; i++) {\n    var trace = data[i];\n    if (trace.type === 'splom' && trace._length > 0 && (trace['_' + axLetter + 'axes'] || {})[id]) {\n      return trace;\n    }\n    if ((trace[axLetter + 'axis'] || axLetter) === id) {\n      if (isBoxWithoutPositionCoords(trace, axLetter)) {\n        return trace;\n      } else if ((trace[axLetter] || []).length || trace[axLetter + '0']) {\n        return trace;\n      }\n    }\n  }\n}\nfunction getBoxPosLetter(trace) {\n  return {\n    v: 'x',\n    h: 'y'\n  }[trace.orientation || 'v'];\n}\nfunction isBoxWithoutPositionCoords(trace, axLetter) {\n  var posLetter = getBoxPosLetter(trace);\n  var isBox = traceIs(trace, 'box-violin');\n  var isCandlestick = traceIs(trace._fullInput || {}, 'candlestick');\n  return isBox && !isCandlestick && axLetter === posLetter && trace[posLetter] === undefined && trace[posLetter + '0'] === undefined;\n}\n\n/***/ }),\n\n/***/ 31137:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_1577938__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_1577938__(73972);\nvar Lib = __nested_webpack_require_1577938__(71828);\n\n/*\n * Create or update an observer. This function is designed to be\n * idempotent so that it can be called over and over as the component\n * updates, and will attach and detach listeners as needed.\n *\n * @param {optional object} container\n *      An object on which the observer is stored. This is the mechanism\n *      by which it is idempotent. If it already exists, another won't be\n *      added. Each time it's called, the value lookup table is updated.\n * @param {array} commandList\n *      An array of commands, following either `buttons` of `updatemenus`\n *      or `steps` of `sliders`.\n * @param {function} onchange\n *      A listener called when the value is changed. Receives data object\n *      with information about the new state.\n */\nexports.manageCommandObserver = function (gd, container, commandList, onchange) {\n  var ret = {};\n  var enabled = true;\n  if (container && container._commandObserver) {\n    ret = container._commandObserver;\n  }\n  if (!ret.cache) {\n    ret.cache = {};\n  }\n\n  // Either create or just recompute this:\n  ret.lookupTable = {};\n  var binding = exports.hasSimpleAPICommandBindings(gd, commandList, ret.lookupTable);\n  if (container && container._commandObserver) {\n    if (!binding) {\n      // If container exists and there are no longer any bindings,\n      // remove existing:\n      if (container._commandObserver.remove) {\n        container._commandObserver.remove();\n        container._commandObserver = null;\n        return ret;\n      }\n    } else {\n      // If container exists and there *are* bindings, then the lookup\n      // table should have been updated and check is already attached,\n      // so there's nothing to be done:\n      return ret;\n    }\n  }\n\n  // Determine whether there's anything to do for this binding:\n\n  if (binding) {\n    // Build the cache:\n    bindingValueHasChanged(gd, binding, ret.cache);\n    ret.check = function check() {\n      if (!enabled) return;\n      var update = bindingValueHasChanged(gd, binding, ret.cache);\n      if (update.changed && onchange) {\n        // Disable checks for the duration of this command in order to avoid\n        // infinite loops:\n        if (ret.lookupTable[update.value] !== undefined) {\n          ret.disable();\n          Promise.resolve(onchange({\n            value: update.value,\n            type: binding.type,\n            prop: binding.prop,\n            traces: binding.traces,\n            index: ret.lookupTable[update.value]\n          })).then(ret.enable, ret.enable);\n        }\n      }\n      return update.changed;\n    };\n    var checkEvents = ['plotly_relayout', 'plotly_redraw', 'plotly_restyle', 'plotly_update', 'plotly_animatingframe', 'plotly_afterplot'];\n    for (var i = 0; i < checkEvents.length; i++) {\n      gd._internalOn(checkEvents[i], ret.check);\n    }\n    ret.remove = function () {\n      for (var i = 0; i < checkEvents.length; i++) {\n        gd._removeInternalListener(checkEvents[i], ret.check);\n      }\n    };\n  } else {\n    // TODO: It'd be really neat to actually give a *reason* for this, but at least a warning\n    // is a start\n    Lib.log('Unable to automatically bind plot updates to API command');\n    ret.lookupTable = {};\n    ret.remove = function () {};\n  }\n  ret.disable = function disable() {\n    enabled = false;\n  };\n  ret.enable = function enable() {\n    enabled = true;\n  };\n  if (container) {\n    container._commandObserver = ret;\n  }\n  return ret;\n};\n\n/*\n * This function checks to see if an array of objects containing\n * method and args properties is compatible with automatic two-way\n * binding. The criteria right now are that\n *\n *   1. multiple traces may be affected\n *   2. only one property may be affected\n *   3. the same property must be affected by all commands\n */\nexports.hasSimpleAPICommandBindings = function (gd, commandList, bindingsByValue) {\n  var i;\n  var n = commandList.length;\n  var refBinding;\n  for (i = 0; i < n; i++) {\n    var binding;\n    var command = commandList[i];\n    var method = command.method;\n    var args = command.args;\n    if (!Array.isArray(args)) args = [];\n\n    // If any command has no method, refuse to bind:\n    if (!method) {\n      return false;\n    }\n    var bindings = exports.computeAPICommandBindings(gd, method, args);\n\n    // Right now, handle one and *only* one property being set:\n    if (bindings.length !== 1) {\n      return false;\n    }\n    if (!refBinding) {\n      refBinding = bindings[0];\n      if (Array.isArray(refBinding.traces)) {\n        refBinding.traces.sort();\n      }\n    } else {\n      binding = bindings[0];\n      if (binding.type !== refBinding.type) {\n        return false;\n      }\n      if (binding.prop !== refBinding.prop) {\n        return false;\n      }\n      if (Array.isArray(refBinding.traces)) {\n        if (Array.isArray(binding.traces)) {\n          binding.traces.sort();\n          for (var j = 0; j < refBinding.traces.length; j++) {\n            if (refBinding.traces[j] !== binding.traces[j]) {\n              return false;\n            }\n          }\n        } else {\n          return false;\n        }\n      } else {\n        if (binding.prop !== refBinding.prop) {\n          return false;\n        }\n      }\n    }\n    binding = bindings[0];\n    var value = binding.value;\n    if (Array.isArray(value)) {\n      if (value.length === 1) {\n        value = value[0];\n      } else {\n        return false;\n      }\n    }\n    if (bindingsByValue) {\n      bindingsByValue[value] = i;\n    }\n  }\n  return refBinding;\n};\nfunction bindingValueHasChanged(gd, binding, cache) {\n  var container, value, obj;\n  var changed = false;\n  if (binding.type === 'data') {\n    // If it's data, we need to get a trace. Based on the limited scope\n    // of what we cover, we can just take the first trace from the list,\n    // or otherwise just the first trace:\n    container = gd._fullData[binding.traces !== null ? binding.traces[0] : 0];\n  } else if (binding.type === 'layout') {\n    container = gd._fullLayout;\n  } else {\n    return false;\n  }\n  value = Lib.nestedProperty(container, binding.prop).get();\n  obj = cache[binding.type] = cache[binding.type] || {};\n  if (obj.hasOwnProperty(binding.prop)) {\n    if (obj[binding.prop] !== value) {\n      changed = true;\n    }\n  }\n  obj[binding.prop] = value;\n  return {\n    changed: changed,\n    value: value\n  };\n}\n\n/*\n * Execute an API command. There's really not much to this; it just provides\n * a common hook so that implementations don't need to be synchronized across\n * multiple components with the ability to invoke API commands.\n *\n * @param {string} method\n *      The name of the plotly command to execute. Must be one of 'animate',\n *      'restyle', 'relayout', 'update'.\n * @param {array} args\n *      A list of arguments passed to the API command\n */\nexports.executeAPICommand = function (gd, method, args) {\n  if (method === 'skip') return Promise.resolve();\n  var _method = Registry.apiMethodRegistry[method];\n  var allArgs = [gd];\n  if (!Array.isArray(args)) args = [];\n  for (var i = 0; i < args.length; i++) {\n    allArgs.push(args[i]);\n  }\n  return _method.apply(null, allArgs).catch(function (err) {\n    Lib.warn('API call to Plotly.' + method + ' rejected.', err);\n    return Promise.reject(err);\n  });\n};\nexports.computeAPICommandBindings = function (gd, method, args) {\n  var bindings;\n  if (!Array.isArray(args)) args = [];\n  switch (method) {\n    case 'restyle':\n      bindings = computeDataBindings(gd, args);\n      break;\n    case 'relayout':\n      bindings = computeLayoutBindings(gd, args);\n      break;\n    case 'update':\n      bindings = computeDataBindings(gd, [args[0], args[2]]).concat(computeLayoutBindings(gd, [args[1]]));\n      break;\n    case 'animate':\n      bindings = computeAnimateBindings(gd, args);\n      break;\n    default:\n      // This is the case where intelligent logic about what affects\n      // this command is not implemented. It causes no ill effects.\n      // For example, addFrames simply won't bind to a control component.\n      bindings = [];\n  }\n  return bindings;\n};\nfunction computeAnimateBindings(gd, args) {\n  // We'll assume that the only relevant modification an animation\n  // makes that's meaningfully tracked is the frame:\n  if (Array.isArray(args[0]) && args[0].length === 1 && ['string', 'number'].indexOf(typeof args[0][0]) !== -1) {\n    return [{\n      type: 'layout',\n      prop: '_currentFrame',\n      value: args[0][0].toString()\n    }];\n  } else {\n    return [];\n  }\n}\nfunction computeLayoutBindings(gd, args) {\n  var bindings = [];\n  var astr = args[0];\n  var aobj = {};\n  if (typeof astr === 'string') {\n    aobj[astr] = args[1];\n  } else if (Lib.isPlainObject(astr)) {\n    aobj = astr;\n  } else {\n    return bindings;\n  }\n  crawl(aobj, function (path, attrName, attr) {\n    bindings.push({\n      type: 'layout',\n      prop: path,\n      value: attr\n    });\n  }, '', 0);\n  return bindings;\n}\nfunction computeDataBindings(gd, args) {\n  var traces, astr, val, aobj;\n  var bindings = [];\n\n  // Logic copied from Plotly.restyle:\n  astr = args[0];\n  val = args[1];\n  traces = args[2];\n  aobj = {};\n  if (typeof astr === 'string') {\n    aobj[astr] = val;\n  } else if (Lib.isPlainObject(astr)) {\n    // the 3-arg form\n    aobj = astr;\n    if (traces === undefined) {\n      traces = val;\n    }\n  } else {\n    return bindings;\n  }\n  if (traces === undefined) {\n    // Explicitly assign this to null instead of undefined:\n    traces = null;\n  }\n  crawl(aobj, function (path, attrName, _attr) {\n    var thisTraces;\n    var attr;\n    if (Array.isArray(_attr)) {\n      attr = _attr.slice();\n      var nAttr = Math.min(attr.length, gd.data.length);\n      if (traces) {\n        nAttr = Math.min(nAttr, traces.length);\n      }\n      thisTraces = [];\n      for (var j = 0; j < nAttr; j++) {\n        thisTraces[j] = traces ? traces[j] : j;\n      }\n    } else {\n      attr = _attr;\n      thisTraces = traces ? traces.slice() : null;\n    }\n\n    // Convert [7] to just 7 when traces is null:\n    if (thisTraces === null) {\n      if (Array.isArray(attr)) {\n        attr = attr[0];\n      }\n    } else if (Array.isArray(thisTraces)) {\n      if (!Array.isArray(attr)) {\n        var tmp = attr;\n        attr = [];\n        for (var i = 0; i < thisTraces.length; i++) {\n          attr[i] = tmp;\n        }\n      }\n      attr.length = Math.min(thisTraces.length, attr.length);\n    }\n    bindings.push({\n      type: 'data',\n      prop: path,\n      traces: thisTraces,\n      value: attr\n    });\n  }, '', 0);\n  return bindings;\n}\nfunction crawl(attrs, callback, path, depth) {\n  Object.keys(attrs).forEach(function (attrName) {\n    var attr = attrs[attrName];\n    if (attrName[0] === '_') return;\n    var thisPath = path + (depth > 0 ? '.' : '') + attrName;\n    if (Lib.isPlainObject(attr)) {\n      crawl(attr, callback, thisPath, depth + 1);\n    } else {\n      // Only execute the callback on leaf nodes:\n      callback(thisPath, attrName, attr);\n    }\n  });\n}\n\n/***/ }),\n\n/***/ 27670:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_1589009__) {\n\n\"use strict\";\n\n\nvar extendFlat = (__nested_webpack_require_1589009__(1426).extendFlat);\n\n/**\n * Make a xy domain attribute group\n *\n * @param {object} opts\n *   @param {string}\n *     opts.name: name to be inserted in the default description\n *   @param {boolean}\n *     opts.trace: set to true for trace containers\n *   @param {string}\n *     opts.editType: editType for all pieces\n *   @param {boolean}\n *     opts.noGridCell: set to true to omit `row` and `column`\n *\n * @param {object} extra\n *   @param {string}\n *     extra.description: extra description. N.B we use\n *     a separate extra container to make it compatible with\n *     the compress_attributes transform.\n *\n * @return {object} attributes object containing {x,y} as specified\n */\nexports.Y = function (opts, extra) {\n  opts = opts || {};\n  extra = extra || {};\n  var base = {\n    valType: 'info_array',\n    editType: opts.editType,\n    items: [{\n      valType: 'number',\n      min: 0,\n      max: 1,\n      editType: opts.editType\n    }, {\n      valType: 'number',\n      min: 0,\n      max: 1,\n      editType: opts.editType\n    }],\n    dflt: [0, 1]\n  };\n  var namePart = opts.name ? opts.name + ' ' : '';\n  var contPart = opts.trace ? 'trace ' : 'subplot ';\n  var descPart = extra.description ? ' ' + extra.description : '';\n  var out = {\n    x: extendFlat({}, base, {}),\n    y: extendFlat({}, base, {}),\n    editType: opts.editType\n  };\n  if (!opts.noGridCell) {\n    out.row = {\n      valType: 'integer',\n      min: 0,\n      dflt: 0,\n      editType: opts.editType\n    };\n    out.column = {\n      valType: 'integer',\n      min: 0,\n      dflt: 0,\n      editType: opts.editType\n    };\n  }\n  return out;\n};\nexports.c = function (containerOut, layout, coerce, dfltDomains) {\n  var dfltX = dfltDomains && dfltDomains.x || [0, 1];\n  var dfltY = dfltDomains && dfltDomains.y || [0, 1];\n  var grid = layout.grid;\n  if (grid) {\n    var column = coerce('domain.column');\n    if (column !== undefined) {\n      if (column < grid.columns) dfltX = grid._domains.x[column];else delete containerOut.domain.column;\n    }\n    var row = coerce('domain.row');\n    if (row !== undefined) {\n      if (row < grid.rows) dfltY = grid._domains.y[row];else delete containerOut.domain.row;\n    }\n  }\n  var x = coerce('domain.x', dfltX);\n  var y = coerce('domain.y', dfltY);\n\n  // don't accept bad input data\n  if (!(x[0] < x[1])) containerOut.domain.x = dfltX.slice();\n  if (!(y[0] < y[1])) containerOut.domain.y = dfltY.slice();\n};\n\n/***/ }),\n\n/***/ 41940:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/*\n * make a font attribute group\n *\n * @param {object} opts\n *   @param {string}\n *     opts.description: where & how this font is used\n *   @param {optional bool} arrayOk:\n *     should each part (family, size, color) be arrayOk? default false.\n *   @param {string} editType:\n *     the editType for all pieces of this font\n *   @param {optional string} colorEditType:\n *     a separate editType just for color\n *\n * @return {object} attributes object containing {family, size, color} as specified\n */\nmodule.exports = function (opts) {\n  var editType = opts.editType;\n  var colorEditType = opts.colorEditType;\n  if (colorEditType === undefined) colorEditType = editType;\n  var attrs = {\n    family: {\n      valType: 'string',\n      noBlank: true,\n      strict: true,\n      editType: editType\n    },\n    size: {\n      valType: 'number',\n      min: 1,\n      editType: editType\n    },\n    color: {\n      valType: 'color',\n      editType: colorEditType\n    },\n    editType: editType\n    // blank strings so compress_attributes can remove\n    // TODO - that's uber hacky... better solution?\n  };\n\n  if (opts.autoSize) attrs.size.dflt = 'auto';\n  if (opts.autoColor) attrs.color.dflt = 'auto';\n  if (opts.arrayOk) {\n    attrs.family.arrayOk = true;\n    attrs.size.arrayOk = true;\n    attrs.color.arrayOk = true;\n  }\n  return attrs;\n};\n\n/***/ }),\n\n/***/ 31391:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  _isLinkedToArray: 'frames_entry',\n  group: {\n    valType: 'string'\n  },\n  name: {\n    valType: 'string'\n  },\n  traces: {\n    valType: 'any'\n  },\n  baseframe: {\n    valType: 'string'\n  },\n  data: {\n    valType: 'any'\n  },\n  layout: {\n    valType: 'any'\n  }\n};\n\n/***/ }),\n\n/***/ 78776:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\n// projection names to d3 function name\nexports.projNames = {\n  'airy': 'airy',\n  'aitoff': 'aitoff',\n  'albers usa': 'albersUsa',\n  'albers': 'albers',\n  // 'armadillo': 'armadillo',\n  'august': 'august',\n  'azimuthal equal area': 'azimuthalEqualArea',\n  'azimuthal equidistant': 'azimuthalEquidistant',\n  'baker': 'baker',\n  // 'berghaus': 'berghaus',\n  'bertin1953': 'bertin1953',\n  'boggs': 'boggs',\n  'bonne': 'bonne',\n  'bottomley': 'bottomley',\n  'bromley': 'bromley',\n  // 'chamberlin africa': 'chamberlinAfrica',\n  // 'chamberlin': 'chamberlin',\n  'collignon': 'collignon',\n  'conic conformal': 'conicConformal',\n  'conic equal area': 'conicEqualArea',\n  'conic equidistant': 'conicEquidistant',\n  'craig': 'craig',\n  'craster': 'craster',\n  'cylindrical equal area': 'cylindricalEqualArea',\n  'cylindrical stereographic': 'cylindricalStereographic',\n  'eckert1': 'eckert1',\n  'eckert2': 'eckert2',\n  'eckert3': 'eckert3',\n  'eckert4': 'eckert4',\n  'eckert5': 'eckert5',\n  'eckert6': 'eckert6',\n  'eisenlohr': 'eisenlohr',\n  'equirectangular': 'equirectangular',\n  'fahey': 'fahey',\n  'foucaut sinusoidal': 'foucautSinusoidal',\n  'foucaut': 'foucaut',\n  // 'gilbert': 'gilbert',\n  // 'gingery': 'gingery',\n  'ginzburg4': 'ginzburg4',\n  'ginzburg5': 'ginzburg5',\n  'ginzburg6': 'ginzburg6',\n  'ginzburg8': 'ginzburg8',\n  'ginzburg9': 'ginzburg9',\n  'gnomonic': 'gnomonic',\n  'gringorten quincuncial': 'gringortenQuincuncial',\n  'gringorten': 'gringorten',\n  'guyou': 'guyou',\n  // 'hammer retroazimuthal': 'hammerRetroazimuthal',\n  'hammer': 'hammer',\n  // 'healpix': 'healpix',\n  'hill': 'hill',\n  'homolosine': 'homolosine',\n  'hufnagel': 'hufnagel',\n  'hyperelliptical': 'hyperelliptical',\n  // 'interrupted boggs': 'interruptedBoggs',\n  // 'interrupted homolosine': 'interruptedHomolosine',\n  // 'interrupted mollweide hemispheres': 'interruptedMollweideHemispheres',\n  // 'interrupted mollweide': 'interruptedMollweide',\n  // 'interrupted quartic authalic': 'interruptedQuarticAuthalic',\n  // 'interrupted sinu mollweide': 'interruptedSinuMollweide',\n  // 'interrupted sinusoidal': 'interruptedSinusoidal',\n  'kavrayskiy7': 'kavrayskiy7',\n  'lagrange': 'lagrange',\n  'larrivee': 'larrivee',\n  'laskowski': 'laskowski',\n  // 'littrow': 'littrow',\n  'loximuthal': 'loximuthal',\n  'mercator': 'mercator',\n  'miller': 'miller',\n  // 'modified stereographic alaska': 'modifiedStereographicAlaska',\n  // 'modified stereographic gs48': 'modifiedStereographicGs48',\n  // 'modified stereographic gs50': 'modifiedStereographicGs50',\n  // 'modified stereographic lee': 'modifiedStereographicLee',\n  // 'modified stereographic miller': 'modifiedStereographicMiller',\n  // 'modified stereographic': 'modifiedStereographic',\n  'mollweide': 'mollweide',\n  'mt flat polar parabolic': 'mtFlatPolarParabolic',\n  'mt flat polar quartic': 'mtFlatPolarQuartic',\n  'mt flat polar sinusoidal': 'mtFlatPolarSinusoidal',\n  'natural earth': 'naturalEarth',\n  'natural earth1': 'naturalEarth1',\n  'natural earth2': 'naturalEarth2',\n  'nell hammer': 'nellHammer',\n  'nicolosi': 'nicolosi',\n  'orthographic': 'orthographic',\n  'patterson': 'patterson',\n  'peirce quincuncial': 'peirceQuincuncial',\n  'polyconic': 'polyconic',\n  // 'polyhedral butterfly': 'polyhedralButterfly',\n  // 'polyhedral collignon': 'polyhedralCollignon',\n  // 'polyhedral waterman': 'polyhedralWaterman',\n  'rectangular polyconic': 'rectangularPolyconic',\n  'robinson': 'robinson',\n  'satellite': 'satellite',\n  'sinu mollweide': 'sinuMollweide',\n  'sinusoidal': 'sinusoidal',\n  'stereographic': 'stereographic',\n  'times': 'times',\n  'transverse mercator': 'transverseMercator',\n  // 'two point azimuthalUsa': 'twoPointAzimuthalUsa',\n  // 'two point azimuthal': 'twoPointAzimuthal',\n  // 'two point equidistantUsa': 'twoPointEquidistantUsa',\n  // 'two point equidistant': 'twoPointEquidistant',\n  'van der grinten': 'vanDerGrinten',\n  'van der grinten2': 'vanDerGrinten2',\n  'van der grinten3': 'vanDerGrinten3',\n  'van der grinten4': 'vanDerGrinten4',\n  'wagner4': 'wagner4',\n  'wagner6': 'wagner6',\n  // 'wagner7': 'wagner7',\n  // 'wagner': 'wagner',\n  'wiechel': 'wiechel',\n  'winkel tripel': 'winkel3',\n  'winkel3': 'winkel3'\n};\n\n// name of the axes\nexports.axesNames = ['lonaxis', 'lataxis'];\n\n// max longitudinal angular span (EXPERIMENTAL)\nexports.lonaxisSpan = {\n  'orthographic': 180,\n  'azimuthal equal area': 360,\n  'azimuthal equidistant': 360,\n  'conic conformal': 180,\n  'gnomonic': 160,\n  'stereographic': 180,\n  'transverse mercator': 180,\n  '*': 360\n};\n\n// max latitudinal angular span (EXPERIMENTAL)\nexports.lataxisSpan = {\n  'conic conformal': 150,\n  'stereographic': 179.5,\n  '*': 180\n};\n\n// defaults for each scope\nexports.scopeDefaults = {\n  world: {\n    lonaxisRange: [-180, 180],\n    lataxisRange: [-90, 90],\n    projType: 'equirectangular',\n    projRotate: [0, 0, 0]\n  },\n  usa: {\n    lonaxisRange: [-180, -50],\n    lataxisRange: [15, 80],\n    projType: 'albers usa'\n  },\n  europe: {\n    lonaxisRange: [-30, 60],\n    lataxisRange: [30, 85],\n    projType: 'conic conformal',\n    projRotate: [15, 0, 0],\n    projParallels: [0, 60]\n  },\n  asia: {\n    lonaxisRange: [22, 160],\n    lataxisRange: [-15, 55],\n    projType: 'mercator',\n    projRotate: [0, 0, 0]\n  },\n  africa: {\n    lonaxisRange: [-30, 60],\n    lataxisRange: [-40, 40],\n    projType: 'mercator',\n    projRotate: [0, 0, 0]\n  },\n  'north america': {\n    lonaxisRange: [-180, -45],\n    lataxisRange: [5, 85],\n    projType: 'conic conformal',\n    projRotate: [-100, 0, 0],\n    projParallels: [29.5, 45.5]\n  },\n  'south america': {\n    lonaxisRange: [-100, -30],\n    lataxisRange: [-60, 15],\n    projType: 'mercator',\n    projRotate: [0, 0, 0]\n  }\n};\n\n// angular pad to avoid rounding error around clip angles\nexports.clipPad = 1e-3;\n\n// map projection precision\nexports.precision = 0.1;\n\n// default land and water fill colors\nexports.landColor = '#F0DC82';\nexports.waterColor = '#3399FF';\n\n// locationmode to layer name\nexports.locationmodeToLayer = {\n  'ISO-3': 'countries',\n  'USA-states': 'subunits',\n  'country names': 'countries'\n};\n\n// SVG element for a sphere (use to frame maps)\nexports.sphereSVG = {\n  type: 'Sphere'\n};\n\n// N.B. base layer names must be the same as in the topojson files\n\n// base layer with a fill color\nexports.fillLayers = {\n  ocean: 1,\n  land: 1,\n  lakes: 1\n};\n\n// base layer with a only a line color\nexports.lineLayers = {\n  subunits: 1,\n  countries: 1,\n  coastlines: 1,\n  rivers: 1,\n  frame: 1\n};\nexports.layers = ['bg', 'ocean', 'land', 'lakes', 'subunits', 'countries', 'coastlines', 'rivers', 'lataxis', 'lonaxis', 'frame', 'backplot', 'frontplot'];\nexports.layersForChoropleth = ['bg', 'ocean', 'land', 'subunits', 'countries', 'coastlines', 'lataxis', 'lonaxis', 'frame', 'backplot', 'rivers', 'lakes', 'frontplot'];\nexports.layerNameToAdjective = {\n  ocean: 'ocean',\n  land: 'land',\n  lakes: 'lake',\n  subunits: 'subunit',\n  countries: 'country',\n  coastlines: 'coastline',\n  rivers: 'river',\n  frame: 'frame'\n};\n\n/***/ }),\n\n/***/ 69082:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1600398__) {\n\n\"use strict\";\n\n\n/* global PlotlyGeoAssets:false */\nvar d3 = __nested_webpack_require_1600398__(39898);\nvar geo = __nested_webpack_require_1600398__(27362);\nvar geoPath = geo.geoPath;\nvar geoDistance = geo.geoDistance;\nvar geoProjection = __nested_webpack_require_1600398__(65704);\nvar Registry = __nested_webpack_require_1600398__(73972);\nvar Lib = __nested_webpack_require_1600398__(71828);\nvar strTranslate = Lib.strTranslate;\nvar Color = __nested_webpack_require_1600398__(7901);\nvar Drawing = __nested_webpack_require_1600398__(91424);\nvar Fx = __nested_webpack_require_1600398__(30211);\nvar Plots = __nested_webpack_require_1600398__(74875);\nvar Axes = __nested_webpack_require_1600398__(89298);\nvar getAutoRange = (__nested_webpack_require_1600398__(71739).getAutoRange);\nvar dragElement = __nested_webpack_require_1600398__(28569);\nvar prepSelect = (__nested_webpack_require_1600398__(47322).prepSelect);\nvar clearOutline = (__nested_webpack_require_1600398__(47322).clearOutline);\nvar selectOnClick = (__nested_webpack_require_1600398__(47322).selectOnClick);\nvar createGeoZoom = __nested_webpack_require_1600398__(74455);\nvar constants = __nested_webpack_require_1600398__(78776);\nvar geoUtils = __nested_webpack_require_1600398__(41327);\nvar topojsonUtils = __nested_webpack_require_1600398__(90973);\nvar topojsonFeature = (__nested_webpack_require_1600398__(96892)/* .feature */ .zL);\nfunction Geo(opts) {\n  this.id = opts.id;\n  this.graphDiv = opts.graphDiv;\n  this.container = opts.container;\n  this.topojsonURL = opts.topojsonURL;\n  this.isStatic = opts.staticPlot;\n  this.topojsonName = null;\n  this.topojson = null;\n  this.projection = null;\n  this.scope = null;\n  this.viewInitial = null;\n  this.fitScale = null;\n  this.bounds = null;\n  this.midPt = null;\n  this.hasChoropleth = false;\n  this.traceHash = {};\n  this.layers = {};\n  this.basePaths = {};\n  this.dataPaths = {};\n  this.dataPoints = {};\n  this.clipDef = null;\n  this.clipRect = null;\n  this.bgRect = null;\n  this.makeFramework();\n}\nvar proto = Geo.prototype;\nmodule.exports = function createGeo(opts) {\n  return new Geo(opts);\n};\nproto.plot = function (geoCalcData, fullLayout, promises, replot) {\n  var _this = this;\n  if (replot) return _this.update(geoCalcData, fullLayout, true);\n  _this._geoCalcData = geoCalcData;\n  _this._fullLayout = fullLayout;\n  var geoLayout = fullLayout[this.id];\n  var geoPromises = [];\n  var needsTopojson = false;\n  for (var k in constants.layerNameToAdjective) {\n    if (k !== 'frame' && geoLayout['show' + k]) {\n      needsTopojson = true;\n      break;\n    }\n  }\n  var hasMarkerAngles = false;\n  for (var i = 0; i < geoCalcData.length; i++) {\n    var trace = geoCalcData[0][0].trace;\n    trace._geo = _this;\n    if (trace.locationmode) {\n      needsTopojson = true;\n    }\n    var marker = trace.marker;\n    if (marker) {\n      var angle = marker.angle;\n      var angleref = marker.angleref;\n      if (angle || angleref === 'north' || angleref === 'previous') hasMarkerAngles = true;\n    }\n  }\n  this._hasMarkerAngles = hasMarkerAngles;\n  if (needsTopojson) {\n    var topojsonNameNew = topojsonUtils.getTopojsonName(geoLayout);\n    if (_this.topojson === null || topojsonNameNew !== _this.topojsonName) {\n      _this.topojsonName = topojsonNameNew;\n      if (PlotlyGeoAssets.topojson[_this.topojsonName] === undefined) {\n        geoPromises.push(_this.fetchTopojson());\n      }\n    }\n  }\n  geoPromises = geoPromises.concat(geoUtils.fetchTraceGeoData(geoCalcData));\n  promises.push(new Promise(function (resolve, reject) {\n    Promise.all(geoPromises).then(function () {\n      _this.topojson = PlotlyGeoAssets.topojson[_this.topojsonName];\n      _this.update(geoCalcData, fullLayout);\n      resolve();\n    }).catch(reject);\n  }));\n};\nproto.fetchTopojson = function () {\n  var _this = this;\n  var topojsonPath = topojsonUtils.getTopojsonPath(_this.topojsonURL, _this.topojsonName);\n  return new Promise(function (resolve, reject) {\n    d3.json(topojsonPath, function (err, topojson) {\n      if (err) {\n        if (err.status === 404) {\n          return reject(new Error(['plotly.js could not find topojson file at', topojsonPath + '.', 'Make sure the *topojsonURL* plot config option', 'is set properly.'].join(' ')));\n        } else {\n          return reject(new Error(['unexpected error while fetching topojson file at', topojsonPath].join(' ')));\n        }\n      }\n      PlotlyGeoAssets.topojson[_this.topojsonName] = topojson;\n      resolve();\n    });\n  });\n};\nproto.update = function (geoCalcData, fullLayout, replot) {\n  var geoLayout = fullLayout[this.id];\n\n  // important: maps with choropleth traces have a different layer order\n  this.hasChoropleth = false;\n  for (var i = 0; i < geoCalcData.length; i++) {\n    var calcTrace = geoCalcData[i];\n    var trace = calcTrace[0].trace;\n    if (trace.type === 'choropleth') {\n      this.hasChoropleth = true;\n    }\n    if (trace.visible === true && trace._length > 0) {\n      trace._module.calcGeoJSON(calcTrace, fullLayout);\n    }\n  }\n  if (!replot) {\n    var hasInvalidBounds = this.updateProjection(geoCalcData, fullLayout);\n    if (hasInvalidBounds) return;\n    if (!this.viewInitial || this.scope !== geoLayout.scope) {\n      this.saveViewInitial(geoLayout);\n    }\n  }\n  this.scope = geoLayout.scope;\n  this.updateBaseLayers(fullLayout, geoLayout);\n  this.updateDims(fullLayout, geoLayout);\n  this.updateFx(fullLayout, geoLayout);\n  Plots.generalUpdatePerTraceModule(this.graphDiv, this, geoCalcData, geoLayout);\n  var scatterLayer = this.layers.frontplot.select('.scatterlayer');\n  this.dataPoints.point = scatterLayer.selectAll('.point');\n  this.dataPoints.text = scatterLayer.selectAll('text');\n  this.dataPaths.line = scatterLayer.selectAll('.js-line');\n  var choroplethLayer = this.layers.backplot.select('.choroplethlayer');\n  this.dataPaths.choropleth = choroplethLayer.selectAll('path');\n  this._render();\n};\nproto.updateProjection = function (geoCalcData, fullLayout) {\n  var gd = this.graphDiv;\n  var geoLayout = fullLayout[this.id];\n  var gs = fullLayout._size;\n  var domain = geoLayout.domain;\n  var projLayout = geoLayout.projection;\n  var lonaxis = geoLayout.lonaxis;\n  var lataxis = geoLayout.lataxis;\n  var axLon = lonaxis._ax;\n  var axLat = lataxis._ax;\n  var projection = this.projection = getProjection(geoLayout);\n\n  // setup subplot extent [[x0,y0], [x1,y1]]\n  var extent = [[gs.l + gs.w * domain.x[0], gs.t + gs.h * (1 - domain.y[1])], [gs.l + gs.w * domain.x[1], gs.t + gs.h * (1 - domain.y[0])]];\n  var center = geoLayout.center || {};\n  var rotation = projLayout.rotation || {};\n  var lonaxisRange = lonaxis.range || [];\n  var lataxisRange = lataxis.range || [];\n  if (geoLayout.fitbounds) {\n    axLon._length = extent[1][0] - extent[0][0];\n    axLat._length = extent[1][1] - extent[0][1];\n    axLon.range = getAutoRange(gd, axLon);\n    axLat.range = getAutoRange(gd, axLat);\n    var midLon = (axLon.range[0] + axLon.range[1]) / 2;\n    var midLat = (axLat.range[0] + axLat.range[1]) / 2;\n    if (geoLayout._isScoped) {\n      center = {\n        lon: midLon,\n        lat: midLat\n      };\n    } else if (geoLayout._isClipped) {\n      center = {\n        lon: midLon,\n        lat: midLat\n      };\n      rotation = {\n        lon: midLon,\n        lat: midLat,\n        roll: rotation.roll\n      };\n      var projType = projLayout.type;\n      var lonHalfSpan = constants.lonaxisSpan[projType] / 2 || 180;\n      var latHalfSpan = constants.lataxisSpan[projType] / 2 || 90;\n      lonaxisRange = [midLon - lonHalfSpan, midLon + lonHalfSpan];\n      lataxisRange = [midLat - latHalfSpan, midLat + latHalfSpan];\n    } else {\n      center = {\n        lon: midLon,\n        lat: midLat\n      };\n      rotation = {\n        lon: midLon,\n        lat: rotation.lat,\n        roll: rotation.roll\n      };\n    }\n  }\n\n  // set 'pre-fit' projection\n  projection.center([center.lon - rotation.lon, center.lat - rotation.lat]).rotate([-rotation.lon, -rotation.lat, rotation.roll]).parallels(projLayout.parallels);\n\n  // fit projection 'scale' and 'translate' to set lon/lat ranges\n  var rangeBox = makeRangeBox(lonaxisRange, lataxisRange);\n  projection.fitExtent(extent, rangeBox);\n  var b = this.bounds = projection.getBounds(rangeBox);\n  var s = this.fitScale = projection.scale();\n  var t = projection.translate();\n  if (geoLayout.fitbounds) {\n    var b2 = projection.getBounds(makeRangeBox(axLon.range, axLat.range));\n    var k2 = Math.min((b[1][0] - b[0][0]) / (b2[1][0] - b2[0][0]), (b[1][1] - b[0][1]) / (b2[1][1] - b2[0][1]));\n    if (isFinite(k2)) {\n      projection.scale(k2 * s);\n    } else {\n      Lib.warn('Something went wrong during' + this.id + 'fitbounds computations.');\n    }\n  } else {\n    // adjust projection to user setting\n    projection.scale(projLayout.scale * s);\n  }\n\n  // px coordinates of view mid-point,\n  // useful to update `geo.center` after interactions\n  var midPt = this.midPt = [(b[0][0] + b[1][0]) / 2, (b[0][1] + b[1][1]) / 2];\n  projection.translate([t[0] + (midPt[0] - t[0]), t[1] + (midPt[1] - t[1])]).clipExtent(b);\n\n  // the 'albers usa' projection does not expose a 'center' method\n  // so here's this hack to make it respond to 'geoLayout.center'\n  if (geoLayout._isAlbersUsa) {\n    var centerPx = projection([center.lon, center.lat]);\n    var tt = projection.translate();\n    projection.translate([tt[0] - (centerPx[0] - tt[0]), tt[1] - (centerPx[1] - tt[1])]);\n  }\n};\nproto.updateBaseLayers = function (fullLayout, geoLayout) {\n  var _this = this;\n  var topojson = _this.topojson;\n  var layers = _this.layers;\n  var basePaths = _this.basePaths;\n  function isAxisLayer(d) {\n    return d === 'lonaxis' || d === 'lataxis';\n  }\n  function isLineLayer(d) {\n    return Boolean(constants.lineLayers[d]);\n  }\n  function isFillLayer(d) {\n    return Boolean(constants.fillLayers[d]);\n  }\n  var allLayers = this.hasChoropleth ? constants.layersForChoropleth : constants.layers;\n  var layerData = allLayers.filter(function (d) {\n    return isLineLayer(d) || isFillLayer(d) ? geoLayout['show' + d] : isAxisLayer(d) ? geoLayout[d].showgrid : true;\n  });\n  var join = _this.framework.selectAll('.layer').data(layerData, String);\n  join.exit().each(function (d) {\n    delete layers[d];\n    delete basePaths[d];\n    d3.select(this).remove();\n  });\n  join.enter().append('g').attr('class', function (d) {\n    return 'layer ' + d;\n  }).each(function (d) {\n    var layer = layers[d] = d3.select(this);\n    if (d === 'bg') {\n      _this.bgRect = layer.append('rect').style('pointer-events', 'all');\n    } else if (isAxisLayer(d)) {\n      basePaths[d] = layer.append('path').style('fill', 'none');\n    } else if (d === 'backplot') {\n      layer.append('g').classed('choroplethlayer', true);\n    } else if (d === 'frontplot') {\n      layer.append('g').classed('scatterlayer', true);\n    } else if (isLineLayer(d)) {\n      basePaths[d] = layer.append('path').style('fill', 'none').style('stroke-miterlimit', 2);\n    } else if (isFillLayer(d)) {\n      basePaths[d] = layer.append('path').style('stroke', 'none');\n    }\n  });\n  join.order();\n  join.each(function (d) {\n    var path = basePaths[d];\n    var adj = constants.layerNameToAdjective[d];\n    if (d === 'frame') {\n      path.datum(constants.sphereSVG);\n    } else if (isLineLayer(d) || isFillLayer(d)) {\n      path.datum(topojsonFeature(topojson, topojson.objects[d]));\n    } else if (isAxisLayer(d)) {\n      path.datum(makeGraticule(d, geoLayout, fullLayout)).call(Color.stroke, geoLayout[d].gridcolor).call(Drawing.dashLine, geoLayout[d].griddash, geoLayout[d].gridwidth);\n    }\n    if (isLineLayer(d)) {\n      path.call(Color.stroke, geoLayout[adj + 'color']).call(Drawing.dashLine, '', geoLayout[adj + 'width']);\n    } else if (isFillLayer(d)) {\n      path.call(Color.fill, geoLayout[adj + 'color']);\n    }\n  });\n};\nproto.updateDims = function (fullLayout, geoLayout) {\n  var b = this.bounds;\n  var hFrameWidth = (geoLayout.framewidth || 0) / 2;\n  var l = b[0][0] - hFrameWidth;\n  var t = b[0][1] - hFrameWidth;\n  var w = b[1][0] - l + hFrameWidth;\n  var h = b[1][1] - t + hFrameWidth;\n  Drawing.setRect(this.clipRect, l, t, w, h);\n  this.bgRect.call(Drawing.setRect, l, t, w, h).call(Color.fill, geoLayout.bgcolor);\n  this.xaxis._offset = l;\n  this.xaxis._length = w;\n  this.yaxis._offset = t;\n  this.yaxis._length = h;\n};\nproto.updateFx = function (fullLayout, geoLayout) {\n  var _this = this;\n  var gd = _this.graphDiv;\n  var bgRect = _this.bgRect;\n  var dragMode = fullLayout.dragmode;\n  var clickMode = fullLayout.clickmode;\n  if (_this.isStatic) return;\n  function zoomReset() {\n    var viewInitial = _this.viewInitial;\n    var updateObj = {};\n    for (var k in viewInitial) {\n      updateObj[_this.id + '.' + k] = viewInitial[k];\n    }\n    Registry.call('_guiRelayout', gd, updateObj);\n    gd.emit('plotly_doubleclick', null);\n  }\n  function invert(lonlat) {\n    return _this.projection.invert([lonlat[0] + _this.xaxis._offset, lonlat[1] + _this.yaxis._offset]);\n  }\n  var fillRangeItems = function (eventData, poly) {\n    if (poly.isRect) {\n      var ranges = eventData.range = {};\n      ranges[_this.id] = [invert([poly.xmin, poly.ymin]), invert([poly.xmax, poly.ymax])];\n    } else {\n      var dataPts = eventData.lassoPoints = {};\n      dataPts[_this.id] = poly.map(invert);\n    }\n  };\n\n  // Note: dragOptions is needed to be declared for all dragmodes because\n  // it's the object that holds persistent selection state.\n  var dragOptions = {\n    element: _this.bgRect.node(),\n    gd: gd,\n    plotinfo: {\n      id: _this.id,\n      xaxis: _this.xaxis,\n      yaxis: _this.yaxis,\n      fillRangeItems: fillRangeItems\n    },\n    xaxes: [_this.xaxis],\n    yaxes: [_this.yaxis],\n    subplot: _this.id,\n    clickFn: function (numClicks) {\n      if (numClicks === 2) {\n        clearOutline(gd);\n      }\n    }\n  };\n  if (dragMode === 'pan') {\n    bgRect.node().onmousedown = null;\n    bgRect.call(createGeoZoom(_this, geoLayout));\n    bgRect.on('dblclick.zoom', zoomReset);\n    if (!gd._context._scrollZoom.geo) {\n      bgRect.on('wheel.zoom', null);\n    }\n  } else if (dragMode === 'select' || dragMode === 'lasso') {\n    bgRect.on('.zoom', null);\n    dragOptions.prepFn = function (e, startX, startY) {\n      prepSelect(e, startX, startY, dragOptions, dragMode);\n    };\n    dragElement.init(dragOptions);\n  }\n  bgRect.on('mousemove', function () {\n    var lonlat = _this.projection.invert(Lib.getPositionFromD3Event());\n    if (!lonlat) {\n      return dragElement.unhover(gd, d3.event);\n    }\n    _this.xaxis.p2c = function () {\n      return lonlat[0];\n    };\n    _this.yaxis.p2c = function () {\n      return lonlat[1];\n    };\n    Fx.hover(gd, d3.event, _this.id);\n  });\n  bgRect.on('mouseout', function () {\n    if (gd._dragging) return;\n    dragElement.unhover(gd, d3.event);\n  });\n  bgRect.on('click', function () {\n    // For select and lasso the dragElement is handling clicks\n    if (dragMode !== 'select' && dragMode !== 'lasso') {\n      if (clickMode.indexOf('select') > -1) {\n        selectOnClick(d3.event, gd, [_this.xaxis], [_this.yaxis], _this.id, dragOptions);\n      }\n      if (clickMode.indexOf('event') > -1) {\n        // TODO: like pie and mapbox, this doesn't support right-click\n        // actually this one is worse, as right-click starts a pan, or leaves\n        // select in a weird state.\n        // Also, only tangentially related, we should cancel hover during pan\n        Fx.click(gd, d3.event);\n      }\n    }\n  });\n};\nproto.makeFramework = function () {\n  var _this = this;\n  var gd = _this.graphDiv;\n  var fullLayout = gd._fullLayout;\n  var clipId = 'clip' + fullLayout._uid + _this.id;\n  _this.clipDef = fullLayout._clips.append('clipPath').attr('id', clipId);\n  _this.clipRect = _this.clipDef.append('rect');\n  _this.framework = d3.select(_this.container).append('g').attr('class', 'geo ' + _this.id).call(Drawing.setClipUrl, clipId, gd);\n\n  // sane lonlat to px\n  _this.project = function (v) {\n    var px = _this.projection(v);\n    return px ? [px[0] - _this.xaxis._offset, px[1] - _this.yaxis._offset] : [null, null];\n  };\n  _this.xaxis = {\n    _id: 'x',\n    c2p: function (v) {\n      return _this.project(v)[0];\n    }\n  };\n  _this.yaxis = {\n    _id: 'y',\n    c2p: function (v) {\n      return _this.project(v)[1];\n    }\n  };\n\n  // mock axis for hover formatting\n  _this.mockAxis = {\n    type: 'linear',\n    showexponent: 'all',\n    exponentformat: 'B'\n  };\n  Axes.setConvert(_this.mockAxis, fullLayout);\n};\nproto.saveViewInitial = function (geoLayout) {\n  var center = geoLayout.center || {};\n  var projLayout = geoLayout.projection;\n  var rotation = projLayout.rotation || {};\n  this.viewInitial = {\n    'fitbounds': geoLayout.fitbounds,\n    'projection.scale': projLayout.scale\n  };\n  var extra;\n  if (geoLayout._isScoped) {\n    extra = {\n      'center.lon': center.lon,\n      'center.lat': center.lat\n    };\n  } else if (geoLayout._isClipped) {\n    extra = {\n      'projection.rotation.lon': rotation.lon,\n      'projection.rotation.lat': rotation.lat\n    };\n  } else {\n    extra = {\n      'center.lon': center.lon,\n      'center.lat': center.lat,\n      'projection.rotation.lon': rotation.lon\n    };\n  }\n  Lib.extendFlat(this.viewInitial, extra);\n};\nproto.render = function (mayRedrawOnUpdates) {\n  if (this._hasMarkerAngles && mayRedrawOnUpdates) {\n    this.plot(this._geoCalcData, this._fullLayout, [], true);\n  } else {\n    this._render();\n  }\n};\n\n// [hot code path] (re)draw all paths which depend on the projection\nproto._render = function () {\n  var projection = this.projection;\n  var pathFn = projection.getPath();\n  var k;\n  function translatePoints(d) {\n    var lonlatPx = projection(d.lonlat);\n    return lonlatPx ? strTranslate(lonlatPx[0], lonlatPx[1]) : null;\n  }\n  function hideShowPoints(d) {\n    return projection.isLonLatOverEdges(d.lonlat) ? 'none' : null;\n  }\n  for (k in this.basePaths) {\n    this.basePaths[k].attr('d', pathFn);\n  }\n  for (k in this.dataPaths) {\n    this.dataPaths[k].attr('d', function (d) {\n      return pathFn(d.geojson);\n    });\n  }\n  for (k in this.dataPoints) {\n    this.dataPoints[k].attr('display', hideShowPoints).attr('transform', translatePoints); // TODO: need to redraw points with marker angle instead of calling translatePoints\n  }\n};\n\n// Helper that wraps d3[geo + /* Projection name /*]() which:\n//\n// - adds 'getPath', 'getBounds' convenience methods\n// - scopes logic related to 'clipAngle'\n// - adds 'isLonLatOverEdges' method\n// - sets projection precision\n// - sets methods that aren't always defined depending\n//   on the projection type to a dummy 'd3-esque' function,\n//\n// This wrapper alleviates subsequent code of (many) annoying if-statements.\nfunction getProjection(geoLayout) {\n  var projLayout = geoLayout.projection;\n  var projType = projLayout.type;\n  var projName = constants.projNames[projType];\n  // uppercase the first letter and add geo to the start of method name\n  projName = 'geo' + Lib.titleCase(projName);\n  var projFn = geo[projName] || geoProjection[projName];\n  var projection = projFn();\n  var clipAngle = geoLayout._isSatellite ? Math.acos(1 / projLayout.distance) * 180 / Math.PI : geoLayout._isClipped ? constants.lonaxisSpan[projType] / 2 : null;\n  var methods = ['center', 'rotate', 'parallels', 'clipExtent'];\n  var dummyFn = function (_) {\n    return _ ? projection : [];\n  };\n  for (var i = 0; i < methods.length; i++) {\n    var m = methods[i];\n    if (typeof projection[m] !== 'function') {\n      projection[m] = dummyFn;\n    }\n  }\n  projection.isLonLatOverEdges = function (lonlat) {\n    if (projection(lonlat) === null) {\n      return true;\n    }\n    if (clipAngle) {\n      var r = projection.rotate();\n      var angle = geoDistance(lonlat, [-r[0], -r[1]]);\n      var maxAngle = clipAngle * Math.PI / 180;\n      return angle > maxAngle;\n    } else {\n      return false;\n    }\n  };\n  projection.getPath = function () {\n    return geoPath().projection(projection);\n  };\n  projection.getBounds = function (object) {\n    return projection.getPath().bounds(object);\n  };\n  projection.precision(constants.precision);\n  if (geoLayout._isSatellite) {\n    projection.tilt(projLayout.tilt).distance(projLayout.distance);\n  }\n  if (clipAngle) {\n    projection.clipAngle(clipAngle - constants.clipPad);\n  }\n  return projection;\n}\nfunction makeGraticule(axisName, geoLayout, fullLayout) {\n  // equivalent to the d3 \"ε\"\n  var epsilon = 1e-6;\n  // same as the geoGraticule default\n  var precision = 2.5;\n  var axLayout = geoLayout[axisName];\n  var scopeDefaults = constants.scopeDefaults[geoLayout.scope];\n  var rng;\n  var oppRng;\n  var coordFn;\n  if (axisName === 'lonaxis') {\n    rng = scopeDefaults.lonaxisRange;\n    oppRng = scopeDefaults.lataxisRange;\n    coordFn = function (v, l) {\n      return [v, l];\n    };\n  } else if (axisName === 'lataxis') {\n    rng = scopeDefaults.lataxisRange;\n    oppRng = scopeDefaults.lonaxisRange;\n    coordFn = function (v, l) {\n      return [l, v];\n    };\n  }\n  var dummyAx = {\n    type: 'linear',\n    range: [rng[0], rng[1] - epsilon],\n    tick0: axLayout.tick0,\n    dtick: axLayout.dtick\n  };\n  Axes.setConvert(dummyAx, fullLayout);\n  var vals = Axes.calcTicks(dummyAx);\n\n  // remove duplicate on antimeridian\n  if (!geoLayout.isScoped && axisName === 'lonaxis') {\n    vals.pop();\n  }\n  var len = vals.length;\n  var coords = new Array(len);\n  for (var i = 0; i < len; i++) {\n    var v = vals[i].x;\n    var line = coords[i] = [];\n    for (var l = oppRng[0]; l < oppRng[1] + precision; l += precision) {\n      line.push(coordFn(v, l));\n    }\n  }\n  return {\n    type: 'MultiLineString',\n    coordinates: coords\n  };\n}\n\n// Returns polygon GeoJSON corresponding to lon/lat range box\n// with well-defined direction\n//\n// Note that clipPad padding is added around range to avoid aliasing.\nfunction makeRangeBox(lon, lat) {\n  var clipPad = constants.clipPad;\n  var lon0 = lon[0] + clipPad;\n  var lon1 = lon[1] - clipPad;\n  var lat0 = lat[0] + clipPad;\n  var lat1 = lat[1] - clipPad;\n\n  // to cross antimeridian w/o ambiguity\n  if (lon0 > 0 && lon1 < 0) lon1 += 360;\n  var dlon4 = (lon1 - lon0) / 4;\n  return {\n    type: 'Polygon',\n    coordinates: [[[lon0, lat0], [lon0, lat1], [lon0 + dlon4, lat1], [lon0 + 2 * dlon4, lat1], [lon0 + 3 * dlon4, lat1], [lon1, lat1], [lon1, lat0], [lon1 - dlon4, lat0], [lon1 - 2 * dlon4, lat0], [lon1 - 3 * dlon4, lat0], [lon0, lat0]]]\n  };\n}\n\n/***/ }),\n\n/***/ 44622:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1622479__) {\n\n\"use strict\";\n\n\nvar getSubplotCalcData = (__nested_webpack_require_1622479__(27659)/* .getSubplotCalcData */ .AU);\nvar counterRegex = (__nested_webpack_require_1622479__(71828).counterRegex);\nvar createGeo = __nested_webpack_require_1622479__(69082);\nvar GEO = 'geo';\nvar counter = counterRegex(GEO);\nvar attributes = {};\nattributes[GEO] = {\n  valType: 'subplotid',\n  dflt: GEO,\n  editType: 'calc'\n};\nfunction plotGeo(gd) {\n  var fullLayout = gd._fullLayout;\n  var calcData = gd.calcdata;\n  var geoIds = fullLayout._subplots[GEO];\n  for (var i = 0; i < geoIds.length; i++) {\n    var geoId = geoIds[i];\n    var geoCalcData = getSubplotCalcData(calcData, GEO, geoId);\n    var geoLayout = fullLayout[geoId];\n    var geo = geoLayout._subplot;\n    if (!geo) {\n      geo = createGeo({\n        id: geoId,\n        graphDiv: gd,\n        container: fullLayout._geolayer.node(),\n        topojsonURL: gd._context.topojsonURL,\n        staticPlot: gd._context.staticPlot\n      });\n      fullLayout[geoId]._subplot = geo;\n    }\n    geo.plot(geoCalcData, fullLayout, gd._promises);\n  }\n}\nfunction clean(newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  var oldGeoKeys = oldFullLayout._subplots[GEO] || [];\n  for (var i = 0; i < oldGeoKeys.length; i++) {\n    var oldGeoKey = oldGeoKeys[i];\n    var oldGeo = oldFullLayout[oldGeoKey]._subplot;\n    if (!newFullLayout[oldGeoKey] && !!oldGeo) {\n      oldGeo.framework.remove();\n      oldGeo.clipDef.remove();\n    }\n  }\n}\nfunction updateFx(gd) {\n  var fullLayout = gd._fullLayout;\n  var subplotIds = fullLayout._subplots[GEO];\n  for (var i = 0; i < subplotIds.length; i++) {\n    var subplotLayout = fullLayout[subplotIds[i]];\n    var subplotObj = subplotLayout._subplot;\n    subplotObj.updateFx(fullLayout, subplotLayout);\n  }\n}\nmodule.exports = {\n  attr: GEO,\n  name: GEO,\n  idRoot: GEO,\n  idRegex: counter,\n  attrRegex: counter,\n  attributes: attributes,\n  layoutAttributes: __nested_webpack_require_1622479__(77519),\n  supplyLayoutDefaults: __nested_webpack_require_1622479__(82161),\n  plot: plotGeo,\n  updateFx: updateFx,\n  clean: clean\n};\n\n/***/ }),\n\n/***/ 77519:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1624585__) {\n\n\"use strict\";\n\n\nvar colorAttrs = __nested_webpack_require_1624585__(22399);\nvar domainAttrs = (__nested_webpack_require_1624585__(27670)/* .attributes */ .Y);\nvar dash = (__nested_webpack_require_1624585__(79952)/* .dash */ .P);\nvar constants = __nested_webpack_require_1624585__(78776);\nvar overrideAll = (__nested_webpack_require_1624585__(30962).overrideAll);\nvar sortObjectKeys = __nested_webpack_require_1624585__(78607);\nvar geoAxesAttrs = {\n  range: {\n    valType: 'info_array',\n    items: [{\n      valType: 'number'\n    }, {\n      valType: 'number'\n    }]\n  },\n  showgrid: {\n    valType: 'boolean',\n    dflt: false\n  },\n  tick0: {\n    valType: 'number',\n    dflt: 0\n  },\n  dtick: {\n    valType: 'number'\n  },\n  gridcolor: {\n    valType: 'color',\n    dflt: colorAttrs.lightLine\n  },\n  gridwidth: {\n    valType: 'number',\n    min: 0,\n    dflt: 1\n  },\n  griddash: dash\n};\nvar attrs = module.exports = overrideAll({\n  domain: domainAttrs({\n    name: 'geo'\n  }, {}),\n  fitbounds: {\n    valType: 'enumerated',\n    values: [false, 'locations', 'geojson'],\n    dflt: false,\n    editType: 'plot'\n  },\n  resolution: {\n    valType: 'enumerated',\n    values: [110, 50],\n    dflt: 110,\n    coerceNumber: true\n  },\n  scope: {\n    valType: 'enumerated',\n    values: sortObjectKeys(constants.scopeDefaults),\n    dflt: 'world'\n  },\n  projection: {\n    type: {\n      valType: 'enumerated',\n      values: sortObjectKeys(constants.projNames)\n    },\n    rotation: {\n      lon: {\n        valType: 'number'\n      },\n      lat: {\n        valType: 'number'\n      },\n      roll: {\n        valType: 'number'\n      }\n    },\n    tilt: {\n      valType: 'number',\n      dflt: 0\n    },\n    distance: {\n      valType: 'number',\n      min: 1.001,\n      dflt: 2\n    },\n    parallels: {\n      valType: 'info_array',\n      items: [{\n        valType: 'number'\n      }, {\n        valType: 'number'\n      }]\n    },\n    scale: {\n      valType: 'number',\n      min: 0,\n      dflt: 1\n    }\n  },\n  center: {\n    lon: {\n      valType: 'number'\n    },\n    lat: {\n      valType: 'number'\n    }\n  },\n  visible: {\n    valType: 'boolean',\n    dflt: true\n  },\n  showcoastlines: {\n    valType: 'boolean'\n  },\n  coastlinecolor: {\n    valType: 'color',\n    dflt: colorAttrs.defaultLine\n  },\n  coastlinewidth: {\n    valType: 'number',\n    min: 0,\n    dflt: 1\n  },\n  showland: {\n    valType: 'boolean',\n    dflt: false\n  },\n  landcolor: {\n    valType: 'color',\n    dflt: constants.landColor\n  },\n  showocean: {\n    valType: 'boolean',\n    dflt: false\n  },\n  oceancolor: {\n    valType: 'color',\n    dflt: constants.waterColor\n  },\n  showlakes: {\n    valType: 'boolean',\n    dflt: false\n  },\n  lakecolor: {\n    valType: 'color',\n    dflt: constants.waterColor\n  },\n  showrivers: {\n    valType: 'boolean',\n    dflt: false\n  },\n  rivercolor: {\n    valType: 'color',\n    dflt: constants.waterColor\n  },\n  riverwidth: {\n    valType: 'number',\n    min: 0,\n    dflt: 1\n  },\n  showcountries: {\n    valType: 'boolean'\n  },\n  countrycolor: {\n    valType: 'color',\n    dflt: colorAttrs.defaultLine\n  },\n  countrywidth: {\n    valType: 'number',\n    min: 0,\n    dflt: 1\n  },\n  showsubunits: {\n    valType: 'boolean'\n  },\n  subunitcolor: {\n    valType: 'color',\n    dflt: colorAttrs.defaultLine\n  },\n  subunitwidth: {\n    valType: 'number',\n    min: 0,\n    dflt: 1\n  },\n  showframe: {\n    valType: 'boolean'\n  },\n  framecolor: {\n    valType: 'color',\n    dflt: colorAttrs.defaultLine\n  },\n  framewidth: {\n    valType: 'number',\n    min: 0,\n    dflt: 1\n  },\n  bgcolor: {\n    valType: 'color',\n    dflt: colorAttrs.background\n  },\n  lonaxis: geoAxesAttrs,\n  lataxis: geoAxesAttrs\n}, 'plot', 'from-root');\n\n// set uirevision outside of overrideAll so it can be `editType: 'none'`\nattrs.uirevision = {\n  valType: 'any',\n  editType: 'none'\n};\n\n/***/ }),\n\n/***/ 82161:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1628369__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_1628369__(71828);\nvar handleSubplotDefaults = __nested_webpack_require_1628369__(49119);\nvar getSubplotData = (__nested_webpack_require_1628369__(27659)/* .getSubplotData */ .NG);\nvar constants = __nested_webpack_require_1628369__(78776);\nvar layoutAttributes = __nested_webpack_require_1628369__(77519);\nvar axesNames = constants.axesNames;\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {\n  handleSubplotDefaults(layoutIn, layoutOut, fullData, {\n    type: 'geo',\n    attributes: layoutAttributes,\n    handleDefaults: handleGeoDefaults,\n    fullData: fullData,\n    partition: 'y'\n  });\n};\nfunction handleGeoDefaults(geoLayoutIn, geoLayoutOut, coerce, opts) {\n  var subplotData = getSubplotData(opts.fullData, 'geo', opts.id);\n  var traceIndices = subplotData.map(function (t) {\n    return t._expandedIndex;\n  });\n  var resolution = coerce('resolution');\n  var scope = coerce('scope');\n  var scopeParams = constants.scopeDefaults[scope];\n  var projType = coerce('projection.type', scopeParams.projType);\n  var isAlbersUsa = geoLayoutOut._isAlbersUsa = projType === 'albers usa';\n\n  // no other scopes are allowed for 'albers usa' projection\n  if (isAlbersUsa) scope = geoLayoutOut.scope = 'usa';\n  var isScoped = geoLayoutOut._isScoped = scope !== 'world';\n  var isSatellite = geoLayoutOut._isSatellite = projType === 'satellite';\n  var isConic = geoLayoutOut._isConic = projType.indexOf('conic') !== -1 || projType === 'albers';\n  var isClipped = geoLayoutOut._isClipped = !!constants.lonaxisSpan[projType];\n  if (geoLayoutIn.visible === false) {\n    // should override template.layout.geo.show* - see issue 4482\n\n    // make a copy\n    var newTemplate = Lib.extendDeep({}, geoLayoutOut._template);\n\n    // override show*\n    newTemplate.showcoastlines = false;\n    newTemplate.showcountries = false;\n    newTemplate.showframe = false;\n    newTemplate.showlakes = false;\n    newTemplate.showland = false;\n    newTemplate.showocean = false;\n    newTemplate.showrivers = false;\n    newTemplate.showsubunits = false;\n    if (newTemplate.lonaxis) newTemplate.lonaxis.showgrid = false;\n    if (newTemplate.lataxis) newTemplate.lataxis.showgrid = false;\n\n    // set ref to copy\n    geoLayoutOut._template = newTemplate;\n  }\n  var visible = coerce('visible');\n  var show;\n  for (var i = 0; i < axesNames.length; i++) {\n    var axisName = axesNames[i];\n    var dtickDflt = [30, 10][i];\n    var rangeDflt;\n    if (isScoped) {\n      rangeDflt = scopeParams[axisName + 'Range'];\n    } else {\n      var dfltSpans = constants[axisName + 'Span'];\n      var hSpan = (dfltSpans[projType] || dfltSpans['*']) / 2;\n      var rot = coerce('projection.rotation.' + axisName.substr(0, 3), scopeParams.projRotate[i]);\n      rangeDflt = [rot - hSpan, rot + hSpan];\n    }\n    var range = coerce(axisName + '.range', rangeDflt);\n    coerce(axisName + '.tick0');\n    coerce(axisName + '.dtick', dtickDflt);\n    show = coerce(axisName + '.showgrid', !visible ? false : undefined);\n    if (show) {\n      coerce(axisName + '.gridcolor');\n      coerce(axisName + '.gridwidth');\n      coerce(axisName + '.griddash');\n    }\n\n    // mock axis for autorange computations\n    geoLayoutOut[axisName]._ax = {\n      type: 'linear',\n      _id: axisName.slice(0, 3),\n      _traceIndices: traceIndices,\n      setScale: Lib.identity,\n      c2l: Lib.identity,\n      r2l: Lib.identity,\n      autorange: true,\n      range: range.slice(),\n      _m: 1,\n      _input: {}\n    };\n  }\n  var lonRange = geoLayoutOut.lonaxis.range;\n  var latRange = geoLayoutOut.lataxis.range;\n\n  // to cross antimeridian w/o ambiguity\n  var lon0 = lonRange[0];\n  var lon1 = lonRange[1];\n  if (lon0 > 0 && lon1 < 0) lon1 += 360;\n  var centerLon = (lon0 + lon1) / 2;\n  var projLon;\n  if (!isAlbersUsa) {\n    var dfltProjRotate = isScoped ? scopeParams.projRotate : [centerLon, 0, 0];\n    projLon = coerce('projection.rotation.lon', dfltProjRotate[0]);\n    coerce('projection.rotation.lat', dfltProjRotate[1]);\n    coerce('projection.rotation.roll', dfltProjRotate[2]);\n    show = coerce('showcoastlines', !isScoped && visible);\n    if (show) {\n      coerce('coastlinecolor');\n      coerce('coastlinewidth');\n    }\n    show = coerce('showocean', !visible ? false : undefined);\n    if (show) coerce('oceancolor');\n  }\n  var centerLonDflt;\n  var centerLatDflt;\n  if (isAlbersUsa) {\n    // 'albers usa' does not have a 'center',\n    // these values were found using via:\n    //   projection.invert([geoLayout.center.lon, geoLayoutIn.center.lat])\n    centerLonDflt = -96.6;\n    centerLatDflt = 38.7;\n  } else {\n    centerLonDflt = isScoped ? centerLon : projLon;\n    centerLatDflt = (latRange[0] + latRange[1]) / 2;\n  }\n  coerce('center.lon', centerLonDflt);\n  coerce('center.lat', centerLatDflt);\n  if (isSatellite) {\n    coerce('projection.tilt');\n    coerce('projection.distance');\n  }\n  if (isConic) {\n    var dfltProjParallels = scopeParams.projParallels || [0, 60];\n    coerce('projection.parallels', dfltProjParallels);\n  }\n  coerce('projection.scale');\n  show = coerce('showland', !visible ? false : undefined);\n  if (show) coerce('landcolor');\n  show = coerce('showlakes', !visible ? false : undefined);\n  if (show) coerce('lakecolor');\n  show = coerce('showrivers', !visible ? false : undefined);\n  if (show) {\n    coerce('rivercolor');\n    coerce('riverwidth');\n  }\n  show = coerce('showcountries', isScoped && scope !== 'usa' && visible);\n  if (show) {\n    coerce('countrycolor');\n    coerce('countrywidth');\n  }\n  if (scope === 'usa' || scope === 'north america' && resolution === 50) {\n    // Only works for:\n    //   USA states at 110m\n    //   USA states + Canada provinces at 50m\n    coerce('showsubunits', visible);\n    coerce('subunitcolor');\n    coerce('subunitwidth');\n  }\n  if (!isScoped) {\n    // Does not work in non-world scopes\n    show = coerce('showframe', visible);\n    if (show) {\n      coerce('framecolor');\n      coerce('framewidth');\n    }\n  }\n  coerce('bgcolor');\n  var fitBounds = coerce('fitbounds');\n\n  // clear attributes that will get auto-filled later\n  if (fitBounds) {\n    delete geoLayoutOut.projection.scale;\n    if (isScoped) {\n      delete geoLayoutOut.center.lon;\n      delete geoLayoutOut.center.lat;\n    } else if (isClipped) {\n      delete geoLayoutOut.center.lon;\n      delete geoLayoutOut.center.lat;\n      delete geoLayoutOut.projection.rotation.lon;\n      delete geoLayoutOut.projection.rotation.lat;\n      delete geoLayoutOut.lonaxis.range;\n      delete geoLayoutOut.lataxis.range;\n    } else {\n      delete geoLayoutOut.center.lon;\n      delete geoLayoutOut.center.lat;\n      delete geoLayoutOut.projection.rotation.lon;\n    }\n  }\n}\n\n/***/ }),\n\n/***/ 74455:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1635088__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_1635088__(39898);\nvar Lib = __nested_webpack_require_1635088__(71828);\nvar Registry = __nested_webpack_require_1635088__(73972);\nvar radians = Math.PI / 180;\nvar degrees = 180 / Math.PI;\nvar zoomstartStyle = {\n  cursor: 'pointer'\n};\nvar zoomendStyle = {\n  cursor: 'auto'\n};\nfunction createGeoZoom(geo, geoLayout) {\n  var projection = geo.projection;\n  var zoomConstructor;\n  if (geoLayout._isScoped) {\n    zoomConstructor = zoomScoped;\n  } else if (geoLayout._isClipped) {\n    zoomConstructor = zoomClipped;\n  } else {\n    zoomConstructor = zoomNonClipped;\n  }\n\n  // TODO add a conic-specific zoom\n\n  return zoomConstructor(geo, projection);\n}\nmodule.exports = createGeoZoom;\n\n// common to all zoom types\nfunction initZoom(geo, projection) {\n  return d3.behavior.zoom().translate(projection.translate()).scale(projection.scale());\n}\n\n// sync zoom updates with user & full layout\nfunction sync(geo, projection, cb) {\n  var id = geo.id;\n  var gd = geo.graphDiv;\n  var layout = gd.layout;\n  var userOpts = layout[id];\n  var fullLayout = gd._fullLayout;\n  var fullOpts = fullLayout[id];\n  var preGUI = {};\n  var eventData = {};\n  function set(propStr, val) {\n    preGUI[id + '.' + propStr] = Lib.nestedProperty(userOpts, propStr).get();\n    Registry.call('_storeDirectGUIEdit', layout, fullLayout._preGUI, preGUI);\n    var fullNp = Lib.nestedProperty(fullOpts, propStr);\n    if (fullNp.get() !== val) {\n      fullNp.set(val);\n      Lib.nestedProperty(userOpts, propStr).set(val);\n      eventData[id + '.' + propStr] = val;\n    }\n  }\n  cb(set);\n  set('projection.scale', projection.scale() / geo.fitScale);\n  set('fitbounds', false);\n  gd.emit('plotly_relayout', eventData);\n}\n\n// zoom for scoped projections\nfunction zoomScoped(geo, projection) {\n  var zoom = initZoom(geo, projection);\n  function handleZoomstart() {\n    d3.select(this).style(zoomstartStyle);\n  }\n  function handleZoom() {\n    projection.scale(d3.event.scale).translate(d3.event.translate);\n    geo.render(true);\n    var center = projection.invert(geo.midPt);\n    geo.graphDiv.emit('plotly_relayouting', {\n      'geo.projection.scale': projection.scale() / geo.fitScale,\n      'geo.center.lon': center[0],\n      'geo.center.lat': center[1]\n    });\n  }\n  function syncCb(set) {\n    var center = projection.invert(geo.midPt);\n    set('center.lon', center[0]);\n    set('center.lat', center[1]);\n  }\n  function handleZoomend() {\n    d3.select(this).style(zoomendStyle);\n    sync(geo, projection, syncCb);\n  }\n  zoom.on('zoomstart', handleZoomstart).on('zoom', handleZoom).on('zoomend', handleZoomend);\n  return zoom;\n}\n\n// zoom for non-clipped projections\nfunction zoomNonClipped(geo, projection) {\n  var zoom = initZoom(geo, projection);\n  var INSIDETOLORANCEPXS = 2;\n  var mouse0, rotate0, translate0, lastRotate, zoomPoint, mouse1, rotate1, point1, didZoom;\n  function position(x) {\n    return projection.invert(x);\n  }\n  function outside(x) {\n    var pos = position(x);\n    if (!pos) return true;\n    var pt = projection(pos);\n    return Math.abs(pt[0] - x[0]) > INSIDETOLORANCEPXS || Math.abs(pt[1] - x[1]) > INSIDETOLORANCEPXS;\n  }\n  function handleZoomstart() {\n    d3.select(this).style(zoomstartStyle);\n    mouse0 = d3.mouse(this);\n    rotate0 = projection.rotate();\n    translate0 = projection.translate();\n    lastRotate = rotate0;\n    zoomPoint = position(mouse0);\n  }\n  function handleZoom() {\n    mouse1 = d3.mouse(this);\n    if (outside(mouse0)) {\n      zoom.scale(projection.scale());\n      zoom.translate(projection.translate());\n      return;\n    }\n    projection.scale(d3.event.scale);\n    projection.translate([translate0[0], d3.event.translate[1]]);\n    if (!zoomPoint) {\n      mouse0 = mouse1;\n      zoomPoint = position(mouse0);\n    } else if (position(mouse1)) {\n      point1 = position(mouse1);\n      rotate1 = [lastRotate[0] + (point1[0] - zoomPoint[0]), rotate0[1], rotate0[2]];\n      projection.rotate(rotate1);\n      lastRotate = rotate1;\n    }\n    didZoom = true;\n    geo.render(true);\n    var rotate = projection.rotate();\n    var center = projection.invert(geo.midPt);\n    geo.graphDiv.emit('plotly_relayouting', {\n      'geo.projection.scale': projection.scale() / geo.fitScale,\n      'geo.center.lon': center[0],\n      'geo.center.lat': center[1],\n      'geo.projection.rotation.lon': -rotate[0]\n    });\n  }\n  function handleZoomend() {\n    d3.select(this).style(zoomendStyle);\n    if (didZoom) sync(geo, projection, syncCb);\n  }\n  function syncCb(set) {\n    var rotate = projection.rotate();\n    var center = projection.invert(geo.midPt);\n    set('projection.rotation.lon', -rotate[0]);\n    set('center.lon', center[0]);\n    set('center.lat', center[1]);\n  }\n  zoom.on('zoomstart', handleZoomstart).on('zoom', handleZoom).on('zoomend', handleZoomend);\n  return zoom;\n}\n\n// zoom for clipped projections\n// inspired by https://www.jasondavies.com/maps/d3.geo.zoom.js\nfunction zoomClipped(geo, projection) {\n  var view = {\n    r: projection.rotate(),\n    k: projection.scale()\n  };\n  var zoom = initZoom(geo, projection);\n  var event = d3eventDispatch(zoom, 'zoomstart', 'zoom', 'zoomend');\n  var zooming = 0;\n  var zoomOn = zoom.on;\n  var zoomPoint;\n  zoom.on('zoomstart', function () {\n    d3.select(this).style(zoomstartStyle);\n    var mouse0 = d3.mouse(this);\n    var rotate0 = projection.rotate();\n    var lastRotate = rotate0;\n    var translate0 = projection.translate();\n    var q = quaternionFromEuler(rotate0);\n    zoomPoint = position(projection, mouse0);\n    zoomOn.call(zoom, 'zoom', function () {\n      var mouse1 = d3.mouse(this);\n      projection.scale(view.k = d3.event.scale);\n      if (!zoomPoint) {\n        // if no zoomPoint, the mouse wasn't over the actual geography yet\n        // maybe this point is the start... we'll find out next time!\n        mouse0 = mouse1;\n        zoomPoint = position(projection, mouse0);\n      } else if (position(projection, mouse1)) {\n        // check if the point is on the map\n        // if not, don't do anything new but scale\n        // if it is, then we can assume between will exist below\n        // so we don't need the 'bank' function, whatever that is.\n\n        // go back to original projection temporarily\n        // except for scale... that's kind of independent?\n        projection.rotate(rotate0).translate(translate0);\n\n        // calculate the new params\n        var point1 = position(projection, mouse1);\n        var between = rotateBetween(zoomPoint, point1);\n        var newEuler = eulerFromQuaternion(multiply(q, between));\n        var rotateAngles = view.r = unRoll(newEuler, zoomPoint, lastRotate);\n        if (!isFinite(rotateAngles[0]) || !isFinite(rotateAngles[1]) || !isFinite(rotateAngles[2])) {\n          rotateAngles = lastRotate;\n        }\n\n        // update the projection\n        projection.rotate(rotateAngles);\n        lastRotate = rotateAngles;\n      }\n      zoomed(event.of(this, arguments));\n    });\n    zoomstarted(event.of(this, arguments));\n  }).on('zoomend', function () {\n    d3.select(this).style(zoomendStyle);\n    zoomOn.call(zoom, 'zoom', null);\n    zoomended(event.of(this, arguments));\n    sync(geo, projection, syncCb);\n  }).on('zoom.redraw', function () {\n    geo.render(true);\n    var _rotate = projection.rotate();\n    geo.graphDiv.emit('plotly_relayouting', {\n      'geo.projection.scale': projection.scale() / geo.fitScale,\n      'geo.projection.rotation.lon': -_rotate[0],\n      'geo.projection.rotation.lat': -_rotate[1]\n    });\n  });\n  function zoomstarted(dispatch) {\n    if (!zooming++) dispatch({\n      type: 'zoomstart'\n    });\n  }\n  function zoomed(dispatch) {\n    dispatch({\n      type: 'zoom'\n    });\n  }\n  function zoomended(dispatch) {\n    if (! --zooming) dispatch({\n      type: 'zoomend'\n    });\n  }\n  function syncCb(set) {\n    var _rotate = projection.rotate();\n    set('projection.rotation.lon', -_rotate[0]);\n    set('projection.rotation.lat', -_rotate[1]);\n  }\n  return d3.rebind(zoom, event, 'on');\n}\n\n// -- helper functions for zoomClipped\n\nfunction position(projection, point) {\n  var spherical = projection.invert(point);\n  return spherical && isFinite(spherical[0]) && isFinite(spherical[1]) && cartesian(spherical);\n}\nfunction quaternionFromEuler(euler) {\n  var lambda = 0.5 * euler[0] * radians;\n  var phi = 0.5 * euler[1] * radians;\n  var gamma = 0.5 * euler[2] * radians;\n  var sinLambda = Math.sin(lambda);\n  var cosLambda = Math.cos(lambda);\n  var sinPhi = Math.sin(phi);\n  var cosPhi = Math.cos(phi);\n  var sinGamma = Math.sin(gamma);\n  var cosGamma = Math.cos(gamma);\n  return [cosLambda * cosPhi * cosGamma + sinLambda * sinPhi * sinGamma, sinLambda * cosPhi * cosGamma - cosLambda * sinPhi * sinGamma, cosLambda * sinPhi * cosGamma + sinLambda * cosPhi * sinGamma, cosLambda * cosPhi * sinGamma - sinLambda * sinPhi * cosGamma];\n}\nfunction multiply(a, b) {\n  var a0 = a[0];\n  var a1 = a[1];\n  var a2 = a[2];\n  var a3 = a[3];\n  var b0 = b[0];\n  var b1 = b[1];\n  var b2 = b[2];\n  var b3 = b[3];\n  return [a0 * b0 - a1 * b1 - a2 * b2 - a3 * b3, a0 * b1 + a1 * b0 + a2 * b3 - a3 * b2, a0 * b2 - a1 * b3 + a2 * b0 + a3 * b1, a0 * b3 + a1 * b2 - a2 * b1 + a3 * b0];\n}\nfunction rotateBetween(a, b) {\n  if (!a || !b) return;\n  var axis = cross(a, b);\n  var norm = Math.sqrt(dot(axis, axis));\n  var halfgamma = 0.5 * Math.acos(Math.max(-1, Math.min(1, dot(a, b))));\n  var k = Math.sin(halfgamma) / norm;\n  return norm && [Math.cos(halfgamma), axis[2] * k, -axis[1] * k, axis[0] * k];\n}\n\n// input:\n//   rotateAngles: a calculated set of Euler angles\n//   pt: a point (cartesian in 3-space) to keep fixed\n//   roll0: an initial roll, to be preserved\n// output:\n//   a set of Euler angles that preserve the projection of pt\n//     but set roll (output[2]) equal to roll0\n//     note that this doesn't depend on the particular projection,\n//     just on the rotation angles\nfunction unRoll(rotateAngles, pt, lastRotate) {\n  // calculate the fixed point transformed by these Euler angles\n  // but with the desired roll undone\n  var ptRotated = rotateCartesian(pt, 2, rotateAngles[0]);\n  ptRotated = rotateCartesian(ptRotated, 1, rotateAngles[1]);\n  ptRotated = rotateCartesian(ptRotated, 0, rotateAngles[2] - lastRotate[2]);\n  var x = pt[0];\n  var y = pt[1];\n  var z = pt[2];\n  var f = ptRotated[0];\n  var g = ptRotated[1];\n  var h = ptRotated[2];\n\n  // the following essentially solves:\n  // ptRotated = rotateCartesian(rotateCartesian(pt, 2, newYaw), 1, newPitch)\n  // for newYaw and newPitch, as best it can\n  var theta = Math.atan2(y, x) * degrees;\n  var a = Math.sqrt(x * x + y * y);\n  var b;\n  var newYaw1;\n  if (Math.abs(g) > a) {\n    newYaw1 = (g > 0 ? 90 : -90) - theta;\n    b = 0;\n  } else {\n    newYaw1 = Math.asin(g / a) * degrees - theta;\n    b = Math.sqrt(a * a - g * g);\n  }\n  var newYaw2 = 180 - newYaw1 - 2 * theta;\n  var newPitch1 = (Math.atan2(h, f) - Math.atan2(z, b)) * degrees;\n  var newPitch2 = (Math.atan2(h, f) - Math.atan2(z, -b)) * degrees;\n\n  // which is closest to lastRotate[0,1]: newYaw/Pitch or newYaw2/Pitch2?\n  var dist1 = angleDistance(lastRotate[0], lastRotate[1], newYaw1, newPitch1);\n  var dist2 = angleDistance(lastRotate[0], lastRotate[1], newYaw2, newPitch2);\n  if (dist1 <= dist2) return [newYaw1, newPitch1, lastRotate[2]];else return [newYaw2, newPitch2, lastRotate[2]];\n}\nfunction angleDistance(yaw0, pitch0, yaw1, pitch1) {\n  var dYaw = angleMod(yaw1 - yaw0);\n  var dPitch = angleMod(pitch1 - pitch0);\n  return Math.sqrt(dYaw * dYaw + dPitch * dPitch);\n}\n\n// reduce an angle in degrees to [-180,180]\nfunction angleMod(angle) {\n  return (angle % 360 + 540) % 360 - 180;\n}\n\n// rotate a cartesian vector\n// axis is 0 (x), 1 (y), or 2 (z)\n// angle is in degrees\nfunction rotateCartesian(vector, axis, angle) {\n  var angleRads = angle * radians;\n  var vectorOut = vector.slice();\n  var ax1 = axis === 0 ? 1 : 0;\n  var ax2 = axis === 2 ? 1 : 2;\n  var cosa = Math.cos(angleRads);\n  var sina = Math.sin(angleRads);\n  vectorOut[ax1] = vector[ax1] * cosa - vector[ax2] * sina;\n  vectorOut[ax2] = vector[ax2] * cosa + vector[ax1] * sina;\n  return vectorOut;\n}\nfunction eulerFromQuaternion(q) {\n  return [Math.atan2(2 * (q[0] * q[1] + q[2] * q[3]), 1 - 2 * (q[1] * q[1] + q[2] * q[2])) * degrees, Math.asin(Math.max(-1, Math.min(1, 2 * (q[0] * q[2] - q[3] * q[1])))) * degrees, Math.atan2(2 * (q[0] * q[3] + q[1] * q[2]), 1 - 2 * (q[2] * q[2] + q[3] * q[3])) * degrees];\n}\nfunction cartesian(spherical) {\n  var lambda = spherical[0] * radians;\n  var phi = spherical[1] * radians;\n  var cosPhi = Math.cos(phi);\n  return [cosPhi * Math.cos(lambda), cosPhi * Math.sin(lambda), Math.sin(phi)];\n}\nfunction dot(a, b) {\n  var s = 0;\n  for (var i = 0, n = a.length; i < n; ++i) s += a[i] * b[i];\n  return s;\n}\nfunction cross(a, b) {\n  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// Like d3.dispatch, but for custom events abstracting native UI events. These\n// events have a target component (such as a brush), a target element (such as\n// the svg:g element containing the brush) and the standard arguments `d` (the\n// target element's data) and `i` (the selection index of the target element).\nfunction d3eventDispatch(target) {\n  var i = 0;\n  var n = arguments.length;\n  var argumentz = [];\n  while (++i < n) argumentz.push(arguments[i]);\n  var dispatch = d3.dispatch.apply(null, argumentz);\n\n  // Creates a dispatch context for the specified `thiz` (typically, the target\n  // DOM element that received the source event) and `argumentz` (typically, the\n  // data `d` and index `i` of the target element). The returned function can be\n  // used to dispatch an event to any registered listeners; the function takes a\n  // single argument as input, being the event to dispatch. The event must have\n  // a \"type\" attribute which corresponds to a type registered in the\n  // constructor. This context will automatically populate the \"sourceEvent\" and\n  // \"target\" attributes of the event, as well as setting the `d3.event` global\n  // for the duration of the notification.\n  dispatch.of = function (thiz, argumentz) {\n    return function (e1) {\n      var e0;\n      try {\n        e0 = e1.sourceEvent = d3.event;\n        e1.target = target;\n        d3.event = e1;\n        dispatch[e1.type].apply(thiz, argumentz);\n      } finally {\n        d3.event = e0;\n      }\n    };\n  };\n  return dispatch;\n}\n\n/***/ }),\n\n/***/ 27659:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_1649478__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_1649478__(73972);\nvar SUBPLOT_PATTERN = (__nested_webpack_require_1649478__(85555).SUBPLOT_PATTERN);\n\n/**\n * Get calcdata trace(s) associated with a given subplot\n *\n * @param {array} calcData: as in gd.calcdata\n * @param {string} type: subplot type\n * @param {string} subplotId: subplot id to look for\n *\n * @return {array} array of calcdata traces\n */\nexports.AU = function (calcData, type, subplotId) {\n  var basePlotModule = Registry.subplotsRegistry[type];\n  if (!basePlotModule) return [];\n  var attr = basePlotModule.attr;\n  var subplotCalcData = [];\n  for (var i = 0; i < calcData.length; i++) {\n    var calcTrace = calcData[i];\n    var trace = calcTrace[0].trace;\n    if (trace[attr] === subplotId) subplotCalcData.push(calcTrace);\n  }\n  return subplotCalcData;\n};\n/**\n * Get calcdata trace(s) that can be plotted with a given module\n * NOTE: this isn't necessarily just exactly matching trace type,\n * if multiple trace types use the same plotting routine, they will be\n * collected here.\n * In order to not plot the same thing multiple times, we return two arrays,\n * the calcdata we *will* plot with this module, and the ones we *won't*\n *\n * @param {array} calcdata: as in gd.calcdata\n * @param {object|string|fn} arg1:\n *  the plotting module, or its name, or its plot method\n *\n * @return {array[array]} [foundCalcdata, remainingCalcdata]\n */\nexports.a0 = function (calcdata, arg1) {\n  var moduleCalcData = [];\n  var remainingCalcData = [];\n  var plotMethod;\n  if (typeof arg1 === 'string') {\n    plotMethod = Registry.getModule(arg1).plot;\n  } else if (typeof arg1 === 'function') {\n    plotMethod = arg1;\n  } else {\n    plotMethod = arg1.plot;\n  }\n  if (!plotMethod) {\n    return [moduleCalcData, calcdata];\n  }\n  for (var i = 0; i < calcdata.length; i++) {\n    var cd = calcdata[i];\n    var trace = cd[0].trace;\n    // N.B.\n    // - 'legendonly' traces do not make it past here\n    // - skip over 'visible' traces that got trimmed completely during calc transforms\n    if (trace.visible !== true || trace._length === 0) continue;\n\n    // group calcdata trace not by 'module' (as the name of this function\n    // would suggest), but by 'module plot method' so that if some traces\n    // share the same module plot method (e.g. bar and histogram), we\n    // only call it one!\n    if (trace._module.plot === plotMethod) {\n      moduleCalcData.push(cd);\n    } else {\n      remainingCalcData.push(cd);\n    }\n  }\n  return [moduleCalcData, remainingCalcData];\n};\n\n/**\n * Get the data trace(s) associated with a given subplot.\n *\n * @param {array} data  plotly full data array.\n * @param {string} type subplot type to look for.\n * @param {string} subplotId subplot id to look for.\n *\n * @return {array} list of trace objects.\n *\n */\nexports.NG = function getSubplotData(data, type, subplotId) {\n  if (!Registry.subplotsRegistry[type]) return [];\n  var attr = Registry.subplotsRegistry[type].attr;\n  var subplotData = [];\n  var trace, subplotX, subplotY;\n  if (type === 'gl2d') {\n    var spmatch = subplotId.match(SUBPLOT_PATTERN);\n    subplotX = 'x' + spmatch[1];\n    subplotY = 'y' + spmatch[2];\n  }\n  for (var i = 0; i < data.length; i++) {\n    trace = data[i];\n    if (type === 'gl2d' && Registry.traceIs(trace, 'gl2d')) {\n      if (trace[attr[0]] === subplotX && trace[attr[1]] === subplotY) {\n        subplotData.push(trace);\n      }\n    } else {\n      if (trace[attr] === subplotId) subplotData.push(trace);\n    }\n  }\n  return subplotData;\n};\n\n/***/ }),\n\n/***/ 75071:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1653062__) {\n\n\"use strict\";\n\n\nvar mouseChange = __nested_webpack_require_1653062__(16825);\nvar mouseWheel = __nested_webpack_require_1653062__(1195);\nvar mouseOffset = __nested_webpack_require_1653062__(48956);\nvar cartesianConstants = __nested_webpack_require_1653062__(85555);\nvar hasPassive = __nested_webpack_require_1653062__(38520);\nmodule.exports = createCamera;\nfunction Camera2D(element, plot) {\n  this.element = element;\n  this.plot = plot;\n  this.mouseListener = null;\n  this.wheelListener = null;\n  this.lastInputTime = Date.now();\n  this.lastPos = [0, 0];\n  this.boxEnabled = false;\n  this.boxInited = false;\n  this.boxStart = [0, 0];\n  this.boxEnd = [0, 0];\n  this.dragStart = [0, 0];\n}\nfunction createCamera(scene) {\n  var element = scene.mouseContainer;\n  var plot = scene.glplot;\n  var result = new Camera2D(element, plot);\n  function unSetAutoRange() {\n    scene.xaxis.autorange = false;\n    scene.yaxis.autorange = false;\n  }\n  function getSubplotConstraint() {\n    // note: this assumes we only have one x and one y axis on this subplot\n    // when this constraint is lifted this block won't make sense\n    var constraints = scene.graphDiv._fullLayout._axisConstraintGroups;\n    var xaId = scene.xaxis._id;\n    var yaId = scene.yaxis._id;\n    for (var i = 0; i < constraints.length; i++) {\n      if (constraints[i][xaId] !== -1) {\n        if (constraints[i][yaId] !== -1) return true;\n        break;\n      }\n    }\n    return false;\n  }\n  result.mouseListener = mouseChange(element, handleInteraction);\n\n  // enable simple touch interactions\n  element.addEventListener('touchstart', function (ev) {\n    var xy = mouseOffset(ev.changedTouches[0], element);\n    handleInteraction(0, xy[0], xy[1]);\n    handleInteraction(1, xy[0], xy[1]);\n    ev.preventDefault();\n  }, hasPassive ? {\n    passive: false\n  } : false);\n  element.addEventListener('touchmove', function (ev) {\n    ev.preventDefault();\n    var xy = mouseOffset(ev.changedTouches[0], element);\n    handleInteraction(1, xy[0], xy[1]);\n    ev.preventDefault();\n  }, hasPassive ? {\n    passive: false\n  } : false);\n  element.addEventListener('touchend', function (ev) {\n    handleInteraction(0, result.lastPos[0], result.lastPos[1]);\n    ev.preventDefault();\n  }, hasPassive ? {\n    passive: false\n  } : false);\n  function handleInteraction(buttons, x, y) {\n    var dataBox = scene.calcDataBox();\n    var viewBox = plot.viewBox;\n    var lastX = result.lastPos[0];\n    var lastY = result.lastPos[1];\n    var MINDRAG = cartesianConstants.MINDRAG * plot.pixelRatio;\n    var MINZOOM = cartesianConstants.MINZOOM * plot.pixelRatio;\n    var dx, dy;\n    x *= plot.pixelRatio;\n    y *= plot.pixelRatio;\n\n    // mouseChange gives y about top; convert to about bottom\n    y = viewBox[3] - viewBox[1] - y;\n    function updateRange(i0, start, end) {\n      var range0 = Math.min(start, end);\n      var range1 = Math.max(start, end);\n      if (range0 !== range1) {\n        dataBox[i0] = range0;\n        dataBox[i0 + 2] = range1;\n        result.dataBox = dataBox;\n        scene.setRanges(dataBox);\n      } else {\n        scene.selectBox.selectBox = [0, 0, 1, 1];\n        scene.glplot.setDirty();\n      }\n    }\n    switch (scene.fullLayout.dragmode) {\n      case 'zoom':\n        if (buttons) {\n          var dataX = x / (viewBox[2] - viewBox[0]) * (dataBox[2] - dataBox[0]) + dataBox[0];\n          var dataY = y / (viewBox[3] - viewBox[1]) * (dataBox[3] - dataBox[1]) + dataBox[1];\n          if (!result.boxInited) {\n            result.boxStart[0] = dataX;\n            result.boxStart[1] = dataY;\n            result.dragStart[0] = x;\n            result.dragStart[1] = y;\n          }\n          result.boxEnd[0] = dataX;\n          result.boxEnd[1] = dataY;\n\n          // we need to mark the box as initialized right away\n          // so that we can tell the start and end points apart\n          result.boxInited = true;\n\n          // but don't actually enable the box until the cursor moves\n          if (!result.boxEnabled && (result.boxStart[0] !== result.boxEnd[0] || result.boxStart[1] !== result.boxEnd[1])) {\n            result.boxEnabled = true;\n          }\n\n          // constrain aspect ratio if the axes require it\n          var smallDx = Math.abs(result.dragStart[0] - x) < MINZOOM;\n          var smallDy = Math.abs(result.dragStart[1] - y) < MINZOOM;\n          if (getSubplotConstraint() && !(smallDx && smallDy)) {\n            dx = result.boxEnd[0] - result.boxStart[0];\n            dy = result.boxEnd[1] - result.boxStart[1];\n            var dydx = (dataBox[3] - dataBox[1]) / (dataBox[2] - dataBox[0]);\n            if (Math.abs(dx * dydx) > Math.abs(dy)) {\n              result.boxEnd[1] = result.boxStart[1] + Math.abs(dx) * dydx * (dy >= 0 ? 1 : -1);\n\n              // gl-select-box clips to the plot area bounds,\n              // which breaks the axis constraint, so don't allow\n              // this box to go out of bounds\n              if (result.boxEnd[1] < dataBox[1]) {\n                result.boxEnd[1] = dataBox[1];\n                result.boxEnd[0] = result.boxStart[0] + (dataBox[1] - result.boxStart[1]) / Math.abs(dydx);\n              } else if (result.boxEnd[1] > dataBox[3]) {\n                result.boxEnd[1] = dataBox[3];\n                result.boxEnd[0] = result.boxStart[0] + (dataBox[3] - result.boxStart[1]) / Math.abs(dydx);\n              }\n            } else {\n              result.boxEnd[0] = result.boxStart[0] + Math.abs(dy) / dydx * (dx >= 0 ? 1 : -1);\n              if (result.boxEnd[0] < dataBox[0]) {\n                result.boxEnd[0] = dataBox[0];\n                result.boxEnd[1] = result.boxStart[1] + (dataBox[0] - result.boxStart[0]) * Math.abs(dydx);\n              } else if (result.boxEnd[0] > dataBox[2]) {\n                result.boxEnd[0] = dataBox[2];\n                result.boxEnd[1] = result.boxStart[1] + (dataBox[2] - result.boxStart[0]) * Math.abs(dydx);\n              }\n            }\n          } else {\n            // otherwise clamp small changes to the origin so we get 1D zoom\n\n            if (smallDx) result.boxEnd[0] = result.boxStart[0];\n            if (smallDy) result.boxEnd[1] = result.boxStart[1];\n          }\n        } else if (result.boxEnabled) {\n          dx = result.boxStart[0] !== result.boxEnd[0];\n          dy = result.boxStart[1] !== result.boxEnd[1];\n          if (dx || dy) {\n            if (dx) {\n              updateRange(0, result.boxStart[0], result.boxEnd[0]);\n              scene.xaxis.autorange = false;\n            }\n            if (dy) {\n              updateRange(1, result.boxStart[1], result.boxEnd[1]);\n              scene.yaxis.autorange = false;\n            }\n            scene.relayoutCallback();\n          } else {\n            scene.glplot.setDirty();\n          }\n          result.boxEnabled = false;\n          result.boxInited = false;\n        } else if (result.boxInited) {\n          // if box was inited but button released then - reset the box\n\n          result.boxInited = false;\n        }\n        break;\n      case 'pan':\n        result.boxEnabled = false;\n        result.boxInited = false;\n        if (buttons) {\n          if (!result.panning) {\n            result.dragStart[0] = x;\n            result.dragStart[1] = y;\n          }\n          if (Math.abs(result.dragStart[0] - x) < MINDRAG) x = result.dragStart[0];\n          if (Math.abs(result.dragStart[1] - y) < MINDRAG) y = result.dragStart[1];\n          dx = (lastX - x) * (dataBox[2] - dataBox[0]) / (plot.viewBox[2] - plot.viewBox[0]);\n          dy = (lastY - y) * (dataBox[3] - dataBox[1]) / (plot.viewBox[3] - plot.viewBox[1]);\n          dataBox[0] += dx;\n          dataBox[2] += dx;\n          dataBox[1] += dy;\n          dataBox[3] += dy;\n          scene.setRanges(dataBox);\n          result.panning = true;\n          result.lastInputTime = Date.now();\n          unSetAutoRange();\n          scene.cameraChanged();\n          scene.handleAnnotations();\n        } else if (result.panning) {\n          result.panning = false;\n          scene.relayoutCallback();\n        }\n        break;\n    }\n    result.lastPos[0] = x;\n    result.lastPos[1] = y;\n  }\n  result.wheelListener = mouseWheel(element, function (dx, dy) {\n    if (!scene.scrollZoom) return false;\n    var dataBox = scene.calcDataBox();\n    var viewBox = plot.viewBox;\n    var lastX = result.lastPos[0];\n    var lastY = result.lastPos[1];\n    var scale = Math.exp(5.0 * dy / (viewBox[3] - viewBox[1]));\n    var cx = lastX / (viewBox[2] - viewBox[0]) * (dataBox[2] - dataBox[0]) + dataBox[0];\n    var cy = lastY / (viewBox[3] - viewBox[1]) * (dataBox[3] - dataBox[1]) + dataBox[1];\n    dataBox[0] = (dataBox[0] - cx) * scale + cx;\n    dataBox[2] = (dataBox[2] - cx) * scale + cx;\n    dataBox[1] = (dataBox[1] - cy) * scale + cy;\n    dataBox[3] = (dataBox[3] - cy) * scale + cy;\n    scene.setRanges(dataBox);\n    result.lastInputTime = Date.now();\n    unSetAutoRange();\n    scene.cameraChanged();\n    scene.handleAnnotations();\n    scene.relayoutCallback();\n    return true;\n  }, true);\n  return result;\n}\n\n/***/ }),\n\n/***/ 82961:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1662054__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_1662054__(89298);\nvar str2RGBArray = __nested_webpack_require_1662054__(78614);\nfunction Axes2DOptions(scene) {\n  this.scene = scene;\n  this.gl = scene.gl;\n  this.pixelRatio = scene.pixelRatio;\n  this.screenBox = [0, 0, 1, 1];\n  this.viewBox = [0, 0, 1, 1];\n  this.dataBox = [-1, -1, 1, 1];\n  this.borderLineEnable = [false, false, false, false];\n  this.borderLineWidth = [1, 1, 1, 1];\n  this.borderLineColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]];\n  this.ticks = [[], []];\n  this.tickEnable = [true, true, false, false];\n  this.tickPad = [15, 15, 15, 15];\n  this.tickAngle = [0, 0, 0, 0];\n  this.tickColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]];\n  this.tickMarkLength = [0, 0, 0, 0];\n  this.tickMarkWidth = [0, 0, 0, 0];\n  this.tickMarkColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]];\n  this.labels = ['x', 'y'];\n  this.labelEnable = [true, true, false, false];\n  this.labelAngle = [0, Math.PI / 2, 0, 3.0 * Math.PI / 2];\n  this.labelPad = [15, 15, 15, 15];\n  this.labelSize = [12, 12];\n  this.labelFont = ['sans-serif', 'sans-serif'];\n  this.labelColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]];\n  this.title = '';\n  this.titleEnable = true;\n  this.titleCenter = [0, 0, 0, 0];\n  this.titleAngle = 0;\n  this.titleColor = [0, 0, 0, 1];\n  this.titleFont = 'sans-serif';\n  this.titleSize = 18;\n  this.gridLineEnable = [true, true];\n  this.gridLineColor = [[0, 0, 0, 0.5], [0, 0, 0, 0.5]];\n  this.gridLineWidth = [1, 1];\n  this.zeroLineEnable = [true, true];\n  this.zeroLineWidth = [1, 1];\n  this.zeroLineColor = [[0, 0, 0, 1], [0, 0, 0, 1]];\n  this.borderColor = [0, 0, 0, 0];\n  this.backgroundColor = [0, 0, 0, 0];\n  this.static = this.scene.staticPlot;\n}\nvar proto = Axes2DOptions.prototype;\nvar AXES = ['xaxis', 'yaxis'];\nproto.merge = function (options) {\n  // titles are rendered in SVG\n  this.titleEnable = false;\n  this.backgroundColor = str2RGBArray(options.plot_bgcolor);\n  var axisName, ax, axTitle, axMirror;\n  var hasAxisInDfltPos, hasAxisInAltrPos, hasSharedAxis, mirrorLines, mirrorTicks;\n  var i, j;\n  for (i = 0; i < 2; ++i) {\n    axisName = AXES[i];\n    var axisLetter = axisName.charAt(0);\n\n    // get options relevant to this subplot,\n    // '_name' is e.g. xaxis, xaxis2, yaxis, yaxis4 ...\n    ax = options[this.scene[axisName]._name];\n    axTitle = ax.title.text === this.scene.fullLayout._dfltTitle[axisLetter] ? '' : ax.title.text;\n    for (j = 0; j <= 2; j += 2) {\n      this.labelEnable[i + j] = false;\n      this.labels[i + j] = axTitle;\n      this.labelColor[i + j] = str2RGBArray(ax.title.font.color);\n      this.labelFont[i + j] = ax.title.font.family;\n      this.labelSize[i + j] = ax.title.font.size;\n      this.labelPad[i + j] = this.getLabelPad(axisName, ax);\n      this.tickEnable[i + j] = false;\n      this.tickColor[i + j] = str2RGBArray((ax.tickfont || {}).color);\n      this.tickAngle[i + j] = ax.tickangle === 'auto' ? 0 : Math.PI * -ax.tickangle / 180;\n      this.tickPad[i + j] = this.getTickPad(ax);\n      this.tickMarkLength[i + j] = 0;\n      this.tickMarkWidth[i + j] = ax.tickwidth || 0;\n      this.tickMarkColor[i + j] = str2RGBArray(ax.tickcolor);\n      this.borderLineEnable[i + j] = false;\n      this.borderLineColor[i + j] = str2RGBArray(ax.linecolor);\n      this.borderLineWidth[i + j] = ax.linewidth || 0;\n    }\n    hasSharedAxis = this.hasSharedAxis(ax);\n    hasAxisInDfltPos = this.hasAxisInDfltPos(axisName, ax) && !hasSharedAxis;\n    hasAxisInAltrPos = this.hasAxisInAltrPos(axisName, ax) && !hasSharedAxis;\n    axMirror = ax.mirror || false;\n    mirrorLines = hasSharedAxis ? String(axMirror).indexOf('all') !== -1 :\n    // 'all' or 'allticks'\n    !!axMirror; // all but false\n    mirrorTicks = hasSharedAxis ? axMirror === 'allticks' : String(axMirror).indexOf('ticks') !== -1; // 'ticks' or 'allticks'\n\n    // Axis titles and tick labels can only appear of one side of the scene\n    //  and are never show on subplots that share existing axes.\n\n    if (hasAxisInDfltPos) this.labelEnable[i] = true;else if (hasAxisInAltrPos) this.labelEnable[i + 2] = true;\n    if (hasAxisInDfltPos) this.tickEnable[i] = ax.showticklabels;else if (hasAxisInAltrPos) this.tickEnable[i + 2] = ax.showticklabels;\n\n    // Grid lines and ticks can appear on both sides of the scene\n    //  and can appear on subplot that share existing axes via `ax.mirror`.\n\n    if (hasAxisInDfltPos || mirrorLines) this.borderLineEnable[i] = ax.showline;\n    if (hasAxisInAltrPos || mirrorLines) this.borderLineEnable[i + 2] = ax.showline;\n    if (hasAxisInDfltPos || mirrorTicks) this.tickMarkLength[i] = this.getTickMarkLength(ax);\n    if (hasAxisInAltrPos || mirrorTicks) this.tickMarkLength[i + 2] = this.getTickMarkLength(ax);\n    this.gridLineEnable[i] = ax.showgrid;\n    this.gridLineColor[i] = str2RGBArray(ax.gridcolor);\n    this.gridLineWidth[i] = ax.gridwidth;\n    this.zeroLineEnable[i] = ax.zeroline;\n    this.zeroLineColor[i] = str2RGBArray(ax.zerolinecolor);\n    this.zeroLineWidth[i] = ax.zerolinewidth;\n  }\n};\n\n// is an axis shared with an already-drawn subplot ?\nproto.hasSharedAxis = function (ax) {\n  var scene = this.scene;\n  var subplotIds = scene.fullLayout._subplots.gl2d;\n  var list = Axes.findSubplotsWithAxis(subplotIds, ax);\n\n  // if index === 0, then the subplot is already drawn as subplots\n  // are drawn in order.\n  return list.indexOf(scene.id) !== 0;\n};\n\n// has an axis in default position (i.e. bottom/left) ?\nproto.hasAxisInDfltPos = function (axisName, ax) {\n  var axSide = ax.side;\n  if (axisName === 'xaxis') return axSide === 'bottom';else if (axisName === 'yaxis') return axSide === 'left';\n};\n\n// has an axis in alternate position (i.e. top/right) ?\nproto.hasAxisInAltrPos = function (axisName, ax) {\n  var axSide = ax.side;\n  if (axisName === 'xaxis') return axSide === 'top';else if (axisName === 'yaxis') return axSide === 'right';\n};\nproto.getLabelPad = function (axisName, ax) {\n  var offsetBase = 1.5;\n  var fontSize = ax.title.font.size;\n  var showticklabels = ax.showticklabels;\n  if (axisName === 'xaxis') {\n    return ax.side === 'top' ? -10 + fontSize * (offsetBase + (showticklabels ? 1 : 0)) : -10 + fontSize * (offsetBase + (showticklabels ? 0.5 : 0));\n  } else if (axisName === 'yaxis') {\n    return ax.side === 'right' ? 10 + fontSize * (offsetBase + (showticklabels ? 1 : 0.5)) : 10 + fontSize * (offsetBase + (showticklabels ? 0.5 : 0));\n  }\n};\nproto.getTickPad = function (ax) {\n  return ax.ticks === 'outside' ? 10 + ax.ticklen : 15;\n};\nproto.getTickMarkLength = function (ax) {\n  if (!ax.ticks) return 0;\n  var ticklen = ax.ticklen;\n  return ax.ticks === 'inside' ? -ticklen : ticklen;\n};\nfunction createAxes2D(scene) {\n  return new Axes2DOptions(scene);\n}\nmodule.exports = createAxes2D;\n\n/***/ }),\n\n/***/ 4796:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_1668919__) {\n\n\"use strict\";\n\n\nvar overrideAll = (__nested_webpack_require_1668919__(30962).overrideAll);\nvar Scene2D = __nested_webpack_require_1668919__(92918);\nvar layoutGlobalAttrs = __nested_webpack_require_1668919__(10820);\nvar xmlnsNamespaces = __nested_webpack_require_1668919__(77922);\nvar constants = __nested_webpack_require_1668919__(85555);\nvar Cartesian = __nested_webpack_require_1668919__(93612);\nvar fxAttrs = __nested_webpack_require_1668919__(528);\nvar getSubplotData = (__nested_webpack_require_1668919__(27659)/* .getSubplotData */ .NG);\nexports.name = 'gl2d';\nexports.attr = ['xaxis', 'yaxis'];\nexports.idRoot = ['x', 'y'];\nexports.idRegex = constants.idRegex;\nexports.attrRegex = constants.attrRegex;\nexports.attributes = __nested_webpack_require_1668919__(89502);\nexports.supplyLayoutDefaults = function (layoutIn, layoutOut, fullData) {\n  if (!layoutOut._has('cartesian')) {\n    Cartesian.supplyLayoutDefaults(layoutIn, layoutOut, fullData);\n  }\n};\n\n// gl2d uses svg axis attributes verbatim, but overrides editType\n// this could potentially be just `layoutAttributes` but it would\n// still need special handling somewhere to give it precedence over\n// the svg version when both are in use on one plot\nexports.layoutAttrOverrides = overrideAll(Cartesian.layoutAttributes, 'plot', 'from-root');\n\n// similar overrides for base plot attributes (and those added by components)\nexports.baseLayoutAttrOverrides = overrideAll({\n  plot_bgcolor: layoutGlobalAttrs.plot_bgcolor,\n  hoverlabel: fxAttrs.hoverlabel\n  // dragmode needs calc but only when transitioning TO lasso or select\n  // so for now it's left inside _relayout\n  // dragmode: fxAttrs.dragmode\n}, 'plot', 'nested');\nexports.plot = function plot(gd) {\n  var fullLayout = gd._fullLayout;\n  var fullData = gd._fullData;\n  var subplotIds = fullLayout._subplots.gl2d;\n  for (var i = 0; i < subplotIds.length; i++) {\n    var subplotId = subplotIds[i];\n    var subplotObj = fullLayout._plots[subplotId];\n    var fullSubplotData = getSubplotData(fullData, 'gl2d', subplotId);\n\n    // ref. to corresp. Scene instance\n    var scene = subplotObj._scene2d;\n\n    // If Scene is not instantiated, create one!\n    if (scene === undefined) {\n      scene = new Scene2D({\n        id: subplotId,\n        graphDiv: gd,\n        container: gd.querySelector('.gl-container'),\n        staticPlot: gd._context.staticPlot,\n        plotGlPixelRatio: gd._context.plotGlPixelRatio\n      }, fullLayout);\n\n      // set ref to Scene instance\n      subplotObj._scene2d = scene;\n    }\n    scene.plot(fullSubplotData, gd.calcdata, fullLayout, gd.layout);\n  }\n};\nexports.clean = function (newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  var oldSceneKeys = oldFullLayout._subplots.gl2d || [];\n  for (var i = 0; i < oldSceneKeys.length; i++) {\n    var id = oldSceneKeys[i];\n    var oldSubplot = oldFullLayout._plots[id];\n\n    // old subplot wasn't gl2d; nothing to do\n    if (!oldSubplot._scene2d) continue;\n\n    // if no traces are present, delete gl2d subplot\n    var subplotData = getSubplotData(newFullData, 'gl2d', id);\n    if (subplotData.length === 0) {\n      oldSubplot._scene2d.destroy();\n      delete oldFullLayout._plots[id];\n    }\n  }\n\n  // since we use cartesian interactions, do cartesian clean\n  Cartesian.clean.apply(this, arguments);\n};\nexports.drawFramework = function (gd) {\n  if (!gd._context.staticPlot) {\n    Cartesian.drawFramework(gd);\n  }\n};\nexports.toSVG = function (gd) {\n  var fullLayout = gd._fullLayout;\n  var subplotIds = fullLayout._subplots.gl2d;\n  for (var i = 0; i < subplotIds.length; i++) {\n    var subplot = fullLayout._plots[subplotIds[i]];\n    var scene = subplot._scene2d;\n    var imageData = scene.toImage('png');\n    var image = fullLayout._glimages.append('svg:image');\n    image.attr({\n      xmlns: xmlnsNamespaces.svg,\n      'xlink:href': imageData,\n      x: 0,\n      y: 0,\n      width: '100%',\n      height: '100%',\n      preserveAspectRatio: 'none'\n    });\n    scene.destroy();\n  }\n};\nexports.updateFx = function (gd) {\n  var fullLayout = gd._fullLayout;\n  var subplotIds = fullLayout._subplots.gl2d;\n  for (var i = 0; i < subplotIds.length; i++) {\n    var subplotObj = fullLayout._plots[subplotIds[i]]._scene2d;\n    subplotObj.updateFx(fullLayout.dragmode);\n  }\n};\n\n/***/ }),\n\n/***/ 92918:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1673136__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_1673136__(73972);\nvar Axes = __nested_webpack_require_1673136__(89298);\nvar Fx = __nested_webpack_require_1673136__(30211);\nvar createPlot2D = (__nested_webpack_require_1673136__(9330).gl_plot2d);\nvar createSpikes = (__nested_webpack_require_1673136__(9330).gl_spikes2d);\nvar createSelectBox = (__nested_webpack_require_1673136__(9330).gl_select_box);\nvar getContext = __nested_webpack_require_1673136__(40372);\nvar createOptions = __nested_webpack_require_1673136__(82961);\nvar createCamera = __nested_webpack_require_1673136__(75071);\nvar showNoWebGlMsg = __nested_webpack_require_1673136__(58617);\nvar axisConstraints = __nested_webpack_require_1673136__(99082);\nvar enforceAxisConstraints = axisConstraints.enforce;\nvar cleanAxisConstraints = axisConstraints.clean;\nvar doAutoRange = (__nested_webpack_require_1673136__(71739).doAutoRange);\nvar dragHelpers = __nested_webpack_require_1673136__(64505);\nvar drawMode = dragHelpers.drawMode;\nvar selectMode = dragHelpers.selectMode;\nvar AXES = ['xaxis', 'yaxis'];\nvar STATIC_CANVAS, STATIC_CONTEXT;\nvar SUBPLOT_PATTERN = (__nested_webpack_require_1673136__(85555).SUBPLOT_PATTERN);\nfunction Scene2D(options, fullLayout) {\n  this.container = options.container;\n  this.graphDiv = options.graphDiv;\n  this.pixelRatio = options.plotGlPixelRatio || window.devicePixelRatio;\n  this.id = options.id;\n  this.staticPlot = !!options.staticPlot;\n  this.scrollZoom = this.graphDiv._context._scrollZoom.cartesian;\n  this.fullData = null;\n  this.updateRefs(fullLayout);\n  this.makeFramework();\n  if (this.stopped) return;\n\n  // update options\n  this.glplotOptions = createOptions(this);\n  this.glplotOptions.merge(fullLayout);\n\n  // create the plot\n  this.glplot = createPlot2D(this.glplotOptions);\n\n  // create camera\n  this.camera = createCamera(this);\n\n  // trace set\n  this.traces = {};\n\n  // create axes spikes\n  this.spikes = createSpikes(this.glplot);\n  this.selectBox = createSelectBox(this.glplot, {\n    innerFill: false,\n    outerFill: true\n  });\n\n  // last button state\n  this.lastButtonState = 0;\n\n  // last pick result\n  this.pickResult = null;\n\n  // is the mouse over the plot?\n  // it's OK if this says true when it's not, so long as\n  // when we get a mouseout we set it to false before handling\n  this.isMouseOver = true;\n\n  // flag to stop render loop\n  this.stopped = false;\n\n  // redraw the plot\n  this.redraw = this.draw.bind(this);\n  this.redraw();\n}\nmodule.exports = Scene2D;\nvar proto = Scene2D.prototype;\nproto.makeFramework = function () {\n  // create canvas and gl context\n  if (this.staticPlot) {\n    if (!STATIC_CONTEXT) {\n      STATIC_CANVAS = document.createElement('canvas');\n      STATIC_CONTEXT = getContext({\n        canvas: STATIC_CANVAS,\n        preserveDrawingBuffer: false,\n        premultipliedAlpha: true,\n        antialias: true\n      });\n      if (!STATIC_CONTEXT) {\n        throw new Error('Error creating static canvas/context for image server');\n      }\n    }\n    this.canvas = STATIC_CANVAS;\n    this.gl = STATIC_CONTEXT;\n  } else {\n    var liveCanvas = this.container.querySelector('.gl-canvas-focus');\n    var gl = getContext({\n      canvas: liveCanvas,\n      preserveDrawingBuffer: true,\n      premultipliedAlpha: true\n    });\n    if (!gl) {\n      showNoWebGlMsg(this);\n      this.stopped = true;\n      return;\n    }\n    this.canvas = liveCanvas;\n    this.gl = gl;\n  }\n\n  // position the canvas\n  var canvas = this.canvas;\n  canvas.style.width = '100%';\n  canvas.style.height = '100%';\n  canvas.style.position = 'absolute';\n  canvas.style.top = '0px';\n  canvas.style.left = '0px';\n  canvas.style['pointer-events'] = 'none';\n  this.updateSize(canvas);\n\n  // create SVG container for hover text\n  var svgContainer = this.svgContainer = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n  svgContainer.style.position = 'absolute';\n  svgContainer.style.top = svgContainer.style.left = '0px';\n  svgContainer.style.width = svgContainer.style.height = '100%';\n  svgContainer.style['z-index'] = 20;\n  svgContainer.style['pointer-events'] = 'none';\n\n  // create div to catch the mouse event\n  var mouseContainer = this.mouseContainer = document.createElement('div');\n  mouseContainer.style.position = 'absolute';\n  mouseContainer.style['pointer-events'] = 'auto';\n  this.pickCanvas = this.container.querySelector('.gl-canvas-pick');\n\n  // append canvas, hover svg and mouse div to container\n  var container = this.container;\n  container.appendChild(svgContainer);\n  container.appendChild(mouseContainer);\n  var self = this;\n  mouseContainer.addEventListener('mouseout', function () {\n    self.isMouseOver = false;\n    self.unhover();\n  });\n  mouseContainer.addEventListener('mouseover', function () {\n    self.isMouseOver = true;\n  });\n};\nproto.toImage = function (format) {\n  if (!format) format = 'png';\n  this.stopped = true;\n  if (this.staticPlot) this.container.appendChild(STATIC_CANVAS);\n\n  // update canvas size\n  this.updateSize(this.canvas);\n\n  // grab context and yank out pixels\n  var gl = this.glplot.gl;\n  var w = gl.drawingBufferWidth;\n  var h = gl.drawingBufferHeight;\n\n  // force redraw\n  gl.clearColor(1, 1, 1, 0);\n  gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n  this.glplot.setDirty();\n  this.glplot.draw();\n  gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n  var pixels = new Uint8Array(w * h * 4);\n  gl.readPixels(0, 0, w, h, gl.RGBA, gl.UNSIGNED_BYTE, pixels);\n\n  // flip pixels\n  for (var j = 0, k = h - 1; j < k; ++j, --k) {\n    for (var i = 0; i < w; ++i) {\n      for (var l = 0; l < 4; ++l) {\n        var tmp = pixels[4 * (w * j + i) + l];\n        pixels[4 * (w * j + i) + l] = pixels[4 * (w * k + i) + l];\n        pixels[4 * (w * k + i) + l] = tmp;\n      }\n    }\n  }\n  var canvas = document.createElement('canvas');\n  canvas.width = w;\n  canvas.height = h;\n  var context = canvas.getContext('2d', {\n    willReadFrequently: true\n  });\n  var imageData = context.createImageData(w, h);\n  imageData.data.set(pixels);\n  context.putImageData(imageData, 0, 0);\n  var dataURL;\n  switch (format) {\n    case 'jpeg':\n      dataURL = canvas.toDataURL('image/jpeg');\n      break;\n    case 'webp':\n      dataURL = canvas.toDataURL('image/webp');\n      break;\n    default:\n      dataURL = canvas.toDataURL('image/png');\n  }\n  if (this.staticPlot) this.container.removeChild(STATIC_CANVAS);\n  return dataURL;\n};\nproto.updateSize = function (canvas) {\n  if (!canvas) canvas = this.canvas;\n  var pixelRatio = this.pixelRatio;\n  var fullLayout = this.fullLayout;\n  var width = fullLayout.width;\n  var height = fullLayout.height;\n  var pixelWidth = Math.ceil(pixelRatio * width) | 0;\n  var pixelHeight = Math.ceil(pixelRatio * height) | 0;\n\n  // check for resize\n  if (canvas.width !== pixelWidth || canvas.height !== pixelHeight) {\n    canvas.width = pixelWidth;\n    canvas.height = pixelHeight;\n  }\n  return canvas;\n};\nproto.computeTickMarks = function () {\n  this.xaxis.setScale();\n  this.yaxis.setScale();\n  var nextTicks = [Axes.calcTicks(this.xaxis), Axes.calcTicks(this.yaxis)];\n  for (var j = 0; j < 2; ++j) {\n    for (var i = 0; i < nextTicks[j].length; ++i) {\n      // coercing tick value (may not be a string) to a string\n      nextTicks[j][i].text = nextTicks[j][i].text + '';\n    }\n  }\n  return nextTicks;\n};\nfunction compareTicks(a, b) {\n  for (var i = 0; i < 2; ++i) {\n    var aticks = a[i];\n    var bticks = b[i];\n    if (aticks.length !== bticks.length) return true;\n    for (var j = 0; j < aticks.length; ++j) {\n      if (aticks[j].x !== bticks[j].x) return true;\n    }\n  }\n  return false;\n}\nproto.updateRefs = function (newFullLayout) {\n  this.fullLayout = newFullLayout;\n  var spmatch = this.id.match(SUBPLOT_PATTERN);\n  var xaxisName = 'xaxis' + spmatch[1];\n  var yaxisName = 'yaxis' + spmatch[2];\n  this.xaxis = this.fullLayout[xaxisName];\n  this.yaxis = this.fullLayout[yaxisName];\n};\nproto.relayoutCallback = function () {\n  var graphDiv = this.graphDiv;\n  var xaxis = this.xaxis;\n  var yaxis = this.yaxis;\n  var layout = graphDiv.layout;\n\n  // make a meaningful value to be passed on to possible 'plotly_relayout' subscriber(s)\n  var update = {};\n  var xrange = update[xaxis._name + '.range'] = xaxis.range.slice();\n  var yrange = update[yaxis._name + '.range'] = yaxis.range.slice();\n  update[xaxis._name + '.autorange'] = xaxis.autorange;\n  update[yaxis._name + '.autorange'] = yaxis.autorange;\n  Registry.call('_storeDirectGUIEdit', graphDiv.layout, graphDiv._fullLayout._preGUI, update);\n\n  // update the input layout\n  var xaIn = layout[xaxis._name];\n  xaIn.range = xrange;\n  xaIn.autorange = xaxis.autorange;\n  var yaIn = layout[yaxis._name];\n  yaIn.range = yrange;\n  yaIn.autorange = yaxis.autorange;\n\n  // lastInputTime helps determine which one is the latest input (if async)\n  update.lastInputTime = this.camera.lastInputTime;\n  graphDiv.emit('plotly_relayout', update);\n};\nproto.cameraChanged = function () {\n  var camera = this.camera;\n  this.glplot.setDataBox(this.calcDataBox());\n  var nextTicks = this.computeTickMarks();\n  var curTicks = this.glplotOptions.ticks;\n  if (compareTicks(nextTicks, curTicks)) {\n    this.glplotOptions.ticks = nextTicks;\n    this.glplotOptions.dataBox = camera.dataBox;\n    this.glplot.update(this.glplotOptions);\n    this.handleAnnotations();\n  }\n};\nproto.handleAnnotations = function () {\n  var gd = this.graphDiv;\n  var annotations = this.fullLayout.annotations;\n  for (var i = 0; i < annotations.length; i++) {\n    var ann = annotations[i];\n    if (ann.xref === this.xaxis._id && ann.yref === this.yaxis._id) {\n      Registry.getComponentMethod('annotations', 'drawOne')(gd, i);\n    }\n  }\n};\nproto.destroy = function () {\n  if (!this.glplot) return;\n  var traces = this.traces;\n  if (traces) {\n    Object.keys(traces).map(function (key) {\n      traces[key].dispose();\n      delete traces[key];\n    });\n  }\n  this.glplot.dispose();\n  this.container.removeChild(this.svgContainer);\n  this.container.removeChild(this.mouseContainer);\n  this.fullData = null;\n  this.glplot = null;\n  this.stopped = true;\n  this.camera.mouseListener.enabled = false;\n  this.mouseContainer.removeEventListener('wheel', this.camera.wheelListener);\n  this.camera = null;\n};\nproto.plot = function (fullData, calcData, fullLayout) {\n  var glplot = this.glplot;\n  this.updateRefs(fullLayout);\n  this.xaxis.clearCalc();\n  this.yaxis.clearCalc();\n  this.updateTraces(fullData, calcData);\n  this.updateFx(fullLayout.dragmode);\n  var width = fullLayout.width;\n  var height = fullLayout.height;\n  this.updateSize(this.canvas);\n  var options = this.glplotOptions;\n  options.merge(fullLayout);\n  options.screenBox = [0, 0, width, height];\n  var mockGraphDiv = {\n    _fullLayout: {\n      _axisConstraintGroups: fullLayout._axisConstraintGroups,\n      xaxis: this.xaxis,\n      yaxis: this.yaxis,\n      _size: fullLayout._size\n    }\n  };\n  cleanAxisConstraints(mockGraphDiv, this.xaxis);\n  cleanAxisConstraints(mockGraphDiv, this.yaxis);\n  var size = fullLayout._size;\n  var domainX = this.xaxis.domain;\n  var domainY = this.yaxis.domain;\n  options.viewBox = [size.l + domainX[0] * size.w, size.b + domainY[0] * size.h, width - size.r - (1 - domainX[1]) * size.w, height - size.t - (1 - domainY[1]) * size.h];\n  this.mouseContainer.style.width = size.w * (domainX[1] - domainX[0]) + 'px';\n  this.mouseContainer.style.height = size.h * (domainY[1] - domainY[0]) + 'px';\n  this.mouseContainer.height = size.h * (domainY[1] - domainY[0]);\n  this.mouseContainer.style.left = size.l + domainX[0] * size.w + 'px';\n  this.mouseContainer.style.top = size.t + (1 - domainY[1]) * size.h + 'px';\n  var ax, i;\n  for (i = 0; i < 2; ++i) {\n    ax = this[AXES[i]];\n    ax._length = options.viewBox[i + 2] - options.viewBox[i];\n    doAutoRange(this.graphDiv, ax);\n    ax.setScale();\n  }\n  enforceAxisConstraints(mockGraphDiv);\n  options.ticks = this.computeTickMarks();\n  options.dataBox = this.calcDataBox();\n  options.merge(fullLayout);\n  glplot.update(options);\n\n  // force redraw so that promise is returned when rendering is completed\n  this.glplot.draw();\n};\nproto.calcDataBox = function () {\n  var xaxis = this.xaxis;\n  var yaxis = this.yaxis;\n  var xrange = xaxis.range;\n  var yrange = yaxis.range;\n  var xr2l = xaxis.r2l;\n  var yr2l = yaxis.r2l;\n  return [xr2l(xrange[0]), yr2l(yrange[0]), xr2l(xrange[1]), yr2l(yrange[1])];\n};\nproto.setRanges = function (dataBox) {\n  var xaxis = this.xaxis;\n  var yaxis = this.yaxis;\n  var xl2r = xaxis.l2r;\n  var yl2r = yaxis.l2r;\n  xaxis.range = [xl2r(dataBox[0]), xl2r(dataBox[2])];\n  yaxis.range = [yl2r(dataBox[1]), yl2r(dataBox[3])];\n};\nproto.updateTraces = function (fullData, calcData) {\n  var traceIds = Object.keys(this.traces);\n  var i, j, fullTrace;\n  this.fullData = fullData;\n\n  // remove empty traces\n  traceIdLoop: for (i = 0; i < traceIds.length; i++) {\n    var oldUid = traceIds[i];\n    var oldTrace = this.traces[oldUid];\n    for (j = 0; j < fullData.length; j++) {\n      fullTrace = fullData[j];\n      if (fullTrace.uid === oldUid && fullTrace.type === oldTrace.type) {\n        continue traceIdLoop;\n      }\n    }\n    oldTrace.dispose();\n    delete this.traces[oldUid];\n  }\n\n  // update / create trace objects\n  for (i = 0; i < fullData.length; i++) {\n    fullTrace = fullData[i];\n    var calcTrace = calcData[i];\n    var traceObj = this.traces[fullTrace.uid];\n    if (traceObj) traceObj.update(fullTrace, calcTrace);else {\n      traceObj = fullTrace._module.plot(this, fullTrace, calcTrace);\n      this.traces[fullTrace.uid] = traceObj;\n    }\n  }\n\n  // order object per traces\n  this.glplot.objects.sort(function (a, b) {\n    return a._trace.index - b._trace.index;\n  });\n};\nproto.updateFx = function (dragmode) {\n  // switch to svg interactions in lasso/select mode & shape drawing\n  if (selectMode(dragmode) || drawMode(dragmode)) {\n    this.pickCanvas.style['pointer-events'] = 'none';\n    this.mouseContainer.style['pointer-events'] = 'none';\n  } else {\n    this.pickCanvas.style['pointer-events'] = 'auto';\n    this.mouseContainer.style['pointer-events'] = 'auto';\n  }\n\n  // set proper cursor\n  if (dragmode === 'pan') {\n    this.mouseContainer.style.cursor = 'move';\n  } else if (dragmode === 'zoom') {\n    this.mouseContainer.style.cursor = 'crosshair';\n  } else {\n    this.mouseContainer.style.cursor = null;\n  }\n};\nproto.emitPointAction = function (nextSelection, eventType) {\n  var uid = nextSelection.trace.uid;\n  var ptNumber = nextSelection.pointIndex;\n  var trace;\n  for (var i = 0; i < this.fullData.length; i++) {\n    if (this.fullData[i].uid === uid) {\n      trace = this.fullData[i];\n    }\n  }\n  var pointData = {\n    x: nextSelection.traceCoord[0],\n    y: nextSelection.traceCoord[1],\n    curveNumber: trace.index,\n    pointNumber: ptNumber,\n    data: trace._input,\n    fullData: this.fullData,\n    xaxis: this.xaxis,\n    yaxis: this.yaxis\n  };\n  Fx.appendArrayPointValue(pointData, trace, ptNumber);\n  this.graphDiv.emit(eventType, {\n    points: [pointData]\n  });\n};\nproto.draw = function () {\n  if (this.stopped) return;\n  requestAnimationFrame(this.redraw);\n  var glplot = this.glplot;\n  var camera = this.camera;\n  var mouseListener = camera.mouseListener;\n  var mouseUp = this.lastButtonState === 1 && mouseListener.buttons === 0;\n  var fullLayout = this.fullLayout;\n  this.lastButtonState = mouseListener.buttons;\n  this.cameraChanged();\n  var x = mouseListener.x * glplot.pixelRatio;\n  var y = this.canvas.height - glplot.pixelRatio * mouseListener.y;\n  var result;\n  if (camera.boxEnabled && fullLayout.dragmode === 'zoom') {\n    this.selectBox.enabled = true;\n    var selectBox = this.selectBox.selectBox = [Math.min(camera.boxStart[0], camera.boxEnd[0]), Math.min(camera.boxStart[1], camera.boxEnd[1]), Math.max(camera.boxStart[0], camera.boxEnd[0]), Math.max(camera.boxStart[1], camera.boxEnd[1])];\n\n    // 1D zoom\n    for (var i = 0; i < 2; i++) {\n      if (camera.boxStart[i] === camera.boxEnd[i]) {\n        selectBox[i] = glplot.dataBox[i];\n        selectBox[i + 2] = glplot.dataBox[i + 2];\n      }\n    }\n    glplot.setDirty();\n  } else if (!camera.panning && this.isMouseOver) {\n    this.selectBox.enabled = false;\n    var size = fullLayout._size;\n    var domainX = this.xaxis.domain;\n    var domainY = this.yaxis.domain;\n    result = glplot.pick(x / glplot.pixelRatio + size.l + domainX[0] * size.w, y / glplot.pixelRatio - (size.t + (1 - domainY[1]) * size.h));\n    var nextSelection = result && result.object._trace.handlePick(result);\n    if (nextSelection && mouseUp) {\n      this.emitPointAction(nextSelection, 'plotly_click');\n    }\n    if (result && result.object._trace.hoverinfo !== 'skip' && fullLayout.hovermode) {\n      if (nextSelection && (!this.lastPickResult || this.lastPickResult.traceUid !== nextSelection.trace.uid || this.lastPickResult.dataCoord[0] !== nextSelection.dataCoord[0] || this.lastPickResult.dataCoord[1] !== nextSelection.dataCoord[1])) {\n        var selection = nextSelection;\n        this.lastPickResult = {\n          traceUid: nextSelection.trace ? nextSelection.trace.uid : null,\n          dataCoord: nextSelection.dataCoord.slice()\n        };\n        this.spikes.update({\n          center: result.dataCoord\n        });\n        selection.screenCoord = [((glplot.viewBox[2] - glplot.viewBox[0]) * (result.dataCoord[0] - glplot.dataBox[0]) / (glplot.dataBox[2] - glplot.dataBox[0]) + glplot.viewBox[0]) / glplot.pixelRatio, (this.canvas.height - (glplot.viewBox[3] - glplot.viewBox[1]) * (result.dataCoord[1] - glplot.dataBox[1]) / (glplot.dataBox[3] - glplot.dataBox[1]) - glplot.viewBox[1]) / glplot.pixelRatio];\n\n        // this needs to happen before the next block that deletes traceCoord data\n        // also it's important to copy, otherwise data is lost by the time event data is read\n        this.emitPointAction(nextSelection, 'plotly_hover');\n        var trace = this.fullData[selection.trace.index] || {};\n        var ptNumber = selection.pointIndex;\n        var hoverinfo = Fx.castHoverinfo(trace, fullLayout, ptNumber);\n        if (hoverinfo && hoverinfo !== 'all') {\n          var parts = hoverinfo.split('+');\n          if (parts.indexOf('x') === -1) selection.traceCoord[0] = undefined;\n          if (parts.indexOf('y') === -1) selection.traceCoord[1] = undefined;\n          if (parts.indexOf('z') === -1) selection.traceCoord[2] = undefined;\n          if (parts.indexOf('text') === -1) selection.textLabel = undefined;\n          if (parts.indexOf('name') === -1) selection.name = undefined;\n        }\n        Fx.loneHover({\n          x: selection.screenCoord[0],\n          y: selection.screenCoord[1],\n          xLabel: this.hoverFormatter('xaxis', selection.traceCoord[0]),\n          yLabel: this.hoverFormatter('yaxis', selection.traceCoord[1]),\n          zLabel: selection.traceCoord[2],\n          text: selection.textLabel,\n          name: selection.name,\n          color: Fx.castHoverOption(trace, ptNumber, 'bgcolor') || selection.color,\n          borderColor: Fx.castHoverOption(trace, ptNumber, 'bordercolor'),\n          fontFamily: Fx.castHoverOption(trace, ptNumber, 'font.family'),\n          fontSize: Fx.castHoverOption(trace, ptNumber, 'font.size'),\n          fontColor: Fx.castHoverOption(trace, ptNumber, 'font.color'),\n          nameLength: Fx.castHoverOption(trace, ptNumber, 'namelength'),\n          textAlign: Fx.castHoverOption(trace, ptNumber, 'align')\n        }, {\n          container: this.svgContainer,\n          gd: this.graphDiv\n        });\n      }\n    }\n  }\n\n  // Remove hover effects if we're not over a point OR\n  // if we're zooming or panning (in which case result is not set)\n  if (!result) {\n    this.unhover();\n  }\n  glplot.draw();\n};\nproto.unhover = function () {\n  if (this.lastPickResult) {\n    this.spikes.update({});\n    this.lastPickResult = null;\n    this.graphDiv.emit('plotly_unhover');\n    Fx.loneUnhover(this.svgContainer);\n  }\n};\nproto.hoverFormatter = function (axisName, val) {\n  if (val === undefined) return undefined;\n  var axis = this[axisName];\n  return Axes.tickText(axis, axis.c2l(val), 'hover').text;\n};\n\n/***/ }),\n\n/***/ 58547:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_1693015__) {\n\n\"use strict\";\n\n\nvar overrideAll = (__nested_webpack_require_1693015__(30962).overrideAll);\nvar fxAttrs = __nested_webpack_require_1693015__(528);\nvar Scene = __nested_webpack_require_1693015__(33539);\nvar getSubplotData = (__nested_webpack_require_1693015__(27659)/* .getSubplotData */ .NG);\nvar Lib = __nested_webpack_require_1693015__(71828);\nvar xmlnsNamespaces = __nested_webpack_require_1693015__(77922);\nvar GL3D = 'gl3d';\nvar SCENE = 'scene';\nexports.name = GL3D;\nexports.attr = SCENE;\nexports.idRoot = SCENE;\nexports.idRegex = exports.attrRegex = Lib.counterRegex('scene');\nexports.attributes = __nested_webpack_require_1693015__(59084);\nexports.layoutAttributes = __nested_webpack_require_1693015__(65500);\nexports.baseLayoutAttrOverrides = overrideAll({\n  hoverlabel: fxAttrs.hoverlabel\n}, 'plot', 'nested');\nexports.supplyLayoutDefaults = __nested_webpack_require_1693015__(24682);\nexports.plot = function plot(gd) {\n  var fullLayout = gd._fullLayout;\n  var fullData = gd._fullData;\n  var sceneIds = fullLayout._subplots[GL3D];\n  for (var i = 0; i < sceneIds.length; i++) {\n    var sceneId = sceneIds[i];\n    var fullSceneData = getSubplotData(fullData, GL3D, sceneId);\n    var sceneLayout = fullLayout[sceneId];\n    var camera = sceneLayout.camera;\n    var scene = sceneLayout._scene;\n    if (!scene) {\n      scene = new Scene({\n        id: sceneId,\n        graphDiv: gd,\n        container: gd.querySelector('.gl-container'),\n        staticPlot: gd._context.staticPlot,\n        plotGlPixelRatio: gd._context.plotGlPixelRatio,\n        camera: camera\n      }, fullLayout);\n\n      // set ref to Scene instance\n      sceneLayout._scene = scene;\n    }\n\n    // save 'initial' camera view settings for modebar button\n    if (!scene.viewInitial) {\n      scene.viewInitial = {\n        up: {\n          x: camera.up.x,\n          y: camera.up.y,\n          z: camera.up.z\n        },\n        eye: {\n          x: camera.eye.x,\n          y: camera.eye.y,\n          z: camera.eye.z\n        },\n        center: {\n          x: camera.center.x,\n          y: camera.center.y,\n          z: camera.center.z\n        }\n      };\n    }\n    scene.plot(fullSceneData, fullLayout, gd.layout);\n  }\n};\nexports.clean = function (newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  var oldSceneKeys = oldFullLayout._subplots[GL3D] || [];\n  for (var i = 0; i < oldSceneKeys.length; i++) {\n    var oldSceneKey = oldSceneKeys[i];\n    if (!newFullLayout[oldSceneKey] && !!oldFullLayout[oldSceneKey]._scene) {\n      oldFullLayout[oldSceneKey]._scene.destroy();\n      if (oldFullLayout._infolayer) {\n        oldFullLayout._infolayer.selectAll('.annotation-' + oldSceneKey).remove();\n      }\n    }\n  }\n};\nexports.toSVG = function (gd) {\n  var fullLayout = gd._fullLayout;\n  var sceneIds = fullLayout._subplots[GL3D];\n  var size = fullLayout._size;\n  for (var i = 0; i < sceneIds.length; i++) {\n    var sceneLayout = fullLayout[sceneIds[i]];\n    var domain = sceneLayout.domain;\n    var scene = sceneLayout._scene;\n    var imageData = scene.toImage('png');\n    var image = fullLayout._glimages.append('svg:image');\n    image.attr({\n      xmlns: xmlnsNamespaces.svg,\n      'xlink:href': imageData,\n      x: size.l + size.w * domain.x[0],\n      y: size.t + size.h * (1 - domain.y[1]),\n      width: size.w * (domain.x[1] - domain.x[0]),\n      height: size.h * (domain.y[1] - domain.y[0]),\n      preserveAspectRatio: 'none'\n    });\n    scene.destroy();\n  }\n};\n\n// clean scene ids, 'scene1' -> 'scene'\nexports.cleanId = function cleanId(id) {\n  if (!id.match(/^scene[0-9]*$/)) return;\n  var sceneNum = id.substr(5);\n  if (sceneNum === '1') sceneNum = '';\n  return SCENE + sceneNum;\n};\nexports.updateFx = function (gd) {\n  var fullLayout = gd._fullLayout;\n  var subplotIds = fullLayout._subplots[GL3D];\n  for (var i = 0; i < subplotIds.length; i++) {\n    var subplotObj = fullLayout[subplotIds[i]]._scene;\n    subplotObj.updateFx(fullLayout.dragmode, fullLayout.hovermode);\n  }\n};\n\n/***/ }),\n\n/***/ 59084:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  scene: {\n    valType: 'subplotid',\n    dflt: 'scene',\n    editType: 'calc+clearAxisTypes'\n  }\n};\n\n/***/ }),\n\n/***/ 77894:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1697117__) {\n\n\"use strict\";\n\n\nvar Color = __nested_webpack_require_1697117__(7901);\nvar axesAttrs = __nested_webpack_require_1697117__(13838);\nvar extendFlat = (__nested_webpack_require_1697117__(1426).extendFlat);\nvar overrideAll = (__nested_webpack_require_1697117__(30962).overrideAll);\nmodule.exports = overrideAll({\n  visible: axesAttrs.visible,\n  showspikes: {\n    valType: 'boolean',\n    dflt: true\n  },\n  spikesides: {\n    valType: 'boolean',\n    dflt: true\n  },\n  spikethickness: {\n    valType: 'number',\n    min: 0,\n    dflt: 2\n  },\n  spikecolor: {\n    valType: 'color',\n    dflt: Color.defaultLine\n  },\n  showbackground: {\n    valType: 'boolean',\n    dflt: false\n  },\n  backgroundcolor: {\n    valType: 'color',\n    dflt: 'rgba(204, 204, 204, 0.5)'\n  },\n  showaxeslabels: {\n    valType: 'boolean',\n    dflt: true\n  },\n  color: axesAttrs.color,\n  categoryorder: axesAttrs.categoryorder,\n  categoryarray: axesAttrs.categoryarray,\n  title: {\n    text: axesAttrs.title.text,\n    font: axesAttrs.title.font\n  },\n  type: extendFlat({}, axesAttrs.type, {\n    values: ['-', 'linear', 'log', 'date', 'category']\n  }),\n  autotypenumbers: axesAttrs.autotypenumbers,\n  autorange: axesAttrs.autorange,\n  rangemode: axesAttrs.rangemode,\n  range: extendFlat({}, axesAttrs.range, {\n    items: [{\n      valType: 'any',\n      editType: 'plot',\n      impliedEdits: {\n        '^autorange': false\n      }\n    }, {\n      valType: 'any',\n      editType: 'plot',\n      impliedEdits: {\n        '^autorange': false\n      }\n    }],\n    anim: false\n  }),\n  // ticks\n  tickmode: axesAttrs.minor.tickmode,\n  nticks: axesAttrs.nticks,\n  tick0: axesAttrs.tick0,\n  dtick: axesAttrs.dtick,\n  tickvals: axesAttrs.tickvals,\n  ticktext: axesAttrs.ticktext,\n  ticks: axesAttrs.ticks,\n  mirror: axesAttrs.mirror,\n  ticklen: axesAttrs.ticklen,\n  tickwidth: axesAttrs.tickwidth,\n  tickcolor: axesAttrs.tickcolor,\n  showticklabels: axesAttrs.showticklabels,\n  tickfont: axesAttrs.tickfont,\n  tickangle: axesAttrs.tickangle,\n  tickprefix: axesAttrs.tickprefix,\n  showtickprefix: axesAttrs.showtickprefix,\n  ticksuffix: axesAttrs.ticksuffix,\n  showticksuffix: axesAttrs.showticksuffix,\n  showexponent: axesAttrs.showexponent,\n  exponentformat: axesAttrs.exponentformat,\n  minexponent: axesAttrs.minexponent,\n  separatethousands: axesAttrs.separatethousands,\n  tickformat: axesAttrs.tickformat,\n  tickformatstops: axesAttrs.tickformatstops,\n  hoverformat: axesAttrs.hoverformat,\n  // lines and grids\n  showline: axesAttrs.showline,\n  linecolor: axesAttrs.linecolor,\n  linewidth: axesAttrs.linewidth,\n  showgrid: axesAttrs.showgrid,\n  gridcolor: extendFlat({}, axesAttrs.gridcolor,\n  // shouldn't this be on-par with 2D?\n  {\n    dflt: 'rgb(204, 204, 204)'\n  }),\n  gridwidth: axesAttrs.gridwidth,\n  zeroline: axesAttrs.zeroline,\n  zerolinecolor: axesAttrs.zerolinecolor,\n  zerolinewidth: axesAttrs.zerolinewidth,\n  _deprecated: {\n    title: axesAttrs._deprecated.title,\n    titlefont: axesAttrs._deprecated.titlefont\n  }\n}, 'plot', 'from-root');\n\n/***/ }),\n\n/***/ 3277:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1700150__) {\n\n\"use strict\";\n\n\nvar colorMix = (__nested_webpack_require_1700150__(84267).mix);\nvar Lib = __nested_webpack_require_1700150__(71828);\nvar Template = __nested_webpack_require_1700150__(44467);\nvar layoutAttributes = __nested_webpack_require_1700150__(77894);\nvar handleTypeDefaults = __nested_webpack_require_1700150__(951);\nvar handleAxisDefaults = __nested_webpack_require_1700150__(71453);\nvar axesNames = ['xaxis', 'yaxis', 'zaxis'];\n\n// TODO: hard-coded lightness fraction based on gridline default colors\n// that differ from other subplot types.\nvar gridLightness = 100 * (204 - 0x44) / (255 - 0x44);\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut, options) {\n  var containerIn, containerOut;\n  function coerce(attr, dflt) {\n    return Lib.coerce(containerIn, containerOut, layoutAttributes, attr, dflt);\n  }\n  for (var j = 0; j < axesNames.length; j++) {\n    var axName = axesNames[j];\n    containerIn = layoutIn[axName] || {};\n    containerOut = Template.newContainer(layoutOut, axName);\n    containerOut._id = axName[0] + options.scene;\n    containerOut._name = axName;\n    handleTypeDefaults(containerIn, containerOut, coerce, options);\n    handleAxisDefaults(containerIn, containerOut, coerce, {\n      font: options.font,\n      letter: axName[0],\n      data: options.data,\n      showGrid: true,\n      noTickson: true,\n      noTicklabelmode: true,\n      noTicklabelstep: true,\n      noTicklabelposition: true,\n      noTicklabeloverflow: true,\n      bgColor: options.bgColor,\n      calendar: options.calendar\n    }, options.fullLayout);\n    coerce('gridcolor', colorMix(containerOut.color, options.bgColor, gridLightness).toRgbString());\n    coerce('title.text', axName[0]); // shouldn't this be on-par with 2D?\n\n    containerOut.setScale = Lib.noop;\n    if (coerce('showspikes')) {\n      coerce('spikesides');\n      coerce('spikethickness');\n      coerce('spikecolor', containerOut.color);\n    }\n    coerce('showaxeslabels');\n    if (coerce('showbackground')) coerce('backgroundcolor');\n  }\n};\n\n/***/ }),\n\n/***/ 30422:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1702181__) {\n\n\"use strict\";\n\n\nvar str2RgbaArray = __nested_webpack_require_1702181__(78614);\nvar Lib = __nested_webpack_require_1702181__(71828);\nvar AXES_NAMES = ['xaxis', 'yaxis', 'zaxis'];\nfunction AxesOptions() {\n  this.bounds = [[-10, -10, -10], [10, 10, 10]];\n  this.ticks = [[], [], []];\n  this.tickEnable = [true, true, true];\n  this.tickFont = ['sans-serif', 'sans-serif', 'sans-serif'];\n  this.tickSize = [12, 12, 12];\n  this.tickAngle = [0, 0, 0];\n  this.tickColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]];\n  this.tickPad = [18, 18, 18];\n  this.labels = ['x', 'y', 'z'];\n  this.labelEnable = [true, true, true];\n  this.labelFont = ['Open Sans', 'Open Sans', 'Open Sans'];\n  this.labelSize = [20, 20, 20];\n  this.labelColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]];\n  this.labelPad = [30, 30, 30];\n  this.lineEnable = [true, true, true];\n  this.lineMirror = [false, false, false];\n  this.lineWidth = [1, 1, 1];\n  this.lineColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]];\n  this.lineTickEnable = [true, true, true];\n  this.lineTickMirror = [false, false, false];\n  this.lineTickLength = [10, 10, 10];\n  this.lineTickWidth = [1, 1, 1];\n  this.lineTickColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]];\n  this.gridEnable = [true, true, true];\n  this.gridWidth = [1, 1, 1];\n  this.gridColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]];\n  this.zeroEnable = [true, true, true];\n  this.zeroLineColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]];\n  this.zeroLineWidth = [2, 2, 2];\n  this.backgroundEnable = [true, true, true];\n  this.backgroundColor = [[0.8, 0.8, 0.8, 0.5], [0.8, 0.8, 0.8, 0.5], [0.8, 0.8, 0.8, 0.5]];\n\n  // some default values are stored for applying model transforms\n  this._defaultTickPad = this.tickPad.slice();\n  this._defaultLabelPad = this.labelPad.slice();\n  this._defaultLineTickLength = this.lineTickLength.slice();\n}\nvar proto = AxesOptions.prototype;\nproto.merge = function (fullLayout, sceneLayout) {\n  var opts = this;\n  for (var i = 0; i < 3; ++i) {\n    var axes = sceneLayout[AXES_NAMES[i]];\n    if (!axes.visible) {\n      opts.tickEnable[i] = false;\n      opts.labelEnable[i] = false;\n      opts.lineEnable[i] = false;\n      opts.lineTickEnable[i] = false;\n      opts.gridEnable[i] = false;\n      opts.zeroEnable[i] = false;\n      opts.backgroundEnable[i] = false;\n      continue;\n    }\n\n    // Axes labels\n    opts.labels[i] = fullLayout._meta ? Lib.templateString(axes.title.text, fullLayout._meta) : axes.title.text;\n    if ('font' in axes.title) {\n      if (axes.title.font.color) opts.labelColor[i] = str2RgbaArray(axes.title.font.color);\n      if (axes.title.font.family) opts.labelFont[i] = axes.title.font.family;\n      if (axes.title.font.size) opts.labelSize[i] = axes.title.font.size;\n    }\n\n    // Lines\n    if ('showline' in axes) opts.lineEnable[i] = axes.showline;\n    if ('linecolor' in axes) opts.lineColor[i] = str2RgbaArray(axes.linecolor);\n    if ('linewidth' in axes) opts.lineWidth[i] = axes.linewidth;\n    if ('showgrid' in axes) opts.gridEnable[i] = axes.showgrid;\n    if ('gridcolor' in axes) opts.gridColor[i] = str2RgbaArray(axes.gridcolor);\n    if ('gridwidth' in axes) opts.gridWidth[i] = axes.gridwidth;\n\n    // Remove zeroline if axis type is log\n    // otherwise the zeroline is incorrectly drawn at 1 on log axes\n    if (axes.type === 'log') opts.zeroEnable[i] = false;else if ('zeroline' in axes) opts.zeroEnable[i] = axes.zeroline;\n    if ('zerolinecolor' in axes) opts.zeroLineColor[i] = str2RgbaArray(axes.zerolinecolor);\n    if ('zerolinewidth' in axes) opts.zeroLineWidth[i] = axes.zerolinewidth;\n\n    // tick lines\n    if ('ticks' in axes && !!axes.ticks) opts.lineTickEnable[i] = true;else opts.lineTickEnable[i] = false;\n    if ('ticklen' in axes) {\n      opts.lineTickLength[i] = opts._defaultLineTickLength[i] = axes.ticklen;\n    }\n    if ('tickcolor' in axes) opts.lineTickColor[i] = str2RgbaArray(axes.tickcolor);\n    if ('tickwidth' in axes) opts.lineTickWidth[i] = axes.tickwidth;\n    if ('tickangle' in axes) {\n      opts.tickAngle[i] = axes.tickangle === 'auto' ? -3600 :\n      // i.e. special number to set auto option\n      Math.PI * -axes.tickangle / 180;\n    }\n\n    // tick labels\n    if ('showticklabels' in axes) opts.tickEnable[i] = axes.showticklabels;\n    if ('tickfont' in axes) {\n      if (axes.tickfont.color) opts.tickColor[i] = str2RgbaArray(axes.tickfont.color);\n      if (axes.tickfont.family) opts.tickFont[i] = axes.tickfont.family;\n      if (axes.tickfont.size) opts.tickSize[i] = axes.tickfont.size;\n    }\n    if ('mirror' in axes) {\n      if (['ticks', 'all', 'allticks'].indexOf(axes.mirror) !== -1) {\n        opts.lineTickMirror[i] = true;\n        opts.lineMirror[i] = true;\n      } else if (axes.mirror === true) {\n        opts.lineTickMirror[i] = false;\n        opts.lineMirror[i] = true;\n      } else {\n        opts.lineTickMirror[i] = false;\n        opts.lineMirror[i] = false;\n      }\n    } else opts.lineMirror[i] = false;\n\n    // grid background\n    if ('showbackground' in axes && axes.showbackground !== false) {\n      opts.backgroundEnable[i] = true;\n      opts.backgroundColor[i] = str2RgbaArray(axes.backgroundcolor);\n    } else opts.backgroundEnable[i] = false;\n  }\n};\nfunction createAxesOptions(fullLayout, sceneLayout) {\n  var result = new AxesOptions();\n  result.merge(fullLayout, sceneLayout);\n  return result;\n}\nmodule.exports = createAxesOptions;\n\n/***/ }),\n\n/***/ 24682:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1707625__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_1707625__(71828);\nvar Color = __nested_webpack_require_1707625__(7901);\nvar Registry = __nested_webpack_require_1707625__(73972);\nvar handleSubplotDefaults = __nested_webpack_require_1707625__(49119);\nvar supplyGl3dAxisLayoutDefaults = __nested_webpack_require_1707625__(3277);\nvar layoutAttributes = __nested_webpack_require_1707625__(65500);\nvar getSubplotData = (__nested_webpack_require_1707625__(27659)/* .getSubplotData */ .NG);\nvar GL3D = 'gl3d';\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {\n  var hasNon3D = layoutOut._basePlotModules.length > 1;\n\n  // some layout-wide attribute are used in all scenes\n  // if 3D is the only visible plot type\n  function getDfltFromLayout(attr) {\n    if (hasNon3D) return;\n    var isValid = Lib.validate(layoutIn[attr], layoutAttributes[attr]);\n    if (isValid) return layoutIn[attr];\n  }\n  handleSubplotDefaults(layoutIn, layoutOut, fullData, {\n    type: GL3D,\n    attributes: layoutAttributes,\n    handleDefaults: handleGl3dDefaults,\n    fullLayout: layoutOut,\n    font: layoutOut.font,\n    fullData: fullData,\n    getDfltFromLayout: getDfltFromLayout,\n    autotypenumbersDflt: layoutOut.autotypenumbers,\n    paper_bgcolor: layoutOut.paper_bgcolor,\n    calendar: layoutOut.calendar\n  });\n};\nfunction handleGl3dDefaults(sceneLayoutIn, sceneLayoutOut, coerce, opts) {\n  /*\n   * Scene numbering proceeds as follows\n   * scene\n   * scene2\n   * scene3\n   *\n   * and d.scene will be undefined or some number or number string\n   *\n   * Also write back a blank scene object to user layout so that some\n   * attributes like aspectratio can be written back dynamically.\n   */\n\n  var bgcolor = coerce('bgcolor');\n  var bgColorCombined = Color.combine(bgcolor, opts.paper_bgcolor);\n  var cameraKeys = ['up', 'center', 'eye'];\n  for (var j = 0; j < cameraKeys.length; j++) {\n    coerce('camera.' + cameraKeys[j] + '.x');\n    coerce('camera.' + cameraKeys[j] + '.y');\n    coerce('camera.' + cameraKeys[j] + '.z');\n  }\n  coerce('camera.projection.type');\n\n  /*\n   * coerce to positive number (min 0) but also do not accept 0 (>0 not >=0)\n   * note that 0's go false with the !! call\n   */\n  var hasAspect = !!coerce('aspectratio.x') && !!coerce('aspectratio.y') && !!coerce('aspectratio.z');\n  var defaultAspectMode = hasAspect ? 'manual' : 'auto';\n  var aspectMode = coerce('aspectmode', defaultAspectMode);\n\n  /*\n   * We need aspectratio object in all the Layouts as it is dynamically set\n   * in the calculation steps, ie, we cant set the correct data now, it happens later.\n   * We must also account for the case the user sends bad ratio data with 'manual' set\n   * for the mode. In this case we must force change it here as the default coerce\n   * misses it above.\n   */\n  if (!hasAspect) {\n    sceneLayoutIn.aspectratio = sceneLayoutOut.aspectratio = {\n      x: 1,\n      y: 1,\n      z: 1\n    };\n    if (aspectMode === 'manual') sceneLayoutOut.aspectmode = 'auto';\n\n    /*\n     * kind of like autorange - we need the calculated aspectmode back in\n     * the input layout or relayout can cause problems later\n     */\n    sceneLayoutIn.aspectmode = sceneLayoutOut.aspectmode;\n  }\n  var fullGl3dData = getSubplotData(opts.fullData, GL3D, opts.id);\n  supplyGl3dAxisLayoutDefaults(sceneLayoutIn, sceneLayoutOut, {\n    font: opts.font,\n    scene: opts.id,\n    data: fullGl3dData,\n    bgColor: bgColorCombined,\n    calendar: opts.calendar,\n    autotypenumbersDflt: opts.autotypenumbersDflt,\n    fullLayout: opts.fullLayout\n  });\n  Registry.getComponentMethod('annotations3d', 'handleDefaults')(sceneLayoutIn, sceneLayoutOut, opts);\n  var dragmode = opts.getDfltFromLayout('dragmode');\n  if (dragmode !== false) {\n    if (!dragmode) {\n      dragmode = 'orbit';\n      if (sceneLayoutIn.camera && sceneLayoutIn.camera.up) {\n        var x = sceneLayoutIn.camera.up.x;\n        var y = sceneLayoutIn.camera.up.y;\n        var z = sceneLayoutIn.camera.up.z;\n        if (z !== 0) {\n          if (!x || !y || !z) {\n            dragmode = 'turntable';\n          } else if (z / Math.sqrt(x * x + y * y + z * z) > 0.999) {\n            dragmode = 'turntable';\n          }\n        }\n      } else {\n        dragmode = 'turntable';\n      }\n    }\n  }\n  coerce('dragmode', dragmode);\n  coerce('hovermode', opts.getDfltFromLayout('hovermode'));\n}\n\n/***/ }),\n\n/***/ 65500:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1711959__) {\n\n\"use strict\";\n\n\nvar gl3dAxisAttrs = __nested_webpack_require_1711959__(77894);\nvar domainAttrs = (__nested_webpack_require_1711959__(27670)/* .attributes */ .Y);\nvar extendFlat = (__nested_webpack_require_1711959__(1426).extendFlat);\nvar counterRegex = (__nested_webpack_require_1711959__(71828).counterRegex);\nfunction makeCameraVector(x, y, z) {\n  return {\n    x: {\n      valType: 'number',\n      dflt: x,\n      editType: 'camera'\n    },\n    y: {\n      valType: 'number',\n      dflt: y,\n      editType: 'camera'\n    },\n    z: {\n      valType: 'number',\n      dflt: z,\n      editType: 'camera'\n    },\n    editType: 'camera'\n  };\n}\nmodule.exports = {\n  _arrayAttrRegexps: [counterRegex('scene', '.annotations', true)],\n  bgcolor: {\n    valType: 'color',\n    dflt: 'rgba(0,0,0,0)',\n    editType: 'plot'\n  },\n  camera: {\n    up: extendFlat(makeCameraVector(0, 0, 1), {}),\n    center: extendFlat(makeCameraVector(0, 0, 0), {}),\n    eye: extendFlat(makeCameraVector(1.25, 1.25, 1.25), {}),\n    projection: {\n      type: {\n        valType: 'enumerated',\n        values: ['perspective', 'orthographic'],\n        dflt: 'perspective',\n        editType: 'calc'\n      },\n      editType: 'calc'\n    },\n    editType: 'camera'\n  },\n  domain: domainAttrs({\n    name: 'scene',\n    editType: 'plot'\n  }),\n  aspectmode: {\n    valType: 'enumerated',\n    values: ['auto', 'cube', 'data', 'manual'],\n    dflt: 'auto',\n    editType: 'plot',\n    impliedEdits: {\n      'aspectratio.x': undefined,\n      'aspectratio.y': undefined,\n      'aspectratio.z': undefined\n    }\n  },\n  aspectratio: {\n    // must be positive (0's are coerced to 1)\n    x: {\n      valType: 'number',\n      min: 0,\n      editType: 'plot',\n      impliedEdits: {\n        '^aspectmode': 'manual'\n      }\n    },\n    y: {\n      valType: 'number',\n      min: 0,\n      editType: 'plot',\n      impliedEdits: {\n        '^aspectmode': 'manual'\n      }\n    },\n    z: {\n      valType: 'number',\n      min: 0,\n      editType: 'plot',\n      impliedEdits: {\n        '^aspectmode': 'manual'\n      }\n    },\n    editType: 'plot',\n    impliedEdits: {\n      aspectmode: 'manual'\n    }\n  },\n  xaxis: gl3dAxisAttrs,\n  yaxis: gl3dAxisAttrs,\n  zaxis: gl3dAxisAttrs,\n  dragmode: {\n    valType: 'enumerated',\n    values: ['orbit', 'turntable', 'zoom', 'pan', false],\n    editType: 'plot'\n  },\n  hovermode: {\n    valType: 'enumerated',\n    values: ['closest', false],\n    dflt: 'closest',\n    editType: 'modebar'\n  },\n  uirevision: {\n    valType: 'any',\n    editType: 'none'\n  },\n  editType: 'plot',\n  _deprecated: {\n    cameraposition: {\n      valType: 'info_array',\n      editType: 'camera'\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 13133:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1714626__) {\n\n\"use strict\";\n\n\nvar str2RGBArray = __nested_webpack_require_1714626__(78614);\nvar AXES_NAMES = ['xaxis', 'yaxis', 'zaxis'];\nfunction SpikeOptions() {\n  this.enabled = [true, true, true];\n  this.colors = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]];\n  this.drawSides = [true, true, true];\n  this.lineWidth = [1, 1, 1];\n}\nvar proto = SpikeOptions.prototype;\nproto.merge = function (sceneLayout) {\n  for (var i = 0; i < 3; ++i) {\n    var axes = sceneLayout[AXES_NAMES[i]];\n    if (!axes.visible) {\n      this.enabled[i] = false;\n      this.drawSides[i] = false;\n      continue;\n    }\n    this.enabled[i] = axes.showspikes;\n    this.colors[i] = str2RGBArray(axes.spikecolor);\n    this.drawSides[i] = axes.spikesides;\n    this.lineWidth[i] = axes.spikethickness;\n  }\n};\nfunction createSpikeOptions(layout) {\n  var result = new SpikeOptions();\n  result.merge(layout);\n  return result;\n}\nmodule.exports = createSpikeOptions;\n\n/***/ }),\n\n/***/ 96085:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1715626__) {\n\n\"use strict\";\n/* eslint block-scoped-var: 0*/\n/* eslint no-redeclare: 0*/\n\n\n\nmodule.exports = computeTickMarks;\nvar Axes = __nested_webpack_require_1715626__(89298);\nvar Lib = __nested_webpack_require_1715626__(71828);\nvar AXES_NAMES = ['xaxis', 'yaxis', 'zaxis'];\nvar centerPoint = [0, 0, 0];\nfunction contourLevelsFromTicks(ticks) {\n  var result = new Array(3);\n  for (var i = 0; i < 3; ++i) {\n    var tlevel = ticks[i];\n    var clevel = new Array(tlevel.length);\n    for (var j = 0; j < tlevel.length; ++j) {\n      clevel[j] = tlevel[j].x;\n    }\n    result[i] = clevel;\n  }\n  return result;\n}\nfunction computeTickMarks(scene) {\n  var axesOptions = scene.axesOptions;\n  var glRange = scene.glplot.axesPixels;\n  var sceneLayout = scene.fullSceneLayout;\n  var ticks = [[], [], []];\n  for (var i = 0; i < 3; ++i) {\n    var axes = sceneLayout[AXES_NAMES[i]];\n    axes._length = (glRange[i].hi - glRange[i].lo) * glRange[i].pixelsPerDataUnit / scene.dataScale[i];\n    if (Math.abs(axes._length) === Infinity || isNaN(axes._length)) {\n      ticks[i] = [];\n    } else {\n      axes._input_range = axes.range.slice();\n      axes.range[0] = glRange[i].lo / scene.dataScale[i];\n      axes.range[1] = glRange[i].hi / scene.dataScale[i];\n      axes._m = 1.0 / (scene.dataScale[i] * glRange[i].pixelsPerDataUnit);\n      if (axes.range[0] === axes.range[1]) {\n        axes.range[0] -= 1;\n        axes.range[1] += 1;\n      }\n      // this is necessary to short-circuit the 'y' handling\n      // in autotick part of calcTicks... Treating all axes as 'y' in this case\n      // running the autoticks here, then setting\n      // autoticks to false to get around the 2D handling in calcTicks.\n      var tickModeCached = axes.tickmode;\n      if (axes.tickmode === 'auto') {\n        axes.tickmode = 'linear';\n        var nticks = axes.nticks || Lib.constrain(axes._length / 40, 4, 9);\n        Axes.autoTicks(axes, Math.abs(axes.range[1] - axes.range[0]) / nticks);\n      }\n      var dataTicks = Axes.calcTicks(axes, {\n        msUTC: true\n      });\n      for (var j = 0; j < dataTicks.length; ++j) {\n        dataTicks[j].x = dataTicks[j].x * scene.dataScale[i];\n        if (axes.type === 'date') {\n          dataTicks[j].text = dataTicks[j].text.replace(/\\<br\\>/g, ' ');\n        }\n      }\n      ticks[i] = dataTicks;\n      axes.tickmode = tickModeCached;\n    }\n  }\n  axesOptions.ticks = ticks;\n\n  // Calculate tick lengths dynamically\n  for (var i = 0; i < 3; ++i) {\n    centerPoint[i] = 0.5 * (scene.glplot.bounds[0][i] + scene.glplot.bounds[1][i]);\n    for (var j = 0; j < 2; ++j) {\n      axesOptions.bounds[j][i] = scene.glplot.bounds[j][i];\n    }\n  }\n  scene.contourLevels = contourLevelsFromTicks(ticks);\n}\n\n/***/ }),\n\n/***/ 63538:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nfunction xformMatrix(m, v) {\n  var out = [0, 0, 0, 0];\n  var i, j;\n  for (i = 0; i < 4; ++i) {\n    for (j = 0; j < 4; ++j) {\n      out[j] += m[4 * i + j] * v[i];\n    }\n  }\n  return out;\n}\nfunction project(camera, v) {\n  var p = xformMatrix(camera.projection, xformMatrix(camera.view, xformMatrix(camera.model, [v[0], v[1], v[2], 1])));\n  return p;\n}\nmodule.exports = project;\n\n/***/ }),\n\n/***/ 33539:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1718829__) {\n\n\"use strict\";\n\n\nvar glPlot3d = (__nested_webpack_require_1718829__(9330).gl_plot3d);\nvar createCamera = glPlot3d.createCamera;\nvar createPlot = glPlot3d.createScene;\nvar getContext = __nested_webpack_require_1718829__(40372);\nvar passiveSupported = __nested_webpack_require_1718829__(38520);\nvar Registry = __nested_webpack_require_1718829__(73972);\nvar Lib = __nested_webpack_require_1718829__(71828);\nvar preserveDrawingBuffer = Lib.preserveDrawingBuffer();\nvar Axes = __nested_webpack_require_1718829__(89298);\nvar Fx = __nested_webpack_require_1718829__(30211);\nvar str2RGBAarray = __nested_webpack_require_1718829__(78614);\nvar showNoWebGlMsg = __nested_webpack_require_1718829__(58617);\nvar project = __nested_webpack_require_1718829__(63538);\nvar createAxesOptions = __nested_webpack_require_1718829__(30422);\nvar createSpikeOptions = __nested_webpack_require_1718829__(13133);\nvar computeTickMarks = __nested_webpack_require_1718829__(96085);\nvar STATIC_CANVAS, STATIC_CONTEXT;\nfunction Scene(options, fullLayout) {\n  // create sub container for plot\n  var sceneContainer = document.createElement('div');\n  var plotContainer = options.container;\n\n  // keep a ref to the graph div to fire hover+click events\n  this.graphDiv = options.graphDiv;\n\n  // create SVG container for hover text\n  var svgContainer = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n  svgContainer.style.position = 'absolute';\n  svgContainer.style.top = svgContainer.style.left = '0px';\n  svgContainer.style.width = svgContainer.style.height = '100%';\n  svgContainer.style['z-index'] = 20;\n  svgContainer.style['pointer-events'] = 'none';\n  sceneContainer.appendChild(svgContainer);\n  this.svgContainer = svgContainer;\n\n  // Tag the container with the sceneID\n  sceneContainer.id = options.id;\n  sceneContainer.style.position = 'absolute';\n  sceneContainer.style.top = sceneContainer.style.left = '0px';\n  sceneContainer.style.width = sceneContainer.style.height = '100%';\n  plotContainer.appendChild(sceneContainer);\n  this.fullLayout = fullLayout;\n  this.id = options.id || 'scene';\n  this.fullSceneLayout = fullLayout[this.id];\n\n  // Saved from last call to plot()\n  this.plotArgs = [[], {}, {}];\n\n  /*\n   * Move this to calc step? Why does it work here?\n   */\n  this.axesOptions = createAxesOptions(fullLayout, fullLayout[this.id]);\n  this.spikeOptions = createSpikeOptions(fullLayout[this.id]);\n  this.container = sceneContainer;\n  this.staticMode = !!options.staticPlot;\n  this.pixelRatio = this.pixelRatio || options.plotGlPixelRatio || 2;\n\n  // Coordinate rescaling\n  this.dataScale = [1, 1, 1];\n  this.contourLevels = [[], [], []];\n  this.convertAnnotations = Registry.getComponentMethod('annotations3d', 'convert');\n  this.drawAnnotations = Registry.getComponentMethod('annotations3d', 'draw');\n  this.initializeGLPlot();\n}\nvar proto = Scene.prototype;\nproto.prepareOptions = function () {\n  var scene = this;\n  var opts = {\n    canvas: scene.canvas,\n    gl: scene.gl,\n    glOptions: {\n      preserveDrawingBuffer: preserveDrawingBuffer,\n      premultipliedAlpha: true,\n      antialias: true\n    },\n    container: scene.container,\n    axes: scene.axesOptions,\n    spikes: scene.spikeOptions,\n    pickRadius: 10,\n    snapToData: true,\n    autoScale: true,\n    autoBounds: false,\n    cameraObject: scene.camera,\n    pixelRatio: scene.pixelRatio\n  };\n\n  // for static plots, we reuse the WebGL context\n  //  as WebKit doesn't collect them reliably\n  if (scene.staticMode) {\n    if (!STATIC_CONTEXT) {\n      STATIC_CANVAS = document.createElement('canvas');\n      STATIC_CONTEXT = getContext({\n        canvas: STATIC_CANVAS,\n        preserveDrawingBuffer: true,\n        premultipliedAlpha: true,\n        antialias: true\n      });\n      if (!STATIC_CONTEXT) {\n        throw new Error('error creating static canvas/context for image server');\n      }\n    }\n    opts.gl = STATIC_CONTEXT;\n    opts.canvas = STATIC_CANVAS;\n  }\n  return opts;\n};\nvar firstInit = true;\nproto.tryCreatePlot = function () {\n  var scene = this;\n  var opts = scene.prepareOptions();\n  var success = true;\n  try {\n    scene.glplot = createPlot(opts);\n  } catch (e) {\n    if (scene.staticMode || !firstInit || preserveDrawingBuffer) {\n      success = false;\n    } else {\n      // try second time\n      // enable preserveDrawingBuffer setup\n      // in case is-mobile not detecting the right device\n      Lib.warn(['webgl setup failed possibly due to', 'false preserveDrawingBuffer config.', 'The mobile/tablet device may not be detected by is-mobile module.', 'Enabling preserveDrawingBuffer in second attempt to create webgl scene...'].join(' '));\n      try {\n        // invert preserveDrawingBuffer\n        preserveDrawingBuffer = opts.glOptions.preserveDrawingBuffer = true;\n        scene.glplot = createPlot(opts);\n      } catch (e) {\n        // revert changes to preserveDrawingBuffer\n        preserveDrawingBuffer = opts.glOptions.preserveDrawingBuffer = false;\n        success = false;\n      }\n    }\n  }\n  firstInit = false;\n  return success;\n};\nproto.initializeGLCamera = function () {\n  var scene = this;\n  var cameraData = scene.fullSceneLayout.camera;\n  var isOrtho = cameraData.projection.type === 'orthographic';\n  scene.camera = createCamera(scene.container, {\n    center: [cameraData.center.x, cameraData.center.y, cameraData.center.z],\n    eye: [cameraData.eye.x, cameraData.eye.y, cameraData.eye.z],\n    up: [cameraData.up.x, cameraData.up.y, cameraData.up.z],\n    _ortho: isOrtho,\n    zoomMin: 0.01,\n    zoomMax: 100,\n    mode: 'orbit'\n  });\n};\nproto.initializeGLPlot = function () {\n  var scene = this;\n  scene.initializeGLCamera();\n  var success = scene.tryCreatePlot();\n  /*\n  * createPlot will throw when webgl is not enabled in the client.\n  * Lets return an instance of the module with all functions noop'd.\n  * The destroy method - which will remove the container from the DOM\n  * is overridden with a function that removes the container only.\n  */\n  if (!success) return showNoWebGlMsg(scene);\n\n  // List of scene objects\n  scene.traces = {};\n  scene.make4thDimension();\n  var gd = scene.graphDiv;\n  var layout = gd.layout;\n  var makeUpdate = function () {\n    var update = {};\n    if (scene.isCameraChanged(layout)) {\n      // camera updates\n      update[scene.id + '.camera'] = scene.getCamera();\n    }\n    if (scene.isAspectChanged(layout)) {\n      // scene updates\n      update[scene.id + '.aspectratio'] = scene.glplot.getAspectratio();\n      if (layout[scene.id].aspectmode !== 'manual') {\n        scene.fullSceneLayout.aspectmode = layout[scene.id].aspectmode = update[scene.id + '.aspectmode'] = 'manual';\n      }\n    }\n    return update;\n  };\n  var relayoutCallback = function (scene) {\n    if (scene.fullSceneLayout.dragmode === false) return;\n    var update = makeUpdate();\n    scene.saveLayout(layout);\n    scene.graphDiv.emit('plotly_relayout', update);\n  };\n  if (scene.glplot.canvas) {\n    scene.glplot.canvas.addEventListener('mouseup', function () {\n      relayoutCallback(scene);\n    });\n    scene.glplot.canvas.addEventListener('wheel', function (e) {\n      if (gd._context._scrollZoom.gl3d) {\n        if (scene.camera._ortho) {\n          var s = e.deltaX > e.deltaY ? 1.1 : 1.0 / 1.1;\n          var o = scene.glplot.getAspectratio();\n          scene.glplot.setAspectratio({\n            x: s * o.x,\n            y: s * o.y,\n            z: s * o.z\n          });\n        }\n        relayoutCallback(scene);\n      }\n    }, passiveSupported ? {\n      passive: false\n    } : false);\n    scene.glplot.canvas.addEventListener('mousemove', function () {\n      if (scene.fullSceneLayout.dragmode === false) return;\n      if (scene.camera.mouseListener.buttons === 0) return;\n      var update = makeUpdate();\n      scene.graphDiv.emit('plotly_relayouting', update);\n    });\n    if (!scene.staticMode) {\n      scene.glplot.canvas.addEventListener('webglcontextlost', function (event) {\n        if (gd && gd.emit) {\n          gd.emit('plotly_webglcontextlost', {\n            event: event,\n            layer: scene.id\n          });\n        }\n      }, false);\n    }\n  }\n  scene.glplot.oncontextloss = function () {\n    scene.recoverContext();\n  };\n  scene.glplot.onrender = function () {\n    scene.render();\n  };\n  return true;\n};\nproto.render = function () {\n  var scene = this;\n  var gd = scene.graphDiv;\n  var trace;\n\n  // update size of svg container\n  var svgContainer = scene.svgContainer;\n  var clientRect = scene.container.getBoundingClientRect();\n  gd._fullLayout._calcInverseTransform(gd);\n  var scaleX = gd._fullLayout._invScaleX;\n  var scaleY = gd._fullLayout._invScaleY;\n  var width = clientRect.width * scaleX;\n  var height = clientRect.height * scaleY;\n  svgContainer.setAttributeNS(null, 'viewBox', '0 0 ' + width + ' ' + height);\n  svgContainer.setAttributeNS(null, 'width', width);\n  svgContainer.setAttributeNS(null, 'height', height);\n  computeTickMarks(scene);\n  scene.glplot.axes.update(scene.axesOptions);\n\n  // check if pick has changed\n  var keys = Object.keys(scene.traces);\n  var lastPicked = null;\n  var selection = scene.glplot.selection;\n  for (var i = 0; i < keys.length; ++i) {\n    trace = scene.traces[keys[i]];\n    if (trace.data.hoverinfo !== 'skip' && trace.handlePick(selection)) {\n      lastPicked = trace;\n    }\n    if (trace.setContourLevels) trace.setContourLevels();\n  }\n  function formatter(axLetter, val, hoverformat) {\n    var ax = scene.fullSceneLayout[axLetter + 'axis'];\n    if (ax.type !== 'log') {\n      val = ax.d2l(val);\n    }\n    return Axes.hoverLabelText(ax, val, hoverformat);\n  }\n  if (lastPicked !== null) {\n    var pdata = project(scene.glplot.cameraParams, selection.dataCoordinate);\n    trace = lastPicked.data;\n    var traceNow = gd._fullData[trace.index];\n    var ptNumber = selection.index;\n    var labels = {\n      xLabel: formatter('x', selection.traceCoordinate[0], trace.xhoverformat),\n      yLabel: formatter('y', selection.traceCoordinate[1], trace.yhoverformat),\n      zLabel: formatter('z', selection.traceCoordinate[2], trace.zhoverformat)\n    };\n    var hoverinfo = Fx.castHoverinfo(traceNow, scene.fullLayout, ptNumber);\n    var hoverinfoParts = (hoverinfo || '').split('+');\n    var isHoverinfoAll = hoverinfo && hoverinfo === 'all';\n    if (!traceNow.hovertemplate && !isHoverinfoAll) {\n      if (hoverinfoParts.indexOf('x') === -1) labels.xLabel = undefined;\n      if (hoverinfoParts.indexOf('y') === -1) labels.yLabel = undefined;\n      if (hoverinfoParts.indexOf('z') === -1) labels.zLabel = undefined;\n      if (hoverinfoParts.indexOf('text') === -1) selection.textLabel = undefined;\n      if (hoverinfoParts.indexOf('name') === -1) lastPicked.name = undefined;\n    }\n    var tx;\n    var vectorTx = [];\n    if (trace.type === 'cone' || trace.type === 'streamtube') {\n      labels.uLabel = formatter('x', selection.traceCoordinate[3], trace.uhoverformat);\n      if (isHoverinfoAll || hoverinfoParts.indexOf('u') !== -1) {\n        vectorTx.push('u: ' + labels.uLabel);\n      }\n      labels.vLabel = formatter('y', selection.traceCoordinate[4], trace.vhoverformat);\n      if (isHoverinfoAll || hoverinfoParts.indexOf('v') !== -1) {\n        vectorTx.push('v: ' + labels.vLabel);\n      }\n      labels.wLabel = formatter('z', selection.traceCoordinate[5], trace.whoverformat);\n      if (isHoverinfoAll || hoverinfoParts.indexOf('w') !== -1) {\n        vectorTx.push('w: ' + labels.wLabel);\n      }\n      labels.normLabel = selection.traceCoordinate[6].toPrecision(3);\n      if (isHoverinfoAll || hoverinfoParts.indexOf('norm') !== -1) {\n        vectorTx.push('norm: ' + labels.normLabel);\n      }\n      if (trace.type === 'streamtube') {\n        labels.divergenceLabel = selection.traceCoordinate[7].toPrecision(3);\n        if (isHoverinfoAll || hoverinfoParts.indexOf('divergence') !== -1) {\n          vectorTx.push('divergence: ' + labels.divergenceLabel);\n        }\n      }\n      if (selection.textLabel) {\n        vectorTx.push(selection.textLabel);\n      }\n      tx = vectorTx.join('<br>');\n    } else if (trace.type === 'isosurface' || trace.type === 'volume') {\n      labels.valueLabel = Axes.hoverLabelText(scene._mockAxis, scene._mockAxis.d2l(selection.traceCoordinate[3]), trace.valuehoverformat);\n      vectorTx.push('value: ' + labels.valueLabel);\n      if (selection.textLabel) {\n        vectorTx.push(selection.textLabel);\n      }\n      tx = vectorTx.join('<br>');\n    } else {\n      tx = selection.textLabel;\n    }\n    var pointData = {\n      x: selection.traceCoordinate[0],\n      y: selection.traceCoordinate[1],\n      z: selection.traceCoordinate[2],\n      data: traceNow._input,\n      fullData: traceNow,\n      curveNumber: traceNow.index,\n      pointNumber: ptNumber\n    };\n    Fx.appendArrayPointValue(pointData, traceNow, ptNumber);\n    if (trace._module.eventData) {\n      pointData = traceNow._module.eventData(pointData, selection, traceNow, {}, ptNumber);\n    }\n    var eventData = {\n      points: [pointData]\n    };\n    if (scene.fullSceneLayout.hovermode) {\n      var bbox = [];\n      Fx.loneHover({\n        trace: traceNow,\n        x: (0.5 + 0.5 * pdata[0] / pdata[3]) * width,\n        y: (0.5 - 0.5 * pdata[1] / pdata[3]) * height,\n        xLabel: labels.xLabel,\n        yLabel: labels.yLabel,\n        zLabel: labels.zLabel,\n        text: tx,\n        name: lastPicked.name,\n        color: Fx.castHoverOption(traceNow, ptNumber, 'bgcolor') || lastPicked.color,\n        borderColor: Fx.castHoverOption(traceNow, ptNumber, 'bordercolor'),\n        fontFamily: Fx.castHoverOption(traceNow, ptNumber, 'font.family'),\n        fontSize: Fx.castHoverOption(traceNow, ptNumber, 'font.size'),\n        fontColor: Fx.castHoverOption(traceNow, ptNumber, 'font.color'),\n        nameLength: Fx.castHoverOption(traceNow, ptNumber, 'namelength'),\n        textAlign: Fx.castHoverOption(traceNow, ptNumber, 'align'),\n        hovertemplate: Lib.castOption(traceNow, ptNumber, 'hovertemplate'),\n        hovertemplateLabels: Lib.extendFlat({}, pointData, labels),\n        eventData: [pointData]\n      }, {\n        container: svgContainer,\n        gd: gd,\n        inOut_bbox: bbox\n      });\n      pointData.bbox = bbox[0];\n    }\n    if (selection.buttons && selection.distance < 5) {\n      gd.emit('plotly_click', eventData);\n    } else {\n      gd.emit('plotly_hover', eventData);\n    }\n    this.oldEventData = eventData;\n  } else {\n    Fx.loneUnhover(svgContainer);\n    if (this.oldEventData) gd.emit('plotly_unhover', this.oldEventData);\n    this.oldEventData = undefined;\n  }\n  scene.drawAnnotations(scene);\n};\nproto.recoverContext = function () {\n  var scene = this;\n  scene.glplot.dispose();\n  var tryRecover = function () {\n    if (scene.glplot.gl.isContextLost()) {\n      requestAnimationFrame(tryRecover);\n      return;\n    }\n    if (!scene.initializeGLPlot()) {\n      Lib.error('Catastrophic and unrecoverable WebGL error. Context lost.');\n      return;\n    }\n    scene.plot.apply(scene, scene.plotArgs);\n  };\n  requestAnimationFrame(tryRecover);\n};\nvar axisProperties = ['xaxis', 'yaxis', 'zaxis'];\nfunction computeTraceBounds(scene, trace, bounds) {\n  var fullSceneLayout = scene.fullSceneLayout;\n  for (var d = 0; d < 3; d++) {\n    var axisName = axisProperties[d];\n    var axLetter = axisName.charAt(0);\n    var ax = fullSceneLayout[axisName];\n    var coords = trace[axLetter];\n    var calendar = trace[axLetter + 'calendar'];\n    var len = trace['_' + axLetter + 'length'];\n    if (!Lib.isArrayOrTypedArray(coords)) {\n      bounds[0][d] = Math.min(bounds[0][d], 0);\n      bounds[1][d] = Math.max(bounds[1][d], len - 1);\n    } else {\n      var v;\n      for (var i = 0; i < (len || coords.length); i++) {\n        if (Lib.isArrayOrTypedArray(coords[i])) {\n          for (var j = 0; j < coords[i].length; ++j) {\n            v = ax.d2l(coords[i][j], 0, calendar);\n            if (!isNaN(v) && isFinite(v)) {\n              bounds[0][d] = Math.min(bounds[0][d], v);\n              bounds[1][d] = Math.max(bounds[1][d], v);\n            }\n          }\n        } else {\n          v = ax.d2l(coords[i], 0, calendar);\n          if (!isNaN(v) && isFinite(v)) {\n            bounds[0][d] = Math.min(bounds[0][d], v);\n            bounds[1][d] = Math.max(bounds[1][d], v);\n          }\n        }\n      }\n    }\n  }\n}\nfunction computeAnnotationBounds(scene, bounds) {\n  var fullSceneLayout = scene.fullSceneLayout;\n  var annotations = fullSceneLayout.annotations || [];\n  for (var d = 0; d < 3; d++) {\n    var axisName = axisProperties[d];\n    var axLetter = axisName.charAt(0);\n    var ax = fullSceneLayout[axisName];\n    for (var j = 0; j < annotations.length; j++) {\n      var ann = annotations[j];\n      if (ann.visible) {\n        var pos = ax.r2l(ann[axLetter]);\n        if (!isNaN(pos) && isFinite(pos)) {\n          bounds[0][d] = Math.min(bounds[0][d], pos);\n          bounds[1][d] = Math.max(bounds[1][d], pos);\n        }\n      }\n    }\n  }\n}\nproto.plot = function (sceneData, fullLayout, layout) {\n  var scene = this;\n\n  // Save parameters\n  scene.plotArgs = [sceneData, fullLayout, layout];\n  if (scene.glplot.contextLost) return;\n  var data, trace;\n  var i, j, axis, axisType;\n  var fullSceneLayout = fullLayout[scene.id];\n  var sceneLayout = layout[scene.id];\n\n  // Update layout\n  scene.fullLayout = fullLayout;\n  scene.fullSceneLayout = fullSceneLayout;\n  scene.axesOptions.merge(fullLayout, fullSceneLayout);\n  scene.spikeOptions.merge(fullSceneLayout);\n\n  // Update camera and camera mode\n  scene.setViewport(fullSceneLayout);\n  scene.updateFx(fullSceneLayout.dragmode, fullSceneLayout.hovermode);\n  scene.camera.enableWheel = scene.graphDiv._context._scrollZoom.gl3d;\n\n  // Update scene background\n  scene.glplot.setClearColor(str2RGBAarray(fullSceneLayout.bgcolor));\n\n  // Update axes functions BEFORE updating traces\n  scene.setConvert(axis);\n\n  // Convert scene data\n  if (!sceneData) sceneData = [];else if (!Array.isArray(sceneData)) sceneData = [sceneData];\n\n  // Compute trace bounding box\n  var dataBounds = [[Infinity, Infinity, Infinity], [-Infinity, -Infinity, -Infinity]];\n  for (i = 0; i < sceneData.length; ++i) {\n    data = sceneData[i];\n    if (data.visible !== true || data._length === 0) continue;\n    computeTraceBounds(this, data, dataBounds);\n  }\n  computeAnnotationBounds(this, dataBounds);\n  var dataScale = [1, 1, 1];\n  for (j = 0; j < 3; ++j) {\n    if (dataBounds[1][j] === dataBounds[0][j]) {\n      dataScale[j] = 1.0;\n    } else {\n      dataScale[j] = 1.0 / (dataBounds[1][j] - dataBounds[0][j]);\n    }\n  }\n\n  // Save scale\n  scene.dataScale = dataScale;\n\n  // after computeTraceBounds where ax._categories are filled in\n  scene.convertAnnotations(this);\n\n  // Update traces\n  for (i = 0; i < sceneData.length; ++i) {\n    data = sceneData[i];\n    if (data.visible !== true || data._length === 0) {\n      continue;\n    }\n    trace = scene.traces[data.uid];\n    if (trace) {\n      if (trace.data.type === data.type) {\n        trace.update(data);\n      } else {\n        trace.dispose();\n        trace = data._module.plot(this, data);\n        scene.traces[data.uid] = trace;\n      }\n    } else {\n      trace = data._module.plot(this, data);\n      scene.traces[data.uid] = trace;\n    }\n    trace.name = data.name;\n  }\n\n  // Remove empty traces\n  var traceIds = Object.keys(scene.traces);\n  traceIdLoop: for (i = 0; i < traceIds.length; ++i) {\n    for (j = 0; j < sceneData.length; ++j) {\n      if (sceneData[j].uid === traceIds[i] && sceneData[j].visible === true && sceneData[j]._length !== 0) {\n        continue traceIdLoop;\n      }\n    }\n    trace = scene.traces[traceIds[i]];\n    trace.dispose();\n    delete scene.traces[traceIds[i]];\n  }\n\n  // order object per trace index\n  scene.glplot.objects.sort(function (a, b) {\n    return a._trace.data.index - b._trace.data.index;\n  });\n\n  // Update ranges (needs to be called *after* objects are added due to updates)\n  var sceneBounds = [[0, 0, 0], [0, 0, 0]];\n  var axisDataRange = [];\n  var axisTypeRatios = {};\n  for (i = 0; i < 3; ++i) {\n    axis = fullSceneLayout[axisProperties[i]];\n    axisType = axis.type;\n    if (axisType in axisTypeRatios) {\n      axisTypeRatios[axisType].acc *= dataScale[i];\n      axisTypeRatios[axisType].count += 1;\n    } else {\n      axisTypeRatios[axisType] = {\n        acc: dataScale[i],\n        count: 1\n      };\n    }\n    if (axis.autorange) {\n      sceneBounds[0][i] = Infinity;\n      sceneBounds[1][i] = -Infinity;\n      var objects = scene.glplot.objects;\n      var annotations = scene.fullSceneLayout.annotations || [];\n      var axLetter = axis._name.charAt(0);\n      for (j = 0; j < objects.length; j++) {\n        var obj = objects[j];\n        var objBounds = obj.bounds;\n        var pad = obj._trace.data._pad || 0;\n        if (obj.constructor.name === 'ErrorBars' && axis._lowerLogErrorBound) {\n          sceneBounds[0][i] = Math.min(sceneBounds[0][i], axis._lowerLogErrorBound);\n        } else {\n          sceneBounds[0][i] = Math.min(sceneBounds[0][i], objBounds[0][i] / dataScale[i] - pad);\n        }\n        sceneBounds[1][i] = Math.max(sceneBounds[1][i], objBounds[1][i] / dataScale[i] + pad);\n      }\n      for (j = 0; j < annotations.length; j++) {\n        var ann = annotations[j];\n\n        // N.B. not taking into consideration the arrowhead\n        if (ann.visible) {\n          var pos = axis.r2l(ann[axLetter]);\n          sceneBounds[0][i] = Math.min(sceneBounds[0][i], pos);\n          sceneBounds[1][i] = Math.max(sceneBounds[1][i], pos);\n        }\n      }\n      if ('rangemode' in axis && axis.rangemode === 'tozero') {\n        sceneBounds[0][i] = Math.min(sceneBounds[0][i], 0);\n        sceneBounds[1][i] = Math.max(sceneBounds[1][i], 0);\n      }\n      if (sceneBounds[0][i] > sceneBounds[1][i]) {\n        sceneBounds[0][i] = -1;\n        sceneBounds[1][i] = 1;\n      } else {\n        var d = sceneBounds[1][i] - sceneBounds[0][i];\n        sceneBounds[0][i] -= d / 32.0;\n        sceneBounds[1][i] += d / 32.0;\n      }\n      if (axis.autorange === 'reversed') {\n        // swap bounds:\n        var tmp = sceneBounds[0][i];\n        sceneBounds[0][i] = sceneBounds[1][i];\n        sceneBounds[1][i] = tmp;\n      }\n    } else {\n      var range = axis.range;\n      sceneBounds[0][i] = axis.r2l(range[0]);\n      sceneBounds[1][i] = axis.r2l(range[1]);\n    }\n    if (sceneBounds[0][i] === sceneBounds[1][i]) {\n      sceneBounds[0][i] -= 1;\n      sceneBounds[1][i] += 1;\n    }\n    axisDataRange[i] = sceneBounds[1][i] - sceneBounds[0][i];\n\n    // Update plot bounds\n    scene.glplot.setBounds(i, {\n      min: sceneBounds[0][i] * dataScale[i],\n      max: sceneBounds[1][i] * dataScale[i]\n    });\n  }\n\n  /*\n   * Dynamically set the aspect ratio depending on the users aspect settings\n   */\n  var aspectRatio;\n  var aspectmode = fullSceneLayout.aspectmode;\n  if (aspectmode === 'cube') {\n    aspectRatio = [1, 1, 1];\n  } else if (aspectmode === 'manual') {\n    var userRatio = fullSceneLayout.aspectratio;\n    aspectRatio = [userRatio.x, userRatio.y, userRatio.z];\n  } else if (aspectmode === 'auto' || aspectmode === 'data') {\n    var axesScaleRatio = [1, 1, 1];\n    // Compute axis scale per category\n    for (i = 0; i < 3; ++i) {\n      axis = fullSceneLayout[axisProperties[i]];\n      axisType = axis.type;\n      var axisRatio = axisTypeRatios[axisType];\n      axesScaleRatio[i] = Math.pow(axisRatio.acc, 1.0 / axisRatio.count) / dataScale[i];\n    }\n    if (aspectmode === 'data') {\n      aspectRatio = axesScaleRatio;\n    } else {\n      // i.e. 'auto' option\n      if (Math.max.apply(null, axesScaleRatio) / Math.min.apply(null, axesScaleRatio) <= 4) {\n        // USE DATA MODE WHEN AXIS RANGE DIMENSIONS ARE RELATIVELY EQUAL\n        aspectRatio = axesScaleRatio;\n      } else {\n        // USE EQUAL MODE WHEN AXIS RANGE DIMENSIONS ARE HIGHLY UNEQUAL\n        aspectRatio = [1, 1, 1];\n      }\n    }\n  } else {\n    throw new Error('scene.js aspectRatio was not one of the enumerated types');\n  }\n\n  /*\n   * Write aspect Ratio back to user data and fullLayout so that it is modifies as user\n   * manipulates the aspectmode settings and the fullLayout is up-to-date.\n   */\n  fullSceneLayout.aspectratio.x = sceneLayout.aspectratio.x = aspectRatio[0];\n  fullSceneLayout.aspectratio.y = sceneLayout.aspectratio.y = aspectRatio[1];\n  fullSceneLayout.aspectratio.z = sceneLayout.aspectratio.z = aspectRatio[2];\n\n  /*\n   * Finally assign the computed aspecratio to the glplot module. This will have an effect\n   * on the next render cycle.\n   */\n  scene.glplot.setAspectratio(fullSceneLayout.aspectratio);\n\n  // save 'initial' aspectratio & aspectmode view settings for modebar buttons\n  if (!scene.viewInitial.aspectratio) {\n    scene.viewInitial.aspectratio = {\n      x: fullSceneLayout.aspectratio.x,\n      y: fullSceneLayout.aspectratio.y,\n      z: fullSceneLayout.aspectratio.z\n    };\n  }\n  if (!scene.viewInitial.aspectmode) {\n    scene.viewInitial.aspectmode = fullSceneLayout.aspectmode;\n  }\n\n  // Update frame position for multi plots\n  var domain = fullSceneLayout.domain || null;\n  var size = fullLayout._size || null;\n  if (domain && size) {\n    var containerStyle = scene.container.style;\n    containerStyle.position = 'absolute';\n    containerStyle.left = size.l + domain.x[0] * size.w + 'px';\n    containerStyle.top = size.t + (1 - domain.y[1]) * size.h + 'px';\n    containerStyle.width = size.w * (domain.x[1] - domain.x[0]) + 'px';\n    containerStyle.height = size.h * (domain.y[1] - domain.y[0]) + 'px';\n  }\n\n  // force redraw so that promise is returned when rendering is completed\n  scene.glplot.redraw();\n};\nproto.destroy = function () {\n  var scene = this;\n  if (!scene.glplot) return;\n  scene.camera.mouseListener.enabled = false;\n  scene.container.removeEventListener('wheel', scene.camera.wheelListener);\n  scene.camera = null;\n  scene.glplot.dispose();\n  scene.container.parentNode.removeChild(scene.container);\n  scene.glplot = null;\n};\n\n// getCameraArrays :: plotly_coords -> gl-plot3d_coords\n// inverse of getLayoutCamera\nfunction getCameraArrays(camera) {\n  return [[camera.eye.x, camera.eye.y, camera.eye.z], [camera.center.x, camera.center.y, camera.center.z], [camera.up.x, camera.up.y, camera.up.z]];\n}\n\n// getLayoutCamera :: gl-plot3d_coords -> plotly_coords\n// inverse of getCameraArrays\nfunction getLayoutCamera(camera) {\n  return {\n    up: {\n      x: camera.up[0],\n      y: camera.up[1],\n      z: camera.up[2]\n    },\n    center: {\n      x: camera.center[0],\n      y: camera.center[1],\n      z: camera.center[2]\n    },\n    eye: {\n      x: camera.eye[0],\n      y: camera.eye[1],\n      z: camera.eye[2]\n    },\n    projection: {\n      type: camera._ortho === true ? 'orthographic' : 'perspective'\n    }\n  };\n}\n\n// get camera position in plotly coords from 'gl-plot3d' coords\nproto.getCamera = function () {\n  var scene = this;\n  scene.camera.view.recalcMatrix(scene.camera.view.lastT());\n  return getLayoutCamera(scene.camera);\n};\n\n// set gl-plot3d camera position and scene aspects with a set of plotly coords\nproto.setViewport = function (sceneLayout) {\n  var scene = this;\n  var cameraData = sceneLayout.camera;\n  scene.camera.lookAt.apply(this, getCameraArrays(cameraData));\n  scene.glplot.setAspectratio(sceneLayout.aspectratio);\n  var newOrtho = cameraData.projection.type === 'orthographic';\n  var oldOrtho = scene.camera._ortho;\n  if (newOrtho !== oldOrtho) {\n    scene.glplot.redraw(); // TODO: figure out why we need to redraw here?\n    scene.glplot.clearRGBA();\n    scene.glplot.dispose();\n    scene.initializeGLPlot();\n  }\n};\nproto.isCameraChanged = function (layout) {\n  var scene = this;\n  var cameraData = scene.getCamera();\n  var cameraNestedProp = Lib.nestedProperty(layout, scene.id + '.camera');\n  var cameraDataLastSave = cameraNestedProp.get();\n  function same(x, y, i, j) {\n    var vectors = ['up', 'center', 'eye'];\n    var components = ['x', 'y', 'z'];\n    return y[vectors[i]] && x[vectors[i]][components[j]] === y[vectors[i]][components[j]];\n  }\n  var changed = false;\n  if (cameraDataLastSave === undefined) {\n    changed = true;\n  } else {\n    for (var i = 0; i < 3; i++) {\n      for (var j = 0; j < 3; j++) {\n        if (!same(cameraData, cameraDataLastSave, i, j)) {\n          changed = true;\n          break;\n        }\n      }\n    }\n    if (!cameraDataLastSave.projection || cameraData.projection && cameraData.projection.type !== cameraDataLastSave.projection.type) {\n      changed = true;\n    }\n  }\n  return changed;\n};\nproto.isAspectChanged = function (layout) {\n  var scene = this;\n  var aspectData = scene.glplot.getAspectratio();\n  var aspectNestedProp = Lib.nestedProperty(layout, scene.id + '.aspectratio');\n  var aspectDataLastSave = aspectNestedProp.get();\n  return aspectDataLastSave === undefined || aspectDataLastSave.x !== aspectData.x || aspectDataLastSave.y !== aspectData.y || aspectDataLastSave.z !== aspectData.z;\n};\n\n// save camera to user layout (i.e. gd.layout)\nproto.saveLayout = function (layout) {\n  var scene = this;\n  var fullLayout = scene.fullLayout;\n  var cameraData;\n  var cameraNestedProp;\n  var cameraDataLastSave;\n  var aspectData;\n  var aspectNestedProp;\n  var aspectDataLastSave;\n  var cameraChanged = scene.isCameraChanged(layout);\n  var aspectChanged = scene.isAspectChanged(layout);\n  var hasChanged = cameraChanged || aspectChanged;\n  if (hasChanged) {\n    var preGUI = {};\n    if (cameraChanged) {\n      cameraData = scene.getCamera();\n      cameraNestedProp = Lib.nestedProperty(layout, scene.id + '.camera');\n      cameraDataLastSave = cameraNestedProp.get();\n      preGUI[scene.id + '.camera'] = cameraDataLastSave;\n    }\n    if (aspectChanged) {\n      aspectData = scene.glplot.getAspectratio();\n      aspectNestedProp = Lib.nestedProperty(layout, scene.id + '.aspectratio');\n      aspectDataLastSave = aspectNestedProp.get();\n      preGUI[scene.id + '.aspectratio'] = aspectDataLastSave;\n    }\n    Registry.call('_storeDirectGUIEdit', layout, fullLayout._preGUI, preGUI);\n    if (cameraChanged) {\n      cameraNestedProp.set(cameraData);\n      var cameraFullNP = Lib.nestedProperty(fullLayout, scene.id + '.camera');\n      cameraFullNP.set(cameraData);\n    }\n    if (aspectChanged) {\n      aspectNestedProp.set(aspectData);\n      var aspectFullNP = Lib.nestedProperty(fullLayout, scene.id + '.aspectratio');\n      aspectFullNP.set(aspectData);\n      scene.glplot.redraw();\n    }\n  }\n  return hasChanged;\n};\nproto.updateFx = function (dragmode, hovermode) {\n  var scene = this;\n  var camera = scene.camera;\n  if (camera) {\n    // rotate and orbital are synonymous\n    if (dragmode === 'orbit') {\n      camera.mode = 'orbit';\n      camera.keyBindingMode = 'rotate';\n    } else if (dragmode === 'turntable') {\n      camera.up = [0, 0, 1];\n      camera.mode = 'turntable';\n      camera.keyBindingMode = 'rotate';\n\n      // The setter for camera.mode animates the transition to z-up,\n      // but only if we *don't* explicitly set z-up earlier via the\n      // relayout. So push `up` back to layout & fullLayout manually now.\n      var gd = scene.graphDiv;\n      var fullLayout = gd._fullLayout;\n      var fullCamera = scene.fullSceneLayout.camera;\n      var x = fullCamera.up.x;\n      var y = fullCamera.up.y;\n      var z = fullCamera.up.z;\n      // only push `up` back to (full)layout if it's going to change\n      if (z / Math.sqrt(x * x + y * y + z * z) < 0.999) {\n        var attr = scene.id + '.camera.up';\n        var zUp = {\n          x: 0,\n          y: 0,\n          z: 1\n        };\n        var edits = {};\n        edits[attr] = zUp;\n        var layout = gd.layout;\n        Registry.call('_storeDirectGUIEdit', layout, fullLayout._preGUI, edits);\n        fullCamera.up = zUp;\n        Lib.nestedProperty(layout, attr).set(zUp);\n      }\n    } else {\n      // none rotation modes [pan or zoom]\n      camera.keyBindingMode = dragmode;\n    }\n  }\n\n  // to put dragmode and hovermode on the same grounds from relayout\n  scene.fullSceneLayout.hovermode = hovermode;\n};\nfunction flipPixels(pixels, w, h) {\n  for (var i = 0, q = h - 1; i < q; ++i, --q) {\n    for (var j = 0; j < w; ++j) {\n      for (var k = 0; k < 4; ++k) {\n        var a = 4 * (w * i + j) + k;\n        var b = 4 * (w * q + j) + k;\n        var tmp = pixels[a];\n        pixels[a] = pixels[b];\n        pixels[b] = tmp;\n      }\n    }\n  }\n}\nfunction correctRGB(pixels, w, h) {\n  for (var i = 0; i < h; ++i) {\n    for (var j = 0; j < w; ++j) {\n      var k = 4 * (w * i + j);\n      var a = pixels[k + 3]; // alpha\n      if (a > 0) {\n        var q = 255 / a;\n        for (var l = 0; l < 3; ++l) {\n          // RGB\n          pixels[k + l] = Math.min(q * pixels[k + l], 255);\n        }\n      }\n    }\n  }\n}\nproto.toImage = function (format) {\n  var scene = this;\n  if (!format) format = 'png';\n  if (scene.staticMode) scene.container.appendChild(STATIC_CANVAS);\n\n  // Force redraw\n  scene.glplot.redraw();\n\n  // Grab context and yank out pixels\n  var gl = scene.glplot.gl;\n  var w = gl.drawingBufferWidth;\n  var h = gl.drawingBufferHeight;\n  gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n  var pixels = new Uint8Array(w * h * 4);\n  gl.readPixels(0, 0, w, h, gl.RGBA, gl.UNSIGNED_BYTE, pixels);\n  flipPixels(pixels, w, h);\n  correctRGB(pixels, w, h);\n  var canvas = document.createElement('canvas');\n  canvas.width = w;\n  canvas.height = h;\n  var context = canvas.getContext('2d', {\n    willReadFrequently: true\n  });\n  var imageData = context.createImageData(w, h);\n  imageData.data.set(pixels);\n  context.putImageData(imageData, 0, 0);\n  var dataURL;\n  switch (format) {\n    case 'jpeg':\n      dataURL = canvas.toDataURL('image/jpeg');\n      break;\n    case 'webp':\n      dataURL = canvas.toDataURL('image/webp');\n      break;\n    default:\n      dataURL = canvas.toDataURL('image/png');\n  }\n  if (scene.staticMode) scene.container.removeChild(STATIC_CANVAS);\n  return dataURL;\n};\nproto.setConvert = function () {\n  var scene = this;\n  for (var i = 0; i < 3; i++) {\n    var ax = scene.fullSceneLayout[axisProperties[i]];\n    Axes.setConvert(ax, scene.fullLayout);\n    ax.setScale = Lib.noop;\n  }\n};\nproto.make4thDimension = function () {\n  var scene = this;\n  var gd = scene.graphDiv;\n  var fullLayout = gd._fullLayout;\n\n  // mock axis for hover formatting\n  scene._mockAxis = {\n    type: 'linear',\n    showexponent: 'all',\n    exponentformat: 'B'\n  };\n  Axes.setConvert(scene._mockAxis, fullLayout);\n};\nmodule.exports = Scene;\n\n/***/ }),\n\n/***/ 90060:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function zip3(x, y, z, len) {\n  len = len || x.length;\n  var result = new Array(len);\n  for (var i = 0; i < len; i++) {\n    result[i] = [x[i], y[i], z[i]];\n  }\n  return result;\n};\n\n/***/ }),\n\n/***/ 10820:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1753181__) {\n\n\"use strict\";\n\n\nvar fontAttrs = __nested_webpack_require_1753181__(41940);\nvar animationAttrs = __nested_webpack_require_1753181__(85594);\nvar colorAttrs = __nested_webpack_require_1753181__(22399);\nvar drawNewShapeAttrs = __nested_webpack_require_1753181__(29241);\nvar drawNewSelectionAttrs = __nested_webpack_require_1753181__(53777);\nvar padAttrs = __nested_webpack_require_1753181__(35025);\nvar extendFlat = (__nested_webpack_require_1753181__(1426).extendFlat);\nvar globalFont = fontAttrs({\n  editType: 'calc'\n});\nglobalFont.family.dflt = '\"Open Sans\", verdana, arial, sans-serif';\nglobalFont.size.dflt = 12;\nglobalFont.color.dflt = colorAttrs.defaultLine;\nmodule.exports = {\n  font: globalFont,\n  title: {\n    text: {\n      valType: 'string',\n      editType: 'layoutstyle'\n    },\n    font: fontAttrs({\n      editType: 'layoutstyle'\n    }),\n    xref: {\n      valType: 'enumerated',\n      dflt: 'container',\n      values: ['container', 'paper'],\n      editType: 'layoutstyle'\n    },\n    yref: {\n      valType: 'enumerated',\n      dflt: 'container',\n      values: ['container', 'paper'],\n      editType: 'layoutstyle'\n    },\n    x: {\n      valType: 'number',\n      min: 0,\n      max: 1,\n      dflt: 0.5,\n      editType: 'layoutstyle'\n    },\n    y: {\n      valType: 'number',\n      min: 0,\n      max: 1,\n      dflt: 'auto',\n      editType: 'layoutstyle'\n    },\n    xanchor: {\n      valType: 'enumerated',\n      dflt: 'auto',\n      values: ['auto', 'left', 'center', 'right'],\n      editType: 'layoutstyle'\n    },\n    yanchor: {\n      valType: 'enumerated',\n      dflt: 'auto',\n      values: ['auto', 'top', 'middle', 'bottom'],\n      editType: 'layoutstyle'\n    },\n    pad: extendFlat(padAttrs({\n      editType: 'layoutstyle'\n    }), {}),\n    editType: 'layoutstyle'\n  },\n  uniformtext: {\n    mode: {\n      valType: 'enumerated',\n      values: [false, 'hide', 'show'],\n      dflt: false,\n      editType: 'plot'\n    },\n    minsize: {\n      valType: 'number',\n      min: 0,\n      dflt: 0,\n      editType: 'plot'\n    },\n    editType: 'plot'\n  },\n  autosize: {\n    valType: 'boolean',\n    dflt: false,\n    // autosize, width, and height get special editType treatment in _relayout\n    // so we can handle noop resizes more efficiently\n    editType: 'none'\n  },\n  width: {\n    valType: 'number',\n    min: 10,\n    dflt: 700,\n    editType: 'plot'\n  },\n  height: {\n    valType: 'number',\n    min: 10,\n    dflt: 450,\n    editType: 'plot'\n  },\n  minreducedwidth: {\n    valType: 'number',\n    min: 2,\n    dflt: 64,\n    editType: 'plot'\n  },\n  minreducedheight: {\n    valType: 'number',\n    min: 2,\n    dflt: 64,\n    editType: 'plot'\n  },\n  margin: {\n    l: {\n      valType: 'number',\n      min: 0,\n      dflt: 80,\n      editType: 'plot'\n    },\n    r: {\n      valType: 'number',\n      min: 0,\n      dflt: 80,\n      editType: 'plot'\n    },\n    t: {\n      valType: 'number',\n      min: 0,\n      dflt: 100,\n      editType: 'plot'\n    },\n    b: {\n      valType: 'number',\n      min: 0,\n      dflt: 80,\n      editType: 'plot'\n    },\n    pad: {\n      valType: 'number',\n      min: 0,\n      dflt: 0,\n      editType: 'plot'\n    },\n    autoexpand: {\n      valType: 'boolean',\n      dflt: true,\n      editType: 'plot'\n    },\n    editType: 'plot'\n  },\n  computed: {\n    valType: 'any',\n    editType: 'none'\n  },\n  paper_bgcolor: {\n    valType: 'color',\n    dflt: colorAttrs.background,\n    editType: 'plot'\n  },\n  plot_bgcolor: {\n    // defined here, but set in cartesian.supplyLayoutDefaults\n    // because it needs to know if there are (2D) axes or not\n    valType: 'color',\n    dflt: colorAttrs.background,\n    editType: 'layoutstyle'\n  },\n  autotypenumbers: {\n    valType: 'enumerated',\n    values: ['convert types', 'strict'],\n    dflt: 'convert types',\n    editType: 'calc'\n  },\n  separators: {\n    valType: 'string',\n    editType: 'plot'\n  },\n  hidesources: {\n    valType: 'boolean',\n    dflt: false,\n    editType: 'plot'\n  },\n  showlegend: {\n    // handled in legend.supplyLayoutDefaults\n    // but included here because it's not in the legend object\n    valType: 'boolean',\n    editType: 'legend'\n  },\n  colorway: {\n    valType: 'colorlist',\n    dflt: colorAttrs.defaults,\n    editType: 'calc'\n  },\n  datarevision: {\n    valType: 'any',\n    editType: 'calc'\n  },\n  uirevision: {\n    valType: 'any',\n    editType: 'none'\n  },\n  editrevision: {\n    valType: 'any',\n    editType: 'none'\n  },\n  selectionrevision: {\n    valType: 'any',\n    editType: 'none'\n  },\n  template: {\n    valType: 'any',\n    editType: 'calc'\n  },\n  newshape: drawNewShapeAttrs.newshape,\n  activeshape: drawNewShapeAttrs.activeshape,\n  newselection: drawNewSelectionAttrs.newselection,\n  activeselection: drawNewSelectionAttrs.activeselection,\n  meta: {\n    valType: 'any',\n    arrayOk: true,\n    editType: 'plot'\n  },\n  transition: extendFlat({}, animationAttrs.transition, {\n    editType: 'none'\n  }),\n  _deprecated: {\n    title: {\n      valType: 'string',\n      editType: 'layoutstyle'\n    },\n    titlefont: fontAttrs({\n      editType: 'layoutstyle'\n    })\n  }\n};\n\n/***/ }),\n\n/***/ 77734:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1758200__) {\n\n\"use strict\";\n\n\nvar sortObjectKeys = __nested_webpack_require_1758200__(78607);\nvar requiredVersion = '1.10.1';\nvar OSM = '© <a target=\"_blank\" href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors';\nvar carto = ['© <a target=\"_blank\" href=\"https://carto.com/\">Carto</a>', OSM].join(' ');\nvar stamenTerrainOrToner = ['Map tiles by <a target=\"_blank\" href=\"https://stamen.com\">Stamen Design</a>', 'under <a target=\"_blank\" href=\"https://creativecommons.org/licenses/by/3.0\">CC BY 3.0</a>', '|', 'Data by <a target=\"_blank\" href=\"https://openstreetmap.org\">OpenStreetMap</a> contributors', 'under <a target=\"_blank\" href=\"https://www.openstreetmap.org/copyright\">ODbL</a>'].join(' ');\nvar stamenWaterColor = ['Map tiles by <a target=\"_blank\" href=\"https://stamen.com\">Stamen Design</a>', 'under <a target=\"_blank\" href=\"https://creativecommons.org/licenses/by/3.0\">CC BY 3.0</a>', '|', 'Data by <a target=\"_blank\" href=\"https://openstreetmap.org\">OpenStreetMap</a> contributors', 'under <a target=\"_blank\" href=\"https://creativecommons.org/licenses/by-sa/3.0\">CC BY SA</a>'].join(' ');\nvar stylesNonMapbox = {\n  'open-street-map': {\n    id: 'osm',\n    version: 8,\n    sources: {\n      'plotly-osm-tiles': {\n        type: 'raster',\n        attribution: OSM,\n        tiles: ['https://a.tile.openstreetmap.org/{z}/{x}/{y}.png', 'https://b.tile.openstreetmap.org/{z}/{x}/{y}.png'],\n        tileSize: 256\n      }\n    },\n    layers: [{\n      id: 'plotly-osm-tiles',\n      type: 'raster',\n      source: 'plotly-osm-tiles',\n      minzoom: 0,\n      maxzoom: 22\n    }]\n  },\n  'white-bg': {\n    id: 'white-bg',\n    version: 8,\n    sources: {},\n    layers: [{\n      id: 'white-bg',\n      type: 'background',\n      paint: {\n        'background-color': '#FFFFFF'\n      },\n      minzoom: 0,\n      maxzoom: 22\n    }]\n  },\n  'carto-positron': {\n    id: 'carto-positron',\n    version: 8,\n    sources: {\n      'plotly-carto-positron': {\n        type: 'raster',\n        attribution: carto,\n        tiles: ['https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png'],\n        tileSize: 256\n      }\n    },\n    layers: [{\n      id: 'plotly-carto-positron',\n      type: 'raster',\n      source: 'plotly-carto-positron',\n      minzoom: 0,\n      maxzoom: 22\n    }]\n  },\n  'carto-darkmatter': {\n    id: 'carto-darkmatter',\n    version: 8,\n    sources: {\n      'plotly-carto-darkmatter': {\n        type: 'raster',\n        attribution: carto,\n        tiles: ['https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png'],\n        tileSize: 256\n      }\n    },\n    layers: [{\n      id: 'plotly-carto-darkmatter',\n      type: 'raster',\n      source: 'plotly-carto-darkmatter',\n      minzoom: 0,\n      maxzoom: 22\n    }]\n  },\n  'stamen-terrain': {\n    id: 'stamen-terrain',\n    version: 8,\n    sources: {\n      'plotly-stamen-terrain': {\n        type: 'raster',\n        attribution: stamenTerrainOrToner,\n        tiles: ['https://stamen-tiles.a.ssl.fastly.net/terrain/{z}/{x}/{y}.png'],\n        tileSize: 256\n      }\n    },\n    layers: [{\n      id: 'plotly-stamen-terrain',\n      type: 'raster',\n      source: 'plotly-stamen-terrain',\n      minzoom: 0,\n      maxzoom: 22\n    }]\n  },\n  'stamen-toner': {\n    id: 'stamen-toner',\n    version: 8,\n    sources: {\n      'plotly-stamen-toner': {\n        type: 'raster',\n        attribution: stamenTerrainOrToner,\n        tiles: ['https://stamen-tiles.a.ssl.fastly.net/toner/{z}/{x}/{y}.png'],\n        tileSize: 256\n      }\n    },\n    layers: [{\n      id: 'plotly-stamen-toner',\n      type: 'raster',\n      source: 'plotly-stamen-toner',\n      minzoom: 0,\n      maxzoom: 22\n    }]\n  },\n  'stamen-watercolor': {\n    id: 'stamen-watercolor',\n    version: 8,\n    sources: {\n      'plotly-stamen-watercolor': {\n        type: 'raster',\n        attribution: stamenWaterColor,\n        tiles: ['https://stamen-tiles.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png'],\n        tileSize: 256\n      }\n    },\n    layers: [{\n      id: 'plotly-stamen-watercolor',\n      type: 'raster',\n      source: 'plotly-stamen-watercolor',\n      minzoom: 0,\n      maxzoom: 22\n    }]\n  }\n};\nvar styleValuesNonMapbox = sortObjectKeys(stylesNonMapbox);\nmodule.exports = {\n  requiredVersion: requiredVersion,\n  styleUrlPrefix: 'mapbox://styles/mapbox/',\n  styleUrlSuffix: 'v9',\n  styleValuesMapbox: ['basic', 'streets', 'outdoors', 'light', 'dark', 'satellite', 'satellite-streets'],\n  styleValueDflt: 'basic',\n  stylesNonMapbox: stylesNonMapbox,\n  styleValuesNonMapbox: styleValuesNonMapbox,\n  traceLayerPrefix: 'plotly-trace-layer-',\n  layoutLayerPrefix: 'plotly-layout-layer-',\n  wrongVersionErrorMsg: ['Your custom plotly.js bundle is not using the correct mapbox-gl version', 'Please install mapbox-gl@' + requiredVersion + '.'].join('\\n'),\n  noAccessTokenErrorMsg: ['Missing Mapbox access token.', 'Mapbox trace type require a Mapbox access token to be registered.', 'For example:', '  Plotly.newPlot(gd, data, layout, { mapboxAccessToken: \\'my-access-token\\' });', 'More info here: https://www.mapbox.com/help/define-access-token/'].join('\\n'),\n  missingStyleErrorMsg: ['No valid mapbox style found, please set `mapbox.style` to one of:', styleValuesNonMapbox.join(', '), 'or register a Mapbox access token to use a Mapbox-served style.'].join('\\n'),\n  multipleTokensErrorMsg: ['Set multiple mapbox access token across different mapbox subplot,', 'using first token found as mapbox-gl does not allow multiple' + 'access tokens on the same page.'].join('\\n'),\n  mapOnErrorMsg: 'Mapbox error.',\n  // Mapbox logo for static export\n  mapboxLogo: {\n    path0: 'm 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z',\n    path1: 'M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z',\n    path2: 'M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z',\n    polygon: '11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34'\n  },\n  // a subset of node_modules/mapbox-gl/dist/mapbox-gl.css\n  styleRules: {\n    map: 'overflow:hidden;position:relative;',\n    'missing-css': 'display:none;',\n    'canary': 'background-color:salmon;',\n    // Reusing CSS directives from: https://api.tiles.mapbox.com/mapbox-gl-js/v1.1.1/mapbox-gl.css\n    'ctrl-bottom-left': 'position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;',\n    'ctrl-bottom-right': 'position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;',\n    'ctrl': 'clear: both; pointer-events: auto; transform: translate(0, 0);',\n    // Compact ctrl\n    'ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner': 'display: none;',\n    'ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner': 'display: block; margin-top:2px',\n    'ctrl-attrib.mapboxgl-compact:hover': 'padding: 2px 24px 2px 4px; visibility: visible; margin-top: 6px;',\n    'ctrl-attrib.mapboxgl-compact::after': 'content: \"\"; cursor: pointer; position: absolute; background-image: url(\\'data:image/svg+xml;charset=utf-8,%3Csvg viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"%3E %3Cpath fill=\"%23333333\" fill-rule=\"evenodd\" d=\"M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0\"/%3E %3C/svg%3E\\'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;',\n    'ctrl-attrib.mapboxgl-compact': 'min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;',\n    'ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact::after': 'bottom: 0; right: 0',\n    'ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after': 'bottom: 0; left: 0',\n    'ctrl-bottom-left .mapboxgl-ctrl': 'margin: 0 0 10px 10px; float: left;',\n    'ctrl-bottom-right .mapboxgl-ctrl': 'margin: 0 10px 10px 0; float: right;',\n    'ctrl-attrib': 'color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px',\n    'ctrl-attrib a': 'color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px',\n    'ctrl-attrib a:hover': 'color: inherit; text-decoration: underline;',\n    'ctrl-attrib .mapbox-improve-map': 'font-weight: bold; margin-left: 2px;',\n    'attrib-empty': 'display: none;',\n    // Compact Mapbox logo without text\n    'ctrl-logo': 'display:block; width: 21px; height: 21px; background-image: url(\\'data:image/svg+xml;charset=utf-8,%3C?xml version=\"1.0\" encoding=\"utf-8\"?%3E %3Csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 21 21\" style=\"enable-background:new 0 0 21 21;\" xml:space=\"preserve\"%3E%3Cg transform=\"translate(0,0.01)\"%3E%3Cpath d=\"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z\" style=\"opacity:0.9;fill:%23ffffff;enable-background:new\" class=\"st0\"/%3E%3Cpath d=\"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z\" style=\"opacity:0.35;enable-background:new\" class=\"st1\"/%3E%3Cpath d=\"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z\" style=\"opacity:0.35;enable-background:new\" class=\"st1\"/%3E%3Cpolygon points=\"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 \" style=\"opacity:0.9;fill:%23ffffff;enable-background:new\" class=\"st0\"/%3E%3C/g%3E%3C/svg%3E\\')'\n\n    // Mapbox logo WITH text below (commented out for now)\n    // 'ctrl-logo': 'width: 85px; height: 21px; margin: 0 0 -3px -3px; display: block; background-repeat: no-repeat; cursor: pointer; background-image: url(\\'data:image/svg+xml;charset=utf-8,%3C?xml version=\"1.0\" encoding=\"utf-8\"?%3E%3Csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 84.49 21\" style=\"enable-background:new 0 0 84.49 21;\" xml:space=\"preserve\"%3E%3Cg%3E %3Cpath class=\"st0\" style=\"opacity:0.9; fill: %23FFFFFF; enable-background: new;\" d=\"M83.25,14.26c0,0.12-0.09,0.21-0.21,0.21h-1.61c-0.13,0-0.24-0.06-0.3-0.17l-1.44-2.39l-1.44,2.39 c-0.06,0.11-0.18,0.17-0.3,0.17h-1.61c-0.04,0-0.08-0.01-0.12-0.03c-0.09-0.06-0.13-0.19-0.06-0.28l0,0l2.43-3.68L76.2,6.84 c-0.02-0.03-0.03-0.07-0.03-0.12c0-0.12,0.09-0.21,0.21-0.21h1.61c0.13,0,0.24,0.06,0.3,0.17l1.41,2.36l1.4-2.35 c0.06-0.11,0.18-0.17,0.3-0.17H83c0.04,0,0.08,0.01,0.12,0.03c0.09,0.06,0.13,0.19,0.06,0.28l0,0l-2.37,3.63l2.43,3.67 C83.24,14.18,83.25,14.22,83.25,14.26z\"/%3E %3Cpath class=\"st0\" style=\"opacity:0.9; fill: %23FFFFFF; enable-background: new;\" d=\"M66.24,9.59c-0.39-1.88-1.96-3.28-3.84-3.28c-1.03,0-2.03,0.42-2.73,1.18V3.51c0-0.13-0.1-0.23-0.23-0.23h-1.4 c-0.13,0-0.23,0.11-0.23,0.23v10.72c0,0.13,0.1,0.23,0.23,0.23h1.4c0.13,0,0.23-0.11,0.23-0.23V13.5c0.71,0.75,1.7,1.18,2.73,1.18 c1.88,0,3.45-1.41,3.84-3.29C66.37,10.79,66.37,10.18,66.24,9.59L66.24,9.59z M62.08,13c-1.32,0-2.39-1.11-2.41-2.48v-0.06 c0.02-1.38,1.09-2.48,2.41-2.48s2.42,1.12,2.42,2.51S63.41,13,62.08,13z\"/%3E %3Cpath class=\"st0\" style=\"opacity:0.9; fill: %23FFFFFF; enable-background: new;\" d=\"M71.67,6.32c-1.98-0.01-3.72,1.35-4.16,3.29c-0.13,0.59-0.13,1.19,0,1.77c0.44,1.94,2.17,3.32,4.17,3.3 c2.35,0,4.26-1.87,4.26-4.19S74.04,6.32,71.67,6.32z M71.65,13.01c-1.33,0-2.42-1.12-2.42-2.51s1.08-2.52,2.42-2.52 c1.33,0,2.42,1.12,2.42,2.51S72.99,13,71.65,13.01L71.65,13.01z\"/%3E %3Cpath class=\"st1\" style=\"opacity:0.35; enable-background:new;\" d=\"M62.08,7.98c-1.32,0-2.39,1.11-2.41,2.48v0.06C59.68,11.9,60.75,13,62.08,13s2.42-1.12,2.42-2.51 S63.41,7.98,62.08,7.98z M62.08,11.76c-0.63,0-1.14-0.56-1.17-1.25v-0.04c0.01-0.69,0.54-1.25,1.17-1.25 c0.63,0,1.17,0.57,1.17,1.27C63.24,11.2,62.73,11.76,62.08,11.76z\"/%3E %3Cpath class=\"st1\" style=\"opacity:0.35; enable-background:new;\" d=\"M71.65,7.98c-1.33,0-2.42,1.12-2.42,2.51S70.32,13,71.65,13s2.42-1.12,2.42-2.51S72.99,7.98,71.65,7.98z M71.65,11.76c-0.64,0-1.17-0.57-1.17-1.27c0-0.7,0.53-1.26,1.17-1.26s1.17,0.57,1.17,1.27C72.82,11.21,72.29,11.76,71.65,11.76z\"/%3E %3Cpath class=\"st0\" style=\"opacity:0.9; fill: %23FFFFFF; enable-background: new;\" d=\"M45.74,6.53h-1.4c-0.13,0-0.23,0.11-0.23,0.23v0.73c-0.71-0.75-1.7-1.18-2.73-1.18 c-2.17,0-3.94,1.87-3.94,4.19s1.77,4.19,3.94,4.19c1.04,0,2.03-0.43,2.73-1.19v0.73c0,0.13,0.1,0.23,0.23,0.23h1.4 c0.13,0,0.23-0.11,0.23-0.23V6.74c0-0.12-0.09-0.22-0.22-0.22C45.75,6.53,45.75,6.53,45.74,6.53z M44.12,10.53 C44.11,11.9,43.03,13,41.71,13s-2.42-1.12-2.42-2.51s1.08-2.52,2.4-2.52c1.33,0,2.39,1.11,2.41,2.48L44.12,10.53z\"/%3E %3Cpath class=\"st1\" style=\"opacity:0.35; enable-background:new;\" d=\"M41.71,7.98c-1.33,0-2.42,1.12-2.42,2.51S40.37,13,41.71,13s2.39-1.11,2.41-2.48v-0.06 C44.1,9.09,43.03,7.98,41.71,7.98z M40.55,10.49c0-0.7,0.52-1.27,1.17-1.27c0.64,0,1.14,0.56,1.17,1.25v0.04 c-0.01,0.68-0.53,1.24-1.17,1.24C41.08,11.75,40.55,11.19,40.55,10.49z\"/%3E %3Cpath class=\"st0\" style=\"opacity:0.9; fill: %23FFFFFF; enable-background: new;\" d=\"M52.41,6.32c-1.03,0-2.03,0.42-2.73,1.18V6.75c0-0.13-0.1-0.23-0.23-0.23h-1.4c-0.13,0-0.23,0.11-0.23,0.23 v10.72c0,0.13,0.1,0.23,0.23,0.23h1.4c0.13,0,0.23-0.1,0.23-0.23V13.5c0.71,0.75,1.7,1.18,2.74,1.18c2.17,0,3.94-1.87,3.94-4.19 S54.58,6.32,52.41,6.32z M52.08,13.01c-1.32,0-2.39-1.11-2.42-2.48v-0.07c0.02-1.38,1.09-2.49,2.4-2.49c1.32,0,2.41,1.12,2.41,2.51 S53.4,13,52.08,13.01L52.08,13.01z\"/%3E %3Cpath class=\"st1\" style=\"opacity:0.35; enable-background:new;\" d=\"M52.08,7.98c-1.32,0-2.39,1.11-2.42,2.48v0.06c0.03,1.38,1.1,2.48,2.42,2.48s2.41-1.12,2.41-2.51 S53.4,7.98,52.08,7.98z M52.08,11.76c-0.63,0-1.14-0.56-1.17-1.25v-0.04c0.01-0.69,0.54-1.25,1.17-1.25c0.63,0,1.17,0.58,1.17,1.27 S52.72,11.76,52.08,11.76z\"/%3E %3Cpath class=\"st0\" style=\"opacity:0.9; fill: %23FFFFFF; enable-background: new;\" d=\"M36.08,14.24c0,0.13-0.1,0.23-0.23,0.23h-1.41c-0.13,0-0.23-0.11-0.23-0.23V9.68c0-0.98-0.74-1.71-1.62-1.71 c-0.8,0-1.46,0.7-1.59,1.62l0.01,4.66c0,0.13-0.11,0.23-0.23,0.23h-1.41c-0.13,0-0.23-0.11-0.23-0.23V9.68 c0-0.98-0.74-1.71-1.62-1.71c-0.85,0-1.54,0.79-1.6,1.8v4.48c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.11-0.23-0.23V6.74 c0.01-0.13,0.1-0.22,0.23-0.22h1.4c0.13,0,0.22,0.11,0.23,0.22V7.4c0.5-0.68,1.3-1.09,2.16-1.1h0.03c1.09,0,2.09,0.6,2.6,1.55 c0.45-0.95,1.4-1.55,2.44-1.56c1.62,0,2.93,1.25,2.9,2.78L36.08,14.24z\"/%3E %3Cpath class=\"st1\" style=\"opacity:0.35; enable-background:new;\" d=\"M84.34,13.59l-0.07-0.13l-1.96-2.99l1.94-2.95c0.44-0.67,0.26-1.56-0.41-2.02c-0.02,0-0.03,0-0.04-0.01 c-0.23-0.15-0.5-0.22-0.78-0.22h-1.61c-0.56,0-1.08,0.29-1.37,0.78L79.72,6.6l-0.34-0.56C79.09,5.56,78.57,5.27,78,5.27h-1.6 c-0.6,0-1.13,0.37-1.35,0.92c-2.19-1.66-5.28-1.47-7.26,0.45c-0.35,0.34-0.65,0.72-0.89,1.14c-0.9-1.62-2.58-2.72-4.5-2.72 c-0.5,0-1.01,0.07-1.48,0.23V3.51c0-0.82-0.66-1.48-1.47-1.48h-1.4c-0.81,0-1.47,0.66-1.47,1.47v3.75 c-0.95-1.36-2.5-2.18-4.17-2.19c-0.74,0-1.46,0.16-2.12,0.47c-0.24-0.17-0.54-0.26-0.84-0.26h-1.4c-0.45,0-0.87,0.21-1.15,0.56 c-0.02-0.03-0.04-0.05-0.07-0.08c-0.28-0.3-0.68-0.47-1.09-0.47h-1.39c-0.3,0-0.6,0.09-0.84,0.26c-0.67-0.3-1.39-0.46-2.12-0.46 c-1.83,0-3.43,1-4.37,2.5c-0.2-0.46-0.48-0.89-0.83-1.25c-0.8-0.81-1.89-1.25-3.02-1.25h-0.01c-0.89,0.01-1.75,0.33-2.46,0.88 c-0.74-0.57-1.64-0.88-2.57-0.88H28.1c-0.29,0-0.58,0.03-0.86,0.11c-0.28,0.06-0.56,0.16-0.82,0.28c-0.21-0.12-0.45-0.18-0.7-0.18 h-1.4c-0.82,0-1.47,0.66-1.47,1.47v7.5c0,0.82,0.66,1.47,1.47,1.47h1.4c0.82,0,1.48-0.66,1.48-1.48l0,0V9.79 c0.03-0.36,0.23-0.59,0.36-0.59c0.18,0,0.38,0.18,0.38,0.47v4.57c0,0.82,0.66,1.47,1.47,1.47h1.41c0.82,0,1.47-0.66,1.47-1.47 l-0.01-4.57c0.06-0.32,0.25-0.47,0.35-0.47c0.18,0,0.38,0.18,0.38,0.47v4.57c0,0.82,0.66,1.47,1.47,1.47h1.41 c0.82,0,1.47-0.66,1.47-1.47v-0.38c0.96,1.29,2.46,2.06,4.06,2.06c0.74,0,1.46-0.16,2.12-0.47c0.24,0.17,0.54,0.26,0.84,0.26h1.39 c0.3,0,0.6-0.09,0.84-0.26v2.01c0,0.82,0.66,1.47,1.47,1.47h1.4c0.82,0,1.47-0.66,1.47-1.47v-1.77c0.48,0.15,0.99,0.23,1.49,0.22 c1.7,0,3.22-0.87,4.17-2.2v0.52c0,0.82,0.66,1.47,1.47,1.47h1.4c0.3,0,0.6-0.09,0.84-0.26c0.66,0.31,1.39,0.47,2.12,0.47 c1.92,0,3.6-1.1,4.49-2.73c1.54,2.65,4.95,3.53,7.58,1.98c0.18-0.11,0.36-0.22,0.53-0.36c0.22,0.55,0.76,0.91,1.35,0.9H78 c0.56,0,1.08-0.29,1.37-0.78l0.37-0.61l0.37,0.61c0.29,0.48,0.81,0.78,1.38,0.78h1.6c0.81,0,1.46-0.66,1.45-1.46 C84.49,14.02,84.44,13.8,84.34,13.59L84.34,13.59z M35.86,14.47h-1.41c-0.13,0-0.23-0.11-0.23-0.23V9.68 c0-0.98-0.74-1.71-1.62-1.71c-0.8,0-1.46,0.7-1.59,1.62l0.01,4.66c0,0.13-0.1,0.23-0.23,0.23h-1.41c-0.13,0-0.23-0.11-0.23-0.23 V9.68c0-0.98-0.74-1.71-1.62-1.71c-0.85,0-1.54,0.79-1.6,1.8v4.48c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.11-0.23-0.23 V6.74c0.01-0.13,0.11-0.22,0.23-0.22h1.4c0.13,0,0.22,0.11,0.23,0.22V7.4c0.5-0.68,1.3-1.09,2.16-1.1h0.03 c1.09,0,2.09,0.6,2.6,1.55c0.45-0.95,1.4-1.55,2.44-1.56c1.62,0,2.93,1.25,2.9,2.78l0.01,5.16C36.09,14.36,35.98,14.46,35.86,14.47 L35.86,14.47z M45.97,14.24c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.11-0.23-0.23V13.5c-0.7,0.76-1.69,1.18-2.72,1.18 c-2.17,0-3.94-1.87-3.94-4.19s1.77-4.19,3.94-4.19c1.03,0,2.02,0.43,2.73,1.18V6.74c0-0.13,0.1-0.23,0.23-0.23h1.4 c0.12-0.01,0.22,0.08,0.23,0.21c0,0.01,0,0.01,0,0.02v7.51h-0.01V14.24z M52.41,14.67c-1.03,0-2.02-0.43-2.73-1.18v3.97 c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.1-0.23-0.23V6.75c0-0.13,0.1-0.22,0.23-0.22h1.4c0.13,0,0.23,0.11,0.23,0.23v0.73 c0.71-0.76,1.7-1.18,2.73-1.18c2.17,0,3.94,1.86,3.94,4.18S54.58,14.67,52.41,14.67z M66.24,11.39c-0.39,1.87-1.96,3.29-3.84,3.29 c-1.03,0-2.02-0.43-2.73-1.18v0.73c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.11-0.23-0.23V3.51c0-0.13,0.1-0.23,0.23-0.23 h1.4c0.13,0,0.23,0.11,0.23,0.23v3.97c0.71-0.75,1.7-1.18,2.73-1.17c1.88,0,3.45,1.4,3.84,3.28C66.37,10.19,66.37,10.8,66.24,11.39 L66.24,11.39L66.24,11.39z M71.67,14.68c-2,0.01-3.73-1.35-4.17-3.3c-0.13-0.59-0.13-1.19,0-1.77c0.44-1.94,2.17-3.31,4.17-3.3 c2.36,0,4.26,1.87,4.26,4.19S74.03,14.68,71.67,14.68L71.67,14.68z M83.04,14.47h-1.61c-0.13,0-0.24-0.06-0.3-0.17l-1.44-2.39 l-1.44,2.39c-0.06,0.11-0.18,0.17-0.3,0.17h-1.61c-0.04,0-0.08-0.01-0.12-0.03c-0.09-0.06-0.13-0.19-0.06-0.28l0,0l2.43-3.68 L76.2,6.84c-0.02-0.03-0.03-0.07-0.03-0.12c0-0.12,0.09-0.21,0.21-0.21h1.61c0.13,0,0.24,0.06,0.3,0.17l1.41,2.36l1.41-2.36 c0.06-0.11,0.18-0.17,0.3-0.17h1.61c0.04,0,0.08,0.01,0.12,0.03c0.09,0.06,0.13,0.19,0.06,0.28l0,0l-2.38,3.64l2.43,3.67 c0.02,0.03,0.03,0.07,0.03,0.12C83.25,14.38,83.16,14.47,83.04,14.47L83.04,14.47L83.04,14.47z\"/%3E %3Cpath class=\"st0\" style=\"opacity:0.9; fill: %23FFFFFF; enable-background: new;\" d=\"M10.5,1.24c-5.11,0-9.25,4.15-9.25,9.25s4.15,9.25,9.25,9.25s9.25-4.15,9.25-9.25 C19.75,5.38,15.61,1.24,10.5,1.24z M14.89,12.77c-1.93,1.93-4.78,2.31-6.7,2.31c-0.7,0-1.41-0.05-2.1-0.16c0,0-1.02-5.64,2.14-8.81 c0.83-0.83,1.95-1.28,3.13-1.28c1.27,0,2.49,0.51,3.39,1.42C16.59,8.09,16.64,11,14.89,12.77z\"/%3E %3Cpath class=\"st1\" style=\"opacity:0.35; enable-background:new;\" d=\"M10.5-0.01C4.7-0.01,0,4.7,0,10.49s4.7,10.5,10.5,10.5S21,16.29,21,10.49C20.99,4.7,16.3-0.01,10.5-0.01z M10.5,19.74c-5.11,0-9.25-4.15-9.25-9.25s4.14-9.26,9.25-9.26s9.25,4.15,9.25,9.25C19.75,15.61,15.61,19.74,10.5,19.74z\"/%3E %3Cpath class=\"st1\" style=\"opacity:0.35; enable-background:new;\" d=\"M14.74,6.25C12.9,4.41,9.98,4.35,8.23,6.1c-3.16,3.17-2.14,8.81-2.14,8.81s5.64,1.02,8.81-2.14 C16.64,11,16.59,8.09,14.74,6.25z M12.47,10.34l-0.91,1.87l-0.9-1.87L8.8,9.43l1.86-0.9l0.9-1.87l0.91,1.87l1.86,0.9L12.47,10.34z\"/%3E %3Cpolygon class=\"st0\" style=\"opacity:0.9; fill: %23FFFFFF; enable-background: new;\" points=\"14.33,9.43 12.47,10.34 11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 \"/%3E%3C/g%3E%3C/svg%3E\\');'\n  }\n};\n\n/***/ }),\n\n/***/ 13056:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1778888__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_1778888__(71828);\n\n/**\n * Convert plotly.js 'textposition' to mapbox-gl 'anchor' and 'offset'\n * (with the help of the icon size).\n *\n * @param {string} textpostion : plotly.js textposition value\n * @param {number} iconSize : plotly.js icon size (e.g. marker.size for traces)\n *\n * @return {object}\n *      - anchor\n *      - offset\n */\nmodule.exports = function convertTextOpts(textposition, iconSize) {\n  var parts = textposition.split(' ');\n  var vPos = parts[0];\n  var hPos = parts[1];\n\n  // ballpack values\n  var factor = Lib.isArrayOrTypedArray(iconSize) ? Lib.mean(iconSize) : iconSize;\n  var xInc = 0.5 + factor / 100;\n  var yInc = 1.5 + factor / 100;\n  var anchorVals = ['', ''];\n  var offset = [0, 0];\n  switch (vPos) {\n    case 'top':\n      anchorVals[0] = 'top';\n      offset[1] = -yInc;\n      break;\n    case 'bottom':\n      anchorVals[0] = 'bottom';\n      offset[1] = yInc;\n      break;\n  }\n  switch (hPos) {\n    case 'left':\n      anchorVals[1] = 'right';\n      offset[0] = -xInc;\n      break;\n    case 'right':\n      anchorVals[1] = 'left';\n      offset[0] = xInc;\n      break;\n  }\n\n  // Mapbox text-anchor must be one of:\n  //  center, left, right, top, bottom,\n  //  top-left, top-right, bottom-left, bottom-right\n\n  var anchor;\n  if (anchorVals[0] && anchorVals[1]) anchor = anchorVals.join('-');else if (anchorVals[0]) anchor = anchorVals[0];else if (anchorVals[1]) anchor = anchorVals[1];else anchor = 'center';\n  return {\n    anchor: anchor,\n    offset: offset\n  };\n};\n\n/***/ }),\n\n/***/ 50101:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_1780514__) {\n\n\"use strict\";\n\n\nvar mapboxgl = __nested_webpack_require_1780514__(44517);\nvar Lib = __nested_webpack_require_1780514__(71828);\nvar strTranslate = Lib.strTranslate;\nvar strScale = Lib.strScale;\nvar getSubplotCalcData = (__nested_webpack_require_1780514__(27659)/* .getSubplotCalcData */ .AU);\nvar xmlnsNamespaces = __nested_webpack_require_1780514__(77922);\nvar d3 = __nested_webpack_require_1780514__(39898);\nvar Drawing = __nested_webpack_require_1780514__(91424);\nvar svgTextUtils = __nested_webpack_require_1780514__(63893);\nvar Mapbox = __nested_webpack_require_1780514__(10481);\nvar MAPBOX = 'mapbox';\nvar constants = exports.constants = __nested_webpack_require_1780514__(77734);\nexports.name = MAPBOX;\nexports.attr = 'subplot';\nexports.idRoot = MAPBOX;\nexports.idRegex = exports.attrRegex = Lib.counterRegex(MAPBOX);\nexports.attributes = {\n  subplot: {\n    valType: 'subplotid',\n    dflt: 'mapbox',\n    editType: 'calc'\n  }\n};\nexports.layoutAttributes = __nested_webpack_require_1780514__(23585);\nexports.supplyLayoutDefaults = __nested_webpack_require_1780514__(77882);\nexports.plot = function plot(gd) {\n  var fullLayout = gd._fullLayout;\n  var calcData = gd.calcdata;\n  var mapboxIds = fullLayout._subplots[MAPBOX];\n  if (mapboxgl.version !== constants.requiredVersion) {\n    throw new Error(constants.wrongVersionErrorMsg);\n  }\n  var accessToken = findAccessToken(gd, mapboxIds);\n  mapboxgl.accessToken = accessToken;\n  for (var i = 0; i < mapboxIds.length; i++) {\n    var id = mapboxIds[i];\n    var subplotCalcData = getSubplotCalcData(calcData, MAPBOX, id);\n    var opts = fullLayout[id];\n    var mapbox = opts._subplot;\n    if (!mapbox) {\n      mapbox = new Mapbox(gd, id);\n      fullLayout[id]._subplot = mapbox;\n    }\n    if (!mapbox.viewInitial) {\n      mapbox.viewInitial = {\n        center: Lib.extendFlat({}, opts.center),\n        zoom: opts.zoom,\n        bearing: opts.bearing,\n        pitch: opts.pitch\n      };\n    }\n    mapbox.plot(subplotCalcData, fullLayout, gd._promises);\n  }\n};\nexports.clean = function (newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  var oldMapboxKeys = oldFullLayout._subplots[MAPBOX] || [];\n  for (var i = 0; i < oldMapboxKeys.length; i++) {\n    var oldMapboxKey = oldMapboxKeys[i];\n    if (!newFullLayout[oldMapboxKey] && !!oldFullLayout[oldMapboxKey]._subplot) {\n      oldFullLayout[oldMapboxKey]._subplot.destroy();\n    }\n  }\n};\nexports.toSVG = function (gd) {\n  var fullLayout = gd._fullLayout;\n  var subplotIds = fullLayout._subplots[MAPBOX];\n  var size = fullLayout._size;\n  for (var i = 0; i < subplotIds.length; i++) {\n    var opts = fullLayout[subplotIds[i]];\n    var domain = opts.domain;\n    var mapbox = opts._subplot;\n    var imageData = mapbox.toImage('png');\n    var image = fullLayout._glimages.append('svg:image');\n    image.attr({\n      xmlns: xmlnsNamespaces.svg,\n      'xlink:href': imageData,\n      x: size.l + size.w * domain.x[0],\n      y: size.t + size.h * (1 - domain.y[1]),\n      width: size.w * (domain.x[1] - domain.x[0]),\n      height: size.h * (domain.y[1] - domain.y[0]),\n      preserveAspectRatio: 'none'\n    });\n    var subplotDiv = d3.select(opts._subplot.div);\n\n    // Append logo if visible\n    var hidden = subplotDiv.select('.mapboxgl-ctrl-logo').node().offsetParent === null;\n    if (!hidden) {\n      var logo = fullLayout._glimages.append('g');\n      logo.attr('transform', strTranslate(size.l + size.w * domain.x[0] + 10, size.t + size.h * (1 - domain.y[0]) - 31));\n      logo.append('path').attr('d', constants.mapboxLogo.path0).style({\n        opacity: 0.9,\n        fill: '#ffffff',\n        'enable-background': 'new'\n      });\n      logo.append('path').attr('d', constants.mapboxLogo.path1).style('opacity', 0.35).style('enable-background', 'new');\n      logo.append('path').attr('d', constants.mapboxLogo.path2).style('opacity', 0.35).style('enable-background', 'new');\n      logo.append('polygon').attr('points', constants.mapboxLogo.polygon).style({\n        opacity: 0.9,\n        fill: '#ffffff',\n        'enable-background': 'new'\n      });\n    }\n\n    // Add attributions\n    var attributions = subplotDiv.select('.mapboxgl-ctrl-attrib').text().replace('Improve this map', '');\n    var attributionGroup = fullLayout._glimages.append('g');\n    var attributionText = attributionGroup.append('text');\n    attributionText.text(attributions).classed('static-attribution', true).attr({\n      'font-size': 12,\n      'font-family': 'Arial',\n      'color': 'rgba(0, 0, 0, 0.75)',\n      'text-anchor': 'end',\n      'data-unformatted': attributions\n    });\n    var bBox = Drawing.bBox(attributionText.node());\n\n    // Break into multiple lines twice larger than domain\n    var maxWidth = size.w * (domain.x[1] - domain.x[0]);\n    if (bBox.width > maxWidth / 2) {\n      var multilineAttributions = attributions.split('|').join('<br>');\n      attributionText.text(multilineAttributions).attr('data-unformatted', multilineAttributions).call(svgTextUtils.convertToTspans, gd);\n      bBox = Drawing.bBox(attributionText.node());\n    }\n    attributionText.attr('transform', strTranslate(-3, -bBox.height + 8));\n\n    // Draw white rectangle behind text\n    attributionGroup.insert('rect', '.static-attribution').attr({\n      x: -bBox.width - 6,\n      y: -bBox.height - 3,\n      width: bBox.width + 6,\n      height: bBox.height + 3,\n      fill: 'rgba(255, 255, 255, 0.75)'\n    });\n\n    // Scale down if larger than domain\n    var scaleRatio = 1;\n    if (bBox.width + 6 > maxWidth) scaleRatio = maxWidth / (bBox.width + 6);\n    var offset = [size.l + size.w * domain.x[1], size.t + size.h * (1 - domain.y[0])];\n    attributionGroup.attr('transform', strTranslate(offset[0], offset[1]) + strScale(scaleRatio));\n  }\n};\n\n// N.B. mapbox-gl only allows one accessToken to be set per page:\n// https://github.com/mapbox/mapbox-gl-js/issues/6331\nfunction findAccessToken(gd, mapboxIds) {\n  var fullLayout = gd._fullLayout;\n  var context = gd._context;\n\n  // special case for Mapbox Atlas users\n  if (context.mapboxAccessToken === '') return '';\n  var tokensUseful = [];\n  var tokensListed = [];\n  var hasOneSetMapboxStyle = false;\n  var wontWork = false;\n\n  // Take the first token we find in a mapbox subplot.\n  // These default to the context value but may be overridden.\n  for (var i = 0; i < mapboxIds.length; i++) {\n    var opts = fullLayout[mapboxIds[i]];\n    var token = opts.accesstoken;\n    if (isMapboxStyle(opts.style)) {\n      if (token) {\n        Lib.pushUnique(tokensUseful, token);\n      } else {\n        if (isMapboxStyle(opts._input.style)) {\n          Lib.error('Uses Mapbox map style, but did not set an access token.');\n          hasOneSetMapboxStyle = true;\n        }\n        wontWork = true;\n      }\n    }\n    if (token) {\n      Lib.pushUnique(tokensListed, token);\n    }\n  }\n  if (wontWork) {\n    var msg = hasOneSetMapboxStyle ? constants.noAccessTokenErrorMsg : constants.missingStyleErrorMsg;\n    Lib.error(msg);\n    throw new Error(msg);\n  }\n  if (tokensUseful.length) {\n    if (tokensUseful.length > 1) {\n      Lib.warn(constants.multipleTokensErrorMsg);\n    }\n    return tokensUseful[0];\n  } else {\n    if (tokensListed.length) {\n      Lib.log(['Listed mapbox access token(s)', tokensListed.join(','), 'but did not use a Mapbox map style, ignoring token(s).'].join(' '));\n    }\n    return '';\n  }\n}\nfunction isMapboxStyle(s) {\n  return typeof s === 'string' && (constants.styleValuesMapbox.indexOf(s) !== -1 || s.indexOf('mapbox://') === 0);\n}\nexports.updateFx = function (gd) {\n  var fullLayout = gd._fullLayout;\n  var subplotIds = fullLayout._subplots[MAPBOX];\n  for (var i = 0; i < subplotIds.length; i++) {\n    var subplotObj = fullLayout[subplotIds[i]]._subplot;\n    subplotObj.updateFx(fullLayout);\n  }\n};\n\n/***/ }),\n\n/***/ 67911:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1788170__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_1788170__(71828);\nvar sanitizeHTML = (__nested_webpack_require_1788170__(63893).sanitizeHTML);\nvar convertTextOpts = __nested_webpack_require_1788170__(13056);\nvar constants = __nested_webpack_require_1788170__(77734);\nfunction MapboxLayer(subplot, index) {\n  this.subplot = subplot;\n  this.uid = subplot.uid + '-' + index;\n  this.index = index;\n  this.idSource = 'source-' + this.uid;\n  this.idLayer = constants.layoutLayerPrefix + this.uid;\n\n  // some state variable to check if a remove/add step is needed\n  this.sourceType = null;\n  this.source = null;\n  this.layerType = null;\n  this.below = null;\n\n  // is layer currently visible\n  this.visible = false;\n}\nvar proto = MapboxLayer.prototype;\nproto.update = function update(opts) {\n  if (!this.visible) {\n    // IMPORTANT: must create source before layer to not cause errors\n    this.updateSource(opts);\n    this.updateLayer(opts);\n  } else if (this.needsNewImage(opts)) {\n    this.updateImage(opts);\n  } else if (this.needsNewSource(opts)) {\n    // IMPORTANT: must delete layer before source to not cause errors\n    this.removeLayer();\n    this.updateSource(opts);\n    this.updateLayer(opts);\n  } else if (this.needsNewLayer(opts)) {\n    this.updateLayer(opts);\n  } else {\n    this.updateStyle(opts);\n  }\n  this.visible = isVisible(opts);\n};\nproto.needsNewImage = function (opts) {\n  var map = this.subplot.map;\n  return map.getSource(this.idSource) && this.sourceType === 'image' && opts.sourcetype === 'image' && (this.source !== opts.source || JSON.stringify(this.coordinates) !== JSON.stringify(opts.coordinates));\n};\nproto.needsNewSource = function (opts) {\n  // for some reason changing layer to 'fill' or 'symbol'\n  // w/o changing the source throws an exception in mapbox-gl 0.18 ;\n  // stay safe and make new source on type changes\n  return this.sourceType !== opts.sourcetype || JSON.stringify(this.source) !== JSON.stringify(opts.source) || this.layerType !== opts.type;\n};\nproto.needsNewLayer = function (opts) {\n  return this.layerType !== opts.type || this.below !== this.subplot.belowLookup['layout-' + this.index];\n};\nproto.lookupBelow = function () {\n  return this.subplot.belowLookup['layout-' + this.index];\n};\nproto.updateImage = function (opts) {\n  var map = this.subplot.map;\n  map.getSource(this.idSource).updateImage({\n    url: opts.source,\n    coordinates: opts.coordinates\n  });\n\n  // Since the `updateImage` control flow doesn't call updateLayer,\n  // We need to take care of moving the image layer to match the location\n  // where updateLayer would have placed it.\n  var _below = this.findFollowingMapboxLayerId(this.lookupBelow());\n  if (_below !== null) {\n    this.subplot.map.moveLayer(this.idLayer, _below);\n  }\n};\nproto.updateSource = function (opts) {\n  var map = this.subplot.map;\n  if (map.getSource(this.idSource)) map.removeSource(this.idSource);\n  this.sourceType = opts.sourcetype;\n  this.source = opts.source;\n  if (!isVisible(opts)) return;\n  var sourceOpts = convertSourceOpts(opts);\n  map.addSource(this.idSource, sourceOpts);\n};\nproto.findFollowingMapboxLayerId = function (below) {\n  if (below === 'traces') {\n    var mapLayers = this.subplot.getMapLayers();\n\n    // find id of first plotly trace layer\n    for (var i = 0; i < mapLayers.length; i++) {\n      var layerId = mapLayers[i].id;\n      if (typeof layerId === 'string' && layerId.indexOf(constants.traceLayerPrefix) === 0) {\n        below = layerId;\n        break;\n      }\n    }\n  }\n  return below;\n};\nproto.updateLayer = function (opts) {\n  var subplot = this.subplot;\n  var convertedOpts = convertOpts(opts);\n  var below = this.lookupBelow();\n  var _below = this.findFollowingMapboxLayerId(below);\n  this.removeLayer();\n  if (isVisible(opts)) {\n    subplot.addLayer({\n      id: this.idLayer,\n      source: this.idSource,\n      'source-layer': opts.sourcelayer || '',\n      type: opts.type,\n      minzoom: opts.minzoom,\n      maxzoom: opts.maxzoom,\n      layout: convertedOpts.layout,\n      paint: convertedOpts.paint\n    }, _below);\n  }\n  this.layerType = opts.type;\n  this.below = below;\n};\nproto.updateStyle = function (opts) {\n  if (isVisible(opts)) {\n    var convertedOpts = convertOpts(opts);\n    this.subplot.setOptions(this.idLayer, 'setLayoutProperty', convertedOpts.layout);\n    this.subplot.setOptions(this.idLayer, 'setPaintProperty', convertedOpts.paint);\n  }\n};\nproto.removeLayer = function () {\n  var map = this.subplot.map;\n  if (map.getLayer(this.idLayer)) {\n    map.removeLayer(this.idLayer);\n  }\n};\nproto.dispose = function () {\n  var map = this.subplot.map;\n  if (map.getLayer(this.idLayer)) map.removeLayer(this.idLayer);\n  if (map.getSource(this.idSource)) map.removeSource(this.idSource);\n};\nfunction isVisible(opts) {\n  if (!opts.visible) return false;\n  var source = opts.source;\n  if (Array.isArray(source) && source.length > 0) {\n    for (var i = 0; i < source.length; i++) {\n      if (typeof source[i] !== 'string' || source[i].length === 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n  return Lib.isPlainObject(source) || typeof source === 'string' && source.length > 0;\n}\nfunction convertOpts(opts) {\n  var layout = {};\n  var paint = {};\n  switch (opts.type) {\n    case 'circle':\n      Lib.extendFlat(paint, {\n        'circle-radius': opts.circle.radius,\n        'circle-color': opts.color,\n        'circle-opacity': opts.opacity\n      });\n      break;\n    case 'line':\n      Lib.extendFlat(paint, {\n        'line-width': opts.line.width,\n        'line-color': opts.color,\n        'line-opacity': opts.opacity,\n        'line-dasharray': opts.line.dash\n      });\n      break;\n    case 'fill':\n      Lib.extendFlat(paint, {\n        'fill-color': opts.color,\n        'fill-outline-color': opts.fill.outlinecolor,\n        'fill-opacity': opts.opacity\n\n        // no way to pass specify outline width at the moment\n      });\n\n      break;\n    case 'symbol':\n      var symbol = opts.symbol;\n      var textOpts = convertTextOpts(symbol.textposition, symbol.iconsize);\n      Lib.extendFlat(layout, {\n        'icon-image': symbol.icon + '-15',\n        'icon-size': symbol.iconsize / 10,\n        'text-field': symbol.text,\n        'text-size': symbol.textfont.size,\n        'text-anchor': textOpts.anchor,\n        'text-offset': textOpts.offset,\n        'symbol-placement': symbol.placement\n\n        // TODO font family\n        // 'text-font': symbol.textfont.family.split(', '),\n      });\n\n      Lib.extendFlat(paint, {\n        'icon-color': opts.color,\n        'text-color': symbol.textfont.color,\n        'text-opacity': opts.opacity\n      });\n      break;\n    case 'raster':\n      Lib.extendFlat(paint, {\n        'raster-fade-duration': 0,\n        'raster-opacity': opts.opacity\n      });\n      break;\n  }\n  return {\n    layout: layout,\n    paint: paint\n  };\n}\nfunction convertSourceOpts(opts) {\n  var sourceType = opts.sourcetype;\n  var source = opts.source;\n  var sourceOpts = {\n    type: sourceType\n  };\n  var field;\n  if (sourceType === 'geojson') {\n    field = 'data';\n  } else if (sourceType === 'vector') {\n    field = typeof source === 'string' ? 'url' : 'tiles';\n  } else if (sourceType === 'raster') {\n    field = 'tiles';\n    sourceOpts.tileSize = 256;\n  } else if (sourceType === 'image') {\n    field = 'url';\n    sourceOpts.coordinates = opts.coordinates;\n  }\n  sourceOpts[field] = source;\n  if (opts.sourceattribution) {\n    sourceOpts.attribution = sanitizeHTML(opts.sourceattribution);\n  }\n  return sourceOpts;\n}\nmodule.exports = function createMapboxLayer(subplot, index, opts) {\n  var mapboxLayer = new MapboxLayer(subplot, index);\n  mapboxLayer.update(opts);\n  return mapboxLayer;\n};\n\n/***/ }),\n\n/***/ 23585:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1795863__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_1795863__(71828);\nvar defaultLine = (__nested_webpack_require_1795863__(7901).defaultLine);\nvar domainAttrs = (__nested_webpack_require_1795863__(27670)/* .attributes */ .Y);\nvar fontAttrs = __nested_webpack_require_1795863__(41940);\nvar textposition = (__nested_webpack_require_1795863__(82196).textposition);\nvar overrideAll = (__nested_webpack_require_1795863__(30962).overrideAll);\nvar templatedArray = (__nested_webpack_require_1795863__(44467).templatedArray);\nvar constants = __nested_webpack_require_1795863__(77734);\nvar fontAttr = fontAttrs({});\nfontAttr.family.dflt = 'Open Sans Regular, Arial Unicode MS Regular';\nvar attrs = module.exports = overrideAll({\n  _arrayAttrRegexps: [Lib.counterRegex('mapbox', '.layers', true)],\n  domain: domainAttrs({\n    name: 'mapbox'\n  }),\n  accesstoken: {\n    valType: 'string',\n    noBlank: true,\n    strict: true\n  },\n  style: {\n    valType: 'any',\n    values: constants.styleValuesMapbox.concat(constants.styleValuesNonMapbox),\n    dflt: constants.styleValueDflt\n  },\n  center: {\n    lon: {\n      valType: 'number',\n      dflt: 0\n    },\n    lat: {\n      valType: 'number',\n      dflt: 0\n    }\n  },\n  zoom: {\n    valType: 'number',\n    dflt: 1\n  },\n  bearing: {\n    valType: 'number',\n    dflt: 0\n  },\n  pitch: {\n    valType: 'number',\n    dflt: 0\n  },\n  bounds: {\n    west: {\n      valType: 'number'\n    },\n    east: {\n      valType: 'number'\n    },\n    south: {\n      valType: 'number'\n    },\n    north: {\n      valType: 'number'\n    }\n  },\n  layers: templatedArray('layer', {\n    visible: {\n      valType: 'boolean',\n      dflt: true\n    },\n    sourcetype: {\n      valType: 'enumerated',\n      values: ['geojson', 'vector', 'raster', 'image'],\n      dflt: 'geojson'\n    },\n    source: {\n      valType: 'any'\n    },\n    sourcelayer: {\n      valType: 'string',\n      dflt: ''\n    },\n    sourceattribution: {\n      valType: 'string'\n    },\n    type: {\n      valType: 'enumerated',\n      values: ['circle', 'line', 'fill', 'symbol', 'raster'],\n      dflt: 'circle'\n    },\n    coordinates: {\n      valType: 'any'\n    },\n    // attributes shared between all types\n    below: {\n      valType: 'string'\n    },\n    color: {\n      valType: 'color',\n      dflt: defaultLine\n    },\n    opacity: {\n      valType: 'number',\n      min: 0,\n      max: 1,\n      dflt: 1\n    },\n    minzoom: {\n      valType: 'number',\n      min: 0,\n      max: 24,\n      dflt: 0\n    },\n    maxzoom: {\n      valType: 'number',\n      min: 0,\n      max: 24,\n      dflt: 24\n    },\n    // type-specific style attributes\n    circle: {\n      radius: {\n        valType: 'number',\n        dflt: 15\n      }\n    },\n    line: {\n      width: {\n        valType: 'number',\n        dflt: 2\n      },\n      dash: {\n        valType: 'data_array'\n      }\n    },\n    fill: {\n      outlinecolor: {\n        valType: 'color',\n        dflt: defaultLine\n      }\n    },\n    symbol: {\n      icon: {\n        valType: 'string',\n        dflt: 'marker'\n      },\n      iconsize: {\n        valType: 'number',\n        dflt: 10\n      },\n      text: {\n        valType: 'string',\n        dflt: ''\n      },\n      placement: {\n        valType: 'enumerated',\n        values: ['point', 'line', 'line-center'],\n        dflt: 'point'\n      },\n      textfont: fontAttr,\n      textposition: Lib.extendFlat({}, textposition, {\n        arrayOk: false\n      })\n    }\n  })\n}, 'plot', 'from-root');\n\n// set uirevision outside of overrideAll so it can be `editType: 'none'`\nattrs.uirevision = {\n  valType: 'any',\n  editType: 'none'\n};\n\n/***/ }),\n\n/***/ 77882:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1799391__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_1799391__(71828);\nvar handleSubplotDefaults = __nested_webpack_require_1799391__(49119);\nvar handleArrayContainerDefaults = __nested_webpack_require_1799391__(85501);\nvar layoutAttributes = __nested_webpack_require_1799391__(23585);\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {\n  handleSubplotDefaults(layoutIn, layoutOut, fullData, {\n    type: 'mapbox',\n    attributes: layoutAttributes,\n    handleDefaults: handleDefaults,\n    partition: 'y',\n    accessToken: layoutOut._mapboxAccessToken\n  });\n};\nfunction handleDefaults(containerIn, containerOut, coerce, opts) {\n  coerce('accesstoken', opts.accessToken);\n  coerce('style');\n  coerce('center.lon');\n  coerce('center.lat');\n  coerce('zoom');\n  coerce('bearing');\n  coerce('pitch');\n  var west = coerce('bounds.west');\n  var east = coerce('bounds.east');\n  var south = coerce('bounds.south');\n  var north = coerce('bounds.north');\n  if (west === undefined || east === undefined || south === undefined || north === undefined) {\n    delete containerOut.bounds;\n  }\n  handleArrayContainerDefaults(containerIn, containerOut, {\n    name: 'layers',\n    handleItemDefaults: handleLayerDefaults\n  });\n\n  // copy ref to input container to update 'center' and 'zoom' on map move\n  containerOut._input = containerIn;\n}\nfunction handleLayerDefaults(layerIn, layerOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(layerIn, layerOut, layoutAttributes.layers, attr, dflt);\n  }\n  var visible = coerce('visible');\n  if (visible) {\n    var sourceType = coerce('sourcetype');\n    var mustBeRasterLayer = sourceType === 'raster' || sourceType === 'image';\n    coerce('source');\n    coerce('sourceattribution');\n    if (sourceType === 'vector') {\n      coerce('sourcelayer');\n    }\n    if (sourceType === 'image') {\n      coerce('coordinates');\n    }\n    var typeDflt;\n    if (mustBeRasterLayer) typeDflt = 'raster';\n    var type = coerce('type', typeDflt);\n    if (mustBeRasterLayer && type !== 'raster') {\n      type = layerOut.type = 'raster';\n      Lib.log('Source types *raster* and *image* must drawn *raster* layer type.');\n    }\n    coerce('below');\n    coerce('color');\n    coerce('opacity');\n    coerce('minzoom');\n    coerce('maxzoom');\n    if (type === 'circle') {\n      coerce('circle.radius');\n    }\n    if (type === 'line') {\n      coerce('line.width');\n      coerce('line.dash');\n    }\n    if (type === 'fill') {\n      coerce('fill.outlinecolor');\n    }\n    if (type === 'symbol') {\n      coerce('symbol.icon');\n      coerce('symbol.iconsize');\n      coerce('symbol.text');\n      Lib.coerceFont(coerce, 'symbol.textfont');\n      coerce('symbol.textposition');\n      coerce('symbol.placement');\n    }\n  }\n}\n\n/***/ }),\n\n/***/ 10481:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1802180__) {\n\n\"use strict\";\n\n\nvar mapboxgl = __nested_webpack_require_1802180__(44517);\nvar Lib = __nested_webpack_require_1802180__(71828);\nvar geoUtils = __nested_webpack_require_1802180__(41327);\nvar Registry = __nested_webpack_require_1802180__(73972);\nvar Axes = __nested_webpack_require_1802180__(89298);\nvar dragElement = __nested_webpack_require_1802180__(28569);\nvar Fx = __nested_webpack_require_1802180__(30211);\nvar dragHelpers = __nested_webpack_require_1802180__(64505);\nvar drawMode = dragHelpers.drawMode;\nvar selectMode = dragHelpers.selectMode;\nvar prepSelect = (__nested_webpack_require_1802180__(47322).prepSelect);\nvar clearOutline = (__nested_webpack_require_1802180__(47322).clearOutline);\nvar clearSelectionsCache = (__nested_webpack_require_1802180__(47322).clearSelectionsCache);\nvar selectOnClick = (__nested_webpack_require_1802180__(47322).selectOnClick);\nvar constants = __nested_webpack_require_1802180__(77734);\nvar createMapboxLayer = __nested_webpack_require_1802180__(67911);\nfunction Mapbox(gd, id) {\n  this.id = id;\n  this.gd = gd;\n  var fullLayout = gd._fullLayout;\n  var context = gd._context;\n  this.container = fullLayout._glcontainer.node();\n  this.isStatic = context.staticPlot;\n\n  // unique id for this Mapbox instance\n  this.uid = fullLayout._uid + '-' + this.id;\n\n  // create framework on instantiation for a smoother first plot call\n  this.div = null;\n  this.xaxis = null;\n  this.yaxis = null;\n  this.createFramework(fullLayout);\n\n  // state variables used to infer how and what to update\n  this.map = null;\n  this.accessToken = null;\n  this.styleObj = null;\n  this.traceHash = {};\n  this.layerList = [];\n  this.belowLookup = {};\n  this.dragging = false;\n  this.wheeling = false;\n}\nvar proto = Mapbox.prototype;\nproto.plot = function (calcData, fullLayout, promises) {\n  var self = this;\n  var opts = fullLayout[self.id];\n\n  // remove map and create a new map if access token has change\n  if (self.map && opts.accesstoken !== self.accessToken) {\n    self.map.remove();\n    self.map = null;\n    self.styleObj = null;\n    self.traceHash = {};\n    self.layerList = [];\n  }\n  var promise;\n  if (!self.map) {\n    promise = new Promise(function (resolve, reject) {\n      self.createMap(calcData, fullLayout, resolve, reject);\n    });\n  } else {\n    promise = new Promise(function (resolve, reject) {\n      self.updateMap(calcData, fullLayout, resolve, reject);\n    });\n  }\n  promises.push(promise);\n};\nproto.createMap = function (calcData, fullLayout, resolve, reject) {\n  var self = this;\n  var opts = fullLayout[self.id];\n\n  // store style id and URL or object\n  var styleObj = self.styleObj = getStyleObj(opts.style);\n\n  // store access token associated with this map\n  self.accessToken = opts.accesstoken;\n  var bounds = opts.bounds;\n  var maxBounds = bounds ? [[bounds.west, bounds.south], [bounds.east, bounds.north]] : null;\n\n  // create the map!\n  var map = self.map = new mapboxgl.Map({\n    container: self.div,\n    style: styleObj.style,\n    center: convertCenter(opts.center),\n    zoom: opts.zoom,\n    bearing: opts.bearing,\n    pitch: opts.pitch,\n    maxBounds: maxBounds,\n    interactive: !self.isStatic,\n    preserveDrawingBuffer: self.isStatic,\n    doubleClickZoom: false,\n    boxZoom: false,\n    attributionControl: false\n  }).addControl(new mapboxgl.AttributionControl({\n    compact: true\n  }));\n\n  // make sure canvas does not inherit left and top css\n  map._canvas.style.left = '0px';\n  map._canvas.style.top = '0px';\n  self.rejectOnError(reject);\n  if (!self.isStatic) {\n    self.initFx(calcData, fullLayout);\n  }\n  var promises = [];\n  promises.push(new Promise(function (resolve) {\n    map.once('load', resolve);\n  }));\n  promises = promises.concat(geoUtils.fetchTraceGeoData(calcData));\n  Promise.all(promises).then(function () {\n    self.fillBelowLookup(calcData, fullLayout);\n    self.updateData(calcData);\n    self.updateLayout(fullLayout);\n    self.resolveOnRender(resolve);\n  }).catch(reject);\n};\nproto.updateMap = function (calcData, fullLayout, resolve, reject) {\n  var self = this;\n  var map = self.map;\n  var opts = fullLayout[this.id];\n  self.rejectOnError(reject);\n  var promises = [];\n  var styleObj = getStyleObj(opts.style);\n  if (JSON.stringify(self.styleObj) !== JSON.stringify(styleObj)) {\n    self.styleObj = styleObj;\n    map.setStyle(styleObj.style);\n\n    // need to rebuild trace layers on reload\n    // to avoid 'lost event' errors\n    self.traceHash = {};\n    promises.push(new Promise(function (resolve) {\n      map.once('styledata', resolve);\n    }));\n  }\n  promises = promises.concat(geoUtils.fetchTraceGeoData(calcData));\n  Promise.all(promises).then(function () {\n    self.fillBelowLookup(calcData, fullLayout);\n    self.updateData(calcData);\n    self.updateLayout(fullLayout);\n    self.resolveOnRender(resolve);\n  }).catch(reject);\n};\nproto.fillBelowLookup = function (calcData, fullLayout) {\n  var opts = fullLayout[this.id];\n  var layers = opts.layers;\n  var i, val;\n  var belowLookup = this.belowLookup = {};\n  var hasTraceAtTop = false;\n  for (i = 0; i < calcData.length; i++) {\n    var trace = calcData[i][0].trace;\n    var _module = trace._module;\n    if (typeof trace.below === 'string') {\n      val = trace.below;\n    } else if (_module.getBelow) {\n      // 'smart' default that depend the map's base layers\n      val = _module.getBelow(trace, this);\n    }\n    if (val === '') {\n      hasTraceAtTop = true;\n    }\n    belowLookup['trace-' + trace.uid] = val || '';\n  }\n  for (i = 0; i < layers.length; i++) {\n    var item = layers[i];\n    if (typeof item.below === 'string') {\n      val = item.below;\n    } else if (hasTraceAtTop) {\n      // if one or more trace(s) set `below:''` and\n      // layers[i].below is unset,\n      // place layer below traces\n      val = 'traces';\n    } else {\n      val = '';\n    }\n    belowLookup['layout-' + i] = val;\n  }\n\n  // N.B. If multiple layers have the 'below' value,\n  // we must clear the stashed 'below' field in order\n  // to make `traceHash[k].update()` and `layerList[i].update()`\n  // remove/add the all those layers to have preserve\n  // the correct layer ordering\n  var val2list = {};\n  var k, id;\n  for (k in belowLookup) {\n    val = belowLookup[k];\n    if (val2list[val]) {\n      val2list[val].push(k);\n    } else {\n      val2list[val] = [k];\n    }\n  }\n  for (val in val2list) {\n    var list = val2list[val];\n    if (list.length > 1) {\n      for (i = 0; i < list.length; i++) {\n        k = list[i];\n        if (k.indexOf('trace-') === 0) {\n          id = k.split('trace-')[1];\n          if (this.traceHash[id]) {\n            this.traceHash[id].below = null;\n          }\n        } else if (k.indexOf('layout-') === 0) {\n          id = k.split('layout-')[1];\n          if (this.layerList[id]) {\n            this.layerList[id].below = null;\n          }\n        }\n      }\n    }\n  }\n};\nvar traceType2orderIndex = {\n  choroplethmapbox: 0,\n  densitymapbox: 1,\n  scattermapbox: 2\n};\nproto.updateData = function (calcData) {\n  var traceHash = this.traceHash;\n  var traceObj, trace, i, j;\n\n  // Need to sort here by trace type here,\n  // in case traces with different `type` have the same\n  // below value, but sorting we ensure that\n  // e.g. choroplethmapbox traces will be below scattermapbox traces\n  var calcDataSorted = calcData.slice().sort(function (a, b) {\n    return traceType2orderIndex[a[0].trace.type] - traceType2orderIndex[b[0].trace.type];\n  });\n\n  // update or create trace objects\n  for (i = 0; i < calcDataSorted.length; i++) {\n    var calcTrace = calcDataSorted[i];\n    trace = calcTrace[0].trace;\n    traceObj = traceHash[trace.uid];\n    var didUpdate = false;\n    if (traceObj) {\n      if (traceObj.type === trace.type) {\n        traceObj.update(calcTrace);\n        didUpdate = true;\n      } else {\n        traceObj.dispose();\n      }\n    }\n    if (!didUpdate && trace._module) {\n      traceHash[trace.uid] = trace._module.plot(this, calcTrace);\n    }\n  }\n\n  // remove empty trace objects\n  var ids = Object.keys(traceHash);\n  idLoop: for (i = 0; i < ids.length; i++) {\n    var id = ids[i];\n    for (j = 0; j < calcData.length; j++) {\n      trace = calcData[j][0].trace;\n      if (id === trace.uid) continue idLoop;\n    }\n    traceObj = traceHash[id];\n    traceObj.dispose();\n    delete traceHash[id];\n  }\n};\nproto.updateLayout = function (fullLayout) {\n  var map = this.map;\n  var opts = fullLayout[this.id];\n  if (!this.dragging && !this.wheeling) {\n    map.setCenter(convertCenter(opts.center));\n    map.setZoom(opts.zoom);\n    map.setBearing(opts.bearing);\n    map.setPitch(opts.pitch);\n  }\n  this.updateLayers(fullLayout);\n  this.updateFramework(fullLayout);\n  this.updateFx(fullLayout);\n  this.map.resize();\n  if (this.gd._context._scrollZoom.mapbox) {\n    map.scrollZoom.enable();\n  } else {\n    map.scrollZoom.disable();\n  }\n};\nproto.resolveOnRender = function (resolve) {\n  var map = this.map;\n  map.on('render', function onRender() {\n    if (map.loaded()) {\n      map.off('render', onRender);\n      // resolve at end of render loop\n      //\n      // Need a 10ms delay (0ms should suffice to skip a thread in the\n      // render loop) to workaround mapbox-gl bug introduced in v1.3.0\n      setTimeout(resolve, 10);\n    }\n  });\n};\nproto.rejectOnError = function (reject) {\n  var map = this.map;\n  function handler() {\n    reject(new Error(constants.mapOnErrorMsg));\n  }\n  map.once('error', handler);\n  map.once('style.error', handler);\n  map.once('source.error', handler);\n  map.once('tile.error', handler);\n  map.once('layer.error', handler);\n};\nproto.createFramework = function (fullLayout) {\n  var self = this;\n  var div = self.div = document.createElement('div');\n  div.id = self.uid;\n  div.style.position = 'absolute';\n  self.container.appendChild(div);\n\n  // create mock x/y axes for hover routine\n  self.xaxis = {\n    _id: 'x',\n    c2p: function (v) {\n      return self.project(v).x;\n    }\n  };\n  self.yaxis = {\n    _id: 'y',\n    c2p: function (v) {\n      return self.project(v).y;\n    }\n  };\n  self.updateFramework(fullLayout);\n\n  // mock axis for hover formatting\n  self.mockAxis = {\n    type: 'linear',\n    showexponent: 'all',\n    exponentformat: 'B'\n  };\n  Axes.setConvert(self.mockAxis, fullLayout);\n};\nproto.initFx = function (calcData, fullLayout) {\n  var self = this;\n  var gd = self.gd;\n  var map = self.map;\n\n  // keep track of pan / zoom in user layout and emit relayout event\n  map.on('moveend', function (evt) {\n    if (!self.map) return;\n    var fullLayoutNow = gd._fullLayout;\n\n    // 'moveend' gets triggered by map.setCenter, map.setZoom,\n    // map.setBearing and map.setPitch.\n    //\n    // Here, we make sure that state updates amd 'plotly_relayout'\n    // are triggered only when the 'moveend' originates from a\n    // mouse target (filtering out API calls) to not\n    // duplicate 'plotly_relayout' events.\n\n    if (evt.originalEvent || self.wheeling) {\n      var optsNow = fullLayoutNow[self.id];\n      Registry.call('_storeDirectGUIEdit', gd.layout, fullLayoutNow._preGUI, self.getViewEdits(optsNow));\n      var viewNow = self.getView();\n      optsNow._input.center = optsNow.center = viewNow.center;\n      optsNow._input.zoom = optsNow.zoom = viewNow.zoom;\n      optsNow._input.bearing = optsNow.bearing = viewNow.bearing;\n      optsNow._input.pitch = optsNow.pitch = viewNow.pitch;\n      gd.emit('plotly_relayout', self.getViewEditsWithDerived(viewNow));\n    }\n    if (evt.originalEvent && evt.originalEvent.type === 'mouseup') {\n      self.dragging = false;\n    } else if (self.wheeling) {\n      self.wheeling = false;\n    }\n    if (fullLayoutNow._rehover) {\n      fullLayoutNow._rehover();\n    }\n  });\n  map.on('wheel', function () {\n    self.wheeling = true;\n  });\n  map.on('mousemove', function (evt) {\n    var bb = self.div.getBoundingClientRect();\n    var xy = [evt.originalEvent.offsetX, evt.originalEvent.offsetY];\n    evt.target.getBoundingClientRect = function () {\n      return bb;\n    };\n    self.xaxis.p2c = function () {\n      return map.unproject(xy).lng;\n    };\n    self.yaxis.p2c = function () {\n      return map.unproject(xy).lat;\n    };\n    gd._fullLayout._rehover = function () {\n      if (gd._fullLayout._hoversubplot === self.id && gd._fullLayout[self.id]) {\n        Fx.hover(gd, evt, self.id);\n      }\n    };\n    Fx.hover(gd, evt, self.id);\n    gd._fullLayout._hoversubplot = self.id;\n  });\n  function unhover() {\n    Fx.loneUnhover(fullLayout._hoverlayer);\n  }\n  map.on('dragstart', function () {\n    self.dragging = true;\n    unhover();\n  });\n  map.on('zoomstart', unhover);\n  map.on('mouseout', function () {\n    gd._fullLayout._hoversubplot = null;\n  });\n  function emitUpdate() {\n    var viewNow = self.getView();\n    gd.emit('plotly_relayouting', self.getViewEditsWithDerived(viewNow));\n  }\n  map.on('drag', emitUpdate);\n  map.on('zoom', emitUpdate);\n  map.on('dblclick', function () {\n    var optsNow = gd._fullLayout[self.id];\n    Registry.call('_storeDirectGUIEdit', gd.layout, gd._fullLayout._preGUI, self.getViewEdits(optsNow));\n    var viewInitial = self.viewInitial;\n    map.setCenter(convertCenter(viewInitial.center));\n    map.setZoom(viewInitial.zoom);\n    map.setBearing(viewInitial.bearing);\n    map.setPitch(viewInitial.pitch);\n    var viewNow = self.getView();\n    optsNow._input.center = optsNow.center = viewNow.center;\n    optsNow._input.zoom = optsNow.zoom = viewNow.zoom;\n    optsNow._input.bearing = optsNow.bearing = viewNow.bearing;\n    optsNow._input.pitch = optsNow.pitch = viewNow.pitch;\n    gd.emit('plotly_doubleclick', null);\n    gd.emit('plotly_relayout', self.getViewEditsWithDerived(viewNow));\n  });\n\n  // define event handlers on map creation, to keep one ref per map,\n  // so that map.on / map.off in updateFx works as expected\n  self.clearOutline = function () {\n    clearSelectionsCache(self.dragOptions);\n    clearOutline(self.dragOptions.gd);\n  };\n\n  /**\n   * Returns a click handler function that is supposed\n   * to handle clicks in pan mode.\n   */\n  self.onClickInPanFn = function (dragOptions) {\n    return function (evt) {\n      var clickMode = gd._fullLayout.clickmode;\n      if (clickMode.indexOf('select') > -1) {\n        selectOnClick(evt.originalEvent, gd, [self.xaxis], [self.yaxis], self.id, dragOptions);\n      }\n      if (clickMode.indexOf('event') > -1) {\n        // TODO: this does not support right-click. If we want to support it, we\n        // would likely need to change mapbox to use dragElement instead of straight\n        // mapbox event binding. Or perhaps better, make a simple wrapper with the\n        // right mousedown, mousemove, and mouseup handlers just for a left/right click\n        // pie would use this too.\n        Fx.click(gd, evt.originalEvent);\n      }\n    };\n  };\n};\nproto.updateFx = function (fullLayout) {\n  var self = this;\n  var map = self.map;\n  var gd = self.gd;\n  if (self.isStatic) return;\n  function invert(pxpy) {\n    var obj = self.map.unproject(pxpy);\n    return [obj.lng, obj.lat];\n  }\n  var dragMode = fullLayout.dragmode;\n  var fillRangeItems;\n  fillRangeItems = function (eventData, poly) {\n    if (poly.isRect) {\n      var ranges = eventData.range = {};\n      ranges[self.id] = [invert([poly.xmin, poly.ymin]), invert([poly.xmax, poly.ymax])];\n    } else {\n      var dataPts = eventData.lassoPoints = {};\n      dataPts[self.id] = poly.map(invert);\n    }\n  };\n\n  // Note: dragOptions is needed to be declared for all dragmodes because\n  // it's the object that holds persistent selection state.\n  // Merge old dragOptions with new to keep possibly initialized\n  // persistent selection state.\n  var oldDragOptions = self.dragOptions;\n  self.dragOptions = Lib.extendDeep(oldDragOptions || {}, {\n    dragmode: fullLayout.dragmode,\n    element: self.div,\n    gd: gd,\n    plotinfo: {\n      id: self.id,\n      domain: fullLayout[self.id].domain,\n      xaxis: self.xaxis,\n      yaxis: self.yaxis,\n      fillRangeItems: fillRangeItems\n    },\n    xaxes: [self.xaxis],\n    yaxes: [self.yaxis],\n    subplot: self.id\n  });\n\n  // Unregister the old handler before potentially registering\n  // a new one. Otherwise multiple click handlers might\n  // be registered resulting in unwanted behavior.\n  map.off('click', self.onClickInPanHandler);\n  if (selectMode(dragMode) || drawMode(dragMode)) {\n    map.dragPan.disable();\n    map.on('zoomstart', self.clearOutline);\n    self.dragOptions.prepFn = function (e, startX, startY) {\n      prepSelect(e, startX, startY, self.dragOptions, dragMode);\n    };\n    dragElement.init(self.dragOptions);\n  } else {\n    map.dragPan.enable();\n    map.off('zoomstart', self.clearOutline);\n    self.div.onmousedown = null;\n    self.div.ontouchstart = null;\n    self.div.removeEventListener('touchstart', self.div._ontouchstart);\n    // TODO: this does not support right-click. If we want to support it, we\n    // would likely need to change mapbox to use dragElement instead of straight\n    // mapbox event binding. Or perhaps better, make a simple wrapper with the\n    // right mousedown, mousemove, and mouseup handlers just for a left/right click\n    // pie would use this too.\n    self.onClickInPanHandler = self.onClickInPanFn(self.dragOptions);\n    map.on('click', self.onClickInPanHandler);\n  }\n};\nproto.updateFramework = function (fullLayout) {\n  var domain = fullLayout[this.id].domain;\n  var size = fullLayout._size;\n  var style = this.div.style;\n  style.width = size.w * (domain.x[1] - domain.x[0]) + 'px';\n  style.height = size.h * (domain.y[1] - domain.y[0]) + 'px';\n  style.left = size.l + domain.x[0] * size.w + 'px';\n  style.top = size.t + (1 - domain.y[1]) * size.h + 'px';\n  this.xaxis._offset = size.l + domain.x[0] * size.w;\n  this.xaxis._length = size.w * (domain.x[1] - domain.x[0]);\n  this.yaxis._offset = size.t + (1 - domain.y[1]) * size.h;\n  this.yaxis._length = size.h * (domain.y[1] - domain.y[0]);\n};\nproto.updateLayers = function (fullLayout) {\n  var opts = fullLayout[this.id];\n  var layers = opts.layers;\n  var layerList = this.layerList;\n  var i;\n\n  // if the layer arrays don't match,\n  // don't try to be smart,\n  // delete them all, and start all over.\n\n  if (layers.length !== layerList.length) {\n    for (i = 0; i < layerList.length; i++) {\n      layerList[i].dispose();\n    }\n    layerList = this.layerList = [];\n    for (i = 0; i < layers.length; i++) {\n      layerList.push(createMapboxLayer(this, i, layers[i]));\n    }\n  } else {\n    for (i = 0; i < layers.length; i++) {\n      layerList[i].update(layers[i]);\n    }\n  }\n};\nproto.destroy = function () {\n  if (this.map) {\n    this.map.remove();\n    this.map = null;\n    this.container.removeChild(this.div);\n  }\n};\nproto.toImage = function () {\n  this.map.stop();\n  return this.map.getCanvas().toDataURL();\n};\n\n// convenience wrapper to create set multiple layer\n// 'layout' or 'paint options at once.\nproto.setOptions = function (id, methodName, opts) {\n  for (var k in opts) {\n    this.map[methodName](id, k, opts[k]);\n  }\n};\nproto.getMapLayers = function () {\n  return this.map.getStyle().layers;\n};\n\n// convenience wrapper that first check in 'below' references\n// a layer that exist and then add the layer to the map,\nproto.addLayer = function (opts, below) {\n  var map = this.map;\n  if (typeof below === 'string') {\n    if (below === '') {\n      map.addLayer(opts, below);\n      return;\n    }\n    var mapLayers = this.getMapLayers();\n    for (var i = 0; i < mapLayers.length; i++) {\n      if (below === mapLayers[i].id) {\n        map.addLayer(opts, below);\n        return;\n      }\n    }\n    Lib.warn(['Trying to add layer with *below* value', below, 'referencing a layer that does not exist', 'or that does not yet exist.'].join(' '));\n  }\n  map.addLayer(opts);\n};\n\n// convenience method to project a [lon, lat] array to pixel coords\nproto.project = function (v) {\n  return this.map.project(new mapboxgl.LngLat(v[0], v[1]));\n};\n\n// get map's current view values in plotly.js notation\nproto.getView = function () {\n  var map = this.map;\n  var mapCenter = map.getCenter();\n  var lon = mapCenter.lng;\n  var lat = mapCenter.lat;\n  var center = {\n    lon: lon,\n    lat: lat\n  };\n  var canvas = map.getCanvas();\n  var w = parseInt(canvas.style.width);\n  var h = parseInt(canvas.style.height);\n  return {\n    center: center,\n    zoom: map.getZoom(),\n    bearing: map.getBearing(),\n    pitch: map.getPitch(),\n    _derived: {\n      coordinates: [map.unproject([0, 0]).toArray(), map.unproject([w, 0]).toArray(), map.unproject([w, h]).toArray(), map.unproject([0, h]).toArray()]\n    }\n  };\n};\nproto.getViewEdits = function (cont) {\n  var id = this.id;\n  var keys = ['center', 'zoom', 'bearing', 'pitch'];\n  var obj = {};\n  for (var i = 0; i < keys.length; i++) {\n    var k = keys[i];\n    obj[id + '.' + k] = cont[k];\n  }\n  return obj;\n};\nproto.getViewEditsWithDerived = function (cont) {\n  var id = this.id;\n  var obj = this.getViewEdits(cont);\n  obj[id + '._derived'] = cont._derived;\n  return obj;\n};\nfunction getStyleObj(val) {\n  var styleObj = {};\n  if (Lib.isPlainObject(val)) {\n    styleObj.id = val.id;\n    styleObj.style = val;\n  } else if (typeof val === 'string') {\n    styleObj.id = val;\n    if (constants.styleValuesMapbox.indexOf(val) !== -1) {\n      styleObj.style = convertStyleVal(val);\n    } else if (constants.stylesNonMapbox[val]) {\n      styleObj.style = constants.stylesNonMapbox[val];\n    } else {\n      styleObj.style = val;\n    }\n  } else {\n    styleObj.id = constants.styleValueDflt;\n    styleObj.style = convertStyleVal(constants.styleValueDflt);\n  }\n  styleObj.transition = {\n    duration: 0,\n    delay: 0\n  };\n  return styleObj;\n}\n\n// if style is part of the 'official' mapbox values, add URL prefix and suffix\nfunction convertStyleVal(val) {\n  return constants.styleUrlPrefix + val + '-' + constants.styleUrlSuffix;\n}\nfunction convertCenter(center) {\n  return [center.lon, center.lat];\n}\nmodule.exports = Mapbox;\n\n/***/ }),\n\n/***/ 35025:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/**\n * Creates a set of padding attributes.\n *\n * @param {object} opts\n *   @param {string} editType:\n *     the editType for all pieces of this padding definition\n *\n * @return {object} attributes object containing {t, r, b, l} as specified\n */\nmodule.exports = function (opts) {\n  var editType = opts.editType;\n  return {\n    t: {\n      valType: 'number',\n      dflt: 0,\n      editType: editType\n    },\n    r: {\n      valType: 'number',\n      dflt: 0,\n      editType: editType\n    },\n    b: {\n      valType: 'number',\n      dflt: 0,\n      editType: editType\n    },\n    l: {\n      valType: 'number',\n      dflt: 0,\n      editType: editType\n    },\n    editType: editType\n  };\n};\n\n/***/ }),\n\n/***/ 74875:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1824574__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_1824574__(39898);\nvar timeFormatLocale = (__nested_webpack_require_1824574__(84096)/* .timeFormatLocale */ .Dq);\nvar formatLocale = (__nested_webpack_require_1824574__(60721)/* .formatLocale */ .FF);\nvar isNumeric = __nested_webpack_require_1824574__(92770);\nvar Registry = __nested_webpack_require_1824574__(73972);\nvar PlotSchema = __nested_webpack_require_1824574__(86281);\nvar Template = __nested_webpack_require_1824574__(44467);\nvar Lib = __nested_webpack_require_1824574__(71828);\nvar Color = __nested_webpack_require_1824574__(7901);\nvar BADNUM = (__nested_webpack_require_1824574__(50606).BADNUM);\nvar axisIDs = __nested_webpack_require_1824574__(41675);\nvar clearOutline = (__nested_webpack_require_1824574__(51873).clearOutline);\nvar scatterAttrs = __nested_webpack_require_1824574__(21479);\nvar animationAttrs = __nested_webpack_require_1824574__(85594);\nvar frameAttrs = __nested_webpack_require_1824574__(31391);\nvar getModuleCalcData = (__nested_webpack_require_1824574__(27659)/* .getModuleCalcData */ .a0);\nvar relinkPrivateKeys = Lib.relinkPrivateKeys;\nvar _ = Lib._;\nvar plots = module.exports = {};\n\n// Expose registry methods on Plots for backward-compatibility\nLib.extendFlat(plots, Registry);\nplots.attributes = __nested_webpack_require_1824574__(9012);\nplots.attributes.type.values = plots.allTypes;\nplots.fontAttrs = __nested_webpack_require_1824574__(41940);\nplots.layoutAttributes = __nested_webpack_require_1824574__(10820);\n\n// TODO make this a plot attribute?\nplots.fontWeight = 'normal';\nvar transformsRegistry = plots.transformsRegistry;\nvar commandModule = __nested_webpack_require_1824574__(31137);\nplots.executeAPICommand = commandModule.executeAPICommand;\nplots.computeAPICommandBindings = commandModule.computeAPICommandBindings;\nplots.manageCommandObserver = commandModule.manageCommandObserver;\nplots.hasSimpleAPICommandBindings = commandModule.hasSimpleAPICommandBindings;\n\n// in some cases the browser doesn't seem to know how big\n// the text is at first, so it needs to draw it,\n// then wait a little, then draw it again\nplots.redrawText = function (gd) {\n  gd = Lib.getGraphDiv(gd);\n  return new Promise(function (resolve) {\n    setTimeout(function () {\n      if (!gd._fullLayout) return;\n      Registry.getComponentMethod('annotations', 'draw')(gd);\n      Registry.getComponentMethod('legend', 'draw')(gd);\n      Registry.getComponentMethod('colorbar', 'draw')(gd);\n      resolve(plots.previousPromises(gd));\n    }, 300);\n  });\n};\n\n// resize plot about the container size\nplots.resize = function (gd) {\n  gd = Lib.getGraphDiv(gd);\n  var resolveLastResize;\n  var p = new Promise(function (resolve, reject) {\n    if (!gd || Lib.isHidden(gd)) {\n      reject(new Error('Resize must be passed a displayed plot div element.'));\n    }\n    if (gd._redrawTimer) clearTimeout(gd._redrawTimer);\n    if (gd._resolveResize) resolveLastResize = gd._resolveResize;\n    gd._resolveResize = resolve;\n    gd._redrawTimer = setTimeout(function () {\n      // return if there is nothing to resize or is hidden\n      if (!gd.layout || gd.layout.width && gd.layout.height || Lib.isHidden(gd)) {\n        resolve(gd);\n        return;\n      }\n      delete gd.layout.width;\n      delete gd.layout.height;\n\n      // autosizing doesn't count as a change that needs saving\n      var oldchanged = gd.changed;\n\n      // nor should it be included in the undo queue\n      gd.autoplay = true;\n      Registry.call('relayout', gd, {\n        autosize: true\n      }).then(function () {\n        gd.changed = oldchanged;\n        // Only resolve if a new call hasn't been made!\n        if (gd._resolveResize === resolve) {\n          delete gd._resolveResize;\n          resolve(gd);\n        }\n      });\n    }, 100);\n  });\n  if (resolveLastResize) resolveLastResize(p);\n  return p;\n};\n\n// for use in Lib.syncOrAsync, check if there are any\n// pending promises in this plot and wait for them\nplots.previousPromises = function (gd) {\n  if ((gd._promises || []).length) {\n    return Promise.all(gd._promises).then(function () {\n      gd._promises = [];\n    });\n  }\n};\n\n/**\n * Adds the 'Edit chart' link.\n * Note that now _doPlot calls this so it can regenerate whenever it replots\n *\n * Add source links to your graph inside the 'showSources' config argument.\n */\nplots.addLinks = function (gd) {\n  // Do not do anything if showLink and showSources are not set to true in config\n  if (!gd._context.showLink && !gd._context.showSources) return;\n  var fullLayout = gd._fullLayout;\n  var linkContainer = Lib.ensureSingle(fullLayout._paper, 'text', 'js-plot-link-container', function (s) {\n    s.style({\n      'font-family': '\"Open Sans\", Arial, sans-serif',\n      'font-size': '12px',\n      'fill': Color.defaultLine,\n      'pointer-events': 'all'\n    }).each(function () {\n      var links = d3.select(this);\n      links.append('tspan').classed('js-link-to-tool', true);\n      links.append('tspan').classed('js-link-spacer', true);\n      links.append('tspan').classed('js-sourcelinks', true);\n    });\n  });\n\n  // The text node inside svg\n  var text = linkContainer.node();\n  var attrs = {\n    y: fullLayout._paper.attr('height') - 9\n  };\n\n  // If text's width is bigger than the layout\n  // Check that text is a child node or document.body\n  // because otherwise IE/Edge might throw an exception\n  // when calling getComputedTextLength().\n  // Apparently offsetParent is null for invisibles.\n  if (document.body.contains(text) && text.getComputedTextLength() >= fullLayout.width - 20) {\n    // Align the text at the left\n    attrs['text-anchor'] = 'start';\n    attrs.x = 5;\n  } else {\n    // Align the text at the right\n    attrs['text-anchor'] = 'end';\n    attrs.x = fullLayout._paper.attr('width') - 7;\n  }\n  linkContainer.attr(attrs);\n  var toolspan = linkContainer.select('.js-link-to-tool');\n  var spacespan = linkContainer.select('.js-link-spacer');\n  var sourcespan = linkContainer.select('.js-sourcelinks');\n  if (gd._context.showSources) gd._context.showSources(gd);\n\n  // 'view in plotly' link for embedded plots\n  if (gd._context.showLink) positionPlayWithData(gd, toolspan);\n\n  // separator if we have both sources and tool link\n  spacespan.text(toolspan.text() && sourcespan.text() ? ' - ' : '');\n};\n\n// note that now this function is only adding the brand in\n// iframes and 3rd-party apps\nfunction positionPlayWithData(gd, container) {\n  container.text('');\n  var link = container.append('a').attr({\n    'xlink:xlink:href': '#',\n    'class': 'link--impt link--embedview',\n    'font-weight': 'bold'\n  }).text(gd._context.linkText + ' ' + String.fromCharCode(187));\n  if (gd._context.sendData) {\n    link.on('click', function () {\n      plots.sendDataToCloud(gd);\n    });\n  } else {\n    var path = window.location.pathname.split('/');\n    var query = window.location.search;\n    link.attr({\n      'xlink:xlink:show': 'new',\n      'xlink:xlink:href': '/' + path[2].split('.')[0] + '/' + path[1] + query\n    });\n  }\n}\nplots.sendDataToCloud = function (gd) {\n  var baseUrl = (window.PLOTLYENV || {}).BASE_URL || gd._context.plotlyServerURL;\n  if (!baseUrl) return;\n  gd.emit('plotly_beforeexport');\n  var hiddenformDiv = d3.select(gd).append('div').attr('id', 'hiddenform').style('display', 'none');\n  var hiddenform = hiddenformDiv.append('form').attr({\n    action: baseUrl + '/external',\n    method: 'post',\n    target: '_blank'\n  });\n  var hiddenformInput = hiddenform.append('input').attr({\n    type: 'text',\n    name: 'data'\n  });\n  hiddenformInput.node().value = plots.graphJson(gd, false, 'keepdata');\n  hiddenform.node().submit();\n  hiddenformDiv.remove();\n  gd.emit('plotly_afterexport');\n  return false;\n};\nvar d3FormatKeys = ['days', 'shortDays', 'months', 'shortMonths', 'periods', 'dateTime', 'date', 'time', 'decimal', 'thousands', 'grouping', 'currency'];\nvar extraFormatKeys = ['year', 'month', 'dayMonth', 'dayMonthYear'];\n\n/*\n * Fill in default values\n * @param {DOM element} gd\n * @param {object} opts\n * @param {boolean} opts.skipUpdateCalc: normally if the existing gd.calcdata looks\n *   compatible with the new gd._fullData we finish by linking the new _fullData traces\n *   to the old gd.calcdata, so it's correctly set if we're not going to recalc. But also,\n *   if there are calcTransforms on the trace, we first remap data arrays from the old full\n *   trace into the new one. Use skipUpdateCalc to defer this (needed by Plotly.react)\n *\n * gd.data, gd.layout:\n *   are precisely what the user specified (except as modified by cleanData/cleanLayout),\n *   these fields shouldn't be modified (except for filling in some auto values)\n *   nor used directly after the supply defaults step.\n *\n * gd._fullData, gd._fullLayout:\n *   are complete descriptions of how to draw the plot,\n *   use these fields in all required computations.\n *\n * gd._fullLayout._modules\n *   is a list of all the trace modules required to draw the plot.\n *\n * gd._fullLayout._visibleModules\n *   subset of _modules, a list of modules corresponding to visible:true traces.\n *\n * gd._fullLayout._basePlotModules\n *   is a list of all the plot modules required to draw the plot.\n *\n * gd._fullLayout._transformModules\n *   is a list of all the transform modules invoked.\n *\n */\nplots.supplyDefaults = function (gd, opts) {\n  var skipUpdateCalc = opts && opts.skipUpdateCalc;\n  var oldFullLayout = gd._fullLayout || {};\n  if (oldFullLayout._skipDefaults) {\n    delete oldFullLayout._skipDefaults;\n    return;\n  }\n  var newFullLayout = gd._fullLayout = {};\n  var newLayout = gd.layout || {};\n  var oldFullData = gd._fullData || [];\n  var newFullData = gd._fullData = [];\n  var newData = gd.data || [];\n  var oldCalcdata = gd.calcdata || [];\n  var context = gd._context || {};\n  var i;\n\n  // Create all the storage space for frames, but only if doesn't already exist\n  if (!gd._transitionData) plots.createTransitionData(gd);\n\n  // So we only need to do this once (and since we have gd here)\n  // get the translated placeholder titles.\n  // These ones get used as default values so need to be known at supplyDefaults\n  // others keep their blank defaults but render the placeholder as desired later\n  // TODO: make these work the same way, only inserting the placeholder text at draw time?\n  // The challenge is that this has slightly different behavior right now in editable mode:\n  // using the placeholder as default makes this text permanently (but lightly) visible,\n  // but explicit '' for these titles gives you a placeholder that's hidden until you mouse\n  // over it - so you're not distracted by it if you really don't want a title, but if you do\n  // and you're new to plotly you may not be able to find it.\n  // When editable=false the two behave the same, no title is drawn.\n  newFullLayout._dfltTitle = {\n    plot: _(gd, 'Click to enter Plot title'),\n    x: _(gd, 'Click to enter X axis title'),\n    y: _(gd, 'Click to enter Y axis title'),\n    colorbar: _(gd, 'Click to enter Colorscale title'),\n    annotation: _(gd, 'new text')\n  };\n  newFullLayout._traceWord = _(gd, 'trace');\n  var formatObj = getFormatObj(gd, d3FormatKeys);\n\n  // stash the token from context so mapbox subplots can use it as default\n  newFullLayout._mapboxAccessToken = context.mapboxAccessToken;\n\n  // first fill in what we can of layout without looking at data\n  // because fullData needs a few things from layout\n  if (oldFullLayout._initialAutoSizeIsDone) {\n    // coerce the updated layout while preserving width and height\n    var oldWidth = oldFullLayout.width;\n    var oldHeight = oldFullLayout.height;\n    plots.supplyLayoutGlobalDefaults(newLayout, newFullLayout, formatObj);\n    if (!newLayout.width) newFullLayout.width = oldWidth;\n    if (!newLayout.height) newFullLayout.height = oldHeight;\n    plots.sanitizeMargins(newFullLayout);\n  } else {\n    // coerce the updated layout and autosize if needed\n    plots.supplyLayoutGlobalDefaults(newLayout, newFullLayout, formatObj);\n    var missingWidthOrHeight = !newLayout.width || !newLayout.height;\n    var autosize = newFullLayout.autosize;\n    var autosizable = context.autosizable;\n    var initialAutoSize = missingWidthOrHeight && (autosize || autosizable);\n    if (initialAutoSize) plots.plotAutoSize(gd, newLayout, newFullLayout);else if (missingWidthOrHeight) plots.sanitizeMargins(newFullLayout);\n\n    // for backwards-compatibility with Plotly v1.x.x\n    if (!autosize && missingWidthOrHeight) {\n      newLayout.width = newFullLayout.width;\n      newLayout.height = newFullLayout.height;\n    }\n  }\n  newFullLayout._d3locale = getFormatter(formatObj, newFullLayout.separators);\n  newFullLayout._extraFormat = getFormatObj(gd, extraFormatKeys);\n  newFullLayout._initialAutoSizeIsDone = true;\n\n  // keep track of how many traces are inputted\n  newFullLayout._dataLength = newData.length;\n\n  // clear the lists of trace and baseplot modules, and subplots\n  newFullLayout._modules = [];\n  newFullLayout._visibleModules = [];\n  newFullLayout._basePlotModules = [];\n  var subplots = newFullLayout._subplots = emptySubplotLists();\n\n  // initialize axis and subplot hash objects for splom-generated grids\n  var splomAxes = newFullLayout._splomAxes = {\n    x: {},\n    y: {}\n  };\n  var splomSubplots = newFullLayout._splomSubplots = {};\n  // initialize splom grid defaults\n  newFullLayout._splomGridDflt = {};\n\n  // for stacked area traces to share config across traces\n  newFullLayout._scatterStackOpts = {};\n  // for the first scatter trace on each subplot (so it knows tonext->tozero)\n  newFullLayout._firstScatter = {};\n  // for grouped bar/box/violin trace to share config across traces\n  newFullLayout._alignmentOpts = {};\n  // track color axes referenced in the data\n  newFullLayout._colorAxes = {};\n\n  // for traces to request a default rangeslider on their x axes\n  // eg set `_requestRangeslider.x2 = true` for xaxis2\n  newFullLayout._requestRangeslider = {};\n\n  // pull uids from old data to use as new defaults\n  newFullLayout._traceUids = getTraceUids(oldFullData, newData);\n\n  // then do the data\n  newFullLayout._globalTransforms = (gd._context || {}).globalTransforms;\n  plots.supplyDataDefaults(newData, newFullData, newLayout, newFullLayout);\n\n  // redo grid size defaults with info about splom x/y axes,\n  // and fill in generated cartesian axes and subplots\n  var splomXa = Object.keys(splomAxes.x);\n  var splomYa = Object.keys(splomAxes.y);\n  if (splomXa.length > 1 && splomYa.length > 1) {\n    Registry.getComponentMethod('grid', 'sizeDefaults')(newLayout, newFullLayout);\n    for (i = 0; i < splomXa.length; i++) {\n      Lib.pushUnique(subplots.xaxis, splomXa[i]);\n    }\n    for (i = 0; i < splomYa.length; i++) {\n      Lib.pushUnique(subplots.yaxis, splomYa[i]);\n    }\n    for (var k in splomSubplots) {\n      Lib.pushUnique(subplots.cartesian, k);\n    }\n  }\n\n  // attach helper method to check whether a plot type is present on graph\n  newFullLayout._has = plots._hasPlotType.bind(newFullLayout);\n  if (oldFullData.length === newFullData.length) {\n    for (i = 0; i < newFullData.length; i++) {\n      relinkPrivateKeys(newFullData[i], oldFullData[i]);\n    }\n  }\n\n  // finally, fill in the pieces of layout that may need to look at data\n  plots.supplyLayoutModuleDefaults(newLayout, newFullLayout, newFullData, gd._transitionData);\n\n  // Special cases that introduce interactions between traces.\n  // This is after relinkPrivateKeys so we can use those in crossTraceDefaults\n  // and after layout module defaults, so we can use eg barmode\n  var _modules = newFullLayout._visibleModules;\n  var crossTraceDefaultsFuncs = [];\n  for (i = 0; i < _modules.length; i++) {\n    var funci = _modules[i].crossTraceDefaults;\n    // some trace types share crossTraceDefaults (ie histogram2d, histogram2dcontour)\n    if (funci) Lib.pushUnique(crossTraceDefaultsFuncs, funci);\n  }\n  for (i = 0; i < crossTraceDefaultsFuncs.length; i++) {\n    crossTraceDefaultsFuncs[i](newFullData, newFullLayout);\n  }\n\n  // turn on flag to optimize large splom-only graphs\n  // mostly by omitting SVG layers during Cartesian.drawFramework\n  newFullLayout._hasOnlyLargeSploms = newFullLayout._basePlotModules.length === 1 && newFullLayout._basePlotModules[0].name === 'splom' && splomXa.length > 15 && splomYa.length > 15 && newFullLayout.shapes.length === 0 && newFullLayout.images.length === 0;\n\n  // relink / initialize subplot axis objects\n  plots.linkSubplots(newFullData, newFullLayout, oldFullData, oldFullLayout);\n\n  // clean subplots and other artifacts from previous plot calls\n  plots.cleanPlot(newFullData, newFullLayout, oldFullData, oldFullLayout);\n  var hadGL2D = !!(oldFullLayout._has && oldFullLayout._has('gl2d'));\n  var hasGL2D = !!(newFullLayout._has && newFullLayout._has('gl2d'));\n  var hadCartesian = !!(oldFullLayout._has && oldFullLayout._has('cartesian'));\n  var hasCartesian = !!(newFullLayout._has && newFullLayout._has('cartesian'));\n  var hadBgLayer = hadCartesian || hadGL2D;\n  var hasBgLayer = hasCartesian || hasGL2D;\n  if (hadBgLayer && !hasBgLayer) {\n    // remove bgLayer\n    oldFullLayout._bgLayer.remove();\n  } else if (hasBgLayer && !hadBgLayer) {\n    // create bgLayer\n    newFullLayout._shouldCreateBgLayer = true;\n  }\n\n  // clear selection outline until we implement persistent selection,\n  // don't clear them though when drag handlers (e.g. listening to\n  // `plotly_selecting`) update the graph.\n  // we should try to come up with a better solution when implementing\n  // https://github.com/plotly/plotly.js/issues/1851\n  if (oldFullLayout._zoomlayer && !gd._dragging) {\n    clearOutline({\n      // mock old gd\n      _fullLayout: oldFullLayout\n    });\n  }\n\n  // fill in meta helpers\n  fillMetaTextHelpers(newFullData, newFullLayout);\n\n  // relink functions and _ attributes to promote consistency between plots\n  relinkPrivateKeys(newFullLayout, oldFullLayout);\n\n  // colorscale crossTraceDefaults needs newFullLayout with relinked keys\n  Registry.getComponentMethod('colorscale', 'crossTraceDefaults')(newFullData, newFullLayout);\n\n  // For persisting GUI-driven changes in layout\n  // _preGUI and _tracePreGUI were already copied over in relinkPrivateKeys\n  if (!newFullLayout._preGUI) newFullLayout._preGUI = {};\n  // track trace GUI changes by uid rather than by trace index\n  if (!newFullLayout._tracePreGUI) newFullLayout._tracePreGUI = {};\n  var tracePreGUI = newFullLayout._tracePreGUI;\n  var uids = {};\n  var uid;\n  for (uid in tracePreGUI) uids[uid] = 'old';\n  for (i = 0; i < newFullData.length; i++) {\n    uid = newFullData[i]._fullInput.uid;\n    if (!uids[uid]) tracePreGUI[uid] = {};\n    uids[uid] = 'new';\n  }\n  for (uid in uids) {\n    if (uids[uid] === 'old') delete tracePreGUI[uid];\n  }\n\n  // set up containers for margin calculations\n  initMargins(newFullLayout);\n\n  // collect and do some initial calculations for rangesliders\n  Registry.getComponentMethod('rangeslider', 'makeData')(newFullLayout);\n\n  // update object references in calcdata\n  if (!skipUpdateCalc && oldCalcdata.length === newFullData.length) {\n    plots.supplyDefaultsUpdateCalc(oldCalcdata, newFullData);\n  }\n};\nplots.supplyDefaultsUpdateCalc = function (oldCalcdata, newFullData) {\n  for (var i = 0; i < newFullData.length; i++) {\n    var newTrace = newFullData[i];\n    var cd0 = (oldCalcdata[i] || [])[0];\n    if (cd0 && cd0.trace) {\n      var oldTrace = cd0.trace;\n      if (oldTrace._hasCalcTransform) {\n        var arrayAttrs = oldTrace._arrayAttrs;\n        var j, astr, oldArrayVal;\n        for (j = 0; j < arrayAttrs.length; j++) {\n          astr = arrayAttrs[j];\n          oldArrayVal = Lib.nestedProperty(oldTrace, astr).get().slice();\n          Lib.nestedProperty(newTrace, astr).set(oldArrayVal);\n        }\n      }\n      cd0.trace = newTrace;\n    }\n  }\n};\n\n/**\n * Create a list of uid strings satisfying (in this order of importance):\n * 1. all unique, all strings\n * 2. matches input uids if provided\n * 3. matches previous data uids\n */\nfunction getTraceUids(oldFullData, newData) {\n  var len = newData.length;\n  var oldFullInput = [];\n  var i, prevFullInput;\n  for (i = 0; i < oldFullData.length; i++) {\n    var thisFullInput = oldFullData[i]._fullInput;\n    if (thisFullInput !== prevFullInput) oldFullInput.push(thisFullInput);\n    prevFullInput = thisFullInput;\n  }\n  var oldLen = oldFullInput.length;\n  var out = new Array(len);\n  var seenUids = {};\n  function setUid(uid, i) {\n    out[i] = uid;\n    seenUids[uid] = 1;\n  }\n  function tryUid(uid, i) {\n    if (uid && typeof uid === 'string' && !seenUids[uid]) {\n      setUid(uid, i);\n      return true;\n    }\n  }\n  for (i = 0; i < len; i++) {\n    var newUid = newData[i].uid;\n    if (typeof newUid === 'number') newUid = String(newUid);\n    if (tryUid(newUid, i)) continue;\n    if (i < oldLen && tryUid(oldFullInput[i].uid, i)) continue;\n    setUid(Lib.randstr(seenUids), i);\n  }\n  return out;\n}\n\n/**\n * Make a container for collecting subplots we need to display.\n *\n * Finds all subplot types we need to enumerate once and caches it,\n * but makes a new output object each time.\n * Single-trace subplots (which have no `id`) such as pie, table, etc\n * do not need to be collected because we just draw all visible traces.\n */\nfunction emptySubplotLists() {\n  var collectableSubplotTypes = Registry.collectableSubplotTypes;\n  var out = {};\n  var i, j;\n  if (!collectableSubplotTypes) {\n    collectableSubplotTypes = [];\n    var subplotsRegistry = Registry.subplotsRegistry;\n    for (var subplotType in subplotsRegistry) {\n      var subplotModule = subplotsRegistry[subplotType];\n      var subplotAttr = subplotModule.attr;\n      if (subplotAttr) {\n        collectableSubplotTypes.push(subplotType);\n\n        // special case, currently just for cartesian:\n        // we need to enumerate axes, not just subplots\n        if (Array.isArray(subplotAttr)) {\n          for (j = 0; j < subplotAttr.length; j++) {\n            Lib.pushUnique(collectableSubplotTypes, subplotAttr[j]);\n          }\n        }\n      }\n    }\n  }\n  for (i = 0; i < collectableSubplotTypes.length; i++) {\n    out[collectableSubplotTypes[i]] = [];\n  }\n  return out;\n}\n\n/**\n * getFormatObj: use _context to get the format object from locale.\n * Used to get d3.locale argument object and extraFormat argument object\n *\n * Regarding d3.locale argument :\n * decimal and thousands can be overridden later by layout.separators\n * grouping and currency are not presently used by our automatic number\n * formatting system but can be used by custom formats.\n *\n * @returns {object} d3.locale format object\n */\nfunction getFormatObj(gd, formatKeys) {\n  var locale = gd._context.locale;\n  if (!locale) locale = 'en-US';\n  var formatDone = false;\n  var formatObj = {};\n  function includeFormat(newFormat) {\n    var formatFinished = true;\n    for (var i = 0; i < formatKeys.length; i++) {\n      var formatKey = formatKeys[i];\n      if (!formatObj[formatKey]) {\n        if (newFormat[formatKey]) {\n          formatObj[formatKey] = newFormat[formatKey];\n        } else formatFinished = false;\n      }\n    }\n    if (formatFinished) formatDone = true;\n  }\n\n  // same as localize, look for format parts in each format spec in the chain\n  for (var i = 0; i < 2; i++) {\n    var locales = gd._context.locales;\n    for (var j = 0; j < 2; j++) {\n      var formatj = (locales[locale] || {}).format;\n      if (formatj) {\n        includeFormat(formatj);\n        if (formatDone) break;\n      }\n      locales = Registry.localeRegistry;\n    }\n    var baseLocale = locale.split('-')[0];\n    if (formatDone || baseLocale === locale) break;\n    locale = baseLocale;\n  }\n\n  // lastly pick out defaults from english (non-US, as DMY is so much more common)\n  if (!formatDone) includeFormat(Registry.localeRegistry.en.format);\n  return formatObj;\n}\n\n/**\n * getFormatter: combine the final separators with the locale formatting object\n * we pulled earlier to generate number and time formatters\n * TODO: remove separators in v3, only use locale, so we don't need this step?\n *\n * @param {object} formatObj: d3.locale format object\n * @param {string} separators: length-2 string to override decimal and thousands\n *   separators in number formatting\n *\n * @returns {object} {numberFormat, timeFormat} d3 formatter factory functions\n *   for numbers and time\n */\nfunction getFormatter(formatObj, separators) {\n  formatObj.decimal = separators.charAt(0);\n  formatObj.thousands = separators.charAt(1);\n  return {\n    numberFormat: function (formatStr) {\n      try {\n        formatStr = formatLocale(formatObj).format(Lib.adjustFormat(formatStr));\n      } catch (e) {\n        Lib.warnBadFormat(formatStr);\n        return Lib.noFormat;\n      }\n      return formatStr;\n    },\n    timeFormat: timeFormatLocale(formatObj).utcFormat\n  };\n}\nfunction fillMetaTextHelpers(newFullData, newFullLayout) {\n  var _meta;\n  var meta4data = [];\n  if (newFullLayout.meta) {\n    _meta = newFullLayout._meta = {\n      meta: newFullLayout.meta,\n      layout: {\n        meta: newFullLayout.meta\n      }\n    };\n  }\n  for (var i = 0; i < newFullData.length; i++) {\n    var trace = newFullData[i];\n    if (trace.meta) {\n      meta4data[trace.index] = trace._meta = {\n        meta: trace.meta\n      };\n    } else if (newFullLayout.meta) {\n      trace._meta = {\n        meta: newFullLayout.meta\n      };\n    }\n    if (newFullLayout.meta) {\n      trace._meta.layout = {\n        meta: newFullLayout.meta\n      };\n    }\n  }\n  if (meta4data.length) {\n    if (!_meta) {\n      _meta = newFullLayout._meta = {};\n    }\n    _meta.data = meta4data;\n  }\n}\n\n// Create storage for all of the data related to frames and transitions:\nplots.createTransitionData = function (gd) {\n  // Set up the default keyframe if it doesn't exist:\n  if (!gd._transitionData) {\n    gd._transitionData = {};\n  }\n  if (!gd._transitionData._frames) {\n    gd._transitionData._frames = [];\n  }\n  if (!gd._transitionData._frameHash) {\n    gd._transitionData._frameHash = {};\n  }\n  if (!gd._transitionData._counter) {\n    gd._transitionData._counter = 0;\n  }\n  if (!gd._transitionData._interruptCallbacks) {\n    gd._transitionData._interruptCallbacks = [];\n  }\n};\n\n// helper function to be bound to fullLayout to check\n// whether a certain plot type is present on plot\n// or trace has a category\nplots._hasPlotType = function (category) {\n  var i;\n\n  // check base plot modules\n  var basePlotModules = this._basePlotModules || [];\n  for (i = 0; i < basePlotModules.length; i++) {\n    if (basePlotModules[i].name === category) return true;\n  }\n\n  // check trace modules (including non-visible:true)\n  var modules = this._modules || [];\n  for (i = 0; i < modules.length; i++) {\n    var name = modules[i].name;\n    if (name === category) return true;\n    // N.B. this is modules[i] along with 'categories' as a hash object\n    var _module = Registry.modules[name];\n    if (_module && _module.categories[category]) return true;\n  }\n  return false;\n};\nplots.cleanPlot = function (newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  var i, j;\n  var basePlotModules = oldFullLayout._basePlotModules || [];\n  for (i = 0; i < basePlotModules.length; i++) {\n    var _module = basePlotModules[i];\n    if (_module.clean) {\n      _module.clean(newFullData, newFullLayout, oldFullData, oldFullLayout);\n    }\n  }\n  var hadGl = oldFullLayout._has && oldFullLayout._has('gl');\n  var hasGl = newFullLayout._has && newFullLayout._has('gl');\n  if (hadGl && !hasGl) {\n    if (oldFullLayout._glcontainer !== undefined) {\n      oldFullLayout._glcontainer.selectAll('.gl-canvas').remove();\n      oldFullLayout._glcontainer.selectAll('.no-webgl').remove();\n      oldFullLayout._glcanvas = null;\n    }\n  }\n  var hasInfoLayer = !!oldFullLayout._infolayer;\n  oldLoop: for (i = 0; i < oldFullData.length; i++) {\n    var oldTrace = oldFullData[i];\n    var oldUid = oldTrace.uid;\n    for (j = 0; j < newFullData.length; j++) {\n      var newTrace = newFullData[j];\n      if (oldUid === newTrace.uid) continue oldLoop;\n    }\n\n    // clean old colorbars\n    if (hasInfoLayer) {\n      oldFullLayout._infolayer.select('.cb' + oldUid).remove();\n    }\n  }\n};\nplots.linkSubplots = function (newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  var i, j;\n  var oldSubplots = oldFullLayout._plots || {};\n  var newSubplots = newFullLayout._plots = {};\n  var newSubplotList = newFullLayout._subplots;\n  var mockGd = {\n    _fullData: newFullData,\n    _fullLayout: newFullLayout\n  };\n  var ids = newSubplotList.cartesian.concat(newSubplotList.gl2d || []);\n  for (i = 0; i < ids.length; i++) {\n    var id = ids[i];\n    var oldSubplot = oldSubplots[id];\n    var xaxis = axisIDs.getFromId(mockGd, id, 'x');\n    var yaxis = axisIDs.getFromId(mockGd, id, 'y');\n    var plotinfo;\n\n    // link or create subplot object\n    if (oldSubplot) {\n      plotinfo = newSubplots[id] = oldSubplot;\n    } else {\n      plotinfo = newSubplots[id] = {};\n      plotinfo.id = id;\n    }\n\n    // add these axis ids to each others' subplot lists\n    xaxis._counterAxes.push(yaxis._id);\n    yaxis._counterAxes.push(xaxis._id);\n    xaxis._subplotsWith.push(id);\n    yaxis._subplotsWith.push(id);\n\n    // update x and y axis layout object refs\n    plotinfo.xaxis = xaxis;\n    plotinfo.yaxis = yaxis;\n\n    // By default, we clip at the subplot level,\n    // but if one trace on a given subplot has *cliponaxis* set to false,\n    // we need to clip at the trace module layer level;\n    // find this out here, once of for all.\n    plotinfo._hasClipOnAxisFalse = false;\n    for (j = 0; j < newFullData.length; j++) {\n      var trace = newFullData[j];\n      if (trace.xaxis === plotinfo.xaxis._id && trace.yaxis === plotinfo.yaxis._id && trace.cliponaxis === false) {\n        plotinfo._hasClipOnAxisFalse = true;\n        break;\n      }\n    }\n  }\n\n  // while we're at it, link overlaying axes to their main axes and\n  // anchored axes to the axes they're anchored to\n  var axList = axisIDs.list(mockGd, null, true);\n  var ax;\n  for (i = 0; i < axList.length; i++) {\n    ax = axList[i];\n    var mainAx = null;\n    if (ax.overlaying) {\n      mainAx = axisIDs.getFromId(mockGd, ax.overlaying);\n\n      // you cannot overlay an axis that's already overlaying another\n      if (mainAx && mainAx.overlaying) {\n        ax.overlaying = false;\n        mainAx = null;\n      }\n    }\n    ax._mainAxis = mainAx || ax;\n\n    /*\n     * For now force overlays to overlay completely... so they\n     * can drag together correctly and share backgrounds.\n     * Later perhaps we make separate axis domain and\n     * tick/line domain or something, so they can still share\n     * the (possibly larger) dragger and background but don't\n     * have to both be drawn over that whole domain\n     */\n    if (mainAx) ax.domain = mainAx.domain.slice();\n    ax._anchorAxis = ax.anchor === 'free' ? null : axisIDs.getFromId(mockGd, ax.anchor);\n  }\n\n  // finally, we can find the main subplot for each axis\n  // (on which the ticks & labels are drawn)\n  for (i = 0; i < axList.length; i++) {\n    ax = axList[i];\n    ax._counterAxes.sort(axisIDs.idSort);\n    ax._subplotsWith.sort(Lib.subplotSort);\n    ax._mainSubplot = findMainSubplot(ax, newFullLayout);\n\n    // find \"full\" domain span of counter axes,\n    // this loop can be costly, so only compute it when required\n    if (ax._counterAxes.length && (ax.spikemode && ax.spikemode.indexOf('across') !== -1 || ax.automargin && ax.mirror && ax.anchor !== 'free' || Registry.getComponentMethod('rangeslider', 'isVisible')(ax))) {\n      var min = 1;\n      var max = 0;\n      for (j = 0; j < ax._counterAxes.length; j++) {\n        var ax2 = axisIDs.getFromId(mockGd, ax._counterAxes[j]);\n        min = Math.min(min, ax2.domain[0]);\n        max = Math.max(max, ax2.domain[1]);\n      }\n      if (min < max) {\n        ax._counterDomainMin = min;\n        ax._counterDomainMax = max;\n      }\n    }\n  }\n};\nfunction findMainSubplot(ax, fullLayout) {\n  var mockGd = {\n    _fullLayout: fullLayout\n  };\n  var isX = ax._id.charAt(0) === 'x';\n  var anchorAx = ax._mainAxis._anchorAxis;\n  var mainSubplotID = '';\n  var nextBestMainSubplotID = '';\n  var anchorID = '';\n\n  // First try the main ID with the anchor\n  if (anchorAx) {\n    anchorID = anchorAx._mainAxis._id;\n    mainSubplotID = isX ? ax._id + anchorID : anchorID + ax._id;\n  }\n\n  // Then look for a subplot with the counteraxis overlaying the anchor\n  // If that fails just use the first subplot including this axis\n  if (!mainSubplotID || !fullLayout._plots[mainSubplotID]) {\n    mainSubplotID = '';\n    var counterIDs = ax._counterAxes;\n    for (var j = 0; j < counterIDs.length; j++) {\n      var counterPart = counterIDs[j];\n      var id = isX ? ax._id + counterPart : counterPart + ax._id;\n      if (!nextBestMainSubplotID) nextBestMainSubplotID = id;\n      var counterAx = axisIDs.getFromId(mockGd, counterPart);\n      if (anchorID && counterAx.overlaying === anchorID) {\n        mainSubplotID = id;\n        break;\n      }\n    }\n  }\n  return mainSubplotID || nextBestMainSubplotID;\n}\n\n// This function clears any trace attributes with valType: color and\n// no set dflt filed in the plot schema. This is needed because groupby (which\n// is the only transform for which this currently applies) supplies parent\n// trace defaults, then expanded trace defaults. The result is that `null`\n// colors are default-supplied and inherited as a color instead of a null.\n// The result is that expanded trace default colors have no effect, with\n// the final result that groups are indistinguishable. This function clears\n// those colors so that individual groupby groups get unique colors.\nplots.clearExpandedTraceDefaultColors = function (trace) {\n  var colorAttrs, path, i;\n\n  // This uses weird closure state in order to satisfy the linter rule\n  // that we can't create functions in a loop.\n  function locateColorAttrs(attr, attrName, attrs, level) {\n    path[level] = attrName;\n    path.length = level + 1;\n    if (attr.valType === 'color' && attr.dflt === undefined) {\n      colorAttrs.push(path.join('.'));\n    }\n  }\n  path = [];\n\n  // Get the cached colorAttrs:\n  colorAttrs = trace._module._colorAttrs;\n\n  // Or else compute and cache the colorAttrs on the module:\n  if (!colorAttrs) {\n    trace._module._colorAttrs = colorAttrs = [];\n    PlotSchema.crawl(trace._module.attributes, locateColorAttrs);\n  }\n  for (i = 0; i < colorAttrs.length; i++) {\n    var origprop = Lib.nestedProperty(trace, '_input.' + colorAttrs[i]);\n    if (!origprop.get()) {\n      Lib.nestedProperty(trace, colorAttrs[i]).set(null);\n    }\n  }\n};\nplots.supplyDataDefaults = function (dataIn, dataOut, layout, fullLayout) {\n  var modules = fullLayout._modules;\n  var visibleModules = fullLayout._visibleModules;\n  var basePlotModules = fullLayout._basePlotModules;\n  var cnt = 0;\n  var colorCnt = 0;\n  var i, fullTrace, trace;\n  fullLayout._transformModules = [];\n  function pushModule(fullTrace) {\n    dataOut.push(fullTrace);\n    var _module = fullTrace._module;\n    if (!_module) return;\n    Lib.pushUnique(modules, _module);\n    if (fullTrace.visible === true) Lib.pushUnique(visibleModules, _module);\n    Lib.pushUnique(basePlotModules, fullTrace._module.basePlotModule);\n    cnt++;\n\n    // TODO: do we really want color not to increment for explicitly invisible traces?\n    // This logic is weird, but matches previous behavior: traces that you explicitly\n    // set to visible:false do not increment the color, but traces WE determine to be\n    // empty or invalid (and thus set to visible:false) DO increment color.\n    // I kind of think we should just let all traces increment color, visible or not.\n    // see mock: axes-autotype-empty vs. a test of restyling visible: false that\n    // I can't find right now...\n    if (fullTrace._input.visible !== false) colorCnt++;\n  }\n  var carpetIndex = {};\n  var carpetDependents = [];\n  var dataTemplate = (layout.template || {}).data || {};\n  var templater = Template.traceTemplater(dataTemplate);\n  for (i = 0; i < dataIn.length; i++) {\n    trace = dataIn[i];\n\n    // reuse uid we may have pulled out of oldFullData\n    // Note: templater supplies trace type\n    fullTrace = templater.newTrace(trace);\n    fullTrace.uid = fullLayout._traceUids[i];\n    plots.supplyTraceDefaults(trace, fullTrace, colorCnt, fullLayout, i);\n    fullTrace.index = i;\n    fullTrace._input = trace;\n    fullTrace._expandedIndex = cnt;\n    if (fullTrace.transforms && fullTrace.transforms.length) {\n      var sdInvisible = trace.visible !== false && fullTrace.visible === false;\n      var expandedTraces = applyTransforms(fullTrace, dataOut, layout, fullLayout);\n      for (var j = 0; j < expandedTraces.length; j++) {\n        var expandedTrace = expandedTraces[j];\n\n        // No further templating during transforms.\n        var fullExpandedTrace = {\n          _template: fullTrace._template,\n          type: fullTrace.type,\n          // set uid using parent uid and expanded index\n          // to promote consistency between update calls\n          uid: fullTrace.uid + j\n        };\n\n        // If the first supplyDefaults created `visible: false`,\n        // clear it before running supplyDefaults a second time,\n        // because sometimes there are items we still want to coerce\n        // inside trace modules before determining that the trace is\n        // again `visible: false`, for example partial visibilities\n        // in `splom` traces.\n        if (sdInvisible && expandedTrace.visible === false) {\n          delete expandedTrace.visible;\n        }\n        plots.supplyTraceDefaults(expandedTrace, fullExpandedTrace, cnt, fullLayout, i);\n\n        // relink private (i.e. underscore) keys expanded trace to full expanded trace so\n        // that transform supply-default methods can set _ keys for future use.\n        relinkPrivateKeys(fullExpandedTrace, expandedTrace);\n\n        // add info about parent data trace\n        fullExpandedTrace.index = i;\n        fullExpandedTrace._input = trace;\n        fullExpandedTrace._fullInput = fullTrace;\n\n        // add info about the expanded data\n        fullExpandedTrace._expandedIndex = cnt;\n        fullExpandedTrace._expandedInput = expandedTrace;\n        pushModule(fullExpandedTrace);\n      }\n    } else {\n      // add identify refs for consistency with transformed traces\n      fullTrace._fullInput = fullTrace;\n      fullTrace._expandedInput = fullTrace;\n      pushModule(fullTrace);\n    }\n    if (Registry.traceIs(fullTrace, 'carpetAxis')) {\n      carpetIndex[fullTrace.carpet] = fullTrace;\n    }\n    if (Registry.traceIs(fullTrace, 'carpetDependent')) {\n      carpetDependents.push(i);\n    }\n  }\n  for (i = 0; i < carpetDependents.length; i++) {\n    fullTrace = dataOut[carpetDependents[i]];\n    if (!fullTrace.visible) continue;\n    var carpetAxis = carpetIndex[fullTrace.carpet];\n    fullTrace._carpet = carpetAxis;\n    if (!carpetAxis || !carpetAxis.visible) {\n      fullTrace.visible = false;\n      continue;\n    }\n    fullTrace.xaxis = carpetAxis.xaxis;\n    fullTrace.yaxis = carpetAxis.yaxis;\n  }\n};\nplots.supplyAnimationDefaults = function (opts) {\n  opts = opts || {};\n  var i;\n  var optsOut = {};\n  function coerce(attr, dflt) {\n    return Lib.coerce(opts || {}, optsOut, animationAttrs, attr, dflt);\n  }\n  coerce('mode');\n  coerce('direction');\n  coerce('fromcurrent');\n  if (Array.isArray(opts.frame)) {\n    optsOut.frame = [];\n    for (i = 0; i < opts.frame.length; i++) {\n      optsOut.frame[i] = plots.supplyAnimationFrameDefaults(opts.frame[i] || {});\n    }\n  } else {\n    optsOut.frame = plots.supplyAnimationFrameDefaults(opts.frame || {});\n  }\n  if (Array.isArray(opts.transition)) {\n    optsOut.transition = [];\n    for (i = 0; i < opts.transition.length; i++) {\n      optsOut.transition[i] = plots.supplyAnimationTransitionDefaults(opts.transition[i] || {});\n    }\n  } else {\n    optsOut.transition = plots.supplyAnimationTransitionDefaults(opts.transition || {});\n  }\n  return optsOut;\n};\nplots.supplyAnimationFrameDefaults = function (opts) {\n  var optsOut = {};\n  function coerce(attr, dflt) {\n    return Lib.coerce(opts || {}, optsOut, animationAttrs.frame, attr, dflt);\n  }\n  coerce('duration');\n  coerce('redraw');\n  return optsOut;\n};\nplots.supplyAnimationTransitionDefaults = function (opts) {\n  var optsOut = {};\n  function coerce(attr, dflt) {\n    return Lib.coerce(opts || {}, optsOut, animationAttrs.transition, attr, dflt);\n  }\n  coerce('duration');\n  coerce('easing');\n  return optsOut;\n};\nplots.supplyFrameDefaults = function (frameIn) {\n  var frameOut = {};\n  function coerce(attr, dflt) {\n    return Lib.coerce(frameIn, frameOut, frameAttrs, attr, dflt);\n  }\n  coerce('group');\n  coerce('name');\n  coerce('traces');\n  coerce('baseframe');\n  coerce('data');\n  coerce('layout');\n  return frameOut;\n};\nplots.supplyTraceDefaults = function (traceIn, traceOut, colorIndex, layout, traceInIndex) {\n  var colorway = layout.colorway || Color.defaults;\n  var defaultColor = colorway[colorIndex % colorway.length];\n  var i;\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, plots.attributes, attr, dflt);\n  }\n  var visible = coerce('visible');\n  coerce('type');\n  coerce('name', layout._traceWord + ' ' + traceInIndex);\n  coerce('uirevision', layout.uirevision);\n\n  // we want even invisible traces to make their would-be subplots visible\n  // so coerce the subplot id(s) now no matter what\n  var _module = plots.getModule(traceOut);\n  traceOut._module = _module;\n  if (_module) {\n    var basePlotModule = _module.basePlotModule;\n    var subplotAttr = basePlotModule.attr;\n    var subplotAttrs = basePlotModule.attributes;\n    if (subplotAttr && subplotAttrs) {\n      var subplots = layout._subplots;\n      var subplotId = '';\n      if (visible || basePlotModule.name !== 'gl2d' // for now just drop empty gl2d subplots\n      // TODO - currently if we draw an empty gl2d subplot, it draws\n      // nothing then gets stuck and you can't get it back without newPlot\n      // sort this out in the regl refactor?\n      ) {\n        if (Array.isArray(subplotAttr)) {\n          for (i = 0; i < subplotAttr.length; i++) {\n            var attri = subplotAttr[i];\n            var vali = Lib.coerce(traceIn, traceOut, subplotAttrs, attri);\n            if (subplots[attri]) Lib.pushUnique(subplots[attri], vali);\n            subplotId += vali;\n          }\n        } else {\n          subplotId = Lib.coerce(traceIn, traceOut, subplotAttrs, subplotAttr);\n        }\n        if (subplots[basePlotModule.name]) {\n          Lib.pushUnique(subplots[basePlotModule.name], subplotId);\n        }\n      }\n    }\n  }\n  if (visible) {\n    coerce('customdata');\n    coerce('ids');\n    coerce('meta');\n    if (Registry.traceIs(traceOut, 'showLegend')) {\n      Lib.coerce(traceIn, traceOut, _module.attributes.showlegend ? _module.attributes : plots.attributes, 'showlegend');\n      coerce('legendwidth');\n      coerce('legendgroup');\n      coerce('legendgrouptitle.text');\n      coerce('legendrank');\n      traceOut._dfltShowLegend = true;\n    } else {\n      traceOut._dfltShowLegend = false;\n    }\n    if (_module) {\n      _module.supplyDefaults(traceIn, traceOut, defaultColor, layout);\n    }\n    if (!Registry.traceIs(traceOut, 'noOpacity')) {\n      coerce('opacity');\n    }\n    if (Registry.traceIs(traceOut, 'notLegendIsolatable')) {\n      // This clears out the legendonly state for traces like carpet that\n      // cannot be isolated in the legend\n      traceOut.visible = !!traceOut.visible;\n    }\n    if (!Registry.traceIs(traceOut, 'noHover')) {\n      if (!traceOut.hovertemplate) Lib.coerceHoverinfo(traceIn, traceOut, layout);\n\n      // parcats support hover, but not hoverlabel stylings (yet)\n      if (traceOut.type !== 'parcats') {\n        Registry.getComponentMethod('fx', 'supplyDefaults')(traceIn, traceOut, defaultColor, layout);\n      }\n    }\n    if (_module && _module.selectPoints) {\n      coerce('selectedpoints');\n    }\n    plots.supplyTransformDefaults(traceIn, traceOut, layout);\n  }\n  return traceOut;\n};\n\n/**\n * hasMakesDataTransform: does this trace have a transform that makes its own\n * data, either by grabbing it from somewhere else or by creating it from input\n * parameters? If so, we should still keep going with supplyDefaults\n * even if the trace is invisible, which may just be because it has no data yet.\n */\nfunction hasMakesDataTransform(trace) {\n  var transforms = trace.transforms;\n  if (Array.isArray(transforms) && transforms.length) {\n    for (var i = 0; i < transforms.length; i++) {\n      var ti = transforms[i];\n      var _module = ti._module || transformsRegistry[ti.type];\n      if (_module && _module.makesData) return true;\n    }\n  }\n  return false;\n}\nplots.hasMakesDataTransform = hasMakesDataTransform;\nplots.supplyTransformDefaults = function (traceIn, traceOut, layout) {\n  // For now we only allow transforms on 1D traces, ie those that specify a _length.\n  // If we were to implement 2D transforms, we'd need to have each transform\n  // describe its own applicability and disable itself when it doesn't apply.\n  // Also allow transforms that make their own data, but not in globalTransforms\n  if (!(traceOut._length || hasMakesDataTransform(traceIn))) return;\n  var globalTransforms = layout._globalTransforms || [];\n  var transformModules = layout._transformModules || [];\n  if (!Array.isArray(traceIn.transforms) && globalTransforms.length === 0) return;\n  var containerIn = traceIn.transforms || [];\n  var transformList = globalTransforms.concat(containerIn);\n  var containerOut = traceOut.transforms = [];\n  for (var i = 0; i < transformList.length; i++) {\n    var transformIn = transformList[i];\n    var type = transformIn.type;\n    var _module = transformsRegistry[type];\n    var transformOut;\n\n    /*\n     * Supply defaults may run twice. First pass runs all supply defaults steps\n     * and adds the _module to any output transforms.\n     * If transforms exist another pass is run so that any generated traces also\n     * go through supply defaults. This has the effect of rerunning\n     * supplyTransformDefaults. If the transform does not have a `transform`\n     * function it could not have generated any new traces and the second stage\n     * is unnecessary. We detect this case with the following variables.\n     */\n    var isFirstStage = !(transformIn._module && transformIn._module === _module);\n    var doLaterStages = _module && typeof _module.transform === 'function';\n    if (!_module) Lib.warn('Unrecognized transform type ' + type + '.');\n    if (_module && _module.supplyDefaults && (isFirstStage || doLaterStages)) {\n      transformOut = _module.supplyDefaults(transformIn, traceOut, layout, traceIn);\n      transformOut.type = type;\n      transformOut._module = _module;\n      Lib.pushUnique(transformModules, _module);\n    } else {\n      transformOut = Lib.extendFlat({}, transformIn);\n    }\n    containerOut.push(transformOut);\n  }\n};\nfunction applyTransforms(fullTrace, fullData, layout, fullLayout) {\n  var container = fullTrace.transforms;\n  var dataOut = [fullTrace];\n  for (var i = 0; i < container.length; i++) {\n    var transform = container[i];\n    var _module = transformsRegistry[transform.type];\n    if (_module && _module.transform) {\n      dataOut = _module.transform(dataOut, {\n        transform: transform,\n        fullTrace: fullTrace,\n        fullData: fullData,\n        layout: layout,\n        fullLayout: fullLayout,\n        transformIndex: i\n      });\n    }\n  }\n  return dataOut;\n}\nplots.supplyLayoutGlobalDefaults = function (layoutIn, layoutOut, formatObj) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(layoutIn, layoutOut, plots.layoutAttributes, attr, dflt);\n  }\n  var template = layoutIn.template;\n  if (Lib.isPlainObject(template)) {\n    layoutOut.template = template;\n    layoutOut._template = template.layout;\n    layoutOut._dataTemplate = template.data;\n  }\n  coerce('autotypenumbers');\n  var font = Lib.coerceFont(coerce, 'font');\n  var fontSize = font.size;\n  Lib.coerceFont(coerce, 'title.font', Lib.extendFlat({}, font, {\n    size: Math.round(fontSize * 1.4)\n  }));\n  coerce('title.text', layoutOut._dfltTitle.plot);\n  coerce('title.xref');\n  coerce('title.yref');\n  coerce('title.x');\n  coerce('title.y');\n  coerce('title.xanchor');\n  coerce('title.yanchor');\n  coerce('title.pad.t');\n  coerce('title.pad.r');\n  coerce('title.pad.b');\n  coerce('title.pad.l');\n  var uniformtextMode = coerce('uniformtext.mode');\n  if (uniformtextMode) {\n    coerce('uniformtext.minsize');\n  }\n\n  // Make sure that autosize is defaulted to *true*\n  // on layouts with no set width and height for backward compatibly,\n  // in particular https://plotly.com/javascript/responsive-fluid-layout/\n  //\n  // Before https://github.com/plotly/plotly.js/pull/635 ,\n  // layouts with no set width and height were set temporary set to 'initial'\n  // to pass through the autosize routine\n  //\n  // This behavior is subject to change in v3.\n  coerce('autosize', !(layoutIn.width && layoutIn.height));\n  coerce('width');\n  coerce('height');\n  coerce('minreducedwidth');\n  coerce('minreducedheight');\n  coerce('margin.l');\n  coerce('margin.r');\n  coerce('margin.t');\n  coerce('margin.b');\n  coerce('margin.pad');\n  coerce('margin.autoexpand');\n  if (layoutIn.width && layoutIn.height) plots.sanitizeMargins(layoutOut);\n  Registry.getComponentMethod('grid', 'sizeDefaults')(layoutIn, layoutOut);\n  coerce('paper_bgcolor');\n  coerce('separators', formatObj.decimal + formatObj.thousands);\n  coerce('hidesources');\n  coerce('colorway');\n  coerce('datarevision');\n  var uirevision = coerce('uirevision');\n  coerce('editrevision', uirevision);\n  coerce('selectionrevision', uirevision);\n  Registry.getComponentMethod('modebar', 'supplyLayoutDefaults')(layoutIn, layoutOut);\n  Registry.getComponentMethod('shapes', 'supplyDrawNewShapeDefaults')(layoutIn, layoutOut, coerce);\n  Registry.getComponentMethod('selections', 'supplyDrawNewSelectionDefaults')(layoutIn, layoutOut, coerce);\n  coerce('meta');\n\n  // do not include defaults in fullLayout when users do not set transition\n  if (Lib.isPlainObject(layoutIn.transition)) {\n    coerce('transition.duration');\n    coerce('transition.easing');\n    coerce('transition.ordering');\n  }\n  Registry.getComponentMethod('calendars', 'handleDefaults')(layoutIn, layoutOut, 'calendar');\n  Registry.getComponentMethod('fx', 'supplyLayoutGlobalDefaults')(layoutIn, layoutOut, coerce);\n  Lib.coerce(layoutIn, layoutOut, scatterAttrs, 'scattermode');\n};\nfunction getComputedSize(attr) {\n  return typeof attr === 'string' && attr.substr(attr.length - 2) === 'px' && parseFloat(attr);\n}\nplots.plotAutoSize = function plotAutoSize(gd, layout, fullLayout) {\n  var context = gd._context || {};\n  var frameMargins = context.frameMargins;\n  var newWidth;\n  var newHeight;\n  var isPlotDiv = Lib.isPlotDiv(gd);\n  if (isPlotDiv) gd.emit('plotly_autosize');\n\n  // embedded in an iframe - just take the full iframe size\n  // if we get to this point, with no aspect ratio restrictions\n  if (context.fillFrame) {\n    newWidth = window.innerWidth;\n    newHeight = window.innerHeight;\n\n    // somehow we get a few extra px height sometimes...\n    // just hide it\n    document.body.style.overflow = 'hidden';\n  } else {\n    // plotly.js - let the developers do what they want, either\n    // provide height and width for the container div,\n    // specify size in layout, or take the defaults,\n    // but don't enforce any ratio restrictions\n    var computedStyle = isPlotDiv ? window.getComputedStyle(gd) : {};\n    newWidth = getComputedSize(computedStyle.width) || getComputedSize(computedStyle.maxWidth) || fullLayout.width;\n    newHeight = getComputedSize(computedStyle.height) || getComputedSize(computedStyle.maxHeight) || fullLayout.height;\n    if (isNumeric(frameMargins) && frameMargins > 0) {\n      var factor = 1 - 2 * frameMargins;\n      newWidth = Math.round(factor * newWidth);\n      newHeight = Math.round(factor * newHeight);\n    }\n  }\n  var minWidth = plots.layoutAttributes.width.min;\n  var minHeight = plots.layoutAttributes.height.min;\n  if (newWidth < minWidth) newWidth = minWidth;\n  if (newHeight < minHeight) newHeight = minHeight;\n  var widthHasChanged = !layout.width && Math.abs(fullLayout.width - newWidth) > 1;\n  var heightHasChanged = !layout.height && Math.abs(fullLayout.height - newHeight) > 1;\n  if (heightHasChanged || widthHasChanged) {\n    if (widthHasChanged) fullLayout.width = newWidth;\n    if (heightHasChanged) fullLayout.height = newHeight;\n  }\n\n  // cache initial autosize value, used in relayout when\n  // width or height values are set to null\n  if (!gd._initialAutoSize) {\n    gd._initialAutoSize = {\n      width: newWidth,\n      height: newHeight\n    };\n  }\n  plots.sanitizeMargins(fullLayout);\n};\nplots.supplyLayoutModuleDefaults = function (layoutIn, layoutOut, fullData, transitionData) {\n  var componentsRegistry = Registry.componentsRegistry;\n  var basePlotModules = layoutOut._basePlotModules;\n  var component, i, _module;\n  var Cartesian = Registry.subplotsRegistry.cartesian;\n\n  // check if any components need to add more base plot modules\n  // that weren't captured by traces\n  for (component in componentsRegistry) {\n    _module = componentsRegistry[component];\n    if (_module.includeBasePlot) {\n      _module.includeBasePlot(layoutIn, layoutOut);\n    }\n  }\n\n  // make sure we *at least* have some cartesian axes\n  if (!basePlotModules.length) {\n    basePlotModules.push(Cartesian);\n  }\n\n  // ensure all cartesian axes have at least one subplot\n  if (layoutOut._has('cartesian')) {\n    Registry.getComponentMethod('grid', 'contentDefaults')(layoutIn, layoutOut);\n    Cartesian.finalizeSubplots(layoutIn, layoutOut);\n  }\n\n  // sort subplot lists\n  for (var subplotType in layoutOut._subplots) {\n    layoutOut._subplots[subplotType].sort(Lib.subplotSort);\n  }\n\n  // base plot module layout defaults\n  for (i = 0; i < basePlotModules.length; i++) {\n    _module = basePlotModules[i];\n\n    // e.g. pie does not have a layout-defaults step\n    if (_module.supplyLayoutDefaults) {\n      _module.supplyLayoutDefaults(layoutIn, layoutOut, fullData);\n    }\n  }\n\n  // trace module layout defaults\n  // use _modules rather than _visibleModules so that even\n  // legendonly traces can include settings - eg barmode, which affects\n  // legend.traceorder default value.\n  var modules = layoutOut._modules;\n  for (i = 0; i < modules.length; i++) {\n    _module = modules[i];\n    if (_module.supplyLayoutDefaults) {\n      _module.supplyLayoutDefaults(layoutIn, layoutOut, fullData);\n    }\n  }\n\n  // transform module layout defaults\n  var transformModules = layoutOut._transformModules;\n  for (i = 0; i < transformModules.length; i++) {\n    _module = transformModules[i];\n    if (_module.supplyLayoutDefaults) {\n      _module.supplyLayoutDefaults(layoutIn, layoutOut, fullData, transitionData);\n    }\n  }\n  for (component in componentsRegistry) {\n    _module = componentsRegistry[component];\n    if (_module.supplyLayoutDefaults) {\n      _module.supplyLayoutDefaults(layoutIn, layoutOut, fullData);\n    }\n  }\n};\n\n// Remove all plotly attributes from a div so it can be replotted fresh\n// TODO: these really need to be encapsulated into a much smaller set...\nplots.purge = function (gd) {\n  // note: we DO NOT remove _context because it doesn't change when we insert\n  // a new plot, and may have been set outside of our scope.\n\n  var fullLayout = gd._fullLayout || {};\n  if (fullLayout._glcontainer !== undefined) {\n    fullLayout._glcontainer.selectAll('.gl-canvas').remove();\n    fullLayout._glcontainer.remove();\n    fullLayout._glcanvas = null;\n  }\n\n  // remove modebar\n  if (fullLayout._modeBar) fullLayout._modeBar.destroy();\n  if (gd._transitionData) {\n    // Ensure any dangling callbacks are simply dropped if the plot is purged.\n    // This is more or less only actually important for testing.\n    if (gd._transitionData._interruptCallbacks) {\n      gd._transitionData._interruptCallbacks.length = 0;\n    }\n    if (gd._transitionData._animationRaf) {\n      window.cancelAnimationFrame(gd._transitionData._animationRaf);\n    }\n  }\n\n  // remove any planned throttles\n  Lib.clearThrottle();\n\n  // remove responsive handler\n  Lib.clearResponsive(gd);\n\n  // data and layout\n  delete gd.data;\n  delete gd.layout;\n  delete gd._fullData;\n  delete gd._fullLayout;\n  delete gd.calcdata;\n  delete gd.empty;\n  delete gd.fid;\n  delete gd.undoqueue; // action queue\n  delete gd.undonum;\n  delete gd.autoplay; // are we doing an action that doesn't go in undo queue?\n  delete gd.changed;\n\n  // these get recreated on _doPlot anyway, but just to be safe\n  // (and to have a record of them...)\n  delete gd._promises;\n  delete gd._redrawTimer;\n  delete gd._hmlumcount;\n  delete gd._hmpixcount;\n  delete gd._transitionData;\n  delete gd._transitioning;\n  delete gd._initialAutoSize;\n  delete gd._transitioningWithDuration;\n\n  // created during certain events, that *should* clean them up\n  // themselves, but may not if there was an error\n  delete gd._dragging;\n  delete gd._dragged;\n  delete gd._dragdata;\n  delete gd._hoverdata;\n  delete gd._snapshotInProgress;\n  delete gd._editing;\n  delete gd._mouseDownTime;\n  delete gd._legendMouseDownTime;\n\n  // remove all event listeners\n  if (gd.removeAllListeners) gd.removeAllListeners();\n};\nplots.style = function (gd) {\n  var _modules = gd._fullLayout._visibleModules;\n  var styleModules = [];\n  var i;\n\n  // some trace modules reuse the same style method,\n  // make sure to not unnecessary call them multiple times.\n\n  for (i = 0; i < _modules.length; i++) {\n    var _module = _modules[i];\n    if (_module.style) {\n      Lib.pushUnique(styleModules, _module.style);\n    }\n  }\n  for (i = 0; i < styleModules.length; i++) {\n    styleModules[i](gd);\n  }\n};\nplots.sanitizeMargins = function (fullLayout) {\n  // polar doesn't do margins...\n  if (!fullLayout || !fullLayout.margin) return;\n  var width = fullLayout.width;\n  var height = fullLayout.height;\n  var margin = fullLayout.margin;\n  var plotWidth = width - (margin.l + margin.r);\n  var plotHeight = height - (margin.t + margin.b);\n  var correction;\n\n  // if margin.l + margin.r = 0 then plotWidth > 0\n  // as width >= 10 by supplyDefaults\n  // similarly for margin.t + margin.b\n\n  if (plotWidth < 0) {\n    correction = (width - 1) / (margin.l + margin.r);\n    margin.l = Math.floor(correction * margin.l);\n    margin.r = Math.floor(correction * margin.r);\n  }\n  if (plotHeight < 0) {\n    correction = (height - 1) / (margin.t + margin.b);\n    margin.t = Math.floor(correction * margin.t);\n    margin.b = Math.floor(correction * margin.b);\n  }\n};\nplots.clearAutoMarginIds = function (gd) {\n  gd._fullLayout._pushmarginIds = {};\n};\nplots.allowAutoMargin = function (gd, id) {\n  gd._fullLayout._pushmarginIds[id] = 1;\n};\nfunction initMargins(fullLayout) {\n  var margin = fullLayout.margin;\n  if (!fullLayout._size) {\n    var gs = fullLayout._size = {\n      l: Math.round(margin.l),\n      r: Math.round(margin.r),\n      t: Math.round(margin.t),\n      b: Math.round(margin.b),\n      p: Math.round(margin.pad)\n    };\n    gs.w = Math.round(fullLayout.width) - gs.l - gs.r;\n    gs.h = Math.round(fullLayout.height) - gs.t - gs.b;\n  }\n  if (!fullLayout._pushmargin) fullLayout._pushmargin = {};\n  if (!fullLayout._pushmarginIds) fullLayout._pushmarginIds = {};\n}\n\n// non-negotiable - this is the smallest height we will allow users to specify via explicit margins\nvar MIN_SPECIFIED_WIDTH = 2;\nvar MIN_SPECIFIED_HEIGHT = 2;\n\n/**\n * autoMargin: called by components that may need to expand the margins to\n * be rendered on-plot.\n *\n * @param {DOM element} gd\n * @param {string} id - an identifier unique (within this plot) to this object,\n *     so we can remove a previous margin expansion from the same object.\n * @param {object} o - the margin requirements of this object, or omit to delete\n *     this entry (like if it's hidden). Keys are:\n *     x, y: plot fraction of the anchor point.\n *     xl, xr, yt, yb: if the object has an extent defined in plot fraction,\n *         you can specify both edges as plot fractions in each dimension\n *     l, r, t, b: the pixels to pad past the plot fraction x[l|r] and y[t|b]\n *     pad: extra pixels to add in all directions, default 12 (why?)\n */\nplots.autoMargin = function (gd, id, o) {\n  var fullLayout = gd._fullLayout;\n  var width = fullLayout.width;\n  var height = fullLayout.height;\n  var margin = fullLayout.margin;\n  var minreducedwidth = fullLayout.minreducedwidth;\n  var minreducedheight = fullLayout.minreducedheight;\n  var minFinalWidth = Lib.constrain(width - margin.l - margin.r, MIN_SPECIFIED_WIDTH, minreducedwidth);\n  var minFinalHeight = Lib.constrain(height - margin.t - margin.b, MIN_SPECIFIED_HEIGHT, minreducedheight);\n  var maxSpaceW = Math.max(0, width - minFinalWidth);\n  var maxSpaceH = Math.max(0, height - minFinalHeight);\n  var pushMargin = fullLayout._pushmargin;\n  var pushMarginIds = fullLayout._pushmarginIds;\n  if (margin.autoexpand !== false) {\n    if (!o) {\n      delete pushMargin[id];\n      delete pushMarginIds[id];\n    } else {\n      var pad = o.pad;\n      if (pad === undefined) {\n        // if no explicit pad is given, use 12px unless there's a\n        // specified margin that's smaller than that\n        pad = Math.min(12, margin.l, margin.r, margin.t, margin.b);\n      }\n\n      // if the item is too big, just give it enough automargin to\n      // make sure you can still grab it and bring it back\n      if (maxSpaceW) {\n        var rW = (o.l + o.r) / maxSpaceW;\n        if (rW > 1) {\n          o.l /= rW;\n          o.r /= rW;\n        }\n      }\n      if (maxSpaceH) {\n        var rH = (o.t + o.b) / maxSpaceH;\n        if (rH > 1) {\n          o.t /= rH;\n          o.b /= rH;\n        }\n      }\n      var xl = o.xl !== undefined ? o.xl : o.x;\n      var xr = o.xr !== undefined ? o.xr : o.x;\n      var yt = o.yt !== undefined ? o.yt : o.y;\n      var yb = o.yb !== undefined ? o.yb : o.y;\n      pushMargin[id] = {\n        l: {\n          val: xl,\n          size: o.l + pad\n        },\n        r: {\n          val: xr,\n          size: o.r + pad\n        },\n        b: {\n          val: yb,\n          size: o.b + pad\n        },\n        t: {\n          val: yt,\n          size: o.t + pad\n        }\n      };\n      pushMarginIds[id] = 1;\n    }\n    if (!fullLayout._replotting) {\n      return plots.doAutoMargin(gd);\n    }\n  }\n};\nfunction needsRedrawForShift(gd) {\n  if ('_redrawFromAutoMarginCount' in gd._fullLayout) {\n    return false;\n  }\n  var axList = axisIDs.list(gd, '', true);\n  for (var ax in axList) {\n    if (axList[ax].autoshift || axList[ax].shift) return true;\n  }\n  return false;\n}\nplots.doAutoMargin = function (gd) {\n  var fullLayout = gd._fullLayout;\n  var width = fullLayout.width;\n  var height = fullLayout.height;\n  if (!fullLayout._size) fullLayout._size = {};\n  initMargins(fullLayout);\n  var gs = fullLayout._size;\n  var margin = fullLayout.margin;\n  var oldMargins = Lib.extendFlat({}, gs);\n\n  // adjust margins for outside components\n  // fullLayout.margin is the requested margin,\n  // fullLayout._size has margins and plotsize after adjustment\n  var ml = margin.l;\n  var mr = margin.r;\n  var mt = margin.t;\n  var mb = margin.b;\n  var pushMargin = fullLayout._pushmargin;\n  var pushMarginIds = fullLayout._pushmarginIds;\n  var minreducedwidth = fullLayout.minreducedwidth;\n  var minreducedheight = fullLayout.minreducedheight;\n  if (fullLayout.margin.autoexpand !== false) {\n    for (var k in pushMargin) {\n      if (!pushMarginIds[k]) delete pushMargin[k];\n    }\n\n    // fill in the requested margins\n    pushMargin.base = {\n      l: {\n        val: 0,\n        size: ml\n      },\n      r: {\n        val: 1,\n        size: mr\n      },\n      t: {\n        val: 1,\n        size: mt\n      },\n      b: {\n        val: 0,\n        size: mb\n      }\n    };\n\n    // now cycle through all the combinations of l and r\n    // (and t and b) to find the required margins\n\n    for (var k1 in pushMargin) {\n      var pushleft = pushMargin[k1].l || {};\n      var pushbottom = pushMargin[k1].b || {};\n      var fl = pushleft.val;\n      var pl = pushleft.size;\n      var fb = pushbottom.val;\n      var pb = pushbottom.size;\n      for (var k2 in pushMargin) {\n        if (isNumeric(pl) && pushMargin[k2].r) {\n          var fr = pushMargin[k2].r.val;\n          var pr = pushMargin[k2].r.size;\n          if (fr > fl) {\n            var newL = (pl * fr + (pr - width) * fl) / (fr - fl);\n            var newR = (pr * (1 - fl) + (pl - width) * (1 - fr)) / (fr - fl);\n            if (newL + newR > ml + mr) {\n              ml = newL;\n              mr = newR;\n            }\n          }\n        }\n        if (isNumeric(pb) && pushMargin[k2].t) {\n          var ft = pushMargin[k2].t.val;\n          var pt = pushMargin[k2].t.size;\n          if (ft > fb) {\n            var newB = (pb * ft + (pt - height) * fb) / (ft - fb);\n            var newT = (pt * (1 - fb) + (pb - height) * (1 - ft)) / (ft - fb);\n            if (newB + newT > mb + mt) {\n              mb = newB;\n              mt = newT;\n            }\n          }\n        }\n      }\n    }\n  }\n  var minFinalWidth = Lib.constrain(width - margin.l - margin.r, MIN_SPECIFIED_WIDTH, minreducedwidth);\n  var minFinalHeight = Lib.constrain(height - margin.t - margin.b, MIN_SPECIFIED_HEIGHT, minreducedheight);\n  var maxSpaceW = Math.max(0, width - minFinalWidth);\n  var maxSpaceH = Math.max(0, height - minFinalHeight);\n  if (maxSpaceW) {\n    var rW = (ml + mr) / maxSpaceW;\n    if (rW > 1) {\n      ml /= rW;\n      mr /= rW;\n    }\n  }\n  if (maxSpaceH) {\n    var rH = (mb + mt) / maxSpaceH;\n    if (rH > 1) {\n      mb /= rH;\n      mt /= rH;\n    }\n  }\n  gs.l = Math.round(ml);\n  gs.r = Math.round(mr);\n  gs.t = Math.round(mt);\n  gs.b = Math.round(mb);\n  gs.p = Math.round(margin.pad);\n  gs.w = Math.round(width) - gs.l - gs.r;\n  gs.h = Math.round(height) - gs.t - gs.b;\n\n  // if things changed and we're not already redrawing, trigger a redraw\n  if (!fullLayout._replotting && (plots.didMarginChange(oldMargins, gs) || needsRedrawForShift(gd))) {\n    if ('_redrawFromAutoMarginCount' in fullLayout) {\n      fullLayout._redrawFromAutoMarginCount++;\n    } else {\n      fullLayout._redrawFromAutoMarginCount = 1;\n    }\n\n    // Always allow at least one redraw and give each margin-push\n    // call 3 loops to converge. Of course, for most cases this way too many,\n    // but let's keep things on the safe side until we fix our\n    // auto-margin pipeline problems:\n    // https://github.com/plotly/plotly.js/issues/2704\n    var maxNumberOfRedraws = 3 * (1 + Object.keys(pushMarginIds).length);\n    if (fullLayout._redrawFromAutoMarginCount < maxNumberOfRedraws) {\n      return Registry.call('_doPlot', gd);\n    } else {\n      fullLayout._size = oldMargins;\n      Lib.warn('Too many auto-margin redraws.');\n    }\n  }\n  refineTicks(gd);\n};\nfunction refineTicks(gd) {\n  var axList = axisIDs.list(gd, '', true);\n  ['_adjustTickLabelsOverflow', '_hideCounterAxisInsideTickLabels'].forEach(function (k) {\n    for (var i = 0; i < axList.length; i++) {\n      var hideFn = axList[i][k];\n      if (hideFn) hideFn();\n    }\n  });\n}\nvar marginKeys = ['l', 'r', 't', 'b', 'p', 'w', 'h'];\nplots.didMarginChange = function (margin0, margin1) {\n  for (var i = 0; i < marginKeys.length; i++) {\n    var k = marginKeys[i];\n    var m0 = margin0[k];\n    var m1 = margin1[k];\n    // use 1px tolerance in case we old/new differ only\n    // by rounding errors, which can lead to infinite loops\n    if (!isNumeric(m0) || Math.abs(m1 - m0) > 1) {\n      return true;\n    }\n  }\n  return false;\n};\n\n/**\n * JSONify the graph data and layout\n *\n * This function needs to recurse because some src can be inside\n * sub-objects.\n *\n * It also strips out functions and private (starts with _) elements.\n * Therefore, we can add temporary things to data and layout that don't\n * get saved.\n *\n * @param gd The graphDiv\n * @param {Boolean} dataonly If true, don't return layout.\n * @param {'keepref'|'keepdata'|'keepall'} [mode='keepref'] Filter what's kept\n *      keepref: remove data for which there's a src present\n *          eg if there's xsrc present (and xsrc is well-formed,\n *          ie has : and some chars before it), strip out x\n *      keepdata: remove all src tags, don't remove the data itself\n *      keepall: keep data and src\n * @param {String} output If you specify 'object', the result will not be stringified\n * @param {Boolean} useDefaults If truthy, use _fullLayout and _fullData\n * @param {Boolean} includeConfig If truthy, include _context\n * @returns {Object|String}\n */\nplots.graphJson = function (gd, dataonly, mode, output, useDefaults, includeConfig) {\n  // if the defaults aren't supplied yet, we need to do that...\n  if (useDefaults && dataonly && !gd._fullData || useDefaults && !dataonly && !gd._fullLayout) {\n    plots.supplyDefaults(gd);\n  }\n  var data = useDefaults ? gd._fullData : gd.data;\n  var layout = useDefaults ? gd._fullLayout : gd.layout;\n  var frames = (gd._transitionData || {})._frames;\n  function stripObj(d, keepFunction) {\n    if (typeof d === 'function') {\n      return keepFunction ? '_function_' : null;\n    }\n    if (Lib.isPlainObject(d)) {\n      var o = {};\n      var src;\n      Object.keys(d).sort().forEach(function (v) {\n        // remove private elements and functions\n        // _ is for private, [ is a mistake ie [object Object]\n        if (['_', '['].indexOf(v.charAt(0)) !== -1) return;\n\n        // if a function, add if necessary then move on\n        if (typeof d[v] === 'function') {\n          if (keepFunction) o[v] = '_function';\n          return;\n        }\n\n        // look for src/data matches and remove the appropriate one\n        if (mode === 'keepdata') {\n          // keepdata: remove all ...src tags\n          if (v.substr(v.length - 3) === 'src') {\n            return;\n          }\n        } else if (mode === 'keepstream') {\n          // keep sourced data if it's being streamed.\n          // similar to keepref, but if the 'stream' object exists\n          // in a trace, we will keep the data array.\n          src = d[v + 'src'];\n          if (typeof src === 'string' && src.indexOf(':') > 0) {\n            if (!Lib.isPlainObject(d.stream)) {\n              return;\n            }\n          }\n        } else if (mode !== 'keepall') {\n          // keepref: remove sourced data but only\n          // if the source tag is well-formed\n          src = d[v + 'src'];\n          if (typeof src === 'string' && src.indexOf(':') > 0) {\n            return;\n          }\n        }\n\n        // OK, we're including this... recurse into it\n        o[v] = stripObj(d[v], keepFunction);\n      });\n      return o;\n    }\n    if (Array.isArray(d)) {\n      return d.map(function (x) {\n        return stripObj(x, keepFunction);\n      });\n    }\n    if (Lib.isTypedArray(d)) {\n      return Lib.simpleMap(d, Lib.identity);\n    }\n\n    // convert native dates to date strings...\n    // mostly for external users exporting to plotly\n    if (Lib.isJSDate(d)) return Lib.ms2DateTimeLocal(+d);\n    return d;\n  }\n  var obj = {\n    data: (data || []).map(function (v) {\n      var d = stripObj(v);\n      // fit has some little arrays in it that don't contain data,\n      // just fit params and meta\n      if (dataonly) {\n        delete d.fit;\n      }\n      return d;\n    })\n  };\n  if (!dataonly) {\n    obj.layout = stripObj(layout);\n    if (useDefaults) {\n      var gs = layout._size;\n      obj.layout.computed = {\n        margin: {\n          b: gs.b,\n          l: gs.l,\n          r: gs.r,\n          t: gs.t\n        }\n      };\n    }\n  }\n  if (frames) obj.frames = stripObj(frames);\n  if (includeConfig) obj.config = stripObj(gd._context, true);\n  return output === 'object' ? obj : JSON.stringify(obj);\n};\n\n/**\n * Modify a keyframe using a list of operations:\n *\n * @param {array of objects} operations\n *      Sequence of operations to be performed on the keyframes\n */\nplots.modifyFrames = function (gd, operations) {\n  var i, op, frame;\n  var _frames = gd._transitionData._frames;\n  var _frameHash = gd._transitionData._frameHash;\n  for (i = 0; i < operations.length; i++) {\n    op = operations[i];\n    switch (op.type) {\n      // No reason this couldn't exist, but is currently unused/untested:\n      /* case 'rename':\n          frame = _frames[op.index];\n          delete _frameHash[frame.name];\n          _frameHash[op.name] = frame;\n          frame.name = op.name;\n          break;*/\n      case 'replace':\n        frame = op.value;\n        var oldName = (_frames[op.index] || {}).name;\n        var newName = frame.name;\n        _frames[op.index] = _frameHash[newName] = frame;\n        if (newName !== oldName) {\n          // If name has changed in addition to replacement, then update\n          // the lookup table:\n          delete _frameHash[oldName];\n          _frameHash[newName] = frame;\n        }\n        break;\n      case 'insert':\n        frame = op.value;\n        _frameHash[frame.name] = frame;\n        _frames.splice(op.index, 0, frame);\n        break;\n      case 'delete':\n        frame = _frames[op.index];\n        delete _frameHash[frame.name];\n        _frames.splice(op.index, 1);\n        break;\n    }\n  }\n  return Promise.resolve();\n};\n\n/*\n * Compute a keyframe. Merge a keyframe into its base frame(s) and\n * expand properties.\n *\n * @param {object} frameLookup\n *      An object containing frames keyed by name (i.e. gd._transitionData._frameHash)\n * @param {string} frame\n *      The name of the keyframe to be computed\n *\n * Returns: a new object with the merged content\n */\nplots.computeFrame = function (gd, frameName) {\n  var frameLookup = gd._transitionData._frameHash;\n  var i, traceIndices, traceIndex, destIndex;\n\n  // Null or undefined will fail on .toString(). We'll allow numbers since we\n  // make it clear frames must be given string names, but we'll allow numbers\n  // here since they're otherwise fine for looking up frames as long as they're\n  // properly cast to strings. We really just want to ensure here that this\n  // 1) doesn't fail, and\n  // 2) doens't give an incorrect answer (which String(frameName) would)\n  if (!frameName) {\n    throw new Error('computeFrame must be given a string frame name');\n  }\n  var framePtr = frameLookup[frameName.toString()];\n\n  // Return false if the name is invalid:\n  if (!framePtr) {\n    return false;\n  }\n  var frameStack = [framePtr];\n  var frameNameStack = [framePtr.name];\n\n  // Follow frame pointers:\n  while (framePtr.baseframe && (framePtr = frameLookup[framePtr.baseframe.toString()])) {\n    // Avoid infinite loops:\n    if (frameNameStack.indexOf(framePtr.name) !== -1) break;\n    frameStack.push(framePtr);\n    frameNameStack.push(framePtr.name);\n  }\n\n  // A new object for the merged result:\n  var result = {};\n\n  // Merge, starting with the last and ending with the desired frame:\n  while (framePtr = frameStack.pop()) {\n    if (framePtr.layout) {\n      result.layout = plots.extendLayout(result.layout, framePtr.layout);\n    }\n    if (framePtr.data) {\n      if (!result.data) {\n        result.data = [];\n      }\n      traceIndices = framePtr.traces;\n      if (!traceIndices) {\n        // If not defined, assume serial order starting at zero\n        traceIndices = [];\n        for (i = 0; i < framePtr.data.length; i++) {\n          traceIndices[i] = i;\n        }\n      }\n      if (!result.traces) {\n        result.traces = [];\n      }\n      for (i = 0; i < framePtr.data.length; i++) {\n        // Loop through this frames data, find out where it should go,\n        // and merge it!\n        traceIndex = traceIndices[i];\n        if (traceIndex === undefined || traceIndex === null) {\n          continue;\n        }\n        destIndex = result.traces.indexOf(traceIndex);\n        if (destIndex === -1) {\n          destIndex = result.data.length;\n          result.traces[destIndex] = traceIndex;\n        }\n        result.data[destIndex] = plots.extendTrace(result.data[destIndex], framePtr.data[i]);\n      }\n    }\n  }\n  return result;\n};\n\n/*\n * Recompute the lookup table that maps frame name -> frame object. addFrames/\n * deleteFrames already manages this data one at a time, so the only time this\n * is necessary is if you poke around manually in `gd._transitionData._frames`\n * and create and haven't updated the lookup table.\n */\nplots.recomputeFrameHash = function (gd) {\n  var hash = gd._transitionData._frameHash = {};\n  var frames = gd._transitionData._frames;\n  for (var i = 0; i < frames.length; i++) {\n    var frame = frames[i];\n    if (frame && frame.name) {\n      hash[frame.name] = frame;\n    }\n  }\n};\n\n/**\n * Extend an object, treating container arrays very differently by extracting\n * their contents and merging them separately.\n *\n * This exists so that we can extendDeepNoArrays and avoid stepping into data\n * arrays without knowledge of the plot schema, but so that we may also manually\n * recurse into known container arrays, such as transforms.\n *\n * See extendTrace and extendLayout below for usage.\n */\nplots.extendObjectWithContainers = function (dest, src, containerPaths) {\n  var containerProp, containerVal, i, j, srcProp, destProp, srcContainer, destContainer;\n  var copy = Lib.extendDeepNoArrays({}, src || {});\n  var expandedObj = Lib.expandObjectPaths(copy);\n  var containerObj = {};\n\n  // Step through and extract any container properties. Otherwise extendDeepNoArrays\n  // will clobber any existing properties with an empty array and then supplyDefaults\n  // will reset everything to defaults.\n  if (containerPaths && containerPaths.length) {\n    for (i = 0; i < containerPaths.length; i++) {\n      containerProp = Lib.nestedProperty(expandedObj, containerPaths[i]);\n      containerVal = containerProp.get();\n      if (containerVal === undefined) {\n        Lib.nestedProperty(containerObj, containerPaths[i]).set(null);\n      } else {\n        containerProp.set(null);\n        Lib.nestedProperty(containerObj, containerPaths[i]).set(containerVal);\n      }\n    }\n  }\n  dest = Lib.extendDeepNoArrays(dest || {}, expandedObj);\n  if (containerPaths && containerPaths.length) {\n    for (i = 0; i < containerPaths.length; i++) {\n      srcProp = Lib.nestedProperty(containerObj, containerPaths[i]);\n      srcContainer = srcProp.get();\n      if (!srcContainer) continue;\n      destProp = Lib.nestedProperty(dest, containerPaths[i]);\n      destContainer = destProp.get();\n      if (!Array.isArray(destContainer)) {\n        destContainer = [];\n        destProp.set(destContainer);\n      }\n      for (j = 0; j < srcContainer.length; j++) {\n        var srcObj = srcContainer[j];\n        if (srcObj === null) destContainer[j] = null;else {\n          destContainer[j] = plots.extendObjectWithContainers(destContainer[j], srcObj);\n        }\n      }\n      destProp.set(destContainer);\n    }\n  }\n  return dest;\n};\nplots.dataArrayContainers = ['transforms', 'dimensions'];\nplots.layoutArrayContainers = Registry.layoutArrayContainers;\n\n/*\n * Extend a trace definition. This method:\n *\n *  1. directly transfers any array references\n *  2. manually recurses into container arrays like transforms\n *\n * The result is the original object reference with the new contents merged in.\n */\nplots.extendTrace = function (destTrace, srcTrace) {\n  return plots.extendObjectWithContainers(destTrace, srcTrace, plots.dataArrayContainers);\n};\n\n/*\n * Extend a layout definition. This method:\n *\n *  1. directly transfers any array references (not critically important for\n *     layout since there aren't really data arrays)\n *  2. manually recurses into container arrays like annotations\n *\n * The result is the original object reference with the new contents merged in.\n */\nplots.extendLayout = function (destLayout, srcLayout) {\n  return plots.extendObjectWithContainers(destLayout, srcLayout, plots.layoutArrayContainers);\n};\n\n/**\n * Transition to a set of new data and layout properties from Plotly.animate\n *\n * @param {DOM element} gd\n * @param {Object[]} data\n *      an array of data objects following the normal Plotly data definition format\n * @param {Object} layout\n *      a layout object, following normal Plotly layout format\n * @param {Number[]} traces\n *      indices of the corresponding traces specified in `data`\n * @param {Object} frameOpts\n *      options for the frame (i.e. whether to redraw post-transition)\n * @param {Object} transitionOpts\n *      options for the transition\n */\nplots.transition = function (gd, data, layout, traces, frameOpts, transitionOpts) {\n  var opts = {\n    redraw: frameOpts.redraw\n  };\n  var transitionedTraces = {};\n  var axEdits = [];\n  opts.prepareFn = function () {\n    var dataLength = Array.isArray(data) ? data.length : 0;\n    var traceIndices = traces.slice(0, dataLength);\n    for (var i = 0; i < traceIndices.length; i++) {\n      var traceIdx = traceIndices[i];\n      var trace = gd._fullData[traceIdx];\n      var _module = trace._module;\n\n      // There's nothing to do if this module is not defined:\n      if (!_module) continue;\n\n      // Don't register the trace as transitioned if it doesn't know what to do.\n      // If it *is* registered, it will receive a callback that it's responsible\n      // for calling in order to register the transition as having completed.\n      if (_module.animatable) {\n        var n = _module.basePlotModule.name;\n        if (!transitionedTraces[n]) transitionedTraces[n] = [];\n        transitionedTraces[n].push(traceIdx);\n      }\n      gd.data[traceIndices[i]] = plots.extendTrace(gd.data[traceIndices[i]], data[i]);\n    }\n\n    // Follow the same procedure. Clone it so we don't mangle the input, then\n    // expand any object paths so we can merge deep into gd.layout:\n    var layoutUpdate = Lib.expandObjectPaths(Lib.extendDeepNoArrays({}, layout));\n\n    // Before merging though, we need to modify the incoming layout. We only\n    // know how to *transition* layout ranges, so it's imperative that a new\n    // range not be sent to the layout before the transition has started. So\n    // we must remove the things we can transition:\n    var axisAttrRe = /^[xy]axis[0-9]*$/;\n    for (var attr in layoutUpdate) {\n      if (!axisAttrRe.test(attr)) continue;\n      delete layoutUpdate[attr].range;\n    }\n    plots.extendLayout(gd.layout, layoutUpdate);\n\n    // Supply defaults after applying the incoming properties. Note that any attempt\n    // to simplify this step and reduce the amount of work resulted in the reconstruction\n    // of essentially the whole supplyDefaults step, so that it seems sensible to just use\n    // supplyDefaults even though it's heavier than would otherwise be desired for\n    // transitions:\n\n    // first delete calcdata so supplyDefaults knows a calc step is coming\n    delete gd.calcdata;\n    plots.supplyDefaults(gd);\n    plots.doCalcdata(gd);\n    var newLayout = Lib.expandObjectPaths(layout);\n    if (newLayout) {\n      var subplots = gd._fullLayout._plots;\n      for (var k in subplots) {\n        var plotinfo = subplots[k];\n        var xa = plotinfo.xaxis;\n        var ya = plotinfo.yaxis;\n        var xr0 = xa.range.slice();\n        var yr0 = ya.range.slice();\n        var xr1 = null;\n        var yr1 = null;\n        var editX = null;\n        var editY = null;\n        if (Array.isArray(newLayout[xa._name + '.range'])) {\n          xr1 = newLayout[xa._name + '.range'].slice();\n        } else if (Array.isArray((newLayout[xa._name] || {}).range)) {\n          xr1 = newLayout[xa._name].range.slice();\n        }\n        if (Array.isArray(newLayout[ya._name + '.range'])) {\n          yr1 = newLayout[ya._name + '.range'].slice();\n        } else if (Array.isArray((newLayout[ya._name] || {}).range)) {\n          yr1 = newLayout[ya._name].range.slice();\n        }\n        if (xr0 && xr1 && (xa.r2l(xr0[0]) !== xa.r2l(xr1[0]) || xa.r2l(xr0[1]) !== xa.r2l(xr1[1]))) {\n          editX = {\n            xr0: xr0,\n            xr1: xr1\n          };\n        }\n        if (yr0 && yr1 && (ya.r2l(yr0[0]) !== ya.r2l(yr1[0]) || ya.r2l(yr0[1]) !== ya.r2l(yr1[1]))) {\n          editY = {\n            yr0: yr0,\n            yr1: yr1\n          };\n        }\n        if (editX || editY) {\n          axEdits.push(Lib.extendFlat({\n            plotinfo: plotinfo\n          }, editX, editY));\n        }\n      }\n    }\n    return Promise.resolve();\n  };\n  opts.runFn = function (makeCallback) {\n    var traceTransitionOpts;\n    var basePlotModules = gd._fullLayout._basePlotModules;\n    var hasAxisTransition = axEdits.length;\n    var i;\n    if (layout) {\n      for (i = 0; i < basePlotModules.length; i++) {\n        if (basePlotModules[i].transitionAxes) {\n          basePlotModules[i].transitionAxes(gd, axEdits, transitionOpts, makeCallback);\n        }\n      }\n    }\n\n    // Here handle the exception that we refuse to animate scales and axes at the same\n    // time. In other words, if there's an axis transition, then set the data transition\n    // to instantaneous.\n    if (hasAxisTransition) {\n      traceTransitionOpts = Lib.extendFlat({}, transitionOpts);\n      traceTransitionOpts.duration = 0;\n      // This means do not transition cartesian traces,\n      // this happens on layout-only (e.g. axis range) animations\n      delete transitionedTraces.cartesian;\n    } else {\n      traceTransitionOpts = transitionOpts;\n    }\n\n    // Note that we pass a callback to *create* the callback that must be invoked on completion.\n    // This is since not all traces know about transitions, so it greatly simplifies matters if\n    // the trace is responsible for creating a callback, if needed, and then executing it when\n    // the time is right.\n    for (var n in transitionedTraces) {\n      var traceIndices = transitionedTraces[n];\n      var _module = gd._fullData[traceIndices[0]]._module;\n      _module.basePlotModule.plot(gd, traceIndices, traceTransitionOpts, makeCallback);\n    }\n  };\n  return _transition(gd, transitionOpts, opts);\n};\n\n/**\n * Transition to a set of new data and layout properties from Plotly.react\n *\n * @param {DOM element} gd\n * @param {object} restyleFlags\n * - anim {'all'|'some'}\n * @param {object} relayoutFlags\n * - anim {'all'|'some'}\n * @param {object} oldFullLayout : old (pre Plotly.react) fullLayout\n */\nplots.transitionFromReact = function (gd, restyleFlags, relayoutFlags, oldFullLayout) {\n  var fullLayout = gd._fullLayout;\n  var transitionOpts = fullLayout.transition;\n  var opts = {};\n  var axEdits = [];\n  opts.prepareFn = function () {\n    var subplots = fullLayout._plots;\n\n    // no need to redraw at end of transition,\n    // if all changes are animatable\n    opts.redraw = false;\n    if (restyleFlags.anim === 'some') opts.redraw = true;\n    if (relayoutFlags.anim === 'some') opts.redraw = true;\n    for (var k in subplots) {\n      var plotinfo = subplots[k];\n      var xa = plotinfo.xaxis;\n      var ya = plotinfo.yaxis;\n      var xr0 = oldFullLayout[xa._name].range.slice();\n      var yr0 = oldFullLayout[ya._name].range.slice();\n      var xr1 = xa.range.slice();\n      var yr1 = ya.range.slice();\n      xa.setScale();\n      ya.setScale();\n      var editX = null;\n      var editY = null;\n      if (xa.r2l(xr0[0]) !== xa.r2l(xr1[0]) || xa.r2l(xr0[1]) !== xa.r2l(xr1[1])) {\n        editX = {\n          xr0: xr0,\n          xr1: xr1\n        };\n      }\n      if (ya.r2l(yr0[0]) !== ya.r2l(yr1[0]) || ya.r2l(yr0[1]) !== ya.r2l(yr1[1])) {\n        editY = {\n          yr0: yr0,\n          yr1: yr1\n        };\n      }\n      if (editX || editY) {\n        axEdits.push(Lib.extendFlat({\n          plotinfo: plotinfo\n        }, editX, editY));\n      }\n    }\n    return Promise.resolve();\n  };\n  opts.runFn = function (makeCallback) {\n    var fullData = gd._fullData;\n    var fullLayout = gd._fullLayout;\n    var basePlotModules = fullLayout._basePlotModules;\n    var axisTransitionOpts;\n    var traceTransitionOpts;\n    var transitionedTraces;\n    var allTraceIndices = [];\n    for (var i = 0; i < fullData.length; i++) {\n      allTraceIndices.push(i);\n    }\n    function transitionAxes() {\n      if (!gd._fullLayout) return;\n      for (var j = 0; j < basePlotModules.length; j++) {\n        if (basePlotModules[j].transitionAxes) {\n          basePlotModules[j].transitionAxes(gd, axEdits, axisTransitionOpts, makeCallback);\n        }\n      }\n    }\n    function transitionTraces() {\n      if (!gd._fullLayout) return;\n      for (var j = 0; j < basePlotModules.length; j++) {\n        basePlotModules[j].plot(gd, transitionedTraces, traceTransitionOpts, makeCallback);\n      }\n    }\n    if (axEdits.length && restyleFlags.anim) {\n      if (transitionOpts.ordering === 'traces first') {\n        axisTransitionOpts = Lib.extendFlat({}, transitionOpts, {\n          duration: 0\n        });\n        transitionedTraces = allTraceIndices;\n        traceTransitionOpts = transitionOpts;\n        setTimeout(transitionAxes, transitionOpts.duration);\n        transitionTraces();\n      } else {\n        axisTransitionOpts = transitionOpts;\n        transitionedTraces = null;\n        traceTransitionOpts = Lib.extendFlat({}, transitionOpts, {\n          duration: 0\n        });\n        setTimeout(transitionTraces, axisTransitionOpts.duration);\n        transitionAxes();\n      }\n    } else if (axEdits.length) {\n      axisTransitionOpts = transitionOpts;\n      transitionAxes();\n    } else if (restyleFlags.anim) {\n      transitionedTraces = allTraceIndices;\n      traceTransitionOpts = transitionOpts;\n      transitionTraces();\n    }\n  };\n  return _transition(gd, transitionOpts, opts);\n};\n\n/**\n * trace/layout transition wrapper that works\n * for transitions initiated by Plotly.animate and Plotly.react.\n *\n * @param {DOM element} gd\n * @param {object} transitionOpts\n * @param {object} opts\n * - redraw {boolean}\n * - prepareFn {function} *should return a Promise*\n * - runFn {function} ran inside executeTransitions\n */\nfunction _transition(gd, transitionOpts, opts) {\n  var aborted = false;\n  function executeCallbacks(list) {\n    var p = Promise.resolve();\n    if (!list) return p;\n    while (list.length) {\n      p = p.then(list.shift());\n    }\n    return p;\n  }\n  function flushCallbacks(list) {\n    if (!list) return;\n    while (list.length) {\n      list.shift();\n    }\n  }\n  function executeTransitions() {\n    gd.emit('plotly_transitioning', []);\n    return new Promise(function (resolve) {\n      // This flag is used to disabled things like autorange:\n      gd._transitioning = true;\n\n      // When instantaneous updates are coming through quickly, it's too much to simply disable\n      // all interaction, so store this flag so we can disambiguate whether mouse interactions\n      // should be fully disabled or not:\n      if (transitionOpts.duration > 0) {\n        gd._transitioningWithDuration = true;\n      }\n\n      // If another transition is triggered, this callback will be executed simply because it's\n      // in the interruptCallbacks queue. If this transition completes, it will instead flush\n      // that queue and forget about this callback.\n      gd._transitionData._interruptCallbacks.push(function () {\n        aborted = true;\n      });\n      if (opts.redraw) {\n        gd._transitionData._interruptCallbacks.push(function () {\n          return Registry.call('redraw', gd);\n        });\n      }\n\n      // Emit this and make sure it happens last:\n      gd._transitionData._interruptCallbacks.push(function () {\n        gd.emit('plotly_transitioninterrupted', []);\n      });\n\n      // Construct callbacks that are executed on transition end. This ensures the d3 transitions\n      // are *complete* before anything else is done.\n      var numCallbacks = 0;\n      var numCompleted = 0;\n      function makeCallback() {\n        numCallbacks++;\n        return function () {\n          numCompleted++;\n          // When all are complete, perform a redraw:\n          if (!aborted && numCompleted === numCallbacks) {\n            completeTransition(resolve);\n          }\n        };\n      }\n      opts.runFn(makeCallback);\n\n      // If nothing else creates a callback, then this will trigger the completion in the next tick:\n      setTimeout(makeCallback());\n    });\n  }\n  function completeTransition(callback) {\n    // This a simple workaround for tests which purge the graph before animations\n    // have completed. That's not a very common case, so this is the simplest\n    // fix.\n    if (!gd._transitionData) return;\n    flushCallbacks(gd._transitionData._interruptCallbacks);\n    return Promise.resolve().then(function () {\n      if (opts.redraw) {\n        return Registry.call('redraw', gd);\n      }\n    }).then(function () {\n      // Set transitioning false again once the redraw has occurred. This is used, for example,\n      // to prevent the trailing redraw from autoranging:\n      gd._transitioning = false;\n      gd._transitioningWithDuration = false;\n      gd.emit('plotly_transitioned', []);\n    }).then(callback);\n  }\n  function interruptPreviousTransitions() {\n    // Fail-safe against purged plot:\n    if (!gd._transitionData) return;\n\n    // If a transition is interrupted, set this to false. At the moment, the only thing that would\n    // interrupt a transition is another transition, so that it will momentarily be set to true\n    // again, but this determines whether autorange or dragbox work, so it's for the sake of\n    // cleanliness:\n    gd._transitioning = false;\n    return executeCallbacks(gd._transitionData._interruptCallbacks);\n  }\n  var seq = [plots.previousPromises, interruptPreviousTransitions, opts.prepareFn, plots.rehover, plots.reselect, executeTransitions];\n  var transitionStarting = Lib.syncOrAsync(seq, gd);\n  if (!transitionStarting || !transitionStarting.then) {\n    transitionStarting = Promise.resolve();\n  }\n  return transitionStarting.then(function () {\n    return gd;\n  });\n}\nplots.doCalcdata = function (gd, traces) {\n  var axList = axisIDs.list(gd);\n  var fullData = gd._fullData;\n  var fullLayout = gd._fullLayout;\n  var trace, _module, i, j;\n\n  // XXX: Is this correct? Needs a closer look so that *some* traces can be recomputed without\n  // *all* needing doCalcdata:\n  var calcdata = new Array(fullData.length);\n  var oldCalcdata = (gd.calcdata || []).slice();\n  gd.calcdata = calcdata;\n\n  // extra helper variables\n\n  // how many box/violins plots do we have (in case they're grouped)\n  fullLayout._numBoxes = 0;\n  fullLayout._numViolins = 0;\n\n  // initialize violin per-scale-group stats container\n  fullLayout._violinScaleGroupStats = {};\n\n  // for calculating avg luminosity of heatmaps\n  gd._hmpixcount = 0;\n  gd._hmlumcount = 0;\n\n  // for sharing colors across pies / sunbursts / treemap / icicle / funnelarea (and for legend)\n  fullLayout._piecolormap = {};\n  fullLayout._sunburstcolormap = {};\n  fullLayout._treemapcolormap = {};\n  fullLayout._iciclecolormap = {};\n  fullLayout._funnelareacolormap = {};\n\n  // If traces were specified and this trace was not included,\n  // then transfer it over from the old calcdata:\n  for (i = 0; i < fullData.length; i++) {\n    if (Array.isArray(traces) && traces.indexOf(i) === -1) {\n      calcdata[i] = oldCalcdata[i];\n      continue;\n    }\n  }\n  for (i = 0; i < fullData.length; i++) {\n    trace = fullData[i];\n    trace._arrayAttrs = PlotSchema.findArrayAttributes(trace);\n\n    // keep track of trace extremes (for autorange) in here\n    trace._extremes = {};\n  }\n\n  // add polar axes to axis list\n  var polarIds = fullLayout._subplots.polar || [];\n  for (i = 0; i < polarIds.length; i++) {\n    axList.push(fullLayout[polarIds[i]].radialaxis, fullLayout[polarIds[i]].angularaxis);\n  }\n\n  // clear relinked cmin/cmax values in shared axes to start aggregation from scratch\n  for (var k in fullLayout._colorAxes) {\n    var cOpts = fullLayout[k];\n    if (cOpts.cauto !== false) {\n      delete cOpts.cmin;\n      delete cOpts.cmax;\n    }\n  }\n  var hasCalcTransform = false;\n  function transformCalci(i) {\n    trace = fullData[i];\n    _module = trace._module;\n    if (trace.visible === true && trace.transforms) {\n      // we need one round of trace module calc before\n      // the calc transform to 'fill in' the categories list\n      // used for example in the data-to-coordinate method\n      if (_module && _module.calc) {\n        var cdi = _module.calc(gd, trace);\n\n        // must clear scene 'batches', so that 2nd\n        // _module.calc call starts from scratch\n        if (cdi[0] && cdi[0].t && cdi[0].t._scene) {\n          delete cdi[0].t._scene.dirty;\n        }\n      }\n      for (j = 0; j < trace.transforms.length; j++) {\n        var transform = trace.transforms[j];\n        _module = transformsRegistry[transform.type];\n        if (_module && _module.calcTransform) {\n          trace._hasCalcTransform = true;\n          hasCalcTransform = true;\n          _module.calcTransform(gd, trace, transform);\n        }\n      }\n    }\n  }\n  function calci(i, isContainer) {\n    trace = fullData[i];\n    _module = trace._module;\n    if (!!_module.isContainer !== isContainer) return;\n    var cd = [];\n    if (trace.visible === true && trace._length !== 0) {\n      // clear existing ref in case it got relinked\n      delete trace._indexToPoints;\n      // keep ref of index-to-points map object of the *last* enabled transform,\n      // this index-to-points map object is required to determine the calcdata indices\n      // that correspond to input indices (e.g. from 'selectedpoints')\n      var transforms = trace.transforms || [];\n      for (j = transforms.length - 1; j >= 0; j--) {\n        if (transforms[j].enabled) {\n          trace._indexToPoints = transforms[j]._indexToPoints;\n          break;\n        }\n      }\n      if (_module && _module.calc) {\n        cd = _module.calc(gd, trace);\n      }\n    }\n\n    // Make sure there is a first point.\n    //\n    // This ensures there is a calcdata item for every trace,\n    // even if cartesian logic doesn't handle it (for things like legends).\n    if (!Array.isArray(cd) || !cd[0]) {\n      cd = [{\n        x: BADNUM,\n        y: BADNUM\n      }];\n    }\n\n    // add the trace-wide properties to the first point,\n    // per point properties to every point\n    // t is the holder for trace-wide properties\n    if (!cd[0].t) cd[0].t = {};\n    cd[0].trace = trace;\n    calcdata[i] = cd;\n  }\n  setupAxisCategories(axList, fullData, fullLayout);\n\n  // 'transform' loop - must calc container traces first\n  // so that if their dependent traces can get transform properly\n  for (i = 0; i < fullData.length; i++) calci(i, true);\n  for (i = 0; i < fullData.length; i++) transformCalci(i);\n\n  // clear stuff that should recomputed in 'regular' loop\n  if (hasCalcTransform) setupAxisCategories(axList, fullData, fullLayout);\n\n  // 'regular' loop - make sure container traces (eg carpet) calc before\n  // contained traces (eg contourcarpet)\n  for (i = 0; i < fullData.length; i++) calci(i, true);\n  for (i = 0; i < fullData.length; i++) calci(i, false);\n  doCrossTraceCalc(gd);\n\n  // Sort axis categories per value if specified\n  var sorted = sortAxisCategoriesByValue(axList, gd);\n  if (sorted.length) {\n    // how many box/violins plots do we have (in case they're grouped)\n    fullLayout._numBoxes = 0;\n    fullLayout._numViolins = 0;\n    // If a sort operation was performed, run calc() again\n    for (i = 0; i < sorted.length; i++) calci(sorted[i], true);\n    for (i = 0; i < sorted.length; i++) calci(sorted[i], false);\n    doCrossTraceCalc(gd);\n  }\n  Registry.getComponentMethod('fx', 'calc')(gd);\n  Registry.getComponentMethod('errorbars', 'calc')(gd);\n};\nvar sortAxisCategoriesByValueRegex = /(total|sum|min|max|mean|median) (ascending|descending)/;\nfunction sortAxisCategoriesByValue(axList, gd) {\n  var affectedTraces = [];\n  var i, j, k, l, o;\n  function zMapCategory(type, ax, value) {\n    var axLetter = ax._id.charAt(0);\n    if (type === 'histogram2dcontour') {\n      var counterAxLetter = ax._counterAxes[0];\n      var counterAx = axisIDs.getFromId(gd, counterAxLetter);\n      var xCategorical = axLetter === 'x' || counterAxLetter === 'x' && counterAx.type === 'category';\n      var yCategorical = axLetter === 'y' || counterAxLetter === 'y' && counterAx.type === 'category';\n      return function (o, l) {\n        if (o === 0 || l === 0) return -1; // Skip first row and column\n        if (xCategorical && o === value[l].length - 1) return -1;\n        if (yCategorical && l === value.length - 1) return -1;\n        return (axLetter === 'y' ? l : o) - 1;\n      };\n    } else {\n      return function (o, l) {\n        return axLetter === 'y' ? l : o;\n      };\n    }\n  }\n  var aggFn = {\n    'min': function (values) {\n      return Lib.aggNums(Math.min, null, values);\n    },\n    'max': function (values) {\n      return Lib.aggNums(Math.max, null, values);\n    },\n    'sum': function (values) {\n      return Lib.aggNums(function (a, b) {\n        return a + b;\n      }, null, values);\n    },\n    'total': function (values) {\n      return Lib.aggNums(function (a, b) {\n        return a + b;\n      }, null, values);\n    },\n    'mean': function (values) {\n      return Lib.mean(values);\n    },\n    'median': function (values) {\n      return Lib.median(values);\n    }\n  };\n  for (i = 0; i < axList.length; i++) {\n    var ax = axList[i];\n    if (ax.type !== 'category') continue;\n\n    // Order by value\n    var match = ax.categoryorder.match(sortAxisCategoriesByValueRegex);\n    if (match) {\n      var aggregator = match[1];\n      var order = match[2];\n      var axLetter = ax._id.charAt(0);\n      var isX = axLetter === 'x';\n\n      // Store values associated with each category\n      var categoriesValue = [];\n      for (j = 0; j < ax._categories.length; j++) {\n        categoriesValue.push([ax._categories[j], []]);\n      }\n\n      // Collect values across traces\n      for (j = 0; j < ax._traceIndices.length; j++) {\n        var traceIndex = ax._traceIndices[j];\n        var fullTrace = gd._fullData[traceIndex];\n\n        // Skip over invisible traces\n        if (fullTrace.visible !== true) continue;\n        var type = fullTrace.type;\n        if (Registry.traceIs(fullTrace, 'histogram')) {\n          delete fullTrace._xautoBinFinished;\n          delete fullTrace._yautoBinFinished;\n        }\n        var isSplom = type === 'splom';\n        var isScattergl = type === 'scattergl';\n        var cd = gd.calcdata[traceIndex];\n        for (k = 0; k < cd.length; k++) {\n          var cdi = cd[k];\n          var catIndex, value;\n          if (isSplom) {\n            // If `splom`, collect values across dimensions\n            // Find which dimension the current axis is representing\n            var currentDimensionIndex = fullTrace._axesDim[ax._id];\n\n            // Apply logic to associated x axis if it's defined\n            if (!isX) {\n              var associatedXAxisID = fullTrace._diag[currentDimensionIndex][0];\n              if (associatedXAxisID) ax = gd._fullLayout[axisIDs.id2name(associatedXAxisID)];\n            }\n            var categories = cdi.trace.dimensions[currentDimensionIndex].values;\n            for (l = 0; l < categories.length; l++) {\n              catIndex = ax._categoriesMap[categories[l]];\n\n              // Collect associated values at index `l` over all other dimensions\n              for (o = 0; o < cdi.trace.dimensions.length; o++) {\n                if (o === currentDimensionIndex) continue;\n                var dimension = cdi.trace.dimensions[o];\n                categoriesValue[catIndex][1].push(dimension.values[l]);\n              }\n            }\n          } else if (isScattergl) {\n            // If `scattergl`, collect all values stashed under cdi.t\n            for (l = 0; l < cdi.t.x.length; l++) {\n              if (isX) {\n                catIndex = cdi.t.x[l];\n                value = cdi.t.y[l];\n              } else {\n                catIndex = cdi.t.y[l];\n                value = cdi.t.x[l];\n              }\n              categoriesValue[catIndex][1].push(value);\n            }\n            // must clear scene 'batches', so that 2nd\n            // _module.calc call starts from scratch\n            if (cdi.t && cdi.t._scene) {\n              delete cdi.t._scene.dirty;\n            }\n          } else if (cdi.hasOwnProperty('z')) {\n            // If 2dMap, collect values in `z`\n            value = cdi.z;\n            var mapping = zMapCategory(fullTrace.type, ax, value);\n            for (l = 0; l < value.length; l++) {\n              for (o = 0; o < value[l].length; o++) {\n                catIndex = mapping(o, l);\n                if (catIndex + 1) categoriesValue[catIndex][1].push(value[l][o]);\n              }\n            }\n          } else {\n            // For all other 2d cartesian traces\n            catIndex = cdi.p;\n            if (catIndex === undefined) catIndex = cdi[axLetter];\n            value = cdi.s;\n            if (value === undefined) value = cdi.v;\n            if (value === undefined) value = isX ? cdi.y : cdi.x;\n            if (!Array.isArray(value)) {\n              if (value === undefined) value = [];else value = [value];\n            }\n            for (l = 0; l < value.length; l++) {\n              categoriesValue[catIndex][1].push(value[l]);\n            }\n          }\n        }\n      }\n      ax._categoriesValue = categoriesValue;\n      var categoriesAggregatedValue = [];\n      for (j = 0; j < categoriesValue.length; j++) {\n        categoriesAggregatedValue.push([categoriesValue[j][0], aggFn[aggregator](categoriesValue[j][1])]);\n      }\n\n      // Sort by aggregated value\n      categoriesAggregatedValue.sort(function (a, b) {\n        return a[1] - b[1];\n      });\n      ax._categoriesAggregatedValue = categoriesAggregatedValue;\n\n      // Set new category order\n      ax._initialCategories = categoriesAggregatedValue.map(function (c) {\n        return c[0];\n      });\n\n      // Reverse if descending\n      if (order === 'descending') {\n        ax._initialCategories.reverse();\n      }\n\n      // Sort all matching axes\n      affectedTraces = affectedTraces.concat(ax.sortByInitialCategories());\n    }\n  }\n  return affectedTraces;\n}\nfunction setupAxisCategories(axList, fullData, fullLayout) {\n  var axLookup = {};\n  function setupOne(ax) {\n    ax.clearCalc();\n    if (ax.type === 'multicategory') {\n      ax.setupMultiCategory(fullData);\n    }\n    axLookup[ax._id] = 1;\n  }\n  Lib.simpleMap(axList, setupOne);\n\n  // look into match groups for 'missing' axes\n  var matchGroups = fullLayout._axisMatchGroups || [];\n  for (var i = 0; i < matchGroups.length; i++) {\n    for (var axId in matchGroups[i]) {\n      if (!axLookup[axId]) {\n        setupOne(fullLayout[axisIDs.id2name(axId)]);\n      }\n    }\n  }\n}\nfunction doCrossTraceCalc(gd) {\n  var fullLayout = gd._fullLayout;\n  var modules = fullLayout._visibleModules;\n  var hash = {};\n  var i, j, k;\n\n  // position and range calculations for traces that\n  // depend on each other ie bars (stacked or grouped)\n  // and boxes (grouped) push each other out of the way\n\n  for (j = 0; j < modules.length; j++) {\n    var _module = modules[j];\n    var fn = _module.crossTraceCalc;\n    if (fn) {\n      var spType = _module.basePlotModule.name;\n      if (hash[spType]) {\n        Lib.pushUnique(hash[spType], fn);\n      } else {\n        hash[spType] = [fn];\n      }\n    }\n  }\n  for (k in hash) {\n    var methods = hash[k];\n    var subplots = fullLayout._subplots[k];\n    if (Array.isArray(subplots)) {\n      for (i = 0; i < subplots.length; i++) {\n        var sp = subplots[i];\n        var spInfo = k === 'cartesian' ? fullLayout._plots[sp] : fullLayout[sp];\n        for (j = 0; j < methods.length; j++) {\n          methods[j](gd, spInfo, sp);\n        }\n      }\n    } else {\n      for (j = 0; j < methods.length; j++) {\n        methods[j](gd);\n      }\n    }\n  }\n}\nplots.rehover = function (gd) {\n  if (gd._fullLayout._rehover) {\n    gd._fullLayout._rehover();\n  }\n};\nplots.redrag = function (gd) {\n  if (gd._fullLayout._redrag) {\n    gd._fullLayout._redrag();\n  }\n};\nplots.reselect = function (gd) {\n  var fullLayout = gd._fullLayout;\n  var A = (gd.layout || {}).selections;\n  var B = fullLayout._previousSelections;\n  fullLayout._previousSelections = A;\n  var mayEmitSelected = fullLayout._reselect || JSON.stringify(A) !== JSON.stringify(B);\n  Registry.getComponentMethod('selections', 'reselect')(gd, mayEmitSelected);\n};\nplots.generalUpdatePerTraceModule = function (gd, subplot, subplotCalcData, subplotLayout) {\n  var traceHashOld = subplot.traceHash;\n  var traceHash = {};\n  var i;\n\n  // build up moduleName -> calcData hash\n  for (i = 0; i < subplotCalcData.length; i++) {\n    var calcTraces = subplotCalcData[i];\n    var trace = calcTraces[0].trace;\n\n    // skip over visible === false traces\n    // as they don't have `_module` ref\n    if (trace.visible) {\n      traceHash[trace.type] = traceHash[trace.type] || [];\n      traceHash[trace.type].push(calcTraces);\n    }\n  }\n\n  // when a trace gets deleted, make sure that its module's\n  // plot method is called so that it is properly\n  // removed from the DOM.\n  for (var moduleNameOld in traceHashOld) {\n    if (!traceHash[moduleNameOld]) {\n      var fakeCalcTrace = traceHashOld[moduleNameOld][0];\n      var fakeTrace = fakeCalcTrace[0].trace;\n      fakeTrace.visible = false;\n      traceHash[moduleNameOld] = [fakeCalcTrace];\n    }\n  }\n\n  // call module plot method\n  for (var moduleName in traceHash) {\n    var moduleCalcData = traceHash[moduleName];\n    var _module = moduleCalcData[0][0].trace._module;\n    _module.plot(gd, subplot, Lib.filterVisible(moduleCalcData), subplotLayout);\n  }\n\n  // update moduleName -> calcData hash\n  subplot.traceHash = traceHash;\n};\nplots.plotBasePlot = function (desiredType, gd, traces, transitionOpts, makeOnCompleteCallback) {\n  var _module = Registry.getModule(desiredType);\n  var cdmodule = getModuleCalcData(gd.calcdata, _module)[0];\n  _module.plot(gd, cdmodule, transitionOpts, makeOnCompleteCallback);\n};\nplots.cleanBasePlot = function (desiredType, newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  var had = oldFullLayout._has && oldFullLayout._has(desiredType);\n  var has = newFullLayout._has && newFullLayout._has(desiredType);\n  if (had && !has) {\n    oldFullLayout['_' + desiredType + 'layer'].selectAll('g.trace').remove();\n  }\n};\n\n/***/ }),\n\n/***/ 9813:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attr: 'subplot',\n  name: 'polar',\n  axisNames: ['angularaxis', 'radialaxis'],\n  axisName2dataArray: {\n    angularaxis: 'theta',\n    radialaxis: 'r'\n  },\n  layerNames: ['draglayer', 'plotbg', 'backplot', 'angular-grid', 'radial-grid', 'frontplot', 'angular-line', 'radial-line', 'angular-axis', 'radial-axis'],\n  radialDragBoxSize: 50,\n  angularDragBoxSize: 30,\n  cornerLen: 25,\n  cornerHalfWidth: 2,\n  // pixels to move mouse before you stop clamping to starting point\n  MINDRAG: 8,\n  // smallest radial distance [px] allowed for a zoombox\n  MINZOOM: 20,\n  // distance [px] off (r=0) or (r=radius) where we transition\n  // from single-sided to two-sided radial zoom\n  OFFEDGE: 20\n};\n\n/***/ }),\n\n/***/ 10869:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1934694__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_1934694__(71828);\nvar polygonTester = (__nested_webpack_require_1934694__(61082).tester);\nvar findIndexOfMin = Lib.findIndexOfMin;\nvar isAngleInsideSector = Lib.isAngleInsideSector;\nvar angleDelta = Lib.angleDelta;\nvar angleDist = Lib.angleDist;\n\n/**\n * is pt (r,a) inside polygon made up vertices at angles 'vangles'\n * inside a given polar sector\n *\n * @param {number} r : pt's radial coordinate\n * @param {number} a : pt's angular coordinate in *radians*\n * @param {2-item array} rBnds : sector's radial bounds\n * @param {2-item array} aBnds : sector's angular bounds *radians*\n * @param {array} vangles : angles of polygon vertices in *radians*\n * @return {boolean}\n */\nfunction isPtInsidePolygon(r, a, rBnds, aBnds, vangles) {\n  if (!isAngleInsideSector(a, aBnds)) return false;\n  var r0, r1;\n  if (rBnds[0] < rBnds[1]) {\n    r0 = rBnds[0];\n    r1 = rBnds[1];\n  } else {\n    r0 = rBnds[1];\n    r1 = rBnds[0];\n  }\n  var polygonIn = polygonTester(makePolygon(r0, aBnds[0], aBnds[1], vangles));\n  var polygonOut = polygonTester(makePolygon(r1, aBnds[0], aBnds[1], vangles));\n  var xy = [r * Math.cos(a), r * Math.sin(a)];\n  return polygonOut.contains(xy) && !polygonIn.contains(xy);\n}\n\n// find intersection of 'v0' <-> 'v1' edge with a ray at angle 'a'\n// (i.e. a line that starts from the origin at angle 'a')\n// given an (xp,yp) pair on the 'v0' <-> 'v1' line\n// (N.B. 'v0' and 'v1' are angles in radians)\nfunction findIntersectionXY(v0, v1, a, xpyp) {\n  var xstar, ystar;\n  var xp = xpyp[0];\n  var yp = xpyp[1];\n  var dsin = clampTiny(Math.sin(v1) - Math.sin(v0));\n  var dcos = clampTiny(Math.cos(v1) - Math.cos(v0));\n  var tanA = Math.tan(a);\n  var cotanA = clampTiny(1 / tanA);\n  var m = dsin / dcos;\n  var b = yp - m * xp;\n  if (cotanA) {\n    if (dsin && dcos) {\n      // given\n      //  g(x) := v0 -> v1 line = m*x + b\n      //  h(x) := ray at angle 'a' = m*x = tanA*x\n      // solve g(xstar) = h(xstar)\n      xstar = b / (tanA - m);\n      ystar = tanA * xstar;\n    } else if (dcos) {\n      // horizontal v0 -> v1\n      xstar = yp * cotanA;\n      ystar = yp;\n    } else {\n      // vertical v0 -> v1\n      xstar = xp;\n      ystar = xp * tanA;\n    }\n  } else {\n    // vertical ray\n    if (dsin && dcos) {\n      xstar = 0;\n      ystar = b;\n    } else if (dcos) {\n      xstar = 0;\n      ystar = yp;\n    } else {\n      // does this case exists?\n      xstar = ystar = NaN;\n    }\n  }\n  return [xstar, ystar];\n}\n\n// solves l^2 = (f(x)^2 - yp)^2 + (x - xp)^2\n// rearranged into 0 = a*x^2 + b * x + c\n//\n// where f(x) = m*x + t + yp\n// and   (x0, x1) = (-b +/- del) / (2*a)\nfunction findXYatLength(l, m, xp, yp) {\n  var t = -m * xp;\n  var a = m * m + 1;\n  var b = 2 * (m * t - xp);\n  var c = t * t + xp * xp - l * l;\n  var del = Math.sqrt(b * b - 4 * a * c);\n  var x0 = (-b + del) / (2 * a);\n  var x1 = (-b - del) / (2 * a);\n  return [[x0, m * x0 + t + yp], [x1, m * x1 + t + yp]];\n}\nfunction makeRegularPolygon(r, vangles) {\n  var len = vangles.length;\n  var vertices = new Array(len + 1);\n  var i;\n  for (i = 0; i < len; i++) {\n    var va = vangles[i];\n    vertices[i] = [r * Math.cos(va), r * Math.sin(va)];\n  }\n  vertices[i] = vertices[0].slice();\n  return vertices;\n}\nfunction makeClippedPolygon(r, a0, a1, vangles) {\n  var len = vangles.length;\n  var vertices = [];\n  var i, j;\n  function a2xy(a) {\n    return [r * Math.cos(a), r * Math.sin(a)];\n  }\n  function findXY(va0, va1, s) {\n    return findIntersectionXY(va0, va1, s, a2xy(va0));\n  }\n  function cycleIndex(ind) {\n    return Lib.mod(ind, len);\n  }\n  function isInside(v) {\n    return isAngleInsideSector(v, [a0, a1]);\n  }\n\n  // find index in sector closest to a0\n  // use it to find intersection of v[i0] <-> v[i0-1] edge with sector radius\n  var i0 = findIndexOfMin(vangles, function (v) {\n    return isInside(v) ? angleDist(v, a0) : Infinity;\n  });\n  var xy0 = findXY(vangles[i0], vangles[cycleIndex(i0 - 1)], a0);\n  vertices.push(xy0);\n\n  // fill in in-sector vertices\n  for (i = i0, j = 0; j < len; i++, j++) {\n    var va = vangles[cycleIndex(i)];\n    if (!isInside(va)) break;\n    vertices.push(a2xy(va));\n  }\n\n  // find index in sector closest to a1,\n  // use it to find intersection of v[iN] <-> v[iN+1] edge with sector radius\n  var iN = findIndexOfMin(vangles, function (v) {\n    return isInside(v) ? angleDist(v, a1) : Infinity;\n  });\n  var xyN = findXY(vangles[iN], vangles[cycleIndex(iN + 1)], a1);\n  vertices.push(xyN);\n  vertices.push([0, 0]);\n  vertices.push(vertices[0].slice());\n  return vertices;\n}\nfunction makePolygon(r, a0, a1, vangles) {\n  return Lib.isFullCircle([a0, a1]) ? makeRegularPolygon(r, vangles) : makeClippedPolygon(r, a0, a1, vangles);\n}\nfunction findPolygonOffset(r, a0, a1, vangles) {\n  var minX = Infinity;\n  var minY = Infinity;\n  var vertices = makePolygon(r, a0, a1, vangles);\n  for (var i = 0; i < vertices.length; i++) {\n    var v = vertices[i];\n    minX = Math.min(minX, v[0]);\n    minY = Math.min(minY, -v[1]);\n  }\n  return [minX, minY];\n}\n\n/**\n * find vertex angles (in 'vangles') the enclose angle 'a'\n *\n * @param {number} a : angle in *radians*\n * @param {array} vangles : angles of polygon vertices in *radians*\n * @return {2-item array}\n */\nfunction findEnclosingVertexAngles(a, vangles) {\n  var minFn = function (v) {\n    var adelta = angleDelta(v, a);\n    return adelta > 0 ? adelta : Infinity;\n  };\n  var i0 = findIndexOfMin(vangles, minFn);\n  var i1 = Lib.mod(i0 + 1, vangles.length);\n  return [vangles[i0], vangles[i1]];\n}\n\n// to more easily catch 'almost zero' numbers in if-else blocks\nfunction clampTiny(v) {\n  return Math.abs(v) > 1e-10 ? v : 0;\n}\nfunction transformForSVG(pts0, cx, cy) {\n  cx = cx || 0;\n  cy = cy || 0;\n  var len = pts0.length;\n  var pts1 = new Array(len);\n  for (var i = 0; i < len; i++) {\n    var pt = pts0[i];\n    pts1[i] = [cx + pt[0], cy - pt[1]];\n  }\n  return pts1;\n}\n\n/**\n * path polygon\n *\n * @param {number} r : polygon 'radius'\n * @param {number} a0 : first angular coordinate in *radians*\n * @param {number} a1 : second angular coordinate in *radians*\n * @param {array} vangles : angles of polygon vertices in *radians*\n * @param {number (optional)} cx : x coordinate of center\n * @param {number (optional)} cy : y coordinate of center\n * @return {string} svg path\n *\n */\nfunction pathPolygon(r, a0, a1, vangles, cx, cy) {\n  var poly = makePolygon(r, a0, a1, vangles);\n  return 'M' + transformForSVG(poly, cx, cy).join('L');\n}\n\n/**\n * path a polygon 'annulus'\n * i.e. a polygon with a concentric hole\n *\n * N.B. this routine uses the evenodd SVG rule\n *\n * @param {number} r0 : first radial coordinate\n * @param {number} r1 : second radial coordinate\n * @param {number} a0 : first angular coordinate in *radians*\n * @param {number} a1 : second angular coordinate in *radians*\n * @param {array} vangles : angles of polygon vertices in *radians*\n * @param {number (optional)} cx : x coordinate of center\n * @param {number (optional)} cy : y coordinate of center\n * @return {string} svg path\n *\n */\nfunction pathPolygonAnnulus(r0, r1, a0, a1, vangles, cx, cy) {\n  var rStart, rEnd;\n  if (r0 < r1) {\n    rStart = r0;\n    rEnd = r1;\n  } else {\n    rStart = r1;\n    rEnd = r0;\n  }\n  var inner = transformForSVG(makePolygon(rStart, a0, a1, vangles), cx, cy);\n  var outer = transformForSVG(makePolygon(rEnd, a0, a1, vangles), cx, cy);\n  return 'M' + outer.reverse().join('L') + 'M' + inner.join('L');\n}\nmodule.exports = {\n  isPtInsidePolygon: isPtInsidePolygon,\n  findPolygonOffset: findPolygonOffset,\n  findEnclosingVertexAngles: findEnclosingVertexAngles,\n  findIntersectionXY: findIntersectionXY,\n  findXYatLength: findXYatLength,\n  clampTiny: clampTiny,\n  pathPolygon: pathPolygon,\n  pathPolygonAnnulus: pathPolygonAnnulus\n};\n\n/***/ }),\n\n/***/ 23580:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1942487__) {\n\n\"use strict\";\n\n\nvar getSubplotCalcData = (__nested_webpack_require_1942487__(27659)/* .getSubplotCalcData */ .AU);\nvar counterRegex = (__nested_webpack_require_1942487__(71828).counterRegex);\nvar createPolar = __nested_webpack_require_1942487__(77997);\nvar constants = __nested_webpack_require_1942487__(9813);\nvar attr = constants.attr;\nvar name = constants.name;\nvar counter = counterRegex(name);\nvar attributes = {};\nattributes[attr] = {\n  valType: 'subplotid',\n  dflt: name,\n  editType: 'calc'\n};\nfunction plot(gd) {\n  var fullLayout = gd._fullLayout;\n  var calcData = gd.calcdata;\n  var subplotIds = fullLayout._subplots[name];\n  for (var i = 0; i < subplotIds.length; i++) {\n    var id = subplotIds[i];\n    var subplotCalcData = getSubplotCalcData(calcData, name, id);\n    var subplot = fullLayout[id]._subplot;\n    if (!subplot) {\n      subplot = createPolar(gd, id);\n      fullLayout[id]._subplot = subplot;\n    }\n    subplot.plot(subplotCalcData, fullLayout, gd._promises);\n  }\n}\nfunction clean(newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  var oldIds = oldFullLayout._subplots[name] || [];\n  var hadGl = oldFullLayout._has && oldFullLayout._has('gl');\n  var hasGl = newFullLayout._has && newFullLayout._has('gl');\n  var mustCleanScene = hadGl && !hasGl;\n  for (var i = 0; i < oldIds.length; i++) {\n    var id = oldIds[i];\n    var oldSubplot = oldFullLayout[id]._subplot;\n    if (!newFullLayout[id] && !!oldSubplot) {\n      oldSubplot.framework.remove();\n      oldSubplot.layers['radial-axis-title'].remove();\n      for (var k in oldSubplot.clipPaths) {\n        oldSubplot.clipPaths[k].remove();\n      }\n    }\n    if (mustCleanScene && oldSubplot._scene) {\n      oldSubplot._scene.destroy();\n      oldSubplot._scene = null;\n    }\n  }\n}\nmodule.exports = {\n  attr: attr,\n  name: name,\n  idRoot: name,\n  idRegex: counter,\n  attrRegex: counter,\n  attributes: attributes,\n  layoutAttributes: __nested_webpack_require_1942487__(73812),\n  supplyLayoutDefaults: __nested_webpack_require_1942487__(68993),\n  plot: plot,\n  clean: clean,\n  toSVG: (__nested_webpack_require_1942487__(93612).toSVG)\n};\n\n/***/ }),\n\n/***/ 73812:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1944593__) {\n\n\"use strict\";\n\n\nvar colorAttrs = __nested_webpack_require_1944593__(22399);\nvar axesAttrs = __nested_webpack_require_1944593__(13838);\nvar domainAttrs = (__nested_webpack_require_1944593__(27670)/* .attributes */ .Y);\nvar extendFlat = (__nested_webpack_require_1944593__(71828).extendFlat);\nvar overrideAll = (__nested_webpack_require_1944593__(30962).overrideAll);\nvar axisLineGridAttr = overrideAll({\n  color: axesAttrs.color,\n  showline: extendFlat({}, axesAttrs.showline, {\n    dflt: true\n  }),\n  linecolor: axesAttrs.linecolor,\n  linewidth: axesAttrs.linewidth,\n  showgrid: extendFlat({}, axesAttrs.showgrid, {\n    dflt: true\n  }),\n  gridcolor: axesAttrs.gridcolor,\n  gridwidth: axesAttrs.gridwidth,\n  griddash: axesAttrs.griddash\n\n  // TODO add spike* attributes down the road\n\n  // should we add zeroline* attributes?\n}, 'plot', 'from-root');\nvar axisTickAttrs = overrideAll({\n  tickmode: axesAttrs.minor.tickmode,\n  nticks: axesAttrs.nticks,\n  tick0: axesAttrs.tick0,\n  dtick: axesAttrs.dtick,\n  tickvals: axesAttrs.tickvals,\n  ticktext: axesAttrs.ticktext,\n  ticks: axesAttrs.ticks,\n  ticklen: axesAttrs.ticklen,\n  tickwidth: axesAttrs.tickwidth,\n  tickcolor: axesAttrs.tickcolor,\n  ticklabelstep: axesAttrs.ticklabelstep,\n  showticklabels: axesAttrs.showticklabels,\n  showtickprefix: axesAttrs.showtickprefix,\n  tickprefix: axesAttrs.tickprefix,\n  showticksuffix: axesAttrs.showticksuffix,\n  ticksuffix: axesAttrs.ticksuffix,\n  showexponent: axesAttrs.showexponent,\n  exponentformat: axesAttrs.exponentformat,\n  minexponent: axesAttrs.minexponent,\n  separatethousands: axesAttrs.separatethousands,\n  tickfont: axesAttrs.tickfont,\n  tickangle: axesAttrs.tickangle,\n  tickformat: axesAttrs.tickformat,\n  tickformatstops: axesAttrs.tickformatstops,\n  layer: axesAttrs.layer\n}, 'plot', 'from-root');\nvar radialAxisAttrs = {\n  visible: extendFlat({}, axesAttrs.visible, {\n    dflt: true\n  }),\n  type: extendFlat({}, axesAttrs.type, {\n    values: ['-', 'linear', 'log', 'date', 'category']\n  }),\n  autotypenumbers: axesAttrs.autotypenumbers,\n  autorange: extendFlat({}, axesAttrs.autorange, {\n    editType: 'plot'\n  }),\n  rangemode: {\n    valType: 'enumerated',\n    values: ['tozero', 'nonnegative', 'normal'],\n    dflt: 'tozero',\n    editType: 'calc'\n  },\n  range: extendFlat({}, axesAttrs.range, {\n    items: [{\n      valType: 'any',\n      editType: 'plot',\n      impliedEdits: {\n        '^autorange': false\n      }\n    }, {\n      valType: 'any',\n      editType: 'plot',\n      impliedEdits: {\n        '^autorange': false\n      }\n    }],\n    editType: 'plot'\n  }),\n  categoryorder: axesAttrs.categoryorder,\n  categoryarray: axesAttrs.categoryarray,\n  angle: {\n    valType: 'angle',\n    editType: 'plot'\n  },\n  side: {\n    valType: 'enumerated',\n    // TODO add 'center' for `showline: false` radial axes\n    values: ['clockwise', 'counterclockwise'],\n    dflt: 'clockwise',\n    editType: 'plot'\n  },\n  title: {\n    // radial title is not gui-editable at the moment,\n    // so it needs dflt: '', similar to carpet axes.\n    text: extendFlat({}, axesAttrs.title.text, {\n      editType: 'plot',\n      dflt: ''\n    }),\n    font: extendFlat({}, axesAttrs.title.font, {\n      editType: 'plot'\n    }),\n    // TODO\n    // - might need a 'titleside' and even 'titledirection' down the road\n    // - what about standoff ??\n\n    editType: 'plot'\n  },\n  hoverformat: axesAttrs.hoverformat,\n  uirevision: {\n    valType: 'any',\n    editType: 'none'\n  },\n  editType: 'calc',\n  _deprecated: {\n    title: axesAttrs._deprecated.title,\n    titlefont: axesAttrs._deprecated.titlefont\n  }\n};\nextendFlat(radialAxisAttrs,\n// N.B. radialaxis grid lines are circular,\n// but radialaxis lines are straight from circle center to outer bound\naxisLineGridAttr, axisTickAttrs);\nvar angularAxisAttrs = {\n  visible: extendFlat({}, axesAttrs.visible, {\n    dflt: true\n  }),\n  type: {\n    valType: 'enumerated',\n    // 'linear' should maybe be called 'angle' or 'angular' here\n    // to make clear that axis here is periodic and more tightly match\n    // `thetaunit`?\n    //\n    // skip 'date' for first push\n    // no 'log' for now\n    values: ['-', 'linear', 'category'],\n    dflt: '-',\n    editType: 'calc',\n    _noTemplating: true\n  },\n  autotypenumbers: axesAttrs.autotypenumbers,\n  categoryorder: axesAttrs.categoryorder,\n  categoryarray: axesAttrs.categoryarray,\n  thetaunit: {\n    valType: 'enumerated',\n    values: ['radians', 'degrees'],\n    dflt: 'degrees',\n    editType: 'calc'\n  },\n  period: {\n    valType: 'number',\n    editType: 'calc',\n    min: 0\n    // Examples for date axes:\n    //\n    // - period that equals the timeseries length\n    //  http://flowingdata.com/2017/01/24/one-dataset-visualized-25-ways/18-polar-coordinates/\n    // - and 1-year periods (focusing on seasonal change0\n    //  http://otexts.org/fpp2/seasonal-plots.html\n    //  https://blogs.scientificamerican.com/sa-visual/why-are-so-many-babies-born-around-8-00-a-m/\n    //  http://www.seasonaladjustment.com/2012/09/05/clock-plot-visualising-seasonality-using-r-and-ggplot2-part-3/\n    //  https://i.pinimg.com/736x/49/b9/72/49b972ccb3206a1a6d6f870dac543280.jpg\n    //  https://www.climate-lab-book.ac.uk/spirals/\n  },\n\n  direction: {\n    valType: 'enumerated',\n    values: ['counterclockwise', 'clockwise'],\n    dflt: 'counterclockwise',\n    editType: 'calc'\n  },\n  rotation: {\n    valType: 'angle',\n    editType: 'calc'\n  },\n  hoverformat: axesAttrs.hoverformat,\n  uirevision: {\n    valType: 'any',\n    editType: 'none'\n  },\n  editType: 'calc'\n};\nextendFlat(angularAxisAttrs,\n// N.B. angular grid lines are straight lines from circle center to outer bound\n// the angular line is circular bounding the polar plot area.\naxisLineGridAttr,\n// N.B. ticksuffix defaults to '°' for angular axes with `thetaunit: 'degrees'`\naxisTickAttrs);\nmodule.exports = {\n  // TODO for x/y/zoom system for paper-based zooming:\n  // x: {},\n  // y: {},\n  // zoom: {},\n\n  domain: domainAttrs({\n    name: 'polar',\n    editType: 'plot'\n  }),\n  sector: {\n    valType: 'info_array',\n    items: [{\n      valType: 'number',\n      editType: 'plot'\n    }, {\n      valType: 'number',\n      editType: 'plot'\n    }],\n    dflt: [0, 360],\n    editType: 'plot'\n  },\n  hole: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 0,\n    editType: 'plot'\n  },\n  bgcolor: {\n    valType: 'color',\n    editType: 'plot',\n    dflt: colorAttrs.background\n  },\n  radialaxis: radialAxisAttrs,\n  angularaxis: angularAxisAttrs,\n  gridshape: {\n    valType: 'enumerated',\n    values: ['circular', 'linear'],\n    dflt: 'circular',\n    editType: 'plot'\n  },\n  // TODO maybe?\n  // annotations:\n\n  uirevision: {\n    valType: 'any',\n    editType: 'none'\n  },\n  editType: 'calc'\n};\n\n/***/ }),\n\n/***/ 68993:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1951307__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_1951307__(71828);\nvar Color = __nested_webpack_require_1951307__(7901);\nvar Template = __nested_webpack_require_1951307__(44467);\nvar handleSubplotDefaults = __nested_webpack_require_1951307__(49119);\nvar getSubplotData = (__nested_webpack_require_1951307__(27659)/* .getSubplotData */ .NG);\nvar handleTickValueDefaults = __nested_webpack_require_1951307__(26218);\nvar handleTickMarkDefaults = __nested_webpack_require_1951307__(38701);\nvar handleTickLabelDefaults = __nested_webpack_require_1951307__(96115);\nvar handlePrefixSuffixDefaults = __nested_webpack_require_1951307__(89426);\nvar handleCategoryOrderDefaults = __nested_webpack_require_1951307__(15258);\nvar handleLineGridDefaults = __nested_webpack_require_1951307__(92128);\nvar autoType = __nested_webpack_require_1951307__(4322);\nvar layoutAttributes = __nested_webpack_require_1951307__(73812);\nvar setConvert = __nested_webpack_require_1951307__(12101);\nvar constants = __nested_webpack_require_1951307__(9813);\nvar axisNames = constants.axisNames;\nfunction handleDefaults(contIn, contOut, coerce, opts) {\n  var bgColor = coerce('bgcolor');\n  opts.bgColor = Color.combine(bgColor, opts.paper_bgcolor);\n  var sector = coerce('sector');\n  coerce('hole');\n\n  // could optimize, subplotData is not always needed!\n  var subplotData = getSubplotData(opts.fullData, constants.name, opts.id);\n  var layoutOut = opts.layoutOut;\n  var axName;\n  function coerceAxis(attr, dflt) {\n    return coerce(axName + '.' + attr, dflt);\n  }\n  for (var i = 0; i < axisNames.length; i++) {\n    axName = axisNames[i];\n    if (!Lib.isPlainObject(contIn[axName])) {\n      contIn[axName] = {};\n    }\n    var axIn = contIn[axName];\n    var axOut = Template.newContainer(contOut, axName);\n    axOut._id = axOut._name = axName;\n    axOut._attr = opts.id + '.' + axName;\n    axOut._traceIndices = subplotData.map(function (t) {\n      return t._expandedIndex;\n    });\n    var dataAttr = constants.axisName2dataArray[axName];\n    var axType = handleAxisTypeDefaults(axIn, axOut, coerceAxis, subplotData, dataAttr, opts);\n    handleCategoryOrderDefaults(axIn, axOut, coerceAxis, {\n      axData: subplotData,\n      dataAttr: dataAttr\n    });\n    var visible = coerceAxis('visible');\n    setConvert(axOut, contOut, layoutOut);\n    coerceAxis('uirevision', contOut.uirevision);\n\n    // We don't want to make downstream code call ax.setScale,\n    // as both radial and angular axes don't have a set domain.\n    // Furthermore, angular axes don't have a set range.\n    //\n    // Mocked domains and ranges are set by the polar subplot instances,\n    // but Axes.findExtremes uses the sign of _m to determine which padding value\n    // to use.\n    //\n    // By setting, _m to 1 here, we make Axes.findExtremes think that\n    // range[1] > range[0], and vice-versa for `autorange: 'reversed'` below.\n    axOut._m = 1;\n    switch (axName) {\n      case 'radialaxis':\n        var autoRange = coerceAxis('autorange', !axOut.isValidRange(axIn.range));\n        axIn.autorange = autoRange;\n        if (autoRange && (axType === 'linear' || axType === '-')) coerceAxis('rangemode');\n        if (autoRange === 'reversed') axOut._m = -1;\n        coerceAxis('range');\n        axOut.cleanRange('range', {\n          dfltRange: [0, 1]\n        });\n        break;\n      case 'angularaxis':\n        // We do not support 'true' date angular axes yet,\n        // users can still plot dates on angular axes by setting\n        // `angularaxis.type: 'category'`.\n        //\n        // Here, if a date angular axes is detected, we make\n        // all its corresponding traces invisible, so that\n        // when we do add support for data angular axes, the new\n        // behavior won't conflict with existing behavior\n        if (axType === 'date') {\n          Lib.log('Polar plots do not support date angular axes yet.');\n          for (var j = 0; j < subplotData.length; j++) {\n            subplotData[j].visible = false;\n          }\n\n          // turn this into a 'dummy' linear axis so that\n          // the subplot still renders ok\n          axType = axIn.type = axOut.type = 'linear';\n        }\n        if (axType === 'linear') {\n          coerceAxis('thetaunit');\n        } else {\n          coerceAxis('period');\n        }\n        var direction = coerceAxis('direction');\n        coerceAxis('rotation', {\n          counterclockwise: 0,\n          clockwise: 90\n        }[direction]);\n        break;\n    }\n    handlePrefixSuffixDefaults(axIn, axOut, coerceAxis, axOut.type, {\n      tickSuffixDflt: axOut.thetaunit === 'degrees' ? '°' : undefined\n    });\n    if (visible) {\n      var dfltColor;\n      var dfltFontColor;\n      var dfltFontSize;\n      var dfltFontFamily;\n      var font = opts.font || {};\n      dfltColor = coerceAxis('color');\n      dfltFontColor = dfltColor === axIn.color ? dfltColor : font.color;\n      dfltFontSize = font.size;\n      dfltFontFamily = font.family;\n      handleTickValueDefaults(axIn, axOut, coerceAxis, axOut.type);\n      handleTickLabelDefaults(axIn, axOut, coerceAxis, axOut.type, {\n        font: {\n          color: dfltFontColor,\n          size: dfltFontSize,\n          family: dfltFontFamily\n        }\n      });\n      handleTickMarkDefaults(axIn, axOut, coerceAxis, {\n        outerTicks: true\n      });\n      handleLineGridDefaults(axIn, axOut, coerceAxis, {\n        dfltColor: dfltColor,\n        bgColor: opts.bgColor,\n        // default grid color is darker here (60%, vs cartesian default ~91%)\n        // because the grid is not square so the eye needs heavier cues to follow\n        blend: 60,\n        showLine: true,\n        showGrid: true,\n        noZeroLine: true,\n        attributes: layoutAttributes[axName]\n      });\n      coerceAxis('layer');\n      if (axName === 'radialaxis') {\n        coerceAxis('side');\n        coerceAxis('angle', sector[0]);\n        coerceAxis('title.text');\n        Lib.coerceFont(coerceAxis, 'title.font', {\n          color: dfltFontColor,\n          size: Lib.bigFont(dfltFontSize),\n          family: dfltFontFamily\n        });\n      }\n    }\n    if (axType !== 'category') coerceAxis('hoverformat');\n    axOut._input = axIn;\n  }\n  if (contOut.angularaxis.type === 'category') {\n    coerce('gridshape');\n  }\n}\nfunction handleAxisTypeDefaults(axIn, axOut, coerce, subplotData, dataAttr, options) {\n  var autotypenumbers = coerce('autotypenumbers', options.autotypenumbersDflt);\n  var axType = coerce('type');\n  if (axType === '-') {\n    var trace;\n    for (var i = 0; i < subplotData.length; i++) {\n      if (subplotData[i].visible) {\n        trace = subplotData[i];\n        break;\n      }\n    }\n    if (trace && trace[dataAttr]) {\n      axOut.type = autoType(trace[dataAttr], 'gregorian', {\n        noMultiCategory: true,\n        autotypenumbers: autotypenumbers\n      });\n    }\n    if (axOut.type === '-') {\n      axOut.type = 'linear';\n    } else {\n      // copy autoType back to input axis\n      // note that if this object didn't exist\n      // in the input layout, we have to put it in\n      // this happens in the main supplyDefaults function\n      axIn.type = axOut.type;\n    }\n  }\n  return axOut.type;\n}\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {\n  handleSubplotDefaults(layoutIn, layoutOut, fullData, {\n    type: constants.name,\n    attributes: layoutAttributes,\n    handleDefaults: handleDefaults,\n    font: layoutOut.font,\n    autotypenumbersDflt: layoutOut.autotypenumbers,\n    paper_bgcolor: layoutOut.paper_bgcolor,\n    fullData: fullData,\n    layoutOut: layoutOut\n  });\n};\n\n/***/ }),\n\n/***/ 77997:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1958734__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_1958734__(39898);\nvar tinycolor = __nested_webpack_require_1958734__(84267);\nvar Registry = __nested_webpack_require_1958734__(73972);\nvar Lib = __nested_webpack_require_1958734__(71828);\nvar strRotate = Lib.strRotate;\nvar strTranslate = Lib.strTranslate;\nvar Color = __nested_webpack_require_1958734__(7901);\nvar Drawing = __nested_webpack_require_1958734__(91424);\nvar Plots = __nested_webpack_require_1958734__(74875);\nvar Axes = __nested_webpack_require_1958734__(89298);\nvar setConvertCartesian = __nested_webpack_require_1958734__(21994);\nvar setConvertPolar = __nested_webpack_require_1958734__(12101);\nvar doAutoRange = (__nested_webpack_require_1958734__(71739).doAutoRange);\nvar dragBox = __nested_webpack_require_1958734__(29323);\nvar dragElement = __nested_webpack_require_1958734__(28569);\nvar Fx = __nested_webpack_require_1958734__(30211);\nvar Titles = __nested_webpack_require_1958734__(92998);\nvar prepSelect = (__nested_webpack_require_1958734__(47322).prepSelect);\nvar selectOnClick = (__nested_webpack_require_1958734__(47322).selectOnClick);\nvar clearOutline = (__nested_webpack_require_1958734__(47322).clearOutline);\nvar setCursor = __nested_webpack_require_1958734__(6964);\nvar clearGlCanvases = __nested_webpack_require_1958734__(33306);\nvar redrawReglTraces = (__nested_webpack_require_1958734__(61549).redrawReglTraces);\nvar MID_SHIFT = (__nested_webpack_require_1958734__(18783).MID_SHIFT);\nvar constants = __nested_webpack_require_1958734__(9813);\nvar helpers = __nested_webpack_require_1958734__(10869);\nvar smithHelpers = __nested_webpack_require_1958734__(23893);\nvar smith = smithHelpers.smith;\nvar reactanceArc = smithHelpers.reactanceArc;\nvar resistanceArc = smithHelpers.resistanceArc;\nvar smithTransform = smithHelpers.smithTransform;\nvar _ = Lib._;\nvar mod = Lib.mod;\nvar deg2rad = Lib.deg2rad;\nvar rad2deg = Lib.rad2deg;\nfunction Polar(gd, id, isSmith) {\n  this.isSmith = isSmith || false;\n  this.id = id;\n  this.gd = gd;\n  this._hasClipOnAxisFalse = null;\n  this.vangles = null;\n  this.radialAxisAngle = null;\n  this.traceHash = {};\n  this.layers = {};\n  this.clipPaths = {};\n  this.clipIds = {};\n  this.viewInitial = {};\n  var fullLayout = gd._fullLayout;\n  var clipIdBase = 'clip' + fullLayout._uid + id;\n  this.clipIds.forTraces = clipIdBase + '-for-traces';\n  this.clipPaths.forTraces = fullLayout._clips.append('clipPath').attr('id', this.clipIds.forTraces);\n  this.clipPaths.forTraces.append('path');\n  this.framework = fullLayout['_' + (isSmith ? 'smith' : 'polar') + 'layer'].append('g').attr('class', id);\n  this.getHole = function (s) {\n    return this.isSmith ? 0 : s.hole;\n  };\n  this.getSector = function (s) {\n    return this.isSmith ? [0, 360] : s.sector;\n  };\n  this.getRadial = function (s) {\n    return this.isSmith ? s.realaxis : s.radialaxis;\n  };\n  this.getAngular = function (s) {\n    return this.isSmith ? s.imaginaryaxis : s.angularaxis;\n  };\n  if (!isSmith) {\n    // unfortunately, we have to keep track of some axis tick settings\n    // as polar subplots do not implement the 'ticks' editType\n    this.radialTickLayout = null;\n    this.angularTickLayout = null;\n  }\n}\nvar proto = Polar.prototype;\nmodule.exports = function createPolar(gd, id, isSmith) {\n  return new Polar(gd, id, isSmith);\n};\nproto.plot = function (polarCalcData, fullLayout) {\n  var _this = this;\n  var polarLayout = fullLayout[_this.id];\n  var found = false;\n  for (var i = 0; i < polarCalcData.length; i++) {\n    var trace = polarCalcData[i][0].trace;\n    if (trace.cliponaxis === false) {\n      found = true;\n      break;\n    }\n  }\n  _this._hasClipOnAxisFalse = found;\n  _this.updateLayers(fullLayout, polarLayout);\n  _this.updateLayout(fullLayout, polarLayout);\n  Plots.generalUpdatePerTraceModule(_this.gd, _this, polarCalcData, polarLayout);\n  _this.updateFx(fullLayout, polarLayout);\n  if (_this.isSmith) {\n    delete polarLayout.realaxis.range;\n    delete polarLayout.imaginaryaxis.range;\n  }\n};\nproto.updateLayers = function (fullLayout, polarLayout) {\n  var _this = this;\n  var isSmith = _this.isSmith;\n  var layers = _this.layers;\n  var radialLayout = _this.getRadial(polarLayout);\n  var angularLayout = _this.getAngular(polarLayout);\n  var layerNames = constants.layerNames;\n  var frontPlotIndex = layerNames.indexOf('frontplot');\n  var layerData = layerNames.slice(0, frontPlotIndex);\n  var isAngularAxisBelowTraces = angularLayout.layer === 'below traces';\n  var isRadialAxisBelowTraces = radialLayout.layer === 'below traces';\n  if (isAngularAxisBelowTraces) layerData.push('angular-line');\n  if (isRadialAxisBelowTraces) layerData.push('radial-line');\n  if (isAngularAxisBelowTraces) layerData.push('angular-axis');\n  if (isRadialAxisBelowTraces) layerData.push('radial-axis');\n  layerData.push('frontplot');\n  if (!isAngularAxisBelowTraces) layerData.push('angular-line');\n  if (!isRadialAxisBelowTraces) layerData.push('radial-line');\n  if (!isAngularAxisBelowTraces) layerData.push('angular-axis');\n  if (!isRadialAxisBelowTraces) layerData.push('radial-axis');\n  var subLayer = (isSmith ? 'smith' : 'polar') + 'sublayer';\n  var join = _this.framework.selectAll('.' + subLayer).data(layerData, String);\n  join.enter().append('g').attr('class', function (d) {\n    return subLayer + ' ' + d;\n  }).each(function (d) {\n    var sel = layers[d] = d3.select(this);\n    switch (d) {\n      case 'frontplot':\n        // TODO add option to place in 'backplot' layer??\n        if (!isSmith) {\n          sel.append('g').classed('barlayer', true);\n        }\n        sel.append('g').classed('scatterlayer', true);\n        break;\n      case 'backplot':\n        sel.append('g').classed('maplayer', true);\n        break;\n      case 'plotbg':\n        layers.bg = sel.append('path');\n        break;\n      case 'radial-grid':\n        sel.style('fill', 'none');\n        break;\n      case 'angular-grid':\n        sel.style('fill', 'none');\n        break;\n      case 'radial-line':\n        sel.append('line').style('fill', 'none');\n        break;\n      case 'angular-line':\n        sel.append('path').style('fill', 'none');\n        break;\n    }\n  });\n  join.order();\n};\n\n/* Polar subplots juggle with 6 'axis objects' (!), these are:\n *\n * - getRadial(polarLayout) (aka radialLayout in this file):\n * - getAngular(polarLayout) (aka angularLayout in this file):\n *   used for data -> calcdata conversions (aka d2c) during the calc step\n *\n * - this.radialAxis\n *   extends getRadial(polarLayout), adds mocked 'domain' and\n *   few other keys in order to reuse Cartesian doAutoRange and the Axes\n *   drawing routines.\n *   used for calcdata -> geometric conversions (aka c2g) during the plot step\n *   + setGeometry setups ax.c2g for given ax.range\n *   + setScale setups ax._m,ax._b for given ax.range\n *\n * - this.angularAxis\n *   extends getAngular(polarLayout), adds mocked 'range' and 'domain' and\n *   a few other keys in order to reuse the Axes drawing routines.\n *   used for calcdata -> geometric conversions (aka c2g) during the plot step\n *   + setGeometry setups ax.c2g given ax.rotation, ax.direction & ax._categories,\n *                 and mocks ax.range\n *   + setScale setups ax._m,ax._b with that mocked ax.range\n *\n * - this.xaxis\n * - this.yaxis\n *   setup so that polar traces can reuse plot methods of Cartesian traces\n *   which mostly rely on 2pixel methods (e.g ax.c2p)\n */\nproto.updateLayout = function (fullLayout, polarLayout) {\n  var _this = this;\n  var layers = _this.layers;\n  var gs = fullLayout._size;\n\n  // axis attributes\n  var radialLayout = _this.getRadial(polarLayout);\n  var angularLayout = _this.getAngular(polarLayout);\n  // layout domains\n  var xDomain = polarLayout.domain.x;\n  var yDomain = polarLayout.domain.y;\n  // offsets from paper edge to layout domain box\n  _this.xOffset = gs.l + gs.w * xDomain[0];\n  _this.yOffset = gs.t + gs.h * (1 - yDomain[1]);\n  // lengths of the layout domain box\n  var xLength = _this.xLength = gs.w * (xDomain[1] - xDomain[0]);\n  var yLength = _this.yLength = gs.h * (yDomain[1] - yDomain[0]);\n  // sector to plot\n  var sector = _this.getSector(polarLayout);\n  _this.sectorInRad = sector.map(deg2rad);\n  var sectorBBox = _this.sectorBBox = computeSectorBBox(sector);\n  var dxSectorBBox = sectorBBox[2] - sectorBBox[0];\n  var dySectorBBox = sectorBBox[3] - sectorBBox[1];\n  // aspect ratios\n  var arDomain = yLength / xLength;\n  var arSector = Math.abs(dySectorBBox / dxSectorBBox);\n  // actual lengths and domains of subplot box\n  var xLength2, yLength2;\n  var xDomain2, yDomain2;\n  var gap;\n  if (arDomain > arSector) {\n    xLength2 = xLength;\n    yLength2 = xLength * arSector;\n    gap = (yLength - yLength2) / gs.h / 2;\n    xDomain2 = [xDomain[0], xDomain[1]];\n    yDomain2 = [yDomain[0] + gap, yDomain[1] - gap];\n  } else {\n    xLength2 = yLength / arSector;\n    yLength2 = yLength;\n    gap = (xLength - xLength2) / gs.w / 2;\n    xDomain2 = [xDomain[0] + gap, xDomain[1] - gap];\n    yDomain2 = [yDomain[0], yDomain[1]];\n  }\n  _this.xLength2 = xLength2;\n  _this.yLength2 = yLength2;\n  _this.xDomain2 = xDomain2;\n  _this.yDomain2 = yDomain2;\n  // actual offsets from paper edge to the subplot box top-left corner\n  var xOffset2 = _this.xOffset2 = gs.l + gs.w * xDomain2[0];\n  var yOffset2 = _this.yOffset2 = gs.t + gs.h * (1 - yDomain2[1]);\n  // circle radius in px\n  var radius = _this.radius = xLength2 / dxSectorBBox;\n  // 'inner' radius in px (when polar.hole is set)\n  var innerRadius = _this.innerRadius = _this.getHole(polarLayout) * radius;\n  // circle center position in px\n  var cx = _this.cx = xOffset2 - radius * sectorBBox[0];\n  var cy = _this.cy = yOffset2 + radius * sectorBBox[3];\n  // circle center in the coordinate system of plot area\n  var cxx = _this.cxx = cx - xOffset2;\n  var cyy = _this.cyy = cy - yOffset2;\n  var side = radialLayout.side;\n  var trueSide;\n  if (side === 'counterclockwise') {\n    trueSide = side;\n    side = 'top';\n  } else if (side === 'clockwise') {\n    trueSide = side;\n    side = 'bottom';\n  }\n  _this.radialAxis = _this.mockAxis(fullLayout, polarLayout, radialLayout, {\n    // make this an 'x' axis to make positioning (especially rotation) easier\n    _id: 'x',\n    // convert to 'x' axis equivalent\n    side: side,\n    // keep track of real side\n    _trueSide: trueSide,\n    // spans length 1 radius\n    domain: [innerRadius / gs.w, radius / gs.w]\n  });\n  _this.angularAxis = _this.mockAxis(fullLayout, polarLayout, angularLayout, {\n    side: 'right',\n    // to get auto nticks right\n    domain: [0, Math.PI],\n    // don't pass through autorange logic\n    autorange: false\n  });\n  _this.doAutoRange(fullLayout, polarLayout);\n  // N.B. this sets _this.vangles\n  _this.updateAngularAxis(fullLayout, polarLayout);\n  // N.B. this sets _this.radialAxisAngle\n  _this.updateRadialAxis(fullLayout, polarLayout);\n  _this.updateRadialAxisTitle(fullLayout, polarLayout);\n  _this.xaxis = _this.mockCartesianAxis(fullLayout, polarLayout, {\n    _id: 'x',\n    domain: xDomain2\n  });\n  _this.yaxis = _this.mockCartesianAxis(fullLayout, polarLayout, {\n    _id: 'y',\n    domain: yDomain2\n  });\n  var dPath = _this.pathSubplot();\n  _this.clipPaths.forTraces.select('path').attr('d', dPath).attr('transform', strTranslate(cxx, cyy));\n  layers.frontplot.attr('transform', strTranslate(xOffset2, yOffset2)).call(Drawing.setClipUrl, _this._hasClipOnAxisFalse ? null : _this.clipIds.forTraces, _this.gd);\n  layers.bg.attr('d', dPath).attr('transform', strTranslate(cx, cy)).call(Color.fill, polarLayout.bgcolor);\n};\nproto.mockAxis = function (fullLayout, polarLayout, axLayout, opts) {\n  var ax = Lib.extendFlat({}, axLayout, opts);\n  setConvertPolar(ax, polarLayout, fullLayout);\n  return ax;\n};\nproto.mockCartesianAxis = function (fullLayout, polarLayout, opts) {\n  var _this = this;\n  var isSmith = _this.isSmith;\n  var axId = opts._id;\n  var ax = Lib.extendFlat({\n    type: 'linear'\n  }, opts);\n  setConvertCartesian(ax, fullLayout);\n  var bboxIndices = {\n    x: [0, 2],\n    y: [1, 3]\n  };\n  ax.setRange = function () {\n    var sectorBBox = _this.sectorBBox;\n    var ind = bboxIndices[axId];\n    var rl = _this.radialAxis._rl;\n    var drl = (rl[1] - rl[0]) / (1 - _this.getHole(polarLayout));\n    ax.range = [sectorBBox[ind[0]] * drl, sectorBBox[ind[1]] * drl];\n  };\n  ax.isPtWithinRange = axId === 'x' && !isSmith ? function (d) {\n    return _this.isPtInside(d);\n  } : function () {\n    return true;\n  };\n  ax.setRange();\n  ax.setScale();\n  return ax;\n};\nproto.doAutoRange = function (fullLayout, polarLayout) {\n  var _this = this;\n  var gd = _this.gd;\n  var radialAxis = _this.radialAxis;\n  var radialLayout = _this.getRadial(polarLayout);\n  doAutoRange(gd, radialAxis);\n  var rng = radialAxis.range;\n  radialLayout.range = rng.slice();\n  radialLayout._input.range = rng.slice();\n  radialAxis._rl = [radialAxis.r2l(rng[0], null, 'gregorian'), radialAxis.r2l(rng[1], null, 'gregorian')];\n};\nproto.updateRadialAxis = function (fullLayout, polarLayout) {\n  var _this = this;\n  var gd = _this.gd;\n  var layers = _this.layers;\n  var radius = _this.radius;\n  var innerRadius = _this.innerRadius;\n  var cx = _this.cx;\n  var cy = _this.cy;\n  var radialLayout = _this.getRadial(polarLayout);\n  var a0 = mod(_this.getSector(polarLayout)[0], 360);\n  var ax = _this.radialAxis;\n  var hasRoomForIt = innerRadius < radius;\n  var isSmith = _this.isSmith;\n  if (!isSmith) {\n    _this.fillViewInitialKey('radialaxis.angle', radialLayout.angle);\n    _this.fillViewInitialKey('radialaxis.range', ax.range.slice());\n    ax.setGeometry();\n  }\n\n  // rotate auto tick labels by 180 if in quadrant II and III to make them\n  // readable from left-to-right\n  //\n  // TODO try moving deeper in Axes.drawLabels for better results?\n  if (ax.tickangle === 'auto' && a0 > 90 && a0 <= 270) {\n    ax.tickangle = 180;\n  }\n\n  // easier to set rotate angle with custom translate function\n  var transFn = isSmith ? function (d) {\n    var t = smithTransform(_this, smith([d.x, 0]));\n    return strTranslate(t[0] - cx, t[1] - cy);\n  } : function (d) {\n    return strTranslate(ax.l2p(d.x) + innerRadius, 0);\n  };\n\n  // set special grid path function\n  var gridPathFn = isSmith ? function (d) {\n    return resistanceArc(_this, d.x, -Infinity, Infinity);\n  } : function (d) {\n    return _this.pathArc(ax.r2p(d.x) + innerRadius);\n  };\n  var newTickLayout = strTickLayout(radialLayout);\n  if (_this.radialTickLayout !== newTickLayout) {\n    layers['radial-axis'].selectAll('.xtick').remove();\n    _this.radialTickLayout = newTickLayout;\n  }\n  if (hasRoomForIt) {\n    ax.setScale();\n    var labelShift = 0;\n    var vals = isSmith ? (ax.tickvals || []).filter(function (x) {\n      // filter negative\n      return x >= 0;\n    }).map(function (x) {\n      return Axes.tickText(ax, x, true, false);\n    }) : Axes.calcTicks(ax);\n    var valsClipped = isSmith ? vals : Axes.clipEnds(ax, vals);\n    var tickSign = Axes.getTickSigns(ax)[2];\n    if (isSmith) {\n      if (ax.ticks === 'top' && ax.side === 'bottom' || ax.ticks === 'bottom' && ax.side === 'top') {\n        // invert sign\n        tickSign = -tickSign;\n      }\n      if (ax.ticks === 'top' && ax.side === 'top') labelShift = -ax.ticklen;\n      if (ax.ticks === 'bottom' && ax.side === 'bottom') labelShift = ax.ticklen;\n    }\n    Axes.drawTicks(gd, ax, {\n      vals: vals,\n      layer: layers['radial-axis'],\n      path: Axes.makeTickPath(ax, 0, tickSign),\n      transFn: transFn,\n      crisp: false\n    });\n    Axes.drawGrid(gd, ax, {\n      vals: valsClipped,\n      layer: layers['radial-grid'],\n      path: gridPathFn,\n      transFn: Lib.noop,\n      crisp: false\n    });\n    Axes.drawLabels(gd, ax, {\n      vals: vals,\n      layer: layers['radial-axis'],\n      transFn: transFn,\n      labelFns: Axes.makeLabelFns(ax, labelShift)\n    });\n  }\n\n  // stash 'actual' radial axis angle for drag handlers (in degrees)\n  var angle = _this.radialAxisAngle = _this.vangles ? rad2deg(snapToVertexAngle(deg2rad(radialLayout.angle), _this.vangles)) : radialLayout.angle;\n  var tLayer = strTranslate(cx, cy);\n  var tLayer2 = tLayer + strRotate(-angle);\n  updateElement(layers['radial-axis'], hasRoomForIt && (radialLayout.showticklabels || radialLayout.ticks), {\n    transform: tLayer2\n  });\n  updateElement(layers['radial-grid'], hasRoomForIt && radialLayout.showgrid, {\n    transform: isSmith ? '' : tLayer\n  });\n  updateElement(layers['radial-line'].select('line'), hasRoomForIt && radialLayout.showline, {\n    x1: isSmith ? -radius : innerRadius,\n    y1: 0,\n    x2: radius,\n    y2: 0,\n    transform: tLayer2\n  }).attr('stroke-width', radialLayout.linewidth).call(Color.stroke, radialLayout.linecolor);\n};\nproto.updateRadialAxisTitle = function (fullLayout, polarLayout, _angle) {\n  if (this.isSmith) return;\n  var _this = this;\n  var gd = _this.gd;\n  var radius = _this.radius;\n  var cx = _this.cx;\n  var cy = _this.cy;\n  var radialLayout = _this.getRadial(polarLayout);\n  var titleClass = _this.id + 'title';\n  var pad = 0;\n\n  // Hint: no need to check if there is in fact a title.text set\n  // because if plot is editable, pad needs to be calculated anyways\n  // to properly show placeholder text when title is empty.\n  if (radialLayout.title) {\n    var h = Drawing.bBox(_this.layers['radial-axis'].node()).height;\n    var ts = radialLayout.title.font.size;\n    var side = radialLayout.side;\n    pad = side === 'top' ? ts : side === 'counterclockwise' ? -(h + ts * 0.4) : h + ts * 0.8;\n  }\n  var angle = _angle !== undefined ? _angle : _this.radialAxisAngle;\n  var angleRad = deg2rad(angle);\n  var cosa = Math.cos(angleRad);\n  var sina = Math.sin(angleRad);\n  var x = cx + radius / 2 * cosa + pad * sina;\n  var y = cy - radius / 2 * sina + pad * cosa;\n  _this.layers['radial-axis-title'] = Titles.draw(gd, titleClass, {\n    propContainer: radialLayout,\n    propName: _this.id + '.radialaxis.title',\n    placeholder: _(gd, 'Click to enter radial axis title'),\n    attributes: {\n      x: x,\n      y: y,\n      'text-anchor': 'middle'\n    },\n    transform: {\n      rotate: -angle\n    }\n  });\n};\nproto.updateAngularAxis = function (fullLayout, polarLayout) {\n  var _this = this;\n  var gd = _this.gd;\n  var layers = _this.layers;\n  var radius = _this.radius;\n  var innerRadius = _this.innerRadius;\n  var cx = _this.cx;\n  var cy = _this.cy;\n  var angularLayout = _this.getAngular(polarLayout);\n  var ax = _this.angularAxis;\n  var isSmith = _this.isSmith;\n  if (!isSmith) {\n    _this.fillViewInitialKey('angularaxis.rotation', angularLayout.rotation);\n    ax.setGeometry();\n    ax.setScale();\n  }\n\n  // 't'ick to 'g'eometric radians is used all over the place here\n  var t2g = isSmith ? function (d) {\n    var t = smithTransform(_this, smith([0, d.x]));\n    return Math.atan2(t[0] - cx, t[1] - cy) - Math.PI / 2;\n  } : function (d) {\n    return ax.t2g(d.x);\n  };\n\n  // run rad2deg on tick0 and ditck for thetaunit: 'radians' axes\n  if (ax.type === 'linear' && ax.thetaunit === 'radians') {\n    ax.tick0 = rad2deg(ax.tick0);\n    ax.dtick = rad2deg(ax.dtick);\n  }\n  var _transFn = function (rad) {\n    return strTranslate(cx + radius * Math.cos(rad), cy - radius * Math.sin(rad));\n  };\n  var transFn = isSmith ? function (d) {\n    var t = smithTransform(_this, smith([0, d.x]));\n    return strTranslate(t[0], t[1]);\n  } : function (d) {\n    return _transFn(t2g(d));\n  };\n  var transFn2 = isSmith ? function (d) {\n    var t = smithTransform(_this, smith([0, d.x]));\n    var rad = Math.atan2(t[0] - cx, t[1] - cy) - Math.PI / 2;\n    return strTranslate(t[0], t[1]) + strRotate(-rad2deg(rad));\n  } : function (d) {\n    var rad = t2g(d);\n    return _transFn(rad) + strRotate(-rad2deg(rad));\n  };\n  var gridPathFn = isSmith ? function (d) {\n    return reactanceArc(_this, d.x, 0, Infinity);\n  } : function (d) {\n    var rad = t2g(d);\n    var cosRad = Math.cos(rad);\n    var sinRad = Math.sin(rad);\n    return 'M' + [cx + innerRadius * cosRad, cy - innerRadius * sinRad] + 'L' + [cx + radius * cosRad, cy - radius * sinRad];\n  };\n  var out = Axes.makeLabelFns(ax, 0);\n  var labelStandoff = out.labelStandoff;\n  var labelFns = {};\n  labelFns.xFn = function (d) {\n    var rad = t2g(d);\n    return Math.cos(rad) * labelStandoff;\n  };\n  labelFns.yFn = function (d) {\n    var rad = t2g(d);\n    var ff = Math.sin(rad) > 0 ? 0.2 : 1;\n    return -Math.sin(rad) * (labelStandoff + d.fontSize * ff) + Math.abs(Math.cos(rad)) * (d.fontSize * MID_SHIFT);\n  };\n  labelFns.anchorFn = function (d) {\n    var rad = t2g(d);\n    var cos = Math.cos(rad);\n    return Math.abs(cos) < 0.1 ? 'middle' : cos > 0 ? 'start' : 'end';\n  };\n  labelFns.heightFn = function (d, a, h) {\n    var rad = t2g(d);\n    return -0.5 * (1 + Math.sin(rad)) * h;\n  };\n  var newTickLayout = strTickLayout(angularLayout);\n  if (_this.angularTickLayout !== newTickLayout) {\n    layers['angular-axis'].selectAll('.' + ax._id + 'tick').remove();\n    _this.angularTickLayout = newTickLayout;\n  }\n  var vals = isSmith ? [Infinity].concat(ax.tickvals || []).map(function (x) {\n    return Axes.tickText(ax, x, true, false);\n  }) : Axes.calcTicks(ax);\n  if (isSmith) {\n    vals[0].text = '∞';\n    vals[0].fontSize *= 1.75;\n  }\n\n  // angle of polygon vertices in geometric radians (null means circles)\n  // TODO what to do when ax.period > ax._categories ??\n  var vangles;\n  if (polarLayout.gridshape === 'linear') {\n    vangles = vals.map(t2g);\n\n    // ax._vals should be always ordered, make them\n    // always turn counterclockwise for convenience here\n    if (Lib.angleDelta(vangles[0], vangles[1]) < 0) {\n      vangles = vangles.slice().reverse();\n    }\n  } else {\n    vangles = null;\n  }\n  _this.vangles = vangles;\n\n  // Use tickval filter for category axes instead of tweaking\n  // the range w.r.t sector, so that sectors that cross 360 can\n  // show all their ticks.\n  if (ax.type === 'category') {\n    vals = vals.filter(function (d) {\n      return Lib.isAngleInsideSector(t2g(d), _this.sectorInRad);\n    });\n  }\n  if (ax.visible) {\n    var tickSign = ax.ticks === 'inside' ? -1 : 1;\n    var pad = (ax.linewidth || 1) / 2;\n    Axes.drawTicks(gd, ax, {\n      vals: vals,\n      layer: layers['angular-axis'],\n      path: 'M' + tickSign * pad + ',0h' + tickSign * ax.ticklen,\n      transFn: transFn2,\n      crisp: false\n    });\n    Axes.drawGrid(gd, ax, {\n      vals: vals,\n      layer: layers['angular-grid'],\n      path: gridPathFn,\n      transFn: Lib.noop,\n      crisp: false\n    });\n    Axes.drawLabels(gd, ax, {\n      vals: vals,\n      layer: layers['angular-axis'],\n      repositionOnUpdate: true,\n      transFn: transFn,\n      labelFns: labelFns\n    });\n  }\n\n  // TODO maybe two arcs is better here?\n  // maybe split style attributes between inner and outer angular axes?\n\n  updateElement(layers['angular-line'].select('path'), angularLayout.showline, {\n    d: _this.pathSubplot(),\n    transform: strTranslate(cx, cy)\n  }).attr('stroke-width', angularLayout.linewidth).call(Color.stroke, angularLayout.linecolor);\n};\nproto.updateFx = function (fullLayout, polarLayout) {\n  if (!this.gd._context.staticPlot) {\n    var hasDrag = !this.isSmith;\n    if (hasDrag) {\n      this.updateAngularDrag(fullLayout);\n      this.updateRadialDrag(fullLayout, polarLayout, 0);\n      this.updateRadialDrag(fullLayout, polarLayout, 1);\n    }\n    this.updateHoverAndMainDrag(fullLayout);\n  }\n};\nproto.updateHoverAndMainDrag = function (fullLayout) {\n  var _this = this;\n  var isSmith = _this.isSmith;\n  var gd = _this.gd;\n  var layers = _this.layers;\n  var zoomlayer = fullLayout._zoomlayer;\n  var MINZOOM = constants.MINZOOM;\n  var OFFEDGE = constants.OFFEDGE;\n  var radius = _this.radius;\n  var innerRadius = _this.innerRadius;\n  var cx = _this.cx;\n  var cy = _this.cy;\n  var cxx = _this.cxx;\n  var cyy = _this.cyy;\n  var sectorInRad = _this.sectorInRad;\n  var vangles = _this.vangles;\n  var radialAxis = _this.radialAxis;\n  var clampTiny = helpers.clampTiny;\n  var findXYatLength = helpers.findXYatLength;\n  var findEnclosingVertexAngles = helpers.findEnclosingVertexAngles;\n  var chw = constants.cornerHalfWidth;\n  var chl = constants.cornerLen / 2;\n  var scaleX;\n  var scaleY;\n  var mainDrag = dragBox.makeDragger(layers, 'path', 'maindrag', fullLayout.dragmode === false ? 'none' : 'crosshair');\n  d3.select(mainDrag).attr('d', _this.pathSubplot()).attr('transform', strTranslate(cx, cy));\n  mainDrag.onmousemove = function (evt) {\n    Fx.hover(gd, evt, _this.id);\n    gd._fullLayout._lasthover = mainDrag;\n    gd._fullLayout._hoversubplot = _this.id;\n  };\n  mainDrag.onmouseout = function (evt) {\n    if (gd._dragging) return;\n    dragElement.unhover(gd, evt);\n  };\n  var dragOpts = {\n    element: mainDrag,\n    gd: gd,\n    subplot: _this.id,\n    plotinfo: {\n      id: _this.id,\n      xaxis: _this.xaxis,\n      yaxis: _this.yaxis\n    },\n    xaxes: [_this.xaxis],\n    yaxes: [_this.yaxis]\n  };\n\n  // mouse px position at drag start (0), move (1)\n  var x0, y0;\n  // radial distance from circle center at drag start (0), move (1)\n  var r0, r1;\n  // zoombox persistent quantities\n  var path0, dimmed, lum;\n  // zoombox, corners elements\n  var zb, corners;\n  function norm(x, y) {\n    return Math.sqrt(x * x + y * y);\n  }\n  function xy2r(x, y) {\n    return norm(x - cxx, y - cyy);\n  }\n  function xy2a(x, y) {\n    return Math.atan2(cyy - y, x - cxx);\n  }\n  function ra2xy(r, a) {\n    return [r * Math.cos(a), r * Math.sin(-a)];\n  }\n  function pathCorner(r, a) {\n    if (r === 0) return _this.pathSector(2 * chw);\n    var da = chl / r;\n    var am = a - da;\n    var ap = a + da;\n    var rb = Math.max(0, Math.min(r, radius));\n    var rm = rb - chw;\n    var rp = rb + chw;\n    return 'M' + ra2xy(rm, am) + 'A' + [rm, rm] + ' 0,0,0 ' + ra2xy(rm, ap) + 'L' + ra2xy(rp, ap) + 'A' + [rp, rp] + ' 0,0,1 ' + ra2xy(rp, am) + 'Z';\n  }\n\n  // (x,y) is the pt at middle of the va0 <-> va1 edge\n  //\n  // ... we could eventually add another mode for cursor\n  // angles 'close to' enough to a particular vertex.\n  function pathCornerForPolygons(r, va0, va1) {\n    if (r === 0) return _this.pathSector(2 * chw);\n    var xy0 = ra2xy(r, va0);\n    var xy1 = ra2xy(r, va1);\n    var x = clampTiny((xy0[0] + xy1[0]) / 2);\n    var y = clampTiny((xy0[1] + xy1[1]) / 2);\n    var innerPts, outerPts;\n    if (x && y) {\n      var m = y / x;\n      var mperp = -1 / m;\n      var midPts = findXYatLength(chw, m, x, y);\n      innerPts = findXYatLength(chl, mperp, midPts[0][0], midPts[0][1]);\n      outerPts = findXYatLength(chl, mperp, midPts[1][0], midPts[1][1]);\n    } else {\n      var dx, dy;\n      if (y) {\n        // horizontal handles\n        dx = chl;\n        dy = chw;\n      } else {\n        // vertical handles\n        dx = chw;\n        dy = chl;\n      }\n      innerPts = [[x - dx, y - dy], [x + dx, y - dy]];\n      outerPts = [[x - dx, y + dy], [x + dx, y + dy]];\n    }\n    return 'M' + innerPts.join('L') + 'L' + outerPts.reverse().join('L') + 'Z';\n  }\n  function zoomPrep() {\n    r0 = null;\n    r1 = null;\n    path0 = _this.pathSubplot();\n    dimmed = false;\n    var polarLayoutNow = gd._fullLayout[_this.id];\n    lum = tinycolor(polarLayoutNow.bgcolor).getLuminance();\n    zb = dragBox.makeZoombox(zoomlayer, lum, cx, cy, path0);\n    zb.attr('fill-rule', 'evenodd');\n    corners = dragBox.makeCorners(zoomlayer, cx, cy);\n    clearOutline(gd);\n  }\n\n  // N.B. this sets scoped 'r0' and 'r1'\n  // return true if 'valid' zoom distance, false otherwise\n  function clampAndSetR0R1(rr0, rr1) {\n    rr1 = Math.max(Math.min(rr1, radius), innerRadius);\n\n    // starting or ending drag near center (outer edge),\n    // clamps radial distance at origin (at r=radius)\n    if (rr0 < OFFEDGE) rr0 = 0;else if (radius - rr0 < OFFEDGE) rr0 = radius;else if (rr1 < OFFEDGE) rr1 = 0;else if (radius - rr1 < OFFEDGE) rr1 = radius;\n\n    // make sure r0 < r1,\n    // to get correct fill pattern in path1 below\n    if (Math.abs(rr1 - rr0) > MINZOOM) {\n      if (rr0 < rr1) {\n        r0 = rr0;\n        r1 = rr1;\n      } else {\n        r0 = rr1;\n        r1 = rr0;\n      }\n      return true;\n    } else {\n      r0 = null;\n      r1 = null;\n      return false;\n    }\n  }\n  function applyZoomMove(path1, cpath) {\n    path1 = path1 || path0;\n    cpath = cpath || 'M0,0Z';\n    zb.attr('d', path1);\n    corners.attr('d', cpath);\n    dragBox.transitionZoombox(zb, corners, dimmed, lum);\n    dimmed = true;\n    var updateObj = {};\n    computeZoomUpdates(updateObj);\n    gd.emit('plotly_relayouting', updateObj);\n  }\n  function zoomMove(dx, dy) {\n    dx = dx * scaleX;\n    dy = dy * scaleY;\n    var x1 = x0 + dx;\n    var y1 = y0 + dy;\n    var rr0 = xy2r(x0, y0);\n    var rr1 = Math.min(xy2r(x1, y1), radius);\n    var a0 = xy2a(x0, y0);\n    var path1;\n    var cpath;\n    if (clampAndSetR0R1(rr0, rr1)) {\n      path1 = path0 + _this.pathSector(r1);\n      if (r0) path1 += _this.pathSector(r0);\n      // keep 'starting' angle\n      cpath = pathCorner(r0, a0) + pathCorner(r1, a0);\n    }\n    applyZoomMove(path1, cpath);\n  }\n  function findPolygonRadius(x, y, va0, va1) {\n    var xy = helpers.findIntersectionXY(va0, va1, va0, [x - cxx, cyy - y]);\n    return norm(xy[0], xy[1]);\n  }\n  function zoomMoveForPolygons(dx, dy) {\n    var x1 = x0 + dx;\n    var y1 = y0 + dy;\n    var a0 = xy2a(x0, y0);\n    var a1 = xy2a(x1, y1);\n    var vangles0 = findEnclosingVertexAngles(a0, vangles);\n    var vangles1 = findEnclosingVertexAngles(a1, vangles);\n    var rr0 = findPolygonRadius(x0, y0, vangles0[0], vangles0[1]);\n    var rr1 = Math.min(findPolygonRadius(x1, y1, vangles1[0], vangles1[1]), radius);\n    var path1;\n    var cpath;\n    if (clampAndSetR0R1(rr0, rr1)) {\n      path1 = path0 + _this.pathSector(r1);\n      if (r0) path1 += _this.pathSector(r0);\n      // keep 'starting' angle here too\n      cpath = [pathCornerForPolygons(r0, vangles0[0], vangles0[1]), pathCornerForPolygons(r1, vangles0[0], vangles0[1])].join(' ');\n    }\n    applyZoomMove(path1, cpath);\n  }\n  function zoomDone() {\n    dragBox.removeZoombox(gd);\n    if (r0 === null || r1 === null) return;\n    var updateObj = {};\n    computeZoomUpdates(updateObj);\n    dragBox.showDoubleClickNotifier(gd);\n    Registry.call('_guiRelayout', gd, updateObj);\n  }\n  function computeZoomUpdates(update) {\n    var rl = radialAxis._rl;\n    var m = (rl[1] - rl[0]) / (1 - innerRadius / radius) / radius;\n    var newRng = [rl[0] + (r0 - innerRadius) * m, rl[0] + (r1 - innerRadius) * m];\n    update[_this.id + '.radialaxis.range'] = newRng;\n  }\n  function zoomClick(numClicks, evt) {\n    var clickMode = gd._fullLayout.clickmode;\n    dragBox.removeZoombox(gd);\n\n    // TODO double once vs twice logic (autorange vs fixed range)\n    if (numClicks === 2) {\n      var updateObj = {};\n      for (var k in _this.viewInitial) {\n        updateObj[_this.id + '.' + k] = _this.viewInitial[k];\n      }\n      gd.emit('plotly_doubleclick', null);\n      Registry.call('_guiRelayout', gd, updateObj);\n    }\n    if (clickMode.indexOf('select') > -1 && numClicks === 1) {\n      selectOnClick(evt, gd, [_this.xaxis], [_this.yaxis], _this.id, dragOpts);\n    }\n    if (clickMode.indexOf('event') > -1) {\n      Fx.click(gd, evt, _this.id);\n    }\n  }\n  dragOpts.prepFn = function (evt, startX, startY) {\n    var dragModeNow = gd._fullLayout.dragmode;\n    var bbox = mainDrag.getBoundingClientRect();\n    gd._fullLayout._calcInverseTransform(gd);\n    var inverse = gd._fullLayout._invTransform;\n    scaleX = gd._fullLayout._invScaleX;\n    scaleY = gd._fullLayout._invScaleY;\n    var transformedCoords = Lib.apply3DTransform(inverse)(startX - bbox.left, startY - bbox.top);\n    x0 = transformedCoords[0];\n    y0 = transformedCoords[1];\n\n    // need to offset x/y as bbox center does not\n    // match origin for asymmetric polygons\n    if (vangles) {\n      var offset = helpers.findPolygonOffset(radius, sectorInRad[0], sectorInRad[1], vangles);\n      x0 += cxx + offset[0];\n      y0 += cyy + offset[1];\n    }\n    switch (dragModeNow) {\n      case 'zoom':\n        dragOpts.clickFn = zoomClick;\n        if (!isSmith) {\n          if (vangles) {\n            dragOpts.moveFn = zoomMoveForPolygons;\n          } else {\n            dragOpts.moveFn = zoomMove;\n          }\n          dragOpts.doneFn = zoomDone;\n          zoomPrep(evt, startX, startY);\n        }\n        break;\n      case 'select':\n      case 'lasso':\n        prepSelect(evt, startX, startY, dragOpts, dragModeNow);\n        break;\n    }\n  };\n  dragElement.init(dragOpts);\n};\nproto.updateRadialDrag = function (fullLayout, polarLayout, rngIndex) {\n  var _this = this;\n  var gd = _this.gd;\n  var layers = _this.layers;\n  var radius = _this.radius;\n  var innerRadius = _this.innerRadius;\n  var cx = _this.cx;\n  var cy = _this.cy;\n  var radialAxis = _this.radialAxis;\n  var bl = constants.radialDragBoxSize;\n  var bl2 = bl / 2;\n  if (!radialAxis.visible) return;\n  var angle0 = deg2rad(_this.radialAxisAngle);\n  var rl = radialAxis._rl;\n  var rl0 = rl[0];\n  var rl1 = rl[1];\n  var rbase = rl[rngIndex];\n  var m = 0.75 * (rl[1] - rl[0]) / (1 - _this.getHole(polarLayout)) / radius;\n  var tx, ty, className;\n  if (rngIndex) {\n    tx = cx + (radius + bl2) * Math.cos(angle0);\n    ty = cy - (radius + bl2) * Math.sin(angle0);\n    className = 'radialdrag';\n  } else {\n    // the 'inner' box can get called:\n    // - when polar.hole>0\n    // - when polar.sector isn't a full circle\n    // otherwise it is hidden behind the main drag.\n    tx = cx + (innerRadius - bl2) * Math.cos(angle0);\n    ty = cy - (innerRadius - bl2) * Math.sin(angle0);\n    className = 'radialdrag-inner';\n  }\n  var radialDrag = dragBox.makeRectDragger(layers, className, 'crosshair', -bl2, -bl2, bl, bl);\n  var dragOpts = {\n    element: radialDrag,\n    gd: gd\n  };\n  if (fullLayout.dragmode === false) {\n    dragOpts.dragmode = false;\n  }\n  updateElement(d3.select(radialDrag), radialAxis.visible && innerRadius < radius, {\n    transform: strTranslate(tx, ty)\n  });\n\n  // move function (either rotate or re-range flavor)\n  var moveFn2;\n  // rotate angle on done\n  var angle1;\n  // re-range range[1] (or range[0]) on done\n  var rprime;\n  function moveFn(dx, dy) {\n    if (moveFn2) {\n      moveFn2(dx, dy);\n    } else {\n      var dvec = [dx, -dy];\n      var rvec = [Math.cos(angle0), Math.sin(angle0)];\n      var comp = Math.abs(Lib.dot(dvec, rvec) / Math.sqrt(Lib.dot(dvec, dvec)));\n\n      // mostly perpendicular motions rotate,\n      // mostly parallel motions re-range\n      if (!isNaN(comp)) {\n        moveFn2 = comp < 0.5 ? rotateMove : rerangeMove;\n      }\n    }\n    var update = {};\n    computeRadialAxisUpdates(update);\n    gd.emit('plotly_relayouting', update);\n  }\n  function computeRadialAxisUpdates(update) {\n    if (angle1 !== null) {\n      update[_this.id + '.radialaxis.angle'] = angle1;\n    } else if (rprime !== null) {\n      update[_this.id + '.radialaxis.range[' + rngIndex + ']'] = rprime;\n    }\n  }\n  function doneFn() {\n    if (angle1 !== null) {\n      Registry.call('_guiRelayout', gd, _this.id + '.radialaxis.angle', angle1);\n    } else if (rprime !== null) {\n      Registry.call('_guiRelayout', gd, _this.id + '.radialaxis.range[' + rngIndex + ']', rprime);\n    }\n  }\n  function rotateMove(dx, dy) {\n    // disable for inner drag boxes\n    if (rngIndex === 0) return;\n    var x1 = tx + dx;\n    var y1 = ty + dy;\n    angle1 = Math.atan2(cy - y1, x1 - cx);\n    if (_this.vangles) angle1 = snapToVertexAngle(angle1, _this.vangles);\n    angle1 = rad2deg(angle1);\n    var transform = strTranslate(cx, cy) + strRotate(-angle1);\n    layers['radial-axis'].attr('transform', transform);\n    layers['radial-line'].select('line').attr('transform', transform);\n    var fullLayoutNow = _this.gd._fullLayout;\n    var polarLayoutNow = fullLayoutNow[_this.id];\n    _this.updateRadialAxisTitle(fullLayoutNow, polarLayoutNow, angle1);\n  }\n  function rerangeMove(dx, dy) {\n    // project (dx, dy) unto unit radial axis vector\n    var dr = Lib.dot([dx, -dy], [Math.cos(angle0), Math.sin(angle0)]);\n    rprime = rbase - m * dr;\n\n    // make sure rprime does not change the range[0] -> range[1] sign\n    if (m > 0 !== (rngIndex ? rprime > rl0 : rprime < rl1)) {\n      rprime = null;\n      return;\n    }\n    var fullLayoutNow = gd._fullLayout;\n    var polarLayoutNow = fullLayoutNow[_this.id];\n\n    // update radial range -> update c2g -> update _m,_b\n    radialAxis.range[rngIndex] = rprime;\n    radialAxis._rl[rngIndex] = rprime;\n    _this.updateRadialAxis(fullLayoutNow, polarLayoutNow);\n    _this.xaxis.setRange();\n    _this.xaxis.setScale();\n    _this.yaxis.setRange();\n    _this.yaxis.setScale();\n    var hasRegl = false;\n    for (var traceType in _this.traceHash) {\n      var moduleCalcData = _this.traceHash[traceType];\n      var moduleCalcDataVisible = Lib.filterVisible(moduleCalcData);\n      var _module = moduleCalcData[0][0].trace._module;\n      _module.plot(gd, _this, moduleCalcDataVisible, polarLayoutNow);\n      if (Registry.traceIs(traceType, 'gl') && moduleCalcDataVisible.length) hasRegl = true;\n    }\n    if (hasRegl) {\n      clearGlCanvases(gd);\n      redrawReglTraces(gd);\n    }\n  }\n  dragOpts.prepFn = function () {\n    moveFn2 = null;\n    angle1 = null;\n    rprime = null;\n    dragOpts.moveFn = moveFn;\n    dragOpts.doneFn = doneFn;\n    clearOutline(gd);\n  };\n  dragOpts.clampFn = function (dx, dy) {\n    if (Math.sqrt(dx * dx + dy * dy) < constants.MINDRAG) {\n      dx = 0;\n      dy = 0;\n    }\n    return [dx, dy];\n  };\n  dragElement.init(dragOpts);\n};\nproto.updateAngularDrag = function (fullLayout) {\n  var _this = this;\n  var gd = _this.gd;\n  var layers = _this.layers;\n  var radius = _this.radius;\n  var angularAxis = _this.angularAxis;\n  var cx = _this.cx;\n  var cy = _this.cy;\n  var cxx = _this.cxx;\n  var cyy = _this.cyy;\n  var dbs = constants.angularDragBoxSize;\n  var angularDrag = dragBox.makeDragger(layers, 'path', 'angulardrag', fullLayout.dragmode === false ? 'none' : 'move');\n  var dragOpts = {\n    element: angularDrag,\n    gd: gd\n  };\n  if (fullLayout.dragmode === false) {\n    dragOpts.dragmode = false;\n  } else {\n    d3.select(angularDrag).attr('d', _this.pathAnnulus(radius, radius + dbs)).attr('transform', strTranslate(cx, cy)).call(setCursor, 'move');\n  }\n  function xy2a(x, y) {\n    return Math.atan2(cyy + dbs - y, x - cxx - dbs);\n  }\n\n  // scatter trace, points and textpoints selections\n  var scatterTraces = layers.frontplot.select('.scatterlayer').selectAll('.trace');\n  var scatterPoints = scatterTraces.selectAll('.point');\n  var scatterTextPoints = scatterTraces.selectAll('.textpoint');\n\n  // mouse px position at drag start (0), move (1)\n  var x0, y0;\n  // angular axis angle rotation at drag start (0), move (1)\n  var rot0, rot1;\n  // induced radial axis rotation (only used on polygon grids)\n  var rrot1;\n  // angle about circle center at drag start\n  var a0;\n  function moveFn(dx, dy) {\n    var fullLayoutNow = _this.gd._fullLayout;\n    var polarLayoutNow = fullLayoutNow[_this.id];\n    var x1 = x0 + dx * fullLayout._invScaleX;\n    var y1 = y0 + dy * fullLayout._invScaleY;\n    var a1 = xy2a(x1, y1);\n    var da = rad2deg(a1 - a0);\n    rot1 = rot0 + da;\n    layers.frontplot.attr('transform', strTranslate(_this.xOffset2, _this.yOffset2) + strRotate([-da, cxx, cyy]));\n    if (_this.vangles) {\n      rrot1 = _this.radialAxisAngle + da;\n      var trans = strTranslate(cx, cy) + strRotate(-da);\n      var trans2 = strTranslate(cx, cy) + strRotate(-rrot1);\n      layers.bg.attr('transform', trans);\n      layers['radial-grid'].attr('transform', trans);\n      layers['radial-axis'].attr('transform', trans2);\n      layers['radial-line'].select('line').attr('transform', trans2);\n      _this.updateRadialAxisTitle(fullLayoutNow, polarLayoutNow, rrot1);\n    } else {\n      _this.clipPaths.forTraces.select('path').attr('transform', strTranslate(cxx, cyy) + strRotate(da));\n    }\n\n    // 'un-rotate' marker and text points\n    scatterPoints.each(function () {\n      var sel = d3.select(this);\n      var xy = Drawing.getTranslate(sel);\n      sel.attr('transform', strTranslate(xy.x, xy.y) + strRotate([da]));\n    });\n    scatterTextPoints.each(function () {\n      var sel = d3.select(this);\n      var tx = sel.select('text');\n      var xy = Drawing.getTranslate(sel);\n      // N.B rotate -> translate ordering matters\n      sel.attr('transform', strRotate([da, tx.attr('x'), tx.attr('y')]) + strTranslate(xy.x, xy.y));\n    });\n\n    // update rotation -> range -> _m,_b\n    angularAxis.rotation = Lib.modHalf(rot1, 360);\n    _this.updateAngularAxis(fullLayoutNow, polarLayoutNow);\n    if (_this._hasClipOnAxisFalse && !Lib.isFullCircle(_this.sectorInRad)) {\n      scatterTraces.call(Drawing.hideOutsideRangePoints, _this);\n    }\n    var hasRegl = false;\n    for (var traceType in _this.traceHash) {\n      if (Registry.traceIs(traceType, 'gl')) {\n        var moduleCalcData = _this.traceHash[traceType];\n        var moduleCalcDataVisible = Lib.filterVisible(moduleCalcData);\n        var _module = moduleCalcData[0][0].trace._module;\n        _module.plot(gd, _this, moduleCalcDataVisible, polarLayoutNow);\n        if (moduleCalcDataVisible.length) hasRegl = true;\n      }\n    }\n    if (hasRegl) {\n      clearGlCanvases(gd);\n      redrawReglTraces(gd);\n    }\n    var update = {};\n    computeRotationUpdates(update);\n    gd.emit('plotly_relayouting', update);\n  }\n  function computeRotationUpdates(updateObj) {\n    updateObj[_this.id + '.angularaxis.rotation'] = rot1;\n    if (_this.vangles) {\n      updateObj[_this.id + '.radialaxis.angle'] = rrot1;\n    }\n  }\n  function doneFn() {\n    scatterTextPoints.select('text').attr('transform', null);\n    var updateObj = {};\n    computeRotationUpdates(updateObj);\n    Registry.call('_guiRelayout', gd, updateObj);\n  }\n  dragOpts.prepFn = function (evt, startX, startY) {\n    var polarLayoutNow = fullLayout[_this.id];\n    rot0 = polarLayoutNow.angularaxis.rotation;\n    var bbox = angularDrag.getBoundingClientRect();\n    x0 = startX - bbox.left;\n    y0 = startY - bbox.top;\n    gd._fullLayout._calcInverseTransform(gd);\n    var transformedCoords = Lib.apply3DTransform(fullLayout._invTransform)(x0, y0);\n    x0 = transformedCoords[0];\n    y0 = transformedCoords[1];\n    a0 = xy2a(x0, y0);\n    dragOpts.moveFn = moveFn;\n    dragOpts.doneFn = doneFn;\n    clearOutline(gd);\n  };\n\n  // I don't what we should do in this case, skip we now\n  if (_this.vangles && !Lib.isFullCircle(_this.sectorInRad)) {\n    dragOpts.prepFn = Lib.noop;\n    setCursor(d3.select(angularDrag), null);\n  }\n  dragElement.init(dragOpts);\n};\nproto.isPtInside = function (d) {\n  if (this.isSmith) return true;\n  var sectorInRad = this.sectorInRad;\n  var vangles = this.vangles;\n  var thetag = this.angularAxis.c2g(d.theta);\n  var radialAxis = this.radialAxis;\n  var r = radialAxis.c2l(d.r);\n  var rl = radialAxis._rl;\n  var fn = vangles ? helpers.isPtInsidePolygon : Lib.isPtInsideSector;\n  return fn(r, thetag, rl, sectorInRad, vangles);\n};\nproto.pathArc = function (r) {\n  var sectorInRad = this.sectorInRad;\n  var vangles = this.vangles;\n  var fn = vangles ? helpers.pathPolygon : Lib.pathArc;\n  return fn(r, sectorInRad[0], sectorInRad[1], vangles);\n};\nproto.pathSector = function (r) {\n  var sectorInRad = this.sectorInRad;\n  var vangles = this.vangles;\n  var fn = vangles ? helpers.pathPolygon : Lib.pathSector;\n  return fn(r, sectorInRad[0], sectorInRad[1], vangles);\n};\nproto.pathAnnulus = function (r0, r1) {\n  var sectorInRad = this.sectorInRad;\n  var vangles = this.vangles;\n  var fn = vangles ? helpers.pathPolygonAnnulus : Lib.pathAnnulus;\n  return fn(r0, r1, sectorInRad[0], sectorInRad[1], vangles);\n};\nproto.pathSubplot = function () {\n  var r0 = this.innerRadius;\n  var r1 = this.radius;\n  return r0 ? this.pathAnnulus(r0, r1) : this.pathSector(r1);\n};\nproto.fillViewInitialKey = function (key, val) {\n  if (!(key in this.viewInitial)) {\n    this.viewInitial[key] = val;\n  }\n};\nfunction strTickLayout(axLayout) {\n  var out = axLayout.ticks + String(axLayout.ticklen) + String(axLayout.showticklabels);\n  if ('side' in axLayout) out += axLayout.side;\n  return out;\n}\n\n// Finds the bounding box of a given circle sector,\n// inspired by https://math.stackexchange.com/q/1852703\n//\n// assumes:\n// - sector[0] < sector[1]\n// - counterclockwise rotation\nfunction computeSectorBBox(sector) {\n  var s0 = sector[0];\n  var s1 = sector[1];\n  var arc = s1 - s0;\n  var a0 = mod(s0, 360);\n  var a1 = a0 + arc;\n  var ax0 = Math.cos(deg2rad(a0));\n  var ay0 = Math.sin(deg2rad(a0));\n  var ax1 = Math.cos(deg2rad(a1));\n  var ay1 = Math.sin(deg2rad(a1));\n  var x0, y0, x1, y1;\n  if (a0 <= 90 && a1 >= 90 || a0 > 90 && a1 >= 450) {\n    y1 = 1;\n  } else if (ay0 <= 0 && ay1 <= 0) {\n    y1 = 0;\n  } else {\n    y1 = Math.max(ay0, ay1);\n  }\n  if (a0 <= 180 && a1 >= 180 || a0 > 180 && a1 >= 540) {\n    x0 = -1;\n  } else if (ax0 >= 0 && ax1 >= 0) {\n    x0 = 0;\n  } else {\n    x0 = Math.min(ax0, ax1);\n  }\n  if (a0 <= 270 && a1 >= 270 || a0 > 270 && a1 >= 630) {\n    y0 = -1;\n  } else if (ay0 >= 0 && ay1 >= 0) {\n    y0 = 0;\n  } else {\n    y0 = Math.min(ay0, ay1);\n  }\n  if (a1 >= 360) {\n    x1 = 1;\n  } else if (ax0 <= 0 && ax1 <= 0) {\n    x1 = 0;\n  } else {\n    x1 = Math.max(ax0, ax1);\n  }\n  return [x0, y0, x1, y1];\n}\nfunction snapToVertexAngle(a, vangles) {\n  var fn = function (v) {\n    return Lib.angleDist(a, v);\n  };\n  var ind = Lib.findIndexOfMin(vangles, fn);\n  return vangles[ind];\n}\nfunction updateElement(sel, showAttr, attrs) {\n  if (showAttr) {\n    sel.attr('display', null);\n    sel.attr(attrs);\n  } else if (sel) {\n    sel.attr('display', 'none');\n  }\n  return sel;\n}\n\n/***/ }),\n\n/***/ 12101:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2003701__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2003701__(71828);\nvar setConvertCartesian = __nested_webpack_require_2003701__(21994);\nvar deg2rad = Lib.deg2rad;\nvar rad2deg = Lib.rad2deg;\n\n/**\n * setConvert for polar axes!\n *\n * @param {object} ax\n *   axis in question (works for both radial and angular axes)\n * @param {object} polarLayout\n *   full polar layout of the subplot associated with 'ax'\n * @param {object} fullLayout\n *   full layout\n *\n * Here, reuse some of the Cartesian setConvert logic,\n * but we must extend some of it, as both radial and angular axes\n * don't have domains and angular axes don't have _true_ ranges.\n *\n * Moreover, we introduce two new coordinate systems:\n * - 'g' for geometric coordinates and\n * - 't' for angular ticks\n *\n * Radial axis coordinate systems:\n * - d, c and l: same as for cartesian axes\n * - g: like calcdata but translated about `radialaxis.range[0]` & `polar.hole`\n *\n * Angular axis coordinate systems:\n * - d: data, in whatever form it's provided\n * - c: calcdata, turned into radians (for linear axes)\n *      or category indices (category axes)\n * - t: tick calcdata, just like 'c' but in degrees for linear axes\n * - g: geometric calcdata, radians coordinates that take into account\n *      axis rotation and direction\n *\n * Then, 'g'eometric data is ready to be converted to (x,y).\n */\nmodule.exports = function setConvert(ax, polarLayout, fullLayout) {\n  setConvertCartesian(ax, fullLayout);\n  switch (ax._id) {\n    case 'x':\n    case 'radialaxis':\n      setConvertRadial(ax, polarLayout);\n      break;\n    case 'angularaxis':\n      setConvertAngular(ax, polarLayout);\n      break;\n  }\n};\nfunction setConvertRadial(ax, polarLayout) {\n  var subplot = polarLayout._subplot;\n  ax.setGeometry = function () {\n    var rl0 = ax._rl[0];\n    var rl1 = ax._rl[1];\n    var b = subplot.innerRadius;\n    var m = (subplot.radius - b) / (rl1 - rl0);\n    var b2 = b / m;\n    var rFilter = rl0 > rl1 ? function (v) {\n      return v <= 0;\n    } : function (v) {\n      return v >= 0;\n    };\n    ax.c2g = function (v) {\n      var r = ax.c2l(v) - rl0;\n      return (rFilter(r) ? r : 0) + b2;\n    };\n    ax.g2c = function (v) {\n      return ax.l2c(v + rl0 - b2);\n    };\n    ax.g2p = function (v) {\n      return v * m;\n    };\n    ax.c2p = function (v) {\n      return ax.g2p(ax.c2g(v));\n    };\n  };\n}\nfunction toRadians(v, unit) {\n  return unit === 'degrees' ? deg2rad(v) : v;\n}\nfunction fromRadians(v, unit) {\n  return unit === 'degrees' ? rad2deg(v) : v;\n}\nfunction setConvertAngular(ax, polarLayout) {\n  var axType = ax.type;\n  if (axType === 'linear') {\n    var _d2c = ax.d2c;\n    var _c2d = ax.c2d;\n    ax.d2c = function (v, unit) {\n      return toRadians(_d2c(v), unit);\n    };\n    ax.c2d = function (v, unit) {\n      return _c2d(fromRadians(v, unit));\n    };\n  }\n\n  // override makeCalcdata to handle thetaunit and special theta0/dtheta logic\n  ax.makeCalcdata = function (trace, coord) {\n    var arrayIn = trace[coord];\n    var len = trace._length;\n    var arrayOut, i;\n    var _d2c = function (v) {\n      return ax.d2c(v, trace.thetaunit);\n    };\n    if (arrayIn) {\n      if (Lib.isTypedArray(arrayIn) && axType === 'linear') {\n        if (len === arrayIn.length) {\n          return arrayIn;\n        } else if (arrayIn.subarray) {\n          return arrayIn.subarray(0, len);\n        }\n      }\n      arrayOut = new Array(len);\n      for (i = 0; i < len; i++) {\n        arrayOut[i] = _d2c(arrayIn[i]);\n      }\n    } else {\n      var coord0 = coord + '0';\n      var dcoord = 'd' + coord;\n      var v0 = coord0 in trace ? _d2c(trace[coord0]) : 0;\n      var dv = trace[dcoord] ? _d2c(trace[dcoord]) : (ax.period || 2 * Math.PI) / len;\n      arrayOut = new Array(len);\n      for (i = 0; i < len; i++) {\n        arrayOut[i] = v0 + i * dv;\n      }\n    }\n    return arrayOut;\n  };\n\n  // N.B. we mock the axis 'range' here\n  ax.setGeometry = function () {\n    var sector = polarLayout.sector;\n    var sectorInRad = sector.map(deg2rad);\n    var dir = {\n      clockwise: -1,\n      counterclockwise: 1\n    }[ax.direction];\n    var rot = deg2rad(ax.rotation);\n    var rad2g = function (v) {\n      return dir * v + rot;\n    };\n    var g2rad = function (v) {\n      return (v - rot) / dir;\n    };\n    var rad2c, c2rad;\n    var rad2t, t2rad;\n    switch (axType) {\n      case 'linear':\n        c2rad = rad2c = Lib.identity;\n        t2rad = deg2rad;\n        rad2t = rad2deg;\n\n        // Set the angular range in degrees to make auto-tick computation cleaner,\n        // changing rotation/direction should not affect the angular tick value.\n        ax.range = Lib.isFullCircle(sectorInRad) ? [sector[0], sector[0] + 360] : sectorInRad.map(g2rad).map(rad2deg);\n        break;\n      case 'category':\n        var catLen = ax._categories.length;\n        var _period = ax.period ? Math.max(ax.period, catLen) : catLen;\n\n        // fallback in case all categories have been filtered out\n        if (_period === 0) _period = 1;\n        c2rad = t2rad = function (v) {\n          return v * 2 * Math.PI / _period;\n        };\n        rad2c = rad2t = function (v) {\n          return v * _period / Math.PI / 2;\n        };\n        ax.range = [0, _period];\n        break;\n    }\n    ax.c2g = function (v) {\n      return rad2g(c2rad(v));\n    };\n    ax.g2c = function (v) {\n      return rad2c(g2rad(v));\n    };\n    ax.t2g = function (v) {\n      return rad2g(t2rad(v));\n    };\n    ax.g2t = function (v) {\n      return rad2t(g2rad(v));\n    };\n  };\n}\n\n/***/ }),\n\n/***/ 39779:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attr: 'subplot',\n  name: 'smith',\n  axisNames: ['realaxis', 'imaginaryaxis' // imaginary axis should be second here so that the `tickvals` defaults could be inherited from realaxis\n  ],\n\n  axisName2dataArray: {\n    imaginaryaxis: 'imag',\n    realaxis: 'real'\n  }\n};\n\n/***/ }),\n\n/***/ 23893:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nfunction sign(x) {\n  return x < 0 ? -1 : x > 0 ? 1 : 0;\n}\n\n// adapted from Mike Bostock's https://observablehq.com/@mbostock/smith-chart\nfunction smith(a) {\n  var R = a[0];\n  var X = a[1];\n  if (!isFinite(R) || !isFinite(X)) return [1, 0];\n  var D = (R + 1) * (R + 1) + X * X;\n  return [(R * R + X * X - 1) / D, 2 * X / D];\n}\nfunction transform(subplot, a) {\n  var x = a[0];\n  var y = a[1];\n  return [x * subplot.radius + subplot.cx, -y * subplot.radius + subplot.cy];\n}\nfunction scale(subplot, r) {\n  return r * subplot.radius;\n}\nfunction reactanceArc(subplot, X, R1, R2) {\n  var t1 = transform(subplot, smith([R1, X]));\n  var x1 = t1[0];\n  var y1 = t1[1];\n  var t2 = transform(subplot, smith([R2, X]));\n  var x2 = t2[0];\n  var y2 = t2[1];\n  if (X === 0) {\n    return ['M' + x1 + ',' + y1, 'L' + x2 + ',' + y2].join(' ');\n  }\n  var r = scale(subplot, 1 / Math.abs(X));\n  return ['M' + x1 + ',' + y1, 'A' + r + ',' + r + ' 0 0,' + (X < 0 ? 1 : 0) + ' ' + x2 + ',' + y2].join(' ');\n}\nfunction resistanceArc(subplot, R, X1, X2) {\n  var r = scale(subplot, 1 / (R + 1));\n  var t1 = transform(subplot, smith([R, X1]));\n  var x1 = t1[0];\n  var y1 = t1[1];\n  var t2 = transform(subplot, smith([R, X2]));\n  var x2 = t2[0];\n  var y2 = t2[1];\n  if (sign(X1) !== sign(X2)) {\n    var t0 = transform(subplot, smith([R, 0]));\n    var x0 = t0[0];\n    var y0 = t0[1];\n    return ['M' + x1 + ',' + y1, 'A' + r + ',' + r + ' 0 0,' + (0 < X1 ? 0 : 1) + ' ' + x0 + ',' + y0, 'A' + r + ',' + r + ' 0 0,' + (X2 < 0 ? 0 : 1) + x2 + ',' + y2].join(' ');\n  }\n  return ['M' + x1 + ',' + y1, 'A' + r + ',' + r + ' 0 0,' + (X2 < X1 ? 0 : 1) + ' ' + x2 + ',' + y2].join(' ');\n}\nmodule.exports = {\n  smith: smith,\n  reactanceArc: reactanceArc,\n  resistanceArc: resistanceArc,\n  smithTransform: transform\n};\n\n/***/ }),\n\n/***/ 7504:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2011431__) {\n\n\"use strict\";\n\n\nvar getSubplotCalcData = (__nested_webpack_require_2011431__(27659)/* .getSubplotCalcData */ .AU);\nvar counterRegex = (__nested_webpack_require_2011431__(71828).counterRegex);\nvar createPolar = __nested_webpack_require_2011431__(77997);\nvar constants = __nested_webpack_require_2011431__(39779);\nvar attr = constants.attr;\nvar name = constants.name;\nvar counter = counterRegex(name);\nvar attributes = {};\nattributes[attr] = {\n  valType: 'subplotid',\n  dflt: name,\n  editType: 'calc'\n};\nfunction plot(gd) {\n  var fullLayout = gd._fullLayout;\n  var calcData = gd.calcdata;\n  var subplotIds = fullLayout._subplots[name];\n  for (var i = 0; i < subplotIds.length; i++) {\n    var id = subplotIds[i];\n    var subplotCalcData = getSubplotCalcData(calcData, name, id);\n    var subplot = fullLayout[id]._subplot;\n    if (!subplot) {\n      subplot = createPolar(gd, id, true);\n      fullLayout[id]._subplot = subplot;\n    }\n    subplot.plot(subplotCalcData, fullLayout, gd._promises);\n  }\n}\nfunction clean(newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  var oldIds = oldFullLayout._subplots[name] || [];\n  for (var i = 0; i < oldIds.length; i++) {\n    var id = oldIds[i];\n    var oldSubplot = oldFullLayout[id]._subplot;\n    if (!newFullLayout[id] && !!oldSubplot) {\n      oldSubplot.framework.remove();\n      for (var k in oldSubplot.clipPaths) {\n        oldSubplot.clipPaths[k].remove();\n      }\n    }\n  }\n}\nmodule.exports = {\n  attr: attr,\n  name: name,\n  idRoot: name,\n  idRegex: counter,\n  attrRegex: counter,\n  attributes: attributes,\n  layoutAttributes: __nested_webpack_require_2011431__(33419),\n  supplyLayoutDefaults: __nested_webpack_require_2011431__(9558),\n  plot: plot,\n  clean: clean,\n  toSVG: (__nested_webpack_require_2011431__(93612).toSVG)\n};\n\n/***/ }),\n\n/***/ 33419:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2013204__) {\n\n\"use strict\";\n\n\nvar colorAttrs = __nested_webpack_require_2013204__(22399);\nvar axesAttrs = __nested_webpack_require_2013204__(13838);\nvar domainAttrs = (__nested_webpack_require_2013204__(27670)/* .attributes */ .Y);\nvar extendFlat = (__nested_webpack_require_2013204__(71828).extendFlat);\nvar overrideAll = (__nested_webpack_require_2013204__(30962).overrideAll);\nvar axisLineGridAttr = overrideAll({\n  color: axesAttrs.color,\n  showline: extendFlat({}, axesAttrs.showline, {\n    dflt: true\n  }),\n  linecolor: axesAttrs.linecolor,\n  linewidth: axesAttrs.linewidth,\n  showgrid: extendFlat({}, axesAttrs.showgrid, {\n    dflt: true\n  }),\n  gridcolor: axesAttrs.gridcolor,\n  gridwidth: axesAttrs.gridwidth,\n  griddash: axesAttrs.griddash\n}, 'plot', 'from-root');\nvar axisTickAttrs = overrideAll({\n  ticklen: axesAttrs.ticklen,\n  tickwidth: extendFlat({}, axesAttrs.tickwidth, {\n    dflt: 2\n  }),\n  tickcolor: axesAttrs.tickcolor,\n  showticklabels: axesAttrs.showticklabels,\n  showtickprefix: axesAttrs.showtickprefix,\n  tickprefix: axesAttrs.tickprefix,\n  showticksuffix: axesAttrs.showticksuffix,\n  ticksuffix: axesAttrs.ticksuffix,\n  tickfont: axesAttrs.tickfont,\n  tickformat: axesAttrs.tickformat,\n  hoverformat: axesAttrs.hoverformat,\n  layer: axesAttrs.layer\n}, 'plot', 'from-root');\nvar realAxisAttrs = extendFlat({\n  visible: extendFlat({}, axesAttrs.visible, {\n    dflt: true\n  }),\n  tickvals: {\n    dflt: [0.2, 0.5, 1, 2, 5],\n    valType: 'data_array',\n    editType: 'plot'\n  },\n  tickangle: extendFlat({}, axesAttrs.tickangle, {\n    dflt: 90\n  }),\n  ticks: {\n    valType: 'enumerated',\n    values: ['top', 'bottom', ''],\n    editType: 'ticks'\n  },\n  side: {\n    valType: 'enumerated',\n    values: ['top', 'bottom'],\n    dflt: 'top',\n    editType: 'plot'\n  },\n  editType: 'calc'\n}, axisLineGridAttr, axisTickAttrs);\nvar imaginaryAxisAttrs = extendFlat({\n  visible: extendFlat({}, axesAttrs.visible, {\n    dflt: true\n  }),\n  tickvals: {\n    valType: 'data_array',\n    editType: 'plot'\n  },\n  ticks: axesAttrs.ticks,\n  editType: 'calc'\n}, axisLineGridAttr, axisTickAttrs);\nmodule.exports = {\n  domain: domainAttrs({\n    name: 'smith',\n    editType: 'plot'\n  }),\n  bgcolor: {\n    valType: 'color',\n    editType: 'plot',\n    dflt: colorAttrs.background\n  },\n  realaxis: realAxisAttrs,\n  imaginaryaxis: imaginaryAxisAttrs,\n  editType: 'calc'\n};\n\n/***/ }),\n\n/***/ 9558:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2015575__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2015575__(71828);\nvar Color = __nested_webpack_require_2015575__(7901);\nvar Template = __nested_webpack_require_2015575__(44467);\nvar handleSubplotDefaults = __nested_webpack_require_2015575__(49119);\nvar getSubplotData = (__nested_webpack_require_2015575__(27659)/* .getSubplotData */ .NG);\nvar handlePrefixSuffixDefaults = __nested_webpack_require_2015575__(89426);\nvar handleTickLabelDefaults = __nested_webpack_require_2015575__(96115);\nvar handleLineGridDefaults = __nested_webpack_require_2015575__(92128);\nvar setConvertCartesian = __nested_webpack_require_2015575__(21994);\nvar layoutAttributes = __nested_webpack_require_2015575__(33419);\nvar constants = __nested_webpack_require_2015575__(39779);\nvar axisNames = constants.axisNames;\nvar makeImagDflt = memoize(function (realTickvals) {\n  return realTickvals.slice().reverse().map(function (x) {\n    return -x;\n  }).concat([0]).concat(realTickvals);\n}, String);\nfunction handleDefaults(contIn, contOut, coerce, opts) {\n  var bgColor = coerce('bgcolor');\n  opts.bgColor = Color.combine(bgColor, opts.paper_bgcolor);\n  var subplotData = getSubplotData(opts.fullData, constants.name, opts.id);\n  var layoutOut = opts.layoutOut;\n  var axName;\n  function coerceAxis(attr, dflt) {\n    return coerce(axName + '.' + attr, dflt);\n  }\n  for (var i = 0; i < axisNames.length; i++) {\n    axName = axisNames[i];\n    if (!Lib.isPlainObject(contIn[axName])) {\n      contIn[axName] = {};\n    }\n    var axIn = contIn[axName];\n    var axOut = Template.newContainer(contOut, axName);\n    axOut._id = axOut._name = axName;\n    axOut._attr = opts.id + '.' + axName;\n    axOut._traceIndices = subplotData.map(function (t) {\n      return t._expandedIndex;\n    });\n    var visible = coerceAxis('visible');\n    axOut.type = 'linear';\n    setConvertCartesian(axOut, layoutOut);\n    handlePrefixSuffixDefaults(axIn, axOut, coerceAxis, axOut.type);\n    if (visible) {\n      var isRealAxis = axName === 'realaxis';\n      if (isRealAxis) coerceAxis('side');\n      if (isRealAxis) {\n        coerceAxis('tickvals');\n      } else {\n        var imagTickvalsDflt = makeImagDflt(contOut.realaxis.tickvals || layoutAttributes.realaxis.tickvals.dflt);\n        coerceAxis('tickvals', imagTickvalsDflt);\n      }\n      var dfltColor;\n      var dfltFontColor;\n      var dfltFontSize;\n      var dfltFontFamily;\n      var font = opts.font || {};\n      if (visible) {\n        dfltColor = coerceAxis('color');\n        dfltFontColor = dfltColor === axIn.color ? dfltColor : font.color;\n        dfltFontSize = font.size;\n        dfltFontFamily = font.family;\n      }\n      handleTickLabelDefaults(axIn, axOut, coerceAxis, axOut.type, {\n        noTicklabelstep: true,\n        noAng: !isRealAxis,\n        noExp: true,\n        font: {\n          color: dfltFontColor,\n          size: dfltFontSize,\n          family: dfltFontFamily\n        }\n      });\n      Lib.coerce2(contIn, contOut, layoutAttributes, axName + '.ticklen');\n      Lib.coerce2(contIn, contOut, layoutAttributes, axName + '.tickwidth');\n      Lib.coerce2(contIn, contOut, layoutAttributes, axName + '.tickcolor', contOut.color);\n      var showTicks = coerceAxis('ticks');\n      if (!showTicks) {\n        delete contOut[axName].ticklen;\n        delete contOut[axName].tickwidth;\n        delete contOut[axName].tickcolor;\n      }\n      handleLineGridDefaults(axIn, axOut, coerceAxis, {\n        dfltColor: dfltColor,\n        bgColor: opts.bgColor,\n        // default grid color is darker here (60%, vs cartesian default ~91%)\n        // because the grid is not square so the eye needs heavier cues to follow\n        blend: 60,\n        showLine: true,\n        showGrid: true,\n        noZeroLine: true,\n        attributes: layoutAttributes[axName]\n      });\n      coerceAxis('layer');\n    }\n    coerceAxis('hoverformat');\n    delete axOut.type;\n    axOut._input = axIn;\n  }\n}\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {\n  handleSubplotDefaults(layoutIn, layoutOut, fullData, {\n    noUirevision: true,\n    type: constants.name,\n    attributes: layoutAttributes,\n    handleDefaults: handleDefaults,\n    font: layoutOut.font,\n    paper_bgcolor: layoutOut.paper_bgcolor,\n    fullData: fullData,\n    layoutOut: layoutOut\n  });\n};\nfunction memoize(fn, keyFn) {\n  var cache = {};\n  return function (val) {\n    var newKey = keyFn ? keyFn(val) : val;\n    if (newKey in cache) {\n      return cache[newKey];\n    }\n    var out = fn(val);\n    cache[newKey] = out;\n    return out;\n  };\n}\n\n/***/ }),\n\n/***/ 49119:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2020039__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2020039__(71828);\nvar Template = __nested_webpack_require_2020039__(44467);\nvar handleDomainDefaults = (__nested_webpack_require_2020039__(27670)/* .defaults */ .c);\n\n/**\n * Find and supply defaults to all subplots of a given type\n * This handles subplots that are contained within one container - so\n * gl3d, geo, ternary... but not 2d axes which have separate x and y axes\n * finds subplots, coerces their `domain` attributes, then calls the\n * given handleDefaults function to fill in everything else.\n *\n * layoutIn: the complete user-supplied input layout\n * layoutOut: the complete finished layout\n * fullData: the finished data array, used only to find subplots\n * opts: {\n *  type: subplot type string\n *  attributes: subplot attributes object\n *  partition: 'x' or 'y', which direction to divide domain space by default\n *      (default 'x', ie side-by-side subplots)\n *      TODO: this option is only here because 3D and geo made opposite\n *      choices in this regard previously and I didn't want to change it.\n *      Instead we should do:\n *      - something consistent\n *      - something more square (4 cuts 2x2, 5/6 cuts 2x3, etc.)\n *      - something that includes all subplot types in one arrangement,\n *        now that we can have them together!\n *  handleDefaults: function of (subplotLayoutIn, subplotLayoutOut, coerce, opts)\n *      this opts object is passed through to handleDefaults, so attach any\n *      additional items needed by this function here as well\n * }\n */\nmodule.exports = function handleSubplotDefaults(layoutIn, layoutOut, fullData, opts) {\n  var subplotType = opts.type;\n  var subplotAttributes = opts.attributes;\n  var handleDefaults = opts.handleDefaults;\n  var partition = opts.partition || 'x';\n  var ids = layoutOut._subplots[subplotType];\n  var idsLength = ids.length;\n  var baseId = idsLength && ids[0].replace(/\\d+$/, '');\n  var subplotLayoutIn, subplotLayoutOut;\n  function coerce(attr, dflt) {\n    return Lib.coerce(subplotLayoutIn, subplotLayoutOut, subplotAttributes, attr, dflt);\n  }\n  for (var i = 0; i < idsLength; i++) {\n    var id = ids[i];\n\n    // ternary traces get a layout ternary for free!\n    if (layoutIn[id]) subplotLayoutIn = layoutIn[id];else subplotLayoutIn = layoutIn[id] = {};\n    subplotLayoutOut = Template.newContainer(layoutOut, id, baseId);\n    if (!opts.noUirevision) coerce('uirevision', layoutOut.uirevision);\n    var dfltDomains = {};\n    dfltDomains[partition] = [i / idsLength, (i + 1) / idsLength];\n    handleDomainDefaults(subplotLayoutOut, layoutOut, coerce, dfltDomains);\n    opts.id = id;\n    handleDefaults(subplotLayoutIn, subplotLayoutOut, coerce, opts);\n  }\n};\n\n/***/ }),\n\n/***/ 5386:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_2022797__) {\n\n\"use strict\";\n\n\nvar docs = __nested_webpack_require_2022797__(31562);\nvar FORMAT_LINK = docs.FORMAT_LINK;\nvar DATE_FORMAT_LINK = docs.DATE_FORMAT_LINK;\nfunction templateFormatStringDescription(opts) {\n  var supportOther = opts && opts.supportOther;\n  return ['Variables are inserted using %{variable},', 'for example \"y: %{y}\"' + (supportOther ? ' as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown.' : '.'), 'Numbers are formatted using d3-format\\'s syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\".', FORMAT_LINK, 'for details on the formatting syntax.', 'Dates are formatted using d3-time-format\\'s syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\".', DATE_FORMAT_LINK, 'for details on the date formatting syntax.'].join(' ');\n}\nfunction describeVariables(extra) {\n  var descPart = extra.description ? ' ' + extra.description : '';\n  var keys = extra.keys || [];\n  if (keys.length > 0) {\n    var quotedKeys = [];\n    for (var i = 0; i < keys.length; i++) {\n      quotedKeys[i] = '`' + keys[i] + '`';\n    }\n    descPart = descPart + 'Finally, the template string has access to ';\n    if (keys.length === 1) {\n      descPart = 'variable ' + quotedKeys[0];\n    } else {\n      descPart = 'variables ' + quotedKeys.slice(0, -1).join(', ') + ' and ' + quotedKeys.slice(-1) + '.';\n    }\n  }\n  return descPart;\n}\nexports.f = function (opts, extra) {\n  opts = opts || {};\n  extra = extra || {};\n  var descPart = describeVariables(extra);\n  var hovertemplate = {\n    valType: 'string',\n    dflt: '',\n    editType: opts.editType || 'none'\n  };\n  if (opts.arrayOk !== false) {\n    hovertemplate.arrayOk = true;\n  }\n  return hovertemplate;\n};\nexports.s = function (opts, extra) {\n  opts = opts || {};\n  extra = extra || {};\n  var descPart = describeVariables(extra);\n  var texttemplate = {\n    valType: 'string',\n    dflt: '',\n    editType: opts.editType || 'calc'\n  };\n  if (opts.arrayOk !== false) {\n    texttemplate.arrayOk = true;\n  }\n  return texttemplate;\n};\n\n/***/ }),\n\n/***/ 61639:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_2025100__) {\n\n\"use strict\";\n\n\nvar Ternary = __nested_webpack_require_2025100__(64380);\nvar getSubplotCalcData = (__nested_webpack_require_2025100__(27659)/* .getSubplotCalcData */ .AU);\nvar counterRegex = (__nested_webpack_require_2025100__(71828).counterRegex);\nvar TERNARY = 'ternary';\nexports.name = TERNARY;\nvar attr = exports.attr = 'subplot';\nexports.idRoot = TERNARY;\nexports.idRegex = exports.attrRegex = counterRegex(TERNARY);\nvar attributes = exports.attributes = {};\nattributes[attr] = {\n  valType: 'subplotid',\n  dflt: 'ternary',\n  editType: 'calc'\n};\nexports.layoutAttributes = __nested_webpack_require_2025100__(81367);\nexports.supplyLayoutDefaults = __nested_webpack_require_2025100__(25369);\nexports.plot = function plot(gd) {\n  var fullLayout = gd._fullLayout;\n  var calcData = gd.calcdata;\n  var ternaryIds = fullLayout._subplots[TERNARY];\n  for (var i = 0; i < ternaryIds.length; i++) {\n    var ternaryId = ternaryIds[i];\n    var ternaryCalcData = getSubplotCalcData(calcData, TERNARY, ternaryId);\n    var ternary = fullLayout[ternaryId]._subplot;\n\n    // If ternary is not instantiated, create one!\n    if (!ternary) {\n      ternary = new Ternary({\n        id: ternaryId,\n        graphDiv: gd,\n        container: fullLayout._ternarylayer.node()\n      }, fullLayout);\n      fullLayout[ternaryId]._subplot = ternary;\n    }\n    ternary.plot(ternaryCalcData, fullLayout, gd._promises);\n  }\n};\nexports.clean = function (newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  var oldTernaryKeys = oldFullLayout._subplots[TERNARY] || [];\n  for (var i = 0; i < oldTernaryKeys.length; i++) {\n    var oldTernaryKey = oldTernaryKeys[i];\n    var oldTernary = oldFullLayout[oldTernaryKey]._subplot;\n    if (!newFullLayout[oldTernaryKey] && !!oldTernary) {\n      oldTernary.plotContainer.remove();\n      oldTernary.clipDef.remove();\n      oldTernary.clipDefRelative.remove();\n      oldTernary.layers['a-title'].remove();\n      oldTernary.layers['b-title'].remove();\n      oldTernary.layers['c-title'].remove();\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 81367:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2027145__) {\n\n\"use strict\";\n\n\nvar colorAttrs = __nested_webpack_require_2027145__(22399);\nvar domainAttrs = (__nested_webpack_require_2027145__(27670)/* .attributes */ .Y);\nvar axesAttrs = __nested_webpack_require_2027145__(13838);\nvar overrideAll = (__nested_webpack_require_2027145__(30962).overrideAll);\nvar extendFlat = (__nested_webpack_require_2027145__(1426).extendFlat);\nvar ternaryAxesAttrs = {\n  title: {\n    text: axesAttrs.title.text,\n    font: axesAttrs.title.font\n    // TODO does standoff here make sense?\n  },\n\n  color: axesAttrs.color,\n  // ticks\n  tickmode: axesAttrs.minor.tickmode,\n  nticks: extendFlat({}, axesAttrs.nticks, {\n    dflt: 6,\n    min: 1\n  }),\n  tick0: axesAttrs.tick0,\n  dtick: axesAttrs.dtick,\n  tickvals: axesAttrs.tickvals,\n  ticktext: axesAttrs.ticktext,\n  ticks: axesAttrs.ticks,\n  ticklen: axesAttrs.ticklen,\n  tickwidth: axesAttrs.tickwidth,\n  tickcolor: axesAttrs.tickcolor,\n  ticklabelstep: axesAttrs.ticklabelstep,\n  showticklabels: axesAttrs.showticklabels,\n  showtickprefix: axesAttrs.showtickprefix,\n  tickprefix: axesAttrs.tickprefix,\n  showticksuffix: axesAttrs.showticksuffix,\n  ticksuffix: axesAttrs.ticksuffix,\n  showexponent: axesAttrs.showexponent,\n  exponentformat: axesAttrs.exponentformat,\n  minexponent: axesAttrs.minexponent,\n  separatethousands: axesAttrs.separatethousands,\n  tickfont: axesAttrs.tickfont,\n  tickangle: axesAttrs.tickangle,\n  tickformat: axesAttrs.tickformat,\n  tickformatstops: axesAttrs.tickformatstops,\n  hoverformat: axesAttrs.hoverformat,\n  // lines and grids\n  showline: extendFlat({}, axesAttrs.showline, {\n    dflt: true\n  }),\n  linecolor: axesAttrs.linecolor,\n  linewidth: axesAttrs.linewidth,\n  showgrid: extendFlat({}, axesAttrs.showgrid, {\n    dflt: true\n  }),\n  gridcolor: axesAttrs.gridcolor,\n  gridwidth: axesAttrs.gridwidth,\n  griddash: axesAttrs.griddash,\n  layer: axesAttrs.layer,\n  // range\n  min: {\n    valType: 'number',\n    dflt: 0,\n    min: 0\n  },\n  _deprecated: {\n    title: axesAttrs._deprecated.title,\n    titlefont: axesAttrs._deprecated.titlefont\n  }\n};\nvar attrs = module.exports = overrideAll({\n  domain: domainAttrs({\n    name: 'ternary'\n  }),\n  bgcolor: {\n    valType: 'color',\n    dflt: colorAttrs.background\n  },\n  sum: {\n    valType: 'number',\n    dflt: 1,\n    min: 0\n  },\n  aaxis: ternaryAxesAttrs,\n  baxis: ternaryAxesAttrs,\n  caxis: ternaryAxesAttrs\n}, 'plot', 'from-root');\n\n// set uirevisions outside of `overrideAll` so we can get `editType: none`\nattrs.uirevision = {\n  valType: 'any',\n  editType: 'none'\n};\nattrs.aaxis.uirevision = attrs.baxis.uirevision = attrs.caxis.uirevision = {\n  valType: 'any',\n  editType: 'none'\n};\n\n/***/ }),\n\n/***/ 25369:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2029799__) {\n\n\"use strict\";\n\n\nvar Color = __nested_webpack_require_2029799__(7901);\nvar Template = __nested_webpack_require_2029799__(44467);\nvar Lib = __nested_webpack_require_2029799__(71828);\nvar handleSubplotDefaults = __nested_webpack_require_2029799__(49119);\nvar handleTickLabelDefaults = __nested_webpack_require_2029799__(96115);\nvar handlePrefixSuffixDefaults = __nested_webpack_require_2029799__(89426);\nvar handleTickMarkDefaults = __nested_webpack_require_2029799__(38701);\nvar handleTickValueDefaults = __nested_webpack_require_2029799__(26218);\nvar handleLineGridDefaults = __nested_webpack_require_2029799__(92128);\nvar layoutAttributes = __nested_webpack_require_2029799__(81367);\nvar axesNames = ['aaxis', 'baxis', 'caxis'];\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {\n  handleSubplotDefaults(layoutIn, layoutOut, fullData, {\n    type: 'ternary',\n    attributes: layoutAttributes,\n    handleDefaults: handleTernaryDefaults,\n    font: layoutOut.font,\n    paper_bgcolor: layoutOut.paper_bgcolor\n  });\n};\nfunction handleTernaryDefaults(ternaryLayoutIn, ternaryLayoutOut, coerce, options) {\n  var bgColor = coerce('bgcolor');\n  var sum = coerce('sum');\n  options.bgColor = Color.combine(bgColor, options.paper_bgcolor);\n  var axName, containerIn, containerOut;\n\n  // TODO: allow most (if not all) axis attributes to be set\n  // in the outer container and used as defaults in the individual axes?\n\n  for (var j = 0; j < axesNames.length; j++) {\n    axName = axesNames[j];\n    containerIn = ternaryLayoutIn[axName] || {};\n    containerOut = Template.newContainer(ternaryLayoutOut, axName);\n    containerOut._name = axName;\n    handleAxisDefaults(containerIn, containerOut, options, ternaryLayoutOut);\n  }\n\n  // if the min values contradict each other, set them all to default (0)\n  // and delete *all* the inputs so the user doesn't get confused later by\n  // changing one and having them all change.\n  var aaxis = ternaryLayoutOut.aaxis;\n  var baxis = ternaryLayoutOut.baxis;\n  var caxis = ternaryLayoutOut.caxis;\n  if (aaxis.min + baxis.min + caxis.min >= sum) {\n    aaxis.min = 0;\n    baxis.min = 0;\n    caxis.min = 0;\n    if (ternaryLayoutIn.aaxis) delete ternaryLayoutIn.aaxis.min;\n    if (ternaryLayoutIn.baxis) delete ternaryLayoutIn.baxis.min;\n    if (ternaryLayoutIn.caxis) delete ternaryLayoutIn.caxis.min;\n  }\n}\nfunction handleAxisDefaults(containerIn, containerOut, options, ternaryLayoutOut) {\n  var axAttrs = layoutAttributes[containerOut._name];\n  function coerce(attr, dflt) {\n    return Lib.coerce(containerIn, containerOut, axAttrs, attr, dflt);\n  }\n  coerce('uirevision', ternaryLayoutOut.uirevision);\n  containerOut.type = 'linear'; // no other types allowed for ternary\n\n  var dfltColor = coerce('color');\n  // if axis.color was provided, use it for fonts too; otherwise,\n  // inherit from global font color in case that was provided.\n  var dfltFontColor = dfltColor !== axAttrs.color.dflt ? dfltColor : options.font.color;\n  var axName = containerOut._name;\n  var letterUpper = axName.charAt(0).toUpperCase();\n  var dfltTitle = 'Component ' + letterUpper;\n  var title = coerce('title.text', dfltTitle);\n  containerOut._hovertitle = title === dfltTitle ? title : letterUpper;\n  Lib.coerceFont(coerce, 'title.font', {\n    family: options.font.family,\n    size: Lib.bigFont(options.font.size),\n    color: dfltFontColor\n  });\n\n  // range is just set by 'min' - max is determined by the other axes mins\n  coerce('min');\n  handleTickValueDefaults(containerIn, containerOut, coerce, 'linear');\n  handlePrefixSuffixDefaults(containerIn, containerOut, coerce, 'linear');\n  handleTickLabelDefaults(containerIn, containerOut, coerce, 'linear');\n  handleTickMarkDefaults(containerIn, containerOut, coerce, {\n    outerTicks: true\n  });\n  var showTickLabels = coerce('showticklabels');\n  if (showTickLabels) {\n    Lib.coerceFont(coerce, 'tickfont', {\n      family: options.font.family,\n      size: options.font.size,\n      color: dfltFontColor\n    });\n    coerce('tickangle');\n    coerce('tickformat');\n  }\n  handleLineGridDefaults(containerIn, containerOut, coerce, {\n    dfltColor: dfltColor,\n    bgColor: options.bgColor,\n    // default grid color is darker here (60%, vs cartesian default ~91%)\n    // because the grid is not square so the eye needs heavier cues to follow\n    blend: 60,\n    showLine: true,\n    showGrid: true,\n    noZeroLine: true,\n    attributes: axAttrs\n  });\n  coerce('hoverformat');\n  coerce('layer');\n}\n\n/***/ }),\n\n/***/ 64380:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2034220__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2034220__(39898);\nvar tinycolor = __nested_webpack_require_2034220__(84267);\nvar Registry = __nested_webpack_require_2034220__(73972);\nvar Lib = __nested_webpack_require_2034220__(71828);\nvar strTranslate = Lib.strTranslate;\nvar _ = Lib._;\nvar Color = __nested_webpack_require_2034220__(7901);\nvar Drawing = __nested_webpack_require_2034220__(91424);\nvar setConvert = __nested_webpack_require_2034220__(21994);\nvar extendFlat = (__nested_webpack_require_2034220__(1426).extendFlat);\nvar Plots = __nested_webpack_require_2034220__(74875);\nvar Axes = __nested_webpack_require_2034220__(89298);\nvar dragElement = __nested_webpack_require_2034220__(28569);\nvar Fx = __nested_webpack_require_2034220__(30211);\nvar dragHelpers = __nested_webpack_require_2034220__(64505);\nvar freeMode = dragHelpers.freeMode;\nvar rectMode = dragHelpers.rectMode;\nvar Titles = __nested_webpack_require_2034220__(92998);\nvar prepSelect = (__nested_webpack_require_2034220__(47322).prepSelect);\nvar selectOnClick = (__nested_webpack_require_2034220__(47322).selectOnClick);\nvar clearOutline = (__nested_webpack_require_2034220__(47322).clearOutline);\nvar clearSelectionsCache = (__nested_webpack_require_2034220__(47322).clearSelectionsCache);\nvar constants = __nested_webpack_require_2034220__(85555);\nfunction Ternary(options, fullLayout) {\n  this.id = options.id;\n  this.graphDiv = options.graphDiv;\n  this.init(fullLayout);\n  this.makeFramework(fullLayout);\n\n  // unfortunately, we have to keep track of some axis tick settings\n  // as ternary subplots do not implement the 'ticks' editType\n  this.aTickLayout = null;\n  this.bTickLayout = null;\n  this.cTickLayout = null;\n}\nmodule.exports = Ternary;\nvar proto = Ternary.prototype;\nproto.init = function (fullLayout) {\n  this.container = fullLayout._ternarylayer;\n  this.defs = fullLayout._defs;\n  this.layoutId = fullLayout._uid;\n  this.traceHash = {};\n  this.layers = {};\n};\nproto.plot = function (ternaryCalcData, fullLayout) {\n  var _this = this;\n  var ternaryLayout = fullLayout[_this.id];\n  var graphSize = fullLayout._size;\n  _this._hasClipOnAxisFalse = false;\n  for (var i = 0; i < ternaryCalcData.length; i++) {\n    var trace = ternaryCalcData[i][0].trace;\n    if (trace.cliponaxis === false) {\n      _this._hasClipOnAxisFalse = true;\n      break;\n    }\n  }\n  _this.updateLayers(ternaryLayout);\n  _this.adjustLayout(ternaryLayout, graphSize);\n  Plots.generalUpdatePerTraceModule(_this.graphDiv, _this, ternaryCalcData, ternaryLayout);\n  _this.layers.plotbg.select('path').call(Color.fill, ternaryLayout.bgcolor);\n};\nproto.makeFramework = function (fullLayout) {\n  var _this = this;\n  var gd = _this.graphDiv;\n  var ternaryLayout = fullLayout[_this.id];\n  var clipId = _this.clipId = 'clip' + _this.layoutId + _this.id;\n  var clipIdRelative = _this.clipIdRelative = 'clip-relative' + _this.layoutId + _this.id;\n\n  // clippath for this ternary subplot\n  _this.clipDef = Lib.ensureSingleById(fullLayout._clips, 'clipPath', clipId, function (s) {\n    s.append('path').attr('d', 'M0,0Z');\n  });\n\n  // 'relative' clippath (i.e. no translation) for this ternary subplot\n  _this.clipDefRelative = Lib.ensureSingleById(fullLayout._clips, 'clipPath', clipIdRelative, function (s) {\n    s.append('path').attr('d', 'M0,0Z');\n  });\n\n  // container for everything in this ternary subplot\n  _this.plotContainer = Lib.ensureSingle(_this.container, 'g', _this.id);\n  _this.updateLayers(ternaryLayout);\n  Drawing.setClipUrl(_this.layers.backplot, clipId, gd);\n  Drawing.setClipUrl(_this.layers.grids, clipId, gd);\n};\nproto.updateLayers = function (ternaryLayout) {\n  var _this = this;\n  var layers = _this.layers;\n\n  // inside that container, we have one container for the data, and\n  // one each for the three axes around it.\n\n  var plotLayers = ['draglayer', 'plotbg', 'backplot', 'grids'];\n  if (ternaryLayout.aaxis.layer === 'below traces') {\n    plotLayers.push('aaxis', 'aline');\n  }\n  if (ternaryLayout.baxis.layer === 'below traces') {\n    plotLayers.push('baxis', 'bline');\n  }\n  if (ternaryLayout.caxis.layer === 'below traces') {\n    plotLayers.push('caxis', 'cline');\n  }\n  plotLayers.push('frontplot');\n  if (ternaryLayout.aaxis.layer === 'above traces') {\n    plotLayers.push('aaxis', 'aline');\n  }\n  if (ternaryLayout.baxis.layer === 'above traces') {\n    plotLayers.push('baxis', 'bline');\n  }\n  if (ternaryLayout.caxis.layer === 'above traces') {\n    plotLayers.push('caxis', 'cline');\n  }\n  var toplevel = _this.plotContainer.selectAll('g.toplevel').data(plotLayers, String);\n  var grids = ['agrid', 'bgrid', 'cgrid'];\n  toplevel.enter().append('g').attr('class', function (d) {\n    return 'toplevel ' + d;\n  }).each(function (d) {\n    var s = d3.select(this);\n    layers[d] = s;\n\n    // containers for different trace types.\n    // NOTE - this is different from cartesian, where all traces\n    // are in front of grids. Here I'm putting maps behind the grids\n    // so the grids will always be visible if they're requested.\n    // Perhaps we want that for cartesian too?\n    if (d === 'frontplot') {\n      s.append('g').classed('scatterlayer', true);\n    } else if (d === 'backplot') {\n      s.append('g').classed('maplayer', true);\n    } else if (d === 'plotbg') {\n      s.append('path').attr('d', 'M0,0Z');\n    } else if (d === 'aline' || d === 'bline' || d === 'cline') {\n      s.append('path');\n    } else if (d === 'grids') {\n      grids.forEach(function (d) {\n        layers[d] = s.append('g').classed('grid ' + d, true);\n      });\n    }\n  });\n  toplevel.order();\n};\nvar whRatio = Math.sqrt(4 / 3);\nproto.adjustLayout = function (ternaryLayout, graphSize) {\n  var _this = this;\n  var domain = ternaryLayout.domain;\n  var xDomainCenter = (domain.x[0] + domain.x[1]) / 2;\n  var yDomainCenter = (domain.y[0] + domain.y[1]) / 2;\n  var xDomain = domain.x[1] - domain.x[0];\n  var yDomain = domain.y[1] - domain.y[0];\n  var wmax = xDomain * graphSize.w;\n  var hmax = yDomain * graphSize.h;\n  var sum = ternaryLayout.sum;\n  var amin = ternaryLayout.aaxis.min;\n  var bmin = ternaryLayout.baxis.min;\n  var cmin = ternaryLayout.caxis.min;\n  var x0, y0, w, h, xDomainFinal, yDomainFinal;\n  if (wmax > whRatio * hmax) {\n    h = hmax;\n    w = h * whRatio;\n  } else {\n    w = wmax;\n    h = w / whRatio;\n  }\n  xDomainFinal = xDomain * w / wmax;\n  yDomainFinal = yDomain * h / hmax;\n  x0 = graphSize.l + graphSize.w * xDomainCenter - w / 2;\n  y0 = graphSize.t + graphSize.h * (1 - yDomainCenter) - h / 2;\n  _this.x0 = x0;\n  _this.y0 = y0;\n  _this.w = w;\n  _this.h = h;\n  _this.sum = sum;\n\n  // set up the x and y axis objects we'll use to lay out the points\n  _this.xaxis = {\n    type: 'linear',\n    range: [amin + 2 * cmin - sum, sum - amin - 2 * bmin],\n    domain: [xDomainCenter - xDomainFinal / 2, xDomainCenter + xDomainFinal / 2],\n    _id: 'x'\n  };\n  setConvert(_this.xaxis, _this.graphDiv._fullLayout);\n  _this.xaxis.setScale();\n  _this.xaxis.isPtWithinRange = function (d) {\n    return d.a >= _this.aaxis.range[0] && d.a <= _this.aaxis.range[1] && d.b >= _this.baxis.range[1] && d.b <= _this.baxis.range[0] && d.c >= _this.caxis.range[1] && d.c <= _this.caxis.range[0];\n  };\n  _this.yaxis = {\n    type: 'linear',\n    range: [amin, sum - bmin - cmin],\n    domain: [yDomainCenter - yDomainFinal / 2, yDomainCenter + yDomainFinal / 2],\n    _id: 'y'\n  };\n  setConvert(_this.yaxis, _this.graphDiv._fullLayout);\n  _this.yaxis.setScale();\n  _this.yaxis.isPtWithinRange = function () {\n    return true;\n  };\n\n  // set up the modified axes for tick drawing\n  var yDomain0 = _this.yaxis.domain[0];\n\n  // aaxis goes up the left side. Set it up as a y axis, but with\n  // fictitious angles and domain, but then rotate and translate\n  // it into place at the end\n  var aaxis = _this.aaxis = extendFlat({}, ternaryLayout.aaxis, {\n    range: [amin, sum - bmin - cmin],\n    side: 'left',\n    // tickangle = 'auto' means 0 anyway for a y axis, need to coerce to 0 here\n    // so we can shift by 30.\n    tickangle: (+ternaryLayout.aaxis.tickangle || 0) - 30,\n    domain: [yDomain0, yDomain0 + yDomainFinal * whRatio],\n    anchor: 'free',\n    position: 0,\n    _id: 'y',\n    _length: w\n  });\n  setConvert(aaxis, _this.graphDiv._fullLayout);\n  aaxis.setScale();\n\n  // baxis goes across the bottom (backward). We can set it up as an x axis\n  // without any enclosing transformation.\n  var baxis = _this.baxis = extendFlat({}, ternaryLayout.baxis, {\n    range: [sum - amin - cmin, bmin],\n    side: 'bottom',\n    domain: _this.xaxis.domain,\n    anchor: 'free',\n    position: 0,\n    _id: 'x',\n    _length: w\n  });\n  setConvert(baxis, _this.graphDiv._fullLayout);\n  baxis.setScale();\n\n  // caxis goes down the right side. Set it up as a y axis, with\n  // post-transformation similar to aaxis\n  var caxis = _this.caxis = extendFlat({}, ternaryLayout.caxis, {\n    range: [sum - amin - bmin, cmin],\n    side: 'right',\n    tickangle: (+ternaryLayout.caxis.tickangle || 0) + 30,\n    domain: [yDomain0, yDomain0 + yDomainFinal * whRatio],\n    anchor: 'free',\n    position: 0,\n    _id: 'y',\n    _length: w\n  });\n  setConvert(caxis, _this.graphDiv._fullLayout);\n  caxis.setScale();\n  var triangleClip = 'M' + x0 + ',' + (y0 + h) + 'h' + w + 'l-' + w / 2 + ',-' + h + 'Z';\n  _this.clipDef.select('path').attr('d', triangleClip);\n  _this.layers.plotbg.select('path').attr('d', triangleClip);\n  var triangleClipRelative = 'M0,' + h + 'h' + w + 'l-' + w / 2 + ',-' + h + 'Z';\n  _this.clipDefRelative.select('path').attr('d', triangleClipRelative);\n  var plotTransform = strTranslate(x0, y0);\n  _this.plotContainer.selectAll('.scatterlayer,.maplayer').attr('transform', plotTransform);\n  _this.clipDefRelative.select('path').attr('transform', null);\n\n  // TODO: shift axes to accommodate linewidth*sin(30) tick mark angle\n\n  // TODO: there's probably an easier way to handle these translations/offsets now...\n  var bTransform = strTranslate(x0 - baxis._offset, y0 + h);\n  _this.layers.baxis.attr('transform', bTransform);\n  _this.layers.bgrid.attr('transform', bTransform);\n  var aTransform = strTranslate(x0 + w / 2, y0) + 'rotate(30)' + strTranslate(0, -aaxis._offset);\n  _this.layers.aaxis.attr('transform', aTransform);\n  _this.layers.agrid.attr('transform', aTransform);\n  var cTransform = strTranslate(x0 + w / 2, y0) + 'rotate(-30)' + strTranslate(0, -caxis._offset);\n  _this.layers.caxis.attr('transform', cTransform);\n  _this.layers.cgrid.attr('transform', cTransform);\n  _this.drawAxes(true);\n  _this.layers.aline.select('path').attr('d', aaxis.showline ? 'M' + x0 + ',' + (y0 + h) + 'l' + w / 2 + ',-' + h : 'M0,0').call(Color.stroke, aaxis.linecolor || '#000').style('stroke-width', (aaxis.linewidth || 0) + 'px');\n  _this.layers.bline.select('path').attr('d', baxis.showline ? 'M' + x0 + ',' + (y0 + h) + 'h' + w : 'M0,0').call(Color.stroke, baxis.linecolor || '#000').style('stroke-width', (baxis.linewidth || 0) + 'px');\n  _this.layers.cline.select('path').attr('d', caxis.showline ? 'M' + (x0 + w / 2) + ',' + y0 + 'l' + w / 2 + ',' + h : 'M0,0').call(Color.stroke, caxis.linecolor || '#000').style('stroke-width', (caxis.linewidth || 0) + 'px');\n  if (!_this.graphDiv._context.staticPlot) {\n    _this.initInteractions();\n  }\n  Drawing.setClipUrl(_this.layers.frontplot, _this._hasClipOnAxisFalse ? null : _this.clipId, _this.graphDiv);\n};\nproto.drawAxes = function (doTitles) {\n  var _this = this;\n  var gd = _this.graphDiv;\n  var titlesuffix = _this.id.substr(7) + 'title';\n  var layers = _this.layers;\n  var aaxis = _this.aaxis;\n  var baxis = _this.baxis;\n  var caxis = _this.caxis;\n  _this.drawAx(aaxis);\n  _this.drawAx(baxis);\n  _this.drawAx(caxis);\n  if (doTitles) {\n    var apad = Math.max(aaxis.showticklabels ? aaxis.tickfont.size / 2 : 0, (caxis.showticklabels ? caxis.tickfont.size * 0.75 : 0) + (caxis.ticks === 'outside' ? caxis.ticklen * 0.87 : 0));\n    var bpad = (baxis.showticklabels ? baxis.tickfont.size : 0) + (baxis.ticks === 'outside' ? baxis.ticklen : 0) + 3;\n    layers['a-title'] = Titles.draw(gd, 'a' + titlesuffix, {\n      propContainer: aaxis,\n      propName: _this.id + '.aaxis.title',\n      placeholder: _(gd, 'Click to enter Component A title'),\n      attributes: {\n        x: _this.x0 + _this.w / 2,\n        y: _this.y0 - aaxis.title.font.size / 3 - apad,\n        'text-anchor': 'middle'\n      }\n    });\n    layers['b-title'] = Titles.draw(gd, 'b' + titlesuffix, {\n      propContainer: baxis,\n      propName: _this.id + '.baxis.title',\n      placeholder: _(gd, 'Click to enter Component B title'),\n      attributes: {\n        x: _this.x0 - bpad,\n        y: _this.y0 + _this.h + baxis.title.font.size * 0.83 + bpad,\n        'text-anchor': 'middle'\n      }\n    });\n    layers['c-title'] = Titles.draw(gd, 'c' + titlesuffix, {\n      propContainer: caxis,\n      propName: _this.id + '.caxis.title',\n      placeholder: _(gd, 'Click to enter Component C title'),\n      attributes: {\n        x: _this.x0 + _this.w + bpad,\n        y: _this.y0 + _this.h + caxis.title.font.size * 0.83 + bpad,\n        'text-anchor': 'middle'\n      }\n    });\n  }\n};\nproto.drawAx = function (ax) {\n  var _this = this;\n  var gd = _this.graphDiv;\n  var axName = ax._name;\n  var axLetter = axName.charAt(0);\n  var axId = ax._id;\n  var axLayer = _this.layers[axName];\n  var counterAngle = 30;\n  var stashKey = axLetter + 'tickLayout';\n  var newTickLayout = strTickLayout(ax);\n  if (_this[stashKey] !== newTickLayout) {\n    axLayer.selectAll('.' + axId + 'tick').remove();\n    _this[stashKey] = newTickLayout;\n  }\n  ax.setScale();\n  var vals = Axes.calcTicks(ax);\n  var valsClipped = Axes.clipEnds(ax, vals);\n  var transFn = Axes.makeTransTickFn(ax);\n  var tickSign = Axes.getTickSigns(ax)[2];\n  var caRad = Lib.deg2rad(counterAngle);\n  var pad = tickSign * (ax.linewidth || 1) / 2;\n  var len = tickSign * ax.ticklen;\n  var w = _this.w;\n  var h = _this.h;\n  var tickPath = axLetter === 'b' ? 'M0,' + pad + 'l' + Math.sin(caRad) * len + ',' + Math.cos(caRad) * len : 'M' + pad + ',0l' + Math.cos(caRad) * len + ',' + -Math.sin(caRad) * len;\n  var gridPath = {\n    a: 'M0,0l' + h + ',-' + w / 2,\n    b: 'M0,0l-' + w / 2 + ',-' + h,\n    c: 'M0,0l-' + h + ',' + w / 2\n  }[axLetter];\n  Axes.drawTicks(gd, ax, {\n    vals: ax.ticks === 'inside' ? valsClipped : vals,\n    layer: axLayer,\n    path: tickPath,\n    transFn: transFn,\n    crisp: false\n  });\n  Axes.drawGrid(gd, ax, {\n    vals: valsClipped,\n    layer: _this.layers[axLetter + 'grid'],\n    path: gridPath,\n    transFn: transFn,\n    crisp: false\n  });\n  Axes.drawLabels(gd, ax, {\n    vals: vals,\n    layer: axLayer,\n    transFn: transFn,\n    labelFns: Axes.makeLabelFns(ax, 0, counterAngle)\n  });\n};\nfunction strTickLayout(axLayout) {\n  return axLayout.ticks + String(axLayout.ticklen) + String(axLayout.showticklabels);\n}\n\n// hard coded paths for zoom corners\n// uses the same sizing as cartesian, length is MINZOOM/2, width is 3px\nvar CLEN = constants.MINZOOM / 2 + 0.87;\nvar BLPATH = 'm-0.87,.5h' + CLEN + 'v3h-' + (CLEN + 5.2) + 'l' + (CLEN / 2 + 2.6) + ',-' + (CLEN * 0.87 + 4.5) + 'l2.6,1.5l-' + CLEN / 2 + ',' + CLEN * 0.87 + 'Z';\nvar BRPATH = 'm0.87,.5h-' + CLEN + 'v3h' + (CLEN + 5.2) + 'l-' + (CLEN / 2 + 2.6) + ',-' + (CLEN * 0.87 + 4.5) + 'l-2.6,1.5l' + CLEN / 2 + ',' + CLEN * 0.87 + 'Z';\nvar TOPPATH = 'm0,1l' + CLEN / 2 + ',' + CLEN * 0.87 + 'l2.6,-1.5l-' + (CLEN / 2 + 2.6) + ',-' + (CLEN * 0.87 + 4.5) + 'l-' + (CLEN / 2 + 2.6) + ',' + (CLEN * 0.87 + 4.5) + 'l2.6,1.5l' + CLEN / 2 + ',-' + CLEN * 0.87 + 'Z';\nvar STARTMARKER = 'm0.5,0.5h5v-2h-5v-5h-2v5h-5v2h5v5h2Z';\n\n// I guess this could be shared with cartesian... but for now it's separate.\nvar SHOWZOOMOUTTIP = true;\nproto.clearOutline = function () {\n  clearSelectionsCache(this.dragOptions);\n  clearOutline(this.dragOptions.gd);\n};\nproto.initInteractions = function () {\n  var _this = this;\n  var dragger = _this.layers.plotbg.select('path').node();\n  var gd = _this.graphDiv;\n  var zoomLayer = gd._fullLayout._zoomlayer;\n  var scaleX;\n  var scaleY;\n\n  // use plotbg for the main interactions\n  this.dragOptions = {\n    element: dragger,\n    gd: gd,\n    plotinfo: {\n      id: _this.id,\n      domain: gd._fullLayout[_this.id].domain,\n      xaxis: _this.xaxis,\n      yaxis: _this.yaxis\n    },\n    subplot: _this.id,\n    prepFn: function (e, startX, startY) {\n      // these aren't available yet when initInteractions\n      // is called\n      _this.dragOptions.xaxes = [_this.xaxis];\n      _this.dragOptions.yaxes = [_this.yaxis];\n      scaleX = gd._fullLayout._invScaleX;\n      scaleY = gd._fullLayout._invScaleY;\n      var dragModeNow = _this.dragOptions.dragmode = gd._fullLayout.dragmode;\n      if (freeMode(dragModeNow)) _this.dragOptions.minDrag = 1;else _this.dragOptions.minDrag = undefined;\n      if (dragModeNow === 'zoom') {\n        _this.dragOptions.moveFn = zoomMove;\n        _this.dragOptions.clickFn = clickZoomPan;\n        _this.dragOptions.doneFn = zoomDone;\n        zoomPrep(e, startX, startY);\n      } else if (dragModeNow === 'pan') {\n        _this.dragOptions.moveFn = plotDrag;\n        _this.dragOptions.clickFn = clickZoomPan;\n        _this.dragOptions.doneFn = dragDone;\n        panPrep();\n        _this.clearOutline(gd);\n      } else if (rectMode(dragModeNow) || freeMode(dragModeNow)) {\n        prepSelect(e, startX, startY, _this.dragOptions, dragModeNow);\n      }\n    }\n  };\n  var x0, y0, mins0, span0, mins, lum, path0, dimmed, zb, corners;\n  function makeUpdate(_mins) {\n    var attrs = {};\n    attrs[_this.id + '.aaxis.min'] = _mins.a;\n    attrs[_this.id + '.baxis.min'] = _mins.b;\n    attrs[_this.id + '.caxis.min'] = _mins.c;\n    return attrs;\n  }\n  function clickZoomPan(numClicks, evt) {\n    var clickMode = gd._fullLayout.clickmode;\n    removeZoombox(gd);\n    if (numClicks === 2) {\n      gd.emit('plotly_doubleclick', null);\n      Registry.call('_guiRelayout', gd, makeUpdate({\n        a: 0,\n        b: 0,\n        c: 0\n      }));\n    }\n    if (clickMode.indexOf('select') > -1 && numClicks === 1) {\n      selectOnClick(evt, gd, [_this.xaxis], [_this.yaxis], _this.id, _this.dragOptions);\n    }\n    if (clickMode.indexOf('event') > -1) {\n      Fx.click(gd, evt, _this.id);\n    }\n  }\n  function zoomPrep(e, startX, startY) {\n    var dragBBox = dragger.getBoundingClientRect();\n    x0 = startX - dragBBox.left;\n    y0 = startY - dragBBox.top;\n    gd._fullLayout._calcInverseTransform(gd);\n    var inverse = gd._fullLayout._invTransform;\n    var transformedCoords = Lib.apply3DTransform(inverse)(x0, y0);\n    x0 = transformedCoords[0];\n    y0 = transformedCoords[1];\n    mins0 = {\n      a: _this.aaxis.range[0],\n      b: _this.baxis.range[1],\n      c: _this.caxis.range[1]\n    };\n    mins = mins0;\n    span0 = _this.aaxis.range[1] - mins0.a;\n    lum = tinycolor(_this.graphDiv._fullLayout[_this.id].bgcolor).getLuminance();\n    path0 = 'M0,' + _this.h + 'L' + _this.w / 2 + ', 0L' + _this.w + ',' + _this.h + 'Z';\n    dimmed = false;\n    zb = zoomLayer.append('path').attr('class', 'zoombox').attr('transform', strTranslate(_this.x0, _this.y0)).style({\n      'fill': lum > 0.2 ? 'rgba(0,0,0,0)' : 'rgba(255,255,255,0)',\n      'stroke-width': 0\n    }).attr('d', path0);\n    corners = zoomLayer.append('path').attr('class', 'zoombox-corners').attr('transform', strTranslate(_this.x0, _this.y0)).style({\n      fill: Color.background,\n      stroke: Color.defaultLine,\n      'stroke-width': 1,\n      opacity: 0\n    }).attr('d', 'M0,0Z');\n    _this.clearOutline(gd);\n  }\n  function getAFrac(x, y) {\n    return 1 - y / _this.h;\n  }\n  function getBFrac(x, y) {\n    return 1 - (x + (_this.h - y) / Math.sqrt(3)) / _this.w;\n  }\n  function getCFrac(x, y) {\n    return (x - (_this.h - y) / Math.sqrt(3)) / _this.w;\n  }\n  function zoomMove(dx0, dy0) {\n    var x1 = x0 + dx0 * scaleX;\n    var y1 = y0 + dy0 * scaleY;\n    var afrac = Math.max(0, Math.min(1, getAFrac(x0, y0), getAFrac(x1, y1)));\n    var bfrac = Math.max(0, Math.min(1, getBFrac(x0, y0), getBFrac(x1, y1)));\n    var cfrac = Math.max(0, Math.min(1, getCFrac(x0, y0), getCFrac(x1, y1)));\n    var xLeft = (afrac / 2 + cfrac) * _this.w;\n    var xRight = (1 - afrac / 2 - bfrac) * _this.w;\n    var xCenter = (xLeft + xRight) / 2;\n    var xSpan = xRight - xLeft;\n    var yBottom = (1 - afrac) * _this.h;\n    var yTop = yBottom - xSpan / whRatio;\n    if (xSpan < constants.MINZOOM) {\n      mins = mins0;\n      zb.attr('d', path0);\n      corners.attr('d', 'M0,0Z');\n    } else {\n      mins = {\n        a: mins0.a + afrac * span0,\n        b: mins0.b + bfrac * span0,\n        c: mins0.c + cfrac * span0\n      };\n      zb.attr('d', path0 + 'M' + xLeft + ',' + yBottom + 'H' + xRight + 'L' + xCenter + ',' + yTop + 'L' + xLeft + ',' + yBottom + 'Z');\n      corners.attr('d', 'M' + x0 + ',' + y0 + STARTMARKER + 'M' + xLeft + ',' + yBottom + BLPATH + 'M' + xRight + ',' + yBottom + BRPATH + 'M' + xCenter + ',' + yTop + TOPPATH);\n    }\n    if (!dimmed) {\n      zb.transition().style('fill', lum > 0.2 ? 'rgba(0,0,0,0.4)' : 'rgba(255,255,255,0.3)').duration(200);\n      corners.transition().style('opacity', 1).duration(200);\n      dimmed = true;\n    }\n    gd.emit('plotly_relayouting', makeUpdate(mins));\n  }\n  function zoomDone() {\n    removeZoombox(gd);\n    if (mins === mins0) return;\n    Registry.call('_guiRelayout', gd, makeUpdate(mins));\n    if (SHOWZOOMOUTTIP && gd.data && gd._context.showTips) {\n      Lib.notifier(_(gd, 'Double-click to zoom back out'), 'long');\n      SHOWZOOMOUTTIP = false;\n    }\n  }\n  function panPrep() {\n    mins0 = {\n      a: _this.aaxis.range[0],\n      b: _this.baxis.range[1],\n      c: _this.caxis.range[1]\n    };\n    mins = mins0;\n  }\n  function plotDrag(dx, dy) {\n    var dxScaled = dx / _this.xaxis._m;\n    var dyScaled = dy / _this.yaxis._m;\n    mins = {\n      a: mins0.a - dyScaled,\n      b: mins0.b + (dxScaled + dyScaled) / 2,\n      c: mins0.c - (dxScaled - dyScaled) / 2\n    };\n    var minsorted = [mins.a, mins.b, mins.c].sort(Lib.sorterAsc);\n    var minindices = {\n      a: minsorted.indexOf(mins.a),\n      b: minsorted.indexOf(mins.b),\n      c: minsorted.indexOf(mins.c)\n    };\n    if (minsorted[0] < 0) {\n      if (minsorted[1] + minsorted[0] / 2 < 0) {\n        minsorted[2] += minsorted[0] + minsorted[1];\n        minsorted[0] = minsorted[1] = 0;\n      } else {\n        minsorted[2] += minsorted[0] / 2;\n        minsorted[1] += minsorted[0] / 2;\n        minsorted[0] = 0;\n      }\n      mins = {\n        a: minsorted[minindices.a],\n        b: minsorted[minindices.b],\n        c: minsorted[minindices.c]\n      };\n      dy = (mins0.a - mins.a) * _this.yaxis._m;\n      dx = (mins0.c - mins.c - mins0.b + mins.b) * _this.xaxis._m;\n    }\n\n    // move the data (translate, don't redraw)\n    var plotTransform = strTranslate(_this.x0 + dx, _this.y0 + dy);\n    _this.plotContainer.selectAll('.scatterlayer,.maplayer').attr('transform', plotTransform);\n    var plotTransform2 = strTranslate(-dx, -dy);\n    _this.clipDefRelative.select('path').attr('transform', plotTransform2);\n\n    // move the ticks\n    _this.aaxis.range = [mins.a, _this.sum - mins.b - mins.c];\n    _this.baxis.range = [_this.sum - mins.a - mins.c, mins.b];\n    _this.caxis.range = [_this.sum - mins.a - mins.b, mins.c];\n    _this.drawAxes(false);\n    if (_this._hasClipOnAxisFalse) {\n      _this.plotContainer.select('.scatterlayer').selectAll('.trace').call(Drawing.hideOutsideRangePoints, _this);\n    }\n    gd.emit('plotly_relayouting', makeUpdate(mins));\n  }\n  function dragDone() {\n    Registry.call('_guiRelayout', gd, makeUpdate(mins));\n  }\n\n  // finally, set up hover and click\n  // these event handlers must already be set before dragElement.init\n  // so it can stash them and override them.\n  dragger.onmousemove = function (evt) {\n    Fx.hover(gd, evt, _this.id);\n    gd._fullLayout._lasthover = dragger;\n    gd._fullLayout._hoversubplot = _this.id;\n  };\n  dragger.onmouseout = function (evt) {\n    if (gd._dragging) return;\n    dragElement.unhover(gd, evt);\n  };\n  dragElement.init(this.dragOptions);\n};\nfunction removeZoombox(gd) {\n  d3.select(gd).selectAll('.zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners').remove();\n}\n\n/***/ }),\n\n/***/ 73972:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_2058045__) {\n\n\"use strict\";\n\n\nvar Loggers = __nested_webpack_require_2058045__(47769);\nvar noop = __nested_webpack_require_2058045__(64213);\nvar pushUnique = __nested_webpack_require_2058045__(75138);\nvar isPlainObject = __nested_webpack_require_2058045__(41965);\nvar addStyleRule = (__nested_webpack_require_2058045__(24401).addStyleRule);\nvar ExtendModule = __nested_webpack_require_2058045__(1426);\nvar basePlotAttributes = __nested_webpack_require_2058045__(9012);\nvar baseLayoutAttributes = __nested_webpack_require_2058045__(10820);\nvar extendFlat = ExtendModule.extendFlat;\nvar extendDeepAll = ExtendModule.extendDeepAll;\nexports.modules = {};\nexports.allCategories = {};\nexports.allTypes = [];\nexports.subplotsRegistry = {};\nexports.transformsRegistry = {};\nexports.componentsRegistry = {};\nexports.layoutArrayContainers = [];\nexports.layoutArrayRegexes = [];\nexports.traceLayoutAttributes = {};\nexports.localeRegistry = {};\nexports.apiMethodRegistry = {};\nexports.collectableSubplotTypes = null;\n\n/**\n * Top-level register routine, exported as Plotly.register\n *\n * @param {object array or array of objects} _modules :\n *  module object or list of module object to register.\n *\n *  A valid `moduleType: 'trace'` module has fields:\n *  - name {string} : the trace type\n *  - categories {array} : categories associated with this trace type,\n *                         tested with Register.traceIs()\n *  - meta {object} : meta info (mostly for plot-schema)\n *\n *  A valid `moduleType: 'locale'` module has fields:\n *  - name {string} : the locale name. Should be a 2-digit language string ('en', 'de')\n *                    optionally with a country/region code ('en-GB', 'de-CH'). If a country\n *                    code is used but the base language locale has not yet been supplied,\n *                    we will use this locale for the base as well.\n *  - dictionary {object} : the dictionary mapping input strings to localized strings\n *                          generally the keys should be the literal input strings, but\n *                          if default translations are provided you can use any string as a key.\n *  - format {object} : a `d3.locale` format specifier for this locale\n *                      any omitted keys we'll fall back on en-US.\n *\n *  A valid `moduleType: 'transform'` module has fields:\n *  - name {string} : transform name\n *  - transform {function} : default-level transform function\n *  - calcTransform {function} : calc-level transform function\n *  - attributes {object} : transform attributes declarations\n *  - supplyDefaults {function} : attributes default-supply function\n *\n *  A valid `moduleType: 'component'` module has fields:\n *  - name {string} : the component name, used it with Register.getComponentMethod()\n *                    to employ component method.\n *\n *  A valid `moduleType: 'apiMethod'` module has fields:\n *  - name {string} : the api method name.\n *  - fn {function} : the api method called with Register.call();\n *\n */\nexports.register = function register(_modules) {\n  exports.collectableSubplotTypes = null;\n  if (!_modules) {\n    throw new Error('No argument passed to Plotly.register.');\n  } else if (_modules && !Array.isArray(_modules)) {\n    _modules = [_modules];\n  }\n  for (var i = 0; i < _modules.length; i++) {\n    var newModule = _modules[i];\n    if (!newModule) {\n      throw new Error('Invalid module was attempted to be registered!');\n    }\n    switch (newModule.moduleType) {\n      case 'trace':\n        registerTraceModule(newModule);\n        break;\n      case 'transform':\n        registerTransformModule(newModule);\n        break;\n      case 'component':\n        registerComponentModule(newModule);\n        break;\n      case 'locale':\n        registerLocale(newModule);\n        break;\n      case 'apiMethod':\n        var name = newModule.name;\n        exports.apiMethodRegistry[name] = newModule.fn;\n        break;\n      default:\n        throw new Error('Invalid module was attempted to be registered!');\n    }\n  }\n};\n\n/**\n * Get registered module using trace object or trace type\n *\n * @param {object||string} trace\n *  trace object with prop 'type' or trace type as a string\n * @return {object}\n *  module object corresponding to trace type\n */\nexports.getModule = function (trace) {\n  var _module = exports.modules[getTraceType(trace)];\n  if (!_module) return false;\n  return _module._module;\n};\n\n/**\n * Determine if this trace type is in a given category\n *\n * @param {object||string} traceType\n *  a trace (object) or trace type (string)\n * @param {string} category\n *  category in question\n * @return {boolean}\n */\nexports.traceIs = function (traceType, category) {\n  traceType = getTraceType(traceType);\n\n  // old Chart Studio Cloud workspace hack, nothing to see here\n  if (traceType === 'various') return false;\n  var _module = exports.modules[traceType];\n  if (!_module) {\n    if (traceType) {\n      Loggers.log('Unrecognized trace type ' + traceType + '.');\n    }\n    _module = exports.modules[basePlotAttributes.type.dflt];\n  }\n  return !!_module.categories[category];\n};\n\n/**\n * Determine if this trace has a transform of the given type and return\n * array of matching indices.\n *\n * @param {object} data\n *  a trace object (member of data or fullData)\n * @param {string} type\n *  type of trace to test\n * @return {array}\n *  array of matching indices. If none found, returns []\n */\nexports.getTransformIndices = function (data, type) {\n  var indices = [];\n  var transforms = data.transforms || [];\n  for (var i = 0; i < transforms.length; i++) {\n    if (transforms[i].type === type) {\n      indices.push(i);\n    }\n  }\n  return indices;\n};\n\n/**\n * Determine if this trace has a transform of the given type\n *\n * @param {object} data\n *  a trace object (member of data or fullData)\n * @param {string} type\n *  type of trace to test\n * @return {boolean}\n */\nexports.hasTransform = function (data, type) {\n  var transforms = data.transforms || [];\n  for (var i = 0; i < transforms.length; i++) {\n    if (transforms[i].type === type) {\n      return true;\n    }\n  }\n  return false;\n};\n\n/**\n * Retrieve component module method. Falls back on noop if either the\n * module or the method is missing, so the result can always be safely called\n *\n * @param {string} name\n *  name of component (as declared in component module)\n * @param {string} method\n *  name of component module method\n * @return {function}\n */\nexports.getComponentMethod = function (name, method) {\n  var _module = exports.componentsRegistry[name];\n  if (!_module) return noop;\n  return _module[method] || noop;\n};\n\n/**\n * Call registered api method.\n *\n * @param {string} name : api method name\n * @param {...array} args : arguments passed to api method\n * @return {any} : returns api method output\n */\nexports.call = function () {\n  var name = arguments[0];\n  var args = [].slice.call(arguments, 1);\n  return exports.apiMethodRegistry[name].apply(null, args);\n};\nfunction registerTraceModule(_module) {\n  var thisType = _module.name;\n  var categoriesIn = _module.categories;\n  var meta = _module.meta;\n  if (exports.modules[thisType]) {\n    Loggers.log('Type ' + thisType + ' already registered');\n    return;\n  }\n  if (!exports.subplotsRegistry[_module.basePlotModule.name]) {\n    registerSubplot(_module.basePlotModule);\n  }\n  var categoryObj = {};\n  for (var i = 0; i < categoriesIn.length; i++) {\n    categoryObj[categoriesIn[i]] = true;\n    exports.allCategories[categoriesIn[i]] = true;\n  }\n  exports.modules[thisType] = {\n    _module: _module,\n    categories: categoryObj\n  };\n  if (meta && Object.keys(meta).length) {\n    exports.modules[thisType].meta = meta;\n  }\n  exports.allTypes.push(thisType);\n  for (var componentName in exports.componentsRegistry) {\n    mergeComponentAttrsToTrace(componentName, thisType);\n  }\n\n  /*\n   * Collect all trace layout attributes in one place for easier lookup later\n   * but don't merge them into the base schema as it would confuse the docs\n   * (at least after https://github.com/plotly/documentation/issues/202 gets done!)\n   */\n  if (_module.layoutAttributes) {\n    extendFlat(exports.traceLayoutAttributes, _module.layoutAttributes);\n  }\n  var basePlotModule = _module.basePlotModule;\n  var bpmName = basePlotModule.name;\n\n  // add mapbox-gl CSS here to avoid console warning on instantiation\n  if (bpmName === 'mapbox') {\n    var styleRules = basePlotModule.constants.styleRules;\n    for (var k in styleRules) {\n      addStyleRule('.js-plotly-plot .plotly .mapboxgl-' + k, styleRules[k]);\n    }\n  }\n\n  // if `plotly-geo-assets.js` is not included,\n  // add `PlotlyGeoAssets` global to stash references to all fetched\n  // topojson / geojson data\n  if ((bpmName === 'geo' || bpmName === 'mapbox') && window.PlotlyGeoAssets === undefined) {\n    window.PlotlyGeoAssets = {\n      topojson: {}\n    };\n  }\n}\nfunction registerSubplot(_module) {\n  var plotType = _module.name;\n  if (exports.subplotsRegistry[plotType]) {\n    Loggers.log('Plot type ' + plotType + ' already registered.');\n    return;\n  }\n\n  // relayout array handling will look for component module methods with this\n  // name and won't find them because this is a subplot module... but that\n  // should be fine, it will just fall back on redrawing the plot.\n  findArrayRegexps(_module);\n\n  // not sure what's best for the 'cartesian' type at this point\n  exports.subplotsRegistry[plotType] = _module;\n  for (var componentName in exports.componentsRegistry) {\n    mergeComponentAttrsToSubplot(componentName, _module.name);\n  }\n}\nfunction registerComponentModule(_module) {\n  if (typeof _module.name !== 'string') {\n    throw new Error('Component module *name* must be a string.');\n  }\n  var name = _module.name;\n  exports.componentsRegistry[name] = _module;\n  if (_module.layoutAttributes) {\n    if (_module.layoutAttributes._isLinkedToArray) {\n      pushUnique(exports.layoutArrayContainers, name);\n    }\n    findArrayRegexps(_module);\n  }\n  for (var traceType in exports.modules) {\n    mergeComponentAttrsToTrace(name, traceType);\n  }\n  for (var subplotName in exports.subplotsRegistry) {\n    mergeComponentAttrsToSubplot(name, subplotName);\n  }\n  for (var transformType in exports.transformsRegistry) {\n    mergeComponentAttrsToTransform(name, transformType);\n  }\n  if (_module.schema && _module.schema.layout) {\n    extendDeepAll(baseLayoutAttributes, _module.schema.layout);\n  }\n}\nfunction registerTransformModule(_module) {\n  if (typeof _module.name !== 'string') {\n    throw new Error('Transform module *name* must be a string.');\n  }\n  var prefix = 'Transform module ' + _module.name;\n  var hasTransform = typeof _module.transform === 'function';\n  var hasCalcTransform = typeof _module.calcTransform === 'function';\n  if (!hasTransform && !hasCalcTransform) {\n    throw new Error(prefix + ' is missing a *transform* or *calcTransform* method.');\n  }\n  if (hasTransform && hasCalcTransform) {\n    Loggers.log([prefix + ' has both a *transform* and *calcTransform* methods.', 'Please note that all *transform* methods are executed', 'before all *calcTransform* methods.'].join(' '));\n  }\n  if (!isPlainObject(_module.attributes)) {\n    Loggers.log(prefix + ' registered without an *attributes* object.');\n  }\n  if (typeof _module.supplyDefaults !== 'function') {\n    Loggers.log(prefix + ' registered without a *supplyDefaults* method.');\n  }\n  exports.transformsRegistry[_module.name] = _module;\n  for (var componentName in exports.componentsRegistry) {\n    mergeComponentAttrsToTransform(componentName, _module.name);\n  }\n}\nfunction registerLocale(_module) {\n  var locale = _module.name;\n  var baseLocale = locale.split('-')[0];\n  var newDict = _module.dictionary;\n  var newFormat = _module.format;\n  var hasDict = newDict && Object.keys(newDict).length;\n  var hasFormat = newFormat && Object.keys(newFormat).length;\n  var locales = exports.localeRegistry;\n  var localeObj = locales[locale];\n  if (!localeObj) locales[locale] = localeObj = {};\n\n  // Should we use this dict for the base locale?\n  // In case we're overwriting a previous dict for this locale, check\n  // whether the base matches the full locale dict now. If we're not\n  // overwriting, locales[locale] is undefined so this just checks if\n  // baseLocale already had a dict or not.\n  // Same logic for dateFormats\n  if (baseLocale !== locale) {\n    var baseLocaleObj = locales[baseLocale];\n    if (!baseLocaleObj) locales[baseLocale] = baseLocaleObj = {};\n    if (hasDict && baseLocaleObj.dictionary === localeObj.dictionary) {\n      baseLocaleObj.dictionary = newDict;\n    }\n    if (hasFormat && baseLocaleObj.format === localeObj.format) {\n      baseLocaleObj.format = newFormat;\n    }\n  }\n  if (hasDict) localeObj.dictionary = newDict;\n  if (hasFormat) localeObj.format = newFormat;\n}\nfunction findArrayRegexps(_module) {\n  if (_module.layoutAttributes) {\n    var arrayAttrRegexps = _module.layoutAttributes._arrayAttrRegexps;\n    if (arrayAttrRegexps) {\n      for (var i = 0; i < arrayAttrRegexps.length; i++) {\n        pushUnique(exports.layoutArrayRegexes, arrayAttrRegexps[i]);\n      }\n    }\n  }\n}\nfunction mergeComponentAttrsToTrace(componentName, traceType) {\n  var componentSchema = exports.componentsRegistry[componentName].schema;\n  if (!componentSchema || !componentSchema.traces) return;\n  var traceAttrs = componentSchema.traces[traceType];\n  if (traceAttrs) {\n    extendDeepAll(exports.modules[traceType]._module.attributes, traceAttrs);\n  }\n}\nfunction mergeComponentAttrsToTransform(componentName, transformType) {\n  var componentSchema = exports.componentsRegistry[componentName].schema;\n  if (!componentSchema || !componentSchema.transforms) return;\n  var transformAttrs = componentSchema.transforms[transformType];\n  if (transformAttrs) {\n    extendDeepAll(exports.transformsRegistry[transformType].attributes, transformAttrs);\n  }\n}\nfunction mergeComponentAttrsToSubplot(componentName, subplotName) {\n  var componentSchema = exports.componentsRegistry[componentName].schema;\n  if (!componentSchema || !componentSchema.subplots) return;\n  var subplotModule = exports.subplotsRegistry[subplotName];\n  var subplotAttrs = subplotModule.layoutAttributes;\n  var subplotAttr = subplotModule.attr === 'subplot' ? subplotModule.name : subplotModule.attr;\n  if (Array.isArray(subplotAttr)) subplotAttr = subplotAttr[0];\n  var componentLayoutAttrs = componentSchema.subplots[subplotAttr];\n  if (subplotAttrs && componentLayoutAttrs) {\n    extendDeepAll(subplotAttrs, componentLayoutAttrs);\n  }\n}\nfunction getTraceType(traceType) {\n  if (typeof traceType === 'object') traceType = traceType.type;\n  return traceType;\n}\n\n/***/ }),\n\n/***/ 61914:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2072590__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_2072590__(73972);\nvar Lib = __nested_webpack_require_2072590__(71828);\nvar extendFlat = Lib.extendFlat;\nvar extendDeep = Lib.extendDeep;\n\n// Put default plotTile layouts here\nfunction cloneLayoutOverride(tileClass) {\n  var override;\n  switch (tileClass) {\n    case 'themes__thumb':\n      override = {\n        autosize: true,\n        width: 150,\n        height: 150,\n        title: {\n          text: ''\n        },\n        showlegend: false,\n        margin: {\n          l: 5,\n          r: 5,\n          t: 5,\n          b: 5,\n          pad: 0\n        },\n        annotations: []\n      };\n      break;\n    case 'thumbnail':\n      override = {\n        title: {\n          text: ''\n        },\n        hidesources: true,\n        showlegend: false,\n        borderwidth: 0,\n        bordercolor: '',\n        margin: {\n          l: 1,\n          r: 1,\n          t: 1,\n          b: 1,\n          pad: 0\n        },\n        annotations: []\n      };\n      break;\n    default:\n      override = {};\n  }\n  return override;\n}\nfunction keyIsAxis(keyName) {\n  var types = ['xaxis', 'yaxis', 'zaxis'];\n  return types.indexOf(keyName.slice(0, 5)) > -1;\n}\nmodule.exports = function clonePlot(graphObj, options) {\n  var i;\n  var oldData = graphObj.data;\n  var oldLayout = graphObj.layout;\n  var newData = extendDeep([], oldData);\n  var newLayout = extendDeep({}, oldLayout, cloneLayoutOverride(options.tileClass));\n  var context = graphObj._context || {};\n  if (options.width) newLayout.width = options.width;\n  if (options.height) newLayout.height = options.height;\n  if (options.tileClass === 'thumbnail' || options.tileClass === 'themes__thumb') {\n    // kill annotations\n    newLayout.annotations = [];\n    var keys = Object.keys(newLayout);\n    for (i = 0; i < keys.length; i++) {\n      if (keyIsAxis(keys[i])) {\n        newLayout[keys[i]].title = {\n          text: ''\n        };\n      }\n    }\n\n    // kill colorbar and pie labels\n    for (i = 0; i < newData.length; i++) {\n      var trace = newData[i];\n      trace.showscale = false;\n      if (trace.marker) trace.marker.showscale = false;\n      if (Registry.traceIs(trace, 'pie-like')) trace.textposition = 'none';\n    }\n  }\n  if (Array.isArray(options.annotations)) {\n    for (i = 0; i < options.annotations.length; i++) {\n      newLayout.annotations.push(options.annotations[i]);\n    }\n  }\n\n  // TODO: does this scene modification really belong here?\n  // If we still need it, can it move into the gl3d module?\n  var sceneIds = Object.keys(newLayout).filter(function (key) {\n    return key.match(/^scene\\d*$/);\n  });\n  if (sceneIds.length) {\n    var axesImageOverride = {};\n    if (options.tileClass === 'thumbnail') {\n      axesImageOverride = {\n        title: {\n          text: ''\n        },\n        showaxeslabels: false,\n        showticklabels: false,\n        linetickenable: false\n      };\n    }\n    for (i = 0; i < sceneIds.length; i++) {\n      var scene = newLayout[sceneIds[i]];\n      if (!scene.xaxis) {\n        scene.xaxis = {};\n      }\n      if (!scene.yaxis) {\n        scene.yaxis = {};\n      }\n      if (!scene.zaxis) {\n        scene.zaxis = {};\n      }\n      extendFlat(scene.xaxis, axesImageOverride);\n      extendFlat(scene.yaxis, axesImageOverride);\n      extendFlat(scene.zaxis, axesImageOverride);\n\n      // TODO what does this do?\n      scene._scene = null;\n    }\n  }\n  var gd = document.createElement('div');\n  if (options.tileClass) gd.className = options.tileClass;\n  var plotTile = {\n    gd: gd,\n    td: gd,\n    // for external (image server) compatibility\n    layout: newLayout,\n    data: newData,\n    config: {\n      staticPlot: options.staticPlot === undefined ? true : options.staticPlot,\n      plotGlPixelRatio: options.plotGlPixelRatio === undefined ? 2 : options.plotGlPixelRatio,\n      displaylogo: options.displaylogo || false,\n      showLink: options.showLink || false,\n      showTips: options.showTips || false,\n      mapboxAccessToken: context.mapboxAccessToken\n    }\n  };\n  if (options.setBackground !== 'transparent') {\n    plotTile.config.setBackground = options.setBackground || 'opaque';\n  }\n\n  // attaching the default Layout the gd, so you can grab it later\n  plotTile.gd.defaultLayout = cloneLayoutOverride(options.tileClass);\n  return plotTile;\n};\n\n/***/ }),\n\n/***/ 7239:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2076936__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2076936__(71828);\nvar toImage = __nested_webpack_require_2076936__(403);\nvar fileSaver = __nested_webpack_require_2076936__(22435);\nvar helpers = __nested_webpack_require_2076936__(25095);\n\n/**\n * Plotly.downloadImage\n *\n * @param {object | string | HTML div} gd\n *   can either be a data/layout/config object\n *   or an existing graph <div>\n *   or an id to an existing graph <div>\n * @param {object} opts (see Plotly.toImage in ../plot_api/to_image)\n * @return {promise}\n */\nfunction downloadImage(gd, opts) {\n  var _gd;\n  if (!Lib.isPlainObject(gd)) _gd = Lib.getGraphDiv(gd);\n  opts = opts || {};\n  opts.format = opts.format || 'png';\n  opts.width = opts.width || null;\n  opts.height = opts.height || null;\n  opts.imageDataOnly = true;\n  return new Promise(function (resolve, reject) {\n    if (_gd && _gd._snapshotInProgress) {\n      reject(new Error('Snapshotting already in progress.'));\n    }\n\n    // see comments within svgtoimg for additional\n    //   discussion of problems with IE\n    //   can now draw to canvas, but CORS tainted canvas\n    //   does not allow toDataURL\n    //   svg format will work though\n    if (Lib.isIE() && opts.format !== 'svg') {\n      reject(new Error(helpers.MSG_IE_BAD_FORMAT));\n    }\n    if (_gd) _gd._snapshotInProgress = true;\n    var promise = toImage(gd, opts);\n    var filename = opts.filename || gd.fn || 'newplot';\n    filename += '.' + opts.format.replace('-', '.');\n    promise.then(function (result) {\n      if (_gd) _gd._snapshotInProgress = false;\n      return fileSaver(result, filename, opts.format);\n    }).then(function (name) {\n      resolve(name);\n    }).catch(function (err) {\n      if (_gd) _gd._snapshotInProgress = false;\n      reject(err);\n    });\n  });\n}\nmodule.exports = downloadImage;\n\n/***/ }),\n\n/***/ 22435:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2078778__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2078778__(71828);\nvar helpers = __nested_webpack_require_2078778__(25095);\n\n/*\n* substantial portions of this code from FileSaver.js\n* https://github.com/eligrey/FileSaver.js\n* License: https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n* 1.1.20160328\n*\n* By Eli Grey, http://eligrey.com\n* License: MIT\n*   See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n*/\nfunction fileSaver(url, name, format) {\n  var saveLink = document.createElement('a');\n  var canUseSaveLink = ('download' in saveLink);\n  var promise = new Promise(function (resolve, reject) {\n    var blob;\n    var objectUrl;\n\n    // IE 10+ (native saveAs)\n    if (Lib.isIE()) {\n      // At this point we are only dealing with a decoded SVG as\n      // a data URL (since IE only supports SVG)\n      blob = helpers.createBlob(url, 'svg');\n      window.navigator.msSaveBlob(blob, name);\n      blob = null;\n      return resolve(name);\n    }\n    if (canUseSaveLink) {\n      blob = helpers.createBlob(url, format);\n      objectUrl = helpers.createObjectURL(blob);\n      saveLink.href = objectUrl;\n      saveLink.download = name;\n      document.body.appendChild(saveLink);\n      saveLink.click();\n      document.body.removeChild(saveLink);\n      helpers.revokeObjectURL(objectUrl);\n      blob = null;\n      return resolve(name);\n    }\n\n    // Older versions of Safari did not allow downloading of blob urls\n    if (Lib.isSafari()) {\n      var prefix = format === 'svg' ? ',' : ';base64,';\n      helpers.octetStream(prefix + encodeURIComponent(url));\n      return resolve(name);\n    }\n    reject(new Error('download error'));\n  });\n  return promise;\n}\nmodule.exports = fileSaver;\n\n/***/ }),\n\n/***/ 25095:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_2080613__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_2080613__(73972);\nexports.getDelay = function (fullLayout) {\n  if (!fullLayout._has) return 0;\n  return fullLayout._has('gl3d') || fullLayout._has('gl2d') || fullLayout._has('mapbox') ? 500 : 0;\n};\nexports.getRedrawFunc = function (gd) {\n  return function () {\n    Registry.getComponentMethod('colorbar', 'draw')(gd);\n  };\n};\nexports.encodeSVG = function (svg) {\n  return 'data:image/svg+xml,' + encodeURIComponent(svg);\n};\nexports.encodeJSON = function (json) {\n  return 'data:application/json,' + encodeURIComponent(json);\n};\nvar DOM_URL = window.URL || window.webkitURL;\nexports.createObjectURL = function (blob) {\n  return DOM_URL.createObjectURL(blob);\n};\nexports.revokeObjectURL = function (url) {\n  return DOM_URL.revokeObjectURL(url);\n};\nexports.createBlob = function (url, format) {\n  if (format === 'svg') {\n    return new window.Blob([url], {\n      type: 'image/svg+xml;charset=utf-8'\n    });\n  } else if (format === 'full-json') {\n    return new window.Blob([url], {\n      type: 'application/json;charset=utf-8'\n    });\n  } else {\n    var binary = fixBinary(window.atob(url));\n    return new window.Blob([binary], {\n      type: 'image/' + format\n    });\n  }\n};\nexports.octetStream = function (s) {\n  document.location.href = 'data:application/octet-stream' + s;\n};\n\n// Taken from https://bl.ocks.org/nolanlawson/0eac306e4dac2114c752\nfunction fixBinary(b) {\n  var len = b.length;\n  var buf = new ArrayBuffer(len);\n  var arr = new Uint8Array(buf);\n  for (var i = 0; i < len; i++) {\n    arr[i] = b.charCodeAt(i);\n  }\n  return buf;\n}\nexports.IMAGE_URL_PREFIX = /^data:image\\/\\w+;base64,/;\nexports.MSG_IE_BAD_FORMAT = 'Sorry IE does not support downloading from canvas. Try {format:\\'svg\\'} instead.';\n\n/***/ }),\n\n/***/ 44511:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2082462__) {\n\n\"use strict\";\n\n\nvar helpers = __nested_webpack_require_2082462__(25095);\nvar Snapshot = {\n  getDelay: helpers.getDelay,\n  getRedrawFunc: helpers.getRedrawFunc,\n  clone: __nested_webpack_require_2082462__(61914),\n  toSVG: __nested_webpack_require_2082462__(5900),\n  svgToImg: __nested_webpack_require_2082462__(70942),\n  toImage: __nested_webpack_require_2082462__(56395),\n  downloadImage: __nested_webpack_require_2082462__(7239)\n};\nmodule.exports = Snapshot;\n\n/***/ }),\n\n/***/ 70942:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2082931__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2082931__(71828);\nvar EventEmitter = (__nested_webpack_require_2082931__(15398).EventEmitter);\nvar helpers = __nested_webpack_require_2082931__(25095);\nfunction svgToImg(opts) {\n  var ev = opts.emitter || new EventEmitter();\n  var promise = new Promise(function (resolve, reject) {\n    var Image = window.Image;\n    var svg = opts.svg;\n    var format = opts.format || 'png';\n\n    // IE only support svg\n    if (Lib.isIE() && format !== 'svg') {\n      var ieSvgError = new Error(helpers.MSG_IE_BAD_FORMAT);\n      reject(ieSvgError);\n      // eventually remove the ev\n      //  in favor of promises\n      if (!opts.promise) {\n        return ev.emit('error', ieSvgError);\n      } else {\n        return promise;\n      }\n    }\n    var canvas = opts.canvas;\n    var scale = opts.scale || 1;\n    var w0 = opts.width || 300;\n    var h0 = opts.height || 150;\n    var w1 = scale * w0;\n    var h1 = scale * h0;\n    var ctx = canvas.getContext('2d', {\n      willReadFrequently: true\n    });\n    var img = new Image();\n    var svgBlob, url;\n    if (format === 'svg' || Lib.isSafari()) {\n      url = helpers.encodeSVG(svg);\n    } else {\n      svgBlob = helpers.createBlob(svg, 'svg');\n      url = helpers.createObjectURL(svgBlob);\n    }\n    canvas.width = w1;\n    canvas.height = h1;\n    img.onload = function () {\n      var imgData;\n      svgBlob = null;\n      helpers.revokeObjectURL(url);\n\n      // don't need to draw to canvas if svg\n      //  save some time and also avoid failure on IE\n      if (format !== 'svg') {\n        ctx.drawImage(img, 0, 0, w1, h1);\n      }\n      switch (format) {\n        case 'jpeg':\n          imgData = canvas.toDataURL('image/jpeg');\n          break;\n        case 'png':\n          imgData = canvas.toDataURL('image/png');\n          break;\n        case 'webp':\n          imgData = canvas.toDataURL('image/webp');\n          break;\n        case 'svg':\n          imgData = url;\n          break;\n        default:\n          var errorMsg = 'Image format is not jpeg, png, svg or webp.';\n          reject(new Error(errorMsg));\n          // eventually remove the ev\n          //  in favor of promises\n          if (!opts.promise) {\n            return ev.emit('error', errorMsg);\n          }\n      }\n      resolve(imgData);\n      // eventually remove the ev\n      //  in favor of promises\n      if (!opts.promise) {\n        ev.emit('success', imgData);\n      }\n    };\n    img.onerror = function (err) {\n      svgBlob = null;\n      helpers.revokeObjectURL(url);\n      reject(err);\n      // eventually remove the ev\n      //  in favor of promises\n      if (!opts.promise) {\n        return ev.emit('error', err);\n      }\n    };\n    img.src = url;\n  });\n\n  // temporary for backward compatibility\n  //  move to only Promise in 2.0.0\n  //  and eliminate the EventEmitter\n  if (opts.promise) {\n    return promise;\n  }\n  return ev;\n}\nmodule.exports = svgToImg;\n\n/***/ }),\n\n/***/ 56395:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2085901__) {\n\n\"use strict\";\n\n\nvar EventEmitter = (__nested_webpack_require_2085901__(15398).EventEmitter);\nvar Registry = __nested_webpack_require_2085901__(73972);\nvar Lib = __nested_webpack_require_2085901__(71828);\nvar helpers = __nested_webpack_require_2085901__(25095);\nvar clonePlot = __nested_webpack_require_2085901__(61914);\nvar toSVG = __nested_webpack_require_2085901__(5900);\nvar svgToImg = __nested_webpack_require_2085901__(70942);\n\n/**\n * @param {object} gd figure Object\n * @param {object} opts option object\n * @param opts.format 'jpeg' | 'png' | 'webp' | 'svg'\n */\nfunction toImage(gd, opts) {\n  // first clone the GD so we can operate in a clean environment\n  var ev = new EventEmitter();\n  var clone = clonePlot(gd, {\n    format: 'png'\n  });\n  var clonedGd = clone.gd;\n\n  // put the cloned div somewhere off screen before attaching to DOM\n  clonedGd.style.position = 'absolute';\n  clonedGd.style.left = '-5000px';\n  document.body.appendChild(clonedGd);\n  function wait() {\n    var delay = helpers.getDelay(clonedGd._fullLayout);\n    setTimeout(function () {\n      var svg = toSVG(clonedGd);\n      var canvas = document.createElement('canvas');\n      canvas.id = Lib.randstr();\n      ev = svgToImg({\n        format: opts.format,\n        width: clonedGd._fullLayout.width,\n        height: clonedGd._fullLayout.height,\n        canvas: canvas,\n        emitter: ev,\n        svg: svg\n      });\n      ev.clean = function () {\n        if (clonedGd) document.body.removeChild(clonedGd);\n      };\n    }, delay);\n  }\n  var redrawFunc = helpers.getRedrawFunc(clonedGd);\n  Registry.call('_doPlot', clonedGd, clone.data, clone.layout, clone.config).then(redrawFunc).then(wait).catch(function (err) {\n    ev.emit('error', err);\n  });\n  return ev;\n}\nmodule.exports = toImage;\n\n/***/ }),\n\n/***/ 5900:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2087660__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2087660__(39898);\nvar Lib = __nested_webpack_require_2087660__(71828);\nvar Drawing = __nested_webpack_require_2087660__(91424);\nvar Color = __nested_webpack_require_2087660__(7901);\nvar xmlnsNamespaces = __nested_webpack_require_2087660__(77922);\nvar DOUBLEQUOTE_REGEX = /\"/g;\nvar DUMMY_SUB = 'TOBESTRIPPED';\nvar DUMMY_REGEX = new RegExp('(\"' + DUMMY_SUB + ')|(' + DUMMY_SUB + '\")', 'g');\nfunction htmlEntityDecode(s) {\n  var hiddenDiv = d3.select('body').append('div').style({\n    display: 'none'\n  }).html('');\n  var replaced = s.replace(/(&[^;]*;)/gi, function (d) {\n    if (d === '&lt;') {\n      return '&#60;';\n    } // special handling for brackets\n    if (d === '&rt;') {\n      return '&#62;';\n    }\n    if (d.indexOf('<') !== -1 || d.indexOf('>') !== -1) {\n      return '';\n    }\n    return hiddenDiv.html(d).text(); // everything else, let the browser decode it to unicode\n  });\n\n  hiddenDiv.remove();\n  return replaced;\n}\nfunction xmlEntityEncode(str) {\n  return str.replace(/&(?!\\w+;|\\#[0-9]+;| \\#x[0-9A-F]+;)/g, '&amp;');\n}\nmodule.exports = function toSVG(gd, format, scale) {\n  var fullLayout = gd._fullLayout;\n  var svg = fullLayout._paper;\n  var toppaper = fullLayout._toppaper;\n  var width = fullLayout.width;\n  var height = fullLayout.height;\n  var i;\n\n  // make background color a rect in the svg, then revert after scraping\n  // all other alterations have been dealt with by properly preparing the svg\n  // in the first place... like setting cursors with css classes so we don't\n  // have to remove them, and providing the right namespaces in the svg to\n  // begin with\n  svg.insert('rect', ':first-child').call(Drawing.setRect, 0, 0, width, height).call(Color.fill, fullLayout.paper_bgcolor);\n\n  // subplot-specific to-SVG methods\n  // which notably add the contents of the gl-container\n  // into the main svg node\n  var basePlotModules = fullLayout._basePlotModules || [];\n  for (i = 0; i < basePlotModules.length; i++) {\n    var _module = basePlotModules[i];\n    if (_module.toSVG) _module.toSVG(gd);\n  }\n\n  // add top items above them assumes everything in toppaper is either\n  // a group or a defs, and if it's empty (like hoverlayer) we can ignore it.\n  if (toppaper) {\n    var nodes = toppaper.node().childNodes;\n\n    // make copy of nodes as childNodes prop gets mutated in loop below\n    var topGroups = Array.prototype.slice.call(nodes);\n    for (i = 0; i < topGroups.length; i++) {\n      var topGroup = topGroups[i];\n      if (topGroup.childNodes.length) svg.node().appendChild(topGroup);\n    }\n  }\n\n  // remove draglayer for Adobe Illustrator compatibility\n  if (fullLayout._draggers) {\n    fullLayout._draggers.remove();\n  }\n\n  // in case the svg element had an explicit background color, remove this\n  // we want the rect to get the color so it's the right size; svg bg will\n  // fill whatever container it's displayed in regardless of plot size.\n  svg.node().style.background = '';\n  svg.selectAll('text').attr({\n    'data-unformatted': null,\n    'data-math': null\n  }).each(function () {\n    var txt = d3.select(this);\n\n    // hidden text is pre-formatting mathjax, the browser ignores it\n    // but in a static plot it's useless and it can confuse batik\n    // we've tried to standardize on display:none but make sure we still\n    // catch visibility:hidden if it ever arises\n    if (this.style.visibility === 'hidden' || this.style.display === 'none') {\n      txt.remove();\n      return;\n    } else {\n      // clear other visibility/display values to default\n      // to not potentially confuse non-browser SVG implementations\n      txt.style({\n        visibility: null,\n        display: null\n      });\n    }\n\n    // Font family styles break things because of quotation marks,\n    // so we must remove them *after* the SVG DOM has been serialized\n    // to a string (browsers convert singles back)\n    var ff = this.style.fontFamily;\n    if (ff && ff.indexOf('\"') !== -1) {\n      txt.style('font-family', ff.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));\n    }\n  });\n  svg.selectAll('.gradient_filled,.pattern_filled').each(function () {\n    var pt = d3.select(this);\n\n    // similar to font family styles above,\n    // we must remove \" after the SVG DOM has been serialized\n    var fill = this.style.fill;\n    if (fill && fill.indexOf('url(') !== -1) {\n      pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));\n    }\n    var stroke = this.style.stroke;\n    if (stroke && stroke.indexOf('url(') !== -1) {\n      pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));\n    }\n  });\n  if (format === 'pdf' || format === 'eps') {\n    // these formats make the extra line MathJax adds around symbols look super thick in some cases\n    // it looks better if this is removed entirely.\n    svg.selectAll('#MathJax_SVG_glyphs path').attr('stroke-width', 0);\n  }\n\n  // fix for IE namespacing quirk?\n  // http://stackoverflow.com/questions/19610089/unwanted-namespaces-on-svg-markup-when-using-xmlserializer-in-javascript-with-ie\n  svg.node().setAttributeNS(xmlnsNamespaces.xmlns, 'xmlns', xmlnsNamespaces.svg);\n  svg.node().setAttributeNS(xmlnsNamespaces.xmlns, 'xmlns:xlink', xmlnsNamespaces.xlink);\n  if (format === 'svg' && scale) {\n    svg.attr('width', scale * width);\n    svg.attr('height', scale * height);\n    svg.attr('viewBox', '0 0 ' + width + ' ' + height);\n  }\n  var s = new window.XMLSerializer().serializeToString(svg.node());\n  s = htmlEntityDecode(s);\n  s = xmlEntityEncode(s);\n\n  // Fix quotations around font strings and gradient URLs\n  s = s.replace(DUMMY_REGEX, '\\'');\n\n  // Do we need this process now that IE9 and IE10 are not supported?\n\n  // IE is very strict, so we will need to clean\n  //  svg with the following regex\n  //  yes this is messy, but do not know a better way\n  // Even with this IE will not work due to tainted canvas\n  //  see https://github.com/kangax/fabric.js/issues/1957\n  //      http://stackoverflow.com/questions/18112047/canvas-todataurl-working-in-all-browsers-except-ie10\n  // Leave here just in case the CORS/tainted IE issue gets resolved\n  if (Lib.isIE()) {\n    // replace double quote with single quote\n    s = s.replace(/\"/gi, '\\'');\n    // url in svg are single quoted\n    //   since we changed double to single\n    //   we'll need to change these to double-quoted\n    s = s.replace(/(\\('#)([^']*)('\\))/gi, '(\\\"#$2\\\")');\n    // font names with spaces will be escaped single-quoted\n    //   we'll need to change these to double-quoted\n    s = s.replace(/(\\\\')/gi, '\\\"');\n  }\n  return s;\n};\n\n/***/ }),\n\n/***/ 75341:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2094220__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2094220__(71828);\n\n// arrayOk attributes, merge them into calcdata array\nmodule.exports = function arraysToCalcdata(cd, trace) {\n  for (var i = 0; i < cd.length; i++) cd[i].i = i;\n  Lib.mergeArray(trace.text, cd, 'tx');\n  Lib.mergeArray(trace.hovertext, cd, 'htx');\n  var marker = trace.marker;\n  if (marker) {\n    Lib.mergeArray(marker.opacity, cd, 'mo', true);\n    Lib.mergeArray(marker.color, cd, 'mc');\n    var markerLine = marker.line;\n    if (markerLine) {\n      Lib.mergeArray(markerLine.color, cd, 'mlc');\n      Lib.mergeArrayCastPositive(markerLine.width, cd, 'mlw');\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 1486:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2094944__) {\n\n\"use strict\";\n\n\nvar scatterAttrs = __nested_webpack_require_2094944__(82196);\nvar axisHoverFormat = (__nested_webpack_require_2094944__(12663).axisHoverFormat);\nvar hovertemplateAttrs = (__nested_webpack_require_2094944__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_2094944__(5386)/* .texttemplateAttrs */ .s);\nvar colorScaleAttrs = __nested_webpack_require_2094944__(50693);\nvar fontAttrs = __nested_webpack_require_2094944__(41940);\nvar constants = __nested_webpack_require_2094944__(97313);\nvar pattern = (__nested_webpack_require_2094944__(79952)/* .pattern */ .u);\nvar extendFlat = (__nested_webpack_require_2094944__(1426).extendFlat);\nvar textFontAttrs = fontAttrs({\n  editType: 'calc',\n  arrayOk: true,\n  colorEditType: 'style'\n});\nvar scatterMarkerAttrs = scatterAttrs.marker;\nvar scatterMarkerLineAttrs = scatterMarkerAttrs.line;\nvar markerLineWidth = extendFlat({}, scatterMarkerLineAttrs.width, {\n  dflt: 0\n});\nvar markerLine = extendFlat({\n  width: markerLineWidth,\n  editType: 'calc'\n}, colorScaleAttrs('marker.line'));\nvar marker = extendFlat({\n  line: markerLine,\n  editType: 'calc'\n}, colorScaleAttrs('marker'), {\n  opacity: {\n    valType: 'number',\n    arrayOk: true,\n    dflt: 1,\n    min: 0,\n    max: 1,\n    editType: 'style'\n  },\n  pattern: pattern\n});\nmodule.exports = {\n  x: scatterAttrs.x,\n  x0: scatterAttrs.x0,\n  dx: scatterAttrs.dx,\n  y: scatterAttrs.y,\n  y0: scatterAttrs.y0,\n  dy: scatterAttrs.dy,\n  xperiod: scatterAttrs.xperiod,\n  yperiod: scatterAttrs.yperiod,\n  xperiod0: scatterAttrs.xperiod0,\n  yperiod0: scatterAttrs.yperiod0,\n  xperiodalignment: scatterAttrs.xperiodalignment,\n  yperiodalignment: scatterAttrs.yperiodalignment,\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  text: scatterAttrs.text,\n  texttemplate: texttemplateAttrs({\n    editType: 'plot'\n  }, {\n    keys: constants.eventDataKeys\n  }),\n  hovertext: scatterAttrs.hovertext,\n  hovertemplate: hovertemplateAttrs({}, {\n    keys: constants.eventDataKeys\n  }),\n  textposition: {\n    valType: 'enumerated',\n    values: ['inside', 'outside', 'auto', 'none'],\n    dflt: 'auto',\n    arrayOk: true,\n    editType: 'calc'\n  },\n  insidetextanchor: {\n    valType: 'enumerated',\n    values: ['end', 'middle', 'start'],\n    dflt: 'end',\n    editType: 'plot'\n  },\n  textangle: {\n    valType: 'angle',\n    dflt: 'auto',\n    editType: 'plot'\n  },\n  textfont: extendFlat({}, textFontAttrs, {}),\n  insidetextfont: extendFlat({}, textFontAttrs, {}),\n  outsidetextfont: extendFlat({}, textFontAttrs, {}),\n  constraintext: {\n    valType: 'enumerated',\n    values: ['inside', 'outside', 'both', 'none'],\n    dflt: 'both',\n    editType: 'calc'\n  },\n  cliponaxis: extendFlat({}, scatterAttrs.cliponaxis, {}),\n  orientation: {\n    valType: 'enumerated',\n    values: ['v', 'h'],\n    editType: 'calc+clearAxisTypes'\n  },\n  base: {\n    valType: 'any',\n    dflt: null,\n    arrayOk: true,\n    editType: 'calc'\n  },\n  offset: {\n    valType: 'number',\n    dflt: null,\n    arrayOk: true,\n    editType: 'calc'\n  },\n  width: {\n    valType: 'number',\n    dflt: null,\n    min: 0,\n    arrayOk: true,\n    editType: 'calc'\n  },\n  marker: marker,\n  offsetgroup: scatterAttrs.offsetgroup,\n  alignmentgroup: scatterAttrs.alignmentgroup,\n  selected: {\n    marker: {\n      opacity: scatterAttrs.selected.marker.opacity,\n      color: scatterAttrs.selected.marker.color,\n      editType: 'style'\n    },\n    textfont: scatterAttrs.selected.textfont,\n    editType: 'style'\n  },\n  unselected: {\n    marker: {\n      opacity: scatterAttrs.unselected.marker.opacity,\n      color: scatterAttrs.unselected.marker.color,\n      editType: 'style'\n    },\n    textfont: scatterAttrs.unselected.textfont,\n    editType: 'style'\n  },\n  _deprecated: {\n    bardir: {\n      valType: 'enumerated',\n      editType: 'calc',\n      values: ['v', 'h']\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 92290:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2098773__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_2098773__(89298);\nvar alignPeriod = __nested_webpack_require_2098773__(42973);\nvar hasColorscale = (__nested_webpack_require_2098773__(52075).hasColorscale);\nvar colorscaleCalc = __nested_webpack_require_2098773__(78803);\nvar arraysToCalcdata = __nested_webpack_require_2098773__(75341);\nvar calcSelection = __nested_webpack_require_2098773__(66279);\nmodule.exports = function calc(gd, trace) {\n  var xa = Axes.getFromId(gd, trace.xaxis || 'x');\n  var ya = Axes.getFromId(gd, trace.yaxis || 'y');\n  var size, pos, origPos, pObj, hasPeriod, pLetter;\n  var sizeOpts = {\n    msUTC: !!(trace.base || trace.base === 0)\n  };\n  if (trace.orientation === 'h') {\n    size = xa.makeCalcdata(trace, 'x', sizeOpts);\n    origPos = ya.makeCalcdata(trace, 'y');\n    pObj = alignPeriod(trace, ya, 'y', origPos);\n    hasPeriod = !!trace.yperiodalignment;\n    pLetter = 'y';\n  } else {\n    size = ya.makeCalcdata(trace, 'y', sizeOpts);\n    origPos = xa.makeCalcdata(trace, 'x');\n    pObj = alignPeriod(trace, xa, 'x', origPos);\n    hasPeriod = !!trace.xperiodalignment;\n    pLetter = 'x';\n  }\n  pos = pObj.vals;\n\n  // create the \"calculated data\" to plot\n  var serieslen = Math.min(pos.length, size.length);\n  var cd = new Array(serieslen);\n\n  // set position and size\n  for (var i = 0; i < serieslen; i++) {\n    cd[i] = {\n      p: pos[i],\n      s: size[i]\n    };\n    if (hasPeriod) {\n      cd[i].orig_p = origPos[i]; // used by hover\n      cd[i][pLetter + 'End'] = pObj.ends[i];\n      cd[i][pLetter + 'Start'] = pObj.starts[i];\n    }\n    if (trace.ids) {\n      cd[i].id = String(trace.ids[i]);\n    }\n  }\n\n  // auto-z and autocolorscale if applicable\n  if (hasColorscale(trace, 'marker')) {\n    colorscaleCalc(gd, trace, {\n      vals: trace.marker.color,\n      containerStr: 'marker',\n      cLetter: 'c'\n    });\n  }\n  if (hasColorscale(trace, 'marker.line')) {\n    colorscaleCalc(gd, trace, {\n      vals: trace.marker.line.color,\n      containerStr: 'marker.line',\n      cLetter: 'c'\n    });\n  }\n  arraysToCalcdata(cd, trace);\n  calcSelection(cd, trace);\n  return cd;\n};\n\n/***/ }),\n\n/***/ 97313:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  // padding in pixels around text\n  TEXTPAD: 3,\n  // 'value' and 'label' are not really necessary for bar traces,\n  // but they were made available to `texttemplate` (maybe by accident)\n  // via tokens `%{value}` and `%{label}` starting in 1.50.0,\n  // so let's include them in the event data also.\n  eventDataKeys: ['value', 'label']\n};\n\n/***/ }),\n\n/***/ 11661:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2101313__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_2101313__(92770);\nvar isArrayOrTypedArray = (__nested_webpack_require_2101313__(71828).isArrayOrTypedArray);\nvar BADNUM = (__nested_webpack_require_2101313__(50606).BADNUM);\nvar Registry = __nested_webpack_require_2101313__(73972);\nvar Axes = __nested_webpack_require_2101313__(89298);\nvar getAxisGroup = (__nested_webpack_require_2101313__(99082).getAxisGroup);\nvar Sieve = __nested_webpack_require_2101313__(61546);\n\n/*\n * Bar chart stacking/grouping positioning and autoscaling calculations\n * for each direction separately calculate the ranges and positions\n * note that this handles histograms too\n * now doing this one subplot at a time\n */\n\nfunction crossTraceCalc(gd, plotinfo) {\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  var fullLayout = gd._fullLayout;\n  var fullTraces = gd._fullData;\n  var calcTraces = gd.calcdata;\n  var calcTracesHorz = [];\n  var calcTracesVert = [];\n  for (var i = 0; i < fullTraces.length; i++) {\n    var fullTrace = fullTraces[i];\n    if (fullTrace.visible === true && Registry.traceIs(fullTrace, 'bar') && fullTrace.xaxis === xa._id && fullTrace.yaxis === ya._id) {\n      if (fullTrace.orientation === 'h') {\n        calcTracesHorz.push(calcTraces[i]);\n      } else {\n        calcTracesVert.push(calcTraces[i]);\n      }\n      if (fullTrace._computePh) {\n        var cd = gd.calcdata[i];\n        for (var j = 0; j < cd.length; j++) {\n          if (typeof cd[j].ph0 === 'function') cd[j].ph0 = cd[j].ph0();\n          if (typeof cd[j].ph1 === 'function') cd[j].ph1 = cd[j].ph1();\n        }\n      }\n    }\n  }\n  var opts = {\n    xCat: xa.type === 'category' || xa.type === 'multicategory',\n    yCat: ya.type === 'category' || ya.type === 'multicategory',\n    mode: fullLayout.barmode,\n    norm: fullLayout.barnorm,\n    gap: fullLayout.bargap,\n    groupgap: fullLayout.bargroupgap\n  };\n  setGroupPositions(gd, xa, ya, calcTracesVert, opts);\n  setGroupPositions(gd, ya, xa, calcTracesHorz, opts);\n}\nfunction setGroupPositions(gd, pa, sa, calcTraces, opts) {\n  if (!calcTraces.length) return;\n  var excluded;\n  var included;\n  var i, calcTrace, fullTrace;\n  initBase(sa, calcTraces);\n  switch (opts.mode) {\n    case 'overlay':\n      setGroupPositionsInOverlayMode(pa, sa, calcTraces, opts);\n      break;\n    case 'group':\n      // exclude from the group those traces for which the user set an offset\n      excluded = [];\n      included = [];\n      for (i = 0; i < calcTraces.length; i++) {\n        calcTrace = calcTraces[i];\n        fullTrace = calcTrace[0].trace;\n        if (fullTrace.offset === undefined) included.push(calcTrace);else excluded.push(calcTrace);\n      }\n      if (included.length) {\n        setGroupPositionsInGroupMode(gd, pa, sa, included, opts);\n      }\n      if (excluded.length) {\n        setGroupPositionsInOverlayMode(pa, sa, excluded, opts);\n      }\n      break;\n    case 'stack':\n    case 'relative':\n      // exclude from the stack those traces for which the user set a base\n      excluded = [];\n      included = [];\n      for (i = 0; i < calcTraces.length; i++) {\n        calcTrace = calcTraces[i];\n        fullTrace = calcTrace[0].trace;\n        if (fullTrace.base === undefined) included.push(calcTrace);else excluded.push(calcTrace);\n      }\n      if (included.length) {\n        setGroupPositionsInStackOrRelativeMode(gd, pa, sa, included, opts);\n      }\n      if (excluded.length) {\n        setGroupPositionsInOverlayMode(pa, sa, excluded, opts);\n      }\n      break;\n  }\n  collectExtents(calcTraces, pa);\n}\nfunction initBase(sa, calcTraces) {\n  var i, j;\n  for (i = 0; i < calcTraces.length; i++) {\n    var cd = calcTraces[i];\n    var trace = cd[0].trace;\n    var base = trace.type === 'funnel' ? trace._base : trace.base;\n    var b;\n\n    // not sure if it really makes sense to have dates for bar size data...\n    // ideally if we want to make gantt charts or something we'd treat\n    // the actual size (trace.x or y) as time delta but base as absolute\n    // time. But included here for completeness.\n    var scalendar = trace.orientation === 'h' ? trace.xcalendar : trace.ycalendar;\n\n    // 'base' on categorical axes makes no sense\n    var d2c = sa.type === 'category' || sa.type === 'multicategory' ? function () {\n      return null;\n    } : sa.d2c;\n    if (isArrayOrTypedArray(base)) {\n      for (j = 0; j < Math.min(base.length, cd.length); j++) {\n        b = d2c(base[j], 0, scalendar);\n        if (isNumeric(b)) {\n          cd[j].b = +b;\n          cd[j].hasB = 1;\n        } else cd[j].b = 0;\n      }\n      for (; j < cd.length; j++) {\n        cd[j].b = 0;\n      }\n    } else {\n      b = d2c(base, 0, scalendar);\n      var hasBase = isNumeric(b);\n      b = hasBase ? b : 0;\n      for (j = 0; j < cd.length; j++) {\n        cd[j].b = b;\n        if (hasBase) cd[j].hasB = 1;\n      }\n    }\n  }\n}\nfunction setGroupPositionsInOverlayMode(pa, sa, calcTraces, opts) {\n  // update position axis and set bar offsets and widths\n  for (var i = 0; i < calcTraces.length; i++) {\n    var calcTrace = calcTraces[i];\n    var sieve = new Sieve([calcTrace], {\n      posAxis: pa,\n      sepNegVal: false,\n      overlapNoMerge: !opts.norm\n    });\n\n    // set bar offsets and widths, and update position axis\n    setOffsetAndWidth(pa, sieve, opts);\n\n    // set bar bases and sizes, and update size axis\n    //\n    // (note that `setGroupPositionsInOverlayMode` handles the case barnorm\n    // is defined, because this function is also invoked for traces that\n    // can't be grouped or stacked)\n    if (opts.norm) {\n      sieveBars(sieve);\n      normalizeBars(sa, sieve, opts);\n    } else {\n      setBaseAndTop(sa, sieve);\n    }\n  }\n}\nfunction setGroupPositionsInGroupMode(gd, pa, sa, calcTraces, opts) {\n  var sieve = new Sieve(calcTraces, {\n    posAxis: pa,\n    sepNegVal: false,\n    overlapNoMerge: !opts.norm\n  });\n\n  // set bar offsets and widths, and update position axis\n  setOffsetAndWidthInGroupMode(gd, pa, sieve, opts);\n\n  // relative-stack bars within the same trace that would otherwise\n  // be hidden\n  unhideBarsWithinTrace(sieve, pa);\n\n  // set bar bases and sizes, and update size axis\n  if (opts.norm) {\n    sieveBars(sieve);\n    normalizeBars(sa, sieve, opts);\n  } else {\n    setBaseAndTop(sa, sieve);\n  }\n}\nfunction setGroupPositionsInStackOrRelativeMode(gd, pa, sa, calcTraces, opts) {\n  var sieve = new Sieve(calcTraces, {\n    posAxis: pa,\n    sepNegVal: opts.mode === 'relative',\n    overlapNoMerge: !(opts.norm || opts.mode === 'stack' || opts.mode === 'relative')\n  });\n\n  // set bar offsets and widths, and update position axis\n  setOffsetAndWidth(pa, sieve, opts);\n\n  // set bar bases and sizes, and update size axis\n  stackBars(sa, sieve, opts);\n\n  // flag the outmost bar (for text display purposes)\n  for (var i = 0; i < calcTraces.length; i++) {\n    var calcTrace = calcTraces[i];\n    for (var j = 0; j < calcTrace.length; j++) {\n      var bar = calcTrace[j];\n      if (bar.s !== BADNUM) {\n        var isOutmostBar = bar.b + bar.s === sieve.get(bar.p, bar.s);\n        if (isOutmostBar) bar._outmost = true;\n      }\n    }\n  }\n\n  // Note that marking the outmost bars has to be done\n  // before `normalizeBars` changes `bar.b` and `bar.s`.\n  if (opts.norm) normalizeBars(sa, sieve, opts);\n}\nfunction setOffsetAndWidth(pa, sieve, opts) {\n  var minDiff = sieve.minDiff;\n  var calcTraces = sieve.traces;\n\n  // set bar offsets and widths\n  var barGroupWidth = minDiff * (1 - opts.gap);\n  var barWidthPlusGap = barGroupWidth;\n  var barWidth = barWidthPlusGap * (1 - (opts.groupgap || 0));\n\n  // computer bar group center and bar offset\n  var offsetFromCenter = -barWidth / 2;\n  for (var i = 0; i < calcTraces.length; i++) {\n    var calcTrace = calcTraces[i];\n    var t = calcTrace[0].t;\n\n    // store bar width and offset for this trace\n    t.barwidth = barWidth;\n    t.poffset = offsetFromCenter;\n    t.bargroupwidth = barGroupWidth;\n    t.bardelta = minDiff;\n  }\n\n  // stack bars that only differ by rounding\n  sieve.binWidth = calcTraces[0][0].t.barwidth / 100;\n\n  // if defined, apply trace offset and width\n  applyAttributes(sieve);\n\n  // store the bar center in each calcdata item\n  setBarCenterAndWidth(pa, sieve);\n\n  // update position axes\n  updatePositionAxis(pa, sieve);\n}\nfunction setOffsetAndWidthInGroupMode(gd, pa, sieve, opts) {\n  var fullLayout = gd._fullLayout;\n  var positions = sieve.positions;\n  var distinctPositions = sieve.distinctPositions;\n  var minDiff = sieve.minDiff;\n  var calcTraces = sieve.traces;\n  var nTraces = calcTraces.length;\n\n  // if there aren't any overlapping positions,\n  // let them have full width even if mode is group\n  var overlap = positions.length !== distinctPositions.length;\n  var barGroupWidth = minDiff * (1 - opts.gap);\n  var groupId = getAxisGroup(fullLayout, pa._id) + calcTraces[0][0].trace.orientation;\n  var alignmentGroups = fullLayout._alignmentOpts[groupId] || {};\n  for (var i = 0; i < nTraces; i++) {\n    var calcTrace = calcTraces[i];\n    var trace = calcTrace[0].trace;\n    var alignmentGroupOpts = alignmentGroups[trace.alignmentgroup] || {};\n    var nOffsetGroups = Object.keys(alignmentGroupOpts.offsetGroups || {}).length;\n    var barWidthPlusGap;\n    if (nOffsetGroups) {\n      barWidthPlusGap = barGroupWidth / nOffsetGroups;\n    } else {\n      barWidthPlusGap = overlap ? barGroupWidth / nTraces : barGroupWidth;\n    }\n    var barWidth = barWidthPlusGap * (1 - (opts.groupgap || 0));\n    var offsetFromCenter;\n    if (nOffsetGroups) {\n      offsetFromCenter = ((2 * trace._offsetIndex + 1 - nOffsetGroups) * barWidthPlusGap - barWidth) / 2;\n    } else {\n      offsetFromCenter = overlap ? ((2 * i + 1 - nTraces) * barWidthPlusGap - barWidth) / 2 : -barWidth / 2;\n    }\n    var t = calcTrace[0].t;\n    t.barwidth = barWidth;\n    t.poffset = offsetFromCenter;\n    t.bargroupwidth = barGroupWidth;\n    t.bardelta = minDiff;\n  }\n\n  // stack bars that only differ by rounding\n  sieve.binWidth = calcTraces[0][0].t.barwidth / 100;\n\n  // if defined, apply trace width\n  applyAttributes(sieve);\n\n  // store the bar center in each calcdata item\n  setBarCenterAndWidth(pa, sieve);\n\n  // update position axes\n  updatePositionAxis(pa, sieve, overlap);\n}\nfunction applyAttributes(sieve) {\n  var calcTraces = sieve.traces;\n  var i, j;\n  for (i = 0; i < calcTraces.length; i++) {\n    var calcTrace = calcTraces[i];\n    var calcTrace0 = calcTrace[0];\n    var fullTrace = calcTrace0.trace;\n    var t = calcTrace0.t;\n    var offset = fullTrace._offset || fullTrace.offset;\n    var initialPoffset = t.poffset;\n    var newPoffset;\n    if (isArrayOrTypedArray(offset)) {\n      // if offset is an array, then clone it into t.poffset.\n      newPoffset = Array.prototype.slice.call(offset, 0, calcTrace.length);\n\n      // guard against non-numeric items\n      for (j = 0; j < newPoffset.length; j++) {\n        if (!isNumeric(newPoffset[j])) {\n          newPoffset[j] = initialPoffset;\n        }\n      }\n\n      // if the length of the array is too short,\n      // then extend it with the initial value of t.poffset\n      for (j = newPoffset.length; j < calcTrace.length; j++) {\n        newPoffset.push(initialPoffset);\n      }\n      t.poffset = newPoffset;\n    } else if (offset !== undefined) {\n      t.poffset = offset;\n    }\n    var width = fullTrace._width || fullTrace.width;\n    var initialBarwidth = t.barwidth;\n    if (isArrayOrTypedArray(width)) {\n      // if width is an array, then clone it into t.barwidth.\n      var newBarwidth = Array.prototype.slice.call(width, 0, calcTrace.length);\n\n      // guard against non-numeric items\n      for (j = 0; j < newBarwidth.length; j++) {\n        if (!isNumeric(newBarwidth[j])) newBarwidth[j] = initialBarwidth;\n      }\n\n      // if the length of the array is too short,\n      // then extend it with the initial value of t.barwidth\n      for (j = newBarwidth.length; j < calcTrace.length; j++) {\n        newBarwidth.push(initialBarwidth);\n      }\n      t.barwidth = newBarwidth;\n\n      // if user didn't set offset,\n      // then correct t.poffset to ensure bars remain centered\n      if (offset === undefined) {\n        newPoffset = [];\n        for (j = 0; j < calcTrace.length; j++) {\n          newPoffset.push(initialPoffset + (initialBarwidth - newBarwidth[j]) / 2);\n        }\n        t.poffset = newPoffset;\n      }\n    } else if (width !== undefined) {\n      t.barwidth = width;\n\n      // if user didn't set offset,\n      // then correct t.poffset to ensure bars remain centered\n      if (offset === undefined) {\n        t.poffset = initialPoffset + (initialBarwidth - width) / 2;\n      }\n    }\n  }\n}\nfunction setBarCenterAndWidth(pa, sieve) {\n  var calcTraces = sieve.traces;\n  var pLetter = getAxisLetter(pa);\n  for (var i = 0; i < calcTraces.length; i++) {\n    var calcTrace = calcTraces[i];\n    var t = calcTrace[0].t;\n    var poffset = t.poffset;\n    var poffsetIsArray = Array.isArray(poffset);\n    var barwidth = t.barwidth;\n    var barwidthIsArray = Array.isArray(barwidth);\n    for (var j = 0; j < calcTrace.length; j++) {\n      var calcBar = calcTrace[j];\n\n      // store the actual bar width and position, for use by hover\n      var width = calcBar.w = barwidthIsArray ? barwidth[j] : barwidth;\n      if (calcBar.p === undefined) {\n        calcBar.p = calcBar[pLetter];\n        calcBar['orig_' + pLetter] = calcBar[pLetter];\n      }\n      var delta = (poffsetIsArray ? poffset[j] : poffset) + width / 2;\n      calcBar[pLetter] = calcBar.p + delta;\n    }\n  }\n}\nfunction updatePositionAxis(pa, sieve, allowMinDtick) {\n  var calcTraces = sieve.traces;\n  var minDiff = sieve.minDiff;\n  var vpad = minDiff / 2;\n  Axes.minDtick(pa, sieve.minDiff, sieve.distinctPositions[0], allowMinDtick);\n  for (var i = 0; i < calcTraces.length; i++) {\n    var calcTrace = calcTraces[i];\n    var calcTrace0 = calcTrace[0];\n    var fullTrace = calcTrace0.trace;\n    var pts = [];\n    var bar, l, r, j;\n    for (j = 0; j < calcTrace.length; j++) {\n      bar = calcTrace[j];\n      l = bar.p - vpad;\n      r = bar.p + vpad;\n      pts.push(l, r);\n    }\n    if (fullTrace.width || fullTrace.offset) {\n      var t = calcTrace0.t;\n      var poffset = t.poffset;\n      var barwidth = t.barwidth;\n      var poffsetIsArray = Array.isArray(poffset);\n      var barwidthIsArray = Array.isArray(barwidth);\n      for (j = 0; j < calcTrace.length; j++) {\n        bar = calcTrace[j];\n        var calcBarOffset = poffsetIsArray ? poffset[j] : poffset;\n        var calcBarWidth = barwidthIsArray ? barwidth[j] : barwidth;\n        l = bar.p + calcBarOffset;\n        r = l + calcBarWidth;\n        pts.push(l, r);\n      }\n    }\n    fullTrace._extremes[pa._id] = Axes.findExtremes(pa, pts, {\n      padded: false\n    });\n  }\n}\n\n// store these bar bases and tops in calcdata\n// and make sure the size axis includes zero,\n// along with the bases and tops of each bar.\nfunction setBaseAndTop(sa, sieve) {\n  var calcTraces = sieve.traces;\n  var sLetter = getAxisLetter(sa);\n  for (var i = 0; i < calcTraces.length; i++) {\n    var calcTrace = calcTraces[i];\n    var fullTrace = calcTrace[0].trace;\n    var isScatter = fullTrace.type === 'scatter';\n    var isVertical = fullTrace.orientation === 'v';\n    var pts = [];\n    var tozero = false;\n    for (var j = 0; j < calcTrace.length; j++) {\n      var bar = calcTrace[j];\n      var base = isScatter ? 0 : bar.b;\n      var top = isScatter ? isVertical ? bar.y : bar.x : base + bar.s;\n      bar[sLetter] = top;\n      pts.push(top);\n      if (bar.hasB) pts.push(base);\n      if (!bar.hasB || !bar.b) {\n        tozero = true;\n      }\n    }\n    fullTrace._extremes[sa._id] = Axes.findExtremes(sa, pts, {\n      tozero: tozero,\n      padded: true\n    });\n  }\n}\nfunction stackBars(sa, sieve, opts) {\n  var sLetter = getAxisLetter(sa);\n  var calcTraces = sieve.traces;\n  var calcTrace;\n  var fullTrace;\n  var isFunnel;\n  var i, j;\n  var bar;\n  for (i = 0; i < calcTraces.length; i++) {\n    calcTrace = calcTraces[i];\n    fullTrace = calcTrace[0].trace;\n    if (fullTrace.type === 'funnel') {\n      for (j = 0; j < calcTrace.length; j++) {\n        bar = calcTrace[j];\n        if (bar.s !== BADNUM) {\n          // create base of funnels\n          sieve.put(bar.p, -0.5 * bar.s);\n        }\n      }\n    }\n  }\n  for (i = 0; i < calcTraces.length; i++) {\n    calcTrace = calcTraces[i];\n    fullTrace = calcTrace[0].trace;\n    isFunnel = fullTrace.type === 'funnel';\n    var pts = [];\n    for (j = 0; j < calcTrace.length; j++) {\n      bar = calcTrace[j];\n      if (bar.s !== BADNUM) {\n        // stack current bar and get previous sum\n        var value;\n        if (isFunnel) {\n          value = bar.s;\n        } else {\n          value = bar.s + bar.b;\n        }\n        var base = sieve.put(bar.p, value);\n        var top = base + value;\n\n        // store the bar base and top in each calcdata item\n        bar.b = base;\n        bar[sLetter] = top;\n        if (!opts.norm) {\n          pts.push(top);\n          if (bar.hasB) {\n            pts.push(base);\n          }\n        }\n      }\n    }\n\n    // if barnorm is set, let normalizeBars update the axis range\n    if (!opts.norm) {\n      fullTrace._extremes[sa._id] = Axes.findExtremes(sa, pts, {\n        // N.B. we don't stack base with 'base',\n        // so set tozero:true always!\n        tozero: true,\n        padded: true\n      });\n    }\n  }\n}\nfunction sieveBars(sieve) {\n  var calcTraces = sieve.traces;\n  for (var i = 0; i < calcTraces.length; i++) {\n    var calcTrace = calcTraces[i];\n    for (var j = 0; j < calcTrace.length; j++) {\n      var bar = calcTrace[j];\n      if (bar.s !== BADNUM) {\n        sieve.put(bar.p, bar.b + bar.s);\n      }\n    }\n  }\n}\nfunction unhideBarsWithinTrace(sieve, pa) {\n  var calcTraces = sieve.traces;\n  for (var i = 0; i < calcTraces.length; i++) {\n    var calcTrace = calcTraces[i];\n    var fullTrace = calcTrace[0].trace;\n    if (fullTrace.base === undefined) {\n      var inTraceSieve = new Sieve([calcTrace], {\n        posAxis: pa,\n        sepNegVal: true,\n        overlapNoMerge: true\n      });\n      for (var j = 0; j < calcTrace.length; j++) {\n        var bar = calcTrace[j];\n        if (bar.p !== BADNUM) {\n          // stack current bar and get previous sum\n          var base = inTraceSieve.put(bar.p, bar.b + bar.s);\n\n          // if previous sum if non-zero, this means:\n          // multiple bars have same starting point are potentially hidden,\n          // shift them vertically so that all bars are visible by default\n          if (base) bar.b = base;\n        }\n      }\n    }\n  }\n}\n\n// Note:\n//\n// normalizeBars requires that either sieveBars or stackBars has been\n// previously invoked.\nfunction normalizeBars(sa, sieve, opts) {\n  var calcTraces = sieve.traces;\n  var sLetter = getAxisLetter(sa);\n  var sTop = opts.norm === 'fraction' ? 1 : 100;\n  var sTiny = sTop / 1e9; // in case of rounding error in sum\n  var sMin = sa.l2c(sa.c2l(0));\n  var sMax = opts.mode === 'stack' ? sTop : sMin;\n  function needsPadding(v) {\n    return isNumeric(sa.c2l(v)) && (v < sMin - sTiny || v > sMax + sTiny || !isNumeric(sMin));\n  }\n  for (var i = 0; i < calcTraces.length; i++) {\n    var calcTrace = calcTraces[i];\n    var fullTrace = calcTrace[0].trace;\n    var pts = [];\n    var tozero = false;\n    var padded = false;\n    for (var j = 0; j < calcTrace.length; j++) {\n      var bar = calcTrace[j];\n      if (bar.s !== BADNUM) {\n        var scale = Math.abs(sTop / sieve.get(bar.p, bar.s));\n        bar.b *= scale;\n        bar.s *= scale;\n        var base = bar.b;\n        var top = base + bar.s;\n        bar[sLetter] = top;\n        pts.push(top);\n        padded = padded || needsPadding(top);\n        if (bar.hasB) {\n          pts.push(base);\n          padded = padded || needsPadding(base);\n        }\n        if (!bar.hasB || !bar.b) {\n          tozero = true;\n        }\n      }\n    }\n    fullTrace._extremes[sa._id] = Axes.findExtremes(sa, pts, {\n      tozero: tozero,\n      padded: padded\n    });\n  }\n}\n\n// find the full position span of bars at each position\n// for use by hover, to ensure labels move in if bars are\n// narrower than the space they're in.\n// run once per trace group (subplot & direction) and\n// the same mapping is attached to all calcdata traces\nfunction collectExtents(calcTraces, pa) {\n  var pLetter = getAxisLetter(pa);\n  var extents = {};\n  var i, j, cd;\n  var pMin = Infinity;\n  var pMax = -Infinity;\n  for (i = 0; i < calcTraces.length; i++) {\n    cd = calcTraces[i];\n    for (j = 0; j < cd.length; j++) {\n      var p = cd[j].p;\n      if (isNumeric(p)) {\n        pMin = Math.min(pMin, p);\n        pMax = Math.max(pMax, p);\n      }\n    }\n  }\n\n  // this is just for positioning of hover labels, and nobody will care if\n  // the label is 1px too far out; so round positions to 1/10K in case\n  // position values don't exactly match from trace to trace\n  var roundFactor = 10000 / (pMax - pMin);\n  var round = extents.round = function (p) {\n    return String(Math.round(roundFactor * (p - pMin)));\n  };\n  for (i = 0; i < calcTraces.length; i++) {\n    cd = calcTraces[i];\n    cd[0].t.extents = extents;\n    var poffset = cd[0].t.poffset;\n    var poffsetIsArray = Array.isArray(poffset);\n    for (j = 0; j < cd.length; j++) {\n      var di = cd[j];\n      var p0 = di[pLetter] - di.w / 2;\n      if (isNumeric(p0)) {\n        var p1 = di[pLetter] + di.w / 2;\n        var pVal = round(di.p);\n        if (extents[pVal]) {\n          extents[pVal] = [Math.min(p0, extents[pVal][0]), Math.max(p1, extents[pVal][1])];\n        } else {\n          extents[pVal] = [p0, p1];\n        }\n      }\n      di.p0 = di.p + (poffsetIsArray ? poffset[j] : poffset);\n      di.p1 = di.p0 + di.w;\n      di.s0 = di.b;\n      di.s1 = di.s0 + di.s;\n    }\n  }\n}\nfunction getAxisLetter(ax) {\n  return ax._id.charAt(0);\n}\nmodule.exports = {\n  crossTraceCalc: crossTraceCalc,\n  setGroupPositions: setGroupPositions\n};\n\n/***/ }),\n\n/***/ 90769:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2123050__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2123050__(71828);\nvar Color = __nested_webpack_require_2123050__(7901);\nvar Registry = __nested_webpack_require_2123050__(73972);\nvar handleXYDefaults = __nested_webpack_require_2123050__(67513);\nvar handlePeriodDefaults = __nested_webpack_require_2123050__(73927);\nvar handleStyleDefaults = __nested_webpack_require_2123050__(98340);\nvar handleGroupingDefaults = __nested_webpack_require_2123050__(26125);\nvar attributes = __nested_webpack_require_2123050__(1486);\nvar coerceFont = Lib.coerceFont;\nfunction supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var len = handleXYDefaults(traceIn, traceOut, layout, coerce);\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  handlePeriodDefaults(traceIn, traceOut, layout, coerce);\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  coerce('orientation', traceOut.x && !traceOut.y ? 'h' : 'v');\n  coerce('base');\n  coerce('offset');\n  coerce('width');\n  coerce('text');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  var textposition = coerce('textposition');\n  handleText(traceIn, traceOut, layout, coerce, textposition, {\n    moduleHasSelected: true,\n    moduleHasUnselected: true,\n    moduleHasConstrain: true,\n    moduleHasCliponaxis: true,\n    moduleHasTextangle: true,\n    moduleHasInsideanchor: true\n  });\n  handleStyleDefaults(traceIn, traceOut, coerce, defaultColor, layout);\n  var lineColor = (traceOut.marker.line || {}).color;\n\n  // override defaultColor for error bars with defaultLine\n  var errorBarsSupplyDefaults = Registry.getComponentMethod('errorbars', 'supplyDefaults');\n  errorBarsSupplyDefaults(traceIn, traceOut, lineColor || Color.defaultLine, {\n    axis: 'y'\n  });\n  errorBarsSupplyDefaults(traceIn, traceOut, lineColor || Color.defaultLine, {\n    axis: 'x',\n    inherit: 'y'\n  });\n  Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n}\nfunction crossTraceDefaults(fullData, fullLayout) {\n  var traceIn, traceOut;\n  function coerce(attr) {\n    return Lib.coerce(traceOut._input, traceOut, attributes, attr);\n  }\n  if (fullLayout.barmode === 'group') {\n    for (var i = 0; i < fullData.length; i++) {\n      traceOut = fullData[i];\n      if (traceOut.type === 'bar') {\n        traceIn = traceOut._input;\n        handleGroupingDefaults(traceIn, traceOut, fullLayout, coerce);\n      }\n    }\n  }\n}\nfunction handleText(traceIn, traceOut, layout, coerce, textposition, opts) {\n  opts = opts || {};\n  var moduleHasSelected = !(opts.moduleHasSelected === false);\n  var moduleHasUnselected = !(opts.moduleHasUnselected === false);\n  var moduleHasConstrain = !(opts.moduleHasConstrain === false);\n  var moduleHasCliponaxis = !(opts.moduleHasCliponaxis === false);\n  var moduleHasTextangle = !(opts.moduleHasTextangle === false);\n  var moduleHasInsideanchor = !(opts.moduleHasInsideanchor === false);\n  var hasPathbar = !!opts.hasPathbar;\n  var hasBoth = Array.isArray(textposition) || textposition === 'auto';\n  var hasInside = hasBoth || textposition === 'inside';\n  var hasOutside = hasBoth || textposition === 'outside';\n  if (hasInside || hasOutside) {\n    var dfltFont = coerceFont(coerce, 'textfont', layout.font);\n\n    // Note that coercing `insidetextfont` is always needed –\n    // even if `textposition` is `outside` for each trace – since\n    // an outside label can become an inside one, for example because\n    // of a bar being stacked on top of it.\n    var insideTextFontDefault = Lib.extendFlat({}, dfltFont);\n    var isTraceTextfontColorSet = traceIn.textfont && traceIn.textfont.color;\n    var isColorInheritedFromLayoutFont = !isTraceTextfontColorSet;\n    if (isColorInheritedFromLayoutFont) {\n      delete insideTextFontDefault.color;\n    }\n    coerceFont(coerce, 'insidetextfont', insideTextFontDefault);\n    if (hasPathbar) {\n      var pathbarTextFontDefault = Lib.extendFlat({}, dfltFont);\n      if (isColorInheritedFromLayoutFont) {\n        delete pathbarTextFontDefault.color;\n      }\n      coerceFont(coerce, 'pathbar.textfont', pathbarTextFontDefault);\n    }\n    if (hasOutside) coerceFont(coerce, 'outsidetextfont', dfltFont);\n    if (moduleHasSelected) coerce('selected.textfont.color');\n    if (moduleHasUnselected) coerce('unselected.textfont.color');\n    if (moduleHasConstrain) coerce('constraintext');\n    if (moduleHasCliponaxis) coerce('cliponaxis');\n    if (moduleHasTextangle) coerce('textangle');\n    coerce('texttemplate');\n  }\n  if (hasInside) {\n    if (moduleHasInsideanchor) coerce('insidetextanchor');\n  }\n}\nmodule.exports = {\n  supplyDefaults: supplyDefaults,\n  crossTraceDefaults: crossTraceDefaults,\n  handleText: handleText\n};\n\n/***/ }),\n\n/***/ 58065:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function eventData(out, pt, trace) {\n  // standard cartesian event data\n  out.x = 'xVal' in pt ? pt.xVal : pt.x;\n  out.y = 'yVal' in pt ? pt.yVal : pt.y;\n  if (pt.xa) out.xaxis = pt.xa;\n  if (pt.ya) out.yaxis = pt.ya;\n  if (trace.orientation === 'h') {\n    out.label = out.y;\n    out.value = out.x;\n  } else {\n    out.label = out.x;\n    out.value = out.y;\n  }\n  return out;\n};\n\n/***/ }),\n\n/***/ 69383:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_2128210__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_2128210__(92770);\nvar tinycolor = __nested_webpack_require_2128210__(84267);\nvar isArrayOrTypedArray = (__nested_webpack_require_2128210__(71828).isArrayOrTypedArray);\nexports.coerceString = function (attributeDefinition, value, defaultValue) {\n  if (typeof value === 'string') {\n    if (value || !attributeDefinition.noBlank) return value;\n  } else if (typeof value === 'number' || value === true) {\n    if (!attributeDefinition.strict) return String(value);\n  }\n  return defaultValue !== undefined ? defaultValue : attributeDefinition.dflt;\n};\nexports.coerceNumber = function (attributeDefinition, value, defaultValue) {\n  if (isNumeric(value)) {\n    value = +value;\n    var min = attributeDefinition.min;\n    var max = attributeDefinition.max;\n    var isOutOfBounds = min !== undefined && value < min || max !== undefined && value > max;\n    if (!isOutOfBounds) return value;\n  }\n  return defaultValue !== undefined ? defaultValue : attributeDefinition.dflt;\n};\nexports.coerceColor = function (attributeDefinition, value, defaultValue) {\n  if (tinycolor(value).isValid()) return value;\n  return defaultValue !== undefined ? defaultValue : attributeDefinition.dflt;\n};\nexports.coerceEnumerated = function (attributeDefinition, value, defaultValue) {\n  if (attributeDefinition.coerceNumber) value = +value;\n  if (attributeDefinition.values.indexOf(value) !== -1) return value;\n  return defaultValue !== undefined ? defaultValue : attributeDefinition.dflt;\n};\nexports.getValue = function (arrayOrScalar, index) {\n  var value;\n  if (!Array.isArray(arrayOrScalar)) value = arrayOrScalar;else if (index < arrayOrScalar.length) value = arrayOrScalar[index];\n  return value;\n};\nexports.getLineWidth = function (trace, di) {\n  var w = 0 < di.mlw ? di.mlw : !isArrayOrTypedArray(trace.marker.line.width) ? trace.marker.line.width : 0;\n  return w;\n};\n\n/***/ }),\n\n/***/ 95423:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2130164__) {\n\n\"use strict\";\n\n\nvar Fx = __nested_webpack_require_2130164__(30211);\nvar Registry = __nested_webpack_require_2130164__(73972);\nvar Color = __nested_webpack_require_2130164__(7901);\nvar fillText = (__nested_webpack_require_2130164__(71828).fillText);\nvar getLineWidth = (__nested_webpack_require_2130164__(69383).getLineWidth);\nvar hoverLabelText = (__nested_webpack_require_2130164__(89298).hoverLabelText);\nvar BADNUM = (__nested_webpack_require_2130164__(50606).BADNUM);\nfunction hoverPoints(pointData, xval, yval, hovermode, opts) {\n  var barPointData = hoverOnBars(pointData, xval, yval, hovermode, opts);\n  if (barPointData) {\n    var cd = barPointData.cd;\n    var trace = cd[0].trace;\n    var di = cd[barPointData.index];\n    barPointData.color = getTraceColor(trace, di);\n    Registry.getComponentMethod('errorbars', 'hoverInfo')(di, trace, barPointData);\n    return [barPointData];\n  }\n}\nfunction hoverOnBars(pointData, xval, yval, hovermode, opts) {\n  var cd = pointData.cd;\n  var trace = cd[0].trace;\n  var t = cd[0].t;\n  var isClosest = hovermode === 'closest';\n  var isWaterfall = trace.type === 'waterfall';\n  var maxHoverDistance = pointData.maxHoverDistance;\n  var maxSpikeDistance = pointData.maxSpikeDistance;\n  var posVal, sizeVal, posLetter, sizeLetter, dx, dy, pRangeCalc;\n  if (trace.orientation === 'h') {\n    posVal = yval;\n    sizeVal = xval;\n    posLetter = 'y';\n    sizeLetter = 'x';\n    dx = sizeFn;\n    dy = positionFn;\n  } else {\n    posVal = xval;\n    sizeVal = yval;\n    posLetter = 'x';\n    sizeLetter = 'y';\n    dy = sizeFn;\n    dx = positionFn;\n  }\n  var period = trace[posLetter + 'period'];\n  var isClosestOrPeriod = isClosest || period;\n  function thisBarMinPos(di) {\n    return thisBarExtPos(di, -1);\n  }\n  function thisBarMaxPos(di) {\n    return thisBarExtPos(di, 1);\n  }\n  function thisBarExtPos(di, sgn) {\n    var w = di.w;\n    return di[posLetter] + sgn * w / 2;\n  }\n  function periodLength(di) {\n    return di[posLetter + 'End'] - di[posLetter + 'Start'];\n  }\n  var minPos = isClosest ? thisBarMinPos : period ? function (di) {\n    return di.p - periodLength(di) / 2;\n  } : function (di) {\n    /*\n     * In compare mode, accept a bar if you're on it *or* its group.\n     * Nearly always it's the group that matters, but in case the bar\n     * was explicitly set wider than its group we'd better accept the\n     * whole bar.\n     *\n     * use `bardelta` instead of `bargroupwidth` so we accept hover\n     * in the gap. That way hover doesn't flash on and off as you\n     * mouse over the plot in compare modes.\n     * In 'closest' mode though the flashing seems inevitable,\n     * without far more complex logic\n     */\n    return Math.min(thisBarMinPos(di), di.p - t.bardelta / 2);\n  };\n  var maxPos = isClosest ? thisBarMaxPos : period ? function (di) {\n    return di.p + periodLength(di) / 2;\n  } : function (di) {\n    return Math.max(thisBarMaxPos(di), di.p + t.bardelta / 2);\n  };\n  function inbox(_minPos, _maxPos, maxDistance) {\n    if (opts.finiteRange) maxDistance = 0;\n\n    // add a little to the pseudo-distance for wider bars, so that like scatter,\n    // if you are over two overlapping bars, the narrower one wins.\n    return Fx.inbox(_minPos - posVal, _maxPos - posVal, maxDistance + Math.min(1, Math.abs(_maxPos - _minPos) / pRangeCalc) - 1);\n  }\n  function positionFn(di) {\n    return inbox(minPos(di), maxPos(di), maxHoverDistance);\n  }\n  function thisBarPositionFn(di) {\n    return inbox(thisBarMinPos(di), thisBarMaxPos(di), maxSpikeDistance);\n  }\n  function getSize(di) {\n    var s = di[sizeLetter];\n    if (isWaterfall) {\n      var rawS = Math.abs(di.rawS) || 0;\n      if (sizeVal > 0) {\n        s += rawS;\n      } else if (sizeVal < 0) {\n        s -= rawS;\n      }\n    }\n    return s;\n  }\n  function sizeFn(di) {\n    var v = sizeVal;\n    var b = di.b;\n    var s = getSize(di);\n\n    // add a gradient so hovering near the end of a\n    // bar makes it a little closer match\n    return Fx.inbox(b - v, s - v, maxHoverDistance + (s - v) / (s - b) - 1);\n  }\n  function thisBarSizeFn(di) {\n    var v = sizeVal;\n    var b = di.b;\n    var s = getSize(di);\n\n    // add a gradient so hovering near the end of a\n    // bar makes it a little closer match\n    return Fx.inbox(b - v, s - v, maxSpikeDistance + (s - v) / (s - b) - 1);\n  }\n  var pa = pointData[posLetter + 'a'];\n  var sa = pointData[sizeLetter + 'a'];\n  pRangeCalc = Math.abs(pa.r2c(pa.range[1]) - pa.r2c(pa.range[0]));\n  function dxy(di) {\n    return (dx(di) + dy(di)) / 2;\n  }\n  var distfn = Fx.getDistanceFunction(hovermode, dx, dy, dxy);\n  Fx.getClosest(cd, distfn, pointData);\n\n  // skip the rest (for this trace) if we didn't find a close point\n  if (pointData.index === false) return;\n\n  // skip points inside axis rangebreaks\n  if (cd[pointData.index].p === BADNUM) return;\n\n  // if we get here and we're not in 'closest' mode, push min/max pos back\n  // onto the group - even though that means occasionally the mouse will be\n  // over the hover label.\n  if (!isClosestOrPeriod) {\n    minPos = function (di) {\n      return Math.min(thisBarMinPos(di), di.p - t.bargroupwidth / 2);\n    };\n    maxPos = function (di) {\n      return Math.max(thisBarMaxPos(di), di.p + t.bargroupwidth / 2);\n    };\n  }\n\n  // the closest data point\n  var index = pointData.index;\n  var di = cd[index];\n  var size = trace.base ? di.b + di.s : di.s;\n  pointData[sizeLetter + '0'] = pointData[sizeLetter + '1'] = sa.c2p(di[sizeLetter], true);\n  pointData[sizeLetter + 'LabelVal'] = size;\n  var extent = t.extents[t.extents.round(di.p)];\n  pointData[posLetter + '0'] = pa.c2p(isClosest ? minPos(di) : extent[0], true);\n  pointData[posLetter + '1'] = pa.c2p(isClosest ? maxPos(di) : extent[1], true);\n  var hasPeriod = di.orig_p !== undefined;\n  pointData[posLetter + 'LabelVal'] = hasPeriod ? di.orig_p : di.p;\n  pointData.labelLabel = hoverLabelText(pa, pointData[posLetter + 'LabelVal'], trace[posLetter + 'hoverformat']);\n  pointData.valueLabel = hoverLabelText(sa, pointData[sizeLetter + 'LabelVal'], trace[sizeLetter + 'hoverformat']);\n  pointData.baseLabel = hoverLabelText(sa, di.b, trace[sizeLetter + 'hoverformat']);\n\n  // spikelines always want \"closest\" distance regardless of hovermode\n  pointData.spikeDistance = (thisBarSizeFn(di) + thisBarPositionFn(di)) / 2;\n  // they also want to point to the data value, regardless of where the label goes\n  // in case of bars shifted within groups\n  pointData[posLetter + 'Spike'] = pa.c2p(di.p, true);\n  fillText(di, trace, pointData);\n  pointData.hovertemplate = trace.hovertemplate;\n  return pointData;\n}\nfunction getTraceColor(trace, di) {\n  var mc = di.mcc || trace.marker.color;\n  var mlc = di.mlcc || trace.marker.line.color;\n  var mlw = getLineWidth(trace, di);\n  if (Color.opacity(mc)) return mc;else if (Color.opacity(mlc) && mlw) return mlc;\n}\nmodule.exports = {\n  hoverPoints: hoverPoints,\n  hoverOnBars: hoverOnBars,\n  getTraceColor: getTraceColor\n};\n\n/***/ }),\n\n/***/ 60822:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2137071__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2137071__(1486),\n  layoutAttributes: __nested_webpack_require_2137071__(43641),\n  supplyDefaults: (__nested_webpack_require_2137071__(90769).supplyDefaults),\n  crossTraceDefaults: (__nested_webpack_require_2137071__(90769).crossTraceDefaults),\n  supplyLayoutDefaults: __nested_webpack_require_2137071__(13957),\n  calc: __nested_webpack_require_2137071__(92290),\n  crossTraceCalc: (__nested_webpack_require_2137071__(11661).crossTraceCalc),\n  colorbar: __nested_webpack_require_2137071__(4898),\n  arraysToCalcdata: __nested_webpack_require_2137071__(75341),\n  plot: (__nested_webpack_require_2137071__(17295).plot),\n  style: (__nested_webpack_require_2137071__(16688).style),\n  styleOnSelect: (__nested_webpack_require_2137071__(16688).styleOnSelect),\n  hoverPoints: (__nested_webpack_require_2137071__(95423).hoverPoints),\n  eventData: __nested_webpack_require_2137071__(58065),\n  selectPoints: __nested_webpack_require_2137071__(81974),\n  moduleType: 'trace',\n  name: 'bar',\n  basePlotModule: __nested_webpack_require_2137071__(93612),\n  categories: ['bar-like', 'cartesian', 'svg', 'bar', 'oriented', 'errorBarsOK', 'showLegend', 'zoomScale'],\n  animatable: true,\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 43641:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  barmode: {\n    valType: 'enumerated',\n    values: ['stack', 'group', 'overlay', 'relative'],\n    dflt: 'group',\n    editType: 'calc'\n  },\n  barnorm: {\n    valType: 'enumerated',\n    values: ['', 'fraction', 'percent'],\n    dflt: '',\n    editType: 'calc'\n  },\n  bargap: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    editType: 'calc'\n  },\n  bargroupgap: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 0,\n    editType: 'calc'\n  }\n};\n\n/***/ }),\n\n/***/ 13957:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2138722__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_2138722__(73972);\nvar Axes = __nested_webpack_require_2138722__(89298);\nvar Lib = __nested_webpack_require_2138722__(71828);\nvar layoutAttributes = __nested_webpack_require_2138722__(43641);\nmodule.exports = function (layoutIn, layoutOut, fullData) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n  }\n  var hasBars = false;\n  var shouldBeGapless = false;\n  var gappedAnyway = false;\n  var usedSubplots = {};\n  var mode = coerce('barmode');\n  for (var i = 0; i < fullData.length; i++) {\n    var trace = fullData[i];\n    if (Registry.traceIs(trace, 'bar') && trace.visible) hasBars = true;else continue;\n\n    // if we have at least 2 grouped bar traces on the same subplot,\n    // we should default to a gap anyway, even if the data is histograms\n    if (mode === 'group') {\n      var subploti = trace.xaxis + trace.yaxis;\n      if (usedSubplots[subploti]) gappedAnyway = true;\n      usedSubplots[subploti] = true;\n    }\n    if (trace.visible && trace.type === 'histogram') {\n      var pa = Axes.getFromId({\n        _fullLayout: layoutOut\n      }, trace[trace.orientation === 'v' ? 'xaxis' : 'yaxis']);\n      if (pa.type !== 'category') shouldBeGapless = true;\n    }\n  }\n  if (!hasBars) {\n    delete layoutOut.barmode;\n    return;\n  }\n  if (mode !== 'overlay') coerce('barnorm');\n  coerce('bargap', shouldBeGapless && !gappedAnyway ? 0 : 0.2);\n  coerce('bargroupgap');\n};\n\n/***/ }),\n\n/***/ 17295:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2140247__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2140247__(39898);\nvar isNumeric = __nested_webpack_require_2140247__(92770);\nvar Lib = __nested_webpack_require_2140247__(71828);\nvar svgTextUtils = __nested_webpack_require_2140247__(63893);\nvar Color = __nested_webpack_require_2140247__(7901);\nvar Drawing = __nested_webpack_require_2140247__(91424);\nvar Registry = __nested_webpack_require_2140247__(73972);\nvar tickText = (__nested_webpack_require_2140247__(89298).tickText);\nvar uniformText = __nested_webpack_require_2140247__(72597);\nvar recordMinTextSize = uniformText.recordMinTextSize;\nvar clearMinTextSize = uniformText.clearMinTextSize;\nvar style = __nested_webpack_require_2140247__(16688);\nvar helpers = __nested_webpack_require_2140247__(69383);\nvar constants = __nested_webpack_require_2140247__(97313);\nvar attributes = __nested_webpack_require_2140247__(1486);\nvar attributeText = attributes.text;\nvar attributeTextPosition = attributes.textposition;\nvar appendArrayPointValue = (__nested_webpack_require_2140247__(23469).appendArrayPointValue);\nvar TEXTPAD = constants.TEXTPAD;\nfunction keyFunc(d) {\n  return d.id;\n}\nfunction getKeyFunc(trace) {\n  if (trace.ids) {\n    return keyFunc;\n  }\n}\nfunction dirSign(a, b) {\n  return a < b ? 1 : -1;\n}\nfunction getXY(di, xa, ya, isHorizontal) {\n  var s = [];\n  var p = [];\n  var sAxis = isHorizontal ? xa : ya;\n  var pAxis = isHorizontal ? ya : xa;\n  s[0] = sAxis.c2p(di.s0, true);\n  p[0] = pAxis.c2p(di.p0, true);\n  s[1] = sAxis.c2p(di.s1, true);\n  p[1] = pAxis.c2p(di.p1, true);\n  return isHorizontal ? [s, p] : [p, s];\n}\nfunction transition(selection, fullLayout, opts, makeOnCompleteCallback) {\n  if (!fullLayout.uniformtext.mode && hasTransition(opts)) {\n    var onComplete;\n    if (makeOnCompleteCallback) {\n      onComplete = makeOnCompleteCallback();\n    }\n    return selection.transition().duration(opts.duration).ease(opts.easing).each('end', function () {\n      onComplete && onComplete();\n    }).each('interrupt', function () {\n      onComplete && onComplete();\n    });\n  } else {\n    return selection;\n  }\n}\nfunction hasTransition(transitionOpts) {\n  return transitionOpts && transitionOpts.duration > 0;\n}\nfunction plot(gd, plotinfo, cdModule, traceLayer, opts, makeOnCompleteCallback) {\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  var fullLayout = gd._fullLayout;\n  var isStatic = gd._context.staticPlot;\n  if (!opts) {\n    opts = {\n      mode: fullLayout.barmode,\n      norm: fullLayout.barmode,\n      gap: fullLayout.bargap,\n      groupgap: fullLayout.bargroupgap\n    };\n\n    // don't clear bar when this is called from waterfall or funnel\n    clearMinTextSize('bar', fullLayout);\n  }\n  var bartraces = Lib.makeTraceGroups(traceLayer, cdModule, 'trace bars').each(function (cd) {\n    var plotGroup = d3.select(this);\n    var trace = cd[0].trace;\n    var isWaterfall = trace.type === 'waterfall';\n    var isFunnel = trace.type === 'funnel';\n    var isBar = trace.type === 'bar';\n    var shouldDisplayZeros = isBar || isFunnel;\n    var adjustPixel = 0;\n    if (isWaterfall && trace.connector.visible && trace.connector.mode === 'between') {\n      adjustPixel = trace.connector.line.width / 2;\n    }\n    var isHorizontal = trace.orientation === 'h';\n    var withTransition = hasTransition(opts);\n    var pointGroup = Lib.ensureSingle(plotGroup, 'g', 'points');\n    var keyFunc = getKeyFunc(trace);\n    var bars = pointGroup.selectAll('g.point').data(Lib.identity, keyFunc);\n    bars.enter().append('g').classed('point', true);\n    bars.exit().remove();\n    bars.each(function (di, i) {\n      var bar = d3.select(this);\n\n      // now display the bar\n      // clipped xf/yf (2nd arg true): non-positive\n      // log values go off-screen by plotwidth\n      // so you see them continue if you drag the plot\n      var xy = getXY(di, xa, ya, isHorizontal);\n      var x0 = xy[0][0];\n      var x1 = xy[0][1];\n      var y0 = xy[1][0];\n      var y1 = xy[1][1];\n\n      // empty bars\n      var isBlank = (isHorizontal ? x1 - x0 : y1 - y0) === 0;\n\n      // display zeros if line.width > 0\n      if (isBlank && shouldDisplayZeros && helpers.getLineWidth(trace, di)) {\n        isBlank = false;\n      }\n\n      // skip nulls\n      if (!isBlank) {\n        isBlank = !isNumeric(x0) || !isNumeric(x1) || !isNumeric(y0) || !isNumeric(y1);\n      }\n\n      // record isBlank\n      di.isBlank = isBlank;\n\n      // for blank bars, ensure start and end positions are equal - important for smooth transitions\n      if (isBlank) {\n        if (isHorizontal) {\n          x1 = x0;\n        } else {\n          y1 = y0;\n        }\n      }\n\n      // in waterfall mode `between` we need to adjust bar end points to match the connector width\n      if (adjustPixel && !isBlank) {\n        if (isHorizontal) {\n          x0 -= dirSign(x0, x1) * adjustPixel;\n          x1 += dirSign(x0, x1) * adjustPixel;\n        } else {\n          y0 -= dirSign(y0, y1) * adjustPixel;\n          y1 += dirSign(y0, y1) * adjustPixel;\n        }\n      }\n      var lw;\n      var mc;\n      if (trace.type === 'waterfall') {\n        if (!isBlank) {\n          var cont = trace[di.dir].marker;\n          lw = cont.line.width;\n          mc = cont.color;\n        }\n      } else {\n        lw = helpers.getLineWidth(trace, di);\n        mc = di.mc || trace.marker.color;\n      }\n      function roundWithLine(v) {\n        var offset = d3.round(lw / 2 % 1, 2);\n\n        // if there are explicit gaps, don't round,\n        // it can make the gaps look crappy\n        return opts.gap === 0 && opts.groupgap === 0 ? d3.round(Math.round(v) - offset, 2) : v;\n      }\n      function expandToVisible(v, vc, hideZeroSpan) {\n        if (hideZeroSpan && v === vc) {\n          // should not expand zero span bars\n          // when start and end positions are identical\n          // i.e. for vertical when y0 === y1\n          // and for horizontal when x0 === x1\n          return v;\n        }\n\n        // if it's not in danger of disappearing entirely,\n        // round more precisely\n        return Math.abs(v - vc) >= 2 ? roundWithLine(v) :\n        // but if it's very thin, expand it so it's\n        // necessarily visible, even if it might overlap\n        // its neighbor\n        v > vc ? Math.ceil(v) : Math.floor(v);\n      }\n      if (!gd._context.staticPlot) {\n        // if bars are not fully opaque or they have a line\n        // around them, round to integer pixels, mainly for\n        // safari so we prevent overlaps from its expansive\n        // pixelation. if the bars ARE fully opaque and have\n        // no line, expand to a full pixel to make sure we\n        // can see them\n\n        var op = Color.opacity(mc);\n        var fixpx = op < 1 || lw > 0.01 ? roundWithLine : expandToVisible;\n        x0 = fixpx(x0, x1, isHorizontal);\n        x1 = fixpx(x1, x0, isHorizontal);\n        y0 = fixpx(y0, y1, !isHorizontal);\n        y1 = fixpx(y1, y0, !isHorizontal);\n      }\n      var sel = transition(Lib.ensureSingle(bar, 'path'), fullLayout, opts, makeOnCompleteCallback);\n      sel.style('vector-effect', isStatic ? 'none' : 'non-scaling-stroke').attr('d', isNaN((x1 - x0) * (y1 - y0)) || isBlank && gd._context.staticPlot ? 'M0,0Z' : 'M' + x0 + ',' + y0 + 'V' + y1 + 'H' + x1 + 'V' + y0 + 'Z').call(Drawing.setClipUrl, plotinfo.layerClipId, gd);\n      if (!fullLayout.uniformtext.mode && withTransition) {\n        var styleFns = Drawing.makePointStyleFns(trace);\n        Drawing.singlePointStyle(di, sel, trace, styleFns, gd);\n      }\n      appendBarText(gd, plotinfo, bar, cd, i, x0, x1, y0, y1, opts, makeOnCompleteCallback);\n      if (plotinfo.layerClipId) {\n        Drawing.hideOutsideRangePoint(di, bar.select('text'), xa, ya, trace.xcalendar, trace.ycalendar);\n      }\n    });\n\n    // lastly, clip points groups of `cliponaxis !== false` traces\n    // on `plotinfo._hasClipOnAxisFalse === true` subplots\n    var hasClipOnAxisFalse = trace.cliponaxis === false;\n    Drawing.setClipUrl(plotGroup, hasClipOnAxisFalse ? null : plotinfo.layerClipId, gd);\n  });\n\n  // error bars are on the top\n  Registry.getComponentMethod('errorbars', 'plot')(gd, bartraces, plotinfo, opts);\n}\nfunction appendBarText(gd, plotinfo, bar, cd, i, x0, x1, y0, y1, opts, makeOnCompleteCallback) {\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  var fullLayout = gd._fullLayout;\n  var textPosition;\n  function appendTextNode(bar, text, font) {\n    var textSelection = Lib.ensureSingle(bar, 'text').text(text).attr({\n      'class': 'bartext bartext-' + textPosition,\n      'text-anchor': 'middle',\n      // prohibit tex interpretation until we can handle\n      // tex and regular text together\n      'data-notex': 1\n    }).call(Drawing.font, font).call(svgTextUtils.convertToTspans, gd);\n    return textSelection;\n  }\n\n  // get trace attributes\n  var trace = cd[0].trace;\n  var isHorizontal = trace.orientation === 'h';\n  var text = getText(fullLayout, cd, i, xa, ya);\n  textPosition = getTextPosition(trace, i);\n\n  // compute text position\n  var inStackOrRelativeMode = opts.mode === 'stack' || opts.mode === 'relative';\n  var calcBar = cd[i];\n  var isOutmostBar = !inStackOrRelativeMode || calcBar._outmost;\n  if (!text || textPosition === 'none' || (calcBar.isBlank || x0 === x1 || y0 === y1) && (textPosition === 'auto' || textPosition === 'inside')) {\n    bar.select('text').remove();\n    return;\n  }\n  var layoutFont = fullLayout.font;\n  var barColor = style.getBarColor(cd[i], trace);\n  var insideTextFont = style.getInsideTextFont(trace, i, layoutFont, barColor);\n  var outsideTextFont = style.getOutsideTextFont(trace, i, layoutFont);\n\n  // Special case: don't use the c2p(v, true) value on log size axes,\n  // so that we can get correctly inside text scaling\n  var di = bar.datum();\n  if (isHorizontal) {\n    if (xa.type === 'log' && di.s0 <= 0) {\n      if (xa.range[0] < xa.range[1]) {\n        x0 = 0;\n      } else {\n        x0 = xa._length;\n      }\n    }\n  } else {\n    if (ya.type === 'log' && di.s0 <= 0) {\n      if (ya.range[0] < ya.range[1]) {\n        y0 = ya._length;\n      } else {\n        y0 = 0;\n      }\n    }\n  }\n\n  // padding excluded\n  var barWidth = Math.abs(x1 - x0) - 2 * TEXTPAD;\n  var barHeight = Math.abs(y1 - y0) - 2 * TEXTPAD;\n  var textSelection;\n  var textBB;\n  var textWidth;\n  var textHeight;\n  var font;\n  if (textPosition === 'outside') {\n    if (!isOutmostBar && !calcBar.hasB) textPosition = 'inside';\n  }\n  if (textPosition === 'auto') {\n    if (isOutmostBar) {\n      // draw text using insideTextFont and check if it fits inside bar\n      textPosition = 'inside';\n      font = Lib.ensureUniformFontSize(gd, insideTextFont);\n      textSelection = appendTextNode(bar, text, font);\n      textBB = Drawing.bBox(textSelection.node()), textWidth = textBB.width, textHeight = textBB.height;\n      var textHasSize = textWidth > 0 && textHeight > 0;\n      var fitsInside = textWidth <= barWidth && textHeight <= barHeight;\n      var fitsInsideIfRotated = textWidth <= barHeight && textHeight <= barWidth;\n      var fitsInsideIfShrunk = isHorizontal ? barWidth >= textWidth * (barHeight / textHeight) : barHeight >= textHeight * (barWidth / textWidth);\n      if (textHasSize && (fitsInside || fitsInsideIfRotated || fitsInsideIfShrunk)) {\n        textPosition = 'inside';\n      } else {\n        textPosition = 'outside';\n        textSelection.remove();\n        textSelection = null;\n      }\n    } else {\n      textPosition = 'inside';\n    }\n  }\n  if (!textSelection) {\n    font = Lib.ensureUniformFontSize(gd, textPosition === 'outside' ? outsideTextFont : insideTextFont);\n    textSelection = appendTextNode(bar, text, font);\n    var currentTransform = textSelection.attr('transform');\n    textSelection.attr('transform', '');\n    textBB = Drawing.bBox(textSelection.node()), textWidth = textBB.width, textHeight = textBB.height;\n    textSelection.attr('transform', currentTransform);\n    if (textWidth <= 0 || textHeight <= 0) {\n      textSelection.remove();\n      return;\n    }\n  }\n  var angle = trace.textangle;\n\n  // compute text transform\n  var transform, constrained;\n  if (textPosition === 'outside') {\n    constrained = trace.constraintext === 'both' || trace.constraintext === 'outside';\n    transform = toMoveOutsideBar(x0, x1, y0, y1, textBB, {\n      isHorizontal: isHorizontal,\n      constrained: constrained,\n      angle: angle\n    });\n  } else {\n    constrained = trace.constraintext === 'both' || trace.constraintext === 'inside';\n    transform = toMoveInsideBar(x0, x1, y0, y1, textBB, {\n      isHorizontal: isHorizontal,\n      constrained: constrained,\n      angle: angle,\n      anchor: trace.insidetextanchor\n    });\n  }\n  transform.fontSize = font.size;\n  recordMinTextSize(trace.type === 'histogram' ? 'bar' : trace.type, transform, fullLayout);\n  calcBar.transform = transform;\n  var s = transition(textSelection, fullLayout, opts, makeOnCompleteCallback);\n  Lib.setTransormAndDisplay(s, transform);\n}\nfunction getRotateFromAngle(angle) {\n  return angle === 'auto' ? 0 : angle;\n}\nfunction getRotatedTextSize(textBB, rotate) {\n  var a = Math.PI / 180 * rotate;\n  var absSin = Math.abs(Math.sin(a));\n  var absCos = Math.abs(Math.cos(a));\n  return {\n    x: textBB.width * absCos + textBB.height * absSin,\n    y: textBB.width * absSin + textBB.height * absCos\n  };\n}\nfunction toMoveInsideBar(x0, x1, y0, y1, textBB, opts) {\n  var isHorizontal = !!opts.isHorizontal;\n  var constrained = !!opts.constrained;\n  var angle = opts.angle || 0;\n  var anchor = opts.anchor || 'end';\n  var isEnd = anchor === 'end';\n  var isStart = anchor === 'start';\n  var leftToRight = opts.leftToRight || 0; // left: -1, center: 0, right: 1\n  var toRight = (leftToRight + 1) / 2;\n  var toLeft = 1 - toRight;\n  var textWidth = textBB.width;\n  var textHeight = textBB.height;\n  var lx = Math.abs(x1 - x0);\n  var ly = Math.abs(y1 - y0);\n\n  // compute remaining space\n  var textpad = lx > 2 * TEXTPAD && ly > 2 * TEXTPAD ? TEXTPAD : 0;\n  lx -= 2 * textpad;\n  ly -= 2 * textpad;\n  var rotate = getRotateFromAngle(angle);\n  if (angle === 'auto' && !(textWidth <= lx && textHeight <= ly) && (textWidth > lx || textHeight > ly) && (!(textWidth > ly || textHeight > lx) || textWidth < textHeight !== lx < ly)) {\n    rotate += 90;\n  }\n  var t = getRotatedTextSize(textBB, rotate);\n  var scale = 1;\n  if (constrained) {\n    scale = Math.min(1, lx / t.x, ly / t.y);\n  }\n\n  // compute text and target positions\n  var textX = textBB.left * toLeft + textBB.right * toRight;\n  var textY = (textBB.top + textBB.bottom) / 2;\n  var targetX = (x0 + TEXTPAD) * toLeft + (x1 - TEXTPAD) * toRight;\n  var targetY = (y0 + y1) / 2;\n  var anchorX = 0;\n  var anchorY = 0;\n  if (isStart || isEnd) {\n    var extrapad = (isHorizontal ? t.x : t.y) / 2;\n    var dir = isHorizontal ? dirSign(x0, x1) : dirSign(y0, y1);\n    if (isHorizontal) {\n      if (isStart) {\n        targetX = x0 + dir * textpad;\n        anchorX = -dir * extrapad;\n      } else {\n        targetX = x1 - dir * textpad;\n        anchorX = dir * extrapad;\n      }\n    } else {\n      if (isStart) {\n        targetY = y0 + dir * textpad;\n        anchorY = -dir * extrapad;\n      } else {\n        targetY = y1 - dir * textpad;\n        anchorY = dir * extrapad;\n      }\n    }\n  }\n  return {\n    textX: textX,\n    textY: textY,\n    targetX: targetX,\n    targetY: targetY,\n    anchorX: anchorX,\n    anchorY: anchorY,\n    scale: scale,\n    rotate: rotate\n  };\n}\nfunction toMoveOutsideBar(x0, x1, y0, y1, textBB, opts) {\n  var isHorizontal = !!opts.isHorizontal;\n  var constrained = !!opts.constrained;\n  var angle = opts.angle || 0;\n  var textWidth = textBB.width;\n  var textHeight = textBB.height;\n  var lx = Math.abs(x1 - x0);\n  var ly = Math.abs(y1 - y0);\n  var textpad;\n  // Keep the padding so the text doesn't sit right against\n  // the bars, but don't factor it into barWidth\n  if (isHorizontal) {\n    textpad = ly > 2 * TEXTPAD ? TEXTPAD : 0;\n  } else {\n    textpad = lx > 2 * TEXTPAD ? TEXTPAD : 0;\n  }\n\n  // compute rotate and scale\n  var scale = 1;\n  if (constrained) {\n    scale = isHorizontal ? Math.min(1, ly / textHeight) : Math.min(1, lx / textWidth);\n  }\n  var rotate = getRotateFromAngle(angle);\n  var t = getRotatedTextSize(textBB, rotate);\n\n  // compute text and target positions\n  var extrapad = (isHorizontal ? t.x : t.y) / 2;\n  var textX = (textBB.left + textBB.right) / 2;\n  var textY = (textBB.top + textBB.bottom) / 2;\n  var targetX = (x0 + x1) / 2;\n  var targetY = (y0 + y1) / 2;\n  var anchorX = 0;\n  var anchorY = 0;\n  var dir = isHorizontal ? dirSign(x1, x0) : dirSign(y0, y1);\n  if (isHorizontal) {\n    targetX = x1 - dir * textpad;\n    anchorX = dir * extrapad;\n  } else {\n    targetY = y1 + dir * textpad;\n    anchorY = -dir * extrapad;\n  }\n  return {\n    textX: textX,\n    textY: textY,\n    targetX: targetX,\n    targetY: targetY,\n    anchorX: anchorX,\n    anchorY: anchorY,\n    scale: scale,\n    rotate: rotate\n  };\n}\nfunction getText(fullLayout, cd, index, xa, ya) {\n  var trace = cd[0].trace;\n  var texttemplate = trace.texttemplate;\n  var value;\n  if (texttemplate) {\n    value = calcTexttemplate(fullLayout, cd, index, xa, ya);\n  } else if (trace.textinfo) {\n    value = calcTextinfo(cd, index, xa, ya);\n  } else {\n    value = helpers.getValue(trace.text, index);\n  }\n  return helpers.coerceString(attributeText, value);\n}\nfunction getTextPosition(trace, index) {\n  var value = helpers.getValue(trace.textposition, index);\n  return helpers.coerceEnumerated(attributeTextPosition, value);\n}\nfunction calcTexttemplate(fullLayout, cd, index, xa, ya) {\n  var trace = cd[0].trace;\n  var texttemplate = Lib.castOption(trace, index, 'texttemplate');\n  if (!texttemplate) return '';\n  var isHistogram = trace.type === 'histogram';\n  var isWaterfall = trace.type === 'waterfall';\n  var isFunnel = trace.type === 'funnel';\n  var isHorizontal = trace.orientation === 'h';\n  var pLetter, pAxis;\n  var vLetter, vAxis;\n  if (isHorizontal) {\n    pLetter = 'y';\n    pAxis = ya;\n    vLetter = 'x';\n    vAxis = xa;\n  } else {\n    pLetter = 'x';\n    pAxis = xa;\n    vLetter = 'y';\n    vAxis = ya;\n  }\n  function formatLabel(u) {\n    return tickText(pAxis, pAxis.c2l(u), true).text;\n  }\n  function formatNumber(v) {\n    return tickText(vAxis, vAxis.c2l(v), true).text;\n  }\n  var cdi = cd[index];\n  var obj = {};\n  obj.label = cdi.p;\n  obj.labelLabel = obj[pLetter + 'Label'] = formatLabel(cdi.p);\n  var tx = Lib.castOption(trace, cdi.i, 'text');\n  if (tx === 0 || tx) obj.text = tx;\n  obj.value = cdi.s;\n  obj.valueLabel = obj[vLetter + 'Label'] = formatNumber(cdi.s);\n  var pt = {};\n  appendArrayPointValue(pt, trace, cdi.i);\n  if (isHistogram || pt.x === undefined) pt.x = isHorizontal ? obj.value : obj.label;\n  if (isHistogram || pt.y === undefined) pt.y = isHorizontal ? obj.label : obj.value;\n  if (isHistogram || pt.xLabel === undefined) pt.xLabel = isHorizontal ? obj.valueLabel : obj.labelLabel;\n  if (isHistogram || pt.yLabel === undefined) pt.yLabel = isHorizontal ? obj.labelLabel : obj.valueLabel;\n  if (isWaterfall) {\n    obj.delta = +cdi.rawS || cdi.s;\n    obj.deltaLabel = formatNumber(obj.delta);\n    obj.final = cdi.v;\n    obj.finalLabel = formatNumber(obj.final);\n    obj.initial = obj.final - obj.delta;\n    obj.initialLabel = formatNumber(obj.initial);\n  }\n  if (isFunnel) {\n    obj.value = cdi.s;\n    obj.valueLabel = formatNumber(obj.value);\n    obj.percentInitial = cdi.begR;\n    obj.percentInitialLabel = Lib.formatPercent(cdi.begR);\n    obj.percentPrevious = cdi.difR;\n    obj.percentPreviousLabel = Lib.formatPercent(cdi.difR);\n    obj.percentTotal = cdi.sumR;\n    obj.percenTotalLabel = Lib.formatPercent(cdi.sumR);\n  }\n  var customdata = Lib.castOption(trace, cdi.i, 'customdata');\n  if (customdata) obj.customdata = customdata;\n  return Lib.texttemplateString(texttemplate, obj, fullLayout._d3locale, pt, obj, trace._meta || {});\n}\nfunction calcTextinfo(cd, index, xa, ya) {\n  var trace = cd[0].trace;\n  var isHorizontal = trace.orientation === 'h';\n  var isWaterfall = trace.type === 'waterfall';\n  var isFunnel = trace.type === 'funnel';\n  function formatLabel(u) {\n    var pAxis = isHorizontal ? ya : xa;\n    return tickText(pAxis, u, true).text;\n  }\n  function formatNumber(v) {\n    var sAxis = isHorizontal ? xa : ya;\n    return tickText(sAxis, +v, true).text;\n  }\n  var textinfo = trace.textinfo;\n  var cdi = cd[index];\n  var parts = textinfo.split('+');\n  var text = [];\n  var tx;\n  var hasFlag = function (flag) {\n    return parts.indexOf(flag) !== -1;\n  };\n  if (hasFlag('label')) {\n    text.push(formatLabel(cd[index].p));\n  }\n  if (hasFlag('text')) {\n    tx = Lib.castOption(trace, cdi.i, 'text');\n    if (tx === 0 || tx) text.push(tx);\n  }\n  if (isWaterfall) {\n    var delta = +cdi.rawS || cdi.s;\n    var final = cdi.v;\n    var initial = final - delta;\n    if (hasFlag('initial')) text.push(formatNumber(initial));\n    if (hasFlag('delta')) text.push(formatNumber(delta));\n    if (hasFlag('final')) text.push(formatNumber(final));\n  }\n  if (isFunnel) {\n    if (hasFlag('value')) text.push(formatNumber(cdi.s));\n    var nPercent = 0;\n    if (hasFlag('percent initial')) nPercent++;\n    if (hasFlag('percent previous')) nPercent++;\n    if (hasFlag('percent total')) nPercent++;\n    var hasMultiplePercents = nPercent > 1;\n    if (hasFlag('percent initial')) {\n      tx = Lib.formatPercent(cdi.begR);\n      if (hasMultiplePercents) tx += ' of initial';\n      text.push(tx);\n    }\n    if (hasFlag('percent previous')) {\n      tx = Lib.formatPercent(cdi.difR);\n      if (hasMultiplePercents) tx += ' of previous';\n      text.push(tx);\n    }\n    if (hasFlag('percent total')) {\n      tx = Lib.formatPercent(cdi.sumR);\n      if (hasMultiplePercents) tx += ' of total';\n      text.push(tx);\n    }\n  }\n  return text.join('<br>');\n}\nmodule.exports = {\n  plot: plot,\n  toMoveInsideBar: toMoveInsideBar\n};\n\n/***/ }),\n\n/***/ 81974:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function selectPoints(searchInfo, selectionTester) {\n  var cd = searchInfo.cd;\n  var xa = searchInfo.xaxis;\n  var ya = searchInfo.yaxis;\n  var trace = cd[0].trace;\n  var isFunnel = trace.type === 'funnel';\n  var isHorizontal = trace.orientation === 'h';\n  var selection = [];\n  var i;\n  if (selectionTester === false) {\n    // clear selection\n    for (i = 0; i < cd.length; i++) {\n      cd[i].selected = 0;\n    }\n  } else {\n    for (i = 0; i < cd.length; i++) {\n      var di = cd[i];\n      var ct = 'ct' in di ? di.ct : getCentroid(di, xa, ya, isHorizontal, isFunnel);\n      if (selectionTester.contains(ct, false, i, searchInfo)) {\n        selection.push({\n          pointNumber: i,\n          x: xa.c2d(di.x),\n          y: ya.c2d(di.y)\n        });\n        di.selected = 1;\n      } else {\n        di.selected = 0;\n      }\n    }\n  }\n  return selection;\n};\nfunction getCentroid(d, xa, ya, isHorizontal, isFunnel) {\n  var x0 = xa.c2p(isHorizontal ? d.s0 : d.p0, true);\n  var x1 = xa.c2p(isHorizontal ? d.s1 : d.p1, true);\n  var y0 = ya.c2p(isHorizontal ? d.p0 : d.s0, true);\n  var y1 = ya.c2p(isHorizontal ? d.p1 : d.s1, true);\n  if (isFunnel) {\n    return [(x0 + x1) / 2, (y0 + y1) / 2];\n  } else {\n    if (isHorizontal) {\n      return [x1, (y0 + y1) / 2];\n    } else {\n      return [(x0 + x1) / 2, y1];\n    }\n  }\n}\n\n/***/ }),\n\n/***/ 61546:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2163238__) {\n\n\"use strict\";\n\n\nmodule.exports = Sieve;\nvar distinctVals = (__nested_webpack_require_2163238__(71828).distinctVals);\n\n/**\n * Helper class to sieve data from traces into bins\n *\n * @class\n *\n * @param {Array} traces\n*   Array of calculated traces\n * @param {object} opts\n *  - @param {boolean} [sepNegVal]\n *      If true, then split data at the same position into a bar\n *      for positive values and another for negative values\n *  - @param {boolean} [overlapNoMerge]\n *     If true, then don't merge overlapping bars into a single bar\n */\nfunction Sieve(traces, opts) {\n  this.traces = traces;\n  this.sepNegVal = opts.sepNegVal;\n  this.overlapNoMerge = opts.overlapNoMerge;\n\n  // for single-bin histograms - see histogram/calc\n  var width1 = Infinity;\n  var axLetter = opts.posAxis._id.charAt(0);\n  var positions = [];\n  for (var i = 0; i < traces.length; i++) {\n    var trace = traces[i];\n    for (var j = 0; j < trace.length; j++) {\n      var bar = trace[j];\n      var pos = bar.p;\n      if (pos === undefined) {\n        pos = bar[axLetter];\n      }\n      if (pos !== undefined) positions.push(pos);\n    }\n    if (trace[0] && trace[0].width1) {\n      width1 = Math.min(trace[0].width1, width1);\n    }\n  }\n  this.positions = positions;\n  var dv = distinctVals(positions);\n  this.distinctPositions = dv.vals;\n  if (dv.vals.length === 1 && width1 !== Infinity) this.minDiff = width1;else this.minDiff = Math.min(dv.minDiff, width1);\n  var type = (opts.posAxis || {}).type;\n  if (type === 'category' || type === 'multicategory') {\n    this.minDiff = 1;\n  }\n  this.binWidth = this.minDiff;\n  this.bins = {};\n}\n\n/**\n * Sieve datum\n *\n * @method\n * @param {number} position\n * @param {number} value\n * @returns {number} Previous bin value\n */\nSieve.prototype.put = function put(position, value) {\n  var label = this.getLabel(position, value);\n  var oldValue = this.bins[label] || 0;\n  this.bins[label] = oldValue + value;\n  return oldValue;\n};\n\n/**\n * Get current bin value for a given datum\n *\n * @method\n * @param {number} position  Position of datum\n * @param {number} [value]   Value of datum\n *                           (required if this.sepNegVal is true)\n * @returns {number} Current bin value\n */\nSieve.prototype.get = function get(position, value) {\n  var label = this.getLabel(position, value);\n  return this.bins[label] || 0;\n};\n\n/**\n * Get bin label for a given datum\n *\n * @method\n * @param {number} position  Position of datum\n * @param {number} [value]   Value of datum\n *                           (required if this.sepNegVal is true)\n * @returns {string} Bin label\n * (prefixed with a 'v' if value is negative and this.sepNegVal is\n * true; otherwise prefixed with '^')\n */\nSieve.prototype.getLabel = function getLabel(position, value) {\n  var prefix = value < 0 && this.sepNegVal ? 'v' : '^';\n  var label = this.overlapNoMerge ? position : Math.round(position / this.binWidth);\n  return prefix + label;\n};\n\n/***/ }),\n\n/***/ 16688:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2166245__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2166245__(39898);\nvar Color = __nested_webpack_require_2166245__(7901);\nvar Drawing = __nested_webpack_require_2166245__(91424);\nvar Lib = __nested_webpack_require_2166245__(71828);\nvar Registry = __nested_webpack_require_2166245__(73972);\nvar resizeText = (__nested_webpack_require_2166245__(72597).resizeText);\nvar attributes = __nested_webpack_require_2166245__(1486);\nvar attributeTextFont = attributes.textfont;\nvar attributeInsideTextFont = attributes.insidetextfont;\nvar attributeOutsideTextFont = attributes.outsidetextfont;\nvar helpers = __nested_webpack_require_2166245__(69383);\nfunction style(gd) {\n  var s = d3.select(gd).selectAll('g.barlayer').selectAll('g.trace');\n  resizeText(gd, s, 'bar');\n  var barcount = s.size();\n  var fullLayout = gd._fullLayout;\n\n  // trace styling\n  s.style('opacity', function (d) {\n    return d[0].trace.opacity;\n  })\n\n  // for gapless (either stacked or neighboring grouped) bars use\n  // crispEdges to turn off antialiasing so an artificial gap\n  // isn't introduced.\n  .each(function (d) {\n    if (fullLayout.barmode === 'stack' && barcount > 1 || fullLayout.bargap === 0 && fullLayout.bargroupgap === 0 && !d[0].trace.marker.line.width) {\n      d3.select(this).attr('shape-rendering', 'crispEdges');\n    }\n  });\n  s.selectAll('g.points').each(function (d) {\n    var sel = d3.select(this);\n    var trace = d[0].trace;\n    stylePoints(sel, trace, gd);\n  });\n  Registry.getComponentMethod('errorbars', 'style')(s);\n}\nfunction stylePoints(sel, trace, gd) {\n  Drawing.pointStyle(sel.selectAll('path'), trace, gd);\n  styleTextPoints(sel, trace, gd);\n}\nfunction styleTextPoints(sel, trace, gd) {\n  sel.selectAll('text').each(function (d) {\n    var tx = d3.select(this);\n    var font = Lib.ensureUniformFontSize(gd, determineFont(tx, d, trace, gd));\n    Drawing.font(tx, font);\n  });\n}\nfunction styleOnSelect(gd, cd, sel) {\n  var trace = cd[0].trace;\n  if (trace.selectedpoints) {\n    stylePointsInSelectionMode(sel, trace, gd);\n  } else {\n    stylePoints(sel, trace, gd);\n    Registry.getComponentMethod('errorbars', 'style')(sel);\n  }\n}\nfunction stylePointsInSelectionMode(s, trace, gd) {\n  Drawing.selectedPointStyle(s.selectAll('path'), trace);\n  styleTextInSelectionMode(s.selectAll('text'), trace, gd);\n}\nfunction styleTextInSelectionMode(txs, trace, gd) {\n  txs.each(function (d) {\n    var tx = d3.select(this);\n    var font;\n    if (d.selected) {\n      font = Lib.ensureUniformFontSize(gd, determineFont(tx, d, trace, gd));\n      var selectedFontColor = trace.selected.textfont && trace.selected.textfont.color;\n      if (selectedFontColor) {\n        font.color = selectedFontColor;\n      }\n      Drawing.font(tx, font);\n    } else {\n      Drawing.selectedTextStyle(tx, trace);\n    }\n  });\n}\nfunction determineFont(tx, d, trace, gd) {\n  var layoutFont = gd._fullLayout.font;\n  var textFont = trace.textfont;\n  if (tx.classed('bartext-inside')) {\n    var barColor = getBarColor(d, trace);\n    textFont = getInsideTextFont(trace, d.i, layoutFont, barColor);\n  } else if (tx.classed('bartext-outside')) {\n    textFont = getOutsideTextFont(trace, d.i, layoutFont);\n  }\n  return textFont;\n}\nfunction getTextFont(trace, index, defaultValue) {\n  return getFontValue(attributeTextFont, trace.textfont, index, defaultValue);\n}\nfunction getInsideTextFont(trace, index, layoutFont, barColor) {\n  var defaultFont = getTextFont(trace, index, layoutFont);\n  var wouldFallBackToLayoutFont = trace._input.textfont === undefined || trace._input.textfont.color === undefined || Array.isArray(trace.textfont.color) && trace.textfont.color[index] === undefined;\n  if (wouldFallBackToLayoutFont) {\n    defaultFont = {\n      color: Color.contrast(barColor),\n      family: defaultFont.family,\n      size: defaultFont.size\n    };\n  }\n  return getFontValue(attributeInsideTextFont, trace.insidetextfont, index, defaultFont);\n}\nfunction getOutsideTextFont(trace, index, layoutFont) {\n  var defaultFont = getTextFont(trace, index, layoutFont);\n  return getFontValue(attributeOutsideTextFont, trace.outsidetextfont, index, defaultFont);\n}\nfunction getFontValue(attributeDefinition, attributeValue, index, defaultValue) {\n  attributeValue = attributeValue || {};\n  var familyValue = helpers.getValue(attributeValue.family, index);\n  var sizeValue = helpers.getValue(attributeValue.size, index);\n  var colorValue = helpers.getValue(attributeValue.color, index);\n  return {\n    family: helpers.coerceString(attributeDefinition.family, familyValue, defaultValue.family),\n    size: helpers.coerceNumber(attributeDefinition.size, sizeValue, defaultValue.size),\n    color: helpers.coerceColor(attributeDefinition.color, colorValue, defaultValue.color)\n  };\n}\nfunction getBarColor(cd, trace) {\n  if (trace.type === 'waterfall') {\n    return trace[cd.dir].marker.color;\n  }\n  return cd.mcc || cd.mc || trace.marker.color;\n}\nmodule.exports = {\n  style: style,\n  styleTextPoints: styleTextPoints,\n  styleOnSelect: styleOnSelect,\n  getInsideTextFont: getInsideTextFont,\n  getOutsideTextFont: getOutsideTextFont,\n  getBarColor: getBarColor,\n  resizeText: resizeText\n};\n\n/***/ }),\n\n/***/ 98340:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2171351__) {\n\n\"use strict\";\n\n\nvar Color = __nested_webpack_require_2171351__(7901);\nvar hasColorscale = (__nested_webpack_require_2171351__(52075).hasColorscale);\nvar colorscaleDefaults = __nested_webpack_require_2171351__(1586);\nvar coercePattern = (__nested_webpack_require_2171351__(71828).coercePattern);\nmodule.exports = function handleStyleDefaults(traceIn, traceOut, coerce, defaultColor, layout) {\n  var markerColor = coerce('marker.color', defaultColor);\n  var hasMarkerColorscale = hasColorscale(traceIn, 'marker');\n  if (hasMarkerColorscale) {\n    colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n      prefix: 'marker.',\n      cLetter: 'c'\n    });\n  }\n  coerce('marker.line.color', Color.defaultLine);\n  if (hasColorscale(traceIn, 'marker.line')) {\n    colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n      prefix: 'marker.line.',\n      cLetter: 'c'\n    });\n  }\n  coerce('marker.line.width');\n  coerce('marker.opacity');\n  coercePattern(coerce, 'marker.pattern', markerColor, hasMarkerColorscale);\n  coerce('selected.marker.color');\n  coerce('unselected.marker.color');\n};\n\n/***/ }),\n\n/***/ 72597:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2172476__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2172476__(39898);\nvar Lib = __nested_webpack_require_2172476__(71828);\nfunction resizeText(gd, gTrace, traceType) {\n  var fullLayout = gd._fullLayout;\n  var minSize = fullLayout['_' + traceType + 'Text_minsize'];\n  if (minSize) {\n    var shouldHide = fullLayout.uniformtext.mode === 'hide';\n    var selector;\n    switch (traceType) {\n      case 'funnelarea':\n      case 'pie':\n      case 'sunburst':\n        selector = 'g.slice';\n        break;\n      case 'treemap':\n      case 'icicle':\n        selector = 'g.slice, g.pathbar';\n        break;\n      default:\n        selector = 'g.points > g.point';\n    }\n    gTrace.selectAll(selector).each(function (d) {\n      var transform = d.transform;\n      if (transform) {\n        transform.scale = shouldHide && transform.hide ? 0 : minSize / transform.fontSize;\n        var el = d3.select(this).select('text');\n        Lib.setTransormAndDisplay(el, transform);\n      }\n    });\n  }\n}\nfunction recordMinTextSize(traceType,\n// in\ntransform,\n// inout\nfullLayout // inout\n) {\n  if (fullLayout.uniformtext.mode) {\n    var minKey = getMinKey(traceType);\n    var minSize = fullLayout.uniformtext.minsize;\n    var size = transform.scale * transform.fontSize;\n    transform.hide = size < minSize;\n    fullLayout[minKey] = fullLayout[minKey] || Infinity;\n    if (!transform.hide) {\n      fullLayout[minKey] = Math.min(fullLayout[minKey], Math.max(size, minSize));\n    }\n  }\n}\nfunction clearMinTextSize(traceType,\n// in\nfullLayout // inout\n) {\n  var minKey = getMinKey(traceType);\n  fullLayout[minKey] = undefined;\n}\nfunction getMinKey(traceType) {\n  return '_' + traceType + 'Text_minsize';\n}\nmodule.exports = {\n  recordMinTextSize: recordMinTextSize,\n  clearMinTextSize: clearMinTextSize,\n  resizeText: resizeText\n};\n\n/***/ }),\n\n/***/ 55023:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2174346__) {\n\n\"use strict\";\n\n\nvar hovertemplateAttrs = (__nested_webpack_require_2174346__(5386)/* .hovertemplateAttrs */ .f);\nvar extendFlat = (__nested_webpack_require_2174346__(1426).extendFlat);\nvar scatterPolarAttrs = __nested_webpack_require_2174346__(81245);\nvar barAttrs = __nested_webpack_require_2174346__(1486);\nmodule.exports = {\n  r: scatterPolarAttrs.r,\n  theta: scatterPolarAttrs.theta,\n  r0: scatterPolarAttrs.r0,\n  dr: scatterPolarAttrs.dr,\n  theta0: scatterPolarAttrs.theta0,\n  dtheta: scatterPolarAttrs.dtheta,\n  thetaunit: scatterPolarAttrs.thetaunit,\n  // orientation: {\n  //     valType: 'enumerated',\n  //     values: ['radial', 'angular'],\n  //     editType: 'calc+clearAxisTypes',\n  //\n  // },\n\n  base: extendFlat({}, barAttrs.base, {}),\n  offset: extendFlat({}, barAttrs.offset, {}),\n  width: extendFlat({}, barAttrs.width, {}),\n  text: extendFlat({}, barAttrs.text, {}),\n  hovertext: extendFlat({}, barAttrs.hovertext, {}),\n  // textposition: {},\n  // textfont: {},\n  // insidetextfont: {},\n  // outsidetextfont: {},\n  // constraintext: {},\n  // cliponaxis: extendFlat({}, barAttrs.cliponaxis, {dflt: false}),\n\n  marker: barAttrs.marker,\n  hoverinfo: scatterPolarAttrs.hoverinfo,\n  hovertemplate: hovertemplateAttrs(),\n  selected: barAttrs.selected,\n  unselected: barAttrs.unselected\n\n  // error_x (error_r, error_theta)\n  // error_y\n};\n\n/***/ }),\n\n/***/ 74692:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2175735__) {\n\n\"use strict\";\n\n\nvar hasColorscale = (__nested_webpack_require_2175735__(52075).hasColorscale);\nvar colorscaleCalc = __nested_webpack_require_2175735__(78803);\nvar arraysToCalcdata = __nested_webpack_require_2175735__(75341);\nvar setGroupPositions = (__nested_webpack_require_2175735__(11661).setGroupPositions);\nvar calcSelection = __nested_webpack_require_2175735__(66279);\nvar traceIs = (__nested_webpack_require_2175735__(73972).traceIs);\nvar extendFlat = (__nested_webpack_require_2175735__(71828).extendFlat);\nfunction calc(gd, trace) {\n  var fullLayout = gd._fullLayout;\n  var subplotId = trace.subplot;\n  var radialAxis = fullLayout[subplotId].radialaxis;\n  var angularAxis = fullLayout[subplotId].angularaxis;\n  var rArray = radialAxis.makeCalcdata(trace, 'r');\n  var thetaArray = angularAxis.makeCalcdata(trace, 'theta');\n  var len = trace._length;\n  var cd = new Array(len);\n\n  // 'size' axis variables\n  var sArray = rArray;\n  // 'pos' axis variables\n  var pArray = thetaArray;\n  for (var i = 0; i < len; i++) {\n    cd[i] = {\n      p: pArray[i],\n      s: sArray[i]\n    };\n  }\n\n  // convert width and offset in 'c' coordinate,\n  // set 'c' value(s) in trace._width and trace._offset,\n  // to make Bar.crossTraceCalc \"just work\"\n  function d2c(attr) {\n    var val = trace[attr];\n    if (val !== undefined) {\n      trace['_' + attr] = Array.isArray(val) ? angularAxis.makeCalcdata(trace, attr) : angularAxis.d2c(val, trace.thetaunit);\n    }\n  }\n  if (angularAxis.type === 'linear') {\n    d2c('width');\n    d2c('offset');\n  }\n  if (hasColorscale(trace, 'marker')) {\n    colorscaleCalc(gd, trace, {\n      vals: trace.marker.color,\n      containerStr: 'marker',\n      cLetter: 'c'\n    });\n  }\n  if (hasColorscale(trace, 'marker.line')) {\n    colorscaleCalc(gd, trace, {\n      vals: trace.marker.line.color,\n      containerStr: 'marker.line',\n      cLetter: 'c'\n    });\n  }\n  arraysToCalcdata(cd, trace);\n  calcSelection(cd, trace);\n  return cd;\n}\nfunction crossTraceCalc(gd, polarLayout, subplotId) {\n  var calcdata = gd.calcdata;\n  var barPolarCd = [];\n  for (var i = 0; i < calcdata.length; i++) {\n    var cdi = calcdata[i];\n    var trace = cdi[0].trace;\n    if (trace.visible === true && traceIs(trace, 'bar') && trace.subplot === subplotId) {\n      barPolarCd.push(cdi);\n    }\n  }\n\n  // to make _extremes is filled in correctly so that\n  // polar._subplot.radialAxis can get auotrange'd\n  // TODO clean up!\n  // I think we want to call getAutorange on polar.radialaxis\n  // NOT on polar._subplot.radialAxis\n  var rAxis = extendFlat({}, polarLayout.radialaxis, {\n    _id: 'x'\n  });\n  var aAxis = polarLayout.angularaxis;\n  setGroupPositions(gd, aAxis, rAxis, barPolarCd, {\n    mode: polarLayout.barmode,\n    norm: polarLayout.barnorm,\n    gap: polarLayout.bargap,\n    groupgap: polarLayout.bargroupgap\n  });\n}\nmodule.exports = {\n  calc: calc,\n  crossTraceCalc: crossTraceCalc\n};\n\n/***/ }),\n\n/***/ 6135:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2178615__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2178615__(71828);\nvar handleRThetaDefaults = (__nested_webpack_require_2178615__(22184).handleRThetaDefaults);\nvar handleStyleDefaults = __nested_webpack_require_2178615__(98340);\nvar attributes = __nested_webpack_require_2178615__(55023);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var len = handleRThetaDefaults(traceIn, traceOut, layout, coerce);\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n\n  // coerce('orientation', (traceOut.theta && !traceOut.r) ? 'angular' : 'radial');\n\n  coerce('thetaunit');\n  coerce('base');\n  coerce('offset');\n  coerce('width');\n  coerce('text');\n  coerce('hovertext');\n  coerce('hovertemplate');\n\n  // var textPosition = coerce('textposition');\n  // var hasBoth = Array.isArray(textPosition) || textPosition === 'auto';\n  // var hasInside = hasBoth || textPosition === 'inside';\n  // var hasOutside = hasBoth || textPosition === 'outside';\n\n  // if(hasInside || hasOutside) {\n  //     var textFont = coerceFont(coerce, 'textfont', layout.font);\n  //     if(hasInside) coerceFont(coerce, 'insidetextfont', textFont);\n  //     if(hasOutside) coerceFont(coerce, 'outsidetextfont', textFont);\n  //     coerce('constraintext');\n  //     coerce('selected.textfont.color');\n  //     coerce('unselected.textfont.color');\n  //     coerce('cliponaxis');\n  // }\n\n  handleStyleDefaults(traceIn, traceOut, coerce, defaultColor, layout);\n  Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n};\n\n/***/ }),\n\n/***/ 27379:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2180279__) {\n\n\"use strict\";\n\n\nvar Fx = __nested_webpack_require_2180279__(30211);\nvar Lib = __nested_webpack_require_2180279__(71828);\nvar getTraceColor = (__nested_webpack_require_2180279__(95423).getTraceColor);\nvar fillText = Lib.fillText;\nvar makeHoverPointText = (__nested_webpack_require_2180279__(59150).makeHoverPointText);\nvar isPtInsidePolygon = (__nested_webpack_require_2180279__(10869).isPtInsidePolygon);\nmodule.exports = function hoverPoints(pointData, xval, yval) {\n  var cd = pointData.cd;\n  var trace = cd[0].trace;\n  var subplot = pointData.subplot;\n  var radialAxis = subplot.radialAxis;\n  var angularAxis = subplot.angularAxis;\n  var vangles = subplot.vangles;\n  var inboxFn = vangles ? isPtInsidePolygon : Lib.isPtInsideSector;\n  var maxHoverDistance = pointData.maxHoverDistance;\n  var period = angularAxis._period || 2 * Math.PI;\n  var rVal = Math.abs(radialAxis.g2p(Math.sqrt(xval * xval + yval * yval)));\n  var thetaVal = Math.atan2(yval, xval);\n\n  // polar.(x|y)axis.p2c doesn't get the reversed radial axis range case right\n  if (radialAxis.range[0] > radialAxis.range[1]) {\n    thetaVal += Math.PI;\n  }\n  var distFn = function (di) {\n    if (inboxFn(rVal, thetaVal, [di.rp0, di.rp1], [di.thetag0, di.thetag1], vangles)) {\n      return maxHoverDistance +\n      // add a little to the pseudo-distance for wider bars, so that like scatter,\n      // if you are over two overlapping bars, the narrower one wins.\n      Math.min(1, Math.abs(di.thetag1 - di.thetag0) / period) - 1 +\n      // add a gradient so hovering near the end of a\n      // bar makes it a little closer match\n      (di.rp1 - rVal) / (di.rp1 - di.rp0) - 1;\n    } else {\n      return Infinity;\n    }\n  };\n  Fx.getClosest(cd, distFn, pointData);\n  if (pointData.index === false) return;\n  var index = pointData.index;\n  var cdi = cd[index];\n  pointData.x0 = pointData.x1 = cdi.ct[0];\n  pointData.y0 = pointData.y1 = cdi.ct[1];\n  var _cdi = Lib.extendFlat({}, cdi, {\n    r: cdi.s,\n    theta: cdi.p\n  });\n  fillText(cdi, trace, pointData);\n  makeHoverPointText(_cdi, trace, subplot, pointData);\n  pointData.hovertemplate = trace.hovertemplate;\n  pointData.color = getTraceColor(trace, cdi);\n  pointData.xLabelVal = pointData.yLabelVal = undefined;\n  if (cdi.s < 0) {\n    pointData.idealAlign = 'left';\n  }\n  return [pointData];\n};\n\n/***/ }),\n\n/***/ 23381:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2182608__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'trace',\n  name: 'barpolar',\n  basePlotModule: __nested_webpack_require_2182608__(23580),\n  categories: ['polar', 'bar', 'showLegend'],\n  attributes: __nested_webpack_require_2182608__(55023),\n  layoutAttributes: __nested_webpack_require_2182608__(40151),\n  supplyDefaults: __nested_webpack_require_2182608__(6135),\n  supplyLayoutDefaults: __nested_webpack_require_2182608__(19860),\n  calc: (__nested_webpack_require_2182608__(74692).calc),\n  crossTraceCalc: (__nested_webpack_require_2182608__(74692).crossTraceCalc),\n  plot: __nested_webpack_require_2182608__(60173),\n  colorbar: __nested_webpack_require_2182608__(4898),\n  formatLabels: __nested_webpack_require_2182608__(98608),\n  style: (__nested_webpack_require_2182608__(16688).style),\n  styleOnSelect: (__nested_webpack_require_2182608__(16688).styleOnSelect),\n  hoverPoints: __nested_webpack_require_2182608__(27379),\n  selectPoints: __nested_webpack_require_2182608__(81974),\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 40151:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  barmode: {\n    valType: 'enumerated',\n    values: ['stack', 'overlay'],\n    dflt: 'stack',\n    editType: 'calc'\n  },\n  bargap: {\n    valType: 'number',\n    dflt: 0.1,\n    min: 0,\n    max: 1,\n    editType: 'calc'\n  }\n};\n\n/***/ }),\n\n/***/ 19860:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2183804__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2183804__(71828);\nvar attrs = __nested_webpack_require_2183804__(40151);\nmodule.exports = function (layoutIn, layoutOut, fullData) {\n  var subplotsDone = {};\n  var sp;\n  function coerce(attr, dflt) {\n    return Lib.coerce(layoutIn[sp] || {}, layoutOut[sp], attrs, attr, dflt);\n  }\n  for (var i = 0; i < fullData.length; i++) {\n    var trace = fullData[i];\n    if (trace.type === 'barpolar' && trace.visible === true) {\n      sp = trace.subplot;\n      if (!subplotsDone[sp]) {\n        coerce('barmode');\n        coerce('bargap');\n        subplotsDone[sp] = 1;\n      }\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 60173:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2184504__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2184504__(39898);\nvar isNumeric = __nested_webpack_require_2184504__(92770);\nvar Lib = __nested_webpack_require_2184504__(71828);\nvar Drawing = __nested_webpack_require_2184504__(91424);\nvar helpers = __nested_webpack_require_2184504__(10869);\nmodule.exports = function plot(gd, subplot, cdbar) {\n  var isStatic = gd._context.staticPlot;\n  var xa = subplot.xaxis;\n  var ya = subplot.yaxis;\n  var radialAxis = subplot.radialAxis;\n  var angularAxis = subplot.angularAxis;\n  var pathFn = makePathFn(subplot);\n  var barLayer = subplot.layers.frontplot.select('g.barlayer');\n  Lib.makeTraceGroups(barLayer, cdbar, 'trace bars').each(function () {\n    var plotGroup = d3.select(this);\n    var pointGroup = Lib.ensureSingle(plotGroup, 'g', 'points');\n    var bars = pointGroup.selectAll('g.point').data(Lib.identity);\n    bars.enter().append('g').style('vector-effect', isStatic ? 'none' : 'non-scaling-stroke').style('stroke-miterlimit', 2).classed('point', true);\n    bars.exit().remove();\n    bars.each(function (di) {\n      var bar = d3.select(this);\n      var rp0 = di.rp0 = radialAxis.c2p(di.s0);\n      var rp1 = di.rp1 = radialAxis.c2p(di.s1);\n      var thetag0 = di.thetag0 = angularAxis.c2g(di.p0);\n      var thetag1 = di.thetag1 = angularAxis.c2g(di.p1);\n      var dPath;\n      if (!isNumeric(rp0) || !isNumeric(rp1) || !isNumeric(thetag0) || !isNumeric(thetag1) || rp0 === rp1 || thetag0 === thetag1) {\n        // do not remove blank bars, to keep data-to-node\n        // mapping intact during radial drag, that we\n        // can skip calling _module.style during interactions\n        dPath = 'M0,0Z';\n      } else {\n        // this 'center' pt is used for selections and hover labels\n        var rg1 = radialAxis.c2g(di.s1);\n        var thetagMid = (thetag0 + thetag1) / 2;\n        di.ct = [xa.c2p(rg1 * Math.cos(thetagMid)), ya.c2p(rg1 * Math.sin(thetagMid))];\n        dPath = pathFn(rp0, rp1, thetag0, thetag1);\n      }\n      Lib.ensureSingle(bar, 'path').attr('d', dPath);\n    });\n\n    // clip plotGroup, when trace layer isn't clipped\n    Drawing.setClipUrl(plotGroup, subplot._hasClipOnAxisFalse ? subplot.clipIds.forTraces : null, gd);\n  });\n};\nfunction makePathFn(subplot) {\n  var cxx = subplot.cxx;\n  var cyy = subplot.cyy;\n  if (subplot.vangles) {\n    return function (r0, r1, _a0, _a1) {\n      var a0, a1;\n      if (Lib.angleDelta(_a0, _a1) > 0) {\n        a0 = _a0;\n        a1 = _a1;\n      } else {\n        a0 = _a1;\n        a1 = _a0;\n      }\n      var va0 = helpers.findEnclosingVertexAngles(a0, subplot.vangles)[0];\n      var va1 = helpers.findEnclosingVertexAngles(a1, subplot.vangles)[1];\n      var vaBar = [va0, (a0 + a1) / 2, va1];\n      return helpers.pathPolygonAnnulus(r0, r1, a0, a1, vaBar, cxx, cyy);\n    };\n  }\n  return function (r0, r1, a0, a1) {\n    return Lib.pathAnnulus(r0, r1, a0, a1, cxx, cyy);\n  };\n}\n\n/***/ }),\n\n/***/ 53522:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2187414__) {\n\n\"use strict\";\n\n\nvar scatterAttrs = __nested_webpack_require_2187414__(82196);\nvar barAttrs = __nested_webpack_require_2187414__(1486);\nvar colorAttrs = __nested_webpack_require_2187414__(22399);\nvar axisHoverFormat = (__nested_webpack_require_2187414__(12663).axisHoverFormat);\nvar hovertemplateAttrs = (__nested_webpack_require_2187414__(5386)/* .hovertemplateAttrs */ .f);\nvar extendFlat = (__nested_webpack_require_2187414__(1426).extendFlat);\nvar scatterMarkerAttrs = scatterAttrs.marker;\nvar scatterMarkerLineAttrs = scatterMarkerAttrs.line;\nmodule.exports = {\n  y: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  x: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  x0: {\n    valType: 'any',\n    editType: 'calc+clearAxisTypes'\n  },\n  y0: {\n    valType: 'any',\n    editType: 'calc+clearAxisTypes'\n  },\n  dx: {\n    valType: 'number',\n    editType: 'calc'\n  },\n  dy: {\n    valType: 'number',\n    editType: 'calc'\n  },\n  xperiod: scatterAttrs.xperiod,\n  yperiod: scatterAttrs.yperiod,\n  xperiod0: scatterAttrs.xperiod0,\n  yperiod0: scatterAttrs.yperiod0,\n  xperiodalignment: scatterAttrs.xperiodalignment,\n  yperiodalignment: scatterAttrs.yperiodalignment,\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  name: {\n    valType: 'string',\n    editType: 'calc+clearAxisTypes'\n  },\n  q1: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  median: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  q3: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  lowerfence: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  upperfence: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  notched: {\n    valType: 'boolean',\n    editType: 'calc'\n  },\n  notchwidth: {\n    valType: 'number',\n    min: 0,\n    max: 0.5,\n    dflt: 0.25,\n    editType: 'calc'\n  },\n  notchspan: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  // TODO\n  // maybe add\n  // - loweroutlierbound / upperoutlierbound\n  // - lowersuspectedoutlierbound / uppersuspectedoutlierbound\n\n  boxpoints: {\n    valType: 'enumerated',\n    values: ['all', 'outliers', 'suspectedoutliers', false],\n    editType: 'calc'\n  },\n  jitter: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    editType: 'calc'\n  },\n  pointpos: {\n    valType: 'number',\n    min: -2,\n    max: 2,\n    editType: 'calc'\n  },\n  boxmean: {\n    valType: 'enumerated',\n    values: [true, 'sd', false],\n    editType: 'calc'\n  },\n  mean: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  sd: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  orientation: {\n    valType: 'enumerated',\n    values: ['v', 'h'],\n    editType: 'calc+clearAxisTypes'\n  },\n  quartilemethod: {\n    valType: 'enumerated',\n    values: ['linear', 'exclusive', 'inclusive'],\n    dflt: 'linear',\n    editType: 'calc'\n  },\n  width: {\n    valType: 'number',\n    min: 0,\n    dflt: 0,\n    editType: 'calc'\n  },\n  marker: {\n    outliercolor: {\n      valType: 'color',\n      dflt: 'rgba(0, 0, 0, 0)',\n      editType: 'style'\n    },\n    symbol: extendFlat({}, scatterMarkerAttrs.symbol, {\n      arrayOk: false,\n      editType: 'plot'\n    }),\n    opacity: extendFlat({}, scatterMarkerAttrs.opacity, {\n      arrayOk: false,\n      dflt: 1,\n      editType: 'style'\n    }),\n    angle: extendFlat({}, scatterMarkerAttrs.angle, {\n      arrayOk: false,\n      editType: 'calc'\n    }),\n    size: extendFlat({}, scatterMarkerAttrs.size, {\n      arrayOk: false,\n      editType: 'calc'\n    }),\n    color: extendFlat({}, scatterMarkerAttrs.color, {\n      arrayOk: false,\n      editType: 'style'\n    }),\n    line: {\n      color: extendFlat({}, scatterMarkerLineAttrs.color, {\n        arrayOk: false,\n        dflt: colorAttrs.defaultLine,\n        editType: 'style'\n      }),\n      width: extendFlat({}, scatterMarkerLineAttrs.width, {\n        arrayOk: false,\n        dflt: 0,\n        editType: 'style'\n      }),\n      outliercolor: {\n        valType: 'color',\n        editType: 'style'\n      },\n      outlierwidth: {\n        valType: 'number',\n        min: 0,\n        dflt: 1,\n        editType: 'style'\n      },\n      editType: 'style'\n    },\n    editType: 'plot'\n  },\n  line: {\n    color: {\n      valType: 'color',\n      editType: 'style'\n    },\n    width: {\n      valType: 'number',\n      min: 0,\n      dflt: 2,\n      editType: 'style'\n    },\n    editType: 'plot'\n  },\n  fillcolor: scatterAttrs.fillcolor,\n  whiskerwidth: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 0.5,\n    editType: 'calc'\n  },\n  offsetgroup: barAttrs.offsetgroup,\n  alignmentgroup: barAttrs.alignmentgroup,\n  selected: {\n    marker: scatterAttrs.selected.marker,\n    editType: 'style'\n  },\n  unselected: {\n    marker: scatterAttrs.unselected.marker,\n    editType: 'style'\n  },\n  text: extendFlat({}, scatterAttrs.text, {}),\n  hovertext: extendFlat({}, scatterAttrs.hovertext, {}),\n  hovertemplate: hovertemplateAttrs({}),\n  hoveron: {\n    valType: 'flaglist',\n    flags: ['boxes', 'points'],\n    dflt: 'boxes+points',\n    editType: 'style'\n  }\n};\n\n/***/ }),\n\n/***/ 48518:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2192487__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_2192487__(92770);\nvar Axes = __nested_webpack_require_2192487__(89298);\nvar alignPeriod = __nested_webpack_require_2192487__(42973);\nvar Lib = __nested_webpack_require_2192487__(71828);\nvar BADNUM = (__nested_webpack_require_2192487__(50606).BADNUM);\nvar _ = Lib._;\nmodule.exports = function calc(gd, trace) {\n  var fullLayout = gd._fullLayout;\n  var xa = Axes.getFromId(gd, trace.xaxis || 'x');\n  var ya = Axes.getFromId(gd, trace.yaxis || 'y');\n  var cd = [];\n\n  // N.B. violin reuses same Box.calc\n  var numKey = trace.type === 'violin' ? '_numViolins' : '_numBoxes';\n  var i, j;\n  var valAxis, valLetter;\n  var posAxis, posLetter;\n  var hasPeriod;\n  if (trace.orientation === 'h') {\n    valAxis = xa;\n    valLetter = 'x';\n    posAxis = ya;\n    posLetter = 'y';\n    hasPeriod = !!trace.yperiodalignment;\n  } else {\n    valAxis = ya;\n    valLetter = 'y';\n    posAxis = xa;\n    posLetter = 'x';\n    hasPeriod = !!trace.xperiodalignment;\n  }\n  var allPosArrays = getPosArrays(trace, posLetter, posAxis, fullLayout[numKey]);\n  var posArray = allPosArrays[0];\n  var origPos = allPosArrays[1];\n  var dv = Lib.distinctVals(posArray, posAxis);\n  var posDistinct = dv.vals;\n  var dPos = dv.minDiff / 2;\n\n  // item in trace calcdata\n  var cdi;\n  // array of {v: v, i, i} sample pts\n  var pts;\n  // values of the `pts` array of objects\n  var boxVals;\n  // length of sample\n  var N;\n  // single sample point\n  var pt;\n  // single sample value\n  var v;\n\n  // filter function for outlier pts\n  // outlier definition based on http://www.physics.csbsju.edu/stats/box2.html\n  var ptFilterFn = (trace.boxpoints || trace.points) === 'all' ? Lib.identity : function (pt) {\n    return pt.v < cdi.lf || pt.v > cdi.uf;\n  };\n  if (trace._hasPreCompStats) {\n    var valArrayRaw = trace[valLetter];\n    var d2c = function (k) {\n      return valAxis.d2c((trace[k] || [])[i]);\n    };\n    var minVal = Infinity;\n    var maxVal = -Infinity;\n    for (i = 0; i < trace._length; i++) {\n      var posi = posArray[i];\n      if (!isNumeric(posi)) continue;\n      cdi = {};\n      cdi.pos = cdi[posLetter] = posi;\n      if (hasPeriod && origPos) {\n        cdi.orig_p = origPos[i]; // used by hover\n      }\n\n      cdi.q1 = d2c('q1');\n      cdi.med = d2c('median');\n      cdi.q3 = d2c('q3');\n      pts = [];\n      if (valArrayRaw && Lib.isArrayOrTypedArray(valArrayRaw[i])) {\n        for (j = 0; j < valArrayRaw[i].length; j++) {\n          v = valAxis.d2c(valArrayRaw[i][j]);\n          if (v !== BADNUM) {\n            pt = {\n              v: v,\n              i: [i, j]\n            };\n            arraysToCalcdata(pt, trace, [i, j]);\n            pts.push(pt);\n          }\n        }\n      }\n      cdi.pts = pts.sort(sortByVal);\n      boxVals = cdi[valLetter] = pts.map(extractVal);\n      N = boxVals.length;\n      if (cdi.med !== BADNUM && cdi.q1 !== BADNUM && cdi.q3 !== BADNUM && cdi.med >= cdi.q1 && cdi.q3 >= cdi.med) {\n        var lf = d2c('lowerfence');\n        cdi.lf = lf !== BADNUM && lf <= cdi.q1 ? lf : computeLowerFence(cdi, boxVals, N);\n        var uf = d2c('upperfence');\n        cdi.uf = uf !== BADNUM && uf >= cdi.q3 ? uf : computeUpperFence(cdi, boxVals, N);\n        var mean = d2c('mean');\n        cdi.mean = mean !== BADNUM ? mean : N ? Lib.mean(boxVals, N) : (cdi.q1 + cdi.q3) / 2;\n        var sd = d2c('sd');\n        cdi.sd = mean !== BADNUM && sd >= 0 ? sd : N ? Lib.stdev(boxVals, N, cdi.mean) : cdi.q3 - cdi.q1;\n        cdi.lo = computeLowerOutlierBound(cdi);\n        cdi.uo = computeUpperOutlierBound(cdi);\n        var ns = d2c('notchspan');\n        ns = ns !== BADNUM && ns > 0 ? ns : computeNotchSpan(cdi, N);\n        cdi.ln = cdi.med - ns;\n        cdi.un = cdi.med + ns;\n        var imin = cdi.lf;\n        var imax = cdi.uf;\n        if (trace.boxpoints && boxVals.length) {\n          imin = Math.min(imin, boxVals[0]);\n          imax = Math.max(imax, boxVals[N - 1]);\n        }\n        if (trace.notched) {\n          imin = Math.min(imin, cdi.ln);\n          imax = Math.max(imax, cdi.un);\n        }\n        cdi.min = imin;\n        cdi.max = imax;\n      } else {\n        Lib.warn(['Invalid input - make sure that q1 <= median <= q3', 'q1 = ' + cdi.q1, 'median = ' + cdi.med, 'q3 = ' + cdi.q3].join('\\n'));\n        var v0;\n        if (cdi.med !== BADNUM) {\n          v0 = cdi.med;\n        } else if (cdi.q1 !== BADNUM) {\n          if (cdi.q3 !== BADNUM) v0 = (cdi.q1 + cdi.q3) / 2;else v0 = cdi.q1;\n        } else if (cdi.q3 !== BADNUM) {\n          v0 = cdi.q3;\n        } else {\n          v0 = 0;\n        }\n\n        // draw box as line segment\n        cdi.med = v0;\n        cdi.q1 = cdi.q3 = v0;\n        cdi.lf = cdi.uf = v0;\n        cdi.mean = cdi.sd = v0;\n        cdi.ln = cdi.un = v0;\n        cdi.min = cdi.max = v0;\n      }\n      minVal = Math.min(minVal, cdi.min);\n      maxVal = Math.max(maxVal, cdi.max);\n      cdi.pts2 = pts.filter(ptFilterFn);\n      cd.push(cdi);\n    }\n    trace._extremes[valAxis._id] = Axes.findExtremes(valAxis, [minVal, maxVal], {\n      padded: true\n    });\n  } else {\n    var valArray = valAxis.makeCalcdata(trace, valLetter);\n    var posBins = makeBins(posDistinct, dPos);\n    var pLen = posDistinct.length;\n    var ptsPerBin = initNestedArray(pLen);\n\n    // bin pts info per position bins\n    for (i = 0; i < trace._length; i++) {\n      v = valArray[i];\n      if (!isNumeric(v)) continue;\n      var n = Lib.findBin(posArray[i], posBins);\n      if (n >= 0 && n < pLen) {\n        pt = {\n          v: v,\n          i: i\n        };\n        arraysToCalcdata(pt, trace, i);\n        ptsPerBin[n].push(pt);\n      }\n    }\n    var minLowerNotch = Infinity;\n    var maxUpperNotch = -Infinity;\n    var quartilemethod = trace.quartilemethod;\n    var usesExclusive = quartilemethod === 'exclusive';\n    var usesInclusive = quartilemethod === 'inclusive';\n\n    // build calcdata trace items, one item per distinct position\n    for (i = 0; i < pLen; i++) {\n      if (ptsPerBin[i].length > 0) {\n        cdi = {};\n        cdi.pos = cdi[posLetter] = posDistinct[i];\n        pts = cdi.pts = ptsPerBin[i].sort(sortByVal);\n        boxVals = cdi[valLetter] = pts.map(extractVal);\n        N = boxVals.length;\n        cdi.min = boxVals[0];\n        cdi.max = boxVals[N - 1];\n        cdi.mean = Lib.mean(boxVals, N);\n        cdi.sd = Lib.stdev(boxVals, N, cdi.mean);\n        cdi.med = Lib.interp(boxVals, 0.5);\n        if (N % 2 && (usesExclusive || usesInclusive)) {\n          var lower;\n          var upper;\n          if (usesExclusive) {\n            // do NOT include the median in either half\n            lower = boxVals.slice(0, N / 2);\n            upper = boxVals.slice(N / 2 + 1);\n          } else if (usesInclusive) {\n            // include the median in either half\n            lower = boxVals.slice(0, N / 2 + 1);\n            upper = boxVals.slice(N / 2);\n          }\n          cdi.q1 = Lib.interp(lower, 0.5);\n          cdi.q3 = Lib.interp(upper, 0.5);\n        } else {\n          cdi.q1 = Lib.interp(boxVals, 0.25);\n          cdi.q3 = Lib.interp(boxVals, 0.75);\n        }\n\n        // lower and upper fences\n        cdi.lf = computeLowerFence(cdi, boxVals, N);\n        cdi.uf = computeUpperFence(cdi, boxVals, N);\n\n        // lower and upper outliers bounds\n        cdi.lo = computeLowerOutlierBound(cdi);\n        cdi.uo = computeUpperOutlierBound(cdi);\n\n        // lower and upper notches\n        var mci = computeNotchSpan(cdi, N);\n        cdi.ln = cdi.med - mci;\n        cdi.un = cdi.med + mci;\n        minLowerNotch = Math.min(minLowerNotch, cdi.ln);\n        maxUpperNotch = Math.max(maxUpperNotch, cdi.un);\n        cdi.pts2 = pts.filter(ptFilterFn);\n        cd.push(cdi);\n      }\n    }\n    trace._extremes[valAxis._id] = Axes.findExtremes(valAxis, trace.notched ? valArray.concat([minLowerNotch, maxUpperNotch]) : valArray, {\n      padded: true\n    });\n  }\n  calcSelection(cd, trace);\n  if (cd.length > 0) {\n    cd[0].t = {\n      num: fullLayout[numKey],\n      dPos: dPos,\n      posLetter: posLetter,\n      valLetter: valLetter,\n      labels: {\n        med: _(gd, 'median:'),\n        min: _(gd, 'min:'),\n        q1: _(gd, 'q1:'),\n        q3: _(gd, 'q3:'),\n        max: _(gd, 'max:'),\n        mean: trace.boxmean === 'sd' ? _(gd, 'mean ± σ:') : _(gd, 'mean:'),\n        lf: _(gd, 'lower fence:'),\n        uf: _(gd, 'upper fence:')\n      }\n    };\n    fullLayout[numKey]++;\n    return cd;\n  } else {\n    return [{\n      t: {\n        empty: true\n      }\n    }];\n  }\n};\n\n// In vertical (horizontal) box plots:\n// if no x (y) data, use x0 (y0), or name\n// so if you want one box\n// per trace, set x0 (y0) to the x (y) value or category for this trace\n// (or set x (y) to a constant array matching y (x))\nfunction getPosArrays(trace, posLetter, posAxis, num) {\n  var hasPosArray = (posLetter in trace);\n  var hasPos0 = (posLetter + '0' in trace);\n  var hasPosStep = ('d' + posLetter in trace);\n  if (hasPosArray || hasPos0 && hasPosStep) {\n    var origPos = posAxis.makeCalcdata(trace, posLetter);\n    var pos = alignPeriod(trace, posAxis, posLetter, origPos).vals;\n    return [pos, origPos];\n  }\n  var pos0;\n  if (hasPos0) {\n    pos0 = trace[posLetter + '0'];\n  } else if ('name' in trace && (posAxis.type === 'category' || isNumeric(trace.name) && ['linear', 'log'].indexOf(posAxis.type) !== -1 || Lib.isDateTime(trace.name) && posAxis.type === 'date')) {\n    pos0 = trace.name;\n  } else {\n    pos0 = num;\n  }\n  var pos0c = posAxis.type === 'multicategory' ? posAxis.r2c_just_indices(pos0) : posAxis.d2c(pos0, 0, trace[posLetter + 'calendar']);\n  var len = trace._length;\n  var out = new Array(len);\n  for (var i = 0; i < len; i++) out[i] = pos0c;\n  return [out];\n}\nfunction makeBins(x, dx) {\n  var len = x.length;\n  var bins = new Array(len + 1);\n  for (var i = 0; i < len; i++) {\n    bins[i] = x[i] - dx;\n  }\n  bins[len] = x[len - 1] + dx;\n  return bins;\n}\nfunction initNestedArray(len) {\n  var arr = new Array(len);\n  for (var i = 0; i < len; i++) {\n    arr[i] = [];\n  }\n  return arr;\n}\nvar TRACE_TO_CALC = {\n  text: 'tx',\n  hovertext: 'htx'\n};\nfunction arraysToCalcdata(pt, trace, ptNumber) {\n  for (var k in TRACE_TO_CALC) {\n    if (Lib.isArrayOrTypedArray(trace[k])) {\n      if (Array.isArray(ptNumber)) {\n        if (Lib.isArrayOrTypedArray(trace[k][ptNumber[0]])) {\n          pt[TRACE_TO_CALC[k]] = trace[k][ptNumber[0]][ptNumber[1]];\n        }\n      } else {\n        pt[TRACE_TO_CALC[k]] = trace[k][ptNumber];\n      }\n    }\n  }\n}\nfunction calcSelection(cd, trace) {\n  if (Lib.isArrayOrTypedArray(trace.selectedpoints)) {\n    for (var i = 0; i < cd.length; i++) {\n      var pts = cd[i].pts || [];\n      var ptNumber2cdIndex = {};\n      for (var j = 0; j < pts.length; j++) {\n        ptNumber2cdIndex[pts[j].i] = j;\n      }\n      Lib.tagSelected(pts, trace, ptNumber2cdIndex);\n    }\n  }\n}\nfunction sortByVal(a, b) {\n  return a.v - b.v;\n}\nfunction extractVal(o) {\n  return o.v;\n}\n\n// last point below 1.5 * IQR\nfunction computeLowerFence(cdi, boxVals, N) {\n  if (N === 0) return cdi.q1;\n  return Math.min(cdi.q1, boxVals[Math.min(Lib.findBin(2.5 * cdi.q1 - 1.5 * cdi.q3, boxVals, true) + 1, N - 1)]);\n}\n\n// last point above 1.5 * IQR\nfunction computeUpperFence(cdi, boxVals, N) {\n  if (N === 0) return cdi.q3;\n  return Math.max(cdi.q3, boxVals[Math.max(Lib.findBin(2.5 * cdi.q3 - 1.5 * cdi.q1, boxVals), 0)]);\n}\n\n// 3 IQR below (don't clip to max/min,\n// this is only for discriminating suspected & far outliers)\nfunction computeLowerOutlierBound(cdi) {\n  return 4 * cdi.q1 - 3 * cdi.q3;\n}\n\n// 3 IQR above (don't clip to max/min,\n// this is only for discriminating suspected & far outliers)\nfunction computeUpperOutlierBound(cdi) {\n  return 4 * cdi.q3 - 3 * cdi.q1;\n}\n\n// 95% confidence intervals for median\nfunction computeNotchSpan(cdi, N) {\n  if (N === 0) return 0;\n  return 1.57 * (cdi.q3 - cdi.q1) / Math.sqrt(N);\n}\n\n/***/ }),\n\n/***/ 37188:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2204296__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_2204296__(89298);\nvar Lib = __nested_webpack_require_2204296__(71828);\nvar getAxisGroup = (__nested_webpack_require_2204296__(99082).getAxisGroup);\nvar orientations = ['v', 'h'];\nfunction crossTraceCalc(gd, plotinfo) {\n  var calcdata = gd.calcdata;\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  for (var i = 0; i < orientations.length; i++) {\n    var orientation = orientations[i];\n    var posAxis = orientation === 'h' ? ya : xa;\n    var boxList = [];\n\n    // make list of boxes / candlesticks\n    // For backward compatibility, candlesticks are treated as if they *are* box traces here\n    for (var j = 0; j < calcdata.length; j++) {\n      var cd = calcdata[j];\n      var t = cd[0].t;\n      var trace = cd[0].trace;\n      if (trace.visible === true && (trace.type === 'box' || trace.type === 'candlestick') && !t.empty && (trace.orientation || 'v') === orientation && trace.xaxis === xa._id && trace.yaxis === ya._id) {\n        boxList.push(j);\n      }\n    }\n    setPositionOffset('box', gd, boxList, posAxis);\n  }\n}\nfunction setPositionOffset(traceType, gd, boxList, posAxis) {\n  var calcdata = gd.calcdata;\n  var fullLayout = gd._fullLayout;\n  var axId = posAxis._id;\n  var axLetter = axId.charAt(0);\n  var i, j, calcTrace;\n  var pointList = [];\n  var shownPts = 0;\n\n  // make list of box points\n  for (i = 0; i < boxList.length; i++) {\n    calcTrace = calcdata[boxList[i]];\n    for (j = 0; j < calcTrace.length; j++) {\n      pointList.push(posAxis.c2l(calcTrace[j].pos, true));\n      shownPts += (calcTrace[j].pts2 || []).length;\n    }\n  }\n  if (!pointList.length) return;\n\n  // box plots - update dPos based on multiple traces\n  var boxdv = Lib.distinctVals(pointList);\n  if (posAxis.type === 'category' || posAxis.type === 'multicategory') {\n    boxdv.minDiff = 1;\n  }\n  var dPos0 = boxdv.minDiff / 2;\n\n  // check for forced minimum dtick\n  Axes.minDtick(posAxis, boxdv.minDiff, boxdv.vals[0], true);\n  var numKey = traceType === 'violin' ? '_numViolins' : '_numBoxes';\n  var numTotal = fullLayout[numKey];\n  var group = fullLayout[traceType + 'mode'] === 'group' && numTotal > 1;\n  var groupFraction = 1 - fullLayout[traceType + 'gap'];\n  var groupGapFraction = 1 - fullLayout[traceType + 'groupgap'];\n  for (i = 0; i < boxList.length; i++) {\n    calcTrace = calcdata[boxList[i]];\n    var trace = calcTrace[0].trace;\n    var t = calcTrace[0].t;\n    var width = trace.width;\n    var side = trace.side;\n\n    // position coordinate delta\n    var dPos;\n    // box half width;\n    var bdPos;\n    // box center offset\n    var bPos;\n    // half-width within which to accept hover for this box/violin\n    // always split the distance to the closest box/violin\n    var wHover;\n    if (width) {\n      dPos = bdPos = wHover = width / 2;\n      bPos = 0;\n    } else {\n      dPos = dPos0;\n      if (group) {\n        var groupId = getAxisGroup(fullLayout, posAxis._id) + trace.orientation;\n        var alignmentGroups = fullLayout._alignmentOpts[groupId] || {};\n        var alignmentGroupOpts = alignmentGroups[trace.alignmentgroup] || {};\n        var nOffsetGroups = Object.keys(alignmentGroupOpts.offsetGroups || {}).length;\n        var num = nOffsetGroups || numTotal;\n        var shift = nOffsetGroups ? trace._offsetIndex : t.num;\n        bdPos = dPos * groupFraction * groupGapFraction / num;\n        bPos = 2 * dPos * (-0.5 + (shift + 0.5) / num) * groupFraction;\n        wHover = dPos * groupFraction / num;\n      } else {\n        bdPos = dPos * groupFraction * groupGapFraction;\n        bPos = 0;\n        wHover = dPos;\n      }\n    }\n    t.dPos = dPos;\n    t.bPos = bPos;\n    t.bdPos = bdPos;\n    t.wHover = wHover;\n\n    // box/violin-only value-space push value\n    var pushplus;\n    var pushminus;\n    // edge of box/violin\n    var edge = bPos + bdPos;\n    var edgeplus;\n    var edgeminus;\n    // value-space padding\n    var vpadplus;\n    var vpadminus;\n    // pixel-space padding\n    var ppadplus;\n    var ppadminus;\n    // do we add 5% of both sides (more logic for points beyond box/violin below)\n    var padded = Boolean(width);\n    // does this trace show points?\n    var hasPts = (trace.boxpoints || trace.points) && shownPts > 0;\n    if (side === 'positive') {\n      pushplus = dPos * (width ? 1 : 0.5);\n      edgeplus = edge;\n      pushminus = edgeplus = bPos;\n    } else if (side === 'negative') {\n      pushplus = edgeplus = bPos;\n      pushminus = dPos * (width ? 1 : 0.5);\n      edgeminus = edge;\n    } else {\n      pushplus = pushminus = dPos;\n      edgeplus = edgeminus = edge;\n    }\n    if (hasPts) {\n      var pointpos = trace.pointpos;\n      var jitter = trace.jitter;\n      var ms = trace.marker.size / 2;\n      var pp = 0;\n      if (pointpos + jitter >= 0) {\n        pp = edge * (pointpos + jitter);\n        if (pp > pushplus) {\n          // (++) beyond plus-value, use pp\n          padded = true;\n          ppadplus = ms;\n          vpadplus = pp;\n        } else if (pp > edgeplus) {\n          // (+), use push-value (it's bigger), but add px-pad\n          ppadplus = ms;\n          vpadplus = pushplus;\n        }\n      }\n      if (pp <= pushplus) {\n        // (->) fallback to push value\n        vpadplus = pushplus;\n      }\n      var pm = 0;\n      if (pointpos - jitter <= 0) {\n        pm = -edge * (pointpos - jitter);\n        if (pm > pushminus) {\n          // (--) beyond plus-value, use pp\n          padded = true;\n          ppadminus = ms;\n          vpadminus = pm;\n        } else if (pm > edgeminus) {\n          // (-), use push-value (it's bigger), but add px-pad\n          ppadminus = ms;\n          vpadminus = pushminus;\n        }\n      }\n      if (pm <= pushminus) {\n        // (<-) fallback to push value\n        vpadminus = pushminus;\n      }\n    } else {\n      vpadplus = pushplus;\n      vpadminus = pushminus;\n    }\n    var pos = new Array(calcTrace.length);\n    for (j = 0; j < calcTrace.length; j++) {\n      pos[j] = calcTrace[j].pos;\n    }\n    trace._extremes[axId] = Axes.findExtremes(posAxis, pos, {\n      padded: padded,\n      vpadminus: vpadminus,\n      vpadplus: vpadplus,\n      vpadLinearized: true,\n      // N.B. SVG px-space positive/negative\n      ppadminus: {\n        x: ppadminus,\n        y: ppadplus\n      }[axLetter],\n      ppadplus: {\n        x: ppadplus,\n        y: ppadminus\n      }[axLetter]\n    });\n  }\n}\nmodule.exports = {\n  crossTraceCalc: crossTraceCalc,\n  setPositionOffset: setPositionOffset\n};\n\n/***/ }),\n\n/***/ 36411:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2210771__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2210771__(71828);\nvar Registry = __nested_webpack_require_2210771__(73972);\nvar Color = __nested_webpack_require_2210771__(7901);\nvar handlePeriodDefaults = __nested_webpack_require_2210771__(73927);\nvar handleGroupingDefaults = __nested_webpack_require_2210771__(26125);\nvar autoType = __nested_webpack_require_2210771__(4322);\nvar attributes = __nested_webpack_require_2210771__(53522);\nfunction supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  handleSampleDefaults(traceIn, traceOut, coerce, layout);\n  if (traceOut.visible === false) return;\n  handlePeriodDefaults(traceIn, traceOut, layout, coerce);\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  var hasPreCompStats = traceOut._hasPreCompStats;\n  if (hasPreCompStats) {\n    coerce('lowerfence');\n    coerce('upperfence');\n  }\n  coerce('line.color', (traceIn.marker || {}).color || defaultColor);\n  coerce('line.width');\n  coerce('fillcolor', Color.addOpacity(traceOut.line.color, 0.5));\n  var boxmeanDflt = false;\n  if (hasPreCompStats) {\n    var mean = coerce('mean');\n    var sd = coerce('sd');\n    if (mean && mean.length) {\n      boxmeanDflt = true;\n      if (sd && sd.length) boxmeanDflt = 'sd';\n    }\n  }\n  coerce('boxmean', boxmeanDflt);\n  coerce('whiskerwidth');\n  coerce('width');\n  coerce('quartilemethod');\n  var notchedDflt = false;\n  if (hasPreCompStats) {\n    var notchspan = coerce('notchspan');\n    if (notchspan && notchspan.length) {\n      notchedDflt = true;\n    }\n  } else if (Lib.validate(traceIn.notchwidth, attributes.notchwidth)) {\n    notchedDflt = true;\n  }\n  var notched = coerce('notched', notchedDflt);\n  if (notched) coerce('notchwidth');\n  handlePointsDefaults(traceIn, traceOut, coerce, {\n    prefix: 'box'\n  });\n}\nfunction handleSampleDefaults(traceIn, traceOut, coerce, layout) {\n  function getDims(arr) {\n    var dims = 0;\n    if (arr && arr.length) {\n      dims += 1;\n      if (Lib.isArrayOrTypedArray(arr[0]) && arr[0].length) {\n        dims += 1;\n      }\n    }\n    return dims;\n  }\n  function valid(astr) {\n    return Lib.validate(traceIn[astr], attributes[astr]);\n  }\n  var y = coerce('y');\n  var x = coerce('x');\n  var sLen;\n  if (traceOut.type === 'box') {\n    var q1 = coerce('q1');\n    var median = coerce('median');\n    var q3 = coerce('q3');\n    traceOut._hasPreCompStats = q1 && q1.length && median && median.length && q3 && q3.length;\n    sLen = Math.min(Lib.minRowLength(q1), Lib.minRowLength(median), Lib.minRowLength(q3));\n  }\n  var yDims = getDims(y);\n  var xDims = getDims(x);\n  var yLen = yDims && Lib.minRowLength(y);\n  var xLen = xDims && Lib.minRowLength(x);\n  var calendar = layout.calendar;\n  var opts = {\n    autotypenumbers: layout.autotypenumbers\n  };\n  var defaultOrientation, len;\n  if (traceOut._hasPreCompStats) {\n    switch (String(xDims) + String(yDims)) {\n      // no x / no y\n      case '00':\n        var setInX = valid('x0') || valid('dx');\n        var setInY = valid('y0') || valid('dy');\n        if (setInY && !setInX) {\n          defaultOrientation = 'h';\n        } else {\n          defaultOrientation = 'v';\n        }\n        len = sLen;\n        break;\n      // just x\n      case '10':\n        defaultOrientation = 'v';\n        len = Math.min(sLen, xLen);\n        break;\n      case '20':\n        defaultOrientation = 'h';\n        len = Math.min(sLen, x.length);\n        break;\n      // just y\n      case '01':\n        defaultOrientation = 'h';\n        len = Math.min(sLen, yLen);\n        break;\n      case '02':\n        defaultOrientation = 'v';\n        len = Math.min(sLen, y.length);\n        break;\n      // both\n      case '12':\n        defaultOrientation = 'v';\n        len = Math.min(sLen, xLen, y.length);\n        break;\n      case '21':\n        defaultOrientation = 'h';\n        len = Math.min(sLen, x.length, yLen);\n        break;\n      case '11':\n        // this one is ill-defined\n        len = 0;\n        break;\n      case '22':\n        var hasCategories = false;\n        var i;\n        for (i = 0; i < x.length; i++) {\n          if (autoType(x[i], calendar, opts) === 'category') {\n            hasCategories = true;\n            break;\n          }\n        }\n        if (hasCategories) {\n          defaultOrientation = 'v';\n          len = Math.min(sLen, xLen, y.length);\n        } else {\n          for (i = 0; i < y.length; i++) {\n            if (autoType(y[i], calendar, opts) === 'category') {\n              hasCategories = true;\n              break;\n            }\n          }\n          if (hasCategories) {\n            defaultOrientation = 'h';\n            len = Math.min(sLen, x.length, yLen);\n          } else {\n            defaultOrientation = 'v';\n            len = Math.min(sLen, xLen, y.length);\n          }\n        }\n        break;\n    }\n  } else if (yDims > 0) {\n    defaultOrientation = 'v';\n    if (xDims > 0) {\n      len = Math.min(xLen, yLen);\n    } else {\n      len = Math.min(yLen);\n    }\n  } else if (xDims > 0) {\n    defaultOrientation = 'h';\n    len = Math.min(xLen);\n  } else {\n    len = 0;\n  }\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  traceOut._length = len;\n  var orientation = coerce('orientation', defaultOrientation);\n\n  // these are just used for positioning, they never define the sample\n  if (traceOut._hasPreCompStats) {\n    if (orientation === 'v' && xDims === 0) {\n      coerce('x0', 0);\n      coerce('dx', 1);\n    } else if (orientation === 'h' && yDims === 0) {\n      coerce('y0', 0);\n      coerce('dy', 1);\n    }\n  } else {\n    if (orientation === 'v' && xDims === 0) {\n      coerce('x0');\n    } else if (orientation === 'h' && yDims === 0) {\n      coerce('y0');\n    }\n  }\n  var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults');\n  handleCalendarDefaults(traceIn, traceOut, ['x', 'y'], layout);\n}\nfunction handlePointsDefaults(traceIn, traceOut, coerce, opts) {\n  var prefix = opts.prefix;\n  var outlierColorDflt = Lib.coerce2(traceIn, traceOut, attributes, 'marker.outliercolor');\n  var lineoutliercolor = coerce('marker.line.outliercolor');\n  var modeDflt = 'outliers';\n  if (traceOut._hasPreCompStats) {\n    modeDflt = 'all';\n  } else if (outlierColorDflt || lineoutliercolor) {\n    modeDflt = 'suspectedoutliers';\n  }\n  var mode = coerce(prefix + 'points', modeDflt);\n  if (mode) {\n    coerce('jitter', mode === 'all' ? 0.3 : 0);\n    coerce('pointpos', mode === 'all' ? -1.5 : 0);\n    coerce('marker.symbol');\n    coerce('marker.opacity');\n    coerce('marker.size');\n    coerce('marker.angle');\n    coerce('marker.color', traceOut.line.color);\n    coerce('marker.line.color');\n    coerce('marker.line.width');\n    if (mode === 'suspectedoutliers') {\n      coerce('marker.line.outliercolor', traceOut.marker.color);\n      coerce('marker.line.outlierwidth');\n    }\n    coerce('selected.marker.color');\n    coerce('unselected.marker.color');\n    coerce('selected.marker.size');\n    coerce('unselected.marker.size');\n    coerce('text');\n    coerce('hovertext');\n  } else {\n    delete traceOut.marker;\n  }\n  var hoveron = coerce('hoveron');\n  if (hoveron === 'all' || hoveron.indexOf('points') !== -1) {\n    coerce('hovertemplate');\n  }\n  Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n}\nfunction crossTraceDefaults(fullData, fullLayout) {\n  var traceIn, traceOut;\n  function coerce(attr) {\n    return Lib.coerce(traceOut._input, traceOut, attributes, attr);\n  }\n  for (var i = 0; i < fullData.length; i++) {\n    traceOut = fullData[i];\n    var traceType = traceOut.type;\n    if (traceType === 'box' || traceType === 'violin') {\n      traceIn = traceOut._input;\n      if (fullLayout[traceType + 'mode'] === 'group') {\n        handleGroupingDefaults(traceIn, traceOut, fullLayout, coerce);\n      }\n    }\n  }\n}\nmodule.exports = {\n  supplyDefaults: supplyDefaults,\n  crossTraceDefaults: crossTraceDefaults,\n  handleSampleDefaults: handleSampleDefaults,\n  handlePointsDefaults: handlePointsDefaults\n};\n\n/***/ }),\n\n/***/ 74907:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function eventData(out, pt) {\n  // Note: hoverOnBox property is needed for click-to-select\n  // to ignore when a box was clicked. This is the reason box\n  // implements this custom eventData function.\n  if (pt.hoverOnBox) out.hoverOnBox = pt.hoverOnBox;\n  if ('xVal' in pt) out.x = pt.xVal;\n  if ('yVal' in pt) out.y = pt.yVal;\n  if (pt.xa) out.xaxis = pt.xa;\n  if (pt.ya) out.yaxis = pt.ya;\n  return out;\n};\n\n/***/ }),\n\n/***/ 41868:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2219268__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_2219268__(89298);\nvar Lib = __nested_webpack_require_2219268__(71828);\nvar Fx = __nested_webpack_require_2219268__(30211);\nvar Color = __nested_webpack_require_2219268__(7901);\nvar fillText = Lib.fillText;\nfunction hoverPoints(pointData, xval, yval, hovermode) {\n  var cd = pointData.cd;\n  var trace = cd[0].trace;\n  var hoveron = trace.hoveron;\n  var closeBoxData = [];\n  var closePtData;\n  if (hoveron.indexOf('boxes') !== -1) {\n    closeBoxData = closeBoxData.concat(hoverOnBoxes(pointData, xval, yval, hovermode));\n  }\n  if (hoveron.indexOf('points') !== -1) {\n    closePtData = hoverOnPoints(pointData, xval, yval);\n  }\n\n  // If there's a point in range and hoveron has points, show the best single point only.\n  // If hoveron has boxes and there's no point in range (or hoveron doesn't have points), show the box stats.\n  if (hovermode === 'closest') {\n    if (closePtData) return [closePtData];\n    return closeBoxData;\n  }\n\n  // Otherwise in compare mode, allow a point AND the box stats to be labeled\n  // If there are multiple boxes in range (ie boxmode = 'overlay') we'll see stats for all of them.\n  if (closePtData) {\n    closeBoxData.push(closePtData);\n    return closeBoxData;\n  }\n  return closeBoxData;\n}\nfunction hoverOnBoxes(pointData, xval, yval, hovermode) {\n  var cd = pointData.cd;\n  var xa = pointData.xa;\n  var ya = pointData.ya;\n  var trace = cd[0].trace;\n  var t = cd[0].t;\n  var isViolin = trace.type === 'violin';\n  var pLetter, vLetter, pAxis, vAxis, vVal, pVal, dx, dy, dPos, hoverPseudoDistance, spikePseudoDistance;\n  var boxDelta = t.bdPos;\n  var boxDeltaPos, boxDeltaNeg;\n  var posAcceptance = t.wHover;\n  var shiftPos = function (di) {\n    return pAxis.c2l(di.pos) + t.bPos - pAxis.c2l(pVal);\n  };\n  if (isViolin && trace.side !== 'both') {\n    if (trace.side === 'positive') {\n      dPos = function (di) {\n        var pos = shiftPos(di);\n        return Fx.inbox(pos, pos + posAcceptance, hoverPseudoDistance);\n      };\n      boxDeltaPos = boxDelta;\n      boxDeltaNeg = 0;\n    }\n    if (trace.side === 'negative') {\n      dPos = function (di) {\n        var pos = shiftPos(di);\n        return Fx.inbox(pos - posAcceptance, pos, hoverPseudoDistance);\n      };\n      boxDeltaPos = 0;\n      boxDeltaNeg = boxDelta;\n    }\n  } else {\n    dPos = function (di) {\n      var pos = shiftPos(di);\n      return Fx.inbox(pos - posAcceptance, pos + posAcceptance, hoverPseudoDistance);\n    };\n    boxDeltaPos = boxDeltaNeg = boxDelta;\n  }\n  var dVal;\n  if (isViolin) {\n    dVal = function (di) {\n      return Fx.inbox(di.span[0] - vVal, di.span[1] - vVal, hoverPseudoDistance);\n    };\n  } else {\n    dVal = function (di) {\n      return Fx.inbox(di.min - vVal, di.max - vVal, hoverPseudoDistance);\n    };\n  }\n  if (trace.orientation === 'h') {\n    vVal = xval;\n    pVal = yval;\n    dx = dVal;\n    dy = dPos;\n    pLetter = 'y';\n    pAxis = ya;\n    vLetter = 'x';\n    vAxis = xa;\n  } else {\n    vVal = yval;\n    pVal = xval;\n    dx = dPos;\n    dy = dVal;\n    pLetter = 'x';\n    pAxis = xa;\n    vLetter = 'y';\n    vAxis = ya;\n  }\n\n  // if two boxes are overlaying, let the narrowest one win\n  var pseudoDistance = Math.min(1, boxDelta / Math.abs(pAxis.r2c(pAxis.range[1]) - pAxis.r2c(pAxis.range[0])));\n  hoverPseudoDistance = pointData.maxHoverDistance - pseudoDistance;\n  spikePseudoDistance = pointData.maxSpikeDistance - pseudoDistance;\n  function dxy(di) {\n    return (dx(di) + dy(di)) / 2;\n  }\n  var distfn = Fx.getDistanceFunction(hovermode, dx, dy, dxy);\n  Fx.getClosest(cd, distfn, pointData);\n\n  // skip the rest (for this trace) if we didn't find a close point\n  // and create the item(s) in closedata for this point\n  if (pointData.index === false) return [];\n  var di = cd[pointData.index];\n  var lc = trace.line.color;\n  var mc = (trace.marker || {}).color;\n  if (Color.opacity(lc) && trace.line.width) pointData.color = lc;else if (Color.opacity(mc) && trace.boxpoints) pointData.color = mc;else pointData.color = trace.fillcolor;\n  pointData[pLetter + '0'] = pAxis.c2p(di.pos + t.bPos - boxDeltaNeg, true);\n  pointData[pLetter + '1'] = pAxis.c2p(di.pos + t.bPos + boxDeltaPos, true);\n  pointData[pLetter + 'LabelVal'] = di.orig_p !== undefined ? di.orig_p : di.pos;\n  var spikePosAttr = pLetter + 'Spike';\n  pointData.spikeDistance = dxy(di) * spikePseudoDistance / hoverPseudoDistance;\n  pointData[spikePosAttr] = pAxis.c2p(di.pos, true);\n  var hasMean = trace.boxmean || (trace.meanline || {}).visible;\n  var hasFences = trace.boxpoints || trace.points;\n\n  // labels with equal values (e.g. when min === q1) should still be presented in the order they have when they're unequal\n  var attrs = hasFences && hasMean ? ['max', 'uf', 'q3', 'med', 'mean', 'q1', 'lf', 'min'] : hasFences && !hasMean ? ['max', 'uf', 'q3', 'med', 'q1', 'lf', 'min'] : !hasFences && hasMean ? ['max', 'q3', 'med', 'mean', 'q1', 'min'] : ['max', 'q3', 'med', 'q1', 'min'];\n  var rev = vAxis.range[1] < vAxis.range[0];\n  if (trace.orientation === (rev ? 'v' : 'h')) {\n    attrs.reverse();\n  }\n  var spikeDistance = pointData.spikeDistance;\n  var spikePosition = pointData[spikePosAttr];\n  var closeBoxData = [];\n  for (var i = 0; i < attrs.length; i++) {\n    var attr = attrs[i];\n    if (!(attr in di)) continue;\n\n    // copy out to a new object for each value to label\n    var val = di[attr];\n    var valPx = vAxis.c2p(val, true);\n    var pointData2 = Lib.extendFlat({}, pointData);\n    pointData2.attr = attr;\n    pointData2[vLetter + '0'] = pointData2[vLetter + '1'] = valPx;\n    pointData2[vLetter + 'LabelVal'] = val;\n    pointData2[vLetter + 'Label'] = (t.labels ? t.labels[attr] + ' ' : '') + Axes.hoverLabelText(vAxis, val, trace[vLetter + 'hoverformat']);\n\n    // Note: introduced to be able to distinguish a\n    // clicked point from a box during click-to-select\n    pointData2.hoverOnBox = true;\n    if (attr === 'mean' && 'sd' in di && trace.boxmean === 'sd') {\n      pointData2[vLetter + 'err'] = di.sd;\n    }\n\n    // no hovertemplate support yet\n    pointData2.hovertemplate = false;\n    closeBoxData.push(pointData2);\n  }\n\n  // only keep name and spikes on the median\n  pointData.name = '';\n  pointData.spikeDistance = undefined;\n  pointData[spikePosAttr] = undefined;\n  for (var k = 0; k < closeBoxData.length; k++) {\n    if (closeBoxData[k].attr !== 'med') {\n      closeBoxData[k].name = '';\n      closeBoxData[k].spikeDistance = undefined;\n      closeBoxData[k][spikePosAttr] = undefined;\n    } else {\n      closeBoxData[k].spikeDistance = spikeDistance;\n      closeBoxData[k][spikePosAttr] = spikePosition;\n    }\n  }\n  return closeBoxData;\n}\nfunction hoverOnPoints(pointData, xval, yval) {\n  var cd = pointData.cd;\n  var xa = pointData.xa;\n  var ya = pointData.ya;\n  var trace = cd[0].trace;\n  var xPx = xa.c2p(xval);\n  var yPx = ya.c2p(yval);\n  var closePtData;\n  var dx = function (di) {\n    var rad = Math.max(3, di.mrc || 0);\n    return Math.max(Math.abs(xa.c2p(di.x) - xPx) - rad, 1 - 3 / rad);\n  };\n  var dy = function (di) {\n    var rad = Math.max(3, di.mrc || 0);\n    return Math.max(Math.abs(ya.c2p(di.y) - yPx) - rad, 1 - 3 / rad);\n  };\n  var distfn = Fx.quadrature(dx, dy);\n\n  // show one point per trace\n  var ijClosest = false;\n  var di, pt;\n  for (var i = 0; i < cd.length; i++) {\n    di = cd[i];\n    for (var j = 0; j < (di.pts || []).length; j++) {\n      pt = di.pts[j];\n      var newDistance = distfn(pt);\n      if (newDistance <= pointData.distance) {\n        pointData.distance = newDistance;\n        ijClosest = [i, j];\n      }\n    }\n  }\n  if (!ijClosest) return false;\n  di = cd[ijClosest[0]];\n  pt = di.pts[ijClosest[1]];\n  var xc = xa.c2p(pt.x, true);\n  var yc = ya.c2p(pt.y, true);\n  var rad = pt.mrc || 1;\n  closePtData = Lib.extendFlat({}, pointData, {\n    // corresponds to index in x/y input data array\n    index: pt.i,\n    color: (trace.marker || {}).color,\n    name: trace.name,\n    x0: xc - rad,\n    x1: xc + rad,\n    y0: yc - rad,\n    y1: yc + rad,\n    spikeDistance: pointData.distance,\n    hovertemplate: trace.hovertemplate\n  });\n  var origPos = di.orig_p;\n  var pos = origPos !== undefined ? origPos : di.pos;\n  var pa;\n  if (trace.orientation === 'h') {\n    pa = ya;\n    closePtData.xLabelVal = pt.x;\n    closePtData.yLabelVal = pos;\n  } else {\n    pa = xa;\n    closePtData.xLabelVal = pos;\n    closePtData.yLabelVal = pt.y;\n  }\n  var pLetter = pa._id.charAt(0);\n  closePtData[pLetter + 'Spike'] = pa.c2p(di.pos, true);\n  fillText(pt, trace, closePtData);\n  return closePtData;\n}\nmodule.exports = {\n  hoverPoints: hoverPoints,\n  hoverOnBoxes: hoverOnBoxes,\n  hoverOnPoints: hoverOnPoints\n};\n\n/***/ }),\n\n/***/ 83832:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2227912__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2227912__(53522),\n  layoutAttributes: __nested_webpack_require_2227912__(40094),\n  supplyDefaults: (__nested_webpack_require_2227912__(36411).supplyDefaults),\n  crossTraceDefaults: (__nested_webpack_require_2227912__(36411).crossTraceDefaults),\n  supplyLayoutDefaults: (__nested_webpack_require_2227912__(4199).supplyLayoutDefaults),\n  calc: __nested_webpack_require_2227912__(48518),\n  crossTraceCalc: (__nested_webpack_require_2227912__(37188).crossTraceCalc),\n  plot: (__nested_webpack_require_2227912__(86047).plot),\n  style: (__nested_webpack_require_2227912__(58063).style),\n  styleOnSelect: (__nested_webpack_require_2227912__(58063).styleOnSelect),\n  hoverPoints: (__nested_webpack_require_2227912__(41868).hoverPoints),\n  eventData: __nested_webpack_require_2227912__(74907),\n  selectPoints: __nested_webpack_require_2227912__(24626),\n  moduleType: 'trace',\n  name: 'box',\n  basePlotModule: __nested_webpack_require_2227912__(93612),\n  categories: ['cartesian', 'svg', 'symbols', 'oriented', 'box-violin', 'showLegend', 'boxLayout', 'zoomScale'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 40094:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  boxmode: {\n    valType: 'enumerated',\n    values: ['group', 'overlay'],\n    dflt: 'overlay',\n    editType: 'calc'\n  },\n  boxgap: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 0.3,\n    editType: 'calc'\n  },\n  boxgroupgap: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 0.3,\n    editType: 'calc'\n  }\n};\n\n/***/ }),\n\n/***/ 4199:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2229359__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_2229359__(73972);\nvar Lib = __nested_webpack_require_2229359__(71828);\nvar layoutAttributes = __nested_webpack_require_2229359__(40094);\nfunction _supply(layoutIn, layoutOut, fullData, coerce, traceType) {\n  var category = traceType + 'Layout';\n  var hasTraceType = false;\n  for (var i = 0; i < fullData.length; i++) {\n    var trace = fullData[i];\n    if (Registry.traceIs(trace, category)) {\n      hasTraceType = true;\n      break;\n    }\n  }\n  if (!hasTraceType) return;\n  coerce(traceType + 'mode');\n  coerce(traceType + 'gap');\n  coerce(traceType + 'groupgap');\n}\nfunction supplyLayoutDefaults(layoutIn, layoutOut, fullData) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n  }\n  _supply(layoutIn, layoutOut, fullData, coerce, 'box');\n}\nmodule.exports = {\n  supplyLayoutDefaults: supplyLayoutDefaults,\n  _supply: _supply\n};\n\n/***/ }),\n\n/***/ 86047:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2230355__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2230355__(39898);\nvar Lib = __nested_webpack_require_2230355__(71828);\nvar Drawing = __nested_webpack_require_2230355__(91424);\n\n// constants for dynamic jitter (ie less jitter for sparser points)\nvar JITTERCOUNT = 5; // points either side of this to include\nvar JITTERSPREAD = 0.01; // fraction of IQR to count as \"dense\"\n\nfunction plot(gd, plotinfo, cdbox, boxLayer) {\n  var isStatic = gd._context.staticPlot;\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  Lib.makeTraceGroups(boxLayer, cdbox, 'trace boxes').each(function (cd) {\n    var plotGroup = d3.select(this);\n    var cd0 = cd[0];\n    var t = cd0.t;\n    var trace = cd0.trace;\n\n    // whisker width\n    t.wdPos = t.bdPos * trace.whiskerwidth;\n    if (trace.visible !== true || t.empty) {\n      plotGroup.remove();\n      return;\n    }\n    var posAxis, valAxis;\n    if (trace.orientation === 'h') {\n      posAxis = ya;\n      valAxis = xa;\n    } else {\n      posAxis = xa;\n      valAxis = ya;\n    }\n    plotBoxAndWhiskers(plotGroup, {\n      pos: posAxis,\n      val: valAxis\n    }, trace, t, isStatic);\n    plotPoints(plotGroup, {\n      x: xa,\n      y: ya\n    }, trace, t);\n    plotBoxMean(plotGroup, {\n      pos: posAxis,\n      val: valAxis\n    }, trace, t);\n  });\n}\nfunction plotBoxAndWhiskers(sel, axes, trace, t, isStatic) {\n  var isHorizontal = trace.orientation === 'h';\n  var valAxis = axes.val;\n  var posAxis = axes.pos;\n  var posHasRangeBreaks = !!posAxis.rangebreaks;\n  var bPos = t.bPos;\n  var wdPos = t.wdPos || 0;\n  var bPosPxOffset = t.bPosPxOffset || 0;\n  var whiskerWidth = trace.whiskerwidth || 0;\n  var notched = trace.notched || false;\n  var nw = notched ? 1 - 2 * trace.notchwidth : 1;\n\n  // to support for one-sided box\n  var bdPos0;\n  var bdPos1;\n  if (Array.isArray(t.bdPos)) {\n    bdPos0 = t.bdPos[0];\n    bdPos1 = t.bdPos[1];\n  } else {\n    bdPos0 = t.bdPos;\n    bdPos1 = t.bdPos;\n  }\n  var paths = sel.selectAll('path.box').data(trace.type !== 'violin' || trace.box.visible ? Lib.identity : []);\n  paths.enter().append('path').style('vector-effect', isStatic ? 'none' : 'non-scaling-stroke').attr('class', 'box');\n  paths.exit().remove();\n  paths.each(function (d) {\n    if (d.empty) return 'M0,0Z';\n    var lcenter = posAxis.c2l(d.pos + bPos, true);\n    var pos0 = posAxis.l2p(lcenter - bdPos0) + bPosPxOffset;\n    var pos1 = posAxis.l2p(lcenter + bdPos1) + bPosPxOffset;\n    var posc = posHasRangeBreaks ? (pos0 + pos1) / 2 : posAxis.l2p(lcenter) + bPosPxOffset;\n    var r = trace.whiskerwidth;\n    var posw0 = posHasRangeBreaks ? pos0 * r + (1 - r) * posc : posAxis.l2p(lcenter - wdPos) + bPosPxOffset;\n    var posw1 = posHasRangeBreaks ? pos1 * r + (1 - r) * posc : posAxis.l2p(lcenter + wdPos) + bPosPxOffset;\n    var posm0 = posAxis.l2p(lcenter - bdPos0 * nw) + bPosPxOffset;\n    var posm1 = posAxis.l2p(lcenter + bdPos1 * nw) + bPosPxOffset;\n    var q1 = valAxis.c2p(d.q1, true);\n    var q3 = valAxis.c2p(d.q3, true);\n    // make sure median isn't identical to either of the\n    // quartiles, so we can see it\n    var m = Lib.constrain(valAxis.c2p(d.med, true), Math.min(q1, q3) + 1, Math.max(q1, q3) - 1);\n\n    // for compatibility with box, violin, and candlestick\n    // perhaps we should put this into cd0.t instead so it's more explicit,\n    // but what we have now is:\n    // - box always has d.lf, but boxpoints can be anything\n    // - violin has d.lf and should always use it (boxpoints is undefined)\n    // - candlestick has only min/max\n    var useExtremes = d.lf === undefined || trace.boxpoints === false;\n    var lf = valAxis.c2p(useExtremes ? d.min : d.lf, true);\n    var uf = valAxis.c2p(useExtremes ? d.max : d.uf, true);\n    var ln = valAxis.c2p(d.ln, true);\n    var un = valAxis.c2p(d.un, true);\n    if (isHorizontal) {\n      d3.select(this).attr('d', 'M' + m + ',' + posm0 + 'V' + posm1 +\n      // median line\n      'M' + q1 + ',' + pos0 + 'V' + pos1 + (\n      // left edge\n      notched ? 'H' + ln + 'L' + m + ',' + posm1 + 'L' + un + ',' + pos1 : '') +\n      // top notched edge\n      'H' + q3 +\n      // end of the top edge\n      'V' + pos0 + (\n      // right edge\n      notched ? 'H' + un + 'L' + m + ',' + posm0 + 'L' + ln + ',' + pos0 : '') +\n      // bottom notched edge\n      'Z' +\n      // end of the box\n      'M' + q1 + ',' + posc + 'H' + lf + 'M' + q3 + ',' + posc + 'H' + uf + (\n      // whiskers\n      whiskerWidth === 0 ? '' :\n      // whisker caps\n      'M' + lf + ',' + posw0 + 'V' + posw1 + 'M' + uf + ',' + posw0 + 'V' + posw1));\n    } else {\n      d3.select(this).attr('d', 'M' + posm0 + ',' + m + 'H' + posm1 +\n      // median line\n      'M' + pos0 + ',' + q1 + 'H' + pos1 + (\n      // top of the box\n      notched ? 'V' + ln + 'L' + posm1 + ',' + m + 'L' + pos1 + ',' + un : '') +\n      // notched right edge\n      'V' + q3 +\n      // end of the right edge\n      'H' + pos0 + (\n      // bottom of the box\n      notched ? 'V' + un + 'L' + posm0 + ',' + m + 'L' + pos0 + ',' + ln : '') +\n      // notched left edge\n      'Z' +\n      // end of the box\n      'M' + posc + ',' + q1 + 'V' + lf + 'M' + posc + ',' + q3 + 'V' + uf + (\n      // whiskers\n      whiskerWidth === 0 ? '' :\n      // whisker caps\n      'M' + posw0 + ',' + lf + 'H' + posw1 + 'M' + posw0 + ',' + uf + 'H' + posw1));\n    }\n  });\n}\nfunction plotPoints(sel, axes, trace, t) {\n  var xa = axes.x;\n  var ya = axes.y;\n  var bdPos = t.bdPos;\n  var bPos = t.bPos;\n\n  // to support violin points\n  var mode = trace.boxpoints || trace.points;\n\n  // repeatable pseudo-random number generator\n  Lib.seedPseudoRandom();\n\n  // since box plot points get an extra level of nesting, each\n  // box needs the trace styling info\n  var fn = function (d) {\n    d.forEach(function (v) {\n      v.t = t;\n      v.trace = trace;\n    });\n    return d;\n  };\n  var gPoints = sel.selectAll('g.points').data(mode ? fn : []);\n  gPoints.enter().append('g').attr('class', 'points');\n  gPoints.exit().remove();\n  var paths = gPoints.selectAll('path').data(function (d) {\n    var i;\n    var pts = d.pts2;\n\n    // normally use IQR, but if this is 0 or too small, use max-min\n    var typicalSpread = Math.max((d.max - d.min) / 10, d.q3 - d.q1);\n    var minSpread = typicalSpread * 1e-9;\n    var spreadLimit = typicalSpread * JITTERSPREAD;\n    var jitterFactors = [];\n    var maxJitterFactor = 0;\n    var newJitter;\n\n    // dynamic jitter\n    if (trace.jitter) {\n      if (typicalSpread === 0) {\n        // edge case of no spread at all: fall back to max jitter\n        maxJitterFactor = 1;\n        jitterFactors = new Array(pts.length);\n        for (i = 0; i < pts.length; i++) {\n          jitterFactors[i] = 1;\n        }\n      } else {\n        for (i = 0; i < pts.length; i++) {\n          var i0 = Math.max(0, i - JITTERCOUNT);\n          var pmin = pts[i0].v;\n          var i1 = Math.min(pts.length - 1, i + JITTERCOUNT);\n          var pmax = pts[i1].v;\n          if (mode !== 'all') {\n            if (pts[i].v < d.lf) pmax = Math.min(pmax, d.lf);else pmin = Math.max(pmin, d.uf);\n          }\n          var jitterFactor = Math.sqrt(spreadLimit * (i1 - i0) / (pmax - pmin + minSpread)) || 0;\n          jitterFactor = Lib.constrain(Math.abs(jitterFactor), 0, 1);\n          jitterFactors.push(jitterFactor);\n          maxJitterFactor = Math.max(jitterFactor, maxJitterFactor);\n        }\n      }\n      newJitter = trace.jitter * 2 / (maxJitterFactor || 1);\n    }\n\n    // fills in 'x' and 'y' in calcdata 'pts' item\n    for (i = 0; i < pts.length; i++) {\n      var pt = pts[i];\n      var v = pt.v;\n      var jitterOffset = trace.jitter ? newJitter * jitterFactors[i] * (Lib.pseudoRandom() - 0.5) : 0;\n      var posPx = d.pos + bPos + bdPos * (trace.pointpos + jitterOffset);\n      if (trace.orientation === 'h') {\n        pt.y = posPx;\n        pt.x = v;\n      } else {\n        pt.x = posPx;\n        pt.y = v;\n      }\n\n      // tag suspected outliers\n      if (mode === 'suspectedoutliers' && v < d.uo && v > d.lo) {\n        pt.so = true;\n      }\n    }\n    return pts;\n  });\n  paths.enter().append('path').classed('point', true);\n  paths.exit().remove();\n  paths.call(Drawing.translatePoints, xa, ya);\n}\nfunction plotBoxMean(sel, axes, trace, t) {\n  var valAxis = axes.val;\n  var posAxis = axes.pos;\n  var posHasRangeBreaks = !!posAxis.rangebreaks;\n  var bPos = t.bPos;\n  var bPosPxOffset = t.bPosPxOffset || 0;\n\n  // to support violin mean lines\n  var mode = trace.boxmean || (trace.meanline || {}).visible;\n\n  // to support for one-sided box\n  var bdPos0;\n  var bdPos1;\n  if (Array.isArray(t.bdPos)) {\n    bdPos0 = t.bdPos[0];\n    bdPos1 = t.bdPos[1];\n  } else {\n    bdPos0 = t.bdPos;\n    bdPos1 = t.bdPos;\n  }\n  var paths = sel.selectAll('path.mean').data(trace.type === 'box' && trace.boxmean || trace.type === 'violin' && trace.box.visible && trace.meanline.visible ? Lib.identity : []);\n  paths.enter().append('path').attr('class', 'mean').style({\n    fill: 'none',\n    'vector-effect': 'non-scaling-stroke'\n  });\n  paths.exit().remove();\n  paths.each(function (d) {\n    var lcenter = posAxis.c2l(d.pos + bPos, true);\n    var pos0 = posAxis.l2p(lcenter - bdPos0) + bPosPxOffset;\n    var pos1 = posAxis.l2p(lcenter + bdPos1) + bPosPxOffset;\n    var posc = posHasRangeBreaks ? (pos0 + pos1) / 2 : posAxis.l2p(lcenter) + bPosPxOffset;\n    var m = valAxis.c2p(d.mean, true);\n    var sl = valAxis.c2p(d.mean - d.sd, true);\n    var sh = valAxis.c2p(d.mean + d.sd, true);\n    if (trace.orientation === 'h') {\n      d3.select(this).attr('d', 'M' + m + ',' + pos0 + 'V' + pos1 + (mode === 'sd' ? 'm0,0L' + sl + ',' + posc + 'L' + m + ',' + pos0 + 'L' + sh + ',' + posc + 'Z' : ''));\n    } else {\n      d3.select(this).attr('d', 'M' + pos0 + ',' + m + 'H' + pos1 + (mode === 'sd' ? 'm0,0L' + posc + ',' + sl + 'L' + pos0 + ',' + m + 'L' + posc + ',' + sh + 'Z' : ''));\n    }\n  });\n}\nmodule.exports = {\n  plot: plot,\n  plotBoxAndWhiskers: plotBoxAndWhiskers,\n  plotPoints: plotPoints,\n  plotBoxMean: plotBoxMean\n};\n\n/***/ }),\n\n/***/ 24626:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function selectPoints(searchInfo, selectionTester) {\n  var cd = searchInfo.cd;\n  var xa = searchInfo.xaxis;\n  var ya = searchInfo.yaxis;\n  var selection = [];\n  var i, j;\n  if (selectionTester === false) {\n    for (i = 0; i < cd.length; i++) {\n      for (j = 0; j < (cd[i].pts || []).length; j++) {\n        // clear selection\n        cd[i].pts[j].selected = 0;\n      }\n    }\n  } else {\n    for (i = 0; i < cd.length; i++) {\n      for (j = 0; j < (cd[i].pts || []).length; j++) {\n        var pt = cd[i].pts[j];\n        var x = xa.c2p(pt.x);\n        var y = ya.c2p(pt.y);\n        if (selectionTester.contains([x, y], null, pt.i, searchInfo)) {\n          selection.push({\n            pointNumber: pt.i,\n            x: xa.c2d(pt.x),\n            y: ya.c2d(pt.y)\n          });\n          pt.selected = 1;\n        } else {\n          pt.selected = 0;\n        }\n      }\n    }\n  }\n  return selection;\n};\n\n/***/ }),\n\n/***/ 58063:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2241309__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2241309__(39898);\nvar Color = __nested_webpack_require_2241309__(7901);\nvar Drawing = __nested_webpack_require_2241309__(91424);\nfunction style(gd, cd, sel) {\n  var s = sel ? sel : d3.select(gd).selectAll('g.trace.boxes');\n  s.style('opacity', function (d) {\n    return d[0].trace.opacity;\n  });\n  s.each(function (d) {\n    var el = d3.select(this);\n    var trace = d[0].trace;\n    var lineWidth = trace.line.width;\n    function styleBox(boxSel, lineWidth, lineColor, fillColor) {\n      boxSel.style('stroke-width', lineWidth + 'px').call(Color.stroke, lineColor).call(Color.fill, fillColor);\n    }\n    var allBoxes = el.selectAll('path.box');\n    if (trace.type === 'candlestick') {\n      allBoxes.each(function (boxData) {\n        if (boxData.empty) return;\n        var thisBox = d3.select(this);\n        var container = trace[boxData.dir]; // dir = 'increasing' or 'decreasing'\n        styleBox(thisBox, container.line.width, container.line.color, container.fillcolor);\n        // TODO: custom selection style for candlesticks\n        thisBox.style('opacity', trace.selectedpoints && !boxData.selected ? 0.3 : 1);\n      });\n    } else {\n      styleBox(allBoxes, lineWidth, trace.line.color, trace.fillcolor);\n      el.selectAll('path.mean').style({\n        'stroke-width': lineWidth,\n        'stroke-dasharray': 2 * lineWidth + 'px,' + lineWidth + 'px'\n      }).call(Color.stroke, trace.line.color);\n      var pts = el.selectAll('path.point');\n      Drawing.pointStyle(pts, trace, gd);\n    }\n  });\n}\nfunction styleOnSelect(gd, cd, sel) {\n  var trace = cd[0].trace;\n  var pts = sel.selectAll('path.point');\n  if (trace.selectedpoints) {\n    Drawing.selectedPointStyle(pts, trace);\n  } else {\n    Drawing.pointStyle(pts, trace, gd);\n  }\n}\nmodule.exports = {\n  style: style,\n  styleOnSelect: styleOnSelect\n};\n\n/***/ }),\n\n/***/ 75343:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2243222__) {\n\n\"use strict\";\n\n\nvar extendFlat = (__nested_webpack_require_2243222__(71828).extendFlat);\nvar axisHoverFormat = (__nested_webpack_require_2243222__(12663).axisHoverFormat);\nvar OHLCattrs = __nested_webpack_require_2243222__(2522);\nvar boxAttrs = __nested_webpack_require_2243222__(53522);\nfunction directionAttrs(lineColorDefault) {\n  return {\n    line: {\n      color: extendFlat({}, boxAttrs.line.color, {\n        dflt: lineColorDefault\n      }),\n      width: boxAttrs.line.width,\n      editType: 'style'\n    },\n    fillcolor: boxAttrs.fillcolor,\n    editType: 'style'\n  };\n}\nmodule.exports = {\n  xperiod: OHLCattrs.xperiod,\n  xperiod0: OHLCattrs.xperiod0,\n  xperiodalignment: OHLCattrs.xperiodalignment,\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  x: OHLCattrs.x,\n  open: OHLCattrs.open,\n  high: OHLCattrs.high,\n  low: OHLCattrs.low,\n  close: OHLCattrs.close,\n  line: {\n    width: extendFlat({}, boxAttrs.line.width, {}),\n    editType: 'style'\n  },\n  increasing: directionAttrs(OHLCattrs.increasing.line.color.dflt),\n  decreasing: directionAttrs(OHLCattrs.decreasing.line.color.dflt),\n  text: OHLCattrs.text,\n  hovertext: OHLCattrs.hovertext,\n  whiskerwidth: extendFlat({}, boxAttrs.whiskerwidth, {\n    dflt: 0\n  }),\n  hoverlabel: OHLCattrs.hoverlabel\n};\n\n/***/ }),\n\n/***/ 41197:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2244551__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2244551__(71828);\nvar Axes = __nested_webpack_require_2244551__(89298);\nvar alignPeriod = __nested_webpack_require_2244551__(42973);\nvar calcCommon = (__nested_webpack_require_2244551__(3485).calcCommon);\nmodule.exports = function (gd, trace) {\n  var fullLayout = gd._fullLayout;\n  var xa = Axes.getFromId(gd, trace.xaxis);\n  var ya = Axes.getFromId(gd, trace.yaxis);\n  var origX = xa.makeCalcdata(trace, 'x');\n  var x = alignPeriod(trace, xa, 'x', origX).vals;\n  var cd = calcCommon(gd, trace, origX, x, ya, ptFunc);\n  if (cd.length) {\n    Lib.extendFlat(cd[0].t, {\n      num: fullLayout._numBoxes,\n      dPos: Lib.distinctVals(x).minDiff / 2,\n      posLetter: 'x',\n      valLetter: 'y'\n    });\n    fullLayout._numBoxes++;\n    return cd;\n  } else {\n    return [{\n      t: {\n        empty: true\n      }\n    }];\n  }\n};\nfunction ptFunc(o, h, l, c) {\n  return {\n    min: l,\n    q1: Math.min(o, c),\n    med: c,\n    q3: Math.max(o, c),\n    max: h\n  };\n}\n\n/***/ }),\n\n/***/ 1026:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2245589__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2245589__(71828);\nvar Color = __nested_webpack_require_2245589__(7901);\nvar handleOHLC = __nested_webpack_require_2245589__(14555);\nvar handlePeriodDefaults = __nested_webpack_require_2245589__(73927);\nvar attributes = __nested_webpack_require_2245589__(75343);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var len = handleOHLC(traceIn, traceOut, coerce, layout);\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  handlePeriodDefaults(traceIn, traceOut, layout, coerce, {\n    x: true\n  });\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  coerce('line.width');\n  handleDirection(traceIn, traceOut, coerce, 'increasing');\n  handleDirection(traceIn, traceOut, coerce, 'decreasing');\n  coerce('text');\n  coerce('hovertext');\n  coerce('whiskerwidth');\n  layout._requestRangeslider[traceOut.xaxis] = true;\n};\nfunction handleDirection(traceIn, traceOut, coerce, direction) {\n  var lineColor = coerce(direction + '.line.color');\n  coerce(direction + '.line.width', traceOut.line.width);\n  coerce(direction + '.fillcolor', Color.addOpacity(lineColor, 0.5));\n}\n\n/***/ }),\n\n/***/ 91815:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2246876__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'trace',\n  name: 'candlestick',\n  basePlotModule: __nested_webpack_require_2246876__(93612),\n  categories: ['cartesian', 'svg', 'showLegend', 'candlestick', 'boxLayout'],\n  meta: {},\n  attributes: __nested_webpack_require_2246876__(75343),\n  layoutAttributes: __nested_webpack_require_2246876__(40094),\n  supplyLayoutDefaults: (__nested_webpack_require_2246876__(4199).supplyLayoutDefaults),\n  crossTraceCalc: (__nested_webpack_require_2246876__(37188).crossTraceCalc),\n  supplyDefaults: __nested_webpack_require_2246876__(1026),\n  calc: __nested_webpack_require_2246876__(41197),\n  plot: (__nested_webpack_require_2246876__(86047).plot),\n  layerName: 'boxlayer',\n  style: (__nested_webpack_require_2246876__(58063).style),\n  hoverPoints: (__nested_webpack_require_2246876__(66449).hoverPoints),\n  selectPoints: __nested_webpack_require_2246876__(67324)\n};\n\n/***/ }),\n\n/***/ 13145:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2247716__) {\n\n\"use strict\";\n\n\nvar handleAxisDefaults = __nested_webpack_require_2247716__(11500);\nvar Template = __nested_webpack_require_2247716__(44467);\nmodule.exports = function handleABDefaults(traceIn, traceOut, fullLayout, coerce, dfltColor) {\n  var a = coerce('a');\n  if (!a) {\n    coerce('da');\n    coerce('a0');\n  }\n  var b = coerce('b');\n  if (!b) {\n    coerce('db');\n    coerce('b0');\n  }\n  mimickAxisDefaults(traceIn, traceOut, fullLayout, dfltColor);\n};\nfunction mimickAxisDefaults(traceIn, traceOut, fullLayout, dfltColor) {\n  var axesList = ['aaxis', 'baxis'];\n  axesList.forEach(function (axName) {\n    var axLetter = axName.charAt(0);\n    var axIn = traceIn[axName] || {};\n    var axOut = Template.newContainer(traceOut, axName);\n    var defaultOptions = {\n      noTicklabelstep: true,\n      tickfont: 'x',\n      id: axLetter + 'axis',\n      letter: axLetter,\n      font: traceOut.font,\n      name: axName,\n      data: traceIn[axLetter],\n      calendar: traceOut.calendar,\n      dfltColor: dfltColor,\n      bgColor: fullLayout.paper_bgcolor,\n      autotypenumbersDflt: fullLayout.autotypenumbers,\n      fullLayout: fullLayout\n    };\n    handleAxisDefaults(axIn, axOut, defaultOptions);\n    axOut._categories = axOut._categories || [];\n\n    // so we don't have to repeat autotype unnecessarily,\n    // copy an autotype back to traceIn\n    if (!traceIn[axName] && axIn.type !== '-') {\n      traceIn[axName] = {\n        type: axIn.type\n      };\n    }\n  });\n}\n\n/***/ }),\n\n/***/ 402:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2249243__) {\n\n\"use strict\";\n\n\nvar isArrayOrTypedArray = (__nested_webpack_require_2249243__(71828).isArrayOrTypedArray);\nmodule.exports = function (a) {\n  return minMax(a, 0);\n};\nfunction minMax(a, depth) {\n  // Limit to ten dimensional datasets. This seems *exceedingly* unlikely to\n  // ever cause problems or even be a concern. It's include strictly so that\n  // circular arrays could never cause this to loop.\n  if (!isArrayOrTypedArray(a) || depth >= 10) {\n    return null;\n  }\n  var min = Infinity;\n  var max = -Infinity;\n  var n = a.length;\n  for (var i = 0; i < n; i++) {\n    var datum = a[i];\n    if (isArrayOrTypedArray(datum)) {\n      var result = minMax(datum, depth + 1);\n      if (result) {\n        min = Math.min(result[0], min);\n        max = Math.max(result[1], max);\n      }\n    } else {\n      min = Math.min(datum, min);\n      max = Math.max(datum, max);\n    }\n  }\n  return [min, max];\n}\n\n/***/ }),\n\n/***/ 99798:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2250220__) {\n\n\"use strict\";\n\n\nvar fontAttrs = __nested_webpack_require_2250220__(41940);\nvar axisAttrs = __nested_webpack_require_2250220__(1928);\nvar colorAttrs = __nested_webpack_require_2250220__(22399);\nvar carpetFont = fontAttrs({\n  editType: 'calc'\n});\n// TODO: inherit from global font\ncarpetFont.family.dflt = '\"Open Sans\", verdana, arial, sans-serif';\ncarpetFont.size.dflt = 12;\ncarpetFont.color.dflt = colorAttrs.defaultLine;\nmodule.exports = {\n  carpet: {\n    valType: 'string',\n    editType: 'calc'\n  },\n  x: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  y: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  a: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  a0: {\n    valType: 'number',\n    dflt: 0,\n    editType: 'calc'\n  },\n  da: {\n    valType: 'number',\n    dflt: 1,\n    editType: 'calc'\n  },\n  b: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  b0: {\n    valType: 'number',\n    dflt: 0,\n    editType: 'calc'\n  },\n  db: {\n    valType: 'number',\n    dflt: 1,\n    editType: 'calc'\n  },\n  cheaterslope: {\n    valType: 'number',\n    dflt: 1,\n    editType: 'calc'\n  },\n  aaxis: axisAttrs,\n  baxis: axisAttrs,\n  font: carpetFont,\n  color: {\n    valType: 'color',\n    dflt: colorAttrs.defaultLine,\n    editType: 'plot'\n  },\n  transforms: undefined\n};\n\n/***/ }),\n\n/***/ 4536:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2251585__) {\n\n\"use strict\";\n\n\nvar isArrayOrTypedArray = (__nested_webpack_require_2251585__(71828).isArrayOrTypedArray);\n\n/* This function retrns a set of control points that define a curve aligned along\n * either the a or b axis. Exactly one of a or b must be an array defining the range\n * spanned.\n *\n * Honestly this is the most complicated function I've implemente here so far because\n * of the way it handles knot insertion and direction/axis-agnostic slices.\n */\nmodule.exports = function (carpet, carpetcd, a, b) {\n  var idx, tangent, tanIsoIdx, tanIsoPar, segment, refidx;\n  var p0, p1, v0, v1, start, end, range;\n  var axis = isArrayOrTypedArray(a) ? 'a' : 'b';\n  var ax = axis === 'a' ? carpet.aaxis : carpet.baxis;\n  var smoothing = ax.smoothing;\n  var toIdx = axis === 'a' ? carpet.a2i : carpet.b2j;\n  var pt = axis === 'a' ? a : b;\n  var iso = axis === 'a' ? b : a;\n  var n = axis === 'a' ? carpetcd.a.length : carpetcd.b.length;\n  var m = axis === 'a' ? carpetcd.b.length : carpetcd.a.length;\n  var isoIdx = Math.floor(axis === 'a' ? carpet.b2j(iso) : carpet.a2i(iso));\n  var xy = axis === 'a' ? function (value) {\n    return carpet.evalxy([], value, isoIdx);\n  } : function (value) {\n    return carpet.evalxy([], isoIdx, value);\n  };\n  if (smoothing) {\n    tanIsoIdx = Math.max(0, Math.min(m - 2, isoIdx));\n    tanIsoPar = isoIdx - tanIsoIdx;\n    tangent = axis === 'a' ? function (i, ti) {\n      return carpet.dxydi([], i, tanIsoIdx, ti, tanIsoPar);\n    } : function (j, tj) {\n      return carpet.dxydj([], tanIsoIdx, j, tanIsoPar, tj);\n    };\n  }\n  var vstart = toIdx(pt[0]);\n  var vend = toIdx(pt[1]);\n\n  // So that we can make this work in two directions, flip all of the\n  // math functions if the direction is from higher to lower indices:\n  //\n  // Note that the tolerance is directional!\n  var dir = vstart < vend ? 1 : -1;\n  var tol = (vend - vstart) * 1e-8;\n  var dirfloor = dir > 0 ? Math.floor : Math.ceil;\n  var dirceil = dir > 0 ? Math.ceil : Math.floor;\n  var dirmin = dir > 0 ? Math.min : Math.max;\n  var dirmax = dir > 0 ? Math.max : Math.min;\n  var idx0 = dirfloor(vstart + tol);\n  var idx1 = dirceil(vend - tol);\n  p0 = xy(vstart);\n  var segments = [[p0]];\n  for (idx = idx0; idx * dir < idx1 * dir; idx += dir) {\n    segment = [];\n    start = dirmax(vstart, idx);\n    end = dirmin(vend, idx + dir);\n    range = end - start;\n\n    // In order to figure out which cell we're in for the derivative (remember,\n    // the derivatives are *not* constant across grid lines), let's just average\n    // the start and end points. This cuts out just a tiny bit of logic and\n    // there's really no computational difference:\n    refidx = Math.max(0, Math.min(n - 2, Math.floor(0.5 * (start + end))));\n    p1 = xy(end);\n    if (smoothing) {\n      v0 = tangent(refidx, start - refidx);\n      v1 = tangent(refidx, end - refidx);\n      segment.push([p0[0] + v0[0] / 3 * range, p0[1] + v0[1] / 3 * range]);\n      segment.push([p1[0] - v1[0] / 3 * range, p1[1] - v1[1] / 3 * range]);\n    }\n    segment.push(p1);\n    segments.push(segment);\n    p0 = p1;\n  }\n  return segments;\n};\n\n/***/ }),\n\n/***/ 1928:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2254751__) {\n\n\"use strict\";\n\n\nvar fontAttrs = __nested_webpack_require_2254751__(41940);\nvar colorAttrs = __nested_webpack_require_2254751__(22399);\nvar axesAttrs = __nested_webpack_require_2254751__(13838);\nvar descriptionWithDates = (__nested_webpack_require_2254751__(12663).descriptionWithDates);\nvar overrideAll = (__nested_webpack_require_2254751__(30962).overrideAll);\nvar dash = (__nested_webpack_require_2254751__(79952)/* .dash */ .P);\nvar extendFlat = (__nested_webpack_require_2254751__(1426).extendFlat);\nmodule.exports = {\n  color: {\n    valType: 'color',\n    editType: 'calc'\n  },\n  smoothing: {\n    valType: 'number',\n    dflt: 1,\n    min: 0,\n    max: 1.3,\n    editType: 'calc'\n  },\n  title: {\n    text: {\n      valType: 'string',\n      dflt: '',\n      editType: 'calc'\n    },\n    font: fontAttrs({\n      editType: 'calc'\n    }),\n    // TODO how is this different than `title.standoff`\n    offset: {\n      valType: 'number',\n      dflt: 10,\n      editType: 'calc'\n    },\n    editType: 'calc'\n  },\n  type: {\n    valType: 'enumerated',\n    // '-' means we haven't yet run autotype or couldn't find any data\n    // it gets turned into linear in gd._fullLayout but not copied back\n    // to gd.data like the others are.\n    values: ['-', 'linear', 'date', 'category'],\n    dflt: '-',\n    editType: 'calc'\n  },\n  autotypenumbers: axesAttrs.autotypenumbers,\n  autorange: {\n    valType: 'enumerated',\n    values: [true, false, 'reversed'],\n    dflt: true,\n    editType: 'calc'\n  },\n  rangemode: {\n    valType: 'enumerated',\n    values: ['normal', 'tozero', 'nonnegative'],\n    dflt: 'normal',\n    editType: 'calc'\n  },\n  range: {\n    valType: 'info_array',\n    editType: 'calc',\n    items: [{\n      valType: 'any',\n      editType: 'calc'\n    }, {\n      valType: 'any',\n      editType: 'calc'\n    }]\n  },\n  fixedrange: {\n    valType: 'boolean',\n    dflt: false,\n    editType: 'calc'\n  },\n  cheatertype: {\n    valType: 'enumerated',\n    values: ['index', 'value'],\n    dflt: 'value',\n    editType: 'calc'\n  },\n  tickmode: {\n    valType: 'enumerated',\n    values: ['linear', 'array'],\n    dflt: 'array',\n    editType: 'calc'\n  },\n  nticks: {\n    valType: 'integer',\n    min: 0,\n    dflt: 0,\n    editType: 'calc'\n  },\n  tickvals: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  ticktext: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  showticklabels: {\n    valType: 'enumerated',\n    values: ['start', 'end', 'both', 'none'],\n    dflt: 'start',\n    editType: 'calc'\n  },\n  tickfont: fontAttrs({\n    editType: 'calc'\n  }),\n  tickangle: {\n    valType: 'angle',\n    dflt: 'auto',\n    editType: 'calc'\n  },\n  tickprefix: {\n    valType: 'string',\n    dflt: '',\n    editType: 'calc'\n  },\n  showtickprefix: {\n    valType: 'enumerated',\n    values: ['all', 'first', 'last', 'none'],\n    dflt: 'all',\n    editType: 'calc'\n  },\n  ticksuffix: {\n    valType: 'string',\n    dflt: '',\n    editType: 'calc'\n  },\n  showticksuffix: {\n    valType: 'enumerated',\n    values: ['all', 'first', 'last', 'none'],\n    dflt: 'all',\n    editType: 'calc'\n  },\n  showexponent: {\n    valType: 'enumerated',\n    values: ['all', 'first', 'last', 'none'],\n    dflt: 'all',\n    editType: 'calc'\n  },\n  exponentformat: {\n    valType: 'enumerated',\n    values: ['none', 'e', 'E', 'power', 'SI', 'B'],\n    dflt: 'B',\n    editType: 'calc'\n  },\n  minexponent: {\n    valType: 'number',\n    dflt: 3,\n    min: 0,\n    editType: 'calc'\n  },\n  separatethousands: {\n    valType: 'boolean',\n    dflt: false,\n    editType: 'calc'\n  },\n  tickformat: {\n    valType: 'string',\n    dflt: '',\n    editType: 'calc',\n    description: descriptionWithDates('tick label')\n  },\n  tickformatstops: overrideAll(axesAttrs.tickformatstops, 'calc', 'from-root'),\n  categoryorder: {\n    valType: 'enumerated',\n    values: ['trace', 'category ascending', 'category descending', 'array'\n    /* , 'value ascending', 'value descending'*/ // value ascending / descending to be implemented later\n    ],\n\n    dflt: 'trace',\n    editType: 'calc'\n  },\n  categoryarray: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  labelpadding: {\n    valType: 'integer',\n    dflt: 10,\n    editType: 'calc'\n  },\n  labelprefix: {\n    valType: 'string',\n    editType: 'calc'\n  },\n  labelsuffix: {\n    valType: 'string',\n    dflt: '',\n    editType: 'calc'\n  },\n  // lines and grids\n  showline: {\n    valType: 'boolean',\n    dflt: false,\n    editType: 'calc'\n  },\n  linecolor: {\n    valType: 'color',\n    dflt: colorAttrs.defaultLine,\n    editType: 'calc'\n  },\n  linewidth: {\n    valType: 'number',\n    min: 0,\n    dflt: 1,\n    editType: 'calc'\n  },\n  gridcolor: {\n    valType: 'color',\n    editType: 'calc'\n  },\n  gridwidth: {\n    valType: 'number',\n    min: 0,\n    dflt: 1,\n    editType: 'calc'\n  },\n  griddash: extendFlat({}, dash, {\n    editType: 'calc'\n  }),\n  showgrid: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc'\n  },\n  minorgridcount: {\n    valType: 'integer',\n    min: 0,\n    dflt: 0,\n    editType: 'calc'\n  },\n  minorgridwidth: {\n    valType: 'number',\n    min: 0,\n    dflt: 1,\n    editType: 'calc'\n  },\n  minorgriddash: extendFlat({}, dash, {\n    editType: 'calc'\n  }),\n  minorgridcolor: {\n    valType: 'color',\n    dflt: colorAttrs.lightLine,\n    editType: 'calc'\n  },\n  startline: {\n    valType: 'boolean',\n    editType: 'calc'\n  },\n  startlinecolor: {\n    valType: 'color',\n    editType: 'calc'\n  },\n  startlinewidth: {\n    valType: 'number',\n    dflt: 1,\n    editType: 'calc'\n  },\n  endline: {\n    valType: 'boolean',\n    editType: 'calc'\n  },\n  endlinewidth: {\n    valType: 'number',\n    dflt: 1,\n    editType: 'calc'\n  },\n  endlinecolor: {\n    valType: 'color',\n    editType: 'calc'\n  },\n  tick0: {\n    valType: 'number',\n    min: 0,\n    dflt: 0,\n    editType: 'calc'\n  },\n  dtick: {\n    valType: 'number',\n    min: 0,\n    dflt: 1,\n    editType: 'calc'\n  },\n  arraytick0: {\n    valType: 'integer',\n    min: 0,\n    dflt: 0,\n    editType: 'calc'\n  },\n  arraydtick: {\n    valType: 'integer',\n    min: 1,\n    dflt: 1,\n    editType: 'calc'\n  },\n  _deprecated: {\n    title: {\n      valType: 'string',\n      editType: 'calc'\n    },\n    titlefont: fontAttrs({\n      editType: 'calc'\n    }),\n    titleoffset: {\n      valType: 'number',\n      dflt: 10,\n      editType: 'calc'\n    }\n  },\n  editType: 'calc'\n};\n\n/***/ }),\n\n/***/ 11500:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2261007__) {\n\n\"use strict\";\n\n\nvar carpetAttrs = __nested_webpack_require_2261007__(99798);\nvar addOpacity = (__nested_webpack_require_2261007__(7901).addOpacity);\nvar Registry = __nested_webpack_require_2261007__(73972);\nvar Lib = __nested_webpack_require_2261007__(71828);\nvar handleTickValueDefaults = __nested_webpack_require_2261007__(26218);\nvar handleTickLabelDefaults = __nested_webpack_require_2261007__(96115);\nvar handlePrefixSuffixDefaults = __nested_webpack_require_2261007__(89426);\nvar handleCategoryOrderDefaults = __nested_webpack_require_2261007__(15258);\nvar setConvert = __nested_webpack_require_2261007__(21994);\nvar autoType = __nested_webpack_require_2261007__(4322);\n\n/**\n * options: object containing:\n *\n *  letter: 'a' or 'b'\n *  title: name of the axis (ie 'Colorbar') to go in default title\n *  name: axis object name (ie 'xaxis') if one should be stored\n *  font: the default font to inherit\n *  outerTicks: boolean, should ticks default to outside?\n *  showGrid: boolean, should gridlines be shown by default?\n *  data: the plot data to use in choosing auto type\n *  bgColor: the plot background color, to calculate default gridline colors\n */\nmodule.exports = function handleAxisDefaults(containerIn, containerOut, options) {\n  var letter = options.letter;\n  var font = options.font || {};\n  var attributes = carpetAttrs[letter + 'axis'];\n  function coerce(attr, dflt) {\n    return Lib.coerce(containerIn, containerOut, attributes, attr, dflt);\n  }\n  function coerce2(attr, dflt) {\n    return Lib.coerce2(containerIn, containerOut, attributes, attr, dflt);\n  }\n\n  // set up some private properties\n  if (options.name) {\n    containerOut._name = options.name;\n    containerOut._id = options.name;\n  }\n\n  // now figure out type and do some more initialization\n  coerce('autotypenumbers', options.autotypenumbersDflt);\n  var axType = coerce('type');\n  if (axType === '-') {\n    if (options.data) setAutoType(containerOut, options.data);\n    if (containerOut.type === '-') {\n      containerOut.type = 'linear';\n    } else {\n      // copy autoType back to input axis\n      // note that if this object didn't exist\n      // in the input layout, we have to put it in\n      // this happens in the main supplyDefaults function\n      axType = containerIn.type = containerOut.type;\n    }\n  }\n  coerce('smoothing');\n  coerce('cheatertype');\n  coerce('showticklabels');\n  coerce('labelprefix', letter + ' = ');\n  coerce('labelsuffix');\n  coerce('showtickprefix');\n  coerce('showticksuffix');\n  coerce('separatethousands');\n  coerce('tickformat');\n  coerce('exponentformat');\n  coerce('minexponent');\n  coerce('showexponent');\n  coerce('categoryorder');\n  coerce('tickmode');\n  coerce('tickvals');\n  coerce('ticktext');\n  coerce('tick0');\n  coerce('dtick');\n  if (containerOut.tickmode === 'array') {\n    coerce('arraytick0');\n    coerce('arraydtick');\n  }\n  coerce('labelpadding');\n  containerOut._hovertitle = letter;\n  if (axType === 'date') {\n    var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleDefaults');\n    handleCalendarDefaults(containerIn, containerOut, 'calendar', options.calendar);\n  }\n\n  // we need some of the other functions setConvert attaches, but for\n  // path finding, override pixel scaling to simple passthrough (identity)\n  setConvert(containerOut, options.fullLayout);\n  containerOut.c2p = Lib.identity;\n  var dfltColor = coerce('color', options.dfltColor);\n  // if axis.color was provided, use it for fonts too; otherwise,\n  // inherit from global font color in case that was provided.\n  var dfltFontColor = dfltColor === containerIn.color ? dfltColor : font.color;\n  var title = coerce('title.text');\n  if (title) {\n    Lib.coerceFont(coerce, 'title.font', {\n      family: font.family,\n      size: Lib.bigFont(font.size),\n      color: dfltFontColor\n    });\n    coerce('title.offset');\n  }\n  coerce('tickangle');\n  var autoRange = coerce('autorange', !containerOut.isValidRange(containerIn.range));\n  if (autoRange) coerce('rangemode');\n  coerce('range');\n  containerOut.cleanRange();\n  coerce('fixedrange');\n  handleTickValueDefaults(containerIn, containerOut, coerce, axType);\n  handlePrefixSuffixDefaults(containerIn, containerOut, coerce, axType, options);\n  handleTickLabelDefaults(containerIn, containerOut, coerce, axType, options);\n  handleCategoryOrderDefaults(containerIn, containerOut, coerce, {\n    data: options.data,\n    dataAttr: letter\n  });\n  var gridColor = coerce2('gridcolor', addOpacity(dfltColor, 0.3));\n  var gridWidth = coerce2('gridwidth');\n  var gridDash = coerce2('griddash');\n  var showGrid = coerce('showgrid');\n  if (!showGrid) {\n    delete containerOut.gridcolor;\n    delete containerOut.gridwidth;\n    delete containerOut.griddash;\n  }\n  var startLineColor = coerce2('startlinecolor', dfltColor);\n  var startLineWidth = coerce2('startlinewidth', gridWidth);\n  var showStartLine = coerce('startline', containerOut.showgrid || !!startLineColor || !!startLineWidth);\n  if (!showStartLine) {\n    delete containerOut.startlinecolor;\n    delete containerOut.startlinewidth;\n  }\n  var endLineColor = coerce2('endlinecolor', dfltColor);\n  var endLineWidth = coerce2('endlinewidth', gridWidth);\n  var showEndLine = coerce('endline', containerOut.showgrid || !!endLineColor || !!endLineWidth);\n  if (!showEndLine) {\n    delete containerOut.endlinecolor;\n    delete containerOut.endlinewidth;\n  }\n  if (!showGrid) {\n    delete containerOut.gridcolor;\n    delete containerOut.gridwidth;\n    delete containerOut.griddash;\n  } else {\n    coerce('minorgridcount');\n    coerce('minorgridwidth', gridWidth);\n    coerce('minorgriddash', gridDash);\n    coerce('minorgridcolor', addOpacity(gridColor, 0.06));\n    if (!containerOut.minorgridcount) {\n      delete containerOut.minorgridwidth;\n      delete containerOut.minorgriddash;\n      delete containerOut.minorgridcolor;\n    }\n  }\n  if (containerOut.showticklabels === 'none') {\n    delete containerOut.tickfont;\n    delete containerOut.tickangle;\n    delete containerOut.showexponent;\n    delete containerOut.exponentformat;\n    delete containerOut.minexponent;\n    delete containerOut.tickformat;\n    delete containerOut.showticksuffix;\n    delete containerOut.showtickprefix;\n  }\n  if (!containerOut.showticksuffix) {\n    delete containerOut.ticksuffix;\n  }\n  if (!containerOut.showtickprefix) {\n    delete containerOut.tickprefix;\n  }\n\n  // It needs to be coerced, then something above overrides this deep in the axis code,\n  // but no, we *actually* want to coerce this.\n  coerce('tickmode');\n  return containerOut;\n};\nfunction setAutoType(ax, data) {\n  // new logic: let people specify any type they want,\n  // only autotype if type is '-'\n  if (ax.type !== '-') return;\n  var id = ax._id;\n  var axLetter = id.charAt(0);\n  var calAttr = axLetter + 'calendar';\n  var calendar = ax[calAttr];\n  ax.type = autoType(data, calendar, {\n    autotypenumbers: ax.autotypenumbers\n  });\n}\n\n/***/ }),\n\n/***/ 25281:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2267862__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_2267862__(89298);\nvar isArray1D = (__nested_webpack_require_2267862__(71828).isArray1D);\nvar cheaterBasis = __nested_webpack_require_2267862__(53824);\nvar arrayMinmax = __nested_webpack_require_2267862__(402);\nvar calcGridlines = __nested_webpack_require_2267862__(20347);\nvar calcLabels = __nested_webpack_require_2267862__(83311);\nvar calcClipPath = __nested_webpack_require_2267862__(44807);\nvar clean2dArray = __nested_webpack_require_2267862__(4742);\nvar smoothFill2dArray = __nested_webpack_require_2267862__(72505);\nvar convertColumnData = __nested_webpack_require_2267862__(68296);\nvar setConvert = __nested_webpack_require_2267862__(11435);\nmodule.exports = function calc(gd, trace) {\n  var xa = Axes.getFromId(gd, trace.xaxis);\n  var ya = Axes.getFromId(gd, trace.yaxis);\n  var aax = trace.aaxis;\n  var bax = trace.baxis;\n  var x = trace.x;\n  var y = trace.y;\n  var cols = [];\n  if (x && isArray1D(x)) cols.push('x');\n  if (y && isArray1D(y)) cols.push('y');\n  if (cols.length) {\n    convertColumnData(trace, aax, bax, 'a', 'b', cols);\n  }\n  var a = trace._a = trace._a || trace.a;\n  var b = trace._b = trace._b || trace.b;\n  x = trace._x || trace.x;\n  y = trace._y || trace.y;\n  var t = {};\n  if (trace._cheater) {\n    var avals = aax.cheatertype === 'index' ? a.length : a;\n    var bvals = bax.cheatertype === 'index' ? b.length : b;\n    x = cheaterBasis(avals, bvals, trace.cheaterslope);\n  }\n  trace._x = x = clean2dArray(x);\n  trace._y = y = clean2dArray(y);\n\n  // Fill in any undefined values with elliptic smoothing. This doesn't take\n  // into account the spacing of the values. That is, the derivatives should\n  // be modified to use a and b values. It's not that hard, but this is already\n  // moderate overkill for just filling in missing values.\n  smoothFill2dArray(x, a, b);\n  smoothFill2dArray(y, a, b);\n  setConvert(trace);\n\n  // create conversion functions that depend on the data\n  trace.setScale();\n\n  // This is a rather expensive scan. Nothing guarantees monotonicity,\n  // so we need to scan through all data to get proper ranges:\n  var xrange = arrayMinmax(x);\n  var yrange = arrayMinmax(y);\n  var dx = 0.5 * (xrange[1] - xrange[0]);\n  var xc = 0.5 * (xrange[1] + xrange[0]);\n  var dy = 0.5 * (yrange[1] - yrange[0]);\n  var yc = 0.5 * (yrange[1] + yrange[0]);\n\n  // Expand the axes to fit the plot, except just grow it by a factor of 1.3\n  // because the labels should be taken into account except that's difficult\n  // hence 1.3.\n  var grow = 1.3;\n  xrange = [xc - dx * grow, xc + dx * grow];\n  yrange = [yc - dy * grow, yc + dy * grow];\n  trace._extremes[xa._id] = Axes.findExtremes(xa, xrange, {\n    padded: true\n  });\n  trace._extremes[ya._id] = Axes.findExtremes(ya, yrange, {\n    padded: true\n  });\n\n  // Enumerate the gridlines, both major and minor, and store them on the trace\n  // object:\n  calcGridlines(trace, 'a', 'b');\n  calcGridlines(trace, 'b', 'a');\n\n  // Calculate the text labels for each major gridline and store them on the\n  // trace object:\n  calcLabels(trace, aax);\n  calcLabels(trace, bax);\n\n  // Tabulate points for the four segments that bound the axes so that we can\n  // map to pixel coordinates in the plot function and create a clip rect:\n  t.clipsegments = calcClipPath(trace._xctrl, trace._yctrl, aax, bax);\n  t.x = x;\n  t.y = y;\n  t.a = a;\n  t.b = b;\n  return [t];\n};\n\n/***/ }),\n\n/***/ 44807:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function makeClipPath(xctrl, yctrl, aax, bax) {\n  var i, x, y;\n  var segments = [];\n  var asmoothing = !!aax.smoothing;\n  var bsmoothing = !!bax.smoothing;\n  var nea1 = xctrl[0].length - 1;\n  var neb1 = xctrl.length - 1;\n\n  // Along the lower a axis:\n  for (i = 0, x = [], y = []; i <= nea1; i++) {\n    x[i] = xctrl[0][i];\n    y[i] = yctrl[0][i];\n  }\n  segments.push({\n    x: x,\n    y: y,\n    bicubic: asmoothing\n  });\n\n  // Along the upper b axis:\n  for (i = 0, x = [], y = []; i <= neb1; i++) {\n    x[i] = xctrl[i][nea1];\n    y[i] = yctrl[i][nea1];\n  }\n  segments.push({\n    x: x,\n    y: y,\n    bicubic: bsmoothing\n  });\n\n  // Backwards along the upper a axis:\n  for (i = nea1, x = [], y = []; i >= 0; i--) {\n    x[nea1 - i] = xctrl[neb1][i];\n    y[nea1 - i] = yctrl[neb1][i];\n  }\n  segments.push({\n    x: x,\n    y: y,\n    bicubic: asmoothing\n  });\n\n  // Backwards along the lower b axis:\n  for (i = neb1, x = [], y = []; i >= 0; i--) {\n    x[neb1 - i] = xctrl[i][0];\n    y[neb1 - i] = yctrl[i][0];\n  }\n  segments.push({\n    x: x,\n    y: y,\n    bicubic: bsmoothing\n  });\n  return segments;\n};\n\n/***/ }),\n\n/***/ 20347:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2272362__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_2272362__(89298);\nvar extendFlat = (__nested_webpack_require_2272362__(1426).extendFlat);\nmodule.exports = function calcGridlines(trace, axisLetter, crossAxisLetter) {\n  var i, j, j0;\n  var eps, bounds, n1, n2, n, value, v;\n  var j1, v0, v1, d;\n  var data = trace['_' + axisLetter];\n  var axis = trace[axisLetter + 'axis'];\n  var gridlines = axis._gridlines = [];\n  var minorgridlines = axis._minorgridlines = [];\n  var boundarylines = axis._boundarylines = [];\n  var crossData = trace['_' + crossAxisLetter];\n  var crossAxis = trace[crossAxisLetter + 'axis'];\n  if (axis.tickmode === 'array') {\n    axis.tickvals = data.slice();\n  }\n  var xcp = trace._xctrl;\n  var ycp = trace._yctrl;\n  var nea = xcp[0].length;\n  var neb = xcp.length;\n  var na = trace._a.length;\n  var nb = trace._b.length;\n  Axes.prepTicks(axis);\n\n  // don't leave tickvals in axis looking like an attribute\n  if (axis.tickmode === 'array') delete axis.tickvals;\n\n  // The default is an empty array that will cause the join to remove the gridline if\n  // it's just disappeared:\n  // axis._startline = axis._endline = [];\n\n  // If the cross axis uses bicubic interpolation, then the grid\n  // lines fall once every three expanded grid row/cols:\n  var stride = axis.smoothing ? 3 : 1;\n  function constructValueGridline(value) {\n    var i, j, j0, tj, pxy, i0, ti, xy, dxydi0, dxydi1, dxydj0, dxydj1;\n    var xpoints = [];\n    var ypoints = [];\n    var ret = {};\n    // Search for the fractional grid index giving this line:\n    if (axisLetter === 'b') {\n      // For the position we use just the i-j coordinates:\n      j = trace.b2j(value);\n\n      // The derivatives for catmull-rom splines are discontinuous across cell\n      // boundaries though, so we need to provide both the cell and the position\n      // within the cell separately:\n      j0 = Math.floor(Math.max(0, Math.min(nb - 2, j)));\n      tj = j - j0;\n      ret.length = nb;\n      ret.crossLength = na;\n      ret.xy = function (i) {\n        return trace.evalxy([], i, j);\n      };\n      ret.dxy = function (i0, ti) {\n        return trace.dxydi([], i0, j0, ti, tj);\n      };\n      for (i = 0; i < na; i++) {\n        i0 = Math.min(na - 2, i);\n        ti = i - i0;\n        xy = trace.evalxy([], i, j);\n        if (crossAxis.smoothing && i > 0) {\n          // First control point:\n          dxydi0 = trace.dxydi([], i - 1, j0, 0, tj);\n          xpoints.push(pxy[0] + dxydi0[0] / 3);\n          ypoints.push(pxy[1] + dxydi0[1] / 3);\n\n          // Second control point:\n          dxydi1 = trace.dxydi([], i - 1, j0, 1, tj);\n          xpoints.push(xy[0] - dxydi1[0] / 3);\n          ypoints.push(xy[1] - dxydi1[1] / 3);\n        }\n        xpoints.push(xy[0]);\n        ypoints.push(xy[1]);\n        pxy = xy;\n      }\n    } else {\n      i = trace.a2i(value);\n      i0 = Math.floor(Math.max(0, Math.min(na - 2, i)));\n      ti = i - i0;\n      ret.length = na;\n      ret.crossLength = nb;\n      ret.xy = function (j) {\n        return trace.evalxy([], i, j);\n      };\n      ret.dxy = function (j0, tj) {\n        return trace.dxydj([], i0, j0, ti, tj);\n      };\n      for (j = 0; j < nb; j++) {\n        j0 = Math.min(nb - 2, j);\n        tj = j - j0;\n        xy = trace.evalxy([], i, j);\n        if (crossAxis.smoothing && j > 0) {\n          // First control point:\n          dxydj0 = trace.dxydj([], i0, j - 1, ti, 0);\n          xpoints.push(pxy[0] + dxydj0[0] / 3);\n          ypoints.push(pxy[1] + dxydj0[1] / 3);\n\n          // Second control point:\n          dxydj1 = trace.dxydj([], i0, j - 1, ti, 1);\n          xpoints.push(xy[0] - dxydj1[0] / 3);\n          ypoints.push(xy[1] - dxydj1[1] / 3);\n        }\n        xpoints.push(xy[0]);\n        ypoints.push(xy[1]);\n        pxy = xy;\n      }\n    }\n    ret.axisLetter = axisLetter;\n    ret.axis = axis;\n    ret.crossAxis = crossAxis;\n    ret.value = value;\n    ret.constvar = crossAxisLetter;\n    ret.index = n;\n    ret.x = xpoints;\n    ret.y = ypoints;\n    ret.smoothing = crossAxis.smoothing;\n    return ret;\n  }\n  function constructArrayGridline(idx) {\n    var j, i0, j0, ti, tj;\n    var xpoints = [];\n    var ypoints = [];\n    var ret = {};\n    ret.length = data.length;\n    ret.crossLength = crossData.length;\n    if (axisLetter === 'b') {\n      j0 = Math.max(0, Math.min(nb - 2, idx));\n      tj = Math.min(1, Math.max(0, idx - j0));\n      ret.xy = function (i) {\n        return trace.evalxy([], i, idx);\n      };\n      ret.dxy = function (i0, ti) {\n        return trace.dxydi([], i0, j0, ti, tj);\n      };\n\n      // In the tickmode: array case, this operation is a simple\n      // transfer of data:\n      for (j = 0; j < nea; j++) {\n        xpoints[j] = xcp[idx * stride][j];\n        ypoints[j] = ycp[idx * stride][j];\n      }\n    } else {\n      i0 = Math.max(0, Math.min(na - 2, idx));\n      ti = Math.min(1, Math.max(0, idx - i0));\n      ret.xy = function (j) {\n        return trace.evalxy([], idx, j);\n      };\n      ret.dxy = function (j0, tj) {\n        return trace.dxydj([], i0, j0, ti, tj);\n      };\n\n      // In the tickmode: array case, this operation is a simple\n      // transfer of data:\n      for (j = 0; j < neb; j++) {\n        xpoints[j] = xcp[j][idx * stride];\n        ypoints[j] = ycp[j][idx * stride];\n      }\n    }\n    ret.axisLetter = axisLetter;\n    ret.axis = axis;\n    ret.crossAxis = crossAxis;\n    ret.value = data[idx];\n    ret.constvar = crossAxisLetter;\n    ret.index = idx;\n    ret.x = xpoints;\n    ret.y = ypoints;\n    ret.smoothing = crossAxis.smoothing;\n    return ret;\n  }\n  if (axis.tickmode === 'array') {\n    // var j0 = axis.startline ? 1 : 0;\n    // var j1 = data.length - (axis.endline ? 1 : 0);\n\n    eps = 5e-15;\n    bounds = [Math.floor((data.length - 1 - axis.arraytick0) / axis.arraydtick * (1 + eps)), Math.ceil(-axis.arraytick0 / axis.arraydtick / (1 + eps))].sort(function (a, b) {\n      return a - b;\n    });\n\n    // Unpack sorted values so we can be sure to avoid infinite loops if something\n    // is backwards:\n    n1 = bounds[0] - 1;\n    n2 = bounds[1] + 1;\n\n    // If the axes fall along array lines, then this is a much simpler process since\n    // we already have all the control points we need\n    for (n = n1; n < n2; n++) {\n      j = axis.arraytick0 + axis.arraydtick * n;\n      if (j < 0 || j > data.length - 1) continue;\n      gridlines.push(extendFlat(constructArrayGridline(j), {\n        color: axis.gridcolor,\n        width: axis.gridwidth,\n        dash: axis.griddash\n      }));\n    }\n    for (n = n1; n < n2; n++) {\n      j0 = axis.arraytick0 + axis.arraydtick * n;\n      j1 = Math.min(j0 + axis.arraydtick, data.length - 1);\n\n      // TODO: fix the bounds computation so we don't have to do a large range and then throw\n      // out unneeded numbers\n      if (j0 < 0 || j0 > data.length - 1) continue;\n      if (j1 < 0 || j1 > data.length - 1) continue;\n      v0 = data[j0];\n      v1 = data[j1];\n      for (i = 0; i < axis.minorgridcount; i++) {\n        d = j1 - j0;\n\n        // TODO: fix the bounds computation so we don't have to do a large range and then throw\n        // out unneeded numbers\n        if (d <= 0) continue;\n\n        // XXX: This calculation isn't quite right. Off by one somewhere?\n        v = v0 + (v1 - v0) * (i + 1) / (axis.minorgridcount + 1) * (axis.arraydtick / d);\n\n        // TODO: fix the bounds computation so we don't have to do a large range and then throw\n        // out unneeded numbers\n        if (v < data[0] || v > data[data.length - 1]) continue;\n        minorgridlines.push(extendFlat(constructValueGridline(v), {\n          color: axis.minorgridcolor,\n          width: axis.minorgridwidth,\n          dash: axis.minorgriddash\n        }));\n      }\n    }\n    if (axis.startline) {\n      boundarylines.push(extendFlat(constructArrayGridline(0), {\n        color: axis.startlinecolor,\n        width: axis.startlinewidth\n      }));\n    }\n    if (axis.endline) {\n      boundarylines.push(extendFlat(constructArrayGridline(data.length - 1), {\n        color: axis.endlinecolor,\n        width: axis.endlinewidth\n      }));\n    }\n  } else {\n    // If the lines do not fall along the axes, then we have to interpolate\n    // the contro points and so some math to figure out where the lines are\n    // in the first place.\n\n    // Compute the integer boudns of tick0 + n * dtick that fall within the range\n    // (roughly speaking):\n    // Give this a nice generous epsilon. We use at as * (1 + eps) in order to make\n    // inequalities a little tolerant in a more or less correct manner:\n    eps = 5e-15;\n    bounds = [Math.floor((data[data.length - 1] - axis.tick0) / axis.dtick * (1 + eps)), Math.ceil((data[0] - axis.tick0) / axis.dtick / (1 + eps))].sort(function (a, b) {\n      return a - b;\n    });\n\n    // Unpack sorted values so we can be sure to avoid infinite loops if something\n    // is backwards:\n    n1 = bounds[0];\n    n2 = bounds[1];\n    for (n = n1; n <= n2; n++) {\n      value = axis.tick0 + axis.dtick * n;\n      gridlines.push(extendFlat(constructValueGridline(value), {\n        color: axis.gridcolor,\n        width: axis.gridwidth,\n        dash: axis.griddash\n      }));\n    }\n    for (n = n1 - 1; n < n2 + 1; n++) {\n      value = axis.tick0 + axis.dtick * n;\n      for (i = 0; i < axis.minorgridcount; i++) {\n        v = value + axis.dtick * (i + 1) / (axis.minorgridcount + 1);\n        if (v < data[0] || v > data[data.length - 1]) continue;\n        minorgridlines.push(extendFlat(constructValueGridline(v), {\n          color: axis.minorgridcolor,\n          width: axis.minorgridwidth,\n          dash: axis.minorgriddash\n        }));\n      }\n    }\n    if (axis.startline) {\n      boundarylines.push(extendFlat(constructValueGridline(data[0]), {\n        color: axis.startlinecolor,\n        width: axis.startlinewidth\n      }));\n    }\n    if (axis.endline) {\n      boundarylines.push(extendFlat(constructValueGridline(data[data.length - 1]), {\n        color: axis.endlinecolor,\n        width: axis.endlinewidth\n      }));\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 83311:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2282396__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_2282396__(89298);\nvar extendFlat = (__nested_webpack_require_2282396__(1426).extendFlat);\nmodule.exports = function calcLabels(trace, axis) {\n  var i, tobj, prefix, suffix, gridline;\n  var labels = axis._labels = [];\n  var gridlines = axis._gridlines;\n  for (i = 0; i < gridlines.length; i++) {\n    gridline = gridlines[i];\n    if (['start', 'both'].indexOf(axis.showticklabels) !== -1) {\n      tobj = Axes.tickText(axis, gridline.value);\n      extendFlat(tobj, {\n        prefix: prefix,\n        suffix: suffix,\n        endAnchor: true,\n        xy: gridline.xy(0),\n        dxy: gridline.dxy(0, 0),\n        axis: gridline.axis,\n        length: gridline.crossAxis.length,\n        font: gridline.axis.tickfont,\n        isFirst: i === 0,\n        isLast: i === gridlines.length - 1\n      });\n      labels.push(tobj);\n    }\n    if (['end', 'both'].indexOf(axis.showticklabels) !== -1) {\n      tobj = Axes.tickText(axis, gridline.value);\n      extendFlat(tobj, {\n        endAnchor: false,\n        xy: gridline.xy(gridline.crossLength - 1),\n        dxy: gridline.dxy(gridline.crossLength - 2, 1),\n        axis: gridline.axis,\n        length: gridline.crossAxis.length,\n        font: gridline.axis.tickfont,\n        isFirst: i === 0,\n        isLast: i === gridlines.length - 1\n      });\n      labels.push(tobj);\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 42048:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/*\n * Compute the tangent vector according to catmull-rom cubic splines (centripetal,\n * I think). That differs from the control point in two ways:\n *   1. It is a vector, not a position relative to the point\n *   2. the vector is longer than the position relative to p1 by a factor of 3\n *\n * Close to the boundaries, we'll use these as *quadratic control points, so that\n * to make a nice grid, we'll need to divide the tangent by 2 instead of 3. (The\n * math works out this way if you work through the bezier derivatives)\n */\nvar CatmullRomExp = 0.5;\nmodule.exports = function makeControlPoints(p0, p1, p2, smoothness) {\n  var d1x = p0[0] - p1[0];\n  var d1y = p0[1] - p1[1];\n  var d2x = p2[0] - p1[0];\n  var d2y = p2[1] - p1[1];\n  var d1a = Math.pow(d1x * d1x + d1y * d1y, CatmullRomExp / 2);\n  var d2a = Math.pow(d2x * d2x + d2y * d2y, CatmullRomExp / 2);\n  var numx = (d2a * d2a * d1x - d1a * d1a * d2x) * smoothness;\n  var numy = (d2a * d2a * d1y - d1a * d1a * d2y) * smoothness;\n  var denom1 = d2a * (d1a + d2a) * 3;\n  var denom2 = d1a * (d1a + d2a) * 3;\n  return [[p1[0] + (denom1 && numx / denom1), p1[1] + (denom1 && numy / denom1)], [p1[0] - (denom2 && numx / denom2), p1[1] - (denom2 && numy / denom2)]];\n};\n\n/***/ }),\n\n/***/ 53824:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2285121__) {\n\n\"use strict\";\n\n\nvar isArrayOrTypedArray = (__nested_webpack_require_2285121__(71828).isArrayOrTypedArray);\n\n/*\n * Construct a 2D array of cheater values given a, b, and a slope.\n * If\n */\nmodule.exports = function (a, b, cheaterslope) {\n  var i, j, ascal, bscal, aval, bval;\n  var data = [];\n  var na = isArrayOrTypedArray(a) ? a.length : a;\n  var nb = isArrayOrTypedArray(b) ? b.length : b;\n  var adata = isArrayOrTypedArray(a) ? a : null;\n  var bdata = isArrayOrTypedArray(b) ? b : null;\n\n  // If we're using data, scale it so that for data that's just barely\n  // not evenly spaced, the switch to value-based indexing is continuous.\n  // This means evenly spaced data should look the same whether value\n  // or index cheatertype.\n  if (adata) {\n    ascal = (adata.length - 1) / (adata[adata.length - 1] - adata[0]) / (na - 1);\n  }\n  if (bdata) {\n    bscal = (bdata.length - 1) / (bdata[bdata.length - 1] - bdata[0]) / (nb - 1);\n  }\n  var xval;\n  var xmin = Infinity;\n  var xmax = -Infinity;\n  for (j = 0; j < nb; j++) {\n    data[j] = [];\n    bval = bdata ? (bdata[j] - bdata[0]) * bscal : j / (nb - 1);\n    for (i = 0; i < na; i++) {\n      aval = adata ? (adata[i] - adata[0]) * ascal : i / (na - 1);\n      xval = aval - bval * cheaterslope;\n      xmin = Math.min(xval, xmin);\n      xmax = Math.max(xval, xmax);\n      data[j][i] = xval;\n    }\n  }\n\n  // Normalize cheater values to the 0-1 range. This comes into play when you have\n  // multiple cheater plots. After careful consideration, it seems better if cheater\n  // values are normalized to a consistent range. Otherwise one cheater affects the\n  // layout of other cheaters on the same axis.\n  var slope = 1.0 / (xmax - xmin);\n  var offset = -xmin * slope;\n  for (j = 0; j < nb; j++) {\n    for (i = 0; i < na; i++) {\n      data[j][i] = slope * data[j][i] + offset;\n    }\n  }\n  return data;\n};\n\n/***/ }),\n\n/***/ 45664:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2287057__) {\n\n\"use strict\";\n\n\nvar makeControlPoints = __nested_webpack_require_2287057__(42048);\nvar ensureArray = (__nested_webpack_require_2287057__(71828).ensureArray);\n\n/*\n * Turns a coarse grid into a fine grid with control points.\n *\n * Here's an ASCII representation:\n *\n *       o ----- o ----- o ----- o\n *       |       |       |       |\n *       |       |       |       |\n *       |       |       |       |\n *       o ----- o ----- o ----- o\n *       |       |       |       |\n *       |       |       |       |\n *    ^  |       |       |       |\n *    |  o ----- o ----- o ----- o\n *  b |  |       |       |       |\n *    |  |       |       |       |\n *    |  |       |       |       |\n *       o ----- o ----- o ----- o\n *         ------>\n *           a\n *\n * First of all, note that we want to do this in *cartesian* space. This means\n * we might run into problems when there are extreme differences in x/y scaling,\n * but the alternative is that the topology of the contours might actually be\n * view-dependent, which seems worse. As a fallback, the only parameter that\n * actually affects the result is the *aspect ratio*, so that we can at least\n * improve the situation a bit without going all the way to screen coordinates.\n *\n * This function flattens the points + tangents  into a slightly denser grid of\n * *control points*. The resulting grid looks like this:\n *\n *       9 +--o-o--+ -o-o--+--o-o--+\n *       8 o  o o  o  o o  o  o o  o\n *         |       |       |       |\n *       7 o  o o  o  o o  o  o o  o\n *       6 +--o-o--+ -o-o--+--o-o--+\n *       5 o  o o  o  o o  o  o o  o\n *         |       |       |       |\n *    ^  4 o  o o  o  o o  o  o o  o\n *    |  3 +--o-o--+ -o-o--+--o-o--+\n *  b |  2 o  o o  o  o o  o  o o  o\n *    |    |       |       |       |\n *    |  1 o  o o  o  o o  o  o o  o\n *       0 +--o-o--+ -o-o--+--o-o--+\n *         0  1 2  3  4 5  6  7 8  9\n *         ------>\n *           a\n *\n * where `o`s represent newly-computed control points. the resulting dimension is\n *\n *     (m - 1) * 3 + 1\n *   = 3 * m - 2\n *\n * We could simply store the tangents separately, but that's a nightmare to organize\n * in two dimensions since we'll be slicing grid lines in both directions and since\n * that basically requires very nearly just as much storage as just storing the dense\n * grid.\n *\n * Wow!\n */\n\n/*\n * Catmull-rom is biased at the boundaries toward the interior and we actually\n * can't use catmull-rom to compute the control point closest to (but inside)\n * the boundary.\n *\n * A note on plotly's spline interpolation. It uses the catmull rom control point\n * closest to the boundary *as* a quadratic control point. This seems incorrect,\n * so I've elected not to follow that. Given control points 0 and 1, regular plotly\n * splines give *equivalent* cubic control points:\n *\n * Input:\n *\n *   boundary\n *     |                    |\n *     p0           p2      p3    --> interior\n *     0.0          0.667   1.0\n *     |                    |\n *\n * Cubic-equivalent of what plotly splines draw::\n *\n *   boundary\n *     |                    |\n *     p0   p1      p2      p3    --> interior\n *     0.0  0.4444  0.8888  1.0\n *     |                    |\n *\n * What this function fills in:\n *\n *   boundary\n *     |                    |\n *     p0    p1     p2      p3    --> interior\n *     0.0   0.333  0.667   1.0\n *     |                    |\n *\n * Parameters:\n *   p0: boundary point\n *   p2: catmull rom point based on computation at p3\n *   p3: first grid point\n *\n * Of course it works whichever way it's oriented; you just need to interpret the\n * input/output accordingly.\n */\nfunction inferCubicControlPoint(p0, p2, p3) {\n  // Extend p1 away from p0 by 50%. This is the equivalent quadratic point that\n  // would give the same slope as catmull rom at p0.\n  var p2e0 = -0.5 * p3[0] + 1.5 * p2[0];\n  var p2e1 = -0.5 * p3[1] + 1.5 * p2[1];\n  return [(2 * p2e0 + p0[0]) / 3, (2 * p2e1 + p0[1]) / 3];\n}\nmodule.exports = function computeControlPoints(xe, ye, x, y, asmoothing, bsmoothing) {\n  var i, j, ie, je, xej, yej, xj, yj, cp, p1;\n  // At this point, we know these dimensions are correct and representative of\n  // the whole 2D arrays:\n  var na = x[0].length;\n  var nb = x.length;\n\n  // (n)umber of (e)xpanded points:\n  var nea = asmoothing ? 3 * na - 2 : na;\n  var neb = bsmoothing ? 3 * nb - 2 : nb;\n  xe = ensureArray(xe, neb);\n  ye = ensureArray(ye, neb);\n  for (ie = 0; ie < neb; ie++) {\n    xe[ie] = ensureArray(xe[ie], nea);\n    ye[ie] = ensureArray(ye[ie], nea);\n  }\n\n  // This loop fills in the X'd points:\n  //\n  //    .       .       .       .\n  //    .       .       .       .\n  //    |       |       |       |\n  //    |       |       |       |\n  //    X ----- X ----- X ----- X\n  //    |       |       |       |\n  //    |       |       |       |\n  //    |       |       |       |\n  //    X ----- X ----- X ----- X\n  //\n  //\n  // ie = (i) (e)xpanded:\n  for (j = 0, je = 0; j < nb; j++, je += bsmoothing ? 3 : 1) {\n    xej = xe[je];\n    yej = ye[je];\n    xj = x[j];\n    yj = y[j];\n\n    // je = (j) (e)xpanded:\n    for (i = 0, ie = 0; i < na; i++, ie += asmoothing ? 3 : 1) {\n      xej[ie] = xj[i];\n      yej[ie] = yj[i];\n    }\n  }\n  if (asmoothing) {\n    // If there's a-smoothing, this loop fills in the X'd points with catmull-rom\n    // control points computed along the a-axis:\n    //     .       .       .       .\n    //     .       .       .       .\n    //     |       |       |       |\n    //     |       |       |       |\n    //     o -Y-X- o -X-X- o -X-Y- o\n    //     |       |       |       |\n    //     |       |       |       |\n    //     |       |       |       |\n    //     o -Y-X- o -X-X- o -X-Y- o\n    //\n    // i:  0       1       2       3\n    // ie: 0  1 3  3  4 5  6  7 8  9\n    //\n    //           ------>\n    //             a\n    //\n    for (j = 0, je = 0; j < nb; j++, je += bsmoothing ? 3 : 1) {\n      // Fill in the points marked X for this a-row:\n      for (i = 1, ie = 3; i < na - 1; i++, ie += 3) {\n        cp = makeControlPoints([x[j][i - 1], y[j][i - 1]], [x[j][i], y[j][i]], [x[j][i + 1], y[j][i + 1]], asmoothing);\n        xe[je][ie - 1] = cp[0][0];\n        ye[je][ie - 1] = cp[0][1];\n        xe[je][ie + 1] = cp[1][0];\n        ye[je][ie + 1] = cp[1][1];\n      }\n\n      // The very first cubic interpolation point (to the left for i = 1 above) is\n      // used as a *quadratic* interpolation point by the spline drawing function\n      // which isn't really correct. But for the sake of consistency, we'll use it\n      // as such. Since we're using cubic splines, that means we need to shorten the\n      // tangent by 1/3 and also construct a new cubic spline control point 1/3 from\n      // the original to the i = 0 point.\n      p1 = inferCubicControlPoint([xe[je][0], ye[je][0]], [xe[je][2], ye[je][2]], [xe[je][3], ye[je][3]]);\n      xe[je][1] = p1[0];\n      ye[je][1] = p1[1];\n\n      // Ditto last points, sans explanation:\n      p1 = inferCubicControlPoint([xe[je][nea - 1], ye[je][nea - 1]], [xe[je][nea - 3], ye[je][nea - 3]], [xe[je][nea - 4], ye[je][nea - 4]]);\n      xe[je][nea - 2] = p1[0];\n      ye[je][nea - 2] = p1[1];\n    }\n  }\n  if (bsmoothing) {\n    // If there's a-smoothing, this loop fills in the X'd points with catmull-rom\n    // control points computed along the b-axis:\n    //     .       .       .       .\n    //     X  X X  X  X X  X  X X  X\n    //     |       |       |       |\n    //     X  X X  X  X X  X  X X  X\n    //     o -o-o- o -o-o- o -o-o- o\n    //     X  X X  X  X X  X  X X  X\n    //     |       |       |       |\n    //     Y  Y Y  Y  Y Y  Y  Y Y  Y\n    //     o -o-o- o -o-o- o -o-o- o\n    //\n    // i:  0       1       2       3\n    // ie: 0  1 3  3  4 5  6  7 8  9\n    //\n    //           ------>\n    //             a\n    //\n    for (ie = 0; ie < nea; ie++) {\n      for (je = 3; je < neb - 3; je += 3) {\n        cp = makeControlPoints([xe[je - 3][ie], ye[je - 3][ie]], [xe[je][ie], ye[je][ie]], [xe[je + 3][ie], ye[je + 3][ie]], bsmoothing);\n        xe[je - 1][ie] = cp[0][0];\n        ye[je - 1][ie] = cp[0][1];\n        xe[je + 1][ie] = cp[1][0];\n        ye[je + 1][ie] = cp[1][1];\n      }\n      // Do the same boundary condition magic for these control points marked Y above:\n      p1 = inferCubicControlPoint([xe[0][ie], ye[0][ie]], [xe[2][ie], ye[2][ie]], [xe[3][ie], ye[3][ie]]);\n      xe[1][ie] = p1[0];\n      ye[1][ie] = p1[1];\n      p1 = inferCubicControlPoint([xe[neb - 1][ie], ye[neb - 1][ie]], [xe[neb - 3][ie], ye[neb - 3][ie]], [xe[neb - 4][ie], ye[neb - 4][ie]]);\n      xe[neb - 2][ie] = p1[0];\n      ye[neb - 2][ie] = p1[1];\n    }\n  }\n  if (asmoothing && bsmoothing) {\n    // Do one more pass, this time recomputing exactly what we just computed.\n    // It's overdetermined since we're peforming catmull-rom in two directions,\n    // so we'll just average the overdetermined. These points don't lie along the\n    // grid lines, so note that only grid lines will follow normal plotly spline\n    // interpolation.\n    //\n    // Unless of course there was no b smoothing. Then these intermediate points\n    // don't actually exist and this section is bypassed.\n    //     .       .       .       .\n    //     o  X X  o  X X  o  X X  o\n    //     |       |       |       |\n    //     o  X X  o  X X  o  X X  o\n    //     o -o-o- o -o-o- o -o-o- o\n    //     o  X X  o  X X  o  X X  o\n    //     |       |       |       |\n    //     o  Y Y  o  Y Y  o  Y Y  o\n    //     o -o-o- o -o-o- o -o-o- o\n    //\n    // i:  0       1       2       3\n    // ie: 0  1 3  3  4 5  6  7 8  9\n    //\n    //           ------>\n    //             a\n    //\n    for (je = 1; je < neb; je += (je + 1) % 3 === 0 ? 2 : 1) {\n      // Fill in the points marked X for this a-row:\n      for (ie = 3; ie < nea - 3; ie += 3) {\n        cp = makeControlPoints([xe[je][ie - 3], ye[je][ie - 3]], [xe[je][ie], ye[je][ie]], [xe[je][ie + 3], ye[je][ie + 3]], asmoothing);\n        xe[je][ie - 1] = 0.5 * (xe[je][ie - 1] + cp[0][0]);\n        ye[je][ie - 1] = 0.5 * (ye[je][ie - 1] + cp[0][1]);\n        xe[je][ie + 1] = 0.5 * (xe[je][ie + 1] + cp[1][0]);\n        ye[je][ie + 1] = 0.5 * (ye[je][ie + 1] + cp[1][1]);\n      }\n\n      // This case is just slightly different. The computation is the same,\n      // but having computed this, we'll average with the existing result.\n      p1 = inferCubicControlPoint([xe[je][0], ye[je][0]], [xe[je][2], ye[je][2]], [xe[je][3], ye[je][3]]);\n      xe[je][1] = 0.5 * (xe[je][1] + p1[0]);\n      ye[je][1] = 0.5 * (ye[je][1] + p1[1]);\n      p1 = inferCubicControlPoint([xe[je][nea - 1], ye[je][nea - 1]], [xe[je][nea - 3], ye[je][nea - 3]], [xe[je][nea - 4], ye[je][nea - 4]]);\n      xe[je][nea - 2] = 0.5 * (xe[je][nea - 2] + p1[0]);\n      ye[je][nea - 2] = 0.5 * (ye[je][nea - 2] + p1[1]);\n    }\n  }\n  return [xe, ye];\n};\n\n/***/ }),\n\n/***/ 35509:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  RELATIVE_CULL_TOLERANCE: 1e-6\n};\n\n/***/ }),\n\n/***/ 54495:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/*\n * Evaluates the derivative of a list of control point arrays. That is, it expects an array or arrays\n * that are expanded relative to the raw data to include the bicubic control points, if applicable. If\n * only linear interpolation is desired, then the data points correspond 1-1 along that axis to the\n * data itself. Since it's catmull-rom splines in either direction note in particular that the\n * derivatives are discontinuous across cell boundaries. That's the reason you need both the *cell*\n * and the *point within the cell*.\n *\n * Also note that the discontinuity of the derivative is in magnitude only. The direction *is*\n * continuous across cell boundaries.\n *\n * For example, to compute the derivative of the xcoordinate halfway between the 7 and 8th i-gridpoints\n * and the 10th and 11th j-gridpoints given bicubic smoothing in both dimensions, you'd write:\n *\n *     var deriv = createIDerivativeEvaluator([x], 1, 1);\n *\n *     var dxdi = deriv([], 7, 10, 0.5, 0.5);\n *     // => [0.12345]\n *\n * Since there'd be a bunch of duplicate computation to compute multiple derivatives, you can double\n * this up by providing more arrays:\n *\n *     var deriv = createIDerivativeEvaluator([x, y], 1, 1);\n *\n *     var dxdi = deriv([], 7, 10, 0.5, 0.5);\n *     // => [0.12345, 0.78910]\n *\n * NB: It's presumed that at this point all data has been sanitized and is valid numerical data arrays\n * of the correct dimension.\n */\nmodule.exports = function (arrays, asmoothing, bsmoothing) {\n  if (asmoothing && bsmoothing) {\n    return function (out, i0, j0, u, v) {\n      if (!out) out = [];\n      var f0, f1, f2, f3, ak, k;\n\n      // Since it's a grid of control points, the actual indices are * 3:\n      i0 *= 3;\n      j0 *= 3;\n\n      // Precompute some numbers:\n      var u2 = u * u;\n      var ou = 1 - u;\n      var ou2 = ou * ou;\n      var ouu2 = ou * u * 2;\n      var a = -3 * ou2;\n      var b = 3 * (ou2 - ouu2);\n      var c = 3 * (ouu2 - u2);\n      var d = 3 * u2;\n      var v2 = v * v;\n      var v3 = v2 * v;\n      var ov = 1 - v;\n      var ov2 = ov * ov;\n      var ov3 = ov2 * ov;\n      for (k = 0; k < arrays.length; k++) {\n        ak = arrays[k];\n        // Compute the derivatives in the u-direction:\n        f0 = a * ak[j0][i0] + b * ak[j0][i0 + 1] + c * ak[j0][i0 + 2] + d * ak[j0][i0 + 3];\n        f1 = a * ak[j0 + 1][i0] + b * ak[j0 + 1][i0 + 1] + c * ak[j0 + 1][i0 + 2] + d * ak[j0 + 1][i0 + 3];\n        f2 = a * ak[j0 + 2][i0] + b * ak[j0 + 2][i0 + 1] + c * ak[j0 + 2][i0 + 2] + d * ak[j0 + 2][i0 + 3];\n        f3 = a * ak[j0 + 3][i0] + b * ak[j0 + 3][i0 + 1] + c * ak[j0 + 3][i0 + 2] + d * ak[j0 + 3][i0 + 3];\n\n        // Now just interpolate in the v-direction since it's all separable:\n        out[k] = ov3 * f0 + 3 * (ov2 * v * f1 + ov * v2 * f2) + v3 * f3;\n      }\n      return out;\n    };\n  } else if (asmoothing) {\n    // Handle smooth in the a-direction but linear in the b-direction by performing four\n    // linear interpolations followed by one cubic interpolation of the result\n    return function (out, i0, j0, u, v) {\n      if (!out) out = [];\n      var f0, f1, k, ak;\n      i0 *= 3;\n      var u2 = u * u;\n      var ou = 1 - u;\n      var ou2 = ou * ou;\n      var ouu2 = ou * u * 2;\n      var a = -3 * ou2;\n      var b = 3 * (ou2 - ouu2);\n      var c = 3 * (ouu2 - u2);\n      var d = 3 * u2;\n      var ov = 1 - v;\n      for (k = 0; k < arrays.length; k++) {\n        ak = arrays[k];\n        f0 = a * ak[j0][i0] + b * ak[j0][i0 + 1] + c * ak[j0][i0 + 2] + d * ak[j0][i0 + 3];\n        f1 = a * ak[j0 + 1][i0] + b * ak[j0 + 1][i0 + 1] + c * ak[j0 + 1][i0 + 2] + d * ak[j0 + 1][i0 + 3];\n        out[k] = ov * f0 + v * f1;\n      }\n      return out;\n    };\n  } else if (bsmoothing) {\n    // Same as the above case, except reversed. I've disabled the no-unused vars rule\n    // so that this function is fully interpolation-agnostic. Otherwise it would need\n    // to be called differently in different cases. Which wouldn't be the worst, but\n    /* eslint-disable no-unused-vars */\n    return function (out, i0, j0, u, v) {\n      /* eslint-enable no-unused-vars */\n      if (!out) out = [];\n      var f0, f1, f2, f3, k, ak;\n      j0 *= 3;\n      var v2 = v * v;\n      var v3 = v2 * v;\n      var ov = 1 - v;\n      var ov2 = ov * ov;\n      var ov3 = ov2 * ov;\n      for (k = 0; k < arrays.length; k++) {\n        ak = arrays[k];\n        f0 = ak[j0][i0 + 1] - ak[j0][i0];\n        f1 = ak[j0 + 1][i0 + 1] - ak[j0 + 1][i0];\n        f2 = ak[j0 + 2][i0 + 1] - ak[j0 + 2][i0];\n        f3 = ak[j0 + 3][i0 + 1] - ak[j0 + 3][i0];\n        out[k] = ov3 * f0 + 3 * (ov2 * v * f1 + ov * v2 * f2) + v3 * f3;\n      }\n      return out;\n    };\n  } else {\n    // Finally, both directions are linear:\n    /* eslint-disable no-unused-vars */\n    return function (out, i0, j0, u, v) {\n      /* eslint-enable no-unused-vars */\n      if (!out) out = [];\n      var f0, f1, k, ak;\n      var ov = 1 - v;\n      for (k = 0; k < arrays.length; k++) {\n        ak = arrays[k];\n        f0 = ak[j0][i0 + 1] - ak[j0][i0];\n        f1 = ak[j0 + 1][i0 + 1] - ak[j0 + 1][i0];\n        out[k] = ov * f0 + v * f1;\n      }\n      return out;\n    };\n  }\n};\n\n/***/ }),\n\n/***/ 73057:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function (arrays, asmoothing, bsmoothing) {\n  if (asmoothing && bsmoothing) {\n    return function (out, i0, j0, u, v) {\n      if (!out) out = [];\n      var f0, f1, f2, f3, ak, k;\n\n      // Since it's a grid of control points, the actual indices are * 3:\n      i0 *= 3;\n      j0 *= 3;\n\n      // Precompute some numbers:\n      var u2 = u * u;\n      var u3 = u2 * u;\n      var ou = 1 - u;\n      var ou2 = ou * ou;\n      var ou3 = ou2 * ou;\n      var v2 = v * v;\n      var ov = 1 - v;\n      var ov2 = ov * ov;\n      var ovv2 = ov * v * 2;\n      var a = -3 * ov2;\n      var b = 3 * (ov2 - ovv2);\n      var c = 3 * (ovv2 - v2);\n      var d = 3 * v2;\n      for (k = 0; k < arrays.length; k++) {\n        ak = arrays[k];\n\n        // Compute the derivatives in the v-direction:\n        f0 = a * ak[j0][i0] + b * ak[j0 + 1][i0] + c * ak[j0 + 2][i0] + d * ak[j0 + 3][i0];\n        f1 = a * ak[j0][i0 + 1] + b * ak[j0 + 1][i0 + 1] + c * ak[j0 + 2][i0 + 1] + d * ak[j0 + 3][i0 + 1];\n        f2 = a * ak[j0][i0 + 2] + b * ak[j0 + 1][i0 + 2] + c * ak[j0 + 2][i0 + 2] + d * ak[j0 + 3][i0 + 2];\n        f3 = a * ak[j0][i0 + 3] + b * ak[j0 + 1][i0 + 3] + c * ak[j0 + 2][i0 + 3] + d * ak[j0 + 3][i0 + 3];\n\n        // Now just interpolate in the v-direction since it's all separable:\n        out[k] = ou3 * f0 + 3 * (ou2 * u * f1 + ou * u2 * f2) + u3 * f3;\n      }\n      return out;\n    };\n  } else if (asmoothing) {\n    // Handle smooth in the a-direction but linear in the b-direction by performing four\n    // linear interpolations followed by one cubic interpolation of the result\n    return function (out, i0, j0, v, u) {\n      if (!out) out = [];\n      var f0, f1, f2, f3, k, ak;\n      i0 *= 3;\n      var u2 = u * u;\n      var u3 = u2 * u;\n      var ou = 1 - u;\n      var ou2 = ou * ou;\n      var ou3 = ou2 * ou;\n      for (k = 0; k < arrays.length; k++) {\n        ak = arrays[k];\n        f0 = ak[j0 + 1][i0] - ak[j0][i0];\n        f1 = ak[j0 + 1][i0 + 1] - ak[j0][i0 + 1];\n        f2 = ak[j0 + 1][i0 + 2] - ak[j0][i0 + 2];\n        f3 = ak[j0 + 1][i0 + 3] - ak[j0][i0 + 3];\n        out[k] = ou3 * f0 + 3 * (ou2 * u * f1 + ou * u2 * f2) + u3 * f3;\n\n        // mathematically equivalent:\n        // f0 = ou3 * ak[j0    ][i0] + 3 * (ou2 * u * ak[j0    ][i0 + 1] + ou * u2 * ak[j0    ][i0 + 2]) + u3 * ak[j0    ][i0 + 3];\n        // f1 = ou3 * ak[j0 + 1][i0] + 3 * (ou2 * u * ak[j0 + 1][i0 + 1] + ou * u2 * ak[j0 + 1][i0 + 2]) + u3 * ak[j0 + 1][i0 + 3];\n        // out[k] = f1 - f0;\n      }\n\n      return out;\n    };\n  } else if (bsmoothing) {\n    // Same as the above case, except reversed:\n    /* eslint-disable no-unused-vars */\n    return function (out, i0, j0, u, v) {\n      /* eslint-enable no-unused-vars */\n      if (!out) out = [];\n      var f0, f1, k, ak;\n      j0 *= 3;\n      var ou = 1 - u;\n      var v2 = v * v;\n      var ov = 1 - v;\n      var ov2 = ov * ov;\n      var ovv2 = ov * v * 2;\n      var a = -3 * ov2;\n      var b = 3 * (ov2 - ovv2);\n      var c = 3 * (ovv2 - v2);\n      var d = 3 * v2;\n      for (k = 0; k < arrays.length; k++) {\n        ak = arrays[k];\n        f0 = a * ak[j0][i0] + b * ak[j0 + 1][i0] + c * ak[j0 + 2][i0] + d * ak[j0 + 3][i0];\n        f1 = a * ak[j0][i0 + 1] + b * ak[j0 + 1][i0 + 1] + c * ak[j0 + 2][i0 + 1] + d * ak[j0 + 3][i0 + 1];\n        out[k] = ou * f0 + u * f1;\n      }\n      return out;\n    };\n  } else {\n    // Finally, both directions are linear:\n    /* eslint-disable no-unused-vars */\n    return function (out, i0, j0, v, u) {\n      /* eslint-enable no-unused-vars */\n      if (!out) out = [];\n      var f0, f1, k, ak;\n      var ov = 1 - v;\n      for (k = 0; k < arrays.length; k++) {\n        ak = arrays[k];\n        f0 = ak[j0 + 1][i0] - ak[j0][i0];\n        f1 = ak[j0 + 1][i0 + 1] - ak[j0][i0 + 1];\n        out[k] = ov * f0 + v * f1;\n      }\n      return out;\n    };\n  }\n};\n\n/***/ }),\n\n/***/ 20349:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/*\n * Return a function that evaluates a set of linear or bicubic control points.\n * This will get evaluated a lot, so we'll at least do a bit of extra work to\n * flatten some of the choices. In particular, we'll unroll the linear/bicubic\n * combinations and we'll allow computing results in parallel to cut down\n * on repeated arithmetic.\n *\n * Take note that we don't search for the correct range in this function. The\n * reason is for consistency due to the corrresponding derivative function. In\n * particular, the derivatives aren't continuous across cells, so it's important\n * to be able control whether the derivative at a cell boundary is approached\n * from one side or the other.\n */\nmodule.exports = function (arrays, na, nb, asmoothing, bsmoothing) {\n  var imax = na - 2;\n  var jmax = nb - 2;\n  if (asmoothing && bsmoothing) {\n    return function (out, i, j) {\n      if (!out) out = [];\n      var f0, f1, f2, f3, ak, k;\n      var i0 = Math.max(0, Math.min(Math.floor(i), imax));\n      var j0 = Math.max(0, Math.min(Math.floor(j), jmax));\n      var u = Math.max(0, Math.min(1, i - i0));\n      var v = Math.max(0, Math.min(1, j - j0));\n\n      // Since it's a grid of control points, the actual indices are * 3:\n      i0 *= 3;\n      j0 *= 3;\n\n      // Precompute some numbers:\n      var u2 = u * u;\n      var u3 = u2 * u;\n      var ou = 1 - u;\n      var ou2 = ou * ou;\n      var ou3 = ou2 * ou;\n      var v2 = v * v;\n      var v3 = v2 * v;\n      var ov = 1 - v;\n      var ov2 = ov * ov;\n      var ov3 = ov2 * ov;\n      for (k = 0; k < arrays.length; k++) {\n        ak = arrays[k];\n        f0 = ou3 * ak[j0][i0] + 3 * (ou2 * u * ak[j0][i0 + 1] + ou * u2 * ak[j0][i0 + 2]) + u3 * ak[j0][i0 + 3];\n        f1 = ou3 * ak[j0 + 1][i0] + 3 * (ou2 * u * ak[j0 + 1][i0 + 1] + ou * u2 * ak[j0 + 1][i0 + 2]) + u3 * ak[j0 + 1][i0 + 3];\n        f2 = ou3 * ak[j0 + 2][i0] + 3 * (ou2 * u * ak[j0 + 2][i0 + 1] + ou * u2 * ak[j0 + 2][i0 + 2]) + u3 * ak[j0 + 2][i0 + 3];\n        f3 = ou3 * ak[j0 + 3][i0] + 3 * (ou2 * u * ak[j0 + 3][i0 + 1] + ou * u2 * ak[j0 + 3][i0 + 2]) + u3 * ak[j0 + 3][i0 + 3];\n        out[k] = ov3 * f0 + 3 * (ov2 * v * f1 + ov * v2 * f2) + v3 * f3;\n      }\n      return out;\n    };\n  } else if (asmoothing) {\n    // Handle smooth in the a-direction but linear in the b-direction by performing four\n    // linear interpolations followed by one cubic interpolation of the result\n    return function (out, i, j) {\n      if (!out) out = [];\n      var i0 = Math.max(0, Math.min(Math.floor(i), imax));\n      var j0 = Math.max(0, Math.min(Math.floor(j), jmax));\n      var u = Math.max(0, Math.min(1, i - i0));\n      var v = Math.max(0, Math.min(1, j - j0));\n      var f0, f1, f2, f3, k, ak;\n      i0 *= 3;\n      var u2 = u * u;\n      var u3 = u2 * u;\n      var ou = 1 - u;\n      var ou2 = ou * ou;\n      var ou3 = ou2 * ou;\n      var ov = 1 - v;\n      for (k = 0; k < arrays.length; k++) {\n        ak = arrays[k];\n        f0 = ov * ak[j0][i0] + v * ak[j0 + 1][i0];\n        f1 = ov * ak[j0][i0 + 1] + v * ak[j0 + 1][i0 + 1];\n        f2 = ov * ak[j0][i0 + 2] + v * ak[j0 + 1][i0 + 1];\n        f3 = ov * ak[j0][i0 + 3] + v * ak[j0 + 1][i0 + 1];\n        out[k] = ou3 * f0 + 3 * (ou2 * u * f1 + ou * u2 * f2) + u3 * f3;\n      }\n      return out;\n    };\n  } else if (bsmoothing) {\n    // Same as the above case, except reversed:\n    return function (out, i, j) {\n      if (!out) out = [];\n      var i0 = Math.max(0, Math.min(Math.floor(i), imax));\n      var j0 = Math.max(0, Math.min(Math.floor(j), jmax));\n      var u = Math.max(0, Math.min(1, i - i0));\n      var v = Math.max(0, Math.min(1, j - j0));\n      var f0, f1, f2, f3, k, ak;\n      j0 *= 3;\n      var v2 = v * v;\n      var v3 = v2 * v;\n      var ov = 1 - v;\n      var ov2 = ov * ov;\n      var ov3 = ov2 * ov;\n      var ou = 1 - u;\n      for (k = 0; k < arrays.length; k++) {\n        ak = arrays[k];\n        f0 = ou * ak[j0][i0] + u * ak[j0][i0 + 1];\n        f1 = ou * ak[j0 + 1][i0] + u * ak[j0 + 1][i0 + 1];\n        f2 = ou * ak[j0 + 2][i0] + u * ak[j0 + 2][i0 + 1];\n        f3 = ou * ak[j0 + 3][i0] + u * ak[j0 + 3][i0 + 1];\n        out[k] = ov3 * f0 + 3 * (ov2 * v * f1 + ov * v2 * f2) + v3 * f3;\n      }\n      return out;\n    };\n  } else {\n    // Finally, both directions are linear:\n    return function (out, i, j) {\n      if (!out) out = [];\n      var i0 = Math.max(0, Math.min(Math.floor(i), imax));\n      var j0 = Math.max(0, Math.min(Math.floor(j), jmax));\n      var u = Math.max(0, Math.min(1, i - i0));\n      var v = Math.max(0, Math.min(1, j - j0));\n      var f0, f1, k, ak;\n      var ov = 1 - v;\n      var ou = 1 - u;\n      for (k = 0; k < arrays.length; k++) {\n        ak = arrays[k];\n        f0 = ou * ak[j0][i0] + u * ak[j0][i0 + 1];\n        f1 = ou * ak[j0 + 1][i0] + u * ak[j0 + 1][i0 + 1];\n        out[k] = ov * f0 + v * f1;\n      }\n      return out;\n    };\n  }\n};\n\n/***/ }),\n\n/***/ 92087:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2312026__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2312026__(71828);\nvar handleXYDefaults = __nested_webpack_require_2312026__(19237);\nvar handleABDefaults = __nested_webpack_require_2312026__(13145);\nvar attributes = __nested_webpack_require_2312026__(99798);\nvar colorAttrs = __nested_webpack_require_2312026__(22399);\nmodule.exports = function supplyDefaults(traceIn, traceOut, dfltColor, fullLayout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  traceOut._clipPathId = 'clip' + traceOut.uid + 'carpet';\n  var defaultColor = coerce('color', colorAttrs.defaultLine);\n  Lib.coerceFont(coerce, 'font');\n  coerce('carpet');\n  handleABDefaults(traceIn, traceOut, fullLayout, coerce, defaultColor);\n  if (!traceOut.a || !traceOut.b) {\n    traceOut.visible = false;\n    return;\n  }\n  if (traceOut.a.length < 3) {\n    traceOut.aaxis.smoothing = 0;\n  }\n  if (traceOut.b.length < 3) {\n    traceOut.baxis.smoothing = 0;\n  }\n\n  // NB: the input is x/y arrays. You should know that the *first* dimension of x and y\n  // corresponds to b and the second to a. This sounds backwards but ends up making sense\n  // the important part to know is that when you write y[j][i], j goes from 0 to b.length - 1\n  // and i goes from 0 to a.length - 1.\n  var validData = handleXYDefaults(traceIn, traceOut, coerce);\n  if (!validData) {\n    traceOut.visible = false;\n  }\n  if (traceOut._cheater) {\n    coerce('cheaterslope');\n  }\n};\n\n/***/ }),\n\n/***/ 21462:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2313518__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2313518__(99798),\n  supplyDefaults: __nested_webpack_require_2313518__(92087),\n  plot: __nested_webpack_require_2313518__(89740),\n  calc: __nested_webpack_require_2313518__(25281),\n  animatable: true,\n  isContainer: true,\n  // so carpet traces get `calc` before other traces\n\n  moduleType: 'trace',\n  name: 'carpet',\n  basePlotModule: __nested_webpack_require_2313518__(93612),\n  categories: ['cartesian', 'svg', 'carpet', 'carpetAxis', 'notLegendIsolatable', 'noMultiCategory', 'noHover', 'noSortingByValue'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 22882:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/*\n * Given a trace, look up the carpet axis by carpet.\n */\nmodule.exports = function (gd, trace) {\n  var n = gd._fullData.length;\n  var firstAxis;\n  for (var i = 0; i < n; i++) {\n    var maybeCarpet = gd._fullData[i];\n    if (maybeCarpet.index === trace.index) continue;\n    if (maybeCarpet.type === 'carpet') {\n      if (!firstAxis) {\n        firstAxis = maybeCarpet;\n      }\n      if (maybeCarpet.carpet === trace.carpet) {\n        return maybeCarpet;\n      }\n    }\n  }\n  return firstAxis;\n};\n\n/***/ }),\n\n/***/ 67961:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function makePath(xp, yp, isBicubic) {\n  // Prevent d3 errors that would result otherwise:\n  if (xp.length === 0) return '';\n  var i;\n  var path = [];\n  var stride = isBicubic ? 3 : 1;\n  for (i = 0; i < xp.length; i += stride) {\n    path.push(xp[i] + ',' + yp[i]);\n    if (isBicubic && i < xp.length - stride) {\n      path.push('C');\n      path.push([xp[i + 1] + ',' + yp[i + 1], xp[i + 2] + ',' + yp[i + 2] + ' '].join(' '));\n    }\n  }\n  return path.join(isBicubic ? '' : 'L');\n};\n\n/***/ }),\n\n/***/ 27669:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2315272__) {\n\n\"use strict\";\n\n\nvar isArrayOrTypedArray = (__nested_webpack_require_2315272__(71828).isArrayOrTypedArray);\n\n/*\n * Map an array of x or y coordinates (c) to screen-space pixel coordinates (p).\n * The output array is optional, but if provided, it will be reused without\n * reallocation to the extent possible.\n */\nmodule.exports = function mapArray(out, data, func) {\n  var i;\n  if (!isArrayOrTypedArray(out)) {\n    // If not an array, make it an array:\n    out = [];\n  } else if (out.length > data.length) {\n    // If too long, truncate. (If too short, it will grow\n    // automatically so we don't care about that case)\n    out = out.slice(0, data.length);\n  }\n  for (i = 0; i < data.length; i++) {\n    out[i] = func(data[i]);\n  }\n  return out;\n};\n\n/***/ }),\n\n/***/ 11651:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function orientText(trace, xaxis, yaxis, xy, dxy, refDxy) {\n  var dx = dxy[0] * trace.dpdx(xaxis);\n  var dy = dxy[1] * trace.dpdy(yaxis);\n  var flip = 1;\n  var offsetMultiplier = 1.0;\n  if (refDxy) {\n    var l1 = Math.sqrt(dxy[0] * dxy[0] + dxy[1] * dxy[1]);\n    var l2 = Math.sqrt(refDxy[0] * refDxy[0] + refDxy[1] * refDxy[1]);\n    var dot = (dxy[0] * refDxy[0] + dxy[1] * refDxy[1]) / l1 / l2;\n    offsetMultiplier = Math.max(0.0, dot);\n  }\n  var angle = Math.atan2(dy, dx) * 180 / Math.PI;\n  if (angle < -90) {\n    angle += 180;\n    flip = -flip;\n  } else if (angle > 90) {\n    angle -= 180;\n    flip = -flip;\n  }\n  return {\n    angle: angle,\n    flip: flip,\n    p: trace.c2p(xy, xaxis, yaxis),\n    offsetMultplier: offsetMultiplier\n  };\n};\n\n/***/ }),\n\n/***/ 89740:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2316934__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2316934__(39898);\nvar Drawing = __nested_webpack_require_2316934__(91424);\nvar map1dArray = __nested_webpack_require_2316934__(27669);\nvar makepath = __nested_webpack_require_2316934__(67961);\nvar orientText = __nested_webpack_require_2316934__(11651);\nvar svgTextUtils = __nested_webpack_require_2316934__(63893);\nvar Lib = __nested_webpack_require_2316934__(71828);\nvar strRotate = Lib.strRotate;\nvar strTranslate = Lib.strTranslate;\nvar alignmentConstants = __nested_webpack_require_2316934__(18783);\nmodule.exports = function plot(gd, plotinfo, cdcarpet, carpetLayer) {\n  var isStatic = gd._context.staticPlot;\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  var fullLayout = gd._fullLayout;\n  var clipLayer = fullLayout._clips;\n  Lib.makeTraceGroups(carpetLayer, cdcarpet, 'trace').each(function (cd) {\n    var axisLayer = d3.select(this);\n    var cd0 = cd[0];\n    var trace = cd0.trace;\n    var aax = trace.aaxis;\n    var bax = trace.baxis;\n    var minorLayer = Lib.ensureSingle(axisLayer, 'g', 'minorlayer');\n    var majorLayer = Lib.ensureSingle(axisLayer, 'g', 'majorlayer');\n    var boundaryLayer = Lib.ensureSingle(axisLayer, 'g', 'boundarylayer');\n    var labelLayer = Lib.ensureSingle(axisLayer, 'g', 'labellayer');\n    axisLayer.style('opacity', trace.opacity);\n    drawGridLines(xa, ya, majorLayer, aax, 'a', aax._gridlines, true, isStatic);\n    drawGridLines(xa, ya, majorLayer, bax, 'b', bax._gridlines, true, isStatic);\n    drawGridLines(xa, ya, minorLayer, aax, 'a', aax._minorgridlines, true, isStatic);\n    drawGridLines(xa, ya, minorLayer, bax, 'b', bax._minorgridlines, true, isStatic);\n\n    // NB: These are not omitted if the lines are not active. The joins must be executed\n    // in order for them to get cleaned up without a full redraw\n    drawGridLines(xa, ya, boundaryLayer, aax, 'a-boundary', aax._boundarylines, isStatic);\n    drawGridLines(xa, ya, boundaryLayer, bax, 'b-boundary', bax._boundarylines, isStatic);\n    var labelOrientationA = drawAxisLabels(gd, xa, ya, trace, cd0, labelLayer, aax._labels, 'a-label');\n    var labelOrientationB = drawAxisLabels(gd, xa, ya, trace, cd0, labelLayer, bax._labels, 'b-label');\n    drawAxisTitles(gd, labelLayer, trace, cd0, xa, ya, labelOrientationA, labelOrientationB);\n    drawClipPath(trace, cd0, clipLayer, xa, ya);\n  });\n};\nfunction drawClipPath(trace, t, layer, xaxis, yaxis) {\n  var seg, xp, yp, i;\n  var clip = layer.select('#' + trace._clipPathId);\n  if (!clip.size()) {\n    clip = layer.append('clipPath').classed('carpetclip', true);\n  }\n  var path = Lib.ensureSingle(clip, 'path', 'carpetboundary');\n  var segments = t.clipsegments;\n  var segs = [];\n  for (i = 0; i < segments.length; i++) {\n    seg = segments[i];\n    xp = map1dArray([], seg.x, xaxis.c2p);\n    yp = map1dArray([], seg.y, yaxis.c2p);\n    segs.push(makepath(xp, yp, seg.bicubic));\n  }\n\n  // This could be optimized ever so slightly to avoid no-op L segments\n  // at the corners, but it's so negligible that I don't think it's worth\n  // the extra complexity\n  var clipPathData = 'M' + segs.join('L') + 'Z';\n  clip.attr('id', trace._clipPathId);\n  path.attr('d', clipPathData);\n}\nfunction drawGridLines(xaxis, yaxis, layer, axis, axisLetter, gridlines, isStatic) {\n  var lineClass = 'const-' + axisLetter + '-lines';\n  var gridJoin = layer.selectAll('.' + lineClass).data(gridlines);\n  gridJoin.enter().append('path').classed(lineClass, true).style('vector-effect', isStatic ? 'none' : 'non-scaling-stroke');\n  gridJoin.each(function (d) {\n    var gridline = d;\n    var x = gridline.x;\n    var y = gridline.y;\n    var xp = map1dArray([], x, xaxis.c2p);\n    var yp = map1dArray([], y, yaxis.c2p);\n    var path = 'M' + makepath(xp, yp, gridline.smoothing);\n    var el = d3.select(this);\n    el.attr('d', path).style('stroke-width', gridline.width).style('stroke', gridline.color).style('stroke-dasharray', Drawing.dashStyle(gridline.dash, gridline.width)).style('fill', 'none');\n  });\n  gridJoin.exit().remove();\n}\nfunction drawAxisLabels(gd, xaxis, yaxis, trace, t, layer, labels, labelClass) {\n  var labelJoin = layer.selectAll('text.' + labelClass).data(labels);\n  labelJoin.enter().append('text').classed(labelClass, true);\n  var maxExtent = 0;\n  var labelOrientation = {};\n  labelJoin.each(function (label, i) {\n    // Most of the positioning is done in calc_labels. Only the parts that depend upon\n    // the screen space representation of the x and y axes are here:\n    var orientation;\n    if (label.axis.tickangle === 'auto') {\n      orientation = orientText(trace, xaxis, yaxis, label.xy, label.dxy);\n    } else {\n      var angle = (label.axis.tickangle + 180.0) * Math.PI / 180.0;\n      orientation = orientText(trace, xaxis, yaxis, label.xy, [Math.cos(angle), Math.sin(angle)]);\n    }\n    if (!i) {\n      // TODO: offsetMultiplier? Not currently used anywhere...\n      labelOrientation = {\n        angle: orientation.angle,\n        flip: orientation.flip\n      };\n    }\n    var direction = (label.endAnchor ? -1 : 1) * orientation.flip;\n    var labelEl = d3.select(this).attr({\n      'text-anchor': direction > 0 ? 'start' : 'end',\n      'data-notex': 1\n    }).call(Drawing.font, label.font).text(label.text).call(svgTextUtils.convertToTspans, gd);\n    var bbox = Drawing.bBox(this);\n    labelEl.attr('transform',\n    // Translate to the correct point:\n    strTranslate(orientation.p[0], orientation.p[1]) +\n    // Rotate to line up with grid line tangent:\n    strRotate(orientation.angle) +\n    // Adjust the baseline and indentation:\n    strTranslate(label.axis.labelpadding * direction, bbox.height * 0.3));\n    maxExtent = Math.max(maxExtent, bbox.width + label.axis.labelpadding);\n  });\n  labelJoin.exit().remove();\n  labelOrientation.maxExtent = maxExtent;\n  return labelOrientation;\n}\nfunction drawAxisTitles(gd, layer, trace, t, xa, ya, labelOrientationA, labelOrientationB) {\n  var a, b, xy, dxy;\n  var aMin = Lib.aggNums(Math.min, null, trace.a);\n  var aMax = Lib.aggNums(Math.max, null, trace.a);\n  var bMin = Lib.aggNums(Math.min, null, trace.b);\n  var bMax = Lib.aggNums(Math.max, null, trace.b);\n  a = 0.5 * (aMin + aMax);\n  b = bMin;\n  xy = trace.ab2xy(a, b, true);\n  dxy = trace.dxyda_rough(a, b);\n  if (labelOrientationA.angle === undefined) {\n    Lib.extendFlat(labelOrientationA, orientText(trace, xa, ya, xy, trace.dxydb_rough(a, b)));\n  }\n  drawAxisTitle(gd, layer, trace, t, xy, dxy, trace.aaxis, xa, ya, labelOrientationA, 'a-title');\n  a = aMin;\n  b = 0.5 * (bMin + bMax);\n  xy = trace.ab2xy(a, b, true);\n  dxy = trace.dxydb_rough(a, b);\n  if (labelOrientationB.angle === undefined) {\n    Lib.extendFlat(labelOrientationB, orientText(trace, xa, ya, xy, trace.dxyda_rough(a, b)));\n  }\n  drawAxisTitle(gd, layer, trace, t, xy, dxy, trace.baxis, xa, ya, labelOrientationB, 'b-title');\n}\nvar lineSpacing = alignmentConstants.LINE_SPACING;\nvar midShift = (1 - alignmentConstants.MID_SHIFT) / lineSpacing + 1;\nfunction drawAxisTitle(gd, layer, trace, t, xy, dxy, axis, xa, ya, labelOrientation, labelClass) {\n  var data = [];\n  if (axis.title.text) data.push(axis.title.text);\n  var titleJoin = layer.selectAll('text.' + labelClass).data(data);\n  var offset = labelOrientation.maxExtent;\n  titleJoin.enter().append('text').classed(labelClass, true);\n\n  // There's only one, but we'll do it as a join so it's updated nicely:\n  titleJoin.each(function () {\n    var orientation = orientText(trace, xa, ya, xy, dxy);\n    if (['start', 'both'].indexOf(axis.showticklabels) === -1) {\n      offset = 0;\n    }\n\n    // In addition to the size of the labels, add on some extra padding:\n    var titleSize = axis.title.font.size;\n    offset += titleSize + axis.title.offset;\n    var labelNorm = labelOrientation.angle + (labelOrientation.flip < 0 ? 180 : 0);\n    var angleDiff = (labelNorm - orientation.angle + 450) % 360;\n    var reverseTitle = angleDiff > 90 && angleDiff < 270;\n    var el = d3.select(this);\n    el.text(axis.title.text).call(svgTextUtils.convertToTspans, gd);\n    if (reverseTitle) {\n      offset = (-svgTextUtils.lineCount(el) + midShift) * lineSpacing * titleSize - offset;\n    }\n    el.attr('transform', strTranslate(orientation.p[0], orientation.p[1]) + strRotate(orientation.angle) + strTranslate(0, offset)).attr('text-anchor', 'middle').call(Drawing.font, axis.title.font);\n  });\n  titleJoin.exit().remove();\n}\n\n/***/ }),\n\n/***/ 11435:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2325281__) {\n\n\"use strict\";\n\n\nvar constants = __nested_webpack_require_2325281__(35509);\nvar search = (__nested_webpack_require_2325281__(65888).findBin);\nvar computeControlPoints = __nested_webpack_require_2325281__(45664);\nvar createSplineEvaluator = __nested_webpack_require_2325281__(20349);\nvar createIDerivativeEvaluator = __nested_webpack_require_2325281__(54495);\nvar createJDerivativeEvaluator = __nested_webpack_require_2325281__(73057);\n\n/*\n * Create conversion functions to go from one basis to another. In particular the letter\n * abbreviations are:\n *\n *   i: i/j coordinates along the grid. Integer values correspond to data points\n *   a: real-valued coordinates along the a/b axes\n *   c: cartesian x-y coordinates\n *   p: screen-space pixel coordinates\n */\nmodule.exports = function setConvert(trace) {\n  var a = trace._a;\n  var b = trace._b;\n  var na = a.length;\n  var nb = b.length;\n  var aax = trace.aaxis;\n  var bax = trace.baxis;\n\n  // Grab the limits once rather than recomputing the bounds for every point\n  // independently:\n  var amin = a[0];\n  var amax = a[na - 1];\n  var bmin = b[0];\n  var bmax = b[nb - 1];\n  var arange = a[a.length - 1] - a[0];\n  var brange = b[b.length - 1] - b[0];\n\n  // Compute the tolerance so that points are visible slightly outside the\n  // defined carpet axis:\n  var atol = arange * constants.RELATIVE_CULL_TOLERANCE;\n  var btol = brange * constants.RELATIVE_CULL_TOLERANCE;\n\n  // Expand the limits to include the relative tolerance:\n  amin -= atol;\n  amax += atol;\n  bmin -= btol;\n  bmax += btol;\n  trace.isVisible = function (a, b) {\n    return a > amin && a < amax && b > bmin && b < bmax;\n  };\n  trace.isOccluded = function (a, b) {\n    return a < amin || a > amax || b < bmin || b > bmax;\n  };\n  trace.setScale = function () {\n    var x = trace._x;\n    var y = trace._y;\n\n    // This is potentially a very expensive step! It does the bulk of the work of constructing\n    // an expanded basis of control points. Note in particular that it overwrites the existing\n    // basis without creating a new array since that would potentially thrash the garbage\n    // collector.\n    var result = computeControlPoints(trace._xctrl, trace._yctrl, x, y, aax.smoothing, bax.smoothing);\n    trace._xctrl = result[0];\n    trace._yctrl = result[1];\n\n    // This step is the second step in the process, but it's somewhat simpler. It just unrolls\n    // some logic since it would be unnecessarily expensive to compute both interpolations\n    // nearly identically but separately and to include a bunch of linear vs. bicubic logic in\n    // every single call.\n    trace.evalxy = createSplineEvaluator([trace._xctrl, trace._yctrl], na, nb, aax.smoothing, bax.smoothing);\n    trace.dxydi = createIDerivativeEvaluator([trace._xctrl, trace._yctrl], aax.smoothing, bax.smoothing);\n    trace.dxydj = createJDerivativeEvaluator([trace._xctrl, trace._yctrl], aax.smoothing, bax.smoothing);\n  };\n\n  /*\n   * Convert from i/j data grid coordinates to a/b values. Note in particular that this\n   * is *linear* interpolation, even if the data is interpolated bicubically.\n   */\n  trace.i2a = function (i) {\n    var i0 = Math.max(0, Math.floor(i[0]), na - 2);\n    var ti = i[0] - i0;\n    return (1 - ti) * a[i0] + ti * a[i0 + 1];\n  };\n  trace.j2b = function (j) {\n    var j0 = Math.max(0, Math.floor(j[1]), na - 2);\n    var tj = j[1] - j0;\n    return (1 - tj) * b[j0] + tj * b[j0 + 1];\n  };\n  trace.ij2ab = function (ij) {\n    return [trace.i2a(ij[0]), trace.j2b(ij[1])];\n  };\n\n  /*\n   * Convert from a/b coordinates to i/j grid-numbered coordinates. This requires searching\n   * through the a/b data arrays and assumes they are monotonic, which is presumed to have\n   * been enforced already.\n   */\n  trace.a2i = function (aval) {\n    var i0 = Math.max(0, Math.min(search(aval, a), na - 2));\n    var a0 = a[i0];\n    var a1 = a[i0 + 1];\n    return Math.max(0, Math.min(na - 1, i0 + (aval - a0) / (a1 - a0)));\n  };\n  trace.b2j = function (bval) {\n    var j0 = Math.max(0, Math.min(search(bval, b), nb - 2));\n    var b0 = b[j0];\n    var b1 = b[j0 + 1];\n    return Math.max(0, Math.min(nb - 1, j0 + (bval - b0) / (b1 - b0)));\n  };\n  trace.ab2ij = function (ab) {\n    return [trace.a2i(ab[0]), trace.b2j(ab[1])];\n  };\n\n  /*\n   * Convert from i/j coordinates to x/y caretesian coordinates. This means either bilinear\n   * or bicubic spline evaluation, but the hard part is already done at this point.\n   */\n  trace.i2c = function (i, j) {\n    return trace.evalxy([], i, j);\n  };\n  trace.ab2xy = function (aval, bval, extrapolate) {\n    if (!extrapolate && (aval < a[0] || aval > a[na - 1] | bval < b[0] || bval > b[nb - 1])) {\n      return [false, false];\n    }\n    var i = trace.a2i(aval);\n    var j = trace.b2j(bval);\n    var pt = trace.evalxy([], i, j);\n    if (extrapolate) {\n      // This section uses the boundary derivatives to extrapolate linearly outside\n      // the defined range. Consider a scatter line with one point inside the carpet\n      // axis and one point outside. If we don't extrapolate, we can't draw the line\n      // at all.\n      var iex = 0;\n      var jex = 0;\n      var der = [];\n      var i0, ti, j0, tj;\n      if (aval < a[0]) {\n        i0 = 0;\n        ti = 0;\n        iex = (aval - a[0]) / (a[1] - a[0]);\n      } else if (aval > a[na - 1]) {\n        i0 = na - 2;\n        ti = 1;\n        iex = (aval - a[na - 1]) / (a[na - 1] - a[na - 2]);\n      } else {\n        i0 = Math.max(0, Math.min(na - 2, Math.floor(i)));\n        ti = i - i0;\n      }\n      if (bval < b[0]) {\n        j0 = 0;\n        tj = 0;\n        jex = (bval - b[0]) / (b[1] - b[0]);\n      } else if (bval > b[nb - 1]) {\n        j0 = nb - 2;\n        tj = 1;\n        jex = (bval - b[nb - 1]) / (b[nb - 1] - b[nb - 2]);\n      } else {\n        j0 = Math.max(0, Math.min(nb - 2, Math.floor(j)));\n        tj = j - j0;\n      }\n      if (iex) {\n        trace.dxydi(der, i0, j0, ti, tj);\n        pt[0] += der[0] * iex;\n        pt[1] += der[1] * iex;\n      }\n      if (jex) {\n        trace.dxydj(der, i0, j0, ti, tj);\n        pt[0] += der[0] * jex;\n        pt[1] += der[1] * jex;\n      }\n    }\n    return pt;\n  };\n  trace.c2p = function (xy, xa, ya) {\n    return [xa.c2p(xy[0]), ya.c2p(xy[1])];\n  };\n  trace.p2x = function (p, xa, ya) {\n    return [xa.p2c(p[0]), ya.p2c(p[1])];\n  };\n  trace.dadi = function (i /* , u*/) {\n    // Right now only a piecewise linear a or b basis is permitted since smoother interpolation\n    // would cause monotonicity problems. As a retult, u is entirely disregarded in this\n    // computation, though we'll specify it as a parameter for the sake of completeness and\n    // future-proofing. It would be possible to use monotonic cubic interpolation, for example.\n    //\n    // See: https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n\n    // u = u || 0;\n\n    var i0 = Math.max(0, Math.min(a.length - 2, i));\n\n    // The step (denominator) is implicitly 1 since that's the grid spacing.\n    return a[i0 + 1] - a[i0];\n  };\n  trace.dbdj = function (j /* , v*/) {\n    // See above caveats for dadi which also apply here\n    var j0 = Math.max(0, Math.min(b.length - 2, j));\n\n    // The step (denominator) is implicitly 1 since that's the grid spacing.\n    return b[j0 + 1] - b[j0];\n  };\n\n  // Takes: grid cell coordinate (i, j) and fractional grid cell coordinates (u, v)\n  // Returns: (dx/da, dy/db)\n  //\n  // NB: separate grid cell + fractional grid cell coordinate format is due to the discontinuous\n  // derivative, as described better in create_i_derivative_evaluator.js\n  trace.dxyda = function (i0, j0, u, v) {\n    var dxydi = trace.dxydi(null, i0, j0, u, v);\n    var dadi = trace.dadi(i0, u);\n    return [dxydi[0] / dadi, dxydi[1] / dadi];\n  };\n  trace.dxydb = function (i0, j0, u, v) {\n    var dxydj = trace.dxydj(null, i0, j0, u, v);\n    var dbdj = trace.dbdj(j0, v);\n    return [dxydj[0] / dbdj, dxydj[1] / dbdj];\n  };\n\n  // Sometimes we don't care about precision and all we really want is decent rough\n  // directions (as is the case with labels). In that case, we can do a very rough finite\n  // difference and spare having to worry about precise grid coordinates:\n  trace.dxyda_rough = function (a, b, reldiff) {\n    var h = arange * (reldiff || 0.1);\n    var plus = trace.ab2xy(a + h, b, true);\n    var minus = trace.ab2xy(a - h, b, true);\n    return [(plus[0] - minus[0]) * 0.5 / h, (plus[1] - minus[1]) * 0.5 / h];\n  };\n  trace.dxydb_rough = function (a, b, reldiff) {\n    var h = brange * (reldiff || 0.1);\n    var plus = trace.ab2xy(a, b + h, true);\n    var minus = trace.ab2xy(a, b - h, true);\n    return [(plus[0] - minus[0]) * 0.5 / h, (plus[1] - minus[1]) * 0.5 / h];\n  };\n  trace.dpdx = function (xa) {\n    return xa._m;\n  };\n  trace.dpdy = function (ya) {\n    return ya._m;\n  };\n};\n\n/***/ }),\n\n/***/ 72505:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2334024__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2334024__(71828);\n\n/*\n * Given a 2D array as well as a basis in either direction, this function fills in the\n * 2D array using a combination of smoothing and extrapolation. This is rather important\n * for carpet plots since it's used for layout so that we can't simply omit or blank out\n * points. We need a reasonable guess so that the interpolation puts points somewhere\n * even if we were to somehow represent that the data was missing later on.\n *\n * input:\n *  - data: 2D array of arrays\n *  - a: array such that a.length === data[0].length\n *  - b: array such that b.length === data.length\n */\nmodule.exports = function smoothFill2dArray(data, a, b) {\n  var i, j, k;\n  var ip = [];\n  var jp = [];\n  // var neighborCnts = [];\n\n  var ni = data[0].length;\n  var nj = data.length;\n  function avgSurrounding(i, j) {\n    // As a low-quality start, we can simply average surrounding points (in a not\n    // non-uniform grid aware manner):\n    var sum = 0.0;\n    var val;\n    var cnt = 0;\n    if (i > 0 && (val = data[j][i - 1]) !== undefined) {\n      cnt++;\n      sum += val;\n    }\n    if (i < ni - 1 && (val = data[j][i + 1]) !== undefined) {\n      cnt++;\n      sum += val;\n    }\n    if (j > 0 && (val = data[j - 1][i]) !== undefined) {\n      cnt++;\n      sum += val;\n    }\n    if (j < nj - 1 && (val = data[j + 1][i]) !== undefined) {\n      cnt++;\n      sum += val;\n    }\n    return sum / Math.max(1, cnt);\n  }\n\n  // This loop iterates over all cells. Any cells that are null will be noted and those\n  // are the only points we will loop over and update via laplace's equation. Points with\n  // any neighbors will receive the average. If there are no neighboring points, then they\n  // will be set to zero. Also as we go, track the maximum magnitude so that we can scale\n  // our tolerance accordingly.\n  var dmax = 0.0;\n  for (i = 0; i < ni; i++) {\n    for (j = 0; j < nj; j++) {\n      if (data[j][i] === undefined) {\n        ip.push(i);\n        jp.push(j);\n        data[j][i] = avgSurrounding(i, j);\n        // neighborCnts.push(result.neighbors);\n      }\n\n      dmax = Math.max(dmax, Math.abs(data[j][i]));\n    }\n  }\n  if (!ip.length) return data;\n\n  // The tolerance doesn't need to be excessive. It's just for display positioning\n  var dxp, dxm, dap, dam, dbp, dbm, c, d, diff, reldiff, overrelaxation;\n  var tol = 1e-5;\n  var resid = 0;\n  var itermax = 100;\n  var iter = 0;\n  var n = ip.length;\n  do {\n    resid = 0;\n    // Normally we'd loop in two dimensions, but not all points are blank and need\n    // an update, so we instead loop only over the points that were tabulated above\n    for (k = 0; k < n; k++) {\n      i = ip[k];\n      j = jp[k];\n      // neighborCnt = neighborCnts[k];\n\n      // Track a counter for how many contributions there are. We'll use this counter\n      // to average at the end, which reduces to laplace's equation with neumann boundary\n      // conditions on the first derivative (second derivative is zero so that we get\n      // a nice linear extrapolation at the boundaries).\n      var boundaryCnt = 0;\n      var newVal = 0;\n      var d0, d1, x0, x1, i0, j0;\n      if (i === 0) {\n        // If this lies along the i = 0 boundary, extrapolate from the two points\n        // to the right of this point. Note that the finite differences take into\n        // account non-uniform grid spacing:\n        i0 = Math.min(ni - 1, 2);\n        x0 = a[i0];\n        x1 = a[1];\n        d0 = data[j][i0];\n        d1 = data[j][1];\n        newVal += d1 + (d1 - d0) * (a[0] - x1) / (x1 - x0);\n        boundaryCnt++;\n      } else if (i === ni - 1) {\n        // If along the high i boundary, extrapolate from the two points to the\n        // left of this point\n        i0 = Math.max(0, ni - 3);\n        x0 = a[i0];\n        x1 = a[ni - 2];\n        d0 = data[j][i0];\n        d1 = data[j][ni - 2];\n        newVal += d1 + (d1 - d0) * (a[ni - 1] - x1) / (x1 - x0);\n        boundaryCnt++;\n      }\n      if ((i === 0 || i === ni - 1) && j > 0 && j < nj - 1) {\n        // If along the min(i) or max(i) boundaries, also smooth vertically as long\n        // as we're not in a corner. Note that the finite differences used here\n        // are also aware of nonuniform grid spacing:\n        dxp = b[j + 1] - b[j];\n        dxm = b[j] - b[j - 1];\n        newVal += (dxm * data[j + 1][i] + dxp * data[j - 1][i]) / (dxm + dxp);\n        boundaryCnt++;\n      }\n      if (j === 0) {\n        // If along the j = 0 boundary, extrpolate this point from the two points\n        // above it\n        j0 = Math.min(nj - 1, 2);\n        x0 = b[j0];\n        x1 = b[1];\n        d0 = data[j0][i];\n        d1 = data[1][i];\n        newVal += d1 + (d1 - d0) * (b[0] - x1) / (x1 - x0);\n        boundaryCnt++;\n      } else if (j === nj - 1) {\n        // Same for the max j boundary from the cells below it:\n        j0 = Math.max(0, nj - 3);\n        x0 = b[j0];\n        x1 = b[nj - 2];\n        d0 = data[j0][i];\n        d1 = data[nj - 2][i];\n        newVal += d1 + (d1 - d0) * (b[nj - 1] - x1) / (x1 - x0);\n        boundaryCnt++;\n      }\n      if ((j === 0 || j === nj - 1) && i > 0 && i < ni - 1) {\n        // Now average points to the left/right as long as not in a corner:\n        dxp = a[i + 1] - a[i];\n        dxm = a[i] - a[i - 1];\n        newVal += (dxm * data[j][i + 1] + dxp * data[j][i - 1]) / (dxm + dxp);\n        boundaryCnt++;\n      }\n      if (!boundaryCnt) {\n        // If none of the above conditions were triggered, then this is an interior\n        // point and we can just do a laplace equation update. As above, these differences\n        // are aware of nonuniform grid spacing:\n        dap = a[i + 1] - a[i];\n        dam = a[i] - a[i - 1];\n        dbp = b[j + 1] - b[j];\n        dbm = b[j] - b[j - 1];\n\n        // These are just some useful constants for the iteration, which is perfectly\n        // straightforward but a little long to derive from f_xx + f_yy = 0.\n        c = dap * dam * (dap + dam);\n        d = dbp * dbm * (dbp + dbm);\n        newVal = (c * (dbm * data[j + 1][i] + dbp * data[j - 1][i]) + d * (dam * data[j][i + 1] + dap * data[j][i - 1])) / (d * (dam + dap) + c * (dbm + dbp));\n      } else {\n        // If we did have contributions from the boundary conditions, then average\n        // the result from the various contributions:\n        newVal /= boundaryCnt;\n      }\n\n      // Jacobi updates are ridiculously slow to converge, so this approach uses a\n      // Gauss-seidel iteration which is dramatically faster.\n      diff = newVal - data[j][i];\n      reldiff = diff / dmax;\n      resid += reldiff * reldiff;\n\n      // Gauss-Seidel-ish iteration, omega chosen based on heuristics and some\n      // quick tests.\n      //\n      // NB: Don't overrelax the boundarie. Otherwise set an overrelaxation factor\n      // which is a little low but safely optimal-ish:\n      overrelaxation = boundaryCnt ? 0 : 0.85;\n\n      // If there are four non-null neighbors, then we want a simple average without\n      // overrelaxation. If all the surrounding points are null, then we want the full\n      // overrelaxation\n      //\n      // Based on experiments, this actually seems to slow down convergence just a bit.\n      // I'll leave it here for reference in case this needs to be revisited, but\n      // it seems to work just fine without this.\n      // if (overrelaxation) overrelaxation *= (4 - neighborCnt) / 4;\n\n      data[j][i] += diff * (1 + overrelaxation);\n    }\n    resid = Math.sqrt(resid);\n  } while (iter++ < itermax && resid > tol);\n  Lib.log('Smoother converged to', resid, 'after', iter, 'iterations');\n  return data;\n};\n\n/***/ }),\n\n/***/ 19237:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2341705__) {\n\n\"use strict\";\n\n\nvar isArray1D = (__nested_webpack_require_2341705__(71828).isArray1D);\nmodule.exports = function handleXYDefaults(traceIn, traceOut, coerce) {\n  var x = coerce('x');\n  var hasX = x && x.length;\n  var y = coerce('y');\n  var hasY = y && y.length;\n  if (!hasX && !hasY) return false;\n  traceOut._cheater = !x;\n  if ((!hasX || isArray1D(x)) && (!hasY || isArray1D(y))) {\n    var len = hasX ? x.length : Infinity;\n    if (hasY) len = Math.min(len, y.length);\n    if (traceOut.a && traceOut.a.length) len = Math.min(len, traceOut.a.length);\n    if (traceOut.b && traceOut.b.length) len = Math.min(len, traceOut.b.length);\n    traceOut._length = len;\n  } else traceOut._length = null;\n  return true;\n};\n\n/***/ }),\n\n/***/ 69568:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2342501__) {\n\n\"use strict\";\n\n\nvar hovertemplateAttrs = (__nested_webpack_require_2342501__(5386)/* .hovertemplateAttrs */ .f);\nvar scatterGeoAttrs = __nested_webpack_require_2342501__(19316);\nvar colorScaleAttrs = __nested_webpack_require_2342501__(50693);\nvar baseAttrs = __nested_webpack_require_2342501__(9012);\nvar defaultLine = (__nested_webpack_require_2342501__(22399).defaultLine);\nvar extendFlat = (__nested_webpack_require_2342501__(1426).extendFlat);\nvar scatterGeoMarkerLineAttrs = scatterGeoAttrs.marker.line;\nmodule.exports = extendFlat({\n  locations: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  locationmode: scatterGeoAttrs.locationmode,\n  z: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  geojson: extendFlat({}, scatterGeoAttrs.geojson, {}),\n  featureidkey: scatterGeoAttrs.featureidkey,\n  text: extendFlat({}, scatterGeoAttrs.text, {}),\n  hovertext: extendFlat({}, scatterGeoAttrs.hovertext, {}),\n  marker: {\n    line: {\n      color: extendFlat({}, scatterGeoMarkerLineAttrs.color, {\n        dflt: defaultLine\n      }),\n      width: extendFlat({}, scatterGeoMarkerLineAttrs.width, {\n        dflt: 1\n      }),\n      editType: 'calc'\n    },\n    opacity: {\n      valType: 'number',\n      arrayOk: true,\n      min: 0,\n      max: 1,\n      dflt: 1,\n      editType: 'style'\n    },\n    editType: 'calc'\n  },\n  selected: {\n    marker: {\n      opacity: scatterGeoAttrs.selected.marker.opacity,\n      editType: 'plot'\n    },\n    editType: 'plot'\n  },\n  unselected: {\n    marker: {\n      opacity: scatterGeoAttrs.unselected.marker.opacity,\n      editType: 'plot'\n    },\n    editType: 'plot'\n  },\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {\n    editType: 'calc',\n    flags: ['location', 'z', 'text', 'name']\n  }),\n  hovertemplate: hovertemplateAttrs(),\n  showlegend: extendFlat({}, baseAttrs.showlegend, {\n    dflt: false\n  })\n}, colorScaleAttrs('', {\n  cLetter: 'z',\n  editTypeOverride: 'calc'\n}));\n\n/***/ }),\n\n/***/ 38675:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2344432__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_2344432__(92770);\nvar BADNUM = (__nested_webpack_require_2344432__(50606).BADNUM);\nvar colorscaleCalc = __nested_webpack_require_2344432__(78803);\nvar arraysToCalcdata = __nested_webpack_require_2344432__(75225);\nvar calcSelection = __nested_webpack_require_2344432__(66279);\nfunction isNonBlankString(v) {\n  return v && typeof v === 'string';\n}\nmodule.exports = function calc(gd, trace) {\n  var len = trace._length;\n  var calcTrace = new Array(len);\n  var isValidLoc;\n  if (trace.geojson) {\n    isValidLoc = function (v) {\n      return isNonBlankString(v) || isNumeric(v);\n    };\n  } else {\n    isValidLoc = isNonBlankString;\n  }\n  for (var i = 0; i < len; i++) {\n    var calcPt = calcTrace[i] = {};\n    var loc = trace.locations[i];\n    var z = trace.z[i];\n    if (isValidLoc(loc) && isNumeric(z)) {\n      calcPt.loc = loc;\n      calcPt.z = z;\n    } else {\n      calcPt.loc = null;\n      calcPt.z = BADNUM;\n    }\n    calcPt.index = i;\n  }\n  arraysToCalcdata(calcTrace, trace);\n  colorscaleCalc(gd, trace, {\n    vals: trace.z,\n    containerStr: '',\n    cLetter: 'z'\n  });\n  calcSelection(calcTrace, trace);\n  return calcTrace;\n};\n\n/***/ }),\n\n/***/ 61869:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2345644__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2345644__(71828);\nvar colorscaleDefaults = __nested_webpack_require_2345644__(1586);\nvar attributes = __nested_webpack_require_2345644__(69568);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var locations = coerce('locations');\n  var z = coerce('z');\n  if (!(locations && locations.length && Lib.isArrayOrTypedArray(z) && z.length)) {\n    traceOut.visible = false;\n    return;\n  }\n  traceOut._length = Math.min(locations.length, z.length);\n  var geojson = coerce('geojson');\n  var locationmodeDflt;\n  if (typeof geojson === 'string' && geojson !== '' || Lib.isPlainObject(geojson)) {\n    locationmodeDflt = 'geojson-id';\n  }\n  var locationMode = coerce('locationmode', locationmodeDflt);\n  if (locationMode === 'geojson-id') {\n    coerce('featureidkey');\n  }\n  coerce('text');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  var mlw = coerce('marker.line.width');\n  if (mlw) coerce('marker.line.color');\n  coerce('marker.opacity');\n  colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n    prefix: '',\n    cLetter: 'z'\n  });\n  Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n};\n\n/***/ }),\n\n/***/ 92069:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function eventData(out, pt, trace, cd, pointNumber) {\n  out.location = pt.location;\n  out.z = pt.z;\n\n  // include feature properties from input geojson\n  var cdi = cd[pointNumber];\n  if (cdi.fIn && cdi.fIn.properties) {\n    out.properties = cdi.fIn.properties;\n  }\n  out.ct = cdi.ct;\n  return out;\n};\n\n/***/ }),\n\n/***/ 42300:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2347367__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_2347367__(89298);\nvar attributes = __nested_webpack_require_2347367__(69568);\nvar fillText = (__nested_webpack_require_2347367__(71828).fillText);\nmodule.exports = function hoverPoints(pointData, xval, yval) {\n  var cd = pointData.cd;\n  var trace = cd[0].trace;\n  var geo = pointData.subplot;\n  var pt, i, j, isInside;\n  var xy = [xval, yval];\n  var altXy = [xval + 360, yval];\n  for (i = 0; i < cd.length; i++) {\n    pt = cd[i];\n    isInside = false;\n    if (pt._polygons) {\n      for (j = 0; j < pt._polygons.length; j++) {\n        if (pt._polygons[j].contains(xy)) {\n          isInside = !isInside;\n        }\n        // for polygons that cross antimeridian as xval is in [-180, 180]\n        if (pt._polygons[j].contains(altXy)) {\n          isInside = !isInside;\n        }\n      }\n      if (isInside) break;\n    }\n  }\n  if (!isInside || !pt) return;\n  pointData.x0 = pointData.x1 = pointData.xa.c2p(pt.ct);\n  pointData.y0 = pointData.y1 = pointData.ya.c2p(pt.ct);\n  pointData.index = pt.index;\n  pointData.location = pt.loc;\n  pointData.z = pt.z;\n  pointData.zLabel = Axes.tickText(geo.mockAxis, geo.mockAxis.c2l(pt.z), 'hover').text;\n  pointData.hovertemplate = pt.hovertemplate;\n  makeHoverInfo(pointData, trace, pt);\n  return [pointData];\n};\nfunction makeHoverInfo(pointData, trace, pt) {\n  if (trace.hovertemplate) return;\n  var hoverinfo = pt.hi || trace.hoverinfo;\n  var loc = String(pt.loc);\n  var parts = hoverinfo === 'all' ? attributes.hoverinfo.flags : hoverinfo.split('+');\n  var hasName = parts.indexOf('name') !== -1;\n  var hasLocation = parts.indexOf('location') !== -1;\n  var hasZ = parts.indexOf('z') !== -1;\n  var hasText = parts.indexOf('text') !== -1;\n  var hasIdAsNameLabel = !hasName && hasLocation;\n  var text = [];\n  if (hasIdAsNameLabel) {\n    pointData.nameOverride = loc;\n  } else {\n    if (hasName) pointData.nameOverride = trace.name;\n    if (hasLocation) text.push(loc);\n  }\n  if (hasZ) {\n    text.push(pointData.zLabel);\n  }\n  if (hasText) {\n    fillText(pt, trace, text);\n  }\n  pointData.extraText = text.join('<br>');\n}\n\n/***/ }),\n\n/***/ 51319:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2349528__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2349528__(69568),\n  supplyDefaults: __nested_webpack_require_2349528__(61869),\n  colorbar: __nested_webpack_require_2349528__(61243),\n  calc: __nested_webpack_require_2349528__(38675),\n  calcGeoJSON: (__nested_webpack_require_2349528__(99841).calcGeoJSON),\n  plot: (__nested_webpack_require_2349528__(99841).plot),\n  style: (__nested_webpack_require_2349528__(99636).style),\n  styleOnSelect: (__nested_webpack_require_2349528__(99636).styleOnSelect),\n  hoverPoints: __nested_webpack_require_2349528__(42300),\n  eventData: __nested_webpack_require_2349528__(92069),\n  selectPoints: __nested_webpack_require_2349528__(81253),\n  moduleType: 'trace',\n  name: 'choropleth',\n  basePlotModule: __nested_webpack_require_2349528__(44622),\n  categories: ['geo', 'noOpacity', 'showLegend'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 99841:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2350315__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2350315__(39898);\nvar Lib = __nested_webpack_require_2350315__(71828);\nvar geoUtils = __nested_webpack_require_2350315__(41327);\nvar getTopojsonFeatures = (__nested_webpack_require_2350315__(90973).getTopojsonFeatures);\nvar findExtremes = (__nested_webpack_require_2350315__(71739).findExtremes);\nvar style = (__nested_webpack_require_2350315__(99636).style);\nfunction plot(gd, geo, calcData) {\n  var choroplethLayer = geo.layers.backplot.select('.choroplethlayer');\n  Lib.makeTraceGroups(choroplethLayer, calcData, 'trace choropleth').each(function (calcTrace) {\n    var sel = d3.select(this);\n    var paths = sel.selectAll('path.choroplethlocation').data(Lib.identity);\n    paths.enter().append('path').classed('choroplethlocation', true);\n    paths.exit().remove();\n\n    // call style here within topojson request callback\n    style(gd, calcTrace);\n  });\n}\nfunction calcGeoJSON(calcTrace, fullLayout) {\n  var trace = calcTrace[0].trace;\n  var geoLayout = fullLayout[trace.geo];\n  var geo = geoLayout._subplot;\n  var locationmode = trace.locationmode;\n  var len = trace._length;\n  var features = locationmode === 'geojson-id' ? geoUtils.extractTraceFeature(calcTrace) : getTopojsonFeatures(trace, geo.topojson);\n  var lonArray = [];\n  var latArray = [];\n  for (var i = 0; i < len; i++) {\n    var calcPt = calcTrace[i];\n    var feature = locationmode === 'geojson-id' ? calcPt.fOut : geoUtils.locationToFeature(locationmode, calcPt.loc, features);\n    if (feature) {\n      calcPt.geojson = feature;\n      calcPt.ct = feature.properties.ct;\n      calcPt._polygons = geoUtils.feature2polygons(feature);\n      var bboxFeature = geoUtils.computeBbox(feature);\n      lonArray.push(bboxFeature[0], bboxFeature[2]);\n      latArray.push(bboxFeature[1], bboxFeature[3]);\n    } else {\n      calcPt.geojson = null;\n    }\n  }\n  if (geoLayout.fitbounds === 'geojson' && locationmode === 'geojson-id') {\n    var bboxGeojson = geoUtils.computeBbox(geoUtils.getTraceGeojson(trace));\n    lonArray = [bboxGeojson[0], bboxGeojson[2]];\n    latArray = [bboxGeojson[1], bboxGeojson[3]];\n  }\n  var opts = {\n    padded: true\n  };\n  trace._extremes.lon = findExtremes(geoLayout.lonaxis._ax, lonArray, opts);\n  trace._extremes.lat = findExtremes(geoLayout.lataxis._ax, latArray, opts);\n}\nmodule.exports = {\n  calcGeoJSON: calcGeoJSON,\n  plot: plot\n};\n\n/***/ }),\n\n/***/ 81253:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function selectPoints(searchInfo, selectionTester) {\n  var cd = searchInfo.cd;\n  var xa = searchInfo.xaxis;\n  var ya = searchInfo.yaxis;\n  var selection = [];\n  var i, di, ct, x, y;\n  if (selectionTester === false) {\n    for (i = 0; i < cd.length; i++) {\n      cd[i].selected = 0;\n    }\n  } else {\n    for (i = 0; i < cd.length; i++) {\n      di = cd[i];\n      ct = di.ct;\n      if (!ct) continue;\n      x = xa.c2p(ct);\n      y = ya.c2p(ct);\n      if (selectionTester.contains([x, y], null, i, searchInfo)) {\n        selection.push({\n          pointNumber: i,\n          lon: ct[0],\n          lat: ct[1]\n        });\n        di.selected = 1;\n      } else {\n        di.selected = 0;\n      }\n    }\n  }\n  return selection;\n};\n\n/***/ }),\n\n/***/ 99636:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2353505__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2353505__(39898);\nvar Color = __nested_webpack_require_2353505__(7901);\nvar Drawing = __nested_webpack_require_2353505__(91424);\nvar Colorscale = __nested_webpack_require_2353505__(21081);\nfunction style(gd, calcTrace) {\n  if (calcTrace) styleTrace(gd, calcTrace);\n}\nfunction styleTrace(gd, calcTrace) {\n  var trace = calcTrace[0].trace;\n  var s = calcTrace[0].node3;\n  var locs = s.selectAll('.choroplethlocation');\n  var marker = trace.marker || {};\n  var markerLine = marker.line || {};\n  var sclFunc = Colorscale.makeColorScaleFuncFromTrace(trace);\n  locs.each(function (d) {\n    d3.select(this).attr('fill', sclFunc(d.z)).call(Color.stroke, d.mlc || markerLine.color).call(Drawing.dashLine, '', d.mlw || markerLine.width || 0).style('opacity', marker.opacity);\n  });\n  Drawing.selectedPointStyle(locs, trace);\n}\nfunction styleOnSelect(gd, calcTrace) {\n  var s = calcTrace[0].node3;\n  var trace = calcTrace[0].trace;\n  if (trace.selectedpoints) {\n    Drawing.selectedPointStyle(s.selectAll('.choroplethlocation'), trace);\n  } else {\n    styleTrace(gd, calcTrace);\n  }\n}\nmodule.exports = {\n  style: style,\n  styleOnSelect: styleOnSelect\n};\n\n/***/ }),\n\n/***/ 64496:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2354737__) {\n\n\"use strict\";\n\n\nvar choroplethAttrs = __nested_webpack_require_2354737__(69568);\nvar colorScaleAttrs = __nested_webpack_require_2354737__(50693);\nvar hovertemplateAttrs = (__nested_webpack_require_2354737__(5386)/* .hovertemplateAttrs */ .f);\nvar baseAttrs = __nested_webpack_require_2354737__(9012);\nvar extendFlat = (__nested_webpack_require_2354737__(1426).extendFlat);\nmodule.exports = extendFlat({\n  locations: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  // TODO\n  // Maybe start with only one value (that we could name e.g. 'geojson-id'),\n  // but eventually:\n  // - we could also support for our own dist/topojson/*\n  //   .. and locationmode: choroplethAttrs.locationmode,\n\n  z: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  // TODO maybe we could also set a \"key\" to dig out values out of the\n  // GeoJSON feature `properties` fields?\n\n  geojson: {\n    valType: 'any',\n    editType: 'calc'\n  },\n  featureidkey: extendFlat({}, choroplethAttrs.featureidkey, {}),\n  // TODO agree on name / behaviour\n  //\n  // 'below' is used currently for layout.mapbox.layers,\n  // even though it's not very plotly-esque.\n  //\n  // Note also, that the mapbox-gl style don't all have the same layers,\n  // see https://codepen.io/etpinard/pen/ydVMwM for full list\n  below: {\n    valType: 'string',\n    editType: 'plot'\n  },\n  text: choroplethAttrs.text,\n  hovertext: choroplethAttrs.hovertext,\n  marker: {\n    line: {\n      color: extendFlat({}, choroplethAttrs.marker.line.color, {\n        editType: 'plot'\n      }),\n      width: extendFlat({}, choroplethAttrs.marker.line.width, {\n        editType: 'plot'\n      }),\n      editType: 'calc'\n    },\n    // TODO maybe having a dflt less than 1, together with `below:''` would be better?\n    opacity: extendFlat({}, choroplethAttrs.marker.opacity, {\n      editType: 'plot'\n    }),\n    editType: 'calc'\n  },\n  selected: {\n    marker: {\n      opacity: extendFlat({}, choroplethAttrs.selected.marker.opacity, {\n        editType: 'plot'\n      }),\n      editType: 'plot'\n    },\n    editType: 'plot'\n  },\n  unselected: {\n    marker: {\n      opacity: extendFlat({}, choroplethAttrs.unselected.marker.opacity, {\n        editType: 'plot'\n      }),\n      editType: 'plot'\n    },\n    editType: 'plot'\n  },\n  hoverinfo: choroplethAttrs.hoverinfo,\n  hovertemplate: hovertemplateAttrs({}, {\n    keys: ['properties']\n  }),\n  showlegend: extendFlat({}, baseAttrs.showlegend, {\n    dflt: false\n  })\n}, colorScaleAttrs('', {\n  cLetter: 'z',\n  editTypeOverride: 'calc'\n}));\n\n/***/ }),\n\n/***/ 82004:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2357276__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_2357276__(92770);\nvar Lib = __nested_webpack_require_2357276__(71828);\nvar Colorscale = __nested_webpack_require_2357276__(21081);\nvar Drawing = __nested_webpack_require_2357276__(91424);\nvar makeBlank = (__nested_webpack_require_2357276__(18214).makeBlank);\nvar geoUtils = __nested_webpack_require_2357276__(41327);\n\n/* N.B.\n *\n * We fetch the GeoJSON files \"ourselves\" (during\n * mapbox.prototype.fetchMapData) where they are stored in a global object\n * named `PlotlyGeoAssets` (same as for topojson files in `geo` subplots).\n *\n * Mapbox does allow using URLs as geojson sources, but does NOT allow filtering\n * features by feature `id` that are not numbers (more info in:\n * https://github.com/mapbox/mapbox-gl-js/issues/8088).\n */\n\nfunction convert(calcTrace) {\n  var trace = calcTrace[0].trace;\n  var isVisible = trace.visible === true && trace._length !== 0;\n  var fill = {\n    layout: {\n      visibility: 'none'\n    },\n    paint: {}\n  };\n  var line = {\n    layout: {\n      visibility: 'none'\n    },\n    paint: {}\n  };\n  var opts = trace._opts = {\n    fill: fill,\n    line: line,\n    geojson: makeBlank()\n  };\n  if (!isVisible) return opts;\n  var features = geoUtils.extractTraceFeature(calcTrace);\n  if (!features) return opts;\n  var sclFunc = Colorscale.makeColorScaleFuncFromTrace(trace);\n  var marker = trace.marker;\n  var markerLine = marker.line || {};\n  var opacityFn;\n  if (Lib.isArrayOrTypedArray(marker.opacity)) {\n    opacityFn = function (d) {\n      var mo = d.mo;\n      return isNumeric(mo) ? +Lib.constrain(mo, 0, 1) : 0;\n    };\n  }\n  var lineColorFn;\n  if (Lib.isArrayOrTypedArray(markerLine.color)) {\n    lineColorFn = function (d) {\n      return d.mlc;\n    };\n  }\n  var lineWidthFn;\n  if (Lib.isArrayOrTypedArray(markerLine.width)) {\n    lineWidthFn = function (d) {\n      return d.mlw;\n    };\n  }\n  for (var i = 0; i < calcTrace.length; i++) {\n    var cdi = calcTrace[i];\n    var fOut = cdi.fOut;\n    if (fOut) {\n      var props = fOut.properties;\n      props.fc = sclFunc(cdi.z);\n      if (opacityFn) props.mo = opacityFn(cdi);\n      if (lineColorFn) props.mlc = lineColorFn(cdi);\n      if (lineWidthFn) props.mlw = lineWidthFn(cdi);\n      cdi.ct = props.ct;\n      cdi._polygons = geoUtils.feature2polygons(fOut);\n    }\n  }\n  var opacitySetting = opacityFn ? {\n    type: 'identity',\n    property: 'mo'\n  } : marker.opacity;\n  Lib.extendFlat(fill.paint, {\n    'fill-color': {\n      type: 'identity',\n      property: 'fc'\n    },\n    'fill-opacity': opacitySetting\n  });\n  Lib.extendFlat(line.paint, {\n    'line-color': lineColorFn ? {\n      type: 'identity',\n      property: 'mlc'\n    } : markerLine.color,\n    'line-width': lineWidthFn ? {\n      type: 'identity',\n      property: 'mlw'\n    } : markerLine.width,\n    'line-opacity': opacitySetting\n  });\n  fill.layout.visibility = 'visible';\n  line.layout.visibility = 'visible';\n  opts.geojson = {\n    type: 'FeatureCollection',\n    features: features\n  };\n  convertOnSelect(calcTrace);\n  return opts;\n}\nfunction convertOnSelect(calcTrace) {\n  var trace = calcTrace[0].trace;\n  var opts = trace._opts;\n  var opacitySetting;\n  if (trace.selectedpoints) {\n    var fns = Drawing.makeSelectedPointStyleFns(trace);\n    for (var i = 0; i < calcTrace.length; i++) {\n      var cdi = calcTrace[i];\n      if (cdi.fOut) {\n        cdi.fOut.properties.mo2 = fns.selectedOpacityFn(cdi);\n      }\n    }\n    opacitySetting = {\n      type: 'identity',\n      property: 'mo2'\n    };\n  } else {\n    opacitySetting = Lib.isArrayOrTypedArray(trace.marker.opacity) ? {\n      type: 'identity',\n      property: 'mo'\n    } : trace.marker.opacity;\n  }\n  Lib.extendFlat(opts.fill.paint, {\n    'fill-opacity': opacitySetting\n  });\n  Lib.extendFlat(opts.line.paint, {\n    'line-opacity': opacitySetting\n  });\n  return opts;\n}\nmodule.exports = {\n  convert: convert,\n  convertOnSelect: convertOnSelect\n};\n\n/***/ }),\n\n/***/ 22654:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2361190__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2361190__(71828);\nvar colorscaleDefaults = __nested_webpack_require_2361190__(1586);\nvar attributes = __nested_webpack_require_2361190__(64496);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var locations = coerce('locations');\n  var z = coerce('z');\n  var geojson = coerce('geojson');\n  if (!Lib.isArrayOrTypedArray(locations) || !locations.length || !Lib.isArrayOrTypedArray(z) || !z.length || !(typeof geojson === 'string' && geojson !== '' || Lib.isPlainObject(geojson))) {\n    traceOut.visible = false;\n    return;\n  }\n  coerce('featureidkey');\n  traceOut._length = Math.min(locations.length, z.length);\n  coerce('below');\n  coerce('text');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  var mlw = coerce('marker.line.width');\n  if (mlw) coerce('marker.line.color');\n  coerce('marker.opacity');\n  colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n    prefix: '',\n    cLetter: 'z'\n  });\n  Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n};\n\n/***/ }),\n\n/***/ 57516:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2362396__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2362396__(64496),\n  supplyDefaults: __nested_webpack_require_2362396__(22654),\n  colorbar: __nested_webpack_require_2362396__(61243),\n  calc: __nested_webpack_require_2362396__(38675),\n  plot: __nested_webpack_require_2362396__(7852),\n  hoverPoints: __nested_webpack_require_2362396__(42300),\n  eventData: __nested_webpack_require_2362396__(92069),\n  selectPoints: __nested_webpack_require_2362396__(81253),\n  styleOnSelect: function (_, cd) {\n    if (cd) {\n      var trace = cd[0].trace;\n      trace._glTrace.updateOnSelect(cd);\n    }\n  },\n  getBelow: function (trace, subplot) {\n    var mapLayers = subplot.getMapLayers();\n\n    // find layer just above top-most \"water\" layer\n    // that is not a plotly layer\n    for (var i = mapLayers.length - 2; i >= 0; i--) {\n      var layerId = mapLayers[i].id;\n      if (typeof layerId === 'string' && layerId.indexOf('water') === 0) {\n        for (var j = i + 1; j < mapLayers.length; j++) {\n          layerId = mapLayers[j].id;\n          if (typeof layerId === 'string' && layerId.indexOf('plotly-') === -1) {\n            return layerId;\n          }\n        }\n      }\n    }\n  },\n  moduleType: 'trace',\n  name: 'choroplethmapbox',\n  basePlotModule: __nested_webpack_require_2362396__(50101),\n  categories: ['mapbox', 'gl', 'noOpacity', 'showLegend'],\n  meta: {\n    hr_name: 'choropleth_mapbox'\n  }\n};\n\n/***/ }),\n\n/***/ 7852:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2363777__) {\n\n\"use strict\";\n\n\nvar convert = (__nested_webpack_require_2363777__(82004).convert);\nvar convertOnSelect = (__nested_webpack_require_2363777__(82004).convertOnSelect);\nvar LAYER_PREFIX = (__nested_webpack_require_2363777__(77734).traceLayerPrefix);\nfunction ChoroplethMapbox(subplot, uid) {\n  this.type = 'choroplethmapbox';\n  this.subplot = subplot;\n  this.uid = uid;\n\n  // N.B. fill and line layers share same source\n  this.sourceId = 'source-' + uid;\n  this.layerList = [['fill', LAYER_PREFIX + uid + '-fill'], ['line', LAYER_PREFIX + uid + '-line']];\n\n  // previous 'below' value,\n  // need this to update it properly\n  this.below = null;\n}\nvar proto = ChoroplethMapbox.prototype;\nproto.update = function (calcTrace) {\n  this._update(convert(calcTrace));\n\n  // link ref for quick update during selections\n  calcTrace[0].trace._glTrace = this;\n};\nproto.updateOnSelect = function (calcTrace) {\n  this._update(convertOnSelect(calcTrace));\n};\nproto._update = function (optsAll) {\n  var subplot = this.subplot;\n  var layerList = this.layerList;\n  var below = subplot.belowLookup['trace-' + this.uid];\n  subplot.map.getSource(this.sourceId).setData(optsAll.geojson);\n  if (below !== this.below) {\n    this._removeLayers();\n    this._addLayers(optsAll, below);\n    this.below = below;\n  }\n  for (var i = 0; i < layerList.length; i++) {\n    var item = layerList[i];\n    var k = item[0];\n    var id = item[1];\n    var opts = optsAll[k];\n    subplot.setOptions(id, 'setLayoutProperty', opts.layout);\n    if (opts.layout.visibility === 'visible') {\n      subplot.setOptions(id, 'setPaintProperty', opts.paint);\n    }\n  }\n};\nproto._addLayers = function (optsAll, below) {\n  var subplot = this.subplot;\n  var layerList = this.layerList;\n  var sourceId = this.sourceId;\n  for (var i = 0; i < layerList.length; i++) {\n    var item = layerList[i];\n    var k = item[0];\n    var opts = optsAll[k];\n    subplot.addLayer({\n      type: k,\n      id: item[1],\n      source: sourceId,\n      layout: opts.layout,\n      paint: opts.paint\n    }, below);\n  }\n};\nproto._removeLayers = function () {\n  var map = this.subplot.map;\n  var layerList = this.layerList;\n  for (var i = layerList.length - 1; i >= 0; i--) {\n    map.removeLayer(layerList[i][1]);\n  }\n};\nproto.dispose = function () {\n  var map = this.subplot.map;\n  this._removeLayers();\n  map.removeSource(this.sourceId);\n};\nmodule.exports = function createChoroplethMapbox(subplot, calcTrace) {\n  var trace = calcTrace[0].trace;\n  var choroplethMapbox = new ChoroplethMapbox(subplot, trace.uid);\n  var sourceId = choroplethMapbox.sourceId;\n  var optsAll = convert(calcTrace);\n  var below = choroplethMapbox.below = subplot.belowLookup['trace-' + trace.uid];\n  subplot.map.addSource(sourceId, {\n    type: 'geojson',\n    data: optsAll.geojson\n  });\n  choroplethMapbox._addLayers(optsAll, below);\n\n  // link ref for quick update during selections\n  calcTrace[0].trace._glTrace = choroplethMapbox;\n  return choroplethMapbox;\n};\n\n/***/ }),\n\n/***/ 12674:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2366786__) {\n\n\"use strict\";\n\n\nvar colorScaleAttrs = __nested_webpack_require_2366786__(50693);\nvar axisHoverFormat = (__nested_webpack_require_2366786__(12663).axisHoverFormat);\nvar hovertemplateAttrs = (__nested_webpack_require_2366786__(5386)/* .hovertemplateAttrs */ .f);\nvar mesh3dAttrs = __nested_webpack_require_2366786__(2418);\nvar baseAttrs = __nested_webpack_require_2366786__(9012);\nvar extendFlat = (__nested_webpack_require_2366786__(1426).extendFlat);\nvar attrs = {\n  x: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  y: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  z: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  u: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  v: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  w: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  // TODO add way to specify cone positions independently of the vector field\n  // provided, similar to MATLAB's coneplot Cx/Cy/Cz meshgrids,\n  // see https://www.mathworks.com/help/matlab/ref/coneplot.html\n  //\n  // Alternatively, if our goal is only to 'fill in gaps' in the vector data,\n  // we could try to extend the heatmap 'connectgaps' algorithm to 3D.\n  // From AJ: this particular algorithm which amounts to a Poisson equation,\n  // both for interpolation and extrapolation - is the right one to use for\n  // cones too.  It makes a field with zero divergence, which is a good\n  // baseline assumption for vector fields.\n  //\n  // cones: {\n  //     // potential attributes to add:\n  //     //\n  //     // - meshmode: 'cartesian-product', 'pts', 'grid'\n  //     //\n  //     // under `meshmode: 'grid'`\n  //     // - (x|y|z)grid.start\n  //     // - (x|y|z)grid.end\n  //     // - (x|y|z)grid.size\n  //\n  //     x: {\n  //         valType: 'data_array',\n  //         editType: 'calc',\n  //\n  //     },\n  //     y: {\n  //         valType: 'data_array',\n  //         editType: 'calc',\n  //\n  //     },\n  //     z: {\n  //         valType: 'data_array',\n  //         editType: 'calc',\n  //\n  //     },\n  //\n  //     editType: 'calc',\n  //\n  // },\n\n  sizemode: {\n    valType: 'enumerated',\n    values: ['scaled', 'absolute'],\n    editType: 'calc',\n    dflt: 'scaled'\n  },\n  sizeref: {\n    valType: 'number',\n    editType: 'calc',\n    min: 0\n  },\n  anchor: {\n    valType: 'enumerated',\n    editType: 'calc',\n    values: ['tip', 'tail', 'cm', 'center'],\n    dflt: 'cm'\n  },\n  text: {\n    valType: 'string',\n    dflt: '',\n    arrayOk: true,\n    editType: 'calc'\n  },\n  hovertext: {\n    valType: 'string',\n    dflt: '',\n    arrayOk: true,\n    editType: 'calc'\n  },\n  hovertemplate: hovertemplateAttrs({\n    editType: 'calc'\n  }, {\n    keys: ['norm']\n  }),\n  uhoverformat: axisHoverFormat('u', 1),\n  vhoverformat: axisHoverFormat('v', 1),\n  whoverformat: axisHoverFormat('w', 1),\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  zhoverformat: axisHoverFormat('z'),\n  showlegend: extendFlat({}, baseAttrs.showlegend, {\n    dflt: false\n  })\n};\nextendFlat(attrs, colorScaleAttrs('', {\n  colorAttr: 'u/v/w norm',\n  showScaleDflt: true,\n  editTypeOverride: 'calc'\n}));\nvar fromMesh3d = ['opacity', 'lightposition', 'lighting'];\nfromMesh3d.forEach(function (k) {\n  attrs[k] = mesh3dAttrs[k];\n});\nattrs.hoverinfo = extendFlat({}, baseAttrs.hoverinfo, {\n  editType: 'calc',\n  flags: ['x', 'y', 'z', 'u', 'v', 'w', 'norm', 'text', 'name'],\n  dflt: 'x+y+z+norm+text+name'\n});\nattrs.transforms = undefined;\nmodule.exports = attrs;\n\n/***/ }),\n\n/***/ 31371:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2370308__) {\n\n\"use strict\";\n\n\nvar colorscaleCalc = __nested_webpack_require_2370308__(78803);\nmodule.exports = function calc(gd, trace) {\n  var u = trace.u;\n  var v = trace.v;\n  var w = trace.w;\n  var len = Math.min(trace.x.length, trace.y.length, trace.z.length, u.length, v.length, w.length);\n  var normMax = -Infinity;\n  var normMin = Infinity;\n  for (var i = 0; i < len; i++) {\n    var uu = u[i];\n    var vv = v[i];\n    var ww = w[i];\n    var norm = Math.sqrt(uu * uu + vv * vv + ww * ww);\n    normMax = Math.max(normMax, norm);\n    normMin = Math.min(normMin, norm);\n  }\n  trace._len = len;\n  trace._normMax = normMax;\n  colorscaleCalc(gd, trace, {\n    vals: [normMin, normMax],\n    containerStr: '',\n    cLetter: 'c'\n  });\n};\n\n/***/ }),\n\n/***/ 5453:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2371109__) {\n\n\"use strict\";\n\n\nvar conePlot = (__nested_webpack_require_2371109__(9330).gl_cone3d);\nvar createConeMesh = (__nested_webpack_require_2371109__(9330).gl_cone3d.createConeMesh);\nvar simpleMap = (__nested_webpack_require_2371109__(71828).simpleMap);\nvar parseColorScale = (__nested_webpack_require_2371109__(81697).parseColorScale);\nvar extractOpts = (__nested_webpack_require_2371109__(21081).extractOpts);\nvar zip3 = __nested_webpack_require_2371109__(90060);\nfunction Cone(scene, uid) {\n  this.scene = scene;\n  this.uid = uid;\n  this.mesh = null;\n  this.data = null;\n}\nvar proto = Cone.prototype;\nproto.handlePick = function (selection) {\n  if (selection.object === this.mesh) {\n    var selectIndex = selection.index = selection.data.index;\n    var xx = this.data.x[selectIndex];\n    var yy = this.data.y[selectIndex];\n    var zz = this.data.z[selectIndex];\n    var uu = this.data.u[selectIndex];\n    var vv = this.data.v[selectIndex];\n    var ww = this.data.w[selectIndex];\n    selection.traceCoordinate = [xx, yy, zz, uu, vv, ww, Math.sqrt(uu * uu + vv * vv + ww * ww)];\n    var text = this.data.hovertext || this.data.text;\n    if (Array.isArray(text) && text[selectIndex] !== undefined) {\n      selection.textLabel = text[selectIndex];\n    } else if (text) {\n      selection.textLabel = text;\n    }\n    return true;\n  }\n};\nvar axisName2scaleIndex = {\n  xaxis: 0,\n  yaxis: 1,\n  zaxis: 2\n};\nvar anchor2coneOffset = {\n  tip: 1,\n  tail: 0,\n  cm: 0.25,\n  center: 0.5\n};\nvar anchor2coneSpan = {\n  tip: 1,\n  tail: 1,\n  cm: 0.75,\n  center: 0.5\n};\nfunction convert(scene, trace) {\n  var sceneLayout = scene.fullSceneLayout;\n  var dataScale = scene.dataScale;\n  var coneOpts = {};\n  function toDataCoords(arr, axisName) {\n    var ax = sceneLayout[axisName];\n    var scale = dataScale[axisName2scaleIndex[axisName]];\n    return simpleMap(arr, function (v) {\n      return ax.d2l(v) * scale;\n    });\n  }\n  coneOpts.vectors = zip3(toDataCoords(trace.u, 'xaxis'), toDataCoords(trace.v, 'yaxis'), toDataCoords(trace.w, 'zaxis'), trace._len);\n  coneOpts.positions = zip3(toDataCoords(trace.x, 'xaxis'), toDataCoords(trace.y, 'yaxis'), toDataCoords(trace.z, 'zaxis'), trace._len);\n  var cOpts = extractOpts(trace);\n  coneOpts.colormap = parseColorScale(trace);\n  coneOpts.vertexIntensityBounds = [cOpts.min / trace._normMax, cOpts.max / trace._normMax];\n  coneOpts.coneOffset = anchor2coneOffset[trace.anchor];\n  if (trace.sizemode === 'scaled') {\n    // unitless sizeref\n    coneOpts.coneSize = trace.sizeref || 0.5;\n  } else {\n    // sizeref here has unit of velocity\n    coneOpts.coneSize = trace.sizeref && trace._normMax ? trace.sizeref / trace._normMax : 0.5;\n  }\n  var meshData = conePlot(coneOpts);\n\n  // pass gl-mesh3d lighting attributes\n  var lp = trace.lightposition;\n  meshData.lightPosition = [lp.x, lp.y, lp.z];\n  meshData.ambient = trace.lighting.ambient;\n  meshData.diffuse = trace.lighting.diffuse;\n  meshData.specular = trace.lighting.specular;\n  meshData.roughness = trace.lighting.roughness;\n  meshData.fresnel = trace.lighting.fresnel;\n  meshData.opacity = trace.opacity;\n\n  // stash autorange pad value\n  trace._pad = anchor2coneSpan[trace.anchor] * meshData.vectorScale * meshData.coneScale * trace._normMax;\n  return meshData;\n}\nproto.update = function (data) {\n  this.data = data;\n  var meshData = convert(this.scene, data);\n  this.mesh.update(meshData);\n};\nproto.dispose = function () {\n  this.scene.glplot.remove(this.mesh);\n  this.mesh.dispose();\n};\nfunction createConeTrace(scene, data) {\n  var gl = scene.glplot.gl;\n  var meshData = convert(scene, data);\n  var mesh = createConeMesh(gl, meshData);\n  var cone = new Cone(scene, data.uid);\n  cone.mesh = mesh;\n  cone.data = data;\n  mesh._trace = cone;\n  scene.glplot.add(mesh);\n  return cone;\n}\nmodule.exports = createConeTrace;\n\n/***/ }),\n\n/***/ 91750:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2374911__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2374911__(71828);\nvar colorscaleDefaults = __nested_webpack_require_2374911__(1586);\nvar attributes = __nested_webpack_require_2374911__(12674);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var u = coerce('u');\n  var v = coerce('v');\n  var w = coerce('w');\n  var x = coerce('x');\n  var y = coerce('y');\n  var z = coerce('z');\n  if (!u || !u.length || !v || !v.length || !w || !w.length || !x || !x.length || !y || !y.length || !z || !z.length) {\n    traceOut.visible = false;\n    return;\n  }\n  coerce('sizeref');\n  coerce('sizemode');\n  coerce('anchor');\n  coerce('lighting.ambient');\n  coerce('lighting.diffuse');\n  coerce('lighting.specular');\n  coerce('lighting.roughness');\n  coerce('lighting.fresnel');\n  coerce('lightposition.x');\n  coerce('lightposition.y');\n  coerce('lightposition.z');\n  colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n    prefix: '',\n    cLetter: 'c'\n  });\n  coerce('text');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  coerce('uhoverformat');\n  coerce('vhoverformat');\n  coerce('whoverformat');\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  coerce('zhoverformat');\n\n  // disable 1D transforms (for now)\n  traceOut._length = null;\n};\n\n/***/ }),\n\n/***/ 98128:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2376343__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'trace',\n  name: 'cone',\n  basePlotModule: __nested_webpack_require_2376343__(58547),\n  categories: ['gl3d', 'showLegend'],\n  attributes: __nested_webpack_require_2376343__(12674),\n  supplyDefaults: __nested_webpack_require_2376343__(91750),\n  colorbar: {\n    min: 'cmin',\n    max: 'cmax'\n  },\n  calc: __nested_webpack_require_2376343__(31371),\n  plot: __nested_webpack_require_2376343__(5453),\n  eventData: function (out, pt) {\n    out.norm = pt.traceCoordinate[6];\n    return out;\n  },\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 70600:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2376918__) {\n\n\"use strict\";\n\n\nvar heatmapAttrs = __nested_webpack_require_2376918__(21606);\nvar scatterAttrs = __nested_webpack_require_2376918__(82196);\nvar axisFormat = __nested_webpack_require_2376918__(12663);\nvar axisHoverFormat = axisFormat.axisHoverFormat;\nvar descriptionOnlyNumbers = axisFormat.descriptionOnlyNumbers;\nvar colorScaleAttrs = __nested_webpack_require_2376918__(50693);\nvar dash = (__nested_webpack_require_2376918__(79952)/* .dash */ .P);\nvar fontAttrs = __nested_webpack_require_2376918__(41940);\nvar extendFlat = (__nested_webpack_require_2376918__(1426).extendFlat);\nvar filterOps = __nested_webpack_require_2376918__(74808);\nvar COMPARISON_OPS2 = filterOps.COMPARISON_OPS2;\nvar INTERVAL_OPS = filterOps.INTERVAL_OPS;\nvar scatterLineAttrs = scatterAttrs.line;\nmodule.exports = extendFlat({\n  z: heatmapAttrs.z,\n  x: heatmapAttrs.x,\n  x0: heatmapAttrs.x0,\n  dx: heatmapAttrs.dx,\n  y: heatmapAttrs.y,\n  y0: heatmapAttrs.y0,\n  dy: heatmapAttrs.dy,\n  xperiod: heatmapAttrs.xperiod,\n  yperiod: heatmapAttrs.yperiod,\n  xperiod0: scatterAttrs.xperiod0,\n  yperiod0: scatterAttrs.yperiod0,\n  xperiodalignment: heatmapAttrs.xperiodalignment,\n  yperiodalignment: heatmapAttrs.yperiodalignment,\n  text: heatmapAttrs.text,\n  hovertext: heatmapAttrs.hovertext,\n  transpose: heatmapAttrs.transpose,\n  xtype: heatmapAttrs.xtype,\n  ytype: heatmapAttrs.ytype,\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  zhoverformat: axisHoverFormat('z', 1),\n  hovertemplate: heatmapAttrs.hovertemplate,\n  texttemplate: extendFlat({}, heatmapAttrs.texttemplate, {}),\n  textfont: extendFlat({}, heatmapAttrs.textfont, {}),\n  hoverongaps: heatmapAttrs.hoverongaps,\n  connectgaps: extendFlat({}, heatmapAttrs.connectgaps, {}),\n  fillcolor: {\n    valType: 'color',\n    editType: 'calc'\n  },\n  autocontour: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc',\n    impliedEdits: {\n      'contours.start': undefined,\n      'contours.end': undefined,\n      'contours.size': undefined\n    }\n  },\n  ncontours: {\n    valType: 'integer',\n    dflt: 15,\n    min: 1,\n    editType: 'calc'\n  },\n  contours: {\n    type: {\n      valType: 'enumerated',\n      values: ['levels', 'constraint'],\n      dflt: 'levels',\n      editType: 'calc'\n    },\n    start: {\n      valType: 'number',\n      dflt: null,\n      editType: 'plot',\n      impliedEdits: {\n        '^autocontour': false\n      }\n    },\n    end: {\n      valType: 'number',\n      dflt: null,\n      editType: 'plot',\n      impliedEdits: {\n        '^autocontour': false\n      }\n    },\n    size: {\n      valType: 'number',\n      dflt: null,\n      min: 0,\n      editType: 'plot',\n      impliedEdits: {\n        '^autocontour': false\n      }\n    },\n    coloring: {\n      valType: 'enumerated',\n      values: ['fill', 'heatmap', 'lines', 'none'],\n      dflt: 'fill',\n      editType: 'calc'\n    },\n    showlines: {\n      valType: 'boolean',\n      dflt: true,\n      editType: 'plot'\n    },\n    showlabels: {\n      valType: 'boolean',\n      dflt: false,\n      editType: 'plot'\n    },\n    labelfont: fontAttrs({\n      editType: 'plot',\n      colorEditType: 'style'\n    }),\n    labelformat: {\n      valType: 'string',\n      dflt: '',\n      editType: 'plot',\n      description: descriptionOnlyNumbers('contour label')\n    },\n    operation: {\n      valType: 'enumerated',\n      values: [].concat(COMPARISON_OPS2).concat(INTERVAL_OPS),\n      dflt: '=',\n      editType: 'calc'\n    },\n    value: {\n      valType: 'any',\n      dflt: 0,\n      editType: 'calc'\n    },\n    editType: 'calc',\n    impliedEdits: {\n      'autocontour': false\n    }\n  },\n  line: {\n    color: extendFlat({}, scatterLineAttrs.color, {\n      editType: 'style+colorbars'\n    }),\n    width: {\n      valType: 'number',\n      min: 0,\n      editType: 'style+colorbars'\n    },\n    dash: dash,\n    smoothing: extendFlat({}, scatterLineAttrs.smoothing, {}),\n    editType: 'plot'\n  }\n}, colorScaleAttrs('', {\n  cLetter: 'z',\n  autoColorDflt: false,\n  editTypeOverride: 'calc'\n}));\n\n/***/ }),\n\n/***/ 27529:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2380881__) {\n\n\"use strict\";\n\n\nvar Colorscale = __nested_webpack_require_2380881__(21081);\nvar heatmapCalc = __nested_webpack_require_2380881__(90757);\nvar setContours = __nested_webpack_require_2380881__(18670);\nvar endPlus = __nested_webpack_require_2380881__(53572);\n\n// most is the same as heatmap calc, then adjust it\n// though a few things inside heatmap calc still look for\n// contour maps, because the makeBoundArray calls are too entangled\nmodule.exports = function calc(gd, trace) {\n  var cd = heatmapCalc(gd, trace);\n  var zOut = cd[0].z;\n  setContours(trace, zOut);\n  var contours = trace.contours;\n  var cOpts = Colorscale.extractOpts(trace);\n  var cVals;\n  if (contours.coloring === 'heatmap' && cOpts.auto && trace.autocontour === false) {\n    var start = contours.start;\n    var end = endPlus(contours);\n    var cs = contours.size || 1;\n    var nc = Math.floor((end - start) / cs) + 1;\n    if (!isFinite(cs)) {\n      cs = 1;\n      nc = 1;\n    }\n    var min0 = start - cs / 2;\n    var max0 = min0 + nc * cs;\n    cVals = [min0, max0];\n  } else {\n    cVals = zOut;\n  }\n  Colorscale.calc(gd, trace, {\n    vals: cVals,\n    cLetter: 'z'\n  });\n  return cd;\n};\n\n/***/ }),\n\n/***/ 20083:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function (pathinfo, contours) {\n  var pi0 = pathinfo[0];\n  var z = pi0.z;\n  var i;\n  switch (contours.type) {\n    case 'levels':\n      // Why (just) use z[0][0] and z[0][1]?\n      //\n      // N.B. using boundaryMin instead of edgeVal2 here makes the\n      //      `contour_scatter` mock fail\n      var edgeVal2 = Math.min(z[0][0], z[0][1]);\n      for (i = 0; i < pathinfo.length; i++) {\n        var pi = pathinfo[i];\n        pi.prefixBoundary = !pi.edgepaths.length && (edgeVal2 > pi.level || pi.starts.length && edgeVal2 === pi.level);\n      }\n      break;\n    case 'constraint':\n      // after convertToConstraints, pathinfo has length=0\n      pi0.prefixBoundary = false;\n\n      // joinAllPaths does enough already when edgepaths are present\n      if (pi0.edgepaths.length) return;\n      var na = pi0.x.length;\n      var nb = pi0.y.length;\n      var boundaryMax = -Infinity;\n      var boundaryMin = Infinity;\n      for (i = 0; i < nb; i++) {\n        boundaryMin = Math.min(boundaryMin, z[i][0]);\n        boundaryMin = Math.min(boundaryMin, z[i][na - 1]);\n        boundaryMax = Math.max(boundaryMax, z[i][0]);\n        boundaryMax = Math.max(boundaryMax, z[i][na - 1]);\n      }\n      for (i = 1; i < na - 1; i++) {\n        boundaryMin = Math.min(boundaryMin, z[0][i]);\n        boundaryMin = Math.min(boundaryMin, z[nb - 1][i]);\n        boundaryMax = Math.max(boundaryMax, z[0][i]);\n        boundaryMax = Math.max(boundaryMax, z[nb - 1][i]);\n      }\n      var contoursValue = contours.value;\n      var v1, v2;\n      switch (contours._operation) {\n        case '>':\n          if (contoursValue > boundaryMax) {\n            pi0.prefixBoundary = true;\n          }\n          break;\n        case '<':\n          if (contoursValue < boundaryMin || pi0.starts.length && contoursValue === boundaryMin) {\n            pi0.prefixBoundary = true;\n          }\n          break;\n        case '[]':\n          v1 = Math.min(contoursValue[0], contoursValue[1]);\n          v2 = Math.max(contoursValue[0], contoursValue[1]);\n          if (v2 < boundaryMin || v1 > boundaryMax || pi0.starts.length && v2 === boundaryMin) {\n            pi0.prefixBoundary = true;\n          }\n          break;\n        case '][':\n          v1 = Math.min(contoursValue[0], contoursValue[1]);\n          v2 = Math.max(contoursValue[0], contoursValue[1]);\n          if (v1 < boundaryMin && v2 > boundaryMax) {\n            pi0.prefixBoundary = true;\n          }\n          break;\n      }\n      break;\n  }\n};\n\n/***/ }),\n\n/***/ 90654:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2384618__) {\n\n\"use strict\";\n\n\nvar Colorscale = __nested_webpack_require_2384618__(21081);\nvar makeColorMap = __nested_webpack_require_2384618__(86068);\nvar endPlus = __nested_webpack_require_2384618__(53572);\nfunction calc(gd, trace, opts) {\n  var contours = trace.contours;\n  var line = trace.line;\n  var cs = contours.size || 1;\n  var coloring = contours.coloring;\n  var colorMap = makeColorMap(trace, {\n    isColorbar: true\n  });\n  if (coloring === 'heatmap') {\n    var cOpts = Colorscale.extractOpts(trace);\n    opts._fillgradient = cOpts.reversescale ? Colorscale.flipScale(cOpts.colorscale) : cOpts.colorscale;\n    opts._zrange = [cOpts.min, cOpts.max];\n  } else if (coloring === 'fill') {\n    opts._fillcolor = colorMap;\n  }\n  opts._line = {\n    color: coloring === 'lines' ? colorMap : line.color,\n    width: contours.showlines !== false ? line.width : 0,\n    dash: line.dash\n  };\n  opts._levels = {\n    start: contours.start,\n    end: endPlus(contours),\n    size: cs\n  };\n}\nmodule.exports = {\n  min: 'zmin',\n  max: 'zmax',\n  calc: calc\n};\n\n/***/ }),\n\n/***/ 36914:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  // some constants to help with marching squares algorithm\n  // where does the path start for each index?\n  BOTTOMSTART: [1, 9, 13, 104, 713],\n  TOPSTART: [4, 6, 7, 104, 713],\n  LEFTSTART: [8, 12, 14, 208, 1114],\n  RIGHTSTART: [2, 3, 11, 208, 1114],\n  // which way [dx,dy] do we leave a given index?\n  // saddles are already disambiguated\n  NEWDELTA: [null, [-1, 0], [0, -1], [-1, 0], [1, 0], null, [0, -1], [-1, 0], [0, 1], [0, 1], null, [0, 1], [1, 0], [1, 0], [0, -1]],\n  // for each saddle, the first index here is used\n  // for dx||dy<0, the second for dx||dy>0\n  CHOOSESADDLE: {\n    104: [4, 1],\n    208: [2, 8],\n    713: [7, 13],\n    1114: [11, 14]\n  },\n  // after one index has been used for a saddle, which do we\n  // substitute to be used up later?\n  SADDLEREMAINDER: {\n    1: 4,\n    2: 8,\n    4: 1,\n    7: 13,\n    8: 2,\n    11: 14,\n    13: 7,\n    14: 11\n  },\n  // length of a contour, as a multiple of the plot area diagonal, per label\n  LABELDISTANCE: 2,\n  // number of contour levels after which we start increasing the number of\n  // labels we draw. Many contours means they will generally be close\n  // together, so it will be harder to follow a long way to find a label\n  LABELINCREASE: 10,\n  // minimum length of a contour line, as a multiple of the label length,\n  // at which we draw *any* labels\n  LABELMIN: 3,\n  // max number of labels to draw on a single contour path, no matter how long\n  LABELMAX: 10,\n  // constants for the label position cost function\n  LABELOPTIMIZER: {\n    // weight given to edge proximity\n    EDGECOST: 1,\n    // weight given to the angle off horizontal\n    ANGLECOST: 1,\n    // weight given to distance from already-placed labels\n    NEIGHBORCOST: 5,\n    // cost multiplier for labels on the same level\n    SAMELEVELFACTOR: 10,\n    // minimum distance (as a multiple of the label length)\n    // for labels on the same level\n    SAMELEVELDISTANCE: 5,\n    // maximum cost before we won't even place the label\n    MAXCOST: 100,\n    // number of evenly spaced points to look at in the first\n    // iteration of the search\n    INITIALSEARCHPOINTS: 10,\n    // number of binary search iterations after the initial wide search\n    ITERATIONS: 5\n  }\n};\n\n/***/ }),\n\n/***/ 83179:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2387986__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_2387986__(92770);\nvar handleLabelDefaults = __nested_webpack_require_2387986__(14523);\nvar Color = __nested_webpack_require_2387986__(7901);\nvar addOpacity = Color.addOpacity;\nvar opacity = Color.opacity;\nvar filterOps = __nested_webpack_require_2387986__(74808);\nvar CONSTRAINT_REDUCTION = filterOps.CONSTRAINT_REDUCTION;\nvar COMPARISON_OPS2 = filterOps.COMPARISON_OPS2;\nmodule.exports = function handleConstraintDefaults(traceIn, traceOut, coerce, layout, defaultColor, opts) {\n  var contours = traceOut.contours;\n  var showLines, lineColor, fillColor;\n  var operation = coerce('contours.operation');\n  contours._operation = CONSTRAINT_REDUCTION[operation];\n  handleConstraintValueDefaults(coerce, contours);\n  if (operation === '=') {\n    showLines = contours.showlines = true;\n  } else {\n    showLines = coerce('contours.showlines');\n    fillColor = coerce('fillcolor', addOpacity((traceIn.line || {}).color || defaultColor, 0.5));\n  }\n  if (showLines) {\n    var lineDfltColor = fillColor && opacity(fillColor) ? addOpacity(traceOut.fillcolor, 1) : defaultColor;\n    lineColor = coerce('line.color', lineDfltColor);\n    coerce('line.width', 2);\n    coerce('line.dash');\n  }\n  coerce('line.smoothing');\n  handleLabelDefaults(coerce, layout, lineColor, opts);\n};\nfunction handleConstraintValueDefaults(coerce, contours) {\n  var zvalue;\n  if (COMPARISON_OPS2.indexOf(contours.operation) === -1) {\n    // Requires an array of two numbers:\n    coerce('contours.value', [0, 1]);\n    if (!Array.isArray(contours.value)) {\n      if (isNumeric(contours.value)) {\n        zvalue = parseFloat(contours.value);\n        contours.value = [zvalue, zvalue + 1];\n      }\n    } else if (contours.value.length > 2) {\n      contours.value = contours.value.slice(2);\n    } else if (contours.length === 0) {\n      contours.value = [0, 1];\n    } else if (contours.length < 2) {\n      zvalue = parseFloat(contours.value[0]);\n      contours.value = [zvalue, zvalue + 1];\n    } else {\n      contours.value = [parseFloat(contours.value[0]), parseFloat(contours.value[1])];\n    }\n  } else {\n    // Requires a single scalar:\n    coerce('contours.value', 0);\n    if (!isNumeric(contours.value)) {\n      if (Array.isArray(contours.value)) {\n        contours.value = parseFloat(contours.value[0]);\n      } else {\n        contours.value = 0;\n      }\n    }\n  }\n}\n\n/***/ }),\n\n/***/ 64237:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2390415__) {\n\n\"use strict\";\n\n\nvar filterOps = __nested_webpack_require_2390415__(74808);\nvar isNumeric = __nested_webpack_require_2390415__(92770);\n\n// This syntax conforms to the existing filter transform syntax, but we don't care\n// about open vs. closed intervals for simply drawing contours constraints:\nmodule.exports = {\n  '[]': makeRangeSettings('[]'),\n  '][': makeRangeSettings(']['),\n  '>': makeInequalitySettings('>'),\n  '<': makeInequalitySettings('<'),\n  '=': makeInequalitySettings('=')\n};\n\n// This does not in any way shape or form support calendars. It's adapted from\n// transforms/filter.js.\nfunction coerceValue(operation, value) {\n  var hasArrayValue = Array.isArray(value);\n  var coercedValue;\n  function coerce(value) {\n    return isNumeric(value) ? +value : null;\n  }\n  if (filterOps.COMPARISON_OPS2.indexOf(operation) !== -1) {\n    coercedValue = hasArrayValue ? coerce(value[0]) : coerce(value);\n  } else if (filterOps.INTERVAL_OPS.indexOf(operation) !== -1) {\n    coercedValue = hasArrayValue ? [coerce(value[0]), coerce(value[1])] : [coerce(value), coerce(value)];\n  } else if (filterOps.SET_OPS.indexOf(operation) !== -1) {\n    coercedValue = hasArrayValue ? value.map(coerce) : [coerce(value)];\n  }\n  return coercedValue;\n}\n\n// Returns a parabola scaled so that the min/max is either +/- 1 and zero at the two values\n// provided. The data is mapped by this function when constructing intervals so that it's\n// very easy to construct contours as normal.\nfunction makeRangeSettings(operation) {\n  return function (value) {\n    value = coerceValue(operation, value);\n\n    // Ensure proper ordering:\n    var min = Math.min(value[0], value[1]);\n    var max = Math.max(value[0], value[1]);\n    return {\n      start: min,\n      end: max,\n      size: max - min\n    };\n  };\n}\nfunction makeInequalitySettings(operation) {\n  return function (value) {\n    value = coerceValue(operation, value);\n    return {\n      start: value,\n      end: Infinity,\n      size: Infinity\n    };\n  };\n}\n\n/***/ }),\n\n/***/ 67217:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function handleContourDefaults(traceIn, traceOut, coerce, coerce2) {\n  var contourStart = coerce2('contours.start');\n  var contourEnd = coerce2('contours.end');\n  var missingEnd = contourStart === false || contourEnd === false;\n\n  // normally we only need size if autocontour is off. But contour.calc\n  // pushes its calculated contour size back to the input trace, so for\n  // things like restyle that can call supplyDefaults without calc\n  // after the initial draw, we can just reuse the previous calculation\n  var contourSize = coerce('contours.size');\n  var autoContour;\n  if (missingEnd) autoContour = traceOut.autocontour = true;else autoContour = coerce('autocontour', false);\n  if (autoContour || !contourSize) coerce('ncontours');\n};\n\n/***/ }),\n\n/***/ 84857:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2393298__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2393298__(71828);\n\n// The contour extraction is great, except it totally fails for constraints because we\n// need weird range loops and flipped contours instead of the usual format. This function\n// does some weird manipulation of the extracted pathinfo data such that it magically\n// draws contours correctly *as* constraints.\n//\n// ** I do not know which \"weird range loops\" the comment above is referring to.\nmodule.exports = function (pathinfo, operation) {\n  var i, pi0, pi1;\n  var op0 = function (arr) {\n    return arr.reverse();\n  };\n  var op1 = function (arr) {\n    return arr;\n  };\n  switch (operation) {\n    case '=':\n    case '<':\n      return pathinfo;\n    case '>':\n      if (pathinfo.length !== 1) {\n        Lib.warn('Contour data invalid for the specified inequality operation.');\n      }\n\n      // In this case there should be exactly one contour levels in pathinfo.\n      // We flip all of the data. This will draw the contour as closed.\n      pi0 = pathinfo[0];\n      for (i = 0; i < pi0.edgepaths.length; i++) {\n        pi0.edgepaths[i] = op0(pi0.edgepaths[i]);\n      }\n      for (i = 0; i < pi0.paths.length; i++) {\n        pi0.paths[i] = op0(pi0.paths[i]);\n      }\n      for (i = 0; i < pi0.starts.length; i++) {\n        pi0.starts[i] = op0(pi0.starts[i]);\n      }\n      return pathinfo;\n    case '][':\n      var tmp = op0;\n      op0 = op1;\n      op1 = tmp;\n    // It's a nice rule, except this definitely *is* what's intended here.\n    /* eslint-disable: no-fallthrough */\n    case '[]':\n      /* eslint-enable: no-fallthrough */\n      if (pathinfo.length !== 2) {\n        Lib.warn('Contour data invalid for the specified inequality range operation.');\n      }\n\n      // In this case there should be exactly two contour levels in pathinfo.\n      // - We concatenate the info into one pathinfo.\n      // - We must also flip all of the data in the `[]` case.\n      // This will draw the contours as closed.\n      pi0 = copyPathinfo(pathinfo[0]);\n      pi1 = copyPathinfo(pathinfo[1]);\n      for (i = 0; i < pi0.edgepaths.length; i++) {\n        pi0.edgepaths[i] = op0(pi0.edgepaths[i]);\n      }\n      for (i = 0; i < pi0.paths.length; i++) {\n        pi0.paths[i] = op0(pi0.paths[i]);\n      }\n      for (i = 0; i < pi0.starts.length; i++) {\n        pi0.starts[i] = op0(pi0.starts[i]);\n      }\n      while (pi1.edgepaths.length) {\n        pi0.edgepaths.push(op1(pi1.edgepaths.shift()));\n      }\n      while (pi1.paths.length) {\n        pi0.paths.push(op1(pi1.paths.shift()));\n      }\n      while (pi1.starts.length) {\n        pi0.starts.push(op1(pi1.starts.shift()));\n      }\n      return [pi0];\n  }\n};\nfunction copyPathinfo(pi) {\n  return Lib.extendFlat({}, pi, {\n    edgepaths: Lib.extendDeep([], pi.edgepaths),\n    paths: Lib.extendDeep([], pi.paths),\n    starts: Lib.extendDeep([], pi.starts)\n  });\n}\n\n/***/ }),\n\n/***/ 13031:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2396255__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2396255__(71828);\nvar handleXYZDefaults = __nested_webpack_require_2396255__(67684);\nvar handlePeriodDefaults = __nested_webpack_require_2396255__(73927);\nvar handleConstraintDefaults = __nested_webpack_require_2396255__(83179);\nvar handleContoursDefaults = __nested_webpack_require_2396255__(67217);\nvar handleStyleDefaults = __nested_webpack_require_2396255__(8724);\nvar handleHeatmapLabelDefaults = __nested_webpack_require_2396255__(58623);\nvar attributes = __nested_webpack_require_2396255__(70600);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  function coerce2(attr) {\n    return Lib.coerce2(traceIn, traceOut, attributes, attr);\n  }\n  var len = handleXYZDefaults(traceIn, traceOut, coerce, layout);\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  handlePeriodDefaults(traceIn, traceOut, layout, coerce);\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  coerce('text');\n  coerce('hovertext');\n  coerce('hoverongaps');\n  coerce('hovertemplate');\n  var isConstraint = coerce('contours.type') === 'constraint';\n  coerce('connectgaps', Lib.isArray1D(traceOut.z));\n  if (isConstraint) {\n    handleConstraintDefaults(traceIn, traceOut, coerce, layout, defaultColor);\n  } else {\n    handleContoursDefaults(traceIn, traceOut, coerce, coerce2);\n    handleStyleDefaults(traceIn, traceOut, coerce, layout);\n  }\n  if (traceOut.contours && traceOut.contours.coloring === 'heatmap') {\n    handleHeatmapLabelDefaults(coerce, layout);\n  }\n};\n\n/***/ }),\n\n/***/ 87558:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2397879__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2397879__(71828);\nvar constraintMapping = __nested_webpack_require_2397879__(64237);\nvar endPlus = __nested_webpack_require_2397879__(53572);\nmodule.exports = function emptyPathinfo(contours, plotinfo, cd0) {\n  var contoursFinal = contours.type === 'constraint' ? constraintMapping[contours._operation](contours.value) : contours;\n  var cs = contoursFinal.size;\n  var pathinfo = [];\n  var end = endPlus(contoursFinal);\n  var carpet = cd0.trace._carpetTrace;\n  var basePathinfo = carpet ? {\n    // store axes so we can convert to px\n    xaxis: carpet.aaxis,\n    yaxis: carpet.baxis,\n    // full data arrays to use for interpolation\n    x: cd0.a,\n    y: cd0.b\n  } : {\n    xaxis: plotinfo.xaxis,\n    yaxis: plotinfo.yaxis,\n    x: cd0.x,\n    y: cd0.y\n  };\n  for (var ci = contoursFinal.start; ci < end; ci += cs) {\n    pathinfo.push(Lib.extendFlat({\n      level: ci,\n      // all the cells with nontrivial marching index\n      crossings: {},\n      // starting points on the edges of the lattice for each contour\n      starts: [],\n      // all unclosed paths (may have less items than starts,\n      // if a path is closed by rounding)\n      edgepaths: [],\n      // all closed paths\n      paths: [],\n      z: cd0.z,\n      smoothing: cd0.trace.line.smoothing\n    }, basePathinfo));\n    if (pathinfo.length > 1000) {\n      Lib.warn('Too many contours, clipping at 1000', contours);\n      break;\n    }\n  }\n  return pathinfo;\n};\n\n/***/ }),\n\n/***/ 53572:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/*\n * tiny helper to move the end of the contours a little to prevent\n * losing the last contour to rounding errors\n */\nmodule.exports = function endPlus(contours) {\n  return contours.end + contours.size / 1e6;\n};\n\n/***/ }),\n\n/***/ 81696:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2399685__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2399685__(71828);\nvar constants = __nested_webpack_require_2399685__(36914);\nmodule.exports = function findAllPaths(pathinfo, xtol, ytol) {\n  var cnt, startLoc, i, pi, j;\n\n  // Default just passes these values through as they were before:\n  xtol = xtol || 0.01;\n  ytol = ytol || 0.01;\n  for (i = 0; i < pathinfo.length; i++) {\n    pi = pathinfo[i];\n    for (j = 0; j < pi.starts.length; j++) {\n      startLoc = pi.starts[j];\n      makePath(pi, startLoc, 'edge', xtol, ytol);\n    }\n    cnt = 0;\n    while (Object.keys(pi.crossings).length && cnt < 10000) {\n      cnt++;\n      startLoc = Object.keys(pi.crossings)[0].split(',').map(Number);\n      makePath(pi, startLoc, undefined, xtol, ytol);\n    }\n    if (cnt === 10000) Lib.log('Infinite loop in contour?');\n  }\n};\nfunction equalPts(pt1, pt2, xtol, ytol) {\n  return Math.abs(pt1[0] - pt2[0]) < xtol && Math.abs(pt1[1] - pt2[1]) < ytol;\n}\n\n// distance in index units - uses the 3rd and 4th items in points\nfunction ptDist(pt1, pt2) {\n  var dx = pt1[2] - pt2[2];\n  var dy = pt1[3] - pt2[3];\n  return Math.sqrt(dx * dx + dy * dy);\n}\nfunction makePath(pi, loc, edgeflag, xtol, ytol) {\n  var locStr = loc.join(',');\n  var mi = pi.crossings[locStr];\n  var marchStep = getStartStep(mi, edgeflag, loc);\n  // start by going backward a half step and finding the crossing point\n  var pts = [getInterpPx(pi, loc, [-marchStep[0], -marchStep[1]])];\n  var m = pi.z.length;\n  var n = pi.z[0].length;\n  var startLoc = loc.slice();\n  var startStep = marchStep.slice();\n  var cnt;\n\n  // now follow the path\n  for (cnt = 0; cnt < 10000; cnt++) {\n    // just to avoid infinite loops\n    if (mi > 20) {\n      mi = constants.CHOOSESADDLE[mi][(marchStep[0] || marchStep[1]) < 0 ? 0 : 1];\n      pi.crossings[locStr] = constants.SADDLEREMAINDER[mi];\n    } else {\n      delete pi.crossings[locStr];\n    }\n    marchStep = constants.NEWDELTA[mi];\n    if (!marchStep) {\n      Lib.log('Found bad marching index:', mi, loc, pi.level);\n      break;\n    }\n\n    // find the crossing a half step forward, and then take the full step\n    pts.push(getInterpPx(pi, loc, marchStep));\n    loc[0] += marchStep[0];\n    loc[1] += marchStep[1];\n    locStr = loc.join(',');\n\n    // don't include the same point multiple times\n    if (equalPts(pts[pts.length - 1], pts[pts.length - 2], xtol, ytol)) pts.pop();\n    var atEdge = marchStep[0] && (loc[0] < 0 || loc[0] > n - 2) || marchStep[1] && (loc[1] < 0 || loc[1] > m - 2);\n    var closedLoop = loc[0] === startLoc[0] && loc[1] === startLoc[1] && marchStep[0] === startStep[0] && marchStep[1] === startStep[1];\n\n    // have we completed a loop, or reached an edge?\n    if (closedLoop || edgeflag && atEdge) break;\n    mi = pi.crossings[locStr];\n  }\n  if (cnt === 10000) {\n    Lib.log('Infinite loop in contour?');\n  }\n  var closedpath = equalPts(pts[0], pts[pts.length - 1], xtol, ytol);\n  var totaldist = 0;\n  var distThresholdFactor = 0.2 * pi.smoothing;\n  var alldists = [];\n  var cropstart = 0;\n  var distgroup, cnt2, cnt3, newpt, ptcnt, ptavg, thisdist, i, j, edgepathi, edgepathj;\n\n  /*\n   * Check for points that are too close together (<1/5 the average dist\n   * *in grid index units* (important for log axes and nonuniform grids),\n   * less if less smoothed) and just take the center (or avg of center 2).\n   * This cuts down on funny behavior when a point is very close to a\n   * contour level.\n   */\n  for (cnt = 1; cnt < pts.length; cnt++) {\n    thisdist = ptDist(pts[cnt], pts[cnt - 1]);\n    totaldist += thisdist;\n    alldists.push(thisdist);\n  }\n  var distThreshold = totaldist / alldists.length * distThresholdFactor;\n  function getpt(i) {\n    return pts[i % pts.length];\n  }\n  for (cnt = pts.length - 2; cnt >= cropstart; cnt--) {\n    distgroup = alldists[cnt];\n    if (distgroup < distThreshold) {\n      cnt3 = 0;\n      for (cnt2 = cnt - 1; cnt2 >= cropstart; cnt2--) {\n        if (distgroup + alldists[cnt2] < distThreshold) {\n          distgroup += alldists[cnt2];\n        } else break;\n      }\n\n      // closed path with close points wrapping around the boundary?\n      if (closedpath && cnt === pts.length - 2) {\n        for (cnt3 = 0; cnt3 < cnt2; cnt3++) {\n          if (distgroup + alldists[cnt3] < distThreshold) {\n            distgroup += alldists[cnt3];\n          } else break;\n        }\n      }\n      ptcnt = cnt - cnt2 + cnt3 + 1;\n      ptavg = Math.floor((cnt + cnt2 + cnt3 + 2) / 2);\n\n      // either endpoint included: keep the endpoint\n      if (!closedpath && cnt === pts.length - 2) newpt = pts[pts.length - 1];else if (!closedpath && cnt2 === -1) newpt = pts[0];\n\n      // odd # of points - just take the central one\n      else if (ptcnt % 2) newpt = getpt(ptavg);\n\n      // even # of pts - average central two\n      else {\n        newpt = [(getpt(ptavg)[0] + getpt(ptavg + 1)[0]) / 2, (getpt(ptavg)[1] + getpt(ptavg + 1)[1]) / 2];\n      }\n      pts.splice(cnt2 + 1, cnt - cnt2 + 1, newpt);\n      cnt = cnt2 + 1;\n      if (cnt3) cropstart = cnt3;\n      if (closedpath) {\n        if (cnt === pts.length - 2) pts[cnt3] = pts[pts.length - 1];else if (cnt === 0) pts[pts.length - 1] = pts[0];\n      }\n    }\n  }\n  pts.splice(0, cropstart);\n\n  // done with the index parts - remove them so path generation works right\n  // because it depends on only having [xpx, ypx]\n  for (cnt = 0; cnt < pts.length; cnt++) pts[cnt].length = 2;\n\n  // don't return single-point paths (ie all points were the same\n  // so they got deleted?)\n  if (pts.length < 2) return;else if (closedpath) {\n    pts.pop();\n    pi.paths.push(pts);\n  } else {\n    if (!edgeflag) {\n      Lib.log('Unclosed interior contour?', pi.level, startLoc.join(','), pts.join('L'));\n    }\n\n    // edge path - does it start where an existing edge path ends, or vice versa?\n    var merged = false;\n    for (i = 0; i < pi.edgepaths.length; i++) {\n      edgepathi = pi.edgepaths[i];\n      if (!merged && equalPts(edgepathi[0], pts[pts.length - 1], xtol, ytol)) {\n        pts.pop();\n        merged = true;\n\n        // now does it ALSO meet the end of another (or the same) path?\n        var doublemerged = false;\n        for (j = 0; j < pi.edgepaths.length; j++) {\n          edgepathj = pi.edgepaths[j];\n          if (equalPts(edgepathj[edgepathj.length - 1], pts[0], xtol, ytol)) {\n            doublemerged = true;\n            pts.shift();\n            pi.edgepaths.splice(i, 1);\n            if (j === i) {\n              // the path is now closed\n              pi.paths.push(pts.concat(edgepathj));\n            } else {\n              if (j > i) j--;\n              pi.edgepaths[j] = edgepathj.concat(pts, edgepathi);\n            }\n            break;\n          }\n        }\n        if (!doublemerged) {\n          pi.edgepaths[i] = pts.concat(edgepathi);\n        }\n      }\n    }\n    for (i = 0; i < pi.edgepaths.length; i++) {\n      if (merged) break;\n      edgepathi = pi.edgepaths[i];\n      if (equalPts(edgepathi[edgepathi.length - 1], pts[0], xtol, ytol)) {\n        pts.shift();\n        pi.edgepaths[i] = edgepathi.concat(pts);\n        merged = true;\n      }\n    }\n    if (!merged) pi.edgepaths.push(pts);\n  }\n}\n\n// special function to get the marching step of the\n// first point in the path (leading to loc)\nfunction getStartStep(mi, edgeflag, loc) {\n  var dx = 0;\n  var dy = 0;\n  if (mi > 20 && edgeflag) {\n    // these saddles start at +/- x\n    if (mi === 208 || mi === 1114) {\n      // if we're starting at the left side, we must be going right\n      dx = loc[0] === 0 ? 1 : -1;\n    } else {\n      // if we're starting at the bottom, we must be going up\n      dy = loc[1] === 0 ? 1 : -1;\n    }\n  } else if (constants.BOTTOMSTART.indexOf(mi) !== -1) dy = 1;else if (constants.LEFTSTART.indexOf(mi) !== -1) dx = 1;else if (constants.TOPSTART.indexOf(mi) !== -1) dy = -1;else dx = -1;\n  return [dx, dy];\n}\n\n/*\n * Find the pixel coordinates of a particular crossing\n *\n * @param {object} pi: the pathinfo object at this level\n * @param {array} loc: the grid index [x, y] of the crossing\n * @param {array} step: the direction [dx, dy] we're moving on the grid\n *\n * @return {array} [xpx, ypx, xi, yi]: the first two are the pixel location,\n *   the next two are the interpolated grid indices, which we use for\n *   distance calculations to delete points that are too close together.\n *   This is important when the grid is nonuniform (and most dramatically when\n *   we're on log axes and include invalid (0 or negative) values.\n *   It's crucial to delete these extra two before turning an array of these\n *   points into a path, because those routines require length-2 points.\n */\nfunction getInterpPx(pi, loc, step) {\n  var locx = loc[0] + Math.max(step[0], 0);\n  var locy = loc[1] + Math.max(step[1], 0);\n  var zxy = pi.z[locy][locx];\n  var xa = pi.xaxis;\n  var ya = pi.yaxis;\n\n  // Interpolate in linear space, then convert to pixel\n  if (step[1]) {\n    var dx = (pi.level - zxy) / (pi.z[locy][locx + 1] - zxy);\n    // Interpolate, but protect against NaN linear values for log axis (dx will equal 1 or 0)\n    var dxl = (dx !== 1 ? (1 - dx) * xa.c2l(pi.x[locx]) : 0) + (dx !== 0 ? dx * xa.c2l(pi.x[locx + 1]) : 0);\n    return [xa.c2p(xa.l2c(dxl), true), ya.c2p(pi.y[locy], true), locx + dx, locy];\n  } else {\n    var dy = (pi.level - zxy) / (pi.z[locy + 1][locx] - zxy);\n    var dyl = (dy !== 1 ? (1 - dy) * ya.c2l(pi.y[locy]) : 0) + (dy !== 0 ? dy * ya.c2l(pi.y[locy + 1]) : 0);\n    return [xa.c2p(pi.x[locx], true), ya.c2p(ya.l2c(dyl), true), locx, locy + dy];\n  }\n}\n\n/***/ }),\n\n/***/ 52421:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2409214__) {\n\n\"use strict\";\n\n\nvar Color = __nested_webpack_require_2409214__(7901);\nvar heatmapHoverPoints = __nested_webpack_require_2409214__(46248);\nmodule.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) {\n  if (!opts) opts = {};\n  opts.isContour = true;\n  var hoverData = heatmapHoverPoints(pointData, xval, yval, hovermode, opts);\n  if (hoverData) {\n    hoverData.forEach(function (hoverPt) {\n      var trace = hoverPt.trace;\n      if (trace.contours.type === 'constraint') {\n        if (trace.fillcolor && Color.opacity(trace.fillcolor)) {\n          hoverPt.color = Color.addOpacity(trace.fillcolor, 1);\n        } else if (trace.contours.showlines && Color.opacity(trace.line.color)) {\n          hoverPt.color = Color.addOpacity(trace.line.color, 1);\n        }\n      }\n    });\n  }\n  return hoverData;\n};\n\n/***/ }),\n\n/***/ 99442:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2410102__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2410102__(70600),\n  supplyDefaults: __nested_webpack_require_2410102__(13031),\n  calc: __nested_webpack_require_2410102__(27529),\n  plot: (__nested_webpack_require_2410102__(29854).plot),\n  style: __nested_webpack_require_2410102__(84426),\n  colorbar: __nested_webpack_require_2410102__(90654),\n  hoverPoints: __nested_webpack_require_2410102__(52421),\n  moduleType: 'trace',\n  name: 'contour',\n  basePlotModule: __nested_webpack_require_2410102__(93612),\n  categories: ['cartesian', 'svg', '2dMap', 'contour', 'showLegend'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 14523:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2410695__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2410695__(71828);\nmodule.exports = function handleLabelDefaults(coerce, layout, lineColor, opts) {\n  if (!opts) opts = {};\n  var showLabels = coerce('contours.showlabels');\n  if (showLabels) {\n    var globalFont = layout.font;\n    Lib.coerceFont(coerce, 'contours.labelfont', {\n      family: globalFont.family,\n      size: globalFont.size,\n      color: lineColor\n    });\n    coerce('contours.labelformat');\n  }\n  if (opts.hasHover !== false) coerce('zhoverformat');\n};\n\n/***/ }),\n\n/***/ 86068:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2411299__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2411299__(39898);\nvar Colorscale = __nested_webpack_require_2411299__(21081);\nvar endPlus = __nested_webpack_require_2411299__(53572);\nmodule.exports = function makeColorMap(trace) {\n  var contours = trace.contours;\n  var start = contours.start;\n  var end = endPlus(contours);\n  var cs = contours.size || 1;\n  var nc = Math.floor((end - start) / cs) + 1;\n  var extra = contours.coloring === 'lines' ? 0 : 1;\n  var cOpts = Colorscale.extractOpts(trace);\n  if (!isFinite(cs)) {\n    cs = 1;\n    nc = 1;\n  }\n  var scl = cOpts.reversescale ? Colorscale.flipScale(cOpts.colorscale) : cOpts.colorscale;\n  var len = scl.length;\n  var domain = new Array(len);\n  var range = new Array(len);\n  var si, i;\n  if (contours.coloring === 'heatmap') {\n    var zmin0 = cOpts.min;\n    var zmax0 = cOpts.max;\n    for (i = 0; i < len; i++) {\n      si = scl[i];\n      domain[i] = si[0] * (zmax0 - zmin0) + zmin0;\n      range[i] = si[1];\n    }\n\n    // do the contours extend beyond the colorscale?\n    // if so, extend the colorscale with constants\n    var zRange = d3.extent([zmin0, zmax0, contours.start, contours.start + cs * (nc - 1)]);\n    var zmin = zRange[zmin0 < zmax0 ? 0 : 1];\n    var zmax = zRange[zmin0 < zmax0 ? 1 : 0];\n    if (zmin !== zmin0) {\n      domain.splice(0, 0, zmin);\n      range.splice(0, 0, range[0]);\n    }\n    if (zmax !== zmax0) {\n      domain.push(zmax);\n      range.push(range[range.length - 1]);\n    }\n  } else {\n    for (i = 0; i < len; i++) {\n      si = scl[i];\n      domain[i] = (si[0] * (nc + extra - 1) - extra / 2) * cs + start;\n      range[i] = si[1];\n    }\n  }\n  return Colorscale.makeColorScaleFunc({\n    domain: domain,\n    range: range\n  }, {\n    noNumericCheck: true\n  });\n};\n\n/***/ }),\n\n/***/ 87678:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2413100__) {\n\n\"use strict\";\n\n\nvar constants = __nested_webpack_require_2413100__(36914);\n\n// Calculate all the marching indices, for ALL levels at once.\n// since we want to be exhaustive we'll check for contour crossings\n// at every intersection, rather than just following a path\n// TODO: shorten the inner loop to only the relevant levels\nmodule.exports = function makeCrossings(pathinfo) {\n  var z = pathinfo[0].z;\n  var m = z.length;\n  var n = z[0].length; // we already made sure z isn't ragged in interp2d\n  var twoWide = m === 2 || n === 2;\n  var xi;\n  var yi;\n  var startIndices;\n  var ystartIndices;\n  var label;\n  var corners;\n  var mi;\n  var pi;\n  var i;\n  for (yi = 0; yi < m - 1; yi++) {\n    ystartIndices = [];\n    if (yi === 0) ystartIndices = ystartIndices.concat(constants.BOTTOMSTART);\n    if (yi === m - 2) ystartIndices = ystartIndices.concat(constants.TOPSTART);\n    for (xi = 0; xi < n - 1; xi++) {\n      startIndices = ystartIndices.slice();\n      if (xi === 0) startIndices = startIndices.concat(constants.LEFTSTART);\n      if (xi === n - 2) startIndices = startIndices.concat(constants.RIGHTSTART);\n      label = xi + ',' + yi;\n      corners = [[z[yi][xi], z[yi][xi + 1]], [z[yi + 1][xi], z[yi + 1][xi + 1]]];\n      for (i = 0; i < pathinfo.length; i++) {\n        pi = pathinfo[i];\n        mi = getMarchingIndex(pi.level, corners);\n        if (!mi) continue;\n        pi.crossings[label] = mi;\n        if (startIndices.indexOf(mi) !== -1) {\n          pi.starts.push([xi, yi]);\n          if (twoWide && startIndices.indexOf(mi, startIndices.indexOf(mi) + 1) !== -1) {\n            // the same square has starts from opposite sides\n            // it's not possible to have starts on opposite edges\n            // of a corner, only a start and an end...\n            // but if the array is only two points wide (either way)\n            // you can have starts on opposite sides.\n            pi.starts.push([xi, yi]);\n          }\n        }\n      }\n    }\n  }\n};\n\n// modified marching squares algorithm,\n// so we disambiguate the saddle points from the start\n// and we ignore the cases with no crossings\n// the index I'm using is based on:\n// http://en.wikipedia.org/wiki/Marching_squares\n// except that the saddles bifurcate and I represent them\n// as the decimal combination of the two appropriate\n// non-saddle indices\nfunction getMarchingIndex(val, corners) {\n  var mi = (corners[0][0] > val ? 0 : 1) + (corners[0][1] > val ? 0 : 2) + (corners[1][1] > val ? 0 : 4) + (corners[1][0] > val ? 0 : 8);\n  if (mi === 5 || mi === 10) {\n    var avg = (corners[0][0] + corners[0][1] + corners[1][0] + corners[1][1]) / 4;\n    // two peaks with a big valley\n    if (val > avg) return mi === 5 ? 713 : 1114;\n    // two valleys with a big ridge\n    return mi === 5 ? 104 : 208;\n  }\n  return mi === 15 ? 0 : mi;\n}\n\n/***/ }),\n\n/***/ 29854:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_2415989__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2415989__(39898);\nvar Lib = __nested_webpack_require_2415989__(71828);\nvar Drawing = __nested_webpack_require_2415989__(91424);\nvar Colorscale = __nested_webpack_require_2415989__(21081);\nvar svgTextUtils = __nested_webpack_require_2415989__(63893);\nvar Axes = __nested_webpack_require_2415989__(89298);\nvar setConvert = __nested_webpack_require_2415989__(21994);\nvar heatmapPlot = __nested_webpack_require_2415989__(50347);\nvar makeCrossings = __nested_webpack_require_2415989__(87678);\nvar findAllPaths = __nested_webpack_require_2415989__(81696);\nvar emptyPathinfo = __nested_webpack_require_2415989__(87558);\nvar convertToConstraints = __nested_webpack_require_2415989__(84857);\nvar closeBoundaries = __nested_webpack_require_2415989__(20083);\nvar constants = __nested_webpack_require_2415989__(36914);\nvar costConstants = constants.LABELOPTIMIZER;\nexports.plot = function plot(gd, plotinfo, cdcontours, contourLayer) {\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  Lib.makeTraceGroups(contourLayer, cdcontours, 'contour').each(function (cd) {\n    var plotGroup = d3.select(this);\n    var cd0 = cd[0];\n    var trace = cd0.trace;\n    var x = cd0.x;\n    var y = cd0.y;\n    var contours = trace.contours;\n    var pathinfo = emptyPathinfo(contours, plotinfo, cd0);\n\n    // use a heatmap to fill - draw it behind the lines\n    var heatmapColoringLayer = Lib.ensureSingle(plotGroup, 'g', 'heatmapcoloring');\n    var cdheatmaps = [];\n    if (contours.coloring === 'heatmap') {\n      cdheatmaps = [cd];\n    }\n    heatmapPlot(gd, plotinfo, cdheatmaps, heatmapColoringLayer);\n    makeCrossings(pathinfo);\n    findAllPaths(pathinfo);\n    var leftedge = xa.c2p(x[0], true);\n    var rightedge = xa.c2p(x[x.length - 1], true);\n    var bottomedge = ya.c2p(y[0], true);\n    var topedge = ya.c2p(y[y.length - 1], true);\n    var perimeter = [[leftedge, topedge], [rightedge, topedge], [rightedge, bottomedge], [leftedge, bottomedge]];\n    var fillPathinfo = pathinfo;\n    if (contours.type === 'constraint') {\n      // N.B. this also mutates pathinfo\n      fillPathinfo = convertToConstraints(pathinfo, contours._operation);\n    }\n\n    // draw everything\n    makeBackground(plotGroup, perimeter, contours);\n    makeFills(plotGroup, fillPathinfo, perimeter, contours);\n    makeLinesAndLabels(plotGroup, pathinfo, gd, cd0, contours);\n    clipGaps(plotGroup, plotinfo, gd, cd0, perimeter);\n  });\n};\nfunction makeBackground(plotgroup, perimeter, contours) {\n  var bggroup = Lib.ensureSingle(plotgroup, 'g', 'contourbg');\n  var bgfill = bggroup.selectAll('path').data(contours.coloring === 'fill' ? [0] : []);\n  bgfill.enter().append('path');\n  bgfill.exit().remove();\n  bgfill.attr('d', 'M' + perimeter.join('L') + 'Z').style('stroke', 'none');\n}\nfunction makeFills(plotgroup, pathinfo, perimeter, contours) {\n  var hasFills = contours.coloring === 'fill' || contours.type === 'constraint' && contours._operation !== '=';\n  var boundaryPath = 'M' + perimeter.join('L') + 'Z';\n\n  // fills prefixBoundary in pathinfo items\n  if (hasFills) {\n    closeBoundaries(pathinfo, contours);\n  }\n  var fillgroup = Lib.ensureSingle(plotgroup, 'g', 'contourfill');\n  var fillitems = fillgroup.selectAll('path').data(hasFills ? pathinfo : []);\n  fillitems.enter().append('path');\n  fillitems.exit().remove();\n  fillitems.each(function (pi) {\n    // join all paths for this level together into a single path\n    // first follow clockwise around the perimeter to close any open paths\n    // if the whole perimeter is above this level, start with a path\n    // enclosing the whole thing. With all that, the parity should mean\n    // that we always fill everything above the contour, nothing below\n    var fullpath = (pi.prefixBoundary ? boundaryPath : '') + joinAllPaths(pi, perimeter);\n    if (!fullpath) {\n      d3.select(this).remove();\n    } else {\n      d3.select(this).attr('d', fullpath).style('stroke', 'none');\n    }\n  });\n}\nfunction joinAllPaths(pi, perimeter) {\n  var fullpath = '';\n  var i = 0;\n  var startsleft = pi.edgepaths.map(function (v, i) {\n    return i;\n  });\n  var newloop = true;\n  var endpt;\n  var newendpt;\n  var cnt;\n  var nexti;\n  var possiblei;\n  var addpath;\n  function istop(pt) {\n    return Math.abs(pt[1] - perimeter[0][1]) < 0.01;\n  }\n  function isbottom(pt) {\n    return Math.abs(pt[1] - perimeter[2][1]) < 0.01;\n  }\n  function isleft(pt) {\n    return Math.abs(pt[0] - perimeter[0][0]) < 0.01;\n  }\n  function isright(pt) {\n    return Math.abs(pt[0] - perimeter[2][0]) < 0.01;\n  }\n  while (startsleft.length) {\n    addpath = Drawing.smoothopen(pi.edgepaths[i], pi.smoothing);\n    fullpath += newloop ? addpath : addpath.replace(/^M/, 'L');\n    startsleft.splice(startsleft.indexOf(i), 1);\n    endpt = pi.edgepaths[i][pi.edgepaths[i].length - 1];\n    nexti = -1;\n\n    // now loop through sides, moving our endpoint until we find a new start\n    for (cnt = 0; cnt < 4; cnt++) {\n      // just to prevent infinite loops\n      if (!endpt) {\n        Lib.log('Missing end?', i, pi);\n        break;\n      }\n      if (istop(endpt) && !isright(endpt)) newendpt = perimeter[1]; // right top\n      else if (isleft(endpt)) newendpt = perimeter[0]; // left top\n      else if (isbottom(endpt)) newendpt = perimeter[3]; // right bottom\n      else if (isright(endpt)) newendpt = perimeter[2]; // left bottom\n\n      for (possiblei = 0; possiblei < pi.edgepaths.length; possiblei++) {\n        var ptNew = pi.edgepaths[possiblei][0];\n        // is ptNew on the (horz. or vert.) segment from endpt to newendpt?\n        if (Math.abs(endpt[0] - newendpt[0]) < 0.01) {\n          if (Math.abs(endpt[0] - ptNew[0]) < 0.01 && (ptNew[1] - endpt[1]) * (newendpt[1] - ptNew[1]) >= 0) {\n            newendpt = ptNew;\n            nexti = possiblei;\n          }\n        } else if (Math.abs(endpt[1] - newendpt[1]) < 0.01) {\n          if (Math.abs(endpt[1] - ptNew[1]) < 0.01 && (ptNew[0] - endpt[0]) * (newendpt[0] - ptNew[0]) >= 0) {\n            newendpt = ptNew;\n            nexti = possiblei;\n          }\n        } else {\n          Lib.log('endpt to newendpt is not vert. or horz.', endpt, newendpt, ptNew);\n        }\n      }\n      endpt = newendpt;\n      if (nexti >= 0) break;\n      fullpath += 'L' + newendpt;\n    }\n    if (nexti === pi.edgepaths.length) {\n      Lib.log('unclosed perimeter path');\n      break;\n    }\n    i = nexti;\n\n    // if we closed back on a loop we already included,\n    // close it and start a new loop\n    newloop = startsleft.indexOf(i) === -1;\n    if (newloop) {\n      i = startsleft[0];\n      fullpath += 'Z';\n    }\n  }\n\n  // finally add the interior paths\n  for (i = 0; i < pi.paths.length; i++) {\n    fullpath += Drawing.smoothclosed(pi.paths[i], pi.smoothing);\n  }\n  return fullpath;\n}\nfunction makeLinesAndLabels(plotgroup, pathinfo, gd, cd0, contours) {\n  var isStatic = gd._context.staticPlot;\n  var lineContainer = Lib.ensureSingle(plotgroup, 'g', 'contourlines');\n  var showLines = contours.showlines !== false;\n  var showLabels = contours.showlabels;\n  var clipLinesForLabels = showLines && showLabels;\n\n  // Even if we're not going to show lines, we need to create them\n  // if we're showing labels, because the fill paths include the perimeter\n  // so can't be used to position the labels correctly.\n  // In this case we'll remove the lines after making the labels.\n  var linegroup = exports.createLines(lineContainer, showLines || showLabels, pathinfo, isStatic);\n  var lineClip = exports.createLineClip(lineContainer, clipLinesForLabels, gd, cd0.trace.uid);\n  var labelGroup = plotgroup.selectAll('g.contourlabels').data(showLabels ? [0] : []);\n  labelGroup.exit().remove();\n  labelGroup.enter().append('g').classed('contourlabels', true);\n  if (showLabels) {\n    var labelClipPathData = [];\n    var labelData = [];\n\n    // invalidate the getTextLocation cache in case paths changed\n    Lib.clearLocationCache();\n    var contourFormat = exports.labelFormatter(gd, cd0);\n    var dummyText = Drawing.tester.append('text').attr('data-notex', 1).call(Drawing.font, contours.labelfont);\n    var xa = pathinfo[0].xaxis;\n    var ya = pathinfo[0].yaxis;\n    var xLen = xa._length;\n    var yLen = ya._length;\n    var xRng = xa.range;\n    var yRng = ya.range;\n    var xMin = Lib.aggNums(Math.min, null, cd0.x);\n    var xMax = Lib.aggNums(Math.max, null, cd0.x);\n    var yMin = Lib.aggNums(Math.min, null, cd0.y);\n    var yMax = Lib.aggNums(Math.max, null, cd0.y);\n    var x0 = Math.max(xa.c2p(xMin, true), 0);\n    var x1 = Math.min(xa.c2p(xMax, true), xLen);\n    var y0 = Math.max(ya.c2p(yMax, true), 0);\n    var y1 = Math.min(ya.c2p(yMin, true), yLen);\n\n    // visible bounds of the contour trace (and the midpoints, to\n    // help with cost calculations)\n    var bounds = {};\n    if (xRng[0] < xRng[1]) {\n      bounds.left = x0;\n      bounds.right = x1;\n    } else {\n      bounds.left = x1;\n      bounds.right = x0;\n    }\n    if (yRng[0] < yRng[1]) {\n      bounds.top = y0;\n      bounds.bottom = y1;\n    } else {\n      bounds.top = y1;\n      bounds.bottom = y0;\n    }\n    bounds.middle = (bounds.top + bounds.bottom) / 2;\n    bounds.center = (bounds.left + bounds.right) / 2;\n    labelClipPathData.push([[bounds.left, bounds.top], [bounds.right, bounds.top], [bounds.right, bounds.bottom], [bounds.left, bounds.bottom]]);\n    var plotDiagonal = Math.sqrt(xLen * xLen + yLen * yLen);\n\n    // the path length to use to scale the number of labels to draw:\n    var normLength = constants.LABELDISTANCE * plotDiagonal / Math.max(1, pathinfo.length / constants.LABELINCREASE);\n    linegroup.each(function (d) {\n      var textOpts = exports.calcTextOpts(d.level, contourFormat, dummyText, gd);\n      d3.select(this).selectAll('path').each(function () {\n        var path = this;\n        var pathBounds = Lib.getVisibleSegment(path, bounds, textOpts.height / 2);\n        if (!pathBounds) return;\n        if (pathBounds.len < (textOpts.width + textOpts.height) * constants.LABELMIN) return;\n        var maxLabels = Math.min(Math.ceil(pathBounds.len / normLength), constants.LABELMAX);\n        for (var i = 0; i < maxLabels; i++) {\n          var loc = exports.findBestTextLocation(path, pathBounds, textOpts, labelData, bounds);\n          if (!loc) break;\n          exports.addLabelData(loc, textOpts, labelData, labelClipPathData);\n        }\n      });\n    });\n    dummyText.remove();\n    exports.drawLabels(labelGroup, labelData, gd, lineClip, clipLinesForLabels ? labelClipPathData : null);\n  }\n  if (showLabels && !showLines) linegroup.remove();\n}\nexports.createLines = function (lineContainer, makeLines, pathinfo, isStatic) {\n  var smoothing = pathinfo[0].smoothing;\n  var linegroup = lineContainer.selectAll('g.contourlevel').data(makeLines ? pathinfo : []);\n  linegroup.exit().remove();\n  linegroup.enter().append('g').classed('contourlevel', true);\n  if (makeLines) {\n    // pedgepaths / ppaths are used by contourcarpet, for the paths transformed from a/b to x/y\n    // edgepaths / paths are used by contour since it's in x/y from the start\n    var opencontourlines = linegroup.selectAll('path.openline').data(function (d) {\n      return d.pedgepaths || d.edgepaths;\n    });\n    opencontourlines.exit().remove();\n    opencontourlines.enter().append('path').classed('openline', true);\n    opencontourlines.attr('d', function (d) {\n      return Drawing.smoothopen(d, smoothing);\n    }).style('stroke-miterlimit', 1).style('vector-effect', isStatic ? 'none' : 'non-scaling-stroke');\n    var closedcontourlines = linegroup.selectAll('path.closedline').data(function (d) {\n      return d.ppaths || d.paths;\n    });\n    closedcontourlines.exit().remove();\n    closedcontourlines.enter().append('path').classed('closedline', true);\n    closedcontourlines.attr('d', function (d) {\n      return Drawing.smoothclosed(d, smoothing);\n    }).style('stroke-miterlimit', 1).style('vector-effect', isStatic ? 'none' : 'non-scaling-stroke');\n  }\n  return linegroup;\n};\nexports.createLineClip = function (lineContainer, clipLinesForLabels, gd, uid) {\n  var clips = gd._fullLayout._clips;\n  var clipId = clipLinesForLabels ? 'clipline' + uid : null;\n  var lineClip = clips.selectAll('#' + clipId).data(clipLinesForLabels ? [0] : []);\n  lineClip.exit().remove();\n  lineClip.enter().append('clipPath').classed('contourlineclip', true).attr('id', clipId);\n  Drawing.setClipUrl(lineContainer, clipId, gd);\n  return lineClip;\n};\nexports.labelFormatter = function (gd, cd0) {\n  var fullLayout = gd._fullLayout;\n  var trace = cd0.trace;\n  var contours = trace.contours;\n  var formatAxis = {\n    type: 'linear',\n    _id: 'ycontour',\n    showexponent: 'all',\n    exponentformat: 'B'\n  };\n  if (contours.labelformat) {\n    formatAxis.tickformat = contours.labelformat;\n    setConvert(formatAxis, fullLayout);\n  } else {\n    var cOpts = Colorscale.extractOpts(trace);\n    if (cOpts && cOpts.colorbar && cOpts.colorbar._axis) {\n      formatAxis = cOpts.colorbar._axis;\n    } else {\n      if (contours.type === 'constraint') {\n        var value = contours.value;\n        if (Array.isArray(value)) {\n          formatAxis.range = [value[0], value[value.length - 1]];\n        } else formatAxis.range = [value, value];\n      } else {\n        formatAxis.range = [contours.start, contours.end];\n        formatAxis.nticks = (contours.end - contours.start) / contours.size;\n      }\n      if (formatAxis.range[0] === formatAxis.range[1]) {\n        formatAxis.range[1] += formatAxis.range[0] || 1;\n      }\n      if (!formatAxis.nticks) formatAxis.nticks = 1000;\n      setConvert(formatAxis, fullLayout);\n      Axes.prepTicks(formatAxis);\n      formatAxis._tmin = null;\n      formatAxis._tmax = null;\n    }\n  }\n  return function (v) {\n    return Axes.tickText(formatAxis, v).text;\n  };\n};\nexports.calcTextOpts = function (level, contourFormat, dummyText, gd) {\n  var text = contourFormat(level);\n  dummyText.text(text).call(svgTextUtils.convertToTspans, gd);\n  var el = dummyText.node();\n  var bBox = Drawing.bBox(el, true);\n  return {\n    text: text,\n    width: bBox.width,\n    height: bBox.height,\n    fontSize: +el.style['font-size'].replace('px', ''),\n    level: level,\n    dy: (bBox.top + bBox.bottom) / 2\n  };\n};\nexports.findBestTextLocation = function (path, pathBounds, textOpts, labelData, plotBounds) {\n  var textWidth = textOpts.width;\n  var p0, dp, pMax, pMin, loc;\n  if (pathBounds.isClosed) {\n    dp = pathBounds.len / costConstants.INITIALSEARCHPOINTS;\n    p0 = pathBounds.min + dp / 2;\n    pMax = pathBounds.max;\n  } else {\n    dp = (pathBounds.len - textWidth) / (costConstants.INITIALSEARCHPOINTS + 1);\n    p0 = pathBounds.min + dp + textWidth / 2;\n    pMax = pathBounds.max - (dp + textWidth) / 2;\n  }\n  var cost = Infinity;\n  for (var j = 0; j < costConstants.ITERATIONS; j++) {\n    for (var p = p0; p < pMax; p += dp) {\n      var newLocation = Lib.getTextLocation(path, pathBounds.total, p, textWidth);\n      var newCost = locationCost(newLocation, textOpts, labelData, plotBounds);\n      if (newCost < cost) {\n        cost = newCost;\n        loc = newLocation;\n        pMin = p;\n      }\n    }\n    if (cost > costConstants.MAXCOST * 2) break;\n\n    // subsequent iterations just look half steps away from the\n    // best we found in the previous iteration\n    if (j) dp /= 2;\n    p0 = pMin - dp / 2;\n    pMax = p0 + dp * 1.5;\n  }\n  if (cost <= costConstants.MAXCOST) return loc;\n};\n\n/*\n * locationCost: a cost function for label locations\n * composed of three kinds of penalty:\n * - for open paths, being close to the end of the path\n * - the angle away from horizontal\n * - being too close to already placed neighbors\n */\nfunction locationCost(loc, textOpts, labelData, bounds) {\n  var halfWidth = textOpts.width / 2;\n  var halfHeight = textOpts.height / 2;\n  var x = loc.x;\n  var y = loc.y;\n  var theta = loc.theta;\n  var dx = Math.cos(theta) * halfWidth;\n  var dy = Math.sin(theta) * halfWidth;\n\n  // cost for being near an edge\n  var normX = (x > bounds.center ? bounds.right - x : x - bounds.left) / (dx + Math.abs(Math.sin(theta) * halfHeight));\n  var normY = (y > bounds.middle ? bounds.bottom - y : y - bounds.top) / (Math.abs(dy) + Math.cos(theta) * halfHeight);\n  if (normX < 1 || normY < 1) return Infinity;\n  var cost = costConstants.EDGECOST * (1 / (normX - 1) + 1 / (normY - 1));\n\n  // cost for not being horizontal\n  cost += costConstants.ANGLECOST * theta * theta;\n\n  // cost for being close to other labels\n  var x1 = x - dx;\n  var y1 = y - dy;\n  var x2 = x + dx;\n  var y2 = y + dy;\n  for (var i = 0; i < labelData.length; i++) {\n    var labeli = labelData[i];\n    var dxd = Math.cos(labeli.theta) * labeli.width / 2;\n    var dyd = Math.sin(labeli.theta) * labeli.width / 2;\n    var dist = Lib.segmentDistance(x1, y1, x2, y2, labeli.x - dxd, labeli.y - dyd, labeli.x + dxd, labeli.y + dyd) * 2 / (textOpts.height + labeli.height);\n    var sameLevel = labeli.level === textOpts.level;\n    var distOffset = sameLevel ? costConstants.SAMELEVELDISTANCE : 1;\n    if (dist <= distOffset) return Infinity;\n    var distFactor = costConstants.NEIGHBORCOST * (sameLevel ? costConstants.SAMELEVELFACTOR : 1);\n    cost += distFactor / (dist - distOffset);\n  }\n  return cost;\n}\nexports.addLabelData = function (loc, textOpts, labelData, labelClipPathData) {\n  var fontSize = textOpts.fontSize;\n  var w = textOpts.width + fontSize / 3;\n  var h = Math.max(0, textOpts.height - fontSize / 3);\n  var x = loc.x;\n  var y = loc.y;\n  var theta = loc.theta;\n  var sin = Math.sin(theta);\n  var cos = Math.cos(theta);\n  var rotateXY = function (dx, dy) {\n    return [x + dx * cos - dy * sin, y + dx * sin + dy * cos];\n  };\n  var bBoxPts = [rotateXY(-w / 2, -h / 2), rotateXY(-w / 2, h / 2), rotateXY(w / 2, h / 2), rotateXY(w / 2, -h / 2)];\n  labelData.push({\n    text: textOpts.text,\n    x: x,\n    y: y,\n    dy: textOpts.dy,\n    theta: theta,\n    level: textOpts.level,\n    width: w,\n    height: h\n  });\n  labelClipPathData.push(bBoxPts);\n};\nexports.drawLabels = function (labelGroup, labelData, gd, lineClip, labelClipPathData) {\n  var labels = labelGroup.selectAll('text').data(labelData, function (d) {\n    return d.text + ',' + d.x + ',' + d.y + ',' + d.theta;\n  });\n  labels.exit().remove();\n  labels.enter().append('text').attr({\n    'data-notex': 1,\n    'text-anchor': 'middle'\n  }).each(function (d) {\n    var x = d.x + Math.sin(d.theta) * d.dy;\n    var y = d.y - Math.cos(d.theta) * d.dy;\n    d3.select(this).text(d.text).attr({\n      x: x,\n      y: y,\n      transform: 'rotate(' + 180 * d.theta / Math.PI + ' ' + x + ' ' + y + ')'\n    }).call(svgTextUtils.convertToTspans, gd);\n  });\n  if (labelClipPathData) {\n    var clipPath = '';\n    for (var i = 0; i < labelClipPathData.length; i++) {\n      clipPath += 'M' + labelClipPathData[i].join('L') + 'Z';\n    }\n    var lineClipPath = Lib.ensureSingle(lineClip, 'path', '');\n    lineClipPath.attr('d', clipPath);\n  }\n};\nfunction clipGaps(plotGroup, plotinfo, gd, cd0, perimeter) {\n  var trace = cd0.trace;\n  var clips = gd._fullLayout._clips;\n  var clipId = 'clip' + trace.uid;\n  var clipPath = clips.selectAll('#' + clipId).data(trace.connectgaps ? [] : [0]);\n  clipPath.enter().append('clipPath').classed('contourclip', true).attr('id', clipId);\n  clipPath.exit().remove();\n  if (trace.connectgaps === false) {\n    var clipPathInfo = {\n      // fraction of the way from missing to present point\n      // to draw the boundary.\n      // if you make this 1 (or 1-epsilon) then a point in\n      // a sea of missing data will disappear entirely.\n      level: 0.9,\n      crossings: {},\n      starts: [],\n      edgepaths: [],\n      paths: [],\n      xaxis: plotinfo.xaxis,\n      yaxis: plotinfo.yaxis,\n      x: cd0.x,\n      y: cd0.y,\n      // 0 = no data, 1 = data\n      z: makeClipMask(cd0),\n      smoothing: 0\n    };\n    makeCrossings([clipPathInfo]);\n    findAllPaths([clipPathInfo]);\n    closeBoundaries([clipPathInfo], {\n      type: 'levels'\n    });\n    var path = Lib.ensureSingle(clipPath, 'path', '');\n    path.attr('d', (clipPathInfo.prefixBoundary ? 'M' + perimeter.join('L') + 'Z' : '') + joinAllPaths(clipPathInfo, perimeter));\n  } else clipId = null;\n  Drawing.setClipUrl(plotGroup, clipId, gd);\n}\nfunction makeClipMask(cd0) {\n  var empties = cd0.trace._emptypoints;\n  var z = [];\n  var m = cd0.z.length;\n  var n = cd0.z[0].length;\n  var i;\n  var row = [];\n  var emptyPoint;\n  for (i = 0; i < n; i++) row.push(1);\n  for (i = 0; i < m; i++) z.push(row.slice());\n  for (i = 0; i < empties.length; i++) {\n    emptyPoint = empties[i];\n    z[emptyPoint[0]][emptyPoint[1]] = 0;\n  }\n  // save this mask to determine whether to show this data in hover\n  cd0.zmask = z;\n  return z;\n}\n\n/***/ }),\n\n/***/ 18670:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2436449__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_2436449__(89298);\nvar Lib = __nested_webpack_require_2436449__(71828);\nmodule.exports = function setContours(trace, vals) {\n  var contours = trace.contours;\n\n  // check if we need to auto-choose contour levels\n  if (trace.autocontour) {\n    // N.B. do not try to use coloraxis cmin/cmax,\n    // these values here are meant to remain \"per-trace\" for now\n    var zmin = trace.zmin;\n    var zmax = trace.zmax;\n    if (trace.zauto || zmin === undefined) {\n      zmin = Lib.aggNums(Math.min, null, vals);\n    }\n    if (trace.zauto || zmax === undefined) {\n      zmax = Lib.aggNums(Math.max, null, vals);\n    }\n    var dummyAx = autoContours(zmin, zmax, trace.ncontours);\n    contours.size = dummyAx.dtick;\n    contours.start = Axes.tickFirst(dummyAx);\n    dummyAx.range.reverse();\n    contours.end = Axes.tickFirst(dummyAx);\n    if (contours.start === zmin) contours.start += contours.size;\n    if (contours.end === zmax) contours.end -= contours.size;\n\n    // if you set a small ncontours, *and* the ends are exactly on zmin/zmax\n    // there's an edge case where start > end now. Make sure there's at least\n    // one meaningful contour, put it midway between the crossed values\n    if (contours.start > contours.end) {\n      contours.start = contours.end = (contours.start + contours.end) / 2;\n    }\n\n    // copy auto-contour info back to the source data.\n    // previously we copied the whole contours object back, but that had\n    // other info (coloring, showlines) that should be left to supplyDefaults\n    if (!trace._input.contours) trace._input.contours = {};\n    Lib.extendFlat(trace._input.contours, {\n      start: contours.start,\n      end: contours.end,\n      size: contours.size\n    });\n    trace._input.autocontour = true;\n  } else if (contours.type !== 'constraint') {\n    // sanity checks on manually-supplied start/end/size\n    var start = contours.start;\n    var end = contours.end;\n    var inputContours = trace._input.contours;\n    if (start > end) {\n      contours.start = inputContours.start = end;\n      end = contours.end = inputContours.end = start;\n      start = contours.start;\n    }\n    if (!(contours.size > 0)) {\n      var sizeOut;\n      if (start === end) sizeOut = 1;else sizeOut = autoContours(start, end, trace.ncontours).dtick;\n      inputContours.size = contours.size = sizeOut;\n    }\n  }\n};\n\n/*\n * autoContours: make a dummy axis object with dtick we can use\n * as contours.size, and if needed we can use Axes.tickFirst\n * with this axis object to calculate the start and end too\n *\n * start: the value to start the contours at\n * end: the value to end at (must be > start)\n * ncontours: max number of contours to make, like roughDTick\n *\n * returns: an axis object\n */\nfunction autoContours(start, end, ncontours) {\n  var dummyAx = {\n    type: 'linear',\n    range: [start, end]\n  };\n  Axes.autoTicks(dummyAx, (end - start) / (ncontours || 15));\n  return dummyAx;\n}\n\n/***/ }),\n\n/***/ 84426:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2439470__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2439470__(39898);\nvar Drawing = __nested_webpack_require_2439470__(91424);\nvar heatmapStyle = __nested_webpack_require_2439470__(70035);\nvar makeColorMap = __nested_webpack_require_2439470__(86068);\nmodule.exports = function style(gd) {\n  var contours = d3.select(gd).selectAll('g.contour');\n  contours.style('opacity', function (d) {\n    return d[0].trace.opacity;\n  });\n  contours.each(function (d) {\n    var c = d3.select(this);\n    var trace = d[0].trace;\n    var contours = trace.contours;\n    var line = trace.line;\n    var cs = contours.size || 1;\n    var start = contours.start;\n\n    // for contourcarpet only - is this a constraint-type contour trace?\n    var isConstraintType = contours.type === 'constraint';\n    var colorLines = !isConstraintType && contours.coloring === 'lines';\n    var colorFills = !isConstraintType && contours.coloring === 'fill';\n    var colorMap = colorLines || colorFills ? makeColorMap(trace) : null;\n    c.selectAll('g.contourlevel').each(function (d) {\n      d3.select(this).selectAll('path').call(Drawing.lineGroupStyle, line.width, colorLines ? colorMap(d.level) : line.color, line.dash);\n    });\n    var labelFont = contours.labelfont;\n    c.selectAll('g.contourlabels text').each(function (d) {\n      Drawing.font(d3.select(this), {\n        family: labelFont.family,\n        size: labelFont.size,\n        color: labelFont.color || (colorLines ? colorMap(d.level) : line.color)\n      });\n    });\n    if (isConstraintType) {\n      c.selectAll('g.contourfill path').style('fill', trace.fillcolor);\n    } else if (colorFills) {\n      var firstFill;\n      c.selectAll('g.contourfill path').style('fill', function (d) {\n        if (firstFill === undefined) firstFill = d.level;\n        return colorMap(d.level + 0.5 * cs);\n      });\n      if (firstFill === undefined) firstFill = start;\n      c.selectAll('g.contourbg path').style('fill', colorMap(firstFill - 0.5 * cs));\n    }\n  });\n  heatmapStyle(gd);\n};\n\n/***/ }),\n\n/***/ 8724:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2441503__) {\n\n\"use strict\";\n\n\nvar colorscaleDefaults = __nested_webpack_require_2441503__(1586);\nvar handleLabelDefaults = __nested_webpack_require_2441503__(14523);\nmodule.exports = function handleStyleDefaults(traceIn, traceOut, coerce, layout, opts) {\n  var coloring = coerce('contours.coloring');\n  var showLines;\n  var lineColor = '';\n  if (coloring === 'fill') showLines = coerce('contours.showlines');\n  if (showLines !== false) {\n    if (coloring !== 'lines') lineColor = coerce('line.color', '#000');\n    coerce('line.width', 0.5);\n    coerce('line.dash');\n  }\n  if (coloring !== 'none') {\n    // plots/plots always coerces showlegend to true, but in this case\n    // we default to false and (by default) show a colorbar instead\n    if (traceIn.showlegend !== true) traceOut.showlegend = false;\n    traceOut._dfltShowLegend = false;\n    colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n      prefix: '',\n      cLetter: 'z'\n    });\n  }\n  coerce('line.smoothing');\n  handleLabelDefaults(coerce, layout, lineColor, opts);\n};\n\n/***/ }),\n\n/***/ 88085:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2442596__) {\n\n\"use strict\";\n\n\nvar heatmapAttrs = __nested_webpack_require_2442596__(21606);\nvar contourAttrs = __nested_webpack_require_2442596__(70600);\nvar colorScaleAttrs = __nested_webpack_require_2442596__(50693);\nvar extendFlat = (__nested_webpack_require_2442596__(1426).extendFlat);\nvar contourContourAttrs = contourAttrs.contours;\nmodule.exports = extendFlat({\n  carpet: {\n    valType: 'string',\n    editType: 'calc'\n  },\n  z: heatmapAttrs.z,\n  a: heatmapAttrs.x,\n  a0: heatmapAttrs.x0,\n  da: heatmapAttrs.dx,\n  b: heatmapAttrs.y,\n  b0: heatmapAttrs.y0,\n  db: heatmapAttrs.dy,\n  text: heatmapAttrs.text,\n  hovertext: heatmapAttrs.hovertext,\n  transpose: heatmapAttrs.transpose,\n  atype: heatmapAttrs.xtype,\n  btype: heatmapAttrs.ytype,\n  fillcolor: contourAttrs.fillcolor,\n  autocontour: contourAttrs.autocontour,\n  ncontours: contourAttrs.ncontours,\n  contours: {\n    type: contourContourAttrs.type,\n    start: contourContourAttrs.start,\n    end: contourContourAttrs.end,\n    size: contourContourAttrs.size,\n    coloring: {\n      // from contourAttrs.contours.coloring but no 'heatmap' option\n      valType: 'enumerated',\n      values: ['fill', 'lines', 'none'],\n      dflt: 'fill',\n      editType: 'calc'\n    },\n    showlines: contourContourAttrs.showlines,\n    showlabels: contourContourAttrs.showlabels,\n    labelfont: contourContourAttrs.labelfont,\n    labelformat: contourContourAttrs.labelformat,\n    operation: contourContourAttrs.operation,\n    value: contourContourAttrs.value,\n    editType: 'calc',\n    impliedEdits: {\n      'autocontour': false\n    }\n  },\n  line: {\n    color: contourAttrs.line.color,\n    width: contourAttrs.line.width,\n    dash: contourAttrs.line.dash,\n    smoothing: contourAttrs.line.smoothing,\n    editType: 'plot'\n  },\n  transforms: undefined\n}, colorScaleAttrs('', {\n  cLetter: 'z',\n  autoColorDflt: false\n}));\n\n/***/ }),\n\n/***/ 59885:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2444477__) {\n\n\"use strict\";\n\n\nvar colorscaleCalc = __nested_webpack_require_2444477__(78803);\nvar Lib = __nested_webpack_require_2444477__(71828);\nvar convertColumnData = __nested_webpack_require_2444477__(68296);\nvar clean2dArray = __nested_webpack_require_2444477__(4742);\nvar interp2d = __nested_webpack_require_2444477__(824);\nvar findEmpties = __nested_webpack_require_2444477__(43907);\nvar makeBoundArray = __nested_webpack_require_2444477__(70769);\nvar supplyDefaults = __nested_webpack_require_2444477__(75005);\nvar lookupCarpet = __nested_webpack_require_2444477__(22882);\nvar setContours = __nested_webpack_require_2444477__(18670);\n\n// most is the same as heatmap calc, then adjust it\n// though a few things inside heatmap calc still look for\n// contour maps, because the makeBoundArray calls are too entangled\nmodule.exports = function calc(gd, trace) {\n  var carpet = trace._carpetTrace = lookupCarpet(gd, trace);\n  if (!carpet || !carpet.visible || carpet.visible === 'legendonly') return;\n  if (!trace.a || !trace.b) {\n    // Look up the original incoming carpet data:\n    var carpetdata = gd.data[carpet.index];\n\n    // Look up the incoming trace data, *except* perform a shallow\n    // copy so that we're not actually modifying it when we use it\n    // to supply defaults:\n    var tracedata = gd.data[trace.index];\n    // var tracedata = extendFlat({}, gd.data[trace.index]);\n\n    // If the data is not specified\n    if (!tracedata.a) tracedata.a = carpetdata.a;\n    if (!tracedata.b) tracedata.b = carpetdata.b;\n    supplyDefaults(tracedata, trace, trace._defaultColor, gd._fullLayout);\n  }\n  var cd = heatmappishCalc(gd, trace);\n  setContours(trace, trace._z);\n  return cd;\n};\nfunction heatmappishCalc(gd, trace) {\n  // prepare the raw data\n  // run makeCalcdata on x and y even for heatmaps, in case of category mappings\n  var carpet = trace._carpetTrace;\n  var aax = carpet.aaxis;\n  var bax = carpet.baxis;\n  var a, a0, da, b, b0, db, z;\n\n  // cancel minimum tick spacings (only applies to bars and boxes)\n  aax._minDtick = 0;\n  bax._minDtick = 0;\n  if (Lib.isArray1D(trace.z)) convertColumnData(trace, aax, bax, 'a', 'b', ['z']);\n  a = trace._a = trace._a || trace.a;\n  b = trace._b = trace._b || trace.b;\n  a = a ? aax.makeCalcdata(trace, '_a') : [];\n  b = b ? bax.makeCalcdata(trace, '_b') : [];\n  a0 = trace.a0 || 0;\n  da = trace.da || 1;\n  b0 = trace.b0 || 0;\n  db = trace.db || 1;\n  z = trace._z = clean2dArray(trace._z || trace.z, trace.transpose);\n  trace._emptypoints = findEmpties(z);\n  interp2d(z, trace._emptypoints);\n\n  // create arrays of brick boundaries, to be used by autorange and heatmap.plot\n  var xlen = Lib.maxRowLength(z);\n  var xIn = trace.xtype === 'scaled' ? '' : a;\n  var xArray = makeBoundArray(trace, xIn, a0, da, xlen, aax);\n  var yIn = trace.ytype === 'scaled' ? '' : b;\n  var yArray = makeBoundArray(trace, yIn, b0, db, z.length, bax);\n  var cd0 = {\n    a: xArray,\n    b: yArray,\n    z: z\n  };\n  if (trace.contours.type === 'levels' && trace.contours.coloring !== 'none') {\n    // auto-z and autocolorscale if applicable\n    colorscaleCalc(gd, trace, {\n      vals: z,\n      containerStr: '',\n      cLetter: 'z'\n    });\n  }\n  return [cd0];\n}\n\n/***/ }),\n\n/***/ 75005:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2447606__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2447606__(71828);\nvar handleXYZDefaults = __nested_webpack_require_2447606__(67684);\nvar attributes = __nested_webpack_require_2447606__(88085);\nvar handleConstraintDefaults = __nested_webpack_require_2447606__(83179);\nvar handleContoursDefaults = __nested_webpack_require_2447606__(67217);\nvar handleStyleDefaults = __nested_webpack_require_2447606__(8724);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  function coerce2(attr) {\n    return Lib.coerce2(traceIn, traceOut, attributes, attr);\n  }\n  coerce('carpet');\n\n  // If either a or b is not present, then it's not a valid trace *unless* the carpet\n  // axis has the a or b values we're looking for. So if these are not found, just defer\n  // that decision until the calc step.\n  //\n  // NB: the calc step will modify the original data input by assigning whichever of\n  // a or b are missing. This is necessary because panning goes right from supplyDefaults\n  // to plot (skipping calc). That means on subsequent updates, this *will* need to be\n  // able to find a and b.\n  //\n  // The long-term proper fix is that this should perhaps use underscored attributes to\n  // at least modify the user input to a slightly lesser extent. Fully removing the\n  // input mutation is challenging. The underscore approach is not currently taken since\n  // it requires modification to all of the functions below that expect the coerced\n  // attribute name to match the property name -- except '_a' !== 'a' so that is not\n  // straightforward.\n  if (traceIn.a && traceIn.b) {\n    var len = handleXYZDefaults(traceIn, traceOut, coerce, layout, 'a', 'b');\n    if (!len) {\n      traceOut.visible = false;\n      return;\n    }\n    coerce('text');\n    var isConstraint = coerce('contours.type') === 'constraint';\n    if (isConstraint) {\n      handleConstraintDefaults(traceIn, traceOut, coerce, layout, defaultColor, {\n        hasHover: false\n      });\n    } else {\n      handleContoursDefaults(traceIn, traceOut, coerce, coerce2);\n      handleStyleDefaults(traceIn, traceOut, coerce, layout, {\n        hasHover: false\n      });\n    }\n  } else {\n    traceOut._defaultColor = defaultColor;\n    traceOut._length = null;\n  }\n};\n\n/***/ }),\n\n/***/ 93740:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2449965__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2449965__(88085),\n  supplyDefaults: __nested_webpack_require_2449965__(75005),\n  colorbar: __nested_webpack_require_2449965__(90654),\n  calc: __nested_webpack_require_2449965__(59885),\n  plot: __nested_webpack_require_2449965__(51048),\n  style: __nested_webpack_require_2449965__(84426),\n  moduleType: 'trace',\n  name: 'contourcarpet',\n  basePlotModule: __nested_webpack_require_2449965__(93612),\n  categories: ['cartesian', 'svg', 'carpet', 'contour', 'symbols', 'showLegend', 'hasLines', 'carpetDependent', 'noHover', 'noSortingByValue'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 51048:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2450588__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2450588__(39898);\nvar map1dArray = __nested_webpack_require_2450588__(27669);\nvar makepath = __nested_webpack_require_2450588__(67961);\nvar Drawing = __nested_webpack_require_2450588__(91424);\nvar Lib = __nested_webpack_require_2450588__(71828);\nvar makeCrossings = __nested_webpack_require_2450588__(87678);\nvar findAllPaths = __nested_webpack_require_2450588__(81696);\nvar contourPlot = __nested_webpack_require_2450588__(29854);\nvar constants = __nested_webpack_require_2450588__(36914);\nvar convertToConstraints = __nested_webpack_require_2450588__(84857);\nvar emptyPathinfo = __nested_webpack_require_2450588__(87558);\nvar closeBoundaries = __nested_webpack_require_2450588__(20083);\nvar lookupCarpet = __nested_webpack_require_2450588__(22882);\nvar axisAlignedLine = __nested_webpack_require_2450588__(4536);\nmodule.exports = function plot(gd, plotinfo, cdcontours, contourcarpetLayer) {\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  Lib.makeTraceGroups(contourcarpetLayer, cdcontours, 'contour').each(function (cd) {\n    var plotGroup = d3.select(this);\n    var cd0 = cd[0];\n    var trace = cd0.trace;\n    var carpet = trace._carpetTrace = lookupCarpet(gd, trace);\n    var carpetcd = gd.calcdata[carpet.index][0];\n    if (!carpet.visible || carpet.visible === 'legendonly') return;\n    var a = cd0.a;\n    var b = cd0.b;\n    var contours = trace.contours;\n    var pathinfo = emptyPathinfo(contours, plotinfo, cd0);\n    var isConstraint = contours.type === 'constraint';\n    var operation = contours._operation;\n    var coloring = isConstraint ? operation === '=' ? 'lines' : 'fill' : contours.coloring;\n\n    // Map [a, b] (data) --> [i, j] (pixels)\n    function ab2p(ab) {\n      var pt = carpet.ab2xy(ab[0], ab[1], true);\n      return [xa.c2p(pt[0]), ya.c2p(pt[1])];\n    }\n\n    // Define the perimeter in a/b coordinates:\n    var perimeter = [[a[0], b[b.length - 1]], [a[a.length - 1], b[b.length - 1]], [a[a.length - 1], b[0]], [a[0], b[0]]];\n\n    // Extract the contour levels:\n    makeCrossings(pathinfo);\n    var atol = (a[a.length - 1] - a[0]) * 1e-8;\n    var btol = (b[b.length - 1] - b[0]) * 1e-8;\n    findAllPaths(pathinfo, atol, btol);\n\n    // Constraints might need to be draw inverted, which is not something contours\n    // handle by default since they're assumed fully opaque so that they can be\n    // drawn overlapping. This function flips the paths as necessary so that they're\n    // drawn correctly.\n    //\n    // TODO: Perhaps this should be generalized and *all* paths should be drawn as\n    // closed regions so that translucent contour levels would be valid.\n    // See: https://github.com/plotly/plotly.js/issues/1356\n    var fillPathinfo = pathinfo;\n    if (contours.type === 'constraint') {\n      fillPathinfo = convertToConstraints(pathinfo, operation);\n    }\n\n    // Map the paths in a/b coordinates to pixel coordinates:\n    mapPathinfo(pathinfo, ab2p);\n\n    // draw everything\n\n    // Compute the boundary path\n    var seg, xp, yp, i;\n    var segs = [];\n    for (i = carpetcd.clipsegments.length - 1; i >= 0; i--) {\n      seg = carpetcd.clipsegments[i];\n      xp = map1dArray([], seg.x, xa.c2p);\n      yp = map1dArray([], seg.y, ya.c2p);\n      xp.reverse();\n      yp.reverse();\n      segs.push(makepath(xp, yp, seg.bicubic));\n    }\n    var boundaryPath = 'M' + segs.join('L') + 'Z';\n\n    // Draw the baseline background fill that fills in the space behind any other\n    // contour levels:\n    makeBackground(plotGroup, carpetcd.clipsegments, xa, ya, isConstraint, coloring);\n\n    // Draw the specific contour fills. As a simplification, they're assumed to be\n    // fully opaque so that it's easy to draw them simply overlapping. The alternative\n    // would be to flip adjacent paths and draw closed paths for each level instead.\n    makeFills(trace, plotGroup, xa, ya, fillPathinfo, perimeter, ab2p, carpet, carpetcd, coloring, boundaryPath);\n\n    // Draw contour lines:\n    makeLinesAndLabels(plotGroup, pathinfo, gd, cd0, contours, plotinfo, carpet);\n\n    // Clip the boundary of the plot\n    Drawing.setClipUrl(plotGroup, carpet._clipPathId, gd);\n  });\n};\nfunction mapPathinfo(pathinfo, map) {\n  var i, j, k, pi, pedgepaths, ppaths, pedgepath, ppath, path;\n  for (i = 0; i < pathinfo.length; i++) {\n    pi = pathinfo[i];\n    pedgepaths = pi.pedgepaths = [];\n    ppaths = pi.ppaths = [];\n    for (j = 0; j < pi.edgepaths.length; j++) {\n      path = pi.edgepaths[j];\n      pedgepath = [];\n      for (k = 0; k < path.length; k++) {\n        pedgepath[k] = map(path[k]);\n      }\n      pedgepaths.push(pedgepath);\n    }\n    for (j = 0; j < pi.paths.length; j++) {\n      path = pi.paths[j];\n      ppath = [];\n      for (k = 0; k < path.length; k++) {\n        ppath[k] = map(path[k]);\n      }\n      ppaths.push(ppath);\n    }\n  }\n}\nfunction makeLinesAndLabels(plotgroup, pathinfo, gd, cd0, contours, plotinfo, carpet) {\n  var isStatic = gd._context.staticPlot;\n  var lineContainer = Lib.ensureSingle(plotgroup, 'g', 'contourlines');\n  var showLines = contours.showlines !== false;\n  var showLabels = contours.showlabels;\n  var clipLinesForLabels = showLines && showLabels;\n\n  // Even if we're not going to show lines, we need to create them\n  // if we're showing labels, because the fill paths include the perimeter\n  // so can't be used to position the labels correctly.\n  // In this case we'll remove the lines after making the labels.\n  var linegroup = contourPlot.createLines(lineContainer, showLines || showLabels, pathinfo, isStatic);\n  var lineClip = contourPlot.createLineClip(lineContainer, clipLinesForLabels, gd, cd0.trace.uid);\n  var labelGroup = plotgroup.selectAll('g.contourlabels').data(showLabels ? [0] : []);\n  labelGroup.exit().remove();\n  labelGroup.enter().append('g').classed('contourlabels', true);\n  if (showLabels) {\n    var xa = plotinfo.xaxis;\n    var ya = plotinfo.yaxis;\n    var xLen = xa._length;\n    var yLen = ya._length;\n    // for simplicity use the xy box for label clipping outline.\n    var labelClipPathData = [[[0, 0], [xLen, 0], [xLen, yLen], [0, yLen]]];\n    var labelData = [];\n\n    // invalidate the getTextLocation cache in case paths changed\n    Lib.clearLocationCache();\n    var contourFormat = contourPlot.labelFormatter(gd, cd0);\n    var dummyText = Drawing.tester.append('text').attr('data-notex', 1).call(Drawing.font, contours.labelfont);\n\n    // use `bounds` only to keep labels away from the x/y boundaries\n    // `constrainToCarpet` below ensures labels don't go off the\n    // carpet edges\n    var bounds = {\n      left: 0,\n      right: xLen,\n      center: xLen / 2,\n      top: 0,\n      bottom: yLen,\n      middle: yLen / 2\n    };\n    var plotDiagonal = Math.sqrt(xLen * xLen + yLen * yLen);\n\n    // the path length to use to scale the number of labels to draw:\n    var normLength = constants.LABELDISTANCE * plotDiagonal / Math.max(1, pathinfo.length / constants.LABELINCREASE);\n    linegroup.each(function (d) {\n      var textOpts = contourPlot.calcTextOpts(d.level, contourFormat, dummyText, gd);\n      d3.select(this).selectAll('path').each(function (pathData) {\n        var path = this;\n        var pathBounds = Lib.getVisibleSegment(path, bounds, textOpts.height / 2);\n        if (!pathBounds) return;\n        constrainToCarpet(path, pathData, d, pathBounds, carpet, textOpts.height);\n        if (pathBounds.len < (textOpts.width + textOpts.height) * constants.LABELMIN) return;\n        var maxLabels = Math.min(Math.ceil(pathBounds.len / normLength), constants.LABELMAX);\n        for (var i = 0; i < maxLabels; i++) {\n          var loc = contourPlot.findBestTextLocation(path, pathBounds, textOpts, labelData, bounds);\n          if (!loc) break;\n          contourPlot.addLabelData(loc, textOpts, labelData, labelClipPathData);\n        }\n      });\n    });\n    dummyText.remove();\n    contourPlot.drawLabels(labelGroup, labelData, gd, lineClip, clipLinesForLabels ? labelClipPathData : null);\n  }\n  if (showLabels && !showLines) linegroup.remove();\n}\n\n// figure out if this path goes off the edge of the carpet\n// and shorten the part we call visible to keep labels away from the edge\nfunction constrainToCarpet(path, pathData, levelData, pathBounds, carpet, textHeight) {\n  var pathABData;\n  for (var i = 0; i < levelData.pedgepaths.length; i++) {\n    if (pathData === levelData.pedgepaths[i]) {\n      pathABData = levelData.edgepaths[i];\n    }\n  }\n  if (!pathABData) return;\n  var aMin = carpet.a[0];\n  var aMax = carpet.a[carpet.a.length - 1];\n  var bMin = carpet.b[0];\n  var bMax = carpet.b[carpet.b.length - 1];\n  function getOffset(abPt, pathVector) {\n    var offset = 0;\n    var edgeVector;\n    var dAB = 0.1;\n    if (Math.abs(abPt[0] - aMin) < dAB || Math.abs(abPt[0] - aMax) < dAB) {\n      edgeVector = normalizeVector(carpet.dxydb_rough(abPt[0], abPt[1], dAB));\n      offset = Math.max(offset, textHeight * vectorTan(pathVector, edgeVector) / 2);\n    }\n    if (Math.abs(abPt[1] - bMin) < dAB || Math.abs(abPt[1] - bMax) < dAB) {\n      edgeVector = normalizeVector(carpet.dxyda_rough(abPt[0], abPt[1], dAB));\n      offset = Math.max(offset, textHeight * vectorTan(pathVector, edgeVector) / 2);\n    }\n    return offset;\n  }\n  var startVector = getUnitVector(path, 0, 1);\n  var endVector = getUnitVector(path, pathBounds.total, pathBounds.total - 1);\n  var minStart = getOffset(pathABData[0], startVector);\n  var maxEnd = pathBounds.total - getOffset(pathABData[pathABData.length - 1], endVector);\n  if (pathBounds.min < minStart) pathBounds.min = minStart;\n  if (pathBounds.max > maxEnd) pathBounds.max = maxEnd;\n  pathBounds.len = pathBounds.max - pathBounds.min;\n}\nfunction getUnitVector(path, p0, p1) {\n  var pt0 = path.getPointAtLength(p0);\n  var pt1 = path.getPointAtLength(p1);\n  var dx = pt1.x - pt0.x;\n  var dy = pt1.y - pt0.y;\n  var len = Math.sqrt(dx * dx + dy * dy);\n  return [dx / len, dy / len];\n}\nfunction normalizeVector(v) {\n  var len = Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n  return [v[0] / len, v[1] / len];\n}\nfunction vectorTan(v0, v1) {\n  var cos = Math.abs(v0[0] * v1[0] + v0[1] * v1[1]);\n  var sin = Math.sqrt(1 - cos * cos);\n  return sin / cos;\n}\nfunction makeBackground(plotgroup, clipsegments, xaxis, yaxis, isConstraint, coloring) {\n  var seg, xp, yp, i;\n  var bggroup = Lib.ensureSingle(plotgroup, 'g', 'contourbg');\n  var bgfill = bggroup.selectAll('path').data(coloring === 'fill' && !isConstraint ? [0] : []);\n  bgfill.enter().append('path');\n  bgfill.exit().remove();\n  var segs = [];\n  for (i = 0; i < clipsegments.length; i++) {\n    seg = clipsegments[i];\n    xp = map1dArray([], seg.x, xaxis.c2p);\n    yp = map1dArray([], seg.y, yaxis.c2p);\n    segs.push(makepath(xp, yp, seg.bicubic));\n  }\n  bgfill.attr('d', 'M' + segs.join('L') + 'Z').style('stroke', 'none');\n}\nfunction makeFills(trace, plotgroup, xa, ya, pathinfo, perimeter, ab2p, carpet, carpetcd, coloring, boundaryPath) {\n  var hasFills = coloring === 'fill';\n\n  // fills prefixBoundary in pathinfo items\n  if (hasFills) {\n    closeBoundaries(pathinfo, trace.contours);\n  }\n  var fillgroup = Lib.ensureSingle(plotgroup, 'g', 'contourfill');\n  var fillitems = fillgroup.selectAll('path').data(hasFills ? pathinfo : []);\n  fillitems.enter().append('path');\n  fillitems.exit().remove();\n  fillitems.each(function (pi) {\n    // join all paths for this level together into a single path\n    // first follow clockwise around the perimeter to close any open paths\n    // if the whole perimeter is above this level, start with a path\n    // enclosing the whole thing. With all that, the parity should mean\n    // that we always fill everything above the contour, nothing below\n    var fullpath = (pi.prefixBoundary ? boundaryPath : '') + joinAllPaths(trace, pi, perimeter, ab2p, carpet, carpetcd, xa, ya);\n    if (!fullpath) {\n      d3.select(this).remove();\n    } else {\n      d3.select(this).attr('d', fullpath).style('stroke', 'none');\n    }\n  });\n}\nfunction joinAllPaths(trace, pi, perimeter, ab2p, carpet, carpetcd, xa, ya) {\n  var i;\n  var fullpath = '';\n  var startsleft = pi.edgepaths.map(function (v, i) {\n    return i;\n  });\n  var newloop = true;\n  var endpt, newendpt, cnt, nexti, possiblei, addpath;\n  var atol = Math.abs(perimeter[0][0] - perimeter[2][0]) * 1e-4;\n  var btol = Math.abs(perimeter[0][1] - perimeter[2][1]) * 1e-4;\n  function istop(pt) {\n    return Math.abs(pt[1] - perimeter[0][1]) < btol;\n  }\n  function isbottom(pt) {\n    return Math.abs(pt[1] - perimeter[2][1]) < btol;\n  }\n  function isleft(pt) {\n    return Math.abs(pt[0] - perimeter[0][0]) < atol;\n  }\n  function isright(pt) {\n    return Math.abs(pt[0] - perimeter[2][0]) < atol;\n  }\n  function pathto(pt0, pt1) {\n    var i, j, segments, axis;\n    var path = '';\n    if (istop(pt0) && !isright(pt0) || isbottom(pt0) && !isleft(pt0)) {\n      axis = carpet.aaxis;\n      segments = axisAlignedLine(carpet, carpetcd, [pt0[0], pt1[0]], 0.5 * (pt0[1] + pt1[1]));\n    } else {\n      axis = carpet.baxis;\n      segments = axisAlignedLine(carpet, carpetcd, 0.5 * (pt0[0] + pt1[0]), [pt0[1], pt1[1]]);\n    }\n    for (i = 1; i < segments.length; i++) {\n      path += axis.smoothing ? 'C' : 'L';\n      for (j = 0; j < segments[i].length; j++) {\n        var pt = segments[i][j];\n        path += [xa.c2p(pt[0]), ya.c2p(pt[1])] + ' ';\n      }\n    }\n    return path;\n  }\n  i = 0;\n  endpt = null;\n  while (startsleft.length) {\n    var startpt = pi.edgepaths[i][0];\n    if (endpt) {\n      fullpath += pathto(endpt, startpt);\n    }\n    addpath = Drawing.smoothopen(pi.edgepaths[i].map(ab2p), pi.smoothing);\n    fullpath += newloop ? addpath : addpath.replace(/^M/, 'L');\n    startsleft.splice(startsleft.indexOf(i), 1);\n    endpt = pi.edgepaths[i][pi.edgepaths[i].length - 1];\n    nexti = -1;\n\n    // now loop through sides, moving our endpoint until we find a new start\n    for (cnt = 0; cnt < 4; cnt++) {\n      // just to prevent infinite loops\n      if (!endpt) {\n        Lib.log('Missing end?', i, pi);\n        break;\n      }\n      if (istop(endpt) && !isright(endpt)) {\n        newendpt = perimeter[1]; // left top ---> right top\n      } else if (isleft(endpt)) {\n        newendpt = perimeter[0]; // left bottom ---> left top\n      } else if (isbottom(endpt)) {\n        newendpt = perimeter[3]; // right bottom\n      } else if (isright(endpt)) {\n        newendpt = perimeter[2]; // left bottom\n      }\n\n      for (possiblei = 0; possiblei < pi.edgepaths.length; possiblei++) {\n        var ptNew = pi.edgepaths[possiblei][0];\n        // is ptNew on the (horz. or vert.) segment from endpt to newendpt?\n        if (Math.abs(endpt[0] - newendpt[0]) < atol) {\n          if (Math.abs(endpt[0] - ptNew[0]) < atol && (ptNew[1] - endpt[1]) * (newendpt[1] - ptNew[1]) >= 0) {\n            newendpt = ptNew;\n            nexti = possiblei;\n          }\n        } else if (Math.abs(endpt[1] - newendpt[1]) < btol) {\n          if (Math.abs(endpt[1] - ptNew[1]) < btol && (ptNew[0] - endpt[0]) * (newendpt[0] - ptNew[0]) >= 0) {\n            newendpt = ptNew;\n            nexti = possiblei;\n          }\n        } else {\n          Lib.log('endpt to newendpt is not vert. or horz.', endpt, newendpt, ptNew);\n        }\n      }\n      if (nexti >= 0) break;\n      fullpath += pathto(endpt, newendpt);\n      endpt = newendpt;\n    }\n    if (nexti === pi.edgepaths.length) {\n      Lib.log('unclosed perimeter path');\n      break;\n    }\n    i = nexti;\n\n    // if we closed back on a loop we already included,\n    // close it and start a new loop\n    newloop = startsleft.indexOf(i) === -1;\n    if (newloop) {\n      i = startsleft[0];\n      fullpath += pathto(endpt, newendpt) + 'Z';\n      endpt = null;\n    }\n  }\n\n  // finally add the interior paths\n  for (i = 0; i < pi.paths.length; i++) {\n    fullpath += Drawing.smoothclosed(pi.paths[i].map(ab2p), pi.smoothing);\n  }\n  return fullpath;\n}\n\n/***/ }),\n\n/***/ 64096:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2466256__) {\n\n\"use strict\";\n\n\nvar colorScaleAttrs = __nested_webpack_require_2466256__(50693);\nvar hovertemplateAttrs = (__nested_webpack_require_2466256__(5386)/* .hovertemplateAttrs */ .f);\nvar baseAttrs = __nested_webpack_require_2466256__(9012);\nvar scatterMapboxAttrs = __nested_webpack_require_2466256__(99181);\nvar extendFlat = (__nested_webpack_require_2466256__(1426).extendFlat);\n\n/*\n * - https://docs.mapbox.com/help/tutorials/make-a-heatmap-with-mapbox-gl-js/\n * - https://docs.mapbox.com/mapbox-gl-js/example/heatmap-layer/\n * - https://docs.mapbox.com/mapbox-gl-js/style-spec/#layers-heatmap\n * - https://blog.mapbox.com/introducing-heatmaps-in-mapbox-gl-js-71355ada9e6c\n *\n * Gotchas:\n * - https://github.com/mapbox/mapbox-gl-js/issues/6463\n * - https://github.com/mapbox/mapbox-gl-js/issues/6112\n */\n\n/*\n *\n * In mathematical terms, Mapbox GL heatmaps are a bivariate (2D) kernel density\n * estimation with a Gaussian kernel. It means that each data point has an area\n * of “influence” around it (called a kernel) where the numerical value of\n * influence (which we call density) decreases as you go further from the point.\n * If we sum density values of all points in every pixel of the screen, we get a\n * combined density value which we then map to a heatmap color.\n *\n */\n\nmodule.exports = extendFlat({\n  lon: scatterMapboxAttrs.lon,\n  lat: scatterMapboxAttrs.lat,\n  z: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  radius: {\n    valType: 'number',\n    editType: 'plot',\n    arrayOk: true,\n    min: 1,\n    dflt: 30\n  },\n  below: {\n    valType: 'string',\n    editType: 'plot'\n  },\n  text: scatterMapboxAttrs.text,\n  hovertext: scatterMapboxAttrs.hovertext,\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {\n    flags: ['lon', 'lat', 'z', 'text', 'name']\n  }),\n  hovertemplate: hovertemplateAttrs(),\n  showlegend: extendFlat({}, baseAttrs.showlegend, {\n    dflt: false\n  })\n}, colorScaleAttrs('', {\n  cLetter: 'z',\n  editTypeOverride: 'calc'\n}));\n\n/***/ }),\n\n/***/ 85070:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2468243__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_2468243__(92770);\nvar isArrayOrTypedArray = (__nested_webpack_require_2468243__(71828).isArrayOrTypedArray);\nvar BADNUM = (__nested_webpack_require_2468243__(50606).BADNUM);\nvar colorscaleCalc = __nested_webpack_require_2468243__(78803);\nvar _ = (__nested_webpack_require_2468243__(71828)._);\nmodule.exports = function calc(gd, trace) {\n  var len = trace._length;\n  var calcTrace = new Array(len);\n  var z = trace.z;\n  var hasZ = isArrayOrTypedArray(z) && z.length;\n  for (var i = 0; i < len; i++) {\n    var cdi = calcTrace[i] = {};\n    var lon = trace.lon[i];\n    var lat = trace.lat[i];\n    cdi.lonlat = isNumeric(lon) && isNumeric(lat) ? [+lon, +lat] : [BADNUM, BADNUM];\n    if (hasZ) {\n      var zi = z[i];\n      cdi.z = isNumeric(zi) ? zi : BADNUM;\n    }\n  }\n  colorscaleCalc(gd, trace, {\n    vals: hasZ ? z : [0, 1],\n    containerStr: '',\n    cLetter: 'z'\n  });\n  if (len) {\n    calcTrace[0].t = {\n      labels: {\n        lat: _(gd, 'lat:') + ' ',\n        lon: _(gd, 'lon:') + ' '\n      }\n    };\n  }\n  return calcTrace;\n};\n\n/***/ }),\n\n/***/ 52414:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2469353__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_2469353__(92770);\nvar Lib = __nested_webpack_require_2469353__(71828);\nvar Color = __nested_webpack_require_2469353__(7901);\nvar Colorscale = __nested_webpack_require_2469353__(21081);\nvar BADNUM = (__nested_webpack_require_2469353__(50606).BADNUM);\nvar makeBlank = (__nested_webpack_require_2469353__(18214).makeBlank);\nmodule.exports = function convert(calcTrace) {\n  var trace = calcTrace[0].trace;\n  var isVisible = trace.visible === true && trace._length !== 0;\n  var heatmap = {\n    layout: {\n      visibility: 'none'\n    },\n    paint: {}\n  };\n  var opts = trace._opts = {\n    heatmap: heatmap,\n    geojson: makeBlank()\n  };\n\n  // early return if not visible or placeholder\n  if (!isVisible) return opts;\n  var features = [];\n  var i;\n  var z = trace.z;\n  var radius = trace.radius;\n  var hasZ = Lib.isArrayOrTypedArray(z) && z.length;\n  var hasArrayRadius = Lib.isArrayOrTypedArray(radius);\n  for (i = 0; i < calcTrace.length; i++) {\n    var cdi = calcTrace[i];\n    var lonlat = cdi.lonlat;\n    if (lonlat[0] !== BADNUM) {\n      var props = {};\n      if (hasZ) {\n        var zi = cdi.z;\n        props.z = zi !== BADNUM ? zi : 0;\n      }\n      if (hasArrayRadius) {\n        props.r = isNumeric(radius[i]) && radius[i] > 0 ? +radius[i] : 0;\n      }\n      features.push({\n        type: 'Feature',\n        geometry: {\n          type: 'Point',\n          coordinates: lonlat\n        },\n        properties: props\n      });\n    }\n  }\n  var cOpts = Colorscale.extractOpts(trace);\n  var scl = cOpts.reversescale ? Colorscale.flipScale(cOpts.colorscale) : cOpts.colorscale;\n\n  // Add alpha channel to first colorscale step.\n  // If not, we would essentially color the entire map.\n  // See https://docs.mapbox.com/mapbox-gl-js/example/heatmap-layer/\n  var scl01 = scl[0][1];\n  var color0 = Color.opacity(scl01) < 1 ? scl01 : Color.addOpacity(scl01, 0);\n  var heatmapColor = ['interpolate', ['linear'], ['heatmap-density'], 0, color0];\n  for (i = 1; i < scl.length; i++) {\n    heatmapColor.push(scl[i][0], scl[i][1]);\n  }\n\n  // Those \"weights\" have to be in [0, 1], we can do this either:\n  // - as here using a mapbox-gl expression\n  // - or, scale the 'z' property in the feature loop\n  var zExp = ['interpolate', ['linear'], ['get', 'z'], cOpts.min, 0, cOpts.max, 1];\n  Lib.extendFlat(opts.heatmap.paint, {\n    'heatmap-weight': hasZ ? zExp : 1 / (cOpts.max - cOpts.min),\n    'heatmap-color': heatmapColor,\n    'heatmap-radius': hasArrayRadius ? {\n      type: 'identity',\n      property: 'r'\n    } : trace.radius,\n    'heatmap-opacity': trace.opacity\n  });\n  opts.geojson = {\n    type: 'FeatureCollection',\n    features: features\n  };\n  opts.heatmap.layout.visibility = 'visible';\n  return opts;\n};\n\n/***/ }),\n\n/***/ 79429:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2472115__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2472115__(71828);\nvar colorscaleDefaults = __nested_webpack_require_2472115__(1586);\nvar attributes = __nested_webpack_require_2472115__(64096);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var lon = coerce('lon') || [];\n  var lat = coerce('lat') || [];\n  var len = Math.min(lon.length, lat.length);\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  traceOut._length = len;\n  coerce('z');\n  coerce('radius');\n  coerce('below');\n  coerce('text');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n    prefix: '',\n    cLetter: 'z'\n  });\n};\n\n/***/ }),\n\n/***/ 62474:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function eventData(out, pt) {\n  out.lon = pt.lon;\n  out.lat = pt.lat;\n  out.z = pt.z;\n  return out;\n};\n\n/***/ }),\n\n/***/ 84684:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2473159__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_2473159__(89298);\nvar scatterMapboxHoverPoints = (__nested_webpack_require_2473159__(28178).hoverPoints);\nvar getExtraText = (__nested_webpack_require_2473159__(28178).getExtraText);\nmodule.exports = function hoverPoints(pointData, xval, yval) {\n  var pts = scatterMapboxHoverPoints(pointData, xval, yval);\n  if (!pts) return;\n  var newPointData = pts[0];\n  var cd = newPointData.cd;\n  var trace = cd[0].trace;\n  var di = cd[newPointData.index];\n\n  // let Fx.hover pick the color\n  delete newPointData.color;\n  if ('z' in di) {\n    var ax = newPointData.subplot.mockAxis;\n    newPointData.z = di.z;\n    newPointData.zLabel = Axes.tickText(ax, ax.c2l(di.z), 'hover').text;\n  }\n  newPointData.extraText = getExtraText(trace, di, cd[0].t.labels);\n  return [newPointData];\n};\n\n/***/ }),\n\n/***/ 93814:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2474037__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2474037__(64096),\n  supplyDefaults: __nested_webpack_require_2474037__(79429),\n  colorbar: __nested_webpack_require_2474037__(61243),\n  formatLabels: __nested_webpack_require_2474037__(15636),\n  calc: __nested_webpack_require_2474037__(85070),\n  plot: __nested_webpack_require_2474037__(7336),\n  hoverPoints: __nested_webpack_require_2474037__(84684),\n  eventData: __nested_webpack_require_2474037__(62474),\n  getBelow: function (trace, subplot) {\n    var mapLayers = subplot.getMapLayers();\n\n    // find first layer with `type: 'symbol'`,\n    // that is not a plotly layer\n    for (var i = 0; i < mapLayers.length; i++) {\n      var layer = mapLayers[i];\n      var layerId = layer.id;\n      if (layer.type === 'symbol' && typeof layerId === 'string' && layerId.indexOf('plotly-') === -1) {\n        return layerId;\n      }\n    }\n  },\n  moduleType: 'trace',\n  name: 'densitymapbox',\n  basePlotModule: __nested_webpack_require_2474037__(50101),\n  categories: ['mapbox', 'gl', 'showLegend'],\n  meta: {\n    hr_name: 'density_mapbox'\n  }\n};\n\n/***/ }),\n\n/***/ 7336:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2475109__) {\n\n\"use strict\";\n\n\nvar convert = __nested_webpack_require_2475109__(52414);\nvar LAYER_PREFIX = (__nested_webpack_require_2475109__(77734).traceLayerPrefix);\nfunction DensityMapbox(subplot, uid) {\n  this.type = 'densitymapbox';\n  this.subplot = subplot;\n  this.uid = uid;\n  this.sourceId = 'source-' + uid;\n  this.layerList = [['heatmap', LAYER_PREFIX + uid + '-heatmap']];\n\n  // previous 'below' value,\n  // need this to update it properly\n  this.below = null;\n}\nvar proto = DensityMapbox.prototype;\nproto.update = function (calcTrace) {\n  var subplot = this.subplot;\n  var layerList = this.layerList;\n  var optsAll = convert(calcTrace);\n  var below = subplot.belowLookup['trace-' + this.uid];\n  subplot.map.getSource(this.sourceId).setData(optsAll.geojson);\n  if (below !== this.below) {\n    this._removeLayers();\n    this._addLayers(optsAll, below);\n    this.below = below;\n  }\n  for (var i = 0; i < layerList.length; i++) {\n    var item = layerList[i];\n    var k = item[0];\n    var id = item[1];\n    var opts = optsAll[k];\n    subplot.setOptions(id, 'setLayoutProperty', opts.layout);\n    if (opts.layout.visibility === 'visible') {\n      subplot.setOptions(id, 'setPaintProperty', opts.paint);\n    }\n  }\n};\nproto._addLayers = function (optsAll, below) {\n  var subplot = this.subplot;\n  var layerList = this.layerList;\n  var sourceId = this.sourceId;\n  for (var i = 0; i < layerList.length; i++) {\n    var item = layerList[i];\n    var k = item[0];\n    var opts = optsAll[k];\n    subplot.addLayer({\n      type: k,\n      id: item[1],\n      source: sourceId,\n      layout: opts.layout,\n      paint: opts.paint\n    }, below);\n  }\n};\nproto._removeLayers = function () {\n  var map = this.subplot.map;\n  var layerList = this.layerList;\n  for (var i = layerList.length - 1; i >= 0; i--) {\n    map.removeLayer(layerList[i][1]);\n  }\n};\nproto.dispose = function () {\n  var map = this.subplot.map;\n  this._removeLayers();\n  map.removeSource(this.sourceId);\n};\nmodule.exports = function createDensityMapbox(subplot, calcTrace) {\n  var trace = calcTrace[0].trace;\n  var densityMapbox = new DensityMapbox(subplot, trace.uid);\n  var sourceId = densityMapbox.sourceId;\n  var optsAll = convert(calcTrace);\n  var below = densityMapbox.below = subplot.belowLookup['trace-' + trace.uid];\n  subplot.map.addSource(sourceId, {\n    type: 'geojson',\n    data: optsAll.geojson\n  });\n  densityMapbox._addLayers(optsAll, below);\n  return densityMapbox;\n};\n\n/***/ }),\n\n/***/ 49789:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2477605__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2477605__(71828);\n\n// arrayOk attributes, merge them into calcdata array\nmodule.exports = function arraysToCalcdata(cd, trace) {\n  for (var i = 0; i < cd.length; i++) cd[i].i = i;\n  Lib.mergeArray(trace.text, cd, 'tx');\n  Lib.mergeArray(trace.hovertext, cd, 'htx');\n  var marker = trace.marker;\n  if (marker) {\n    Lib.mergeArray(marker.opacity, cd, 'mo');\n    Lib.mergeArray(marker.color, cd, 'mc');\n    var markerLine = marker.line;\n    if (markerLine) {\n      Lib.mergeArray(markerLine.color, cd, 'mlc');\n      Lib.mergeArrayCastPositive(markerLine.width, cd, 'mlw');\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 1285:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2478323__) {\n\n\"use strict\";\n\n\nvar barAttrs = __nested_webpack_require_2478323__(1486);\nvar lineAttrs = (__nested_webpack_require_2478323__(82196).line);\nvar baseAttrs = __nested_webpack_require_2478323__(9012);\nvar axisHoverFormat = (__nested_webpack_require_2478323__(12663).axisHoverFormat);\nvar hovertemplateAttrs = (__nested_webpack_require_2478323__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_2478323__(5386)/* .texttemplateAttrs */ .s);\nvar constants = __nested_webpack_require_2478323__(18517);\nvar extendFlat = (__nested_webpack_require_2478323__(1426).extendFlat);\nvar Color = __nested_webpack_require_2478323__(7901);\nmodule.exports = {\n  x: barAttrs.x,\n  x0: barAttrs.x0,\n  dx: barAttrs.dx,\n  y: barAttrs.y,\n  y0: barAttrs.y0,\n  dy: barAttrs.dy,\n  xperiod: barAttrs.xperiod,\n  yperiod: barAttrs.yperiod,\n  xperiod0: barAttrs.xperiod0,\n  yperiod0: barAttrs.yperiod0,\n  xperiodalignment: barAttrs.xperiodalignment,\n  yperiodalignment: barAttrs.yperiodalignment,\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  hovertext: barAttrs.hovertext,\n  hovertemplate: hovertemplateAttrs({}, {\n    keys: constants.eventDataKeys\n  }),\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {\n    flags: ['name', 'x', 'y', 'text', 'percent initial', 'percent previous', 'percent total']\n  }),\n  textinfo: {\n    valType: 'flaglist',\n    flags: ['label', 'text', 'percent initial', 'percent previous', 'percent total', 'value'],\n    extras: ['none'],\n    editType: 'plot',\n    arrayOk: false\n  },\n  // TODO: incorporate `label` and `value` in the eventData\n  texttemplate: texttemplateAttrs({\n    editType: 'plot'\n  }, {\n    keys: constants.eventDataKeys.concat(['label', 'value'])\n  }),\n  text: barAttrs.text,\n  textposition: barAttrs.textposition,\n  insidetextanchor: extendFlat({}, barAttrs.insidetextanchor, {\n    dflt: 'middle'\n  }),\n  textangle: extendFlat({}, barAttrs.textangle, {\n    dflt: 0\n  }),\n  textfont: barAttrs.textfont,\n  insidetextfont: barAttrs.insidetextfont,\n  outsidetextfont: barAttrs.outsidetextfont,\n  constraintext: barAttrs.constraintext,\n  cliponaxis: barAttrs.cliponaxis,\n  orientation: extendFlat({}, barAttrs.orientation, {}),\n  offset: extendFlat({}, barAttrs.offset, {\n    arrayOk: false\n  }),\n  width: extendFlat({}, barAttrs.width, {\n    arrayOk: false\n  }),\n  marker: funnelMarker(),\n  connector: {\n    fillcolor: {\n      valType: 'color',\n      editType: 'style'\n    },\n    line: {\n      color: extendFlat({}, lineAttrs.color, {\n        dflt: Color.defaultLine\n      }),\n      width: extendFlat({}, lineAttrs.width, {\n        dflt: 0,\n        editType: 'plot'\n      }),\n      dash: lineAttrs.dash,\n      editType: 'style'\n    },\n    visible: {\n      valType: 'boolean',\n      dflt: true,\n      editType: 'plot'\n    },\n    editType: 'plot'\n  },\n  offsetgroup: barAttrs.offsetgroup,\n  alignmentgroup: barAttrs.alignmentgroup\n};\nfunction funnelMarker() {\n  var marker = extendFlat({}, barAttrs.marker);\n  delete marker.pattern;\n  return marker;\n}\n\n/***/ }),\n\n/***/ 9532:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2481315__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_2481315__(89298);\nvar alignPeriod = __nested_webpack_require_2481315__(42973);\nvar arraysToCalcdata = __nested_webpack_require_2481315__(49789);\nvar calcSelection = __nested_webpack_require_2481315__(66279);\nvar BADNUM = (__nested_webpack_require_2481315__(50606).BADNUM);\nmodule.exports = function calc(gd, trace) {\n  var xa = Axes.getFromId(gd, trace.xaxis || 'x');\n  var ya = Axes.getFromId(gd, trace.yaxis || 'y');\n  var size, pos, origPos, pObj, hasPeriod, pLetter, i, cdi;\n  if (trace.orientation === 'h') {\n    size = xa.makeCalcdata(trace, 'x');\n    origPos = ya.makeCalcdata(trace, 'y');\n    pObj = alignPeriod(trace, ya, 'y', origPos);\n    hasPeriod = !!trace.yperiodalignment;\n    pLetter = 'y';\n  } else {\n    size = ya.makeCalcdata(trace, 'y');\n    origPos = xa.makeCalcdata(trace, 'x');\n    pObj = alignPeriod(trace, xa, 'x', origPos);\n    hasPeriod = !!trace.xperiodalignment;\n    pLetter = 'x';\n  }\n  pos = pObj.vals;\n\n  // create the \"calculated data\" to plot\n  var serieslen = Math.min(pos.length, size.length);\n  var cd = new Array(serieslen);\n\n  // Unlike other bar-like traces funnels do not support base attribute.\n  // bases for funnels are computed internally in a way that\n  // the mid-point of each bar are located on the axis line.\n  trace._base = [];\n\n  // set position and size\n  for (i = 0; i < serieslen; i++) {\n    // treat negative values as bad numbers\n    if (size[i] < 0) size[i] = BADNUM;\n    var connectToNext = false;\n    if (size[i] !== BADNUM) {\n      if (i + 1 < serieslen && size[i + 1] !== BADNUM) {\n        connectToNext = true;\n      }\n    }\n    cdi = cd[i] = {\n      p: pos[i],\n      s: size[i],\n      cNext: connectToNext\n    };\n    trace._base[i] = -0.5 * cdi.s;\n    if (hasPeriod) {\n      cd[i].orig_p = origPos[i]; // used by hover\n      cd[i][pLetter + 'End'] = pObj.ends[i];\n      cd[i][pLetter + 'Start'] = pObj.starts[i];\n    }\n    if (trace.ids) {\n      cdi.id = String(trace.ids[i]);\n    }\n\n    // calculate total values\n    if (i === 0) cd[0].vTotal = 0;\n    cd[0].vTotal += fixNum(cdi.s);\n\n    // ratio from initial value\n    cdi.begR = fixNum(cdi.s) / fixNum(cd[0].s);\n  }\n  var prevGoodNum;\n  for (i = 0; i < serieslen; i++) {\n    cdi = cd[i];\n    if (cdi.s === BADNUM) continue;\n\n    // ratio of total value\n    cdi.sumR = cdi.s / cd[0].vTotal;\n\n    // ratio of previous (good) value\n    cdi.difR = prevGoodNum !== undefined ? cdi.s / prevGoodNum : 1;\n    prevGoodNum = cdi.s;\n  }\n  arraysToCalcdata(cd, trace);\n  calcSelection(cd, trace);\n  return cd;\n};\nfunction fixNum(a) {\n  return a === BADNUM ? 0 : a;\n}\n\n/***/ }),\n\n/***/ 18517:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  eventDataKeys: ['percentInitial', 'percentPrevious', 'percentTotal']\n};\n\n/***/ }),\n\n/***/ 8984:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2484123__) {\n\n\"use strict\";\n\n\nvar setGroupPositions = (__nested_webpack_require_2484123__(11661).setGroupPositions);\nmodule.exports = function crossTraceCalc(gd, plotinfo) {\n  var fullLayout = gd._fullLayout;\n  var fullData = gd._fullData;\n  var calcdata = gd.calcdata;\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  var funnels = [];\n  var funnelsVert = [];\n  var funnelsHorz = [];\n  var cd, i;\n  for (i = 0; i < fullData.length; i++) {\n    var fullTrace = fullData[i];\n    var isHorizontal = fullTrace.orientation === 'h';\n    if (fullTrace.visible === true && fullTrace.xaxis === xa._id && fullTrace.yaxis === ya._id && fullTrace.type === 'funnel') {\n      cd = calcdata[i];\n      if (isHorizontal) {\n        funnelsHorz.push(cd);\n      } else {\n        funnelsVert.push(cd);\n      }\n      funnels.push(cd);\n    }\n  }\n  var opts = {\n    mode: fullLayout.funnelmode,\n    norm: fullLayout.funnelnorm,\n    gap: fullLayout.funnelgap,\n    groupgap: fullLayout.funnelgroupgap\n  };\n  setGroupPositions(gd, xa, ya, funnelsVert, opts);\n  setGroupPositions(gd, ya, xa, funnelsHorz, opts);\n  for (i = 0; i < funnels.length; i++) {\n    cd = funnels[i];\n    for (var j = 0; j < cd.length; j++) {\n      if (j + 1 < cd.length) {\n        cd[j].nextP0 = cd[j + 1].p0;\n        cd[j].nextS0 = cd[j + 1].s0;\n        cd[j].nextP1 = cd[j + 1].p1;\n        cd[j].nextS1 = cd[j + 1].s1;\n      }\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 26199:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2485588__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2485588__(71828);\nvar handleGroupingDefaults = __nested_webpack_require_2485588__(26125);\nvar handleText = (__nested_webpack_require_2485588__(90769).handleText);\nvar handleXYDefaults = __nested_webpack_require_2485588__(67513);\nvar handlePeriodDefaults = __nested_webpack_require_2485588__(73927);\nvar attributes = __nested_webpack_require_2485588__(1285);\nvar Color = __nested_webpack_require_2485588__(7901);\nfunction supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var len = handleXYDefaults(traceIn, traceOut, layout, coerce);\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  handlePeriodDefaults(traceIn, traceOut, layout, coerce);\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  coerce('orientation', traceOut.y && !traceOut.x ? 'v' : 'h');\n  coerce('offset');\n  coerce('width');\n  var text = coerce('text');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  var textposition = coerce('textposition');\n  handleText(traceIn, traceOut, layout, coerce, textposition, {\n    moduleHasSelected: false,\n    moduleHasUnselected: false,\n    moduleHasConstrain: true,\n    moduleHasCliponaxis: true,\n    moduleHasTextangle: true,\n    moduleHasInsideanchor: true\n  });\n  if (traceOut.textposition !== 'none' && !traceOut.texttemplate) {\n    coerce('textinfo', Array.isArray(text) ? 'text+value' : 'value');\n  }\n  var markerColor = coerce('marker.color', defaultColor);\n  coerce('marker.line.color', Color.defaultLine);\n  coerce('marker.line.width');\n  var connectorVisible = coerce('connector.visible');\n  if (connectorVisible) {\n    coerce('connector.fillcolor', defaultFillColor(markerColor));\n    var connectorLineWidth = coerce('connector.line.width');\n    if (connectorLineWidth) {\n      coerce('connector.line.color');\n      coerce('connector.line.dash');\n    }\n  }\n}\nfunction defaultFillColor(markerColor) {\n  var cBase = Lib.isArrayOrTypedArray(markerColor) ? '#000' : markerColor;\n  return Color.addOpacity(cBase, 0.5 * Color.opacity(cBase));\n}\nfunction crossTraceDefaults(fullData, fullLayout) {\n  var traceIn, traceOut;\n  function coerce(attr) {\n    return Lib.coerce(traceOut._input, traceOut, attributes, attr);\n  }\n  if (fullLayout.funnelmode === 'group') {\n    for (var i = 0; i < fullData.length; i++) {\n      traceOut = fullData[i];\n      traceIn = traceOut._input;\n      handleGroupingDefaults(traceIn, traceOut, fullLayout, coerce);\n    }\n  }\n}\nmodule.exports = {\n  supplyDefaults: supplyDefaults,\n  crossTraceDefaults: crossTraceDefaults\n};\n\n/***/ }),\n\n/***/ 34598:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function eventData(out, pt /* , trace, cd, pointNumber */) {\n  // standard cartesian event data\n  out.x = 'xVal' in pt ? pt.xVal : pt.x;\n  out.y = 'yVal' in pt ? pt.yVal : pt.y;\n\n  // for funnel\n  if ('percentInitial' in pt) out.percentInitial = pt.percentInitial;\n  if ('percentPrevious' in pt) out.percentPrevious = pt.percentPrevious;\n  if ('percentTotal' in pt) out.percentTotal = pt.percentTotal;\n  if (pt.xa) out.xaxis = pt.xa;\n  if (pt.ya) out.yaxis = pt.ya;\n  return out;\n};\n\n/***/ }),\n\n/***/ 63341:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2488792__) {\n\n\"use strict\";\n\n\nvar opacity = (__nested_webpack_require_2488792__(7901).opacity);\nvar hoverOnBars = (__nested_webpack_require_2488792__(95423).hoverOnBars);\nvar formatPercent = (__nested_webpack_require_2488792__(71828).formatPercent);\nmodule.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) {\n  var point = hoverOnBars(pointData, xval, yval, hovermode, opts);\n  if (!point) return;\n  var cd = point.cd;\n  var trace = cd[0].trace;\n  var isHorizontal = trace.orientation === 'h';\n\n  // the closest data point\n  var index = point.index;\n  var di = cd[index];\n  var sizeLetter = isHorizontal ? 'x' : 'y';\n  point[sizeLetter + 'LabelVal'] = di.s;\n  point.percentInitial = di.begR;\n  point.percentInitialLabel = formatPercent(di.begR, 1);\n  point.percentPrevious = di.difR;\n  point.percentPreviousLabel = formatPercent(di.difR, 1);\n  point.percentTotal = di.sumR;\n  point.percentTotalLabel = formatPercent(di.sumR, 1);\n  var hoverinfo = di.hi || trace.hoverinfo;\n  var text = [];\n  if (hoverinfo && hoverinfo !== 'none' && hoverinfo !== 'skip') {\n    var isAll = hoverinfo === 'all';\n    var parts = hoverinfo.split('+');\n    var hasFlag = function (flag) {\n      return isAll || parts.indexOf(flag) !== -1;\n    };\n    if (hasFlag('percent initial')) {\n      text.push(point.percentInitialLabel + ' of initial');\n    }\n    if (hasFlag('percent previous')) {\n      text.push(point.percentPreviousLabel + ' of previous');\n    }\n    if (hasFlag('percent total')) {\n      text.push(point.percentTotalLabel + ' of total');\n    }\n  }\n  point.extraText = text.join('<br>');\n  point.color = getTraceColor(trace, di);\n  return [point];\n};\nfunction getTraceColor(trace, di) {\n  var cont = trace.marker;\n  var mc = di.mc || cont.color;\n  var mlc = di.mlc || cont.line.color;\n  var mlw = di.mlw || cont.line.width;\n  if (opacity(mc)) return mc;else if (opacity(mlc) && mlw) return mlc;\n}\n\n/***/ }),\n\n/***/ 51759:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2490739__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2490739__(1285),\n  layoutAttributes: __nested_webpack_require_2490739__(10440),\n  supplyDefaults: (__nested_webpack_require_2490739__(26199).supplyDefaults),\n  crossTraceDefaults: (__nested_webpack_require_2490739__(26199).crossTraceDefaults),\n  supplyLayoutDefaults: __nested_webpack_require_2490739__(93138),\n  calc: __nested_webpack_require_2490739__(9532),\n  crossTraceCalc: __nested_webpack_require_2490739__(8984),\n  plot: __nested_webpack_require_2490739__(80461),\n  style: (__nested_webpack_require_2490739__(68266).style),\n  hoverPoints: __nested_webpack_require_2490739__(63341),\n  eventData: __nested_webpack_require_2490739__(34598),\n  selectPoints: __nested_webpack_require_2490739__(81974),\n  moduleType: 'trace',\n  name: 'funnel',\n  basePlotModule: __nested_webpack_require_2490739__(93612),\n  categories: ['bar-like', 'cartesian', 'svg', 'oriented', 'showLegend', 'zoomScale'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 10440:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  funnelmode: {\n    valType: 'enumerated',\n    values: ['stack', 'group', 'overlay'],\n    dflt: 'stack',\n    editType: 'calc'\n  },\n  funnelgap: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    editType: 'calc'\n  },\n  funnelgroupgap: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 0,\n    editType: 'calc'\n  }\n};\n\n/***/ }),\n\n/***/ 93138:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2492039__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2492039__(71828);\nvar layoutAttributes = __nested_webpack_require_2492039__(10440);\nmodule.exports = function (layoutIn, layoutOut, fullData) {\n  var hasTraceType = false;\n  function coerce(attr, dflt) {\n    return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n  }\n  for (var i = 0; i < fullData.length; i++) {\n    var trace = fullData[i];\n    if (trace.visible && trace.type === 'funnel') {\n      hasTraceType = true;\n      break;\n    }\n  }\n  if (hasTraceType) {\n    coerce('funnelmode');\n    coerce('funnelgap', 0.2);\n    coerce('funnelgroupgap');\n  }\n};\n\n/***/ }),\n\n/***/ 80461:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2492733__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2492733__(39898);\nvar Lib = __nested_webpack_require_2492733__(71828);\nvar Drawing = __nested_webpack_require_2492733__(91424);\nvar BADNUM = (__nested_webpack_require_2492733__(50606).BADNUM);\nvar barPlot = __nested_webpack_require_2492733__(17295);\nvar clearMinTextSize = (__nested_webpack_require_2492733__(72597).clearMinTextSize);\nmodule.exports = function plot(gd, plotinfo, cdModule, traceLayer) {\n  var fullLayout = gd._fullLayout;\n  clearMinTextSize('funnel', fullLayout);\n  plotConnectorRegions(gd, plotinfo, cdModule, traceLayer);\n  plotConnectorLines(gd, plotinfo, cdModule, traceLayer);\n  barPlot.plot(gd, plotinfo, cdModule, traceLayer, {\n    mode: fullLayout.funnelmode,\n    norm: fullLayout.funnelmode,\n    gap: fullLayout.funnelgap,\n    groupgap: fullLayout.funnelgroupgap\n  });\n};\nfunction plotConnectorRegions(gd, plotinfo, cdModule, traceLayer) {\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  Lib.makeTraceGroups(traceLayer, cdModule, 'trace bars').each(function (cd) {\n    var plotGroup = d3.select(this);\n    var trace = cd[0].trace;\n    var group = Lib.ensureSingle(plotGroup, 'g', 'regions');\n    if (!trace.connector || !trace.connector.visible) {\n      group.remove();\n      return;\n    }\n    var isHorizontal = trace.orientation === 'h';\n    var connectors = group.selectAll('g.region').data(Lib.identity);\n    connectors.enter().append('g').classed('region', true);\n    connectors.exit().remove();\n    var len = connectors.size();\n    connectors.each(function (di, i) {\n      // don't draw lines between nulls\n      if (i !== len - 1 && !di.cNext) return;\n      var xy = getXY(di, xa, ya, isHorizontal);\n      var x = xy[0];\n      var y = xy[1];\n      var shape = '';\n      if (x[0] !== BADNUM && y[0] !== BADNUM && x[1] !== BADNUM && y[1] !== BADNUM && x[2] !== BADNUM && y[2] !== BADNUM && x[3] !== BADNUM && y[3] !== BADNUM) {\n        if (isHorizontal) {\n          shape += 'M' + x[0] + ',' + y[1] + 'L' + x[2] + ',' + y[2] + 'H' + x[3] + 'L' + x[1] + ',' + y[1] + 'Z';\n        } else {\n          shape += 'M' + x[1] + ',' + y[1] + 'L' + x[2] + ',' + y[3] + 'V' + y[2] + 'L' + x[1] + ',' + y[0] + 'Z';\n        }\n      }\n      if (shape === '') shape = 'M0,0Z';\n      Lib.ensureSingle(d3.select(this), 'path').attr('d', shape).call(Drawing.setClipUrl, plotinfo.layerClipId, gd);\n    });\n  });\n}\nfunction plotConnectorLines(gd, plotinfo, cdModule, traceLayer) {\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  Lib.makeTraceGroups(traceLayer, cdModule, 'trace bars').each(function (cd) {\n    var plotGroup = d3.select(this);\n    var trace = cd[0].trace;\n    var group = Lib.ensureSingle(plotGroup, 'g', 'lines');\n    if (!trace.connector || !trace.connector.visible || !trace.connector.line.width) {\n      group.remove();\n      return;\n    }\n    var isHorizontal = trace.orientation === 'h';\n    var connectors = group.selectAll('g.line').data(Lib.identity);\n    connectors.enter().append('g').classed('line', true);\n    connectors.exit().remove();\n    var len = connectors.size();\n    connectors.each(function (di, i) {\n      // don't draw lines between nulls\n      if (i !== len - 1 && !di.cNext) return;\n      var xy = getXY(di, xa, ya, isHorizontal);\n      var x = xy[0];\n      var y = xy[1];\n      var shape = '';\n      if (x[3] !== undefined && y[3] !== undefined) {\n        if (isHorizontal) {\n          shape += 'M' + x[0] + ',' + y[1] + 'L' + x[2] + ',' + y[2];\n          shape += 'M' + x[1] + ',' + y[1] + 'L' + x[3] + ',' + y[2];\n        } else {\n          shape += 'M' + x[1] + ',' + y[1] + 'L' + x[2] + ',' + y[3];\n          shape += 'M' + x[1] + ',' + y[0] + 'L' + x[2] + ',' + y[2];\n        }\n      }\n      if (shape === '') shape = 'M0,0Z';\n      Lib.ensureSingle(d3.select(this), 'path').attr('d', shape).call(Drawing.setClipUrl, plotinfo.layerClipId, gd);\n    });\n  });\n}\nfunction getXY(di, xa, ya, isHorizontal) {\n  var s = [];\n  var p = [];\n  var sAxis = isHorizontal ? xa : ya;\n  var pAxis = isHorizontal ? ya : xa;\n  s[0] = sAxis.c2p(di.s0, true);\n  p[0] = pAxis.c2p(di.p0, true);\n  s[1] = sAxis.c2p(di.s1, true);\n  p[1] = pAxis.c2p(di.p1, true);\n  s[2] = sAxis.c2p(di.nextS0, true);\n  p[2] = pAxis.c2p(di.nextP0, true);\n  s[3] = sAxis.c2p(di.nextS1, true);\n  p[3] = pAxis.c2p(di.nextP1, true);\n  return isHorizontal ? [s, p] : [p, s];\n}\n\n/***/ }),\n\n/***/ 68266:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2497097__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2497097__(39898);\nvar Drawing = __nested_webpack_require_2497097__(91424);\nvar Color = __nested_webpack_require_2497097__(7901);\nvar DESELECTDIM = (__nested_webpack_require_2497097__(37822).DESELECTDIM);\nvar barStyle = __nested_webpack_require_2497097__(16688);\nvar resizeText = (__nested_webpack_require_2497097__(72597).resizeText);\nvar styleTextPoints = barStyle.styleTextPoints;\nfunction style(gd, cd, sel) {\n  var s = sel ? sel : d3.select(gd).selectAll('g.funnellayer').selectAll('g.trace');\n  resizeText(gd, s, 'funnel');\n  s.style('opacity', function (d) {\n    return d[0].trace.opacity;\n  });\n  s.each(function (d) {\n    var gTrace = d3.select(this);\n    var trace = d[0].trace;\n    gTrace.selectAll('.point > path').each(function (di) {\n      if (!di.isBlank) {\n        var cont = trace.marker;\n        d3.select(this).call(Color.fill, di.mc || cont.color).call(Color.stroke, di.mlc || cont.line.color).call(Drawing.dashLine, cont.line.dash, di.mlw || cont.line.width).style('opacity', trace.selectedpoints && !di.selected ? DESELECTDIM : 1);\n      }\n    });\n    styleTextPoints(gTrace, trace, gd);\n    gTrace.selectAll('.regions').each(function () {\n      d3.select(this).selectAll('path').style('stroke-width', 0).call(Color.fill, trace.connector.fillcolor);\n    });\n    gTrace.selectAll('.lines').each(function () {\n      var cont = trace.connector.line;\n      Drawing.lineGroupStyle(d3.select(this).selectAll('path'), cont.width, cont.color, cont.dash);\n    });\n  });\n}\nmodule.exports = {\n  style: style\n};\n\n/***/ }),\n\n/***/ 86807:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2498677__) {\n\n\"use strict\";\n\n\nvar pieAttrs = __nested_webpack_require_2498677__(34000);\nvar baseAttrs = __nested_webpack_require_2498677__(9012);\nvar domainAttrs = (__nested_webpack_require_2498677__(27670)/* .attributes */ .Y);\nvar hovertemplateAttrs = (__nested_webpack_require_2498677__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_2498677__(5386)/* .texttemplateAttrs */ .s);\nvar extendFlat = (__nested_webpack_require_2498677__(1426).extendFlat);\nmodule.exports = {\n  labels: pieAttrs.labels,\n  // equivalent of x0 and dx, if label is missing\n  label0: pieAttrs.label0,\n  dlabel: pieAttrs.dlabel,\n  values: pieAttrs.values,\n  marker: {\n    colors: pieAttrs.marker.colors,\n    line: {\n      color: extendFlat({}, pieAttrs.marker.line.color, {\n        dflt: null\n      }),\n      width: extendFlat({}, pieAttrs.marker.line.width, {\n        dflt: 1\n      }),\n      editType: 'calc'\n    },\n    editType: 'calc'\n  },\n  text: pieAttrs.text,\n  hovertext: pieAttrs.hovertext,\n  scalegroup: extendFlat({}, pieAttrs.scalegroup, {}),\n  textinfo: extendFlat({}, pieAttrs.textinfo, {\n    flags: ['label', 'text', 'value', 'percent']\n  }),\n  texttemplate: texttemplateAttrs({\n    editType: 'plot'\n  }, {\n    keys: ['label', 'color', 'value', 'text', 'percent']\n  }),\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {\n    flags: ['label', 'text', 'value', 'percent', 'name']\n  }),\n  hovertemplate: hovertemplateAttrs({}, {\n    keys: ['label', 'color', 'value', 'text', 'percent']\n  }),\n  textposition: extendFlat({}, pieAttrs.textposition, {\n    values: ['inside', 'none'],\n    dflt: 'inside'\n  }),\n  textfont: pieAttrs.textfont,\n  insidetextfont: pieAttrs.insidetextfont,\n  title: {\n    text: pieAttrs.title.text,\n    font: pieAttrs.title.font,\n    position: extendFlat({}, pieAttrs.title.position, {\n      values: ['top left', 'top center', 'top right'],\n      dflt: 'top center'\n    }),\n    editType: 'plot'\n  },\n  domain: domainAttrs({\n    name: 'funnelarea',\n    trace: true,\n    editType: 'calc'\n  }),\n  aspectratio: {\n    valType: 'number',\n    min: 0,\n    dflt: 1,\n    editType: 'plot'\n  },\n  baseratio: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 0.333,\n    editType: 'plot'\n  }\n};\n\n/***/ }),\n\n/***/ 6452:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_2500908__) {\n\n\"use strict\";\n\n\nvar plots = __nested_webpack_require_2500908__(74875);\nexports.name = 'funnelarea';\nexports.plot = function (gd, traces, transitionOpts, makeOnCompleteCallback) {\n  plots.plotBasePlot(exports.name, gd, traces, transitionOpts, makeOnCompleteCallback);\n};\nexports.clean = function (newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  plots.cleanBasePlot(exports.name, newFullData, newFullLayout, oldFullData, oldFullLayout);\n};\n\n/***/ }),\n\n/***/ 89574:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2501442__) {\n\n\"use strict\";\n\n\nvar pieCalc = __nested_webpack_require_2501442__(32354);\nfunction calc(gd, trace) {\n  return pieCalc.calc(gd, trace);\n}\nfunction crossTraceCalc(gd) {\n  pieCalc.crossTraceCalc(gd, {\n    type: 'funnelarea'\n  });\n}\nmodule.exports = {\n  calc: calc,\n  crossTraceCalc: crossTraceCalc\n};\n\n/***/ }),\n\n/***/ 86282:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2501823__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2501823__(71828);\nvar attributes = __nested_webpack_require_2501823__(86807);\nvar handleDomainDefaults = (__nested_webpack_require_2501823__(27670)/* .defaults */ .c);\nvar handleText = (__nested_webpack_require_2501823__(90769).handleText);\nvar handleLabelsAndValues = (__nested_webpack_require_2501823__(37434).handleLabelsAndValues);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var labels = coerce('labels');\n  var values = coerce('values');\n  var res = handleLabelsAndValues(labels, values);\n  var len = res.len;\n  traceOut._hasLabels = res.hasLabels;\n  traceOut._hasValues = res.hasValues;\n  if (!traceOut._hasLabels && traceOut._hasValues) {\n    coerce('label0');\n    coerce('dlabel');\n  }\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  traceOut._length = len;\n  var lineWidth = coerce('marker.line.width');\n  if (lineWidth) coerce('marker.line.color', layout.paper_bgcolor);\n  coerce('marker.colors');\n  coerce('scalegroup');\n  var textData = coerce('text');\n  var textTemplate = coerce('texttemplate');\n  var textInfo;\n  if (!textTemplate) textInfo = coerce('textinfo', Array.isArray(textData) ? 'text+percent' : 'percent');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  if (textTemplate || textInfo && textInfo !== 'none') {\n    var textposition = coerce('textposition');\n    handleText(traceIn, traceOut, layout, coerce, textposition, {\n      moduleHasSelected: false,\n      moduleHasUnselected: false,\n      moduleHasConstrain: false,\n      moduleHasCliponaxis: false,\n      moduleHasTextangle: false,\n      moduleHasInsideanchor: false\n    });\n  }\n  handleDomainDefaults(traceOut, layout, coerce);\n  var title = coerce('title.text');\n  if (title) {\n    coerce('title.position');\n    Lib.coerceFont(coerce, 'title.font', layout.font);\n  }\n  coerce('aspectratio');\n  coerce('baseratio');\n};\n\n/***/ }),\n\n/***/ 10421:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2503863__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'trace',\n  name: 'funnelarea',\n  basePlotModule: __nested_webpack_require_2503863__(6452),\n  categories: ['pie-like', 'funnelarea', 'showLegend'],\n  attributes: __nested_webpack_require_2503863__(86807),\n  layoutAttributes: __nested_webpack_require_2503863__(80097),\n  supplyDefaults: __nested_webpack_require_2503863__(86282),\n  supplyLayoutDefaults: __nested_webpack_require_2503863__(57402),\n  calc: (__nested_webpack_require_2503863__(89574).calc),\n  crossTraceCalc: (__nested_webpack_require_2503863__(89574).crossTraceCalc),\n  plot: __nested_webpack_require_2503863__(79187),\n  style: __nested_webpack_require_2503863__(71858),\n  styleOne: __nested_webpack_require_2503863__(63463),\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 80097:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2504564__) {\n\n\"use strict\";\n\n\nvar hiddenlabels = (__nested_webpack_require_2504564__(92774).hiddenlabels);\nmodule.exports = {\n  hiddenlabels: hiddenlabels,\n  funnelareacolorway: {\n    valType: 'colorlist',\n    editType: 'calc'\n  },\n  extendfunnelareacolors: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc'\n  }\n};\n\n/***/ }),\n\n/***/ 57402:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2504962__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2504962__(71828);\nvar layoutAttributes = __nested_webpack_require_2504962__(80097);\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n  }\n  coerce('hiddenlabels');\n  coerce('funnelareacolorway', layoutOut.colorway);\n  coerce('extendfunnelareacolors');\n};\n\n/***/ }),\n\n/***/ 79187:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2505463__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2505463__(39898);\nvar Drawing = __nested_webpack_require_2505463__(91424);\nvar Lib = __nested_webpack_require_2505463__(71828);\nvar strScale = Lib.strScale;\nvar strTranslate = Lib.strTranslate;\nvar svgTextUtils = __nested_webpack_require_2505463__(63893);\nvar barPlot = __nested_webpack_require_2505463__(17295);\nvar toMoveInsideBar = barPlot.toMoveInsideBar;\nvar uniformText = __nested_webpack_require_2505463__(72597);\nvar recordMinTextSize = uniformText.recordMinTextSize;\nvar clearMinTextSize = uniformText.clearMinTextSize;\nvar pieHelpers = __nested_webpack_require_2505463__(53581);\nvar piePlot = __nested_webpack_require_2505463__(14575);\nvar attachFxHandlers = piePlot.attachFxHandlers;\nvar determineInsideTextFont = piePlot.determineInsideTextFont;\nvar layoutAreas = piePlot.layoutAreas;\nvar prerenderTitles = piePlot.prerenderTitles;\nvar positionTitleOutside = piePlot.positionTitleOutside;\nvar formatSliceLabel = piePlot.formatSliceLabel;\nmodule.exports = function plot(gd, cdModule) {\n  var isStatic = gd._context.staticPlot;\n  var fullLayout = gd._fullLayout;\n  clearMinTextSize('funnelarea', fullLayout);\n  prerenderTitles(cdModule, gd);\n  layoutAreas(cdModule, fullLayout._size);\n  Lib.makeTraceGroups(fullLayout._funnelarealayer, cdModule, 'trace').each(function (cd) {\n    var plotGroup = d3.select(this);\n    var cd0 = cd[0];\n    var trace = cd0.trace;\n    setCoords(cd);\n    plotGroup.each(function () {\n      var slices = d3.select(this).selectAll('g.slice').data(cd);\n      slices.enter().append('g').classed('slice', true);\n      slices.exit().remove();\n      slices.each(function (pt, i) {\n        if (pt.hidden) {\n          d3.select(this).selectAll('path,g').remove();\n          return;\n        }\n\n        // to have consistent event data compared to other traces\n        pt.pointNumber = pt.i;\n        pt.curveNumber = trace.index;\n        var cx = cd0.cx;\n        var cy = cd0.cy;\n        var sliceTop = d3.select(this);\n        var slicePath = sliceTop.selectAll('path.surface').data([pt]);\n        slicePath.enter().append('path').classed('surface', true).style({\n          'pointer-events': isStatic ? 'none' : 'all'\n        });\n        sliceTop.call(attachFxHandlers, gd, cd);\n        var shape = 'M' + (cx + pt.TR[0]) + ',' + (cy + pt.TR[1]) + line(pt.TR, pt.BR) + line(pt.BR, pt.BL) + line(pt.BL, pt.TL) + 'Z';\n        slicePath.attr('d', shape);\n\n        // add text\n        formatSliceLabel(gd, pt, cd0);\n        var textPosition = pieHelpers.castOption(trace.textposition, pt.pts);\n        var sliceTextGroup = sliceTop.selectAll('g.slicetext').data(pt.text && textPosition !== 'none' ? [0] : []);\n        sliceTextGroup.enter().append('g').classed('slicetext', true);\n        sliceTextGroup.exit().remove();\n        sliceTextGroup.each(function () {\n          var sliceText = Lib.ensureSingle(d3.select(this), 'text', '', function (s) {\n            // prohibit tex interpretation until we can handle\n            // tex and regular text together\n            s.attr('data-notex', 1);\n          });\n          var font = Lib.ensureUniformFontSize(gd, determineInsideTextFont(trace, pt, fullLayout.font));\n          sliceText.text(pt.text).attr({\n            'class': 'slicetext',\n            transform: '',\n            'text-anchor': 'middle'\n          }).call(Drawing.font, font).call(svgTextUtils.convertToTspans, gd);\n\n          // position the text relative to the slice\n          var textBB = Drawing.bBox(sliceText.node());\n          var transform;\n          var x0, x1;\n          var y0 = Math.min(pt.BL[1], pt.BR[1]) + cy;\n          var y1 = Math.max(pt.TL[1], pt.TR[1]) + cy;\n          x0 = Math.max(pt.TL[0], pt.BL[0]) + cx;\n          x1 = Math.min(pt.TR[0], pt.BR[0]) + cx;\n          transform = toMoveInsideBar(x0, x1, y0, y1, textBB, {\n            isHorizontal: true,\n            constrained: true,\n            angle: 0,\n            anchor: 'middle'\n          });\n          transform.fontSize = font.size;\n          recordMinTextSize(trace.type, transform, fullLayout);\n          cd[i].transform = transform;\n          Lib.setTransormAndDisplay(sliceText, transform);\n        });\n      });\n\n      // add the title\n      var titleTextGroup = d3.select(this).selectAll('g.titletext').data(trace.title.text ? [0] : []);\n      titleTextGroup.enter().append('g').classed('titletext', true);\n      titleTextGroup.exit().remove();\n      titleTextGroup.each(function () {\n        var titleText = Lib.ensureSingle(d3.select(this), 'text', '', function (s) {\n          // prohibit tex interpretation as above\n          s.attr('data-notex', 1);\n        });\n        var txt = trace.title.text;\n        if (trace._meta) {\n          txt = Lib.templateString(txt, trace._meta);\n        }\n        titleText.text(txt).attr({\n          'class': 'titletext',\n          transform: '',\n          'text-anchor': 'middle'\n        }).call(Drawing.font, trace.title.font).call(svgTextUtils.convertToTspans, gd);\n        var transform = positionTitleOutside(cd0, fullLayout._size);\n        titleText.attr('transform', strTranslate(transform.x, transform.y) + strScale(Math.min(1, transform.scale)) + strTranslate(transform.tx, transform.ty));\n      });\n    });\n  });\n};\nfunction line(a, b) {\n  var dx = b[0] - a[0];\n  var dy = b[1] - a[1];\n  return 'l' + dx + ',' + dy;\n}\nfunction getBetween(a, b) {\n  return [0.5 * (a[0] + b[0]), 0.5 * (a[1] + b[1])];\n}\nfunction setCoords(cd) {\n  if (!cd.length) return;\n  var cd0 = cd[0];\n  var trace = cd0.trace;\n  var aspectratio = trace.aspectratio;\n  var h = trace.baseratio;\n  if (h > 0.999) h = 0.999; // TODO: may handle this case separately\n  var h2 = Math.pow(h, 2);\n  var v1 = cd0.vTotal;\n  var v0 = v1 * h2 / (1 - h2);\n  var totalValues = v1;\n  var sumSteps = v0 / v1;\n  function calcPos() {\n    var q = Math.sqrt(sumSteps);\n    return {\n      x: q,\n      y: -q\n    };\n  }\n  function getPoint() {\n    var pos = calcPos();\n    return [pos.x, pos.y];\n  }\n  var p;\n  var allPoints = [];\n  allPoints.push(getPoint());\n  var i, cdi;\n  for (i = cd.length - 1; i > -1; i--) {\n    cdi = cd[i];\n    if (cdi.hidden) continue;\n    var step = cdi.v / totalValues;\n    sumSteps += step;\n    allPoints.push(getPoint());\n  }\n  var minY = Infinity;\n  var maxY = -Infinity;\n  for (i = 0; i < allPoints.length; i++) {\n    p = allPoints[i];\n    minY = Math.min(minY, p[1]);\n    maxY = Math.max(maxY, p[1]);\n  }\n\n  // center the shape\n  for (i = 0; i < allPoints.length; i++) {\n    allPoints[i][1] -= (maxY + minY) / 2;\n  }\n  var lastX = allPoints[allPoints.length - 1][0];\n\n  // get pie r\n  var r = cd0.r;\n  var rY = (maxY - minY) / 2;\n  var scaleX = r / lastX;\n  var scaleY = r / rY * aspectratio;\n\n  // set funnelarea r\n  cd0.r = scaleY * rY;\n\n  // scale the shape\n  for (i = 0; i < allPoints.length; i++) {\n    allPoints[i][0] *= scaleX;\n    allPoints[i][1] *= scaleY;\n  }\n\n  // record first position\n  p = allPoints[0];\n  var prevLeft = [-p[0], p[1]];\n  var prevRight = [p[0], p[1]];\n  var n = 0; // note we skip the very first point.\n  for (i = cd.length - 1; i > -1; i--) {\n    cdi = cd[i];\n    if (cdi.hidden) continue;\n    n += 1;\n    var x = allPoints[n][0];\n    var y = allPoints[n][1];\n    cdi.TL = [-x, y];\n    cdi.TR = [x, y];\n    cdi.BL = prevLeft;\n    cdi.BR = prevRight;\n    cdi.pxmid = getBetween(cdi.TR, cdi.BR);\n    prevLeft = cdi.TL;\n    prevRight = cdi.TR;\n  }\n}\n\n/***/ }),\n\n/***/ 71858:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2512824__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2512824__(39898);\nvar styleOne = __nested_webpack_require_2512824__(63463);\nvar resizeText = (__nested_webpack_require_2512824__(72597).resizeText);\nmodule.exports = function style(gd) {\n  var s = gd._fullLayout._funnelarealayer.selectAll('.trace');\n  resizeText(gd, s, 'funnelarea');\n  s.each(function (cd) {\n    var cd0 = cd[0];\n    var trace = cd0.trace;\n    var traceSelection = d3.select(this);\n    traceSelection.style({\n      opacity: trace.opacity\n    });\n    traceSelection.selectAll('path.surface').each(function (pt) {\n      d3.select(this).call(styleOne, pt, trace);\n    });\n  });\n};\n\n/***/ }),\n\n/***/ 21606:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2513524__) {\n\n\"use strict\";\n\n\nvar scatterAttrs = __nested_webpack_require_2513524__(82196);\nvar baseAttrs = __nested_webpack_require_2513524__(9012);\nvar fontAttrs = __nested_webpack_require_2513524__(41940);\nvar axisHoverFormat = (__nested_webpack_require_2513524__(12663).axisHoverFormat);\nvar hovertemplateAttrs = (__nested_webpack_require_2513524__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_2513524__(5386)/* .texttemplateAttrs */ .s);\nvar colorScaleAttrs = __nested_webpack_require_2513524__(50693);\nvar extendFlat = (__nested_webpack_require_2513524__(1426).extendFlat);\nmodule.exports = extendFlat({\n  z: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  x: extendFlat({}, scatterAttrs.x, {\n    impliedEdits: {\n      xtype: 'array'\n    }\n  }),\n  x0: extendFlat({}, scatterAttrs.x0, {\n    impliedEdits: {\n      xtype: 'scaled'\n    }\n  }),\n  dx: extendFlat({}, scatterAttrs.dx, {\n    impliedEdits: {\n      xtype: 'scaled'\n    }\n  }),\n  y: extendFlat({}, scatterAttrs.y, {\n    impliedEdits: {\n      ytype: 'array'\n    }\n  }),\n  y0: extendFlat({}, scatterAttrs.y0, {\n    impliedEdits: {\n      ytype: 'scaled'\n    }\n  }),\n  dy: extendFlat({}, scatterAttrs.dy, {\n    impliedEdits: {\n      ytype: 'scaled'\n    }\n  }),\n  xperiod: extendFlat({}, scatterAttrs.xperiod, {\n    impliedEdits: {\n      xtype: 'scaled'\n    }\n  }),\n  yperiod: extendFlat({}, scatterAttrs.yperiod, {\n    impliedEdits: {\n      ytype: 'scaled'\n    }\n  }),\n  xperiod0: extendFlat({}, scatterAttrs.xperiod0, {\n    impliedEdits: {\n      xtype: 'scaled'\n    }\n  }),\n  yperiod0: extendFlat({}, scatterAttrs.yperiod0, {\n    impliedEdits: {\n      ytype: 'scaled'\n    }\n  }),\n  xperiodalignment: extendFlat({}, scatterAttrs.xperiodalignment, {\n    impliedEdits: {\n      xtype: 'scaled'\n    }\n  }),\n  yperiodalignment: extendFlat({}, scatterAttrs.yperiodalignment, {\n    impliedEdits: {\n      ytype: 'scaled'\n    }\n  }),\n  text: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  hovertext: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  transpose: {\n    valType: 'boolean',\n    dflt: false,\n    editType: 'calc'\n  },\n  xtype: {\n    valType: 'enumerated',\n    values: ['array', 'scaled'],\n    editType: 'calc+clearAxisTypes'\n  },\n  ytype: {\n    valType: 'enumerated',\n    values: ['array', 'scaled'],\n    editType: 'calc+clearAxisTypes'\n  },\n  zsmooth: {\n    valType: 'enumerated',\n    values: ['fast', 'best', false],\n    dflt: false,\n    editType: 'calc'\n  },\n  hoverongaps: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'none'\n  },\n  connectgaps: {\n    valType: 'boolean',\n    editType: 'calc'\n  },\n  xgap: {\n    valType: 'number',\n    dflt: 0,\n    min: 0,\n    editType: 'plot'\n  },\n  ygap: {\n    valType: 'number',\n    dflt: 0,\n    min: 0,\n    editType: 'plot'\n  },\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  zhoverformat: axisHoverFormat('z', 1),\n  hovertemplate: hovertemplateAttrs(),\n  texttemplate: texttemplateAttrs({\n    arrayOk: false,\n    editType: 'plot'\n  }, {\n    keys: ['x', 'y', 'z', 'text']\n  }),\n  textfont: fontAttrs({\n    editType: 'plot',\n    autoSize: true,\n    autoColor: true,\n    colorEditType: 'style'\n  }),\n  showlegend: extendFlat({}, baseAttrs.showlegend, {\n    dflt: false\n  })\n}, {\n  transforms: undefined\n}, colorScaleAttrs('', {\n  cLetter: 'z',\n  autoColorDflt: false\n}));\n\n/***/ }),\n\n/***/ 90757:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2516869__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_2516869__(73972);\nvar Lib = __nested_webpack_require_2516869__(71828);\nvar Axes = __nested_webpack_require_2516869__(89298);\nvar alignPeriod = __nested_webpack_require_2516869__(42973);\nvar histogram2dCalc = __nested_webpack_require_2516869__(17562);\nvar colorscaleCalc = __nested_webpack_require_2516869__(78803);\nvar convertColumnData = __nested_webpack_require_2516869__(68296);\nvar clean2dArray = __nested_webpack_require_2516869__(4742);\nvar interp2d = __nested_webpack_require_2516869__(824);\nvar findEmpties = __nested_webpack_require_2516869__(43907);\nvar makeBoundArray = __nested_webpack_require_2516869__(70769);\nvar BADNUM = (__nested_webpack_require_2516869__(50606).BADNUM);\nmodule.exports = function calc(gd, trace) {\n  // prepare the raw data\n  // run makeCalcdata on x and y even for heatmaps, in case of category mappings\n  var xa = Axes.getFromId(gd, trace.xaxis || 'x');\n  var ya = Axes.getFromId(gd, trace.yaxis || 'y');\n  var isContour = Registry.traceIs(trace, 'contour');\n  var isHist = Registry.traceIs(trace, 'histogram');\n  var isGL2D = Registry.traceIs(trace, 'gl2d');\n  var zsmooth = isContour ? 'best' : trace.zsmooth;\n  var x, x0, dx, origX;\n  var y, y0, dy, origY;\n  var z, i, binned;\n\n  // cancel minimum tick spacings (only applies to bars and boxes)\n  xa._minDtick = 0;\n  ya._minDtick = 0;\n  if (isHist) {\n    binned = histogram2dCalc(gd, trace);\n    origX = binned.orig_x;\n    x = binned.x;\n    x0 = binned.x0;\n    dx = binned.dx;\n    origY = binned.orig_y;\n    y = binned.y;\n    y0 = binned.y0;\n    dy = binned.dy;\n    z = binned.z;\n  } else {\n    var zIn = trace.z;\n    if (Lib.isArray1D(zIn)) {\n      convertColumnData(trace, xa, ya, 'x', 'y', ['z']);\n      x = trace._x;\n      y = trace._y;\n      zIn = trace._z;\n    } else {\n      origX = trace.x ? xa.makeCalcdata(trace, 'x') : [];\n      origY = trace.y ? ya.makeCalcdata(trace, 'y') : [];\n      x = alignPeriod(trace, xa, 'x', origX).vals;\n      y = alignPeriod(trace, ya, 'y', origY).vals;\n      trace._x = x;\n      trace._y = y;\n    }\n    x0 = trace.x0;\n    dx = trace.dx;\n    y0 = trace.y0;\n    dy = trace.dy;\n    z = clean2dArray(zIn, trace, xa, ya);\n  }\n  if (xa.rangebreaks || ya.rangebreaks) {\n    z = dropZonBreaks(x, y, z);\n    if (!isHist) {\n      x = skipBreaks(x);\n      y = skipBreaks(y);\n      trace._x = x;\n      trace._y = y;\n    }\n  }\n  if (!isHist && (isContour || trace.connectgaps)) {\n    trace._emptypoints = findEmpties(z);\n    interp2d(z, trace._emptypoints);\n  }\n  function noZsmooth(msg) {\n    zsmooth = trace._input.zsmooth = trace.zsmooth = false;\n    Lib.warn('cannot use zsmooth: \"fast\": ' + msg);\n  }\n\n  // check whether we really can smooth (ie all boxes are about the same size)\n  if (zsmooth === 'fast') {\n    if (xa.type === 'log' || ya.type === 'log') {\n      noZsmooth('log axis found');\n    } else if (!isHist) {\n      if (x.length) {\n        var avgdx = (x[x.length - 1] - x[0]) / (x.length - 1);\n        var maxErrX = Math.abs(avgdx / 100);\n        for (i = 0; i < x.length - 1; i++) {\n          if (Math.abs(x[i + 1] - x[i] - avgdx) > maxErrX) {\n            noZsmooth('x scale is not linear');\n            break;\n          }\n        }\n      }\n      if (y.length && zsmooth === 'fast') {\n        var avgdy = (y[y.length - 1] - y[0]) / (y.length - 1);\n        var maxErrY = Math.abs(avgdy / 100);\n        for (i = 0; i < y.length - 1; i++) {\n          if (Math.abs(y[i + 1] - y[i] - avgdy) > maxErrY) {\n            noZsmooth('y scale is not linear');\n            break;\n          }\n        }\n      }\n    }\n  }\n\n  // create arrays of brick boundaries, to be used by autorange and heatmap.plot\n  var xlen = Lib.maxRowLength(z);\n  var xIn = trace.xtype === 'scaled' ? '' : x;\n  var xArray = makeBoundArray(trace, xIn, x0, dx, xlen, xa);\n  var yIn = trace.ytype === 'scaled' ? '' : y;\n  var yArray = makeBoundArray(trace, yIn, y0, dy, z.length, ya);\n\n  // handled in gl2d convert step\n  if (!isGL2D) {\n    trace._extremes[xa._id] = Axes.findExtremes(xa, xArray);\n    trace._extremes[ya._id] = Axes.findExtremes(ya, yArray);\n  }\n  var cd0 = {\n    x: xArray,\n    y: yArray,\n    z: z,\n    text: trace._text || trace.text,\n    hovertext: trace._hovertext || trace.hovertext\n  };\n  if (trace.xperiodalignment && origX) {\n    cd0.orig_x = origX;\n  }\n  if (trace.yperiodalignment && origY) {\n    cd0.orig_y = origY;\n  }\n  if (xIn && xIn.length === xArray.length - 1) cd0.xCenter = xIn;\n  if (yIn && yIn.length === yArray.length - 1) cd0.yCenter = yIn;\n  if (isHist) {\n    cd0.xRanges = binned.xRanges;\n    cd0.yRanges = binned.yRanges;\n    cd0.pts = binned.pts;\n  }\n  if (!isContour) {\n    colorscaleCalc(gd, trace, {\n      vals: z,\n      cLetter: 'z'\n    });\n  }\n  if (isContour && trace.contours && trace.contours.coloring === 'heatmap') {\n    var dummyTrace = {\n      type: trace.type === 'contour' ? 'heatmap' : 'histogram2d',\n      xcalendar: trace.xcalendar,\n      ycalendar: trace.ycalendar\n    };\n    cd0.xfill = makeBoundArray(dummyTrace, xIn, x0, dx, xlen, xa);\n    cd0.yfill = makeBoundArray(dummyTrace, yIn, y0, dy, z.length, ya);\n  }\n  return [cd0];\n};\nfunction skipBreaks(a) {\n  var b = [];\n  var len = a.length;\n  for (var i = 0; i < len; i++) {\n    var v = a[i];\n    if (v !== BADNUM) b.push(v);\n  }\n  return b;\n}\nfunction dropZonBreaks(x, y, z) {\n  var newZ = [];\n  var k = -1;\n  for (var i = 0; i < z.length; i++) {\n    if (y[i] === BADNUM) continue;\n    k++;\n    newZ[k] = [];\n    for (var j = 0; j < z[i].length; j++) {\n      if (x[j] === BADNUM) continue;\n      newZ[k].push(z[i][j]);\n    }\n  }\n  return newZ;\n}\n\n/***/ }),\n\n/***/ 4742:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2522396__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_2522396__(92770);\nvar Lib = __nested_webpack_require_2522396__(71828);\nvar BADNUM = (__nested_webpack_require_2522396__(50606).BADNUM);\nmodule.exports = function clean2dArray(zOld, trace, xa, ya) {\n  var rowlen, collen, getCollen, old2new, i, j;\n  function cleanZvalue(v) {\n    if (!isNumeric(v)) return undefined;\n    return +v;\n  }\n  if (trace && trace.transpose) {\n    rowlen = 0;\n    for (i = 0; i < zOld.length; i++) rowlen = Math.max(rowlen, zOld[i].length);\n    if (rowlen === 0) return false;\n    getCollen = function (zOld) {\n      return zOld.length;\n    };\n    old2new = function (zOld, i, j) {\n      return (zOld[j] || [])[i];\n    };\n  } else {\n    rowlen = zOld.length;\n    getCollen = function (zOld, i) {\n      return zOld[i].length;\n    };\n    old2new = function (zOld, i, j) {\n      return (zOld[i] || [])[j];\n    };\n  }\n  var padOld2new = function (zOld, i, j) {\n    if (i === BADNUM || j === BADNUM) return BADNUM;\n    return old2new(zOld, i, j);\n  };\n  function axisMapping(ax) {\n    if (trace && trace.type !== 'carpet' && trace.type !== 'contourcarpet' && ax && ax.type === 'category' && trace['_' + ax._id.charAt(0)].length) {\n      var axLetter = ax._id.charAt(0);\n      var axMapping = {};\n      var traceCategories = trace['_' + axLetter + 'CategoryMap'] || trace[axLetter];\n      for (i = 0; i < traceCategories.length; i++) {\n        axMapping[traceCategories[i]] = i;\n      }\n      return function (i) {\n        var ind = axMapping[ax._categories[i]];\n        return ind + 1 ? ind : BADNUM;\n      };\n    } else {\n      return Lib.identity;\n    }\n  }\n  var xMap = axisMapping(xa);\n  var yMap = axisMapping(ya);\n  if (ya && ya.type === 'category') rowlen = ya._categories.length;\n  var zNew = new Array(rowlen);\n  for (i = 0; i < rowlen; i++) {\n    if (xa && xa.type === 'category') {\n      collen = xa._categories.length;\n    } else {\n      collen = getCollen(zOld, i);\n    }\n    zNew[i] = new Array(collen);\n    for (j = 0; j < collen; j++) zNew[i][j] = cleanZvalue(padOld2new(zOld, yMap(i), xMap(j)));\n  }\n  return zNew;\n};\n\n/***/ }),\n\n/***/ 61243:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  min: 'zmin',\n  max: 'zmax'\n};\n\n/***/ }),\n\n/***/ 68296:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2524680__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2524680__(71828);\nvar BADNUM = (__nested_webpack_require_2524680__(50606).BADNUM);\nvar alignPeriod = __nested_webpack_require_2524680__(42973);\nmodule.exports = function convertColumnData(trace, ax1, ax2, var1Name, var2Name, arrayVarNames) {\n  var colLen = trace._length;\n  var col1 = ax1.makeCalcdata(trace, var1Name);\n  var col2 = ax2.makeCalcdata(trace, var2Name);\n  col1 = alignPeriod(trace, ax1, var1Name, col1).vals;\n  col2 = alignPeriod(trace, ax2, var2Name, col2).vals;\n  var textCol = trace.text;\n  var hasColumnText = textCol !== undefined && Lib.isArray1D(textCol);\n  var hoverTextCol = trace.hovertext;\n  var hasColumnHoverText = hoverTextCol !== undefined && Lib.isArray1D(hoverTextCol);\n  var i, j;\n  var col1dv = Lib.distinctVals(col1);\n  var col1vals = col1dv.vals;\n  var col2dv = Lib.distinctVals(col2);\n  var col2vals = col2dv.vals;\n  var newArrays = [];\n  var text;\n  var hovertext;\n  var nI = col2vals.length;\n  var nJ = col1vals.length;\n  for (i = 0; i < arrayVarNames.length; i++) {\n    newArrays[i] = Lib.init2dArray(nI, nJ);\n  }\n  if (hasColumnText) {\n    text = Lib.init2dArray(nI, nJ);\n  }\n  if (hasColumnHoverText) {\n    hovertext = Lib.init2dArray(nI, nJ);\n  }\n  var after2before = Lib.init2dArray(nI, nJ);\n  for (i = 0; i < colLen; i++) {\n    if (col1[i] !== BADNUM && col2[i] !== BADNUM) {\n      var i1 = Lib.findBin(col1[i] + col1dv.minDiff / 2, col1vals);\n      var i2 = Lib.findBin(col2[i] + col2dv.minDiff / 2, col2vals);\n      for (j = 0; j < arrayVarNames.length; j++) {\n        var arrayVarName = arrayVarNames[j];\n        var arrayVar = trace[arrayVarName];\n        var newArray = newArrays[j];\n        newArray[i2][i1] = arrayVar[i];\n        after2before[i2][i1] = i;\n      }\n      if (hasColumnText) text[i2][i1] = textCol[i];\n      if (hasColumnHoverText) hovertext[i2][i1] = hoverTextCol[i];\n    }\n  }\n  trace['_' + var1Name] = col1vals;\n  trace['_' + var2Name] = col2vals;\n  for (j = 0; j < arrayVarNames.length; j++) {\n    trace['_' + arrayVarNames[j]] = newArrays[j];\n  }\n  if (hasColumnText) trace._text = text;\n  if (hasColumnHoverText) trace._hovertext = hovertext;\n  if (ax1 && ax1.type === 'category') {\n    trace['_' + var1Name + 'CategoryMap'] = col1vals.map(function (v) {\n      return ax1._categories[v];\n    });\n  }\n  if (ax2 && ax2.type === 'category') {\n    trace['_' + var2Name + 'CategoryMap'] = col2vals.map(function (v) {\n      return ax2._categories[v];\n    });\n  }\n  trace._after2before = after2before;\n};\n\n/***/ }),\n\n/***/ 76382:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2527254__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2527254__(71828);\nvar handleXYZDefaults = __nested_webpack_require_2527254__(67684);\nvar handleHeatmapLabelDefaults = __nested_webpack_require_2527254__(58623);\nvar handlePeriodDefaults = __nested_webpack_require_2527254__(73927);\nvar handleStyleDefaults = __nested_webpack_require_2527254__(49901);\nvar colorscaleDefaults = __nested_webpack_require_2527254__(1586);\nvar attributes = __nested_webpack_require_2527254__(21606);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var validData = handleXYZDefaults(traceIn, traceOut, coerce, layout);\n  if (!validData) {\n    traceOut.visible = false;\n    return;\n  }\n  handlePeriodDefaults(traceIn, traceOut, layout, coerce);\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  coerce('text');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  handleHeatmapLabelDefaults(coerce, layout);\n  handleStyleDefaults(traceIn, traceOut, coerce, layout);\n  coerce('hoverongaps');\n  coerce('connectgaps', Lib.isArray1D(traceOut.z) && traceOut.zsmooth !== false);\n  colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n    prefix: '',\n    cLetter: 'z'\n  });\n};\n\n/***/ }),\n\n/***/ 43907:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2528540__) {\n\n\"use strict\";\n\n\nvar maxRowLength = (__nested_webpack_require_2528540__(71828).maxRowLength);\n\n/* Return a list of empty points in 2D array z\n * each empty point z[i][j] gives an array [i, j, neighborCount]\n * neighborCount is the count of 4 nearest neighbors that DO exist\n * this is to give us an order of points to evaluate for interpolation.\n * if no neighbors exist, we iteratively look for neighbors that HAVE\n * neighbors, and add a fractional neighborCount\n */\nmodule.exports = function findEmpties(z) {\n  var empties = [];\n  var neighborHash = {};\n  var noNeighborList = [];\n  var nextRow = z[0];\n  var row = [];\n  var blank = [0, 0, 0];\n  var rowLength = maxRowLength(z);\n  var prevRow;\n  var i;\n  var j;\n  var thisPt;\n  var p;\n  var neighborCount;\n  var newNeighborHash;\n  var foundNewNeighbors;\n  for (i = 0; i < z.length; i++) {\n    prevRow = row;\n    row = nextRow;\n    nextRow = z[i + 1] || [];\n    for (j = 0; j < rowLength; j++) {\n      if (row[j] === undefined) {\n        neighborCount = (row[j - 1] !== undefined ? 1 : 0) + (row[j + 1] !== undefined ? 1 : 0) + (prevRow[j] !== undefined ? 1 : 0) + (nextRow[j] !== undefined ? 1 : 0);\n        if (neighborCount) {\n          // for this purpose, don't count off-the-edge points\n          // as undefined neighbors\n          if (i === 0) neighborCount++;\n          if (j === 0) neighborCount++;\n          if (i === z.length - 1) neighborCount++;\n          if (j === row.length - 1) neighborCount++;\n\n          // if all neighbors that could exist do, we don't\n          // need this for finding farther neighbors\n          if (neighborCount < 4) {\n            neighborHash[[i, j]] = [i, j, neighborCount];\n          }\n          empties.push([i, j, neighborCount]);\n        } else noNeighborList.push([i, j]);\n      }\n    }\n  }\n  while (noNeighborList.length) {\n    newNeighborHash = {};\n    foundNewNeighbors = false;\n\n    // look for cells that now have neighbors but didn't before\n    for (p = noNeighborList.length - 1; p >= 0; p--) {\n      thisPt = noNeighborList[p];\n      i = thisPt[0];\n      j = thisPt[1];\n      neighborCount = ((neighborHash[[i - 1, j]] || blank)[2] + (neighborHash[[i + 1, j]] || blank)[2] + (neighborHash[[i, j - 1]] || blank)[2] + (neighborHash[[i, j + 1]] || blank)[2]) / 20;\n      if (neighborCount) {\n        newNeighborHash[thisPt] = [i, j, neighborCount];\n        noNeighborList.splice(p, 1);\n        foundNewNeighbors = true;\n      }\n    }\n    if (!foundNewNeighbors) {\n      throw 'findEmpties iterated with no new neighbors';\n    }\n\n    // put these new cells into the main neighbor list\n    for (thisPt in newNeighborHash) {\n      neighborHash[thisPt] = newNeighborHash[thisPt];\n      empties.push(newNeighborHash[thisPt]);\n    }\n  }\n\n  // sort the full list in descending order of neighbor count\n  return empties.sort(function (a, b) {\n    return b[2] - a[2];\n  });\n};\n\n/***/ }),\n\n/***/ 46248:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2531497__) {\n\n\"use strict\";\n\n\nvar Fx = __nested_webpack_require_2531497__(30211);\nvar Lib = __nested_webpack_require_2531497__(71828);\nvar Axes = __nested_webpack_require_2531497__(89298);\nvar extractOpts = (__nested_webpack_require_2531497__(21081).extractOpts);\nmodule.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) {\n  if (!opts) opts = {};\n  var isContour = opts.isContour;\n  var cd0 = pointData.cd[0];\n  var trace = cd0.trace;\n  var xa = pointData.xa;\n  var ya = pointData.ya;\n  var x = cd0.x;\n  var y = cd0.y;\n  var z = cd0.z;\n  var xc = cd0.xCenter;\n  var yc = cd0.yCenter;\n  var zmask = cd0.zmask;\n  var zhoverformat = trace.zhoverformat;\n  var x2 = x;\n  var y2 = y;\n  var xl, yl, nx, ny;\n  if (pointData.index !== false) {\n    try {\n      nx = Math.round(pointData.index[1]);\n      ny = Math.round(pointData.index[0]);\n    } catch (e) {\n      Lib.error('Error hovering on heatmap, ' + 'pointNumber must be [row,col], found:', pointData.index);\n      return;\n    }\n    if (nx < 0 || nx >= z[0].length || ny < 0 || ny > z.length) {\n      return;\n    }\n  } else if (Fx.inbox(xval - x[0], xval - x[x.length - 1], 0) > 0 || Fx.inbox(yval - y[0], yval - y[y.length - 1], 0) > 0) {\n    return;\n  } else {\n    if (isContour) {\n      var i2;\n      x2 = [2 * x[0] - x[1]];\n      for (i2 = 1; i2 < x.length; i2++) {\n        x2.push((x[i2] + x[i2 - 1]) / 2);\n      }\n      x2.push([2 * x[x.length - 1] - x[x.length - 2]]);\n      y2 = [2 * y[0] - y[1]];\n      for (i2 = 1; i2 < y.length; i2++) {\n        y2.push((y[i2] + y[i2 - 1]) / 2);\n      }\n      y2.push([2 * y[y.length - 1] - y[y.length - 2]]);\n    }\n    nx = Math.max(0, Math.min(x2.length - 2, Lib.findBin(xval, x2)));\n    ny = Math.max(0, Math.min(y2.length - 2, Lib.findBin(yval, y2)));\n  }\n  var x0 = xa.c2p(x[nx]);\n  var x1 = xa.c2p(x[nx + 1]);\n  var y0 = ya.c2p(y[ny]);\n  var y1 = ya.c2p(y[ny + 1]);\n  var _x, _y;\n  if (isContour) {\n    _x = cd0.orig_x || x;\n    _y = cd0.orig_y || y;\n    x1 = x0;\n    xl = _x[nx];\n    y1 = y0;\n    yl = _y[ny];\n  } else {\n    _x = cd0.orig_x || xc || x;\n    _y = cd0.orig_y || yc || y;\n    xl = xc ? _x[nx] : (_x[nx] + _x[nx + 1]) / 2;\n    yl = yc ? _y[ny] : (_y[ny] + _y[ny + 1]) / 2;\n    if (xa && xa.type === 'category') xl = x[nx];\n    if (ya && ya.type === 'category') yl = y[ny];\n    if (trace.zsmooth) {\n      x0 = x1 = xa.c2p(xl);\n      y0 = y1 = ya.c2p(yl);\n    }\n  }\n  var zVal = z[ny][nx];\n  if (zmask && !zmask[ny][nx]) zVal = undefined;\n  if (zVal === undefined && !trace.hoverongaps) return;\n  var text;\n  if (Array.isArray(cd0.hovertext) && Array.isArray(cd0.hovertext[ny])) {\n    text = cd0.hovertext[ny][nx];\n  } else if (Array.isArray(cd0.text) && Array.isArray(cd0.text[ny])) {\n    text = cd0.text[ny][nx];\n  }\n\n  // dummy axis for formatting the z value\n  var cOpts = extractOpts(trace);\n  var dummyAx = {\n    type: 'linear',\n    range: [cOpts.min, cOpts.max],\n    hoverformat: zhoverformat,\n    _separators: xa._separators,\n    _numFormat: xa._numFormat\n  };\n  var zLabel = Axes.tickText(dummyAx, zVal, 'hover').text;\n  return [Lib.extendFlat(pointData, {\n    index: trace._after2before ? trace._after2before[ny][nx] : [ny, nx],\n    // never let a 2D override 1D type as closest point\n    distance: pointData.maxHoverDistance,\n    spikeDistance: pointData.maxSpikeDistance,\n    x0: x0,\n    x1: x1,\n    y0: y0,\n    y1: y1,\n    xLabelVal: xl,\n    yLabelVal: yl,\n    zLabelVal: zVal,\n    zLabel: zLabel,\n    text: text\n  })];\n};\n\n/***/ }),\n\n/***/ 92165:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2534987__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2534987__(21606),\n  supplyDefaults: __nested_webpack_require_2534987__(76382),\n  calc: __nested_webpack_require_2534987__(90757),\n  plot: __nested_webpack_require_2534987__(50347),\n  colorbar: __nested_webpack_require_2534987__(61243),\n  style: __nested_webpack_require_2534987__(70035),\n  hoverPoints: __nested_webpack_require_2534987__(46248),\n  moduleType: 'trace',\n  name: 'heatmap',\n  basePlotModule: __nested_webpack_require_2534987__(93612),\n  categories: ['cartesian', 'svg', '2dMap', 'showLegend'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 824:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2535560__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2535560__(71828);\nvar INTERPTHRESHOLD = 1e-2;\nvar NEIGHBORSHIFTS = [[-1, 0], [1, 0], [0, -1], [0, 1]];\nfunction correctionOvershoot(maxFractionalChange) {\n  // start with less overshoot, until we know it's converging,\n  // then ramp up the overshoot for faster convergence\n  return 0.5 - 0.25 * Math.min(1, maxFractionalChange * 0.5);\n}\n\n/*\n * interp2d: Fill in missing data from a 2D array using an iterative\n *   poisson equation solver with zero-derivative BC at edges.\n *   Amazingly, this just amounts to repeatedly averaging all the existing\n *   nearest neighbors, at least if we don't take x/y scaling into account,\n *   which is the right approach here where x and y may not even have the\n *   same units.\n *\n * @param {array of arrays} z\n *      The 2D array to fill in. Will be mutated here. Assumed to already be\n *      cleaned, so all entries are numbers except gaps, which are `undefined`.\n * @param {array of arrays} emptyPoints\n *      Each entry [i, j, neighborCount] for empty points z[i][j] and the number\n *      of neighbors that are *not* missing. Assumed to be sorted from most to\n *      least neighbors, as produced by heatmap/find_empties.\n */\nmodule.exports = function interp2d(z, emptyPoints) {\n  var maxFractionalChange = 1;\n  var i;\n\n  // one pass to fill in a starting value for all the empties\n  iterateInterp2d(z, emptyPoints);\n\n  // we're don't need to iterate lone empties - remove them\n  for (i = 0; i < emptyPoints.length; i++) {\n    if (emptyPoints[i][2] < 4) break;\n  }\n  // but don't remove these points from the original array,\n  // we'll use them for masking, so make a copy.\n  emptyPoints = emptyPoints.slice(i);\n  for (i = 0; i < 100 && maxFractionalChange > INTERPTHRESHOLD; i++) {\n    maxFractionalChange = iterateInterp2d(z, emptyPoints, correctionOvershoot(maxFractionalChange));\n  }\n  if (maxFractionalChange > INTERPTHRESHOLD) {\n    Lib.log('interp2d didn\\'t converge quickly', maxFractionalChange);\n  }\n  return z;\n};\nfunction iterateInterp2d(z, emptyPoints, overshoot) {\n  var maxFractionalChange = 0;\n  var thisPt;\n  var i;\n  var j;\n  var p;\n  var q;\n  var neighborShift;\n  var neighborRow;\n  var neighborVal;\n  var neighborCount;\n  var neighborSum;\n  var initialVal;\n  var minNeighbor;\n  var maxNeighbor;\n  for (p = 0; p < emptyPoints.length; p++) {\n    thisPt = emptyPoints[p];\n    i = thisPt[0];\n    j = thisPt[1];\n    initialVal = z[i][j];\n    neighborSum = 0;\n    neighborCount = 0;\n    for (q = 0; q < 4; q++) {\n      neighborShift = NEIGHBORSHIFTS[q];\n      neighborRow = z[i + neighborShift[0]];\n      if (!neighborRow) continue;\n      neighborVal = neighborRow[j + neighborShift[1]];\n      if (neighborVal !== undefined) {\n        if (neighborSum === 0) {\n          minNeighbor = maxNeighbor = neighborVal;\n        } else {\n          minNeighbor = Math.min(minNeighbor, neighborVal);\n          maxNeighbor = Math.max(maxNeighbor, neighborVal);\n        }\n        neighborCount++;\n        neighborSum += neighborVal;\n      }\n    }\n    if (neighborCount === 0) {\n      throw 'iterateInterp2d order is wrong: no defined neighbors';\n    }\n\n    // this is the laplace equation interpolation:\n    // each point is just the average of its neighbors\n    // note that this ignores differential x/y scaling\n    // which I think is the right approach, since we\n    // don't know what that scaling means\n    z[i][j] = neighborSum / neighborCount;\n    if (initialVal === undefined) {\n      if (neighborCount < 4) maxFractionalChange = 1;\n    } else {\n      // we can make large empty regions converge faster\n      // if we overshoot the change vs the previous value\n      z[i][j] = (1 + overshoot) * z[i][j] - overshoot * initialVal;\n      if (maxNeighbor > minNeighbor) {\n        maxFractionalChange = Math.max(maxFractionalChange, Math.abs(z[i][j] - initialVal) / (maxNeighbor - minNeighbor));\n      }\n    }\n  }\n  return maxFractionalChange;\n}\n\n/***/ }),\n\n/***/ 58623:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2539590__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2539590__(71828);\nmodule.exports = function handleHeatmapLabelDefaults(coerce, layout) {\n  coerce('texttemplate');\n  var fontDflt = Lib.extendFlat({}, layout.font, {\n    color: 'auto',\n    size: 'auto'\n  });\n  Lib.coerceFont(coerce, 'textfont', fontDflt);\n};\n\n/***/ }),\n\n/***/ 70769:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2539984__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_2539984__(73972);\nvar isArrayOrTypedArray = (__nested_webpack_require_2539984__(71828).isArrayOrTypedArray);\nmodule.exports = function makeBoundArray(trace, arrayIn, v0In, dvIn, numbricks, ax) {\n  var arrayOut = [];\n  var isContour = Registry.traceIs(trace, 'contour');\n  var isHist = Registry.traceIs(trace, 'histogram');\n  var isGL2D = Registry.traceIs(trace, 'gl2d');\n  var v0;\n  var dv;\n  var i;\n  var isArrayOfTwoItemsOrMore = isArrayOrTypedArray(arrayIn) && arrayIn.length > 1;\n  if (isArrayOfTwoItemsOrMore && !isHist && ax.type !== 'category') {\n    var len = arrayIn.length;\n\n    // given vals are brick centers\n    // hopefully length === numbricks, but use this method even if too few are supplied\n    // and extend it linearly based on the last two points\n    if (len <= numbricks) {\n      // contour plots only want the centers\n      if (isContour || isGL2D) arrayOut = arrayIn.slice(0, numbricks);else if (numbricks === 1) {\n        arrayOut = [arrayIn[0] - 0.5, arrayIn[0] + 0.5];\n      } else {\n        arrayOut = [1.5 * arrayIn[0] - 0.5 * arrayIn[1]];\n        for (i = 1; i < len; i++) {\n          arrayOut.push((arrayIn[i - 1] + arrayIn[i]) * 0.5);\n        }\n        arrayOut.push(1.5 * arrayIn[len - 1] - 0.5 * arrayIn[len - 2]);\n      }\n      if (len < numbricks) {\n        var lastPt = arrayOut[arrayOut.length - 1];\n        var delta = lastPt - arrayOut[arrayOut.length - 2];\n        for (i = len; i < numbricks; i++) {\n          lastPt += delta;\n          arrayOut.push(lastPt);\n        }\n      }\n    } else {\n      // hopefully length === numbricks+1, but do something regardless:\n      // given vals are brick boundaries\n      return isContour ? arrayIn.slice(0, numbricks) :\n      // we must be strict for contours\n      arrayIn.slice(0, numbricks + 1);\n    }\n  } else {\n    var calendar = trace[ax._id.charAt(0) + 'calendar'];\n    if (isHist) {\n      v0 = ax.r2c(v0In, 0, calendar);\n    } else {\n      if (isArrayOrTypedArray(arrayIn) && arrayIn.length === 1) {\n        v0 = arrayIn[0];\n      } else if (v0In === undefined) {\n        v0 = 0;\n      } else {\n        var fn = ax.type === 'log' ? ax.d2c : ax.r2c;\n        v0 = fn(v0In, 0, calendar);\n      }\n    }\n    dv = dvIn || 1;\n    for (i = isContour || isGL2D ? 0 : -0.5; i < numbricks; i++) {\n      arrayOut.push(v0 + dv * i);\n    }\n  }\n  return arrayOut;\n};\n\n/***/ }),\n\n/***/ 50347:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2542450__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2542450__(39898);\nvar tinycolor = __nested_webpack_require_2542450__(84267);\nvar Registry = __nested_webpack_require_2542450__(73972);\nvar Drawing = __nested_webpack_require_2542450__(91424);\nvar Axes = __nested_webpack_require_2542450__(89298);\nvar Lib = __nested_webpack_require_2542450__(71828);\nvar svgTextUtils = __nested_webpack_require_2542450__(63893);\nvar formatLabels = __nested_webpack_require_2542450__(8225);\nvar Color = __nested_webpack_require_2542450__(7901);\nvar extractOpts = (__nested_webpack_require_2542450__(21081).extractOpts);\nvar makeColorScaleFuncFromTrace = (__nested_webpack_require_2542450__(21081).makeColorScaleFuncFromTrace);\nvar xmlnsNamespaces = __nested_webpack_require_2542450__(77922);\nvar alignmentConstants = __nested_webpack_require_2542450__(18783);\nvar LINE_SPACING = alignmentConstants.LINE_SPACING;\nvar labelClass = 'heatmap-label';\nfunction selectLabels(plotGroup) {\n  return plotGroup.selectAll('g.' + labelClass);\n}\nfunction removeLabels(plotGroup) {\n  selectLabels(plotGroup).remove();\n}\nmodule.exports = function (gd, plotinfo, cdheatmaps, heatmapLayer) {\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  Lib.makeTraceGroups(heatmapLayer, cdheatmaps, 'hm').each(function (cd) {\n    var plotGroup = d3.select(this);\n    var cd0 = cd[0];\n    var trace = cd0.trace;\n    var xGap = trace.xgap || 0;\n    var yGap = trace.ygap || 0;\n    var z = cd0.z;\n    var x = cd0.x;\n    var y = cd0.y;\n    var xc = cd0.xCenter;\n    var yc = cd0.yCenter;\n    var isContour = Registry.traceIs(trace, 'contour');\n    var zsmooth = isContour ? 'best' : trace.zsmooth;\n\n    // get z dims\n    var m = z.length;\n    var n = Lib.maxRowLength(z);\n    var xrev = false;\n    var yrev = false;\n    var left, right, temp, top, bottom, i, j, k;\n\n    // TODO: if there are multiple overlapping categorical heatmaps,\n    // or if we allow category sorting, then the categories may not be\n    // sequential... may need to reorder and/or expand z\n\n    // Get edges of png in pixels (xa.c2p() maps axes coordinates to pixel coordinates)\n    // figure out if either axis is reversed (y is usually reversed, in pixel coords)\n    // also clip the image to maximum 50% outside the visible plot area\n    // bigger image lets you pan more naturally, but slows performance.\n    // TODO: use low-resolution images outside the visible plot for panning\n    // these while loops find the first and last brick bounds that are defined\n    // (in case of log of a negative)\n    i = 0;\n    while (left === undefined && i < x.length - 1) {\n      left = xa.c2p(x[i]);\n      i++;\n    }\n    i = x.length - 1;\n    while (right === undefined && i > 0) {\n      right = xa.c2p(x[i]);\n      i--;\n    }\n    if (right < left) {\n      temp = right;\n      right = left;\n      left = temp;\n      xrev = true;\n    }\n    i = 0;\n    while (top === undefined && i < y.length - 1) {\n      top = ya.c2p(y[i]);\n      i++;\n    }\n    i = y.length - 1;\n    while (bottom === undefined && i > 0) {\n      bottom = ya.c2p(y[i]);\n      i--;\n    }\n    if (bottom < top) {\n      temp = top;\n      top = bottom;\n      bottom = temp;\n      yrev = true;\n    }\n\n    // for contours with heatmap fill, we generate the boundaries based on\n    // brick centers but then use the brick edges for drawing the bricks\n    if (isContour) {\n      xc = x;\n      yc = y;\n      x = cd0.xfill;\n      y = cd0.yfill;\n    }\n\n    // make an image that goes at most half a screen off either side, to keep\n    // time reasonable when you zoom in. if zsmooth is true/fast, don't worry\n    // about this, because zooming doesn't increase number of pixels\n    // if zsmooth is best, don't include anything off screen because it takes too long\n    if (zsmooth !== 'fast') {\n      var extra = zsmooth === 'best' ? 0 : 0.5;\n      left = Math.max(-extra * xa._length, left);\n      right = Math.min((1 + extra) * xa._length, right);\n      top = Math.max(-extra * ya._length, top);\n      bottom = Math.min((1 + extra) * ya._length, bottom);\n    }\n    var imageWidth = Math.round(right - left);\n    var imageHeight = Math.round(bottom - top);\n\n    // setup image nodes\n\n    // if image is entirely off-screen, don't even draw it\n    var isOffScreen = imageWidth <= 0 || imageHeight <= 0;\n    if (isOffScreen) {\n      var noImage = plotGroup.selectAll('image').data([]);\n      noImage.exit().remove();\n      removeLabels(plotGroup);\n      return;\n    }\n\n    // generate image data\n\n    var canvasW, canvasH;\n    if (zsmooth === 'fast') {\n      canvasW = n;\n      canvasH = m;\n    } else {\n      canvasW = imageWidth;\n      canvasH = imageHeight;\n    }\n    var canvas = document.createElement('canvas');\n    canvas.width = canvasW;\n    canvas.height = canvasH;\n    var context = canvas.getContext('2d');\n    var sclFunc = makeColorScaleFuncFromTrace(trace, {\n      noNumericCheck: true,\n      returnArray: true\n    });\n\n    // map brick boundaries to image pixels\n    var xpx, ypx;\n    if (zsmooth === 'fast') {\n      xpx = xrev ? function (index) {\n        return n - 1 - index;\n      } : Lib.identity;\n      ypx = yrev ? function (index) {\n        return m - 1 - index;\n      } : Lib.identity;\n    } else {\n      xpx = function (index) {\n        return Lib.constrain(Math.round(xa.c2p(x[index]) - left), 0, imageWidth);\n      };\n      ypx = function (index) {\n        return Lib.constrain(Math.round(ya.c2p(y[index]) - top), 0, imageHeight);\n      };\n    }\n\n    // build the pixel map brick-by-brick\n    // cruise through z-matrix row-by-row\n    // build a brick at each z-matrix value\n    var yi = ypx(0);\n    var yb = [yi, yi];\n    var xbi = xrev ? 0 : 1;\n    var ybi = yrev ? 0 : 1;\n    // for collecting an average luminosity of the heatmap\n    var pixcount = 0;\n    var rcount = 0;\n    var gcount = 0;\n    var bcount = 0;\n    var xb, xi, v, row, c;\n    function setColor(v, pixsize) {\n      if (v !== undefined) {\n        var c = sclFunc(v);\n        c[0] = Math.round(c[0]);\n        c[1] = Math.round(c[1]);\n        c[2] = Math.round(c[2]);\n        pixcount += pixsize;\n        rcount += c[0] * pixsize;\n        gcount += c[1] * pixsize;\n        bcount += c[2] * pixsize;\n        return c;\n      }\n      return [0, 0, 0, 0];\n    }\n    function interpColor(r0, r1, xinterp, yinterp) {\n      var z00 = r0[xinterp.bin0];\n      if (z00 === undefined) return setColor(undefined, 1);\n      var z01 = r0[xinterp.bin1];\n      var z10 = r1[xinterp.bin0];\n      var z11 = r1[xinterp.bin1];\n      var dx = z01 - z00 || 0;\n      var dy = z10 - z00 || 0;\n      var dxy;\n\n      // the bilinear interpolation term needs different calculations\n      // for all the different permutations of missing data\n      // among the neighbors of the main point, to ensure\n      // continuity across brick boundaries.\n      if (z01 === undefined) {\n        if (z11 === undefined) dxy = 0;else if (z10 === undefined) dxy = 2 * (z11 - z00);else dxy = (2 * z11 - z10 - z00) * 2 / 3;\n      } else if (z11 === undefined) {\n        if (z10 === undefined) dxy = 0;else dxy = (2 * z00 - z01 - z10) * 2 / 3;\n      } else if (z10 === undefined) dxy = (2 * z11 - z01 - z00) * 2 / 3;else dxy = z11 + z00 - z01 - z10;\n      return setColor(z00 + xinterp.frac * dx + yinterp.frac * (dy + xinterp.frac * dxy));\n    }\n    if (zsmooth) {\n      // best or fast, works fastest with imageData\n      var pxIndex = 0;\n      var pixels;\n      try {\n        pixels = new Uint8Array(imageWidth * imageHeight * 4);\n      } catch (e) {\n        pixels = new Array(imageWidth * imageHeight * 4);\n      }\n      if (zsmooth === 'best') {\n        var xForPx = xc || x;\n        var yForPx = yc || y;\n        var xPixArray = new Array(xForPx.length);\n        var yPixArray = new Array(yForPx.length);\n        var xinterpArray = new Array(imageWidth);\n        var findInterpX = xc ? findInterpFromCenters : findInterp;\n        var findInterpY = yc ? findInterpFromCenters : findInterp;\n        var yinterp, r0, r1;\n\n        // first make arrays of x and y pixel locations of brick boundaries\n        for (i = 0; i < xForPx.length; i++) xPixArray[i] = Math.round(xa.c2p(xForPx[i]) - left);\n        for (i = 0; i < yForPx.length; i++) yPixArray[i] = Math.round(ya.c2p(yForPx[i]) - top);\n\n        // then make arrays of interpolations\n        // (bin0=closest, bin1=next, frac=fractional dist.)\n        for (i = 0; i < imageWidth; i++) xinterpArray[i] = findInterpX(i, xPixArray);\n\n        // now do the interpolations and fill the png\n        for (j = 0; j < imageHeight; j++) {\n          yinterp = findInterpY(j, yPixArray);\n          r0 = z[yinterp.bin0];\n          r1 = z[yinterp.bin1];\n          for (i = 0; i < imageWidth; i++, pxIndex += 4) {\n            c = interpColor(r0, r1, xinterpArray[i], yinterp);\n            putColor(pixels, pxIndex, c);\n          }\n        }\n      } else {\n        // zsmooth = fast\n        for (j = 0; j < m; j++) {\n          row = z[j];\n          yb = ypx(j);\n          for (i = 0; i < imageWidth; i++) {\n            c = setColor(row[i], 1);\n            pxIndex = (yb * imageWidth + xpx(i)) * 4;\n            putColor(pixels, pxIndex, c);\n          }\n        }\n      }\n      var imageData = context.createImageData(imageWidth, imageHeight);\n      try {\n        imageData.data.set(pixels);\n      } catch (e) {\n        var pxArray = imageData.data;\n        var dlen = pxArray.length;\n        for (j = 0; j < dlen; j++) {\n          pxArray[j] = pixels[j];\n        }\n      }\n      context.putImageData(imageData, 0, 0);\n    } else {\n      // zsmooth = false -> filling potentially large bricks works fastest with fillRect\n      // gaps do not need to be exact integers, but if they *are* we will get\n      // cleaner edges by rounding at least one edge\n      var xGapLeft = Math.floor(xGap / 2);\n      var yGapTop = Math.floor(yGap / 2);\n      for (j = 0; j < m; j++) {\n        row = z[j];\n        yb.reverse();\n        yb[ybi] = ypx(j + 1);\n        if (yb[0] === yb[1] || yb[0] === undefined || yb[1] === undefined) {\n          continue;\n        }\n        xi = xpx(0);\n        xb = [xi, xi];\n        for (i = 0; i < n; i++) {\n          // build one color brick!\n          xb.reverse();\n          xb[xbi] = xpx(i + 1);\n          if (xb[0] === xb[1] || xb[0] === undefined || xb[1] === undefined) {\n            continue;\n          }\n          v = row[i];\n          c = setColor(v, (xb[1] - xb[0]) * (yb[1] - yb[0]));\n          context.fillStyle = 'rgba(' + c.join(',') + ')';\n          context.fillRect(xb[0] + xGapLeft, yb[0] + yGapTop, xb[1] - xb[0] - xGap, yb[1] - yb[0] - yGap);\n        }\n      }\n    }\n    rcount = Math.round(rcount / pixcount);\n    gcount = Math.round(gcount / pixcount);\n    bcount = Math.round(bcount / pixcount);\n    var avgColor = tinycolor('rgb(' + rcount + ',' + gcount + ',' + bcount + ')');\n    gd._hmpixcount = (gd._hmpixcount || 0) + pixcount;\n    gd._hmlumcount = (gd._hmlumcount || 0) + pixcount * avgColor.getLuminance();\n    var image3 = plotGroup.selectAll('image').data(cd);\n    image3.enter().append('svg:image').attr({\n      xmlns: xmlnsNamespaces.svg,\n      preserveAspectRatio: 'none'\n    });\n    image3.attr({\n      height: imageHeight,\n      width: imageWidth,\n      x: left,\n      y: top,\n      'xlink:href': canvas.toDataURL('image/png')\n    });\n    removeLabels(plotGroup);\n    var texttemplate = trace.texttemplate;\n    if (texttemplate) {\n      // dummy axis for formatting the z value\n      var cOpts = extractOpts(trace);\n      var dummyAx = {\n        type: 'linear',\n        range: [cOpts.min, cOpts.max],\n        _separators: xa._separators,\n        _numFormat: xa._numFormat\n      };\n      var aHistogram2dContour = trace.type === 'histogram2dcontour';\n      var aContour = trace.type === 'contour';\n      var iStart = aContour ? 1 : 0;\n      var iStop = aContour ? m - 1 : m;\n      var jStart = aContour ? 1 : 0;\n      var jStop = aContour ? n - 1 : n;\n      var textData = [];\n      for (i = iStart; i < iStop; i++) {\n        var yVal;\n        if (aContour) {\n          yVal = cd0.y[i];\n        } else if (aHistogram2dContour) {\n          if (i === 0 || i === m - 1) continue;\n          yVal = cd0.y[i];\n        } else if (cd0.yCenter) {\n          yVal = cd0.yCenter[i];\n        } else {\n          if (i + 1 === m && cd0.y[i + 1] === undefined) continue;\n          yVal = (cd0.y[i] + cd0.y[i + 1]) / 2;\n        }\n        var _y = Math.round(ya.c2p(yVal));\n        if (0 > _y || _y > ya._length) continue;\n        for (j = jStart; j < jStop; j++) {\n          var xVal;\n          if (aContour) {\n            xVal = cd0.x[j];\n          } else if (aHistogram2dContour) {\n            if (j === 0 || j === n - 1) continue;\n            xVal = cd0.x[j];\n          } else if (cd0.xCenter) {\n            xVal = cd0.xCenter[j];\n          } else {\n            if (j + 1 === n && cd0.x[j + 1] === undefined) continue;\n            xVal = (cd0.x[j] + cd0.x[j + 1]) / 2;\n          }\n          var _x = Math.round(xa.c2p(xVal));\n          if (0 > _x || _x > xa._length) continue;\n          var obj = formatLabels({\n            x: xVal,\n            y: yVal\n          }, trace, gd._fullLayout);\n          obj.x = xVal;\n          obj.y = yVal;\n          var zVal = cd0.z[i][j];\n          if (zVal === undefined) {\n            obj.z = '';\n            obj.zLabel = '';\n          } else {\n            obj.z = zVal;\n            obj.zLabel = Axes.tickText(dummyAx, zVal, 'hover').text;\n          }\n          var theText = cd0.text && cd0.text[i] && cd0.text[i][j];\n          if (theText === undefined || theText === false) theText = '';\n          obj.text = theText;\n          var _t = Lib.texttemplateString(texttemplate, obj, gd._fullLayout._d3locale, obj, trace._meta || {});\n          if (!_t) continue;\n          var lines = _t.split('<br>');\n          var nL = lines.length;\n          var nC = 0;\n          for (k = 0; k < nL; k++) {\n            nC = Math.max(nC, lines[k].length);\n          }\n          textData.push({\n            l: nL,\n            // number of lines\n            c: nC,\n            // maximum number of chars in a line\n            t: _t,\n            // text\n            x: _x,\n            y: _y,\n            z: zVal\n          });\n        }\n      }\n      var font = trace.textfont;\n      var fontFamily = font.family;\n      var fontSize = font.size;\n      var globalFontSize = gd._fullLayout.font.size;\n      if (!fontSize || fontSize === 'auto') {\n        var minW = Infinity;\n        var minH = Infinity;\n        var maxL = 0;\n        var maxC = 0;\n        for (k = 0; k < textData.length; k++) {\n          var d = textData[k];\n          maxL = Math.max(maxL, d.l);\n          maxC = Math.max(maxC, d.c);\n          if (k < textData.length - 1) {\n            var nextD = textData[k + 1];\n            var dx = Math.abs(nextD.x - d.x);\n            var dy = Math.abs(nextD.y - d.y);\n            if (dx) minW = Math.min(minW, dx);\n            if (dy) minH = Math.min(minH, dy);\n          }\n        }\n        if (!isFinite(minW) || !isFinite(minH)) {\n          fontSize = globalFontSize;\n        } else {\n          minW -= xGap;\n          minH -= yGap;\n          minW /= maxC;\n          minH /= maxL;\n          minW /= LINE_SPACING / 2;\n          minH /= LINE_SPACING;\n          fontSize = Math.min(Math.floor(minW), Math.floor(minH), globalFontSize);\n        }\n      }\n      if (fontSize <= 0 || !isFinite(fontSize)) return;\n      var xFn = function (d) {\n        return d.x;\n      };\n      var yFn = function (d) {\n        return d.y - fontSize * (d.l * LINE_SPACING / 2 - 1);\n      };\n      var labels = selectLabels(plotGroup).data(textData);\n      labels.enter().append('g').classed(labelClass, 1).append('text').attr('text-anchor', 'middle').each(function (d) {\n        var thisLabel = d3.select(this);\n        var fontColor = font.color;\n        if (!fontColor || fontColor === 'auto') {\n          fontColor = Color.contrast('rgba(' + sclFunc(d.z).join() + ')');\n        }\n        thisLabel.attr('data-notex', 1).call(svgTextUtils.positionText, xFn(d), yFn(d)).call(Drawing.font, fontFamily, fontSize, fontColor).text(d.t).call(svgTextUtils.convertToTspans, gd);\n      });\n    }\n  });\n};\n\n// get interpolated bin value. Returns {bin0:closest bin, frac:fractional dist to next, bin1:next bin}\nfunction findInterp(pixel, pixArray) {\n  var maxBin = pixArray.length - 2;\n  var bin = Lib.constrain(Lib.findBin(pixel, pixArray), 0, maxBin);\n  var pix0 = pixArray[bin];\n  var pix1 = pixArray[bin + 1];\n  var interp = Lib.constrain(bin + (pixel - pix0) / (pix1 - pix0) - 0.5, 0, maxBin);\n  var bin0 = Math.round(interp);\n  var frac = Math.abs(interp - bin0);\n  if (!interp || interp === maxBin || !frac) {\n    return {\n      bin0: bin0,\n      bin1: bin0,\n      frac: 0\n    };\n  }\n  return {\n    bin0: bin0,\n    frac: frac,\n    bin1: Math.round(bin0 + frac / (interp - bin0))\n  };\n}\nfunction findInterpFromCenters(pixel, centerPixArray) {\n  var maxBin = centerPixArray.length - 1;\n  var bin = Lib.constrain(Lib.findBin(pixel, centerPixArray), 0, maxBin);\n  var pix0 = centerPixArray[bin];\n  var pix1 = centerPixArray[bin + 1];\n  var frac = (pixel - pix0) / (pix1 - pix0) || 0;\n  if (frac <= 0) {\n    return {\n      bin0: bin,\n      bin1: bin,\n      frac: 0\n    };\n  }\n  if (frac < 0.5) {\n    return {\n      bin0: bin,\n      bin1: bin + 1,\n      frac: frac\n    };\n  }\n  return {\n    bin0: bin + 1,\n    bin1: bin,\n    frac: 1 - frac\n  };\n}\nfunction putColor(pixels, pxIndex, c) {\n  pixels[pxIndex] = c[0];\n  pixels[pxIndex + 1] = c[1];\n  pixels[pxIndex + 2] = c[2];\n  pixels[pxIndex + 3] = Math.round(c[3] * 255);\n}\n\n/***/ }),\n\n/***/ 70035:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2559878__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2559878__(39898);\nmodule.exports = function style(gd) {\n  d3.select(gd).selectAll('.hm image').style('opacity', function (d) {\n    return d.trace.opacity;\n  });\n};\n\n/***/ }),\n\n/***/ 49901:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function handleStyleDefaults(traceIn, traceOut, coerce) {\n  var zsmooth = coerce('zsmooth');\n  if (zsmooth === false) {\n    // ensure that xgap and ygap are coerced only when zsmooth allows them to have an effect.\n    coerce('xgap');\n    coerce('ygap');\n  }\n  coerce('zhoverformat');\n};\n\n/***/ }),\n\n/***/ 67684:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2560548__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_2560548__(92770);\nvar Lib = __nested_webpack_require_2560548__(71828);\nvar Registry = __nested_webpack_require_2560548__(73972);\nmodule.exports = function handleXYZDefaults(traceIn, traceOut, coerce, layout, xName, yName) {\n  var z = coerce('z');\n  xName = xName || 'x';\n  yName = yName || 'y';\n  var x, y;\n  if (z === undefined || !z.length) return 0;\n  if (Lib.isArray1D(traceIn.z)) {\n    x = coerce(xName);\n    y = coerce(yName);\n    var xlen = Lib.minRowLength(x);\n    var ylen = Lib.minRowLength(y);\n\n    // column z must be accompanied by xName and yName arrays\n    if (xlen === 0 || ylen === 0) return 0;\n    traceOut._length = Math.min(xlen, ylen, z.length);\n  } else {\n    x = coordDefaults(xName, coerce);\n    y = coordDefaults(yName, coerce);\n\n    // TODO put z validation elsewhere\n    if (!isValidZ(z)) return 0;\n    coerce('transpose');\n    traceOut._length = null;\n  }\n  if (traceIn.type === 'heatmapgl') return true; // skip calendars until we handle them in those traces\n\n  var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults');\n  handleCalendarDefaults(traceIn, traceOut, [xName, yName], layout);\n  return true;\n};\nfunction coordDefaults(coordStr, coerce) {\n  var coord = coerce(coordStr);\n  var coordType = coord ? coerce(coordStr + 'type', 'array') : 'scaled';\n  if (coordType === 'scaled') {\n    coerce(coordStr + '0');\n    coerce('d' + coordStr);\n  }\n  return coord;\n}\nfunction isValidZ(z) {\n  var allRowsAreArrays = true;\n  var oneRowIsFilled = false;\n  var hasOneNumber = false;\n  var zi;\n\n  /*\n   * Without this step:\n   *\n   * hasOneNumber = false breaks contour but not heatmap\n   * allRowsAreArrays = false breaks contour but not heatmap\n   * oneRowIsFilled = false breaks both\n   */\n\n  for (var i = 0; i < z.length; i++) {\n    zi = z[i];\n    if (!Lib.isArrayOrTypedArray(zi)) {\n      allRowsAreArrays = false;\n      break;\n    }\n    if (zi.length > 0) oneRowIsFilled = true;\n    for (var j = 0; j < zi.length; j++) {\n      if (isNumeric(zi[j])) {\n        hasOneNumber = true;\n        break;\n      }\n    }\n  }\n  return allRowsAreArrays && oneRowIsFilled && hasOneNumber;\n}\n\n/***/ }),\n\n/***/ 16063:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2562799__) {\n\n\"use strict\";\n\n\nvar heatmapAttrs = __nested_webpack_require_2562799__(21606);\nvar colorScaleAttrs = __nested_webpack_require_2562799__(50693);\nvar extendFlat = (__nested_webpack_require_2562799__(1426).extendFlat);\nvar overrideAll = (__nested_webpack_require_2562799__(30962).overrideAll);\nvar commonList = ['z', 'x', 'x0', 'dx', 'y', 'y0', 'dy', 'text', 'transpose', 'xtype', 'ytype'];\nvar attrs = {};\nfor (var i = 0; i < commonList.length; i++) {\n  var k = commonList[i];\n  attrs[k] = heatmapAttrs[k];\n}\nattrs.zsmooth = {\n  valType: 'enumerated',\n  values: ['fast', false],\n  dflt: 'fast',\n  editType: 'calc'\n};\nextendFlat(attrs, colorScaleAttrs('', {\n  cLetter: 'z',\n  autoColorDflt: false\n}));\nmodule.exports = overrideAll(attrs, 'calc', 'nested');\n\n/***/ }),\n\n/***/ 59560:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2563591__) {\n\n\"use strict\";\n\n\nvar createHeatmap2D = (__nested_webpack_require_2563591__(9330).gl_heatmap2d);\nvar Axes = __nested_webpack_require_2563591__(89298);\nvar str2RGBArray = __nested_webpack_require_2563591__(78614);\nfunction Heatmap(scene, uid) {\n  this.scene = scene;\n  this.uid = uid;\n  this.type = 'heatmapgl';\n  this.name = '';\n  this.hoverinfo = 'all';\n  this.xData = [];\n  this.yData = [];\n  this.zData = [];\n  this.textLabels = [];\n  this.idToIndex = [];\n  this.bounds = [0, 0, 0, 0];\n  this.options = {\n    zsmooth: 'fast',\n    z: [],\n    x: [],\n    y: [],\n    shape: [0, 0],\n    colorLevels: [0],\n    colorValues: [0, 0, 0, 1]\n  };\n  this.heatmap = createHeatmap2D(scene.glplot, this.options);\n  this.heatmap._trace = this;\n}\nvar proto = Heatmap.prototype;\nproto.handlePick = function (pickResult) {\n  var options = this.options;\n  var shape = options.shape;\n  var index = pickResult.pointId;\n  var xIndex = index % shape[0];\n  var yIndex = Math.floor(index / shape[0]);\n  var zIndex = index;\n  return {\n    trace: this,\n    dataCoord: pickResult.dataCoord,\n    traceCoord: [options.x[xIndex], options.y[yIndex], options.z[zIndex]],\n    textLabel: this.textLabels[index],\n    name: this.name,\n    pointIndex: [yIndex, xIndex],\n    hoverinfo: this.hoverinfo\n  };\n};\nproto.update = function (fullTrace, calcTrace) {\n  var calcPt = calcTrace[0];\n  this.index = fullTrace.index;\n  this.name = fullTrace.name;\n  this.hoverinfo = fullTrace.hoverinfo;\n\n  // convert z from 2D -> 1D\n  var z = calcPt.z;\n  this.options.z = [].concat.apply([], z);\n  var rowLen = z[0].length;\n  var colLen = z.length;\n  this.options.shape = [rowLen, colLen];\n  this.options.x = calcPt.x;\n  this.options.y = calcPt.y;\n  this.options.zsmooth = fullTrace.zsmooth;\n  var colorOptions = convertColorscale(fullTrace);\n  this.options.colorLevels = colorOptions.colorLevels;\n  this.options.colorValues = colorOptions.colorValues;\n\n  // convert text from 2D -> 1D\n  this.textLabels = [].concat.apply([], fullTrace.text);\n  this.heatmap.update(this.options);\n  var xa = this.scene.xaxis;\n  var ya = this.scene.yaxis;\n  var xOpts, yOpts;\n  if (fullTrace.zsmooth === false) {\n    // increase padding for discretised heatmap as suggested by Louise Ord\n    xOpts = {\n      ppad: calcPt.x[1] - calcPt.x[0]\n    };\n    yOpts = {\n      ppad: calcPt.y[1] - calcPt.y[0]\n    };\n  }\n  fullTrace._extremes[xa._id] = Axes.findExtremes(xa, calcPt.x, xOpts);\n  fullTrace._extremes[ya._id] = Axes.findExtremes(ya, calcPt.y, yOpts);\n};\nproto.dispose = function () {\n  this.heatmap.dispose();\n};\nfunction convertColorscale(fullTrace) {\n  var scl = fullTrace.colorscale;\n  var zmin = fullTrace.zmin;\n  var zmax = fullTrace.zmax;\n  var N = scl.length;\n  var domain = new Array(N);\n  var range = new Array(4 * N);\n  for (var i = 0; i < N; i++) {\n    var si = scl[i];\n    var color = str2RGBArray(si[1]);\n    domain[i] = zmin + si[0] * (zmax - zmin);\n    for (var j = 0; j < 4; j++) {\n      range[4 * i + j] = color[j];\n    }\n  }\n  return {\n    colorLevels: domain,\n    colorValues: range\n  };\n}\nfunction createHeatmap(scene, fullTrace, calcTrace) {\n  var plot = new Heatmap(scene, fullTrace.uid);\n  plot.update(fullTrace, calcTrace);\n  return plot;\n}\nmodule.exports = createHeatmap;\n\n/***/ }),\n\n/***/ 19600:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2566873__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2566873__(71828);\nvar handleXYZDefaults = __nested_webpack_require_2566873__(67684);\nvar colorscaleDefaults = __nested_webpack_require_2566873__(1586);\nvar attributes = __nested_webpack_require_2566873__(16063);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var validData = handleXYZDefaults(traceIn, traceOut, coerce, layout);\n  if (!validData) {\n    traceOut.visible = false;\n    return;\n  }\n  coerce('text');\n  coerce('zsmooth');\n  colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n    prefix: '',\n    cLetter: 'z'\n  });\n};\n\n/***/ }),\n\n/***/ 3325:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2567637__) {\n\n\"use strict\";\n\n\nvar deprecationWarning = ['*heatmapgl* trace is deprecated!', 'Please consider switching to the *heatmap* or *image* trace types.', 'Alternatively you could contribute/sponsor rewriting this trace type', 'based on cartesian features and using regl framework.'].join(' ');\nmodule.exports = {\n  attributes: __nested_webpack_require_2567637__(16063),\n  supplyDefaults: __nested_webpack_require_2567637__(19600),\n  colorbar: __nested_webpack_require_2567637__(61243),\n  calc: __nested_webpack_require_2567637__(90757),\n  plot: __nested_webpack_require_2567637__(59560),\n  moduleType: 'trace',\n  name: 'heatmapgl',\n  basePlotModule: __nested_webpack_require_2567637__(4796),\n  categories: ['gl', 'gl2d', '2dMap'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 7745:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2568384__) {\n\n\"use strict\";\n\n\nvar barAttrs = __nested_webpack_require_2568384__(1486);\nvar axisHoverFormat = (__nested_webpack_require_2568384__(12663).axisHoverFormat);\nvar hovertemplateAttrs = (__nested_webpack_require_2568384__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_2568384__(5386)/* .texttemplateAttrs */ .s);\nvar fontAttrs = __nested_webpack_require_2568384__(41940);\nvar makeBinAttrs = __nested_webpack_require_2568384__(17656);\nvar constants = __nested_webpack_require_2568384__(72406);\nvar extendFlat = (__nested_webpack_require_2568384__(1426).extendFlat);\nmodule.exports = {\n  x: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  y: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  text: extendFlat({}, barAttrs.text, {}),\n  hovertext: extendFlat({}, barAttrs.hovertext, {}),\n  orientation: barAttrs.orientation,\n  histfunc: {\n    valType: 'enumerated',\n    values: ['count', 'sum', 'avg', 'min', 'max'],\n    dflt: 'count',\n    editType: 'calc'\n  },\n  histnorm: {\n    valType: 'enumerated',\n    values: ['', 'percent', 'probability', 'density', 'probability density'],\n    dflt: '',\n    editType: 'calc'\n  },\n  cumulative: {\n    enabled: {\n      valType: 'boolean',\n      dflt: false,\n      editType: 'calc'\n    },\n    direction: {\n      valType: 'enumerated',\n      values: ['increasing', 'decreasing'],\n      dflt: 'increasing',\n      editType: 'calc'\n    },\n    currentbin: {\n      valType: 'enumerated',\n      values: ['include', 'exclude', 'half'],\n      dflt: 'include',\n      editType: 'calc'\n    },\n    editType: 'calc'\n  },\n  nbinsx: {\n    valType: 'integer',\n    min: 0,\n    dflt: 0,\n    editType: 'calc'\n  },\n  xbins: makeBinAttrs('x', true),\n  nbinsy: {\n    valType: 'integer',\n    min: 0,\n    dflt: 0,\n    editType: 'calc'\n  },\n  ybins: makeBinAttrs('y', true),\n  autobinx: {\n    valType: 'boolean',\n    dflt: null,\n    editType: 'calc'\n  },\n  autobiny: {\n    valType: 'boolean',\n    dflt: null,\n    editType: 'calc'\n  },\n  bingroup: {\n    valType: 'string',\n    dflt: '',\n    editType: 'calc'\n  },\n  hovertemplate: hovertemplateAttrs({}, {\n    keys: constants.eventDataKeys\n  }),\n  texttemplate: texttemplateAttrs({\n    arrayOk: false,\n    editType: 'plot'\n  }, {\n    keys: ['label', 'value']\n  }),\n  textposition: extendFlat({}, barAttrs.textposition, {\n    arrayOk: false\n  }),\n  textfont: fontAttrs({\n    arrayOk: false,\n    editType: 'plot',\n    colorEditType: 'style'\n  }),\n  outsidetextfont: fontAttrs({\n    arrayOk: false,\n    editType: 'plot',\n    colorEditType: 'style'\n  }),\n  insidetextfont: fontAttrs({\n    arrayOk: false,\n    editType: 'plot',\n    colorEditType: 'style'\n  }),\n  insidetextanchor: barAttrs.insidetextanchor,\n  textangle: barAttrs.textangle,\n  cliponaxis: barAttrs.cliponaxis,\n  constraintext: barAttrs.constraintext,\n  marker: barAttrs.marker,\n  offsetgroup: barAttrs.offsetgroup,\n  alignmentgroup: barAttrs.alignmentgroup,\n  selected: barAttrs.selected,\n  unselected: barAttrs.unselected,\n  _deprecated: {\n    bardir: barAttrs._deprecated.bardir\n  }\n};\n\n/***/ }),\n\n/***/ 42174:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function doAvg(size, counts) {\n  var nMax = size.length;\n  var total = 0;\n  for (var i = 0; i < nMax; i++) {\n    if (counts[i]) {\n      size[i] /= counts[i];\n      total += size[i];\n    } else size[i] = null;\n  }\n  return total;\n};\n\n/***/ }),\n\n/***/ 17656:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function makeBinAttrs(axLetter, match) {\n  return {\n    start: {\n      valType: 'any',\n      // for date axes\n      editType: 'calc'\n    },\n    end: {\n      valType: 'any',\n      // for date axes\n      editType: 'calc'\n    },\n    size: {\n      valType: 'any',\n      // for date axes\n      editType: 'calc'\n    },\n    editType: 'calc'\n  };\n};\n\n/***/ }),\n\n/***/ 59575:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2572269__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_2572269__(92770);\nmodule.exports = {\n  count: function (n, i, size) {\n    size[n]++;\n    return 1;\n  },\n  sum: function (n, i, size, counterData) {\n    var v = counterData[i];\n    if (isNumeric(v)) {\n      v = Number(v);\n      size[n] += v;\n      return v;\n    }\n    return 0;\n  },\n  avg: function (n, i, size, counterData, counts) {\n    var v = counterData[i];\n    if (isNumeric(v)) {\n      v = Number(v);\n      size[n] += v;\n      counts[n]++;\n    }\n    return 0;\n  },\n  min: function (n, i, size, counterData) {\n    var v = counterData[i];\n    if (isNumeric(v)) {\n      v = Number(v);\n      if (!isNumeric(size[n])) {\n        size[n] = v;\n        return v;\n      } else if (size[n] > v) {\n        var delta = v - size[n];\n        size[n] = v;\n        return delta;\n      }\n    }\n    return 0;\n  },\n  max: function (n, i, size, counterData) {\n    var v = counterData[i];\n    if (isNumeric(v)) {\n      v = Number(v);\n      if (!isNumeric(size[n])) {\n        size[n] = v;\n        return v;\n      } else if (size[n] < v) {\n        var delta = v - size[n];\n        size[n] = v;\n        return delta;\n      }\n    }\n    return 0;\n  }\n};\n\n/***/ }),\n\n/***/ 40965:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2573543__) {\n\n\"use strict\";\n\n\nvar numConstants = __nested_webpack_require_2573543__(50606);\nvar oneYear = numConstants.ONEAVGYEAR;\nvar oneMonth = numConstants.ONEAVGMONTH;\nvar oneDay = numConstants.ONEDAY;\nvar oneHour = numConstants.ONEHOUR;\nvar oneMin = numConstants.ONEMIN;\nvar oneSec = numConstants.ONESEC;\nvar tickIncrement = (__nested_webpack_require_2573543__(89298).tickIncrement);\n\n/*\n * make a function that will find rounded bin edges\n * @param {number} leftGap: how far from the left edge of any bin is the closest data value?\n * @param {number} rightGap: how far from the right edge of any bin is the closest data value?\n * @param {Array[number]} binEdges: the actual edge values used in binning\n * @param {object} pa: the position axis\n * @param {string} calendar: the data calendar\n *\n * @return {function(v, isRightEdge)}:\n *   find the start (isRightEdge is falsy) or end (truthy) label value for a bin edge `v`\n */\nmodule.exports = function getBinSpanLabelRound(leftGap, rightGap, binEdges, pa, calendar) {\n  // the rounding digit is the largest digit that changes in *all* of 4 regions:\n  // - inside the rightGap before binEdges[0] (shifted 10% to the left)\n  // - inside the leftGap after binEdges[0] (expanded by 10% of rightGap on each end)\n  // - same for binEdges[1]\n  var dv0 = -1.1 * rightGap;\n  var dv1 = -0.1 * rightGap;\n  var dv2 = leftGap - dv1;\n  var edge0 = binEdges[0];\n  var edge1 = binEdges[1];\n  var leftDigit = Math.min(biggestDigitChanged(edge0 + dv1, edge0 + dv2, pa, calendar), biggestDigitChanged(edge1 + dv1, edge1 + dv2, pa, calendar));\n  var rightDigit = Math.min(biggestDigitChanged(edge0 + dv0, edge0 + dv1, pa, calendar), biggestDigitChanged(edge1 + dv0, edge1 + dv1, pa, calendar));\n\n  // normally we try to make the label for the right edge different from\n  // the left edge label, so it's unambiguous which bin gets data on the edge.\n  // but if this results in more than 3 extra digits (or for dates, more than\n  // 2 fields ie hr&min or min&sec, which is 3600x), it'll be more clutter than\n  // useful so keep the label cleaner instead\n  var digit, disambiguateEdges;\n  if (leftDigit > rightDigit && rightDigit < Math.abs(edge1 - edge0) / 4000) {\n    digit = leftDigit;\n    disambiguateEdges = false;\n  } else {\n    digit = Math.min(leftDigit, rightDigit);\n    disambiguateEdges = true;\n  }\n  if (pa.type === 'date' && digit > oneDay) {\n    var dashExclude = digit === oneYear ? 1 : 6;\n    var increment = digit === oneYear ? 'M12' : 'M1';\n    return function (v, isRightEdge) {\n      var dateStr = pa.c2d(v, oneYear, calendar);\n      var dashPos = dateStr.indexOf('-', dashExclude);\n      if (dashPos > 0) dateStr = dateStr.substr(0, dashPos);\n      var roundedV = pa.d2c(dateStr, 0, calendar);\n      if (roundedV < v) {\n        var nextV = tickIncrement(roundedV, increment, false, calendar);\n        if ((roundedV + nextV) / 2 < v + leftGap) roundedV = nextV;\n      }\n      if (isRightEdge && disambiguateEdges) {\n        return tickIncrement(roundedV, increment, true, calendar);\n      }\n      return roundedV;\n    };\n  }\n  return function (v, isRightEdge) {\n    var roundedV = digit * Math.round(v / digit);\n    // if we rounded down and we could round up and still be < leftGap\n    // (or what leftGap values round to), do that\n    if (roundedV + digit / 10 < v && roundedV + digit * 0.9 < v + leftGap) {\n      roundedV += digit;\n    }\n    // finally for the right edge back off one digit - but only if we can do that\n    // and not clip off any data that's potentially in the bin\n    if (isRightEdge && disambiguateEdges) {\n      roundedV -= digit;\n    }\n    return roundedV;\n  };\n};\n\n/*\n * Find the largest digit that changes within a (calcdata) region [v1, v2]\n * if dates, \"digit\" means date/time part when it's bigger than a second\n * returns the unit value to round to this digit, eg 0.01 to round to hundredths, or\n * 100 to round to hundreds. returns oneMonth or oneYear for month or year rounding,\n * so that Math.min will work, rather than 'M1' and 'M12'\n */\nfunction biggestDigitChanged(v1, v2, pa, calendar) {\n  // are we crossing zero? can't say anything.\n  // in principle this doesn't apply to dates but turns out this doesn't matter.\n  if (v1 * v2 <= 0) return Infinity;\n  var dv = Math.abs(v2 - v1);\n  var isDate = pa.type === 'date';\n  var digit = biggestGuaranteedDigitChanged(dv, isDate);\n  // see if a larger digit also changed\n  for (var i = 0; i < 10; i++) {\n    // numbers: next digit needs to be >10x but <100x then gets rounded down.\n    // dates: next digit can be as much as 60x (then rounded down)\n    var nextDigit = biggestGuaranteedDigitChanged(digit * 80, isDate);\n    // if we get to years, the chain stops\n    if (digit === nextDigit) break;\n    if (didDigitChange(nextDigit, v1, v2, isDate, pa, calendar)) digit = nextDigit;else break;\n  }\n  return digit;\n}\n\n/*\n * Find the largest digit that *definitely* changes in a region [v, v + dv] for any v\n * for nonuniform date regions (months/years) pick the largest\n */\nfunction biggestGuaranteedDigitChanged(dv, isDate) {\n  if (isDate && dv > oneSec) {\n    // this is supposed to be the biggest *guaranteed* change\n    // so compare to the longest month and year across any calendar,\n    // and we'll iterate back up later\n    // note: does not support rounding larger than one year. We could add\n    // that if anyone wants it, but seems unusual and not strictly necessary.\n    if (dv > oneDay) {\n      if (dv > oneYear * 1.1) return oneYear;\n      if (dv > oneMonth * 1.1) return oneMonth;\n      return oneDay;\n    }\n    if (dv > oneHour) return oneHour;\n    if (dv > oneMin) return oneMin;\n    return oneSec;\n  }\n  return Math.pow(10, Math.floor(Math.log(dv) / Math.LN10));\n}\nfunction didDigitChange(digit, v1, v2, isDate, pa, calendar) {\n  if (isDate && digit > oneDay) {\n    var dateParts1 = dateParts(v1, pa, calendar);\n    var dateParts2 = dateParts(v2, pa, calendar);\n    var parti = digit === oneYear ? 0 : 1;\n    return dateParts1[parti] !== dateParts2[parti];\n  }\n  return Math.floor(v2 / digit) - Math.floor(v1 / digit) > 0.1;\n}\nfunction dateParts(v, pa, calendar) {\n  var parts = pa.c2d(v, oneYear, calendar).split('-');\n  if (parts[0] === '') {\n    parts.unshift();\n    parts[0] = '-' + parts[0];\n  }\n  return parts;\n}\n\n/***/ }),\n\n/***/ 72138:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2579871__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_2579871__(92770);\nvar Lib = __nested_webpack_require_2579871__(71828);\nvar Registry = __nested_webpack_require_2579871__(73972);\nvar Axes = __nested_webpack_require_2579871__(89298);\nvar arraysToCalcdata = __nested_webpack_require_2579871__(75341);\nvar binFunctions = __nested_webpack_require_2579871__(59575);\nvar normFunctions = __nested_webpack_require_2579871__(36362);\nvar doAvg = __nested_webpack_require_2579871__(42174);\nvar getBinSpanLabelRound = __nested_webpack_require_2579871__(40965);\nfunction calc(gd, trace) {\n  var pos = [];\n  var size = [];\n  var isHorizontal = trace.orientation === 'h';\n  var pa = Axes.getFromId(gd, isHorizontal ? trace.yaxis : trace.xaxis);\n  var mainData = isHorizontal ? 'y' : 'x';\n  var counterData = {\n    x: 'y',\n    y: 'x'\n  }[mainData];\n  var calendar = trace[mainData + 'calendar'];\n  var cumulativeSpec = trace.cumulative;\n  var i;\n  var binsAndPos = calcAllAutoBins(gd, trace, pa, mainData);\n  var binSpec = binsAndPos[0];\n  var pos0 = binsAndPos[1];\n  var nonuniformBins = typeof binSpec.size === 'string';\n  var binEdges = [];\n  var bins = nonuniformBins ? binEdges : binSpec;\n  // make the empty bin array\n  var inc = [];\n  var counts = [];\n  var inputPoints = [];\n  var total = 0;\n  var norm = trace.histnorm;\n  var func = trace.histfunc;\n  var densityNorm = norm.indexOf('density') !== -1;\n  var i2, binEnd, n;\n  if (cumulativeSpec.enabled && densityNorm) {\n    // we treat \"cumulative\" like it means \"integral\" if you use a density norm,\n    // which in the end means it's the same as without \"density\"\n    norm = norm.replace(/ ?density$/, '');\n    densityNorm = false;\n  }\n  var extremeFunc = func === 'max' || func === 'min';\n  var sizeInit = extremeFunc ? null : 0;\n  var binFunc = binFunctions.count;\n  var normFunc = normFunctions[norm];\n  var isAvg = false;\n  var pr2c = function (v) {\n    return pa.r2c(v, 0, calendar);\n  };\n  var rawCounterData;\n  if (Lib.isArrayOrTypedArray(trace[counterData]) && func !== 'count') {\n    rawCounterData = trace[counterData];\n    isAvg = func === 'avg';\n    binFunc = binFunctions[func];\n  }\n\n  // create the bins (and any extra arrays needed)\n  // assume more than 1e6 bins is an error, so we don't crash the browser\n  i = pr2c(binSpec.start);\n\n  // decrease end a little in case of rounding errors\n  binEnd = pr2c(binSpec.end) + (i - Axes.tickIncrement(i, binSpec.size, false, calendar)) / 1e6;\n  while (i < binEnd && pos.length < 1e6) {\n    i2 = Axes.tickIncrement(i, binSpec.size, false, calendar);\n    pos.push((i + i2) / 2);\n    size.push(sizeInit);\n    inputPoints.push([]);\n    // nonuniform bins (like months) we need to search,\n    // rather than straight calculate the bin we're in\n    binEdges.push(i);\n    // nonuniform bins also need nonuniform normalization factors\n    if (densityNorm) inc.push(1 / (i2 - i));\n    if (isAvg) counts.push(0);\n    // break to avoid infinite loops\n    if (i2 <= i) break;\n    i = i2;\n  }\n  binEdges.push(i);\n\n  // for date axes we need bin bounds to be calcdata. For nonuniform bins\n  // we already have this, but uniform with start/end/size they're still strings.\n  if (!nonuniformBins && pa.type === 'date') {\n    bins = {\n      start: pr2c(bins.start),\n      end: pr2c(bins.end),\n      size: bins.size\n    };\n  }\n\n  // stash left and right gaps by group\n  if (!gd._fullLayout._roundFnOpts) gd._fullLayout._roundFnOpts = {};\n  var groupName = trace['_' + mainData + 'bingroup'];\n  var roundFnOpts = {\n    leftGap: Infinity,\n    rightGap: Infinity\n  };\n  if (groupName) {\n    if (!gd._fullLayout._roundFnOpts[groupName]) gd._fullLayout._roundFnOpts[groupName] = roundFnOpts;\n    roundFnOpts = gd._fullLayout._roundFnOpts[groupName];\n  }\n\n  // bin the data\n  // and make histogram-specific pt-number-to-cd-index map object\n  var nMax = size.length;\n  var uniqueValsPerBin = true;\n  var leftGap = roundFnOpts.leftGap;\n  var rightGap = roundFnOpts.rightGap;\n  var ptNumber2cdIndex = {};\n  for (i = 0; i < pos0.length; i++) {\n    var posi = pos0[i];\n    n = Lib.findBin(posi, bins);\n    if (n >= 0 && n < nMax) {\n      total += binFunc(n, i, size, rawCounterData, counts);\n      if (uniqueValsPerBin && inputPoints[n].length && posi !== pos0[inputPoints[n][0]]) {\n        uniqueValsPerBin = false;\n      }\n      inputPoints[n].push(i);\n      ptNumber2cdIndex[i] = n;\n      leftGap = Math.min(leftGap, posi - binEdges[n]);\n      rightGap = Math.min(rightGap, binEdges[n + 1] - posi);\n    }\n  }\n  roundFnOpts.leftGap = leftGap;\n  roundFnOpts.rightGap = rightGap;\n  var roundFn;\n  if (!uniqueValsPerBin) {\n    roundFn = function (v, isRightEdge) {\n      return function () {\n        var roundFnOpts = gd._fullLayout._roundFnOpts[groupName];\n        return getBinSpanLabelRound(roundFnOpts.leftGap, roundFnOpts.rightGap, binEdges, pa, calendar)(v, isRightEdge);\n      };\n    };\n  }\n\n  // average and/or normalize the data, if needed\n  if (isAvg) total = doAvg(size, counts);\n  if (normFunc) normFunc(size, total, inc);\n\n  // after all normalization etc, now we can accumulate if desired\n  if (cumulativeSpec.enabled) cdf(size, cumulativeSpec.direction, cumulativeSpec.currentbin);\n  var seriesLen = Math.min(pos.length, size.length);\n  var cd = [];\n  var firstNonzero = 0;\n  var lastNonzero = seriesLen - 1;\n\n  // look for empty bins at the ends to remove, so autoscale omits them\n  for (i = 0; i < seriesLen; i++) {\n    if (size[i]) {\n      firstNonzero = i;\n      break;\n    }\n  }\n  for (i = seriesLen - 1; i >= firstNonzero; i--) {\n    if (size[i]) {\n      lastNonzero = i;\n      break;\n    }\n  }\n\n  // create the \"calculated data\" to plot\n  for (i = firstNonzero; i <= lastNonzero; i++) {\n    if (isNumeric(pos[i]) && isNumeric(size[i])) {\n      var cdi = {\n        p: pos[i],\n        s: size[i],\n        b: 0\n      };\n\n      // setup hover and event data fields,\n      // N.B. pts and \"hover\" positions ph0/ph1 don't seem to make much sense\n      // for cumulative distributions\n      if (!cumulativeSpec.enabled) {\n        cdi.pts = inputPoints[i];\n        if (uniqueValsPerBin) {\n          cdi.ph0 = cdi.ph1 = inputPoints[i].length ? pos0[inputPoints[i][0]] : pos[i];\n        } else {\n          // Defer evaluation of ph(0|1) in crossTraceCalc\n          trace._computePh = true;\n          cdi.ph0 = roundFn(binEdges[i]);\n          cdi.ph1 = roundFn(binEdges[i + 1], true);\n        }\n      }\n      cd.push(cdi);\n    }\n  }\n  if (cd.length === 1) {\n    // when we collapse to a single bin, calcdata no longer describes bin size\n    // so we need to explicitly specify it\n    cd[0].width1 = Axes.tickIncrement(cd[0].p, binSpec.size, false, calendar) - cd[0].p;\n  }\n  arraysToCalcdata(cd, trace);\n  if (Lib.isArrayOrTypedArray(trace.selectedpoints)) {\n    Lib.tagSelected(cd, trace, ptNumber2cdIndex);\n  }\n  return cd;\n}\n\n/*\n * calcAllAutoBins: we want all histograms inside the same bingroup\n * (see logic in Histogram.crossTraceDefaults) to share bin specs\n *\n * If the user has explicitly specified differing\n * bin specs, there's nothing we can do, but if possible we will try to use the\n * smallest bins of any of the auto values for all histograms inside the same\n * bingroup.\n */\nfunction calcAllAutoBins(gd, trace, pa, mainData, _overlayEdgeCase) {\n  var binAttr = mainData + 'bins';\n  var fullLayout = gd._fullLayout;\n  var groupName = trace['_' + mainData + 'bingroup'];\n  var binOpts = fullLayout._histogramBinOpts[groupName];\n  var isOverlay = fullLayout.barmode === 'overlay';\n  var i, traces, tracei, calendar, pos0, autoVals, cumulativeSpec;\n  var r2c = function (v) {\n    return pa.r2c(v, 0, calendar);\n  };\n  var c2r = function (v) {\n    return pa.c2r(v, 0, calendar);\n  };\n  var cleanBound = pa.type === 'date' ? function (v) {\n    return v || v === 0 ? Lib.cleanDate(v, null, calendar) : null;\n  } : function (v) {\n    return isNumeric(v) ? Number(v) : null;\n  };\n  function setBound(attr, bins, newBins) {\n    if (bins[attr + 'Found']) {\n      bins[attr] = cleanBound(bins[attr]);\n      if (bins[attr] === null) bins[attr] = newBins[attr];\n    } else {\n      autoVals[attr] = bins[attr] = newBins[attr];\n      Lib.nestedProperty(traces[0], binAttr + '.' + attr).set(newBins[attr]);\n    }\n  }\n\n  // all but the first trace in this group has already been marked finished\n  // clear this flag, so next time we run calc we will run autobin again\n  if (trace['_' + mainData + 'autoBinFinished']) {\n    delete trace['_' + mainData + 'autoBinFinished'];\n  } else {\n    traces = binOpts.traces;\n    var allPos = [];\n\n    // Note: we're including `legendonly` traces here for autobin purposes,\n    // so that showing & hiding from the legend won't affect bins.\n    // But this complicates things a bit since those traces don't `calc`,\n    // hence `isFirstVisible`.\n    var isFirstVisible = true;\n    var has2dMap = false;\n    var hasHist2dContour = false;\n    for (i = 0; i < traces.length; i++) {\n      tracei = traces[i];\n      if (tracei.visible) {\n        var mainDatai = binOpts.dirs[i];\n        pos0 = tracei['_' + mainDatai + 'pos0'] = pa.makeCalcdata(tracei, mainDatai);\n        allPos = Lib.concat(allPos, pos0);\n        delete tracei['_' + mainData + 'autoBinFinished'];\n        if (trace.visible === true) {\n          if (isFirstVisible) {\n            isFirstVisible = false;\n          } else {\n            delete tracei._autoBin;\n            tracei['_' + mainData + 'autoBinFinished'] = 1;\n          }\n          if (Registry.traceIs(tracei, '2dMap')) {\n            has2dMap = true;\n          }\n          if (tracei.type === 'histogram2dcontour') {\n            hasHist2dContour = true;\n          }\n        }\n      }\n    }\n    calendar = traces[0][mainData + 'calendar'];\n    var newBinSpec = Axes.autoBin(allPos, pa, binOpts.nbins, has2dMap, calendar, binOpts.sizeFound && binOpts.size);\n    var autoBin = traces[0]._autoBin = {};\n    autoVals = autoBin[binOpts.dirs[0]] = {};\n    if (hasHist2dContour) {\n      // the \"true\" 2nd argument reverses the tick direction (which we can't\n      // just do with a minus sign because of month bins)\n      if (!binOpts.size) {\n        newBinSpec.start = c2r(Axes.tickIncrement(r2c(newBinSpec.start), newBinSpec.size, true, calendar));\n      }\n      if (binOpts.end === undefined) {\n        newBinSpec.end = c2r(Axes.tickIncrement(r2c(newBinSpec.end), newBinSpec.size, false, calendar));\n      }\n    }\n\n    // Edge case: single-valued histogram overlaying others\n    // Use them all together to calculate the bin size for the single-valued one\n    if (isOverlay && !Registry.traceIs(trace, '2dMap') && newBinSpec._dataSpan === 0 && pa.type !== 'category' && pa.type !== 'multicategory') {\n      // Several single-valued histograms! Stop infinite recursion,\n      // just return an extra flag that tells handleSingleValueOverlays\n      // to sort out this trace too\n      if (_overlayEdgeCase) return [newBinSpec, pos0, true];\n      newBinSpec = handleSingleValueOverlays(gd, trace, pa, mainData, binAttr);\n    }\n\n    // adjust for CDF edge cases\n    cumulativeSpec = tracei.cumulative || {};\n    if (cumulativeSpec.enabled && cumulativeSpec.currentbin !== 'include') {\n      if (cumulativeSpec.direction === 'decreasing') {\n        newBinSpec.start = c2r(Axes.tickIncrement(r2c(newBinSpec.start), newBinSpec.size, true, calendar));\n      } else {\n        newBinSpec.end = c2r(Axes.tickIncrement(r2c(newBinSpec.end), newBinSpec.size, false, calendar));\n      }\n    }\n    binOpts.size = newBinSpec.size;\n    if (!binOpts.sizeFound) {\n      autoVals.size = newBinSpec.size;\n      Lib.nestedProperty(traces[0], binAttr + '.size').set(newBinSpec.size);\n    }\n    setBound('start', binOpts, newBinSpec);\n    setBound('end', binOpts, newBinSpec);\n  }\n  pos0 = trace['_' + mainData + 'pos0'];\n  delete trace['_' + mainData + 'pos0'];\n\n  // Each trace can specify its own start/end, or if omitted\n  // we ensure they're beyond the bounds of this trace's data,\n  // and we need to make sure start is aligned with the main start\n  var traceInputBins = trace._input[binAttr] || {};\n  var traceBinOptsCalc = Lib.extendFlat({}, binOpts);\n  var mainStart = binOpts.start;\n  var startIn = pa.r2l(traceInputBins.start);\n  var hasStart = startIn !== undefined;\n  if ((binOpts.startFound || hasStart) && startIn !== pa.r2l(mainStart)) {\n    // We have an explicit start to reconcile across traces\n    // if this trace has an explicit start, shift it down to a bin edge\n    // if another trace had an explicit start, shift it down to a\n    // bin edge past our data\n    var traceStart = hasStart ? startIn : Lib.aggNums(Math.min, null, pos0);\n    var dummyAx = {\n      type: pa.type === 'category' || pa.type === 'multicategory' ? 'linear' : pa.type,\n      r2l: pa.r2l,\n      dtick: binOpts.size,\n      tick0: mainStart,\n      calendar: calendar,\n      range: [traceStart, Axes.tickIncrement(traceStart, binOpts.size, false, calendar)].map(pa.l2r)\n    };\n    var newStart = Axes.tickFirst(dummyAx);\n    if (newStart > pa.r2l(traceStart)) {\n      newStart = Axes.tickIncrement(newStart, binOpts.size, true, calendar);\n    }\n    traceBinOptsCalc.start = pa.l2r(newStart);\n    if (!hasStart) Lib.nestedProperty(trace, binAttr + '.start').set(traceBinOptsCalc.start);\n  }\n  var mainEnd = binOpts.end;\n  var endIn = pa.r2l(traceInputBins.end);\n  var hasEnd = endIn !== undefined;\n  if ((binOpts.endFound || hasEnd) && endIn !== pa.r2l(mainEnd)) {\n    // Reconciling an explicit end is easier, as it doesn't need to\n    // match bin edges\n    var traceEnd = hasEnd ? endIn : Lib.aggNums(Math.max, null, pos0);\n    traceBinOptsCalc.end = pa.l2r(traceEnd);\n    if (!hasEnd) Lib.nestedProperty(trace, binAttr + '.start').set(traceBinOptsCalc.end);\n  }\n\n  // Backward compatibility for one-time autobinning.\n  // autobin: true is handled in cleanData, but autobin: false\n  // needs to be here where we have determined the values.\n  var autoBinAttr = 'autobin' + mainData;\n  if (trace._input[autoBinAttr] === false) {\n    trace._input[binAttr] = Lib.extendFlat({}, trace[binAttr] || {});\n    delete trace._input[autoBinAttr];\n    delete trace[autoBinAttr];\n  }\n  return [traceBinOptsCalc, pos0];\n}\n\n/*\n * Adjust single-value histograms in overlay mode to make as good a\n * guess as we can at autobin values the user would like.\n *\n * Returns the binSpec for the trace that sparked all this\n */\nfunction handleSingleValueOverlays(gd, trace, pa, mainData, binAttr) {\n  var fullLayout = gd._fullLayout;\n  var overlaidTraceGroup = getConnectedHistograms(gd, trace);\n  var pastThisTrace = false;\n  var minSize = Infinity;\n  var singleValuedTraces = [trace];\n  var i, tracei, binOpts;\n\n  // first collect all the:\n  // - min bin size from all multi-valued traces\n  // - single-valued traces\n  for (i = 0; i < overlaidTraceGroup.length; i++) {\n    tracei = overlaidTraceGroup[i];\n    if (tracei === trace) {\n      pastThisTrace = true;\n    } else if (!pastThisTrace) {\n      // This trace has already had its autobins calculated, so either:\n      // - it is part of a bingroup\n      // - it is NOT a single-valued trace\n      binOpts = fullLayout._histogramBinOpts[tracei['_' + mainData + 'bingroup']];\n      minSize = Math.min(minSize, binOpts.size || tracei[binAttr].size);\n    } else {\n      var resulti = calcAllAutoBins(gd, tracei, pa, mainData, true);\n      var binSpeci = resulti[0];\n      var isSingleValued = resulti[2];\n\n      // so we can use this result when we get to tracei in the normal\n      // course of events, mark it as done and put _pos0 back\n      tracei['_' + mainData + 'autoBinFinished'] = 1;\n      tracei['_' + mainData + 'pos0'] = resulti[1];\n      if (isSingleValued) {\n        singleValuedTraces.push(tracei);\n      } else {\n        minSize = Math.min(minSize, binSpeci.size);\n      }\n    }\n  }\n\n  // find the real data values for each single-valued trace\n  // hunt through pos0 for the first valid value\n  var dataVals = new Array(singleValuedTraces.length);\n  for (i = 0; i < singleValuedTraces.length; i++) {\n    var pos0 = singleValuedTraces[i]['_' + mainData + 'pos0'];\n    for (var j = 0; j < pos0.length; j++) {\n      if (pos0[j] !== undefined) {\n        dataVals[i] = pos0[j];\n        break;\n      }\n    }\n  }\n\n  // are ALL traces are single-valued? use the min difference between\n  // all of their values (which defaults to 1 if there's still only one)\n  if (!isFinite(minSize)) {\n    minSize = Lib.distinctVals(dataVals).minDiff;\n  }\n\n  // now apply the min size we found to all single-valued traces\n  for (i = 0; i < singleValuedTraces.length; i++) {\n    tracei = singleValuedTraces[i];\n    var calendar = tracei[mainData + 'calendar'];\n    var newBins = {\n      start: pa.c2r(dataVals[i] - minSize / 2, 0, calendar),\n      end: pa.c2r(dataVals[i] + minSize / 2, 0, calendar),\n      size: minSize\n    };\n    tracei._input[binAttr] = tracei[binAttr] = newBins;\n    binOpts = fullLayout._histogramBinOpts[tracei['_' + mainData + 'bingroup']];\n    if (binOpts) Lib.extendFlat(binOpts, newBins);\n  }\n  return trace[binAttr];\n}\n\n/*\n * Return an array of histograms that share axes and orientation.\n *\n * Only considers histograms. In principle we could include bars in a\n * similar way to how we do manually binned histograms, though this\n * would have tons of edge cases and value judgments to make.\n */\nfunction getConnectedHistograms(gd, trace) {\n  var xid = trace.xaxis;\n  var yid = trace.yaxis;\n  var orientation = trace.orientation;\n  var out = [];\n  var fullData = gd._fullData;\n  for (var i = 0; i < fullData.length; i++) {\n    var tracei = fullData[i];\n    if (tracei.type === 'histogram' && tracei.visible === true && tracei.orientation === orientation && tracei.xaxis === xid && tracei.yaxis === yid) {\n      out.push(tracei);\n    }\n  }\n  return out;\n}\nfunction cdf(size, direction, currentBin) {\n  var i, vi, prevSum;\n  function firstHalfPoint(i) {\n    prevSum = size[i];\n    size[i] /= 2;\n  }\n  function nextHalfPoint(i) {\n    vi = size[i];\n    size[i] = prevSum + vi / 2;\n    prevSum += vi;\n  }\n  if (currentBin === 'half') {\n    if (direction === 'increasing') {\n      firstHalfPoint(0);\n      for (i = 1; i < size.length; i++) {\n        nextHalfPoint(i);\n      }\n    } else {\n      firstHalfPoint(size.length - 1);\n      for (i = size.length - 2; i >= 0; i--) {\n        nextHalfPoint(i);\n      }\n    }\n  } else if (direction === 'increasing') {\n    for (i = 1; i < size.length; i++) {\n      size[i] += size[i - 1];\n    }\n\n    // 'exclude' is identical to 'include' just shifted one bin over\n    if (currentBin === 'exclude') {\n      size.unshift(0);\n      size.pop();\n    }\n  } else {\n    for (i = size.length - 2; i >= 0; i--) {\n      size[i] += size[i + 1];\n    }\n    if (currentBin === 'exclude') {\n      size.push(0);\n      size.shift();\n    }\n  }\n}\nmodule.exports = {\n  calc: calc,\n  calcAllAutoBins: calcAllAutoBins\n};\n\n/***/ }),\n\n/***/ 72406:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  eventDataKeys: ['binNumber']\n};\n\n/***/ }),\n\n/***/ 82222:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2598752__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2598752__(71828);\nvar axisIds = __nested_webpack_require_2598752__(41675);\nvar traceIs = (__nested_webpack_require_2598752__(73972).traceIs);\nvar handleGroupingDefaults = __nested_webpack_require_2598752__(26125);\nvar nestedProperty = Lib.nestedProperty;\nvar getAxisGroup = (__nested_webpack_require_2598752__(99082).getAxisGroup);\nvar BINATTRS = [{\n  aStr: {\n    x: 'xbins.start',\n    y: 'ybins.start'\n  },\n  name: 'start'\n}, {\n  aStr: {\n    x: 'xbins.end',\n    y: 'ybins.end'\n  },\n  name: 'end'\n}, {\n  aStr: {\n    x: 'xbins.size',\n    y: 'ybins.size'\n  },\n  name: 'size'\n}, {\n  aStr: {\n    x: 'nbinsx',\n    y: 'nbinsy'\n  },\n  name: 'nbins'\n}];\nvar BINDIRECTIONS = ['x', 'y'];\n\n// handle bin attrs and relink auto-determined values so fullData is complete\nmodule.exports = function crossTraceDefaults(fullData, fullLayout) {\n  var allBinOpts = fullLayout._histogramBinOpts = {};\n  var histTraces = [];\n  var mustMatchTracesLookup = {};\n  var otherTracesList = [];\n  var traceOut, traces, groupName, binDir;\n  var i, j, k;\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceOut._input, traceOut, traceOut._module.attributes, attr, dflt);\n  }\n  function orientation2binDir(traceOut) {\n    return traceOut.orientation === 'v' ? 'x' : 'y';\n  }\n  function getAxisType(traceOut, binDir) {\n    var ax = axisIds.getFromTrace({\n      _fullLayout: fullLayout\n    }, traceOut, binDir);\n    return ax.type;\n  }\n  function fillBinOpts(traceOut, groupName, binDir) {\n    // N.B. group traces that don't have a bingroup with themselves\n    var fallbackGroupName = traceOut.uid + '__' + binDir;\n    if (!groupName) groupName = fallbackGroupName;\n    var axType = getAxisType(traceOut, binDir);\n    var calendar = traceOut[binDir + 'calendar'] || '';\n    var binOpts = allBinOpts[groupName];\n    var needsNewItem = true;\n    if (binOpts) {\n      if (axType === binOpts.axType && calendar === binOpts.calendar) {\n        needsNewItem = false;\n        binOpts.traces.push(traceOut);\n        binOpts.dirs.push(binDir);\n      } else {\n        groupName = fallbackGroupName;\n        if (axType !== binOpts.axType) {\n          Lib.warn(['Attempted to group the bins of trace', traceOut.index, 'set on a', 'type:' + axType, 'axis', 'with bins on', 'type:' + binOpts.axType, 'axis.'].join(' '));\n        }\n        if (calendar !== binOpts.calendar) {\n          // prohibit bingroup for traces using different calendar,\n          // there's probably a way to make this work, but skip for now\n          Lib.warn(['Attempted to group the bins of trace', traceOut.index, 'set with a', calendar, 'calendar', 'with bins', binOpts.calendar ? 'on a ' + binOpts.calendar + ' calendar' : 'w/o a set calendar'].join(' '));\n        }\n      }\n    }\n    if (needsNewItem) {\n      allBinOpts[groupName] = {\n        traces: [traceOut],\n        dirs: [binDir],\n        axType: axType,\n        calendar: traceOut[binDir + 'calendar'] || ''\n      };\n    }\n    traceOut['_' + binDir + 'bingroup'] = groupName;\n  }\n  for (i = 0; i < fullData.length; i++) {\n    traceOut = fullData[i];\n    if (traceIs(traceOut, 'histogram')) {\n      histTraces.push(traceOut);\n\n      // TODO: this shouldn't be relinked as it's only used within calc\n      // https://github.com/plotly/plotly.js/issues/749\n      delete traceOut._xautoBinFinished;\n      delete traceOut._yautoBinFinished;\n\n      // N.B. need to coerce *alignmentgroup* before *bingroup*, as traces\n      // in same alignmentgroup \"have to match\"\n      if (!traceIs(traceOut, '2dMap')) {\n        handleGroupingDefaults(traceOut._input, traceOut, fullLayout, coerce);\n      }\n    }\n  }\n  var alignmentOpts = fullLayout._alignmentOpts || {};\n\n  // Look for traces that \"have to match\", that is:\n  // - 1d histogram traces on the same subplot with same orientation under barmode:stack,\n  // - 1d histogram traces on the same subplot with same orientation under barmode:group\n  // - 1d histogram traces on the same position axis with the same orientation\n  //   and the same *alignmentgroup* (coerced under barmode:group)\n  // - Once `stackgroup` gets implemented (see https://github.com/plotly/plotly.js/issues/3614),\n  //   traces within the same stackgroup will also \"have to match\"\n  for (i = 0; i < histTraces.length; i++) {\n    traceOut = histTraces[i];\n    groupName = '';\n    if (!traceIs(traceOut, '2dMap')) {\n      binDir = orientation2binDir(traceOut);\n      if (fullLayout.barmode === 'group' && traceOut.alignmentgroup) {\n        var pa = traceOut[binDir + 'axis'];\n        var aGroupId = getAxisGroup(fullLayout, pa) + traceOut.orientation;\n        if ((alignmentOpts[aGroupId] || {})[traceOut.alignmentgroup]) {\n          groupName = aGroupId;\n        }\n      }\n      if (!groupName && fullLayout.barmode !== 'overlay') {\n        groupName = getAxisGroup(fullLayout, traceOut.xaxis) + getAxisGroup(fullLayout, traceOut.yaxis) + orientation2binDir(traceOut);\n      }\n    }\n    if (groupName) {\n      if (!mustMatchTracesLookup[groupName]) {\n        mustMatchTracesLookup[groupName] = [];\n      }\n      mustMatchTracesLookup[groupName].push(traceOut);\n    } else {\n      otherTracesList.push(traceOut);\n    }\n  }\n\n  // Setup binOpts for traces that have to match,\n  // if the traces have a valid bingroup, use that\n  // if not use axis+binDir groupName\n  for (groupName in mustMatchTracesLookup) {\n    traces = mustMatchTracesLookup[groupName];\n\n    // no need to 'force' anything when a single\n    // trace is detected as \"must match\"\n    if (traces.length === 1) {\n      otherTracesList.push(traces[0]);\n      continue;\n    }\n    var binGroupFound = false;\n    if (traces.length) {\n      traceOut = traces[0];\n      binGroupFound = coerce('bingroup');\n    }\n    groupName = binGroupFound || groupName;\n    for (i = 0; i < traces.length; i++) {\n      traceOut = traces[i];\n      var bingroupIn = traceOut._input.bingroup;\n      if (bingroupIn && bingroupIn !== groupName) {\n        Lib.warn(['Trace', traceOut.index, 'must match', 'within bingroup', groupName + '.', 'Ignoring its bingroup:', bingroupIn, 'setting.'].join(' '));\n      }\n      traceOut.bingroup = groupName;\n\n      // N.B. no need to worry about 2dMap case\n      // (where both bin direction are set in each trace)\n      // as 2dMap trace never \"have to match\"\n      fillBinOpts(traceOut, groupName, orientation2binDir(traceOut));\n    }\n  }\n\n  // setup binOpts for traces that can but don't have to match,\n  // notice that these traces can be matched with traces that have to match\n  for (i = 0; i < otherTracesList.length; i++) {\n    traceOut = otherTracesList[i];\n    var binGroup = coerce('bingroup');\n    if (traceIs(traceOut, '2dMap')) {\n      for (k = 0; k < 2; k++) {\n        binDir = BINDIRECTIONS[k];\n        var binGroupInDir = coerce(binDir + 'bingroup', binGroup ? binGroup + '__' + binDir : null);\n        fillBinOpts(traceOut, binGroupInDir, binDir);\n      }\n    } else {\n      fillBinOpts(traceOut, binGroup, orientation2binDir(traceOut));\n    }\n  }\n\n  // coerce bin attrs!\n  for (groupName in allBinOpts) {\n    var binOpts = allBinOpts[groupName];\n    traces = binOpts.traces;\n    for (j = 0; j < BINATTRS.length; j++) {\n      var attrSpec = BINATTRS[j];\n      var attr = attrSpec.name;\n      var aStr;\n      var autoVals;\n\n      // nbins(x|y) is moot if we have a size. This depends on\n      // nbins coming after size in binAttrs.\n      if (attr === 'nbins' && binOpts.sizeFound) continue;\n      for (i = 0; i < traces.length; i++) {\n        traceOut = traces[i];\n        binDir = binOpts.dirs[i];\n        aStr = attrSpec.aStr[binDir];\n        if (nestedProperty(traceOut._input, aStr).get() !== undefined) {\n          binOpts[attr] = coerce(aStr);\n          binOpts[attr + 'Found'] = true;\n          break;\n        }\n        autoVals = (traceOut._autoBin || {})[binDir] || {};\n        if (autoVals[attr]) {\n          // if this is the *first* autoval\n          nestedProperty(traceOut, aStr).set(autoVals[attr]);\n        }\n      }\n\n      // start and end we need to coerce anyway, after having collected the\n      // first of each into binOpts, in case a trace wants to restrict its\n      // data to a certain range\n      if (attr === 'start' || attr === 'end') {\n        for (; i < traces.length; i++) {\n          traceOut = traces[i];\n          if (traceOut['_' + binDir + 'bingroup']) {\n            autoVals = (traceOut._autoBin || {})[binDir] || {};\n            coerce(aStr, autoVals[attr]);\n          }\n        }\n      }\n      if (attr === 'nbins' && !binOpts.sizeFound && !binOpts.nbinsFound) {\n        traceOut = traces[0];\n        binOpts[attr] = coerce(aStr);\n      }\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 11385:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2607423__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_2607423__(73972);\nvar Lib = __nested_webpack_require_2607423__(71828);\nvar Color = __nested_webpack_require_2607423__(7901);\nvar handleText = (__nested_webpack_require_2607423__(90769).handleText);\nvar handleStyleDefaults = __nested_webpack_require_2607423__(98340);\nvar attributes = __nested_webpack_require_2607423__(7745);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var x = coerce('x');\n  var y = coerce('y');\n  var cumulative = coerce('cumulative.enabled');\n  if (cumulative) {\n    coerce('cumulative.direction');\n    coerce('cumulative.currentbin');\n  }\n  coerce('text');\n  var textposition = coerce('textposition');\n  handleText(traceIn, traceOut, layout, coerce, textposition, {\n    moduleHasSelected: true,\n    moduleHasUnselected: true,\n    moduleHasConstrain: true,\n    moduleHasCliponaxis: true,\n    moduleHasTextangle: true,\n    moduleHasInsideanchor: true\n  });\n  coerce('hovertext');\n  coerce('hovertemplate');\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  var orientation = coerce('orientation', y && !x ? 'h' : 'v');\n  var sampleLetter = orientation === 'v' ? 'x' : 'y';\n  var aggLetter = orientation === 'v' ? 'y' : 'x';\n  var len = x && y ? Math.min(Lib.minRowLength(x) && Lib.minRowLength(y)) : Lib.minRowLength(traceOut[sampleLetter] || []);\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  traceOut._length = len;\n  var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults');\n  handleCalendarDefaults(traceIn, traceOut, ['x', 'y'], layout);\n  var hasAggregationData = traceOut[aggLetter];\n  if (hasAggregationData) coerce('histfunc');\n  coerce('histnorm');\n\n  // Note: bin defaults are now handled in Histogram.crossTraceDefaults\n  // autobin(x|y) are only included here to appease Plotly.validate\n  coerce('autobin' + sampleLetter);\n  handleStyleDefaults(traceIn, traceOut, coerce, defaultColor, layout);\n  Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n  var lineColor = (traceOut.marker.line || {}).color;\n\n  // override defaultColor for error bars with defaultLine\n  var errorBarsSupplyDefaults = Registry.getComponentMethod('errorbars', 'supplyDefaults');\n  errorBarsSupplyDefaults(traceIn, traceOut, lineColor || Color.defaultLine, {\n    axis: 'y'\n  });\n  errorBarsSupplyDefaults(traceIn, traceOut, lineColor || Color.defaultLine, {\n    axis: 'x',\n    inherit: 'y'\n  });\n};\n\n/***/ }),\n\n/***/ 84402:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function eventData(out, pt, trace, cd, pointNumber) {\n  // standard cartesian event data\n  out.x = 'xVal' in pt ? pt.xVal : pt.x;\n  out.y = 'yVal' in pt ? pt.yVal : pt.y;\n\n  // for 2d histograms\n  if ('zLabelVal' in pt) out.z = pt.zLabelVal;\n  if (pt.xa) out.xaxis = pt.xa;\n  if (pt.ya) out.yaxis = pt.ya;\n\n  // specific to histogram - CDFs do not have pts (yet?)\n  if (!(trace.cumulative || {}).enabled) {\n    var pts = Array.isArray(pointNumber) ? cd[0].pts[pointNumber[0]][pointNumber[1]] : cd[pointNumber].pts;\n    out.pointNumbers = pts;\n    out.binNumber = out.pointNumber;\n    delete out.pointNumber;\n    delete out.pointIndex;\n    var pointIndices;\n    if (trace._indexToPoints) {\n      pointIndices = [];\n      for (var i = 0; i < pts.length; i++) {\n        pointIndices = pointIndices.concat(trace._indexToPoints[pts[i]]);\n      }\n    } else {\n      pointIndices = pts;\n    }\n    out.pointIndices = pointIndices;\n  }\n  return out;\n};\n\n/***/ }),\n\n/***/ 76440:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2611023__) {\n\n\"use strict\";\n\n\nvar barHover = (__nested_webpack_require_2611023__(95423).hoverPoints);\nvar hoverLabelText = (__nested_webpack_require_2611023__(89298).hoverLabelText);\nmodule.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) {\n  var pts = barHover(pointData, xval, yval, hovermode, opts);\n  if (!pts) return;\n  pointData = pts[0];\n  var di = pointData.cd[pointData.index];\n  var trace = pointData.cd[0].trace;\n  if (!trace.cumulative.enabled) {\n    var posLetter = trace.orientation === 'h' ? 'y' : 'x';\n    pointData[posLetter + 'Label'] = hoverLabelText(pointData[posLetter + 'a'], [di.ph0, di.ph1], trace[posLetter + 'hoverformat']);\n  }\n  return pts;\n};\n\n/***/ }),\n\n/***/ 36071:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2611772__) {\n\n\"use strict\";\n\n\n/**\n * Histogram has its own attribute, defaults and calc steps,\n * but uses bar's plot to display\n * and bar's crossTraceCalc (formerly known as setPositions) for stacking and grouping\n */\n\n/**\n * histogram errorBarsOK is debatable, but it's put in for backward compat.\n * there are use cases for it - sqrt for a simple histogram works right now,\n * constant and % work but they're not so meaningful. I guess it could be cool\n * to allow quadrature combination of errors in summed histograms...\n */\nmodule.exports = {\n  attributes: __nested_webpack_require_2611772__(7745),\n  layoutAttributes: __nested_webpack_require_2611772__(43641),\n  supplyDefaults: __nested_webpack_require_2611772__(11385),\n  crossTraceDefaults: __nested_webpack_require_2611772__(82222),\n  supplyLayoutDefaults: __nested_webpack_require_2611772__(13957),\n  calc: (__nested_webpack_require_2611772__(72138).calc),\n  crossTraceCalc: (__nested_webpack_require_2611772__(11661).crossTraceCalc),\n  plot: (__nested_webpack_require_2611772__(17295).plot),\n  layerName: 'barlayer',\n  style: (__nested_webpack_require_2611772__(16688).style),\n  styleOnSelect: (__nested_webpack_require_2611772__(16688).styleOnSelect),\n  colorbar: __nested_webpack_require_2611772__(4898),\n  hoverPoints: __nested_webpack_require_2611772__(76440),\n  selectPoints: __nested_webpack_require_2611772__(81974),\n  eventData: __nested_webpack_require_2611772__(84402),\n  moduleType: 'trace',\n  name: 'histogram',\n  basePlotModule: __nested_webpack_require_2611772__(93612),\n  categories: ['bar-like', 'cartesian', 'svg', 'bar', 'histogram', 'oriented', 'errorBarsOK', 'showLegend'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 36362:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  percent: function (size, total) {\n    var nMax = size.length;\n    var norm = 100 / total;\n    for (var n = 0; n < nMax; n++) size[n] *= norm;\n  },\n  probability: function (size, total) {\n    var nMax = size.length;\n    for (var n = 0; n < nMax; n++) size[n] /= total;\n  },\n  density: function (size, total, inc, yinc) {\n    var nMax = size.length;\n    yinc = yinc || 1;\n    for (var n = 0; n < nMax; n++) size[n] *= inc[n] * yinc;\n  },\n  'probability density': function (size, total, inc, yinc) {\n    var nMax = size.length;\n    if (yinc) total /= yinc;\n    for (var n = 0; n < nMax; n++) size[n] *= inc[n] / total;\n  }\n};\n\n/***/ }),\n\n/***/ 35361:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2614015__) {\n\n\"use strict\";\n\n\nvar histogramAttrs = __nested_webpack_require_2614015__(7745);\nvar makeBinAttrs = __nested_webpack_require_2614015__(17656);\nvar heatmapAttrs = __nested_webpack_require_2614015__(21606);\nvar baseAttrs = __nested_webpack_require_2614015__(9012);\nvar axisHoverFormat = (__nested_webpack_require_2614015__(12663).axisHoverFormat);\nvar hovertemplateAttrs = (__nested_webpack_require_2614015__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_2614015__(5386)/* .texttemplateAttrs */ .s);\nvar colorScaleAttrs = __nested_webpack_require_2614015__(50693);\nvar extendFlat = (__nested_webpack_require_2614015__(1426).extendFlat);\nmodule.exports = extendFlat({\n  x: histogramAttrs.x,\n  y: histogramAttrs.y,\n  z: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  marker: {\n    color: {\n      valType: 'data_array',\n      editType: 'calc'\n    },\n    editType: 'calc'\n  },\n  histnorm: histogramAttrs.histnorm,\n  histfunc: histogramAttrs.histfunc,\n  nbinsx: histogramAttrs.nbinsx,\n  xbins: makeBinAttrs('x'),\n  nbinsy: histogramAttrs.nbinsy,\n  ybins: makeBinAttrs('y'),\n  autobinx: histogramAttrs.autobinx,\n  autobiny: histogramAttrs.autobiny,\n  bingroup: extendFlat({}, histogramAttrs.bingroup, {}),\n  xbingroup: extendFlat({}, histogramAttrs.bingroup, {}),\n  ybingroup: extendFlat({}, histogramAttrs.bingroup, {}),\n  xgap: heatmapAttrs.xgap,\n  ygap: heatmapAttrs.ygap,\n  zsmooth: heatmapAttrs.zsmooth,\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  zhoverformat: axisHoverFormat('z', 1),\n  hovertemplate: hovertemplateAttrs({}, {\n    keys: 'z'\n  }),\n  texttemplate: texttemplateAttrs({\n    arrayOk: false,\n    editType: 'plot'\n  }, {\n    keys: 'z'\n  }),\n  textfont: heatmapAttrs.textfont,\n  showlegend: extendFlat({}, baseAttrs.showlegend, {\n    dflt: false\n  })\n}, colorScaleAttrs('', {\n  cLetter: 'z',\n  autoColorDflt: false\n}));\n\n/***/ }),\n\n/***/ 17562:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2615889__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2615889__(71828);\nvar Axes = __nested_webpack_require_2615889__(89298);\nvar binFunctions = __nested_webpack_require_2615889__(59575);\nvar normFunctions = __nested_webpack_require_2615889__(36362);\nvar doAvg = __nested_webpack_require_2615889__(42174);\nvar getBinSpanLabelRound = __nested_webpack_require_2615889__(40965);\nvar calcAllAutoBins = (__nested_webpack_require_2615889__(72138).calcAllAutoBins);\nmodule.exports = function calc(gd, trace) {\n  var xa = Axes.getFromId(gd, trace.xaxis);\n  var ya = Axes.getFromId(gd, trace.yaxis);\n  var xcalendar = trace.xcalendar;\n  var ycalendar = trace.ycalendar;\n  var xr2c = function (v) {\n    return xa.r2c(v, 0, xcalendar);\n  };\n  var yr2c = function (v) {\n    return ya.r2c(v, 0, ycalendar);\n  };\n  var xc2r = function (v) {\n    return xa.c2r(v, 0, xcalendar);\n  };\n  var yc2r = function (v) {\n    return ya.c2r(v, 0, ycalendar);\n  };\n  var i, j, n, m;\n\n  // calculate the bins\n  var xBinsAndPos = calcAllAutoBins(gd, trace, xa, 'x');\n  var xBinSpec = xBinsAndPos[0];\n  var xPos0 = xBinsAndPos[1];\n  var yBinsAndPos = calcAllAutoBins(gd, trace, ya, 'y');\n  var yBinSpec = yBinsAndPos[0];\n  var yPos0 = yBinsAndPos[1];\n  var serieslen = trace._length;\n  if (xPos0.length > serieslen) xPos0.splice(serieslen, xPos0.length - serieslen);\n  if (yPos0.length > serieslen) yPos0.splice(serieslen, yPos0.length - serieslen);\n\n  // make the empty bin array & scale the map\n  var z = [];\n  var onecol = [];\n  var zerocol = [];\n  var nonuniformBinsX = typeof xBinSpec.size === 'string';\n  var nonuniformBinsY = typeof yBinSpec.size === 'string';\n  var xEdges = [];\n  var yEdges = [];\n  var xbins = nonuniformBinsX ? xEdges : xBinSpec;\n  var ybins = nonuniformBinsY ? yEdges : yBinSpec;\n  var total = 0;\n  var counts = [];\n  var inputPoints = [];\n  var norm = trace.histnorm;\n  var func = trace.histfunc;\n  var densitynorm = norm.indexOf('density') !== -1;\n  var extremefunc = func === 'max' || func === 'min';\n  var sizeinit = extremefunc ? null : 0;\n  var binfunc = binFunctions.count;\n  var normfunc = normFunctions[norm];\n  var doavg = false;\n  var xinc = [];\n  var yinc = [];\n\n  // set a binning function other than count?\n  // for binning functions: check first for 'z',\n  // then 'mc' in case we had a colored scatter plot\n  // and want to transfer these colors to the 2D histo\n  // TODO: axe this, make it the responsibility of the app changing type? or an impliedEdit?\n  var rawCounterData = 'z' in trace ? trace.z : 'marker' in trace && Array.isArray(trace.marker.color) ? trace.marker.color : '';\n  if (rawCounterData && func !== 'count') {\n    doavg = func === 'avg';\n    binfunc = binFunctions[func];\n  }\n\n  // decrease end a little in case of rounding errors\n  var xBinSize = xBinSpec.size;\n  var xBinStart = xr2c(xBinSpec.start);\n  var xBinEnd = xr2c(xBinSpec.end) + (xBinStart - Axes.tickIncrement(xBinStart, xBinSize, false, xcalendar)) / 1e6;\n  for (i = xBinStart; i < xBinEnd; i = Axes.tickIncrement(i, xBinSize, false, xcalendar)) {\n    onecol.push(sizeinit);\n    xEdges.push(i);\n    if (doavg) zerocol.push(0);\n  }\n  xEdges.push(i);\n  var nx = onecol.length;\n  var dx = (i - xBinStart) / nx;\n  var x0 = xc2r(xBinStart + dx / 2);\n  var yBinSize = yBinSpec.size;\n  var yBinStart = yr2c(yBinSpec.start);\n  var yBinEnd = yr2c(yBinSpec.end) + (yBinStart - Axes.tickIncrement(yBinStart, yBinSize, false, ycalendar)) / 1e6;\n  for (i = yBinStart; i < yBinEnd; i = Axes.tickIncrement(i, yBinSize, false, ycalendar)) {\n    z.push(onecol.slice());\n    yEdges.push(i);\n    var ipCol = new Array(nx);\n    for (j = 0; j < nx; j++) ipCol[j] = [];\n    inputPoints.push(ipCol);\n    if (doavg) counts.push(zerocol.slice());\n  }\n  yEdges.push(i);\n  var ny = z.length;\n  var dy = (i - yBinStart) / ny;\n  var y0 = yc2r(yBinStart + dy / 2);\n  if (densitynorm) {\n    xinc = makeIncrements(onecol.length, xbins, dx, nonuniformBinsX);\n    yinc = makeIncrements(z.length, ybins, dy, nonuniformBinsY);\n  }\n\n  // for date axes we need bin bounds to be calcdata. For nonuniform bins\n  // we already have this, but uniform with start/end/size they're still strings.\n  if (!nonuniformBinsX && xa.type === 'date') xbins = binsToCalc(xr2c, xbins);\n  if (!nonuniformBinsY && ya.type === 'date') ybins = binsToCalc(yr2c, ybins);\n\n  // put data into bins\n  var uniqueValsPerX = true;\n  var uniqueValsPerY = true;\n  var xVals = new Array(nx);\n  var yVals = new Array(ny);\n  var xGapLow = Infinity;\n  var xGapHigh = Infinity;\n  var yGapLow = Infinity;\n  var yGapHigh = Infinity;\n  for (i = 0; i < serieslen; i++) {\n    var xi = xPos0[i];\n    var yi = yPos0[i];\n    n = Lib.findBin(xi, xbins);\n    m = Lib.findBin(yi, ybins);\n    if (n >= 0 && n < nx && m >= 0 && m < ny) {\n      total += binfunc(n, i, z[m], rawCounterData, counts[m]);\n      inputPoints[m][n].push(i);\n      if (uniqueValsPerX) {\n        if (xVals[n] === undefined) xVals[n] = xi;else if (xVals[n] !== xi) uniqueValsPerX = false;\n      }\n      if (uniqueValsPerY) {\n        if (yVals[m] === undefined) yVals[m] = yi;else if (yVals[m] !== yi) uniqueValsPerY = false;\n      }\n      xGapLow = Math.min(xGapLow, xi - xEdges[n]);\n      xGapHigh = Math.min(xGapHigh, xEdges[n + 1] - xi);\n      yGapLow = Math.min(yGapLow, yi - yEdges[m]);\n      yGapHigh = Math.min(yGapHigh, yEdges[m + 1] - yi);\n    }\n  }\n  // normalize, if needed\n  if (doavg) {\n    for (m = 0; m < ny; m++) total += doAvg(z[m], counts[m]);\n  }\n  if (normfunc) {\n    for (m = 0; m < ny; m++) normfunc(z[m], total, xinc, yinc[m]);\n  }\n  return {\n    x: xPos0,\n    xRanges: getRanges(xEdges, uniqueValsPerX && xVals, xGapLow, xGapHigh, xa, xcalendar),\n    x0: x0,\n    dx: dx,\n    y: yPos0,\n    yRanges: getRanges(yEdges, uniqueValsPerY && yVals, yGapLow, yGapHigh, ya, ycalendar),\n    y0: y0,\n    dy: dy,\n    z: z,\n    pts: inputPoints\n  };\n};\nfunction makeIncrements(len, bins, dv, nonuniform) {\n  var out = new Array(len);\n  var i;\n  if (nonuniform) {\n    for (i = 0; i < len; i++) out[i] = 1 / (bins[i + 1] - bins[i]);\n  } else {\n    var inc = 1 / dv;\n    for (i = 0; i < len; i++) out[i] = inc;\n  }\n  return out;\n}\nfunction binsToCalc(r2c, bins) {\n  return {\n    start: r2c(bins.start),\n    end: r2c(bins.end),\n    size: bins.size\n  };\n}\nfunction getRanges(edges, uniqueVals, gapLow, gapHigh, ax, calendar) {\n  var i;\n  var len = edges.length - 1;\n  var out = new Array(len);\n  var roundFn = getBinSpanLabelRound(gapLow, gapHigh, edges, ax, calendar);\n  for (i = 0; i < len; i++) {\n    var v = (uniqueVals || [])[i];\n    out[i] = v === undefined ? [roundFn(edges[i]), roundFn(edges[i + 1], true)] : [v, v];\n  }\n  return out;\n}\n\n/***/ }),\n\n/***/ 93888:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2622511__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2622511__(71828);\nvar handleSampleDefaults = __nested_webpack_require_2622511__(75238);\nvar handleStyleDefaults = __nested_webpack_require_2622511__(49901);\nvar colorscaleDefaults = __nested_webpack_require_2622511__(1586);\nvar handleHeatmapLabelDefaults = __nested_webpack_require_2622511__(58623);\nvar attributes = __nested_webpack_require_2622511__(35361);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  handleSampleDefaults(traceIn, traceOut, coerce, layout);\n  if (traceOut.visible === false) return;\n  handleStyleDefaults(traceIn, traceOut, coerce, layout);\n  colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n    prefix: '',\n    cLetter: 'z'\n  });\n  coerce('hovertemplate');\n  handleHeatmapLabelDefaults(coerce, layout);\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n};\n\n/***/ }),\n\n/***/ 76128:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2623501__) {\n\n\"use strict\";\n\n\nvar heatmapHover = __nested_webpack_require_2623501__(46248);\nvar hoverLabelText = (__nested_webpack_require_2623501__(89298).hoverLabelText);\nmodule.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) {\n  var pts = heatmapHover(pointData, xval, yval, hovermode, opts);\n  if (!pts) return;\n  pointData = pts[0];\n  var indices = pointData.index;\n  var ny = indices[0];\n  var nx = indices[1];\n  var cd0 = pointData.cd[0];\n  var trace = cd0.trace;\n  var xRange = cd0.xRanges[nx];\n  var yRange = cd0.yRanges[ny];\n  pointData.xLabel = hoverLabelText(pointData.xa, [xRange[0], xRange[1]], trace.xhoverformat);\n  pointData.yLabel = hoverLabelText(pointData.ya, [yRange[0], yRange[1]], trace.yhoverformat);\n  return pts;\n};\n\n/***/ }),\n\n/***/ 43905:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2624321__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2624321__(35361),\n  supplyDefaults: __nested_webpack_require_2624321__(93888),\n  crossTraceDefaults: __nested_webpack_require_2624321__(82222),\n  calc: __nested_webpack_require_2624321__(90757),\n  plot: __nested_webpack_require_2624321__(50347),\n  layerName: 'heatmaplayer',\n  colorbar: __nested_webpack_require_2624321__(61243),\n  style: __nested_webpack_require_2624321__(70035),\n  hoverPoints: __nested_webpack_require_2624321__(76128),\n  eventData: __nested_webpack_require_2624321__(84402),\n  moduleType: 'trace',\n  name: 'histogram2d',\n  basePlotModule: __nested_webpack_require_2624321__(93612),\n  categories: ['cartesian', 'svg', '2dMap', 'histogram', 'showLegend'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 75238:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2625033__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_2625033__(73972);\nvar Lib = __nested_webpack_require_2625033__(71828);\nmodule.exports = function handleSampleDefaults(traceIn, traceOut, coerce, layout) {\n  var x = coerce('x');\n  var y = coerce('y');\n  var xlen = Lib.minRowLength(x);\n  var ylen = Lib.minRowLength(y);\n\n  // we could try to accept x0 and dx, etc...\n  // but that's a pretty weird use case.\n  // for now require both x and y explicitly specified.\n  if (!xlen || !ylen) {\n    traceOut.visible = false;\n    return;\n  }\n  traceOut._length = Math.min(xlen, ylen);\n  var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults');\n  handleCalendarDefaults(traceIn, traceOut, ['x', 'y'], layout);\n\n  // if marker.color is an array, we can use it in aggregation instead of z\n  var hasAggregationData = coerce('z') || coerce('marker.color');\n  if (hasAggregationData) coerce('histfunc');\n  coerce('histnorm');\n\n  // Note: bin defaults are now handled in Histogram2D.crossTraceDefaults\n  // autobin(x|y) are only included here to appease Plotly.validate\n  coerce('autobinx');\n  coerce('autobiny');\n};\n\n/***/ }),\n\n/***/ 99066:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2626246__) {\n\n\"use strict\";\n\n\nvar histogram2dAttrs = __nested_webpack_require_2626246__(35361);\nvar contourAttrs = __nested_webpack_require_2626246__(70600);\nvar colorScaleAttrs = __nested_webpack_require_2626246__(50693);\nvar axisHoverFormat = (__nested_webpack_require_2626246__(12663).axisHoverFormat);\nvar extendFlat = (__nested_webpack_require_2626246__(1426).extendFlat);\nmodule.exports = extendFlat({\n  x: histogram2dAttrs.x,\n  y: histogram2dAttrs.y,\n  z: histogram2dAttrs.z,\n  marker: histogram2dAttrs.marker,\n  histnorm: histogram2dAttrs.histnorm,\n  histfunc: histogram2dAttrs.histfunc,\n  nbinsx: histogram2dAttrs.nbinsx,\n  xbins: histogram2dAttrs.xbins,\n  nbinsy: histogram2dAttrs.nbinsy,\n  ybins: histogram2dAttrs.ybins,\n  autobinx: histogram2dAttrs.autobinx,\n  autobiny: histogram2dAttrs.autobiny,\n  bingroup: histogram2dAttrs.bingroup,\n  xbingroup: histogram2dAttrs.xbingroup,\n  ybingroup: histogram2dAttrs.ybingroup,\n  autocontour: contourAttrs.autocontour,\n  ncontours: contourAttrs.ncontours,\n  contours: contourAttrs.contours,\n  line: {\n    color: contourAttrs.line.color,\n    width: extendFlat({}, contourAttrs.line.width, {\n      dflt: 0.5\n    }),\n    dash: contourAttrs.line.dash,\n    smoothing: contourAttrs.line.smoothing,\n    editType: 'plot'\n  },\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  zhoverformat: axisHoverFormat('z', 1),\n  hovertemplate: histogram2dAttrs.hovertemplate,\n  texttemplate: contourAttrs.texttemplate,\n  textfont: contourAttrs.textfont\n}, colorScaleAttrs('', {\n  cLetter: 'z',\n  editTypeOverride: 'calc'\n}));\n\n/***/ }),\n\n/***/ 62654:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2627843__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2627843__(71828);\nvar handleSampleDefaults = __nested_webpack_require_2627843__(75238);\nvar handleContoursDefaults = __nested_webpack_require_2627843__(67217);\nvar handleStyleDefaults = __nested_webpack_require_2627843__(8724);\nvar handleHeatmapLabelDefaults = __nested_webpack_require_2627843__(58623);\nvar attributes = __nested_webpack_require_2627843__(99066);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  function coerce2(attr) {\n    return Lib.coerce2(traceIn, traceOut, attributes, attr);\n  }\n  handleSampleDefaults(traceIn, traceOut, coerce, layout);\n  if (traceOut.visible === false) return;\n  handleContoursDefaults(traceIn, traceOut, coerce, coerce2);\n  handleStyleDefaults(traceIn, traceOut, coerce, layout);\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  coerce('hovertemplate');\n  if (traceOut.contours && traceOut.contours.coloring === 'heatmap') {\n    handleHeatmapLabelDefaults(coerce, layout);\n  }\n};\n\n/***/ }),\n\n/***/ 35902:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2628971__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2628971__(99066),\n  supplyDefaults: __nested_webpack_require_2628971__(62654),\n  crossTraceDefaults: __nested_webpack_require_2628971__(82222),\n  calc: __nested_webpack_require_2628971__(27529),\n  plot: (__nested_webpack_require_2628971__(29854).plot),\n  layerName: 'contourlayer',\n  style: __nested_webpack_require_2628971__(84426),\n  colorbar: __nested_webpack_require_2628971__(90654),\n  hoverPoints: __nested_webpack_require_2628971__(52421),\n  moduleType: 'trace',\n  name: 'histogram2dcontour',\n  basePlotModule: __nested_webpack_require_2628971__(93612),\n  categories: ['cartesian', 'svg', '2dMap', 'contour', 'histogram', 'showLegend'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 46291:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2629667__) {\n\n\"use strict\";\n\n\nvar hovertemplateAttrs = (__nested_webpack_require_2629667__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_2629667__(5386)/* .texttemplateAttrs */ .s);\nvar colorScaleAttrs = __nested_webpack_require_2629667__(50693);\nvar domainAttrs = (__nested_webpack_require_2629667__(27670)/* .attributes */ .Y);\nvar pieAttrs = __nested_webpack_require_2629667__(34000);\nvar sunburstAttrs = __nested_webpack_require_2629667__(57564);\nvar treemapAttrs = __nested_webpack_require_2629667__(45802);\nvar constants = __nested_webpack_require_2629667__(43473);\nvar extendFlat = (__nested_webpack_require_2629667__(1426).extendFlat);\nmodule.exports = {\n  labels: sunburstAttrs.labels,\n  parents: sunburstAttrs.parents,\n  values: sunburstAttrs.values,\n  branchvalues: sunburstAttrs.branchvalues,\n  count: sunburstAttrs.count,\n  level: sunburstAttrs.level,\n  maxdepth: sunburstAttrs.maxdepth,\n  tiling: {\n    orientation: {\n      valType: 'enumerated',\n      values: ['v', 'h'],\n      dflt: 'h',\n      editType: 'plot'\n    },\n    flip: treemapAttrs.tiling.flip,\n    pad: {\n      valType: 'number',\n      min: 0,\n      dflt: 0,\n      editType: 'plot'\n    },\n    editType: 'calc'\n  },\n  marker: extendFlat({\n    colors: sunburstAttrs.marker.colors,\n    line: sunburstAttrs.marker.line,\n    editType: 'calc'\n  }, colorScaleAttrs('marker', {\n    colorAttr: 'colors',\n    anim: false // TODO: set to anim: true?\n  })),\n\n  leaf: sunburstAttrs.leaf,\n  pathbar: treemapAttrs.pathbar,\n  text: pieAttrs.text,\n  textinfo: sunburstAttrs.textinfo,\n  // TODO: incorporate `label` and `value` in the eventData\n  texttemplate: texttemplateAttrs({\n    editType: 'plot'\n  }, {\n    keys: constants.eventDataKeys.concat(['label', 'value'])\n  }),\n  hovertext: pieAttrs.hovertext,\n  hoverinfo: sunburstAttrs.hoverinfo,\n  hovertemplate: hovertemplateAttrs({}, {\n    keys: constants.eventDataKeys\n  }),\n  textfont: pieAttrs.textfont,\n  insidetextfont: pieAttrs.insidetextfont,\n  outsidetextfont: treemapAttrs.outsidetextfont,\n  textposition: treemapAttrs.textposition,\n  sort: pieAttrs.sort,\n  root: sunburstAttrs.root,\n  domain: domainAttrs({\n    name: 'icicle',\n    trace: true,\n    editType: 'calc'\n  })\n};\n\n/***/ }),\n\n/***/ 96346:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_2631851__) {\n\n\"use strict\";\n\n\nvar plots = __nested_webpack_require_2631851__(74875);\nexports.name = 'icicle';\nexports.plot = function (gd, traces, transitionOpts, makeOnCompleteCallback) {\n  plots.plotBasePlot(exports.name, gd, traces, transitionOpts, makeOnCompleteCallback);\n};\nexports.clean = function (newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  plots.cleanBasePlot(exports.name, newFullData, newFullLayout, oldFullData, oldFullLayout);\n};\n\n/***/ }),\n\n/***/ 46584:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_2632381__) {\n\n\"use strict\";\n\n\nvar calc = __nested_webpack_require_2632381__(52147);\nexports.y = function (gd, trace) {\n  return calc.calc(gd, trace);\n};\nexports.T = function (gd) {\n  return calc._runCrossTraceCalc('icicle', gd);\n};\n\n/***/ }),\n\n/***/ 56524:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2632683__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2632683__(71828);\nvar attributes = __nested_webpack_require_2632683__(46291);\nvar Color = __nested_webpack_require_2632683__(7901);\nvar handleDomainDefaults = (__nested_webpack_require_2632683__(27670)/* .defaults */ .c);\nvar handleText = (__nested_webpack_require_2632683__(90769).handleText);\nvar TEXTPAD = (__nested_webpack_require_2632683__(97313).TEXTPAD);\nvar Colorscale = __nested_webpack_require_2632683__(21081);\nvar hasColorscale = Colorscale.hasColorscale;\nvar colorscaleDefaults = Colorscale.handleDefaults;\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var labels = coerce('labels');\n  var parents = coerce('parents');\n  if (!labels || !labels.length || !parents || !parents.length) {\n    traceOut.visible = false;\n    return;\n  }\n  var vals = coerce('values');\n  if (vals && vals.length) {\n    coerce('branchvalues');\n  } else {\n    coerce('count');\n  }\n  coerce('level');\n  coerce('maxdepth');\n  coerce('tiling.orientation');\n  coerce('tiling.flip');\n  coerce('tiling.pad');\n  var text = coerce('text');\n  coerce('texttemplate');\n  if (!traceOut.texttemplate) coerce('textinfo', Array.isArray(text) ? 'text+label' : 'label');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  var hasPathbar = coerce('pathbar.visible');\n  var textposition = 'auto';\n  handleText(traceIn, traceOut, layout, coerce, textposition, {\n    hasPathbar: hasPathbar,\n    moduleHasSelected: false,\n    moduleHasUnselected: false,\n    moduleHasConstrain: false,\n    moduleHasCliponaxis: false,\n    moduleHasTextangle: false,\n    moduleHasInsideanchor: false\n  });\n  coerce('textposition');\n  var lineWidth = coerce('marker.line.width');\n  if (lineWidth) coerce('marker.line.color', layout.paper_bgcolor);\n  coerce('marker.colors');\n  var withColorscale = traceOut._hasColorscale = hasColorscale(traceIn, 'marker', 'colors') || (traceIn.marker || {}).coloraxis // N.B. special logic to consider \"values\" colorscales\n  ;\n\n  if (withColorscale) {\n    colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n      prefix: 'marker.',\n      cLetter: 'c'\n    });\n  }\n  coerce('leaf.opacity', withColorscale ? 1 : 0.7);\n  traceOut._hovered = {\n    marker: {\n      line: {\n        width: 2,\n        color: Color.contrast(layout.paper_bgcolor)\n      }\n    }\n  };\n  if (hasPathbar) {\n    // This works even for multi-line labels as icicle pathbar trim out line breaks\n    coerce('pathbar.thickness', traceOut.pathbar.textfont.size + 2 * TEXTPAD);\n    coerce('pathbar.side');\n    coerce('pathbar.edgeshape');\n  }\n  coerce('sort');\n  coerce('root.color');\n  handleDomainDefaults(traceOut, layout, coerce);\n\n  // do not support transforms for now\n  traceOut._length = null;\n};\n\n/***/ }),\n\n/***/ 90666:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2635522__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2635522__(39898);\nvar Lib = __nested_webpack_require_2635522__(71828);\nvar Drawing = __nested_webpack_require_2635522__(91424);\nvar svgTextUtils = __nested_webpack_require_2635522__(63893);\nvar partition = __nested_webpack_require_2635522__(21538);\nvar styleOne = (__nested_webpack_require_2635522__(82454).styleOne);\nvar constants = __nested_webpack_require_2635522__(43473);\nvar helpers = __nested_webpack_require_2635522__(2791);\nvar attachFxHandlers = __nested_webpack_require_2635522__(83523);\nvar formatSliceLabel = (__nested_webpack_require_2635522__(24714).formatSliceLabel);\nvar onPathbar = false; // for Descendants\n\nmodule.exports = function drawDescendants(gd, cd, entry, slices, opts) {\n  var width = opts.width;\n  var height = opts.height;\n  var viewX = opts.viewX;\n  var viewY = opts.viewY;\n  var pathSlice = opts.pathSlice;\n  var toMoveInsideSlice = opts.toMoveInsideSlice;\n  var strTransform = opts.strTransform;\n  var hasTransition = opts.hasTransition;\n  var handleSlicesExit = opts.handleSlicesExit;\n  var makeUpdateSliceInterpolator = opts.makeUpdateSliceInterpolator;\n  var makeUpdateTextInterpolator = opts.makeUpdateTextInterpolator;\n  var prevEntry = opts.prevEntry;\n  var refRect = {};\n  var isStatic = gd._context.staticPlot;\n  var fullLayout = gd._fullLayout;\n  var cd0 = cd[0];\n  var trace = cd0.trace;\n  var hasLeft = trace.textposition.indexOf('left') !== -1;\n  var hasRight = trace.textposition.indexOf('right') !== -1;\n  var hasBottom = trace.textposition.indexOf('bottom') !== -1;\n\n  // N.B. slice data isn't the calcdata,\n  // grab corresponding calcdata item in sliceData[i].data.data\n  var allData = partition(entry, [width, height], {\n    flipX: trace.tiling.flip.indexOf('x') > -1,\n    flipY: trace.tiling.flip.indexOf('y') > -1,\n    orientation: trace.tiling.orientation,\n    pad: {\n      inner: trace.tiling.pad\n    },\n    maxDepth: trace._maxDepth\n  });\n  var sliceData = allData.descendants();\n  var minVisibleDepth = Infinity;\n  var maxVisibleDepth = -Infinity;\n  sliceData.forEach(function (pt) {\n    var depth = pt.depth;\n    if (depth >= trace._maxDepth) {\n      // hide slices that won't show up on graph\n      pt.x0 = pt.x1 = (pt.x0 + pt.x1) / 2;\n      pt.y0 = pt.y1 = (pt.y0 + pt.y1) / 2;\n    } else {\n      minVisibleDepth = Math.min(minVisibleDepth, depth);\n      maxVisibleDepth = Math.max(maxVisibleDepth, depth);\n    }\n  });\n  slices = slices.data(sliceData, helpers.getPtId);\n  trace._maxVisibleLayers = isFinite(maxVisibleDepth) ? maxVisibleDepth - minVisibleDepth + 1 : 0;\n  slices.enter().append('g').classed('slice', true);\n  handleSlicesExit(slices, onPathbar, refRect, [width, height], pathSlice);\n  slices.order();\n\n  // next coords of previous entry\n  var nextOfPrevEntry = null;\n  if (hasTransition && prevEntry) {\n    var prevEntryId = helpers.getPtId(prevEntry);\n    slices.each(function (pt) {\n      if (nextOfPrevEntry === null && helpers.getPtId(pt) === prevEntryId) {\n        nextOfPrevEntry = {\n          x0: pt.x0,\n          x1: pt.x1,\n          y0: pt.y0,\n          y1: pt.y1\n        };\n      }\n    });\n  }\n  var getRefRect = function () {\n    return nextOfPrevEntry || {\n      x0: 0,\n      x1: width,\n      y0: 0,\n      y1: height\n    };\n  };\n  var updateSlices = slices;\n  if (hasTransition) {\n    updateSlices = updateSlices.transition().each('end', function () {\n      // N.B. gd._transitioning is (still) *true* by the time\n      // transition updates get here\n      var sliceTop = d3.select(this);\n      helpers.setSliceCursor(sliceTop, gd, {\n        hideOnRoot: true,\n        hideOnLeaves: false,\n        isTransitioning: false\n      });\n    });\n  }\n  updateSlices.each(function (pt) {\n    // for bbox\n    pt._x0 = viewX(pt.x0);\n    pt._x1 = viewX(pt.x1);\n    pt._y0 = viewY(pt.y0);\n    pt._y1 = viewY(pt.y1);\n    pt._hoverX = viewX(pt.x1 - trace.tiling.pad), pt._hoverY = hasBottom ? viewY(pt.y1 - trace.tiling.pad / 2) : viewY(pt.y0 + trace.tiling.pad / 2);\n    var sliceTop = d3.select(this);\n    var slicePath = Lib.ensureSingle(sliceTop, 'path', 'surface', function (s) {\n      s.style('pointer-events', isStatic ? 'none' : 'all');\n    });\n    if (hasTransition) {\n      slicePath.transition().attrTween('d', function (pt2) {\n        var interp = makeUpdateSliceInterpolator(pt2, onPathbar, getRefRect(), [width, height], {\n          orientation: trace.tiling.orientation,\n          flipX: trace.tiling.flip.indexOf('x') > -1,\n          flipY: trace.tiling.flip.indexOf('y') > -1\n        });\n        return function (t) {\n          return pathSlice(interp(t));\n        };\n      });\n    } else {\n      slicePath.attr('d', pathSlice);\n    }\n    sliceTop.call(attachFxHandlers, entry, gd, cd, {\n      styleOne: styleOne,\n      eventDataKeys: constants.eventDataKeys,\n      transitionTime: constants.CLICK_TRANSITION_TIME,\n      transitionEasing: constants.CLICK_TRANSITION_EASING\n    }).call(helpers.setSliceCursor, gd, {\n      isTransitioning: gd._transitioning\n    });\n    slicePath.call(styleOne, pt, trace, {\n      hovered: false\n    });\n    if (pt.x0 === pt.x1 || pt.y0 === pt.y1) {\n      pt._text = '';\n    } else {\n      pt._text = formatSliceLabel(pt, entry, trace, cd, fullLayout) || '';\n    }\n    var sliceTextGroup = Lib.ensureSingle(sliceTop, 'g', 'slicetext');\n    var sliceText = Lib.ensureSingle(sliceTextGroup, 'text', '', function (s) {\n      // prohibit tex interpretation until we can handle\n      // tex and regular text together\n      s.attr('data-notex', 1);\n    });\n    var font = Lib.ensureUniformFontSize(gd, helpers.determineTextFont(trace, pt, fullLayout.font));\n    sliceText.text(pt._text || ' ') // use one space character instead of a blank string to avoid jumps during transition\n    .classed('slicetext', true).attr('text-anchor', hasRight ? 'end' : hasLeft ? 'start' : 'middle').call(Drawing.font, font).call(svgTextUtils.convertToTspans, gd);\n    pt.textBB = Drawing.bBox(sliceText.node());\n    pt.transform = toMoveInsideSlice(pt, {\n      fontSize: font.size\n    });\n    pt.transform.fontSize = font.size;\n    if (hasTransition) {\n      sliceText.transition().attrTween('transform', function (pt2) {\n        var interp = makeUpdateTextInterpolator(pt2, onPathbar, getRefRect(), [width, height]);\n        return function (t) {\n          return strTransform(interp(t));\n        };\n      });\n    } else {\n      sliceText.attr('transform', strTransform(pt));\n    }\n  });\n  return nextOfPrevEntry;\n};\n\n/***/ }),\n\n/***/ 69816:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2641936__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'trace',\n  name: 'icicle',\n  basePlotModule: __nested_webpack_require_2641936__(96346),\n  categories: [],\n  animatable: true,\n  attributes: __nested_webpack_require_2641936__(46291),\n  layoutAttributes: __nested_webpack_require_2641936__(92894),\n  supplyDefaults: __nested_webpack_require_2641936__(56524),\n  supplyLayoutDefaults: __nested_webpack_require_2641936__(21070),\n  calc: (__nested_webpack_require_2641936__(46584)/* .calc */ .y),\n  crossTraceCalc: (__nested_webpack_require_2641936__(46584)/* .crossTraceCalc */ .T),\n  plot: __nested_webpack_require_2641936__(85596),\n  style: (__nested_webpack_require_2641936__(82454).style),\n  colorbar: __nested_webpack_require_2641936__(4898),\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 92894:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  iciclecolorway: {\n    valType: 'colorlist',\n    editType: 'calc'\n  },\n  extendiciclecolors: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc'\n  }\n};\n\n/***/ }),\n\n/***/ 21070:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2642892__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2642892__(71828);\nvar layoutAttributes = __nested_webpack_require_2642892__(92894);\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n  }\n  coerce('iciclecolorway', layoutOut.colorway);\n  coerce('extendiciclecolors');\n};\n\n/***/ }),\n\n/***/ 21538:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2643359__) {\n\n\"use strict\";\n\n\nvar d3Hierarchy = __nested_webpack_require_2643359__(674);\nvar flipTree = __nested_webpack_require_2643359__(14102);\nmodule.exports = function partition(entry, size, opts) {\n  var flipX = opts.flipX;\n  var flipY = opts.flipY;\n  var swapXY = opts.orientation === 'h';\n  var maxDepth = opts.maxDepth;\n  var newWidth = size[0];\n  var newHeight = size[1];\n  if (maxDepth) {\n    newWidth = (entry.height + 1) * size[0] / Math.min(entry.height + 1, maxDepth);\n    newHeight = (entry.height + 1) * size[1] / Math.min(entry.height + 1, maxDepth);\n  }\n  var result = d3Hierarchy.partition().padding(opts.pad.inner).size(swapXY ? [size[1], newWidth] : [size[0], newHeight])(entry);\n  if (swapXY || flipX || flipY) {\n    flipTree(result, size, {\n      swapXY: swapXY,\n      flipX: flipX,\n      flipY: flipY\n    });\n  }\n  return result;\n};\n\n/***/ }),\n\n/***/ 85596:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2644272__) {\n\n\"use strict\";\n\n\nvar draw = __nested_webpack_require_2644272__(80694);\nvar drawDescendants = __nested_webpack_require_2644272__(90666);\nmodule.exports = function _plot(gd, cdmodule, transitionOpts, makeOnCompleteCallback) {\n  return draw(gd, cdmodule, transitionOpts, makeOnCompleteCallback, {\n    type: 'icicle',\n    drawDescendants: drawDescendants\n  });\n};\n\n/***/ }),\n\n/***/ 82454:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2644700__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2644700__(39898);\nvar Color = __nested_webpack_require_2644700__(7901);\nvar Lib = __nested_webpack_require_2644700__(71828);\nvar resizeText = (__nested_webpack_require_2644700__(72597).resizeText);\nfunction style(gd) {\n  var s = gd._fullLayout._iciclelayer.selectAll('.trace');\n  resizeText(gd, s, 'icicle');\n  s.each(function (cd) {\n    var gTrace = d3.select(this);\n    var cd0 = cd[0];\n    var trace = cd0.trace;\n    gTrace.style('opacity', trace.opacity);\n    gTrace.selectAll('path.surface').each(function (pt) {\n      d3.select(this).call(styleOne, pt, trace);\n    });\n  });\n}\nfunction styleOne(s, pt, trace) {\n  var cdi = pt.data.data;\n  var isLeaf = !pt.children;\n  var ptNumber = cdi.i;\n  var lineColor = Lib.castOption(trace, ptNumber, 'marker.line.color') || Color.defaultLine;\n  var lineWidth = Lib.castOption(trace, ptNumber, 'marker.line.width') || 0;\n  s.style('stroke-width', lineWidth).call(Color.fill, cdi.color).call(Color.stroke, lineColor).style('opacity', isLeaf ? trace.leaf.opacity : null);\n}\nmodule.exports = {\n  style: style,\n  styleOne: styleOne\n};\n\n/***/ }),\n\n/***/ 17230:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2645865__) {\n\n\"use strict\";\n\n\nvar baseAttrs = __nested_webpack_require_2645865__(9012);\nvar hovertemplateAttrs = (__nested_webpack_require_2645865__(5386)/* .hovertemplateAttrs */ .f);\nvar extendFlat = (__nested_webpack_require_2645865__(1426).extendFlat);\nvar colormodel = (__nested_webpack_require_2645865__(51877).colormodel);\nvar cm = ['rgb', 'rgba', 'rgba256', 'hsl', 'hsla'];\nvar zminDesc = [];\nvar zmaxDesc = [];\nfor (var i = 0; i < cm.length; i++) {\n  var cr = colormodel[cm[i]];\n  zminDesc.push('For the `' + cm[i] + '` colormodel, it is [' + (cr.zminDflt || cr.min).join(', ') + '].');\n  zmaxDesc.push('For the `' + cm[i] + '` colormodel, it is [' + (cr.zmaxDflt || cr.max).join(', ') + '].');\n}\nmodule.exports = extendFlat({\n  source: {\n    valType: 'string',\n    editType: 'calc'\n  },\n  z: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  colormodel: {\n    valType: 'enumerated',\n    values: cm,\n    editType: 'calc'\n  },\n  zsmooth: {\n    valType: 'enumerated',\n    values: ['fast', false],\n    dflt: false,\n    editType: 'plot'\n  },\n  zmin: {\n    valType: 'info_array',\n    items: [{\n      valType: 'number',\n      editType: 'calc'\n    }, {\n      valType: 'number',\n      editType: 'calc'\n    }, {\n      valType: 'number',\n      editType: 'calc'\n    }, {\n      valType: 'number',\n      editType: 'calc'\n    }],\n    editType: 'calc'\n  },\n  zmax: {\n    valType: 'info_array',\n    items: [{\n      valType: 'number',\n      editType: 'calc'\n    }, {\n      valType: 'number',\n      editType: 'calc'\n    }, {\n      valType: 'number',\n      editType: 'calc'\n    }, {\n      valType: 'number',\n      editType: 'calc'\n    }],\n    editType: 'calc'\n  },\n  x0: {\n    valType: 'any',\n    dflt: 0,\n    editType: 'calc+clearAxisTypes'\n  },\n  y0: {\n    valType: 'any',\n    dflt: 0,\n    editType: 'calc+clearAxisTypes'\n  },\n  dx: {\n    valType: 'number',\n    dflt: 1,\n    editType: 'calc'\n  },\n  dy: {\n    valType: 'number',\n    dflt: 1,\n    editType: 'calc'\n  },\n  text: {\n    valType: 'data_array',\n    editType: 'plot'\n  },\n  hovertext: {\n    valType: 'data_array',\n    editType: 'plot'\n  },\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {\n    flags: ['x', 'y', 'z', 'color', 'name', 'text'],\n    dflt: 'x+y+z+text+name'\n  }),\n  hovertemplate: hovertemplateAttrs({}, {\n    keys: ['z', 'color', 'colormodel']\n  }),\n  transforms: undefined\n});\n\n/***/ }),\n\n/***/ 71113:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2648240__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2648240__(71828);\nvar constants = __nested_webpack_require_2648240__(51877);\nvar isNumeric = __nested_webpack_require_2648240__(92770);\nvar Axes = __nested_webpack_require_2648240__(89298);\nvar maxRowLength = (__nested_webpack_require_2648240__(71828).maxRowLength);\nvar getImageSize = (__nested_webpack_require_2648240__(67395)/* .getImageSize */ .A);\nmodule.exports = function calc(gd, trace) {\n  var h;\n  var w;\n  if (trace._hasZ) {\n    h = trace.z.length;\n    w = maxRowLength(trace.z);\n  } else if (trace._hasSource) {\n    var size = getImageSize(trace.source);\n    h = size.height;\n    w = size.width;\n  }\n  var xa = Axes.getFromId(gd, trace.xaxis || 'x');\n  var ya = Axes.getFromId(gd, trace.yaxis || 'y');\n  var x0 = xa.d2c(trace.x0) - trace.dx / 2;\n  var y0 = ya.d2c(trace.y0) - trace.dy / 2;\n\n  // Set axis range\n  var i;\n  var xrange = [x0, x0 + w * trace.dx];\n  var yrange = [y0, y0 + h * trace.dy];\n  if (xa && xa.type === 'log') for (i = 0; i < w; i++) xrange.push(x0 + i * trace.dx);\n  if (ya && ya.type === 'log') for (i = 0; i < h; i++) yrange.push(y0 + i * trace.dy);\n  trace._extremes[xa._id] = Axes.findExtremes(xa, xrange);\n  trace._extremes[ya._id] = Axes.findExtremes(ya, yrange);\n  trace._scaler = makeScaler(trace);\n  var cd0 = {\n    x0: x0,\n    y0: y0,\n    z: trace.z,\n    w: w,\n    h: h\n  };\n  return [cd0];\n};\nfunction scale(zero, ratio, min, max) {\n  return function (c) {\n    return Lib.constrain((c - zero) * ratio, min, max);\n  };\n}\nfunction constrain(min, max) {\n  return function (c) {\n    return Lib.constrain(c, min, max);\n  };\n}\n\n// Generate a function to scale color components according to zmin/zmax and the colormodel\nfunction makeScaler(trace) {\n  var cr = constants.colormodel[trace.colormodel];\n  var colormodel = cr.colormodel || trace.colormodel;\n  var n = colormodel.length;\n  trace._sArray = [];\n  // Loop over all color components\n  for (var k = 0; k < n; k++) {\n    if (cr.min[k] !== trace.zmin[k] || cr.max[k] !== trace.zmax[k]) {\n      trace._sArray.push(scale(trace.zmin[k], (cr.max[k] - cr.min[k]) / (trace.zmax[k] - trace.zmin[k]), cr.min[k], cr.max[k]));\n    } else {\n      trace._sArray.push(constrain(cr.min[k], cr.max[k]));\n    }\n  }\n  return function (pixel) {\n    var c = pixel.slice(0, n);\n    for (var k = 0; k < n; k++) {\n      var ck = c[k];\n      if (!isNumeric(ck)) return false;\n      c[k] = trace._sArray[k](ck);\n    }\n    return c;\n  };\n}\n\n/***/ }),\n\n/***/ 51877:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  colormodel: {\n    // min and max define the numerical range accepted in CSS\n    // If z(min|max)Dflt are not defined, z(min|max) will default to min/max\n    rgb: {\n      min: [0, 0, 0],\n      max: [255, 255, 255],\n      fmt: function (c) {\n        return c.slice(0, 3);\n      },\n      suffix: ['', '', '']\n    },\n    rgba: {\n      min: [0, 0, 0, 0],\n      max: [255, 255, 255, 1],\n      fmt: function (c) {\n        return c.slice(0, 4);\n      },\n      suffix: ['', '', '', '']\n    },\n    rgba256: {\n      colormodel: 'rgba',\n      // because rgba256 is not an accept colormodel in CSS\n      zminDflt: [0, 0, 0, 0],\n      zmaxDflt: [255, 255, 255, 255],\n      min: [0, 0, 0, 0],\n      max: [255, 255, 255, 1],\n      fmt: function (c) {\n        return c.slice(0, 4);\n      },\n      suffix: ['', '', '', '']\n    },\n    hsl: {\n      min: [0, 0, 0],\n      max: [360, 100, 100],\n      fmt: function (c) {\n        var p = c.slice(0, 3);\n        p[1] = p[1] + '%';\n        p[2] = p[2] + '%';\n        return p;\n      },\n      suffix: ['°', '%', '%']\n    },\n    hsla: {\n      min: [0, 0, 0, 0],\n      max: [360, 100, 100, 1],\n      fmt: function (c) {\n        var p = c.slice(0, 4);\n        p[1] = p[1] + '%';\n        p[2] = p[2] + '%';\n        return p;\n      },\n      suffix: ['°', '%', '%', '']\n    }\n  },\n  // For pixelated image rendering\n  // http://phrogz.net/tmp/canvas_image_zoom.html\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/image-rendering\n  pixelatedStyle: ['image-rendering: optimizeSpeed', 'image-rendering: -moz-crisp-edges', 'image-rendering: -o-crisp-edges', 'image-rendering: -webkit-optimize-contrast', 'image-rendering: optimize-contrast', 'image-rendering: crisp-edges', 'image-rendering: pixelated', ''].join('; ')\n};\n\n/***/ }),\n\n/***/ 13245:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2652540__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2652540__(71828);\nvar attributes = __nested_webpack_require_2652540__(17230);\nvar constants = __nested_webpack_require_2652540__(51877);\nvar dataUri = (__nested_webpack_require_2652540__(25095).IMAGE_URL_PREFIX);\nmodule.exports = function supplyDefaults(traceIn, traceOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  coerce('source');\n  // sanitize source to only allow for data URI representing images\n  if (traceOut.source && !traceOut.source.match(dataUri)) delete traceOut.source;\n  traceOut._hasSource = !!traceOut.source;\n  var z = coerce('z');\n  traceOut._hasZ = !(z === undefined || !z.length || !z[0] || !z[0].length);\n  if (!traceOut._hasZ && !traceOut._hasSource) {\n    traceOut.visible = false;\n    return;\n  }\n  coerce('x0');\n  coerce('y0');\n  coerce('dx');\n  coerce('dy');\n  var cm;\n  if (traceOut._hasZ) {\n    coerce('colormodel', 'rgb');\n    cm = constants.colormodel[traceOut.colormodel];\n    coerce('zmin', cm.zminDflt || cm.min);\n    coerce('zmax', cm.zmaxDflt || cm.max);\n  } else if (traceOut._hasSource) {\n    traceOut.colormodel = 'rgba256';\n    cm = constants.colormodel[traceOut.colormodel];\n    traceOut.zmin = cm.zminDflt;\n    traceOut.zmax = cm.zmaxDflt;\n  }\n  coerce('zsmooth');\n  coerce('text');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  traceOut._length = null;\n};\n\n/***/ }),\n\n/***/ 30835:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function eventData(out, pt) {\n  if ('xVal' in pt) out.x = pt.xVal;\n  if ('yVal' in pt) out.y = pt.yVal;\n  if (pt.xa) out.xaxis = pt.xa;\n  if (pt.ya) out.yaxis = pt.ya;\n  out.color = pt.color;\n  out.colormodel = pt.trace.colormodel;\n  if (!out.z) out.z = pt.color;\n  return out;\n};\n\n/***/ }),\n\n/***/ 67395:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_2654364__) {\n\n\"use strict\";\n\n\nvar probeSync = __nested_webpack_require_2654364__(33575);\nvar dataUri = (__nested_webpack_require_2654364__(25095).IMAGE_URL_PREFIX);\nvar Buffer = (__nested_webpack_require_2654364__(12856).Buffer); // note: the trailing slash is important!\n\nexports.A = function (src) {\n  var data = src.replace(dataUri, '');\n  var buff = new Buffer(data, 'base64');\n  return probeSync(buff);\n};\n\n/***/ }),\n\n/***/ 28749:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2654815__) {\n\n\"use strict\";\n\n\nvar Fx = __nested_webpack_require_2654815__(30211);\nvar Lib = __nested_webpack_require_2654815__(71828);\nvar constants = __nested_webpack_require_2654815__(51877);\nmodule.exports = function hoverPoints(pointData, xval, yval) {\n  var cd0 = pointData.cd[0];\n  var trace = cd0.trace;\n  var xa = pointData.xa;\n  var ya = pointData.ya;\n\n  // Return early if not on image\n  if (Fx.inbox(xval - cd0.x0, xval - (cd0.x0 + cd0.w * trace.dx), 0) > 0 || Fx.inbox(yval - cd0.y0, yval - (cd0.y0 + cd0.h * trace.dy), 0) > 0) {\n    return;\n  }\n\n  // Find nearest pixel's index\n  var nx = Math.floor((xval - cd0.x0) / trace.dx);\n  var ny = Math.floor(Math.abs(yval - cd0.y0) / trace.dy);\n  var pixel;\n  if (trace._hasZ) {\n    pixel = cd0.z[ny][nx];\n  } else if (trace._hasSource) {\n    pixel = trace._canvas.el.getContext('2d', {\n      willReadFrequently: true\n    }).getImageData(nx, ny, 1, 1).data;\n  }\n\n  // return early if pixel is undefined\n  if (!pixel) return;\n  var hoverinfo = cd0.hi || trace.hoverinfo;\n  var fmtColor;\n  if (hoverinfo) {\n    var parts = hoverinfo.split('+');\n    if (parts.indexOf('all') !== -1) parts = ['color'];\n    if (parts.indexOf('color') !== -1) fmtColor = true;\n  }\n  var cr = constants.colormodel[trace.colormodel];\n  var colormodel = cr.colormodel || trace.colormodel;\n  var dims = colormodel.length;\n  var c = trace._scaler(pixel);\n  var s = cr.suffix;\n  var colorstring = [];\n  if (trace.hovertemplate || fmtColor) {\n    colorstring.push('[' + [c[0] + s[0], c[1] + s[1], c[2] + s[2]].join(', '));\n    if (dims === 4) colorstring.push(', ' + c[3] + s[3]);\n    colorstring.push(']');\n    colorstring = colorstring.join('');\n    pointData.extraText = colormodel.toUpperCase() + ': ' + colorstring;\n  }\n  var text;\n  if (Array.isArray(trace.hovertext) && Array.isArray(trace.hovertext[ny])) {\n    text = trace.hovertext[ny][nx];\n  } else if (Array.isArray(trace.text) && Array.isArray(trace.text[ny])) {\n    text = trace.text[ny][nx];\n  }\n\n  // TODO: for color model with 3 dims, display something useful for hovertemplate `%{color[3]}`\n  var py = ya.c2p(cd0.y0 + (ny + 0.5) * trace.dy);\n  var xVal = cd0.x0 + (nx + 0.5) * trace.dx;\n  var yVal = cd0.y0 + (ny + 0.5) * trace.dy;\n  var zLabel = '[' + pixel.slice(0, trace.colormodel.length).join(', ') + ']';\n  return [Lib.extendFlat(pointData, {\n    index: [ny, nx],\n    x0: xa.c2p(cd0.x0 + nx * trace.dx),\n    x1: xa.c2p(cd0.x0 + (nx + 1) * trace.dx),\n    y0: py,\n    y1: py,\n    color: c,\n    xVal: xVal,\n    xLabelVal: xVal,\n    yVal: yVal,\n    yLabelVal: yVal,\n    zLabelVal: zLabel,\n    text: text,\n    hovertemplateLabels: {\n      'zLabel': zLabel,\n      'colorLabel': colorstring,\n      'color[0]Label': c[0] + s[0],\n      'color[1]Label': c[1] + s[1],\n      'color[2]Label': c[2] + s[2],\n      'color[3]Label': c[3] + s[3]\n    }\n  })];\n};\n\n/***/ }),\n\n/***/ 94507:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2657700__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2657700__(17230),\n  supplyDefaults: __nested_webpack_require_2657700__(13245),\n  calc: __nested_webpack_require_2657700__(71113),\n  plot: __nested_webpack_require_2657700__(60775),\n  style: __nested_webpack_require_2657700__(12826),\n  hoverPoints: __nested_webpack_require_2657700__(28749),\n  eventData: __nested_webpack_require_2657700__(30835),\n  moduleType: 'trace',\n  name: 'image',\n  basePlotModule: __nested_webpack_require_2657700__(93612),\n  categories: ['cartesian', 'svg', '2dMap', 'noSortingByValue'],\n  animatable: false,\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 60775:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2658301__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2658301__(39898);\nvar Lib = __nested_webpack_require_2658301__(71828);\nvar strTranslate = Lib.strTranslate;\nvar xmlnsNamespaces = __nested_webpack_require_2658301__(77922);\nvar constants = __nested_webpack_require_2658301__(51877);\nvar unsupportedBrowsers = Lib.isIOS() || Lib.isSafari() || Lib.isIE();\nmodule.exports = function plot(gd, plotinfo, cdimage, imageLayer) {\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  var supportsPixelatedImage = !(unsupportedBrowsers || gd._context._exportedPlot);\n  Lib.makeTraceGroups(imageLayer, cdimage, 'im').each(function (cd) {\n    var plotGroup = d3.select(this);\n    var cd0 = cd[0];\n    var trace = cd0.trace;\n    var realImage = (trace.zsmooth === 'fast' || trace.zsmooth === false && supportsPixelatedImage) && !trace._hasZ && trace._hasSource && xa.type === 'linear' && ya.type === 'linear';\n    trace._realImage = realImage;\n    var z = cd0.z;\n    var x0 = cd0.x0;\n    var y0 = cd0.y0;\n    var w = cd0.w;\n    var h = cd0.h;\n    var dx = trace.dx;\n    var dy = trace.dy;\n    var left, right, temp, top, bottom, i;\n    // in case of log of a negative\n    i = 0;\n    while (left === undefined && i < w) {\n      left = xa.c2p(x0 + i * dx);\n      i++;\n    }\n    i = w;\n    while (right === undefined && i > 0) {\n      right = xa.c2p(x0 + i * dx);\n      i--;\n    }\n    i = 0;\n    while (top === undefined && i < h) {\n      top = ya.c2p(y0 + i * dy);\n      i++;\n    }\n    i = h;\n    while (bottom === undefined && i > 0) {\n      bottom = ya.c2p(y0 + i * dy);\n      i--;\n    }\n    if (right < left) {\n      temp = right;\n      right = left;\n      left = temp;\n    }\n    if (bottom < top) {\n      temp = top;\n      top = bottom;\n      bottom = temp;\n    }\n\n    // Reduce image size when zoomed in to save memory\n    if (!realImage) {\n      var extra = 0.5; // half the axis size\n      left = Math.max(-extra * xa._length, left);\n      right = Math.min((1 + extra) * xa._length, right);\n      top = Math.max(-extra * ya._length, top);\n      bottom = Math.min((1 + extra) * ya._length, bottom);\n    }\n    var imageWidth = Math.round(right - left);\n    var imageHeight = Math.round(bottom - top);\n\n    // if image is entirely off-screen, don't even draw it\n    var isOffScreen = imageWidth <= 0 || imageHeight <= 0;\n    if (isOffScreen) {\n      var noImage = plotGroup.selectAll('image').data([]);\n      noImage.exit().remove();\n      return;\n    }\n\n    // Create a new canvas and draw magnified pixels on it\n    function drawMagnifiedPixelsOnCanvas(readPixel) {\n      var canvas = document.createElement('canvas');\n      canvas.width = imageWidth;\n      canvas.height = imageHeight;\n      var context = canvas.getContext('2d', {\n        willReadFrequently: true\n      });\n      var ipx = function (i) {\n        return Lib.constrain(Math.round(xa.c2p(x0 + i * dx) - left), 0, imageWidth);\n      };\n      var jpx = function (j) {\n        return Lib.constrain(Math.round(ya.c2p(y0 + j * dy) - top), 0, imageHeight);\n      };\n      var cr = constants.colormodel[trace.colormodel];\n      var colormodel = cr.colormodel || trace.colormodel;\n      var fmt = cr.fmt;\n      var c;\n      for (i = 0; i < cd0.w; i++) {\n        var ipx0 = ipx(i);\n        var ipx1 = ipx(i + 1);\n        if (ipx1 === ipx0 || isNaN(ipx1) || isNaN(ipx0)) continue;\n        for (var j = 0; j < cd0.h; j++) {\n          var jpx0 = jpx(j);\n          var jpx1 = jpx(j + 1);\n          if (jpx1 === jpx0 || isNaN(jpx1) || isNaN(jpx0) || !readPixel(i, j)) continue;\n          c = trace._scaler(readPixel(i, j));\n          if (c) {\n            context.fillStyle = colormodel + '(' + fmt(c).join(',') + ')';\n          } else {\n            // Return a transparent pixel\n            context.fillStyle = 'rgba(0,0,0,0)';\n          }\n          context.fillRect(ipx0, jpx0, ipx1 - ipx0, jpx1 - jpx0);\n        }\n      }\n      return canvas;\n    }\n    var image3 = plotGroup.selectAll('image').data([cd]);\n    image3.enter().append('svg:image').attr({\n      xmlns: xmlnsNamespaces.svg,\n      preserveAspectRatio: 'none'\n    });\n    image3.exit().remove();\n    var style = trace.zsmooth === false ? constants.pixelatedStyle : '';\n    if (realImage) {\n      var xRange = Lib.simpleMap(xa.range, xa.r2l);\n      var yRange = Lib.simpleMap(ya.range, ya.r2l);\n      var flipX = xRange[1] < xRange[0];\n      var flipY = yRange[1] > yRange[0];\n      if (flipX || flipY) {\n        var tx = left + imageWidth / 2;\n        var ty = top + imageHeight / 2;\n        style += 'transform:' + strTranslate(tx + 'px', ty + 'px') + 'scale(' + (flipX ? -1 : 1) + ',' + (flipY ? -1 : 1) + ')' + strTranslate(-tx + 'px', -ty + 'px') + ';';\n      }\n    }\n    image3.attr('style', style);\n    var p = new Promise(function (resolve) {\n      if (trace._hasZ) {\n        resolve();\n      } else if (trace._hasSource) {\n        // Check if canvas already exists and has the right data\n        if (trace._canvas && trace._canvas.el.width === w && trace._canvas.el.height === h && trace._canvas.source === trace.source) {\n          resolve();\n        } else {\n          // Create a canvas and transfer image onto it to access pixel information\n          var canvas = document.createElement('canvas');\n          canvas.width = w;\n          canvas.height = h;\n          var context = canvas.getContext('2d', {\n            willReadFrequently: true\n          });\n          trace._image = trace._image || new Image();\n          var image = trace._image;\n          image.onload = function () {\n            context.drawImage(image, 0, 0);\n            trace._canvas = {\n              el: canvas,\n              source: trace.source\n            };\n            resolve();\n          };\n          image.setAttribute('src', trace.source);\n        }\n      }\n    }).then(function () {\n      var href, canvas;\n      if (trace._hasZ) {\n        canvas = drawMagnifiedPixelsOnCanvas(function (i, j) {\n          return z[j][i];\n        });\n        href = canvas.toDataURL('image/png');\n      } else if (trace._hasSource) {\n        if (realImage) {\n          href = trace.source;\n        } else {\n          var context = trace._canvas.el.getContext('2d', {\n            willReadFrequently: true\n          });\n          var data = context.getImageData(0, 0, w, h).data;\n          canvas = drawMagnifiedPixelsOnCanvas(function (i, j) {\n            var index = 4 * (j * w + i);\n            return [data[index], data[index + 1], data[index + 2], data[index + 3]];\n          });\n          href = canvas.toDataURL('image/png');\n        }\n      }\n      image3.attr({\n        'xlink:href': href,\n        height: imageHeight,\n        width: imageWidth,\n        x: left,\n        y: top\n      });\n    });\n    gd._promises.push(p);\n  });\n};\n\n/***/ }),\n\n/***/ 12826:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2665063__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2665063__(39898);\nmodule.exports = function style(gd) {\n  d3.select(gd).selectAll('.im image').style('opacity', function (d) {\n    return d[0].trace.opacity;\n  });\n};\n\n/***/ }),\n\n/***/ 54846:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2665364__) {\n\n\"use strict\";\n\n\nvar extendFlat = (__nested_webpack_require_2665364__(1426).extendFlat);\nvar extendDeep = (__nested_webpack_require_2665364__(1426).extendDeep);\nvar overrideAll = (__nested_webpack_require_2665364__(30962).overrideAll);\nvar fontAttrs = __nested_webpack_require_2665364__(41940);\nvar colorAttrs = __nested_webpack_require_2665364__(22399);\nvar domainAttrs = (__nested_webpack_require_2665364__(27670)/* .attributes */ .Y);\nvar axesAttrs = __nested_webpack_require_2665364__(13838);\nvar templatedArray = (__nested_webpack_require_2665364__(44467).templatedArray);\nvar delta = __nested_webpack_require_2665364__(22372);\nvar descriptionOnlyNumbers = (__nested_webpack_require_2665364__(12663).descriptionOnlyNumbers);\nvar textFontAttrs = fontAttrs({\n  editType: 'plot',\n  colorEditType: 'plot'\n});\nvar gaugeBarAttrs = {\n  color: {\n    valType: 'color',\n    editType: 'plot'\n  },\n  line: {\n    color: {\n      valType: 'color',\n      dflt: colorAttrs.defaultLine,\n      editType: 'plot'\n    },\n    width: {\n      valType: 'number',\n      min: 0,\n      dflt: 0,\n      editType: 'plot'\n    },\n    editType: 'calc'\n  },\n  thickness: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 1,\n    editType: 'plot'\n  },\n  editType: 'calc'\n};\nvar rangeAttr = {\n  valType: 'info_array',\n  items: [{\n    valType: 'number',\n    editType: 'plot'\n  }, {\n    valType: 'number',\n    editType: 'plot'\n  }],\n  editType: 'plot'\n};\nvar stepsAttrs = templatedArray('step', extendDeep({}, gaugeBarAttrs, {\n  range: rangeAttr\n}));\nmodule.exports = {\n  mode: {\n    valType: 'flaglist',\n    editType: 'calc',\n    flags: ['number', 'delta', 'gauge'],\n    dflt: 'number'\n  },\n  value: {\n    valType: 'number',\n    editType: 'calc',\n    anim: true\n  },\n  align: {\n    valType: 'enumerated',\n    values: ['left', 'center', 'right'],\n    editType: 'plot'\n  },\n  // position\n  domain: domainAttrs({\n    name: 'indicator',\n    trace: true,\n    editType: 'calc'\n  }),\n  title: {\n    text: {\n      valType: 'string',\n      editType: 'plot'\n    },\n    align: {\n      valType: 'enumerated',\n      values: ['left', 'center', 'right'],\n      editType: 'plot'\n    },\n    font: extendFlat({}, textFontAttrs, {}),\n    editType: 'plot'\n  },\n  number: {\n    valueformat: {\n      valType: 'string',\n      dflt: '',\n      editType: 'plot',\n      description: descriptionOnlyNumbers('value')\n    },\n    font: extendFlat({}, textFontAttrs, {}),\n    prefix: {\n      valType: 'string',\n      dflt: '',\n      editType: 'plot'\n    },\n    suffix: {\n      valType: 'string',\n      dflt: '',\n      editType: 'plot'\n    },\n    editType: 'plot'\n  },\n  delta: {\n    reference: {\n      valType: 'number',\n      editType: 'calc'\n    },\n    position: {\n      valType: 'enumerated',\n      values: ['top', 'bottom', 'left', 'right'],\n      dflt: 'bottom',\n      editType: 'plot'\n    },\n    relative: {\n      valType: 'boolean',\n      editType: 'plot',\n      dflt: false\n    },\n    valueformat: {\n      valType: 'string',\n      editType: 'plot',\n      description: descriptionOnlyNumbers('value')\n    },\n    increasing: {\n      symbol: {\n        valType: 'string',\n        dflt: delta.INCREASING.SYMBOL,\n        editType: 'plot'\n      },\n      color: {\n        valType: 'color',\n        dflt: delta.INCREASING.COLOR,\n        editType: 'plot'\n      },\n      // TODO: add attribute to show sign\n      editType: 'plot'\n    },\n    decreasing: {\n      symbol: {\n        valType: 'string',\n        dflt: delta.DECREASING.SYMBOL,\n        editType: 'plot'\n      },\n      color: {\n        valType: 'color',\n        dflt: delta.DECREASING.COLOR,\n        editType: 'plot'\n      },\n      // TODO: add attribute to hide sign\n      editType: 'plot'\n    },\n    font: extendFlat({}, textFontAttrs, {}),\n    prefix: {\n      valType: 'string',\n      dflt: '',\n      editType: 'plot'\n    },\n    suffix: {\n      valType: 'string',\n      dflt: '',\n      editType: 'plot'\n    },\n    editType: 'calc'\n  },\n  gauge: {\n    shape: {\n      valType: 'enumerated',\n      editType: 'plot',\n      dflt: 'angular',\n      values: ['angular', 'bullet']\n    },\n    bar: extendDeep({}, gaugeBarAttrs, {\n      color: {\n        dflt: 'green'\n      }\n    }),\n    // Background of the gauge\n    bgcolor: {\n      valType: 'color',\n      editType: 'plot'\n    },\n    bordercolor: {\n      valType: 'color',\n      dflt: colorAttrs.defaultLine,\n      editType: 'plot'\n    },\n    borderwidth: {\n      valType: 'number',\n      min: 0,\n      dflt: 1,\n      editType: 'plot'\n    },\n    axis: overrideAll({\n      range: rangeAttr,\n      visible: extendFlat({}, axesAttrs.visible, {\n        dflt: true\n      }),\n      // tick and title properties named and function exactly as in axes\n      tickmode: axesAttrs.minor.tickmode,\n      nticks: axesAttrs.nticks,\n      tick0: axesAttrs.tick0,\n      dtick: axesAttrs.dtick,\n      tickvals: axesAttrs.tickvals,\n      ticktext: axesAttrs.ticktext,\n      ticks: extendFlat({}, axesAttrs.ticks, {\n        dflt: 'outside'\n      }),\n      ticklen: axesAttrs.ticklen,\n      tickwidth: axesAttrs.tickwidth,\n      tickcolor: axesAttrs.tickcolor,\n      ticklabelstep: axesAttrs.ticklabelstep,\n      showticklabels: axesAttrs.showticklabels,\n      tickfont: fontAttrs({}),\n      tickangle: axesAttrs.tickangle,\n      tickformat: axesAttrs.tickformat,\n      tickformatstops: axesAttrs.tickformatstops,\n      tickprefix: axesAttrs.tickprefix,\n      showtickprefix: axesAttrs.showtickprefix,\n      ticksuffix: axesAttrs.ticksuffix,\n      showticksuffix: axesAttrs.showticksuffix,\n      separatethousands: axesAttrs.separatethousands,\n      exponentformat: axesAttrs.exponentformat,\n      minexponent: axesAttrs.minexponent,\n      showexponent: axesAttrs.showexponent,\n      editType: 'plot'\n    }, 'plot'),\n    // Steps (or ranges) and thresholds\n    steps: stepsAttrs,\n    threshold: {\n      line: {\n        color: extendFlat({}, gaugeBarAttrs.line.color, {}),\n        width: extendFlat({}, gaugeBarAttrs.line.width, {\n          dflt: 1\n        }),\n        editType: 'plot'\n      },\n      thickness: extendFlat({}, gaugeBarAttrs.thickness, {\n        dflt: 0.85\n      }),\n      value: {\n        valType: 'number',\n        editType: 'calc',\n        dflt: false\n      },\n      editType: 'plot'\n    },\n    editType: 'plot'\n    // TODO: in future version, add marker: (bar|needle)\n  }\n};\n\n/***/ }),\n\n/***/ 15970:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_2671628__) {\n\n\"use strict\";\n\n\nvar plots = __nested_webpack_require_2671628__(74875);\nexports.name = 'indicator';\nexports.plot = function (gd, traces, transitionOpts, makeOnCompleteCallback) {\n  plots.plotBasePlot(exports.name, gd, traces, transitionOpts, makeOnCompleteCallback);\n};\nexports.clean = function (newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  plots.cleanBasePlot(exports.name, newFullData, newFullLayout, oldFullData, oldFullLayout);\n};\n\n/***/ }),\n\n/***/ 24667:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// var Lib = require('../../lib');\nfunction calc(gd, trace) {\n  var cd = [];\n  var lastReading = trace.value;\n  if (!(typeof trace._lastValue === 'number')) trace._lastValue = trace.value;\n  var secondLastReading = trace._lastValue;\n  var deltaRef = secondLastReading;\n  if (trace._hasDelta && typeof trace.delta.reference === 'number') {\n    deltaRef = trace.delta.reference;\n  }\n  cd[0] = {\n    y: lastReading,\n    lastY: secondLastReading,\n    delta: lastReading - deltaRef,\n    relativeDelta: (lastReading - deltaRef) / deltaRef\n  };\n  return cd;\n}\nmodule.exports = {\n  calc: calc\n};\n\n/***/ }),\n\n/***/ 84577:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  // Defaults for delta\n  defaultNumberFontSize: 80,\n  bulletNumberDomainSize: 0.25,\n  bulletPadding: 0.025,\n  innerRadius: 0.75,\n  valueThickness: 0.5,\n  // thickness of value bars relative to full thickness,\n  titlePadding: 5,\n  horizontalPadding: 10\n};\n\n/***/ }),\n\n/***/ 94425:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2673160__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2673160__(71828);\nvar attributes = __nested_webpack_require_2673160__(54846);\nvar handleDomainDefaults = (__nested_webpack_require_2673160__(27670)/* .defaults */ .c);\nvar Template = __nested_webpack_require_2673160__(44467);\nvar handleArrayContainerDefaults = __nested_webpack_require_2673160__(85501);\nvar cn = __nested_webpack_require_2673160__(84577);\nvar handleTickValueDefaults = __nested_webpack_require_2673160__(26218);\nvar handleTickMarkDefaults = __nested_webpack_require_2673160__(38701);\nvar handleTickLabelDefaults = __nested_webpack_require_2673160__(96115);\nvar handlePrefixSuffixDefaults = __nested_webpack_require_2673160__(89426);\nfunction supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  handleDomainDefaults(traceOut, layout, coerce);\n\n  // Mode\n  coerce('mode');\n  traceOut._hasNumber = traceOut.mode.indexOf('number') !== -1;\n  traceOut._hasDelta = traceOut.mode.indexOf('delta') !== -1;\n  traceOut._hasGauge = traceOut.mode.indexOf('gauge') !== -1;\n  var value = coerce('value');\n  traceOut._range = [0, typeof value === 'number' ? 1.5 * value : 1];\n\n  // Number attributes\n  var auto = new Array(2);\n  var bignumberFontSize;\n  if (traceOut._hasNumber) {\n    coerce('number.valueformat');\n    coerce('number.font.color', layout.font.color);\n    coerce('number.font.family', layout.font.family);\n    coerce('number.font.size');\n    if (traceOut.number.font.size === undefined) {\n      traceOut.number.font.size = cn.defaultNumberFontSize;\n      auto[0] = true;\n    }\n    coerce('number.prefix');\n    coerce('number.suffix');\n    bignumberFontSize = traceOut.number.font.size;\n  }\n\n  // delta attributes\n  var deltaFontSize;\n  if (traceOut._hasDelta) {\n    coerce('delta.font.color', layout.font.color);\n    coerce('delta.font.family', layout.font.family);\n    coerce('delta.font.size');\n    if (traceOut.delta.font.size === undefined) {\n      traceOut.delta.font.size = (traceOut._hasNumber ? 0.5 : 1) * (bignumberFontSize || cn.defaultNumberFontSize);\n      auto[1] = true;\n    }\n    coerce('delta.reference', traceOut.value);\n    coerce('delta.relative');\n    coerce('delta.valueformat', traceOut.delta.relative ? '2%' : '');\n    coerce('delta.increasing.symbol');\n    coerce('delta.increasing.color');\n    coerce('delta.decreasing.symbol');\n    coerce('delta.decreasing.color');\n    coerce('delta.position');\n    coerce('delta.prefix');\n    coerce('delta.suffix');\n    deltaFontSize = traceOut.delta.font.size;\n  }\n  traceOut._scaleNumbers = (!traceOut._hasNumber || auto[0]) && (!traceOut._hasDelta || auto[1]) || false;\n\n  // Title attributes\n  coerce('title.font.color', layout.font.color);\n  coerce('title.font.family', layout.font.family);\n  coerce('title.font.size', 0.25 * (bignumberFontSize || deltaFontSize || cn.defaultNumberFontSize));\n  coerce('title.text');\n\n  // Gauge attributes\n  var gaugeIn, gaugeOut, axisIn, axisOut;\n  function coerceGauge(attr, dflt) {\n    return Lib.coerce(gaugeIn, gaugeOut, attributes.gauge, attr, dflt);\n  }\n  function coerceGaugeAxis(attr, dflt) {\n    return Lib.coerce(axisIn, axisOut, attributes.gauge.axis, attr, dflt);\n  }\n  if (traceOut._hasGauge) {\n    gaugeIn = traceIn.gauge;\n    if (!gaugeIn) gaugeIn = {};\n    gaugeOut = Template.newContainer(traceOut, 'gauge');\n    coerceGauge('shape');\n    var isBullet = traceOut._isBullet = traceOut.gauge.shape === 'bullet';\n    if (!isBullet) {\n      coerce('title.align', 'center');\n    }\n    var isAngular = traceOut._isAngular = traceOut.gauge.shape === 'angular';\n    if (!isAngular) {\n      coerce('align', 'center');\n    }\n\n    // gauge background\n    coerceGauge('bgcolor', layout.paper_bgcolor);\n    coerceGauge('borderwidth');\n    coerceGauge('bordercolor');\n\n    // gauge bar indicator\n    coerceGauge('bar.color');\n    coerceGauge('bar.line.color');\n    coerceGauge('bar.line.width');\n    var defaultBarThickness = cn.valueThickness * (traceOut.gauge.shape === 'bullet' ? 0.5 : 1);\n    coerceGauge('bar.thickness', defaultBarThickness);\n\n    // Gauge steps\n    handleArrayContainerDefaults(gaugeIn, gaugeOut, {\n      name: 'steps',\n      handleItemDefaults: stepDefaults\n    });\n\n    // Gauge threshold\n    coerceGauge('threshold.value');\n    coerceGauge('threshold.thickness');\n    coerceGauge('threshold.line.width');\n    coerceGauge('threshold.line.color');\n\n    // Gauge axis\n    axisIn = {};\n    if (gaugeIn) axisIn = gaugeIn.axis || {};\n    axisOut = Template.newContainer(gaugeOut, 'axis');\n    coerceGaugeAxis('visible');\n    traceOut._range = coerceGaugeAxis('range', traceOut._range);\n    var opts = {\n      outerTicks: true\n    };\n    handleTickValueDefaults(axisIn, axisOut, coerceGaugeAxis, 'linear');\n    handlePrefixSuffixDefaults(axisIn, axisOut, coerceGaugeAxis, 'linear', opts);\n    handleTickLabelDefaults(axisIn, axisOut, coerceGaugeAxis, 'linear', opts);\n    handleTickMarkDefaults(axisIn, axisOut, coerceGaugeAxis, opts);\n  } else {\n    coerce('title.align', 'center');\n    coerce('align', 'center');\n    traceOut._isAngular = traceOut._isBullet = false;\n  }\n\n  // disable 1D transforms\n  traceOut._length = null;\n}\nfunction stepDefaults(stepIn, stepOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(stepIn, stepOut, attributes.gauge.steps, attr, dflt);\n  }\n  coerce('color');\n  coerce('line.color');\n  coerce('line.width');\n  coerce('range');\n  coerce('thickness');\n}\nmodule.exports = {\n  supplyDefaults: supplyDefaults\n};\n\n/***/ }),\n\n/***/ 15154:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2678659__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'trace',\n  name: 'indicator',\n  basePlotModule: __nested_webpack_require_2678659__(15970),\n  categories: ['svg', 'noOpacity', 'noHover'],\n  animatable: true,\n  attributes: __nested_webpack_require_2678659__(54846),\n  supplyDefaults: (__nested_webpack_require_2678659__(94425).supplyDefaults),\n  calc: (__nested_webpack_require_2678659__(24667).calc),\n  plot: __nested_webpack_require_2678659__(75634),\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 75634:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2679148__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2679148__(39898);\nvar interpolate = (__nested_webpack_require_2679148__(81684)/* .interpolate */ .sX);\nvar interpolateNumber = (__nested_webpack_require_2679148__(81684)/* .interpolateNumber */ .k4);\nvar Lib = __nested_webpack_require_2679148__(71828);\nvar strScale = Lib.strScale;\nvar strTranslate = Lib.strTranslate;\nvar rad2deg = Lib.rad2deg;\nvar MID_SHIFT = (__nested_webpack_require_2679148__(18783).MID_SHIFT);\nvar Drawing = __nested_webpack_require_2679148__(91424);\nvar cn = __nested_webpack_require_2679148__(84577);\nvar svgTextUtils = __nested_webpack_require_2679148__(63893);\nvar Axes = __nested_webpack_require_2679148__(89298);\nvar handleAxisDefaults = __nested_webpack_require_2679148__(71453);\nvar handleAxisPositionDefaults = __nested_webpack_require_2679148__(52830);\nvar axisLayoutAttrs = __nested_webpack_require_2679148__(13838);\nvar Color = __nested_webpack_require_2679148__(7901);\nvar anchor = {\n  'left': 'start',\n  'center': 'middle',\n  'right': 'end'\n};\nvar position = {\n  'left': 0,\n  'center': 0.5,\n  'right': 1\n};\nvar SI_PREFIX = /[yzafpnµmkMGTPEZY]/;\nfunction hasTransition(transitionOpts) {\n  // If transition config is provided, then it is only a partial replot and traces not\n  // updated are removed.\n  return transitionOpts && transitionOpts.duration > 0;\n}\nmodule.exports = function plot(gd, cdModule, transitionOpts, makeOnCompleteCallback) {\n  var fullLayout = gd._fullLayout;\n  var onComplete;\n  if (hasTransition(transitionOpts)) {\n    if (makeOnCompleteCallback) {\n      // If it was passed a callback to register completion, make a callback. If\n      // this is created, then it must be executed on completion, otherwise the\n      // pos-transition redraw will not execute:\n      onComplete = makeOnCompleteCallback();\n    }\n  }\n  Lib.makeTraceGroups(fullLayout._indicatorlayer, cdModule, 'trace').each(function (cd) {\n    var cd0 = cd[0];\n    var trace = cd0.trace;\n    var plotGroup = d3.select(this);\n\n    // Elements in trace\n    var hasGauge = trace._hasGauge;\n    var isAngular = trace._isAngular;\n    var isBullet = trace._isBullet;\n\n    // Domain size\n    var domain = trace.domain;\n    var size = {\n      w: fullLayout._size.w * (domain.x[1] - domain.x[0]),\n      h: fullLayout._size.h * (domain.y[1] - domain.y[0]),\n      l: fullLayout._size.l + fullLayout._size.w * domain.x[0],\n      r: fullLayout._size.r + fullLayout._size.w * (1 - domain.x[1]),\n      t: fullLayout._size.t + fullLayout._size.h * (1 - domain.y[1]),\n      b: fullLayout._size.b + fullLayout._size.h * domain.y[0]\n    };\n    var centerX = size.l + size.w / 2;\n    var centerY = size.t + size.h / 2;\n\n    // Angular gauge size\n    var radius = Math.min(size.w / 2, size.h); // fill domain\n    var innerRadius = cn.innerRadius * radius;\n\n    // Position numbers based on mode and set the scaling logic\n    var numbersX, numbersY, numbersScaler;\n    var numbersAlign = trace.align || 'center';\n    numbersY = centerY;\n    if (!hasGauge) {\n      numbersX = size.l + position[numbersAlign] * size.w;\n      numbersScaler = function (el) {\n        return fitTextInsideBox(el, size.w, size.h);\n      };\n    } else {\n      if (isAngular) {\n        numbersX = centerX;\n        numbersY = centerY + radius / 2;\n        numbersScaler = function (el) {\n          return fitTextInsideCircle(el, 0.9 * innerRadius);\n        };\n      }\n      if (isBullet) {\n        var padding = cn.bulletPadding;\n        var p = 1 - cn.bulletNumberDomainSize + padding;\n        numbersX = size.l + (p + (1 - p) * position[numbersAlign]) * size.w;\n        numbersScaler = function (el) {\n          return fitTextInsideBox(el, (cn.bulletNumberDomainSize - padding) * size.w, size.h);\n        };\n      }\n    }\n\n    // Draw numbers\n    drawNumbers(gd, plotGroup, cd, {\n      numbersX: numbersX,\n      numbersY: numbersY,\n      numbersScaler: numbersScaler,\n      transitionOpts: transitionOpts,\n      onComplete: onComplete\n    });\n\n    // Reexpress our gauge background attributes for drawing\n    var gaugeBg, gaugeOutline;\n    if (hasGauge) {\n      gaugeBg = {\n        range: trace.gauge.axis.range,\n        color: trace.gauge.bgcolor,\n        line: {\n          color: trace.gauge.bordercolor,\n          width: 0\n        },\n        thickness: 1\n      };\n      gaugeOutline = {\n        range: trace.gauge.axis.range,\n        color: 'rgba(0, 0, 0, 0)',\n        line: {\n          color: trace.gauge.bordercolor,\n          width: trace.gauge.borderwidth\n        },\n        thickness: 1\n      };\n    }\n\n    // Prepare angular gauge layers\n    var angularGauge = plotGroup.selectAll('g.angular').data(isAngular ? cd : []);\n    angularGauge.exit().remove();\n    var angularaxisLayer = plotGroup.selectAll('g.angularaxis').data(isAngular ? cd : []);\n    angularaxisLayer.exit().remove();\n    if (isAngular) {\n      drawAngularGauge(gd, plotGroup, cd, {\n        radius: radius,\n        innerRadius: innerRadius,\n        gauge: angularGauge,\n        layer: angularaxisLayer,\n        size: size,\n        gaugeBg: gaugeBg,\n        gaugeOutline: gaugeOutline,\n        transitionOpts: transitionOpts,\n        onComplete: onComplete\n      });\n    }\n\n    // Prepare bullet layers\n    var bulletGauge = plotGroup.selectAll('g.bullet').data(isBullet ? cd : []);\n    bulletGauge.exit().remove();\n    var bulletaxisLayer = plotGroup.selectAll('g.bulletaxis').data(isBullet ? cd : []);\n    bulletaxisLayer.exit().remove();\n    if (isBullet) {\n      drawBulletGauge(gd, plotGroup, cd, {\n        gauge: bulletGauge,\n        layer: bulletaxisLayer,\n        size: size,\n        gaugeBg: gaugeBg,\n        gaugeOutline: gaugeOutline,\n        transitionOpts: transitionOpts,\n        onComplete: onComplete\n      });\n    }\n\n    // title\n    var title = plotGroup.selectAll('text.title').data(cd);\n    title.exit().remove();\n    title.enter().append('text').classed('title', true);\n    title.attr('text-anchor', function () {\n      return isBullet ? anchor.right : anchor[trace.title.align];\n    }).text(trace.title.text).call(Drawing.font, trace.title.font).call(svgTextUtils.convertToTspans, gd);\n\n    // Position title\n    title.attr('transform', function () {\n      var titleX = size.l + size.w * position[trace.title.align];\n      var titleY;\n      var titlePadding = cn.titlePadding;\n      var titlebBox = Drawing.bBox(title.node());\n      if (hasGauge) {\n        if (isAngular) {\n          // position above axis ticks/labels\n          if (trace.gauge.axis.visible) {\n            var bBox = Drawing.bBox(angularaxisLayer.node());\n            titleY = bBox.top - titlePadding - titlebBox.bottom;\n          } else {\n            titleY = size.t + size.h / 2 - radius / 2 - titlebBox.bottom - titlePadding;\n          }\n        }\n        if (isBullet) {\n          // position outside domain\n          titleY = numbersY - (titlebBox.top + titlebBox.bottom) / 2;\n          titleX = size.l - cn.bulletPadding * size.w; // Outside domain, on the left\n        }\n      } else {\n        // position above numbers\n        titleY = trace._numbersTop - titlePadding - titlebBox.bottom;\n      }\n      return strTranslate(titleX, titleY);\n    });\n  });\n};\nfunction drawBulletGauge(gd, plotGroup, cd, opts) {\n  var trace = cd[0].trace;\n  var bullet = opts.gauge;\n  var axisLayer = opts.layer;\n  var gaugeBg = opts.gaugeBg;\n  var gaugeOutline = opts.gaugeOutline;\n  var size = opts.size;\n  var domain = trace.domain;\n  var transitionOpts = opts.transitionOpts;\n  var onComplete = opts.onComplete;\n\n  // preparing axis\n  var ax, vals, transFn, tickSign, shift;\n\n  // Enter bullet, axis\n  bullet.enter().append('g').classed('bullet', true);\n  bullet.attr('transform', strTranslate(size.l, size.t));\n  axisLayer.enter().append('g').classed('bulletaxis', true).classed('crisp', true);\n  axisLayer.selectAll('g.' + 'xbulletaxis' + 'tick,path,text').remove();\n\n  // Draw bullet\n  var bulletHeight = size.h; // use all vertical domain\n  var innerBulletHeight = trace.gauge.bar.thickness * bulletHeight;\n  var bulletLeft = domain.x[0];\n  var bulletRight = domain.x[0] + (domain.x[1] - domain.x[0]) * (trace._hasNumber || trace._hasDelta ? 1 - cn.bulletNumberDomainSize : 1);\n  ax = mockAxis(gd, trace.gauge.axis);\n  ax._id = 'xbulletaxis';\n  ax.domain = [bulletLeft, bulletRight];\n  ax.setScale();\n  vals = Axes.calcTicks(ax);\n  transFn = Axes.makeTransTickFn(ax);\n  tickSign = Axes.getTickSigns(ax)[2];\n  shift = size.t + size.h;\n  if (ax.visible) {\n    Axes.drawTicks(gd, ax, {\n      vals: ax.ticks === 'inside' ? Axes.clipEnds(ax, vals) : vals,\n      layer: axisLayer,\n      path: Axes.makeTickPath(ax, shift, tickSign),\n      transFn: transFn\n    });\n    Axes.drawLabels(gd, ax, {\n      vals: vals,\n      layer: axisLayer,\n      transFn: transFn,\n      labelFns: Axes.makeLabelFns(ax, shift)\n    });\n  }\n  function drawRect(s) {\n    s.attr('width', function (d) {\n      return Math.max(0, ax.c2p(d.range[1]) - ax.c2p(d.range[0]));\n    }).attr('x', function (d) {\n      return ax.c2p(d.range[0]);\n    }).attr('y', function (d) {\n      return 0.5 * (1 - d.thickness) * bulletHeight;\n    }).attr('height', function (d) {\n      return d.thickness * bulletHeight;\n    });\n  }\n\n  // Draw bullet background, steps\n  var boxes = [gaugeBg].concat(trace.gauge.steps);\n  var bgBullet = bullet.selectAll('g.bg-bullet').data(boxes);\n  bgBullet.enter().append('g').classed('bg-bullet', true).append('rect');\n  bgBullet.select('rect').call(drawRect).call(styleShape);\n  bgBullet.exit().remove();\n\n  // Draw value bar with transitions\n  var fgBullet = bullet.selectAll('g.value-bullet').data([trace.gauge.bar]);\n  fgBullet.enter().append('g').classed('value-bullet', true).append('rect');\n  fgBullet.select('rect').attr('height', innerBulletHeight).attr('y', (bulletHeight - innerBulletHeight) / 2).call(styleShape);\n  if (hasTransition(transitionOpts)) {\n    fgBullet.select('rect').transition().duration(transitionOpts.duration).ease(transitionOpts.easing).each('end', function () {\n      onComplete && onComplete();\n    }).each('interrupt', function () {\n      onComplete && onComplete();\n    }).attr('width', Math.max(0, ax.c2p(Math.min(trace.gauge.axis.range[1], cd[0].y))));\n  } else {\n    fgBullet.select('rect').attr('width', typeof cd[0].y === 'number' ? Math.max(0, ax.c2p(Math.min(trace.gauge.axis.range[1], cd[0].y))) : 0);\n  }\n  fgBullet.exit().remove();\n  var data = cd.filter(function () {\n    return trace.gauge.threshold.value || trace.gauge.threshold.value === 0;\n  });\n  var threshold = bullet.selectAll('g.threshold-bullet').data(data);\n  threshold.enter().append('g').classed('threshold-bullet', true).append('line');\n  threshold.select('line').attr('x1', ax.c2p(trace.gauge.threshold.value)).attr('x2', ax.c2p(trace.gauge.threshold.value)).attr('y1', (1 - trace.gauge.threshold.thickness) / 2 * bulletHeight).attr('y2', (1 - (1 - trace.gauge.threshold.thickness) / 2) * bulletHeight).call(Color.stroke, trace.gauge.threshold.line.color).style('stroke-width', trace.gauge.threshold.line.width);\n  threshold.exit().remove();\n  var bulletOutline = bullet.selectAll('g.gauge-outline').data([gaugeOutline]);\n  bulletOutline.enter().append('g').classed('gauge-outline', true).append('rect');\n  bulletOutline.select('rect').call(drawRect).call(styleShape);\n  bulletOutline.exit().remove();\n}\nfunction drawAngularGauge(gd, plotGroup, cd, opts) {\n  var trace = cd[0].trace;\n  var size = opts.size;\n  var radius = opts.radius;\n  var innerRadius = opts.innerRadius;\n  var gaugeBg = opts.gaugeBg;\n  var gaugeOutline = opts.gaugeOutline;\n  var gaugePosition = [size.l + size.w / 2, size.t + size.h / 2 + radius / 2];\n  var gauge = opts.gauge;\n  var axisLayer = opts.layer;\n  var transitionOpts = opts.transitionOpts;\n  var onComplete = opts.onComplete;\n\n  // circular gauge\n  var theta = Math.PI / 2;\n  function valueToAngle(v) {\n    var min = trace.gauge.axis.range[0];\n    var max = trace.gauge.axis.range[1];\n    var angle = (v - min) / (max - min) * Math.PI - theta;\n    if (angle < -theta) return -theta;\n    if (angle > theta) return theta;\n    return angle;\n  }\n  function arcPathGenerator(size) {\n    return d3.svg.arc().innerRadius((innerRadius + radius) / 2 - size / 2 * (radius - innerRadius)).outerRadius((innerRadius + radius) / 2 + size / 2 * (radius - innerRadius)).startAngle(-theta);\n  }\n  function drawArc(p) {\n    p.attr('d', function (d) {\n      return arcPathGenerator(d.thickness).startAngle(valueToAngle(d.range[0])).endAngle(valueToAngle(d.range[1]))();\n    });\n  }\n\n  // preparing axis\n  var ax, vals, transFn, tickSign;\n\n  // Enter gauge and axis\n  gauge.enter().append('g').classed('angular', true);\n  gauge.attr('transform', strTranslate(gaugePosition[0], gaugePosition[1]));\n  axisLayer.enter().append('g').classed('angularaxis', true).classed('crisp', true);\n  axisLayer.selectAll('g.' + 'xangularaxis' + 'tick,path,text').remove();\n  ax = mockAxis(gd, trace.gauge.axis);\n  ax.type = 'linear';\n  ax.range = trace.gauge.axis.range;\n  ax._id = 'xangularaxis'; // or 'y', but I don't think this makes a difference here\n  ax.ticklabeloverflow = 'allow';\n  ax.setScale();\n\n  // 't'ick to 'g'eometric radians is used all over the place here\n  var t2g = function (d) {\n    return (ax.range[0] - d.x) / (ax.range[1] - ax.range[0]) * Math.PI + Math.PI;\n  };\n  var labelFns = {};\n  var out = Axes.makeLabelFns(ax, 0);\n  var labelStandoff = out.labelStandoff;\n  labelFns.xFn = function (d) {\n    var rad = t2g(d);\n    return Math.cos(rad) * labelStandoff;\n  };\n  labelFns.yFn = function (d) {\n    var rad = t2g(d);\n    var ff = Math.sin(rad) > 0 ? 0.2 : 1;\n    return -Math.sin(rad) * (labelStandoff + d.fontSize * ff) + Math.abs(Math.cos(rad)) * (d.fontSize * MID_SHIFT);\n  };\n  labelFns.anchorFn = function (d) {\n    var rad = t2g(d);\n    var cos = Math.cos(rad);\n    return Math.abs(cos) < 0.1 ? 'middle' : cos > 0 ? 'start' : 'end';\n  };\n  labelFns.heightFn = function (d, a, h) {\n    var rad = t2g(d);\n    return -0.5 * (1 + Math.sin(rad)) * h;\n  };\n  var _transFn = function (rad) {\n    return strTranslate(gaugePosition[0] + radius * Math.cos(rad), gaugePosition[1] - radius * Math.sin(rad));\n  };\n  transFn = function (d) {\n    return _transFn(t2g(d));\n  };\n  var transFn2 = function (d) {\n    var rad = t2g(d);\n    return _transFn(rad) + 'rotate(' + -rad2deg(rad) + ')';\n  };\n  vals = Axes.calcTicks(ax);\n  tickSign = Axes.getTickSigns(ax)[2];\n  if (ax.visible) {\n    tickSign = ax.ticks === 'inside' ? -1 : 1;\n    var pad = (ax.linewidth || 1) / 2;\n    Axes.drawTicks(gd, ax, {\n      vals: vals,\n      layer: axisLayer,\n      path: 'M' + tickSign * pad + ',0h' + tickSign * ax.ticklen,\n      transFn: transFn2\n    });\n    Axes.drawLabels(gd, ax, {\n      vals: vals,\n      layer: axisLayer,\n      transFn: transFn,\n      labelFns: labelFns\n    });\n  }\n\n  // Draw background + steps\n  var arcs = [gaugeBg].concat(trace.gauge.steps);\n  var bgArc = gauge.selectAll('g.bg-arc').data(arcs);\n  bgArc.enter().append('g').classed('bg-arc', true).append('path');\n  bgArc.select('path').call(drawArc).call(styleShape);\n  bgArc.exit().remove();\n\n  // Draw foreground with transition\n  var valueArcPathGenerator = arcPathGenerator(trace.gauge.bar.thickness);\n  var valueArc = gauge.selectAll('g.value-arc').data([trace.gauge.bar]);\n  valueArc.enter().append('g').classed('value-arc', true).append('path');\n  var valueArcPath = valueArc.select('path');\n  if (hasTransition(transitionOpts)) {\n    valueArcPath.transition().duration(transitionOpts.duration).ease(transitionOpts.easing).each('end', function () {\n      onComplete && onComplete();\n    }).each('interrupt', function () {\n      onComplete && onComplete();\n    }).attrTween('d', arcTween(valueArcPathGenerator, valueToAngle(cd[0].lastY), valueToAngle(cd[0].y)));\n    trace._lastValue = cd[0].y;\n  } else {\n    valueArcPath.attr('d', typeof cd[0].y === 'number' ? valueArcPathGenerator.endAngle(valueToAngle(cd[0].y)) : 'M0,0Z');\n  }\n  valueArcPath.call(styleShape);\n  valueArc.exit().remove();\n\n  // Draw threshold\n  arcs = [];\n  var v = trace.gauge.threshold.value;\n  if (v || v === 0) {\n    arcs.push({\n      range: [v, v],\n      color: trace.gauge.threshold.color,\n      line: {\n        color: trace.gauge.threshold.line.color,\n        width: trace.gauge.threshold.line.width\n      },\n      thickness: trace.gauge.threshold.thickness\n    });\n  }\n  var thresholdArc = gauge.selectAll('g.threshold-arc').data(arcs);\n  thresholdArc.enter().append('g').classed('threshold-arc', true).append('path');\n  thresholdArc.select('path').call(drawArc).call(styleShape);\n  thresholdArc.exit().remove();\n\n  // Draw border last\n  var gaugeBorder = gauge.selectAll('g.gauge-outline').data([gaugeOutline]);\n  gaugeBorder.enter().append('g').classed('gauge-outline', true).append('path');\n  gaugeBorder.select('path').call(drawArc).call(styleShape);\n  gaugeBorder.exit().remove();\n}\nfunction drawNumbers(gd, plotGroup, cd, opts) {\n  var trace = cd[0].trace;\n  var numbersX = opts.numbersX;\n  var numbersY = opts.numbersY;\n  var numbersAlign = trace.align || 'center';\n  var numbersAnchor = anchor[numbersAlign];\n  var transitionOpts = opts.transitionOpts;\n  var onComplete = opts.onComplete;\n  var numbers = Lib.ensureSingle(plotGroup, 'g', 'numbers');\n  var bignumberbBox, deltabBox;\n  var numbersbBox;\n  var data = [];\n  if (trace._hasNumber) data.push('number');\n  if (trace._hasDelta) {\n    data.push('delta');\n    if (trace.delta.position === 'left') data.reverse();\n  }\n  var sel = numbers.selectAll('text').data(data);\n  sel.enter().append('text');\n  sel.attr('text-anchor', function () {\n    return numbersAnchor;\n  }).attr('class', function (d) {\n    return d;\n  }).attr('x', null).attr('y', null).attr('dx', null).attr('dy', null);\n  sel.exit().remove();\n\n  // Function to override the number formatting used during transitions\n  function transitionFormat(valueformat, fmt, from, to) {\n    // For now, do not display SI prefix if start and end value do not have any\n    if (valueformat.match('s') &&\n    // If using SI prefix\n    from >= 0 !== to >= 0 &&\n    // If sign change\n    !fmt(from).slice(-1).match(SI_PREFIX) && !fmt(to).slice(-1).match(SI_PREFIX) // Has no SI prefix\n    ) {\n      var transitionValueFormat = valueformat.slice().replace('s', 'f').replace(/\\d+/, function (m) {\n        return parseInt(m) - 1;\n      });\n      var transitionAx = mockAxis(gd, {\n        tickformat: transitionValueFormat\n      });\n      return function (v) {\n        // Switch to fixed precision if number is smaller than one\n        if (Math.abs(v) < 1) return Axes.tickText(transitionAx, v).text;\n        return fmt(v);\n      };\n    } else {\n      return fmt;\n    }\n  }\n  function drawBignumber() {\n    var bignumberAx = mockAxis(gd, {\n      tickformat: trace.number.valueformat\n    }, trace._range);\n    bignumberAx.setScale();\n    Axes.prepTicks(bignumberAx);\n    var bignumberFmt = function (v) {\n      return Axes.tickText(bignumberAx, v).text;\n    };\n    var bignumberSuffix = trace.number.suffix;\n    var bignumberPrefix = trace.number.prefix;\n    var number = numbers.select('text.number');\n    function writeNumber() {\n      var txt = typeof cd[0].y === 'number' ? bignumberPrefix + bignumberFmt(cd[0].y) + bignumberSuffix : '-';\n      number.text(txt).call(Drawing.font, trace.number.font).call(svgTextUtils.convertToTspans, gd);\n    }\n    if (hasTransition(transitionOpts)) {\n      number.transition().duration(transitionOpts.duration).ease(transitionOpts.easing).each('end', function () {\n        writeNumber();\n        onComplete && onComplete();\n      }).each('interrupt', function () {\n        writeNumber();\n        onComplete && onComplete();\n      }).attrTween('text', function () {\n        var that = d3.select(this);\n        var interpolator = interpolateNumber(cd[0].lastY, cd[0].y);\n        trace._lastValue = cd[0].y;\n        var transitionFmt = transitionFormat(trace.number.valueformat, bignumberFmt, cd[0].lastY, cd[0].y);\n        return function (t) {\n          that.text(bignumberPrefix + transitionFmt(interpolator(t)) + bignumberSuffix);\n        };\n      });\n    } else {\n      writeNumber();\n    }\n    bignumberbBox = measureText(bignumberPrefix + bignumberFmt(cd[0].y) + bignumberSuffix, trace.number.font, numbersAnchor, gd);\n    return number;\n  }\n  function drawDelta() {\n    var deltaAx = mockAxis(gd, {\n      tickformat: trace.delta.valueformat\n    }, trace._range);\n    deltaAx.setScale();\n    Axes.prepTicks(deltaAx);\n    var deltaFmt = function (v) {\n      return Axes.tickText(deltaAx, v).text;\n    };\n    var deltaSuffix = trace.delta.suffix;\n    var deltaPrefix = trace.delta.prefix;\n    var deltaValue = function (d) {\n      var value = trace.delta.relative ? d.relativeDelta : d.delta;\n      return value;\n    };\n    var deltaFormatText = function (value, numberFmt) {\n      if (value === 0 || typeof value !== 'number' || isNaN(value)) return '-';\n      return (value > 0 ? trace.delta.increasing.symbol : trace.delta.decreasing.symbol) + deltaPrefix + numberFmt(value) + deltaSuffix;\n    };\n    var deltaFill = function (d) {\n      return d.delta >= 0 ? trace.delta.increasing.color : trace.delta.decreasing.color;\n    };\n    if (trace._deltaLastValue === undefined) {\n      trace._deltaLastValue = deltaValue(cd[0]);\n    }\n    var delta = numbers.select('text.delta');\n    delta.call(Drawing.font, trace.delta.font).call(Color.fill, deltaFill({\n      delta: trace._deltaLastValue\n    }));\n    function writeDelta() {\n      delta.text(deltaFormatText(deltaValue(cd[0]), deltaFmt)).call(Color.fill, deltaFill(cd[0])).call(svgTextUtils.convertToTspans, gd);\n    }\n    if (hasTransition(transitionOpts)) {\n      delta.transition().duration(transitionOpts.duration).ease(transitionOpts.easing).tween('text', function () {\n        var that = d3.select(this);\n        var to = deltaValue(cd[0]);\n        var from = trace._deltaLastValue;\n        var transitionFmt = transitionFormat(trace.delta.valueformat, deltaFmt, from, to);\n        var interpolator = interpolateNumber(from, to);\n        trace._deltaLastValue = to;\n        return function (t) {\n          that.text(deltaFormatText(interpolator(t), transitionFmt));\n          that.call(Color.fill, deltaFill({\n            delta: interpolator(t)\n          }));\n        };\n      }).each('end', function () {\n        writeDelta();\n        onComplete && onComplete();\n      }).each('interrupt', function () {\n        writeDelta();\n        onComplete && onComplete();\n      });\n    } else {\n      writeDelta();\n    }\n    deltabBox = measureText(deltaFormatText(deltaValue(cd[0]), deltaFmt), trace.delta.font, numbersAnchor, gd);\n    return delta;\n  }\n  var key = trace.mode + trace.align;\n  var delta;\n  if (trace._hasDelta) {\n    delta = drawDelta();\n    key += trace.delta.position + trace.delta.font.size + trace.delta.font.family + trace.delta.valueformat;\n    key += trace.delta.increasing.symbol + trace.delta.decreasing.symbol;\n    numbersbBox = deltabBox;\n  }\n  if (trace._hasNumber) {\n    drawBignumber();\n    key += trace.number.font.size + trace.number.font.family + trace.number.valueformat + trace.number.suffix + trace.number.prefix;\n    numbersbBox = bignumberbBox;\n  }\n\n  // Position delta relative to bignumber\n  if (trace._hasDelta && trace._hasNumber) {\n    var bignumberCenter = [(bignumberbBox.left + bignumberbBox.right) / 2, (bignumberbBox.top + bignumberbBox.bottom) / 2];\n    var deltaCenter = [(deltabBox.left + deltabBox.right) / 2, (deltabBox.top + deltabBox.bottom) / 2];\n    var dx, dy;\n    var padding = 0.75 * trace.delta.font.size;\n    if (trace.delta.position === 'left') {\n      dx = cache(trace, 'deltaPos', 0, -1 * (bignumberbBox.width * position[trace.align] + deltabBox.width * (1 - position[trace.align]) + padding), key, Math.min);\n      dy = bignumberCenter[1] - deltaCenter[1];\n      numbersbBox = {\n        width: bignumberbBox.width + deltabBox.width + padding,\n        height: Math.max(bignumberbBox.height, deltabBox.height),\n        left: deltabBox.left + dx,\n        right: bignumberbBox.right,\n        top: Math.min(bignumberbBox.top, deltabBox.top + dy),\n        bottom: Math.max(bignumberbBox.bottom, deltabBox.bottom + dy)\n      };\n    }\n    if (trace.delta.position === 'right') {\n      dx = cache(trace, 'deltaPos', 0, bignumberbBox.width * (1 - position[trace.align]) + deltabBox.width * position[trace.align] + padding, key, Math.max);\n      dy = bignumberCenter[1] - deltaCenter[1];\n      numbersbBox = {\n        width: bignumberbBox.width + deltabBox.width + padding,\n        height: Math.max(bignumberbBox.height, deltabBox.height),\n        left: bignumberbBox.left,\n        right: deltabBox.right + dx,\n        top: Math.min(bignumberbBox.top, deltabBox.top + dy),\n        bottom: Math.max(bignumberbBox.bottom, deltabBox.bottom + dy)\n      };\n    }\n    if (trace.delta.position === 'bottom') {\n      dx = null;\n      dy = deltabBox.height;\n      numbersbBox = {\n        width: Math.max(bignumberbBox.width, deltabBox.width),\n        height: bignumberbBox.height + deltabBox.height,\n        left: Math.min(bignumberbBox.left, deltabBox.left),\n        right: Math.max(bignumberbBox.right, deltabBox.right),\n        top: bignumberbBox.bottom - bignumberbBox.height,\n        bottom: bignumberbBox.bottom + deltabBox.height\n      };\n    }\n    if (trace.delta.position === 'top') {\n      dx = null;\n      dy = bignumberbBox.top;\n      numbersbBox = {\n        width: Math.max(bignumberbBox.width, deltabBox.width),\n        height: bignumberbBox.height + deltabBox.height,\n        left: Math.min(bignumberbBox.left, deltabBox.left),\n        right: Math.max(bignumberbBox.right, deltabBox.right),\n        top: bignumberbBox.bottom - bignumberbBox.height - deltabBox.height,\n        bottom: bignumberbBox.bottom\n      };\n    }\n    delta.attr({\n      dx: dx,\n      dy: dy\n    });\n  }\n\n  // Resize numbers to fit within space and position\n  if (trace._hasNumber || trace._hasDelta) {\n    numbers.attr('transform', function () {\n      var m = opts.numbersScaler(numbersbBox);\n      key += m[2];\n      var scaleRatio = cache(trace, 'numbersScale', 1, m[0], key, Math.min);\n      var translateY;\n      if (!trace._scaleNumbers) scaleRatio = 1;\n      if (trace._isAngular) {\n        // align vertically to bottom\n        translateY = numbersY - scaleRatio * numbersbBox.bottom;\n      } else {\n        // align vertically to center\n        translateY = numbersY - scaleRatio * (numbersbBox.top + numbersbBox.bottom) / 2;\n      }\n\n      // Stash the top position of numbersbBox for title positioning\n      trace._numbersTop = scaleRatio * numbersbBox.top + translateY;\n      var ref = numbersbBox[numbersAlign];\n      if (numbersAlign === 'center') ref = (numbersbBox.left + numbersbBox.right) / 2;\n      var translateX = numbersX - scaleRatio * ref;\n\n      // Stash translateX\n      translateX = cache(trace, 'numbersTranslate', 0, translateX, key, Math.max);\n      return strTranslate(translateX, translateY) + strScale(scaleRatio);\n    });\n  }\n}\n\n// Apply fill, stroke, stroke-width to SVG shape\nfunction styleShape(p) {\n  p.each(function (d) {\n    Color.stroke(d3.select(this), d.line.color);\n  }).each(function (d) {\n    Color.fill(d3.select(this), d.color);\n  }).style('stroke-width', function (d) {\n    return d.line.width;\n  });\n}\n\n// Returns a tween for a transition’s \"d\" attribute, transitioning any selected\n// arcs from their current angle to the specified new angle.\nfunction arcTween(arc, endAngle, newAngle) {\n  return function () {\n    var interp = interpolate(endAngle, newAngle);\n    return function (t) {\n      return arc.endAngle(interp(t))();\n    };\n  };\n}\n\n// mocks our axis\nfunction mockAxis(gd, opts, zrange) {\n  var fullLayout = gd._fullLayout;\n  var axisIn = Lib.extendFlat({\n    type: 'linear',\n    ticks: 'outside',\n    range: zrange,\n    showline: true\n  }, opts);\n  var axisOut = {\n    type: 'linear',\n    _id: 'x' + opts._id\n  };\n  var axisOptions = {\n    letter: 'x',\n    font: fullLayout.font,\n    noHover: true,\n    noTickson: true\n  };\n  function coerce(attr, dflt) {\n    return Lib.coerce(axisIn, axisOut, axisLayoutAttrs, attr, dflt);\n  }\n  handleAxisDefaults(axisIn, axisOut, coerce, axisOptions, fullLayout);\n  handleAxisPositionDefaults(axisIn, axisOut, coerce, axisOptions);\n  return axisOut;\n}\nfunction fitTextInsideBox(textBB, width, height) {\n  // compute scaling ratio to have text fit within specified width and height\n  var ratio = Math.min(width / textBB.width, height / textBB.height);\n  return [ratio, textBB, width + 'x' + height];\n}\nfunction fitTextInsideCircle(textBB, radius) {\n  // compute scaling ratio to have text fit within specified radius\n  var elRadius = Math.sqrt(textBB.width / 2 * (textBB.width / 2) + textBB.height * textBB.height);\n  var ratio = radius / elRadius;\n  return [ratio, textBB, radius];\n}\nfunction measureText(txt, font, textAnchor, gd) {\n  var element = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n  var sel = d3.select(element);\n  sel.text(txt).attr('x', 0).attr('y', 0).attr('text-anchor', textAnchor).attr('data-unformatted', txt).call(svgTextUtils.convertToTspans, gd).call(Drawing.font, font);\n  return Drawing.bBox(sel.node());\n}\nfunction cache(trace, name, initialValue, value, key, fn) {\n  var objName = '_cache' + name;\n  if (!(trace[objName] && trace[objName].key === key)) {\n    trace[objName] = {\n      key: key,\n      value: initialValue\n    };\n  }\n  var v = Lib.aggNums(fn, null, [trace[objName].value, value], 2);\n  trace[objName].value = v;\n  return v;\n}\n\n/***/ }),\n\n/***/ 16249:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2708507__) {\n\n\"use strict\";\n\n\nvar colorScaleAttrs = __nested_webpack_require_2708507__(50693);\nvar axisHoverFormat = (__nested_webpack_require_2708507__(12663).axisHoverFormat);\nvar hovertemplateAttrs = (__nested_webpack_require_2708507__(5386)/* .hovertemplateAttrs */ .f);\nvar meshAttrs = __nested_webpack_require_2708507__(2418);\nvar baseAttrs = __nested_webpack_require_2708507__(9012);\nvar extendFlat = (__nested_webpack_require_2708507__(1426).extendFlat);\nvar overrideAll = (__nested_webpack_require_2708507__(30962).overrideAll);\nfunction makeSliceAttr(axLetter) {\n  return {\n    show: {\n      valType: 'boolean',\n      dflt: false\n    },\n    locations: {\n      valType: 'data_array',\n      dflt: []\n    },\n    fill: {\n      valType: 'number',\n      min: 0,\n      max: 1,\n      dflt: 1\n    }\n  };\n}\nfunction makeCapAttr(axLetter) {\n  return {\n    show: {\n      valType: 'boolean',\n      dflt: true\n    },\n    fill: {\n      valType: 'number',\n      min: 0,\n      max: 1,\n      dflt: 1\n    }\n  };\n}\nvar attrs = module.exports = overrideAll(extendFlat({\n  x: {\n    valType: 'data_array'\n  },\n  y: {\n    valType: 'data_array'\n  },\n  z: {\n    valType: 'data_array'\n  },\n  value: {\n    valType: 'data_array'\n  },\n  isomin: {\n    valType: 'number'\n  },\n  isomax: {\n    valType: 'number'\n  },\n  surface: {\n    show: {\n      valType: 'boolean',\n      dflt: true\n    },\n    count: {\n      valType: 'integer',\n      dflt: 2,\n      min: 1\n    },\n    fill: {\n      valType: 'number',\n      min: 0,\n      max: 1,\n      dflt: 1\n    },\n    pattern: {\n      valType: 'flaglist',\n      flags: ['A', 'B', 'C', 'D', 'E'],\n      extras: ['all', 'odd', 'even'],\n      dflt: 'all'\n    }\n  },\n  spaceframe: {\n    show: {\n      valType: 'boolean',\n      dflt: false\n    },\n    fill: {\n      valType: 'number',\n      min: 0,\n      max: 1,\n      dflt: 0.15\n    }\n  },\n  slices: {\n    x: makeSliceAttr('x'),\n    y: makeSliceAttr('y'),\n    z: makeSliceAttr('z')\n  },\n  caps: {\n    x: makeCapAttr('x'),\n    y: makeCapAttr('y'),\n    z: makeCapAttr('z')\n  },\n  text: {\n    valType: 'string',\n    dflt: '',\n    arrayOk: true\n  },\n  hovertext: {\n    valType: 'string',\n    dflt: '',\n    arrayOk: true\n  },\n  hovertemplate: hovertemplateAttrs(),\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  zhoverformat: axisHoverFormat('z'),\n  valuehoverformat: axisHoverFormat('value', 1),\n  showlegend: extendFlat({}, baseAttrs.showlegend, {\n    dflt: false\n  })\n}, colorScaleAttrs('', {\n  colorAttr: '`value`',\n  showScaleDflt: true,\n  editTypeOverride: 'calc'\n}), {\n  opacity: meshAttrs.opacity,\n  lightposition: meshAttrs.lightposition,\n  lighting: meshAttrs.lighting,\n  flatshading: meshAttrs.flatshading,\n  contour: meshAttrs.contour,\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo)\n}), 'calc', 'nested');\n\n// required defaults to speed up surface normal calculations\nattrs.flatshading.dflt = true;\nattrs.lighting.facenormalsepsilon.dflt = 0;\nattrs.x.editType = attrs.y.editType = attrs.z.editType = attrs.value.editType = 'calc+clearAxisTypes';\nattrs.transforms = undefined;\n\n/***/ }),\n\n/***/ 56959:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2711562__) {\n\n\"use strict\";\n\n\nvar colorscaleCalc = __nested_webpack_require_2711562__(78803);\nvar processGrid = (__nested_webpack_require_2711562__(88489).processGrid);\nvar filter = (__nested_webpack_require_2711562__(88489).filter);\nmodule.exports = function calc(gd, trace) {\n  trace._len = Math.min(trace.x.length, trace.y.length, trace.z.length, trace.value.length);\n  trace._x = filter(trace.x, trace._len);\n  trace._y = filter(trace.y, trace._len);\n  trace._z = filter(trace.z, trace._len);\n  trace._value = filter(trace.value, trace._len);\n  var grid = processGrid(trace);\n  trace._gridFill = grid.fill;\n  trace._Xs = grid.Xs;\n  trace._Ys = grid.Ys;\n  trace._Zs = grid.Zs;\n  trace._len = grid.len;\n  var min = Infinity;\n  var max = -Infinity;\n  for (var i = 0; i < trace._len; i++) {\n    var v = trace._value[i];\n    min = Math.min(min, v);\n    max = Math.max(max, v);\n  }\n  trace._minValues = min;\n  trace._maxValues = max;\n  trace._vMin = trace.isomin === undefined || trace.isomin === null ? min : trace.isomin;\n  trace._vMax = trace.isomax === undefined || trace.isomin === null ? max : trace.isomax;\n  colorscaleCalc(gd, trace, {\n    vals: [trace._vMin, trace._vMax],\n    containerStr: '',\n    cLetter: 'c'\n  });\n};\n\n/***/ }),\n\n/***/ 22674:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2712830__) {\n\n\"use strict\";\n\n\nvar createMesh = (__nested_webpack_require_2712830__(9330).gl_mesh3d);\nvar parseColorScale = (__nested_webpack_require_2712830__(81697).parseColorScale);\nvar str2RgbaArray = __nested_webpack_require_2712830__(78614);\nvar extractOpts = (__nested_webpack_require_2712830__(21081).extractOpts);\nvar zip3 = __nested_webpack_require_2712830__(90060);\nvar findNearestOnAxis = function (w, arr) {\n  for (var q = arr.length - 1; q > 0; q--) {\n    var min = Math.min(arr[q], arr[q - 1]);\n    var max = Math.max(arr[q], arr[q - 1]);\n    if (max > min && min < w && w <= max) {\n      return {\n        id: q,\n        distRatio: (max - w) / (max - min)\n      };\n    }\n  }\n  return {\n    id: 0,\n    distRatio: 0\n  };\n};\nfunction IsosurfaceTrace(scene, mesh, uid) {\n  this.scene = scene;\n  this.uid = uid;\n  this.mesh = mesh;\n  this.name = '';\n  this.data = null;\n  this.showContour = false;\n}\nvar proto = IsosurfaceTrace.prototype;\nproto.handlePick = function (selection) {\n  if (selection.object === this.mesh) {\n    var rawId = selection.data.index;\n    var x = this.data._meshX[rawId];\n    var y = this.data._meshY[rawId];\n    var z = this.data._meshZ[rawId];\n    var height = this.data._Ys.length;\n    var depth = this.data._Zs.length;\n    var i = findNearestOnAxis(x, this.data._Xs).id;\n    var j = findNearestOnAxis(y, this.data._Ys).id;\n    var k = findNearestOnAxis(z, this.data._Zs).id;\n    var selectIndex = selection.index = k + depth * j + depth * height * i;\n    selection.traceCoordinate = [this.data._meshX[selectIndex], this.data._meshY[selectIndex], this.data._meshZ[selectIndex], this.data._value[selectIndex]];\n    var text = this.data.hovertext || this.data.text;\n    if (Array.isArray(text) && text[selectIndex] !== undefined) {\n      selection.textLabel = text[selectIndex];\n    } else if (text) {\n      selection.textLabel = text;\n    }\n    return true;\n  }\n};\nproto.update = function (data) {\n  var scene = this.scene;\n  var layout = scene.fullSceneLayout;\n  this.data = generateIsoMeshes(data);\n\n  // Unpack position data\n  function toDataCoords(axis, coord, scale, calendar) {\n    return coord.map(function (x) {\n      return axis.d2l(x, 0, calendar) * scale;\n    });\n  }\n  var positions = zip3(toDataCoords(layout.xaxis, data._meshX, scene.dataScale[0], data.xcalendar), toDataCoords(layout.yaxis, data._meshY, scene.dataScale[1], data.ycalendar), toDataCoords(layout.zaxis, data._meshZ, scene.dataScale[2], data.zcalendar));\n  var cells = zip3(data._meshI, data._meshJ, data._meshK);\n  var config = {\n    positions: positions,\n    cells: cells,\n    lightPosition: [data.lightposition.x, data.lightposition.y, data.lightposition.z],\n    ambient: data.lighting.ambient,\n    diffuse: data.lighting.diffuse,\n    specular: data.lighting.specular,\n    roughness: data.lighting.roughness,\n    fresnel: data.lighting.fresnel,\n    vertexNormalsEpsilon: data.lighting.vertexnormalsepsilon,\n    faceNormalsEpsilon: data.lighting.facenormalsepsilon,\n    opacity: data.opacity,\n    contourEnable: data.contour.show,\n    contourColor: str2RgbaArray(data.contour.color).slice(0, 3),\n    contourWidth: data.contour.width,\n    useFacetNormals: data.flatshading\n  };\n  var cOpts = extractOpts(data);\n  config.vertexIntensity = data._meshIntensity;\n  config.vertexIntensityBounds = [cOpts.min, cOpts.max];\n  config.colormap = parseColorScale(data);\n\n  // Update mesh\n  this.mesh.update(config);\n};\nproto.dispose = function () {\n  this.scene.glplot.remove(this.mesh);\n  this.mesh.dispose();\n};\nvar GRID_TYPES = ['xyz', 'xzy', 'yxz', 'yzx', 'zxy', 'zyx'];\nfunction generateIsoMeshes(data) {\n  data._meshI = [];\n  data._meshJ = [];\n  data._meshK = [];\n  var showSurface = data.surface.show;\n  var showSpaceframe = data.spaceframe.show;\n  var surfaceFill = data.surface.fill;\n  var spaceframeFill = data.spaceframe.fill;\n  var drawingSurface = false;\n  var drawingSpaceframe = false;\n  var numFaces = 0;\n  var numVertices;\n  var beginVertextLength;\n  var Xs = data._Xs;\n  var Ys = data._Ys;\n  var Zs = data._Zs;\n  var width = Xs.length;\n  var height = Ys.length;\n  var depth = Zs.length;\n  var filled = GRID_TYPES.indexOf(data._gridFill.replace(/-/g, '').replace(/\\+/g, ''));\n  var getIndex = function (i, j, k) {\n    switch (filled) {\n      case 5:\n        // 'zyx'\n        return k + depth * j + depth * height * i;\n      case 4:\n        // 'zxy'\n        return k + depth * i + depth * width * j;\n      case 3:\n        // 'yzx'\n        return j + height * k + height * depth * i;\n      case 2:\n        // 'yxz'\n        return j + height * i + height * width * k;\n      case 1:\n        // 'xzy'\n        return i + width * k + width * depth * j;\n      default:\n        // case 0: // 'xyz'\n        return i + width * j + width * height * k;\n    }\n  };\n  var minValues = data._minValues;\n  var maxValues = data._maxValues;\n  var vMin = data._vMin;\n  var vMax = data._vMax;\n  var allXs;\n  var allYs;\n  var allZs;\n  var allVs;\n  function findVertexId(x, y, z) {\n    // could be used to find the vertex id of previously generated vertex within the group\n\n    var len = allVs.length;\n    for (var f = beginVertextLength; f < len; f++) {\n      if (x === allXs[f] && y === allYs[f] && z === allZs[f]) {\n        return f;\n      }\n    }\n    return -1;\n  }\n  function beginGroup() {\n    beginVertextLength = numVertices;\n  }\n  function emptyVertices() {\n    allXs = [];\n    allYs = [];\n    allZs = [];\n    allVs = [];\n    numVertices = 0;\n    beginGroup();\n  }\n  function addVertex(x, y, z, v) {\n    allXs.push(x);\n    allYs.push(y);\n    allZs.push(z);\n    allVs.push(v);\n    numVertices++;\n    return numVertices - 1;\n  }\n  function addFace(a, b, c) {\n    data._meshI.push(a);\n    data._meshJ.push(b);\n    data._meshK.push(c);\n    numFaces++;\n    return numFaces - 1;\n  }\n  function getCenter(A, B, C) {\n    var M = [];\n    for (var i = 0; i < A.length; i++) {\n      M[i] = (A[i] + B[i] + C[i]) / 3.0;\n    }\n    return M;\n  }\n  function getBetween(A, B, r) {\n    var M = [];\n    for (var i = 0; i < A.length; i++) {\n      M[i] = A[i] * (1 - r) + r * B[i];\n    }\n    return M;\n  }\n  var activeFill;\n  function setFill(fill) {\n    activeFill = fill;\n  }\n  function createOpenTri(xyzv, abc) {\n    var A = xyzv[0];\n    var B = xyzv[1];\n    var C = xyzv[2];\n    var G = getCenter(A, B, C);\n    var r = Math.sqrt(1 - activeFill);\n    var p1 = getBetween(G, A, r);\n    var p2 = getBetween(G, B, r);\n    var p3 = getBetween(G, C, r);\n    var a = abc[0];\n    var b = abc[1];\n    var c = abc[2];\n    return {\n      xyzv: [[A, B, p2], [p2, p1, A], [B, C, p3], [p3, p2, B], [C, A, p1], [p1, p3, C]],\n      abc: [[a, b, -1], [-1, -1, a], [b, c, -1], [-1, -1, b], [c, a, -1], [-1, -1, c]]\n    };\n  }\n  function styleIncludes(style, char) {\n    if (style === 'all' || style === null) return true;\n    return style.indexOf(char) > -1;\n  }\n  function mapValue(style, value) {\n    if (style === null) return value;\n    return style;\n  }\n  function drawTri(style, xyzv, abc) {\n    beginGroup();\n    var allXYZVs = [xyzv];\n    var allABCs = [abc];\n    if (activeFill >= 1) {\n      allXYZVs = [xyzv];\n      allABCs = [abc];\n    } else if (activeFill > 0) {\n      var openTri = createOpenTri(xyzv, abc);\n      allXYZVs = openTri.xyzv;\n      allABCs = openTri.abc;\n    }\n    for (var f = 0; f < allXYZVs.length; f++) {\n      xyzv = allXYZVs[f];\n      abc = allABCs[f];\n      var pnts = [];\n      for (var i = 0; i < 3; i++) {\n        var x = xyzv[i][0];\n        var y = xyzv[i][1];\n        var z = xyzv[i][2];\n        var v = xyzv[i][3];\n        var id = abc[i] > -1 ? abc[i] : findVertexId(x, y, z);\n        if (id > -1) {\n          pnts[i] = id;\n        } else {\n          pnts[i] = addVertex(x, y, z, mapValue(style, v));\n        }\n      }\n      addFace(pnts[0], pnts[1], pnts[2]);\n    }\n  }\n  function drawQuad(style, xyzv, abcd) {\n    var makeTri = function (i, j, k) {\n      drawTri(style, [xyzv[i], xyzv[j], xyzv[k]], [abcd[i], abcd[j], abcd[k]]);\n    };\n    makeTri(0, 1, 2);\n    makeTri(2, 3, 0);\n  }\n  function drawTetra(style, xyzv, abcd) {\n    var makeTri = function (i, j, k) {\n      drawTri(style, [xyzv[i], xyzv[j], xyzv[k]], [abcd[i], abcd[j], abcd[k]]);\n    };\n    makeTri(0, 1, 2);\n    makeTri(3, 0, 1);\n    makeTri(2, 3, 0);\n    makeTri(1, 2, 3);\n  }\n  function calcIntersection(pointOut, pointIn, min, max) {\n    var value = pointOut[3];\n    if (value < min) value = min;\n    if (value > max) value = max;\n    var ratio = (pointOut[3] - value) / (pointOut[3] - pointIn[3] + 0.000000001); // we had to add this error to force solve the tiny caps\n\n    var result = [];\n    for (var s = 0; s < 4; s++) {\n      result[s] = (1 - ratio) * pointOut[s] + ratio * pointIn[s];\n    }\n    return result;\n  }\n  function inRange(value, min, max) {\n    return value >= min && value <= max;\n  }\n  function almostInFinalRange(value) {\n    var vErr = 0.001 * (vMax - vMin);\n    return value >= vMin - vErr && value <= vMax + vErr;\n  }\n  function getXYZV(indecies) {\n    var xyzv = [];\n    for (var q = 0; q < 4; q++) {\n      var index = indecies[q];\n      xyzv.push([data._x[index], data._y[index], data._z[index], data._value[index]]);\n    }\n    return xyzv;\n  }\n  var MAX_PASS = 3;\n  function tryCreateTri(style, xyzv, abc, min, max, nPass) {\n    if (!nPass) nPass = 1;\n    abc = [-1, -1, -1]; // Note: for the moment we override indices\n    // to run faster! But it is possible to comment this line\n    // to reduce the number of vertices.\n\n    var result = false;\n    var ok = [inRange(xyzv[0][3], min, max), inRange(xyzv[1][3], min, max), inRange(xyzv[2][3], min, max)];\n    if (!ok[0] && !ok[1] && !ok[2]) {\n      return false;\n    }\n    var tryDrawTri = function (style, xyzv, abc) {\n      if (\n      // we check here if the points are in `real` iso-min/max range\n      almostInFinalRange(xyzv[0][3]) && almostInFinalRange(xyzv[1][3]) && almostInFinalRange(xyzv[2][3])) {\n        drawTri(style, xyzv, abc);\n        return true;\n      } else if (nPass < MAX_PASS) {\n        return tryCreateTri(style, xyzv, abc, vMin, vMax, ++nPass); // i.e. second pass using actual vMin vMax bounds\n      }\n\n      return false;\n    };\n    if (ok[0] && ok[1] && ok[2]) {\n      return tryDrawTri(style, xyzv, abc) || result;\n    }\n    var interpolated = false;\n    [[0, 1, 2], [2, 0, 1], [1, 2, 0]].forEach(function (e) {\n      if (ok[e[0]] && ok[e[1]] && !ok[e[2]]) {\n        var A = xyzv[e[0]];\n        var B = xyzv[e[1]];\n        var C = xyzv[e[2]];\n        var p1 = calcIntersection(C, A, min, max);\n        var p2 = calcIntersection(C, B, min, max);\n        result = tryDrawTri(style, [p2, p1, A], [-1, -1, abc[e[0]]]) || result;\n        result = tryDrawTri(style, [A, B, p2], [abc[e[0]], abc[e[1]], -1]) || result;\n        interpolated = true;\n      }\n    });\n    if (interpolated) return result;\n    [[0, 1, 2], [1, 2, 0], [2, 0, 1]].forEach(function (e) {\n      if (ok[e[0]] && !ok[e[1]] && !ok[e[2]]) {\n        var A = xyzv[e[0]];\n        var B = xyzv[e[1]];\n        var C = xyzv[e[2]];\n        var p1 = calcIntersection(B, A, min, max);\n        var p2 = calcIntersection(C, A, min, max);\n        result = tryDrawTri(style, [p2, p1, A], [-1, -1, abc[e[0]]]) || result;\n        interpolated = true;\n      }\n    });\n    return result;\n  }\n  function tryCreateTetra(style, abcd, min, max) {\n    var result = false;\n    var xyzv = getXYZV(abcd);\n    var ok = [inRange(xyzv[0][3], min, max), inRange(xyzv[1][3], min, max), inRange(xyzv[2][3], min, max), inRange(xyzv[3][3], min, max)];\n    if (!ok[0] && !ok[1] && !ok[2] && !ok[3]) {\n      return result;\n    }\n    if (ok[0] && ok[1] && ok[2] && ok[3]) {\n      if (drawingSpaceframe) {\n        result = drawTetra(style, xyzv, abcd) || result;\n      }\n      return result;\n    }\n    var interpolated = false;\n    [[0, 1, 2, 3], [3, 0, 1, 2], [2, 3, 0, 1], [1, 2, 3, 0]].forEach(function (e) {\n      if (ok[e[0]] && ok[e[1]] && ok[e[2]] && !ok[e[3]]) {\n        var A = xyzv[e[0]];\n        var B = xyzv[e[1]];\n        var C = xyzv[e[2]];\n        var D = xyzv[e[3]];\n        if (drawingSpaceframe) {\n          result = drawTri(style, [A, B, C], [abcd[e[0]], abcd[e[1]], abcd[e[2]]]) || result;\n        } else {\n          var p1 = calcIntersection(D, A, min, max);\n          var p2 = calcIntersection(D, B, min, max);\n          var p3 = calcIntersection(D, C, min, max);\n          result = drawTri(null, [p1, p2, p3], [-1, -1, -1]) || result;\n        }\n        interpolated = true;\n      }\n    });\n    if (interpolated) return result;\n    [[0, 1, 2, 3], [1, 2, 3, 0], [2, 3, 0, 1], [3, 0, 1, 2], [0, 2, 3, 1], [1, 3, 2, 0]].forEach(function (e) {\n      if (ok[e[0]] && ok[e[1]] && !ok[e[2]] && !ok[e[3]]) {\n        var A = xyzv[e[0]];\n        var B = xyzv[e[1]];\n        var C = xyzv[e[2]];\n        var D = xyzv[e[3]];\n        var p1 = calcIntersection(C, A, min, max);\n        var p2 = calcIntersection(C, B, min, max);\n        var p3 = calcIntersection(D, B, min, max);\n        var p4 = calcIntersection(D, A, min, max);\n        if (drawingSpaceframe) {\n          result = drawTri(style, [A, p4, p1], [abcd[e[0]], -1, -1]) || result;\n          result = drawTri(style, [B, p2, p3], [abcd[e[1]], -1, -1]) || result;\n        } else {\n          result = drawQuad(null, [p1, p2, p3, p4], [-1, -1, -1, -1]) || result;\n        }\n        interpolated = true;\n      }\n    });\n    if (interpolated) return result;\n    [[0, 1, 2, 3], [1, 2, 3, 0], [2, 3, 0, 1], [3, 0, 1, 2]].forEach(function (e) {\n      if (ok[e[0]] && !ok[e[1]] && !ok[e[2]] && !ok[e[3]]) {\n        var A = xyzv[e[0]];\n        var B = xyzv[e[1]];\n        var C = xyzv[e[2]];\n        var D = xyzv[e[3]];\n        var p1 = calcIntersection(B, A, min, max);\n        var p2 = calcIntersection(C, A, min, max);\n        var p3 = calcIntersection(D, A, min, max);\n        if (drawingSpaceframe) {\n          result = drawTri(style, [A, p1, p2], [abcd[e[0]], -1, -1]) || result;\n          result = drawTri(style, [A, p2, p3], [abcd[e[0]], -1, -1]) || result;\n          result = drawTri(style, [A, p3, p1], [abcd[e[0]], -1, -1]) || result;\n        } else {\n          result = drawTri(null, [p1, p2, p3], [-1, -1, -1]) || result;\n        }\n        interpolated = true;\n      }\n    });\n    return result;\n  }\n  function addCube(style, p000, p001, p010, p011, p100, p101, p110, p111, min, max) {\n    var result = false;\n    if (drawingSurface) {\n      if (styleIncludes(style, 'A')) {\n        result = tryCreateTetra(null, [p000, p001, p010, p100], min, max) || result;\n      }\n      if (styleIncludes(style, 'B')) {\n        result = tryCreateTetra(null, [p001, p010, p011, p111], min, max) || result;\n      }\n      if (styleIncludes(style, 'C')) {\n        result = tryCreateTetra(null, [p001, p100, p101, p111], min, max) || result;\n      }\n      if (styleIncludes(style, 'D')) {\n        result = tryCreateTetra(null, [p010, p100, p110, p111], min, max) || result;\n      }\n      if (styleIncludes(style, 'E')) {\n        result = tryCreateTetra(null, [p001, p010, p100, p111], min, max) || result;\n      }\n    }\n    if (drawingSpaceframe) {\n      result = tryCreateTetra(style, [p001, p010, p100, p111], min, max) || result;\n    }\n    return result;\n  }\n  function addRect(style, a, b, c, d, min, max, previousResult) {\n    return [previousResult[0] === true ? true : tryCreateTri(style, getXYZV([a, b, c]), [a, b, c], min, max), previousResult[1] === true ? true : tryCreateTri(style, getXYZV([c, d, a]), [c, d, a], min, max)];\n  }\n  function begin2dCell(style, p00, p01, p10, p11, min, max, isEven, previousResult) {\n    // used to create caps and/or slices on exact axis points\n    if (isEven) {\n      return addRect(style, p00, p01, p11, p10, min, max, previousResult);\n    } else {\n      return addRect(style, p01, p11, p10, p00, min, max, previousResult);\n    }\n  }\n  function beginSection(style, i, j, k, min, max, distRatios) {\n    // used to create slices between axis points\n\n    var result = false;\n    var A, B, C, D;\n    var makeSection = function () {\n      result = tryCreateTri(style, [A, B, C], [-1, -1, -1], min, max) || result;\n      result = tryCreateTri(style, [C, D, A], [-1, -1, -1], min, max) || result;\n    };\n    var rX = distRatios[0];\n    var rY = distRatios[1];\n    var rZ = distRatios[2];\n    if (rX) {\n      A = getBetween(getXYZV([getIndex(i, j - 0, k - 0)])[0], getXYZV([getIndex(i - 1, j - 0, k - 0)])[0], rX);\n      B = getBetween(getXYZV([getIndex(i, j - 0, k - 1)])[0], getXYZV([getIndex(i - 1, j - 0, k - 1)])[0], rX);\n      C = getBetween(getXYZV([getIndex(i, j - 1, k - 1)])[0], getXYZV([getIndex(i - 1, j - 1, k - 1)])[0], rX);\n      D = getBetween(getXYZV([getIndex(i, j - 1, k - 0)])[0], getXYZV([getIndex(i - 1, j - 1, k - 0)])[0], rX);\n      makeSection();\n    }\n    if (rY) {\n      A = getBetween(getXYZV([getIndex(i - 0, j, k - 0)])[0], getXYZV([getIndex(i - 0, j - 1, k - 0)])[0], rY);\n      B = getBetween(getXYZV([getIndex(i - 0, j, k - 1)])[0], getXYZV([getIndex(i - 0, j - 1, k - 1)])[0], rY);\n      C = getBetween(getXYZV([getIndex(i - 1, j, k - 1)])[0], getXYZV([getIndex(i - 1, j - 1, k - 1)])[0], rY);\n      D = getBetween(getXYZV([getIndex(i - 1, j, k - 0)])[0], getXYZV([getIndex(i - 1, j - 1, k - 0)])[0], rY);\n      makeSection();\n    }\n    if (rZ) {\n      A = getBetween(getXYZV([getIndex(i - 0, j - 0, k)])[0], getXYZV([getIndex(i - 0, j - 0, k - 1)])[0], rZ);\n      B = getBetween(getXYZV([getIndex(i - 0, j - 1, k)])[0], getXYZV([getIndex(i - 0, j - 1, k - 1)])[0], rZ);\n      C = getBetween(getXYZV([getIndex(i - 1, j - 1, k)])[0], getXYZV([getIndex(i - 1, j - 1, k - 1)])[0], rZ);\n      D = getBetween(getXYZV([getIndex(i - 1, j - 0, k)])[0], getXYZV([getIndex(i - 1, j - 0, k - 1)])[0], rZ);\n      makeSection();\n    }\n    return result;\n  }\n  function begin3dCell(style, p000, p001, p010, p011, p100, p101, p110, p111, min, max, isEven) {\n    // used to create spaceframe and/or iso-surfaces\n\n    var cellStyle = style;\n    if (isEven) {\n      if (drawingSurface && style === 'even') cellStyle = null;\n      return addCube(cellStyle, p000, p001, p010, p011, p100, p101, p110, p111, min, max);\n    } else {\n      if (drawingSurface && style === 'odd') cellStyle = null;\n      return addCube(cellStyle, p111, p110, p101, p100, p011, p010, p001, p000, min, max);\n    }\n  }\n  function draw2dX(style, items, min, max, previousResult) {\n    var result = [];\n    var n = 0;\n    for (var q = 0; q < items.length; q++) {\n      var i = items[q];\n      for (var k = 1; k < depth; k++) {\n        for (var j = 1; j < height; j++) {\n          result.push(begin2dCell(style, getIndex(i, j - 1, k - 1), getIndex(i, j - 1, k), getIndex(i, j, k - 1), getIndex(i, j, k), min, max, (i + j + k) % 2, previousResult && previousResult[n] ? previousResult[n] : []));\n          n++;\n        }\n      }\n    }\n    return result;\n  }\n  function draw2dY(style, items, min, max, previousResult) {\n    var result = [];\n    var n = 0;\n    for (var q = 0; q < items.length; q++) {\n      var j = items[q];\n      for (var i = 1; i < width; i++) {\n        for (var k = 1; k < depth; k++) {\n          result.push(begin2dCell(style, getIndex(i - 1, j, k - 1), getIndex(i, j, k - 1), getIndex(i - 1, j, k), getIndex(i, j, k), min, max, (i + j + k) % 2, previousResult && previousResult[n] ? previousResult[n] : []));\n          n++;\n        }\n      }\n    }\n    return result;\n  }\n  function draw2dZ(style, items, min, max, previousResult) {\n    var result = [];\n    var n = 0;\n    for (var q = 0; q < items.length; q++) {\n      var k = items[q];\n      for (var j = 1; j < height; j++) {\n        for (var i = 1; i < width; i++) {\n          result.push(begin2dCell(style, getIndex(i - 1, j - 1, k), getIndex(i - 1, j, k), getIndex(i, j - 1, k), getIndex(i, j, k), min, max, (i + j + k) % 2, previousResult && previousResult[n] ? previousResult[n] : []));\n          n++;\n        }\n      }\n    }\n    return result;\n  }\n  function draw3d(style, min, max) {\n    for (var k = 1; k < depth; k++) {\n      for (var j = 1; j < height; j++) {\n        for (var i = 1; i < width; i++) {\n          begin3dCell(style, getIndex(i - 1, j - 1, k - 1), getIndex(i - 1, j - 1, k), getIndex(i - 1, j, k - 1), getIndex(i - 1, j, k), getIndex(i, j - 1, k - 1), getIndex(i, j - 1, k), getIndex(i, j, k - 1), getIndex(i, j, k), min, max, (i + j + k) % 2);\n        }\n      }\n    }\n  }\n  function drawSpaceframe(style, min, max) {\n    drawingSpaceframe = true;\n    draw3d(style, min, max);\n    drawingSpaceframe = false;\n  }\n  function drawSurface(style, min, max) {\n    drawingSurface = true;\n    draw3d(style, min, max);\n    drawingSurface = false;\n  }\n  function drawSectionX(style, items, min, max, distRatios, previousResult) {\n    var result = [];\n    var n = 0;\n    for (var q = 0; q < items.length; q++) {\n      var i = items[q];\n      for (var k = 1; k < depth; k++) {\n        for (var j = 1; j < height; j++) {\n          result.push(beginSection(style, i, j, k, min, max, distRatios[q], previousResult && previousResult[n] ? previousResult[n] : []));\n          n++;\n        }\n      }\n    }\n    return result;\n  }\n  function drawSectionY(style, items, min, max, distRatios, previousResult) {\n    var result = [];\n    var n = 0;\n    for (var q = 0; q < items.length; q++) {\n      var j = items[q];\n      for (var i = 1; i < width; i++) {\n        for (var k = 1; k < depth; k++) {\n          result.push(beginSection(style, i, j, k, min, max, distRatios[q], previousResult && previousResult[n] ? previousResult[n] : []));\n          n++;\n        }\n      }\n    }\n    return result;\n  }\n  function drawSectionZ(style, items, min, max, distRatios, previousResult) {\n    var result = [];\n    var n = 0;\n    for (var q = 0; q < items.length; q++) {\n      var k = items[q];\n      for (var j = 1; j < height; j++) {\n        for (var i = 1; i < width; i++) {\n          result.push(beginSection(style, i, j, k, min, max, distRatios[q], previousResult && previousResult[n] ? previousResult[n] : []));\n          n++;\n        }\n      }\n    }\n    return result;\n  }\n  function createRange(a, b) {\n    var range = [];\n    for (var q = a; q < b; q++) {\n      range.push(q);\n    }\n    return range;\n  }\n  function insertGridPoints() {\n    for (var i = 0; i < width; i++) {\n      for (var j = 0; j < height; j++) {\n        for (var k = 0; k < depth; k++) {\n          var index = getIndex(i, j, k);\n          addVertex(data._x[index], data._y[index], data._z[index], data._value[index]);\n        }\n      }\n    }\n  }\n  function drawAll() {\n    emptyVertices();\n\n    // insert grid points\n    insertGridPoints();\n    var activeStyle = null;\n\n    // draw spaceframes\n    if (showSpaceframe && spaceframeFill) {\n      setFill(spaceframeFill);\n      drawSpaceframe(activeStyle, vMin, vMax);\n    }\n\n    // draw iso-surfaces\n    if (showSurface && surfaceFill) {\n      setFill(surfaceFill);\n      var surfacePattern = data.surface.pattern;\n      var surfaceCount = data.surface.count;\n      for (var q = 0; q < surfaceCount; q++) {\n        var ratio = surfaceCount === 1 ? 0.5 : q / (surfaceCount - 1);\n        var level = (1 - ratio) * vMin + ratio * vMax;\n        var d1 = Math.abs(level - minValues);\n        var d2 = Math.abs(level - maxValues);\n        var ranges = d1 > d2 ? [minValues, level] : [level, maxValues];\n        drawSurface(surfacePattern, ranges[0], ranges[1]);\n      }\n    }\n    var setupMinMax = [[Math.min(vMin, maxValues), Math.max(vMin, maxValues)], [Math.min(minValues, vMax), Math.max(minValues, vMax)]];\n    ['x', 'y', 'z'].forEach(function (e) {\n      var preRes = [];\n      for (var s = 0; s < setupMinMax.length; s++) {\n        var count = 0;\n        var activeMin = setupMinMax[s][0];\n        var activeMax = setupMinMax[s][1];\n\n        // draw slices\n        var slice = data.slices[e];\n        if (slice.show && slice.fill) {\n          setFill(slice.fill);\n          var exactIndices = [];\n          var ceilIndices = [];\n          var distRatios = [];\n          if (slice.locations.length) {\n            for (var q = 0; q < slice.locations.length; q++) {\n              var near = findNearestOnAxis(slice.locations[q], e === 'x' ? Xs : e === 'y' ? Ys : Zs);\n              if (near.distRatio === 0) {\n                exactIndices.push(near.id);\n              } else if (near.id > 0) {\n                ceilIndices.push(near.id);\n                if (e === 'x') {\n                  distRatios.push([near.distRatio, 0, 0]);\n                } else if (e === 'y') {\n                  distRatios.push([0, near.distRatio, 0]);\n                } else {\n                  distRatios.push([0, 0, near.distRatio]);\n                }\n              }\n            }\n          } else {\n            if (e === 'x') {\n              exactIndices = createRange(1, width - 1);\n            } else if (e === 'y') {\n              exactIndices = createRange(1, height - 1);\n            } else {\n              exactIndices = createRange(1, depth - 1);\n            }\n          }\n          if (ceilIndices.length > 0) {\n            if (e === 'x') {\n              preRes[count] = drawSectionX(activeStyle, ceilIndices, activeMin, activeMax, distRatios, preRes[count]);\n            } else if (e === 'y') {\n              preRes[count] = drawSectionY(activeStyle, ceilIndices, activeMin, activeMax, distRatios, preRes[count]);\n            } else {\n              preRes[count] = drawSectionZ(activeStyle, ceilIndices, activeMin, activeMax, distRatios, preRes[count]);\n            }\n            count++;\n          }\n          if (exactIndices.length > 0) {\n            if (e === 'x') {\n              preRes[count] = draw2dX(activeStyle, exactIndices, activeMin, activeMax, preRes[count]);\n            } else if (e === 'y') {\n              preRes[count] = draw2dY(activeStyle, exactIndices, activeMin, activeMax, preRes[count]);\n            } else {\n              preRes[count] = draw2dZ(activeStyle, exactIndices, activeMin, activeMax, preRes[count]);\n            }\n            count++;\n          }\n        }\n\n        // draw caps\n        var cap = data.caps[e];\n        if (cap.show && cap.fill) {\n          setFill(cap.fill);\n          if (e === 'x') {\n            preRes[count] = draw2dX(activeStyle, [0, width - 1], activeMin, activeMax, preRes[count]);\n          } else if (e === 'y') {\n            preRes[count] = draw2dY(activeStyle, [0, height - 1], activeMin, activeMax, preRes[count]);\n          } else {\n            preRes[count] = draw2dZ(activeStyle, [0, depth - 1], activeMin, activeMax, preRes[count]);\n          }\n          count++;\n        }\n      }\n    });\n\n    // remove vertices arrays (i.e. grid points) in case no face was created.\n    if (numFaces === 0) {\n      emptyVertices();\n    }\n    data._meshX = allXs;\n    data._meshY = allYs;\n    data._meshZ = allZs;\n    data._meshIntensity = allVs;\n    data._Xs = Xs;\n    data._Ys = Ys;\n    data._Zs = Zs;\n  }\n  drawAll();\n  return data;\n}\nfunction createIsosurfaceTrace(scene, data) {\n  var gl = scene.glplot.gl;\n  var mesh = createMesh({\n    gl: gl\n  });\n  var result = new IsosurfaceTrace(scene, mesh, data.uid);\n  mesh._trace = result;\n  result.update(data);\n  scene.glplot.add(mesh);\n  return result;\n}\nmodule.exports = {\n  findNearestOnAxis: findNearestOnAxis,\n  generateIsoMeshes: generateIsoMeshes,\n  createIsosurfaceTrace: createIsosurfaceTrace\n};\n\n/***/ }),\n\n/***/ 82738:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2740015__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2740015__(71828);\nvar Registry = __nested_webpack_require_2740015__(73972);\nvar attributes = __nested_webpack_require_2740015__(16249);\nvar colorscaleDefaults = __nested_webpack_require_2740015__(1586);\nfunction supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  supplyIsoDefaults(traceIn, traceOut, defaultColor, layout, coerce);\n}\nfunction supplyIsoDefaults(traceIn, traceOut, defaultColor, layout, coerce) {\n  var isomin = coerce('isomin');\n  var isomax = coerce('isomax');\n  if (isomax !== undefined && isomax !== null && isomin !== undefined && isomin !== null && isomin > isomax) {\n    // applying default values in this case:\n    traceOut.isomin = null;\n    traceOut.isomax = null;\n  }\n  var x = coerce('x');\n  var y = coerce('y');\n  var z = coerce('z');\n  var value = coerce('value');\n  if (!x || !x.length || !y || !y.length || !z || !z.length || !value || !value.length) {\n    traceOut.visible = false;\n    return;\n  }\n  var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults');\n  handleCalendarDefaults(traceIn, traceOut, ['x', 'y', 'z'], layout);\n  coerce('valuehoverformat');\n  ['x', 'y', 'z'].forEach(function (dim) {\n    coerce(dim + 'hoverformat');\n    var capDim = 'caps.' + dim;\n    var showCap = coerce(capDim + '.show');\n    if (showCap) {\n      coerce(capDim + '.fill');\n    }\n    var sliceDim = 'slices.' + dim;\n    var showSlice = coerce(sliceDim + '.show');\n    if (showSlice) {\n      coerce(sliceDim + '.fill');\n      coerce(sliceDim + '.locations');\n    }\n  });\n  var showSpaceframe = coerce('spaceframe.show');\n  if (showSpaceframe) {\n    coerce('spaceframe.fill');\n  }\n  var showSurface = coerce('surface.show');\n  if (showSurface) {\n    coerce('surface.count');\n    coerce('surface.fill');\n    coerce('surface.pattern');\n  }\n  var showContour = coerce('contour.show');\n  if (showContour) {\n    coerce('contour.color');\n    coerce('contour.width');\n  }\n\n  // Coerce remaining properties\n  ['text', 'hovertext', 'hovertemplate', 'lighting.ambient', 'lighting.diffuse', 'lighting.specular', 'lighting.roughness', 'lighting.fresnel', 'lighting.vertexnormalsepsilon', 'lighting.facenormalsepsilon', 'lightposition.x', 'lightposition.y', 'lightposition.z', 'flatshading', 'opacity'].forEach(function (x) {\n    coerce(x);\n  });\n  colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n    prefix: '',\n    cLetter: 'c'\n  });\n\n  // disable 1D transforms (for now)\n  traceOut._length = null;\n}\nmodule.exports = {\n  supplyDefaults: supplyDefaults,\n  supplyIsoDefaults: supplyIsoDefaults\n};\n\n/***/ }),\n\n/***/ 64943:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2742761__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2742761__(16249),\n  supplyDefaults: (__nested_webpack_require_2742761__(82738).supplyDefaults),\n  calc: __nested_webpack_require_2742761__(56959),\n  colorbar: {\n    min: 'cmin',\n    max: 'cmax'\n  },\n  plot: (__nested_webpack_require_2742761__(22674).createIsosurfaceTrace),\n  moduleType: 'trace',\n  name: 'isosurface',\n  basePlotModule: __nested_webpack_require_2742761__(58547),\n  categories: ['gl3d', 'showLegend'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 2418:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2743290__) {\n\n\"use strict\";\n\n\nvar colorScaleAttrs = __nested_webpack_require_2743290__(50693);\nvar axisHoverFormat = (__nested_webpack_require_2743290__(12663).axisHoverFormat);\nvar hovertemplateAttrs = (__nested_webpack_require_2743290__(5386)/* .hovertemplateAttrs */ .f);\nvar surfaceAttrs = __nested_webpack_require_2743290__(54532);\nvar baseAttrs = __nested_webpack_require_2743290__(9012);\nvar extendFlat = (__nested_webpack_require_2743290__(1426).extendFlat);\nmodule.exports = extendFlat({\n  x: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  y: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  z: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  i: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  j: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  k: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  text: {\n    valType: 'string',\n    dflt: '',\n    arrayOk: true,\n    editType: 'calc'\n  },\n  hovertext: {\n    valType: 'string',\n    dflt: '',\n    arrayOk: true,\n    editType: 'calc'\n  },\n  hovertemplate: hovertemplateAttrs({\n    editType: 'calc'\n  }),\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  zhoverformat: axisHoverFormat('z'),\n  delaunayaxis: {\n    valType: 'enumerated',\n    values: ['x', 'y', 'z'],\n    dflt: 'z',\n    editType: 'calc'\n  },\n  alphahull: {\n    valType: 'number',\n    dflt: -1,\n    editType: 'calc'\n  },\n  intensity: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  intensitymode: {\n    valType: 'enumerated',\n    values: ['vertex', 'cell'],\n    dflt: 'vertex',\n    editType: 'calc'\n  },\n  // Color field\n  color: {\n    valType: 'color',\n    editType: 'calc'\n  },\n  vertexcolor: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  facecolor: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  transforms: undefined\n}, colorScaleAttrs('', {\n  colorAttr: '`intensity`',\n  showScaleDflt: true,\n  editTypeOverride: 'calc'\n}), {\n  opacity: surfaceAttrs.opacity,\n  // Flat shaded mode\n  flatshading: {\n    valType: 'boolean',\n    dflt: false,\n    editType: 'calc'\n  },\n  contour: {\n    show: extendFlat({}, surfaceAttrs.contours.x.show, {}),\n    color: surfaceAttrs.contours.x.color,\n    width: surfaceAttrs.contours.x.width,\n    editType: 'calc'\n  },\n  lightposition: {\n    x: extendFlat({}, surfaceAttrs.lightposition.x, {\n      dflt: 1e5\n    }),\n    y: extendFlat({}, surfaceAttrs.lightposition.y, {\n      dflt: 1e5\n    }),\n    z: extendFlat({}, surfaceAttrs.lightposition.z, {\n      dflt: 0\n    }),\n    editType: 'calc'\n  },\n  lighting: extendFlat({\n    vertexnormalsepsilon: {\n      valType: 'number',\n      min: 0.00,\n      max: 1,\n      dflt: 1e-12,\n      // otherwise finely tessellated things eg. the brain will have no specular light reflection\n      editType: 'calc'\n    },\n    facenormalsepsilon: {\n      valType: 'number',\n      min: 0.00,\n      max: 1,\n      dflt: 1e-6,\n      // even the brain model doesn't appear to need finer than this\n      editType: 'calc'\n    },\n    editType: 'calc'\n  }, surfaceAttrs.lighting),\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {\n    editType: 'calc'\n  }),\n  showlegend: extendFlat({}, baseAttrs.showlegend, {\n    dflt: false\n  })\n});\n\n/***/ }),\n\n/***/ 82932:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2746547__) {\n\n\"use strict\";\n\n\nvar colorscaleCalc = __nested_webpack_require_2746547__(78803);\nmodule.exports = function calc(gd, trace) {\n  if (trace.intensity) {\n    colorscaleCalc(gd, trace, {\n      vals: trace.intensity,\n      containerStr: '',\n      cLetter: 'c'\n    });\n  }\n};\n\n/***/ }),\n\n/***/ 91134:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2746899__) {\n\n\"use strict\";\n\n\nvar createMesh = (__nested_webpack_require_2746899__(9330).gl_mesh3d);\nvar triangulate = (__nested_webpack_require_2746899__(9330).delaunay_triangulate);\nvar alphaShape = (__nested_webpack_require_2746899__(9330).alpha_shape);\nvar convexHull = (__nested_webpack_require_2746899__(9330).convex_hull);\nvar parseColorScale = (__nested_webpack_require_2746899__(81697).parseColorScale);\nvar str2RgbaArray = __nested_webpack_require_2746899__(78614);\nvar extractOpts = (__nested_webpack_require_2746899__(21081).extractOpts);\nvar zip3 = __nested_webpack_require_2746899__(90060);\nfunction Mesh3DTrace(scene, mesh, uid) {\n  this.scene = scene;\n  this.uid = uid;\n  this.mesh = mesh;\n  this.name = '';\n  this.color = '#fff';\n  this.data = null;\n  this.showContour = false;\n}\nvar proto = Mesh3DTrace.prototype;\nproto.handlePick = function (selection) {\n  if (selection.object === this.mesh) {\n    var selectIndex = selection.index = selection.data.index;\n    if (selection.data._cellCenter) {\n      selection.traceCoordinate = selection.data.dataCoordinate;\n    } else {\n      selection.traceCoordinate = [this.data.x[selectIndex], this.data.y[selectIndex], this.data.z[selectIndex]];\n    }\n    var text = this.data.hovertext || this.data.text;\n    if (Array.isArray(text) && text[selectIndex] !== undefined) {\n      selection.textLabel = text[selectIndex];\n    } else if (text) {\n      selection.textLabel = text;\n    }\n    return true;\n  }\n};\nfunction parseColorArray(colors) {\n  var b = [];\n  var len = colors.length;\n  for (var i = 0; i < len; i++) {\n    b[i] = str2RgbaArray(colors[i]);\n  }\n  return b;\n}\n\n// Unpack position data\nfunction toDataCoords(axis, coord, scale, calendar) {\n  var b = [];\n  var len = coord.length;\n  for (var i = 0; i < len; i++) {\n    b[i] = axis.d2l(coord[i], 0, calendar) * scale;\n  }\n  return b;\n}\n\n// Round indices if passed as floats\nfunction toRoundIndex(a) {\n  var b = [];\n  var len = a.length;\n  for (var i = 0; i < len; i++) {\n    b[i] = Math.round(a[i]);\n  }\n  return b;\n}\nfunction delaunayCells(delaunayaxis, positions) {\n  var d = ['x', 'y', 'z'].indexOf(delaunayaxis);\n  var b = [];\n  var len = positions.length;\n  for (var i = 0; i < len; i++) {\n    b[i] = [positions[i][(d + 1) % 3], positions[i][(d + 2) % 3]];\n  }\n  return triangulate(b);\n}\n\n// Validate indices\nfunction hasValidIndices(list, numVertices) {\n  var len = list.length;\n  for (var i = 0; i < len; i++) {\n    if (list[i] <= -0.5 || list[i] >= numVertices - 0.5) {\n      // Note: the indices would be rounded -0.49 is valid.\n      return false;\n    }\n  }\n  return true;\n}\nproto.update = function (data) {\n  var scene = this.scene;\n  var layout = scene.fullSceneLayout;\n  this.data = data;\n  var numVertices = data.x.length;\n  var positions = zip3(toDataCoords(layout.xaxis, data.x, scene.dataScale[0], data.xcalendar), toDataCoords(layout.yaxis, data.y, scene.dataScale[1], data.ycalendar), toDataCoords(layout.zaxis, data.z, scene.dataScale[2], data.zcalendar));\n  var cells;\n  if (data.i && data.j && data.k) {\n    if (data.i.length !== data.j.length || data.j.length !== data.k.length || !hasValidIndices(data.i, numVertices) || !hasValidIndices(data.j, numVertices) || !hasValidIndices(data.k, numVertices)) {\n      return;\n    }\n    cells = zip3(toRoundIndex(data.i), toRoundIndex(data.j), toRoundIndex(data.k));\n  } else if (data.alphahull === 0) {\n    cells = convexHull(positions);\n  } else if (data.alphahull > 0) {\n    cells = alphaShape(data.alphahull, positions);\n  } else {\n    cells = delaunayCells(data.delaunayaxis, positions);\n  }\n  var config = {\n    positions: positions,\n    cells: cells,\n    lightPosition: [data.lightposition.x, data.lightposition.y, data.lightposition.z],\n    ambient: data.lighting.ambient,\n    diffuse: data.lighting.diffuse,\n    specular: data.lighting.specular,\n    roughness: data.lighting.roughness,\n    fresnel: data.lighting.fresnel,\n    vertexNormalsEpsilon: data.lighting.vertexnormalsepsilon,\n    faceNormalsEpsilon: data.lighting.facenormalsepsilon,\n    opacity: data.opacity,\n    contourEnable: data.contour.show,\n    contourColor: str2RgbaArray(data.contour.color).slice(0, 3),\n    contourWidth: data.contour.width,\n    useFacetNormals: data.flatshading\n  };\n  if (data.intensity) {\n    var cOpts = extractOpts(data);\n    this.color = '#fff';\n    var mode = data.intensitymode;\n    config[mode + 'Intensity'] = data.intensity;\n    config[mode + 'IntensityBounds'] = [cOpts.min, cOpts.max];\n    config.colormap = parseColorScale(data);\n  } else if (data.vertexcolor) {\n    this.color = data.vertexcolor[0];\n    config.vertexColors = parseColorArray(data.vertexcolor);\n  } else if (data.facecolor) {\n    this.color = data.facecolor[0];\n    config.cellColors = parseColorArray(data.facecolor);\n  } else {\n    this.color = data.color;\n    config.meshColor = str2RgbaArray(data.color);\n  }\n\n  // Update mesh\n  this.mesh.update(config);\n};\nproto.dispose = function () {\n  this.scene.glplot.remove(this.mesh);\n  this.mesh.dispose();\n};\nfunction createMesh3DTrace(scene, data) {\n  var gl = scene.glplot.gl;\n  var mesh = createMesh({\n    gl: gl\n  });\n  var result = new Mesh3DTrace(scene, mesh, data.uid);\n  mesh._trace = result;\n  result.update(data);\n  scene.glplot.add(mesh);\n  return result;\n}\nmodule.exports = createMesh3DTrace;\n\n/***/ }),\n\n/***/ 58669:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2752174__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_2752174__(73972);\nvar Lib = __nested_webpack_require_2752174__(71828);\nvar colorscaleDefaults = __nested_webpack_require_2752174__(1586);\nvar attributes = __nested_webpack_require_2752174__(2418);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n\n  // read in face/vertex properties\n  function readComponents(array) {\n    var ret = array.map(function (attr) {\n      var result = coerce(attr);\n      if (result && Lib.isArrayOrTypedArray(result)) return result;\n      return null;\n    });\n    return ret.every(function (x) {\n      return x && x.length === ret[0].length;\n    }) && ret;\n  }\n  var coords = readComponents(['x', 'y', 'z']);\n  if (!coords) {\n    traceOut.visible = false;\n    return;\n  }\n  readComponents(['i', 'j', 'k']);\n  // three indices should be all provided or not\n  if (traceOut.i && (!traceOut.j || !traceOut.k) || traceOut.j && (!traceOut.k || !traceOut.i) || traceOut.k && (!traceOut.i || !traceOut.j)) {\n    traceOut.visible = false;\n    return;\n  }\n  var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults');\n  handleCalendarDefaults(traceIn, traceOut, ['x', 'y', 'z'], layout);\n\n  // Coerce remaining properties\n  ['lighting.ambient', 'lighting.diffuse', 'lighting.specular', 'lighting.roughness', 'lighting.fresnel', 'lighting.vertexnormalsepsilon', 'lighting.facenormalsepsilon', 'lightposition.x', 'lightposition.y', 'lightposition.z', 'flatshading', 'alphahull', 'delaunayaxis', 'opacity'].forEach(function (x) {\n    coerce(x);\n  });\n  var showContour = coerce('contour.show');\n  if (showContour) {\n    coerce('contour.color');\n    coerce('contour.width');\n  }\n  if ('intensity' in traceIn) {\n    coerce('intensity');\n    coerce('intensitymode');\n    colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n      prefix: '',\n      cLetter: 'c'\n    });\n  } else {\n    traceOut.showscale = false;\n    if ('facecolor' in traceIn) coerce('facecolor');else if ('vertexcolor' in traceIn) coerce('vertexcolor');else coerce('color', defaultColor);\n  }\n  coerce('text');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  coerce('zhoverformat');\n\n  // disable 1D transforms\n  // x/y/z should match lengths, and i/j/k should match as well, but\n  // the two sets have different lengths so transforms wouldn't work.\n  traceOut._length = null;\n};\n\n/***/ }),\n\n/***/ 21164:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2754759__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2754759__(2418),\n  supplyDefaults: __nested_webpack_require_2754759__(58669),\n  calc: __nested_webpack_require_2754759__(82932),\n  colorbar: {\n    min: 'cmin',\n    max: 'cmax'\n  },\n  plot: __nested_webpack_require_2754759__(91134),\n  moduleType: 'trace',\n  name: 'mesh3d',\n  basePlotModule: __nested_webpack_require_2754759__(58547),\n  categories: ['gl3d', 'showLegend'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 2522:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2755242__) {\n\n\"use strict\";\n\n\nvar extendFlat = (__nested_webpack_require_2755242__(71828).extendFlat);\nvar scatterAttrs = __nested_webpack_require_2755242__(82196);\nvar axisHoverFormat = (__nested_webpack_require_2755242__(12663).axisHoverFormat);\nvar dash = (__nested_webpack_require_2755242__(79952)/* .dash */ .P);\nvar fxAttrs = __nested_webpack_require_2755242__(77914);\nvar delta = __nested_webpack_require_2755242__(22372);\nvar INCREASING_COLOR = delta.INCREASING.COLOR;\nvar DECREASING_COLOR = delta.DECREASING.COLOR;\nvar lineAttrs = scatterAttrs.line;\nfunction directionAttrs(lineColorDefault) {\n  return {\n    line: {\n      color: extendFlat({}, lineAttrs.color, {\n        dflt: lineColorDefault\n      }),\n      width: lineAttrs.width,\n      dash: dash,\n      editType: 'style'\n    },\n    editType: 'style'\n  };\n}\nmodule.exports = {\n  xperiod: scatterAttrs.xperiod,\n  xperiod0: scatterAttrs.xperiod0,\n  xperiodalignment: scatterAttrs.xperiodalignment,\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  x: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  open: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  high: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  low: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  close: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  line: {\n    width: extendFlat({}, lineAttrs.width, {}),\n    dash: extendFlat({}, dash, {}),\n    editType: 'style'\n  },\n  increasing: directionAttrs(INCREASING_COLOR),\n  decreasing: directionAttrs(DECREASING_COLOR),\n  text: {\n    valType: 'string',\n    dflt: '',\n    arrayOk: true,\n    editType: 'calc'\n  },\n  hovertext: {\n    valType: 'string',\n    dflt: '',\n    arrayOk: true,\n    editType: 'calc'\n  },\n  tickwidth: {\n    valType: 'number',\n    min: 0,\n    max: 0.5,\n    dflt: 0.3,\n    editType: 'calc'\n  },\n  hoverlabel: extendFlat({}, fxAttrs.hoverlabel, {\n    split: {\n      valType: 'boolean',\n      dflt: false,\n      editType: 'style'\n    }\n  })\n};\n\n/***/ }),\n\n/***/ 3485:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2757257__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2757257__(71828);\nvar _ = Lib._;\nvar Axes = __nested_webpack_require_2757257__(89298);\nvar alignPeriod = __nested_webpack_require_2757257__(42973);\nvar BADNUM = (__nested_webpack_require_2757257__(50606).BADNUM);\nfunction calc(gd, trace) {\n  var xa = Axes.getFromId(gd, trace.xaxis);\n  var ya = Axes.getFromId(gd, trace.yaxis);\n  var tickLen = convertTickWidth(gd, xa, trace);\n  var minDiff = trace._minDiff;\n  trace._minDiff = null;\n  var origX = trace._origX;\n  trace._origX = null;\n  var x = trace._xcalc;\n  trace._xcalc = null;\n  var cd = calcCommon(gd, trace, origX, x, ya, ptFunc);\n  trace._extremes[xa._id] = Axes.findExtremes(xa, x, {\n    vpad: minDiff / 2\n  });\n  if (cd.length) {\n    Lib.extendFlat(cd[0].t, {\n      wHover: minDiff / 2,\n      tickLen: tickLen\n    });\n    return cd;\n  } else {\n    return [{\n      t: {\n        empty: true\n      }\n    }];\n  }\n}\nfunction ptFunc(o, h, l, c) {\n  return {\n    o: o,\n    h: h,\n    l: l,\n    c: c\n  };\n}\n\n// shared between OHLC and candlestick\n// ptFunc makes a calcdata point specific to each trace type, from oi, hi, li, ci\nfunction calcCommon(gd, trace, origX, x, ya, ptFunc) {\n  var o = ya.makeCalcdata(trace, 'open');\n  var h = ya.makeCalcdata(trace, 'high');\n  var l = ya.makeCalcdata(trace, 'low');\n  var c = ya.makeCalcdata(trace, 'close');\n  var hasTextArray = Array.isArray(trace.text);\n  var hasHovertextArray = Array.isArray(trace.hovertext);\n\n  // we're optimists - before we have any changing data, assume increasing\n  var increasing = true;\n  var cPrev = null;\n  var hasPeriod = !!trace.xperiodalignment;\n  var cd = [];\n  for (var i = 0; i < x.length; i++) {\n    var xi = x[i];\n    var oi = o[i];\n    var hi = h[i];\n    var li = l[i];\n    var ci = c[i];\n    if (xi !== BADNUM && oi !== BADNUM && hi !== BADNUM && li !== BADNUM && ci !== BADNUM) {\n      if (ci === oi) {\n        // if open == close, look for a change from the previous close\n        if (cPrev !== null && ci !== cPrev) increasing = ci > cPrev;\n        // else (c === cPrev or cPrev is null) no change\n      } else increasing = ci > oi;\n      cPrev = ci;\n      var pt = ptFunc(oi, hi, li, ci);\n      pt.pos = xi;\n      pt.yc = (oi + ci) / 2;\n      pt.i = i;\n      pt.dir = increasing ? 'increasing' : 'decreasing';\n\n      // For categoryorder, store low and high\n      pt.x = pt.pos;\n      pt.y = [li, hi];\n      if (hasPeriod) pt.orig_p = origX[i]; // used by hover\n      if (hasTextArray) pt.tx = trace.text[i];\n      if (hasHovertextArray) pt.htx = trace.hovertext[i];\n      cd.push(pt);\n    } else {\n      cd.push({\n        pos: xi,\n        empty: true\n      });\n    }\n  }\n  trace._extremes[ya._id] = Axes.findExtremes(ya, Lib.concat(l, h), {\n    padded: true\n  });\n  if (cd.length) {\n    cd[0].t = {\n      labels: {\n        open: _(gd, 'open:') + ' ',\n        high: _(gd, 'high:') + ' ',\n        low: _(gd, 'low:') + ' ',\n        close: _(gd, 'close:') + ' '\n      }\n    };\n  }\n  return cd;\n}\n\n/*\n * find min x-coordinates difference of all traces\n * attached to this x-axis and stash the result in _minDiff\n * in all traces; when a trace uses this in its\n * calc step it deletes _minDiff, so that next calc this is\n * done again in case the data changed.\n * also since we need it here, stash _xcalc (and _origX) on the trace\n */\nfunction convertTickWidth(gd, xa, trace) {\n  var minDiff = trace._minDiff;\n  if (!minDiff) {\n    var fullData = gd._fullData;\n    var ohlcTracesOnThisXaxis = [];\n    minDiff = Infinity;\n    var i;\n    for (i = 0; i < fullData.length; i++) {\n      var tracei = fullData[i];\n      if (tracei.type === 'ohlc' && tracei.visible === true && tracei.xaxis === xa._id) {\n        ohlcTracesOnThisXaxis.push(tracei);\n        var origX = xa.makeCalcdata(tracei, 'x');\n        tracei._origX = origX;\n        var xcalc = alignPeriod(trace, xa, 'x', origX).vals;\n        tracei._xcalc = xcalc;\n        var _minDiff = Lib.distinctVals(xcalc).minDiff;\n        if (_minDiff && isFinite(_minDiff)) {\n          minDiff = Math.min(minDiff, _minDiff);\n        }\n      }\n    }\n\n    // if minDiff is still Infinity here, set it to 1\n    if (minDiff === Infinity) minDiff = 1;\n    for (i = 0; i < ohlcTracesOnThisXaxis.length; i++) {\n      ohlcTracesOnThisXaxis[i]._minDiff = minDiff;\n    }\n  }\n  return minDiff * trace.tickwidth;\n}\nmodule.exports = {\n  calc: calc,\n  calcCommon: calcCommon\n};\n\n/***/ }),\n\n/***/ 16169:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2761686__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2761686__(71828);\nvar handleOHLC = __nested_webpack_require_2761686__(14555);\nvar handlePeriodDefaults = __nested_webpack_require_2761686__(73927);\nvar attributes = __nested_webpack_require_2761686__(2522);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var len = handleOHLC(traceIn, traceOut, coerce, layout);\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  handlePeriodDefaults(traceIn, traceOut, layout, coerce, {\n    x: true\n  });\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  coerce('line.width');\n  coerce('line.dash');\n  handleDirection(traceIn, traceOut, coerce, 'increasing');\n  handleDirection(traceIn, traceOut, coerce, 'decreasing');\n  coerce('text');\n  coerce('hovertext');\n  coerce('tickwidth');\n  layout._requestRangeslider[traceOut.xaxis] = true;\n};\nfunction handleDirection(traceIn, traceOut, coerce, direction) {\n  coerce(direction + '.line.color');\n  coerce(direction + '.line.width', traceOut.line.width);\n  coerce(direction + '.line.dash', traceOut.line.dash);\n}\n\n/***/ }),\n\n/***/ 66449:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2762923__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_2762923__(89298);\nvar Lib = __nested_webpack_require_2762923__(71828);\nvar Fx = __nested_webpack_require_2762923__(30211);\nvar Color = __nested_webpack_require_2762923__(7901);\nvar fillText = (__nested_webpack_require_2762923__(71828).fillText);\nvar delta = __nested_webpack_require_2762923__(22372);\nvar DIRSYMBOL = {\n  increasing: delta.INCREASING.SYMBOL,\n  decreasing: delta.DECREASING.SYMBOL\n};\nfunction hoverPoints(pointData, xval, yval, hovermode) {\n  var cd = pointData.cd;\n  var trace = cd[0].trace;\n  if (trace.hoverlabel.split) {\n    return hoverSplit(pointData, xval, yval, hovermode);\n  }\n  return hoverOnPoints(pointData, xval, yval, hovermode);\n}\nfunction _getClosestPoint(pointData, xval, yval, hovermode) {\n  var cd = pointData.cd;\n  var xa = pointData.xa;\n  var trace = cd[0].trace;\n  var t = cd[0].t;\n  var type = trace.type;\n  var minAttr = type === 'ohlc' ? 'l' : 'min';\n  var maxAttr = type === 'ohlc' ? 'h' : 'max';\n  var hoverPseudoDistance, spikePseudoDistance;\n\n  // potentially shift xval for grouped candlesticks\n  var centerShift = t.bPos || 0;\n  var shiftPos = function (di) {\n    return di.pos + centerShift - xval;\n  };\n\n  // ohlc and candlestick call displayHalfWidth different things...\n  var displayHalfWidth = t.bdPos || t.tickLen;\n  var hoverHalfWidth = t.wHover;\n\n  // if two figures are overlaying, let the narrowest one win\n  var pseudoDistance = Math.min(1, displayHalfWidth / Math.abs(xa.r2c(xa.range[1]) - xa.r2c(xa.range[0])));\n  hoverPseudoDistance = pointData.maxHoverDistance - pseudoDistance;\n  spikePseudoDistance = pointData.maxSpikeDistance - pseudoDistance;\n  function dx(di) {\n    var pos = shiftPos(di);\n    return Fx.inbox(pos - hoverHalfWidth, pos + hoverHalfWidth, hoverPseudoDistance);\n  }\n  function dy(di) {\n    var min = di[minAttr];\n    var max = di[maxAttr];\n    return min === max || Fx.inbox(min - yval, max - yval, hoverPseudoDistance);\n  }\n  function dxy(di) {\n    return (dx(di) + dy(di)) / 2;\n  }\n  var distfn = Fx.getDistanceFunction(hovermode, dx, dy, dxy);\n  Fx.getClosest(cd, distfn, pointData);\n  if (pointData.index === false) return null;\n  var di = cd[pointData.index];\n  if (di.empty) return null;\n  var dir = di.dir;\n  var container = trace[dir];\n  var lc = container.line.color;\n  if (Color.opacity(lc) && container.line.width) pointData.color = lc;else pointData.color = container.fillcolor;\n  pointData.x0 = xa.c2p(di.pos + centerShift - displayHalfWidth, true);\n  pointData.x1 = xa.c2p(di.pos + centerShift + displayHalfWidth, true);\n  pointData.xLabelVal = di.orig_p !== undefined ? di.orig_p : di.pos;\n  pointData.spikeDistance = dxy(di) * spikePseudoDistance / hoverPseudoDistance;\n  pointData.xSpike = xa.c2p(di.pos, true);\n  return pointData;\n}\nfunction hoverSplit(pointData, xval, yval, hovermode) {\n  var cd = pointData.cd;\n  var ya = pointData.ya;\n  var trace = cd[0].trace;\n  var t = cd[0].t;\n  var closeBoxData = [];\n  var closestPoint = _getClosestPoint(pointData, xval, yval, hovermode);\n  // skip the rest (for this trace) if we didn't find a close point\n  if (!closestPoint) return [];\n  var cdIndex = closestPoint.index;\n  var di = cd[cdIndex];\n  var hoverinfo = di.hi || trace.hoverinfo;\n  var hoverParts = hoverinfo.split('+');\n  var isAll = hoverinfo === 'all';\n  var hasY = isAll || hoverParts.indexOf('y') !== -1;\n\n  // similar to hoverOnPoints, we return nothing\n  // if all or y is not present.\n  if (!hasY) return [];\n  var attrs = ['high', 'open', 'close', 'low'];\n\n  // several attributes can have the same y-coordinate. We will\n  // bunch them together in a single text block. For this, we keep\n  // a dictionary mapping y-coord -> point data.\n  var usedVals = {};\n  for (var i = 0; i < attrs.length; i++) {\n    var attr = attrs[i];\n    var val = trace[attr][closestPoint.index];\n    var valPx = ya.c2p(val, true);\n    var pointData2;\n    if (val in usedVals) {\n      pointData2 = usedVals[val];\n      pointData2.yLabel += '<br>' + t.labels[attr] + Axes.hoverLabelText(ya, val, trace.yhoverformat);\n    } else {\n      // copy out to a new object for each new y-value to label\n      pointData2 = Lib.extendFlat({}, closestPoint);\n      pointData2.y0 = pointData2.y1 = valPx;\n      pointData2.yLabelVal = val;\n      pointData2.yLabel = t.labels[attr] + Axes.hoverLabelText(ya, val, trace.yhoverformat);\n      pointData2.name = '';\n      closeBoxData.push(pointData2);\n      usedVals[val] = pointData2;\n    }\n  }\n  return closeBoxData;\n}\nfunction hoverOnPoints(pointData, xval, yval, hovermode) {\n  var cd = pointData.cd;\n  var ya = pointData.ya;\n  var trace = cd[0].trace;\n  var t = cd[0].t;\n  var closestPoint = _getClosestPoint(pointData, xval, yval, hovermode);\n  // skip the rest (for this trace) if we didn't find a close point\n  if (!closestPoint) return [];\n\n  // we don't make a calcdata point if we're missing any piece (x/o/h/l/c)\n  // so we need to fix the index here to point to the data arrays\n  var cdIndex = closestPoint.index;\n  var di = cd[cdIndex];\n  var i = closestPoint.index = di.i;\n  var dir = di.dir;\n  function getLabelLine(attr) {\n    return t.labels[attr] + Axes.hoverLabelText(ya, trace[attr][i], trace.yhoverformat);\n  }\n  var hoverinfo = di.hi || trace.hoverinfo;\n  var hoverParts = hoverinfo.split('+');\n  var isAll = hoverinfo === 'all';\n  var hasY = isAll || hoverParts.indexOf('y') !== -1;\n  var hasText = isAll || hoverParts.indexOf('text') !== -1;\n  var textParts = hasY ? [getLabelLine('open'), getLabelLine('high'), getLabelLine('low'), getLabelLine('close') + '  ' + DIRSYMBOL[dir]] : [];\n  if (hasText) fillText(di, trace, textParts);\n\n  // don't make .yLabelVal or .text, since we're managing hoverinfo\n  // put it all in .extraText\n  closestPoint.extraText = textParts.join('<br>');\n\n  // this puts the label *and the spike* at the midpoint of the box, ie\n  // halfway between open and close, not between high and low.\n  closestPoint.y0 = closestPoint.y1 = ya.c2p(di.yc, true);\n  return [closestPoint];\n}\nmodule.exports = {\n  hoverPoints: hoverPoints,\n  hoverSplit: hoverSplit,\n  hoverOnPoints: hoverOnPoints\n};\n\n/***/ }),\n\n/***/ 54186:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2769043__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'trace',\n  name: 'ohlc',\n  basePlotModule: __nested_webpack_require_2769043__(93612),\n  categories: ['cartesian', 'svg', 'showLegend'],\n  meta: {},\n  attributes: __nested_webpack_require_2769043__(2522),\n  supplyDefaults: __nested_webpack_require_2769043__(16169),\n  calc: (__nested_webpack_require_2769043__(3485).calc),\n  plot: __nested_webpack_require_2769043__(72314),\n  style: __nested_webpack_require_2769043__(53101),\n  hoverPoints: (__nested_webpack_require_2769043__(66449).hoverPoints),\n  selectPoints: __nested_webpack_require_2769043__(67324)\n};\n\n/***/ }),\n\n/***/ 14555:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2769629__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_2769629__(73972);\nvar Lib = __nested_webpack_require_2769629__(71828);\nmodule.exports = function handleOHLC(traceIn, traceOut, coerce, layout) {\n  var x = coerce('x');\n  var open = coerce('open');\n  var high = coerce('high');\n  var low = coerce('low');\n  var close = coerce('close');\n  coerce('hoverlabel.split');\n  var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults');\n  handleCalendarDefaults(traceIn, traceOut, ['x'], layout);\n  if (!(open && high && low && close)) return;\n  var len = Math.min(open.length, high.length, low.length, close.length);\n  if (x) len = Math.min(len, Lib.minRowLength(x));\n  traceOut._length = len;\n  return len;\n};\n\n/***/ }),\n\n/***/ 72314:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2770439__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2770439__(39898);\nvar Lib = __nested_webpack_require_2770439__(71828);\nmodule.exports = function plot(gd, plotinfo, cdOHLC, ohlcLayer) {\n  var ya = plotinfo.yaxis;\n  var xa = plotinfo.xaxis;\n  var posHasRangeBreaks = !!xa.rangebreaks;\n  Lib.makeTraceGroups(ohlcLayer, cdOHLC, 'trace ohlc').each(function (cd) {\n    var plotGroup = d3.select(this);\n    var cd0 = cd[0];\n    var t = cd0.t;\n    var trace = cd0.trace;\n    if (trace.visible !== true || t.empty) {\n      plotGroup.remove();\n      return;\n    }\n    var tickLen = t.tickLen;\n    var paths = plotGroup.selectAll('path').data(Lib.identity);\n    paths.enter().append('path');\n    paths.exit().remove();\n    paths.attr('d', function (d) {\n      if (d.empty) return 'M0,0Z';\n      var xo = xa.c2p(d.pos - tickLen, true);\n      var xc = xa.c2p(d.pos + tickLen, true);\n      var x = posHasRangeBreaks ? (xo + xc) / 2 : xa.c2p(d.pos, true);\n      var yo = ya.c2p(d.o, true);\n      var yh = ya.c2p(d.h, true);\n      var yl = ya.c2p(d.l, true);\n      var yc = ya.c2p(d.c, true);\n      return 'M' + xo + ',' + yo + 'H' + x + 'M' + x + ',' + yh + 'V' + yl + 'M' + xc + ',' + yc + 'H' + x;\n    });\n  });\n};\n\n/***/ }),\n\n/***/ 67324:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function selectPoints(searchInfo, selectionTester) {\n  var cd = searchInfo.cd;\n  var xa = searchInfo.xaxis;\n  var ya = searchInfo.yaxis;\n  var selection = [];\n  var i;\n  // for (potentially grouped) candlesticks\n  var posOffset = cd[0].t.bPos || 0;\n  if (selectionTester === false) {\n    // clear selection\n    for (i = 0; i < cd.length; i++) {\n      cd[i].selected = 0;\n    }\n  } else {\n    for (i = 0; i < cd.length; i++) {\n      var di = cd[i];\n      if (selectionTester.contains([xa.c2p(di.pos + posOffset), ya.c2p(di.yc)], null, di.i, searchInfo)) {\n        selection.push({\n          pointNumber: di.i,\n          x: xa.c2d(di.pos),\n          y: ya.c2d(di.yc)\n        });\n        di.selected = 1;\n      } else {\n        di.selected = 0;\n      }\n    }\n  }\n  return selection;\n};\n\n/***/ }),\n\n/***/ 53101:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2772580__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2772580__(39898);\nvar Drawing = __nested_webpack_require_2772580__(91424);\nvar Color = __nested_webpack_require_2772580__(7901);\nmodule.exports = function style(gd, cd, sel) {\n  var s = sel ? sel : d3.select(gd).selectAll('g.ohlclayer').selectAll('g.trace');\n  s.style('opacity', function (d) {\n    return d[0].trace.opacity;\n  });\n  s.each(function (d) {\n    var trace = d[0].trace;\n    d3.select(this).selectAll('path').each(function (di) {\n      if (di.empty) return;\n      var dirLine = trace[di.dir].line;\n      d3.select(this).style('fill', 'none').call(Color.stroke, dirLine.color).call(Drawing.dashLine, dirLine.dash, dirLine.width)\n      // TODO: custom selection style for OHLC\n      .style('opacity', trace.selectedpoints && !di.selected ? 0.3 : 1);\n    });\n  });\n};\n\n/***/ }),\n\n/***/ 99506:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2773462__) {\n\n\"use strict\";\n\n\nvar extendFlat = (__nested_webpack_require_2773462__(1426).extendFlat);\nvar baseAttrs = __nested_webpack_require_2773462__(9012);\nvar fontAttrs = __nested_webpack_require_2773462__(41940);\nvar colorScaleAttrs = __nested_webpack_require_2773462__(50693);\nvar hovertemplateAttrs = (__nested_webpack_require_2773462__(5386)/* .hovertemplateAttrs */ .f);\nvar domainAttrs = (__nested_webpack_require_2773462__(27670)/* .attributes */ .Y);\nvar line = extendFlat({\n  editType: 'calc'\n}, colorScaleAttrs('line', {\n  editTypeOverride: 'calc'\n}), {\n  shape: {\n    valType: 'enumerated',\n    values: ['linear', 'hspline'],\n    dflt: 'linear',\n    editType: 'plot'\n  },\n  hovertemplate: hovertemplateAttrs({\n    editType: 'plot',\n    arrayOk: false\n  }, {\n    keys: ['count', 'probability']\n  })\n});\nmodule.exports = {\n  domain: domainAttrs({\n    name: 'parcats',\n    trace: true,\n    editType: 'calc'\n  }),\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {\n    flags: ['count', 'probability'],\n    editType: 'plot',\n    arrayOk: false\n  }),\n  hoveron: {\n    valType: 'enumerated',\n    values: ['category', 'color', 'dimension'],\n    dflt: 'category',\n    editType: 'plot'\n  },\n  hovertemplate: hovertemplateAttrs({\n    editType: 'plot',\n    arrayOk: false\n  }, {\n    keys: ['count', 'probability', 'category', 'categorycount', 'colorcount', 'bandcolorcount']\n  }),\n  arrangement: {\n    valType: 'enumerated',\n    values: ['perpendicular', 'freeform', 'fixed'],\n    dflt: 'perpendicular',\n    editType: 'plot'\n  },\n  bundlecolors: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'plot'\n  },\n  sortpaths: {\n    valType: 'enumerated',\n    values: ['forward', 'backward'],\n    dflt: 'forward',\n    editType: 'plot'\n  },\n  labelfont: fontAttrs({\n    editType: 'calc'\n  }),\n  tickfont: fontAttrs({\n    editType: 'calc'\n  }),\n  dimensions: {\n    _isLinkedToArray: 'dimension',\n    label: {\n      valType: 'string',\n      editType: 'calc'\n    },\n    categoryorder: {\n      valType: 'enumerated',\n      values: ['trace', 'category ascending', 'category descending', 'array'],\n      dflt: 'trace',\n      editType: 'calc'\n    },\n    categoryarray: {\n      valType: 'data_array',\n      editType: 'calc'\n    },\n    ticktext: {\n      valType: 'data_array',\n      editType: 'calc'\n    },\n    values: {\n      valType: 'data_array',\n      dflt: [],\n      editType: 'calc'\n    },\n    displayindex: {\n      valType: 'integer',\n      editType: 'calc'\n    },\n    editType: 'calc',\n    visible: {\n      valType: 'boolean',\n      dflt: true,\n      editType: 'calc'\n    }\n  },\n  line: line,\n  counts: {\n    valType: 'number',\n    min: 0,\n    dflt: 1,\n    arrayOk: true,\n    editType: 'calc'\n  },\n  // Hide unsupported top-level properties from plot-schema\n  customdata: undefined,\n  hoverlabel: undefined,\n  ids: undefined,\n  legendgroup: undefined,\n  legendrank: undefined,\n  opacity: undefined,\n  selectedpoints: undefined,\n  showlegend: undefined\n};\n\n/***/ }),\n\n/***/ 27677:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_2776414__) {\n\n\"use strict\";\n\n\nvar getModuleCalcData = (__nested_webpack_require_2776414__(27659)/* .getModuleCalcData */ .a0);\nvar parcatsPlot = __nested_webpack_require_2776414__(45784);\nvar PARCATS = 'parcats';\nexports.name = PARCATS;\nexports.plot = function (gd, traces, transitionOpts, makeOnCompleteCallback) {\n  var cdModuleAndOthers = getModuleCalcData(gd.calcdata, PARCATS);\n  if (cdModuleAndOthers.length) {\n    var calcData = cdModuleAndOthers[0];\n    parcatsPlot(gd, calcData, transitionOpts, makeOnCompleteCallback);\n  }\n};\nexports.clean = function (newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  var hadTable = oldFullLayout._has && oldFullLayout._has('parcats');\n  var hasTable = newFullLayout._has && newFullLayout._has('parcats');\n  if (hadTable && !hasTable) {\n    oldFullLayout._paperdiv.selectAll('.parcats').remove();\n  }\n};\n\n/***/ }),\n\n/***/ 28699:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2777327__) {\n\n\"use strict\";\n\n\n// Requirements\n// ============\nvar wrap = (__nested_webpack_require_2777327__(28984).wrap);\nvar hasColorscale = (__nested_webpack_require_2777327__(52075).hasColorscale);\nvar colorscaleCalc = __nested_webpack_require_2777327__(78803);\nvar filterUnique = __nested_webpack_require_2777327__(75744);\nvar Drawing = __nested_webpack_require_2777327__(91424);\nvar Lib = __nested_webpack_require_2777327__(71828);\nvar isNumeric = __nested_webpack_require_2777327__(92770);\n\n/**\n * Create a wrapped ParcatsModel object from trace\n *\n * Note: trace defaults have already been applied\n * @param {Object} gd\n * @param {Object} trace\n * @return {Array.<ParcatsModel>}\n */\nmodule.exports = function calc(gd, trace) {\n  var visibleDims = Lib.filterVisible(trace.dimensions);\n  if (visibleDims.length === 0) return [];\n  var uniqueInfoDims = visibleDims.map(function (dim) {\n    var categoryValues;\n    if (dim.categoryorder === 'trace') {\n      // Use order of first occurrence in trace\n      categoryValues = null;\n    } else if (dim.categoryorder === 'array') {\n      // Use categories specified in `categoryarray` first,\n      // then add extra to the end in trace order\n      categoryValues = dim.categoryarray;\n    } else {\n      // Get all categories up front\n      categoryValues = filterUnique(dim.values);\n\n      // order them\n      var allNumeric = true;\n      for (var i = 0; i < categoryValues.length; i++) {\n        if (!isNumeric(categoryValues[i])) {\n          allNumeric = false;\n          break;\n        }\n      }\n      categoryValues.sort(allNumeric ? Lib.sorterAsc : undefined);\n      if (dim.categoryorder === 'category descending') {\n        categoryValues = categoryValues.reverse();\n      }\n    }\n    return getUniqueInfo(dim.values, categoryValues);\n  });\n  var counts, count, totalCount;\n  if (Lib.isArrayOrTypedArray(trace.counts)) {\n    counts = trace.counts;\n  } else {\n    counts = [trace.counts];\n  }\n  validateDimensionDisplayInds(visibleDims);\n  visibleDims.forEach(function (dim, dimInd) {\n    validateCategoryProperties(dim, uniqueInfoDims[dimInd]);\n  });\n\n  // Handle path colors\n  // ------------------\n  var line = trace.line;\n  var markerColorscale;\n\n  // Process colorscale\n  if (line) {\n    if (hasColorscale(trace, 'line')) {\n      colorscaleCalc(gd, trace, {\n        vals: trace.line.color,\n        containerStr: 'line',\n        cLetter: 'c'\n      });\n    }\n    markerColorscale = Drawing.tryColorscale(line);\n  } else {\n    markerColorscale = Lib.identity;\n  }\n\n  // Build color generation function\n  function getMarkerColorInfo(index) {\n    var value, rawColor;\n    if (Lib.isArrayOrTypedArray(line.color)) {\n      value = line.color[index % line.color.length];\n      rawColor = value;\n    } else {\n      value = line.color;\n    }\n    return {\n      color: markerColorscale(value),\n      rawColor: rawColor\n    };\n  }\n\n  // Number of values and counts\n  // ---------------------------\n  var numValues = visibleDims[0].values.length;\n\n  // Build path info\n  // ---------------\n  // Mapping from category inds to PathModel objects\n  var pathModels = {};\n\n  // Category inds array for each dimension\n  var categoryIndsDims = uniqueInfoDims.map(function (di) {\n    return di.inds;\n  });\n\n  // Initialize total count\n  totalCount = 0;\n  var valueInd;\n  var d;\n  for (valueInd = 0; valueInd < numValues; valueInd++) {\n    // Category inds for this input value across dimensions\n    var categoryIndsPath = [];\n    for (d = 0; d < categoryIndsDims.length; d++) {\n      categoryIndsPath.push(categoryIndsDims[d][valueInd]);\n    }\n\n    // Count\n    count = counts[valueInd % counts.length];\n\n    // Update total count\n    totalCount += count;\n\n    // Path color\n    var pathColorInfo = getMarkerColorInfo(valueInd);\n\n    // path key\n    var pathKey = categoryIndsPath + '-' + pathColorInfo.rawColor;\n\n    // Create / Update PathModel\n    if (pathModels[pathKey] === undefined) {\n      pathModels[pathKey] = createPathModel(categoryIndsPath, pathColorInfo.color, pathColorInfo.rawColor);\n    }\n    updatePathModel(pathModels[pathKey], valueInd, count);\n  }\n  var dimensionModels = visibleDims.map(function (di, i) {\n    return createDimensionModel(i, di._index, di._displayindex, di.label, totalCount);\n  });\n  for (valueInd = 0; valueInd < numValues; valueInd++) {\n    count = counts[valueInd % counts.length];\n    for (d = 0; d < dimensionModels.length; d++) {\n      var containerInd = dimensionModels[d].containerInd;\n      var catInd = uniqueInfoDims[d].inds[valueInd];\n      var cats = dimensionModels[d].categories;\n      if (cats[catInd] === undefined) {\n        var catValue = trace.dimensions[containerInd]._categoryarray[catInd];\n        var catLabel = trace.dimensions[containerInd]._ticktext[catInd];\n        cats[catInd] = createCategoryModel(d, catInd, catValue, catLabel);\n      }\n      updateCategoryModel(cats[catInd], valueInd, count);\n    }\n  }\n\n  // Compute unique\n  return wrap(createParcatsModel(dimensionModels, pathModels, totalCount));\n};\n\n// Models\n// ======\n\n// Parcats Model\n// -------------\n/**\n * @typedef {Object} ParcatsModel\n *  Object containing calculated information about a parcats trace\n *\n * @property {Array.<DimensionModel>} dimensions\n *  Array of dimension models\n * @property {Object.<string,PathModel>} paths\n *  Dictionary from category inds string (e.g. \"1,2,1,1\") to path model\n * @property {Number} maxCats\n *  The maximum number of categories of any dimension in the diagram\n * @property {Number} count\n *  Total number of input values\n * @property {Object} trace\n */\n\n/**\n * Create and new ParcatsModel object\n * @param {Array.<DimensionModel>} dimensions\n * @param {Object.<string,PathModel>} paths\n * @param {Number} count\n * @return {ParcatsModel}\n */\nfunction createParcatsModel(dimensions, paths, count) {\n  var maxCats = dimensions.map(function (d) {\n    return d.categories.length;\n  }).reduce(function (v1, v2) {\n    return Math.max(v1, v2);\n  });\n  return {\n    dimensions: dimensions,\n    paths: paths,\n    trace: undefined,\n    maxCats: maxCats,\n    count: count\n  };\n}\n\n// Dimension Model\n// ---------------\n/**\n * @typedef {Object} DimensionModel\n *  Object containing calculated information about a single dimension\n *\n * @property {Number} dimensionInd\n *  The index of this dimension among the *visible* dimensions\n * @property {Number} containerInd\n *  The index of this dimension in the original dimensions container,\n *  irrespective of dimension visibility\n * @property {Number} displayInd\n *  The display index of this dimension (where 0 is the left most dimension)\n * @property {String} dimensionLabel\n *  The label of this dimension\n * @property {Number} count\n *  Total number of input values\n * @property {Array.<CategoryModel>} categories\n * @property {Number|null} dragX\n *  The x position of dimension that is currently being dragged. null if not being dragged\n */\n\n/**\n * Create and new DimensionModel object with an empty categories array\n * @param {Number} dimensionInd\n * @param {Number} containerInd\n * @param {Number} displayInd\n * @param {String} dimensionLabel\n * @param {Number} count\n *  Total number of input values\n * @return {DimensionModel}\n */\nfunction createDimensionModel(dimensionInd, containerInd, displayInd, dimensionLabel, count) {\n  return {\n    dimensionInd: dimensionInd,\n    containerInd: containerInd,\n    displayInd: displayInd,\n    dimensionLabel: dimensionLabel,\n    count: count,\n    categories: [],\n    dragX: null\n  };\n}\n\n// Category Model\n// --------------\n/**\n * @typedef {Object} CategoryModel\n *  Object containing calculated information about a single category.\n *\n * @property {Number} dimensionInd\n *  The index of this categories dimension\n * @property {Number} categoryInd\n *  The index of this category\n * @property {Number} displayInd\n *  The display index of this category (where 0 is the topmost category)\n * @property {String} categoryLabel\n *  The name of this category\n * @property categoryValue: Raw value of the category\n * @property {Array} valueInds\n *  Array of indices (into the original value array) of all samples in this category\n * @property {Number} count\n *  The number of elements from the original array in this path\n * @property {Number|null} dragY\n *  The y position of category that is currently being dragged. null if not being dragged\n */\n\n/**\n * Create and return a new CategoryModel object\n * @param {Number} dimensionInd\n * @param {Number} categoryInd\n *  The display index of this category (where 0 is the topmost category)\n * @param {String} categoryValue\n * @param {String} categoryLabel\n * @return {CategoryModel}\n */\nfunction createCategoryModel(dimensionInd, categoryInd, categoryValue, categoryLabel) {\n  return {\n    dimensionInd: dimensionInd,\n    categoryInd: categoryInd,\n    categoryValue: categoryValue,\n    displayInd: categoryInd,\n    categoryLabel: categoryLabel,\n    valueInds: [],\n    count: 0,\n    dragY: null\n  };\n}\n\n/**\n * Update a CategoryModel object with a new value index\n * Note: The calling parameter is modified in place.\n *\n * @param {CategoryModel} categoryModel\n * @param {Number} valueInd\n * @param {Number} count\n */\nfunction updateCategoryModel(categoryModel, valueInd, count) {\n  categoryModel.valueInds.push(valueInd);\n  categoryModel.count += count;\n}\n\n// Path Model\n// ----------\n/**\n * @typedef {Object} PathModel\n *  Object containing calculated information about the samples in a path.\n *\n * @property {Array} categoryInds\n *  Array of category indices for each dimension (length `numDimensions`)\n * @param {String} pathColor\n *  Color of this path. (Note: Any colorscaling has already taken place)\n * @property {Array} valueInds\n *  Array of indices (into the original value array) of all samples in this path\n * @property {Number} count\n *  The number of elements from the original array in this path\n * @property {String} color\n *  The path's color (ass CSS color string)\n * @property rawColor\n *  The raw color value specified by the user. May be a CSS color string or a Number\n */\n\n/**\n * Create and return a new PathModel object\n * @param {Array} categoryInds\n * @param color\n * @param rawColor\n * @return {PathModel}\n */\nfunction createPathModel(categoryInds, color, rawColor) {\n  return {\n    categoryInds: categoryInds,\n    color: color,\n    rawColor: rawColor,\n    valueInds: [],\n    count: 0\n  };\n}\n\n/**\n * Update a PathModel object with a new value index\n * Note: The calling parameter is modified in place.\n *\n * @param {PathModel} pathModel\n * @param {Number} valueInd\n * @param {Number} count\n */\nfunction updatePathModel(pathModel, valueInd, count) {\n  pathModel.valueInds.push(valueInd);\n  pathModel.count += count;\n}\n\n// Unique calculations\n// ===================\n/**\n * @typedef {Object} UniqueInfo\n *  Object containing information about the unique values of an input array\n *\n * @property {Array} uniqueValues\n *  The unique values in the input array\n * @property {Array} uniqueCounts\n *  The number of times each entry in uniqueValues occurs in input array.\n *  This has the same length as `uniqueValues`\n * @property {Array} inds\n *  Indices into uniqueValues that would reproduce original input array\n */\n\n/**\n * Compute unique value information for an array\n *\n * IMPORTANT: Note that values are considered unique\n * if their string representations are unique.\n *\n * @param {Array} values\n * @param {Array|undefined} uniqueValues\n *  Array of expected unique values. The uniqueValues property of the resulting UniqueInfo object will begin with\n *  these entries. Entries are included even if there are zero occurrences in the values array. Entries found in\n *  the values array that are not present in uniqueValues will be included at the end of the array in the\n *  UniqueInfo object.\n * @return {UniqueInfo}\n */\nfunction getUniqueInfo(values, uniqueValues) {\n  // Initialize uniqueValues if not specified\n  if (uniqueValues === undefined || uniqueValues === null) {\n    uniqueValues = [];\n  } else {\n    // Shallow copy so append below doesn't alter input array\n    uniqueValues = uniqueValues.map(function (e) {\n      return e;\n    });\n  }\n\n  // Initialize Variables\n  var uniqueValueCounts = {};\n  var uniqueValueInds = {};\n  var inds = [];\n\n  // Initialize uniqueValueCounts and\n  uniqueValues.forEach(function (uniqueVal, valInd) {\n    uniqueValueCounts[uniqueVal] = 0;\n    uniqueValueInds[uniqueVal] = valInd;\n  });\n\n  // Compute the necessary unique info in a single pass\n  for (var i = 0; i < values.length; i++) {\n    var item = values[i];\n    var itemInd;\n    if (uniqueValueCounts[item] === undefined) {\n      // This item has a previously unseen value\n      uniqueValueCounts[item] = 1;\n      itemInd = uniqueValues.push(item) - 1;\n      uniqueValueInds[item] = itemInd;\n    } else {\n      // Increment count for this item\n      uniqueValueCounts[item]++;\n      itemInd = uniqueValueInds[item];\n    }\n    inds.push(itemInd);\n  }\n\n  // Build UniqueInfo\n  var uniqueCounts = uniqueValues.map(function (v) {\n    return uniqueValueCounts[v];\n  });\n  return {\n    uniqueValues: uniqueValues,\n    uniqueCounts: uniqueCounts,\n    inds: inds\n  };\n}\n\n/**\n * Validate the requested display order for the dimensions.\n * If the display order is a permutation of 0 through dimensions.length - 1, link to _displayindex\n * Otherwise, replace the display order with the dimension order\n * @param {Object} trace\n */\nfunction validateDimensionDisplayInds(visibleDims) {\n  var displayInds = visibleDims.map(function (d) {\n    return d.displayindex;\n  });\n  var i;\n  if (isRangePermutation(displayInds)) {\n    for (i = 0; i < visibleDims.length; i++) {\n      visibleDims[i]._displayindex = visibleDims[i].displayindex;\n    }\n  } else {\n    for (i = 0; i < visibleDims.length; i++) {\n      visibleDims[i]._displayindex = i;\n    }\n  }\n}\n\n/**\n * Update category properties based on the unique values found for this dimension\n * @param {Object} dim\n * @param {UniqueInfo} uniqueInfoDim\n */\nfunction validateCategoryProperties(dim, uniqueInfoDim) {\n  // Update categoryarray\n  dim._categoryarray = uniqueInfoDim.uniqueValues;\n\n  // Handle ticktext\n  if (dim.ticktext === null || dim.ticktext === undefined) {\n    dim._ticktext = [];\n  } else {\n    // Shallow copy to avoid modifying input array\n    dim._ticktext = dim.ticktext.slice();\n  }\n\n  // Extend ticktext with elements from uniqueInfoDim.uniqueValues\n  for (var i = dim._ticktext.length; i < uniqueInfoDim.uniqueValues.length; i++) {\n    dim._ticktext.push(uniqueInfoDim.uniqueValues[i]);\n  }\n}\n\n/**\n * Determine whether an array contains a permutation of the integers from 0 to the array's length - 1\n * @param {Array} inds\n * @return {boolean}\n */\nfunction isRangePermutation(inds) {\n  var indsSpecified = new Array(inds.length);\n  for (var i = 0; i < inds.length; i++) {\n    // Check for out of bounds\n    if (inds[i] < 0 || inds[i] >= inds.length) {\n      return false;\n    }\n\n    // Check for collisions with already specified index\n    if (indsSpecified[inds[i]] !== undefined) {\n      return false;\n    }\n    indsSpecified[inds[i]] = true;\n  }\n\n  // Nothing out of bounds and no collisions. We have a permutation\n  return true;\n}\n\n/***/ }),\n\n/***/ 14647:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2792456__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2792456__(71828);\nvar hasColorscale = (__nested_webpack_require_2792456__(52075).hasColorscale);\nvar colorscaleDefaults = __nested_webpack_require_2792456__(1586);\nvar handleDomainDefaults = (__nested_webpack_require_2792456__(27670)/* .defaults */ .c);\nvar handleArrayContainerDefaults = __nested_webpack_require_2792456__(85501);\nvar attributes = __nested_webpack_require_2792456__(99506);\nvar mergeLength = __nested_webpack_require_2792456__(94397);\nfunction handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce) {\n  coerce('line.shape');\n  coerce('line.hovertemplate');\n  var lineColor = coerce('line.color', layout.colorway[0]);\n  if (hasColorscale(traceIn, 'line') && Lib.isArrayOrTypedArray(lineColor)) {\n    if (lineColor.length) {\n      coerce('line.colorscale');\n      colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n        prefix: 'line.',\n        cLetter: 'c'\n      });\n      return lineColor.length;\n    } else {\n      traceOut.line.color = defaultColor;\n    }\n  }\n  return Infinity;\n}\nfunction dimensionDefaults(dimensionIn, dimensionOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(dimensionIn, dimensionOut, attributes.dimensions, attr, dflt);\n  }\n  var values = coerce('values');\n  var visible = coerce('visible');\n  if (!(values && values.length)) {\n    visible = dimensionOut.visible = false;\n  }\n  if (visible) {\n    // Dimension level\n    coerce('label');\n    coerce('displayindex', dimensionOut._index);\n\n    // Category level\n    var arrayIn = dimensionIn.categoryarray;\n    var isValidArray = Array.isArray(arrayIn) && arrayIn.length > 0;\n    var orderDefault;\n    if (isValidArray) orderDefault = 'array';\n    var order = coerce('categoryorder', orderDefault);\n\n    // coerce 'categoryarray' only in array order case\n    if (order === 'array') {\n      coerce('categoryarray');\n      coerce('ticktext');\n    } else {\n      delete dimensionIn.categoryarray;\n      delete dimensionIn.ticktext;\n    }\n\n    // cannot set 'categoryorder' to 'array' with an invalid 'categoryarray'\n    if (!isValidArray && order === 'array') {\n      dimensionOut.categoryorder = 'trace';\n    }\n  }\n}\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var dimensions = handleArrayContainerDefaults(traceIn, traceOut, {\n    name: 'dimensions',\n    handleItemDefaults: dimensionDefaults\n  });\n  var len = handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce);\n  handleDomainDefaults(traceOut, layout, coerce);\n  if (!Array.isArray(dimensions) || !dimensions.length) {\n    traceOut.visible = false;\n  }\n  mergeLength(traceOut, dimensions, 'values', len);\n  coerce('hoveron');\n  coerce('hovertemplate');\n  coerce('arrangement');\n  coerce('bundlecolors');\n  coerce('sortpaths');\n  coerce('counts');\n  var labelfontDflt = {\n    family: layout.font.family,\n    size: Math.round(layout.font.size),\n    color: layout.font.color\n  };\n  Lib.coerceFont(coerce, 'labelfont', labelfontDflt);\n  var categoryfontDefault = {\n    family: layout.font.family,\n    size: Math.round(layout.font.size / 1.2),\n    color: layout.font.color\n  };\n  Lib.coerceFont(coerce, 'tickfont', categoryfontDefault);\n};\n\n/***/ }),\n\n/***/ 94873:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2795770__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2795770__(99506),\n  supplyDefaults: __nested_webpack_require_2795770__(14647),\n  calc: __nested_webpack_require_2795770__(28699),\n  plot: __nested_webpack_require_2795770__(45784),\n  colorbar: {\n    container: 'line',\n    min: 'cmin',\n    max: 'cmax'\n  },\n  moduleType: 'trace',\n  name: 'parcats',\n  basePlotModule: __nested_webpack_require_2795770__(27677),\n  categories: ['noOpacity'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 45460:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2796270__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2796270__(39898);\nvar interpolateNumber = (__nested_webpack_require_2796270__(81684)/* .interpolateNumber */ .k4);\nvar Plotly = __nested_webpack_require_2796270__(72391);\nvar Fx = __nested_webpack_require_2796270__(30211);\nvar Lib = __nested_webpack_require_2796270__(71828);\nvar strTranslate = Lib.strTranslate;\nvar Drawing = __nested_webpack_require_2796270__(91424);\nvar tinycolor = __nested_webpack_require_2796270__(84267);\nvar svgTextUtils = __nested_webpack_require_2796270__(63893);\nfunction performPlot(parcatsModels, graphDiv, layout, svg) {\n  var isStatic = graphDiv._context.staticPlot;\n  var viewModels = parcatsModels.map(createParcatsViewModel.bind(0, graphDiv, layout));\n\n  // Get (potentially empty) parcatslayer selection with bound data to single element array\n  var layerSelection = svg.selectAll('g.parcatslayer').data([null]);\n\n  // Initialize single parcatslayer group if it doesn't exist\n  layerSelection.enter().append('g').attr('class', 'parcatslayer').style('pointer-events', isStatic ? 'none' : 'all');\n\n  // Bind data to children of layerSelection and get reference to traceSelection\n  var traceSelection = layerSelection.selectAll('g.trace.parcats').data(viewModels, key);\n\n  // Initialize group for each trace/dimensions\n  var traceEnter = traceSelection.enter().append('g').attr('class', 'trace parcats');\n\n  // Update properties for each trace\n  traceSelection.attr('transform', function (d) {\n    return strTranslate(d.x, d.y);\n  });\n\n  // Initialize paths group\n  traceEnter.append('g').attr('class', 'paths');\n\n  // Update paths transform\n  var pathsSelection = traceSelection.select('g.paths');\n\n  // Get paths selection\n  var pathSelection = pathsSelection.selectAll('path.path').data(function (d) {\n    return d.paths;\n  }, key);\n\n  // Update existing path colors\n  pathSelection.attr('fill', function (d) {\n    return d.model.color;\n  });\n\n  // Create paths\n  var pathSelectionEnter = pathSelection.enter().append('path').attr('class', 'path').attr('stroke-opacity', 0).attr('fill', function (d) {\n    return d.model.color;\n  }).attr('fill-opacity', 0);\n  stylePathsNoHover(pathSelectionEnter);\n\n  // Set path geometry\n  pathSelection.attr('d', function (d) {\n    return d.svgD;\n  });\n\n  // sort paths\n  if (!pathSelectionEnter.empty()) {\n    // Only sort paths if there has been a change.\n    // Otherwise paths are already sorted or a hover operation may be in progress\n    pathSelection.sort(compareRawColor);\n  }\n\n  // Remove any old paths\n  pathSelection.exit().remove();\n\n  // Path hover\n  pathSelection.on('mouseover', mouseoverPath).on('mouseout', mouseoutPath).on('click', clickPath);\n\n  // Initialize dimensions group\n  traceEnter.append('g').attr('class', 'dimensions');\n\n  // Update dimensions transform\n  var dimensionsSelection = traceSelection.select('g.dimensions');\n\n  // Get dimension selection\n  var dimensionSelection = dimensionsSelection.selectAll('g.dimension').data(function (d) {\n    return d.dimensions;\n  }, key);\n\n  // Create dimension groups\n  dimensionSelection.enter().append('g').attr('class', 'dimension');\n\n  // Update dimension group transforms\n  dimensionSelection.attr('transform', function (d) {\n    return strTranslate(d.x, 0);\n  });\n\n  // Remove any old dimensions\n  dimensionSelection.exit().remove();\n\n  // Get category selection\n  var categorySelection = dimensionSelection.selectAll('g.category').data(function (d) {\n    return d.categories;\n  }, key);\n\n  // Initialize category groups\n  var categoryGroupEnterSelection = categorySelection.enter().append('g').attr('class', 'category');\n\n  // Update category transforms\n  categorySelection.attr('transform', function (d) {\n    return strTranslate(0, d.y);\n  });\n\n  // Initialize rectangle\n  categoryGroupEnterSelection.append('rect').attr('class', 'catrect').attr('pointer-events', 'none');\n\n  // Update rectangle\n  categorySelection.select('rect.catrect').attr('fill', 'none').attr('width', function (d) {\n    return d.width;\n  }).attr('height', function (d) {\n    return d.height;\n  });\n  styleCategoriesNoHover(categoryGroupEnterSelection);\n\n  // Initialize color band rects\n  var bandSelection = categorySelection.selectAll('rect.bandrect').data( /** @param {CategoryViewModel} catViewModel*/\n  function (catViewModel) {\n    return catViewModel.bands;\n  }, key);\n\n  // Raise all update bands to the top so that fading enter/exit bands will be behind\n  bandSelection.each(function () {\n    Lib.raiseToTop(this);\n  });\n\n  // Update band color\n  bandSelection.attr('fill', function (d) {\n    return d.color;\n  });\n  var bandsSelectionEnter = bandSelection.enter().append('rect').attr('class', 'bandrect').attr('stroke-opacity', 0).attr('fill', function (d) {\n    return d.color;\n  }).attr('fill-opacity', 0);\n  bandSelection.attr('fill', function (d) {\n    return d.color;\n  }).attr('width', function (d) {\n    return d.width;\n  }).attr('height', function (d) {\n    return d.height;\n  }).attr('y', function (d) {\n    return d.y;\n  }).attr('cursor', /** @param {CategoryBandViewModel} bandModel*/\n  function (bandModel) {\n    if (bandModel.parcatsViewModel.arrangement === 'fixed') {\n      return 'default';\n    } else if (bandModel.parcatsViewModel.arrangement === 'perpendicular') {\n      return 'ns-resize';\n    } else {\n      return 'move';\n    }\n  });\n  styleBandsNoHover(bandsSelectionEnter);\n  bandSelection.exit().remove();\n\n  // Initialize category label\n  categoryGroupEnterSelection.append('text').attr('class', 'catlabel').attr('pointer-events', 'none');\n  var paperColor = graphDiv._fullLayout.paper_bgcolor;\n\n  // Update category label\n  categorySelection.select('text.catlabel').attr('text-anchor', function (d) {\n    if (catInRightDim(d)) {\n      // Place label to the right of category\n      return 'start';\n    } else {\n      // Place label to the left of category\n      return 'end';\n    }\n  }).attr('alignment-baseline', 'middle').style('text-shadow', svgTextUtils.makeTextShadow(paperColor)).style('fill', 'rgb(0, 0, 0)').attr('x', function (d) {\n    if (catInRightDim(d)) {\n      // Place label to the right of category\n      return d.width + 5;\n    } else {\n      // Place label to the left of category\n      return -5;\n    }\n  }).attr('y', function (d) {\n    return d.height / 2;\n  }).text(function (d) {\n    return d.model.categoryLabel;\n  }).each( /** @param {CategoryViewModel} catModel*/\n  function (catModel) {\n    Drawing.font(d3.select(this), catModel.parcatsViewModel.categorylabelfont);\n    svgTextUtils.convertToTspans(d3.select(this), graphDiv);\n  });\n\n  // Initialize dimension label\n  categoryGroupEnterSelection.append('text').attr('class', 'dimlabel');\n\n  // Update dimension label\n  categorySelection.select('text.dimlabel').attr('text-anchor', 'middle').attr('alignment-baseline', 'baseline').attr('cursor', /** @param {CategoryViewModel} catModel*/\n  function (catModel) {\n    if (catModel.parcatsViewModel.arrangement === 'fixed') {\n      return 'default';\n    } else {\n      return 'ew-resize';\n    }\n  }).attr('x', function (d) {\n    return d.width / 2;\n  }).attr('y', -5).text(function (d, i) {\n    if (i === 0) {\n      // Add dimension label above topmost category\n      return d.parcatsViewModel.model.dimensions[d.model.dimensionInd].dimensionLabel;\n    } else {\n      return null;\n    }\n  }).each( /** @param {CategoryViewModel} catModel*/\n  function (catModel) {\n    Drawing.font(d3.select(this), catModel.parcatsViewModel.labelfont);\n  });\n\n  // Category hover\n  // categorySelection.select('rect.catrect')\n  categorySelection.selectAll('rect.bandrect').on('mouseover', mouseoverCategoryBand).on('mouseout', mouseoutCategory);\n\n  // Remove unused categories\n  categorySelection.exit().remove();\n\n  // Setup drag\n  dimensionSelection.call(d3.behavior.drag().origin(function (d) {\n    return {\n      x: d.x,\n      y: 0\n    };\n  }).on('dragstart', dragDimensionStart).on('drag', dragDimension).on('dragend', dragDimensionEnd));\n\n  // Save off selections to view models\n  traceSelection.each(function (d) {\n    d.traceSelection = d3.select(this);\n    d.pathSelection = d3.select(this).selectAll('g.paths').selectAll('path.path');\n    d.dimensionSelection = d3.select(this).selectAll('g.dimensions').selectAll('g.dimension');\n  });\n\n  // Remove any orphan traces\n  traceSelection.exit().remove();\n}\n\n/**\n * Create / update parcat traces\n *\n * @param {Object} graphDiv\n * @param {Object} svg\n * @param {Array.<ParcatsModel>} parcatsModels\n * @param {Layout} layout\n */\nmodule.exports = function (graphDiv, svg, parcatsModels, layout) {\n  performPlot(parcatsModels, graphDiv, layout, svg);\n};\n\n/**\n * Function the returns the key property of an object for use with as D3 join function\n * @param d\n */\nfunction key(d) {\n  return d.key;\n}\n\n/** True if a category view model is in the right-most display dimension\n * @param {CategoryViewModel} d */\nfunction catInRightDim(d) {\n  var numDims = d.parcatsViewModel.dimensions.length;\n  var leftDimInd = d.parcatsViewModel.dimensions[numDims - 1].model.dimensionInd;\n  return d.model.dimensionInd === leftDimInd;\n}\n\n/**\n * @param {PathViewModel} a\n * @param {PathViewModel} b\n */\nfunction compareRawColor(a, b) {\n  if (a.model.rawColor > b.model.rawColor) {\n    return 1;\n  } else if (a.model.rawColor < b.model.rawColor) {\n    return -1;\n  } else {\n    return 0;\n  }\n}\n\n/**\n * Handle path mouseover\n * @param {PathViewModel} d\n */\nfunction mouseoverPath(d) {\n  if (!d.parcatsViewModel.dragDimension) {\n    // We're not currently dragging\n\n    if (d.parcatsViewModel.hoverinfoItems.indexOf('skip') === -1) {\n      // hoverinfo is not skip, so we at least style the paths and emit interaction events\n\n      // Raise path to top\n      Lib.raiseToTop(this);\n      stylePathsHover(d3.select(this));\n\n      // Emit hover event\n      var points = buildPointsArrayForPath(d);\n      var constraints = buildConstraintsForPath(d);\n      d.parcatsViewModel.graphDiv.emit('plotly_hover', {\n        points: points,\n        event: d3.event,\n        constraints: constraints\n      });\n\n      // Handle hover label\n      if (d.parcatsViewModel.hoverinfoItems.indexOf('none') === -1) {\n        // hoverinfo is a combination of 'count' and 'probability'\n\n        // Mouse\n        var hoverX = d3.mouse(this)[0];\n\n        // Label\n        var gd = d.parcatsViewModel.graphDiv;\n        var trace = d.parcatsViewModel.trace;\n        var fullLayout = gd._fullLayout;\n        var rootBBox = fullLayout._paperdiv.node().getBoundingClientRect();\n        var graphDivBBox = d.parcatsViewModel.graphDiv.getBoundingClientRect();\n\n        // Find path center in path coordinates\n        var pathCenterX, pathCenterY, dimInd;\n        for (dimInd = 0; dimInd < d.leftXs.length - 1; dimInd++) {\n          if (d.leftXs[dimInd] + d.dimWidths[dimInd] - 2 <= hoverX && hoverX <= d.leftXs[dimInd + 1] + 2) {\n            var leftDim = d.parcatsViewModel.dimensions[dimInd];\n            var rightDim = d.parcatsViewModel.dimensions[dimInd + 1];\n            pathCenterX = (leftDim.x + leftDim.width + rightDim.x) / 2;\n            pathCenterY = (d.topYs[dimInd] + d.topYs[dimInd + 1] + d.height) / 2;\n            break;\n          }\n        }\n\n        // Find path center in root coordinates\n        var hoverCenterX = d.parcatsViewModel.x + pathCenterX;\n        var hoverCenterY = d.parcatsViewModel.y + pathCenterY;\n        var textColor = tinycolor.mostReadable(d.model.color, ['black', 'white']);\n        var count = d.model.count;\n        var prob = count / d.parcatsViewModel.model.count;\n        var labels = {\n          countLabel: count,\n          probabilityLabel: prob.toFixed(3)\n        };\n\n        // Build hover text\n        var hovertextParts = [];\n        if (d.parcatsViewModel.hoverinfoItems.indexOf('count') !== -1) {\n          hovertextParts.push(['Count:', labels.countLabel].join(' '));\n        }\n        if (d.parcatsViewModel.hoverinfoItems.indexOf('probability') !== -1) {\n          hovertextParts.push(['P:', labels.probabilityLabel].join(' '));\n        }\n        var hovertext = hovertextParts.join('<br>');\n        var mouseX = d3.mouse(gd)[0];\n        Fx.loneHover({\n          trace: trace,\n          x: hoverCenterX - rootBBox.left + graphDivBBox.left,\n          y: hoverCenterY - rootBBox.top + graphDivBBox.top,\n          text: hovertext,\n          color: d.model.color,\n          borderColor: 'black',\n          fontFamily: 'Monaco, \"Courier New\", monospace',\n          fontSize: 10,\n          fontColor: textColor,\n          idealAlign: mouseX < hoverCenterX ? 'right' : 'left',\n          hovertemplate: (trace.line || {}).hovertemplate,\n          hovertemplateLabels: labels,\n          eventData: [{\n            data: trace._input,\n            fullData: trace,\n            count: count,\n            probability: prob\n          }]\n        }, {\n          container: fullLayout._hoverlayer.node(),\n          outerContainer: fullLayout._paper.node(),\n          gd: gd\n        });\n      }\n    }\n  }\n}\n\n/**\n * Handle path mouseout\n * @param {PathViewModel} d\n */\nfunction mouseoutPath(d) {\n  if (!d.parcatsViewModel.dragDimension) {\n    // We're not currently dragging\n    stylePathsNoHover(d3.select(this));\n\n    // Remove and hover label\n    Fx.loneUnhover(d.parcatsViewModel.graphDiv._fullLayout._hoverlayer.node());\n\n    // Restore path order\n    d.parcatsViewModel.pathSelection.sort(compareRawColor);\n\n    // Emit unhover event\n    if (d.parcatsViewModel.hoverinfoItems.indexOf('skip') === -1) {\n      var points = buildPointsArrayForPath(d);\n      var constraints = buildConstraintsForPath(d);\n      d.parcatsViewModel.graphDiv.emit('plotly_unhover', {\n        points: points,\n        event: d3.event,\n        constraints: constraints\n      });\n    }\n  }\n}\n\n/**\n * Build array of point objects for a path\n *\n * For use in click/hover events\n * @param {PathViewModel} d\n */\nfunction buildPointsArrayForPath(d) {\n  var points = [];\n  var curveNumber = getTraceIndex(d.parcatsViewModel);\n  for (var i = 0; i < d.model.valueInds.length; i++) {\n    var pointNumber = d.model.valueInds[i];\n    points.push({\n      curveNumber: curveNumber,\n      pointNumber: pointNumber\n    });\n  }\n  return points;\n}\n\n/**\n * Build constraints object for a path\n *\n * For use in click/hover events\n * @param {PathViewModel} d\n */\nfunction buildConstraintsForPath(d) {\n  var constraints = {};\n  var dimensions = d.parcatsViewModel.model.dimensions;\n\n  // dimensions\n  for (var i = 0; i < dimensions.length; i++) {\n    var dimension = dimensions[i];\n    var category = dimension.categories[d.model.categoryInds[i]];\n    constraints[dimension.containerInd] = category.categoryValue;\n  }\n\n  // color\n  if (d.model.rawColor !== undefined) {\n    constraints.color = d.model.rawColor;\n  }\n  return constraints;\n}\n\n/**\n * Handle path click\n * @param {PathViewModel} d\n */\nfunction clickPath(d) {\n  if (d.parcatsViewModel.hoverinfoItems.indexOf('skip') === -1) {\n    // hoverinfo it's skip, so interaction events aren't disabled\n    var points = buildPointsArrayForPath(d);\n    var constraints = buildConstraintsForPath(d);\n    d.parcatsViewModel.graphDiv.emit('plotly_click', {\n      points: points,\n      event: d3.event,\n      constraints: constraints\n    });\n  }\n}\nfunction stylePathsNoHover(pathSelection) {\n  pathSelection.attr('fill', function (d) {\n    return d.model.color;\n  }).attr('fill-opacity', 0.6).attr('stroke', 'lightgray').attr('stroke-width', 0.2).attr('stroke-opacity', 1.0);\n}\nfunction stylePathsHover(pathSelection) {\n  pathSelection.attr('fill-opacity', 0.8).attr('stroke', function (d) {\n    return tinycolor.mostReadable(d.model.color, ['black', 'white']);\n  }).attr('stroke-width', 0.3);\n}\nfunction styleCategoryHover(categorySelection) {\n  categorySelection.select('rect.catrect').attr('stroke', 'black').attr('stroke-width', 2.5);\n}\nfunction styleCategoriesNoHover(categorySelection) {\n  categorySelection.select('rect.catrect').attr('stroke', 'black').attr('stroke-width', 1).attr('stroke-opacity', 1);\n}\nfunction styleBandsHover(bandsSelection) {\n  bandsSelection.attr('stroke', 'black').attr('stroke-width', 1.5);\n}\nfunction styleBandsNoHover(bandsSelection) {\n  bandsSelection.attr('stroke', 'black').attr('stroke-width', 0.2).attr('stroke-opacity', 1.0).attr('fill-opacity', 1.0);\n}\n\n/**\n * Return selection of all paths that pass through the specified category\n * @param {CategoryBandViewModel} catBandViewModel\n */\nfunction selectPathsThroughCategoryBandColor(catBandViewModel) {\n  var allPaths = catBandViewModel.parcatsViewModel.pathSelection;\n  var dimInd = catBandViewModel.categoryViewModel.model.dimensionInd;\n  var catInd = catBandViewModel.categoryViewModel.model.categoryInd;\n  return allPaths.filter( /** @param {PathViewModel} pathViewModel */\n  function (pathViewModel) {\n    return pathViewModel.model.categoryInds[dimInd] === catInd && pathViewModel.model.color === catBandViewModel.color;\n  });\n}\n\n/**\n * Perform hover styling for all paths that pass though the specified band element's category\n *\n * @param {HTMLElement} bandElement\n *  HTML element for band\n *\n */\nfunction styleForCategoryHovermode(bandElement) {\n  // Get all bands in the current category\n  var bandSel = d3.select(bandElement.parentNode).selectAll('rect.bandrect');\n\n  // Raise and style paths\n  bandSel.each(function (bvm) {\n    var paths = selectPathsThroughCategoryBandColor(bvm);\n    stylePathsHover(paths);\n    paths.each(function () {\n      // Raise path to top\n      Lib.raiseToTop(this);\n    });\n  });\n\n  // Style category\n  styleCategoryHover(d3.select(bandElement.parentNode));\n}\n\n/**\n * Perform hover styling for all paths that pass though the category of the specified band element and share the\n * same color\n *\n * @param {HTMLElement} bandElement\n *  HTML element for band\n *\n */\nfunction styleForColorHovermode(bandElement) {\n  var bandViewModel = d3.select(bandElement).datum();\n  var catPaths = selectPathsThroughCategoryBandColor(bandViewModel);\n  stylePathsHover(catPaths);\n  catPaths.each(function () {\n    // Raise path to top\n    Lib.raiseToTop(this);\n  });\n\n  // Style category for drag\n  d3.select(bandElement.parentNode).selectAll('rect.bandrect').filter(function (b) {\n    return b.color === bandViewModel.color;\n  }).each(function () {\n    Lib.raiseToTop(this);\n    styleBandsHover(d3.select(this));\n  });\n}\n\n/**\n * @param {HTMLElement} bandElement\n *  HTML element for band\n * @param eventName\n *  Event name (plotly_hover or plotly_click)\n * @param event\n *  Mouse Event\n */\nfunction emitPointsEventCategoryHovermode(bandElement, eventName, event) {\n  // Get all bands in the current category\n  var bandViewModel = d3.select(bandElement).datum();\n  var categoryModel = bandViewModel.categoryViewModel.model;\n  var gd = bandViewModel.parcatsViewModel.graphDiv;\n  var bandSel = d3.select(bandElement.parentNode).selectAll('rect.bandrect');\n  var points = [];\n  bandSel.each(function (bvm) {\n    var paths = selectPathsThroughCategoryBandColor(bvm);\n    paths.each(function (pathViewModel) {\n      // Extend points array\n      Array.prototype.push.apply(points, buildPointsArrayForPath(pathViewModel));\n    });\n  });\n  var constraints = {};\n  constraints[categoryModel.dimensionInd] = categoryModel.categoryValue;\n  gd.emit(eventName, {\n    points: points,\n    event: event,\n    constraints: constraints\n  });\n}\n\n/**\n * @param {HTMLElement} bandElement\n *  HTML element for band\n * @param eventName\n *  Event name (plotly_hover or plotly_click)\n * @param event\n *  Mouse Event\n */\nfunction emitPointsEventColorHovermode(bandElement, eventName, event) {\n  var bandViewModel = d3.select(bandElement).datum();\n  var categoryModel = bandViewModel.categoryViewModel.model;\n  var gd = bandViewModel.parcatsViewModel.graphDiv;\n  var paths = selectPathsThroughCategoryBandColor(bandViewModel);\n  var points = [];\n  paths.each(function (pathViewModel) {\n    // Extend points array\n    Array.prototype.push.apply(points, buildPointsArrayForPath(pathViewModel));\n  });\n  var constraints = {};\n  constraints[categoryModel.dimensionInd] = categoryModel.categoryValue;\n  // color\n  if (bandViewModel.rawColor !== undefined) {\n    constraints.color = bandViewModel.rawColor;\n  }\n  gd.emit(eventName, {\n    points: points,\n    event: event,\n    constraints: constraints\n  });\n}\n\n/**\n * Create hover label for a band element's category (for use when hoveron === 'category')\n *\n * @param {ClientRect} rootBBox\n *  Client bounding box for root of figure\n * @param {HTMLElement} bandElement\n *  HTML element for band\n *\n */\nfunction createHoverLabelForCategoryHovermode(gd, rootBBox, bandElement) {\n  gd._fullLayout._calcInverseTransform(gd);\n  var scaleX = gd._fullLayout._invScaleX;\n  var scaleY = gd._fullLayout._invScaleY;\n\n  // Selections\n  var rectSelection = d3.select(bandElement.parentNode).select('rect.catrect');\n  var rectBoundingBox = rectSelection.node().getBoundingClientRect();\n\n  // Models\n  /** @type {CategoryViewModel} */\n  var catViewModel = rectSelection.datum();\n  var parcatsViewModel = catViewModel.parcatsViewModel;\n  var dimensionModel = parcatsViewModel.model.dimensions[catViewModel.model.dimensionInd];\n  var trace = parcatsViewModel.trace;\n\n  // Positions\n  var hoverCenterY = rectBoundingBox.top + rectBoundingBox.height / 2;\n  var hoverCenterX, hoverLabelIdealAlign;\n  if (parcatsViewModel.dimensions.length > 1 && dimensionModel.displayInd === parcatsViewModel.dimensions.length - 1) {\n    // right most dimension\n    hoverCenterX = rectBoundingBox.left;\n    hoverLabelIdealAlign = 'left';\n  } else {\n    hoverCenterX = rectBoundingBox.left + rectBoundingBox.width;\n    hoverLabelIdealAlign = 'right';\n  }\n  var count = catViewModel.model.count;\n  var catLabel = catViewModel.model.categoryLabel;\n  var prob = count / catViewModel.parcatsViewModel.model.count;\n  var labels = {\n    countLabel: count,\n    categoryLabel: catLabel,\n    probabilityLabel: prob.toFixed(3)\n  };\n\n  // Hover label text\n  var hoverinfoParts = [];\n  if (catViewModel.parcatsViewModel.hoverinfoItems.indexOf('count') !== -1) {\n    hoverinfoParts.push(['Count:', labels.countLabel].join(' '));\n  }\n  if (catViewModel.parcatsViewModel.hoverinfoItems.indexOf('probability') !== -1) {\n    hoverinfoParts.push(['P(' + labels.categoryLabel + '):', labels.probabilityLabel].join(' '));\n  }\n  var hovertext = hoverinfoParts.join('<br>');\n  return {\n    trace: trace,\n    x: scaleX * (hoverCenterX - rootBBox.left),\n    y: scaleY * (hoverCenterY - rootBBox.top),\n    text: hovertext,\n    color: 'lightgray',\n    borderColor: 'black',\n    fontFamily: 'Monaco, \"Courier New\", monospace',\n    fontSize: 12,\n    fontColor: 'black',\n    idealAlign: hoverLabelIdealAlign,\n    hovertemplate: trace.hovertemplate,\n    hovertemplateLabels: labels,\n    eventData: [{\n      data: trace._input,\n      fullData: trace,\n      count: count,\n      category: catLabel,\n      probability: prob\n    }]\n  };\n}\n\n/**\n * Create hover label for a band element's category (for use when hoveron === 'category')\n *\n * @param {ClientRect} rootBBox\n *  Client bounding box for root of figure\n * @param {HTMLElement} bandElement\n *  HTML element for band\n *\n */\nfunction createHoverLabelForDimensionHovermode(gd, rootBBox, bandElement) {\n  var allHoverlabels = [];\n  d3.select(bandElement.parentNode.parentNode).selectAll('g.category').select('rect.catrect').each(function () {\n    var bandNode = this;\n    allHoverlabels.push(createHoverLabelForCategoryHovermode(gd, rootBBox, bandNode));\n  });\n  return allHoverlabels;\n}\n\n/**\n * Create hover labels for a band element's category (for use when hoveron === 'dimension')\n *\n * @param {ClientRect} rootBBox\n *  Client bounding box for root of figure\n * @param {HTMLElement} bandElement\n *  HTML element for band\n *\n */\nfunction createHoverLabelForColorHovermode(gd, rootBBox, bandElement) {\n  gd._fullLayout._calcInverseTransform(gd);\n  var scaleX = gd._fullLayout._invScaleX;\n  var scaleY = gd._fullLayout._invScaleY;\n  var bandBoundingBox = bandElement.getBoundingClientRect();\n\n  // Models\n  /** @type {CategoryBandViewModel} */\n  var bandViewModel = d3.select(bandElement).datum();\n  var catViewModel = bandViewModel.categoryViewModel;\n  var parcatsViewModel = catViewModel.parcatsViewModel;\n  var dimensionModel = parcatsViewModel.model.dimensions[catViewModel.model.dimensionInd];\n  var trace = parcatsViewModel.trace;\n\n  // positions\n  var hoverCenterY = bandBoundingBox.y + bandBoundingBox.height / 2;\n  var hoverCenterX, hoverLabelIdealAlign;\n  if (parcatsViewModel.dimensions.length > 1 && dimensionModel.displayInd === parcatsViewModel.dimensions.length - 1) {\n    // right most dimension\n    hoverCenterX = bandBoundingBox.left;\n    hoverLabelIdealAlign = 'left';\n  } else {\n    hoverCenterX = bandBoundingBox.left + bandBoundingBox.width;\n    hoverLabelIdealAlign = 'right';\n  }\n\n  // Labels\n  var catLabel = catViewModel.model.categoryLabel;\n\n  // Counts\n  var totalCount = bandViewModel.parcatsViewModel.model.count;\n  var bandColorCount = 0;\n  bandViewModel.categoryViewModel.bands.forEach(function (b) {\n    if (b.color === bandViewModel.color) {\n      bandColorCount += b.count;\n    }\n  });\n  var catCount = catViewModel.model.count;\n  var colorCount = 0;\n  parcatsViewModel.pathSelection.each( /** @param {PathViewModel} pathViewModel */\n  function (pathViewModel) {\n    if (pathViewModel.model.color === bandViewModel.color) {\n      colorCount += pathViewModel.model.count;\n    }\n  });\n  var pColorAndCat = bandColorCount / totalCount;\n  var pCatGivenColor = bandColorCount / colorCount;\n  var pColorGivenCat = bandColorCount / catCount;\n  var labels = {\n    countLabel: totalCount,\n    categoryLabel: catLabel,\n    probabilityLabel: pColorAndCat.toFixed(3)\n  };\n\n  // Hover label text\n  var hoverinfoParts = [];\n  if (catViewModel.parcatsViewModel.hoverinfoItems.indexOf('count') !== -1) {\n    hoverinfoParts.push(['Count:', labels.countLabel].join(' '));\n  }\n  if (catViewModel.parcatsViewModel.hoverinfoItems.indexOf('probability') !== -1) {\n    hoverinfoParts.push('P(color ∩ ' + catLabel + '): ' + labels.probabilityLabel);\n    hoverinfoParts.push('P(' + catLabel + ' | color): ' + pCatGivenColor.toFixed(3));\n    hoverinfoParts.push('P(color | ' + catLabel + '): ' + pColorGivenCat.toFixed(3));\n  }\n  var hovertext = hoverinfoParts.join('<br>');\n\n  // Compute text color\n  var textColor = tinycolor.mostReadable(bandViewModel.color, ['black', 'white']);\n  return {\n    trace: trace,\n    x: scaleX * (hoverCenterX - rootBBox.left),\n    y: scaleY * (hoverCenterY - rootBBox.top),\n    // name: 'NAME',\n    text: hovertext,\n    color: bandViewModel.color,\n    borderColor: 'black',\n    fontFamily: 'Monaco, \"Courier New\", monospace',\n    fontColor: textColor,\n    fontSize: 10,\n    idealAlign: hoverLabelIdealAlign,\n    hovertemplate: trace.hovertemplate,\n    hovertemplateLabels: labels,\n    eventData: [{\n      data: trace._input,\n      fullData: trace,\n      category: catLabel,\n      count: totalCount,\n      probability: pColorAndCat,\n      categorycount: catCount,\n      colorcount: colorCount,\n      bandcolorcount: bandColorCount\n    }]\n  };\n}\n\n/**\n * Handle dimension mouseover\n * @param {CategoryBandViewModel} bandViewModel\n */\nfunction mouseoverCategoryBand(bandViewModel) {\n  if (!bandViewModel.parcatsViewModel.dragDimension) {\n    // We're not currently dragging\n\n    if (bandViewModel.parcatsViewModel.hoverinfoItems.indexOf('skip') === -1) {\n      // hoverinfo is not skip, so we at least style the bands and emit interaction events\n\n      // Mouse\n      var mouseY = d3.mouse(this)[1];\n      if (mouseY < -1) {\n        // Hover is above above the category rectangle (probably the dimension title text)\n        return;\n      }\n      var gd = bandViewModel.parcatsViewModel.graphDiv;\n      var fullLayout = gd._fullLayout;\n      var rootBBox = fullLayout._paperdiv.node().getBoundingClientRect();\n      var hoveron = bandViewModel.parcatsViewModel.hoveron;\n\n      /** @type {HTMLElement} */\n      var bandElement = this;\n\n      // Handle style and events\n      if (hoveron === 'color') {\n        styleForColorHovermode(bandElement);\n        emitPointsEventColorHovermode(bandElement, 'plotly_hover', d3.event);\n      } else {\n        styleForCategoryHovermode(bandElement);\n        emitPointsEventCategoryHovermode(bandElement, 'plotly_hover', d3.event);\n      }\n\n      // Handle hover label\n      if (bandViewModel.parcatsViewModel.hoverinfoItems.indexOf('none') === -1) {\n        var hoverItems;\n        if (hoveron === 'category') {\n          hoverItems = createHoverLabelForCategoryHovermode(gd, rootBBox, bandElement);\n        } else if (hoveron === 'color') {\n          hoverItems = createHoverLabelForColorHovermode(gd, rootBBox, bandElement);\n        } else if (hoveron === 'dimension') {\n          hoverItems = createHoverLabelForDimensionHovermode(gd, rootBBox, bandElement);\n        }\n        if (hoverItems) {\n          Fx.loneHover(hoverItems, {\n            container: fullLayout._hoverlayer.node(),\n            outerContainer: fullLayout._paper.node(),\n            gd: gd\n          });\n        }\n      }\n    }\n  }\n}\n\n/**\n * Handle dimension mouseover\n * @param {CategoryBandViewModel} bandViewModel\n */\nfunction mouseoutCategory(bandViewModel) {\n  var parcatsViewModel = bandViewModel.parcatsViewModel;\n  if (!parcatsViewModel.dragDimension) {\n    // We're not dragging anything\n\n    // Reset unhovered styles\n    stylePathsNoHover(parcatsViewModel.pathSelection);\n    styleCategoriesNoHover(parcatsViewModel.dimensionSelection.selectAll('g.category'));\n    styleBandsNoHover(parcatsViewModel.dimensionSelection.selectAll('g.category').selectAll('rect.bandrect'));\n\n    // Remove hover label\n    Fx.loneUnhover(parcatsViewModel.graphDiv._fullLayout._hoverlayer.node());\n\n    // Restore path order\n    parcatsViewModel.pathSelection.sort(compareRawColor);\n\n    // Emit unhover event\n    if (parcatsViewModel.hoverinfoItems.indexOf('skip') === -1) {\n      var hoveron = bandViewModel.parcatsViewModel.hoveron;\n      var bandElement = this;\n\n      // Handle style and events\n      if (hoveron === 'color') {\n        emitPointsEventColorHovermode(bandElement, 'plotly_unhover', d3.event);\n      } else {\n        emitPointsEventCategoryHovermode(bandElement, 'plotly_unhover', d3.event);\n      }\n    }\n  }\n}\n\n/**\n * Handle dimension drag start\n * @param {DimensionViewModel} d\n */\nfunction dragDimensionStart(d) {\n  // Check if dragging is supported\n  if (d.parcatsViewModel.arrangement === 'fixed') {\n    return;\n  }\n\n  // Save off initial drag indexes for dimension\n  d.dragDimensionDisplayInd = d.model.displayInd;\n  d.initialDragDimensionDisplayInds = d.parcatsViewModel.model.dimensions.map(function (d) {\n    return d.displayInd;\n  });\n  d.dragHasMoved = false;\n\n  // Check for category hit\n  d.dragCategoryDisplayInd = null;\n  d3.select(this).selectAll('g.category').select('rect.catrect').each( /** @param {CategoryViewModel} catViewModel */\n  function (catViewModel) {\n    var catMouseX = d3.mouse(this)[0];\n    var catMouseY = d3.mouse(this)[1];\n    if (-2 <= catMouseX && catMouseX <= catViewModel.width + 2 && -2 <= catMouseY && catMouseY <= catViewModel.height + 2) {\n      // Save off initial drag indexes for categories\n      d.dragCategoryDisplayInd = catViewModel.model.displayInd;\n      d.initialDragCategoryDisplayInds = d.model.categories.map(function (c) {\n        return c.displayInd;\n      });\n\n      // Initialize categories dragY to be the current y position\n      catViewModel.model.dragY = catViewModel.y;\n\n      // Raise category\n      Lib.raiseToTop(this.parentNode);\n\n      // Get band element\n      d3.select(this.parentNode).selectAll('rect.bandrect')\n      /** @param {CategoryBandViewModel} bandViewModel */.each(function (bandViewModel) {\n        if (bandViewModel.y < catMouseY && catMouseY <= bandViewModel.y + bandViewModel.height) {\n          d.potentialClickBand = this;\n        }\n      });\n    }\n  });\n\n  // Update toplevel drag dimension\n  d.parcatsViewModel.dragDimension = d;\n\n  // Remove hover label if any\n  Fx.loneUnhover(d.parcatsViewModel.graphDiv._fullLayout._hoverlayer.node());\n}\n\n/**\n * Handle dimension drag\n * @param {DimensionViewModel} d\n */\nfunction dragDimension(d) {\n  // Check if dragging is supported\n  if (d.parcatsViewModel.arrangement === 'fixed') {\n    return;\n  }\n  d.dragHasMoved = true;\n  if (d.dragDimensionDisplayInd === null) {\n    return;\n  }\n  var dragDimInd = d.dragDimensionDisplayInd;\n  var prevDimInd = dragDimInd - 1;\n  var nextDimInd = dragDimInd + 1;\n  var dragDimension = d.parcatsViewModel.dimensions[dragDimInd];\n\n  // Update category\n  if (d.dragCategoryDisplayInd !== null) {\n    var dragCategory = dragDimension.categories[d.dragCategoryDisplayInd];\n\n    // Update dragY by dy\n    dragCategory.model.dragY += d3.event.dy;\n    var categoryY = dragCategory.model.dragY;\n\n    // Check for category drag swaps\n    var catDisplayInd = dragCategory.model.displayInd;\n    var dimCategoryViews = dragDimension.categories;\n    var catAbove = dimCategoryViews[catDisplayInd - 1];\n    var catBelow = dimCategoryViews[catDisplayInd + 1];\n\n    // Check for overlap above\n    if (catAbove !== undefined) {\n      if (categoryY < catAbove.y + catAbove.height / 2.0) {\n        // Swap display inds\n        dragCategory.model.displayInd = catAbove.model.displayInd;\n        catAbove.model.displayInd = catDisplayInd;\n      }\n    }\n    if (catBelow !== undefined) {\n      if (categoryY + dragCategory.height > catBelow.y + catBelow.height / 2.0) {\n        // Swap display inds\n        dragCategory.model.displayInd = catBelow.model.displayInd;\n        catBelow.model.displayInd = catDisplayInd;\n      }\n    }\n\n    // Update category drag display index\n    d.dragCategoryDisplayInd = dragCategory.model.displayInd;\n  }\n\n  // Update dimension position\n  if (d.dragCategoryDisplayInd === null || d.parcatsViewModel.arrangement === 'freeform') {\n    dragDimension.model.dragX = d3.event.x;\n\n    // Check for dimension swaps\n    var prevDimension = d.parcatsViewModel.dimensions[prevDimInd];\n    var nextDimension = d.parcatsViewModel.dimensions[nextDimInd];\n    if (prevDimension !== undefined) {\n      if (dragDimension.model.dragX < prevDimension.x + prevDimension.width) {\n        // Swap display inds\n        dragDimension.model.displayInd = prevDimension.model.displayInd;\n        prevDimension.model.displayInd = dragDimInd;\n      }\n    }\n    if (nextDimension !== undefined) {\n      if (dragDimension.model.dragX + dragDimension.width > nextDimension.x) {\n        // Swap display inds\n        dragDimension.model.displayInd = nextDimension.model.displayInd;\n        nextDimension.model.displayInd = d.dragDimensionDisplayInd;\n      }\n    }\n\n    // Update drag display index\n    d.dragDimensionDisplayInd = dragDimension.model.displayInd;\n  }\n\n  // Update view models\n  updateDimensionViewModels(d.parcatsViewModel);\n  updatePathViewModels(d.parcatsViewModel);\n\n  // Update svg geometry\n  updateSvgCategories(d.parcatsViewModel);\n  updateSvgPaths(d.parcatsViewModel);\n}\n\n/**\n * Handle dimension drag end\n * @param {DimensionViewModel} d\n */\nfunction dragDimensionEnd(d) {\n  // Check if dragging is supported\n  if (d.parcatsViewModel.arrangement === 'fixed') {\n    return;\n  }\n  if (d.dragDimensionDisplayInd === null) {\n    return;\n  }\n  d3.select(this).selectAll('text').attr('font-weight', 'normal');\n\n  // Compute restyle command\n  // -----------------------\n  var restyleData = {};\n  var traceInd = getTraceIndex(d.parcatsViewModel);\n\n  // ### Handle dimension reordering ###\n  var finalDragDimensionDisplayInds = d.parcatsViewModel.model.dimensions.map(function (d) {\n    return d.displayInd;\n  });\n  var anyDimsReordered = d.initialDragDimensionDisplayInds.some(function (initDimDisplay, dimInd) {\n    return initDimDisplay !== finalDragDimensionDisplayInds[dimInd];\n  });\n  if (anyDimsReordered) {\n    finalDragDimensionDisplayInds.forEach(function (finalDimDisplay, dimInd) {\n      var containerInd = d.parcatsViewModel.model.dimensions[dimInd].containerInd;\n      restyleData['dimensions[' + containerInd + '].displayindex'] = finalDimDisplay;\n    });\n  }\n\n  // ### Handle category reordering ###\n  var anyCatsReordered = false;\n  if (d.dragCategoryDisplayInd !== null) {\n    var finalDragCategoryDisplayInds = d.model.categories.map(function (c) {\n      return c.displayInd;\n    });\n    anyCatsReordered = d.initialDragCategoryDisplayInds.some(function (initCatDisplay, catInd) {\n      return initCatDisplay !== finalDragCategoryDisplayInds[catInd];\n    });\n    if (anyCatsReordered) {\n      // Sort a shallow copy of the category models by display index\n      var sortedCategoryModels = d.model.categories.slice().sort(function (a, b) {\n        return a.displayInd - b.displayInd;\n      });\n\n      // Get new categoryarray and ticktext values\n      var newCategoryArray = sortedCategoryModels.map(function (v) {\n        return v.categoryValue;\n      });\n      var newCategoryLabels = sortedCategoryModels.map(function (v) {\n        return v.categoryLabel;\n      });\n      restyleData['dimensions[' + d.model.containerInd + '].categoryarray'] = [newCategoryArray];\n      restyleData['dimensions[' + d.model.containerInd + '].ticktext'] = [newCategoryLabels];\n      restyleData['dimensions[' + d.model.containerInd + '].categoryorder'] = 'array';\n    }\n  }\n\n  // Handle potential click event\n  // ----------------------------\n  if (d.parcatsViewModel.hoverinfoItems.indexOf('skip') === -1) {\n    if (!d.dragHasMoved && d.potentialClickBand) {\n      if (d.parcatsViewModel.hoveron === 'color') {\n        emitPointsEventColorHovermode(d.potentialClickBand, 'plotly_click', d3.event.sourceEvent);\n      } else {\n        emitPointsEventCategoryHovermode(d.potentialClickBand, 'plotly_click', d3.event.sourceEvent);\n      }\n    }\n  }\n\n  // Nullify drag states\n  // -------------------\n  d.model.dragX = null;\n  if (d.dragCategoryDisplayInd !== null) {\n    var dragCategory = d.parcatsViewModel.dimensions[d.dragDimensionDisplayInd].categories[d.dragCategoryDisplayInd];\n    dragCategory.model.dragY = null;\n    d.dragCategoryDisplayInd = null;\n  }\n  d.dragDimensionDisplayInd = null;\n  d.parcatsViewModel.dragDimension = null;\n  d.dragHasMoved = null;\n  d.potentialClickBand = null;\n\n  // Update view models\n  // ------------------\n  updateDimensionViewModels(d.parcatsViewModel);\n  updatePathViewModels(d.parcatsViewModel);\n\n  // Perform transition\n  // ------------------\n  var transition = d3.transition().duration(300).ease('cubic-in-out');\n  transition.each(function () {\n    updateSvgCategories(d.parcatsViewModel, true);\n    updateSvgPaths(d.parcatsViewModel, true);\n  }).each('end', function () {\n    if (anyDimsReordered || anyCatsReordered) {\n      // Perform restyle if the order of categories or dimensions changed\n      Plotly.restyle(d.parcatsViewModel.graphDiv, restyleData, [traceInd]);\n    }\n  });\n}\n\n/**\n *\n * @param {ParcatsViewModel} parcatsViewModel\n */\nfunction getTraceIndex(parcatsViewModel) {\n  var traceInd;\n  var allTraces = parcatsViewModel.graphDiv._fullData;\n  for (var i = 0; i < allTraces.length; i++) {\n    if (parcatsViewModel.key === allTraces[i].uid) {\n      traceInd = i;\n      break;\n    }\n  }\n  return traceInd;\n}\n\n/** Update the svg paths for view model\n * @param {ParcatsViewModel} parcatsViewModel\n * @param {boolean} hasTransition Whether to update element with transition\n */\nfunction updateSvgPaths(parcatsViewModel, hasTransition) {\n  if (hasTransition === undefined) {\n    hasTransition = false;\n  }\n  function transition(selection) {\n    return hasTransition ? selection.transition() : selection;\n  }\n\n  // Update binding\n  parcatsViewModel.pathSelection.data(function (d) {\n    return d.paths;\n  }, key);\n\n  // Update paths\n  transition(parcatsViewModel.pathSelection).attr('d', function (d) {\n    return d.svgD;\n  });\n}\n\n/** Update the svg paths for view model\n * @param {ParcatsViewModel} parcatsViewModel\n * @param {boolean} hasTransition Whether to update element with transition\n */\nfunction updateSvgCategories(parcatsViewModel, hasTransition) {\n  if (hasTransition === undefined) {\n    hasTransition = false;\n  }\n  function transition(selection) {\n    return hasTransition ? selection.transition() : selection;\n  }\n\n  // Update binding\n  parcatsViewModel.dimensionSelection.data(function (d) {\n    return d.dimensions;\n  }, key);\n  var categorySelection = parcatsViewModel.dimensionSelection.selectAll('g.category').data(function (d) {\n    return d.categories;\n  }, key);\n\n  // Update dimension position\n  transition(parcatsViewModel.dimensionSelection).attr('transform', function (d) {\n    return strTranslate(d.x, 0);\n  });\n\n  // Update category position\n  transition(categorySelection).attr('transform', function (d) {\n    return strTranslate(0, d.y);\n  });\n  var dimLabelSelection = categorySelection.select('.dimlabel');\n\n  // ### Update dimension label\n  // Only the top-most display category should have the dimension label\n  dimLabelSelection.text(function (d, i) {\n    if (i === 0) {\n      // Add dimension label above topmost category\n      return d.parcatsViewModel.model.dimensions[d.model.dimensionInd].dimensionLabel;\n    } else {\n      return null;\n    }\n  });\n\n  // Update category label\n  // Categories in the right-most display dimension have their labels on\n  // the right, all others on the left\n  var catLabelSelection = categorySelection.select('.catlabel');\n  catLabelSelection.attr('text-anchor', function (d) {\n    if (catInRightDim(d)) {\n      // Place label to the right of category\n      return 'start';\n    } else {\n      // Place label to the left of category\n      return 'end';\n    }\n  }).attr('x', function (d) {\n    if (catInRightDim(d)) {\n      // Place label to the right of category\n      return d.width + 5;\n    } else {\n      // Place label to the left of category\n      return -5;\n    }\n  }).each(function (d) {\n    // Update attriubutes of <tspan> elements\n    var newX;\n    var newAnchor;\n    if (catInRightDim(d)) {\n      // Place label to the right of category\n      newX = d.width + 5;\n      newAnchor = 'start';\n    } else {\n      // Place label to the left of category\n      newX = -5;\n      newAnchor = 'end';\n    }\n    d3.select(this).selectAll('tspan').attr('x', newX).attr('text-anchor', newAnchor);\n  });\n\n  // Update bands\n  // Initialize color band rects\n  var bandSelection = categorySelection.selectAll('rect.bandrect').data( /** @param {CategoryViewModel} catViewModel*/\n  function (catViewModel) {\n    return catViewModel.bands;\n  }, key);\n  var bandsSelectionEnter = bandSelection.enter().append('rect').attr('class', 'bandrect').attr('cursor', 'move').attr('stroke-opacity', 0).attr('fill', function (d) {\n    return d.color;\n  }).attr('fill-opacity', 0);\n  bandSelection.attr('fill', function (d) {\n    return d.color;\n  }).attr('width', function (d) {\n    return d.width;\n  }).attr('height', function (d) {\n    return d.height;\n  }).attr('y', function (d) {\n    return d.y;\n  });\n  styleBandsNoHover(bandsSelectionEnter);\n\n  // Raise bands to the top\n  bandSelection.each(function () {\n    Lib.raiseToTop(this);\n  });\n\n  // Remove unused bands\n  bandSelection.exit().remove();\n}\n\n/**\n * Create a ParcatsViewModel traces\n * @param {Object} graphDiv\n *  Top-level graph div element\n * @param {Layout} layout\n *  SVG layout object\n * @param {Array.<ParcatsModel>} wrappedParcatsModel\n *  Wrapped ParcatsModel for this trace\n * @return {ParcatsViewModel}\n */\nfunction createParcatsViewModel(graphDiv, layout, wrappedParcatsModel) {\n  // Unwrap model\n  var parcatsModel = wrappedParcatsModel[0];\n\n  // Compute margin\n  var margin = layout.margin || {\n    l: 80,\n    r: 80,\n    t: 100,\n    b: 80\n  };\n\n  // Compute pixel position/extents\n  var trace = parcatsModel.trace;\n  var domain = trace.domain;\n  var figureWidth = layout.width;\n  var figureHeight = layout.height;\n  var traceWidth = Math.floor(figureWidth * (domain.x[1] - domain.x[0]));\n  var traceHeight = Math.floor(figureHeight * (domain.y[1] - domain.y[0]));\n  var traceX = domain.x[0] * figureWidth + margin.l;\n  var traceY = layout.height - domain.y[1] * layout.height + margin.t;\n\n  // Handle path shape\n  // -----------------\n  var pathShape = trace.line.shape;\n\n  // Handle hover info\n  // -----------------\n  var hoverinfoItems;\n  if (trace.hoverinfo === 'all') {\n    hoverinfoItems = ['count', 'probability'];\n  } else {\n    hoverinfoItems = (trace.hoverinfo || '').split('+');\n  }\n\n  // Construct parcatsViewModel\n  // --------------------------\n  var parcatsViewModel = {\n    trace: trace,\n    key: trace.uid,\n    model: parcatsModel,\n    x: traceX,\n    y: traceY,\n    width: traceWidth,\n    height: traceHeight,\n    hoveron: trace.hoveron,\n    hoverinfoItems: hoverinfoItems,\n    arrangement: trace.arrangement,\n    bundlecolors: trace.bundlecolors,\n    sortpaths: trace.sortpaths,\n    labelfont: trace.labelfont,\n    categorylabelfont: trace.tickfont,\n    pathShape: pathShape,\n    dragDimension: null,\n    margin: margin,\n    paths: [],\n    dimensions: [],\n    graphDiv: graphDiv,\n    traceSelection: null,\n    pathSelection: null,\n    dimensionSelection: null\n  };\n\n  // Update dimension view models if we have at least 1 dimension\n  if (parcatsModel.dimensions) {\n    updateDimensionViewModels(parcatsViewModel);\n\n    // Update path view models if we have at least 2 dimensions\n    updatePathViewModels(parcatsViewModel);\n  }\n  // Inside a categories view model\n  return parcatsViewModel;\n}\n\n/**\n * Build the SVG string to represents a parallel categories path\n * @param {Array.<Number>} leftXPositions\n *  Array of the x positions of the left edge of each dimension (in display order)\n * @param {Array.<Number>} pathYs\n *  Array of the y positions of the top of the path at each dimension (in display order)\n * @param {Array.<Number>} dimWidths\n *  Array of the widths of each dimension in display order\n * @param {Number} pathHeight\n *  The height of the path in pixels\n * @param {Number} curvature\n *  The curvature factor for the path. 0 results in a straight line and values greater than zero result in curved paths\n * @return {string}\n */\nfunction buildSvgPath(leftXPositions, pathYs, dimWidths, pathHeight, curvature) {\n  // Compute the x midpoint of each path segment\n  var xRefPoints1 = [];\n  var xRefPoints2 = [];\n  var refInterpolator;\n  var d;\n  for (d = 0; d < dimWidths.length - 1; d++) {\n    refInterpolator = interpolateNumber(dimWidths[d] + leftXPositions[d], leftXPositions[d + 1]);\n    xRefPoints1.push(refInterpolator(curvature));\n    xRefPoints2.push(refInterpolator(1 - curvature));\n  }\n\n  // Move to top of path on left edge of left-most category\n  var svgD = 'M ' + leftXPositions[0] + ',' + pathYs[0];\n\n  // Horizontal line to right edge\n  svgD += 'l' + dimWidths[0] + ',0 ';\n\n  // Horizontal line to right edge\n  for (d = 1; d < dimWidths.length; d++) {\n    // Curve to left edge of category\n    svgD += 'C' + xRefPoints1[d - 1] + ',' + pathYs[d - 1] + ' ' + xRefPoints2[d - 1] + ',' + pathYs[d] + ' ' + leftXPositions[d] + ',' + pathYs[d];\n\n    // svgD += 'L' + leftXPositions[d] + ',' + pathYs[d];\n\n    // Horizontal line to right edge\n    svgD += 'l' + dimWidths[d] + ',0 ';\n  }\n\n  // Line down\n  svgD += 'l' + '0,' + pathHeight + ' ';\n\n  // Line to left edge of right-most category\n  svgD += 'l -' + dimWidths[dimWidths.length - 1] + ',0 ';\n  for (d = dimWidths.length - 2; d >= 0; d--) {\n    // Curve to right edge of category\n    svgD += 'C' + xRefPoints2[d] + ',' + (pathYs[d + 1] + pathHeight) + ' ' + xRefPoints1[d] + ',' + (pathYs[d] + pathHeight) + ' ' + (leftXPositions[d] + dimWidths[d]) + ',' + (pathYs[d] + pathHeight);\n\n    // svgD += 'L' + (leftXPositions[d] + dimWidths[d]) + ',' + (pathYs[d] + pathHeight);\n\n    // Horizontal line to right edge\n    svgD += 'l-' + dimWidths[d] + ',0 ';\n  }\n\n  // Close path\n  svgD += 'Z';\n  return svgD;\n}\n\n/**\n * Update the path view models based on the dimension view models in a ParcatsViewModel\n *\n * @param {ParcatsViewModel} parcatsViewModel\n *  View model for trace\n */\nfunction updatePathViewModels(parcatsViewModel) {\n  // Initialize an array of the y position of the top of the next path to be added to each category.\n  //\n  // nextYPositions[d][c] is the y position of the next path through category with index c of dimension with index d\n  var dimensionViewModels = parcatsViewModel.dimensions;\n  var parcatsModel = parcatsViewModel.model;\n  var nextYPositions = dimensionViewModels.map(function (d) {\n    return d.categories.map(function (c) {\n      return c.y;\n    });\n  });\n\n  // Array from category index to category display index for each true dimension index\n  var catToDisplayIndPerDim = parcatsViewModel.model.dimensions.map(function (d) {\n    return d.categories.map(function (c) {\n      return c.displayInd;\n    });\n  });\n\n  // Array from true dimension index to dimension display index\n  var dimToDisplayInd = parcatsViewModel.model.dimensions.map(function (d) {\n    return d.displayInd;\n  });\n  var displayToDimInd = parcatsViewModel.dimensions.map(function (d) {\n    return d.model.dimensionInd;\n  });\n\n  // Array of the x position of the left edge of the rectangles for each dimension\n  var leftXPositions = dimensionViewModels.map(function (d) {\n    return d.x;\n  });\n\n  // Compute dimension widths\n  var dimWidths = dimensionViewModels.map(function (d) {\n    return d.width;\n  });\n\n  // Build sorted Array of PathModel objects\n  var pathModels = [];\n  for (var p in parcatsModel.paths) {\n    if (parcatsModel.paths.hasOwnProperty(p)) {\n      pathModels.push(parcatsModel.paths[p]);\n    }\n  }\n\n  // Compute category display inds to use for sorting paths\n  function pathDisplayCategoryInds(pathModel) {\n    var dimensionInds = pathModel.categoryInds.map(function (catInd, dimInd) {\n      return catToDisplayIndPerDim[dimInd][catInd];\n    });\n    var displayInds = displayToDimInd.map(function (dimInd) {\n      return dimensionInds[dimInd];\n    });\n    return displayInds;\n  }\n\n  // Sort in ascending order by display index array\n  pathModels.sort(function (v1, v2) {\n    // Build display inds for each path\n    var sortArray1 = pathDisplayCategoryInds(v1);\n    var sortArray2 = pathDisplayCategoryInds(v2);\n\n    // Handle path sort order\n    if (parcatsViewModel.sortpaths === 'backward') {\n      sortArray1.reverse();\n      sortArray2.reverse();\n    }\n\n    // Append the first value index of the path to break ties\n    sortArray1.push(v1.valueInds[0]);\n    sortArray2.push(v2.valueInds[0]);\n\n    // Handle color bundling\n    if (parcatsViewModel.bundlecolors) {\n      // Prepend sort array with the raw color value\n      sortArray1.unshift(v1.rawColor);\n      sortArray2.unshift(v2.rawColor);\n    }\n\n    // colors equal, sort by display categories\n    if (sortArray1 < sortArray2) {\n      return -1;\n    }\n    if (sortArray1 > sortArray2) {\n      return 1;\n    }\n    return 0;\n  });\n\n  // Create path models\n  var pathViewModels = new Array(pathModels.length);\n  var totalCount = dimensionViewModels[0].model.count;\n  var totalHeight = dimensionViewModels[0].categories.map(function (c) {\n    return c.height;\n  }).reduce(function (v1, v2) {\n    return v1 + v2;\n  });\n  for (var pathNumber = 0; pathNumber < pathModels.length; pathNumber++) {\n    var pathModel = pathModels[pathNumber];\n    var pathHeight;\n    if (totalCount > 0) {\n      pathHeight = totalHeight * (pathModel.count / totalCount);\n    } else {\n      pathHeight = 0;\n    }\n\n    // Build path y coords\n    var pathYs = new Array(nextYPositions.length);\n    for (var d = 0; d < pathModel.categoryInds.length; d++) {\n      var catInd = pathModel.categoryInds[d];\n      var catDisplayInd = catToDisplayIndPerDim[d][catInd];\n      var dimDisplayInd = dimToDisplayInd[d];\n\n      // Update next y position\n      pathYs[dimDisplayInd] = nextYPositions[dimDisplayInd][catDisplayInd];\n      nextYPositions[dimDisplayInd][catDisplayInd] += pathHeight;\n\n      // Update category color information\n      var catViewModle = parcatsViewModel.dimensions[dimDisplayInd].categories[catDisplayInd];\n      var numBands = catViewModle.bands.length;\n      var lastCatBand = catViewModle.bands[numBands - 1];\n      if (lastCatBand === undefined || pathModel.rawColor !== lastCatBand.rawColor) {\n        // Create a new band\n        var bandY = lastCatBand === undefined ? 0 : lastCatBand.y + lastCatBand.height;\n        catViewModle.bands.push({\n          key: bandY,\n          color: pathModel.color,\n          rawColor: pathModel.rawColor,\n          height: pathHeight,\n          width: catViewModle.width,\n          count: pathModel.count,\n          y: bandY,\n          categoryViewModel: catViewModle,\n          parcatsViewModel: parcatsViewModel\n        });\n      } else {\n        // Extend current band\n        var currentBand = catViewModle.bands[numBands - 1];\n        currentBand.height += pathHeight;\n        currentBand.count += pathModel.count;\n      }\n    }\n\n    // build svg path\n    var svgD;\n    if (parcatsViewModel.pathShape === 'hspline') {\n      svgD = buildSvgPath(leftXPositions, pathYs, dimWidths, pathHeight, 0.5);\n    } else {\n      svgD = buildSvgPath(leftXPositions, pathYs, dimWidths, pathHeight, 0);\n    }\n    pathViewModels[pathNumber] = {\n      key: pathModel.valueInds[0],\n      model: pathModel,\n      height: pathHeight,\n      leftXs: leftXPositions,\n      topYs: pathYs,\n      dimWidths: dimWidths,\n      svgD: svgD,\n      parcatsViewModel: parcatsViewModel\n    };\n  }\n  parcatsViewModel.paths = pathViewModels;\n\n  // * @property key\n  // *  Unique key for this model\n  // * @property {PathModel} model\n  // *  Source path model\n  // * @property {Number} height\n  // *  Height of this path (pixels)\n  // * @property {String} svgD\n  // *  SVG path \"d\" attribute string\n}\n\n/**\n * Update the dimension view models based on the dimension models in a ParcatsViewModel\n *\n * @param {ParcatsViewModel} parcatsViewModel\n *  View model for trace\n */\nfunction updateDimensionViewModels(parcatsViewModel) {\n  // Compute dimension ordering\n  var dimensionsIndInfo = parcatsViewModel.model.dimensions.map(function (d) {\n    return {\n      displayInd: d.displayInd,\n      dimensionInd: d.dimensionInd\n    };\n  });\n  dimensionsIndInfo.sort(function (a, b) {\n    return a.displayInd - b.displayInd;\n  });\n  var dimensions = [];\n  for (var displayInd in dimensionsIndInfo) {\n    var dimensionInd = dimensionsIndInfo[displayInd].dimensionInd;\n    var dimModel = parcatsViewModel.model.dimensions[dimensionInd];\n    dimensions.push(createDimensionViewModel(parcatsViewModel, dimModel));\n  }\n  parcatsViewModel.dimensions = dimensions;\n}\n\n/**\n * Create a parcats DimensionViewModel\n *\n * @param {ParcatsViewModel} parcatsViewModel\n *  View model for trace\n * @param {DimensionModel} dimensionModel\n * @return {DimensionViewModel}\n */\nfunction createDimensionViewModel(parcatsViewModel, dimensionModel) {\n  // Compute dimension x position\n  var categoryLabelPad = 40;\n  var dimWidth = 16;\n  var numDimensions = parcatsViewModel.model.dimensions.length;\n  var displayInd = dimensionModel.displayInd;\n\n  // Compute x coordinate values\n  var dimDx;\n  var dimX0;\n  var dimX;\n  if (numDimensions > 1) {\n    dimDx = (parcatsViewModel.width - 2 * categoryLabelPad - dimWidth) / (numDimensions - 1);\n  } else {\n    dimDx = 0;\n  }\n  dimX0 = categoryLabelPad;\n  dimX = dimX0 + dimDx * displayInd;\n\n  // Compute categories\n  var categories = [];\n  var maxCats = parcatsViewModel.model.maxCats;\n  var numCats = dimensionModel.categories.length;\n  var catSpacing = 8;\n  var totalCount = dimensionModel.count;\n  var totalHeight = parcatsViewModel.height - catSpacing * (maxCats - 1);\n  var nextCatHeight;\n  var nextCatModel;\n  var nextCat;\n  var catInd;\n  var catDisplayInd;\n\n  // Compute starting Y offset\n  var nextCatY = (maxCats - numCats) * catSpacing / 2.0;\n\n  // Compute category ordering\n  var categoryIndInfo = dimensionModel.categories.map(function (c) {\n    return {\n      displayInd: c.displayInd,\n      categoryInd: c.categoryInd\n    };\n  });\n  categoryIndInfo.sort(function (a, b) {\n    return a.displayInd - b.displayInd;\n  });\n  for (catDisplayInd = 0; catDisplayInd < numCats; catDisplayInd++) {\n    catInd = categoryIndInfo[catDisplayInd].categoryInd;\n    nextCatModel = dimensionModel.categories[catInd];\n    if (totalCount > 0) {\n      nextCatHeight = nextCatModel.count / totalCount * totalHeight;\n    } else {\n      nextCatHeight = 0;\n    }\n    nextCat = {\n      key: nextCatModel.valueInds[0],\n      model: nextCatModel,\n      width: dimWidth,\n      height: nextCatHeight,\n      y: nextCatModel.dragY !== null ? nextCatModel.dragY : nextCatY,\n      bands: [],\n      parcatsViewModel: parcatsViewModel\n    };\n    nextCatY = nextCatY + nextCatHeight + catSpacing;\n    categories.push(nextCat);\n  }\n  return {\n    key: dimensionModel.dimensionInd,\n    x: dimensionModel.dragX !== null ? dimensionModel.dragX : dimX,\n    y: 0,\n    width: dimWidth,\n    model: dimensionModel,\n    categories: categories,\n    parcatsViewModel: parcatsViewModel,\n    dragCategoryDisplayInd: null,\n    dragDimensionDisplayInd: null,\n    initialDragDimensionDisplayInds: null,\n    initialDragCategoryDisplayInds: null,\n    dragHasMoved: null,\n    potentialClickBand: null\n  };\n}\n\n// JSDoc typedefs\n// ==============\n/**\n * @typedef {Object} Layout\n *  Object containing svg layout information\n *\n * @property {Number} width (pixels)\n *  Usable width for Figure (after margins are removed)\n * @property {Number} height (pixels)\n *  Usable height for Figure (after margins are removed)\n * @property {Margin} margin\n *  Margin around the Figure (pixels)\n */\n\n/**\n * @typedef {Object} Margin\n *  Object containing padding information in pixels\n *\n * @property {Number} t\n *  Top margin\n * @property {Number} r\n *  Right margin\n * @property {Number} b\n *  Bottom margin\n * @property {Number} l\n *  Left margin\n */\n\n/**\n * @typedef {Object} Font\n *  Object containing font information\n *\n * @property {Number} size: Font size\n * @property {String} color: Font color\n * @property {String} family: Font family\n */\n\n/**\n * @typedef {Object} ParcatsViewModel\n *  Object containing calculated parcats view information\n *\n *  These are quantities that require Layout information to calculate\n * @property key\n *  Unique key for this model\n * @property {ParcatsModel} model\n *  Source parcats model\n * @property {Array.<DimensionViewModel>} dimensions\n *  Array of dimension view models\n * @property {Number} width\n *  Width for this trace (pixels)\n * @property {Number} height\n *  Height for this trace (pixels)\n * @property {Number} x\n *  X position of this trace with respect to the Figure (pixels)\n * @property {Number} y\n *  Y position of this trace with respect to the Figure (pixels)\n * @property {String} hoveron\n *  Hover interaction mode. One of: 'category', 'color', or 'dimension'\n * @property {Array.<String>} hoverinfoItems\n *  Info to display on hover. Array with a combination of 'counts' and/or 'probabilities', or 'none', or 'skip'\n * @property {String} arrangement\n *  Category arrangement. One of: 'perpendicular', 'freeform', or 'fixed'\n * @property {Boolean} bundlecolors\n *  Whether paths should be sorted so that like colors are bundled together as they pass through categories\n * @property {String} sortpaths\n *  If 'forward' then sort paths based on dimensions from left to right. If 'backward' sort based on dimensions\n *  from right to left\n * @property {Font} labelfont\n *  Font for the dimension labels\n * @property {Font} categorylabelfont\n *  Font for the category labels\n * @property {String} pathShape\n *  The shape of the paths. Either 'linear' or 'hspline'.\n * @property {DimensionViewModel|null} dragDimension\n *  Dimension currently being dragged. Null if no drag in progress\n * @property {Margin} margin\n *  Margin around the Figure\n * @property {Object} graphDiv\n *  Top-level graph div element\n * @property {Object} traceSelection\n *  D3 selection of this view models trace group element\n * @property {Object} pathSelection\n *  D3 selection of this view models path elements\n * @property {Object} dimensionSelection\n *  D3 selection of this view models dimension group element\n */\n\n/**\n * @typedef {Object} DimensionViewModel\n *  Object containing calculated parcats dimension view information\n *\n *  These are quantities that require Layout information to calculate\n * @property key\n *  Unique key for this model\n * @property {DimensionModel} model\n *  Source dimension model\n * @property {Number} x\n *  X position of the center of this dimension with respect to the Figure (pixels)\n * @property {Number} y\n *  Y position of the top of this dimension with respect to the Figure (pixels)\n * @property {Number} width\n *  Width of categories in this dimension (pixels)\n * @property {ParcatsViewModel} parcatsViewModel\n *  The parent trace's view model\n * @property {Array.<CategoryViewModel>} categories\n *  Dimensions category view models\n * @property {Number|null} dragCategoryDisplayInd\n *  Display index of category currently being dragged. null if no category is being dragged\n * @property {Number|null} dragDimensionDisplayInd\n *  Display index of the dimension being dragged. null if no dimension is being dragged\n * @property {Array.<Number>|null} initialDragDimensionDisplayInds\n *  Dimensions display indexes at the beginning of the current drag. null if no dimension is being dragged\n * @property {Array.<Number>|null} initialDragCategoryDisplayInds\n *  Category display indexes for the at the beginning of the current drag. null if no category is being dragged\n * @property {HTMLElement} potentialClickBand\n *  Band under mouse when current drag began. If no drag movement takes place then a click will be emitted for this\n *  band. Null if not drag in progress.\n * @property {Boolean} dragHasMoved\n *  True if there is an active drag and the drag has moved. If drag doesn't move before being ended then\n *  this may be interpreted as a click. Null if no drag in progress\n */\n\n/**\n * @typedef {Object} CategoryViewModel\n *  Object containing calculated parcats category view information\n *\n *  These are quantities that require Layout information to calculate\n * @property key\n *  Unique key for this model\n * @property {CategoryModel} model\n *  Source category model\n * @property {Number} width\n *  Width for this category (pixels)\n * @property {Number} height\n *  Height for this category (pixels)\n * @property {Number} y\n *  Y position of this cateogry with respect to the Figure (pixels)\n * @property {Array.<CategoryBandViewModel>} bands\n *  Array of color bands inside the category\n * @property {ParcatsViewModel} parcatsViewModel\n *  The parent trace's view model\n */\n\n/**\n * @typedef {Object} CategoryBandViewModel\n *  Object containing calculated category band information. A category band is a region inside a category covering\n *  paths of a single color\n *\n * @property key\n *  Unique key for this model\n * @property color\n *  Band color\n * @property rawColor\n *  Raw color value for band\n * @property {Number} width\n *  Band width\n * @property {Number} height\n *  Band height\n * @property {Number} y\n *  Y position of top of the band with respect to the category\n * @property {Number} count\n *  The number of samples represented by the band\n * @property {CategoryViewModel} categoryViewModel\n *  The parent categorie's view model\n * @property {ParcatsViewModel} parcatsViewModel\n *  The parent trace's view model\n */\n\n/**\n * @typedef {Object} PathViewModel\n *  Object containing calculated parcats path view information\n *\n *  These are quantities that require Layout information to calculate\n * @property key\n *  Unique key for this model\n * @property {PathModel} model\n *  Source path model\n * @property {Number} height\n *  Height of this path (pixels)\n * @property {Array.<Number>} leftXs\n *  The x position of the left edge of each display dimension\n * @property {Array.<Number>} topYs\n *  The y position of the top of the path for each display dimension\n * @property {Array.<Number>} dimWidths\n *  The width of each display dimension\n * @property {String} svgD\n *  SVG path \"d\" attribute string\n * @property {ParcatsViewModel} parcatsViewModel\n *  The parent trace's view model\n */\n\n/***/ }),\n\n/***/ 45784:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2860323__) {\n\n\"use strict\";\n\n\nvar parcats = __nested_webpack_require_2860323__(45460);\n\n/**\n * Create / update parcat traces\n *\n * @param {Object} graphDiv\n * @param {Array.<ParcatsModel>} parcatsModels\n */\nmodule.exports = function plot(graphDiv, parcatsModels, transitionOpts, makeOnCompleteCallback) {\n  var fullLayout = graphDiv._fullLayout;\n  var svg = fullLayout._paper;\n  var size = fullLayout._size;\n  parcats(graphDiv, svg, parcatsModels, {\n    width: size.w,\n    height: size.h,\n    margin: {\n      t: size.t,\n      r: size.r,\n      b: size.b,\n      l: size.l\n    }\n  }, transitionOpts, makeOnCompleteCallback);\n};\n\n/***/ }),\n\n/***/ 73362:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2861018__) {\n\n\"use strict\";\n\n\nvar colorScaleAttrs = __nested_webpack_require_2861018__(50693);\nvar axesAttrs = __nested_webpack_require_2861018__(13838);\nvar fontAttrs = __nested_webpack_require_2861018__(41940);\nvar domainAttrs = (__nested_webpack_require_2861018__(27670)/* .attributes */ .Y);\nvar extendFlat = (__nested_webpack_require_2861018__(1426).extendFlat);\nvar templatedArray = (__nested_webpack_require_2861018__(44467).templatedArray);\nmodule.exports = {\n  domain: domainAttrs({\n    name: 'parcoords',\n    trace: true,\n    editType: 'plot'\n  }),\n  labelangle: {\n    valType: 'angle',\n    dflt: 0,\n    editType: 'plot'\n  },\n  labelside: {\n    valType: 'enumerated',\n    values: ['top', 'bottom'],\n    dflt: 'top',\n    editType: 'plot'\n  },\n  labelfont: fontAttrs({\n    editType: 'plot'\n  }),\n  tickfont: fontAttrs({\n    editType: 'plot'\n  }),\n  rangefont: fontAttrs({\n    editType: 'plot'\n  }),\n  dimensions: templatedArray('dimension', {\n    label: {\n      valType: 'string',\n      editType: 'plot'\n    },\n    // TODO: better way to determine ordinal vs continuous axes,\n    // so users can use tickvals/ticktext with a continuous axis.\n    tickvals: extendFlat({}, axesAttrs.tickvals, {\n      editType: 'plot'\n    }),\n    ticktext: extendFlat({}, axesAttrs.ticktext, {\n      editType: 'plot'\n    }),\n    tickformat: extendFlat({}, axesAttrs.tickformat, {\n      editType: 'plot'\n    }),\n    visible: {\n      valType: 'boolean',\n      dflt: true,\n      editType: 'plot'\n    },\n    range: {\n      valType: 'info_array',\n      items: [{\n        valType: 'number',\n        editType: 'plot'\n      }, {\n        valType: 'number',\n        editType: 'plot'\n      }],\n      editType: 'plot'\n    },\n    constraintrange: {\n      valType: 'info_array',\n      freeLength: true,\n      dimensions: '1-2',\n      items: [{\n        valType: 'any',\n        editType: 'plot'\n      }, {\n        valType: 'any',\n        editType: 'plot'\n      }],\n      editType: 'plot'\n    },\n    multiselect: {\n      valType: 'boolean',\n      dflt: true,\n      editType: 'plot'\n    },\n    values: {\n      valType: 'data_array',\n      editType: 'calc'\n    },\n    editType: 'calc'\n  }),\n  line: extendFlat({\n    editType: 'calc'\n  }, colorScaleAttrs('line', {\n    // the default autocolorscale isn't quite usable for parcoords due to context ambiguity around 0 (grey, off-white)\n    // autocolorscale therefore defaults to false too, to avoid being overridden by the blue-white-red autocolor palette\n    colorscaleDflt: 'Viridis',\n    autoColorDflt: false,\n    editTypeOverride: 'calc'\n  })),\n  unselected: {\n    line: {\n      color: {\n        valType: 'color',\n        dflt: '#7f7f7f',\n        editType: 'plot'\n      },\n      opacity: {\n        valType: 'number',\n        min: 0,\n        max: 1,\n        dflt: 'auto',\n        editType: 'plot'\n      },\n      editType: 'plot'\n    },\n    editType: 'plot'\n  }\n};\n\n/***/ }),\n\n/***/ 57920:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2863898__) {\n\n\"use strict\";\n\n\nvar c = __nested_webpack_require_2863898__(25706);\nvar d3 = __nested_webpack_require_2863898__(39898);\nvar keyFun = (__nested_webpack_require_2863898__(28984).keyFun);\nvar repeat = (__nested_webpack_require_2863898__(28984).repeat);\nvar sortAsc = (__nested_webpack_require_2863898__(71828).sorterAsc);\nvar strTranslate = (__nested_webpack_require_2863898__(71828).strTranslate);\nvar snapRatio = c.bar.snapRatio;\nfunction snapOvershoot(v, vAdjacent) {\n  return v * (1 - snapRatio) + vAdjacent * snapRatio;\n}\nvar snapClose = c.bar.snapClose;\nfunction closeToCovering(v, vAdjacent) {\n  return v * (1 - snapClose) + vAdjacent * snapClose;\n}\n\n// snap for the low end of a range on an ordinal scale\n// on an ordinal scale, always show some overshoot from the exact value,\n// so it's clear we're covering it\n// find the interval we're in, and snap to 1/4 the distance to the next\n// these two could be unified at a slight loss of readability / perf\nfunction ordinalScaleSnap(isHigh, a, v, existingRanges) {\n  if (overlappingExisting(v, existingRanges)) return v;\n  var dir = isHigh ? -1 : 1;\n  var first = 0;\n  var last = a.length - 1;\n  if (dir < 0) {\n    var tmp = first;\n    first = last;\n    last = tmp;\n  }\n  var aHere = a[first];\n  var aPrev = aHere;\n  for (var i = first; dir * i < dir * last; i += dir) {\n    var nextI = i + dir;\n    var aNext = a[nextI];\n\n    // very close to the previous - snap down to it\n    if (dir * v < dir * closeToCovering(aHere, aNext)) return snapOvershoot(aHere, aPrev);\n    if (dir * v < dir * aNext || nextI === last) return snapOvershoot(aNext, aHere);\n    aPrev = aHere;\n    aHere = aNext;\n  }\n}\nfunction overlappingExisting(v, existingRanges) {\n  for (var i = 0; i < existingRanges.length; i++) {\n    if (v >= existingRanges[i][0] && v <= existingRanges[i][1]) return true;\n  }\n  return false;\n}\nfunction barHorizontalSetup(selection) {\n  selection.attr('x', -c.bar.captureWidth / 2).attr('width', c.bar.captureWidth);\n}\nfunction backgroundBarHorizontalSetup(selection) {\n  selection.attr('visibility', 'visible').style('visibility', 'visible').attr('fill', 'yellow').attr('opacity', 0);\n}\nfunction setHighlight(d) {\n  if (!d.brush.filterSpecified) {\n    return '0,' + d.height;\n  }\n  var pixelRanges = unitToPx(d.brush.filter.getConsolidated(), d.height);\n  var dashArray = [0]; // we start with a 0 length selection as filter ranges are inclusive, not exclusive\n  var p, sectionHeight, iNext;\n  var currentGap = pixelRanges.length ? pixelRanges[0][0] : null;\n  for (var i = 0; i < pixelRanges.length; i++) {\n    p = pixelRanges[i];\n    sectionHeight = p[1] - p[0];\n    dashArray.push(currentGap);\n    dashArray.push(sectionHeight);\n    iNext = i + 1;\n    if (iNext < pixelRanges.length) {\n      currentGap = pixelRanges[iNext][0] - p[1];\n    }\n  }\n  dashArray.push(d.height);\n  // d.height is added at the end to ensure that (1) we have an even number of dasharray points, MDN page says\n  // \"If an odd number of values is provided, then the list of values is repeated to yield an even number of values.\"\n  // and (2) it's _at least_ as long as the full height (even if range is minuscule and at the bottom) though this\n  // may not be necessary, maybe duplicating the last point would do too. But no harm in a longer dasharray than line.\n  return dashArray;\n}\nfunction unitToPx(unitRanges, height) {\n  return unitRanges.map(function (pr) {\n    return pr.map(function (v) {\n      return Math.max(0, v * height);\n    }).sort(sortAsc);\n  });\n}\n\n// is the cursor over the north, middle, or south of a bar?\n// the end handles extend over the last 10% of the bar\nfunction getRegion(fPix, y) {\n  var pad = c.bar.handleHeight;\n  if (y > fPix[1] + pad || y < fPix[0] - pad) return;\n  if (y >= 0.9 * fPix[1] + 0.1 * fPix[0]) return 'n';\n  if (y <= 0.9 * fPix[0] + 0.1 * fPix[1]) return 's';\n  return 'ns';\n}\nfunction clearCursor() {\n  d3.select(document.body).style('cursor', null);\n}\nfunction styleHighlight(selection) {\n  // stroke-dasharray is used to minimize the number of created DOM nodes, because the requirement calls for up to\n  // 1000 individual selections on an axis, and there can be 60 axes per parcoords, and multiple parcoords per\n  // dashboard. The technique is similar to https://codepen.io/monfera/pen/rLYqWR and using a `polyline` with\n  // multiple sections, or a `path` element via its `d` attribute would also be DOM-sparing alternatives.\n  selection.attr('stroke-dasharray', setHighlight);\n}\nfunction renderHighlight(root, tweenCallback) {\n  var bar = d3.select(root).selectAll('.highlight, .highlight-shadow');\n  var barToStyle = tweenCallback ? bar.transition().duration(c.bar.snapDuration).each('end', tweenCallback) : bar;\n  styleHighlight(barToStyle);\n}\nfunction getInterval(d, y) {\n  var b = d.brush;\n  var active = b.filterSpecified;\n  var closestInterval = NaN;\n  var out = {};\n  var i;\n  if (active) {\n    var height = d.height;\n    var intervals = b.filter.getConsolidated();\n    var pixIntervals = unitToPx(intervals, height);\n    var hoveredInterval = NaN;\n    var previousInterval = NaN;\n    var nextInterval = NaN;\n    for (i = 0; i <= pixIntervals.length; i++) {\n      var p = pixIntervals[i];\n      if (p && p[0] <= y && y <= p[1]) {\n        // over a bar\n        hoveredInterval = i;\n        break;\n      } else {\n        // between bars, or before/after the first/last bar\n        previousInterval = i ? i - 1 : NaN;\n        if (p && p[0] > y) {\n          nextInterval = i;\n          break; // no point continuing as intervals are non-overlapping and sorted; could use log search\n        }\n      }\n    }\n\n    closestInterval = hoveredInterval;\n    if (isNaN(closestInterval)) {\n      if (isNaN(previousInterval) || isNaN(nextInterval)) {\n        closestInterval = isNaN(previousInterval) ? nextInterval : previousInterval;\n      } else {\n        closestInterval = y - pixIntervals[previousInterval][1] < pixIntervals[nextInterval][0] - y ? previousInterval : nextInterval;\n      }\n    }\n    if (!isNaN(closestInterval)) {\n      var fPix = pixIntervals[closestInterval];\n      var region = getRegion(fPix, y);\n      if (region) {\n        out.interval = intervals[closestInterval];\n        out.intervalPix = fPix;\n        out.region = region;\n      }\n    }\n  }\n  if (d.ordinal && !out.region) {\n    var a = d.unitTickvals;\n    var unitLocation = d.unitToPaddedPx.invert(y);\n    for (i = 0; i < a.length; i++) {\n      var rangei = [a[Math.max(i - 1, 0)] * 0.25 + a[i] * 0.75, a[Math.min(i + 1, a.length - 1)] * 0.25 + a[i] * 0.75];\n      if (unitLocation >= rangei[0] && unitLocation <= rangei[1]) {\n        out.clickableOrdinalRange = rangei;\n        break;\n      }\n    }\n  }\n  return out;\n}\nfunction dragstart(lThis, d) {\n  d3.event.sourceEvent.stopPropagation();\n  var y = d.height - d3.mouse(lThis)[1] - 2 * c.verticalPadding;\n  var unitLocation = d.unitToPaddedPx.invert(y);\n  var b = d.brush;\n  var interval = getInterval(d, y);\n  var unitRange = interval.interval;\n  var s = b.svgBrush;\n  s.wasDragged = false; // we start assuming there won't be a drag - useful for reset\n  s.grabbingBar = interval.region === 'ns';\n  if (s.grabbingBar) {\n    var pixelRange = unitRange.map(d.unitToPaddedPx);\n    s.grabPoint = y - pixelRange[0] - c.verticalPadding;\n    s.barLength = pixelRange[1] - pixelRange[0];\n  }\n  s.clickableOrdinalRange = interval.clickableOrdinalRange;\n  s.stayingIntervals = d.multiselect && b.filterSpecified ? b.filter.getConsolidated() : [];\n  if (unitRange) {\n    s.stayingIntervals = s.stayingIntervals.filter(function (int2) {\n      return int2[0] !== unitRange[0] && int2[1] !== unitRange[1];\n    });\n  }\n  s.startExtent = interval.region ? unitRange[interval.region === 's' ? 1 : 0] : unitLocation;\n  d.parent.inBrushDrag = true;\n  s.brushStartCallback();\n}\nfunction drag(lThis, d) {\n  d3.event.sourceEvent.stopPropagation();\n  var y = d.height - d3.mouse(lThis)[1] - 2 * c.verticalPadding;\n  var s = d.brush.svgBrush;\n  s.wasDragged = true;\n  s._dragging = true;\n  if (s.grabbingBar) {\n    // moving the bar\n    s.newExtent = [y - s.grabPoint, y + s.barLength - s.grabPoint].map(d.unitToPaddedPx.invert);\n  } else {\n    // south/north drag or new bar creation\n    s.newExtent = [s.startExtent, d.unitToPaddedPx.invert(y)].sort(sortAsc);\n  }\n  d.brush.filterSpecified = true;\n  s.extent = s.stayingIntervals.concat([s.newExtent]);\n  s.brushCallback(d);\n  renderHighlight(lThis.parentNode);\n}\nfunction dragend(lThis, d) {\n  var brush = d.brush;\n  var filter = brush.filter;\n  var s = brush.svgBrush;\n  if (!s._dragging) {\n    // i.e. click\n    // mock zero drag\n    mousemove(lThis, d);\n    drag(lThis, d);\n    // remember it is a click not a drag\n    d.brush.svgBrush.wasDragged = false;\n  }\n  s._dragging = false;\n  var e = d3.event;\n  e.sourceEvent.stopPropagation();\n  var grabbingBar = s.grabbingBar;\n  s.grabbingBar = false;\n  s.grabLocation = undefined;\n  d.parent.inBrushDrag = false;\n  clearCursor(); // instead of clearing, a nicer thing would be to set it according to current location\n  if (!s.wasDragged) {\n    // a click+release on the same spot (ie. w/o dragging) means a bar or full reset\n    s.wasDragged = undefined; // logic-wise unneeded, just shows `wasDragged` has no longer a meaning\n    if (s.clickableOrdinalRange) {\n      if (brush.filterSpecified && d.multiselect) {\n        s.extent.push(s.clickableOrdinalRange);\n      } else {\n        s.extent = [s.clickableOrdinalRange];\n        brush.filterSpecified = true;\n      }\n    } else if (grabbingBar) {\n      s.extent = s.stayingIntervals;\n      if (s.extent.length === 0) {\n        brushClear(brush);\n      }\n    } else {\n      brushClear(brush);\n    }\n    s.brushCallback(d);\n    renderHighlight(lThis.parentNode);\n    s.brushEndCallback(brush.filterSpecified ? filter.getConsolidated() : []);\n    return; // no need to fuse intervals or snap to ordinals, so we can bail early\n  }\n\n  var mergeIntervals = function () {\n    // Key piece of logic: once the button is released, possibly overlapping intervals will be fused:\n    // Here it's done immediately on click release while on ordinal snap transition it's done at the end\n    filter.set(filter.getConsolidated());\n  };\n  if (d.ordinal) {\n    var a = d.unitTickvals;\n    if (a[a.length - 1] < a[0]) a.reverse();\n    s.newExtent = [ordinalScaleSnap(0, a, s.newExtent[0], s.stayingIntervals), ordinalScaleSnap(1, a, s.newExtent[1], s.stayingIntervals)];\n    var hasNewExtent = s.newExtent[1] > s.newExtent[0];\n    s.extent = s.stayingIntervals.concat(hasNewExtent ? [s.newExtent] : []);\n    if (!s.extent.length) {\n      brushClear(brush);\n    }\n    s.brushCallback(d);\n    if (hasNewExtent) {\n      // merging intervals post the snap tween\n      renderHighlight(lThis.parentNode, mergeIntervals);\n    } else {\n      // if no new interval, don't animate, just redraw the highlight immediately\n      mergeIntervals();\n      renderHighlight(lThis.parentNode);\n    }\n  } else {\n    mergeIntervals(); // merging intervals immediately\n  }\n\n  s.brushEndCallback(brush.filterSpecified ? filter.getConsolidated() : []);\n}\nfunction mousemove(lThis, d) {\n  var y = d.height - d3.mouse(lThis)[1] - 2 * c.verticalPadding;\n  var interval = getInterval(d, y);\n  var cursor = 'crosshair';\n  if (interval.clickableOrdinalRange) cursor = 'pointer';else if (interval.region) cursor = interval.region + '-resize';\n  d3.select(document.body).style('cursor', cursor);\n}\nfunction attachDragBehavior(selection) {\n  // There's some fiddling with pointer cursor styling so that the cursor preserves its shape while dragging a brush\n  // even if the cursor strays from the interacting bar, which is bound to happen as bars are thin and the user\n  // will inevitably leave the hotspot strip. In this regard, it does something similar to what the D3 brush would do.\n  selection.on('mousemove', function (d) {\n    d3.event.preventDefault();\n    if (!d.parent.inBrushDrag) mousemove(this, d);\n  }).on('mouseleave', function (d) {\n    if (!d.parent.inBrushDrag) clearCursor();\n  }).call(d3.behavior.drag().on('dragstart', function (d) {\n    dragstart(this, d);\n  }).on('drag', function (d) {\n    drag(this, d);\n  }).on('dragend', function (d) {\n    dragend(this, d);\n  }));\n}\nfunction startAsc(a, b) {\n  return a[0] - b[0];\n}\nfunction renderAxisBrush(axisBrush, paperColor, gd) {\n  var isStatic = gd._context.staticPlot;\n  var background = axisBrush.selectAll('.background').data(repeat);\n  background.enter().append('rect').classed('background', true).call(barHorizontalSetup).call(backgroundBarHorizontalSetup).style('pointer-events', isStatic ? 'none' : 'auto') // parent pointer events are disabled; we must have it to register events\n  .attr('transform', strTranslate(0, c.verticalPadding));\n  background.call(attachDragBehavior).attr('height', function (d) {\n    return d.height - c.verticalPadding;\n  });\n  var highlightShadow = axisBrush.selectAll('.highlight-shadow').data(repeat); // we have a set here, can't call it `extent`\n\n  highlightShadow.enter().append('line').classed('highlight-shadow', true).attr('x', -c.bar.width / 2).attr('stroke-width', c.bar.width + c.bar.strokeWidth).attr('stroke', paperColor).attr('opacity', c.bar.strokeOpacity).attr('stroke-linecap', 'butt');\n  highlightShadow.attr('y1', function (d) {\n    return d.height;\n  }).call(styleHighlight);\n  var highlight = axisBrush.selectAll('.highlight').data(repeat); // we have a set here, can't call it `extent`\n\n  highlight.enter().append('line').classed('highlight', true).attr('x', -c.bar.width / 2).attr('stroke-width', c.bar.width - c.bar.strokeWidth).attr('stroke', c.bar.fillColor).attr('opacity', c.bar.fillOpacity).attr('stroke-linecap', 'butt');\n  highlight.attr('y1', function (d) {\n    return d.height;\n  }).call(styleHighlight);\n}\nfunction ensureAxisBrush(axisOverlays, paperColor, gd) {\n  var axisBrush = axisOverlays.selectAll('.' + c.cn.axisBrush).data(repeat, keyFun);\n  axisBrush.enter().append('g').classed(c.cn.axisBrush, true);\n  renderAxisBrush(axisBrush, paperColor, gd);\n}\nfunction getBrushExtent(brush) {\n  return brush.svgBrush.extent.map(function (e) {\n    return e.slice();\n  });\n}\nfunction brushClear(brush) {\n  brush.filterSpecified = false;\n  brush.svgBrush.extent = [[-Infinity, Infinity]];\n}\nfunction axisBrushMoved(callback) {\n  return function axisBrushMoved(dimension) {\n    var brush = dimension.brush;\n    var extent = getBrushExtent(brush);\n    var newExtent = extent.slice();\n    brush.filter.set(newExtent);\n    callback();\n  };\n}\nfunction dedupeRealRanges(intervals) {\n  // Fuses elements of intervals if they overlap, yielding discontiguous intervals, results.length <= intervals.length\n  // Currently uses closed intervals, ie. dedupeRealRanges([[400, 800], [300, 400]]) -> [300, 800]\n  var queue = intervals.slice();\n  var result = [];\n  var currentInterval;\n  var current = queue.shift();\n  while (current) {\n    // [].shift === undefined, so we don't descend into an empty array\n    currentInterval = current.slice();\n    while ((current = queue.shift()) && current[0] <= /* right-open interval would need `<` */currentInterval[1]) {\n      currentInterval[1] = Math.max(currentInterval[1], current[1]);\n    }\n    result.push(currentInterval);\n  }\n  if (result.length === 1 && result[0][0] > result[0][1]) {\n    // discard result\n    result = [];\n  }\n  return result;\n}\nfunction makeFilter() {\n  var filter = [];\n  var consolidated;\n  var bounds;\n  return {\n    set: function (a) {\n      filter = a.map(function (d) {\n        return d.slice().sort(sortAsc);\n      }).sort(startAsc);\n\n      // handle unselected case\n      if (filter.length === 1 && filter[0][0] === -Infinity && filter[0][1] === Infinity) {\n        filter = [[0, -1]];\n      }\n      consolidated = dedupeRealRanges(filter);\n      bounds = filter.reduce(function (p, n) {\n        return [Math.min(p[0], n[0]), Math.max(p[1], n[1])];\n      }, [Infinity, -Infinity]);\n    },\n    get: function () {\n      return filter.slice();\n    },\n    getConsolidated: function () {\n      return consolidated;\n    },\n    getBounds: function () {\n      return bounds;\n    }\n  };\n}\nfunction makeBrush(state, rangeSpecified, initialRange, brushStartCallback, brushCallback, brushEndCallback) {\n  var filter = makeFilter();\n  filter.set(initialRange);\n  return {\n    filter: filter,\n    filterSpecified: rangeSpecified,\n    // there's a difference between not filtering and filtering a non-proper subset\n    svgBrush: {\n      extent: [],\n      // this is where the svgBrush writes contents into\n      brushStartCallback: brushStartCallback,\n      brushCallback: axisBrushMoved(brushCallback),\n      brushEndCallback: brushEndCallback\n    }\n  };\n}\n\n// for use by supplyDefaults, but it needed tons of pieces from here so\n// seemed to make more sense just to put the whole routine here\nfunction cleanRanges(ranges, dimension) {\n  if (Array.isArray(ranges[0])) {\n    ranges = ranges.map(function (ri) {\n      return ri.sort(sortAsc);\n    });\n    if (!dimension.multiselect) ranges = [ranges[0]];else ranges = dedupeRealRanges(ranges.sort(startAsc));\n  } else ranges = [ranges.sort(sortAsc)];\n\n  // ordinal snapping\n  if (dimension.tickvals) {\n    var sortedTickVals = dimension.tickvals.slice().sort(sortAsc);\n    ranges = ranges.map(function (ri) {\n      var rSnapped = [ordinalScaleSnap(0, sortedTickVals, ri[0], []), ordinalScaleSnap(1, sortedTickVals, ri[1], [])];\n      if (rSnapped[1] > rSnapped[0]) return rSnapped;\n    }).filter(function (ri) {\n      return ri;\n    });\n    if (!ranges.length) return;\n  }\n  return ranges.length > 1 ? ranges : ranges[0];\n}\nmodule.exports = {\n  makeBrush: makeBrush,\n  ensureAxisBrush: ensureAxisBrush,\n  cleanRanges: cleanRanges\n};\n\n/***/ }),\n\n/***/ 71791:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2881562__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2881562__(73362),\n  supplyDefaults: __nested_webpack_require_2881562__(3633),\n  calc: __nested_webpack_require_2881562__(24639),\n  colorbar: {\n    container: 'line',\n    min: 'cmin',\n    max: 'cmax'\n  },\n  moduleType: 'trace',\n  name: 'parcoords',\n  basePlotModule: __nested_webpack_require_2881562__(49351),\n  categories: ['gl', 'regl', 'noOpacity', 'noHover'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 49351:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_2882052__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2882052__(39898);\nvar getModuleCalcData = (__nested_webpack_require_2882052__(27659)/* .getModuleCalcData */ .a0);\nvar parcoordsPlot = __nested_webpack_require_2882052__(21341);\nvar xmlnsNamespaces = __nested_webpack_require_2882052__(77922);\nexports.name = 'parcoords';\nexports.plot = function (gd) {\n  var calcData = getModuleCalcData(gd.calcdata, 'parcoords')[0];\n  if (calcData.length) parcoordsPlot(gd, calcData);\n};\nexports.clean = function (newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  var hadParcoords = oldFullLayout._has && oldFullLayout._has('parcoords');\n  var hasParcoords = newFullLayout._has && newFullLayout._has('parcoords');\n  if (hadParcoords && !hasParcoords) {\n    oldFullLayout._paperdiv.selectAll('.parcoords').remove();\n    oldFullLayout._glimages.selectAll('*').remove();\n  }\n};\nexports.toSVG = function (gd) {\n  var imageRoot = gd._fullLayout._glimages;\n  var root = d3.select(gd).selectAll('.svg-container');\n  var canvases = root.filter(function (d, i) {\n    return i === root.size() - 1;\n  }).selectAll('.gl-canvas-context, .gl-canvas-focus');\n  function canvasToImage() {\n    var canvas = this;\n    var imageData = canvas.toDataURL('image/png');\n    var image = imageRoot.append('svg:image');\n    image.attr({\n      xmlns: xmlnsNamespaces.svg,\n      'xlink:href': imageData,\n      preserveAspectRatio: 'none',\n      x: 0,\n      y: 0,\n      width: canvas.style.width,\n      height: canvas.style.height\n    });\n  }\n  canvases.each(canvasToImage);\n\n  // Chrome / Safari bug workaround - browser apparently loses connection to the defined pattern\n  // Without the workaround, these browsers 'lose' the filter brush styling (color etc.) after a snapshot\n  // on a subsequent interaction.\n  // Firefox works fine without this workaround\n  window.setTimeout(function () {\n    d3.selectAll('#filterBarPattern').attr('id', 'filterBarPattern');\n  }, 60);\n};\n\n/***/ }),\n\n/***/ 24639:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2884034__) {\n\n\"use strict\";\n\n\nvar isArrayOrTypedArray = (__nested_webpack_require_2884034__(71828).isArrayOrTypedArray);\nvar Colorscale = __nested_webpack_require_2884034__(21081);\nvar wrap = (__nested_webpack_require_2884034__(28984).wrap);\nmodule.exports = function calc(gd, trace) {\n  var lineColor;\n  var cscale;\n  if (Colorscale.hasColorscale(trace, 'line') && isArrayOrTypedArray(trace.line.color)) {\n    lineColor = trace.line.color;\n    cscale = Colorscale.extractOpts(trace.line).colorscale;\n    Colorscale.calc(gd, trace, {\n      vals: lineColor,\n      containerStr: 'line',\n      cLetter: 'c'\n    });\n  } else {\n    lineColor = constHalf(trace._length);\n    cscale = [[0, trace.line.color], [1, trace.line.color]];\n  }\n  return wrap({\n    lineColor: lineColor,\n    cscale: cscale\n  });\n};\nfunction constHalf(len) {\n  var out = new Array(len);\n  for (var i = 0; i < len; i++) {\n    out[i] = 0.5;\n  }\n  return out;\n}\n\n/***/ }),\n\n/***/ 25706:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  maxDimensionCount: 60,\n  // this cannot be increased without WebGL code refactoring\n  overdrag: 45,\n  verticalPadding: 2,\n  // otherwise, horizontal lines on top or bottom are of lower width\n  tickDistance: 50,\n  canvasPixelRatio: 1,\n  blockLineCount: 5000,\n  layers: ['contextLineLayer', 'focusLineLayer', 'pickLineLayer'],\n  axisTitleOffset: 28,\n  axisExtentOffset: 10,\n  bar: {\n    width: 4,\n    // Visible width of the filter bar\n    captureWidth: 10,\n    // Mouse-sensitive width for interaction (Fitts law)\n    fillColor: 'magenta',\n    // Color of the filter bar fill\n    fillOpacity: 1,\n    // Filter bar fill opacity\n    snapDuration: 150,\n    // tween duration in ms for brush snap for ordinal axes\n    snapRatio: 0.25,\n    // ratio of bar extension relative to the distance between two adjacent ordinal values\n    snapClose: 0.01,\n    // fraction of inter-value distance to snap to the closer one, even if you're not over it\n    strokeOpacity: 1,\n    // Filter bar side stroke opacity\n    strokeWidth: 1,\n    // Filter bar side stroke width in pixels\n    handleHeight: 8,\n    // Height of the filter bar vertical resize areas on top and bottom\n    handleOpacity: 1,\n    // Opacity of the filter bar vertical resize areas on top and bottom\n    handleOverlap: 0 // A larger than 0 value causes overlaps with the filter bar, represented as pixels\n  },\n\n  cn: {\n    axisExtentText: 'axis-extent-text',\n    parcoordsLineLayers: 'parcoords-line-layers',\n    parcoordsLineLayer: 'parcoords-lines',\n    parcoords: 'parcoords',\n    parcoordsControlView: 'parcoords-control-view',\n    yAxis: 'y-axis',\n    axisOverlays: 'axis-overlays',\n    axis: 'axis',\n    axisHeading: 'axis-heading',\n    axisTitle: 'axis-title',\n    axisExtent: 'axis-extent',\n    axisExtentTop: 'axis-extent-top',\n    axisExtentTopText: 'axis-extent-top-text',\n    axisExtentBottom: 'axis-extent-bottom',\n    axisExtentBottomText: 'axis-extent-bottom-text',\n    axisBrush: 'axis-brush'\n  },\n  id: {\n    filterBarPattern: 'filter-bar-pattern'\n  }\n};\n\n/***/ }),\n\n/***/ 3633:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2887110__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2887110__(71828);\nvar hasColorscale = (__nested_webpack_require_2887110__(52075).hasColorscale);\nvar colorscaleDefaults = __nested_webpack_require_2887110__(1586);\nvar handleDomainDefaults = (__nested_webpack_require_2887110__(27670)/* .defaults */ .c);\nvar handleArrayContainerDefaults = __nested_webpack_require_2887110__(85501);\nvar Axes = __nested_webpack_require_2887110__(89298);\nvar attributes = __nested_webpack_require_2887110__(73362);\nvar axisBrush = __nested_webpack_require_2887110__(57920);\nvar maxDimensionCount = (__nested_webpack_require_2887110__(25706).maxDimensionCount);\nvar mergeLength = __nested_webpack_require_2887110__(94397);\nfunction handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce) {\n  var lineColor = coerce('line.color', defaultColor);\n  if (hasColorscale(traceIn, 'line') && Lib.isArrayOrTypedArray(lineColor)) {\n    if (lineColor.length) {\n      coerce('line.colorscale');\n      colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n        prefix: 'line.',\n        cLetter: 'c'\n      });\n      // TODO: I think it would be better to keep showing lines beyond the last line color\n      // but I'm not sure what color to give these lines - probably black or white\n      // depending on the background color?\n      return lineColor.length;\n    } else {\n      traceOut.line.color = defaultColor;\n    }\n  }\n  return Infinity;\n}\nfunction dimensionDefaults(dimensionIn, dimensionOut, parentOut, opts) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(dimensionIn, dimensionOut, attributes.dimensions, attr, dflt);\n  }\n  var values = coerce('values');\n  var visible = coerce('visible');\n  if (!(values && values.length)) {\n    visible = dimensionOut.visible = false;\n  }\n  if (visible) {\n    coerce('label');\n    coerce('tickvals');\n    coerce('ticktext');\n    coerce('tickformat');\n    var range = coerce('range');\n    dimensionOut._ax = {\n      _id: 'y',\n      type: 'linear',\n      showexponent: 'all',\n      exponentformat: 'B',\n      range: range\n    };\n    Axes.setConvert(dimensionOut._ax, opts.layout);\n    coerce('multiselect');\n    var constraintRange = coerce('constraintrange');\n    if (constraintRange) {\n      dimensionOut.constraintrange = axisBrush.cleanRanges(constraintRange, dimensionOut);\n    }\n  }\n}\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var dimensionsIn = traceIn.dimensions;\n  if (Array.isArray(dimensionsIn) && dimensionsIn.length > maxDimensionCount) {\n    Lib.log('parcoords traces support up to ' + maxDimensionCount + ' dimensions at the moment');\n    dimensionsIn.splice(maxDimensionCount);\n  }\n  var dimensions = handleArrayContainerDefaults(traceIn, traceOut, {\n    name: 'dimensions',\n    layout: layout,\n    handleItemDefaults: dimensionDefaults\n  });\n  var len = handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce);\n  handleDomainDefaults(traceOut, layout, coerce);\n  if (!Array.isArray(dimensions) || !dimensions.length) {\n    traceOut.visible = false;\n  }\n  mergeLength(traceOut, dimensions, 'values', len);\n\n  // make default font size 10px (default is 12),\n  // scale linearly with global font size\n  var fontDflt = {\n    family: layout.font.family,\n    size: Math.round(layout.font.size / 1.2),\n    color: layout.font.color\n  };\n  Lib.coerceFont(coerce, 'labelfont', fontDflt);\n  Lib.coerceFont(coerce, 'tickfont', fontDflt);\n  Lib.coerceFont(coerce, 'rangefont', fontDflt);\n  coerce('labelangle');\n  coerce('labelside');\n  coerce('unselected.line.color');\n  coerce('unselected.line.opacity');\n};\n\n/***/ }),\n\n/***/ 1602:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_2890764__) {\n\n\"use strict\";\n\n\nvar isTypedArray = (__nested_webpack_require_2890764__(71828).isTypedArray);\nexports.convertTypedArray = function (a) {\n  return isTypedArray(a) ? Array.prototype.slice.call(a) : a;\n};\nexports.isOrdinal = function (dimension) {\n  return !!dimension.tickvals;\n};\nexports.isVisible = function (dimension) {\n  return dimension.visible || !('visible' in dimension);\n};\n\n/***/ }),\n\n/***/ 67618:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2891229__) {\n\n\"use strict\";\n\n\nvar index = __nested_webpack_require_2891229__(71791);\nindex.plot = __nested_webpack_require_2891229__(21341);\nmodule.exports = index;\n\n/***/ }),\n\n/***/ 83398:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2891449__) {\n\n\"use strict\";\n\n\nvar glslify = __nested_webpack_require_2891449__(56068);\nvar vertexShaderSource = glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nattribute vec4 p01_04, p05_08, p09_12, p13_16,\\n               p17_20, p21_24, p25_28, p29_32,\\n               p33_36, p37_40, p41_44, p45_48,\\n               p49_52, p53_56, p57_60, colors;\\n\\nuniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,\\n             loA, hiA, loB, hiB, loC, hiC, loD, hiD;\\n\\nuniform vec2 resolution, viewBoxPos, viewBoxSize;\\nuniform float maskHeight;\\nuniform float drwLayer; // 0: context, 1: focus, 2: pick\\nuniform vec4 contextColor;\\nuniform sampler2D maskTexture, palette;\\n\\nbool isPick    = (drwLayer > 1.5);\\nbool isContext = (drwLayer < 0.5);\\n\\nconst vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);\\nconst vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);\\n\\nfloat val(mat4 p, mat4 v) {\\n    return dot(matrixCompMult(p, v) * UNITS, UNITS);\\n}\\n\\nfloat axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {\\n    float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);\\n    float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);\\n    return y1 * (1.0 - ratio) + y2 * ratio;\\n}\\n\\nint iMod(int a, int b) {\\n    return a - b * (a / b);\\n}\\n\\nbool fOutside(float p, float lo, float hi) {\\n    return (lo < hi) && (lo > p || p > hi);\\n}\\n\\nbool vOutside(vec4 p, vec4 lo, vec4 hi) {\\n    return (\\n        fOutside(p[0], lo[0], hi[0]) ||\\n        fOutside(p[1], lo[1], hi[1]) ||\\n        fOutside(p[2], lo[2], hi[2]) ||\\n        fOutside(p[3], lo[3], hi[3])\\n    );\\n}\\n\\nbool mOutside(mat4 p, mat4 lo, mat4 hi) {\\n    return (\\n        vOutside(p[0], lo[0], hi[0]) ||\\n        vOutside(p[1], lo[1], hi[1]) ||\\n        vOutside(p[2], lo[2], hi[2]) ||\\n        vOutside(p[3], lo[3], hi[3])\\n    );\\n}\\n\\nbool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {\\n    return mOutside(A, loA, hiA) ||\\n           mOutside(B, loB, hiB) ||\\n           mOutside(C, loC, hiC) ||\\n           mOutside(D, loD, hiD);\\n}\\n\\nbool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {\\n    mat4 pnts[4];\\n    pnts[0] = A;\\n    pnts[1] = B;\\n    pnts[2] = C;\\n    pnts[3] = D;\\n\\n    for(int i = 0; i < 4; ++i) {\\n        for(int j = 0; j < 4; ++j) {\\n            for(int k = 0; k < 4; ++k) {\\n                if(0 == iMod(\\n                    int(255.0 * texture2D(maskTexture,\\n                        vec2(\\n                            (float(i * 2 + j / 2) + 0.5) / 8.0,\\n                            (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight\\n                        ))[3]\\n                    ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),\\n                    2\\n                )) return true;\\n            }\\n        }\\n    }\\n    return false;\\n}\\n\\nvec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {\\n    float x = 0.5 * sign(v) + 0.5;\\n    float y = axisY(x, A, B, C, D);\\n    float z = 1.0 - abs(v);\\n\\n    z += isContext ? 0.0 : 2.0 * float(\\n        outsideBoundingBox(A, B, C, D) ||\\n        outsideRasterMask(A, B, C, D)\\n    );\\n\\n    return vec4(\\n        2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,\\n        z,\\n        1.0\\n    );\\n}\\n\\nvoid main() {\\n    mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);\\n    mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);\\n    mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);\\n    mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);\\n\\n    float v = colors[3];\\n\\n    gl_Position = position(isContext, v, A, B, C, D);\\n\\n    fragColor =\\n        isContext ? vec4(contextColor) :\\n        isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));\\n}\\n\"]);\nvar fragmentShaderSource = glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n    gl_FragColor = fragColor;\\n}\\n\"]);\nvar maxDim = (__nested_webpack_require_2891449__(25706).maxDimensionCount);\nvar Lib = __nested_webpack_require_2891449__(71828);\n\n// don't change; otherwise near/far plane lines are lost\nvar depthLimitEpsilon = 1e-6;\n\n// precision of multiselect is the full range divided into this many parts\nvar maskHeight = 2048;\nvar dummyPixel = new Uint8Array(4);\nvar dataPixel = new Uint8Array(4);\nvar paletteTextureConfig = {\n  shape: [256, 1],\n  format: 'rgba',\n  type: 'uint8',\n  mag: 'nearest',\n  min: 'nearest'\n};\nfunction ensureDraw(regl) {\n  regl.read({\n    x: 0,\n    y: 0,\n    width: 1,\n    height: 1,\n    data: dummyPixel\n  });\n}\nfunction clear(regl, x, y, width, height) {\n  var gl = regl._gl;\n  gl.enable(gl.SCISSOR_TEST);\n  gl.scissor(x, y, width, height);\n  regl.clear({\n    color: [0, 0, 0, 0],\n    depth: 1\n  }); // clearing is done in scissored panel only\n}\n\nfunction renderBlock(regl, glAes, renderState, blockLineCount, sampleCount, item) {\n  var rafKey = item.key;\n  function render(blockNumber) {\n    var count = Math.min(blockLineCount, sampleCount - blockNumber * blockLineCount);\n    if (blockNumber === 0) {\n      // stop drawing possibly stale glyphs before clearing\n      window.cancelAnimationFrame(renderState.currentRafs[rafKey]);\n      delete renderState.currentRafs[rafKey];\n      clear(regl, item.scissorX, item.scissorY, item.scissorWidth, item.viewBoxSize[1]);\n    }\n    if (renderState.clearOnly) {\n      return;\n    }\n    item.count = 2 * count;\n    item.offset = 2 * blockNumber * blockLineCount;\n    glAes(item);\n    if (blockNumber * blockLineCount + count < sampleCount) {\n      renderState.currentRafs[rafKey] = window.requestAnimationFrame(function () {\n        render(blockNumber + 1);\n      });\n    }\n    renderState.drawCompleted = false;\n  }\n  if (!renderState.drawCompleted) {\n    ensureDraw(regl);\n    renderState.drawCompleted = true;\n  }\n\n  // start with rendering item 0; recursion handles the rest\n  render(0);\n}\nfunction adjustDepth(d) {\n  // WebGL matrix operations use floats with limited precision, potentially causing a number near a border of [0, 1]\n  // to end up slightly outside the border. With an epsilon, we reduce the chance that a line gets clipped by the\n  // near or the far plane.\n  return Math.max(depthLimitEpsilon, Math.min(1 - depthLimitEpsilon, d));\n}\nfunction palette(unitToColor, opacity) {\n  var result = new Array(256);\n  for (var i = 0; i < 256; i++) {\n    result[i] = unitToColor(i / 255).concat(opacity);\n  }\n  return result;\n}\n\n// Maps the sample index [0...sampleCount - 1] to a range of [0, 1] as the shader expects colors in the [0, 1] range.\n// but first it shifts the sample index by 0, 8 or 16 bits depending on rgbIndex [0..2]\n// with the end result that each line will be of a unique color, making it possible for the pick handler\n// to uniquely identify which line is hovered over (bijective mapping).\n// The inverse, i.e. readPixel is invoked from 'parcoords.js'\nfunction calcPickColor(i, rgbIndex) {\n  return (i >>> 8 * rgbIndex) % 256 / 255;\n}\nfunction makePoints(sampleCount, dims, color) {\n  var points = new Array(sampleCount * (maxDim + 4));\n  var n = 0;\n  for (var i = 0; i < sampleCount; i++) {\n    for (var k = 0; k < maxDim; k++) {\n      points[n++] = k < dims.length ? dims[k].paddedUnitValues[i] : 0.5;\n    }\n    points[n++] = calcPickColor(i, 2);\n    points[n++] = calcPickColor(i, 1);\n    points[n++] = calcPickColor(i, 0);\n    points[n++] = adjustDepth(color[i]);\n  }\n  return points;\n}\nfunction makeVecAttr(vecIndex, sampleCount, points) {\n  var pointPairs = new Array(sampleCount * 8);\n  var n = 0;\n  for (var i = 0; i < sampleCount; i++) {\n    for (var j = 0; j < 2; j++) {\n      for (var k = 0; k < 4; k++) {\n        var q = vecIndex * 4 + k;\n        var v = points[i * 64 + q];\n        if (q === 63 && j === 0) {\n          v *= -1;\n        }\n        pointPairs[n++] = v;\n      }\n    }\n  }\n  return pointPairs;\n}\nfunction pad2(num) {\n  var s = '0' + num;\n  return s.substr(s.length - 2);\n}\nfunction getAttrName(i) {\n  return i < maxDim ? 'p' + pad2(i + 1) + '_' + pad2(i + 4) : 'colors';\n}\nfunction setAttributes(attributes, sampleCount, points) {\n  for (var i = 0; i <= maxDim; i += 4) {\n    attributes[getAttrName(i)](makeVecAttr(i / 4, sampleCount, points));\n  }\n}\nfunction emptyAttributes(regl) {\n  var attributes = {};\n  for (var i = 0; i <= maxDim; i += 4) {\n    attributes[getAttrName(i)] = regl.buffer({\n      usage: 'dynamic',\n      type: 'float',\n      data: new Uint8Array(0)\n    });\n  }\n  return attributes;\n}\nfunction makeItem(model, leftmost, rightmost, itemNumber, i0, i1, x, y, panelSizeX, panelSizeY, crossfilterDimensionIndex, drwLayer, constraints, plotGlPixelRatio) {\n  var dims = [[], []];\n  for (var k = 0; k < 64; k++) {\n    dims[0][k] = k === i0 ? 1 : 0;\n    dims[1][k] = k === i1 ? 1 : 0;\n  }\n  x *= plotGlPixelRatio;\n  y *= plotGlPixelRatio;\n  panelSizeX *= plotGlPixelRatio;\n  panelSizeY *= plotGlPixelRatio;\n  var overdrag = model.lines.canvasOverdrag * plotGlPixelRatio;\n  var domain = model.domain;\n  var canvasWidth = model.canvasWidth * plotGlPixelRatio;\n  var canvasHeight = model.canvasHeight * plotGlPixelRatio;\n  var padL = model.pad.l * plotGlPixelRatio;\n  var padB = model.pad.b * plotGlPixelRatio;\n  var layoutHeight = model.layoutHeight * plotGlPixelRatio;\n  var layoutWidth = model.layoutWidth * plotGlPixelRatio;\n  var deselectedLinesColor = model.deselectedLines.color;\n  var deselectedLinesOpacity = model.deselectedLines.opacity;\n  var itemModel = Lib.extendFlat({\n    key: crossfilterDimensionIndex,\n    resolution: [canvasWidth, canvasHeight],\n    viewBoxPos: [x + overdrag, y],\n    viewBoxSize: [panelSizeX, panelSizeY],\n    i0: i0,\n    i1: i1,\n    dim0A: dims[0].slice(0, 16),\n    dim0B: dims[0].slice(16, 32),\n    dim0C: dims[0].slice(32, 48),\n    dim0D: dims[0].slice(48, 64),\n    dim1A: dims[1].slice(0, 16),\n    dim1B: dims[1].slice(16, 32),\n    dim1C: dims[1].slice(32, 48),\n    dim1D: dims[1].slice(48, 64),\n    drwLayer: drwLayer,\n    contextColor: [deselectedLinesColor[0] / 255, deselectedLinesColor[1] / 255, deselectedLinesColor[2] / 255, deselectedLinesOpacity !== 'auto' ? deselectedLinesColor[3] * deselectedLinesOpacity : Math.max(1 / 255, Math.pow(1 / model.lines.color.length, 1 / 3))],\n    scissorX: (itemNumber === leftmost ? 0 : x + overdrag) + (padL - overdrag) + layoutWidth * domain.x[0],\n    scissorWidth: (itemNumber === rightmost ? canvasWidth - x + overdrag : panelSizeX + 0.5) + (itemNumber === leftmost ? x + overdrag : 0),\n    scissorY: y + padB + layoutHeight * domain.y[0],\n    scissorHeight: panelSizeY,\n    viewportX: padL - overdrag + layoutWidth * domain.x[0],\n    viewportY: padB + layoutHeight * domain.y[0],\n    viewportWidth: canvasWidth,\n    viewportHeight: canvasHeight\n  }, constraints);\n  return itemModel;\n}\nfunction expandedPixelRange(bounds) {\n  var dh = maskHeight - 1;\n  var a = Math.max(0, Math.floor(bounds[0] * dh), 0);\n  var b = Math.min(dh, Math.ceil(bounds[1] * dh), dh);\n  return [Math.min(a, b), Math.max(a, b)];\n}\nmodule.exports = function (canvasGL, d) {\n  // context & pick describe which canvas we're talking about - won't change with new data\n  var isContext = d.context;\n  var isPick = d.pick;\n  var regl = d.regl;\n  var gl = regl._gl;\n  var supportedLineWidth = gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE);\n  // ensure here that plotGlPixelRatio is within supported range; otherwise regl throws error\n  var plotGlPixelRatio = Math.max(supportedLineWidth[0], Math.min(supportedLineWidth[1], d.viewModel.plotGlPixelRatio));\n  var renderState = {\n    currentRafs: {},\n    drawCompleted: true,\n    clearOnly: false\n  };\n\n  // state to be set by update and used later\n  var model;\n  var vm;\n  var initialDims;\n  var sampleCount;\n  var attributes = emptyAttributes(regl);\n  var maskTexture;\n  var paletteTexture = regl.texture(paletteTextureConfig);\n  var prevAxisOrder = [];\n  update(d);\n  var glAes = regl({\n    profile: false,\n    blend: {\n      enable: isContext,\n      func: {\n        srcRGB: 'src alpha',\n        dstRGB: 'one minus src alpha',\n        srcAlpha: 1,\n        dstAlpha: 1 // 'one minus src alpha'\n      },\n\n      equation: {\n        rgb: 'add',\n        alpha: 'add'\n      },\n      color: [0, 0, 0, 0]\n    },\n    depth: {\n      enable: !isContext,\n      mask: true,\n      func: 'less',\n      range: [0, 1]\n    },\n    // for polygons\n    cull: {\n      enable: true,\n      face: 'back'\n    },\n    scissor: {\n      enable: true,\n      box: {\n        x: regl.prop('scissorX'),\n        y: regl.prop('scissorY'),\n        width: regl.prop('scissorWidth'),\n        height: regl.prop('scissorHeight')\n      }\n    },\n    viewport: {\n      x: regl.prop('viewportX'),\n      y: regl.prop('viewportY'),\n      width: regl.prop('viewportWidth'),\n      height: regl.prop('viewportHeight')\n    },\n    dither: false,\n    vert: vertexShaderSource,\n    frag: fragmentShaderSource,\n    primitive: 'lines',\n    lineWidth: plotGlPixelRatio,\n    attributes: attributes,\n    uniforms: {\n      resolution: regl.prop('resolution'),\n      viewBoxPos: regl.prop('viewBoxPos'),\n      viewBoxSize: regl.prop('viewBoxSize'),\n      dim0A: regl.prop('dim0A'),\n      dim1A: regl.prop('dim1A'),\n      dim0B: regl.prop('dim0B'),\n      dim1B: regl.prop('dim1B'),\n      dim0C: regl.prop('dim0C'),\n      dim1C: regl.prop('dim1C'),\n      dim0D: regl.prop('dim0D'),\n      dim1D: regl.prop('dim1D'),\n      loA: regl.prop('loA'),\n      hiA: regl.prop('hiA'),\n      loB: regl.prop('loB'),\n      hiB: regl.prop('hiB'),\n      loC: regl.prop('loC'),\n      hiC: regl.prop('hiC'),\n      loD: regl.prop('loD'),\n      hiD: regl.prop('hiD'),\n      palette: paletteTexture,\n      contextColor: regl.prop('contextColor'),\n      maskTexture: regl.prop('maskTexture'),\n      drwLayer: regl.prop('drwLayer'),\n      maskHeight: regl.prop('maskHeight')\n    },\n    offset: regl.prop('offset'),\n    count: regl.prop('count')\n  });\n  function update(dNew) {\n    model = dNew.model;\n    vm = dNew.viewModel;\n    initialDims = vm.dimensions.slice();\n    sampleCount = initialDims[0] ? initialDims[0].values.length : 0;\n    var lines = model.lines;\n    var color = isPick ? lines.color.map(function (_, i) {\n      return i / lines.color.length;\n    }) : lines.color;\n    var points = makePoints(sampleCount, initialDims, color);\n    setAttributes(attributes, sampleCount, points);\n    if (!isContext && !isPick) {\n      paletteTexture = regl.texture(Lib.extendFlat({\n        data: palette(model.unitToColor, 255)\n      }, paletteTextureConfig));\n    }\n  }\n  function makeConstraints(isContext) {\n    var i, j, k;\n    var limits = [[], []];\n    for (k = 0; k < 64; k++) {\n      var p = !isContext && k < initialDims.length ? initialDims[k].brush.filter.getBounds() : [-Infinity, Infinity];\n      limits[0][k] = p[0];\n      limits[1][k] = p[1];\n    }\n    var len = maskHeight * 8;\n    var mask = new Array(len);\n    for (i = 0; i < len; i++) {\n      mask[i] = 255;\n    }\n    if (!isContext) {\n      for (i = 0; i < initialDims.length; i++) {\n        var u = i % 8;\n        var v = (i - u) / 8;\n        var bitMask = Math.pow(2, u);\n        var dim = initialDims[i];\n        var ranges = dim.brush.filter.get();\n        if (ranges.length < 2) continue; // bail if the bounding box based filter is sufficient\n\n        var prevEnd = expandedPixelRange(ranges[0])[1];\n        for (j = 1; j < ranges.length; j++) {\n          var nextRange = expandedPixelRange(ranges[j]);\n          for (k = prevEnd + 1; k < nextRange[0]; k++) {\n            mask[k * 8 + v] &= ~bitMask;\n          }\n          prevEnd = Math.max(prevEnd, nextRange[1]);\n        }\n      }\n    }\n    var textureData = {\n      // 8 units x 8 bits = 64 bits, just sufficient for the almost 64 dimensions we support\n      shape: [8, maskHeight],\n      format: 'alpha',\n      type: 'uint8',\n      mag: 'nearest',\n      min: 'nearest',\n      data: mask\n    };\n    if (maskTexture) maskTexture(textureData);else maskTexture = regl.texture(textureData);\n    return {\n      maskTexture: maskTexture,\n      maskHeight: maskHeight,\n      loA: limits[0].slice(0, 16),\n      loB: limits[0].slice(16, 32),\n      loC: limits[0].slice(32, 48),\n      loD: limits[0].slice(48, 64),\n      hiA: limits[1].slice(0, 16),\n      hiB: limits[1].slice(16, 32),\n      hiC: limits[1].slice(32, 48),\n      hiD: limits[1].slice(48, 64)\n    };\n  }\n  function renderGLParcoords(panels, setChanged, clearOnly) {\n    var panelCount = panels.length;\n    var i;\n    var leftmost;\n    var rightmost;\n    var lowestX = Infinity;\n    var highestX = -Infinity;\n    for (i = 0; i < panelCount; i++) {\n      if (panels[i].dim0.canvasX < lowestX) {\n        lowestX = panels[i].dim0.canvasX;\n        leftmost = i;\n      }\n      if (panels[i].dim1.canvasX > highestX) {\n        highestX = panels[i].dim1.canvasX;\n        rightmost = i;\n      }\n    }\n    if (panelCount === 0) {\n      // clear canvas here, as the panel iteration below will not enter the loop body\n      clear(regl, 0, 0, model.canvasWidth, model.canvasHeight);\n    }\n    var constraints = makeConstraints(isContext);\n    for (i = 0; i < panelCount; i++) {\n      var p = panels[i];\n      var i0 = p.dim0.crossfilterDimensionIndex;\n      var i1 = p.dim1.crossfilterDimensionIndex;\n      var x = p.canvasX;\n      var y = p.canvasY;\n      var nextX = x + p.panelSizeX;\n      var plotGlPixelRatio = p.plotGlPixelRatio;\n      if (setChanged || !prevAxisOrder[i0] || prevAxisOrder[i0][0] !== x || prevAxisOrder[i0][1] !== nextX) {\n        prevAxisOrder[i0] = [x, nextX];\n        var item = makeItem(model, leftmost, rightmost, i, i0, i1, x, y, p.panelSizeX, p.panelSizeY, p.dim0.crossfilterDimensionIndex, isContext ? 0 : isPick ? 2 : 1, constraints, plotGlPixelRatio);\n        renderState.clearOnly = clearOnly;\n        var blockLineCount = setChanged ? model.lines.blockLineCount : sampleCount;\n        renderBlock(regl, glAes, renderState, blockLineCount, sampleCount, item);\n      }\n    }\n  }\n  function readPixel(canvasX, canvasY) {\n    regl.read({\n      x: canvasX,\n      y: canvasY,\n      width: 1,\n      height: 1,\n      data: dataPixel\n    });\n    return dataPixel;\n  }\n  function readPixels(canvasX, canvasY, width, height) {\n    var pixelArray = new Uint8Array(4 * width * height);\n    regl.read({\n      x: canvasX,\n      y: canvasY,\n      width: width,\n      height: height,\n      data: pixelArray\n    });\n    return pixelArray;\n  }\n  function destroy() {\n    canvasGL.style['pointer-events'] = 'none';\n    paletteTexture.destroy();\n    if (maskTexture) maskTexture.destroy();\n    for (var k in attributes) attributes[k].destroy();\n  }\n  return {\n    render: renderGLParcoords,\n    readPixel: readPixel,\n    readPixels: readPixels,\n    destroy: destroy,\n    update: update\n  };\n};\n\n/***/ }),\n\n/***/ 94397:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/**\n * mergeLength: set trace length as the minimum of all dimension data lengths\n *     and propagates this length into each dimension\n *\n * @param {object} traceOut: the fullData trace\n * @param {Array(object)} dimensions: array of dimension objects\n * @param {string} dataAttr: the attribute of each dimension containing the data\n * @param {integer} len: an already-existing length from other attributes\n */\nmodule.exports = function (traceOut, dimensions, dataAttr, len) {\n  if (!len) len = Infinity;\n  var i, dimi;\n  for (i = 0; i < dimensions.length; i++) {\n    dimi = dimensions[i];\n    if (dimi.visible) len = Math.min(len, dimi[dataAttr].length);\n  }\n  if (len === Infinity) len = 0;\n  traceOut._length = len;\n  for (i = 0; i < dimensions.length; i++) {\n    dimi = dimensions[i];\n    if (dimi.visible) dimi._length = len;\n  }\n  return len;\n};\n\n/***/ }),\n\n/***/ 17171:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2911012__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2911012__(39898);\nvar Lib = __nested_webpack_require_2911012__(71828);\nvar numberFormat = Lib.numberFormat;\nvar rgba = __nested_webpack_require_2911012__(36652);\nvar Axes = __nested_webpack_require_2911012__(89298);\nvar strRotate = Lib.strRotate;\nvar strTranslate = Lib.strTranslate;\nvar svgTextUtils = __nested_webpack_require_2911012__(63893);\nvar Drawing = __nested_webpack_require_2911012__(91424);\nvar Colorscale = __nested_webpack_require_2911012__(21081);\nvar gup = __nested_webpack_require_2911012__(28984);\nvar keyFun = gup.keyFun;\nvar repeat = gup.repeat;\nvar unwrap = gup.unwrap;\nvar helpers = __nested_webpack_require_2911012__(1602);\nvar c = __nested_webpack_require_2911012__(25706);\nvar brush = __nested_webpack_require_2911012__(57920);\nvar lineLayerMaker = __nested_webpack_require_2911012__(83398);\nfunction findExtreme(fn, values, len) {\n  return Lib.aggNums(fn, null, values, len);\n}\nfunction findExtremes(values, len) {\n  return fixExtremes(findExtreme(Math.min, values, len), findExtreme(Math.max, values, len));\n}\nfunction dimensionExtent(dimension) {\n  var range = dimension.range;\n  return range ? fixExtremes(range[0], range[1]) : findExtremes(dimension.values, dimension._length);\n}\nfunction fixExtremes(lo, hi) {\n  if (isNaN(lo) || !isFinite(lo)) {\n    lo = 0;\n  }\n  if (isNaN(hi) || !isFinite(hi)) {\n    hi = 0;\n  }\n\n  // avoid a degenerate (zero-width) domain\n  if (lo === hi) {\n    if (lo === 0) {\n      // no use to multiplying zero, so add/subtract in this case\n      lo -= 1;\n      hi += 1;\n    } else {\n      // this keeps the range in the order of magnitude of the data\n      lo *= 0.9;\n      hi *= 1.1;\n    }\n  }\n  return [lo, hi];\n}\nfunction toText(formatter, texts) {\n  if (texts) {\n    return function (v, i) {\n      var text = texts[i];\n      if (text === null || text === undefined) return formatter(v);\n      return text;\n    };\n  }\n  return formatter;\n}\nfunction domainScale(height, padding, dimension, tickvals, ticktext) {\n  var extent = dimensionExtent(dimension);\n  if (tickvals) {\n    return d3.scale.ordinal().domain(tickvals.map(toText(numberFormat(dimension.tickformat), ticktext))).range(tickvals.map(function (d) {\n      var unitVal = (d - extent[0]) / (extent[1] - extent[0]);\n      return height - padding + unitVal * (2 * padding - height);\n    }));\n  }\n  return d3.scale.linear().domain(extent).range([height - padding, padding]);\n}\nfunction unitToPaddedPx(height, padding) {\n  return d3.scale.linear().range([padding, height - padding]);\n}\nfunction domainToPaddedUnitScale(dimension, padFraction) {\n  return d3.scale.linear().domain(dimensionExtent(dimension)).range([padFraction, 1 - padFraction]);\n}\nfunction ordinalScale(dimension) {\n  if (!dimension.tickvals) return;\n  var extent = dimensionExtent(dimension);\n  return d3.scale.ordinal().domain(dimension.tickvals).range(dimension.tickvals.map(function (d) {\n    return (d - extent[0]) / (extent[1] - extent[0]);\n  }));\n}\nfunction unitToColorScale(cscale) {\n  var colorStops = cscale.map(function (d) {\n    return d[0];\n  });\n  var colorTuples = cscale.map(function (d) {\n    var RGBA = rgba(d[1]);\n    return d3.rgb('rgb(' + RGBA[0] + ',' + RGBA[1] + ',' + RGBA[2] + ')');\n  });\n  var prop = function (n) {\n    return function (o) {\n      return o[n];\n    };\n  };\n\n  // We can't use d3 color interpolation as we may have non-uniform color palette raster\n  // (various color stop distances).\n  var polylinearUnitScales = 'rgb'.split('').map(function (key) {\n    return d3.scale.linear().clamp(true).domain(colorStops).range(colorTuples.map(prop(key)));\n  });\n  return function (d) {\n    return polylinearUnitScales.map(function (s) {\n      return s(d);\n    });\n  };\n}\nfunction someFiltersActive(view) {\n  return view.dimensions.some(function (p) {\n    return p.brush.filterSpecified;\n  });\n}\nfunction model(layout, d, i) {\n  var cd0 = unwrap(d);\n  var trace = cd0.trace;\n  var lineColor = helpers.convertTypedArray(cd0.lineColor);\n  var line = trace.line;\n  var deselectedLines = {\n    color: rgba(trace.unselected.line.color),\n    opacity: trace.unselected.line.opacity\n  };\n  var cOpts = Colorscale.extractOpts(line);\n  var cscale = cOpts.reversescale ? Colorscale.flipScale(cd0.cscale) : cd0.cscale;\n  var domain = trace.domain;\n  var dimensions = trace.dimensions;\n  var width = layout.width;\n  var labelAngle = trace.labelangle;\n  var labelSide = trace.labelside;\n  var labelFont = trace.labelfont;\n  var tickFont = trace.tickfont;\n  var rangeFont = trace.rangefont;\n  var lines = Lib.extendDeepNoArrays({}, line, {\n    color: lineColor.map(d3.scale.linear().domain(dimensionExtent({\n      values: lineColor,\n      range: [cOpts.min, cOpts.max],\n      _length: trace._length\n    }))),\n    blockLineCount: c.blockLineCount,\n    canvasOverdrag: c.overdrag * c.canvasPixelRatio\n  });\n  var groupWidth = Math.floor(width * (domain.x[1] - domain.x[0]));\n  var groupHeight = Math.floor(layout.height * (domain.y[1] - domain.y[0]));\n  var pad = layout.margin || {\n    l: 80,\n    r: 80,\n    t: 100,\n    b: 80\n  };\n  var rowContentWidth = groupWidth;\n  var rowHeight = groupHeight;\n  return {\n    key: i,\n    colCount: dimensions.filter(helpers.isVisible).length,\n    dimensions: dimensions,\n    tickDistance: c.tickDistance,\n    unitToColor: unitToColorScale(cscale),\n    lines: lines,\n    deselectedLines: deselectedLines,\n    labelAngle: labelAngle,\n    labelSide: labelSide,\n    labelFont: labelFont,\n    tickFont: tickFont,\n    rangeFont: rangeFont,\n    layoutWidth: width,\n    layoutHeight: layout.height,\n    domain: domain,\n    translateX: domain.x[0] * width,\n    translateY: layout.height - domain.y[1] * layout.height,\n    pad: pad,\n    canvasWidth: rowContentWidth * c.canvasPixelRatio + 2 * lines.canvasOverdrag,\n    canvasHeight: rowHeight * c.canvasPixelRatio,\n    width: rowContentWidth,\n    height: rowHeight,\n    canvasPixelRatio: c.canvasPixelRatio\n  };\n}\nfunction viewModel(state, callbacks, model) {\n  var width = model.width;\n  var height = model.height;\n  var dimensions = model.dimensions;\n  var canvasPixelRatio = model.canvasPixelRatio;\n  var xScale = function (d) {\n    return width * d / Math.max(1, model.colCount - 1);\n  };\n  var unitPad = c.verticalPadding / height;\n  var _unitToPaddedPx = unitToPaddedPx(height, c.verticalPadding);\n  var vm = {\n    key: model.key,\n    xScale: xScale,\n    model: model,\n    inBrushDrag: false // consider factoring it out and putting it in a centralized global-ish gesture state object\n  };\n\n  var uniqueKeys = {};\n  vm.dimensions = dimensions.filter(helpers.isVisible).map(function (dimension, i) {\n    var domainToPaddedUnit = domainToPaddedUnitScale(dimension, unitPad);\n    var foundKey = uniqueKeys[dimension.label];\n    uniqueKeys[dimension.label] = (foundKey || 0) + 1;\n    var key = dimension.label + (foundKey ? '__' + foundKey : '');\n    var specifiedConstraint = dimension.constraintrange;\n    var filterRangeSpecified = specifiedConstraint && specifiedConstraint.length;\n    if (filterRangeSpecified && !Array.isArray(specifiedConstraint[0])) {\n      specifiedConstraint = [specifiedConstraint];\n    }\n    var filterRange = filterRangeSpecified ? specifiedConstraint.map(function (d) {\n      return d.map(domainToPaddedUnit);\n    }) : [[-Infinity, Infinity]];\n    var brushMove = function () {\n      var p = vm;\n      p.focusLayer && p.focusLayer.render(p.panels, true);\n      var filtersActive = someFiltersActive(p);\n      if (!state.contextShown() && filtersActive) {\n        p.contextLayer && p.contextLayer.render(p.panels, true);\n        state.contextShown(true);\n      } else if (state.contextShown() && !filtersActive) {\n        p.contextLayer && p.contextLayer.render(p.panels, true, true);\n        state.contextShown(false);\n      }\n    };\n    var truncatedValues = dimension.values;\n    if (truncatedValues.length > dimension._length) {\n      truncatedValues = truncatedValues.slice(0, dimension._length);\n    }\n    var tickvals = dimension.tickvals;\n    var ticktext;\n    function makeTickItem(v, i) {\n      return {\n        val: v,\n        text: ticktext[i]\n      };\n    }\n    function sortTickItem(a, b) {\n      return a.val - b.val;\n    }\n    if (Array.isArray(tickvals) && tickvals.length) {\n      ticktext = dimension.ticktext;\n\n      // ensure ticktext and tickvals have same length\n      if (!Array.isArray(ticktext) || !ticktext.length) {\n        ticktext = tickvals.map(numberFormat(dimension.tickformat));\n      } else if (ticktext.length > tickvals.length) {\n        ticktext = ticktext.slice(0, tickvals.length);\n      } else if (tickvals.length > ticktext.length) {\n        tickvals = tickvals.slice(0, ticktext.length);\n      }\n\n      // check if we need to sort tickvals/ticktext\n      for (var j = 1; j < tickvals.length; j++) {\n        if (tickvals[j] < tickvals[j - 1]) {\n          var tickItems = tickvals.map(makeTickItem).sort(sortTickItem);\n          for (var k = 0; k < tickvals.length; k++) {\n            tickvals[k] = tickItems[k].val;\n            ticktext[k] = tickItems[k].text;\n          }\n          break;\n        }\n      }\n    } else tickvals = undefined;\n    truncatedValues = helpers.convertTypedArray(truncatedValues);\n    return {\n      key: key,\n      label: dimension.label,\n      tickFormat: dimension.tickformat,\n      tickvals: tickvals,\n      ticktext: ticktext,\n      ordinal: helpers.isOrdinal(dimension),\n      multiselect: dimension.multiselect,\n      xIndex: i,\n      crossfilterDimensionIndex: i,\n      visibleIndex: dimension._index,\n      height: height,\n      values: truncatedValues,\n      paddedUnitValues: truncatedValues.map(domainToPaddedUnit),\n      unitTickvals: tickvals && tickvals.map(domainToPaddedUnit),\n      xScale: xScale,\n      x: xScale(i),\n      canvasX: xScale(i) * canvasPixelRatio,\n      unitToPaddedPx: _unitToPaddedPx,\n      domainScale: domainScale(height, c.verticalPadding, dimension, tickvals, ticktext),\n      ordinalScale: ordinalScale(dimension),\n      parent: vm,\n      model: model,\n      brush: brush.makeBrush(state, filterRangeSpecified, filterRange, function () {\n        state.linePickActive(false);\n      }, brushMove, function (f) {\n        vm.focusLayer.render(vm.panels, true);\n        vm.pickLayer && vm.pickLayer.render(vm.panels, true);\n        state.linePickActive(true);\n        if (callbacks && callbacks.filterChanged) {\n          var invScale = domainToPaddedUnit.invert;\n\n          // update gd.data as if a Plotly.restyle were fired\n          var newRanges = f.map(function (r) {\n            return r.map(invScale).sort(Lib.sorterAsc);\n          }).sort(function (a, b) {\n            return a[0] - b[0];\n          });\n          callbacks.filterChanged(vm.key, dimension._index, newRanges);\n        }\n      })\n    };\n  });\n  return vm;\n}\nfunction styleExtentTexts(selection) {\n  selection.classed(c.cn.axisExtentText, true).attr('text-anchor', 'middle').style('cursor', 'default');\n}\nfunction parcoordsInteractionState() {\n  var linePickActive = true;\n  var contextShown = false;\n  return {\n    linePickActive: function (val) {\n      return arguments.length ? linePickActive = !!val : linePickActive;\n    },\n    contextShown: function (val) {\n      return arguments.length ? contextShown = !!val : contextShown;\n    }\n  };\n}\nfunction calcTilt(angle, position) {\n  var dir = position === 'top' ? 1 : -1;\n  var radians = angle * Math.PI / 180;\n  var dx = Math.sin(radians);\n  var dy = Math.cos(radians);\n  return {\n    dir: dir,\n    dx: dx,\n    dy: dy,\n    degrees: angle\n  };\n}\nfunction updatePanelLayout(yAxis, vm, plotGlPixelRatio) {\n  var panels = vm.panels || (vm.panels = []);\n  var data = yAxis.data();\n  for (var i = 0; i < data.length - 1; i++) {\n    var p = panels[i] || (panels[i] = {});\n    var dim0 = data[i];\n    var dim1 = data[i + 1];\n    p.dim0 = dim0;\n    p.dim1 = dim1;\n    p.canvasX = dim0.canvasX;\n    p.panelSizeX = dim1.canvasX - dim0.canvasX;\n    p.panelSizeY = vm.model.canvasHeight;\n    p.y = 0;\n    p.canvasY = 0;\n    p.plotGlPixelRatio = plotGlPixelRatio;\n  }\n}\nfunction calcAllTicks(cd) {\n  for (var i = 0; i < cd.length; i++) {\n    for (var j = 0; j < cd[i].length; j++) {\n      var trace = cd[i][j].trace;\n      var dimensions = trace.dimensions;\n      for (var k = 0; k < dimensions.length; k++) {\n        var values = dimensions[k].values;\n        var dim = dimensions[k]._ax;\n        if (dim) {\n          if (!dim.range) {\n            dim.range = findExtremes(values, trace._length);\n          } else {\n            dim.range = fixExtremes(dim.range[0], dim.range[1]);\n          }\n          if (!dim.dtick) {\n            dim.dtick = 0.01 * (Math.abs(dim.range[1] - dim.range[0]) || 1);\n          }\n          dim.tickformat = dimensions[k].tickformat;\n          Axes.calcTicks(dim);\n          dim.cleanRange();\n        }\n      }\n    }\n  }\n}\nfunction linearFormat(dim, v) {\n  return Axes.tickText(dim._ax, v, false).text;\n}\nfunction extremeText(d, isTop) {\n  if (d.ordinal) return '';\n  var domain = d.domainScale.domain();\n  var v = domain[isTop ? domain.length - 1 : 0];\n  return linearFormat(d.model.dimensions[d.visibleIndex], v);\n}\nmodule.exports = function parcoords(gd, cdModule, layout, callbacks) {\n  var isStatic = gd._context.staticPlot;\n  var fullLayout = gd._fullLayout;\n  var svg = fullLayout._toppaper;\n  var glContainer = fullLayout._glcontainer;\n  var plotGlPixelRatio = gd._context.plotGlPixelRatio;\n  var paperColor = gd._fullLayout.paper_bgcolor;\n  calcAllTicks(cdModule);\n  var state = parcoordsInteractionState();\n  var vm = cdModule.filter(function (d) {\n    return unwrap(d).trace.visible;\n  }).map(model.bind(0, layout)).map(viewModel.bind(0, state, callbacks));\n  glContainer.each(function (d, i) {\n    return Lib.extendFlat(d, vm[i]);\n  });\n  var glLayers = glContainer.selectAll('.gl-canvas').each(function (d) {\n    // FIXME: figure out how to handle multiple instances\n    d.viewModel = vm[0];\n    d.viewModel.plotGlPixelRatio = plotGlPixelRatio;\n    d.viewModel.paperColor = paperColor;\n    d.model = d.viewModel ? d.viewModel.model : null;\n  });\n  var lastHovered = null;\n  var pickLayer = glLayers.filter(function (d) {\n    return d.pick;\n  });\n\n  // emit hover / unhover event\n  pickLayer.style('pointer-events', isStatic ? 'none' : 'auto').on('mousemove', function (d) {\n    if (state.linePickActive() && d.lineLayer && callbacks && callbacks.hover) {\n      var event = d3.event;\n      var cw = this.width;\n      var ch = this.height;\n      var pointer = d3.mouse(this);\n      var x = pointer[0];\n      var y = pointer[1];\n      if (x < 0 || y < 0 || x >= cw || y >= ch) {\n        return;\n      }\n      var pixel = d.lineLayer.readPixel(x, ch - 1 - y);\n      var found = pixel[3] !== 0;\n      // inverse of the calcPickColor in `lines.js`; detailed comment there\n      var curveNumber = found ? pixel[2] + 256 * (pixel[1] + 256 * pixel[0]) : null;\n      var eventData = {\n        x: x,\n        y: y,\n        clientX: event.clientX,\n        clientY: event.clientY,\n        dataIndex: d.model.key,\n        curveNumber: curveNumber\n      };\n      if (curveNumber !== lastHovered) {\n        // don't unnecessarily repeat the same hit (or miss)\n        if (found) {\n          callbacks.hover(eventData);\n        } else if (callbacks.unhover) {\n          callbacks.unhover(eventData);\n        }\n        lastHovered = curveNumber;\n      }\n    }\n  });\n  glLayers.style('opacity', function (d) {\n    return d.pick ? 0 : 1;\n  });\n  svg.style('background', 'rgba(255, 255, 255, 0)');\n  var controlOverlay = svg.selectAll('.' + c.cn.parcoords).data(vm, keyFun);\n  controlOverlay.exit().remove();\n  controlOverlay.enter().append('g').classed(c.cn.parcoords, true).style('shape-rendering', 'crispEdges').style('pointer-events', 'none');\n  controlOverlay.attr('transform', function (d) {\n    return strTranslate(d.model.translateX, d.model.translateY);\n  });\n  var parcoordsControlView = controlOverlay.selectAll('.' + c.cn.parcoordsControlView).data(repeat, keyFun);\n  parcoordsControlView.enter().append('g').classed(c.cn.parcoordsControlView, true);\n  parcoordsControlView.attr('transform', function (d) {\n    return strTranslate(d.model.pad.l, d.model.pad.t);\n  });\n  var yAxis = parcoordsControlView.selectAll('.' + c.cn.yAxis).data(function (p) {\n    return p.dimensions;\n  }, keyFun);\n  yAxis.enter().append('g').classed(c.cn.yAxis, true);\n  parcoordsControlView.each(function (p) {\n    updatePanelLayout(yAxis, p, plotGlPixelRatio);\n  });\n  glLayers.each(function (d) {\n    if (d.viewModel) {\n      if (!d.lineLayer || callbacks) {\n        // recreate in case of having callbacks e.g. restyle. Should we test for callback to be a restyle?\n        d.lineLayer = lineLayerMaker(this, d);\n      } else d.lineLayer.update(d);\n      if (d.key || d.key === 0) d.viewModel[d.key] = d.lineLayer;\n      var setChanged = !d.context ||\n      // don't update background\n      callbacks; // unless there is a callback on the context layer. Should we test the callback?\n\n      d.lineLayer.render(d.viewModel.panels, setChanged);\n    }\n  });\n  yAxis.attr('transform', function (d) {\n    return strTranslate(d.xScale(d.xIndex), 0);\n  });\n\n  // drag column for reordering columns\n  yAxis.call(d3.behavior.drag().origin(function (d) {\n    return d;\n  }).on('drag', function (d) {\n    var p = d.parent;\n    state.linePickActive(false);\n    d.x = Math.max(-c.overdrag, Math.min(d.model.width + c.overdrag, d3.event.x));\n    d.canvasX = d.x * d.model.canvasPixelRatio;\n    yAxis.sort(function (a, b) {\n      return a.x - b.x;\n    }).each(function (e, i) {\n      e.xIndex = i;\n      e.x = d === e ? e.x : e.xScale(e.xIndex);\n      e.canvasX = e.x * e.model.canvasPixelRatio;\n    });\n    updatePanelLayout(yAxis, p, plotGlPixelRatio);\n    yAxis.filter(function (e) {\n      return Math.abs(d.xIndex - e.xIndex) !== 0;\n    }).attr('transform', function (d) {\n      return strTranslate(d.xScale(d.xIndex), 0);\n    });\n    d3.select(this).attr('transform', strTranslate(d.x, 0));\n    yAxis.each(function (e, i0, i1) {\n      if (i1 === d.parent.key) p.dimensions[i0] = e;\n    });\n    p.contextLayer && p.contextLayer.render(p.panels, false, !someFiltersActive(p));\n    p.focusLayer.render && p.focusLayer.render(p.panels);\n  }).on('dragend', function (d) {\n    var p = d.parent;\n    d.x = d.xScale(d.xIndex);\n    d.canvasX = d.x * d.model.canvasPixelRatio;\n    updatePanelLayout(yAxis, p, plotGlPixelRatio);\n    d3.select(this).attr('transform', function (d) {\n      return strTranslate(d.x, 0);\n    });\n    p.contextLayer && p.contextLayer.render(p.panels, false, !someFiltersActive(p));\n    p.focusLayer && p.focusLayer.render(p.panels);\n    p.pickLayer && p.pickLayer.render(p.panels, true);\n    state.linePickActive(true);\n    if (callbacks && callbacks.axesMoved) {\n      callbacks.axesMoved(p.key, p.dimensions.map(function (e) {\n        return e.crossfilterDimensionIndex;\n      }));\n    }\n  }));\n  yAxis.exit().remove();\n  var axisOverlays = yAxis.selectAll('.' + c.cn.axisOverlays).data(repeat, keyFun);\n  axisOverlays.enter().append('g').classed(c.cn.axisOverlays, true);\n  axisOverlays.selectAll('.' + c.cn.axis).remove();\n  var axis = axisOverlays.selectAll('.' + c.cn.axis).data(repeat, keyFun);\n  axis.enter().append('g').classed(c.cn.axis, true);\n  axis.each(function (d) {\n    var wantedTickCount = d.model.height / d.model.tickDistance;\n    var scale = d.domainScale;\n    var sdom = scale.domain();\n    d3.select(this).call(d3.svg.axis().orient('left').tickSize(4).outerTickSize(2).ticks(wantedTickCount, d.tickFormat) // works for continuous scales only...\n    .tickValues(d.ordinal ?\n    // and this works for ordinal scales\n    sdom : null).tickFormat(function (v) {\n      return helpers.isOrdinal(d) ? v : linearFormat(d.model.dimensions[d.visibleIndex], v);\n    }).scale(scale));\n    Drawing.font(axis.selectAll('text'), d.model.tickFont);\n  });\n  axis.selectAll('.domain, .tick>line').attr('fill', 'none').attr('stroke', 'black').attr('stroke-opacity', 0.25).attr('stroke-width', '1px');\n  axis.selectAll('text').style('text-shadow', svgTextUtils.makeTextShadow(paperColor)).style('cursor', 'default');\n  var axisHeading = axisOverlays.selectAll('.' + c.cn.axisHeading).data(repeat, keyFun);\n  axisHeading.enter().append('g').classed(c.cn.axisHeading, true);\n  var axisTitle = axisHeading.selectAll('.' + c.cn.axisTitle).data(repeat, keyFun);\n  axisTitle.enter().append('text').classed(c.cn.axisTitle, true).attr('text-anchor', 'middle').style('cursor', 'ew-resize').style('pointer-events', isStatic ? 'none' : 'auto');\n  axisTitle.text(function (d) {\n    return d.label;\n  }).each(function (d) {\n    var e = d3.select(this);\n    Drawing.font(e, d.model.labelFont);\n    svgTextUtils.convertToTspans(e, gd);\n  }).attr('transform', function (d) {\n    var tilt = calcTilt(d.model.labelAngle, d.model.labelSide);\n    var r = c.axisTitleOffset;\n    return (tilt.dir > 0 ? '' : strTranslate(0, 2 * r + d.model.height)) + strRotate(tilt.degrees) + strTranslate(-r * tilt.dx, -r * tilt.dy);\n  }).attr('text-anchor', function (d) {\n    var tilt = calcTilt(d.model.labelAngle, d.model.labelSide);\n    var adx = Math.abs(tilt.dx);\n    var ady = Math.abs(tilt.dy);\n    if (2 * adx > ady) {\n      return tilt.dir * tilt.dx < 0 ? 'start' : 'end';\n    } else {\n      return 'middle';\n    }\n  });\n  var axisExtent = axisOverlays.selectAll('.' + c.cn.axisExtent).data(repeat, keyFun);\n  axisExtent.enter().append('g').classed(c.cn.axisExtent, true);\n  var axisExtentTop = axisExtent.selectAll('.' + c.cn.axisExtentTop).data(repeat, keyFun);\n  axisExtentTop.enter().append('g').classed(c.cn.axisExtentTop, true);\n  axisExtentTop.attr('transform', strTranslate(0, -c.axisExtentOffset));\n  var axisExtentTopText = axisExtentTop.selectAll('.' + c.cn.axisExtentTopText).data(repeat, keyFun);\n  axisExtentTopText.enter().append('text').classed(c.cn.axisExtentTopText, true).call(styleExtentTexts);\n  axisExtentTopText.text(function (d) {\n    return extremeText(d, true);\n  }).each(function (d) {\n    Drawing.font(d3.select(this), d.model.rangeFont);\n  });\n  var axisExtentBottom = axisExtent.selectAll('.' + c.cn.axisExtentBottom).data(repeat, keyFun);\n  axisExtentBottom.enter().append('g').classed(c.cn.axisExtentBottom, true);\n  axisExtentBottom.attr('transform', function (d) {\n    return strTranslate(0, d.model.height + c.axisExtentOffset);\n  });\n  var axisExtentBottomText = axisExtentBottom.selectAll('.' + c.cn.axisExtentBottomText).data(repeat, keyFun);\n  axisExtentBottomText.enter().append('text').classed(c.cn.axisExtentBottomText, true).attr('dy', '0.75em').call(styleExtentTexts);\n  axisExtentBottomText.text(function (d) {\n    return extremeText(d, false);\n  }).each(function (d) {\n    Drawing.font(d3.select(this), d.model.rangeFont);\n  });\n  brush.ensureAxisBrush(axisOverlays, paperColor, gd);\n};\n\n/***/ }),\n\n/***/ 21341:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2933725__) {\n\n\"use strict\";\n\n\nvar parcoords = __nested_webpack_require_2933725__(17171);\nvar prepareRegl = __nested_webpack_require_2933725__(79749);\nvar isVisible = (__nested_webpack_require_2933725__(1602).isVisible);\nvar reglPrecompiled = {};\nfunction newIndex(visibleIndices, orig, dim) {\n  var origIndex = orig.indexOf(dim);\n  var currentIndex = visibleIndices.indexOf(origIndex);\n  if (currentIndex === -1) {\n    // invisible dimensions initially go to the end\n    currentIndex += orig.length;\n  }\n  return currentIndex;\n}\nfunction sorter(visibleIndices, orig) {\n  return function sorter(d1, d2) {\n    return newIndex(visibleIndices, orig, d1) - newIndex(visibleIndices, orig, d2);\n  };\n}\nvar exports = module.exports = function plot(gd, cdModule) {\n  var fullLayout = gd._fullLayout;\n  var success = prepareRegl(gd, [], reglPrecompiled);\n  if (!success) return;\n  var currentDims = {};\n  var initialDims = {};\n  var fullIndices = {};\n  var inputIndices = {};\n  var size = fullLayout._size;\n  cdModule.forEach(function (d, i) {\n    var trace = d[0].trace;\n    fullIndices[i] = trace.index;\n    var iIn = inputIndices[i] = trace._fullInput.index;\n    currentDims[i] = gd.data[iIn].dimensions;\n    initialDims[i] = gd.data[iIn].dimensions.slice();\n  });\n  var filterChanged = function (i, initialDimIndex, newRanges) {\n    // Have updated `constraintrange` data on `gd.data` and raise `Plotly.restyle` event\n    // without having to incur heavy UI blocking due to an actual `Plotly.restyle` call\n\n    var dim = initialDims[i][initialDimIndex];\n    var newConstraints = newRanges.map(function (r) {\n      return r.slice();\n    });\n\n    // Store constraint range in preGUI\n    // This one doesn't work if it's stored in pieces in _storeDirectGUIEdit\n    // because it's an array of variable dimensionality. So store the whole\n    // thing at once manually.\n    var aStr = 'dimensions[' + initialDimIndex + '].constraintrange';\n    var preGUI = fullLayout._tracePreGUI[gd._fullData[fullIndices[i]]._fullInput.uid];\n    if (preGUI[aStr] === undefined) {\n      var initialVal = dim.constraintrange;\n      preGUI[aStr] = initialVal || null;\n    }\n    var fullDimension = gd._fullData[fullIndices[i]].dimensions[initialDimIndex];\n    if (!newConstraints.length) {\n      delete dim.constraintrange;\n      delete fullDimension.constraintrange;\n      newConstraints = null;\n    } else {\n      if (newConstraints.length === 1) newConstraints = newConstraints[0];\n      dim.constraintrange = newConstraints;\n      fullDimension.constraintrange = newConstraints.slice();\n      // wrap in another array for restyle event data\n      newConstraints = [newConstraints];\n    }\n    var restyleData = {};\n    restyleData[aStr] = newConstraints;\n    gd.emit('plotly_restyle', [restyleData, [inputIndices[i]]]);\n  };\n  var hover = function (eventData) {\n    gd.emit('plotly_hover', eventData);\n  };\n  var unhover = function (eventData) {\n    gd.emit('plotly_unhover', eventData);\n  };\n  var axesMoved = function (i, visibleIndices) {\n    // Have updated order data on `gd.data` and raise `Plotly.restyle` event\n    // without having to incur heavy UI blocking due to an actual `Plotly.restyle` call\n\n    // drag&drop sorting of the visible dimensions\n    var orig = sorter(visibleIndices, initialDims[i].filter(isVisible));\n    currentDims[i].sort(orig);\n\n    // invisible dimensions are not interpreted in the context of drag&drop sorting as an invisible dimension\n    // cannot be dragged; they're interspersed into their original positions by this subsequent merging step\n    initialDims[i].filter(function (d) {\n      return !isVisible(d);\n    }).sort(function (d) {\n      // subsequent splicing to be done left to right, otherwise indices may be incorrect\n      return initialDims[i].indexOf(d);\n    }).forEach(function (d) {\n      currentDims[i].splice(currentDims[i].indexOf(d), 1); // remove from the end\n      currentDims[i].splice(initialDims[i].indexOf(d), 0, d); // insert at original index\n    });\n\n    // TODO: we can't really store this part of the interaction state\n    // directly as below, since it incudes data arrays. If we want to\n    // persist column order we may have to do something special for this\n    // case to just store the order itself.\n    // Registry.call('_storeDirectGUIEdit',\n    //     gd.data[inputIndices[i]],\n    //     fullLayout._tracePreGUI[gd._fullData[fullIndices[i]]._fullInput.uid],\n    //     {dimensions: currentDims[i]}\n    // );\n\n    gd.emit('plotly_restyle', [{\n      dimensions: [currentDims[i]]\n    }, [inputIndices[i]]]);\n  };\n  parcoords(gd, cdModule, {\n    // layout\n    width: size.w,\n    height: size.h,\n    margin: {\n      t: size.t,\n      r: size.r,\n      b: size.b,\n      l: size.l\n    }\n  }, {\n    // callbacks\n    filterChanged: filterChanged,\n    hover: hover,\n    unhover: unhover,\n    axesMoved: axesMoved\n  });\n};\nexports.reglPrecompiled = reglPrecompiled;\n\n/***/ }),\n\n/***/ 34000:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2938673__) {\n\n\"use strict\";\n\n\nvar baseAttrs = __nested_webpack_require_2938673__(9012);\nvar domainAttrs = (__nested_webpack_require_2938673__(27670)/* .attributes */ .Y);\nvar fontAttrs = __nested_webpack_require_2938673__(41940);\nvar colorAttrs = __nested_webpack_require_2938673__(22399);\nvar hovertemplateAttrs = (__nested_webpack_require_2938673__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_2938673__(5386)/* .texttemplateAttrs */ .s);\nvar extendFlat = (__nested_webpack_require_2938673__(1426).extendFlat);\nvar textFontAttrs = fontAttrs({\n  editType: 'plot',\n  arrayOk: true,\n  colorEditType: 'plot'\n});\nmodule.exports = {\n  labels: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  // equivalent of x0 and dx, if label is missing\n  label0: {\n    valType: 'number',\n    dflt: 0,\n    editType: 'calc'\n  },\n  dlabel: {\n    valType: 'number',\n    dflt: 1,\n    editType: 'calc'\n  },\n  values: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  marker: {\n    colors: {\n      valType: 'data_array',\n      // TODO 'color_array' ?\n      editType: 'calc'\n    },\n    line: {\n      color: {\n        valType: 'color',\n        dflt: colorAttrs.defaultLine,\n        arrayOk: true,\n        editType: 'style'\n      },\n      width: {\n        valType: 'number',\n        min: 0,\n        dflt: 0,\n        arrayOk: true,\n        editType: 'style'\n      },\n      editType: 'calc'\n    },\n    editType: 'calc'\n  },\n  text: {\n    valType: 'data_array',\n    editType: 'plot'\n  },\n  hovertext: {\n    valType: 'string',\n    dflt: '',\n    arrayOk: true,\n    editType: 'style'\n  },\n  // 'see eg:'\n  // 'https://www.e-education.psu.edu/natureofgeoinfo/sites/www.e-education.psu.edu.natureofgeoinfo/files/image/hisp_pies.gif',\n  // '(this example involves a map too - may someday be a whole trace type',\n  // 'of its own. but the point is the size of the whole pie is important.)'\n  scalegroup: {\n    valType: 'string',\n    dflt: '',\n    editType: 'calc'\n  },\n  // labels (legend is handled by plots.attributes.showlegend and layout.hiddenlabels)\n  textinfo: {\n    valType: 'flaglist',\n    flags: ['label', 'text', 'value', 'percent'],\n    extras: ['none'],\n    editType: 'calc'\n  },\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {\n    flags: ['label', 'text', 'value', 'percent', 'name']\n  }),\n  hovertemplate: hovertemplateAttrs({}, {\n    keys: ['label', 'color', 'value', 'percent', 'text']\n  }),\n  texttemplate: texttemplateAttrs({\n    editType: 'plot'\n  }, {\n    keys: ['label', 'color', 'value', 'percent', 'text']\n  }),\n  textposition: {\n    valType: 'enumerated',\n    values: ['inside', 'outside', 'auto', 'none'],\n    dflt: 'auto',\n    arrayOk: true,\n    editType: 'plot'\n  },\n  textfont: extendFlat({}, textFontAttrs, {}),\n  insidetextorientation: {\n    valType: 'enumerated',\n    values: ['horizontal', 'radial', 'tangential', 'auto'],\n    dflt: 'auto',\n    editType: 'plot'\n  },\n  insidetextfont: extendFlat({}, textFontAttrs, {}),\n  outsidetextfont: extendFlat({}, textFontAttrs, {}),\n  automargin: {\n    valType: 'boolean',\n    dflt: false,\n    editType: 'plot'\n  },\n  title: {\n    text: {\n      valType: 'string',\n      dflt: '',\n      editType: 'plot'\n    },\n    font: extendFlat({}, textFontAttrs, {}),\n    position: {\n      valType: 'enumerated',\n      values: ['top left', 'top center', 'top right', 'middle center', 'bottom left', 'bottom center', 'bottom right'],\n      editType: 'plot'\n    },\n    editType: 'plot'\n  },\n  // position and shape\n  domain: domainAttrs({\n    name: 'pie',\n    trace: true,\n    editType: 'calc'\n  }),\n  hole: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 0,\n    editType: 'calc'\n  },\n  // ordering and direction\n  sort: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc'\n  },\n  direction: {\n    /**\n     * there are two common conventions, both of which place the first\n     * (largest, if sorted) slice with its left edge at 12 o'clock but\n     * succeeding slices follow either cw or ccw from there.\n     *\n     * see http://visage.co/data-visualization-101-pie-charts/\n     */\n    valType: 'enumerated',\n    values: ['clockwise', 'counterclockwise'],\n    dflt: 'counterclockwise',\n    editType: 'calc'\n  },\n  rotation: {\n    valType: 'angle',\n    dflt: 0,\n    editType: 'calc'\n  },\n  pull: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 0,\n    arrayOk: true,\n    editType: 'calc'\n  },\n  _deprecated: {\n    title: {\n      valType: 'string',\n      dflt: '',\n      editType: 'calc'\n    },\n    titlefont: extendFlat({}, textFontAttrs, {}),\n    titleposition: {\n      valType: 'enumerated',\n      values: ['top left', 'top center', 'top right', 'middle center', 'bottom left', 'bottom center', 'bottom right'],\n      editType: 'calc'\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 13584:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_2943415__) {\n\n\"use strict\";\n\n\nvar plots = __nested_webpack_require_2943415__(74875);\nexports.name = 'pie';\nexports.plot = function (gd, traces, transitionOpts, makeOnCompleteCallback) {\n  plots.plotBasePlot(exports.name, gd, traces, transitionOpts, makeOnCompleteCallback);\n};\nexports.clean = function (newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  plots.cleanBasePlot(exports.name, newFullData, newFullLayout, oldFullData, oldFullLayout);\n};\n\n/***/ }),\n\n/***/ 32354:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2943942__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_2943942__(92770);\nvar tinycolor = __nested_webpack_require_2943942__(84267);\nvar Color = __nested_webpack_require_2943942__(7901);\nvar extendedColorWayList = {};\nfunction calc(gd, trace) {\n  var cd = [];\n  var fullLayout = gd._fullLayout;\n  var hiddenLabels = fullLayout.hiddenlabels || [];\n  var labels = trace.labels;\n  var colors = trace.marker.colors || [];\n  var vals = trace.values;\n  var len = trace._length;\n  var hasValues = trace._hasValues && len;\n  var i, pt;\n  if (trace.dlabel) {\n    labels = new Array(len);\n    for (i = 0; i < len; i++) {\n      labels[i] = String(trace.label0 + i * trace.dlabel);\n    }\n  }\n  var allThisTraceLabels = {};\n  var pullColor = makePullColorFn(fullLayout['_' + trace.type + 'colormap']);\n  var vTotal = 0;\n  var isAggregated = false;\n  for (i = 0; i < len; i++) {\n    var v, label, hidden;\n    if (hasValues) {\n      v = vals[i];\n      if (!isNumeric(v)) continue;\n      v = +v;\n    } else v = 1;\n    label = labels[i];\n    if (label === undefined || label === '') label = i;\n    label = String(label);\n    var thisLabelIndex = allThisTraceLabels[label];\n    if (thisLabelIndex === undefined) {\n      allThisTraceLabels[label] = cd.length;\n      hidden = hiddenLabels.indexOf(label) !== -1;\n      if (!hidden) vTotal += v;\n      cd.push({\n        v: v,\n        label: label,\n        color: pullColor(colors[i], label),\n        i: i,\n        pts: [i],\n        hidden: hidden\n      });\n    } else {\n      isAggregated = true;\n      pt = cd[thisLabelIndex];\n      pt.v += v;\n      pt.pts.push(i);\n      if (!pt.hidden) vTotal += v;\n      if (pt.color === false && colors[i]) {\n        pt.color = pullColor(colors[i], label);\n      }\n    }\n  }\n\n  // Drop aggregate sums of value 0 or less\n  cd = cd.filter(function (elem) {\n    return elem.v >= 0;\n  });\n  var shouldSort = trace.type === 'funnelarea' ? isAggregated : trace.sort;\n  if (shouldSort) cd.sort(function (a, b) {\n    return b.v - a.v;\n  });\n\n  // include the sum of all values in the first point\n  if (cd[0]) cd[0].vTotal = vTotal;\n  return cd;\n}\nfunction makePullColorFn(colorMap) {\n  return function pullColor(color, id) {\n    if (!color) return false;\n    color = tinycolor(color);\n    if (!color.isValid()) return false;\n    color = Color.addOpacity(color, color.getAlpha());\n    if (!colorMap[id]) colorMap[id] = color;\n    return color;\n  };\n}\n\n/*\n * `calc` filled in (and collated) explicit colors.\n * Now we need to propagate these explicit colors to other traces,\n * and fill in default colors.\n * This is done after sorting, so we pick defaults\n * in the order slices will be displayed\n */\nfunction crossTraceCalc(gd, plotinfo) {\n  // TODO: should we name the second argument opts?\n  var desiredType = (plotinfo || {}).type;\n  if (!desiredType) desiredType = 'pie';\n  var fullLayout = gd._fullLayout;\n  var calcdata = gd.calcdata;\n  var colorWay = fullLayout[desiredType + 'colorway'];\n  var colorMap = fullLayout['_' + desiredType + 'colormap'];\n  if (fullLayout['extend' + desiredType + 'colors']) {\n    colorWay = generateExtendedColors(colorWay, extendedColorWayList);\n  }\n  var dfltColorCount = 0;\n  for (var i = 0; i < calcdata.length; i++) {\n    var cd = calcdata[i];\n    var traceType = cd[0].trace.type;\n    if (traceType !== desiredType) continue;\n    for (var j = 0; j < cd.length; j++) {\n      var pt = cd[j];\n      if (pt.color === false) {\n        // have we seen this label and assigned a color to it in a previous trace?\n        if (colorMap[pt.label]) {\n          pt.color = colorMap[pt.label];\n        } else {\n          colorMap[pt.label] = pt.color = colorWay[dfltColorCount % colorWay.length];\n          dfltColorCount++;\n        }\n      }\n    }\n  }\n}\n\n/**\n * pick a default color from the main default set, augmented by\n * itself lighter then darker before repeating\n */\nfunction generateExtendedColors(colorList, extendedColorWays) {\n  var i;\n  var colorString = JSON.stringify(colorList);\n  var colors = extendedColorWays[colorString];\n  if (!colors) {\n    colors = colorList.slice();\n    for (i = 0; i < colorList.length; i++) {\n      colors.push(tinycolor(colorList[i]).lighten(20).toHexString());\n    }\n    for (i = 0; i < colorList.length; i++) {\n      colors.push(tinycolor(colorList[i]).darken(20).toHexString());\n    }\n    extendedColorWays[colorString] = colors;\n  }\n  return colors;\n}\nmodule.exports = {\n  calc: calc,\n  crossTraceCalc: crossTraceCalc,\n  makePullColorFn: makePullColorFn,\n  generateExtendedColors: generateExtendedColors\n};\n\n/***/ }),\n\n/***/ 37434:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2948538__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_2948538__(92770);\nvar Lib = __nested_webpack_require_2948538__(71828);\nvar attributes = __nested_webpack_require_2948538__(34000);\nvar handleDomainDefaults = (__nested_webpack_require_2948538__(27670)/* .defaults */ .c);\nvar handleText = (__nested_webpack_require_2948538__(90769).handleText);\nfunction handleLabelsAndValues(labels, values) {\n  var hasLabels = Array.isArray(labels);\n  var hasValues = Lib.isArrayOrTypedArray(values);\n  var len = Math.min(hasLabels ? labels.length : Infinity, hasValues ? values.length : Infinity);\n  if (!isFinite(len)) len = 0;\n  if (len && hasValues) {\n    var hasPositive;\n    for (var i = 0; i < len; i++) {\n      var v = values[i];\n      if (isNumeric(v) && v > 0) {\n        hasPositive = true;\n        break;\n      }\n    }\n    if (!hasPositive) len = 0;\n  }\n  return {\n    hasLabels: hasLabels,\n    hasValues: hasValues,\n    len: len\n  };\n}\nfunction supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var labels = coerce('labels');\n  var values = coerce('values');\n  var res = handleLabelsAndValues(labels, values);\n  var len = res.len;\n  traceOut._hasLabels = res.hasLabels;\n  traceOut._hasValues = res.hasValues;\n  if (!traceOut._hasLabels && traceOut._hasValues) {\n    coerce('label0');\n    coerce('dlabel');\n  }\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  traceOut._length = len;\n  var lineWidth = coerce('marker.line.width');\n  if (lineWidth) coerce('marker.line.color');\n  coerce('marker.colors');\n  coerce('scalegroup');\n  // TODO: hole needs to be coerced to the same value within a scaleegroup\n\n  var textData = coerce('text');\n  var textTemplate = coerce('texttemplate');\n  var textInfo;\n  if (!textTemplate) textInfo = coerce('textinfo', Array.isArray(textData) ? 'text+percent' : 'percent');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  if (textTemplate || textInfo && textInfo !== 'none') {\n    var textposition = coerce('textposition');\n    handleText(traceIn, traceOut, layout, coerce, textposition, {\n      moduleHasSelected: false,\n      moduleHasUnselected: false,\n      moduleHasConstrain: false,\n      moduleHasCliponaxis: false,\n      moduleHasTextangle: false,\n      moduleHasInsideanchor: false\n    });\n    var hasBoth = Array.isArray(textposition) || textposition === 'auto';\n    var hasOutside = hasBoth || textposition === 'outside';\n    if (hasOutside) {\n      coerce('automargin');\n    }\n    if (textposition === 'inside' || textposition === 'auto' || Array.isArray(textposition)) {\n      coerce('insidetextorientation');\n    }\n  }\n  handleDomainDefaults(traceOut, layout, coerce);\n  var hole = coerce('hole');\n  var title = coerce('title.text');\n  if (title) {\n    var titlePosition = coerce('title.position', hole ? 'middle center' : 'top center');\n    if (!hole && titlePosition === 'middle center') traceOut.title.position = 'top center';\n    Lib.coerceFont(coerce, 'title.font', layout.font);\n  }\n  coerce('sort');\n  coerce('direction');\n  coerce('rotation');\n  coerce('pull');\n}\nmodule.exports = {\n  handleLabelsAndValues: handleLabelsAndValues,\n  supplyDefaults: supplyDefaults\n};\n\n/***/ }),\n\n/***/ 20007:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2951812__) {\n\n\"use strict\";\n\n\nvar appendArrayMultiPointValues = (__nested_webpack_require_2951812__(23469).appendArrayMultiPointValues);\n\n// Note: like other eventData routines, this creates the data for hover/unhover/click events\n// but it has a different API and goes through a totally different pathway.\n// So to ensure it doesn't get misused, it's not attached to the Pie module.\nmodule.exports = function eventData(pt, trace) {\n  var out = {\n    curveNumber: trace.index,\n    pointNumbers: pt.pts,\n    data: trace._input,\n    fullData: trace,\n    label: pt.label,\n    color: pt.color,\n    value: pt.v,\n    percent: pt.percent,\n    text: pt.text,\n    bbox: pt.bbox,\n    // pt.v (and pt.i below) for backward compatibility\n    v: pt.v\n  };\n\n  // Only include pointNumber if it's unambiguous\n  if (pt.pts.length === 1) out.pointNumber = out.i = pt.pts[0];\n\n  // Add extra data arrays to the output\n  // notice that this is the multi-point version ('s' on the end!)\n  // so added data will be arrays matching the pointNumbers array.\n  appendArrayMultiPointValues(out, trace, pt.pts);\n\n  // don't include obsolete fields in new funnelarea traces\n  if (trace.type === 'funnelarea') {\n    delete out.v;\n    delete out.i;\n  }\n  return out;\n};\n\n/***/ }),\n\n/***/ 53581:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_2953122__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2953122__(71828);\nfunction format(vRounded) {\n  return vRounded.indexOf('e') !== -1 ? vRounded.replace(/[.]?0+e/, 'e') : vRounded.indexOf('.') !== -1 ? vRounded.replace(/[.]?0+$/, '') : vRounded;\n}\nexports.formatPiePercent = function formatPiePercent(v, separators) {\n  var vRounded = format((v * 100).toPrecision(3));\n  return Lib.numSeparate(vRounded, separators) + '%';\n};\nexports.formatPieValue = function formatPieValue(v, separators) {\n  var vRounded = format(v.toPrecision(10));\n  return Lib.numSeparate(vRounded, separators);\n};\nexports.getFirstFilled = function getFirstFilled(array, indices) {\n  if (!Array.isArray(array)) return;\n  for (var i = 0; i < indices.length; i++) {\n    var v = array[indices[i]];\n    if (v || v === 0 || v === '') return v;\n  }\n};\nexports.castOption = function castOption(item, indices) {\n  if (Array.isArray(item)) return exports.getFirstFilled(item, indices);else if (item) return item;\n};\nexports.getRotationAngle = function (rotation) {\n  return (rotation === 'auto' ? 0 : rotation) * Math.PI / 180;\n};\n\n/***/ }),\n\n/***/ 58810:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2954301__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_2954301__(34000),\n  supplyDefaults: (__nested_webpack_require_2954301__(37434).supplyDefaults),\n  supplyLayoutDefaults: __nested_webpack_require_2954301__(92097),\n  layoutAttributes: __nested_webpack_require_2954301__(92774),\n  calc: (__nested_webpack_require_2954301__(32354).calc),\n  crossTraceCalc: (__nested_webpack_require_2954301__(32354).crossTraceCalc),\n  plot: (__nested_webpack_require_2954301__(14575).plot),\n  style: __nested_webpack_require_2954301__(68357),\n  styleOne: __nested_webpack_require_2954301__(63463),\n  moduleType: 'trace',\n  name: 'pie',\n  basePlotModule: __nested_webpack_require_2954301__(13584),\n  categories: ['pie-like', 'pie', 'showLegend'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 92774:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  hiddenlabels: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  piecolorway: {\n    valType: 'colorlist',\n    editType: 'calc'\n  },\n  extendpiecolors: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc'\n  }\n};\n\n/***/ }),\n\n/***/ 92097:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2955329__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_2955329__(71828);\nvar layoutAttributes = __nested_webpack_require_2955329__(92774);\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n  }\n  coerce('hiddenlabels');\n  coerce('piecolorway', layoutOut.colorway);\n  coerce('extendpiecolors');\n};\n\n/***/ }),\n\n/***/ 14575:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2955816__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2955816__(39898);\nvar Plots = __nested_webpack_require_2955816__(74875);\nvar Fx = __nested_webpack_require_2955816__(30211);\nvar Color = __nested_webpack_require_2955816__(7901);\nvar Drawing = __nested_webpack_require_2955816__(91424);\nvar Lib = __nested_webpack_require_2955816__(71828);\nvar strScale = Lib.strScale;\nvar strTranslate = Lib.strTranslate;\nvar svgTextUtils = __nested_webpack_require_2955816__(63893);\nvar uniformText = __nested_webpack_require_2955816__(72597);\nvar recordMinTextSize = uniformText.recordMinTextSize;\nvar clearMinTextSize = uniformText.clearMinTextSize;\nvar TEXTPAD = (__nested_webpack_require_2955816__(97313).TEXTPAD);\nvar helpers = __nested_webpack_require_2955816__(53581);\nvar eventData = __nested_webpack_require_2955816__(20007);\nvar isValidTextValue = (__nested_webpack_require_2955816__(71828).isValidTextValue);\nfunction plot(gd, cdModule) {\n  var isStatic = gd._context.staticPlot;\n  var fullLayout = gd._fullLayout;\n  var gs = fullLayout._size;\n  clearMinTextSize('pie', fullLayout);\n  prerenderTitles(cdModule, gd);\n  layoutAreas(cdModule, gs);\n  var plotGroups = Lib.makeTraceGroups(fullLayout._pielayer, cdModule, 'trace').each(function (cd) {\n    var plotGroup = d3.select(this);\n    var cd0 = cd[0];\n    var trace = cd0.trace;\n    setCoords(cd);\n\n    // TODO: miter might look better but can sometimes cause problems\n    // maybe miter with a small-ish stroke-miterlimit?\n    plotGroup.attr('stroke-linejoin', 'round');\n    plotGroup.each(function () {\n      var slices = d3.select(this).selectAll('g.slice').data(cd);\n      slices.enter().append('g').classed('slice', true);\n      slices.exit().remove();\n      var quadrants = [[[], []],\n      // y<0: x<0, x>=0\n      [[], []] // y>=0: x<0, x>=0\n      ];\n\n      var hasOutsideText = false;\n      slices.each(function (pt, i) {\n        if (pt.hidden) {\n          d3.select(this).selectAll('path,g').remove();\n          return;\n        }\n\n        // to have consistent event data compared to other traces\n        pt.pointNumber = pt.i;\n        pt.curveNumber = trace.index;\n        quadrants[pt.pxmid[1] < 0 ? 0 : 1][pt.pxmid[0] < 0 ? 0 : 1].push(pt);\n        var cx = cd0.cx;\n        var cy = cd0.cy;\n        var sliceTop = d3.select(this);\n        var slicePath = sliceTop.selectAll('path.surface').data([pt]);\n        slicePath.enter().append('path').classed('surface', true).style({\n          'pointer-events': isStatic ? 'none' : 'all'\n        });\n        sliceTop.call(attachFxHandlers, gd, cd);\n        if (trace.pull) {\n          var pull = +helpers.castOption(trace.pull, pt.pts) || 0;\n          if (pull > 0) {\n            cx += pull * pt.pxmid[0];\n            cy += pull * pt.pxmid[1];\n          }\n        }\n        pt.cxFinal = cx;\n        pt.cyFinal = cy;\n        function arc(start, finish, cw, scale) {\n          var dx = scale * (finish[0] - start[0]);\n          var dy = scale * (finish[1] - start[1]);\n          return 'a' + scale * cd0.r + ',' + scale * cd0.r + ' 0 ' + pt.largeArc + (cw ? ' 1 ' : ' 0 ') + dx + ',' + dy;\n        }\n        var hole = trace.hole;\n        if (pt.v === cd0.vTotal) {\n          // 100% fails bcs arc start and end are identical\n          var outerCircle = 'M' + (cx + pt.px0[0]) + ',' + (cy + pt.px0[1]) + arc(pt.px0, pt.pxmid, true, 1) + arc(pt.pxmid, pt.px0, true, 1) + 'Z';\n          if (hole) {\n            slicePath.attr('d', 'M' + (cx + hole * pt.px0[0]) + ',' + (cy + hole * pt.px0[1]) + arc(pt.px0, pt.pxmid, false, hole) + arc(pt.pxmid, pt.px0, false, hole) + 'Z' + outerCircle);\n          } else slicePath.attr('d', outerCircle);\n        } else {\n          var outerArc = arc(pt.px0, pt.px1, true, 1);\n          if (hole) {\n            var rim = 1 - hole;\n            slicePath.attr('d', 'M' + (cx + hole * pt.px1[0]) + ',' + (cy + hole * pt.px1[1]) + arc(pt.px1, pt.px0, false, hole) + 'l' + rim * pt.px0[0] + ',' + rim * pt.px0[1] + outerArc + 'Z');\n          } else {\n            slicePath.attr('d', 'M' + cx + ',' + cy + 'l' + pt.px0[0] + ',' + pt.px0[1] + outerArc + 'Z');\n          }\n        }\n\n        // add text\n        formatSliceLabel(gd, pt, cd0);\n        var textPosition = helpers.castOption(trace.textposition, pt.pts);\n        var sliceTextGroup = sliceTop.selectAll('g.slicetext').data(pt.text && textPosition !== 'none' ? [0] : []);\n        sliceTextGroup.enter().append('g').classed('slicetext', true);\n        sliceTextGroup.exit().remove();\n        sliceTextGroup.each(function () {\n          var sliceText = Lib.ensureSingle(d3.select(this), 'text', '', function (s) {\n            // prohibit tex interpretation until we can handle\n            // tex and regular text together\n            s.attr('data-notex', 1);\n          });\n          var font = Lib.ensureUniformFontSize(gd, textPosition === 'outside' ? determineOutsideTextFont(trace, pt, fullLayout.font) : determineInsideTextFont(trace, pt, fullLayout.font));\n          sliceText.text(pt.text).attr({\n            'class': 'slicetext',\n            transform: '',\n            'text-anchor': 'middle'\n          }).call(Drawing.font, font).call(svgTextUtils.convertToTspans, gd);\n\n          // position the text relative to the slice\n          var textBB = Drawing.bBox(sliceText.node());\n          var transform;\n          if (textPosition === 'outside') {\n            transform = transformOutsideText(textBB, pt);\n          } else {\n            transform = transformInsideText(textBB, pt, cd0);\n            if (textPosition === 'auto' && transform.scale < 1) {\n              var newFont = Lib.ensureUniformFontSize(gd, trace.outsidetextfont);\n              sliceText.call(Drawing.font, newFont);\n              textBB = Drawing.bBox(sliceText.node());\n              transform = transformOutsideText(textBB, pt);\n            }\n          }\n          var textPosAngle = transform.textPosAngle;\n          var textXY = textPosAngle === undefined ? pt.pxmid : getCoords(cd0.r, textPosAngle);\n          transform.targetX = cx + textXY[0] * transform.rCenter + (transform.x || 0);\n          transform.targetY = cy + textXY[1] * transform.rCenter + (transform.y || 0);\n          computeTransform(transform, textBB);\n\n          // save some stuff to use later ensure no labels overlap\n          if (transform.outside) {\n            var targetY = transform.targetY;\n            pt.yLabelMin = targetY - textBB.height / 2;\n            pt.yLabelMid = targetY;\n            pt.yLabelMax = targetY + textBB.height / 2;\n            pt.labelExtraX = 0;\n            pt.labelExtraY = 0;\n            hasOutsideText = true;\n          }\n          transform.fontSize = font.size;\n          recordMinTextSize(trace.type, transform, fullLayout);\n          cd[i].transform = transform;\n          Lib.setTransormAndDisplay(sliceText, transform);\n        });\n      });\n\n      // add the title\n      var titleTextGroup = d3.select(this).selectAll('g.titletext').data(trace.title.text ? [0] : []);\n      titleTextGroup.enter().append('g').classed('titletext', true);\n      titleTextGroup.exit().remove();\n      titleTextGroup.each(function () {\n        var titleText = Lib.ensureSingle(d3.select(this), 'text', '', function (s) {\n          // prohibit tex interpretation as above\n          s.attr('data-notex', 1);\n        });\n        var txt = trace.title.text;\n        if (trace._meta) {\n          txt = Lib.templateString(txt, trace._meta);\n        }\n        titleText.text(txt).attr({\n          'class': 'titletext',\n          transform: '',\n          'text-anchor': 'middle'\n        }).call(Drawing.font, trace.title.font).call(svgTextUtils.convertToTspans, gd);\n        var transform;\n        if (trace.title.position === 'middle center') {\n          transform = positionTitleInside(cd0);\n        } else {\n          transform = positionTitleOutside(cd0, gs);\n        }\n        titleText.attr('transform', strTranslate(transform.x, transform.y) + strScale(Math.min(1, transform.scale)) + strTranslate(transform.tx, transform.ty));\n      });\n\n      // now make sure no labels overlap (at least within one pie)\n      if (hasOutsideText) scootLabels(quadrants, trace);\n      plotTextLines(slices, trace);\n      if (hasOutsideText && trace.automargin) {\n        // TODO if we ever want to improve perf,\n        // we could reuse the textBB computed above together\n        // with the sliceText transform info\n        var traceBbox = Drawing.bBox(plotGroup.node());\n        var domain = trace.domain;\n        var vpw = gs.w * (domain.x[1] - domain.x[0]);\n        var vph = gs.h * (domain.y[1] - domain.y[0]);\n        var xgap = (0.5 * vpw - cd0.r) / gs.w;\n        var ygap = (0.5 * vph - cd0.r) / gs.h;\n        Plots.autoMargin(gd, 'pie.' + trace.uid + '.automargin', {\n          xl: domain.x[0] - xgap,\n          xr: domain.x[1] + xgap,\n          yb: domain.y[0] - ygap,\n          yt: domain.y[1] + ygap,\n          l: Math.max(cd0.cx - cd0.r - traceBbox.left, 0),\n          r: Math.max(traceBbox.right - (cd0.cx + cd0.r), 0),\n          b: Math.max(traceBbox.bottom - (cd0.cy + cd0.r), 0),\n          t: Math.max(cd0.cy - cd0.r - traceBbox.top, 0),\n          pad: 5\n        });\n      }\n    });\n  });\n\n  // This is for a bug in Chrome (as of 2015-07-22, and does not affect FF)\n  // if insidetextfont and outsidetextfont are different sizes, sometimes the size\n  // of an \"em\" gets taken from the wrong element at first so lines are\n  // spaced wrong. You just have to tell it to try again later and it gets fixed.\n  // I have no idea why we haven't seen this in other contexts. Also, sometimes\n  // it gets the initial draw correct but on redraw it gets confused.\n  setTimeout(function () {\n    plotGroups.selectAll('tspan').each(function () {\n      var s = d3.select(this);\n      if (s.attr('dy')) s.attr('dy', s.attr('dy'));\n    });\n  }, 0);\n}\n\n// TODO add support for transition\nfunction plotTextLines(slices, trace) {\n  slices.each(function (pt) {\n    var sliceTop = d3.select(this);\n    if (!pt.labelExtraX && !pt.labelExtraY) {\n      sliceTop.select('path.textline').remove();\n      return;\n    }\n\n    // first move the text to its new location\n    var sliceText = sliceTop.select('g.slicetext text');\n    pt.transform.targetX += pt.labelExtraX;\n    pt.transform.targetY += pt.labelExtraY;\n    Lib.setTransormAndDisplay(sliceText, pt.transform);\n\n    // then add a line to the new location\n    var lineStartX = pt.cxFinal + pt.pxmid[0];\n    var lineStartY = pt.cyFinal + pt.pxmid[1];\n    var textLinePath = 'M' + lineStartX + ',' + lineStartY;\n    var finalX = (pt.yLabelMax - pt.yLabelMin) * (pt.pxmid[0] < 0 ? -1 : 1) / 4;\n    if (pt.labelExtraX) {\n      var yFromX = pt.labelExtraX * pt.pxmid[1] / pt.pxmid[0];\n      var yNet = pt.yLabelMid + pt.labelExtraY - (pt.cyFinal + pt.pxmid[1]);\n      if (Math.abs(yFromX) > Math.abs(yNet)) {\n        textLinePath += 'l' + yNet * pt.pxmid[0] / pt.pxmid[1] + ',' + yNet + 'H' + (lineStartX + pt.labelExtraX + finalX);\n      } else {\n        textLinePath += 'l' + pt.labelExtraX + ',' + yFromX + 'v' + (yNet - yFromX) + 'h' + finalX;\n      }\n    } else {\n      textLinePath += 'V' + (pt.yLabelMid + pt.labelExtraY) + 'h' + finalX;\n    }\n    Lib.ensureSingle(sliceTop, 'path', 'textline').call(Color.stroke, trace.outsidetextfont.color).attr({\n      'stroke-width': Math.min(2, trace.outsidetextfont.size / 8),\n      d: textLinePath,\n      fill: 'none'\n    });\n  });\n}\nfunction attachFxHandlers(sliceTop, gd, cd) {\n  var cd0 = cd[0];\n  var cx = cd0.cx;\n  var cy = cd0.cy;\n  var trace = cd0.trace;\n  var isFunnelArea = trace.type === 'funnelarea';\n\n  // hover state vars\n  // have we drawn a hover label, so it should be cleared later\n  if (!('_hasHoverLabel' in trace)) trace._hasHoverLabel = false;\n  // have we emitted a hover event, so later an unhover event should be emitted\n  // note that click events do not depend on this - you can still get them\n  // with hovermode: false or if you were earlier dragging, then clicked\n  // in the same slice that you moused up in\n  if (!('_hasHoverEvent' in trace)) trace._hasHoverEvent = false;\n  sliceTop.on('mouseover', function (pt) {\n    // in case fullLayout or fullData has changed without a replot\n    var fullLayout2 = gd._fullLayout;\n    var trace2 = gd._fullData[trace.index];\n    if (gd._dragging || fullLayout2.hovermode === false) return;\n    var hoverinfo = trace2.hoverinfo;\n    if (Array.isArray(hoverinfo)) {\n      // super hacky: we need to pull out the *first* hoverinfo from\n      // pt.pts, then put it back into an array in a dummy trace\n      // and call castHoverinfo on that.\n      // TODO: do we want to have Fx.castHoverinfo somehow handle this?\n      // it already takes an array for index, for 2D, so this seems tricky.\n      hoverinfo = Fx.castHoverinfo({\n        hoverinfo: [helpers.castOption(hoverinfo, pt.pts)],\n        _module: trace._module\n      }, fullLayout2, 0);\n    }\n    if (hoverinfo === 'all') hoverinfo = 'label+text+value+percent+name';\n\n    // in case we dragged over the pie from another subplot,\n    // or if hover is turned off\n    if (trace2.hovertemplate || hoverinfo !== 'none' && hoverinfo !== 'skip' && hoverinfo) {\n      var rInscribed = pt.rInscribed || 0;\n      var hoverCenterX = cx + pt.pxmid[0] * (1 - rInscribed);\n      var hoverCenterY = cy + pt.pxmid[1] * (1 - rInscribed);\n      var separators = fullLayout2.separators;\n      var text = [];\n      if (hoverinfo && hoverinfo.indexOf('label') !== -1) text.push(pt.label);\n      pt.text = helpers.castOption(trace2.hovertext || trace2.text, pt.pts);\n      if (hoverinfo && hoverinfo.indexOf('text') !== -1) {\n        var tx = pt.text;\n        if (Lib.isValidTextValue(tx)) text.push(tx);\n      }\n      pt.value = pt.v;\n      pt.valueLabel = helpers.formatPieValue(pt.v, separators);\n      if (hoverinfo && hoverinfo.indexOf('value') !== -1) text.push(pt.valueLabel);\n      pt.percent = pt.v / cd0.vTotal;\n      pt.percentLabel = helpers.formatPiePercent(pt.percent, separators);\n      if (hoverinfo && hoverinfo.indexOf('percent') !== -1) text.push(pt.percentLabel);\n      var hoverLabel = trace2.hoverlabel;\n      var hoverFont = hoverLabel.font;\n      var bbox = [];\n      Fx.loneHover({\n        trace: trace,\n        x0: hoverCenterX - rInscribed * cd0.r,\n        x1: hoverCenterX + rInscribed * cd0.r,\n        y: hoverCenterY,\n        _x0: isFunnelArea ? cx + pt.TL[0] : hoverCenterX - rInscribed * cd0.r,\n        _x1: isFunnelArea ? cx + pt.TR[0] : hoverCenterX + rInscribed * cd0.r,\n        _y0: isFunnelArea ? cy + pt.TL[1] : hoverCenterY - rInscribed * cd0.r,\n        _y1: isFunnelArea ? cy + pt.BL[1] : hoverCenterY + rInscribed * cd0.r,\n        text: text.join('<br>'),\n        name: trace2.hovertemplate || hoverinfo.indexOf('name') !== -1 ? trace2.name : undefined,\n        idealAlign: pt.pxmid[0] < 0 ? 'left' : 'right',\n        color: helpers.castOption(hoverLabel.bgcolor, pt.pts) || pt.color,\n        borderColor: helpers.castOption(hoverLabel.bordercolor, pt.pts),\n        fontFamily: helpers.castOption(hoverFont.family, pt.pts),\n        fontSize: helpers.castOption(hoverFont.size, pt.pts),\n        fontColor: helpers.castOption(hoverFont.color, pt.pts),\n        nameLength: helpers.castOption(hoverLabel.namelength, pt.pts),\n        textAlign: helpers.castOption(hoverLabel.align, pt.pts),\n        hovertemplate: helpers.castOption(trace2.hovertemplate, pt.pts),\n        hovertemplateLabels: pt,\n        eventData: [eventData(pt, trace2)]\n      }, {\n        container: fullLayout2._hoverlayer.node(),\n        outerContainer: fullLayout2._paper.node(),\n        gd: gd,\n        inOut_bbox: bbox\n      });\n      pt.bbox = bbox[0];\n      trace._hasHoverLabel = true;\n    }\n    trace._hasHoverEvent = true;\n    gd.emit('plotly_hover', {\n      points: [eventData(pt, trace2)],\n      event: d3.event\n    });\n  });\n  sliceTop.on('mouseout', function (evt) {\n    var fullLayout2 = gd._fullLayout;\n    var trace2 = gd._fullData[trace.index];\n    var pt = d3.select(this).datum();\n    if (trace._hasHoverEvent) {\n      evt.originalEvent = d3.event;\n      gd.emit('plotly_unhover', {\n        points: [eventData(pt, trace2)],\n        event: d3.event\n      });\n      trace._hasHoverEvent = false;\n    }\n    if (trace._hasHoverLabel) {\n      Fx.loneUnhover(fullLayout2._hoverlayer.node());\n      trace._hasHoverLabel = false;\n    }\n  });\n  sliceTop.on('click', function (pt) {\n    // TODO: this does not support right-click. If we want to support it, we\n    // would likely need to change pie to use dragElement instead of straight\n    // mapbox event binding. Or perhaps better, make a simple wrapper with the\n    // right mousedown, mousemove, and mouseup handlers just for a left/right click\n    // mapbox would use this too.\n    var fullLayout2 = gd._fullLayout;\n    var trace2 = gd._fullData[trace.index];\n    if (gd._dragging || fullLayout2.hovermode === false) return;\n    gd._hoverdata = [eventData(pt, trace2)];\n    Fx.click(gd, d3.event);\n  });\n}\nfunction determineOutsideTextFont(trace, pt, layoutFont) {\n  var color = helpers.castOption(trace.outsidetextfont.color, pt.pts) || helpers.castOption(trace.textfont.color, pt.pts) || layoutFont.color;\n  var family = helpers.castOption(trace.outsidetextfont.family, pt.pts) || helpers.castOption(trace.textfont.family, pt.pts) || layoutFont.family;\n  var size = helpers.castOption(trace.outsidetextfont.size, pt.pts) || helpers.castOption(trace.textfont.size, pt.pts) || layoutFont.size;\n  return {\n    color: color,\n    family: family,\n    size: size\n  };\n}\nfunction determineInsideTextFont(trace, pt, layoutFont) {\n  var customColor = helpers.castOption(trace.insidetextfont.color, pt.pts);\n  if (!customColor && trace._input.textfont) {\n    // Why not simply using trace.textfont? Because if not set, it\n    // defaults to layout.font which has a default color. But if\n    // textfont.color and insidetextfont.color don't supply a value,\n    // a contrasting color shall be used.\n    customColor = helpers.castOption(trace._input.textfont.color, pt.pts);\n  }\n  var family = helpers.castOption(trace.insidetextfont.family, pt.pts) || helpers.castOption(trace.textfont.family, pt.pts) || layoutFont.family;\n  var size = helpers.castOption(trace.insidetextfont.size, pt.pts) || helpers.castOption(trace.textfont.size, pt.pts) || layoutFont.size;\n  return {\n    color: customColor || Color.contrast(pt.color),\n    family: family,\n    size: size\n  };\n}\nfunction prerenderTitles(cdModule, gd) {\n  var cd0, trace;\n\n  // Determine the width and height of the title for each pie.\n  for (var i = 0; i < cdModule.length; i++) {\n    cd0 = cdModule[i][0];\n    trace = cd0.trace;\n    if (trace.title.text) {\n      var txt = trace.title.text;\n      if (trace._meta) {\n        txt = Lib.templateString(txt, trace._meta);\n      }\n      var dummyTitle = Drawing.tester.append('text').attr('data-notex', 1).text(txt).call(Drawing.font, trace.title.font).call(svgTextUtils.convertToTspans, gd);\n      var bBox = Drawing.bBox(dummyTitle.node(), true);\n      cd0.titleBox = {\n        width: bBox.width,\n        height: bBox.height\n      };\n      dummyTitle.remove();\n    }\n  }\n}\nfunction transformInsideText(textBB, pt, cd0) {\n  var r = cd0.r || pt.rpx1;\n  var rInscribed = pt.rInscribed;\n  var isEmpty = pt.startangle === pt.stopangle;\n  if (isEmpty) {\n    return {\n      rCenter: 1 - rInscribed,\n      scale: 0,\n      rotate: 0,\n      textPosAngle: 0\n    };\n  }\n  var ring = pt.ring;\n  var isCircle = ring === 1 && Math.abs(pt.startangle - pt.stopangle) === Math.PI * 2;\n  var halfAngle = pt.halfangle;\n  var midAngle = pt.midangle;\n  var orientation = cd0.trace.insidetextorientation;\n  var isHorizontal = orientation === 'horizontal';\n  var isTangential = orientation === 'tangential';\n  var isRadial = orientation === 'radial';\n  var isAuto = orientation === 'auto';\n  var allTransforms = [];\n  var newT;\n  if (!isAuto) {\n    // max size if text is placed (horizontally) at the top or bottom of the arc\n\n    var considerCrossing = function (angle, key) {\n      if (isCrossing(pt, angle)) {\n        var dStart = Math.abs(angle - pt.startangle);\n        var dStop = Math.abs(angle - pt.stopangle);\n        var closestEdge = dStart < dStop ? dStart : dStop;\n        if (key === 'tan') {\n          newT = calcTanTransform(textBB, r, ring, closestEdge, 0);\n        } else {\n          // case of 'rad'\n          newT = calcRadTransform(textBB, r, ring, closestEdge, Math.PI / 2);\n        }\n        newT.textPosAngle = angle;\n        allTransforms.push(newT);\n      }\n    };\n\n    // to cover all cases with trace.rotation added\n    var i;\n    if (isHorizontal || isTangential) {\n      // top\n      for (i = 4; i >= -4; i -= 2) considerCrossing(Math.PI * i, 'tan');\n      // bottom\n      for (i = 4; i >= -4; i -= 2) considerCrossing(Math.PI * (i + 1), 'tan');\n    }\n    if (isHorizontal || isRadial) {\n      // left\n      for (i = 4; i >= -4; i -= 2) considerCrossing(Math.PI * (i + 1.5), 'rad');\n      // right\n      for (i = 4; i >= -4; i -= 2) considerCrossing(Math.PI * (i + 0.5), 'rad');\n    }\n  }\n  if (isCircle || isAuto || isHorizontal) {\n    // max size text can be inserted inside without rotating it\n    // this inscribes the text rectangle in a circle, which is then inscribed\n    // in the slice, so it will be an underestimate, which some day we may want\n    // to improve so this case can get more use\n    var textDiameter = Math.sqrt(textBB.width * textBB.width + textBB.height * textBB.height);\n    newT = {\n      scale: rInscribed * r * 2 / textDiameter,\n      // and the center position and rotation in this case\n      rCenter: 1 - rInscribed,\n      rotate: 0\n    };\n    newT.textPosAngle = (pt.startangle + pt.stopangle) / 2;\n    if (newT.scale >= 1) return newT;\n    allTransforms.push(newT);\n  }\n  if (isAuto || isRadial) {\n    newT = calcRadTransform(textBB, r, ring, halfAngle, midAngle);\n    newT.textPosAngle = (pt.startangle + pt.stopangle) / 2;\n    allTransforms.push(newT);\n  }\n  if (isAuto || isTangential) {\n    newT = calcTanTransform(textBB, r, ring, halfAngle, midAngle);\n    newT.textPosAngle = (pt.startangle + pt.stopangle) / 2;\n    allTransforms.push(newT);\n  }\n  var id = 0;\n  var maxScale = 0;\n  for (var k = 0; k < allTransforms.length; k++) {\n    var s = allTransforms[k].scale;\n    if (maxScale < s) {\n      maxScale = s;\n      id = k;\n    }\n    if (!isAuto && maxScale >= 1) {\n      // respect test order for non-auto options\n      break;\n    }\n  }\n  return allTransforms[id];\n}\nfunction isCrossing(pt, angle) {\n  var start = pt.startangle;\n  var stop = pt.stopangle;\n  return start > angle && angle > stop || start < angle && angle < stop;\n}\nfunction calcRadTransform(textBB, r, ring, halfAngle, midAngle) {\n  r = Math.max(0, r - 2 * TEXTPAD);\n\n  // max size if text is rotated radially\n  var a = textBB.width / textBB.height;\n  var s = calcMaxHalfSize(a, halfAngle, r, ring);\n  return {\n    scale: s * 2 / textBB.height,\n    rCenter: calcRCenter(a, s / r),\n    rotate: calcRotate(midAngle)\n  };\n}\nfunction calcTanTransform(textBB, r, ring, halfAngle, midAngle) {\n  r = Math.max(0, r - 2 * TEXTPAD);\n\n  // max size if text is rotated tangentially\n  var a = textBB.height / textBB.width;\n  var s = calcMaxHalfSize(a, halfAngle, r, ring);\n  return {\n    scale: s * 2 / textBB.width,\n    rCenter: calcRCenter(a, s / r),\n    rotate: calcRotate(midAngle + Math.PI / 2)\n  };\n}\nfunction calcRCenter(a, b) {\n  return Math.cos(b) - a * b;\n}\nfunction calcRotate(t) {\n  return (180 / Math.PI * t + 720) % 180 - 90;\n}\nfunction calcMaxHalfSize(a, halfAngle, r, ring) {\n  var q = a + 1 / (2 * Math.tan(halfAngle));\n  return r * Math.min(1 / (Math.sqrt(q * q + 0.5) + q), ring / (Math.sqrt(a * a + ring / 2) + a));\n}\nfunction getInscribedRadiusFraction(pt, cd0) {\n  if (pt.v === cd0.vTotal && !cd0.trace.hole) return 1; // special case of 100% with no hole\n\n  return Math.min(1 / (1 + 1 / Math.sin(pt.halfangle)), pt.ring / 2);\n}\nfunction transformOutsideText(textBB, pt) {\n  var x = pt.pxmid[0];\n  var y = pt.pxmid[1];\n  var dx = textBB.width / 2;\n  var dy = textBB.height / 2;\n  if (x < 0) dx *= -1;\n  if (y < 0) dy *= -1;\n  return {\n    scale: 1,\n    rCenter: 1,\n    rotate: 0,\n    x: dx + Math.abs(dy) * (dx > 0 ? 1 : -1) / 2,\n    y: dy / (1 + x * x / (y * y)),\n    outside: true\n  };\n}\nfunction positionTitleInside(cd0) {\n  var textDiameter = Math.sqrt(cd0.titleBox.width * cd0.titleBox.width + cd0.titleBox.height * cd0.titleBox.height);\n  return {\n    x: cd0.cx,\n    y: cd0.cy,\n    scale: cd0.trace.hole * cd0.r * 2 / textDiameter,\n    tx: 0,\n    ty: -cd0.titleBox.height / 2 + cd0.trace.title.font.size\n  };\n}\nfunction positionTitleOutside(cd0, plotSize) {\n  var scaleX = 1;\n  var scaleY = 1;\n  var maxPull;\n  var trace = cd0.trace;\n  // position of the baseline point of the text box in the plot, before scaling.\n  // we anchored the text in the middle, so the baseline is on the bottom middle\n  // of the first line of text.\n  var topMiddle = {\n    x: cd0.cx,\n    y: cd0.cy\n  };\n  // relative translation of the text box after scaling\n  var translate = {\n    tx: 0,\n    ty: 0\n  };\n\n  // we reason below as if the baseline is the top middle point of the text box.\n  // so we must add the font size to approximate the y-coord. of the top.\n  // note that this correction must happen after scaling.\n  translate.ty += trace.title.font.size;\n  maxPull = getMaxPull(trace);\n  if (trace.title.position.indexOf('top') !== -1) {\n    topMiddle.y -= (1 + maxPull) * cd0.r;\n    translate.ty -= cd0.titleBox.height;\n  } else if (trace.title.position.indexOf('bottom') !== -1) {\n    topMiddle.y += (1 + maxPull) * cd0.r;\n  }\n  var rx = applyAspectRatio(cd0.r, cd0.trace.aspectratio);\n  var maxWidth = plotSize.w * (trace.domain.x[1] - trace.domain.x[0]) / 2;\n  if (trace.title.position.indexOf('left') !== -1) {\n    // we start the text at the left edge of the pie\n    maxWidth = maxWidth + rx;\n    topMiddle.x -= (1 + maxPull) * rx;\n    translate.tx += cd0.titleBox.width / 2;\n  } else if (trace.title.position.indexOf('center') !== -1) {\n    maxWidth *= 2;\n  } else if (trace.title.position.indexOf('right') !== -1) {\n    maxWidth = maxWidth + rx;\n    topMiddle.x += (1 + maxPull) * rx;\n    translate.tx -= cd0.titleBox.width / 2;\n  }\n  scaleX = maxWidth / cd0.titleBox.width;\n  scaleY = getTitleSpace(cd0, plotSize) / cd0.titleBox.height;\n  return {\n    x: topMiddle.x,\n    y: topMiddle.y,\n    scale: Math.min(scaleX, scaleY),\n    tx: translate.tx,\n    ty: translate.ty\n  };\n}\nfunction applyAspectRatio(x, aspectratio) {\n  return x / (aspectratio === undefined ? 1 : aspectratio);\n}\nfunction getTitleSpace(cd0, plotSize) {\n  var trace = cd0.trace;\n  var pieBoxHeight = plotSize.h * (trace.domain.y[1] - trace.domain.y[0]);\n  // use at most half of the plot for the title\n  return Math.min(cd0.titleBox.height, pieBoxHeight / 2);\n}\nfunction getMaxPull(trace) {\n  var maxPull = trace.pull;\n  if (!maxPull) return 0;\n  var j;\n  if (Array.isArray(maxPull)) {\n    maxPull = 0;\n    for (j = 0; j < trace.pull.length; j++) {\n      if (trace.pull[j] > maxPull) maxPull = trace.pull[j];\n    }\n  }\n  return maxPull;\n}\nfunction scootLabels(quadrants, trace) {\n  var xHalf, yHalf, equatorFirst, farthestX, farthestY, xDiffSign, yDiffSign, thisQuad, oppositeQuad, wholeSide, i, thisQuadOutside, firstOppositeOutsidePt;\n  function topFirst(a, b) {\n    return a.pxmid[1] - b.pxmid[1];\n  }\n  function bottomFirst(a, b) {\n    return b.pxmid[1] - a.pxmid[1];\n  }\n  function scootOneLabel(thisPt, prevPt) {\n    if (!prevPt) prevPt = {};\n    var prevOuterY = prevPt.labelExtraY + (yHalf ? prevPt.yLabelMax : prevPt.yLabelMin);\n    var thisInnerY = yHalf ? thisPt.yLabelMin : thisPt.yLabelMax;\n    var thisOuterY = yHalf ? thisPt.yLabelMax : thisPt.yLabelMin;\n    var thisSliceOuterY = thisPt.cyFinal + farthestY(thisPt.px0[1], thisPt.px1[1]);\n    var newExtraY = prevOuterY - thisInnerY;\n    var xBuffer, i, otherPt, otherOuterY, otherOuterX, newExtraX;\n\n    // make sure this label doesn't overlap other labels\n    // this *only* has us move these labels vertically\n    if (newExtraY * yDiffSign > 0) thisPt.labelExtraY = newExtraY;\n\n    // make sure this label doesn't overlap any slices\n    if (!Array.isArray(trace.pull)) return; // this can only happen with array pulls\n\n    for (i = 0; i < wholeSide.length; i++) {\n      otherPt = wholeSide[i];\n\n      // overlap can only happen if the other point is pulled more than this one\n      if (otherPt === thisPt || (helpers.castOption(trace.pull, thisPt.pts) || 0) >= (helpers.castOption(trace.pull, otherPt.pts) || 0)) {\n        continue;\n      }\n      if ((thisPt.pxmid[1] - otherPt.pxmid[1]) * yDiffSign > 0) {\n        // closer to the equator - by construction all of these happen first\n        // move the text vertically to get away from these slices\n        otherOuterY = otherPt.cyFinal + farthestY(otherPt.px0[1], otherPt.px1[1]);\n        newExtraY = otherOuterY - thisInnerY - thisPt.labelExtraY;\n        if (newExtraY * yDiffSign > 0) thisPt.labelExtraY += newExtraY;\n      } else if ((thisOuterY + thisPt.labelExtraY - thisSliceOuterY) * yDiffSign > 0) {\n        // farther from the equator - happens after we've done all the\n        // vertical moving we're going to do\n        // move horizontally to get away from these more polar slices\n\n        // if we're moving horz. based on a slice that's several slices away from this one\n        // then we need some extra space for the lines to labels between them\n        xBuffer = 3 * xDiffSign * Math.abs(i - wholeSide.indexOf(thisPt));\n        otherOuterX = otherPt.cxFinal + farthestX(otherPt.px0[0], otherPt.px1[0]);\n        newExtraX = otherOuterX + xBuffer - (thisPt.cxFinal + thisPt.pxmid[0]) - thisPt.labelExtraX;\n        if (newExtraX * xDiffSign > 0) thisPt.labelExtraX += newExtraX;\n      }\n    }\n  }\n  for (yHalf = 0; yHalf < 2; yHalf++) {\n    equatorFirst = yHalf ? topFirst : bottomFirst;\n    farthestY = yHalf ? Math.max : Math.min;\n    yDiffSign = yHalf ? 1 : -1;\n    for (xHalf = 0; xHalf < 2; xHalf++) {\n      farthestX = xHalf ? Math.max : Math.min;\n      xDiffSign = xHalf ? 1 : -1;\n\n      // first sort the array\n      // note this is a copy of cd, so cd itself doesn't get sorted\n      // but we can still modify points in place.\n      thisQuad = quadrants[yHalf][xHalf];\n      thisQuad.sort(equatorFirst);\n      oppositeQuad = quadrants[1 - yHalf][xHalf];\n      wholeSide = oppositeQuad.concat(thisQuad);\n      thisQuadOutside = [];\n      for (i = 0; i < thisQuad.length; i++) {\n        if (thisQuad[i].yLabelMid !== undefined) thisQuadOutside.push(thisQuad[i]);\n      }\n      firstOppositeOutsidePt = false;\n      for (i = 0; yHalf && i < oppositeQuad.length; i++) {\n        if (oppositeQuad[i].yLabelMid !== undefined) {\n          firstOppositeOutsidePt = oppositeQuad[i];\n          break;\n        }\n      }\n\n      // each needs to avoid the previous\n      for (i = 0; i < thisQuadOutside.length; i++) {\n        var prevPt = i && thisQuadOutside[i - 1];\n        // bottom half needs to avoid the first label of the top half\n        // top half we still need to call scootOneLabel on the first slice\n        // so we can avoid other slices, but we don't pass a prevPt\n        if (firstOppositeOutsidePt && !i) prevPt = firstOppositeOutsidePt;\n        scootOneLabel(thisQuadOutside[i], prevPt);\n      }\n    }\n  }\n}\nfunction layoutAreas(cdModule, plotSize) {\n  var scaleGroups = [];\n\n  // figure out the center and maximum radius\n  for (var i = 0; i < cdModule.length; i++) {\n    var cd0 = cdModule[i][0];\n    var trace = cd0.trace;\n    var domain = trace.domain;\n    var width = plotSize.w * (domain.x[1] - domain.x[0]);\n    var height = plotSize.h * (domain.y[1] - domain.y[0]);\n    // leave some space for the title, if it will be displayed outside\n    if (trace.title.text && trace.title.position !== 'middle center') {\n      height -= getTitleSpace(cd0, plotSize);\n    }\n    var rx = width / 2;\n    var ry = height / 2;\n    if (trace.type === 'funnelarea' && !trace.scalegroup) {\n      ry /= trace.aspectratio;\n    }\n    cd0.r = Math.min(rx, ry) / (1 + getMaxPull(trace));\n    cd0.cx = plotSize.l + plotSize.w * (trace.domain.x[1] + trace.domain.x[0]) / 2;\n    cd0.cy = plotSize.t + plotSize.h * (1 - trace.domain.y[0]) - height / 2;\n    if (trace.title.text && trace.title.position.indexOf('bottom') !== -1) {\n      cd0.cy -= getTitleSpace(cd0, plotSize);\n    }\n    if (trace.scalegroup && scaleGroups.indexOf(trace.scalegroup) === -1) {\n      scaleGroups.push(trace.scalegroup);\n    }\n  }\n  groupScale(cdModule, scaleGroups);\n}\nfunction groupScale(cdModule, scaleGroups) {\n  var cd0, i, trace;\n\n  // scale those that are grouped\n  for (var k = 0; k < scaleGroups.length; k++) {\n    var min = Infinity;\n    var g = scaleGroups[k];\n    for (i = 0; i < cdModule.length; i++) {\n      cd0 = cdModule[i][0];\n      trace = cd0.trace;\n      if (trace.scalegroup === g) {\n        var area;\n        if (trace.type === 'pie') {\n          area = cd0.r * cd0.r;\n        } else if (trace.type === 'funnelarea') {\n          var rx, ry;\n          if (trace.aspectratio > 1) {\n            rx = cd0.r;\n            ry = rx / trace.aspectratio;\n          } else {\n            ry = cd0.r;\n            rx = ry * trace.aspectratio;\n          }\n          rx *= (1 + trace.baseratio) / 2;\n          area = rx * ry;\n        }\n        min = Math.min(min, area / cd0.vTotal);\n      }\n    }\n    for (i = 0; i < cdModule.length; i++) {\n      cd0 = cdModule[i][0];\n      trace = cd0.trace;\n      if (trace.scalegroup === g) {\n        var v = min * cd0.vTotal;\n        if (trace.type === 'funnelarea') {\n          v /= (1 + trace.baseratio) / 2;\n          v /= trace.aspectratio;\n        }\n        cd0.r = Math.sqrt(v);\n      }\n    }\n  }\n}\nfunction setCoords(cd) {\n  var cd0 = cd[0];\n  var r = cd0.r;\n  var trace = cd0.trace;\n  var currentAngle = helpers.getRotationAngle(trace.rotation);\n  var angleFactor = 2 * Math.PI / cd0.vTotal;\n  var firstPt = 'px0';\n  var lastPt = 'px1';\n  var i, cdi, currentCoords;\n  if (trace.direction === 'counterclockwise') {\n    for (i = 0; i < cd.length; i++) {\n      if (!cd[i].hidden) break; // find the first non-hidden slice\n    }\n\n    if (i === cd.length) return; // all slices hidden\n\n    currentAngle += angleFactor * cd[i].v;\n    angleFactor *= -1;\n    firstPt = 'px1';\n    lastPt = 'px0';\n  }\n  currentCoords = getCoords(r, currentAngle);\n  for (i = 0; i < cd.length; i++) {\n    cdi = cd[i];\n    if (cdi.hidden) continue;\n    cdi[firstPt] = currentCoords;\n    cdi.startangle = currentAngle;\n    currentAngle += angleFactor * cdi.v / 2;\n    cdi.pxmid = getCoords(r, currentAngle);\n    cdi.midangle = currentAngle;\n    currentAngle += angleFactor * cdi.v / 2;\n    currentCoords = getCoords(r, currentAngle);\n    cdi.stopangle = currentAngle;\n    cdi[lastPt] = currentCoords;\n    cdi.largeArc = cdi.v > cd0.vTotal / 2 ? 1 : 0;\n    cdi.halfangle = Math.PI * Math.min(cdi.v / cd0.vTotal, 0.5);\n    cdi.ring = 1 - trace.hole;\n    cdi.rInscribed = getInscribedRadiusFraction(cdi, cd0);\n  }\n}\nfunction getCoords(r, angle) {\n  return [r * Math.sin(angle), -r * Math.cos(angle)];\n}\nfunction formatSliceLabel(gd, pt, cd0) {\n  var fullLayout = gd._fullLayout;\n  var trace = cd0.trace;\n  // look for textemplate\n  var texttemplate = trace.texttemplate;\n\n  // now insert text\n  var textinfo = trace.textinfo;\n  if (!texttemplate && textinfo && textinfo !== 'none') {\n    var parts = textinfo.split('+');\n    var hasFlag = function (flag) {\n      return parts.indexOf(flag) !== -1;\n    };\n    var hasLabel = hasFlag('label');\n    var hasText = hasFlag('text');\n    var hasValue = hasFlag('value');\n    var hasPercent = hasFlag('percent');\n    var separators = fullLayout.separators;\n    var text;\n    text = hasLabel ? [pt.label] : [];\n    if (hasText) {\n      var tx = helpers.getFirstFilled(trace.text, pt.pts);\n      if (isValidTextValue(tx)) text.push(tx);\n    }\n    if (hasValue) text.push(helpers.formatPieValue(pt.v, separators));\n    if (hasPercent) text.push(helpers.formatPiePercent(pt.v / cd0.vTotal, separators));\n    pt.text = text.join('<br>');\n  }\n  function makeTemplateVariables(pt) {\n    return {\n      label: pt.label,\n      value: pt.v,\n      valueLabel: helpers.formatPieValue(pt.v, fullLayout.separators),\n      percent: pt.v / cd0.vTotal,\n      percentLabel: helpers.formatPiePercent(pt.v / cd0.vTotal, fullLayout.separators),\n      color: pt.color,\n      text: pt.text,\n      customdata: Lib.castOption(trace, pt.i, 'customdata')\n    };\n  }\n  if (texttemplate) {\n    var txt = Lib.castOption(trace, pt.i, 'texttemplate');\n    if (!txt) {\n      pt.text = '';\n    } else {\n      var obj = makeTemplateVariables(pt);\n      var ptTx = helpers.getFirstFilled(trace.text, pt.pts);\n      if (isValidTextValue(ptTx) || ptTx === '') obj.text = ptTx;\n      pt.text = Lib.texttemplateString(txt, obj, gd._fullLayout._d3locale, obj, trace._meta || {});\n    }\n  }\n}\nfunction computeTransform(transform,\n// inout\ntextBB // in\n) {\n  var a = transform.rotate * Math.PI / 180;\n  var cosA = Math.cos(a);\n  var sinA = Math.sin(a);\n  var midX = (textBB.left + textBB.right) / 2;\n  var midY = (textBB.top + textBB.bottom) / 2;\n  transform.textX = midX * cosA - midY * sinA;\n  transform.textY = midX * sinA + midY * cosA;\n  transform.noCenter = true;\n}\nmodule.exports = {\n  plot: plot,\n  formatSliceLabel: formatSliceLabel,\n  transformInsideText: transformInsideText,\n  determineInsideTextFont: determineInsideTextFont,\n  positionTitleOutside: positionTitleOutside,\n  prerenderTitles: prerenderTitles,\n  layoutAreas: layoutAreas,\n  attachFxHandlers: attachFxHandlers,\n  computeTransform: computeTransform\n};\n\n/***/ }),\n\n/***/ 68357:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2993283__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_2993283__(39898);\nvar styleOne = __nested_webpack_require_2993283__(63463);\nvar resizeText = (__nested_webpack_require_2993283__(72597).resizeText);\nmodule.exports = function style(gd) {\n  var s = gd._fullLayout._pielayer.selectAll('.trace');\n  resizeText(gd, s, 'pie');\n  s.each(function (cd) {\n    var cd0 = cd[0];\n    var trace = cd0.trace;\n    var traceSelection = d3.select(this);\n    traceSelection.style({\n      opacity: trace.opacity\n    });\n    traceSelection.selectAll('path.surface').each(function (pt) {\n      d3.select(this).call(styleOne, pt, trace);\n    });\n  });\n};\n\n/***/ }),\n\n/***/ 63463:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2993969__) {\n\n\"use strict\";\n\n\nvar Color = __nested_webpack_require_2993969__(7901);\nvar castOption = (__nested_webpack_require_2993969__(53581).castOption);\nmodule.exports = function styleOne(s, pt, trace) {\n  var line = trace.marker.line;\n  var lineColor = castOption(line.color, pt.pts) || Color.defaultLine;\n  var lineWidth = castOption(line.width, pt.pts) || 0;\n  s.style('stroke-width', lineWidth).call(Color.fill, pt.color).call(Color.stroke, lineColor);\n};\n\n/***/ }),\n\n/***/ 10959:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2994488__) {\n\n\"use strict\";\n\n\nvar scatterglAttrs = __nested_webpack_require_2994488__(82196);\nmodule.exports = {\n  x: scatterglAttrs.x,\n  y: scatterglAttrs.y,\n  xy: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  indices: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  xbounds: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  ybounds: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  text: scatterglAttrs.text,\n  marker: {\n    color: {\n      valType: 'color',\n      arrayOk: false,\n      editType: 'calc'\n    },\n    opacity: {\n      valType: 'number',\n      min: 0,\n      max: 1,\n      dflt: 1,\n      arrayOk: false,\n      editType: 'calc'\n    },\n    blend: {\n      valType: 'boolean',\n      dflt: null,\n      editType: 'calc'\n    },\n    sizemin: {\n      valType: 'number',\n      min: 0.1,\n      max: 2,\n      dflt: 0.5,\n      editType: 'calc'\n    },\n    sizemax: {\n      valType: 'number',\n      min: 0.1,\n      dflt: 20,\n      editType: 'calc'\n    },\n    border: {\n      color: {\n        valType: 'color',\n        arrayOk: false,\n        editType: 'calc'\n      },\n      arearatio: {\n        valType: 'number',\n        min: 0,\n        max: 1,\n        dflt: 0,\n        editType: 'calc'\n      },\n      editType: 'calc'\n    },\n    editType: 'calc'\n  },\n  transforms: undefined\n};\n\n/***/ }),\n\n/***/ 42743:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2995872__) {\n\n\"use strict\";\n\n\nvar createPointCloudRenderer = (__nested_webpack_require_2995872__(9330).gl_pointcloud2d);\nvar str2RGBArray = __nested_webpack_require_2995872__(78614);\nvar findExtremes = (__nested_webpack_require_2995872__(71739).findExtremes);\nvar getTraceColor = __nested_webpack_require_2995872__(34603);\nfunction Pointcloud(scene, uid) {\n  this.scene = scene;\n  this.uid = uid;\n  this.type = 'pointcloud';\n  this.pickXData = [];\n  this.pickYData = [];\n  this.xData = [];\n  this.yData = [];\n  this.textLabels = [];\n  this.color = 'rgb(0, 0, 0)';\n  this.name = '';\n  this.hoverinfo = 'all';\n  this.idToIndex = new Int32Array(0);\n  this.bounds = [0, 0, 0, 0];\n  this.pointcloudOptions = {\n    positions: new Float32Array(0),\n    idToIndex: this.idToIndex,\n    sizemin: 0.5,\n    sizemax: 12,\n    color: [0, 0, 0, 1],\n    areaRatio: 1,\n    borderColor: [0, 0, 0, 1]\n  };\n  this.pointcloud = createPointCloudRenderer(scene.glplot, this.pointcloudOptions);\n  this.pointcloud._trace = this; // scene2d requires this prop\n}\n\nvar proto = Pointcloud.prototype;\nproto.handlePick = function (pickResult) {\n  var index = this.idToIndex[pickResult.pointId];\n\n  // prefer the readout from XY, if present\n  return {\n    trace: this,\n    dataCoord: pickResult.dataCoord,\n    traceCoord: this.pickXYData ? [this.pickXYData[index * 2], this.pickXYData[index * 2 + 1]] : [this.pickXData[index], this.pickYData[index]],\n    textLabel: Array.isArray(this.textLabels) ? this.textLabels[index] : this.textLabels,\n    color: this.color,\n    name: this.name,\n    pointIndex: index,\n    hoverinfo: this.hoverinfo\n  };\n};\nproto.update = function (options) {\n  this.index = options.index;\n  this.textLabels = options.text;\n  this.name = options.name;\n  this.hoverinfo = options.hoverinfo;\n  this.bounds = [Infinity, Infinity, -Infinity, -Infinity];\n  this.updateFast(options);\n  this.color = getTraceColor(options, {});\n};\nproto.updateFast = function (options) {\n  var x = this.xData = this.pickXData = options.x;\n  var y = this.yData = this.pickYData = options.y;\n  var xy = this.pickXYData = options.xy;\n  var userBounds = options.xbounds && options.ybounds;\n  var index = options.indices;\n  var len;\n  var idToIndex;\n  var positions;\n  var bounds = this.bounds;\n  var xx, yy, i;\n  if (xy) {\n    positions = xy;\n\n    // dividing xy.length by 2 and truncating to integer if xy.length was not even\n    len = xy.length >>> 1;\n    if (userBounds) {\n      bounds[0] = options.xbounds[0];\n      bounds[2] = options.xbounds[1];\n      bounds[1] = options.ybounds[0];\n      bounds[3] = options.ybounds[1];\n    } else {\n      for (i = 0; i < len; i++) {\n        xx = positions[i * 2];\n        yy = positions[i * 2 + 1];\n        if (xx < bounds[0]) bounds[0] = xx;\n        if (xx > bounds[2]) bounds[2] = xx;\n        if (yy < bounds[1]) bounds[1] = yy;\n        if (yy > bounds[3]) bounds[3] = yy;\n      }\n    }\n    if (index) {\n      idToIndex = index;\n    } else {\n      idToIndex = new Int32Array(len);\n      for (i = 0; i < len; i++) {\n        idToIndex[i] = i;\n      }\n    }\n  } else {\n    len = x.length;\n    positions = new Float32Array(2 * len);\n    idToIndex = new Int32Array(len);\n    for (i = 0; i < len; i++) {\n      xx = x[i];\n      yy = y[i];\n      idToIndex[i] = i;\n      positions[i * 2] = xx;\n      positions[i * 2 + 1] = yy;\n      if (xx < bounds[0]) bounds[0] = xx;\n      if (xx > bounds[2]) bounds[2] = xx;\n      if (yy < bounds[1]) bounds[1] = yy;\n      if (yy > bounds[3]) bounds[3] = yy;\n    }\n  }\n  this.idToIndex = idToIndex;\n  this.pointcloudOptions.idToIndex = idToIndex;\n  this.pointcloudOptions.positions = positions;\n  var markerColor = str2RGBArray(options.marker.color);\n  var borderColor = str2RGBArray(options.marker.border.color);\n  var opacity = options.opacity * options.marker.opacity;\n  markerColor[3] *= opacity;\n  this.pointcloudOptions.color = markerColor;\n\n  // detect blending from the number of points, if undefined\n  // because large data with blending hits performance\n  var blend = options.marker.blend;\n  if (blend === null) {\n    var maxPoints = 100;\n    blend = x.length < maxPoints || y.length < maxPoints;\n  }\n  this.pointcloudOptions.blend = blend;\n  borderColor[3] *= opacity;\n  this.pointcloudOptions.borderColor = borderColor;\n  var markerSizeMin = options.marker.sizemin;\n  var markerSizeMax = Math.max(options.marker.sizemax, options.marker.sizemin);\n  this.pointcloudOptions.sizeMin = markerSizeMin;\n  this.pointcloudOptions.sizeMax = markerSizeMax;\n  this.pointcloudOptions.areaRatio = options.marker.border.arearatio;\n  this.pointcloud.update(this.pointcloudOptions);\n\n  // add item for autorange routine\n  var xa = this.scene.xaxis;\n  var ya = this.scene.yaxis;\n  var pad = markerSizeMax / 2 || 0.5;\n  options._extremes[xa._id] = findExtremes(xa, [bounds[0], bounds[2]], {\n    ppad: pad\n  });\n  options._extremes[ya._id] = findExtremes(ya, [bounds[1], bounds[3]], {\n    ppad: pad\n  });\n};\nproto.dispose = function () {\n  this.pointcloud.dispose();\n};\nfunction createPointcloud(scene, data) {\n  var plot = new Pointcloud(scene, data.uid);\n  plot.update(data);\n  return plot;\n}\nmodule.exports = createPointcloud;\n\n/***/ }),\n\n/***/ 33876:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3001050__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3001050__(71828);\nvar attributes = __nested_webpack_require_3001050__(10959);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  coerce('x');\n  coerce('y');\n  coerce('xbounds');\n  coerce('ybounds');\n  if (traceIn.xy && traceIn.xy instanceof Float32Array) {\n    traceOut.xy = traceIn.xy;\n  }\n  if (traceIn.indices && traceIn.indices instanceof Int32Array) {\n    traceOut.indices = traceIn.indices;\n  }\n  coerce('text');\n  coerce('marker.color', defaultColor);\n  coerce('marker.opacity');\n  coerce('marker.blend');\n  coerce('marker.sizemin');\n  coerce('marker.sizemax');\n  coerce('marker.border.color', defaultColor);\n  coerce('marker.border.arearatio');\n\n  // disable 1D transforms - that would defeat the purpose of this trace type, performance!\n  traceOut._length = null;\n};\n\n/***/ }),\n\n/***/ 20593:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3002075__) {\n\n\"use strict\";\n\n\nvar deprecationWarning = ['*pointcloud* trace is deprecated!', 'Please consider switching to the *scattergl* trace type.'].join(' ');\nmodule.exports = {\n  attributes: __nested_webpack_require_3002075__(10959),\n  supplyDefaults: __nested_webpack_require_3002075__(33876),\n  // reuse the Scatter3D 'dummy' calc step so that legends know what to do\n  calc: __nested_webpack_require_3002075__(36563),\n  plot: __nested_webpack_require_3002075__(42743),\n  moduleType: 'trace',\n  name: 'pointcloud',\n  basePlotModule: __nested_webpack_require_3002075__(4796),\n  categories: ['gl', 'gl2d', 'showLegend'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 39953:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3002726__) {\n\n\"use strict\";\n\n\nvar fontAttrs = __nested_webpack_require_3002726__(41940);\nvar baseAttrs = __nested_webpack_require_3002726__(9012);\nvar colorAttrs = __nested_webpack_require_3002726__(22399);\nvar fxAttrs = __nested_webpack_require_3002726__(77914);\nvar domainAttrs = (__nested_webpack_require_3002726__(27670)/* .attributes */ .Y);\nvar hovertemplateAttrs = (__nested_webpack_require_3002726__(5386)/* .hovertemplateAttrs */ .f);\nvar colorAttributes = __nested_webpack_require_3002726__(50693);\nvar templatedArray = (__nested_webpack_require_3002726__(44467).templatedArray);\nvar descriptionOnlyNumbers = (__nested_webpack_require_3002726__(12663).descriptionOnlyNumbers);\nvar extendFlat = (__nested_webpack_require_3002726__(1426).extendFlat);\nvar overrideAll = (__nested_webpack_require_3002726__(30962).overrideAll);\nvar attrs = module.exports = overrideAll({\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {\n    flags: [],\n    arrayOk: false\n  }),\n  hoverlabel: fxAttrs.hoverlabel,\n  domain: domainAttrs({\n    name: 'sankey',\n    trace: true\n  }),\n  orientation: {\n    valType: 'enumerated',\n    values: ['v', 'h'],\n    dflt: 'h'\n  },\n  valueformat: {\n    valType: 'string',\n    dflt: '.3s',\n    description: descriptionOnlyNumbers('value')\n  },\n  valuesuffix: {\n    valType: 'string',\n    dflt: ''\n  },\n  arrangement: {\n    valType: 'enumerated',\n    values: ['snap', 'perpendicular', 'freeform', 'fixed'],\n    dflt: 'snap'\n  },\n  textfont: fontAttrs({}),\n  // Remove top-level customdata\n  customdata: undefined,\n  node: {\n    label: {\n      valType: 'data_array',\n      dflt: []\n    },\n    groups: {\n      valType: 'info_array',\n      impliedEdits: {\n        'x': [],\n        'y': []\n      },\n      dimensions: 2,\n      freeLength: true,\n      dflt: [],\n      items: {\n        valType: 'number',\n        editType: 'calc'\n      }\n    },\n    x: {\n      valType: 'data_array',\n      dflt: []\n    },\n    y: {\n      valType: 'data_array',\n      dflt: []\n    },\n    color: {\n      valType: 'color',\n      arrayOk: true\n    },\n    customdata: {\n      valType: 'data_array',\n      editType: 'calc'\n    },\n    line: {\n      color: {\n        valType: 'color',\n        dflt: colorAttrs.defaultLine,\n        arrayOk: true\n      },\n      width: {\n        valType: 'number',\n        min: 0,\n        dflt: 0.5,\n        arrayOk: true\n      }\n    },\n    pad: {\n      valType: 'number',\n      arrayOk: false,\n      min: 0,\n      dflt: 20\n    },\n    thickness: {\n      valType: 'number',\n      arrayOk: false,\n      min: 1,\n      dflt: 20\n    },\n    hoverinfo: {\n      valType: 'enumerated',\n      values: ['all', 'none', 'skip'],\n      dflt: 'all'\n    },\n    hoverlabel: fxAttrs.hoverlabel,\n    // needs editType override,\n    hovertemplate: hovertemplateAttrs({}, {\n      keys: ['value', 'label']\n    })\n  },\n  link: {\n    arrowlen: {\n      valType: 'number',\n      min: 0,\n      dflt: 0\n    },\n    label: {\n      valType: 'data_array',\n      dflt: []\n    },\n    color: {\n      valType: 'color',\n      arrayOk: true\n    },\n    customdata: {\n      valType: 'data_array',\n      editType: 'calc'\n    },\n    line: {\n      color: {\n        valType: 'color',\n        dflt: colorAttrs.defaultLine,\n        arrayOk: true\n      },\n      width: {\n        valType: 'number',\n        min: 0,\n        dflt: 0,\n        arrayOk: true\n      }\n    },\n    source: {\n      valType: 'data_array',\n      dflt: []\n    },\n    target: {\n      valType: 'data_array',\n      dflt: []\n    },\n    value: {\n      valType: 'data_array',\n      dflt: []\n    },\n    hoverinfo: {\n      valType: 'enumerated',\n      values: ['all', 'none', 'skip'],\n      dflt: 'all'\n    },\n    hoverlabel: fxAttrs.hoverlabel,\n    // needs editType override,\n    hovertemplate: hovertemplateAttrs({}, {\n      keys: ['value', 'label']\n    }),\n    colorscales: templatedArray('concentrationscales', {\n      editType: 'calc',\n      label: {\n        valType: 'string',\n        editType: 'calc',\n        dflt: ''\n      },\n      cmax: {\n        valType: 'number',\n        editType: 'calc',\n        dflt: 1\n      },\n      cmin: {\n        valType: 'number',\n        editType: 'calc',\n        dflt: 0\n      },\n      colorscale: extendFlat(colorAttributes().colorscale, {\n        dflt: [[0, 'white'], [1, 'black']]\n      })\n    })\n  }\n}, 'calc', 'nested');\nattrs.transforms = undefined;\n\n/***/ }),\n\n/***/ 75536:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_3006976__) {\n\n\"use strict\";\n\n\nvar overrideAll = (__nested_webpack_require_3006976__(30962).overrideAll);\nvar getModuleCalcData = (__nested_webpack_require_3006976__(27659)/* .getModuleCalcData */ .a0);\nvar plot = __nested_webpack_require_3006976__(60436);\nvar fxAttrs = __nested_webpack_require_3006976__(528);\nvar setCursor = __nested_webpack_require_3006976__(6964);\nvar dragElement = __nested_webpack_require_3006976__(28569);\nvar prepSelect = (__nested_webpack_require_3006976__(47322).prepSelect);\nvar Lib = __nested_webpack_require_3006976__(71828);\nvar Registry = __nested_webpack_require_3006976__(73972);\nvar SANKEY = 'sankey';\nexports.name = SANKEY;\nexports.baseLayoutAttrOverrides = overrideAll({\n  hoverlabel: fxAttrs.hoverlabel\n}, 'plot', 'nested');\nexports.plot = function (gd) {\n  var calcData = getModuleCalcData(gd.calcdata, SANKEY)[0];\n  plot(gd, calcData);\n  exports.updateFx(gd);\n};\nexports.clean = function (newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  var hadPlot = oldFullLayout._has && oldFullLayout._has(SANKEY);\n  var hasPlot = newFullLayout._has && newFullLayout._has(SANKEY);\n  if (hadPlot && !hasPlot) {\n    oldFullLayout._paperdiv.selectAll('.sankey').remove();\n    oldFullLayout._paperdiv.selectAll('.bgsankey').remove();\n  }\n};\nexports.updateFx = function (gd) {\n  for (var i = 0; i < gd._fullData.length; i++) {\n    subplotUpdateFx(gd, i);\n  }\n};\nfunction subplotUpdateFx(gd, index) {\n  var trace = gd._fullData[index];\n  var fullLayout = gd._fullLayout;\n  var dragMode = fullLayout.dragmode;\n  var cursor = fullLayout.dragmode === 'pan' ? 'move' : 'crosshair';\n  var bgRect = trace._bgRect;\n  if (!bgRect) return;\n  if (dragMode === 'pan' || dragMode === 'zoom') return;\n  setCursor(bgRect, cursor);\n  var xaxis = {\n    _id: 'x',\n    c2p: Lib.identity,\n    _offset: trace._sankey.translateX,\n    _length: trace._sankey.width\n  };\n  var yaxis = {\n    _id: 'y',\n    c2p: Lib.identity,\n    _offset: trace._sankey.translateY,\n    _length: trace._sankey.height\n  };\n\n  // Note: dragOptions is needed to be declared for all dragmodes because\n  // it's the object that holds persistent selection state.\n  var dragOptions = {\n    gd: gd,\n    element: bgRect.node(),\n    plotinfo: {\n      id: index,\n      xaxis: xaxis,\n      yaxis: yaxis,\n      fillRangeItems: Lib.noop\n    },\n    subplot: index,\n    // create mock x/y axes for hover routine\n    xaxes: [xaxis],\n    yaxes: [yaxis],\n    doneFnCompleted: function (selection) {\n      var traceNow = gd._fullData[index];\n      var newGroups;\n      var oldGroups = traceNow.node.groups.slice();\n      var newGroup = [];\n      function findNode(pt) {\n        var nodes = traceNow._sankey.graph.nodes;\n        for (var i = 0; i < nodes.length; i++) {\n          if (nodes[i].pointNumber === pt) return nodes[i];\n        }\n      }\n      for (var j = 0; j < selection.length; j++) {\n        var node = findNode(selection[j].pointNumber);\n        if (!node) continue;\n\n        // If the node represents a group\n        if (node.group) {\n          // Add all its children to the current selection\n          for (var k = 0; k < node.childrenNodes.length; k++) {\n            newGroup.push(node.childrenNodes[k].pointNumber);\n          }\n          // Flag group for removal from existing list of groups\n          oldGroups[node.pointNumber - traceNow.node._count] = false;\n        } else {\n          newGroup.push(node.pointNumber);\n        }\n      }\n      newGroups = oldGroups.filter(Boolean).concat([newGroup]);\n      Registry.call('_guiRestyle', gd, {\n        'node.groups': [newGroups]\n      }, index);\n    }\n  };\n  dragOptions.prepFn = function (e, startX, startY) {\n    prepSelect(e, startX, startY, dragOptions, dragMode);\n  };\n  dragElement.init(dragOptions);\n}\n\n/***/ }),\n\n/***/ 92930:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3010675__) {\n\n\"use strict\";\n\n\nvar tarjan = __nested_webpack_require_3010675__(68664);\nvar Lib = __nested_webpack_require_3010675__(71828);\nvar wrap = (__nested_webpack_require_3010675__(28984).wrap);\nvar isArrayOrTypedArray = Lib.isArrayOrTypedArray;\nvar isIndex = Lib.isIndex;\nvar Colorscale = __nested_webpack_require_3010675__(21081);\nfunction convertToD3Sankey(trace) {\n  var nodeSpec = trace.node;\n  var linkSpec = trace.link;\n  var links = [];\n  var hasLinkColorArray = isArrayOrTypedArray(linkSpec.color);\n  var hasLinkCustomdataArray = isArrayOrTypedArray(linkSpec.customdata);\n  var linkedNodes = {};\n  var components = {};\n  var componentCount = linkSpec.colorscales.length;\n  var i;\n  for (i = 0; i < componentCount; i++) {\n    var cscale = linkSpec.colorscales[i];\n    var specs = Colorscale.extractScale(cscale, {\n      cLetter: 'c'\n    });\n    var scale = Colorscale.makeColorScaleFunc(specs);\n    components[cscale.label] = scale;\n  }\n  var maxNodeId = 0;\n  for (i = 0; i < linkSpec.value.length; i++) {\n    if (linkSpec.source[i] > maxNodeId) maxNodeId = linkSpec.source[i];\n    if (linkSpec.target[i] > maxNodeId) maxNodeId = linkSpec.target[i];\n  }\n  var nodeCount = maxNodeId + 1;\n  trace.node._count = nodeCount;\n\n  // Group nodes\n  var j;\n  var groups = trace.node.groups;\n  var groupLookup = {};\n  for (i = 0; i < groups.length; i++) {\n    var group = groups[i];\n    // Build a lookup table to quickly find in which group a node is\n    for (j = 0; j < group.length; j++) {\n      var nodeIndex = group[j];\n      var groupIndex = nodeCount + i;\n      if (groupLookup.hasOwnProperty(nodeIndex)) {\n        Lib.warn('Node ' + nodeIndex + ' is already part of a group.');\n      } else {\n        groupLookup[nodeIndex] = groupIndex;\n      }\n    }\n  }\n\n  // Process links\n  var groupedLinks = {\n    source: [],\n    target: []\n  };\n  for (i = 0; i < linkSpec.value.length; i++) {\n    var val = linkSpec.value[i];\n    // remove negative values, but keep zeros with special treatment\n    var source = linkSpec.source[i];\n    var target = linkSpec.target[i];\n    if (!(val > 0 && isIndex(source, nodeCount) && isIndex(target, nodeCount))) {\n      continue;\n    }\n\n    // Remove links that are within the same group\n    if (groupLookup.hasOwnProperty(source) && groupLookup.hasOwnProperty(target) && groupLookup[source] === groupLookup[target]) {\n      continue;\n    }\n\n    // if link targets a node in the group, relink target to that group\n    if (groupLookup.hasOwnProperty(target)) {\n      target = groupLookup[target];\n    }\n\n    // if link originates from a node in a group, relink source to that group\n    if (groupLookup.hasOwnProperty(source)) {\n      source = groupLookup[source];\n    }\n    source = +source;\n    target = +target;\n    linkedNodes[source] = linkedNodes[target] = true;\n    var label = '';\n    if (linkSpec.label && linkSpec.label[i]) label = linkSpec.label[i];\n    var concentrationscale = null;\n    if (label && components.hasOwnProperty(label)) concentrationscale = components[label];\n    links.push({\n      pointNumber: i,\n      label: label,\n      color: hasLinkColorArray ? linkSpec.color[i] : linkSpec.color,\n      customdata: hasLinkCustomdataArray ? linkSpec.customdata[i] : linkSpec.customdata,\n      concentrationscale: concentrationscale,\n      source: source,\n      target: target,\n      value: +val\n    });\n    groupedLinks.source.push(source);\n    groupedLinks.target.push(target);\n  }\n\n  // Process nodes\n  var totalCount = nodeCount + groups.length;\n  var hasNodeColorArray = isArrayOrTypedArray(nodeSpec.color);\n  var hasNodeCustomdataArray = isArrayOrTypedArray(nodeSpec.customdata);\n  var nodes = [];\n  for (i = 0; i < totalCount; i++) {\n    if (!linkedNodes[i]) continue;\n    var l = nodeSpec.label[i];\n    nodes.push({\n      group: i > nodeCount - 1,\n      childrenNodes: [],\n      pointNumber: i,\n      label: l,\n      color: hasNodeColorArray ? nodeSpec.color[i] : nodeSpec.color,\n      customdata: hasNodeCustomdataArray ? nodeSpec.customdata[i] : nodeSpec.customdata\n    });\n  }\n\n  // Check if we have circularity on the resulting graph\n  var circular = false;\n  if (circularityPresent(totalCount, groupedLinks.source, groupedLinks.target)) {\n    circular = true;\n  }\n  return {\n    circular: circular,\n    links: links,\n    nodes: nodes,\n    // Data structure for groups\n    groups: groups,\n    groupLookup: groupLookup\n  };\n}\nfunction circularityPresent(nodeLen, sources, targets) {\n  var nodes = Lib.init2dArray(nodeLen, 0);\n  for (var i = 0; i < Math.min(sources.length, targets.length); i++) {\n    if (Lib.isIndex(sources[i], nodeLen) && Lib.isIndex(targets[i], nodeLen)) {\n      if (sources[i] === targets[i]) {\n        return true; // self-link which is also a scc of one\n      }\n\n      nodes[sources[i]].push(targets[i]);\n    }\n  }\n  var scc = tarjan(nodes);\n\n  // Tarján's strongly connected components algorithm coded by Mikola Lysenko\n  // returns at least one non-singular component if there's circularity in the graph\n  return scc.components.some(function (c) {\n    return c.length > 1;\n  });\n}\nmodule.exports = function calc(gd, trace) {\n  var result = convertToD3Sankey(trace);\n  return wrap({\n    circular: result.circular,\n    _nodes: result.nodes,\n    _links: result.links,\n    // Data structure for grouping\n    _groups: result.groups,\n    _groupLookup: result.groupLookup\n  });\n};\n\n/***/ }),\n\n/***/ 85247:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  nodeTextOffsetHorizontal: 4,\n  nodeTextOffsetVertical: 3,\n  nodePadAcross: 10,\n  sankeyIterations: 50,\n  forceIterations: 5,\n  forceTicksPerFrame: 10,\n  duration: 500,\n  ease: 'linear',\n  cn: {\n    sankey: 'sankey',\n    sankeyLinks: 'sankey-links',\n    sankeyLink: 'sankey-link',\n    sankeyNodeSet: 'sankey-node-set',\n    sankeyNode: 'sankey-node',\n    nodeRect: 'node-rect',\n    nodeLabel: 'node-label'\n  }\n};\n\n/***/ }),\n\n/***/ 26857:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3016561__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3016561__(71828);\nvar attributes = __nested_webpack_require_3016561__(39953);\nvar Color = __nested_webpack_require_3016561__(7901);\nvar tinycolor = __nested_webpack_require_3016561__(84267);\nvar handleDomainDefaults = (__nested_webpack_require_3016561__(27670)/* .defaults */ .c);\nvar handleHoverLabelDefaults = __nested_webpack_require_3016561__(38048);\nvar Template = __nested_webpack_require_3016561__(44467);\nvar handleArrayContainerDefaults = __nested_webpack_require_3016561__(85501);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var hoverlabelDefault = Lib.extendDeep(layout.hoverlabel, traceIn.hoverlabel);\n\n  // node attributes\n  var nodeIn = traceIn.node;\n  var nodeOut = Template.newContainer(traceOut, 'node');\n  function coerceNode(attr, dflt) {\n    return Lib.coerce(nodeIn, nodeOut, attributes.node, attr, dflt);\n  }\n  coerceNode('label');\n  coerceNode('groups');\n  coerceNode('x');\n  coerceNode('y');\n  coerceNode('pad');\n  coerceNode('thickness');\n  coerceNode('line.color');\n  coerceNode('line.width');\n  coerceNode('hoverinfo', traceIn.hoverinfo);\n  handleHoverLabelDefaults(nodeIn, nodeOut, coerceNode, hoverlabelDefault);\n  coerceNode('hovertemplate');\n  var colors = layout.colorway;\n  var defaultNodePalette = function (i) {\n    return colors[i % colors.length];\n  };\n  coerceNode('color', nodeOut.label.map(function (d, i) {\n    return Color.addOpacity(defaultNodePalette(i), 0.8);\n  }));\n  coerceNode('customdata');\n\n  // link attributes\n  var linkIn = traceIn.link || {};\n  var linkOut = Template.newContainer(traceOut, 'link');\n  function coerceLink(attr, dflt) {\n    return Lib.coerce(linkIn, linkOut, attributes.link, attr, dflt);\n  }\n  coerceLink('label');\n  coerceLink('arrowlen');\n  coerceLink('source');\n  coerceLink('target');\n  coerceLink('value');\n  coerceLink('line.color');\n  coerceLink('line.width');\n  coerceLink('hoverinfo', traceIn.hoverinfo);\n  handleHoverLabelDefaults(linkIn, linkOut, coerceLink, hoverlabelDefault);\n  coerceLink('hovertemplate');\n  var defaultLinkColor = tinycolor(layout.paper_bgcolor).getLuminance() < 0.333 ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.2)';\n  coerceLink('color', Lib.repeat(defaultLinkColor, linkOut.value.length));\n  coerceLink('customdata');\n  handleArrayContainerDefaults(linkIn, linkOut, {\n    name: 'colorscales',\n    handleItemDefaults: concentrationscalesDefaults\n  });\n  handleDomainDefaults(traceOut, layout, coerce);\n  coerce('orientation');\n  coerce('valueformat');\n  coerce('valuesuffix');\n  var dfltArrangement;\n  if (nodeOut.x.length && nodeOut.y.length) {\n    dfltArrangement = 'freeform';\n  }\n  coerce('arrangement', dfltArrangement);\n  Lib.coerceFont(coerce, 'textfont', Lib.extendFlat({}, layout.font));\n\n  // disable 1D transforms - arrays here are 1D but their lengths/meanings\n  // don't match, between nodes and links\n  traceOut._length = null;\n};\nfunction concentrationscalesDefaults(In, Out) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(In, Out, attributes.link.colorscales, attr, dflt);\n  }\n  coerce('label');\n  coerce('cmin');\n  coerce('cmax');\n  coerce('colorscale');\n}\n\n/***/ }),\n\n/***/ 29396:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3019827__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_3019827__(39953),\n  supplyDefaults: __nested_webpack_require_3019827__(26857),\n  calc: __nested_webpack_require_3019827__(92930),\n  plot: __nested_webpack_require_3019827__(60436),\n  moduleType: 'trace',\n  name: 'sankey',\n  basePlotModule: __nested_webpack_require_3019827__(75536),\n  selectPoints: __nested_webpack_require_3019827__(84564),\n  categories: ['noOpacity'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 60436:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3020295__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_3020295__(39898);\nvar Lib = __nested_webpack_require_3020295__(71828);\nvar numberFormat = Lib.numberFormat;\nvar render = __nested_webpack_require_3020295__(3393);\nvar Fx = __nested_webpack_require_3020295__(30211);\nvar Color = __nested_webpack_require_3020295__(7901);\nvar cn = (__nested_webpack_require_3020295__(85247).cn);\nvar _ = Lib._;\nfunction renderableValuePresent(d) {\n  return d !== '';\n}\nfunction ownTrace(selection, d) {\n  return selection.filter(function (s) {\n    return s.key === d.traceId;\n  });\n}\nfunction makeTranslucent(element, alpha) {\n  d3.select(element).select('path').style('fill-opacity', alpha);\n  d3.select(element).select('rect').style('fill-opacity', alpha);\n}\nfunction makeTextContrasty(element) {\n  d3.select(element).select('text.name').style('fill', 'black');\n}\nfunction relatedLinks(d) {\n  return function (l) {\n    return d.node.sourceLinks.indexOf(l.link) !== -1 || d.node.targetLinks.indexOf(l.link) !== -1;\n  };\n}\nfunction relatedNodes(l) {\n  return function (d) {\n    return d.node.sourceLinks.indexOf(l.link) !== -1 || d.node.targetLinks.indexOf(l.link) !== -1;\n  };\n}\nfunction nodeHoveredStyle(sankeyNode, d, sankey) {\n  if (d && sankey) {\n    ownTrace(sankey, d).selectAll('.' + cn.sankeyLink).filter(relatedLinks(d)).call(linkHoveredStyle.bind(0, d, sankey, false));\n  }\n}\nfunction nodeNonHoveredStyle(sankeyNode, d, sankey) {\n  if (d && sankey) {\n    ownTrace(sankey, d).selectAll('.' + cn.sankeyLink).filter(relatedLinks(d)).call(linkNonHoveredStyle.bind(0, d, sankey, false));\n  }\n}\nfunction linkHoveredStyle(d, sankey, visitNodes, sankeyLink) {\n  var label = sankeyLink.datum().link.label;\n  sankeyLink.style('fill-opacity', function (l) {\n    if (!l.link.concentrationscale) {\n      return 0.4;\n    }\n  });\n  if (label) {\n    ownTrace(sankey, d).selectAll('.' + cn.sankeyLink).filter(function (l) {\n      return l.link.label === label;\n    }).style('fill-opacity', function (l) {\n      if (!l.link.concentrationscale) {\n        return 0.4;\n      }\n    });\n  }\n  if (visitNodes) {\n    ownTrace(sankey, d).selectAll('.' + cn.sankeyNode).filter(relatedNodes(d)).call(nodeHoveredStyle);\n  }\n}\nfunction linkNonHoveredStyle(d, sankey, visitNodes, sankeyLink) {\n  var label = sankeyLink.datum().link.label;\n  sankeyLink.style('fill-opacity', function (d) {\n    return d.tinyColorAlpha;\n  });\n  if (label) {\n    ownTrace(sankey, d).selectAll('.' + cn.sankeyLink).filter(function (l) {\n      return l.link.label === label;\n    }).style('fill-opacity', function (d) {\n      return d.tinyColorAlpha;\n    });\n  }\n  if (visitNodes) {\n    ownTrace(sankey, d).selectAll(cn.sankeyNode).filter(relatedNodes(d)).call(nodeNonHoveredStyle);\n  }\n}\n\n// does not support array values for now\nfunction castHoverOption(trace, attr) {\n  var labelOpts = trace.hoverlabel || {};\n  var val = Lib.nestedProperty(labelOpts, attr).get();\n  return Array.isArray(val) ? false : val;\n}\nmodule.exports = function plot(gd, calcData) {\n  var fullLayout = gd._fullLayout;\n  var svg = fullLayout._paper;\n  var size = fullLayout._size;\n\n  // stash initial view\n  for (var i = 0; i < gd._fullData.length; i++) {\n    if (!gd._fullData[i].visible) continue;\n    if (gd._fullData[i].type !== cn.sankey) continue;\n    if (!gd._fullData[i]._viewInitial) {\n      var node = gd._fullData[i].node;\n      gd._fullData[i]._viewInitial = {\n        node: {\n          groups: node.groups.slice(),\n          x: node.x.slice(),\n          y: node.y.slice()\n        }\n      };\n    }\n  }\n  var linkSelect = function (element, d) {\n    var evt = d.link;\n    evt.originalEvent = d3.event;\n    gd._hoverdata = [evt];\n    Fx.click(gd, {\n      target: true\n    });\n  };\n  var linkHover = function (element, d, sankey) {\n    if (gd._fullLayout.hovermode === false) return;\n    d3.select(element).call(linkHoveredStyle.bind(0, d, sankey, true));\n    if (d.link.trace.link.hoverinfo !== 'skip') {\n      d.link.fullData = d.link.trace;\n      gd.emit('plotly_hover', {\n        event: d3.event,\n        points: [d.link]\n      });\n    }\n  };\n  var sourceLabel = _(gd, 'source:') + ' ';\n  var targetLabel = _(gd, 'target:') + ' ';\n  var concentrationLabel = _(gd, 'concentration:') + ' ';\n  var incomingLabel = _(gd, 'incoming flow count:') + ' ';\n  var outgoingLabel = _(gd, 'outgoing flow count:') + ' ';\n  var linkHoverFollow = function (element, d) {\n    if (gd._fullLayout.hovermode === false) return;\n    var obj = d.link.trace.link;\n    if (obj.hoverinfo === 'none' || obj.hoverinfo === 'skip') return;\n    var hoverItems = [];\n    function hoverCenterPosition(link) {\n      var hoverCenterX, hoverCenterY;\n      if (link.circular) {\n        hoverCenterX = (link.circularPathData.leftInnerExtent + link.circularPathData.rightInnerExtent) / 2;\n        hoverCenterY = link.circularPathData.verticalFullExtent;\n      } else {\n        hoverCenterX = (link.source.x1 + link.target.x0) / 2;\n        hoverCenterY = (link.y0 + link.y1) / 2;\n      }\n      var center = [hoverCenterX, hoverCenterY];\n      if (link.trace.orientation === 'v') center.reverse();\n      center[0] += d.parent.translateX;\n      center[1] += d.parent.translateY;\n      return center;\n    }\n\n    // For each related links, create a hoverItem\n    var anchorIndex = 0;\n    for (var i = 0; i < d.flow.links.length; i++) {\n      var link = d.flow.links[i];\n      if (gd._fullLayout.hovermode === 'closest' && d.link.pointNumber !== link.pointNumber) continue;\n      if (d.link.pointNumber === link.pointNumber) anchorIndex = i;\n      link.fullData = link.trace;\n      obj = d.link.trace.link;\n      var hoverCenter = hoverCenterPosition(link);\n      var hovertemplateLabels = {\n        valueLabel: numberFormat(d.valueFormat)(link.value) + d.valueSuffix\n      };\n      hoverItems.push({\n        x: hoverCenter[0],\n        y: hoverCenter[1],\n        name: hovertemplateLabels.valueLabel,\n        text: [link.label || '', sourceLabel + link.source.label, targetLabel + link.target.label, link.concentrationscale ? concentrationLabel + numberFormat('%0.2f')(link.flow.labelConcentration) : ''].filter(renderableValuePresent).join('<br>'),\n        color: castHoverOption(obj, 'bgcolor') || Color.addOpacity(link.color, 1),\n        borderColor: castHoverOption(obj, 'bordercolor'),\n        fontFamily: castHoverOption(obj, 'font.family'),\n        fontSize: castHoverOption(obj, 'font.size'),\n        fontColor: castHoverOption(obj, 'font.color'),\n        nameLength: castHoverOption(obj, 'namelength'),\n        textAlign: castHoverOption(obj, 'align'),\n        idealAlign: d3.event.x < hoverCenter[0] ? 'right' : 'left',\n        hovertemplate: obj.hovertemplate,\n        hovertemplateLabels: hovertemplateLabels,\n        eventData: [link]\n      });\n    }\n    var tooltips = Fx.loneHover(hoverItems, {\n      container: fullLayout._hoverlayer.node(),\n      outerContainer: fullLayout._paper.node(),\n      gd: gd,\n      anchorIndex: anchorIndex\n    });\n    tooltips.each(function () {\n      var tooltip = this;\n      if (!d.link.concentrationscale) {\n        makeTranslucent(tooltip, 0.65);\n      }\n      makeTextContrasty(tooltip);\n    });\n  };\n  var linkUnhover = function (element, d, sankey) {\n    if (gd._fullLayout.hovermode === false) return;\n    d3.select(element).call(linkNonHoveredStyle.bind(0, d, sankey, true));\n    if (d.link.trace.link.hoverinfo !== 'skip') {\n      d.link.fullData = d.link.trace;\n      gd.emit('plotly_unhover', {\n        event: d3.event,\n        points: [d.link]\n      });\n    }\n    Fx.loneUnhover(fullLayout._hoverlayer.node());\n  };\n  var nodeSelect = function (element, d, sankey) {\n    var evt = d.node;\n    evt.originalEvent = d3.event;\n    gd._hoverdata = [evt];\n    d3.select(element).call(nodeNonHoveredStyle, d, sankey);\n    Fx.click(gd, {\n      target: true\n    });\n  };\n  var nodeHover = function (element, d, sankey) {\n    if (gd._fullLayout.hovermode === false) return;\n    d3.select(element).call(nodeHoveredStyle, d, sankey);\n    if (d.node.trace.node.hoverinfo !== 'skip') {\n      d.node.fullData = d.node.trace;\n      gd.emit('plotly_hover', {\n        event: d3.event,\n        points: [d.node]\n      });\n    }\n  };\n  var nodeHoverFollow = function (element, d) {\n    if (gd._fullLayout.hovermode === false) return;\n    var obj = d.node.trace.node;\n    if (obj.hoverinfo === 'none' || obj.hoverinfo === 'skip') return;\n    var nodeRect = d3.select(element).select('.' + cn.nodeRect);\n    var rootBBox = gd._fullLayout._paperdiv.node().getBoundingClientRect();\n    var boundingBox = nodeRect.node().getBoundingClientRect();\n    var hoverCenterX0 = boundingBox.left - 2 - rootBBox.left;\n    var hoverCenterX1 = boundingBox.right + 2 - rootBBox.left;\n    var hoverCenterY = boundingBox.top + boundingBox.height / 4 - rootBBox.top;\n    var hovertemplateLabels = {\n      valueLabel: numberFormat(d.valueFormat)(d.node.value) + d.valueSuffix\n    };\n    d.node.fullData = d.node.trace;\n    gd._fullLayout._calcInverseTransform(gd);\n    var scaleX = gd._fullLayout._invScaleX;\n    var scaleY = gd._fullLayout._invScaleY;\n    var tooltip = Fx.loneHover({\n      x0: scaleX * hoverCenterX0,\n      x1: scaleX * hoverCenterX1,\n      y: scaleY * hoverCenterY,\n      name: numberFormat(d.valueFormat)(d.node.value) + d.valueSuffix,\n      text: [d.node.label, incomingLabel + d.node.targetLinks.length, outgoingLabel + d.node.sourceLinks.length].filter(renderableValuePresent).join('<br>'),\n      color: castHoverOption(obj, 'bgcolor') || d.tinyColorHue,\n      borderColor: castHoverOption(obj, 'bordercolor'),\n      fontFamily: castHoverOption(obj, 'font.family'),\n      fontSize: castHoverOption(obj, 'font.size'),\n      fontColor: castHoverOption(obj, 'font.color'),\n      nameLength: castHoverOption(obj, 'namelength'),\n      textAlign: castHoverOption(obj, 'align'),\n      idealAlign: 'left',\n      hovertemplate: obj.hovertemplate,\n      hovertemplateLabels: hovertemplateLabels,\n      eventData: [d.node]\n    }, {\n      container: fullLayout._hoverlayer.node(),\n      outerContainer: fullLayout._paper.node(),\n      gd: gd\n    });\n    makeTranslucent(tooltip, 0.85);\n    makeTextContrasty(tooltip);\n  };\n  var nodeUnhover = function (element, d, sankey) {\n    if (gd._fullLayout.hovermode === false) return;\n    d3.select(element).call(nodeNonHoveredStyle, d, sankey);\n    if (d.node.trace.node.hoverinfo !== 'skip') {\n      d.node.fullData = d.node.trace;\n      gd.emit('plotly_unhover', {\n        event: d3.event,\n        points: [d.node]\n      });\n    }\n    Fx.loneUnhover(fullLayout._hoverlayer.node());\n  };\n  render(gd, svg, calcData, {\n    width: size.w,\n    height: size.h,\n    margin: {\n      t: size.t,\n      r: size.r,\n      b: size.b,\n      l: size.l\n    }\n  }, {\n    linkEvents: {\n      hover: linkHover,\n      follow: linkHoverFollow,\n      unhover: linkUnhover,\n      select: linkSelect\n    },\n    nodeEvents: {\n      hover: nodeHover,\n      follow: nodeHoverFollow,\n      unhover: nodeUnhover,\n      select: nodeSelect\n    }\n  });\n};\n\n/***/ }),\n\n/***/ 3393:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3031281__) {\n\n\"use strict\";\n\n\nvar d3Force = __nested_webpack_require_3031281__(49887);\nvar interpolateNumber = (__nested_webpack_require_3031281__(81684)/* .interpolateNumber */ .k4);\nvar d3 = __nested_webpack_require_3031281__(39898);\nvar d3Sankey = __nested_webpack_require_3031281__(30838);\nvar d3SankeyCircular = __nested_webpack_require_3031281__(86781);\nvar c = __nested_webpack_require_3031281__(85247);\nvar tinycolor = __nested_webpack_require_3031281__(84267);\nvar Color = __nested_webpack_require_3031281__(7901);\nvar Drawing = __nested_webpack_require_3031281__(91424);\nvar Lib = __nested_webpack_require_3031281__(71828);\nvar strTranslate = Lib.strTranslate;\nvar strRotate = Lib.strRotate;\nvar gup = __nested_webpack_require_3031281__(28984);\nvar keyFun = gup.keyFun;\nvar repeat = gup.repeat;\nvar unwrap = gup.unwrap;\nvar svgTextUtils = __nested_webpack_require_3031281__(63893);\nvar Registry = __nested_webpack_require_3031281__(73972);\nvar alignmentConstants = __nested_webpack_require_3031281__(18783);\nvar CAP_SHIFT = alignmentConstants.CAP_SHIFT;\nvar LINE_SPACING = alignmentConstants.LINE_SPACING;\nvar TEXTPAD = 3;\n\n// view models\n\nfunction sankeyModel(layout, d, traceIndex) {\n  var calcData = unwrap(d);\n  var trace = calcData.trace;\n  var domain = trace.domain;\n  var horizontal = trace.orientation === 'h';\n  var nodePad = trace.node.pad;\n  var nodeThickness = trace.node.thickness;\n  var width = layout.width * (domain.x[1] - domain.x[0]);\n  var height = layout.height * (domain.y[1] - domain.y[0]);\n  var nodes = calcData._nodes;\n  var links = calcData._links;\n  var circular = calcData.circular;\n\n  // Select Sankey generator\n  var sankey;\n  if (circular) {\n    sankey = d3SankeyCircular.sankeyCircular().circularLinkGap(0);\n  } else {\n    sankey = d3Sankey.sankey();\n  }\n  sankey.iterations(c.sankeyIterations).size(horizontal ? [width, height] : [height, width]).nodeWidth(nodeThickness).nodePadding(nodePad).nodeId(function (d) {\n    return d.pointNumber;\n  }).nodes(nodes).links(links);\n  var graph = sankey();\n  if (sankey.nodePadding() < nodePad) {\n    Lib.warn('node.pad was reduced to ', sankey.nodePadding(), ' to fit within the figure.');\n  }\n\n  // Counters for nested loops\n  var i, j, k;\n\n  // Create transient nodes for animations\n  for (var nodePointNumber in calcData._groupLookup) {\n    var groupIndex = parseInt(calcData._groupLookup[nodePointNumber]);\n\n    // Find node representing groupIndex\n    var groupingNode;\n    for (i = 0; i < graph.nodes.length; i++) {\n      if (graph.nodes[i].pointNumber === groupIndex) {\n        groupingNode = graph.nodes[i];\n        break;\n      }\n    }\n    // If groupinNode is undefined, no links are targeting this group\n    if (!groupingNode) continue;\n    var child = {\n      pointNumber: parseInt(nodePointNumber),\n      x0: groupingNode.x0,\n      x1: groupingNode.x1,\n      y0: groupingNode.y0,\n      y1: groupingNode.y1,\n      partOfGroup: true,\n      sourceLinks: [],\n      targetLinks: []\n    };\n    graph.nodes.unshift(child);\n    groupingNode.childrenNodes.unshift(child);\n  }\n  function computeLinkConcentrations() {\n    for (i = 0; i < graph.nodes.length; i++) {\n      var node = graph.nodes[i];\n      // Links connecting the same two nodes are part of a flow\n      var flows = {};\n      var flowKey;\n      var link;\n      for (j = 0; j < node.targetLinks.length; j++) {\n        link = node.targetLinks[j];\n        flowKey = link.source.pointNumber + ':' + link.target.pointNumber;\n        if (!flows.hasOwnProperty(flowKey)) flows[flowKey] = [];\n        flows[flowKey].push(link);\n      }\n\n      // Compute statistics for each flow\n      var keys = Object.keys(flows);\n      for (j = 0; j < keys.length; j++) {\n        flowKey = keys[j];\n        var flowLinks = flows[flowKey];\n\n        // Find the total size of the flow and total size per label\n        var total = 0;\n        var totalPerLabel = {};\n        for (k = 0; k < flowLinks.length; k++) {\n          link = flowLinks[k];\n          if (!totalPerLabel[link.label]) totalPerLabel[link.label] = 0;\n          totalPerLabel[link.label] += link.value;\n          total += link.value;\n        }\n\n        // Find the ratio of the link's value and the size of the flow\n        for (k = 0; k < flowLinks.length; k++) {\n          link = flowLinks[k];\n          link.flow = {\n            value: total,\n            labelConcentration: totalPerLabel[link.label] / total,\n            concentration: link.value / total,\n            links: flowLinks\n          };\n          if (link.concentrationscale) {\n            link.color = tinycolor(link.concentrationscale(link.flow.labelConcentration));\n          }\n        }\n      }\n\n      // Gather statistics of all links at current node\n      var totalOutflow = 0;\n      for (j = 0; j < node.sourceLinks.length; j++) {\n        totalOutflow += node.sourceLinks[j].value;\n      }\n      for (j = 0; j < node.sourceLinks.length; j++) {\n        link = node.sourceLinks[j];\n        link.concentrationOut = link.value / totalOutflow;\n      }\n      var totalInflow = 0;\n      for (j = 0; j < node.targetLinks.length; j++) {\n        totalInflow += node.targetLinks[j].value;\n      }\n      for (j = 0; j < node.targetLinks.length; j++) {\n        link = node.targetLinks[j];\n        link.concenrationIn = link.value / totalInflow;\n      }\n    }\n  }\n  computeLinkConcentrations();\n\n  // Push any overlapping nodes down.\n  function resolveCollisionsTopToBottom(columns) {\n    columns.forEach(function (nodes) {\n      var node;\n      var dy;\n      var y = 0;\n      var n = nodes.length;\n      var i;\n      nodes.sort(function (a, b) {\n        return a.y0 - b.y0;\n      });\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        if (node.y0 >= y) {\n          // No overlap\n        } else {\n          dy = y - node.y0;\n          if (dy > 1e-6) node.y0 += dy, node.y1 += dy;\n        }\n        y = node.y1 + nodePad;\n      }\n    });\n  }\n\n  // Group nodes into columns based on their x position\n  function snapToColumns(nodes) {\n    // Sort nodes by x position\n    var orderedNodes = nodes.map(function (n, i) {\n      return {\n        x0: n.x0,\n        index: i\n      };\n    }).sort(function (a, b) {\n      return a.x0 - b.x0;\n    });\n    var columns = [];\n    var colNumber = -1;\n    var colX; // Position of column\n    var lastX = -Infinity; // Position of last node\n    var dx;\n    for (i = 0; i < orderedNodes.length; i++) {\n      var node = nodes[orderedNodes[i].index];\n      // If the node does not overlap with the last one\n      if (node.x0 > lastX + nodeThickness) {\n        // Start a new column\n        colNumber += 1;\n        colX = node.x0;\n      }\n      lastX = node.x0;\n\n      // Add node to its associated column\n      if (!columns[colNumber]) columns[colNumber] = [];\n      columns[colNumber].push(node);\n\n      // Change node's x position to align it with its column\n      dx = colX - node.x0;\n      node.x0 += dx, node.x1 += dx;\n    }\n    return columns;\n  }\n\n  // Force node position\n  if (trace.node.x.length && trace.node.y.length) {\n    for (i = 0; i < Math.min(trace.node.x.length, trace.node.y.length, graph.nodes.length); i++) {\n      if (trace.node.x[i] && trace.node.y[i]) {\n        var pos = [trace.node.x[i] * width, trace.node.y[i] * height];\n        graph.nodes[i].x0 = pos[0] - nodeThickness / 2;\n        graph.nodes[i].x1 = pos[0] + nodeThickness / 2;\n        var nodeHeight = graph.nodes[i].y1 - graph.nodes[i].y0;\n        graph.nodes[i].y0 = pos[1] - nodeHeight / 2;\n        graph.nodes[i].y1 = pos[1] + nodeHeight / 2;\n      }\n    }\n    if (trace.arrangement === 'snap') {\n      nodes = graph.nodes;\n      var columns = snapToColumns(nodes);\n      resolveCollisionsTopToBottom(columns);\n    }\n    // Update links\n    sankey.update(graph);\n  }\n  return {\n    circular: circular,\n    key: traceIndex,\n    trace: trace,\n    guid: Lib.randstr(),\n    horizontal: horizontal,\n    width: width,\n    height: height,\n    nodePad: trace.node.pad,\n    nodeLineColor: trace.node.line.color,\n    nodeLineWidth: trace.node.line.width,\n    linkLineColor: trace.link.line.color,\n    linkLineWidth: trace.link.line.width,\n    linkArrowLength: trace.link.arrowlen,\n    valueFormat: trace.valueformat,\n    valueSuffix: trace.valuesuffix,\n    textFont: trace.textfont,\n    translateX: domain.x[0] * layout.width + layout.margin.l,\n    translateY: layout.height - domain.y[1] * layout.height + layout.margin.t,\n    dragParallel: horizontal ? height : width,\n    dragPerpendicular: horizontal ? width : height,\n    arrangement: trace.arrangement,\n    sankey: sankey,\n    graph: graph,\n    forceLayouts: {},\n    interactionState: {\n      dragInProgress: false,\n      hovered: false\n    }\n  };\n}\nfunction linkModel(d, l, i) {\n  var tc = tinycolor(l.color);\n  var basicKey = l.source.label + '|' + l.target.label;\n  var key = basicKey + '__' + i;\n\n  // for event data\n  l.trace = d.trace;\n  l.curveNumber = d.trace.index;\n  return {\n    circular: d.circular,\n    key: key,\n    traceId: d.key,\n    pointNumber: l.pointNumber,\n    link: l,\n    tinyColorHue: Color.tinyRGB(tc),\n    tinyColorAlpha: tc.getAlpha(),\n    linkPath: linkPath,\n    linkLineColor: d.linkLineColor,\n    linkLineWidth: d.linkLineWidth,\n    linkArrowLength: d.linkArrowLength,\n    valueFormat: d.valueFormat,\n    valueSuffix: d.valueSuffix,\n    sankey: d.sankey,\n    parent: d,\n    interactionState: d.interactionState,\n    flow: l.flow\n  };\n}\nfunction createCircularClosedPathString(link, arrowLen) {\n  // Using coordinates computed by d3-sankey-circular\n  var pathString = '';\n  var offset = link.width / 2;\n  var coords = link.circularPathData;\n  if (link.circularLinkType === 'top') {\n    // Top path\n    pathString =\n    // start at the left of the target node\n    'M ' + (coords.targetX - arrowLen) + ' ' + (coords.targetY + offset) + ' ' + 'L' + (coords.rightInnerExtent - arrowLen) + ' ' + (coords.targetY + offset) + 'A' + (coords.rightLargeArcRadius + offset) + ' ' + (coords.rightSmallArcRadius + offset) + ' 0 0 1 ' + (coords.rightFullExtent - offset - arrowLen) + ' ' + (coords.targetY - coords.rightSmallArcRadius) + 'L' + (coords.rightFullExtent - offset - arrowLen) + ' ' + coords.verticalRightInnerExtent + 'A' + (coords.rightLargeArcRadius + offset) + ' ' + (coords.rightLargeArcRadius + offset) + ' 0 0 1 ' + (coords.rightInnerExtent - arrowLen) + ' ' + (coords.verticalFullExtent - offset) + 'L' + coords.leftInnerExtent + ' ' + (coords.verticalFullExtent - offset) + 'A' + (coords.leftLargeArcRadius + offset) + ' ' + (coords.leftLargeArcRadius + offset) + ' 0 0 1 ' + (coords.leftFullExtent + offset) + ' ' + coords.verticalLeftInnerExtent + 'L' + (coords.leftFullExtent + offset) + ' ' + (coords.sourceY - coords.leftSmallArcRadius) + 'A' + (coords.leftLargeArcRadius + offset) + ' ' + (coords.leftSmallArcRadius + offset) + ' 0 0 1 ' + coords.leftInnerExtent + ' ' + (coords.sourceY + offset) + 'L' + coords.sourceX + ' ' + (coords.sourceY + offset) +\n    // Walking back\n    'L' + coords.sourceX + ' ' + (coords.sourceY - offset) + 'L' + coords.leftInnerExtent + ' ' + (coords.sourceY - offset) + 'A' + (coords.leftLargeArcRadius - offset) + ' ' + (coords.leftSmallArcRadius - offset) + ' 0 0 0 ' + (coords.leftFullExtent - offset) + ' ' + (coords.sourceY - coords.leftSmallArcRadius) + 'L' + (coords.leftFullExtent - offset) + ' ' + coords.verticalLeftInnerExtent + 'A' + (coords.leftLargeArcRadius - offset) + ' ' + (coords.leftLargeArcRadius - offset) + ' 0 0 0 ' + coords.leftInnerExtent + ' ' + (coords.verticalFullExtent + offset) + 'L' + (coords.rightInnerExtent - arrowLen) + ' ' + (coords.verticalFullExtent + offset) + 'A' + (coords.rightLargeArcRadius - offset) + ' ' + (coords.rightLargeArcRadius - offset) + ' 0 0 0 ' + (coords.rightFullExtent + offset - arrowLen) + ' ' + coords.verticalRightInnerExtent + 'L' + (coords.rightFullExtent + offset - arrowLen) + ' ' + (coords.targetY - coords.rightSmallArcRadius) + 'A' + (coords.rightLargeArcRadius - offset) + ' ' + (coords.rightSmallArcRadius - offset) + ' 0 0 0 ' + (coords.rightInnerExtent - arrowLen) + ' ' + (coords.targetY - offset) + 'L' + (coords.targetX - arrowLen) + ' ' + (coords.targetY - offset) + (arrowLen > 0 ? 'L' + coords.targetX + ' ' + coords.targetY : '') + 'Z';\n  } else {\n    // Bottom path\n    pathString =\n    // start at the left of the target node\n    'M ' + (coords.targetX - arrowLen) + ' ' + (coords.targetY - offset) + ' ' + 'L' + (coords.rightInnerExtent - arrowLen) + ' ' + (coords.targetY - offset) + 'A' + (coords.rightLargeArcRadius + offset) + ' ' + (coords.rightSmallArcRadius + offset) + ' 0 0 0 ' + (coords.rightFullExtent - offset - arrowLen) + ' ' + (coords.targetY + coords.rightSmallArcRadius) + 'L' + (coords.rightFullExtent - offset - arrowLen) + ' ' + coords.verticalRightInnerExtent + 'A' + (coords.rightLargeArcRadius + offset) + ' ' + (coords.rightLargeArcRadius + offset) + ' 0 0 0 ' + (coords.rightInnerExtent - arrowLen) + ' ' + (coords.verticalFullExtent + offset) + 'L' + coords.leftInnerExtent + ' ' + (coords.verticalFullExtent + offset) + 'A' + (coords.leftLargeArcRadius + offset) + ' ' + (coords.leftLargeArcRadius + offset) + ' 0 0 0 ' + (coords.leftFullExtent + offset) + ' ' + coords.verticalLeftInnerExtent + 'L' + (coords.leftFullExtent + offset) + ' ' + (coords.sourceY + coords.leftSmallArcRadius) + 'A' + (coords.leftLargeArcRadius + offset) + ' ' + (coords.leftSmallArcRadius + offset) + ' 0 0 0 ' + coords.leftInnerExtent + ' ' + (coords.sourceY - offset) + 'L' + coords.sourceX + ' ' + (coords.sourceY - offset) +\n    // Walking back\n    'L' + coords.sourceX + ' ' + (coords.sourceY + offset) + 'L' + coords.leftInnerExtent + ' ' + (coords.sourceY + offset) + 'A' + (coords.leftLargeArcRadius - offset) + ' ' + (coords.leftSmallArcRadius - offset) + ' 0 0 1 ' + (coords.leftFullExtent - offset) + ' ' + (coords.sourceY + coords.leftSmallArcRadius) + 'L' + (coords.leftFullExtent - offset) + ' ' + coords.verticalLeftInnerExtent + 'A' + (coords.leftLargeArcRadius - offset) + ' ' + (coords.leftLargeArcRadius - offset) + ' 0 0 1 ' + coords.leftInnerExtent + ' ' + (coords.verticalFullExtent - offset) + 'L' + (coords.rightInnerExtent - arrowLen) + ' ' + (coords.verticalFullExtent - offset) + 'A' + (coords.rightLargeArcRadius - offset) + ' ' + (coords.rightLargeArcRadius - offset) + ' 0 0 1 ' + (coords.rightFullExtent + offset - arrowLen) + ' ' + coords.verticalRightInnerExtent + 'L' + (coords.rightFullExtent + offset - arrowLen) + ' ' + (coords.targetY + coords.rightSmallArcRadius) + 'A' + (coords.rightLargeArcRadius - offset) + ' ' + (coords.rightSmallArcRadius - offset) + ' 0 0 1 ' + (coords.rightInnerExtent - arrowLen) + ' ' + (coords.targetY + offset) + 'L' + (coords.targetX - arrowLen) + ' ' + (coords.targetY + offset) + (arrowLen > 0 ? 'L' + coords.targetX + ' ' + coords.targetY : '') + 'Z';\n  }\n  return pathString;\n}\nfunction linkPath() {\n  var curvature = 0.5;\n  function path(d) {\n    var arrowLen = d.linkArrowLength;\n    if (d.link.circular) {\n      return createCircularClosedPathString(d.link, arrowLen);\n    } else {\n      var maxArrowLength = Math.abs((d.link.target.x0 - d.link.source.x1) / 2);\n      if (arrowLen > maxArrowLength) {\n        arrowLen = maxArrowLength;\n      }\n      var x0 = d.link.source.x1;\n      var x1 = d.link.target.x0 - arrowLen;\n      var xi = interpolateNumber(x0, x1);\n      var x2 = xi(curvature);\n      var x3 = xi(1 - curvature);\n      var y0a = d.link.y0 - d.link.width / 2;\n      var y0b = d.link.y0 + d.link.width / 2;\n      var y1a = d.link.y1 - d.link.width / 2;\n      var y1b = d.link.y1 + d.link.width / 2;\n      var start = 'M' + x0 + ',' + y0a;\n      var upperCurve = 'C' + x2 + ',' + y0a + ' ' + x3 + ',' + y1a + ' ' + x1 + ',' + y1a;\n      var lowerCurve = 'C' + x3 + ',' + y1b + ' ' + x2 + ',' + y0b + ' ' + x0 + ',' + y0b;\n      var rightEnd = arrowLen > 0 ? 'L' + (x1 + arrowLen) + ',' + (y1a + d.link.width / 2) : '';\n      rightEnd += 'L' + x1 + ',' + y1b;\n      return start + upperCurve + rightEnd + lowerCurve + 'Z';\n    }\n  }\n  return path;\n}\nfunction nodeModel(d, n) {\n  var tc = tinycolor(n.color);\n  var zoneThicknessPad = c.nodePadAcross;\n  var zoneLengthPad = d.nodePad / 2;\n  n.dx = n.x1 - n.x0;\n  n.dy = n.y1 - n.y0;\n  var visibleThickness = n.dx;\n  var visibleLength = Math.max(0.5, n.dy);\n  var key = 'node_' + n.pointNumber;\n  // If it's a group, it's mutable and should be unique\n  if (n.group) {\n    key = Lib.randstr();\n  }\n\n  // for event data\n  n.trace = d.trace;\n  n.curveNumber = d.trace.index;\n  return {\n    index: n.pointNumber,\n    key: key,\n    partOfGroup: n.partOfGroup || false,\n    group: n.group,\n    traceId: d.key,\n    trace: d.trace,\n    node: n,\n    nodePad: d.nodePad,\n    nodeLineColor: d.nodeLineColor,\n    nodeLineWidth: d.nodeLineWidth,\n    textFont: d.textFont,\n    size: d.horizontal ? d.height : d.width,\n    visibleWidth: Math.ceil(visibleThickness),\n    visibleHeight: visibleLength,\n    zoneX: -zoneThicknessPad,\n    zoneY: -zoneLengthPad,\n    zoneWidth: visibleThickness + 2 * zoneThicknessPad,\n    zoneHeight: visibleLength + 2 * zoneLengthPad,\n    labelY: d.horizontal ? n.dy / 2 + 1 : n.dx / 2 + 1,\n    left: n.originalLayer === 1,\n    sizeAcross: d.width,\n    forceLayouts: d.forceLayouts,\n    horizontal: d.horizontal,\n    darkBackground: tc.getBrightness() <= 128,\n    tinyColorHue: Color.tinyRGB(tc),\n    tinyColorAlpha: tc.getAlpha(),\n    valueFormat: d.valueFormat,\n    valueSuffix: d.valueSuffix,\n    sankey: d.sankey,\n    graph: d.graph,\n    arrangement: d.arrangement,\n    uniqueNodeLabelPathId: [d.guid, d.key, key].join('_'),\n    interactionState: d.interactionState,\n    figure: d\n  };\n}\n\n// rendering snippets\n\nfunction updateNodePositions(sankeyNode) {\n  sankeyNode.attr('transform', function (d) {\n    return strTranslate(d.node.x0.toFixed(3), d.node.y0.toFixed(3));\n  });\n}\nfunction updateNodeShapes(sankeyNode) {\n  sankeyNode.call(updateNodePositions);\n}\nfunction updateShapes(sankeyNode, sankeyLink) {\n  sankeyNode.call(updateNodeShapes);\n  sankeyLink.attr('d', linkPath());\n}\nfunction sizeNode(rect) {\n  rect.attr('width', function (d) {\n    return d.node.x1 - d.node.x0;\n  }).attr('height', function (d) {\n    return d.visibleHeight;\n  });\n}\nfunction salientEnough(d) {\n  return d.link.width > 1 || d.linkLineWidth > 0;\n}\nfunction sankeyTransform(d) {\n  var offset = strTranslate(d.translateX, d.translateY);\n  return offset + (d.horizontal ? 'matrix(1 0 0 1 0 0)' : 'matrix(0 1 1 0 0 0)');\n}\n\n// event handling\n\nfunction attachPointerEvents(selection, sankey, eventSet) {\n  selection.on('.basic', null) // remove any preexisting handlers\n  .on('mouseover.basic', function (d) {\n    if (!d.interactionState.dragInProgress && !d.partOfGroup) {\n      eventSet.hover(this, d, sankey);\n      d.interactionState.hovered = [this, d];\n    }\n  }).on('mousemove.basic', function (d) {\n    if (!d.interactionState.dragInProgress && !d.partOfGroup) {\n      eventSet.follow(this, d);\n      d.interactionState.hovered = [this, d];\n    }\n  }).on('mouseout.basic', function (d) {\n    if (!d.interactionState.dragInProgress && !d.partOfGroup) {\n      eventSet.unhover(this, d, sankey);\n      d.interactionState.hovered = false;\n    }\n  }).on('click.basic', function (d) {\n    if (d.interactionState.hovered) {\n      eventSet.unhover(this, d, sankey);\n      d.interactionState.hovered = false;\n    }\n    if (!d.interactionState.dragInProgress && !d.partOfGroup) {\n      eventSet.select(this, d, sankey);\n    }\n  });\n}\nfunction attachDragHandler(sankeyNode, sankeyLink, callbacks, gd) {\n  var dragBehavior = d3.behavior.drag().origin(function (d) {\n    return {\n      x: d.node.x0 + d.visibleWidth / 2,\n      y: d.node.y0 + d.visibleHeight / 2\n    };\n  }).on('dragstart', function (d) {\n    if (d.arrangement === 'fixed') return;\n    Lib.ensureSingle(gd._fullLayout._infolayer, 'g', 'dragcover', function (s) {\n      gd._fullLayout._dragCover = s;\n    });\n    Lib.raiseToTop(this);\n    d.interactionState.dragInProgress = d.node;\n    saveCurrentDragPosition(d.node);\n    if (d.interactionState.hovered) {\n      callbacks.nodeEvents.unhover.apply(0, d.interactionState.hovered);\n      d.interactionState.hovered = false;\n    }\n    if (d.arrangement === 'snap') {\n      var forceKey = d.traceId + '|' + d.key;\n      if (d.forceLayouts[forceKey]) {\n        d.forceLayouts[forceKey].alpha(1);\n      } else {\n        // make a forceLayout if needed\n        attachForce(sankeyNode, forceKey, d, gd);\n      }\n      startForce(sankeyNode, sankeyLink, d, forceKey, gd);\n    }\n  }).on('drag', function (d) {\n    if (d.arrangement === 'fixed') return;\n    var x = d3.event.x;\n    var y = d3.event.y;\n    if (d.arrangement === 'snap') {\n      d.node.x0 = x - d.visibleWidth / 2;\n      d.node.x1 = x + d.visibleWidth / 2;\n      d.node.y0 = y - d.visibleHeight / 2;\n      d.node.y1 = y + d.visibleHeight / 2;\n    } else {\n      if (d.arrangement === 'freeform') {\n        d.node.x0 = x - d.visibleWidth / 2;\n        d.node.x1 = x + d.visibleWidth / 2;\n      }\n      y = Math.max(0, Math.min(d.size - d.visibleHeight / 2, y));\n      d.node.y0 = y - d.visibleHeight / 2;\n      d.node.y1 = y + d.visibleHeight / 2;\n    }\n    saveCurrentDragPosition(d.node);\n    if (d.arrangement !== 'snap') {\n      d.sankey.update(d.graph);\n      updateShapes(sankeyNode.filter(sameLayer(d)), sankeyLink);\n    }\n  }).on('dragend', function (d) {\n    if (d.arrangement === 'fixed') return;\n    d.interactionState.dragInProgress = false;\n    for (var i = 0; i < d.node.childrenNodes.length; i++) {\n      d.node.childrenNodes[i].x = d.node.x;\n      d.node.childrenNodes[i].y = d.node.y;\n    }\n    if (d.arrangement !== 'snap') persistFinalNodePositions(d, gd);\n  });\n  sankeyNode.on('.drag', null) // remove possible previous handlers\n  .call(dragBehavior);\n}\nfunction attachForce(sankeyNode, forceKey, d, gd) {\n  // Attach force to nodes in the same column (same x coordinate)\n  switchToForceFormat(d.graph.nodes);\n  var nodes = d.graph.nodes.filter(function (n) {\n    return n.originalX === d.node.originalX;\n  })\n  // Filter out children\n  .filter(function (n) {\n    return !n.partOfGroup;\n  });\n  d.forceLayouts[forceKey] = d3Force.forceSimulation(nodes).alphaDecay(0).force('collide', d3Force.forceCollide().radius(function (n) {\n    return n.dy / 2 + d.nodePad / 2;\n  }).strength(1).iterations(c.forceIterations)).force('constrain', snappingForce(sankeyNode, forceKey, nodes, d, gd)).stop();\n}\nfunction startForce(sankeyNode, sankeyLink, d, forceKey, gd) {\n  window.requestAnimationFrame(function faster() {\n    var i;\n    for (i = 0; i < c.forceTicksPerFrame; i++) {\n      d.forceLayouts[forceKey].tick();\n    }\n    var nodes = d.graph.nodes;\n    switchToSankeyFormat(nodes);\n    d.sankey.update(d.graph);\n    updateShapes(sankeyNode.filter(sameLayer(d)), sankeyLink);\n    if (d.forceLayouts[forceKey].alpha() > 0) {\n      window.requestAnimationFrame(faster);\n    } else {\n      // Make sure the final x position is equal to its original value\n      // because the force simulation will have numerical error\n      var x = d.node.originalX;\n      d.node.x0 = x - d.visibleWidth / 2;\n      d.node.x1 = x + d.visibleWidth / 2;\n      persistFinalNodePositions(d, gd);\n    }\n  });\n}\nfunction snappingForce(sankeyNode, forceKey, nodes, d) {\n  return function _snappingForce() {\n    var maxVelocity = 0;\n    for (var i = 0; i < nodes.length; i++) {\n      var n = nodes[i];\n      if (n === d.interactionState.dragInProgress) {\n        // constrain node position to the dragging pointer\n        n.x = n.lastDraggedX;\n        n.y = n.lastDraggedY;\n      } else {\n        n.vx = (n.originalX - n.x) / c.forceTicksPerFrame; // snap to layer\n        n.y = Math.min(d.size - n.dy / 2, Math.max(n.dy / 2, n.y)); // constrain to extent\n      }\n\n      maxVelocity = Math.max(maxVelocity, Math.abs(n.vx), Math.abs(n.vy));\n    }\n    if (!d.interactionState.dragInProgress && maxVelocity < 0.1 && d.forceLayouts[forceKey].alpha() > 0) {\n      d.forceLayouts[forceKey].alpha(0); // This will stop the animation loop\n    }\n  };\n}\n\n// basic data utilities\n\nfunction persistFinalNodePositions(d, gd) {\n  var x = [];\n  var y = [];\n  for (var i = 0; i < d.graph.nodes.length; i++) {\n    var nodeX = (d.graph.nodes[i].x0 + d.graph.nodes[i].x1) / 2;\n    var nodeY = (d.graph.nodes[i].y0 + d.graph.nodes[i].y1) / 2;\n    x.push(nodeX / d.figure.width);\n    y.push(nodeY / d.figure.height);\n  }\n  Registry.call('_guiRestyle', gd, {\n    'node.x': [x],\n    'node.y': [y]\n  }, d.trace.index).then(function () {\n    if (gd._fullLayout._dragCover) gd._fullLayout._dragCover.remove();\n  });\n}\nfunction persistOriginalPlace(nodes) {\n  var distinctLayerPositions = [];\n  var i;\n  for (i = 0; i < nodes.length; i++) {\n    nodes[i].originalX = (nodes[i].x0 + nodes[i].x1) / 2;\n    nodes[i].originalY = (nodes[i].y0 + nodes[i].y1) / 2;\n    if (distinctLayerPositions.indexOf(nodes[i].originalX) === -1) {\n      distinctLayerPositions.push(nodes[i].originalX);\n    }\n  }\n  distinctLayerPositions.sort(function (a, b) {\n    return a - b;\n  });\n  for (i = 0; i < nodes.length; i++) {\n    nodes[i].originalLayerIndex = distinctLayerPositions.indexOf(nodes[i].originalX);\n    nodes[i].originalLayer = nodes[i].originalLayerIndex / (distinctLayerPositions.length - 1);\n  }\n}\nfunction saveCurrentDragPosition(d) {\n  d.lastDraggedX = d.x0 + d.dx / 2;\n  d.lastDraggedY = d.y0 + d.dy / 2;\n}\nfunction sameLayer(d) {\n  return function (n) {\n    return n.node.originalX === d.node.originalX;\n  };\n}\nfunction switchToForceFormat(nodes) {\n  // force uses x, y as centers\n  for (var i = 0; i < nodes.length; i++) {\n    nodes[i].y = (nodes[i].y0 + nodes[i].y1) / 2;\n    nodes[i].x = (nodes[i].x0 + nodes[i].x1) / 2;\n  }\n}\nfunction switchToSankeyFormat(nodes) {\n  // sankey uses x0, x1, y0, y1\n  for (var i = 0; i < nodes.length; i++) {\n    nodes[i].y0 = nodes[i].y - nodes[i].dy / 2;\n    nodes[i].y1 = nodes[i].y0 + nodes[i].dy;\n    nodes[i].x0 = nodes[i].x - nodes[i].dx / 2;\n    nodes[i].x1 = nodes[i].x0 + nodes[i].dx;\n  }\n}\n\n// scene graph\nmodule.exports = function (gd, svg, calcData, layout, callbacks) {\n  var isStatic = gd._context.staticPlot;\n\n  // To prevent animation on first render\n  var firstRender = false;\n  Lib.ensureSingle(gd._fullLayout._infolayer, 'g', 'first-render', function () {\n    firstRender = true;\n  });\n\n  // To prevent animation on dragging\n  var dragcover = gd._fullLayout._dragCover;\n  var styledData = calcData.filter(function (d) {\n    return unwrap(d).trace.visible;\n  }).map(sankeyModel.bind(null, layout));\n  var sankey = svg.selectAll('.' + c.cn.sankey).data(styledData, keyFun);\n  sankey.exit().remove();\n  sankey.enter().append('g').classed(c.cn.sankey, true).style('box-sizing', 'content-box').style('position', 'absolute').style('left', 0).style('shape-rendering', 'geometricPrecision').style('pointer-events', isStatic ? 'none' : 'auto').attr('transform', sankeyTransform);\n  sankey.each(function (d, i) {\n    gd._fullData[i]._sankey = d;\n    // Create dragbox if missing\n    var dragboxClassName = 'bgsankey-' + d.trace.uid + '-' + i;\n    Lib.ensureSingle(gd._fullLayout._draggers, 'rect', dragboxClassName);\n    gd._fullData[i]._bgRect = d3.select('.' + dragboxClassName);\n\n    // Style dragbox\n    gd._fullData[i]._bgRect.style('pointer-events', isStatic ? 'none' : 'all').attr('width', d.width).attr('height', d.height).attr('x', d.translateX).attr('y', d.translateY).classed('bgsankey', true).style({\n      fill: 'transparent',\n      'stroke-width': 0\n    });\n  });\n  sankey.transition().ease(c.ease).duration(c.duration).attr('transform', sankeyTransform);\n  var sankeyLinks = sankey.selectAll('.' + c.cn.sankeyLinks).data(repeat, keyFun);\n  sankeyLinks.enter().append('g').classed(c.cn.sankeyLinks, true).style('fill', 'none');\n  var sankeyLink = sankeyLinks.selectAll('.' + c.cn.sankeyLink).data(function (d) {\n    var links = d.graph.links;\n    return links.filter(function (l) {\n      return l.value;\n    }).map(linkModel.bind(null, d));\n  }, keyFun);\n  sankeyLink.enter().append('path').classed(c.cn.sankeyLink, true).call(attachPointerEvents, sankey, callbacks.linkEvents);\n  sankeyLink.style('stroke', function (d) {\n    return salientEnough(d) ? Color.tinyRGB(tinycolor(d.linkLineColor)) : d.tinyColorHue;\n  }).style('stroke-opacity', function (d) {\n    return salientEnough(d) ? Color.opacity(d.linkLineColor) : d.tinyColorAlpha;\n  }).style('fill', function (d) {\n    return d.tinyColorHue;\n  }).style('fill-opacity', function (d) {\n    return d.tinyColorAlpha;\n  }).style('stroke-width', function (d) {\n    return salientEnough(d) ? d.linkLineWidth : 1;\n  }).attr('d', linkPath());\n  sankeyLink.style('opacity', function () {\n    return gd._context.staticPlot || firstRender || dragcover ? 1 : 0;\n  }).transition().ease(c.ease).duration(c.duration).style('opacity', 1);\n  sankeyLink.exit().transition().ease(c.ease).duration(c.duration).style('opacity', 0).remove();\n  var sankeyNodeSet = sankey.selectAll('.' + c.cn.sankeyNodeSet).data(repeat, keyFun);\n  sankeyNodeSet.enter().append('g').classed(c.cn.sankeyNodeSet, true);\n  sankeyNodeSet.style('cursor', function (d) {\n    switch (d.arrangement) {\n      case 'fixed':\n        return 'default';\n      case 'perpendicular':\n        return 'ns-resize';\n      default:\n        return 'move';\n    }\n  });\n  var sankeyNode = sankeyNodeSet.selectAll('.' + c.cn.sankeyNode).data(function (d) {\n    var nodes = d.graph.nodes;\n    persistOriginalPlace(nodes);\n    return nodes.map(nodeModel.bind(null, d));\n  }, keyFun);\n  sankeyNode.enter().append('g').classed(c.cn.sankeyNode, true).call(updateNodePositions).style('opacity', function (n) {\n    return (gd._context.staticPlot || firstRender) && !n.partOfGroup ? 1 : 0;\n  });\n  sankeyNode.call(attachPointerEvents, sankey, callbacks.nodeEvents).call(attachDragHandler, sankeyLink, callbacks, gd); // has to be here as it binds sankeyLink\n\n  sankeyNode.transition().ease(c.ease).duration(c.duration).call(updateNodePositions).style('opacity', function (n) {\n    return n.partOfGroup ? 0 : 1;\n  });\n  sankeyNode.exit().transition().ease(c.ease).duration(c.duration).style('opacity', 0).remove();\n  var nodeRect = sankeyNode.selectAll('.' + c.cn.nodeRect).data(repeat);\n  nodeRect.enter().append('rect').classed(c.cn.nodeRect, true).call(sizeNode);\n  nodeRect.style('stroke-width', function (d) {\n    return d.nodeLineWidth;\n  }).style('stroke', function (d) {\n    return Color.tinyRGB(tinycolor(d.nodeLineColor));\n  }).style('stroke-opacity', function (d) {\n    return Color.opacity(d.nodeLineColor);\n  }).style('fill', function (d) {\n    return d.tinyColorHue;\n  }).style('fill-opacity', function (d) {\n    return d.tinyColorAlpha;\n  });\n  nodeRect.transition().ease(c.ease).duration(c.duration).call(sizeNode);\n  var nodeLabel = sankeyNode.selectAll('.' + c.cn.nodeLabel).data(repeat);\n  nodeLabel.enter().append('text').classed(c.cn.nodeLabel, true).style('cursor', 'default');\n  nodeLabel.attr('data-notex', 1) // prohibit tex interpretation until we can handle tex and regular text together\n  .text(function (d) {\n    return d.node.label;\n  }).each(function (d) {\n    var e = d3.select(this);\n    Drawing.font(e, d.textFont);\n    svgTextUtils.convertToTspans(e, gd);\n  }).style('text-shadow', svgTextUtils.makeTextShadow(gd._fullLayout.paper_bgcolor)).attr('text-anchor', function (d) {\n    return d.horizontal && d.left ? 'end' : 'start';\n  }).attr('transform', function (d) {\n    var e = d3.select(this);\n    // how much to shift a multi-line label to center it vertically.\n    var nLines = svgTextUtils.lineCount(e);\n    var blockHeight = d.textFont.size * ((nLines - 1) * LINE_SPACING - CAP_SHIFT);\n    var posX = d.nodeLineWidth / 2 + TEXTPAD;\n    var posY = ((d.horizontal ? d.visibleHeight : d.visibleWidth) - blockHeight) / 2;\n    if (d.horizontal) {\n      if (d.left) {\n        posX = -posX;\n      } else {\n        posX += d.visibleWidth;\n      }\n    }\n    var flipText = d.horizontal ? '' : 'scale(-1,1)' + strRotate(90);\n    return strTranslate(d.horizontal ? posX : posY, d.horizontal ? posY : posX) + flipText;\n  });\n  nodeLabel.transition().ease(c.ease).duration(c.duration);\n};\n\n/***/ }),\n\n/***/ 84564:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function selectPoints(searchInfo, selectionTester) {\n  var cd = searchInfo.cd;\n  var selection = [];\n  var fullData = cd[0].trace;\n  var nodes = fullData._sankey.graph.nodes;\n  for (var i = 0; i < nodes.length; i++) {\n    var node = nodes[i];\n    if (node.partOfGroup) continue; // Those are invisible\n\n    // Position of node's centroid\n    var pos = [(node.x0 + node.x1) / 2, (node.y0 + node.y1) / 2];\n\n    // Swap x and y if trace is vertical\n    if (fullData.orientation === 'v') pos.reverse();\n    if (selectionTester && selectionTester.contains(pos, false, i, searchInfo)) {\n      selection.push({\n        pointNumber: node.pointNumber\n        // TODO: add eventData\n      });\n    }\n  }\n\n  return selection;\n};\n\n/***/ }),\n\n/***/ 75225:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3064058__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3064058__(71828);\n\n// arrayOk attributes, merge them into calcdata array\nmodule.exports = function arraysToCalcdata(cd, trace) {\n  // so each point knows which index it originally came from\n  for (var i = 0; i < cd.length; i++) cd[i].i = i;\n  Lib.mergeArray(trace.text, cd, 'tx');\n  Lib.mergeArray(trace.texttemplate, cd, 'txt');\n  Lib.mergeArray(trace.hovertext, cd, 'htx');\n  Lib.mergeArray(trace.customdata, cd, 'data');\n  Lib.mergeArray(trace.textposition, cd, 'tp');\n  if (trace.textfont) {\n    Lib.mergeArrayCastPositive(trace.textfont.size, cd, 'ts');\n    Lib.mergeArray(trace.textfont.color, cd, 'tc');\n    Lib.mergeArray(trace.textfont.family, cd, 'tf');\n  }\n  var marker = trace.marker;\n  if (marker) {\n    Lib.mergeArrayCastPositive(marker.size, cd, 'ms');\n    Lib.mergeArrayCastPositive(marker.opacity, cd, 'mo');\n    Lib.mergeArray(marker.symbol, cd, 'mx');\n    Lib.mergeArray(marker.angle, cd, 'ma');\n    Lib.mergeArray(marker.standoff, cd, 'mf');\n    Lib.mergeArray(marker.color, cd, 'mc');\n    var markerLine = marker.line;\n    if (marker.line) {\n      Lib.mergeArray(markerLine.color, cd, 'mlc');\n      Lib.mergeArrayCastPositive(markerLine.width, cd, 'mlw');\n    }\n    var markerGradient = marker.gradient;\n    if (markerGradient && markerGradient.type !== 'none') {\n      Lib.mergeArray(markerGradient.type, cd, 'mgt');\n      Lib.mergeArray(markerGradient.color, cd, 'mgc');\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 82196:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3065600__) {\n\n\"use strict\";\n\n\nvar axisHoverFormat = (__nested_webpack_require_3065600__(12663).axisHoverFormat);\nvar texttemplateAttrs = (__nested_webpack_require_3065600__(5386)/* .texttemplateAttrs */ .s);\nvar hovertemplateAttrs = (__nested_webpack_require_3065600__(5386)/* .hovertemplateAttrs */ .f);\nvar colorScaleAttrs = __nested_webpack_require_3065600__(50693);\nvar fontAttrs = __nested_webpack_require_3065600__(41940);\nvar dash = (__nested_webpack_require_3065600__(79952)/* .dash */ .P);\nvar pattern = (__nested_webpack_require_3065600__(79952)/* .pattern */ .u);\nvar Drawing = __nested_webpack_require_3065600__(91424);\nvar constants = __nested_webpack_require_3065600__(47581);\nvar extendFlat = (__nested_webpack_require_3065600__(1426).extendFlat);\nfunction axisPeriod(axis) {\n  return {\n    valType: 'any',\n    dflt: 0,\n    editType: 'calc'\n  };\n}\nfunction axisPeriod0(axis) {\n  return {\n    valType: 'any',\n    editType: 'calc'\n  };\n}\nfunction axisPeriodAlignment(axis) {\n  return {\n    valType: 'enumerated',\n    values: ['start', 'middle', 'end'],\n    dflt: 'middle',\n    editType: 'calc'\n  };\n}\nmodule.exports = {\n  x: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes',\n    anim: true\n  },\n  x0: {\n    valType: 'any',\n    dflt: 0,\n    editType: 'calc+clearAxisTypes',\n    anim: true\n  },\n  dx: {\n    valType: 'number',\n    dflt: 1,\n    editType: 'calc',\n    anim: true\n  },\n  y: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes',\n    anim: true\n  },\n  y0: {\n    valType: 'any',\n    dflt: 0,\n    editType: 'calc+clearAxisTypes',\n    anim: true\n  },\n  dy: {\n    valType: 'number',\n    dflt: 1,\n    editType: 'calc',\n    anim: true\n  },\n  xperiod: axisPeriod('x'),\n  yperiod: axisPeriod('y'),\n  xperiod0: axisPeriod0('x0'),\n  yperiod0: axisPeriod0('y0'),\n  xperiodalignment: axisPeriodAlignment('x'),\n  yperiodalignment: axisPeriodAlignment('y'),\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  offsetgroup: {\n    valType: 'string',\n    dflt: '',\n    editType: 'calc'\n  },\n  alignmentgroup: {\n    valType: 'string',\n    dflt: '',\n    editType: 'calc'\n  },\n  stackgroup: {\n    valType: 'string',\n    dflt: '',\n    editType: 'calc'\n  },\n  orientation: {\n    valType: 'enumerated',\n    values: ['v', 'h'],\n    editType: 'calc'\n  },\n  groupnorm: {\n    valType: 'enumerated',\n    values: ['', 'fraction', 'percent'],\n    dflt: '',\n    editType: 'calc'\n  },\n  stackgaps: {\n    valType: 'enumerated',\n    values: ['infer zero', 'interpolate'],\n    dflt: 'infer zero',\n    editType: 'calc'\n  },\n  text: {\n    valType: 'string',\n    dflt: '',\n    arrayOk: true,\n    editType: 'calc'\n  },\n  texttemplate: texttemplateAttrs({}, {}),\n  hovertext: {\n    valType: 'string',\n    dflt: '',\n    arrayOk: true,\n    editType: 'style'\n  },\n  mode: {\n    valType: 'flaglist',\n    flags: ['lines', 'markers', 'text'],\n    extras: ['none'],\n    editType: 'calc'\n  },\n  hoveron: {\n    valType: 'flaglist',\n    flags: ['points', 'fills'],\n    editType: 'style'\n  },\n  hovertemplate: hovertemplateAttrs({}, {\n    keys: constants.eventDataKeys\n  }),\n  line: {\n    color: {\n      valType: 'color',\n      editType: 'style',\n      anim: true\n    },\n    width: {\n      valType: 'number',\n      min: 0,\n      dflt: 2,\n      editType: 'style',\n      anim: true\n    },\n    shape: {\n      valType: 'enumerated',\n      values: ['linear', 'spline', 'hv', 'vh', 'hvh', 'vhv'],\n      dflt: 'linear',\n      editType: 'plot'\n    },\n    smoothing: {\n      valType: 'number',\n      min: 0,\n      max: 1.3,\n      dflt: 1,\n      editType: 'plot'\n    },\n    dash: extendFlat({}, dash, {\n      editType: 'style'\n    }),\n    backoff: {\n      // we want to have a similar option for the start of the line\n      valType: 'number',\n      min: 0,\n      dflt: 'auto',\n      arrayOk: true,\n      editType: 'plot'\n    },\n    simplify: {\n      valType: 'boolean',\n      dflt: true,\n      editType: 'plot'\n    },\n    editType: 'plot'\n  },\n  connectgaps: {\n    valType: 'boolean',\n    dflt: false,\n    editType: 'calc'\n  },\n  cliponaxis: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'plot'\n  },\n  fill: {\n    valType: 'enumerated',\n    values: ['none', 'tozeroy', 'tozerox', 'tonexty', 'tonextx', 'toself', 'tonext'],\n    editType: 'calc'\n  },\n  fillcolor: {\n    valType: 'color',\n    editType: 'style',\n    anim: true\n  },\n  fillpattern: pattern,\n  marker: extendFlat({\n    symbol: {\n      valType: 'enumerated',\n      values: Drawing.symbolList,\n      dflt: 'circle',\n      arrayOk: true,\n      editType: 'style'\n    },\n    opacity: {\n      valType: 'number',\n      min: 0,\n      max: 1,\n      arrayOk: true,\n      editType: 'style',\n      anim: true\n    },\n    angle: {\n      valType: 'angle',\n      dflt: 0,\n      arrayOk: true,\n      editType: 'plot',\n      anim: false // TODO: possibly set to true in future\n    },\n\n    angleref: {\n      valType: 'enumerated',\n      values: ['previous', 'up'],\n      dflt: 'up',\n      editType: 'plot',\n      anim: false\n    },\n    standoff: {\n      valType: 'number',\n      min: 0,\n      dflt: 0,\n      arrayOk: true,\n      editType: 'plot',\n      anim: true\n    },\n    size: {\n      valType: 'number',\n      min: 0,\n      dflt: 6,\n      arrayOk: true,\n      editType: 'calc',\n      anim: true\n    },\n    maxdisplayed: {\n      valType: 'number',\n      min: 0,\n      dflt: 0,\n      editType: 'plot'\n    },\n    sizeref: {\n      valType: 'number',\n      dflt: 1,\n      editType: 'calc'\n    },\n    sizemin: {\n      valType: 'number',\n      min: 0,\n      dflt: 0,\n      editType: 'calc'\n    },\n    sizemode: {\n      valType: 'enumerated',\n      values: ['diameter', 'area'],\n      dflt: 'diameter',\n      editType: 'calc'\n    },\n    line: extendFlat({\n      width: {\n        valType: 'number',\n        min: 0,\n        arrayOk: true,\n        editType: 'style',\n        anim: true\n      },\n      editType: 'calc'\n    }, colorScaleAttrs('marker.line', {\n      anim: true\n    })),\n    gradient: {\n      type: {\n        valType: 'enumerated',\n        values: ['radial', 'horizontal', 'vertical', 'none'],\n        arrayOk: true,\n        dflt: 'none',\n        editType: 'calc'\n      },\n      color: {\n        valType: 'color',\n        arrayOk: true,\n        editType: 'calc'\n      },\n      editType: 'calc'\n    },\n    editType: 'calc'\n  }, colorScaleAttrs('marker', {\n    anim: true\n  })),\n  selected: {\n    marker: {\n      opacity: {\n        valType: 'number',\n        min: 0,\n        max: 1,\n        editType: 'style'\n      },\n      color: {\n        valType: 'color',\n        editType: 'style'\n      },\n      size: {\n        valType: 'number',\n        min: 0,\n        editType: 'style'\n      },\n      editType: 'style'\n    },\n    textfont: {\n      color: {\n        valType: 'color',\n        editType: 'style'\n      },\n      editType: 'style'\n    },\n    editType: 'style'\n  },\n  unselected: {\n    marker: {\n      opacity: {\n        valType: 'number',\n        min: 0,\n        max: 1,\n        editType: 'style'\n      },\n      color: {\n        valType: 'color',\n        editType: 'style'\n      },\n      size: {\n        valType: 'number',\n        min: 0,\n        editType: 'style'\n      },\n      editType: 'style'\n    },\n    textfont: {\n      color: {\n        valType: 'color',\n        editType: 'style'\n      },\n      editType: 'style'\n    },\n    editType: 'style'\n  },\n  textposition: {\n    valType: 'enumerated',\n    values: ['top left', 'top center', 'top right', 'middle left', 'middle center', 'middle right', 'bottom left', 'bottom center', 'bottom right'],\n    dflt: 'middle center',\n    arrayOk: true,\n    editType: 'calc'\n  },\n  textfont: fontAttrs({\n    editType: 'calc',\n    colorEditType: 'style',\n    arrayOk: true\n  })\n};\n\n/***/ }),\n\n/***/ 47761:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3073228__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_3073228__(92770);\nvar Lib = __nested_webpack_require_3073228__(71828);\nvar Axes = __nested_webpack_require_3073228__(89298);\nvar alignPeriod = __nested_webpack_require_3073228__(42973);\nvar BADNUM = (__nested_webpack_require_3073228__(50606).BADNUM);\nvar subTypes = __nested_webpack_require_3073228__(34098);\nvar calcColorscale = __nested_webpack_require_3073228__(36922);\nvar arraysToCalcdata = __nested_webpack_require_3073228__(75225);\nvar calcSelection = __nested_webpack_require_3073228__(66279);\nfunction calc(gd, trace) {\n  var fullLayout = gd._fullLayout;\n  var xa = trace._xA = Axes.getFromId(gd, trace.xaxis || 'x', 'x');\n  var ya = trace._yA = Axes.getFromId(gd, trace.yaxis || 'y', 'y');\n  var origX = xa.makeCalcdata(trace, 'x');\n  var origY = ya.makeCalcdata(trace, 'y');\n  var xObj = alignPeriod(trace, xa, 'x', origX);\n  var yObj = alignPeriod(trace, ya, 'y', origY);\n  var x = xObj.vals;\n  var y = yObj.vals;\n  var serieslen = trace._length;\n  var cd = new Array(serieslen);\n  var ids = trace.ids;\n  var stackGroupOpts = getStackOpts(trace, fullLayout, xa, ya);\n  var interpolateGaps = false;\n  var isV, i, j, k, interpolate, vali;\n  setFirstScatter(fullLayout, trace);\n  var xAttr = 'x';\n  var yAttr = 'y';\n  var posAttr;\n  if (stackGroupOpts) {\n    Lib.pushUnique(stackGroupOpts.traceIndices, trace._expandedIndex);\n    isV = stackGroupOpts.orientation === 'v';\n\n    // size, like we use for bar\n    if (isV) {\n      yAttr = 's';\n      posAttr = 'x';\n    } else {\n      xAttr = 's';\n      posAttr = 'y';\n    }\n    interpolate = stackGroupOpts.stackgaps === 'interpolate';\n  } else {\n    var ppad = calcMarkerSize(trace, serieslen);\n    calcAxisExpansion(gd, trace, xa, ya, x, y, ppad);\n  }\n  var hasPeriodX = !!trace.xperiodalignment;\n  var hasPeriodY = !!trace.yperiodalignment;\n  for (i = 0; i < serieslen; i++) {\n    var cdi = cd[i] = {};\n    var xValid = isNumeric(x[i]);\n    var yValid = isNumeric(y[i]);\n    if (xValid && yValid) {\n      cdi[xAttr] = x[i];\n      cdi[yAttr] = y[i];\n      if (hasPeriodX) {\n        cdi.orig_x = origX[i]; // used by hover\n        cdi.xEnd = xObj.ends[i];\n        cdi.xStart = xObj.starts[i];\n      }\n      if (hasPeriodY) {\n        cdi.orig_y = origY[i]; // used by hover\n        cdi.yEnd = yObj.ends[i];\n        cdi.yStart = yObj.starts[i];\n      }\n    } else if (stackGroupOpts && (isV ? xValid : yValid)) {\n      // if we're stacking we need to hold on to all valid positions\n      // even with invalid sizes\n\n      cdi[posAttr] = isV ? x[i] : y[i];\n      cdi.gap = true;\n      if (interpolate) {\n        cdi.s = BADNUM;\n        interpolateGaps = true;\n      } else {\n        cdi.s = 0;\n      }\n    } else {\n      cdi[xAttr] = cdi[yAttr] = BADNUM;\n    }\n    if (ids) {\n      cdi.id = String(ids[i]);\n    }\n  }\n  arraysToCalcdata(cd, trace);\n  calcColorscale(gd, trace);\n  calcSelection(cd, trace);\n  if (stackGroupOpts) {\n    // remove bad positions and sort\n    // note that original indices get added to cd in arraysToCalcdata\n    i = 0;\n    while (i < cd.length) {\n      if (cd[i][posAttr] === BADNUM) {\n        cd.splice(i, 1);\n      } else i++;\n    }\n    Lib.sort(cd, function (a, b) {\n      return a[posAttr] - b[posAttr] || a.i - b.i;\n    });\n    if (interpolateGaps) {\n      // first fill the beginning with constant from the first point\n      i = 0;\n      while (i < cd.length - 1 && cd[i].gap) {\n        i++;\n      }\n      vali = cd[i].s;\n      if (!vali) vali = cd[i].s = 0; // in case of no data AT ALL in this trace - use 0\n      for (j = 0; j < i; j++) {\n        cd[j].s = vali;\n      }\n      // then fill the end with constant from the last point\n      k = cd.length - 1;\n      while (k > i && cd[k].gap) {\n        k--;\n      }\n      vali = cd[k].s;\n      for (j = cd.length - 1; j > k; j--) {\n        cd[j].s = vali;\n      }\n      // now interpolate internal gaps linearly\n      while (i < k) {\n        i++;\n        if (cd[i].gap) {\n          j = i + 1;\n          while (cd[j].gap) {\n            j++;\n          }\n          var pos0 = cd[i - 1][posAttr];\n          var size0 = cd[i - 1].s;\n          var m = (cd[j].s - size0) / (cd[j][posAttr] - pos0);\n          while (i < j) {\n            cd[i].s = size0 + (cd[i][posAttr] - pos0) * m;\n            i++;\n          }\n        }\n      }\n    }\n  }\n  return cd;\n}\nfunction calcAxisExpansion(gd, trace, xa, ya, x, y, ppad) {\n  var serieslen = trace._length;\n  var fullLayout = gd._fullLayout;\n  var xId = xa._id;\n  var yId = ya._id;\n  var firstScatter = fullLayout._firstScatter[firstScatterGroup(trace)] === trace.uid;\n  var stackOrientation = (getStackOpts(trace, fullLayout, xa, ya) || {}).orientation;\n  var fill = trace.fill;\n\n  // cancel minimum tick spacings (only applies to bars and boxes)\n  xa._minDtick = 0;\n  ya._minDtick = 0;\n\n  // check whether bounds should be tight, padded, extended to zero...\n  // most cases both should be padded on both ends, so start with that.\n  var xOptions = {\n    padded: true\n  };\n  var yOptions = {\n    padded: true\n  };\n  if (ppad) {\n    xOptions.ppad = yOptions.ppad = ppad;\n  }\n\n  // TODO: text size\n\n  var openEnded = serieslen < 2 || x[0] !== x[serieslen - 1] || y[0] !== y[serieslen - 1];\n  if (openEnded && (fill === 'tozerox' || fill === 'tonextx' && (firstScatter || stackOrientation === 'h'))) {\n    // include zero (tight) and extremes (padded) if fill to zero\n    // (unless the shape is closed, then it's just filling the shape regardless)\n\n    xOptions.tozero = true;\n  } else if (!(trace.error_y || {}).visible && (\n  // if no error bars, markers or text, or fill to y=0 remove x padding\n\n  fill === 'tonexty' || fill === 'tozeroy' || !subTypes.hasMarkers(trace) && !subTypes.hasText(trace))) {\n    xOptions.padded = false;\n    xOptions.ppad = 0;\n  }\n  if (openEnded && (fill === 'tozeroy' || fill === 'tonexty' && (firstScatter || stackOrientation === 'v'))) {\n    // now check for y - rather different logic, though still mostly padded both ends\n    // include zero (tight) and extremes (padded) if fill to zero\n    // (unless the shape is closed, then it's just filling the shape regardless)\n\n    yOptions.tozero = true;\n  } else if (fill === 'tonextx' || fill === 'tozerox') {\n    // tight y: any x fill\n\n    yOptions.padded = false;\n  }\n\n  // N.B. asymmetric splom traces call this with blank {} xa or ya\n  if (xId) trace._extremes[xId] = Axes.findExtremes(xa, x, xOptions);\n  if (yId) trace._extremes[yId] = Axes.findExtremes(ya, y, yOptions);\n}\nfunction calcMarkerSize(trace, serieslen) {\n  if (!subTypes.hasMarkers(trace)) return;\n\n  // Treat size like x or y arrays --- Run d2c\n  // this needs to go before ppad computation\n  var marker = trace.marker;\n  var sizeref = 1.6 * (trace.marker.sizeref || 1);\n  var markerTrans;\n  if (trace.marker.sizemode === 'area') {\n    markerTrans = function (v) {\n      return Math.max(Math.sqrt((v || 0) / sizeref), 3);\n    };\n  } else {\n    markerTrans = function (v) {\n      return Math.max((v || 0) / sizeref, 3);\n    };\n  }\n  if (Lib.isArrayOrTypedArray(marker.size)) {\n    // I tried auto-type but category and dates dont make much sense.\n    var ax = {\n      type: 'linear'\n    };\n    Axes.setConvert(ax);\n    var s = ax.makeCalcdata(trace.marker, 'size');\n    var sizeOut = new Array(serieslen);\n    for (var i = 0; i < serieslen; i++) {\n      sizeOut[i] = markerTrans(s[i]);\n    }\n    return sizeOut;\n  } else {\n    return markerTrans(marker.size);\n  }\n}\n\n/**\n * mark the first scatter trace for each subplot\n * note that scatter and scattergl each get their own first trace\n * note also that I'm doing this during calc rather than supplyDefaults\n * so I don't need to worry about transforms, but if we ever do\n * per-trace calc this will get confused.\n */\nfunction setFirstScatter(fullLayout, trace) {\n  var group = firstScatterGroup(trace);\n  var firstScatter = fullLayout._firstScatter;\n  if (!firstScatter[group]) firstScatter[group] = trace.uid;\n}\nfunction firstScatterGroup(trace) {\n  var stackGroup = trace.stackgroup;\n  return trace.xaxis + trace.yaxis + trace.type + (stackGroup ? '-' + stackGroup : '');\n}\nfunction getStackOpts(trace, fullLayout, xa, ya) {\n  var stackGroup = trace.stackgroup;\n  if (!stackGroup) return;\n  var stackOpts = fullLayout._scatterStackOpts[xa._id + ya._id][stackGroup];\n  var stackAx = stackOpts.orientation === 'v' ? ya : xa;\n  // Allow stacking only on numeric axes\n  // calc is a little late to be figuring this out, but during supplyDefaults\n  // we don't know the axis type yet\n  if (stackAx.type === 'linear' || stackAx.type === 'log') return stackOpts;\n}\nmodule.exports = {\n  calc: calc,\n  calcMarkerSize: calcMarkerSize,\n  calcAxisExpansion: calcAxisExpansion,\n  setFirstScatter: setFirstScatter,\n  getStackOpts: getStackOpts\n};\n\n/***/ }),\n\n/***/ 66279:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3081955__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3081955__(71828);\nmodule.exports = function calcSelection(cd, trace) {\n  if (Lib.isArrayOrTypedArray(trace.selectedpoints)) {\n    Lib.tagSelected(cd, trace);\n  }\n};\n\n/***/ }),\n\n/***/ 36922:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3082255__) {\n\n\"use strict\";\n\n\nvar hasColorscale = (__nested_webpack_require_3082255__(52075).hasColorscale);\nvar calcColorscale = __nested_webpack_require_3082255__(78803);\nvar subTypes = __nested_webpack_require_3082255__(34098);\nmodule.exports = function calcMarkerColorscale(gd, trace) {\n  if (subTypes.hasLines(trace) && hasColorscale(trace, 'line')) {\n    calcColorscale(gd, trace, {\n      vals: trace.line.color,\n      containerStr: 'line',\n      cLetter: 'c'\n    });\n  }\n  if (subTypes.hasMarkers(trace)) {\n    if (hasColorscale(trace, 'marker')) {\n      calcColorscale(gd, trace, {\n        vals: trace.marker.color,\n        containerStr: 'marker',\n        cLetter: 'c'\n      });\n    }\n    if (hasColorscale(trace, 'marker.line')) {\n      calcColorscale(gd, trace, {\n        vals: trace.marker.line.color,\n        containerStr: 'marker.line',\n        cLetter: 'c'\n      });\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 47581:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  PTS_LINESONLY: 20,\n  // fixed parameters of clustering and clipping algorithms\n\n  // fraction of clustering tolerance \"so close we don't even consider it a new point\"\n  minTolerance: 0.2,\n  // how fast does clustering tolerance increase as you get away from the visible region\n  toleranceGrowth: 10,\n  // number of viewport sizes away from the visible region\n  // at which we clip all lines to the perimeter\n  maxScreensAway: 20,\n  eventDataKeys: []\n};\n\n/***/ }),\n\n/***/ 72626:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3083731__) {\n\n\"use strict\";\n\n\nvar calc = __nested_webpack_require_3083731__(47761);\nvar setGroupPositions = (__nested_webpack_require_3083731__(11661).setGroupPositions);\nfunction groupCrossTraceCalc(gd, plotinfo) {\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  var fullLayout = gd._fullLayout;\n  var fullTraces = gd._fullData;\n  var calcTraces = gd.calcdata;\n  var calcTracesHorz = [];\n  var calcTracesVert = [];\n  for (var i = 0; i < fullTraces.length; i++) {\n    var fullTrace = fullTraces[i];\n    if (fullTrace.visible === true && fullTrace.type === 'scatter' && fullTrace.xaxis === xa._id && fullTrace.yaxis === ya._id) {\n      if (fullTrace.orientation === 'h') {\n        calcTracesHorz.push(calcTraces[i]);\n      } else if (fullTrace.orientation === 'v') {\n        // check for v since certain scatter traces may not have an orientation\n        calcTracesVert.push(calcTraces[i]);\n      }\n    }\n  }\n  var opts = {\n    mode: fullLayout.scattermode,\n    gap: fullLayout.scattergap\n  };\n  setGroupPositions(gd, xa, ya, calcTracesVert, opts);\n  setGroupPositions(gd, ya, xa, calcTracesHorz, opts);\n}\n\n/*\n * Scatter stacking & normalization calculations\n * runs per subplot, and can handle multiple stacking groups\n */\n\nmodule.exports = function crossTraceCalc(gd, plotinfo) {\n  if (gd._fullLayout.scattermode === 'group') {\n    groupCrossTraceCalc(gd, plotinfo);\n  }\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  var subplot = xa._id + ya._id;\n  var subplotStackOpts = gd._fullLayout._scatterStackOpts[subplot];\n  if (!subplotStackOpts) return;\n  var calcTraces = gd.calcdata;\n  var i, j, k, i2, cd, cd0, posj, sumj, norm;\n  var groupOpts, interpolate, groupnorm, posAttr, valAttr;\n  var hasAnyBlanks;\n  for (var stackGroup in subplotStackOpts) {\n    groupOpts = subplotStackOpts[stackGroup];\n    var indices = groupOpts.traceIndices;\n\n    // can get here with no indices if the stack axis is non-numeric\n    if (!indices.length) continue;\n    interpolate = groupOpts.stackgaps === 'interpolate';\n    groupnorm = groupOpts.groupnorm;\n    if (groupOpts.orientation === 'v') {\n      posAttr = 'x';\n      valAttr = 'y';\n    } else {\n      posAttr = 'y';\n      valAttr = 'x';\n    }\n    hasAnyBlanks = new Array(indices.length);\n    for (i = 0; i < hasAnyBlanks.length; i++) {\n      hasAnyBlanks[i] = false;\n    }\n\n    // Collect the complete set of all positions across ALL traces.\n    // Start with the first trace, then interleave items from later traces\n    // as needed.\n    // Fill in mising items as we go.\n    cd0 = calcTraces[indices[0]];\n    var allPositions = new Array(cd0.length);\n    for (i = 0; i < cd0.length; i++) {\n      allPositions[i] = cd0[i][posAttr];\n    }\n    for (i = 1; i < indices.length; i++) {\n      cd = calcTraces[indices[i]];\n      for (j = k = 0; j < cd.length; j++) {\n        posj = cd[j][posAttr];\n        for (; posj > allPositions[k] && k < allPositions.length; k++) {\n          // the current trace is missing a position from some previous trace(s)\n          insertBlank(cd, j, allPositions[k], i, hasAnyBlanks, interpolate, posAttr);\n          j++;\n        }\n        if (posj !== allPositions[k]) {\n          // previous trace(s) are missing a position from the current trace\n          for (i2 = 0; i2 < i; i2++) {\n            insertBlank(calcTraces[indices[i2]], k, posj, i2, hasAnyBlanks, interpolate, posAttr);\n          }\n          allPositions.splice(k, 0, posj);\n        }\n        k++;\n      }\n      for (; k < allPositions.length; k++) {\n        insertBlank(cd, j, allPositions[k], i, hasAnyBlanks, interpolate, posAttr);\n        j++;\n      }\n    }\n    var serieslen = allPositions.length;\n\n    // stack (and normalize)!\n    for (j = 0; j < cd0.length; j++) {\n      sumj = cd0[j][valAttr] = cd0[j].s;\n      for (i = 1; i < indices.length; i++) {\n        cd = calcTraces[indices[i]];\n        cd[0].trace._rawLength = cd[0].trace._length;\n        cd[0].trace._length = serieslen;\n        sumj += cd[j].s;\n        cd[j][valAttr] = sumj;\n      }\n      if (groupnorm) {\n        norm = (groupnorm === 'fraction' ? sumj : sumj / 100) || 1;\n        for (i = 0; i < indices.length; i++) {\n          var cdj = calcTraces[indices[i]][j];\n          cdj[valAttr] /= norm;\n          cdj.sNorm = cdj.s / norm;\n        }\n      }\n    }\n\n    // autorange\n    for (i = 0; i < indices.length; i++) {\n      cd = calcTraces[indices[i]];\n      var trace = cd[0].trace;\n      var ppad = calc.calcMarkerSize(trace, trace._rawLength);\n      var arrayPad = Array.isArray(ppad);\n      if (ppad && hasAnyBlanks[i] || arrayPad) {\n        var ppadRaw = ppad;\n        ppad = new Array(serieslen);\n        for (j = 0; j < serieslen; j++) {\n          ppad[j] = cd[j].gap ? 0 : arrayPad ? ppadRaw[cd[j].i] : ppadRaw;\n        }\n      }\n      var x = new Array(serieslen);\n      var y = new Array(serieslen);\n      for (j = 0; j < serieslen; j++) {\n        x[j] = cd[j].x;\n        y[j] = cd[j].y;\n      }\n      calc.calcAxisExpansion(gd, trace, xa, ya, x, y, ppad);\n\n      // while we're here (in a loop over all traces in the stack)\n      // record the orientation, so hover can find it easily\n      cd[0].t.orientation = groupOpts.orientation;\n    }\n  }\n};\nfunction insertBlank(calcTrace, index, position, traceIndex, hasAnyBlanks, interpolate, posAttr) {\n  hasAnyBlanks[traceIndex] = true;\n  var newEntry = {\n    i: null,\n    gap: true,\n    s: 0\n  };\n  newEntry[posAttr] = position;\n  calcTrace.splice(index, 0, newEntry);\n  // Even if we're not interpolating, if one trace has multiple\n  // values at the same position and this trace only has one value there,\n  // we just duplicate that one value rather than insert a zero.\n  // We also make it look like a real point - because it's ambiguous which\n  // one really is the real one!\n  if (index && position === calcTrace[index - 1][posAttr]) {\n    var prevEntry = calcTrace[index - 1];\n    newEntry.s = prevEntry.s;\n    // TODO is it going to cause any problems to have multiple\n    // calcdata points with the same index?\n    newEntry.i = prevEntry.i;\n    newEntry.gap = prevEntry.gap;\n  } else if (interpolate) {\n    newEntry.s = getInterp(calcTrace, index, position, posAttr);\n  }\n  if (!index) {\n    // t and trace need to stay on the first cd entry\n    calcTrace[0].t = calcTrace[1].t;\n    calcTrace[0].trace = calcTrace[1].trace;\n    delete calcTrace[1].t;\n    delete calcTrace[1].trace;\n  }\n}\nfunction getInterp(calcTrace, index, position, posAttr) {\n  var pt0 = calcTrace[index - 1];\n  var pt1 = calcTrace[index + 1];\n  if (!pt1) return pt0.s;\n  if (!pt0) return pt1.s;\n  return pt0.s + (pt1.s - pt0.s) * (position - pt0[posAttr]) / (pt1[posAttr] - pt0[posAttr]);\n}\n\n/***/ }),\n\n/***/ 34936:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3090441__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3090441__(71828);\nvar handleGroupingDefaults = __nested_webpack_require_3090441__(26125);\nvar attributes = __nested_webpack_require_3090441__(82196);\n\n// remove opacity for any trace that has a fill or is filled to\nmodule.exports = function crossTraceDefaults(fullData, fullLayout) {\n  var traceIn, traceOut, i;\n  function coerce(attr) {\n    return Lib.coerce(traceOut._input, traceOut, attributes, attr);\n  }\n  if (fullLayout.scattermode === 'group') {\n    for (i = 0; i < fullData.length; i++) {\n      traceOut = fullData[i];\n      if (traceOut.type === 'scatter') {\n        traceIn = traceOut._input;\n        handleGroupingDefaults(traceIn, traceOut, fullLayout, coerce);\n      }\n    }\n  }\n  for (i = 0; i < fullData.length; i++) {\n    var tracei = fullData[i];\n    if (tracei.type !== 'scatter') continue;\n    var filli = tracei.fill;\n    if (filli === 'none' || filli === 'toself') continue;\n    tracei.opacity = undefined;\n    if (filli === 'tonexty' || filli === 'tonextx') {\n      for (var j = i - 1; j >= 0; j--) {\n        var tracej = fullData[j];\n        if (tracej.type === 'scatter' && tracej.xaxis === tracei.xaxis && tracej.yaxis === tracei.yaxis) {\n          tracej.opacity = undefined;\n          break;\n        }\n      }\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 17438:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3091797__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3091797__(71828);\nvar Registry = __nested_webpack_require_3091797__(73972);\nvar attributes = __nested_webpack_require_3091797__(82196);\nvar constants = __nested_webpack_require_3091797__(47581);\nvar subTypes = __nested_webpack_require_3091797__(34098);\nvar handleXYDefaults = __nested_webpack_require_3091797__(67513);\nvar handlePeriodDefaults = __nested_webpack_require_3091797__(73927);\nvar handleStackDefaults = __nested_webpack_require_3091797__(565);\nvar handleMarkerDefaults = __nested_webpack_require_3091797__(49508);\nvar handleLineDefaults = __nested_webpack_require_3091797__(11058);\nvar handleLineShapeDefaults = __nested_webpack_require_3091797__(94039);\nvar handleTextDefaults = __nested_webpack_require_3091797__(82410);\nvar handleFillColorDefaults = __nested_webpack_require_3091797__(28908);\nvar coercePattern = (__nested_webpack_require_3091797__(71828).coercePattern);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var len = handleXYDefaults(traceIn, traceOut, layout, coerce);\n  if (!len) traceOut.visible = false;\n  if (!traceOut.visible) return;\n  handlePeriodDefaults(traceIn, traceOut, layout, coerce);\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  var stackGroupOpts = handleStackDefaults(traceIn, traceOut, layout, coerce);\n  if (layout.scattermode === 'group' && traceOut.orientation === undefined) {\n    coerce('orientation', 'v');\n  }\n  var defaultMode = !stackGroupOpts && len < constants.PTS_LINESONLY ? 'lines+markers' : 'lines';\n  coerce('text');\n  coerce('hovertext');\n  coerce('mode', defaultMode);\n  if (subTypes.hasLines(traceOut)) {\n    handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce, {\n      backoff: true\n    });\n    handleLineShapeDefaults(traceIn, traceOut, coerce);\n    coerce('connectgaps');\n    coerce('line.simplify');\n  }\n  if (subTypes.hasMarkers(traceOut)) {\n    handleMarkerDefaults(traceIn, traceOut, defaultColor, layout, coerce, {\n      gradient: true\n    });\n  }\n  if (subTypes.hasText(traceOut)) {\n    coerce('texttemplate');\n    handleTextDefaults(traceIn, traceOut, layout, coerce);\n  }\n  var dfltHoverOn = [];\n  if (subTypes.hasMarkers(traceOut) || subTypes.hasText(traceOut)) {\n    coerce('cliponaxis');\n    coerce('marker.maxdisplayed');\n    dfltHoverOn.push('points');\n  }\n\n  // It's possible for this default to be changed by a later trace.\n  // We handle that case in some hacky code inside handleStackDefaults.\n  coerce('fill', stackGroupOpts ? stackGroupOpts.fillDflt : 'none');\n  if (traceOut.fill !== 'none') {\n    handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce);\n    if (!subTypes.hasLines(traceOut)) handleLineShapeDefaults(traceIn, traceOut, coerce);\n    coercePattern(coerce, 'fillpattern', traceOut.fillcolor, false);\n  }\n  var lineColor = (traceOut.line || {}).color;\n  var markerColor = (traceOut.marker || {}).color;\n  if (traceOut.fill === 'tonext' || traceOut.fill === 'toself') {\n    dfltHoverOn.push('fills');\n  }\n  coerce('hoveron', dfltHoverOn.join('+') || 'points');\n  if (traceOut.hoveron !== 'fills') coerce('hovertemplate');\n  var errorBarsSupplyDefaults = Registry.getComponentMethod('errorbars', 'supplyDefaults');\n  errorBarsSupplyDefaults(traceIn, traceOut, lineColor || markerColor || defaultColor, {\n    axis: 'y'\n  });\n  errorBarsSupplyDefaults(traceIn, traceOut, lineColor || markerColor || defaultColor, {\n    axis: 'x',\n    inherit: 'y'\n  });\n  Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n};\n\n/***/ }),\n\n/***/ 28908:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3095318__) {\n\n\"use strict\";\n\n\nvar Color = __nested_webpack_require_3095318__(7901);\nvar isArrayOrTypedArray = (__nested_webpack_require_3095318__(71828).isArrayOrTypedArray);\nmodule.exports = function fillColorDefaults(traceIn, traceOut, defaultColor, coerce) {\n  var inheritColorFromMarker = false;\n  if (traceOut.marker) {\n    // don't try to inherit a color array\n    var markerColor = traceOut.marker.color;\n    var markerLineColor = (traceOut.marker.line || {}).color;\n    if (markerColor && !isArrayOrTypedArray(markerColor)) {\n      inheritColorFromMarker = markerColor;\n    } else if (markerLineColor && !isArrayOrTypedArray(markerLineColor)) {\n      inheritColorFromMarker = markerLineColor;\n    }\n  }\n  coerce('fillcolor', Color.addOpacity((traceOut.line || {}).color || inheritColorFromMarker || defaultColor, 0.5));\n};\n\n/***/ }),\n\n/***/ 8225:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3096203__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_3096203__(89298);\nmodule.exports = function formatLabels(cdi, trace, fullLayout) {\n  var labels = {};\n  var mockGd = {\n    _fullLayout: fullLayout\n  };\n  var xa = Axes.getFromTrace(mockGd, trace, 'x');\n  var ya = Axes.getFromTrace(mockGd, trace, 'y');\n  var x = cdi.orig_x;\n  if (x === undefined) x = cdi.x;\n  var y = cdi.orig_y;\n  if (y === undefined) y = cdi.y;\n  labels.xLabel = Axes.tickText(xa, xa.c2l(x), true).text;\n  labels.yLabel = Axes.tickText(ya, ya.c2l(y), true).text;\n  return labels;\n};\n\n/***/ }),\n\n/***/ 34603:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3096841__) {\n\n\"use strict\";\n\n\nvar Color = __nested_webpack_require_3096841__(7901);\nvar subtypes = __nested_webpack_require_3096841__(34098);\nmodule.exports = function getTraceColor(trace, di) {\n  var lc, tc;\n\n  // TODO: text modes\n\n  if (trace.mode === 'lines') {\n    lc = trace.line.color;\n    return lc && Color.opacity(lc) ? lc : trace.fillcolor;\n  } else if (trace.mode === 'none') {\n    return trace.fill ? trace.fillcolor : '';\n  } else {\n    var mc = di.mcc || (trace.marker || {}).color;\n    var mlc = di.mlcc || ((trace.marker || {}).line || {}).color;\n    tc = mc && Color.opacity(mc) ? mc : mlc && Color.opacity(mlc) && (di.mlw || ((trace.marker || {}).line || {}).width) ? mlc : '';\n    if (tc) {\n      // make sure the points aren't TOO transparent\n      if (Color.opacity(tc) < 0.3) {\n        return Color.addOpacity(tc, 0.3);\n      } else return tc;\n    } else {\n      lc = (trace.line || {}).color;\n      return lc && Color.opacity(lc) && subtypes.hasLines(trace) && trace.line.width ? lc : trace.fillcolor;\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 26125:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3097934__) {\n\n\"use strict\";\n\n\nvar getAxisGroup = (__nested_webpack_require_3097934__(99082).getAxisGroup);\nmodule.exports = function handleGroupingDefaults(traceIn, traceOut, fullLayout, coerce) {\n  var orientation = traceOut.orientation;\n  // N.B. grouping is done across all trace types that support it\n  var posAxId = traceOut[{\n    v: 'x',\n    h: 'y'\n  }[orientation] + 'axis'];\n  var groupId = getAxisGroup(fullLayout, posAxId) + orientation;\n  var alignmentOpts = fullLayout._alignmentOpts || {};\n  var alignmentgroup = coerce('alignmentgroup');\n  var alignmentGroups = alignmentOpts[groupId];\n  if (!alignmentGroups) alignmentGroups = alignmentOpts[groupId] = {};\n  var alignmentGroupOpts = alignmentGroups[alignmentgroup];\n  if (alignmentGroupOpts) {\n    alignmentGroupOpts.traces.push(traceOut);\n  } else {\n    alignmentGroupOpts = alignmentGroups[alignmentgroup] = {\n      traces: [traceOut],\n      alignmentIndex: Object.keys(alignmentGroups).length,\n      offsetGroups: {}\n    };\n  }\n  var offsetgroup = coerce('offsetgroup');\n  var offsetGroups = alignmentGroupOpts.offsetGroups;\n  var offsetGroupOpts = offsetGroups[offsetgroup];\n  if (offsetgroup) {\n    if (!offsetGroupOpts) {\n      offsetGroupOpts = offsetGroups[offsetgroup] = {\n        offsetIndex: Object.keys(offsetGroups).length\n      };\n    }\n    traceOut._offsetIndex = offsetGroupOpts.offsetIndex;\n  }\n};\n\n/***/ }),\n\n/***/ 33720:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3099384__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3099384__(71828);\nvar Fx = __nested_webpack_require_3099384__(30211);\nvar Registry = __nested_webpack_require_3099384__(73972);\nvar getTraceColor = __nested_webpack_require_3099384__(34603);\nvar Color = __nested_webpack_require_3099384__(7901);\nvar fillText = Lib.fillText;\nmodule.exports = function hoverPoints(pointData, xval, yval, hovermode) {\n  var cd = pointData.cd;\n  var trace = cd[0].trace;\n  var xa = pointData.xa;\n  var ya = pointData.ya;\n  var xpx = xa.c2p(xval);\n  var ypx = ya.c2p(yval);\n  var pt = [xpx, ypx];\n  var hoveron = trace.hoveron || '';\n  var minRad = trace.mode.indexOf('markers') !== -1 ? 3 : 0.5;\n  var xPeriod = !!trace.xperiodalignment;\n  var yPeriod = !!trace.yperiodalignment;\n\n  // look for points to hover on first, then take fills only if we\n  // didn't find a point\n\n  if (hoveron.indexOf('points') !== -1) {\n    // dx and dy are used in compare modes - here we want to always\n    // prioritize the closest data point, at least as long as markers are\n    // the same size or nonexistent, but still try to prioritize small markers too.\n    var dx = function (di) {\n      if (xPeriod) {\n        var x0 = xa.c2p(di.xStart);\n        var x1 = xa.c2p(di.xEnd);\n        return xpx >= Math.min(x0, x1) && xpx <= Math.max(x0, x1) ? 0 : Infinity;\n      }\n      var rad = Math.max(3, di.mrc || 0);\n      var kink = 1 - 1 / rad;\n      var dxRaw = Math.abs(xa.c2p(di.x) - xpx);\n      return dxRaw < rad ? kink * dxRaw / rad : dxRaw - rad + kink;\n    };\n    var dy = function (di) {\n      if (yPeriod) {\n        var y0 = ya.c2p(di.yStart);\n        var y1 = ya.c2p(di.yEnd);\n        return ypx >= Math.min(y0, y1) && ypx <= Math.max(y0, y1) ? 0 : Infinity;\n      }\n      var rad = Math.max(3, di.mrc || 0);\n      var kink = 1 - 1 / rad;\n      var dyRaw = Math.abs(ya.c2p(di.y) - ypx);\n      return dyRaw < rad ? kink * dyRaw / rad : dyRaw - rad + kink;\n    };\n\n    // scatter points: d.mrc is the calculated marker radius\n    // adjust the distance so if you're inside the marker it\n    // always will show up regardless of point size, but\n    // prioritize smaller points\n    var dxy = function (di) {\n      var rad = Math.max(minRad, di.mrc || 0);\n      var dx = xa.c2p(di.x) - xpx;\n      var dy = ya.c2p(di.y) - ypx;\n      return Math.max(Math.sqrt(dx * dx + dy * dy) - rad, 1 - minRad / rad);\n    };\n    var distfn = Fx.getDistanceFunction(hovermode, dx, dy, dxy);\n    Fx.getClosest(cd, distfn, pointData);\n\n    // skip the rest (for this trace) if we didn't find a close point\n    if (pointData.index !== false) {\n      // the closest data point\n      var di = cd[pointData.index];\n      var xc = xa.c2p(di.x, true);\n      var yc = ya.c2p(di.y, true);\n      var rad = di.mrc || 1;\n\n      // now we're done using the whole `calcdata` array, replace the\n      // index with the original index (in case of inserted point from\n      // stacked area)\n      pointData.index = di.i;\n      var orientation = cd[0].t.orientation;\n      // TODO: for scatter and bar, option to show (sub)totals and\n      // raw data? Currently stacked and/or normalized bars just show\n      // the normalized individual sizes, so that's what I'm doing here\n      // for now.\n      var sizeVal = orientation && (di.sNorm || di.s);\n      var xLabelVal = orientation === 'h' ? sizeVal : di.orig_x !== undefined ? di.orig_x : di.x;\n      var yLabelVal = orientation === 'v' ? sizeVal : di.orig_y !== undefined ? di.orig_y : di.y;\n      Lib.extendFlat(pointData, {\n        color: getTraceColor(trace, di),\n        x0: xc - rad,\n        x1: xc + rad,\n        xLabelVal: xLabelVal,\n        y0: yc - rad,\n        y1: yc + rad,\n        yLabelVal: yLabelVal,\n        spikeDistance: dxy(di),\n        hovertemplate: trace.hovertemplate\n      });\n      fillText(di, trace, pointData);\n      Registry.getComponentMethod('errorbars', 'hoverInfo')(di, trace, pointData);\n      return [pointData];\n    }\n  }\n\n  // even if hoveron is 'fills', only use it if we have polygons too\n  if (hoveron.indexOf('fills') !== -1 && trace._polygons) {\n    var polygons = trace._polygons;\n    var polygonsIn = [];\n    var inside = false;\n    var xmin = Infinity;\n    var xmax = -Infinity;\n    var ymin = Infinity;\n    var ymax = -Infinity;\n    var i, j, polygon, pts, xCross, x0, x1, y0, y1;\n    for (i = 0; i < polygons.length; i++) {\n      polygon = polygons[i];\n      // TODO: this is not going to work right for curved edges, it will\n      // act as though they're straight. That's probably going to need\n      // the elements themselves to capture the events. Worth it?\n      if (polygon.contains(pt)) {\n        inside = !inside;\n        // TODO: need better than just the overall bounding box\n        polygonsIn.push(polygon);\n        ymin = Math.min(ymin, polygon.ymin);\n        ymax = Math.max(ymax, polygon.ymax);\n      }\n    }\n    if (inside) {\n      // constrain ymin/max to the visible plot, so the label goes\n      // at the middle of the piece you can see\n      ymin = Math.max(ymin, 0);\n      ymax = Math.min(ymax, ya._length);\n\n      // find the overall left-most and right-most points of the\n      // polygon(s) we're inside at their combined vertical midpoint.\n      // This is where we will draw the hover label.\n      // Note that this might not be the vertical midpoint of the\n      // whole trace, if it's disjoint.\n      var yAvg = (ymin + ymax) / 2;\n      for (i = 0; i < polygonsIn.length; i++) {\n        pts = polygonsIn[i].pts;\n        for (j = 1; j < pts.length; j++) {\n          y0 = pts[j - 1][1];\n          y1 = pts[j][1];\n          if (y0 > yAvg !== y1 >= yAvg) {\n            x0 = pts[j - 1][0];\n            x1 = pts[j][0];\n            if (y1 - y0) {\n              xCross = x0 + (x1 - x0) * (yAvg - y0) / (y1 - y0);\n              xmin = Math.min(xmin, xCross);\n              xmax = Math.max(xmax, xCross);\n            }\n          }\n        }\n      }\n\n      // constrain xmin/max to the visible plot now too\n      xmin = Math.max(xmin, 0);\n      xmax = Math.min(xmax, xa._length);\n\n      // get only fill or line color for the hover color\n      var color = Color.defaultLine;\n      if (Color.opacity(trace.fillcolor)) color = trace.fillcolor;else if (Color.opacity((trace.line || {}).color)) {\n        color = trace.line.color;\n      }\n      Lib.extendFlat(pointData, {\n        // never let a 2D override 1D type as closest point\n        // also: no spikeDistance, it's not allowed for fills\n        distance: pointData.maxHoverDistance,\n        x0: xmin,\n        x1: xmax,\n        y0: yAvg,\n        y1: yAvg,\n        color: color,\n        hovertemplate: false\n      });\n      delete pointData.index;\n      if (trace.text && !Array.isArray(trace.text)) {\n        pointData.text = String(trace.text);\n      } else pointData.text = trace.name;\n      return [pointData];\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 67368:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3106238__) {\n\n\"use strict\";\n\n\nvar subtypes = __nested_webpack_require_3106238__(34098);\nmodule.exports = {\n  hasLines: subtypes.hasLines,\n  hasMarkers: subtypes.hasMarkers,\n  hasText: subtypes.hasText,\n  isBubble: subtypes.isBubble,\n  attributes: __nested_webpack_require_3106238__(82196),\n  layoutAttributes: __nested_webpack_require_3106238__(21479),\n  supplyDefaults: __nested_webpack_require_3106238__(17438),\n  crossTraceDefaults: __nested_webpack_require_3106238__(34936),\n  supplyLayoutDefaults: __nested_webpack_require_3106238__(79334),\n  calc: (__nested_webpack_require_3106238__(47761).calc),\n  crossTraceCalc: __nested_webpack_require_3106238__(72626),\n  arraysToCalcdata: __nested_webpack_require_3106238__(75225),\n  plot: __nested_webpack_require_3106238__(32663),\n  colorbar: __nested_webpack_require_3106238__(4898),\n  formatLabels: __nested_webpack_require_3106238__(8225),\n  style: (__nested_webpack_require_3106238__(16296).style),\n  styleOnSelect: (__nested_webpack_require_3106238__(16296).styleOnSelect),\n  hoverPoints: __nested_webpack_require_3106238__(33720),\n  selectPoints: __nested_webpack_require_3106238__(98002),\n  animatable: true,\n  moduleType: 'trace',\n  name: 'scatter',\n  basePlotModule: __nested_webpack_require_3106238__(93612),\n  categories: ['cartesian', 'svg', 'symbols', 'errorBarsOK', 'showLegend', 'scatter-like', 'zoomScale'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 21479:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  scattermode: {\n    valType: 'enumerated',\n    values: ['group', 'overlay'],\n    dflt: 'overlay',\n    editType: 'calc'\n  },\n  scattergap: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    editType: 'calc'\n  }\n};\n\n/***/ }),\n\n/***/ 79334:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3107757__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3107757__(71828);\nvar layoutAttributes = __nested_webpack_require_3107757__(21479);\nmodule.exports = function (layoutIn, layoutOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n  }\n  var groupBarmode = layoutOut.barmode === 'group';\n  if (layoutOut.scattermode === 'group') {\n    coerce('scattergap', groupBarmode ? layoutOut.bargap : 0.2);\n  }\n};\n\n/***/ }),\n\n/***/ 11058:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3108288__) {\n\n\"use strict\";\n\n\nvar isArrayOrTypedArray = (__nested_webpack_require_3108288__(71828).isArrayOrTypedArray);\nvar hasColorscale = (__nested_webpack_require_3108288__(52075).hasColorscale);\nvar colorscaleDefaults = __nested_webpack_require_3108288__(1586);\nmodule.exports = function lineDefaults(traceIn, traceOut, defaultColor, layout, coerce, opts) {\n  if (!opts) opts = {};\n  var markerColor = (traceIn.marker || {}).color;\n  coerce('line.color', defaultColor);\n  if (hasColorscale(traceIn, 'line')) {\n    colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n      prefix: 'line.',\n      cLetter: 'c'\n    });\n  } else {\n    var lineColorDflt = (isArrayOrTypedArray(markerColor) ? false : markerColor) || defaultColor;\n    coerce('line.color', lineColorDflt);\n  }\n  coerce('line.width');\n  if (!opts.noDash) coerce('line.dash');\n  if (opts.backoff) coerce('line.backoff');\n};\n\n/***/ }),\n\n/***/ 34621:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3109219__) {\n\n\"use strict\";\n\n\nvar Drawing = __nested_webpack_require_3109219__(91424);\nvar numConstants = __nested_webpack_require_3109219__(50606);\nvar BADNUM = numConstants.BADNUM;\nvar LOG_CLIP = numConstants.LOG_CLIP;\nvar LOG_CLIP_PLUS = LOG_CLIP + 0.5;\nvar LOG_CLIP_MINUS = LOG_CLIP - 0.5;\nvar Lib = __nested_webpack_require_3109219__(71828);\nvar segmentsIntersect = Lib.segmentsIntersect;\nvar constrain = Lib.constrain;\nvar constants = __nested_webpack_require_3109219__(47581);\nmodule.exports = function linePoints(d, opts) {\n  var trace = opts.trace || {};\n  var xa = opts.xaxis;\n  var ya = opts.yaxis;\n  var xLog = xa.type === 'log';\n  var yLog = ya.type === 'log';\n  var xLen = xa._length;\n  var yLen = ya._length;\n  var backoff = opts.backoff;\n  var marker = trace.marker;\n  var connectGaps = opts.connectGaps;\n  var baseTolerance = opts.baseTolerance;\n  var shape = opts.shape;\n  var linear = shape === 'linear';\n  var fill = trace.fill && trace.fill !== 'none';\n  var segments = [];\n  var minTolerance = constants.minTolerance;\n  var len = d.length;\n  var pts = new Array(len);\n  var pti = 0;\n  var i;\n\n  // pt variables are pixel coordinates [x,y] of one point\n  // these four are the outputs of clustering on a line\n  var clusterStartPt, clusterEndPt, clusterHighPt, clusterLowPt;\n\n  // \"this\" is the next point we're considering adding to the cluster\n  var thisPt;\n\n  // did we encounter the high point first, then a low point, or vice versa?\n  var clusterHighFirst;\n\n  // the first two points in the cluster determine its unit vector\n  // so the second is always in the \"High\" direction\n  var clusterUnitVector;\n\n  // the pixel delta from clusterStartPt\n  var thisVector;\n\n  // val variables are (signed) pixel distances along the cluster vector\n  var clusterRefDist, clusterHighVal, clusterLowVal, thisVal;\n\n  // deviation variables are (signed) pixel distances normal to the cluster vector\n  var clusterMinDeviation, clusterMaxDeviation, thisDeviation;\n\n  // turn one calcdata point into pixel coordinates\n  function getPt(index) {\n    var di = d[index];\n    if (!di) return false;\n    var x = opts.linearized ? xa.l2p(di.x) : xa.c2p(di.x);\n    var y = opts.linearized ? ya.l2p(di.y) : ya.c2p(di.y);\n\n    // if non-positive log values, set them VERY far off-screen\n    // so the line looks essentially straight from the previous point.\n    if (x === BADNUM) {\n      if (xLog) x = xa.c2p(di.x, true);\n      if (x === BADNUM) return false;\n      // If BOTH were bad log values, make the line follow a constant\n      // exponent rather than a constant slope\n      if (yLog && y === BADNUM) {\n        x *= Math.abs(xa._m * yLen * (xa._m > 0 ? LOG_CLIP_PLUS : LOG_CLIP_MINUS) / (ya._m * xLen * (ya._m > 0 ? LOG_CLIP_PLUS : LOG_CLIP_MINUS)));\n      }\n      x *= 1000;\n    }\n    if (y === BADNUM) {\n      if (yLog) y = ya.c2p(di.y, true);\n      if (y === BADNUM) return false;\n      y *= 1000;\n    }\n    return [x, y];\n  }\n  function crossesViewport(xFrac0, yFrac0, xFrac1, yFrac1) {\n    var dx = xFrac1 - xFrac0;\n    var dy = yFrac1 - yFrac0;\n    var dx0 = 0.5 - xFrac0;\n    var dy0 = 0.5 - yFrac0;\n    var norm2 = dx * dx + dy * dy;\n    var dot = dx * dx0 + dy * dy0;\n    if (dot > 0 && dot < norm2) {\n      var cross = dx0 * dy - dy0 * dx;\n      if (cross * cross < norm2) return true;\n    }\n  }\n  var latestXFrac, latestYFrac;\n  // if we're off-screen, increase tolerance over baseTolerance\n  function getTolerance(pt, nextPt) {\n    var xFrac = pt[0] / xLen;\n    var yFrac = pt[1] / yLen;\n    var offScreenFraction = Math.max(0, -xFrac, xFrac - 1, -yFrac, yFrac - 1);\n    if (offScreenFraction && latestXFrac !== undefined && crossesViewport(xFrac, yFrac, latestXFrac, latestYFrac)) {\n      offScreenFraction = 0;\n    }\n    if (offScreenFraction && nextPt && crossesViewport(xFrac, yFrac, nextPt[0] / xLen, nextPt[1] / yLen)) {\n      offScreenFraction = 0;\n    }\n    return (1 + constants.toleranceGrowth * offScreenFraction) * baseTolerance;\n  }\n  function ptDist(pt1, pt2) {\n    var dx = pt1[0] - pt2[0];\n    var dy = pt1[1] - pt2[1];\n    return Math.sqrt(dx * dx + dy * dy);\n  }\n\n  // last bit of filtering: clip paths that are VERY far off-screen\n  // so we don't get near the browser's hard limit (+/- 2^29 px in Chrome and FF)\n\n  var maxScreensAway = constants.maxScreensAway;\n\n  // find the intersections between the segment from pt1 to pt2\n  // and the large rectangle maxScreensAway around the viewport\n  // if one of pt1 and pt2 is inside and the other outside, there\n  // will be only one intersection.\n  // if both are outside there will be 0 or 2 intersections\n  // (or 1 if it's right at a corner - we'll treat that like 0)\n  // returns an array of intersection pts\n  var xEdge0 = -xLen * maxScreensAway;\n  var xEdge1 = xLen * (1 + maxScreensAway);\n  var yEdge0 = -yLen * maxScreensAway;\n  var yEdge1 = yLen * (1 + maxScreensAway);\n  var edges = [[xEdge0, yEdge0, xEdge1, yEdge0], [xEdge1, yEdge0, xEdge1, yEdge1], [xEdge1, yEdge1, xEdge0, yEdge1], [xEdge0, yEdge1, xEdge0, yEdge0]];\n  var xEdge, yEdge, lastXEdge, lastYEdge, lastFarPt, edgePt;\n\n  // for linear line shape, edge intersections should be linearly interpolated\n  // spline uses this too, which isn't precisely correct but is actually pretty\n  // good, because Catmull-Rom weights far-away points less in creating the curvature\n  function getLinearEdgeIntersections(pt1, pt2) {\n    var out = [];\n    var ptCount = 0;\n    for (var i = 0; i < 4; i++) {\n      var edge = edges[i];\n      var ptInt = segmentsIntersect(pt1[0], pt1[1], pt2[0], pt2[1], edge[0], edge[1], edge[2], edge[3]);\n      if (ptInt && (!ptCount || Math.abs(ptInt.x - out[0][0]) > 1 || Math.abs(ptInt.y - out[0][1]) > 1)) {\n        ptInt = [ptInt.x, ptInt.y];\n        // if we have 2 intersections, make sure the closest one to pt1 comes first\n        if (ptCount && ptDist(ptInt, pt1) < ptDist(out[0], pt1)) out.unshift(ptInt);else out.push(ptInt);\n        ptCount++;\n      }\n    }\n    return out;\n  }\n  function onlyConstrainedPoint(pt) {\n    if (pt[0] < xEdge0 || pt[0] > xEdge1 || pt[1] < yEdge0 || pt[1] > yEdge1) {\n      return [constrain(pt[0], xEdge0, xEdge1), constrain(pt[1], yEdge0, yEdge1)];\n    }\n  }\n  function sameEdge(pt1, pt2) {\n    if (pt1[0] === pt2[0] && (pt1[0] === xEdge0 || pt1[0] === xEdge1)) return true;\n    if (pt1[1] === pt2[1] && (pt1[1] === yEdge0 || pt1[1] === yEdge1)) return true;\n  }\n\n  // for line shapes hv and vh, movement in the two dimensions is decoupled,\n  // so all we need to do is constrain each dimension independently\n  function getHVEdgeIntersections(pt1, pt2) {\n    var out = [];\n    var ptInt1 = onlyConstrainedPoint(pt1);\n    var ptInt2 = onlyConstrainedPoint(pt2);\n    if (ptInt1 && ptInt2 && sameEdge(ptInt1, ptInt2)) return out;\n    if (ptInt1) out.push(ptInt1);\n    if (ptInt2) out.push(ptInt2);\n    return out;\n  }\n\n  // hvh and vhv we sometimes have to move one of the intersection points\n  // out BEYOND the clipping rect, by a maximum of a factor of 2, so that\n  // the midpoint line is drawn in the right place\n  function getABAEdgeIntersections(dim, limit0, limit1) {\n    return function (pt1, pt2) {\n      var ptInt1 = onlyConstrainedPoint(pt1);\n      var ptInt2 = onlyConstrainedPoint(pt2);\n      var out = [];\n      if (ptInt1 && ptInt2 && sameEdge(ptInt1, ptInt2)) return out;\n      if (ptInt1) out.push(ptInt1);\n      if (ptInt2) out.push(ptInt2);\n      var midShift = 2 * Lib.constrain((pt1[dim] + pt2[dim]) / 2, limit0, limit1) - ((ptInt1 || pt1)[dim] + (ptInt2 || pt2)[dim]);\n      if (midShift) {\n        var ptToAlter;\n        if (ptInt1 && ptInt2) {\n          ptToAlter = midShift > 0 === ptInt1[dim] > ptInt2[dim] ? ptInt1 : ptInt2;\n        } else ptToAlter = ptInt1 || ptInt2;\n        ptToAlter[dim] += midShift;\n      }\n      return out;\n    };\n  }\n  var getEdgeIntersections;\n  if (shape === 'linear' || shape === 'spline') {\n    getEdgeIntersections = getLinearEdgeIntersections;\n  } else if (shape === 'hv' || shape === 'vh') {\n    getEdgeIntersections = getHVEdgeIntersections;\n  } else if (shape === 'hvh') getEdgeIntersections = getABAEdgeIntersections(0, xEdge0, xEdge1);else if (shape === 'vhv') getEdgeIntersections = getABAEdgeIntersections(1, yEdge0, yEdge1);\n\n  // a segment pt1->pt2 entirely outside the nearby region:\n  // find the corner it gets closest to touching\n  function getClosestCorner(pt1, pt2) {\n    var dx = pt2[0] - pt1[0];\n    var m = (pt2[1] - pt1[1]) / dx;\n    var b = (pt1[1] * pt2[0] - pt2[1] * pt1[0]) / dx;\n    if (b > 0) return [m > 0 ? xEdge0 : xEdge1, yEdge1];else return [m > 0 ? xEdge1 : xEdge0, yEdge0];\n  }\n  function updateEdge(pt) {\n    var x = pt[0];\n    var y = pt[1];\n    var xSame = x === pts[pti - 1][0];\n    var ySame = y === pts[pti - 1][1];\n    // duplicate point?\n    if (xSame && ySame) return;\n    if (pti > 1) {\n      // backtracking along an edge?\n      var xSame2 = x === pts[pti - 2][0];\n      var ySame2 = y === pts[pti - 2][1];\n      if (xSame && (x === xEdge0 || x === xEdge1) && xSame2) {\n        if (ySame2) pti--; // backtracking exactly - drop prev pt and don't add\n        else pts[pti - 1] = pt; // not exact: replace the prev pt\n      } else if (ySame && (y === yEdge0 || y === yEdge1) && ySame2) {\n        if (xSame2) pti--;else pts[pti - 1] = pt;\n      } else pts[pti++] = pt;\n    } else pts[pti++] = pt;\n  }\n  function updateEdgesForReentry(pt) {\n    // if we're outside the nearby region and going back in,\n    // we may need to loop around a corner point\n    if (pts[pti - 1][0] !== pt[0] && pts[pti - 1][1] !== pt[1]) {\n      updateEdge([lastXEdge, lastYEdge]);\n    }\n    updateEdge(pt);\n    lastFarPt = null;\n    lastXEdge = lastYEdge = 0;\n  }\n  var arrayMarker = Lib.isArrayOrTypedArray(marker);\n  function addPt(pt) {\n    if (pt && backoff) {\n      pt.i = i;\n      pt.d = d;\n      pt.trace = trace;\n      pt.marker = arrayMarker ? marker[pt.i] : marker;\n      pt.backoff = backoff;\n    }\n    latestXFrac = pt[0] / xLen;\n    latestYFrac = pt[1] / yLen;\n    // Are we more than maxScreensAway off-screen any direction?\n    // if so, clip to this box, but in such a way that on-screen\n    // drawing is unchanged\n    xEdge = pt[0] < xEdge0 ? xEdge0 : pt[0] > xEdge1 ? xEdge1 : 0;\n    yEdge = pt[1] < yEdge0 ? yEdge0 : pt[1] > yEdge1 ? yEdge1 : 0;\n    if (xEdge || yEdge) {\n      if (!pti) {\n        // to get fills right - if first point is far, push it toward the\n        // screen in whichever direction(s) are far\n\n        pts[pti++] = [xEdge || pt[0], yEdge || pt[1]];\n      } else if (lastFarPt) {\n        // both this point and the last are outside the nearby region\n        // check if we're crossing the nearby region\n        var intersections = getEdgeIntersections(lastFarPt, pt);\n        if (intersections.length > 1) {\n          updateEdgesForReentry(intersections[0]);\n          pts[pti++] = intersections[1];\n        }\n      } else {\n        // we're leaving the nearby region - add the point where we left it\n\n        edgePt = getEdgeIntersections(pts[pti - 1], pt)[0];\n        pts[pti++] = edgePt;\n      }\n      var lastPt = pts[pti - 1];\n      if (xEdge && yEdge && (lastPt[0] !== xEdge || lastPt[1] !== yEdge)) {\n        // we've gone out beyond a new corner: add the corner too\n        // so that the next point will take the right winding\n        if (lastFarPt) {\n          if (lastXEdge !== xEdge && lastYEdge !== yEdge) {\n            if (lastXEdge && lastYEdge) {\n              // we've gone around to an opposite corner - we\n              // need to add the correct extra corner\n              // in order to get the right winding\n              updateEdge(getClosestCorner(lastFarPt, pt));\n            } else {\n              // we're coming from a far edge - the extra corner\n              // we need is determined uniquely by the sectors\n              updateEdge([lastXEdge || xEdge, lastYEdge || yEdge]);\n            }\n          } else if (lastXEdge && lastYEdge) {\n            updateEdge([lastXEdge, lastYEdge]);\n          }\n        }\n        updateEdge([xEdge, yEdge]);\n      } else if (lastXEdge - xEdge && lastYEdge - yEdge) {\n        // we're coming from an edge or far corner to an edge - again the\n        // extra corner we need is uniquely determined by the sectors\n        updateEdge([xEdge || lastXEdge, yEdge || lastYEdge]);\n      }\n      lastFarPt = pt;\n      lastXEdge = xEdge;\n      lastYEdge = yEdge;\n    } else {\n      if (lastFarPt) {\n        // this point is in range but the previous wasn't: add its entry pt first\n        updateEdgesForReentry(getEdgeIntersections(lastFarPt, pt)[0]);\n      }\n      pts[pti++] = pt;\n    }\n  }\n\n  // loop over ALL points in this trace\n  for (i = 0; i < len; i++) {\n    clusterStartPt = getPt(i);\n    if (!clusterStartPt) continue;\n    pti = 0;\n    lastFarPt = null;\n    addPt(clusterStartPt);\n\n    // loop over one segment of the trace\n    for (i++; i < len; i++) {\n      clusterHighPt = getPt(i);\n      if (!clusterHighPt) {\n        if (connectGaps) continue;else break;\n      }\n\n      // can't decimate if nonlinear line shape\n      // TODO: we *could* decimate [hv]{2,3} shapes if we restricted clusters to horz or vert again\n      // but spline would be verrry awkward to decimate\n      if (!linear || !opts.simplify) {\n        addPt(clusterHighPt);\n        continue;\n      }\n      var nextPt = getPt(i + 1);\n      clusterRefDist = ptDist(clusterHighPt, clusterStartPt);\n\n      // #3147 - always include the very first and last points for fills\n      if (!(fill && (pti === 0 || pti === len - 1)) && clusterRefDist < getTolerance(clusterHighPt, nextPt) * minTolerance) continue;\n      clusterUnitVector = [(clusterHighPt[0] - clusterStartPt[0]) / clusterRefDist, (clusterHighPt[1] - clusterStartPt[1]) / clusterRefDist];\n      clusterLowPt = clusterStartPt;\n      clusterHighVal = clusterRefDist;\n      clusterLowVal = clusterMinDeviation = clusterMaxDeviation = 0;\n      clusterHighFirst = false;\n      clusterEndPt = clusterHighPt;\n\n      // loop over one cluster of points that collapse onto one line\n      for (i++; i < d.length; i++) {\n        thisPt = nextPt;\n        nextPt = getPt(i + 1);\n        if (!thisPt) {\n          if (connectGaps) continue;else break;\n        }\n        thisVector = [thisPt[0] - clusterStartPt[0], thisPt[1] - clusterStartPt[1]];\n        // cross product (or dot with normal to the cluster vector)\n        thisDeviation = thisVector[0] * clusterUnitVector[1] - thisVector[1] * clusterUnitVector[0];\n        clusterMinDeviation = Math.min(clusterMinDeviation, thisDeviation);\n        clusterMaxDeviation = Math.max(clusterMaxDeviation, thisDeviation);\n        if (clusterMaxDeviation - clusterMinDeviation > getTolerance(thisPt, nextPt)) break;\n        clusterEndPt = thisPt;\n        thisVal = thisVector[0] * clusterUnitVector[0] + thisVector[1] * clusterUnitVector[1];\n        if (thisVal > clusterHighVal) {\n          clusterHighVal = thisVal;\n          clusterHighPt = thisPt;\n          clusterHighFirst = false;\n        } else if (thisVal < clusterLowVal) {\n          clusterLowVal = thisVal;\n          clusterLowPt = thisPt;\n          clusterHighFirst = true;\n        }\n      }\n\n      // insert this cluster into pts\n      // we've already inserted the start pt, now check if we have high and low pts\n      if (clusterHighFirst) {\n        addPt(clusterHighPt);\n        if (clusterEndPt !== clusterLowPt) addPt(clusterLowPt);\n      } else {\n        if (clusterLowPt !== clusterStartPt) addPt(clusterLowPt);\n        if (clusterEndPt !== clusterHighPt) addPt(clusterHighPt);\n      }\n      // and finally insert the end pt\n      addPt(clusterEndPt);\n\n      // have we reached the end of this segment?\n      if (i >= d.length || !thisPt) break;\n\n      // otherwise we have an out-of-cluster point to insert as next clusterStartPt\n      addPt(thisPt);\n      clusterStartPt = thisPt;\n    }\n\n    // to get fills right - repeat what we did at the start\n    if (lastFarPt) updateEdge([lastXEdge || lastFarPt[0], lastYEdge || lastFarPt[1]]);\n    segments.push(pts.slice(0, pti));\n  }\n  var lastShapeChar = shape.slice(shape.length - 1);\n  if (backoff && lastShapeChar !== 'h' && lastShapeChar !== 'v') {\n    var trimmed = false;\n    var n = -1;\n    var newSegments = [];\n    for (var j = 0; j < segments.length; j++) {\n      for (var k = 0; k < segments[j].length - 1; k++) {\n        var start = segments[j][k];\n        var end = segments[j][k + 1];\n        var xy = Drawing.applyBackoff(end, start);\n        if (xy[0] !== end[0] || xy[1] !== end[1]) {\n          trimmed = true;\n        }\n        if (!newSegments[n + 1]) {\n          n++;\n          newSegments[n] = [start, [xy[0], xy[1]]];\n        }\n      }\n    }\n    return trimmed ? newSegments : segments;\n  }\n  return segments;\n};\n\n/***/ }),\n\n/***/ 94039:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// common to 'scatter' and 'scatterternary'\nmodule.exports = function handleLineShapeDefaults(traceIn, traceOut, coerce) {\n  var shape = coerce('line.shape');\n  if (shape === 'spline') coerce('line.smoothing');\n};\n\n/***/ }),\n\n/***/ 68687:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar LINKEDFILLS = {\n  tonextx: 1,\n  tonexty: 1,\n  tonext: 1\n};\nmodule.exports = function linkTraces(gd, plotinfo, cdscatter) {\n  var trace, i, group, prevtrace, groupIndex;\n\n  // first sort traces to keep stacks & filled-together groups together\n  var groupIndices = {};\n  var needsSort = false;\n  var prevGroupIndex = -1;\n  var nextGroupIndex = 0;\n  var prevUnstackedGroupIndex = -1;\n  for (i = 0; i < cdscatter.length; i++) {\n    trace = cdscatter[i][0].trace;\n    group = trace.stackgroup || '';\n    if (group) {\n      if (group in groupIndices) {\n        groupIndex = groupIndices[group];\n      } else {\n        groupIndex = groupIndices[group] = nextGroupIndex;\n        nextGroupIndex++;\n      }\n    } else if (trace.fill in LINKEDFILLS && prevUnstackedGroupIndex >= 0) {\n      groupIndex = prevUnstackedGroupIndex;\n    } else {\n      groupIndex = prevUnstackedGroupIndex = nextGroupIndex;\n      nextGroupIndex++;\n    }\n    if (groupIndex < prevGroupIndex) needsSort = true;\n    trace._groupIndex = prevGroupIndex = groupIndex;\n  }\n  var cdscatterSorted = cdscatter.slice();\n  if (needsSort) {\n    cdscatterSorted.sort(function (a, b) {\n      var traceA = a[0].trace;\n      var traceB = b[0].trace;\n      return traceA._groupIndex - traceB._groupIndex || traceA.index - traceB.index;\n    });\n  }\n\n  // now link traces to each other\n  var prevtraces = {};\n  for (i = 0; i < cdscatterSorted.length; i++) {\n    trace = cdscatterSorted[i][0].trace;\n    group = trace.stackgroup || '';\n\n    // Note: The check which ensures all cdscatter here are for the same axis and\n    // are either cartesian or scatterternary has been removed. This code assumes\n    // the passed scattertraces have been filtered to the proper plot types and\n    // the proper subplots.\n    if (trace.visible === true) {\n      trace._nexttrace = null;\n      if (trace.fill in LINKEDFILLS) {\n        prevtrace = prevtraces[group];\n        trace._prevtrace = prevtrace || null;\n        if (prevtrace) {\n          prevtrace._nexttrace = trace;\n        }\n      }\n      trace._ownfill = trace.fill && (trace.fill.substr(0, 6) === 'tozero' || trace.fill === 'toself' || trace.fill.substr(0, 2) === 'to' && !trace._prevtrace);\n      prevtraces[group] = trace;\n    } else {\n      trace._prevtrace = trace._nexttrace = trace._ownfill = null;\n    }\n  }\n  return cdscatterSorted;\n};\n\n/***/ }),\n\n/***/ 39984:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3128638__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_3128638__(92770);\n\n// used in the drawing step for 'scatter' and 'scattegeo' and\n// in the convert step for 'scatter3d'\nmodule.exports = function makeBubbleSizeFn(trace, factor) {\n  if (!factor) {\n    factor = 2;\n  }\n  var marker = trace.marker;\n  var sizeRef = marker.sizeref || 1;\n  var sizeMin = marker.sizemin || 0;\n\n  // for bubble charts, allow scaling the provided value linearly\n  // and by area or diameter.\n  // Note this only applies to the array-value sizes\n\n  var baseFn = marker.sizemode === 'area' ? function (v) {\n    return Math.sqrt(v / sizeRef);\n  } : function (v) {\n    return v / sizeRef;\n  };\n\n  // TODO add support for position/negative bubbles?\n  // TODO add 'sizeoffset' attribute?\n  return function (v) {\n    var baseSize = baseFn(v / factor);\n\n    // don't show non-numeric and negative sizes\n    return isNumeric(baseSize) && baseSize > 0 ? Math.max(baseSize, sizeMin) : 0;\n  };\n};\n\n/***/ }),\n\n/***/ 4898:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  container: 'marker',\n  min: 'cmin',\n  max: 'cmax'\n};\n\n/***/ }),\n\n/***/ 49508:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3129830__) {\n\n\"use strict\";\n\n\nvar Color = __nested_webpack_require_3129830__(7901);\nvar hasColorscale = (__nested_webpack_require_3129830__(52075).hasColorscale);\nvar colorscaleDefaults = __nested_webpack_require_3129830__(1586);\nvar subTypes = __nested_webpack_require_3129830__(34098);\n\n/*\n * opts: object of flags to control features not all marker users support\n *   noLine: caller does not support marker lines\n *   gradient: caller supports gradients\n *   noSelect: caller does not support selected/unselected attribute containers\n */\nmodule.exports = function markerDefaults(traceIn, traceOut, defaultColor, layout, coerce, opts) {\n  var isBubble = subTypes.isBubble(traceIn);\n  var lineColor = (traceIn.line || {}).color;\n  var defaultMLC;\n  opts = opts || {};\n\n  // marker.color inherit from line.color (even if line.color is an array)\n  if (lineColor) defaultColor = lineColor;\n  coerce('marker.symbol');\n  coerce('marker.opacity', isBubble ? 0.7 : 1);\n  coerce('marker.size');\n  if (!opts.noAngle) {\n    coerce('marker.angle');\n    if (!opts.noAngleRef) {\n      coerce('marker.angleref');\n    }\n    if (!opts.noStandOff) {\n      coerce('marker.standoff');\n    }\n  }\n  coerce('marker.color', defaultColor);\n  if (hasColorscale(traceIn, 'marker')) {\n    colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n      prefix: 'marker.',\n      cLetter: 'c'\n    });\n  }\n  if (!opts.noSelect) {\n    coerce('selected.marker.color');\n    coerce('unselected.marker.color');\n    coerce('selected.marker.size');\n    coerce('unselected.marker.size');\n  }\n  if (!opts.noLine) {\n    // if there's a line with a different color than the marker, use\n    // that line color as the default marker line color\n    // (except when it's an array)\n    // mostly this is for transparent markers to behave nicely\n    if (lineColor && !Array.isArray(lineColor) && traceOut.marker.color !== lineColor) {\n      defaultMLC = lineColor;\n    } else if (isBubble) defaultMLC = Color.background;else defaultMLC = Color.defaultLine;\n    coerce('marker.line.color', defaultMLC);\n    if (hasColorscale(traceIn, 'marker.line')) {\n      colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n        prefix: 'marker.line.',\n        cLetter: 'c'\n      });\n    }\n    coerce('marker.line.width', isBubble ? 1 : 0);\n  }\n  if (isBubble) {\n    coerce('marker.sizeref');\n    coerce('marker.sizemin');\n    coerce('marker.sizemode');\n  }\n  if (opts.gradient) {\n    var gradientType = coerce('marker.gradient.type');\n    if (gradientType !== 'none') {\n      coerce('marker.gradient.color');\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 73927:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3132422__) {\n\n\"use strict\";\n\n\nvar dateTick0 = (__nested_webpack_require_3132422__(71828).dateTick0);\nvar numConstants = __nested_webpack_require_3132422__(50606);\nvar ONEWEEK = numConstants.ONEWEEK;\nfunction getPeriod0Dflt(period, calendar) {\n  if (period % ONEWEEK === 0) {\n    return dateTick0(calendar, 1); // Sunday\n  }\n\n  return dateTick0(calendar, 0);\n}\nmodule.exports = function handlePeriodDefaults(traceIn, traceOut, layout, coerce, opts) {\n  if (!opts) {\n    opts = {\n      x: true,\n      y: true\n    };\n  }\n  if (opts.x) {\n    var xperiod = coerce('xperiod');\n    if (xperiod) {\n      coerce('xperiod0', getPeriod0Dflt(xperiod, traceOut.xcalendar));\n      coerce('xperiodalignment');\n    }\n  }\n  if (opts.y) {\n    var yperiod = coerce('yperiod');\n    if (yperiod) {\n      coerce('yperiod0', getPeriod0Dflt(yperiod, traceOut.ycalendar));\n      coerce('yperiodalignment');\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 32663:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3133372__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_3133372__(39898);\nvar Registry = __nested_webpack_require_3133372__(73972);\nvar Lib = __nested_webpack_require_3133372__(71828);\nvar ensureSingle = Lib.ensureSingle;\nvar identity = Lib.identity;\nvar Drawing = __nested_webpack_require_3133372__(91424);\nvar subTypes = __nested_webpack_require_3133372__(34098);\nvar linePoints = __nested_webpack_require_3133372__(34621);\nvar linkTraces = __nested_webpack_require_3133372__(68687);\nvar polygonTester = (__nested_webpack_require_3133372__(61082).tester);\nmodule.exports = function plot(gd, plotinfo, cdscatter, scatterLayer, transitionOpts, makeOnCompleteCallback) {\n  var join, onComplete;\n\n  // If transition config is provided, then it is only a partial replot and traces not\n  // updated are removed.\n  var isFullReplot = !transitionOpts;\n  var hasTransition = !!transitionOpts && transitionOpts.duration > 0;\n\n  // Link traces so the z-order of fill layers is correct\n  var cdscatterSorted = linkTraces(gd, plotinfo, cdscatter);\n  join = scatterLayer.selectAll('g.trace').data(cdscatterSorted, function (d) {\n    return d[0].trace.uid;\n  });\n\n  // Append new traces:\n  join.enter().append('g').attr('class', function (d) {\n    return 'trace scatter trace' + d[0].trace.uid;\n  }).style('stroke-miterlimit', 2);\n  join.order();\n  createFills(gd, join, plotinfo);\n  if (hasTransition) {\n    if (makeOnCompleteCallback) {\n      // If it was passed a callback to register completion, make a callback. If\n      // this is created, then it must be executed on completion, otherwise the\n      // pos-transition redraw will not execute:\n      onComplete = makeOnCompleteCallback();\n    }\n    var transition = d3.transition().duration(transitionOpts.duration).ease(transitionOpts.easing).each('end', function () {\n      onComplete && onComplete();\n    }).each('interrupt', function () {\n      onComplete && onComplete();\n    });\n    transition.each(function () {\n      // Must run the selection again since otherwise enters/updates get grouped together\n      // and these get executed out of order. Except we need them in order!\n      scatterLayer.selectAll('g.trace').each(function (d, i) {\n        plotOne(gd, i, plotinfo, d, cdscatterSorted, this, transitionOpts);\n      });\n    });\n  } else {\n    join.each(function (d, i) {\n      plotOne(gd, i, plotinfo, d, cdscatterSorted, this, transitionOpts);\n    });\n  }\n  if (isFullReplot) {\n    join.exit().remove();\n  }\n\n  // remove paths that didn't get used\n  scatterLayer.selectAll('path:not([d])').remove();\n};\nfunction createFills(gd, traceJoin, plotinfo) {\n  traceJoin.each(function (d) {\n    var fills = ensureSingle(d3.select(this), 'g', 'fills');\n    Drawing.setClipUrl(fills, plotinfo.layerClipId, gd);\n    var trace = d[0].trace;\n    var fillData = [];\n    if (trace._ownfill) fillData.push('_ownFill');\n    if (trace._nexttrace) fillData.push('_nextFill');\n    var fillJoin = fills.selectAll('g').data(fillData, identity);\n    fillJoin.enter().append('g');\n    fillJoin.exit().each(function (d) {\n      trace[d] = null;\n    }).remove();\n    fillJoin.order().each(function (d) {\n      // make a path element inside the fill group, just so\n      // we can give it its own data later on and the group can\n      // keep its simple '_*Fill' data\n      trace[d] = ensureSingle(d3.select(this), 'path', 'js-fill');\n    });\n  });\n}\nfunction plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transitionOpts) {\n  var isStatic = gd._context.staticPlot;\n  var i;\n\n  // Since this has been reorganized and we're executing this on individual traces,\n  // we need to pass it the full list of cdscatter as well as this trace's index (idx)\n  // since it does an internal n^2 loop over comparisons with other traces:\n  selectMarkers(gd, idx, plotinfo, cdscatter, cdscatterAll);\n  var hasTransition = !!transitionOpts && transitionOpts.duration > 0;\n  function transition(selection) {\n    return hasTransition ? selection.transition() : selection;\n  }\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  var trace = cdscatter[0].trace;\n  var line = trace.line;\n  var tr = d3.select(element);\n  var errorBarGroup = ensureSingle(tr, 'g', 'errorbars');\n  var lines = ensureSingle(tr, 'g', 'lines');\n  var points = ensureSingle(tr, 'g', 'points');\n  var text = ensureSingle(tr, 'g', 'text');\n\n  // error bars are at the bottom\n  Registry.getComponentMethod('errorbars', 'plot')(gd, errorBarGroup, plotinfo, transitionOpts);\n  if (trace.visible !== true) return;\n  transition(tr).style('opacity', trace.opacity);\n\n  // BUILD LINES AND FILLS\n  var ownFillEl3, tonext;\n  var ownFillDir = trace.fill.charAt(trace.fill.length - 1);\n  if (ownFillDir !== 'x' && ownFillDir !== 'y') ownFillDir = '';\n\n  // store node for tweaking by selectPoints\n  cdscatter[0][plotinfo.isRangePlot ? 'nodeRangePlot3' : 'node3'] = tr;\n  var prevRevpath = '';\n  var prevPolygons = [];\n  var prevtrace = trace._prevtrace;\n  if (prevtrace) {\n    prevRevpath = prevtrace._prevRevpath || '';\n    tonext = prevtrace._nextFill;\n    prevPolygons = prevtrace._polygons;\n  }\n  var thispath;\n  var thisrevpath;\n  // fullpath is all paths for this curve, joined together straight\n  // across gaps, for filling\n  var fullpath = '';\n  // revpath is fullpath reversed, for fill-to-next\n  var revpath = '';\n  // functions for converting a point array to a path\n  var pathfn, revpathbase, revpathfn;\n  // variables used before and after the data join\n  var pt0, lastSegment, pt1, thisPolygons;\n\n  // initialize line join data / method\n  var segments = [];\n  var makeUpdate = Lib.noop;\n  ownFillEl3 = trace._ownFill;\n  if (subTypes.hasLines(trace) || trace.fill !== 'none') {\n    if (tonext) {\n      // This tells .style which trace to use for fill information:\n      tonext.datum(cdscatter);\n    }\n    if (['hv', 'vh', 'hvh', 'vhv'].indexOf(line.shape) !== -1) {\n      pathfn = Drawing.steps(line.shape);\n      revpathbase = Drawing.steps(line.shape.split('').reverse().join(''));\n    } else if (line.shape === 'spline') {\n      pathfn = revpathbase = function (pts) {\n        var pLast = pts[pts.length - 1];\n        if (pts.length > 1 && pts[0][0] === pLast[0] && pts[0][1] === pLast[1]) {\n          // identical start and end points: treat it as a\n          // closed curve so we don't get a kink\n          return Drawing.smoothclosed(pts.slice(1), line.smoothing);\n        } else {\n          return Drawing.smoothopen(pts, line.smoothing);\n        }\n      };\n    } else {\n      pathfn = revpathbase = function (pts) {\n        return 'M' + pts.join('L');\n      };\n    }\n    revpathfn = function (pts) {\n      // note: this is destructive (reverses pts in place) so can't use pts after this\n      return revpathbase(pts.reverse());\n    };\n    segments = linePoints(cdscatter, {\n      xaxis: xa,\n      yaxis: ya,\n      trace: trace,\n      connectGaps: trace.connectgaps,\n      baseTolerance: Math.max(line.width || 1, 3) / 4,\n      shape: line.shape,\n      backoff: line.backoff,\n      simplify: line.simplify,\n      fill: trace.fill\n    });\n\n    // since we already have the pixel segments here, use them to make\n    // polygons for hover on fill\n    // TODO: can we skip this if hoveron!=fills? That would mean we\n    // need to redraw when you change hoveron...\n    thisPolygons = trace._polygons = new Array(segments.length);\n    for (i = 0; i < segments.length; i++) {\n      trace._polygons[i] = polygonTester(segments[i]);\n    }\n    if (segments.length) {\n      pt0 = segments[0][0];\n      lastSegment = segments[segments.length - 1];\n      pt1 = lastSegment[lastSegment.length - 1];\n    }\n    makeUpdate = function (isEnter) {\n      return function (pts) {\n        thispath = pathfn(pts);\n        thisrevpath = revpathfn(pts);\n        if (!fullpath) {\n          fullpath = thispath;\n          revpath = thisrevpath;\n        } else if (ownFillDir) {\n          fullpath += 'L' + thispath.substr(1);\n          revpath = thisrevpath + ('L' + revpath.substr(1));\n        } else {\n          fullpath += 'Z' + thispath;\n          revpath = thisrevpath + 'Z' + revpath;\n        }\n        if (subTypes.hasLines(trace)) {\n          var el = d3.select(this);\n\n          // This makes the coloring work correctly:\n          el.datum(cdscatter);\n          if (isEnter) {\n            transition(el.style('opacity', 0).attr('d', thispath).call(Drawing.lineGroupStyle)).style('opacity', 1);\n          } else {\n            var sel = transition(el);\n            sel.attr('d', thispath);\n            Drawing.singleLineStyle(cdscatter, sel);\n          }\n        }\n      };\n    };\n  }\n  var lineJoin = lines.selectAll('.js-line').data(segments);\n  transition(lineJoin.exit()).style('opacity', 0).remove();\n  lineJoin.each(makeUpdate(false));\n  lineJoin.enter().append('path').classed('js-line', true).style('vector-effect', isStatic ? 'none' : 'non-scaling-stroke').call(Drawing.lineGroupStyle).each(makeUpdate(true));\n  Drawing.setClipUrl(lineJoin, plotinfo.layerClipId, gd);\n  function clearFill(selection) {\n    transition(selection).attr('d', 'M0,0Z');\n  }\n  if (segments.length) {\n    if (ownFillEl3) {\n      ownFillEl3.datum(cdscatter);\n      if (pt0 && pt1) {\n        if (ownFillDir) {\n          if (ownFillDir === 'y') {\n            pt0[1] = pt1[1] = ya.c2p(0, true);\n          } else if (ownFillDir === 'x') {\n            pt0[0] = pt1[0] = xa.c2p(0, true);\n          }\n\n          // fill to zero: full trace path, plus extension of\n          // the endpoints to the appropriate axis\n          // For the sake of animations, wrap the points around so that\n          // the points on the axes are the first two points. Otherwise\n          // animations get a little crazy if the number of points changes.\n          transition(ownFillEl3).attr('d', 'M' + pt1 + 'L' + pt0 + 'L' + fullpath.substr(1)).call(Drawing.singleFillStyle, gd);\n        } else {\n          // fill to self: just join the path to itself\n          transition(ownFillEl3).attr('d', fullpath + 'Z').call(Drawing.singleFillStyle, gd);\n        }\n      }\n    } else if (tonext) {\n      if (trace.fill.substr(0, 6) === 'tonext' && fullpath && prevRevpath) {\n        // fill to next: full trace path, plus the previous path reversed\n        if (trace.fill === 'tonext') {\n          // tonext: for use by concentric shapes, like manually constructed\n          // contours, we just add the two paths closed on themselves.\n          // This makes strange results if one path is *not* entirely\n          // inside the other, but then that is a strange usage.\n          transition(tonext).attr('d', fullpath + 'Z' + prevRevpath + 'Z').call(Drawing.singleFillStyle, gd);\n        } else {\n          // tonextx/y: for now just connect endpoints with lines. This is\n          // the correct behavior if the endpoints are at the same value of\n          // y/x, but if they *aren't*, we should ideally do more complicated\n          // things depending on whether the new endpoint projects onto the\n          // existing curve or off the end of it\n          transition(tonext).attr('d', fullpath + 'L' + prevRevpath.substr(1) + 'Z').call(Drawing.singleFillStyle, gd);\n        }\n        trace._polygons = trace._polygons.concat(prevPolygons);\n      } else {\n        clearFill(tonext);\n        trace._polygons = null;\n      }\n    }\n    trace._prevRevpath = revpath;\n    trace._prevPolygons = thisPolygons;\n  } else {\n    if (ownFillEl3) clearFill(ownFillEl3);else if (tonext) clearFill(tonext);\n    trace._polygons = trace._prevRevpath = trace._prevPolygons = null;\n  }\n  function visFilter(d) {\n    return d.filter(function (v) {\n      return !v.gap && v.vis;\n    });\n  }\n  function visFilterWithGaps(d) {\n    return d.filter(function (v) {\n      return v.vis;\n    });\n  }\n  function gapFilter(d) {\n    return d.filter(function (v) {\n      return !v.gap;\n    });\n  }\n  function keyFunc(d) {\n    return d.id;\n  }\n\n  // Returns a function if the trace is keyed, otherwise returns undefined\n  function getKeyFunc(trace) {\n    if (trace.ids) {\n      return keyFunc;\n    }\n  }\n  function hideFilter() {\n    return false;\n  }\n  function makePoints(points, text, cdscatter) {\n    var join, selection, hasNode;\n    var trace = cdscatter[0].trace;\n    var showMarkers = subTypes.hasMarkers(trace);\n    var showText = subTypes.hasText(trace);\n    var keyFunc = getKeyFunc(trace);\n    var markerFilter = hideFilter;\n    var textFilter = hideFilter;\n    if (showMarkers || showText) {\n      var showFilter = identity;\n      // if we're stacking, \"infer zero\" gap mode gets markers in the\n      // gap points - because we've inferred a zero there - but other\n      // modes (currently \"interpolate\", later \"interrupt\" hopefully)\n      // we don't draw generated markers\n      var stackGroup = trace.stackgroup;\n      var isInferZero = stackGroup && gd._fullLayout._scatterStackOpts[xa._id + ya._id][stackGroup].stackgaps === 'infer zero';\n      if (trace.marker.maxdisplayed || trace._needsCull) {\n        showFilter = isInferZero ? visFilterWithGaps : visFilter;\n      } else if (stackGroup && !isInferZero) {\n        showFilter = gapFilter;\n      }\n      if (showMarkers) markerFilter = showFilter;\n      if (showText) textFilter = showFilter;\n    }\n\n    // marker points\n\n    selection = points.selectAll('path.point');\n    join = selection.data(markerFilter, keyFunc);\n    var enter = join.enter().append('path').classed('point', true);\n    if (hasTransition) {\n      enter.call(Drawing.pointStyle, trace, gd).call(Drawing.translatePoints, xa, ya).style('opacity', 0).transition().style('opacity', 1);\n    }\n    join.order();\n    var styleFns;\n    if (showMarkers) {\n      styleFns = Drawing.makePointStyleFns(trace);\n    }\n    join.each(function (d) {\n      var el = d3.select(this);\n      var sel = transition(el);\n      hasNode = Drawing.translatePoint(d, sel, xa, ya);\n      if (hasNode) {\n        Drawing.singlePointStyle(d, sel, trace, styleFns, gd);\n        if (plotinfo.layerClipId) {\n          Drawing.hideOutsideRangePoint(d, sel, xa, ya, trace.xcalendar, trace.ycalendar);\n        }\n        if (trace.customdata) {\n          el.classed('plotly-customdata', d.data !== null && d.data !== undefined);\n        }\n      } else {\n        sel.remove();\n      }\n    });\n    if (hasTransition) {\n      join.exit().transition().style('opacity', 0).remove();\n    } else {\n      join.exit().remove();\n    }\n\n    // text points\n    selection = text.selectAll('g');\n    join = selection.data(textFilter, keyFunc);\n\n    // each text needs to go in its own 'g' in case\n    // it gets converted to mathjax\n    join.enter().append('g').classed('textpoint', true).append('text');\n    join.order();\n    join.each(function (d) {\n      var g = d3.select(this);\n      var sel = transition(g.select('text'));\n      hasNode = Drawing.translatePoint(d, sel, xa, ya);\n      if (hasNode) {\n        if (plotinfo.layerClipId) {\n          Drawing.hideOutsideRangePoint(d, g, xa, ya, trace.xcalendar, trace.ycalendar);\n        }\n      } else {\n        g.remove();\n      }\n    });\n    join.selectAll('text').call(Drawing.textPointStyle, trace, gd).each(function (d) {\n      // This just *has* to be totally custom because of SVG text positioning :(\n      // It's obviously copied from translatePoint; we just can't use that\n      var x = xa.c2p(d.x);\n      var y = ya.c2p(d.y);\n      d3.select(this).selectAll('tspan.line').each(function () {\n        transition(d3.select(this)).attr({\n          x: x,\n          y: y\n        });\n      });\n    });\n    join.exit().remove();\n  }\n  points.datum(cdscatter);\n  text.datum(cdscatter);\n  makePoints(points, text, cdscatter);\n\n  // lastly, clip points groups of `cliponaxis !== false` traces\n  // on `plotinfo._hasClipOnAxisFalse === true` subplots\n  var hasClipOnAxisFalse = trace.cliponaxis === false;\n  var clipUrl = hasClipOnAxisFalse ? null : plotinfo.layerClipId;\n  Drawing.setClipUrl(points, clipUrl, gd);\n  Drawing.setClipUrl(text, clipUrl, gd);\n}\nfunction selectMarkers(gd, idx, plotinfo, cdscatter, cdscatterAll) {\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  var xr = d3.extent(Lib.simpleMap(xa.range, xa.r2c));\n  var yr = d3.extent(Lib.simpleMap(ya.range, ya.r2c));\n  var trace = cdscatter[0].trace;\n  if (!subTypes.hasMarkers(trace)) return;\n  // if marker.maxdisplayed is used, select a maximum of\n  // mnum markers to show, from the set that are in the viewport\n  var mnum = trace.marker.maxdisplayed;\n\n  // TODO: remove some as we get away from the viewport?\n  if (mnum === 0) return;\n  var cd = cdscatter.filter(function (v) {\n    return v.x >= xr[0] && v.x <= xr[1] && v.y >= yr[0] && v.y <= yr[1];\n  });\n  var inc = Math.ceil(cd.length / mnum);\n  var tnum = 0;\n  cdscatterAll.forEach(function (cdj, j) {\n    var tracei = cdj[0].trace;\n    if (subTypes.hasMarkers(tracei) && tracei.marker.maxdisplayed > 0 && j < idx) {\n      tnum++;\n    }\n  });\n\n  // if multiple traces use maxdisplayed, stagger which markers we\n  // display this formula offsets successive traces by 1/3 of the\n  // increment, adding an extra small amount after each triplet so\n  // it's not quite periodic\n  var i0 = Math.round(tnum * inc / 3 + Math.floor(tnum / 3) * inc / 7.1);\n\n  // for error bars: save in cd which markers to show\n  // so we don't have to repeat this\n  cdscatter.forEach(function (v) {\n    delete v.vis;\n  });\n  cd.forEach(function (v, i) {\n    if (Math.round((i + i0) % inc) === 0) v.vis = true;\n  });\n}\n\n/***/ }),\n\n/***/ 98002:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3150730__) {\n\n\"use strict\";\n\n\nvar subtypes = __nested_webpack_require_3150730__(34098);\nmodule.exports = function selectPoints(searchInfo, selectionTester) {\n  var cd = searchInfo.cd;\n  var xa = searchInfo.xaxis;\n  var ya = searchInfo.yaxis;\n  var selection = [];\n  var trace = cd[0].trace;\n  var i;\n  var di;\n  var x;\n  var y;\n  var hasOnlyLines = !subtypes.hasMarkers(trace) && !subtypes.hasText(trace);\n  if (hasOnlyLines) return [];\n  if (selectionTester === false) {\n    // clear selection\n    for (i = 0; i < cd.length; i++) {\n      cd[i].selected = 0;\n    }\n  } else {\n    for (i = 0; i < cd.length; i++) {\n      di = cd[i];\n      x = xa.c2p(di.x);\n      y = ya.c2p(di.y);\n      if (di.i !== null && selectionTester.contains([x, y], false, i, searchInfo)) {\n        selection.push({\n          pointNumber: di.i,\n          x: xa.c2d(di.x),\n          y: ya.c2d(di.y)\n        });\n        di.selected = 1;\n      } else {\n        di.selected = 0;\n      }\n    }\n  }\n  return selection;\n};\n\n/***/ }),\n\n/***/ 565:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar perStackAttrs = ['orientation', 'groupnorm', 'stackgaps'];\nmodule.exports = function handleStackDefaults(traceIn, traceOut, layout, coerce) {\n  var stackOpts = layout._scatterStackOpts;\n  var stackGroup = coerce('stackgroup');\n  if (stackGroup) {\n    // use independent stacking options per subplot\n    var subplot = traceOut.xaxis + traceOut.yaxis;\n    var subplotStackOpts = stackOpts[subplot];\n    if (!subplotStackOpts) subplotStackOpts = stackOpts[subplot] = {};\n    var groupOpts = subplotStackOpts[stackGroup];\n    var firstTrace = false;\n    if (groupOpts) {\n      groupOpts.traces.push(traceOut);\n    } else {\n      groupOpts = subplotStackOpts[stackGroup] = {\n        // keep track of trace indices for use during stacking calculations\n        // this will be filled in during `calc` and used during `crossTraceCalc`\n        // so it's OK if we don't recreate it during a non-calc edit\n        traceIndices: [],\n        // Hold on to the whole set of prior traces\n        // First one is most important, so we can clear defaults\n        // there if we find explicit values only in later traces.\n        // We're only going to *use* the values stored in groupOpts,\n        // but for the editor and validate we want things self-consistent\n        // The full set of traces is used only to fix `fill` default if\n        // we find `orientation: 'h'` beyond the first trace\n        traces: [traceOut]\n      };\n      firstTrace = true;\n    }\n    // TODO: how is this going to work with groupby transforms?\n    // in principle it should be OK I guess, as long as explicit group styles\n    // don't override explicit base-trace styles?\n\n    var dflts = {\n      orientation: traceOut.x && !traceOut.y ? 'h' : 'v'\n    };\n    for (var i = 0; i < perStackAttrs.length; i++) {\n      var attr = perStackAttrs[i];\n      var attrFound = attr + 'Found';\n      if (!groupOpts[attrFound]) {\n        var traceHasAttr = traceIn[attr] !== undefined;\n        var isOrientation = attr === 'orientation';\n        if (traceHasAttr || firstTrace) {\n          groupOpts[attr] = coerce(attr, dflts[attr]);\n          if (isOrientation) {\n            groupOpts.fillDflt = groupOpts[attr] === 'h' ? 'tonextx' : 'tonexty';\n          }\n          if (traceHasAttr) {\n            // Note: this will show a value here even if it's invalid\n            // in which case it will revert to default.\n            groupOpts[attrFound] = true;\n\n            // Note: only one trace in the stack will get a _fullData\n            // entry for a given stack-wide attribute. If no traces\n            // (or the first trace) specify that attribute, the\n            // first trace will get it. If the first trace does NOT\n            // specify it but some later trace does, then it gets\n            // removed from the first trace and only included in the\n            // one that specified it. This is mostly important for\n            // editors (that want to see the full values to know\n            // what settings are available) and Plotly.react diffing.\n            // Editors may want to use fullLayout._scatterStackOpts\n            // directly and make these settings available from all\n            // traces in the stack... then set the new value into\n            // the first trace, and clear all later traces.\n            if (!firstTrace) {\n              delete groupOpts.traces[0][attr];\n\n              // orientation can affect default fill of previous traces\n              if (isOrientation) {\n                for (var j = 0; j < groupOpts.traces.length - 1; j++) {\n                  var trace2 = groupOpts.traces[j];\n                  if (trace2._input.fill !== trace2.fill) {\n                    trace2.fill = groupOpts.fillDflt;\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    return groupOpts;\n  }\n};\n\n/***/ }),\n\n/***/ 16296:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3155698__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_3155698__(39898);\nvar Drawing = __nested_webpack_require_3155698__(91424);\nvar Registry = __nested_webpack_require_3155698__(73972);\nfunction style(gd) {\n  var s = d3.select(gd).selectAll('g.trace.scatter');\n  s.style('opacity', function (d) {\n    return d[0].trace.opacity;\n  });\n  s.selectAll('g.points').each(function (d) {\n    var sel = d3.select(this);\n    var trace = d.trace || d[0].trace;\n    stylePoints(sel, trace, gd);\n  });\n  s.selectAll('g.text').each(function (d) {\n    var sel = d3.select(this);\n    var trace = d.trace || d[0].trace;\n    styleText(sel, trace, gd);\n  });\n  s.selectAll('g.trace path.js-line').call(Drawing.lineGroupStyle);\n  s.selectAll('g.trace path.js-fill').call(Drawing.fillGroupStyle, gd);\n  Registry.getComponentMethod('errorbars', 'style')(s);\n}\nfunction stylePoints(sel, trace, gd) {\n  Drawing.pointStyle(sel.selectAll('path.point'), trace, gd);\n}\nfunction styleText(sel, trace, gd) {\n  Drawing.textPointStyle(sel.selectAll('text'), trace, gd);\n}\nfunction styleOnSelect(gd, cd, sel) {\n  var trace = cd[0].trace;\n  if (trace.selectedpoints) {\n    Drawing.selectedPointStyle(sel.selectAll('path.point'), trace);\n    Drawing.selectedTextStyle(sel.selectAll('text'), trace);\n  } else {\n    stylePoints(sel, trace, gd);\n    styleText(sel, trace, gd);\n  }\n}\nmodule.exports = {\n  style: style,\n  stylePoints: stylePoints,\n  styleText: styleText,\n  styleOnSelect: styleOnSelect\n};\n\n/***/ }),\n\n/***/ 34098:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3157215__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3157215__(71828);\nmodule.exports = {\n  hasLines: function (trace) {\n    return trace.visible && trace.mode && trace.mode.indexOf('lines') !== -1;\n  },\n  hasMarkers: function (trace) {\n    return trace.visible && (trace.mode && trace.mode.indexOf('markers') !== -1 ||\n    // until splom implements 'mode'\n    trace.type === 'splom');\n  },\n  hasText: function (trace) {\n    return trace.visible && trace.mode && trace.mode.indexOf('text') !== -1;\n  },\n  isBubble: function (trace) {\n    return Lib.isPlainObject(trace.marker) && Lib.isArrayOrTypedArray(trace.marker.size);\n  }\n};\n\n/***/ }),\n\n/***/ 82410:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3157928__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3157928__(71828);\n\n/*\n * opts: object of flags to control features not all text users support\n *   noSelect: caller does not support selected/unselected attribute containers\n */\nmodule.exports = function (traceIn, traceOut, layout, coerce, opts) {\n  opts = opts || {};\n  coerce('textposition');\n  Lib.coerceFont(coerce, 'textfont', layout.font);\n  if (!opts.noSelect) {\n    coerce('selected.textfont.color');\n    coerce('unselected.textfont.color');\n  }\n};\n\n/***/ }),\n\n/***/ 67513:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3158520__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3158520__(71828);\nvar Registry = __nested_webpack_require_3158520__(73972);\nmodule.exports = function handleXYDefaults(traceIn, traceOut, layout, coerce) {\n  var x = coerce('x');\n  var y = coerce('y');\n  var len;\n  var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults');\n  handleCalendarDefaults(traceIn, traceOut, ['x', 'y'], layout);\n  if (x) {\n    var xlen = Lib.minRowLength(x);\n    if (y) {\n      len = Math.min(xlen, Lib.minRowLength(y));\n    } else {\n      len = xlen;\n      coerce('y0');\n      coerce('dy');\n    }\n  } else {\n    if (!y) return 0;\n    len = Lib.minRowLength(y);\n    coerce('x0');\n    coerce('dx');\n  }\n  traceOut._length = len;\n  return len;\n};\n\n/***/ }),\n\n/***/ 44542:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3159347__) {\n\n\"use strict\";\n\n\nvar scatterAttrs = __nested_webpack_require_3159347__(82196);\nvar colorAttributes = __nested_webpack_require_3159347__(50693);\nvar axisHoverFormat = (__nested_webpack_require_3159347__(12663).axisHoverFormat);\nvar hovertemplateAttrs = (__nested_webpack_require_3159347__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_3159347__(5386)/* .texttemplateAttrs */ .s);\nvar baseAttrs = __nested_webpack_require_3159347__(9012);\nvar DASHES = __nested_webpack_require_3159347__(29659);\nvar MARKER_SYMBOLS = __nested_webpack_require_3159347__(87381);\nvar extendFlat = (__nested_webpack_require_3159347__(1426).extendFlat);\nvar overrideAll = (__nested_webpack_require_3159347__(30962).overrideAll);\nvar sortObjectKeys = __nested_webpack_require_3159347__(78607);\nvar scatterLineAttrs = scatterAttrs.line;\nvar scatterMarkerAttrs = scatterAttrs.marker;\nvar scatterMarkerLineAttrs = scatterMarkerAttrs.line;\nvar lineAttrs = extendFlat({\n  width: scatterLineAttrs.width,\n  dash: {\n    valType: 'enumerated',\n    values: sortObjectKeys(DASHES),\n    dflt: 'solid'\n  }\n}, colorAttributes('line'));\nfunction makeProjectionAttr(axLetter) {\n  return {\n    show: {\n      valType: 'boolean',\n      dflt: false\n    },\n    opacity: {\n      valType: 'number',\n      min: 0,\n      max: 1,\n      dflt: 1\n    },\n    scale: {\n      valType: 'number',\n      min: 0,\n      max: 10,\n      dflt: 2 / 3\n    }\n  };\n}\nvar attrs = module.exports = overrideAll({\n  x: scatterAttrs.x,\n  y: scatterAttrs.y,\n  z: {\n    valType: 'data_array'\n  },\n  text: extendFlat({}, scatterAttrs.text, {}),\n  texttemplate: texttemplateAttrs({}, {}),\n  hovertext: extendFlat({}, scatterAttrs.hovertext, {}),\n  hovertemplate: hovertemplateAttrs(),\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  zhoverformat: axisHoverFormat('z'),\n  mode: extendFlat({}, scatterAttrs.mode,\n  // shouldn't this be on-par with 2D?\n  {\n    dflt: 'lines+markers'\n  }),\n  surfaceaxis: {\n    valType: 'enumerated',\n    values: [-1, 0, 1, 2],\n    dflt: -1\n  },\n  surfacecolor: {\n    valType: 'color'\n  },\n  projection: {\n    x: makeProjectionAttr('x'),\n    y: makeProjectionAttr('y'),\n    z: makeProjectionAttr('z')\n  },\n  connectgaps: scatterAttrs.connectgaps,\n  line: lineAttrs,\n  marker: extendFlat({\n    // Parity with scatter.js?\n    symbol: {\n      valType: 'enumerated',\n      values: sortObjectKeys(MARKER_SYMBOLS),\n      dflt: 'circle',\n      arrayOk: true\n    },\n    size: extendFlat({}, scatterMarkerAttrs.size, {\n      dflt: 8\n    }),\n    sizeref: scatterMarkerAttrs.sizeref,\n    sizemin: scatterMarkerAttrs.sizemin,\n    sizemode: scatterMarkerAttrs.sizemode,\n    opacity: extendFlat({}, scatterMarkerAttrs.opacity, {\n      arrayOk: false\n    }),\n    colorbar: scatterMarkerAttrs.colorbar,\n    line: extendFlat({\n      width: extendFlat({}, scatterMarkerLineAttrs.width, {\n        arrayOk: false\n      })\n    }, colorAttributes('marker.line'))\n  }, colorAttributes('marker')),\n  textposition: extendFlat({}, scatterAttrs.textposition, {\n    dflt: 'top center'\n  }),\n  textfont: {\n    color: scatterAttrs.textfont.color,\n    size: scatterAttrs.textfont.size,\n    family: extendFlat({}, scatterAttrs.textfont.family, {\n      arrayOk: false\n    })\n  },\n  opacity: baseAttrs.opacity,\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo)\n}, 'calc', 'nested');\nattrs.x.editType = attrs.y.editType = attrs.z.editType = 'calc+clearAxisTypes';\n\n/***/ }),\n\n/***/ 36563:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3162728__) {\n\n\"use strict\";\n\n\nvar arraysToCalcdata = __nested_webpack_require_3162728__(75225);\nvar calcColorscale = __nested_webpack_require_3162728__(36922);\n\n/**\n * This is a kludge to put the array attributes into\n * calcdata the way Scatter.plot does, so that legends and\n * popovers know what to do with them.\n */\nmodule.exports = function calc(gd, trace) {\n  var cd = [{\n    x: false,\n    y: false,\n    trace: trace,\n    t: {}\n  }];\n  arraysToCalcdata(cd, trace);\n  calcColorscale(gd, trace);\n  return cd;\n};\n\n/***/ }),\n\n/***/ 67336:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3163299__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_3163299__(73972);\nfunction calculateAxisErrors(data, params, scaleFactor, axis) {\n  if (!params || !params.visible) return null;\n  var computeError = Registry.getComponentMethod('errorbars', 'makeComputeError')(params);\n  var result = new Array(data.length);\n  for (var i = 0; i < data.length; i++) {\n    var errors = computeError(+data[i], i);\n    if (axis.type === 'log') {\n      var point = axis.c2l(data[i]);\n      var min = data[i] - errors[0];\n      var max = data[i] + errors[1];\n      result[i] = [(axis.c2l(min, true) - point) * scaleFactor, (axis.c2l(max, true) - point) * scaleFactor];\n\n      // Keep track of the lower error bound which isn't negative!\n      if (min > 0) {\n        var lower = axis.c2l(min);\n        if (!axis._lowerLogErrorBound) axis._lowerLogErrorBound = lower;\n        axis._lowerErrorBound = Math.min(axis._lowerLogErrorBound, lower);\n      }\n    } else {\n      result[i] = [-errors[0] * scaleFactor, errors[1] * scaleFactor];\n    }\n  }\n  return result;\n}\nfunction dataLength(array) {\n  for (var i = 0; i < array.length; i++) {\n    if (array[i]) return array[i].length;\n  }\n  return 0;\n}\nfunction calculateErrors(data, scaleFactor, sceneLayout) {\n  var errors = [calculateAxisErrors(data.x, data.error_x, scaleFactor[0], sceneLayout.xaxis), calculateAxisErrors(data.y, data.error_y, scaleFactor[1], sceneLayout.yaxis), calculateAxisErrors(data.z, data.error_z, scaleFactor[2], sceneLayout.zaxis)];\n  var n = dataLength(errors);\n  if (n === 0) return null;\n  var errorBounds = new Array(n);\n  for (var i = 0; i < n; i++) {\n    var bound = [[0, 0, 0], [0, 0, 0]];\n    for (var j = 0; j < 3; j++) {\n      if (errors[j]) {\n        for (var k = 0; k < 2; k++) {\n          bound[k][j] = errors[j][i][k];\n        }\n      }\n    }\n    errorBounds[i] = bound;\n  }\n  return errorBounds;\n}\nmodule.exports = calculateErrors;\n\n/***/ }),\n\n/***/ 58925:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3165285__) {\n\n\"use strict\";\n\n\nvar createLinePlot = (__nested_webpack_require_3165285__(9330).gl_line3d);\nvar createScatterPlot = (__nested_webpack_require_3165285__(9330).gl_scatter3d);\nvar createErrorBars = (__nested_webpack_require_3165285__(9330).gl_error3d);\nvar createMesh = (__nested_webpack_require_3165285__(9330).gl_mesh3d);\nvar triangulate = (__nested_webpack_require_3165285__(9330).delaunay_triangulate);\nvar Lib = __nested_webpack_require_3165285__(71828);\nvar str2RgbaArray = __nested_webpack_require_3165285__(78614);\nvar formatColor = (__nested_webpack_require_3165285__(81697).formatColor);\nvar makeBubbleSizeFn = __nested_webpack_require_3165285__(39984);\nvar DASH_PATTERNS = __nested_webpack_require_3165285__(29659);\nvar MARKER_SYMBOLS = __nested_webpack_require_3165285__(87381);\nvar Axes = __nested_webpack_require_3165285__(89298);\nvar appendArrayPointValue = (__nested_webpack_require_3165285__(23469).appendArrayPointValue);\nvar calculateError = __nested_webpack_require_3165285__(67336);\nfunction LineWithMarkers(scene, uid) {\n  this.scene = scene;\n  this.uid = uid;\n  this.linePlot = null;\n  this.scatterPlot = null;\n  this.errorBars = null;\n  this.textMarkers = null;\n  this.delaunayMesh = null;\n  this.color = null;\n  this.mode = '';\n  this.dataPoints = [];\n  this.axesBounds = [[-Infinity, -Infinity, -Infinity], [Infinity, Infinity, Infinity]];\n  this.textLabels = null;\n  this.data = null;\n}\nvar proto = LineWithMarkers.prototype;\nproto.handlePick = function (selection) {\n  if (selection.object && (selection.object === this.linePlot || selection.object === this.delaunayMesh || selection.object === this.textMarkers || selection.object === this.scatterPlot)) {\n    var ind = selection.index = selection.data.index;\n    if (selection.object.highlight) {\n      selection.object.highlight(null);\n    }\n    if (this.scatterPlot) {\n      selection.object = this.scatterPlot;\n      this.scatterPlot.highlight(selection.data);\n    }\n    selection.textLabel = '';\n    if (this.textLabels) {\n      if (Array.isArray(this.textLabels)) {\n        if (this.textLabels[ind] || this.textLabels[ind] === 0) {\n          selection.textLabel = this.textLabels[ind];\n        }\n      } else {\n        selection.textLabel = this.textLabels;\n      }\n    }\n    selection.traceCoordinate = [this.data.x[ind], this.data.y[ind], this.data.z[ind]];\n    return true;\n  }\n};\nfunction constructDelaunay(points, color, axis) {\n  var u = (axis + 1) % 3;\n  var v = (axis + 2) % 3;\n  var filteredPoints = [];\n  var filteredIds = [];\n  var i;\n  for (i = 0; i < points.length; ++i) {\n    var p = points[i];\n    if (isNaN(p[u]) || !isFinite(p[u]) || isNaN(p[v]) || !isFinite(p[v])) {\n      continue;\n    }\n    filteredPoints.push([p[u], p[v]]);\n    filteredIds.push(i);\n  }\n  var cells = triangulate(filteredPoints);\n  for (i = 0; i < cells.length; ++i) {\n    var c = cells[i];\n    for (var j = 0; j < c.length; ++j) {\n      c[j] = filteredIds[c[j]];\n    }\n  }\n  return {\n    positions: points,\n    cells: cells,\n    meshColor: color\n  };\n}\nfunction calculateErrorParams(errors) {\n  var capSize = [0.0, 0.0, 0.0];\n  var color = [[0, 0, 0], [0, 0, 0], [0, 0, 0]];\n  var lineWidth = [1.0, 1.0, 1.0];\n  for (var i = 0; i < 3; i++) {\n    var e = errors[i];\n    if (e && e.copy_zstyle !== false && errors[2].visible !== false) e = errors[2];\n    if (!e || !e.visible) continue;\n    capSize[i] = e.width / 2; // ballpark rescaling\n    color[i] = str2RgbaArray(e.color);\n    lineWidth[i] = e.thickness;\n  }\n  return {\n    capSize: capSize,\n    color: color,\n    lineWidth: lineWidth\n  };\n}\nfunction parseAlignmentX(a) {\n  if (a === null || a === undefined) return 0;\n  return a.indexOf('left') > -1 ? -1 : a.indexOf('right') > -1 ? 1 : 0;\n}\nfunction parseAlignmentY(a) {\n  if (a === null || a === undefined) return 0;\n  return a.indexOf('top') > -1 ? -1 : a.indexOf('bottom') > -1 ? 1 : 0;\n}\nfunction calculateTextOffset(tp) {\n  // Read out text properties\n\n  var defaultAlignmentX = 0;\n  var defaultAlignmentY = 0;\n  var textOffset = [defaultAlignmentX, defaultAlignmentY];\n  if (Array.isArray(tp)) {\n    for (var i = 0; i < tp.length; i++) {\n      textOffset[i] = [defaultAlignmentX, defaultAlignmentY];\n      if (tp[i]) {\n        textOffset[i][0] = parseAlignmentX(tp[i]);\n        textOffset[i][1] = parseAlignmentY(tp[i]);\n      }\n    }\n  } else {\n    textOffset[0] = parseAlignmentX(tp);\n    textOffset[1] = parseAlignmentY(tp);\n  }\n  return textOffset;\n}\nfunction calculateSize(sizeIn, sizeFn) {\n  // rough parity with Plotly 2D markers\n  return sizeFn(sizeIn * 4);\n}\nfunction calculateSymbol(symbolIn) {\n  return MARKER_SYMBOLS[symbolIn];\n}\nfunction formatParam(paramIn, len, calculate, dflt, extraFn) {\n  var paramOut = null;\n  if (Lib.isArrayOrTypedArray(paramIn)) {\n    paramOut = [];\n    for (var i = 0; i < len; i++) {\n      if (paramIn[i] === undefined) paramOut[i] = dflt;else paramOut[i] = calculate(paramIn[i], extraFn);\n    }\n  } else paramOut = calculate(paramIn, Lib.identity);\n  return paramOut;\n}\nfunction convertPlotlyOptions(scene, data) {\n  var points = [];\n  var sceneLayout = scene.fullSceneLayout;\n  var scaleFactor = scene.dataScale;\n  var xaxis = sceneLayout.xaxis;\n  var yaxis = sceneLayout.yaxis;\n  var zaxis = sceneLayout.zaxis;\n  var marker = data.marker;\n  var line = data.line;\n  var x = data.x || [];\n  var y = data.y || [];\n  var z = data.z || [];\n  var len = x.length;\n  var xcalendar = data.xcalendar;\n  var ycalendar = data.ycalendar;\n  var zcalendar = data.zcalendar;\n  var xc, yc, zc;\n  var params, i;\n  var text;\n\n  // Convert points\n  for (i = 0; i < len; i++) {\n    // sanitize numbers and apply transforms based on axes.type\n    xc = xaxis.d2l(x[i], 0, xcalendar) * scaleFactor[0];\n    yc = yaxis.d2l(y[i], 0, ycalendar) * scaleFactor[1];\n    zc = zaxis.d2l(z[i], 0, zcalendar) * scaleFactor[2];\n    points[i] = [xc, yc, zc];\n  }\n\n  // convert text\n  if (Array.isArray(data.text)) text = data.text;else if (data.text !== undefined) {\n    text = new Array(len);\n    for (i = 0; i < len; i++) text[i] = data.text;\n  }\n  function formatter(axName, val) {\n    var ax = sceneLayout[axName];\n    return Axes.tickText(ax, ax.d2l(val), true).text;\n  }\n\n  // check texttemplate\n  var texttemplate = data.texttemplate;\n  if (texttemplate) {\n    var fullLayout = scene.fullLayout;\n    var d3locale = fullLayout._d3locale;\n    var isArray = Array.isArray(texttemplate);\n    var N = isArray ? Math.min(texttemplate.length, len) : len;\n    var txt = isArray ? function (i) {\n      return texttemplate[i];\n    } : function () {\n      return texttemplate;\n    };\n    text = new Array(N);\n    for (i = 0; i < N; i++) {\n      var d = {\n        x: x[i],\n        y: y[i],\n        z: z[i]\n      };\n      var labels = {\n        xLabel: formatter('xaxis', x[i]),\n        yLabel: formatter('yaxis', y[i]),\n        zLabel: formatter('zaxis', z[i])\n      };\n      var pointValues = {};\n      appendArrayPointValue(pointValues, data, i);\n      var meta = data._meta || {};\n      text[i] = Lib.texttemplateString(txt(i), labels, d3locale, pointValues, d, meta);\n    }\n  }\n\n  // Build object parameters\n  params = {\n    position: points,\n    mode: data.mode,\n    text: text\n  };\n  if ('line' in data) {\n    params.lineColor = formatColor(line, 1, len);\n    params.lineWidth = line.width;\n    params.lineDashes = line.dash;\n  }\n  if ('marker' in data) {\n    var sizeFn = makeBubbleSizeFn(data);\n    params.scatterColor = formatColor(marker, 1, len);\n    params.scatterSize = formatParam(marker.size, len, calculateSize, 20, sizeFn);\n    params.scatterMarker = formatParam(marker.symbol, len, calculateSymbol, '●');\n    params.scatterLineWidth = marker.line.width; // arrayOk === false\n    params.scatterLineColor = formatColor(marker.line, 1, len);\n    params.scatterAngle = 0;\n  }\n  if ('textposition' in data) {\n    params.textOffset = calculateTextOffset(data.textposition);\n    params.textColor = formatColor(data.textfont, 1, len);\n    params.textSize = formatParam(data.textfont.size, len, Lib.identity, 12);\n    params.textFont = data.textfont.family; // arrayOk === false\n    params.textAngle = 0;\n  }\n  var dims = ['x', 'y', 'z'];\n  params.project = [false, false, false];\n  params.projectScale = [1, 1, 1];\n  params.projectOpacity = [1, 1, 1];\n  for (i = 0; i < 3; ++i) {\n    var projection = data.projection[dims[i]];\n    if (params.project[i] = projection.show) {\n      params.projectOpacity[i] = projection.opacity;\n      params.projectScale[i] = projection.scale;\n    }\n  }\n  params.errorBounds = calculateError(data, scaleFactor, sceneLayout);\n  var errorParams = calculateErrorParams([data.error_x, data.error_y, data.error_z]);\n  params.errorColor = errorParams.color;\n  params.errorLineWidth = errorParams.lineWidth;\n  params.errorCapSize = errorParams.capSize;\n  params.delaunayAxis = data.surfaceaxis;\n  params.delaunayColor = str2RgbaArray(data.surfacecolor);\n  return params;\n}\nfunction _arrayToColor(color) {\n  if (Lib.isArrayOrTypedArray(color)) {\n    var c = color[0];\n    if (Lib.isArrayOrTypedArray(c)) color = c;\n    return 'rgb(' + color.slice(0, 3).map(function (x) {\n      return Math.round(x * 255);\n    }) + ')';\n  }\n  return null;\n}\nfunction arrayToColor(colors) {\n  if (!Lib.isArrayOrTypedArray(colors)) {\n    return null;\n  }\n  if (colors.length === 4 && typeof colors[0] === 'number') {\n    return _arrayToColor(colors);\n  }\n  return colors.map(_arrayToColor);\n}\nproto.update = function (data) {\n  var gl = this.scene.glplot.gl;\n  var lineOptions;\n  var scatterOptions;\n  var errorOptions;\n  var textOptions;\n  var dashPattern = DASH_PATTERNS.solid;\n\n  // Save data\n  this.data = data;\n\n  // Run data conversion\n  var options = convertPlotlyOptions(this.scene, data);\n  if ('mode' in options) {\n    this.mode = options.mode;\n  }\n  if ('lineDashes' in options) {\n    if (options.lineDashes in DASH_PATTERNS) {\n      dashPattern = DASH_PATTERNS[options.lineDashes];\n    }\n  }\n  this.color = arrayToColor(options.scatterColor) || arrayToColor(options.lineColor);\n\n  // Save data points\n  this.dataPoints = options.position;\n  lineOptions = {\n    gl: this.scene.glplot.gl,\n    position: options.position,\n    color: options.lineColor,\n    lineWidth: options.lineWidth || 1,\n    dashes: dashPattern[0],\n    dashScale: dashPattern[1],\n    opacity: data.opacity,\n    connectGaps: data.connectgaps\n  };\n  if (this.mode.indexOf('lines') !== -1) {\n    if (this.linePlot) this.linePlot.update(lineOptions);else {\n      this.linePlot = createLinePlot(lineOptions);\n      this.linePlot._trace = this;\n      this.scene.glplot.add(this.linePlot);\n    }\n  } else if (this.linePlot) {\n    this.scene.glplot.remove(this.linePlot);\n    this.linePlot.dispose();\n    this.linePlot = null;\n  }\n\n  // N.B. marker.opacity must be a scalar for performance\n  var scatterOpacity = data.opacity;\n  if (data.marker && data.marker.opacity) scatterOpacity *= data.marker.opacity;\n  scatterOptions = {\n    gl: this.scene.glplot.gl,\n    position: options.position,\n    color: options.scatterColor,\n    size: options.scatterSize,\n    glyph: options.scatterMarker,\n    opacity: scatterOpacity,\n    orthographic: true,\n    lineWidth: options.scatterLineWidth,\n    lineColor: options.scatterLineColor,\n    project: options.project,\n    projectScale: options.projectScale,\n    projectOpacity: options.projectOpacity\n  };\n  if (this.mode.indexOf('markers') !== -1) {\n    if (this.scatterPlot) this.scatterPlot.update(scatterOptions);else {\n      this.scatterPlot = createScatterPlot(scatterOptions);\n      this.scatterPlot._trace = this;\n      this.scatterPlot.highlightScale = 1;\n      this.scene.glplot.add(this.scatterPlot);\n    }\n  } else if (this.scatterPlot) {\n    this.scene.glplot.remove(this.scatterPlot);\n    this.scatterPlot.dispose();\n    this.scatterPlot = null;\n  }\n  textOptions = {\n    gl: this.scene.glplot.gl,\n    position: options.position,\n    glyph: options.text,\n    color: options.textColor,\n    size: options.textSize,\n    angle: options.textAngle,\n    alignment: options.textOffset,\n    font: options.textFont,\n    orthographic: true,\n    lineWidth: 0,\n    project: false,\n    opacity: data.opacity\n  };\n  this.textLabels = data.hovertext || data.text;\n  if (this.mode.indexOf('text') !== -1) {\n    if (this.textMarkers) this.textMarkers.update(textOptions);else {\n      this.textMarkers = createScatterPlot(textOptions);\n      this.textMarkers._trace = this;\n      this.textMarkers.highlightScale = 1;\n      this.scene.glplot.add(this.textMarkers);\n    }\n  } else if (this.textMarkers) {\n    this.scene.glplot.remove(this.textMarkers);\n    this.textMarkers.dispose();\n    this.textMarkers = null;\n  }\n  errorOptions = {\n    gl: this.scene.glplot.gl,\n    position: options.position,\n    color: options.errorColor,\n    error: options.errorBounds,\n    lineWidth: options.errorLineWidth,\n    capSize: options.errorCapSize,\n    opacity: data.opacity\n  };\n  if (this.errorBars) {\n    if (options.errorBounds) {\n      this.errorBars.update(errorOptions);\n    } else {\n      this.scene.glplot.remove(this.errorBars);\n      this.errorBars.dispose();\n      this.errorBars = null;\n    }\n  } else if (options.errorBounds) {\n    this.errorBars = createErrorBars(errorOptions);\n    this.errorBars._trace = this;\n    this.scene.glplot.add(this.errorBars);\n  }\n  if (options.delaunayAxis >= 0) {\n    var delaunayOptions = constructDelaunay(options.position, options.delaunayColor, options.delaunayAxis);\n    delaunayOptions.opacity = data.opacity;\n    if (this.delaunayMesh) {\n      this.delaunayMesh.update(delaunayOptions);\n    } else {\n      delaunayOptions.gl = gl;\n      this.delaunayMesh = createMesh(delaunayOptions);\n      this.delaunayMesh._trace = this;\n      this.scene.glplot.add(this.delaunayMesh);\n    }\n  } else if (this.delaunayMesh) {\n    this.scene.glplot.remove(this.delaunayMesh);\n    this.delaunayMesh.dispose();\n    this.delaunayMesh = null;\n  }\n};\nproto.dispose = function () {\n  if (this.linePlot) {\n    this.scene.glplot.remove(this.linePlot);\n    this.linePlot.dispose();\n  }\n  if (this.scatterPlot) {\n    this.scene.glplot.remove(this.scatterPlot);\n    this.scatterPlot.dispose();\n  }\n  if (this.errorBars) {\n    this.scene.glplot.remove(this.errorBars);\n    this.errorBars.dispose();\n  }\n  if (this.textMarkers) {\n    this.scene.glplot.remove(this.textMarkers);\n    this.textMarkers.dispose();\n  }\n  if (this.delaunayMesh) {\n    this.scene.glplot.remove(this.delaunayMesh);\n    this.delaunayMesh.dispose();\n  }\n};\nfunction createLineWithMarkers(scene, data) {\n  var plot = new LineWithMarkers(scene, data.uid);\n  plot.update(data);\n  return plot;\n}\nmodule.exports = createLineWithMarkers;\n\n/***/ }),\n\n/***/ 21428:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3179790__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_3179790__(73972);\nvar Lib = __nested_webpack_require_3179790__(71828);\nvar subTypes = __nested_webpack_require_3179790__(34098);\nvar handleMarkerDefaults = __nested_webpack_require_3179790__(49508);\nvar handleLineDefaults = __nested_webpack_require_3179790__(11058);\nvar handleTextDefaults = __nested_webpack_require_3179790__(82410);\nvar attributes = __nested_webpack_require_3179790__(44542);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var len = handleXYZDefaults(traceIn, traceOut, coerce, layout);\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  coerce('text');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  coerce('zhoverformat');\n  coerce('mode');\n  if (subTypes.hasLines(traceOut)) {\n    coerce('connectgaps');\n    handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce);\n  }\n  if (subTypes.hasMarkers(traceOut)) {\n    handleMarkerDefaults(traceIn, traceOut, defaultColor, layout, coerce, {\n      noSelect: true,\n      noAngle: true\n    });\n  }\n  if (subTypes.hasText(traceOut)) {\n    coerce('texttemplate');\n    handleTextDefaults(traceIn, traceOut, layout, coerce, {\n      noSelect: true\n    });\n  }\n  var lineColor = (traceOut.line || {}).color;\n  var markerColor = (traceOut.marker || {}).color;\n  if (coerce('surfaceaxis') >= 0) coerce('surfacecolor', lineColor || markerColor);\n  var dims = ['x', 'y', 'z'];\n  for (var i = 0; i < 3; ++i) {\n    var projection = 'projection.' + dims[i];\n    if (coerce(projection + '.show')) {\n      coerce(projection + '.opacity');\n      coerce(projection + '.scale');\n    }\n  }\n  var errorBarsSupplyDefaults = Registry.getComponentMethod('errorbars', 'supplyDefaults');\n  errorBarsSupplyDefaults(traceIn, traceOut, lineColor || markerColor || defaultColor, {\n    axis: 'z'\n  });\n  errorBarsSupplyDefaults(traceIn, traceOut, lineColor || markerColor || defaultColor, {\n    axis: 'y',\n    inherit: 'z'\n  });\n  errorBarsSupplyDefaults(traceIn, traceOut, lineColor || markerColor || defaultColor, {\n    axis: 'x',\n    inherit: 'z'\n  });\n};\nfunction handleXYZDefaults(traceIn, traceOut, coerce, layout) {\n  var len = 0;\n  var x = coerce('x');\n  var y = coerce('y');\n  var z = coerce('z');\n  var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults');\n  handleCalendarDefaults(traceIn, traceOut, ['x', 'y', 'z'], layout);\n  if (x && y && z) {\n    // TODO: what happens if one is missing?\n    len = Math.min(x.length, y.length, z.length);\n    traceOut._length = traceOut._xlength = traceOut._ylength = traceOut._zlength = len;\n  }\n  return len;\n}\n\n/***/ }),\n\n/***/ 13551:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3182590__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  plot: __nested_webpack_require_3182590__(58925),\n  attributes: __nested_webpack_require_3182590__(44542),\n  markerSymbols: __nested_webpack_require_3182590__(87381),\n  supplyDefaults: __nested_webpack_require_3182590__(21428),\n  colorbar: [{\n    container: 'marker',\n    min: 'cmin',\n    max: 'cmax'\n  }, {\n    container: 'line',\n    min: 'cmin',\n    max: 'cmax'\n  }],\n  calc: __nested_webpack_require_3182590__(36563),\n  moduleType: 'trace',\n  name: 'scatter3d',\n  basePlotModule: __nested_webpack_require_3182590__(58547),\n  categories: ['gl3d', 'symbols', 'showLegend', 'scatter-like'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 97001:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3183240__) {\n\n\"use strict\";\n\n\nvar scatterAttrs = __nested_webpack_require_3183240__(82196);\nvar baseAttrs = __nested_webpack_require_3183240__(9012);\nvar hovertemplateAttrs = (__nested_webpack_require_3183240__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_3183240__(5386)/* .texttemplateAttrs */ .s);\nvar colorScaleAttrs = __nested_webpack_require_3183240__(50693);\nvar extendFlat = (__nested_webpack_require_3183240__(1426).extendFlat);\nvar scatterMarkerAttrs = scatterAttrs.marker;\nvar scatterLineAttrs = scatterAttrs.line;\nvar scatterMarkerLineAttrs = scatterMarkerAttrs.line;\nmodule.exports = {\n  carpet: {\n    valType: 'string',\n    editType: 'calc'\n  },\n  a: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  b: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  mode: extendFlat({}, scatterAttrs.mode, {\n    dflt: 'markers'\n  }),\n  text: extendFlat({}, scatterAttrs.text, {}),\n  texttemplate: texttemplateAttrs({\n    editType: 'plot'\n  }, {\n    keys: ['a', 'b', 'text']\n  }),\n  hovertext: extendFlat({}, scatterAttrs.hovertext, {}),\n  line: {\n    color: scatterLineAttrs.color,\n    width: scatterLineAttrs.width,\n    dash: scatterLineAttrs.dash,\n    backoff: scatterLineAttrs.backoff,\n    shape: extendFlat({}, scatterLineAttrs.shape, {\n      values: ['linear', 'spline']\n    }),\n    smoothing: scatterLineAttrs.smoothing,\n    editType: 'calc'\n  },\n  connectgaps: scatterAttrs.connectgaps,\n  fill: extendFlat({}, scatterAttrs.fill, {\n    values: ['none', 'toself', 'tonext'],\n    dflt: 'none'\n  }),\n  fillcolor: scatterAttrs.fillcolor,\n  marker: extendFlat({\n    symbol: scatterMarkerAttrs.symbol,\n    opacity: scatterMarkerAttrs.opacity,\n    maxdisplayed: scatterMarkerAttrs.maxdisplayed,\n    angle: scatterMarkerAttrs.angle,\n    angleref: scatterMarkerAttrs.angleref,\n    standoff: scatterMarkerAttrs.standoff,\n    size: scatterMarkerAttrs.size,\n    sizeref: scatterMarkerAttrs.sizeref,\n    sizemin: scatterMarkerAttrs.sizemin,\n    sizemode: scatterMarkerAttrs.sizemode,\n    line: extendFlat({\n      width: scatterMarkerLineAttrs.width,\n      editType: 'calc'\n    }, colorScaleAttrs('marker.line')),\n    gradient: scatterMarkerAttrs.gradient,\n    editType: 'calc'\n  }, colorScaleAttrs('marker')),\n  textfont: scatterAttrs.textfont,\n  textposition: scatterAttrs.textposition,\n  selected: scatterAttrs.selected,\n  unselected: scatterAttrs.unselected,\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {\n    flags: ['a', 'b', 'text', 'name']\n  }),\n  hoveron: scatterAttrs.hoveron,\n  hovertemplate: hovertemplateAttrs()\n};\n\n/***/ }),\n\n/***/ 34618:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3185816__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_3185816__(92770);\nvar calcColorscale = __nested_webpack_require_3185816__(36922);\nvar arraysToCalcdata = __nested_webpack_require_3185816__(75225);\nvar calcSelection = __nested_webpack_require_3185816__(66279);\nvar calcMarkerSize = (__nested_webpack_require_3185816__(47761).calcMarkerSize);\nvar lookupCarpet = __nested_webpack_require_3185816__(22882);\nmodule.exports = function calc(gd, trace) {\n  var carpet = trace._carpetTrace = lookupCarpet(gd, trace);\n  if (!carpet || !carpet.visible || carpet.visible === 'legendonly') return;\n  var i;\n\n  // Transfer this over from carpet before plotting since this is a necessary\n  // condition in order for cartesian to actually plot this trace:\n  trace.xaxis = carpet.xaxis;\n  trace.yaxis = carpet.yaxis;\n\n  // make the calcdata array\n  var serieslen = trace._length;\n  var cd = new Array(serieslen);\n  var a, b;\n  var needsCull = false;\n  for (i = 0; i < serieslen; i++) {\n    a = trace.a[i];\n    b = trace.b[i];\n    if (isNumeric(a) && isNumeric(b)) {\n      var xy = carpet.ab2xy(+a, +b, true);\n      var visible = carpet.isVisible(+a, +b);\n      if (!visible) needsCull = true;\n      cd[i] = {\n        x: xy[0],\n        y: xy[1],\n        a: a,\n        b: b,\n        vis: visible\n      };\n    } else cd[i] = {\n      x: false,\n      y: false\n    };\n  }\n  trace._needsCull = needsCull;\n  cd[0].carpet = carpet;\n  cd[0].trace = trace;\n  calcMarkerSize(trace, serieslen);\n  calcColorscale(gd, trace);\n  arraysToCalcdata(cd, trace);\n  calcSelection(cd, trace);\n  return cd;\n};\n\n/***/ }),\n\n/***/ 98965:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3187402__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3187402__(71828);\nvar constants = __nested_webpack_require_3187402__(47581);\nvar subTypes = __nested_webpack_require_3187402__(34098);\nvar handleMarkerDefaults = __nested_webpack_require_3187402__(49508);\nvar handleLineDefaults = __nested_webpack_require_3187402__(11058);\nvar handleLineShapeDefaults = __nested_webpack_require_3187402__(94039);\nvar handleTextDefaults = __nested_webpack_require_3187402__(82410);\nvar handleFillColorDefaults = __nested_webpack_require_3187402__(28908);\nvar attributes = __nested_webpack_require_3187402__(97001);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  coerce('carpet');\n\n  // XXX: Don't hard code this\n  traceOut.xaxis = 'x';\n  traceOut.yaxis = 'y';\n  var a = coerce('a');\n  var b = coerce('b');\n  var len = Math.min(a.length, b.length);\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  traceOut._length = len;\n  coerce('text');\n  coerce('texttemplate');\n  coerce('hovertext');\n  var defaultMode = len < constants.PTS_LINESONLY ? 'lines+markers' : 'lines';\n  coerce('mode', defaultMode);\n  if (subTypes.hasLines(traceOut)) {\n    handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce, {\n      backoff: true\n    });\n    handleLineShapeDefaults(traceIn, traceOut, coerce);\n    coerce('connectgaps');\n  }\n  if (subTypes.hasMarkers(traceOut)) {\n    handleMarkerDefaults(traceIn, traceOut, defaultColor, layout, coerce, {\n      gradient: true\n    });\n  }\n  if (subTypes.hasText(traceOut)) {\n    handleTextDefaults(traceIn, traceOut, layout, coerce);\n  }\n  var dfltHoverOn = [];\n  if (subTypes.hasMarkers(traceOut) || subTypes.hasText(traceOut)) {\n    coerce('marker.maxdisplayed');\n    dfltHoverOn.push('points');\n  }\n  coerce('fill');\n  if (traceOut.fill !== 'none') {\n    handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce);\n    if (!subTypes.hasLines(traceOut)) handleLineShapeDefaults(traceIn, traceOut, coerce);\n  }\n  if (traceOut.fill === 'tonext' || traceOut.fill === 'toself') {\n    dfltHoverOn.push('fills');\n  }\n  var hoverOn = coerce('hoveron', dfltHoverOn.join('+') || 'points');\n  if (hoverOn !== 'fills') coerce('hovertemplate');\n  Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n};\n\n/***/ }),\n\n/***/ 16165:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function eventData(out, pt, trace, cd, pointNumber) {\n  var cdi = cd[pointNumber];\n  out.a = cdi.a;\n  out.b = cdi.b;\n  out.y = cdi.y;\n  return out;\n};\n\n/***/ }),\n\n/***/ 48953:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function formatLabels(cdi, trace) {\n  var labels = {};\n  var carpet = trace._carpet;\n  var ij = carpet.ab2ij([cdi.a, cdi.b]);\n  var i0 = Math.floor(ij[0]);\n  var ti = ij[0] - i0;\n  var j0 = Math.floor(ij[1]);\n  var tj = ij[1] - j0;\n  var xy = carpet.evalxy([], i0, j0, ti, tj);\n  labels.yLabel = xy[1].toFixed(3);\n  return labels;\n};\n\n/***/ }),\n\n/***/ 22931:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3190389__) {\n\n\"use strict\";\n\n\nvar scatterHover = __nested_webpack_require_3190389__(33720);\nvar fillText = (__nested_webpack_require_3190389__(71828).fillText);\nmodule.exports = function hoverPoints(pointData, xval, yval, hovermode) {\n  var scatterPointData = scatterHover(pointData, xval, yval, hovermode);\n  if (!scatterPointData || scatterPointData[0].index === false) return;\n  var newPointData = scatterPointData[0];\n\n  // if hovering on a fill, we don't show any point data so the label is\n  // unchanged from what scatter gives us - except that it needs to\n  // be constrained to the trianglular plot area, not just the rectangular\n  // area defined by the synthetic x and y axes\n  // TODO: in some cases the vertical middle of the shape is not within\n  // the triangular viewport at all, so the label can become disconnected\n  // from the shape entirely. But calculating what portion of the shape\n  // is actually visible, as constrained by the diagonal axis lines, is not\n  // so easy and anyway we lost the information we would have needed to do\n  // this inside scatterHover.\n  if (newPointData.index === undefined) {\n    var yFracUp = 1 - newPointData.y0 / pointData.ya._length;\n    var xLen = pointData.xa._length;\n    var xMin = xLen * yFracUp / 2;\n    var xMax = xLen - xMin;\n    newPointData.x0 = Math.max(Math.min(newPointData.x0, xMax), xMin);\n    newPointData.x1 = Math.max(Math.min(newPointData.x1, xMax), xMin);\n    return scatterPointData;\n  }\n  var cdi = newPointData.cd[newPointData.index];\n  newPointData.a = cdi.a;\n  newPointData.b = cdi.b;\n  newPointData.xLabelVal = undefined;\n  newPointData.yLabelVal = undefined;\n  // TODO: nice formatting, and label by axis title, for a, b, and c?\n\n  var trace = newPointData.trace;\n  var carpet = trace._carpet;\n  var labels = trace._module.formatLabels(cdi, trace);\n  newPointData.yLabel = labels.yLabel;\n  delete newPointData.text;\n  var text = [];\n  function textPart(ax, val) {\n    var prefix;\n    if (ax.labelprefix && ax.labelprefix.length > 0) {\n      prefix = ax.labelprefix.replace(/ = $/, '');\n    } else {\n      prefix = ax._hovertitle;\n    }\n    text.push(prefix + ': ' + val.toFixed(3) + ax.labelsuffix);\n  }\n  if (!trace.hovertemplate) {\n    var hoverinfo = cdi.hi || trace.hoverinfo;\n    var parts = hoverinfo.split('+');\n    if (parts.indexOf('all') !== -1) parts = ['a', 'b', 'text'];\n    if (parts.indexOf('a') !== -1) textPart(carpet.aaxis, cdi.a);\n    if (parts.indexOf('b') !== -1) textPart(carpet.baxis, cdi.b);\n    text.push('y: ' + newPointData.yLabel);\n    if (parts.indexOf('text') !== -1) {\n      fillText(cdi, trace, text);\n    }\n    newPointData.extraText = text.join('<br>');\n  }\n  return scatterPointData;\n};\n\n/***/ }),\n\n/***/ 46858:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3193150__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_3193150__(97001),\n  supplyDefaults: __nested_webpack_require_3193150__(98965),\n  colorbar: __nested_webpack_require_3193150__(4898),\n  formatLabels: __nested_webpack_require_3193150__(48953),\n  calc: __nested_webpack_require_3193150__(34618),\n  plot: __nested_webpack_require_3193150__(1913),\n  style: (__nested_webpack_require_3193150__(16296).style),\n  styleOnSelect: (__nested_webpack_require_3193150__(16296).styleOnSelect),\n  hoverPoints: __nested_webpack_require_3193150__(22931),\n  selectPoints: __nested_webpack_require_3193150__(98002),\n  eventData: __nested_webpack_require_3193150__(16165),\n  moduleType: 'trace',\n  name: 'scattercarpet',\n  basePlotModule: __nested_webpack_require_3193150__(93612),\n  categories: ['svg', 'carpet', 'symbols', 'showLegend', 'carpetDependent', 'zoomScale'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 1913:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3193957__) {\n\n\"use strict\";\n\n\nvar scatterPlot = __nested_webpack_require_3193957__(32663);\nvar Axes = __nested_webpack_require_3193957__(89298);\nvar Drawing = __nested_webpack_require_3193957__(91424);\nmodule.exports = function plot(gd, plotinfoproxy, data, layer) {\n  var i, trace, node;\n  var carpet = data[0][0].carpet;\n  var xaxis = Axes.getFromId(gd, carpet.xaxis || 'x');\n  var yaxis = Axes.getFromId(gd, carpet.yaxis || 'y');\n\n  // mimic cartesian plotinfo\n  var plotinfo = {\n    xaxis: xaxis,\n    yaxis: yaxis,\n    plot: plotinfoproxy.plot\n  };\n  for (i = 0; i < data.length; i++) {\n    trace = data[i][0].trace;\n    trace._xA = xaxis;\n    trace._yA = yaxis;\n  }\n  scatterPlot(gd, plotinfo, data, layer);\n  for (i = 0; i < data.length; i++) {\n    trace = data[i][0].trace;\n\n    // Note: .select is adequate but seems to mutate the node data,\n    // which is at least a bit surprising and causes problems elsewhere\n    node = layer.selectAll('g.trace' + trace.uid + ' .js-line');\n\n    // Note: it would be more efficient if this didn't need to be applied\n    // separately to all scattercarpet traces, but that would require\n    // lots of reorganization of scatter traces that is otherwise not\n    // necessary. That makes this a potential optimization.\n    Drawing.setClipUrl(node, data[i][0].carpet._clipPathId, gd);\n  }\n};\n\n/***/ }),\n\n/***/ 19316:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3195331__) {\n\n\"use strict\";\n\n\nvar hovertemplateAttrs = (__nested_webpack_require_3195331__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_3195331__(5386)/* .texttemplateAttrs */ .s);\nvar scatterAttrs = __nested_webpack_require_3195331__(82196);\nvar baseAttrs = __nested_webpack_require_3195331__(9012);\nvar colorAttributes = __nested_webpack_require_3195331__(50693);\nvar dash = (__nested_webpack_require_3195331__(79952)/* .dash */ .P);\nvar extendFlat = (__nested_webpack_require_3195331__(1426).extendFlat);\nvar overrideAll = (__nested_webpack_require_3195331__(30962).overrideAll);\nvar scatterMarkerAttrs = scatterAttrs.marker;\nvar scatterLineAttrs = scatterAttrs.line;\nvar scatterMarkerLineAttrs = scatterMarkerAttrs.line;\nmodule.exports = overrideAll({\n  lon: {\n    valType: 'data_array'\n  },\n  lat: {\n    valType: 'data_array'\n  },\n  locations: {\n    valType: 'data_array'\n  },\n  locationmode: {\n    valType: 'enumerated',\n    values: ['ISO-3', 'USA-states', 'country names', 'geojson-id'],\n    dflt: 'ISO-3'\n  },\n  geojson: {\n    valType: 'any',\n    editType: 'calc'\n  },\n  featureidkey: {\n    valType: 'string',\n    editType: 'calc',\n    dflt: 'id'\n  },\n  mode: extendFlat({}, scatterAttrs.mode, {\n    dflt: 'markers'\n  }),\n  text: extendFlat({}, scatterAttrs.text, {}),\n  texttemplate: texttemplateAttrs({\n    editType: 'plot'\n  }, {\n    keys: ['lat', 'lon', 'location', 'text']\n  }),\n  hovertext: extendFlat({}, scatterAttrs.hovertext, {}),\n  textfont: scatterAttrs.textfont,\n  textposition: scatterAttrs.textposition,\n  line: {\n    color: scatterLineAttrs.color,\n    width: scatterLineAttrs.width,\n    dash: dash\n  },\n  connectgaps: scatterAttrs.connectgaps,\n  marker: extendFlat({\n    symbol: scatterMarkerAttrs.symbol,\n    opacity: scatterMarkerAttrs.opacity,\n    angle: scatterMarkerAttrs.angle,\n    angleref: extendFlat({}, scatterMarkerAttrs.angleref, {\n      values: ['previous', 'up', 'north']\n    }),\n    standoff: scatterMarkerAttrs.standoff,\n    size: scatterMarkerAttrs.size,\n    sizeref: scatterMarkerAttrs.sizeref,\n    sizemin: scatterMarkerAttrs.sizemin,\n    sizemode: scatterMarkerAttrs.sizemode,\n    colorbar: scatterMarkerAttrs.colorbar,\n    line: extendFlat({\n      width: scatterMarkerLineAttrs.width\n    }, colorAttributes('marker.line')),\n    gradient: scatterMarkerAttrs.gradient\n  }, colorAttributes('marker')),\n  fill: {\n    valType: 'enumerated',\n    values: ['none', 'toself'],\n    dflt: 'none'\n  },\n  fillcolor: scatterAttrs.fillcolor,\n  selected: scatterAttrs.selected,\n  unselected: scatterAttrs.unselected,\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {\n    flags: ['lon', 'lat', 'location', 'text', 'name']\n  }),\n  hovertemplate: hovertemplateAttrs()\n}, 'calc', 'nested');\n\n/***/ }),\n\n/***/ 84622:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3198054__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_3198054__(92770);\nvar BADNUM = (__nested_webpack_require_3198054__(50606).BADNUM);\nvar calcMarkerColorscale = __nested_webpack_require_3198054__(36922);\nvar arraysToCalcdata = __nested_webpack_require_3198054__(75225);\nvar calcSelection = __nested_webpack_require_3198054__(66279);\nvar _ = (__nested_webpack_require_3198054__(71828)._);\nfunction isNonBlankString(v) {\n  return v && typeof v === 'string';\n}\nmodule.exports = function calc(gd, trace) {\n  var hasLocationData = Array.isArray(trace.locations);\n  var len = hasLocationData ? trace.locations.length : trace._length;\n  var calcTrace = new Array(len);\n  var isValidLoc;\n  if (trace.geojson) {\n    isValidLoc = function (v) {\n      return isNonBlankString(v) || isNumeric(v);\n    };\n  } else {\n    isValidLoc = isNonBlankString;\n  }\n  for (var i = 0; i < len; i++) {\n    var calcPt = calcTrace[i] = {};\n    if (hasLocationData) {\n      var loc = trace.locations[i];\n      calcPt.loc = isValidLoc(loc) ? loc : null;\n    } else {\n      var lon = trace.lon[i];\n      var lat = trace.lat[i];\n      if (isNumeric(lon) && isNumeric(lat)) calcPt.lonlat = [+lon, +lat];else calcPt.lonlat = [BADNUM, BADNUM];\n    }\n  }\n  arraysToCalcdata(calcTrace, trace);\n  calcMarkerColorscale(gd, trace);\n  calcSelection(calcTrace, trace);\n  if (len) {\n    calcTrace[0].t = {\n      labels: {\n        lat: _(gd, 'lat:') + ' ',\n        lon: _(gd, 'lon:') + ' '\n      }\n    };\n  }\n  return calcTrace;\n};\n\n/***/ }),\n\n/***/ 10659:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3199557__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3199557__(71828);\nvar subTypes = __nested_webpack_require_3199557__(34098);\nvar handleMarkerDefaults = __nested_webpack_require_3199557__(49508);\nvar handleLineDefaults = __nested_webpack_require_3199557__(11058);\nvar handleTextDefaults = __nested_webpack_require_3199557__(82410);\nvar handleFillColorDefaults = __nested_webpack_require_3199557__(28908);\nvar attributes = __nested_webpack_require_3199557__(19316);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var locations = coerce('locations');\n  var len;\n  if (locations && locations.length) {\n    var geojson = coerce('geojson');\n    var locationmodeDflt;\n    if (typeof geojson === 'string' && geojson !== '' || Lib.isPlainObject(geojson)) {\n      locationmodeDflt = 'geojson-id';\n    }\n    var locationMode = coerce('locationmode', locationmodeDflt);\n    if (locationMode === 'geojson-id') {\n      coerce('featureidkey');\n    }\n    len = locations.length;\n  } else {\n    var lon = coerce('lon') || [];\n    var lat = coerce('lat') || [];\n    len = Math.min(lon.length, lat.length);\n  }\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  traceOut._length = len;\n  coerce('text');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  coerce('mode');\n  if (subTypes.hasLines(traceOut)) {\n    handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce);\n    coerce('connectgaps');\n  }\n  if (subTypes.hasMarkers(traceOut)) {\n    handleMarkerDefaults(traceIn, traceOut, defaultColor, layout, coerce, {\n      gradient: true\n    });\n  }\n  if (subTypes.hasText(traceOut)) {\n    coerce('texttemplate');\n    handleTextDefaults(traceIn, traceOut, layout, coerce);\n  }\n  coerce('fill');\n  if (traceOut.fill !== 'none') {\n    handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce);\n  }\n  Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n};\n\n/***/ }),\n\n/***/ 84084:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function eventData(out, pt, trace, cd, pointNumber) {\n  out.lon = pt.lon;\n  out.lat = pt.lat;\n  out.location = pt.loc ? pt.loc : null;\n\n  // include feature properties from input geojson\n  var cdi = cd[pointNumber];\n  if (cdi.fIn && cdi.fIn.properties) {\n    out.properties = cdi.fIn.properties;\n  }\n  return out;\n};\n\n/***/ }),\n\n/***/ 82719:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3201959__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_3201959__(89298);\nmodule.exports = function formatLabels(cdi, trace, fullLayout) {\n  var labels = {};\n  var geo = fullLayout[trace.geo]._subplot;\n  var ax = geo.mockAxis;\n  var lonlat = cdi.lonlat;\n  labels.lonLabel = Axes.tickText(ax, ax.c2l(lonlat[0]), true).text;\n  labels.latLabel = Axes.tickText(ax, ax.c2l(lonlat[1]), true).text;\n  return labels;\n};\n\n/***/ }),\n\n/***/ 14977:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3202451__) {\n\n\"use strict\";\n\n\nvar Fx = __nested_webpack_require_3202451__(30211);\nvar BADNUM = (__nested_webpack_require_3202451__(50606).BADNUM);\nvar getTraceColor = __nested_webpack_require_3202451__(34603);\nvar fillText = (__nested_webpack_require_3202451__(71828).fillText);\nvar attributes = __nested_webpack_require_3202451__(19316);\nmodule.exports = function hoverPoints(pointData, xval, yval) {\n  var cd = pointData.cd;\n  var trace = cd[0].trace;\n  var xa = pointData.xa;\n  var ya = pointData.ya;\n  var geo = pointData.subplot;\n  var isLonLatOverEdges = geo.projection.isLonLatOverEdges;\n  var project = geo.project;\n  function distFn(d) {\n    var lonlat = d.lonlat;\n    if (lonlat[0] === BADNUM) return Infinity;\n    if (isLonLatOverEdges(lonlat)) return Infinity;\n    var pt = project(lonlat);\n    var px = project([xval, yval]);\n    var dx = Math.abs(pt[0] - px[0]);\n    var dy = Math.abs(pt[1] - px[1]);\n    var rad = Math.max(3, d.mrc || 0);\n\n    // N.B. d.mrc is the calculated marker radius\n    // which is only set for trace with 'markers' mode.\n\n    return Math.max(Math.sqrt(dx * dx + dy * dy) - rad, 1 - 3 / rad);\n  }\n  Fx.getClosest(cd, distFn, pointData);\n\n  // skip the rest (for this trace) if we didn't find a close point\n  if (pointData.index === false) return;\n  var di = cd[pointData.index];\n  var lonlat = di.lonlat;\n  var pos = [xa.c2p(lonlat), ya.c2p(lonlat)];\n  var rad = di.mrc || 1;\n  pointData.x0 = pos[0] - rad;\n  pointData.x1 = pos[0] + rad;\n  pointData.y0 = pos[1] - rad;\n  pointData.y1 = pos[1] + rad;\n  pointData.loc = di.loc;\n  pointData.lon = lonlat[0];\n  pointData.lat = lonlat[1];\n  var fullLayout = {};\n  fullLayout[trace.geo] = {\n    _subplot: geo\n  };\n  var labels = trace._module.formatLabels(di, trace, fullLayout);\n  pointData.lonLabel = labels.lonLabel;\n  pointData.latLabel = labels.latLabel;\n  pointData.color = getTraceColor(trace, di);\n  pointData.extraText = getExtraText(trace, di, pointData, cd[0].t.labels);\n  pointData.hovertemplate = trace.hovertemplate;\n  return [pointData];\n};\nfunction getExtraText(trace, pt, pointData, labels) {\n  if (trace.hovertemplate) return;\n  var hoverinfo = pt.hi || trace.hoverinfo;\n  var parts = hoverinfo === 'all' ? attributes.hoverinfo.flags : hoverinfo.split('+');\n  var hasLocation = parts.indexOf('location') !== -1 && Array.isArray(trace.locations);\n  var hasLon = parts.indexOf('lon') !== -1;\n  var hasLat = parts.indexOf('lat') !== -1;\n  var hasText = parts.indexOf('text') !== -1;\n  var text = [];\n  function format(val) {\n    return val + '\\u00B0';\n  }\n  if (hasLocation) {\n    text.push(pt.loc);\n  } else if (hasLon && hasLat) {\n    text.push('(' + format(pointData.latLabel) + ', ' + format(pointData.lonLabel) + ')');\n  } else if (hasLon) {\n    text.push(labels.lon + format(pointData.lonLabel));\n  } else if (hasLat) {\n    text.push(labels.lat + format(pointData.latLabel));\n  }\n  if (hasText) {\n    fillText(pt, trace, text);\n  }\n  return text.join('<br>');\n}\n\n/***/ }),\n\n/***/ 17988:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3205427__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_3205427__(19316),\n  supplyDefaults: __nested_webpack_require_3205427__(10659),\n  colorbar: __nested_webpack_require_3205427__(4898),\n  formatLabels: __nested_webpack_require_3205427__(82719),\n  calc: __nested_webpack_require_3205427__(84622),\n  calcGeoJSON: (__nested_webpack_require_3205427__(89171).calcGeoJSON),\n  plot: (__nested_webpack_require_3205427__(89171).plot),\n  style: __nested_webpack_require_3205427__(33095),\n  styleOnSelect: (__nested_webpack_require_3205427__(16296).styleOnSelect),\n  hoverPoints: __nested_webpack_require_3205427__(14977),\n  eventData: __nested_webpack_require_3205427__(84084),\n  selectPoints: __nested_webpack_require_3205427__(20548),\n  moduleType: 'trace',\n  name: 'scattergeo',\n  basePlotModule: __nested_webpack_require_3205427__(44622),\n  categories: ['geo', 'symbols', 'showLegend', 'scatter-like'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 89171:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3206263__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_3206263__(39898);\nvar Lib = __nested_webpack_require_3206263__(71828);\nvar getTopojsonFeatures = (__nested_webpack_require_3206263__(90973).getTopojsonFeatures);\nvar geoJsonUtils = __nested_webpack_require_3206263__(18214);\nvar geoUtils = __nested_webpack_require_3206263__(41327);\nvar findExtremes = (__nested_webpack_require_3206263__(71739).findExtremes);\nvar BADNUM = (__nested_webpack_require_3206263__(50606).BADNUM);\nvar calcMarkerSize = (__nested_webpack_require_3206263__(47761).calcMarkerSize);\nvar subTypes = __nested_webpack_require_3206263__(34098);\nvar style = __nested_webpack_require_3206263__(33095);\nfunction plot(gd, geo, calcData) {\n  var scatterLayer = geo.layers.frontplot.select('.scatterlayer');\n  var gTraces = Lib.makeTraceGroups(scatterLayer, calcData, 'trace scattergeo');\n  function removeBADNUM(d, node) {\n    if (d.lonlat[0] === BADNUM) {\n      d3.select(node).remove();\n    }\n  }\n\n  // TODO find a way to order the inner nodes on update\n  gTraces.selectAll('*').remove();\n  gTraces.each(function (calcTrace) {\n    var s = d3.select(this);\n    var trace = calcTrace[0].trace;\n    if (subTypes.hasLines(trace) || trace.fill !== 'none') {\n      var lineCoords = geoJsonUtils.calcTraceToLineCoords(calcTrace);\n      var lineData = trace.fill !== 'none' ? geoJsonUtils.makePolygon(lineCoords) : geoJsonUtils.makeLine(lineCoords);\n      s.selectAll('path.js-line').data([{\n        geojson: lineData,\n        trace: trace\n      }]).enter().append('path').classed('js-line', true).style('stroke-miterlimit', 2);\n    }\n    if (subTypes.hasMarkers(trace)) {\n      s.selectAll('path.point').data(Lib.identity).enter().append('path').classed('point', true).each(function (calcPt) {\n        removeBADNUM(calcPt, this);\n      });\n    }\n    if (subTypes.hasText(trace)) {\n      s.selectAll('g').data(Lib.identity).enter().append('g').append('text').each(function (calcPt) {\n        removeBADNUM(calcPt, this);\n      });\n    }\n\n    // call style here within topojson request callback\n    style(gd, calcTrace);\n  });\n}\nfunction calcGeoJSON(calcTrace, fullLayout) {\n  var trace = calcTrace[0].trace;\n  var geoLayout = fullLayout[trace.geo];\n  var geo = geoLayout._subplot;\n  var len = trace._length;\n  var i, calcPt;\n  if (Array.isArray(trace.locations)) {\n    var locationmode = trace.locationmode;\n    var features = locationmode === 'geojson-id' ? geoUtils.extractTraceFeature(calcTrace) : getTopojsonFeatures(trace, geo.topojson);\n    for (i = 0; i < len; i++) {\n      calcPt = calcTrace[i];\n      var feature = locationmode === 'geojson-id' ? calcPt.fOut : geoUtils.locationToFeature(locationmode, calcPt.loc, features);\n      calcPt.lonlat = feature ? feature.properties.ct : [BADNUM, BADNUM];\n    }\n  }\n  var opts = {\n    padded: true\n  };\n  var lonArray;\n  var latArray;\n  if (geoLayout.fitbounds === 'geojson' && trace.locationmode === 'geojson-id') {\n    var bboxGeojson = geoUtils.computeBbox(geoUtils.getTraceGeojson(trace));\n    lonArray = [bboxGeojson[0], bboxGeojson[2]];\n    latArray = [bboxGeojson[1], bboxGeojson[3]];\n  } else {\n    lonArray = new Array(len);\n    latArray = new Array(len);\n    for (i = 0; i < len; i++) {\n      calcPt = calcTrace[i];\n      lonArray[i] = calcPt.lonlat[0];\n      latArray[i] = calcPt.lonlat[1];\n    }\n    opts.ppad = calcMarkerSize(trace, len);\n  }\n  trace._extremes.lon = findExtremes(geoLayout.lonaxis._ax, lonArray, opts);\n  trace._extremes.lat = findExtremes(geoLayout.lataxis._ax, latArray, opts);\n}\nmodule.exports = {\n  calcGeoJSON: calcGeoJSON,\n  plot: plot\n};\n\n/***/ }),\n\n/***/ 20548:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3209795__) {\n\n\"use strict\";\n\n\nvar subtypes = __nested_webpack_require_3209795__(34098);\nvar BADNUM = (__nested_webpack_require_3209795__(50606).BADNUM);\nmodule.exports = function selectPoints(searchInfo, selectionTester) {\n  var cd = searchInfo.cd;\n  var xa = searchInfo.xaxis;\n  var ya = searchInfo.yaxis;\n  var selection = [];\n  var trace = cd[0].trace;\n  var di, lonlat, x, y, i;\n  var hasOnlyLines = !subtypes.hasMarkers(trace) && !subtypes.hasText(trace);\n  if (hasOnlyLines) return [];\n  if (selectionTester === false) {\n    for (i = 0; i < cd.length; i++) {\n      cd[i].selected = 0;\n    }\n  } else {\n    for (i = 0; i < cd.length; i++) {\n      di = cd[i];\n      lonlat = di.lonlat;\n\n      // some projection types can't handle BADNUMs\n      if (lonlat[0] === BADNUM) continue;\n      x = xa.c2p(lonlat);\n      y = ya.c2p(lonlat);\n      if (selectionTester.contains([x, y], null, i, searchInfo)) {\n        selection.push({\n          pointNumber: i,\n          lon: lonlat[0],\n          lat: lonlat[1]\n        });\n        di.selected = 1;\n      } else {\n        di.selected = 0;\n      }\n    }\n  }\n  return selection;\n};\n\n/***/ }),\n\n/***/ 33095:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3210974__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_3210974__(39898);\nvar Drawing = __nested_webpack_require_3210974__(91424);\nvar Color = __nested_webpack_require_3210974__(7901);\nvar scatterStyle = __nested_webpack_require_3210974__(16296);\nvar stylePoints = scatterStyle.stylePoints;\nvar styleText = scatterStyle.styleText;\nmodule.exports = function style(gd, calcTrace) {\n  if (calcTrace) styleTrace(gd, calcTrace);\n};\nfunction styleTrace(gd, calcTrace) {\n  var trace = calcTrace[0].trace;\n  var s = calcTrace[0].node3;\n  s.style('opacity', calcTrace[0].trace.opacity);\n  stylePoints(s, trace, gd);\n  styleText(s, trace, gd);\n\n  // this part is incompatible with Drawing.lineGroupStyle\n  s.selectAll('path.js-line').style('fill', 'none').each(function (d) {\n    var path = d3.select(this);\n    var trace = d.trace;\n    var line = trace.line || {};\n    path.call(Color.stroke, line.color).call(Drawing.dashLine, line.dash || '', line.width || 0);\n    if (trace.fill !== 'none') {\n      path.call(Color.fill, trace.fillcolor);\n    }\n  });\n}\n\n/***/ }),\n\n/***/ 42341:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3212054__) {\n\n\"use strict\";\n\n\nvar baseAttrs = __nested_webpack_require_3212054__(9012);\nvar scatterAttrs = __nested_webpack_require_3212054__(82196);\nvar axisHoverFormat = (__nested_webpack_require_3212054__(12663).axisHoverFormat);\nvar colorScaleAttrs = __nested_webpack_require_3212054__(50693);\nvar sortObjectKeys = __nested_webpack_require_3212054__(78607);\nvar extendFlat = (__nested_webpack_require_3212054__(1426).extendFlat);\nvar overrideAll = (__nested_webpack_require_3212054__(30962).overrideAll);\nvar DASHES = (__nested_webpack_require_3212054__(78232).DASHES);\nvar scatterLineAttrs = scatterAttrs.line;\nvar scatterMarkerAttrs = scatterAttrs.marker;\nvar scatterMarkerLineAttrs = scatterMarkerAttrs.line;\nvar attrs = module.exports = overrideAll({\n  x: scatterAttrs.x,\n  x0: scatterAttrs.x0,\n  dx: scatterAttrs.dx,\n  y: scatterAttrs.y,\n  y0: scatterAttrs.y0,\n  dy: scatterAttrs.dy,\n  xperiod: scatterAttrs.xperiod,\n  yperiod: scatterAttrs.yperiod,\n  xperiod0: scatterAttrs.xperiod0,\n  yperiod0: scatterAttrs.yperiod0,\n  xperiodalignment: scatterAttrs.xperiodalignment,\n  yperiodalignment: scatterAttrs.yperiodalignment,\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  text: scatterAttrs.text,\n  hovertext: scatterAttrs.hovertext,\n  textposition: scatterAttrs.textposition,\n  textfont: scatterAttrs.textfont,\n  mode: {\n    valType: 'flaglist',\n    flags: ['lines', 'markers', 'text'],\n    extras: ['none']\n  },\n  line: {\n    color: scatterLineAttrs.color,\n    width: scatterLineAttrs.width,\n    shape: {\n      valType: 'enumerated',\n      values: ['linear', 'hv', 'vh', 'hvh', 'vhv'],\n      dflt: 'linear',\n      editType: 'plot'\n    },\n    dash: {\n      valType: 'enumerated',\n      values: sortObjectKeys(DASHES),\n      dflt: 'solid'\n    }\n  },\n  marker: extendFlat({}, colorScaleAttrs('marker'), {\n    symbol: scatterMarkerAttrs.symbol,\n    angle: scatterMarkerAttrs.angle,\n    size: scatterMarkerAttrs.size,\n    sizeref: scatterMarkerAttrs.sizeref,\n    sizemin: scatterMarkerAttrs.sizemin,\n    sizemode: scatterMarkerAttrs.sizemode,\n    opacity: scatterMarkerAttrs.opacity,\n    colorbar: scatterMarkerAttrs.colorbar,\n    line: extendFlat({}, colorScaleAttrs('marker.line'), {\n      width: scatterMarkerLineAttrs.width\n    })\n  }),\n  connectgaps: scatterAttrs.connectgaps,\n  fill: extendFlat({}, scatterAttrs.fill, {\n    dflt: 'none'\n  }),\n  fillcolor: scatterAttrs.fillcolor,\n  // no hoveron\n\n  selected: {\n    marker: scatterAttrs.selected.marker,\n    textfont: scatterAttrs.selected.textfont\n  },\n  unselected: {\n    marker: scatterAttrs.unselected.marker,\n    textfont: scatterAttrs.unselected.textfont\n  },\n  opacity: baseAttrs.opacity\n}, 'calc', 'nested');\nattrs.x.editType = attrs.y.editType = attrs.x0.editType = attrs.y0.editType = 'calc+clearAxisTypes';\nattrs.hovertemplate = scatterAttrs.hovertemplate;\nattrs.texttemplate = scatterAttrs.texttemplate;\n\n/***/ }),\n\n/***/ 72156:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3214924__) {\n\n\"use strict\";\n\n\nvar hover = __nested_webpack_require_3214924__(20794);\nmodule.exports = {\n  moduleType: 'trace',\n  name: 'scattergl',\n  basePlotModule: __nested_webpack_require_3214924__(93612),\n  categories: ['gl', 'regl', 'cartesian', 'symbols', 'errorBarsOK', 'showLegend', 'scatter-like'],\n  attributes: __nested_webpack_require_3214924__(42341),\n  supplyDefaults: __nested_webpack_require_3214924__(47148),\n  crossTraceDefaults: __nested_webpack_require_3214924__(34936),\n  colorbar: __nested_webpack_require_3214924__(4898),\n  formatLabels: __nested_webpack_require_3214924__(68101),\n  calc: __nested_webpack_require_3214924__(45032),\n  hoverPoints: hover.hoverPoints,\n  selectPoints: __nested_webpack_require_3214924__(58147),\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 45032:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3215636__) {\n\n\"use strict\";\n\n\nvar cluster = __nested_webpack_require_3215636__(88294);\nvar Lib = __nested_webpack_require_3215636__(71828);\nvar AxisIDs = __nested_webpack_require_3215636__(41675);\nvar findExtremes = (__nested_webpack_require_3215636__(71739).findExtremes);\nvar alignPeriod = __nested_webpack_require_3215636__(42973);\nvar scatterCalc = __nested_webpack_require_3215636__(47761);\nvar calcMarkerSize = scatterCalc.calcMarkerSize;\nvar calcAxisExpansion = scatterCalc.calcAxisExpansion;\nvar setFirstScatter = scatterCalc.setFirstScatter;\nvar calcColorscale = __nested_webpack_require_3215636__(36922);\nvar convert = __nested_webpack_require_3215636__(19635);\nvar sceneUpdate = __nested_webpack_require_3215636__(38967);\nvar BADNUM = (__nested_webpack_require_3215636__(50606).BADNUM);\nvar TOO_MANY_POINTS = (__nested_webpack_require_3215636__(78232).TOO_MANY_POINTS);\nmodule.exports = function calc(gd, trace) {\n  var fullLayout = gd._fullLayout;\n  var xa = trace._xA = AxisIDs.getFromId(gd, trace.xaxis, 'x');\n  var ya = trace._yA = AxisIDs.getFromId(gd, trace.yaxis, 'y');\n  var subplot = fullLayout._plots[trace.xaxis + trace.yaxis];\n  var len = trace._length;\n  var hasTooManyPoints = len >= TOO_MANY_POINTS;\n  var len2 = len * 2;\n  var stash = {};\n  var i;\n  var origX = xa.makeCalcdata(trace, 'x');\n  var origY = ya.makeCalcdata(trace, 'y');\n  var xObj = alignPeriod(trace, xa, 'x', origX);\n  var yObj = alignPeriod(trace, ya, 'y', origY);\n  var x = xObj.vals;\n  var y = yObj.vals;\n  trace._x = x;\n  trace._y = y;\n  if (trace.xperiodalignment) {\n    trace._origX = origX;\n    trace._xStarts = xObj.starts;\n    trace._xEnds = xObj.ends;\n  }\n  if (trace.yperiodalignment) {\n    trace._origY = origY;\n    trace._yStarts = yObj.starts;\n    trace._yEnds = yObj.ends;\n  }\n\n  // we need hi-precision for scatter2d,\n  // regl-scatter2d uses NaNs for bad/missing values\n  var positions = new Array(len2);\n  var _ids = new Array(len);\n  for (i = 0; i < len; i++) {\n    positions[i * 2] = x[i] === BADNUM ? NaN : x[i];\n    positions[i * 2 + 1] = y[i] === BADNUM ? NaN : y[i];\n    // Pre-compute ids.\n    _ids[i] = i;\n  }\n  if (xa.type === 'log') {\n    for (i = 0; i < len2; i += 2) {\n      positions[i] = xa.c2l(positions[i]);\n    }\n  }\n  if (ya.type === 'log') {\n    for (i = 1; i < len2; i += 2) {\n      positions[i] = ya.c2l(positions[i]);\n    }\n  }\n\n  // we don't build a tree for log axes since it takes long to convert log2px\n  // and it is also\n  if (hasTooManyPoints && xa.type !== 'log' && ya.type !== 'log') {\n    // FIXME: delegate this to webworker\n    stash.tree = cluster(positions);\n  } else {\n    stash.ids = _ids;\n  }\n\n  // create scene options and scene\n  calcColorscale(gd, trace);\n  var opts = sceneOptions(gd, subplot, trace, positions, x, y);\n  var scene = sceneUpdate(gd, subplot);\n\n  // Reuse SVG scatter axis expansion routine.\n  // For graphs with very large number of points and array marker.size,\n  // use average marker size instead to speed things up.\n  setFirstScatter(fullLayout, trace);\n  var ppad;\n  if (!hasTooManyPoints) {\n    ppad = calcMarkerSize(trace, len);\n  } else if (opts.marker) {\n    ppad = opts.marker.sizeAvg || Math.max(opts.marker.size, 3);\n  }\n  calcAxisExpansion(gd, trace, xa, ya, x, y, ppad);\n  if (opts.errorX) expandForErrorBars(trace, xa, opts.errorX);\n  if (opts.errorY) expandForErrorBars(trace, ya, opts.errorY);\n\n  // set flags to create scene renderers\n  if (opts.fill && !scene.fill2d) scene.fill2d = true;\n  if (opts.marker && !scene.scatter2d) scene.scatter2d = true;\n  if (opts.line && !scene.line2d) scene.line2d = true;\n  if ((opts.errorX || opts.errorY) && !scene.error2d) scene.error2d = true;\n  if (opts.text && !scene.glText) scene.glText = true;\n  if (opts.marker) opts.marker.snap = len;\n  scene.lineOptions.push(opts.line);\n  scene.errorXOptions.push(opts.errorX);\n  scene.errorYOptions.push(opts.errorY);\n  scene.fillOptions.push(opts.fill);\n  scene.markerOptions.push(opts.marker);\n  scene.markerSelectedOptions.push(opts.markerSel);\n  scene.markerUnselectedOptions.push(opts.markerUnsel);\n  scene.textOptions.push(opts.text);\n  scene.textSelectedOptions.push(opts.textSel);\n  scene.textUnselectedOptions.push(opts.textUnsel);\n  scene.selectBatch.push([]);\n  scene.unselectBatch.push([]);\n  stash._scene = scene;\n  stash.index = scene.count;\n  stash.x = x;\n  stash.y = y;\n  stash.positions = positions;\n  scene.count++;\n  return [{\n    x: false,\n    y: false,\n    t: stash,\n    trace: trace\n  }];\n};\nfunction expandForErrorBars(trace, ax, opts) {\n  var extremes = trace._extremes[ax._id];\n  var errExt = findExtremes(ax, opts._bnds, {\n    padded: true\n  });\n  extremes.min = extremes.min.concat(errExt.min);\n  extremes.max = extremes.max.concat(errExt.max);\n}\nfunction sceneOptions(gd, subplot, trace, positions, x, y) {\n  var opts = convert.style(gd, trace);\n  if (opts.marker) {\n    opts.marker.positions = positions;\n  }\n  if (opts.line && positions.length > 1) {\n    Lib.extendFlat(opts.line, convert.linePositions(gd, trace, positions));\n  }\n  if (opts.errorX || opts.errorY) {\n    var errors = convert.errorBarPositions(gd, trace, positions, x, y);\n    if (opts.errorX) {\n      Lib.extendFlat(opts.errorX, errors.x);\n    }\n    if (opts.errorY) {\n      Lib.extendFlat(opts.errorY, errors.y);\n    }\n  }\n  if (opts.text) {\n    Lib.extendFlat(opts.text, {\n      positions: positions\n    }, convert.textPosition(gd, trace, opts.text, opts.marker));\n    Lib.extendFlat(opts.textSel, {\n      positions: positions\n    }, convert.textPosition(gd, trace, opts.text, opts.markerSel));\n    Lib.extendFlat(opts.textUnsel, {\n      positions: positions\n    }, convert.textPosition(gd, trace, opts.text, opts.markerUnsel));\n  }\n  return opts;\n}\n\n/***/ }),\n\n/***/ 78232:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar SYMBOL_SIZE = 20;\nmodule.exports = {\n  TOO_MANY_POINTS: 1e5,\n  SYMBOL_SDF_SIZE: 200,\n  SYMBOL_SIZE: SYMBOL_SIZE,\n  SYMBOL_STROKE: SYMBOL_SIZE / 20,\n  DOT_RE: /-dot/,\n  OPEN_RE: /-open/,\n  DASHES: {\n    solid: [1],\n    dot: [1, 1],\n    dash: [4, 1],\n    longdash: [8, 1],\n    dashdot: [4, 1, 1, 1],\n    longdashdot: [8, 1, 1, 1]\n  }\n};\n\n/***/ }),\n\n/***/ 19635:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3221683__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_3221683__(92770);\nvar svgSdf = __nested_webpack_require_3221683__(82019);\nvar rgba = __nested_webpack_require_3221683__(25075);\nvar Registry = __nested_webpack_require_3221683__(73972);\nvar Lib = __nested_webpack_require_3221683__(71828);\nvar Drawing = __nested_webpack_require_3221683__(91424);\nvar AxisIDs = __nested_webpack_require_3221683__(41675);\nvar formatColor = (__nested_webpack_require_3221683__(81697).formatColor);\nvar subTypes = __nested_webpack_require_3221683__(34098);\nvar makeBubbleSizeFn = __nested_webpack_require_3221683__(39984);\nvar helpers = __nested_webpack_require_3221683__(68645);\nvar constants = __nested_webpack_require_3221683__(78232);\nvar DESELECTDIM = (__nested_webpack_require_3221683__(37822).DESELECTDIM);\nvar TEXTOFFSETSIGN = {\n  start: 1,\n  left: 1,\n  end: -1,\n  right: -1,\n  middle: 0,\n  center: 0,\n  bottom: 1,\n  top: -1\n};\nvar appendArrayPointValue = (__nested_webpack_require_3221683__(23469).appendArrayPointValue);\nfunction convertStyle(gd, trace) {\n  var i;\n  var opts = {\n    marker: undefined,\n    markerSel: undefined,\n    markerUnsel: undefined,\n    line: undefined,\n    fill: undefined,\n    errorX: undefined,\n    errorY: undefined,\n    text: undefined,\n    textSel: undefined,\n    textUnsel: undefined\n  };\n  var plotGlPixelRatio = gd._context.plotGlPixelRatio;\n  if (trace.visible !== true) return opts;\n  if (subTypes.hasText(trace)) {\n    opts.text = convertTextStyle(gd, trace);\n    opts.textSel = convertTextSelection(gd, trace, trace.selected);\n    opts.textUnsel = convertTextSelection(gd, trace, trace.unselected);\n  }\n  if (subTypes.hasMarkers(trace)) {\n    opts.marker = convertMarkerStyle(gd, trace);\n    opts.markerSel = convertMarkerSelection(gd, trace, trace.selected);\n    opts.markerUnsel = convertMarkerSelection(gd, trace, trace.unselected);\n    if (!trace.unselected && Lib.isArrayOrTypedArray(trace.marker.opacity)) {\n      var mo = trace.marker.opacity;\n      opts.markerUnsel.opacity = new Array(mo.length);\n      for (i = 0; i < mo.length; i++) {\n        opts.markerUnsel.opacity[i] = DESELECTDIM * mo[i];\n      }\n    }\n  }\n  if (subTypes.hasLines(trace)) {\n    opts.line = {\n      overlay: true,\n      thickness: trace.line.width * plotGlPixelRatio,\n      color: trace.line.color,\n      opacity: trace.opacity\n    };\n    var dashes = (constants.DASHES[trace.line.dash] || [1]).slice();\n    for (i = 0; i < dashes.length; ++i) {\n      dashes[i] *= trace.line.width * plotGlPixelRatio;\n    }\n    opts.line.dashes = dashes;\n  }\n  if (trace.error_x && trace.error_x.visible) {\n    opts.errorX = convertErrorBarStyle(trace, trace.error_x, plotGlPixelRatio);\n  }\n  if (trace.error_y && trace.error_y.visible) {\n    opts.errorY = convertErrorBarStyle(trace, trace.error_y, plotGlPixelRatio);\n  }\n  if (!!trace.fill && trace.fill !== 'none') {\n    opts.fill = {\n      closed: true,\n      fill: trace.fillcolor,\n      thickness: 0\n    };\n  }\n  return opts;\n}\nfunction convertTextStyle(gd, trace) {\n  var fullLayout = gd._fullLayout;\n  var count = trace._length;\n  var textfontIn = trace.textfont;\n  var textpositionIn = trace.textposition;\n  var textPos = Array.isArray(textpositionIn) ? textpositionIn : [textpositionIn];\n  var tfc = textfontIn.color;\n  var tfs = textfontIn.size;\n  var tff = textfontIn.family;\n  var optsOut = {};\n  var i;\n  var plotGlPixelRatio = gd._context.plotGlPixelRatio;\n  var texttemplate = trace.texttemplate;\n  if (texttemplate) {\n    optsOut.text = [];\n    var d3locale = fullLayout._d3locale;\n    var isArray = Array.isArray(texttemplate);\n    var N = isArray ? Math.min(texttemplate.length, count) : count;\n    var txt = isArray ? function (i) {\n      return texttemplate[i];\n    } : function () {\n      return texttemplate;\n    };\n    for (i = 0; i < N; i++) {\n      var d = {\n        i: i\n      };\n      var labels = trace._module.formatLabels(d, trace, fullLayout);\n      var pointValues = {};\n      appendArrayPointValue(pointValues, trace, i);\n      var meta = trace._meta || {};\n      optsOut.text.push(Lib.texttemplateString(txt(i), labels, d3locale, pointValues, d, meta));\n    }\n  } else {\n    if (Array.isArray(trace.text) && trace.text.length < count) {\n      // if text array is shorter, we'll need to append to it, so let's slice to prevent mutating\n      optsOut.text = trace.text.slice();\n    } else {\n      optsOut.text = trace.text;\n    }\n  }\n  // pad text array with empty strings\n  if (Array.isArray(optsOut.text)) {\n    for (i = optsOut.text.length; i < count; i++) {\n      optsOut.text[i] = '';\n    }\n  }\n  optsOut.opacity = trace.opacity;\n  optsOut.font = {};\n  optsOut.align = [];\n  optsOut.baseline = [];\n  for (i = 0; i < textPos.length; i++) {\n    var tp = textPos[i].split(/\\s+/);\n    switch (tp[1]) {\n      case 'left':\n        optsOut.align.push('right');\n        break;\n      case 'right':\n        optsOut.align.push('left');\n        break;\n      default:\n        optsOut.align.push(tp[1]);\n    }\n    switch (tp[0]) {\n      case 'top':\n        optsOut.baseline.push('bottom');\n        break;\n      case 'bottom':\n        optsOut.baseline.push('top');\n        break;\n      default:\n        optsOut.baseline.push(tp[0]);\n    }\n  }\n  if (Array.isArray(tfc)) {\n    optsOut.color = new Array(count);\n    for (i = 0; i < count; i++) {\n      optsOut.color[i] = tfc[i];\n    }\n  } else {\n    optsOut.color = tfc;\n  }\n  if (Lib.isArrayOrTypedArray(tfs) || Array.isArray(tff)) {\n    // if any textfont param is array - make render a batch\n    optsOut.font = new Array(count);\n    for (i = 0; i < count; i++) {\n      var fonti = optsOut.font[i] = {};\n      fonti.size = (Lib.isTypedArray(tfs) ? tfs[i] : Array.isArray(tfs) ? isNumeric(tfs[i]) ? tfs[i] : 0 : tfs) * plotGlPixelRatio;\n      fonti.family = Array.isArray(tff) ? tff[i] : tff;\n    }\n  } else {\n    // if both are single values, make render fast single-value\n    optsOut.font = {\n      size: tfs * plotGlPixelRatio,\n      family: tff\n    };\n  }\n  return optsOut;\n}\nfunction convertMarkerStyle(gd, trace) {\n  var count = trace._length;\n  var optsIn = trace.marker;\n  var optsOut = {};\n  var i;\n  var multiSymbol = Lib.isArrayOrTypedArray(optsIn.symbol);\n  var multiAngle = Lib.isArrayOrTypedArray(optsIn.angle);\n  var multiColor = Lib.isArrayOrTypedArray(optsIn.color);\n  var multiLineColor = Lib.isArrayOrTypedArray(optsIn.line.color);\n  var multiOpacity = Lib.isArrayOrTypedArray(optsIn.opacity);\n  var multiSize = Lib.isArrayOrTypedArray(optsIn.size);\n  var multiLineWidth = Lib.isArrayOrTypedArray(optsIn.line.width);\n  var isOpen;\n  if (!multiSymbol) isOpen = helpers.isOpenSymbol(optsIn.symbol);\n\n  // prepare colors\n  if (multiSymbol || multiColor || multiLineColor || multiOpacity || multiAngle) {\n    optsOut.symbols = new Array(count);\n    optsOut.angles = new Array(count);\n    optsOut.colors = new Array(count);\n    optsOut.borderColors = new Array(count);\n    var symbols = optsIn.symbol;\n    var angles = optsIn.angle;\n    var colors = formatColor(optsIn, optsIn.opacity, count);\n    var borderColors = formatColor(optsIn.line, optsIn.opacity, count);\n    if (!Array.isArray(borderColors[0])) {\n      var borderColor = borderColors;\n      borderColors = Array(count);\n      for (i = 0; i < count; i++) {\n        borderColors[i] = borderColor;\n      }\n    }\n    if (!Array.isArray(colors[0])) {\n      var color = colors;\n      colors = Array(count);\n      for (i = 0; i < count; i++) {\n        colors[i] = color;\n      }\n    }\n    if (!Array.isArray(symbols)) {\n      var symbol = symbols;\n      symbols = Array(count);\n      for (i = 0; i < count; i++) {\n        symbols[i] = symbol;\n      }\n    }\n    if (!Array.isArray(angles)) {\n      var angle = angles;\n      angles = Array(count);\n      for (i = 0; i < count; i++) {\n        angles[i] = angle;\n      }\n    }\n    optsOut.symbols = symbols;\n    optsOut.angles = angles;\n    optsOut.colors = colors;\n    optsOut.borderColors = borderColors;\n    for (i = 0; i < count; i++) {\n      if (multiSymbol) {\n        isOpen = helpers.isOpenSymbol(optsIn.symbol[i]);\n      }\n      if (isOpen) {\n        borderColors[i] = colors[i].slice();\n        colors[i] = colors[i].slice();\n        colors[i][3] = 0;\n      }\n    }\n    optsOut.opacity = trace.opacity;\n    optsOut.markers = new Array(count);\n    for (i = 0; i < count; i++) {\n      optsOut.markers[i] = getSymbolSdf({\n        mx: optsOut.symbols[i],\n        ma: optsOut.angles[i]\n      }, trace);\n    }\n  } else {\n    if (isOpen) {\n      optsOut.color = rgba(optsIn.color, 'uint8');\n      optsOut.color[3] = 0;\n      optsOut.borderColor = rgba(optsIn.color, 'uint8');\n    } else {\n      optsOut.color = rgba(optsIn.color, 'uint8');\n      optsOut.borderColor = rgba(optsIn.line.color, 'uint8');\n    }\n    optsOut.opacity = trace.opacity * optsIn.opacity;\n    optsOut.marker = getSymbolSdf({\n      mx: optsIn.symbol,\n      ma: optsIn.angle\n    }, trace);\n  }\n\n  // prepare sizes\n  var sizeFactor = 1;\n  var markerSizeFunc = makeBubbleSizeFn(trace, sizeFactor);\n  var s;\n  if (multiSize || multiLineWidth) {\n    var sizes = optsOut.sizes = new Array(count);\n    var borderSizes = optsOut.borderSizes = new Array(count);\n    var sizeTotal = 0;\n    var sizeAvg;\n    if (multiSize) {\n      for (i = 0; i < count; i++) {\n        sizes[i] = markerSizeFunc(optsIn.size[i]);\n        sizeTotal += sizes[i];\n      }\n      sizeAvg = sizeTotal / count;\n    } else {\n      s = markerSizeFunc(optsIn.size);\n      for (i = 0; i < count; i++) {\n        sizes[i] = s;\n      }\n    }\n\n    // See  https://github.com/plotly/plotly.js/pull/1781#discussion_r121820798\n    if (multiLineWidth) {\n      for (i = 0; i < count; i++) {\n        borderSizes[i] = optsIn.line.width[i];\n      }\n    } else {\n      s = optsIn.line.width;\n      for (i = 0; i < count; i++) {\n        borderSizes[i] = s;\n      }\n    }\n    optsOut.sizeAvg = sizeAvg;\n  } else {\n    optsOut.size = markerSizeFunc(optsIn && optsIn.size || 10);\n    optsOut.borderSizes = markerSizeFunc(optsIn.line.width);\n  }\n  return optsOut;\n}\nfunction convertMarkerSelection(gd, trace, target) {\n  var optsIn = trace.marker;\n  var optsOut = {};\n  if (!target) return optsOut;\n  if (target.marker && target.marker.symbol) {\n    optsOut = convertMarkerStyle(gd, Lib.extendFlat({}, optsIn, target.marker));\n  } else if (target.marker) {\n    if (target.marker.size) optsOut.size = target.marker.size;\n    if (target.marker.color) optsOut.colors = target.marker.color;\n    if (target.marker.opacity !== undefined) optsOut.opacity = target.marker.opacity;\n  }\n  return optsOut;\n}\nfunction convertTextSelection(gd, trace, target) {\n  var optsOut = {};\n  if (!target) return optsOut;\n  if (target.textfont) {\n    var optsIn = {\n      opacity: 1,\n      text: trace.text,\n      texttemplate: trace.texttemplate,\n      textposition: trace.textposition,\n      textfont: Lib.extendFlat({}, trace.textfont)\n    };\n    if (target.textfont) {\n      Lib.extendFlat(optsIn.textfont, target.textfont);\n    }\n    optsOut = convertTextStyle(gd, optsIn);\n  }\n  return optsOut;\n}\nfunction convertErrorBarStyle(trace, target, plotGlPixelRatio) {\n  var optsOut = {\n    capSize: target.width * 2 * plotGlPixelRatio,\n    lineWidth: target.thickness * plotGlPixelRatio,\n    color: target.color\n  };\n  if (target.copy_ystyle) {\n    optsOut = trace.error_y;\n  }\n  return optsOut;\n}\nvar SYMBOL_SDF_SIZE = constants.SYMBOL_SDF_SIZE;\nvar SYMBOL_SIZE = constants.SYMBOL_SIZE;\nvar SYMBOL_STROKE = constants.SYMBOL_STROKE;\nvar SYMBOL_SDF = {};\nvar SYMBOL_SVG_CIRCLE = Drawing.symbolFuncs[0](SYMBOL_SIZE * 0.05);\nfunction getSymbolSdf(d, trace) {\n  var symbol = d.mx;\n  if (symbol === 'circle') return null;\n  var symbolPath, symbolSdf;\n  var symbolNumber = Drawing.symbolNumber(symbol);\n  var symbolFunc = Drawing.symbolFuncs[symbolNumber % 100];\n  var symbolNoDot = !!Drawing.symbolNoDot[symbolNumber % 100];\n  var symbolNoFill = !!Drawing.symbolNoFill[symbolNumber % 100];\n  var isDot = helpers.isDotSymbol(symbol);\n\n  // until we may handle angles in shader?\n  if (d.ma) symbol += '_' + d.ma;\n\n  // get symbol sdf from cache or generate it\n  if (SYMBOL_SDF[symbol]) return SYMBOL_SDF[symbol];\n  var angle = Drawing.getMarkerAngle(d, trace);\n  if (isDot && !symbolNoDot) {\n    symbolPath = symbolFunc(SYMBOL_SIZE * 1.1, angle) + SYMBOL_SVG_CIRCLE;\n  } else {\n    symbolPath = symbolFunc(SYMBOL_SIZE, angle);\n  }\n  symbolSdf = svgSdf(symbolPath, {\n    w: SYMBOL_SDF_SIZE,\n    h: SYMBOL_SDF_SIZE,\n    viewBox: [-SYMBOL_SIZE, -SYMBOL_SIZE, SYMBOL_SIZE, SYMBOL_SIZE],\n    stroke: symbolNoFill ? SYMBOL_STROKE : -SYMBOL_STROKE\n  });\n  SYMBOL_SDF[symbol] = symbolSdf;\n  return symbolSdf || null;\n}\nfunction convertLinePositions(gd, trace, positions) {\n  var len = positions.length;\n  var count = len / 2;\n  var linePositions;\n  var i;\n  if (subTypes.hasLines(trace) && count) {\n    if (trace.line.shape === 'hv') {\n      linePositions = [];\n      for (i = 0; i < count - 1; i++) {\n        if (isNaN(positions[i * 2]) || isNaN(positions[i * 2 + 1])) {\n          linePositions.push(NaN, NaN, NaN, NaN);\n        } else {\n          linePositions.push(positions[i * 2], positions[i * 2 + 1]);\n          if (!isNaN(positions[i * 2 + 2]) && !isNaN(positions[i * 2 + 3])) {\n            linePositions.push(positions[i * 2 + 2], positions[i * 2 + 1]);\n          } else {\n            linePositions.push(NaN, NaN);\n          }\n        }\n      }\n      linePositions.push(positions[len - 2], positions[len - 1]);\n    } else if (trace.line.shape === 'hvh') {\n      linePositions = [];\n      for (i = 0; i < count - 1; i++) {\n        if (isNaN(positions[i * 2]) || isNaN(positions[i * 2 + 1]) || isNaN(positions[i * 2 + 2]) || isNaN(positions[i * 2 + 3])) {\n          if (!isNaN(positions[i * 2]) && !isNaN(positions[i * 2 + 1])) {\n            linePositions.push(positions[i * 2], positions[i * 2 + 1]);\n          } else {\n            linePositions.push(NaN, NaN);\n          }\n          linePositions.push(NaN, NaN);\n        } else {\n          var midPtX = (positions[i * 2] + positions[i * 2 + 2]) / 2;\n          linePositions.push(positions[i * 2], positions[i * 2 + 1], midPtX, positions[i * 2 + 1], midPtX, positions[i * 2 + 3]);\n        }\n      }\n      linePositions.push(positions[len - 2], positions[len - 1]);\n    } else if (trace.line.shape === 'vhv') {\n      linePositions = [];\n      for (i = 0; i < count - 1; i++) {\n        if (isNaN(positions[i * 2]) || isNaN(positions[i * 2 + 1]) || isNaN(positions[i * 2 + 2]) || isNaN(positions[i * 2 + 3])) {\n          if (!isNaN(positions[i * 2]) && !isNaN(positions[i * 2 + 1])) {\n            linePositions.push(positions[i * 2], positions[i * 2 + 1]);\n          } else {\n            linePositions.push(NaN, NaN);\n          }\n          linePositions.push(NaN, NaN);\n        } else {\n          var midPtY = (positions[i * 2 + 1] + positions[i * 2 + 3]) / 2;\n          linePositions.push(positions[i * 2], positions[i * 2 + 1], positions[i * 2], midPtY, positions[i * 2 + 2], midPtY);\n        }\n      }\n      linePositions.push(positions[len - 2], positions[len - 1]);\n    } else if (trace.line.shape === 'vh') {\n      linePositions = [];\n      for (i = 0; i < count - 1; i++) {\n        if (isNaN(positions[i * 2]) || isNaN(positions[i * 2 + 1])) {\n          linePositions.push(NaN, NaN, NaN, NaN);\n        } else {\n          linePositions.push(positions[i * 2], positions[i * 2 + 1]);\n          if (!isNaN(positions[i * 2 + 2]) && !isNaN(positions[i * 2 + 3])) {\n            linePositions.push(positions[i * 2], positions[i * 2 + 3]);\n          } else {\n            linePositions.push(NaN, NaN);\n          }\n        }\n      }\n      linePositions.push(positions[len - 2], positions[len - 1]);\n    } else {\n      linePositions = positions;\n    }\n  }\n\n  // If we have data with gaps, we ought to use rect joins\n  // FIXME: get rid of this\n  var hasNaN = false;\n  for (i = 0; i < linePositions.length; i++) {\n    if (isNaN(linePositions[i])) {\n      hasNaN = true;\n      break;\n    }\n  }\n  var join = hasNaN || linePositions.length > constants.TOO_MANY_POINTS ? 'rect' : subTypes.hasMarkers(trace) ? 'rect' : 'round';\n\n  // fill gaps\n  if (hasNaN && trace.connectgaps) {\n    var lastX = linePositions[0];\n    var lastY = linePositions[1];\n    for (i = 0; i < linePositions.length; i += 2) {\n      if (isNaN(linePositions[i]) || isNaN(linePositions[i + 1])) {\n        linePositions[i] = lastX;\n        linePositions[i + 1] = lastY;\n      } else {\n        lastX = linePositions[i];\n        lastY = linePositions[i + 1];\n      }\n    }\n  }\n  return {\n    join: join,\n    positions: linePositions\n  };\n}\nfunction convertErrorBarPositions(gd, trace, positions, x, y) {\n  var makeComputeError = Registry.getComponentMethod('errorbars', 'makeComputeError');\n  var xa = AxisIDs.getFromId(gd, trace.xaxis, 'x');\n  var ya = AxisIDs.getFromId(gd, trace.yaxis, 'y');\n  var count = positions.length / 2;\n  var out = {};\n  function convertOneAxis(coords, ax) {\n    var axLetter = ax._id.charAt(0);\n    var opts = trace['error_' + axLetter];\n    if (opts && opts.visible && (ax.type === 'linear' || ax.type === 'log')) {\n      var computeError = makeComputeError(opts);\n      var pOffset = {\n        x: 0,\n        y: 1\n      }[axLetter];\n      var eOffset = {\n        x: [0, 1, 2, 3],\n        y: [2, 3, 0, 1]\n      }[axLetter];\n      var errors = new Float64Array(4 * count);\n      var minShoe = Infinity;\n      var maxHat = -Infinity;\n      for (var i = 0, j = 0; i < count; i++, j += 4) {\n        var dc = coords[i];\n        if (isNumeric(dc)) {\n          var dl = positions[i * 2 + pOffset];\n          var vals = computeError(dc, i);\n          var lv = vals[0];\n          var hv = vals[1];\n          if (isNumeric(lv) && isNumeric(hv)) {\n            var shoe = dc - lv;\n            var hat = dc + hv;\n            errors[j + eOffset[0]] = dl - ax.c2l(shoe);\n            errors[j + eOffset[1]] = ax.c2l(hat) - dl;\n            errors[j + eOffset[2]] = 0;\n            errors[j + eOffset[3]] = 0;\n            minShoe = Math.min(minShoe, dc - lv);\n            maxHat = Math.max(maxHat, dc + hv);\n          }\n        }\n      }\n      out[axLetter] = {\n        positions: positions,\n        errors: errors,\n        _bnds: [minShoe, maxHat]\n      };\n    }\n  }\n  convertOneAxis(x, xa);\n  convertOneAxis(y, ya);\n  return out;\n}\nfunction convertTextPosition(gd, trace, textOpts, markerOpts) {\n  var count = trace._length;\n  var out = {};\n  var i;\n\n  // corresponds to textPointPosition from component.drawing\n  if (subTypes.hasMarkers(trace)) {\n    var fontOpts = textOpts.font;\n    var align = textOpts.align;\n    var baseline = textOpts.baseline;\n    out.offset = new Array(count);\n    for (i = 0; i < count; i++) {\n      var ms = markerOpts.sizes ? markerOpts.sizes[i] : markerOpts.size;\n      var fs = Array.isArray(fontOpts) ? fontOpts[i].size : fontOpts.size;\n      var a = Array.isArray(align) ? align.length > 1 ? align[i] : align[0] : align;\n      var b = Array.isArray(baseline) ? baseline.length > 1 ? baseline[i] : baseline[0] : baseline;\n      var hSign = TEXTOFFSETSIGN[a];\n      var vSign = TEXTOFFSETSIGN[b];\n      var xPad = ms ? ms / 0.8 + 1 : 0;\n      var yPad = -vSign * xPad - vSign * 0.5;\n      out.offset[i] = [hSign * xPad / fs, yPad / fs];\n    }\n  }\n  return out;\n}\nmodule.exports = {\n  style: convertStyle,\n  markerStyle: convertMarkerStyle,\n  markerSelection: convertMarkerSelection,\n  linePositions: convertLinePositions,\n  errorBarPositions: convertErrorBarPositions,\n  textPosition: convertTextPosition\n};\n\n/***/ }),\n\n/***/ 47148:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3241049__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3241049__(71828);\nvar Registry = __nested_webpack_require_3241049__(73972);\nvar helpers = __nested_webpack_require_3241049__(68645);\nvar attributes = __nested_webpack_require_3241049__(42341);\nvar constants = __nested_webpack_require_3241049__(47581);\nvar subTypes = __nested_webpack_require_3241049__(34098);\nvar handleXYDefaults = __nested_webpack_require_3241049__(67513);\nvar handlePeriodDefaults = __nested_webpack_require_3241049__(73927);\nvar handleMarkerDefaults = __nested_webpack_require_3241049__(49508);\nvar handleLineDefaults = __nested_webpack_require_3241049__(11058);\nvar handleFillColorDefaults = __nested_webpack_require_3241049__(28908);\nvar handleTextDefaults = __nested_webpack_require_3241049__(82410);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var isOpen = traceIn.marker ? helpers.isOpenSymbol(traceIn.marker.symbol) : false;\n  var isBubble = subTypes.isBubble(traceIn);\n  var len = handleXYDefaults(traceIn, traceOut, layout, coerce);\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  handlePeriodDefaults(traceIn, traceOut, layout, coerce);\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  var defaultMode = len < constants.PTS_LINESONLY ? 'lines+markers' : 'lines';\n  coerce('text');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  coerce('mode', defaultMode);\n  if (subTypes.hasLines(traceOut)) {\n    coerce('connectgaps');\n    handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce);\n    coerce('line.shape');\n  }\n  if (subTypes.hasMarkers(traceOut)) {\n    handleMarkerDefaults(traceIn, traceOut, defaultColor, layout, coerce, {\n      noAngleRef: true,\n      noStandOff: true\n    });\n    coerce('marker.line.width', isOpen || isBubble ? 1 : 0);\n  }\n  if (subTypes.hasText(traceOut)) {\n    coerce('texttemplate');\n    handleTextDefaults(traceIn, traceOut, layout, coerce);\n  }\n  var lineColor = (traceOut.line || {}).color;\n  var markerColor = (traceOut.marker || {}).color;\n  coerce('fill');\n  if (traceOut.fill !== 'none') {\n    handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce);\n  }\n  var errorBarsSupplyDefaults = Registry.getComponentMethod('errorbars', 'supplyDefaults');\n  errorBarsSupplyDefaults(traceIn, traceOut, lineColor || markerColor || defaultColor, {\n    axis: 'y'\n  });\n  errorBarsSupplyDefaults(traceIn, traceOut, lineColor || markerColor || defaultColor, {\n    axis: 'x',\n    inherit: 'y'\n  });\n  Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n};\n\n/***/ }),\n\n/***/ 5345:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3243611__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3243611__(71828);\nvar Color = __nested_webpack_require_3243611__(7901);\nvar DESELECTDIM = (__nested_webpack_require_3243611__(37822).DESELECTDIM);\nfunction styleTextSelection(cd) {\n  var cd0 = cd[0];\n  var trace = cd0.trace;\n  var stash = cd0.t;\n  var scene = stash._scene;\n  var index = stash.index;\n  var els = scene.selectBatch[index];\n  var unels = scene.unselectBatch[index];\n  var baseOpts = scene.textOptions[index];\n  var selOpts = scene.textSelectedOptions[index] || {};\n  var unselOpts = scene.textUnselectedOptions[index] || {};\n  var opts = Lib.extendFlat({}, baseOpts);\n  var i, j;\n  if (els.length || unels.length) {\n    var stc = selOpts.color;\n    var utc = unselOpts.color;\n    var base = baseOpts.color;\n    var hasArrayBase = Array.isArray(base);\n    opts.color = new Array(trace._length);\n    for (i = 0; i < els.length; i++) {\n      j = els[i];\n      opts.color[j] = stc || (hasArrayBase ? base[j] : base);\n    }\n    for (i = 0; i < unels.length; i++) {\n      j = unels[i];\n      var basej = hasArrayBase ? base[j] : base;\n      opts.color[j] = utc ? utc : stc ? basej : Color.addOpacity(basej, DESELECTDIM);\n    }\n  }\n  scene.glText[index].update(opts);\n}\nmodule.exports = {\n  styleTextSelection: styleTextSelection\n};\n\n/***/ }),\n\n/***/ 68101:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3244957__) {\n\n\"use strict\";\n\n\nvar scatterFormatLabels = __nested_webpack_require_3244957__(8225);\nmodule.exports = function formatLabels(cdi, trace, fullLayout) {\n  var i = cdi.i;\n  if (!('x' in cdi)) cdi.x = trace._x[i];\n  if (!('y' in cdi)) cdi.y = trace._y[i];\n  return scatterFormatLabels(cdi, trace, fullLayout);\n};\n\n/***/ }),\n\n/***/ 68645:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_3245348__) {\n\n\"use strict\";\n\n\nvar constants = __nested_webpack_require_3245348__(78232);\nexports.isOpenSymbol = function (symbol) {\n  return typeof symbol === 'string' ? constants.OPEN_RE.test(symbol) : symbol % 200 > 100;\n};\nexports.isDotSymbol = function (symbol) {\n  return typeof symbol === 'string' ? constants.DOT_RE.test(symbol) : symbol > 200;\n};\n\n/***/ }),\n\n/***/ 20794:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3245773__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_3245773__(73972);\nvar Lib = __nested_webpack_require_3245773__(71828);\nvar getTraceColor = __nested_webpack_require_3245773__(34603);\nfunction hoverPoints(pointData, xval, yval, hovermode) {\n  var cd = pointData.cd;\n  var stash = cd[0].t;\n  var trace = cd[0].trace;\n  var xa = pointData.xa;\n  var ya = pointData.ya;\n  var x = stash.x;\n  var y = stash.y;\n  var xpx = xa.c2p(xval);\n  var ypx = ya.c2p(yval);\n  var maxDistance = pointData.distance;\n  var ids;\n\n  // FIXME: make sure this is a proper way to calc search radius\n  if (stash.tree) {\n    var xl = xa.p2c(xpx - maxDistance);\n    var xr = xa.p2c(xpx + maxDistance);\n    var yl = ya.p2c(ypx - maxDistance);\n    var yr = ya.p2c(ypx + maxDistance);\n    if (hovermode === 'x') {\n      ids = stash.tree.range(Math.min(xl, xr), Math.min(ya._rl[0], ya._rl[1]), Math.max(xl, xr), Math.max(ya._rl[0], ya._rl[1]));\n    } else {\n      ids = stash.tree.range(Math.min(xl, xr), Math.min(yl, yr), Math.max(xl, xr), Math.max(yl, yr));\n    }\n  } else {\n    ids = stash.ids;\n  }\n\n  // pick the id closest to the point\n  // note that point possibly may not be found\n  var k, closestId, ptx, pty, i, dx, dy, dist, dxy;\n  var minDist = maxDistance;\n  if (hovermode === 'x') {\n    var xPeriod = !!trace.xperiodalignment;\n    var yPeriod = !!trace.yperiodalignment;\n    for (i = 0; i < ids.length; i++) {\n      k = ids[i];\n      ptx = x[k];\n      dx = Math.abs(xa.c2p(ptx) - xpx);\n      if (xPeriod) {\n        var x0 = xa.c2p(trace._xStarts[k]);\n        var x1 = xa.c2p(trace._xEnds[k]);\n        dx = xpx >= Math.min(x0, x1) && xpx <= Math.max(x0, x1) ? 0 : Infinity;\n      }\n      if (dx < minDist) {\n        minDist = dx;\n        pty = y[k];\n        dy = ya.c2p(pty) - ypx;\n        if (yPeriod) {\n          var y0 = ya.c2p(trace._yStarts[k]);\n          var y1 = ya.c2p(trace._yEnds[k]);\n          dy = ypx >= Math.min(y0, y1) && ypx <= Math.max(y0, y1) ? 0 : Infinity;\n        }\n        dxy = Math.sqrt(dx * dx + dy * dy);\n        closestId = ids[i];\n      }\n    }\n  } else {\n    for (i = ids.length - 1; i > -1; i--) {\n      k = ids[i];\n      ptx = x[k];\n      pty = y[k];\n      dx = xa.c2p(ptx) - xpx;\n      dy = ya.c2p(pty) - ypx;\n      dist = Math.sqrt(dx * dx + dy * dy);\n      if (dist < minDist) {\n        minDist = dxy = dist;\n        closestId = k;\n      }\n    }\n  }\n  pointData.index = closestId;\n  pointData.distance = minDist;\n  pointData.dxy = dxy;\n  if (closestId === undefined) return [pointData];\n  return [calcHover(pointData, x, y, trace)];\n}\nfunction calcHover(pointData, x, y, trace) {\n  var xa = pointData.xa;\n  var ya = pointData.ya;\n  var minDist = pointData.distance;\n  var dxy = pointData.dxy;\n  var id = pointData.index;\n\n  // the closest data point\n  var di = {\n    pointNumber: id,\n    x: x[id],\n    y: y[id]\n  };\n\n  // that is single-item arrays_to_calcdata excerpt, since we are doing it for a single point and we don't have to do it beforehead for 1e6 points\n  di.tx = Array.isArray(trace.text) ? trace.text[id] : trace.text;\n  di.htx = Array.isArray(trace.hovertext) ? trace.hovertext[id] : trace.hovertext;\n  di.data = Array.isArray(trace.customdata) ? trace.customdata[id] : trace.customdata;\n  di.tp = Array.isArray(trace.textposition) ? trace.textposition[id] : trace.textposition;\n  var font = trace.textfont;\n  if (font) {\n    di.ts = Lib.isArrayOrTypedArray(font.size) ? font.size[id] : font.size;\n    di.tc = Array.isArray(font.color) ? font.color[id] : font.color;\n    di.tf = Array.isArray(font.family) ? font.family[id] : font.family;\n  }\n  var marker = trace.marker;\n  if (marker) {\n    di.ms = Lib.isArrayOrTypedArray(marker.size) ? marker.size[id] : marker.size;\n    di.mo = Lib.isArrayOrTypedArray(marker.opacity) ? marker.opacity[id] : marker.opacity;\n    di.mx = Lib.isArrayOrTypedArray(marker.symbol) ? marker.symbol[id] : marker.symbol;\n    di.ma = Lib.isArrayOrTypedArray(marker.angle) ? marker.angle[id] : marker.angle;\n    di.mc = Lib.isArrayOrTypedArray(marker.color) ? marker.color[id] : marker.color;\n  }\n  var line = marker && marker.line;\n  if (line) {\n    di.mlc = Array.isArray(line.color) ? line.color[id] : line.color;\n    di.mlw = Lib.isArrayOrTypedArray(line.width) ? line.width[id] : line.width;\n  }\n  var grad = marker && marker.gradient;\n  if (grad && grad.type !== 'none') {\n    di.mgt = Array.isArray(grad.type) ? grad.type[id] : grad.type;\n    di.mgc = Array.isArray(grad.color) ? grad.color[id] : grad.color;\n  }\n  var xp = xa.c2p(di.x, true);\n  var yp = ya.c2p(di.y, true);\n  var rad = di.mrc || 1;\n  var hoverlabel = trace.hoverlabel;\n  if (hoverlabel) {\n    di.hbg = Array.isArray(hoverlabel.bgcolor) ? hoverlabel.bgcolor[id] : hoverlabel.bgcolor;\n    di.hbc = Array.isArray(hoverlabel.bordercolor) ? hoverlabel.bordercolor[id] : hoverlabel.bordercolor;\n    di.hts = Lib.isArrayOrTypedArray(hoverlabel.font.size) ? hoverlabel.font.size[id] : hoverlabel.font.size;\n    di.htc = Array.isArray(hoverlabel.font.color) ? hoverlabel.font.color[id] : hoverlabel.font.color;\n    di.htf = Array.isArray(hoverlabel.font.family) ? hoverlabel.font.family[id] : hoverlabel.font.family;\n    di.hnl = Lib.isArrayOrTypedArray(hoverlabel.namelength) ? hoverlabel.namelength[id] : hoverlabel.namelength;\n  }\n  var hoverinfo = trace.hoverinfo;\n  if (hoverinfo) {\n    di.hi = Array.isArray(hoverinfo) ? hoverinfo[id] : hoverinfo;\n  }\n  var hovertemplate = trace.hovertemplate;\n  if (hovertemplate) {\n    di.ht = Array.isArray(hovertemplate) ? hovertemplate[id] : hovertemplate;\n  }\n  var fakeCd = {};\n  fakeCd[pointData.index] = di;\n  var origX = trace._origX;\n  var origY = trace._origY;\n  var pointData2 = Lib.extendFlat({}, pointData, {\n    color: getTraceColor(trace, di),\n    x0: xp - rad,\n    x1: xp + rad,\n    xLabelVal: origX ? origX[id] : di.x,\n    y0: yp - rad,\n    y1: yp + rad,\n    yLabelVal: origY ? origY[id] : di.y,\n    cd: fakeCd,\n    distance: minDist,\n    spikeDistance: dxy,\n    hovertemplate: di.ht\n  });\n  if (di.htx) pointData2.text = di.htx;else if (di.tx) pointData2.text = di.tx;else if (trace.text) pointData2.text = trace.text;\n  Lib.fillText(di, trace, pointData2);\n  Registry.getComponentMethod('errorbars', 'hoverInfo')(di, trace, pointData2);\n  return pointData2;\n}\nmodule.exports = {\n  hoverPoints: hoverPoints,\n  calcHover: calcHover\n};\n\n/***/ }),\n\n/***/ 68868:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3252145__) {\n\n\"use strict\";\n\n\nvar index = __nested_webpack_require_3252145__(72156);\nindex.plot = __nested_webpack_require_3252145__(26787);\nmodule.exports = index;\n\n/***/ }),\n\n/***/ 26787:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3252365__) {\n\n\"use strict\";\n\n\nvar createScatter = __nested_webpack_require_3252365__(11870);\nvar createLine = __nested_webpack_require_3252365__(46075);\nvar createError = __nested_webpack_require_3252365__(3593);\nvar Text = __nested_webpack_require_3252365__(42505);\nvar Lib = __nested_webpack_require_3252365__(71828);\nvar selectMode = (__nested_webpack_require_3252365__(64505).selectMode);\nvar prepareRegl = __nested_webpack_require_3252365__(79749);\nvar subTypes = __nested_webpack_require_3252365__(34098);\nvar linkTraces = __nested_webpack_require_3252365__(68687);\nvar styleTextSelection = (__nested_webpack_require_3252365__(5345).styleTextSelection);\nvar reglPrecompiled = {};\nfunction getViewport(fullLayout, xaxis, yaxis, plotGlPixelRatio) {\n  var gs = fullLayout._size;\n  var width = fullLayout.width * plotGlPixelRatio;\n  var height = fullLayout.height * plotGlPixelRatio;\n  var l = gs.l * plotGlPixelRatio;\n  var b = gs.b * plotGlPixelRatio;\n  var r = gs.r * plotGlPixelRatio;\n  var t = gs.t * plotGlPixelRatio;\n  var w = gs.w * plotGlPixelRatio;\n  var h = gs.h * plotGlPixelRatio;\n  return [l + xaxis.domain[0] * w, b + yaxis.domain[0] * h, width - r - (1 - xaxis.domain[1]) * w, height - t - (1 - yaxis.domain[1]) * h];\n}\nvar exports = module.exports = function plot(gd, subplot, cdata) {\n  if (!cdata.length) return;\n  var fullLayout = gd._fullLayout;\n  var scene = subplot._scene;\n  var xaxis = subplot.xaxis;\n  var yaxis = subplot.yaxis;\n  var i, j;\n\n  // we may have more subplots than initialized data due to Axes.getSubplots method\n  if (!scene) return;\n  var success = prepareRegl(gd, ['ANGLE_instanced_arrays', 'OES_element_index_uint'], reglPrecompiled);\n  if (!success) {\n    scene.init();\n    return;\n  }\n  var count = scene.count;\n  var regl = fullLayout._glcanvas.data()[0].regl;\n\n  // that is needed for fills\n  linkTraces(gd, subplot, cdata);\n  if (scene.dirty) {\n    // make sure scenes are created\n    if (scene.error2d === true) {\n      scene.error2d = createError(regl);\n    }\n    if (scene.line2d === true) {\n      scene.line2d = createLine(regl);\n    }\n    if (scene.scatter2d === true) {\n      scene.scatter2d = createScatter(regl);\n    }\n    if (scene.fill2d === true) {\n      scene.fill2d = createLine(regl);\n    }\n    if (scene.glText === true) {\n      scene.glText = new Array(count);\n      for (i = 0; i < count; i++) {\n        scene.glText[i] = new Text(regl);\n      }\n    }\n\n    // update main marker options\n    if (scene.glText) {\n      if (count > scene.glText.length) {\n        // add gl text marker\n        var textsToAdd = count - scene.glText.length;\n        for (i = 0; i < textsToAdd; i++) {\n          scene.glText.push(new Text(regl));\n        }\n      } else if (count < scene.glText.length) {\n        // remove gl text marker\n        var textsToRemove = scene.glText.length - count;\n        var removedTexts = scene.glText.splice(count, textsToRemove);\n        removedTexts.forEach(function (text) {\n          text.destroy();\n        });\n      }\n      for (i = 0; i < count; i++) {\n        scene.glText[i].update(scene.textOptions[i]);\n      }\n    }\n    if (scene.line2d) {\n      scene.line2d.update(scene.lineOptions);\n      scene.lineOptions = scene.lineOptions.map(function (lineOptions) {\n        if (lineOptions && lineOptions.positions) {\n          var srcPos = lineOptions.positions;\n          var firstptdef = 0;\n          while (firstptdef < srcPos.length && (isNaN(srcPos[firstptdef]) || isNaN(srcPos[firstptdef + 1]))) {\n            firstptdef += 2;\n          }\n          var lastptdef = srcPos.length - 2;\n          while (lastptdef > firstptdef && (isNaN(srcPos[lastptdef]) || isNaN(srcPos[lastptdef + 1]))) {\n            lastptdef -= 2;\n          }\n          lineOptions.positions = srcPos.slice(firstptdef, lastptdef + 2);\n        }\n        return lineOptions;\n      });\n      scene.line2d.update(scene.lineOptions);\n    }\n    if (scene.error2d) {\n      var errorBatch = (scene.errorXOptions || []).concat(scene.errorYOptions || []);\n      scene.error2d.update(errorBatch);\n    }\n    if (scene.scatter2d) {\n      scene.scatter2d.update(scene.markerOptions);\n    }\n\n    // fill requires linked traces, so we generate it's positions here\n    scene.fillOrder = Lib.repeat(null, count);\n    if (scene.fill2d) {\n      scene.fillOptions = scene.fillOptions.map(function (fillOptions, i) {\n        var cdscatter = cdata[i];\n        if (!fillOptions || !cdscatter || !cdscatter[0] || !cdscatter[0].trace) return;\n        var cd = cdscatter[0];\n        var trace = cd.trace;\n        var stash = cd.t;\n        var lineOptions = scene.lineOptions[i];\n        var last, j;\n        var fillData = [];\n        if (trace._ownfill) fillData.push(i);\n        if (trace._nexttrace) fillData.push(i + 1);\n        if (fillData.length) scene.fillOrder[i] = fillData;\n        var pos = [];\n        var srcPos = lineOptions && lineOptions.positions || stash.positions;\n        var firstptdef, lastptdef;\n        if (trace.fill === 'tozeroy') {\n          firstptdef = 0;\n          while (firstptdef < srcPos.length && isNaN(srcPos[firstptdef + 1])) {\n            firstptdef += 2;\n          }\n          lastptdef = srcPos.length - 2;\n          while (lastptdef > firstptdef && isNaN(srcPos[lastptdef + 1])) {\n            lastptdef -= 2;\n          }\n          if (srcPos[firstptdef + 1] !== 0) {\n            pos = [srcPos[firstptdef], 0];\n          }\n          pos = pos.concat(srcPos.slice(firstptdef, lastptdef + 2));\n          if (srcPos[lastptdef + 1] !== 0) {\n            pos = pos.concat([srcPos[lastptdef], 0]);\n          }\n        } else if (trace.fill === 'tozerox') {\n          firstptdef = 0;\n          while (firstptdef < srcPos.length && isNaN(srcPos[firstptdef])) {\n            firstptdef += 2;\n          }\n          lastptdef = srcPos.length - 2;\n          while (lastptdef > firstptdef && isNaN(srcPos[lastptdef])) {\n            lastptdef -= 2;\n          }\n          if (srcPos[firstptdef] !== 0) {\n            pos = [0, srcPos[firstptdef + 1]];\n          }\n          pos = pos.concat(srcPos.slice(firstptdef, lastptdef + 2));\n          if (srcPos[lastptdef] !== 0) {\n            pos = pos.concat([0, srcPos[lastptdef + 1]]);\n          }\n        } else if (trace.fill === 'toself' || trace.fill === 'tonext') {\n          pos = [];\n          last = 0;\n          fillOptions.splitNull = true;\n          for (j = 0; j < srcPos.length; j += 2) {\n            if (isNaN(srcPos[j]) || isNaN(srcPos[j + 1])) {\n              pos = pos.concat(srcPos.slice(last, j));\n              pos.push(srcPos[last], srcPos[last + 1]);\n              pos.push(null, null); // keep null to mark end of polygon\n              last = j + 2;\n            }\n          }\n          pos = pos.concat(srcPos.slice(last));\n          if (last) {\n            pos.push(srcPos[last], srcPos[last + 1]);\n          }\n        } else {\n          var nextTrace = trace._nexttrace;\n          if (nextTrace) {\n            var nextOptions = scene.lineOptions[i + 1];\n            if (nextOptions) {\n              var nextPos = nextOptions.positions;\n              if (trace.fill === 'tonexty') {\n                pos = srcPos.slice();\n                for (i = Math.floor(nextPos.length / 2); i--;) {\n                  var xx = nextPos[i * 2];\n                  var yy = nextPos[i * 2 + 1];\n                  if (isNaN(xx) || isNaN(yy)) continue;\n                  pos.push(xx, yy);\n                }\n                fillOptions.fill = nextTrace.fillcolor;\n              }\n            }\n          }\n        }\n\n        // detect prev trace positions to exclude from current fill\n        if (trace._prevtrace && trace._prevtrace.fill === 'tonext') {\n          var prevLinePos = scene.lineOptions[i - 1].positions;\n\n          // FIXME: likely this logic should be tested better\n          var offset = pos.length / 2;\n          last = offset;\n          var hole = [last];\n          for (j = 0; j < prevLinePos.length; j += 2) {\n            if (isNaN(prevLinePos[j]) || isNaN(prevLinePos[j + 1])) {\n              hole.push(j / 2 + offset + 1);\n              last = j + 2;\n            }\n          }\n          pos = pos.concat(prevLinePos);\n          fillOptions.hole = hole;\n        }\n        fillOptions.fillmode = trace.fill;\n        fillOptions.opacity = trace.opacity;\n        fillOptions.positions = pos;\n        return fillOptions;\n      });\n      scene.fill2d.update(scene.fillOptions);\n    }\n  }\n\n  // form batch arrays, and check for selected points\n  var dragmode = fullLayout.dragmode;\n  var isSelectMode = selectMode(dragmode);\n  var clickSelectEnabled = fullLayout.clickmode.indexOf('select') > -1;\n  for (i = 0; i < count; i++) {\n    var cd0 = cdata[i][0];\n    var trace = cd0.trace;\n    var stash = cd0.t;\n    var index = stash.index;\n    var len = trace._length;\n    var x = stash.x;\n    var y = stash.y;\n    if (trace.selectedpoints || isSelectMode || clickSelectEnabled) {\n      if (!isSelectMode) isSelectMode = true;\n\n      // regenerate scene batch, if traces number changed during selection\n      if (trace.selectedpoints) {\n        var selPts = scene.selectBatch[index] = Lib.selIndices2selPoints(trace);\n        var selDict = {};\n        for (j = 0; j < selPts.length; j++) {\n          selDict[selPts[j]] = 1;\n        }\n        var unselPts = [];\n        for (j = 0; j < len; j++) {\n          if (!selDict[j]) unselPts.push(j);\n        }\n        scene.unselectBatch[index] = unselPts;\n      }\n\n      // precalculate px coords since we are not going to pan during select\n      // TODO, could do better here e.g.\n      // - spin that in a webworker\n      // - compute selection from polygons in data coordinates\n      //   (maybe just for linear axes)\n      var xpx = stash.xpx = new Array(len);\n      var ypx = stash.ypx = new Array(len);\n      for (j = 0; j < len; j++) {\n        xpx[j] = xaxis.c2p(x[j]);\n        ypx[j] = yaxis.c2p(y[j]);\n      }\n    } else {\n      stash.xpx = stash.ypx = null;\n    }\n  }\n  if (isSelectMode) {\n    // create scatter instance by cloning scatter2d\n    if (!scene.select2d) {\n      scene.select2d = createScatter(fullLayout._glcanvas.data()[1].regl);\n    }\n\n    // use unselected styles on 'context' canvas\n    if (scene.scatter2d) {\n      var unselOpts = new Array(count);\n      for (i = 0; i < count; i++) {\n        unselOpts[i] = scene.selectBatch[i].length || scene.unselectBatch[i].length ? scene.markerUnselectedOptions[i] : {};\n      }\n      scene.scatter2d.update(unselOpts);\n    }\n\n    // use selected style on 'focus' canvas\n    if (scene.select2d) {\n      scene.select2d.update(scene.markerOptions);\n      scene.select2d.update(scene.markerSelectedOptions);\n    }\n    if (scene.glText) {\n      cdata.forEach(function (cdscatter) {\n        var trace = ((cdscatter || [])[0] || {}).trace || {};\n        if (subTypes.hasText(trace)) {\n          styleTextSelection(cdscatter);\n        }\n      });\n    }\n  } else {\n    // reset 'context' scatter2d opts to base opts,\n    // thus unsetting markerUnselectedOptions from selection\n    if (scene.scatter2d) {\n      scene.scatter2d.update(scene.markerOptions);\n    }\n  }\n\n  // provide viewport and range\n  var vpRange0 = {\n    viewport: getViewport(fullLayout, xaxis, yaxis, gd._context.plotGlPixelRatio),\n    // TODO do we need those fallbacks?\n    range: [(xaxis._rl || xaxis.range)[0], (yaxis._rl || yaxis.range)[0], (xaxis._rl || xaxis.range)[1], (yaxis._rl || yaxis.range)[1]]\n  };\n  var vpRange = Lib.repeat(vpRange0, scene.count);\n\n  // upload viewport/range data to GPU\n  if (scene.fill2d) {\n    scene.fill2d.update(vpRange);\n  }\n  if (scene.line2d) {\n    scene.line2d.update(vpRange);\n  }\n  if (scene.error2d) {\n    scene.error2d.update(vpRange.concat(vpRange));\n  }\n  if (scene.scatter2d) {\n    scene.scatter2d.update(vpRange);\n  }\n  if (scene.select2d) {\n    scene.select2d.update(vpRange);\n  }\n  if (scene.glText) {\n    scene.glText.forEach(function (text) {\n      text.update(vpRange0);\n    });\n  }\n};\nexports.reglPrecompiled = reglPrecompiled;\n\n/***/ }),\n\n/***/ 38967:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3264269__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3264269__(71828);\n\n// make sure scene exists on subplot, return it\nmodule.exports = function sceneUpdate(gd, subplot) {\n  var scene = subplot._scene;\n  var resetOpts = {\n    // number of traces in subplot, since scene:subplot -> 1:1\n    count: 0,\n    // whether scene requires init hook in plot call (dirty plot call)\n    dirty: true,\n    // last used options\n    lineOptions: [],\n    fillOptions: [],\n    markerOptions: [],\n    markerSelectedOptions: [],\n    markerUnselectedOptions: [],\n    errorXOptions: [],\n    errorYOptions: [],\n    textOptions: [],\n    textSelectedOptions: [],\n    textUnselectedOptions: [],\n    // selection batches\n    selectBatch: [],\n    unselectBatch: []\n  };\n\n  // regl- component stubs, initialized in dirty plot call\n  var initOpts = {\n    fill2d: false,\n    scatter2d: false,\n    error2d: false,\n    line2d: false,\n    glText: false,\n    select2d: false\n  };\n  if (!subplot._scene) {\n    scene = subplot._scene = {};\n    scene.init = function init() {\n      Lib.extendFlat(scene, initOpts, resetOpts);\n    };\n    scene.init();\n\n    // apply new option to all regl components (used on drag)\n    scene.update = function update(opt) {\n      var opts = Lib.repeat(opt, scene.count);\n      if (scene.fill2d) scene.fill2d.update(opts);\n      if (scene.scatter2d) scene.scatter2d.update(opts);\n      if (scene.line2d) scene.line2d.update(opts);\n      if (scene.error2d) scene.error2d.update(opts.concat(opts));\n      if (scene.select2d) scene.select2d.update(opts);\n      if (scene.glText) {\n        for (var i = 0; i < scene.count; i++) {\n          scene.glText[i].update(opt);\n        }\n      }\n    };\n\n    // draw traces in proper order\n    scene.draw = function draw() {\n      var count = scene.count;\n      var fill2d = scene.fill2d;\n      var error2d = scene.error2d;\n      var line2d = scene.line2d;\n      var scatter2d = scene.scatter2d;\n      var glText = scene.glText;\n      var select2d = scene.select2d;\n      var selectBatch = scene.selectBatch;\n      var unselectBatch = scene.unselectBatch;\n      for (var i = 0; i < count; i++) {\n        if (fill2d && scene.fillOrder[i]) {\n          fill2d.draw(scene.fillOrder[i]);\n        }\n        if (line2d && scene.lineOptions[i]) {\n          line2d.draw(i);\n        }\n        if (error2d) {\n          if (scene.errorXOptions[i]) error2d.draw(i);\n          if (scene.errorYOptions[i]) error2d.draw(i + count);\n        }\n        if (scatter2d && scene.markerOptions[i]) {\n          if (unselectBatch[i].length) {\n            var arg = Lib.repeat([], scene.count);\n            arg[i] = unselectBatch[i];\n            scatter2d.draw(arg);\n          } else if (!selectBatch[i].length) {\n            scatter2d.draw(i);\n          }\n        }\n        if (glText[i] && scene.textOptions[i]) {\n          glText[i].render();\n        }\n      }\n      if (select2d) {\n        select2d.draw(selectBatch);\n      }\n      scene.dirty = false;\n    };\n\n    // remove scene resources\n    scene.destroy = function destroy() {\n      if (scene.fill2d && scene.fill2d.destroy) scene.fill2d.destroy();\n      if (scene.scatter2d && scene.scatter2d.destroy) scene.scatter2d.destroy();\n      if (scene.error2d && scene.error2d.destroy) scene.error2d.destroy();\n      if (scene.line2d && scene.line2d.destroy) scene.line2d.destroy();\n      if (scene.select2d && scene.select2d.destroy) scene.select2d.destroy();\n      if (scene.glText) {\n        scene.glText.forEach(function (text) {\n          if (text.destroy) text.destroy();\n        });\n      }\n      scene.lineOptions = null;\n      scene.fillOptions = null;\n      scene.markerOptions = null;\n      scene.markerSelectedOptions = null;\n      scene.markerUnselectedOptions = null;\n      scene.errorXOptions = null;\n      scene.errorYOptions = null;\n      scene.textOptions = null;\n      scene.textSelectedOptions = null;\n      scene.textUnselectedOptions = null;\n      scene.selectBatch = null;\n      scene.unselectBatch = null;\n\n      // we can't just delete _scene, because `destroy` is called in the\n      // middle of supplyDefaults, before relinkPrivateKeys which will put it back.\n      subplot._scene = null;\n    };\n  }\n\n  // in case if we have scene from the last calc - reset data\n  if (!scene.dirty) {\n    Lib.extendFlat(scene, resetOpts);\n  }\n  return scene;\n};\n\n/***/ }),\n\n/***/ 58147:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3268681__) {\n\n\"use strict\";\n\n\nvar subTypes = __nested_webpack_require_3268681__(34098);\nvar styleTextSelection = (__nested_webpack_require_3268681__(5345).styleTextSelection);\nmodule.exports = function select(searchInfo, selectionTester) {\n  var cd = searchInfo.cd;\n  var xa = searchInfo.xaxis;\n  var ya = searchInfo.yaxis;\n  var selection = [];\n  var trace = cd[0].trace;\n  var stash = cd[0].t;\n  var len = trace._length;\n  var x = stash.x;\n  var y = stash.y;\n  var scene = stash._scene;\n  var index = stash.index;\n  if (!scene) return selection;\n  var hasText = subTypes.hasText(trace);\n  var hasMarkers = subTypes.hasMarkers(trace);\n  var hasOnlyLines = !hasMarkers && !hasText;\n  if (trace.visible !== true || hasOnlyLines) return selection;\n  var els = [];\n  var unels = [];\n\n  // degenerate polygon does not enable selection\n  // filter out points by visible scatter ones\n  if (selectionTester !== false && !selectionTester.degenerate) {\n    for (var i = 0; i < len; i++) {\n      if (selectionTester.contains([stash.xpx[i], stash.ypx[i]], false, i, searchInfo)) {\n        els.push(i);\n        selection.push({\n          pointNumber: i,\n          x: xa.c2d(x[i]),\n          y: ya.c2d(y[i])\n        });\n      } else {\n        unels.push(i);\n      }\n    }\n  }\n  if (hasMarkers) {\n    var scatter2d = scene.scatter2d;\n    if (!els.length && !unels.length) {\n      // reset to base styles when clearing\n      var baseOpts = new Array(scene.count);\n      baseOpts[index] = scene.markerOptions[index];\n      scatter2d.update.apply(scatter2d, baseOpts);\n    } else if (!scene.selectBatch[index].length && !scene.unselectBatch[index].length) {\n      // set unselected styles on 'context' canvas (if not done already)\n      var unselOpts = new Array(scene.count);\n      unselOpts[index] = scene.markerUnselectedOptions[index];\n      scatter2d.update.apply(scatter2d, unselOpts);\n    }\n  }\n  scene.selectBatch[index] = els;\n  scene.unselectBatch[index] = unels;\n  if (hasText) {\n    styleTextSelection(cd);\n  }\n  return selection;\n};\n\n/***/ }),\n\n/***/ 99181:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3270765__) {\n\n\"use strict\";\n\n\nvar hovertemplateAttrs = (__nested_webpack_require_3270765__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_3270765__(5386)/* .texttemplateAttrs */ .s);\nvar scatterGeoAttrs = __nested_webpack_require_3270765__(19316);\nvar scatterAttrs = __nested_webpack_require_3270765__(82196);\nvar mapboxAttrs = __nested_webpack_require_3270765__(23585);\nvar baseAttrs = __nested_webpack_require_3270765__(9012);\nvar colorScaleAttrs = __nested_webpack_require_3270765__(50693);\nvar extendFlat = (__nested_webpack_require_3270765__(1426).extendFlat);\nvar overrideAll = (__nested_webpack_require_3270765__(30962).overrideAll);\nvar mapboxLayoutAtributes = __nested_webpack_require_3270765__(23585);\nvar lineAttrs = scatterGeoAttrs.line;\nvar markerAttrs = scatterGeoAttrs.marker;\nmodule.exports = overrideAll({\n  lon: scatterGeoAttrs.lon,\n  lat: scatterGeoAttrs.lat,\n  cluster: {\n    enabled: {\n      valType: 'boolean'\n    },\n    maxzoom: extendFlat({}, mapboxLayoutAtributes.layers.maxzoom, {}),\n    step: {\n      valType: 'number',\n      arrayOk: true,\n      dflt: -1,\n      min: -1\n    },\n    size: {\n      valType: 'number',\n      arrayOk: true,\n      dflt: 20,\n      min: 0\n    },\n    color: {\n      valType: 'color',\n      arrayOk: true\n    },\n    opacity: extendFlat({}, markerAttrs.opacity, {\n      dflt: 1\n    })\n  },\n  // locations\n  // locationmode\n\n  mode: extendFlat({}, scatterAttrs.mode, {\n    dflt: 'markers'\n  }),\n  text: extendFlat({}, scatterAttrs.text, {}),\n  texttemplate: texttemplateAttrs({\n    editType: 'plot'\n  }, {\n    keys: ['lat', 'lon', 'text']\n  }),\n  hovertext: extendFlat({}, scatterAttrs.hovertext, {}),\n  line: {\n    color: lineAttrs.color,\n    width: lineAttrs.width\n\n    // TODO\n    // dash: dash\n  },\n\n  connectgaps: scatterAttrs.connectgaps,\n  marker: extendFlat({\n    symbol: {\n      valType: 'string',\n      dflt: 'circle',\n      arrayOk: true\n    },\n    angle: {\n      valType: 'number',\n      dflt: 'auto',\n      arrayOk: true\n    },\n    allowoverlap: {\n      valType: 'boolean',\n      dflt: false\n    },\n    opacity: markerAttrs.opacity,\n    size: markerAttrs.size,\n    sizeref: markerAttrs.sizeref,\n    sizemin: markerAttrs.sizemin,\n    sizemode: markerAttrs.sizemode\n  }, colorScaleAttrs('marker')\n  // line\n  ),\n\n  fill: scatterGeoAttrs.fill,\n  fillcolor: scatterAttrs.fillcolor,\n  textfont: mapboxAttrs.layers.symbol.textfont,\n  textposition: mapboxAttrs.layers.symbol.textposition,\n  below: {\n    valType: 'string'\n  },\n  selected: {\n    marker: scatterAttrs.selected.marker\n  },\n  unselected: {\n    marker: scatterAttrs.unselected.marker\n  },\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {\n    flags: ['lon', 'lat', 'text', 'name']\n  }),\n  hovertemplate: hovertemplateAttrs()\n}, 'calc', 'nested');\n\n/***/ }),\n\n/***/ 15790:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3273504__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_3273504__(92770);\nvar Lib = __nested_webpack_require_3273504__(71828);\nvar BADNUM = (__nested_webpack_require_3273504__(50606).BADNUM);\nvar geoJsonUtils = __nested_webpack_require_3273504__(18214);\nvar Colorscale = __nested_webpack_require_3273504__(21081);\nvar Drawing = __nested_webpack_require_3273504__(91424);\nvar makeBubbleSizeFn = __nested_webpack_require_3273504__(39984);\nvar subTypes = __nested_webpack_require_3273504__(34098);\nvar convertTextOpts = __nested_webpack_require_3273504__(13056);\nvar appendArrayPointValue = (__nested_webpack_require_3273504__(23469).appendArrayPointValue);\nvar NEWLINES = (__nested_webpack_require_3273504__(63893).NEWLINES);\nvar BR_TAG_ALL = (__nested_webpack_require_3273504__(63893).BR_TAG_ALL);\nmodule.exports = function convert(gd, calcTrace) {\n  var trace = calcTrace[0].trace;\n  var isVisible = trace.visible === true && trace._length !== 0;\n  var hasFill = trace.fill !== 'none';\n  var hasLines = subTypes.hasLines(trace);\n  var hasMarkers = subTypes.hasMarkers(trace);\n  var hasText = subTypes.hasText(trace);\n  var hasCircles = hasMarkers && trace.marker.symbol === 'circle';\n  var hasSymbols = hasMarkers && trace.marker.symbol !== 'circle';\n  var hasCluster = trace.cluster && trace.cluster.enabled;\n  var fill = initContainer('fill');\n  var line = initContainer('line');\n  var circle = initContainer('circle');\n  var symbol = initContainer('symbol');\n  var opts = {\n    fill: fill,\n    line: line,\n    circle: circle,\n    symbol: symbol\n  };\n\n  // early return if not visible or placeholder\n  if (!isVisible) return opts;\n\n  // fill layer and line layer use the same coords\n  var lineCoords;\n  if (hasFill || hasLines) {\n    lineCoords = geoJsonUtils.calcTraceToLineCoords(calcTrace);\n  }\n  if (hasFill) {\n    fill.geojson = geoJsonUtils.makePolygon(lineCoords);\n    fill.layout.visibility = 'visible';\n    Lib.extendFlat(fill.paint, {\n      'fill-color': trace.fillcolor\n    });\n  }\n  if (hasLines) {\n    line.geojson = geoJsonUtils.makeLine(lineCoords);\n    line.layout.visibility = 'visible';\n    Lib.extendFlat(line.paint, {\n      'line-width': trace.line.width,\n      'line-color': trace.line.color,\n      'line-opacity': trace.opacity\n    });\n\n    // TODO convert line.dash into line-dasharray\n  }\n\n  if (hasCircles) {\n    var circleOpts = makeCircleOpts(calcTrace);\n    circle.geojson = circleOpts.geojson;\n    circle.layout.visibility = 'visible';\n    if (hasCluster) {\n      circle.filter = ['!', ['has', 'point_count']];\n      opts.cluster = {\n        type: 'circle',\n        filter: ['has', 'point_count'],\n        layout: {\n          visibility: 'visible'\n        },\n        paint: {\n          'circle-color': arrayifyAttribute(trace.cluster.color, trace.cluster.step),\n          'circle-radius': arrayifyAttribute(trace.cluster.size, trace.cluster.step),\n          'circle-opacity': arrayifyAttribute(trace.cluster.opacity, trace.cluster.step)\n        }\n      };\n      opts.clusterCount = {\n        type: 'symbol',\n        filter: ['has', 'point_count'],\n        paint: {},\n        layout: {\n          'text-field': '{point_count_abbreviated}',\n          'text-font': ['Open Sans Regular', 'Arial Unicode MS Regular'],\n          'text-size': 12\n        }\n      };\n    }\n    Lib.extendFlat(circle.paint, {\n      'circle-color': circleOpts.mcc,\n      'circle-radius': circleOpts.mrc,\n      'circle-opacity': circleOpts.mo\n    });\n  }\n  if (hasCircles && hasCluster) {\n    circle.filter = ['!', ['has', 'point_count']];\n  }\n  if (hasSymbols || hasText) {\n    symbol.geojson = makeSymbolGeoJSON(calcTrace, gd);\n    Lib.extendFlat(symbol.layout, {\n      visibility: 'visible',\n      'icon-image': '{symbol}-15',\n      'text-field': '{text}'\n    });\n    if (hasSymbols) {\n      Lib.extendFlat(symbol.layout, {\n        'icon-size': trace.marker.size / 10\n      });\n      if ('angle' in trace.marker && trace.marker.angle !== 'auto') {\n        Lib.extendFlat(symbol.layout, {\n          // unfortunately cant use {angle} do to this issue:\n          // https://github.com/mapbox/mapbox-gl-js/issues/873\n          'icon-rotate': {\n            type: 'identity',\n            property: 'angle'\n          },\n          'icon-rotation-alignment': 'map'\n        });\n      }\n      symbol.layout['icon-allow-overlap'] = trace.marker.allowoverlap;\n      Lib.extendFlat(symbol.paint, {\n        'icon-opacity': trace.opacity * trace.marker.opacity,\n        // TODO does not work ??\n        'icon-color': trace.marker.color\n      });\n    }\n    if (hasText) {\n      var iconSize = (trace.marker || {}).size;\n      var textOpts = convertTextOpts(trace.textposition, iconSize);\n\n      // all data-driven below !!\n\n      Lib.extendFlat(symbol.layout, {\n        'text-size': trace.textfont.size,\n        'text-anchor': textOpts.anchor,\n        'text-offset': textOpts.offset\n\n        // TODO font family\n        // 'text-font': symbol.textfont.family.split(', '),\n      });\n\n      Lib.extendFlat(symbol.paint, {\n        'text-color': trace.textfont.color,\n        'text-opacity': trace.opacity\n      });\n    }\n  }\n  return opts;\n};\nfunction initContainer(type) {\n  return {\n    type: type,\n    geojson: geoJsonUtils.makeBlank(),\n    layout: {\n      visibility: 'none'\n    },\n    filter: null,\n    paint: {}\n  };\n}\nfunction makeCircleOpts(calcTrace) {\n  var trace = calcTrace[0].trace;\n  var marker = trace.marker;\n  var selectedpoints = trace.selectedpoints;\n  var arrayColor = Lib.isArrayOrTypedArray(marker.color);\n  var arraySize = Lib.isArrayOrTypedArray(marker.size);\n  var arrayOpacity = Lib.isArrayOrTypedArray(marker.opacity);\n  var i;\n  function addTraceOpacity(o) {\n    return trace.opacity * o;\n  }\n  function size2radius(s) {\n    return s / 2;\n  }\n  var colorFn;\n  if (arrayColor) {\n    if (Colorscale.hasColorscale(trace, 'marker')) {\n      colorFn = Colorscale.makeColorScaleFuncFromTrace(marker);\n    } else {\n      colorFn = Lib.identity;\n    }\n  }\n  var sizeFn;\n  if (arraySize) {\n    sizeFn = makeBubbleSizeFn(trace);\n  }\n  var opacityFn;\n  if (arrayOpacity) {\n    opacityFn = function (mo) {\n      var mo2 = isNumeric(mo) ? +Lib.constrain(mo, 0, 1) : 0;\n      return addTraceOpacity(mo2);\n    };\n  }\n  var features = [];\n  for (i = 0; i < calcTrace.length; i++) {\n    var calcPt = calcTrace[i];\n    var lonlat = calcPt.lonlat;\n    if (isBADNUM(lonlat)) continue;\n    var props = {};\n    if (colorFn) props.mcc = calcPt.mcc = colorFn(calcPt.mc);\n    if (sizeFn) props.mrc = calcPt.mrc = sizeFn(calcPt.ms);\n    if (opacityFn) props.mo = opacityFn(calcPt.mo);\n    if (selectedpoints) props.selected = calcPt.selected || 0;\n    features.push({\n      type: 'Feature',\n      id: i + 1,\n      geometry: {\n        type: 'Point',\n        coordinates: lonlat\n      },\n      properties: props\n    });\n  }\n  var fns;\n  if (selectedpoints) {\n    fns = Drawing.makeSelectedPointStyleFns(trace);\n    for (i = 0; i < features.length; i++) {\n      var d = features[i].properties;\n      if (fns.selectedOpacityFn) {\n        d.mo = addTraceOpacity(fns.selectedOpacityFn(d));\n      }\n      if (fns.selectedColorFn) {\n        d.mcc = fns.selectedColorFn(d);\n      }\n      if (fns.selectedSizeFn) {\n        d.mrc = fns.selectedSizeFn(d);\n      }\n    }\n  }\n  return {\n    geojson: {\n      type: 'FeatureCollection',\n      features: features\n    },\n    mcc: arrayColor || fns && fns.selectedColorFn ? {\n      type: 'identity',\n      property: 'mcc'\n    } : marker.color,\n    mrc: arraySize || fns && fns.selectedSizeFn ? {\n      type: 'identity',\n      property: 'mrc'\n    } : size2radius(marker.size),\n    mo: arrayOpacity || fns && fns.selectedOpacityFn ? {\n      type: 'identity',\n      property: 'mo'\n    } : addTraceOpacity(marker.opacity)\n  };\n}\nfunction makeSymbolGeoJSON(calcTrace, gd) {\n  var fullLayout = gd._fullLayout;\n  var trace = calcTrace[0].trace;\n  var marker = trace.marker || {};\n  var symbol = marker.symbol;\n  var angle = marker.angle;\n  var fillSymbol = symbol !== 'circle' ? getFillFunc(symbol) : blankFillFunc;\n  var fillAngle = angle !== 'auto' ? getFillFunc(angle, true) : blankFillFunc;\n  var fillText = subTypes.hasText(trace) ? getFillFunc(trace.text) : blankFillFunc;\n  var features = [];\n  for (var i = 0; i < calcTrace.length; i++) {\n    var calcPt = calcTrace[i];\n    if (isBADNUM(calcPt.lonlat)) continue;\n    var texttemplate = trace.texttemplate;\n    var text;\n    if (texttemplate) {\n      var tt = Array.isArray(texttemplate) ? texttemplate[i] || '' : texttemplate;\n      var labels = trace._module.formatLabels(calcPt, trace, fullLayout);\n      var pointValues = {};\n      appendArrayPointValue(pointValues, trace, calcPt.i);\n      var meta = trace._meta || {};\n      text = Lib.texttemplateString(tt, labels, fullLayout._d3locale, pointValues, calcPt, meta);\n    } else {\n      text = fillText(i);\n    }\n    if (text) {\n      text = text.replace(NEWLINES, '').replace(BR_TAG_ALL, '\\n');\n    }\n    features.push({\n      type: 'Feature',\n      geometry: {\n        type: 'Point',\n        coordinates: calcPt.lonlat\n      },\n      properties: {\n        symbol: fillSymbol(i),\n        angle: fillAngle(i),\n        text: text\n      }\n    });\n  }\n  return {\n    type: 'FeatureCollection',\n    features: features\n  };\n}\nfunction getFillFunc(attr, numeric) {\n  if (Lib.isArrayOrTypedArray(attr)) {\n    if (numeric) {\n      return function (i) {\n        return isNumeric(attr[i]) ? +attr[i] : 0;\n      };\n    }\n    return function (i) {\n      return attr[i];\n    };\n  } else if (attr) {\n    return function () {\n      return attr;\n    };\n  } else {\n    return blankFillFunc;\n  }\n}\nfunction blankFillFunc() {\n  return '';\n}\n\n// only need to check lon (OR lat)\nfunction isBADNUM(lonlat) {\n  return lonlat[0] === BADNUM;\n}\nfunction arrayifyAttribute(values, step) {\n  var newAttribute;\n  if (Lib.isArrayOrTypedArray(values) && Lib.isArrayOrTypedArray(step)) {\n    newAttribute = ['step', ['get', 'point_count'], values[0]];\n    for (var idx = 1; idx < values.length; idx++) {\n      newAttribute.push(step[idx - 1], values[idx]);\n    }\n  } else {\n    newAttribute = values;\n  }\n  return newAttribute;\n}\n\n/***/ }),\n\n/***/ 76645:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3283544__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3283544__(71828);\nvar subTypes = __nested_webpack_require_3283544__(34098);\nvar handleMarkerDefaults = __nested_webpack_require_3283544__(49508);\nvar handleLineDefaults = __nested_webpack_require_3283544__(11058);\nvar handleTextDefaults = __nested_webpack_require_3283544__(82410);\nvar handleFillColorDefaults = __nested_webpack_require_3283544__(28908);\nvar attributes = __nested_webpack_require_3283544__(99181);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  function coerce2(attr, dflt) {\n    return Lib.coerce2(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var len = handleLonLatDefaults(traceIn, traceOut, coerce);\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  coerce('text');\n  coerce('texttemplate');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  coerce('mode');\n  coerce('below');\n  if (subTypes.hasLines(traceOut)) {\n    handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce, {\n      noDash: true\n    });\n    coerce('connectgaps');\n  }\n  if (subTypes.hasMarkers(traceOut)) {\n    handleMarkerDefaults(traceIn, traceOut, defaultColor, layout, coerce, {\n      noLine: true,\n      noAngle: true\n    });\n    coerce('marker.allowoverlap');\n    coerce('marker.angle');\n\n    // array marker.size and marker.color are only supported with circles\n    var marker = traceOut.marker;\n    if (marker.symbol !== 'circle') {\n      if (Lib.isArrayOrTypedArray(marker.size)) marker.size = marker.size[0];\n      if (Lib.isArrayOrTypedArray(marker.color)) marker.color = marker.color[0];\n    }\n  }\n  var clusterMaxzoom = coerce2('cluster.maxzoom');\n  var clusterStep = coerce2('cluster.step');\n  var clusterColor = coerce2('cluster.color', traceOut.marker && traceOut.marker.color || defaultColor);\n  var clusterSize = coerce2('cluster.size');\n  var clusterOpacity = coerce2('cluster.opacity');\n  var clusterEnabledDflt = clusterMaxzoom !== false || clusterStep !== false || clusterColor !== false || clusterSize !== false || clusterOpacity !== false;\n  coerce('cluster.enabled', clusterEnabledDflt);\n  if (subTypes.hasText(traceOut)) {\n    handleTextDefaults(traceIn, traceOut, layout, coerce, {\n      noSelect: true\n    });\n  }\n  coerce('fill');\n  if (traceOut.fill !== 'none') {\n    handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce);\n  }\n  Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n};\nfunction handleLonLatDefaults(traceIn, traceOut, coerce) {\n  var lon = coerce('lon') || [];\n  var lat = coerce('lat') || [];\n  var len = Math.min(lon.length, lat.length);\n  traceOut._length = len;\n  return len;\n}\n\n/***/ }),\n\n/***/ 53353:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function eventData(out, pt) {\n  out.lon = pt.lon;\n  out.lat = pt.lat;\n  return out;\n};\n\n/***/ }),\n\n/***/ 15636:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3286457__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_3286457__(89298);\nmodule.exports = function formatLabels(cdi, trace, fullLayout) {\n  var labels = {};\n  var subplot = fullLayout[trace.subplot]._subplot;\n  var ax = subplot.mockAxis;\n  var lonlat = cdi.lonlat;\n  labels.lonLabel = Axes.tickText(ax, ax.c2l(lonlat[0]), true).text;\n  labels.latLabel = Axes.tickText(ax, ax.c2l(lonlat[1]), true).text;\n  return labels;\n};\n\n/***/ }),\n\n/***/ 28178:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3286961__) {\n\n\"use strict\";\n\n\nvar Fx = __nested_webpack_require_3286961__(30211);\nvar Lib = __nested_webpack_require_3286961__(71828);\nvar getTraceColor = __nested_webpack_require_3286961__(34603);\nvar fillText = Lib.fillText;\nvar BADNUM = (__nested_webpack_require_3286961__(50606).BADNUM);\nvar LAYER_PREFIX = (__nested_webpack_require_3286961__(77734).traceLayerPrefix);\nfunction hoverPoints(pointData, xval, yval) {\n  var cd = pointData.cd;\n  var trace = cd[0].trace;\n  var xa = pointData.xa;\n  var ya = pointData.ya;\n  var subplot = pointData.subplot;\n  var clusteredPointsIds = [];\n  var layer = LAYER_PREFIX + trace.uid + '-circle';\n  var hasCluster = trace.cluster && trace.cluster.enabled;\n  if (hasCluster) {\n    var elems = subplot.map.queryRenderedFeatures(null, {\n      layers: [layer]\n    });\n    clusteredPointsIds = elems.map(function (elem) {\n      return elem.id;\n    });\n  }\n\n  // compute winding number about [-180, 180] globe\n  var winding = xval >= 0 ? Math.floor((xval + 180) / 360) : Math.ceil((xval - 180) / 360);\n\n  // shift longitude to [-180, 180] to determine closest point\n  var lonShift = winding * 360;\n  var xval2 = xval - lonShift;\n  function distFn(d) {\n    var lonlat = d.lonlat;\n    if (lonlat[0] === BADNUM) return Infinity;\n    if (hasCluster && clusteredPointsIds.indexOf(d.i + 1) === -1) return Infinity;\n    var lon = Lib.modHalf(lonlat[0], 360);\n    var lat = lonlat[1];\n    var pt = subplot.project([lon, lat]);\n    var dx = pt.x - xa.c2p([xval2, lat]);\n    var dy = pt.y - ya.c2p([lon, yval]);\n    var rad = Math.max(3, d.mrc || 0);\n    return Math.max(Math.sqrt(dx * dx + dy * dy) - rad, 1 - 3 / rad);\n  }\n  Fx.getClosest(cd, distFn, pointData);\n\n  // skip the rest (for this trace) if we didn't find a close point\n  if (pointData.index === false) return;\n  var di = cd[pointData.index];\n  var lonlat = di.lonlat;\n  var lonlatShifted = [Lib.modHalf(lonlat[0], 360) + lonShift, lonlat[1]];\n\n  // shift labels back to original winded globe\n  var xc = xa.c2p(lonlatShifted);\n  var yc = ya.c2p(lonlatShifted);\n  var rad = di.mrc || 1;\n  pointData.x0 = xc - rad;\n  pointData.x1 = xc + rad;\n  pointData.y0 = yc - rad;\n  pointData.y1 = yc + rad;\n  var fullLayout = {};\n  fullLayout[trace.subplot] = {\n    _subplot: subplot\n  };\n  var labels = trace._module.formatLabels(di, trace, fullLayout);\n  pointData.lonLabel = labels.lonLabel;\n  pointData.latLabel = labels.latLabel;\n  pointData.color = getTraceColor(trace, di);\n  pointData.extraText = getExtraText(trace, di, cd[0].t.labels);\n  pointData.hovertemplate = trace.hovertemplate;\n  return [pointData];\n}\nfunction getExtraText(trace, di, labels) {\n  if (trace.hovertemplate) return;\n  var hoverinfo = di.hi || trace.hoverinfo;\n  var parts = hoverinfo.split('+');\n  var isAll = parts.indexOf('all') !== -1;\n  var hasLon = parts.indexOf('lon') !== -1;\n  var hasLat = parts.indexOf('lat') !== -1;\n  var lonlat = di.lonlat;\n  var text = [];\n\n  // TODO should we use a mock axis to format hover?\n  // If so, we'll need to make precision be zoom-level dependent\n  function format(v) {\n    return v + '\\u00B0';\n  }\n  if (isAll || hasLon && hasLat) {\n    text.push('(' + format(lonlat[1]) + ', ' + format(lonlat[0]) + ')');\n  } else if (hasLon) {\n    text.push(labels.lon + format(lonlat[0]));\n  } else if (hasLat) {\n    text.push(labels.lat + format(lonlat[1]));\n  }\n  if (isAll || parts.indexOf('text') !== -1) {\n    fillText(di, trace, text);\n  }\n  return text.join('<br>');\n}\nmodule.exports = {\n  hoverPoints: hoverPoints,\n  getExtraText: getExtraText\n};\n\n/***/ }),\n\n/***/ 20467:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3290513__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_3290513__(99181),\n  supplyDefaults: __nested_webpack_require_3290513__(76645),\n  colorbar: __nested_webpack_require_3290513__(4898),\n  formatLabels: __nested_webpack_require_3290513__(15636),\n  calc: __nested_webpack_require_3290513__(84622),\n  plot: __nested_webpack_require_3290513__(86951),\n  hoverPoints: (__nested_webpack_require_3290513__(28178).hoverPoints),\n  eventData: __nested_webpack_require_3290513__(53353),\n  selectPoints: __nested_webpack_require_3290513__(86387),\n  styleOnSelect: function (_, cd) {\n    if (cd) {\n      var trace = cd[0].trace;\n      trace._glTrace.update(cd);\n    }\n  },\n  moduleType: 'trace',\n  name: 'scattermapbox',\n  basePlotModule: __nested_webpack_require_3290513__(50101),\n  categories: ['mapbox', 'gl', 'symbols', 'showLegend', 'scatter-like'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 86951:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3291338__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3291338__(71828);\nvar convert = __nested_webpack_require_3291338__(15790);\nvar LAYER_PREFIX = (__nested_webpack_require_3291338__(77734).traceLayerPrefix);\nvar ORDER = {\n  cluster: ['cluster', 'clusterCount', 'circle'],\n  nonCluster: ['fill', 'line', 'circle', 'symbol']\n};\nfunction ScatterMapbox(subplot, uid, clusterEnabled, isHidden) {\n  this.type = 'scattermapbox';\n  this.subplot = subplot;\n  this.uid = uid;\n  this.clusterEnabled = clusterEnabled;\n  this.isHidden = isHidden;\n  this.sourceIds = {\n    fill: 'source-' + uid + '-fill',\n    line: 'source-' + uid + '-line',\n    circle: 'source-' + uid + '-circle',\n    symbol: 'source-' + uid + '-symbol',\n    cluster: 'source-' + uid + '-circle',\n    clusterCount: 'source-' + uid + '-circle'\n  };\n  this.layerIds = {\n    fill: LAYER_PREFIX + uid + '-fill',\n    line: LAYER_PREFIX + uid + '-line',\n    circle: LAYER_PREFIX + uid + '-circle',\n    symbol: LAYER_PREFIX + uid + '-symbol',\n    cluster: LAYER_PREFIX + uid + '-cluster',\n    clusterCount: LAYER_PREFIX + uid + '-cluster-count'\n  };\n\n  // We could merge the 'fill' source with the 'line' source and\n  // the 'circle' source with the 'symbol' source if ever having\n  // for up-to 4 sources per 'scattermapbox' traces becomes a problem.\n\n  // previous 'below' value,\n  // need this to update it properly\n  this.below = null;\n}\nvar proto = ScatterMapbox.prototype;\nproto.addSource = function (k, opts, cluster) {\n  var sourceOpts = {\n    type: 'geojson',\n    data: opts.geojson\n  };\n  if (cluster && cluster.enabled) {\n    Lib.extendFlat(sourceOpts, {\n      cluster: true,\n      clusterMaxZoom: cluster.maxzoom\n    });\n  }\n  this.subplot.map.addSource(this.sourceIds[k], sourceOpts);\n};\nproto.setSourceData = function (k, opts) {\n  this.subplot.map.getSource(this.sourceIds[k]).setData(opts.geojson);\n};\nproto.addLayer = function (k, opts, below) {\n  var source = {\n    type: opts.type,\n    id: this.layerIds[k],\n    source: this.sourceIds[k],\n    layout: opts.layout,\n    paint: opts.paint\n  };\n  if (opts.filter) {\n    source.filter = opts.filter;\n  }\n  this.subplot.addLayer(source, below);\n};\nproto.update = function update(calcTrace) {\n  var trace = calcTrace[0].trace;\n  var subplot = this.subplot;\n  var map = subplot.map;\n  var optsAll = convert(subplot.gd, calcTrace);\n  var below = subplot.belowLookup['trace-' + this.uid];\n  var hasCluster = !!(trace.cluster && trace.cluster.enabled);\n  var hadCluster = !!this.clusterEnabled;\n  var lThis = this;\n  function addCluster(noSource) {\n    if (!noSource) lThis.addSource('circle', optsAll.circle, trace.cluster);\n    var order = ORDER.cluster;\n    for (var i = 0; i < order.length; i++) {\n      var k = order[i];\n      var opts = optsAll[k];\n      lThis.addLayer(k, opts, below);\n    }\n  }\n  function removeCluster(noSource) {\n    var order = ORDER.cluster;\n    for (var i = order.length - 1; i >= 0; i--) {\n      var k = order[i];\n      map.removeLayer(lThis.layerIds[k]);\n    }\n    if (!noSource) map.removeSource(lThis.sourceIds.circle);\n  }\n  function addNonCluster(noSource) {\n    var order = ORDER.nonCluster;\n    for (var i = 0; i < order.length; i++) {\n      var k = order[i];\n      var opts = optsAll[k];\n      if (!noSource) lThis.addSource(k, opts);\n      lThis.addLayer(k, opts, below);\n    }\n  }\n  function removeNonCluster(noSource) {\n    var order = ORDER.nonCluster;\n    for (var i = order.length - 1; i >= 0; i--) {\n      var k = order[i];\n      map.removeLayer(lThis.layerIds[k]);\n      if (!noSource) map.removeSource(lThis.sourceIds[k]);\n    }\n  }\n  function remove(noSource) {\n    if (hadCluster) removeCluster(noSource);else removeNonCluster(noSource);\n  }\n  function add(noSource) {\n    if (hasCluster) addCluster(noSource);else addNonCluster(noSource);\n  }\n  function repaint() {\n    var order = hasCluster ? ORDER.cluster : ORDER.nonCluster;\n    for (var i = 0; i < order.length; i++) {\n      var k = order[i];\n      var opts = optsAll[k];\n      if (!opts) continue;\n      subplot.setOptions(lThis.layerIds[k], 'setLayoutProperty', opts.layout);\n      if (opts.layout.visibility === 'visible') {\n        if (k !== 'cluster') {\n          lThis.setSourceData(k, opts);\n        }\n        subplot.setOptions(lThis.layerIds[k], 'setPaintProperty', opts.paint);\n      }\n    }\n  }\n  var wasHidden = this.isHidden;\n  var isHidden = trace.visible !== true;\n  if (isHidden) {\n    if (!wasHidden) remove();\n  } else if (wasHidden) {\n    if (!isHidden) add();\n  } else if (hadCluster !== hasCluster) {\n    remove();\n    add();\n  } else if (this.below !== below) {\n    remove(true);\n    add(true);\n    repaint();\n  } else {\n    repaint();\n  }\n  this.clusterEnabled = hasCluster;\n  this.isHidden = isHidden;\n  this.below = below;\n\n  // link ref for quick update during selections\n  calcTrace[0].trace._glTrace = this;\n};\nproto.dispose = function dispose() {\n  var map = this.subplot.map;\n  var order = this.clusterEnabled ? ORDER.cluster : ORDER.nonCluster;\n  for (var i = order.length - 1; i >= 0; i--) {\n    var k = order[i];\n    map.removeLayer(this.layerIds[k]);\n    map.removeSource(this.sourceIds[k]);\n  }\n};\nmodule.exports = function createScatterMapbox(subplot, calcTrace) {\n  var trace = calcTrace[0].trace;\n  var hasCluster = trace.cluster && trace.cluster.enabled;\n  var isHidden = trace.visible !== true;\n  var scatterMapbox = new ScatterMapbox(subplot, trace.uid, hasCluster, isHidden);\n  var optsAll = convert(subplot.gd, calcTrace);\n  var below = scatterMapbox.below = subplot.belowLookup['trace-' + trace.uid];\n  var i, k, opts;\n  if (hasCluster) {\n    scatterMapbox.addSource('circle', optsAll.circle, trace.cluster);\n    for (i = 0; i < ORDER.cluster.length; i++) {\n      k = ORDER.cluster[i];\n      opts = optsAll[k];\n      scatterMapbox.addLayer(k, opts, below);\n    }\n  } else {\n    for (i = 0; i < ORDER.nonCluster.length; i++) {\n      k = ORDER.nonCluster[i];\n      opts = optsAll[k];\n      scatterMapbox.addSource(k, opts, trace.cluster);\n      scatterMapbox.addLayer(k, opts, below);\n    }\n  }\n\n  // link ref for quick update during selections\n  calcTrace[0].trace._glTrace = scatterMapbox;\n  return scatterMapbox;\n};\n\n/***/ }),\n\n/***/ 86387:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3297565__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3297565__(71828);\nvar subtypes = __nested_webpack_require_3297565__(34098);\nvar BADNUM = (__nested_webpack_require_3297565__(50606).BADNUM);\nmodule.exports = function selectPoints(searchInfo, selectionTester) {\n  var cd = searchInfo.cd;\n  var xa = searchInfo.xaxis;\n  var ya = searchInfo.yaxis;\n  var selection = [];\n  var trace = cd[0].trace;\n  var i;\n  if (!subtypes.hasMarkers(trace)) return [];\n  if (selectionTester === false) {\n    for (i = 0; i < cd.length; i++) {\n      cd[i].selected = 0;\n    }\n  } else {\n    for (i = 0; i < cd.length; i++) {\n      var di = cd[i];\n      var lonlat = di.lonlat;\n      if (lonlat[0] !== BADNUM) {\n        var lonlat2 = [Lib.modHalf(lonlat[0], 360), lonlat[1]];\n        var xy = [xa.c2p(lonlat2), ya.c2p(lonlat2)];\n        if (selectionTester.contains(xy, null, i, searchInfo)) {\n          selection.push({\n            pointNumber: i,\n            lon: lonlat[0],\n            lat: lonlat[1]\n          });\n          di.selected = 1;\n        } else {\n          di.selected = 0;\n        }\n      }\n    }\n  }\n  return selection;\n};\n\n/***/ }),\n\n/***/ 81245:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3298737__) {\n\n\"use strict\";\n\n\nvar hovertemplateAttrs = (__nested_webpack_require_3298737__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_3298737__(5386)/* .texttemplateAttrs */ .s);\nvar extendFlat = (__nested_webpack_require_3298737__(1426).extendFlat);\nvar scatterAttrs = __nested_webpack_require_3298737__(82196);\nvar baseAttrs = __nested_webpack_require_3298737__(9012);\nvar lineAttrs = scatterAttrs.line;\nmodule.exports = {\n  mode: scatterAttrs.mode,\n  r: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  theta: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  r0: {\n    valType: 'any',\n    dflt: 0,\n    editType: 'calc+clearAxisTypes'\n  },\n  dr: {\n    valType: 'number',\n    dflt: 1,\n    editType: 'calc'\n  },\n  theta0: {\n    valType: 'any',\n    dflt: 0,\n    editType: 'calc+clearAxisTypes'\n  },\n  dtheta: {\n    valType: 'number',\n    editType: 'calc'\n  },\n  thetaunit: {\n    valType: 'enumerated',\n    values: ['radians', 'degrees', 'gradians'],\n    dflt: 'degrees',\n    editType: 'calc+clearAxisTypes'\n  },\n  text: scatterAttrs.text,\n  texttemplate: texttemplateAttrs({\n    editType: 'plot'\n  }, {\n    keys: ['r', 'theta', 'text']\n  }),\n  hovertext: scatterAttrs.hovertext,\n  line: {\n    color: lineAttrs.color,\n    width: lineAttrs.width,\n    dash: lineAttrs.dash,\n    backoff: lineAttrs.backoff,\n    shape: extendFlat({}, lineAttrs.shape, {\n      values: ['linear', 'spline']\n    }),\n    smoothing: lineAttrs.smoothing,\n    editType: 'calc'\n  },\n  connectgaps: scatterAttrs.connectgaps,\n  marker: scatterAttrs.marker,\n  cliponaxis: extendFlat({}, scatterAttrs.cliponaxis, {\n    dflt: false\n  }),\n  textposition: scatterAttrs.textposition,\n  textfont: scatterAttrs.textfont,\n  fill: extendFlat({}, scatterAttrs.fill, {\n    values: ['none', 'toself', 'tonext'],\n    dflt: 'none'\n  }),\n  fillcolor: scatterAttrs.fillcolor,\n  // TODO error bars\n  // https://stackoverflow.com/a/26597487/4068492\n  // error_x (error_r, error_theta)\n  // error_y\n\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {\n    flags: ['r', 'theta', 'text', 'name']\n  }),\n  hoveron: scatterAttrs.hoveron,\n  hovertemplate: hovertemplateAttrs(),\n  selected: scatterAttrs.selected,\n  unselected: scatterAttrs.unselected\n};\n\n/***/ }),\n\n/***/ 26442:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3301030__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_3301030__(92770);\nvar BADNUM = (__nested_webpack_require_3301030__(50606).BADNUM);\nvar Axes = __nested_webpack_require_3301030__(89298);\nvar calcColorscale = __nested_webpack_require_3301030__(36922);\nvar arraysToCalcdata = __nested_webpack_require_3301030__(75225);\nvar calcSelection = __nested_webpack_require_3301030__(66279);\nvar calcMarkerSize = (__nested_webpack_require_3301030__(47761).calcMarkerSize);\nmodule.exports = function calc(gd, trace) {\n  var fullLayout = gd._fullLayout;\n  var subplotId = trace.subplot;\n  var radialAxis = fullLayout[subplotId].radialaxis;\n  var angularAxis = fullLayout[subplotId].angularaxis;\n  var rArray = radialAxis.makeCalcdata(trace, 'r');\n  var thetaArray = angularAxis.makeCalcdata(trace, 'theta');\n  var len = trace._length;\n  var cd = new Array(len);\n  for (var i = 0; i < len; i++) {\n    var r = rArray[i];\n    var theta = thetaArray[i];\n    var cdi = cd[i] = {};\n    if (isNumeric(r) && isNumeric(theta)) {\n      cdi.r = r;\n      cdi.theta = theta;\n    } else {\n      cdi.r = BADNUM;\n    }\n  }\n  var ppad = calcMarkerSize(trace, len);\n  trace._extremes.x = Axes.findExtremes(radialAxis, rArray, {\n    ppad: ppad\n  });\n  calcColorscale(gd, trace);\n  arraysToCalcdata(cd, trace);\n  calcSelection(cd, trace);\n  return cd;\n};\n\n/***/ }),\n\n/***/ 22184:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3302352__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3302352__(71828);\nvar subTypes = __nested_webpack_require_3302352__(34098);\nvar handleMarkerDefaults = __nested_webpack_require_3302352__(49508);\nvar handleLineDefaults = __nested_webpack_require_3302352__(11058);\nvar handleLineShapeDefaults = __nested_webpack_require_3302352__(94039);\nvar handleTextDefaults = __nested_webpack_require_3302352__(82410);\nvar handleFillColorDefaults = __nested_webpack_require_3302352__(28908);\nvar PTS_LINESONLY = (__nested_webpack_require_3302352__(47581).PTS_LINESONLY);\nvar attributes = __nested_webpack_require_3302352__(81245);\nfunction supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var len = handleRThetaDefaults(traceIn, traceOut, layout, coerce);\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  coerce('thetaunit');\n  coerce('mode', len < PTS_LINESONLY ? 'lines+markers' : 'lines');\n  coerce('text');\n  coerce('hovertext');\n  if (traceOut.hoveron !== 'fills') coerce('hovertemplate');\n  if (subTypes.hasLines(traceOut)) {\n    handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce, {\n      backoff: true\n    });\n    handleLineShapeDefaults(traceIn, traceOut, coerce);\n    coerce('connectgaps');\n  }\n  if (subTypes.hasMarkers(traceOut)) {\n    handleMarkerDefaults(traceIn, traceOut, defaultColor, layout, coerce, {\n      gradient: true\n    });\n  }\n  if (subTypes.hasText(traceOut)) {\n    coerce('texttemplate');\n    handleTextDefaults(traceIn, traceOut, layout, coerce);\n  }\n  var dfltHoverOn = [];\n  if (subTypes.hasMarkers(traceOut) || subTypes.hasText(traceOut)) {\n    coerce('cliponaxis');\n    coerce('marker.maxdisplayed');\n    dfltHoverOn.push('points');\n  }\n  coerce('fill');\n  if (traceOut.fill !== 'none') {\n    handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce);\n    if (!subTypes.hasLines(traceOut)) handleLineShapeDefaults(traceIn, traceOut, coerce);\n  }\n  if (traceOut.fill === 'tonext' || traceOut.fill === 'toself') {\n    dfltHoverOn.push('fills');\n  }\n  coerce('hoveron', dfltHoverOn.join('+') || 'points');\n  Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n}\nfunction handleRThetaDefaults(traceIn, traceOut, layout, coerce) {\n  var r = coerce('r');\n  var theta = coerce('theta');\n  var len;\n  if (r) {\n    if (theta) {\n      len = Math.min(r.length, theta.length);\n    } else {\n      len = r.length;\n      coerce('theta0');\n      coerce('dtheta');\n    }\n  } else {\n    if (!theta) return 0;\n    len = traceOut.theta.length;\n    coerce('r0');\n    coerce('dr');\n  }\n  traceOut._length = len;\n  return len;\n}\nmodule.exports = {\n  handleRThetaDefaults: handleRThetaDefaults,\n  supplyDefaults: supplyDefaults\n};\n\n/***/ }),\n\n/***/ 98608:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3305092__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3305092__(71828);\nvar Axes = __nested_webpack_require_3305092__(89298);\nmodule.exports = function formatLabels(cdi, trace, fullLayout) {\n  var labels = {};\n  var subplot = fullLayout[trace.subplot]._subplot;\n  var radialAxis;\n  var angularAxis;\n\n  // for scatterpolargl texttemplate, _subplot is NOT defined, this takes part during the convert step\n  // TODO we should consider moving the texttemplate formatting logic to the plot step\n  if (!subplot) {\n    subplot = fullLayout[trace.subplot];\n    radialAxis = subplot.radialaxis;\n    angularAxis = subplot.angularaxis;\n  } else {\n    radialAxis = subplot.radialAxis;\n    angularAxis = subplot.angularAxis;\n  }\n  var rVal = radialAxis.c2l(cdi.r);\n  labels.rLabel = Axes.tickText(radialAxis, rVal, true).text;\n\n  // N.B here the ° sign is part of the formatted value for thetaunit:'degrees'\n  var thetaVal = angularAxis.thetaunit === 'degrees' ? Lib.rad2deg(cdi.theta) : cdi.theta;\n  labels.thetaLabel = Axes.tickText(angularAxis, thetaVal, true).text;\n  return labels;\n};\n\n/***/ }),\n\n/***/ 59150:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3306235__) {\n\n\"use strict\";\n\n\nvar scatterHover = __nested_webpack_require_3306235__(33720);\nfunction hoverPoints(pointData, xval, yval, hovermode) {\n  var scatterPointData = scatterHover(pointData, xval, yval, hovermode);\n  if (!scatterPointData || scatterPointData[0].index === false) return;\n  var newPointData = scatterPointData[0];\n\n  // hovering on fill case\n  if (newPointData.index === undefined) {\n    return scatterPointData;\n  }\n  var subplot = pointData.subplot;\n  var cdi = newPointData.cd[newPointData.index];\n  var trace = newPointData.trace;\n  if (!subplot.isPtInside(cdi)) return;\n  newPointData.xLabelVal = undefined;\n  newPointData.yLabelVal = undefined;\n  makeHoverPointText(cdi, trace, subplot, newPointData);\n  newPointData.hovertemplate = trace.hovertemplate;\n  return scatterPointData;\n}\nfunction makeHoverPointText(cdi, trace, subplot, pointData) {\n  var radialAxis = subplot.radialAxis;\n  var angularAxis = subplot.angularAxis;\n  radialAxis._hovertitle = 'r';\n  angularAxis._hovertitle = 'θ';\n  var fullLayout = {};\n  fullLayout[trace.subplot] = {\n    _subplot: subplot\n  };\n  var labels = trace._module.formatLabels(cdi, trace, fullLayout);\n  pointData.rLabel = labels.rLabel;\n  pointData.thetaLabel = labels.thetaLabel;\n  var hoverinfo = cdi.hi || trace.hoverinfo;\n  var text = [];\n  function textPart(ax, val) {\n    text.push(ax._hovertitle + ': ' + val);\n  }\n  if (!trace.hovertemplate) {\n    var parts = hoverinfo.split('+');\n    if (parts.indexOf('all') !== -1) parts = ['r', 'theta', 'text'];\n    if (parts.indexOf('r') !== -1) textPart(radialAxis, pointData.rLabel);\n    if (parts.indexOf('theta') !== -1) textPart(angularAxis, pointData.thetaLabel);\n    if (parts.indexOf('text') !== -1 && pointData.text) {\n      text.push(pointData.text);\n      delete pointData.text;\n    }\n    pointData.extraText = text.join('<br>');\n  }\n}\nmodule.exports = {\n  hoverPoints: hoverPoints,\n  makeHoverPointText: makeHoverPointText\n};\n\n/***/ }),\n\n/***/ 91271:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3308257__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'trace',\n  name: 'scatterpolar',\n  basePlotModule: __nested_webpack_require_3308257__(23580),\n  categories: ['polar', 'symbols', 'showLegend', 'scatter-like'],\n  attributes: __nested_webpack_require_3308257__(81245),\n  supplyDefaults: (__nested_webpack_require_3308257__(22184).supplyDefaults),\n  colorbar: __nested_webpack_require_3308257__(4898),\n  formatLabels: __nested_webpack_require_3308257__(98608),\n  calc: __nested_webpack_require_3308257__(26442),\n  plot: __nested_webpack_require_3308257__(45162),\n  style: (__nested_webpack_require_3308257__(16296).style),\n  styleOnSelect: (__nested_webpack_require_3308257__(16296).styleOnSelect),\n  hoverPoints: (__nested_webpack_require_3308257__(59150).hoverPoints),\n  selectPoints: __nested_webpack_require_3308257__(98002),\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 45162:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3309031__) {\n\n\"use strict\";\n\n\nvar scatterPlot = __nested_webpack_require_3309031__(32663);\nvar BADNUM = (__nested_webpack_require_3309031__(50606).BADNUM);\nmodule.exports = function plot(gd, subplot, moduleCalcData) {\n  var mlayer = subplot.layers.frontplot.select('g.scatterlayer');\n  var xa = subplot.xaxis;\n  var ya = subplot.yaxis;\n  var plotinfo = {\n    xaxis: xa,\n    yaxis: ya,\n    plot: subplot.framework,\n    layerClipId: subplot._hasClipOnAxisFalse ? subplot.clipIds.forTraces : null\n  };\n  var radialAxis = subplot.radialAxis;\n  var angularAxis = subplot.angularAxis;\n\n  // convert:\n  // 'c' (r,theta) -> 'geometric' (r,theta) -> (x,y)\n  for (var i = 0; i < moduleCalcData.length; i++) {\n    var cdi = moduleCalcData[i];\n    for (var j = 0; j < cdi.length; j++) {\n      if (j === 0) {\n        cdi[0].trace._xA = xa;\n        cdi[0].trace._yA = ya;\n      }\n      var cd = cdi[j];\n      var r = cd.r;\n      if (r === BADNUM) {\n        cd.x = cd.y = BADNUM;\n      } else {\n        var rg = radialAxis.c2g(r);\n        var thetag = angularAxis.c2g(cd.theta);\n        cd.x = rg * Math.cos(thetag);\n        cd.y = rg * Math.sin(thetag);\n      }\n    }\n  }\n  scatterPlot(gd, plotinfo, moduleCalcData, mlayer);\n};\n\n/***/ }),\n\n/***/ 53286:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3310300__) {\n\n\"use strict\";\n\n\nvar scatterPolarAttrs = __nested_webpack_require_3310300__(81245);\nvar scatterGlAttrs = __nested_webpack_require_3310300__(42341);\nvar texttemplateAttrs = (__nested_webpack_require_3310300__(5386)/* .texttemplateAttrs */ .s);\nmodule.exports = {\n  mode: scatterPolarAttrs.mode,\n  r: scatterPolarAttrs.r,\n  theta: scatterPolarAttrs.theta,\n  r0: scatterPolarAttrs.r0,\n  dr: scatterPolarAttrs.dr,\n  theta0: scatterPolarAttrs.theta0,\n  dtheta: scatterPolarAttrs.dtheta,\n  thetaunit: scatterPolarAttrs.thetaunit,\n  text: scatterPolarAttrs.text,\n  texttemplate: texttemplateAttrs({\n    editType: 'plot'\n  }, {\n    keys: ['r', 'theta', 'text']\n  }),\n  hovertext: scatterPolarAttrs.hovertext,\n  hovertemplate: scatterPolarAttrs.hovertemplate,\n  line: scatterGlAttrs.line,\n  connectgaps: scatterGlAttrs.connectgaps,\n  marker: scatterGlAttrs.marker,\n  // no cliponaxis\n\n  fill: scatterGlAttrs.fill,\n  fillcolor: scatterGlAttrs.fillcolor,\n  textposition: scatterGlAttrs.textposition,\n  textfont: scatterGlAttrs.textfont,\n  hoverinfo: scatterPolarAttrs.hoverinfo,\n  // no hoveron\n\n  selected: scatterPolarAttrs.selected,\n  unselected: scatterPolarAttrs.unselected\n};\n\n/***/ }),\n\n/***/ 65746:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3311524__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'trace',\n  name: 'scatterpolargl',\n  basePlotModule: __nested_webpack_require_3311524__(23580),\n  categories: ['gl', 'regl', 'polar', 'symbols', 'showLegend', 'scatter-like'],\n  attributes: __nested_webpack_require_3311524__(53286),\n  supplyDefaults: __nested_webpack_require_3311524__(75485),\n  colorbar: __nested_webpack_require_3311524__(4898),\n  formatLabels: __nested_webpack_require_3311524__(46255),\n  calc: __nested_webpack_require_3311524__(37499),\n  hoverPoints: (__nested_webpack_require_3311524__(29347).hoverPoints),\n  selectPoints: __nested_webpack_require_3311524__(58147),\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 37499:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3312155__) {\n\n\"use strict\";\n\n\nvar calcColorscale = __nested_webpack_require_3312155__(36922);\nvar calcMarkerSize = (__nested_webpack_require_3312155__(47761).calcMarkerSize);\nvar convert = __nested_webpack_require_3312155__(19635);\nvar Axes = __nested_webpack_require_3312155__(89298);\nvar TOO_MANY_POINTS = (__nested_webpack_require_3312155__(78232).TOO_MANY_POINTS);\nmodule.exports = function calc(gd, trace) {\n  var fullLayout = gd._fullLayout;\n  var subplotId = trace.subplot;\n  var radialAxis = fullLayout[subplotId].radialaxis;\n  var angularAxis = fullLayout[subplotId].angularaxis;\n  var rArray = trace._r = radialAxis.makeCalcdata(trace, 'r');\n  var thetaArray = trace._theta = angularAxis.makeCalcdata(trace, 'theta');\n  var len = trace._length;\n  var stash = {};\n  if (len < rArray.length) rArray = rArray.slice(0, len);\n  if (len < thetaArray.length) thetaArray = thetaArray.slice(0, len);\n  stash.r = rArray;\n  stash.theta = thetaArray;\n  calcColorscale(gd, trace);\n\n  // only compute 'style' options in calc, as position options\n  // depend on the radial range and must be set in plot\n  var opts = stash.opts = convert.style(gd, trace);\n\n  // For graphs with very large number of points and array marker.size,\n  // use average marker size instead to speed things up.\n  var ppad;\n  if (len < TOO_MANY_POINTS) {\n    ppad = calcMarkerSize(trace, len);\n  } else if (opts.marker) {\n    ppad = 2 * (opts.marker.sizeAvg || Math.max(opts.marker.size, 3));\n  }\n  trace._extremes.x = Axes.findExtremes(radialAxis, rArray, {\n    ppad: ppad\n  });\n  return [{\n    x: false,\n    y: false,\n    t: stash,\n    trace: trace\n  }];\n};\n\n/***/ }),\n\n/***/ 75485:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3313793__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3313793__(71828);\nvar subTypes = __nested_webpack_require_3313793__(34098);\nvar handleRThetaDefaults = (__nested_webpack_require_3313793__(22184).handleRThetaDefaults);\nvar handleMarkerDefaults = __nested_webpack_require_3313793__(49508);\nvar handleLineDefaults = __nested_webpack_require_3313793__(11058);\nvar handleTextDefaults = __nested_webpack_require_3313793__(82410);\nvar handleFillColorDefaults = __nested_webpack_require_3313793__(28908);\nvar PTS_LINESONLY = (__nested_webpack_require_3313793__(47581).PTS_LINESONLY);\nvar attributes = __nested_webpack_require_3313793__(53286);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var len = handleRThetaDefaults(traceIn, traceOut, layout, coerce);\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  coerce('thetaunit');\n  coerce('mode', len < PTS_LINESONLY ? 'lines+markers' : 'lines');\n  coerce('text');\n  coerce('hovertext');\n  if (traceOut.hoveron !== 'fills') coerce('hovertemplate');\n  if (subTypes.hasLines(traceOut)) {\n    handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce);\n    coerce('connectgaps');\n  }\n  if (subTypes.hasMarkers(traceOut)) {\n    handleMarkerDefaults(traceIn, traceOut, defaultColor, layout, coerce, {\n      noAngleRef: true,\n      noStandOff: true\n    });\n  }\n  if (subTypes.hasText(traceOut)) {\n    coerce('texttemplate');\n    handleTextDefaults(traceIn, traceOut, layout, coerce);\n  }\n  coerce('fill');\n  if (traceOut.fill !== 'none') {\n    handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce);\n  }\n  Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n};\n\n/***/ }),\n\n/***/ 46255:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3315527__) {\n\n\"use strict\";\n\n\nvar scatterPolarFormatLabels = __nested_webpack_require_3315527__(98608);\nmodule.exports = function formatLabels(cdi, trace, fullLayout) {\n  var i = cdi.i;\n  if (!('r' in cdi)) cdi.r = trace._r[i];\n  if (!('theta' in cdi)) cdi.theta = trace._theta[i];\n  return scatterPolarFormatLabels(cdi, trace, fullLayout);\n};\n\n/***/ }),\n\n/***/ 29347:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3315941__) {\n\n\"use strict\";\n\n\nvar hover = __nested_webpack_require_3315941__(20794);\nvar makeHoverPointText = (__nested_webpack_require_3315941__(59150).makeHoverPointText);\nfunction hoverPoints(pointData, xval, yval, hovermode) {\n  var cd = pointData.cd;\n  var stash = cd[0].t;\n  var rArray = stash.r;\n  var thetaArray = stash.theta;\n  var scatterPointData = hover.hoverPoints(pointData, xval, yval, hovermode);\n  if (!scatterPointData || scatterPointData[0].index === false) return;\n  var newPointData = scatterPointData[0];\n  if (newPointData.index === undefined) {\n    return scatterPointData;\n  }\n  var subplot = pointData.subplot;\n  var cdi = newPointData.cd[newPointData.index];\n  var trace = newPointData.trace;\n\n  // augment pointData with r/theta param\n  cdi.r = rArray[newPointData.index];\n  cdi.theta = thetaArray[newPointData.index];\n  if (!subplot.isPtInside(cdi)) return;\n  newPointData.xLabelVal = undefined;\n  newPointData.yLabelVal = undefined;\n  makeHoverPointText(cdi, trace, subplot, newPointData);\n  return scatterPointData;\n}\nmodule.exports = {\n  hoverPoints: hoverPoints\n};\n\n/***/ }),\n\n/***/ 21461:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3317094__) {\n\n\"use strict\";\n\n\nvar index = __nested_webpack_require_3317094__(65746);\nindex.plot = __nested_webpack_require_3317094__(49741);\nmodule.exports = index;\n\n/***/ }),\n\n/***/ 49741:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3317314__) {\n\n\"use strict\";\n\n\nvar cluster = __nested_webpack_require_3317314__(88294);\nvar isNumeric = __nested_webpack_require_3317314__(92770);\nvar scatterglPlot = __nested_webpack_require_3317314__(26787);\nvar sceneUpdate = __nested_webpack_require_3317314__(38967);\nvar convert = __nested_webpack_require_3317314__(19635);\nvar Lib = __nested_webpack_require_3317314__(71828);\nvar TOO_MANY_POINTS = (__nested_webpack_require_3317314__(78232).TOO_MANY_POINTS);\nvar reglPrecompiled = {};\nmodule.exports = function plot(gd, subplot, cdata) {\n  if (!cdata.length) return;\n  var radialAxis = subplot.radialAxis;\n  var angularAxis = subplot.angularAxis;\n  var scene = sceneUpdate(gd, subplot);\n  cdata.forEach(function (cdscatter) {\n    if (!cdscatter || !cdscatter[0] || !cdscatter[0].trace) return;\n    var cd = cdscatter[0];\n    var trace = cd.trace;\n    var stash = cd.t;\n    var len = trace._length;\n    var rArray = stash.r;\n    var thetaArray = stash.theta;\n    var opts = stash.opts;\n    var i;\n    var subRArray = rArray.slice();\n    var subThetaArray = thetaArray.slice();\n\n    // filter out by range\n    for (i = 0; i < rArray.length; i++) {\n      if (!subplot.isPtInside({\n        r: rArray[i],\n        theta: thetaArray[i]\n      })) {\n        subRArray[i] = NaN;\n        subThetaArray[i] = NaN;\n      }\n    }\n    var positions = new Array(len * 2);\n    var x = Array(len);\n    var y = Array(len);\n    for (i = 0; i < len; i++) {\n      var r = subRArray[i];\n      var xx, yy;\n      if (isNumeric(r)) {\n        var rg = radialAxis.c2g(r);\n        var thetag = angularAxis.c2g(subThetaArray[i], trace.thetaunit);\n        xx = rg * Math.cos(thetag);\n        yy = rg * Math.sin(thetag);\n      } else {\n        xx = yy = NaN;\n      }\n      x[i] = positions[i * 2] = xx;\n      y[i] = positions[i * 2 + 1] = yy;\n    }\n    stash.tree = cluster(positions);\n\n    // FIXME: see scattergl.js#109\n    if (opts.marker && len >= TOO_MANY_POINTS) {\n      opts.marker.cluster = stash.tree;\n    }\n    if (opts.marker) {\n      opts.markerSel.positions = opts.markerUnsel.positions = opts.marker.positions = positions;\n    }\n    if (opts.line && positions.length > 1) {\n      Lib.extendFlat(opts.line, convert.linePositions(gd, trace, positions));\n    }\n    if (opts.text) {\n      Lib.extendFlat(opts.text, {\n        positions: positions\n      }, convert.textPosition(gd, trace, opts.text, opts.marker));\n      Lib.extendFlat(opts.textSel, {\n        positions: positions\n      }, convert.textPosition(gd, trace, opts.text, opts.markerSel));\n      Lib.extendFlat(opts.textUnsel, {\n        positions: positions\n      }, convert.textPosition(gd, trace, opts.text, opts.markerUnsel));\n    }\n    if (opts.fill && !scene.fill2d) scene.fill2d = true;\n    if (opts.marker && !scene.scatter2d) scene.scatter2d = true;\n    if (opts.line && !scene.line2d) scene.line2d = true;\n    if (opts.text && !scene.glText) scene.glText = true;\n    scene.lineOptions.push(opts.line);\n    scene.fillOptions.push(opts.fill);\n    scene.markerOptions.push(opts.marker);\n    scene.markerSelectedOptions.push(opts.markerSel);\n    scene.markerUnselectedOptions.push(opts.markerUnsel);\n    scene.textOptions.push(opts.text);\n    scene.textSelectedOptions.push(opts.textSel);\n    scene.textUnselectedOptions.push(opts.textUnsel);\n    scene.selectBatch.push([]);\n    scene.unselectBatch.push([]);\n    stash.x = x;\n    stash.y = y;\n    stash.rawx = x;\n    stash.rawy = y;\n    stash.r = rArray;\n    stash.theta = thetaArray;\n    stash.positions = positions;\n    stash._scene = scene;\n    stash.index = scene.count;\n    scene.count++;\n  });\n  return scatterglPlot(gd, subplot, cdata);\n};\nmodule.exports.reglPrecompiled = reglPrecompiled;\n\n/***/ }),\n\n/***/ 48300:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3320986__) {\n\n\"use strict\";\n\n\nvar hovertemplateAttrs = (__nested_webpack_require_3320986__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_3320986__(5386)/* .texttemplateAttrs */ .s);\nvar extendFlat = (__nested_webpack_require_3320986__(1426).extendFlat);\nvar scatterAttrs = __nested_webpack_require_3320986__(82196);\nvar baseAttrs = __nested_webpack_require_3320986__(9012);\nvar lineAttrs = scatterAttrs.line;\nmodule.exports = {\n  mode: scatterAttrs.mode,\n  real: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  imag: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  text: scatterAttrs.text,\n  texttemplate: texttemplateAttrs({\n    editType: 'plot'\n  }, {\n    keys: ['real', 'imag', 'text']\n  }),\n  hovertext: scatterAttrs.hovertext,\n  line: {\n    color: lineAttrs.color,\n    width: lineAttrs.width,\n    dash: lineAttrs.dash,\n    backoff: lineAttrs.backoff,\n    shape: extendFlat({}, lineAttrs.shape, {\n      values: ['linear', 'spline']\n    }),\n    smoothing: lineAttrs.smoothing,\n    editType: 'calc'\n  },\n  connectgaps: scatterAttrs.connectgaps,\n  marker: scatterAttrs.marker,\n  cliponaxis: extendFlat({}, scatterAttrs.cliponaxis, {\n    dflt: false\n  }),\n  textposition: scatterAttrs.textposition,\n  textfont: scatterAttrs.textfont,\n  fill: extendFlat({}, scatterAttrs.fill, {\n    values: ['none', 'toself', 'tonext'],\n    dflt: 'none'\n  }),\n  fillcolor: scatterAttrs.fillcolor,\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {\n    flags: ['real', 'imag', 'text', 'name']\n  }),\n  hoveron: scatterAttrs.hoveron,\n  hovertemplate: hovertemplateAttrs(),\n  selected: scatterAttrs.selected,\n  unselected: scatterAttrs.unselected\n};\n\n/***/ }),\n\n/***/ 30621:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3322713__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_3322713__(92770);\nvar BADNUM = (__nested_webpack_require_3322713__(50606).BADNUM);\nvar calcColorscale = __nested_webpack_require_3322713__(36922);\nvar arraysToCalcdata = __nested_webpack_require_3322713__(75225);\nvar calcSelection = __nested_webpack_require_3322713__(66279);\nvar calcMarkerSize = (__nested_webpack_require_3322713__(47761).calcMarkerSize);\nmodule.exports = function calc(gd, trace) {\n  var fullLayout = gd._fullLayout;\n  var subplotId = trace.subplot;\n  var realAxis = fullLayout[subplotId].realaxis;\n  var imaginaryAxis = fullLayout[subplotId].imaginaryaxis;\n  var realArray = realAxis.makeCalcdata(trace, 'real');\n  var imagArray = imaginaryAxis.makeCalcdata(trace, 'imag');\n  var len = trace._length;\n  var cd = new Array(len);\n  for (var i = 0; i < len; i++) {\n    var real = realArray[i];\n    var imag = imagArray[i];\n    var cdi = cd[i] = {};\n    if (isNumeric(real) && isNumeric(imag)) {\n      cdi.real = real;\n      cdi.imag = imag;\n    } else {\n      cdi.real = BADNUM;\n    }\n  }\n  calcMarkerSize(trace, len);\n  calcColorscale(gd, trace);\n  arraysToCalcdata(cd, trace);\n  calcSelection(cd, trace);\n  return cd;\n};\n\n/***/ }),\n\n/***/ 65269:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3323919__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3323919__(71828);\nvar subTypes = __nested_webpack_require_3323919__(34098);\nvar handleMarkerDefaults = __nested_webpack_require_3323919__(49508);\nvar handleLineDefaults = __nested_webpack_require_3323919__(11058);\nvar handleLineShapeDefaults = __nested_webpack_require_3323919__(94039);\nvar handleTextDefaults = __nested_webpack_require_3323919__(82410);\nvar handleFillColorDefaults = __nested_webpack_require_3323919__(28908);\nvar PTS_LINESONLY = (__nested_webpack_require_3323919__(47581).PTS_LINESONLY);\nvar attributes = __nested_webpack_require_3323919__(48300);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var len = handleRealImagDefaults(traceIn, traceOut, layout, coerce);\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  coerce('mode', len < PTS_LINESONLY ? 'lines+markers' : 'lines');\n  coerce('text');\n  coerce('hovertext');\n  if (traceOut.hoveron !== 'fills') coerce('hovertemplate');\n  if (subTypes.hasLines(traceOut)) {\n    handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce, {\n      backoff: true\n    });\n    handleLineShapeDefaults(traceIn, traceOut, coerce);\n    coerce('connectgaps');\n  }\n  if (subTypes.hasMarkers(traceOut)) {\n    handleMarkerDefaults(traceIn, traceOut, defaultColor, layout, coerce, {\n      gradient: true\n    });\n  }\n  if (subTypes.hasText(traceOut)) {\n    coerce('texttemplate');\n    handleTextDefaults(traceIn, traceOut, layout, coerce);\n  }\n  var dfltHoverOn = [];\n  if (subTypes.hasMarkers(traceOut) || subTypes.hasText(traceOut)) {\n    coerce('cliponaxis');\n    coerce('marker.maxdisplayed');\n    dfltHoverOn.push('points');\n  }\n  coerce('fill');\n  if (traceOut.fill !== 'none') {\n    handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce);\n    if (!subTypes.hasLines(traceOut)) handleLineShapeDefaults(traceIn, traceOut, coerce);\n  }\n  if (traceOut.fill === 'tonext' || traceOut.fill === 'toself') {\n    dfltHoverOn.push('fills');\n  }\n  coerce('hoveron', dfltHoverOn.join('+') || 'points');\n  Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n};\nfunction handleRealImagDefaults(traceIn, traceOut, layout, coerce) {\n  var real = coerce('real');\n  var imag = coerce('imag');\n  var len;\n  if (real && imag) {\n    len = Math.min(real.length, imag.length);\n  }\n  traceOut._length = len;\n  return len;\n}\n\n/***/ }),\n\n/***/ 62047:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3326360__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_3326360__(89298);\nmodule.exports = function formatLabels(cdi, trace, fullLayout) {\n  var labels = {};\n  var subplot = fullLayout[trace.subplot]._subplot;\n  labels.realLabel = Axes.tickText(subplot.radialAxis, cdi.real, true).text;\n  labels.imagLabel = Axes.tickText(subplot.angularAxis, cdi.imag, true).text;\n  return labels;\n};\n\n/***/ }),\n\n/***/ 11350:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3326825__) {\n\n\"use strict\";\n\n\nvar scatterHover = __nested_webpack_require_3326825__(33720);\nfunction hoverPoints(pointData, xval, yval, hovermode) {\n  var scatterPointData = scatterHover(pointData, xval, yval, hovermode);\n  if (!scatterPointData || scatterPointData[0].index === false) return;\n  var newPointData = scatterPointData[0];\n\n  // hovering on fill case\n  if (newPointData.index === undefined) {\n    return scatterPointData;\n  }\n  var subplot = pointData.subplot;\n  var cdi = newPointData.cd[newPointData.index];\n  var trace = newPointData.trace;\n  if (!subplot.isPtInside(cdi)) return;\n  newPointData.xLabelVal = undefined;\n  newPointData.yLabelVal = undefined;\n  makeHoverPointText(cdi, trace, subplot, newPointData);\n  newPointData.hovertemplate = trace.hovertemplate;\n  return scatterPointData;\n}\nfunction makeHoverPointText(cdi, trace, subplot, pointData) {\n  var realAxis = subplot.radialAxis;\n  var imaginaryAxis = subplot.angularAxis;\n  realAxis._hovertitle = 'real';\n  imaginaryAxis._hovertitle = 'imag';\n  var fullLayout = {};\n  fullLayout[trace.subplot] = {\n    _subplot: subplot\n  };\n  var labels = trace._module.formatLabels(cdi, trace, fullLayout);\n  pointData.realLabel = labels.realLabel;\n  pointData.imagLabel = labels.imagLabel;\n  var hoverinfo = cdi.hi || trace.hoverinfo;\n  var text = [];\n  function textPart(ax, val) {\n    text.push(ax._hovertitle + ': ' + val);\n  }\n  if (!trace.hovertemplate) {\n    var parts = hoverinfo.split('+');\n    if (parts.indexOf('all') !== -1) parts = ['real', 'imag', 'text'];\n    if (parts.indexOf('real') !== -1) textPart(realAxis, pointData.realLabel);\n    if (parts.indexOf('imag') !== -1) textPart(imaginaryAxis, pointData.imagLabel);\n    if (parts.indexOf('text') !== -1 && pointData.text) {\n      text.push(pointData.text);\n      delete pointData.text;\n    }\n    pointData.extraText = text.join('<br>');\n  }\n}\nmodule.exports = {\n  hoverPoints: hoverPoints,\n  makeHoverPointText: makeHoverPointText\n};\n\n/***/ }),\n\n/***/ 85956:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3328863__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'trace',\n  name: 'scattersmith',\n  basePlotModule: __nested_webpack_require_3328863__(7504),\n  categories: ['smith', 'symbols', 'showLegend', 'scatter-like'],\n  attributes: __nested_webpack_require_3328863__(48300),\n  supplyDefaults: __nested_webpack_require_3328863__(65269),\n  colorbar: __nested_webpack_require_3328863__(4898),\n  formatLabels: __nested_webpack_require_3328863__(62047),\n  calc: __nested_webpack_require_3328863__(30621),\n  plot: __nested_webpack_require_3328863__(12480),\n  style: (__nested_webpack_require_3328863__(16296).style),\n  styleOnSelect: (__nested_webpack_require_3328863__(16296).styleOnSelect),\n  hoverPoints: (__nested_webpack_require_3328863__(11350).hoverPoints),\n  selectPoints: __nested_webpack_require_3328863__(98002),\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 12480:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3329619__) {\n\n\"use strict\";\n\n\nvar scatterPlot = __nested_webpack_require_3329619__(32663);\nvar BADNUM = (__nested_webpack_require_3329619__(50606).BADNUM);\nvar helpers = __nested_webpack_require_3329619__(23893);\nvar smith = helpers.smith;\nmodule.exports = function plot(gd, subplot, moduleCalcData) {\n  var mlayer = subplot.layers.frontplot.select('g.scatterlayer');\n  var xa = subplot.xaxis;\n  var ya = subplot.yaxis;\n  var plotinfo = {\n    xaxis: xa,\n    yaxis: ya,\n    plot: subplot.framework,\n    layerClipId: subplot._hasClipOnAxisFalse ? subplot.clipIds.forTraces : null\n  };\n\n  // convert:\n  // 'c' (real,imag) -> (x,y)\n  for (var i = 0; i < moduleCalcData.length; i++) {\n    var cdi = moduleCalcData[i];\n    for (var j = 0; j < cdi.length; j++) {\n      if (j === 0) {\n        cdi[0].trace._xA = xa;\n        cdi[0].trace._yA = ya;\n      }\n      var cd = cdi[j];\n      var real = cd.real;\n      if (real === BADNUM) {\n        cd.x = cd.y = BADNUM;\n      } else {\n        var t = smith([real, cd.imag]);\n        cd.x = t[0];\n        cd.y = t[1];\n      }\n    }\n  }\n  scatterPlot(gd, plotinfo, moduleCalcData, mlayer);\n};\n\n/***/ }),\n\n/***/ 50413:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3330785__) {\n\n\"use strict\";\n\n\nvar hovertemplateAttrs = (__nested_webpack_require_3330785__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_3330785__(5386)/* .texttemplateAttrs */ .s);\nvar scatterAttrs = __nested_webpack_require_3330785__(82196);\nvar baseAttrs = __nested_webpack_require_3330785__(9012);\nvar colorScaleAttrs = __nested_webpack_require_3330785__(50693);\nvar dash = (__nested_webpack_require_3330785__(79952)/* .dash */ .P);\nvar extendFlat = (__nested_webpack_require_3330785__(1426).extendFlat);\nvar scatterMarkerAttrs = scatterAttrs.marker;\nvar scatterLineAttrs = scatterAttrs.line;\nvar scatterMarkerLineAttrs = scatterMarkerAttrs.line;\nmodule.exports = {\n  a: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  b: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  c: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  sum: {\n    valType: 'number',\n    dflt: 0,\n    min: 0,\n    editType: 'calc'\n  },\n  mode: extendFlat({}, scatterAttrs.mode, {\n    dflt: 'markers'\n  }),\n  text: extendFlat({}, scatterAttrs.text, {}),\n  texttemplate: texttemplateAttrs({\n    editType: 'plot'\n  }, {\n    keys: ['a', 'b', 'c', 'text']\n  }),\n  hovertext: extendFlat({}, scatterAttrs.hovertext, {}),\n  line: {\n    color: scatterLineAttrs.color,\n    width: scatterLineAttrs.width,\n    dash: dash,\n    backoff: scatterLineAttrs.backoff,\n    shape: extendFlat({}, scatterLineAttrs.shape, {\n      values: ['linear', 'spline']\n    }),\n    smoothing: scatterLineAttrs.smoothing,\n    editType: 'calc'\n  },\n  connectgaps: scatterAttrs.connectgaps,\n  cliponaxis: scatterAttrs.cliponaxis,\n  fill: extendFlat({}, scatterAttrs.fill, {\n    values: ['none', 'toself', 'tonext'],\n    dflt: 'none'\n  }),\n  fillcolor: scatterAttrs.fillcolor,\n  marker: extendFlat({\n    symbol: scatterMarkerAttrs.symbol,\n    opacity: scatterMarkerAttrs.opacity,\n    angle: scatterMarkerAttrs.angle,\n    angleref: scatterMarkerAttrs.angleref,\n    standoff: scatterMarkerAttrs.standoff,\n    maxdisplayed: scatterMarkerAttrs.maxdisplayed,\n    size: scatterMarkerAttrs.size,\n    sizeref: scatterMarkerAttrs.sizeref,\n    sizemin: scatterMarkerAttrs.sizemin,\n    sizemode: scatterMarkerAttrs.sizemode,\n    line: extendFlat({\n      width: scatterMarkerLineAttrs.width,\n      editType: 'calc'\n    }, colorScaleAttrs('marker.line')),\n    gradient: scatterMarkerAttrs.gradient,\n    editType: 'calc'\n  }, colorScaleAttrs('marker')),\n  textfont: scatterAttrs.textfont,\n  textposition: scatterAttrs.textposition,\n  selected: scatterAttrs.selected,\n  unselected: scatterAttrs.unselected,\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {\n    flags: ['a', 'b', 'c', 'text', 'name']\n  }),\n  hoveron: scatterAttrs.hoveron,\n  hovertemplate: hovertemplateAttrs()\n};\n\n/***/ }),\n\n/***/ 54337:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3333530__) {\n\n\"use strict\";\n\n\nvar isNumeric = __nested_webpack_require_3333530__(92770);\nvar calcColorscale = __nested_webpack_require_3333530__(36922);\nvar arraysToCalcdata = __nested_webpack_require_3333530__(75225);\nvar calcSelection = __nested_webpack_require_3333530__(66279);\nvar calcMarkerSize = (__nested_webpack_require_3333530__(47761).calcMarkerSize);\nvar dataArrays = ['a', 'b', 'c'];\nvar arraysToFill = {\n  a: ['b', 'c'],\n  b: ['a', 'c'],\n  c: ['a', 'b']\n};\nmodule.exports = function calc(gd, trace) {\n  var ternary = gd._fullLayout[trace.subplot];\n  var displaySum = ternary.sum;\n  var normSum = trace.sum || displaySum;\n  var arrays = {\n    a: trace.a,\n    b: trace.b,\n    c: trace.c\n  };\n  var i, j, dataArray, newArray, fillArray1, fillArray2;\n\n  // fill in one missing component\n  for (i = 0; i < dataArrays.length; i++) {\n    dataArray = dataArrays[i];\n    if (arrays[dataArray]) continue;\n    fillArray1 = arrays[arraysToFill[dataArray][0]];\n    fillArray2 = arrays[arraysToFill[dataArray][1]];\n    newArray = new Array(fillArray1.length);\n    for (j = 0; j < fillArray1.length; j++) {\n      newArray[j] = normSum - fillArray1[j] - fillArray2[j];\n    }\n    arrays[dataArray] = newArray;\n  }\n\n  // make the calcdata array\n  var serieslen = trace._length;\n  var cd = new Array(serieslen);\n  var a, b, c, norm, x, y;\n  for (i = 0; i < serieslen; i++) {\n    a = arrays.a[i];\n    b = arrays.b[i];\n    c = arrays.c[i];\n    if (isNumeric(a) && isNumeric(b) && isNumeric(c)) {\n      a = +a;\n      b = +b;\n      c = +c;\n      norm = displaySum / (a + b + c);\n      if (norm !== 1) {\n        a *= norm;\n        b *= norm;\n        c *= norm;\n      }\n      // map a, b, c onto x and y where the full scale of y\n      // is [0, sum], and x is [-sum, sum]\n      // TODO: this makes `a` always the top, `b` the bottom left,\n      // and `c` the bottom right. Do we want options to rearrange\n      // these?\n      y = a;\n      x = c - b;\n      cd[i] = {\n        x: x,\n        y: y,\n        a: a,\n        b: b,\n        c: c\n      };\n    } else cd[i] = {\n      x: false,\n      y: false\n    };\n  }\n  calcMarkerSize(trace, serieslen);\n  calcColorscale(gd, trace);\n  arraysToCalcdata(cd, trace);\n  calcSelection(cd, trace);\n  return cd;\n};\n\n/***/ }),\n\n/***/ 46008:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3335779__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3335779__(71828);\nvar constants = __nested_webpack_require_3335779__(47581);\nvar subTypes = __nested_webpack_require_3335779__(34098);\nvar handleMarkerDefaults = __nested_webpack_require_3335779__(49508);\nvar handleLineDefaults = __nested_webpack_require_3335779__(11058);\nvar handleLineShapeDefaults = __nested_webpack_require_3335779__(94039);\nvar handleTextDefaults = __nested_webpack_require_3335779__(82410);\nvar handleFillColorDefaults = __nested_webpack_require_3335779__(28908);\nvar attributes = __nested_webpack_require_3335779__(50413);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var a = coerce('a');\n  var b = coerce('b');\n  var c = coerce('c');\n  var len;\n\n  // allow any one array to be missing, len is the minimum length of those\n  // present. Note that after coerce data_array's are either Arrays (which\n  // are truthy even if empty) or undefined. As in scatter, an empty array\n  // is different from undefined, because it can signify that this data is\n  // not known yet but expected in the future\n  if (a) {\n    len = a.length;\n    if (b) {\n      len = Math.min(len, b.length);\n      if (c) len = Math.min(len, c.length);\n    } else if (c) len = Math.min(len, c.length);else len = 0;\n  } else if (b && c) {\n    len = Math.min(b.length, c.length);\n  }\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  traceOut._length = len;\n  coerce('sum');\n  coerce('text');\n  coerce('hovertext');\n  if (traceOut.hoveron !== 'fills') coerce('hovertemplate');\n  var defaultMode = len < constants.PTS_LINESONLY ? 'lines+markers' : 'lines';\n  coerce('mode', defaultMode);\n  if (subTypes.hasLines(traceOut)) {\n    handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce, {\n      backoff: true\n    });\n    handleLineShapeDefaults(traceIn, traceOut, coerce);\n    coerce('connectgaps');\n  }\n  if (subTypes.hasMarkers(traceOut)) {\n    handleMarkerDefaults(traceIn, traceOut, defaultColor, layout, coerce, {\n      gradient: true\n    });\n  }\n  if (subTypes.hasText(traceOut)) {\n    coerce('texttemplate');\n    handleTextDefaults(traceIn, traceOut, layout, coerce);\n  }\n  var dfltHoverOn = [];\n  if (subTypes.hasMarkers(traceOut) || subTypes.hasText(traceOut)) {\n    coerce('cliponaxis');\n    coerce('marker.maxdisplayed');\n    dfltHoverOn.push('points');\n  }\n  coerce('fill');\n  if (traceOut.fill !== 'none') {\n    handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce);\n    if (!subTypes.hasLines(traceOut)) handleLineShapeDefaults(traceIn, traceOut, coerce);\n  }\n  if (traceOut.fill === 'tonext' || traceOut.fill === 'toself') {\n    dfltHoverOn.push('fills');\n  }\n  coerce('hoveron', dfltHoverOn.join('+') || 'points');\n  Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n};\n\n/***/ }),\n\n/***/ 4524:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function eventData(out, pt, trace, cd, pointNumber) {\n  if (pt.xa) out.xaxis = pt.xa;\n  if (pt.ya) out.yaxis = pt.ya;\n  if (cd[pointNumber]) {\n    var cdi = cd[pointNumber];\n\n    // N.B. These are the normalized coordinates.\n    out.a = cdi.a;\n    out.b = cdi.b;\n    out.c = cdi.c;\n  } else {\n    // for fill-hover only\n    out.a = pt.a;\n    out.b = pt.b;\n    out.c = pt.c;\n  }\n  return out;\n};\n\n/***/ }),\n\n/***/ 93645:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3339123__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_3339123__(89298);\nmodule.exports = function formatLabels(cdi, trace, fullLayout) {\n  var labels = {};\n  var subplot = fullLayout[trace.subplot]._subplot;\n  labels.aLabel = Axes.tickText(subplot.aaxis, cdi.a, true).text;\n  labels.bLabel = Axes.tickText(subplot.baxis, cdi.b, true).text;\n  labels.cLabel = Axes.tickText(subplot.caxis, cdi.c, true).text;\n  return labels;\n};\n\n/***/ }),\n\n/***/ 47250:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3339631__) {\n\n\"use strict\";\n\n\nvar scatterHover = __nested_webpack_require_3339631__(33720);\nmodule.exports = function hoverPoints(pointData, xval, yval, hovermode) {\n  var scatterPointData = scatterHover(pointData, xval, yval, hovermode);\n  if (!scatterPointData || scatterPointData[0].index === false) return;\n  var newPointData = scatterPointData[0];\n\n  // if hovering on a fill, we don't show any point data so the label is\n  // unchanged from what scatter gives us - except that it needs to\n  // be constrained to the trianglular plot area, not just the rectangular\n  // area defined by the synthetic x and y axes\n  // TODO: in some cases the vertical middle of the shape is not within\n  // the triangular viewport at all, so the label can become disconnected\n  // from the shape entirely. But calculating what portion of the shape\n  // is actually visible, as constrained by the diagonal axis lines, is not\n  // so easy and anyway we lost the information we would have needed to do\n  // this inside scatterHover.\n  if (newPointData.index === undefined) {\n    var yFracUp = 1 - newPointData.y0 / pointData.ya._length;\n    var xLen = pointData.xa._length;\n    var xMin = xLen * yFracUp / 2;\n    var xMax = xLen - xMin;\n    newPointData.x0 = Math.max(Math.min(newPointData.x0, xMax), xMin);\n    newPointData.x1 = Math.max(Math.min(newPointData.x1, xMax), xMin);\n    return scatterPointData;\n  }\n  var cdi = newPointData.cd[newPointData.index];\n  var trace = newPointData.trace;\n  var subplot = newPointData.subplot;\n  newPointData.a = cdi.a;\n  newPointData.b = cdi.b;\n  newPointData.c = cdi.c;\n  newPointData.xLabelVal = undefined;\n  newPointData.yLabelVal = undefined;\n  var fullLayout = {};\n  fullLayout[trace.subplot] = {\n    _subplot: subplot\n  };\n  var labels = trace._module.formatLabels(cdi, trace, fullLayout);\n  newPointData.aLabel = labels.aLabel;\n  newPointData.bLabel = labels.bLabel;\n  newPointData.cLabel = labels.cLabel;\n  var hoverinfo = cdi.hi || trace.hoverinfo;\n  var text = [];\n  function textPart(ax, val) {\n    text.push(ax._hovertitle + ': ' + val);\n  }\n  if (!trace.hovertemplate) {\n    var parts = hoverinfo.split('+');\n    if (parts.indexOf('all') !== -1) parts = ['a', 'b', 'c'];\n    if (parts.indexOf('a') !== -1) textPart(subplot.aaxis, newPointData.aLabel);\n    if (parts.indexOf('b') !== -1) textPart(subplot.baxis, newPointData.bLabel);\n    if (parts.indexOf('c') !== -1) textPart(subplot.caxis, newPointData.cLabel);\n  }\n  newPointData.extraText = text.join('<br>');\n  newPointData.hovertemplate = trace.hovertemplate;\n  return scatterPointData;\n};\n\n/***/ }),\n\n/***/ 52979:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3342285__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_3342285__(50413),\n  supplyDefaults: __nested_webpack_require_3342285__(46008),\n  colorbar: __nested_webpack_require_3342285__(4898),\n  formatLabels: __nested_webpack_require_3342285__(93645),\n  calc: __nested_webpack_require_3342285__(54337),\n  plot: __nested_webpack_require_3342285__(7507),\n  style: (__nested_webpack_require_3342285__(16296).style),\n  styleOnSelect: (__nested_webpack_require_3342285__(16296).styleOnSelect),\n  hoverPoints: __nested_webpack_require_3342285__(47250),\n  selectPoints: __nested_webpack_require_3342285__(98002),\n  eventData: __nested_webpack_require_3342285__(4524),\n  moduleType: 'trace',\n  name: 'scatterternary',\n  basePlotModule: __nested_webpack_require_3342285__(61639),\n  categories: ['ternary', 'symbols', 'showLegend', 'scatter-like'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 7507:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3343070__) {\n\n\"use strict\";\n\n\nvar scatterPlot = __nested_webpack_require_3343070__(32663);\nmodule.exports = function plot(gd, ternary, moduleCalcData) {\n  var plotContainer = ternary.plotContainer;\n\n  // remove all nodes inside the scatter layer\n  plotContainer.select('.scatterlayer').selectAll('*').remove();\n\n  // mimic cartesian plotinfo\n  var xa = ternary.xaxis;\n  var ya = ternary.yaxis;\n  var plotinfo = {\n    xaxis: xa,\n    yaxis: ya,\n    plot: plotContainer,\n    layerClipId: ternary._hasClipOnAxisFalse ? ternary.clipIdRelative : null\n  };\n  var scatterLayer = ternary.layers.frontplot.select('g.scatterlayer');\n  for (var i = 0; i < moduleCalcData.length; i++) {\n    var cdi = moduleCalcData[i];\n    if (cdi.length) {\n      cdi[0].trace._xA = xa;\n      cdi[0].trace._yA = ya;\n    }\n  }\n  scatterPlot(gd, plotinfo, moduleCalcData, scatterLayer);\n};\n\n/***/ }),\n\n/***/ 46880:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3343999__) {\n\n\"use strict\";\n\n\nvar scatterAttrs = __nested_webpack_require_3343999__(82196);\nvar colorScaleAttrs = __nested_webpack_require_3343999__(50693);\nvar axisHoverFormat = (__nested_webpack_require_3343999__(12663).axisHoverFormat);\nvar hovertemplateAttrs = (__nested_webpack_require_3343999__(5386)/* .hovertemplateAttrs */ .f);\nvar scatterGlAttrs = __nested_webpack_require_3343999__(42341);\nvar cartesianIdRegex = (__nested_webpack_require_3343999__(85555).idRegex);\nvar templatedArray = (__nested_webpack_require_3343999__(44467).templatedArray);\nvar extendFlat = (__nested_webpack_require_3343999__(1426).extendFlat);\nvar scatterMarkerAttrs = scatterAttrs.marker;\nvar scatterMarkerLineAttrs = scatterMarkerAttrs.line;\nvar markerLineAttrs = extendFlat(colorScaleAttrs('marker.line', {\n  editTypeOverride: 'calc'\n}), {\n  width: extendFlat({}, scatterMarkerLineAttrs.width, {\n    editType: 'calc'\n  }),\n  editType: 'calc'\n});\nvar markerAttrs = extendFlat(colorScaleAttrs('marker'), {\n  symbol: scatterMarkerAttrs.symbol,\n  angle: scatterMarkerAttrs.angle,\n  size: extendFlat({}, scatterMarkerAttrs.size, {\n    editType: 'markerSize'\n  }),\n  sizeref: scatterMarkerAttrs.sizeref,\n  sizemin: scatterMarkerAttrs.sizemin,\n  sizemode: scatterMarkerAttrs.sizemode,\n  opacity: scatterMarkerAttrs.opacity,\n  colorbar: scatterMarkerAttrs.colorbar,\n  line: markerLineAttrs,\n  editType: 'calc'\n});\nmarkerAttrs.color.editType = markerAttrs.cmin.editType = markerAttrs.cmax.editType = 'style';\nfunction makeAxesValObject(axLetter) {\n  return {\n    valType: 'info_array',\n    freeLength: true,\n    editType: 'calc',\n    items: {\n      valType: 'subplotid',\n      regex: cartesianIdRegex[axLetter],\n      editType: 'plot'\n    }\n  };\n}\nmodule.exports = {\n  dimensions: templatedArray('dimension', {\n    visible: {\n      valType: 'boolean',\n      dflt: true,\n      editType: 'calc'\n    },\n    label: {\n      valType: 'string',\n      editType: 'calc'\n    },\n    values: {\n      valType: 'data_array',\n      editType: 'calc+clearAxisTypes'\n    },\n    axis: {\n      type: {\n        valType: 'enumerated',\n        values: ['linear', 'log', 'date', 'category'],\n        editType: 'calc+clearAxisTypes'\n      },\n      // TODO make 'true' the default in v3?\n      matches: {\n        valType: 'boolean',\n        dflt: false,\n        editType: 'calc'\n      },\n      editType: 'calc+clearAxisTypes'\n    },\n    // TODO should add an attribute to pin down x only vars and y only vars\n    // like https://seaborn.pydata.org/generated/seaborn.pairplot.html\n    // x_vars and y_vars\n\n    // maybe more axis defaulting option e.g. `showgrid: false`\n\n    editType: 'calc+clearAxisTypes'\n  }),\n  // mode: {}, (only 'markers' for now)\n\n  text: extendFlat({}, scatterGlAttrs.text, {}),\n  hovertext: extendFlat({}, scatterGlAttrs.hovertext, {}),\n  hovertemplate: hovertemplateAttrs(),\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  marker: markerAttrs,\n  xaxes: makeAxesValObject('x'),\n  yaxes: makeAxesValObject('y'),\n  diagonal: {\n    visible: {\n      valType: 'boolean',\n      dflt: true,\n      editType: 'calc'\n    },\n    // type: 'scattergl' | 'histogram' | 'box' | 'violin'\n    // ...\n    // more options\n\n    editType: 'calc'\n  },\n  showupperhalf: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc'\n  },\n  showlowerhalf: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc'\n  },\n  selected: {\n    marker: scatterGlAttrs.selected.marker,\n    editType: 'calc'\n  },\n  unselected: {\n    marker: scatterGlAttrs.unselected.marker,\n    editType: 'calc'\n  },\n  opacity: scatterGlAttrs.opacity\n};\n\n/***/ }),\n\n/***/ 65017:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3347582__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_3347582__(73972);\nvar Grid = __nested_webpack_require_3347582__(83312);\nmodule.exports = {\n  moduleType: 'trace',\n  name: 'splom',\n  categories: ['gl', 'regl', 'cartesian', 'symbols', 'showLegend', 'scatter-like'],\n  attributes: __nested_webpack_require_3347582__(46880),\n  supplyDefaults: __nested_webpack_require_3347582__(25784),\n  colorbar: __nested_webpack_require_3347582__(4898),\n  calc: __nested_webpack_require_3347582__(87625),\n  plot: __nested_webpack_require_3347582__(79410),\n  hoverPoints: (__nested_webpack_require_3347582__(8567).hoverPoints),\n  selectPoints: __nested_webpack_require_3347582__(8689),\n  editStyle: __nested_webpack_require_3347582__(28801),\n  meta: {}\n};\n\n// splom traces use the 'grid' component to generate their axes,\n// register it here\nRegistry.register(Grid);\n\n/***/ }),\n\n/***/ 16947:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3348386__) {\n\n\"use strict\";\n\n\nvar createLine = __nested_webpack_require_3348386__(46075);\nvar Registry = __nested_webpack_require_3348386__(73972);\nvar prepareRegl = __nested_webpack_require_3348386__(79749);\nvar getModuleCalcData = (__nested_webpack_require_3348386__(27659)/* .getModuleCalcData */ .a0);\nvar Cartesian = __nested_webpack_require_3348386__(93612);\nvar getFromId = (__nested_webpack_require_3348386__(41675).getFromId);\nvar shouldShowZeroLine = (__nested_webpack_require_3348386__(89298).shouldShowZeroLine);\nvar SPLOM = 'splom';\nvar reglPrecompiled = {};\nfunction plot(gd) {\n  var fullLayout = gd._fullLayout;\n  var _module = Registry.getModule(SPLOM);\n  var splomCalcData = getModuleCalcData(gd.calcdata, _module)[0];\n  var success = prepareRegl(gd, ['ANGLE_instanced_arrays', 'OES_element_index_uint'], reglPrecompiled);\n  if (!success) return;\n  if (fullLayout._hasOnlyLargeSploms) {\n    updateGrid(gd);\n  }\n  _module.plot(gd, {}, splomCalcData);\n}\nfunction drag(gd) {\n  var cd = gd.calcdata;\n  var fullLayout = gd._fullLayout;\n  if (fullLayout._hasOnlyLargeSploms) {\n    updateGrid(gd);\n  }\n  for (var i = 0; i < cd.length; i++) {\n    var cd0 = cd[i][0];\n    var trace = cd0.trace;\n    var scene = fullLayout._splomScenes[trace.uid];\n    if (trace.type === 'splom' && scene && scene.matrix) {\n      dragOne(gd, trace, scene);\n    }\n  }\n}\nfunction dragOne(gd, trace, scene) {\n  var visibleLength = scene.matrixOptions.data.length;\n  var visibleDims = trace._visibleDims;\n  var ranges = scene.viewOpts.ranges = new Array(visibleLength);\n  for (var k = 0; k < visibleDims.length; k++) {\n    var i = visibleDims[k];\n    var rng = ranges[k] = new Array(4);\n    var xa = getFromId(gd, trace._diag[i][0]);\n    if (xa) {\n      rng[0] = xa.r2l(xa.range[0]);\n      rng[2] = xa.r2l(xa.range[1]);\n    }\n    var ya = getFromId(gd, trace._diag[i][1]);\n    if (ya) {\n      rng[1] = ya.r2l(ya.range[0]);\n      rng[3] = ya.r2l(ya.range[1]);\n    }\n  }\n  if (scene.selectBatch.length || scene.unselectBatch.length) {\n    scene.matrix.update({\n      ranges: ranges\n    }, {\n      ranges: ranges\n    });\n  } else {\n    scene.matrix.update({\n      ranges: ranges\n    });\n  }\n}\nfunction updateGrid(gd) {\n  var fullLayout = gd._fullLayout;\n  var regl = fullLayout._glcanvas.data()[0].regl;\n  var splomGrid = fullLayout._splomGrid;\n  if (!splomGrid) {\n    splomGrid = fullLayout._splomGrid = createLine(regl);\n  }\n  splomGrid.update(makeGridData(gd));\n}\nfunction makeGridData(gd) {\n  var plotGlPixelRatio = gd._context.plotGlPixelRatio;\n  var fullLayout = gd._fullLayout;\n  var gs = fullLayout._size;\n  var fullView = [0, 0, fullLayout.width * plotGlPixelRatio, fullLayout.height * plotGlPixelRatio];\n  var lookup = {};\n  var k;\n  function push(prefix, ax, x0, x1, y0, y1) {\n    x0 *= plotGlPixelRatio;\n    x1 *= plotGlPixelRatio;\n    y0 *= plotGlPixelRatio;\n    y1 *= plotGlPixelRatio;\n    var lcolor = ax[prefix + 'color'];\n    var lwidth = ax[prefix + 'width'];\n    var key = String(lcolor + lwidth);\n    if (key in lookup) {\n      lookup[key].data.push(NaN, NaN, x0, x1, y0, y1);\n    } else {\n      lookup[key] = {\n        data: [x0, x1, y0, y1],\n        join: 'rect',\n        thickness: lwidth * plotGlPixelRatio,\n        color: lcolor,\n        viewport: fullView,\n        range: fullView,\n        overlay: false\n      };\n    }\n  }\n  for (k in fullLayout._splomSubplots) {\n    var sp = fullLayout._plots[k];\n    var xa = sp.xaxis;\n    var ya = sp.yaxis;\n    var xVals = xa._gridVals;\n    var yVals = ya._gridVals;\n    var xOffset = xa._offset;\n    var xLength = xa._length;\n    var yLength = ya._length;\n\n    // ya.l2p assumes top-to-bottom coordinate system (a la SVG),\n    // we need to compute bottom-to-top offsets and slopes:\n    var yOffset = gs.b + ya.domain[0] * gs.h;\n    var ym = -ya._m;\n    var yb = -ym * ya.r2l(ya.range[0], ya.calendar);\n    var x, y;\n    if (xa.showgrid) {\n      for (k = 0; k < xVals.length; k++) {\n        x = xOffset + xa.l2p(xVals[k].x);\n        push('grid', xa, x, yOffset, x, yOffset + yLength);\n      }\n    }\n    if (ya.showgrid) {\n      for (k = 0; k < yVals.length; k++) {\n        y = yOffset + yb + ym * yVals[k].x;\n        push('grid', ya, xOffset, y, xOffset + xLength, y);\n      }\n    }\n    if (shouldShowZeroLine(gd, xa, ya)) {\n      x = xOffset + xa.l2p(0);\n      push('zeroline', xa, x, yOffset, x, yOffset + yLength);\n    }\n    if (shouldShowZeroLine(gd, ya, xa)) {\n      y = yOffset + yb + 0;\n      push('zeroline', ya, xOffset, y, xOffset + xLength, y);\n    }\n  }\n  var gridBatches = [];\n  for (k in lookup) {\n    gridBatches.push(lookup[k]);\n  }\n  return gridBatches;\n}\nfunction clean(newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  var lookup = {};\n  var i;\n  if (oldFullLayout._splomScenes) {\n    for (i = 0; i < newFullData.length; i++) {\n      var newTrace = newFullData[i];\n      if (newTrace.type === 'splom') {\n        lookup[newTrace.uid] = 1;\n      }\n    }\n    for (i = 0; i < oldFullData.length; i++) {\n      var oldTrace = oldFullData[i];\n      if (!lookup[oldTrace.uid]) {\n        var scene = oldFullLayout._splomScenes[oldTrace.uid];\n        if (scene && scene.destroy) scene.destroy();\n        // must first set scene to null in order to get garbage collected\n        oldFullLayout._splomScenes[oldTrace.uid] = null;\n        delete oldFullLayout._splomScenes[oldTrace.uid];\n      }\n    }\n  }\n  if (Object.keys(oldFullLayout._splomScenes || {}).length === 0) {\n    delete oldFullLayout._splomScenes;\n  }\n  if (oldFullLayout._splomGrid && !newFullLayout._hasOnlyLargeSploms && oldFullLayout._hasOnlyLargeSploms) {\n    // must first set scene to null in order to get garbage collected\n    oldFullLayout._splomGrid.destroy();\n    oldFullLayout._splomGrid = null;\n    delete oldFullLayout._splomGrid;\n  }\n  Cartesian.clean(newFullData, newFullLayout, oldFullData, oldFullLayout);\n}\nmodule.exports = {\n  name: SPLOM,\n  attr: Cartesian.attr,\n  attrRegex: Cartesian.attrRegex,\n  layoutAttributes: Cartesian.layoutAttributes,\n  supplyLayoutDefaults: Cartesian.supplyLayoutDefaults,\n  drawFramework: Cartesian.drawFramework,\n  plot: plot,\n  drag: drag,\n  updateGrid: updateGrid,\n  clean: clean,\n  updateFx: Cartesian.updateFx,\n  toSVG: Cartesian.toSVG,\n  reglPrecompiled: reglPrecompiled\n};\n\n/***/ }),\n\n/***/ 87625:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3354625__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3354625__(71828);\nvar AxisIDs = __nested_webpack_require_3354625__(41675);\nvar calcMarkerSize = (__nested_webpack_require_3354625__(47761).calcMarkerSize);\nvar calcAxisExpansion = (__nested_webpack_require_3354625__(47761).calcAxisExpansion);\nvar calcColorscale = __nested_webpack_require_3354625__(36922);\nvar convertMarkerSelection = (__nested_webpack_require_3354625__(19635).markerSelection);\nvar convertMarkerStyle = (__nested_webpack_require_3354625__(19635).markerStyle);\nvar sceneUpdate = __nested_webpack_require_3354625__(10164);\nvar BADNUM = (__nested_webpack_require_3354625__(50606).BADNUM);\nvar TOO_MANY_POINTS = (__nested_webpack_require_3354625__(78232).TOO_MANY_POINTS);\nmodule.exports = function calc(gd, trace) {\n  var dimensions = trace.dimensions;\n  var commonLength = trace._length;\n  var opts = {};\n  // 'c' for calculated, 'l' for linear,\n  // only differ here for log axes, pass ldata to createMatrix as 'data'\n  var cdata = opts.cdata = [];\n  var ldata = opts.data = [];\n  // keep track of visible dimensions\n  var visibleDims = trace._visibleDims = [];\n  var i, k, dim, xa, ya;\n  function makeCalcdata(ax, dim) {\n    // call makeCalcdata with fake input\n    var ccol = ax.makeCalcdata({\n      v: dim.values,\n      vcalendar: trace.calendar\n    }, 'v');\n    for (var j = 0; j < ccol.length; j++) {\n      ccol[j] = ccol[j] === BADNUM ? NaN : ccol[j];\n    }\n    cdata.push(ccol);\n    ldata.push(ax.type === 'log' ? Lib.simpleMap(ccol, ax.c2l) : ccol);\n  }\n  for (i = 0; i < dimensions.length; i++) {\n    dim = dimensions[i];\n    if (dim.visible) {\n      xa = AxisIDs.getFromId(gd, trace._diag[i][0]);\n      ya = AxisIDs.getFromId(gd, trace._diag[i][1]);\n\n      // if corresponding x & y axes don't have matching types, skip dim\n      if (xa && ya && xa.type !== ya.type) {\n        Lib.log('Skipping splom dimension ' + i + ' with conflicting axis types');\n        continue;\n      }\n      if (xa) {\n        makeCalcdata(xa, dim);\n        if (ya && ya.type === 'category') {\n          ya._categories = xa._categories.slice();\n        }\n      } else {\n        // should not make it here, if both xa and ya undefined\n        makeCalcdata(ya, dim);\n      }\n      visibleDims.push(i);\n    }\n  }\n  calcColorscale(gd, trace);\n  Lib.extendFlat(opts, convertMarkerStyle(gd, trace));\n  var visibleLength = cdata.length;\n  var hasTooManyPoints = visibleLength * commonLength > TOO_MANY_POINTS;\n\n  // Reuse SVG scatter axis expansion routine.\n  // For graphs with very large number of points and array marker.size,\n  // use average marker size instead to speed things up.\n  var ppad;\n  if (hasTooManyPoints) {\n    ppad = opts.sizeAvg || Math.max(opts.size, 3);\n  } else {\n    ppad = calcMarkerSize(trace, commonLength);\n  }\n  for (k = 0; k < visibleDims.length; k++) {\n    i = visibleDims[k];\n    dim = dimensions[i];\n    xa = AxisIDs.getFromId(gd, trace._diag[i][0]) || {};\n    ya = AxisIDs.getFromId(gd, trace._diag[i][1]) || {};\n    calcAxisExpansion(gd, trace, xa, ya, cdata[k], cdata[k], ppad);\n  }\n  var scene = sceneUpdate(gd, trace);\n  if (!scene.matrix) scene.matrix = true;\n  scene.matrixOptions = opts;\n  scene.selectedOptions = convertMarkerSelection(gd, trace, trace.selected);\n  scene.unselectedOptions = convertMarkerSelection(gd, trace, trace.unselected);\n  return [{\n    x: false,\n    y: false,\n    t: {},\n    trace: trace\n  }];\n};\n\n/***/ }),\n\n/***/ 25784:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3357985__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3357985__(71828);\nvar handleArrayContainerDefaults = __nested_webpack_require_3357985__(85501);\nvar attributes = __nested_webpack_require_3357985__(46880);\nvar subTypes = __nested_webpack_require_3357985__(34098);\nvar handleMarkerDefaults = __nested_webpack_require_3357985__(49508);\nvar mergeLength = __nested_webpack_require_3357985__(94397);\nvar isOpenSymbol = (__nested_webpack_require_3357985__(68645).isOpenSymbol);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var dimensions = handleArrayContainerDefaults(traceIn, traceOut, {\n    name: 'dimensions',\n    handleItemDefaults: dimensionDefaults\n  });\n  var showDiag = coerce('diagonal.visible');\n  var showUpper = coerce('showupperhalf');\n  var showLower = coerce('showlowerhalf');\n  var dimLength = mergeLength(traceOut, dimensions, 'values');\n  if (!dimLength || !showDiag && !showUpper && !showLower) {\n    traceOut.visible = false;\n    return;\n  }\n  coerce('text');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  handleMarkerDefaults(traceIn, traceOut, defaultColor, layout, coerce, {\n    noAngleRef: true,\n    noStandOff: true\n  });\n  var isOpen = isOpenSymbol(traceOut.marker.symbol);\n  var isBubble = subTypes.isBubble(traceOut);\n  coerce('marker.line.width', isOpen || isBubble ? 1 : 0);\n  handleAxisDefaults(traceIn, traceOut, layout, coerce);\n  Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n};\nfunction dimensionDefaults(dimIn, dimOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(dimIn, dimOut, attributes.dimensions, attr, dflt);\n  }\n  coerce('label');\n  var values = coerce('values');\n  if (!(values && values.length)) dimOut.visible = false;else coerce('visible');\n  coerce('axis.type');\n  coerce('axis.matches');\n}\nfunction handleAxisDefaults(traceIn, traceOut, layout, coerce) {\n  var dimensions = traceOut.dimensions;\n  var dimLength = dimensions.length;\n  var showUpper = traceOut.showupperhalf;\n  var showLower = traceOut.showlowerhalf;\n  var showDiag = traceOut.diagonal.visible;\n  var i, j;\n  var xAxesDflt = new Array(dimLength);\n  var yAxesDflt = new Array(dimLength);\n  for (i = 0; i < dimLength; i++) {\n    var suffix = i ? i + 1 : '';\n    xAxesDflt[i] = 'x' + suffix;\n    yAxesDflt[i] = 'y' + suffix;\n  }\n  var xaxes = coerce('xaxes', xAxesDflt);\n  var yaxes = coerce('yaxes', yAxesDflt);\n\n  // build list of [x,y] axis corresponding to each dimensions[i],\n  // very useful for passing options to regl-splom\n  var diag = traceOut._diag = new Array(dimLength);\n\n  // lookup for 'drawn' x|y axes, to avoid costly indexOf downstream\n  traceOut._xaxes = {};\n  traceOut._yaxes = {};\n\n  // list of 'drawn' x|y axes, use to generate list of subplots\n  var xList = [];\n  var yList = [];\n  function fillAxisStashes(axId, counterAxId, dim, list) {\n    if (!axId) return;\n    var axLetter = axId.charAt(0);\n    var stash = layout._splomAxes[axLetter];\n    traceOut['_' + axLetter + 'axes'][axId] = 1;\n    list.push(axId);\n    if (!(axId in stash)) {\n      var s = stash[axId] = {};\n      if (dim) {\n        s.label = dim.label || '';\n        if (dim.visible && dim.axis) {\n          if (dim.axis.type) s.type = dim.axis.type;\n          if (dim.axis.matches) s.matches = counterAxId;\n        }\n      }\n    }\n  }\n\n  // cases where showDiag and showLower or showUpper are false\n  // no special treatment as the 'drawn' x-axes and y-axes no longer match\n  // the dimensions items and xaxes|yaxes 1-to-1\n  var mustShiftX = !showDiag && !showLower;\n  var mustShiftY = !showDiag && !showUpper;\n  traceOut._axesDim = {};\n  for (i = 0; i < dimLength; i++) {\n    var dim = dimensions[i];\n    var i0 = i === 0;\n    var iN = i === dimLength - 1;\n    var xaId = i0 && mustShiftX || iN && mustShiftY ? undefined : xaxes[i];\n    var yaId = i0 && mustShiftY || iN && mustShiftX ? undefined : yaxes[i];\n    fillAxisStashes(xaId, yaId, dim, xList);\n    fillAxisStashes(yaId, xaId, dim, yList);\n    diag[i] = [xaId, yaId];\n    traceOut._axesDim[xaId] = i;\n    traceOut._axesDim[yaId] = i;\n  }\n\n  // fill in splom subplot keys\n  for (i = 0; i < xList.length; i++) {\n    for (j = 0; j < yList.length; j++) {\n      var id = xList[i] + yList[j];\n      if (i > j && showUpper) {\n        layout._splomSubplots[id] = 1;\n      } else if (i < j && showLower) {\n        layout._splomSubplots[id] = 1;\n      } else if (i === j && (showDiag || !showLower || !showUpper)) {\n        // need to include diagonal subplots when\n        // hiding one half and the diagonal\n        layout._splomSubplots[id] = 1;\n      }\n    }\n  }\n\n  // when lower half is omitted, or when just the diagonal is gone,\n  // override grid default to make sure axes remain on\n  // the left/bottom of the plot area\n  if (!showLower || !showDiag && showUpper && showLower) {\n    layout._splomGridDflt.xside = 'bottom';\n    layout._splomGridDflt.yside = 'left';\n  }\n}\n\n/***/ }),\n\n/***/ 28801:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3363023__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3363023__(71828);\nvar calcColorscale = __nested_webpack_require_3363023__(36922);\nvar convertMarkerStyle = (__nested_webpack_require_3363023__(19635).markerStyle);\nmodule.exports = function editStyle(gd, cd0) {\n  var trace = cd0.trace;\n  var scene = gd._fullLayout._splomScenes[trace.uid];\n  if (scene) {\n    calcColorscale(gd, trace);\n    Lib.extendFlat(scene.matrixOptions, convertMarkerStyle(gd, trace));\n    // TODO [un]selected styles?\n\n    var opts = Lib.extendFlat({}, scene.matrixOptions, scene.viewOpts);\n\n    // TODO this is too long for arrayOk attributes!\n    scene.matrix.update(opts, null);\n  }\n};\n\n/***/ }),\n\n/***/ 35948:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\nexports.getDimIndex = function getDimIndex(trace, ax) {\n  var axId = ax._id;\n  var axLetter = axId.charAt(0);\n  var ind = {\n    x: 0,\n    y: 1\n  }[axLetter];\n  var visibleDims = trace._visibleDims;\n  for (var k = 0; k < visibleDims.length; k++) {\n    var i = visibleDims[k];\n    if (trace._diag[i][ind] === axId) return k;\n  }\n  return false;\n};\n\n/***/ }),\n\n/***/ 8567:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3364179__) {\n\n\"use strict\";\n\n\nvar helpers = __nested_webpack_require_3364179__(35948);\nvar calcHover = (__nested_webpack_require_3364179__(20794).calcHover);\nfunction hoverPoints(pointData, xval, yval) {\n  var cd = pointData.cd;\n  var trace = cd[0].trace;\n  var scene = pointData.scene;\n  var cdata = scene.matrixOptions.cdata;\n  var xa = pointData.xa;\n  var ya = pointData.ya;\n  var xpx = xa.c2p(xval);\n  var ypx = ya.c2p(yval);\n  var maxDistance = pointData.distance;\n  var xi = helpers.getDimIndex(trace, xa);\n  var yi = helpers.getDimIndex(trace, ya);\n  if (xi === false || yi === false) return [pointData];\n  var x = cdata[xi];\n  var y = cdata[yi];\n  var id, dxy;\n  var minDist = maxDistance;\n  for (var i = 0; i < x.length; i++) {\n    var ptx = x[i];\n    var pty = y[i];\n    var dx = xa.c2p(ptx) - xpx;\n    var dy = ya.c2p(pty) - ypx;\n    var dist = Math.sqrt(dx * dx + dy * dy);\n    if (dist < minDist) {\n      minDist = dxy = dist;\n      id = i;\n    }\n  }\n  pointData.index = id;\n  pointData.distance = minDist;\n  pointData.dxy = dxy;\n  if (id === undefined) return [pointData];\n  return [calcHover(pointData, x, y, trace)];\n}\nmodule.exports = {\n  hoverPoints: hoverPoints\n};\n\n/***/ }),\n\n/***/ 6419:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3365417__) {\n\n\"use strict\";\n\n\nvar index = __nested_webpack_require_3365417__(65017);\nindex.basePlotModule = __nested_webpack_require_3365417__(16947), module.exports = index;\n\n/***/ }),\n\n/***/ 79410:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3365647__) {\n\n\"use strict\";\n\n\nvar createMatrix = __nested_webpack_require_3365647__(60487);\nvar Lib = __nested_webpack_require_3365647__(71828);\nvar AxisIDs = __nested_webpack_require_3365647__(41675);\nvar selectMode = (__nested_webpack_require_3365647__(64505).selectMode);\nmodule.exports = function plot(gd, _, splomCalcData) {\n  if (!splomCalcData.length) return;\n  for (var i = 0; i < splomCalcData.length; i++) {\n    plotOne(gd, splomCalcData[i][0]);\n  }\n};\nfunction plotOne(gd, cd0) {\n  var fullLayout = gd._fullLayout;\n  var gs = fullLayout._size;\n  var trace = cd0.trace;\n  var stash = cd0.t;\n  var scene = fullLayout._splomScenes[trace.uid];\n  var matrixOpts = scene.matrixOptions;\n  var cdata = matrixOpts.cdata;\n  var regl = fullLayout._glcanvas.data()[0].regl;\n  var dragmode = fullLayout.dragmode;\n  var xa, ya;\n  var i, j, k;\n  if (cdata.length === 0) return;\n\n  // augment options with proper upper/lower halves\n  // regl-splom's default grid starts from bottom-left\n  matrixOpts.lower = trace.showupperhalf;\n  matrixOpts.upper = trace.showlowerhalf;\n  matrixOpts.diagonal = trace.diagonal.visible;\n  var visibleDims = trace._visibleDims;\n  var visibleLength = cdata.length;\n  var viewOpts = scene.viewOpts = {};\n  viewOpts.ranges = new Array(visibleLength);\n  viewOpts.domains = new Array(visibleLength);\n  for (k = 0; k < visibleDims.length; k++) {\n    i = visibleDims[k];\n    var rng = viewOpts.ranges[k] = new Array(4);\n    var dmn = viewOpts.domains[k] = new Array(4);\n    xa = AxisIDs.getFromId(gd, trace._diag[i][0]);\n    if (xa) {\n      rng[0] = xa._rl[0];\n      rng[2] = xa._rl[1];\n      dmn[0] = xa.domain[0];\n      dmn[2] = xa.domain[1];\n    }\n    ya = AxisIDs.getFromId(gd, trace._diag[i][1]);\n    if (ya) {\n      rng[1] = ya._rl[0];\n      rng[3] = ya._rl[1];\n      dmn[1] = ya.domain[0];\n      dmn[3] = ya.domain[1];\n    }\n  }\n  var plotGlPixelRatio = gd._context.plotGlPixelRatio;\n  var l = gs.l * plotGlPixelRatio;\n  var b = gs.b * plotGlPixelRatio;\n  var w = gs.w * plotGlPixelRatio;\n  var h = gs.h * plotGlPixelRatio;\n  viewOpts.viewport = [l, b, w + l, h + b];\n  if (scene.matrix === true) {\n    scene.matrix = createMatrix(regl);\n  }\n  var clickSelectEnabled = fullLayout.clickmode.indexOf('select') > -1;\n  var isSelectMode = selectMode(dragmode) || !!trace.selectedpoints || clickSelectEnabled;\n  var needsBaseUpdate = true;\n  if (isSelectMode) {\n    var commonLength = trace._length;\n\n    // regenerate scene batch, if traces number changed during selection\n    if (trace.selectedpoints) {\n      scene.selectBatch = trace.selectedpoints;\n      var selPts = trace.selectedpoints;\n      var selDict = {};\n      for (i = 0; i < selPts.length; i++) {\n        selDict[selPts[i]] = true;\n      }\n      var unselPts = [];\n      for (i = 0; i < commonLength; i++) {\n        if (!selDict[i]) unselPts.push(i);\n      }\n      scene.unselectBatch = unselPts;\n    }\n\n    // precalculate px coords since we are not going to pan during select\n    var xpx = stash.xpx = new Array(visibleLength);\n    var ypx = stash.ypx = new Array(visibleLength);\n    for (k = 0; k < visibleDims.length; k++) {\n      i = visibleDims[k];\n      xa = AxisIDs.getFromId(gd, trace._diag[i][0]);\n      if (xa) {\n        xpx[k] = new Array(commonLength);\n        for (j = 0; j < commonLength; j++) {\n          xpx[k][j] = xa.c2p(cdata[k][j]);\n        }\n      }\n      ya = AxisIDs.getFromId(gd, trace._diag[i][1]);\n      if (ya) {\n        ypx[k] = new Array(commonLength);\n        for (j = 0; j < commonLength; j++) {\n          ypx[k][j] = ya.c2p(cdata[k][j]);\n        }\n      }\n    }\n    if (scene.selectBatch.length || scene.unselectBatch.length) {\n      var unselOpts = Lib.extendFlat({}, matrixOpts, scene.unselectedOptions, viewOpts);\n      var selOpts = Lib.extendFlat({}, matrixOpts, scene.selectedOptions, viewOpts);\n      scene.matrix.update(unselOpts, selOpts);\n      needsBaseUpdate = false;\n    }\n  } else {\n    stash.xpx = stash.ypx = null;\n  }\n  if (needsBaseUpdate) {\n    var opts = Lib.extendFlat({}, matrixOpts, viewOpts);\n    scene.matrix.update(opts, null);\n  }\n}\n\n/***/ }),\n\n/***/ 10164:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3369752__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3369752__(71828);\nmodule.exports = function sceneUpdate(gd, trace) {\n  var fullLayout = gd._fullLayout;\n  var uid = trace.uid;\n\n  // must place ref to 'scene' in fullLayout, so that:\n  // - it can be relinked properly on updates\n  // - it can be destroyed properly when needed\n  var splomScenes = fullLayout._splomScenes;\n  if (!splomScenes) splomScenes = fullLayout._splomScenes = {};\n  var reset = {\n    dirty: true,\n    selectBatch: [],\n    unselectBatch: []\n  };\n  var first = {\n    matrix: false,\n    selectBatch: [],\n    unselectBatch: []\n  };\n  var scene = splomScenes[trace.uid];\n  if (!scene) {\n    scene = splomScenes[uid] = Lib.extendFlat({}, reset, first);\n    scene.draw = function draw() {\n      if (scene.matrix && scene.matrix.draw) {\n        if (scene.selectBatch.length || scene.unselectBatch.length) {\n          scene.matrix.draw(scene.unselectBatch, scene.selectBatch);\n        } else {\n          scene.matrix.draw();\n        }\n      }\n      scene.dirty = false;\n    };\n\n    // remove scene resources\n    scene.destroy = function destroy() {\n      if (scene.matrix && scene.matrix.destroy) {\n        scene.matrix.destroy();\n      }\n      scene.matrixOptions = null;\n      scene.selectBatch = null;\n      scene.unselectBatch = null;\n      scene = null;\n    };\n  }\n\n  // In case if we have scene from the last calc - reset data\n  if (!scene.dirty) {\n    Lib.extendFlat(scene, reset);\n  }\n  return scene;\n};\n\n/***/ }),\n\n/***/ 8689:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3371311__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3371311__(71828);\nvar pushUnique = Lib.pushUnique;\nvar subTypes = __nested_webpack_require_3371311__(34098);\nvar helpers = __nested_webpack_require_3371311__(35948);\nmodule.exports = function select(searchInfo, selectionTester) {\n  var cd = searchInfo.cd;\n  var trace = cd[0].trace;\n  var stash = cd[0].t;\n  var scene = searchInfo.scene;\n  var cdata = scene.matrixOptions.cdata;\n  var xa = searchInfo.xaxis;\n  var ya = searchInfo.yaxis;\n  var selection = [];\n  if (!scene) return selection;\n  var hasOnlyLines = !subTypes.hasMarkers(trace) && !subTypes.hasText(trace);\n  if (trace.visible !== true || hasOnlyLines) return selection;\n  var xi = helpers.getDimIndex(trace, xa);\n  var yi = helpers.getDimIndex(trace, ya);\n  if (xi === false || yi === false) return selection;\n  var xpx = stash.xpx[xi];\n  var ypx = stash.ypx[yi];\n  var x = cdata[xi];\n  var y = cdata[yi];\n  var els = (searchInfo.scene.selectBatch || []).slice();\n  var unels = [];\n\n  // degenerate polygon does not enable selection\n  // filter out points by visible scatter ones\n  if (selectionTester !== false && !selectionTester.degenerate) {\n    for (var i = 0; i < x.length; i++) {\n      if (selectionTester.contains([xpx[i], ypx[i]], null, i, searchInfo)) {\n        selection.push({\n          pointNumber: i,\n          x: x[i],\n          y: y[i]\n        });\n        pushUnique(els, i);\n      } else if (els.indexOf(i) !== -1) {\n        pushUnique(els, i);\n      } else {\n        unels.push(i);\n      }\n    }\n  }\n  var matrixOpts = scene.matrixOptions;\n  if (!els.length && !unels.length) {\n    scene.matrix.update(matrixOpts, null);\n  } else if (!scene.selectBatch.length && !scene.unselectBatch.length) {\n    scene.matrix.update(scene.unselectedOptions, Lib.extendFlat({}, matrixOpts, scene.selectedOptions, scene.viewOpts));\n  }\n  scene.selectBatch = els;\n  scene.unselectBatch = unels;\n  return selection;\n};\n\n/***/ }),\n\n/***/ 21850:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3373297__) {\n\n\"use strict\";\n\n\nvar colorScaleAttrs = __nested_webpack_require_3373297__(50693);\nvar axisHoverFormat = (__nested_webpack_require_3373297__(12663).axisHoverFormat);\nvar hovertemplateAttrs = (__nested_webpack_require_3373297__(5386)/* .hovertemplateAttrs */ .f);\nvar mesh3dAttrs = __nested_webpack_require_3373297__(2418);\nvar baseAttrs = __nested_webpack_require_3373297__(9012);\nvar extendFlat = (__nested_webpack_require_3373297__(1426).extendFlat);\nvar attrs = {\n  x: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  y: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  z: {\n    valType: 'data_array',\n    editType: 'calc+clearAxisTypes'\n  },\n  u: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  v: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  w: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  starts: {\n    x: {\n      valType: 'data_array',\n      editType: 'calc'\n    },\n    y: {\n      valType: 'data_array',\n      editType: 'calc'\n    },\n    z: {\n      valType: 'data_array',\n      editType: 'calc'\n    },\n    editType: 'calc'\n  },\n  maxdisplayed: {\n    valType: 'integer',\n    min: 0,\n    dflt: 1000,\n    editType: 'calc'\n  },\n  // TODO\n  //\n  // Should add 'absolute' (like cone traces have), but currently gl-streamtube3d's\n  // `absoluteTubeSize` doesn't behave well enough for our needs.\n  //\n  // 'fixed' would be a nice addition to plot stream 'lines', see\n  // https://github.com/plotly/plotly.js/commit/812be20750e21e0a1831975001c248d365850f73#r29129877\n  //\n  // sizemode: {\n  //     valType: 'enumerated',\n  //     values: ['scaled', 'absolute', 'fixed'],\n  //     dflt: 'scaled',\n  //     editType: 'calc',\n  //\n  // },\n\n  sizeref: {\n    valType: 'number',\n    editType: 'calc',\n    min: 0,\n    dflt: 1\n  },\n  text: {\n    valType: 'string',\n    dflt: '',\n    editType: 'calc'\n  },\n  hovertext: {\n    valType: 'string',\n    dflt: '',\n    editType: 'calc'\n  },\n  hovertemplate: hovertemplateAttrs({\n    editType: 'calc'\n  }, {\n    keys: ['tubex', 'tubey', 'tubez', 'tubeu', 'tubev', 'tubew', 'norm', 'divergence']\n  }),\n  uhoverformat: axisHoverFormat('u', 1),\n  vhoverformat: axisHoverFormat('v', 1),\n  whoverformat: axisHoverFormat('w', 1),\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  zhoverformat: axisHoverFormat('z'),\n  showlegend: extendFlat({}, baseAttrs.showlegend, {\n    dflt: false\n  })\n};\nextendFlat(attrs, colorScaleAttrs('', {\n  colorAttr: 'u/v/w norm',\n  showScaleDflt: true,\n  editTypeOverride: 'calc'\n}));\nvar fromMesh3d = ['opacity', 'lightposition', 'lighting'];\nfromMesh3d.forEach(function (k) {\n  attrs[k] = mesh3dAttrs[k];\n});\nattrs.hoverinfo = extendFlat({}, baseAttrs.hoverinfo, {\n  editType: 'calc',\n  flags: ['x', 'y', 'z', 'u', 'v', 'w', 'norm', 'divergence', 'text', 'name'],\n  dflt: 'x+y+z+norm+text+name'\n});\nattrs.transforms = undefined;\nmodule.exports = attrs;\n\n/***/ }),\n\n/***/ 88489:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3376222__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3376222__(71828);\nvar colorscaleCalc = __nested_webpack_require_3376222__(78803);\nfunction calc(gd, trace) {\n  trace._len = Math.min(trace.u.length, trace.v.length, trace.w.length, trace.x.length, trace.y.length, trace.z.length);\n  trace._u = filter(trace.u, trace._len);\n  trace._v = filter(trace.v, trace._len);\n  trace._w = filter(trace.w, trace._len);\n  trace._x = filter(trace.x, trace._len);\n  trace._y = filter(trace.y, trace._len);\n  trace._z = filter(trace.z, trace._len);\n  var grid = processGrid(trace);\n  trace._gridFill = grid.fill;\n  trace._Xs = grid.Xs;\n  trace._Ys = grid.Ys;\n  trace._Zs = grid.Zs;\n  trace._len = grid.len;\n  var slen = 0;\n  var startx, starty, startz;\n  if (trace.starts) {\n    startx = filter(trace.starts.x || []);\n    starty = filter(trace.starts.y || []);\n    startz = filter(trace.starts.z || []);\n    slen = Math.min(startx.length, starty.length, startz.length);\n  }\n  trace._startsX = startx || [];\n  trace._startsY = starty || [];\n  trace._startsZ = startz || [];\n  var normMax = 0;\n  var normMin = Infinity;\n  var i;\n  for (i = 0; i < trace._len; i++) {\n    var u = trace._u[i];\n    var v = trace._v[i];\n    var w = trace._w[i];\n    var norm = Math.sqrt(u * u + v * v + w * w);\n    normMax = Math.max(normMax, norm);\n    normMin = Math.min(normMin, norm);\n  }\n  colorscaleCalc(gd, trace, {\n    vals: [normMin, normMax],\n    containerStr: '',\n    cLetter: 'c'\n  });\n  for (i = 0; i < slen; i++) {\n    var sx = startx[i];\n    grid.xMax = Math.max(grid.xMax, sx);\n    grid.xMin = Math.min(grid.xMin, sx);\n    var sy = starty[i];\n    grid.yMax = Math.max(grid.yMax, sy);\n    grid.yMin = Math.min(grid.yMin, sy);\n    var sz = startz[i];\n    grid.zMax = Math.max(grid.zMax, sz);\n    grid.zMin = Math.min(grid.zMin, sz);\n  }\n  trace._slen = slen;\n  trace._normMax = normMax;\n  trace._xbnds = [grid.xMin, grid.xMax];\n  trace._ybnds = [grid.yMin, grid.yMax];\n  trace._zbnds = [grid.zMin, grid.zMax];\n}\nfunction processGrid(trace) {\n  var x = trace._x;\n  var y = trace._y;\n  var z = trace._z;\n  var len = trace._len;\n  var i, j, k;\n  var xMax = -Infinity;\n  var xMin = Infinity;\n  var yMax = -Infinity;\n  var yMin = Infinity;\n  var zMax = -Infinity;\n  var zMin = Infinity;\n  var gridFill = '';\n  var filledX;\n  var filledY;\n  var filledZ;\n  var firstX, lastX;\n  var firstY, lastY;\n  var firstZ, lastZ;\n  if (len) {\n    firstX = x[0];\n    firstY = y[0];\n    firstZ = z[0];\n  }\n  if (len > 1) {\n    lastX = x[len - 1];\n    lastY = y[len - 1];\n    lastZ = z[len - 1];\n  }\n  for (i = 0; i < len; i++) {\n    xMax = Math.max(xMax, x[i]);\n    xMin = Math.min(xMin, x[i]);\n    yMax = Math.max(yMax, y[i]);\n    yMin = Math.min(yMin, y[i]);\n    zMax = Math.max(zMax, z[i]);\n    zMin = Math.min(zMin, z[i]);\n    if (!filledX && x[i] !== firstX) {\n      filledX = true;\n      gridFill += 'x';\n    }\n    if (!filledY && y[i] !== firstY) {\n      filledY = true;\n      gridFill += 'y';\n    }\n    if (!filledZ && z[i] !== firstZ) {\n      filledZ = true;\n      gridFill += 'z';\n    }\n  }\n  // fill if not filled - case of having dimension(s) with one item\n  if (!filledX) gridFill += 'x';\n  if (!filledY) gridFill += 'y';\n  if (!filledZ) gridFill += 'z';\n  var Xs = distinctVals(trace._x);\n  var Ys = distinctVals(trace._y);\n  var Zs = distinctVals(trace._z);\n  gridFill = gridFill.replace('x', (firstX > lastX ? '-' : '+') + 'x');\n  gridFill = gridFill.replace('y', (firstY > lastY ? '-' : '+') + 'y');\n  gridFill = gridFill.replace('z', (firstZ > lastZ ? '-' : '+') + 'z');\n  var empty = function () {\n    len = 0;\n    Xs = [];\n    Ys = [];\n    Zs = [];\n  };\n\n  // Over-specified mesh case, this would error in tube2mesh\n  if (!len || len < Xs.length * Ys.length * Zs.length) empty();\n  var getArray = function (c) {\n    return c === 'x' ? x : c === 'y' ? y : z;\n  };\n  var getVals = function (c) {\n    return c === 'x' ? Xs : c === 'y' ? Ys : Zs;\n  };\n  var getDir = function (c) {\n    return c[len - 1] < c[0] ? -1 : 1;\n  };\n  var arrK = getArray(gridFill[1]);\n  var arrJ = getArray(gridFill[3]);\n  var arrI = getArray(gridFill[5]);\n  var nk = getVals(gridFill[1]).length;\n  var nj = getVals(gridFill[3]).length;\n  var ni = getVals(gridFill[5]).length;\n  var arbitrary = false;\n  var getIndex = function (_i, _j, _k) {\n    return nk * (nj * _i + _j) + _k;\n  };\n  var dirK = getDir(getArray(gridFill[1]));\n  var dirJ = getDir(getArray(gridFill[3]));\n  var dirI = getDir(getArray(gridFill[5]));\n  for (i = 0; i < ni - 1; i++) {\n    for (j = 0; j < nj - 1; j++) {\n      for (k = 0; k < nk - 1; k++) {\n        var q000 = getIndex(i, j, k);\n        var q001 = getIndex(i, j, k + 1);\n        var q010 = getIndex(i, j + 1, k);\n        var q100 = getIndex(i + 1, j, k);\n        if (!(arrK[q000] * dirK < arrK[q001] * dirK) || !(arrJ[q000] * dirJ < arrJ[q010] * dirJ) || !(arrI[q000] * dirI < arrI[q100] * dirI)) {\n          arbitrary = true;\n        }\n        if (arbitrary) break;\n      }\n      if (arbitrary) break;\n    }\n    if (arbitrary) break;\n  }\n  if (arbitrary) {\n    Lib.warn('Encountered arbitrary coordinates! Unable to input data grid.');\n    empty();\n  }\n  return {\n    xMin: xMin,\n    yMin: yMin,\n    zMin: zMin,\n    xMax: xMax,\n    yMax: yMax,\n    zMax: zMax,\n    Xs: Xs,\n    Ys: Ys,\n    Zs: Zs,\n    len: len,\n    fill: gridFill\n  };\n}\nfunction distinctVals(col) {\n  return Lib.distinctVals(col).vals;\n}\nfunction filter(arr, len) {\n  if (len === undefined) len = arr.length;\n\n  // no need for casting typed arrays to numbers\n  if (Lib.isTypedArray(arr)) return arr.subarray(0, len);\n  var values = [];\n  for (var i = 0; i < len; i++) {\n    values[i] = +arr[i];\n  }\n  return values;\n}\nmodule.exports = {\n  calc: calc,\n  filter: filter,\n  processGrid: processGrid\n};\n\n/***/ }),\n\n/***/ 90154:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3382035__) {\n\n\"use strict\";\n\n\nvar tube2mesh = (__nested_webpack_require_3382035__(9330).gl_streamtube3d);\nvar createTubeMesh = tube2mesh.createTubeMesh;\nvar Lib = __nested_webpack_require_3382035__(71828);\nvar parseColorScale = (__nested_webpack_require_3382035__(81697).parseColorScale);\nvar extractOpts = (__nested_webpack_require_3382035__(21081).extractOpts);\nvar zip3 = __nested_webpack_require_3382035__(90060);\nvar axisName2scaleIndex = {\n  xaxis: 0,\n  yaxis: 1,\n  zaxis: 2\n};\nfunction Streamtube(scene, uid) {\n  this.scene = scene;\n  this.uid = uid;\n  this.mesh = null;\n  this.data = null;\n}\nvar proto = Streamtube.prototype;\nproto.handlePick = function (selection) {\n  var sceneLayout = this.scene.fullSceneLayout;\n  var dataScale = this.scene.dataScale;\n  function fromDataScale(v, axisName) {\n    var ax = sceneLayout[axisName];\n    var scale = dataScale[axisName2scaleIndex[axisName]];\n    return ax.l2c(v) / scale;\n  }\n  if (selection.object === this.mesh) {\n    var pos = selection.data.position;\n    var uvx = selection.data.velocity;\n    selection.traceCoordinate = [fromDataScale(pos[0], 'xaxis'), fromDataScale(pos[1], 'yaxis'), fromDataScale(pos[2], 'zaxis'), fromDataScale(uvx[0], 'xaxis'), fromDataScale(uvx[1], 'yaxis'), fromDataScale(uvx[2], 'zaxis'),\n    // u/v/w norm\n    selection.data.intensity * this.data._normMax,\n    // divergence\n    selection.data.divergence];\n    selection.textLabel = this.data.hovertext || this.data.text;\n    return true;\n  }\n};\nfunction getDfltStartingPositions(vec) {\n  var len = vec.length;\n  var s;\n  if (len > 2) {\n    s = vec.slice(1, len - 1);\n  } else if (len === 2) {\n    s = [(vec[0] + vec[1]) / 2];\n  } else {\n    s = vec;\n  }\n  return s;\n}\nfunction getBoundPads(vec) {\n  var len = vec.length;\n  if (len === 1) {\n    return [0.5, 0.5];\n  } else {\n    return [vec[1] - vec[0], vec[len - 1] - vec[len - 2]];\n  }\n}\nfunction convert(scene, trace) {\n  var sceneLayout = scene.fullSceneLayout;\n  var dataScale = scene.dataScale;\n  var len = trace._len;\n  var tubeOpts = {};\n  function toDataCoords(arr, axisName) {\n    var ax = sceneLayout[axisName];\n    var scale = dataScale[axisName2scaleIndex[axisName]];\n    return Lib.simpleMap(arr, function (v) {\n      return ax.d2l(v) * scale;\n    });\n  }\n  tubeOpts.vectors = zip3(toDataCoords(trace._u, 'xaxis'), toDataCoords(trace._v, 'yaxis'), toDataCoords(trace._w, 'zaxis'), len);\n\n  // Over-specified mesh case, this would error in tube2mesh\n  if (!len) {\n    return {\n      positions: [],\n      cells: []\n    };\n  }\n  var meshx = toDataCoords(trace._Xs, 'xaxis');\n  var meshy = toDataCoords(trace._Ys, 'yaxis');\n  var meshz = toDataCoords(trace._Zs, 'zaxis');\n  tubeOpts.meshgrid = [meshx, meshy, meshz];\n  tubeOpts.gridFill = trace._gridFill;\n  var slen = trace._slen;\n  if (slen) {\n    tubeOpts.startingPositions = zip3(toDataCoords(trace._startsX, 'xaxis'), toDataCoords(trace._startsY, 'yaxis'), toDataCoords(trace._startsZ, 'zaxis'));\n  } else {\n    // Default starting positions:\n    //\n    // if len>2, cut xz plane at min-y,\n    // takes all x/y/z pts on that plane except those on the edges\n    // to generate \"well-defined\" tubes,\n    //\n    // if len=2, take position halfway between two the pts,\n    //\n    // if len=1, take that pt\n    var sy0 = meshy[0];\n    var sx = getDfltStartingPositions(meshx);\n    var sz = getDfltStartingPositions(meshz);\n    var startingPositions = new Array(sx.length * sz.length);\n    var m = 0;\n    for (var i = 0; i < sx.length; i++) {\n      for (var k = 0; k < sz.length; k++) {\n        startingPositions[m++] = [sx[i], sy0, sz[k]];\n      }\n    }\n    tubeOpts.startingPositions = startingPositions;\n  }\n  tubeOpts.colormap = parseColorScale(trace);\n  tubeOpts.tubeSize = trace.sizeref;\n  tubeOpts.maxLength = trace.maxdisplayed;\n\n  // add some padding around the bounds\n  // to e.g. allow tubes starting from a slice of the x/y/z mesh\n  // to go beyond bounds a little bit w/o getting clipped\n  var xbnds = toDataCoords(trace._xbnds, 'xaxis');\n  var ybnds = toDataCoords(trace._ybnds, 'yaxis');\n  var zbnds = toDataCoords(trace._zbnds, 'zaxis');\n  var xpads = getBoundPads(meshx);\n  var ypads = getBoundPads(meshy);\n  var zpads = getBoundPads(meshz);\n  var bounds = [[xbnds[0] - xpads[0], ybnds[0] - ypads[0], zbnds[0] - zpads[0]], [xbnds[1] + xpads[1], ybnds[1] + ypads[1], zbnds[1] + zpads[1]]];\n  var meshData = tube2mesh(tubeOpts, bounds);\n\n  // N.B. cmin/cmax correspond to the min/max vector norm\n  // in the u/v/w arrays, which in general is NOT equal to max\n  // intensity that colors the tubes.\n  var cOpts = extractOpts(trace);\n  meshData.vertexIntensityBounds = [cOpts.min / trace._normMax, cOpts.max / trace._normMax];\n\n  // pass gl-mesh3d lighting attributes\n  var lp = trace.lightposition;\n  meshData.lightPosition = [lp.x, lp.y, lp.z];\n  meshData.ambient = trace.lighting.ambient;\n  meshData.diffuse = trace.lighting.diffuse;\n  meshData.specular = trace.lighting.specular;\n  meshData.roughness = trace.lighting.roughness;\n  meshData.fresnel = trace.lighting.fresnel;\n  meshData.opacity = trace.opacity;\n\n  // stash autorange pad value\n  trace._pad = meshData.tubeScale * trace.sizeref * 2;\n  return meshData;\n}\nproto.update = function (data) {\n  this.data = data;\n  var meshData = convert(this.scene, data);\n  this.mesh.update(meshData);\n};\nproto.dispose = function () {\n  this.scene.glplot.remove(this.mesh);\n  this.mesh.dispose();\n};\nfunction createStreamtubeTrace(scene, data) {\n  var gl = scene.glplot.gl;\n  var meshData = convert(scene, data);\n  var mesh = createTubeMesh(gl, meshData);\n  var streamtube = new Streamtube(scene, data.uid);\n  streamtube.mesh = mesh;\n  streamtube.data = data;\n  mesh._trace = streamtube;\n  scene.glplot.add(mesh);\n  return streamtube;\n}\nmodule.exports = createStreamtubeTrace;\n\n/***/ }),\n\n/***/ 22459:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3387827__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3387827__(71828);\nvar colorscaleDefaults = __nested_webpack_require_3387827__(1586);\nvar attributes = __nested_webpack_require_3387827__(21850);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var u = coerce('u');\n  var v = coerce('v');\n  var w = coerce('w');\n  var x = coerce('x');\n  var y = coerce('y');\n  var z = coerce('z');\n  if (!u || !u.length || !v || !v.length || !w || !w.length || !x || !x.length || !y || !y.length || !z || !z.length) {\n    traceOut.visible = false;\n    return;\n  }\n  coerce('starts.x');\n  coerce('starts.y');\n  coerce('starts.z');\n  coerce('maxdisplayed');\n  coerce('sizeref');\n  coerce('lighting.ambient');\n  coerce('lighting.diffuse');\n  coerce('lighting.specular');\n  coerce('lighting.roughness');\n  coerce('lighting.fresnel');\n  coerce('lightposition.x');\n  coerce('lightposition.y');\n  coerce('lightposition.z');\n  colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n    prefix: '',\n    cLetter: 'c'\n  });\n  coerce('text');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  coerce('uhoverformat');\n  coerce('vhoverformat');\n  coerce('whoverformat');\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  coerce('zhoverformat');\n\n  // disable 1D transforms (for now)\n  // x/y/z and u/v/w have matching lengths,\n  // but they don't have to match with starts.(x|y|z)\n  traceOut._length = null;\n};\n\n/***/ }),\n\n/***/ 61510:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3389407__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'trace',\n  name: 'streamtube',\n  basePlotModule: __nested_webpack_require_3389407__(58547),\n  categories: ['gl3d', 'showLegend'],\n  attributes: __nested_webpack_require_3389407__(21850),\n  supplyDefaults: __nested_webpack_require_3389407__(22459),\n  colorbar: {\n    min: 'cmin',\n    max: 'cmax'\n  },\n  calc: (__nested_webpack_require_3389407__(88489).calc),\n  plot: __nested_webpack_require_3389407__(90154),\n  eventData: function (out, pt) {\n    out.tubex = out.x;\n    out.tubey = out.y;\n    out.tubez = out.z;\n    out.tubeu = pt.traceCoordinate[3];\n    out.tubev = pt.traceCoordinate[4];\n    out.tubew = pt.traceCoordinate[5];\n    out.norm = pt.traceCoordinate[6];\n    out.divergence = pt.traceCoordinate[7];\n\n    // Does not correspond to input x/y/z, so delete them\n    delete out.x;\n    delete out.y;\n    delete out.z;\n    return out;\n  },\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 57564:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3390339__) {\n\n\"use strict\";\n\n\nvar baseAttrs = __nested_webpack_require_3390339__(9012);\nvar hovertemplateAttrs = (__nested_webpack_require_3390339__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_3390339__(5386)/* .texttemplateAttrs */ .s);\nvar colorScaleAttrs = __nested_webpack_require_3390339__(50693);\nvar domainAttrs = (__nested_webpack_require_3390339__(27670)/* .attributes */ .Y);\nvar pieAttrs = __nested_webpack_require_3390339__(34000);\nvar constants = __nested_webpack_require_3390339__(7055);\nvar extendFlat = (__nested_webpack_require_3390339__(1426).extendFlat);\nmodule.exports = {\n  labels: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  parents: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  values: {\n    valType: 'data_array',\n    editType: 'calc'\n  },\n  branchvalues: {\n    valType: 'enumerated',\n    values: ['remainder', 'total'],\n    dflt: 'remainder',\n    editType: 'calc'\n  },\n  count: {\n    valType: 'flaglist',\n    flags: ['branches', 'leaves'],\n    dflt: 'leaves',\n    editType: 'calc'\n  },\n  level: {\n    valType: 'any',\n    editType: 'plot',\n    anim: true\n  },\n  maxdepth: {\n    valType: 'integer',\n    editType: 'plot',\n    dflt: -1\n  },\n  marker: extendFlat({\n    colors: {\n      valType: 'data_array',\n      editType: 'calc'\n    },\n    // colorinheritance: {\n    //     valType: 'enumerated',\n    //     values: ['per-branch', 'per-label', false]\n    // },\n\n    line: {\n      color: extendFlat({}, pieAttrs.marker.line.color, {\n        dflt: null\n      }),\n      width: extendFlat({}, pieAttrs.marker.line.width, {\n        dflt: 1\n      }),\n      editType: 'calc'\n    },\n    editType: 'calc'\n  }, colorScaleAttrs('marker', {\n    colorAttr: 'colors',\n    anim: false // TODO: set to anim: true?\n  })),\n\n  leaf: {\n    opacity: {\n      valType: 'number',\n      editType: 'style',\n      min: 0,\n      max: 1\n    },\n    editType: 'plot'\n  },\n  text: pieAttrs.text,\n  textinfo: {\n    valType: 'flaglist',\n    flags: ['label', 'text', 'value', 'current path', 'percent root', 'percent entry', 'percent parent'],\n    extras: ['none'],\n    editType: 'plot'\n  },\n  // TODO: incorporate `label` and `value` in the eventData\n  texttemplate: texttemplateAttrs({\n    editType: 'plot'\n  }, {\n    keys: constants.eventDataKeys.concat(['label', 'value'])\n  }),\n  hovertext: pieAttrs.hovertext,\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {\n    flags: ['label', 'text', 'value', 'name', 'current path', 'percent root', 'percent entry', 'percent parent'],\n    dflt: 'label+text+value+name'\n  }),\n  hovertemplate: hovertemplateAttrs({}, {\n    keys: constants.eventDataKeys\n  }),\n  textfont: pieAttrs.textfont,\n  insidetextorientation: pieAttrs.insidetextorientation,\n  insidetextfont: pieAttrs.insidetextfont,\n  outsidetextfont: extendFlat({}, pieAttrs.outsidetextfont, {}),\n  rotation: {\n    valType: 'angle',\n    dflt: 0,\n    editType: 'plot'\n  },\n  sort: pieAttrs.sort,\n  root: {\n    color: {\n      valType: 'color',\n      editType: 'calc',\n      dflt: 'rgba(0,0,0,0)'\n    },\n    editType: 'calc'\n  },\n  domain: domainAttrs({\n    name: 'sunburst',\n    trace: true,\n    editType: 'calc'\n  })\n};\n\n/***/ }),\n\n/***/ 66888:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_3393479__) {\n\n\"use strict\";\n\n\nvar plots = __nested_webpack_require_3393479__(74875);\nexports.name = 'sunburst';\nexports.plot = function (gd, traces, transitionOpts, makeOnCompleteCallback) {\n  plots.plotBasePlot(exports.name, gd, traces, transitionOpts, makeOnCompleteCallback);\n};\nexports.clean = function (newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  plots.cleanBasePlot(exports.name, newFullData, newFullLayout, oldFullData, oldFullLayout);\n};\n\n/***/ }),\n\n/***/ 52147:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_3394011__) {\n\n\"use strict\";\n\n\nvar d3Hierarchy = __nested_webpack_require_3394011__(674);\nvar isNumeric = __nested_webpack_require_3394011__(92770);\nvar Lib = __nested_webpack_require_3394011__(71828);\nvar makeColorScaleFn = (__nested_webpack_require_3394011__(21081).makeColorScaleFuncFromTrace);\nvar makePullColorFn = (__nested_webpack_require_3394011__(32354).makePullColorFn);\nvar generateExtendedColors = (__nested_webpack_require_3394011__(32354).generateExtendedColors);\nvar colorscaleCalc = (__nested_webpack_require_3394011__(21081).calc);\nvar ALMOST_EQUAL = (__nested_webpack_require_3394011__(50606).ALMOST_EQUAL);\nvar sunburstExtendedColorWays = {};\nvar treemapExtendedColorWays = {};\nvar icicleExtendedColorWays = {};\nexports.calc = function (gd, trace) {\n  var fullLayout = gd._fullLayout;\n  var ids = trace.ids;\n  var hasIds = Lib.isArrayOrTypedArray(ids);\n  var labels = trace.labels;\n  var parents = trace.parents;\n  var values = trace.values;\n  var hasValues = Lib.isArrayOrTypedArray(values);\n  var cd = [];\n  var parent2children = {};\n  var refs = {};\n  var addToLookup = function (parent, v) {\n    if (parent2children[parent]) parent2children[parent].push(v);else parent2children[parent] = [v];\n    refs[v] = 1;\n  };\n\n  // treat number `0` as valid\n  var isValidKey = function (k) {\n    return k || typeof k === 'number';\n  };\n  var isValidVal = function (i) {\n    return !hasValues || isNumeric(values[i]) && values[i] >= 0;\n  };\n  var len;\n  var isValid;\n  var getId;\n  if (hasIds) {\n    len = Math.min(ids.length, parents.length);\n    isValid = function (i) {\n      return isValidKey(ids[i]) && isValidVal(i);\n    };\n    getId = function (i) {\n      return String(ids[i]);\n    };\n  } else {\n    len = Math.min(labels.length, parents.length);\n    isValid = function (i) {\n      return isValidKey(labels[i]) && isValidVal(i);\n    };\n    // TODO We could allow some label / parent duplication\n    //\n    // From AJ:\n    //  It would work OK for one level\n    //  (multiple rows with the same name and different parents -\n    //  or even the same parent) but if that name is then used as a parent\n    //  which one is it?\n    getId = function (i) {\n      return String(labels[i]);\n    };\n  }\n  if (hasValues) len = Math.min(len, values.length);\n  for (var i = 0; i < len; i++) {\n    if (isValid(i)) {\n      var id = getId(i);\n      var pid = isValidKey(parents[i]) ? String(parents[i]) : '';\n      var cdi = {\n        i: i,\n        id: id,\n        pid: pid,\n        label: isValidKey(labels[i]) ? String(labels[i]) : ''\n      };\n      if (hasValues) cdi.v = +values[i];\n      cd.push(cdi);\n      addToLookup(pid, id);\n    }\n  }\n  if (!parent2children['']) {\n    var impliedRoots = [];\n    var k;\n    for (k in parent2children) {\n      if (!refs[k]) {\n        impliedRoots.push(k);\n      }\n    }\n\n    // if an `id` has no ref in the `parents` array,\n    // take it as being the root node\n\n    if (impliedRoots.length === 1) {\n      k = impliedRoots[0];\n      cd.unshift({\n        hasImpliedRoot: true,\n        id: k,\n        pid: '',\n        label: k\n      });\n    } else {\n      return Lib.warn(['Multiple implied roots, cannot build', trace.type, 'hierarchy of', trace.name + '.', 'These roots include:', impliedRoots.join(', ')].join(' '));\n    }\n  } else if (parent2children[''].length > 1) {\n    var dummyId = Lib.randstr();\n\n    // if multiple rows linked to the root node,\n    // add dummy \"root of roots\" node to make d3 build the hierarchy successfully\n\n    for (var j = 0; j < cd.length; j++) {\n      if (cd[j].pid === '') {\n        cd[j].pid = dummyId;\n      }\n    }\n    cd.unshift({\n      hasMultipleRoots: true,\n      id: dummyId,\n      pid: '',\n      label: ''\n    });\n  }\n\n  // TODO might be better to replace stratify() with our own algorithm\n  var root;\n  try {\n    root = d3Hierarchy.stratify().id(function (d) {\n      return d.id;\n    }).parentId(function (d) {\n      return d.pid;\n    })(cd);\n  } catch (e) {\n    return Lib.warn(['Failed to build', trace.type, 'hierarchy of', trace.name + '.', 'Error:', e.message].join(' '));\n  }\n  var hierarchy = d3Hierarchy.hierarchy(root);\n  var failed = false;\n  if (hasValues) {\n    switch (trace.branchvalues) {\n      case 'remainder':\n        hierarchy.sum(function (d) {\n          return d.data.v;\n        });\n        break;\n      case 'total':\n        hierarchy.each(function (d) {\n          var cdi = d.data.data;\n          var v = cdi.v;\n          if (d.children) {\n            var partialSum = d.children.reduce(function (a, c) {\n              return a + c.data.data.v;\n            }, 0);\n\n            // N.B. we must fill in `value` for generated sectors\n            // with the partialSum to compute the correct partition\n            if (cdi.hasImpliedRoot || cdi.hasMultipleRoots) {\n              v = partialSum;\n            }\n            if (v < partialSum * ALMOST_EQUAL) {\n              failed = true;\n              return Lib.warn(['Total value for node', d.data.data.id, 'of', trace.name, 'is smaller than the sum of its children.', '\\nparent value =', v, '\\nchildren sum =', partialSum].join(' '));\n            }\n          }\n          d.value = v;\n        });\n        break;\n    }\n  } else {\n    countDescendants(hierarchy, trace, {\n      branches: trace.count.indexOf('branches') !== -1,\n      leaves: trace.count.indexOf('leaves') !== -1\n    });\n  }\n  if (failed) return;\n\n  // TODO add way to sort by height also?\n  if (trace.sort) {\n    hierarchy.sort(function (a, b) {\n      return b.value - a.value;\n    });\n  }\n  var pullColor;\n  var scaleColor;\n  var colors = trace.marker.colors || [];\n  var hasColors = !!colors.length;\n  if (trace._hasColorscale) {\n    if (!hasColors) {\n      colors = hasValues ? trace.values : trace._values;\n    }\n    colorscaleCalc(gd, trace, {\n      vals: colors,\n      containerStr: 'marker',\n      cLetter: 'c'\n    });\n    scaleColor = makeColorScaleFn(trace.marker);\n  } else {\n    pullColor = makePullColorFn(fullLayout['_' + trace.type + 'colormap']);\n  }\n\n  // TODO keep track of 'root-children' (i.e. branch) for hover info etc.\n\n  hierarchy.each(function (d) {\n    var cdi = d.data.data;\n    // N.B. this mutates items in `cd`\n    cdi.color = trace._hasColorscale ? scaleColor(colors[cdi.i]) : pullColor(colors[cdi.i], cdi.id);\n  });\n  cd[0].hierarchy = hierarchy;\n  return cd;\n};\n\n/*\n * `calc` filled in (and collated) explicit colors.\n * Now we need to propagate these explicit colors to other traces,\n * and fill in default colors.\n * This is done after sorting, so we pick defaults\n * in the order slices will be displayed\n */\nexports._runCrossTraceCalc = function (desiredType, gd) {\n  var fullLayout = gd._fullLayout;\n  var calcdata = gd.calcdata;\n  var colorWay = fullLayout[desiredType + 'colorway'];\n  var colorMap = fullLayout['_' + desiredType + 'colormap'];\n  if (fullLayout['extend' + desiredType + 'colors']) {\n    colorWay = generateExtendedColors(colorWay, desiredType === 'icicle' ? icicleExtendedColorWays : desiredType === 'treemap' ? treemapExtendedColorWays : sunburstExtendedColorWays);\n  }\n  var dfltColorCount = 0;\n  var rootColor;\n  function pickColor(d) {\n    var cdi = d.data.data;\n    var id = cdi.id;\n    if (cdi.color === false) {\n      if (colorMap[id]) {\n        // have we seen this label and assigned a color to it in a previous trace?\n        cdi.color = colorMap[id];\n      } else if (d.parent) {\n        if (d.parent.parent) {\n          // from third-level on, inherit from parent\n          cdi.color = d.parent.data.data.color;\n        } else {\n          // pick new color for second level\n          colorMap[id] = cdi.color = colorWay[dfltColorCount % colorWay.length];\n          dfltColorCount++;\n        }\n      } else {\n        // set root color. no coloring by default.\n        cdi.color = rootColor;\n      }\n    }\n  }\n  for (var i = 0; i < calcdata.length; i++) {\n    var cd = calcdata[i];\n    var cd0 = cd[0];\n    if (cd0.trace.type === desiredType && cd0.hierarchy) {\n      rootColor = cd0.trace.root.color;\n      cd0.hierarchy.each(pickColor);\n    }\n  }\n};\nexports.crossTraceCalc = function (gd) {\n  return exports._runCrossTraceCalc('sunburst', gd);\n};\nfunction countDescendants(node, trace, opts) {\n  var nChild = 0;\n  var children = node.children;\n  if (children) {\n    var len = children.length;\n    for (var i = 0; i < len; i++) {\n      nChild += countDescendants(children[i], trace, opts);\n    }\n    if (opts.branches) nChild++; // count this branch\n  } else {\n    if (opts.leaves) nChild++; // count this leaf\n  }\n\n  // save to the node\n  node.value = node.data.data.value = nChild;\n\n  // save to the trace\n  if (!trace._values) trace._values = [];\n  trace._values[node.data.data.i] = nChild;\n  return nChild;\n}\n\n/***/ }),\n\n/***/ 7055:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  CLICK_TRANSITION_TIME: 750,\n  CLICK_TRANSITION_EASING: 'linear',\n  eventDataKeys: [\n  // string\n  'currentPath', 'root', 'entry',\n  // no need to add 'parent' here\n\n  // percentages i.e. ratios\n  'percentRoot', 'percentEntry', 'percentParent']\n};\n\n/***/ }),\n\n/***/ 17094:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3403013__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3403013__(71828);\nvar attributes = __nested_webpack_require_3403013__(57564);\nvar handleDomainDefaults = (__nested_webpack_require_3403013__(27670)/* .defaults */ .c);\nvar handleText = (__nested_webpack_require_3403013__(90769).handleText);\nvar Colorscale = __nested_webpack_require_3403013__(21081);\nvar hasColorscale = Colorscale.hasColorscale;\nvar colorscaleDefaults = Colorscale.handleDefaults;\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var labels = coerce('labels');\n  var parents = coerce('parents');\n  if (!labels || !labels.length || !parents || !parents.length) {\n    traceOut.visible = false;\n    return;\n  }\n  var vals = coerce('values');\n  if (vals && vals.length) {\n    coerce('branchvalues');\n  } else {\n    coerce('count');\n  }\n  coerce('level');\n  coerce('maxdepth');\n  var lineWidth = coerce('marker.line.width');\n  if (lineWidth) coerce('marker.line.color', layout.paper_bgcolor);\n  coerce('marker.colors');\n  var withColorscale = traceOut._hasColorscale = hasColorscale(traceIn, 'marker', 'colors') || (traceIn.marker || {}).coloraxis // N.B. special logic to consider \"values\" colorscales\n  ;\n\n  if (withColorscale) {\n    colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n      prefix: 'marker.',\n      cLetter: 'c'\n    });\n  }\n  coerce('leaf.opacity', withColorscale ? 1 : 0.7);\n  var text = coerce('text');\n  coerce('texttemplate');\n  if (!traceOut.texttemplate) coerce('textinfo', Array.isArray(text) ? 'text+label' : 'label');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  var textposition = 'auto';\n  handleText(traceIn, traceOut, layout, coerce, textposition, {\n    moduleHasSelected: false,\n    moduleHasUnselected: false,\n    moduleHasConstrain: false,\n    moduleHasCliponaxis: false,\n    moduleHasTextangle: false,\n    moduleHasInsideanchor: false\n  });\n  coerce('insidetextorientation');\n  coerce('sort');\n  coerce('rotation');\n  coerce('root.color');\n  handleDomainDefaults(traceOut, layout, coerce);\n\n  // do not support transforms for now\n  traceOut._length = null;\n};\n\n/***/ }),\n\n/***/ 83523:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3405248__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_3405248__(39898);\nvar Registry = __nested_webpack_require_3405248__(73972);\nvar appendArrayPointValue = (__nested_webpack_require_3405248__(23469).appendArrayPointValue);\nvar Fx = __nested_webpack_require_3405248__(30211);\nvar Lib = __nested_webpack_require_3405248__(71828);\nvar Events = __nested_webpack_require_3405248__(11086);\nvar helpers = __nested_webpack_require_3405248__(2791);\nvar pieHelpers = __nested_webpack_require_3405248__(53581);\nvar formatValue = pieHelpers.formatPieValue;\nmodule.exports = function attachFxHandlers(sliceTop, entry, gd, cd, opts) {\n  var cd0 = cd[0];\n  var trace = cd0.trace;\n  var hierarchy = cd0.hierarchy;\n  var isSunburst = trace.type === 'sunburst';\n  var isTreemapOrIcicle = trace.type === 'treemap' || trace.type === 'icicle';\n\n  // hover state vars\n  // have we drawn a hover label, so it should be cleared later\n  if (!('_hasHoverLabel' in trace)) trace._hasHoverLabel = false;\n  // have we emitted a hover event, so later an unhover event should be emitted\n  // note that click events do not depend on this - you can still get them\n  // with hovermode: false or if you were earlier dragging, then clicked\n  // in the same slice that you moused up in\n  if (!('_hasHoverEvent' in trace)) trace._hasHoverEvent = false;\n  var onMouseOver = function (pt) {\n    var fullLayoutNow = gd._fullLayout;\n    if (gd._dragging || fullLayoutNow.hovermode === false) return;\n    var traceNow = gd._fullData[trace.index];\n    var cdi = pt.data.data;\n    var ptNumber = cdi.i;\n    var isRoot = helpers.isHierarchyRoot(pt);\n    var parent = helpers.getParent(hierarchy, pt);\n    var val = helpers.getValue(pt);\n    var _cast = function (astr) {\n      return Lib.castOption(traceNow, ptNumber, astr);\n    };\n    var hovertemplate = _cast('hovertemplate');\n    var hoverinfo = Fx.castHoverinfo(traceNow, fullLayoutNow, ptNumber);\n    var separators = fullLayoutNow.separators;\n    var eventData;\n    if (hovertemplate || hoverinfo && hoverinfo !== 'none' && hoverinfo !== 'skip') {\n      var hoverCenterX;\n      var hoverCenterY;\n      if (isSunburst) {\n        hoverCenterX = cd0.cx + pt.pxmid[0] * (1 - pt.rInscribed);\n        hoverCenterY = cd0.cy + pt.pxmid[1] * (1 - pt.rInscribed);\n      }\n      if (isTreemapOrIcicle) {\n        hoverCenterX = pt._hoverX;\n        hoverCenterY = pt._hoverY;\n      }\n      var hoverPt = {};\n      var parts = [];\n      var thisText = [];\n      var hasFlag = function (flag) {\n        return parts.indexOf(flag) !== -1;\n      };\n      if (hoverinfo) {\n        parts = hoverinfo === 'all' ? traceNow._module.attributes.hoverinfo.flags : hoverinfo.split('+');\n      }\n      hoverPt.label = cdi.label;\n      if (hasFlag('label') && hoverPt.label) thisText.push(hoverPt.label);\n      if (cdi.hasOwnProperty('v')) {\n        hoverPt.value = cdi.v;\n        hoverPt.valueLabel = formatValue(hoverPt.value, separators);\n        if (hasFlag('value')) thisText.push(hoverPt.valueLabel);\n      }\n      hoverPt.currentPath = pt.currentPath = helpers.getPath(pt.data);\n      if (hasFlag('current path') && !isRoot) {\n        thisText.push(hoverPt.currentPath);\n      }\n      var tx;\n      var allPercents = [];\n      var insertPercent = function () {\n        if (allPercents.indexOf(tx) === -1) {\n          // no need to add redundant info\n          thisText.push(tx);\n          allPercents.push(tx);\n        }\n      };\n      hoverPt.percentParent = pt.percentParent = val / helpers.getValue(parent);\n      hoverPt.parent = pt.parentString = helpers.getPtLabel(parent);\n      if (hasFlag('percent parent')) {\n        tx = helpers.formatPercent(hoverPt.percentParent, separators) + ' of ' + hoverPt.parent;\n        insertPercent();\n      }\n      hoverPt.percentEntry = pt.percentEntry = val / helpers.getValue(entry);\n      hoverPt.entry = pt.entry = helpers.getPtLabel(entry);\n      if (hasFlag('percent entry') && !isRoot && !pt.onPathbar) {\n        tx = helpers.formatPercent(hoverPt.percentEntry, separators) + ' of ' + hoverPt.entry;\n        insertPercent();\n      }\n      hoverPt.percentRoot = pt.percentRoot = val / helpers.getValue(hierarchy);\n      hoverPt.root = pt.root = helpers.getPtLabel(hierarchy);\n      if (hasFlag('percent root') && !isRoot) {\n        tx = helpers.formatPercent(hoverPt.percentRoot, separators) + ' of ' + hoverPt.root;\n        insertPercent();\n      }\n      hoverPt.text = _cast('hovertext') || _cast('text');\n      if (hasFlag('text')) {\n        tx = hoverPt.text;\n        if (Lib.isValidTextValue(tx)) thisText.push(tx);\n      }\n      eventData = [makeEventData(pt, traceNow, opts.eventDataKeys)];\n      var hoverItems = {\n        trace: traceNow,\n        y: hoverCenterY,\n        _x0: pt._x0,\n        _x1: pt._x1,\n        _y0: pt._y0,\n        _y1: pt._y1,\n        text: thisText.join('<br>'),\n        name: hovertemplate || hasFlag('name') ? traceNow.name : undefined,\n        color: _cast('hoverlabel.bgcolor') || cdi.color,\n        borderColor: _cast('hoverlabel.bordercolor'),\n        fontFamily: _cast('hoverlabel.font.family'),\n        fontSize: _cast('hoverlabel.font.size'),\n        fontColor: _cast('hoverlabel.font.color'),\n        nameLength: _cast('hoverlabel.namelength'),\n        textAlign: _cast('hoverlabel.align'),\n        hovertemplate: hovertemplate,\n        hovertemplateLabels: hoverPt,\n        eventData: eventData\n      };\n      if (isSunburst) {\n        hoverItems.x0 = hoverCenterX - pt.rInscribed * pt.rpx1;\n        hoverItems.x1 = hoverCenterX + pt.rInscribed * pt.rpx1;\n        hoverItems.idealAlign = pt.pxmid[0] < 0 ? 'left' : 'right';\n      }\n      if (isTreemapOrIcicle) {\n        hoverItems.x = hoverCenterX;\n        hoverItems.idealAlign = hoverCenterX < 0 ? 'left' : 'right';\n      }\n      var bbox = [];\n      Fx.loneHover(hoverItems, {\n        container: fullLayoutNow._hoverlayer.node(),\n        outerContainer: fullLayoutNow._paper.node(),\n        gd: gd,\n        inOut_bbox: bbox\n      });\n      eventData[0].bbox = bbox[0];\n      trace._hasHoverLabel = true;\n    }\n    if (isTreemapOrIcicle) {\n      var slice = sliceTop.select('path.surface');\n      opts.styleOne(slice, pt, traceNow, {\n        hovered: true\n      });\n    }\n    trace._hasHoverEvent = true;\n    gd.emit('plotly_hover', {\n      points: eventData || [makeEventData(pt, traceNow, opts.eventDataKeys)],\n      event: d3.event\n    });\n  };\n  var onMouseOut = function (evt) {\n    var fullLayoutNow = gd._fullLayout;\n    var traceNow = gd._fullData[trace.index];\n    var pt = d3.select(this).datum();\n    if (trace._hasHoverEvent) {\n      evt.originalEvent = d3.event;\n      gd.emit('plotly_unhover', {\n        points: [makeEventData(pt, traceNow, opts.eventDataKeys)],\n        event: d3.event\n      });\n      trace._hasHoverEvent = false;\n    }\n    if (trace._hasHoverLabel) {\n      Fx.loneUnhover(fullLayoutNow._hoverlayer.node());\n      trace._hasHoverLabel = false;\n    }\n    if (isTreemapOrIcicle) {\n      var slice = sliceTop.select('path.surface');\n      opts.styleOne(slice, pt, traceNow, {\n        hovered: false\n      });\n    }\n  };\n  var onClick = function (pt) {\n    // TODO: this does not support right-click. If we want to support it, we\n    // would likely need to change pie to use dragElement instead of straight\n    // mapbox event binding. Or perhaps better, make a simple wrapper with the\n    // right mousedown, mousemove, and mouseup handlers just for a left/right click\n    // mapbox would use this too.\n    var fullLayoutNow = gd._fullLayout;\n    var traceNow = gd._fullData[trace.index];\n    var noTransition = isSunburst && (helpers.isHierarchyRoot(pt) || helpers.isLeaf(pt));\n    var id = helpers.getPtId(pt);\n    var nextEntry = helpers.isEntry(pt) ? helpers.findEntryWithChild(hierarchy, id) : helpers.findEntryWithLevel(hierarchy, id);\n    var nextLevel = helpers.getPtId(nextEntry);\n    var typeClickEvtData = {\n      points: [makeEventData(pt, traceNow, opts.eventDataKeys)],\n      event: d3.event\n    };\n    if (!noTransition) typeClickEvtData.nextLevel = nextLevel;\n    var clickVal = Events.triggerHandler(gd, 'plotly_' + trace.type + 'click', typeClickEvtData);\n    if (clickVal !== false && fullLayoutNow.hovermode) {\n      gd._hoverdata = [makeEventData(pt, traceNow, opts.eventDataKeys)];\n      Fx.click(gd, d3.event);\n    }\n\n    // if click does not trigger a transition, we're done!\n    if (noTransition) return;\n\n    // if custom handler returns false, we're done!\n    if (clickVal === false) return;\n\n    // skip if triggered from dragging a nearby cartesian subplot\n    if (gd._dragging) return;\n\n    // skip during transitions, to avoid potential bugs\n    // we could remove this check later\n    if (gd._transitioning) return;\n\n    // store 'old' level in guiEdit stash, so that subsequent Plotly.react\n    // calls with the same uirevision can start from the same entry\n    Registry.call('_storeDirectGUIEdit', traceNow, fullLayoutNow._tracePreGUI[traceNow.uid], {\n      level: traceNow.level\n    });\n    var frame = {\n      data: [{\n        level: nextLevel\n      }],\n      traces: [trace.index]\n    };\n    var animOpts = {\n      frame: {\n        redraw: false,\n        duration: opts.transitionTime\n      },\n      transition: {\n        duration: opts.transitionTime,\n        easing: opts.transitionEasing\n      },\n      mode: 'immediate',\n      fromcurrent: true\n    };\n    Fx.loneUnhover(fullLayoutNow._hoverlayer.node());\n    Registry.call('animate', gd, frame, animOpts);\n  };\n  sliceTop.on('mouseover', onMouseOver);\n  sliceTop.on('mouseout', onMouseOut);\n  sliceTop.on('click', onClick);\n};\nfunction makeEventData(pt, trace, keys) {\n  var cdi = pt.data.data;\n  var out = {\n    curveNumber: trace.index,\n    pointNumber: cdi.i,\n    data: trace._input,\n    fullData: trace\n\n    // TODO more things like 'children', 'siblings', 'hierarchy?\n  };\n\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (key in pt) out[key] = pt[key];\n  }\n  // handle special case of parent\n  if ('parentString' in pt && !helpers.isHierarchyRoot(pt)) out.parent = pt.parentString;\n  appendArrayPointValue(out, trace, cdi.i);\n  return out;\n}\n\n/***/ }),\n\n/***/ 2791:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_3415353__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3415353__(71828);\nvar Color = __nested_webpack_require_3415353__(7901);\nvar setCursor = __nested_webpack_require_3415353__(6964);\nvar pieHelpers = __nested_webpack_require_3415353__(53581);\nexports.findEntryWithLevel = function (hierarchy, level) {\n  var out;\n  if (level) {\n    hierarchy.eachAfter(function (pt) {\n      if (exports.getPtId(pt) === level) {\n        return out = pt.copy();\n      }\n    });\n  }\n  return out || hierarchy;\n};\nexports.findEntryWithChild = function (hierarchy, childId) {\n  var out;\n  hierarchy.eachAfter(function (pt) {\n    var children = pt.children || [];\n    for (var i = 0; i < children.length; i++) {\n      var child = children[i];\n      if (exports.getPtId(child) === childId) {\n        return out = pt.copy();\n      }\n    }\n  });\n  return out || hierarchy;\n};\nexports.isEntry = function (pt) {\n  return !pt.parent;\n};\nexports.isLeaf = function (pt) {\n  return !pt.children;\n};\nexports.getPtId = function (pt) {\n  return pt.data.data.id;\n};\nexports.getPtLabel = function (pt) {\n  return pt.data.data.label;\n};\nexports.getValue = function (d) {\n  return d.value;\n};\nexports.isHierarchyRoot = function (pt) {\n  return getParentId(pt) === '';\n};\nexports.setSliceCursor = function (sliceTop, gd, opts) {\n  var hide = opts.isTransitioning;\n  if (!hide) {\n    var pt = sliceTop.datum();\n    hide = opts.hideOnRoot && exports.isHierarchyRoot(pt) || opts.hideOnLeaves && exports.isLeaf(pt);\n  }\n  setCursor(sliceTop, hide ? null : 'pointer');\n};\nfunction determineOutsideTextFont(trace, pt, layoutFont) {\n  return {\n    color: exports.getOutsideTextFontKey('color', trace, pt, layoutFont),\n    family: exports.getOutsideTextFontKey('family', trace, pt, layoutFont),\n    size: exports.getOutsideTextFontKey('size', trace, pt, layoutFont)\n  };\n}\nfunction determineInsideTextFont(trace, pt, layoutFont, opts) {\n  var onPathbar = (opts || {}).onPathbar;\n  var cdi = pt.data.data;\n  var ptNumber = cdi.i;\n  var customColor = Lib.castOption(trace, ptNumber, (onPathbar ? 'pathbar.textfont' : 'insidetextfont') + '.color');\n  if (!customColor && trace._input.textfont) {\n    // Why not simply using trace.textfont? Because if not set, it\n    // defaults to layout.font which has a default color. But if\n    // textfont.color and insidetextfont.color don't supply a value,\n    // a contrasting color shall be used.\n    customColor = Lib.castOption(trace._input, ptNumber, 'textfont.color');\n  }\n  return {\n    color: customColor || Color.contrast(cdi.color),\n    family: exports.getInsideTextFontKey('family', trace, pt, layoutFont, opts),\n    size: exports.getInsideTextFontKey('size', trace, pt, layoutFont, opts)\n  };\n}\nexports.getInsideTextFontKey = function (keyStr, trace, pt, layoutFont, opts) {\n  var onPathbar = (opts || {}).onPathbar;\n  var cont = onPathbar ? 'pathbar.textfont' : 'insidetextfont';\n  var ptNumber = pt.data.data.i;\n  return Lib.castOption(trace, ptNumber, cont + '.' + keyStr) || Lib.castOption(trace, ptNumber, 'textfont.' + keyStr) || layoutFont.size;\n};\nexports.getOutsideTextFontKey = function (keyStr, trace, pt, layoutFont) {\n  var ptNumber = pt.data.data.i;\n  return Lib.castOption(trace, ptNumber, 'outsidetextfont.' + keyStr) || Lib.castOption(trace, ptNumber, 'textfont.' + keyStr) || layoutFont.size;\n};\nexports.isOutsideText = function (trace, pt) {\n  return !trace._hasColorscale && exports.isHierarchyRoot(pt);\n};\nexports.determineTextFont = function (trace, pt, layoutFont, opts) {\n  return exports.isOutsideText(trace, pt) ? determineOutsideTextFont(trace, pt, layoutFont) : determineInsideTextFont(trace, pt, layoutFont, opts);\n};\nexports.hasTransition = function (transitionOpts) {\n  // We could optimize hasTransition per trace,\n  // as sunburst, treemap & icicle have no cross-trace logic!\n  return !!(transitionOpts && transitionOpts.duration > 0);\n};\nexports.getMaxDepth = function (trace) {\n  return trace.maxdepth >= 0 ? trace.maxdepth : Infinity;\n};\nexports.isHeader = function (pt, trace) {\n  // it is only used in treemap.\n  return !(exports.isLeaf(pt) || pt.depth === trace._maxDepth - 1);\n};\nfunction getParentId(pt) {\n  return pt.data.data.pid;\n}\nexports.getParent = function (hierarchy, pt) {\n  return exports.findEntryWithLevel(hierarchy, getParentId(pt));\n};\nexports.listPath = function (d, keyStr) {\n  var parent = d.parent;\n  if (!parent) return [];\n  var list = keyStr ? [parent.data[keyStr]] : [parent];\n  return exports.listPath(parent, keyStr).concat(list);\n};\nexports.getPath = function (d) {\n  return exports.listPath(d, 'label').join('/') + '/';\n};\nexports.formatValue = pieHelpers.formatPieValue;\n\n// TODO: should combine the two in a separate PR - Also please note Lib.formatPercent should support separators.\nexports.formatPercent = function (v, separators) {\n  var tx = Lib.formatPercent(v, 0); // use funnel(area) version\n  if (tx === '0%') tx = pieHelpers.formatPiePercent(v, separators); // use pie version\n  return tx;\n};\n\n/***/ }),\n\n/***/ 87619:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3420362__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'trace',\n  name: 'sunburst',\n  basePlotModule: __nested_webpack_require_3420362__(66888),\n  categories: [],\n  animatable: true,\n  attributes: __nested_webpack_require_3420362__(57564),\n  layoutAttributes: __nested_webpack_require_3420362__(2654),\n  supplyDefaults: __nested_webpack_require_3420362__(17094),\n  supplyLayoutDefaults: __nested_webpack_require_3420362__(57034),\n  calc: (__nested_webpack_require_3420362__(52147).calc),\n  crossTraceCalc: (__nested_webpack_require_3420362__(52147).crossTraceCalc),\n  plot: (__nested_webpack_require_3420362__(24714).plot),\n  style: (__nested_webpack_require_3420362__(29969).style),\n  colorbar: __nested_webpack_require_3420362__(4898),\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 2654:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  sunburstcolorway: {\n    valType: 'colorlist',\n    editType: 'calc'\n  },\n  extendsunburstcolors: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc'\n  }\n};\n\n/***/ }),\n\n/***/ 57034:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3421311__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3421311__(71828);\nvar layoutAttributes = __nested_webpack_require_3421311__(2654);\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n  }\n  coerce('sunburstcolorway', layoutOut.colorway);\n  coerce('extendsunburstcolors');\n};\n\n/***/ }),\n\n/***/ 24714:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_3421781__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_3421781__(39898);\nvar d3Hierarchy = __nested_webpack_require_3421781__(674);\nvar interpolate = (__nested_webpack_require_3421781__(81684)/* .interpolate */ .sX);\nvar Drawing = __nested_webpack_require_3421781__(91424);\nvar Lib = __nested_webpack_require_3421781__(71828);\nvar svgTextUtils = __nested_webpack_require_3421781__(63893);\nvar uniformText = __nested_webpack_require_3421781__(72597);\nvar recordMinTextSize = uniformText.recordMinTextSize;\nvar clearMinTextSize = uniformText.clearMinTextSize;\nvar piePlot = __nested_webpack_require_3421781__(14575);\nvar getRotationAngle = (__nested_webpack_require_3421781__(53581).getRotationAngle);\nvar computeTransform = piePlot.computeTransform;\nvar transformInsideText = piePlot.transformInsideText;\nvar styleOne = (__nested_webpack_require_3421781__(29969).styleOne);\nvar resizeText = (__nested_webpack_require_3421781__(16688).resizeText);\nvar attachFxHandlers = __nested_webpack_require_3421781__(83523);\nvar constants = __nested_webpack_require_3421781__(7055);\nvar helpers = __nested_webpack_require_3421781__(2791);\nexports.plot = function (gd, cdmodule, transitionOpts, makeOnCompleteCallback) {\n  var fullLayout = gd._fullLayout;\n  var layer = fullLayout._sunburstlayer;\n  var join, onComplete;\n\n  // If transition config is provided, then it is only a partial replot and traces not\n  // updated are removed.\n  var isFullReplot = !transitionOpts;\n  var hasTransition = !fullLayout.uniformtext.mode && helpers.hasTransition(transitionOpts);\n  clearMinTextSize('sunburst', fullLayout);\n  join = layer.selectAll('g.trace.sunburst').data(cdmodule, function (cd) {\n    return cd[0].trace.uid;\n  });\n\n  // using same 'stroke-linejoin' as pie traces\n  join.enter().append('g').classed('trace', true).classed('sunburst', true).attr('stroke-linejoin', 'round');\n  join.order();\n  if (hasTransition) {\n    if (makeOnCompleteCallback) {\n      // If it was passed a callback to register completion, make a callback. If\n      // this is created, then it must be executed on completion, otherwise the\n      // pos-transition redraw will not execute:\n      onComplete = makeOnCompleteCallback();\n    }\n    var transition = d3.transition().duration(transitionOpts.duration).ease(transitionOpts.easing).each('end', function () {\n      onComplete && onComplete();\n    }).each('interrupt', function () {\n      onComplete && onComplete();\n    });\n    transition.each(function () {\n      // Must run the selection again since otherwise enters/updates get grouped together\n      // and these get executed out of order. Except we need them in order!\n      layer.selectAll('g.trace').each(function (cd) {\n        plotOne(gd, cd, this, transitionOpts);\n      });\n    });\n  } else {\n    join.each(function (cd) {\n      plotOne(gd, cd, this, transitionOpts);\n    });\n    if (fullLayout.uniformtext.mode) {\n      resizeText(gd, fullLayout._sunburstlayer.selectAll('.trace'), 'sunburst');\n    }\n  }\n  if (isFullReplot) {\n    join.exit().remove();\n  }\n};\nfunction plotOne(gd, cd, element, transitionOpts) {\n  var isStatic = gd._context.staticPlot;\n  var fullLayout = gd._fullLayout;\n  var hasTransition = !fullLayout.uniformtext.mode && helpers.hasTransition(transitionOpts);\n  var gTrace = d3.select(element);\n  var slices = gTrace.selectAll('g.slice');\n  var cd0 = cd[0];\n  var trace = cd0.trace;\n  var hierarchy = cd0.hierarchy;\n  var entry = helpers.findEntryWithLevel(hierarchy, trace.level);\n  var maxDepth = helpers.getMaxDepth(trace);\n  var gs = fullLayout._size;\n  var domain = trace.domain;\n  var vpw = gs.w * (domain.x[1] - domain.x[0]);\n  var vph = gs.h * (domain.y[1] - domain.y[0]);\n  var rMax = 0.5 * Math.min(vpw, vph);\n  var cx = cd0.cx = gs.l + gs.w * (domain.x[1] + domain.x[0]) / 2;\n  var cy = cd0.cy = gs.t + gs.h * (1 - domain.y[0]) - vph / 2;\n  if (!entry) {\n    return slices.remove();\n  }\n\n  // previous root 'pt' (can be empty)\n  var prevEntry = null;\n  // stash of 'previous' position data used by tweening functions\n  var prevLookup = {};\n  if (hasTransition) {\n    // Important: do this before binding new sliceData!\n    slices.each(function (pt) {\n      prevLookup[helpers.getPtId(pt)] = {\n        rpx0: pt.rpx0,\n        rpx1: pt.rpx1,\n        x0: pt.x0,\n        x1: pt.x1,\n        transform: pt.transform\n      };\n      if (!prevEntry && helpers.isEntry(pt)) {\n        prevEntry = pt;\n      }\n    });\n  }\n\n  // N.B. slice data isn't the calcdata,\n  // grab corresponding calcdata item in sliceData[i].data.data\n  var sliceData = partition(entry).descendants();\n  var maxHeight = entry.height + 1;\n  var yOffset = 0;\n  var cutoff = maxDepth;\n  // N.B. handle multiple-root special case\n  if (cd0.hasMultipleRoots && helpers.isHierarchyRoot(entry)) {\n    sliceData = sliceData.slice(1);\n    maxHeight -= 1;\n    yOffset = 1;\n    cutoff += 1;\n  }\n\n  // filter out slices that won't show up on graph\n  sliceData = sliceData.filter(function (pt) {\n    return pt.y1 <= cutoff;\n  });\n  var baseX = getRotationAngle(trace.rotation);\n  if (baseX) {\n    sliceData.forEach(function (pt) {\n      pt.x0 += baseX;\n      pt.x1 += baseX;\n    });\n  }\n\n  // partition span ('y') to sector radial px value\n  var maxY = Math.min(maxHeight, maxDepth);\n  var y2rpx = function (y) {\n    return (y - yOffset) / maxY * rMax;\n  };\n  // (radial px value, partition angle ('x'))  to px [x,y]\n  var rx2px = function (r, x) {\n    return [r * Math.cos(x), -r * Math.sin(x)];\n  };\n  // slice path generation fn\n  var pathSlice = function (d) {\n    return Lib.pathAnnulus(d.rpx0, d.rpx1, d.x0, d.x1, cx, cy);\n  };\n  // slice text translate x/y\n\n  var getTargetX = function (d) {\n    return cx + getTextXY(d)[0] * (d.transform.rCenter || 0) + (d.transform.x || 0);\n  };\n  var getTargetY = function (d) {\n    return cy + getTextXY(d)[1] * (d.transform.rCenter || 0) + (d.transform.y || 0);\n  };\n  slices = slices.data(sliceData, helpers.getPtId);\n  slices.enter().append('g').classed('slice', true);\n  if (hasTransition) {\n    slices.exit().transition().each(function () {\n      var sliceTop = d3.select(this);\n      var slicePath = sliceTop.select('path.surface');\n      slicePath.transition().attrTween('d', function (pt2) {\n        var interp = makeExitSliceInterpolator(pt2);\n        return function (t) {\n          return pathSlice(interp(t));\n        };\n      });\n      var sliceTextGroup = sliceTop.select('g.slicetext');\n      sliceTextGroup.attr('opacity', 0);\n    }).remove();\n  } else {\n    slices.exit().remove();\n  }\n  slices.order();\n\n  // next x1 (i.e. sector end angle) of previous entry\n  var nextX1ofPrevEntry = null;\n  if (hasTransition && prevEntry) {\n    var prevEntryId = helpers.getPtId(prevEntry);\n    slices.each(function (pt) {\n      if (nextX1ofPrevEntry === null && helpers.getPtId(pt) === prevEntryId) {\n        nextX1ofPrevEntry = pt.x1;\n      }\n    });\n  }\n  var updateSlices = slices;\n  if (hasTransition) {\n    updateSlices = updateSlices.transition().each('end', function () {\n      // N.B. gd._transitioning is (still) *true* by the time\n      // transition updates get here\n      var sliceTop = d3.select(this);\n      helpers.setSliceCursor(sliceTop, gd, {\n        hideOnRoot: true,\n        hideOnLeaves: true,\n        isTransitioning: false\n      });\n    });\n  }\n  updateSlices.each(function (pt) {\n    var sliceTop = d3.select(this);\n    var slicePath = Lib.ensureSingle(sliceTop, 'path', 'surface', function (s) {\n      s.style('pointer-events', isStatic ? 'none' : 'all');\n    });\n    pt.rpx0 = y2rpx(pt.y0);\n    pt.rpx1 = y2rpx(pt.y1);\n    pt.xmid = (pt.x0 + pt.x1) / 2;\n    pt.pxmid = rx2px(pt.rpx1, pt.xmid);\n    pt.midangle = -(pt.xmid - Math.PI / 2);\n    pt.startangle = -(pt.x0 - Math.PI / 2);\n    pt.stopangle = -(pt.x1 - Math.PI / 2);\n    pt.halfangle = 0.5 * Math.min(Lib.angleDelta(pt.x0, pt.x1) || Math.PI, Math.PI);\n    pt.ring = 1 - pt.rpx0 / pt.rpx1;\n    pt.rInscribed = getInscribedRadiusFraction(pt, trace);\n    if (hasTransition) {\n      slicePath.transition().attrTween('d', function (pt2) {\n        var interp = makeUpdateSliceInterpolator(pt2);\n        return function (t) {\n          return pathSlice(interp(t));\n        };\n      });\n    } else {\n      slicePath.attr('d', pathSlice);\n    }\n    sliceTop.call(attachFxHandlers, entry, gd, cd, {\n      eventDataKeys: constants.eventDataKeys,\n      transitionTime: constants.CLICK_TRANSITION_TIME,\n      transitionEasing: constants.CLICK_TRANSITION_EASING\n    }).call(helpers.setSliceCursor, gd, {\n      hideOnRoot: true,\n      hideOnLeaves: true,\n      isTransitioning: gd._transitioning\n    });\n    slicePath.call(styleOne, pt, trace);\n    var sliceTextGroup = Lib.ensureSingle(sliceTop, 'g', 'slicetext');\n    var sliceText = Lib.ensureSingle(sliceTextGroup, 'text', '', function (s) {\n      // prohibit tex interpretation until we can handle\n      // tex and regular text together\n      s.attr('data-notex', 1);\n    });\n    var font = Lib.ensureUniformFontSize(gd, helpers.determineTextFont(trace, pt, fullLayout.font));\n    sliceText.text(exports.formatSliceLabel(pt, entry, trace, cd, fullLayout)).classed('slicetext', true).attr('text-anchor', 'middle').call(Drawing.font, font).call(svgTextUtils.convertToTspans, gd);\n\n    // position the text relative to the slice\n    var textBB = Drawing.bBox(sliceText.node());\n    pt.transform = transformInsideText(textBB, pt, cd0);\n    pt.transform.targetX = getTargetX(pt);\n    pt.transform.targetY = getTargetY(pt);\n    var strTransform = function (d, textBB) {\n      var transform = d.transform;\n      computeTransform(transform, textBB);\n      transform.fontSize = font.size;\n      recordMinTextSize(trace.type, transform, fullLayout);\n      return Lib.getTextTransform(transform);\n    };\n    if (hasTransition) {\n      sliceText.transition().attrTween('transform', function (pt2) {\n        var interp = makeUpdateTextInterpolator(pt2);\n        return function (t) {\n          return strTransform(interp(t), textBB);\n        };\n      });\n    } else {\n      sliceText.attr('transform', strTransform(pt, textBB));\n    }\n  });\n  function makeExitSliceInterpolator(pt) {\n    var id = helpers.getPtId(pt);\n    var prev = prevLookup[id];\n    var entryPrev = prevLookup[helpers.getPtId(entry)];\n    var next;\n    if (entryPrev) {\n      var a = (pt.x1 > entryPrev.x1 ? 2 * Math.PI : 0) + baseX;\n      // if pt to remove:\n      // - if 'below' where the root-node used to be: shrink it radially inward\n      // - otherwise, collapse it clockwise or counterclockwise which ever is shortest to theta=0\n      next = pt.rpx1 < entryPrev.rpx1 ? {\n        x0: pt.x0,\n        x1: pt.x1,\n        rpx0: 0,\n        rpx1: 0\n      } : {\n        x0: a,\n        x1: a,\n        rpx0: pt.rpx0,\n        rpx1: pt.rpx1\n      };\n    } else {\n      // this happens when maxdepth is set, when leaves must\n      // be removed and the rootPt is new (i.e. does not have a 'prev' object)\n      var parent;\n      var parentId = helpers.getPtId(pt.parent);\n      slices.each(function (pt2) {\n        if (helpers.getPtId(pt2) === parentId) {\n          return parent = pt2;\n        }\n      });\n      var parentChildren = parent.children;\n      var ci;\n      parentChildren.forEach(function (pt2, i) {\n        if (helpers.getPtId(pt2) === id) {\n          return ci = i;\n        }\n      });\n      var n = parentChildren.length;\n      var interp = interpolate(parent.x0, parent.x1);\n      next = {\n        rpx0: rMax,\n        rpx1: rMax,\n        x0: interp(ci / n),\n        x1: interp((ci + 1) / n)\n      };\n    }\n    return interpolate(prev, next);\n  }\n  function makeUpdateSliceInterpolator(pt) {\n    var prev0 = prevLookup[helpers.getPtId(pt)];\n    var prev;\n    var next = {\n      x0: pt.x0,\n      x1: pt.x1,\n      rpx0: pt.rpx0,\n      rpx1: pt.rpx1\n    };\n    if (prev0) {\n      // if pt already on graph, this is easy\n      prev = prev0;\n    } else {\n      // for new pts:\n      if (prevEntry) {\n        // if trace was visible before\n        if (pt.parent) {\n          if (nextX1ofPrevEntry) {\n            // if new branch, twist it in clockwise or\n            // counterclockwise which ever is shorter to\n            // its final angle\n            var a = (pt.x1 > nextX1ofPrevEntry ? 2 * Math.PI : 0) + baseX;\n            prev = {\n              x0: a,\n              x1: a\n            };\n          } else {\n            // if new leaf (when maxdepth is set),\n            // grow it radially and angularly from\n            // its parent node\n            prev = {\n              rpx0: rMax,\n              rpx1: rMax\n            };\n            Lib.extendFlat(prev, interpX0X1FromParent(pt));\n          }\n        } else {\n          // if new root-node, grow it radially\n          prev = {\n            rpx0: 0,\n            rpx1: 0\n          };\n        }\n      } else {\n        // start sector of new traces from theta=0\n        prev = {\n          x0: baseX,\n          x1: baseX\n        };\n      }\n    }\n    return interpolate(prev, next);\n  }\n  function makeUpdateTextInterpolator(pt) {\n    var prev0 = prevLookup[helpers.getPtId(pt)];\n    var prev;\n    var transform = pt.transform;\n    if (prev0) {\n      prev = prev0;\n    } else {\n      prev = {\n        rpx1: pt.rpx1,\n        transform: {\n          textPosAngle: transform.textPosAngle,\n          scale: 0,\n          rotate: transform.rotate,\n          rCenter: transform.rCenter,\n          x: transform.x,\n          y: transform.y\n        }\n      };\n\n      // for new pts:\n      if (prevEntry) {\n        // if trace was visible before\n        if (pt.parent) {\n          if (nextX1ofPrevEntry) {\n            // if new branch, twist it in clockwise or\n            // counterclockwise which ever is shorter to\n            // its final angle\n            var a = pt.x1 > nextX1ofPrevEntry ? 2 * Math.PI : 0;\n            prev.x0 = prev.x1 = a;\n          } else {\n            // if leaf\n            Lib.extendFlat(prev, interpX0X1FromParent(pt));\n          }\n        } else {\n          // if new root-node\n          prev.x0 = prev.x1 = baseX;\n        }\n      } else {\n        // on new traces\n        prev.x0 = prev.x1 = baseX;\n      }\n    }\n    var textPosAngleFn = interpolate(prev.transform.textPosAngle, pt.transform.textPosAngle);\n    var rpx1Fn = interpolate(prev.rpx1, pt.rpx1);\n    var x0Fn = interpolate(prev.x0, pt.x0);\n    var x1Fn = interpolate(prev.x1, pt.x1);\n    var scaleFn = interpolate(prev.transform.scale, transform.scale);\n    var rotateFn = interpolate(prev.transform.rotate, transform.rotate);\n\n    // smooth out start/end from entry, to try to keep text inside sector\n    // while keeping transition smooth\n    var pow = transform.rCenter === 0 ? 3 : prev.transform.rCenter === 0 ? 1 / 3 : 1;\n    var _rCenterFn = interpolate(prev.transform.rCenter, transform.rCenter);\n    var rCenterFn = function (t) {\n      return _rCenterFn(Math.pow(t, pow));\n    };\n    return function (t) {\n      var rpx1 = rpx1Fn(t);\n      var x0 = x0Fn(t);\n      var x1 = x1Fn(t);\n      var rCenter = rCenterFn(t);\n      var pxmid = rx2px(rpx1, (x0 + x1) / 2);\n      var textPosAngle = textPosAngleFn(t);\n      var d = {\n        pxmid: pxmid,\n        rpx1: rpx1,\n        transform: {\n          textPosAngle: textPosAngle,\n          rCenter: rCenter,\n          x: transform.x,\n          y: transform.y\n        }\n      };\n      recordMinTextSize(trace.type, transform, fullLayout);\n      return {\n        transform: {\n          targetX: getTargetX(d),\n          targetY: getTargetY(d),\n          scale: scaleFn(t),\n          rotate: rotateFn(t),\n          rCenter: rCenter\n        }\n      };\n    };\n  }\n  function interpX0X1FromParent(pt) {\n    var parent = pt.parent;\n    var parentPrev = prevLookup[helpers.getPtId(parent)];\n    var out = {};\n    if (parentPrev) {\n      // if parent is visible\n      var parentChildren = parent.children;\n      var ci = parentChildren.indexOf(pt);\n      var n = parentChildren.length;\n      var interp = interpolate(parentPrev.x0, parentPrev.x1);\n      out.x0 = interp(ci / n);\n      out.x1 = interp(ci / n);\n    } else {\n      // w/o visible parent\n      // TODO !!! HOW ???\n      out.x0 = out.x1 = 0;\n    }\n    return out;\n  }\n}\n\n// x[0-1] keys are angles [radians]\n// y[0-1] keys are hierarchy heights [integers]\nfunction partition(entry) {\n  return d3Hierarchy.partition().size([2 * Math.PI, entry.height + 1])(entry);\n}\nexports.formatSliceLabel = function (pt, entry, trace, cd, fullLayout) {\n  var texttemplate = trace.texttemplate;\n  var textinfo = trace.textinfo;\n  if (!texttemplate && (!textinfo || textinfo === 'none')) {\n    return '';\n  }\n  var separators = fullLayout.separators;\n  var cd0 = cd[0];\n  var cdi = pt.data.data;\n  var hierarchy = cd0.hierarchy;\n  var isRoot = helpers.isHierarchyRoot(pt);\n  var parent = helpers.getParent(hierarchy, pt);\n  var val = helpers.getValue(pt);\n  if (!texttemplate) {\n    var parts = textinfo.split('+');\n    var hasFlag = function (flag) {\n      return parts.indexOf(flag) !== -1;\n    };\n    var thisText = [];\n    var tx;\n    if (hasFlag('label') && cdi.label) {\n      thisText.push(cdi.label);\n    }\n    if (cdi.hasOwnProperty('v') && hasFlag('value')) {\n      thisText.push(helpers.formatValue(cdi.v, separators));\n    }\n    if (!isRoot) {\n      if (hasFlag('current path')) {\n        thisText.push(helpers.getPath(pt.data));\n      }\n      var nPercent = 0;\n      if (hasFlag('percent parent')) nPercent++;\n      if (hasFlag('percent entry')) nPercent++;\n      if (hasFlag('percent root')) nPercent++;\n      var hasMultiplePercents = nPercent > 1;\n      if (nPercent) {\n        var percent;\n        var addPercent = function (key) {\n          tx = helpers.formatPercent(percent, separators);\n          if (hasMultiplePercents) tx += ' of ' + key;\n          thisText.push(tx);\n        };\n        if (hasFlag('percent parent') && !isRoot) {\n          percent = val / helpers.getValue(parent);\n          addPercent('parent');\n        }\n        if (hasFlag('percent entry')) {\n          percent = val / helpers.getValue(entry);\n          addPercent('entry');\n        }\n        if (hasFlag('percent root')) {\n          percent = val / helpers.getValue(hierarchy);\n          addPercent('root');\n        }\n      }\n    }\n    if (hasFlag('text')) {\n      tx = Lib.castOption(trace, cdi.i, 'text');\n      if (Lib.isValidTextValue(tx)) thisText.push(tx);\n    }\n    return thisText.join('<br>');\n  }\n  var txt = Lib.castOption(trace, cdi.i, 'texttemplate');\n  if (!txt) return '';\n  var obj = {};\n  if (cdi.label) obj.label = cdi.label;\n  if (cdi.hasOwnProperty('v')) {\n    obj.value = cdi.v;\n    obj.valueLabel = helpers.formatValue(cdi.v, separators);\n  }\n  obj.currentPath = helpers.getPath(pt.data);\n  if (!isRoot) {\n    obj.percentParent = val / helpers.getValue(parent);\n    obj.percentParentLabel = helpers.formatPercent(obj.percentParent, separators);\n    obj.parent = helpers.getPtLabel(parent);\n  }\n  obj.percentEntry = val / helpers.getValue(entry);\n  obj.percentEntryLabel = helpers.formatPercent(obj.percentEntry, separators);\n  obj.entry = helpers.getPtLabel(entry);\n  obj.percentRoot = val / helpers.getValue(hierarchy);\n  obj.percentRootLabel = helpers.formatPercent(obj.percentRoot, separators);\n  obj.root = helpers.getPtLabel(hierarchy);\n  if (cdi.hasOwnProperty('color')) {\n    obj.color = cdi.color;\n  }\n  var ptTx = Lib.castOption(trace, cdi.i, 'text');\n  if (Lib.isValidTextValue(ptTx) || ptTx === '') obj.text = ptTx;\n  obj.customdata = Lib.castOption(trace, cdi.i, 'customdata');\n  return Lib.texttemplateString(txt, obj, fullLayout._d3locale, obj, trace._meta || {});\n};\nfunction getInscribedRadiusFraction(pt) {\n  if (pt.rpx0 === 0 && Lib.isFullCircle([pt.x0, pt.x1])) {\n    // special case of 100% with no hole\n    return 1;\n  } else {\n    return Math.max(0, Math.min(1 / (1 + 1 / Math.sin(pt.halfangle)), pt.ring / 2));\n  }\n}\nfunction getTextXY(d) {\n  return getCoords(d.rpx1, d.transform.textPosAngle);\n}\nfunction getCoords(r, angle) {\n  return [r * Math.sin(angle), -r * Math.cos(angle)];\n}\n\n/***/ }),\n\n/***/ 29969:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3441611__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_3441611__(39898);\nvar Color = __nested_webpack_require_3441611__(7901);\nvar Lib = __nested_webpack_require_3441611__(71828);\nvar resizeText = (__nested_webpack_require_3441611__(72597).resizeText);\nfunction style(gd) {\n  var s = gd._fullLayout._sunburstlayer.selectAll('.trace');\n  resizeText(gd, s, 'sunburst');\n  s.each(function (cd) {\n    var gTrace = d3.select(this);\n    var cd0 = cd[0];\n    var trace = cd0.trace;\n    gTrace.style('opacity', trace.opacity);\n    gTrace.selectAll('path.surface').each(function (pt) {\n      d3.select(this).call(styleOne, pt, trace);\n    });\n  });\n}\nfunction styleOne(s, pt, trace) {\n  var cdi = pt.data.data;\n  var isLeaf = !pt.children;\n  var ptNumber = cdi.i;\n  var lineColor = Lib.castOption(trace, ptNumber, 'marker.line.color') || Color.defaultLine;\n  var lineWidth = Lib.castOption(trace, ptNumber, 'marker.line.width') || 0;\n  s.style('stroke-width', lineWidth).call(Color.fill, cdi.color).call(Color.stroke, lineColor).style('opacity', isLeaf ? trace.leaf.opacity : null);\n}\nmodule.exports = {\n  style: style,\n  styleOne: styleOne\n};\n\n/***/ }),\n\n/***/ 54532:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3442780__) {\n\n\"use strict\";\n\n\nvar Color = __nested_webpack_require_3442780__(7901);\nvar colorScaleAttrs = __nested_webpack_require_3442780__(50693);\nvar axisHoverFormat = (__nested_webpack_require_3442780__(12663).axisHoverFormat);\nvar hovertemplateAttrs = (__nested_webpack_require_3442780__(5386)/* .hovertemplateAttrs */ .f);\nvar baseAttrs = __nested_webpack_require_3442780__(9012);\nvar extendFlat = (__nested_webpack_require_3442780__(1426).extendFlat);\nvar overrideAll = (__nested_webpack_require_3442780__(30962).overrideAll);\nfunction makeContourProjAttr(axLetter) {\n  return {\n    valType: 'boolean',\n    dflt: false\n  };\n}\nfunction makeContourAttr(axLetter) {\n  return {\n    show: {\n      valType: 'boolean',\n      dflt: false\n    },\n    start: {\n      valType: 'number',\n      dflt: null,\n      editType: 'plot'\n      // impliedEdits: {'^autocontour': false},\n    },\n\n    end: {\n      valType: 'number',\n      dflt: null,\n      editType: 'plot'\n      // impliedEdits: {'^autocontour': false},\n    },\n\n    size: {\n      valType: 'number',\n      dflt: null,\n      min: 0,\n      editType: 'plot'\n      // impliedEdits: {'^autocontour': false},\n    },\n\n    project: {\n      x: makeContourProjAttr('x'),\n      y: makeContourProjAttr('y'),\n      z: makeContourProjAttr('z')\n    },\n    color: {\n      valType: 'color',\n      dflt: Color.defaultLine\n    },\n    usecolormap: {\n      valType: 'boolean',\n      dflt: false\n    },\n    width: {\n      valType: 'number',\n      min: 1,\n      max: 16,\n      dflt: 2\n    },\n    highlight: {\n      valType: 'boolean',\n      dflt: true\n    },\n    highlightcolor: {\n      valType: 'color',\n      dflt: Color.defaultLine\n    },\n    highlightwidth: {\n      valType: 'number',\n      min: 1,\n      max: 16,\n      dflt: 2\n    }\n  };\n}\nvar attrs = module.exports = overrideAll(extendFlat({\n  z: {\n    valType: 'data_array'\n  },\n  x: {\n    valType: 'data_array'\n  },\n  y: {\n    valType: 'data_array'\n  },\n  text: {\n    valType: 'string',\n    dflt: '',\n    arrayOk: true\n  },\n  hovertext: {\n    valType: 'string',\n    dflt: '',\n    arrayOk: true\n  },\n  hovertemplate: hovertemplateAttrs(),\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  zhoverformat: axisHoverFormat('z'),\n  connectgaps: {\n    valType: 'boolean',\n    dflt: false,\n    editType: 'calc'\n  },\n  surfacecolor: {\n    valType: 'data_array'\n  }\n}, colorScaleAttrs('', {\n  colorAttr: 'z or surfacecolor',\n  showScaleDflt: true,\n  autoColorDflt: false,\n  editTypeOverride: 'calc'\n}), {\n  contours: {\n    x: makeContourAttr('x'),\n    y: makeContourAttr('y'),\n    z: makeContourAttr('z')\n  },\n  hidesurface: {\n    valType: 'boolean',\n    dflt: false\n  },\n  lightposition: {\n    x: {\n      valType: 'number',\n      min: -1e5,\n      max: 1e5,\n      dflt: 10\n    },\n    y: {\n      valType: 'number',\n      min: -1e5,\n      max: 1e5,\n      dflt: 1e4\n    },\n    z: {\n      valType: 'number',\n      min: -1e5,\n      max: 1e5,\n      dflt: 0\n    }\n  },\n  lighting: {\n    ambient: {\n      valType: 'number',\n      min: 0.00,\n      max: 1.0,\n      dflt: 0.8\n    },\n    diffuse: {\n      valType: 'number',\n      min: 0.00,\n      max: 1.00,\n      dflt: 0.8\n    },\n    specular: {\n      valType: 'number',\n      min: 0.00,\n      max: 2.00,\n      dflt: 0.05\n    },\n    roughness: {\n      valType: 'number',\n      min: 0.00,\n      max: 1.00,\n      dflt: 0.5\n    },\n    fresnel: {\n      valType: 'number',\n      min: 0.00,\n      max: 5.00,\n      dflt: 0.2\n    }\n  },\n  opacity: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 1\n  },\n  opacityscale: {\n    valType: 'any',\n    editType: 'calc'\n  },\n  _deprecated: {\n    zauto: extendFlat({}, colorScaleAttrs.zauto, {}),\n    zmin: extendFlat({}, colorScaleAttrs.zmin, {}),\n    zmax: extendFlat({}, colorScaleAttrs.zmax, {})\n  },\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo),\n  showlegend: extendFlat({}, baseAttrs.showlegend, {\n    dflt: false\n  })\n}), 'calc', 'nested');\nattrs.x.editType = attrs.y.editType = attrs.z.editType = 'calc+clearAxisTypes';\nattrs.transforms = undefined;\n\n/***/ }),\n\n/***/ 18396:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3446808__) {\n\n\"use strict\";\n\n\nvar colorscaleCalc = __nested_webpack_require_3446808__(78803);\n\n// Compute auto-z and autocolorscale if applicable\nmodule.exports = function calc(gd, trace) {\n  if (trace.surfacecolor) {\n    colorscaleCalc(gd, trace, {\n      vals: trace.surfacecolor,\n      containerStr: '',\n      cLetter: 'c'\n    });\n  } else {\n    colorscaleCalc(gd, trace, {\n      vals: trace.z,\n      containerStr: '',\n      cLetter: 'c'\n    });\n  }\n};\n\n/***/ }),\n\n/***/ 43768:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3447333__) {\n\n\"use strict\";\n\n\nvar createSurface = (__nested_webpack_require_3447333__(9330).gl_surface3d);\nvar ndarray = (__nested_webpack_require_3447333__(9330).ndarray);\nvar ndarrayInterp2d = (__nested_webpack_require_3447333__(9330).ndarray_linear_interpolate.d2);\nvar interp2d = __nested_webpack_require_3447333__(824);\nvar findEmpties = __nested_webpack_require_3447333__(43907);\nvar isArrayOrTypedArray = (__nested_webpack_require_3447333__(71828).isArrayOrTypedArray);\nvar parseColorScale = (__nested_webpack_require_3447333__(81697).parseColorScale);\nvar str2RgbaArray = __nested_webpack_require_3447333__(78614);\nvar extractOpts = (__nested_webpack_require_3447333__(21081).extractOpts);\nfunction SurfaceTrace(scene, surface, uid) {\n  this.scene = scene;\n  this.uid = uid;\n  this.surface = surface;\n  this.data = null;\n  this.showContour = [false, false, false];\n  this.contourStart = [null, null, null];\n  this.contourEnd = [null, null, null];\n  this.contourSize = [0, 0, 0];\n  this.minValues = [Infinity, Infinity, Infinity];\n  this.maxValues = [-Infinity, -Infinity, -Infinity];\n  this.dataScaleX = 1.0;\n  this.dataScaleY = 1.0;\n  this.refineData = true;\n  this.objectOffset = [0, 0, 0];\n}\nvar proto = SurfaceTrace.prototype;\nproto.getXat = function (a, b, calendar, axis) {\n  var v = !isArrayOrTypedArray(this.data.x) ? a : isArrayOrTypedArray(this.data.x[0]) ? this.data.x[b][a] : this.data.x[a];\n  return calendar === undefined ? v : axis.d2l(v, 0, calendar);\n};\nproto.getYat = function (a, b, calendar, axis) {\n  var v = !isArrayOrTypedArray(this.data.y) ? b : isArrayOrTypedArray(this.data.y[0]) ? this.data.y[b][a] : this.data.y[b];\n  return calendar === undefined ? v : axis.d2l(v, 0, calendar);\n};\nproto.getZat = function (a, b, calendar, axis) {\n  var v = this.data.z[b][a];\n  if (v === null && this.data.connectgaps && this.data._interpolatedZ) {\n    v = this.data._interpolatedZ[b][a];\n  }\n  return calendar === undefined ? v : axis.d2l(v, 0, calendar);\n};\nproto.handlePick = function (selection) {\n  if (selection.object === this.surface) {\n    var xRatio = (selection.data.index[0] - 1) / this.dataScaleX - 1;\n    var yRatio = (selection.data.index[1] - 1) / this.dataScaleY - 1;\n    var j = Math.max(Math.min(Math.round(xRatio), this.data.z[0].length - 1), 0);\n    var k = Math.max(Math.min(Math.round(yRatio), this.data._ylength - 1), 0);\n    selection.index = [j, k];\n    selection.traceCoordinate = [this.getXat(j, k), this.getYat(j, k), this.getZat(j, k)];\n    selection.dataCoordinate = [this.getXat(j, k, this.data.xcalendar, this.scene.fullSceneLayout.xaxis), this.getYat(j, k, this.data.ycalendar, this.scene.fullSceneLayout.yaxis), this.getZat(j, k, this.data.zcalendar, this.scene.fullSceneLayout.zaxis)];\n    for (var i = 0; i < 3; i++) {\n      var v = selection.dataCoordinate[i];\n      if (v !== null && v !== undefined) {\n        selection.dataCoordinate[i] *= this.scene.dataScale[i];\n      }\n    }\n    var text = this.data.hovertext || this.data.text;\n    if (Array.isArray(text) && text[k] && text[k][j] !== undefined) {\n      selection.textLabel = text[k][j];\n    } else if (text) {\n      selection.textLabel = text;\n    } else {\n      selection.textLabel = '';\n    }\n    selection.data.dataCoordinate = selection.dataCoordinate.slice();\n    this.surface.highlight(selection.data);\n\n    // Snap spikes to data coordinate\n    this.scene.glplot.spikes.position = selection.dataCoordinate;\n    return true;\n  }\n};\nfunction isColormapCircular(colormap) {\n  var first = colormap[0].rgb;\n  var last = colormap[colormap.length - 1].rgb;\n  return first[0] === last[0] && first[1] === last[1] && first[2] === last[2] && first[3] === last[3];\n}\nvar shortPrimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, 1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129, 2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, 2293, 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, 2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, 2423, 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, 2621, 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, 2689, 2693, 2699, 2707, 2711, 2713, 2719, 2729, 2731, 2741, 2749, 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903, 2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999];\nfunction getPow(a, b) {\n  if (a < b) return 0;\n  var n = 0;\n  while (Math.floor(a % b) === 0) {\n    a /= b;\n    n++;\n  }\n  return n;\n}\nfunction getFactors(a) {\n  var powers = [];\n  for (var i = 0; i < shortPrimes.length; i++) {\n    var b = shortPrimes[i];\n    powers.push(getPow(a, b));\n  }\n  return powers;\n}\nfunction smallestDivisor(a) {\n  var A = getFactors(a);\n  var result = a;\n  for (var i = 0; i < shortPrimes.length; i++) {\n    if (A[i] > 0) {\n      result = shortPrimes[i];\n      break;\n    }\n  }\n  return result;\n}\nfunction leastCommonMultiple(a, b) {\n  if (a < 1 || b < 1) return undefined;\n  var A = getFactors(a);\n  var B = getFactors(b);\n  var n = 1;\n  for (var i = 0; i < shortPrimes.length; i++) {\n    n *= Math.pow(shortPrimes[i], Math.max(A[i], B[i]));\n  }\n  return n;\n}\nfunction arrayLCM(A) {\n  if (A.length === 0) return undefined;\n  var n = 1;\n  for (var i = 0; i < A.length; i++) {\n    n = leastCommonMultiple(n, A[i]);\n  }\n  return n;\n}\nproto.calcXnums = function (xlen) {\n  var i;\n  var nums = [];\n  for (i = 1; i < xlen; i++) {\n    var a = this.getXat(i - 1, 0);\n    var b = this.getXat(i, 0);\n    if (b !== a && a !== undefined && a !== null && b !== undefined && b !== null) {\n      nums[i - 1] = Math.abs(b - a);\n    } else {\n      nums[i - 1] = 0;\n    }\n  }\n  var totalDist = 0;\n  for (i = 1; i < xlen; i++) {\n    totalDist += nums[i - 1];\n  }\n  for (i = 1; i < xlen; i++) {\n    if (nums[i - 1] === 0) {\n      nums[i - 1] = 1;\n    } else {\n      nums[i - 1] = Math.round(totalDist / nums[i - 1]);\n    }\n  }\n  return nums;\n};\nproto.calcYnums = function (ylen) {\n  var i;\n  var nums = [];\n  for (i = 1; i < ylen; i++) {\n    var a = this.getYat(0, i - 1);\n    var b = this.getYat(0, i);\n    if (b !== a && a !== undefined && a !== null && b !== undefined && b !== null) {\n      nums[i - 1] = Math.abs(b - a);\n    } else {\n      nums[i - 1] = 0;\n    }\n  }\n  var totalDist = 0;\n  for (i = 1; i < ylen; i++) {\n    totalDist += nums[i - 1];\n  }\n  for (i = 1; i < ylen; i++) {\n    if (nums[i - 1] === 0) {\n      nums[i - 1] = 1;\n    } else {\n      nums[i - 1] = Math.round(totalDist / nums[i - 1]);\n    }\n  }\n  return nums;\n};\nvar highlyComposites = [1, 2, 4, 6, 12, 24, 36, 48, 60, 120, 180, 240, 360, 720, 840, 1260];\nvar MIN_RESOLUTION = highlyComposites[9];\nvar MAX_RESOLUTION = highlyComposites[13];\nproto.estimateScale = function (resSrc, axis) {\n  var nums = axis === 0 ? this.calcXnums(resSrc) : this.calcYnums(resSrc);\n  var resDst = 1 + arrayLCM(nums);\n  while (resDst < MIN_RESOLUTION) {\n    resDst *= 2;\n  }\n  while (resDst > MAX_RESOLUTION) {\n    resDst--;\n    resDst /= smallestDivisor(resDst);\n    resDst++;\n    if (resDst < MIN_RESOLUTION) {\n      // resDst = MIN_RESOLUTION; // option 1: use min resolution\n      resDst = MAX_RESOLUTION; // option 2: use max resolution\n    }\n  }\n\n  var scale = Math.round(resDst / resSrc);\n  return scale > 1 ? scale : 1;\n};\n\n// based on Mikola Lysenko's ndarray-homography\n// see https://github.com/scijs/ndarray-homography\n\nfunction fnHomography(out, inp, X) {\n  var w = X[8] + X[2] * inp[0] + X[5] * inp[1];\n  out[0] = (X[6] + X[0] * inp[0] + X[3] * inp[1]) / w;\n  out[1] = (X[7] + X[1] * inp[0] + X[4] * inp[1]) / w;\n  return out;\n}\nfunction homography(dest, src, X) {\n  warp(dest, src, fnHomography, X);\n  return dest;\n}\n\n// based on Mikola Lysenko's ndarray-warp\n// see https://github.com/scijs/ndarray-warp\n\nfunction warp(dest, src, func, X) {\n  var warped = [0, 0];\n  var ni = dest.shape[0];\n  var nj = dest.shape[1];\n  for (var i = 0; i < ni; i++) {\n    for (var j = 0; j < nj; j++) {\n      func(warped, [i, j], X);\n      dest.set(i, j, ndarrayInterp2d(src, warped[0], warped[1]));\n    }\n  }\n  return dest;\n}\nproto.refineCoords = function (coords) {\n  var scaleW = this.dataScaleX;\n  var scaleH = this.dataScaleY;\n  var width = coords[0].shape[0];\n  var height = coords[0].shape[1];\n  var newWidth = Math.floor(coords[0].shape[0] * scaleW + 1) | 0;\n  var newHeight = Math.floor(coords[0].shape[1] * scaleH + 1) | 0;\n\n  // Pad coords by +1\n  var padWidth = 1 + width + 1;\n  var padHeight = 1 + height + 1;\n  var padImg = ndarray(new Float32Array(padWidth * padHeight), [padWidth, padHeight]);\n  var X = [1 / scaleW, 0, 0, 0, 1 / scaleH, 0, 0, 0, 1];\n  for (var i = 0; i < coords.length; ++i) {\n    this.surface.padField(padImg, coords[i]);\n    var scaledImg = ndarray(new Float32Array(newWidth * newHeight), [newWidth, newHeight]);\n    homography(scaledImg, padImg, X);\n    coords[i] = scaledImg;\n  }\n};\nfunction insertIfNewLevel(arr, newValue) {\n  var found = false;\n  for (var k = 0; k < arr.length; k++) {\n    if (newValue === arr[k]) {\n      found = true;\n      break;\n    }\n  }\n  if (found === false) arr.push(newValue);\n}\nproto.setContourLevels = function () {\n  var newLevels = [[], [], []];\n  var useNewLevels = [false, false, false];\n  var needsUpdate = false;\n  var i, j, value;\n  for (i = 0; i < 3; ++i) {\n    if (this.showContour[i]) {\n      needsUpdate = true;\n      if (this.contourSize[i] > 0 && this.contourStart[i] !== null && this.contourEnd[i] !== null && this.contourEnd[i] > this.contourStart[i]) {\n        useNewLevels[i] = true;\n        for (j = this.contourStart[i]; j < this.contourEnd[i]; j += this.contourSize[i]) {\n          value = j * this.scene.dataScale[i];\n          insertIfNewLevel(newLevels[i], value);\n        }\n      }\n    }\n  }\n  if (needsUpdate) {\n    var allLevels = [[], [], []];\n    for (i = 0; i < 3; ++i) {\n      if (this.showContour[i]) {\n        allLevels[i] = useNewLevels[i] ? newLevels[i] : this.scene.contourLevels[i];\n      }\n    }\n    this.surface.update({\n      levels: allLevels\n    });\n  }\n};\nproto.update = function (data) {\n  var scene = this.scene;\n  var sceneLayout = scene.fullSceneLayout;\n  var surface = this.surface;\n  var colormap = parseColorScale(data);\n  var scaleFactor = scene.dataScale;\n  var xlen = data.z[0].length;\n  var ylen = data._ylength;\n  var contourLevels = scene.contourLevels;\n\n  // Save data\n  this.data = data;\n\n  /*\n   * Fill and transpose zdata.\n   * Consistent with 'heatmap' and 'contour', plotly 'surface'\n   * 'z' are such that sub-arrays correspond to y-coords\n   * and that the sub-array entries correspond to a x-coords,\n   * which is the transpose of 'gl-surface-plot'.\n   */\n\n  var i, j, k, v;\n  var rawCoords = [];\n  for (i = 0; i < 3; i++) {\n    rawCoords[i] = [];\n    for (j = 0; j < xlen; j++) {\n      rawCoords[i][j] = [];\n      /*\n      for(k = 0; k < ylen; k++) {\n          rawCoords[i][j][k] = undefined;\n      }\n      */\n    }\n  }\n\n  // coords x, y & z\n  for (j = 0; j < xlen; j++) {\n    for (k = 0; k < ylen; k++) {\n      rawCoords[0][j][k] = this.getXat(j, k, data.xcalendar, sceneLayout.xaxis);\n      rawCoords[1][j][k] = this.getYat(j, k, data.ycalendar, sceneLayout.yaxis);\n      rawCoords[2][j][k] = this.getZat(j, k, data.zcalendar, sceneLayout.zaxis);\n    }\n  }\n  if (data.connectgaps) {\n    data._emptypoints = findEmpties(rawCoords[2]);\n    interp2d(rawCoords[2], data._emptypoints);\n    data._interpolatedZ = [];\n    for (j = 0; j < xlen; j++) {\n      data._interpolatedZ[j] = [];\n      for (k = 0; k < ylen; k++) {\n        data._interpolatedZ[j][k] = rawCoords[2][j][k];\n      }\n    }\n  }\n\n  // Note: log axes are not defined in surfaces yet.\n  // but they could be defined here...\n\n  for (i = 0; i < 3; i++) {\n    for (j = 0; j < xlen; j++) {\n      for (k = 0; k < ylen; k++) {\n        v = rawCoords[i][j][k];\n        if (v === null || v === undefined) {\n          rawCoords[i][j][k] = NaN;\n        } else {\n          v = rawCoords[i][j][k] *= scaleFactor[i];\n        }\n      }\n    }\n  }\n  for (i = 0; i < 3; i++) {\n    for (j = 0; j < xlen; j++) {\n      for (k = 0; k < ylen; k++) {\n        v = rawCoords[i][j][k];\n        if (v !== null && v !== undefined) {\n          if (this.minValues[i] > v) {\n            this.minValues[i] = v;\n          }\n          if (this.maxValues[i] < v) {\n            this.maxValues[i] = v;\n          }\n        }\n      }\n    }\n  }\n  for (i = 0; i < 3; i++) {\n    this.objectOffset[i] = 0.5 * (this.minValues[i] + this.maxValues[i]);\n  }\n  for (i = 0; i < 3; i++) {\n    for (j = 0; j < xlen; j++) {\n      for (k = 0; k < ylen; k++) {\n        v = rawCoords[i][j][k];\n        if (v !== null && v !== undefined) {\n          rawCoords[i][j][k] -= this.objectOffset[i];\n        }\n      }\n    }\n  }\n\n  // convert processed raw data to Float32 matrices\n  var coords = [ndarray(new Float32Array(xlen * ylen), [xlen, ylen]), ndarray(new Float32Array(xlen * ylen), [xlen, ylen]), ndarray(new Float32Array(xlen * ylen), [xlen, ylen])];\n  for (i = 0; i < 3; i++) {\n    for (j = 0; j < xlen; j++) {\n      for (k = 0; k < ylen; k++) {\n        coords[i].set(j, k, rawCoords[i][j][k]);\n      }\n    }\n  }\n  rawCoords = []; // free memory\n\n  var params = {\n    colormap: colormap,\n    levels: [[], [], []],\n    showContour: [true, true, true],\n    showSurface: !data.hidesurface,\n    contourProject: [[false, false, false], [false, false, false], [false, false, false]],\n    contourWidth: [1, 1, 1],\n    contourColor: [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]],\n    contourTint: [1, 1, 1],\n    dynamicColor: [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]],\n    dynamicWidth: [1, 1, 1],\n    dynamicTint: [1, 1, 1],\n    opacityscale: data.opacityscale,\n    opacity: data.opacity\n  };\n  var cOpts = extractOpts(data);\n  params.intensityBounds = [cOpts.min, cOpts.max];\n\n  // Refine surface color if necessary\n  if (data.surfacecolor) {\n    var intensity = ndarray(new Float32Array(xlen * ylen), [xlen, ylen]);\n    for (j = 0; j < xlen; j++) {\n      for (k = 0; k < ylen; k++) {\n        intensity.set(j, k, data.surfacecolor[k][j]);\n      }\n    }\n    coords.push(intensity);\n  } else {\n    // when 'z' is used as 'intensity',\n    // we must scale its value\n    params.intensityBounds[0] *= scaleFactor[2];\n    params.intensityBounds[1] *= scaleFactor[2];\n  }\n  if (MAX_RESOLUTION < coords[0].shape[0] || MAX_RESOLUTION < coords[0].shape[1]) {\n    this.refineData = false;\n  }\n  if (this.refineData === true) {\n    this.dataScaleX = this.estimateScale(coords[0].shape[0], 0);\n    this.dataScaleY = this.estimateScale(coords[0].shape[1], 1);\n    if (this.dataScaleX !== 1 || this.dataScaleY !== 1) {\n      this.refineCoords(coords);\n    }\n  }\n  if (data.surfacecolor) {\n    params.intensity = coords.pop();\n  }\n  var highlightEnable = [true, true, true];\n  var axis = ['x', 'y', 'z'];\n  for (i = 0; i < 3; ++i) {\n    var contourParams = data.contours[axis[i]];\n    highlightEnable[i] = contourParams.highlight;\n    params.showContour[i] = contourParams.show || contourParams.highlight;\n    if (!params.showContour[i]) continue;\n    params.contourProject[i] = [contourParams.project.x, contourParams.project.y, contourParams.project.z];\n    if (contourParams.show) {\n      this.showContour[i] = true;\n      params.levels[i] = contourLevels[i];\n      surface.highlightColor[i] = params.contourColor[i] = str2RgbaArray(contourParams.color);\n      if (contourParams.usecolormap) {\n        surface.highlightTint[i] = params.contourTint[i] = 0;\n      } else {\n        surface.highlightTint[i] = params.contourTint[i] = 1;\n      }\n      params.contourWidth[i] = contourParams.width;\n      this.contourStart[i] = contourParams.start;\n      this.contourEnd[i] = contourParams.end;\n      this.contourSize[i] = contourParams.size;\n    } else {\n      this.showContour[i] = false;\n      this.contourStart[i] = null;\n      this.contourEnd[i] = null;\n      this.contourSize[i] = 0;\n    }\n    if (contourParams.highlight) {\n      params.dynamicColor[i] = str2RgbaArray(contourParams.highlightcolor);\n      params.dynamicWidth[i] = contourParams.highlightwidth;\n    }\n  }\n\n  // see https://github.com/plotly/plotly.js/issues/940\n  if (isColormapCircular(colormap)) {\n    params.vertexColor = true;\n  }\n  params.objectOffset = this.objectOffset;\n  params.coords = coords;\n  surface.update(params);\n  surface.visible = data.visible;\n  surface.enableDynamic = highlightEnable;\n  surface.enableHighlight = highlightEnable;\n  surface.snapToData = true;\n  if ('lighting' in data) {\n    surface.ambientLight = data.lighting.ambient;\n    surface.diffuseLight = data.lighting.diffuse;\n    surface.specularLight = data.lighting.specular;\n    surface.roughness = data.lighting.roughness;\n    surface.fresnel = data.lighting.fresnel;\n  }\n  if ('lightposition' in data) {\n    surface.lightPosition = [data.lightposition.x, data.lightposition.y, data.lightposition.z];\n  }\n};\nproto.dispose = function () {\n  this.scene.glplot.remove(this.surface);\n  this.surface.dispose();\n};\nfunction createSurfaceTrace(scene, data) {\n  var gl = scene.glplot.gl;\n  var surface = createSurface({\n    gl: gl\n  });\n  var result = new SurfaceTrace(scene, surface, data.uid);\n  surface._trace = result;\n  result.update(data);\n  scene.glplot.add(surface);\n  return result;\n}\nmodule.exports = createSurfaceTrace;\n\n/***/ }),\n\n/***/ 91831:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3466224__) {\n\n\"use strict\";\n\n\nvar Registry = __nested_webpack_require_3466224__(73972);\nvar Lib = __nested_webpack_require_3466224__(71828);\nvar colorscaleDefaults = __nested_webpack_require_3466224__(1586);\nvar attributes = __nested_webpack_require_3466224__(54532);\nvar MIN = 0.1; // Note: often we don't want the data cube to be disappeared\n\nfunction createWave(n, minOpacity) {\n  var arr = [];\n  var steps = 32; // Max: 256\n  for (var i = 0; i < steps; i++) {\n    var u = i / (steps - 1);\n    var v = minOpacity + (1 - minOpacity) * (1 - Math.pow(Math.sin(n * u * Math.PI), 2));\n    arr.push([u, Math.max(0, Math.min(1, v))]);\n  }\n  return arr;\n}\nfunction isValidScaleArray(scl) {\n  var highestVal = 0;\n  if (!Array.isArray(scl) || scl.length < 2) return false;\n  if (!scl[0] || !scl[scl.length - 1]) return false;\n  if (+scl[0][0] !== 0 || +scl[scl.length - 1][0] !== 1) return false;\n  for (var i = 0; i < scl.length; i++) {\n    var si = scl[i];\n    if (si.length !== 2 || +si[0] < highestVal) {\n      return false;\n    }\n    highestVal = +si[0];\n  }\n  return true;\n}\nfunction supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  var i, j;\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var x = coerce('x');\n  var y = coerce('y');\n  var z = coerce('z');\n  if (!z || !z.length || (x ? x.length < 1 : false) || (y ? y.length < 1 : false)) {\n    traceOut.visible = false;\n    return;\n  }\n  traceOut._xlength = Array.isArray(x) && Lib.isArrayOrTypedArray(x[0]) ? z.length : z[0].length;\n  traceOut._ylength = z.length;\n  var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults');\n  handleCalendarDefaults(traceIn, traceOut, ['x', 'y', 'z'], layout);\n  coerce('text');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  coerce('zhoverformat');\n\n  // Coerce remaining properties\n  ['lighting.ambient', 'lighting.diffuse', 'lighting.specular', 'lighting.roughness', 'lighting.fresnel', 'lightposition.x', 'lightposition.y', 'lightposition.z', 'hidesurface', 'connectgaps', 'opacity'].forEach(function (x) {\n    coerce(x);\n  });\n  var surfaceColor = coerce('surfacecolor');\n  var dims = ['x', 'y', 'z'];\n  for (i = 0; i < 3; ++i) {\n    var contourDim = 'contours.' + dims[i];\n    var show = coerce(contourDim + '.show');\n    var highlight = coerce(contourDim + '.highlight');\n    if (show || highlight) {\n      for (j = 0; j < 3; ++j) {\n        coerce(contourDim + '.project.' + dims[j]);\n      }\n    }\n    if (show) {\n      coerce(contourDim + '.color');\n      coerce(contourDim + '.width');\n      coerce(contourDim + '.usecolormap');\n    }\n    if (highlight) {\n      coerce(contourDim + '.highlightcolor');\n      coerce(contourDim + '.highlightwidth');\n    }\n    coerce(contourDim + '.start');\n    coerce(contourDim + '.end');\n    coerce(contourDim + '.size');\n  }\n\n  // backward compatibility block\n  if (!surfaceColor) {\n    mapLegacy(traceIn, 'zmin', 'cmin');\n    mapLegacy(traceIn, 'zmax', 'cmax');\n    mapLegacy(traceIn, 'zauto', 'cauto');\n  }\n\n  // TODO if contours.?.usecolormap are false and hidesurface is true\n  // the colorbar shouldn't be shown by default\n\n  colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n    prefix: '',\n    cLetter: 'c'\n  });\n  opacityscaleDefaults(traceIn, traceOut, layout, coerce);\n\n  // disable 1D transforms - currently surface does NOT support column data like heatmap does\n  // you can use mesh3d for this use case, but not surface\n  traceOut._length = null;\n}\nfunction opacityscaleDefaults(traceIn, traceOut, layout, coerce) {\n  var opacityscale = coerce('opacityscale');\n  if (opacityscale === 'max') {\n    traceOut.opacityscale = [[0, MIN], [1, 1]];\n  } else if (opacityscale === 'min') {\n    traceOut.opacityscale = [[0, 1], [1, MIN]];\n  } else if (opacityscale === 'extremes') {\n    traceOut.opacityscale = createWave(1, MIN);\n  } else if (!isValidScaleArray(opacityscale)) {\n    traceOut.opacityscale = undefined;\n  }\n}\nfunction mapLegacy(traceIn, oldAttr, newAttr) {\n  if (oldAttr in traceIn && !(newAttr in traceIn)) {\n    traceIn[newAttr] = traceIn[oldAttr];\n  }\n}\nmodule.exports = {\n  supplyDefaults: supplyDefaults,\n  opacityscaleDefaults: opacityscaleDefaults\n};\n\n/***/ }),\n\n/***/ 93601:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3470523__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_3470523__(54532),\n  supplyDefaults: (__nested_webpack_require_3470523__(91831).supplyDefaults),\n  colorbar: {\n    min: 'cmin',\n    max: 'cmax'\n  },\n  calc: __nested_webpack_require_3470523__(18396),\n  plot: __nested_webpack_require_3470523__(43768),\n  moduleType: 'trace',\n  name: 'surface',\n  basePlotModule: __nested_webpack_require_3470523__(58547),\n  categories: ['gl3d', '2dMap', 'showLegend'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 44464:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3471035__) {\n\n\"use strict\";\n\n\nvar annAttrs = __nested_webpack_require_3471035__(50215);\nvar extendFlat = (__nested_webpack_require_3471035__(1426).extendFlat);\nvar overrideAll = (__nested_webpack_require_3471035__(30962).overrideAll);\nvar fontAttrs = __nested_webpack_require_3471035__(41940);\nvar domainAttrs = (__nested_webpack_require_3471035__(27670)/* .attributes */ .Y);\nvar descriptionOnlyNumbers = (__nested_webpack_require_3471035__(12663).descriptionOnlyNumbers);\nvar attrs = module.exports = overrideAll({\n  domain: domainAttrs({\n    name: 'table',\n    trace: true\n  }),\n  columnwidth: {\n    valType: 'number',\n    arrayOk: true,\n    dflt: null\n  },\n  columnorder: {\n    valType: 'data_array'\n  },\n  header: {\n    values: {\n      valType: 'data_array',\n      dflt: []\n    },\n    format: {\n      valType: 'data_array',\n      dflt: [],\n      description: descriptionOnlyNumbers('cell value')\n    },\n    prefix: {\n      valType: 'string',\n      arrayOk: true,\n      dflt: null\n    },\n    suffix: {\n      valType: 'string',\n      arrayOk: true,\n      dflt: null\n    },\n    height: {\n      valType: 'number',\n      dflt: 28\n    },\n    align: extendFlat({}, annAttrs.align, {\n      arrayOk: true\n    }),\n    line: {\n      width: {\n        valType: 'number',\n        arrayOk: true,\n        dflt: 1\n      },\n      color: {\n        valType: 'color',\n        arrayOk: true,\n        dflt: 'grey'\n      }\n    },\n    fill: {\n      color: {\n        valType: 'color',\n        arrayOk: true,\n        dflt: 'white'\n      }\n    },\n    font: extendFlat({}, fontAttrs({\n      arrayOk: true\n    }))\n  },\n  cells: {\n    values: {\n      valType: 'data_array',\n      dflt: []\n    },\n    format: {\n      valType: 'data_array',\n      dflt: [],\n      description: descriptionOnlyNumbers('cell value')\n    },\n    prefix: {\n      valType: 'string',\n      arrayOk: true,\n      dflt: null\n    },\n    suffix: {\n      valType: 'string',\n      arrayOk: true,\n      dflt: null\n    },\n    height: {\n      valType: 'number',\n      dflt: 20\n    },\n    align: extendFlat({}, annAttrs.align, {\n      arrayOk: true\n    }),\n    line: {\n      width: {\n        valType: 'number',\n        arrayOk: true,\n        dflt: 1\n      },\n      color: {\n        valType: 'color',\n        arrayOk: true,\n        dflt: 'grey'\n      }\n    },\n    fill: {\n      color: {\n        valType: 'color',\n        arrayOk: true,\n        dflt: 'white'\n      }\n    },\n    font: extendFlat({}, fontAttrs({\n      arrayOk: true\n    }))\n  }\n}, 'calc', 'from-root');\nattrs.transforms = undefined;\n\n/***/ }),\n\n/***/ 99469:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_3473562__) {\n\n\"use strict\";\n\n\nvar getModuleCalcData = (__nested_webpack_require_3473562__(27659)/* .getModuleCalcData */ .a0);\nvar tablePlot = __nested_webpack_require_3473562__(36736);\nvar TABLE = 'table';\nexports.name = TABLE;\nexports.plot = function (gd) {\n  var calcData = getModuleCalcData(gd.calcdata, TABLE)[0];\n  if (calcData.length) tablePlot(gd, calcData);\n};\nexports.clean = function (newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  var hadTable = oldFullLayout._has && oldFullLayout._has(TABLE);\n  var hasTable = newFullLayout._has && newFullLayout._has(TABLE);\n  if (hadTable && !hasTable) {\n    oldFullLayout._paperdiv.selectAll('.table').remove();\n  }\n};\n\n/***/ }),\n\n/***/ 76333:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3474299__) {\n\n\"use strict\";\n\n\nvar wrap = (__nested_webpack_require_3474299__(28984).wrap);\nmodule.exports = function calc() {\n  // we don't actually need to include the trace here, since that will be added\n  // by Plots.doCalcdata, and that's all we actually need later.\n  return wrap({});\n};\n\n/***/ }),\n\n/***/ 49850:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  cellPad: 8,\n  columnExtentOffset: 10,\n  columnTitleOffset: 28,\n  emptyHeaderHeight: 16,\n  latexCheck: /^\\$.*\\$$/,\n  goldenRatio: 1.618,\n  lineBreaker: '<br>',\n  maxDimensionCount: 60,\n  overdrag: 45,\n  releaseTransitionDuration: 120,\n  releaseTransitionEase: 'cubic-out',\n  scrollbarCaptureWidth: 18,\n  scrollbarHideDelay: 1000,\n  scrollbarHideDuration: 1000,\n  scrollbarOffset: 5,\n  scrollbarWidth: 8,\n  transitionDuration: 100,\n  transitionEase: 'cubic-out',\n  uplift: 5,\n  wrapSpacer: ' ',\n  wrapSplitCharacter: ' ',\n  cn: {\n    // general class names\n    table: 'table',\n    tableControlView: 'table-control-view',\n    scrollBackground: 'scroll-background',\n    yColumn: 'y-column',\n    columnBlock: 'column-block',\n    scrollAreaClip: 'scroll-area-clip',\n    scrollAreaClipRect: 'scroll-area-clip-rect',\n    columnBoundary: 'column-boundary',\n    columnBoundaryClippath: 'column-boundary-clippath',\n    columnBoundaryRect: 'column-boundary-rect',\n    columnCells: 'column-cells',\n    columnCell: 'column-cell',\n    cellRect: 'cell-rect',\n    cellText: 'cell-text',\n    cellTextHolder: 'cell-text-holder',\n    // scroll related class names\n    scrollbarKit: 'scrollbar-kit',\n    scrollbar: 'scrollbar',\n    scrollbarSlider: 'scrollbar-slider',\n    scrollbarGlyph: 'scrollbar-glyph',\n    scrollbarCaptureZone: 'scrollbar-capture-zone'\n  }\n};\n\n/***/ }),\n\n/***/ 51018:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3476096__) {\n\n\"use strict\";\n\n\nvar c = __nested_webpack_require_3476096__(49850);\nvar extendFlat = (__nested_webpack_require_3476096__(1426).extendFlat);\nvar isNumeric = __nested_webpack_require_3476096__(92770);\n\n// pure functions, don't alter but passes on `gd` and parts of `trace` without deep copying\nmodule.exports = function calc(gd, trace) {\n  var cellsValues = squareStringMatrix(trace.cells.values);\n  var slicer = function (a) {\n    return a.slice(trace.header.values.length, a.length);\n  };\n  var headerValuesIn = squareStringMatrix(trace.header.values);\n  if (headerValuesIn.length && !headerValuesIn[0].length) {\n    headerValuesIn[0] = [''];\n    headerValuesIn = squareStringMatrix(headerValuesIn);\n  }\n  var headerValues = headerValuesIn.concat(slicer(cellsValues).map(function () {\n    return emptyStrings((headerValuesIn[0] || ['']).length);\n  }));\n  var domain = trace.domain;\n  var groupWidth = Math.floor(gd._fullLayout._size.w * (domain.x[1] - domain.x[0]));\n  var groupHeight = Math.floor(gd._fullLayout._size.h * (domain.y[1] - domain.y[0]));\n  var headerRowHeights = trace.header.values.length ? headerValues[0].map(function () {\n    return trace.header.height;\n  }) : [c.emptyHeaderHeight];\n  var rowHeights = cellsValues.length ? cellsValues[0].map(function () {\n    return trace.cells.height;\n  }) : [];\n  var headerHeight = headerRowHeights.reduce(sum, 0);\n  var scrollHeight = groupHeight - headerHeight;\n  var minimumFillHeight = scrollHeight + c.uplift;\n  var anchorToRowBlock = makeAnchorToRowBlock(rowHeights, minimumFillHeight);\n  var anchorToHeaderRowBlock = makeAnchorToRowBlock(headerRowHeights, headerHeight);\n  var headerRowBlocks = makeRowBlock(anchorToHeaderRowBlock, []);\n  var rowBlocks = makeRowBlock(anchorToRowBlock, headerRowBlocks);\n  var uniqueKeys = {};\n  var columnOrder = trace._fullInput.columnorder.concat(slicer(cellsValues.map(function (d, i) {\n    return i;\n  })));\n  var columnWidths = headerValues.map(function (d, i) {\n    var value = Array.isArray(trace.columnwidth) ? trace.columnwidth[Math.min(i, trace.columnwidth.length - 1)] : trace.columnwidth;\n    return isNumeric(value) ? Number(value) : 1;\n  });\n  var totalColumnWidths = columnWidths.reduce(sum, 0);\n\n  // fit columns in the available vertical space as there's no vertical scrolling now\n  columnWidths = columnWidths.map(function (d) {\n    return d / totalColumnWidths * groupWidth;\n  });\n  var maxLineWidth = Math.max(arrayMax(trace.header.line.width), arrayMax(trace.cells.line.width));\n  var calcdata = {\n    // include staticPlot in the key so if it changes we delete and redraw\n    key: trace.uid + gd._context.staticPlot,\n    translateX: domain.x[0] * gd._fullLayout._size.w,\n    translateY: gd._fullLayout._size.h * (1 - domain.y[1]),\n    size: gd._fullLayout._size,\n    width: groupWidth,\n    maxLineWidth: maxLineWidth,\n    height: groupHeight,\n    columnOrder: columnOrder,\n    // will be mutated on column move, todo use in callback\n    groupHeight: groupHeight,\n    rowBlocks: rowBlocks,\n    headerRowBlocks: headerRowBlocks,\n    scrollY: 0,\n    // will be mutated on scroll\n    cells: extendFlat({}, trace.cells, {\n      values: cellsValues\n    }),\n    headerCells: extendFlat({}, trace.header, {\n      values: headerValues\n    }),\n    gdColumns: headerValues.map(function (d) {\n      return d[0];\n    }),\n    gdColumnsOriginalOrder: headerValues.map(function (d) {\n      return d[0];\n    }),\n    prevPages: [0, 0],\n    scrollbarState: {\n      scrollbarScrollInProgress: false\n    },\n    columns: headerValues.map(function (label, i) {\n      var foundKey = uniqueKeys[label];\n      uniqueKeys[label] = (foundKey || 0) + 1;\n      var key = label + '__' + uniqueKeys[label];\n      return {\n        key: key,\n        label: label,\n        specIndex: i,\n        xIndex: columnOrder[i],\n        xScale: xScale,\n        x: undefined,\n        // initialized below\n        calcdata: undefined,\n        // initialized below\n        columnWidth: columnWidths[i]\n      };\n    })\n  };\n  calcdata.columns.forEach(function (col) {\n    col.calcdata = calcdata;\n    col.x = xScale(col);\n  });\n  return calcdata;\n};\nfunction arrayMax(maybeArray) {\n  if (Array.isArray(maybeArray)) {\n    var max = 0;\n    for (var i = 0; i < maybeArray.length; i++) {\n      max = Math.max(max, arrayMax(maybeArray[i]));\n    }\n    return max;\n  }\n  return maybeArray;\n}\nfunction sum(a, b) {\n  return a + b;\n}\n\n// fill matrix in place to equal lengths\n// and ensure it's uniformly 2D\nfunction squareStringMatrix(matrixIn) {\n  var matrix = matrixIn.slice();\n  var minLen = Infinity;\n  var maxLen = 0;\n  var i;\n  for (i = 0; i < matrix.length; i++) {\n    if (!Array.isArray(matrix[i])) matrix[i] = [matrix[i]];\n    minLen = Math.min(minLen, matrix[i].length);\n    maxLen = Math.max(maxLen, matrix[i].length);\n  }\n  if (minLen !== maxLen) {\n    for (i = 0; i < matrix.length; i++) {\n      var padLen = maxLen - matrix[i].length;\n      if (padLen) matrix[i] = matrix[i].concat(emptyStrings(padLen));\n    }\n  }\n  return matrix;\n}\nfunction emptyStrings(len) {\n  var padArray = new Array(len);\n  for (var j = 0; j < len; j++) padArray[j] = '';\n  return padArray;\n}\nfunction xScale(d) {\n  return d.calcdata.columns.reduce(function (prev, next) {\n    return next.xIndex < d.xIndex ? prev + next.columnWidth : prev;\n  }, 0);\n}\nfunction makeRowBlock(anchorToRowBlock, auxiliary) {\n  var blockAnchorKeys = Object.keys(anchorToRowBlock);\n  return blockAnchorKeys.map(function (k) {\n    return extendFlat({}, anchorToRowBlock[k], {\n      auxiliaryBlocks: auxiliary\n    });\n  });\n}\nfunction makeAnchorToRowBlock(rowHeights, minimumFillHeight) {\n  var anchorToRowBlock = {};\n  var currentRowHeight;\n  var currentAnchor = 0;\n  var currentBlockHeight = 0;\n  var currentBlock = makeIdentity();\n  var currentFirstRowIndex = 0;\n  var blockCounter = 0;\n  for (var i = 0; i < rowHeights.length; i++) {\n    currentRowHeight = rowHeights[i];\n    currentBlock.rows.push({\n      rowIndex: i,\n      rowHeight: currentRowHeight\n    });\n    currentBlockHeight += currentRowHeight;\n    if (currentBlockHeight >= minimumFillHeight || i === rowHeights.length - 1) {\n      anchorToRowBlock[currentAnchor] = currentBlock;\n      currentBlock.key = blockCounter++;\n      currentBlock.firstRowIndex = currentFirstRowIndex;\n      currentBlock.lastRowIndex = i;\n      currentBlock = makeIdentity();\n      currentAnchor += currentBlockHeight;\n      currentFirstRowIndex = i + 1;\n      currentBlockHeight = 0;\n    }\n  }\n  return anchorToRowBlock;\n}\nfunction makeIdentity() {\n  return {\n    firstRowIndex: null,\n    lastRowIndex: null,\n    rows: []\n  };\n}\n\n/***/ }),\n\n/***/ 56269:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_3482747__) {\n\n\"use strict\";\n\n\nvar extendFlat = (__nested_webpack_require_3482747__(1426).extendFlat);\n\n// pure functions, don't alter but passes on `gd` and parts of `trace` without deep copying\n\nexports.splitToPanels = function (d) {\n  var prevPages = [0, 0];\n  var headerPanel = extendFlat({}, d, {\n    key: 'header',\n    type: 'header',\n    page: 0,\n    prevPages: prevPages,\n    currentRepaint: [null, null],\n    dragHandle: true,\n    values: d.calcdata.headerCells.values[d.specIndex],\n    rowBlocks: d.calcdata.headerRowBlocks,\n    calcdata: extendFlat({}, d.calcdata, {\n      cells: d.calcdata.headerCells\n    })\n  });\n  var revolverPanel1 = extendFlat({}, d, {\n    key: 'cells1',\n    type: 'cells',\n    page: 0,\n    prevPages: prevPages,\n    currentRepaint: [null, null],\n    dragHandle: false,\n    values: d.calcdata.cells.values[d.specIndex],\n    rowBlocks: d.calcdata.rowBlocks\n  });\n  var revolverPanel2 = extendFlat({}, d, {\n    key: 'cells2',\n    type: 'cells',\n    page: 1,\n    prevPages: prevPages,\n    currentRepaint: [null, null],\n    dragHandle: false,\n    values: d.calcdata.cells.values[d.specIndex],\n    rowBlocks: d.calcdata.rowBlocks\n  });\n  // order due to SVG using painter's algo:\n  return [revolverPanel1, revolverPanel2, headerPanel];\n};\nexports.splitToCells = function (d) {\n  var fromTo = rowFromTo(d);\n  return (d.values || []).slice(fromTo[0], fromTo[1]).map(function (v, i) {\n    // By keeping identical key, a DOM node removal, creation and addition is spared, important when visible\n    // grid has a lot of elements (quadratic with xcol/ycol count).\n    // But it has to be busted when `svgUtil.convertToTspans` is used as it reshapes cell subtrees asynchronously,\n    // and by that time the user may have scrolled away, resulting in stale overwrites. The real solution will be\n    // to turn `svgUtil.convertToTspans` into a cancelable request, in which case no key busting is needed.\n    var buster = typeof v === 'string' && v.match(/[<$&> ]/) ? '_keybuster_' + Math.random() : '';\n    return {\n      // keyWithinBlock: /*fromTo[0] + */i, // optimized future version - no busting\n      // keyWithinBlock: fromTo[0] + i, // initial always-unoptimized version - janky scrolling with 5+ columns\n      keyWithinBlock: i + buster,\n      // current compromise: regular content is very fast; async content is possible\n      key: fromTo[0] + i,\n      column: d,\n      calcdata: d.calcdata,\n      page: d.page,\n      rowBlocks: d.rowBlocks,\n      value: v\n    };\n  });\n};\nfunction rowFromTo(d) {\n  var rowBlock = d.rowBlocks[d.page];\n  // fixme rowBlock truthiness check is due to ugly hack of placing 2nd panel as d.page = -1\n  var rowFrom = rowBlock ? rowBlock.rows[0].rowIndex : 0;\n  var rowTo = rowBlock ? rowFrom + rowBlock.rows.length : 0;\n  return [rowFrom, rowTo];\n}\n\n/***/ }),\n\n/***/ 39754:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3485624__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3485624__(71828);\nvar attributes = __nested_webpack_require_3485624__(44464);\nvar handleDomainDefaults = (__nested_webpack_require_3485624__(27670)/* .defaults */ .c);\nfunction defaultColumnOrder(traceOut, coerce) {\n  var specifiedColumnOrder = traceOut.columnorder || [];\n  var commonLength = traceOut.header.values.length;\n  var truncated = specifiedColumnOrder.slice(0, commonLength);\n  var sorted = truncated.slice().sort(function (a, b) {\n    return a - b;\n  });\n  var oneStepped = truncated.map(function (d) {\n    return sorted.indexOf(d);\n  });\n  for (var i = oneStepped.length; i < commonLength; i++) {\n    oneStepped.push(i);\n  }\n  coerce('columnorder', oneStepped);\n}\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  handleDomainDefaults(traceOut, layout, coerce);\n  coerce('columnwidth');\n  coerce('header.values');\n  coerce('header.format');\n  coerce('header.align');\n  coerce('header.prefix');\n  coerce('header.suffix');\n  coerce('header.height');\n  coerce('header.line.width');\n  coerce('header.line.color');\n  coerce('header.fill.color');\n  Lib.coerceFont(coerce, 'header.font', Lib.extendFlat({}, layout.font));\n  defaultColumnOrder(traceOut, coerce);\n  coerce('cells.values');\n  coerce('cells.format');\n  coerce('cells.align');\n  coerce('cells.prefix');\n  coerce('cells.suffix');\n  coerce('cells.height');\n  coerce('cells.line.width');\n  coerce('cells.line.color');\n  coerce('cells.fill.color');\n  Lib.coerceFont(coerce, 'cells.font', Lib.extendFlat({}, layout.font));\n\n  // disable 1D transforms\n  traceOut._length = null;\n};\n\n/***/ }),\n\n/***/ 96595:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3487412__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_3487412__(44464),\n  supplyDefaults: __nested_webpack_require_3487412__(39754),\n  calc: __nested_webpack_require_3487412__(76333),\n  plot: __nested_webpack_require_3487412__(36736),\n  moduleType: 'trace',\n  name: 'table',\n  basePlotModule: __nested_webpack_require_3487412__(99469),\n  categories: ['noOpacity'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 36736:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3487835__) {\n\n\"use strict\";\n\n\nvar c = __nested_webpack_require_3487835__(49850);\nvar d3 = __nested_webpack_require_3487835__(39898);\nvar Lib = __nested_webpack_require_3487835__(71828);\nvar numberFormat = Lib.numberFormat;\nvar gup = __nested_webpack_require_3487835__(28984);\nvar Drawing = __nested_webpack_require_3487835__(91424);\nvar svgUtil = __nested_webpack_require_3487835__(63893);\nvar raiseToTop = (__nested_webpack_require_3487835__(71828).raiseToTop);\nvar strTranslate = (__nested_webpack_require_3487835__(71828).strTranslate);\nvar cancelEeaseColumn = (__nested_webpack_require_3487835__(71828).cancelTransition);\nvar prepareData = __nested_webpack_require_3487835__(51018);\nvar splitData = __nested_webpack_require_3487835__(56269);\nvar Color = __nested_webpack_require_3487835__(7901);\nmodule.exports = function plot(gd, wrappedTraceHolders) {\n  var dynamic = !gd._context.staticPlot;\n  var table = gd._fullLayout._paper.selectAll('.' + c.cn.table).data(wrappedTraceHolders.map(function (wrappedTraceHolder) {\n    var traceHolder = gup.unwrap(wrappedTraceHolder);\n    var trace = traceHolder.trace;\n    return prepareData(gd, trace);\n  }), gup.keyFun);\n  table.exit().remove();\n  table.enter().append('g').classed(c.cn.table, true).attr('overflow', 'visible').style('box-sizing', 'content-box').style('position', 'absolute').style('left', 0).style('overflow', 'visible').style('shape-rendering', 'crispEdges').style('pointer-events', 'all');\n  table.attr('width', function (d) {\n    return d.width + d.size.l + d.size.r;\n  }).attr('height', function (d) {\n    return d.height + d.size.t + d.size.b;\n  }).attr('transform', function (d) {\n    return strTranslate(d.translateX, d.translateY);\n  });\n  var tableControlView = table.selectAll('.' + c.cn.tableControlView).data(gup.repeat, gup.keyFun);\n  var cvEnter = tableControlView.enter().append('g').classed(c.cn.tableControlView, true).style('box-sizing', 'content-box');\n  if (dynamic) {\n    var wheelEvent = 'onwheel' in document ? 'wheel' : 'mousewheel';\n    cvEnter.on('mousemove', function (d) {\n      tableControlView.filter(function (dd) {\n        return d === dd;\n      }).call(renderScrollbarKit, gd);\n    }).on(wheelEvent, function (d) {\n      if (d.scrollbarState.wheeling) return;\n      d.scrollbarState.wheeling = true;\n      var newY = d.scrollY + d3.event.deltaY;\n      var noChange = makeDragRow(gd, tableControlView, null, newY)(d);\n      if (!noChange) {\n        d3.event.stopPropagation();\n        d3.event.preventDefault();\n      }\n      d.scrollbarState.wheeling = false;\n    }).call(renderScrollbarKit, gd, true);\n  }\n  tableControlView.attr('transform', function (d) {\n    return strTranslate(d.size.l, d.size.t);\n  });\n\n  // scrollBackground merely ensures that mouse events are captured even on crazy fast scrollwheeling\n  // otherwise rendering glitches may occur\n  var scrollBackground = tableControlView.selectAll('.' + c.cn.scrollBackground).data(gup.repeat, gup.keyFun);\n  scrollBackground.enter().append('rect').classed(c.cn.scrollBackground, true).attr('fill', 'none');\n  scrollBackground.attr('width', function (d) {\n    return d.width;\n  }).attr('height', function (d) {\n    return d.height;\n  });\n  tableControlView.each(function (d) {\n    Drawing.setClipUrl(d3.select(this), scrollAreaBottomClipKey(gd, d), gd);\n  });\n  var yColumn = tableControlView.selectAll('.' + c.cn.yColumn).data(function (vm) {\n    return vm.columns;\n  }, gup.keyFun);\n  yColumn.enter().append('g').classed(c.cn.yColumn, true);\n  yColumn.exit().remove();\n  yColumn.attr('transform', function (d) {\n    return strTranslate(d.x, 0);\n  });\n  if (dynamic) {\n    yColumn.call(d3.behavior.drag().origin(function (d) {\n      var movedColumn = d3.select(this);\n      easeColumn(movedColumn, d, -c.uplift);\n      raiseToTop(this);\n      d.calcdata.columnDragInProgress = true;\n      renderScrollbarKit(tableControlView.filter(function (dd) {\n        return d.calcdata.key === dd.key;\n      }), gd);\n      return d;\n    }).on('drag', function (d) {\n      var movedColumn = d3.select(this);\n      var getter = function (dd) {\n        return (d === dd ? d3.event.x : dd.x) + dd.columnWidth / 2;\n      };\n      d.x = Math.max(-c.overdrag, Math.min(d.calcdata.width + c.overdrag - d.columnWidth, d3.event.x));\n      var sortableColumns = flatData(yColumn).filter(function (dd) {\n        return dd.calcdata.key === d.calcdata.key;\n      });\n      var newOrder = sortableColumns.sort(function (a, b) {\n        return getter(a) - getter(b);\n      });\n      newOrder.forEach(function (dd, i) {\n        dd.xIndex = i;\n        dd.x = d === dd ? dd.x : dd.xScale(dd);\n      });\n      yColumn.filter(function (dd) {\n        return d !== dd;\n      }).transition().ease(c.transitionEase).duration(c.transitionDuration).attr('transform', function (d) {\n        return strTranslate(d.x, 0);\n      });\n      movedColumn.call(cancelEeaseColumn).attr('transform', strTranslate(d.x, -c.uplift));\n    }).on('dragend', function (d) {\n      var movedColumn = d3.select(this);\n      var p = d.calcdata;\n      d.x = d.xScale(d);\n      d.calcdata.columnDragInProgress = false;\n      easeColumn(movedColumn, d, 0);\n      columnMoved(gd, p, p.columns.map(function (dd) {\n        return dd.xIndex;\n      }));\n    }));\n  }\n  yColumn.each(function (d) {\n    Drawing.setClipUrl(d3.select(this), columnBoundaryClipKey(gd, d), gd);\n  });\n  var columnBlock = yColumn.selectAll('.' + c.cn.columnBlock).data(splitData.splitToPanels, gup.keyFun);\n  columnBlock.enter().append('g').classed(c.cn.columnBlock, true).attr('id', function (d) {\n    return d.key;\n  });\n  columnBlock.style('cursor', function (d) {\n    return d.dragHandle ? 'ew-resize' : d.calcdata.scrollbarState.barWiggleRoom ? 'ns-resize' : 'default';\n  });\n  var headerColumnBlock = columnBlock.filter(headerBlock);\n  var cellsColumnBlock = columnBlock.filter(cellsBlock);\n  if (dynamic) {\n    cellsColumnBlock.call(d3.behavior.drag().origin(function (d) {\n      d3.event.stopPropagation();\n      return d;\n    }).on('drag', makeDragRow(gd, tableControlView, -1)).on('dragend', function () {\n      // fixme emit plotly notification\n    }));\n  }\n\n  // initial rendering: header is rendered first, as it may may have async LaTeX (show header first)\n  // but blocks are _entered_ the way they are due to painter's algo (header on top)\n  renderColumnCellTree(gd, tableControlView, headerColumnBlock, columnBlock);\n  renderColumnCellTree(gd, tableControlView, cellsColumnBlock, columnBlock);\n  var scrollAreaClip = tableControlView.selectAll('.' + c.cn.scrollAreaClip).data(gup.repeat, gup.keyFun);\n  scrollAreaClip.enter().append('clipPath').classed(c.cn.scrollAreaClip, true).attr('id', function (d) {\n    return scrollAreaBottomClipKey(gd, d);\n  });\n  var scrollAreaClipRect = scrollAreaClip.selectAll('.' + c.cn.scrollAreaClipRect).data(gup.repeat, gup.keyFun);\n  scrollAreaClipRect.enter().append('rect').classed(c.cn.scrollAreaClipRect, true).attr('x', -c.overdrag).attr('y', -c.uplift).attr('fill', 'none');\n  scrollAreaClipRect.attr('width', function (d) {\n    return d.width + 2 * c.overdrag;\n  }).attr('height', function (d) {\n    return d.height + c.uplift;\n  });\n  var columnBoundary = yColumn.selectAll('.' + c.cn.columnBoundary).data(gup.repeat, gup.keyFun);\n  columnBoundary.enter().append('g').classed(c.cn.columnBoundary, true);\n  var columnBoundaryClippath = yColumn.selectAll('.' + c.cn.columnBoundaryClippath).data(gup.repeat, gup.keyFun);\n\n  // SVG spec doesn't mandate wrapping into a <defs> and doesn't seem to cause a speed difference\n  columnBoundaryClippath.enter().append('clipPath').classed(c.cn.columnBoundaryClippath, true);\n  columnBoundaryClippath.attr('id', function (d) {\n    return columnBoundaryClipKey(gd, d);\n  });\n  var columnBoundaryRect = columnBoundaryClippath.selectAll('.' + c.cn.columnBoundaryRect).data(gup.repeat, gup.keyFun);\n  columnBoundaryRect.enter().append('rect').classed(c.cn.columnBoundaryRect, true).attr('fill', 'none');\n  columnBoundaryRect.attr('width', function (d) {\n    return d.columnWidth + 2 * roundHalfWidth(d);\n  }).attr('height', function (d) {\n    return d.calcdata.height + 2 * roundHalfWidth(d) + c.uplift;\n  }).attr('x', function (d) {\n    return -roundHalfWidth(d);\n  }).attr('y', function (d) {\n    return -roundHalfWidth(d);\n  });\n  updateBlockYPosition(null, cellsColumnBlock, tableControlView);\n};\nfunction roundHalfWidth(d) {\n  return Math.ceil(d.calcdata.maxLineWidth / 2);\n}\nfunction scrollAreaBottomClipKey(gd, d) {\n  return 'clip' + gd._fullLayout._uid + '_scrollAreaBottomClip_' + d.key;\n}\nfunction columnBoundaryClipKey(gd, d) {\n  return 'clip' + gd._fullLayout._uid + '_columnBoundaryClippath_' + d.calcdata.key + '_' + d.specIndex;\n}\nfunction flatData(selection) {\n  return [].concat.apply([], selection.map(function (g) {\n    return g;\n  })).map(function (g) {\n    return g.__data__;\n  });\n}\nfunction renderScrollbarKit(tableControlView, gd, bypassVisibleBar) {\n  function calcTotalHeight(d) {\n    var blocks = d.rowBlocks;\n    return firstRowAnchor(blocks, blocks.length - 1) + (blocks.length ? rowsHeight(blocks[blocks.length - 1], Infinity) : 1);\n  }\n  var scrollbarKit = tableControlView.selectAll('.' + c.cn.scrollbarKit).data(gup.repeat, gup.keyFun);\n  scrollbarKit.enter().append('g').classed(c.cn.scrollbarKit, true).style('shape-rendering', 'geometricPrecision');\n  scrollbarKit.each(function (d) {\n    var s = d.scrollbarState;\n    s.totalHeight = calcTotalHeight(d);\n    s.scrollableAreaHeight = d.groupHeight - headerHeight(d);\n    s.currentlyVisibleHeight = Math.min(s.totalHeight, s.scrollableAreaHeight);\n    s.ratio = s.currentlyVisibleHeight / s.totalHeight;\n    s.barLength = Math.max(s.ratio * s.currentlyVisibleHeight, c.goldenRatio * c.scrollbarWidth);\n    s.barWiggleRoom = s.currentlyVisibleHeight - s.barLength;\n    s.wiggleRoom = Math.max(0, s.totalHeight - s.scrollableAreaHeight);\n    s.topY = s.barWiggleRoom === 0 ? 0 : d.scrollY / s.wiggleRoom * s.barWiggleRoom;\n    s.bottomY = s.topY + s.barLength;\n    s.dragMultiplier = s.wiggleRoom / s.barWiggleRoom;\n  }).attr('transform', function (d) {\n    var xPosition = d.width + c.scrollbarWidth / 2 + c.scrollbarOffset;\n    return strTranslate(xPosition, headerHeight(d));\n  });\n  var scrollbar = scrollbarKit.selectAll('.' + c.cn.scrollbar).data(gup.repeat, gup.keyFun);\n  scrollbar.enter().append('g').classed(c.cn.scrollbar, true);\n  var scrollbarSlider = scrollbar.selectAll('.' + c.cn.scrollbarSlider).data(gup.repeat, gup.keyFun);\n  scrollbarSlider.enter().append('g').classed(c.cn.scrollbarSlider, true);\n  scrollbarSlider.attr('transform', function (d) {\n    return strTranslate(0, d.scrollbarState.topY || 0);\n  });\n  var scrollbarGlyph = scrollbarSlider.selectAll('.' + c.cn.scrollbarGlyph).data(gup.repeat, gup.keyFun);\n  scrollbarGlyph.enter().append('line').classed(c.cn.scrollbarGlyph, true).attr('stroke', 'black').attr('stroke-width', c.scrollbarWidth).attr('stroke-linecap', 'round').attr('y1', c.scrollbarWidth / 2);\n  scrollbarGlyph.attr('y2', function (d) {\n    return d.scrollbarState.barLength - c.scrollbarWidth / 2;\n  }).attr('stroke-opacity', function (d) {\n    return d.columnDragInProgress || !d.scrollbarState.barWiggleRoom || bypassVisibleBar ? 0 : 0.4;\n  });\n\n  // cancel transition: possible pending (also, delayed) transition\n  scrollbarGlyph.transition().delay(0).duration(0);\n  scrollbarGlyph.transition().delay(c.scrollbarHideDelay).duration(c.scrollbarHideDuration).attr('stroke-opacity', 0);\n  var scrollbarCaptureZone = scrollbar.selectAll('.' + c.cn.scrollbarCaptureZone).data(gup.repeat, gup.keyFun);\n  scrollbarCaptureZone.enter().append('line').classed(c.cn.scrollbarCaptureZone, true).attr('stroke', 'white').attr('stroke-opacity', 0.01) // some browser might get rid of a 0 opacity element\n  .attr('stroke-width', c.scrollbarCaptureWidth).attr('stroke-linecap', 'butt').attr('y1', 0).on('mousedown', function (d) {\n    var y = d3.event.y;\n    var bbox = this.getBoundingClientRect();\n    var s = d.scrollbarState;\n    var pixelVal = y - bbox.top;\n    var inverseScale = d3.scale.linear().domain([0, s.scrollableAreaHeight]).range([0, s.totalHeight]).clamp(true);\n    if (!(s.topY <= pixelVal && pixelVal <= s.bottomY)) {\n      makeDragRow(gd, tableControlView, null, inverseScale(pixelVal - s.barLength / 2))(d);\n    }\n  }).call(d3.behavior.drag().origin(function (d) {\n    d3.event.stopPropagation();\n    d.scrollbarState.scrollbarScrollInProgress = true;\n    return d;\n  }).on('drag', makeDragRow(gd, tableControlView)).on('dragend', function () {\n    // fixme emit Plotly event\n  }));\n  scrollbarCaptureZone.attr('y2', function (d) {\n    return d.scrollbarState.scrollableAreaHeight;\n  });\n\n  // Remove scroll glyph and capture zone on static plots\n  // as they don't render properly when converted to PDF\n  // in the Chrome PDF viewer\n  // https://github.com/plotly/streambed/issues/11618\n  if (gd._context.staticPlot) {\n    scrollbarGlyph.remove();\n    scrollbarCaptureZone.remove();\n  }\n}\nfunction renderColumnCellTree(gd, tableControlView, columnBlock, allColumnBlock) {\n  // fixme this perf hotspot\n  // this is performance critical code as scrolling calls it on every revolver switch\n  // it appears sufficiently fast but there are plenty of low-hanging fruits for performance optimization\n\n  var columnCells = renderColumnCells(columnBlock);\n  var columnCell = renderColumnCell(columnCells);\n  supplyStylingValues(columnCell);\n  var cellRect = renderCellRect(columnCell);\n  sizeAndStyleRect(cellRect);\n  var cellTextHolder = renderCellTextHolder(columnCell);\n  var cellText = renderCellText(cellTextHolder);\n  setFont(cellText);\n  populateCellText(cellText, tableControlView, allColumnBlock, gd);\n\n  // doing this at the end when text, and text stlying are set\n  setCellHeightAndPositionY(columnCell);\n}\nfunction renderColumnCells(columnBlock) {\n  var columnCells = columnBlock.selectAll('.' + c.cn.columnCells).data(gup.repeat, gup.keyFun);\n  columnCells.enter().append('g').classed(c.cn.columnCells, true);\n  columnCells.exit().remove();\n  return columnCells;\n}\nfunction renderColumnCell(columnCells) {\n  var columnCell = columnCells.selectAll('.' + c.cn.columnCell).data(splitData.splitToCells, function (d) {\n    return d.keyWithinBlock;\n  });\n  columnCell.enter().append('g').classed(c.cn.columnCell, true);\n  columnCell.exit().remove();\n  return columnCell;\n}\nfunction renderCellRect(columnCell) {\n  var cellRect = columnCell.selectAll('.' + c.cn.cellRect).data(gup.repeat, function (d) {\n    return d.keyWithinBlock;\n  });\n  cellRect.enter().append('rect').classed(c.cn.cellRect, true);\n  return cellRect;\n}\nfunction renderCellText(cellTextHolder) {\n  var cellText = cellTextHolder.selectAll('.' + c.cn.cellText).data(gup.repeat, function (d) {\n    return d.keyWithinBlock;\n  });\n  cellText.enter().append('text').classed(c.cn.cellText, true).style('cursor', function () {\n    return 'auto';\n  }).on('mousedown', function () {\n    d3.event.stopPropagation();\n  });\n  return cellText;\n}\nfunction renderCellTextHolder(columnCell) {\n  var cellTextHolder = columnCell.selectAll('.' + c.cn.cellTextHolder).data(gup.repeat, function (d) {\n    return d.keyWithinBlock;\n  });\n  cellTextHolder.enter().append('g').classed(c.cn.cellTextHolder, true).style('shape-rendering', 'geometricPrecision');\n  return cellTextHolder;\n}\nfunction supplyStylingValues(columnCell) {\n  columnCell.each(function (d, i) {\n    var spec = d.calcdata.cells.font;\n    var col = d.column.specIndex;\n    var font = {\n      size: gridPick(spec.size, col, i),\n      color: gridPick(spec.color, col, i),\n      family: gridPick(spec.family, col, i)\n    };\n    d.rowNumber = d.key;\n    d.align = gridPick(d.calcdata.cells.align, col, i);\n    d.cellBorderWidth = gridPick(d.calcdata.cells.line.width, col, i);\n    d.font = font;\n  });\n}\nfunction setFont(cellText) {\n  cellText.each(function (d) {\n    Drawing.font(d3.select(this), d.font);\n  });\n}\nfunction sizeAndStyleRect(cellRect) {\n  cellRect.attr('width', function (d) {\n    return d.column.columnWidth;\n  }).attr('stroke-width', function (d) {\n    return d.cellBorderWidth;\n  }).each(function (d) {\n    var atomicSelection = d3.select(this);\n    Color.stroke(atomicSelection, gridPick(d.calcdata.cells.line.color, d.column.specIndex, d.rowNumber));\n    Color.fill(atomicSelection, gridPick(d.calcdata.cells.fill.color, d.column.specIndex, d.rowNumber));\n  });\n}\nfunction populateCellText(cellText, tableControlView, allColumnBlock, gd) {\n  cellText.text(function (d) {\n    var col = d.column.specIndex;\n    var row = d.rowNumber;\n    var userSuppliedContent = d.value;\n    var stringSupplied = typeof userSuppliedContent === 'string';\n    var hasBreaks = stringSupplied && userSuppliedContent.match(/<br>/i);\n    var userBrokenText = !stringSupplied || hasBreaks;\n    d.mayHaveMarkup = stringSupplied && userSuppliedContent.match(/[<&>]/);\n    var latex = isLatex(userSuppliedContent);\n    d.latex = latex;\n    var prefix = latex ? '' : gridPick(d.calcdata.cells.prefix, col, row) || '';\n    var suffix = latex ? '' : gridPick(d.calcdata.cells.suffix, col, row) || '';\n    var format = latex ? null : gridPick(d.calcdata.cells.format, col, row) || null;\n    var prefixSuffixedText = prefix + (format ? numberFormat(format)(d.value) : d.value) + suffix;\n    var hasWrapSplitCharacter;\n    d.wrappingNeeded = !d.wrapped && !userBrokenText && !latex && (hasWrapSplitCharacter = hasWrapCharacter(prefixSuffixedText));\n    d.cellHeightMayIncrease = hasBreaks || latex || d.mayHaveMarkup || (hasWrapSplitCharacter === void 0 ? hasWrapCharacter(prefixSuffixedText) : hasWrapSplitCharacter);\n    d.needsConvertToTspans = d.mayHaveMarkup || d.wrappingNeeded || d.latex;\n    var textToRender;\n    if (d.wrappingNeeded) {\n      var hrefPreservedText = c.wrapSplitCharacter === ' ' ? prefixSuffixedText.replace(/<a href=/ig, '<a_href=') : prefixSuffixedText;\n      var fragments = hrefPreservedText.split(c.wrapSplitCharacter);\n      var hrefRestoredFragments = c.wrapSplitCharacter === ' ' ? fragments.map(function (frag) {\n        return frag.replace(/<a_href=/ig, '<a href=');\n      }) : fragments;\n      d.fragments = hrefRestoredFragments.map(function (f) {\n        return {\n          text: f,\n          width: null\n        };\n      });\n      d.fragments.push({\n        fragment: c.wrapSpacer,\n        width: null\n      });\n      textToRender = hrefRestoredFragments.join(c.lineBreaker) + c.lineBreaker + c.wrapSpacer;\n    } else {\n      delete d.fragments;\n      textToRender = prefixSuffixedText;\n    }\n    return textToRender;\n  }).attr('dy', function (d) {\n    return d.needsConvertToTspans ? 0 : '0.75em';\n  }).each(function (d) {\n    var element = this;\n    var selection = d3.select(element);\n\n    // finalize what's in the DOM\n\n    var renderCallback = d.wrappingNeeded ? wrapTextMaker : updateYPositionMaker;\n    if (d.needsConvertToTspans) {\n      svgUtil.convertToTspans(selection, gd, renderCallback(allColumnBlock, element, tableControlView, gd, d));\n    } else {\n      d3.select(element.parentNode)\n      // basic cell adjustment - compliance with `cellPad`\n      .attr('transform', function (d) {\n        return strTranslate(xPosition(d), c.cellPad);\n      }).attr('text-anchor', function (d) {\n        return {\n          left: 'start',\n          center: 'middle',\n          right: 'end'\n        }[d.align];\n      });\n    }\n  });\n}\nfunction isLatex(content) {\n  return typeof content === 'string' && content.match(c.latexCheck);\n}\nfunction hasWrapCharacter(text) {\n  return text.indexOf(c.wrapSplitCharacter) !== -1;\n}\nfunction columnMoved(gd, calcdata, indices) {\n  var o = calcdata.gdColumnsOriginalOrder;\n  calcdata.gdColumns.sort(function (a, b) {\n    return indices[o.indexOf(a)] - indices[o.indexOf(b)];\n  });\n  calcdata.columnorder = indices;\n\n  // TODO: there's no data here, but also this reordering is not reflected\n  // in gd.data or even gd._fullData.\n  // For now I will not attempt to persist this in _preGUI\n  gd.emit('plotly_restyle');\n}\nfunction gridPick(spec, col, row) {\n  if (Array.isArray(spec)) {\n    var column = spec[Math.min(col, spec.length - 1)];\n    if (Array.isArray(column)) {\n      return column[Math.min(row, column.length - 1)];\n    } else {\n      return column;\n    }\n  } else {\n    return spec;\n  }\n}\nfunction easeColumn(selection, d, y) {\n  selection.transition().ease(c.releaseTransitionEase).duration(c.releaseTransitionDuration).attr('transform', strTranslate(d.x, y));\n}\nfunction cellsBlock(d) {\n  return d.type === 'cells';\n}\nfunction headerBlock(d) {\n  return d.type === 'header';\n}\n\n/**\n * Revolver panel and cell contents layouting\n */\n\nfunction headerHeight(d) {\n  var headerBlocks = d.rowBlocks.length ? d.rowBlocks[0].auxiliaryBlocks : [];\n  return headerBlocks.reduce(function (p, n) {\n    return p + rowsHeight(n, Infinity);\n  }, 0);\n}\nfunction findPagesAndCacheHeights(blocks, scrollY, scrollHeight) {\n  var pages = [];\n  var pTop = 0;\n  for (var blockIndex = 0; blockIndex < blocks.length; blockIndex++) {\n    var block = blocks[blockIndex];\n    var blockRows = block.rows;\n    var rowsHeight = 0;\n    for (var i = 0; i < blockRows.length; i++) {\n      rowsHeight += blockRows[i].rowHeight;\n    }\n\n    // caching allRowsHeight on the block - it's safe as this function is always called from within the code part\n    // that handles increases to row heights\n    block.allRowsHeight = rowsHeight;\n    var pBottom = pTop + rowsHeight;\n    var windowTop = scrollY;\n    var windowBottom = windowTop + scrollHeight;\n    if (windowTop < pBottom && windowBottom > pTop) {\n      pages.push(blockIndex);\n    }\n    pTop += rowsHeight;\n\n    // consider this nice final optimization; put it in `for` condition - caveat, currently the\n    // block.allRowsHeight relies on being invalidated, so enabling this opt may not be safe\n    // if(pages.length > 1) break;\n  }\n\n  return pages;\n}\nfunction updateBlockYPosition(gd, cellsColumnBlock, tableControlView) {\n  var d = flatData(cellsColumnBlock)[0];\n  if (d === undefined) return;\n  var blocks = d.rowBlocks;\n  var calcdata = d.calcdata;\n  var bottom = firstRowAnchor(blocks, blocks.length);\n  var scrollHeight = d.calcdata.groupHeight - headerHeight(d);\n  var scrollY = calcdata.scrollY = Math.max(0, Math.min(bottom - scrollHeight, calcdata.scrollY));\n  var pages = findPagesAndCacheHeights(blocks, scrollY, scrollHeight);\n  if (pages.length === 1) {\n    if (pages[0] === blocks.length - 1) {\n      pages.unshift(pages[0] - 1);\n    } else {\n      pages.push(pages[0] + 1);\n    }\n  }\n\n  // make phased out page jump by 2 while leaving stationary page intact\n  if (pages[0] % 2) {\n    pages.reverse();\n  }\n  cellsColumnBlock.each(function (d, i) {\n    // these values will also be needed when a block is translated again due to growing cell height\n    d.page = pages[i];\n    d.scrollY = scrollY;\n  });\n  cellsColumnBlock.attr('transform', function (d) {\n    var yTranslate = firstRowAnchor(d.rowBlocks, d.page) - d.scrollY;\n    return strTranslate(0, yTranslate);\n  });\n\n  // conditionally rerendering panel 0 and 1\n  if (gd) {\n    conditionalPanelRerender(gd, tableControlView, cellsColumnBlock, pages, d.prevPages, d, 0);\n    conditionalPanelRerender(gd, tableControlView, cellsColumnBlock, pages, d.prevPages, d, 1);\n    renderScrollbarKit(tableControlView, gd);\n  }\n}\nfunction makeDragRow(gd, allTableControlView, optionalMultiplier, optionalPosition) {\n  return function dragRow(eventD) {\n    // may come from whichever DOM event target: drag, wheel, bar... eventD corresponds to event target\n    var d = eventD.calcdata ? eventD.calcdata : eventD;\n    var tableControlView = allTableControlView.filter(function (dd) {\n      return d.key === dd.key;\n    });\n    var multiplier = optionalMultiplier || d.scrollbarState.dragMultiplier;\n    var initialScrollY = d.scrollY;\n    d.scrollY = optionalPosition === void 0 ? d.scrollY + multiplier * d3.event.dy : optionalPosition;\n    var cellsColumnBlock = tableControlView.selectAll('.' + c.cn.yColumn).selectAll('.' + c.cn.columnBlock).filter(cellsBlock);\n    updateBlockYPosition(gd, cellsColumnBlock, tableControlView);\n\n    // return false if we've \"used\" the scroll, ie it did something,\n    // so the event shouldn't bubble (if appropriate)\n    return d.scrollY === initialScrollY;\n  };\n}\nfunction conditionalPanelRerender(gd, tableControlView, cellsColumnBlock, pages, prevPages, d, revolverIndex) {\n  var shouldComponentUpdate = pages[revolverIndex] !== prevPages[revolverIndex];\n  if (shouldComponentUpdate) {\n    clearTimeout(d.currentRepaint[revolverIndex]);\n    d.currentRepaint[revolverIndex] = setTimeout(function () {\n      // setTimeout might lag rendering but yields a smoother scroll, because fast scrolling makes\n      // some repaints invisible ie. wasteful (DOM work blocks the main thread)\n      var toRerender = cellsColumnBlock.filter(function (d, i) {\n        return i === revolverIndex && pages[i] !== prevPages[i];\n      });\n      renderColumnCellTree(gd, tableControlView, toRerender, cellsColumnBlock);\n      prevPages[revolverIndex] = pages[revolverIndex];\n    });\n  }\n}\nfunction wrapTextMaker(columnBlock, element, tableControlView, gd) {\n  return function wrapText() {\n    var cellTextHolder = d3.select(element.parentNode);\n    cellTextHolder.each(function (d) {\n      var fragments = d.fragments;\n      cellTextHolder.selectAll('tspan.line').each(function (dd, i) {\n        fragments[i].width = this.getComputedTextLength();\n      });\n      // last element is only for measuring the separator character, so it's ignored:\n      var separatorLength = fragments[fragments.length - 1].width;\n      var rest = fragments.slice(0, -1);\n      var currentRow = [];\n      var currentAddition, currentAdditionLength;\n      var currentRowLength = 0;\n      var rowLengthLimit = d.column.columnWidth - 2 * c.cellPad;\n      d.value = '';\n      while (rest.length) {\n        currentAddition = rest.shift();\n        currentAdditionLength = currentAddition.width + separatorLength;\n        if (currentRowLength + currentAdditionLength > rowLengthLimit) {\n          d.value += currentRow.join(c.wrapSpacer) + c.lineBreaker;\n          currentRow = [];\n          currentRowLength = 0;\n        }\n        currentRow.push(currentAddition.text);\n        currentRowLength += currentAdditionLength;\n      }\n      if (currentRowLength) {\n        d.value += currentRow.join(c.wrapSpacer);\n      }\n      d.wrapped = true;\n    });\n\n    // the pre-wrapped text was rendered only for the text measurements\n    cellTextHolder.selectAll('tspan.line').remove();\n\n    // resupply text, now wrapped\n    populateCellText(cellTextHolder.select('.' + c.cn.cellText), tableControlView, columnBlock, gd);\n    d3.select(element.parentNode.parentNode).call(setCellHeightAndPositionY);\n  };\n}\nfunction updateYPositionMaker(columnBlock, element, tableControlView, gd, d) {\n  return function updateYPosition() {\n    if (d.settledY) return;\n    var cellTextHolder = d3.select(element.parentNode);\n    var l = getBlock(d);\n    var rowIndex = d.key - l.firstRowIndex;\n    var declaredRowHeight = l.rows[rowIndex].rowHeight;\n    var requiredHeight = d.cellHeightMayIncrease ? element.parentNode.getBoundingClientRect().height + 2 * c.cellPad : declaredRowHeight;\n    var finalHeight = Math.max(requiredHeight, declaredRowHeight);\n    var increase = finalHeight - l.rows[rowIndex].rowHeight;\n    if (increase) {\n      // current row height increased\n      l.rows[rowIndex].rowHeight = finalHeight;\n      columnBlock.selectAll('.' + c.cn.columnCell).call(setCellHeightAndPositionY);\n      updateBlockYPosition(null, columnBlock.filter(cellsBlock), 0);\n\n      // if d.column.type === 'header', then the scrollbar has to be pushed downward to the scrollable area\n      // if d.column.type === 'cells', it can still be relevant if total scrolling content height is less than the\n      //                               scrollable window, as increases to row heights may need scrollbar updates\n      renderScrollbarKit(tableControlView, gd, true);\n    }\n    cellTextHolder.attr('transform', function () {\n      // this code block is only invoked for items where d.cellHeightMayIncrease is truthy\n      var element = this;\n      var columnCellElement = element.parentNode;\n      var box = columnCellElement.getBoundingClientRect();\n      var rectBox = d3.select(element.parentNode).select('.' + c.cn.cellRect).node().getBoundingClientRect();\n      var currentTransform = element.transform.baseVal.consolidate();\n      var yPosition = rectBox.top - box.top + (currentTransform ? currentTransform.matrix.f : c.cellPad);\n      return strTranslate(xPosition(d, d3.select(element.parentNode).select('.' + c.cn.cellTextHolder).node().getBoundingClientRect().width), yPosition);\n    });\n    d.settledY = true;\n  };\n}\nfunction xPosition(d, optionalWidth) {\n  switch (d.align) {\n    case 'left':\n      return c.cellPad;\n    case 'right':\n      return d.column.columnWidth - (optionalWidth || 0) - c.cellPad;\n    case 'center':\n      return (d.column.columnWidth - (optionalWidth || 0)) / 2;\n    default:\n      return c.cellPad;\n  }\n}\nfunction setCellHeightAndPositionY(columnCell) {\n  columnCell.attr('transform', function (d) {\n    var headerHeight = d.rowBlocks[0].auxiliaryBlocks.reduce(function (p, n) {\n      return p + rowsHeight(n, Infinity);\n    }, 0);\n    var l = getBlock(d);\n    var rowAnchor = rowsHeight(l, d.key);\n    var yOffset = rowAnchor + headerHeight;\n    return strTranslate(0, yOffset);\n  }).selectAll('.' + c.cn.cellRect).attr('height', function (d) {\n    return getRow(getBlock(d), d.key).rowHeight;\n  });\n}\nfunction firstRowAnchor(blocks, page) {\n  var total = 0;\n  for (var i = page - 1; i >= 0; i--) {\n    total += allRowsHeight(blocks[i]);\n  }\n  return total;\n}\nfunction rowsHeight(rowBlock, key) {\n  var total = 0;\n  for (var i = 0; i < rowBlock.rows.length && rowBlock.rows[i].rowIndex < key; i++) {\n    total += rowBlock.rows[i].rowHeight;\n  }\n  return total;\n}\nfunction allRowsHeight(rowBlock) {\n  var cached = rowBlock.allRowsHeight;\n  if (cached !== void 0) {\n    return cached;\n  }\n  var total = 0;\n  for (var i = 0; i < rowBlock.rows.length; i++) {\n    total += rowBlock.rows[i].rowHeight;\n  }\n  rowBlock.allRowsHeight = total;\n  return total;\n}\nfunction getBlock(d) {\n  return d.rowBlocks[d.page];\n}\nfunction getRow(l, i) {\n  return l.rows[i - l.firstRowIndex];\n}\n\n/***/ }),\n\n/***/ 45802:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3518075__) {\n\n\"use strict\";\n\n\nvar hovertemplateAttrs = (__nested_webpack_require_3518075__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_3518075__(5386)/* .texttemplateAttrs */ .s);\nvar colorScaleAttrs = __nested_webpack_require_3518075__(50693);\nvar domainAttrs = (__nested_webpack_require_3518075__(27670)/* .attributes */ .Y);\nvar pieAttrs = __nested_webpack_require_3518075__(34000);\nvar sunburstAttrs = __nested_webpack_require_3518075__(57564);\nvar constants = __nested_webpack_require_3518075__(43473);\nvar extendFlat = (__nested_webpack_require_3518075__(1426).extendFlat);\nmodule.exports = {\n  labels: sunburstAttrs.labels,\n  parents: sunburstAttrs.parents,\n  values: sunburstAttrs.values,\n  branchvalues: sunburstAttrs.branchvalues,\n  count: sunburstAttrs.count,\n  level: sunburstAttrs.level,\n  maxdepth: sunburstAttrs.maxdepth,\n  tiling: {\n    packing: {\n      valType: 'enumerated',\n      values: ['squarify', 'binary', 'dice', 'slice', 'slice-dice', 'dice-slice'],\n      dflt: 'squarify',\n      editType: 'plot'\n    },\n    squarifyratio: {\n      valType: 'number',\n      min: 1,\n      dflt: 1,\n      editType: 'plot'\n    },\n    flip: {\n      valType: 'flaglist',\n      flags: ['x', 'y'],\n      dflt: '',\n      editType: 'plot'\n    },\n    pad: {\n      valType: 'number',\n      min: 0,\n      dflt: 3,\n      editType: 'plot'\n    },\n    editType: 'calc'\n  },\n  marker: extendFlat({\n    pad: {\n      t: {\n        valType: 'number',\n        min: 0,\n        editType: 'plot'\n      },\n      l: {\n        valType: 'number',\n        min: 0,\n        editType: 'plot'\n      },\n      r: {\n        valType: 'number',\n        min: 0,\n        editType: 'plot'\n      },\n      b: {\n        valType: 'number',\n        min: 0,\n        editType: 'plot'\n      },\n      editType: 'calc'\n    },\n    colors: sunburstAttrs.marker.colors,\n    depthfade: {\n      valType: 'enumerated',\n      values: [true, false, 'reversed'],\n      editType: 'style'\n    },\n    line: sunburstAttrs.marker.line,\n    cornerradius: {\n      valType: 'number',\n      min: 0,\n      dflt: 0,\n      editType: 'plot'\n    },\n    editType: 'calc'\n  }, colorScaleAttrs('marker', {\n    colorAttr: 'colors',\n    anim: false // TODO: set to anim: true?\n  })),\n\n  pathbar: {\n    visible: {\n      valType: 'boolean',\n      dflt: true,\n      editType: 'plot'\n    },\n    side: {\n      valType: 'enumerated',\n      values: ['top', 'bottom'],\n      dflt: 'top',\n      editType: 'plot'\n    },\n    edgeshape: {\n      valType: 'enumerated',\n      values: ['>', '<', '|', '/', '\\\\'],\n      dflt: '>',\n      editType: 'plot'\n    },\n    thickness: {\n      valType: 'number',\n      min: 12,\n      editType: 'plot'\n    },\n    textfont: extendFlat({}, pieAttrs.textfont, {}),\n    editType: 'calc'\n  },\n  text: pieAttrs.text,\n  textinfo: sunburstAttrs.textinfo,\n  // TODO: incorporate `label` and `value` in the eventData\n  texttemplate: texttemplateAttrs({\n    editType: 'plot'\n  }, {\n    keys: constants.eventDataKeys.concat(['label', 'value'])\n  }),\n  hovertext: pieAttrs.hovertext,\n  hoverinfo: sunburstAttrs.hoverinfo,\n  hovertemplate: hovertemplateAttrs({}, {\n    keys: constants.eventDataKeys\n  }),\n  textfont: pieAttrs.textfont,\n  insidetextfont: pieAttrs.insidetextfont,\n  outsidetextfont: extendFlat({}, pieAttrs.outsidetextfont, {}),\n  textposition: {\n    valType: 'enumerated',\n    values: ['top left', 'top center', 'top right', 'middle left', 'middle center', 'middle right', 'bottom left', 'bottom center', 'bottom right'],\n    dflt: 'top left',\n    editType: 'plot'\n  },\n  sort: pieAttrs.sort,\n  root: sunburstAttrs.root,\n  domain: domainAttrs({\n    name: 'treemap',\n    trace: true,\n    editType: 'calc'\n  })\n};\n\n/***/ }),\n\n/***/ 78018:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_3521747__) {\n\n\"use strict\";\n\n\nvar plots = __nested_webpack_require_3521747__(74875);\nexports.name = 'treemap';\nexports.plot = function (gd, traces, transitionOpts, makeOnCompleteCallback) {\n  plots.plotBasePlot(exports.name, gd, traces, transitionOpts, makeOnCompleteCallback);\n};\nexports.clean = function (newFullData, newFullLayout, oldFullData, oldFullLayout) {\n  plots.cleanBasePlot(exports.name, newFullData, newFullLayout, oldFullData, oldFullLayout);\n};\n\n/***/ }),\n\n/***/ 65039:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_3522278__) {\n\n\"use strict\";\n\n\nvar calc = __nested_webpack_require_3522278__(52147);\nexports.y = function (gd, trace) {\n  return calc.calc(gd, trace);\n};\nexports.T = function (gd) {\n  return calc._runCrossTraceCalc('treemap', gd);\n};\n\n/***/ }),\n\n/***/ 43473:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  CLICK_TRANSITION_TIME: 750,\n  CLICK_TRANSITION_EASING: 'poly',\n  eventDataKeys: [\n  // string\n  'currentPath', 'root', 'entry',\n  // no need to add 'parent' here\n\n  // percentages i.e. ratios\n  'percentRoot', 'percentEntry', 'percentParent'],\n  gapWithPathbar: 1 // i.e. one pixel\n};\n\n/***/ }),\n\n/***/ 91174:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3522954__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3522954__(71828);\nvar attributes = __nested_webpack_require_3522954__(45802);\nvar Color = __nested_webpack_require_3522954__(7901);\nvar handleDomainDefaults = (__nested_webpack_require_3522954__(27670)/* .defaults */ .c);\nvar handleText = (__nested_webpack_require_3522954__(90769).handleText);\nvar TEXTPAD = (__nested_webpack_require_3522954__(97313).TEXTPAD);\nvar Colorscale = __nested_webpack_require_3522954__(21081);\nvar hasColorscale = Colorscale.hasColorscale;\nvar colorscaleDefaults = Colorscale.handleDefaults;\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var labels = coerce('labels');\n  var parents = coerce('parents');\n  if (!labels || !labels.length || !parents || !parents.length) {\n    traceOut.visible = false;\n    return;\n  }\n  var vals = coerce('values');\n  if (vals && vals.length) {\n    coerce('branchvalues');\n  } else {\n    coerce('count');\n  }\n  coerce('level');\n  coerce('maxdepth');\n  var packing = coerce('tiling.packing');\n  if (packing === 'squarify') {\n    coerce('tiling.squarifyratio');\n  }\n  coerce('tiling.flip');\n  coerce('tiling.pad');\n  var text = coerce('text');\n  coerce('texttemplate');\n  if (!traceOut.texttemplate) coerce('textinfo', Array.isArray(text) ? 'text+label' : 'label');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  var hasPathbar = coerce('pathbar.visible');\n  var textposition = 'auto';\n  handleText(traceIn, traceOut, layout, coerce, textposition, {\n    hasPathbar: hasPathbar,\n    moduleHasSelected: false,\n    moduleHasUnselected: false,\n    moduleHasConstrain: false,\n    moduleHasCliponaxis: false,\n    moduleHasTextangle: false,\n    moduleHasInsideanchor: false\n  });\n  coerce('textposition');\n  var bottomText = traceOut.textposition.indexOf('bottom') !== -1;\n  var lineWidth = coerce('marker.line.width');\n  if (lineWidth) coerce('marker.line.color', layout.paper_bgcolor);\n  var colors = coerce('marker.colors');\n  var withColorscale = traceOut._hasColorscale = hasColorscale(traceIn, 'marker', 'colors') || (traceIn.marker || {}).coloraxis // N.B. special logic to consider \"values\" colorscales\n  ;\n\n  if (withColorscale) {\n    colorscaleDefaults(traceIn, traceOut, layout, coerce, {\n      prefix: 'marker.',\n      cLetter: 'c'\n    });\n  } else {\n    coerce('marker.depthfade', !(colors || []).length);\n  }\n  var headerSize = traceOut.textfont.size * 2;\n  coerce('marker.pad.t', bottomText ? headerSize / 4 : headerSize);\n  coerce('marker.pad.l', headerSize / 4);\n  coerce('marker.pad.r', headerSize / 4);\n  coerce('marker.pad.b', bottomText ? headerSize : headerSize / 4);\n  coerce('marker.cornerradius');\n  traceOut._hovered = {\n    marker: {\n      line: {\n        width: 2,\n        color: Color.contrast(layout.paper_bgcolor)\n      }\n    }\n  };\n  if (hasPathbar) {\n    // This works even for multi-line labels as treemap pathbar trim out line breaks\n    coerce('pathbar.thickness', traceOut.pathbar.textfont.size + 2 * TEXTPAD);\n    coerce('pathbar.side');\n    coerce('pathbar.edgeshape');\n  }\n  coerce('sort');\n  coerce('root.color');\n  handleDomainDefaults(traceOut, layout, coerce);\n\n  // do not support transforms for now\n  traceOut._length = null;\n};\n\n/***/ }),\n\n/***/ 80694:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3526271__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_3526271__(39898);\nvar helpers = __nested_webpack_require_3526271__(2791);\nvar uniformText = __nested_webpack_require_3526271__(72597);\nvar clearMinTextSize = uniformText.clearMinTextSize;\nvar resizeText = (__nested_webpack_require_3526271__(16688).resizeText);\nvar plotOne = __nested_webpack_require_3526271__(46650);\nmodule.exports = function _plot(gd, cdmodule, transitionOpts, makeOnCompleteCallback, opts) {\n  var type = opts.type;\n  var drawDescendants = opts.drawDescendants;\n  var fullLayout = gd._fullLayout;\n  var layer = fullLayout['_' + type + 'layer'];\n  var join, onComplete;\n\n  // If transition config is provided, then it is only a partial replot and traces not\n  // updated are removed.\n  var isFullReplot = !transitionOpts;\n  clearMinTextSize(type, fullLayout);\n  join = layer.selectAll('g.trace.' + type).data(cdmodule, function (cd) {\n    return cd[0].trace.uid;\n  });\n  join.enter().append('g').classed('trace', true).classed(type, true);\n  join.order();\n  if (!fullLayout.uniformtext.mode && helpers.hasTransition(transitionOpts)) {\n    if (makeOnCompleteCallback) {\n      // If it was passed a callback to register completion, make a callback. If\n      // this is created, then it must be executed on completion, otherwise the\n      // pos-transition redraw will not execute:\n      onComplete = makeOnCompleteCallback();\n    }\n    var transition = d3.transition().duration(transitionOpts.duration).ease(transitionOpts.easing).each('end', function () {\n      onComplete && onComplete();\n    }).each('interrupt', function () {\n      onComplete && onComplete();\n    });\n    transition.each(function () {\n      // Must run the selection again since otherwise enters/updates get grouped together\n      // and these get executed out of order. Except we need them in order!\n      layer.selectAll('g.trace').each(function (cd) {\n        plotOne(gd, cd, this, transitionOpts, drawDescendants);\n      });\n    });\n  } else {\n    join.each(function (cd) {\n      plotOne(gd, cd, this, transitionOpts, drawDescendants);\n    });\n    if (fullLayout.uniformtext.mode) {\n      resizeText(gd, layer.selectAll('.trace'), type);\n    }\n  }\n  if (isFullReplot) {\n    join.exit().remove();\n  }\n};\n\n/***/ }),\n\n/***/ 66209:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3528540__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_3528540__(39898);\nvar Lib = __nested_webpack_require_3528540__(71828);\nvar Drawing = __nested_webpack_require_3528540__(91424);\nvar svgTextUtils = __nested_webpack_require_3528540__(63893);\nvar partition = __nested_webpack_require_3528540__(37210);\nvar styleOne = (__nested_webpack_require_3528540__(96362).styleOne);\nvar constants = __nested_webpack_require_3528540__(43473);\nvar helpers = __nested_webpack_require_3528540__(2791);\nvar attachFxHandlers = __nested_webpack_require_3528540__(83523);\nvar onPathbar = true; // for Ancestors\n\nmodule.exports = function drawAncestors(gd, cd, entry, slices, opts) {\n  var barDifY = opts.barDifY;\n  var width = opts.width;\n  var height = opts.height;\n  var viewX = opts.viewX;\n  var viewY = opts.viewY;\n  var pathSlice = opts.pathSlice;\n  var toMoveInsideSlice = opts.toMoveInsideSlice;\n  var strTransform = opts.strTransform;\n  var hasTransition = opts.hasTransition;\n  var handleSlicesExit = opts.handleSlicesExit;\n  var makeUpdateSliceInterpolator = opts.makeUpdateSliceInterpolator;\n  var makeUpdateTextInterpolator = opts.makeUpdateTextInterpolator;\n  var refRect = {};\n  var isStatic = gd._context.staticPlot;\n  var fullLayout = gd._fullLayout;\n  var cd0 = cd[0];\n  var trace = cd0.trace;\n  var hierarchy = cd0.hierarchy;\n  var eachWidth = width / trace._entryDepth;\n  var pathIds = helpers.listPath(entry.data, 'id');\n  var sliceData = partition(hierarchy.copy(), [width, height], {\n    packing: 'dice',\n    pad: {\n      inner: 0,\n      top: 0,\n      left: 0,\n      right: 0,\n      bottom: 0\n    }\n  }).descendants();\n\n  // edit slices that show up on graph\n  sliceData = sliceData.filter(function (pt) {\n    var level = pathIds.indexOf(pt.data.id);\n    if (level === -1) return false;\n    pt.x0 = eachWidth * level;\n    pt.x1 = eachWidth * (level + 1);\n    pt.y0 = barDifY;\n    pt.y1 = barDifY + height;\n    pt.onPathbar = true;\n    return true;\n  });\n  sliceData.reverse();\n  slices = slices.data(sliceData, helpers.getPtId);\n  slices.enter().append('g').classed('pathbar', true);\n  handleSlicesExit(slices, onPathbar, refRect, [width, height], pathSlice);\n  slices.order();\n  var updateSlices = slices;\n  if (hasTransition) {\n    updateSlices = updateSlices.transition().each('end', function () {\n      // N.B. gd._transitioning is (still) *true* by the time\n      // transition updates get here\n      var sliceTop = d3.select(this);\n      helpers.setSliceCursor(sliceTop, gd, {\n        hideOnRoot: false,\n        hideOnLeaves: false,\n        isTransitioning: false\n      });\n    });\n  }\n  updateSlices.each(function (pt) {\n    // for bbox\n    pt._x0 = viewX(pt.x0);\n    pt._x1 = viewX(pt.x1);\n    pt._y0 = viewY(pt.y0);\n    pt._y1 = viewY(pt.y1);\n    pt._hoverX = viewX(pt.x1 - Math.min(width, height) / 2);\n    pt._hoverY = viewY(pt.y1 - height / 2);\n    var sliceTop = d3.select(this);\n    var slicePath = Lib.ensureSingle(sliceTop, 'path', 'surface', function (s) {\n      s.style('pointer-events', isStatic ? 'none' : 'all');\n    });\n    if (hasTransition) {\n      slicePath.transition().attrTween('d', function (pt2) {\n        var interp = makeUpdateSliceInterpolator(pt2, onPathbar, refRect, [width, height]);\n        return function (t) {\n          return pathSlice(interp(t));\n        };\n      });\n    } else {\n      slicePath.attr('d', pathSlice);\n    }\n    sliceTop.call(attachFxHandlers, entry, gd, cd, {\n      styleOne: styleOne,\n      eventDataKeys: constants.eventDataKeys,\n      transitionTime: constants.CLICK_TRANSITION_TIME,\n      transitionEasing: constants.CLICK_TRANSITION_EASING\n    }).call(helpers.setSliceCursor, gd, {\n      hideOnRoot: false,\n      hideOnLeaves: false,\n      isTransitioning: gd._transitioning\n    });\n    slicePath.call(styleOne, pt, trace, {\n      hovered: false\n    });\n    pt._text = (helpers.getPtLabel(pt) || '').split('<br>').join(' ') || '';\n    var sliceTextGroup = Lib.ensureSingle(sliceTop, 'g', 'slicetext');\n    var sliceText = Lib.ensureSingle(sliceTextGroup, 'text', '', function (s) {\n      // prohibit tex interpretation until we can handle\n      // tex and regular text together\n      s.attr('data-notex', 1);\n    });\n    var font = Lib.ensureUniformFontSize(gd, helpers.determineTextFont(trace, pt, fullLayout.font, {\n      onPathbar: true\n    }));\n    sliceText.text(pt._text || ' ') // use one space character instead of a blank string to avoid jumps during transition\n    .classed('slicetext', true).attr('text-anchor', 'start').call(Drawing.font, font).call(svgTextUtils.convertToTspans, gd);\n    pt.textBB = Drawing.bBox(sliceText.node());\n    pt.transform = toMoveInsideSlice(pt, {\n      fontSize: font.size,\n      onPathbar: true\n    });\n    pt.transform.fontSize = font.size;\n    if (hasTransition) {\n      sliceText.transition().attrTween('transform', function (pt2) {\n        var interp = makeUpdateTextInterpolator(pt2, onPathbar, refRect, [width, height]);\n        return function (t) {\n          return strTransform(interp(t));\n        };\n      });\n    } else {\n      sliceText.attr('transform', strTransform(pt));\n    }\n  });\n};\n\n/***/ }),\n\n/***/ 52583:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3533611__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_3533611__(39898);\nvar Lib = __nested_webpack_require_3533611__(71828);\nvar Drawing = __nested_webpack_require_3533611__(91424);\nvar svgTextUtils = __nested_webpack_require_3533611__(63893);\nvar partition = __nested_webpack_require_3533611__(37210);\nvar styleOne = (__nested_webpack_require_3533611__(96362).styleOne);\nvar constants = __nested_webpack_require_3533611__(43473);\nvar helpers = __nested_webpack_require_3533611__(2791);\nvar attachFxHandlers = __nested_webpack_require_3533611__(83523);\nvar formatSliceLabel = (__nested_webpack_require_3533611__(24714).formatSliceLabel);\nvar onPathbar = false; // for Descendants\n\nmodule.exports = function drawDescendants(gd, cd, entry, slices, opts) {\n  var width = opts.width;\n  var height = opts.height;\n  var viewX = opts.viewX;\n  var viewY = opts.viewY;\n  var pathSlice = opts.pathSlice;\n  var toMoveInsideSlice = opts.toMoveInsideSlice;\n  var strTransform = opts.strTransform;\n  var hasTransition = opts.hasTransition;\n  var handleSlicesExit = opts.handleSlicesExit;\n  var makeUpdateSliceInterpolator = opts.makeUpdateSliceInterpolator;\n  var makeUpdateTextInterpolator = opts.makeUpdateTextInterpolator;\n  var prevEntry = opts.prevEntry;\n  var refRect = {};\n  var isStatic = gd._context.staticPlot;\n  var fullLayout = gd._fullLayout;\n  var cd0 = cd[0];\n  var trace = cd0.trace;\n  var hasLeft = trace.textposition.indexOf('left') !== -1;\n  var hasRight = trace.textposition.indexOf('right') !== -1;\n  var hasBottom = trace.textposition.indexOf('bottom') !== -1;\n  var noRoomForHeader = !hasBottom && !trace.marker.pad.t || hasBottom && !trace.marker.pad.b;\n\n  // N.B. slice data isn't the calcdata,\n  // grab corresponding calcdata item in sliceData[i].data.data\n  var allData = partition(entry, [width, height], {\n    packing: trace.tiling.packing,\n    squarifyratio: trace.tiling.squarifyratio,\n    flipX: trace.tiling.flip.indexOf('x') > -1,\n    flipY: trace.tiling.flip.indexOf('y') > -1,\n    pad: {\n      inner: trace.tiling.pad,\n      top: trace.marker.pad.t,\n      left: trace.marker.pad.l,\n      right: trace.marker.pad.r,\n      bottom: trace.marker.pad.b\n    }\n  });\n  var sliceData = allData.descendants();\n  var minVisibleDepth = Infinity;\n  var maxVisibleDepth = -Infinity;\n  sliceData.forEach(function (pt) {\n    var depth = pt.depth;\n    if (depth >= trace._maxDepth) {\n      // hide slices that won't show up on graph\n      pt.x0 = pt.x1 = (pt.x0 + pt.x1) / 2;\n      pt.y0 = pt.y1 = (pt.y0 + pt.y1) / 2;\n    } else {\n      minVisibleDepth = Math.min(minVisibleDepth, depth);\n      maxVisibleDepth = Math.max(maxVisibleDepth, depth);\n    }\n  });\n  slices = slices.data(sliceData, helpers.getPtId);\n  trace._maxVisibleLayers = isFinite(maxVisibleDepth) ? maxVisibleDepth - minVisibleDepth + 1 : 0;\n  slices.enter().append('g').classed('slice', true);\n  handleSlicesExit(slices, onPathbar, refRect, [width, height], pathSlice);\n  slices.order();\n\n  // next coords of previous entry\n  var nextOfPrevEntry = null;\n  if (hasTransition && prevEntry) {\n    var prevEntryId = helpers.getPtId(prevEntry);\n    slices.each(function (pt) {\n      if (nextOfPrevEntry === null && helpers.getPtId(pt) === prevEntryId) {\n        nextOfPrevEntry = {\n          x0: pt.x0,\n          x1: pt.x1,\n          y0: pt.y0,\n          y1: pt.y1\n        };\n      }\n    });\n  }\n  var getRefRect = function () {\n    return nextOfPrevEntry || {\n      x0: 0,\n      x1: width,\n      y0: 0,\n      y1: height\n    };\n  };\n  var updateSlices = slices;\n  if (hasTransition) {\n    updateSlices = updateSlices.transition().each('end', function () {\n      // N.B. gd._transitioning is (still) *true* by the time\n      // transition updates get here\n      var sliceTop = d3.select(this);\n      helpers.setSliceCursor(sliceTop, gd, {\n        hideOnRoot: true,\n        hideOnLeaves: false,\n        isTransitioning: false\n      });\n    });\n  }\n  updateSlices.each(function (pt) {\n    var isHeader = helpers.isHeader(pt, trace);\n\n    // for bbox\n    pt._x0 = viewX(pt.x0);\n    pt._x1 = viewX(pt.x1);\n    pt._y0 = viewY(pt.y0);\n    pt._y1 = viewY(pt.y1);\n    pt._hoverX = viewX(pt.x1 - trace.marker.pad.r), pt._hoverY = hasBottom ? viewY(pt.y1 - trace.marker.pad.b / 2) : viewY(pt.y0 + trace.marker.pad.t / 2);\n    var sliceTop = d3.select(this);\n    var slicePath = Lib.ensureSingle(sliceTop, 'path', 'surface', function (s) {\n      s.style('pointer-events', isStatic ? 'none' : 'all');\n    });\n    if (hasTransition) {\n      slicePath.transition().attrTween('d', function (pt2) {\n        var interp = makeUpdateSliceInterpolator(pt2, onPathbar, getRefRect(), [width, height]);\n        return function (t) {\n          return pathSlice(interp(t));\n        };\n      });\n    } else {\n      slicePath.attr('d', pathSlice);\n    }\n    sliceTop.call(attachFxHandlers, entry, gd, cd, {\n      styleOne: styleOne,\n      eventDataKeys: constants.eventDataKeys,\n      transitionTime: constants.CLICK_TRANSITION_TIME,\n      transitionEasing: constants.CLICK_TRANSITION_EASING\n    }).call(helpers.setSliceCursor, gd, {\n      isTransitioning: gd._transitioning\n    });\n    slicePath.call(styleOne, pt, trace, {\n      hovered: false\n    });\n    if (pt.x0 === pt.x1 || pt.y0 === pt.y1) {\n      pt._text = '';\n    } else {\n      if (isHeader) {\n        pt._text = noRoomForHeader ? '' : helpers.getPtLabel(pt) || '';\n      } else {\n        pt._text = formatSliceLabel(pt, entry, trace, cd, fullLayout) || '';\n      }\n    }\n    var sliceTextGroup = Lib.ensureSingle(sliceTop, 'g', 'slicetext');\n    var sliceText = Lib.ensureSingle(sliceTextGroup, 'text', '', function (s) {\n      // prohibit tex interpretation until we can handle\n      // tex and regular text together\n      s.attr('data-notex', 1);\n    });\n    var font = Lib.ensureUniformFontSize(gd, helpers.determineTextFont(trace, pt, fullLayout.font));\n    sliceText.text(pt._text || ' ') // use one space character instead of a blank string to avoid jumps during transition\n    .classed('slicetext', true).attr('text-anchor', hasRight ? 'end' : hasLeft || isHeader ? 'start' : 'middle').call(Drawing.font, font).call(svgTextUtils.convertToTspans, gd);\n    pt.textBB = Drawing.bBox(sliceText.node());\n    pt.transform = toMoveInsideSlice(pt, {\n      fontSize: font.size,\n      isHeader: isHeader\n    });\n    pt.transform.fontSize = font.size;\n    if (hasTransition) {\n      sliceText.transition().attrTween('transform', function (pt2) {\n        var interp = makeUpdateTextInterpolator(pt2, onPathbar, getRefRect(), [width, height]);\n        return function (t) {\n          return strTransform(interp(t));\n        };\n      });\n    } else {\n      sliceText.attr('transform', strTransform(pt));\n    }\n  });\n  return nextOfPrevEntry;\n};\n\n/***/ }),\n\n/***/ 14102:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function flipTree(node, size, opts) {\n  var tmp;\n  if (opts.swapXY) {\n    // swap x0 and y0\n    tmp = node.x0;\n    node.x0 = node.y0;\n    node.y0 = tmp;\n\n    // swap x1 and y1\n    tmp = node.x1;\n    node.x1 = node.y1;\n    node.y1 = tmp;\n  }\n  if (opts.flipX) {\n    tmp = node.x0;\n    node.x0 = size[0] - node.x1;\n    node.x1 = size[0] - tmp;\n  }\n  if (opts.flipY) {\n    tmp = node.y0;\n    node.y0 = size[1] - node.y1;\n    node.y1 = size[1] - tmp;\n  }\n  var children = node.children;\n  if (children) {\n    for (var i = 0; i < children.length; i++) {\n      flipTree(children[i], size, opts);\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 70954:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3540989__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  moduleType: 'trace',\n  name: 'treemap',\n  basePlotModule: __nested_webpack_require_3540989__(78018),\n  categories: [],\n  animatable: true,\n  attributes: __nested_webpack_require_3540989__(45802),\n  layoutAttributes: __nested_webpack_require_3540989__(55479),\n  supplyDefaults: __nested_webpack_require_3540989__(91174),\n  supplyLayoutDefaults: __nested_webpack_require_3540989__(77182),\n  calc: (__nested_webpack_require_3540989__(65039)/* .calc */ .y),\n  crossTraceCalc: (__nested_webpack_require_3540989__(65039)/* .crossTraceCalc */ .T),\n  plot: __nested_webpack_require_3540989__(5893),\n  style: (__nested_webpack_require_3540989__(96362).style),\n  colorbar: __nested_webpack_require_3540989__(4898),\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 55479:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  treemapcolorway: {\n    valType: 'colorlist',\n    editType: 'calc'\n  },\n  extendtreemapcolors: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc'\n  }\n};\n\n/***/ }),\n\n/***/ 77182:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3541947__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3541947__(71828);\nvar layoutAttributes = __nested_webpack_require_3541947__(55479);\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n  }\n  coerce('treemapcolorway', layoutOut.colorway);\n  coerce('extendtreemapcolors');\n};\n\n/***/ }),\n\n/***/ 37210:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3542416__) {\n\n\"use strict\";\n\n\nvar d3Hierarchy = __nested_webpack_require_3542416__(674);\nvar flipTree = __nested_webpack_require_3542416__(14102);\nmodule.exports = function partition(entry, size, opts) {\n  var flipX = opts.flipX;\n  var flipY = opts.flipY;\n  var swapXY = opts.packing === 'dice-slice';\n  var top = opts.pad[flipY ? 'bottom' : 'top'];\n  var left = opts.pad[flipX ? 'right' : 'left'];\n  var right = opts.pad[flipX ? 'left' : 'right'];\n  var bottom = opts.pad[flipY ? 'top' : 'bottom'];\n  var tmp;\n  if (swapXY) {\n    tmp = left;\n    left = top;\n    top = tmp;\n    tmp = right;\n    right = bottom;\n    bottom = tmp;\n  }\n  var result = d3Hierarchy.treemap().tile(getTilingMethod(opts.packing, opts.squarifyratio)).paddingInner(opts.pad.inner).paddingLeft(left).paddingRight(right).paddingTop(top).paddingBottom(bottom).size(swapXY ? [size[1], size[0]] : size)(entry);\n  if (swapXY || flipX || flipY) {\n    flipTree(result, size, {\n      swapXY: swapXY,\n      flipX: flipX,\n      flipY: flipY\n    });\n  }\n  return result;\n};\nfunction getTilingMethod(key, squarifyratio) {\n  switch (key) {\n    case 'squarify':\n      return d3Hierarchy.treemapSquarify.ratio(squarifyratio);\n    case 'binary':\n      return d3Hierarchy.treemapBinary;\n    case 'dice':\n      return d3Hierarchy.treemapDice;\n    case 'slice':\n      return d3Hierarchy.treemapSlice;\n    default:\n      // i.e. 'slice-dice' | 'dice-slice'\n      return d3Hierarchy.treemapSliceDice;\n  }\n}\n\n/***/ }),\n\n/***/ 5893:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3543929__) {\n\n\"use strict\";\n\n\nvar draw = __nested_webpack_require_3543929__(80694);\nvar drawDescendants = __nested_webpack_require_3543929__(52583);\nmodule.exports = function _plot(gd, cdmodule, transitionOpts, makeOnCompleteCallback) {\n  return draw(gd, cdmodule, transitionOpts, makeOnCompleteCallback, {\n    type: 'treemap',\n    drawDescendants: drawDescendants\n  });\n};\n\n/***/ }),\n\n/***/ 46650:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3544358__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_3544358__(39898);\nvar interpolate = (__nested_webpack_require_3544358__(81684)/* .interpolate */ .sX);\nvar helpers = __nested_webpack_require_3544358__(2791);\nvar Lib = __nested_webpack_require_3544358__(71828);\nvar TEXTPAD = (__nested_webpack_require_3544358__(97313).TEXTPAD);\nvar barPlot = __nested_webpack_require_3544358__(17295);\nvar toMoveInsideBar = barPlot.toMoveInsideBar;\nvar uniformText = __nested_webpack_require_3544358__(72597);\nvar recordMinTextSize = uniformText.recordMinTextSize;\nvar constants = __nested_webpack_require_3544358__(43473);\nvar drawAncestors = __nested_webpack_require_3544358__(66209);\nfunction getKey(pt) {\n  return helpers.isHierarchyRoot(pt) ? '' :\n  // don't use the dummyId\n  helpers.getPtId(pt);\n}\nmodule.exports = function plotOne(gd, cd, element, transitionOpts, drawDescendants) {\n  var fullLayout = gd._fullLayout;\n  var cd0 = cd[0];\n  var trace = cd0.trace;\n  var type = trace.type;\n  var isIcicle = type === 'icicle';\n  var hierarchy = cd0.hierarchy;\n  var entry = helpers.findEntryWithLevel(hierarchy, trace.level);\n  var gTrace = d3.select(element);\n  var selAncestors = gTrace.selectAll('g.pathbar');\n  var selDescendants = gTrace.selectAll('g.slice');\n  if (!entry) {\n    selAncestors.remove();\n    selDescendants.remove();\n    return;\n  }\n  var isRoot = helpers.isHierarchyRoot(entry);\n  var hasTransition = !fullLayout.uniformtext.mode && helpers.hasTransition(transitionOpts);\n  var maxDepth = helpers.getMaxDepth(trace);\n  var hasVisibleDepth = function (pt) {\n    return pt.data.depth - entry.data.depth < maxDepth;\n  };\n  var gs = fullLayout._size;\n  var domain = trace.domain;\n  var vpw = gs.w * (domain.x[1] - domain.x[0]);\n  var vph = gs.h * (domain.y[1] - domain.y[0]);\n  var barW = vpw;\n  var barH = trace.pathbar.thickness;\n  var barPad = trace.marker.line.width + constants.gapWithPathbar;\n  var barDifY = !trace.pathbar.visible ? 0 : trace.pathbar.side.indexOf('bottom') > -1 ? vph + barPad : -(barH + barPad);\n  var pathbarOrigin = {\n    x0: barW,\n    // slide to the right\n    x1: barW,\n    y0: barDifY,\n    y1: barDifY + barH\n  };\n  var findClosestEdge = function (pt, ref, size) {\n    var e = trace.tiling.pad;\n    var isLeftOfRect = function (x) {\n      return x - e <= ref.x0;\n    };\n    var isRightOfRect = function (x) {\n      return x + e >= ref.x1;\n    };\n    var isBottomOfRect = function (y) {\n      return y - e <= ref.y0;\n    };\n    var isTopOfRect = function (y) {\n      return y + e >= ref.y1;\n    };\n    if (pt.x0 === ref.x0 && pt.x1 === ref.x1 && pt.y0 === ref.y0 && pt.y1 === ref.y1) {\n      return {\n        x0: pt.x0,\n        x1: pt.x1,\n        y0: pt.y0,\n        y1: pt.y1\n      };\n    }\n    return {\n      x0: isLeftOfRect(pt.x0 - e) ? 0 : isRightOfRect(pt.x0 - e) ? size[0] : pt.x0,\n      x1: isLeftOfRect(pt.x1 + e) ? 0 : isRightOfRect(pt.x1 + e) ? size[0] : pt.x1,\n      y0: isBottomOfRect(pt.y0 - e) ? 0 : isTopOfRect(pt.y0 - e) ? size[1] : pt.y0,\n      y1: isBottomOfRect(pt.y1 + e) ? 0 : isTopOfRect(pt.y1 + e) ? size[1] : pt.y1\n    };\n  };\n\n  // stash of 'previous' position data used by tweening functions\n  var prevEntry = null;\n  var prevLookupPathbar = {};\n  var prevLookupSlices = {};\n  var nextOfPrevEntry = null;\n  var getPrev = function (pt, onPathbar) {\n    return onPathbar ? prevLookupPathbar[getKey(pt)] : prevLookupSlices[getKey(pt)];\n  };\n  var getOrigin = function (pt, onPathbar, refRect, size) {\n    if (onPathbar) {\n      return prevLookupPathbar[getKey(hierarchy)] || pathbarOrigin;\n    } else {\n      var ref = prevLookupSlices[trace.level] || refRect;\n      if (hasVisibleDepth(pt)) {\n        // case of an empty object - happens when maxdepth is set\n        return findClosestEdge(pt, ref, size);\n      }\n    }\n    return {};\n  };\n\n  // N.B. handle multiple-root special case\n  if (cd0.hasMultipleRoots && isRoot) {\n    maxDepth++;\n  }\n  trace._maxDepth = maxDepth;\n  trace._backgroundColor = fullLayout.paper_bgcolor;\n  trace._entryDepth = entry.data.depth;\n  trace._atRootLevel = isRoot;\n  var cenX = -vpw / 2 + gs.l + gs.w * (domain.x[1] + domain.x[0]) / 2;\n  var cenY = -vph / 2 + gs.t + gs.h * (1 - (domain.y[1] + domain.y[0]) / 2);\n  var viewMapX = function (x) {\n    return cenX + x;\n  };\n  var viewMapY = function (y) {\n    return cenY + y;\n  };\n  var barY0 = viewMapY(0);\n  var barX0 = viewMapX(0);\n  var viewBarX = function (x) {\n    return barX0 + x;\n  };\n  var viewBarY = function (y) {\n    return barY0 + y;\n  };\n  function pos(x, y) {\n    return x + ',' + y;\n  }\n  var xStart = viewBarX(0);\n  var limitX0 = function (p) {\n    p.x = Math.max(xStart, p.x);\n  };\n  var edgeshape = trace.pathbar.edgeshape;\n\n  // pathbar(directory) path generation fn\n  var pathAncestor = function (d) {\n    var _x0 = viewBarX(Math.max(Math.min(d.x0, d.x0), 0));\n    var _x1 = viewBarX(Math.min(Math.max(d.x1, d.x1), barW));\n    var _y0 = viewBarY(d.y0);\n    var _y1 = viewBarY(d.y1);\n    var halfH = barH / 2;\n    var pL = {};\n    var pR = {};\n    pL.x = _x0;\n    pR.x = _x1;\n    pL.y = pR.y = (_y0 + _y1) / 2;\n    var pA = {\n      x: _x0,\n      y: _y0\n    };\n    var pB = {\n      x: _x1,\n      y: _y0\n    };\n    var pC = {\n      x: _x1,\n      y: _y1\n    };\n    var pD = {\n      x: _x0,\n      y: _y1\n    };\n    if (edgeshape === '>') {\n      pA.x -= halfH;\n      pB.x -= halfH;\n      pC.x -= halfH;\n      pD.x -= halfH;\n    } else if (edgeshape === '/') {\n      pC.x -= halfH;\n      pD.x -= halfH;\n      pL.x -= halfH / 2;\n      pR.x -= halfH / 2;\n    } else if (edgeshape === '\\\\') {\n      pA.x -= halfH;\n      pB.x -= halfH;\n      pL.x -= halfH / 2;\n      pR.x -= halfH / 2;\n    } else if (edgeshape === '<') {\n      pL.x -= halfH;\n      pR.x -= halfH;\n    }\n    limitX0(pA);\n    limitX0(pD);\n    limitX0(pL);\n    limitX0(pB);\n    limitX0(pC);\n    limitX0(pR);\n    return 'M' + pos(pA.x, pA.y) + 'L' + pos(pB.x, pB.y) + 'L' + pos(pR.x, pR.y) + 'L' + pos(pC.x, pC.y) + 'L' + pos(pD.x, pD.y) + 'L' + pos(pL.x, pL.y) + 'Z';\n  };\n\n  // Note that `pad` is just an integer for `icicle`` traces where\n  // `pad` is a hashmap for treemap: pad.t, pad.b, pad.l, and pad.r\n  var pad = trace[isIcicle ? 'tiling' : 'marker'].pad;\n  var hasFlag = function (f) {\n    return trace.textposition.indexOf(f) !== -1;\n  };\n  var hasTop = hasFlag('top');\n  var hasLeft = hasFlag('left');\n  var hasRight = hasFlag('right');\n  var hasBottom = hasFlag('bottom');\n\n  // slice path generation fn\n  var pathDescendant = function (d) {\n    var _x0 = viewMapX(d.x0);\n    var _x1 = viewMapX(d.x1);\n    var _y0 = viewMapY(d.y0);\n    var _y1 = viewMapY(d.y1);\n    var dx = _x1 - _x0;\n    var dy = _y1 - _y0;\n    if (!dx || !dy) return '';\n    var cornerradius = trace.marker.cornerradius || 0;\n    var r = Math.min(cornerradius, dx / 2, dy / 2);\n    if (r && d.data && d.data.data && d.data.data.label) {\n      if (hasTop) r = Math.min(r, pad.t);\n      if (hasLeft) r = Math.min(r, pad.l);\n      if (hasRight) r = Math.min(r, pad.r);\n      if (hasBottom) r = Math.min(r, pad.b);\n    }\n    var arc = function (rx, ry) {\n      return r ? 'a' + pos(r, r) + ' 0 0 1 ' + pos(rx, ry) : '';\n    };\n    return 'M' + pos(_x0, _y0 + r) + arc(r, -r) + 'L' + pos(_x1 - r, _y0) + arc(r, r) + 'L' + pos(_x1, _y1 - r) + arc(-r, r) + 'L' + pos(_x0 + r, _y1) + arc(-r, -r) + 'Z';\n  };\n  var toMoveInsideSlice = function (pt, opts) {\n    var x0 = pt.x0;\n    var x1 = pt.x1;\n    var y0 = pt.y0;\n    var y1 = pt.y1;\n    var textBB = pt.textBB;\n    var _hasTop = hasTop || opts.isHeader && !hasBottom;\n    var anchor = _hasTop ? 'start' : hasBottom ? 'end' : 'middle';\n    var _hasRight = hasFlag('right');\n    var _hasLeft = hasFlag('left') || opts.onPathbar;\n    var leftToRight = _hasLeft ? -1 : _hasRight ? 1 : 0;\n    if (opts.isHeader) {\n      x0 += (isIcicle ? pad : pad.l) - TEXTPAD;\n      x1 -= (isIcicle ? pad : pad.r) - TEXTPAD;\n      if (x0 >= x1) {\n        var mid = (x0 + x1) / 2;\n        x0 = mid;\n        x1 = mid;\n      }\n\n      // limit the drawing area for headers\n      var limY;\n      if (hasBottom) {\n        limY = y1 - (isIcicle ? pad : pad.b);\n        if (y0 < limY && limY < y1) y0 = limY;\n      } else {\n        limY = y0 + (isIcicle ? pad : pad.t);\n        if (y0 < limY && limY < y1) y1 = limY;\n      }\n    }\n\n    // position the text relative to the slice\n    var transform = toMoveInsideBar(x0, x1, y0, y1, textBB, {\n      isHorizontal: false,\n      constrained: true,\n      angle: 0,\n      anchor: anchor,\n      leftToRight: leftToRight\n    });\n    transform.fontSize = opts.fontSize;\n    transform.targetX = viewMapX(transform.targetX);\n    transform.targetY = viewMapY(transform.targetY);\n    if (isNaN(transform.targetX) || isNaN(transform.targetY)) {\n      return {};\n    }\n    if (x0 !== x1 && y0 !== y1) {\n      recordMinTextSize(trace.type, transform, fullLayout);\n    }\n    return {\n      scale: transform.scale,\n      rotate: transform.rotate,\n      textX: transform.textX,\n      textY: transform.textY,\n      anchorX: transform.anchorX,\n      anchorY: transform.anchorY,\n      targetX: transform.targetX,\n      targetY: transform.targetY\n    };\n  };\n  var interpFromParent = function (pt, onPathbar) {\n    var parentPrev;\n    var i = 0;\n    var Q = pt;\n    while (!parentPrev && i < maxDepth) {\n      // loop to find a parent/grandParent on the previous graph\n      i++;\n      Q = Q.parent;\n      if (Q) {\n        parentPrev = getPrev(Q, onPathbar);\n      } else i = maxDepth;\n    }\n    return parentPrev || {};\n  };\n  var makeExitSliceInterpolator = function (pt, onPathbar, refRect, size) {\n    var prev = getPrev(pt, onPathbar);\n    var next;\n    if (onPathbar) {\n      next = pathbarOrigin;\n    } else {\n      var entryPrev = getPrev(entry, onPathbar);\n      if (entryPrev) {\n        // 'entryPrev' is here has the previous coordinates of the entry\n        // node, which corresponds to the last \"clicked\" node when zooming in\n        next = findClosestEdge(pt, entryPrev, size);\n      } else {\n        // this happens when maxdepth is set, when leaves must\n        // be removed and the entry is new (i.e. does not have a 'prev' object)\n        next = {};\n      }\n    }\n    return interpolate(prev, next);\n  };\n  var makeUpdateSliceInterpolator = function (pt, onPathbar, refRect, size, opts) {\n    var prev0 = getPrev(pt, onPathbar);\n    var prev;\n    if (prev0) {\n      // if pt already on graph, this is easy\n      prev = prev0;\n    } else {\n      // for new pts:\n      if (onPathbar) {\n        prev = pathbarOrigin;\n      } else {\n        if (prevEntry) {\n          // if trace was visible before\n          if (pt.parent) {\n            var ref = nextOfPrevEntry || refRect;\n            if (ref && !onPathbar) {\n              prev = findClosestEdge(pt, ref, size);\n            } else {\n              // if new leaf (when maxdepth is set),\n              // grow it from its parent node\n              prev = {};\n              Lib.extendFlat(prev, interpFromParent(pt, onPathbar));\n            }\n          } else {\n            prev = Lib.extendFlat({}, pt);\n            if (isIcicle) {\n              if (opts.orientation === 'h') {\n                if (opts.flipX) prev.x0 = pt.x1;else prev.x1 = 0;\n              } else {\n                if (opts.flipY) prev.y0 = pt.y1;else prev.y1 = 0;\n              }\n            }\n          }\n        } else {\n          prev = {};\n        }\n      }\n    }\n    return interpolate(prev, {\n      x0: pt.x0,\n      x1: pt.x1,\n      y0: pt.y0,\n      y1: pt.y1\n    });\n  };\n  var makeUpdateTextInterpolator = function (pt, onPathbar, refRect, size) {\n    var prev0 = getPrev(pt, onPathbar);\n    var prev = {};\n    var origin = getOrigin(pt, onPathbar, refRect, size);\n    Lib.extendFlat(prev, {\n      transform: toMoveInsideSlice({\n        x0: origin.x0,\n        x1: origin.x1,\n        y0: origin.y0,\n        y1: origin.y1,\n        textBB: pt.textBB,\n        _text: pt._text\n      }, {\n        isHeader: helpers.isHeader(pt, trace)\n      })\n    });\n    if (prev0) {\n      // if pt already on graph, this is easy\n      prev = prev0;\n    } else {\n      // for new pts:\n      if (pt.parent) {\n        Lib.extendFlat(prev, interpFromParent(pt, onPathbar));\n      }\n    }\n    var transform = pt.transform;\n    if (pt.x0 !== pt.x1 && pt.y0 !== pt.y1) {\n      recordMinTextSize(trace.type, transform, fullLayout);\n    }\n    return interpolate(prev, {\n      transform: {\n        scale: transform.scale,\n        rotate: transform.rotate,\n        textX: transform.textX,\n        textY: transform.textY,\n        anchorX: transform.anchorX,\n        anchorY: transform.anchorY,\n        targetX: transform.targetX,\n        targetY: transform.targetY\n      }\n    });\n  };\n  var handleSlicesExit = function (slices, onPathbar, refRect, size, pathSlice) {\n    var width = size[0];\n    var height = size[1];\n    if (hasTransition) {\n      slices.exit().transition().each(function () {\n        var sliceTop = d3.select(this);\n        var slicePath = sliceTop.select('path.surface');\n        slicePath.transition().attrTween('d', function (pt2) {\n          var interp = makeExitSliceInterpolator(pt2, onPathbar, refRect, [width, height]);\n          return function (t) {\n            return pathSlice(interp(t));\n          };\n        });\n        var sliceTextGroup = sliceTop.select('g.slicetext');\n        sliceTextGroup.attr('opacity', 0);\n      }).remove();\n    } else {\n      slices.exit().remove();\n    }\n  };\n  var strTransform = function (d) {\n    var transform = d.transform;\n    if (d.x0 !== d.x1 && d.y0 !== d.y1) {\n      recordMinTextSize(trace.type, transform, fullLayout);\n    }\n    return Lib.getTextTransform({\n      textX: transform.textX,\n      textY: transform.textY,\n      anchorX: transform.anchorX,\n      anchorY: transform.anchorY,\n      targetX: transform.targetX,\n      targetY: transform.targetY,\n      scale: transform.scale,\n      rotate: transform.rotate\n    });\n  };\n  if (hasTransition) {\n    // Important: do this before binding new sliceData!\n\n    selAncestors.each(function (pt) {\n      prevLookupPathbar[getKey(pt)] = {\n        x0: pt.x0,\n        x1: pt.x1,\n        y0: pt.y0,\n        y1: pt.y1\n      };\n      if (pt.transform) {\n        prevLookupPathbar[getKey(pt)].transform = {\n          textX: pt.transform.textX,\n          textY: pt.transform.textY,\n          anchorX: pt.transform.anchorX,\n          anchorY: pt.transform.anchorY,\n          targetX: pt.transform.targetX,\n          targetY: pt.transform.targetY,\n          scale: pt.transform.scale,\n          rotate: pt.transform.rotate\n        };\n      }\n    });\n    selDescendants.each(function (pt) {\n      prevLookupSlices[getKey(pt)] = {\n        x0: pt.x0,\n        x1: pt.x1,\n        y0: pt.y0,\n        y1: pt.y1\n      };\n      if (pt.transform) {\n        prevLookupSlices[getKey(pt)].transform = {\n          textX: pt.transform.textX,\n          textY: pt.transform.textY,\n          anchorX: pt.transform.anchorX,\n          anchorY: pt.transform.anchorY,\n          targetX: pt.transform.targetX,\n          targetY: pt.transform.targetY,\n          scale: pt.transform.scale,\n          rotate: pt.transform.rotate\n        };\n      }\n      if (!prevEntry && helpers.isEntry(pt)) {\n        prevEntry = pt;\n      }\n    });\n  }\n  nextOfPrevEntry = drawDescendants(gd, cd, entry, selDescendants, {\n    width: vpw,\n    height: vph,\n    viewX: viewMapX,\n    viewY: viewMapY,\n    pathSlice: pathDescendant,\n    toMoveInsideSlice: toMoveInsideSlice,\n    prevEntry: prevEntry,\n    makeUpdateSliceInterpolator: makeUpdateSliceInterpolator,\n    makeUpdateTextInterpolator: makeUpdateTextInterpolator,\n    handleSlicesExit: handleSlicesExit,\n    hasTransition: hasTransition,\n    strTransform: strTransform\n  });\n  if (trace.pathbar.visible) {\n    drawAncestors(gd, cd, entry, selAncestors, {\n      barDifY: barDifY,\n      width: barW,\n      height: barH,\n      viewX: viewBarX,\n      viewY: viewBarY,\n      pathSlice: pathAncestor,\n      toMoveInsideSlice: toMoveInsideSlice,\n      makeUpdateSliceInterpolator: makeUpdateSliceInterpolator,\n      makeUpdateTextInterpolator: makeUpdateTextInterpolator,\n      handleSlicesExit: handleSlicesExit,\n      hasTransition: hasTransition,\n      strTransform: strTransform\n    });\n  } else {\n    selAncestors.remove();\n  }\n};\n\n/***/ }),\n\n/***/ 96362:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3560533__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_3560533__(39898);\nvar Color = __nested_webpack_require_3560533__(7901);\nvar Lib = __nested_webpack_require_3560533__(71828);\nvar helpers = __nested_webpack_require_3560533__(2791);\nvar resizeText = (__nested_webpack_require_3560533__(72597).resizeText);\nfunction style(gd) {\n  var s = gd._fullLayout._treemaplayer.selectAll('.trace');\n  resizeText(gd, s, 'treemap');\n  s.each(function (cd) {\n    var gTrace = d3.select(this);\n    var cd0 = cd[0];\n    var trace = cd0.trace;\n    gTrace.style('opacity', trace.opacity);\n    gTrace.selectAll('path.surface').each(function (pt) {\n      d3.select(this).call(styleOne, pt, trace, {\n        hovered: false\n      });\n    });\n  });\n}\nfunction styleOne(s, pt, trace, opts) {\n  var hovered = (opts || {}).hovered;\n  var cdi = pt.data.data;\n  var ptNumber = cdi.i;\n  var lineColor;\n  var lineWidth;\n  var fillColor = cdi.color;\n  var isRoot = helpers.isHierarchyRoot(pt);\n  var opacity = 1;\n  if (hovered) {\n    lineColor = trace._hovered.marker.line.color;\n    lineWidth = trace._hovered.marker.line.width;\n  } else {\n    if (isRoot && fillColor === trace.root.color) {\n      opacity = 100;\n      lineColor = 'rgba(0,0,0,0)';\n      lineWidth = 0;\n    } else {\n      lineColor = Lib.castOption(trace, ptNumber, 'marker.line.color') || Color.defaultLine;\n      lineWidth = Lib.castOption(trace, ptNumber, 'marker.line.width') || 0;\n      if (!trace._hasColorscale && !pt.onPathbar) {\n        var depthfade = trace.marker.depthfade;\n        if (depthfade) {\n          var fadedColor = Color.combine(Color.addOpacity(trace._backgroundColor, 0.75), fillColor);\n          var n;\n          if (depthfade === true) {\n            var maxDepth = helpers.getMaxDepth(trace);\n            if (isFinite(maxDepth)) {\n              if (helpers.isLeaf(pt)) {\n                n = 0;\n              } else {\n                n = trace._maxVisibleLayers - (pt.data.depth - trace._entryDepth);\n              }\n            } else {\n              n = pt.data.height + 1;\n            }\n          } else {\n            // i.e. case of depthfade === 'reversed'\n            n = pt.data.depth - trace._entryDepth;\n            if (!trace._atRootLevel) n++;\n          }\n          if (n > 0) {\n            for (var i = 0; i < n; i++) {\n              var ratio = 0.5 * i / n;\n              fillColor = Color.combine(Color.addOpacity(fadedColor, ratio), fillColor);\n            }\n          }\n        }\n      }\n    }\n  }\n  s.style('stroke-width', lineWidth).call(Color.fill, fillColor).call(Color.stroke, lineColor).style('opacity', opacity);\n}\nmodule.exports = {\n  style: style,\n  styleOne: styleOne\n};\n\n/***/ }),\n\n/***/ 68875:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3563213__) {\n\n\"use strict\";\n\n\nvar boxAttrs = __nested_webpack_require_3563213__(53522);\nvar extendFlat = (__nested_webpack_require_3563213__(1426).extendFlat);\nvar axisHoverFormat = (__nested_webpack_require_3563213__(12663).axisHoverFormat);\nmodule.exports = {\n  y: boxAttrs.y,\n  x: boxAttrs.x,\n  x0: boxAttrs.x0,\n  y0: boxAttrs.y0,\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  name: extendFlat({}, boxAttrs.name, {}),\n  orientation: extendFlat({}, boxAttrs.orientation, {}),\n  bandwidth: {\n    valType: 'number',\n    min: 0,\n    editType: 'calc'\n  },\n  scalegroup: {\n    valType: 'string',\n    dflt: '',\n    editType: 'calc'\n  },\n  scalemode: {\n    valType: 'enumerated',\n    values: ['width', 'count'],\n    dflt: 'width',\n    editType: 'calc'\n  },\n  spanmode: {\n    valType: 'enumerated',\n    values: ['soft', 'hard', 'manual'],\n    dflt: 'soft',\n    editType: 'calc'\n  },\n  span: {\n    valType: 'info_array',\n    items: [{\n      valType: 'any',\n      editType: 'calc'\n    }, {\n      valType: 'any',\n      editType: 'calc'\n    }],\n    editType: 'calc'\n  },\n  line: {\n    color: {\n      valType: 'color',\n      editType: 'style'\n    },\n    width: {\n      valType: 'number',\n      min: 0,\n      dflt: 2,\n      editType: 'style'\n    },\n    editType: 'plot'\n  },\n  fillcolor: boxAttrs.fillcolor,\n  points: extendFlat({}, boxAttrs.boxpoints, {}),\n  jitter: extendFlat({}, boxAttrs.jitter, {}),\n  pointpos: extendFlat({}, boxAttrs.pointpos, {}),\n  width: extendFlat({}, boxAttrs.width, {}),\n  marker: boxAttrs.marker,\n  text: boxAttrs.text,\n  hovertext: boxAttrs.hovertext,\n  hovertemplate: boxAttrs.hovertemplate,\n  quartilemethod: boxAttrs.quartilemethod,\n  box: {\n    visible: {\n      valType: 'boolean',\n      dflt: false,\n      editType: 'plot'\n    },\n    width: {\n      valType: 'number',\n      min: 0,\n      max: 1,\n      dflt: 0.25,\n      editType: 'plot'\n    },\n    fillcolor: {\n      valType: 'color',\n      editType: 'style'\n    },\n    line: {\n      color: {\n        valType: 'color',\n        editType: 'style'\n      },\n      width: {\n        valType: 'number',\n        min: 0,\n        editType: 'style'\n      },\n      editType: 'style'\n    },\n    editType: 'plot'\n  },\n  meanline: {\n    visible: {\n      valType: 'boolean',\n      dflt: false,\n      editType: 'plot'\n    },\n    color: {\n      valType: 'color',\n      editType: 'style'\n    },\n    width: {\n      valType: 'number',\n      min: 0,\n      editType: 'style'\n    },\n    editType: 'plot'\n  },\n  side: {\n    valType: 'enumerated',\n    values: ['both', 'positive', 'negative'],\n    dflt: 'both',\n    editType: 'calc'\n  },\n  offsetgroup: boxAttrs.offsetgroup,\n  alignmentgroup: boxAttrs.alignmentgroup,\n  selected: boxAttrs.selected,\n  unselected: boxAttrs.unselected,\n  hoveron: {\n    valType: 'flaglist',\n    flags: ['violins', 'points', 'kde'],\n    dflt: 'violins+points+kde',\n    extras: ['all'],\n    editType: 'style'\n  }\n};\n\n/***/ }),\n\n/***/ 38603:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3566179__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3566179__(71828);\nvar Axes = __nested_webpack_require_3566179__(89298);\nvar boxCalc = __nested_webpack_require_3566179__(48518);\nvar helpers = __nested_webpack_require_3566179__(60168);\nvar BADNUM = (__nested_webpack_require_3566179__(50606).BADNUM);\nmodule.exports = function calc(gd, trace) {\n  var cd = boxCalc(gd, trace);\n  if (cd[0].t.empty) return cd;\n  var fullLayout = gd._fullLayout;\n  var valAxis = Axes.getFromId(gd, trace[trace.orientation === 'h' ? 'xaxis' : 'yaxis']);\n  var spanMin = Infinity;\n  var spanMax = -Infinity;\n  var maxKDE = 0;\n  var maxCount = 0;\n  for (var i = 0; i < cd.length; i++) {\n    var cdi = cd[i];\n    var vals = cdi.pts.map(helpers.extractVal);\n    var bandwidth = cdi.bandwidth = calcBandwidth(trace, cdi, vals);\n    var span = cdi.span = calcSpan(trace, cdi, valAxis, bandwidth);\n    if (cdi.min === cdi.max && bandwidth === 0) {\n      // if span is zero and bandwidth is zero, we want a violin with zero width\n      span = cdi.span = [cdi.min, cdi.max];\n      cdi.density = [{\n        v: 1,\n        t: span[0]\n      }];\n      cdi.bandwidth = bandwidth;\n      maxKDE = Math.max(maxKDE, 1);\n    } else {\n      // step that well covers the bandwidth and is multiple of span distance\n      var dist = span[1] - span[0];\n      var n = Math.ceil(dist / (bandwidth / 3));\n      var step = dist / n;\n      if (!isFinite(step) || !isFinite(n)) {\n        Lib.error('Something went wrong with computing the violin span');\n        cd[0].t.empty = true;\n        return cd;\n      }\n      var kde = helpers.makeKDE(cdi, trace, vals);\n      cdi.density = new Array(n);\n      for (var k = 0, t = span[0]; t < span[1] + step / 2; k++, t += step) {\n        var v = kde(t);\n        cdi.density[k] = {\n          v: v,\n          t: t\n        };\n        maxKDE = Math.max(maxKDE, v);\n      }\n    }\n    maxCount = Math.max(maxCount, vals.length);\n    spanMin = Math.min(spanMin, span[0]);\n    spanMax = Math.max(spanMax, span[1]);\n  }\n  var extremes = Axes.findExtremes(valAxis, [spanMin, spanMax], {\n    padded: true\n  });\n  trace._extremes[valAxis._id] = extremes;\n  if (trace.width) {\n    cd[0].t.maxKDE = maxKDE;\n  } else {\n    var violinScaleGroupStats = fullLayout._violinScaleGroupStats;\n    var scaleGroup = trace.scalegroup;\n    var groupStats = violinScaleGroupStats[scaleGroup];\n    if (groupStats) {\n      groupStats.maxKDE = Math.max(groupStats.maxKDE, maxKDE);\n      groupStats.maxCount = Math.max(groupStats.maxCount, maxCount);\n    } else {\n      violinScaleGroupStats[scaleGroup] = {\n        maxKDE: maxKDE,\n        maxCount: maxCount\n      };\n    }\n  }\n  cd[0].t.labels.kde = Lib._(gd, 'kde:');\n  return cd;\n};\n\n// Default to Silveman's rule of thumb\n// - https://stats.stackexchange.com/a/6671\n// - https://en.wikipedia.org/wiki/Kernel_density_estimation#A_rule-of-thumb_bandwidth_estimator\n// - https://github.com/statsmodels/statsmodels/blob/master/statsmodels/nonparametric/bandwidths.py\nfunction silvermanRule(len, ssd, iqr) {\n  var a = Math.min(ssd, iqr / 1.349);\n  return 1.059 * a * Math.pow(len, -0.2);\n}\nfunction calcBandwidth(trace, cdi, vals) {\n  var span = cdi.max - cdi.min;\n\n  // If span is zero\n  if (!span) {\n    if (trace.bandwidth) {\n      return trace.bandwidth;\n    } else {\n      // if span is zero and no bandwidth is specified\n      // it returns zero bandwidth which is a special case\n      return 0;\n    }\n  }\n\n  // Limit how small the bandwidth can be.\n  //\n  // Silverman's rule of thumb can be \"very\" small\n  // when IQR does a poor job at describing the spread\n  // of the distribution.\n  // We also want to limit custom bandwidths\n  // to not blow up kde computations.\n\n  if (trace.bandwidth) {\n    return Math.max(trace.bandwidth, span / 1e4);\n  } else {\n    var len = vals.length;\n    var ssd = Lib.stdev(vals, len - 1, cdi.mean);\n    return Math.max(silvermanRule(len, ssd, cdi.q3 - cdi.q1), span / 100);\n  }\n}\nfunction calcSpan(trace, cdi, valAxis, bandwidth) {\n  var spanmode = trace.spanmode;\n  var spanIn = trace.span || [];\n  var spanTight = [cdi.min, cdi.max];\n  var spanLoose = [cdi.min - 2 * bandwidth, cdi.max + 2 * bandwidth];\n  var spanOut;\n  function calcSpanItem(index) {\n    var s = spanIn[index];\n    var sc = valAxis.type === 'multicategory' ? valAxis.r2c(s) : valAxis.d2c(s, 0, trace[cdi.valLetter + 'calendar']);\n    return sc === BADNUM ? spanLoose[index] : sc;\n  }\n  if (spanmode === 'soft') {\n    spanOut = spanLoose;\n  } else if (spanmode === 'hard') {\n    spanOut = spanTight;\n  } else {\n    spanOut = [calcSpanItem(0), calcSpanItem(1)];\n  }\n\n  // to reuse the equal-range-item block\n  var dummyAx = {\n    type: 'linear',\n    range: spanOut\n  };\n  Axes.setConvert(dummyAx);\n  dummyAx.cleanRange();\n  return spanOut;\n}\n\n/***/ }),\n\n/***/ 86403:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3570964__) {\n\n\"use strict\";\n\n\nvar setPositionOffset = (__nested_webpack_require_3570964__(37188).setPositionOffset);\nvar orientations = ['v', 'h'];\nmodule.exports = function crossTraceCalc(gd, plotinfo) {\n  var calcdata = gd.calcdata;\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  for (var i = 0; i < orientations.length; i++) {\n    var orientation = orientations[i];\n    var posAxis = orientation === 'h' ? ya : xa;\n    var violinList = [];\n    for (var j = 0; j < calcdata.length; j++) {\n      var cd = calcdata[j];\n      var t = cd[0].t;\n      var trace = cd[0].trace;\n      if (trace.visible === true && trace.type === 'violin' && !t.empty && trace.orientation === orientation && trace.xaxis === xa._id && trace.yaxis === ya._id) {\n        violinList.push(j);\n      }\n    }\n    setPositionOffset('violin', gd, violinList, posAxis);\n  }\n};\n\n/***/ }),\n\n/***/ 15899:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3571887__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3571887__(71828);\nvar Color = __nested_webpack_require_3571887__(7901);\nvar boxDefaults = __nested_webpack_require_3571887__(36411);\nvar attributes = __nested_webpack_require_3571887__(68875);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  function coerce2(attr, dflt) {\n    return Lib.coerce2(traceIn, traceOut, attributes, attr, dflt);\n  }\n  boxDefaults.handleSampleDefaults(traceIn, traceOut, coerce, layout);\n  if (traceOut.visible === false) return;\n  coerce('bandwidth');\n  coerce('side');\n  var width = coerce('width');\n  if (!width) {\n    coerce('scalegroup', traceOut.name);\n    coerce('scalemode');\n  }\n  var span = coerce('span');\n  var spanmodeDflt;\n  if (Array.isArray(span)) spanmodeDflt = 'manual';\n  coerce('spanmode', spanmodeDflt);\n  var lineColor = coerce('line.color', (traceIn.marker || {}).color || defaultColor);\n  var lineWidth = coerce('line.width');\n  var fillColor = coerce('fillcolor', Color.addOpacity(traceOut.line.color, 0.5));\n  boxDefaults.handlePointsDefaults(traceIn, traceOut, coerce, {\n    prefix: ''\n  });\n  var boxWidth = coerce2('box.width');\n  var boxFillColor = coerce2('box.fillcolor', fillColor);\n  var boxLineColor = coerce2('box.line.color', lineColor);\n  var boxLineWidth = coerce2('box.line.width', lineWidth);\n  var boxVisible = coerce('box.visible', Boolean(boxWidth || boxFillColor || boxLineColor || boxLineWidth));\n  if (!boxVisible) traceOut.box = {\n    visible: false\n  };\n  var meanLineColor = coerce2('meanline.color', lineColor);\n  var meanLineWidth = coerce2('meanline.width', lineWidth);\n  var meanLineVisible = coerce('meanline.visible', Boolean(meanLineColor || meanLineWidth));\n  if (!meanLineVisible) traceOut.meanline = {\n    visible: false\n  };\n  coerce('quartilemethod');\n};\n\n/***/ }),\n\n/***/ 60168:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_3573860__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3573860__(71828);\n\n// Maybe add kernels more down the road,\n// but note that the default `spanmode: 'soft'` bounds might have\n// to become kernel-dependent\nvar kernels = {\n  gaussian: function (v) {\n    return 1 / Math.sqrt(2 * Math.PI) * Math.exp(-0.5 * v * v);\n  }\n};\nexports.makeKDE = function (calcItem, trace, vals) {\n  var len = vals.length;\n  var kernel = kernels.gaussian;\n  var bandwidth = calcItem.bandwidth;\n  var factor = 1 / (len * bandwidth);\n\n  // don't use Lib.aggNums to skip isNumeric checks\n  return function (x) {\n    var sum = 0;\n    for (var i = 0; i < len; i++) {\n      sum += kernel((x - vals[i]) / bandwidth);\n    }\n    return factor * sum;\n  };\n};\nexports.getPositionOnKdePath = function (calcItem, trace, valuePx) {\n  var posLetter, valLetter;\n  if (trace.orientation === 'h') {\n    posLetter = 'y';\n    valLetter = 'x';\n  } else {\n    posLetter = 'x';\n    valLetter = 'y';\n  }\n  var pointOnPath = Lib.findPointOnPath(calcItem.path, valuePx, valLetter, {\n    pathLength: calcItem.pathLength\n  });\n  var posCenterPx = calcItem.posCenterPx;\n  var posOnPath0 = pointOnPath[posLetter];\n  var posOnPath1 = trace.side === 'both' ? 2 * posCenterPx - posOnPath0 : posCenterPx;\n  return [posOnPath0, posOnPath1];\n};\nexports.getKdeValue = function (calcItem, trace, valueDist) {\n  var vals = calcItem.pts.map(exports.extractVal);\n  var kde = exports.makeKDE(calcItem, trace, vals);\n  return kde(valueDist) / calcItem.posDensityScale;\n};\nexports.extractVal = function (o) {\n  return o.v;\n};\n\n/***/ }),\n\n/***/ 57634:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3575502__) {\n\n\"use strict\";\n\n\nvar Color = __nested_webpack_require_3575502__(7901);\nvar Lib = __nested_webpack_require_3575502__(71828);\nvar Axes = __nested_webpack_require_3575502__(89298);\nvar boxHoverPoints = __nested_webpack_require_3575502__(41868);\nvar helpers = __nested_webpack_require_3575502__(60168);\nmodule.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) {\n  if (!opts) opts = {};\n  var hoverLayer = opts.hoverLayer;\n  var cd = pointData.cd;\n  var trace = cd[0].trace;\n  var hoveron = trace.hoveron;\n  var hasHoveronViolins = hoveron.indexOf('violins') !== -1;\n  var hasHoveronKDE = hoveron.indexOf('kde') !== -1;\n  var closeData = [];\n  var closePtData;\n  var violinLineAttrs;\n  if (hasHoveronViolins || hasHoveronKDE) {\n    var closeBoxData = boxHoverPoints.hoverOnBoxes(pointData, xval, yval, hovermode);\n    if (hasHoveronKDE && closeBoxData.length > 0) {\n      var xa = pointData.xa;\n      var ya = pointData.ya;\n      var pLetter, vLetter, pAxis, vAxis, vVal;\n      if (trace.orientation === 'h') {\n        vVal = xval;\n        pLetter = 'y';\n        pAxis = ya;\n        vLetter = 'x';\n        vAxis = xa;\n      } else {\n        vVal = yval;\n        pLetter = 'x';\n        pAxis = xa;\n        vLetter = 'y';\n        vAxis = ya;\n      }\n      var di = cd[pointData.index];\n      if (vVal >= di.span[0] && vVal <= di.span[1]) {\n        var kdePointData = Lib.extendFlat({}, pointData);\n        var vValPx = vAxis.c2p(vVal, true);\n        var kdeVal = helpers.getKdeValue(di, trace, vVal);\n        var pOnPath = helpers.getPositionOnKdePath(di, trace, vValPx);\n        var paOffset = pAxis._offset;\n        var paLength = pAxis._length;\n        kdePointData[pLetter + '0'] = pOnPath[0];\n        kdePointData[pLetter + '1'] = pOnPath[1];\n        kdePointData[vLetter + '0'] = kdePointData[vLetter + '1'] = vValPx;\n        kdePointData[vLetter + 'Label'] = vLetter + ': ' + Axes.hoverLabelText(vAxis, vVal, trace[vLetter + 'hoverformat']) + ', ' + cd[0].t.labels.kde + ' ' + kdeVal.toFixed(3);\n\n        // move the spike to the KDE point\n        var medId = 0;\n        for (var k = 0; k < closeBoxData.length; k++) {\n          if (closeBoxData[k].attr === 'med') {\n            medId = k;\n            break;\n          }\n        }\n        kdePointData.spikeDistance = closeBoxData[medId].spikeDistance;\n        var spikePosAttr = pLetter + 'Spike';\n        kdePointData[spikePosAttr] = closeBoxData[medId][spikePosAttr];\n        closeBoxData[medId].spikeDistance = undefined;\n        closeBoxData[medId][spikePosAttr] = undefined;\n\n        // no hovertemplate support yet\n        kdePointData.hovertemplate = false;\n        closeData.push(kdePointData);\n        violinLineAttrs = {};\n        violinLineAttrs[pLetter + '1'] = Lib.constrain(paOffset + pOnPath[0], paOffset, paOffset + paLength);\n        violinLineAttrs[pLetter + '2'] = Lib.constrain(paOffset + pOnPath[1], paOffset, paOffset + paLength);\n        violinLineAttrs[vLetter + '1'] = violinLineAttrs[vLetter + '2'] = vAxis._offset + vValPx;\n      }\n    }\n    if (hasHoveronViolins) {\n      closeData = closeData.concat(closeBoxData);\n    }\n  }\n  if (hoveron.indexOf('points') !== -1) {\n    closePtData = boxHoverPoints.hoverOnPoints(pointData, xval, yval);\n  }\n\n  // update violin line (if any)\n  var violinLine = hoverLayer.selectAll('.violinline-' + trace.uid).data(violinLineAttrs ? [0] : []);\n  violinLine.enter().append('line').classed('violinline-' + trace.uid, true).attr('stroke-width', 1.5);\n  violinLine.exit().remove();\n  violinLine.attr(violinLineAttrs).call(Color.stroke, pointData.color);\n\n  // same combine logic as box hoverPoints\n  if (hovermode === 'closest') {\n    if (closePtData) return [closePtData];\n    return closeData;\n  }\n  if (closePtData) {\n    closeData.push(closePtData);\n    return closeData;\n  }\n  return closeData;\n};\n\n/***/ }),\n\n/***/ 47462:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3579359__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_3579359__(68875),\n  layoutAttributes: __nested_webpack_require_3579359__(9228),\n  supplyDefaults: __nested_webpack_require_3579359__(15899),\n  crossTraceDefaults: (__nested_webpack_require_3579359__(36411).crossTraceDefaults),\n  supplyLayoutDefaults: __nested_webpack_require_3579359__(33598),\n  calc: __nested_webpack_require_3579359__(38603),\n  crossTraceCalc: __nested_webpack_require_3579359__(86403),\n  plot: __nested_webpack_require_3579359__(28443),\n  style: __nested_webpack_require_3579359__(31847),\n  styleOnSelect: (__nested_webpack_require_3579359__(16296).styleOnSelect),\n  hoverPoints: __nested_webpack_require_3579359__(57634),\n  selectPoints: __nested_webpack_require_3579359__(24626),\n  moduleType: 'trace',\n  name: 'violin',\n  basePlotModule: __nested_webpack_require_3579359__(93612),\n  categories: ['cartesian', 'svg', 'symbols', 'oriented', 'box-violin', 'showLegend', 'violinLayout', 'zoomScale'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 9228:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3580270__) {\n\n\"use strict\";\n\n\nvar boxLayoutAttrs = __nested_webpack_require_3580270__(40094);\nvar extendFlat = (__nested_webpack_require_3580270__(71828).extendFlat);\nmodule.exports = {\n  violinmode: extendFlat({}, boxLayoutAttrs.boxmode, {}),\n  violingap: extendFlat({}, boxLayoutAttrs.boxgap, {}),\n  violingroupgap: extendFlat({}, boxLayoutAttrs.boxgroupgap, {})\n};\n\n/***/ }),\n\n/***/ 33598:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3580693__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3580693__(71828);\nvar layoutAttributes = __nested_webpack_require_3580693__(9228);\nvar boxLayoutDefaults = __nested_webpack_require_3580693__(4199);\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n  }\n  boxLayoutDefaults._supply(layoutIn, layoutOut, fullData, coerce, 'violin');\n};\n\n/***/ }),\n\n/***/ 28443:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3581218__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_3581218__(39898);\nvar Lib = __nested_webpack_require_3581218__(71828);\nvar Drawing = __nested_webpack_require_3581218__(91424);\nvar boxPlot = __nested_webpack_require_3581218__(86047);\nvar linePoints = __nested_webpack_require_3581218__(34621);\nvar helpers = __nested_webpack_require_3581218__(60168);\nmodule.exports = function plot(gd, plotinfo, cdViolins, violinLayer) {\n  var isStatic = gd._context.staticPlot;\n  var fullLayout = gd._fullLayout;\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  function makePath(pts, trace) {\n    var segments = linePoints(pts, {\n      xaxis: xa,\n      yaxis: ya,\n      trace: trace,\n      connectGaps: true,\n      baseTolerance: 0.75,\n      shape: 'spline',\n      simplify: true,\n      linearized: true\n    });\n    return Drawing.smoothopen(segments[0], 1);\n  }\n  Lib.makeTraceGroups(violinLayer, cdViolins, 'trace violins').each(function (cd) {\n    var plotGroup = d3.select(this);\n    var cd0 = cd[0];\n    var t = cd0.t;\n    var trace = cd0.trace;\n    if (trace.visible !== true || t.empty) {\n      plotGroup.remove();\n      return;\n    }\n    var bPos = t.bPos;\n    var bdPos = t.bdPos;\n    var valAxis = plotinfo[t.valLetter + 'axis'];\n    var posAxis = plotinfo[t.posLetter + 'axis'];\n    var hasBothSides = trace.side === 'both';\n    var hasPositiveSide = hasBothSides || trace.side === 'positive';\n    var hasNegativeSide = hasBothSides || trace.side === 'negative';\n    var violins = plotGroup.selectAll('path.violin').data(Lib.identity);\n    violins.enter().append('path').style('vector-effect', isStatic ? 'none' : 'non-scaling-stroke').attr('class', 'violin');\n    violins.exit().remove();\n    violins.each(function (d) {\n      var pathSel = d3.select(this);\n      var density = d.density;\n      var len = density.length;\n      var posCenter = posAxis.c2l(d.pos + bPos, true);\n      var posCenterPx = posAxis.l2p(posCenter);\n      var scale;\n      if (trace.width) {\n        scale = t.maxKDE / bdPos;\n      } else {\n        var groupStats = fullLayout._violinScaleGroupStats[trace.scalegroup];\n        scale = trace.scalemode === 'count' ? groupStats.maxKDE / bdPos * (groupStats.maxCount / d.pts.length) : groupStats.maxKDE / bdPos;\n      }\n      var pathPos, pathNeg, path;\n      var i, k, pts, pt;\n      if (hasPositiveSide) {\n        pts = new Array(len);\n        for (i = 0; i < len; i++) {\n          pt = pts[i] = {};\n          pt[t.posLetter] = posCenter + density[i].v / scale;\n          pt[t.valLetter] = valAxis.c2l(density[i].t, true);\n        }\n        pathPos = makePath(pts, trace);\n      }\n      if (hasNegativeSide) {\n        pts = new Array(len);\n        for (k = 0, i = len - 1; k < len; k++, i--) {\n          pt = pts[k] = {};\n          pt[t.posLetter] = posCenter - density[i].v / scale;\n          pt[t.valLetter] = valAxis.c2l(density[i].t, true);\n        }\n        pathNeg = makePath(pts, trace);\n      }\n      if (hasBothSides) {\n        path = pathPos + 'L' + pathNeg.substr(1) + 'Z';\n      } else {\n        var startPt = [posCenterPx, valAxis.c2p(density[0].t)];\n        var endPt = [posCenterPx, valAxis.c2p(density[len - 1].t)];\n        if (trace.orientation === 'h') {\n          startPt.reverse();\n          endPt.reverse();\n        }\n        if (hasPositiveSide) {\n          path = 'M' + startPt + 'L' + pathPos.substr(1) + 'L' + endPt;\n        } else {\n          path = 'M' + endPt + 'L' + pathNeg.substr(1) + 'L' + startPt;\n        }\n      }\n      pathSel.attr('d', path);\n\n      // save a few things used in getPositionOnKdePath, getKdeValue\n      // on hover and for meanline draw block below\n      d.posCenterPx = posCenterPx;\n      d.posDensityScale = scale * bdPos;\n      d.path = pathSel.node();\n      d.pathLength = d.path.getTotalLength() / (hasBothSides ? 2 : 1);\n    });\n    var boxAttrs = trace.box;\n    var boxWidth = boxAttrs.width;\n    var boxLineWidth = (boxAttrs.line || {}).width;\n    var bdPosScaled;\n    var bPosPxOffset;\n    if (hasBothSides) {\n      bdPosScaled = bdPos * boxWidth;\n      bPosPxOffset = 0;\n    } else if (hasPositiveSide) {\n      bdPosScaled = [0, bdPos * boxWidth / 2];\n      bPosPxOffset = boxLineWidth * {\n        x: 1,\n        y: -1\n      }[t.posLetter];\n    } else {\n      bdPosScaled = [bdPos * boxWidth / 2, 0];\n      bPosPxOffset = boxLineWidth * {\n        x: -1,\n        y: 1\n      }[t.posLetter];\n    }\n\n    // inner box\n    boxPlot.plotBoxAndWhiskers(plotGroup, {\n      pos: posAxis,\n      val: valAxis\n    }, trace, {\n      bPos: bPos,\n      bdPos: bdPosScaled,\n      bPosPxOffset: bPosPxOffset\n    });\n\n    // meanline insider box\n    boxPlot.plotBoxMean(plotGroup, {\n      pos: posAxis,\n      val: valAxis\n    }, trace, {\n      bPos: bPos,\n      bdPos: bdPosScaled,\n      bPosPxOffset: bPosPxOffset\n    });\n    var fn;\n    if (!trace.box.visible && trace.meanline.visible) {\n      fn = Lib.identity;\n    }\n\n    // N.B. use different class name than boxPlot.plotBoxMean,\n    // to avoid selectAll conflict\n    var meanPaths = plotGroup.selectAll('path.meanline').data(fn || []);\n    meanPaths.enter().append('path').attr('class', 'meanline').style('fill', 'none').style('vector-effect', isStatic ? 'none' : 'non-scaling-stroke');\n    meanPaths.exit().remove();\n    meanPaths.each(function (d) {\n      var v = valAxis.c2p(d.mean, true);\n      var p = helpers.getPositionOnKdePath(d, trace, v);\n      d3.select(this).attr('d', trace.orientation === 'h' ? 'M' + v + ',' + p[0] + 'V' + p[1] : 'M' + p[0] + ',' + v + 'H' + p[1]);\n    });\n    boxPlot.plotPoints(plotGroup, {\n      x: xa,\n      y: ya\n    }, trace, t);\n  });\n};\n\n/***/ }),\n\n/***/ 31847:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3586834__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_3586834__(39898);\nvar Color = __nested_webpack_require_3586834__(7901);\nvar stylePoints = (__nested_webpack_require_3586834__(16296).stylePoints);\nmodule.exports = function style(gd) {\n  var s = d3.select(gd).selectAll('g.trace.violins');\n  s.style('opacity', function (d) {\n    return d[0].trace.opacity;\n  });\n  s.each(function (d) {\n    var trace = d[0].trace;\n    var sel = d3.select(this);\n    var box = trace.box || {};\n    var boxLine = box.line || {};\n    var meanline = trace.meanline || {};\n    var meanLineWidth = meanline.width;\n    sel.selectAll('path.violin').style('stroke-width', trace.line.width + 'px').call(Color.stroke, trace.line.color).call(Color.fill, trace.fillcolor);\n    sel.selectAll('path.box').style('stroke-width', boxLine.width + 'px').call(Color.stroke, boxLine.color).call(Color.fill, box.fillcolor);\n    var meanLineStyle = {\n      'stroke-width': meanLineWidth + 'px',\n      'stroke-dasharray': 2 * meanLineWidth + 'px,' + meanLineWidth + 'px'\n    };\n    sel.selectAll('path.mean').style(meanLineStyle).call(Color.stroke, meanline.color);\n    sel.selectAll('path.meanline').style(meanLineStyle).call(Color.stroke, meanline.color);\n    stylePoints(sel, trace, gd);\n  });\n};\n\n/***/ }),\n\n/***/ 16336:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3588146__) {\n\n\"use strict\";\n\n\nvar colorScaleAttrs = __nested_webpack_require_3588146__(50693);\nvar isosurfaceAttrs = __nested_webpack_require_3588146__(16249);\nvar surfaceAttrs = __nested_webpack_require_3588146__(54532);\nvar baseAttrs = __nested_webpack_require_3588146__(9012);\nvar extendFlat = (__nested_webpack_require_3588146__(1426).extendFlat);\nvar overrideAll = (__nested_webpack_require_3588146__(30962).overrideAll);\nvar attrs = module.exports = overrideAll(extendFlat({\n  x: isosurfaceAttrs.x,\n  y: isosurfaceAttrs.y,\n  z: isosurfaceAttrs.z,\n  value: isosurfaceAttrs.value,\n  isomin: isosurfaceAttrs.isomin,\n  isomax: isosurfaceAttrs.isomax,\n  surface: isosurfaceAttrs.surface,\n  spaceframe: {\n    show: {\n      valType: 'boolean',\n      dflt: false\n    },\n    fill: {\n      valType: 'number',\n      min: 0,\n      max: 1,\n      dflt: 1\n    }\n  },\n  slices: isosurfaceAttrs.slices,\n  caps: isosurfaceAttrs.caps,\n  text: isosurfaceAttrs.text,\n  hovertext: isosurfaceAttrs.hovertext,\n  xhoverformat: isosurfaceAttrs.xhoverformat,\n  yhoverformat: isosurfaceAttrs.yhoverformat,\n  zhoverformat: isosurfaceAttrs.zhoverformat,\n  valuehoverformat: isosurfaceAttrs.valuehoverformat,\n  hovertemplate: isosurfaceAttrs.hovertemplate\n}, colorScaleAttrs('', {\n  colorAttr: '`value`',\n  showScaleDflt: true,\n  editTypeOverride: 'calc'\n}), {\n  colorbar: isosurfaceAttrs.colorbar,\n  opacity: isosurfaceAttrs.opacity,\n  opacityscale: surfaceAttrs.opacityscale,\n  lightposition: isosurfaceAttrs.lightposition,\n  lighting: isosurfaceAttrs.lighting,\n  flatshading: isosurfaceAttrs.flatshading,\n  contour: isosurfaceAttrs.contour,\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo),\n  showlegend: extendFlat({}, baseAttrs.showlegend, {\n    dflt: false\n  })\n}), 'calc', 'nested');\nattrs.x.editType = attrs.y.editType = attrs.z.editType = attrs.value.editType = 'calc+clearAxisTypes';\nattrs.transforms = undefined;\n\n/***/ }),\n\n/***/ 64809:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3590040__) {\n\n\"use strict\";\n\n\nvar createMesh = (__nested_webpack_require_3590040__(9330).gl_mesh3d);\nvar parseColorScale = (__nested_webpack_require_3590040__(81697).parseColorScale);\nvar str2RgbaArray = __nested_webpack_require_3590040__(78614);\nvar extractOpts = (__nested_webpack_require_3590040__(21081).extractOpts);\nvar zip3 = __nested_webpack_require_3590040__(90060);\nvar findNearestOnAxis = (__nested_webpack_require_3590040__(22674).findNearestOnAxis);\nvar generateIsoMeshes = (__nested_webpack_require_3590040__(22674).generateIsoMeshes);\nfunction VolumeTrace(scene, mesh, uid) {\n  this.scene = scene;\n  this.uid = uid;\n  this.mesh = mesh;\n  this.name = '';\n  this.data = null;\n  this.showContour = false;\n}\nvar proto = VolumeTrace.prototype;\nproto.handlePick = function (selection) {\n  if (selection.object === this.mesh) {\n    var rawId = selection.data.index;\n    var x = this.data._meshX[rawId];\n    var y = this.data._meshY[rawId];\n    var z = this.data._meshZ[rawId];\n    var height = this.data._Ys.length;\n    var depth = this.data._Zs.length;\n    var i = findNearestOnAxis(x, this.data._Xs).id;\n    var j = findNearestOnAxis(y, this.data._Ys).id;\n    var k = findNearestOnAxis(z, this.data._Zs).id;\n    var selectIndex = selection.index = k + depth * j + depth * height * i;\n    selection.traceCoordinate = [this.data._meshX[selectIndex], this.data._meshY[selectIndex], this.data._meshZ[selectIndex], this.data._value[selectIndex]];\n    var text = this.data.hovertext || this.data.text;\n    if (Array.isArray(text) && text[selectIndex] !== undefined) {\n      selection.textLabel = text[selectIndex];\n    } else if (text) {\n      selection.textLabel = text;\n    }\n    return true;\n  }\n};\nproto.update = function (data) {\n  var scene = this.scene;\n  var layout = scene.fullSceneLayout;\n  this.data = generateIsoMeshes(data);\n\n  // Unpack position data\n  function toDataCoords(axis, coord, scale, calendar) {\n    return coord.map(function (x) {\n      return axis.d2l(x, 0, calendar) * scale;\n    });\n  }\n  var positions = zip3(toDataCoords(layout.xaxis, data._meshX, scene.dataScale[0], data.xcalendar), toDataCoords(layout.yaxis, data._meshY, scene.dataScale[1], data.ycalendar), toDataCoords(layout.zaxis, data._meshZ, scene.dataScale[2], data.zcalendar));\n  var cells = zip3(data._meshI, data._meshJ, data._meshK);\n  var config = {\n    positions: positions,\n    cells: cells,\n    lightPosition: [data.lightposition.x, data.lightposition.y, data.lightposition.z],\n    ambient: data.lighting.ambient,\n    diffuse: data.lighting.diffuse,\n    specular: data.lighting.specular,\n    roughness: data.lighting.roughness,\n    fresnel: data.lighting.fresnel,\n    vertexNormalsEpsilon: data.lighting.vertexnormalsepsilon,\n    faceNormalsEpsilon: data.lighting.facenormalsepsilon,\n    opacity: data.opacity,\n    opacityscale: data.opacityscale,\n    contourEnable: data.contour.show,\n    contourColor: str2RgbaArray(data.contour.color).slice(0, 3),\n    contourWidth: data.contour.width,\n    useFacetNormals: data.flatshading\n  };\n  var cOpts = extractOpts(data);\n  config.vertexIntensity = data._meshIntensity;\n  config.vertexIntensityBounds = [cOpts.min, cOpts.max];\n  config.colormap = parseColorScale(data);\n\n  // Update mesh\n  this.mesh.update(config);\n};\nproto.dispose = function () {\n  this.scene.glplot.remove(this.mesh);\n  this.mesh.dispose();\n};\nfunction createVolumeTrace(scene, data) {\n  var gl = scene.glplot.gl;\n  var mesh = createMesh({\n    gl: gl\n  });\n  var result = new VolumeTrace(scene, mesh, data.uid);\n  mesh._trace = result;\n  result.update(data);\n  scene.glplot.add(mesh);\n  return result;\n}\nmodule.exports = createVolumeTrace;\n\n/***/ }),\n\n/***/ 47651:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3593677__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3593677__(71828);\nvar attributes = __nested_webpack_require_3593677__(16336);\nvar supplyIsoDefaults = (__nested_webpack_require_3593677__(82738).supplyIsoDefaults);\nvar opacityscaleDefaults = (__nested_webpack_require_3593677__(91831).opacityscaleDefaults);\nmodule.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  supplyIsoDefaults(traceIn, traceOut, defaultColor, layout, coerce);\n  opacityscaleDefaults(traceIn, traceOut, layout, coerce);\n};\n\n/***/ }),\n\n/***/ 17659:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3594343__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_3594343__(16336),\n  supplyDefaults: __nested_webpack_require_3594343__(47651),\n  calc: __nested_webpack_require_3594343__(56959),\n  colorbar: {\n    min: 'cmin',\n    max: 'cmax'\n  },\n  plot: __nested_webpack_require_3594343__(64809),\n  moduleType: 'trace',\n  name: 'volume',\n  basePlotModule: __nested_webpack_require_3594343__(58547),\n  categories: ['gl3d', 'showLegend'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 43037:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3594828__) {\n\n\"use strict\";\n\n\nvar barAttrs = __nested_webpack_require_3594828__(1486);\nvar lineAttrs = (__nested_webpack_require_3594828__(82196).line);\nvar baseAttrs = __nested_webpack_require_3594828__(9012);\nvar axisHoverFormat = (__nested_webpack_require_3594828__(12663).axisHoverFormat);\nvar hovertemplateAttrs = (__nested_webpack_require_3594828__(5386)/* .hovertemplateAttrs */ .f);\nvar texttemplateAttrs = (__nested_webpack_require_3594828__(5386)/* .texttemplateAttrs */ .s);\nvar constants = __nested_webpack_require_3594828__(48334);\nvar extendFlat = (__nested_webpack_require_3594828__(1426).extendFlat);\nvar Color = __nested_webpack_require_3594828__(7901);\nfunction directionAttrs(dirTxt) {\n  return {\n    marker: {\n      color: extendFlat({}, barAttrs.marker.color, {\n        arrayOk: false,\n        editType: 'style'\n      }),\n      line: {\n        color: extendFlat({}, barAttrs.marker.line.color, {\n          arrayOk: false,\n          editType: 'style'\n        }),\n        width: extendFlat({}, barAttrs.marker.line.width, {\n          arrayOk: false,\n          editType: 'style'\n        }),\n        editType: 'style'\n      },\n      editType: 'style'\n    },\n    editType: 'style'\n  };\n}\nmodule.exports = {\n  measure: {\n    valType: 'data_array',\n    dflt: [],\n    editType: 'calc'\n  },\n  base: {\n    valType: 'number',\n    dflt: null,\n    arrayOk: false,\n    editType: 'calc'\n  },\n  x: barAttrs.x,\n  x0: barAttrs.x0,\n  dx: barAttrs.dx,\n  y: barAttrs.y,\n  y0: barAttrs.y0,\n  dy: barAttrs.dy,\n  xperiod: barAttrs.xperiod,\n  yperiod: barAttrs.yperiod,\n  xperiod0: barAttrs.xperiod0,\n  yperiod0: barAttrs.yperiod0,\n  xperiodalignment: barAttrs.xperiodalignment,\n  yperiodalignment: barAttrs.yperiodalignment,\n  xhoverformat: axisHoverFormat('x'),\n  yhoverformat: axisHoverFormat('y'),\n  hovertext: barAttrs.hovertext,\n  hovertemplate: hovertemplateAttrs({}, {\n    keys: constants.eventDataKeys\n  }),\n  hoverinfo: extendFlat({}, baseAttrs.hoverinfo, {\n    flags: ['name', 'x', 'y', 'text', 'initial', 'delta', 'final']\n  }),\n  textinfo: {\n    valType: 'flaglist',\n    flags: ['label', 'text', 'initial', 'delta', 'final'],\n    extras: ['none'],\n    editType: 'plot',\n    arrayOk: false\n  },\n  // TODO: incorporate `label` and `value` in the eventData\n  texttemplate: texttemplateAttrs({\n    editType: 'plot'\n  }, {\n    keys: constants.eventDataKeys.concat(['label'])\n  }),\n  text: barAttrs.text,\n  textposition: barAttrs.textposition,\n  insidetextanchor: barAttrs.insidetextanchor,\n  textangle: barAttrs.textangle,\n  textfont: barAttrs.textfont,\n  insidetextfont: barAttrs.insidetextfont,\n  outsidetextfont: barAttrs.outsidetextfont,\n  constraintext: barAttrs.constraintext,\n  cliponaxis: barAttrs.cliponaxis,\n  orientation: barAttrs.orientation,\n  offset: barAttrs.offset,\n  width: barAttrs.width,\n  increasing: directionAttrs('increasing'),\n  decreasing: directionAttrs('decreasing'),\n  totals: directionAttrs('intermediate sums and total'),\n  connector: {\n    line: {\n      color: extendFlat({}, lineAttrs.color, {\n        dflt: Color.defaultLine\n      }),\n      width: extendFlat({}, lineAttrs.width, {\n        editType: 'plot' // i.e. to adjust bars is mode: 'between'. See https://github.com/plotly/plotly.js/issues/3787\n      }),\n\n      dash: lineAttrs.dash,\n      editType: 'plot'\n    },\n    mode: {\n      valType: 'enumerated',\n      values: ['spanning', 'between'],\n      dflt: 'between',\n      editType: 'plot'\n    },\n    visible: {\n      valType: 'boolean',\n      dflt: true,\n      editType: 'plot'\n    },\n    editType: 'plot'\n  },\n  offsetgroup: barAttrs.offsetgroup,\n  alignmentgroup: barAttrs.alignmentgroup\n};\n\n/***/ }),\n\n/***/ 52752:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3598416__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_3598416__(89298);\nvar alignPeriod = __nested_webpack_require_3598416__(42973);\nvar mergeArray = (__nested_webpack_require_3598416__(71828).mergeArray);\nvar calcSelection = __nested_webpack_require_3598416__(66279);\nvar BADNUM = (__nested_webpack_require_3598416__(50606).BADNUM);\nfunction isAbsolute(a) {\n  return a === 'a' || a === 'absolute';\n}\nfunction isTotal(a) {\n  return a === 't' || a === 'total';\n}\nmodule.exports = function calc(gd, trace) {\n  var xa = Axes.getFromId(gd, trace.xaxis || 'x');\n  var ya = Axes.getFromId(gd, trace.yaxis || 'y');\n  var size, pos, origPos, pObj, hasPeriod, pLetter;\n  if (trace.orientation === 'h') {\n    size = xa.makeCalcdata(trace, 'x');\n    origPos = ya.makeCalcdata(trace, 'y');\n    pObj = alignPeriod(trace, ya, 'y', origPos);\n    hasPeriod = !!trace.yperiodalignment;\n    pLetter = 'y';\n  } else {\n    size = ya.makeCalcdata(trace, 'y');\n    origPos = xa.makeCalcdata(trace, 'x');\n    pObj = alignPeriod(trace, xa, 'x', origPos);\n    hasPeriod = !!trace.xperiodalignment;\n    pLetter = 'x';\n  }\n  pos = pObj.vals;\n\n  // create the \"calculated data\" to plot\n  var serieslen = Math.min(pos.length, size.length);\n  var cd = new Array(serieslen);\n\n  // set position and size (as well as for waterfall total size)\n  var previousSum = 0;\n  var newSize;\n  // trace-wide flags\n  var hasTotals = false;\n  for (var i = 0; i < serieslen; i++) {\n    var amount = size[i] || 0;\n    var connectToNext = false;\n    if (size[i] !== BADNUM || isTotal(trace.measure[i]) || isAbsolute(trace.measure[i])) {\n      if (i + 1 < serieslen && (size[i + 1] !== BADNUM || isTotal(trace.measure[i + 1]) || isAbsolute(trace.measure[i + 1]))) {\n        connectToNext = true;\n      }\n    }\n    var cdi = cd[i] = {\n      i: i,\n      p: pos[i],\n      s: amount,\n      rawS: amount,\n      cNext: connectToNext\n    };\n    if (isAbsolute(trace.measure[i])) {\n      previousSum = cdi.s;\n      cdi.isSum = true;\n      cdi.dir = 'totals';\n      cdi.s = previousSum;\n    } else if (isTotal(trace.measure[i])) {\n      cdi.isSum = true;\n      cdi.dir = 'totals';\n      cdi.s = previousSum;\n    } else {\n      // default: relative\n      cdi.isSum = false;\n      cdi.dir = cdi.rawS < 0 ? 'decreasing' : 'increasing';\n      newSize = cdi.s;\n      cdi.s = previousSum + newSize;\n      previousSum += newSize;\n    }\n    if (cdi.dir === 'totals') {\n      hasTotals = true;\n    }\n    if (hasPeriod) {\n      cd[i].orig_p = origPos[i]; // used by hover\n      cd[i][pLetter + 'End'] = pObj.ends[i];\n      cd[i][pLetter + 'Start'] = pObj.starts[i];\n    }\n    if (trace.ids) {\n      cdi.id = String(trace.ids[i]);\n    }\n    cdi.v = (trace.base || 0) + previousSum;\n  }\n  if (cd.length) cd[0].hasTotals = hasTotals;\n  mergeArray(trace.text, cd, 'tx');\n  mergeArray(trace.hovertext, cd, 'htx');\n  calcSelection(cd, trace);\n  return cd;\n};\n\n/***/ }),\n\n/***/ 48334:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  eventDataKeys: ['initial', 'delta', 'final']\n};\n\n/***/ }),\n\n/***/ 70766:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3601459__) {\n\n\"use strict\";\n\n\nvar setGroupPositions = (__nested_webpack_require_3601459__(11661).setGroupPositions);\nmodule.exports = function crossTraceCalc(gd, plotinfo) {\n  var fullLayout = gd._fullLayout;\n  var fullData = gd._fullData;\n  var calcdata = gd.calcdata;\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  var waterfalls = [];\n  var waterfallsVert = [];\n  var waterfallsHorz = [];\n  var cd, i;\n  for (i = 0; i < fullData.length; i++) {\n    var fullTrace = fullData[i];\n    if (fullTrace.visible === true && fullTrace.xaxis === xa._id && fullTrace.yaxis === ya._id && fullTrace.type === 'waterfall') {\n      cd = calcdata[i];\n      if (fullTrace.orientation === 'h') {\n        waterfallsHorz.push(cd);\n      } else {\n        waterfallsVert.push(cd);\n      }\n      waterfalls.push(cd);\n    }\n  }\n  var opts = {\n    mode: fullLayout.waterfallmode,\n    norm: fullLayout.waterfallnorm,\n    gap: fullLayout.waterfallgap,\n    groupgap: fullLayout.waterfallgroupgap\n  };\n  setGroupPositions(gd, xa, ya, waterfallsVert, opts);\n  setGroupPositions(gd, ya, xa, waterfallsHorz, opts);\n  for (i = 0; i < waterfalls.length; i++) {\n    cd = waterfalls[i];\n    for (var j = 0; j < cd.length; j++) {\n      var di = cd[j];\n      if (di.isSum === false) {\n        di.s0 += j === 0 ? 0 : cd[j - 1].s;\n      }\n      if (j + 1 < cd.length) {\n        cd[j].nextP0 = cd[j + 1].p0;\n        cd[j].nextS0 = cd[j + 1].s0;\n      }\n    }\n  }\n};\n\n/***/ }),\n\n/***/ 83266:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3602964__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3602964__(71828);\nvar handleGroupingDefaults = __nested_webpack_require_3602964__(26125);\nvar handleText = (__nested_webpack_require_3602964__(90769).handleText);\nvar handleXYDefaults = __nested_webpack_require_3602964__(67513);\nvar handlePeriodDefaults = __nested_webpack_require_3602964__(73927);\nvar attributes = __nested_webpack_require_3602964__(43037);\nvar Color = __nested_webpack_require_3602964__(7901);\nvar delta = __nested_webpack_require_3602964__(22372);\nvar INCREASING_COLOR = delta.INCREASING.COLOR;\nvar DECREASING_COLOR = delta.DECREASING.COLOR;\nvar TOTALS_COLOR = '#4499FF';\nfunction handleDirection(coerce, direction, defaultColor) {\n  coerce(direction + '.marker.color', defaultColor);\n  coerce(direction + '.marker.line.color', Color.defaultLine);\n  coerce(direction + '.marker.line.width');\n}\nfunction supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n  function coerce(attr, dflt) {\n    return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n  }\n  var len = handleXYDefaults(traceIn, traceOut, layout, coerce);\n  if (!len) {\n    traceOut.visible = false;\n    return;\n  }\n  handlePeriodDefaults(traceIn, traceOut, layout, coerce);\n  coerce('xhoverformat');\n  coerce('yhoverformat');\n  coerce('measure');\n  coerce('orientation', traceOut.x && !traceOut.y ? 'h' : 'v');\n  coerce('base');\n  coerce('offset');\n  coerce('width');\n  coerce('text');\n  coerce('hovertext');\n  coerce('hovertemplate');\n  var textposition = coerce('textposition');\n  handleText(traceIn, traceOut, layout, coerce, textposition, {\n    moduleHasSelected: false,\n    moduleHasUnselected: false,\n    moduleHasConstrain: true,\n    moduleHasCliponaxis: true,\n    moduleHasTextangle: true,\n    moduleHasInsideanchor: true\n  });\n  if (traceOut.textposition !== 'none') {\n    coerce('texttemplate');\n    if (!traceOut.texttemplate) coerce('textinfo');\n  }\n  handleDirection(coerce, 'increasing', INCREASING_COLOR);\n  handleDirection(coerce, 'decreasing', DECREASING_COLOR);\n  handleDirection(coerce, 'totals', TOTALS_COLOR);\n  var connectorVisible = coerce('connector.visible');\n  if (connectorVisible) {\n    coerce('connector.mode');\n    var connectorLineWidth = coerce('connector.line.width');\n    if (connectorLineWidth) {\n      coerce('connector.line.color');\n      coerce('connector.line.dash');\n    }\n  }\n}\nfunction crossTraceDefaults(fullData, fullLayout) {\n  var traceIn, traceOut;\n  function coerce(attr) {\n    return Lib.coerce(traceOut._input, traceOut, attributes, attr);\n  }\n  if (fullLayout.waterfallmode === 'group') {\n    for (var i = 0; i < fullData.length; i++) {\n      traceOut = fullData[i];\n      traceIn = traceOut._input;\n      handleGroupingDefaults(traceIn, traceOut, fullLayout, coerce);\n    }\n  }\n}\nmodule.exports = {\n  supplyDefaults: supplyDefaults,\n  crossTraceDefaults: crossTraceDefaults\n};\n\n/***/ }),\n\n/***/ 58593:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function eventData(out, pt /* , trace, cd, pointNumber */) {\n  // standard cartesian event data\n  out.x = 'xVal' in pt ? pt.xVal : pt.x;\n  out.y = 'yVal' in pt ? pt.yVal : pt.y;\n\n  // for funnel\n  if ('initial' in pt) out.initial = pt.initial;\n  if ('delta' in pt) out.delta = pt.delta;\n  if ('final' in pt) out.final = pt.final;\n  if (pt.xa) out.xaxis = pt.xa;\n  if (pt.ya) out.yaxis = pt.ya;\n  return out;\n};\n\n/***/ }),\n\n/***/ 61326:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3606312__) {\n\n\"use strict\";\n\n\nvar hoverLabelText = (__nested_webpack_require_3606312__(89298).hoverLabelText);\nvar opacity = (__nested_webpack_require_3606312__(7901).opacity);\nvar hoverOnBars = (__nested_webpack_require_3606312__(95423).hoverOnBars);\nvar delta = __nested_webpack_require_3606312__(22372);\nvar DIRSYMBOL = {\n  increasing: delta.INCREASING.SYMBOL,\n  decreasing: delta.DECREASING.SYMBOL\n};\nmodule.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) {\n  var point = hoverOnBars(pointData, xval, yval, hovermode, opts);\n  if (!point) return;\n  var cd = point.cd;\n  var trace = cd[0].trace;\n  var isHorizontal = trace.orientation === 'h';\n  var vLetter = isHorizontal ? 'x' : 'y';\n  var vAxis = isHorizontal ? pointData.xa : pointData.ya;\n  function formatNumber(a) {\n    return hoverLabelText(vAxis, a, trace[vLetter + 'hoverformat']);\n  }\n\n  // the closest data point\n  var index = point.index;\n  var di = cd[index];\n  var size = di.isSum ? di.b + di.s : di.rawS;\n  if (!di.isSum) {\n    point.initial = di.b + di.s - size;\n    point.delta = size;\n    point.final = point.initial + point.delta;\n    var v = formatNumber(Math.abs(point.delta));\n    point.deltaLabel = size < 0 ? '(' + v + ')' : v;\n    point.finalLabel = formatNumber(point.final);\n    point.initialLabel = formatNumber(point.initial);\n  }\n  var hoverinfo = di.hi || trace.hoverinfo;\n  var text = [];\n  if (hoverinfo && hoverinfo !== 'none' && hoverinfo !== 'skip') {\n    var isAll = hoverinfo === 'all';\n    var parts = hoverinfo.split('+');\n    var hasFlag = function (flag) {\n      return isAll || parts.indexOf(flag) !== -1;\n    };\n    if (!di.isSum) {\n      if (hasFlag('final') && (isHorizontal ? !hasFlag('x') : !hasFlag('y')) // don't display redundant info.\n      ) {\n        text.push(point.finalLabel);\n      }\n      if (hasFlag('delta')) {\n        if (size < 0) {\n          text.push(point.deltaLabel + ' ' + DIRSYMBOL.decreasing);\n        } else {\n          text.push(point.deltaLabel + ' ' + DIRSYMBOL.increasing);\n        }\n      }\n      if (hasFlag('initial')) {\n        text.push('Initial: ' + point.initialLabel);\n      }\n    }\n  }\n  if (text.length) point.extraText = text.join('<br>');\n  point.color = getTraceColor(trace, di);\n  return [point];\n};\nfunction getTraceColor(trace, di) {\n  var cont = trace[di.dir].marker;\n  var mc = cont.color;\n  var mlc = cont.line.color;\n  var mlw = cont.line.width;\n  if (opacity(mc)) return mc;else if (opacity(mlc) && mlw) return mlc;\n}\n\n/***/ }),\n\n/***/ 19990:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3608828__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  attributes: __nested_webpack_require_3608828__(43037),\n  layoutAttributes: __nested_webpack_require_3608828__(13494),\n  supplyDefaults: (__nested_webpack_require_3608828__(83266).supplyDefaults),\n  crossTraceDefaults: (__nested_webpack_require_3608828__(83266).crossTraceDefaults),\n  supplyLayoutDefaults: __nested_webpack_require_3608828__(5176),\n  calc: __nested_webpack_require_3608828__(52752),\n  crossTraceCalc: __nested_webpack_require_3608828__(70766),\n  plot: __nested_webpack_require_3608828__(30436),\n  style: (__nested_webpack_require_3608828__(55750).style),\n  hoverPoints: __nested_webpack_require_3608828__(61326),\n  eventData: __nested_webpack_require_3608828__(58593),\n  selectPoints: __nested_webpack_require_3608828__(81974),\n  moduleType: 'trace',\n  name: 'waterfall',\n  basePlotModule: __nested_webpack_require_3608828__(93612),\n  categories: ['bar-like', 'cartesian', 'svg', 'oriented', 'showLegend', 'zoomScale'],\n  meta: {}\n};\n\n/***/ }),\n\n/***/ 13494:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  waterfallmode: {\n    valType: 'enumerated',\n    values: ['group', 'overlay'],\n    dflt: 'group',\n    editType: 'calc'\n  },\n  waterfallgap: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    editType: 'calc'\n  },\n  waterfallgroupgap: {\n    valType: 'number',\n    min: 0,\n    max: 1,\n    dflt: 0,\n    editType: 'calc'\n  }\n};\n\n/***/ }),\n\n/***/ 5176:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3610132__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3610132__(71828);\nvar layoutAttributes = __nested_webpack_require_3610132__(13494);\nmodule.exports = function (layoutIn, layoutOut, fullData) {\n  var hasTraceType = false;\n  function coerce(attr, dflt) {\n    return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n  }\n  for (var i = 0; i < fullData.length; i++) {\n    var trace = fullData[i];\n    if (trace.visible && trace.type === 'waterfall') {\n      hasTraceType = true;\n      break;\n    }\n  }\n  if (hasTraceType) {\n    coerce('waterfallmode');\n    coerce('waterfallgap', 0.2);\n    coerce('waterfallgroupgap');\n  }\n};\n\n/***/ }),\n\n/***/ 30436:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3610838__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_3610838__(39898);\nvar Lib = __nested_webpack_require_3610838__(71828);\nvar Drawing = __nested_webpack_require_3610838__(91424);\nvar BADNUM = (__nested_webpack_require_3610838__(50606).BADNUM);\nvar barPlot = __nested_webpack_require_3610838__(17295);\nvar clearMinTextSize = (__nested_webpack_require_3610838__(72597).clearMinTextSize);\nmodule.exports = function plot(gd, plotinfo, cdModule, traceLayer) {\n  var fullLayout = gd._fullLayout;\n  clearMinTextSize('waterfall', fullLayout);\n  barPlot.plot(gd, plotinfo, cdModule, traceLayer, {\n    mode: fullLayout.waterfallmode,\n    norm: fullLayout.waterfallmode,\n    gap: fullLayout.waterfallgap,\n    groupgap: fullLayout.waterfallgroupgap\n  });\n  plotConnectors(gd, plotinfo, cdModule, traceLayer);\n};\nfunction plotConnectors(gd, plotinfo, cdModule, traceLayer) {\n  var xa = plotinfo.xaxis;\n  var ya = plotinfo.yaxis;\n  Lib.makeTraceGroups(traceLayer, cdModule, 'trace bars').each(function (cd) {\n    var plotGroup = d3.select(this);\n    var trace = cd[0].trace;\n    var group = Lib.ensureSingle(plotGroup, 'g', 'lines');\n    if (!trace.connector || !trace.connector.visible) {\n      group.remove();\n      return;\n    }\n    var isHorizontal = trace.orientation === 'h';\n    var mode = trace.connector.mode;\n    var connectors = group.selectAll('g.line').data(Lib.identity);\n    connectors.enter().append('g').classed('line', true);\n    connectors.exit().remove();\n    var len = connectors.size();\n    connectors.each(function (di, i) {\n      // don't draw lines between nulls\n      if (i !== len - 1 && !di.cNext) return;\n      var xy = getXY(di, xa, ya, isHorizontal);\n      var x = xy[0];\n      var y = xy[1];\n      var shape = '';\n      if (x[0] !== BADNUM && y[0] !== BADNUM && x[1] !== BADNUM && y[1] !== BADNUM) {\n        if (mode === 'spanning') {\n          if (!di.isSum && i > 0) {\n            if (isHorizontal) {\n              shape += 'M' + x[0] + ',' + y[1] + 'V' + y[0];\n            } else {\n              shape += 'M' + x[1] + ',' + y[0] + 'H' + x[0];\n            }\n          }\n        }\n        if (mode !== 'between') {\n          if (di.isSum || i < len - 1) {\n            if (isHorizontal) {\n              shape += 'M' + x[1] + ',' + y[0] + 'V' + y[1];\n            } else {\n              shape += 'M' + x[0] + ',' + y[1] + 'H' + x[1];\n            }\n          }\n        }\n        if (x[2] !== BADNUM && y[2] !== BADNUM) {\n          if (isHorizontal) {\n            shape += 'M' + x[1] + ',' + y[1] + 'V' + y[2];\n          } else {\n            shape += 'M' + x[1] + ',' + y[1] + 'H' + x[2];\n          }\n        }\n      }\n      if (shape === '') shape = 'M0,0Z';\n      Lib.ensureSingle(d3.select(this), 'path').attr('d', shape).call(Drawing.setClipUrl, plotinfo.layerClipId, gd);\n    });\n  });\n}\nfunction getXY(di, xa, ya, isHorizontal) {\n  var s = [];\n  var p = [];\n  var sAxis = isHorizontal ? xa : ya;\n  var pAxis = isHorizontal ? ya : xa;\n  s[0] = sAxis.c2p(di.s0, true);\n  p[0] = pAxis.c2p(di.p0, true);\n  s[1] = sAxis.c2p(di.s1, true);\n  p[1] = pAxis.c2p(di.p1, true);\n  s[2] = sAxis.c2p(di.nextS0, true);\n  p[2] = pAxis.c2p(di.nextP0, true);\n  return isHorizontal ? [s, p] : [p, s];\n}\n\n/***/ }),\n\n/***/ 55750:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3614049__) {\n\n\"use strict\";\n\n\nvar d3 = __nested_webpack_require_3614049__(39898);\nvar Drawing = __nested_webpack_require_3614049__(91424);\nvar Color = __nested_webpack_require_3614049__(7901);\nvar DESELECTDIM = (__nested_webpack_require_3614049__(37822).DESELECTDIM);\nvar barStyle = __nested_webpack_require_3614049__(16688);\nvar resizeText = (__nested_webpack_require_3614049__(72597).resizeText);\nvar styleTextPoints = barStyle.styleTextPoints;\nfunction style(gd, cd, sel) {\n  var s = sel ? sel : d3.select(gd).selectAll('g.waterfalllayer').selectAll('g.trace');\n  resizeText(gd, s, 'waterfall');\n  s.style('opacity', function (d) {\n    return d[0].trace.opacity;\n  });\n  s.each(function (d) {\n    var gTrace = d3.select(this);\n    var trace = d[0].trace;\n    gTrace.selectAll('.point > path').each(function (di) {\n      if (!di.isBlank) {\n        var cont = trace[di.dir].marker;\n        d3.select(this).call(Color.fill, cont.color).call(Color.stroke, cont.line.color).call(Drawing.dashLine, cont.line.dash, cont.line.width).style('opacity', trace.selectedpoints && !di.selected ? DESELECTDIM : 1);\n      }\n    });\n    styleTextPoints(gTrace, trace, gd);\n    gTrace.selectAll('.lines').each(function () {\n      var cont = trace.connector.line;\n      Drawing.lineGroupStyle(d3.select(this).selectAll('path'), cont.width, cont.color, cont.dash);\n    });\n  });\n}\nmodule.exports = {\n  style: style\n};\n\n/***/ }),\n\n/***/ 82887:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_3615444__) {\n\n\"use strict\";\n\n\nvar Axes = __nested_webpack_require_3615444__(89298);\nvar Lib = __nested_webpack_require_3615444__(71828);\nvar PlotSchema = __nested_webpack_require_3615444__(86281);\nvar pointsAccessorFunction = (__nested_webpack_require_3615444__(79344)/* .pointsAccessorFunction */ .p);\nvar BADNUM = (__nested_webpack_require_3615444__(50606).BADNUM);\nexports.moduleType = 'transform';\nexports.name = 'aggregate';\nvar attrs = exports.attributes = {\n  enabled: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc'\n  },\n  groups: {\n    // TODO: groupby should support string or array grouping this way too\n    // currently groupby only allows a grouping array\n    valType: 'string',\n    strict: true,\n    noBlank: true,\n    arrayOk: true,\n    dflt: 'x',\n    editType: 'calc'\n  },\n  aggregations: {\n    _isLinkedToArray: 'aggregation',\n    target: {\n      valType: 'string',\n      editType: 'calc'\n    },\n    func: {\n      valType: 'enumerated',\n      values: ['count', 'sum', 'avg', 'median', 'mode', 'rms', 'stddev', 'min', 'max', 'first', 'last', 'change', 'range'],\n      dflt: 'first',\n      editType: 'calc'\n    },\n    funcmode: {\n      valType: 'enumerated',\n      values: ['sample', 'population'],\n      dflt: 'sample',\n      editType: 'calc'\n    },\n    enabled: {\n      valType: 'boolean',\n      dflt: true,\n      editType: 'calc'\n    },\n    editType: 'calc'\n  },\n  editType: 'calc'\n};\nvar aggAttrs = attrs.aggregations;\n\n/**\n * Supply transform attributes defaults\n *\n * @param {object} transformIn\n *  object linked to trace.transforms[i] with 'func' set to exports.name\n * @param {object} traceOut\n *  the _fullData trace this transform applies to\n * @param {object} layout\n *  the plot's (not-so-full) layout\n * @param {object} traceIn\n *  the input data trace this transform applies to\n *\n * @return {object} transformOut\n *  copy of transformIn that contains attribute defaults\n */\nexports.supplyDefaults = function (transformIn, traceOut) {\n  var transformOut = {};\n  var i;\n  function coerce(attr, dflt) {\n    return Lib.coerce(transformIn, transformOut, attrs, attr, dflt);\n  }\n  var enabled = coerce('enabled');\n  if (!enabled) return transformOut;\n\n  /*\n   * Normally _arrayAttrs is calculated during doCalc, but that comes later.\n   * Anyway this can change due to *count* aggregations (see below) so it's not\n   * necessarily the same set.\n   *\n   * For performance we turn it into an object of truthy values\n   * we'll use 1 for arrays we haven't aggregated yet, 0 for finished arrays,\n   * as distinct from undefined which means this array isn't present in the input\n   * missing arrays can still be aggregate outputs for *count* aggregations.\n   */\n  var arrayAttrArray = PlotSchema.findArrayAttributes(traceOut);\n  var arrayAttrs = {};\n  for (i = 0; i < arrayAttrArray.length; i++) arrayAttrs[arrayAttrArray[i]] = 1;\n  var groups = coerce('groups');\n  if (!Array.isArray(groups)) {\n    if (!arrayAttrs[groups]) {\n      transformOut.enabled = false;\n      return transformOut;\n    }\n    arrayAttrs[groups] = 0;\n  }\n  var aggregationsIn = transformIn.aggregations || [];\n  var aggregationsOut = transformOut.aggregations = new Array(aggregationsIn.length);\n  var aggregationOut;\n  function coercei(attr, dflt) {\n    return Lib.coerce(aggregationsIn[i], aggregationOut, aggAttrs, attr, dflt);\n  }\n  for (i = 0; i < aggregationsIn.length; i++) {\n    aggregationOut = {\n      _index: i\n    };\n    var target = coercei('target');\n    var func = coercei('func');\n    var enabledi = coercei('enabled');\n\n    // add this aggregation to the output only if it's the first instance\n    // of a valid target attribute - or an unused target attribute with \"count\"\n    if (enabledi && target && (arrayAttrs[target] || func === 'count' && arrayAttrs[target] === undefined)) {\n      if (func === 'stddev') coercei('funcmode');\n      arrayAttrs[target] = 0;\n      aggregationsOut[i] = aggregationOut;\n    } else aggregationsOut[i] = {\n      enabled: false,\n      _index: i\n    };\n  }\n\n  // any array attributes we haven't yet covered, fill them with the default aggregation\n  for (i = 0; i < arrayAttrArray.length; i++) {\n    if (arrayAttrs[arrayAttrArray[i]]) {\n      aggregationsOut.push({\n        target: arrayAttrArray[i],\n        func: aggAttrs.func.dflt,\n        enabled: true,\n        _index: -1\n      });\n    }\n  }\n  return transformOut;\n};\nexports.calcTransform = function (gd, trace, opts) {\n  if (!opts.enabled) return;\n  var groups = opts.groups;\n  var groupArray = Lib.getTargetArray(trace, {\n    target: groups\n  });\n  if (!groupArray) return;\n  var i, vi, groupIndex, newGrouping;\n  var groupIndices = {};\n  var indexToPoints = {};\n  var groupings = [];\n  var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts);\n  var len = groupArray.length;\n  if (trace._length) len = Math.min(len, trace._length);\n  for (i = 0; i < len; i++) {\n    vi = groupArray[i];\n    groupIndex = groupIndices[vi];\n    if (groupIndex === undefined) {\n      groupIndices[vi] = groupings.length;\n      newGrouping = [i];\n      groupings.push(newGrouping);\n      indexToPoints[groupIndices[vi]] = originalPointsAccessor(i);\n    } else {\n      groupings[groupIndex].push(i);\n      indexToPoints[groupIndices[vi]] = (indexToPoints[groupIndices[vi]] || []).concat(originalPointsAccessor(i));\n    }\n  }\n  opts._indexToPoints = indexToPoints;\n  var aggregations = opts.aggregations;\n  for (i = 0; i < aggregations.length; i++) {\n    aggregateOneArray(gd, trace, groupings, aggregations[i]);\n  }\n  if (typeof groups === 'string') {\n    aggregateOneArray(gd, trace, groupings, {\n      target: groups,\n      func: 'first',\n      enabled: true\n    });\n  }\n  trace._length = groupings.length;\n};\nfunction aggregateOneArray(gd, trace, groupings, aggregation) {\n  if (!aggregation.enabled) return;\n  var attr = aggregation.target;\n  var targetNP = Lib.nestedProperty(trace, attr);\n  var arrayIn = targetNP.get();\n  var conversions = Axes.getDataConversions(gd, trace, attr, arrayIn);\n  var func = getAggregateFunction(aggregation, conversions);\n  var arrayOut = new Array(groupings.length);\n  for (var i = 0; i < groupings.length; i++) {\n    arrayOut[i] = func(arrayIn, groupings[i]);\n  }\n  targetNP.set(arrayOut);\n  if (aggregation.func === 'count') {\n    // count does not depend on an input array, so it's likely not part of _arrayAttrs yet\n    // but after this transform it most definitely *is* an array attribute.\n    Lib.pushUnique(trace._arrayAttrs, attr);\n  }\n}\nfunction getAggregateFunction(opts, conversions) {\n  var func = opts.func;\n  var d2c = conversions.d2c;\n  var c2d = conversions.c2d;\n  switch (func) {\n    // count, first, and last don't depend on anything about the data\n    // point back to pure functions for performance\n    case 'count':\n      return count;\n    case 'first':\n      return first;\n    case 'last':\n      return last;\n    case 'sum':\n      // This will produce output in all cases even though it's nonsensical\n      // for date or category data.\n      return function (array, indices) {\n        var total = 0;\n        for (var i = 0; i < indices.length; i++) {\n          var vi = d2c(array[indices[i]]);\n          if (vi !== BADNUM) total += vi;\n        }\n        return c2d(total);\n      };\n    case 'avg':\n      // Generally meaningless for category data but it still does something.\n      return function (array, indices) {\n        var total = 0;\n        var cnt = 0;\n        for (var i = 0; i < indices.length; i++) {\n          var vi = d2c(array[indices[i]]);\n          if (vi !== BADNUM) {\n            total += vi;\n            cnt++;\n          }\n        }\n        return cnt ? c2d(total / cnt) : BADNUM;\n      };\n    case 'min':\n      return function (array, indices) {\n        var out = Infinity;\n        for (var i = 0; i < indices.length; i++) {\n          var vi = d2c(array[indices[i]]);\n          if (vi !== BADNUM) out = Math.min(out, vi);\n        }\n        return out === Infinity ? BADNUM : c2d(out);\n      };\n    case 'max':\n      return function (array, indices) {\n        var out = -Infinity;\n        for (var i = 0; i < indices.length; i++) {\n          var vi = d2c(array[indices[i]]);\n          if (vi !== BADNUM) out = Math.max(out, vi);\n        }\n        return out === -Infinity ? BADNUM : c2d(out);\n      };\n    case 'range':\n      return function (array, indices) {\n        var min = Infinity;\n        var max = -Infinity;\n        for (var i = 0; i < indices.length; i++) {\n          var vi = d2c(array[indices[i]]);\n          if (vi !== BADNUM) {\n            min = Math.min(min, vi);\n            max = Math.max(max, vi);\n          }\n        }\n        return max === -Infinity || min === Infinity ? BADNUM : c2d(max - min);\n      };\n    case 'change':\n      return function (array, indices) {\n        var first = d2c(array[indices[0]]);\n        var last = d2c(array[indices[indices.length - 1]]);\n        return first === BADNUM || last === BADNUM ? BADNUM : c2d(last - first);\n      };\n    case 'median':\n      return function (array, indices) {\n        var sortCalc = [];\n        for (var i = 0; i < indices.length; i++) {\n          var vi = d2c(array[indices[i]]);\n          if (vi !== BADNUM) sortCalc.push(vi);\n        }\n        if (!sortCalc.length) return BADNUM;\n        sortCalc.sort(Lib.sorterAsc);\n        var mid = (sortCalc.length - 1) / 2;\n        return c2d((sortCalc[Math.floor(mid)] + sortCalc[Math.ceil(mid)]) / 2);\n      };\n    case 'mode':\n      return function (array, indices) {\n        var counts = {};\n        var maxCnt = 0;\n        var out = BADNUM;\n        for (var i = 0; i < indices.length; i++) {\n          var vi = d2c(array[indices[i]]);\n          if (vi !== BADNUM) {\n            var counti = counts[vi] = (counts[vi] || 0) + 1;\n            if (counti > maxCnt) {\n              maxCnt = counti;\n              out = vi;\n            }\n          }\n        }\n        return maxCnt ? c2d(out) : BADNUM;\n      };\n    case 'rms':\n      return function (array, indices) {\n        var total = 0;\n        var cnt = 0;\n        for (var i = 0; i < indices.length; i++) {\n          var vi = d2c(array[indices[i]]);\n          if (vi !== BADNUM) {\n            total += vi * vi;\n            cnt++;\n          }\n        }\n        return cnt ? c2d(Math.sqrt(total / cnt)) : BADNUM;\n      };\n    case 'stddev':\n      return function (array, indices) {\n        // balance numerical stability with performance:\n        // so that we call d2c once per element but don't need to\n        // store them, reference all to the first element\n        var total = 0;\n        var total2 = 0;\n        var cnt = 1;\n        var v0 = BADNUM;\n        var i;\n        for (i = 0; i < indices.length && v0 === BADNUM; i++) {\n          v0 = d2c(array[indices[i]]);\n        }\n        if (v0 === BADNUM) return BADNUM;\n        for (; i < indices.length; i++) {\n          var vi = d2c(array[indices[i]]);\n          if (vi !== BADNUM) {\n            var dv = vi - v0;\n            total += dv;\n            total2 += dv * dv;\n            cnt++;\n          }\n        }\n\n        // This is population std dev, if we want sample std dev\n        // we would need (...) / (cnt - 1)\n        // Also note there's no c2d here - that means for dates the result\n        // is a number of milliseconds, and for categories it's a number\n        // of category differences, which is not generically meaningful but\n        // as in other cases we don't forbid it.\n        var norm = opts.funcmode === 'sample' ? cnt - 1 : cnt;\n        // this is debatable: should a count of 1 return sample stddev of\n        // 0 or undefined?\n        if (!norm) return 0;\n        return Math.sqrt((total2 - total * total / cnt) / norm);\n      };\n  }\n}\nfunction count(array, indices) {\n  return indices.length;\n}\nfunction first(array, indices) {\n  return array[indices[0]];\n}\nfunction last(array, indices) {\n  return array[indices[indices.length - 1]];\n}\n\n/***/ }),\n\n/***/ 14382:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_3627351__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3627351__(71828);\nvar Registry = __nested_webpack_require_3627351__(73972);\nvar Axes = __nested_webpack_require_3627351__(89298);\nvar pointsAccessorFunction = (__nested_webpack_require_3627351__(79344)/* .pointsAccessorFunction */ .p);\nvar filterOps = __nested_webpack_require_3627351__(74808);\nvar COMPARISON_OPS = filterOps.COMPARISON_OPS;\nvar INTERVAL_OPS = filterOps.INTERVAL_OPS;\nvar SET_OPS = filterOps.SET_OPS;\nexports.moduleType = 'transform';\nexports.name = 'filter';\nexports.attributes = {\n  enabled: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc'\n  },\n  target: {\n    valType: 'string',\n    strict: true,\n    noBlank: true,\n    arrayOk: true,\n    dflt: 'x',\n    editType: 'calc'\n  },\n  operation: {\n    valType: 'enumerated',\n    values: [].concat(COMPARISON_OPS).concat(INTERVAL_OPS).concat(SET_OPS),\n    dflt: '=',\n    editType: 'calc'\n  },\n  value: {\n    valType: 'any',\n    dflt: 0,\n    editType: 'calc'\n  },\n  preservegaps: {\n    valType: 'boolean',\n    dflt: false,\n    editType: 'calc'\n  },\n  editType: 'calc'\n};\nexports.supplyDefaults = function (transformIn) {\n  var transformOut = {};\n  function coerce(attr, dflt) {\n    return Lib.coerce(transformIn, transformOut, exports.attributes, attr, dflt);\n  }\n  var enabled = coerce('enabled');\n  if (enabled) {\n    var target = coerce('target');\n    if (Lib.isArrayOrTypedArray(target) && target.length === 0) {\n      transformOut.enabled = false;\n      return transformOut;\n    }\n    coerce('preservegaps');\n    coerce('operation');\n    coerce('value');\n    var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleDefaults');\n    handleCalendarDefaults(transformIn, transformOut, 'valuecalendar', null);\n    handleCalendarDefaults(transformIn, transformOut, 'targetcalendar', null);\n  }\n  return transformOut;\n};\nexports.calcTransform = function (gd, trace, opts) {\n  if (!opts.enabled) return;\n  var targetArray = Lib.getTargetArray(trace, opts);\n  if (!targetArray) return;\n  var target = opts.target;\n  var len = targetArray.length;\n  if (trace._length) len = Math.min(len, trace._length);\n  var targetCalendar = opts.targetcalendar;\n  var arrayAttrs = trace._arrayAttrs;\n  var preservegaps = opts.preservegaps;\n\n  // even if you provide targetcalendar, if target is a string and there\n  // is a calendar attribute matching target it will get used instead.\n  if (typeof target === 'string') {\n    var attrTargetCalendar = Lib.nestedProperty(trace, target + 'calendar').get();\n    if (attrTargetCalendar) targetCalendar = attrTargetCalendar;\n  }\n  var d2c = Axes.getDataToCoordFunc(gd, trace, target, targetArray);\n  var filterFunc = getFilterFunc(opts, d2c, targetCalendar);\n  var originalArrays = {};\n  var indexToPoints = {};\n  var index = 0;\n  function forAllAttrs(fn, index) {\n    for (var j = 0; j < arrayAttrs.length; j++) {\n      var np = Lib.nestedProperty(trace, arrayAttrs[j]);\n      fn(np, index);\n    }\n  }\n  var initFn;\n  var fillFn;\n  if (preservegaps) {\n    initFn = function (np) {\n      originalArrays[np.astr] = Lib.extendDeep([], np.get());\n      np.set(new Array(len));\n    };\n    fillFn = function (np, index) {\n      var val = originalArrays[np.astr][index];\n      np.get()[index] = val;\n    };\n  } else {\n    initFn = function (np) {\n      originalArrays[np.astr] = Lib.extendDeep([], np.get());\n      np.set([]);\n    };\n    fillFn = function (np, index) {\n      var val = originalArrays[np.astr][index];\n      np.get().push(val);\n    };\n  }\n\n  // copy all original array attribute values, and clear arrays in trace\n  forAllAttrs(initFn);\n  var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts);\n\n  // loop through filter array, fill trace arrays if passed\n  for (var i = 0; i < len; i++) {\n    var passed = filterFunc(targetArray[i]);\n    if (passed) {\n      forAllAttrs(fillFn, i);\n      indexToPoints[index++] = originalPointsAccessor(i);\n    } else if (preservegaps) index++;\n  }\n  opts._indexToPoints = indexToPoints;\n  trace._length = index;\n};\nfunction getFilterFunc(opts, d2c, targetCalendar) {\n  var operation = opts.operation;\n  var value = opts.value;\n  var hasArrayValue = Array.isArray(value);\n  function isOperationIn(array) {\n    return array.indexOf(operation) !== -1;\n  }\n  var d2cValue = function (v) {\n    return d2c(v, 0, opts.valuecalendar);\n  };\n  var d2cTarget = function (v) {\n    return d2c(v, 0, targetCalendar);\n  };\n  var coercedValue;\n  if (isOperationIn(COMPARISON_OPS)) {\n    coercedValue = hasArrayValue ? d2cValue(value[0]) : d2cValue(value);\n  } else if (isOperationIn(INTERVAL_OPS)) {\n    coercedValue = hasArrayValue ? [d2cValue(value[0]), d2cValue(value[1])] : [d2cValue(value), d2cValue(value)];\n  } else if (isOperationIn(SET_OPS)) {\n    coercedValue = hasArrayValue ? value.map(d2cValue) : [d2cValue(value)];\n  }\n  switch (operation) {\n    case '=':\n      return function (v) {\n        return d2cTarget(v) === coercedValue;\n      };\n    case '!=':\n      return function (v) {\n        return d2cTarget(v) !== coercedValue;\n      };\n    case '<':\n      return function (v) {\n        return d2cTarget(v) < coercedValue;\n      };\n    case '<=':\n      return function (v) {\n        return d2cTarget(v) <= coercedValue;\n      };\n    case '>':\n      return function (v) {\n        return d2cTarget(v) > coercedValue;\n      };\n    case '>=':\n      return function (v) {\n        return d2cTarget(v) >= coercedValue;\n      };\n    case '[]':\n      return function (v) {\n        var cv = d2cTarget(v);\n        return cv >= coercedValue[0] && cv <= coercedValue[1];\n      };\n    case '()':\n      return function (v) {\n        var cv = d2cTarget(v);\n        return cv > coercedValue[0] && cv < coercedValue[1];\n      };\n    case '[)':\n      return function (v) {\n        var cv = d2cTarget(v);\n        return cv >= coercedValue[0] && cv < coercedValue[1];\n      };\n    case '(]':\n      return function (v) {\n        var cv = d2cTarget(v);\n        return cv > coercedValue[0] && cv <= coercedValue[1];\n      };\n    case '][':\n      return function (v) {\n        var cv = d2cTarget(v);\n        return cv <= coercedValue[0] || cv >= coercedValue[1];\n      };\n    case ')(':\n      return function (v) {\n        var cv = d2cTarget(v);\n        return cv < coercedValue[0] || cv > coercedValue[1];\n      };\n    case '](':\n      return function (v) {\n        var cv = d2cTarget(v);\n        return cv <= coercedValue[0] || cv > coercedValue[1];\n      };\n    case ')[':\n      return function (v) {\n        var cv = d2cTarget(v);\n        return cv < coercedValue[0] || cv >= coercedValue[1];\n      };\n    case '{}':\n      return function (v) {\n        return coercedValue.indexOf(d2cTarget(v)) !== -1;\n      };\n    case '}{':\n      return function (v) {\n        return coercedValue.indexOf(d2cTarget(v)) === -1;\n      };\n  }\n}\n\n/***/ }),\n\n/***/ 43102:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_3634218__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3634218__(71828);\nvar PlotSchema = __nested_webpack_require_3634218__(86281);\nvar Plots = __nested_webpack_require_3634218__(74875);\nvar pointsAccessorFunction = (__nested_webpack_require_3634218__(79344)/* .pointsAccessorFunction */ .p);\nexports.moduleType = 'transform';\nexports.name = 'groupby';\nexports.attributes = {\n  enabled: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc'\n  },\n  groups: {\n    valType: 'data_array',\n    dflt: [],\n    editType: 'calc'\n  },\n  nameformat: {\n    valType: 'string',\n    editType: 'calc'\n  },\n  styles: {\n    _isLinkedToArray: 'style',\n    target: {\n      valType: 'string',\n      editType: 'calc'\n    },\n    value: {\n      valType: 'any',\n      dflt: {},\n      editType: 'calc',\n      _compareAsJSON: true\n    },\n    editType: 'calc'\n  },\n  editType: 'calc'\n};\n\n/**\n * Supply transform attributes defaults\n *\n * @param {object} transformIn\n *  object linked to trace.transforms[i] with 'type' set to exports.name\n * @param {object} traceOut\n *  the _fullData trace this transform applies to\n * @param {object} layout\n *  the plot's (not-so-full) layout\n * @param {object} traceIn\n *  the input data trace this transform applies to\n *\n * @return {object} transformOut\n *  copy of transformIn that contains attribute defaults\n */\nexports.supplyDefaults = function (transformIn, traceOut, layout) {\n  var i;\n  var transformOut = {};\n  function coerce(attr, dflt) {\n    return Lib.coerce(transformIn, transformOut, exports.attributes, attr, dflt);\n  }\n  var enabled = coerce('enabled');\n  if (!enabled) return transformOut;\n  coerce('groups');\n  coerce('nameformat', layout._dataLength > 1 ? '%{group} (%{trace})' : '%{group}');\n  var styleIn = transformIn.styles;\n  var styleOut = transformOut.styles = [];\n  if (styleIn) {\n    for (i = 0; i < styleIn.length; i++) {\n      var thisStyle = styleOut[i] = {};\n      Lib.coerce(styleIn[i], styleOut[i], exports.attributes.styles, 'target');\n      var value = Lib.coerce(styleIn[i], styleOut[i], exports.attributes.styles, 'value');\n\n      // so that you can edit value in place and have Plotly.react notice it, or\n      // rebuild it every time and have Plotly.react NOT think it changed:\n      // use _compareAsJSON to say we should diff the _JSON_value\n      if (Lib.isPlainObject(value)) thisStyle.value = Lib.extendDeep({}, value);else if (value) delete thisStyle.value;\n    }\n  }\n  return transformOut;\n};\n\n/**\n * Apply transform !!!\n *\n * @param {array} data\n *  array of transformed traces (is [fullTrace] upon first transform)\n *\n * @param {object} state\n *  state object which includes:\n *      - transform {object} full transform attributes\n *      - fullTrace {object} full trace object which is being transformed\n *      - fullData {array} full pre-transform(s) data array\n *      - layout {object} the plot's (not-so-full) layout\n *\n * @return {object} newData\n *  array of transformed traces\n */\nexports.transform = function (data, state) {\n  var newTraces, i, j;\n  var newData = [];\n  for (i = 0; i < data.length; i++) {\n    newTraces = transformOne(data[i], state);\n    for (j = 0; j < newTraces.length; j++) {\n      newData.push(newTraces[j]);\n    }\n  }\n  return newData;\n};\nfunction transformOne(trace, state) {\n  var i, j, k, attr, srcArray, groupName, newTrace, transforms, arrayLookup;\n  var groupNameObj;\n  var opts = state.transform;\n  var transformIndex = state.transformIndex;\n  var groups = trace.transforms[transformIndex].groups;\n  var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts);\n  if (!Lib.isArrayOrTypedArray(groups) || groups.length === 0) {\n    return [trace];\n  }\n  var groupNames = Lib.filterUnique(groups);\n  var newData = new Array(groupNames.length);\n  var len = groups.length;\n  var arrayAttrs = PlotSchema.findArrayAttributes(trace);\n  var styles = opts.styles || [];\n  var styleLookup = {};\n  for (i = 0; i < styles.length; i++) {\n    styleLookup[styles[i].target] = styles[i].value;\n  }\n  if (opts.styles) {\n    groupNameObj = Lib.keyedContainer(opts, 'styles', 'target', 'value.name');\n  }\n\n  // An index to map group name --> expanded trace index\n  var indexLookup = {};\n  var indexCnts = {};\n  for (i = 0; i < groupNames.length; i++) {\n    groupName = groupNames[i];\n    indexLookup[groupName] = i;\n    indexCnts[groupName] = 0;\n\n    // Start with a deep extend that just copies array references.\n    newTrace = newData[i] = Lib.extendDeepNoArrays({}, trace);\n    newTrace._group = groupName;\n    newTrace.transforms[transformIndex]._indexToPoints = {};\n    var suppliedName = null;\n    if (groupNameObj) {\n      suppliedName = groupNameObj.get(groupName);\n    }\n    if (suppliedName || suppliedName === '') {\n      newTrace.name = suppliedName;\n    } else {\n      newTrace.name = Lib.templateString(opts.nameformat, {\n        trace: trace.name,\n        group: groupName\n      });\n    }\n\n    // In order for groups to apply correctly to other transform data (e.g.\n    // a filter transform), we have to break the connection and clone the\n    // transforms so that each group writes grouped values into a different\n    // destination. This function does not break the array reference\n    // connection between the split transforms it creates. That's handled in\n    // initialize, which creates a new empty array for each arrayAttr.\n    transforms = newTrace.transforms;\n    newTrace.transforms = [];\n    for (j = 0; j < transforms.length; j++) {\n      newTrace.transforms[j] = Lib.extendDeepNoArrays({}, transforms[j]);\n    }\n\n    // Initialize empty arrays for the arrayAttrs, to be split in the next step\n    for (j = 0; j < arrayAttrs.length; j++) {\n      Lib.nestedProperty(newTrace, arrayAttrs[j]).set([]);\n    }\n  }\n\n  // For each array attribute including those nested inside this and other\n  // transforms (small note that we technically only need to do this for\n  // transforms that have not yet been applied):\n  for (k = 0; k < arrayAttrs.length; k++) {\n    attr = arrayAttrs[k];\n\n    // Cache all the arrays to which we'll push:\n    for (j = 0, arrayLookup = []; j < groupNames.length; j++) {\n      arrayLookup[j] = Lib.nestedProperty(newData[j], attr).get();\n    }\n\n    // Get the input data:\n    srcArray = Lib.nestedProperty(trace, attr).get();\n\n    // Send each data point to the appropriate expanded trace:\n    for (j = 0; j < len; j++) {\n      // Map group data --> trace index --> array and push data onto it\n      arrayLookup[indexLookup[groups[j]]].push(srcArray[j]);\n    }\n  }\n  for (j = 0; j < len; j++) {\n    newTrace = newData[indexLookup[groups[j]]];\n    var indexToPoints = newTrace.transforms[transformIndex]._indexToPoints;\n    indexToPoints[indexCnts[groups[j]]] = originalPointsAccessor(j);\n    indexCnts[groups[j]]++;\n  }\n  for (i = 0; i < groupNames.length; i++) {\n    groupName = groupNames[i];\n    newTrace = newData[i];\n    Plots.clearExpandedTraceDefaultColors(newTrace);\n\n    // there's no need to coerce styleLookup[groupName] here\n    // as another round of supplyDefaults is done on the transformed traces\n    newTrace = Lib.extendDeepNoArrays(newTrace, styleLookup[groupName] || {});\n  }\n  return newData;\n}\n\n/***/ }),\n\n/***/ 79344:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\nexports.p = function (transforms, opts) {\n  var tr;\n  var prevIndexToPoints;\n  for (var i = 0; i < transforms.length; i++) {\n    tr = transforms[i];\n    if (tr === opts) break;\n    if (!tr._indexToPoints || tr.enabled === false) continue;\n    prevIndexToPoints = tr._indexToPoints;\n  }\n  var originalPointsAccessor = prevIndexToPoints ? function (i) {\n    return prevIndexToPoints[i];\n  } : function (i) {\n    return [i];\n  };\n  return originalPointsAccessor;\n};\n\n/***/ }),\n\n/***/ 32275:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_3641982__) {\n\n\"use strict\";\n\n\nvar Lib = __nested_webpack_require_3641982__(71828);\nvar Axes = __nested_webpack_require_3641982__(89298);\nvar pointsAccessorFunction = (__nested_webpack_require_3641982__(79344)/* .pointsAccessorFunction */ .p);\nvar BADNUM = (__nested_webpack_require_3641982__(50606).BADNUM);\nexports.moduleType = 'transform';\nexports.name = 'sort';\nexports.attributes = {\n  enabled: {\n    valType: 'boolean',\n    dflt: true,\n    editType: 'calc'\n  },\n  target: {\n    valType: 'string',\n    strict: true,\n    noBlank: true,\n    arrayOk: true,\n    dflt: 'x',\n    editType: 'calc'\n  },\n  order: {\n    valType: 'enumerated',\n    values: ['ascending', 'descending'],\n    dflt: 'ascending',\n    editType: 'calc'\n  },\n  editType: 'calc'\n};\nexports.supplyDefaults = function (transformIn) {\n  var transformOut = {};\n  function coerce(attr, dflt) {\n    return Lib.coerce(transformIn, transformOut, exports.attributes, attr, dflt);\n  }\n  var enabled = coerce('enabled');\n  if (enabled) {\n    coerce('target');\n    coerce('order');\n  }\n  return transformOut;\n};\nexports.calcTransform = function (gd, trace, opts) {\n  if (!opts.enabled) return;\n  var targetArray = Lib.getTargetArray(trace, opts);\n  if (!targetArray) return;\n  var target = opts.target;\n  var len = targetArray.length;\n  if (trace._length) len = Math.min(len, trace._length);\n  var arrayAttrs = trace._arrayAttrs;\n  var d2c = Axes.getDataToCoordFunc(gd, trace, target, targetArray);\n  var indices = getIndices(opts, targetArray, d2c, len);\n  var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts);\n  var indexToPoints = {};\n  var i, j;\n  for (i = 0; i < arrayAttrs.length; i++) {\n    var np = Lib.nestedProperty(trace, arrayAttrs[i]);\n    var arrayOld = np.get();\n    var arrayNew = new Array(len);\n    for (j = 0; j < len; j++) {\n      arrayNew[j] = arrayOld[indices[j]];\n    }\n    np.set(arrayNew);\n  }\n  for (j = 0; j < len; j++) {\n    indexToPoints[j] = originalPointsAccessor(indices[j]);\n  }\n  opts._indexToPoints = indexToPoints;\n  trace._length = len;\n};\nfunction getIndices(opts, targetArray, d2c, len) {\n  var sortedArray = new Array(len);\n  var indices = new Array(len);\n  var i;\n  for (i = 0; i < len; i++) {\n    sortedArray[i] = {\n      v: targetArray[i],\n      i: i\n    };\n  }\n  sortedArray.sort(getSortFunc(opts, d2c));\n  for (i = 0; i < len; i++) {\n    indices[i] = sortedArray[i].i;\n  }\n  return indices;\n}\nfunction getSortFunc(opts, d2c) {\n  switch (opts.order) {\n    case 'ascending':\n      return function (a, b) {\n        var ac = d2c(a.v);\n        var bc = d2c(b.v);\n        if (ac === BADNUM) {\n          return 1;\n        }\n        if (bc === BADNUM) {\n          return -1;\n        }\n        return ac - bc;\n      };\n    case 'descending':\n      return function (a, b) {\n        var ac = d2c(a.v);\n        var bc = d2c(b.v);\n        if (ac === BADNUM) {\n          return 1;\n        }\n        if (bc === BADNUM) {\n          return -1;\n        }\n        return bc - ac;\n      };\n  }\n}\n\n/***/ }),\n\n/***/ 11506:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\n// package version injected by `npm run preprocess`\nexports.version = '2.18.1';\n\n/***/ }),\n\n/***/ 9330:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_3645179__) {\n\n/* provided dependency */ var process = __nested_webpack_require_3645179__(90386);\n(function webpackUniversalModuleDefinition(root,factory){if(true)module.exports=factory();else {}})(self,function(){return(/******/function(){// webpackBootstrap\n/******/var __webpack_modules__={/***/7386:/***/function(module,__unused_webpack_exports,__nested_webpack_require_451__){module.exports={alpha_shape:__nested_webpack_require_451__(2350),convex_hull:__nested_webpack_require_451__(5537),delaunay_triangulate:__nested_webpack_require_451__(4419),gl_cone3d:__nested_webpack_require_451__(1140),gl_error3d:__nested_webpack_require_451__(3110),gl_heatmap2d:__nested_webpack_require_451__(6386),gl_line3d:__nested_webpack_require_451__(6086),gl_mesh3d:__nested_webpack_require_451__(8116),gl_plot2d:__nested_webpack_require_451__(2117),gl_plot3d:__nested_webpack_require_451__(1059),gl_pointcloud2d:__nested_webpack_require_451__(8271),gl_scatter3d:__nested_webpack_require_451__(2182),gl_select_box:__nested_webpack_require_451__(6623),gl_spikes2d:__nested_webpack_require_451__(3050),gl_streamtube3d:__nested_webpack_require_451__(7307),gl_surface3d:__nested_webpack_require_451__(3754),ndarray:__nested_webpack_require_451__(5050),ndarray_linear_interpolate:__nested_webpack_require_451__(3581)};/***/},/***/2146:/***/function(__unused_webpack_module,exports,__nested_webpack_require_1258__){\"use strict\";var __webpack_unused_export__;/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */ /* eslint-disable no-proto */function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a 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);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);Object.defineProperty(Constructor,\"prototype\",{writable:false});return Constructor;}function _inherits(subClass,superClass){if(typeof superClass!==\"function\"&&superClass!==null){throw new TypeError(\"Super expression must either be null or a function\");}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});Object.defineProperty(subClass,\"prototype\",{writable:false});if(superClass)_setPrototypeOf(subClass,superClass);}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}function _createSuper(Derived){var hasNativeReflectConstruct=_isNativeReflectConstruct();return function _createSuperInternal(){var Super=_getPrototypeOf(Derived),result;if(hasNativeReflectConstruct){var NewTarget=_getPrototypeOf(this).constructor;result=Reflect.construct(Super,arguments,NewTarget);}else{result=Super.apply(this,arguments);}return _possibleConstructorReturn(this,result);};}function _possibleConstructorReturn(self,call){if(call&&(_typeof(call)===\"object\"||typeof call===\"function\")){return call;}else if(call!==void 0){throw new TypeError(\"Derived constructors may only return object or undefined\");}return _assertThisInitialized(self);}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");}return self;}function _isNativeReflectConstruct(){if(typeof Reflect===\"undefined\"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy===\"function\")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true;}catch(e){return false;}}function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o);};return _getPrototypeOf(o);}function _typeof(obj){\"@babel/helpers - typeof\";return _typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(obj){return typeof obj;}:function(obj){return obj&&\"function\"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;},_typeof(obj);}var base64=__nested_webpack_require_1258__(3910);var ieee754=__nested_webpack_require_1258__(3187);var customInspectSymbol=typeof Symbol==='function'&&typeof Symbol['for']==='function'// eslint-disable-line dot-notation\n?Symbol['for']('nodejs.util.inspect.custom')// eslint-disable-line dot-notation\n:null;exports.lW=Buffer;__webpack_unused_export__=SlowBuffer;exports.h2=50;var K_MAX_LENGTH=0x7fffffff;__webpack_unused_export__=K_MAX_LENGTH;/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n *               implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */Buffer.TYPED_ARRAY_SUPPORT=typedArraySupport();if(!Buffer.TYPED_ARRAY_SUPPORT&&typeof console!=='undefined'&&typeof console.error==='function'){console.error('This browser lacks typed array (Uint8Array) support which is required by '+'`buffer` v5.x. Use `buffer` v4.x if you require old browser support.');}function typedArraySupport(){// Can typed array instances can be augmented?\ntry{var arr=new Uint8Array(1);var proto={foo:function foo(){return 42;}};Object.setPrototypeOf(proto,Uint8Array.prototype);Object.setPrototypeOf(arr,proto);return arr.foo()===42;}catch(e){return false;}}Object.defineProperty(Buffer.prototype,'parent',{enumerable:true,get:function get(){if(!Buffer.isBuffer(this))return undefined;return this.buffer;}});Object.defineProperty(Buffer.prototype,'offset',{enumerable:true,get:function get(){if(!Buffer.isBuffer(this))return undefined;return this.byteOffset;}});function createBuffer(length){if(length>K_MAX_LENGTH){throw new RangeError('The value \"'+length+'\" is invalid for option \"size\"');}// Return an augmented `Uint8Array` instance\nvar buf=new Uint8Array(length);Object.setPrototypeOf(buf,Buffer.prototype);return buf;}/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */function Buffer(arg,encodingOrOffset,length){// Common case.\nif(typeof arg==='number'){if(typeof encodingOrOffset==='string'){throw new TypeError('The \"string\" argument must be of type string. Received type number');}return allocUnsafe(arg);}return from(arg,encodingOrOffset,length);}Buffer.poolSize=8192;// not used by this implementation\nfunction from(value,encodingOrOffset,length){if(typeof value==='string'){return fromString(value,encodingOrOffset);}if(ArrayBuffer.isView(value)){return fromArrayView(value);}if(value==null){throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, '+'or Array-like Object. Received type '+_typeof(value));}if(isInstance(value,ArrayBuffer)||value&&isInstance(value.buffer,ArrayBuffer)){return fromArrayBuffer(value,encodingOrOffset,length);}if(typeof SharedArrayBuffer!=='undefined'&&(isInstance(value,SharedArrayBuffer)||value&&isInstance(value.buffer,SharedArrayBuffer))){return fromArrayBuffer(value,encodingOrOffset,length);}if(typeof value==='number'){throw new TypeError('The \"value\" argument must not be of type number. Received type number');}var valueOf=value.valueOf&&value.valueOf();if(valueOf!=null&&valueOf!==value){return Buffer.from(valueOf,encodingOrOffset,length);}var b=fromObject(value);if(b)return b;if(typeof Symbol!=='undefined'&&Symbol.toPrimitive!=null&&typeof value[Symbol.toPrimitive]==='function'){return Buffer.from(value[Symbol.toPrimitive]('string'),encodingOrOffset,length);}throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, '+'or Array-like Object. Received type '+_typeof(value));}/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/Buffer.from=function(value,encodingOrOffset,length){return from(value,encodingOrOffset,length);};// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype,Uint8Array.prototype);Object.setPrototypeOf(Buffer,Uint8Array);function assertSize(size){if(typeof size!=='number'){throw new TypeError('\"size\" argument must be of type number');}else if(size<0){throw new RangeError('The value \"'+size+'\" is invalid for option \"size\"');}}function alloc(size,fill,encoding){assertSize(size);if(size<=0){return createBuffer(size);}if(fill!==undefined){// Only pay attention to encoding if it's a string. This\n// prevents accidentally sending in a number that would\n// be interpreted as a start offset.\nreturn typeof encoding==='string'?createBuffer(size).fill(fill,encoding):createBuffer(size).fill(fill);}return createBuffer(size);}/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/Buffer.alloc=function(size,fill,encoding){return alloc(size,fill,encoding);};function allocUnsafe(size){assertSize(size);return createBuffer(size<0?0:checked(size)|0);}/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */Buffer.allocUnsafe=function(size){return allocUnsafe(size);};/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */Buffer.allocUnsafeSlow=function(size){return allocUnsafe(size);};function fromString(string,encoding){if(typeof encoding!=='string'||encoding===''){encoding='utf8';}if(!Buffer.isEncoding(encoding)){throw new TypeError('Unknown encoding: '+encoding);}var length=byteLength(string,encoding)|0;var buf=createBuffer(length);var actual=buf.write(string,encoding);if(actual!==length){// Writing a hex string, for example, that contains invalid characters will\n// cause everything after the first invalid character to be ignored. (e.g.\n// 'abxxcd' will be treated as 'ab')\nbuf=buf.slice(0,actual);}return buf;}function fromArrayLike(array){var length=array.length<0?0:checked(array.length)|0;var buf=createBuffer(length);for(var i=0;i<length;i+=1){buf[i]=array[i]&255;}return buf;}function fromArrayView(arrayView){if(isInstance(arrayView,Uint8Array)){var copy=new Uint8Array(arrayView);return fromArrayBuffer(copy.buffer,copy.byteOffset,copy.byteLength);}return fromArrayLike(arrayView);}function fromArrayBuffer(array,byteOffset,length){if(byteOffset<0||array.byteLength<byteOffset){throw new RangeError('\"offset\" is outside of buffer bounds');}if(array.byteLength<byteOffset+(length||0)){throw new RangeError('\"length\" is outside of buffer bounds');}var buf;if(byteOffset===undefined&&length===undefined){buf=new Uint8Array(array);}else if(length===undefined){buf=new Uint8Array(array,byteOffset);}else{buf=new Uint8Array(array,byteOffset,length);}// Return an augmented `Uint8Array` instance\nObject.setPrototypeOf(buf,Buffer.prototype);return buf;}function fromObject(obj){if(Buffer.isBuffer(obj)){var len=checked(obj.length)|0;var buf=createBuffer(len);if(buf.length===0){return buf;}obj.copy(buf,0,0,len);return buf;}if(obj.length!==undefined){if(typeof obj.length!=='number'||numberIsNaN(obj.length)){return createBuffer(0);}return fromArrayLike(obj);}if(obj.type==='Buffer'&&Array.isArray(obj.data)){return fromArrayLike(obj.data);}}function checked(length){// Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n// length is NaN (which is otherwise coerced to zero.)\nif(length>=K_MAX_LENGTH){throw new RangeError('Attempt to allocate Buffer larger than maximum '+'size: 0x'+K_MAX_LENGTH.toString(16)+' bytes');}return length|0;}function SlowBuffer(length){if(+length!=length){// eslint-disable-line eqeqeq\nlength=0;}return Buffer.alloc(+length);}Buffer.isBuffer=function isBuffer(b){return b!=null&&b._isBuffer===true&&b!==Buffer.prototype;// so Buffer.isBuffer(Buffer.prototype) will be false\n};Buffer.compare=function compare(a,b){if(isInstance(a,Uint8Array))a=Buffer.from(a,a.offset,a.byteLength);if(isInstance(b,Uint8Array))b=Buffer.from(b,b.offset,b.byteLength);if(!Buffer.isBuffer(a)||!Buffer.isBuffer(b)){throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');}if(a===b)return 0;var x=a.length;var y=b.length;for(var i=0,len=Math.min(x,y);i<len;++i){if(a[i]!==b[i]){x=a[i];y=b[i];break;}}if(x<y)return-1;if(y<x)return 1;return 0;};Buffer.isEncoding=function isEncoding(encoding){switch(String(encoding).toLowerCase()){case'hex':case'utf8':case'utf-8':case'ascii':case'latin1':case'binary':case'base64':case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return true;default:return false;}};Buffer.concat=function concat(list,length){if(!Array.isArray(list)){throw new TypeError('\"list\" argument must be an Array of Buffers');}if(list.length===0){return Buffer.alloc(0);}var i;if(length===undefined){length=0;for(i=0;i<list.length;++i){length+=list[i].length;}}var buffer=Buffer.allocUnsafe(length);var pos=0;for(i=0;i<list.length;++i){var buf=list[i];if(isInstance(buf,Uint8Array)){if(pos+buf.length>buffer.length){if(!Buffer.isBuffer(buf))buf=Buffer.from(buf);buf.copy(buffer,pos);}else{Uint8Array.prototype.set.call(buffer,buf,pos);}}else if(!Buffer.isBuffer(buf)){throw new TypeError('\"list\" argument must be an Array of Buffers');}else{buf.copy(buffer,pos);}pos+=buf.length;}return buffer;};function byteLength(string,encoding){if(Buffer.isBuffer(string)){return string.length;}if(ArrayBuffer.isView(string)||isInstance(string,ArrayBuffer)){return string.byteLength;}if(typeof string!=='string'){throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. '+'Received type '+_typeof(string));}var len=string.length;var mustMatch=arguments.length>2&&arguments[2]===true;if(!mustMatch&&len===0)return 0;// Use a for loop to avoid recursion\nvar loweredCase=false;for(;;){switch(encoding){case'ascii':case'latin1':case'binary':return len;case'utf8':case'utf-8':return utf8ToBytes(string).length;case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return len*2;case'hex':return len>>>1;case'base64':return base64ToBytes(string).length;default:if(loweredCase){return mustMatch?-1:utf8ToBytes(string).length;// assume utf8\n}encoding=(''+encoding).toLowerCase();loweredCase=true;}}}Buffer.byteLength=byteLength;function slowToString(encoding,start,end){var loweredCase=false;// No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n// property of a typed array.\n// This behaves neither like String nor Uint8Array in that we set start/end\n// to their upper/lower bounds if the value passed is out of range.\n// undefined is handled specially as per ECMA-262 6th Edition,\n// Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\nif(start===undefined||start<0){start=0;}// Return early if start > this.length. Done here to prevent potential uint32\n// coercion fail below.\nif(start>this.length){return'';}if(end===undefined||end>this.length){end=this.length;}if(end<=0){return'';}// Force coercion to uint32. This will also coerce falsey/NaN values to 0.\nend>>>=0;start>>>=0;if(end<=start){return'';}if(!encoding)encoding='utf8';while(true){switch(encoding){case'hex':return hexSlice(this,start,end);case'utf8':case'utf-8':return utf8Slice(this,start,end);case'ascii':return asciiSlice(this,start,end);case'latin1':case'binary':return latin1Slice(this,start,end);case'base64':return base64Slice(this,start,end);case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return utf16leSlice(this,start,end);default:if(loweredCase)throw new TypeError('Unknown encoding: '+encoding);encoding=(encoding+'').toLowerCase();loweredCase=true;}}}// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer=true;function swap(b,n,m){var i=b[n];b[n]=b[m];b[m]=i;}Buffer.prototype.swap16=function swap16(){var len=this.length;if(len%2!==0){throw new RangeError('Buffer size must be a multiple of 16-bits');}for(var i=0;i<len;i+=2){swap(this,i,i+1);}return this;};Buffer.prototype.swap32=function swap32(){var len=this.length;if(len%4!==0){throw new RangeError('Buffer size must be a multiple of 32-bits');}for(var i=0;i<len;i+=4){swap(this,i,i+3);swap(this,i+1,i+2);}return this;};Buffer.prototype.swap64=function swap64(){var len=this.length;if(len%8!==0){throw new RangeError('Buffer size must be a multiple of 64-bits');}for(var i=0;i<len;i+=8){swap(this,i,i+7);swap(this,i+1,i+6);swap(this,i+2,i+5);swap(this,i+3,i+4);}return this;};Buffer.prototype.toString=function toString(){var length=this.length;if(length===0)return'';if(arguments.length===0)return utf8Slice(this,0,length);return slowToString.apply(this,arguments);};Buffer.prototype.toLocaleString=Buffer.prototype.toString;Buffer.prototype.equals=function equals(b){if(!Buffer.isBuffer(b))throw new TypeError('Argument must be a Buffer');if(this===b)return true;return Buffer.compare(this,b)===0;};Buffer.prototype.inspect=function inspect(){var str='';var max=exports.h2;str=this.toString('hex',0,max).replace(/(.{2})/g,'$1 ').trim();if(this.length>max)str+=' ... ';return'<Buffer '+str+'>';};if(customInspectSymbol){Buffer.prototype[customInspectSymbol]=Buffer.prototype.inspect;}Buffer.prototype.compare=function compare(target,start,end,thisStart,thisEnd){if(isInstance(target,Uint8Array)){target=Buffer.from(target,target.offset,target.byteLength);}if(!Buffer.isBuffer(target)){throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. '+'Received type '+_typeof(target));}if(start===undefined){start=0;}if(end===undefined){end=target?target.length:0;}if(thisStart===undefined){thisStart=0;}if(thisEnd===undefined){thisEnd=this.length;}if(start<0||end>target.length||thisStart<0||thisEnd>this.length){throw new RangeError('out of range index');}if(thisStart>=thisEnd&&start>=end){return 0;}if(thisStart>=thisEnd){return-1;}if(start>=end){return 1;}start>>>=0;end>>>=0;thisStart>>>=0;thisEnd>>>=0;if(this===target)return 0;var x=thisEnd-thisStart;var y=end-start;var len=Math.min(x,y);var thisCopy=this.slice(thisStart,thisEnd);var targetCopy=target.slice(start,end);for(var i=0;i<len;++i){if(thisCopy[i]!==targetCopy[i]){x=thisCopy[i];y=targetCopy[i];break;}}if(x<y)return-1;if(y<x)return 1;return 0;};// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf(buffer,val,byteOffset,encoding,dir){// Empty buffer means no match\nif(buffer.length===0)return-1;// Normalize byteOffset\nif(typeof byteOffset==='string'){encoding=byteOffset;byteOffset=0;}else if(byteOffset>0x7fffffff){byteOffset=0x7fffffff;}else if(byteOffset<-0x80000000){byteOffset=-0x80000000;}byteOffset=+byteOffset;// Coerce to Number.\nif(numberIsNaN(byteOffset)){// byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\nbyteOffset=dir?0:buffer.length-1;}// Normalize byteOffset: negative offsets start from the end of the buffer\nif(byteOffset<0)byteOffset=buffer.length+byteOffset;if(byteOffset>=buffer.length){if(dir)return-1;else byteOffset=buffer.length-1;}else if(byteOffset<0){if(dir)byteOffset=0;else return-1;}// Normalize val\nif(typeof val==='string'){val=Buffer.from(val,encoding);}// Finally, search either indexOf (if dir is true) or lastIndexOf\nif(Buffer.isBuffer(val)){// Special case: looking for empty string/buffer always fails\nif(val.length===0){return-1;}return arrayIndexOf(buffer,val,byteOffset,encoding,dir);}else if(typeof val==='number'){val=val&0xFF;// Search for a byte value [0-255]\nif(typeof Uint8Array.prototype.indexOf==='function'){if(dir){return Uint8Array.prototype.indexOf.call(buffer,val,byteOffset);}else{return Uint8Array.prototype.lastIndexOf.call(buffer,val,byteOffset);}}return arrayIndexOf(buffer,[val],byteOffset,encoding,dir);}throw new TypeError('val must be string, number or Buffer');}function arrayIndexOf(arr,val,byteOffset,encoding,dir){var indexSize=1;var arrLength=arr.length;var valLength=val.length;if(encoding!==undefined){encoding=String(encoding).toLowerCase();if(encoding==='ucs2'||encoding==='ucs-2'||encoding==='utf16le'||encoding==='utf-16le'){if(arr.length<2||val.length<2){return-1;}indexSize=2;arrLength/=2;valLength/=2;byteOffset/=2;}}function read(buf,i){if(indexSize===1){return buf[i];}else{return buf.readUInt16BE(i*indexSize);}}var i;if(dir){var foundIndex=-1;for(i=byteOffset;i<arrLength;i++){if(read(arr,i)===read(val,foundIndex===-1?0:i-foundIndex)){if(foundIndex===-1)foundIndex=i;if(i-foundIndex+1===valLength)return foundIndex*indexSize;}else{if(foundIndex!==-1)i-=i-foundIndex;foundIndex=-1;}}}else{if(byteOffset+valLength>arrLength)byteOffset=arrLength-valLength;for(i=byteOffset;i>=0;i--){var found=true;for(var j=0;j<valLength;j++){if(read(arr,i+j)!==read(val,j)){found=false;break;}}if(found)return i;}}return-1;}Buffer.prototype.includes=function includes(val,byteOffset,encoding){return this.indexOf(val,byteOffset,encoding)!==-1;};Buffer.prototype.indexOf=function indexOf(val,byteOffset,encoding){return bidirectionalIndexOf(this,val,byteOffset,encoding,true);};Buffer.prototype.lastIndexOf=function lastIndexOf(val,byteOffset,encoding){return bidirectionalIndexOf(this,val,byteOffset,encoding,false);};function hexWrite(buf,string,offset,length){offset=Number(offset)||0;var remaining=buf.length-offset;if(!length){length=remaining;}else{length=Number(length);if(length>remaining){length=remaining;}}var strLen=string.length;if(length>strLen/2){length=strLen/2;}var i;for(i=0;i<length;++i){var parsed=parseInt(string.substr(i*2,2),16);if(numberIsNaN(parsed))return i;buf[offset+i]=parsed;}return i;}function utf8Write(buf,string,offset,length){return blitBuffer(utf8ToBytes(string,buf.length-offset),buf,offset,length);}function asciiWrite(buf,string,offset,length){return blitBuffer(asciiToBytes(string),buf,offset,length);}function base64Write(buf,string,offset,length){return blitBuffer(base64ToBytes(string),buf,offset,length);}function ucs2Write(buf,string,offset,length){return blitBuffer(utf16leToBytes(string,buf.length-offset),buf,offset,length);}Buffer.prototype.write=function write(string,offset,length,encoding){// Buffer#write(string)\nif(offset===undefined){encoding='utf8';length=this.length;offset=0;// Buffer#write(string, encoding)\n}else if(length===undefined&&typeof offset==='string'){encoding=offset;length=this.length;offset=0;// Buffer#write(string, offset[, length][, encoding])\n}else if(isFinite(offset)){offset=offset>>>0;if(isFinite(length)){length=length>>>0;if(encoding===undefined)encoding='utf8';}else{encoding=length;length=undefined;}}else{throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');}var remaining=this.length-offset;if(length===undefined||length>remaining)length=remaining;if(string.length>0&&(length<0||offset<0)||offset>this.length){throw new RangeError('Attempt to write outside buffer bounds');}if(!encoding)encoding='utf8';var loweredCase=false;for(;;){switch(encoding){case'hex':return hexWrite(this,string,offset,length);case'utf8':case'utf-8':return utf8Write(this,string,offset,length);case'ascii':case'latin1':case'binary':return asciiWrite(this,string,offset,length);case'base64':// Warning: maxLength not taken into account in base64Write\nreturn base64Write(this,string,offset,length);case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return ucs2Write(this,string,offset,length);default:if(loweredCase)throw new TypeError('Unknown encoding: '+encoding);encoding=(''+encoding).toLowerCase();loweredCase=true;}}};Buffer.prototype.toJSON=function toJSON(){return{type:'Buffer',data:Array.prototype.slice.call(this._arr||this,0)};};function base64Slice(buf,start,end){if(start===0&&end===buf.length){return base64.fromByteArray(buf);}else{return base64.fromByteArray(buf.slice(start,end));}}function utf8Slice(buf,start,end){end=Math.min(buf.length,end);var res=[];var i=start;while(i<end){var firstByte=buf[i];var codePoint=null;var bytesPerSequence=firstByte>0xEF?4:firstByte>0xDF?3:firstByte>0xBF?2:1;if(i+bytesPerSequence<=end){var secondByte=void 0,thirdByte=void 0,fourthByte=void 0,tempCodePoint=void 0;switch(bytesPerSequence){case 1:if(firstByte<0x80){codePoint=firstByte;}break;case 2:secondByte=buf[i+1];if((secondByte&0xC0)===0x80){tempCodePoint=(firstByte&0x1F)<<0x6|secondByte&0x3F;if(tempCodePoint>0x7F){codePoint=tempCodePoint;}}break;case 3:secondByte=buf[i+1];thirdByte=buf[i+2];if((secondByte&0xC0)===0x80&&(thirdByte&0xC0)===0x80){tempCodePoint=(firstByte&0xF)<<0xC|(secondByte&0x3F)<<0x6|thirdByte&0x3F;if(tempCodePoint>0x7FF&&(tempCodePoint<0xD800||tempCodePoint>0xDFFF)){codePoint=tempCodePoint;}}break;case 4:secondByte=buf[i+1];thirdByte=buf[i+2];fourthByte=buf[i+3];if((secondByte&0xC0)===0x80&&(thirdByte&0xC0)===0x80&&(fourthByte&0xC0)===0x80){tempCodePoint=(firstByte&0xF)<<0x12|(secondByte&0x3F)<<0xC|(thirdByte&0x3F)<<0x6|fourthByte&0x3F;if(tempCodePoint>0xFFFF&&tempCodePoint<0x110000){codePoint=tempCodePoint;}}}}if(codePoint===null){// we did not generate a valid codePoint so insert a\n// replacement char (U+FFFD) and advance only 1 byte\ncodePoint=0xFFFD;bytesPerSequence=1;}else if(codePoint>0xFFFF){// encode to utf16 (surrogate pair dance)\ncodePoint-=0x10000;res.push(codePoint>>>10&0x3FF|0xD800);codePoint=0xDC00|codePoint&0x3FF;}res.push(codePoint);i+=bytesPerSequence;}return decodeCodePointsArray(res);}// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH=0x1000;function decodeCodePointsArray(codePoints){var len=codePoints.length;if(len<=MAX_ARGUMENTS_LENGTH){return String.fromCharCode.apply(String,codePoints);// avoid extra slice()\n}// Decode in chunks to avoid \"call stack size exceeded\".\nvar res='';var i=0;while(i<len){res+=String.fromCharCode.apply(String,codePoints.slice(i,i+=MAX_ARGUMENTS_LENGTH));}return res;}function asciiSlice(buf,start,end){var ret='';end=Math.min(buf.length,end);for(var i=start;i<end;++i){ret+=String.fromCharCode(buf[i]&0x7F);}return ret;}function latin1Slice(buf,start,end){var ret='';end=Math.min(buf.length,end);for(var i=start;i<end;++i){ret+=String.fromCharCode(buf[i]);}return ret;}function hexSlice(buf,start,end){var len=buf.length;if(!start||start<0)start=0;if(!end||end<0||end>len)end=len;var out='';for(var i=start;i<end;++i){out+=hexSliceLookupTable[buf[i]];}return out;}function utf16leSlice(buf,start,end){var bytes=buf.slice(start,end);var res='';// If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\nfor(var i=0;i<bytes.length-1;i+=2){res+=String.fromCharCode(bytes[i]+bytes[i+1]*256);}return res;}Buffer.prototype.slice=function slice(start,end){var len=this.length;start=~~start;end=end===undefined?len:~~end;if(start<0){start+=len;if(start<0)start=0;}else if(start>len){start=len;}if(end<0){end+=len;if(end<0)end=0;}else if(end>len){end=len;}if(end<start)end=start;var newBuf=this.subarray(start,end);// Return an augmented `Uint8Array` instance\nObject.setPrototypeOf(newBuf,Buffer.prototype);return newBuf;};/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */function checkOffset(offset,ext,length){if(offset%1!==0||offset<0)throw new RangeError('offset is not uint');if(offset+ext>length)throw new RangeError('Trying to access beyond buffer length');}Buffer.prototype.readUintLE=Buffer.prototype.readUIntLE=function readUIntLE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i<byteLength&&(mul*=0x100)){val+=this[offset+i]*mul;}return val;};Buffer.prototype.readUintBE=Buffer.prototype.readUIntBE=function readUIntBE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert){checkOffset(offset,byteLength,this.length);}var val=this[offset+--byteLength];var mul=1;while(byteLength>0&&(mul*=0x100)){val+=this[offset+--byteLength]*mul;}return val;};Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function readUInt8(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,1,this.length);return this[offset];};Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function readUInt16LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);return this[offset]|this[offset+1]<<8;};Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function readUInt16BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);return this[offset]<<8|this[offset+1];};Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function readUInt32LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return(this[offset]|this[offset+1]<<8|this[offset+2]<<16)+this[offset+3]*0x1000000;};Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function readUInt32BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]*0x1000000+(this[offset+1]<<16|this[offset+2]<<8|this[offset+3]);};Buffer.prototype.readBigUInt64LE=defineBigIntMethod(function readBigUInt64LE(offset){offset=offset>>>0;validateNumber(offset,'offset');var first=this[offset];var last=this[offset+7];if(first===undefined||last===undefined){boundsError(offset,this.length-8);}var lo=first+this[++offset]*Math.pow(2,8)+this[++offset]*Math.pow(2,16)+this[++offset]*Math.pow(2,24);var hi=this[++offset]+this[++offset]*Math.pow(2,8)+this[++offset]*Math.pow(2,16)+last*Math.pow(2,24);return BigInt(lo)+(BigInt(hi)<<BigInt(32));});Buffer.prototype.readBigUInt64BE=defineBigIntMethod(function readBigUInt64BE(offset){offset=offset>>>0;validateNumber(offset,'offset');var first=this[offset];var last=this[offset+7];if(first===undefined||last===undefined){boundsError(offset,this.length-8);}var hi=first*Math.pow(2,24)+this[++offset]*Math.pow(2,16)+this[++offset]*Math.pow(2,8)+this[++offset];var lo=this[++offset]*Math.pow(2,24)+this[++offset]*Math.pow(2,16)+this[++offset]*Math.pow(2,8)+last;return(BigInt(hi)<<BigInt(32))+BigInt(lo);});Buffer.prototype.readIntLE=function readIntLE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i<byteLength&&(mul*=0x100)){val+=this[offset+i]*mul;}mul*=0x80;if(val>=mul)val-=Math.pow(2,8*byteLength);return val;};Buffer.prototype.readIntBE=function readIntBE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);var i=byteLength;var mul=1;var val=this[offset+--i];while(i>0&&(mul*=0x100)){val+=this[offset+--i]*mul;}mul*=0x80;if(val>=mul)val-=Math.pow(2,8*byteLength);return val;};Buffer.prototype.readInt8=function readInt8(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,1,this.length);if(!(this[offset]&0x80))return this[offset];return(0xff-this[offset]+1)*-1;};Buffer.prototype.readInt16LE=function readInt16LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset]|this[offset+1]<<8;return val&0x8000?val|0xFFFF0000:val;};Buffer.prototype.readInt16BE=function readInt16BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset+1]|this[offset]<<8;return val&0x8000?val|0xFFFF0000:val;};Buffer.prototype.readInt32LE=function readInt32LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]|this[offset+1]<<8|this[offset+2]<<16|this[offset+3]<<24;};Buffer.prototype.readInt32BE=function readInt32BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]<<24|this[offset+1]<<16|this[offset+2]<<8|this[offset+3];};Buffer.prototype.readBigInt64LE=defineBigIntMethod(function readBigInt64LE(offset){offset=offset>>>0;validateNumber(offset,'offset');var first=this[offset];var last=this[offset+7];if(first===undefined||last===undefined){boundsError(offset,this.length-8);}var val=this[offset+4]+this[offset+5]*Math.pow(2,8)+this[offset+6]*Math.pow(2,16)+(last<<24);// Overflow\nreturn(BigInt(val)<<BigInt(32))+BigInt(first+this[++offset]*Math.pow(2,8)+this[++offset]*Math.pow(2,16)+this[++offset]*Math.pow(2,24));});Buffer.prototype.readBigInt64BE=defineBigIntMethod(function readBigInt64BE(offset){offset=offset>>>0;validateNumber(offset,'offset');var first=this[offset];var last=this[offset+7];if(first===undefined||last===undefined){boundsError(offset,this.length-8);}var val=(first<<24)+// Overflow\nthis[++offset]*Math.pow(2,16)+this[++offset]*Math.pow(2,8)+this[++offset];return(BigInt(val)<<BigInt(32))+BigInt(this[++offset]*Math.pow(2,24)+this[++offset]*Math.pow(2,16)+this[++offset]*Math.pow(2,8)+last);});Buffer.prototype.readFloatLE=function readFloatLE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,true,23,4);};Buffer.prototype.readFloatBE=function readFloatBE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,false,23,4);};Buffer.prototype.readDoubleLE=function readDoubleLE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,true,52,8);};Buffer.prototype.readDoubleBE=function readDoubleBE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,false,52,8);};function checkInt(buf,value,offset,ext,max,min){if(!Buffer.isBuffer(buf))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(value>max||value<min)throw new RangeError('\"value\" argument is out of bounds');if(offset+ext>buf.length)throw new RangeError('Index out of range');}Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function writeUIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert){var maxBytes=Math.pow(2,8*byteLength)-1;checkInt(this,value,offset,byteLength,maxBytes,0);}var mul=1;var i=0;this[offset]=value&0xFF;while(++i<byteLength&&(mul*=0x100)){this[offset+i]=value/mul&0xFF;}return offset+byteLength;};Buffer.prototype.writeUintBE=Buffer.prototype.writeUIntBE=function writeUIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert){var maxBytes=Math.pow(2,8*byteLength)-1;checkInt(this,value,offset,byteLength,maxBytes,0);}var i=byteLength-1;var mul=1;this[offset+i]=value&0xFF;while(--i>=0&&(mul*=0x100)){this[offset+i]=value/mul&0xFF;}return offset+byteLength;};Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function writeUInt8(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,1,0xff,0);this[offset]=value&0xff;return offset+1;};Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function writeUInt16LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,0xffff,0);this[offset]=value&0xff;this[offset+1]=value>>>8;return offset+2;};Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function writeUInt16BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,0xffff,0);this[offset]=value>>>8;this[offset+1]=value&0xff;return offset+2;};Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function writeUInt32LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,0xffffffff,0);this[offset+3]=value>>>24;this[offset+2]=value>>>16;this[offset+1]=value>>>8;this[offset]=value&0xff;return offset+4;};Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function writeUInt32BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,0xffffffff,0);this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&0xff;return offset+4;};function wrtBigUInt64LE(buf,value,offset,min,max){checkIntBI(value,min,max,buf,offset,7);var lo=Number(value&BigInt(0xffffffff));buf[offset++]=lo;lo=lo>>8;buf[offset++]=lo;lo=lo>>8;buf[offset++]=lo;lo=lo>>8;buf[offset++]=lo;var hi=Number(value>>BigInt(32)&BigInt(0xffffffff));buf[offset++]=hi;hi=hi>>8;buf[offset++]=hi;hi=hi>>8;buf[offset++]=hi;hi=hi>>8;buf[offset++]=hi;return offset;}function wrtBigUInt64BE(buf,value,offset,min,max){checkIntBI(value,min,max,buf,offset,7);var lo=Number(value&BigInt(0xffffffff));buf[offset+7]=lo;lo=lo>>8;buf[offset+6]=lo;lo=lo>>8;buf[offset+5]=lo;lo=lo>>8;buf[offset+4]=lo;var hi=Number(value>>BigInt(32)&BigInt(0xffffffff));buf[offset+3]=hi;hi=hi>>8;buf[offset+2]=hi;hi=hi>>8;buf[offset+1]=hi;hi=hi>>8;buf[offset]=hi;return offset+8;}Buffer.prototype.writeBigUInt64LE=defineBigIntMethod(function writeBigUInt64LE(value){var offset=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;return wrtBigUInt64LE(this,value,offset,BigInt(0),BigInt('0xffffffffffffffff'));});Buffer.prototype.writeBigUInt64BE=defineBigIntMethod(function writeBigUInt64BE(value){var offset=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;return wrtBigUInt64BE(this,value,offset,BigInt(0),BigInt('0xffffffffffffffff'));});Buffer.prototype.writeIntLE=function writeIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit);}var i=0;var mul=1;var sub=0;this[offset]=value&0xFF;while(++i<byteLength&&(mul*=0x100)){if(value<0&&sub===0&&this[offset+i-1]!==0){sub=1;}this[offset+i]=(value/mul>>0)-sub&0xFF;}return offset+byteLength;};Buffer.prototype.writeIntBE=function writeIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit);}var i=byteLength-1;var mul=1;var sub=0;this[offset+i]=value&0xFF;while(--i>=0&&(mul*=0x100)){if(value<0&&sub===0&&this[offset+i+1]!==0){sub=1;}this[offset+i]=(value/mul>>0)-sub&0xFF;}return offset+byteLength;};Buffer.prototype.writeInt8=function writeInt8(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,1,0x7f,-0x80);if(value<0)value=0xff+value+1;this[offset]=value&0xff;return offset+1;};Buffer.prototype.writeInt16LE=function writeInt16LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,0x7fff,-0x8000);this[offset]=value&0xff;this[offset+1]=value>>>8;return offset+2;};Buffer.prototype.writeInt16BE=function writeInt16BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,0x7fff,-0x8000);this[offset]=value>>>8;this[offset+1]=value&0xff;return offset+2;};Buffer.prototype.writeInt32LE=function writeInt32LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,0x7fffffff,-0x80000000);this[offset]=value&0xff;this[offset+1]=value>>>8;this[offset+2]=value>>>16;this[offset+3]=value>>>24;return offset+4;};Buffer.prototype.writeInt32BE=function writeInt32BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,0x7fffffff,-0x80000000);if(value<0)value=0xffffffff+value+1;this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&0xff;return offset+4;};Buffer.prototype.writeBigInt64LE=defineBigIntMethod(function writeBigInt64LE(value){var offset=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;return wrtBigUInt64LE(this,value,offset,-BigInt('0x8000000000000000'),BigInt('0x7fffffffffffffff'));});Buffer.prototype.writeBigInt64BE=defineBigIntMethod(function writeBigInt64BE(value){var offset=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;return wrtBigUInt64BE(this,value,offset,-BigInt('0x8000000000000000'),BigInt('0x7fffffffffffffff'));});function checkIEEE754(buf,value,offset,ext,max,min){if(offset+ext>buf.length)throw new RangeError('Index out of range');if(offset<0)throw new RangeError('Index out of range');}function writeFloat(buf,value,offset,littleEndian,noAssert){value=+value;offset=offset>>>0;if(!noAssert){checkIEEE754(buf,value,offset,4,3.4028234663852886e+38,-3.4028234663852886e+38);}ieee754.write(buf,value,offset,littleEndian,23,4);return offset+4;}Buffer.prototype.writeFloatLE=function writeFloatLE(value,offset,noAssert){return writeFloat(this,value,offset,true,noAssert);};Buffer.prototype.writeFloatBE=function writeFloatBE(value,offset,noAssert){return writeFloat(this,value,offset,false,noAssert);};function writeDouble(buf,value,offset,littleEndian,noAssert){value=+value;offset=offset>>>0;if(!noAssert){checkIEEE754(buf,value,offset,8,1.7976931348623157E+308,-1.7976931348623157E+308);}ieee754.write(buf,value,offset,littleEndian,52,8);return offset+8;}Buffer.prototype.writeDoubleLE=function writeDoubleLE(value,offset,noAssert){return writeDouble(this,value,offset,true,noAssert);};Buffer.prototype.writeDoubleBE=function writeDoubleBE(value,offset,noAssert){return writeDouble(this,value,offset,false,noAssert);};// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy=function copy(target,targetStart,start,end){if(!Buffer.isBuffer(target))throw new TypeError('argument should be a Buffer');if(!start)start=0;if(!end&&end!==0)end=this.length;if(targetStart>=target.length)targetStart=target.length;if(!targetStart)targetStart=0;if(end>0&&end<start)end=start;// Copy 0 bytes; we're done\nif(end===start)return 0;if(target.length===0||this.length===0)return 0;// Fatal error conditions\nif(targetStart<0){throw new RangeError('targetStart out of bounds');}if(start<0||start>=this.length)throw new RangeError('Index out of range');if(end<0)throw new RangeError('sourceEnd out of bounds');// Are we oob?\nif(end>this.length)end=this.length;if(target.length-targetStart<end-start){end=target.length-targetStart+start;}var len=end-start;if(this===target&&typeof Uint8Array.prototype.copyWithin==='function'){// Use built-in when available, missing from IE11\nthis.copyWithin(targetStart,start,end);}else{Uint8Array.prototype.set.call(target,this.subarray(start,end),targetStart);}return len;};// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill=function fill(val,start,end,encoding){// Handle string cases:\nif(typeof val==='string'){if(typeof start==='string'){encoding=start;start=0;end=this.length;}else if(typeof end==='string'){encoding=end;end=this.length;}if(encoding!==undefined&&typeof encoding!=='string'){throw new TypeError('encoding must be a string');}if(typeof encoding==='string'&&!Buffer.isEncoding(encoding)){throw new TypeError('Unknown encoding: '+encoding);}if(val.length===1){var code=val.charCodeAt(0);if(encoding==='utf8'&&code<128||encoding==='latin1'){// Fast path: If `val` fits into a single byte, use that numeric value.\nval=code;}}}else if(typeof val==='number'){val=val&255;}else if(typeof val==='boolean'){val=Number(val);}// Invalid ranges are not set to a default, so can range check early.\nif(start<0||this.length<start||this.length<end){throw new RangeError('Out of range index');}if(end<=start){return this;}start=start>>>0;end=end===undefined?this.length:end>>>0;if(!val)val=0;var i;if(typeof val==='number'){for(i=start;i<end;++i){this[i]=val;}}else{var bytes=Buffer.isBuffer(val)?val:Buffer.from(val,encoding);var len=bytes.length;if(len===0){throw new TypeError('The value \"'+val+'\" is invalid for argument \"value\"');}for(i=0;i<end-start;++i){this[i+start]=bytes[i%len];}}return this;};// CUSTOM ERRORS\n// =============\n// Simplified versions from Node, changed for Buffer-only usage\nvar errors={};function E(sym,getMessage,Base){errors[sym]=/*#__PURE__*/function(_Base){_inherits(NodeError,_Base);var _super=_createSuper(NodeError);function NodeError(){var _this;_classCallCheck(this,NodeError);_this=_super.call(this);Object.defineProperty(_assertThisInitialized(_this),'message',{value:getMessage.apply(_assertThisInitialized(_this),arguments),writable:true,configurable:true});// Add the error code to the name to include it in the stack trace.\n_this.name=\"\".concat(_this.name,\" [\").concat(sym,\"]\");// Access the stack to generate the error message including the error code\n// from the name.\n_this.stack;// eslint-disable-line no-unused-expressions\n// Reset the name to the actual name.\ndelete _this.name;return _this;}_createClass(NodeError,[{key:\"code\",get:function get(){return sym;},set:function set(value){Object.defineProperty(this,'code',{configurable:true,enumerable:true,value:value,writable:true});}},{key:\"toString\",value:function toString(){return\"\".concat(this.name,\" [\").concat(sym,\"]: \").concat(this.message);}}]);return NodeError;}(Base);}E('ERR_BUFFER_OUT_OF_BOUNDS',function(name){if(name){return\"\".concat(name,\" is outside of buffer bounds\");}return'Attempt to access memory outside buffer bounds';},RangeError);E('ERR_INVALID_ARG_TYPE',function(name,actual){return\"The \\\"\".concat(name,\"\\\" argument must be of type number. Received type \").concat(_typeof(actual));},TypeError);E('ERR_OUT_OF_RANGE',function(str,range,input){var msg=\"The value of \\\"\".concat(str,\"\\\" is out of range.\");var received=input;if(Number.isInteger(input)&&Math.abs(input)>Math.pow(2,32)){received=addNumericalSeparator(String(input));}else if(typeof input==='bigint'){received=String(input);if(input>Math.pow(BigInt(2),BigInt(32))||input<-Math.pow(BigInt(2),BigInt(32))){received=addNumericalSeparator(received);}received+='n';}msg+=\" It must be \".concat(range,\". Received \").concat(received);return msg;},RangeError);function addNumericalSeparator(val){var res='';var i=val.length;var start=val[0]==='-'?1:0;for(;i>=start+4;i-=3){res=\"_\".concat(val.slice(i-3,i)).concat(res);}return\"\".concat(val.slice(0,i)).concat(res);}// CHECK FUNCTIONS\n// ===============\nfunction checkBounds(buf,offset,byteLength){validateNumber(offset,'offset');if(buf[offset]===undefined||buf[offset+byteLength]===undefined){boundsError(offset,buf.length-(byteLength+1));}}function checkIntBI(value,min,max,buf,offset,byteLength){if(value>max||value<min){var n=typeof min==='bigint'?'n':'';var range;if(byteLength>3){if(min===0||min===BigInt(0)){range=\">= 0\".concat(n,\" and < 2\").concat(n,\" ** \").concat((byteLength+1)*8).concat(n);}else{range=\">= -(2\".concat(n,\" ** \").concat((byteLength+1)*8-1).concat(n,\") and < 2 ** \")+\"\".concat((byteLength+1)*8-1).concat(n);}}else{range=\">= \".concat(min).concat(n,\" and <= \").concat(max).concat(n);}throw new errors.ERR_OUT_OF_RANGE('value',range,value);}checkBounds(buf,offset,byteLength);}function validateNumber(value,name){if(typeof value!=='number'){throw new errors.ERR_INVALID_ARG_TYPE(name,'number',value);}}function boundsError(value,length,type){if(Math.floor(value)!==value){validateNumber(value,type);throw new errors.ERR_OUT_OF_RANGE(type||'offset','an integer',value);}if(length<0){throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();}throw new errors.ERR_OUT_OF_RANGE(type||'offset',\">= \".concat(type?1:0,\" and <= \").concat(length),value);}// HELPER FUNCTIONS\n// ================\nvar INVALID_BASE64_RE=/[^+/0-9A-Za-z-_]/g;function base64clean(str){// Node takes equal signs as end of the Base64 encoding\nstr=str.split('=')[0];// Node strips out invalid characters like \\n and \\t from the string, base64-js does not\nstr=str.trim().replace(INVALID_BASE64_RE,'');// Node converts strings with length < 2 to ''\nif(str.length<2)return'';// Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\nwhile(str.length%4!==0){str=str+'=';}return str;}function utf8ToBytes(string,units){units=units||Infinity;var codePoint;var length=string.length;var leadSurrogate=null;var bytes=[];for(var i=0;i<length;++i){codePoint=string.charCodeAt(i);// is surrogate component\nif(codePoint>0xD7FF&&codePoint<0xE000){// last char was a lead\nif(!leadSurrogate){// no lead yet\nif(codePoint>0xDBFF){// unexpected trail\nif((units-=3)>-1)bytes.push(0xEF,0xBF,0xBD);continue;}else if(i+1===length){// unpaired lead\nif((units-=3)>-1)bytes.push(0xEF,0xBF,0xBD);continue;}// valid lead\nleadSurrogate=codePoint;continue;}// 2 leads in a row\nif(codePoint<0xDC00){if((units-=3)>-1)bytes.push(0xEF,0xBF,0xBD);leadSurrogate=codePoint;continue;}// valid surrogate pair\ncodePoint=(leadSurrogate-0xD800<<10|codePoint-0xDC00)+0x10000;}else if(leadSurrogate){// valid bmp char, but last char was a lead\nif((units-=3)>-1)bytes.push(0xEF,0xBF,0xBD);}leadSurrogate=null;// encode utf8\nif(codePoint<0x80){if((units-=1)<0)break;bytes.push(codePoint);}else if(codePoint<0x800){if((units-=2)<0)break;bytes.push(codePoint>>0x6|0xC0,codePoint&0x3F|0x80);}else if(codePoint<0x10000){if((units-=3)<0)break;bytes.push(codePoint>>0xC|0xE0,codePoint>>0x6&0x3F|0x80,codePoint&0x3F|0x80);}else if(codePoint<0x110000){if((units-=4)<0)break;bytes.push(codePoint>>0x12|0xF0,codePoint>>0xC&0x3F|0x80,codePoint>>0x6&0x3F|0x80,codePoint&0x3F|0x80);}else{throw new Error('Invalid code point');}}return bytes;}function asciiToBytes(str){var byteArray=[];for(var i=0;i<str.length;++i){// Node's code seems to be doing this and not & 0x7F..\nbyteArray.push(str.charCodeAt(i)&0xFF);}return byteArray;}function utf16leToBytes(str,units){var c,hi,lo;var byteArray=[];for(var i=0;i<str.length;++i){if((units-=2)<0)break;c=str.charCodeAt(i);hi=c>>8;lo=c%256;byteArray.push(lo);byteArray.push(hi);}return byteArray;}function base64ToBytes(str){return base64.toByteArray(base64clean(str));}function blitBuffer(src,dst,offset,length){var i;for(i=0;i<length;++i){if(i+offset>=dst.length||i>=src.length)break;dst[i+offset]=src[i];}return i;}// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance(obj,type){return obj instanceof type||obj!=null&&obj.constructor!=null&&obj.constructor.name!=null&&obj.constructor.name===type.name;}function numberIsNaN(obj){// For IE11 support\nreturn obj!==obj;// eslint-disable-line no-self-compare\n}// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable=function(){var alphabet='0123456789abcdef';var table=new Array(256);for(var i=0;i<16;++i){var i16=i*16;for(var j=0;j<16;++j){table[i16+j]=alphabet[i]+alphabet[j];}}return table;}();// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod(fn){return typeof BigInt==='undefined'?BufferBigIntNotDefined:fn;}function BufferBigIntNotDefined(){throw new Error('BigInt not supported');}/***/},/***/3910:/***/function(__unused_webpack_module,exports){\"use strict\";exports.byteLength=byteLength;exports.toByteArray=toByteArray;exports.fromByteArray=fromByteArray;var lookup=[];var revLookup=[];var Arr=typeof Uint8Array!=='undefined'?Uint8Array:Array;var code='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';for(var i=0,len=code.length;i<len;++i){lookup[i]=code[i];revLookup[code.charCodeAt(i)]=i;}// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)]=62;revLookup['_'.charCodeAt(0)]=63;function getLens(b64){var len=b64.length;if(len%4>0){throw new Error('Invalid string. Length must be a multiple of 4');}// Trim off extra bytes after placeholder bytes are found\n// See: https://github.com/beatgammit/base64-js/issues/42\nvar validLen=b64.indexOf('=');if(validLen===-1)validLen=len;var placeHoldersLen=validLen===len?0:4-validLen%4;return[validLen,placeHoldersLen];}// base64 is 4/3 + up to two characters of the original data\nfunction byteLength(b64){var lens=getLens(b64);var validLen=lens[0];var placeHoldersLen=lens[1];return(validLen+placeHoldersLen)*3/4-placeHoldersLen;}function _byteLength(b64,validLen,placeHoldersLen){return(validLen+placeHoldersLen)*3/4-placeHoldersLen;}function toByteArray(b64){var tmp;var lens=getLens(b64);var validLen=lens[0];var placeHoldersLen=lens[1];var arr=new Arr(_byteLength(b64,validLen,placeHoldersLen));var curByte=0;// if there are placeholders, only get up to the last complete 4 chars\nvar len=placeHoldersLen>0?validLen-4:validLen;var i;for(i=0;i<len;i+=4){tmp=revLookup[b64.charCodeAt(i)]<<18|revLookup[b64.charCodeAt(i+1)]<<12|revLookup[b64.charCodeAt(i+2)]<<6|revLookup[b64.charCodeAt(i+3)];arr[curByte++]=tmp>>16&0xFF;arr[curByte++]=tmp>>8&0xFF;arr[curByte++]=tmp&0xFF;}if(placeHoldersLen===2){tmp=revLookup[b64.charCodeAt(i)]<<2|revLookup[b64.charCodeAt(i+1)]>>4;arr[curByte++]=tmp&0xFF;}if(placeHoldersLen===1){tmp=revLookup[b64.charCodeAt(i)]<<10|revLookup[b64.charCodeAt(i+1)]<<4|revLookup[b64.charCodeAt(i+2)]>>2;arr[curByte++]=tmp>>8&0xFF;arr[curByte++]=tmp&0xFF;}return arr;}function tripletToBase64(num){return lookup[num>>18&0x3F]+lookup[num>>12&0x3F]+lookup[num>>6&0x3F]+lookup[num&0x3F];}function encodeChunk(uint8,start,end){var tmp;var output=[];for(var i=start;i<end;i+=3){tmp=(uint8[i]<<16&0xFF0000)+(uint8[i+1]<<8&0xFF00)+(uint8[i+2]&0xFF);output.push(tripletToBase64(tmp));}return output.join('');}function fromByteArray(uint8){var tmp;var len=uint8.length;var extraBytes=len%3;// if we have 1 byte left, pad 2 bytes\nvar parts=[];var maxChunkLength=16383;// must be multiple of 3\n// go through the array every three bytes, we'll deal with trailing stuff later\nfor(var i=0,len2=len-extraBytes;i<len2;i+=maxChunkLength){parts.push(encodeChunk(uint8,i,i+maxChunkLength>len2?len2:i+maxChunkLength));}// pad the end with zeros, but make sure to not forget the extra bytes\nif(extraBytes===1){tmp=uint8[len-1];parts.push(lookup[tmp>>2]+lookup[tmp<<4&0x3F]+'==');}else if(extraBytes===2){tmp=(uint8[len-2]<<8)+uint8[len-1];parts.push(lookup[tmp>>10]+lookup[tmp>>4&0x3F]+lookup[tmp<<2&0x3F]+'=');}return parts.join('');}/***/},/***/3187:/***/function(__unused_webpack_module,exports){/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */exports.read=function(buffer,offset,isLE,mLen,nBytes){var e,m;var eLen=nBytes*8-mLen-1;var eMax=(1<<eLen)-1;var eBias=eMax>>1;var nBits=-7;var i=isLE?nBytes-1:0;var d=isLE?-1:1;var s=buffer[offset+i];i+=d;e=s&(1<<-nBits)-1;s>>=-nBits;nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8){}m=e&(1<<-nBits)-1;e>>=-nBits;nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8){}if(e===0){e=1-eBias;}else if(e===eMax){return m?NaN:(s?-1:1)*Infinity;}else{m=m+Math.pow(2,mLen);e=e-eBias;}return(s?-1:1)*m*Math.pow(2,e-mLen);};exports.write=function(buffer,value,offset,isLE,mLen,nBytes){var e,m,c;var eLen=nBytes*8-mLen-1;var eMax=(1<<eLen)-1;var eBias=eMax>>1;var rt=mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0;var i=isLE?0:nBytes-1;var d=isLE?1:-1;var s=value<0||value===0&&1/value<0?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax;}else{e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2;}if(e+eBias>=1){value+=rt/c;}else{value+=rt*Math.pow(2,1-eBias);}if(value*c>=2){e++;c/=2;}if(e+eBias>=eMax){m=0;e=eMax;}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias;}else{m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0;}}for(;mLen>=8;buffer[offset+i]=m&0xff,i+=d,m/=256,mLen-=8){}e=e<<mLen|m;eLen+=mLen;for(;eLen>0;buffer[offset+i]=e&0xff,i+=d,e/=256,eLen-=8){}buffer[offset+i-d]|=s*128;};/***/},/***/1152:/***/function(module,__unused_webpack_exports,__nested_webpack_require_57122__){\"use strict\";module.exports=createViewController;var createTurntable=__nested_webpack_require_57122__(3440);var createOrbit=__nested_webpack_require_57122__(7774);var createMatrix=__nested_webpack_require_57122__(9298);function ViewController(controllers,mode){this._controllerNames=Object.keys(controllers);this._controllerList=this._controllerNames.map(function(n){return controllers[n];});this._mode=mode;this._active=controllers[mode];if(!this._active){this._mode='turntable';this._active=controllers.turntable;}this.modes=this._controllerNames;this.computedMatrix=this._active.computedMatrix;this.computedEye=this._active.computedEye;this.computedUp=this._active.computedUp;this.computedCenter=this._active.computedCenter;this.computedRadius=this._active.computedRadius;}var proto=ViewController.prototype;proto.flush=function(a0){var cc=this._controllerList;for(var i=0;i<cc.length;++i){cc[i].flush(a0);}};proto.idle=function(a0){var cc=this._controllerList;for(var i=0;i<cc.length;++i){cc[i].idle(a0);}};proto.lookAt=function(a0,a1,a2,a3){var cc=this._controllerList;for(var i=0;i<cc.length;++i){cc[i].lookAt(a0,a1,a2,a3);}};proto.rotate=function(a0,a1,a2,a3){var cc=this._controllerList;for(var i=0;i<cc.length;++i){cc[i].rotate(a0,a1,a2,a3);}};proto.pan=function(a0,a1,a2,a3){var cc=this._controllerList;for(var i=0;i<cc.length;++i){cc[i].pan(a0,a1,a2,a3);}};proto.translate=function(a0,a1,a2,a3){var cc=this._controllerList;for(var i=0;i<cc.length;++i){cc[i].translate(a0,a1,a2,a3);}};proto.setMatrix=function(a0,a1){var cc=this._controllerList;for(var i=0;i<cc.length;++i){cc[i].setMatrix(a0,a1);}};proto.setDistanceLimits=function(a0,a1){var cc=this._controllerList;for(var i=0;i<cc.length;++i){cc[i].setDistanceLimits(a0,a1);}};proto.setDistance=function(a0,a1){var cc=this._controllerList;for(var i=0;i<cc.length;++i){cc[i].setDistance(a0,a1);}};proto.recalcMatrix=function(t){this._active.recalcMatrix(t);};proto.getDistance=function(t){return this._active.getDistance(t);};proto.getDistanceLimits=function(out){return this._active.getDistanceLimits(out);};proto.lastT=function(){return this._active.lastT();};proto.setMode=function(mode){if(mode===this._mode){return;}var idx=this._controllerNames.indexOf(mode);if(idx<0){return;}var prev=this._active;var next=this._controllerList[idx];var lastT=Math.max(prev.lastT(),next.lastT());prev.recalcMatrix(lastT);next.setMatrix(lastT,prev.computedMatrix);this._active=next;this._mode=mode;//Update matrix properties\nthis.computedMatrix=this._active.computedMatrix;this.computedEye=this._active.computedEye;this.computedUp=this._active.computedUp;this.computedCenter=this._active.computedCenter;this.computedRadius=this._active.computedRadius;};proto.getMode=function(){return this._mode;};function createViewController(options){options=options||{};var eye=options.eye||[0,0,1];var center=options.center||[0,0,0];var up=options.up||[0,1,0];var limits=options.distanceLimits||[0,Infinity];var mode=options.mode||'turntable';var turntable=createTurntable();var orbit=createOrbit();var matrix=createMatrix();turntable.setDistanceLimits(limits[0],limits[1]);turntable.lookAt(0,eye,center,up);orbit.setDistanceLimits(limits[0],limits[1]);orbit.lookAt(0,eye,center,up);matrix.setDistanceLimits(limits[0],limits[1]);matrix.lookAt(0,eye,center,up);return new ViewController({turntable:turntable,orbit:orbit,matrix:matrix},mode);}/***/},/***/8126:/***/function(module,__unused_webpack_exports,__nested_webpack_require_60548__){\"use strict\";var weakMap=typeof WeakMap==='undefined'?__nested_webpack_require_60548__(5346):WeakMap;var createBuffer=__nested_webpack_require_60548__(5827);var createVAO=__nested_webpack_require_60548__(2944);var TriangleCache=new weakMap();function createABigTriangle(gl){var triangleVAO=TriangleCache.get(gl);var handle=triangleVAO&&(triangleVAO._triangleBuffer.handle||triangleVAO._triangleBuffer.buffer);if(!handle||!gl.isBuffer(handle)){var buf=createBuffer(gl,new Float32Array([-1,-1,-1,4,4,-1]));triangleVAO=createVAO(gl,[{buffer:buf,type:gl.FLOAT,size:2}]);triangleVAO._triangleBuffer=buf;TriangleCache.set(gl,triangleVAO);}triangleVAO.bind();gl.drawArrays(gl.TRIANGLES,0,3);triangleVAO.unbind();}module.exports=createABigTriangle;/***/},/***/8008:/***/function(module,__unused_webpack_exports,__nested_webpack_require_61333__){var padLeft=__nested_webpack_require_61333__(4930);module.exports=addLineNumbers;function addLineNumbers(string,start,delim){start=typeof start==='number'?start:1;delim=delim||': ';var lines=string.split(/\\r?\\n/);var totalDigits=String(lines.length+start-1).length;return lines.map(function(line,i){var c=i+start;var digits=String(c).length;var prefix=padLeft(c,totalDigits-digits);return prefix+delim+line;}).join('\\n');}/***/},/***/2153:/***/function(module,__unused_webpack_exports,__nested_webpack_require_61826__){\"use strict\";module.exports=affineHull;var orient=__nested_webpack_require_61826__(417);function linearlyIndependent(points,d){var nhull=new Array(d+1);for(var i=0;i<points.length;++i){nhull[i]=points[i];}for(var i=0;i<=points.length;++i){for(var j=points.length;j<=d;++j){var x=new Array(d);for(var k=0;k<d;++k){x[k]=Math.pow(j+1-i,k);}nhull[j]=x;}var o=orient.apply(void 0,nhull);if(o){return true;}}return false;}function affineHull(points){var n=points.length;if(n===0){return[];}if(n===1){return[0];}var d=points[0].length;var frame=[points[0]];var index=[0];for(var i=1;i<n;++i){frame.push(points[i]);if(!linearlyIndependent(frame,d)){frame.pop();continue;}index.push(i);if(index.length===d+1){return index;}}return index;}/***/},/***/4653:/***/function(module,__unused_webpack_exports,__nested_webpack_require_62626__){\"use strict\";module.exports=alphaComplex;var delaunay=__nested_webpack_require_62626__(4419);var circumradius=__nested_webpack_require_62626__(1778);function alphaComplex(alpha,points){return delaunay(points).filter(function(cell){var simplex=new Array(cell.length);for(var i=0;i<cell.length;++i){simplex[i]=points[cell[i]];}return circumradius(simplex)*alpha<1;});}/***/},/***/2350:/***/function(module,__unused_webpack_exports,__nested_webpack_require_63050__){module.exports=alphaShape;var ac=__nested_webpack_require_63050__(4653);var bnd=__nested_webpack_require_63050__(8691);function alphaShape(alpha,points){return bnd(ac(alpha,points));}/***/},/***/7896:/***/function(module){module.exports=function _atob(str){return atob(str);};/***/},/***/957:/***/function(module,__unused_webpack_exports,__nested_webpack_require_63383__){\"use strict\";module.exports=barycentric;var solve=__nested_webpack_require_63383__(6606);function reduce(x){var r=0;for(var i=0;i<x.length;++i){r+=x[i];}return r;}function barycentric(simplex,point){var d=point.length;var A=new Array(d+1);for(var i=0;i<d;++i){var row=new Array(d+1);for(var j=0;j<=d;++j){row[j]=simplex[j][i];}A[i]=row;}A[d]=new Array(d+1);for(var i=0;i<=d;++i){A[d][i]=1;}var b=new Array(d+1);for(var i=0;i<d;++i){b[i]=point[i];}b[d]=1.0;var x=solve(A,b);var w=reduce(x[d+1]);if(w===0){w=1.0;}var y=new Array(d+1);for(var i=0;i<=d;++i){y[i]=reduce(x[i])/w;}return y;}/***/},/***/1539:/***/function(module,__unused_webpack_exports,__nested_webpack_require_64039__){\"use strict\";var rationalize=__nested_webpack_require_64039__(8524);module.exports=add;function add(a,b){return rationalize(a[0].mul(b[1]).add(b[0].mul(a[1])),a[1].mul(b[1]));}/***/},/***/8846:/***/function(module){\"use strict\";module.exports=cmp;function cmp(a,b){return a[0].mul(b[1]).cmp(b[0].mul(a[1]));}/***/},/***/9189:/***/function(module,__unused_webpack_exports,__nested_webpack_require_64418__){\"use strict\";var rationalize=__nested_webpack_require_64418__(8524);module.exports=div;function div(a,b){return rationalize(a[0].mul(b[1]),a[1].mul(b[0]));}/***/},/***/5125:/***/function(module,__unused_webpack_exports,__nested_webpack_require_64645__){\"use strict\";var isRat=__nested_webpack_require_64645__(234);var isBN=__nested_webpack_require_64645__(3218);var num2bn=__nested_webpack_require_64645__(5514);var str2bn=__nested_webpack_require_64645__(2813);var rationalize=__nested_webpack_require_64645__(8524);var div=__nested_webpack_require_64645__(9189);module.exports=makeRational;function makeRational(numer,denom){if(isRat(numer)){if(denom){return div(numer,makeRational(denom));}return[numer[0].clone(),numer[1].clone()];}var shift=0;var a,b;if(isBN(numer)){a=numer.clone();}else if(typeof numer==='string'){a=str2bn(numer);}else if(numer===0){return[num2bn(0),num2bn(1)];}else if(numer===Math.floor(numer)){a=num2bn(numer);}else{while(numer!==Math.floor(numer)){numer=numer*Math.pow(2,256);shift-=256;}a=num2bn(numer);}if(isRat(denom)){a.mul(denom[1]);b=denom[0].clone();}else if(isBN(denom)){b=denom.clone();}else if(typeof denom==='string'){b=str2bn(denom);}else if(!denom){b=num2bn(1);}else if(denom===Math.floor(denom)){b=num2bn(denom);}else{while(denom!==Math.floor(denom)){denom=denom*Math.pow(2,256);shift+=256;}b=num2bn(denom);}if(shift>0){a=a.ushln(shift);}else if(shift<0){b=b.ushln(-shift);}return rationalize(a,b);}/***/},/***/234:/***/function(module,__unused_webpack_exports,__nested_webpack_require_65839__){\"use strict\";var isBN=__nested_webpack_require_65839__(3218);module.exports=isRat;function isRat(x){return Array.isArray(x)&&x.length===2&&isBN(x[0])&&isBN(x[1]);}/***/},/***/4275:/***/function(module,__unused_webpack_exports,__nested_webpack_require_66073__){\"use strict\";var BN=__nested_webpack_require_66073__(1928);module.exports=sign;function sign(x){return x.cmp(new BN(0));}/***/},/***/9958:/***/function(module,__unused_webpack_exports,__nested_webpack_require_66265__){\"use strict\";var sign=__nested_webpack_require_66265__(4275);module.exports=bn2num;//TODO: Make this better\nfunction bn2num(b){var l=b.length;var words=b.words;var out=0;if(l===1){out=words[0];}else if(l===2){out=words[0]+words[1]*0x4000000;}else{for(var i=0;i<l;i++){var w=words[i];out+=w*Math.pow(0x4000000,i);}}return sign(b)*out;}/***/},/***/1112:/***/function(module,__unused_webpack_exports,__nested_webpack_require_66670__){\"use strict\";var db=__nested_webpack_require_66670__(8362);var ctz=__nested_webpack_require_66670__(2288).countTrailingZeros;module.exports=ctzNumber;//Counts the number of trailing zeros\nfunction ctzNumber(x){var l=ctz(db.lo(x));if(l<32){return l;}var h=ctz(db.hi(x));if(h>20){return 52;}return h+32;}/***/},/***/3218:/***/function(module,__unused_webpack_exports,__nested_webpack_require_67030__){\"use strict\";var BN=__nested_webpack_require_67030__(1928);module.exports=isBN;//Test if x is a bignumber\n//FIXME: obviously this is the wrong way to do it\nfunction isBN(x){return x&&typeof x==='object'&&Boolean(x.words);}/***/},/***/5514:/***/function(module,__unused_webpack_exports,__nested_webpack_require_67323__){\"use strict\";var BN=__nested_webpack_require_67323__(1928);var db=__nested_webpack_require_67323__(8362);module.exports=num2bn;function num2bn(x){var e=db.exponent(x);if(e<52){return new BN(x);}else{return new BN(x*Math.pow(2,52-e)).ushln(e-52);}}/***/},/***/8524:/***/function(module,__unused_webpack_exports,__nested_webpack_require_67628__){\"use strict\";var num2bn=__nested_webpack_require_67628__(5514);var sign=__nested_webpack_require_67628__(4275);module.exports=rationalize;function rationalize(numer,denom){var snumer=sign(numer);var sdenom=sign(denom);if(snumer===0){return[num2bn(0),num2bn(1)];}if(sdenom===0){return[num2bn(0),num2bn(0)];}if(sdenom<0){numer=numer.neg();denom=denom.neg();}var d=numer.gcd(denom);if(d.cmpn(1)){return[numer.div(d),denom.div(d)];}return[numer,denom];}/***/},/***/2813:/***/function(module,__unused_webpack_exports,__nested_webpack_require_68135__){\"use strict\";var BN=__nested_webpack_require_68135__(1928);module.exports=str2BN;function str2BN(x){return new BN(x);}/***/},/***/3962:/***/function(module,__unused_webpack_exports,__nested_webpack_require_68324__){\"use strict\";var rationalize=__nested_webpack_require_68324__(8524);module.exports=mul;function mul(a,b){return rationalize(a[0].mul(b[0]),a[1].mul(b[1]));}/***/},/***/4951:/***/function(module,__unused_webpack_exports,__nested_webpack_require_68551__){\"use strict\";var bnsign=__nested_webpack_require_68551__(4275);module.exports=sign;function sign(x){return bnsign(x[0])*bnsign(x[1]);}/***/},/***/4354:/***/function(module,__unused_webpack_exports,__nested_webpack_require_68756__){\"use strict\";var rationalize=__nested_webpack_require_68756__(8524);module.exports=sub;function sub(a,b){return rationalize(a[0].mul(b[1]).sub(a[1].mul(b[0])),a[1].mul(b[1]));}/***/},/***/7999:/***/function(module,__unused_webpack_exports,__nested_webpack_require_69003__){\"use strict\";var bn2num=__nested_webpack_require_69003__(9958);var ctz=__nested_webpack_require_69003__(1112);module.exports=roundRat;// Round a rational to the closest float\nfunction roundRat(f){var a=f[0];var b=f[1];if(a.cmpn(0)===0){return 0;}var h=a.abs().divmod(b.abs());var iv=h.div;var x=bn2num(iv);var ir=h.mod;var sgn=a.negative!==b.negative?-1:1;if(ir.cmpn(0)===0){return sgn*x;}if(x){var s=ctz(x)+4;var y=bn2num(ir.ushln(s).divRound(b));return sgn*(x+y*Math.pow(2,-s));}else{var ybits=b.bitLength()-ir.bitLength()+53;var y=bn2num(ir.ushln(ybits).divRound(b));if(ybits<1023){return sgn*y*Math.pow(2,-ybits);}y*=Math.pow(2,-1023);return sgn*y*Math.pow(2,1023-ybits);}}/***/},/***/5070:/***/function(module){\"use strict\";// (a, y, c, l, h) = (array, y[, cmp, lo, hi])\nfunction ge(a,y,c,l,h){var i=h+1;while(l<=h){var m=l+h>>>1,x=a[m];var p=c!==undefined?c(x,y):x-y;if(p>=0){i=m;h=m-1;}else{l=m+1;}}return i;};function gt(a,y,c,l,h){var i=h+1;while(l<=h){var m=l+h>>>1,x=a[m];var p=c!==undefined?c(x,y):x-y;if(p>0){i=m;h=m-1;}else{l=m+1;}}return i;};function lt(a,y,c,l,h){var i=l-1;while(l<=h){var m=l+h>>>1,x=a[m];var p=c!==undefined?c(x,y):x-y;if(p<0){i=m;l=m+1;}else{h=m-1;}}return i;};function le(a,y,c,l,h){var i=l-1;while(l<=h){var m=l+h>>>1,x=a[m];var p=c!==undefined?c(x,y):x-y;if(p<=0){i=m;l=m+1;}else{h=m-1;}}return i;};function eq(a,y,c,l,h){while(l<=h){var m=l+h>>>1,x=a[m];var p=c!==undefined?c(x,y):x-y;if(p===0){return m;}if(p<=0){l=m+1;}else{h=m-1;}}return-1;};function norm(a,y,c,l,h,f){if(typeof c==='function'){return f(a,y,c,l===undefined?0:l|0,h===undefined?a.length-1:h|0);}return f(a,y,undefined,c===undefined?0:c|0,l===undefined?a.length-1:l|0);}module.exports={ge:function(a,y,c,l,h){return norm(a,y,c,l,h,ge);},gt:function(a,y,c,l,h){return norm(a,y,c,l,h,gt);},lt:function(a,y,c,l,h){return norm(a,y,c,l,h,lt);},le:function(a,y,c,l,h){return norm(a,y,c,l,h,le);},eq:function(a,y,c,l,h){return norm(a,y,c,l,h,eq);}};/***/},/***/2288:/***/function(__unused_webpack_module,exports){\"use strict\";/**\n * Bit twiddling hacks for JavaScript.\n *\n * Author: Mikola Lysenko\n *\n * Ported from Stanford bit twiddling hack library:\n *    http://graphics.stanford.edu/~seander/bithacks.html\n */\"use restrict\";//Number of bits in an integer\nvar INT_BITS=32;//Constants\nexports.INT_BITS=INT_BITS;exports.INT_MAX=0x7fffffff;exports.INT_MIN=-1<<INT_BITS-1;//Returns -1, 0, +1 depending on sign of x\nexports.sign=function(v){return(v>0)-(v<0);};//Computes absolute value of integer\nexports.abs=function(v){var mask=v>>INT_BITS-1;return(v^mask)-mask;};//Computes minimum of integers x and y\nexports.min=function(x,y){return y^(x^y)&-(x<y);};//Computes maximum of integers x and y\nexports.max=function(x,y){return x^(x^y)&-(x<y);};//Checks if a number is a power of two\nexports.isPow2=function(v){return!(v&v-1)&&!!v;};//Computes log base 2 of v\nexports.log2=function(v){var r,shift;r=(v>0xFFFF)<<4;v>>>=r;shift=(v>0xFF)<<3;v>>>=shift;r|=shift;shift=(v>0xF)<<2;v>>>=shift;r|=shift;shift=(v>0x3)<<1;v>>>=shift;r|=shift;return r|v>>1;};//Computes log base 10 of v\nexports.log10=function(v){return v>=1000000000?9:v>=100000000?8:v>=10000000?7:v>=1000000?6:v>=100000?5:v>=10000?4:v>=1000?3:v>=100?2:v>=10?1:0;};//Counts number of bits\nexports.popCount=function(v){v=v-(v>>>1&0x55555555);v=(v&0x33333333)+(v>>>2&0x33333333);return(v+(v>>>4)&0xF0F0F0F)*0x1010101>>>24;};//Counts number of trailing zeros\nfunction countTrailingZeros(v){var c=32;v&=-v;if(v)c--;if(v&0x0000FFFF)c-=16;if(v&0x00FF00FF)c-=8;if(v&0x0F0F0F0F)c-=4;if(v&0x33333333)c-=2;if(v&0x55555555)c-=1;return c;}exports.countTrailingZeros=countTrailingZeros;//Rounds to next power of 2\nexports.nextPow2=function(v){v+=v===0;--v;v|=v>>>1;v|=v>>>2;v|=v>>>4;v|=v>>>8;v|=v>>>16;return v+1;};//Rounds down to previous power of 2\nexports.prevPow2=function(v){v|=v>>>1;v|=v>>>2;v|=v>>>4;v|=v>>>8;v|=v>>>16;return v-(v>>>1);};//Computes parity of word\nexports.parity=function(v){v^=v>>>16;v^=v>>>8;v^=v>>>4;v&=0xf;return 0x6996>>>v&1;};var REVERSE_TABLE=new Array(256);(function(tab){for(var i=0;i<256;++i){var v=i,r=i,s=7;for(v>>>=1;v;v>>>=1){r<<=1;r|=v&1;--s;}tab[i]=r<<s&0xff;}})(REVERSE_TABLE);//Reverse bits in a 32 bit word\nexports.reverse=function(v){return REVERSE_TABLE[v&0xff]<<24|REVERSE_TABLE[v>>>8&0xff]<<16|REVERSE_TABLE[v>>>16&0xff]<<8|REVERSE_TABLE[v>>>24&0xff];};//Interleave bits of 2 coordinates with 16 bits.  Useful for fast quadtree codes\nexports.interleave2=function(x,y){x&=0xFFFF;x=(x|x<<8)&0x00FF00FF;x=(x|x<<4)&0x0F0F0F0F;x=(x|x<<2)&0x33333333;x=(x|x<<1)&0x55555555;y&=0xFFFF;y=(y|y<<8)&0x00FF00FF;y=(y|y<<4)&0x0F0F0F0F;y=(y|y<<2)&0x33333333;y=(y|y<<1)&0x55555555;return x|y<<1;};//Extracts the nth interleaved component\nexports.deinterleave2=function(v,n){v=v>>>n&0x55555555;v=(v|v>>>1)&0x33333333;v=(v|v>>>2)&0x0F0F0F0F;v=(v|v>>>4)&0x00FF00FF;v=(v|v>>>16)&0x000FFFF;return v<<16>>16;};//Interleave bits of 3 coordinates, each with 10 bits.  Useful for fast octree codes\nexports.interleave3=function(x,y,z){x&=0x3FF;x=(x|x<<16)&4278190335;x=(x|x<<8)&251719695;x=(x|x<<4)&3272356035;x=(x|x<<2)&1227133513;y&=0x3FF;y=(y|y<<16)&4278190335;y=(y|y<<8)&251719695;y=(y|y<<4)&3272356035;y=(y|y<<2)&1227133513;x|=y<<1;z&=0x3FF;z=(z|z<<16)&4278190335;z=(z|z<<8)&251719695;z=(z|z<<4)&3272356035;z=(z|z<<2)&1227133513;return x|z<<2;};//Extracts nth interleaved component of a 3-tuple\nexports.deinterleave3=function(v,n){v=v>>>n&1227133513;v=(v|v>>>2)&3272356035;v=(v|v>>>4)&251719695;v=(v|v>>>8)&4278190335;v=(v|v>>>16)&0x3FF;return v<<22>>22;};//Computes next combination in colexicographic order (this is mistakenly called nextPermutation on the bit twiddling hacks page)\nexports.nextCombination=function(v){var t=v|v-1;return t+1|(~t&-~t)-1>>>countTrailingZeros(v)+1;};/***/},/***/1928:/***/function(module,__unused_webpack_exports,__nested_webpack_require_74812__){/* module decorator */module=__nested_webpack_require_74812__.nmd(module);(function(module,exports){'use strict';// Utils\nfunction assert(val,msg){if(!val)throw new Error(msg||'Assertion failed');}// Could use `inherits` module, but don't want to move from single file\n// architecture yet.\nfunction inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor();ctor.prototype.constructor=ctor;}// BN\nfunction BN(number,base,endian){if(BN.isBN(number)){return number;}this.negative=0;this.words=null;this.length=0;// Reduction context\nthis.red=null;if(number!==null){if(base==='le'||base==='be'){endian=base;base=10;}this._init(number||0,base||10,endian||'be');}}if(typeof module==='object'){module.exports=BN;}else{exports.BN=BN;}BN.BN=BN;BN.wordSize=26;var Buffer;try{if(typeof window!=='undefined'&&typeof window.Buffer!=='undefined'){Buffer=window.Buffer;}else{Buffer=__nested_webpack_require_74812__(6601).Buffer;}}catch(e){}BN.isBN=function isBN(num){if(num instanceof BN){return true;}return num!==null&&typeof num==='object'&&num.constructor.wordSize===BN.wordSize&&Array.isArray(num.words);};BN.max=function max(left,right){if(left.cmp(right)>0)return left;return right;};BN.min=function min(left,right){if(left.cmp(right)<0)return left;return right;};BN.prototype._init=function init(number,base,endian){if(typeof number==='number'){return this._initNumber(number,base,endian);}if(typeof number==='object'){return this._initArray(number,base,endian);}if(base==='hex'){base=16;}assert(base===(base|0)&&base>=2&&base<=36);number=number.toString().replace(/\\s+/g,'');var start=0;if(number[0]==='-'){start++;this.negative=1;}if(start<number.length){if(base===16){this._parseHex(number,start,endian);}else{this._parseBase(number,base,start);if(endian==='le'){this._initArray(this.toArray(),base,endian);}}}};BN.prototype._initNumber=function _initNumber(number,base,endian){if(number<0){this.negative=1;number=-number;}if(number<0x4000000){this.words=[number&0x3ffffff];this.length=1;}else if(number<0x10000000000000){this.words=[number&0x3ffffff,number/0x4000000&0x3ffffff];this.length=2;}else{assert(number<0x20000000000000);// 2 ^ 53 (unsafe)\nthis.words=[number&0x3ffffff,number/0x4000000&0x3ffffff,1];this.length=3;}if(endian!=='le')return;// Reverse the bytes\nthis._initArray(this.toArray(),base,endian);};BN.prototype._initArray=function _initArray(number,base,endian){// Perhaps a Uint8Array\nassert(typeof number.length==='number');if(number.length<=0){this.words=[0];this.length=1;return this;}this.length=Math.ceil(number.length/3);this.words=new Array(this.length);for(var i=0;i<this.length;i++){this.words[i]=0;}var j,w;var off=0;if(endian==='be'){for(i=number.length-1,j=0;i>=0;i-=3){w=number[i]|number[i-1]<<8|number[i-2]<<16;this.words[j]|=w<<off&0x3ffffff;this.words[j+1]=w>>>26-off&0x3ffffff;off+=24;if(off>=26){off-=26;j++;}}}else if(endian==='le'){for(i=0,j=0;i<number.length;i+=3){w=number[i]|number[i+1]<<8|number[i+2]<<16;this.words[j]|=w<<off&0x3ffffff;this.words[j+1]=w>>>26-off&0x3ffffff;off+=24;if(off>=26){off-=26;j++;}}}return this.strip();};function parseHex4Bits(string,index){var c=string.charCodeAt(index);// 'A' - 'F'\nif(c>=65&&c<=70){return c-55;// 'a' - 'f'\n}else if(c>=97&&c<=102){return c-87;// '0' - '9'\n}else{return c-48&0xf;}}function parseHexByte(string,lowerBound,index){var r=parseHex4Bits(string,index);if(index-1>=lowerBound){r|=parseHex4Bits(string,index-1)<<4;}return r;}BN.prototype._parseHex=function _parseHex(number,start,endian){// Create possibly bigger array to ensure that it fits the number\nthis.length=Math.ceil((number.length-start)/6);this.words=new Array(this.length);for(var i=0;i<this.length;i++){this.words[i]=0;}// 24-bits chunks\nvar off=0;var j=0;var w;if(endian==='be'){for(i=number.length-1;i>=start;i-=2){w=parseHexByte(number,start,i)<<off;this.words[j]|=w&0x3ffffff;if(off>=18){off-=18;j+=1;this.words[j]|=w>>>26;}else{off+=8;}}}else{var parseLength=number.length-start;for(i=parseLength%2===0?start+1:start;i<number.length;i+=2){w=parseHexByte(number,start,i)<<off;this.words[j]|=w&0x3ffffff;if(off>=18){off-=18;j+=1;this.words[j]|=w>>>26;}else{off+=8;}}}this.strip();};function parseBase(str,start,end,mul){var r=0;var len=Math.min(str.length,end);for(var i=start;i<len;i++){var c=str.charCodeAt(i)-48;r*=mul;// 'a'\nif(c>=49){r+=c-49+0xa;// 'A'\n}else if(c>=17){r+=c-17+0xa;// '0' - '9'\n}else{r+=c;}}return r;}BN.prototype._parseBase=function _parseBase(number,base,start){// Initialize as zero\nthis.words=[0];this.length=1;// Find length of limb in base\nfor(var limbLen=0,limbPow=1;limbPow<=0x3ffffff;limbPow*=base){limbLen++;}limbLen--;limbPow=limbPow/base|0;var total=number.length-start;var mod=total%limbLen;var end=Math.min(total,total-mod)+start;var word=0;for(var i=start;i<end;i+=limbLen){word=parseBase(number,i,i+limbLen,base);this.imuln(limbPow);if(this.words[0]+word<0x4000000){this.words[0]+=word;}else{this._iaddn(word);}}if(mod!==0){var pow=1;word=parseBase(number,i,number.length,base);for(i=0;i<mod;i++){pow*=base;}this.imuln(pow);if(this.words[0]+word<0x4000000){this.words[0]+=word;}else{this._iaddn(word);}}this.strip();};BN.prototype.copy=function copy(dest){dest.words=new Array(this.length);for(var i=0;i<this.length;i++){dest.words[i]=this.words[i];}dest.length=this.length;dest.negative=this.negative;dest.red=this.red;};BN.prototype.clone=function clone(){var r=new BN(null);this.copy(r);return r;};BN.prototype._expand=function _expand(size){while(this.length<size){this.words[this.length++]=0;}return this;};// Remove leading `0` from `this`\nBN.prototype.strip=function strip(){while(this.length>1&&this.words[this.length-1]===0){this.length--;}return this._normSign();};BN.prototype._normSign=function _normSign(){// -0 = 0\nif(this.length===1&&this.words[0]===0){this.negative=0;}return this;};BN.prototype.inspect=function inspect(){return(this.red?'<BN-R: ':'<BN: ')+this.toString(16)+'>';};/*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */var zeros=['','0','00','000','0000','00000','000000','0000000','00000000','000000000','0000000000','00000000000','000000000000','0000000000000','00000000000000','000000000000000','0000000000000000','00000000000000000','000000000000000000','0000000000000000000','00000000000000000000','000000000000000000000','0000000000000000000000','00000000000000000000000','000000000000000000000000','0000000000000000000000000'];var groupSizes=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5];var groupBases=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,10000000,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64000000,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,24300000,28629151,33554432,39135393,45435424,52521875,60466176];BN.prototype.toString=function toString(base,padding){base=base||10;padding=padding|0||1;var out;if(base===16||base==='hex'){out='';var off=0;var carry=0;for(var i=0;i<this.length;i++){var w=this.words[i];var word=((w<<off|carry)&0xffffff).toString(16);carry=w>>>24-off&0xffffff;if(carry!==0||i!==this.length-1){out=zeros[6-word.length]+word+out;}else{out=word+out;}off+=2;if(off>=26){off-=26;i--;}}if(carry!==0){out=carry.toString(16)+out;}while(out.length%padding!==0){out='0'+out;}if(this.negative!==0){out='-'+out;}return out;}if(base===(base|0)&&base>=2&&base<=36){// var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\nvar groupSize=groupSizes[base];// var groupBase = Math.pow(base, groupSize);\nvar groupBase=groupBases[base];out='';var c=this.clone();c.negative=0;while(!c.isZero()){var r=c.modn(groupBase).toString(base);c=c.idivn(groupBase);if(!c.isZero()){out=zeros[groupSize-r.length]+r+out;}else{out=r+out;}}if(this.isZero()){out='0'+out;}while(out.length%padding!==0){out='0'+out;}if(this.negative!==0){out='-'+out;}return out;}assert(false,'Base should be between 2 and 36');};BN.prototype.toNumber=function toNumber(){var ret=this.words[0];if(this.length===2){ret+=this.words[1]*0x4000000;}else if(this.length===3&&this.words[2]===0x01){// NOTE: at this stage it is known that the top bit is set\nret+=0x10000000000000+this.words[1]*0x4000000;}else if(this.length>2){assert(false,'Number can only safely store up to 53 bits');}return this.negative!==0?-ret:ret;};BN.prototype.toJSON=function toJSON(){return this.toString(16);};BN.prototype.toBuffer=function toBuffer(endian,length){assert(typeof Buffer!=='undefined');return this.toArrayLike(Buffer,endian,length);};BN.prototype.toArray=function toArray(endian,length){return this.toArrayLike(Array,endian,length);};BN.prototype.toArrayLike=function toArrayLike(ArrayType,endian,length){var byteLength=this.byteLength();var reqLength=length||Math.max(1,byteLength);assert(byteLength<=reqLength,'byte array longer than desired length');assert(reqLength>0,'Requested array length <= 0');this.strip();var littleEndian=endian==='le';var res=new ArrayType(reqLength);var b,i;var q=this.clone();if(!littleEndian){// Assume big-endian\nfor(i=0;i<reqLength-byteLength;i++){res[i]=0;}for(i=0;!q.isZero();i++){b=q.andln(0xff);q.iushrn(8);res[reqLength-i-1]=b;}}else{for(i=0;!q.isZero();i++){b=q.andln(0xff);q.iushrn(8);res[i]=b;}for(;i<reqLength;i++){res[i]=0;}}return res;};if(Math.clz32){BN.prototype._countBits=function _countBits(w){return 32-Math.clz32(w);};}else{BN.prototype._countBits=function _countBits(w){var t=w;var r=0;if(t>=0x1000){r+=13;t>>>=13;}if(t>=0x40){r+=7;t>>>=7;}if(t>=0x8){r+=4;t>>>=4;}if(t>=0x02){r+=2;t>>>=2;}return r+t;};}BN.prototype._zeroBits=function _zeroBits(w){// Short-cut\nif(w===0)return 26;var t=w;var r=0;if((t&0x1fff)===0){r+=13;t>>>=13;}if((t&0x7f)===0){r+=7;t>>>=7;}if((t&0xf)===0){r+=4;t>>>=4;}if((t&0x3)===0){r+=2;t>>>=2;}if((t&0x1)===0){r++;}return r;};// Return number of used bits in a BN\nBN.prototype.bitLength=function bitLength(){var w=this.words[this.length-1];var hi=this._countBits(w);return(this.length-1)*26+hi;};function toBitArray(num){var w=new Array(num.bitLength());for(var bit=0;bit<w.length;bit++){var off=bit/26|0;var wbit=bit%26;w[bit]=(num.words[off]&1<<wbit)>>>wbit;}return w;}// Number of trailing zero bits\nBN.prototype.zeroBits=function zeroBits(){if(this.isZero())return 0;var r=0;for(var i=0;i<this.length;i++){var b=this._zeroBits(this.words[i]);r+=b;if(b!==26)break;}return r;};BN.prototype.byteLength=function byteLength(){return Math.ceil(this.bitLength()/8);};BN.prototype.toTwos=function toTwos(width){if(this.negative!==0){return this.abs().inotn(width).iaddn(1);}return this.clone();};BN.prototype.fromTwos=function fromTwos(width){if(this.testn(width-1)){return this.notn(width).iaddn(1).ineg();}return this.clone();};BN.prototype.isNeg=function isNeg(){return this.negative!==0;};// Return negative clone of `this`\nBN.prototype.neg=function neg(){return this.clone().ineg();};BN.prototype.ineg=function ineg(){if(!this.isZero()){this.negative^=1;}return this;};// Or `num` with `this` in-place\nBN.prototype.iuor=function iuor(num){while(this.length<num.length){this.words[this.length++]=0;}for(var i=0;i<num.length;i++){this.words[i]=this.words[i]|num.words[i];}return this.strip();};BN.prototype.ior=function ior(num){assert((this.negative|num.negative)===0);return this.iuor(num);};// Or `num` with `this`\nBN.prototype.or=function or(num){if(this.length>num.length)return this.clone().ior(num);return num.clone().ior(this);};BN.prototype.uor=function uor(num){if(this.length>num.length)return this.clone().iuor(num);return num.clone().iuor(this);};// And `num` with `this` in-place\nBN.prototype.iuand=function iuand(num){// b = min-length(num, this)\nvar b;if(this.length>num.length){b=num;}else{b=this;}for(var i=0;i<b.length;i++){this.words[i]=this.words[i]&num.words[i];}this.length=b.length;return this.strip();};BN.prototype.iand=function iand(num){assert((this.negative|num.negative)===0);return this.iuand(num);};// And `num` with `this`\nBN.prototype.and=function and(num){if(this.length>num.length)return this.clone().iand(num);return num.clone().iand(this);};BN.prototype.uand=function uand(num){if(this.length>num.length)return this.clone().iuand(num);return num.clone().iuand(this);};// Xor `num` with `this` in-place\nBN.prototype.iuxor=function iuxor(num){// a.length > b.length\nvar a;var b;if(this.length>num.length){a=this;b=num;}else{a=num;b=this;}for(var i=0;i<b.length;i++){this.words[i]=a.words[i]^b.words[i];}if(this!==a){for(;i<a.length;i++){this.words[i]=a.words[i];}}this.length=a.length;return this.strip();};BN.prototype.ixor=function ixor(num){assert((this.negative|num.negative)===0);return this.iuxor(num);};// Xor `num` with `this`\nBN.prototype.xor=function xor(num){if(this.length>num.length)return this.clone().ixor(num);return num.clone().ixor(this);};BN.prototype.uxor=function uxor(num){if(this.length>num.length)return this.clone().iuxor(num);return num.clone().iuxor(this);};// Not ``this`` with ``width`` bitwidth\nBN.prototype.inotn=function inotn(width){assert(typeof width==='number'&&width>=0);var bytesNeeded=Math.ceil(width/26)|0;var bitsLeft=width%26;// Extend the buffer with leading zeroes\nthis._expand(bytesNeeded);if(bitsLeft>0){bytesNeeded--;}// Handle complete words\nfor(var i=0;i<bytesNeeded;i++){this.words[i]=~this.words[i]&0x3ffffff;}// Handle the residue\nif(bitsLeft>0){this.words[i]=~this.words[i]&0x3ffffff>>26-bitsLeft;}// And remove leading zeroes\nreturn this.strip();};BN.prototype.notn=function notn(width){return this.clone().inotn(width);};// Set `bit` of `this`\nBN.prototype.setn=function setn(bit,val){assert(typeof bit==='number'&&bit>=0);var off=bit/26|0;var wbit=bit%26;this._expand(off+1);if(val){this.words[off]=this.words[off]|1<<wbit;}else{this.words[off]=this.words[off]&~(1<<wbit);}return this.strip();};// Add `num` to `this` in-place\nBN.prototype.iadd=function iadd(num){var r;// negative + positive\nif(this.negative!==0&&num.negative===0){this.negative=0;r=this.isub(num);this.negative^=1;return this._normSign();// positive + negative\n}else if(this.negative===0&&num.negative!==0){num.negative=0;r=this.isub(num);num.negative=1;return r._normSign();}// a.length > b.length\nvar a,b;if(this.length>num.length){a=this;b=num;}else{a=num;b=this;}var carry=0;for(var i=0;i<b.length;i++){r=(a.words[i]|0)+(b.words[i]|0)+carry;this.words[i]=r&0x3ffffff;carry=r>>>26;}for(;carry!==0&&i<a.length;i++){r=(a.words[i]|0)+carry;this.words[i]=r&0x3ffffff;carry=r>>>26;}this.length=a.length;if(carry!==0){this.words[this.length]=carry;this.length++;// Copy the rest of the words\n}else if(a!==this){for(;i<a.length;i++){this.words[i]=a.words[i];}}return this;};// Add `num` to `this`\nBN.prototype.add=function add(num){var res;if(num.negative!==0&&this.negative===0){num.negative=0;res=this.sub(num);num.negative^=1;return res;}else if(num.negative===0&&this.negative!==0){this.negative=0;res=num.sub(this);this.negative=1;return res;}if(this.length>num.length)return this.clone().iadd(num);return num.clone().iadd(this);};// Subtract `num` from `this` in-place\nBN.prototype.isub=function isub(num){// this - (-num) = this + num\nif(num.negative!==0){num.negative=0;var r=this.iadd(num);num.negative=1;return r._normSign();// -this - num = -(this + num)\n}else if(this.negative!==0){this.negative=0;this.iadd(num);this.negative=1;return this._normSign();}// At this point both numbers are positive\nvar cmp=this.cmp(num);// Optimization - zeroify\nif(cmp===0){this.negative=0;this.length=1;this.words[0]=0;return this;}// a > b\nvar a,b;if(cmp>0){a=this;b=num;}else{a=num;b=this;}var carry=0;for(var i=0;i<b.length;i++){r=(a.words[i]|0)-(b.words[i]|0)+carry;carry=r>>26;this.words[i]=r&0x3ffffff;}for(;carry!==0&&i<a.length;i++){r=(a.words[i]|0)+carry;carry=r>>26;this.words[i]=r&0x3ffffff;}// Copy rest of the words\nif(carry===0&&i<a.length&&a!==this){for(;i<a.length;i++){this.words[i]=a.words[i];}}this.length=Math.max(this.length,i);if(a!==this){this.negative=1;}return this.strip();};// Subtract `num` from `this`\nBN.prototype.sub=function sub(num){return this.clone().isub(num);};function smallMulTo(self,num,out){out.negative=num.negative^self.negative;var len=self.length+num.length|0;out.length=len;len=len-1|0;// Peel one iteration (compiler can't do it, because of code complexity)\nvar a=self.words[0]|0;var b=num.words[0]|0;var r=a*b;var lo=r&0x3ffffff;var carry=r/0x4000000|0;out.words[0]=lo;for(var k=1;k<len;k++){// Sum all words with the same `i + j = k` and accumulate `ncarry`,\n// note that ncarry could be >= 0x3ffffff\nvar ncarry=carry>>>26;var rword=carry&0x3ffffff;var maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-self.length+1);j<=maxJ;j++){var i=k-j|0;a=self.words[i]|0;b=num.words[j]|0;r=a*b+rword;ncarry+=r/0x4000000|0;rword=r&0x3ffffff;}out.words[k]=rword|0;carry=ncarry|0;}if(carry!==0){out.words[k]=carry|0;}else{out.length--;}return out.strip();}// TODO(indutny): it may be reasonable to omit it for users who don't need\n// to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n// multiplication (like elliptic secp256k1).\nvar comb10MulTo=function comb10MulTo(self,num,out){var a=self.words;var b=num.words;var o=out.words;var c=0;var lo;var mid;var hi;var a0=a[0]|0;var al0=a0&0x1fff;var ah0=a0>>>13;var a1=a[1]|0;var al1=a1&0x1fff;var ah1=a1>>>13;var a2=a[2]|0;var al2=a2&0x1fff;var ah2=a2>>>13;var a3=a[3]|0;var al3=a3&0x1fff;var ah3=a3>>>13;var a4=a[4]|0;var al4=a4&0x1fff;var ah4=a4>>>13;var a5=a[5]|0;var al5=a5&0x1fff;var ah5=a5>>>13;var a6=a[6]|0;var al6=a6&0x1fff;var ah6=a6>>>13;var a7=a[7]|0;var al7=a7&0x1fff;var ah7=a7>>>13;var a8=a[8]|0;var al8=a8&0x1fff;var ah8=a8>>>13;var a9=a[9]|0;var al9=a9&0x1fff;var ah9=a9>>>13;var b0=b[0]|0;var bl0=b0&0x1fff;var bh0=b0>>>13;var b1=b[1]|0;var bl1=b1&0x1fff;var bh1=b1>>>13;var b2=b[2]|0;var bl2=b2&0x1fff;var bh2=b2>>>13;var b3=b[3]|0;var bl3=b3&0x1fff;var bh3=b3>>>13;var b4=b[4]|0;var bl4=b4&0x1fff;var bh4=b4>>>13;var b5=b[5]|0;var bl5=b5&0x1fff;var bh5=b5>>>13;var b6=b[6]|0;var bl6=b6&0x1fff;var bh6=b6>>>13;var b7=b[7]|0;var bl7=b7&0x1fff;var bh7=b7>>>13;var b8=b[8]|0;var bl8=b8&0x1fff;var bh8=b8>>>13;var b9=b[9]|0;var bl9=b9&0x1fff;var bh9=b9>>>13;out.negative=self.negative^num.negative;out.length=19;/* k = 0 */lo=Math.imul(al0,bl0);mid=Math.imul(al0,bh0);mid=mid+Math.imul(ah0,bl0)|0;hi=Math.imul(ah0,bh0);var w0=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w0>>>26)|0;w0&=0x3ffffff;/* k = 1 */lo=Math.imul(al1,bl0);mid=Math.imul(al1,bh0);mid=mid+Math.imul(ah1,bl0)|0;hi=Math.imul(ah1,bh0);lo=lo+Math.imul(al0,bl1)|0;mid=mid+Math.imul(al0,bh1)|0;mid=mid+Math.imul(ah0,bl1)|0;hi=hi+Math.imul(ah0,bh1)|0;var w1=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w1>>>26)|0;w1&=0x3ffffff;/* k = 2 */lo=Math.imul(al2,bl0);mid=Math.imul(al2,bh0);mid=mid+Math.imul(ah2,bl0)|0;hi=Math.imul(ah2,bh0);lo=lo+Math.imul(al1,bl1)|0;mid=mid+Math.imul(al1,bh1)|0;mid=mid+Math.imul(ah1,bl1)|0;hi=hi+Math.imul(ah1,bh1)|0;lo=lo+Math.imul(al0,bl2)|0;mid=mid+Math.imul(al0,bh2)|0;mid=mid+Math.imul(ah0,bl2)|0;hi=hi+Math.imul(ah0,bh2)|0;var w2=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w2>>>26)|0;w2&=0x3ffffff;/* k = 3 */lo=Math.imul(al3,bl0);mid=Math.imul(al3,bh0);mid=mid+Math.imul(ah3,bl0)|0;hi=Math.imul(ah3,bh0);lo=lo+Math.imul(al2,bl1)|0;mid=mid+Math.imul(al2,bh1)|0;mid=mid+Math.imul(ah2,bl1)|0;hi=hi+Math.imul(ah2,bh1)|0;lo=lo+Math.imul(al1,bl2)|0;mid=mid+Math.imul(al1,bh2)|0;mid=mid+Math.imul(ah1,bl2)|0;hi=hi+Math.imul(ah1,bh2)|0;lo=lo+Math.imul(al0,bl3)|0;mid=mid+Math.imul(al0,bh3)|0;mid=mid+Math.imul(ah0,bl3)|0;hi=hi+Math.imul(ah0,bh3)|0;var w3=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w3>>>26)|0;w3&=0x3ffffff;/* k = 4 */lo=Math.imul(al4,bl0);mid=Math.imul(al4,bh0);mid=mid+Math.imul(ah4,bl0)|0;hi=Math.imul(ah4,bh0);lo=lo+Math.imul(al3,bl1)|0;mid=mid+Math.imul(al3,bh1)|0;mid=mid+Math.imul(ah3,bl1)|0;hi=hi+Math.imul(ah3,bh1)|0;lo=lo+Math.imul(al2,bl2)|0;mid=mid+Math.imul(al2,bh2)|0;mid=mid+Math.imul(ah2,bl2)|0;hi=hi+Math.imul(ah2,bh2)|0;lo=lo+Math.imul(al1,bl3)|0;mid=mid+Math.imul(al1,bh3)|0;mid=mid+Math.imul(ah1,bl3)|0;hi=hi+Math.imul(ah1,bh3)|0;lo=lo+Math.imul(al0,bl4)|0;mid=mid+Math.imul(al0,bh4)|0;mid=mid+Math.imul(ah0,bl4)|0;hi=hi+Math.imul(ah0,bh4)|0;var w4=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w4>>>26)|0;w4&=0x3ffffff;/* k = 5 */lo=Math.imul(al5,bl0);mid=Math.imul(al5,bh0);mid=mid+Math.imul(ah5,bl0)|0;hi=Math.imul(ah5,bh0);lo=lo+Math.imul(al4,bl1)|0;mid=mid+Math.imul(al4,bh1)|0;mid=mid+Math.imul(ah4,bl1)|0;hi=hi+Math.imul(ah4,bh1)|0;lo=lo+Math.imul(al3,bl2)|0;mid=mid+Math.imul(al3,bh2)|0;mid=mid+Math.imul(ah3,bl2)|0;hi=hi+Math.imul(ah3,bh2)|0;lo=lo+Math.imul(al2,bl3)|0;mid=mid+Math.imul(al2,bh3)|0;mid=mid+Math.imul(ah2,bl3)|0;hi=hi+Math.imul(ah2,bh3)|0;lo=lo+Math.imul(al1,bl4)|0;mid=mid+Math.imul(al1,bh4)|0;mid=mid+Math.imul(ah1,bl4)|0;hi=hi+Math.imul(ah1,bh4)|0;lo=lo+Math.imul(al0,bl5)|0;mid=mid+Math.imul(al0,bh5)|0;mid=mid+Math.imul(ah0,bl5)|0;hi=hi+Math.imul(ah0,bh5)|0;var w5=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w5>>>26)|0;w5&=0x3ffffff;/* k = 6 */lo=Math.imul(al6,bl0);mid=Math.imul(al6,bh0);mid=mid+Math.imul(ah6,bl0)|0;hi=Math.imul(ah6,bh0);lo=lo+Math.imul(al5,bl1)|0;mid=mid+Math.imul(al5,bh1)|0;mid=mid+Math.imul(ah5,bl1)|0;hi=hi+Math.imul(ah5,bh1)|0;lo=lo+Math.imul(al4,bl2)|0;mid=mid+Math.imul(al4,bh2)|0;mid=mid+Math.imul(ah4,bl2)|0;hi=hi+Math.imul(ah4,bh2)|0;lo=lo+Math.imul(al3,bl3)|0;mid=mid+Math.imul(al3,bh3)|0;mid=mid+Math.imul(ah3,bl3)|0;hi=hi+Math.imul(ah3,bh3)|0;lo=lo+Math.imul(al2,bl4)|0;mid=mid+Math.imul(al2,bh4)|0;mid=mid+Math.imul(ah2,bl4)|0;hi=hi+Math.imul(ah2,bh4)|0;lo=lo+Math.imul(al1,bl5)|0;mid=mid+Math.imul(al1,bh5)|0;mid=mid+Math.imul(ah1,bl5)|0;hi=hi+Math.imul(ah1,bh5)|0;lo=lo+Math.imul(al0,bl6)|0;mid=mid+Math.imul(al0,bh6)|0;mid=mid+Math.imul(ah0,bl6)|0;hi=hi+Math.imul(ah0,bh6)|0;var w6=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w6>>>26)|0;w6&=0x3ffffff;/* k = 7 */lo=Math.imul(al7,bl0);mid=Math.imul(al7,bh0);mid=mid+Math.imul(ah7,bl0)|0;hi=Math.imul(ah7,bh0);lo=lo+Math.imul(al6,bl1)|0;mid=mid+Math.imul(al6,bh1)|0;mid=mid+Math.imul(ah6,bl1)|0;hi=hi+Math.imul(ah6,bh1)|0;lo=lo+Math.imul(al5,bl2)|0;mid=mid+Math.imul(al5,bh2)|0;mid=mid+Math.imul(ah5,bl2)|0;hi=hi+Math.imul(ah5,bh2)|0;lo=lo+Math.imul(al4,bl3)|0;mid=mid+Math.imul(al4,bh3)|0;mid=mid+Math.imul(ah4,bl3)|0;hi=hi+Math.imul(ah4,bh3)|0;lo=lo+Math.imul(al3,bl4)|0;mid=mid+Math.imul(al3,bh4)|0;mid=mid+Math.imul(ah3,bl4)|0;hi=hi+Math.imul(ah3,bh4)|0;lo=lo+Math.imul(al2,bl5)|0;mid=mid+Math.imul(al2,bh5)|0;mid=mid+Math.imul(ah2,bl5)|0;hi=hi+Math.imul(ah2,bh5)|0;lo=lo+Math.imul(al1,bl6)|0;mid=mid+Math.imul(al1,bh6)|0;mid=mid+Math.imul(ah1,bl6)|0;hi=hi+Math.imul(ah1,bh6)|0;lo=lo+Math.imul(al0,bl7)|0;mid=mid+Math.imul(al0,bh7)|0;mid=mid+Math.imul(ah0,bl7)|0;hi=hi+Math.imul(ah0,bh7)|0;var w7=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w7>>>26)|0;w7&=0x3ffffff;/* k = 8 */lo=Math.imul(al8,bl0);mid=Math.imul(al8,bh0);mid=mid+Math.imul(ah8,bl0)|0;hi=Math.imul(ah8,bh0);lo=lo+Math.imul(al7,bl1)|0;mid=mid+Math.imul(al7,bh1)|0;mid=mid+Math.imul(ah7,bl1)|0;hi=hi+Math.imul(ah7,bh1)|0;lo=lo+Math.imul(al6,bl2)|0;mid=mid+Math.imul(al6,bh2)|0;mid=mid+Math.imul(ah6,bl2)|0;hi=hi+Math.imul(ah6,bh2)|0;lo=lo+Math.imul(al5,bl3)|0;mid=mid+Math.imul(al5,bh3)|0;mid=mid+Math.imul(ah5,bl3)|0;hi=hi+Math.imul(ah5,bh3)|0;lo=lo+Math.imul(al4,bl4)|0;mid=mid+Math.imul(al4,bh4)|0;mid=mid+Math.imul(ah4,bl4)|0;hi=hi+Math.imul(ah4,bh4)|0;lo=lo+Math.imul(al3,bl5)|0;mid=mid+Math.imul(al3,bh5)|0;mid=mid+Math.imul(ah3,bl5)|0;hi=hi+Math.imul(ah3,bh5)|0;lo=lo+Math.imul(al2,bl6)|0;mid=mid+Math.imul(al2,bh6)|0;mid=mid+Math.imul(ah2,bl6)|0;hi=hi+Math.imul(ah2,bh6)|0;lo=lo+Math.imul(al1,bl7)|0;mid=mid+Math.imul(al1,bh7)|0;mid=mid+Math.imul(ah1,bl7)|0;hi=hi+Math.imul(ah1,bh7)|0;lo=lo+Math.imul(al0,bl8)|0;mid=mid+Math.imul(al0,bh8)|0;mid=mid+Math.imul(ah0,bl8)|0;hi=hi+Math.imul(ah0,bh8)|0;var w8=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w8>>>26)|0;w8&=0x3ffffff;/* k = 9 */lo=Math.imul(al9,bl0);mid=Math.imul(al9,bh0);mid=mid+Math.imul(ah9,bl0)|0;hi=Math.imul(ah9,bh0);lo=lo+Math.imul(al8,bl1)|0;mid=mid+Math.imul(al8,bh1)|0;mid=mid+Math.imul(ah8,bl1)|0;hi=hi+Math.imul(ah8,bh1)|0;lo=lo+Math.imul(al7,bl2)|0;mid=mid+Math.imul(al7,bh2)|0;mid=mid+Math.imul(ah7,bl2)|0;hi=hi+Math.imul(ah7,bh2)|0;lo=lo+Math.imul(al6,bl3)|0;mid=mid+Math.imul(al6,bh3)|0;mid=mid+Math.imul(ah6,bl3)|0;hi=hi+Math.imul(ah6,bh3)|0;lo=lo+Math.imul(al5,bl4)|0;mid=mid+Math.imul(al5,bh4)|0;mid=mid+Math.imul(ah5,bl4)|0;hi=hi+Math.imul(ah5,bh4)|0;lo=lo+Math.imul(al4,bl5)|0;mid=mid+Math.imul(al4,bh5)|0;mid=mid+Math.imul(ah4,bl5)|0;hi=hi+Math.imul(ah4,bh5)|0;lo=lo+Math.imul(al3,bl6)|0;mid=mid+Math.imul(al3,bh6)|0;mid=mid+Math.imul(ah3,bl6)|0;hi=hi+Math.imul(ah3,bh6)|0;lo=lo+Math.imul(al2,bl7)|0;mid=mid+Math.imul(al2,bh7)|0;mid=mid+Math.imul(ah2,bl7)|0;hi=hi+Math.imul(ah2,bh7)|0;lo=lo+Math.imul(al1,bl8)|0;mid=mid+Math.imul(al1,bh8)|0;mid=mid+Math.imul(ah1,bl8)|0;hi=hi+Math.imul(ah1,bh8)|0;lo=lo+Math.imul(al0,bl9)|0;mid=mid+Math.imul(al0,bh9)|0;mid=mid+Math.imul(ah0,bl9)|0;hi=hi+Math.imul(ah0,bh9)|0;var w9=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w9>>>26)|0;w9&=0x3ffffff;/* k = 10 */lo=Math.imul(al9,bl1);mid=Math.imul(al9,bh1);mid=mid+Math.imul(ah9,bl1)|0;hi=Math.imul(ah9,bh1);lo=lo+Math.imul(al8,bl2)|0;mid=mid+Math.imul(al8,bh2)|0;mid=mid+Math.imul(ah8,bl2)|0;hi=hi+Math.imul(ah8,bh2)|0;lo=lo+Math.imul(al7,bl3)|0;mid=mid+Math.imul(al7,bh3)|0;mid=mid+Math.imul(ah7,bl3)|0;hi=hi+Math.imul(ah7,bh3)|0;lo=lo+Math.imul(al6,bl4)|0;mid=mid+Math.imul(al6,bh4)|0;mid=mid+Math.imul(ah6,bl4)|0;hi=hi+Math.imul(ah6,bh4)|0;lo=lo+Math.imul(al5,bl5)|0;mid=mid+Math.imul(al5,bh5)|0;mid=mid+Math.imul(ah5,bl5)|0;hi=hi+Math.imul(ah5,bh5)|0;lo=lo+Math.imul(al4,bl6)|0;mid=mid+Math.imul(al4,bh6)|0;mid=mid+Math.imul(ah4,bl6)|0;hi=hi+Math.imul(ah4,bh6)|0;lo=lo+Math.imul(al3,bl7)|0;mid=mid+Math.imul(al3,bh7)|0;mid=mid+Math.imul(ah3,bl7)|0;hi=hi+Math.imul(ah3,bh7)|0;lo=lo+Math.imul(al2,bl8)|0;mid=mid+Math.imul(al2,bh8)|0;mid=mid+Math.imul(ah2,bl8)|0;hi=hi+Math.imul(ah2,bh8)|0;lo=lo+Math.imul(al1,bl9)|0;mid=mid+Math.imul(al1,bh9)|0;mid=mid+Math.imul(ah1,bl9)|0;hi=hi+Math.imul(ah1,bh9)|0;var w10=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w10>>>26)|0;w10&=0x3ffffff;/* k = 11 */lo=Math.imul(al9,bl2);mid=Math.imul(al9,bh2);mid=mid+Math.imul(ah9,bl2)|0;hi=Math.imul(ah9,bh2);lo=lo+Math.imul(al8,bl3)|0;mid=mid+Math.imul(al8,bh3)|0;mid=mid+Math.imul(ah8,bl3)|0;hi=hi+Math.imul(ah8,bh3)|0;lo=lo+Math.imul(al7,bl4)|0;mid=mid+Math.imul(al7,bh4)|0;mid=mid+Math.imul(ah7,bl4)|0;hi=hi+Math.imul(ah7,bh4)|0;lo=lo+Math.imul(al6,bl5)|0;mid=mid+Math.imul(al6,bh5)|0;mid=mid+Math.imul(ah6,bl5)|0;hi=hi+Math.imul(ah6,bh5)|0;lo=lo+Math.imul(al5,bl6)|0;mid=mid+Math.imul(al5,bh6)|0;mid=mid+Math.imul(ah5,bl6)|0;hi=hi+Math.imul(ah5,bh6)|0;lo=lo+Math.imul(al4,bl7)|0;mid=mid+Math.imul(al4,bh7)|0;mid=mid+Math.imul(ah4,bl7)|0;hi=hi+Math.imul(ah4,bh7)|0;lo=lo+Math.imul(al3,bl8)|0;mid=mid+Math.imul(al3,bh8)|0;mid=mid+Math.imul(ah3,bl8)|0;hi=hi+Math.imul(ah3,bh8)|0;lo=lo+Math.imul(al2,bl9)|0;mid=mid+Math.imul(al2,bh9)|0;mid=mid+Math.imul(ah2,bl9)|0;hi=hi+Math.imul(ah2,bh9)|0;var w11=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w11>>>26)|0;w11&=0x3ffffff;/* k = 12 */lo=Math.imul(al9,bl3);mid=Math.imul(al9,bh3);mid=mid+Math.imul(ah9,bl3)|0;hi=Math.imul(ah9,bh3);lo=lo+Math.imul(al8,bl4)|0;mid=mid+Math.imul(al8,bh4)|0;mid=mid+Math.imul(ah8,bl4)|0;hi=hi+Math.imul(ah8,bh4)|0;lo=lo+Math.imul(al7,bl5)|0;mid=mid+Math.imul(al7,bh5)|0;mid=mid+Math.imul(ah7,bl5)|0;hi=hi+Math.imul(ah7,bh5)|0;lo=lo+Math.imul(al6,bl6)|0;mid=mid+Math.imul(al6,bh6)|0;mid=mid+Math.imul(ah6,bl6)|0;hi=hi+Math.imul(ah6,bh6)|0;lo=lo+Math.imul(al5,bl7)|0;mid=mid+Math.imul(al5,bh7)|0;mid=mid+Math.imul(ah5,bl7)|0;hi=hi+Math.imul(ah5,bh7)|0;lo=lo+Math.imul(al4,bl8)|0;mid=mid+Math.imul(al4,bh8)|0;mid=mid+Math.imul(ah4,bl8)|0;hi=hi+Math.imul(ah4,bh8)|0;lo=lo+Math.imul(al3,bl9)|0;mid=mid+Math.imul(al3,bh9)|0;mid=mid+Math.imul(ah3,bl9)|0;hi=hi+Math.imul(ah3,bh9)|0;var w12=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w12>>>26)|0;w12&=0x3ffffff;/* k = 13 */lo=Math.imul(al9,bl4);mid=Math.imul(al9,bh4);mid=mid+Math.imul(ah9,bl4)|0;hi=Math.imul(ah9,bh4);lo=lo+Math.imul(al8,bl5)|0;mid=mid+Math.imul(al8,bh5)|0;mid=mid+Math.imul(ah8,bl5)|0;hi=hi+Math.imul(ah8,bh5)|0;lo=lo+Math.imul(al7,bl6)|0;mid=mid+Math.imul(al7,bh6)|0;mid=mid+Math.imul(ah7,bl6)|0;hi=hi+Math.imul(ah7,bh6)|0;lo=lo+Math.imul(al6,bl7)|0;mid=mid+Math.imul(al6,bh7)|0;mid=mid+Math.imul(ah6,bl7)|0;hi=hi+Math.imul(ah6,bh7)|0;lo=lo+Math.imul(al5,bl8)|0;mid=mid+Math.imul(al5,bh8)|0;mid=mid+Math.imul(ah5,bl8)|0;hi=hi+Math.imul(ah5,bh8)|0;lo=lo+Math.imul(al4,bl9)|0;mid=mid+Math.imul(al4,bh9)|0;mid=mid+Math.imul(ah4,bl9)|0;hi=hi+Math.imul(ah4,bh9)|0;var w13=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w13>>>26)|0;w13&=0x3ffffff;/* k = 14 */lo=Math.imul(al9,bl5);mid=Math.imul(al9,bh5);mid=mid+Math.imul(ah9,bl5)|0;hi=Math.imul(ah9,bh5);lo=lo+Math.imul(al8,bl6)|0;mid=mid+Math.imul(al8,bh6)|0;mid=mid+Math.imul(ah8,bl6)|0;hi=hi+Math.imul(ah8,bh6)|0;lo=lo+Math.imul(al7,bl7)|0;mid=mid+Math.imul(al7,bh7)|0;mid=mid+Math.imul(ah7,bl7)|0;hi=hi+Math.imul(ah7,bh7)|0;lo=lo+Math.imul(al6,bl8)|0;mid=mid+Math.imul(al6,bh8)|0;mid=mid+Math.imul(ah6,bl8)|0;hi=hi+Math.imul(ah6,bh8)|0;lo=lo+Math.imul(al5,bl9)|0;mid=mid+Math.imul(al5,bh9)|0;mid=mid+Math.imul(ah5,bl9)|0;hi=hi+Math.imul(ah5,bh9)|0;var w14=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w14>>>26)|0;w14&=0x3ffffff;/* k = 15 */lo=Math.imul(al9,bl6);mid=Math.imul(al9,bh6);mid=mid+Math.imul(ah9,bl6)|0;hi=Math.imul(ah9,bh6);lo=lo+Math.imul(al8,bl7)|0;mid=mid+Math.imul(al8,bh7)|0;mid=mid+Math.imul(ah8,bl7)|0;hi=hi+Math.imul(ah8,bh7)|0;lo=lo+Math.imul(al7,bl8)|0;mid=mid+Math.imul(al7,bh8)|0;mid=mid+Math.imul(ah7,bl8)|0;hi=hi+Math.imul(ah7,bh8)|0;lo=lo+Math.imul(al6,bl9)|0;mid=mid+Math.imul(al6,bh9)|0;mid=mid+Math.imul(ah6,bl9)|0;hi=hi+Math.imul(ah6,bh9)|0;var w15=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w15>>>26)|0;w15&=0x3ffffff;/* k = 16 */lo=Math.imul(al9,bl7);mid=Math.imul(al9,bh7);mid=mid+Math.imul(ah9,bl7)|0;hi=Math.imul(ah9,bh7);lo=lo+Math.imul(al8,bl8)|0;mid=mid+Math.imul(al8,bh8)|0;mid=mid+Math.imul(ah8,bl8)|0;hi=hi+Math.imul(ah8,bh8)|0;lo=lo+Math.imul(al7,bl9)|0;mid=mid+Math.imul(al7,bh9)|0;mid=mid+Math.imul(ah7,bl9)|0;hi=hi+Math.imul(ah7,bh9)|0;var w16=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w16>>>26)|0;w16&=0x3ffffff;/* k = 17 */lo=Math.imul(al9,bl8);mid=Math.imul(al9,bh8);mid=mid+Math.imul(ah9,bl8)|0;hi=Math.imul(ah9,bh8);lo=lo+Math.imul(al8,bl9)|0;mid=mid+Math.imul(al8,bh9)|0;mid=mid+Math.imul(ah8,bl9)|0;hi=hi+Math.imul(ah8,bh9)|0;var w17=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w17>>>26)|0;w17&=0x3ffffff;/* k = 18 */lo=Math.imul(al9,bl9);mid=Math.imul(al9,bh9);mid=mid+Math.imul(ah9,bl9)|0;hi=Math.imul(ah9,bh9);var w18=(c+lo|0)+((mid&0x1fff)<<13)|0;c=(hi+(mid>>>13)|0)+(w18>>>26)|0;w18&=0x3ffffff;o[0]=w0;o[1]=w1;o[2]=w2;o[3]=w3;o[4]=w4;o[5]=w5;o[6]=w6;o[7]=w7;o[8]=w8;o[9]=w9;o[10]=w10;o[11]=w11;o[12]=w12;o[13]=w13;o[14]=w14;o[15]=w15;o[16]=w16;o[17]=w17;o[18]=w18;if(c!==0){o[19]=c;out.length++;}return out;};// Polyfill comb\nif(!Math.imul){comb10MulTo=smallMulTo;}function bigMulTo(self,num,out){out.negative=num.negative^self.negative;out.length=self.length+num.length;var carry=0;var hncarry=0;for(var k=0;k<out.length-1;k++){// Sum all words with the same `i + j = k` and accumulate `ncarry`,\n// note that ncarry could be >= 0x3ffffff\nvar ncarry=hncarry;hncarry=0;var rword=carry&0x3ffffff;var maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-self.length+1);j<=maxJ;j++){var i=k-j;var a=self.words[i]|0;var b=num.words[j]|0;var r=a*b;var lo=r&0x3ffffff;ncarry=ncarry+(r/0x4000000|0)|0;lo=lo+rword|0;rword=lo&0x3ffffff;ncarry=ncarry+(lo>>>26)|0;hncarry+=ncarry>>>26;ncarry&=0x3ffffff;}out.words[k]=rword;carry=ncarry;ncarry=hncarry;}if(carry!==0){out.words[k]=carry;}else{out.length--;}return out.strip();}function jumboMulTo(self,num,out){var fftm=new FFTM();return fftm.mulp(self,num,out);}BN.prototype.mulTo=function mulTo(num,out){var res;var len=this.length+num.length;if(this.length===10&&num.length===10){res=comb10MulTo(this,num,out);}else if(len<63){res=smallMulTo(this,num,out);}else if(len<1024){res=bigMulTo(this,num,out);}else{res=jumboMulTo(this,num,out);}return res;};// Cooley-Tukey algorithm for FFT\n// slightly revisited to rely on looping instead of recursion\nfunction FFTM(x,y){this.x=x;this.y=y;}FFTM.prototype.makeRBT=function makeRBT(N){var t=new Array(N);var l=BN.prototype._countBits(N)-1;for(var i=0;i<N;i++){t[i]=this.revBin(i,l,N);}return t;};// Returns binary-reversed representation of `x`\nFFTM.prototype.revBin=function revBin(x,l,N){if(x===0||x===N-1)return x;var rb=0;for(var i=0;i<l;i++){rb|=(x&1)<<l-i-1;x>>=1;}return rb;};// Performs \"tweedling\" phase, therefore 'emulating'\n// behaviour of the recursive algorithm\nFFTM.prototype.permute=function permute(rbt,rws,iws,rtws,itws,N){for(var i=0;i<N;i++){rtws[i]=rws[rbt[i]];itws[i]=iws[rbt[i]];}};FFTM.prototype.transform=function transform(rws,iws,rtws,itws,N,rbt){this.permute(rbt,rws,iws,rtws,itws,N);for(var s=1;s<N;s<<=1){var l=s<<1;var rtwdf=Math.cos(2*Math.PI/l);var itwdf=Math.sin(2*Math.PI/l);for(var p=0;p<N;p+=l){var rtwdf_=rtwdf;var itwdf_=itwdf;for(var j=0;j<s;j++){var re=rtws[p+j];var ie=itws[p+j];var ro=rtws[p+j+s];var io=itws[p+j+s];var rx=rtwdf_*ro-itwdf_*io;io=rtwdf_*io+itwdf_*ro;ro=rx;rtws[p+j]=re+ro;itws[p+j]=ie+io;rtws[p+j+s]=re-ro;itws[p+j+s]=ie-io;/* jshint maxdepth : false */if(j!==l){rx=rtwdf*rtwdf_-itwdf*itwdf_;itwdf_=rtwdf*itwdf_+itwdf*rtwdf_;rtwdf_=rx;}}}}};FFTM.prototype.guessLen13b=function guessLen13b(n,m){var N=Math.max(m,n)|1;var odd=N&1;var i=0;for(N=N/2|0;N;N=N>>>1){i++;}return 1<<i+1+odd;};FFTM.prototype.conjugate=function conjugate(rws,iws,N){if(N<=1)return;for(var i=0;i<N/2;i++){var t=rws[i];rws[i]=rws[N-i-1];rws[N-i-1]=t;t=iws[i];iws[i]=-iws[N-i-1];iws[N-i-1]=-t;}};FFTM.prototype.normalize13b=function normalize13b(ws,N){var carry=0;for(var i=0;i<N/2;i++){var w=Math.round(ws[2*i+1]/N)*0x2000+Math.round(ws[2*i]/N)+carry;ws[i]=w&0x3ffffff;if(w<0x4000000){carry=0;}else{carry=w/0x4000000|0;}}return ws;};FFTM.prototype.convert13b=function convert13b(ws,len,rws,N){var carry=0;for(var i=0;i<len;i++){carry=carry+(ws[i]|0);rws[2*i]=carry&0x1fff;carry=carry>>>13;rws[2*i+1]=carry&0x1fff;carry=carry>>>13;}// Pad with zeroes\nfor(i=2*len;i<N;++i){rws[i]=0;}assert(carry===0);assert((carry&~0x1fff)===0);};FFTM.prototype.stub=function stub(N){var ph=new Array(N);for(var i=0;i<N;i++){ph[i]=0;}return ph;};FFTM.prototype.mulp=function mulp(x,y,out){var N=2*this.guessLen13b(x.length,y.length);var rbt=this.makeRBT(N);var _=this.stub(N);var rws=new Array(N);var rwst=new Array(N);var iwst=new Array(N);var nrws=new Array(N);var nrwst=new Array(N);var niwst=new Array(N);var rmws=out.words;rmws.length=N;this.convert13b(x.words,x.length,rws,N);this.convert13b(y.words,y.length,nrws,N);this.transform(rws,_,rwst,iwst,N,rbt);this.transform(nrws,_,nrwst,niwst,N,rbt);for(var i=0;i<N;i++){var rx=rwst[i]*nrwst[i]-iwst[i]*niwst[i];iwst[i]=rwst[i]*niwst[i]+iwst[i]*nrwst[i];rwst[i]=rx;}this.conjugate(rwst,iwst,N);this.transform(rwst,iwst,rmws,_,N,rbt);this.conjugate(rmws,_,N);this.normalize13b(rmws,N);out.negative=x.negative^y.negative;out.length=x.length+y.length;return out.strip();};// Multiply `this` by `num`\nBN.prototype.mul=function mul(num){var out=new BN(null);out.words=new Array(this.length+num.length);return this.mulTo(num,out);};// Multiply employing FFT\nBN.prototype.mulf=function mulf(num){var out=new BN(null);out.words=new Array(this.length+num.length);return jumboMulTo(this,num,out);};// In-place Multiplication\nBN.prototype.imul=function imul(num){return this.clone().mulTo(num,this);};BN.prototype.imuln=function imuln(num){assert(typeof num==='number');assert(num<0x4000000);// Carry\nvar carry=0;for(var i=0;i<this.length;i++){var w=(this.words[i]|0)*num;var lo=(w&0x3ffffff)+(carry&0x3ffffff);carry>>=26;carry+=w/0x4000000|0;// NOTE: lo is 27bit maximum\ncarry+=lo>>>26;this.words[i]=lo&0x3ffffff;}if(carry!==0){this.words[i]=carry;this.length++;}return this;};BN.prototype.muln=function muln(num){return this.clone().imuln(num);};// `this` * `this`\nBN.prototype.sqr=function sqr(){return this.mul(this);};// `this` * `this` in-place\nBN.prototype.isqr=function isqr(){return this.imul(this.clone());};// Math.pow(`this`, `num`)\nBN.prototype.pow=function pow(num){var w=toBitArray(num);if(w.length===0)return new BN(1);// Skip leading zeroes\nvar res=this;for(var i=0;i<w.length;i++,res=res.sqr()){if(w[i]!==0)break;}if(++i<w.length){for(var q=res.sqr();i<w.length;i++,q=q.sqr()){if(w[i]===0)continue;res=res.mul(q);}}return res;};// Shift-left in-place\nBN.prototype.iushln=function iushln(bits){assert(typeof bits==='number'&&bits>=0);var r=bits%26;var s=(bits-r)/26;var carryMask=0x3ffffff>>>26-r<<26-r;var i;if(r!==0){var carry=0;for(i=0;i<this.length;i++){var newCarry=this.words[i]&carryMask;var c=(this.words[i]|0)-newCarry<<r;this.words[i]=c|carry;carry=newCarry>>>26-r;}if(carry){this.words[i]=carry;this.length++;}}if(s!==0){for(i=this.length-1;i>=0;i--){this.words[i+s]=this.words[i];}for(i=0;i<s;i++){this.words[i]=0;}this.length+=s;}return this.strip();};BN.prototype.ishln=function ishln(bits){// TODO(indutny): implement me\nassert(this.negative===0);return this.iushln(bits);};// Shift-right in-place\n// NOTE: `hint` is a lowest bit before trailing zeroes\n// NOTE: if `extended` is present - it will be filled with destroyed bits\nBN.prototype.iushrn=function iushrn(bits,hint,extended){assert(typeof bits==='number'&&bits>=0);var h;if(hint){h=(hint-hint%26)/26;}else{h=0;}var r=bits%26;var s=Math.min((bits-r)/26,this.length);var mask=0x3ffffff^0x3ffffff>>>r<<r;var maskedWords=extended;h-=s;h=Math.max(0,h);// Extended mode, copy masked part\nif(maskedWords){for(var i=0;i<s;i++){maskedWords.words[i]=this.words[i];}maskedWords.length=s;}if(s===0){// No-op, we should not move anything at all\n}else if(this.length>s){this.length-=s;for(i=0;i<this.length;i++){this.words[i]=this.words[i+s];}}else{this.words[0]=0;this.length=1;}var carry=0;for(i=this.length-1;i>=0&&(carry!==0||i>=h);i--){var word=this.words[i]|0;this.words[i]=carry<<26-r|word>>>r;carry=word&mask;}// Push carried bits as a mask\nif(maskedWords&&carry!==0){maskedWords.words[maskedWords.length++]=carry;}if(this.length===0){this.words[0]=0;this.length=1;}return this.strip();};BN.prototype.ishrn=function ishrn(bits,hint,extended){// TODO(indutny): implement me\nassert(this.negative===0);return this.iushrn(bits,hint,extended);};// Shift-left\nBN.prototype.shln=function shln(bits){return this.clone().ishln(bits);};BN.prototype.ushln=function ushln(bits){return this.clone().iushln(bits);};// Shift-right\nBN.prototype.shrn=function shrn(bits){return this.clone().ishrn(bits);};BN.prototype.ushrn=function ushrn(bits){return this.clone().iushrn(bits);};// Test if n bit is set\nBN.prototype.testn=function testn(bit){assert(typeof bit==='number'&&bit>=0);var r=bit%26;var s=(bit-r)/26;var q=1<<r;// Fast case: bit is much higher than all existing words\nif(this.length<=s)return false;// Check bit and return\nvar w=this.words[s];return!!(w&q);};// Return only lowers bits of number (in-place)\nBN.prototype.imaskn=function imaskn(bits){assert(typeof bits==='number'&&bits>=0);var r=bits%26;var s=(bits-r)/26;assert(this.negative===0,'imaskn works only with positive numbers');if(this.length<=s){return this;}if(r!==0){s++;}this.length=Math.min(s,this.length);if(r!==0){var mask=0x3ffffff^0x3ffffff>>>r<<r;this.words[this.length-1]&=mask;}return this.strip();};// Return only lowers bits of number\nBN.prototype.maskn=function maskn(bits){return this.clone().imaskn(bits);};// Add plain number `num` to `this`\nBN.prototype.iaddn=function iaddn(num){assert(typeof num==='number');assert(num<0x4000000);if(num<0)return this.isubn(-num);// Possible sign change\nif(this.negative!==0){if(this.length===1&&(this.words[0]|0)<num){this.words[0]=num-(this.words[0]|0);this.negative=0;return this;}this.negative=0;this.isubn(num);this.negative=1;return this;}// Add without checks\nreturn this._iaddn(num);};BN.prototype._iaddn=function _iaddn(num){this.words[0]+=num;// Carry\nfor(var i=0;i<this.length&&this.words[i]>=0x4000000;i++){this.words[i]-=0x4000000;if(i===this.length-1){this.words[i+1]=1;}else{this.words[i+1]++;}}this.length=Math.max(this.length,i+1);return this;};// Subtract plain number `num` from `this`\nBN.prototype.isubn=function isubn(num){assert(typeof num==='number');assert(num<0x4000000);if(num<0)return this.iaddn(-num);if(this.negative!==0){this.negative=0;this.iaddn(num);this.negative=1;return this;}this.words[0]-=num;if(this.length===1&&this.words[0]<0){this.words[0]=-this.words[0];this.negative=1;}else{// Carry\nfor(var i=0;i<this.length&&this.words[i]<0;i++){this.words[i]+=0x4000000;this.words[i+1]-=1;}}return this.strip();};BN.prototype.addn=function addn(num){return this.clone().iaddn(num);};BN.prototype.subn=function subn(num){return this.clone().isubn(num);};BN.prototype.iabs=function iabs(){this.negative=0;return this;};BN.prototype.abs=function abs(){return this.clone().iabs();};BN.prototype._ishlnsubmul=function _ishlnsubmul(num,mul,shift){var len=num.length+shift;var i;this._expand(len);var w;var carry=0;for(i=0;i<num.length;i++){w=(this.words[i+shift]|0)+carry;var right=(num.words[i]|0)*mul;w-=right&0x3ffffff;carry=(w>>26)-(right/0x4000000|0);this.words[i+shift]=w&0x3ffffff;}for(;i<this.length-shift;i++){w=(this.words[i+shift]|0)+carry;carry=w>>26;this.words[i+shift]=w&0x3ffffff;}if(carry===0)return this.strip();// Subtraction overflow\nassert(carry===-1);carry=0;for(i=0;i<this.length;i++){w=-(this.words[i]|0)+carry;carry=w>>26;this.words[i]=w&0x3ffffff;}this.negative=1;return this.strip();};BN.prototype._wordDiv=function _wordDiv(num,mode){var shift=this.length-num.length;var a=this.clone();var b=num;// Normalize\nvar bhi=b.words[b.length-1]|0;var bhiBits=this._countBits(bhi);shift=26-bhiBits;if(shift!==0){b=b.ushln(shift);a.iushln(shift);bhi=b.words[b.length-1]|0;}// Initialize quotient\nvar m=a.length-b.length;var q;if(mode!=='mod'){q=new BN(null);q.length=m+1;q.words=new Array(q.length);for(var i=0;i<q.length;i++){q.words[i]=0;}}var diff=a.clone()._ishlnsubmul(b,1,m);if(diff.negative===0){a=diff;if(q){q.words[m]=1;}}for(var j=m-1;j>=0;j--){var qj=(a.words[b.length+j]|0)*0x4000000+(a.words[b.length+j-1]|0);// NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n// (0x7ffffff)\nqj=Math.min(qj/bhi|0,0x3ffffff);a._ishlnsubmul(b,qj,j);while(a.negative!==0){qj--;a.negative=0;a._ishlnsubmul(b,1,j);if(!a.isZero()){a.negative^=1;}}if(q){q.words[j]=qj;}}if(q){q.strip();}a.strip();// Denormalize\nif(mode!=='div'&&shift!==0){a.iushrn(shift);}return{div:q||null,mod:a};};// NOTE: 1) `mode` can be set to `mod` to request mod only,\n//       to `div` to request div only, or be absent to\n//       request both div & mod\n//       2) `positive` is true if unsigned mod is requested\nBN.prototype.divmod=function divmod(num,mode,positive){assert(!num.isZero());if(this.isZero()){return{div:new BN(0),mod:new BN(0)};}var div,mod,res;if(this.negative!==0&&num.negative===0){res=this.neg().divmod(num,mode);if(mode!=='mod'){div=res.div.neg();}if(mode!=='div'){mod=res.mod.neg();if(positive&&mod.negative!==0){mod.iadd(num);}}return{div:div,mod:mod};}if(this.negative===0&&num.negative!==0){res=this.divmod(num.neg(),mode);if(mode!=='mod'){div=res.div.neg();}return{div:div,mod:res.mod};}if((this.negative&num.negative)!==0){res=this.neg().divmod(num.neg(),mode);if(mode!=='div'){mod=res.mod.neg();if(positive&&mod.negative!==0){mod.isub(num);}}return{div:res.div,mod:mod};}// Both numbers are positive at this point\n// Strip both numbers to approximate shift value\nif(num.length>this.length||this.cmp(num)<0){return{div:new BN(0),mod:this};}// Very short reduction\nif(num.length===1){if(mode==='div'){return{div:this.divn(num.words[0]),mod:null};}if(mode==='mod'){return{div:null,mod:new BN(this.modn(num.words[0]))};}return{div:this.divn(num.words[0]),mod:new BN(this.modn(num.words[0]))};}return this._wordDiv(num,mode);};// Find `this` / `num`\nBN.prototype.div=function div(num){return this.divmod(num,'div',false).div;};// Find `this` % `num`\nBN.prototype.mod=function mod(num){return this.divmod(num,'mod',false).mod;};BN.prototype.umod=function umod(num){return this.divmod(num,'mod',true).mod;};// Find Round(`this` / `num`)\nBN.prototype.divRound=function divRound(num){var dm=this.divmod(num);// Fast case - exact division\nif(dm.mod.isZero())return dm.div;var mod=dm.div.negative!==0?dm.mod.isub(num):dm.mod;var half=num.ushrn(1);var r2=num.andln(1);var cmp=mod.cmp(half);// Round down\nif(cmp<0||r2===1&&cmp===0)return dm.div;// Round up\nreturn dm.div.negative!==0?dm.div.isubn(1):dm.div.iaddn(1);};BN.prototype.modn=function modn(num){assert(num<=0x3ffffff);var p=(1<<26)%num;var acc=0;for(var i=this.length-1;i>=0;i--){acc=(p*acc+(this.words[i]|0))%num;}return acc;};// In-place division by number\nBN.prototype.idivn=function idivn(num){assert(num<=0x3ffffff);var carry=0;for(var i=this.length-1;i>=0;i--){var w=(this.words[i]|0)+carry*0x4000000;this.words[i]=w/num|0;carry=w%num;}return this.strip();};BN.prototype.divn=function divn(num){return this.clone().idivn(num);};BN.prototype.egcd=function egcd(p){assert(p.negative===0);assert(!p.isZero());var x=this;var y=p.clone();if(x.negative!==0){x=x.umod(p);}else{x=x.clone();}// A * x + B * y = x\nvar A=new BN(1);var B=new BN(0);// C * x + D * y = y\nvar C=new BN(0);var D=new BN(1);var g=0;while(x.isEven()&&y.isEven()){x.iushrn(1);y.iushrn(1);++g;}var yp=y.clone();var xp=x.clone();while(!x.isZero()){for(var i=0,im=1;(x.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){x.iushrn(i);while(i-->0){if(A.isOdd()||B.isOdd()){A.iadd(yp);B.isub(xp);}A.iushrn(1);B.iushrn(1);}}for(var j=0,jm=1;(y.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){y.iushrn(j);while(j-->0){if(C.isOdd()||D.isOdd()){C.iadd(yp);D.isub(xp);}C.iushrn(1);D.iushrn(1);}}if(x.cmp(y)>=0){x.isub(y);A.isub(C);B.isub(D);}else{y.isub(x);C.isub(A);D.isub(B);}}return{a:C,b:D,gcd:y.iushln(g)};};// This is reduced incarnation of the binary EEA\n// above, designated to invert members of the\n// _prime_ fields F(p) at a maximal speed\nBN.prototype._invmp=function _invmp(p){assert(p.negative===0);assert(!p.isZero());var a=this;var b=p.clone();if(a.negative!==0){a=a.umod(p);}else{a=a.clone();}var x1=new BN(1);var x2=new BN(0);var delta=b.clone();while(a.cmpn(1)>0&&b.cmpn(1)>0){for(var i=0,im=1;(a.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){a.iushrn(i);while(i-->0){if(x1.isOdd()){x1.iadd(delta);}x1.iushrn(1);}}for(var j=0,jm=1;(b.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){b.iushrn(j);while(j-->0){if(x2.isOdd()){x2.iadd(delta);}x2.iushrn(1);}}if(a.cmp(b)>=0){a.isub(b);x1.isub(x2);}else{b.isub(a);x2.isub(x1);}}var res;if(a.cmpn(1)===0){res=x1;}else{res=x2;}if(res.cmpn(0)<0){res.iadd(p);}return res;};BN.prototype.gcd=function gcd(num){if(this.isZero())return num.abs();if(num.isZero())return this.abs();var a=this.clone();var b=num.clone();a.negative=0;b.negative=0;// Remove common factor of two\nfor(var shift=0;a.isEven()&&b.isEven();shift++){a.iushrn(1);b.iushrn(1);}do{while(a.isEven()){a.iushrn(1);}while(b.isEven()){b.iushrn(1);}var r=a.cmp(b);if(r<0){// Swap `a` and `b` to make `a` always bigger than `b`\nvar t=a;a=b;b=t;}else if(r===0||b.cmpn(1)===0){break;}a.isub(b);}while(true);return b.iushln(shift);};// Invert number in the field F(num)\nBN.prototype.invm=function invm(num){return this.egcd(num).a.umod(num);};BN.prototype.isEven=function isEven(){return(this.words[0]&1)===0;};BN.prototype.isOdd=function isOdd(){return(this.words[0]&1)===1;};// And first word and num\nBN.prototype.andln=function andln(num){return this.words[0]&num;};// Increment at the bit position in-line\nBN.prototype.bincn=function bincn(bit){assert(typeof bit==='number');var r=bit%26;var s=(bit-r)/26;var q=1<<r;// Fast case: bit is much higher than all existing words\nif(this.length<=s){this._expand(s+1);this.words[s]|=q;return this;}// Add bit and propagate, if needed\nvar carry=q;for(var i=s;carry!==0&&i<this.length;i++){var w=this.words[i]|0;w+=carry;carry=w>>>26;w&=0x3ffffff;this.words[i]=w;}if(carry!==0){this.words[i]=carry;this.length++;}return this;};BN.prototype.isZero=function isZero(){return this.length===1&&this.words[0]===0;};BN.prototype.cmpn=function cmpn(num){var negative=num<0;if(this.negative!==0&&!negative)return-1;if(this.negative===0&&negative)return 1;this.strip();var res;if(this.length>1){res=1;}else{if(negative){num=-num;}assert(num<=0x3ffffff,'Number is too big');var w=this.words[0]|0;res=w===num?0:w<num?-1:1;}if(this.negative!==0)return-res|0;return res;};// Compare two numbers and return:\n// 1 - if `this` > `num`\n// 0 - if `this` == `num`\n// -1 - if `this` < `num`\nBN.prototype.cmp=function cmp(num){if(this.negative!==0&&num.negative===0)return-1;if(this.negative===0&&num.negative!==0)return 1;var res=this.ucmp(num);if(this.negative!==0)return-res|0;return res;};// Unsigned comparison\nBN.prototype.ucmp=function ucmp(num){// At this point both numbers have the same sign\nif(this.length>num.length)return 1;if(this.length<num.length)return-1;var res=0;for(var i=this.length-1;i>=0;i--){var a=this.words[i]|0;var b=num.words[i]|0;if(a===b)continue;if(a<b){res=-1;}else if(a>b){res=1;}break;}return res;};BN.prototype.gtn=function gtn(num){return this.cmpn(num)===1;};BN.prototype.gt=function gt(num){return this.cmp(num)===1;};BN.prototype.gten=function gten(num){return this.cmpn(num)>=0;};BN.prototype.gte=function gte(num){return this.cmp(num)>=0;};BN.prototype.ltn=function ltn(num){return this.cmpn(num)===-1;};BN.prototype.lt=function lt(num){return this.cmp(num)===-1;};BN.prototype.lten=function lten(num){return this.cmpn(num)<=0;};BN.prototype.lte=function lte(num){return this.cmp(num)<=0;};BN.prototype.eqn=function eqn(num){return this.cmpn(num)===0;};BN.prototype.eq=function eq(num){return this.cmp(num)===0;};//\n// A reduce context, could be using montgomery or something better, depending\n// on the `m` itself.\n//\nBN.red=function red(num){return new Red(num);};BN.prototype.toRed=function toRed(ctx){assert(!this.red,'Already a number in reduction context');assert(this.negative===0,'red works only with positives');return ctx.convertTo(this)._forceRed(ctx);};BN.prototype.fromRed=function fromRed(){assert(this.red,'fromRed works only with numbers in reduction context');return this.red.convertFrom(this);};BN.prototype._forceRed=function _forceRed(ctx){this.red=ctx;return this;};BN.prototype.forceRed=function forceRed(ctx){assert(!this.red,'Already a number in reduction context');return this._forceRed(ctx);};BN.prototype.redAdd=function redAdd(num){assert(this.red,'redAdd works only with red numbers');return this.red.add(this,num);};BN.prototype.redIAdd=function redIAdd(num){assert(this.red,'redIAdd works only with red numbers');return this.red.iadd(this,num);};BN.prototype.redSub=function redSub(num){assert(this.red,'redSub works only with red numbers');return this.red.sub(this,num);};BN.prototype.redISub=function redISub(num){assert(this.red,'redISub works only with red numbers');return this.red.isub(this,num);};BN.prototype.redShl=function redShl(num){assert(this.red,'redShl works only with red numbers');return this.red.shl(this,num);};BN.prototype.redMul=function redMul(num){assert(this.red,'redMul works only with red numbers');this.red._verify2(this,num);return this.red.mul(this,num);};BN.prototype.redIMul=function redIMul(num){assert(this.red,'redMul works only with red numbers');this.red._verify2(this,num);return this.red.imul(this,num);};BN.prototype.redSqr=function redSqr(){assert(this.red,'redSqr works only with red numbers');this.red._verify1(this);return this.red.sqr(this);};BN.prototype.redISqr=function redISqr(){assert(this.red,'redISqr works only with red numbers');this.red._verify1(this);return this.red.isqr(this);};// Square root over p\nBN.prototype.redSqrt=function redSqrt(){assert(this.red,'redSqrt works only with red numbers');this.red._verify1(this);return this.red.sqrt(this);};BN.prototype.redInvm=function redInvm(){assert(this.red,'redInvm works only with red numbers');this.red._verify1(this);return this.red.invm(this);};// Return negative clone of `this` % `red modulo`\nBN.prototype.redNeg=function redNeg(){assert(this.red,'redNeg works only with red numbers');this.red._verify1(this);return this.red.neg(this);};BN.prototype.redPow=function redPow(num){assert(this.red&&!num.red,'redPow(normalNum)');this.red._verify1(this);return this.red.pow(this,num);};// Prime numbers with efficient reduction\nvar primes={k256:null,p224:null,p192:null,p25519:null};// Pseudo-Mersenne prime\nfunction MPrime(name,p){// P = 2 ^ N - K\nthis.name=name;this.p=new BN(p,16);this.n=this.p.bitLength();this.k=new BN(1).iushln(this.n).isub(this.p);this.tmp=this._tmp();}MPrime.prototype._tmp=function _tmp(){var tmp=new BN(null);tmp.words=new Array(Math.ceil(this.n/13));return tmp;};MPrime.prototype.ireduce=function ireduce(num){// Assumes that `num` is less than `P^2`\n// num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\nvar r=num;var rlen;do{this.split(r,this.tmp);r=this.imulK(r);r=r.iadd(this.tmp);rlen=r.bitLength();}while(rlen>this.n);var cmp=rlen<this.n?-1:r.ucmp(this.p);if(cmp===0){r.words[0]=0;r.length=1;}else if(cmp>0){r.isub(this.p);}else{if(r.strip!==undefined){// r is BN v4 instance\nr.strip();}else{// r is BN v5 instance\nr._strip();}}return r;};MPrime.prototype.split=function split(input,out){input.iushrn(this.n,0,out);};MPrime.prototype.imulK=function imulK(num){return num.imul(this.k);};function K256(){MPrime.call(this,'k256','ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');}inherits(K256,MPrime);K256.prototype.split=function split(input,output){// 256 = 9 * 26 + 22\nvar mask=0x3fffff;var outLen=Math.min(input.length,9);for(var i=0;i<outLen;i++){output.words[i]=input.words[i];}output.length=outLen;if(input.length<=9){input.words[0]=0;input.length=1;return;}// Shift by 9 limbs\nvar prev=input.words[9];output.words[output.length++]=prev&mask;for(i=10;i<input.length;i++){var next=input.words[i]|0;input.words[i-10]=(next&mask)<<4|prev>>>22;prev=next;}prev>>>=22;input.words[i-10]=prev;if(prev===0&&input.length>10){input.length-=10;}else{input.length-=9;}};K256.prototype.imulK=function imulK(num){// K = 0x1000003d1 = [ 0x40, 0x3d1 ]\nnum.words[num.length]=0;num.words[num.length+1]=0;num.length+=2;// bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\nvar lo=0;for(var i=0;i<num.length;i++){var w=num.words[i]|0;lo+=w*0x3d1;num.words[i]=lo&0x3ffffff;lo=w*0x40+(lo/0x4000000|0);}// Fast length reduction\nif(num.words[num.length-1]===0){num.length--;if(num.words[num.length-1]===0){num.length--;}}return num;};function P224(){MPrime.call(this,'p224','ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');}inherits(P224,MPrime);function P192(){MPrime.call(this,'p192','ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');}inherits(P192,MPrime);function P25519(){// 2 ^ 255 - 19\nMPrime.call(this,'25519','7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');}inherits(P25519,MPrime);P25519.prototype.imulK=function imulK(num){// K = 0x13\nvar carry=0;for(var i=0;i<num.length;i++){var hi=(num.words[i]|0)*0x13+carry;var lo=hi&0x3ffffff;hi>>>=26;num.words[i]=lo;carry=hi;}if(carry!==0){num.words[num.length++]=carry;}return num;};// Exported mostly for testing purposes, use plain name instead\nBN._prime=function prime(name){// Cached version of prime\nif(primes[name])return primes[name];var prime;if(name==='k256'){prime=new K256();}else if(name==='p224'){prime=new P224();}else if(name==='p192'){prime=new P192();}else if(name==='p25519'){prime=new P25519();}else{throw new Error('Unknown prime '+name);}primes[name]=prime;return prime;};//\n// Base reduction engine\n//\nfunction Red(m){if(typeof m==='string'){var prime=BN._prime(m);this.m=prime.p;this.prime=prime;}else{assert(m.gtn(1),'modulus must be greater than 1');this.m=m;this.prime=null;}}Red.prototype._verify1=function _verify1(a){assert(a.negative===0,'red works only with positives');assert(a.red,'red works only with red numbers');};Red.prototype._verify2=function _verify2(a,b){assert((a.negative|b.negative)===0,'red works only with positives');assert(a.red&&a.red===b.red,'red works only with red numbers');};Red.prototype.imod=function imod(a){if(this.prime)return this.prime.ireduce(a)._forceRed(this);return a.umod(this.m)._forceRed(this);};Red.prototype.neg=function neg(a){if(a.isZero()){return a.clone();}return this.m.sub(a)._forceRed(this);};Red.prototype.add=function add(a,b){this._verify2(a,b);var res=a.add(b);if(res.cmp(this.m)>=0){res.isub(this.m);}return res._forceRed(this);};Red.prototype.iadd=function iadd(a,b){this._verify2(a,b);var res=a.iadd(b);if(res.cmp(this.m)>=0){res.isub(this.m);}return res;};Red.prototype.sub=function sub(a,b){this._verify2(a,b);var res=a.sub(b);if(res.cmpn(0)<0){res.iadd(this.m);}return res._forceRed(this);};Red.prototype.isub=function isub(a,b){this._verify2(a,b);var res=a.isub(b);if(res.cmpn(0)<0){res.iadd(this.m);}return res;};Red.prototype.shl=function shl(a,num){this._verify1(a);return this.imod(a.ushln(num));};Red.prototype.imul=function imul(a,b){this._verify2(a,b);return this.imod(a.imul(b));};Red.prototype.mul=function mul(a,b){this._verify2(a,b);return this.imod(a.mul(b));};Red.prototype.isqr=function isqr(a){return this.imul(a,a.clone());};Red.prototype.sqr=function sqr(a){return this.mul(a,a);};Red.prototype.sqrt=function sqrt(a){if(a.isZero())return a.clone();var mod3=this.m.andln(3);assert(mod3%2===1);// Fast case\nif(mod3===3){var pow=this.m.add(new BN(1)).iushrn(2);return this.pow(a,pow);}// Tonelli-Shanks algorithm (Totally unoptimized and slow)\n//\n// Find Q and S, that Q * 2 ^ S = (P - 1)\nvar q=this.m.subn(1);var s=0;while(!q.isZero()&&q.andln(1)===0){s++;q.iushrn(1);}assert(!q.isZero());var one=new BN(1).toRed(this);var nOne=one.redNeg();// Find quadratic non-residue\n// NOTE: Max is such because of generalized Riemann hypothesis.\nvar lpow=this.m.subn(1).iushrn(1);var z=this.m.bitLength();z=new BN(2*z*z).toRed(this);while(this.pow(z,lpow).cmp(nOne)!==0){z.redIAdd(nOne);}var c=this.pow(z,q);var r=this.pow(a,q.addn(1).iushrn(1));var t=this.pow(a,q);var m=s;while(t.cmp(one)!==0){var tmp=t;for(var i=0;tmp.cmp(one)!==0;i++){tmp=tmp.redSqr();}assert(i<m);var b=this.pow(c,new BN(1).iushln(m-i-1));r=r.redMul(b);c=b.redSqr();t=t.redMul(c);m=i;}return r;};Red.prototype.invm=function invm(a){var inv=a._invmp(this.m);if(inv.negative!==0){inv.negative=0;return this.imod(inv).redNeg();}else{return this.imod(inv);}};Red.prototype.pow=function pow(a,num){if(num.isZero())return new BN(1).toRed(this);if(num.cmpn(1)===0)return a.clone();var windowSize=4;var wnd=new Array(1<<windowSize);wnd[0]=new BN(1).toRed(this);wnd[1]=a;for(var i=2;i<wnd.length;i++){wnd[i]=this.mul(wnd[i-1],a);}var res=wnd[0];var current=0;var currentLen=0;var start=num.bitLength()%26;if(start===0){start=26;}for(i=num.length-1;i>=0;i--){var word=num.words[i];for(var j=start-1;j>=0;j--){var bit=word>>j&1;if(res!==wnd[0]){res=this.sqr(res);}if(bit===0&&current===0){currentLen=0;continue;}current<<=1;current|=bit;currentLen++;if(currentLen!==windowSize&&(i!==0||j!==0))continue;res=this.mul(res,wnd[current]);currentLen=0;current=0;}start=26;}return res;};Red.prototype.convertTo=function convertTo(num){var r=num.umod(this.m);return r===num?r.clone():r;};Red.prototype.convertFrom=function convertFrom(num){var res=num.clone();res.red=null;return res;};//\n// Montgomery method engine\n//\nBN.mont=function mont(num){return new Mont(num);};function Mont(m){Red.call(this,m);this.shift=this.m.bitLength();if(this.shift%26!==0){this.shift+=26-this.shift%26;}this.r=new BN(1).iushln(this.shift);this.r2=this.imod(this.r.sqr());this.rinv=this.r._invmp(this.m);this.minv=this.rinv.mul(this.r).isubn(1).div(this.m);this.minv=this.minv.umod(this.r);this.minv=this.r.sub(this.minv);}inherits(Mont,Red);Mont.prototype.convertTo=function convertTo(num){return this.imod(num.ushln(this.shift));};Mont.prototype.convertFrom=function convertFrom(num){var r=this.imod(num.mul(this.rinv));r.red=null;return r;};Mont.prototype.imul=function imul(a,b){if(a.isZero()||b.isZero()){a.words[0]=0;a.length=1;return a;}var t=a.imul(b);var c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);var u=t.isub(c).iushrn(this.shift);var res=u;if(u.cmp(this.m)>=0){res=u.isub(this.m);}else if(u.cmpn(0)<0){res=u.iadd(this.m);}return res._forceRed(this);};Mont.prototype.mul=function mul(a,b){if(a.isZero()||b.isZero())return new BN(0)._forceRed(this);var t=a.mul(b);var c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);var u=t.isub(c).iushrn(this.shift);var res=u;if(u.cmp(this.m)>=0){res=u.isub(this.m);}else if(u.cmpn(0)<0){res=u.iadd(this.m);}return res._forceRed(this);};Mont.prototype.invm=function invm(a){// (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\nvar res=this.imod(a._invmp(this.m).mul(this.r2));return res._forceRed(this);};})(  false||module,this);/***/},/***/2692:/***/function(module){\"use strict\";module.exports=boundary;function boundary(cells){var i,j,k;var n=cells.length;var sz=0;for(i=0;i<n;++i){sz+=cells[i].length;}var result=new Array(sz);var ptr=0;for(i=0;i<n;++i){var c=cells[i];var d=c.length;for(j=0;j<d;++j){var b=result[ptr++]=new Array(d-1);var p=0;for(k=0;k<d;++k){if(k===j){continue;}b[p++]=c[k];}if(j&1){var tmp=b[1];b[1]=b[0];b[0]=tmp;}}}return result;}/***/},/***/2569:/***/function(module,__unused_webpack_exports,__nested_webpack_require_136871__){\"use strict\";module.exports=boxIntersectWrapper;var pool=__nested_webpack_require_136871__(5306);var sweep=__nested_webpack_require_136871__(1390);var boxIntersectIter=__nested_webpack_require_136871__(2337);function boxEmpty(d,box){for(var j=0;j<d;++j){if(!(box[j]<=box[j+d])){return true;}}return false;}//Unpack boxes into a flat typed array, remove empty boxes\nfunction convertBoxes(boxes,d,data,ids){var ptr=0;var count=0;for(var i=0,n=boxes.length;i<n;++i){var b=boxes[i];if(boxEmpty(d,b)){continue;}for(var j=0;j<2*d;++j){data[ptr++]=b[j];}ids[count++]=i;}return count;}//Perform type conversions, check bounds\nfunction boxIntersect(red,blue,visit,full){var n=red.length;var m=blue.length;//If either array is empty, then we can skip this whole thing\nif(n<=0||m<=0){return;}//Compute dimension, if it is 0 then we skip\nvar d=red[0].length>>>1;if(d<=0){return;}var retval;//Convert red boxes\nvar redList=pool.mallocDouble(2*d*n);var redIds=pool.mallocInt32(n);n=convertBoxes(red,d,redList,redIds);if(n>0){if(d===1&&full){//Special case: 1d complete\nsweep.init(n);retval=sweep.sweepComplete(d,visit,0,n,redList,redIds,0,n,redList,redIds);}else{//Convert blue boxes\nvar blueList=pool.mallocDouble(2*d*m);var blueIds=pool.mallocInt32(m);m=convertBoxes(blue,d,blueList,blueIds);if(m>0){sweep.init(n+m);if(d===1){//Special case: 1d bipartite\nretval=sweep.sweepBipartite(d,visit,0,n,redList,redIds,0,m,blueList,blueIds);}else{//General case:  d>1\nretval=boxIntersectIter(d,visit,full,n,redList,redIds,m,blueList,blueIds);}pool.free(blueList);pool.free(blueIds);}}pool.free(redList);pool.free(redIds);}return retval;}var RESULT;function appendItem(i,j){RESULT.push([i,j]);}function intersectFullArray(x){RESULT=[];boxIntersect(x,x,appendItem,true);return RESULT;}function intersectBipartiteArray(x,y){RESULT=[];boxIntersect(x,y,appendItem,false);return RESULT;}//User-friendly wrapper, handle full input and no-visitor cases\nfunction boxIntersectWrapper(arg0,arg1,arg2){switch(arguments.length){case 1:return intersectFullArray(arg0);case 2:if(typeof arg1==='function'){return boxIntersect(arg0,arg0,arg1,true);}else{return intersectBipartiteArray(arg0,arg1);}case 3:return boxIntersect(arg0,arg1,arg2,false);default:throw new Error('box-intersect: Invalid arguments');}}/***/},/***/7333:/***/function(__unused_webpack_module,exports){\"use strict\";function full(){function bruteForceRedFull(d,ax,vv,rs,re,rb,ri,bs,be,bb,bi){var es=2*d;for(var i=rs,rp=es*rs;i<re;++i,rp+=es){var x0=rb[ax+rp],x1=rb[ax+rp+d],xi=ri[i];Q:for(var j=bs,bp=es*bs;j<be;++j,bp+=es){var y0=bb[ax+bp],y1=bb[ax+bp+d],yi=bi[j];if(y1<x0||x1<y0)continue;for(var k=ax+1;k<d;++k){var r0=rb[k+rp],r1=rb[k+d+rp],b0=bb[k+bp],b1=bb[k+d+bp];if(r1<b0||b1<r0)continue Q;}var rv=vv(xi,yi);if(rv!==void 0)return rv;}}}function bruteForceBlueFull(d,ax,vv,rs,re,rb,ri,bs,be,bb,bi){var es=2*d;for(var j=bs,bp=es*bs;j<be;++j,bp+=es){var y0=bb[ax+bp],y1=bb[ax+bp+d],yi=bi[j];Q:for(var i=rs,rp=es*rs;i<re;++i,rp+=es){var x0=rb[ax+rp],x1=rb[ax+rp+d],xi=ri[i];if(y1<x0||x1<y0)continue;for(var k=ax+1;k<d;++k){var r0=rb[k+rp],r1=rb[k+d+rp],b0=bb[k+bp],b1=bb[k+d+bp];if(r1<b0||b1<r0)continue Q;}var rv=vv(xi,yi);if(rv!==void 0)return rv;}}}function bruteForceFull(d,ax,vv,rs,re,rb,ri,bs,be,bb,bi){if(re-rs>be-bs){return bruteForceRedFull(d,ax,vv,rs,re,rb,ri,bs,be,bb,bi);}else{return bruteForceBlueFull(d,ax,vv,rs,re,rb,ri,bs,be,bb,bi);}}return bruteForceFull;}function partial(){function bruteForceRedFlip(d,ax,vv,rs,re,rb,ri,bs,be,bb,bi){var es=2*d;for(var i=rs,rp=es*rs;i<re;++i,rp+=es){var x0=rb[ax+rp],x1=rb[ax+rp+d],xi=ri[i];Q:for(var j=bs,bp=es*bs;j<be;++j,bp+=es){var y0=bb[ax+bp],yi=bi[j];if(y0<=x0||x1<y0)continue;for(var k=ax+1;k<d;++k){var r0=rb[k+rp],r1=rb[k+d+rp],b0=bb[k+bp],b1=bb[k+d+bp];if(r1<b0||b1<r0)continue Q;}var rv=vv(yi,xi);if(rv!==void 0)return rv;}}}function bruteForceRed(d,ax,vv,rs,re,rb,ri,bs,be,bb,bi){var es=2*d;for(var i=rs,rp=es*rs;i<re;++i,rp+=es){var x0=rb[ax+rp],x1=rb[ax+rp+d],xi=ri[i];Q:for(var j=bs,bp=es*bs;j<be;++j,bp+=es){var y0=bb[ax+bp],yi=bi[j];if(y0<x0||x1<y0)continue;for(var k=ax+1;k<d;++k){var r0=rb[k+rp],r1=rb[k+d+rp],b0=bb[k+bp],b1=bb[k+d+bp];if(r1<b0||b1<r0)continue Q;}var rv=vv(xi,yi);if(rv!==void 0)return rv;}}}function bruteForceBlueFlip(d,ax,vv,rs,re,rb,ri,bs,be,bb,bi){var es=2*d;for(var j=bs,bp=es*bs;j<be;++j,bp+=es){var y0=bb[ax+bp],yi=bi[j];Q:for(var i=rs,rp=es*rs;i<re;++i,rp+=es){var x0=rb[ax+rp],x1=rb[ax+rp+d],xi=ri[i];if(y0<=x0||x1<y0)continue;for(var k=ax+1;k<d;++k){var r0=rb[k+rp],r1=rb[k+d+rp],b0=bb[k+bp],b1=bb[k+d+bp];if(r1<b0||b1<r0)continue Q;}var rv=vv(yi,xi);if(rv!==void 0)return rv;}}}function bruteForceBlue(d,ax,vv,rs,re,rb,ri,bs,be,bb,bi){var es=2*d;for(var j=bs,bp=es*bs;j<be;++j,bp+=es){var y0=bb[ax+bp],yi=bi[j];Q:for(var i=rs,rp=es*rs;i<re;++i,rp+=es){var x0=rb[ax+rp],x1=rb[ax+rp+d],xi=ri[i];if(y0<x0||x1<y0)continue;for(var k=ax+1;k<d;++k){var r0=rb[k+rp],r1=rb[k+d+rp],b0=bb[k+bp],b1=bb[k+d+bp];if(r1<b0||b1<r0)continue Q;}var rv=vv(xi,yi);if(rv!==void 0)return rv;}}}function bruteForcePartial(d,ax,vv,fp,rs,re,rb,ri,bs,be,bb,bi){if(re-rs>be-bs){if(fp){return bruteForceRedFlip(d,ax,vv,rs,re,rb,ri,bs,be,bb,bi);}else{return bruteForceRed(d,ax,vv,rs,re,rb,ri,bs,be,bb,bi);}}else{if(fp){return bruteForceBlueFlip(d,ax,vv,rs,re,rb,ri,bs,be,bb,bi);}else{return bruteForceBlue(d,ax,vv,rs,re,rb,ri,bs,be,bb,bi);}}}return bruteForcePartial;}function bruteForcePlanner(isFull){return isFull?full():partial();}exports.partial=bruteForcePlanner(false);exports.full=bruteForcePlanner(true);/***/},/***/2337:/***/function(module,__unused_webpack_exports,__nested_webpack_require_142431__){\"use strict\";module.exports=boxIntersectIter;var pool=__nested_webpack_require_142431__(5306);var bits=__nested_webpack_require_142431__(2288);var bruteForce=__nested_webpack_require_142431__(7333);var bruteForcePartial=bruteForce.partial;var bruteForceFull=bruteForce.full;var sweep=__nested_webpack_require_142431__(1390);var findMedian=__nested_webpack_require_142431__(2464);var genPartition=__nested_webpack_require_142431__(122);//Twiddle parameters\nvar BRUTE_FORCE_CUTOFF=128;//Cut off for brute force search\nvar SCAN_CUTOFF=1<<22;//Cut off for two way scan\nvar SCAN_COMPLETE_CUTOFF=1<<22;//Partition functions\nvar partitionInteriorContainsInterval=genPartition('!(lo>=p0)&&!(p1>=hi)');var partitionStartEqual=genPartition('lo===p0');var partitionStartLessThan=genPartition('lo<p0');var partitionEndLessThanEqual=genPartition('hi<=p0');var partitionContainsPoint=genPartition('lo<=p0&&p0<=hi');var partitionContainsPointProper=genPartition('lo<p0&&p0<=hi');//Frame size for iterative loop\nvar IFRAME_SIZE=6;var DFRAME_SIZE=2;//Data for box statck\nvar INIT_CAPACITY=1024;var BOX_ISTACK=pool.mallocInt32(INIT_CAPACITY);var BOX_DSTACK=pool.mallocDouble(INIT_CAPACITY);//Initialize iterative loop queue\nfunction iterInit(d,count){var levels=8*bits.log2(count+1)*(d+1)|0;var maxInts=bits.nextPow2(IFRAME_SIZE*levels);if(BOX_ISTACK.length<maxInts){pool.free(BOX_ISTACK);BOX_ISTACK=pool.mallocInt32(maxInts);}var maxDoubles=bits.nextPow2(DFRAME_SIZE*levels);if(BOX_DSTACK.length<maxDoubles){pool.free(BOX_DSTACK);BOX_DSTACK=pool.mallocDouble(maxDoubles);}}//Append item to queue\nfunction iterPush(ptr,axis,redStart,redEnd,blueStart,blueEnd,state,lo,hi){var iptr=IFRAME_SIZE*ptr;BOX_ISTACK[iptr]=axis;BOX_ISTACK[iptr+1]=redStart;BOX_ISTACK[iptr+2]=redEnd;BOX_ISTACK[iptr+3]=blueStart;BOX_ISTACK[iptr+4]=blueEnd;BOX_ISTACK[iptr+5]=state;var dptr=DFRAME_SIZE*ptr;BOX_DSTACK[dptr]=lo;BOX_DSTACK[dptr+1]=hi;}//Special case:  Intersect single point with list of intervals\nfunction onePointPartial(d,axis,visit,flip,redStart,redEnd,red,redIndex,blueOffset,blue,blueId){var elemSize=2*d;var bluePtr=blueOffset*elemSize;var blueX=blue[bluePtr+axis];red_loop:for(var i=redStart,redPtr=redStart*elemSize;i<redEnd;++i,redPtr+=elemSize){var r0=red[redPtr+axis];var r1=red[redPtr+axis+d];if(blueX<r0||r1<blueX){continue;}if(flip&&blueX===r0){continue;}var redId=redIndex[i];for(var j=axis+1;j<d;++j){var r0=red[redPtr+j];var r1=red[redPtr+j+d];var b0=blue[bluePtr+j];var b1=blue[bluePtr+j+d];if(r1<b0||b1<r0){continue red_loop;}}var retval;if(flip){retval=visit(blueId,redId);}else{retval=visit(redId,blueId);}if(retval!==void 0){return retval;}}}//Special case:  Intersect one point with list of intervals\nfunction onePointFull(d,axis,visit,redStart,redEnd,red,redIndex,blueOffset,blue,blueId){var elemSize=2*d;var bluePtr=blueOffset*elemSize;var blueX=blue[bluePtr+axis];red_loop:for(var i=redStart,redPtr=redStart*elemSize;i<redEnd;++i,redPtr+=elemSize){var redId=redIndex[i];if(redId===blueId){continue;}var r0=red[redPtr+axis];var r1=red[redPtr+axis+d];if(blueX<r0||r1<blueX){continue;}for(var j=axis+1;j<d;++j){var r0=red[redPtr+j];var r1=red[redPtr+j+d];var b0=blue[bluePtr+j];var b1=blue[bluePtr+j+d];if(r1<b0||b1<r0){continue red_loop;}}var retval=visit(redId,blueId);if(retval!==void 0){return retval;}}}//The main box intersection routine\nfunction boxIntersectIter(d,visit,initFull,xSize,xBoxes,xIndex,ySize,yBoxes,yIndex){//Reserve memory for stack\niterInit(d,xSize+ySize);var top=0;var elemSize=2*d;var retval;iterPush(top++,0,0,xSize,0,ySize,initFull?16:0,-Infinity,Infinity);if(!initFull){iterPush(top++,0,0,ySize,0,xSize,1,-Infinity,Infinity);}while(top>0){top-=1;var iptr=top*IFRAME_SIZE;var axis=BOX_ISTACK[iptr];var redStart=BOX_ISTACK[iptr+1];var redEnd=BOX_ISTACK[iptr+2];var blueStart=BOX_ISTACK[iptr+3];var blueEnd=BOX_ISTACK[iptr+4];var state=BOX_ISTACK[iptr+5];var dptr=top*DFRAME_SIZE;var lo=BOX_DSTACK[dptr];var hi=BOX_DSTACK[dptr+1];//Unpack state info\nvar flip=state&1;var full=!!(state&16);//Unpack indices\nvar red=xBoxes;var redIndex=xIndex;var blue=yBoxes;var blueIndex=yIndex;if(flip){red=yBoxes;redIndex=yIndex;blue=xBoxes;blueIndex=xIndex;}if(state&2){redEnd=partitionStartLessThan(d,axis,redStart,redEnd,red,redIndex,hi);if(redStart>=redEnd){continue;}}if(state&4){redStart=partitionEndLessThanEqual(d,axis,redStart,redEnd,red,redIndex,lo);if(redStart>=redEnd){continue;}}var redCount=redEnd-redStart;var blueCount=blueEnd-blueStart;if(full){if(d*redCount*(redCount+blueCount)<SCAN_COMPLETE_CUTOFF){retval=sweep.scanComplete(d,axis,visit,redStart,redEnd,red,redIndex,blueStart,blueEnd,blue,blueIndex);if(retval!==void 0){return retval;}continue;}}else{if(d*Math.min(redCount,blueCount)<BRUTE_FORCE_CUTOFF){//If input small, then use brute force\nretval=bruteForcePartial(d,axis,visit,flip,redStart,redEnd,red,redIndex,blueStart,blueEnd,blue,blueIndex);if(retval!==void 0){return retval;}continue;}else if(d*redCount*blueCount<SCAN_CUTOFF){//If input medium sized, then use sweep and prune\nretval=sweep.scanBipartite(d,axis,visit,flip,redStart,redEnd,red,redIndex,blueStart,blueEnd,blue,blueIndex);if(retval!==void 0){return retval;}continue;}}//First, find all red intervals whose interior contains (lo,hi)\nvar red0=partitionInteriorContainsInterval(d,axis,redStart,redEnd,red,redIndex,lo,hi);//Lower dimensional case\nif(redStart<red0){if(d*(red0-redStart)<BRUTE_FORCE_CUTOFF){//Special case for small inputs: use brute force\nretval=bruteForceFull(d,axis+1,visit,redStart,red0,red,redIndex,blueStart,blueEnd,blue,blueIndex);if(retval!==void 0){return retval;}}else if(axis===d-2){if(flip){retval=sweep.sweepBipartite(d,visit,blueStart,blueEnd,blue,blueIndex,redStart,red0,red,redIndex);}else{retval=sweep.sweepBipartite(d,visit,redStart,red0,red,redIndex,blueStart,blueEnd,blue,blueIndex);}if(retval!==void 0){return retval;}}else{iterPush(top++,axis+1,redStart,red0,blueStart,blueEnd,flip,-Infinity,Infinity);iterPush(top++,axis+1,blueStart,blueEnd,redStart,red0,flip^1,-Infinity,Infinity);}}//Divide and conquer phase\nif(red0<redEnd){//Cut blue into 3 parts:\n//\n//  Points < mid point\n//  Points = mid point\n//  Points > mid point\n//\nvar blue0=findMedian(d,axis,blueStart,blueEnd,blue,blueIndex);var mid=blue[elemSize*blue0+axis];var blue1=partitionStartEqual(d,axis,blue0,blueEnd,blue,blueIndex,mid);//Right case\nif(blue1<blueEnd){iterPush(top++,axis,red0,redEnd,blue1,blueEnd,(flip|4)+(full?16:0),mid,hi);}//Left case\nif(blueStart<blue0){iterPush(top++,axis,red0,redEnd,blueStart,blue0,(flip|2)+(full?16:0),lo,mid);}//Center case (the hard part)\nif(blue0+1===blue1){//Optimization: Range with exactly 1 point, use a brute force scan\nif(full){retval=onePointFull(d,axis,visit,red0,redEnd,red,redIndex,blue0,blue,blueIndex[blue0]);}else{retval=onePointPartial(d,axis,visit,flip,red0,redEnd,red,redIndex,blue0,blue,blueIndex[blue0]);}if(retval!==void 0){return retval;}}else if(blue0<blue1){var red1;if(full){//If full intersection, need to handle special case\nred1=partitionContainsPoint(d,axis,red0,redEnd,red,redIndex,mid);if(red0<red1){var redX=partitionStartEqual(d,axis,red0,red1,red,redIndex,mid);if(axis===d-2){//Degenerate sweep intersection:\n//  [red0, redX] with [blue0, blue1]\nif(red0<redX){retval=sweep.sweepComplete(d,visit,red0,redX,red,redIndex,blue0,blue1,blue,blueIndex);if(retval!==void 0){return retval;}}//Normal sweep intersection:\n//  [redX, red1] with [blue0, blue1]\nif(redX<red1){retval=sweep.sweepBipartite(d,visit,redX,red1,red,redIndex,blue0,blue1,blue,blueIndex);if(retval!==void 0){return retval;}}}else{if(red0<redX){iterPush(top++,axis+1,red0,redX,blue0,blue1,16,-Infinity,Infinity);}if(redX<red1){iterPush(top++,axis+1,redX,red1,blue0,blue1,0,-Infinity,Infinity);iterPush(top++,axis+1,blue0,blue1,redX,red1,1,-Infinity,Infinity);}}}}else{if(flip){red1=partitionContainsPointProper(d,axis,red0,redEnd,red,redIndex,mid);}else{red1=partitionContainsPoint(d,axis,red0,redEnd,red,redIndex,mid);}if(red0<red1){if(axis===d-2){if(flip){retval=sweep.sweepBipartite(d,visit,blue0,blue1,blue,blueIndex,red0,red1,red,redIndex);}else{retval=sweep.sweepBipartite(d,visit,red0,red1,red,redIndex,blue0,blue1,blue,blueIndex);}}else{iterPush(top++,axis+1,red0,red1,blue0,blue1,flip,-Infinity,Infinity);iterPush(top++,axis+1,blue0,blue1,red0,red1,flip^1,-Infinity,Infinity);}}}}}}}/***/},/***/2464:/***/function(module,__unused_webpack_exports,__nested_webpack_require_150748__){\"use strict\";module.exports=findMedian;var genPartition=__nested_webpack_require_150748__(122);var partitionStartLessThan=genPartition('lo<p0');var PARTITION_THRESHOLD=8;//Cut off for using insertion sort in findMedian\n//Base case for median finding:  Use insertion sort\nfunction insertionSort(d,axis,start,end,boxes,ids){var elemSize=2*d;var boxPtr=elemSize*(start+1)+axis;for(var i=start+1;i<end;++i,boxPtr+=elemSize){var x=boxes[boxPtr];for(var j=i,ptr=elemSize*(i-1);j>start&&boxes[ptr+axis]>x;--j,ptr-=elemSize){//Swap\nvar aPtr=ptr;var bPtr=ptr+elemSize;for(var k=0;k<elemSize;++k,++aPtr,++bPtr){var y=boxes[aPtr];boxes[aPtr]=boxes[bPtr];boxes[bPtr]=y;}var tmp=ids[j];ids[j]=ids[j-1];ids[j-1]=tmp;}}}//Find median using quick select algorithm\n//  takes O(n) time with high probability\nfunction findMedian(d,axis,start,end,boxes,ids){if(end<=start+1){return start;}var lo=start;var hi=end;var mid=end+start>>>1;var elemSize=2*d;var pivot=mid;var value=boxes[elemSize*mid+axis];while(lo<hi){if(hi-lo<PARTITION_THRESHOLD){insertionSort(d,axis,lo,hi,boxes,ids);value=boxes[elemSize*mid+axis];break;}//Select pivot using median-of-3\nvar count=hi-lo;var pivot0=Math.random()*count+lo|0;var value0=boxes[elemSize*pivot0+axis];var pivot1=Math.random()*count+lo|0;var value1=boxes[elemSize*pivot1+axis];var pivot2=Math.random()*count+lo|0;var value2=boxes[elemSize*pivot2+axis];if(value0<=value1){if(value2>=value1){pivot=pivot1;value=value1;}else if(value0>=value2){pivot=pivot0;value=value0;}else{pivot=pivot2;value=value2;}}else{if(value1>=value2){pivot=pivot1;value=value1;}else if(value2>=value0){pivot=pivot0;value=value0;}else{pivot=pivot2;value=value2;}}//Swap pivot to end of array\nvar aPtr=elemSize*(hi-1);var bPtr=elemSize*pivot;for(var i=0;i<elemSize;++i,++aPtr,++bPtr){var x=boxes[aPtr];boxes[aPtr]=boxes[bPtr];boxes[bPtr]=x;}var y=ids[hi-1];ids[hi-1]=ids[pivot];ids[pivot]=y;//Partition using pivot\npivot=partitionStartLessThan(d,axis,lo,hi-1,boxes,ids,value);//Swap pivot back\nvar aPtr=elemSize*(hi-1);var bPtr=elemSize*pivot;for(var i=0;i<elemSize;++i,++aPtr,++bPtr){var x=boxes[aPtr];boxes[aPtr]=boxes[bPtr];boxes[bPtr]=x;}var y=ids[hi-1];ids[hi-1]=ids[pivot];ids[pivot]=y;//Swap pivot to last pivot\nif(mid<pivot){hi=pivot-1;while(lo<hi&&boxes[elemSize*(hi-1)+axis]===value){hi-=1;}hi+=1;}else if(pivot<mid){lo=pivot+1;while(lo<hi&&boxes[elemSize*lo+axis]===value){lo+=1;}}else{break;}}//Make sure pivot is at start\nreturn partitionStartLessThan(d,axis,start,mid,boxes,ids,boxes[elemSize*mid+axis]);}/***/},/***/122:/***/function(module){\"use strict\";module.exports=genPartition;var P2F={'lo===p0':lo_equal_p0,'lo<p0':lo_lessThan_p0,'lo<=p0':lo_lessOrEqual_p0,'hi<=p0':hi_lessOrEqual_p0,'lo<p0&&p0<=hi':lo_lessThan_p0_and_p0_lessOrEqual_hi,'lo<=p0&&p0<=hi':lo_lassOrEqual_p0_and_p0_lessOrEqual_hi,'!(lo>=p0)&&!(p1>=hi)':lo_lessThan_p0_and_p1_lessThan_hi};function genPartition(predicate){return P2F[predicate];}// lo===p0\nfunction lo_equal_p0(a,b,c,d,e,f,p0){for(var j=2*a,k=j*c,l=k,m=c,n=b,o=a+b,p=c;d>p;++p,k+=j){var lo=e[k+n];if(lo===p0)if(m===p)m+=1,l+=j;else{for(var s=0;j>s;++s){var t=e[k+s];e[k+s]=e[l],e[l++]=t;}var u=f[p];f[p]=f[m],f[m++]=u;}}return m;}// lo<p0\nfunction lo_lessThan_p0(a,b,c,d,e,f,p0){for(var j=2*a,k=j*c,l=k,m=c,n=b,o=a+b,p=c;d>p;++p,k+=j){var lo=e[k+n];if(lo<p0)if(m===p)m+=1,l+=j;else{for(var s=0;j>s;++s){var t=e[k+s];e[k+s]=e[l],e[l++]=t;}var u=f[p];f[p]=f[m],f[m++]=u;}}return m;}// lo<=p0\nfunction lo_lessOrEqual_p0(a,b,c,d,e,f,p0){for(var j=2*a,k=j*c,l=k,m=c,n=b,o=a+b,p=c;d>p;++p,k+=j){var hi=e[k+o];if(hi<=p0)if(m===p)m+=1,l+=j;else{for(var s=0;j>s;++s){var t=e[k+s];e[k+s]=e[l],e[l++]=t;}var u=f[p];f[p]=f[m],f[m++]=u;}}return m;}// hi<=p0\nfunction hi_lessOrEqual_p0(a,b,c,d,e,f,p0){for(var j=2*a,k=j*c,l=k,m=c,n=b,o=a+b,p=c;d>p;++p,k+=j){var hi=e[k+o];if(hi<=p0)if(m===p)m+=1,l+=j;else{for(var s=0;j>s;++s){var t=e[k+s];e[k+s]=e[l],e[l++]=t;}var u=f[p];f[p]=f[m],f[m++]=u;}}return m;}// lo<=p0&&p0<=hi\nfunction lo_lassOrEqual_p0_and_p0_lessOrEqual_hi(a,b,c,d,e,f,p0){for(var j=2*a,k=j*c,l=k,m=c,n=b,o=a+b,p=c;d>p;++p,k+=j){var lo=e[k+n],hi=e[k+o];if(lo<=p0&&p0<=hi)if(m===p)m+=1,l+=j;else{for(var s=0;j>s;++s){var t=e[k+s];e[k+s]=e[l],e[l++]=t;}var u=f[p];f[p]=f[m],f[m++]=u;}}return m;}// lo<p0&&p0<=hi\nfunction lo_lessThan_p0_and_p0_lessOrEqual_hi(a,b,c,d,e,f,p0){for(var j=2*a,k=j*c,l=k,m=c,n=b,o=a+b,p=c;d>p;++p,k+=j){var lo=e[k+n],hi=e[k+o];if(lo<p0&&p0<=hi)if(m===p)m+=1,l+=j;else{for(var s=0;j>s;++s){var t=e[k+s];e[k+s]=e[l],e[l++]=t;}var u=f[p];f[p]=f[m],f[m++]=u;}}return m;}// !(lo>=p0)&&!(p1>=hi)\nfunction lo_lessThan_p0_and_p1_lessThan_hi(a,b,c,d,e,f,p0,p1){for(var j=2*a,k=j*c,l=k,m=c,n=b,o=a+b,p=c;d>p;++p,k+=j){var lo=e[k+n],hi=e[k+o];if(!(lo>=p0)&&!(p1>=hi))if(m===p)m+=1,l+=j;else{for(var s=0;j>s;++s){var t=e[k+s];e[k+s]=e[l],e[l++]=t;}var u=f[p];f[p]=f[m],f[m++]=u;}}return m;}/***/},/***/309:/***/function(module){\"use strict\";//This code is extracted from ndarray-sort\n//It is inlined here as a temporary workaround\nmodule.exports=wrapper;var INSERT_SORT_CUTOFF=32;function wrapper(data,n0){if(n0<=4*INSERT_SORT_CUTOFF){insertionSort(0,n0-1,data);}else{quickSort(0,n0-1,data);}}function insertionSort(left,right,data){var ptr=2*(left+1);for(var i=left+1;i<=right;++i){var a=data[ptr++];var b=data[ptr++];var j=i;var jptr=ptr-2;while(j-->left){var x=data[jptr-2];var y=data[jptr-1];if(x<a){break;}else if(x===a&&y<b){break;}data[jptr]=x;data[jptr+1]=y;jptr-=2;}data[jptr]=a;data[jptr+1]=b;}}function swap(i,j,data){i*=2;j*=2;var x=data[i];var y=data[i+1];data[i]=data[j];data[i+1]=data[j+1];data[j]=x;data[j+1]=y;}function move(i,j,data){i*=2;j*=2;data[i]=data[j];data[i+1]=data[j+1];}function rotate(i,j,k,data){i*=2;j*=2;k*=2;var x=data[i];var y=data[i+1];data[i]=data[j];data[i+1]=data[j+1];data[j]=data[k];data[j+1]=data[k+1];data[k]=x;data[k+1]=y;}function shufflePivot(i,j,px,py,data){i*=2;j*=2;data[i]=data[j];data[j]=px;data[i+1]=data[j+1];data[j+1]=py;}function compare(i,j,data){i*=2;j*=2;var x=data[i],y=data[j];if(x<y){return false;}else if(x===y){return data[i+1]>data[j+1];}return true;}function comparePivot(i,y,b,data){i*=2;var x=data[i];if(x<y){return true;}else if(x===y){return data[i+1]<b;}return false;}function quickSort(left,right,data){var sixth=(right-left+1)/6|0,index1=left+sixth,index5=right-sixth,index3=left+right>>1,index2=index3-sixth,index4=index3+sixth,el1=index1,el2=index2,el3=index3,el4=index4,el5=index5,less=left+1,great=right-1,tmp=0;if(compare(el1,el2,data)){tmp=el1;el1=el2;el2=tmp;}if(compare(el4,el5,data)){tmp=el4;el4=el5;el5=tmp;}if(compare(el1,el3,data)){tmp=el1;el1=el3;el3=tmp;}if(compare(el2,el3,data)){tmp=el2;el2=el3;el3=tmp;}if(compare(el1,el4,data)){tmp=el1;el1=el4;el4=tmp;}if(compare(el3,el4,data)){tmp=el3;el3=el4;el4=tmp;}if(compare(el2,el5,data)){tmp=el2;el2=el5;el5=tmp;}if(compare(el2,el3,data)){tmp=el2;el2=el3;el3=tmp;}if(compare(el4,el5,data)){tmp=el4;el4=el5;el5=tmp;}var pivot1X=data[2*el2];var pivot1Y=data[2*el2+1];var pivot2X=data[2*el4];var pivot2Y=data[2*el4+1];var ptr0=2*el1;var ptr2=2*el3;var ptr4=2*el5;var ptr5=2*index1;var ptr6=2*index3;var ptr7=2*index5;for(var i1=0;i1<2;++i1){var x=data[ptr0+i1];var y=data[ptr2+i1];var z=data[ptr4+i1];data[ptr5+i1]=x;data[ptr6+i1]=y;data[ptr7+i1]=z;}move(index2,left,data);move(index4,right,data);for(var k=less;k<=great;++k){if(comparePivot(k,pivot1X,pivot1Y,data)){if(k!==less){swap(k,less,data);}++less;}else{if(!comparePivot(k,pivot2X,pivot2Y,data)){while(true){if(!comparePivot(great,pivot2X,pivot2Y,data)){if(--great<k){break;}continue;}else{if(comparePivot(great,pivot1X,pivot1Y,data)){rotate(k,less,great,data);++less;--great;}else{swap(k,great,data);--great;}break;}}}}}shufflePivot(left,less-1,pivot1X,pivot1Y,data);shufflePivot(right,great+1,pivot2X,pivot2Y,data);if(less-2-left<=INSERT_SORT_CUTOFF){insertionSort(left,less-2,data);}else{quickSort(left,less-2,data);}if(right-(great+2)<=INSERT_SORT_CUTOFF){insertionSort(great+2,right,data);}else{quickSort(great+2,right,data);}if(great-less<=INSERT_SORT_CUTOFF){insertionSort(less,great,data);}else{quickSort(less,great,data);}}/***/},/***/1390:/***/function(module,__unused_webpack_exports,__nested_webpack_require_158895__){\"use strict\";module.exports={init:sqInit,sweepBipartite:sweepBipartite,sweepComplete:sweepComplete,scanBipartite:scanBipartite,scanComplete:scanComplete};var pool=__nested_webpack_require_158895__(5306);var bits=__nested_webpack_require_158895__(2288);var isort=__nested_webpack_require_158895__(309);//Flag for blue\nvar BLUE_FLAG=1<<28;//1D sweep event queue stuff (use pool to save space)\nvar INIT_CAPACITY=1024;var RED_SWEEP_QUEUE=pool.mallocInt32(INIT_CAPACITY);var RED_SWEEP_INDEX=pool.mallocInt32(INIT_CAPACITY);var BLUE_SWEEP_QUEUE=pool.mallocInt32(INIT_CAPACITY);var BLUE_SWEEP_INDEX=pool.mallocInt32(INIT_CAPACITY);var COMMON_SWEEP_QUEUE=pool.mallocInt32(INIT_CAPACITY);var COMMON_SWEEP_INDEX=pool.mallocInt32(INIT_CAPACITY);var SWEEP_EVENTS=pool.mallocDouble(INIT_CAPACITY*8);//Reserves memory for the 1D sweep data structures\nfunction sqInit(count){var rcount=bits.nextPow2(count);if(RED_SWEEP_QUEUE.length<rcount){pool.free(RED_SWEEP_QUEUE);RED_SWEEP_QUEUE=pool.mallocInt32(rcount);}if(RED_SWEEP_INDEX.length<rcount){pool.free(RED_SWEEP_INDEX);RED_SWEEP_INDEX=pool.mallocInt32(rcount);}if(BLUE_SWEEP_QUEUE.length<rcount){pool.free(BLUE_SWEEP_QUEUE);BLUE_SWEEP_QUEUE=pool.mallocInt32(rcount);}if(BLUE_SWEEP_INDEX.length<rcount){pool.free(BLUE_SWEEP_INDEX);BLUE_SWEEP_INDEX=pool.mallocInt32(rcount);}if(COMMON_SWEEP_QUEUE.length<rcount){pool.free(COMMON_SWEEP_QUEUE);COMMON_SWEEP_QUEUE=pool.mallocInt32(rcount);}if(COMMON_SWEEP_INDEX.length<rcount){pool.free(COMMON_SWEEP_INDEX);COMMON_SWEEP_INDEX=pool.mallocInt32(rcount);}var eventLength=8*rcount;if(SWEEP_EVENTS.length<eventLength){pool.free(SWEEP_EVENTS);SWEEP_EVENTS=pool.mallocDouble(eventLength);}}//Remove an item from the active queue in O(1)\nfunction sqPop(queue,index,count,item){var idx=index[item];var top=queue[count-1];queue[idx]=top;index[top]=idx;}//Insert an item into the active queue in O(1)\nfunction sqPush(queue,index,count,item){queue[count]=item;index[item]=count;}//Recursion base case: use 1D sweep algorithm\nfunction sweepBipartite(d,visit,redStart,redEnd,red,redIndex,blueStart,blueEnd,blue,blueIndex){//store events as pairs [coordinate, idx]\n//\n//  red create:  -(idx+1)\n//  red destroy: idx\n//  blue create: -(idx+BLUE_FLAG)\n//  blue destroy: idx+BLUE_FLAG\n//\nvar ptr=0;var elemSize=2*d;var istart=d-1;var iend=elemSize-1;for(var i=redStart;i<redEnd;++i){var idx=redIndex[i];var redOffset=elemSize*i;SWEEP_EVENTS[ptr++]=red[redOffset+istart];SWEEP_EVENTS[ptr++]=-(idx+1);SWEEP_EVENTS[ptr++]=red[redOffset+iend];SWEEP_EVENTS[ptr++]=idx;}for(var i=blueStart;i<blueEnd;++i){var idx=blueIndex[i]+BLUE_FLAG;var blueOffset=elemSize*i;SWEEP_EVENTS[ptr++]=blue[blueOffset+istart];SWEEP_EVENTS[ptr++]=-idx;SWEEP_EVENTS[ptr++]=blue[blueOffset+iend];SWEEP_EVENTS[ptr++]=idx;}//process events from left->right\nvar n=ptr>>>1;isort(SWEEP_EVENTS,n);var redActive=0;var blueActive=0;for(var i=0;i<n;++i){var e=SWEEP_EVENTS[2*i+1]|0;if(e>=BLUE_FLAG){//blue destroy event\ne=e-BLUE_FLAG|0;sqPop(BLUE_SWEEP_QUEUE,BLUE_SWEEP_INDEX,blueActive--,e);}else if(e>=0){//red destroy event\nsqPop(RED_SWEEP_QUEUE,RED_SWEEP_INDEX,redActive--,e);}else if(e<=-BLUE_FLAG){//blue create event\ne=-e-BLUE_FLAG|0;for(var j=0;j<redActive;++j){var retval=visit(RED_SWEEP_QUEUE[j],e);if(retval!==void 0){return retval;}}sqPush(BLUE_SWEEP_QUEUE,BLUE_SWEEP_INDEX,blueActive++,e);}else{//red create event\ne=-e-1|0;for(var j=0;j<blueActive;++j){var retval=visit(e,BLUE_SWEEP_QUEUE[j]);if(retval!==void 0){return retval;}}sqPush(RED_SWEEP_QUEUE,RED_SWEEP_INDEX,redActive++,e);}}}//Complete sweep\nfunction sweepComplete(d,visit,redStart,redEnd,red,redIndex,blueStart,blueEnd,blue,blueIndex){var ptr=0;var elemSize=2*d;var istart=d-1;var iend=elemSize-1;for(var i=redStart;i<redEnd;++i){var idx=redIndex[i]+1<<1;var redOffset=elemSize*i;SWEEP_EVENTS[ptr++]=red[redOffset+istart];SWEEP_EVENTS[ptr++]=-idx;SWEEP_EVENTS[ptr++]=red[redOffset+iend];SWEEP_EVENTS[ptr++]=idx;}for(var i=blueStart;i<blueEnd;++i){var idx=blueIndex[i]+1<<1;var blueOffset=elemSize*i;SWEEP_EVENTS[ptr++]=blue[blueOffset+istart];SWEEP_EVENTS[ptr++]=-idx|1;SWEEP_EVENTS[ptr++]=blue[blueOffset+iend];SWEEP_EVENTS[ptr++]=idx|1;}//process events from left->right\nvar n=ptr>>>1;isort(SWEEP_EVENTS,n);var redActive=0;var blueActive=0;var commonActive=0;for(var i=0;i<n;++i){var e=SWEEP_EVENTS[2*i+1]|0;var color=e&1;if(i<n-1&&e>>1===SWEEP_EVENTS[2*i+3]>>1){color=2;i+=1;}if(e<0){//Create event\nvar id=-(e>>1)-1;//Intersect with common\nfor(var j=0;j<commonActive;++j){var retval=visit(COMMON_SWEEP_QUEUE[j],id);if(retval!==void 0){return retval;}}if(color!==0){//Intersect with red\nfor(var j=0;j<redActive;++j){var retval=visit(RED_SWEEP_QUEUE[j],id);if(retval!==void 0){return retval;}}}if(color!==1){//Intersect with blue\nfor(var j=0;j<blueActive;++j){var retval=visit(BLUE_SWEEP_QUEUE[j],id);if(retval!==void 0){return retval;}}}if(color===0){//Red\nsqPush(RED_SWEEP_QUEUE,RED_SWEEP_INDEX,redActive++,id);}else if(color===1){//Blue\nsqPush(BLUE_SWEEP_QUEUE,BLUE_SWEEP_INDEX,blueActive++,id);}else if(color===2){//Both\nsqPush(COMMON_SWEEP_QUEUE,COMMON_SWEEP_INDEX,commonActive++,id);}}else{//Destroy event\nvar id=(e>>1)-1;if(color===0){//Red\nsqPop(RED_SWEEP_QUEUE,RED_SWEEP_INDEX,redActive--,id);}else if(color===1){//Blue\nsqPop(BLUE_SWEEP_QUEUE,BLUE_SWEEP_INDEX,blueActive--,id);}else if(color===2){//Both\nsqPop(COMMON_SWEEP_QUEUE,COMMON_SWEEP_INDEX,commonActive--,id);}}}}//Sweep and prune/scanline algorithm:\n//  Scan along axis, detect intersections\n//  Brute force all boxes along axis\nfunction scanBipartite(d,axis,visit,flip,redStart,redEnd,red,redIndex,blueStart,blueEnd,blue,blueIndex){var ptr=0;var elemSize=2*d;var istart=axis;var iend=axis+d;var redShift=1;var blueShift=1;if(flip){blueShift=BLUE_FLAG;}else{redShift=BLUE_FLAG;}for(var i=redStart;i<redEnd;++i){var idx=i+redShift;var redOffset=elemSize*i;SWEEP_EVENTS[ptr++]=red[redOffset+istart];SWEEP_EVENTS[ptr++]=-idx;SWEEP_EVENTS[ptr++]=red[redOffset+iend];SWEEP_EVENTS[ptr++]=idx;}for(var i=blueStart;i<blueEnd;++i){var idx=i+blueShift;var blueOffset=elemSize*i;SWEEP_EVENTS[ptr++]=blue[blueOffset+istart];SWEEP_EVENTS[ptr++]=-idx;}//process events from left->right\nvar n=ptr>>>1;isort(SWEEP_EVENTS,n);var redActive=0;for(var i=0;i<n;++i){var e=SWEEP_EVENTS[2*i+1]|0;if(e<0){var idx=-e;var isRed=false;if(idx>=BLUE_FLAG){isRed=!flip;idx-=BLUE_FLAG;}else{isRed=!!flip;idx-=1;}if(isRed){sqPush(RED_SWEEP_QUEUE,RED_SWEEP_INDEX,redActive++,idx);}else{var blueId=blueIndex[idx];var bluePtr=elemSize*idx;var b0=blue[bluePtr+axis+1];var b1=blue[bluePtr+axis+1+d];red_loop:for(var j=0;j<redActive;++j){var oidx=RED_SWEEP_QUEUE[j];var redPtr=elemSize*oidx;if(b1<red[redPtr+axis+1]||red[redPtr+axis+1+d]<b0){continue;}for(var k=axis+2;k<d;++k){if(blue[bluePtr+k+d]<red[redPtr+k]||red[redPtr+k+d]<blue[bluePtr+k]){continue red_loop;}}var redId=redIndex[oidx];var retval;if(flip){retval=visit(blueId,redId);}else{retval=visit(redId,blueId);}if(retval!==void 0){return retval;}}}}else{sqPop(RED_SWEEP_QUEUE,RED_SWEEP_INDEX,redActive--,e-redShift);}}}function scanComplete(d,axis,visit,redStart,redEnd,red,redIndex,blueStart,blueEnd,blue,blueIndex){var ptr=0;var elemSize=2*d;var istart=axis;var iend=axis+d;for(var i=redStart;i<redEnd;++i){var idx=i+BLUE_FLAG;var redOffset=elemSize*i;SWEEP_EVENTS[ptr++]=red[redOffset+istart];SWEEP_EVENTS[ptr++]=-idx;SWEEP_EVENTS[ptr++]=red[redOffset+iend];SWEEP_EVENTS[ptr++]=idx;}for(var i=blueStart;i<blueEnd;++i){var idx=i+1;var blueOffset=elemSize*i;SWEEP_EVENTS[ptr++]=blue[blueOffset+istart];SWEEP_EVENTS[ptr++]=-idx;}//process events from left->right\nvar n=ptr>>>1;isort(SWEEP_EVENTS,n);var redActive=0;for(var i=0;i<n;++i){var e=SWEEP_EVENTS[2*i+1]|0;if(e<0){var idx=-e;if(idx>=BLUE_FLAG){RED_SWEEP_QUEUE[redActive++]=idx-BLUE_FLAG;}else{idx-=1;var blueId=blueIndex[idx];var bluePtr=elemSize*idx;var b0=blue[bluePtr+axis+1];var b1=blue[bluePtr+axis+1+d];red_loop:for(var j=0;j<redActive;++j){var oidx=RED_SWEEP_QUEUE[j];var redId=redIndex[oidx];if(redId===blueId){break;}var redPtr=elemSize*oidx;if(b1<red[redPtr+axis+1]||red[redPtr+axis+1+d]<b0){continue;}for(var k=axis+2;k<d;++k){if(blue[bluePtr+k+d]<red[redPtr+k]||red[redPtr+k+d]<blue[bluePtr+k]){continue red_loop;}}var retval=visit(redId,blueId);if(retval!==void 0){return retval;}}}}else{var idx=e-BLUE_FLAG;for(var j=redActive-1;j>=0;--j){if(RED_SWEEP_QUEUE[j]===idx){for(var k=j+1;k<redActive;++k){RED_SWEEP_QUEUE[k-1]=RED_SWEEP_QUEUE[k];}break;}}--redActive;}}}/***/},/***/7761:/***/function(module,__unused_webpack_exports,__nested_webpack_require_167365__){\"use strict\";var monotoneTriangulate=__nested_webpack_require_167365__(9971);var makeIndex=__nested_webpack_require_167365__(743);var delaunayFlip=__nested_webpack_require_167365__(2161);var filterTriangulation=__nested_webpack_require_167365__(7098);module.exports=cdt2d;function canonicalizeEdge(e){return[Math.min(e[0],e[1]),Math.max(e[0],e[1])];}function compareEdge(a,b){return a[0]-b[0]||a[1]-b[1];}function canonicalizeEdges(edges){return edges.map(canonicalizeEdge).sort(compareEdge);}function getDefault(options,property,dflt){if(property in options){return options[property];}return dflt;}function cdt2d(points,edges,options){if(!Array.isArray(edges)){options=edges||{};edges=[];}else{options=options||{};edges=edges||[];}//Parse out options\nvar delaunay=!!getDefault(options,'delaunay',true);var interior=!!getDefault(options,'interior',true);var exterior=!!getDefault(options,'exterior',true);var infinity=!!getDefault(options,'infinity',false);//Handle trivial case\nif(!interior&&!exterior||points.length===0){return[];}//Construct initial triangulation\nvar cells=monotoneTriangulate(points,edges);//If delaunay refinement needed, then improve quality by edge flipping\nif(delaunay||interior!==exterior||infinity){//Index all of the cells to support fast neighborhood queries\nvar triangulation=makeIndex(points.length,canonicalizeEdges(edges));for(var i=0;i<cells.length;++i){var f=cells[i];triangulation.addTriangle(f[0],f[1],f[2]);}//Run edge flipping\nif(delaunay){delaunayFlip(points,triangulation);}//Filter points\nif(!exterior){return filterTriangulation(triangulation,-1);}else if(!interior){return filterTriangulation(triangulation,1,infinity);}else if(infinity){return filterTriangulation(triangulation,0,infinity);}else{return triangulation.cells();}}else{return cells;}}/***/},/***/2161:/***/function(module,__unused_webpack_exports,__nested_webpack_require_169185__){\"use strict\";var inCircle=__nested_webpack_require_169185__(2227)[4];var bsearch=__nested_webpack_require_169185__(5070);module.exports=delaunayRefine;function testFlip(points,triangulation,stack,a,b,x){var y=triangulation.opposite(a,b);//Test boundary edge\nif(y<0){return;}//Swap edge if order flipped\nif(b<a){var tmp=a;a=b;b=tmp;tmp=x;x=y;y=tmp;}//Test if edge is constrained\nif(triangulation.isConstraint(a,b)){return;}//Test if edge is delaunay\nif(inCircle(points[a],points[b],points[x],points[y])<0){stack.push(a,b);}}//Assume edges are sorted lexicographically\nfunction delaunayRefine(points,triangulation){var stack=[];var numPoints=points.length;var stars=triangulation.stars;for(var a=0;a<numPoints;++a){var star=stars[a];for(var j=1;j<star.length;j+=2){var b=star[j];//If order is not consistent, then skip edge\nif(b<a){continue;}//Check if edge is constrained\nif(triangulation.isConstraint(a,b)){continue;}//Find opposite edge\nvar x=star[j-1],y=-1;for(var k=1;k<star.length;k+=2){if(star[k-1]===b){y=star[k];break;}}//If this is a boundary edge, don't flip it\nif(y<0){continue;}//If edge is in circle, flip it\nif(inCircle(points[a],points[b],points[x],points[y])<0){stack.push(a,b);}}}while(stack.length>0){var b=stack.pop();var a=stack.pop();//Find opposite pairs\nvar x=-1,y=-1;var star=stars[a];for(var i=1;i<star.length;i+=2){var s=star[i-1];var t=star[i];if(s===b){y=t;}else if(t===b){x=s;}}//If x/y are both valid then skip edge\nif(x<0||y<0){continue;}//If edge is now delaunay, then don't flip it\nif(inCircle(points[a],points[b],points[x],points[y])>=0){continue;}//Flip the edge\ntriangulation.flip(a,b);//Test flipping neighboring edges\ntestFlip(points,triangulation,stack,x,a,y);testFlip(points,triangulation,stack,a,y,x);testFlip(points,triangulation,stack,y,b,x);testFlip(points,triangulation,stack,b,x,y);}}/***/},/***/7098:/***/function(module,__unused_webpack_exports,__nested_webpack_require_171070__){\"use strict\";var bsearch=__nested_webpack_require_171070__(5070);module.exports=classifyFaces;function FaceIndex(cells,neighbor,constraint,flags,active,next,boundary){this.cells=cells;this.neighbor=neighbor;this.flags=flags;this.constraint=constraint;this.active=active;this.next=next;this.boundary=boundary;}var proto=FaceIndex.prototype;function compareCell(a,b){return a[0]-b[0]||a[1]-b[1]||a[2]-b[2];}proto.locate=function(){var key=[0,0,0];return function(a,b,c){var x=a,y=b,z=c;if(b<c){if(b<a){x=b;y=c;z=a;}}else if(c<a){x=c;y=a;z=b;}if(x<0){return-1;}key[0]=x;key[1]=y;key[2]=z;return bsearch.eq(this.cells,key,compareCell);};}();function indexCells(triangulation,infinity){//First get cells and canonicalize\nvar cells=triangulation.cells();var nc=cells.length;for(var i=0;i<nc;++i){var c=cells[i];var x=c[0],y=c[1],z=c[2];if(y<z){if(y<x){c[0]=y;c[1]=z;c[2]=x;}}else if(z<x){c[0]=z;c[1]=x;c[2]=y;}}cells.sort(compareCell);//Initialize flag array\nvar flags=new Array(nc);for(var i=0;i<flags.length;++i){flags[i]=0;}//Build neighbor index, initialize queues\nvar active=[];var next=[];var neighbor=new Array(3*nc);var constraint=new Array(3*nc);var boundary=null;if(infinity){boundary=[];}var index=new FaceIndex(cells,neighbor,constraint,flags,active,next,boundary);for(var i=0;i<nc;++i){var c=cells[i];for(var j=0;j<3;++j){var x=c[j],y=c[(j+1)%3];var a=neighbor[3*i+j]=index.locate(y,x,triangulation.opposite(y,x));var b=constraint[3*i+j]=triangulation.isConstraint(x,y);if(a<0){if(b){next.push(i);}else{active.push(i);flags[i]=1;}if(infinity){boundary.push([y,x,-1]);}}}}return index;}function filterCells(cells,flags,target){var ptr=0;for(var i=0;i<cells.length;++i){if(flags[i]===target){cells[ptr++]=cells[i];}}cells.length=ptr;return cells;}function classifyFaces(triangulation,target,infinity){var index=indexCells(triangulation,infinity);if(target===0){if(infinity){return index.cells.concat(index.boundary);}else{return index.cells;}}var side=1;var active=index.active;var next=index.next;var flags=index.flags;var cells=index.cells;var constraint=index.constraint;var neighbor=index.neighbor;while(active.length>0||next.length>0){while(active.length>0){var t=active.pop();if(flags[t]===-side){continue;}flags[t]=side;var c=cells[t];for(var j=0;j<3;++j){var f=neighbor[3*t+j];if(f>=0&&flags[f]===0){if(constraint[3*t+j]){next.push(f);}else{active.push(f);flags[f]=side;}}}}//Swap arrays and loop\nvar tmp=next;next=active;active=tmp;next.length=0;side=-side;}var result=filterCells(cells,flags,target);if(infinity){return result.concat(index.boundary);}return result;}/***/},/***/9971:/***/function(module,__unused_webpack_exports,__nested_webpack_require_173721__){\"use strict\";var bsearch=__nested_webpack_require_173721__(5070);var orient=__nested_webpack_require_173721__(417)[3];var EVENT_POINT=0;var EVENT_END=1;var EVENT_START=2;module.exports=monotoneTriangulate;//A partial convex hull fragment, made of two unimonotone polygons\nfunction PartialHull(a,b,idx,lowerIds,upperIds){this.a=a;this.b=b;this.idx=idx;this.lowerIds=lowerIds;this.upperIds=upperIds;}//An event in the sweep line procedure\nfunction Event(a,b,type,idx){this.a=a;this.b=b;this.type=type;this.idx=idx;}//This is used to compare events for the sweep line procedure\n// Points are:\n//  1. sorted lexicographically\n//  2. sorted by type  (point < end < start)\n//  3. segments sorted by winding order\n//  4. sorted by index\nfunction compareEvent(a,b){var d=a.a[0]-b.a[0]||a.a[1]-b.a[1]||a.type-b.type;if(d){return d;}if(a.type!==EVENT_POINT){d=orient(a.a,a.b,b.b);if(d){return d;}}return a.idx-b.idx;}function testPoint(hull,p){return orient(hull.a,hull.b,p);}function addPoint(cells,hulls,points,p,idx){var lo=bsearch.lt(hulls,p,testPoint);var hi=bsearch.gt(hulls,p,testPoint);for(var i=lo;i<hi;++i){var hull=hulls[i];//Insert p into lower hull\nvar lowerIds=hull.lowerIds;var m=lowerIds.length;while(m>1&&orient(points[lowerIds[m-2]],points[lowerIds[m-1]],p)>0){cells.push([lowerIds[m-1],lowerIds[m-2],idx]);m-=1;}lowerIds.length=m;lowerIds.push(idx);//Insert p into upper hull\nvar upperIds=hull.upperIds;var m=upperIds.length;while(m>1&&orient(points[upperIds[m-2]],points[upperIds[m-1]],p)<0){cells.push([upperIds[m-2],upperIds[m-1],idx]);m-=1;}upperIds.length=m;upperIds.push(idx);}}function findSplit(hull,edge){var d;if(hull.a[0]<edge.a[0]){d=orient(hull.a,hull.b,edge.a);}else{d=orient(edge.b,edge.a,hull.a);}if(d){return d;}if(edge.b[0]<hull.b[0]){d=orient(hull.a,hull.b,edge.b);}else{d=orient(edge.b,edge.a,hull.b);}return d||hull.idx-edge.idx;}function splitHulls(hulls,points,event){var splitIdx=bsearch.le(hulls,event,findSplit);var hull=hulls[splitIdx];var upperIds=hull.upperIds;var x=upperIds[upperIds.length-1];hull.upperIds=[x];hulls.splice(splitIdx+1,0,new PartialHull(event.a,event.b,event.idx,[x],upperIds));}function mergeHulls(hulls,points,event){//Swap pointers for merge search\nvar tmp=event.a;event.a=event.b;event.b=tmp;var mergeIdx=bsearch.eq(hulls,event,findSplit);var upper=hulls[mergeIdx];var lower=hulls[mergeIdx-1];lower.upperIds=upper.upperIds;hulls.splice(mergeIdx,1);}function monotoneTriangulate(points,edges){var numPoints=points.length;var numEdges=edges.length;var events=[];//Create point events\nfor(var i=0;i<numPoints;++i){events.push(new Event(points[i],null,EVENT_POINT,i));}//Create edge events\nfor(var i=0;i<numEdges;++i){var e=edges[i];var a=points[e[0]];var b=points[e[1]];if(a[0]<b[0]){events.push(new Event(a,b,EVENT_START,i),new Event(b,a,EVENT_END,i));}else if(a[0]>b[0]){events.push(new Event(b,a,EVENT_START,i),new Event(a,b,EVENT_END,i));}}//Sort events\nevents.sort(compareEvent);//Initialize hull\nvar minX=events[0].a[0]-(1+Math.abs(events[0].a[0]))*Math.pow(2,-52);var hull=[new PartialHull([minX,1],[minX,0],-1,[],[],[],[])];//Process events in order\nvar cells=[];for(var i=0,numEvents=events.length;i<numEvents;++i){var event=events[i];var type=event.type;if(type===EVENT_POINT){addPoint(cells,hull,points,event.a,event.idx);}else if(type===EVENT_START){splitHulls(hull,points,event);}else{mergeHulls(hull,points,event);}}//Return triangulation\nreturn cells;}/***/},/***/743:/***/function(module,__unused_webpack_exports,__nested_webpack_require_177200__){\"use strict\";var bsearch=__nested_webpack_require_177200__(5070);module.exports=createTriangulation;function Triangulation(stars,edges){this.stars=stars;this.edges=edges;}var proto=Triangulation.prototype;function removePair(list,j,k){for(var i=1,n=list.length;i<n;i+=2){if(list[i-1]===j&&list[i]===k){list[i-1]=list[n-2];list[i]=list[n-1];list.length=n-2;return;}}}proto.isConstraint=function(){var e=[0,0];function compareLex(a,b){return a[0]-b[0]||a[1]-b[1];}return function(i,j){e[0]=Math.min(i,j);e[1]=Math.max(i,j);return bsearch.eq(this.edges,e,compareLex)>=0;};}();proto.removeTriangle=function(i,j,k){var stars=this.stars;removePair(stars[i],j,k);removePair(stars[j],k,i);removePair(stars[k],i,j);};proto.addTriangle=function(i,j,k){var stars=this.stars;stars[i].push(j,k);stars[j].push(k,i);stars[k].push(i,j);};proto.opposite=function(j,i){var list=this.stars[i];for(var k=1,n=list.length;k<n;k+=2){if(list[k]===j){return list[k-1];}}return-1;};proto.flip=function(i,j){var a=this.opposite(i,j);var b=this.opposite(j,i);this.removeTriangle(i,j,a);this.removeTriangle(j,i,b);this.addTriangle(i,b,a);this.addTriangle(j,a,b);};proto.edges=function(){var stars=this.stars;var result=[];for(var i=0,n=stars.length;i<n;++i){var list=stars[i];for(var j=0,m=list.length;j<m;j+=2){result.push([list[j],list[j+1]]);}}return result;};proto.cells=function(){var stars=this.stars;var result=[];for(var i=0,n=stars.length;i<n;++i){var list=stars[i];for(var j=0,m=list.length;j<m;j+=2){var s=list[j];var t=list[j+1];if(i<Math.min(s,t)){result.push([i,s,t]);}}}return result;};function createTriangulation(numVerts,edges){var stars=new Array(numVerts);for(var i=0;i<numVerts;++i){stars[i]=[];}return new Triangulation(stars,edges);}/***/},/***/9887:/***/function(module){\"use strict\";module.exports=orientation;function orientation(s){var p=1;for(var i=1;i<s.length;++i){for(var j=0;j<i;++j){if(s[i]<s[j]){p=-p;}else if(s[j]===s[i]){return 0;}}}return p;}/***/},/***/9243:/***/function(module,__unused_webpack_exports,__nested_webpack_require_179220__){\"use strict\";var dup=__nested_webpack_require_179220__(3094);var solve=__nested_webpack_require_179220__(6606);function dot(a,b){var s=0.0;var d=a.length;for(var i=0;i<d;++i){s+=a[i]*b[i];}return s;}function barycentricCircumcenter(points){var N=points.length;if(N===0){return[];}var D=points[0].length;var A=dup([points.length+1,points.length+1],1.0);var b=dup([points.length+1],1.0);A[N][N]=0.0;for(var i=0;i<N;++i){for(var j=0;j<=i;++j){A[j][i]=A[i][j]=2.0*dot(points[i],points[j]);}b[i]=dot(points[i],points[i]);}var x=solve(A,b);var denom=0.0;var h=x[N+1];for(var i=0;i<h.length;++i){denom+=h[i];}var y=new Array(N);for(var i=0;i<N;++i){var h=x[i];var numer=0.0;for(var j=0;j<h.length;++j){numer+=h[j];}y[i]=numer/denom;}return y;}function circumcenter(points){if(points.length===0){return[];}var D=points[0].length;var result=dup([D]);var weights=barycentricCircumcenter(points);for(var i=0;i<points.length;++i){for(var j=0;j<D;++j){result[j]+=points[i][j]*weights[i];}}return result;}circumcenter.barycenetric=barycentricCircumcenter;module.exports=circumcenter;/***/},/***/1778:/***/function(module,__unused_webpack_exports,__nested_webpack_require_180345__){module.exports=circumradius;var circumcenter=__nested_webpack_require_180345__(9243);function circumradius(points){var center=circumcenter(points);var avgDist=0.0;for(var i=0;i<points.length;++i){var p=points[i];for(var j=0;j<center.length;++j){avgDist+=Math.pow(p[j]-center[j],2);}}return Math.sqrt(avgDist/points.length);}/***/},/***/197:/***/function(module,__unused_webpack_exports,__nested_webpack_require_180738__){\"use strict\";module.exports=cleanPSLG;var UnionFind=__nested_webpack_require_180738__(1731);var boxIntersect=__nested_webpack_require_180738__(2569);var segseg=__nested_webpack_require_180738__(4434);var rat=__nested_webpack_require_180738__(5125);var ratCmp=__nested_webpack_require_180738__(8846);var ratToFloat=__nested_webpack_require_180738__(7999);var ratVec=__nested_webpack_require_180738__(2826);var nextafter=__nested_webpack_require_180738__(8551);var solveIntersection=__nested_webpack_require_180738__(5528);// Bounds on a rational number when rounded to a float\nfunction boundRat(r){var f=ratToFloat(r);return[nextafter(f,-Infinity),nextafter(f,Infinity)];}// Convert a list of edges in a pslg to bounding boxes\nfunction boundEdges(points,edges){var bounds=new Array(edges.length);for(var i=0;i<edges.length;++i){var e=edges[i];var a=points[e[0]];var b=points[e[1]];bounds[i]=[nextafter(Math.min(a[0],b[0]),-Infinity),nextafter(Math.min(a[1],b[1]),-Infinity),nextafter(Math.max(a[0],b[0]),Infinity),nextafter(Math.max(a[1],b[1]),Infinity)];}return bounds;}// Convert a list of points into bounding boxes by duplicating coords\nfunction boundPoints(points){var bounds=new Array(points.length);for(var i=0;i<points.length;++i){var p=points[i];bounds[i]=[nextafter(p[0],-Infinity),nextafter(p[1],-Infinity),nextafter(p[0],Infinity),nextafter(p[1],Infinity)];}return bounds;}// Find all pairs of crossing edges in a pslg (given edge bounds)\nfunction getCrossings(points,edges,edgeBounds){var result=[];boxIntersect(edgeBounds,function(i,j){var e=edges[i];var f=edges[j];if(e[0]===f[0]||e[0]===f[1]||e[1]===f[0]||e[1]===f[1]){return;}var a=points[e[0]];var b=points[e[1]];var c=points[f[0]];var d=points[f[1]];if(segseg(a,b,c,d)){result.push([i,j]);}});return result;}// Find all pairs of crossing vertices in a pslg (given edge/vert bounds)\nfunction getTJunctions(points,edges,edgeBounds,vertBounds){var result=[];boxIntersect(edgeBounds,vertBounds,function(i,v){var e=edges[i];if(e[0]===v||e[1]===v){return;}var p=points[v];var a=points[e[0]];var b=points[e[1]];if(segseg(a,b,p,p)){result.push([i,v]);}});return result;}// Cut edges along crossings/tjunctions\nfunction cutEdges(floatPoints,edges,crossings,junctions,useColor){var i,e;// Convert crossings into tjunctions by constructing rational points\nvar ratPoints=floatPoints.map(function(p){return[rat(p[0]),rat(p[1])];});for(i=0;i<crossings.length;++i){var crossing=crossings[i];e=crossing[0];var f=crossing[1];var ee=edges[e];var ef=edges[f];var x=solveIntersection(ratVec(floatPoints[ee[0]]),ratVec(floatPoints[ee[1]]),ratVec(floatPoints[ef[0]]),ratVec(floatPoints[ef[1]]));if(!x){// Segments are parallel, should already be handled by t-junctions\ncontinue;}var idx=floatPoints.length;floatPoints.push([ratToFloat(x[0]),ratToFloat(x[1])]);ratPoints.push(x);junctions.push([e,idx],[f,idx]);}// Sort tjunctions\njunctions.sort(function(a,b){if(a[0]!==b[0]){return a[0]-b[0];}var u=ratPoints[a[1]];var v=ratPoints[b[1]];return ratCmp(u[0],v[0])||ratCmp(u[1],v[1]);});// Split edges along junctions\nfor(i=junctions.length-1;i>=0;--i){var junction=junctions[i];e=junction[0];var edge=edges[e];var s=edge[0];var t=edge[1];// Check if edge is not lexicographically sorted\nvar a=floatPoints[s];var b=floatPoints[t];if((a[0]-b[0]||a[1]-b[1])<0){var tmp=s;s=t;t=tmp;}// Split leading edge\nedge[0]=s;var last=edge[1]=junction[1];// If we are grouping edges by color, remember to track data\nvar color;if(useColor){color=edge[2];}// Split other edges\nwhile(i>0&&junctions[i-1][0]===e){var junction=junctions[--i];var next=junction[1];if(useColor){edges.push([last,next,color]);}else{edges.push([last,next]);}last=next;}// Add final edge\nif(useColor){edges.push([last,t,color]);}else{edges.push([last,t]);}}// Return constructed rational points\nreturn ratPoints;}// Merge overlapping points\nfunction dedupPoints(floatPoints,ratPoints,floatBounds){var numPoints=ratPoints.length;var uf=new UnionFind(numPoints);// Compute rational bounds\nvar bounds=[];for(var i=0;i<ratPoints.length;++i){var p=ratPoints[i];var xb=boundRat(p[0]);var yb=boundRat(p[1]);bounds.push([nextafter(xb[0],-Infinity),nextafter(yb[0],-Infinity),nextafter(xb[1],Infinity),nextafter(yb[1],Infinity)]);}// Link all points with over lapping boxes\nboxIntersect(bounds,function(i,j){uf.link(i,j);});// Do 1 pass over points to combine points in label sets\nvar noDupes=true;var labels=new Array(numPoints);for(var i=0;i<numPoints;++i){var j=uf.find(i);if(j!==i){// Clear no-dupes flag, zero out label\nnoDupes=false;// Make each point the top-left point from its cell\nfloatPoints[j]=[Math.min(floatPoints[i][0],floatPoints[j][0]),Math.min(floatPoints[i][1],floatPoints[j][1])];}}// If no duplicates, return null to signal termination\nif(noDupes){return null;}var ptr=0;for(var i=0;i<numPoints;++i){var j=uf.find(i);if(j===i){labels[i]=ptr;floatPoints[ptr++]=floatPoints[i];}else{labels[i]=-1;}}floatPoints.length=ptr;// Do a second pass to fix up missing labels\nfor(var i=0;i<numPoints;++i){if(labels[i]<0){labels[i]=labels[uf.find(i)];}}// Return resulting union-find data structure\nreturn labels;}function compareLex2(a,b){return a[0]-b[0]||a[1]-b[1];}function compareLex3(a,b){var d=a[0]-b[0]||a[1]-b[1];if(d){return d;}if(a[2]<b[2]){return-1;}else if(a[2]>b[2]){return 1;}return 0;}// Remove duplicate edge labels\nfunction dedupEdges(edges,labels,useColor){if(edges.length===0){return;}if(labels){for(var i=0;i<edges.length;++i){var e=edges[i];var a=labels[e[0]];var b=labels[e[1]];e[0]=Math.min(a,b);e[1]=Math.max(a,b);}}else{for(var i=0;i<edges.length;++i){var e=edges[i];var a=e[0];var b=e[1];e[0]=Math.min(a,b);e[1]=Math.max(a,b);}}if(useColor){edges.sort(compareLex3);}else{edges.sort(compareLex2);}var ptr=1;for(var i=1;i<edges.length;++i){var prev=edges[i-1];var next=edges[i];if(next[0]===prev[0]&&next[1]===prev[1]&&(!useColor||next[2]===prev[2])){continue;}edges[ptr++]=next;}edges.length=ptr;}function preRound(points,edges,useColor){var labels=dedupPoints(points,[],boundPoints(points));dedupEdges(edges,labels,useColor);return!!labels;}// Repeat until convergence\nfunction snapRound(points,edges,useColor){// 1. find edge crossings\nvar edgeBounds=boundEdges(points,edges);var crossings=getCrossings(points,edges,edgeBounds);// 2. find t-junctions\nvar vertBounds=boundPoints(points);var tjunctions=getTJunctions(points,edges,edgeBounds,vertBounds);// 3. cut edges, construct rational points\nvar ratPoints=cutEdges(points,edges,crossings,tjunctions,useColor);// 4. dedupe verts\nvar labels=dedupPoints(points,ratPoints,vertBounds);// 5. dedupe edges\ndedupEdges(edges,labels,useColor);// 6. check termination\nif(!labels){return crossings.length>0||tjunctions.length>0;}// More iterations necessary\nreturn true;}// Main loop, runs PSLG clean up until completion\nfunction cleanPSLG(points,edges,colors){// If using colors, augment edges with color data\nvar prevEdges;if(colors){prevEdges=edges;var augEdges=new Array(edges.length);for(var i=0;i<edges.length;++i){var e=edges[i];augEdges[i]=[e[0],e[1],colors[i]];}edges=augEdges;}// First round: remove duplicate edges and points\nvar modified=preRound(points,edges,!!colors);// Run snap rounding until convergence\nwhile(snapRound(points,edges,!!colors)){modified=true;}// Strip color tags\nif(!!colors&&modified){prevEdges.length=0;colors.length=0;for(var i=0;i<edges.length;++i){var e=edges[i];prevEdges.push([e[0],e[1]]);colors.push(e[2]);}}return modified;}/***/},/***/5528:/***/function(module,__unused_webpack_exports,__nested_webpack_require_188131__){\"use strict\";module.exports=solveIntersection;var ratMul=__nested_webpack_require_188131__(3962);var ratDiv=__nested_webpack_require_188131__(9189);var ratSub=__nested_webpack_require_188131__(4354);var ratSign=__nested_webpack_require_188131__(4951);var rvSub=__nested_webpack_require_188131__(6695);var rvAdd=__nested_webpack_require_188131__(7584);var rvMuls=__nested_webpack_require_188131__(4469);function ratPerp(a,b){return ratSub(ratMul(a[0],b[1]),ratMul(a[1],b[0]));}// Solve for intersection\n//  x = a + t (b-a)\n//  (x - c) ^ (d-c) = 0\n//  (t * (b-a) + (a-c) ) ^ (d-c) = 0\n//  t * (b-a)^(d-c) = (d-c)^(a-c)\n//  t = (d-c)^(a-c) / (b-a)^(d-c)\nfunction solveIntersection(a,b,c,d){var ba=rvSub(b,a);var dc=rvSub(d,c);var baXdc=ratPerp(ba,dc);if(ratSign(baXdc)===0){return null;}var ac=rvSub(a,c);var dcXac=ratPerp(dc,ac);var t=ratDiv(dcXac,baXdc);var s=rvMuls(ba,t);var r=rvAdd(a,s);return r;}/***/},/***/5692:/***/function(module){module.exports={\"jet\":[{\"index\":0,\"rgb\":[0,0,131]},{\"index\":0.125,\"rgb\":[0,60,170]},{\"index\":0.375,\"rgb\":[5,255,255]},{\"index\":0.625,\"rgb\":[255,255,0]},{\"index\":0.875,\"rgb\":[250,0,0]},{\"index\":1,\"rgb\":[128,0,0]}],\"hsv\":[{\"index\":0,\"rgb\":[255,0,0]},{\"index\":0.169,\"rgb\":[253,255,2]},{\"index\":0.173,\"rgb\":[247,255,2]},{\"index\":0.337,\"rgb\":[0,252,4]},{\"index\":0.341,\"rgb\":[0,252,10]},{\"index\":0.506,\"rgb\":[1,249,255]},{\"index\":0.671,\"rgb\":[2,0,253]},{\"index\":0.675,\"rgb\":[8,0,253]},{\"index\":0.839,\"rgb\":[255,0,251]},{\"index\":0.843,\"rgb\":[255,0,245]},{\"index\":1,\"rgb\":[255,0,6]}],\"hot\":[{\"index\":0,\"rgb\":[0,0,0]},{\"index\":0.3,\"rgb\":[230,0,0]},{\"index\":0.6,\"rgb\":[255,210,0]},{\"index\":1,\"rgb\":[255,255,255]}],\"spring\":[{\"index\":0,\"rgb\":[255,0,255]},{\"index\":1,\"rgb\":[255,255,0]}],\"summer\":[{\"index\":0,\"rgb\":[0,128,102]},{\"index\":1,\"rgb\":[255,255,102]}],\"autumn\":[{\"index\":0,\"rgb\":[255,0,0]},{\"index\":1,\"rgb\":[255,255,0]}],\"winter\":[{\"index\":0,\"rgb\":[0,0,255]},{\"index\":1,\"rgb\":[0,255,128]}],\"bone\":[{\"index\":0,\"rgb\":[0,0,0]},{\"index\":0.376,\"rgb\":[84,84,116]},{\"index\":0.753,\"rgb\":[169,200,200]},{\"index\":1,\"rgb\":[255,255,255]}],\"copper\":[{\"index\":0,\"rgb\":[0,0,0]},{\"index\":0.804,\"rgb\":[255,160,102]},{\"index\":1,\"rgb\":[255,199,127]}],\"greys\":[{\"index\":0,\"rgb\":[0,0,0]},{\"index\":1,\"rgb\":[255,255,255]}],\"yignbu\":[{\"index\":0,\"rgb\":[8,29,88]},{\"index\":0.125,\"rgb\":[37,52,148]},{\"index\":0.25,\"rgb\":[34,94,168]},{\"index\":0.375,\"rgb\":[29,145,192]},{\"index\":0.5,\"rgb\":[65,182,196]},{\"index\":0.625,\"rgb\":[127,205,187]},{\"index\":0.75,\"rgb\":[199,233,180]},{\"index\":0.875,\"rgb\":[237,248,217]},{\"index\":1,\"rgb\":[255,255,217]}],\"greens\":[{\"index\":0,\"rgb\":[0,68,27]},{\"index\":0.125,\"rgb\":[0,109,44]},{\"index\":0.25,\"rgb\":[35,139,69]},{\"index\":0.375,\"rgb\":[65,171,93]},{\"index\":0.5,\"rgb\":[116,196,118]},{\"index\":0.625,\"rgb\":[161,217,155]},{\"index\":0.75,\"rgb\":[199,233,192]},{\"index\":0.875,\"rgb\":[229,245,224]},{\"index\":1,\"rgb\":[247,252,245]}],\"yiorrd\":[{\"index\":0,\"rgb\":[128,0,38]},{\"index\":0.125,\"rgb\":[189,0,38]},{\"index\":0.25,\"rgb\":[227,26,28]},{\"index\":0.375,\"rgb\":[252,78,42]},{\"index\":0.5,\"rgb\":[253,141,60]},{\"index\":0.625,\"rgb\":[254,178,76]},{\"index\":0.75,\"rgb\":[254,217,118]},{\"index\":0.875,\"rgb\":[255,237,160]},{\"index\":1,\"rgb\":[255,255,204]}],\"bluered\":[{\"index\":0,\"rgb\":[0,0,255]},{\"index\":1,\"rgb\":[255,0,0]}],\"rdbu\":[{\"index\":0,\"rgb\":[5,10,172]},{\"index\":0.35,\"rgb\":[106,137,247]},{\"index\":0.5,\"rgb\":[190,190,190]},{\"index\":0.6,\"rgb\":[220,170,132]},{\"index\":0.7,\"rgb\":[230,145,90]},{\"index\":1,\"rgb\":[178,10,28]}],\"picnic\":[{\"index\":0,\"rgb\":[0,0,255]},{\"index\":0.1,\"rgb\":[51,153,255]},{\"index\":0.2,\"rgb\":[102,204,255]},{\"index\":0.3,\"rgb\":[153,204,255]},{\"index\":0.4,\"rgb\":[204,204,255]},{\"index\":0.5,\"rgb\":[255,255,255]},{\"index\":0.6,\"rgb\":[255,204,255]},{\"index\":0.7,\"rgb\":[255,153,255]},{\"index\":0.8,\"rgb\":[255,102,204]},{\"index\":0.9,\"rgb\":[255,102,102]},{\"index\":1,\"rgb\":[255,0,0]}],\"rainbow\":[{\"index\":0,\"rgb\":[150,0,90]},{\"index\":0.125,\"rgb\":[0,0,200]},{\"index\":0.25,\"rgb\":[0,25,255]},{\"index\":0.375,\"rgb\":[0,152,255]},{\"index\":0.5,\"rgb\":[44,255,150]},{\"index\":0.625,\"rgb\":[151,255,0]},{\"index\":0.75,\"rgb\":[255,234,0]},{\"index\":0.875,\"rgb\":[255,111,0]},{\"index\":1,\"rgb\":[255,0,0]}],\"portland\":[{\"index\":0,\"rgb\":[12,51,131]},{\"index\":0.25,\"rgb\":[10,136,186]},{\"index\":0.5,\"rgb\":[242,211,56]},{\"index\":0.75,\"rgb\":[242,143,56]},{\"index\":1,\"rgb\":[217,30,30]}],\"blackbody\":[{\"index\":0,\"rgb\":[0,0,0]},{\"index\":0.2,\"rgb\":[230,0,0]},{\"index\":0.4,\"rgb\":[230,210,0]},{\"index\":0.7,\"rgb\":[255,255,255]},{\"index\":1,\"rgb\":[160,200,255]}],\"earth\":[{\"index\":0,\"rgb\":[0,0,130]},{\"index\":0.1,\"rgb\":[0,180,180]},{\"index\":0.2,\"rgb\":[40,210,40]},{\"index\":0.4,\"rgb\":[230,230,50]},{\"index\":0.6,\"rgb\":[120,70,20]},{\"index\":1,\"rgb\":[255,255,255]}],\"electric\":[{\"index\":0,\"rgb\":[0,0,0]},{\"index\":0.15,\"rgb\":[30,0,100]},{\"index\":0.4,\"rgb\":[120,0,100]},{\"index\":0.6,\"rgb\":[160,90,0]},{\"index\":0.8,\"rgb\":[230,200,0]},{\"index\":1,\"rgb\":[255,250,220]}],\"alpha\":[{\"index\":0,\"rgb\":[255,255,255,0]},{\"index\":1,\"rgb\":[255,255,255,1]}],\"viridis\":[{\"index\":0,\"rgb\":[68,1,84]},{\"index\":0.13,\"rgb\":[71,44,122]},{\"index\":0.25,\"rgb\":[59,81,139]},{\"index\":0.38,\"rgb\":[44,113,142]},{\"index\":0.5,\"rgb\":[33,144,141]},{\"index\":0.63,\"rgb\":[39,173,129]},{\"index\":0.75,\"rgb\":[92,200,99]},{\"index\":0.88,\"rgb\":[170,220,50]},{\"index\":1,\"rgb\":[253,231,37]}],\"inferno\":[{\"index\":0,\"rgb\":[0,0,4]},{\"index\":0.13,\"rgb\":[31,12,72]},{\"index\":0.25,\"rgb\":[85,15,109]},{\"index\":0.38,\"rgb\":[136,34,106]},{\"index\":0.5,\"rgb\":[186,54,85]},{\"index\":0.63,\"rgb\":[227,89,51]},{\"index\":0.75,\"rgb\":[249,140,10]},{\"index\":0.88,\"rgb\":[249,201,50]},{\"index\":1,\"rgb\":[252,255,164]}],\"magma\":[{\"index\":0,\"rgb\":[0,0,4]},{\"index\":0.13,\"rgb\":[28,16,68]},{\"index\":0.25,\"rgb\":[79,18,123]},{\"index\":0.38,\"rgb\":[129,37,129]},{\"index\":0.5,\"rgb\":[181,54,122]},{\"index\":0.63,\"rgb\":[229,80,100]},{\"index\":0.75,\"rgb\":[251,135,97]},{\"index\":0.88,\"rgb\":[254,194,135]},{\"index\":1,\"rgb\":[252,253,191]}],\"plasma\":[{\"index\":0,\"rgb\":[13,8,135]},{\"index\":0.13,\"rgb\":[75,3,161]},{\"index\":0.25,\"rgb\":[125,3,168]},{\"index\":0.38,\"rgb\":[168,34,150]},{\"index\":0.5,\"rgb\":[203,70,121]},{\"index\":0.63,\"rgb\":[229,107,93]},{\"index\":0.75,\"rgb\":[248,148,65]},{\"index\":0.88,\"rgb\":[253,195,40]},{\"index\":1,\"rgb\":[240,249,33]}],\"warm\":[{\"index\":0,\"rgb\":[125,0,179]},{\"index\":0.13,\"rgb\":[172,0,187]},{\"index\":0.25,\"rgb\":[219,0,170]},{\"index\":0.38,\"rgb\":[255,0,130]},{\"index\":0.5,\"rgb\":[255,63,74]},{\"index\":0.63,\"rgb\":[255,123,0]},{\"index\":0.75,\"rgb\":[234,176,0]},{\"index\":0.88,\"rgb\":[190,228,0]},{\"index\":1,\"rgb\":[147,255,0]}],\"cool\":[{\"index\":0,\"rgb\":[125,0,179]},{\"index\":0.13,\"rgb\":[116,0,218]},{\"index\":0.25,\"rgb\":[98,74,237]},{\"index\":0.38,\"rgb\":[68,146,231]},{\"index\":0.5,\"rgb\":[0,204,197]},{\"index\":0.63,\"rgb\":[0,247,146]},{\"index\":0.75,\"rgb\":[0,255,88]},{\"index\":0.88,\"rgb\":[40,255,8]},{\"index\":1,\"rgb\":[147,255,0]}],\"rainbow-soft\":[{\"index\":0,\"rgb\":[125,0,179]},{\"index\":0.1,\"rgb\":[199,0,180]},{\"index\":0.2,\"rgb\":[255,0,121]},{\"index\":0.3,\"rgb\":[255,108,0]},{\"index\":0.4,\"rgb\":[222,194,0]},{\"index\":0.5,\"rgb\":[150,255,0]},{\"index\":0.6,\"rgb\":[0,255,55]},{\"index\":0.7,\"rgb\":[0,246,150]},{\"index\":0.8,\"rgb\":[50,167,222]},{\"index\":0.9,\"rgb\":[103,51,235]},{\"index\":1,\"rgb\":[124,0,186]}],\"bathymetry\":[{\"index\":0,\"rgb\":[40,26,44]},{\"index\":0.13,\"rgb\":[59,49,90]},{\"index\":0.25,\"rgb\":[64,76,139]},{\"index\":0.38,\"rgb\":[63,110,151]},{\"index\":0.5,\"rgb\":[72,142,158]},{\"index\":0.63,\"rgb\":[85,174,163]},{\"index\":0.75,\"rgb\":[120,206,163]},{\"index\":0.88,\"rgb\":[187,230,172]},{\"index\":1,\"rgb\":[253,254,204]}],\"cdom\":[{\"index\":0,\"rgb\":[47,15,62]},{\"index\":0.13,\"rgb\":[87,23,86]},{\"index\":0.25,\"rgb\":[130,28,99]},{\"index\":0.38,\"rgb\":[171,41,96]},{\"index\":0.5,\"rgb\":[206,67,86]},{\"index\":0.63,\"rgb\":[230,106,84]},{\"index\":0.75,\"rgb\":[242,149,103]},{\"index\":0.88,\"rgb\":[249,193,135]},{\"index\":1,\"rgb\":[254,237,176]}],\"chlorophyll\":[{\"index\":0,\"rgb\":[18,36,20]},{\"index\":0.13,\"rgb\":[25,63,41]},{\"index\":0.25,\"rgb\":[24,91,59]},{\"index\":0.38,\"rgb\":[13,119,72]},{\"index\":0.5,\"rgb\":[18,148,80]},{\"index\":0.63,\"rgb\":[80,173,89]},{\"index\":0.75,\"rgb\":[132,196,122]},{\"index\":0.88,\"rgb\":[175,221,162]},{\"index\":1,\"rgb\":[215,249,208]}],\"density\":[{\"index\":0,\"rgb\":[54,14,36]},{\"index\":0.13,\"rgb\":[89,23,80]},{\"index\":0.25,\"rgb\":[110,45,132]},{\"index\":0.38,\"rgb\":[120,77,178]},{\"index\":0.5,\"rgb\":[120,113,213]},{\"index\":0.63,\"rgb\":[115,151,228]},{\"index\":0.75,\"rgb\":[134,185,227]},{\"index\":0.88,\"rgb\":[177,214,227]},{\"index\":1,\"rgb\":[230,241,241]}],\"freesurface-blue\":[{\"index\":0,\"rgb\":[30,4,110]},{\"index\":0.13,\"rgb\":[47,14,176]},{\"index\":0.25,\"rgb\":[41,45,236]},{\"index\":0.38,\"rgb\":[25,99,212]},{\"index\":0.5,\"rgb\":[68,131,200]},{\"index\":0.63,\"rgb\":[114,156,197]},{\"index\":0.75,\"rgb\":[157,181,203]},{\"index\":0.88,\"rgb\":[200,208,216]},{\"index\":1,\"rgb\":[241,237,236]}],\"freesurface-red\":[{\"index\":0,\"rgb\":[60,9,18]},{\"index\":0.13,\"rgb\":[100,17,27]},{\"index\":0.25,\"rgb\":[142,20,29]},{\"index\":0.38,\"rgb\":[177,43,27]},{\"index\":0.5,\"rgb\":[192,87,63]},{\"index\":0.63,\"rgb\":[205,125,105]},{\"index\":0.75,\"rgb\":[216,162,148]},{\"index\":0.88,\"rgb\":[227,199,193]},{\"index\":1,\"rgb\":[241,237,236]}],\"oxygen\":[{\"index\":0,\"rgb\":[64,5,5]},{\"index\":0.13,\"rgb\":[106,6,15]},{\"index\":0.25,\"rgb\":[144,26,7]},{\"index\":0.38,\"rgb\":[168,64,3]},{\"index\":0.5,\"rgb\":[188,100,4]},{\"index\":0.63,\"rgb\":[206,136,11]},{\"index\":0.75,\"rgb\":[220,174,25]},{\"index\":0.88,\"rgb\":[231,215,44]},{\"index\":1,\"rgb\":[248,254,105]}],\"par\":[{\"index\":0,\"rgb\":[51,20,24]},{\"index\":0.13,\"rgb\":[90,32,35]},{\"index\":0.25,\"rgb\":[129,44,34]},{\"index\":0.38,\"rgb\":[159,68,25]},{\"index\":0.5,\"rgb\":[182,99,19]},{\"index\":0.63,\"rgb\":[199,134,22]},{\"index\":0.75,\"rgb\":[212,171,35]},{\"index\":0.88,\"rgb\":[221,210,54]},{\"index\":1,\"rgb\":[225,253,75]}],\"phase\":[{\"index\":0,\"rgb\":[145,105,18]},{\"index\":0.13,\"rgb\":[184,71,38]},{\"index\":0.25,\"rgb\":[186,58,115]},{\"index\":0.38,\"rgb\":[160,71,185]},{\"index\":0.5,\"rgb\":[110,97,218]},{\"index\":0.63,\"rgb\":[50,123,164]},{\"index\":0.75,\"rgb\":[31,131,110]},{\"index\":0.88,\"rgb\":[77,129,34]},{\"index\":1,\"rgb\":[145,105,18]}],\"salinity\":[{\"index\":0,\"rgb\":[42,24,108]},{\"index\":0.13,\"rgb\":[33,50,162]},{\"index\":0.25,\"rgb\":[15,90,145]},{\"index\":0.38,\"rgb\":[40,118,137]},{\"index\":0.5,\"rgb\":[59,146,135]},{\"index\":0.63,\"rgb\":[79,175,126]},{\"index\":0.75,\"rgb\":[120,203,104]},{\"index\":0.88,\"rgb\":[193,221,100]},{\"index\":1,\"rgb\":[253,239,154]}],\"temperature\":[{\"index\":0,\"rgb\":[4,35,51]},{\"index\":0.13,\"rgb\":[23,51,122]},{\"index\":0.25,\"rgb\":[85,59,157]},{\"index\":0.38,\"rgb\":[129,79,143]},{\"index\":0.5,\"rgb\":[175,95,130]},{\"index\":0.63,\"rgb\":[222,112,101]},{\"index\":0.75,\"rgb\":[249,146,66]},{\"index\":0.88,\"rgb\":[249,196,65]},{\"index\":1,\"rgb\":[232,250,91]}],\"turbidity\":[{\"index\":0,\"rgb\":[34,31,27]},{\"index\":0.13,\"rgb\":[65,50,41]},{\"index\":0.25,\"rgb\":[98,69,52]},{\"index\":0.38,\"rgb\":[131,89,57]},{\"index\":0.5,\"rgb\":[161,112,59]},{\"index\":0.63,\"rgb\":[185,140,66]},{\"index\":0.75,\"rgb\":[202,174,88]},{\"index\":0.88,\"rgb\":[216,209,126]},{\"index\":1,\"rgb\":[233,246,171]}],\"velocity-blue\":[{\"index\":0,\"rgb\":[17,32,64]},{\"index\":0.13,\"rgb\":[35,52,116]},{\"index\":0.25,\"rgb\":[29,81,156]},{\"index\":0.38,\"rgb\":[31,113,162]},{\"index\":0.5,\"rgb\":[50,144,169]},{\"index\":0.63,\"rgb\":[87,173,176]},{\"index\":0.75,\"rgb\":[149,196,189]},{\"index\":0.88,\"rgb\":[203,221,211]},{\"index\":1,\"rgb\":[254,251,230]}],\"velocity-green\":[{\"index\":0,\"rgb\":[23,35,19]},{\"index\":0.13,\"rgb\":[24,64,38]},{\"index\":0.25,\"rgb\":[11,95,45]},{\"index\":0.38,\"rgb\":[39,123,35]},{\"index\":0.5,\"rgb\":[95,146,12]},{\"index\":0.63,\"rgb\":[152,165,18]},{\"index\":0.75,\"rgb\":[201,186,69]},{\"index\":0.88,\"rgb\":[233,216,137]},{\"index\":1,\"rgb\":[255,253,205]}],\"cubehelix\":[{\"index\":0,\"rgb\":[0,0,0]},{\"index\":0.07,\"rgb\":[22,5,59]},{\"index\":0.13,\"rgb\":[60,4,105]},{\"index\":0.2,\"rgb\":[109,1,135]},{\"index\":0.27,\"rgb\":[161,0,147]},{\"index\":0.33,\"rgb\":[210,2,142]},{\"index\":0.4,\"rgb\":[251,11,123]},{\"index\":0.47,\"rgb\":[255,29,97]},{\"index\":0.53,\"rgb\":[255,54,69]},{\"index\":0.6,\"rgb\":[255,85,46]},{\"index\":0.67,\"rgb\":[255,120,34]},{\"index\":0.73,\"rgb\":[255,157,37]},{\"index\":0.8,\"rgb\":[241,191,57]},{\"index\":0.87,\"rgb\":[224,220,93]},{\"index\":0.93,\"rgb\":[218,241,142]},{\"index\":1,\"rgb\":[227,253,198]}]};/***/},/***/9156:/***/function(module,__unused_webpack_exports,__nested_webpack_require_200100__){\"use strict\";/*\n * Ben Postlethwaite\n * January 2013\n * License MIT\n */var colorScale=__nested_webpack_require_200100__(5692);var lerp=__nested_webpack_require_200100__(3578);module.exports=createColormap;function createColormap(spec){/*\n     * Default Options\n     */var indicies,fromrgba,torgba,nsteps,cmap,colormap,format,nshades,colors,alpha,i;if(!spec)spec={};nshades=(spec.nshades||72)-1;format=spec.format||'hex';colormap=spec.colormap;if(!colormap)colormap='jet';if(typeof colormap==='string'){colormap=colormap.toLowerCase();if(!colorScale[colormap]){throw Error(colormap+' not a supported colorscale');}cmap=colorScale[colormap];}else if(Array.isArray(colormap)){cmap=colormap.slice();}else{throw Error('unsupported colormap option',colormap);}if(cmap.length>nshades+1){throw new Error(colormap+' map requires nshades to be at least size '+cmap.length);}if(!Array.isArray(spec.alpha)){if(typeof spec.alpha==='number'){alpha=[spec.alpha,spec.alpha];}else{alpha=[1,1];}}else if(spec.alpha.length!==2){alpha=[1,1];}else{alpha=spec.alpha.slice();}// map index points from 0..1 to 0..n-1\nindicies=cmap.map(function(c){return Math.round(c.index*nshades);});// Add alpha channel to the map\nalpha[0]=Math.min(Math.max(alpha[0],0),1);alpha[1]=Math.min(Math.max(alpha[1],0),1);var steps=cmap.map(function(c,i){var index=cmap[i].index;var rgba=cmap[i].rgb.slice();// if user supplies their own map use it\nif(rgba.length===4&&rgba[3]>=0&&rgba[3]<=1){return rgba;}rgba[3]=alpha[0]+(alpha[1]-alpha[0])*index;return rgba;});/*\n     * map increasing linear values between indicies to\n     * linear steps in colorvalues\n     */var colors=[];for(i=0;i<indicies.length-1;++i){nsteps=indicies[i+1]-indicies[i];fromrgba=steps[i];torgba=steps[i+1];for(var j=0;j<nsteps;j++){var amt=j/nsteps;colors.push([Math.round(lerp(fromrgba[0],torgba[0],amt)),Math.round(lerp(fromrgba[1],torgba[1],amt)),Math.round(lerp(fromrgba[2],torgba[2],amt)),lerp(fromrgba[3],torgba[3],amt)]);}}//add 1 step as last value\ncolors.push(cmap[cmap.length-1].rgb.concat(alpha[1]));if(format==='hex')colors=colors.map(rgb2hex);else if(format==='rgbaString')colors=colors.map(rgbaStr);else if(format==='float')colors=colors.map(rgb2float);return colors;};function rgb2float(rgba){return[rgba[0]/255,rgba[1]/255,rgba[2]/255,rgba[3]];}function rgb2hex(rgba){var dig,hex='#';for(var i=0;i<3;++i){dig=rgba[i];dig=dig.toString(16);hex+=('00'+dig).substr(dig.length);}return hex;}function rgbaStr(rgba){return'rgba('+rgba.join(',')+')';}/***/},/***/9398:/***/function(module,__unused_webpack_exports,__nested_webpack_require_202645__){\"use strict\";module.exports=compareAngle;var orient=__nested_webpack_require_202645__(417);var sgn=__nested_webpack_require_202645__(7538);var twoSum=__nested_webpack_require_202645__(87);var robustProduct=__nested_webpack_require_202645__(2019);var robustSum=__nested_webpack_require_202645__(9662);function testInterior(a,b,c){var x0=twoSum(a[0],-b[0]);var y0=twoSum(a[1],-b[1]);var x1=twoSum(c[0],-b[0]);var y1=twoSum(c[1],-b[1]);var d=robustSum(robustProduct(x0,x1),robustProduct(y0,y1));return d[d.length-1]>=0;}function compareAngle(a,b,c,d){var bcd=orient(b,c,d);if(bcd===0){//Handle degenerate cases\nvar sabc=sgn(orient(a,b,c));var sabd=sgn(orient(a,b,d));if(sabc===sabd){if(sabc===0){var ic=testInterior(a,b,c);var id=testInterior(a,b,d);if(ic===id){return 0;}else if(ic){return 1;}else{return-1;}}return 0;}else if(sabd===0){if(sabc>0){return-1;}else if(testInterior(a,b,d)){return-1;}else{return 1;}}else if(sabc===0){if(sabd>0){return 1;}else if(testInterior(a,b,c)){return 1;}else{return-1;}}return sgn(sabd-sabc);}var abc=orient(a,b,c);if(abc>0){if(bcd>0&&orient(a,b,d)>0){return 1;}return-1;}else if(abc<0){if(bcd>0||orient(a,b,d)>0){return 1;}return-1;}else{var abd=orient(a,b,d);if(abd>0){return 1;}else{if(testInterior(a,b,c)){return 1;}else{return-1;}}}}/***/},/***/7538:/***/function(module){\"use strict\";module.exports=function signum(x){if(x<0){return-1;}if(x>0){return 1;}return 0.0;};/***/},/***/9209:/***/function(module){module.exports=compareCells;var min=Math.min;function compareInt(a,b){return a-b;}function compareCells(a,b){var n=a.length,t=a.length-b.length;if(t){return t;}switch(n){case 0:return 0;case 1:return a[0]-b[0];case 2:return a[0]+a[1]-b[0]-b[1]||min(a[0],a[1])-min(b[0],b[1]);case 3:var l1=a[0]+a[1],m1=b[0]+b[1];t=l1+a[2]-(m1+b[2]);if(t){return t;}var l0=min(a[0],a[1]),m0=min(b[0],b[1]);return min(l0,a[2])-min(m0,b[2])||min(l0+a[2],l1)-min(m0+b[2],m1);case 4:var aw=a[0],ax=a[1],ay=a[2],az=a[3],bw=b[0],bx=b[1],by=b[2],bz=b[3];return aw+ax+ay+az-(bw+bx+by+bz)||min(aw,ax,ay,az)-min(bw,bx,by,bz,bw)||min(aw+ax,aw+ay,aw+az,ax+ay,ax+az,ay+az)-min(bw+bx,bw+by,bw+bz,bx+by,bx+bz,by+bz)||min(aw+ax+ay,aw+ax+az,aw+ay+az,ax+ay+az)-min(bw+bx+by,bw+bx+bz,bw+by+bz,bx+by+bz);default:var as=a.slice().sort(compareInt);var bs=b.slice().sort(compareInt);for(var i=0;i<n;++i){t=as[i]-bs[i];if(t){return t;}}return 0;}}/***/},/***/1284:/***/function(module,__unused_webpack_exports,__nested_webpack_require_205011__){\"use strict\";var compareCells=__nested_webpack_require_205011__(9209);var parity=__nested_webpack_require_205011__(9887);module.exports=compareOrientedCells;function compareOrientedCells(a,b){return compareCells(a,b)||parity(a)-parity(b);}/***/},/***/5537:/***/function(module,__unused_webpack_exports,__nested_webpack_require_205306__){\"use strict\";var convexHull1d=__nested_webpack_require_205306__(8950);var convexHull2d=__nested_webpack_require_205306__(8722);var convexHullnd=__nested_webpack_require_205306__(3332);module.exports=convexHull;function convexHull(points){var n=points.length;if(n===0){return[];}else if(n===1){return[[0]];}var d=points[0].length;if(d===0){return[];}else if(d===1){return convexHull1d(points);}else if(d===2){return convexHull2d(points);}return convexHullnd(points,d);}/***/},/***/8950:/***/function(module){\"use strict\";module.exports=convexHull1d;function convexHull1d(points){var lo=0;var hi=0;for(var i=1;i<points.length;++i){if(points[i][0]<points[lo][0]){lo=i;}if(points[i][0]>points[hi][0]){hi=i;}}if(lo<hi){return[[lo],[hi]];}else if(lo>hi){return[[hi],[lo]];}else{return[[lo]];}}/***/},/***/8722:/***/function(module,__unused_webpack_exports,__nested_webpack_require_206135__){\"use strict\";module.exports=convexHull2D;var monotoneHull=__nested_webpack_require_206135__(3266);function convexHull2D(points){var hull=monotoneHull(points);var h=hull.length;if(h<=2){return[];}var edges=new Array(h);var a=hull[h-1];for(var i=0;i<h;++i){var b=hull[i];edges[i]=[a,b];a=b;}return edges;}/***/},/***/3332:/***/function(module,__unused_webpack_exports,__nested_webpack_require_206508__){\"use strict\";module.exports=convexHullnD;var ich=__nested_webpack_require_206508__(2183);var aff=__nested_webpack_require_206508__(2153);function permute(points,front){var n=points.length;var npoints=new Array(n);for(var i=0;i<front.length;++i){npoints[i]=points[front[i]];}var ptr=front.length;for(var i=0;i<n;++i){if(front.indexOf(i)<0){npoints[ptr++]=points[i];}}return npoints;}function invPermute(cells,front){var nc=cells.length;var nf=front.length;for(var i=0;i<nc;++i){var c=cells[i];for(var j=0;j<c.length;++j){var x=c[j];if(x<nf){c[j]=front[x];}else{x=x-nf;for(var k=0;k<nf;++k){if(x>=front[k]){x+=1;}}c[j]=x;}}}return cells;}function convexHullnD(points,d){try{return ich(points,true);}catch(e){//If point set is degenerate, try to find a basis and rerun it\nvar ah=aff(points);if(ah.length<=d){//No basis, no try\nreturn[];}var npoints=permute(points,ah);var nhull=ich(npoints,true);return invPermute(nhull,ah);}}/***/},/***/9680:/***/function(module){\"use strict\";function dcubicHermite(p0,v0,p1,v1,t,f){var dh00=6*t*t-6*t,dh10=3*t*t-4*t+1,dh01=-6*t*t+6*t,dh11=3*t*t-2*t;if(p0.length){if(!f){f=new Array(p0.length);}for(var i=p0.length-1;i>=0;--i){f[i]=dh00*p0[i]+dh10*v0[i]+dh01*p1[i]+dh11*v1[i];}return f;}return dh00*p0+dh10*v0+dh01*p1[i]+dh11*v1;}function cubicHermite(p0,v0,p1,v1,t,f){var ti=t-1,t2=t*t,ti2=ti*ti,h00=(1+2*t)*ti2,h10=t*ti2,h01=t2*(3-2*t),h11=t2*ti;if(p0.length){if(!f){f=new Array(p0.length);}for(var i=p0.length-1;i>=0;--i){f[i]=h00*p0[i]+h10*v0[i]+h01*p1[i]+h11*v1[i];}return f;}return h00*p0+h10*v0+h01*p1+h11*v1;}module.exports=cubicHermite;module.exports.derivative=dcubicHermite;/***/},/***/4419:/***/function(module,__unused_webpack_exports,__nested_webpack_require_208181__){\"use strict\";var ch=__nested_webpack_require_208181__(2183);var uniq=__nested_webpack_require_208181__(1215);module.exports=triangulate;function LiftedPoint(p,i){this.point=p;this.index=i;}function compareLifted(a,b){var ap=a.point;var bp=b.point;var d=ap.length;for(var i=0;i<d;++i){var s=bp[i]-ap[i];if(s){return s;}}return 0;}function triangulate1D(n,points,includePointAtInfinity){if(n===1){if(includePointAtInfinity){return[[-1,0]];}else{return[];}}var lifted=points.map(function(p,i){return[p[0],i];});lifted.sort(function(a,b){return a[0]-b[0];});var cells=new Array(n-1);for(var i=1;i<n;++i){var a=lifted[i-1];var b=lifted[i];cells[i-1]=[a[1],b[1]];}if(includePointAtInfinity){cells.push([-1,cells[0][1]],[cells[n-1][1],-1]);}return cells;}function triangulate(points,includePointAtInfinity){var n=points.length;if(n===0){return[];}var d=points[0].length;if(d<1){return[];}//Special case:  For 1D we can just sort the points\nif(d===1){return triangulate1D(n,points,includePointAtInfinity);}//Lift points, sort\nvar lifted=new Array(n);var upper=1.0;for(var i=0;i<n;++i){var p=points[i];var x=new Array(d+1);var l=0.0;for(var j=0;j<d;++j){var v=p[j];x[j]=v;l+=v*v;}x[d]=l;lifted[i]=new LiftedPoint(x,i);upper=Math.max(l,upper);}uniq(lifted,compareLifted);//Double points\nn=lifted.length;//Create new list of points\nvar dpoints=new Array(n+d+1);var dindex=new Array(n+d+1);//Add steiner points at top\nvar u=(d+1)*(d+1)*upper;var y=new Array(d+1);for(var i=0;i<=d;++i){y[i]=0.0;}y[d]=u;dpoints[0]=y.slice();dindex[0]=-1;for(var i=0;i<=d;++i){var x=y.slice();x[i]=1;dpoints[i+1]=x;dindex[i+1]=-1;}//Copy rest of the points over\nfor(var i=0;i<n;++i){var h=lifted[i];dpoints[i+d+1]=h.point;dindex[i+d+1]=h.index;}//Construct convex hull\nvar hull=ch(dpoints,false);if(includePointAtInfinity){hull=hull.filter(function(cell){var count=0;for(var j=0;j<=d;++j){var v=dindex[cell[j]];if(v<0){if(++count>=2){return false;}}cell[j]=v;}return true;});}else{hull=hull.filter(function(cell){for(var i=0;i<=d;++i){var v=dindex[cell[i]];if(v<0){return false;}cell[i]=v;}return true;});}if(d&1){for(var i=0;i<hull.length;++i){var h=hull[i];var x=h[0];h[0]=h[1];h[1]=x;}}return hull;}/***/},/***/8362:/***/function(module){var hasTypedArrays=false;if(typeof Float64Array!==\"undefined\"){var DOUBLE_VIEW=new Float64Array(1),UINT_VIEW=new Uint32Array(DOUBLE_VIEW.buffer);DOUBLE_VIEW[0]=1.0;hasTypedArrays=true;if(UINT_VIEW[1]===0x3ff00000){//Use little endian\nmodule.exports=function doubleBitsLE(n){DOUBLE_VIEW[0]=n;return[UINT_VIEW[0],UINT_VIEW[1]];};function toDoubleLE(lo,hi){UINT_VIEW[0]=lo;UINT_VIEW[1]=hi;return DOUBLE_VIEW[0];}module.exports.pack=toDoubleLE;function lowUintLE(n){DOUBLE_VIEW[0]=n;return UINT_VIEW[0];}module.exports.lo=lowUintLE;function highUintLE(n){DOUBLE_VIEW[0]=n;return UINT_VIEW[1];}module.exports.hi=highUintLE;}else if(UINT_VIEW[0]===0x3ff00000){//Use big endian\nmodule.exports=function doubleBitsBE(n){DOUBLE_VIEW[0]=n;return[UINT_VIEW[1],UINT_VIEW[0]];};function toDoubleBE(lo,hi){UINT_VIEW[1]=lo;UINT_VIEW[0]=hi;return DOUBLE_VIEW[0];}module.exports.pack=toDoubleBE;function lowUintBE(n){DOUBLE_VIEW[0]=n;return UINT_VIEW[1];}module.exports.lo=lowUintBE;function highUintBE(n){DOUBLE_VIEW[0]=n;return UINT_VIEW[0];}module.exports.hi=highUintBE;}else{hasTypedArrays=false;}}if(!hasTypedArrays){var buffer=new Buffer(8);module.exports=function doubleBits(n){buffer.writeDoubleLE(n,0,true);return[buffer.readUInt32LE(0,true),buffer.readUInt32LE(4,true)];};function toDouble(lo,hi){buffer.writeUInt32LE(lo,0,true);buffer.writeUInt32LE(hi,4,true);return buffer.readDoubleLE(0,true);}module.exports.pack=toDouble;function lowUint(n){buffer.writeDoubleLE(n,0,true);return buffer.readUInt32LE(0,true);}module.exports.lo=lowUint;function highUint(n){buffer.writeDoubleLE(n,0,true);return buffer.readUInt32LE(4,true);}module.exports.hi=highUint;}module.exports.sign=function(n){return module.exports.hi(n)>>>31;};module.exports.exponent=function(n){var b=module.exports.hi(n);return(b<<1>>>21)-1023;};module.exports.fraction=function(n){var lo=module.exports.lo(n);var hi=module.exports.hi(n);var b=hi&(1<<20)-1;if(hi&0x7ff00000){b+=1<<20;}return[lo,b];};module.exports.denormalized=function(n){var hi=module.exports.hi(n);return!(hi&0x7ff00000);};/***/},/***/3094:/***/function(module){\"use strict\";function dupe_array(count,value,i){var c=count[i]|0;if(c<=0){return[];}var result=new Array(c),j;if(i===count.length-1){for(j=0;j<c;++j){result[j]=value;}}else{for(j=0;j<c;++j){result[j]=dupe_array(count,value,i+1);}}return result;}function dupe_number(count,value){var result,i;result=new Array(count);for(i=0;i<count;++i){result[i]=value;}return result;}function dupe(count,value){if(typeof value===\"undefined\"){value=0;}switch(typeof count){case\"number\":if(count>0){return dupe_number(count|0,value);}break;case\"object\":if(typeof count.length===\"number\"){return dupe_array(count,value,0);}break;}return[];}module.exports=dupe;/***/},/***/8348:/***/function(module,__unused_webpack_exports,__nested_webpack_require_213177__){\"use strict\";module.exports=edgeToAdjacency;var uniq=__nested_webpack_require_213177__(1215);function edgeToAdjacency(edges,numVertices){var numEdges=edges.length;if(typeof numVertices!==\"number\"){numVertices=0;for(var i=0;i<numEdges;++i){var e=edges[i];numVertices=Math.max(numVertices,e[0],e[1]);}numVertices=(numVertices|0)+1;}numVertices=numVertices|0;var adj=new Array(numVertices);for(var i=0;i<numVertices;++i){adj[i]=[];}for(var i=0;i<numEdges;++i){var e=edges[i];adj[e[0]].push(e[1]);adj[e[1]].push(e[0]);}for(var j=0;j<numVertices;++j){uniq(adj[j],function(a,b){return a-b;});}return adj;}/***/},/***/5795:/***/function(module){\"use strict\";module.exports=extractPlanes;function extractPlanes(M,zNear,zFar){var z=zNear||0.0;var zf=zFar||1.0;return[[M[12]+M[0],M[13]+M[1],M[14]+M[2],M[15]+M[3]],[M[12]-M[0],M[13]-M[1],M[14]-M[2],M[15]-M[3]],[M[12]+M[4],M[13]+M[5],M[14]+M[6],M[15]+M[7]],[M[12]-M[4],M[13]-M[5],M[14]-M[6],M[15]-M[7]],[z*M[12]+M[8],z*M[13]+M[9],z*M[14]+M[10],z*M[15]+M[11]],[zf*M[12]-M[8],zf*M[13]-M[9],zf*M[14]-M[10],zf*M[15]-M[11]]];}/***/},/***/8444:/***/function(module,__unused_webpack_exports,__nested_webpack_require_214307__){\"use strict\";module.exports=createFilteredVector;var cubicHermite=__nested_webpack_require_214307__(9680);var bsearch=__nested_webpack_require_214307__(5070);function clamp(lo,hi,x){return Math.min(hi,Math.max(lo,x));}function FilteredVector(state0,velocity0,t0){this.dimension=state0.length;this.bounds=[new Array(this.dimension),new Array(this.dimension)];for(var i=0;i<this.dimension;++i){this.bounds[0][i]=-Infinity;this.bounds[1][i]=Infinity;}this._state=state0.slice().reverse();this._velocity=velocity0.slice().reverse();this._time=[t0];this._scratch=[state0.slice(),state0.slice(),state0.slice(),state0.slice(),state0.slice()];}var proto=FilteredVector.prototype;proto.flush=function(t){var idx=bsearch.gt(this._time,t)-1;if(idx<=0){return;}this._time.splice(0,idx);this._state.splice(0,idx*this.dimension);this._velocity.splice(0,idx*this.dimension);};proto.curve=function(t){var time=this._time;var n=time.length;var idx=bsearch.le(time,t);var result=this._scratch[0];var state=this._state;var velocity=this._velocity;var d=this.dimension;var bounds=this.bounds;if(idx<0){var ptr=d-1;for(var i=0;i<d;++i,--ptr){result[i]=state[ptr];}}else if(idx>=n-1){var ptr=state.length-1;var tf=t-time[n-1];for(var i=0;i<d;++i,--ptr){result[i]=state[ptr]+tf*velocity[ptr];}}else{var ptr=d*(idx+1)-1;var t0=time[idx];var t1=time[idx+1];var dt=t1-t0||1.0;var x0=this._scratch[1];var x1=this._scratch[2];var v0=this._scratch[3];var v1=this._scratch[4];var steady=true;for(var i=0;i<d;++i,--ptr){x0[i]=state[ptr];v0[i]=velocity[ptr]*dt;x1[i]=state[ptr+d];v1[i]=velocity[ptr+d]*dt;steady=steady&&x0[i]===x1[i]&&v0[i]===v1[i]&&v0[i]===0.0;}if(steady){for(var i=0;i<d;++i){result[i]=x0[i];}}else{cubicHermite(x0,v0,x1,v1,(t-t0)/dt,result);}}var lo=bounds[0];var hi=bounds[1];for(var i=0;i<d;++i){result[i]=clamp(lo[i],hi[i],result[i]);}return result;};proto.dcurve=function(t){var time=this._time;var n=time.length;var idx=bsearch.le(time,t);var result=this._scratch[0];var state=this._state;var velocity=this._velocity;var d=this.dimension;if(idx>=n-1){var ptr=state.length-1;var tf=t-time[n-1];for(var i=0;i<d;++i,--ptr){result[i]=velocity[ptr];}}else{var ptr=d*(idx+1)-1;var t0=time[idx];var t1=time[idx+1];var dt=t1-t0||1.0;var x0=this._scratch[1];var x1=this._scratch[2];var v0=this._scratch[3];var v1=this._scratch[4];var steady=true;for(var i=0;i<d;++i,--ptr){x0[i]=state[ptr];v0[i]=velocity[ptr]*dt;x1[i]=state[ptr+d];v1[i]=velocity[ptr+d]*dt;steady=steady&&x0[i]===x1[i]&&v0[i]===v1[i]&&v0[i]===0.0;}if(steady){for(var i=0;i<d;++i){result[i]=0.0;}}else{cubicHermite.derivative(x0,v0,x1,v1,(t-t0)/dt,result);for(var i=0;i<d;++i){result[i]/=dt;}}}return result;};proto.lastT=function(){var time=this._time;return time[time.length-1];};proto.stable=function(){var velocity=this._velocity;var ptr=velocity.length;for(var i=this.dimension-1;i>=0;--i){if(velocity[--ptr]){return false;}}return true;};proto.jump=function(t){var t0=this.lastT();var d=this.dimension;if(t<t0||arguments.length!==d+1){return;}var state=this._state;var velocity=this._velocity;var ptr=state.length-this.dimension;var bounds=this.bounds;var lo=bounds[0];var hi=bounds[1];this._time.push(t0,t);for(var j=0;j<2;++j){for(var i=0;i<d;++i){state.push(state[ptr++]);velocity.push(0);}}this._time.push(t);for(var i=d;i>0;--i){state.push(clamp(lo[i-1],hi[i-1],arguments[i]));velocity.push(0);}};proto.push=function(t){var t0=this.lastT();var d=this.dimension;if(t<t0||arguments.length!==d+1){return;}var state=this._state;var velocity=this._velocity;var ptr=state.length-this.dimension;var dt=t-t0;var bounds=this.bounds;var lo=bounds[0];var hi=bounds[1];var sf=dt>1e-6?1/dt:0;this._time.push(t);for(var i=d;i>0;--i){var xc=clamp(lo[i-1],hi[i-1],arguments[i]);state.push(xc);velocity.push((xc-state[ptr++])*sf);}};proto.set=function(t){var d=this.dimension;if(t<this.lastT()||arguments.length!==d+1){return;}var state=this._state;var velocity=this._velocity;var bounds=this.bounds;var lo=bounds[0];var hi=bounds[1];this._time.push(t);for(var i=d;i>0;--i){state.push(clamp(lo[i-1],hi[i-1],arguments[i]));velocity.push(0);}};proto.move=function(t){var t0=this.lastT();var d=this.dimension;if(t<=t0||arguments.length!==d+1){return;}var state=this._state;var velocity=this._velocity;var statePtr=state.length-this.dimension;var bounds=this.bounds;var lo=bounds[0];var hi=bounds[1];var dt=t-t0;var sf=dt>1e-6?1/dt:0.0;this._time.push(t);for(var i=d;i>0;--i){var dx=arguments[i];state.push(clamp(lo[i-1],hi[i-1],state[statePtr++]+dx));velocity.push(dx*sf);}};proto.idle=function(t){var t0=this.lastT();if(t<t0){return;}var d=this.dimension;var state=this._state;var velocity=this._velocity;var statePtr=state.length-d;var bounds=this.bounds;var lo=bounds[0];var hi=bounds[1];var dt=t-t0;this._time.push(t);for(var i=d-1;i>=0;--i){state.push(clamp(lo[i],hi[i],state[statePtr]+dt*velocity[statePtr]));velocity.push(0);statePtr+=1;}};function getZero(d){var result=new Array(d);for(var i=0;i<d;++i){result[i]=0.0;}return result;}function createFilteredVector(initState,initVelocity,initTime){switch(arguments.length){case 0:return new FilteredVector([0],[0],0);case 1:if(typeof initState==='number'){var zero=getZero(initState);return new FilteredVector(zero,zero,0);}else{return new FilteredVector(initState,getZero(initState.length),0);}case 2:if(typeof initVelocity==='number'){var zero=getZero(initState.length);return new FilteredVector(initState,zero,+initVelocity);}else{initTime=0;}case 3:if(initState.length!==initVelocity.length){throw new Error('state and velocity lengths must match');}return new FilteredVector(initState,initVelocity,initTime);}}/***/},/***/7080:/***/function(module){\"use strict\";module.exports=createRBTree;var RED=0;var BLACK=1;function RBNode(color,key,value,left,right,count){this._color=color;this.key=key;this.value=value;this.left=left;this.right=right;this._count=count;}function cloneNode(node){return new RBNode(node._color,node.key,node.value,node.left,node.right,node._count);}function repaint(color,node){return new RBNode(color,node.key,node.value,node.left,node.right,node._count);}function recount(node){node._count=1+(node.left?node.left._count:0)+(node.right?node.right._count:0);}function RedBlackTree(compare,root){this._compare=compare;this.root=root;}var proto=RedBlackTree.prototype;Object.defineProperty(proto,\"keys\",{get:function(){var result=[];this.forEach(function(k,v){result.push(k);});return result;}});Object.defineProperty(proto,\"values\",{get:function(){var result=[];this.forEach(function(k,v){result.push(v);});return result;}});//Returns the number of nodes in the tree\nObject.defineProperty(proto,\"length\",{get:function(){if(this.root){return this.root._count;}return 0;}});//Insert a new item into the tree\nproto.insert=function(key,value){var cmp=this._compare;//Find point to insert new node at\nvar n=this.root;var n_stack=[];var d_stack=[];while(n){var d=cmp(key,n.key);n_stack.push(n);d_stack.push(d);if(d<=0){n=n.left;}else{n=n.right;}}//Rebuild path to leaf node\nn_stack.push(new RBNode(RED,key,value,null,null,1));for(var s=n_stack.length-2;s>=0;--s){var n=n_stack[s];if(d_stack[s]<=0){n_stack[s]=new RBNode(n._color,n.key,n.value,n_stack[s+1],n.right,n._count+1);}else{n_stack[s]=new RBNode(n._color,n.key,n.value,n.left,n_stack[s+1],n._count+1);}}//Rebalance tree using rotations\n//console.log(\"start insert\", key, d_stack)\nfor(var s=n_stack.length-1;s>1;--s){var p=n_stack[s-1];var n=n_stack[s];if(p._color===BLACK||n._color===BLACK){break;}var pp=n_stack[s-2];if(pp.left===p){if(p.left===n){var y=pp.right;if(y&&y._color===RED){//console.log(\"LLr\")\np._color=BLACK;pp.right=repaint(BLACK,y);pp._color=RED;s-=1;}else{//console.log(\"LLb\")\npp._color=RED;pp.left=p.right;p._color=BLACK;p.right=pp;n_stack[s-2]=p;n_stack[s-1]=n;recount(pp);recount(p);if(s>=3){var ppp=n_stack[s-3];if(ppp.left===pp){ppp.left=p;}else{ppp.right=p;}}break;}}else{var y=pp.right;if(y&&y._color===RED){//console.log(\"LRr\")\np._color=BLACK;pp.right=repaint(BLACK,y);pp._color=RED;s-=1;}else{//console.log(\"LRb\")\np.right=n.left;pp._color=RED;pp.left=n.right;n._color=BLACK;n.left=p;n.right=pp;n_stack[s-2]=n;n_stack[s-1]=p;recount(pp);recount(p);recount(n);if(s>=3){var ppp=n_stack[s-3];if(ppp.left===pp){ppp.left=n;}else{ppp.right=n;}}break;}}}else{if(p.right===n){var y=pp.left;if(y&&y._color===RED){//console.log(\"RRr\", y.key)\np._color=BLACK;pp.left=repaint(BLACK,y);pp._color=RED;s-=1;}else{//console.log(\"RRb\")\npp._color=RED;pp.right=p.left;p._color=BLACK;p.left=pp;n_stack[s-2]=p;n_stack[s-1]=n;recount(pp);recount(p);if(s>=3){var ppp=n_stack[s-3];if(ppp.right===pp){ppp.right=p;}else{ppp.left=p;}}break;}}else{var y=pp.left;if(y&&y._color===RED){//console.log(\"RLr\")\np._color=BLACK;pp.left=repaint(BLACK,y);pp._color=RED;s-=1;}else{//console.log(\"RLb\")\np.left=n.right;pp._color=RED;pp.right=n.left;n._color=BLACK;n.right=p;n.left=pp;n_stack[s-2]=n;n_stack[s-1]=p;recount(pp);recount(p);recount(n);if(s>=3){var ppp=n_stack[s-3];if(ppp.right===pp){ppp.right=n;}else{ppp.left=n;}}break;}}}}//Return new tree\nn_stack[0]._color=BLACK;return new RedBlackTree(cmp,n_stack[0]);};//Visit all nodes inorder\nfunction doVisitFull(visit,node){if(node.left){var v=doVisitFull(visit,node.left);if(v){return v;}}var v=visit(node.key,node.value);if(v){return v;}if(node.right){return doVisitFull(visit,node.right);}}//Visit half nodes in order\nfunction doVisitHalf(lo,compare,visit,node){var l=compare(lo,node.key);if(l<=0){if(node.left){var v=doVisitHalf(lo,compare,visit,node.left);if(v){return v;}}var v=visit(node.key,node.value);if(v){return v;}}if(node.right){return doVisitHalf(lo,compare,visit,node.right);}}//Visit all nodes within a range\nfunction doVisit(lo,hi,compare,visit,node){var l=compare(lo,node.key);var h=compare(hi,node.key);var v;if(l<=0){if(node.left){v=doVisit(lo,hi,compare,visit,node.left);if(v){return v;}}if(h>0){v=visit(node.key,node.value);if(v){return v;}}}if(h>0&&node.right){return doVisit(lo,hi,compare,visit,node.right);}}proto.forEach=function rbTreeForEach(visit,lo,hi){if(!this.root){return;}switch(arguments.length){case 1:return doVisitFull(visit,this.root);break;case 2:return doVisitHalf(lo,this._compare,visit,this.root);break;case 3:if(this._compare(lo,hi)>=0){return;}return doVisit(lo,hi,this._compare,visit,this.root);break;}};//First item in list\nObject.defineProperty(proto,\"begin\",{get:function(){var stack=[];var n=this.root;while(n){stack.push(n);n=n.left;}return new RedBlackTreeIterator(this,stack);}});//Last item in list\nObject.defineProperty(proto,\"end\",{get:function(){var stack=[];var n=this.root;while(n){stack.push(n);n=n.right;}return new RedBlackTreeIterator(this,stack);}});//Find the ith item in the tree\nproto.at=function(idx){if(idx<0){return new RedBlackTreeIterator(this,[]);}var n=this.root;var stack=[];while(true){stack.push(n);if(n.left){if(idx<n.left._count){n=n.left;continue;}idx-=n.left._count;}if(!idx){return new RedBlackTreeIterator(this,stack);}idx-=1;if(n.right){if(idx>=n.right._count){break;}n=n.right;}else{break;}}return new RedBlackTreeIterator(this,[]);};proto.ge=function(key){var cmp=this._compare;var n=this.root;var stack=[];var last_ptr=0;while(n){var d=cmp(key,n.key);stack.push(n);if(d<=0){last_ptr=stack.length;}if(d<=0){n=n.left;}else{n=n.right;}}stack.length=last_ptr;return new RedBlackTreeIterator(this,stack);};proto.gt=function(key){var cmp=this._compare;var n=this.root;var stack=[];var last_ptr=0;while(n){var d=cmp(key,n.key);stack.push(n);if(d<0){last_ptr=stack.length;}if(d<0){n=n.left;}else{n=n.right;}}stack.length=last_ptr;return new RedBlackTreeIterator(this,stack);};proto.lt=function(key){var cmp=this._compare;var n=this.root;var stack=[];var last_ptr=0;while(n){var d=cmp(key,n.key);stack.push(n);if(d>0){last_ptr=stack.length;}if(d<=0){n=n.left;}else{n=n.right;}}stack.length=last_ptr;return new RedBlackTreeIterator(this,stack);};proto.le=function(key){var cmp=this._compare;var n=this.root;var stack=[];var last_ptr=0;while(n){var d=cmp(key,n.key);stack.push(n);if(d>=0){last_ptr=stack.length;}if(d<0){n=n.left;}else{n=n.right;}}stack.length=last_ptr;return new RedBlackTreeIterator(this,stack);};//Finds the item with key if it exists\nproto.find=function(key){var cmp=this._compare;var n=this.root;var stack=[];while(n){var d=cmp(key,n.key);stack.push(n);if(d===0){return new RedBlackTreeIterator(this,stack);}if(d<=0){n=n.left;}else{n=n.right;}}return new RedBlackTreeIterator(this,[]);};//Removes item with key from tree\nproto.remove=function(key){var iter=this.find(key);if(iter){return iter.remove();}return this;};//Returns the item at `key`\nproto.get=function(key){var cmp=this._compare;var n=this.root;while(n){var d=cmp(key,n.key);if(d===0){return n.value;}if(d<=0){n=n.left;}else{n=n.right;}}return;};//Iterator for red black tree\nfunction RedBlackTreeIterator(tree,stack){this.tree=tree;this._stack=stack;}var iproto=RedBlackTreeIterator.prototype;//Test if iterator is valid\nObject.defineProperty(iproto,\"valid\",{get:function(){return this._stack.length>0;}});//Node of the iterator\nObject.defineProperty(iproto,\"node\",{get:function(){if(this._stack.length>0){return this._stack[this._stack.length-1];}return null;},enumerable:true});//Makes a copy of an iterator\niproto.clone=function(){return new RedBlackTreeIterator(this.tree,this._stack.slice());};//Swaps two nodes\nfunction swapNode(n,v){n.key=v.key;n.value=v.value;n.left=v.left;n.right=v.right;n._color=v._color;n._count=v._count;}//Fix up a double black node in a tree\nfunction fixDoubleBlack(stack){var n,p,s,z;for(var i=stack.length-1;i>=0;--i){n=stack[i];if(i===0){n._color=BLACK;return;}//console.log(\"visit node:\", n.key, i, stack[i].key, stack[i-1].key)\np=stack[i-1];if(p.left===n){//console.log(\"left child\")\ns=p.right;if(s.right&&s.right._color===RED){//console.log(\"case 1: right sibling child red\")\ns=p.right=cloneNode(s);z=s.right=cloneNode(s.right);p.right=s.left;s.left=p;s.right=z;s._color=p._color;n._color=BLACK;p._color=BLACK;z._color=BLACK;recount(p);recount(s);if(i>1){var pp=stack[i-2];if(pp.left===p){pp.left=s;}else{pp.right=s;}}stack[i-1]=s;return;}else if(s.left&&s.left._color===RED){//console.log(\"case 1: left sibling child red\")\ns=p.right=cloneNode(s);z=s.left=cloneNode(s.left);p.right=z.left;s.left=z.right;z.left=p;z.right=s;z._color=p._color;p._color=BLACK;s._color=BLACK;n._color=BLACK;recount(p);recount(s);recount(z);if(i>1){var pp=stack[i-2];if(pp.left===p){pp.left=z;}else{pp.right=z;}}stack[i-1]=z;return;}if(s._color===BLACK){if(p._color===RED){//console.log(\"case 2: black sibling, red parent\", p.right.value)\np._color=BLACK;p.right=repaint(RED,s);return;}else{//console.log(\"case 2: black sibling, black parent\", p.right.value)\np.right=repaint(RED,s);continue;}}else{//console.log(\"case 3: red sibling\")\ns=cloneNode(s);p.right=s.left;s.left=p;s._color=p._color;p._color=RED;recount(p);recount(s);if(i>1){var pp=stack[i-2];if(pp.left===p){pp.left=s;}else{pp.right=s;}}stack[i-1]=s;stack[i]=p;if(i+1<stack.length){stack[i+1]=n;}else{stack.push(n);}i=i+2;}}else{//console.log(\"right child\")\ns=p.left;if(s.left&&s.left._color===RED){//console.log(\"case 1: left sibling child red\", p.value, p._color)\ns=p.left=cloneNode(s);z=s.left=cloneNode(s.left);p.left=s.right;s.right=p;s.left=z;s._color=p._color;n._color=BLACK;p._color=BLACK;z._color=BLACK;recount(p);recount(s);if(i>1){var pp=stack[i-2];if(pp.right===p){pp.right=s;}else{pp.left=s;}}stack[i-1]=s;return;}else if(s.right&&s.right._color===RED){//console.log(\"case 1: right sibling child red\")\ns=p.left=cloneNode(s);z=s.right=cloneNode(s.right);p.left=z.right;s.right=z.left;z.right=p;z.left=s;z._color=p._color;p._color=BLACK;s._color=BLACK;n._color=BLACK;recount(p);recount(s);recount(z);if(i>1){var pp=stack[i-2];if(pp.right===p){pp.right=z;}else{pp.left=z;}}stack[i-1]=z;return;}if(s._color===BLACK){if(p._color===RED){//console.log(\"case 2: black sibling, red parent\")\np._color=BLACK;p.left=repaint(RED,s);return;}else{//console.log(\"case 2: black sibling, black parent\")\np.left=repaint(RED,s);continue;}}else{//console.log(\"case 3: red sibling\")\ns=cloneNode(s);p.left=s.right;s.right=p;s._color=p._color;p._color=RED;recount(p);recount(s);if(i>1){var pp=stack[i-2];if(pp.right===p){pp.right=s;}else{pp.left=s;}}stack[i-1]=s;stack[i]=p;if(i+1<stack.length){stack[i+1]=n;}else{stack.push(n);}i=i+2;}}}}//Removes item at iterator from tree\niproto.remove=function(){var stack=this._stack;if(stack.length===0){return this.tree;}//First copy path to node\nvar cstack=new Array(stack.length);var n=stack[stack.length-1];cstack[cstack.length-1]=new RBNode(n._color,n.key,n.value,n.left,n.right,n._count);for(var i=stack.length-2;i>=0;--i){var n=stack[i];if(n.left===stack[i+1]){cstack[i]=new RBNode(n._color,n.key,n.value,cstack[i+1],n.right,n._count);}else{cstack[i]=new RBNode(n._color,n.key,n.value,n.left,cstack[i+1],n._count);}}//Get node\nn=cstack[cstack.length-1];//console.log(\"start remove: \", n.value)\n//If not leaf, then swap with previous node\nif(n.left&&n.right){//console.log(\"moving to leaf\")\n//First walk to previous leaf\nvar split=cstack.length;n=n.left;while(n.right){cstack.push(n);n=n.right;}//Copy path to leaf\nvar v=cstack[split-1];cstack.push(new RBNode(n._color,v.key,v.value,n.left,n.right,n._count));cstack[split-1].key=n.key;cstack[split-1].value=n.value;//Fix up stack\nfor(var i=cstack.length-2;i>=split;--i){n=cstack[i];cstack[i]=new RBNode(n._color,n.key,n.value,n.left,cstack[i+1],n._count);}cstack[split-1].left=cstack[split];}//console.log(\"stack=\", cstack.map(function(v) { return v.value }))\n//Remove leaf node\nn=cstack[cstack.length-1];if(n._color===RED){//Easy case: removing red leaf\n//console.log(\"RED leaf\")\nvar p=cstack[cstack.length-2];if(p.left===n){p.left=null;}else if(p.right===n){p.right=null;}cstack.pop();for(var i=0;i<cstack.length;++i){cstack[i]._count--;}return new RedBlackTree(this.tree._compare,cstack[0]);}else{if(n.left||n.right){//Second easy case:  Single child black parent\n//console.log(\"BLACK single child\")\nif(n.left){swapNode(n,n.left);}else if(n.right){swapNode(n,n.right);}//Child must be red, so repaint it black to balance color\nn._color=BLACK;for(var i=0;i<cstack.length-1;++i){cstack[i]._count--;}return new RedBlackTree(this.tree._compare,cstack[0]);}else if(cstack.length===1){//Third easy case: root\n//console.log(\"ROOT\")\nreturn new RedBlackTree(this.tree._compare,null);}else{//Hard case: Repaint n, and then do some nasty stuff\n//console.log(\"BLACK leaf no children\")\nfor(var i=0;i<cstack.length;++i){cstack[i]._count--;}var parent=cstack[cstack.length-2];fixDoubleBlack(cstack);//Fix up links\nif(parent.left===n){parent.left=null;}else{parent.right=null;}}}return new RedBlackTree(this.tree._compare,cstack[0]);};//Returns key\nObject.defineProperty(iproto,\"key\",{get:function(){if(this._stack.length>0){return this._stack[this._stack.length-1].key;}return;},enumerable:true});//Returns value\nObject.defineProperty(iproto,\"value\",{get:function(){if(this._stack.length>0){return this._stack[this._stack.length-1].value;}return;},enumerable:true});//Returns the position of this iterator in the sorted list\nObject.defineProperty(iproto,\"index\",{get:function(){var idx=0;var stack=this._stack;if(stack.length===0){var r=this.tree.root;if(r){return r._count;}return 0;}else if(stack[stack.length-1].left){idx=stack[stack.length-1].left._count;}for(var s=stack.length-2;s>=0;--s){if(stack[s+1]===stack[s].right){++idx;if(stack[s].left){idx+=stack[s].left._count;}}}return idx;},enumerable:true});//Advances iterator to next element in list\niproto.next=function(){var stack=this._stack;if(stack.length===0){return;}var n=stack[stack.length-1];if(n.right){n=n.right;while(n){stack.push(n);n=n.left;}}else{stack.pop();while(stack.length>0&&stack[stack.length-1].right===n){n=stack[stack.length-1];stack.pop();}}};//Checks if iterator is at end of tree\nObject.defineProperty(iproto,\"hasNext\",{get:function(){var stack=this._stack;if(stack.length===0){return false;}if(stack[stack.length-1].right){return true;}for(var s=stack.length-1;s>0;--s){if(stack[s-1].left===stack[s]){return true;}}return false;}});//Update value\niproto.update=function(value){var stack=this._stack;if(stack.length===0){throw new Error(\"Can't update empty node!\");}var cstack=new Array(stack.length);var n=stack[stack.length-1];cstack[cstack.length-1]=new RBNode(n._color,n.key,value,n.left,n.right,n._count);for(var i=stack.length-2;i>=0;--i){n=stack[i];if(n.left===stack[i+1]){cstack[i]=new RBNode(n._color,n.key,n.value,cstack[i+1],n.right,n._count);}else{cstack[i]=new RBNode(n._color,n.key,n.value,n.left,cstack[i+1],n._count);}}return new RedBlackTree(this.tree._compare,cstack[0]);};//Moves iterator backward one element\niproto.prev=function(){var stack=this._stack;if(stack.length===0){return;}var n=stack[stack.length-1];if(n.left){n=n.left;while(n){stack.push(n);n=n.right;}}else{stack.pop();while(stack.length>0&&stack[stack.length-1].left===n){n=stack[stack.length-1];stack.pop();}}};//Checks if iterator is at start of tree\nObject.defineProperty(iproto,\"hasPrev\",{get:function(){var stack=this._stack;if(stack.length===0){return false;}if(stack[stack.length-1].left){return true;}for(var s=stack.length-1;s>0;--s){if(stack[s-1].right===stack[s]){return true;}}return false;}});//Default comparison function\nfunction defaultCompare(a,b){if(a<b){return-1;}if(a>b){return 1;}return 0;}//Build a tree\nfunction createRBTree(compare){return new RedBlackTree(compare||defaultCompare,null);}/***/},/***/7453:/***/function(module,__unused_webpack_exports,__nested_webpack_require_235769__){\"use strict\";module.exports=createAxes;var createText=__nested_webpack_require_235769__(9557);var createLines=__nested_webpack_require_235769__(1681);var createBackground=__nested_webpack_require_235769__(1011);var getCubeProperties=__nested_webpack_require_235769__(2864);var Ticks=__nested_webpack_require_235769__(8468);var identity=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);function copyVec3(a,b){a[0]=b[0];a[1]=b[1];a[2]=b[2];return a;}function Axes(gl){this.gl=gl;this.pixelRatio=1;this.bounds=[[-10,-10,-10],[10,10,10]];this.ticks=[[],[],[]];this.autoTicks=true;this.tickSpacing=[1,1,1];this.tickEnable=[true,true,true];this.tickFont=['sans-serif','sans-serif','sans-serif'];this.tickSize=[12,12,12];this.tickAngle=[0,0,0];this.tickAlign=['auto','auto','auto'];this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]];this.tickPad=[10,10,10];this.lastCubeProps={cubeEdges:[0,0,0],axis:[0,0,0]};this.labels=['x','y','z'];this.labelEnable=[true,true,true];this.labelFont='sans-serif';this.labelSize=[20,20,20];this.labelAngle=[0,0,0];this.labelAlign=['auto','auto','auto'];this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]];this.labelPad=[10,10,10];this.lineEnable=[true,true,true];this.lineMirror=[false,false,false];this.lineWidth=[1,1,1];this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]];this.lineTickEnable=[true,true,true];this.lineTickMirror=[false,false,false];this.lineTickLength=[0,0,0];this.lineTickWidth=[1,1,1];this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]];this.gridEnable=[true,true,true];this.gridWidth=[1,1,1];this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]];this.zeroEnable=[true,true,true];this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]];this.zeroLineWidth=[2,2,2];this.backgroundEnable=[false,false,false];this.backgroundColor=[[0.8,0.8,0.8,0.5],[0.8,0.8,0.8,0.5],[0.8,0.8,0.8,0.5]];this._firstInit=true;this._text=null;this._lines=null;this._background=createBackground(gl);}var proto=Axes.prototype;proto.update=function(options){options=options||{};//Option parsing helper functions\nfunction parseOption(nest,cons,name){if(name in options){var opt=options[name];var prev=this[name];var next;if(nest?Array.isArray(opt)&&Array.isArray(opt[0]):Array.isArray(opt)){this[name]=next=[cons(opt[0]),cons(opt[1]),cons(opt[2])];}else{this[name]=next=[cons(opt),cons(opt),cons(opt)];}for(var i=0;i<3;++i){if(next[i]!==prev[i]){return true;}}}return false;}var NUMBER=parseOption.bind(this,false,Number);var BOOLEAN=parseOption.bind(this,false,Boolean);var STRING=parseOption.bind(this,false,String);var COLOR=parseOption.bind(this,true,function(v){if(Array.isArray(v)){if(v.length===3){return[+v[0],+v[1],+v[2],1.0];}else if(v.length===4){return[+v[0],+v[1],+v[2],+v[3]];}}return[0,0,0,1];});//Tick marks and bounds\nvar nextTicks;var ticksUpdate=false;var boundsChanged=false;if('bounds'in options){var bounds=options.bounds;i_loop:for(var i=0;i<2;++i){for(var j=0;j<3;++j){if(bounds[i][j]!==this.bounds[i][j]){boundsChanged=true;}this.bounds[i][j]=bounds[i][j];}}}if('ticks'in options){nextTicks=options.ticks;ticksUpdate=true;this.autoTicks=false;for(var i=0;i<3;++i){this.tickSpacing[i]=0.0;}}else if(NUMBER('tickSpacing')){this.autoTicks=true;boundsChanged=true;}if(this._firstInit){if(!('ticks'in options||'tickSpacing'in options)){this.autoTicks=true;}//Force tick recomputation on first update\nboundsChanged=true;ticksUpdate=true;this._firstInit=false;}if(boundsChanged&&this.autoTicks){nextTicks=Ticks.create(this.bounds,this.tickSpacing);ticksUpdate=true;}//Compare next ticks to previous ticks, only update if needed\nif(ticksUpdate){for(var i=0;i<3;++i){nextTicks[i].sort(function(a,b){return a.x-b.x;});}if(Ticks.equal(nextTicks,this.ticks)){ticksUpdate=false;}else{this.ticks=nextTicks;}}//Parse tick properties\nBOOLEAN('tickEnable');if(STRING('tickFont')){ticksUpdate=true;//If font changes, must rebuild vbo\n}NUMBER('tickSize');NUMBER('tickAngle');NUMBER('tickPad');COLOR('tickColor');//Axis labels\nvar labelUpdate=STRING('labels');if(STRING('labelFont')){labelUpdate=true;}BOOLEAN('labelEnable');NUMBER('labelSize');NUMBER('labelPad');COLOR('labelColor');//Axis lines\nBOOLEAN('lineEnable');BOOLEAN('lineMirror');NUMBER('lineWidth');COLOR('lineColor');//Axis line ticks\nBOOLEAN('lineTickEnable');BOOLEAN('lineTickMirror');NUMBER('lineTickLength');NUMBER('lineTickWidth');COLOR('lineTickColor');//Grid lines\nBOOLEAN('gridEnable');NUMBER('gridWidth');COLOR('gridColor');//Zero line\nBOOLEAN('zeroEnable');COLOR('zeroLineColor');NUMBER('zeroLineWidth');//Background\nBOOLEAN('backgroundEnable');COLOR('backgroundColor');//Update text if necessary\nif(!this._text){this._text=createText(this.gl,this.bounds,this.labels,this.labelFont,this.ticks,this.tickFont);}else if(this._text&&(labelUpdate||ticksUpdate)){this._text.update(this.bounds,this.labels,this.labelFont,this.ticks,this.tickFont);}//Update lines if necessary\nif(this._lines&&ticksUpdate){this._lines.dispose();this._lines=null;}if(!this._lines){this._lines=createLines(this.gl,this.bounds,this.ticks);}};function OffsetInfo(){this.primalOffset=[0,0,0];this.primalMinor=[0,0,0];this.mirrorOffset=[0,0,0];this.mirrorMinor=[0,0,0];}var LINE_OFFSET=[new OffsetInfo(),new OffsetInfo(),new OffsetInfo()];function computeLineOffset(result,i,bounds,cubeEdges,cubeAxis){var primalOffset=result.primalOffset;var primalMinor=result.primalMinor;var dualOffset=result.mirrorOffset;var dualMinor=result.mirrorMinor;var e=cubeEdges[i];//Calculate offsets\nfor(var j=0;j<3;++j){if(i===j){continue;}var a=primalOffset,b=dualOffset,c=primalMinor,d=dualMinor;if(e&1<<j){a=dualOffset;b=primalOffset;c=dualMinor;d=primalMinor;}a[j]=bounds[0][j];b[j]=bounds[1][j];if(cubeAxis[j]>0){c[j]=-1;d[j]=0;}else{c[j]=0;d[j]=+1;}}}var CUBE_ENABLE=[0,0,0];var DEFAULT_PARAMS={model:identity,view:identity,projection:identity,_ortho:false};proto.isOpaque=function(){return true;};proto.isTransparent=function(){return false;};proto.drawTransparent=function(params){};var ALIGN_OPTION_AUTO=0;// i.e. as defined in the shader the text would rotate to stay upwards range: [-90,90]\nvar PRIMAL_MINOR=[0,0,0];var MIRROR_MINOR=[0,0,0];var PRIMAL_OFFSET=[0,0,0];proto.draw=function(params){params=params||DEFAULT_PARAMS;var gl=this.gl;//Geometry for camera and axes\nvar model=params.model||identity;var view=params.view||identity;var projection=params.projection||identity;var bounds=this.bounds;var isOrtho=params._ortho||false;//Unpack axis info\nvar cubeParams=getCubeProperties(model,view,projection,bounds,isOrtho);var cubeEdges=cubeParams.cubeEdges;var cubeAxis=cubeParams.axis;var cx=view[12];var cy=view[13];var cz=view[14];var cw=view[15];var orthoFix=isOrtho?2:1;// double up padding for orthographic ticks & labels\nvar pixelScaleF=orthoFix*this.pixelRatio*(projection[3]*cx+projection[7]*cy+projection[11]*cz+projection[15]*cw)/gl.drawingBufferHeight;for(var i=0;i<3;++i){this.lastCubeProps.cubeEdges[i]=cubeEdges[i];this.lastCubeProps.axis[i]=cubeAxis[i];}//Compute axis info\nvar lineOffset=LINE_OFFSET;for(var i=0;i<3;++i){computeLineOffset(LINE_OFFSET[i],i,this.bounds,cubeEdges,cubeAxis);}//Set up state parameters\nvar gl=this.gl;//Draw background first\nvar cubeEnable=CUBE_ENABLE;for(var i=0;i<3;++i){if(this.backgroundEnable[i]){cubeEnable[i]=cubeAxis[i];}else{cubeEnable[i]=0;}}this._background.draw(model,view,projection,bounds,cubeEnable,this.backgroundColor);//Draw lines\nthis._lines.bind(model,view,projection,this);//First draw grid lines and zero lines\nfor(var i=0;i<3;++i){var x=[0,0,0];if(cubeAxis[i]>0){x[i]=bounds[1][i];}else{x[i]=bounds[0][i];}//Draw grid lines\nfor(var j=0;j<2;++j){var u=(i+1+j)%3;var v=(i+1+(j^1))%3;if(this.gridEnable[u]){this._lines.drawGrid(u,v,this.bounds,x,this.gridColor[u],this.gridWidth[u]*this.pixelRatio);}}//Draw zero lines (need to do this AFTER all grid lines are drawn)\nfor(var j=0;j<2;++j){var u=(i+1+j)%3;var v=(i+1+(j^1))%3;if(this.zeroEnable[v]){//Check if zero line in bounds\nif(Math.min(bounds[0][v],bounds[1][v])<=0&&Math.max(bounds[0][v],bounds[1][v])>=0){this._lines.drawZero(u,v,this.bounds,x,this.zeroLineColor[v],this.zeroLineWidth[v]*this.pixelRatio);}}}}//Then draw axis lines and tick marks\nfor(var i=0;i<3;++i){//Draw axis lines\nif(this.lineEnable[i]){this._lines.drawAxisLine(i,this.bounds,lineOffset[i].primalOffset,this.lineColor[i],this.lineWidth[i]*this.pixelRatio);}if(this.lineMirror[i]){this._lines.drawAxisLine(i,this.bounds,lineOffset[i].mirrorOffset,this.lineColor[i],this.lineWidth[i]*this.pixelRatio);}//Compute minor axes\nvar primalMinor=copyVec3(PRIMAL_MINOR,lineOffset[i].primalMinor);var mirrorMinor=copyVec3(MIRROR_MINOR,lineOffset[i].mirrorMinor);var tickLength=this.lineTickLength;for(var j=0;j<3;++j){var scaleFactor=pixelScaleF/model[5*j];primalMinor[j]*=tickLength[j]*scaleFactor;mirrorMinor[j]*=tickLength[j]*scaleFactor;}//Draw axis line ticks\nif(this.lineTickEnable[i]){this._lines.drawAxisTicks(i,lineOffset[i].primalOffset,primalMinor,this.lineTickColor[i],this.lineTickWidth[i]*this.pixelRatio);}if(this.lineTickMirror[i]){this._lines.drawAxisTicks(i,lineOffset[i].mirrorOffset,mirrorMinor,this.lineTickColor[i],this.lineTickWidth[i]*this.pixelRatio);}}this._lines.unbind();//Draw text sprites\nthis._text.bind(model,view,projection,this.pixelRatio);var alignOpt;// options in shader are from this list {-1, 0, 1, 2, 3, ..., n}\n// -1: backward compatible\n//  0: raw data\n//  1: auto align, free angles\n//  2: auto align, horizontal or vertical\n//3-n: auto align, round to n directions e.g. 12 -> round to angles with 30-degree steps\nvar hv_ratio=0.5;// can have an effect on the ratio between horizontals and verticals when using option 2\nvar enableAlign;var alignDir;function alignTo(i){alignDir=[0,0,0];alignDir[i]=1;}function solveTickAlignments(i,minor,major){var i1=(i+1)%3;var i2=(i+2)%3;var A=minor[i1];var B=minor[i2];var C=major[i1];var D=major[i2];if(A>0&&D>0){alignTo(i1);return;}else if(A>0&&D<0){alignTo(i1);return;}else if(A<0&&D>0){alignTo(i1);return;}else if(A<0&&D<0){alignTo(i1);return;}else if(B>0&&C>0){alignTo(i2);return;}else if(B>0&&C<0){alignTo(i2);return;}else if(B<0&&C>0){alignTo(i2);return;}else if(B<0&&C<0){alignTo(i2);return;}}for(var i=0;i<3;++i){var minor=lineOffset[i].primalMinor;var major=lineOffset[i].mirrorMinor;var offset=copyVec3(PRIMAL_OFFSET,lineOffset[i].primalOffset);for(var j=0;j<3;++j){if(this.lineTickEnable[i]){offset[j]+=pixelScaleF*minor[j]*Math.max(this.lineTickLength[j],0)/model[5*j];}}var axis=[0,0,0];axis[i]=1;//Draw tick text\nif(this.tickEnable[i]){if(this.tickAngle[i]===-3600){this.tickAngle[i]=0;this.tickAlign[i]='auto';}else{this.tickAlign[i]=-1;}enableAlign=1;alignOpt=[this.tickAlign[i],hv_ratio,enableAlign];if(alignOpt[0]==='auto')alignOpt[0]=ALIGN_OPTION_AUTO;else alignOpt[0]=parseInt(''+alignOpt[0]);alignDir=[0,0,0];solveTickAlignments(i,minor,major);//Add tick padding\nfor(var j=0;j<3;++j){offset[j]+=pixelScaleF*minor[j]*this.tickPad[j]/model[5*j];}//Draw axis\nthis._text.drawTicks(i,this.tickSize[i],this.tickAngle[i],offset,this.tickColor[i],axis,alignDir,alignOpt);}//Draw labels\nif(this.labelEnable[i]){enableAlign=0;alignDir=[0,0,0];if(this.labels[i].length>4){// for large label axis enable alignDir to axis\nalignTo(i);enableAlign=1;}alignOpt=[this.labelAlign[i],hv_ratio,enableAlign];if(alignOpt[0]==='auto')alignOpt[0]=ALIGN_OPTION_AUTO;else alignOpt[0]=parseInt(''+alignOpt[0]);//Add label padding\nfor(var j=0;j<3;++j){offset[j]+=pixelScaleF*minor[j]*this.labelPad[j]/model[5*j];}offset[i]+=0.5*(bounds[0][i]+bounds[1][i]);//Draw axis\nthis._text.drawLabel(i,this.labelSize[i],this.labelAngle[i],offset,this.labelColor[i],[0,0,0],alignDir,alignOpt);}}this._text.unbind();};proto.dispose=function(){this._text.dispose();this._lines.dispose();this._background.dispose();this._lines=null;this._text=null;this._background=null;this.gl=null;};function createAxes(gl,options){var axes=new Axes(gl);axes.update(options);return axes;}/***/},/***/1011:/***/function(module,__unused_webpack_exports,__nested_webpack_require_247637__){\"use strict\";module.exports=createBackgroundCube;var createBuffer=__nested_webpack_require_247637__(5827);var createVAO=__nested_webpack_require_247637__(2944);var createShader=__nested_webpack_require_247637__(1943).bg;function BackgroundCube(gl,buffer,vao,shader){this.gl=gl;this.buffer=buffer;this.vao=vao;this.shader=shader;}var proto=BackgroundCube.prototype;proto.draw=function(model,view,projection,bounds,enable,colors){var needsBG=false;for(var i=0;i<3;++i){needsBG=needsBG||enable[i];}if(!needsBG){return;}var gl=this.gl;gl.enable(gl.POLYGON_OFFSET_FILL);gl.polygonOffset(1,2);this.shader.bind();this.shader.uniforms={model:model,view:view,projection:projection,bounds:bounds,enable:enable,colors:colors};this.vao.bind();this.vao.draw(this.gl.TRIANGLES,36);this.vao.unbind();gl.disable(gl.POLYGON_OFFSET_FILL);};proto.dispose=function(){this.vao.dispose();this.buffer.dispose();this.shader.dispose();};function createBackgroundCube(gl){//Create cube vertices\nvar vertices=[];var indices=[];var ptr=0;for(var d=0;d<3;++d){var u=(d+1)%3;var v=(d+2)%3;var x=[0,0,0];var c=[0,0,0];for(var s=-1;s<=1;s+=2){indices.push(ptr,ptr+2,ptr+1,ptr+1,ptr+2,ptr+3);x[d]=s;c[d]=s;for(var i=-1;i<=1;i+=2){x[u]=i;for(var j=-1;j<=1;j+=2){x[v]=j;vertices.push(x[0],x[1],x[2],c[0],c[1],c[2]);ptr+=1;}}//Swap u and v\nvar tt=u;u=v;v=tt;}}//Allocate buffer and vertex array\nvar buffer=createBuffer(gl,new Float32Array(vertices));var elements=createBuffer(gl,new Uint16Array(indices),gl.ELEMENT_ARRAY_BUFFER);var vao=createVAO(gl,[{buffer:buffer,type:gl.FLOAT,size:3,offset:0,stride:24},{buffer:buffer,type:gl.FLOAT,size:3,offset:12,stride:24}],elements);//Create shader object\nvar shader=createShader(gl);shader.attributes.position.location=0;shader.attributes.normal.location=1;return new BackgroundCube(gl,buffer,vao,shader);}/***/},/***/2864:/***/function(module,__unused_webpack_exports,__nested_webpack_require_249492__){\"use strict\";module.exports=getCubeEdges;var bits=__nested_webpack_require_249492__(2288);var multiply=__nested_webpack_require_249492__(104);var splitPoly=__nested_webpack_require_249492__(4670);var orient=__nested_webpack_require_249492__(417);var mvp=new Array(16);var pCubeVerts=new Array(8);var cubeVerts=new Array(8);var x=new Array(3);var zero3=[0,0,0];(function(){for(var i=0;i<8;++i){pCubeVerts[i]=[1,1,1,1];cubeVerts[i]=[1,1,1];}})();function transformHg(result,x,mat){for(var i=0;i<4;++i){result[i]=mat[12+i];for(var j=0;j<3;++j){result[i]+=x[j]*mat[4*j+i];}}}var FRUSTUM_PLANES=[[0,0,1,0,0],[0,0,-1,1,0],[0,-1,0,1,0],[0,1,0,1,0],[-1,0,0,1,0],[1,0,0,1,0]];function polygonArea(p){for(var i=0;i<FRUSTUM_PLANES.length;++i){p=splitPoly.positive(p,FRUSTUM_PLANES[i]);if(p.length<3){return 0;}}var base=p[0];var ax=base[0]/base[3];var ay=base[1]/base[3];var area=0.0;for(var i=1;i+1<p.length;++i){var b=p[i];var c=p[i+1];var bx=b[0]/b[3];var by=b[1]/b[3];var cx=c[0]/c[3];var cy=c[1]/c[3];var ux=bx-ax;var uy=by-ay;var vx=cx-ax;var vy=cy-ay;area+=Math.abs(ux*vy-uy*vx);}return area;}var CUBE_EDGES=[1,1,1];var CUBE_AXIS=[0,0,0];var CUBE_RESULT={cubeEdges:CUBE_EDGES,axis:CUBE_AXIS};function getCubeEdges(model,view,projection,bounds,ortho){//Concatenate matrices\nmultiply(mvp,view,model);multiply(mvp,projection,mvp);//First project cube vertices\nvar ptr=0;for(var i=0;i<2;++i){x[2]=bounds[i][2];for(var j=0;j<2;++j){x[1]=bounds[j][1];for(var k=0;k<2;++k){x[0]=bounds[k][0];transformHg(pCubeVerts[ptr],x,mvp);ptr+=1;}}}//Classify camera against cube faces\nvar closest=-1;for(var i=0;i<8;++i){var w=pCubeVerts[i][3];for(var l=0;l<3;++l){cubeVerts[i][l]=pCubeVerts[i][l]/w;}if(ortho)cubeVerts[i][2]*=-1;if(w<0){if(closest<0){closest=i;}else if(cubeVerts[i][2]<cubeVerts[closest][2]){closest=i;}}}if(closest<0){closest=0;for(var d=0;d<3;++d){var u=(d+2)%3;var v=(d+1)%3;var o0=-1;var o1=-1;for(var s=0;s<2;++s){var f0=s<<d;var f1=f0+(s<<u)+(1-s<<v);var f2=f0+(1-s<<u)+(s<<v);if(orient(cubeVerts[f0],cubeVerts[f1],cubeVerts[f2],zero3)<0){continue;}if(s){o0=1;}else{o1=1;}}if(o0<0||o1<0){if(o1>o0){closest|=1<<d;}continue;}for(var s=0;s<2;++s){var f0=s<<d;var f1=f0+(s<<u)+(1-s<<v);var f2=f0+(1-s<<u)+(s<<v);var o=polygonArea([pCubeVerts[f0],pCubeVerts[f1],pCubeVerts[f2],pCubeVerts[f0+(1<<u)+(1<<v)]]);if(s){o0=o;}else{o1=o;}}if(o1>o0){closest|=1<<d;continue;}}}var farthest=7^closest;//Find lowest vertex which is not closest closest\nvar bottom=-1;for(var i=0;i<8;++i){if(i===closest||i===farthest){continue;}if(bottom<0){bottom=i;}else if(cubeVerts[bottom][1]>cubeVerts[i][1]){bottom=i;}}//Find left/right neighbors of bottom vertex\nvar left=-1;for(var i=0;i<3;++i){var idx=bottom^1<<i;if(idx===closest||idx===farthest){continue;}if(left<0){left=idx;}var v=cubeVerts[idx];if(v[0]<cubeVerts[left][0]){left=idx;}}var right=-1;for(var i=0;i<3;++i){var idx=bottom^1<<i;if(idx===closest||idx===farthest||idx===left){continue;}if(right<0){right=idx;}var v=cubeVerts[idx];if(v[0]>cubeVerts[right][0]){right=idx;}}//Determine edge axis coordinates\nvar cubeEdges=CUBE_EDGES;cubeEdges[0]=cubeEdges[1]=cubeEdges[2]=0;cubeEdges[bits.log2(left^bottom)]=bottom&left;cubeEdges[bits.log2(bottom^right)]=bottom&right;var top=right^7;if(top===closest||top===farthest){top=left^7;cubeEdges[bits.log2(right^top)]=top&right;}else{cubeEdges[bits.log2(left^top)]=top&left;}//Determine visible faces\nvar axis=CUBE_AXIS;var cutCorner=closest;for(var d=0;d<3;++d){if(cutCorner&1<<d){axis[d]=-1;}else{axis[d]=1;}}//Return result\nreturn CUBE_RESULT;}/***/},/***/1681:/***/function(module,__unused_webpack_exports,__nested_webpack_require_253046__){\"use strict\";module.exports=createLines;var createBuffer=__nested_webpack_require_253046__(5827);var createVAO=__nested_webpack_require_253046__(2944);var createShader=__nested_webpack_require_253046__(1943)/* .line */.j;var MAJOR_AXIS=[0,0,0];var MINOR_AXIS=[0,0,0];var SCREEN_AXIS=[0,0,0];var OFFSET_VEC=[0,0,0];var SHAPE=[1,1];function zeroVec(a){a[0]=a[1]=a[2]=0;return a;}function copyVec(a,b){a[0]=b[0];a[1]=b[1];a[2]=b[2];return a;}function Lines(gl,vertBuffer,vao,shader,tickCount,tickOffset,gridCount,gridOffset){this.gl=gl;this.vertBuffer=vertBuffer;this.vao=vao;this.shader=shader;this.tickCount=tickCount;this.tickOffset=tickOffset;this.gridCount=gridCount;this.gridOffset=gridOffset;}var proto=Lines.prototype;proto.bind=function(model,view,projection){this.shader.bind();this.shader.uniforms.model=model;this.shader.uniforms.view=view;this.shader.uniforms.projection=projection;SHAPE[0]=this.gl.drawingBufferWidth;SHAPE[1]=this.gl.drawingBufferHeight;this.shader.uniforms.screenShape=SHAPE;this.vao.bind();};proto.unbind=function(){this.vao.unbind();};proto.drawAxisLine=function(j,bounds,offset,color,lineWidth){var minorAxis=zeroVec(MINOR_AXIS);this.shader.uniforms.majorAxis=MINOR_AXIS;minorAxis[j]=bounds[1][j]-bounds[0][j];this.shader.uniforms.minorAxis=minorAxis;var noffset=copyVec(OFFSET_VEC,offset);noffset[j]+=bounds[0][j];this.shader.uniforms.offset=noffset;this.shader.uniforms.lineWidth=lineWidth;this.shader.uniforms.color=color;var screenAxis=zeroVec(SCREEN_AXIS);screenAxis[(j+2)%3]=1;this.shader.uniforms.screenAxis=screenAxis;this.vao.draw(this.gl.TRIANGLES,6);var screenAxis=zeroVec(SCREEN_AXIS);screenAxis[(j+1)%3]=1;this.shader.uniforms.screenAxis=screenAxis;this.vao.draw(this.gl.TRIANGLES,6);};proto.drawAxisTicks=function(j,offset,minorAxis,color,lineWidth){if(!this.tickCount[j]){return;}var majorAxis=zeroVec(MAJOR_AXIS);majorAxis[j]=1;this.shader.uniforms.majorAxis=majorAxis;this.shader.uniforms.offset=offset;this.shader.uniforms.minorAxis=minorAxis;this.shader.uniforms.color=color;this.shader.uniforms.lineWidth=lineWidth;var screenAxis=zeroVec(SCREEN_AXIS);screenAxis[j]=1;this.shader.uniforms.screenAxis=screenAxis;this.vao.draw(this.gl.TRIANGLES,this.tickCount[j],this.tickOffset[j]);};proto.drawGrid=function(i,j,bounds,offset,color,lineWidth){if(!this.gridCount[i]){return;}var minorAxis=zeroVec(MINOR_AXIS);minorAxis[j]=bounds[1][j]-bounds[0][j];this.shader.uniforms.minorAxis=minorAxis;var noffset=copyVec(OFFSET_VEC,offset);noffset[j]+=bounds[0][j];this.shader.uniforms.offset=noffset;var majorAxis=zeroVec(MAJOR_AXIS);majorAxis[i]=1;this.shader.uniforms.majorAxis=majorAxis;var screenAxis=zeroVec(SCREEN_AXIS);screenAxis[i]=1;this.shader.uniforms.screenAxis=screenAxis;this.shader.uniforms.lineWidth=lineWidth;this.shader.uniforms.color=color;this.vao.draw(this.gl.TRIANGLES,this.gridCount[i],this.gridOffset[i]);};proto.drawZero=function(j,i,bounds,offset,color,lineWidth){var minorAxis=zeroVec(MINOR_AXIS);this.shader.uniforms.majorAxis=minorAxis;minorAxis[j]=bounds[1][j]-bounds[0][j];this.shader.uniforms.minorAxis=minorAxis;var noffset=copyVec(OFFSET_VEC,offset);noffset[j]+=bounds[0][j];this.shader.uniforms.offset=noffset;var screenAxis=zeroVec(SCREEN_AXIS);screenAxis[i]=1;this.shader.uniforms.screenAxis=screenAxis;this.shader.uniforms.lineWidth=lineWidth;this.shader.uniforms.color=color;this.vao.draw(this.gl.TRIANGLES,6);};proto.dispose=function(){this.vao.dispose();this.vertBuffer.dispose();this.shader.dispose();};function createLines(gl,bounds,ticks){var vertices=[];var tickOffset=[0,0,0];var tickCount=[0,0,0];//Create grid lines for each axis/direction\nvar gridOffset=[0,0,0];var gridCount=[0,0,0];//Add zero line\nvertices.push(0,0,1,0,1,1,0,0,-1,0,0,-1,0,1,1,0,1,-1);for(var i=0;i<3;++i){//Axis tick marks\nvar start=vertices.length/3|0;for(var j=0;j<ticks[i].length;++j){var x=+ticks[i][j].x;vertices.push(x,0,1,x,1,1,x,0,-1,x,0,-1,x,1,1,x,1,-1);}var end=vertices.length/3|0;tickOffset[i]=start;tickCount[i]=end-start;//Grid lines\nvar start=vertices.length/3|0;for(var k=0;k<ticks[i].length;++k){var x=+ticks[i][k].x;vertices.push(x,0,1,x,1,1,x,0,-1,x,0,-1,x,1,1,x,1,-1);}var end=vertices.length/3|0;gridOffset[i]=start;gridCount[i]=end-start;}//Create cube VAO\nvar vertBuf=createBuffer(gl,new Float32Array(vertices));var vao=createVAO(gl,[{\"buffer\":vertBuf,\"type\":gl.FLOAT,\"size\":3,\"stride\":0,\"offset\":0}]);var shader=createShader(gl);shader.attributes.position.location=0;return new Lines(gl,vertBuf,vao,shader,tickCount,tickOffset,gridCount,gridOffset);}/***/},/***/1943:/***/function(__unused_webpack_module,exports,__nested_webpack_require_257619__){\"use strict\";var glslify=__nested_webpack_require_257619__(6832);var createShader=__nested_webpack_require_257619__(5158);var lineVert=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position;\\n\\nuniform mat4 model, view, projection;\\nuniform vec3 offset, majorAxis, minorAxis, screenAxis;\\nuniform float lineWidth;\\nuniform vec2 screenShape;\\n\\nvec3 project(vec3 p) {\\n  vec4 pp = projection * view * model * vec4(p, 1.0);\\n  return pp.xyz / max(pp.w, 0.0001);\\n}\\n\\nvoid main() {\\n  vec3 major = position.x * majorAxis;\\n  vec3 minor = position.y * minorAxis;\\n\\n  vec3 vPosition = major + minor + offset;\\n  vec3 pPosition = project(vPosition);\\n  vec3 offset = project(vPosition + screenAxis * position.z);\\n\\n  vec2 screen = normalize((offset - pPosition).xy * screenShape) / screenShape;\\n\\n  gl_Position = vec4(pPosition + vec3(0.5 * screen * lineWidth, 0), 1.0);\\n}\\n\"]);var lineFrag=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nuniform vec4 color;\\nvoid main() {\\n  gl_FragColor = color;\\n}\"]);exports.j=function(gl){return createShader(gl,lineVert,lineFrag,null,[{name:'position',type:'vec3'}]);};var textVert=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position;\\n\\nuniform mat4 model, view, projection;\\nuniform vec3 offset, axis, alignDir, alignOpt;\\nuniform float scale, angle, pixelScale;\\nuniform vec2 resolution;\\n\\nvec3 project(vec3 p) {\\n  vec4 pp = projection * view * model * vec4(p, 1.0);\\n  return pp.xyz / max(pp.w, 0.0001);\\n}\\n\\nfloat computeViewAngle(vec3 a, vec3 b) {\\n  vec3 A = project(a);\\n  vec3 B = project(b);\\n\\n  return atan(\\n    (B.y - A.y) * resolution.y,\\n    (B.x - A.x) * resolution.x\\n  );\\n}\\n\\nconst float PI = 3.141592;\\nconst float TWO_PI = 2.0 * PI;\\nconst float HALF_PI = 0.5 * PI;\\nconst float ONE_AND_HALF_PI = 1.5 * PI;\\n\\nint option = int(floor(alignOpt.x + 0.001));\\nfloat hv_ratio =       alignOpt.y;\\nbool enableAlign =    (alignOpt.z != 0.0);\\n\\nfloat mod_angle(float a) {\\n  return mod(a, PI);\\n}\\n\\nfloat positive_angle(float a) {\\n  return mod_angle((a < 0.0) ?\\n    a + TWO_PI :\\n    a\\n  );\\n}\\n\\nfloat look_upwards(float a) {\\n  float b = positive_angle(a);\\n  return ((b > HALF_PI) && (b <= ONE_AND_HALF_PI)) ?\\n    b - PI :\\n    b;\\n}\\n\\nfloat look_horizontal_or_vertical(float a, float ratio) {\\n  // ratio controls the ratio between being horizontal to (vertical + horizontal)\\n  // if ratio is set to 0.5 then it is 50%, 50%.\\n  // when using a higher ratio e.g. 0.75 the result would\\n  // likely be more horizontal than vertical.\\n\\n  float b = positive_angle(a);\\n\\n  return\\n    (b < (      ratio) * HALF_PI) ? 0.0 :\\n    (b < (2.0 - ratio) * HALF_PI) ? -HALF_PI :\\n    (b < (2.0 + ratio) * HALF_PI) ? 0.0 :\\n    (b < (4.0 - ratio) * HALF_PI) ? HALF_PI :\\n                                    0.0;\\n}\\n\\nfloat roundTo(float a, float b) {\\n  return float(b * floor((a + 0.5 * b) / b));\\n}\\n\\nfloat look_round_n_directions(float a, int n) {\\n  float b = positive_angle(a);\\n  float div = TWO_PI / float(n);\\n  float c = roundTo(b, div);\\n  return look_upwards(c);\\n}\\n\\nfloat applyAlignOption(float rawAngle, float delta) {\\n  return\\n    (option >  2) ? look_round_n_directions(rawAngle + delta, option) :       // option 3-n: round to n directions\\n    (option == 2) ? look_horizontal_or_vertical(rawAngle + delta, hv_ratio) : // horizontal or vertical\\n    (option == 1) ? rawAngle + delta :       // use free angle, and flip to align with one direction of the axis\\n    (option == 0) ? look_upwards(rawAngle) : // use free angle, and stay upwards\\n    (option ==-1) ? 0.0 :                    // useful for backward compatibility, all texts remains horizontal\\n                    rawAngle;                // otherwise return back raw input angle\\n}\\n\\nbool isAxisTitle = (axis.x == 0.0) &&\\n                   (axis.y == 0.0) &&\\n                   (axis.z == 0.0);\\n\\nvoid main() {\\n  //Compute world offset\\n  float axisDistance = position.z;\\n  vec3 dataPosition = axisDistance * axis + offset;\\n\\n  float beta = angle; // i.e. user defined attributes for each tick\\n\\n  float axisAngle;\\n  float clipAngle;\\n  float flip;\\n\\n  if (enableAlign) {\\n    axisAngle = (isAxisTitle) ? HALF_PI :\\n                      computeViewAngle(dataPosition, dataPosition + axis);\\n    clipAngle = computeViewAngle(dataPosition, dataPosition + alignDir);\\n\\n    axisAngle += (sin(axisAngle) < 0.0) ? PI : 0.0;\\n    clipAngle += (sin(clipAngle) < 0.0) ? PI : 0.0;\\n\\n    flip = (dot(vec2(cos(axisAngle), sin(axisAngle)),\\n                vec2(sin(clipAngle),-cos(clipAngle))) > 0.0) ? 1.0 : 0.0;\\n\\n    beta += applyAlignOption(clipAngle, flip * PI);\\n  }\\n\\n  //Compute plane offset\\n  vec2 planeCoord = position.xy * pixelScale;\\n\\n  mat2 planeXform = scale * mat2(\\n     cos(beta), sin(beta),\\n    -sin(beta), cos(beta)\\n  );\\n\\n  vec2 viewOffset = 2.0 * planeXform * planeCoord / resolution;\\n\\n  //Compute clip position\\n  vec3 clipPosition = project(dataPosition);\\n\\n  //Apply text offset in clip coordinates\\n  clipPosition += vec3(viewOffset, 0.0);\\n\\n  //Done\\n  gl_Position = vec4(clipPosition, 1.0);\\n}\"]);var textFrag=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nuniform vec4 color;\\nvoid main() {\\n  gl_FragColor = color;\\n}\"]);exports.f=function(gl){return createShader(gl,textVert,textFrag,null,[{name:'position',type:'vec3'}]);};var bgVert=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position;\\nattribute vec3 normal;\\n\\nuniform mat4 model, view, projection;\\nuniform vec3 enable;\\nuniform vec3 bounds[2];\\n\\nvarying vec3 colorChannel;\\n\\nvoid main() {\\n\\n  vec3 signAxis = sign(bounds[1] - bounds[0]);\\n\\n  vec3 realNormal = signAxis * normal;\\n\\n  if(dot(realNormal, enable) > 0.0) {\\n    vec3 minRange = min(bounds[0], bounds[1]);\\n    vec3 maxRange = max(bounds[0], bounds[1]);\\n    vec3 nPosition = mix(minRange, maxRange, 0.5 * (position + 1.0));\\n    gl_Position = projection * view * model * vec4(nPosition, 1.0);\\n  } else {\\n    gl_Position = vec4(0,0,0,0);\\n  }\\n\\n  colorChannel = abs(realNormal);\\n}\"]);var bgFrag=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nuniform vec4 colors[3];\\n\\nvarying vec3 colorChannel;\\n\\nvoid main() {\\n  gl_FragColor = colorChannel.x * colors[0] +\\n                 colorChannel.y * colors[1] +\\n                 colorChannel.z * colors[2];\\n}\"]);exports.bg=function(gl){return createShader(gl,bgVert,bgFrag,null,[{name:'position',type:'vec3'},{name:'normal',type:'vec3'}]);};/***/},/***/9557:/***/function(module,__unused_webpack_exports,__nested_webpack_require_264175__){\"use strict\";module.exports=createTextSprites;var createBuffer=__nested_webpack_require_264175__(5827);var createVAO=__nested_webpack_require_264175__(2944);var vectorizeText=__nested_webpack_require_264175__(875);var createShader=__nested_webpack_require_264175__(1943)/* .text */.f;var globals=window||process.global||{};var __TEXT_CACHE=globals.__TEXT_CACHE||{};globals.__TEXT_CACHE={};//Vertex buffer format for text is:\n//\n/// [x,y,z] = Spatial coordinate\n//\nvar VERTEX_SIZE=3;function TextSprites(gl,shader,buffer,vao){this.gl=gl;this.shader=shader;this.buffer=buffer;this.vao=vao;this.tickOffset=this.tickCount=this.labelOffset=this.labelCount=null;}var proto=TextSprites.prototype;//Bind textures for rendering\nvar SHAPE=[0,0];proto.bind=function(model,view,projection,pixelScale){this.vao.bind();this.shader.bind();var uniforms=this.shader.uniforms;uniforms.model=model;uniforms.view=view;uniforms.projection=projection;uniforms.pixelScale=pixelScale;SHAPE[0]=this.gl.drawingBufferWidth;SHAPE[1]=this.gl.drawingBufferHeight;this.shader.uniforms.resolution=SHAPE;};proto.unbind=function(){this.vao.unbind();};proto.update=function(bounds,labels,labelFont,ticks,tickFont){var data=[];function addItem(t,text,font,size,lineSpacing,styletags){var fontcache=__TEXT_CACHE[font];if(!fontcache){fontcache=__TEXT_CACHE[font]={};}var mesh=fontcache[text];if(!mesh){mesh=fontcache[text]=tryVectorizeText(text,{triangles:true,font:font,textAlign:'center',textBaseline:'middle',lineSpacing:lineSpacing,styletags:styletags});}var scale=(size||12)/12;var positions=mesh.positions;var cells=mesh.cells;for(var i=0,nc=cells.length;i<nc;++i){var c=cells[i];for(var j=2;j>=0;--j){var p=positions[c[j]];data.push(scale*p[0],-scale*p[1],t);}}}//Generate sprites for all 3 axes, store data in texture atlases\nvar tickOffset=[0,0,0];var tickCount=[0,0,0];var labelOffset=[0,0,0];var labelCount=[0,0,0];var lineSpacing=1.25;var styletags={breaklines:true,bolds:true,italics:true,subscripts:true,superscripts:true};for(var d=0;d<3;++d){//Generate label\nlabelOffset[d]=data.length/VERTEX_SIZE|0;addItem(0.5*(bounds[0][d]+bounds[1][d]),labels[d],labelFont[d],12,// labelFontSize\nlineSpacing,styletags);labelCount[d]=(data.length/VERTEX_SIZE|0)-labelOffset[d];//Generate sprites for tick marks\ntickOffset[d]=data.length/VERTEX_SIZE|0;for(var i=0;i<ticks[d].length;++i){if(!ticks[d][i].text){continue;}addItem(ticks[d][i].x,ticks[d][i].text,ticks[d][i].font||tickFont,ticks[d][i].fontSize||12,lineSpacing,styletags);}tickCount[d]=(data.length/VERTEX_SIZE|0)-tickOffset[d];}this.buffer.update(data);this.tickOffset=tickOffset;this.tickCount=tickCount;this.labelOffset=labelOffset;this.labelCount=labelCount;};//Draws the tick marks for an axis\nproto.drawTicks=function(d,scale,angle,offset,color,axis,alignDir,alignOpt){if(!this.tickCount[d]){return;}this.shader.uniforms.axis=axis;this.shader.uniforms.color=color;this.shader.uniforms.angle=angle;this.shader.uniforms.scale=scale;this.shader.uniforms.offset=offset;this.shader.uniforms.alignDir=alignDir;this.shader.uniforms.alignOpt=alignOpt;this.vao.draw(this.gl.TRIANGLES,this.tickCount[d],this.tickOffset[d]);};//Draws the text label for an axis\nproto.drawLabel=function(d,scale,angle,offset,color,axis,alignDir,alignOpt){if(!this.labelCount[d]){return;}this.shader.uniforms.axis=axis;this.shader.uniforms.color=color;this.shader.uniforms.angle=angle;this.shader.uniforms.scale=scale;this.shader.uniforms.offset=offset;this.shader.uniforms.alignDir=alignDir;this.shader.uniforms.alignOpt=alignOpt;this.vao.draw(this.gl.TRIANGLES,this.labelCount[d],this.labelOffset[d]);};//Releases all resources attached to this object\nproto.dispose=function(){this.shader.dispose();this.vao.dispose();this.buffer.dispose();};function tryVectorizeText(text,options){try{return vectorizeText(text,options);}catch(e){console.warn('error vectorizing text:\"'+text+'\" error:',e);return{cells:[],positions:[]};}}function createTextSprites(gl,bounds,labels,labelFont,ticks,tickFont){var buffer=createBuffer(gl);var vao=createVAO(gl,[{\"buffer\":buffer,\"size\":3}]);var shader=createShader(gl);shader.attributes.position.location=0;var result=new TextSprites(gl,shader,buffer,vao);result.update(bounds,labels,labelFont,ticks,tickFont);return result;}/***/},/***/8468:/***/function(__unused_webpack_module,exports){\"use strict\";exports.create=defaultTicks;exports.equal=ticksEqual;function prettyPrint(spacing,i){var stepStr=spacing+\"\";var u=stepStr.indexOf(\".\");var sigFigs=0;if(u>=0){sigFigs=stepStr.length-u-1;}var shift=Math.pow(10,sigFigs);var x=Math.round(spacing*i*shift);var xstr=x+\"\";if(xstr.indexOf(\"e\")>=0){return xstr;}var xi=x/shift,xf=x%shift;if(x<0){xi=-Math.ceil(xi)|0;xf=-xf|0;}else{xi=Math.floor(xi)|0;xf=xf|0;}var xis=\"\"+xi;if(x<0){xis=\"-\"+xis;}if(sigFigs){var xs=\"\"+xf;while(xs.length<sigFigs){xs=\"0\"+xs;}return xis+\".\"+xs;}else{return xis;}}function defaultTicks(bounds,tickSpacing){var array=[];for(var d=0;d<3;++d){var ticks=[];var m=0.5*(bounds[0][d]+bounds[1][d]);for(var t=0;t*tickSpacing[d]<=bounds[1][d];++t){ticks.push({x:t*tickSpacing[d],text:prettyPrint(tickSpacing[d],t)});}for(var t=-1;t*tickSpacing[d]>=bounds[0][d];--t){ticks.push({x:t*tickSpacing[d],text:prettyPrint(tickSpacing[d],t)});}array.push(ticks);}return array;}function ticksEqual(ticksA,ticksB){for(var i=0;i<3;++i){if(ticksA[i].length!==ticksB[i].length){return false;}for(var j=0;j<ticksA[i].length;++j){var a=ticksA[i][j];var b=ticksB[i][j];if(a.x!==b.x||a.text!==b.text||a.font!==b.font||a.fontColor!==b.fontColor||a.fontSize!==b.fontSize||a.dx!==b.dx||a.dy!==b.dy){return false;}}}return true;}/***/},/***/2771:/***/function(module,__unused_webpack_exports,__nested_webpack_require_269805__){\"use strict\";module.exports=axesProperties;var getPlanes=__nested_webpack_require_269805__(5795);var splitPoly=__nested_webpack_require_269805__(4670);var cubeParams=__nested_webpack_require_269805__(2864);var m4mul=__nested_webpack_require_269805__(104);var m4transpose=__nested_webpack_require_269805__(2142);var v4transformMat4=__nested_webpack_require_269805__(6342);var identity=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);var mvp=new Float32Array(16);function AxesRange3D(lo,hi,pixelsPerDataUnit){this.lo=lo;this.hi=hi;this.pixelsPerDataUnit=pixelsPerDataUnit;}var SCRATCH_P=[0,0,0,1];var SCRATCH_Q=[0,0,0,1];function gradient(result,M,v,width,height){for(var i=0;i<3;++i){var p=SCRATCH_P;var q=SCRATCH_Q;for(var j=0;j<3;++j){q[j]=p[j]=v[j];}q[3]=p[3]=1;q[i]+=1;v4transformMat4(q,q,M);if(q[3]<0){result[i]=Infinity;}p[i]-=1;v4transformMat4(p,p,M);if(p[3]<0){result[i]=Infinity;}var dx=(p[0]/p[3]-q[0]/q[3])*width;var dy=(p[1]/p[3]-q[1]/q[3])*height;result[i]=0.25*Math.sqrt(dx*dx+dy*dy);}return result;}var RANGES=[new AxesRange3D(Infinity,-Infinity,Infinity),new AxesRange3D(Infinity,-Infinity,Infinity),new AxesRange3D(Infinity,-Infinity,Infinity)];var SCRATCH_X=[0,0,0];function axesProperties(axes,camera,width,height,params){var model=camera.model||identity;var view=camera.view||identity;var projection=camera.projection||identity;var isOrtho=camera._ortho||false;var bounds=axes.bounds;var params=params||cubeParams(model,view,projection,bounds,isOrtho);var axis=params.axis;m4mul(mvp,view,model);m4mul(mvp,projection,mvp);//Calculate the following properties for each axis:\n//\n// * lo - start of visible range for each axis in tick coordinates\n// * hi - end of visible range for each axis in tick coordinates\n// * ticksPerPixel - pixel density of tick marks for the axis\n//\nvar ranges=RANGES;for(var i=0;i<3;++i){ranges[i].lo=Infinity;ranges[i].hi=-Infinity;ranges[i].pixelsPerDataUnit=Infinity;}//Compute frustum planes, intersect with box\nvar frustum=getPlanes(m4transpose(mvp,mvp));m4transpose(mvp,mvp);//Loop over vertices of viewable box\nfor(var d=0;d<3;++d){var u=(d+1)%3;var v=(d+2)%3;var x=SCRATCH_X;i_loop:for(var i=0;i<2;++i){var poly=[];if(axis[d]<0===!!i){continue;}x[d]=bounds[i][d];for(var j=0;j<2;++j){x[u]=bounds[j^i][u];for(var k=0;k<2;++k){x[v]=bounds[k^j^i][v];poly.push(x.slice());}}var Q=isOrtho?5:4;for(var j=Q;j===Q;++j){// Note: using only near plane here (& for orthographic projection we use the far).\nif(poly.length===0){continue i_loop;}poly=splitPoly.positive(poly,frustum[j]);}//Loop over vertices of polygon to find extremal points\nfor(var j=0;j<poly.length;++j){var v=poly[j];var grad=gradient(SCRATCH_X,mvp,v,width,height);for(var k=0;k<3;++k){ranges[k].lo=Math.min(ranges[k].lo,v[k]);ranges[k].hi=Math.max(ranges[k].hi,v[k]);if(k!==d){ranges[k].pixelsPerDataUnit=Math.min(ranges[k].pixelsPerDataUnit,Math.abs(grad[k]));}}}}}return ranges;}/***/},/***/5827:/***/function(module,__unused_webpack_exports,__nested_webpack_require_272700__){\"use strict\";var pool=__nested_webpack_require_272700__(5306);var ops=__nested_webpack_require_272700__(7498);var ndarray=__nested_webpack_require_272700__(5050);var SUPPORTED_TYPES=[\"uint8\",\"uint8_clamped\",\"uint16\",\"uint32\",\"int8\",\"int16\",\"int32\",\"float32\"];function GLBuffer(gl,type,handle,length,usage){this.gl=gl;this.type=type;this.handle=handle;this.length=length;this.usage=usage;}var proto=GLBuffer.prototype;proto.bind=function(){this.gl.bindBuffer(this.type,this.handle);};proto.unbind=function(){this.gl.bindBuffer(this.type,null);};proto.dispose=function(){this.gl.deleteBuffer(this.handle);};function updateTypeArray(gl,type,len,usage,data,offset){var dataLen=data.length*data.BYTES_PER_ELEMENT;if(offset<0){gl.bufferData(type,data,usage);return dataLen;}if(dataLen+offset>len){throw new Error(\"gl-buffer: If resizing buffer, must not specify offset\");}gl.bufferSubData(type,offset,data);return len;}function makeScratchTypeArray(array,dtype){var res=pool.malloc(array.length,dtype);var n=array.length;for(var i=0;i<n;++i){res[i]=array[i];}return res;}function isPacked(shape,stride){var n=1;for(var i=stride.length-1;i>=0;--i){if(stride[i]!==n){return false;}n*=shape[i];}return true;}proto.update=function(array,offset){if(typeof offset!==\"number\"){offset=-1;}this.bind();if(typeof array===\"object\"&&typeof array.shape!==\"undefined\"){//ndarray\nvar dtype=array.dtype;if(SUPPORTED_TYPES.indexOf(dtype)<0){dtype=\"float32\";}if(this.type===this.gl.ELEMENT_ARRAY_BUFFER){var ext=gl.getExtension('OES_element_index_uint');if(ext&&dtype!==\"uint16\"){dtype=\"uint32\";}else{dtype=\"uint16\";}}if(dtype===array.dtype&&isPacked(array.shape,array.stride)){if(array.offset===0&&array.data.length===array.shape[0]){this.length=updateTypeArray(this.gl,this.type,this.length,this.usage,array.data,offset);}else{this.length=updateTypeArray(this.gl,this.type,this.length,this.usage,array.data.subarray(array.offset,array.shape[0]),offset);}}else{var tmp=pool.malloc(array.size,dtype);var ndt=ndarray(tmp,array.shape);ops.assign(ndt,array);if(offset<0){this.length=updateTypeArray(this.gl,this.type,this.length,this.usage,tmp,offset);}else{this.length=updateTypeArray(this.gl,this.type,this.length,this.usage,tmp.subarray(0,array.size),offset);}pool.free(tmp);}}else if(Array.isArray(array)){//Vanilla array\nvar t;if(this.type===this.gl.ELEMENT_ARRAY_BUFFER){t=makeScratchTypeArray(array,\"uint16\");}else{t=makeScratchTypeArray(array,\"float32\");}if(offset<0){this.length=updateTypeArray(this.gl,this.type,this.length,this.usage,t,offset);}else{this.length=updateTypeArray(this.gl,this.type,this.length,this.usage,t.subarray(0,array.length),offset);}pool.free(t);}else if(typeof array===\"object\"&&typeof array.length===\"number\"){//Typed array\nthis.length=updateTypeArray(this.gl,this.type,this.length,this.usage,array,offset);}else if(typeof array===\"number\"||array===undefined){//Number/default\nif(offset>=0){throw new Error(\"gl-buffer: Cannot specify offset when resizing buffer\");}array=array|0;if(array<=0){array=1;}this.gl.bufferData(this.type,array|0,this.usage);this.length=array;}else{//Error, case should not happen\nthrow new Error(\"gl-buffer: Invalid data type\");}};function createBuffer(gl,data,type,usage){type=type||gl.ARRAY_BUFFER;usage=usage||gl.DYNAMIC_DRAW;if(type!==gl.ARRAY_BUFFER&&type!==gl.ELEMENT_ARRAY_BUFFER){throw new Error(\"gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER\");}if(usage!==gl.DYNAMIC_DRAW&&usage!==gl.STATIC_DRAW&&usage!==gl.STREAM_DRAW){throw new Error(\"gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW\");}var handle=gl.createBuffer();var result=new GLBuffer(gl,type,handle,0,usage);result.update(data);return result;}module.exports=createBuffer;/***/},/***/1140:/***/function(module,__unused_webpack_exports,__nested_webpack_require_276522__){\"use strict\";var vec3=__nested_webpack_require_276522__(2858);module.exports=function(vectorfield,bounds){var positions=vectorfield.positions;var vectors=vectorfield.vectors;var geo={positions:[],vertexIntensity:[],vertexIntensityBounds:vectorfield.vertexIntensityBounds,vectors:[],cells:[],coneOffset:vectorfield.coneOffset,colormap:vectorfield.colormap};if(vectorfield.positions.length===0){if(bounds){bounds[0]=[0,0,0];bounds[1]=[0,0,0];}return geo;}// Compute bounding box for the dataset.\n// Compute maximum velocity for the dataset to use for scaling the cones.\nvar maxNorm=0;var minX=Infinity,maxX=-Infinity;var minY=Infinity,maxY=-Infinity;var minZ=Infinity,maxZ=-Infinity;var p2=null;var u2=null;var positionVectors=[];var vectorScale=Infinity;var skipIt=false;for(var i=0;i<positions.length;i++){var p=positions[i];minX=Math.min(p[0],minX);maxX=Math.max(p[0],maxX);minY=Math.min(p[1],minY);maxY=Math.max(p[1],maxY);minZ=Math.min(p[2],minZ);maxZ=Math.max(p[2],maxZ);var u=vectors[i];if(vec3.length(u)>maxNorm){maxNorm=vec3.length(u);}if(i){// Find vector scale [w/ units of time] using \"successive\" positions\n// (not \"adjacent\" with would be O(n^2)),\n//\n// The vector scale corresponds to the minimum \"time\" to travel across two\n// two adjacent positions at the average velocity of those two adjacent positions\nvar q=2*vec3.distance(p2,p)/(vec3.length(u2)+vec3.length(u));if(q){vectorScale=Math.min(vectorScale,q);skipIt=false;}else{skipIt=true;}}if(!skipIt){p2=p;u2=u;}positionVectors.push(u);}var minV=[minX,minY,minZ];var maxV=[maxX,maxY,maxZ];if(bounds){bounds[0]=minV;bounds[1]=maxV;}if(maxNorm===0){maxNorm=1;}// Inverted max norm would map vector with norm maxNorm to 1 coord space units in length\nvar invertedMaxNorm=1/maxNorm;if(!isFinite(vectorScale)){vectorScale=1.0;}geo.vectorScale=vectorScale;var coneScale=vectorfield.coneSize||0.5;if(vectorfield.absoluteConeSize){coneScale=vectorfield.absoluteConeSize*invertedMaxNorm;}geo.coneScale=coneScale;// Build the cone model.\nfor(var i=0,j=0;i<positions.length;i++){var p=positions[i];var x=p[0],y=p[1],z=p[2];var d=positionVectors[i];var intensity=vec3.length(d)*invertedMaxNorm;for(var k=0,l=8;k<l;k++){geo.positions.push([x,y,z,j++]);geo.positions.push([x,y,z,j++]);geo.positions.push([x,y,z,j++]);geo.positions.push([x,y,z,j++]);geo.positions.push([x,y,z,j++]);geo.positions.push([x,y,z,j++]);geo.vectors.push(d);geo.vectors.push(d);geo.vectors.push(d);geo.vectors.push(d);geo.vectors.push(d);geo.vectors.push(d);geo.vertexIntensity.push(intensity,intensity,intensity);geo.vertexIntensity.push(intensity,intensity,intensity);var m=geo.positions.length;geo.cells.push([m-6,m-5,m-4],[m-3,m-2,m-1]);}}return geo;};var shaders=__nested_webpack_require_276522__(7234);module.exports.createMesh=__nested_webpack_require_276522__(5028);module.exports.createConeMesh=function(gl,params){return module.exports.createMesh(gl,params,{shaders:shaders,traceType:'cone'});};/***/},/***/5028:/***/function(module,__unused_webpack_exports,__nested_webpack_require_279496__){\"use strict\";var createShader=__nested_webpack_require_279496__(5158);var createBuffer=__nested_webpack_require_279496__(5827);var createVAO=__nested_webpack_require_279496__(2944);var createTexture=__nested_webpack_require_279496__(8931);var multiply=__nested_webpack_require_279496__(104);var invert=__nested_webpack_require_279496__(7437);var ndarray=__nested_webpack_require_279496__(5050);var colormap=__nested_webpack_require_279496__(9156);var IDENTITY=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function VectorMesh(gl,texture,triShader,pickShader,trianglePositions,triangleVectors,triangleIds,triangleColors,triangleUVs,triangleVAO,traceType){this.gl=gl;this.pixelRatio=1;this.cells=[];this.positions=[];this.intensity=[];this.texture=texture;this.dirty=true;this.triShader=triShader;this.pickShader=pickShader;this.trianglePositions=trianglePositions;this.triangleVectors=triangleVectors;this.triangleColors=triangleColors;this.triangleUVs=triangleUVs;this.triangleIds=triangleIds;this.triangleVAO=triangleVAO;this.triangleCount=0;this.pickId=1;this.bounds=[[Infinity,Infinity,Infinity],[-Infinity,-Infinity,-Infinity]];this.clipBounds=[[-Infinity,-Infinity,-Infinity],[Infinity,Infinity,Infinity]];this.lightPosition=[1e5,1e5,0];this.ambientLight=0.8;this.diffuseLight=0.8;this.specularLight=2.0;this.roughness=0.5;this.fresnel=1.5;this.opacity=1;this.traceType=traceType;this.tubeScale=1;// used in streamtube\nthis.coneScale=2;// used in cone\nthis.vectorScale=1;// used in cone\nthis.coneOffset=0.25;// used in cone\nthis._model=IDENTITY;this._view=IDENTITY;this._projection=IDENTITY;this._resolution=[1,1];}var proto=VectorMesh.prototype;proto.isOpaque=function(){return this.opacity>=1;};proto.isTransparent=function(){return this.opacity<1;};proto.pickSlots=1;proto.setPickBase=function(id){this.pickId=id;};function genColormap(param){var colors=colormap({colormap:param,nshades:256,format:'rgba'});var result=new Uint8Array(256*4);for(var i=0;i<256;++i){var c=colors[i];for(var j=0;j<3;++j){result[4*i+j]=c[j];}result[4*i+3]=c[3]*255;}return ndarray(result,[256,256,4],[4,0,1]);}function takeZComponent(array){var n=array.length;var result=new Array(n);for(var i=0;i<n;++i){result[i]=array[i][2];}return result;}proto.update=function(params){params=params||{};var gl=this.gl;this.dirty=true;if('lightPosition'in params){this.lightPosition=params.lightPosition;}if('opacity'in params){this.opacity=params.opacity;}if('ambient'in params){this.ambientLight=params.ambient;}if('diffuse'in params){this.diffuseLight=params.diffuse;}if('specular'in params){this.specularLight=params.specular;}if('roughness'in params){this.roughness=params.roughness;}if('fresnel'in params){this.fresnel=params.fresnel;}// use in streamtube\nif(params.tubeScale!==undefined){this.tubeScale=params.tubeScale;}// used in cone\nif(params.vectorScale!==undefined){this.vectorScale=params.vectorScale;}if(params.coneScale!==undefined){this.coneScale=params.coneScale;}if(params.coneOffset!==undefined){this.coneOffset=params.coneOffset;}if(params.colormap){this.texture.shape=[256,256];this.texture.minFilter=gl.LINEAR_MIPMAP_LINEAR;this.texture.magFilter=gl.LINEAR;this.texture.setPixels(genColormap(params.colormap));this.texture.generateMipmap();}var cells=params.cells;var positions=params.positions;var vectors=params.vectors;if(!positions||!cells||!vectors){return;}var tPos=[];var tVec=[];var tCol=[];var tUVs=[];var tIds=[];//Save geometry data for picking calculations\nthis.cells=cells;this.positions=positions;this.vectors=vectors;//Compute colors\nvar meshColor=params.meshColor||[1,1,1,1];//UVs\nvar vertexIntensity=params.vertexIntensity;var intensityLo=Infinity;var intensityHi=-Infinity;if(vertexIntensity){if(params.vertexIntensityBounds){intensityLo=+params.vertexIntensityBounds[0];intensityHi=+params.vertexIntensityBounds[1];}else{for(var i=0;i<vertexIntensity.length;++i){var f=vertexIntensity[i];intensityLo=Math.min(intensityLo,f);intensityHi=Math.max(intensityHi,f);}}}else{for(var i=0;i<positions.length;++i){var f=positions[i][2];intensityLo=Math.min(intensityLo,f);intensityHi=Math.max(intensityHi,f);}}if(vertexIntensity){this.intensity=vertexIntensity;}else{this.intensity=takeZComponent(positions);}//Update bounds\nthis.bounds=[[Infinity,Infinity,Infinity],[-Infinity,-Infinity,-Infinity]];for(var i=0;i<positions.length;++i){var p=positions[i];for(var j=0;j<3;++j){if(isNaN(p[j])||!isFinite(p[j])){continue;}this.bounds[0][j]=Math.min(this.bounds[0][j],p[j]);this.bounds[1][j]=Math.max(this.bounds[1][j],p[j]);}}//Pack cells into buffers\nvar triangleCount=0;fill_loop:for(var i=0;i<cells.length;++i){var cell=cells[i];switch(cell.length){case 3://Check NaNs\nfor(var j=0;j<3;++j){var v=cell[j];var p=positions[v];for(var k=0;k<3;++k){if(isNaN(p[k])||!isFinite(p[k])){continue fill_loop;}}}for(var j=0;j<3;++j){var v=cell[2-j];var p=positions[v];tPos.push(p[0],p[1],p[2],p[3]);var w=vectors[v];tVec.push(w[0],w[1],w[2],w[3]||0);var c=meshColor;if(c.length===3){tCol.push(c[0],c[1],c[2],1);}else{tCol.push(c[0],c[1],c[2],c[3]);}var uv;if(vertexIntensity){uv=[(vertexIntensity[v]-intensityLo)/(intensityHi-intensityLo),0];}else{uv=[(p[2]-intensityLo)/(intensityHi-intensityLo),0];}tUVs.push(uv[0],uv[1]);tIds.push(i);}triangleCount+=1;break;default:break;}}this.triangleCount=triangleCount;this.trianglePositions.update(tPos);this.triangleVectors.update(tVec);this.triangleColors.update(tCol);this.triangleUVs.update(tUVs);this.triangleIds.update(new Uint32Array(tIds));};proto.drawTransparent=proto.draw=function(params){params=params||{};var gl=this.gl;var model=params.model||IDENTITY;var view=params.view||IDENTITY;var projection=params.projection||IDENTITY;var clipBounds=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]];for(var i=0;i<3;++i){clipBounds[0][i]=Math.max(clipBounds[0][i],this.clipBounds[0][i]);clipBounds[1][i]=Math.min(clipBounds[1][i],this.clipBounds[1][i]);}var uniforms={model:model,view:view,projection:projection,inverseModel:IDENTITY.slice(),clipBounds:clipBounds,kambient:this.ambientLight,kdiffuse:this.diffuseLight,kspecular:this.specularLight,roughness:this.roughness,fresnel:this.fresnel,eyePosition:[0,0,0],lightPosition:[0,0,0],opacity:this.opacity,tubeScale:this.tubeScale,vectorScale:this.vectorScale,coneScale:this.coneScale,coneOffset:this.coneOffset,texture:0};uniforms.inverseModel=invert(uniforms.inverseModel,uniforms.model);gl.disable(gl.CULL_FACE);this.texture.bind(0);var invCameraMatrix=new Array(16);multiply(invCameraMatrix,uniforms.view,uniforms.model);multiply(invCameraMatrix,uniforms.projection,invCameraMatrix);invert(invCameraMatrix,invCameraMatrix);for(var i=0;i<3;++i){uniforms.eyePosition[i]=invCameraMatrix[12+i]/invCameraMatrix[15];}var w=invCameraMatrix[15];for(var i=0;i<3;++i){w+=this.lightPosition[i]*invCameraMatrix[4*i+3];}for(var i=0;i<3;++i){var s=invCameraMatrix[12+i];for(var j=0;j<3;++j){s+=invCameraMatrix[4*j+i]*this.lightPosition[j];}uniforms.lightPosition[i]=s/w;}if(this.triangleCount>0){var shader=this.triShader;shader.bind();shader.uniforms=uniforms;this.triangleVAO.bind();gl.drawArrays(gl.TRIANGLES,0,this.triangleCount*3);this.triangleVAO.unbind();}};proto.drawPick=function(params){params=params||{};var gl=this.gl;var model=params.model||IDENTITY;var view=params.view||IDENTITY;var projection=params.projection||IDENTITY;var clipBounds=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]];for(var i=0;i<3;++i){clipBounds[0][i]=Math.max(clipBounds[0][i],this.clipBounds[0][i]);clipBounds[1][i]=Math.min(clipBounds[1][i],this.clipBounds[1][i]);}//Save camera parameters\nthis._model=[].slice.call(model);this._view=[].slice.call(view);this._projection=[].slice.call(projection);this._resolution=[gl.drawingBufferWidth,gl.drawingBufferHeight];var uniforms={model:model,view:view,projection:projection,clipBounds:clipBounds,tubeScale:this.tubeScale,vectorScale:this.vectorScale,coneScale:this.coneScale,coneOffset:this.coneOffset,pickId:this.pickId/255.0};var shader=this.pickShader;shader.bind();shader.uniforms=uniforms;if(this.triangleCount>0){this.triangleVAO.bind();gl.drawArrays(gl.TRIANGLES,0,this.triangleCount*3);this.triangleVAO.unbind();}};proto.pick=function(pickData){if(!pickData){return null;}if(pickData.id!==this.pickId){return null;}var cellId=pickData.value[0]+256*pickData.value[1]+65536*pickData.value[2];var cell=this.cells[cellId];var pos=this.positions[cell[1]].slice(0,3);var result={position:pos,dataCoordinate:pos,index:Math.floor(cell[1]/48)};if(this.traceType==='cone'){result.index=Math.floor(cell[1]/48);}else if(this.traceType==='streamtube'){result.intensity=this.intensity[cell[1]];result.velocity=this.vectors[cell[1]].slice(0,3);result.divergence=this.vectors[cell[1]][3];result.index=cellId;}return result;};proto.dispose=function(){this.texture.dispose();this.triShader.dispose();this.pickShader.dispose();this.triangleVAO.dispose();this.trianglePositions.dispose();this.triangleVectors.dispose();this.triangleColors.dispose();this.triangleUVs.dispose();this.triangleIds.dispose();};function createMeshShader(gl,shaders){var shader=createShader(gl,shaders.meshShader.vertex,shaders.meshShader.fragment,null,shaders.meshShader.attributes);shader.attributes.position.location=0;shader.attributes.color.location=2;shader.attributes.uv.location=3;shader.attributes.vector.location=4;return shader;}function createPickShader(gl,shaders){var shader=createShader(gl,shaders.pickShader.vertex,shaders.pickShader.fragment,null,shaders.pickShader.attributes);shader.attributes.position.location=0;shader.attributes.id.location=1;shader.attributes.vector.location=4;return shader;}function createVectorMesh(gl,params,opts){var shaders=opts.shaders;if(arguments.length===1){params=gl;gl=params.gl;}var triShader=createMeshShader(gl,shaders);var pickShader=createPickShader(gl,shaders);var meshTexture=createTexture(gl,ndarray(new Uint8Array([255,255,255,255]),[1,1,4]));meshTexture.generateMipmap();meshTexture.minFilter=gl.LINEAR_MIPMAP_LINEAR;meshTexture.magFilter=gl.LINEAR;var trianglePositions=createBuffer(gl);var triangleVectors=createBuffer(gl);var triangleColors=createBuffer(gl);var triangleUVs=createBuffer(gl);var triangleIds=createBuffer(gl);var triangleVAO=createVAO(gl,[{buffer:trianglePositions,type:gl.FLOAT,size:4},{buffer:triangleIds,type:gl.UNSIGNED_BYTE,size:4,normalized:true},{buffer:triangleColors,type:gl.FLOAT,size:4},{buffer:triangleUVs,type:gl.FLOAT,size:2},{buffer:triangleVectors,type:gl.FLOAT,size:4}]);var mesh=new VectorMesh(gl,meshTexture,triShader,pickShader,trianglePositions,triangleVectors,triangleIds,triangleColors,triangleUVs,triangleVAO,opts.traceType||'cone');mesh.update(params);return mesh;}module.exports=createVectorMesh;/***/},/***/7234:/***/function(__unused_webpack_module,exports,__nested_webpack_require_290103__){var glslify=__nested_webpack_require_290103__(6832);var triVertSrc=glslify([\"precision highp float;\\n\\nprecision highp float;\\n#define GLSLIFY 1\\n\\nvec3 getOrthogonalVector(vec3 v) {\\n  // Return up-vector for only-z vector.\\n  // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\\n  // From the above if-statement we have ||a|| > 0  U  ||b|| > 0.\\n  // Assign z = 0, x = -b, y = a:\\n  // a*-b + b*a + c*0 = -ba + ba + 0 = 0\\n  if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\\n    return normalize(vec3(-v.y, v.x, 0.0));\\n  } else {\\n    return normalize(vec3(0.0, v.z, -v.y));\\n  }\\n}\\n\\n// Calculate the cone vertex and normal at the given index.\\n//\\n// The returned vertex is for a cone with its top at origin and height of 1.0,\\n// pointing in the direction of the vector attribute.\\n//\\n// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices.\\n// These vertices are used to make up the triangles of the cone by the following:\\n//   segment + 0 top vertex\\n//   segment + 1 perimeter vertex a+1\\n//   segment + 2 perimeter vertex a\\n//   segment + 3 center base vertex\\n//   segment + 4 perimeter vertex a\\n//   segment + 5 perimeter vertex a+1\\n// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment.\\n// To go from index to segment, floor(index / 6)\\n// To go from segment to angle, 2*pi * (segment/segmentCount)\\n// To go from index to segment index, index - (segment*6)\\n//\\nvec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) {\\n\\n  const float segmentCount = 8.0;\\n\\n  float index = rawIndex - floor(rawIndex /\\n    (segmentCount * 6.0)) *\\n    (segmentCount * 6.0);\\n\\n  float segment = floor(0.001 + index/6.0);\\n  float segmentIndex = index - (segment*6.0);\\n\\n  normal = -normalize(d);\\n\\n  if (segmentIndex > 2.99 && segmentIndex < 3.01) {\\n    return mix(vec3(0.0), -d, coneOffset);\\n  }\\n\\n  float nextAngle = (\\n    (segmentIndex > 0.99 &&  segmentIndex < 1.01) ||\\n    (segmentIndex > 4.99 &&  segmentIndex < 5.01)\\n  ) ? 1.0 : 0.0;\\n  float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount);\\n\\n  vec3 v1 = mix(d, vec3(0.0), coneOffset);\\n  vec3 v2 = v1 - d;\\n\\n  vec3 u = getOrthogonalVector(d);\\n  vec3 v = normalize(cross(u, d));\\n\\n  vec3 x = u * cos(angle) * length(d)*0.25;\\n  vec3 y = v * sin(angle) * length(d)*0.25;\\n  vec3 v3 = v2 + x + y;\\n  if (segmentIndex < 3.0) {\\n    vec3 tx = u * sin(angle);\\n    vec3 ty = v * -cos(angle);\\n    vec3 tangent = tx + ty;\\n    normal = normalize(cross(v3 - v1, tangent));\\n  }\\n\\n  if (segmentIndex == 0.0) {\\n    return mix(d, vec3(0.0), coneOffset);\\n  }\\n  return v3;\\n}\\n\\nattribute vec3 vector;\\nattribute vec4 color, position;\\nattribute vec2 uv;\\n\\nuniform float vectorScale, coneScale, coneOffset;\\nuniform mat4 model, view, projection, inverseModel;\\nuniform vec3 eyePosition, lightPosition;\\n\\nvarying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n  // Scale the vector magnitude to stay constant with\\n  // model & view changes.\\n  vec3 normal;\\n  vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector), position.w, coneOffset, normal);\\n  vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\\n\\n  //Lighting geometry parameters\\n  vec4 cameraCoordinate = view * conePosition;\\n  cameraCoordinate.xyz /= cameraCoordinate.w;\\n  f_lightDirection = lightPosition - cameraCoordinate.xyz;\\n  f_eyeDirection   = eyePosition - cameraCoordinate.xyz;\\n  f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz);\\n\\n  // vec4 m_position  = model * vec4(conePosition, 1.0);\\n  vec4 t_position  = view * conePosition;\\n  gl_Position      = projection * t_position;\\n\\n  f_color          = color;\\n  f_data           = conePosition.xyz;\\n  f_position       = position.xyz;\\n  f_uv             = uv;\\n}\\n\"]);var triFragSrc=glslify([\"#extension GL_OES_standard_derivatives : enable\\n\\nprecision highp float;\\n#define GLSLIFY 1\\n\\nfloat beckmannDistribution(float x, float roughness) {\\n  float NdotH = max(x, 0.0001);\\n  float cos2Alpha = NdotH * NdotH;\\n  float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\\n  float roughness2 = roughness * roughness;\\n  float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\\n  return exp(tan2Alpha / roughness2) / denom;\\n}\\n\\nfloat cookTorranceSpecular(\\n  vec3 lightDirection,\\n  vec3 viewDirection,\\n  vec3 surfaceNormal,\\n  float roughness,\\n  float fresnel) {\\n\\n  float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);\\n  float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);\\n\\n  //Half angle vector\\n  vec3 H = normalize(lightDirection + viewDirection);\\n\\n  //Geometric term\\n  float NdotH = max(dot(surfaceNormal, H), 0.0);\\n  float VdotH = max(dot(viewDirection, H), 0.000001);\\n  float LdotH = max(dot(lightDirection, H), 0.000001);\\n  float G1 = (2.0 * NdotH * VdotN) / VdotH;\\n  float G2 = (2.0 * NdotH * LdotN) / LdotH;\\n  float G = min(1.0, min(G1, G2));\\n  \\n  //Distribution term\\n  float D = beckmannDistribution(NdotH, roughness);\\n\\n  //Fresnel term\\n  float F = pow(1.0 - VdotN, fresnel);\\n\\n  //Multiply terms and done\\n  return  G * F * D / max(3.14159265 * VdotN, 0.000001);\\n}\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3 clipBounds[2];\\nuniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity;\\nuniform sampler2D texture;\\n\\nvarying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\\n  vec3 N = normalize(f_normal);\\n  vec3 L = normalize(f_lightDirection);\\n  vec3 V = normalize(f_eyeDirection);\\n\\n  if(gl_FrontFacing) {\\n    N = -N;\\n  }\\n\\n  float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel)));\\n  float diffuse  = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\\n\\n  vec4 surfaceColor = f_color * texture2D(texture, f_uv);\\n  vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular,  1.0);\\n\\n  gl_FragColor = litColor * opacity;\\n}\\n\"]);var pickVertSrc=glslify([\"precision highp float;\\n\\nprecision highp float;\\n#define GLSLIFY 1\\n\\nvec3 getOrthogonalVector(vec3 v) {\\n  // Return up-vector for only-z vector.\\n  // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\\n  // From the above if-statement we have ||a|| > 0  U  ||b|| > 0.\\n  // Assign z = 0, x = -b, y = a:\\n  // a*-b + b*a + c*0 = -ba + ba + 0 = 0\\n  if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\\n    return normalize(vec3(-v.y, v.x, 0.0));\\n  } else {\\n    return normalize(vec3(0.0, v.z, -v.y));\\n  }\\n}\\n\\n// Calculate the cone vertex and normal at the given index.\\n//\\n// The returned vertex is for a cone with its top at origin and height of 1.0,\\n// pointing in the direction of the vector attribute.\\n//\\n// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices.\\n// These vertices are used to make up the triangles of the cone by the following:\\n//   segment + 0 top vertex\\n//   segment + 1 perimeter vertex a+1\\n//   segment + 2 perimeter vertex a\\n//   segment + 3 center base vertex\\n//   segment + 4 perimeter vertex a\\n//   segment + 5 perimeter vertex a+1\\n// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment.\\n// To go from index to segment, floor(index / 6)\\n// To go from segment to angle, 2*pi * (segment/segmentCount)\\n// To go from index to segment index, index - (segment*6)\\n//\\nvec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) {\\n\\n  const float segmentCount = 8.0;\\n\\n  float index = rawIndex - floor(rawIndex /\\n    (segmentCount * 6.0)) *\\n    (segmentCount * 6.0);\\n\\n  float segment = floor(0.001 + index/6.0);\\n  float segmentIndex = index - (segment*6.0);\\n\\n  normal = -normalize(d);\\n\\n  if (segmentIndex > 2.99 && segmentIndex < 3.01) {\\n    return mix(vec3(0.0), -d, coneOffset);\\n  }\\n\\n  float nextAngle = (\\n    (segmentIndex > 0.99 &&  segmentIndex < 1.01) ||\\n    (segmentIndex > 4.99 &&  segmentIndex < 5.01)\\n  ) ? 1.0 : 0.0;\\n  float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount);\\n\\n  vec3 v1 = mix(d, vec3(0.0), coneOffset);\\n  vec3 v2 = v1 - d;\\n\\n  vec3 u = getOrthogonalVector(d);\\n  vec3 v = normalize(cross(u, d));\\n\\n  vec3 x = u * cos(angle) * length(d)*0.25;\\n  vec3 y = v * sin(angle) * length(d)*0.25;\\n  vec3 v3 = v2 + x + y;\\n  if (segmentIndex < 3.0) {\\n    vec3 tx = u * sin(angle);\\n    vec3 ty = v * -cos(angle);\\n    vec3 tangent = tx + ty;\\n    normal = normalize(cross(v3 - v1, tangent));\\n  }\\n\\n  if (segmentIndex == 0.0) {\\n    return mix(d, vec3(0.0), coneOffset);\\n  }\\n  return v3;\\n}\\n\\nattribute vec4 vector;\\nattribute vec4 position;\\nattribute vec4 id;\\n\\nuniform mat4 model, view, projection;\\nuniform float vectorScale, coneScale, coneOffset;\\n\\nvarying vec3 f_position;\\nvarying vec4 f_id;\\n\\nvoid main() {\\n  vec3 normal;\\n  vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector.xyz), position.w, coneOffset, normal);\\n  vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\\n  gl_Position = projection * view * conePosition;\\n  f_id        = id;\\n  f_position  = position.xyz;\\n}\\n\"]);var pickFragSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3  clipBounds[2];\\nuniform float pickId;\\n\\nvarying vec3 f_position;\\nvarying vec4 f_id;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\\n\\n  gl_FragColor = vec4(pickId, f_id.xyz);\\n}\"]);exports.meshShader={vertex:triVertSrc,fragment:triFragSrc,attributes:[{name:'position',type:'vec4'},{name:'color',type:'vec4'},{name:'uv',type:'vec2'},{name:'vector',type:'vec3'}]};exports.pickShader={vertex:pickVertSrc,fragment:pickFragSrc,attributes:[{name:'position',type:'vec4'},{name:'id',type:'vec4'},{name:'vector',type:'vec3'}]};/***/},/***/1950:/***/function(module){module.exports={0:'NONE',1:'ONE',2:'LINE_LOOP',3:'LINE_STRIP',4:'TRIANGLES',5:'TRIANGLE_STRIP',6:'TRIANGLE_FAN',256:'DEPTH_BUFFER_BIT',512:'NEVER',513:'LESS',514:'EQUAL',515:'LEQUAL',516:'GREATER',517:'NOTEQUAL',518:'GEQUAL',519:'ALWAYS',768:'SRC_COLOR',769:'ONE_MINUS_SRC_COLOR',770:'SRC_ALPHA',771:'ONE_MINUS_SRC_ALPHA',772:'DST_ALPHA',773:'ONE_MINUS_DST_ALPHA',774:'DST_COLOR',775:'ONE_MINUS_DST_COLOR',776:'SRC_ALPHA_SATURATE',1024:'STENCIL_BUFFER_BIT',1028:'FRONT',1029:'BACK',1032:'FRONT_AND_BACK',1280:'INVALID_ENUM',1281:'INVALID_VALUE',1282:'INVALID_OPERATION',1285:'OUT_OF_MEMORY',1286:'INVALID_FRAMEBUFFER_OPERATION',2304:'CW',2305:'CCW',2849:'LINE_WIDTH',2884:'CULL_FACE',2885:'CULL_FACE_MODE',2886:'FRONT_FACE',2928:'DEPTH_RANGE',2929:'DEPTH_TEST',2930:'DEPTH_WRITEMASK',2931:'DEPTH_CLEAR_VALUE',2932:'DEPTH_FUNC',2960:'STENCIL_TEST',2961:'STENCIL_CLEAR_VALUE',2962:'STENCIL_FUNC',2963:'STENCIL_VALUE_MASK',2964:'STENCIL_FAIL',2965:'STENCIL_PASS_DEPTH_FAIL',2966:'STENCIL_PASS_DEPTH_PASS',2967:'STENCIL_REF',2968:'STENCIL_WRITEMASK',2978:'VIEWPORT',3024:'DITHER',3042:'BLEND',3088:'SCISSOR_BOX',3089:'SCISSOR_TEST',3106:'COLOR_CLEAR_VALUE',3107:'COLOR_WRITEMASK',3317:'UNPACK_ALIGNMENT',3333:'PACK_ALIGNMENT',3379:'MAX_TEXTURE_SIZE',3386:'MAX_VIEWPORT_DIMS',3408:'SUBPIXEL_BITS',3410:'RED_BITS',3411:'GREEN_BITS',3412:'BLUE_BITS',3413:'ALPHA_BITS',3414:'DEPTH_BITS',3415:'STENCIL_BITS',3553:'TEXTURE_2D',4352:'DONT_CARE',4353:'FASTEST',4354:'NICEST',5120:'BYTE',5121:'UNSIGNED_BYTE',5122:'SHORT',5123:'UNSIGNED_SHORT',5124:'INT',5125:'UNSIGNED_INT',5126:'FLOAT',5386:'INVERT',5890:'TEXTURE',6401:'STENCIL_INDEX',6402:'DEPTH_COMPONENT',6406:'ALPHA',6407:'RGB',6408:'RGBA',6409:'LUMINANCE',6410:'LUMINANCE_ALPHA',7680:'KEEP',7681:'REPLACE',7682:'INCR',7683:'DECR',7936:'VENDOR',7937:'RENDERER',7938:'VERSION',9728:'NEAREST',9729:'LINEAR',9984:'NEAREST_MIPMAP_NEAREST',9985:'LINEAR_MIPMAP_NEAREST',9986:'NEAREST_MIPMAP_LINEAR',9987:'LINEAR_MIPMAP_LINEAR',10240:'TEXTURE_MAG_FILTER',10241:'TEXTURE_MIN_FILTER',10242:'TEXTURE_WRAP_S',10243:'TEXTURE_WRAP_T',10497:'REPEAT',10752:'POLYGON_OFFSET_UNITS',16384:'COLOR_BUFFER_BIT',32769:'CONSTANT_COLOR',32770:'ONE_MINUS_CONSTANT_COLOR',32771:'CONSTANT_ALPHA',32772:'ONE_MINUS_CONSTANT_ALPHA',32773:'BLEND_COLOR',32774:'FUNC_ADD',32777:'BLEND_EQUATION_RGB',32778:'FUNC_SUBTRACT',32779:'FUNC_REVERSE_SUBTRACT',32819:'UNSIGNED_SHORT_4_4_4_4',32820:'UNSIGNED_SHORT_5_5_5_1',32823:'POLYGON_OFFSET_FILL',32824:'POLYGON_OFFSET_FACTOR',32854:'RGBA4',32855:'RGB5_A1',32873:'TEXTURE_BINDING_2D',32926:'SAMPLE_ALPHA_TO_COVERAGE',32928:'SAMPLE_COVERAGE',32936:'SAMPLE_BUFFERS',32937:'SAMPLES',32938:'SAMPLE_COVERAGE_VALUE',32939:'SAMPLE_COVERAGE_INVERT',32968:'BLEND_DST_RGB',32969:'BLEND_SRC_RGB',32970:'BLEND_DST_ALPHA',32971:'BLEND_SRC_ALPHA',33071:'CLAMP_TO_EDGE',33170:'GENERATE_MIPMAP_HINT',33189:'DEPTH_COMPONENT16',33306:'DEPTH_STENCIL_ATTACHMENT',33635:'UNSIGNED_SHORT_5_6_5',33648:'MIRRORED_REPEAT',33901:'ALIASED_POINT_SIZE_RANGE',33902:'ALIASED_LINE_WIDTH_RANGE',33984:'TEXTURE0',33985:'TEXTURE1',33986:'TEXTURE2',33987:'TEXTURE3',33988:'TEXTURE4',33989:'TEXTURE5',33990:'TEXTURE6',33991:'TEXTURE7',33992:'TEXTURE8',33993:'TEXTURE9',33994:'TEXTURE10',33995:'TEXTURE11',33996:'TEXTURE12',33997:'TEXTURE13',33998:'TEXTURE14',33999:'TEXTURE15',34000:'TEXTURE16',34001:'TEXTURE17',34002:'TEXTURE18',34003:'TEXTURE19',34004:'TEXTURE20',34005:'TEXTURE21',34006:'TEXTURE22',34007:'TEXTURE23',34008:'TEXTURE24',34009:'TEXTURE25',34010:'TEXTURE26',34011:'TEXTURE27',34012:'TEXTURE28',34013:'TEXTURE29',34014:'TEXTURE30',34015:'TEXTURE31',34016:'ACTIVE_TEXTURE',34024:'MAX_RENDERBUFFER_SIZE',34041:'DEPTH_STENCIL',34055:'INCR_WRAP',34056:'DECR_WRAP',34067:'TEXTURE_CUBE_MAP',34068:'TEXTURE_BINDING_CUBE_MAP',34069:'TEXTURE_CUBE_MAP_POSITIVE_X',34070:'TEXTURE_CUBE_MAP_NEGATIVE_X',34071:'TEXTURE_CUBE_MAP_POSITIVE_Y',34072:'TEXTURE_CUBE_MAP_NEGATIVE_Y',34073:'TEXTURE_CUBE_MAP_POSITIVE_Z',34074:'TEXTURE_CUBE_MAP_NEGATIVE_Z',34076:'MAX_CUBE_MAP_TEXTURE_SIZE',34338:'VERTEX_ATTRIB_ARRAY_ENABLED',34339:'VERTEX_ATTRIB_ARRAY_SIZE',34340:'VERTEX_ATTRIB_ARRAY_STRIDE',34341:'VERTEX_ATTRIB_ARRAY_TYPE',34342:'CURRENT_VERTEX_ATTRIB',34373:'VERTEX_ATTRIB_ARRAY_POINTER',34466:'NUM_COMPRESSED_TEXTURE_FORMATS',34467:'COMPRESSED_TEXTURE_FORMATS',34660:'BUFFER_SIZE',34661:'BUFFER_USAGE',34816:'STENCIL_BACK_FUNC',34817:'STENCIL_BACK_FAIL',34818:'STENCIL_BACK_PASS_DEPTH_FAIL',34819:'STENCIL_BACK_PASS_DEPTH_PASS',34877:'BLEND_EQUATION_ALPHA',34921:'MAX_VERTEX_ATTRIBS',34922:'VERTEX_ATTRIB_ARRAY_NORMALIZED',34930:'MAX_TEXTURE_IMAGE_UNITS',34962:'ARRAY_BUFFER',34963:'ELEMENT_ARRAY_BUFFER',34964:'ARRAY_BUFFER_BINDING',34965:'ELEMENT_ARRAY_BUFFER_BINDING',34975:'VERTEX_ATTRIB_ARRAY_BUFFER_BINDING',35040:'STREAM_DRAW',35044:'STATIC_DRAW',35048:'DYNAMIC_DRAW',35632:'FRAGMENT_SHADER',35633:'VERTEX_SHADER',35660:'MAX_VERTEX_TEXTURE_IMAGE_UNITS',35661:'MAX_COMBINED_TEXTURE_IMAGE_UNITS',35663:'SHADER_TYPE',35664:'FLOAT_VEC2',35665:'FLOAT_VEC3',35666:'FLOAT_VEC4',35667:'INT_VEC2',35668:'INT_VEC3',35669:'INT_VEC4',35670:'BOOL',35671:'BOOL_VEC2',35672:'BOOL_VEC3',35673:'BOOL_VEC4',35674:'FLOAT_MAT2',35675:'FLOAT_MAT3',35676:'FLOAT_MAT4',35678:'SAMPLER_2D',35680:'SAMPLER_CUBE',35712:'DELETE_STATUS',35713:'COMPILE_STATUS',35714:'LINK_STATUS',35715:'VALIDATE_STATUS',35716:'INFO_LOG_LENGTH',35717:'ATTACHED_SHADERS',35718:'ACTIVE_UNIFORMS',35719:'ACTIVE_UNIFORM_MAX_LENGTH',35720:'SHADER_SOURCE_LENGTH',35721:'ACTIVE_ATTRIBUTES',35722:'ACTIVE_ATTRIBUTE_MAX_LENGTH',35724:'SHADING_LANGUAGE_VERSION',35725:'CURRENT_PROGRAM',36003:'STENCIL_BACK_REF',36004:'STENCIL_BACK_VALUE_MASK',36005:'STENCIL_BACK_WRITEMASK',36006:'FRAMEBUFFER_BINDING',36007:'RENDERBUFFER_BINDING',36048:'FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE',36049:'FRAMEBUFFER_ATTACHMENT_OBJECT_NAME',36050:'FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL',36051:'FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE',36053:'FRAMEBUFFER_COMPLETE',36054:'FRAMEBUFFER_INCOMPLETE_ATTACHMENT',36055:'FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT',36057:'FRAMEBUFFER_INCOMPLETE_DIMENSIONS',36061:'FRAMEBUFFER_UNSUPPORTED',36064:'COLOR_ATTACHMENT0',36096:'DEPTH_ATTACHMENT',36128:'STENCIL_ATTACHMENT',36160:'FRAMEBUFFER',36161:'RENDERBUFFER',36162:'RENDERBUFFER_WIDTH',36163:'RENDERBUFFER_HEIGHT',36164:'RENDERBUFFER_INTERNAL_FORMAT',36168:'STENCIL_INDEX8',36176:'RENDERBUFFER_RED_SIZE',36177:'RENDERBUFFER_GREEN_SIZE',36178:'RENDERBUFFER_BLUE_SIZE',36179:'RENDERBUFFER_ALPHA_SIZE',36180:'RENDERBUFFER_DEPTH_SIZE',36181:'RENDERBUFFER_STENCIL_SIZE',36194:'RGB565',36336:'LOW_FLOAT',36337:'MEDIUM_FLOAT',36338:'HIGH_FLOAT',36339:'LOW_INT',36340:'MEDIUM_INT',36341:'HIGH_INT',36346:'SHADER_COMPILER',36347:'MAX_VERTEX_UNIFORM_VECTORS',36348:'MAX_VARYING_VECTORS',36349:'MAX_FRAGMENT_UNIFORM_VECTORS',37440:'UNPACK_FLIP_Y_WEBGL',37441:'UNPACK_PREMULTIPLY_ALPHA_WEBGL',37442:'CONTEXT_LOST_WEBGL',37443:'UNPACK_COLORSPACE_CONVERSION_WEBGL',37444:'BROWSER_DEFAULT_WEBGL'};/***/},/***/6603:/***/function(module,__unused_webpack_exports,__nested_webpack_require_308199__){var gl10=__nested_webpack_require_308199__(1950);module.exports=function lookupConstant(number){return gl10[number];};/***/},/***/3110:/***/function(module,__unused_webpack_exports,__nested_webpack_require_308387__){\"use strict\";module.exports=createErrorBars;var createBuffer=__nested_webpack_require_308387__(5827);var createVAO=__nested_webpack_require_308387__(2944);var createShader=__nested_webpack_require_308387__(7667);var IDENTITY=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function ErrorBars(gl,buffer,vao,shader){this.gl=gl;this.shader=shader;this.buffer=buffer;this.vao=vao;this.pixelRatio=1;this.bounds=[[Infinity,Infinity,Infinity],[-Infinity,-Infinity,-Infinity]];this.clipBounds=[[-Infinity,-Infinity,-Infinity],[Infinity,Infinity,Infinity]];this.lineWidth=[1,1,1];this.capSize=[10,10,10];this.lineCount=[0,0,0];this.lineOffset=[0,0,0];this.opacity=1;this.hasAlpha=false;}var proto=ErrorBars.prototype;proto.isOpaque=function(){return!this.hasAlpha;};proto.isTransparent=function(){return this.hasAlpha;};proto.drawTransparent=proto.draw=function(cameraParams){var gl=this.gl;var uniforms=this.shader.uniforms;this.shader.bind();var view=uniforms.view=cameraParams.view||IDENTITY;var projection=uniforms.projection=cameraParams.projection||IDENTITY;uniforms.model=cameraParams.model||IDENTITY;uniforms.clipBounds=this.clipBounds;uniforms.opacity=this.opacity;var cx=view[12];var cy=view[13];var cz=view[14];var cw=view[15];var isOrtho=cameraParams._ortho||false;var orthoFix=isOrtho?2:1;// double up padding for orthographic ticks & labels\nvar pixelScaleF=orthoFix*this.pixelRatio*(projection[3]*cx+projection[7]*cy+projection[11]*cz+projection[15]*cw)/gl.drawingBufferHeight;this.vao.bind();for(var i=0;i<3;++i){gl.lineWidth(this.lineWidth[i]*this.pixelRatio);uniforms.capSize=this.capSize[i]*pixelScaleF;if(this.lineCount[i]){gl.drawArrays(gl.LINES,this.lineOffset[i],this.lineCount[i]);}}this.vao.unbind();};function updateBounds(bounds,point){for(var i=0;i<3;++i){bounds[0][i]=Math.min(bounds[0][i],point[i]);bounds[1][i]=Math.max(bounds[1][i],point[i]);}}var FACE_TABLE=function(){var table=new Array(3);for(var d=0;d<3;++d){var row=[];for(var j=1;j<=2;++j){for(var s=-1;s<=1;s+=2){var u=(j+d)%3;var y=[0,0,0];y[u]=s;row.push(y);}}table[d]=row;}return table;}();function emitFace(verts,x,c,d){var offsets=FACE_TABLE[d];for(var i=0;i<offsets.length;++i){var o=offsets[i];verts.push(x[0],x[1],x[2],c[0],c[1],c[2],c[3],o[0],o[1],o[2]);}return offsets.length;}proto.update=function(options){options=options||{};if('lineWidth'in options){this.lineWidth=options.lineWidth;if(!Array.isArray(this.lineWidth)){this.lineWidth=[this.lineWidth,this.lineWidth,this.lineWidth];}}if('capSize'in options){this.capSize=options.capSize;if(!Array.isArray(this.capSize)){this.capSize=[this.capSize,this.capSize,this.capSize];}}this.hasAlpha=false;// default to no transparent draw\nif('opacity'in options){this.opacity=+options.opacity;if(this.opacity<1){this.hasAlpha=true;}}var color=options.color||[[0,0,0],[0,0,0],[0,0,0]];var position=options.position;var error=options.error;if(!Array.isArray(color[0])){color=[color,color,color];}if(position&&error){var verts=[];var n=position.length;var vertexCount=0;this.bounds=[[Infinity,Infinity,Infinity],[-Infinity,-Infinity,-Infinity]];this.lineCount=[0,0,0];//Build geometry for lines\nfor(var j=0;j<3;++j){this.lineOffset[j]=vertexCount;i_loop:for(var i=0;i<n;++i){var p=position[i];for(var k=0;k<3;++k){if(isNaN(p[k])||!isFinite(p[k])){continue i_loop;}}var e=error[i];var c=color[j];if(Array.isArray(c[0])){c=color[i];}if(c.length===3){c=[c[0],c[1],c[2],1];}else if(c.length===4){c=[c[0],c[1],c[2],c[3]];if(!this.hasAlpha&&c[3]<1)this.hasAlpha=true;}if(isNaN(e[0][j])||isNaN(e[1][j])){continue;}if(e[0][j]<0){var x=p.slice();x[j]+=e[0][j];verts.push(p[0],p[1],p[2],c[0],c[1],c[2],c[3],0,0,0,x[0],x[1],x[2],c[0],c[1],c[2],c[3],0,0,0);updateBounds(this.bounds,x);vertexCount+=2+emitFace(verts,x,c,j);}if(e[1][j]>0){var x=p.slice();x[j]+=e[1][j];verts.push(p[0],p[1],p[2],c[0],c[1],c[2],c[3],0,0,0,x[0],x[1],x[2],c[0],c[1],c[2],c[3],0,0,0);updateBounds(this.bounds,x);vertexCount+=2+emitFace(verts,x,c,j);}}this.lineCount[j]=vertexCount-this.lineOffset[j];}this.buffer.update(verts);}};proto.dispose=function(){this.shader.dispose();this.buffer.dispose();this.vao.dispose();};function createErrorBars(options){var gl=options.gl;var buffer=createBuffer(gl);var vao=createVAO(gl,[{buffer:buffer,type:gl.FLOAT,size:3,offset:0,stride:40},{buffer:buffer,type:gl.FLOAT,size:4,offset:12,stride:40},{buffer:buffer,type:gl.FLOAT,size:3,offset:28,stride:40}]);var shader=createShader(gl);shader.attributes.position.location=0;shader.attributes.color.location=1;shader.attributes.offset.location=2;var result=new ErrorBars(gl,buffer,vao,shader);result.update(options);return result;}/***/},/***/7667:/***/function(module,__unused_webpack_exports,__nested_webpack_require_313026__){\"use strict\";var glslify=__nested_webpack_require_313026__(6832);var createShader=__nested_webpack_require_313026__(5158);var vertSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position, offset;\\nattribute vec4 color;\\nuniform mat4 model, view, projection;\\nuniform float capSize;\\nvarying vec4 fragColor;\\nvarying vec3 fragPosition;\\n\\nvoid main() {\\n  vec4 worldPosition  = model * vec4(position, 1.0);\\n  worldPosition       = (worldPosition / worldPosition.w) + vec4(capSize * offset, 0.0);\\n  gl_Position         = projection * view * worldPosition;\\n  fragColor           = color;\\n  fragPosition        = position;\\n}\"]);var fragSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3 clipBounds[2];\\nuniform float opacity;\\nvarying vec3 fragPosition;\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n  if (\\n    outOfRange(clipBounds[0], clipBounds[1], fragPosition) ||\\n    fragColor.a * opacity == 0.\\n  ) discard;\\n\\n  gl_FragColor = opacity * fragColor;\\n}\"]);module.exports=function(gl){return createShader(gl,vertSrc,fragSrc,null,[{name:'position',type:'vec3'},{name:'color',type:'vec4'},{name:'offset',type:'vec3'}]);};/***/},/***/4234:/***/function(module,__unused_webpack_exports,__nested_webpack_require_314749__){\"use strict\";var createTexture=__nested_webpack_require_314749__(8931);module.exports=createFBO;var colorAttachmentArrays=null;var FRAMEBUFFER_UNSUPPORTED;var FRAMEBUFFER_INCOMPLETE_ATTACHMENT;var FRAMEBUFFER_INCOMPLETE_DIMENSIONS;var FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT;function saveFBOState(gl){var fbo=gl.getParameter(gl.FRAMEBUFFER_BINDING);var rbo=gl.getParameter(gl.RENDERBUFFER_BINDING);var tex=gl.getParameter(gl.TEXTURE_BINDING_2D);return[fbo,rbo,tex];}function restoreFBOState(gl,data){gl.bindFramebuffer(gl.FRAMEBUFFER,data[0]);gl.bindRenderbuffer(gl.RENDERBUFFER,data[1]);gl.bindTexture(gl.TEXTURE_2D,data[2]);}function lazyInitColorAttachments(gl,ext){var maxColorAttachments=gl.getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL);colorAttachmentArrays=new Array(maxColorAttachments+1);for(var i=0;i<=maxColorAttachments;++i){var x=new Array(maxColorAttachments);for(var j=0;j<i;++j){x[j]=gl.COLOR_ATTACHMENT0+j;}for(var j=i;j<maxColorAttachments;++j){x[j]=gl.NONE;}colorAttachmentArrays[i]=x;}}//Throw an appropriate error\nfunction throwFBOError(status){switch(status){case FRAMEBUFFER_UNSUPPORTED:throw new Error('gl-fbo: Framebuffer unsupported');case FRAMEBUFFER_INCOMPLETE_ATTACHMENT:throw new Error('gl-fbo: Framebuffer incomplete attachment');case FRAMEBUFFER_INCOMPLETE_DIMENSIONS:throw new Error('gl-fbo: Framebuffer incomplete dimensions');case FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:throw new Error('gl-fbo: Framebuffer incomplete missing attachment');default:throw new Error('gl-fbo: Framebuffer failed for unspecified reason');}}//Initialize a texture object\nfunction initTexture(gl,width,height,type,format,attachment){if(!type){return null;}var result=createTexture(gl,width,height,format,type);result.magFilter=gl.NEAREST;result.minFilter=gl.NEAREST;result.mipSamples=1;result.bind();gl.framebufferTexture2D(gl.FRAMEBUFFER,attachment,gl.TEXTURE_2D,result.handle,0);return result;}//Initialize a render buffer object\nfunction initRenderBuffer(gl,width,height,component,attachment){var result=gl.createRenderbuffer();gl.bindRenderbuffer(gl.RENDERBUFFER,result);gl.renderbufferStorage(gl.RENDERBUFFER,component,width,height);gl.framebufferRenderbuffer(gl.FRAMEBUFFER,attachment,gl.RENDERBUFFER,result);return result;}//Rebuild the frame buffer\nfunction rebuildFBO(fbo){//Save FBO state\nvar state=saveFBOState(fbo.gl);var gl=fbo.gl;var handle=fbo.handle=gl.createFramebuffer();var width=fbo._shape[0];var height=fbo._shape[1];var numColors=fbo.color.length;var ext=fbo._ext;var useStencil=fbo._useStencil;var useDepth=fbo._useDepth;var colorType=fbo._colorType;//Bind the fbo\ngl.bindFramebuffer(gl.FRAMEBUFFER,handle);//Allocate color buffers\nfor(var i=0;i<numColors;++i){fbo.color[i]=initTexture(gl,width,height,colorType,gl.RGBA,gl.COLOR_ATTACHMENT0+i);}if(numColors===0){fbo._color_rb=initRenderBuffer(gl,width,height,gl.RGBA4,gl.COLOR_ATTACHMENT0);if(ext){ext.drawBuffersWEBGL(colorAttachmentArrays[0]);}}else if(numColors>1){ext.drawBuffersWEBGL(colorAttachmentArrays[numColors]);}//Allocate depth/stencil buffers\nvar WEBGL_depth_texture=gl.getExtension('WEBGL_depth_texture');if(WEBGL_depth_texture){if(useStencil){fbo.depth=initTexture(gl,width,height,WEBGL_depth_texture.UNSIGNED_INT_24_8_WEBGL,gl.DEPTH_STENCIL,gl.DEPTH_STENCIL_ATTACHMENT);}else if(useDepth){fbo.depth=initTexture(gl,width,height,gl.UNSIGNED_SHORT,gl.DEPTH_COMPONENT,gl.DEPTH_ATTACHMENT);}}else{if(useDepth&&useStencil){fbo._depth_rb=initRenderBuffer(gl,width,height,gl.DEPTH_STENCIL,gl.DEPTH_STENCIL_ATTACHMENT);}else if(useDepth){fbo._depth_rb=initRenderBuffer(gl,width,height,gl.DEPTH_COMPONENT16,gl.DEPTH_ATTACHMENT);}else if(useStencil){fbo._depth_rb=initRenderBuffer(gl,width,height,gl.STENCIL_INDEX,gl.STENCIL_ATTACHMENT);}}//Check frame buffer state\nvar status=gl.checkFramebufferStatus(gl.FRAMEBUFFER);if(status!==gl.FRAMEBUFFER_COMPLETE){//Release all partially allocated resources\nfbo._destroyed=true;//Release all resources\ngl.bindFramebuffer(gl.FRAMEBUFFER,null);gl.deleteFramebuffer(fbo.handle);fbo.handle=null;if(fbo.depth){fbo.depth.dispose();fbo.depth=null;}if(fbo._depth_rb){gl.deleteRenderbuffer(fbo._depth_rb);fbo._depth_rb=null;}for(var i=0;i<fbo.color.length;++i){fbo.color[i].dispose();fbo.color[i]=null;}if(fbo._color_rb){gl.deleteRenderbuffer(fbo._color_rb);fbo._color_rb=null;}restoreFBOState(gl,state);//Throw the frame buffer error\nthrowFBOError(status);}//Everything ok, let's get on with life\nrestoreFBOState(gl,state);}function Framebuffer(gl,width,height,colorType,numColors,useDepth,useStencil,ext){//Handle and set properties\nthis.gl=gl;this._shape=[width|0,height|0];this._destroyed=false;this._ext=ext;//Allocate buffers\nthis.color=new Array(numColors);for(var i=0;i<numColors;++i){this.color[i]=null;}this._color_rb=null;this.depth=null;this._depth_rb=null;//Save depth and stencil flags\nthis._colorType=colorType;this._useDepth=useDepth;this._useStencil=useStencil;//Shape vector for resizing\nvar parent=this;var shapeVector=[width|0,height|0];Object.defineProperties(shapeVector,{0:{get:function(){return parent._shape[0];},set:function(w){return parent.width=w;}},1:{get:function(){return parent._shape[1];},set:function(h){return parent.height=h;}}});this._shapeVector=shapeVector;//Initialize all attachments\nrebuildFBO(this);}var proto=Framebuffer.prototype;function reshapeFBO(fbo,w,h){//If fbo is invalid, just skip this\nif(fbo._destroyed){throw new Error('gl-fbo: Can\\'t resize destroyed FBO');}//Don't resize if no change in shape\nif(fbo._shape[0]===w&&fbo._shape[1]===h){return;}var gl=fbo.gl;//Check parameter ranges\nvar maxFBOSize=gl.getParameter(gl.MAX_RENDERBUFFER_SIZE);if(w<0||w>maxFBOSize||h<0||h>maxFBOSize){throw new Error('gl-fbo: Can\\'t resize FBO, invalid dimensions');}//Update shape\nfbo._shape[0]=w;fbo._shape[1]=h;//Save framebuffer state\nvar state=saveFBOState(gl);//Resize framebuffer attachments\nfor(var i=0;i<fbo.color.length;++i){fbo.color[i].shape=fbo._shape;}if(fbo._color_rb){gl.bindRenderbuffer(gl.RENDERBUFFER,fbo._color_rb);gl.renderbufferStorage(gl.RENDERBUFFER,gl.RGBA4,fbo._shape[0],fbo._shape[1]);}if(fbo.depth){fbo.depth.shape=fbo._shape;}if(fbo._depth_rb){gl.bindRenderbuffer(gl.RENDERBUFFER,fbo._depth_rb);if(fbo._useDepth&&fbo._useStencil){gl.renderbufferStorage(gl.RENDERBUFFER,gl.DEPTH_STENCIL,fbo._shape[0],fbo._shape[1]);}else if(fbo._useDepth){gl.renderbufferStorage(gl.RENDERBUFFER,gl.DEPTH_COMPONENT16,fbo._shape[0],fbo._shape[1]);}else if(fbo._useStencil){gl.renderbufferStorage(gl.RENDERBUFFER,gl.STENCIL_INDEX,fbo._shape[0],fbo._shape[1]);}}//Check FBO status after resize, if something broke then die in a fire\ngl.bindFramebuffer(gl.FRAMEBUFFER,fbo.handle);var status=gl.checkFramebufferStatus(gl.FRAMEBUFFER);if(status!==gl.FRAMEBUFFER_COMPLETE){fbo.dispose();restoreFBOState(gl,state);throwFBOError(status);}//Restore framebuffer state\nrestoreFBOState(gl,state);}Object.defineProperties(proto,{'shape':{get:function(){if(this._destroyed){return[0,0];}return this._shapeVector;},set:function(x){if(!Array.isArray(x)){x=[x|0,x|0];}if(x.length!==2){throw new Error('gl-fbo: Shape vector must be length 2');}var w=x[0]|0;var h=x[1]|0;reshapeFBO(this,w,h);return[w,h];},enumerable:false},'width':{get:function(){if(this._destroyed){return 0;}return this._shape[0];},set:function(w){w=w|0;reshapeFBO(this,w,this._shape[1]);return w;},enumerable:false},'height':{get:function(){if(this._destroyed){return 0;}return this._shape[1];},set:function(h){h=h|0;reshapeFBO(this,this._shape[0],h);return h;},enumerable:false}});proto.bind=function(){if(this._destroyed){return;}var gl=this.gl;gl.bindFramebuffer(gl.FRAMEBUFFER,this.handle);gl.viewport(0,0,this._shape[0],this._shape[1]);};proto.dispose=function(){if(this._destroyed){return;}this._destroyed=true;var gl=this.gl;gl.deleteFramebuffer(this.handle);this.handle=null;if(this.depth){this.depth.dispose();this.depth=null;}if(this._depth_rb){gl.deleteRenderbuffer(this._depth_rb);this._depth_rb=null;}for(var i=0;i<this.color.length;++i){this.color[i].dispose();this.color[i]=null;}if(this._color_rb){gl.deleteRenderbuffer(this._color_rb);this._color_rb=null;}};function createFBO(gl,width,height,options){//Update frame buffer error code values\nif(!FRAMEBUFFER_UNSUPPORTED){FRAMEBUFFER_UNSUPPORTED=gl.FRAMEBUFFER_UNSUPPORTED;FRAMEBUFFER_INCOMPLETE_ATTACHMENT=gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT;FRAMEBUFFER_INCOMPLETE_DIMENSIONS=gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS;FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT=gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT;}//Lazily initialize color attachment arrays\nvar WEBGL_draw_buffers=gl.getExtension('WEBGL_draw_buffers');if(!colorAttachmentArrays&&WEBGL_draw_buffers){lazyInitColorAttachments(gl,WEBGL_draw_buffers);}//Special case: Can accept an array as argument\nif(Array.isArray(width)){options=height;height=width[1]|0;width=width[0]|0;}if(typeof width!=='number'){throw new Error('gl-fbo: Missing shape parameter');}//Validate width/height properties\nvar maxFBOSize=gl.getParameter(gl.MAX_RENDERBUFFER_SIZE);if(width<0||width>maxFBOSize||height<0||height>maxFBOSize){throw new Error('gl-fbo: Parameters are too large for FBO');}//Handle each option type\noptions=options||{};//Figure out number of color buffers to use\nvar numColors=1;if('color'in options){numColors=Math.max(options.color|0,0);if(numColors<0){throw new Error('gl-fbo: Must specify a nonnegative number of colors');}if(numColors>1){//Check if multiple render targets supported\nif(!WEBGL_draw_buffers){throw new Error('gl-fbo: Multiple draw buffer extension not supported');}else if(numColors>gl.getParameter(WEBGL_draw_buffers.MAX_COLOR_ATTACHMENTS_WEBGL)){throw new Error('gl-fbo: Context does not support '+numColors+' draw buffers');}}}//Determine whether to use floating point textures\nvar colorType=gl.UNSIGNED_BYTE;var OES_texture_float=gl.getExtension('OES_texture_float');if(options.float&&numColors>0){if(!OES_texture_float){throw new Error('gl-fbo: Context does not support floating point textures');}colorType=gl.FLOAT;}else if(options.preferFloat&&numColors>0){if(OES_texture_float){colorType=gl.FLOAT;}}//Check if we should use depth buffer\nvar useDepth=true;if('depth'in options){useDepth=!!options.depth;}//Check if we should use a stencil buffer\nvar useStencil=false;if('stencil'in options){useStencil=!!options.stencil;}return new Framebuffer(gl,width,height,colorType,numColors,useDepth,useStencil,WEBGL_draw_buffers);}/***/},/***/3530:/***/function(module,__unused_webpack_exports,__nested_webpack_require_325209__){var sprintf=__nested_webpack_require_325209__(8974).sprintf;var glConstants=__nested_webpack_require_325209__(6603);var shaderName=__nested_webpack_require_325209__(9365);var addLineNumbers=__nested_webpack_require_325209__(8008);module.exports=formatCompilerError;function formatCompilerError(errLog,src,type){\"use strict\";var name=shaderName(src)||'of unknown name (see npm glsl-shader-name)';var typeName='unknown type';if(type!==undefined){typeName=type===glConstants.FRAGMENT_SHADER?'fragment':'vertex';}var longForm=sprintf('Error compiling %s shader %s:\\n',typeName,name);var shortForm=sprintf(\"%s%s\",longForm,errLog);var errorStrings=errLog.split('\\n');var errors={};for(var i=0;i<errorStrings.length;i++){var errorString=errorStrings[i];if(errorString===''||errorString===\"\\0\")continue;var lineNo=parseInt(errorString.split(':')[2]);if(isNaN(lineNo)){throw new Error(sprintf('Could not parse error: %s',errorString));}errors[lineNo]=errorString;}var lines=addLineNumbers(src).split('\\n');for(var i=0;i<lines.length;i++){if(!errors[i+3]&&!errors[i+2]&&!errors[i+1])continue;var line=lines[i];longForm+=line+'\\n';if(errors[i+1]){var e=errors[i+1];e=e.substr(e.split(':',3).join(':').length+1).trim();longForm+=sprintf('^^^ %s\\n\\n',e);}}return{long:longForm.trim(),short:shortForm.trim()};}/***/},/***/6386:/***/function(module,__unused_webpack_exports,__nested_webpack_require_326533__){\"use strict\";module.exports=createHeatmap2D;var bsearch=__nested_webpack_require_326533__(5070);var iota=__nested_webpack_require_326533__(9560);var pool=__nested_webpack_require_326533__(5306);var createShader=__nested_webpack_require_326533__(5158);var createBuffer=__nested_webpack_require_326533__(5827);var shaders=__nested_webpack_require_326533__(1292);function GLHeatmap2D(plot,shader,pickShader,positionBuffer,weightBuffer,colorBuffer,idBuffer){this.plot=plot;this.shader=shader;this.pickShader=pickShader;this.positionBuffer=positionBuffer;this.weightBuffer=weightBuffer;this.colorBuffer=colorBuffer;this.idBuffer=idBuffer;this.xData=[];this.yData=[];this.shape=[0,0];this.bounds=[Infinity,Infinity,-Infinity,-Infinity];this.pickOffset=0;}var proto=GLHeatmap2D.prototype;var WEIGHTS=[0,0,1,0,0,1,1,0,1,1,0,1];proto.draw=function(){var MATRIX=[1,0,0,0,1,0,0,0,1];return function(){var plot=this.plot;var shader=this.shader;var bounds=this.bounds;var numVertices=this.numVertices;if(numVertices<=0){return;}var gl=plot.gl;var dataBox=plot.dataBox;var boundX=bounds[2]-bounds[0];var boundY=bounds[3]-bounds[1];var dataX=dataBox[2]-dataBox[0];var dataY=dataBox[3]-dataBox[1];MATRIX[0]=2.0*boundX/dataX;MATRIX[4]=2.0*boundY/dataY;MATRIX[6]=2.0*(bounds[0]-dataBox[0])/dataX-1.0;MATRIX[7]=2.0*(bounds[1]-dataBox[1])/dataY-1.0;shader.bind();var uniforms=shader.uniforms;uniforms.viewTransform=MATRIX;uniforms.shape=this.shape;var attributes=shader.attributes;this.positionBuffer.bind();attributes.position.pointer();this.weightBuffer.bind();attributes.weight.pointer(gl.UNSIGNED_BYTE,false);this.colorBuffer.bind();attributes.color.pointer(gl.UNSIGNED_BYTE,true);gl.drawArrays(gl.TRIANGLES,0,numVertices);};}();proto.drawPick=function(){var MATRIX=[1,0,0,0,1,0,0,0,1];var PICK_VECTOR=[0,0,0,0];return function(pickOffset){var plot=this.plot;var shader=this.pickShader;var bounds=this.bounds;var numVertices=this.numVertices;if(numVertices<=0){return;}var gl=plot.gl;var dataBox=plot.dataBox;var boundX=bounds[2]-bounds[0];var boundY=bounds[3]-bounds[1];var dataX=dataBox[2]-dataBox[0];var dataY=dataBox[3]-dataBox[1];MATRIX[0]=2.0*boundX/dataX;MATRIX[4]=2.0*boundY/dataY;MATRIX[6]=2.0*(bounds[0]-dataBox[0])/dataX-1.0;MATRIX[7]=2.0*(bounds[1]-dataBox[1])/dataY-1.0;for(var i=0;i<4;++i){PICK_VECTOR[i]=pickOffset>>i*8&0xff;}this.pickOffset=pickOffset;shader.bind();var uniforms=shader.uniforms;uniforms.viewTransform=MATRIX;uniforms.pickOffset=PICK_VECTOR;uniforms.shape=this.shape;var attributes=shader.attributes;this.positionBuffer.bind();attributes.position.pointer();this.weightBuffer.bind();attributes.weight.pointer(gl.UNSIGNED_BYTE,false);this.idBuffer.bind();attributes.pickId.pointer(gl.UNSIGNED_BYTE,false);gl.drawArrays(gl.TRIANGLES,0,numVertices);return pickOffset+this.shape[0]*this.shape[1];};}();proto.pick=function(x,y,value){var pickOffset=this.pickOffset;var pointCount=this.shape[0]*this.shape[1];if(value<pickOffset||value>=pickOffset+pointCount){return null;}var pointId=value-pickOffset;var xData=this.xData;var yData=this.yData;return{object:this,pointId:pointId,dataCoord:[xData[pointId%this.shape[0]],yData[pointId/this.shape[0]|0]]};};proto.update=function(options){options=options||{};var shape=options.shape||[0,0];var x=options.x||iota(shape[0]);var y=options.y||iota(shape[1]);var z=options.z||new Float32Array(shape[0]*shape[1]);var isSmooth=options.zsmooth!==false;this.xData=x;this.yData=y;var colorLevels=options.colorLevels||[0];var colorValues=options.colorValues||[0,0,0,1];var colorCount=colorLevels.length;var bounds=this.bounds;var lox,loy,hix,hiy;if(isSmooth){lox=bounds[0]=x[0];loy=bounds[1]=y[0];hix=bounds[2]=x[x.length-1];hiy=bounds[3]=y[y.length-1];}else{// To get squares to centre on data values\nlox=bounds[0]=x[0]+(x[1]-x[0])/2;// starting x value\nloy=bounds[1]=y[0]+(y[1]-y[0])/2;// starting y value\n// Bounds needs to add half a square on each end\nhix=bounds[2]=x[x.length-1]+(x[x.length-1]-x[x.length-2])/2;hiy=bounds[3]=y[y.length-1]+(y[y.length-1]-y[y.length-2])/2;// N.B. Resolution = 1 / range\n}var xs=1.0/(hix-lox);var ys=1.0/(hiy-loy);var numX=shape[0];var numY=shape[1];this.shape=[numX,numY];var numVerts=(isSmooth?(numX-1)*(numY-1):numX*numY)*(WEIGHTS.length>>>1);this.numVertices=numVerts;var colors=pool.mallocUint8(numVerts*4);var positions=pool.mallocFloat32(numVerts*2);var weights=pool.mallocUint8(numVerts*2);var ids=pool.mallocUint32(numVerts);var ptr=0;var ni=isSmooth?numX-1:numX;var nj=isSmooth?numY-1:numY;for(var j=0;j<nj;++j){var yc0,yc1;if(isSmooth){yc0=ys*(y[j]-loy);yc1=ys*(y[j+1]-loy);}else{yc0=j<numY-1?ys*(y[j]-(y[j+1]-y[j])/2-loy):ys*(y[j]-(y[j]-y[j-1])/2-loy);yc1=j<numY-1?ys*(y[j]+(y[j+1]-y[j])/2-loy):ys*(y[j]+(y[j]-y[j-1])/2-loy);}for(var i=0;i<ni;++i){var xc0,xc1;if(isSmooth){xc0=xs*(x[i]-lox);xc1=xs*(x[i+1]-lox);}else{xc0=i<numX-1?xs*(x[i]-(x[i+1]-x[i])/2-lox):xs*(x[i]-(x[i]-x[i-1])/2-lox);xc1=i<numX-1?xs*(x[i]+(x[i+1]-x[i])/2-lox):xs*(x[i]+(x[i]-x[i-1])/2-lox);}for(var dd=0;dd<WEIGHTS.length;dd+=2){var dx=WEIGHTS[dd];var dy=WEIGHTS[dd+1];var offset=isSmooth?(j+dy)*numX+(i+dx):j*numX+i;var zc=z[offset];var colorIdx=bsearch.le(colorLevels,zc);var r,g,b,a;if(colorIdx<0){r=colorValues[0];g=colorValues[1];b=colorValues[2];a=colorValues[3];}else if(colorIdx===colorCount-1){r=colorValues[4*colorCount-4];g=colorValues[4*colorCount-3];b=colorValues[4*colorCount-2];a=colorValues[4*colorCount-1];}else{var t=(zc-colorLevels[colorIdx])/(colorLevels[colorIdx+1]-colorLevels[colorIdx]);var ti=1.0-t;var i0=4*colorIdx;var i1=4*(colorIdx+1);r=ti*colorValues[i0]+t*colorValues[i1];g=ti*colorValues[i0+1]+t*colorValues[i1+1];b=ti*colorValues[i0+2]+t*colorValues[i1+2];a=ti*colorValues[i0+3]+t*colorValues[i1+3];}colors[4*ptr]=255*r;colors[4*ptr+1]=255*g;colors[4*ptr+2]=255*b;colors[4*ptr+3]=255*a;positions[2*ptr]=xc0*.5+xc1*.5;positions[2*ptr+1]=yc0*.5+yc1*.5;weights[2*ptr]=dx;weights[2*ptr+1]=dy;ids[ptr]=j*numX+i;ptr+=1;}}}this.positionBuffer.update(positions);this.weightBuffer.update(weights);this.colorBuffer.update(colors);this.idBuffer.update(ids);pool.free(positions);pool.free(colors);pool.free(weights);pool.free(ids);};proto.dispose=function(){this.shader.dispose();this.pickShader.dispose();this.positionBuffer.dispose();this.weightBuffer.dispose();this.colorBuffer.dispose();this.idBuffer.dispose();this.plot.removeObject(this);};function createHeatmap2D(plot,options){var gl=plot.gl;var shader=createShader(gl,shaders.vertex,shaders.fragment);var pickShader=createShader(gl,shaders.pickVertex,shaders.pickFragment);var positionBuffer=createBuffer(gl);var weightBuffer=createBuffer(gl);var colorBuffer=createBuffer(gl);var idBuffer=createBuffer(gl);var heatmap=new GLHeatmap2D(plot,shader,pickShader,positionBuffer,weightBuffer,colorBuffer,idBuffer);heatmap.update(options);plot.addObject(heatmap);return heatmap;}/***/},/***/1292:/***/function(module,__unused_webpack_exports,__nested_webpack_require_333349__){\"use strict\";var glslify=__nested_webpack_require_333349__(6832);module.exports={fragment:glslify([\"precision lowp float;\\n#define GLSLIFY 1\\nvarying vec4 fragColor;\\nvoid main() {\\n  gl_FragColor = vec4(fragColor.rgb * fragColor.a, fragColor.a);\\n}\\n\"]),vertex:glslify([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position;\\nattribute vec4 color;\\nattribute vec2 weight;\\n\\nuniform vec2 shape;\\nuniform mat3 viewTransform;\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n  vec3 vPosition = viewTransform * vec3( position + (weight-.5)/(shape-1.) , 1.0);\\n  fragColor = color;\\n  gl_Position = vec4(vPosition.xy, 0, vPosition.z);\\n}\\n\"]),pickFragment:glslify([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragId;\\nvarying vec2 vWeight;\\n\\nuniform vec2 shape;\\nuniform vec4 pickOffset;\\n\\nvoid main() {\\n  vec2 d = step(.5, vWeight);\\n  vec4 id = fragId + pickOffset;\\n  id.x += d.x + d.y*shape.x;\\n\\n  id.y += floor(id.x / 256.0);\\n  id.x -= floor(id.x / 256.0) * 256.0;\\n\\n  id.z += floor(id.y / 256.0);\\n  id.y -= floor(id.y / 256.0) * 256.0;\\n\\n  id.w += floor(id.z / 256.0);\\n  id.z -= floor(id.z / 256.0) * 256.0;\\n\\n  gl_FragColor = id/255.;\\n}\\n\"]),pickVertex:glslify([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position;\\nattribute vec4 pickId;\\nattribute vec2 weight;\\n\\nuniform vec2 shape;\\nuniform mat3 viewTransform;\\n\\nvarying vec4 fragId;\\nvarying vec2 vWeight;\\n\\nvoid main() {\\n  vWeight = weight;\\n\\n  fragId = pickId;\\n\\n  vec3 vPosition = viewTransform * vec3( position + (weight-.5)/(shape-1.) , 1.0);\\n  gl_Position = vec4(vPosition.xy, 0, vPosition.z);\\n}\\n\"])};/***/},/***/248:/***/function(__unused_webpack_module,exports,__nested_webpack_require_335054__){var glslify=__nested_webpack_require_335054__(6832);var createShader=__nested_webpack_require_335054__(5158);var vertSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position, nextPosition;\\nattribute float arcLength, lineWidth;\\nattribute vec4 color;\\n\\nuniform vec2 screenShape;\\nuniform float pixelRatio;\\nuniform mat4 model, view, projection;\\n\\nvarying vec4 fragColor;\\nvarying vec3 worldPosition;\\nvarying float pixelArcLength;\\n\\nvec4 project(vec3 p) {\\n  return projection * view * model * vec4(p, 1.0);\\n}\\n\\nvoid main() {\\n  vec4 startPoint = project(position);\\n  vec4 endPoint   = project(nextPosition);\\n\\n  vec2 A = startPoint.xy / startPoint.w;\\n  vec2 B =   endPoint.xy /   endPoint.w;\\n\\n  float clipAngle = atan(\\n    (B.y - A.y) * screenShape.y,\\n    (B.x - A.x) * screenShape.x\\n  );\\n\\n  vec2 offset = 0.5 * pixelRatio * lineWidth * vec2(\\n    sin(clipAngle),\\n    -cos(clipAngle)\\n  ) / screenShape;\\n\\n  gl_Position = vec4(startPoint.xy + startPoint.w * offset, startPoint.zw);\\n\\n  worldPosition = position;\\n  pixelArcLength = arcLength;\\n  fragColor = color;\\n}\\n\"]);var forwardFrag=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3      clipBounds[2];\\nuniform sampler2D dashTexture;\\nuniform float     dashScale;\\nuniform float     opacity;\\n\\nvarying vec3    worldPosition;\\nvarying float   pixelArcLength;\\nvarying vec4    fragColor;\\n\\nvoid main() {\\n  if (\\n    outOfRange(clipBounds[0], clipBounds[1], worldPosition) ||\\n    fragColor.a * opacity == 0.\\n  ) discard;\\n\\n  float dashWeight = texture2D(dashTexture, vec2(dashScale * pixelArcLength, 0)).r;\\n  if(dashWeight < 0.5) {\\n    discard;\\n  }\\n  gl_FragColor = fragColor * opacity;\\n}\\n\"]);var pickFrag=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\n#define FLOAT_MAX  1.70141184e38\\n#define FLOAT_MIN  1.17549435e-38\\n\\n// https://github.com/mikolalysenko/glsl-read-float/blob/master/index.glsl\\nvec4 packFloat(float v) {\\n  float av = abs(v);\\n\\n  //Handle special cases\\n  if(av < FLOAT_MIN) {\\n    return vec4(0.0, 0.0, 0.0, 0.0);\\n  } else if(v > FLOAT_MAX) {\\n    return vec4(127.0, 128.0, 0.0, 0.0) / 255.0;\\n  } else if(v < -FLOAT_MAX) {\\n    return vec4(255.0, 128.0, 0.0, 0.0) / 255.0;\\n  }\\n\\n  vec4 c = vec4(0,0,0,0);\\n\\n  //Compute exponent and mantissa\\n  float e = floor(log2(av));\\n  float m = av * pow(2.0, -e) - 1.0;\\n\\n  //Unpack mantissa\\n  c[1] = floor(128.0 * m);\\n  m -= c[1] / 128.0;\\n  c[2] = floor(32768.0 * m);\\n  m -= c[2] / 32768.0;\\n  c[3] = floor(8388608.0 * m);\\n\\n  //Unpack exponent\\n  float ebias = e + 127.0;\\n  c[0] = floor(ebias / 2.0);\\n  ebias -= c[0] * 2.0;\\n  c[1] += floor(ebias) * 128.0;\\n\\n  //Unpack sign bit\\n  c[0] += 128.0 * step(0.0, -v);\\n\\n  //Scale back to range\\n  return c / 255.0;\\n}\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform float pickId;\\nuniform vec3 clipBounds[2];\\n\\nvarying vec3 worldPosition;\\nvarying float pixelArcLength;\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], worldPosition)) discard;\\n\\n  gl_FragColor = vec4(pickId/255.0, packFloat(pixelArcLength).xyz);\\n}\"]);var ATTRIBUTES=[{name:'position',type:'vec3'},{name:'nextPosition',type:'vec3'},{name:'arcLength',type:'float'},{name:'lineWidth',type:'float'},{name:'color',type:'vec4'}];exports.createShader=function(gl){return createShader(gl,vertSrc,forwardFrag,null,ATTRIBUTES);};exports.createPickShader=function(gl){return createShader(gl,vertSrc,pickFrag,null,ATTRIBUTES);};/***/},/***/6086:/***/function(module,__unused_webpack_exports,__nested_webpack_require_339555__){\"use strict\";module.exports=createLinePlot;var createBuffer=__nested_webpack_require_339555__(5827);var createVAO=__nested_webpack_require_339555__(2944);var createTexture=__nested_webpack_require_339555__(8931);var UINT8_VIEW=new Uint8Array(4);var FLOAT_VIEW=new Float32Array(UINT8_VIEW.buffer);// https://github.com/mikolalysenko/glsl-read-float/blob/master/index.js\nfunction unpackFloat(x,y,z,w){UINT8_VIEW[0]=w;UINT8_VIEW[1]=z;UINT8_VIEW[2]=y;UINT8_VIEW[3]=x;return FLOAT_VIEW[0];}var bsearch=__nested_webpack_require_339555__(5070);var ndarray=__nested_webpack_require_339555__(5050);var shaders=__nested_webpack_require_339555__(248);var createShader=shaders.createShader;var createPickShader=shaders.createPickShader;var identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function distance(a,b){var s=0.0;for(var i=0;i<3;++i){var d=a[i]-b[i];s+=d*d;}return Math.sqrt(s);}function filterClipBounds(bounds){var result=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]];for(var i=0;i<3;++i){result[0][i]=Math.max(bounds[0][i],result[0][i]);result[1][i]=Math.min(bounds[1][i],result[1][i]);}return result;}function PickResult(tau,position,index,dataCoordinate){this.arcLength=tau;this.position=position;this.index=index;this.dataCoordinate=dataCoordinate;}function LinePlot(gl,shader,pickShader,buffer,vao,texture){this.gl=gl;this.shader=shader;this.pickShader=pickShader;this.buffer=buffer;this.vao=vao;this.clipBounds=[[-Infinity,-Infinity,-Infinity],[Infinity,Infinity,Infinity]];this.points=[];this.arcLength=[];this.vertexCount=0;this.bounds=[[0,0,0],[0,0,0]];this.pickId=0;this.lineWidth=1;this.texture=texture;this.dashScale=1;this.opacity=1;this.hasAlpha=false;this.dirty=true;this.pixelRatio=1;}var proto=LinePlot.prototype;proto.isTransparent=function(){return this.hasAlpha;};proto.isOpaque=function(){return!this.hasAlpha;};proto.pickSlots=1;proto.setPickBase=function(id){this.pickId=id;};proto.drawTransparent=proto.draw=function(camera){if(!this.vertexCount)return;var gl=this.gl;var shader=this.shader;var vao=this.vao;shader.bind();shader.uniforms={model:camera.model||identity,view:camera.view||identity,projection:camera.projection||identity,clipBounds:filterClipBounds(this.clipBounds),dashTexture:this.texture.bind(),dashScale:this.dashScale/this.arcLength[this.arcLength.length-1],opacity:this.opacity,screenShape:[gl.drawingBufferWidth,gl.drawingBufferHeight],pixelRatio:this.pixelRatio};vao.bind();vao.draw(gl.TRIANGLE_STRIP,this.vertexCount);vao.unbind();};proto.drawPick=function(camera){if(!this.vertexCount)return;var gl=this.gl;var shader=this.pickShader;var vao=this.vao;shader.bind();shader.uniforms={model:camera.model||identity,view:camera.view||identity,projection:camera.projection||identity,pickId:this.pickId,clipBounds:filterClipBounds(this.clipBounds),screenShape:[gl.drawingBufferWidth,gl.drawingBufferHeight],pixelRatio:this.pixelRatio};vao.bind();vao.draw(gl.TRIANGLE_STRIP,this.vertexCount);vao.unbind();};proto.update=function(options){var i,j;this.dirty=true;var connectGaps=!!options.connectGaps;if('dashScale'in options){this.dashScale=options.dashScale;}this.hasAlpha=false;// default to no transparent draw\nif('opacity'in options){this.opacity=+options.opacity;if(this.opacity<1){this.hasAlpha=true;}}// Recalculate buffer data\nvar buffer=[];var arcLengthArray=[];var pointArray=[];var arcLength=0.0;var vertexCount=0;var bounds=[[Infinity,Infinity,Infinity],[-Infinity,-Infinity,-Infinity]];var positions=options.position||options.positions;if(positions){// Default color\nvar colors=options.color||options.colors||[0,0,0,1];var lineWidth=options.lineWidth||1;var hadGap=false;fill_loop:for(i=1;i<positions.length;++i){var a=positions[i-1];var b=positions[i];arcLengthArray.push(arcLength);pointArray.push(a.slice());for(j=0;j<3;++j){if(isNaN(a[j])||isNaN(b[j])||!isFinite(a[j])||!isFinite(b[j])){if(!connectGaps&&buffer.length>0){for(var k=0;k<24;++k){buffer.push(buffer[buffer.length-12]);}vertexCount+=2;hadGap=true;}continue fill_loop;}bounds[0][j]=Math.min(bounds[0][j],a[j],b[j]);bounds[1][j]=Math.max(bounds[1][j],a[j],b[j]);}var acolor,bcolor;if(Array.isArray(colors[0])){acolor=colors.length>i-1?colors[i-1]:// using index value\ncolors.length>0?colors[colors.length-1]:// using last item\n[0,0,0,1];// using black\nbcolor=colors.length>i?colors[i]:// using index value\ncolors.length>0?colors[colors.length-1]:// using last item\n[0,0,0,1];// using black\n}else{acolor=bcolor=colors;}if(acolor.length===3){acolor=[acolor[0],acolor[1],acolor[2],1];}if(bcolor.length===3){bcolor=[bcolor[0],bcolor[1],bcolor[2],1];}if(!this.hasAlpha&&acolor[3]<1)this.hasAlpha=true;var w0;if(Array.isArray(lineWidth)){w0=lineWidth.length>i-1?lineWidth[i-1]:// using index value\nlineWidth.length>0?lineWidth[lineWidth.length-1]:// using last item\n[0,0,0,1];// using black\n}else{w0=lineWidth;}var t0=arcLength;arcLength+=distance(a,b);if(hadGap){for(j=0;j<2;++j){buffer.push(a[0],a[1],a[2],b[0],b[1],b[2],t0,w0,acolor[0],acolor[1],acolor[2],acolor[3]);}vertexCount+=2;hadGap=false;}buffer.push(a[0],a[1],a[2],b[0],b[1],b[2],t0,w0,acolor[0],acolor[1],acolor[2],acolor[3],a[0],a[1],a[2],b[0],b[1],b[2],t0,-w0,acolor[0],acolor[1],acolor[2],acolor[3],b[0],b[1],b[2],a[0],a[1],a[2],arcLength,-w0,bcolor[0],bcolor[1],bcolor[2],bcolor[3],b[0],b[1],b[2],a[0],a[1],a[2],arcLength,w0,bcolor[0],bcolor[1],bcolor[2],bcolor[3]);vertexCount+=4;}}this.buffer.update(buffer);arcLengthArray.push(arcLength);pointArray.push(positions[positions.length-1].slice());this.bounds=bounds;this.vertexCount=vertexCount;this.points=pointArray;this.arcLength=arcLengthArray;if('dashes'in options){var dashArray=options.dashes;// Calculate prefix sum\nvar prefixSum=dashArray.slice();prefixSum.unshift(0);for(i=1;i<prefixSum.length;++i){prefixSum[i]=prefixSum[i-1]+prefixSum[i];}var dashTexture=ndarray(new Array(256*4),[256,1,4]);for(i=0;i<256;++i){for(j=0;j<4;++j){dashTexture.set(i,0,j,0);}if(bsearch.le(prefixSum,prefixSum[prefixSum.length-1]*i/255.0)&1){dashTexture.set(i,0,0,0);}else{dashTexture.set(i,0,0,255);}}this.texture.setPixels(dashTexture);}};proto.dispose=function(){this.shader.dispose();this.vao.dispose();this.buffer.dispose();};proto.pick=function(selection){if(!selection){return null;}if(selection.id!==this.pickId){return null;}var tau=unpackFloat(selection.value[0],selection.value[1],selection.value[2],0);var index=bsearch.le(this.arcLength,tau);if(index<0){return null;}if(index===this.arcLength.length-1){return new PickResult(this.arcLength[this.arcLength.length-1],this.points[this.points.length-1].slice(),index);}var a=this.points[index];var b=this.points[Math.min(index+1,this.points.length-1)];var t=(tau-this.arcLength[index])/(this.arcLength[index+1]-this.arcLength[index]);var ti=1.0-t;var x=[0,0,0];for(var i=0;i<3;++i){x[i]=ti*a[i]+t*b[i];}var dataIndex=Math.min(t<0.5?index:index+1,this.points.length-1);return new PickResult(tau,x,dataIndex,this.points[dataIndex]);};function createLinePlot(options){var gl=options.gl||options.scene&&options.scene.gl;var shader=createShader(gl);shader.attributes.position.location=0;shader.attributes.nextPosition.location=1;shader.attributes.arcLength.location=2;shader.attributes.lineWidth.location=3;shader.attributes.color.location=4;var pickShader=createPickShader(gl);pickShader.attributes.position.location=0;pickShader.attributes.nextPosition.location=1;pickShader.attributes.arcLength.location=2;pickShader.attributes.lineWidth.location=3;pickShader.attributes.color.location=4;var buffer=createBuffer(gl);var vao=createVAO(gl,[{'buffer':buffer,'size':3,'offset':0,'stride':48},{'buffer':buffer,'size':3,'offset':12,'stride':48},{'buffer':buffer,'size':1,'offset':24,'stride':48},{'buffer':buffer,'size':1,'offset':28,'stride':48},{'buffer':buffer,'size':4,'offset':32,'stride':48}]);// Create texture for dash pattern\nvar defaultTexture=ndarray(new Array(256*4),[256,1,4]);for(var i=0;i<256*4;++i){defaultTexture.data[i]=255;}var texture=createTexture(gl,defaultTexture);texture.wrap=gl.REPEAT;var linePlot=new LinePlot(gl,shader,pickShader,buffer,vao,texture);linePlot.update(options);return linePlot;}/***/},/***/7332:/***/function(module){module.exports=clone;/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {mat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */function clone(a){var out=new Float32Array(16);out[0]=a[0];out[1]=a[1];out[2]=a[2];out[3]=a[3];out[4]=a[4];out[5]=a[5];out[6]=a[6];out[7]=a[7];out[8]=a[8];out[9]=a[9];out[10]=a[10];out[11]=a[11];out[12]=a[12];out[13]=a[13];out[14]=a[14];out[15]=a[15];return out;};/***/},/***/9823:/***/function(module){module.exports=create;/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */function create(){var out=new Float32Array(16);out[0]=1;out[1]=0;out[2]=0;out[3]=0;out[4]=0;out[5]=1;out[6]=0;out[7]=0;out[8]=0;out[9]=0;out[10]=1;out[11]=0;out[12]=0;out[13]=0;out[14]=0;out[15]=1;return out;};/***/},/***/7787:/***/function(module){module.exports=determinant;/**\n * Calculates the determinant of a mat4\n *\n * @param {mat4} a the source matrix\n * @returns {Number} determinant of a\n */function determinant(a){var a00=a[0],a01=a[1],a02=a[2],a03=a[3],a10=a[4],a11=a[5],a12=a[6],a13=a[7],a20=a[8],a21=a[9],a22=a[10],a23=a[11],a30=a[12],a31=a[13],a32=a[14],a33=a[15],b00=a00*a11-a01*a10,b01=a00*a12-a02*a10,b02=a00*a13-a03*a10,b03=a01*a12-a02*a11,b04=a01*a13-a03*a11,b05=a02*a13-a03*a12,b06=a20*a31-a21*a30,b07=a20*a32-a22*a30,b08=a20*a33-a23*a30,b09=a21*a32-a22*a31,b10=a21*a33-a23*a31,b11=a22*a33-a23*a32;// Calculate the determinant\nreturn b00*b11-b01*b10+b02*b09+b03*b08-b04*b07+b05*b06;};/***/},/***/5950:/***/function(module){module.exports=fromQuat;/**\n * Creates a matrix from a quaternion rotation.\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @returns {mat4} out\n */function fromQuat(out,q){var x=q[0],y=q[1],z=q[2],w=q[3],x2=x+x,y2=y+y,z2=z+z,xx=x*x2,yx=y*x2,yy=y*y2,zx=z*x2,zy=z*y2,zz=z*z2,wx=w*x2,wy=w*y2,wz=w*z2;out[0]=1-yy-zz;out[1]=yx+wz;out[2]=zx-wy;out[3]=0;out[4]=yx-wz;out[5]=1-xx-zz;out[6]=zy+wx;out[7]=0;out[8]=zx+wy;out[9]=zy-wx;out[10]=1-xx-yy;out[11]=0;out[12]=0;out[13]=0;out[14]=0;out[15]=1;return out;};/***/},/***/7280:/***/function(module){module.exports=fromRotationTranslation;/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, vec);\n *     var quatMat = mat4.create();\n *     quat4.toMat4(quat, quatMat);\n *     mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {vec3} v Translation vector\n * @returns {mat4} out\n */function fromRotationTranslation(out,q,v){// Quaternion math\nvar x=q[0],y=q[1],z=q[2],w=q[3],x2=x+x,y2=y+y,z2=z+z,xx=x*x2,xy=x*y2,xz=x*z2,yy=y*y2,yz=y*z2,zz=z*z2,wx=w*x2,wy=w*y2,wz=w*z2;out[0]=1-(yy+zz);out[1]=xy+wz;out[2]=xz-wy;out[3]=0;out[4]=xy-wz;out[5]=1-(xx+zz);out[6]=yz+wx;out[7]=0;out[8]=xz+wy;out[9]=yz-wx;out[10]=1-(xx+yy);out[11]=0;out[12]=v[0];out[13]=v[1];out[14]=v[2];out[15]=1;return out;};/***/},/***/9947:/***/function(module){module.exports=identity;/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */function identity(out){out[0]=1;out[1]=0;out[2]=0;out[3]=0;out[4]=0;out[5]=1;out[6]=0;out[7]=0;out[8]=0;out[9]=0;out[10]=1;out[11]=0;out[12]=0;out[13]=0;out[14]=0;out[15]=1;return out;};/***/},/***/7437:/***/function(module){module.exports=invert;/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */function invert(out,a){var a00=a[0],a01=a[1],a02=a[2],a03=a[3],a10=a[4],a11=a[5],a12=a[6],a13=a[7],a20=a[8],a21=a[9],a22=a[10],a23=a[11],a30=a[12],a31=a[13],a32=a[14],a33=a[15],b00=a00*a11-a01*a10,b01=a00*a12-a02*a10,b02=a00*a13-a03*a10,b03=a01*a12-a02*a11,b04=a01*a13-a03*a11,b05=a02*a13-a03*a12,b06=a20*a31-a21*a30,b07=a20*a32-a22*a30,b08=a20*a33-a23*a30,b09=a21*a32-a22*a31,b10=a21*a33-a23*a31,b11=a22*a33-a23*a32,// Calculate the determinant\ndet=b00*b11-b01*b10+b02*b09+b03*b08-b04*b07+b05*b06;if(!det){return null;}det=1.0/det;out[0]=(a11*b11-a12*b10+a13*b09)*det;out[1]=(a02*b10-a01*b11-a03*b09)*det;out[2]=(a31*b05-a32*b04+a33*b03)*det;out[3]=(a22*b04-a21*b05-a23*b03)*det;out[4]=(a12*b08-a10*b11-a13*b07)*det;out[5]=(a00*b11-a02*b08+a03*b07)*det;out[6]=(a32*b02-a30*b05-a33*b01)*det;out[7]=(a20*b05-a22*b02+a23*b01)*det;out[8]=(a10*b10-a11*b08+a13*b06)*det;out[9]=(a01*b08-a00*b10-a03*b06)*det;out[10]=(a30*b04-a31*b02+a33*b00)*det;out[11]=(a21*b02-a20*b04-a23*b00)*det;out[12]=(a11*b07-a10*b09-a12*b06)*det;out[13]=(a00*b09-a01*b07+a02*b06)*det;out[14]=(a31*b01-a30*b03-a32*b00)*det;out[15]=(a20*b03-a21*b01+a22*b00)*det;return out;};/***/},/***/3012:/***/function(module,__unused_webpack_exports,__nested_webpack_require_352367__){var identity=__nested_webpack_require_352367__(9947);module.exports=lookAt;/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {vec3} eye Position of the viewer\n * @param {vec3} center Point the viewer is looking at\n * @param {vec3} up vec3 pointing up\n * @returns {mat4} out\n */function lookAt(out,eye,center,up){var x0,x1,x2,y0,y1,y2,z0,z1,z2,len,eyex=eye[0],eyey=eye[1],eyez=eye[2],upx=up[0],upy=up[1],upz=up[2],centerx=center[0],centery=center[1],centerz=center[2];if(Math.abs(eyex-centerx)<0.000001&&Math.abs(eyey-centery)<0.000001&&Math.abs(eyez-centerz)<0.000001){return identity(out);}z0=eyex-centerx;z1=eyey-centery;z2=eyez-centerz;len=1/Math.sqrt(z0*z0+z1*z1+z2*z2);z0*=len;z1*=len;z2*=len;x0=upy*z2-upz*z1;x1=upz*z0-upx*z2;x2=upx*z1-upy*z0;len=Math.sqrt(x0*x0+x1*x1+x2*x2);if(!len){x0=0;x1=0;x2=0;}else{len=1/len;x0*=len;x1*=len;x2*=len;}y0=z1*x2-z2*x1;y1=z2*x0-z0*x2;y2=z0*x1-z1*x0;len=Math.sqrt(y0*y0+y1*y1+y2*y2);if(!len){y0=0;y1=0;y2=0;}else{len=1/len;y0*=len;y1*=len;y2*=len;}out[0]=x0;out[1]=y0;out[2]=z0;out[3]=0;out[4]=x1;out[5]=y1;out[6]=z1;out[7]=0;out[8]=x2;out[9]=y2;out[10]=z2;out[11]=0;out[12]=-(x0*eyex+x1*eyey+x2*eyez);out[13]=-(y0*eyex+y1*eyey+y2*eyez);out[14]=-(z0*eyex+z1*eyey+z2*eyez);out[15]=1;return out;};/***/},/***/104:/***/function(module){module.exports=multiply;/**\n * Multiplies two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the first operand\n * @param {mat4} b the second operand\n * @returns {mat4} out\n */function multiply(out,a,b){var a00=a[0],a01=a[1],a02=a[2],a03=a[3],a10=a[4],a11=a[5],a12=a[6],a13=a[7],a20=a[8],a21=a[9],a22=a[10],a23=a[11],a30=a[12],a31=a[13],a32=a[14],a33=a[15];// Cache only the current line of the second matrix\nvar b0=b[0],b1=b[1],b2=b[2],b3=b[3];out[0]=b0*a00+b1*a10+b2*a20+b3*a30;out[1]=b0*a01+b1*a11+b2*a21+b3*a31;out[2]=b0*a02+b1*a12+b2*a22+b3*a32;out[3]=b0*a03+b1*a13+b2*a23+b3*a33;b0=b[4];b1=b[5];b2=b[6];b3=b[7];out[4]=b0*a00+b1*a10+b2*a20+b3*a30;out[5]=b0*a01+b1*a11+b2*a21+b3*a31;out[6]=b0*a02+b1*a12+b2*a22+b3*a32;out[7]=b0*a03+b1*a13+b2*a23+b3*a33;b0=b[8];b1=b[9];b2=b[10];b3=b[11];out[8]=b0*a00+b1*a10+b2*a20+b3*a30;out[9]=b0*a01+b1*a11+b2*a21+b3*a31;out[10]=b0*a02+b1*a12+b2*a22+b3*a32;out[11]=b0*a03+b1*a13+b2*a23+b3*a33;b0=b[12];b1=b[13];b2=b[14];b3=b[15];out[12]=b0*a00+b1*a10+b2*a20+b3*a30;out[13]=b0*a01+b1*a11+b2*a21+b3*a31;out[14]=b0*a02+b1*a12+b2*a22+b3*a32;out[15]=b0*a03+b1*a13+b2*a23+b3*a33;return out;};/***/},/***/5268:/***/function(module){module.exports=ortho;/**\n * Generates a orthogonal projection matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */function ortho(out,left,right,bottom,top,near,far){var lr=1/(left-right),bt=1/(bottom-top),nf=1/(near-far);out[0]=-2*lr;out[1]=0;out[2]=0;out[3]=0;out[4]=0;out[5]=-2*bt;out[6]=0;out[7]=0;out[8]=0;out[9]=0;out[10]=2*nf;out[11]=0;out[12]=(left+right)*lr;out[13]=(top+bottom)*bt;out[14]=(far+near)*nf;out[15]=1;return out;};/***/},/***/1120:/***/function(module){module.exports=perspective;/**\n * Generates a perspective projection matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */function perspective(out,fovy,aspect,near,far){var f=1.0/Math.tan(fovy/2),nf=1/(near-far);out[0]=f/aspect;out[1]=0;out[2]=0;out[3]=0;out[4]=0;out[5]=f;out[6]=0;out[7]=0;out[8]=0;out[9]=0;out[10]=(far+near)*nf;out[11]=-1;out[12]=0;out[13]=0;out[14]=2*far*near*nf;out[15]=0;return out;};/***/},/***/4422:/***/function(module){module.exports=rotate;/**\n * Rotates a mat4 by the given angle\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {vec3} axis the axis to rotate around\n * @returns {mat4} out\n */function rotate(out,a,rad,axis){var x=axis[0],y=axis[1],z=axis[2],len=Math.sqrt(x*x+y*y+z*z),s,c,t,a00,a01,a02,a03,a10,a11,a12,a13,a20,a21,a22,a23,b00,b01,b02,b10,b11,b12,b20,b21,b22;if(Math.abs(len)<0.000001){return null;}len=1/len;x*=len;y*=len;z*=len;s=Math.sin(rad);c=Math.cos(rad);t=1-c;a00=a[0];a01=a[1];a02=a[2];a03=a[3];a10=a[4];a11=a[5];a12=a[6];a13=a[7];a20=a[8];a21=a[9];a22=a[10];a23=a[11];// Construct the elements of the rotation matrix\nb00=x*x*t+c;b01=y*x*t+z*s;b02=z*x*t-y*s;b10=x*y*t-z*s;b11=y*y*t+c;b12=z*y*t+x*s;b20=x*z*t+y*s;b21=y*z*t-x*s;b22=z*z*t+c;// Perform rotation-specific matrix multiplication\nout[0]=a00*b00+a10*b01+a20*b02;out[1]=a01*b00+a11*b01+a21*b02;out[2]=a02*b00+a12*b01+a22*b02;out[3]=a03*b00+a13*b01+a23*b02;out[4]=a00*b10+a10*b11+a20*b12;out[5]=a01*b10+a11*b11+a21*b12;out[6]=a02*b10+a12*b11+a22*b12;out[7]=a03*b10+a13*b11+a23*b12;out[8]=a00*b20+a10*b21+a20*b22;out[9]=a01*b20+a11*b21+a21*b22;out[10]=a02*b20+a12*b21+a22*b22;out[11]=a03*b20+a13*b21+a23*b22;if(a!==out){// If the source and destination differ, copy the unchanged last row\nout[12]=a[12];out[13]=a[13];out[14]=a[14];out[15]=a[15];}return out;};/***/},/***/6109:/***/function(module){module.exports=rotateX;/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */function rotateX(out,a,rad){var s=Math.sin(rad),c=Math.cos(rad),a10=a[4],a11=a[5],a12=a[6],a13=a[7],a20=a[8],a21=a[9],a22=a[10],a23=a[11];if(a!==out){// If the source and destination differ, copy the unchanged rows\nout[0]=a[0];out[1]=a[1];out[2]=a[2];out[3]=a[3];out[12]=a[12];out[13]=a[13];out[14]=a[14];out[15]=a[15];}// Perform axis-specific matrix multiplication\nout[4]=a10*c+a20*s;out[5]=a11*c+a21*s;out[6]=a12*c+a22*s;out[7]=a13*c+a23*s;out[8]=a20*c-a10*s;out[9]=a21*c-a11*s;out[10]=a22*c-a12*s;out[11]=a23*c-a13*s;return out;};/***/},/***/7115:/***/function(module){module.exports=rotateY;/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */function rotateY(out,a,rad){var s=Math.sin(rad),c=Math.cos(rad),a00=a[0],a01=a[1],a02=a[2],a03=a[3],a20=a[8],a21=a[9],a22=a[10],a23=a[11];if(a!==out){// If the source and destination differ, copy the unchanged rows\nout[4]=a[4];out[5]=a[5];out[6]=a[6];out[7]=a[7];out[12]=a[12];out[13]=a[13];out[14]=a[14];out[15]=a[15];}// Perform axis-specific matrix multiplication\nout[0]=a00*c-a20*s;out[1]=a01*c-a21*s;out[2]=a02*c-a22*s;out[3]=a03*c-a23*s;out[8]=a00*s+a20*c;out[9]=a01*s+a21*c;out[10]=a02*s+a22*c;out[11]=a03*s+a23*c;return out;};/***/},/***/5240:/***/function(module){module.exports=rotateZ;/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */function rotateZ(out,a,rad){var s=Math.sin(rad),c=Math.cos(rad),a00=a[0],a01=a[1],a02=a[2],a03=a[3],a10=a[4],a11=a[5],a12=a[6],a13=a[7];if(a!==out){// If the source and destination differ, copy the unchanged last row\nout[8]=a[8];out[9]=a[9];out[10]=a[10];out[11]=a[11];out[12]=a[12];out[13]=a[13];out[14]=a[14];out[15]=a[15];}// Perform axis-specific matrix multiplication\nout[0]=a00*c+a10*s;out[1]=a01*c+a11*s;out[2]=a02*c+a12*s;out[3]=a03*c+a13*s;out[4]=a10*c-a00*s;out[5]=a11*c-a01*s;out[6]=a12*c-a02*s;out[7]=a13*c-a03*s;return out;};/***/},/***/3668:/***/function(module){module.exports=scale;/**\n * Scales the mat4 by the dimensions in the given vec3\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to scale\n * @param {vec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/function scale(out,a,v){var x=v[0],y=v[1],z=v[2];out[0]=a[0]*x;out[1]=a[1]*x;out[2]=a[2]*x;out[3]=a[3]*x;out[4]=a[4]*y;out[5]=a[5]*y;out[6]=a[6]*y;out[7]=a[7]*y;out[8]=a[8]*z;out[9]=a[9]*z;out[10]=a[10]*z;out[11]=a[11]*z;out[12]=a[12];out[13]=a[13];out[14]=a[14];out[15]=a[15];return out;};/***/},/***/998:/***/function(module){module.exports=translate;/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to translate\n * @param {vec3} v vector to translate by\n * @returns {mat4} out\n */function translate(out,a,v){var x=v[0],y=v[1],z=v[2],a00,a01,a02,a03,a10,a11,a12,a13,a20,a21,a22,a23;if(a===out){out[12]=a[0]*x+a[4]*y+a[8]*z+a[12];out[13]=a[1]*x+a[5]*y+a[9]*z+a[13];out[14]=a[2]*x+a[6]*y+a[10]*z+a[14];out[15]=a[3]*x+a[7]*y+a[11]*z+a[15];}else{a00=a[0];a01=a[1];a02=a[2];a03=a[3];a10=a[4];a11=a[5];a12=a[6];a13=a[7];a20=a[8];a21=a[9];a22=a[10];a23=a[11];out[0]=a00;out[1]=a01;out[2]=a02;out[3]=a03;out[4]=a10;out[5]=a11;out[6]=a12;out[7]=a13;out[8]=a20;out[9]=a21;out[10]=a22;out[11]=a23;out[12]=a00*x+a10*y+a20*z+a[12];out[13]=a01*x+a11*y+a21*z+a[13];out[14]=a02*x+a12*y+a22*z+a[14];out[15]=a03*x+a13*y+a23*z+a[15];}return out;};/***/},/***/2142:/***/function(module){module.exports=transpose;/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */function transpose(out,a){// If we are transposing ourselves we can skip a few steps but have to cache some values\nif(out===a){var a01=a[1],a02=a[2],a03=a[3],a12=a[6],a13=a[7],a23=a[11];out[1]=a[4];out[2]=a[8];out[3]=a[12];out[4]=a01;out[6]=a[9];out[7]=a[13];out[8]=a02;out[9]=a12;out[11]=a[14];out[12]=a03;out[13]=a13;out[14]=a23;}else{out[0]=a[0];out[1]=a[4];out[2]=a[8];out[3]=a[12];out[4]=a[1];out[5]=a[5];out[6]=a[9];out[7]=a[13];out[8]=a[2];out[9]=a[6];out[10]=a[10];out[11]=a[14];out[12]=a[3];out[13]=a[7];out[14]=a[11];out[15]=a[15];}return out;};/***/},/***/4340:/***/function(module,__unused_webpack_exports,__nested_webpack_require_362749__){\"use strict\";var barycentric=__nested_webpack_require_362749__(957);var closestPointToTriangle=__nested_webpack_require_362749__(7309);module.exports=closestPointToPickLocation;function xformMatrix(m,v){var out=[0,0,0,0];for(var i=0;i<4;++i){for(var j=0;j<4;++j){out[j]+=m[4*i+j]*v[i];}}return out;}function projectVertex(v,model,view,projection,resolution){var p=xformMatrix(projection,xformMatrix(view,xformMatrix(model,[v[0],v[1],v[2],1])));for(var i=0;i<3;++i){p[i]/=p[3];}return[0.5*resolution[0]*(1.0+p[0]),0.5*resolution[1]*(1.0-p[1])];}function barycentricCoord(simplex,point){if(simplex.length===2){var d0=0.0;var d1=0.0;for(var i=0;i<2;++i){d0+=Math.pow(point[i]-simplex[0][i],2);d1+=Math.pow(point[i]-simplex[1][i],2);}d0=Math.sqrt(d0);d1=Math.sqrt(d1);if(d0+d1<1e-6){return[1,0];}return[d1/(d0+d1),d0/(d1+d0)];}else if(simplex.length===3){var closestPoint=[0,0];closestPointToTriangle(simplex[0],simplex[1],simplex[2],point,closestPoint);return barycentric(simplex,closestPoint);}return[];}function interpolate(simplex,weights){var result=[0,0,0];for(var i=0;i<simplex.length;++i){var p=simplex[i];var w=weights[i];for(var j=0;j<3;++j){result[j]+=w*p[j];}}return result;}function closestPointToPickLocation(simplex,pixelCoord,model,view,projection,resolution){if(simplex.length===1){return[0,simplex[0].slice()];}var simplex2D=new Array(simplex.length);for(var i=0;i<simplex.length;++i){simplex2D[i]=projectVertex(simplex[i],model,view,projection,resolution);}var closestIndex=0;var closestDist=Infinity;for(var i=0;i<simplex2D.length;++i){var d2=0.0;for(var j=0;j<2;++j){d2+=Math.pow(simplex2D[i][j]-pixelCoord[j],2);}if(d2<closestDist){closestDist=d2;closestIndex=i;}}var weights=barycentricCoord(simplex2D,pixelCoord);var s=0.0;for(var i=0;i<3;++i){if(weights[i]<-0.001||weights[i]>1.0001){return null;}s+=weights[i];}if(Math.abs(s-1.0)>0.001){return null;}return[closestIndex,interpolate(simplex,weights),weights];}/***/},/***/2056:/***/function(__unused_webpack_module,exports,__nested_webpack_require_364736__){var glslify=__nested_webpack_require_364736__(6832);var triVertSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position, normal;\\nattribute vec4 color;\\nattribute vec2 uv;\\n\\nuniform mat4 model\\n           , view\\n           , projection\\n           , inverseModel;\\nuniform vec3 eyePosition\\n           , lightPosition;\\n\\nvarying vec3 f_normal\\n           , f_lightDirection\\n           , f_eyeDirection\\n           , f_data;\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvec4 project(vec3 p) {\\n  return projection * view * model * vec4(p, 1.0);\\n}\\n\\nvoid main() {\\n  gl_Position      = project(position);\\n\\n  //Lighting geometry parameters\\n  vec4 cameraCoordinate = view * vec4(position , 1.0);\\n  cameraCoordinate.xyz /= cameraCoordinate.w;\\n  f_lightDirection = lightPosition - cameraCoordinate.xyz;\\n  f_eyeDirection   = eyePosition - cameraCoordinate.xyz;\\n  f_normal  = normalize((vec4(normal, 0.0) * inverseModel).xyz);\\n\\n  f_color          = color;\\n  f_data           = position;\\n  f_uv             = uv;\\n}\\n\"]);var triFragSrc=glslify([\"#extension GL_OES_standard_derivatives : enable\\n\\nprecision highp float;\\n#define GLSLIFY 1\\n\\nfloat beckmannDistribution(float x, float roughness) {\\n  float NdotH = max(x, 0.0001);\\n  float cos2Alpha = NdotH * NdotH;\\n  float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\\n  float roughness2 = roughness * roughness;\\n  float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\\n  return exp(tan2Alpha / roughness2) / denom;\\n}\\n\\nfloat cookTorranceSpecular(\\n  vec3 lightDirection,\\n  vec3 viewDirection,\\n  vec3 surfaceNormal,\\n  float roughness,\\n  float fresnel) {\\n\\n  float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);\\n  float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);\\n\\n  //Half angle vector\\n  vec3 H = normalize(lightDirection + viewDirection);\\n\\n  //Geometric term\\n  float NdotH = max(dot(surfaceNormal, H), 0.0);\\n  float VdotH = max(dot(viewDirection, H), 0.000001);\\n  float LdotH = max(dot(lightDirection, H), 0.000001);\\n  float G1 = (2.0 * NdotH * VdotN) / VdotH;\\n  float G2 = (2.0 * NdotH * LdotN) / LdotH;\\n  float G = min(1.0, min(G1, G2));\\n  \\n  //Distribution term\\n  float D = beckmannDistribution(NdotH, roughness);\\n\\n  //Fresnel term\\n  float F = pow(1.0 - VdotN, fresnel);\\n\\n  //Multiply terms and done\\n  return  G * F * D / max(3.14159265 * VdotN, 0.000001);\\n}\\n\\n//#pragma glslify: beckmann = require(glsl-specular-beckmann) // used in gl-surface3d\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3 clipBounds[2];\\nuniform float roughness\\n            , fresnel\\n            , kambient\\n            , kdiffuse\\n            , kspecular;\\nuniform sampler2D texture;\\n\\nvarying vec3 f_normal\\n           , f_lightDirection\\n           , f_eyeDirection\\n           , f_data;\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n  if (f_color.a == 0.0 ||\\n    outOfRange(clipBounds[0], clipBounds[1], f_data)\\n  ) discard;\\n\\n  vec3 N = normalize(f_normal);\\n  vec3 L = normalize(f_lightDirection);\\n  vec3 V = normalize(f_eyeDirection);\\n\\n  if(gl_FrontFacing) {\\n    N = -N;\\n  }\\n\\n  float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel)));\\n  //float specular = max(0.0, beckmann(L, V, N, roughness)); // used in gl-surface3d\\n\\n  float diffuse  = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\\n\\n  vec4 surfaceColor = vec4(f_color.rgb, 1.0) * texture2D(texture, f_uv);\\n  vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular,  1.0);\\n\\n  gl_FragColor = litColor * f_color.a;\\n}\\n\"]);var edgeVertSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position;\\nattribute vec4 color;\\nattribute vec2 uv;\\n\\nuniform mat4 model, view, projection;\\n\\nvarying vec4 f_color;\\nvarying vec3 f_data;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n  gl_Position = projection * view * model * vec4(position, 1.0);\\n  f_color = color;\\n  f_data  = position;\\n  f_uv    = uv;\\n}\"]);var edgeFragSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3 clipBounds[2];\\nuniform sampler2D texture;\\nuniform float opacity;\\n\\nvarying vec4 f_color;\\nvarying vec3 f_data;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], f_data)) discard;\\n\\n  gl_FragColor = f_color * texture2D(texture, f_uv) * opacity;\\n}\"]);var pointVertSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nattribute vec3 position;\\nattribute vec4 color;\\nattribute vec2 uv;\\nattribute float pointSize;\\n\\nuniform mat4 model, view, projection;\\nuniform vec3 clipBounds[2];\\n\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], position)) {\\n\\n    gl_Position = vec4(0.0, 0.0 ,0.0 ,0.0);\\n  } else {\\n    gl_Position = projection * view * model * vec4(position, 1.0);\\n  }\\n  gl_PointSize = pointSize;\\n  f_color = color;\\n  f_uv = uv;\\n}\"]);var pointFragSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nuniform sampler2D texture;\\nuniform float opacity;\\n\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n  vec2 pointR = gl_PointCoord.xy - vec2(0.5, 0.5);\\n  if(dot(pointR, pointR) > 0.25) {\\n    discard;\\n  }\\n  gl_FragColor = f_color * texture2D(texture, f_uv) * opacity;\\n}\"]);var pickVertSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position;\\nattribute vec4 id;\\n\\nuniform mat4 model, view, projection;\\n\\nvarying vec3 f_position;\\nvarying vec4 f_id;\\n\\nvoid main() {\\n  gl_Position = projection * view * model * vec4(position, 1.0);\\n  f_id        = id;\\n  f_position  = position;\\n}\"]);var pickFragSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3  clipBounds[2];\\nuniform float pickId;\\n\\nvarying vec3 f_position;\\nvarying vec4 f_id;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\\n\\n  gl_FragColor = vec4(pickId, f_id.xyz);\\n}\"]);var pickPointVertSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nattribute vec3  position;\\nattribute float pointSize;\\nattribute vec4  id;\\n\\nuniform mat4 model, view, projection;\\nuniform vec3 clipBounds[2];\\n\\nvarying vec3 f_position;\\nvarying vec4 f_id;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], position)) {\\n\\n    gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\\n  } else {\\n    gl_Position  = projection * view * model * vec4(position, 1.0);\\n    gl_PointSize = pointSize;\\n  }\\n  f_id         = id;\\n  f_position   = position;\\n}\"]);var contourVertSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position;\\n\\nuniform mat4 model, view, projection;\\n\\nvoid main() {\\n  gl_Position = projection * view * model * vec4(position, 1.0);\\n}\"]);var contourFragSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nuniform vec3 contourColor;\\n\\nvoid main() {\\n  gl_FragColor = vec4(contourColor, 1.0);\\n}\\n\"]);exports.meshShader={vertex:triVertSrc,fragment:triFragSrc,attributes:[{name:'position',type:'vec3'},{name:'normal',type:'vec3'},{name:'color',type:'vec4'},{name:'uv',type:'vec2'}]};exports.wireShader={vertex:edgeVertSrc,fragment:edgeFragSrc,attributes:[{name:'position',type:'vec3'},{name:'color',type:'vec4'},{name:'uv',type:'vec2'}]};exports.pointShader={vertex:pointVertSrc,fragment:pointFragSrc,attributes:[{name:'position',type:'vec3'},{name:'color',type:'vec4'},{name:'uv',type:'vec2'},{name:'pointSize',type:'float'}]};exports.pickShader={vertex:pickVertSrc,fragment:pickFragSrc,attributes:[{name:'position',type:'vec3'},{name:'id',type:'vec4'}]};exports.pointPickShader={vertex:pickPointVertSrc,fragment:pickFragSrc,attributes:[{name:'position',type:'vec3'},{name:'pointSize',type:'float'},{name:'id',type:'vec4'}]};exports.contourShader={vertex:contourVertSrc,fragment:contourFragSrc,attributes:[{name:'position',type:'vec3'}]};/***/},/***/8116:/***/function(module,__unused_webpack_exports,__nested_webpack_require_375125__){\"use strict\";var DEFAULT_VERTEX_NORMALS_EPSILON=1e-6;// may be too large if triangles are very small\nvar DEFAULT_FACE_NORMALS_EPSILON=1e-6;var createShader=__nested_webpack_require_375125__(5158);var createBuffer=__nested_webpack_require_375125__(5827);var createVAO=__nested_webpack_require_375125__(2944);var createTexture=__nested_webpack_require_375125__(8931);var normals=__nested_webpack_require_375125__(115);var multiply=__nested_webpack_require_375125__(104);var invert=__nested_webpack_require_375125__(7437);var ndarray=__nested_webpack_require_375125__(5050);var colormap=__nested_webpack_require_375125__(9156);var getContour=__nested_webpack_require_375125__(7212);var pool=__nested_webpack_require_375125__(5306);var shaders=__nested_webpack_require_375125__(2056);var closestPoint=__nested_webpack_require_375125__(4340);var meshShader=shaders.meshShader;var wireShader=shaders.wireShader;var pointShader=shaders.pointShader;var pickShader=shaders.pickShader;var pointPickShader=shaders.pointPickShader;var contourShader=shaders.contourShader;var IDENTITY=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function SimplicialMesh(gl,texture,triShader,lineShader,pointShader,pickShader,pointPickShader,contourShader,trianglePositions,triangleIds,triangleColors,triangleUVs,triangleNormals,triangleVAO,edgePositions,edgeIds,edgeColors,edgeUVs,edgeVAO,pointPositions,pointIds,pointColors,pointUVs,pointSizes,pointVAO,contourPositions,contourVAO){this.gl=gl;this.pixelRatio=1;this.cells=[];this.positions=[];this.intensity=[];this.texture=texture;this.dirty=true;this.triShader=triShader;this.lineShader=lineShader;this.pointShader=pointShader;this.pickShader=pickShader;this.pointPickShader=pointPickShader;this.contourShader=contourShader;this.trianglePositions=trianglePositions;this.triangleColors=triangleColors;this.triangleNormals=triangleNormals;this.triangleUVs=triangleUVs;this.triangleIds=triangleIds;this.triangleVAO=triangleVAO;this.triangleCount=0;this.lineWidth=1;this.edgePositions=edgePositions;this.edgeColors=edgeColors;this.edgeUVs=edgeUVs;this.edgeIds=edgeIds;this.edgeVAO=edgeVAO;this.edgeCount=0;this.pointPositions=pointPositions;this.pointColors=pointColors;this.pointUVs=pointUVs;this.pointSizes=pointSizes;this.pointIds=pointIds;this.pointVAO=pointVAO;this.pointCount=0;this.contourLineWidth=1;this.contourPositions=contourPositions;this.contourVAO=contourVAO;this.contourCount=0;this.contourColor=[0,0,0];this.contourEnable=true;this.pickVertex=true;this.pickId=1;this.bounds=[[Infinity,Infinity,Infinity],[-Infinity,-Infinity,-Infinity]];this.clipBounds=[[-Infinity,-Infinity,-Infinity],[Infinity,Infinity,Infinity]];this.lightPosition=[1e5,1e5,0];this.ambientLight=0.8;this.diffuseLight=0.8;this.specularLight=2.0;this.roughness=0.5;this.fresnel=1.5;this.opacity=1.0;this.hasAlpha=false;this.opacityscale=false;this._model=IDENTITY;this._view=IDENTITY;this._projection=IDENTITY;this._resolution=[1,1];}var proto=SimplicialMesh.prototype;proto.isOpaque=function(){return!this.hasAlpha;};proto.isTransparent=function(){return this.hasAlpha;};proto.pickSlots=1;proto.setPickBase=function(id){this.pickId=id;};function getOpacityFromScale(ratio,opacityscale){if(!opacityscale)return 1;if(!opacityscale.length)return 1;for(var i=0;i<opacityscale.length;++i){if(opacityscale.length<2)return 1;if(opacityscale[i][0]===ratio)return opacityscale[i][1];if(opacityscale[i][0]>ratio&&i>0){var d=(opacityscale[i][0]-ratio)/(opacityscale[i][0]-opacityscale[i-1][0]);return opacityscale[i][1]*(1-d)+d*opacityscale[i-1][1];}}return 1;}function genColormap(param,opacityscale){var colors=colormap({colormap:param,nshades:256,format:'rgba'});var result=new Uint8Array(256*4);for(var i=0;i<256;++i){var c=colors[i];for(var j=0;j<3;++j){result[4*i+j]=c[j];}if(!opacityscale){result[4*i+3]=255*c[3];}else{result[4*i+3]=255*getOpacityFromScale(i/255.0,opacityscale);}}return ndarray(result,[256,256,4],[4,0,1]);}function takeZComponent(array){var n=array.length;var result=new Array(n);for(var i=0;i<n;++i){result[i]=array[i][2];}return result;}proto.highlight=function(selection){if(!selection||!this.contourEnable){this.contourCount=0;return;}var level=getContour(this.cells,this.intensity,selection.intensity);var cells=level.cells;var vertexIds=level.vertexIds;var vertexWeights=level.vertexWeights;var numCells=cells.length;var result=pool.mallocFloat32(2*3*numCells);var ptr=0;for(var i=0;i<numCells;++i){var c=cells[i];for(var j=0;j<2;++j){var v=c[0];if(c.length===2){v=c[j];}var a=vertexIds[v][0];var b=vertexIds[v][1];var w=vertexWeights[v];var wi=1.0-w;var pa=this.positions[a];var pb=this.positions[b];for(var k=0;k<3;++k){result[ptr++]=w*pa[k]+wi*pb[k];}}}this.contourCount=ptr/3|0;this.contourPositions.update(result.subarray(0,ptr));pool.free(result);};proto.update=function(params){params=params||{};var gl=this.gl;this.dirty=true;if('contourEnable'in params){this.contourEnable=params.contourEnable;}if('contourColor'in params){this.contourColor=params.contourColor;}if('lineWidth'in params){this.lineWidth=params.lineWidth;}if('lightPosition'in params){this.lightPosition=params.lightPosition;}this.hasAlpha=false;// default to no transparent draw\nif('opacity'in params){this.opacity=params.opacity;if(this.opacity<1){this.hasAlpha=true;}}if('opacityscale'in params){this.opacityscale=params.opacityscale;this.hasAlpha=true;}if('ambient'in params){this.ambientLight=params.ambient;}if('diffuse'in params){this.diffuseLight=params.diffuse;}if('specular'in params){this.specularLight=params.specular;}if('roughness'in params){this.roughness=params.roughness;}if('fresnel'in params){this.fresnel=params.fresnel;}if(params.texture){this.texture.dispose();this.texture=createTexture(gl,params.texture);}else if(params.colormap){this.texture.shape=[256,256];this.texture.minFilter=gl.LINEAR_MIPMAP_LINEAR;this.texture.magFilter=gl.LINEAR;this.texture.setPixels(genColormap(params.colormap,this.opacityscale));this.texture.generateMipmap();}var cells=params.cells;var positions=params.positions;if(!positions||!cells){return;}var tPos=[];var tCol=[];var tNor=[];var tUVs=[];var tIds=[];var ePos=[];var eCol=[];var eUVs=[];var eIds=[];var pPos=[];var pCol=[];var pUVs=[];var pSiz=[];var pIds=[];//Save geometry data for picking calculations\nthis.cells=cells;this.positions=positions;//Compute normals\nvar vertexNormals=params.vertexNormals;var cellNormals=params.cellNormals;var vertexNormalsEpsilon=params.vertexNormalsEpsilon===void 0?DEFAULT_VERTEX_NORMALS_EPSILON:params.vertexNormalsEpsilon;var faceNormalsEpsilon=params.faceNormalsEpsilon===void 0?DEFAULT_FACE_NORMALS_EPSILON:params.faceNormalsEpsilon;if(params.useFacetNormals&&!cellNormals){cellNormals=normals.faceNormals(cells,positions,faceNormalsEpsilon);}if(!cellNormals&&!vertexNormals){vertexNormals=normals.vertexNormals(cells,positions,vertexNormalsEpsilon);}//Compute colors\nvar vertexColors=params.vertexColors;var cellColors=params.cellColors;var meshColor=params.meshColor||[1,1,1,1];//UVs\nvar vertexUVs=params.vertexUVs;var vertexIntensity=params.vertexIntensity;var cellUVs=params.cellUVs;var cellIntensity=params.cellIntensity;var intensityLo=Infinity;var intensityHi=-Infinity;if(!vertexUVs&&!cellUVs){if(vertexIntensity){if(params.vertexIntensityBounds){intensityLo=+params.vertexIntensityBounds[0];intensityHi=+params.vertexIntensityBounds[1];}else{for(var i=0;i<vertexIntensity.length;++i){var f=vertexIntensity[i];intensityLo=Math.min(intensityLo,f);intensityHi=Math.max(intensityHi,f);}}}else if(cellIntensity){if(params.cellIntensityBounds){intensityLo=+params.cellIntensityBounds[0];intensityHi=+params.cellIntensityBounds[1];}else{for(var i=0;i<cellIntensity.length;++i){var f=cellIntensity[i];intensityLo=Math.min(intensityLo,f);intensityHi=Math.max(intensityHi,f);}}}else{for(var i=0;i<positions.length;++i){var f=positions[i][2];intensityLo=Math.min(intensityLo,f);intensityHi=Math.max(intensityHi,f);}}}if(vertexIntensity){this.intensity=vertexIntensity;}else if(cellIntensity){this.intensity=cellIntensity;}else{this.intensity=takeZComponent(positions);}this.pickVertex=!(cellIntensity||cellColors);//Point size\nvar pointSizes=params.pointSizes;var meshPointSize=params.pointSize||1.0;//Update bounds\nthis.bounds=[[Infinity,Infinity,Infinity],[-Infinity,-Infinity,-Infinity]];for(var i=0;i<positions.length;++i){var p=positions[i];for(var j=0;j<3;++j){if(isNaN(p[j])||!isFinite(p[j])){continue;}this.bounds[0][j]=Math.min(this.bounds[0][j],p[j]);this.bounds[1][j]=Math.max(this.bounds[1][j],p[j]);}}//Pack cells into buffers\nvar triangleCount=0;var edgeCount=0;var pointCount=0;fill_loop:for(var i=0;i<cells.length;++i){var cell=cells[i];switch(cell.length){case 1:var v=cell[0];var p=positions[v];//Check NaNs\nfor(var j=0;j<3;++j){if(isNaN(p[j])||!isFinite(p[j])){continue fill_loop;}}pPos.push(p[0],p[1],p[2]);var c;if(vertexColors){c=vertexColors[v];}else if(cellColors){c=cellColors[i];}else{c=meshColor;}if(this.opacityscale&&vertexIntensity){tCol.push(c[0],c[1],c[2],this.opacity*getOpacityFromScale((vertexIntensity[v]-intensityLo)/(intensityHi-intensityLo),this.opacityscale));}else if(c.length===3){pCol.push(c[0],c[1],c[2],this.opacity);}else{pCol.push(c[0],c[1],c[2],c[3]*this.opacity);if(c[3]<1)this.hasAlpha=true;}var uv;if(vertexUVs){uv=vertexUVs[v];}else if(vertexIntensity){uv=[(vertexIntensity[v]-intensityLo)/(intensityHi-intensityLo),0];}else if(cellUVs){uv=cellUVs[i];}else if(cellIntensity){uv=[(cellIntensity[i]-intensityLo)/(intensityHi-intensityLo),0];}else{uv=[(p[2]-intensityLo)/(intensityHi-intensityLo),0];}pUVs.push(uv[0],uv[1]);if(pointSizes){pSiz.push(pointSizes[v]);}else{pSiz.push(meshPointSize);}pIds.push(i);pointCount+=1;break;case 2://Check NaNs\nfor(var j=0;j<2;++j){var v=cell[j];var p=positions[v];for(var k=0;k<3;++k){if(isNaN(p[k])||!isFinite(p[k])){continue fill_loop;}}}for(var j=0;j<2;++j){var v=cell[j];var p=positions[v];ePos.push(p[0],p[1],p[2]);var c;if(vertexColors){c=vertexColors[v];}else if(cellColors){c=cellColors[i];}else{c=meshColor;}if(this.opacityscale&&vertexIntensity){tCol.push(c[0],c[1],c[2],this.opacity*getOpacityFromScale((vertexIntensity[v]-intensityLo)/(intensityHi-intensityLo),this.opacityscale));}else if(c.length===3){eCol.push(c[0],c[1],c[2],this.opacity);}else{eCol.push(c[0],c[1],c[2],c[3]*this.opacity);if(c[3]<1)this.hasAlpha=true;}var uv;if(vertexUVs){uv=vertexUVs[v];}else if(vertexIntensity){uv=[(vertexIntensity[v]-intensityLo)/(intensityHi-intensityLo),0];}else if(cellUVs){uv=cellUVs[i];}else if(cellIntensity){uv=[(cellIntensity[i]-intensityLo)/(intensityHi-intensityLo),0];}else{uv=[(p[2]-intensityLo)/(intensityHi-intensityLo),0];}eUVs.push(uv[0],uv[1]);eIds.push(i);}edgeCount+=1;break;case 3://Check NaNs\nfor(var j=0;j<3;++j){var v=cell[j];var p=positions[v];for(var k=0;k<3;++k){if(isNaN(p[k])||!isFinite(p[k])){continue fill_loop;}}}for(var j=0;j<3;++j){var v=cell[2-j];var p=positions[v];tPos.push(p[0],p[1],p[2]);var c;if(vertexColors){c=vertexColors[v];}else if(cellColors){c=cellColors[i];}else{c=meshColor;}if(!c){tCol.push(0.5,0.5,0.5,1);}else if(this.opacityscale&&vertexIntensity){tCol.push(c[0],c[1],c[2],this.opacity*getOpacityFromScale((vertexIntensity[v]-intensityLo)/(intensityHi-intensityLo),this.opacityscale));}else if(c.length===3){tCol.push(c[0],c[1],c[2],this.opacity);}else{tCol.push(c[0],c[1],c[2],c[3]*this.opacity);if(c[3]<1)this.hasAlpha=true;}var uv;if(vertexUVs){uv=vertexUVs[v];}else if(vertexIntensity){uv=[(vertexIntensity[v]-intensityLo)/(intensityHi-intensityLo),0];}else if(cellUVs){uv=cellUVs[i];}else if(cellIntensity){uv=[(cellIntensity[i]-intensityLo)/(intensityHi-intensityLo),0];}else{uv=[(p[2]-intensityLo)/(intensityHi-intensityLo),0];}tUVs.push(uv[0],uv[1]);var q;if(vertexNormals){q=vertexNormals[v];}else{q=cellNormals[i];}tNor.push(q[0],q[1],q[2]);tIds.push(i);}triangleCount+=1;break;default:break;}}this.pointCount=pointCount;this.edgeCount=edgeCount;this.triangleCount=triangleCount;this.pointPositions.update(pPos);this.pointColors.update(pCol);this.pointUVs.update(pUVs);this.pointSizes.update(pSiz);this.pointIds.update(new Uint32Array(pIds));this.edgePositions.update(ePos);this.edgeColors.update(eCol);this.edgeUVs.update(eUVs);this.edgeIds.update(new Uint32Array(eIds));this.trianglePositions.update(tPos);this.triangleColors.update(tCol);this.triangleUVs.update(tUVs);this.triangleNormals.update(tNor);this.triangleIds.update(new Uint32Array(tIds));};proto.drawTransparent=proto.draw=function(params){params=params||{};var gl=this.gl;var model=params.model||IDENTITY;var view=params.view||IDENTITY;var projection=params.projection||IDENTITY;var clipBounds=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]];for(var i=0;i<3;++i){clipBounds[0][i]=Math.max(clipBounds[0][i],this.clipBounds[0][i]);clipBounds[1][i]=Math.min(clipBounds[1][i],this.clipBounds[1][i]);}var uniforms={model:model,view:view,projection:projection,inverseModel:IDENTITY.slice(),clipBounds:clipBounds,kambient:this.ambientLight,kdiffuse:this.diffuseLight,kspecular:this.specularLight,roughness:this.roughness,fresnel:this.fresnel,eyePosition:[0,0,0],lightPosition:[0,0,0],contourColor:this.contourColor,texture:0};uniforms.inverseModel=invert(uniforms.inverseModel,uniforms.model);gl.disable(gl.CULL_FACE);this.texture.bind(0);var invCameraMatrix=new Array(16);multiply(invCameraMatrix,uniforms.view,uniforms.model);multiply(invCameraMatrix,uniforms.projection,invCameraMatrix);invert(invCameraMatrix,invCameraMatrix);for(var i=0;i<3;++i){uniforms.eyePosition[i]=invCameraMatrix[12+i]/invCameraMatrix[15];}var w=invCameraMatrix[15];for(var i=0;i<3;++i){w+=this.lightPosition[i]*invCameraMatrix[4*i+3];}for(var i=0;i<3;++i){var s=invCameraMatrix[12+i];for(var j=0;j<3;++j){s+=invCameraMatrix[4*j+i]*this.lightPosition[j];}uniforms.lightPosition[i]=s/w;}if(this.triangleCount>0){var shader=this.triShader;shader.bind();shader.uniforms=uniforms;this.triangleVAO.bind();gl.drawArrays(gl.TRIANGLES,0,this.triangleCount*3);this.triangleVAO.unbind();}if(this.edgeCount>0&&this.lineWidth>0){var shader=this.lineShader;shader.bind();shader.uniforms=uniforms;this.edgeVAO.bind();gl.lineWidth(this.lineWidth*this.pixelRatio);gl.drawArrays(gl.LINES,0,this.edgeCount*2);this.edgeVAO.unbind();}if(this.pointCount>0){var shader=this.pointShader;shader.bind();shader.uniforms=uniforms;this.pointVAO.bind();gl.drawArrays(gl.POINTS,0,this.pointCount);this.pointVAO.unbind();}if(this.contourEnable&&this.contourCount>0&&this.contourLineWidth>0){var shader=this.contourShader;shader.bind();shader.uniforms=uniforms;this.contourVAO.bind();gl.drawArrays(gl.LINES,0,this.contourCount);this.contourVAO.unbind();}};proto.drawPick=function(params){params=params||{};var gl=this.gl;var model=params.model||IDENTITY;var view=params.view||IDENTITY;var projection=params.projection||IDENTITY;var clipBounds=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]];for(var i=0;i<3;++i){clipBounds[0][i]=Math.max(clipBounds[0][i],this.clipBounds[0][i]);clipBounds[1][i]=Math.min(clipBounds[1][i],this.clipBounds[1][i]);}//Save camera parameters\nthis._model=[].slice.call(model);this._view=[].slice.call(view);this._projection=[].slice.call(projection);this._resolution=[gl.drawingBufferWidth,gl.drawingBufferHeight];var uniforms={model:model,view:view,projection:projection,clipBounds:clipBounds,pickId:this.pickId/255.0};var shader=this.pickShader;shader.bind();shader.uniforms=uniforms;if(this.triangleCount>0){this.triangleVAO.bind();gl.drawArrays(gl.TRIANGLES,0,this.triangleCount*3);this.triangleVAO.unbind();}if(this.edgeCount>0){this.edgeVAO.bind();gl.lineWidth(this.lineWidth*this.pixelRatio);gl.drawArrays(gl.LINES,0,this.edgeCount*2);this.edgeVAO.unbind();}if(this.pointCount>0){var shader=this.pointPickShader;shader.bind();shader.uniforms=uniforms;this.pointVAO.bind();gl.drawArrays(gl.POINTS,0,this.pointCount);this.pointVAO.unbind();}};proto.pick=function(pickData){if(!pickData){return null;}if(pickData.id!==this.pickId){return null;}var cellId=pickData.value[0]+256*pickData.value[1]+65536*pickData.value[2];var cell=this.cells[cellId];var positions=this.positions;var simplex=new Array(cell.length);for(var i=0;i<cell.length;++i){simplex[i]=positions[cell[i]];}var x=pickData.coord[0];var y=pickData.coord[1];if(!this.pickVertex){var A=this.positions[cell[0]];var B=this.positions[cell[1]];var C=this.positions[cell[2]];var dataCoordinate=[(A[0]+B[0]+C[0])/3,(A[1]+B[1]+C[1])/3,(A[2]+B[2]+C[2])/3];return{_cellCenter:true,position:[x,y],index:cellId,cell:cell,cellId:cellId,intensity:this.intensity[cellId],dataCoordinate:dataCoordinate};}var data=closestPoint(simplex,[x*this.pixelRatio,this._resolution[1]-y*this.pixelRatio],this._model,this._view,this._projection,this._resolution);if(!data){return null;}var weights=data[2];var interpIntensity=0.0;for(var i=0;i<cell.length;++i){interpIntensity+=weights[i]*this.intensity[cell[i]];}return{position:data[1],index:cell[data[0]],cell:cell,cellId:cellId,intensity:interpIntensity,dataCoordinate:this.positions[cell[data[0]]]};};proto.dispose=function(){this.texture.dispose();this.triShader.dispose();this.lineShader.dispose();this.pointShader.dispose();this.pickShader.dispose();this.pointPickShader.dispose();this.triangleVAO.dispose();this.trianglePositions.dispose();this.triangleColors.dispose();this.triangleUVs.dispose();this.triangleNormals.dispose();this.triangleIds.dispose();this.edgeVAO.dispose();this.edgePositions.dispose();this.edgeColors.dispose();this.edgeUVs.dispose();this.edgeIds.dispose();this.pointVAO.dispose();this.pointPositions.dispose();this.pointColors.dispose();this.pointUVs.dispose();this.pointSizes.dispose();this.pointIds.dispose();this.contourVAO.dispose();this.contourPositions.dispose();this.contourShader.dispose();};function createMeshShader(gl){var shader=createShader(gl,meshShader.vertex,meshShader.fragment);shader.attributes.position.location=0;shader.attributes.color.location=2;shader.attributes.uv.location=3;shader.attributes.normal.location=4;return shader;}function createWireShader(gl){var shader=createShader(gl,wireShader.vertex,wireShader.fragment);shader.attributes.position.location=0;shader.attributes.color.location=2;shader.attributes.uv.location=3;return shader;}function createPointShader(gl){var shader=createShader(gl,pointShader.vertex,pointShader.fragment);shader.attributes.position.location=0;shader.attributes.color.location=2;shader.attributes.uv.location=3;shader.attributes.pointSize.location=4;return shader;}function createPickShader(gl){var shader=createShader(gl,pickShader.vertex,pickShader.fragment);shader.attributes.position.location=0;shader.attributes.id.location=1;return shader;}function createPointPickShader(gl){var shader=createShader(gl,pointPickShader.vertex,pointPickShader.fragment);shader.attributes.position.location=0;shader.attributes.id.location=1;shader.attributes.pointSize.location=4;return shader;}function createContourShader(gl){var shader=createShader(gl,contourShader.vertex,contourShader.fragment);shader.attributes.position.location=0;return shader;}function createSimplicialMesh(gl,params){if(arguments.length===1){params=gl;gl=params.gl;}//enable derivatives for face normals\nvar ext=gl.getExtension('OES_standard_derivatives')||gl.getExtension('MOZ_OES_standard_derivatives')||gl.getExtension('WEBKIT_OES_standard_derivatives');if(!ext)throw new Error('derivatives not supported');var triShader=createMeshShader(gl);var lineShader=createWireShader(gl);var pointShader=createPointShader(gl);var pickShader=createPickShader(gl);var pointPickShader=createPointPickShader(gl);var contourShader=createContourShader(gl);var meshTexture=createTexture(gl,ndarray(new Uint8Array([255,255,255,255]),[1,1,4]));meshTexture.generateMipmap();meshTexture.minFilter=gl.LINEAR_MIPMAP_LINEAR;meshTexture.magFilter=gl.LINEAR;var trianglePositions=createBuffer(gl);var triangleColors=createBuffer(gl);var triangleUVs=createBuffer(gl);var triangleNormals=createBuffer(gl);var triangleIds=createBuffer(gl);var triangleVAO=createVAO(gl,[{buffer:trianglePositions,type:gl.FLOAT,size:3},{buffer:triangleIds,type:gl.UNSIGNED_BYTE,size:4,normalized:true},{buffer:triangleColors,type:gl.FLOAT,size:4},{buffer:triangleUVs,type:gl.FLOAT,size:2},{buffer:triangleNormals,type:gl.FLOAT,size:3}]);var edgePositions=createBuffer(gl);var edgeColors=createBuffer(gl);var edgeUVs=createBuffer(gl);var edgeIds=createBuffer(gl);var edgeVAO=createVAO(gl,[{buffer:edgePositions,type:gl.FLOAT,size:3},{buffer:edgeIds,type:gl.UNSIGNED_BYTE,size:4,normalized:true},{buffer:edgeColors,type:gl.FLOAT,size:4},{buffer:edgeUVs,type:gl.FLOAT,size:2}]);var pointPositions=createBuffer(gl);var pointColors=createBuffer(gl);var pointUVs=createBuffer(gl);var pointSizes=createBuffer(gl);var pointIds=createBuffer(gl);var pointVAO=createVAO(gl,[{buffer:pointPositions,type:gl.FLOAT,size:3},{buffer:pointIds,type:gl.UNSIGNED_BYTE,size:4,normalized:true},{buffer:pointColors,type:gl.FLOAT,size:4},{buffer:pointUVs,type:gl.FLOAT,size:2},{buffer:pointSizes,type:gl.FLOAT,size:1}]);var contourPositions=createBuffer(gl);var contourVAO=createVAO(gl,[{buffer:contourPositions,type:gl.FLOAT,size:3}]);var mesh=new SimplicialMesh(gl,meshTexture,triShader,lineShader,pointShader,pickShader,pointPickShader,contourShader,trianglePositions,triangleIds,triangleColors,triangleUVs,triangleNormals,triangleVAO,edgePositions,edgeIds,edgeColors,edgeUVs,edgeVAO,pointPositions,pointIds,pointColors,pointUVs,pointSizes,pointVAO,contourPositions,contourVAO);mesh.update(params);return mesh;}module.exports=createSimplicialMesh;/***/},/***/4554:/***/function(module,__unused_webpack_exports,__nested_webpack_require_396494__){\"use strict\";module.exports=createBoxes;var createBuffer=__nested_webpack_require_396494__(5827);var createShader=__nested_webpack_require_396494__(5158);var shaders=__nested_webpack_require_396494__(2709);function Boxes(plot,vbo,shader){this.plot=plot;this.vbo=vbo;this.shader=shader;}var proto=Boxes.prototype;proto.bind=function(){var shader=this.shader;this.vbo.bind();this.shader.bind();shader.attributes.coord.pointer();shader.uniforms.screenBox=this.plot.screenBox;};proto.drawBox=function(){var lo=[0,0];var hi=[0,0];return function(loX,loY,hiX,hiY,color){var plot=this.plot;var shader=this.shader;var gl=plot.gl;lo[0]=loX;lo[1]=loY;hi[0]=hiX;hi[1]=hiY;shader.uniforms.lo=lo;shader.uniforms.hi=hi;shader.uniforms.color=color;gl.drawArrays(gl.TRIANGLE_STRIP,0,4);};}();proto.dispose=function(){this.vbo.dispose();this.shader.dispose();};function createBoxes(plot){var gl=plot.gl;var vbo=createBuffer(gl,[0,0,0,1,1,0,1,1]);var shader=createShader(gl,shaders.boxVert,shaders.lineFrag);return new Boxes(plot,vbo,shader);}/***/},/***/3016:/***/function(module,__unused_webpack_exports,__nested_webpack_require_397561__){\"use strict\";module.exports=createGrid;var createBuffer=__nested_webpack_require_397561__(5827);var createShader=__nested_webpack_require_397561__(5158);var bsearch=__nested_webpack_require_397561__(5070);var shaders=__nested_webpack_require_397561__(2709);function Grid(plot,vbo,shader,tickShader){this.plot=plot;this.vbo=vbo;this.shader=shader;this.tickShader=tickShader;this.ticks=[[],[]];}function compareTickNum(a,b){return a-b;}var proto=Grid.prototype;proto.draw=function(){var DATA_SHIFT=[0,0];var DATA_SCALE=[0,0];var DATA_AXIS=[0,0];return function(){var plot=this.plot;var vbo=this.vbo;var shader=this.shader;var ticks=this.ticks;var gl=plot.gl;var bounds=plot._tickBounds;var dataBox=plot.dataBox;var viewPixels=plot.viewBox;var lineWidth=plot.gridLineWidth;var gridColor=plot.gridLineColor;var gridEnable=plot.gridLineEnable;var pixelRatio=plot.pixelRatio;for(var i=0;i<2;++i){var lo=bounds[i];var hi=bounds[i+2];var boundScale=hi-lo;var dataCenter=0.5*(dataBox[i+2]+dataBox[i]);var dataWidth=dataBox[i+2]-dataBox[i];DATA_SCALE[i]=2.0*boundScale/dataWidth;DATA_SHIFT[i]=2.0*(lo-dataCenter)/dataWidth;}shader.bind();vbo.bind();shader.attributes.dataCoord.pointer();shader.uniforms.dataShift=DATA_SHIFT;shader.uniforms.dataScale=DATA_SCALE;var offset=0;for(var i=0;i<2;++i){DATA_AXIS[0]=DATA_AXIS[1]=0;DATA_AXIS[i]=1;shader.uniforms.dataAxis=DATA_AXIS;shader.uniforms.lineWidth=lineWidth[i]/(viewPixels[i+2]-viewPixels[i])*pixelRatio;shader.uniforms.color=gridColor[i];var size=ticks[i].length*6;if(gridEnable[i]&&size){gl.drawArrays(gl.TRIANGLES,offset,size);}offset+=size;}};}();proto.drawTickMarks=function(){var DATA_SHIFT=[0,0];var DATA_SCALE=[0,0];var X_AXIS=[1,0];var Y_AXIS=[0,1];var SCR_OFFSET=[0,0];var TICK_SCALE=[0,0];return function(){var plot=this.plot;var vbo=this.vbo;var shader=this.tickShader;var ticks=this.ticks;var gl=plot.gl;var bounds=plot._tickBounds;var dataBox=plot.dataBox;var viewBox=plot.viewBox;var pixelRatio=plot.pixelRatio;var screenBox=plot.screenBox;var screenWidth=screenBox[2]-screenBox[0];var screenHeight=screenBox[3]-screenBox[1];var viewWidth=viewBox[2]-viewBox[0];var viewHeight=viewBox[3]-viewBox[1];for(var i=0;i<2;++i){var lo=bounds[i];var hi=bounds[i+2];var boundScale=hi-lo;var dataCenter=0.5*(dataBox[i+2]+dataBox[i]);var dataWidth=dataBox[i+2]-dataBox[i];DATA_SCALE[i]=2.0*boundScale/dataWidth;DATA_SHIFT[i]=2.0*(lo-dataCenter)/dataWidth;}DATA_SCALE[0]*=viewWidth/screenWidth;DATA_SHIFT[0]*=viewWidth/screenWidth;DATA_SCALE[1]*=viewHeight/screenHeight;DATA_SHIFT[1]*=viewHeight/screenHeight;shader.bind();vbo.bind();shader.attributes.dataCoord.pointer();var uniforms=shader.uniforms;uniforms.dataShift=DATA_SHIFT;uniforms.dataScale=DATA_SCALE;var tickMarkLength=plot.tickMarkLength;var tickMarkWidth=plot.tickMarkWidth;var tickMarkColor=plot.tickMarkColor;var xTicksOffset=0;var yTicksOffset=ticks[0].length*6;var xStart=Math.min(bsearch.ge(ticks[0],(dataBox[0]-bounds[0])/(bounds[2]-bounds[0]),compareTickNum),ticks[0].length);var xEnd=Math.min(bsearch.gt(ticks[0],(dataBox[2]-bounds[0])/(bounds[2]-bounds[0]),compareTickNum),ticks[0].length);var xOffset=xTicksOffset+6*xStart;var xCount=6*Math.max(0,xEnd-xStart);var yStart=Math.min(bsearch.ge(ticks[1],(dataBox[1]-bounds[1])/(bounds[3]-bounds[1]),compareTickNum),ticks[1].length);var yEnd=Math.min(bsearch.gt(ticks[1],(dataBox[3]-bounds[1])/(bounds[3]-bounds[1]),compareTickNum),ticks[1].length);var yOffset=yTicksOffset+6*yStart;var yCount=6*Math.max(0,yEnd-yStart);SCR_OFFSET[0]=2.0*(viewBox[0]-tickMarkLength[1])/screenWidth-1.0;SCR_OFFSET[1]=(viewBox[3]+viewBox[1])/screenHeight-1.0;TICK_SCALE[0]=tickMarkLength[1]*pixelRatio/screenWidth;TICK_SCALE[1]=tickMarkWidth[1]*pixelRatio/screenHeight;if(yCount){uniforms.color=tickMarkColor[1];uniforms.tickScale=TICK_SCALE;uniforms.dataAxis=Y_AXIS;uniforms.screenOffset=SCR_OFFSET;gl.drawArrays(gl.TRIANGLES,yOffset,yCount);}SCR_OFFSET[0]=(viewBox[2]+viewBox[0])/screenWidth-1.0;SCR_OFFSET[1]=2.0*(viewBox[1]-tickMarkLength[0])/screenHeight-1.0;TICK_SCALE[0]=tickMarkWidth[0]*pixelRatio/screenWidth;TICK_SCALE[1]=tickMarkLength[0]*pixelRatio/screenHeight;if(xCount){uniforms.color=tickMarkColor[0];uniforms.tickScale=TICK_SCALE;uniforms.dataAxis=X_AXIS;uniforms.screenOffset=SCR_OFFSET;gl.drawArrays(gl.TRIANGLES,xOffset,xCount);}SCR_OFFSET[0]=2.0*(viewBox[2]+tickMarkLength[3])/screenWidth-1.0;SCR_OFFSET[1]=(viewBox[3]+viewBox[1])/screenHeight-1.0;TICK_SCALE[0]=tickMarkLength[3]*pixelRatio/screenWidth;TICK_SCALE[1]=tickMarkWidth[3]*pixelRatio/screenHeight;if(yCount){uniforms.color=tickMarkColor[3];uniforms.tickScale=TICK_SCALE;uniforms.dataAxis=Y_AXIS;uniforms.screenOffset=SCR_OFFSET;gl.drawArrays(gl.TRIANGLES,yOffset,yCount);}SCR_OFFSET[0]=(viewBox[2]+viewBox[0])/screenWidth-1.0;SCR_OFFSET[1]=2.0*(viewBox[3]+tickMarkLength[2])/screenHeight-1.0;TICK_SCALE[0]=tickMarkWidth[2]*pixelRatio/screenWidth;TICK_SCALE[1]=tickMarkLength[2]*pixelRatio/screenHeight;if(xCount){uniforms.color=tickMarkColor[2];uniforms.tickScale=TICK_SCALE;uniforms.dataAxis=X_AXIS;uniforms.screenOffset=SCR_OFFSET;gl.drawArrays(gl.TRIANGLES,xOffset,xCount);}};}();proto.update=function(){var OFFSET_X=[1,1,-1,-1,1,-1];var OFFSET_Y=[1,-1,1,1,-1,-1];return function(options){var ticks=options.ticks;var bounds=options.bounds;var data=new Float32Array(6*3*(ticks[0].length+ticks[1].length));var zeroLineEnable=this.plot.zeroLineEnable;var ptr=0;var gridTicks=[[],[]];for(var dim=0;dim<2;++dim){var localTicks=gridTicks[dim];var axisTicks=ticks[dim];var lo=bounds[dim];var hi=bounds[dim+2];for(var i=0;i<axisTicks.length;++i){var x=(axisTicks[i].x-lo)/(hi-lo);localTicks.push(x);for(var j=0;j<6;++j){data[ptr++]=x;data[ptr++]=OFFSET_X[j];data[ptr++]=OFFSET_Y[j];}}}this.ticks=gridTicks;this.vbo.update(data);};}();proto.dispose=function(){this.vbo.dispose();this.shader.dispose();this.tickShader.dispose();};function createGrid(plot){var gl=plot.gl;var vbo=createBuffer(gl);var shader=createShader(gl,shaders.gridVert,shaders.gridFrag);var tickShader=createShader(gl,shaders.tickVert,shaders.gridFrag);var grid=new Grid(plot,vbo,shader,tickShader);return grid;}/***/},/***/1154:/***/function(module,__unused_webpack_exports,__nested_webpack_require_403688__){\"use strict\";module.exports=createLines;var createBuffer=__nested_webpack_require_403688__(5827);var createShader=__nested_webpack_require_403688__(5158);var shaders=__nested_webpack_require_403688__(2709);function Lines(plot,vbo,shader){this.plot=plot;this.vbo=vbo;this.shader=shader;}var proto=Lines.prototype;proto.bind=function(){var shader=this.shader;this.vbo.bind();this.shader.bind();shader.attributes.coord.pointer();shader.uniforms.screenBox=this.plot.screenBox;};proto.drawLine=function(){var start=[0,0];var end=[0,0];return function(startX,startY,endX,endY,width,color){var plot=this.plot;var shader=this.shader;var gl=plot.gl;start[0]=startX;start[1]=startY;end[0]=endX;end[1]=endY;shader.uniforms.start=start;shader.uniforms.end=end;shader.uniforms.width=width*plot.pixelRatio;shader.uniforms.color=color;gl.drawArrays(gl.TRIANGLE_STRIP,0,4);};}();proto.dispose=function(){this.vbo.dispose();this.shader.dispose();};function createLines(plot){var gl=plot.gl;var vbo=createBuffer(gl,[-1,-1,-1,1,1,-1,1,1]);var shader=createShader(gl,shaders.lineVert,shaders.lineFrag);var lines=new Lines(plot,vbo,shader);return lines;}/***/},/***/2709:/***/function(module,__unused_webpack_exports,__nested_webpack_require_404863__){\"use strict\";var glslify=__nested_webpack_require_404863__(6832);var FRAGMENT=glslify([\"precision lowp float;\\n#define GLSLIFY 1\\nuniform vec4 color;\\nvoid main() {\\n  gl_FragColor = vec4(color.xyz * color.w, color.w);\\n}\\n\"]);module.exports={lineVert:glslify([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 coord;\\n\\nuniform vec4 screenBox;\\nuniform vec2 start, end;\\nuniform float width;\\n\\nvec2 perp(vec2 v) {\\n  return vec2(v.y, -v.x);\\n}\\n\\nvec2 screen(vec2 v) {\\n  return 2.0 * (v - screenBox.xy) / (screenBox.zw - screenBox.xy) - 1.0;\\n}\\n\\nvoid main() {\\n  vec2 delta = normalize(perp(start - end));\\n  vec2 offset = mix(start, end, 0.5 * (coord.y+1.0));\\n  gl_Position = vec4(screen(offset + 0.5 * width * delta * coord.x), 0, 1);\\n}\\n\"]),lineFrag:FRAGMENT,textVert:glslify([\"#define GLSLIFY 1\\nattribute vec3 textCoordinate;\\n\\nuniform vec2 dataScale, dataShift, dataAxis, screenOffset, textScale;\\nuniform float angle;\\n\\nvoid main() {\\n  float dataOffset  = textCoordinate.z;\\n  vec2 glyphOffset  = textCoordinate.xy;\\n  mat2 glyphMatrix = mat2(cos(angle), sin(angle), -sin(angle), cos(angle));\\n  vec2 screenCoordinate = dataAxis * (dataScale * dataOffset + dataShift) +\\n    glyphMatrix * glyphOffset * textScale + screenOffset;\\n  gl_Position = vec4(screenCoordinate, 0, 1);\\n}\\n\"]),textFrag:FRAGMENT,gridVert:glslify([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 dataCoord;\\n\\nuniform vec2 dataAxis, dataShift, dataScale;\\nuniform float lineWidth;\\n\\nvoid main() {\\n  vec2 pos = dataAxis * (dataScale * dataCoord.x + dataShift);\\n  pos += 10.0 * dataCoord.y * vec2(dataAxis.y, -dataAxis.x) + dataCoord.z * lineWidth;\\n  gl_Position = vec4(pos, 0, 1);\\n}\\n\"]),gridFrag:FRAGMENT,boxVert:glslify([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 coord;\\n\\nuniform vec4 screenBox;\\nuniform vec2 lo, hi;\\n\\nvec2 screen(vec2 v) {\\n  return 2.0 * (v - screenBox.xy) / (screenBox.zw - screenBox.xy) - 1.0;\\n}\\n\\nvoid main() {\\n  gl_Position = vec4(screen(mix(lo, hi, coord)), 0, 1);\\n}\\n\"]),tickVert:glslify([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 dataCoord;\\n\\nuniform vec2 dataAxis, dataShift, dataScale, screenOffset, tickScale;\\n\\nvoid main() {\\n  vec2 pos = dataAxis * (dataScale * dataCoord.x + dataShift);\\n  gl_Position = vec4(pos + tickScale*dataCoord.yz + screenOffset, 0, 1);\\n}\\n\"])};/***/},/***/5613:/***/function(module,__unused_webpack_exports,__nested_webpack_require_407309__){\"use strict\";module.exports=createTextElements;var createBuffer=__nested_webpack_require_407309__(5827);var createShader=__nested_webpack_require_407309__(5158);var getText=__nested_webpack_require_407309__(6946);var bsearch=__nested_webpack_require_407309__(5070);var shaders=__nested_webpack_require_407309__(2709);function TextElements(plot,vbo,shader){this.plot=plot;this.vbo=vbo;this.shader=shader;this.tickOffset=[[],[]];this.tickX=[[],[]];this.labelOffset=[0,0];this.labelCount=[0,0];}var proto=TextElements.prototype;proto.drawTicks=function(){var DATA_AXIS=[0,0];var SCREEN_OFFSET=[0,0];var ZERO_2=[0,0];return function(axis){var plot=this.plot;var shader=this.shader;var tickX=this.tickX[axis];var tickOffset=this.tickOffset[axis];var gl=plot.gl;var viewBox=plot.viewBox;var dataBox=plot.dataBox;var screenBox=plot.screenBox;var pixelRatio=plot.pixelRatio;var tickEnable=plot.tickEnable;var tickPad=plot.tickPad;var textColor=plot.tickColor;var textAngle=plot.tickAngle;// todo check if this should be used (now unused)\n// var tickLength  = plot.tickMarkLength\nvar labelEnable=plot.labelEnable;var labelPad=plot.labelPad;var labelColor=plot.labelColor;var labelAngle=plot.labelAngle;var labelOffset=this.labelOffset[axis];var labelCount=this.labelCount[axis];var start=bsearch.lt(tickX,dataBox[axis]);var end=bsearch.le(tickX,dataBox[axis+2]);DATA_AXIS[0]=DATA_AXIS[1]=0;DATA_AXIS[axis]=1;SCREEN_OFFSET[axis]=(viewBox[2+axis]+viewBox[axis])/(screenBox[2+axis]-screenBox[axis])-1.0;var screenScale=2.0/screenBox[2+(axis^1)]-screenBox[axis^1];SCREEN_OFFSET[axis^1]=screenScale*viewBox[axis^1]-1.0;if(tickEnable[axis]){SCREEN_OFFSET[axis^1]-=screenScale*pixelRatio*tickPad[axis];if(start<end&&tickOffset[end]>tickOffset[start]){shader.uniforms.dataAxis=DATA_AXIS;shader.uniforms.screenOffset=SCREEN_OFFSET;shader.uniforms.color=textColor[axis];shader.uniforms.angle=textAngle[axis];gl.drawArrays(gl.TRIANGLES,tickOffset[start],tickOffset[end]-tickOffset[start]);}}if(labelEnable[axis]&&labelCount){SCREEN_OFFSET[axis^1]-=screenScale*pixelRatio*labelPad[axis];shader.uniforms.dataAxis=ZERO_2;shader.uniforms.screenOffset=SCREEN_OFFSET;shader.uniforms.color=labelColor[axis];shader.uniforms.angle=labelAngle[axis];gl.drawArrays(gl.TRIANGLES,labelOffset,labelCount);}SCREEN_OFFSET[axis^1]=screenScale*viewBox[2+(axis^1)]-1.0;if(tickEnable[axis+2]){SCREEN_OFFSET[axis^1]+=screenScale*pixelRatio*tickPad[axis+2];if(start<end&&tickOffset[end]>tickOffset[start]){shader.uniforms.dataAxis=DATA_AXIS;shader.uniforms.screenOffset=SCREEN_OFFSET;shader.uniforms.color=textColor[axis+2];shader.uniforms.angle=textAngle[axis+2];gl.drawArrays(gl.TRIANGLES,tickOffset[start],tickOffset[end]-tickOffset[start]);}}if(labelEnable[axis+2]&&labelCount){SCREEN_OFFSET[axis^1]+=screenScale*pixelRatio*labelPad[axis+2];shader.uniforms.dataAxis=ZERO_2;shader.uniforms.screenOffset=SCREEN_OFFSET;shader.uniforms.color=labelColor[axis+2];shader.uniforms.angle=labelAngle[axis+2];gl.drawArrays(gl.TRIANGLES,labelOffset,labelCount);}};}();proto.drawTitle=function(){var DATA_AXIS=[0,0];var SCREEN_OFFSET=[0,0];return function(){var plot=this.plot;var shader=this.shader;var gl=plot.gl;var screenBox=plot.screenBox;var titleCenter=plot.titleCenter;var titleAngle=plot.titleAngle;var titleColor=plot.titleColor;var pixelRatio=plot.pixelRatio;if(!this.titleCount){return;}for(var i=0;i<2;++i){SCREEN_OFFSET[i]=2.0*(titleCenter[i]*pixelRatio-screenBox[i])/(screenBox[2+i]-screenBox[i])-1;}shader.bind();shader.uniforms.dataAxis=DATA_AXIS;shader.uniforms.screenOffset=SCREEN_OFFSET;shader.uniforms.angle=titleAngle;shader.uniforms.color=titleColor;gl.drawArrays(gl.TRIANGLES,this.titleOffset,this.titleCount);};}();proto.bind=function(){var DATA_SHIFT=[0,0];var DATA_SCALE=[0,0];var TEXT_SCALE=[0,0];return function(){var plot=this.plot;var shader=this.shader;var bounds=plot._tickBounds;var dataBox=plot.dataBox;var screenBox=plot.screenBox;var viewBox=plot.viewBox;shader.bind();//Set up coordinate scaling uniforms\nfor(var i=0;i<2;++i){var lo=bounds[i];var hi=bounds[i+2];var boundScale=hi-lo;var dataCenter=0.5*(dataBox[i+2]+dataBox[i]);var dataWidth=dataBox[i+2]-dataBox[i];var viewLo=viewBox[i];var viewHi=viewBox[i+2];var viewScale=viewHi-viewLo;var screenLo=screenBox[i];var screenHi=screenBox[i+2];var screenScale=screenHi-screenLo;DATA_SCALE[i]=2.0*boundScale/dataWidth*viewScale/screenScale;DATA_SHIFT[i]=2.0*(lo-dataCenter)/dataWidth*viewScale/screenScale;}TEXT_SCALE[1]=2.0*plot.pixelRatio/(screenBox[3]-screenBox[1]);TEXT_SCALE[0]=TEXT_SCALE[1]*(screenBox[3]-screenBox[1])/(screenBox[2]-screenBox[0]);shader.uniforms.dataScale=DATA_SCALE;shader.uniforms.dataShift=DATA_SHIFT;shader.uniforms.textScale=TEXT_SCALE;//Set attributes\nthis.vbo.bind();shader.attributes.textCoordinate.pointer();};}();proto.update=function(options){var vertices=[];var axesTicks=options.ticks;var bounds=options.bounds;var i,j,k,data,scale,dimension;for(dimension=0;dimension<2;++dimension){var offsets=[Math.floor(vertices.length/3)],tickX=[-Infinity];//Copy vertices over to buffer\nvar ticks=axesTicks[dimension];for(i=0;i<ticks.length;++i){var tick=ticks[i];var x=tick.x;var text=tick.text;var font=tick.font||'sans-serif';scale=tick.fontSize||12;var coordScale=1.0/(bounds[dimension+2]-bounds[dimension]);var coordShift=bounds[dimension];var rows=text.split('\\n');for(var r=0;r<rows.length;r++){data=getText(font,rows[r]).data;for(j=0;j<data.length;j+=2){vertices.push(data[j]*scale,-data[j+1]*scale-r*scale*1.2,(x-coordShift)*coordScale);}}offsets.push(Math.floor(vertices.length/3));tickX.push(x);}this.tickOffset[dimension]=offsets;this.tickX[dimension]=tickX;}//Add labels\nfor(dimension=0;dimension<2;++dimension){this.labelOffset[dimension]=Math.floor(vertices.length/3);data=getText(options.labelFont[dimension],options.labels[dimension],{textAlign:'center'}).data;scale=options.labelSize[dimension];for(i=0;i<data.length;i+=2){vertices.push(data[i]*scale,-data[i+1]*scale,0);}this.labelCount[dimension]=Math.floor(vertices.length/3)-this.labelOffset[dimension];}//Add title\nthis.titleOffset=Math.floor(vertices.length/3);data=getText(options.titleFont,options.title).data;scale=options.titleSize;for(i=0;i<data.length;i+=2){vertices.push(data[i]*scale,-data[i+1]*scale,0);}this.titleCount=Math.floor(vertices.length/3)-this.titleOffset;//Upload new vertices\nthis.vbo.update(vertices);};proto.dispose=function(){this.vbo.dispose();this.shader.dispose();};function createTextElements(plot){var gl=plot.gl;var vbo=createBuffer(gl);var shader=createShader(gl,shaders.textVert,shaders.textFrag);var text=new TextElements(plot,vbo,shader);return text;}/***/},/***/2117:/***/function(module,__unused_webpack_exports,__nested_webpack_require_413943__){\"use strict\";module.exports=createGLPlot2D;var createPick=__nested_webpack_require_413943__(2611);var createGrid=__nested_webpack_require_413943__(3016);var createText=__nested_webpack_require_413943__(5613);var createLine=__nested_webpack_require_413943__(1154);var createBox=__nested_webpack_require_413943__(4554);function GLPlot2D(gl,pickBuffer){this.gl=gl;this.pickBuffer=pickBuffer;this.screenBox=[0,0,gl.drawingBufferWidth,gl.drawingBufferHeight];this.viewBox=[0,0,0,0];this.dataBox=[-10,-10,10,10];this.gridLineEnable=[true,true];this.gridLineWidth=[1,1];this.gridLineColor=[[0,0,0,1],[0,0,0,1]];this.pixelRatio=1;this.tickMarkLength=[0,0,0,0];this.tickMarkWidth=[0,0,0,0];this.tickMarkColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]];this.tickPad=[15,15,15,15];this.tickAngle=[0,0,0,0];this.tickEnable=[true,true,true,true];this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]];this.labelPad=[15,15,15,15];this.labelAngle=[0,Math.PI/2,0,3.0*Math.PI/2];this.labelEnable=[true,true,true,true];this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]];this.titleCenter=[0,0];this.titleEnable=true;this.titleAngle=0;this.titleColor=[0,0,0,1];this.borderColor=[0,0,0,0];this.backgroundColor=[0,0,0,0];this.zeroLineEnable=[true,true];this.zeroLineWidth=[4,4];this.zeroLineColor=[[0,0,0,1],[0,0,0,1]];this.borderLineEnable=[true,true,true,true];this.borderLineWidth=[2,2,2,2];this.borderLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]];//Drawing parameters\nthis.grid=null;this.text=null;this.line=null;this.box=null;this.objects=[];this.overlays=[];this._tickBounds=[Infinity,Infinity,-Infinity,-Infinity];this.static=false;this.dirty=false;this.pickDirty=false;this.pickDelay=120;this.pickRadius=10;this._pickTimeout=null;this._drawPick=this.drawPick.bind(this);this._depthCounter=0;}var proto=GLPlot2D.prototype;proto.setDirty=function(){this.dirty=this.pickDirty=true;};proto.setOverlayDirty=function(){this.dirty=true;};proto.nextDepthValue=function(){return this._depthCounter++/65536.0;};function lerp(a,b,t){var s=0.5*(t+1.0);return Math.floor((1.0-s)*a+s*b)|0;}proto.draw=function(){var TICK_MARK_BOX=[0,0,0,0];return function(){var gl=this.gl;var screenBox=this.screenBox;var viewPixels=this.viewBox;var dataBox=this.dataBox;var pixelRatio=this.pixelRatio;var grid=this.grid;var line=this.line;var text=this.text;var objects=this.objects;this._depthCounter=0;if(this.pickDirty){if(this._pickTimeout){clearTimeout(this._pickTimeout);}this.pickDirty=false;this._pickTimeout=setTimeout(this._drawPick,this.pickDelay);}if(!this.dirty){return;}this.dirty=false;gl.bindFramebuffer(gl.FRAMEBUFFER,null);//Turn on scissor\ngl.enable(gl.SCISSOR_TEST);//Turn off depth buffer\ngl.disable(gl.DEPTH_TEST);gl.depthFunc(gl.LESS);gl.depthMask(false);//Configure premultiplied alpha blending\ngl.enable(gl.BLEND);gl.blendEquation(gl.FUNC_ADD,gl.FUNC_ADD);gl.blendFunc(gl.ONE,gl.ONE_MINUS_SRC_ALPHA);//Draw border\nif(this.borderColor){gl.scissor(screenBox[0],screenBox[1],screenBox[2]-screenBox[0],screenBox[3]-screenBox[1]);var borderColor=this.borderColor;gl.clearColor(borderColor[0]*borderColor[3],borderColor[1]*borderColor[3],borderColor[2]*borderColor[3],borderColor[3]);gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);}//Draw center pane\ngl.scissor(viewPixels[0],viewPixels[1],viewPixels[2]-viewPixels[0],viewPixels[3]-viewPixels[1]);gl.viewport(viewPixels[0],viewPixels[1],viewPixels[2]-viewPixels[0],viewPixels[3]-viewPixels[1]);var backgroundColor=this.backgroundColor;gl.clearColor(backgroundColor[0]*backgroundColor[3],backgroundColor[1]*backgroundColor[3],backgroundColor[2]*backgroundColor[3],backgroundColor[3]);gl.clear(gl.COLOR_BUFFER_BIT);//Draw grid\ngrid.draw();//Draw zero lines separately\nvar zeroLineEnable=this.zeroLineEnable;var zeroLineColor=this.zeroLineColor;var zeroLineWidth=this.zeroLineWidth;if(zeroLineEnable[0]||zeroLineEnable[1]){line.bind();for(var i=0;i<2;++i){if(!zeroLineEnable[i]||!(dataBox[i]<=0&&dataBox[i+2]>=0)){continue;}var zeroIntercept=screenBox[i]-dataBox[i]*(screenBox[i+2]-screenBox[i])/(dataBox[i+2]-dataBox[i]);if(i===0){line.drawLine(zeroIntercept,screenBox[1],zeroIntercept,screenBox[3],zeroLineWidth[i],zeroLineColor[i]);}else{line.drawLine(screenBox[0],zeroIntercept,screenBox[2],zeroIntercept,zeroLineWidth[i],zeroLineColor[i]);}}}//Draw traces\nfor(var i=0;i<objects.length;++i){objects[i].draw();}//Return viewport to default\ngl.viewport(screenBox[0],screenBox[1],screenBox[2]-screenBox[0],screenBox[3]-screenBox[1]);gl.scissor(screenBox[0],screenBox[1],screenBox[2]-screenBox[0],screenBox[3]-screenBox[1]);//Draw tick marks\nthis.grid.drawTickMarks();//Draw line elements\nline.bind();//Draw border lines\nvar borderLineEnable=this.borderLineEnable;var borderLineWidth=this.borderLineWidth;var borderLineColor=this.borderLineColor;if(borderLineEnable[1]){line.drawLine(viewPixels[0],viewPixels[1]-0.5*borderLineWidth[1]*pixelRatio,viewPixels[0],viewPixels[3]+0.5*borderLineWidth[3]*pixelRatio,borderLineWidth[1],borderLineColor[1]);}if(borderLineEnable[0]){line.drawLine(viewPixels[0]-0.5*borderLineWidth[0]*pixelRatio,viewPixels[1],viewPixels[2]+0.5*borderLineWidth[2]*pixelRatio,viewPixels[1],borderLineWidth[0],borderLineColor[0]);}if(borderLineEnable[3]){line.drawLine(viewPixels[2],viewPixels[1]-0.5*borderLineWidth[1]*pixelRatio,viewPixels[2],viewPixels[3]+0.5*borderLineWidth[3]*pixelRatio,borderLineWidth[3],borderLineColor[3]);}if(borderLineEnable[2]){line.drawLine(viewPixels[0]-0.5*borderLineWidth[0]*pixelRatio,viewPixels[3],viewPixels[2]+0.5*borderLineWidth[2]*pixelRatio,viewPixels[3],borderLineWidth[2],borderLineColor[2]);}//Draw text elements\ntext.bind();for(var i=0;i<2;++i){text.drawTicks(i);}if(this.titleEnable){text.drawTitle();}//Draw other overlay elements (select boxes, etc.)\nvar overlays=this.overlays;for(var i=0;i<overlays.length;++i){overlays[i].draw();}//Turn off scissor test\ngl.disable(gl.SCISSOR_TEST);gl.disable(gl.BLEND);gl.depthMask(true);};}();proto.drawPick=function(){return function(){if(this.static)return;var pickBuffer=this.pickBuffer;var gl=this.gl;this._pickTimeout=null;pickBuffer.begin();var pickOffset=1;var objects=this.objects;for(var i=0;i<objects.length;++i){pickOffset=objects[i].drawPick(pickOffset);}pickBuffer.end();};}();proto.pick=function(){return function(x,y){if(this.static)return;var pixelRatio=this.pixelRatio;var pickPixelRatio=this.pickPixelRatio;var viewBox=this.viewBox;var scrX=Math.round((x-viewBox[0]/pixelRatio)*pickPixelRatio)|0;var scrY=Math.round((y-viewBox[1]/pixelRatio)*pickPixelRatio)|0;var pickResult=this.pickBuffer.query(scrX,scrY,this.pickRadius);if(!pickResult){return null;}var pickValue=pickResult.id+(pickResult.value[0]<<8)+(pickResult.value[1]<<16)+(pickResult.value[2]<<24);var objects=this.objects;for(var i=0;i<objects.length;++i){var result=objects[i].pick(scrX,scrY,pickValue);if(result){return result;}}return null;};}();function deepClone(array){var result=array.slice();for(var i=0;i<result.length;++i){result[i]=result[i].slice();}return result;}function compareTicks(a,b){return a.x-b.x;}proto.setScreenBox=function(nbox){var screenBox=this.screenBox;var pixelRatio=this.pixelRatio;screenBox[0]=Math.round(nbox[0]*pixelRatio)|0;screenBox[1]=Math.round(nbox[1]*pixelRatio)|0;screenBox[2]=Math.round(nbox[2]*pixelRatio)|0;screenBox[3]=Math.round(nbox[3]*pixelRatio)|0;this.setDirty();};proto.setDataBox=function(nbox){var dataBox=this.dataBox;var different=dataBox[0]!==nbox[0]||dataBox[1]!==nbox[1]||dataBox[2]!==nbox[2]||dataBox[3]!==nbox[3];if(different){dataBox[0]=nbox[0];dataBox[1]=nbox[1];dataBox[2]=nbox[2];dataBox[3]=nbox[3];this.setDirty();}};proto.setViewBox=function(nbox){var pixelRatio=this.pixelRatio;var viewBox=this.viewBox;viewBox[0]=Math.round(nbox[0]*pixelRatio)|0;viewBox[1]=Math.round(nbox[1]*pixelRatio)|0;viewBox[2]=Math.round(nbox[2]*pixelRatio)|0;viewBox[3]=Math.round(nbox[3]*pixelRatio)|0;var pickPixelRatio=this.pickPixelRatio;this.pickBuffer.shape=[Math.round((nbox[2]-nbox[0])*pickPixelRatio)|0,Math.round((nbox[3]-nbox[1])*pickPixelRatio)|0];this.setDirty();};proto.update=function(options){options=options||{};var gl=this.gl;this.pixelRatio=options.pixelRatio||1;var pixelRatio=this.pixelRatio;this.pickPixelRatio=Math.max(pixelRatio,1);this.setScreenBox(options.screenBox||[0,0,gl.drawingBufferWidth/pixelRatio,gl.drawingBufferHeight/pixelRatio]);var screenBox=this.screenBox;this.setViewBox(options.viewBox||[0.125*(this.screenBox[2]-this.screenBox[0])/pixelRatio,0.125*(this.screenBox[3]-this.screenBox[1])/pixelRatio,0.875*(this.screenBox[2]-this.screenBox[0])/pixelRatio,0.875*(this.screenBox[3]-this.screenBox[1])/pixelRatio]);var viewBox=this.viewBox;var aspectRatio=(viewBox[2]-viewBox[0])/(viewBox[3]-viewBox[1]);this.setDataBox(options.dataBox||[-10,-10/aspectRatio,10,10/aspectRatio]);this.borderColor=options.borderColor!==false?(options.borderColor||[0,0,0,0]).slice():false;this.backgroundColor=(options.backgroundColor||[0,0,0,0]).slice();this.gridLineEnable=(options.gridLineEnable||[true,true]).slice();this.gridLineWidth=(options.gridLineWidth||[1,1]).slice();this.gridLineColor=deepClone(options.gridLineColor||[[0.5,0.5,0.5,1],[0.5,0.5,0.5,1]]);this.zeroLineEnable=(options.zeroLineEnable||[true,true]).slice();this.zeroLineWidth=(options.zeroLineWidth||[4,4]).slice();this.zeroLineColor=deepClone(options.zeroLineColor||[[0,0,0,1],[0,0,0,1]]);this.tickMarkLength=(options.tickMarkLength||[0,0,0,0]).slice();this.tickMarkWidth=(options.tickMarkWidth||[0,0,0,0]).slice();this.tickMarkColor=deepClone(options.tickMarkColor||[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]]);this.titleCenter=(options.titleCenter||[0.5*(viewBox[0]+viewBox[2])/pixelRatio,(viewBox[3]+120)/pixelRatio]).slice();this.titleEnable=!('titleEnable'in options)||!!options.titleEnable;this.titleAngle=options.titleAngle||0;this.titleColor=(options.titleColor||[0,0,0,1]).slice();this.labelPad=(options.labelPad||[15,15,15,15]).slice();this.labelAngle=(options.labelAngle||[0,Math.PI/2,0,3.0*Math.PI/2]).slice();this.labelEnable=(options.labelEnable||[true,true,true,true]).slice();this.labelColor=deepClone(options.labelColor||[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]]);this.tickPad=(options.tickPad||[15,15,15,15]).slice();this.tickAngle=(options.tickAngle||[0,0,0,0]).slice();this.tickEnable=(options.tickEnable||[true,true,true,true]).slice();this.tickColor=deepClone(options.tickColor||[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]]);this.borderLineEnable=(options.borderLineEnable||[true,true,true,true]).slice();this.borderLineWidth=(options.borderLineWidth||[2,2,2,2]).slice();this.borderLineColor=deepClone(options.borderLineColor||[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]]);var ticks=options.ticks||[[],[]];//Compute bounds on ticks\nvar bounds=this._tickBounds;bounds[0]=bounds[1]=Infinity;bounds[2]=bounds[3]=-Infinity;for(var i=0;i<2;++i){var axisTicks=ticks[i].slice(0);if(axisTicks.length===0){continue;}axisTicks.sort(compareTicks);bounds[i]=Math.min(bounds[i],axisTicks[0].x);bounds[i+2]=Math.max(bounds[i+2],axisTicks[axisTicks.length-1].x);}//Update grid\nthis.grid.update({bounds:bounds,ticks:ticks});//Update text\nthis.text.update({bounds:bounds,ticks:ticks,labels:options.labels||['x','y'],labelSize:options.labelSize||[12,12],labelFont:options.labelFont||['sans-serif','sans-serif'],title:options.title||'',titleSize:options.titleSize||18,titleFont:options.titleFont||'sans-serif'});this.static=!!options.static;this.setDirty();};proto.dispose=function(){this.box.dispose();this.grid.dispose();this.text.dispose();this.line.dispose();for(var i=this.objects.length-1;i>=0;--i){this.objects[i].dispose();}this.objects.length=0;for(var i=this.overlays.length-1;i>=0;--i){this.overlays[i].dispose();}this.overlays.length=0;this.gl=null;};proto.addObject=function(object){if(this.objects.indexOf(object)<0){this.objects.push(object);this.setDirty();}};proto.removeObject=function(object){var objects=this.objects;for(var i=0;i<objects.length;++i){if(objects[i]===object){objects.splice(i,1);this.setDirty();break;}}};proto.addOverlay=function(object){if(this.overlays.indexOf(object)<0){this.overlays.push(object);this.setOverlayDirty();}};proto.removeOverlay=function(object){var objects=this.overlays;for(var i=0;i<objects.length;++i){if(objects[i]===object){objects.splice(i,1);this.setOverlayDirty();break;}}};function createGLPlot2D(options){var gl=options.gl;var pickBuffer=createPick(gl,[gl.drawingBufferWidth,gl.drawingBufferHeight]);var plot=new GLPlot2D(gl,pickBuffer);plot.grid=createGrid(plot);plot.text=createText(plot);plot.line=createLine(plot);plot.box=createBox(plot);plot.update(options);return plot;}/***/},/***/4296:/***/function(module,__unused_webpack_exports,__nested_webpack_require_426556__){\"use strict\";module.exports=createCamera;var now=__nested_webpack_require_426556__(8161);var createView=__nested_webpack_require_426556__(1152);var mouseChange=__nested_webpack_require_426556__(6145);var mouseWheel=__nested_webpack_require_426556__(6475);var mouseOffset=__nested_webpack_require_426556__(2565);var hasPassive=__nested_webpack_require_426556__(5233);function createCamera(element,options){element=element||document.body;options=options||{};var limits=[0.01,Infinity];if('distanceLimits'in options){limits[0]=options.distanceLimits[0];limits[1]=options.distanceLimits[1];}if('zoomMin'in options){limits[0]=options.zoomMin;}if('zoomMax'in options){limits[1]=options.zoomMax;}var view=createView({center:options.center||[0,0,0],up:options.up||[0,1,0],eye:options.eye||[0,0,10],mode:options.mode||'orbit',distanceLimits:limits});var pmatrix=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var distance=0.0;var width=element.clientWidth;var height=element.clientHeight;var camera={keyBindingMode:'rotate',enableWheel:true,view:view,element:element,delay:options.delay||16,rotateSpeed:options.rotateSpeed||1,zoomSpeed:options.zoomSpeed||1,translateSpeed:options.translateSpeed||1,flipX:!!options.flipX,flipY:!!options.flipY,modes:view.modes,_ortho:options._ortho||options.projection&&options.projection.type==='orthographic'||false,tick:function(){var t=now();var delay=this.delay;var ctime=t-2*delay;view.idle(t-delay);view.recalcMatrix(ctime);view.flush(t-(100+delay*2));var allEqual=true;var matrix=view.computedMatrix;for(var i=0;i<16;++i){allEqual=allEqual&&pmatrix[i]===matrix[i];pmatrix[i]=matrix[i];}var sizeChanged=element.clientWidth===width&&element.clientHeight===height;width=element.clientWidth;height=element.clientHeight;if(allEqual){return!sizeChanged;}distance=Math.exp(view.computedRadius[0]);return true;},lookAt:function(eye,center,up){view.lookAt(view.lastT(),eye,center,up);},rotate:function(pitch,yaw,roll){view.rotate(view.lastT(),pitch,yaw,roll);},pan:function(dx,dy,dz){view.pan(view.lastT(),dx,dy,dz);},translate:function(dx,dy,dz){view.translate(view.lastT(),dx,dy,dz);}};Object.defineProperties(camera,{matrix:{get:function(){return view.computedMatrix;},set:function(mat){view.setMatrix(view.lastT(),mat);return view.computedMatrix;},enumerable:true},mode:{get:function(){return view.getMode();},set:function(mode){var curUp=view.computedUp.slice();var curEye=view.computedEye.slice();var curCenter=view.computedCenter.slice();view.setMode(mode);if(mode==='turntable'){// Hacky time warping stuff to generate smooth animation\nvar t0=now();view._active.lookAt(t0,curEye,curCenter,curUp);view._active.lookAt(t0+500,curEye,curCenter,[0,0,1]);view._active.flush(t0);}return view.getMode();},enumerable:true},center:{get:function(){return view.computedCenter;},set:function(ncenter){view.lookAt(view.lastT(),null,ncenter);return view.computedCenter;},enumerable:true},eye:{get:function(){return view.computedEye;},set:function(neye){view.lookAt(view.lastT(),neye);return view.computedEye;},enumerable:true},up:{get:function(){return view.computedUp;},set:function(nup){view.lookAt(view.lastT(),null,null,nup);return view.computedUp;},enumerable:true},distance:{get:function(){return distance;},set:function(d){view.setDistance(view.lastT(),d);return d;},enumerable:true},distanceLimits:{get:function(){return view.getDistanceLimits(limits);},set:function(v){view.setDistanceLimits(v);return v;},enumerable:true}});element.addEventListener('contextmenu',function(ev){ev.preventDefault();return false;});camera._lastX=-1;camera._lastY=-1;camera._lastMods={shift:false,control:false,alt:false,meta:false};camera.enableMouseListeners=function(){camera.mouseListener=mouseChange(element,handleInteraction);//enable simple touch interactions\nelement.addEventListener('touchstart',function(ev){var xy=mouseOffset(ev.changedTouches[0],element);handleInteraction(0,xy[0],xy[1],camera._lastMods);handleInteraction(1,xy[0],xy[1],camera._lastMods);},hasPassive?{passive:true}:false);element.addEventListener('touchmove',function(ev){var xy=mouseOffset(ev.changedTouches[0],element);handleInteraction(1,xy[0],xy[1],camera._lastMods);ev.preventDefault();},hasPassive?{passive:false}:false);element.addEventListener('touchend',function(ev){handleInteraction(0,camera._lastX,camera._lastY,camera._lastMods);},hasPassive?{passive:true}:false);function handleInteraction(buttons,x,y,mods){var keyBindingMode=camera.keyBindingMode;if(keyBindingMode===false)return;var rotate=keyBindingMode==='rotate';var pan=keyBindingMode==='pan';var zoom=keyBindingMode==='zoom';var ctrl=!!mods.control;var alt=!!mods.alt;var shift=!!mods.shift;var left=!!(buttons&1);var right=!!(buttons&2);var middle=!!(buttons&4);var scale=1.0/element.clientHeight;var dx=scale*(x-camera._lastX);var dy=scale*(y-camera._lastY);var flipX=camera.flipX?1:-1;var flipY=camera.flipY?1:-1;var drot=Math.PI*camera.rotateSpeed;var t=now();if(camera._lastX!==-1&&camera._lastY!==-1){if(rotate&&left&&!ctrl&&!alt&&!shift||left&&!ctrl&&!alt&&shift){// Rotate\nview.rotate(t,flipX*drot*dx,-flipY*drot*dy,0);}if(pan&&left&&!ctrl&&!alt&&!shift||right||left&&ctrl&&!alt&&!shift){// Pan\nview.pan(t,-camera.translateSpeed*dx*distance,camera.translateSpeed*dy*distance,0);}if(zoom&&left&&!ctrl&&!alt&&!shift||middle||left&&!ctrl&&alt&&!shift){// Zoom\nvar kzoom=-camera.zoomSpeed*dy/window.innerHeight*(t-view.lastT())*100;view.pan(t,0,0,distance*(Math.exp(kzoom)-1));}}camera._lastX=x;camera._lastY=y;camera._lastMods=mods;return true;}camera.wheelListener=mouseWheel(element,function(dx,dy){// TODO remove now that we can disable scroll via scrollZoom?\nif(camera.keyBindingMode===false)return;if(!camera.enableWheel)return;var flipX=camera.flipX?1:-1;var flipY=camera.flipY?1:-1;var t=now();if(Math.abs(dx)>Math.abs(dy)){view.rotate(t,0,0,-dx*flipX*Math.PI*camera.rotateSpeed/window.innerWidth);}else{if(!camera._ortho){var kzoom=-camera.zoomSpeed*flipY*dy/window.innerHeight*(t-view.lastT())/20.0;view.pan(t,0,0,distance*(Math.exp(kzoom)-1));}}},true);};camera.enableMouseListeners();return camera;}/***/},/***/8245:/***/function(module,__unused_webpack_exports,__nested_webpack_require_432614__){var glslify=__nested_webpack_require_432614__(6832);var createShader=__nested_webpack_require_432614__(5158);var vertSrc=glslify([\"precision mediump float;\\n#define GLSLIFY 1\\nattribute vec2 position;\\nvarying vec2 uv;\\nvoid main() {\\n  uv = position;\\n  gl_Position = vec4(position, 0, 1);\\n}\"]);var fragSrc=glslify([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform sampler2D accumBuffer;\\nvarying vec2 uv;\\n\\nvoid main() {\\n  vec4 accum = texture2D(accumBuffer, 0.5 * (uv + 1.0));\\n  gl_FragColor = min(vec4(1,1,1,1), accum);\\n}\"]);module.exports=function(gl){return createShader(gl,vertSrc,fragSrc,null,[{name:'position',type:'vec2'}]);};/***/},/***/1059:/***/function(module,__unused_webpack_exports,__nested_webpack_require_433318__){\"use strict\";var createCamera=__nested_webpack_require_433318__(4296);var createAxes=__nested_webpack_require_433318__(7453);var axesRanges=__nested_webpack_require_433318__(2771);var createSpikes=__nested_webpack_require_433318__(6496);var createSelect=__nested_webpack_require_433318__(2611);var createFBO=__nested_webpack_require_433318__(4234);var drawTriangle=__nested_webpack_require_433318__(8126);var mouseChange=__nested_webpack_require_433318__(6145);var perspective=__nested_webpack_require_433318__(1120);var ortho=__nested_webpack_require_433318__(5268);var createShader=__nested_webpack_require_433318__(8245);var isMobile=__nested_webpack_require_433318__(2861)({tablet:true,featureDetect:true});module.exports={createScene:createScene,createCamera:createCamera};function MouseSelect(){this.mouse=[-1,-1];this.screen=null;this.distance=Infinity;this.index=null;this.dataCoordinate=null;this.dataPosition=null;this.object=null;this.data=null;}function getContext(canvas,options){var gl=null;try{gl=canvas.getContext('webgl',options);if(!gl){gl=canvas.getContext('experimental-webgl',options);}}catch(e){return null;}return gl;}function roundUpPow10(x){var y=Math.round(Math.log(Math.abs(x))/Math.log(10));if(y<0){var base=Math.round(Math.pow(10,-y));return Math.ceil(x*base)/base;}else if(y>0){var base=Math.round(Math.pow(10,y));return Math.ceil(x/base)*base;}return Math.ceil(x);}function defaultBool(x){if(typeof x==='boolean'){return x;}return true;}function createScene(options){options=options||{};options.camera=options.camera||{};var canvas=options.canvas;if(!canvas){canvas=document.createElement('canvas');if(options.container){var container=options.container;container.appendChild(canvas);}else{document.body.appendChild(canvas);}}var gl=options.gl;if(!gl){if(options.glOptions){isMobile=!!options.glOptions.preserveDrawingBuffer;}gl=getContext(canvas,options.glOptions||{premultipliedAlpha:true,antialias:true,preserveDrawingBuffer:isMobile});}if(!gl){throw new Error('webgl not supported');}//Initial bounds\nvar bounds=options.bounds||[[-10,-10,-10],[10,10,10]];//Create selection\nvar selection=new MouseSelect();//Accumulation buffer\nvar accumBuffer=createFBO(gl,gl.drawingBufferWidth,gl.drawingBufferHeight,{preferFloat:!isMobile});var accumShader=createShader(gl);var isOrtho=options.cameraObject&&options.cameraObject._ortho===true||options.camera.projection&&options.camera.projection.type==='orthographic'||false;//Create a camera\nvar cameraOptions={eye:options.camera.eye||[2,0,0],center:options.camera.center||[0,0,0],up:options.camera.up||[0,1,0],zoomMin:options.camera.zoomMax||0.1,zoomMax:options.camera.zoomMin||100,mode:options.camera.mode||'turntable',_ortho:isOrtho};//Create axes\nvar axesOptions=options.axes||{};var axes=createAxes(gl,axesOptions);axes.enable=!axesOptions.disable;//Create spikes\nvar spikeOptions=options.spikes||{};var spikes=createSpikes(gl,spikeOptions);//Object list is empty initially\nvar objects=[];var pickBufferIds=[];var pickBufferCount=[];var pickBuffers=[];//Dirty flag, skip redraw if scene static\nvar dirty=true;var pickDirty=true;var projection=new Array(16);var model=new Array(16);var cameraParams={view:null,projection:projection,model:model,_ortho:false};var pickDirty=true;var viewShape=[gl.drawingBufferWidth,gl.drawingBufferHeight];var camera=options.cameraObject||createCamera(canvas,cameraOptions);//Create scene object\nvar scene={gl:gl,contextLost:false,pixelRatio:options.pixelRatio||1,canvas:canvas,selection:selection,camera:camera,axes:axes,axesPixels:null,spikes:spikes,bounds:bounds,objects:objects,shape:viewShape,aspect:options.aspectRatio||[1,1,1],pickRadius:options.pickRadius||10,zNear:options.zNear||0.01,zFar:options.zFar||1000,fovy:options.fovy||Math.PI/4,clearColor:options.clearColor||[0,0,0,0],autoResize:defaultBool(options.autoResize),autoBounds:defaultBool(options.autoBounds),autoScale:!!options.autoScale,autoCenter:defaultBool(options.autoCenter),clipToBounds:defaultBool(options.clipToBounds),snapToData:!!options.snapToData,onselect:options.onselect||null,onrender:options.onrender||null,onclick:options.onclick||null,cameraParams:cameraParams,oncontextloss:null,mouseListener:null,_stopped:false,getAspectratio:function(){return{x:this.aspect[0],y:this.aspect[1],z:this.aspect[2]};},setAspectratio:function(aspectratio){this.aspect[0]=aspectratio.x;this.aspect[1]=aspectratio.y;this.aspect[2]=aspectratio.z;pickDirty=true;},setBounds:function(axisIndex,range){this.bounds[0][axisIndex]=range.min;this.bounds[1][axisIndex]=range.max;},setClearColor:function(clearColor){this.clearColor=clearColor;},clearRGBA:function(){this.gl.clearColor(this.clearColor[0],this.clearColor[1],this.clearColor[2],this.clearColor[3]);this.gl.clear(this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT);}};var pickShape=[gl.drawingBufferWidth/scene.pixelRatio|0,gl.drawingBufferHeight/scene.pixelRatio|0];function resizeListener(){if(scene._stopped){return;}if(!scene.autoResize){return;}var parent=canvas.parentNode;var width=1;var height=1;if(parent&&parent!==document.body){width=parent.clientWidth;height=parent.clientHeight;}else{width=window.innerWidth;height=window.innerHeight;}var nextWidth=Math.ceil(width*scene.pixelRatio)|0;var nextHeight=Math.ceil(height*scene.pixelRatio)|0;if(nextWidth!==canvas.width||nextHeight!==canvas.height){canvas.width=nextWidth;canvas.height=nextHeight;var style=canvas.style;style.position=style.position||'absolute';style.left='0px';style.top='0px';style.width=width+'px';style.height=height+'px';dirty=true;}}if(scene.autoResize){resizeListener();}window.addEventListener('resize',resizeListener);function reallocPickIds(){var numObjs=objects.length;var numPick=pickBuffers.length;for(var i=0;i<numPick;++i){pickBufferCount[i]=0;}obj_loop:for(var i=0;i<numObjs;++i){var obj=objects[i];var pickCount=obj.pickSlots;if(!pickCount){pickBufferIds[i]=-1;continue;}for(var j=0;j<numPick;++j){if(pickBufferCount[j]+pickCount<255){pickBufferIds[i]=j;obj.setPickBase(pickBufferCount[j]+1);pickBufferCount[j]+=pickCount;continue obj_loop;}}//Create new pick buffer\nvar nbuffer=createSelect(gl,viewShape);pickBufferIds[i]=numPick;pickBuffers.push(nbuffer);pickBufferCount.push(pickCount);obj.setPickBase(1);numPick+=1;}while(numPick>0&&pickBufferCount[numPick-1]===0){pickBufferCount.pop();pickBuffers.pop().dispose();}}scene.update=function(options){if(scene._stopped){return;}options=options||{};dirty=true;pickDirty=true;};scene.add=function(obj){if(scene._stopped){return;}obj.axes=axes;objects.push(obj);pickBufferIds.push(-1);dirty=true;pickDirty=true;reallocPickIds();};scene.remove=function(obj){if(scene._stopped){return;}var idx=objects.indexOf(obj);if(idx<0){return;}objects.splice(idx,1);pickBufferIds.pop();dirty=true;pickDirty=true;reallocPickIds();};scene.dispose=function(){if(scene._stopped){return;}scene._stopped=true;window.removeEventListener('resize',resizeListener);canvas.removeEventListener('webglcontextlost',checkContextLoss);scene.mouseListener.enabled=false;if(scene.contextLost){return;}//Destroy objects\naxes.dispose();spikes.dispose();for(var i=0;i<objects.length;++i){objects[i].dispose();}//Clean up buffers\naccumBuffer.dispose();for(var i=0;i<pickBuffers.length;++i){pickBuffers[i].dispose();}//Clean up shaders\naccumShader.dispose();//Release all references\ngl=null;axes=null;spikes=null;objects=[];};//Update mouse position\nscene._mouseRotating=false;scene._prevButtons=0;scene.enableMouseListeners=function(){scene.mouseListener=mouseChange(canvas,function(buttons,x,y){if(scene._stopped){return;}var numPick=pickBuffers.length;var numObjs=objects.length;var prevObj=selection.object;selection.distance=Infinity;selection.mouse[0]=x;selection.mouse[1]=y;selection.object=null;selection.screen=null;selection.dataCoordinate=selection.dataPosition=null;var change=false;if(buttons&&scene._prevButtons){scene._mouseRotating=true;}else{if(scene._mouseRotating){pickDirty=true;}scene._mouseRotating=false;for(var i=0;i<numPick;++i){var result=pickBuffers[i].query(x,pickShape[1]-y-1,scene.pickRadius);if(result){if(result.distance>selection.distance){continue;}for(var j=0;j<numObjs;++j){var obj=objects[j];if(pickBufferIds[j]!==i){continue;}var objPick=obj.pick(result);if(objPick){selection.buttons=buttons;selection.screen=result.coord;selection.distance=result.distance;selection.object=obj;selection.index=objPick.distance;selection.dataPosition=objPick.position;selection.dataCoordinate=objPick.dataCoordinate;selection.data=objPick;change=true;}}}}}if(prevObj&&prevObj!==selection.object){if(prevObj.highlight){prevObj.highlight(null);}dirty=true;}if(selection.object){if(selection.object.highlight){selection.object.highlight(selection.data);}dirty=true;}change=change||selection.object!==prevObj;if(change&&scene.onselect){scene.onselect(selection);}if(buttons&1&&!(scene._prevButtons&1)&&scene.onclick){scene.onclick(selection);}scene._prevButtons=buttons;});};function checkContextLoss(){if(scene.contextLost){return true;}if(gl.isContextLost()){scene.contextLost=true;scene.mouseListener.enabled=false;scene.selection.object=null;if(scene.oncontextloss){scene.oncontextloss();}}}canvas.addEventListener('webglcontextlost',checkContextLoss);//Render the scene for mouse picking\nfunction renderPick(){if(checkContextLoss()){return;}gl.colorMask(true,true,true,true);gl.depthMask(true);gl.disable(gl.BLEND);gl.enable(gl.DEPTH_TEST);gl.depthFunc(gl.LEQUAL);var numObjs=objects.length;var numPick=pickBuffers.length;for(var j=0;j<numPick;++j){var buf=pickBuffers[j];buf.shape=pickShape;buf.begin();for(var i=0;i<numObjs;++i){if(pickBufferIds[i]!==j){continue;}var obj=objects[i];if(obj.drawPick){obj.pixelRatio=1;obj.drawPick(cameraParams);}}buf.end();}}var nBounds=[[Infinity,Infinity,Infinity],[-Infinity,-Infinity,-Infinity]];var prevBounds=[nBounds[0].slice(),nBounds[1].slice()];function redraw(){if(checkContextLoss()){return;}resizeListener();//Tick camera\nvar cameraMoved=scene.camera.tick();cameraParams.view=scene.camera.matrix;dirty=dirty||cameraMoved;pickDirty=pickDirty||cameraMoved;//Set pixel ratio\naxes.pixelRatio=scene.pixelRatio;spikes.pixelRatio=scene.pixelRatio;//Check if any objects changed, recalculate bounds\nvar numObjs=objects.length;var lo=nBounds[0];var hi=nBounds[1];lo[0]=lo[1]=lo[2]=Infinity;hi[0]=hi[1]=hi[2]=-Infinity;for(var i=0;i<numObjs;++i){var obj=objects[i];//Set the axes properties for each object\nobj.pixelRatio=scene.pixelRatio;obj.axes=scene.axes;dirty=dirty||!!obj.dirty;pickDirty=pickDirty||!!obj.dirty;var obb=obj.bounds;if(obb){var olo=obb[0];var ohi=obb[1];for(var j=0;j<3;++j){lo[j]=Math.min(lo[j],olo[j]);hi[j]=Math.max(hi[j],ohi[j]);}}}//Recalculate bounds\nvar bounds=scene.bounds;if(scene.autoBounds){for(var j=0;j<3;++j){if(hi[j]<lo[j]){lo[j]=-1;hi[j]=1;}else{if(lo[j]===hi[j]){lo[j]-=1;hi[j]+=1;}var padding=0.05*(hi[j]-lo[j]);lo[j]=lo[j]-padding;hi[j]=hi[j]+padding;}bounds[0][j]=lo[j];bounds[1][j]=hi[j];}}var boundsChanged=false;for(var j=0;j<3;++j){boundsChanged=boundsChanged||prevBounds[0][j]!==bounds[0][j]||prevBounds[1][j]!==bounds[1][j];prevBounds[0][j]=bounds[0][j];prevBounds[1][j]=bounds[1][j];}//Recalculate bounds\npickDirty=pickDirty||boundsChanged;dirty=dirty||boundsChanged;if(!dirty){return;}if(boundsChanged){var tickSpacing=[0,0,0];for(var i=0;i<3;++i){tickSpacing[i]=roundUpPow10((bounds[1][i]-bounds[0][i])/10.0);}if(axes.autoTicks){axes.update({bounds:bounds,tickSpacing:tickSpacing});}else{axes.update({bounds:bounds});}}//Get scene\nvar width=gl.drawingBufferWidth;var height=gl.drawingBufferHeight;viewShape[0]=width;viewShape[1]=height;pickShape[0]=Math.max(width/scene.pixelRatio,1)|0;pickShape[1]=Math.max(height/scene.pixelRatio,1)|0;//Compute camera parameters\ncalcCameraParams(scene,isOrtho);//Apply axes/clip bounds\nfor(var i=0;i<numObjs;++i){var obj=objects[i];//Set axes bounds\nobj.axesBounds=bounds;//Set clip bounds\nif(scene.clipToBounds){obj.clipBounds=bounds;}}//Set spike parameters\nif(selection.object){if(scene.snapToData){spikes.position=selection.dataCoordinate;}else{spikes.position=selection.dataPosition;}spikes.bounds=bounds;}//If state changed, then redraw pick buffers\nif(pickDirty){pickDirty=false;renderPick();}//Recalculate pixel data\nscene.axesPixels=axesRanges(scene.axes,cameraParams,width,height);//Call render callback\nif(scene.onrender){scene.onrender();}//Read value\ngl.bindFramebuffer(gl.FRAMEBUFFER,null);gl.viewport(0,0,width,height);//General strategy: 3 steps\n//  1. render non-transparent objects\n//  2. accumulate transparent objects into separate fbo\n//  3. composite final scene\n//Clear FBO\nscene.clearRGBA();gl.depthMask(true);gl.colorMask(true,true,true,true);gl.enable(gl.DEPTH_TEST);gl.depthFunc(gl.LEQUAL);gl.disable(gl.BLEND);gl.disable(gl.CULL_FACE);//most visualization surfaces are 2 sided\n//Render opaque pass\nvar hasTransparent=false;if(axes.enable){hasTransparent=hasTransparent||axes.isTransparent();axes.draw(cameraParams);}spikes.axes=axes;if(selection.object){spikes.draw(cameraParams);}gl.disable(gl.CULL_FACE);//most visualization surfaces are 2 sided\nfor(var i=0;i<numObjs;++i){var obj=objects[i];obj.axes=axes;obj.pixelRatio=scene.pixelRatio;if(obj.isOpaque&&obj.isOpaque()){obj.draw(cameraParams);}if(obj.isTransparent&&obj.isTransparent()){hasTransparent=true;}}if(hasTransparent){//Render transparent pass\naccumBuffer.shape=viewShape;accumBuffer.bind();gl.clear(gl.DEPTH_BUFFER_BIT);gl.colorMask(false,false,false,false);gl.depthMask(true);gl.depthFunc(gl.LESS);//Render forward facing objects\nif(axes.enable&&axes.isTransparent()){axes.drawTransparent(cameraParams);}for(var i=0;i<numObjs;++i){var obj=objects[i];if(obj.isOpaque&&obj.isOpaque()){obj.draw(cameraParams);}}//Render transparent pass\ngl.enable(gl.BLEND);gl.blendEquation(gl.FUNC_ADD);gl.blendFunc(gl.ONE,gl.ONE_MINUS_SRC_ALPHA);gl.colorMask(true,true,true,true);gl.depthMask(false);gl.clearColor(0,0,0,0);gl.clear(gl.COLOR_BUFFER_BIT);if(axes.isTransparent()){axes.drawTransparent(cameraParams);}for(var i=0;i<numObjs;++i){var obj=objects[i];if(obj.isTransparent&&obj.isTransparent()){obj.drawTransparent(cameraParams);}}//Unbind framebuffer\ngl.bindFramebuffer(gl.FRAMEBUFFER,null);//Draw composite pass\ngl.blendFunc(gl.ONE,gl.ONE_MINUS_SRC_ALPHA);gl.disable(gl.DEPTH_TEST);accumShader.bind();accumBuffer.color[0].bind(0);accumShader.uniforms.accumBuffer=0;drawTriangle(gl);//Turn off blending\ngl.disable(gl.BLEND);}//Clear dirty flags\ndirty=false;for(var i=0;i<numObjs;++i){objects[i].dirty=false;}}//Draw the whole scene\nfunction render(){if(scene._stopped||scene.contextLost){return;}// this order is important: ios safari sometimes has sync raf\nredraw();requestAnimationFrame(render);}scene.enableMouseListeners();render();//Force redraw of whole scene\nscene.redraw=function(){if(scene._stopped){return;}dirty=true;redraw();};return scene;}function calcCameraParams(scene,isOrtho){var bounds=scene.bounds;var cameraParams=scene.cameraParams;var projection=cameraParams.projection;var model=cameraParams.model;var width=scene.gl.drawingBufferWidth;var height=scene.gl.drawingBufferHeight;var zNear=scene.zNear;var zFar=scene.zFar;var fovy=scene.fovy;var r=width/height;if(isOrtho){ortho(projection,-r,r,-1,1,zNear,zFar);cameraParams._ortho=true;}else{perspective(projection,fovy,r,zNear,zFar);cameraParams._ortho=false;}//Compute model matrix\nfor(var i=0;i<16;++i){model[i]=0;}model[15]=1;var maxS=0;for(var i=0;i<3;++i){maxS=Math.max(maxS,bounds[1][i]-bounds[0][i]);}for(var i=0;i<3;++i){if(scene.autoScale){model[5*i]=scene.aspect[i]/(bounds[1][i]-bounds[0][i]);}else{model[5*i]=1/maxS;}if(scene.autoCenter){model[12+i]=-model[5*i]*0.5*(bounds[0][i]+bounds[1][i]);}}}/***/},/***/8023:/***/function(__unused_webpack_module,exports,__nested_webpack_require_448875__){var glslify=__nested_webpack_require_448875__(6832);exports.pointVertex=glslify([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position;\\n\\nuniform mat3 matrix;\\nuniform float pointSize;\\nuniform float pointCloud;\\n\\nhighp float rand(vec2 co) {\\n  highp float a = 12.9898;\\n  highp float b = 78.233;\\n  highp float c = 43758.5453;\\n  highp float d = dot(co.xy, vec2(a, b));\\n  highp float e = mod(d, 3.14);\\n  return fract(sin(e) * c);\\n}\\n\\nvoid main() {\\n  vec3 hgPosition = matrix * vec3(position, 1);\\n  gl_Position  = vec4(hgPosition.xy, 0, hgPosition.z);\\n    // if we don't jitter the point size a bit, overall point cloud\\n    // saturation 'jumps' on zooming, which is disturbing and confusing\\n  gl_PointSize = pointSize * ((19.5 + rand(position)) / 20.0);\\n  if(pointCloud != 0.0) { // pointCloud is truthy\\n    // get the same square surface as circle would be\\n    gl_PointSize *= 0.886;\\n  }\\n}\"]);exports.pointFragment=glslify([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec4 color, borderColor;\\nuniform float centerFraction;\\nuniform float pointCloud;\\n\\nvoid main() {\\n  float radius;\\n  vec4 baseColor;\\n  if(pointCloud != 0.0) { // pointCloud is truthy\\n    if(centerFraction == 1.0) {\\n      gl_FragColor = color;\\n    } else {\\n      gl_FragColor = mix(borderColor, color, centerFraction);\\n    }\\n  } else {\\n    radius = length(2.0 * gl_PointCoord.xy - 1.0);\\n    if(radius > 1.0) {\\n      discard;\\n    }\\n    baseColor = mix(borderColor, color, step(radius, centerFraction));\\n    gl_FragColor = vec4(baseColor.rgb * baseColor.a, baseColor.a);\\n  }\\n}\\n\"]);exports.pickVertex=glslify([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position;\\nattribute vec4 pickId;\\n\\nuniform mat3 matrix;\\nuniform float pointSize;\\nuniform vec4 pickOffset;\\n\\nvarying vec4 fragId;\\n\\nvoid main() {\\n  vec3 hgPosition = matrix * vec3(position, 1);\\n  gl_Position  = vec4(hgPosition.xy, 0, hgPosition.z);\\n  gl_PointSize = pointSize;\\n\\n  vec4 id = pickId + pickOffset;\\n  id.y += floor(id.x / 256.0);\\n  id.x -= floor(id.x / 256.0) * 256.0;\\n\\n  id.z += floor(id.y / 256.0);\\n  id.y -= floor(id.y / 256.0) * 256.0;\\n\\n  id.w += floor(id.z / 256.0);\\n  id.z -= floor(id.z / 256.0) * 256.0;\\n\\n  fragId = id;\\n}\\n\"]);exports.pickFragment=glslify([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragId;\\n\\nvoid main() {\\n  float radius = length(2.0 * gl_PointCoord.xy - 1.0);\\n  if(radius > 1.0) {\\n    discard;\\n  }\\n  gl_FragColor = fragId / 255.0;\\n}\\n\"]);/***/},/***/8271:/***/function(module,__unused_webpack_exports,__nested_webpack_require_451471__){\"use strict\";var createShader=__nested_webpack_require_451471__(5158);var createBuffer=__nested_webpack_require_451471__(5827);var pool=__nested_webpack_require_451471__(5306);var SHADERS=__nested_webpack_require_451471__(8023);module.exports=createPointcloud2D;function Pointcloud2D(plot,offsetBuffer,pickBuffer,shader,pickShader){this.plot=plot;this.offsetBuffer=offsetBuffer;this.pickBuffer=pickBuffer;this.shader=shader;this.pickShader=pickShader;this.sizeMin=0.5;this.sizeMinCap=2;this.sizeMax=20;this.areaRatio=1.0;this.pointCount=0;this.color=[1,0,0,1];this.borderColor=[0,0,0,1];this.blend=false;this.pickOffset=0;this.points=null;}var proto=Pointcloud2D.prototype;proto.dispose=function(){this.shader.dispose();this.pickShader.dispose();this.offsetBuffer.dispose();this.pickBuffer.dispose();this.plot.removeObject(this);};proto.update=function(options){var i;options=options||{};function dflt(opt,value){if(opt in options){return options[opt];}return value;}this.sizeMin=dflt('sizeMin',0.5);// this.sizeMinCap      = dflt('sizeMinCap', 2)\nthis.sizeMax=dflt('sizeMax',20);this.color=dflt('color',[1,0,0,1]).slice();this.areaRatio=dflt('areaRatio',1);this.borderColor=dflt('borderColor',[0,0,0,1]).slice();this.blend=dflt('blend',false);//Update point data\n// Attempt straight-through processing (STP) to avoid allocation and copy\n// TODO eventually abstract out STP logic, maybe into `pool` or a layer above\nvar pointCount=options.positions.length>>>1;var dataStraightThrough=options.positions instanceof Float32Array;var idStraightThrough=options.idToIndex instanceof Int32Array&&options.idToIndex.length>=pointCount;// permit larger to help reuse\nvar data=options.positions;var packed=dataStraightThrough?data:pool.mallocFloat32(data.length);var packedId=idStraightThrough?options.idToIndex:pool.mallocInt32(pointCount);if(!dataStraightThrough){packed.set(data);}if(!idStraightThrough){packed.set(data);for(i=0;i<pointCount;i++){packedId[i]=i;}}this.points=data;this.offsetBuffer.update(packed);this.pickBuffer.update(packedId);if(!dataStraightThrough){pool.free(packed);}if(!idStraightThrough){pool.free(packedId);}this.pointCount=pointCount;this.pickOffset=0;};function count(points,dataBox){var visiblePointCountEstimate=0;var length=points.length>>>1;var i;for(i=0;i<length;i++){var x=points[i*2];var y=points[i*2+1];if(x>=dataBox[0]&&x<=dataBox[2]&&y>=dataBox[1]&&y<=dataBox[3])visiblePointCountEstimate++;}return visiblePointCountEstimate;}proto.unifiedDraw=function(){var MATRIX=[1,0,0,0,1,0,0,0,1];var PICK_VEC4=[0,0,0,0];return function(pickOffset){var pick=pickOffset!==void 0;var shader=pick?this.pickShader:this.shader;var gl=this.plot.gl;var dataBox=this.plot.dataBox;if(this.pointCount===0){return pickOffset;}var dataX=dataBox[2]-dataBox[0];var dataY=dataBox[3]-dataBox[1];var visiblePointCountEstimate=count(this.points,dataBox);var basicPointSize=this.plot.pickPixelRatio*Math.max(Math.min(this.sizeMinCap,this.sizeMin),Math.min(this.sizeMax,this.sizeMax/Math.pow(visiblePointCountEstimate,0.33333)));MATRIX[0]=2.0/dataX;MATRIX[4]=2.0/dataY;MATRIX[6]=-2.0*dataBox[0]/dataX-1.0;MATRIX[7]=-2.0*dataBox[1]/dataY-1.0;this.offsetBuffer.bind();shader.bind();shader.attributes.position.pointer();shader.uniforms.matrix=MATRIX;shader.uniforms.color=this.color;shader.uniforms.borderColor=this.borderColor;shader.uniforms.pointCloud=basicPointSize<5;shader.uniforms.pointSize=basicPointSize;shader.uniforms.centerFraction=Math.min(1,Math.max(0,Math.sqrt(1-this.areaRatio)));if(pick){PICK_VEC4[0]=pickOffset&0xff;PICK_VEC4[1]=pickOffset>>8&0xff;PICK_VEC4[2]=pickOffset>>16&0xff;PICK_VEC4[3]=pickOffset>>24&0xff;this.pickBuffer.bind();shader.attributes.pickId.pointer(gl.UNSIGNED_BYTE);shader.uniforms.pickOffset=PICK_VEC4;this.pickOffset=pickOffset;}// Worth switching these off, but we can't make assumptions about other\n// renderers, so let's restore it after each draw\nvar blend=gl.getParameter(gl.BLEND);var dither=gl.getParameter(gl.DITHER);if(blend&&!this.blend)gl.disable(gl.BLEND);if(dither)gl.disable(gl.DITHER);gl.drawArrays(gl.POINTS,0,this.pointCount);if(blend&&!this.blend)gl.enable(gl.BLEND);if(dither)gl.enable(gl.DITHER);return pickOffset+this.pointCount;};}();proto.draw=proto.unifiedDraw;proto.drawPick=proto.unifiedDraw;proto.pick=function(x,y,value){var pickOffset=this.pickOffset;var pointCount=this.pointCount;if(value<pickOffset||value>=pickOffset+pointCount){return null;}var pointId=value-pickOffset;var points=this.points;return{object:this,pointId:pointId,dataCoord:[points[2*pointId],points[2*pointId+1]]};};function createPointcloud2D(plot,options){var gl=plot.gl;var buffer=createBuffer(gl);var pickBuffer=createBuffer(gl);var shader=createShader(gl,SHADERS.pointVertex,SHADERS.pointFragment);var pickShader=createShader(gl,SHADERS.pickVertex,SHADERS.pickFragment);var result=new Pointcloud2D(plot,buffer,pickBuffer,shader,pickShader);result.update(options);//Register with plot\nplot.addObject(result);return result;}/***/},/***/6093:/***/function(module){module.exports=slerp;/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {quat} out\n */function slerp(out,a,b,t){// benchmarks:\n//    http://jsperf.com/quaternion-slerp-implementations\nvar ax=a[0],ay=a[1],az=a[2],aw=a[3],bx=b[0],by=b[1],bz=b[2],bw=b[3];var omega,cosom,sinom,scale0,scale1;// calc cosine\ncosom=ax*bx+ay*by+az*bz+aw*bw;// adjust signs (if necessary)\nif(cosom<0.0){cosom=-cosom;bx=-bx;by=-by;bz=-bz;bw=-bw;}// calculate coefficients\nif(1.0-cosom>0.000001){// standard case (slerp)\nomega=Math.acos(cosom);sinom=Math.sin(omega);scale0=Math.sin((1.0-t)*omega)/sinom;scale1=Math.sin(t*omega)/sinom;}else{// \"from\" and \"to\" quaternions are very close\n//  ... so we can do a linear interpolation\nscale0=1.0-t;scale1=t;}// calculate final values\nout[0]=scale0*ax+scale1*bx;out[1]=scale0*ay+scale1*by;out[2]=scale0*az+scale1*bz;out[3]=scale0*aw+scale1*bw;return out;}/***/},/***/8240:/***/function(module){\"use strict\";module.exports=function(a){return!a&&a!==0?'':a.toString();};/***/},/***/4123:/***/function(module,__unused_webpack_exports,__nested_webpack_require_457703__){\"use strict\";var vectorizeText=__nested_webpack_require_457703__(875);module.exports=getGlyph;var GLYPH_CACHE={};function getGlyph(symbol,font,pixelRatio){var fontCache=GLYPH_CACHE[font];if(!fontCache){fontCache=GLYPH_CACHE[font]={};}if(symbol in fontCache){return fontCache[symbol];}var config={textAlign:\"center\",textBaseline:\"middle\",lineHeight:1.0,font:font,lineSpacing:1.25,styletags:{breaklines:true,bolds:true,italics:true,subscripts:true,superscripts:true}};//Get line and triangle meshes for glyph\nconfig.triangles=true;var triSymbol=vectorizeText(symbol,config);config.triangles=false;var lineSymbol=vectorizeText(symbol,config);var i,j;if(pixelRatio&&pixelRatio!==1){for(i=0;i<triSymbol.positions.length;++i){for(j=0;j<triSymbol.positions[i].length;++j){triSymbol.positions[i][j]/=pixelRatio;}}for(i=0;i<lineSymbol.positions.length;++i){for(j=0;j<lineSymbol.positions[i].length;++j){lineSymbol.positions[i][j]/=pixelRatio;}}}//Calculate bounding box\nvar bounds=[[Infinity,Infinity],[-Infinity,-Infinity]];var n=lineSymbol.positions.length;for(i=0;i<n;++i){var p=lineSymbol.positions[i];for(j=0;j<2;++j){bounds[0][j]=Math.min(bounds[0][j],p[j]);bounds[1][j]=Math.max(bounds[1][j],p[j]);}}//Save cached symbol\nreturn fontCache[symbol]=[triSymbol,lineSymbol,bounds];}/***/},/***/9282:/***/function(__unused_webpack_module,exports,__nested_webpack_require_459048__){var createShaderWrapper=__nested_webpack_require_459048__(5158);var glslify=__nested_webpack_require_459048__(6832);var perspectiveVertSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nattribute vec3 position;\\nattribute vec4 color;\\nattribute vec2 glyph;\\nattribute vec4 id;\\n\\nuniform vec4 highlightId;\\nuniform float highlightScale;\\nuniform mat4 model, view, projection;\\nuniform vec3 clipBounds[2];\\n\\nvarying vec4 interpColor;\\nvarying vec4 pickId;\\nvarying vec3 dataCoordinate;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], position)) {\\n\\n    gl_Position = vec4(0,0,0,0);\\n  } else {\\n    float scale = 1.0;\\n    if(distance(highlightId, id) < 0.0001) {\\n      scale = highlightScale;\\n    }\\n\\n    vec4 worldPosition = model * vec4(position, 1);\\n    vec4 viewPosition = view * worldPosition;\\n    viewPosition = viewPosition / viewPosition.w;\\n    vec4 clipPosition = projection * (viewPosition + scale * vec4(glyph.x, -glyph.y, 0, 0));\\n\\n    gl_Position = clipPosition;\\n    interpColor = color;\\n    pickId = id;\\n    dataCoordinate = position;\\n  }\\n}\"]);var orthographicVertSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nattribute vec3 position;\\nattribute vec4 color;\\nattribute vec2 glyph;\\nattribute vec4 id;\\n\\nuniform mat4 model, view, projection;\\nuniform vec2 screenSize;\\nuniform vec3 clipBounds[2];\\nuniform float highlightScale, pixelRatio;\\nuniform vec4 highlightId;\\n\\nvarying vec4 interpColor;\\nvarying vec4 pickId;\\nvarying vec3 dataCoordinate;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], position)) {\\n\\n    gl_Position = vec4(0,0,0,0);\\n  } else {\\n    float scale = pixelRatio;\\n    if(distance(highlightId.bgr, id.bgr) < 0.001) {\\n      scale *= highlightScale;\\n    }\\n\\n    vec4 worldPosition = model * vec4(position, 1.0);\\n    vec4 viewPosition = view * worldPosition;\\n    vec4 clipPosition = projection * viewPosition;\\n    clipPosition /= clipPosition.w;\\n\\n    gl_Position = clipPosition + vec4(screenSize * scale * vec2(glyph.x, -glyph.y), 0.0, 0.0);\\n    interpColor = color;\\n    pickId = id;\\n    dataCoordinate = position;\\n  }\\n}\"]);var projectionVertSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nattribute vec3 position;\\nattribute vec4 color;\\nattribute vec2 glyph;\\nattribute vec4 id;\\n\\nuniform float highlightScale;\\nuniform vec4 highlightId;\\nuniform vec3 axes[2];\\nuniform mat4 model, view, projection;\\nuniform vec2 screenSize;\\nuniform vec3 clipBounds[2];\\nuniform float scale, pixelRatio;\\n\\nvarying vec4 interpColor;\\nvarying vec4 pickId;\\nvarying vec3 dataCoordinate;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], position)) {\\n\\n    gl_Position = vec4(0,0,0,0);\\n  } else {\\n    float lscale = pixelRatio * scale;\\n    if(distance(highlightId, id) < 0.0001) {\\n      lscale *= highlightScale;\\n    }\\n\\n    vec4 clipCenter   = projection * view * model * vec4(position, 1);\\n    vec3 dataPosition = position + 0.5*lscale*(axes[0] * glyph.x + axes[1] * glyph.y) * clipCenter.w * screenSize.y;\\n    vec4 clipPosition = projection * view * model * vec4(dataPosition, 1);\\n\\n    gl_Position = clipPosition;\\n    interpColor = color;\\n    pickId = id;\\n    dataCoordinate = dataPosition;\\n  }\\n}\\n\"]);var drawFragSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3 fragClipBounds[2];\\nuniform float opacity;\\n\\nvarying vec4 interpColor;\\nvarying vec3 dataCoordinate;\\n\\nvoid main() {\\n  if (\\n    outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate) ||\\n    interpColor.a * opacity == 0.\\n  ) discard;\\n  gl_FragColor = interpColor * opacity;\\n}\\n\"]);var pickFragSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3 fragClipBounds[2];\\nuniform float pickGroup;\\n\\nvarying vec4 pickId;\\nvarying vec3 dataCoordinate;\\n\\nvoid main() {\\n  if (outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate)) discard;\\n\\n  gl_FragColor = vec4(pickGroup, pickId.bgr);\\n}\"]);var ATTRIBUTES=[{name:'position',type:'vec3'},{name:'color',type:'vec4'},{name:'glyph',type:'vec2'},{name:'id',type:'vec4'}];var perspective={vertex:perspectiveVertSrc,fragment:drawFragSrc,attributes:ATTRIBUTES},ortho={vertex:orthographicVertSrc,fragment:drawFragSrc,attributes:ATTRIBUTES},project={vertex:projectionVertSrc,fragment:drawFragSrc,attributes:ATTRIBUTES},pickPerspective={vertex:perspectiveVertSrc,fragment:pickFragSrc,attributes:ATTRIBUTES},pickOrtho={vertex:orthographicVertSrc,fragment:pickFragSrc,attributes:ATTRIBUTES},pickProject={vertex:projectionVertSrc,fragment:pickFragSrc,attributes:ATTRIBUTES};function createShader(gl,src){var shader=createShaderWrapper(gl,src);var attr=shader.attributes;attr.position.location=0;attr.color.location=1;attr.glyph.location=2;attr.id.location=3;return shader;}exports.createPerspective=function(gl){return createShader(gl,perspective);};exports.createOrtho=function(gl){return createShader(gl,ortho);};exports.createProject=function(gl){return createShader(gl,project);};exports.createPickPerspective=function(gl){return createShader(gl,pickPerspective);};exports.createPickOrtho=function(gl){return createShader(gl,pickOrtho);};exports.createPickProject=function(gl){return createShader(gl,pickProject);};/***/},/***/2182:/***/function(module,__unused_webpack_exports,__nested_webpack_require_466816__){\"use strict\";var isAllBlank=__nested_webpack_require_466816__(3596);var createBuffer=__nested_webpack_require_466816__(5827);var createVAO=__nested_webpack_require_466816__(2944);var pool=__nested_webpack_require_466816__(5306);var mat4mult=__nested_webpack_require_466816__(104);var shaders=__nested_webpack_require_466816__(9282);var getGlyph=__nested_webpack_require_466816__(4123);var getSimpleString=__nested_webpack_require_466816__(8240);var IDENTITY=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];module.exports=createPointCloud;function transformMat4(x,m){var x0=x[0];var x1=x[1];var x2=x[2];var x3=x[3];x[0]=m[0]*x0+m[4]*x1+m[8]*x2+m[12]*x3;x[1]=m[1]*x0+m[5]*x1+m[9]*x2+m[13]*x3;x[2]=m[2]*x0+m[6]*x1+m[10]*x2+m[14]*x3;x[3]=m[3]*x0+m[7]*x1+m[11]*x2+m[15]*x3;return x;}function project(p,v,m,x){transformMat4(x,x,m);transformMat4(x,x,v);return transformMat4(x,x,p);}function ScatterPlotPickResult(index,position){this.index=index;this.dataCoordinate=this.position=position;}function fixOpacity(a){if(a===true)return 1;if(a>1)return 1;return a;}function PointCloud(gl,shader,orthoShader,projectShader,pointBuffer,colorBuffer,glyphBuffer,idBuffer,vao,pickPerspectiveShader,pickOrthoShader,pickProjectShader){this.gl=gl;this.pixelRatio=1;this.shader=shader;this.orthoShader=orthoShader;this.projectShader=projectShader;this.pointBuffer=pointBuffer;this.colorBuffer=colorBuffer;this.glyphBuffer=glyphBuffer;this.idBuffer=idBuffer;this.vao=vao;this.vertexCount=0;this.lineVertexCount=0;this.opacity=1;this.hasAlpha=false;this.lineWidth=0;this.projectScale=[2.0/3.0,2.0/3.0,2.0/3.0];this.projectOpacity=[1,1,1];this.projectHasAlpha=false;this.pickId=0;this.pickPerspectiveShader=pickPerspectiveShader;this.pickOrthoShader=pickOrthoShader;this.pickProjectShader=pickProjectShader;this.points=[];this._selectResult=new ScatterPlotPickResult(0,[0,0,0]);this.useOrtho=true;this.bounds=[[Infinity,Infinity,Infinity],[-Infinity,-Infinity,-Infinity]];//Axes projections\nthis.axesProject=[true,true,true];this.axesBounds=[[-Infinity,-Infinity,-Infinity],[Infinity,Infinity,Infinity]];this.highlightId=[1,1,1,1];this.highlightScale=2;this.clipBounds=[[-Infinity,-Infinity,-Infinity],[Infinity,Infinity,Infinity]];this.dirty=true;}var proto=PointCloud.prototype;proto.pickSlots=1;proto.setPickBase=function(pickBase){this.pickId=pickBase;};proto.isTransparent=function(){if(this.hasAlpha){return true;}for(var i=0;i<3;++i){if(this.axesProject[i]&&this.projectHasAlpha){return true;}}return false;};proto.isOpaque=function(){if(!this.hasAlpha){return true;}for(var i=0;i<3;++i){if(this.axesProject[i]&&!this.projectHasAlpha){return true;}}return false;};var VIEW_SHAPE=[0,0];var U_VEC=[0,0,0];var V_VEC=[0,0,0];var MU_VEC=[0,0,0,1];var MV_VEC=[0,0,0,1];var SCRATCH_MATRIX=IDENTITY.slice();var SCRATCH_VEC=[0,0,0];var CLIP_BOUNDS=[[0,0,0],[0,0,0]];function zeroVec(a){a[0]=a[1]=a[2]=0;return a;}function augment(hg,af){hg[0]=af[0];hg[1]=af[1];hg[2]=af[2];hg[3]=1;return hg;}function setComponent(out,v,i,x){out[0]=v[0];out[1]=v[1];out[2]=v[2];out[i]=x;return out;}function getClipBounds(bounds){var result=CLIP_BOUNDS;for(var i=0;i<2;++i){for(var j=0;j<3;++j){result[i][j]=Math.max(Math.min(bounds[i][j],1e8),-1e8);}}return result;}function drawProject(shader,points,camera,pixelRatio){var axesProject=points.axesProject;var gl=points.gl;var uniforms=shader.uniforms;var model=camera.model||IDENTITY;var view=camera.view||IDENTITY;var projection=camera.projection||IDENTITY;var bounds=points.axesBounds;var clipBounds=getClipBounds(points.clipBounds);var cubeAxis;if(points.axes&&points.axes.lastCubeProps){cubeAxis=points.axes.lastCubeProps.axis;}else{cubeAxis=[1,1,1];}VIEW_SHAPE[0]=2.0/gl.drawingBufferWidth;VIEW_SHAPE[1]=2.0/gl.drawingBufferHeight;shader.bind();uniforms.view=view;uniforms.projection=projection;uniforms.screenSize=VIEW_SHAPE;uniforms.highlightId=points.highlightId;uniforms.highlightScale=points.highlightScale;uniforms.clipBounds=clipBounds;uniforms.pickGroup=points.pickId/255.0;uniforms.pixelRatio=pixelRatio;for(var i=0;i<3;++i){if(!axesProject[i]){continue;}uniforms.scale=points.projectScale[i];uniforms.opacity=points.projectOpacity[i];//Project model matrix\nvar pmodel=SCRATCH_MATRIX;for(var j=0;j<16;++j){pmodel[j]=0;}for(var j=0;j<4;++j){pmodel[5*j]=1;}pmodel[5*i]=0;if(cubeAxis[i]<0){pmodel[12+i]=bounds[0][i];}else{pmodel[12+i]=bounds[1][i];}mat4mult(pmodel,model,pmodel);uniforms.model=pmodel;//Compute initial axes\nvar u=(i+1)%3;var v=(i+2)%3;var du=zeroVec(U_VEC);var dv=zeroVec(V_VEC);du[u]=1;dv[v]=1;//Align orientation relative to viewer\nvar mdu=project(projection,view,model,augment(MU_VEC,du));var mdv=project(projection,view,model,augment(MV_VEC,dv));if(Math.abs(mdu[1])>Math.abs(mdv[1])){var tmp=mdu;mdu=mdv;mdv=tmp;tmp=du;du=dv;dv=tmp;var t=u;u=v;v=t;}if(mdu[0]<0){du[u]=-1;}if(mdv[1]>0){dv[v]=-1;}var su=0.0;var sv=0.0;for(var j=0;j<4;++j){su+=Math.pow(model[4*u+j],2);sv+=Math.pow(model[4*v+j],2);}du[u]/=Math.sqrt(su);dv[v]/=Math.sqrt(sv);uniforms.axes[0]=du;uniforms.axes[1]=dv;//Update fragment clip bounds\nuniforms.fragClipBounds[0]=setComponent(SCRATCH_VEC,clipBounds[0],i,-1e8);uniforms.fragClipBounds[1]=setComponent(SCRATCH_VEC,clipBounds[1],i,1e8);points.vao.bind();//Draw interior\npoints.vao.draw(gl.TRIANGLES,points.vertexCount);//Draw edges\nif(points.lineWidth>0){gl.lineWidth(points.lineWidth*pixelRatio);points.vao.draw(gl.LINES,points.lineVertexCount,points.vertexCount);}points.vao.unbind();}}var NEG_INFINITY3=[-1e8,-1e8,-1e8];var POS_INFINITY3=[1e8,1e8,1e8];var CLIP_GROUP=[NEG_INFINITY3,POS_INFINITY3];function drawFull(shader,pshader,points,camera,pixelRatio,transparent,forceDraw){var gl=points.gl;if(transparent===points.projectHasAlpha||forceDraw){drawProject(pshader,points,camera,pixelRatio);}if(transparent===points.hasAlpha||forceDraw){shader.bind();var uniforms=shader.uniforms;uniforms.model=camera.model||IDENTITY;uniforms.view=camera.view||IDENTITY;uniforms.projection=camera.projection||IDENTITY;VIEW_SHAPE[0]=2.0/gl.drawingBufferWidth;VIEW_SHAPE[1]=2.0/gl.drawingBufferHeight;uniforms.screenSize=VIEW_SHAPE;uniforms.highlightId=points.highlightId;uniforms.highlightScale=points.highlightScale;uniforms.fragClipBounds=CLIP_GROUP;uniforms.clipBounds=points.axes.bounds;uniforms.opacity=points.opacity;uniforms.pickGroup=points.pickId/255.0;uniforms.pixelRatio=pixelRatio;points.vao.bind();//Draw interior\npoints.vao.draw(gl.TRIANGLES,points.vertexCount);//Draw edges\nif(points.lineWidth>0){gl.lineWidth(points.lineWidth*pixelRatio);points.vao.draw(gl.LINES,points.lineVertexCount,points.vertexCount);}points.vao.unbind();}}proto.draw=function(camera){var shader=this.useOrtho?this.orthoShader:this.shader;drawFull(shader,this.projectShader,this,camera,this.pixelRatio,false,false);};proto.drawTransparent=function(camera){var shader=this.useOrtho?this.orthoShader:this.shader;drawFull(shader,this.projectShader,this,camera,this.pixelRatio,true,false);};proto.drawPick=function(camera){var shader=this.useOrtho?this.pickOrthoShader:this.pickPerspectiveShader;drawFull(shader,this.pickProjectShader,this,camera,1,true,true);};proto.pick=function(selected){if(!selected){return null;}if(selected.id!==this.pickId){return null;}var x=selected.value[2]+(selected.value[1]<<8)+(selected.value[0]<<16);if(x>=this.pointCount||x<0){return null;}//Unpack result\nvar coord=this.points[x];var result=this._selectResult;result.index=x;for(var i=0;i<3;++i){result.position[i]=result.dataCoordinate[i]=coord[i];}return result;};proto.highlight=function(selection){if(!selection){this.highlightId=[1,1,1,1];}else{var pointId=selection.index;var a0=pointId&0xff;var a1=pointId>>8&0xff;var a2=pointId>>16&0xff;this.highlightId=[a0/255.0,a1/255.0,a2/255.0,0];}};function get_glyphData(glyphs,index,font,pixelRatio){var str;// use the data if presented in an array\nif(Array.isArray(glyphs)){if(index<glyphs.length){str=glyphs[index];}else{str=undefined;}}else{str=glyphs;}str=getSimpleString(str);// this would handle undefined cases\nvar visible=true;if(isAllBlank(str)){str='▼';// Note: this special character may have minimum number of surfaces\nvisible=false;}var glyph=getGlyph(str,font,pixelRatio);return{mesh:glyph[0],lines:glyph[1],bounds:glyph[2],visible:visible};}proto.update=function(options){options=options||{};if('perspective'in options){this.useOrtho=!options.perspective;}if('orthographic'in options){this.useOrtho=!!options.orthographic;}if('lineWidth'in options){this.lineWidth=options.lineWidth;}if('project'in options){if(Array.isArray(options.project)){this.axesProject=options.project;}else{var v=!!options.project;this.axesProject=[v,v,v];}}if('projectScale'in options){if(Array.isArray(options.projectScale)){this.projectScale=options.projectScale.slice();}else{var s=+options.projectScale;this.projectScale=[s,s,s];}}this.projectHasAlpha=false;// default to no transparent draw\nif('projectOpacity'in options){if(Array.isArray(options.projectOpacity)){this.projectOpacity=options.projectOpacity.slice();}else{var s=+options.projectOpacity;this.projectOpacity=[s,s,s];}for(var i=0;i<3;++i){this.projectOpacity[i]=fixOpacity(this.projectOpacity[i]);if(this.projectOpacity[i]<1){this.projectHasAlpha=true;}}}this.hasAlpha=false;// default to no transparent draw\nif('opacity'in options){this.opacity=fixOpacity(options.opacity);if(this.opacity<1){this.hasAlpha=true;}}//Set dirty flag\nthis.dirty=true;//Create new buffers\nvar points=options.position;//Text font\nvar font=options.font||'normal';var alignment=options.alignment||[0,0];var alignmentX;var alignmentY;if(alignment.length===2){alignmentX=alignment[0];alignmentY=alignment[1];}else{alignmentX=[];alignmentY=[];for(var i=0;i<alignment.length;++i){alignmentX[i]=alignment[i][0];alignmentY[i]=alignment[i][1];}}//Bounds\nvar lowerBound=[Infinity,Infinity,Infinity];var upperBound=[-Infinity,-Infinity,-Infinity];//Unpack options\nvar glyphs=options.glyph;var colors=options.color;var sizes=options.size;var angles=options.angle;var lineColors=options.lineColor;//Picking geometry\nvar pickCounter=-1;//First do pass to compute buffer sizes\nvar triVertexCount=0;var lineVertexCount=0;var numPoints=0;if(points.length){//Count number of points and buffer size\nnumPoints=points.length;count_loop:for(var i=0;i<numPoints;++i){var x=points[i];for(var j=0;j<3;++j){if(isNaN(x[j])||!isFinite(x[j])){continue count_loop;}}var glyphData=get_glyphData(glyphs,i,font,this.pixelRatio);var glyphMesh=glyphData.mesh;var glyphLines=glyphData.lines;var glyphBounds=glyphData.bounds;triVertexCount+=glyphMesh.cells.length*3;lineVertexCount+=glyphLines.edges.length*2;}}var vertexCount=triVertexCount+lineVertexCount;//Preallocate data\nvar positionArray=pool.mallocFloat(3*vertexCount);var colorArray=pool.mallocFloat(4*vertexCount);var glyphArray=pool.mallocFloat(2*vertexCount);var idArray=pool.mallocUint32(vertexCount);if(vertexCount>0){var triOffset=0;var lineOffset=triVertexCount;var color=[0,0,0,1];var lineColor=[0,0,0,1];var isColorArray=Array.isArray(colors)&&Array.isArray(colors[0]);var isLineColorArray=Array.isArray(lineColors)&&Array.isArray(lineColors[0]);fill_loop:for(var i=0;i<numPoints;++i){//Increment pickCounter\npickCounter+=1;var x=points[i];for(var j=0;j<3;++j){if(isNaN(x[j])||!isFinite(x[j])){continue fill_loop;}upperBound[j]=Math.max(upperBound[j],x[j]);lowerBound[j]=Math.min(lowerBound[j],x[j]);}var glyphData=get_glyphData(glyphs,i,font,this.pixelRatio);var glyphMesh=glyphData.mesh;var glyphLines=glyphData.lines;var glyphBounds=glyphData.bounds;var glyphVisible=glyphData.visible;//Get color\nif(!glyphVisible)color=[1,1,1,0];else if(Array.isArray(colors)){var c;if(isColorArray){if(i<colors.length){c=colors[i];}else{c=[0,0,0,0];}}else{c=colors;}if(c.length===3){for(var j=0;j<3;++j){color[j]=c[j];}color[3]=1;}else if(c.length===4){for(var j=0;j<4;++j){color[j]=c[j];}if(!this.hasAlpha&&c[3]<1)this.hasAlpha=true;}}else{color[0]=color[1]=color[2]=0;color[3]=1;}//Get lineColor\nif(!glyphVisible)lineColor=[1,1,1,0];else if(Array.isArray(lineColors)){var c;if(isLineColorArray){if(i<lineColors.length){c=lineColors[i];}else{c=[0,0,0,0];}}else{c=lineColors;}if(c.length===3){for(var j=0;j<3;++j){lineColor[j]=c[j];}lineColor[j]=1;}else if(c.length===4){for(var j=0;j<4;++j){lineColor[j]=c[j];}if(!this.hasAlpha&&c[3]<1)this.hasAlpha=true;}}else{lineColor[0]=lineColor[1]=lineColor[2]=0;lineColor[3]=1;}var size=0.5;if(!glyphVisible)size=0.0;else if(Array.isArray(sizes)){if(i<sizes.length){size=+sizes[i];}else{size=12;}}else if(sizes){size=+sizes;}else if(this.useOrtho){size=12;}var angle=0;if(Array.isArray(angles)){if(i<angles.length){angle=+angles[i];}else{angle=0;}}else if(angles){angle=+angles;}//Loop through markers and append to buffers\nvar cos=Math.cos(angle);var sin=Math.sin(angle);var x=points[i];for(var j=0;j<3;++j){upperBound[j]=Math.max(upperBound[j],x[j]);lowerBound[j]=Math.min(lowerBound[j],x[j]);}//Calculate text offset\nvar textOffsetX=alignmentX;var textOffsetY=alignmentY;var textOffsetX=0;if(Array.isArray(alignmentX)){if(i<alignmentX.length){textOffsetX=alignmentX[i];}else{textOffsetX=0;}}else if(alignmentX){textOffsetX=alignmentX;}var textOffsetY=0;if(Array.isArray(alignmentY)){if(i<alignmentY.length){textOffsetY=alignmentY[i];}else{textOffsetY=0;}}else if(alignmentY){textOffsetY=alignmentY;}textOffsetX*=textOffsetX>0?1-glyphBounds[0][0]:textOffsetX<0?1+glyphBounds[1][0]:1;textOffsetY*=textOffsetY>0?1-glyphBounds[0][1]:textOffsetY<0?1+glyphBounds[1][1]:1;var textOffset=[textOffsetX,textOffsetY];//Write out inner marker\nvar cells=glyphMesh.cells||[];var verts=glyphMesh.positions||[];for(var j=0;j<cells.length;++j){var cell=cells[j];for(var k=0;k<3;++k){for(var l=0;l<3;++l){positionArray[3*triOffset+l]=x[l];}for(var l=0;l<4;++l){colorArray[4*triOffset+l]=color[l];}idArray[triOffset]=pickCounter;var p=verts[cell[k]];glyphArray[2*triOffset]=size*(cos*p[0]-sin*p[1]+textOffset[0]);glyphArray[2*triOffset+1]=size*(sin*p[0]+cos*p[1]+textOffset[1]);triOffset+=1;}}var cells=glyphLines.edges;var verts=glyphLines.positions;for(var j=0;j<cells.length;++j){var cell=cells[j];for(var k=0;k<2;++k){for(var l=0;l<3;++l){positionArray[3*lineOffset+l]=x[l];}for(var l=0;l<4;++l){colorArray[4*lineOffset+l]=lineColor[l];}idArray[lineOffset]=pickCounter;var p=verts[cell[k]];glyphArray[2*lineOffset]=size*(cos*p[0]-sin*p[1]+textOffset[0]);glyphArray[2*lineOffset+1]=size*(sin*p[0]+cos*p[1]+textOffset[1]);lineOffset+=1;}}}}//Update bounds\nthis.bounds=[lowerBound,upperBound];//Save points\nthis.points=points;//Save number of points\nthis.pointCount=points.length;//Update vertex counts\nthis.vertexCount=triVertexCount;this.lineVertexCount=lineVertexCount;this.pointBuffer.update(positionArray);this.colorBuffer.update(colorArray);this.glyphBuffer.update(glyphArray);//this.idBuffer.update(new Uint32Array(idArray))\nthis.idBuffer.update(idArray);pool.free(positionArray);pool.free(colorArray);pool.free(glyphArray);pool.free(idArray);};proto.dispose=function(){//Shaders\nthis.shader.dispose();this.orthoShader.dispose();this.pickPerspectiveShader.dispose();this.pickOrthoShader.dispose();//Vertex array\nthis.vao.dispose();//Buffers\nthis.pointBuffer.dispose();this.colorBuffer.dispose();this.glyphBuffer.dispose();this.idBuffer.dispose();};function createPointCloud(options){var gl=options.gl;var shader=shaders.createPerspective(gl);var orthoShader=shaders.createOrtho(gl);var projectShader=shaders.createProject(gl);var pickPerspectiveShader=shaders.createPickPerspective(gl);var pickOrthoShader=shaders.createPickOrtho(gl);var pickProjectShader=shaders.createPickProject(gl);var pointBuffer=createBuffer(gl);var colorBuffer=createBuffer(gl);var glyphBuffer=createBuffer(gl);var idBuffer=createBuffer(gl);var vao=createVAO(gl,[{buffer:pointBuffer,size:3,type:gl.FLOAT},{buffer:colorBuffer,size:4,type:gl.FLOAT},{buffer:glyphBuffer,size:2,type:gl.FLOAT},{buffer:idBuffer,size:4,type:gl.UNSIGNED_BYTE,normalized:true}]);var pointCloud=new PointCloud(gl,shader,orthoShader,projectShader,pointBuffer,colorBuffer,glyphBuffer,idBuffer,vao,pickPerspectiveShader,pickOrthoShader,pickProjectShader);pointCloud.update(options);return pointCloud;}/***/},/***/1884:/***/function(__unused_webpack_module,exports,__nested_webpack_require_482873__){\"use strict\";var glslify=__nested_webpack_require_482873__(6832);exports.boxVertex=glslify([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 vertex;\\n\\nuniform vec2 cornerA, cornerB;\\n\\nvoid main() {\\n  gl_Position = vec4(mix(cornerA, cornerB, vertex), 0, 1);\\n}\\n\"]);exports.boxFragment=glslify([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec4 color;\\n\\nvoid main() {\\n  gl_FragColor = color;\\n}\\n\"]);/***/},/***/6623:/***/function(module,__unused_webpack_exports,__nested_webpack_require_483372__){\"use strict\";var createShader=__nested_webpack_require_483372__(5158);var createBuffer=__nested_webpack_require_483372__(5827);var SHADERS=__nested_webpack_require_483372__(1884);module.exports=createSelectBox;function SelectBox(plot,boxBuffer,boxShader){this.plot=plot;this.boxBuffer=boxBuffer;this.boxShader=boxShader;this.enabled=true;this.selectBox=[Infinity,Infinity,-Infinity,-Infinity];this.borderColor=[0,0,0,1];this.innerFill=false;this.innerColor=[0,0,0,0.25];this.outerFill=true;this.outerColor=[0,0,0,0.5];this.borderWidth=10;}var proto=SelectBox.prototype;proto.draw=function(){if(!this.enabled){return;}var plot=this.plot;var selectBox=this.selectBox;var lineWidth=this.borderWidth;var innerFill=this.innerFill;var innerColor=this.innerColor;var outerFill=this.outerFill;var outerColor=this.outerColor;var borderColor=this.borderColor;var boxes=plot.box;var screenBox=plot.screenBox;var dataBox=plot.dataBox;var viewBox=plot.viewBox;var pixelRatio=plot.pixelRatio;//Map select box into pixel coordinates\nvar loX=(selectBox[0]-dataBox[0])*(viewBox[2]-viewBox[0])/(dataBox[2]-dataBox[0])+viewBox[0];var loY=(selectBox[1]-dataBox[1])*(viewBox[3]-viewBox[1])/(dataBox[3]-dataBox[1])+viewBox[1];var hiX=(selectBox[2]-dataBox[0])*(viewBox[2]-viewBox[0])/(dataBox[2]-dataBox[0])+viewBox[0];var hiY=(selectBox[3]-dataBox[1])*(viewBox[3]-viewBox[1])/(dataBox[3]-dataBox[1])+viewBox[1];loX=Math.max(loX,viewBox[0]);loY=Math.max(loY,viewBox[1]);hiX=Math.min(hiX,viewBox[2]);hiY=Math.min(hiY,viewBox[3]);if(hiX<loX||hiY<loY){return;}boxes.bind();//Draw box\nvar screenWidth=screenBox[2]-screenBox[0];var screenHeight=screenBox[3]-screenBox[1];if(this.outerFill){boxes.drawBox(0,0,screenWidth,loY,outerColor);boxes.drawBox(0,loY,loX,hiY,outerColor);boxes.drawBox(0,hiY,screenWidth,screenHeight,outerColor);boxes.drawBox(hiX,loY,screenWidth,hiY,outerColor);}if(this.innerFill){boxes.drawBox(loX,loY,hiX,hiY,innerColor);}//Draw border\nif(lineWidth>0){//Draw border\nvar w=lineWidth*pixelRatio;boxes.drawBox(loX-w,loY-w,hiX+w,loY+w,borderColor);boxes.drawBox(loX-w,hiY-w,hiX+w,hiY+w,borderColor);boxes.drawBox(loX-w,loY-w,loX+w,hiY+w,borderColor);boxes.drawBox(hiX-w,loY-w,hiX+w,hiY+w,borderColor);}};proto.update=function(options){options=options||{};this.innerFill=!!options.innerFill;this.outerFill=!!options.outerFill;this.innerColor=(options.innerColor||[0,0,0,0.5]).slice();this.outerColor=(options.outerColor||[0,0,0,0.5]).slice();this.borderColor=(options.borderColor||[0,0,0,1]).slice();this.borderWidth=options.borderWidth||0;this.selectBox=(options.selectBox||this.selectBox).slice();};proto.dispose=function(){this.boxBuffer.dispose();this.boxShader.dispose();this.plot.removeOverlay(this);};function createSelectBox(plot,options){var gl=plot.gl;var buffer=createBuffer(gl,[0,0,0,1,1,0,1,1]);var shader=createShader(gl,SHADERS.boxVertex,SHADERS.boxFragment);var selectBox=new SelectBox(plot,buffer,shader);selectBox.update(options);plot.addOverlay(selectBox);return selectBox;}/***/},/***/2611:/***/function(module,__unused_webpack_exports,__nested_webpack_require_486399__){\"use strict\";module.exports=createSelectBuffer;var createFBO=__nested_webpack_require_486399__(4234);var pool=__nested_webpack_require_486399__(5306);var ndarray=__nested_webpack_require_486399__(5050);var nextPow2=__nested_webpack_require_486399__(2288).nextPow2;var selectRange=function(arr,x,y){var closestD2=1e8;var closestX=-1;var closestY=-1;var ni=arr.shape[0];var nj=arr.shape[1];for(var i=0;i<ni;i++){for(var j=0;j<nj;j++){var r=arr.get(i,j,0);var g=arr.get(i,j,1);var b=arr.get(i,j,2);var a=arr.get(i,j,3);if(r<255||g<255||b<255||a<255){var dx=x-i;var dy=y-j;var d2=dx*dx+dy*dy;if(d2<closestD2){closestD2=d2;closestX=i;closestY=j;}}}}return[closestX,closestY,closestD2];};function SelectResult(x,y,id,value,distance){this.coord=[x,y];this.id=id;this.value=value;this.distance=distance;}function SelectBuffer(gl,fbo,buffer){this.gl=gl;this.fbo=fbo;this.buffer=buffer;this._readTimeout=null;var self=this;this._readCallback=function(){if(!self.gl){return;}fbo.bind();gl.readPixels(0,0,fbo.shape[0],fbo.shape[1],gl.RGBA,gl.UNSIGNED_BYTE,self.buffer);self._readTimeout=null;};}var proto=SelectBuffer.prototype;Object.defineProperty(proto,'shape',{get:function(){if(!this.gl){return[0,0];}return this.fbo.shape.slice();},set:function(v){if(!this.gl){return;}this.fbo.shape=v;var c=this.fbo.shape[0];var r=this.fbo.shape[1];if(r*c*4>this.buffer.length){pool.free(this.buffer);var buffer=this.buffer=pool.mallocUint8(nextPow2(r*c*4));for(var i=0;i<r*c*4;++i){buffer[i]=0xff;}}return v;}});proto.begin=function(){var gl=this.gl;var shape=this.shape;if(!gl){return;}this.fbo.bind();gl.clearColor(1,1,1,1);gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);};proto.end=function(){var gl=this.gl;if(!gl){return;}gl.bindFramebuffer(gl.FRAMEBUFFER,null);if(!this._readTimeout){clearTimeout(this._readTimeout);}this._readTimeout=setTimeout(this._readCallback,1);};proto.query=function(x,y,radius){if(!this.gl){return null;}var shape=this.fbo.shape.slice();x=x|0;y=y|0;if(typeof radius!=='number'){radius=1.0;}var x0=Math.min(Math.max(x-radius,0),shape[0])|0;var x1=Math.min(Math.max(x+radius,0),shape[0])|0;var y0=Math.min(Math.max(y-radius,0),shape[1])|0;var y1=Math.min(Math.max(y+radius,0),shape[1])|0;if(x1<=x0||y1<=y0){return null;}var dims=[x1-x0,y1-y0];var region=ndarray(this.buffer,[dims[0],dims[1],4],[4,shape[0]*4,1],4*(x0+shape[0]*y0));var closest=selectRange(region.hi(dims[0],dims[1],1),radius,radius);var dx=closest[0];var dy=closest[1];if(dx<0||Math.pow(this.radius,2)<closest[2]){return null;}var c0=region.get(dx,dy,0);var c1=region.get(dx,dy,1);var c2=region.get(dx,dy,2);var c3=region.get(dx,dy,3);return new SelectResult(dx+x0|0,dy+y0|0,c0,[c1,c2,c3],Math.sqrt(closest[2]));};proto.dispose=function(){if(!this.gl){return;}this.fbo.dispose();pool.free(this.buffer);this.gl=null;if(this._readTimeout){clearTimeout(this._readTimeout);}};function createSelectBuffer(gl,shape){var width=shape[0];var height=shape[1];var options={};var fbo=createFBO(gl,width,height,options);var buffer=pool.mallocUint8(width*height*4);return new SelectBuffer(gl,fbo,buffer);}/***/},/***/5158:/***/function(module,__unused_webpack_exports,__nested_webpack_require_489496__){\"use strict\";var createUniformWrapper=__nested_webpack_require_489496__(9016);var createAttributeWrapper=__nested_webpack_require_489496__(4280);var makeReflect=__nested_webpack_require_489496__(3984);var shaderCache=__nested_webpack_require_489496__(1628);var runtime=__nested_webpack_require_489496__(2631);var GLError=__nested_webpack_require_489496__(9068);//Shader object\nfunction Shader(gl){this.gl=gl;this.gl.lastAttribCount=0;// fixme where else should we store info, safe but not nice on the gl object\n//Default initialize these to null\nthis._vref=this._fref=this._relink=this.vertShader=this.fragShader=this.program=this.attributes=this.uniforms=this.types=null;}var proto=Shader.prototype;proto.bind=function(){if(!this.program){this._relink();}// ensuring that we have the right number of enabled vertex attributes\nvar i;var newAttribCount=this.gl.getProgramParameter(this.program,this.gl.ACTIVE_ATTRIBUTES);// more robust approach\n//var newAttribCount = Object.keys(this.attributes).length // avoids the probably immaterial introspection slowdown\nvar oldAttribCount=this.gl.lastAttribCount;if(newAttribCount>oldAttribCount){for(i=oldAttribCount;i<newAttribCount;i++){this.gl.enableVertexAttribArray(i);}}else if(oldAttribCount>newAttribCount){for(i=newAttribCount;i<oldAttribCount;i++){this.gl.disableVertexAttribArray(i);}}this.gl.lastAttribCount=newAttribCount;this.gl.useProgram(this.program);};proto.dispose=function(){// disabling vertex attributes so new shader starts with zero\n// and it's also useful if all shaders are disposed but the\n// gl context is reused for subsequent replotting\nvar oldAttribCount=this.gl.lastAttribCount;for(var i=0;i<oldAttribCount;i++){this.gl.disableVertexAttribArray(i);}this.gl.lastAttribCount=0;if(this._fref){this._fref.dispose();}if(this._vref){this._vref.dispose();}this.attributes=this.types=this.vertShader=this.fragShader=this.program=this._relink=this._fref=this._vref=null;};function compareAttributes(a,b){if(a.name<b.name){return-1;}return 1;}//Update export hook for glslify-live\nproto.update=function(vertSource,fragSource,uniforms,attributes){//If only one object passed, assume glslify style output\nif(!fragSource||arguments.length===1){var obj=vertSource;vertSource=obj.vertex;fragSource=obj.fragment;uniforms=obj.uniforms;attributes=obj.attributes;}var wrapper=this;var gl=wrapper.gl;//Compile vertex and fragment shaders\nvar pvref=wrapper._vref;wrapper._vref=shaderCache.shader(gl,gl.VERTEX_SHADER,vertSource);if(pvref){pvref.dispose();}wrapper.vertShader=wrapper._vref.shader;var pfref=this._fref;wrapper._fref=shaderCache.shader(gl,gl.FRAGMENT_SHADER,fragSource);if(pfref){pfref.dispose();}wrapper.fragShader=wrapper._fref.shader;//If uniforms/attributes is not specified, use RT reflection\nif(!uniforms||!attributes){//Create initial test program\nvar testProgram=gl.createProgram();gl.attachShader(testProgram,wrapper.fragShader);gl.attachShader(testProgram,wrapper.vertShader);gl.linkProgram(testProgram);if(!gl.getProgramParameter(testProgram,gl.LINK_STATUS)){var errLog=gl.getProgramInfoLog(testProgram);throw new GLError(errLog,'Error linking program:'+errLog);}//Load data from runtime\nuniforms=uniforms||runtime.uniforms(gl,testProgram);attributes=attributes||runtime.attributes(gl,testProgram);//Release test program\ngl.deleteProgram(testProgram);}//Sort attributes lexicographically\n// overrides undefined WebGL behavior for attribute locations\nattributes=attributes.slice();attributes.sort(compareAttributes);//Convert attribute types, read out locations\nvar attributeUnpacked=[];var attributeNames=[];var attributeLocations=[];var i;for(i=0;i<attributes.length;++i){var attr=attributes[i];if(attr.type.indexOf('mat')>=0){var size=attr.type.charAt(attr.type.length-1)|0;var locVector=new Array(size);for(var j=0;j<size;++j){locVector[j]=attributeLocations.length;attributeNames.push(attr.name+'['+j+']');if(typeof attr.location==='number'){attributeLocations.push(attr.location+j);}else if(Array.isArray(attr.location)&&attr.location.length===size&&typeof attr.location[j]==='number'){attributeLocations.push(attr.location[j]|0);}else{attributeLocations.push(-1);}}attributeUnpacked.push({name:attr.name,type:attr.type,locations:locVector});}else{attributeUnpacked.push({name:attr.name,type:attr.type,locations:[attributeLocations.length]});attributeNames.push(attr.name);if(typeof attr.location==='number'){attributeLocations.push(attr.location|0);}else{attributeLocations.push(-1);}}}//For all unspecified attributes, assign them lexicographically min attribute\nvar curLocation=0;for(i=0;i<attributeLocations.length;++i){if(attributeLocations[i]<0){while(attributeLocations.indexOf(curLocation)>=0){curLocation+=1;}attributeLocations[i]=curLocation;}}//Rebuild program and recompute all uniform locations\nvar uniformLocations=new Array(uniforms.length);function relink(){wrapper.program=shaderCache.program(gl,wrapper._vref,wrapper._fref,attributeNames,attributeLocations);for(var i=0;i<uniforms.length;++i){uniformLocations[i]=gl.getUniformLocation(wrapper.program,uniforms[i].name);}}//Perform initial linking, reuse program used for reflection\nrelink();//Save relinking procedure, defer until runtime\nwrapper._relink=relink;//Generate type info\nwrapper.types={uniforms:makeReflect(uniforms),attributes:makeReflect(attributes)};//Generate attribute wrappers\nwrapper.attributes=createAttributeWrapper(gl,wrapper,attributeUnpacked,attributeLocations);//Generate uniform wrappers\nObject.defineProperty(wrapper,'uniforms',createUniformWrapper(gl,wrapper,uniforms,uniformLocations));};//Compiles and links a shader program with the given attribute and vertex list\nfunction createShader(gl,vertSource,fragSource,uniforms,attributes){var shader=new Shader(gl);shader.update(vertSource,fragSource,uniforms,attributes);return shader;}module.exports=createShader;/***/},/***/9068:/***/function(module){function GLError(rawError,shortMessage,longMessage){this.shortMessage=shortMessage||'';this.longMessage=longMessage||'';this.rawError=rawError||'';this.message='gl-shader: '+(shortMessage||rawError||'')+(longMessage?'\\n'+longMessage:'');this.stack=new Error().stack;}GLError.prototype=new Error();GLError.prototype.name='GLError';GLError.prototype.constructor=GLError;module.exports=GLError;/***/},/***/4280:/***/function(module,__unused_webpack_exports,__nested_webpack_require_495765__){\"use strict\";module.exports=createAttributeWrapper;var GLError=__nested_webpack_require_495765__(9068);function ShaderAttribute(gl,wrapper,index,locations,dimension,constFunc){this._gl=gl;this._wrapper=wrapper;this._index=index;this._locations=locations;this._dimension=dimension;this._constFunc=constFunc;}var proto=ShaderAttribute.prototype;proto.pointer=function setAttribPointer(type,normalized,stride,offset){var self=this;var gl=self._gl;var location=self._locations[self._index];gl.vertexAttribPointer(location,self._dimension,type||gl.FLOAT,!!normalized,stride||0,offset||0);gl.enableVertexAttribArray(location);};proto.set=function(x0,x1,x2,x3){return this._constFunc(this._locations[this._index],x0,x1,x2,x3);};Object.defineProperty(proto,'location',{get:function(){return this._locations[this._index];},set:function(v){if(v!==this._locations[this._index]){this._locations[this._index]=v|0;this._wrapper.program=null;}return v|0;}});var allFns=[function(gl,v,x0){if(x0.length===undefined){return gl.vertexAttrib1f(v,x0);}else{return gl.vertexAttrib1fv(v,x0);}},function(gl,v,x0,x1){if(x0.length===undefined){return gl.vertexAttrib2f(v,x0,x1);}else{return gl.vertexAttrib2fv(v,x0);}},function(gl,v,x0,x1,x2){if(x0.length===undefined){return gl.vertexAttrib3f(v,x0,x1,x2);}else{return gl.vertexAttrib3fv(v,x0);}},function(gl,v,x0,x1,x2,x3){if(x0.length===undefined){return gl.vertexAttrib4f(v,x0,x1,x2,x3);}else{return gl.vertexAttrib4fv(v,x0);}}];//Adds a vector attribute to obj\nfunction addVectorAttribute(gl,wrapper,index,locations,dimension,obj,name){var constFunc=allFns[dimension];//Create attribute wrapper\nvar attr=new ShaderAttribute(gl,wrapper,index,locations,dimension,constFunc);//Create accessor\nObject.defineProperty(obj,name,{set:function(x){gl.disableVertexAttribArray(locations[index]);constFunc(gl,locations[index],x);return x;},get:function(){return attr;},enumerable:true});}function addMatrixAttribute(gl,wrapper,index,locations,dimension,obj,name){var parts=new Array(dimension);var attrs=new Array(dimension);for(var i=0;i<dimension;++i){addVectorAttribute(gl,wrapper,index[i],locations,dimension,parts,i);attrs[i]=parts[i];}Object.defineProperty(parts,'location',{set:function(v){if(Array.isArray(v)){for(var i=0;i<dimension;++i){attrs[i].location=v[i];}}else{for(var i=0;i<dimension;++i){attrs[i].location=v+i;}}return v;},get:function(){var result=new Array(dimension);for(var i=0;i<dimension;++i){result[i]=locations[index[i]];}return result;},enumerable:true});parts.pointer=function(type,normalized,stride,offset){type=type||gl.FLOAT;normalized=!!normalized;stride=stride||dimension*dimension;offset=offset||0;for(var i=0;i<dimension;++i){var location=locations[index[i]];gl.vertexAttribPointer(location,dimension,type,normalized,stride,offset+i*dimension);gl.enableVertexAttribArray(location);}};var scratch=new Array(dimension);var vertexAttrib=gl['vertexAttrib'+dimension+'fv'];Object.defineProperty(obj,name,{set:function(x){for(var i=0;i<dimension;++i){var loc=locations[index[i]];gl.disableVertexAttribArray(loc);if(Array.isArray(x[0])){vertexAttrib.call(gl,loc,x[i]);}else{for(var j=0;j<dimension;++j){scratch[j]=x[dimension*i+j];}vertexAttrib.call(gl,loc,scratch);}}return x;},get:function(){return parts;},enumerable:true});}//Create shims for attributes\nfunction createAttributeWrapper(gl,wrapper,attributes,locations){var obj={};for(var i=0,n=attributes.length;i<n;++i){var a=attributes[i];var name=a.name;var type=a.type;var locs=a.locations;switch(type){case'bool':case'int':case'float':addVectorAttribute(gl,wrapper,locs[0],locations,1,obj,name);break;default:if(type.indexOf('vec')>=0){var d=type.charCodeAt(type.length-1)-48;if(d<2||d>4){throw new GLError('','Invalid data type for attribute '+name+': '+type);}addVectorAttribute(gl,wrapper,locs[0],locations,d,obj,name);}else if(type.indexOf('mat')>=0){var d=type.charCodeAt(type.length-1)-48;if(d<2||d>4){throw new GLError('','Invalid data type for attribute '+name+': '+type);}addMatrixAttribute(gl,wrapper,locs,locations,d,obj,name);}else{throw new GLError('','Unknown data type for attribute '+name+': '+type);}break;}}return obj;}/***/},/***/9016:/***/function(module,__unused_webpack_exports,__nested_webpack_require_499975__){\"use strict\";var coallesceUniforms=__nested_webpack_require_499975__(3984);var GLError=__nested_webpack_require_499975__(9068);module.exports=createUniformWrapper;//Binds a function and returns a value\nfunction identity(x){return function(){return x;};}function makeVector(length,fill){var result=new Array(length);for(var i=0;i<length;++i){result[i]=fill;}return result;}//Create shims for uniforms\nfunction createUniformWrapper(gl,wrapper,uniforms,locations){function makeGetter(idx){return function(gl,wrapper,locations){return gl.getUniform(wrapper.program,locations[idx]);};}function makeSetter(type){return function updateProperty(obj){var indices=enumerateIndices('',type);for(var i=0;i<indices.length;++i){var item=indices[i];var path=item[0];var idx=item[1];if(locations[idx]){var objPath=obj;if(typeof path==='string'&&(path.indexOf('.')===0||path.indexOf('[')===0)){var key=path;if(path.indexOf('.')===0){key=path.slice(1);}if(key.indexOf(']')===key.length-1){var j=key.indexOf('[');var k1=key.slice(0,j);var k2=key.slice(j+1,key.length-1);objPath=k1?obj[k1][k2]:obj[k2];}else{objPath=obj[key];}}var t=uniforms[idx].type;var d;switch(t){case'bool':case'int':case'sampler2D':case'samplerCube':gl.uniform1i(locations[idx],objPath);break;case'float':gl.uniform1f(locations[idx],objPath);break;default:var vidx=t.indexOf('vec');if(0<=vidx&&vidx<=1&&t.length===4+vidx){d=t.charCodeAt(t.length-1)-48;if(d<2||d>4){throw new GLError('','Invalid data type');}switch(t.charAt(0)){case'b':case'i':gl['uniform'+d+'iv'](locations[idx],objPath);break;case'v':gl['uniform'+d+'fv'](locations[idx],objPath);break;default:throw new GLError('','Unrecognized data type for vector '+name+': '+t);}}else if(t.indexOf('mat')===0&&t.length===4){d=t.charCodeAt(t.length-1)-48;if(d<2||d>4){throw new GLError('','Invalid uniform dimension type for matrix '+name+': '+t);}gl['uniformMatrix'+d+'fv'](locations[idx],false,objPath);break;}else{throw new GLError('','Unknown uniform data type for '+name+': '+t);}}}}};}function enumerateIndices(prefix,type){if(typeof type!=='object'){return[[prefix,type]];}var indices=[];for(var id in type){var prop=type[id];var tprefix=prefix;if(parseInt(id)+''===id){tprefix+='['+id+']';}else{tprefix+='.'+id;}if(typeof prop==='object'){indices.push.apply(indices,enumerateIndices(tprefix,prop));}else{indices.push([tprefix,prop]);}}return indices;}function defaultValue(type){switch(type){case'bool':return false;case'int':case'sampler2D':case'samplerCube':return 0;case'float':return 0.0;default:var vidx=type.indexOf('vec');if(0<=vidx&&vidx<=1&&type.length===4+vidx){var d=type.charCodeAt(type.length-1)-48;if(d<2||d>4){throw new GLError('','Invalid data type');}if(type.charAt(0)==='b'){return makeVector(d,false);}return makeVector(d,0);}else if(type.indexOf('mat')===0&&type.length===4){var d=type.charCodeAt(type.length-1)-48;if(d<2||d>4){throw new GLError('','Invalid uniform dimension type for matrix '+name+': '+type);}return makeVector(d*d,0);}else{throw new GLError('','Unknown uniform data type for '+name+': '+type);}}}function storeProperty(obj,prop,type){if(typeof type==='object'){var child=processObject(type);Object.defineProperty(obj,prop,{get:identity(child),set:makeSetter(type),enumerable:true,configurable:false});}else{if(locations[type]){Object.defineProperty(obj,prop,{get:makeGetter(type),set:makeSetter(type),enumerable:true,configurable:false});}else{obj[prop]=defaultValue(uniforms[type].type);}}}function processObject(obj){var result;if(Array.isArray(obj)){result=new Array(obj.length);for(var i=0;i<obj.length;++i){storeProperty(result,i,obj[i]);}}else{result={};for(var id in obj){storeProperty(result,id,obj[id]);}}return result;}//Return data\nvar coallesced=coallesceUniforms(uniforms,true);return{get:identity(processObject(coallesced)),set:makeSetter(coallesced),enumerable:true,configurable:true};}/***/},/***/3984:/***/function(module){\"use strict\";module.exports=makeReflectTypes;//Construct type info for reflection.\n//\n// This iterates over the flattened list of uniform type values and smashes them into a JSON object.\n//\n// The leaves of the resulting object are either indices or type strings representing primitive glslify types\nfunction makeReflectTypes(uniforms,useIndex){var obj={};for(var i=0;i<uniforms.length;++i){var n=uniforms[i].name;var parts=n.split(\".\");var o=obj;for(var j=0;j<parts.length;++j){var x=parts[j].split(\"[\");if(x.length>1){if(!(x[0]in o)){o[x[0]]=[];}o=o[x[0]];for(var k=1;k<x.length;++k){var y=parseInt(x[k]);if(k<x.length-1||j<parts.length-1){if(!(y in o)){if(k<x.length-1){o[y]=[];}else{o[y]={};}}o=o[y];}else{if(useIndex){o[y]=i;}else{o[y]=uniforms[i].type;}}}}else if(j<parts.length-1){if(!(x[0]in o)){o[x[0]]={};}o=o[x[0]];}else{if(useIndex){o[x[0]]=i;}else{o[x[0]]=uniforms[i].type;}}}}return obj;}/***/},/***/2631:/***/function(__unused_webpack_module,exports){\"use strict\";exports.uniforms=runtimeUniforms;exports.attributes=runtimeAttributes;var GL_TO_GLSL_TYPES={'FLOAT':'float','FLOAT_VEC2':'vec2','FLOAT_VEC3':'vec3','FLOAT_VEC4':'vec4','INT':'int','INT_VEC2':'ivec2','INT_VEC3':'ivec3','INT_VEC4':'ivec4','BOOL':'bool','BOOL_VEC2':'bvec2','BOOL_VEC3':'bvec3','BOOL_VEC4':'bvec4','FLOAT_MAT2':'mat2','FLOAT_MAT3':'mat3','FLOAT_MAT4':'mat4','SAMPLER_2D':'sampler2D','SAMPLER_CUBE':'samplerCube'};var GL_TABLE=null;function getType(gl,type){if(!GL_TABLE){var typeNames=Object.keys(GL_TO_GLSL_TYPES);GL_TABLE={};for(var i=0;i<typeNames.length;++i){var tn=typeNames[i];GL_TABLE[gl[tn]]=GL_TO_GLSL_TYPES[tn];}}return GL_TABLE[type];}function runtimeUniforms(gl,program){var numUniforms=gl.getProgramParameter(program,gl.ACTIVE_UNIFORMS);var result=[];for(var i=0;i<numUniforms;++i){var info=gl.getActiveUniform(program,i);if(info){var type=getType(gl,info.type);if(info.size>1){for(var j=0;j<info.size;++j){result.push({name:info.name.replace('[0]','['+j+']'),type:type});}}else{result.push({name:info.name,type:type});}}}return result;}function runtimeAttributes(gl,program){var numAttributes=gl.getProgramParameter(program,gl.ACTIVE_ATTRIBUTES);var result=[];for(var i=0;i<numAttributes;++i){var info=gl.getActiveAttrib(program,i);if(info){result.push({name:info.name,type:getType(gl,info.type)});}}return result;}/***/},/***/1628:/***/function(__unused_webpack_module,exports,__nested_webpack_require_506246__){\"use strict\";exports.shader=getShaderReference;exports.program=createProgram;var GLError=__nested_webpack_require_506246__(9068);var formatCompilerError=__nested_webpack_require_506246__(3530);var weakMap=typeof WeakMap==='undefined'?__nested_webpack_require_506246__(4037):WeakMap;var CACHE=new weakMap();var SHADER_COUNTER=0;function ShaderReference(id,src,type,shader,programs,count,cache){this.id=id;this.src=src;this.type=type;this.shader=shader;this.count=count;this.programs=[];this.cache=cache;}ShaderReference.prototype.dispose=function(){if(--this.count===0){var cache=this.cache;var gl=cache.gl;//Remove program references\nvar programs=this.programs;for(var i=0,n=programs.length;i<n;++i){var p=cache.programs[programs[i]];if(p){delete cache.programs[i];gl.deleteProgram(p);}}//Remove shader reference\ngl.deleteShader(this.shader);delete cache.shaders[this.type===gl.FRAGMENT_SHADER|0][this.src];}};function ContextCache(gl){this.gl=gl;this.shaders=[{},{}];this.programs={};}var proto=ContextCache.prototype;function compileShader(gl,type,src){var shader=gl.createShader(type);gl.shaderSource(shader,src);gl.compileShader(shader);if(!gl.getShaderParameter(shader,gl.COMPILE_STATUS)){var errLog=gl.getShaderInfoLog(shader);try{var fmt=formatCompilerError(errLog,src,type);}catch(e){console.warn('Failed to format compiler error: '+e);throw new GLError(errLog,'Error compiling shader:\\n'+errLog);}throw new GLError(errLog,fmt.short,fmt.long);}return shader;}proto.getShaderReference=function(type,src){var gl=this.gl;var shaders=this.shaders[type===gl.FRAGMENT_SHADER|0];var shader=shaders[src];if(!shader||!gl.isShader(shader.shader)){var shaderObj=compileShader(gl,type,src);shader=shaders[src]=new ShaderReference(SHADER_COUNTER++,src,type,shaderObj,[],1,this);}else{shader.count+=1;}return shader;};function linkProgram(gl,vshader,fshader,attribs,locations){var program=gl.createProgram();gl.attachShader(program,vshader);gl.attachShader(program,fshader);for(var i=0;i<attribs.length;++i){gl.bindAttribLocation(program,locations[i],attribs[i]);}gl.linkProgram(program);if(!gl.getProgramParameter(program,gl.LINK_STATUS)){var errLog=gl.getProgramInfoLog(program);throw new GLError(errLog,'Error linking program: '+errLog);}return program;}proto.getProgram=function(vref,fref,attribs,locations){var token=[vref.id,fref.id,attribs.join(':'),locations.join(':')].join('@');var prog=this.programs[token];if(!prog||!this.gl.isProgram(prog)){this.programs[token]=prog=linkProgram(this.gl,vref.shader,fref.shader,attribs,locations);vref.programs.push(token);fref.programs.push(token);}return prog;};function getCache(gl){var ctxCache=CACHE.get(gl);if(!ctxCache){ctxCache=new ContextCache(gl);CACHE.set(gl,ctxCache);}return ctxCache;}function getShaderReference(gl,type,src){return getCache(gl).getShaderReference(type,src);}function createProgram(gl,vref,fref,attribs,locations){return getCache(gl).getProgram(vref,fref,attribs,locations);}/***/},/***/3050:/***/function(module){\"use strict\";module.exports=createSpikes2D;function GLSpikes2D(plot){this.plot=plot;this.enable=[true,true,false,false];this.width=[1,1,1,1];this.color=[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]];this.center=[Infinity,Infinity];}var proto=GLSpikes2D.prototype;proto.update=function(options){options=options||{};this.enable=(options.enable||[true,true,false,false]).slice();this.width=(options.width||[1,1,1,1]).slice();this.color=(options.color||[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]]).map(function(x){return x.slice();});this.center=(options.center||[Infinity,Infinity]).slice();this.plot.setOverlayDirty();};proto.draw=function(){var spikeEnable=this.enable;var spikeWidth=this.width;var spikeColor=this.color;var spikeCenter=this.center;var plot=this.plot;var line=plot.line;var dataBox=plot.dataBox;var viewPixels=plot.viewBox;line.bind();if(dataBox[0]<=spikeCenter[0]&&spikeCenter[0]<=dataBox[2]&&dataBox[1]<=spikeCenter[1]&&spikeCenter[1]<=dataBox[3]){var centerX=viewPixels[0]+(spikeCenter[0]-dataBox[0])/(dataBox[2]-dataBox[0])*(viewPixels[2]-viewPixels[0]);var centerY=viewPixels[1]+(spikeCenter[1]-dataBox[1])/(dataBox[3]-dataBox[1])*(viewPixels[3]-viewPixels[1]);if(spikeEnable[0]){line.drawLine(centerX,centerY,viewPixels[0],centerY,spikeWidth[0],spikeColor[0]);}if(spikeEnable[1]){line.drawLine(centerX,centerY,centerX,viewPixels[1],spikeWidth[1],spikeColor[1]);}if(spikeEnable[2]){line.drawLine(centerX,centerY,viewPixels[2],centerY,spikeWidth[2],spikeColor[2]);}if(spikeEnable[3]){line.drawLine(centerX,centerY,centerX,viewPixels[3],spikeWidth[3],spikeColor[3]);}}};proto.dispose=function(){this.plot.removeOverlay(this);};function createSpikes2D(plot,options){var spikes=new GLSpikes2D(plot);spikes.update(options);plot.addOverlay(spikes);return spikes;}/***/},/***/3540:/***/function(module,__unused_webpack_exports,__nested_webpack_require_511043__){\"use strict\";var glslify=__nested_webpack_require_511043__(6832);var createShader=__nested_webpack_require_511043__(5158);var vertSrc=glslify([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position, color;\\nattribute float weight;\\n\\nuniform mat4 model, view, projection;\\nuniform vec3 coordinates[3];\\nuniform vec4 colors[3];\\nuniform vec2 screenShape;\\nuniform float lineWidth;\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n  vec3 vertexPosition = mix(coordinates[0],\\n    mix(coordinates[2], coordinates[1], 0.5 * (position + 1.0)), abs(position));\\n\\n  vec4 clipPos = projection * view * model * vec4(vertexPosition, 1.0);\\n  vec2 clipOffset = (projection * view * model * vec4(color, 0.0)).xy;\\n  vec2 delta = weight * clipOffset * screenShape;\\n  vec2 lineOffset = normalize(vec2(delta.y, -delta.x)) / screenShape;\\n\\n  gl_Position   = vec4(clipPos.xy + clipPos.w * 0.5 * lineWidth * lineOffset, clipPos.z, clipPos.w);\\n  fragColor     = color.x * colors[0] + color.y * colors[1] + color.z * colors[2];\\n}\\n\"]);var fragSrc=glslify([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n  gl_FragColor = fragColor;\\n}\"]);module.exports=function(gl){return createShader(gl,vertSrc,fragSrc,null,[{name:'position',type:'vec3'},{name:'color',type:'vec3'},{name:'weight',type:'float'}]);};/***/},/***/6496:/***/function(module,__unused_webpack_exports,__nested_webpack_require_512440__){\"use strict\";var createBuffer=__nested_webpack_require_512440__(5827);var createVAO=__nested_webpack_require_512440__(2944);var createShader=__nested_webpack_require_512440__(3540);module.exports=createSpikes;var identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function AxisSpikes(gl,buffer,vao,shader){this.gl=gl;this.buffer=buffer;this.vao=vao;this.shader=shader;this.pixelRatio=1;this.bounds=[[-1000,-1000,-1000],[1000,1000,1000]];this.position=[0,0,0];this.lineWidth=[2,2,2];this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]];this.enabled=[true,true,true];this.drawSides=[true,true,true];this.axes=null;}var proto=AxisSpikes.prototype;var OUTER_FACE=[0,0,0];var INNER_FACE=[0,0,0];var SHAPE=[0,0];proto.isTransparent=function(){return false;};proto.drawTransparent=function(camera){};proto.draw=function(camera){var gl=this.gl;var vao=this.vao;var shader=this.shader;vao.bind();shader.bind();var model=camera.model||identity;var view=camera.view||identity;var projection=camera.projection||identity;var axis;if(this.axes){axis=this.axes.lastCubeProps.axis;}var outerFace=OUTER_FACE;var innerFace=INNER_FACE;for(var i=0;i<3;++i){if(axis&&axis[i]<0){outerFace[i]=this.bounds[0][i];innerFace[i]=this.bounds[1][i];}else{outerFace[i]=this.bounds[1][i];innerFace[i]=this.bounds[0][i];}}SHAPE[0]=gl.drawingBufferWidth;SHAPE[1]=gl.drawingBufferHeight;shader.uniforms.model=model;shader.uniforms.view=view;shader.uniforms.projection=projection;shader.uniforms.coordinates=[this.position,outerFace,innerFace];shader.uniforms.colors=this.colors;shader.uniforms.screenShape=SHAPE;for(var i=0;i<3;++i){shader.uniforms.lineWidth=this.lineWidth[i]*this.pixelRatio;if(this.enabled[i]){vao.draw(gl.TRIANGLES,6,6*i);if(this.drawSides[i]){vao.draw(gl.TRIANGLES,12,18+12*i);}}}vao.unbind();};proto.update=function(options){if(!options){return;}if(\"bounds\"in options){this.bounds=options.bounds;}if(\"position\"in options){this.position=options.position;}if(\"lineWidth\"in options){this.lineWidth=options.lineWidth;}if(\"colors\"in options){this.colors=options.colors;}if(\"enabled\"in options){this.enabled=options.enabled;}if(\"drawSides\"in options){this.drawSides=options.drawSides;}};proto.dispose=function(){this.vao.dispose();this.buffer.dispose();this.shader.dispose();};function createSpikes(gl,options){//Create buffers\nvar data=[];function line(x,y,z,i,l,h){var row=[x,y,z,0,0,0,1];row[i+3]=1;row[i]=l;data.push.apply(data,row);row[6]=-1;data.push.apply(data,row);row[i]=h;data.push.apply(data,row);data.push.apply(data,row);row[6]=1;data.push.apply(data,row);row[i]=l;data.push.apply(data,row);}line(0,0,0,0,0,1);line(0,0,0,1,0,1);line(0,0,0,2,0,1);line(1,0,0,1,-1,1);line(1,0,0,2,-1,1);line(0,1,0,0,-1,1);line(0,1,0,2,-1,1);line(0,0,1,0,-1,1);line(0,0,1,1,-1,1);var buffer=createBuffer(gl,data);var vao=createVAO(gl,[{type:gl.FLOAT,buffer:buffer,size:3,offset:0,stride:28},{type:gl.FLOAT,buffer:buffer,size:3,offset:12,stride:28},{type:gl.FLOAT,buffer:buffer,size:1,offset:24,stride:28}]);//Create shader\nvar shader=createShader(gl);shader.attributes.position.location=0;shader.attributes.color.location=1;shader.attributes.weight.location=2;//Create spike object\nvar spikes=new AxisSpikes(gl,buffer,vao,shader);//Set parameters\nspikes.update(options);//Return resulting object\nreturn spikes;}/***/},/***/9578:/***/function(__unused_webpack_module,exports,__nested_webpack_require_515750__){var glslify=__nested_webpack_require_515750__(6832);var triVertSrc=glslify([\"precision highp float;\\n\\nprecision highp float;\\n#define GLSLIFY 1\\n\\nvec3 getOrthogonalVector(vec3 v) {\\n  // Return up-vector for only-z vector.\\n  // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\\n  // From the above if-statement we have ||a|| > 0  U  ||b|| > 0.\\n  // Assign z = 0, x = -b, y = a:\\n  // a*-b + b*a + c*0 = -ba + ba + 0 = 0\\n  if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\\n    return normalize(vec3(-v.y, v.x, 0.0));\\n  } else {\\n    return normalize(vec3(0.0, v.z, -v.y));\\n  }\\n}\\n\\n// Calculate the tube vertex and normal at the given index.\\n//\\n// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d.\\n//\\n// Each tube segment is made up of a ring of vertices.\\n// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array.\\n// The indexes of tube segments run from 0 to 8.\\n//\\nvec3 getTubePosition(vec3 d, float index, out vec3 normal) {\\n  float segmentCount = 8.0;\\n\\n  float angle = 2.0 * 3.14159 * (index / segmentCount);\\n\\n  vec3 u = getOrthogonalVector(d);\\n  vec3 v = normalize(cross(u, d));\\n\\n  vec3 x = u * cos(angle) * length(d);\\n  vec3 y = v * sin(angle) * length(d);\\n  vec3 v3 = x + y;\\n\\n  normal = normalize(v3);\\n\\n  return v3;\\n}\\n\\nattribute vec4 vector;\\nattribute vec4 color, position;\\nattribute vec2 uv;\\n\\nuniform float vectorScale, tubeScale;\\nuniform mat4 model, view, projection, inverseModel;\\nuniform vec3 eyePosition, lightPosition;\\n\\nvarying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n  // Scale the vector magnitude to stay constant with\\n  // model & view changes.\\n  vec3 normal;\\n  vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal);\\n  vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\\n\\n  //Lighting geometry parameters\\n  vec4 cameraCoordinate = view * tubePosition;\\n  cameraCoordinate.xyz /= cameraCoordinate.w;\\n  f_lightDirection = lightPosition - cameraCoordinate.xyz;\\n  f_eyeDirection   = eyePosition - cameraCoordinate.xyz;\\n  f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz);\\n\\n  // vec4 m_position  = model * vec4(tubePosition, 1.0);\\n  vec4 t_position  = view * tubePosition;\\n  gl_Position      = projection * t_position;\\n\\n  f_color          = color;\\n  f_data           = tubePosition.xyz;\\n  f_position       = position.xyz;\\n  f_uv             = uv;\\n}\\n\"]);var triFragSrc=glslify([\"#extension GL_OES_standard_derivatives : enable\\n\\nprecision highp float;\\n#define GLSLIFY 1\\n\\nfloat beckmannDistribution(float x, float roughness) {\\n  float NdotH = max(x, 0.0001);\\n  float cos2Alpha = NdotH * NdotH;\\n  float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\\n  float roughness2 = roughness * roughness;\\n  float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\\n  return exp(tan2Alpha / roughness2) / denom;\\n}\\n\\nfloat cookTorranceSpecular(\\n  vec3 lightDirection,\\n  vec3 viewDirection,\\n  vec3 surfaceNormal,\\n  float roughness,\\n  float fresnel) {\\n\\n  float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);\\n  float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);\\n\\n  //Half angle vector\\n  vec3 H = normalize(lightDirection + viewDirection);\\n\\n  //Geometric term\\n  float NdotH = max(dot(surfaceNormal, H), 0.0);\\n  float VdotH = max(dot(viewDirection, H), 0.000001);\\n  float LdotH = max(dot(lightDirection, H), 0.000001);\\n  float G1 = (2.0 * NdotH * VdotN) / VdotH;\\n  float G2 = (2.0 * NdotH * LdotN) / LdotH;\\n  float G = min(1.0, min(G1, G2));\\n  \\n  //Distribution term\\n  float D = beckmannDistribution(NdotH, roughness);\\n\\n  //Fresnel term\\n  float F = pow(1.0 - VdotN, fresnel);\\n\\n  //Multiply terms and done\\n  return  G * F * D / max(3.14159265 * VdotN, 0.000001);\\n}\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3 clipBounds[2];\\nuniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity;\\nuniform sampler2D texture;\\n\\nvarying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\\n  vec3 N = normalize(f_normal);\\n  vec3 L = normalize(f_lightDirection);\\n  vec3 V = normalize(f_eyeDirection);\\n\\n  if(gl_FrontFacing) {\\n    N = -N;\\n  }\\n\\n  float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel)));\\n  float diffuse  = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\\n\\n  vec4 surfaceColor = f_color * texture2D(texture, f_uv);\\n  vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular,  1.0);\\n\\n  gl_FragColor = litColor * opacity;\\n}\\n\"]);var pickVertSrc=glslify([\"precision highp float;\\n\\nprecision highp float;\\n#define GLSLIFY 1\\n\\nvec3 getOrthogonalVector(vec3 v) {\\n  // Return up-vector for only-z vector.\\n  // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\\n  // From the above if-statement we have ||a|| > 0  U  ||b|| > 0.\\n  // Assign z = 0, x = -b, y = a:\\n  // a*-b + b*a + c*0 = -ba + ba + 0 = 0\\n  if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\\n    return normalize(vec3(-v.y, v.x, 0.0));\\n  } else {\\n    return normalize(vec3(0.0, v.z, -v.y));\\n  }\\n}\\n\\n// Calculate the tube vertex and normal at the given index.\\n//\\n// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d.\\n//\\n// Each tube segment is made up of a ring of vertices.\\n// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array.\\n// The indexes of tube segments run from 0 to 8.\\n//\\nvec3 getTubePosition(vec3 d, float index, out vec3 normal) {\\n  float segmentCount = 8.0;\\n\\n  float angle = 2.0 * 3.14159 * (index / segmentCount);\\n\\n  vec3 u = getOrthogonalVector(d);\\n  vec3 v = normalize(cross(u, d));\\n\\n  vec3 x = u * cos(angle) * length(d);\\n  vec3 y = v * sin(angle) * length(d);\\n  vec3 v3 = x + y;\\n\\n  normal = normalize(v3);\\n\\n  return v3;\\n}\\n\\nattribute vec4 vector;\\nattribute vec4 position;\\nattribute vec4 id;\\n\\nuniform mat4 model, view, projection;\\nuniform float tubeScale;\\n\\nvarying vec3 f_position;\\nvarying vec4 f_id;\\n\\nvoid main() {\\n  vec3 normal;\\n  vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal);\\n  vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\\n\\n  gl_Position = projection * view * tubePosition;\\n  f_id        = id;\\n  f_position  = position.xyz;\\n}\\n\"]);var pickFragSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3  clipBounds[2];\\nuniform float pickId;\\n\\nvarying vec3 f_position;\\nvarying vec4 f_id;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\\n\\n  gl_FragColor = vec4(pickId, f_id.xyz);\\n}\"]);exports.meshShader={vertex:triVertSrc,fragment:triFragSrc,attributes:[{name:'position',type:'vec4'},{name:'color',type:'vec4'},{name:'uv',type:'vec2'},{name:'vector',type:'vec4'}]};exports.pickShader={vertex:pickVertSrc,fragment:pickFragSrc,attributes:[{name:'position',type:'vec4'},{name:'id',type:'vec4'},{name:'vector',type:'vec4'}]};/***/},/***/7307:/***/function(module,__unused_webpack_exports,__nested_webpack_require_524271__){\"use strict\";var vec3=__nested_webpack_require_524271__(2858);var vec4=__nested_webpack_require_524271__(4020);var GRID_TYPES=['xyz','xzy','yxz','yzx','zxy','zyx'];var streamToTube=function(stream,maxDivergence,minDistance,maxNorm){var points=stream.points;var velocities=stream.velocities;var divergences=stream.divergences;var verts=[];var faces=[];var vectors=[];var previousVerts=[];var currentVerts=[];var intensities=[];var previousIntensity=0;var currentIntensity=0;var currentVector=vec4.create();var previousVector=vec4.create();var facets=8;for(var i=0;i<points.length;i++){var p=points[i];var fwd=velocities[i];var r=divergences[i];if(maxDivergence===0){r=minDistance*0.05;}currentIntensity=vec3.length(fwd)/maxNorm;currentVector=vec4.create();vec3.copy(currentVector,fwd);currentVector[3]=r;for(var a=0;a<facets;a++){currentVerts[a]=[p[0],p[1],p[2],a];}if(previousVerts.length>0){for(var a=0;a<facets;a++){var a1=(a+1)%facets;verts.push(previousVerts[a],currentVerts[a],currentVerts[a1],currentVerts[a1],previousVerts[a1],previousVerts[a]);vectors.push(previousVector,currentVector,currentVector,currentVector,previousVector,previousVector);intensities.push(previousIntensity,currentIntensity,currentIntensity,currentIntensity,previousIntensity,previousIntensity);var len=verts.length;faces.push([len-6,len-5,len-4],[len-3,len-2,len-1]);}}var tmp1=previousVerts;previousVerts=currentVerts;currentVerts=tmp1;var tmp2=previousVector;previousVector=currentVector;currentVector=tmp2;var tmp3=previousIntensity;previousIntensity=currentIntensity;currentIntensity=tmp3;}return{positions:verts,cells:faces,vectors:vectors,vertexIntensity:intensities};};var createTubes=function(streams,colormap,maxDivergence,minDistance){var maxNorm=0;for(var i=0;i<streams.length;i++){var velocities=streams[i].velocities;for(var j=0;j<velocities.length;j++){maxNorm=Math.max(maxNorm,vec3.length(velocities[j]));}}var tubes=streams.map(function(s){return streamToTube(s,maxDivergence,minDistance,maxNorm);});var positions=[];var cells=[];var vectors=[];var vertexIntensity=[];for(var i=0;i<tubes.length;i++){var tube=tubes[i];var offset=positions.length;positions=positions.concat(tube.positions);vectors=vectors.concat(tube.vectors);vertexIntensity=vertexIntensity.concat(tube.vertexIntensity);for(var j=0;j<tube.cells.length;j++){var cell=tube.cells[j];var newCell=[];cells.push(newCell);for(var k=0;k<cell.length;k++){newCell.push(cell[k]+offset);}}}return{positions:positions,cells:cells,vectors:vectors,vertexIntensity:vertexIntensity,colormap:colormap};};var findLastSmallerIndex=function(points,v){var len=points.length;var i;for(i=0;i<len;i++){var p=points[i];if(p===v)return i;else if(p>v)return i-1;}return i;};var clamp=function(v,min,max){return v<min?min:v>max?max:v;};var sampleMeshgrid=function(point,vectorField,gridInfo){var vectors=vectorField.vectors;var meshgrid=vectorField.meshgrid;var x=point[0];var y=point[1];var z=point[2];var w=meshgrid[0].length;var h=meshgrid[1].length;var d=meshgrid[2].length;// Find the index of the nearest smaller value in the meshgrid for each coordinate of (x,y,z).\n// The nearest smaller value index for x is the index x0 such that\n// meshgrid[0][x0] < x and for all x1 > x0, meshgrid[0][x1] >= x.\nvar x0=findLastSmallerIndex(meshgrid[0],x);var y0=findLastSmallerIndex(meshgrid[1],y);var z0=findLastSmallerIndex(meshgrid[2],z);// Get the nearest larger meshgrid value indices.\n// From the above \"nearest smaller value\", we know that\n//   meshgrid[0][x0] < x\n//   meshgrid[0][x0+1] >= x\nvar x1=x0+1;var y1=y0+1;var z1=z0+1;x0=clamp(x0,0,w-1);x1=clamp(x1,0,w-1);y0=clamp(y0,0,h-1);y1=clamp(y1,0,h-1);z0=clamp(z0,0,d-1);z1=clamp(z1,0,d-1);// Reject points outside the meshgrid, return a zero vector.\nif(x0<0||y0<0||z0<0||x1>w-1||y1>h-1||z1>d-1){return vec3.create();}// Normalize point coordinates to 0..1 scaling factor between x0 and x1.\nvar mX0=meshgrid[0][x0];var mX1=meshgrid[0][x1];var mY0=meshgrid[1][y0];var mY1=meshgrid[1][y1];var mZ0=meshgrid[2][z0];var mZ1=meshgrid[2][z1];var xf=(x-mX0)/(mX1-mX0);var yf=(y-mY0)/(mY1-mY0);var zf=(z-mZ0)/(mZ1-mZ0);if(!isFinite(xf))xf=0.5;if(!isFinite(yf))yf=0.5;if(!isFinite(zf))zf=0.5;var x0off;var x1off;var y0off;var y1off;var z0off;var z1off;if(gridInfo.reversedX){x0=w-1-x0;x1=w-1-x1;}if(gridInfo.reversedY){y0=h-1-y0;y1=h-1-y1;}if(gridInfo.reversedZ){z0=d-1-z0;z1=d-1-z1;}switch(gridInfo.filled){case 5:// 'zyx'\nz0off=z0;z1off=z1;y0off=y0*d;y1off=y1*d;x0off=x0*d*h;x1off=x1*d*h;break;case 4:// 'zxy'\nz0off=z0;z1off=z1;x0off=x0*d;x1off=x1*d;y0off=y0*d*w;y1off=y1*d*w;break;case 3:// 'yzx'\ny0off=y0;y1off=y1;z0off=z0*h;z1off=z1*h;x0off=x0*h*d;x1off=x1*h*d;break;case 2:// 'yxz'\ny0off=y0;y1off=y1;x0off=x0*h;x1off=x1*h;z0off=z0*h*w;z1off=z1*h*w;break;case 1:// 'xzy'\nx0off=x0;x1off=x1;z0off=z0*w;z1off=z1*w;y0off=y0*w*d;y1off=y1*w*d;break;default:// case 0: // 'xyz'\nx0off=x0;x1off=x1;y0off=y0*w;y1off=y1*w;z0off=z0*w*h;z1off=z1*w*h;break;}// Sample data vectors around the (x,y,z) point.\nvar v000=vectors[x0off+y0off+z0off];var v001=vectors[x0off+y0off+z1off];var v010=vectors[x0off+y1off+z0off];var v011=vectors[x0off+y1off+z1off];var v100=vectors[x1off+y0off+z0off];var v101=vectors[x1off+y0off+z1off];var v110=vectors[x1off+y1off+z0off];var v111=vectors[x1off+y1off+z1off];var c00=vec3.create();var c01=vec3.create();var c10=vec3.create();var c11=vec3.create();vec3.lerp(c00,v000,v100,xf);vec3.lerp(c01,v001,v101,xf);vec3.lerp(c10,v010,v110,xf);vec3.lerp(c11,v011,v111,xf);var c0=vec3.create();var c1=vec3.create();vec3.lerp(c0,c00,c10,yf);vec3.lerp(c1,c01,c11,yf);var c=vec3.create();vec3.lerp(c,c0,c1,zf);return c;};var vabs=function(dst,v){var x=v[0];var y=v[1];var z=v[2];dst[0]=x<0?-x:x;dst[1]=y<0?-y:y;dst[2]=z<0?-z:z;return dst;};var findMinSeparation=function(xs){var minSeparation=Infinity;xs.sort(function(a,b){return a-b;});var len=xs.length;for(var i=1;i<len;i++){var d=Math.abs(xs[i]-xs[i-1]);if(d<minSeparation){minSeparation=d;}}return minSeparation;};// Finds the minimum per-component distance in positions.\n//\nvar calculateMinPositionDistance=function(positions){var xs=[],ys=[],zs=[];var xi={},yi={},zi={};var len=positions.length;for(var i=0;i<len;i++){var p=positions[i];var x=p[0],y=p[1],z=p[2];// Split the positions array into arrays of unique component values.\n//\n// Why go through the trouble of using a uniqueness hash table vs\n// sort and uniq:\n//\n// Suppose you've got a million positions in a 100x100x100 grid.\n//\n// Using a uniqueness hash table, you're doing 1M array reads,\n// 3M hash table lookups from 100-element hashes, 300 hash table inserts, then\n// sorting three 100-element arrays and iterating over them.\n// Roughly, 1M + 3M * ln(100) + 300 * ln(100/2) + 3 * 100 * ln(100) + 3 * 100 =\n//          1M + 13.8M + 0.0012M +  0.0014M + 0.0003M\n//          =~ 15M\n//\n// Sort and uniq solution would do 1M array reads, 3M array inserts,\n// sort three 1M-element arrays and iterate over them.\n// Roughly, 1M + 3M + 3 * 1M * ln(1M) + 3 * 1M =\n//          1M + 3M + 41.4M + 3M\n//          =~ 48.4M\n//\n// Guessing that a hard-coded sort & uniq would be faster due to not having\n// to run a hashing function on everything. More memory usage though\n// (bunch of small hash tables vs. duplicating the input array.)\n//\n// In JS-land, who knows. Maybe xi[x] casts x to string and destroys perf,\n// maybe numeric keys get special-cased, maybe the object lookups run at near O(1)-speeds.\n// Maybe the sorting comparison function is expensive to call, maybe it gets inlined or special-cased.\n//\n// ... You're probably not going to call this with more than 10k positions anyhow, so this is very academic.\n//\nif(!xi[x]){xs.push(x);xi[x]=true;}if(!yi[y]){ys.push(y);yi[y]=true;}if(!zi[z]){zs.push(z);zi[z]=true;}}var xSep=findMinSeparation(xs);var ySep=findMinSeparation(ys);var zSep=findMinSeparation(zs);var minSeparation=Math.min(xSep,ySep,zSep);return isFinite(minSeparation)?minSeparation:1;};module.exports=function(vectorField,bounds){var positions=vectorField.startingPositions;var maxLength=vectorField.maxLength||1000;var tubeSize=vectorField.tubeSize||1;var absoluteTubeSize=vectorField.absoluteTubeSize;var gridFill=vectorField.gridFill||'+x+y+z';var gridInfo={};if(gridFill.indexOf('-x')!==-1){gridInfo.reversedX=true;}if(gridFill.indexOf('-y')!==-1){gridInfo.reversedY=true;}if(gridFill.indexOf('-z')!==-1){gridInfo.reversedZ=true;}gridInfo.filled=GRID_TYPES.indexOf(gridFill.replace(/-/g,'').replace(/\\+/g,''));var getVelocity=vectorField.getVelocity||function(p){return sampleMeshgrid(p,vectorField,gridInfo);};var getDivergence=vectorField.getDivergence||function(p,v0){var dp=vec3.create();var e=0.0001;vec3.add(dp,p,[e,0,0]);var vx=getVelocity(dp);vec3.subtract(vx,vx,v0);vec3.scale(vx,vx,1/e);vec3.add(dp,p,[0,e,0]);var vy=getVelocity(dp);vec3.subtract(vy,vy,v0);vec3.scale(vy,vy,1/e);vec3.add(dp,p,[0,0,e]);var vz=getVelocity(dp);vec3.subtract(vz,vz,v0);vec3.scale(vz,vz,1/e);vec3.add(dp,vx,vy);vec3.add(dp,dp,vz);return dp;};var streams=[];var minX=bounds[0][0],minY=bounds[0][1],minZ=bounds[0][2];var maxX=bounds[1][0],maxY=bounds[1][1],maxZ=bounds[1][2];var inBounds=function(p){var x=p[0];var y=p[1];var z=p[2];return!(x<minX||x>maxX||y<minY||y>maxY||z<minZ||z>maxZ);};var boundsSize=vec3.distance(bounds[0],bounds[1]);var maxStepSize=10*boundsSize/maxLength;var maxStepSizeSq=maxStepSize*maxStepSize;var minDistance=1;var maxDivergence=0;// For component-wise divergence vec3.create();\n// In case we need to do component-wise divergence visualization\n// var tmp = vec3.create();\nvar len=positions.length;if(len>1){minDistance=calculateMinPositionDistance(positions);}for(var i=0;i<len;i++){var p=vec3.create();vec3.copy(p,positions[i]);var stream=[p];var velocities=[];var v=getVelocity(p);var op=p;velocities.push(v);var divergences=[];var dv=getDivergence(p,v);var dvLength=vec3.length(dv);if(isFinite(dvLength)&&dvLength>maxDivergence){maxDivergence=dvLength;}// In case we need to do component-wise divergence visualization\n// vec3.max(maxDivergence, maxDivergence, vabs(tmp, dv));\ndivergences.push(dvLength);streams.push({points:stream,velocities:velocities,divergences:divergences});var j=0;while(j<maxLength*100&&stream.length<maxLength&&inBounds(p)){j++;var np=vec3.clone(v);var sqLen=vec3.squaredLength(np);if(sqLen===0){break;}else if(sqLen>maxStepSizeSq){vec3.scale(np,np,maxStepSize/Math.sqrt(sqLen));}vec3.add(np,np,p);v=getVelocity(np);if(vec3.squaredDistance(op,np)-maxStepSizeSq>-0.0001*maxStepSizeSq){stream.push(np);op=np;velocities.push(v);var dv=getDivergence(np,v);var dvLength=vec3.length(dv);if(isFinite(dvLength)&&dvLength>maxDivergence){maxDivergence=dvLength;}// In case we need to do component-wise divergence visualization\n//vec3.max(maxDivergence, maxDivergence, vabs(tmp, dv));\ndivergences.push(dvLength);}p=np;}}var tubes=createTubes(streams,vectorField.colormap,maxDivergence,minDistance);if(absoluteTubeSize){tubes.tubeScale=absoluteTubeSize;}else{// Avoid division by zero.\nif(maxDivergence===0){maxDivergence=1;}tubes.tubeScale=tubeSize*0.5*minDistance/maxDivergence;}return tubes;};var shaders=__nested_webpack_require_524271__(9578);var createMesh=__nested_webpack_require_524271__(1140).createMesh;module.exports.createTubeMesh=function(gl,params){return createMesh(gl,params,{shaders:shaders,traceType:'streamtube'});};/***/},/***/9054:/***/function(__unused_webpack_module,exports,__nested_webpack_require_535596__){var createShader=__nested_webpack_require_535596__(5158);var glslify=__nested_webpack_require_535596__(6832);var vertSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec4 uv;\\nattribute vec3 f;\\nattribute vec3 normal;\\n\\nuniform vec3 objectOffset;\\nuniform mat4 model, view, projection, inverseModel;\\nuniform vec3 lightPosition, eyePosition;\\nuniform sampler2D colormap;\\n\\nvarying float value, kill;\\nvarying vec3 worldCoordinate;\\nvarying vec2 planeCoordinate;\\nvarying vec3 lightDirection, eyeDirection, surfaceNormal;\\nvarying vec4 vColor;\\n\\nvoid main() {\\n  vec3 localCoordinate = vec3(uv.zw, f.x);\\n  worldCoordinate = objectOffset + localCoordinate;\\n  vec4 worldPosition = model * vec4(worldCoordinate, 1.0);\\n  vec4 clipPosition = projection * view * worldPosition;\\n  gl_Position = clipPosition;\\n  kill = f.y;\\n  value = f.z;\\n  planeCoordinate = uv.xy;\\n\\n  vColor = texture2D(colormap, vec2(value, value));\\n\\n  //Lighting geometry parameters\\n  vec4 cameraCoordinate = view * worldPosition;\\n  cameraCoordinate.xyz /= cameraCoordinate.w;\\n  lightDirection = lightPosition - cameraCoordinate.xyz;\\n  eyeDirection   = eyePosition - cameraCoordinate.xyz;\\n  surfaceNormal  = normalize((vec4(normal,0) * inverseModel).xyz);\\n}\\n\"]);var fragSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nfloat beckmannDistribution(float x, float roughness) {\\n  float NdotH = max(x, 0.0001);\\n  float cos2Alpha = NdotH * NdotH;\\n  float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\\n  float roughness2 = roughness * roughness;\\n  float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\\n  return exp(tan2Alpha / roughness2) / denom;\\n}\\n\\nfloat beckmannSpecular(\\n  vec3 lightDirection,\\n  vec3 viewDirection,\\n  vec3 surfaceNormal,\\n  float roughness) {\\n  return beckmannDistribution(dot(surfaceNormal, normalize(lightDirection + viewDirection)), roughness);\\n}\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3 lowerBound, upperBound;\\nuniform float contourTint;\\nuniform vec4 contourColor;\\nuniform sampler2D colormap;\\nuniform vec3 clipBounds[2];\\nuniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity;\\nuniform float vertexColor;\\n\\nvarying float value, kill;\\nvarying vec3 worldCoordinate;\\nvarying vec3 lightDirection, eyeDirection, surfaceNormal;\\nvarying vec4 vColor;\\n\\nvoid main() {\\n  if (\\n    kill > 0.0 ||\\n    vColor.a == 0.0 ||\\n    outOfRange(clipBounds[0], clipBounds[1], worldCoordinate)\\n  ) discard;\\n\\n  vec3 N = normalize(surfaceNormal);\\n  vec3 V = normalize(eyeDirection);\\n  vec3 L = normalize(lightDirection);\\n\\n  if(gl_FrontFacing) {\\n    N = -N;\\n  }\\n\\n  float specular = max(beckmannSpecular(L, V, N, roughness), 0.);\\n  float diffuse  = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\\n\\n  //decide how to interpolate color — in vertex or in fragment\\n  vec4 surfaceColor =\\n    step(vertexColor, .5) * texture2D(colormap, vec2(value, value)) +\\n    step(.5, vertexColor) * vColor;\\n\\n  vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular,  1.0);\\n\\n  gl_FragColor = mix(litColor, contourColor, contourTint) * opacity;\\n}\\n\"]);var contourVertSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec4 uv;\\nattribute float f;\\n\\nuniform vec3 objectOffset;\\nuniform mat3 permutation;\\nuniform mat4 model, view, projection;\\nuniform float height, zOffset;\\nuniform sampler2D colormap;\\n\\nvarying float value, kill;\\nvarying vec3 worldCoordinate;\\nvarying vec2 planeCoordinate;\\nvarying vec3 lightDirection, eyeDirection, surfaceNormal;\\nvarying vec4 vColor;\\n\\nvoid main() {\\n  vec3 dataCoordinate = permutation * vec3(uv.xy, height);\\n  worldCoordinate = objectOffset + dataCoordinate;\\n  vec4 worldPosition = model * vec4(worldCoordinate, 1.0);\\n\\n  vec4 clipPosition = projection * view * worldPosition;\\n  clipPosition.z += zOffset;\\n\\n  gl_Position = clipPosition;\\n  value = f + objectOffset.z;\\n  kill = -1.0;\\n  planeCoordinate = uv.zw;\\n\\n  vColor = texture2D(colormap, vec2(value, value));\\n\\n  //Don't do lighting for contours\\n  surfaceNormal   = vec3(1,0,0);\\n  eyeDirection    = vec3(0,1,0);\\n  lightDirection  = vec3(0,0,1);\\n}\\n\"]);var pickSrc=glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec2 shape;\\nuniform vec3 clipBounds[2];\\nuniform float pickId;\\n\\nvarying float value, kill;\\nvarying vec3 worldCoordinate;\\nvarying vec2 planeCoordinate;\\nvarying vec3 surfaceNormal;\\n\\nvec2 splitFloat(float v) {\\n  float vh = 255.0 * v;\\n  float upper = floor(vh);\\n  float lower = fract(vh);\\n  return vec2(upper / 255.0, floor(lower * 16.0) / 16.0);\\n}\\n\\nvoid main() {\\n  if ((kill > 0.0) ||\\n      (outOfRange(clipBounds[0], clipBounds[1], worldCoordinate))) discard;\\n\\n  vec2 ux = splitFloat(planeCoordinate.x / shape.x);\\n  vec2 uy = splitFloat(planeCoordinate.y / shape.y);\\n  gl_FragColor = vec4(pickId, ux.x, uy.x, ux.y + (uy.y/16.0));\\n}\\n\"]);exports.createShader=function(gl){var shader=createShader(gl,vertSrc,fragSrc,null,[{name:'uv',type:'vec4'},{name:'f',type:'vec3'},{name:'normal',type:'vec3'}]);shader.attributes.uv.location=0;shader.attributes.f.location=1;shader.attributes.normal.location=2;return shader;};exports.createPickShader=function(gl){var shader=createShader(gl,vertSrc,pickSrc,null,[{name:'uv',type:'vec4'},{name:'f',type:'vec3'},{name:'normal',type:'vec3'}]);shader.attributes.uv.location=0;shader.attributes.f.location=1;shader.attributes.normal.location=2;return shader;};exports.createContourShader=function(gl){var shader=createShader(gl,contourVertSrc,fragSrc,null,[{name:'uv',type:'vec4'},{name:'f',type:'float'}]);shader.attributes.uv.location=0;shader.attributes.f.location=1;return shader;};exports.createPickContourShader=function(gl){var shader=createShader(gl,contourVertSrc,pickSrc,null,[{name:'uv',type:'vec4'},{name:'f',type:'float'}]);shader.attributes.uv.location=0;shader.attributes.f.location=1;return shader;};/***/},/***/3754:/***/function(module,__unused_webpack_exports,__nested_webpack_require_542560__){\"use strict\";module.exports=createSurfacePlot;var bits=__nested_webpack_require_542560__(2288);var createBuffer=__nested_webpack_require_542560__(5827);var createVAO=__nested_webpack_require_542560__(2944);var createTexture=__nested_webpack_require_542560__(8931);var pool=__nested_webpack_require_542560__(5306);var colormap=__nested_webpack_require_542560__(9156);var ops=__nested_webpack_require_542560__(7498);var pack=__nested_webpack_require_542560__(7382);var ndarray=__nested_webpack_require_542560__(5050);var surfaceNets=__nested_webpack_require_542560__(4162);var multiply=__nested_webpack_require_542560__(104);var invert=__nested_webpack_require_542560__(7437);var bsearch=__nested_webpack_require_542560__(5070);var gradient=__nested_webpack_require_542560__(9144);var shaders=__nested_webpack_require_542560__(9054);var createShader=shaders.createShader;var createContourShader=shaders.createContourShader;var createPickShader=shaders.createPickShader;var createPickContourShader=shaders.createPickContourShader;var SURFACE_VERTEX_SIZE=4*(4+3+3);var IDENTITY=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];var QUAD=[[0,0],[0,1],[1,0],[1,1],[1,0],[0,1]];var PERMUTATIONS=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]];(function(){for(var i=0;i<3;++i){var p=PERMUTATIONS[i];var u=(i+1)%3;var v=(i+2)%3;p[u+0]=1;p[v+3]=1;p[i+6]=1;}})();function SurfacePickResult(position,index,uv,level,dataCoordinate){this.position=position;this.index=index;this.uv=uv;this.level=level;this.dataCoordinate=dataCoordinate;}var N_COLORS=256;function SurfacePlot(gl,shape,bounds,shader,pickShader,coordinates,vao,colorMap,contourShader,contourPickShader,contourBuffer,contourVAO,dynamicBuffer,dynamicVAO,objectOffset){this.gl=gl;this.shape=shape;this.bounds=bounds;this.objectOffset=objectOffset;this.intensityBounds=[];this._shader=shader;this._pickShader=pickShader;this._coordinateBuffer=coordinates;this._vao=vao;this._colorMap=colorMap;this._contourShader=contourShader;this._contourPickShader=contourPickShader;this._contourBuffer=contourBuffer;this._contourVAO=contourVAO;this._contourOffsets=[[],[],[]];this._contourCounts=[[],[],[]];this._vertexCount=0;this._pickResult=new SurfacePickResult([0,0,0],[0,0],[0,0],[0,0,0],[0,0,0]);this._dynamicBuffer=dynamicBuffer;this._dynamicVAO=dynamicVAO;this._dynamicOffsets=[0,0,0];this._dynamicCounts=[0,0,0];this.contourWidth=[1,1,1];this.contourLevels=[[1],[1],[1]];this.contourTint=[0,0,0];this.contourColor=[[0.5,0.5,0.5,1],[0.5,0.5,0.5,1],[0.5,0.5,0.5,1]];this.showContour=true;this.showSurface=true;this.enableHighlight=[true,true,true];this.highlightColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]];this.highlightTint=[1,1,1];this.highlightLevel=[-1,-1,-1];// Dynamic contour options\nthis.enableDynamic=[true,true,true];this.dynamicLevel=[NaN,NaN,NaN];this.dynamicColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]];this.dynamicTint=[1,1,1];this.dynamicWidth=[1,1,1];this.axesBounds=[[Infinity,Infinity,Infinity],[-Infinity,-Infinity,-Infinity]];this.surfaceProject=[false,false,false];this.contourProject=[[false,false,false],[false,false,false],[false,false,false]];this.colorBounds=[false,false];// Store xyz fields, need this for picking\nthis._field=[ndarray(pool.mallocFloat(1024),[0,0]),ndarray(pool.mallocFloat(1024),[0,0]),ndarray(pool.mallocFloat(1024),[0,0])];this.pickId=1;this.clipBounds=[[-Infinity,-Infinity,-Infinity],[Infinity,Infinity,Infinity]];this.snapToData=false;this.pixelRatio=1;this.opacity=1.0;this.lightPosition=[10,10000,0];this.ambientLight=0.8;this.diffuseLight=0.8;this.specularLight=2.0;this.roughness=0.5;this.fresnel=1.5;this.vertexColor=0;this.dirty=true;}var proto=SurfacePlot.prototype;proto.genColormap=function(name,opacityscale){var hasAlpha=false;var x=pack([colormap({colormap:name,nshades:N_COLORS,format:'rgba'}).map(function(c,i){var a=opacityscale?getOpacityFromScale(i/255.0,opacityscale):c[3];if(a<1)hasAlpha=true;return[c[0],c[1],c[2],255*a];})]);ops.divseq(x,255.0);this.hasAlphaScale=hasAlpha;return x;};proto.isTransparent=function(){return this.opacity<1||this.hasAlphaScale;};proto.isOpaque=function(){return!this.isTransparent();};proto.pickSlots=1;proto.setPickBase=function(id){this.pickId=id;};function getOpacityFromScale(ratio,opacityscale){// copied form gl-mesh3d\nif(!opacityscale)return 1;if(!opacityscale.length)return 1;for(var i=0;i<opacityscale.length;++i){if(opacityscale.length<2)return 1;if(opacityscale[i][0]===ratio)return opacityscale[i][1];if(opacityscale[i][0]>ratio&&i>0){var d=(opacityscale[i][0]-ratio)/(opacityscale[i][0]-opacityscale[i-1][0]);return opacityscale[i][1]*(1-d)+d*opacityscale[i-1][1];}}return 1;}var ZERO_VEC=[0,0,0];var PROJECT_DATA={showSurface:false,showContour:false,projections:[IDENTITY.slice(),IDENTITY.slice(),IDENTITY.slice()],clipBounds:[[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]]]};function computeProjectionData(camera,obj){var i,j,k;// Compute cube properties\nvar cubeAxis=obj.axes&&obj.axes.lastCubeProps.axis||ZERO_VEC;var showSurface=obj.showSurface;var showContour=obj.showContour;for(i=0;i<3;++i){showSurface=showSurface||obj.surfaceProject[i];for(j=0;j<3;++j){showContour=showContour||obj.contourProject[i][j];}}for(i=0;i<3;++i){// Construct projection onto axis\nvar axisSquish=PROJECT_DATA.projections[i];for(j=0;j<16;++j){axisSquish[j]=0;}for(j=0;j<4;++j){axisSquish[5*j]=1;}axisSquish[5*i]=0;axisSquish[12+i]=obj.axesBounds[+(cubeAxis[i]>0)][i];multiply(axisSquish,camera.model,axisSquish);var nclipBounds=PROJECT_DATA.clipBounds[i];for(k=0;k<2;++k){for(j=0;j<3;++j){nclipBounds[k][j]=camera.clipBounds[k][j];}}nclipBounds[0][i]=-1e8;nclipBounds[1][i]=1e8;}PROJECT_DATA.showSurface=showSurface;PROJECT_DATA.showContour=showContour;return PROJECT_DATA;}var UNIFORMS={model:IDENTITY,view:IDENTITY,projection:IDENTITY,inverseModel:IDENTITY.slice(),lowerBound:[0,0,0],upperBound:[0,0,0],colorMap:0,clipBounds:[[0,0,0],[0,0,0]],height:0.0,contourTint:0,contourColor:[0,0,0,1],permutation:[1,0,0,0,1,0,0,0,1],zOffset:-1e-4,objectOffset:[0,0,0],kambient:1,kdiffuse:1,kspecular:1,lightPosition:[1000,1000,1000],eyePosition:[0,0,0],roughness:1,fresnel:1,opacity:1,vertexColor:0};var MATRIX_INVERSE=IDENTITY.slice();var DEFAULT_PERM=[1,0,0,0,1,0,0,0,1];function drawCore(params,transparent){params=params||{};var gl=this.gl;gl.disable(gl.CULL_FACE);this._colorMap.bind(0);var uniforms=UNIFORMS;uniforms.model=params.model||IDENTITY;uniforms.view=params.view||IDENTITY;uniforms.projection=params.projection||IDENTITY;uniforms.lowerBound=[this.bounds[0][0],this.bounds[0][1],this.colorBounds[0]||this.bounds[0][2]];uniforms.upperBound=[this.bounds[1][0],this.bounds[1][1],this.colorBounds[1]||this.bounds[1][2]];uniforms.objectOffset=this.objectOffset;uniforms.contourColor=this.contourColor[0];uniforms.inverseModel=invert(uniforms.inverseModel,uniforms.model);for(var i=0;i<2;++i){var clipClamped=uniforms.clipBounds[i];for(var j=0;j<3;++j){clipClamped[j]=Math.min(Math.max(this.clipBounds[i][j],-1e8),1e8);}}uniforms.kambient=this.ambientLight;uniforms.kdiffuse=this.diffuseLight;uniforms.kspecular=this.specularLight;uniforms.roughness=this.roughness;uniforms.fresnel=this.fresnel;uniforms.opacity=this.opacity;uniforms.height=0.0;uniforms.permutation=DEFAULT_PERM;uniforms.vertexColor=this.vertexColor;// Compute camera matrix inverse\nvar invCameraMatrix=MATRIX_INVERSE;multiply(invCameraMatrix,uniforms.view,uniforms.model);multiply(invCameraMatrix,uniforms.projection,invCameraMatrix);invert(invCameraMatrix,invCameraMatrix);for(i=0;i<3;++i){uniforms.eyePosition[i]=invCameraMatrix[12+i]/invCameraMatrix[15];}var w=invCameraMatrix[15];for(i=0;i<3;++i){w+=this.lightPosition[i]*invCameraMatrix[4*i+3];}for(i=0;i<3;++i){var s=invCameraMatrix[12+i];for(j=0;j<3;++j){s+=invCameraMatrix[4*j+i]*this.lightPosition[j];}uniforms.lightPosition[i]=s/w;}var projectData=computeProjectionData(uniforms,this);if(projectData.showSurface){// Set up uniforms\nthis._shader.bind();this._shader.uniforms=uniforms;// Draw it\nthis._vao.bind();if(this.showSurface&&this._vertexCount){this._vao.draw(gl.TRIANGLES,this._vertexCount);}// Draw projections of surface\nfor(i=0;i<3;++i){if(!this.surfaceProject[i]||!this.vertexCount){continue;}this._shader.uniforms.model=projectData.projections[i];this._shader.uniforms.clipBounds=projectData.clipBounds[i];this._vao.draw(gl.TRIANGLES,this._vertexCount);}this._vao.unbind();}if(projectData.showContour){var shader=this._contourShader;// Don't apply lighting to contours\nuniforms.kambient=1.0;uniforms.kdiffuse=0.0;uniforms.kspecular=0.0;uniforms.opacity=1.0;shader.bind();shader.uniforms=uniforms;// Draw contour lines\nvar vao=this._contourVAO;vao.bind();// Draw contour levels\nfor(i=0;i<3;++i){shader.uniforms.permutation=PERMUTATIONS[i];gl.lineWidth(this.contourWidth[i]*this.pixelRatio);for(j=0;j<this.contourLevels[i].length;++j){if(j===this.highlightLevel[i]){shader.uniforms.contourColor=this.highlightColor[i];shader.uniforms.contourTint=this.highlightTint[i];}else if(j===0||j-1===this.highlightLevel[i]){shader.uniforms.contourColor=this.contourColor[i];shader.uniforms.contourTint=this.contourTint[i];}if(!this._contourCounts[i][j]){continue;}shader.uniforms.height=this.contourLevels[i][j];vao.draw(gl.LINES,this._contourCounts[i][j],this._contourOffsets[i][j]);}}// Draw projections of surface\nfor(i=0;i<3;++i){shader.uniforms.model=projectData.projections[i];shader.uniforms.clipBounds=projectData.clipBounds[i];for(j=0;j<3;++j){if(!this.contourProject[i][j]){continue;}shader.uniforms.permutation=PERMUTATIONS[j];gl.lineWidth(this.contourWidth[j]*this.pixelRatio);for(var k=0;k<this.contourLevels[j].length;++k){if(k===this.highlightLevel[j]){shader.uniforms.contourColor=this.highlightColor[j];shader.uniforms.contourTint=this.highlightTint[j];}else if(k===0||k-1===this.highlightLevel[j]){shader.uniforms.contourColor=this.contourColor[j];shader.uniforms.contourTint=this.contourTint[j];}if(!this._contourCounts[j][k]){continue;}shader.uniforms.height=this.contourLevels[j][k];vao.draw(gl.LINES,this._contourCounts[j][k],this._contourOffsets[j][k]);}}}vao.unbind();// Draw dynamic contours\nvao=this._dynamicVAO;vao.bind();// Draw contour levels\nfor(i=0;i<3;++i){if(this._dynamicCounts[i]===0){continue;}shader.uniforms.model=uniforms.model;shader.uniforms.clipBounds=uniforms.clipBounds;shader.uniforms.permutation=PERMUTATIONS[i];gl.lineWidth(this.dynamicWidth[i]*this.pixelRatio);shader.uniforms.contourColor=this.dynamicColor[i];shader.uniforms.contourTint=this.dynamicTint[i];shader.uniforms.height=this.dynamicLevel[i];vao.draw(gl.LINES,this._dynamicCounts[i],this._dynamicOffsets[i]);for(j=0;j<3;++j){if(!this.contourProject[j][i]){continue;}shader.uniforms.model=projectData.projections[j];shader.uniforms.clipBounds=projectData.clipBounds[j];vao.draw(gl.LINES,this._dynamicCounts[i],this._dynamicOffsets[i]);}}vao.unbind();}}proto.draw=function(params){return drawCore.call(this,params,false);};proto.drawTransparent=function(params){return drawCore.call(this,params,true);};var PICK_UNIFORMS={model:IDENTITY,view:IDENTITY,projection:IDENTITY,inverseModel:IDENTITY,clipBounds:[[0,0,0],[0,0,0]],height:0.0,shape:[0,0],pickId:0,lowerBound:[0,0,0],upperBound:[0,0,0],zOffset:0.0,objectOffset:[0,0,0],permutation:[1,0,0,0,1,0,0,0,1],lightPosition:[0,0,0],eyePosition:[0,0,0]};proto.drawPick=function(params){params=params||{};var gl=this.gl;gl.disable(gl.CULL_FACE);var uniforms=PICK_UNIFORMS;uniforms.model=params.model||IDENTITY;uniforms.view=params.view||IDENTITY;uniforms.projection=params.projection||IDENTITY;uniforms.shape=this._field[2].shape;uniforms.pickId=this.pickId/255.0;uniforms.lowerBound=this.bounds[0];uniforms.upperBound=this.bounds[1];uniforms.objectOffset=this.objectOffset;uniforms.permutation=DEFAULT_PERM;for(var i=0;i<2;++i){var clipClamped=uniforms.clipBounds[i];for(var j=0;j<3;++j){clipClamped[j]=Math.min(Math.max(this.clipBounds[i][j],-1e8),1e8);}}var projectData=computeProjectionData(uniforms,this);if(projectData.showSurface){// Set up uniforms\nthis._pickShader.bind();this._pickShader.uniforms=uniforms;// Draw it\nthis._vao.bind();this._vao.draw(gl.TRIANGLES,this._vertexCount);// Draw projections of surface\nfor(i=0;i<3;++i){if(!this.surfaceProject[i]){continue;}this._pickShader.uniforms.model=projectData.projections[i];this._pickShader.uniforms.clipBounds=projectData.clipBounds[i];this._vao.draw(gl.TRIANGLES,this._vertexCount);}this._vao.unbind();}if(projectData.showContour){var shader=this._contourPickShader;shader.bind();shader.uniforms=uniforms;var vao=this._contourVAO;vao.bind();for(j=0;j<3;++j){gl.lineWidth(this.contourWidth[j]*this.pixelRatio);shader.uniforms.permutation=PERMUTATIONS[j];for(i=0;i<this.contourLevels[j].length;++i){if(this._contourCounts[j][i]){shader.uniforms.height=this.contourLevels[j][i];vao.draw(gl.LINES,this._contourCounts[j][i],this._contourOffsets[j][i]);}}}// Draw projections of surface\nfor(i=0;i<3;++i){shader.uniforms.model=projectData.projections[i];shader.uniforms.clipBounds=projectData.clipBounds[i];for(j=0;j<3;++j){if(!this.contourProject[i][j]){continue;}shader.uniforms.permutation=PERMUTATIONS[j];gl.lineWidth(this.contourWidth[j]*this.pixelRatio);for(var k=0;k<this.contourLevels[j].length;++k){if(this._contourCounts[j][k]){shader.uniforms.height=this.contourLevels[j][k];vao.draw(gl.LINES,this._contourCounts[j][k],this._contourOffsets[j][k]);}}}}vao.unbind();}};proto.pick=function(selection){if(!selection){return null;}if(selection.id!==this.pickId){return null;}var shape=this._field[2].shape;var result=this._pickResult;// Compute uv coordinate\nvar x=shape[0]*(selection.value[0]+(selection.value[2]>>4)/16.0)/255.0;var ix=Math.floor(x);var fx=x-ix;var y=shape[1]*(selection.value[1]+(selection.value[2]&15)/16.0)/255.0;var iy=Math.floor(y);var fy=y-iy;ix+=1;iy+=1;// Compute xyz coordinate\nvar pos=result.position;pos[0]=pos[1]=pos[2]=0;for(var dx=0;dx<2;++dx){var s=dx?fx:1.0-fx;for(var dy=0;dy<2;++dy){var t=dy?fy:1.0-fy;var r=ix+dx;var c=iy+dy;var w=s*t;for(var i=0;i<3;++i){pos[i]+=this._field[i].get(r,c)*w;}}}// Find closest level\nvar levelIndex=this._pickResult.level;for(var j=0;j<3;++j){levelIndex[j]=bsearch.le(this.contourLevels[j],pos[j]);if(levelIndex[j]<0){if(this.contourLevels[j].length>0){levelIndex[j]=0;}}else if(levelIndex[j]<this.contourLevels[j].length-1){var a=this.contourLevels[j][levelIndex[j]];var b=this.contourLevels[j][levelIndex[j]+1];if(Math.abs(a-pos[j])>Math.abs(b-pos[j])){levelIndex[j]+=1;}}}result.index[0]=fx<0.5?ix:ix+1;result.index[1]=fy<0.5?iy:iy+1;result.uv[0]=x/shape[0];result.uv[1]=y/shape[1];for(i=0;i<3;++i){result.dataCoordinate[i]=this._field[i].get(result.index[0],result.index[1]);}return result;};proto.padField=function(dstField,srcField){var srcShape=srcField.shape.slice();var dstShape=dstField.shape.slice();// Center\nops.assign(dstField.lo(1,1).hi(srcShape[0],srcShape[1]),srcField);// Edges\nops.assign(dstField.lo(1).hi(srcShape[0],1),srcField.hi(srcShape[0],1));ops.assign(dstField.lo(1,dstShape[1]-1).hi(srcShape[0],1),srcField.lo(0,srcShape[1]-1).hi(srcShape[0],1));ops.assign(dstField.lo(0,1).hi(1,srcShape[1]),srcField.hi(1));ops.assign(dstField.lo(dstShape[0]-1,1).hi(1,srcShape[1]),srcField.lo(srcShape[0]-1));// Corners\ndstField.set(0,0,srcField.get(0,0));dstField.set(0,dstShape[1]-1,srcField.get(0,srcShape[1]-1));dstField.set(dstShape[0]-1,0,srcField.get(srcShape[0]-1,0));dstField.set(dstShape[0]-1,dstShape[1]-1,srcField.get(srcShape[0]-1,srcShape[1]-1));};function handleArray(param,ctor){if(Array.isArray(param)){return[ctor(param[0]),ctor(param[1]),ctor(param[2])];}return[ctor(param),ctor(param),ctor(param)];}function toColor(x){if(Array.isArray(x)){if(x.length===3){return[x[0],x[1],x[2],1];}return[x[0],x[1],x[2],x[3]];}return[0,0,0,1];}function handleColor(param){if(Array.isArray(param)){if(Array.isArray(param)){return[toColor(param[0]),toColor(param[1]),toColor(param[2])];}else{var c=toColor(param);return[c.slice(),c.slice(),c.slice()];}}}proto.update=function(params){params=params||{};this.objectOffset=params.objectOffset||this.objectOffset;this.dirty=true;if('contourWidth'in params){this.contourWidth=handleArray(params.contourWidth,Number);}if('showContour'in params){this.showContour=handleArray(params.showContour,Boolean);}if('showSurface'in params){this.showSurface=!!params.showSurface;}if('contourTint'in params){this.contourTint=handleArray(params.contourTint,Boolean);}if('contourColor'in params){this.contourColor=handleColor(params.contourColor);}if('contourProject'in params){this.contourProject=handleArray(params.contourProject,function(x){return handleArray(x,Boolean);});}if('surfaceProject'in params){this.surfaceProject=params.surfaceProject;}if('dynamicColor'in params){this.dynamicColor=handleColor(params.dynamicColor);}if('dynamicTint'in params){this.dynamicTint=handleArray(params.dynamicTint,Number);}if('dynamicWidth'in params){this.dynamicWidth=handleArray(params.dynamicWidth,Number);}if('opacity'in params){this.opacity=params.opacity;}if('opacityscale'in params){this.opacityscale=params.opacityscale;}if('colorBounds'in params){this.colorBounds=params.colorBounds;}if('vertexColor'in params){this.vertexColor=params.vertexColor?1:0;}if('colormap'in params){this._colorMap.setPixels(this.genColormap(params.colormap,this.opacityscale));}var field=params.field||params.coords&&params.coords[2]||null;var levelsChanged=false;if(!field){if(this._field[2].shape[0]||this._field[2].shape[2]){field=this._field[2].lo(1,1).hi(this._field[2].shape[0]-2,this._field[2].shape[1]-2);}else{field=this._field[2].hi(0,0);}}// Update field\nif('field'in params||'coords'in params){var fsize=(field.shape[0]+2)*(field.shape[1]+2);// Resize if necessary\nif(fsize>this._field[2].data.length){pool.freeFloat(this._field[2].data);this._field[2].data=pool.mallocFloat(bits.nextPow2(fsize));}// Pad field\nthis._field[2]=ndarray(this._field[2].data,[field.shape[0]+2,field.shape[1]+2]);this.padField(this._field[2],field);// Save shape of field\nthis.shape=field.shape.slice();var shape=this.shape;// Resize coordinate fields if necessary\nfor(var i=0;i<2;++i){if(this._field[2].size>this._field[i].data.length){pool.freeFloat(this._field[i].data);this._field[i].data=pool.mallocFloat(this._field[2].size);}this._field[i]=ndarray(this._field[i].data,[shape[0]+2,shape[1]+2]);}// Generate x/y coordinates\nif(params.coords){var coords=params.coords;if(!Array.isArray(coords)||coords.length!==3){throw new Error('gl-surface: invalid coordinates for x/y');}for(i=0;i<2;++i){var coord=coords[i];for(j=0;j<2;++j){if(coord.shape[j]!==shape[j]){throw new Error('gl-surface: coords have incorrect shape');}}this.padField(this._field[i],coord);}}else if(params.ticks){var ticks=params.ticks;if(!Array.isArray(ticks)||ticks.length!==2){throw new Error('gl-surface: invalid ticks');}for(i=0;i<2;++i){var tick=ticks[i];if(Array.isArray(tick)||tick.length){tick=ndarray(tick);}if(tick.shape[0]!==shape[i]){throw new Error('gl-surface: invalid tick length');}// Make a copy view of the tick array\nvar tick2=ndarray(tick.data,shape);tick2.stride[i]=tick.stride[0];tick2.stride[i^1]=0;// Fill in field array\nthis.padField(this._field[i],tick2);}}else{for(i=0;i<2;++i){var offset=[0,0];offset[i]=1;this._field[i]=ndarray(this._field[i].data,[shape[0]+2,shape[1]+2],offset,0);}this._field[0].set(0,0,0);for(var j=0;j<shape[0];++j){this._field[0].set(j+1,0,j);}this._field[0].set(shape[0]+1,0,shape[0]-1);this._field[1].set(0,0,0);for(j=0;j<shape[1];++j){this._field[1].set(0,j+1,j);}this._field[1].set(0,shape[1]+1,shape[1]-1);}// Save shape\nvar fields=this._field;// Compute surface normals\nvar dfields=ndarray(pool.mallocFloat(fields[2].size*3*2),[3,shape[0]+2,shape[1]+2,2]);for(i=0;i<3;++i){gradient(dfields.pick(i),fields[i],'mirror');}var normals=ndarray(pool.mallocFloat(fields[2].size*3),[shape[0]+2,shape[1]+2,3]);for(i=0;i<shape[0]+2;++i){for(j=0;j<shape[1]+2;++j){var dxdu=dfields.get(0,i,j,0);var dxdv=dfields.get(0,i,j,1);var dydu=dfields.get(1,i,j,0);var dydv=dfields.get(1,i,j,1);var dzdu=dfields.get(2,i,j,0);var dzdv=dfields.get(2,i,j,1);var nx=dydu*dzdv-dydv*dzdu;var ny=dzdu*dxdv-dzdv*dxdu;var nz=dxdu*dydv-dxdv*dydu;var nl=Math.sqrt(nx*nx+ny*ny+nz*nz);if(nl<1e-8){nl=Math.max(Math.abs(nx),Math.abs(ny),Math.abs(nz));if(nl<1e-8){nz=1.0;ny=nx=0.0;nl=1.0;}else{nl=1.0/nl;}}else{nl=1.0/Math.sqrt(nl);}normals.set(i,j,0,nx*nl);normals.set(i,j,1,ny*nl);normals.set(i,j,2,nz*nl);}}pool.free(dfields.data);// Initialize surface\nvar lo=[Infinity,Infinity,Infinity];var hi=[-Infinity,-Infinity,-Infinity];var lo_intensity=Infinity;var hi_intensity=-Infinity;var count=(shape[0]-1)*(shape[1]-1)*6;var tverts=pool.mallocFloat(bits.nextPow2(10*count));var tptr=0;var vertexCount=0;for(i=0;i<shape[0]-1;++i){j_loop:for(j=0;j<shape[1]-1;++j){// Test for NaNs\nfor(var dx=0;dx<2;++dx){for(var dy=0;dy<2;++dy){for(var k=0;k<3;++k){var f=this._field[k].get(1+i+dx,1+j+dy);if(isNaN(f)||!isFinite(f)){continue j_loop;}}}}for(k=0;k<6;++k){var r=i+QUAD[k][0];var c=j+QUAD[k][1];var tx=this._field[0].get(r+1,c+1);var ty=this._field[1].get(r+1,c+1);f=this._field[2].get(r+1,c+1);nx=normals.get(r+1,c+1,0);ny=normals.get(r+1,c+1,1);nz=normals.get(r+1,c+1,2);if(params.intensity){vf=params.intensity.get(r,c);}var vf=params.intensity?params.intensity.get(r,c):f+this.objectOffset[2];tverts[tptr++]=r;tverts[tptr++]=c;tverts[tptr++]=tx;tverts[tptr++]=ty;tverts[tptr++]=f;tverts[tptr++]=0;tverts[tptr++]=vf;tverts[tptr++]=nx;tverts[tptr++]=ny;tverts[tptr++]=nz;lo[0]=Math.min(lo[0],tx+this.objectOffset[0]);lo[1]=Math.min(lo[1],ty+this.objectOffset[1]);lo[2]=Math.min(lo[2],f+this.objectOffset[2]);lo_intensity=Math.min(lo_intensity,vf);hi[0]=Math.max(hi[0],tx+this.objectOffset[0]);hi[1]=Math.max(hi[1],ty+this.objectOffset[1]);hi[2]=Math.max(hi[2],f+this.objectOffset[2]);hi_intensity=Math.max(hi_intensity,vf);vertexCount+=1;}}}if(params.intensityBounds){lo_intensity=+params.intensityBounds[0];hi_intensity=+params.intensityBounds[1];}// Scale all vertex intensities\nfor(i=6;i<tptr;i+=10){tverts[i]=(tverts[i]-lo_intensity)/(hi_intensity-lo_intensity);}this._vertexCount=vertexCount;this._coordinateBuffer.update(tverts.subarray(0,tptr));pool.freeFloat(tverts);pool.free(normals.data);// Update bounds\nthis.bounds=[lo,hi];// Save intensity\nthis.intensity=params.intensity||this._field[2];if(this.intensityBounds[0]!==lo_intensity||this.intensityBounds[1]!==hi_intensity){levelsChanged=true;}// Save intensity bound\nthis.intensityBounds=[lo_intensity,hi_intensity];}// Update level crossings\nif('levels'in params){var levels=params.levels;if(!Array.isArray(levels[0])){levels=[[],[],levels];}else{levels=levels.slice();}for(i=0;i<3;++i){levels[i]=levels[i].slice();levels[i].sort(function(a,b){return a-b;});}for(i=0;i<3;++i){for(j=0;j<levels[i].length;++j){levels[i][j]-=this.objectOffset[i];}}change_test:for(i=0;i<3;++i){if(levels[i].length!==this.contourLevels[i].length){levelsChanged=true;break;}for(j=0;j<levels[i].length;++j){if(levels[i][j]!==this.contourLevels[i][j]){levelsChanged=true;break change_test;}}}this.contourLevels=levels;}if(levelsChanged){fields=this._field;shape=this.shape;// Update contour lines\nvar contourVerts=[];for(var dim=0;dim<3;++dim){var contourLevel=this.contourLevels[dim];var levelOffsets=[];var levelCounts=[];var parts=[0,0,0];for(i=0;i<contourLevel.length;++i){var graph=surfaceNets(this._field[dim],contourLevel[i]);levelOffsets.push(contourVerts.length/5|0);vertexCount=0;edge_loop:for(j=0;j<graph.cells.length;++j){var e=graph.cells[j];for(k=0;k<2;++k){var p=graph.positions[e[k]];var x=p[0];var ix=Math.floor(x)|0;var fx=x-ix;var y=p[1];var iy=Math.floor(y)|0;var fy=y-iy;var hole=false;axis_loop:for(var axis=0;axis<3;++axis){parts[axis]=0.0;var iu=(dim+axis+1)%3;for(dx=0;dx<2;++dx){var s=dx?fx:1.0-fx;r=Math.min(Math.max(ix+dx,0),shape[0])|0;for(dy=0;dy<2;++dy){var t=dy?fy:1.0-fy;c=Math.min(Math.max(iy+dy,0),shape[1])|0;if(axis<2){f=this._field[iu].get(r,c);}else{f=(this.intensity.get(r,c)-this.intensityBounds[0])/(this.intensityBounds[1]-this.intensityBounds[0]);}if(!isFinite(f)||isNaN(f)){hole=true;break axis_loop;}var w=s*t;parts[axis]+=w*f;}}}if(!hole){contourVerts.push(parts[0],parts[1],p[0],p[1],parts[2]);vertexCount+=1;}else{if(k>0){// If we already added first edge, pop off verts\nfor(var l=0;l<5;++l){contourVerts.pop();}vertexCount-=1;}continue edge_loop;}}}levelCounts.push(vertexCount);}// Store results\nthis._contourOffsets[dim]=levelOffsets;this._contourCounts[dim]=levelCounts;}var floatBuffer=pool.mallocFloat(contourVerts.length);for(i=0;i<contourVerts.length;++i){floatBuffer[i]=contourVerts[i];}this._contourBuffer.update(floatBuffer);pool.freeFloat(floatBuffer);}};proto.dispose=function(){this._shader.dispose();this._vao.dispose();this._coordinateBuffer.dispose();this._colorMap.dispose();this._contourBuffer.dispose();this._contourVAO.dispose();this._contourShader.dispose();this._contourPickShader.dispose();this._dynamicBuffer.dispose();this._dynamicVAO.dispose();for(var i=0;i<3;++i){pool.freeFloat(this._field[i].data);}};proto.highlight=function(selection){var i;if(!selection){this._dynamicCounts=[0,0,0];this.dyanamicLevel=[NaN,NaN,NaN];this.highlightLevel=[-1,-1,-1];return;}for(i=0;i<3;++i){if(this.enableHighlight[i]){this.highlightLevel[i]=selection.level[i];}else{this.highlightLevel[i]=-1;}}var levels;if(this.snapToData){levels=selection.dataCoordinate;}else{levels=selection.position;}for(i=0;i<3;++i){levels[i]-=this.objectOffset[i];}if((!this.enableDynamic[0]||levels[0]===this.dynamicLevel[0])&&(!this.enableDynamic[1]||levels[1]===this.dynamicLevel[1])&&(!this.enableDynamic[2]||levels[2]===this.dynamicLevel[2])){return;}var vertexCount=0;var shape=this.shape;var scratchBuffer=pool.mallocFloat(12*shape[0]*shape[1]);for(var d=0;d<3;++d){if(!this.enableDynamic[d]){this.dynamicLevel[d]=NaN;this._dynamicCounts[d]=0;continue;}this.dynamicLevel[d]=levels[d];var u=(d+1)%3;var v=(d+2)%3;var f=this._field[d];var g=this._field[u];var h=this._field[v];var graph=surfaceNets(f,levels[d]);var edges=graph.cells;var positions=graph.positions;this._dynamicOffsets[d]=vertexCount;for(i=0;i<edges.length;++i){var e=edges[i];for(var j=0;j<2;++j){var p=positions[e[j]];var x=+p[0];var ix=x|0;var jx=Math.min(ix+1,shape[0])|0;var fx=x-ix;var hx=1.0-fx;var y=+p[1];var iy=y|0;var jy=Math.min(iy+1,shape[1])|0;var fy=y-iy;var hy=1.0-fy;var w00=hx*hy;var w01=hx*fy;var w10=fx*hy;var w11=fx*fy;var cu=w00*g.get(ix,iy)+w01*g.get(ix,jy)+w10*g.get(jx,iy)+w11*g.get(jx,jy);var cv=w00*h.get(ix,iy)+w01*h.get(ix,jy)+w10*h.get(jx,iy)+w11*h.get(jx,jy);if(isNaN(cu)||isNaN(cv)){if(j){vertexCount-=1;}break;}scratchBuffer[2*vertexCount+0]=cu;scratchBuffer[2*vertexCount+1]=cv;vertexCount+=1;}}this._dynamicCounts[d]=vertexCount-this._dynamicOffsets[d];}this._dynamicBuffer.update(scratchBuffer.subarray(0,2*vertexCount));pool.freeFloat(scratchBuffer);};function createSurfacePlot(params){var gl=params.gl;var shader=createShader(gl);var pickShader=createPickShader(gl);var contourShader=createContourShader(gl);var contourPickShader=createPickContourShader(gl);var coordinateBuffer=createBuffer(gl);var vao=createVAO(gl,[{buffer:coordinateBuffer,size:4,stride:SURFACE_VERTEX_SIZE,offset:0},{buffer:coordinateBuffer,size:3,stride:SURFACE_VERTEX_SIZE,offset:16},{buffer:coordinateBuffer,size:3,stride:SURFACE_VERTEX_SIZE,offset:28}]);var contourBuffer=createBuffer(gl);var contourVAO=createVAO(gl,[{buffer:contourBuffer,size:4,stride:20,offset:0},{buffer:contourBuffer,size:1,stride:20,offset:16}]);var dynamicBuffer=createBuffer(gl);var dynamicVAO=createVAO(gl,[{buffer:dynamicBuffer,size:2,type:gl.FLOAT}]);var cmap=createTexture(gl,1,N_COLORS,gl.RGBA,gl.UNSIGNED_BYTE);cmap.minFilter=gl.LINEAR;cmap.magFilter=gl.LINEAR;var surface=new SurfacePlot(gl,[0,0],// shape\n[[0,0,0],[0,0,0]],// bounds\nshader,pickShader,coordinateBuffer,vao,cmap,contourShader,contourPickShader,contourBuffer,contourVAO,dynamicBuffer,dynamicVAO,[0,0,0]// objectOffset\n);var nparams={levels:[[],[],[]]};for(var id in params){nparams[id]=params[id];}nparams.colormap=nparams.colormap||'jet';surface.update(nparams);return surface;}/***/},/***/8931:/***/function(module,__unused_webpack_exports,__nested_webpack_require_570467__){\"use strict\";var ndarray=__nested_webpack_require_570467__(5050);var ops=__nested_webpack_require_570467__(7498);var pool=__nested_webpack_require_570467__(5306);module.exports=createTexture2D;var linearTypes=null;var filterTypes=null;var wrapTypes=null;function lazyInitLinearTypes(gl){linearTypes=[gl.LINEAR,gl.NEAREST_MIPMAP_LINEAR,gl.LINEAR_MIPMAP_NEAREST,gl.LINEAR_MIPMAP_NEAREST];filterTypes=[gl.NEAREST,gl.LINEAR,gl.NEAREST_MIPMAP_NEAREST,gl.NEAREST_MIPMAP_LINEAR,gl.LINEAR_MIPMAP_NEAREST,gl.LINEAR_MIPMAP_LINEAR];wrapTypes=[gl.REPEAT,gl.CLAMP_TO_EDGE,gl.MIRRORED_REPEAT];}function acceptTextureDOM(obj){return'undefined'!=typeof HTMLCanvasElement&&obj instanceof HTMLCanvasElement||'undefined'!=typeof HTMLImageElement&&obj instanceof HTMLImageElement||'undefined'!=typeof HTMLVideoElement&&obj instanceof HTMLVideoElement||'undefined'!=typeof ImageData&&obj instanceof ImageData;}var convertFloatToUint8=function(out,inp){ops.muls(out,inp,255.0);};function reshapeTexture(tex,w,h){var gl=tex.gl;var maxSize=gl.getParameter(gl.MAX_TEXTURE_SIZE);if(w<0||w>maxSize||h<0||h>maxSize){throw new Error('gl-texture2d: Invalid texture size');}tex._shape=[w,h];tex.bind();gl.texImage2D(gl.TEXTURE_2D,0,tex.format,w,h,0,tex.format,tex.type,null);tex._mipLevels=[0];return tex;}function Texture2D(gl,handle,width,height,format,type){this.gl=gl;this.handle=handle;this.format=format;this.type=type;this._shape=[width,height];this._mipLevels=[0];this._magFilter=gl.NEAREST;this._minFilter=gl.NEAREST;this._wrapS=gl.CLAMP_TO_EDGE;this._wrapT=gl.CLAMP_TO_EDGE;this._anisoSamples=1;var parent=this;var wrapVector=[this._wrapS,this._wrapT];Object.defineProperties(wrapVector,[{get:function(){return parent._wrapS;},set:function(v){return parent.wrapS=v;}},{get:function(){return parent._wrapT;},set:function(v){return parent.wrapT=v;}}]);this._wrapVector=wrapVector;var shapeVector=[this._shape[0],this._shape[1]];Object.defineProperties(shapeVector,[{get:function(){return parent._shape[0];},set:function(v){return parent.width=v;}},{get:function(){return parent._shape[1];},set:function(v){return parent.height=v;}}]);this._shapeVector=shapeVector;}var proto=Texture2D.prototype;Object.defineProperties(proto,{minFilter:{get:function(){return this._minFilter;},set:function(v){this.bind();var gl=this.gl;if(this.type===gl.FLOAT&&linearTypes.indexOf(v)>=0){if(!gl.getExtension('OES_texture_float_linear')){v=gl.NEAREST;}}if(filterTypes.indexOf(v)<0){throw new Error('gl-texture2d: Unknown filter mode '+v);}gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,v);return this._minFilter=v;}},magFilter:{get:function(){return this._magFilter;},set:function(v){this.bind();var gl=this.gl;if(this.type===gl.FLOAT&&linearTypes.indexOf(v)>=0){if(!gl.getExtension('OES_texture_float_linear')){v=gl.NEAREST;}}if(filterTypes.indexOf(v)<0){throw new Error('gl-texture2d: Unknown filter mode '+v);}gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,v);return this._magFilter=v;}},mipSamples:{get:function(){return this._anisoSamples;},set:function(i){var psamples=this._anisoSamples;this._anisoSamples=Math.max(i,1)|0;if(psamples!==this._anisoSamples){var ext=this.gl.getExtension('EXT_texture_filter_anisotropic');if(ext){this.gl.texParameterf(this.gl.TEXTURE_2D,ext.TEXTURE_MAX_ANISOTROPY_EXT,this._anisoSamples);}}return this._anisoSamples;}},wrapS:{get:function(){return this._wrapS;},set:function(v){this.bind();if(wrapTypes.indexOf(v)<0){throw new Error('gl-texture2d: Unknown wrap mode '+v);}this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,v);return this._wrapS=v;}},wrapT:{get:function(){return this._wrapT;},set:function(v){this.bind();if(wrapTypes.indexOf(v)<0){throw new Error('gl-texture2d: Unknown wrap mode '+v);}this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,v);return this._wrapT=v;}},wrap:{get:function(){return this._wrapVector;},set:function(v){if(!Array.isArray(v)){v=[v,v];}if(v.length!==2){throw new Error('gl-texture2d: Must specify wrap mode for rows and columns');}for(var i=0;i<2;++i){if(wrapTypes.indexOf(v[i])<0){throw new Error('gl-texture2d: Unknown wrap mode '+v);}}this._wrapS=v[0];this._wrapT=v[1];var gl=this.gl;this.bind();gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,this._wrapS);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,this._wrapT);return v;}},shape:{get:function(){return this._shapeVector;},set:function(x){if(!Array.isArray(x)){x=[x|0,x|0];}else{if(x.length!==2){throw new Error('gl-texture2d: Invalid texture shape');}}reshapeTexture(this,x[0]|0,x[1]|0);return[x[0]|0,x[1]|0];}},width:{get:function(){return this._shape[0];},set:function(w){w=w|0;reshapeTexture(this,w,this._shape[1]);return w;}},height:{get:function(){return this._shape[1];},set:function(h){h=h|0;reshapeTexture(this,this._shape[0],h);return h;}}});proto.bind=function(unit){var gl=this.gl;if(unit!==undefined){gl.activeTexture(gl.TEXTURE0+(unit|0));}gl.bindTexture(gl.TEXTURE_2D,this.handle);if(unit!==undefined){return unit|0;}return gl.getParameter(gl.ACTIVE_TEXTURE)-gl.TEXTURE0;};proto.dispose=function(){this.gl.deleteTexture(this.handle);};proto.generateMipmap=function(){this.bind();this.gl.generateMipmap(this.gl.TEXTURE_2D);//Update mip levels\nvar l=Math.min(this._shape[0],this._shape[1]);for(var i=0;l>0;++i,l>>>=1){if(this._mipLevels.indexOf(i)<0){this._mipLevels.push(i);}}};proto.setPixels=function(data,x_off,y_off,mip_level){var gl=this.gl;this.bind();if(Array.isArray(x_off)){mip_level=y_off;y_off=x_off[1]|0;x_off=x_off[0]|0;}else{x_off=x_off||0;y_off=y_off||0;}mip_level=mip_level||0;var directData=acceptTextureDOM(data)?data:data.raw;if(directData){var needsMip=this._mipLevels.indexOf(mip_level)<0;if(needsMip){gl.texImage2D(gl.TEXTURE_2D,0,this.format,this.format,this.type,directData);this._mipLevels.push(mip_level);}else{gl.texSubImage2D(gl.TEXTURE_2D,mip_level,x_off,y_off,this.format,this.type,directData);}}else if(data.shape&&data.stride&&data.data){if(data.shape.length<2||x_off+data.shape[1]>this._shape[1]>>>mip_level||y_off+data.shape[0]>this._shape[0]>>>mip_level||x_off<0||y_off<0){throw new Error('gl-texture2d: Texture dimensions are out of bounds');}texSubImageArray(gl,x_off,y_off,mip_level,this.format,this.type,this._mipLevels,data);}else{throw new Error('gl-texture2d: Unsupported data type');}};function isPacked(shape,stride){if(shape.length===3){return stride[2]===1&&stride[1]===shape[0]*shape[2]&&stride[0]===shape[2];}return stride[0]===1&&stride[1]===shape[0];}function texSubImageArray(gl,x_off,y_off,mip_level,cformat,ctype,mipLevels,array){var dtype=array.dtype;var shape=array.shape.slice();if(shape.length<2||shape.length>3){throw new Error('gl-texture2d: Invalid ndarray, must be 2d or 3d');}var type=0,format=0;var packed=isPacked(shape,array.stride.slice());if(dtype==='float32'){type=gl.FLOAT;}else if(dtype==='float64'){type=gl.FLOAT;packed=false;dtype='float32';}else if(dtype==='uint8'){type=gl.UNSIGNED_BYTE;}else{type=gl.UNSIGNED_BYTE;packed=false;dtype='uint8';}var channels=1;if(shape.length===2){format=gl.LUMINANCE;shape=[shape[0],shape[1],1];array=ndarray(array.data,shape,[array.stride[0],array.stride[1],1],array.offset);}else if(shape.length===3){if(shape[2]===1){format=gl.ALPHA;}else if(shape[2]===2){format=gl.LUMINANCE_ALPHA;}else if(shape[2]===3){format=gl.RGB;}else if(shape[2]===4){format=gl.RGBA;}else{throw new Error('gl-texture2d: Invalid shape for pixel coords');}channels=shape[2];}else{throw new Error('gl-texture2d: Invalid shape for texture');}//For 1-channel textures allow conversion between formats\nif((format===gl.LUMINANCE||format===gl.ALPHA)&&(cformat===gl.LUMINANCE||cformat===gl.ALPHA)){format=cformat;}if(format!==cformat){throw new Error('gl-texture2d: Incompatible texture format for setPixels');}var size=array.size;var needsMip=mipLevels.indexOf(mip_level)<0;if(needsMip){mipLevels.push(mip_level);}if(type===ctype&&packed){//Array data types are compatible, can directly copy into texture\nif(array.offset===0&&array.data.length===size){if(needsMip){gl.texImage2D(gl.TEXTURE_2D,mip_level,cformat,shape[0],shape[1],0,cformat,ctype,array.data);}else{gl.texSubImage2D(gl.TEXTURE_2D,mip_level,x_off,y_off,shape[0],shape[1],cformat,ctype,array.data);}}else{if(needsMip){gl.texImage2D(gl.TEXTURE_2D,mip_level,cformat,shape[0],shape[1],0,cformat,ctype,array.data.subarray(array.offset,array.offset+size));}else{gl.texSubImage2D(gl.TEXTURE_2D,mip_level,x_off,y_off,shape[0],shape[1],cformat,ctype,array.data.subarray(array.offset,array.offset+size));}}}else{//Need to do type conversion to pack data into buffer\nvar pack_buffer;if(ctype===gl.FLOAT){pack_buffer=pool.mallocFloat32(size);}else{pack_buffer=pool.mallocUint8(size);}var pack_view=ndarray(pack_buffer,shape,[shape[2],shape[2]*shape[0],1]);if(type===gl.FLOAT&&ctype===gl.UNSIGNED_BYTE){convertFloatToUint8(pack_view,array);}else{ops.assign(pack_view,array);}if(needsMip){gl.texImage2D(gl.TEXTURE_2D,mip_level,cformat,shape[0],shape[1],0,cformat,ctype,pack_buffer.subarray(0,size));}else{gl.texSubImage2D(gl.TEXTURE_2D,mip_level,x_off,y_off,shape[0],shape[1],cformat,ctype,pack_buffer.subarray(0,size));}if(ctype===gl.FLOAT){pool.freeFloat32(pack_buffer);}else{pool.freeUint8(pack_buffer);}}}function initTexture(gl){var tex=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,tex);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);return tex;}function createTextureShape(gl,width,height,format,type){var maxTextureSize=gl.getParameter(gl.MAX_TEXTURE_SIZE);if(width<0||width>maxTextureSize||height<0||height>maxTextureSize){throw new Error('gl-texture2d: Invalid texture shape');}if(type===gl.FLOAT&&!gl.getExtension('OES_texture_float')){throw new Error('gl-texture2d: Floating point textures not supported on this platform');}var tex=initTexture(gl);gl.texImage2D(gl.TEXTURE_2D,0,format,width,height,0,format,type,null);return new Texture2D(gl,tex,width,height,format,type);}function createTextureDOM(gl,directData,width,height,format,type){var tex=initTexture(gl);gl.texImage2D(gl.TEXTURE_2D,0,format,format,type,directData);return new Texture2D(gl,tex,width,height,format,type);}//Creates a texture from an ndarray\nfunction createTextureArray(gl,array){var dtype=array.dtype;var shape=array.shape.slice();var maxSize=gl.getParameter(gl.MAX_TEXTURE_SIZE);if(shape[0]<0||shape[0]>maxSize||shape[1]<0||shape[1]>maxSize){throw new Error('gl-texture2d: Invalid texture size');}var packed=isPacked(shape,array.stride.slice());var type=0;if(dtype==='float32'){type=gl.FLOAT;}else if(dtype==='float64'){type=gl.FLOAT;packed=false;dtype='float32';}else if(dtype==='uint8'){type=gl.UNSIGNED_BYTE;}else{type=gl.UNSIGNED_BYTE;packed=false;dtype='uint8';}var format=0;if(shape.length===2){format=gl.LUMINANCE;shape=[shape[0],shape[1],1];array=ndarray(array.data,shape,[array.stride[0],array.stride[1],1],array.offset);}else if(shape.length===3){if(shape[2]===1){format=gl.ALPHA;}else if(shape[2]===2){format=gl.LUMINANCE_ALPHA;}else if(shape[2]===3){format=gl.RGB;}else if(shape[2]===4){format=gl.RGBA;}else{throw new Error('gl-texture2d: Invalid shape for pixel coords');}}else{throw new Error('gl-texture2d: Invalid shape for texture');}if(type===gl.FLOAT&&!gl.getExtension('OES_texture_float')){type=gl.UNSIGNED_BYTE;packed=false;}var buffer,buf_store;var size=array.size;if(!packed){var stride=[shape[2],shape[2]*shape[0],1];buf_store=pool.malloc(size,dtype);var buf_array=ndarray(buf_store,shape,stride,0);if((dtype==='float32'||dtype==='float64')&&type===gl.UNSIGNED_BYTE){convertFloatToUint8(buf_array,array);}else{ops.assign(buf_array,array);}buffer=buf_store.subarray(0,size);}else if(array.offset===0&&array.data.length===size){buffer=array.data;}else{buffer=array.data.subarray(array.offset,array.offset+size);}var tex=initTexture(gl);gl.texImage2D(gl.TEXTURE_2D,0,format,shape[0],shape[1],0,format,type,buffer);if(!packed){pool.free(buf_store);}return new Texture2D(gl,tex,shape[0],shape[1],format,type);}function createTexture2D(gl){if(arguments.length<=1){throw new Error('gl-texture2d: Missing arguments for texture2d constructor');}if(!linearTypes){lazyInitLinearTypes(gl);}if(typeof arguments[1]==='number'){return createTextureShape(gl,arguments[1],arguments[2],arguments[3]||gl.RGBA,arguments[4]||gl.UNSIGNED_BYTE);}if(Array.isArray(arguments[1])){return createTextureShape(gl,arguments[1][0]|0,arguments[1][1]|0,arguments[2]||gl.RGBA,arguments[3]||gl.UNSIGNED_BYTE);}if(typeof arguments[1]==='object'){var obj=arguments[1];var directData=acceptTextureDOM(obj)?obj:obj.raw;if(directData){return createTextureDOM(gl,directData,obj.width|0,obj.height|0,arguments[2]||gl.RGBA,arguments[3]||gl.UNSIGNED_BYTE);}else if(obj.shape&&obj.data&&obj.stride){return createTextureArray(gl,obj);}}throw new Error('gl-texture2d: Invalid arguments for texture2d constructor');}/***/},/***/3056:/***/function(module){\"use strict\";function doBind(gl,elements,attributes){if(elements){elements.bind();}else{gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,null);}var nattribs=gl.getParameter(gl.MAX_VERTEX_ATTRIBS)|0;if(attributes){if(attributes.length>nattribs){throw new Error(\"gl-vao: Too many vertex attributes\");}for(var i=0;i<attributes.length;++i){var attrib=attributes[i];if(attrib.buffer){var buffer=attrib.buffer;var size=attrib.size||4;var type=attrib.type||gl.FLOAT;var normalized=!!attrib.normalized;var stride=attrib.stride||0;var offset=attrib.offset||0;buffer.bind();gl.enableVertexAttribArray(i);gl.vertexAttribPointer(i,size,type,normalized,stride,offset);}else{if(typeof attrib===\"number\"){gl.vertexAttrib1f(i,attrib);}else if(attrib.length===1){gl.vertexAttrib1f(i,attrib[0]);}else if(attrib.length===2){gl.vertexAttrib2f(i,attrib[0],attrib[1]);}else if(attrib.length===3){gl.vertexAttrib3f(i,attrib[0],attrib[1],attrib[2]);}else if(attrib.length===4){gl.vertexAttrib4f(i,attrib[0],attrib[1],attrib[2],attrib[3]);}else{throw new Error(\"gl-vao: Invalid vertex attribute\");}gl.disableVertexAttribArray(i);}}for(;i<nattribs;++i){gl.disableVertexAttribArray(i);}}else{gl.bindBuffer(gl.ARRAY_BUFFER,null);for(var i=0;i<nattribs;++i){gl.disableVertexAttribArray(i);}}}module.exports=doBind;/***/},/***/7220:/***/function(module,__unused_webpack_exports,__nested_webpack_require_584794__){\"use strict\";var bindAttribs=__nested_webpack_require_584794__(3056);function VAOEmulated(gl){this.gl=gl;this._elements=null;this._attributes=null;this._elementsType=gl.UNSIGNED_SHORT;}VAOEmulated.prototype.bind=function(){bindAttribs(this.gl,this._elements,this._attributes);};VAOEmulated.prototype.update=function(attributes,elements,elementsType){this._elements=elements;this._attributes=attributes;this._elementsType=elementsType||this.gl.UNSIGNED_SHORT;};VAOEmulated.prototype.dispose=function(){};VAOEmulated.prototype.unbind=function(){};VAOEmulated.prototype.draw=function(mode,count,offset){offset=offset||0;var gl=this.gl;if(this._elements){gl.drawElements(mode,count,this._elementsType,offset);}else{gl.drawArrays(mode,offset,count);}};function createVAOEmulated(gl){return new VAOEmulated(gl);}module.exports=createVAOEmulated;/***/},/***/3778:/***/function(module,__unused_webpack_exports,__nested_webpack_require_585703__){\"use strict\";var bindAttribs=__nested_webpack_require_585703__(3056);function VertexAttribute(location,dimension,a,b,c,d){this.location=location;this.dimension=dimension;this.a=a;this.b=b;this.c=c;this.d=d;}VertexAttribute.prototype.bind=function(gl){switch(this.dimension){case 1:gl.vertexAttrib1f(this.location,this.a);break;case 2:gl.vertexAttrib2f(this.location,this.a,this.b);break;case 3:gl.vertexAttrib3f(this.location,this.a,this.b,this.c);break;case 4:gl.vertexAttrib4f(this.location,this.a,this.b,this.c,this.d);break;}};function VAONative(gl,ext,handle){this.gl=gl;this._ext=ext;this.handle=handle;this._attribs=[];this._useElements=false;this._elementsType=gl.UNSIGNED_SHORT;}VAONative.prototype.bind=function(){this._ext.bindVertexArrayOES(this.handle);for(var i=0;i<this._attribs.length;++i){this._attribs[i].bind(this.gl);}};VAONative.prototype.unbind=function(){this._ext.bindVertexArrayOES(null);};VAONative.prototype.dispose=function(){this._ext.deleteVertexArrayOES(this.handle);};VAONative.prototype.update=function(attributes,elements,elementsType){this.bind();bindAttribs(this.gl,elements,attributes);this.unbind();this._attribs.length=0;if(attributes)for(var i=0;i<attributes.length;++i){var a=attributes[i];if(typeof a===\"number\"){this._attribs.push(new VertexAttribute(i,1,a));}else if(Array.isArray(a)){this._attribs.push(new VertexAttribute(i,a.length,a[0],a[1],a[2],a[3]));}}this._useElements=!!elements;this._elementsType=elementsType||this.gl.UNSIGNED_SHORT;};VAONative.prototype.draw=function(mode,count,offset){offset=offset||0;var gl=this.gl;if(this._useElements){gl.drawElements(mode,count,this._elementsType,offset);}else{gl.drawArrays(mode,offset,count);}};function createVAONative(gl,ext){return new VAONative(gl,ext,ext.createVertexArrayOES());}module.exports=createVAONative;/***/},/***/2944:/***/function(module,__unused_webpack_exports,__nested_webpack_require_587587__){\"use strict\";var createVAONative=__nested_webpack_require_587587__(3778);var createVAOEmulated=__nested_webpack_require_587587__(7220);function ExtensionShim(gl){this.bindVertexArrayOES=gl.bindVertexArray.bind(gl);this.createVertexArrayOES=gl.createVertexArray.bind(gl);this.deleteVertexArrayOES=gl.deleteVertexArray.bind(gl);}function createVAO(gl,attributes,elements,elementsType){var ext=gl.createVertexArray?new ExtensionShim(gl):gl.getExtension('OES_vertex_array_object');var vao;if(ext){vao=createVAONative(gl,ext);}else{vao=createVAOEmulated(gl);}vao.update(attributes,elements,elementsType);return vao;}module.exports=createVAO;/***/},/***/2598:/***/function(module){module.exports=add;/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */function add(out,a,b){out[0]=a[0]+b[0];out[1]=a[1]+b[1];out[2]=a[2]+b[2];return out;}/***/},/***/5879:/***/function(module,__unused_webpack_exports,__nested_webpack_require_588591__){module.exports=angle;var fromValues=__nested_webpack_require_588591__(5415);var normalize=__nested_webpack_require_588591__(899);var dot=__nested_webpack_require_588591__(9305);/**\n * Get the angle between two 3D vectors\n * @param {vec3} a The first operand\n * @param {vec3} b The second operand\n * @returns {Number} The angle in radians\n */function angle(a,b){var tempA=fromValues(a[0],a[1],a[2]);var tempB=fromValues(b[0],b[1],b[2]);normalize(tempA,tempA);normalize(tempB,tempB);var cosine=dot(tempA,tempB);if(cosine>1.0){return 0;}else{return Math.acos(cosine);}}/***/},/***/8827:/***/function(module){module.exports=ceil;/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to ceil\n * @returns {vec3} out\n */function ceil(out,a){out[0]=Math.ceil(a[0]);out[1]=Math.ceil(a[1]);out[2]=Math.ceil(a[2]);return out;}/***/},/***/7622:/***/function(module){module.exports=clone;/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {vec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */function clone(a){var out=new Float32Array(3);out[0]=a[0];out[1]=a[1];out[2]=a[2];return out;}/***/},/***/8782:/***/function(module){module.exports=copy;/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the source vector\n * @returns {vec3} out\n */function copy(out,a){out[0]=a[0];out[1]=a[1];out[2]=a[2];return out;}/***/},/***/8501:/***/function(module){module.exports=create;/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */function create(){var out=new Float32Array(3);out[0]=0;out[1]=0;out[2]=0;return out;}/***/},/***/903:/***/function(module){module.exports=cross;/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */function cross(out,a,b){var ax=a[0],ay=a[1],az=a[2],bx=b[0],by=b[1],bz=b[2];out[0]=ay*bz-az*by;out[1]=az*bx-ax*bz;out[2]=ax*by-ay*bx;return out;}/***/},/***/5981:/***/function(module,__unused_webpack_exports,__nested_webpack_require_590713__){module.exports=__nested_webpack_require_590713__(8288);/***/},/***/8288:/***/function(module){module.exports=distance;/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {Number} distance between a and b\n */function distance(a,b){var x=b[0]-a[0],y=b[1]-a[1],z=b[2]-a[2];return Math.sqrt(x*x+y*y+z*z);}/***/},/***/8629:/***/function(module,__unused_webpack_exports,__nested_webpack_require_591182__){module.exports=__nested_webpack_require_591182__(7979);/***/},/***/7979:/***/function(module){module.exports=divide;/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */function divide(out,a,b){out[0]=a[0]/b[0];out[1]=a[1]/b[1];out[2]=a[2]/b[2];return out;}/***/},/***/9305:/***/function(module){module.exports=dot;/**\n * Calculates the dot product of two vec3's\n *\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {Number} dot product of a and b\n */function dot(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2];}/***/},/***/154:/***/function(module){module.exports=0.000001;/***/},/***/4932:/***/function(module,__unused_webpack_exports,__nested_webpack_require_591977__){module.exports=equals;var EPSILON=__nested_webpack_require_591977__(154);/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {vec3} a The first vector.\n * @param {vec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */function equals(a,b){var a0=a[0];var a1=a[1];var a2=a[2];var b0=b[0];var b1=b[1];var b2=b[2];return Math.abs(a0-b0)<=EPSILON*Math.max(1.0,Math.abs(a0),Math.abs(b0))&&Math.abs(a1-b1)<=EPSILON*Math.max(1.0,Math.abs(a1),Math.abs(b1))&&Math.abs(a2-b2)<=EPSILON*Math.max(1.0,Math.abs(a2),Math.abs(b2));}/***/},/***/5777:/***/function(module){module.exports=exactEquals;/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {vec3} a The first vector.\n * @param {vec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */function exactEquals(a,b){return a[0]===b[0]&&a[1]===b[1]&&a[2]===b[2];}/***/},/***/3306:/***/function(module){module.exports=floor;/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to floor\n * @returns {vec3} out\n */function floor(out,a){out[0]=Math.floor(a[0]);out[1]=Math.floor(a[1]);out[2]=Math.floor(a[2]);return out;}/***/},/***/7447:/***/function(module,__unused_webpack_exports,__nested_webpack_require_593393__){module.exports=forEach;var vec=__nested_webpack_require_593393__(8501)();/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */function forEach(a,stride,offset,count,fn,arg){var i,l;if(!stride){stride=3;}if(!offset){offset=0;}if(count){l=Math.min(count*stride+offset,a.length);}else{l=a.length;}for(i=offset;i<l;i+=stride){vec[0]=a[i];vec[1]=a[i+1];vec[2]=a[i+2];fn(vec,vec,arg);a[i]=vec[0];a[i+1]=vec[1];a[i+2]=vec[2];}return a;}/***/},/***/5415:/***/function(module){module.exports=fromValues;/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */function fromValues(x,y,z){var out=new Float32Array(3);out[0]=x;out[1]=y;out[2]=z;return out;}/***/},/***/2858:/***/function(module,__unused_webpack_exports,__nested_webpack_require_594757__){module.exports={EPSILON:__nested_webpack_require_594757__(154),create:__nested_webpack_require_594757__(8501),clone:__nested_webpack_require_594757__(7622),angle:__nested_webpack_require_594757__(5879),fromValues:__nested_webpack_require_594757__(5415),copy:__nested_webpack_require_594757__(8782),set:__nested_webpack_require_594757__(831),equals:__nested_webpack_require_594757__(4932),exactEquals:__nested_webpack_require_594757__(5777),add:__nested_webpack_require_594757__(2598),subtract:__nested_webpack_require_594757__(911),sub:__nested_webpack_require_594757__(8921),multiply:__nested_webpack_require_594757__(105),mul:__nested_webpack_require_594757__(5733),divide:__nested_webpack_require_594757__(7979),div:__nested_webpack_require_594757__(8629),min:__nested_webpack_require_594757__(3605),max:__nested_webpack_require_594757__(1716),floor:__nested_webpack_require_594757__(3306),ceil:__nested_webpack_require_594757__(8827),round:__nested_webpack_require_594757__(1624),scale:__nested_webpack_require_594757__(5685),scaleAndAdd:__nested_webpack_require_594757__(6722),distance:__nested_webpack_require_594757__(8288),dist:__nested_webpack_require_594757__(5981),squaredDistance:__nested_webpack_require_594757__(6403),sqrDist:__nested_webpack_require_594757__(5294),length:__nested_webpack_require_594757__(4693),len:__nested_webpack_require_594757__(1468),squaredLength:__nested_webpack_require_594757__(4337),sqrLen:__nested_webpack_require_594757__(3303),negate:__nested_webpack_require_594757__(435),inverse:__nested_webpack_require_594757__(2073),normalize:__nested_webpack_require_594757__(899),dot:__nested_webpack_require_594757__(9305),cross:__nested_webpack_require_594757__(903),lerp:__nested_webpack_require_594757__(1868),random:__nested_webpack_require_594757__(6660),transformMat4:__nested_webpack_require_594757__(3255),transformMat3:__nested_webpack_require_594757__(9908),transformQuat:__nested_webpack_require_594757__(6568),rotateX:__nested_webpack_require_594757__(392),rotateY:__nested_webpack_require_594757__(3222),rotateZ:__nested_webpack_require_594757__(3388),forEach:__nested_webpack_require_594757__(7447)};/***/},/***/2073:/***/function(module){module.exports=inverse;/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to invert\n * @returns {vec3} out\n */function inverse(out,a){out[0]=1.0/a[0];out[1]=1.0/a[1];out[2]=1.0/a[2];return out;}/***/},/***/1468:/***/function(module,__unused_webpack_exports,__nested_webpack_require_596669__){module.exports=__nested_webpack_require_596669__(4693);/***/},/***/4693:/***/function(module){module.exports=length;/**\n * Calculates the length of a vec3\n *\n * @param {vec3} a vector to calculate length of\n * @returns {Number} length of a\n */function length(a){var x=a[0],y=a[1],z=a[2];return Math.sqrt(x*x+y*y+z*z);}/***/},/***/1868:/***/function(module){module.exports=lerp;/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {vec3} out\n */function lerp(out,a,b,t){var ax=a[0],ay=a[1],az=a[2];out[0]=ax+t*(b[0]-ax);out[1]=ay+t*(b[1]-ay);out[2]=az+t*(b[2]-az);return out;}/***/},/***/1716:/***/function(module){module.exports=max;/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */function max(out,a,b){out[0]=Math.max(a[0],b[0]);out[1]=Math.max(a[1],b[1]);out[2]=Math.max(a[2],b[2]);return out;}/***/},/***/3605:/***/function(module){module.exports=min;/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */function min(out,a,b){out[0]=Math.min(a[0],b[0]);out[1]=Math.min(a[1],b[1]);out[2]=Math.min(a[2],b[2]);return out;}/***/},/***/5733:/***/function(module,__unused_webpack_exports,__nested_webpack_require_598236__){module.exports=__nested_webpack_require_598236__(105);/***/},/***/105:/***/function(module){module.exports=multiply;/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */function multiply(out,a,b){out[0]=a[0]*b[0];out[1]=a[1]*b[1];out[2]=a[2]*b[2];return out;}/***/},/***/435:/***/function(module){module.exports=negate;/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to negate\n * @returns {vec3} out\n */function negate(out,a){out[0]=-a[0];out[1]=-a[1];out[2]=-a[2];return out;}/***/},/***/899:/***/function(module){module.exports=normalize;/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to normalize\n * @returns {vec3} out\n */function normalize(out,a){var x=a[0],y=a[1],z=a[2];var len=x*x+y*y+z*z;if(len>0){//TODO: evaluate use of glm_invsqrt here?\nlen=1/Math.sqrt(len);out[0]=a[0]*len;out[1]=a[1]*len;out[2]=a[2]*len;}return out;}/***/},/***/6660:/***/function(module){module.exports=random;/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */function random(out,scale){scale=scale||1.0;var r=Math.random()*2.0*Math.PI;var z=Math.random()*2.0-1.0;var zScale=Math.sqrt(1.0-z*z)*scale;out[0]=Math.cos(r)*zScale;out[1]=Math.sin(r)*zScale;out[2]=z*scale;return out;}/***/},/***/392:/***/function(module){module.exports=rotateX;/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {vec3} a The vec3 point to rotate\n * @param {vec3} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @returns {vec3} out\n */function rotateX(out,a,b,c){var by=b[1];var bz=b[2];// Translate point to the origin\nvar py=a[1]-by;var pz=a[2]-bz;var sc=Math.sin(c);var cc=Math.cos(c);// perform rotation and translate to correct position\nout[0]=a[0];out[1]=by+py*cc-pz*sc;out[2]=bz+py*sc+pz*cc;return out;}/***/},/***/3222:/***/function(module){module.exports=rotateY;/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {vec3} a The vec3 point to rotate\n * @param {vec3} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @returns {vec3} out\n */function rotateY(out,a,b,c){var bx=b[0];var bz=b[2];// translate point to the origin\nvar px=a[0]-bx;var pz=a[2]-bz;var sc=Math.sin(c);var cc=Math.cos(c);// perform rotation and translate to correct position\nout[0]=bx+pz*sc+px*cc;out[1]=a[1];out[2]=bz+pz*cc-px*sc;return out;}/***/},/***/3388:/***/function(module){module.exports=rotateZ;/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {vec3} a The vec3 point to rotate\n * @param {vec3} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @returns {vec3} out\n */function rotateZ(out,a,b,c){var bx=b[0];var by=b[1];//Translate point to the origin\nvar px=a[0]-bx;var py=a[1]-by;var sc=Math.sin(c);var cc=Math.cos(c);// perform rotation and translate to correct position\nout[0]=bx+px*cc-py*sc;out[1]=by+px*sc+py*cc;out[2]=a[2];return out;}/***/},/***/1624:/***/function(module){module.exports=round;/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to round\n * @returns {vec3} out\n */function round(out,a){out[0]=Math.round(a[0]);out[1]=Math.round(a[1]);out[2]=Math.round(a[2]);return out;}/***/},/***/5685:/***/function(module){module.exports=scale;/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */function scale(out,a,b){out[0]=a[0]*b;out[1]=a[1]*b;out[2]=a[2]*b;return out;}/***/},/***/6722:/***/function(module){module.exports=scaleAndAdd;/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */function scaleAndAdd(out,a,b,scale){out[0]=a[0]+b[0]*scale;out[1]=a[1]+b[1]*scale;out[2]=a[2]+b[2]*scale;return out;}/***/},/***/831:/***/function(module){module.exports=set;/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */function set(out,x,y,z){out[0]=x;out[1]=y;out[2]=z;return out;}/***/},/***/5294:/***/function(module,__unused_webpack_exports,__nested_webpack_require_603083__){module.exports=__nested_webpack_require_603083__(6403);/***/},/***/3303:/***/function(module,__unused_webpack_exports,__nested_webpack_require_603208__){module.exports=__nested_webpack_require_603208__(4337);/***/},/***/6403:/***/function(module){module.exports=squaredDistance;/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {Number} squared distance between a and b\n */function squaredDistance(a,b){var x=b[0]-a[0],y=b[1]-a[1],z=b[2]-a[2];return x*x+y*y+z*z;}/***/},/***/4337:/***/function(module){module.exports=squaredLength;/**\n * Calculates the squared length of a vec3\n *\n * @param {vec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */function squaredLength(a){var x=a[0],y=a[1],z=a[2];return x*x+y*y+z*z;}/***/},/***/8921:/***/function(module,__unused_webpack_exports,__nested_webpack_require_603986__){module.exports=__nested_webpack_require_603986__(911);/***/},/***/911:/***/function(module){module.exports=subtract;/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */function subtract(out,a,b){out[0]=a[0]-b[0];out[1]=a[1]-b[1];out[2]=a[2]-b[2];return out;}/***/},/***/9908:/***/function(module){module.exports=transformMat3;/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to transform\n * @param {mat4} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */function transformMat3(out,a,m){var x=a[0],y=a[1],z=a[2];out[0]=x*m[0]+y*m[3]+z*m[6];out[1]=x*m[1]+y*m[4]+z*m[7];out[2]=x*m[2]+y*m[5]+z*m[8];return out;}/***/},/***/3255:/***/function(module){module.exports=transformMat4;/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to transform\n * @param {mat4} m matrix to transform with\n * @returns {vec3} out\n */function transformMat4(out,a,m){var x=a[0],y=a[1],z=a[2],w=m[3]*x+m[7]*y+m[11]*z+m[15];w=w||1.0;out[0]=(m[0]*x+m[4]*y+m[8]*z+m[12])/w;out[1]=(m[1]*x+m[5]*y+m[9]*z+m[13])/w;out[2]=(m[2]*x+m[6]*y+m[10]*z+m[14])/w;return out;}/***/},/***/6568:/***/function(module){module.exports=transformQuat;/**\n * Transforms the vec3 with a quat\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to transform\n * @param {quat} q quaternion to transform with\n * @returns {vec3} out\n */function transformQuat(out,a,q){// benchmarks: http://jsperf.com/quaternion-transform-vec3-implementations\nvar x=a[0],y=a[1],z=a[2],qx=q[0],qy=q[1],qz=q[2],qw=q[3],// calculate quat * vec\nix=qw*x+qy*z-qz*y,iy=qw*y+qz*x-qx*z,iz=qw*z+qx*y-qy*x,iw=-qx*x-qy*y-qz*z;// calculate result * inverse quat\nout[0]=ix*qw+iw*-qx+iy*-qz-iz*-qy;out[1]=iy*qw+iw*-qy+iz*-qx-ix*-qz;out[2]=iz*qw+iw*-qz+ix*-qy-iy*-qx;return out;}/***/},/***/3433:/***/function(module){module.exports=add;/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */function add(out,a,b){out[0]=a[0]+b[0];out[1]=a[1]+b[1];out[2]=a[2]+b[2];out[3]=a[3]+b[3];return out;}/***/},/***/1413:/***/function(module){module.exports=clone;/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {vec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */function clone(a){var out=new Float32Array(4);out[0]=a[0];out[1]=a[1];out[2]=a[2];out[3]=a[3];return out;}/***/},/***/3470:/***/function(module){module.exports=copy;/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the source vector\n * @returns {vec4} out\n */function copy(out,a){out[0]=a[0];out[1]=a[1];out[2]=a[2];out[3]=a[3];return out;}/***/},/***/5313:/***/function(module){module.exports=create;/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */function create(){var out=new Float32Array(4);out[0]=0;out[1]=0;out[2]=0;out[3]=0;return out;}/***/},/***/5446:/***/function(module){module.exports=distance;/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {Number} distance between a and b\n */function distance(a,b){var x=b[0]-a[0],y=b[1]-a[1],z=b[2]-a[2],w=b[3]-a[3];return Math.sqrt(x*x+y*y+z*z+w*w);}/***/},/***/205:/***/function(module){module.exports=divide;/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */function divide(out,a,b){out[0]=a[0]/b[0];out[1]=a[1]/b[1];out[2]=a[2]/b[2];out[3]=a[3]/b[3];return out;}/***/},/***/4242:/***/function(module){module.exports=dot;/**\n * Calculates the dot product of two vec4's\n *\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {Number} dot product of a and b\n */function dot(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3];}/***/},/***/5680:/***/function(module){module.exports=fromValues;/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */function fromValues(x,y,z,w){var out=new Float32Array(4);out[0]=x;out[1]=y;out[2]=z;out[3]=w;return out;}/***/},/***/4020:/***/function(module,__unused_webpack_exports,__nested_webpack_require_608652__){module.exports={create:__nested_webpack_require_608652__(5313),clone:__nested_webpack_require_608652__(1413),fromValues:__nested_webpack_require_608652__(5680),copy:__nested_webpack_require_608652__(3470),set:__nested_webpack_require_608652__(6453),add:__nested_webpack_require_608652__(3433),subtract:__nested_webpack_require_608652__(2705),multiply:__nested_webpack_require_608652__(746),divide:__nested_webpack_require_608652__(205),min:__nested_webpack_require_608652__(2170),max:__nested_webpack_require_608652__(3030),scale:__nested_webpack_require_608652__(5510),scaleAndAdd:__nested_webpack_require_608652__(4224),distance:__nested_webpack_require_608652__(5446),squaredDistance:__nested_webpack_require_608652__(1542),length:__nested_webpack_require_608652__(8177),squaredLength:__nested_webpack_require_608652__(9037),negate:__nested_webpack_require_608652__(6459),inverse:__nested_webpack_require_608652__(8057),normalize:__nested_webpack_require_608652__(381),dot:__nested_webpack_require_608652__(4242),lerp:__nested_webpack_require_608652__(8746),random:__nested_webpack_require_608652__(3770),transformMat4:__nested_webpack_require_608652__(6342),transformQuat:__nested_webpack_require_608652__(5022)};/***/},/***/8057:/***/function(module){module.exports=inverse;/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a vector to invert\n * @returns {vec4} out\n */function inverse(out,a){out[0]=1.0/a[0];out[1]=1.0/a[1];out[2]=1.0/a[2];out[3]=1.0/a[3];return out;}/***/},/***/8177:/***/function(module){module.exports=length;/**\n * Calculates the length of a vec4\n *\n * @param {vec4} a vector to calculate length of\n * @returns {Number} length of a\n */function length(a){var x=a[0],y=a[1],z=a[2],w=a[3];return Math.sqrt(x*x+y*y+z*z+w*w);}/***/},/***/8746:/***/function(module){module.exports=lerp;/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {vec4} out\n */function lerp(out,a,b,t){var ax=a[0],ay=a[1],az=a[2],aw=a[3];out[0]=ax+t*(b[0]-ax);out[1]=ay+t*(b[1]-ay);out[2]=az+t*(b[2]-az);out[3]=aw+t*(b[3]-aw);return out;}/***/},/***/3030:/***/function(module){module.exports=max;/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */function max(out,a,b){out[0]=Math.max(a[0],b[0]);out[1]=Math.max(a[1],b[1]);out[2]=Math.max(a[2],b[2]);out[3]=Math.max(a[3],b[3]);return out;}/***/},/***/2170:/***/function(module){module.exports=min;/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */function min(out,a,b){out[0]=Math.min(a[0],b[0]);out[1]=Math.min(a[1],b[1]);out[2]=Math.min(a[2],b[2]);out[3]=Math.min(a[3],b[3]);return out;}/***/},/***/746:/***/function(module){module.exports=multiply;/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */function multiply(out,a,b){out[0]=a[0]*b[0];out[1]=a[1]*b[1];out[2]=a[2]*b[2];out[3]=a[3]*b[3];return out;}/***/},/***/6459:/***/function(module){module.exports=negate;/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a vector to negate\n * @returns {vec4} out\n */function negate(out,a){out[0]=-a[0];out[1]=-a[1];out[2]=-a[2];out[3]=-a[3];return out;}/***/},/***/381:/***/function(module){module.exports=normalize;/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a vector to normalize\n * @returns {vec4} out\n */function normalize(out,a){var x=a[0],y=a[1],z=a[2],w=a[3];var len=x*x+y*y+z*z+w*w;if(len>0){len=1/Math.sqrt(len);out[0]=x*len;out[1]=y*len;out[2]=z*len;out[3]=w*len;}return out;}/***/},/***/3770:/***/function(module,__unused_webpack_exports,__nested_webpack_require_612478__){var vecNormalize=__nested_webpack_require_612478__(381);var vecScale=__nested_webpack_require_612478__(5510);module.exports=random;/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */function random(out,scale){scale=scale||1.0;// TODO: This is a pretty awful way of doing this. Find something better.\nout[0]=Math.random();out[1]=Math.random();out[2]=Math.random();out[3]=Math.random();vecNormalize(out,out);vecScale(out,out,scale);return out;}/***/},/***/5510:/***/function(module){module.exports=scale;/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */function scale(out,a,b){out[0]=a[0]*b;out[1]=a[1]*b;out[2]=a[2]*b;out[3]=a[3]*b;return out;}/***/},/***/4224:/***/function(module){module.exports=scaleAndAdd;/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */function scaleAndAdd(out,a,b,scale){out[0]=a[0]+b[0]*scale;out[1]=a[1]+b[1]*scale;out[2]=a[2]+b[2]*scale;out[3]=a[3]+b[3]*scale;return out;}/***/},/***/6453:/***/function(module){module.exports=set;/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */function set(out,x,y,z,w){out[0]=x;out[1]=y;out[2]=z;out[3]=w;return out;}/***/},/***/1542:/***/function(module){module.exports=squaredDistance;/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {Number} squared distance between a and b\n */function squaredDistance(a,b){var x=b[0]-a[0],y=b[1]-a[1],z=b[2]-a[2],w=b[3]-a[3];return x*x+y*y+z*z+w*w;}/***/},/***/9037:/***/function(module){module.exports=squaredLength;/**\n * Calculates the squared length of a vec4\n *\n * @param {vec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */function squaredLength(a){var x=a[0],y=a[1],z=a[2],w=a[3];return x*x+y*y+z*z+w*w;}/***/},/***/2705:/***/function(module){module.exports=subtract;/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */function subtract(out,a,b){out[0]=a[0]-b[0];out[1]=a[1]-b[1];out[2]=a[2]-b[2];out[3]=a[3]-b[3];return out;}/***/},/***/6342:/***/function(module){module.exports=transformMat4;/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the vector to transform\n * @param {mat4} m matrix to transform with\n * @returns {vec4} out\n */function transformMat4(out,a,m){var x=a[0],y=a[1],z=a[2],w=a[3];out[0]=m[0]*x+m[4]*y+m[8]*z+m[12]*w;out[1]=m[1]*x+m[5]*y+m[9]*z+m[13]*w;out[2]=m[2]*x+m[6]*y+m[10]*z+m[14]*w;out[3]=m[3]*x+m[7]*y+m[11]*z+m[15]*w;return out;}/***/},/***/5022:/***/function(module){module.exports=transformQuat;/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the vector to transform\n * @param {quat} q quaternion to transform with\n * @returns {vec4} out\n */function transformQuat(out,a,q){var x=a[0],y=a[1],z=a[2],qx=q[0],qy=q[1],qz=q[2],qw=q[3],// calculate quat * vec\nix=qw*x+qy*z-qz*y,iy=qw*y+qz*x-qx*z,iz=qw*z+qx*y-qy*x,iw=-qx*x-qy*y-qz*z;// calculate result * inverse quat\nout[0]=ix*qw+iw*-qx+iy*-qz-iz*-qy;out[1]=iy*qw+iw*-qy+iz*-qx-ix*-qz;out[2]=iz*qw+iw*-qz+ix*-qy-iy*-qx;out[3]=a[3];return out;}/***/},/***/9365:/***/function(module,__unused_webpack_exports,__nested_webpack_require_616527__){var tokenize=__nested_webpack_require_616527__(8096);var atob=__nested_webpack_require_616527__(7896);module.exports=getName;function getName(src){var tokens=Array.isArray(src)?src:tokenize(src);for(var i=0;i<tokens.length;i++){var token=tokens[i];if(token.type!=='preprocessor')continue;var match=token.data.match(/\\#define\\s+SHADER_NAME(_B64)?\\s+(.+)$/);if(!match)continue;if(!match[2])continue;var b64=match[1];var name=match[2];return(b64?atob(name):name).trim();}}/***/},/***/3193:/***/function(module,__unused_webpack_exports,__nested_webpack_require_617052__){module.exports=tokenize;var literals100=__nested_webpack_require_617052__(399),operators=__nested_webpack_require_617052__(9746),builtins100=__nested_webpack_require_617052__(9525),literals300es=__nested_webpack_require_617052__(9458),builtins300es=__nested_webpack_require_617052__(3585);var NORMAL=999// <-- never emitted\n,TOKEN=9999// <-- never emitted\n,BLOCK_COMMENT=0,LINE_COMMENT=1,PREPROCESSOR=2,OPERATOR=3,INTEGER=4,FLOAT=5,IDENT=6,BUILTIN=7,KEYWORD=8,WHITESPACE=9,EOF=10,HEX=11;var map=['block-comment','line-comment','preprocessor','operator','integer','float','ident','builtin','keyword','whitespace','eof','integer'];function tokenize(opt){var i=0,total=0,mode=NORMAL,c,last,content=[],tokens=[],token_idx=0,token_offs=0,line=1,col=0,start=0,isnum=false,isoperator=false,input='',len;opt=opt||{};var allBuiltins=builtins100;var allLiterals=literals100;if(opt.version==='300 es'){allBuiltins=builtins300es;allLiterals=literals300es;}// cache by name\nvar builtinsDict={},literalsDict={};for(var i=0;i<allBuiltins.length;i++){builtinsDict[allBuiltins[i]]=true;}for(var i=0;i<allLiterals.length;i++){literalsDict[allLiterals[i]]=true;}return function(data){tokens=[];if(data!==null)return write(data);return end();};function token(data){if(data.length){tokens.push({type:map[mode],data:data,position:start,line:line,column:col});}}function write(chunk){i=0;if(chunk.toString)chunk=chunk.toString();input+=chunk.replace(/\\r\\n/g,'\\n');len=input.length;var last;while(c=input[i],i<len){last=i;switch(mode){case BLOCK_COMMENT:i=block_comment();break;case LINE_COMMENT:i=line_comment();break;case PREPROCESSOR:i=preprocessor();break;case OPERATOR:i=operator();break;case INTEGER:i=integer();break;case HEX:i=hex();break;case FLOAT:i=decimal();break;case TOKEN:i=readtoken();break;case WHITESPACE:i=whitespace();break;case NORMAL:i=normal();break;}if(last!==i){switch(input[last]){case'\\n':col=0;++line;break;default:++col;break;}}}total+=i;input=input.slice(i);return tokens;}function end(chunk){if(content.length){token(content.join(''));}mode=EOF;token('(eof)');return tokens;}function normal(){content=content.length?[]:content;if(last==='/'&&c==='*'){start=total+i-1;mode=BLOCK_COMMENT;last=c;return i+1;}if(last==='/'&&c==='/'){start=total+i-1;mode=LINE_COMMENT;last=c;return i+1;}if(c==='#'){mode=PREPROCESSOR;start=total+i;return i;}if(/\\s/.test(c)){mode=WHITESPACE;start=total+i;return i;}isnum=/\\d/.test(c);isoperator=/[^\\w_]/.test(c);start=total+i;mode=isnum?INTEGER:isoperator?OPERATOR:TOKEN;return i;}function whitespace(){if(/[^\\s]/g.test(c)){token(content.join(''));mode=NORMAL;return i;}content.push(c);last=c;return i+1;}function preprocessor(){if((c==='\\r'||c==='\\n')&&last!=='\\\\'){token(content.join(''));mode=NORMAL;return i;}content.push(c);last=c;return i+1;}function line_comment(){return preprocessor();}function block_comment(){if(c==='/'&&last==='*'){content.push(c);token(content.join(''));mode=NORMAL;return i+1;}content.push(c);last=c;return i+1;}function operator(){if(last==='.'&&/\\d/.test(c)){mode=FLOAT;return i;}if(last==='/'&&c==='*'){mode=BLOCK_COMMENT;return i;}if(last==='/'&&c==='/'){mode=LINE_COMMENT;return i;}if(c==='.'&&content.length){while(determine_operator(content));mode=FLOAT;return i;}if(c===';'||c===')'||c==='('){if(content.length)while(determine_operator(content));token(c);mode=NORMAL;return i+1;}var is_composite_operator=content.length===2&&c!=='=';if(/[\\w_\\d\\s]/.test(c)||is_composite_operator){while(determine_operator(content));mode=NORMAL;return i;}content.push(c);last=c;return i+1;}function determine_operator(buf){var j=0,idx,res;do{idx=operators.indexOf(buf.slice(0,buf.length+j).join(''));res=operators[idx];if(idx===-1){if(j--+buf.length>0)continue;res=buf.slice(0,1).join('');}token(res);start+=res.length;content=content.slice(res.length);return content.length;}while(1);}function hex(){if(/[^a-fA-F0-9]/.test(c)){token(content.join(''));mode=NORMAL;return i;}content.push(c);last=c;return i+1;}function integer(){if(c==='.'){content.push(c);mode=FLOAT;last=c;return i+1;}if(/[eE]/.test(c)){content.push(c);mode=FLOAT;last=c;return i+1;}if(c==='x'&&content.length===1&&content[0]==='0'){mode=HEX;content.push(c);last=c;return i+1;}if(/[^\\d]/.test(c)){token(content.join(''));mode=NORMAL;return i;}content.push(c);last=c;return i+1;}function decimal(){if(c==='f'){content.push(c);last=c;i+=1;}if(/[eE]/.test(c)){content.push(c);last=c;return i+1;}if((c==='-'||c==='+')&&/[eE]/.test(last)){content.push(c);last=c;return i+1;}if(/[^\\d]/.test(c)){token(content.join(''));mode=NORMAL;return i;}content.push(c);last=c;return i+1;}function readtoken(){if(/[^\\d\\w_]/.test(c)){var contentstr=content.join('');if(literalsDict[contentstr]){mode=KEYWORD;}else if(builtinsDict[contentstr]){mode=BUILTIN;}else{mode=IDENT;}token(content.join(''));mode=NORMAL;return i;}content.push(c);last=c;return i+1;}}/***/},/***/3585:/***/function(module,__unused_webpack_exports,__nested_webpack_require_621926__){// 300es builtins/reserved words that were previously valid in v100\nvar v100=__nested_webpack_require_621926__(9525);// The texture2D|Cube functions have been removed\n// And the gl_ features are updated\nv100=v100.slice().filter(function(b){return!/^(gl\\_|texture)/.test(b);});module.exports=v100.concat([// the updated gl_ constants\n'gl_VertexID','gl_InstanceID','gl_Position','gl_PointSize','gl_FragCoord','gl_FrontFacing','gl_FragDepth','gl_PointCoord','gl_MaxVertexAttribs','gl_MaxVertexUniformVectors','gl_MaxVertexOutputVectors','gl_MaxFragmentInputVectors','gl_MaxVertexTextureImageUnits','gl_MaxCombinedTextureImageUnits','gl_MaxTextureImageUnits','gl_MaxFragmentUniformVectors','gl_MaxDrawBuffers','gl_MinProgramTexelOffset','gl_MaxProgramTexelOffset','gl_DepthRangeParameters','gl_DepthRange'// other builtins\n,'trunc','round','roundEven','isnan','isinf','floatBitsToInt','floatBitsToUint','intBitsToFloat','uintBitsToFloat','packSnorm2x16','unpackSnorm2x16','packUnorm2x16','unpackUnorm2x16','packHalf2x16','unpackHalf2x16','outerProduct','transpose','determinant','inverse','texture','textureSize','textureProj','textureLod','textureOffset','texelFetch','texelFetchOffset','textureProjOffset','textureLodOffset','textureProjLod','textureProjLodOffset','textureGrad','textureGradOffset','textureProjGrad','textureProjGradOffset']);/***/},/***/9525:/***/function(module){module.exports=[// Keep this list sorted\n'abs','acos','all','any','asin','atan','ceil','clamp','cos','cross','dFdx','dFdy','degrees','distance','dot','equal','exp','exp2','faceforward','floor','fract','gl_BackColor','gl_BackLightModelProduct','gl_BackLightProduct','gl_BackMaterial','gl_BackSecondaryColor','gl_ClipPlane','gl_ClipVertex','gl_Color','gl_DepthRange','gl_DepthRangeParameters','gl_EyePlaneQ','gl_EyePlaneR','gl_EyePlaneS','gl_EyePlaneT','gl_Fog','gl_FogCoord','gl_FogFragCoord','gl_FogParameters','gl_FragColor','gl_FragCoord','gl_FragData','gl_FragDepth','gl_FragDepthEXT','gl_FrontColor','gl_FrontFacing','gl_FrontLightModelProduct','gl_FrontLightProduct','gl_FrontMaterial','gl_FrontSecondaryColor','gl_LightModel','gl_LightModelParameters','gl_LightModelProducts','gl_LightProducts','gl_LightSource','gl_LightSourceParameters','gl_MaterialParameters','gl_MaxClipPlanes','gl_MaxCombinedTextureImageUnits','gl_MaxDrawBuffers','gl_MaxFragmentUniformComponents','gl_MaxLights','gl_MaxTextureCoords','gl_MaxTextureImageUnits','gl_MaxTextureUnits','gl_MaxVaryingFloats','gl_MaxVertexAttribs','gl_MaxVertexTextureImageUnits','gl_MaxVertexUniformComponents','gl_ModelViewMatrix','gl_ModelViewMatrixInverse','gl_ModelViewMatrixInverseTranspose','gl_ModelViewMatrixTranspose','gl_ModelViewProjectionMatrix','gl_ModelViewProjectionMatrixInverse','gl_ModelViewProjectionMatrixInverseTranspose','gl_ModelViewProjectionMatrixTranspose','gl_MultiTexCoord0','gl_MultiTexCoord1','gl_MultiTexCoord2','gl_MultiTexCoord3','gl_MultiTexCoord4','gl_MultiTexCoord5','gl_MultiTexCoord6','gl_MultiTexCoord7','gl_Normal','gl_NormalMatrix','gl_NormalScale','gl_ObjectPlaneQ','gl_ObjectPlaneR','gl_ObjectPlaneS','gl_ObjectPlaneT','gl_Point','gl_PointCoord','gl_PointParameters','gl_PointSize','gl_Position','gl_ProjectionMatrix','gl_ProjectionMatrixInverse','gl_ProjectionMatrixInverseTranspose','gl_ProjectionMatrixTranspose','gl_SecondaryColor','gl_TexCoord','gl_TextureEnvColor','gl_TextureMatrix','gl_TextureMatrixInverse','gl_TextureMatrixInverseTranspose','gl_TextureMatrixTranspose','gl_Vertex','greaterThan','greaterThanEqual','inversesqrt','length','lessThan','lessThanEqual','log','log2','matrixCompMult','max','min','mix','mod','normalize','not','notEqual','pow','radians','reflect','refract','sign','sin','smoothstep','sqrt','step','tan','texture2D','texture2DLod','texture2DProj','texture2DProjLod','textureCube','textureCubeLod','texture2DLodEXT','texture2DProjLodEXT','textureCubeLodEXT','texture2DGradEXT','texture2DProjGradEXT','textureCubeGradEXT'];/***/},/***/9458:/***/function(module,__unused_webpack_exports,__nested_webpack_require_625932__){var v100=__nested_webpack_require_625932__(399);module.exports=v100.slice().concat(['layout','centroid','smooth','case','mat2x2','mat2x3','mat2x4','mat3x2','mat3x3','mat3x4','mat4x2','mat4x3','mat4x4','uvec2','uvec3','uvec4','samplerCubeShadow','sampler2DArray','sampler2DArrayShadow','isampler2D','isampler3D','isamplerCube','isampler2DArray','usampler2D','usampler3D','usamplerCube','usampler2DArray','coherent','restrict','readonly','writeonly','resource','atomic_uint','noperspective','patch','sample','subroutine','common','partition','active','filter','image1D','image2D','image3D','imageCube','iimage1D','iimage2D','iimage3D','iimageCube','uimage1D','uimage2D','uimage3D','uimageCube','image1DArray','image2DArray','iimage1DArray','iimage2DArray','uimage1DArray','uimage2DArray','image1DShadow','image2DShadow','image1DArrayShadow','image2DArrayShadow','imageBuffer','iimageBuffer','uimageBuffer','sampler1DArray','sampler1DArrayShadow','isampler1D','isampler1DArray','usampler1D','usampler1DArray','isampler2DRect','usampler2DRect','samplerBuffer','isamplerBuffer','usamplerBuffer','sampler2DMS','isampler2DMS','usampler2DMS','sampler2DMSArray','isampler2DMSArray','usampler2DMSArray']);/***/},/***/399:/***/function(module){module.exports=[// current\n'precision','highp','mediump','lowp','attribute','const','uniform','varying','break','continue','do','for','while','if','else','in','out','inout','float','int','uint','void','bool','true','false','discard','return','mat2','mat3','mat4','vec2','vec3','vec4','ivec2','ivec3','ivec4','bvec2','bvec3','bvec4','sampler1D','sampler2D','sampler3D','samplerCube','sampler1DShadow','sampler2DShadow','struct'// future\n,'asm','class','union','enum','typedef','template','this','packed','goto','switch','default','inline','noinline','volatile','public','static','extern','external','interface','long','short','double','half','fixed','unsigned','input','output','hvec2','hvec3','hvec4','dvec2','dvec3','dvec4','fvec2','fvec3','fvec4','sampler2DRect','sampler3DRect','sampler2DRectShadow','sizeof','cast','namespace','using'];/***/},/***/9746:/***/function(module){module.exports=['<<=','>>=','++','--','<<','>>','<=','>=','==','!=','&&','||','+=','-=','*=','/=','%=','&=','^^','^=','|=','(',')','[',']','.','!','~','*','/','%','+','-','<','>','&','^','|','?',':','=',',',';','{','}'];/***/},/***/8096:/***/function(module,__unused_webpack_exports,__nested_webpack_require_628334__){var tokenize=__nested_webpack_require_628334__(3193);module.exports=tokenizeString;function tokenizeString(str,opt){var generator=tokenize(opt);var tokens=[];tokens=tokens.concat(generator(str));tokens=tokens.concat(generator(null));return tokens;}/***/},/***/6832:/***/function(module){module.exports=function(strings){if(typeof strings==='string')strings=[strings];var exprs=[].slice.call(arguments,1);var parts=[];for(var i=0;i<strings.length-1;i++){parts.push(strings[i],exprs[i]||'');}parts.push(strings[i]);return parts.join('');};/***/},/***/5233:/***/function(module,__unused_webpack_exports,__nested_webpack_require_628941__){\"use strict\";var isBrowser=__nested_webpack_require_628941__(4846);function detect(){var supported=false;try{var opts=Object.defineProperty({},'passive',{get:function(){supported=true;}});window.addEventListener('test',null,opts);window.removeEventListener('test',null,opts);}catch(e){supported=false;}return supported;}module.exports=isBrowser&&detect();/***/},/***/2183:/***/function(module,__unused_webpack_exports,__nested_webpack_require_629366__){\"use strict\";//High level idea:\n// 1. Use Clarkson's incremental construction to find convex hull\n// 2. Point location in triangulation by jump and walk\nmodule.exports=incrementalConvexHull;var orient=__nested_webpack_require_629366__(417);var compareCell=__nested_webpack_require_629366__(8211)/* .compareCells */.H;function Simplex(vertices,adjacent,boundary){this.vertices=vertices;this.adjacent=adjacent;this.boundary=boundary;this.lastVisited=-1;}Simplex.prototype.flip=function(){var t=this.vertices[0];this.vertices[0]=this.vertices[1];this.vertices[1]=t;var u=this.adjacent[0];this.adjacent[0]=this.adjacent[1];this.adjacent[1]=u;};function GlueFacet(vertices,cell,index){this.vertices=vertices;this.cell=cell;this.index=index;}function compareGlue(a,b){return compareCell(a.vertices,b.vertices);}function wrapper(test){return function(){var tuple=this.tuple;return test.apply(this,tuple);};}function bakeOrient(d){var test=orient[d+1];if(!test){test=orient;}return wrapper(test);}var BAKED=[];function Triangulation(dimension,vertices,simplices){this.dimension=dimension;this.vertices=vertices;this.simplices=simplices;this.interior=simplices.filter(function(c){return!c.boundary;});this.tuple=new Array(dimension+1);for(var i=0;i<=dimension;++i){this.tuple[i]=this.vertices[i];}var o=BAKED[dimension];if(!o){o=BAKED[dimension]=bakeOrient(dimension);}this.orient=o;}var proto=Triangulation.prototype;//Degenerate situation where we are on boundary, but coplanar to face\nproto.handleBoundaryDegeneracy=function(cell,point){var d=this.dimension;var n=this.vertices.length-1;var tuple=this.tuple;var verts=this.vertices;//Dumb solution: Just do dfs from boundary cell until we find any peak, or terminate\nvar toVisit=[cell];cell.lastVisited=-n;while(toVisit.length>0){cell=toVisit.pop();var cellAdj=cell.adjacent;for(var i=0;i<=d;++i){var neighbor=cellAdj[i];if(!neighbor.boundary||neighbor.lastVisited<=-n){continue;}var nv=neighbor.vertices;for(var j=0;j<=d;++j){var vv=nv[j];if(vv<0){tuple[j]=point;}else{tuple[j]=verts[vv];}}var o=this.orient();if(o>0){return neighbor;}neighbor.lastVisited=-n;if(o===0){toVisit.push(neighbor);}}}return null;};proto.walk=function(point,random){//Alias local properties\nvar n=this.vertices.length-1;var d=this.dimension;var verts=this.vertices;var tuple=this.tuple;//Compute initial jump cell\nvar initIndex=random?this.interior.length*Math.random()|0:this.interior.length-1;var cell=this.interior[initIndex];//Start walking\nouterLoop:while(!cell.boundary){var cellVerts=cell.vertices;var cellAdj=cell.adjacent;for(var i=0;i<=d;++i){tuple[i]=verts[cellVerts[i]];}cell.lastVisited=n;//Find farthest adjacent cell\nfor(var i=0;i<=d;++i){var neighbor=cellAdj[i];if(neighbor.lastVisited>=n){continue;}var prev=tuple[i];tuple[i]=point;var o=this.orient();tuple[i]=prev;if(o<0){cell=neighbor;continue outerLoop;}else{if(!neighbor.boundary){neighbor.lastVisited=n;}else{neighbor.lastVisited=-n;}}}return;}return cell;};proto.addPeaks=function(point,cell){var n=this.vertices.length-1;var d=this.dimension;var verts=this.vertices;var tuple=this.tuple;var interior=this.interior;var simplices=this.simplices;//Walking finished at boundary, time to add peaks\nvar tovisit=[cell];//Stretch initial boundary cell into a peak\ncell.lastVisited=n;cell.vertices[cell.vertices.indexOf(-1)]=n;cell.boundary=false;interior.push(cell);//Record a list of all new boundaries created by added peaks so we can glue them together when we are all done\nvar glueFacets=[];//Do a traversal of the boundary walking outward from starting peak\nwhile(tovisit.length>0){//Pop off peak and walk over adjacent cells\nvar cell=tovisit.pop();var cellVerts=cell.vertices;var cellAdj=cell.adjacent;var indexOfN=cellVerts.indexOf(n);if(indexOfN<0){continue;}for(var i=0;i<=d;++i){if(i===indexOfN){continue;}//For each boundary neighbor of the cell\nvar neighbor=cellAdj[i];if(!neighbor.boundary||neighbor.lastVisited>=n){continue;}var nv=neighbor.vertices;//Test if neighbor is a peak\nif(neighbor.lastVisited!==-n){//Compute orientation of p relative to each boundary peak\nvar indexOfNeg1=0;for(var j=0;j<=d;++j){if(nv[j]<0){indexOfNeg1=j;tuple[j]=point;}else{tuple[j]=verts[nv[j]];}}var o=this.orient();//Test if neighbor cell is also a peak\nif(o>0){nv[indexOfNeg1]=n;neighbor.boundary=false;interior.push(neighbor);tovisit.push(neighbor);neighbor.lastVisited=n;continue;}else{neighbor.lastVisited=-n;}}var na=neighbor.adjacent;//Otherwise, replace neighbor with new face\nvar vverts=cellVerts.slice();var vadj=cellAdj.slice();var ncell=new Simplex(vverts,vadj,true);simplices.push(ncell);//Connect to neighbor\nvar opposite=na.indexOf(cell);if(opposite<0){continue;}na[opposite]=ncell;vadj[indexOfN]=neighbor;//Connect to cell\nvverts[i]=-1;vadj[i]=cell;cellAdj[i]=ncell;//Flip facet\nncell.flip();//Add to glue list\nfor(var j=0;j<=d;++j){var uu=vverts[j];if(uu<0||uu===n){continue;}var nface=new Array(d-1);var nptr=0;for(var k=0;k<=d;++k){var vv=vverts[k];if(vv<0||k===j){continue;}nface[nptr++]=vv;}glueFacets.push(new GlueFacet(nface,ncell,j));}}}//Glue boundary facets together\nglueFacets.sort(compareGlue);for(var i=0;i+1<glueFacets.length;i+=2){var a=glueFacets[i];var b=glueFacets[i+1];var ai=a.index;var bi=b.index;if(ai<0||bi<0){continue;}a.cell.adjacent[a.index]=b.cell;b.cell.adjacent[b.index]=a.cell;}};proto.insert=function(point,random){//Add point\nvar verts=this.vertices;verts.push(point);var cell=this.walk(point,random);if(!cell){return;}//Alias local properties\nvar d=this.dimension;var tuple=this.tuple;//Degenerate case: If point is coplanar to cell, then walk until we find a non-degenerate boundary\nfor(var i=0;i<=d;++i){var vv=cell.vertices[i];if(vv<0){tuple[i]=point;}else{tuple[i]=verts[vv];}}var o=this.orient(tuple);if(o<0){return;}else if(o===0){cell=this.handleBoundaryDegeneracy(cell,point);if(!cell){return;}}//Add peaks\nthis.addPeaks(point,cell);};//Extract all boundary cells\nproto.boundary=function(){var d=this.dimension;var boundary=[];var cells=this.simplices;var nc=cells.length;for(var i=0;i<nc;++i){var c=cells[i];if(c.boundary){var bcell=new Array(d);var cv=c.vertices;var ptr=0;var parity=0;for(var j=0;j<=d;++j){if(cv[j]>=0){bcell[ptr++]=cv[j];}else{parity=j&1;}}if(parity===(d&1)){var t=bcell[0];bcell[0]=bcell[1];bcell[1]=t;}boundary.push(bcell);}}return boundary;};function incrementalConvexHull(points,randomSearch){var n=points.length;if(n===0){throw new Error(\"Must have at least d+1 points\");}var d=points[0].length;if(n<=d){throw new Error(\"Must input at least d+1 points\");}//FIXME: This could be degenerate, but need to select d+1 non-coplanar points to bootstrap process\nvar initialSimplex=points.slice(0,d+1);//Make sure initial simplex is positively oriented\nvar o=orient.apply(void 0,initialSimplex);if(o===0){throw new Error(\"Input not in general position\");}var initialCoords=new Array(d+1);for(var i=0;i<=d;++i){initialCoords[i]=i;}if(o<0){initialCoords[0]=1;initialCoords[1]=0;}//Create initial topological index, glue pointers together (kind of messy)\nvar initialCell=new Simplex(initialCoords,new Array(d+1),false);var boundary=initialCell.adjacent;var list=new Array(d+2);for(var i=0;i<=d;++i){var verts=initialCoords.slice();for(var j=0;j<=d;++j){if(j===i){verts[j]=-1;}}var t=verts[0];verts[0]=verts[1];verts[1]=t;var cell=new Simplex(verts,new Array(d+1),true);boundary[i]=cell;list[i]=cell;}list[d+1]=initialCell;for(var i=0;i<=d;++i){var verts=boundary[i].vertices;var adj=boundary[i].adjacent;for(var j=0;j<=d;++j){var v=verts[j];if(v<0){adj[j]=initialCell;continue;}for(var k=0;k<=d;++k){if(boundary[k].vertices.indexOf(v)<0){adj[j]=boundary[k];}}}}//Initialize triangles\nvar triangles=new Triangulation(d,initialSimplex,list);//Insert remaining points\nvar useRandom=!!randomSearch;for(var i=d+1;i<n;++i){triangles.insert(points[i],useRandom);}//Extract boundary cells\nreturn triangles.boundary();}/***/},/***/9014:/***/function(module,__unused_webpack_exports,__nested_webpack_require_637288__){\"use strict\";var bounds=__nested_webpack_require_637288__(5070);var NOT_FOUND=0;var SUCCESS=1;var EMPTY=2;module.exports=createWrapper;function IntervalTreeNode(mid,left,right,leftPoints,rightPoints){this.mid=mid;this.left=left;this.right=right;this.leftPoints=leftPoints;this.rightPoints=rightPoints;this.count=(left?left.count:0)+(right?right.count:0)+leftPoints.length;}var proto=IntervalTreeNode.prototype;function copy(a,b){a.mid=b.mid;a.left=b.left;a.right=b.right;a.leftPoints=b.leftPoints;a.rightPoints=b.rightPoints;a.count=b.count;}function rebuild(node,intervals){var ntree=createIntervalTree(intervals);node.mid=ntree.mid;node.left=ntree.left;node.right=ntree.right;node.leftPoints=ntree.leftPoints;node.rightPoints=ntree.rightPoints;node.count=ntree.count;}function rebuildWithInterval(node,interval){var intervals=node.intervals([]);intervals.push(interval);rebuild(node,intervals);}function rebuildWithoutInterval(node,interval){var intervals=node.intervals([]);var idx=intervals.indexOf(interval);if(idx<0){return NOT_FOUND;}intervals.splice(idx,1);rebuild(node,intervals);return SUCCESS;}proto.intervals=function(result){result.push.apply(result,this.leftPoints);if(this.left){this.left.intervals(result);}if(this.right){this.right.intervals(result);}return result;};proto.insert=function(interval){var weight=this.count-this.leftPoints.length;this.count+=1;if(interval[1]<this.mid){if(this.left){if(4*(this.left.count+1)>3*(weight+1)){rebuildWithInterval(this,interval);}else{this.left.insert(interval);}}else{this.left=createIntervalTree([interval]);}}else if(interval[0]>this.mid){if(this.right){if(4*(this.right.count+1)>3*(weight+1)){rebuildWithInterval(this,interval);}else{this.right.insert(interval);}}else{this.right=createIntervalTree([interval]);}}else{var l=bounds.ge(this.leftPoints,interval,compareBegin);var r=bounds.ge(this.rightPoints,interval,compareEnd);this.leftPoints.splice(l,0,interval);this.rightPoints.splice(r,0,interval);}};proto.remove=function(interval){var weight=this.count-this.leftPoints;if(interval[1]<this.mid){if(!this.left){return NOT_FOUND;}var rw=this.right?this.right.count:0;if(4*rw>3*(weight-1)){return rebuildWithoutInterval(this,interval);}var r=this.left.remove(interval);if(r===EMPTY){this.left=null;this.count-=1;return SUCCESS;}else if(r===SUCCESS){this.count-=1;}return r;}else if(interval[0]>this.mid){if(!this.right){return NOT_FOUND;}var lw=this.left?this.left.count:0;if(4*lw>3*(weight-1)){return rebuildWithoutInterval(this,interval);}var r=this.right.remove(interval);if(r===EMPTY){this.right=null;this.count-=1;return SUCCESS;}else if(r===SUCCESS){this.count-=1;}return r;}else{if(this.count===1){if(this.leftPoints[0]===interval){return EMPTY;}else{return NOT_FOUND;}}if(this.leftPoints.length===1&&this.leftPoints[0]===interval){if(this.left&&this.right){var p=this;var n=this.left;while(n.right){p=n;n=n.right;}if(p===this){n.right=this.right;}else{var l=this.left;var r=this.right;p.count-=n.count;p.right=n.left;n.left=l;n.right=r;}copy(this,n);this.count=(this.left?this.left.count:0)+(this.right?this.right.count:0)+this.leftPoints.length;}else if(this.left){copy(this,this.left);}else{copy(this,this.right);}return SUCCESS;}for(var l=bounds.ge(this.leftPoints,interval,compareBegin);l<this.leftPoints.length;++l){if(this.leftPoints[l][0]!==interval[0]){break;}if(this.leftPoints[l]===interval){this.count-=1;this.leftPoints.splice(l,1);for(var r=bounds.ge(this.rightPoints,interval,compareEnd);r<this.rightPoints.length;++r){if(this.rightPoints[r][1]!==interval[1]){break;}else if(this.rightPoints[r]===interval){this.rightPoints.splice(r,1);return SUCCESS;}}}}return NOT_FOUND;}};function reportLeftRange(arr,hi,cb){for(var i=0;i<arr.length&&arr[i][0]<=hi;++i){var r=cb(arr[i]);if(r){return r;}}}function reportRightRange(arr,lo,cb){for(var i=arr.length-1;i>=0&&arr[i][1]>=lo;--i){var r=cb(arr[i]);if(r){return r;}}}function reportRange(arr,cb){for(var i=0;i<arr.length;++i){var r=cb(arr[i]);if(r){return r;}}}proto.queryPoint=function(x,cb){if(x<this.mid){if(this.left){var r=this.left.queryPoint(x,cb);if(r){return r;}}return reportLeftRange(this.leftPoints,x,cb);}else if(x>this.mid){if(this.right){var r=this.right.queryPoint(x,cb);if(r){return r;}}return reportRightRange(this.rightPoints,x,cb);}else{return reportRange(this.leftPoints,cb);}};proto.queryInterval=function(lo,hi,cb){if(lo<this.mid&&this.left){var r=this.left.queryInterval(lo,hi,cb);if(r){return r;}}if(hi>this.mid&&this.right){var r=this.right.queryInterval(lo,hi,cb);if(r){return r;}}if(hi<this.mid){return reportLeftRange(this.leftPoints,hi,cb);}else if(lo>this.mid){return reportRightRange(this.rightPoints,lo,cb);}else{return reportRange(this.leftPoints,cb);}};function compareNumbers(a,b){return a-b;}function compareBegin(a,b){var d=a[0]-b[0];if(d){return d;}return a[1]-b[1];}function compareEnd(a,b){var d=a[1]-b[1];if(d){return d;}return a[0]-b[0];}function createIntervalTree(intervals){if(intervals.length===0){return null;}var pts=[];for(var i=0;i<intervals.length;++i){pts.push(intervals[i][0],intervals[i][1]);}pts.sort(compareNumbers);var mid=pts[pts.length>>1];var leftIntervals=[];var rightIntervals=[];var centerIntervals=[];for(var i=0;i<intervals.length;++i){var s=intervals[i];if(s[1]<mid){leftIntervals.push(s);}else if(mid<s[0]){rightIntervals.push(s);}else{centerIntervals.push(s);}}//Split center intervals\nvar leftPoints=centerIntervals;var rightPoints=centerIntervals.slice();leftPoints.sort(compareBegin);rightPoints.sort(compareEnd);return new IntervalTreeNode(mid,createIntervalTree(leftIntervals),createIntervalTree(rightIntervals),leftPoints,rightPoints);}//User friendly wrapper that makes it possible to support empty trees\nfunction IntervalTree(root){this.root=root;}var tproto=IntervalTree.prototype;tproto.insert=function(interval){if(this.root){this.root.insert(interval);}else{this.root=new IntervalTreeNode(interval[0],null,null,[interval],[interval]);}};tproto.remove=function(interval){if(this.root){var r=this.root.remove(interval);if(r===EMPTY){this.root=null;}return r!==NOT_FOUND;}return false;};tproto.queryPoint=function(p,cb){if(this.root){return this.root.queryPoint(p,cb);}};tproto.queryInterval=function(lo,hi,cb){if(lo<=hi&&this.root){return this.root.queryInterval(lo,hi,cb);}};Object.defineProperty(tproto,\"count\",{get:function(){if(this.root){return this.root.count;}return 0;}});Object.defineProperty(tproto,\"intervals\",{get:function(){if(this.root){return this.root.intervals([]);}return[];}});function createWrapper(intervals){if(!intervals||intervals.length===0){return new IntervalTree(null);}return new IntervalTree(createIntervalTree(intervals));}/***/},/***/9560:/***/function(module){\"use strict\";function iota(n){var result=new Array(n);for(var i=0;i<n;++i){result[i]=i;}return result;}module.exports=iota;/***/},/***/4846:/***/function(module){module.exports=true;/***/},/***/4780:/***/function(module){/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */ // The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports=function(obj){return obj!=null&&(isBuffer(obj)||isSlowBuffer(obj)||!!obj._isBuffer);};function isBuffer(obj){return!!obj.constructor&&typeof obj.constructor.isBuffer==='function'&&obj.constructor.isBuffer(obj);}// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer(obj){return typeof obj.readFloatLE==='function'&&typeof obj.slice==='function'&&isBuffer(obj.slice(0,0));}/***/},/***/2861:/***/function(module){\"use strict\";module.exports=isMobile;module.exports.isMobile=isMobile;module.exports[\"default\"]=isMobile;var mobileRE=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i;var tabletRE=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i;function isMobile(opts){if(!opts)opts={};var ua=opts.ua;if(!ua&&typeof navigator!=='undefined')ua=navigator.userAgent;if(ua&&ua.headers&&typeof ua.headers['user-agent']==='string'){ua=ua.headers['user-agent'];}if(typeof ua!=='string')return false;var result=opts.tablet?tabletRE.test(ua):mobileRE.test(ua);if(!result&&opts.tablet&&opts.featureDetect&&navigator&&navigator.maxTouchPoints>1&&ua.indexOf('Macintosh')!==-1&&ua.indexOf('Safari')!==-1){result=true;}return result;}/***/},/***/3596:/***/function(module){\"use strict\";/**\r\n * Is this string all whitespace?\r\n * This solution kind of makes my brain hurt, but it's significantly faster\r\n * than !str.trim() or any other solution I could find.\r\n *\r\n * whitespace codes from: http://en.wikipedia.org/wiki/Whitespace_character\r\n * and verified with:\r\n *\r\n *  for(var i = 0; i < 65536; i++) {\r\n *      var s = String.fromCharCode(i);\r\n *      if(+s===0 && !s.trim()) console.log(i, s);\r\n *  }\r\n *\r\n * which counts a couple of these as *not* whitespace, but finds nothing else\r\n * that *is* whitespace. Note that charCodeAt stops at 16 bits, but it appears\r\n * that there are no whitespace characters above this, and code points above\r\n * this do not map onto white space characters.\r\n */module.exports=function(str){var l=str.length,a;for(var i=0;i<l;i++){a=str.charCodeAt(i);if((a<9||a>13)&&a!==32&&a!==133&&a!==160&&a!==5760&&a!==6158&&(a<8192||a>8205)&&a!==8232&&a!==8233&&a!==8239&&a!==8287&&a!==8288&&a!==12288&&a!==65279){return false;}}return true;};/***/},/***/3578:/***/function(module){function lerp(v0,v1,t){return v0*(1-t)+v1*t;}module.exports=lerp;/***/},/***/7191:/***/function(module,__unused_webpack_exports,__nested_webpack_require_647389__){/*jshint unused:true*/ /*\nInput:  matrix      ; a 4x4 matrix\nOutput: translation ; a 3 component vector\n        scale       ; a 3 component vector\n        skew        ; skew factors XY,XZ,YZ represented as a 3 component vector\n        perspective ; a 4 component vector\n        quaternion  ; a 4 component vector\nReturns false if the matrix cannot be decomposed, true if it can\n\n\nReferences:\nhttps://github.com/kamicane/matrix3d/blob/master/lib/Matrix3d.js\nhttps://github.com/ChromiumWebApps/chromium/blob/master/ui/gfx/transform_util.cc\nhttp://www.w3.org/TR/css3-transforms/#decomposing-a-3d-matrix\n*/var normalize=__nested_webpack_require_647389__(4690);var create=__nested_webpack_require_647389__(9823);var clone=__nested_webpack_require_647389__(7332);var determinant=__nested_webpack_require_647389__(7787);var invert=__nested_webpack_require_647389__(7437);var transpose=__nested_webpack_require_647389__(2142);var vec3={length:__nested_webpack_require_647389__(4693),normalize:__nested_webpack_require_647389__(899),dot:__nested_webpack_require_647389__(9305),cross:__nested_webpack_require_647389__(903)};var tmp=create();var perspectiveMatrix=create();var tmpVec4=[0,0,0,0];var row=[[0,0,0],[0,0,0],[0,0,0]];var pdum3=[0,0,0];module.exports=function decomposeMat4(matrix,translation,scale,skew,perspective,quaternion){if(!translation)translation=[0,0,0];if(!scale)scale=[0,0,0];if(!skew)skew=[0,0,0];if(!perspective)perspective=[0,0,0,1];if(!quaternion)quaternion=[0,0,0,1];//normalize, if not possible then bail out early\nif(!normalize(tmp,matrix))return false;// perspectiveMatrix is used to solve for perspective, but it also provides\n// an easy way to test for singularity of the upper 3x3 component.\nclone(perspectiveMatrix,tmp);perspectiveMatrix[3]=0;perspectiveMatrix[7]=0;perspectiveMatrix[11]=0;perspectiveMatrix[15]=1;// If the perspectiveMatrix is not invertible, we are also unable to\n// decompose, so we'll bail early. Constant taken from SkMatrix44::invert.\nif(Math.abs(determinant(perspectiveMatrix)<1e-8))return false;var a03=tmp[3],a13=tmp[7],a23=tmp[11],a30=tmp[12],a31=tmp[13],a32=tmp[14],a33=tmp[15];// First, isolate perspective.\nif(a03!==0||a13!==0||a23!==0){tmpVec4[0]=a03;tmpVec4[1]=a13;tmpVec4[2]=a23;tmpVec4[3]=a33;// Solve the equation by inverting perspectiveMatrix and multiplying\n// rightHandSide by the inverse.\n// resuing the perspectiveMatrix here since it's no longer needed\nvar ret=invert(perspectiveMatrix,perspectiveMatrix);if(!ret)return false;transpose(perspectiveMatrix,perspectiveMatrix);//multiply by transposed inverse perspective matrix, into perspective vec4\nvec4multMat4(perspective,tmpVec4,perspectiveMatrix);}else{//no perspective\nperspective[0]=perspective[1]=perspective[2]=0;perspective[3]=1;}// Next take care of translation\ntranslation[0]=a30;translation[1]=a31;translation[2]=a32;// Now get scale and shear. 'row' is a 3 element array of 3 component vectors\nmat3from4(row,tmp);// Compute X scale factor and normalize first row.\nscale[0]=vec3.length(row[0]);vec3.normalize(row[0],row[0]);// Compute XY shear factor and make 2nd row orthogonal to 1st.\nskew[0]=vec3.dot(row[0],row[1]);combine(row[1],row[1],row[0],1.0,-skew[0]);// Now, compute Y scale and normalize 2nd row.\nscale[1]=vec3.length(row[1]);vec3.normalize(row[1],row[1]);skew[0]/=scale[1];// Compute XZ and YZ shears, orthogonalize 3rd row\nskew[1]=vec3.dot(row[0],row[2]);combine(row[2],row[2],row[0],1.0,-skew[1]);skew[2]=vec3.dot(row[1],row[2]);combine(row[2],row[2],row[1],1.0,-skew[2]);// Next, get Z scale and normalize 3rd row.\nscale[2]=vec3.length(row[2]);vec3.normalize(row[2],row[2]);skew[1]/=scale[2];skew[2]/=scale[2];// At this point, the matrix (in rows) is orthonormal.\n// Check for a coordinate system flip.  If the determinant\n// is -1, then negate the matrix and the scaling factors.\nvec3.cross(pdum3,row[1],row[2]);if(vec3.dot(row[0],pdum3)<0){for(var i=0;i<3;i++){scale[i]*=-1;row[i][0]*=-1;row[i][1]*=-1;row[i][2]*=-1;}}// Now, get the rotations out\nquaternion[0]=0.5*Math.sqrt(Math.max(1+row[0][0]-row[1][1]-row[2][2],0));quaternion[1]=0.5*Math.sqrt(Math.max(1-row[0][0]+row[1][1]-row[2][2],0));quaternion[2]=0.5*Math.sqrt(Math.max(1-row[0][0]-row[1][1]+row[2][2],0));quaternion[3]=0.5*Math.sqrt(Math.max(1+row[0][0]+row[1][1]+row[2][2],0));if(row[2][1]>row[1][2])quaternion[0]=-quaternion[0];if(row[0][2]>row[2][0])quaternion[1]=-quaternion[1];if(row[1][0]>row[0][1])quaternion[2]=-quaternion[2];return true;};//will be replaced by gl-vec4 eventually\nfunction vec4multMat4(out,a,m){var x=a[0],y=a[1],z=a[2],w=a[3];out[0]=m[0]*x+m[4]*y+m[8]*z+m[12]*w;out[1]=m[1]*x+m[5]*y+m[9]*z+m[13]*w;out[2]=m[2]*x+m[6]*y+m[10]*z+m[14]*w;out[3]=m[3]*x+m[7]*y+m[11]*z+m[15]*w;return out;}//gets upper-left of a 4x4 matrix into a 3x3 of vectors\nfunction mat3from4(out,mat4x4){out[0][0]=mat4x4[0];out[0][1]=mat4x4[1];out[0][2]=mat4x4[2];out[1][0]=mat4x4[4];out[1][1]=mat4x4[5];out[1][2]=mat4x4[6];out[2][0]=mat4x4[8];out[2][1]=mat4x4[9];out[2][2]=mat4x4[10];}function combine(out,a,b,scale1,scale2){out[0]=a[0]*scale1+b[0]*scale2;out[1]=a[1]*scale1+b[1]*scale2;out[2]=a[2]*scale1+b[2]*scale2;}/***/},/***/4690:/***/function(module){module.exports=function normalize(out,mat){var m44=mat[15];// Cannot normalize.\nif(m44===0)return false;var scale=1/m44;for(var i=0;i<16;i++)out[i]=mat[i]*scale;return true;};/***/},/***/7649:/***/function(module,__unused_webpack_exports,__nested_webpack_require_652668__){var lerp=__nested_webpack_require_652668__(1868);var recompose=__nested_webpack_require_652668__(1102);var decompose=__nested_webpack_require_652668__(7191);var determinant=__nested_webpack_require_652668__(7787);var slerp=__nested_webpack_require_652668__(1116);var state0=state();var state1=state();var tmp=state();module.exports=interpolate;function interpolate(out,start,end,alpha){if(determinant(start)===0||determinant(end)===0)return false;//decompose the start and end matrices into individual components\nvar r0=decompose(start,state0.translate,state0.scale,state0.skew,state0.perspective,state0.quaternion);var r1=decompose(end,state1.translate,state1.scale,state1.skew,state1.perspective,state1.quaternion);if(!r0||!r1)return false;//now lerp/slerp the start and end components into a temporary     lerp(tmptranslate, state0.translate, state1.translate, alpha)\nlerp(tmp.translate,state0.translate,state1.translate,alpha);lerp(tmp.skew,state0.skew,state1.skew,alpha);lerp(tmp.scale,state0.scale,state1.scale,alpha);lerp(tmp.perspective,state0.perspective,state1.perspective,alpha);slerp(tmp.quaternion,state0.quaternion,state1.quaternion,alpha);//and recompose into our 'out' matrix\nrecompose(out,tmp.translate,tmp.scale,tmp.skew,tmp.perspective,tmp.quaternion);return true;}function state(){return{translate:vec3(),scale:vec3(1),skew:vec3(),perspective:vec4(),quaternion:vec4()};}function vec3(n){return[n||0,n||0,n||0];}function vec4(){return[0,0,0,1];}/***/},/***/1102:/***/function(module,__unused_webpack_exports,__nested_webpack_require_654146__){/*\nInput:  translation ; a 3 component vector\n        scale       ; a 3 component vector\n        skew        ; skew factors XY,XZ,YZ represented as a 3 component vector\n        perspective ; a 4 component vector\n        quaternion  ; a 4 component vector\nOutput: matrix      ; a 4x4 matrix\n\nFrom: http://www.w3.org/TR/css3-transforms/#recomposing-to-a-3d-matrix\n*/var mat4={identity:__nested_webpack_require_654146__(9947),translate:__nested_webpack_require_654146__(998),multiply:__nested_webpack_require_654146__(104),create:__nested_webpack_require_654146__(9823),scale:__nested_webpack_require_654146__(3668),fromRotationTranslation:__nested_webpack_require_654146__(7280)};var rotationMatrix=mat4.create();var temp=mat4.create();module.exports=function recomposeMat4(matrix,translation,scale,skew,perspective,quaternion){mat4.identity(matrix);//apply translation & rotation\nmat4.fromRotationTranslation(matrix,quaternion,translation);//apply perspective\nmatrix[3]=perspective[0];matrix[7]=perspective[1];matrix[11]=perspective[2];matrix[15]=perspective[3];// apply skew\n// temp is a identity 4x4 matrix initially\nmat4.identity(temp);if(skew[2]!==0){temp[9]=skew[2];mat4.multiply(matrix,matrix,temp);}if(skew[1]!==0){temp[9]=0;temp[8]=skew[1];mat4.multiply(matrix,matrix,temp);}if(skew[0]!==0){temp[8]=0;temp[4]=skew[0];mat4.multiply(matrix,matrix,temp);}//apply scale\nmat4.scale(matrix,matrix,scale);return matrix;};/***/},/***/9298:/***/function(module,__unused_webpack_exports,__nested_webpack_require_655567__){\"use strict\";var bsearch=__nested_webpack_require_655567__(5070);var m4interp=__nested_webpack_require_655567__(7649);var invert44=__nested_webpack_require_655567__(7437);var rotateX=__nested_webpack_require_655567__(6109);var rotateY=__nested_webpack_require_655567__(7115);var rotateZ=__nested_webpack_require_655567__(5240);var lookAt=__nested_webpack_require_655567__(3012);var translate=__nested_webpack_require_655567__(998);var scale=__nested_webpack_require_655567__(3668);var normalize=__nested_webpack_require_655567__(899);var DEFAULT_CENTER=[0,0,0];module.exports=createMatrixCameraController;function MatrixCameraController(initialMatrix){this._components=initialMatrix.slice();this._time=[0];this.prevMatrix=initialMatrix.slice();this.nextMatrix=initialMatrix.slice();this.computedMatrix=initialMatrix.slice();this.computedInverse=initialMatrix.slice();this.computedEye=[0,0,0];this.computedUp=[0,0,0];this.computedCenter=[0,0,0];this.computedRadius=[0];this._limits=[-Infinity,Infinity];}var proto=MatrixCameraController.prototype;proto.recalcMatrix=function(t){var time=this._time;var tidx=bsearch.le(time,t);var mat=this.computedMatrix;if(tidx<0){return;}var comps=this._components;if(tidx===time.length-1){var ptr=16*tidx;for(var i=0;i<16;++i){mat[i]=comps[ptr++];}}else{var dt=time[tidx+1]-time[tidx];var ptr=16*tidx;var prev=this.prevMatrix;var allEqual=true;for(var i=0;i<16;++i){prev[i]=comps[ptr++];}var next=this.nextMatrix;for(var i=0;i<16;++i){next[i]=comps[ptr++];allEqual=allEqual&&prev[i]===next[i];}if(dt<1e-6||allEqual){for(var i=0;i<16;++i){mat[i]=prev[i];}}else{m4interp(mat,prev,next,(t-time[tidx])/dt);}}var up=this.computedUp;up[0]=mat[1];up[1]=mat[5];up[2]=mat[9];normalize(up,up);var imat=this.computedInverse;invert44(imat,mat);var eye=this.computedEye;var w=imat[15];eye[0]=imat[12]/w;eye[1]=imat[13]/w;eye[2]=imat[14]/w;var center=this.computedCenter;var radius=Math.exp(this.computedRadius[0]);for(var i=0;i<3;++i){center[i]=eye[i]-mat[2+4*i]*radius;}};proto.idle=function(t){if(t<this.lastT()){return;}var mc=this._components;var ptr=mc.length-16;for(var i=0;i<16;++i){mc.push(mc[ptr++]);}this._time.push(t);};proto.flush=function(t){var idx=bsearch.gt(this._time,t)-2;if(idx<0){return;}this._time.splice(0,idx);this._components.splice(0,16*idx);};proto.lastT=function(){return this._time[this._time.length-1];};proto.lookAt=function(t,eye,center,up){this.recalcMatrix(t);eye=eye||this.computedEye;center=center||DEFAULT_CENTER;up=up||this.computedUp;this.setMatrix(t,lookAt(this.computedMatrix,eye,center,up));var d2=0.0;for(var i=0;i<3;++i){d2+=Math.pow(center[i]-eye[i],2);}d2=Math.log(Math.sqrt(d2));this.computedRadius[0]=d2;};proto.rotate=function(t,yaw,pitch,roll){this.recalcMatrix(t);var mat=this.computedInverse;if(yaw)rotateY(mat,mat,yaw);if(pitch)rotateX(mat,mat,pitch);if(roll)rotateZ(mat,mat,roll);this.setMatrix(t,invert44(this.computedMatrix,mat));};var tvec=[0,0,0];proto.pan=function(t,dx,dy,dz){tvec[0]=-(dx||0.0);tvec[1]=-(dy||0.0);tvec[2]=-(dz||0.0);this.recalcMatrix(t);var mat=this.computedInverse;translate(mat,mat,tvec);this.setMatrix(t,invert44(mat,mat));};proto.translate=function(t,dx,dy,dz){tvec[0]=dx||0.0;tvec[1]=dy||0.0;tvec[2]=dz||0.0;this.recalcMatrix(t);var mat=this.computedMatrix;translate(mat,mat,tvec);this.setMatrix(t,mat);};proto.setMatrix=function(t,mat){if(t<this.lastT()){return;}this._time.push(t);for(var i=0;i<16;++i){this._components.push(mat[i]);}};proto.setDistance=function(t,d){this.computedRadius[0]=d;};proto.setDistanceLimits=function(a,b){var lim=this._limits;lim[0]=a;lim[1]=b;};proto.getDistanceLimits=function(out){var lim=this._limits;if(out){out[0]=lim[0];out[1]=lim[1];return out;}return lim;};function createMatrixCameraController(options){options=options||{};var matrix=options.matrix||[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];return new MatrixCameraController(matrix);}/***/},/***/3266:/***/function(module,__unused_webpack_exports,__nested_webpack_require_659381__){\"use strict\";module.exports=monotoneConvexHull2D;var orient=__nested_webpack_require_659381__(417)[3];function monotoneConvexHull2D(points){var n=points.length;if(n<3){var result=new Array(n);for(var i=0;i<n;++i){result[i]=i;}if(n===2&&points[0][0]===points[1][0]&&points[0][1]===points[1][1]){return[0];}return result;}//Sort point indices along x-axis\nvar sorted=new Array(n);for(var i=0;i<n;++i){sorted[i]=i;}sorted.sort(function(a,b){var d=points[a][0]-points[b][0];if(d){return d;}return points[a][1]-points[b][1];});//Construct upper and lower hulls\nvar lower=[sorted[0],sorted[1]];var upper=[sorted[0],sorted[1]];for(var i=2;i<n;++i){var idx=sorted[i];var p=points[idx];//Insert into lower list\nvar m=lower.length;while(m>1&&orient(points[lower[m-2]],points[lower[m-1]],p)<=0){m-=1;lower.pop();}lower.push(idx);//Insert into upper list\nm=upper.length;while(m>1&&orient(points[upper[m-2]],points[upper[m-1]],p)>=0){m-=1;upper.pop();}upper.push(idx);}//Merge lists together\nvar result=new Array(upper.length+lower.length-2);var ptr=0;for(var i=0,nl=lower.length;i<nl;++i){result[ptr++]=lower[i];}for(var j=upper.length-2;j>0;--j){result[ptr++]=upper[j];}//Return result\nreturn result;}/***/},/***/6145:/***/function(module,__unused_webpack_exports,__nested_webpack_require_660641__){\"use strict\";module.exports=mouseListen;var mouse=__nested_webpack_require_660641__(4110);function mouseListen(element,callback){if(!callback){callback=element;element=window;}var buttonState=0;var x=0;var y=0;var mods={shift:false,alt:false,control:false,meta:false};var attached=false;function updateMods(ev){var changed=false;if('altKey'in ev){changed=changed||ev.altKey!==mods.alt;mods.alt=!!ev.altKey;}if('shiftKey'in ev){changed=changed||ev.shiftKey!==mods.shift;mods.shift=!!ev.shiftKey;}if('ctrlKey'in ev){changed=changed||ev.ctrlKey!==mods.control;mods.control=!!ev.ctrlKey;}if('metaKey'in ev){changed=changed||ev.metaKey!==mods.meta;mods.meta=!!ev.metaKey;}return changed;}function handleEvent(nextButtons,ev){var nextX=mouse.x(ev);var nextY=mouse.y(ev);if('buttons'in ev){nextButtons=ev.buttons|0;}if(nextButtons!==buttonState||nextX!==x||nextY!==y||updateMods(ev)){buttonState=nextButtons|0;x=nextX||0;y=nextY||0;callback&&callback(buttonState,x,y,mods);}}function clearState(ev){handleEvent(0,ev);}function handleBlur(){if(buttonState||x||y||mods.shift||mods.alt||mods.meta||mods.control){x=y=0;buttonState=0;mods.shift=mods.alt=mods.control=mods.meta=false;callback&&callback(0,0,0,mods);}}function handleMods(ev){if(updateMods(ev)){callback&&callback(buttonState,x,y,mods);}}function handleMouseMove(ev){if(mouse.buttons(ev)===0){handleEvent(0,ev);}else{handleEvent(buttonState,ev);}}function handleMouseDown(ev){handleEvent(buttonState|mouse.buttons(ev),ev);}function handleMouseUp(ev){handleEvent(buttonState&~mouse.buttons(ev),ev);}function attachListeners(){if(attached){return;}attached=true;element.addEventListener('mousemove',handleMouseMove);element.addEventListener('mousedown',handleMouseDown);element.addEventListener('mouseup',handleMouseUp);element.addEventListener('mouseleave',clearState);element.addEventListener('mouseenter',clearState);element.addEventListener('mouseout',clearState);element.addEventListener('mouseover',clearState);element.addEventListener('blur',handleBlur);element.addEventListener('keyup',handleMods);element.addEventListener('keydown',handleMods);element.addEventListener('keypress',handleMods);if(element!==window){window.addEventListener('blur',handleBlur);window.addEventListener('keyup',handleMods);window.addEventListener('keydown',handleMods);window.addEventListener('keypress',handleMods);}}function detachListeners(){if(!attached){return;}attached=false;element.removeEventListener('mousemove',handleMouseMove);element.removeEventListener('mousedown',handleMouseDown);element.removeEventListener('mouseup',handleMouseUp);element.removeEventListener('mouseleave',clearState);element.removeEventListener('mouseenter',clearState);element.removeEventListener('mouseout',clearState);element.removeEventListener('mouseover',clearState);element.removeEventListener('blur',handleBlur);element.removeEventListener('keyup',handleMods);element.removeEventListener('keydown',handleMods);element.removeEventListener('keypress',handleMods);if(element!==window){window.removeEventListener('blur',handleBlur);window.removeEventListener('keyup',handleMods);window.removeEventListener('keydown',handleMods);window.removeEventListener('keypress',handleMods);}}// Attach listeners\nattachListeners();var result={element:element};Object.defineProperties(result,{enabled:{get:function(){return attached;},set:function(f){if(f){attachListeners();}else{detachListeners();}},enumerable:true},buttons:{get:function(){return buttonState;},enumerable:true},x:{get:function(){return x;},enumerable:true},y:{get:function(){return y;},enumerable:true},mods:{get:function(){return mods;},enumerable:true}});return result;}/***/},/***/2565:/***/function(module){var rootPosition={left:0,top:0};module.exports=mouseEventOffset;function mouseEventOffset(ev,target,out){target=target||ev.currentTarget||ev.srcElement;if(!Array.isArray(out)){out=[0,0];}var cx=ev.clientX||0;var cy=ev.clientY||0;var rect=getBoundingClientOffset(target);out[0]=cx-rect.left;out[1]=cy-rect.top;return out;}function getBoundingClientOffset(element){if(element===window||element===document||element===document.body){return rootPosition;}else{return element.getBoundingClientRect();}}/***/},/***/4110:/***/function(__unused_webpack_module,exports){\"use strict\";function mouseButtons(ev){if(typeof ev==='object'){if('buttons'in ev){return ev.buttons;}else if('which'in ev){var b=ev.which;if(b===2){return 4;}else if(b===3){return 2;}else if(b>0){return 1<<b-1;}}else if('button'in ev){var b=ev.button;if(b===1){return 4;}else if(b===2){return 2;}else if(b>=0){return 1<<b;}}}return 0;}exports.buttons=mouseButtons;function mouseElement(ev){return ev.target||ev.srcElement||window;}exports.element=mouseElement;function mouseRelativeX(ev){if(typeof ev==='object'){if('offsetX'in ev){return ev.offsetX;}var target=mouseElement(ev);var bounds=target.getBoundingClientRect();return ev.clientX-bounds.left;}return 0;}exports.x=mouseRelativeX;function mouseRelativeY(ev){if(typeof ev==='object'){if('offsetY'in ev){return ev.offsetY;}var target=mouseElement(ev);var bounds=target.getBoundingClientRect();return ev.clientY-bounds.top;}return 0;}exports.y=mouseRelativeY;/***/},/***/6475:/***/function(module,__unused_webpack_exports,__nested_webpack_require_665877__){\"use strict\";var toPX=__nested_webpack_require_665877__(14);module.exports=mouseWheelListen;function mouseWheelListen(element,callback,noScroll){if(typeof element==='function'){noScroll=!!callback;callback=element;element=window;}var lineHeight=toPX('ex',element);var listener=function(ev){if(noScroll){ev.preventDefault();}var dx=ev.deltaX||0;var dy=ev.deltaY||0;var dz=ev.deltaZ||0;var mode=ev.deltaMode;var scale=1;switch(mode){case 1:scale=lineHeight;break;case 2:scale=window.innerHeight;break;}dx*=scale;dy*=scale;dz*=scale;if(dx||dy||dz){return callback(dx,dy,dz,ev);}};element.addEventListener('wheel',listener);return listener;}/***/},/***/9284:/***/function(module,__unused_webpack_exports,__nested_webpack_require_666584__){\"use strict\";var pool=__nested_webpack_require_666584__(5306);module.exports=createSurfaceExtractor;var allFns={\"false,0,1\":function surfaceProcedure(vertex,face,phase,mallocUint32,freeUint32){return function extractContour0_1(a0,x0,x1,x2){var s0=a0.shape[0]|0,s1=a0.shape[1]|0,d0=a0.data,o0=a0.offset|0,t0_0=a0.stride[0]|0,t0_1=a0.stride[1]|0,p0=o0,c0_0,d0_1=-t0_0|0,c0_1=0,d0_2=-t0_1|0,c0_2=0,d0_3=-t0_0-t0_1|0,c0_3=0,u0_0=t0_0|0,u0_1=t0_1-t0_0*s0|0,i0=0,i1=0,N=0,Q=2*s0|0,P=mallocUint32(Q),V=mallocUint32(Q),X=0,b0=0,e1=-1|0,y1=-1|0,b1=0,e2=-s0|0,y2=s0|0,b2=0,e3=-s0-1|0,y3=s0-1|0,b3=0,v0=0,T=0;for(i0=0;i0<s0;++i0){P[X++]=phase(d0[p0],x0,x1,x2);p0+=u0_0;}p0+=u0_1;if(s1>0){i1=1;P[X++]=phase(d0[p0],x0,x1,x2);p0+=u0_0;if(s0>0){i0=1;c0_0=d0[p0];b0=P[X]=phase(c0_0,x0,x1,x2);b1=P[X+e1];b2=P[X+e2];b3=P[X+e3];if(b0!==b1||b0!==b2||b0!==b3){c0_1=d0[p0+d0_1];c0_2=d0[p0+d0_2];c0_3=d0[p0+d0_3];vertex(i0,i1,c0_0,c0_1,c0_2,c0_3,b0,b1,b2,b3,x0,x1,x2);v0=V[X]=N++;}X+=1;p0+=u0_0;for(i0=2;i0<s0;++i0){c0_0=d0[p0];b0=P[X]=phase(c0_0,x0,x1,x2);b1=P[X+e1];b2=P[X+e2];b3=P[X+e3];if(b0!==b1||b0!==b2||b0!==b3){c0_1=d0[p0+d0_1];c0_2=d0[p0+d0_2];c0_3=d0[p0+d0_3];vertex(i0,i1,c0_0,c0_1,c0_2,c0_3,b0,b1,b2,b3,x0,x1,x2);v0=V[X]=N++;if(b3!==b1){face(V[X+e1],v0,c0_3,c0_1,b3,b1,x0,x1,x2);}}X+=1;p0+=u0_0;}}p0+=u0_1;X=0;T=e1;e1=y1;y1=T;T=e2;e2=y2;y2=T;T=e3;e3=y3;y3=T;for(i1=2;i1<s1;++i1){P[X++]=phase(d0[p0],x0,x1,x2);p0+=u0_0;if(s0>0){i0=1;c0_0=d0[p0];b0=P[X]=phase(c0_0,x0,x1,x2);b1=P[X+e1];b2=P[X+e2];b3=P[X+e3];if(b0!==b1||b0!==b2||b0!==b3){c0_1=d0[p0+d0_1];c0_2=d0[p0+d0_2];c0_3=d0[p0+d0_3];vertex(i0,i1,c0_0,c0_1,c0_2,c0_3,b0,b1,b2,b3,x0,x1,x2);v0=V[X]=N++;if(b3!==b2){face(V[X+e2],v0,c0_2,c0_3,b2,b3,x0,x1,x2);}}X+=1;p0+=u0_0;for(i0=2;i0<s0;++i0){c0_0=d0[p0];b0=P[X]=phase(c0_0,x0,x1,x2);b1=P[X+e1];b2=P[X+e2];b3=P[X+e3];if(b0!==b1||b0!==b2||b0!==b3){c0_1=d0[p0+d0_1];c0_2=d0[p0+d0_2];c0_3=d0[p0+d0_3];vertex(i0,i1,c0_0,c0_1,c0_2,c0_3,b0,b1,b2,b3,x0,x1,x2);v0=V[X]=N++;if(b3!==b2){face(V[X+e2],v0,c0_2,c0_3,b2,b3,x0,x1,x2);}if(b3!==b1){face(V[X+e1],v0,c0_3,c0_1,b3,b1,x0,x1,x2);}}X+=1;p0+=u0_0;}}if(i1&1){X=0;}T=e1;e1=y1;y1=T;T=e2;e2=y2;y2=T;T=e3;e3=y3;y3=T;p0+=u0_1;}}freeUint32(V);freeUint32(P);};},\"false,1,0\":function anonymous(vertex,face,phase,mallocUint32,freeUint32){return function extractContour1_0(a0,x0,x1,x2){var s0=a0.shape[0]|0,s1=a0.shape[1]|0,d0=a0.data,o0=a0.offset|0,t0_0=a0.stride[0]|0,t0_1=a0.stride[1]|0,p0=o0,c0_0,d0_1=-t0_0|0,c0_1=0,d0_2=-t0_1|0,c0_2=0,d0_3=-t0_0-t0_1|0,c0_3=0,u0_1=t0_1|0,u0_0=t0_0-t0_1*s1|0,i0=0,i1=0,N=0,Q=2*s1|0,P=mallocUint32(Q),V=mallocUint32(Q),X=0,b0=0,e2=-1|0,y2=-1|0,b2=0,e1=-s1|0,y1=s1|0,b1=0,e3=-s1-1|0,y3=s1-1|0,b3=0,v0=0,T=0;for(i1=0;i1<s1;++i1){P[X++]=phase(d0[p0],x0,x1,x2);p0+=u0_1;}p0+=u0_0;if(s0>0){i0=1;P[X++]=phase(d0[p0],x0,x1,x2);p0+=u0_1;if(s1>0){i1=1;c0_0=d0[p0];b0=P[X]=phase(c0_0,x0,x1,x2);b1=P[X+e1];b2=P[X+e2];b3=P[X+e3];if(b0!==b1||b0!==b2||b0!==b3){c0_1=d0[p0+d0_1];c0_2=d0[p0+d0_2];c0_3=d0[p0+d0_3];vertex(i0,i1,c0_0,c0_1,c0_2,c0_3,b0,b1,b2,b3,x0,x1,x2);v0=V[X]=N++;}X+=1;p0+=u0_1;for(i1=2;i1<s1;++i1){c0_0=d0[p0];b0=P[X]=phase(c0_0,x0,x1,x2);b1=P[X+e1];b2=P[X+e2];b3=P[X+e3];if(b0!==b1||b0!==b2||b0!==b3){c0_1=d0[p0+d0_1];c0_2=d0[p0+d0_2];c0_3=d0[p0+d0_3];vertex(i0,i1,c0_0,c0_1,c0_2,c0_3,b0,b1,b2,b3,x0,x1,x2);v0=V[X]=N++;if(b3!==b2){face(V[X+e2],v0,c0_2,c0_3,b2,b3,x0,x1,x2);}}X+=1;p0+=u0_1;}}p0+=u0_0;X=0;T=e1;e1=y1;y1=T;T=e2;e2=y2;y2=T;T=e3;e3=y3;y3=T;for(i0=2;i0<s0;++i0){P[X++]=phase(d0[p0],x0,x1,x2);p0+=u0_1;if(s1>0){i1=1;c0_0=d0[p0];b0=P[X]=phase(c0_0,x0,x1,x2);b1=P[X+e1];b2=P[X+e2];b3=P[X+e3];if(b0!==b1||b0!==b2||b0!==b3){c0_1=d0[p0+d0_1];c0_2=d0[p0+d0_2];c0_3=d0[p0+d0_3];vertex(i0,i1,c0_0,c0_1,c0_2,c0_3,b0,b1,b2,b3,x0,x1,x2);v0=V[X]=N++;if(b3!==b1){face(V[X+e1],v0,c0_3,c0_1,b3,b1,x0,x1,x2);}}X+=1;p0+=u0_1;for(i1=2;i1<s1;++i1){c0_0=d0[p0];b0=P[X]=phase(c0_0,x0,x1,x2);b1=P[X+e1];b2=P[X+e2];b3=P[X+e3];if(b0!==b1||b0!==b2||b0!==b3){c0_1=d0[p0+d0_1];c0_2=d0[p0+d0_2];c0_3=d0[p0+d0_3];vertex(i0,i1,c0_0,c0_1,c0_2,c0_3,b0,b1,b2,b3,x0,x1,x2);v0=V[X]=N++;if(b3!==b2){face(V[X+e2],v0,c0_2,c0_3,b2,b3,x0,x1,x2);}if(b3!==b1){face(V[X+e1],v0,c0_3,c0_1,b3,b1,x0,x1,x2);}}X+=1;p0+=u0_1;}}if(i0&1){X=0;}T=e1;e1=y1;y1=T;T=e2;e2=y2;y2=T;T=e3;e3=y3;y3=T;p0+=u0_0;}}freeUint32(V);freeUint32(P);};}};//Generates the surface procedure\nfunction compileSurfaceProcedure(vertexFunc,faceFunc,phaseFunc,scalarArgs,order,typesig){var key=[typesig,order].join(',');var proc=allFns[key];return proc(vertexFunc,faceFunc,phaseFunc,pool.mallocUint32,pool.freeUint32);}function createSurfaceExtractor(args){function error(msg){throw new Error(\"ndarray-extract-contour: \"+msg);}if(typeof args!==\"object\"){error(\"Must specify arguments\");}var order=args.order;if(!Array.isArray(order)){error(\"Must specify order\");}var arrays=args.arrayArguments||1;if(arrays<1){error(\"Must have at least one array argument\");}var scalars=args.scalarArguments||0;if(scalars<0){error(\"Scalar arg count must be > 0\");}if(typeof args.vertex!==\"function\"){error(\"Must specify vertex creation function\");}if(typeof args.cell!==\"function\"){error(\"Must specify cell creation function\");}if(typeof args.phase!==\"function\"){error(\"Must specify phase function\");}var getters=args.getters||[];var typesig=new Array(arrays);for(var i=0;i<arrays;++i){if(getters.indexOf(i)>=0){typesig[i]=true;}else{typesig[i]=false;}}return compileSurfaceProcedure(args.vertex,args.cell,args.phase,scalars,order,typesig);}/***/},/***/9144:/***/function(module,__unused_webpack_exports,__nested_webpack_require_672075__){\"use strict\";var dup=__nested_webpack_require_672075__(3094);var CACHED_CWiseOp={zero:function(SS,a0,t0,p0){var s0=SS[0],t0p0=t0[0];p0|=0;var i0=0,d0s0=t0p0;for(i0=0;i0<s0;++i0){a0[p0]=0;p0+=d0s0;}},fdTemplate1:function(SS,a0,t0,p0,a1,t1,p1){var s0=SS[0],t0p0=t0[0],t1p0=t1[0],q0=-1*t0p0,q1=t0p0;p0|=0;p1|=0;var i0=0,d0s0=t0p0,d1s0=t1p0;for(i0=0;i0<s0;++i0){a1[p1]=0.5*(a0[p0+q0]-a0[p0+q1]);p0+=d0s0;p1+=d1s0;}},fdTemplate2:function(SS,a0,t0,p0,a1,t1,p1,a2,t2,p2){var s0=SS[0],s1=SS[1],t0p0=t0[0],t0p1=t0[1],t1p0=t1[0],t1p1=t1[1],t2p0=t2[0],t2p1=t2[1],q0=-1*t0p0,q1=t0p0,q2=-1*t0p1,q3=t0p1;p0|=0;p1|=0;p2|=0;var i0=0,i1=0,d0s0=t0p1,d0s1=t0p0-s1*t0p1,d1s0=t1p1,d1s1=t1p0-s1*t1p1,d2s0=t2p1,d2s1=t2p0-s1*t2p1;for(i1=0;i1<s0;++i1){for(i0=0;i0<s1;++i0){a1[p1]=0.5*(a0[p0+q0]-a0[p0+q1]);a2[p2]=0.5*(a0[p0+q2]-a0[p0+q3]);p0+=d0s0;p1+=d1s0;p2+=d2s0;}p0+=d0s1;p1+=d1s1;p2+=d2s1;}}};var CACHED_thunk={cdiff:function(compile){var CACHED={};return function cdiff_cwise_thunk(array0,array1,array2){var t0=array0.dtype,r0=array0.order,t1=array1.dtype,r1=array1.order,t2=array2.dtype,r2=array2.order,type=[t0,r0.join(),t1,r1.join(),t2,r2.join()].join(),proc=CACHED[type];if(!proc){CACHED[type]=proc=compile([t0,r0,t1,r1,t2,r2]);}return proc(array0.shape.slice(0),array0.data,array0.stride,array0.offset|0,array1.data,array1.stride,array1.offset|0,array2.data,array2.stride,array2.offset|0);};},zero:function(compile){var CACHED={};return function zero_cwise_thunk(array0){var t0=array0.dtype,r0=array0.order,type=[t0,r0.join()].join(),proc=CACHED[type];if(!proc){CACHED[type]=proc=compile([t0,r0]);}return proc(array0.shape.slice(0),array0.data,array0.stride,array0.offset|0);};},fdTemplate1:function(compile){var CACHED={};return function fdTemplate1_cwise_thunk(array0,array1){var t0=array0.dtype,r0=array0.order,t1=array1.dtype,r1=array1.order,type=[t0,r0.join(),t1,r1.join()].join(),proc=CACHED[type];if(!proc){CACHED[type]=proc=compile([t0,r0,t1,r1]);}return proc(array0.shape.slice(0),array0.data,array0.stride,array0.offset|0,array1.data,array1.stride,array1.offset|0);};},fdTemplate2:function(compile){var CACHED={};return function fdTemplate2_cwise_thunk(array0,array1,array4){var t0=array0.dtype,r0=array0.order,t1=array1.dtype,r1=array1.order,t4=array4.dtype,r4=array4.order,type=[t0,r0.join(),t1,r1.join(),t4,r4.join()].join(),proc=CACHED[type];if(!proc){CACHED[type]=proc=compile([t0,r0,t1,r1,t4,r4]);}return proc(array0.shape.slice(0),array0.data,array0.stride,array0.offset|0,array1.data,array1.stride,array1.offset|0,array4.data,array4.stride,array4.offset|0);};}};function createThunk(proc){var thunk=CACHED_thunk[proc.funcName];return thunk(compile.bind(undefined,proc));}function compile(proc){return CACHED_CWiseOp[proc.funcName];}function cwiseCompiler(user_args){return createThunk({funcName:user_args.funcName});}var TEMPLATE_CACHE={};var GRADIENT_CACHE={};var EmptyProc={body:\"\",args:[],thisVars:[],localVars:[]};var centralDiff=cwiseCompiler({funcName:'cdiff'});var zeroOut=cwiseCompiler({funcName:'zero'});function generateTemplate(d){if(d in TEMPLATE_CACHE){return TEMPLATE_CACHE[d];}return TEMPLATE_CACHE[d]=cwiseCompiler({funcName:'fdTemplate'+d});}function CACHED_link(diff,zero,grad1,grad2){return function(dst,src){var s=src.shape.slice();if(  true&&s[0]>2&&s[1]>2){grad2(src.pick(-1,-1).lo(1,1).hi(s[0]-2,s[1]-2),dst.pick(-1,-1,0).lo(1,1).hi(s[0]-2,s[1]-2),dst.pick(-1,-1,1).lo(1,1).hi(s[0]-2,s[1]-2));}if(  true&&s[1]>2){grad1(src.pick(0,-1).lo(1).hi(s[1]-2),dst.pick(0,-1,1).lo(1).hi(s[1]-2));zero(dst.pick(0,-1,0).lo(1).hi(s[1]-2));}if(  true&&s[1]>2){grad1(src.pick(s[0]-1,-1).lo(1).hi(s[1]-2),dst.pick(s[0]-1,-1,1).lo(1).hi(s[1]-2));zero(dst.pick(s[0]-1,-1,0).lo(1).hi(s[1]-2));}if(  true&&s[0]>2){grad1(src.pick(-1,0).lo(1).hi(s[0]-2),dst.pick(-1,0,0).lo(1).hi(s[0]-2));zero(dst.pick(-1,0,1).lo(1).hi(s[0]-2));}if(  true&&s[0]>2){grad1(src.pick(-1,s[1]-1).lo(1).hi(s[0]-2),dst.pick(-1,s[1]-1,0).lo(1).hi(s[0]-2));zero(dst.pick(-1,s[1]-1,1).lo(1).hi(s[0]-2));}dst.set(0,0,0,0);dst.set(0,0,1,0);dst.set(s[0]-1,0,0,0);dst.set(s[0]-1,0,1,0);dst.set(0,s[1]-1,0,0);dst.set(0,s[1]-1,1,0);dst.set(s[0]-1,s[1]-1,0,0);dst.set(s[0]-1,s[1]-1,1,0);return dst;};}function generateGradient(boundaryConditions){var token=boundaryConditions.join();var proc=GRADIENT_CACHE[token];if(proc){return proc;}var d=boundaryConditions.length;var linkArgs=[centralDiff,zeroOut];for(var i=1;i<=d;++i){linkArgs.push(generateTemplate(i));}var link=CACHED_link;var proc=link.apply(void 0,linkArgs);GRADIENT_CACHE[token]=proc;return proc;}module.exports=function gradient(out,inp,bc){if(!Array.isArray(bc)){if(typeof bc==='string'){bc=dup(inp.dimension,bc);}else{bc=dup(inp.dimension,'clamp');}}if(inp.size===0){return out;}if(inp.dimension===0){out.set(0);return out;}var cached=generateGradient(bc);return cached(out,inp);};/***/},/***/3581:/***/function(module){\"use strict\";function interp1d(arr,x){var ix=Math.floor(x),fx=x-ix,s0=0<=ix&&ix<arr.shape[0],s1=0<=ix+1&&ix+1<arr.shape[0],w0=s0?+arr.get(ix):0.0,w1=s1?+arr.get(ix+1):0.0;return(1.0-fx)*w0+fx*w1;}function interp2d(arr,x,y){var ix=Math.floor(x),fx=x-ix,s0=0<=ix&&ix<arr.shape[0],s1=0<=ix+1&&ix+1<arr.shape[0],iy=Math.floor(y),fy=y-iy,t0=0<=iy&&iy<arr.shape[1],t1=0<=iy+1&&iy+1<arr.shape[1],w00=s0&&t0?arr.get(ix,iy):0.0,w01=s0&&t1?arr.get(ix,iy+1):0.0,w10=s1&&t0?arr.get(ix+1,iy):0.0,w11=s1&&t1?arr.get(ix+1,iy+1):0.0;return(1.0-fy)*((1.0-fx)*w00+fx*w10)+fy*((1.0-fx)*w01+fx*w11);}function interp3d(arr,x,y,z){var ix=Math.floor(x),fx=x-ix,s0=0<=ix&&ix<arr.shape[0],s1=0<=ix+1&&ix+1<arr.shape[0],iy=Math.floor(y),fy=y-iy,t0=0<=iy&&iy<arr.shape[1],t1=0<=iy+1&&iy+1<arr.shape[1],iz=Math.floor(z),fz=z-iz,u0=0<=iz&&iz<arr.shape[2],u1=0<=iz+1&&iz+1<arr.shape[2],w000=s0&&t0&&u0?arr.get(ix,iy,iz):0.0,w010=s0&&t1&&u0?arr.get(ix,iy+1,iz):0.0,w100=s1&&t0&&u0?arr.get(ix+1,iy,iz):0.0,w110=s1&&t1&&u0?arr.get(ix+1,iy+1,iz):0.0,w001=s0&&t0&&u1?arr.get(ix,iy,iz+1):0.0,w011=s0&&t1&&u1?arr.get(ix,iy+1,iz+1):0.0,w101=s1&&t0&&u1?arr.get(ix+1,iy,iz+1):0.0,w111=s1&&t1&&u1?arr.get(ix+1,iy+1,iz+1):0.0;return(1.0-fz)*((1.0-fy)*((1.0-fx)*w000+fx*w100)+fy*((1.0-fx)*w010+fx*w110))+fz*((1.0-fy)*((1.0-fx)*w001+fx*w101)+fy*((1.0-fx)*w011+fx*w111));}function interpNd(arr){var d=arr.shape.length|0,ix=new Array(d),fx=new Array(d),s0=new Array(d),s1=new Array(d),i,t;for(i=0;i<d;++i){t=+arguments[i+1];ix[i]=Math.floor(t);fx[i]=t-ix[i];s0[i]=0<=ix[i]&&ix[i]<arr.shape[i];s1[i]=0<=ix[i]+1&&ix[i]+1<arr.shape[i];}var r=0.0,j,w,idx;i_loop:for(i=0;i<1<<d;++i){w=1.0;idx=arr.offset;for(j=0;j<d;++j){if(i&1<<j){if(!s1[j]){continue i_loop;}w*=fx[j];idx+=arr.stride[j]*(ix[j]+1);}else{if(!s0[j]){continue i_loop;}w*=1.0-fx[j];idx+=arr.stride[j]*ix[j];}}r+=w*arr.data[idx];}return r;}function interpolate(arr,x,y,z){switch(arr.shape.length){case 0:return 0.0;case 1:return interp1d(arr,x);case 2:return interp2d(arr,x,y);case 3:return interp3d(arr,x,y,z);default:return interpNd.apply(undefined,arguments);}}module.exports=interpolate;module.exports.d1=interp1d;module.exports.d2=interp2d;module.exports.d3=interp3d;/***/},/***/7498:/***/function(__unused_webpack_module,exports){\"use strict\";var CACHED_CWiseOp={'float64,2,1,0':function(){return function divseq_cwise_loop_2s1s0m3f64(SS,a0,t0,p0,Y0){var s0=SS[0],s1=SS[1],s2=SS[2],t0p0=t0[0],t0p1=t0[1],t0p2=t0[2];p0|=0;var i0=0,i1=0,i2=0,d0s0=t0p2,d0s1=t0p1-s2*t0p2,d0s2=t0p0-s1*t0p1;for(i2=0;i2<s0;++i2){for(i1=0;i1<s1;++i1){for(i0=0;i0<s2;++i0){a0[p0]/=Y0;p0+=d0s0;}p0+=d0s1;}p0+=d0s2;}};},'uint8,2,0,1,float64,2,1,0':function(){return function muls_cwise_loop_2s0s1m1u8f64(SS,a0,t0,p0,a1,t1,p1,Y0){var s0=SS[0],s1=SS[1],s2=SS[2],t0p0=t0[0],t0p1=t0[1],t0p2=t0[2],t1p0=t1[0],t1p1=t1[1],t1p2=t1[2];p0|=0;p1|=0;var offset0=p0;var offset1=p1;for(var j1=SS[0]|0;j1>0;){if(j1<64){s0=j1;j1=0;}else{s0=64;j1-=64;}for(var j2=SS[1]|0;j2>0;){if(j2<64){s1=j2;j2=0;}else{s1=64;j2-=64;}p0=offset0+j1*t0p0+j2*t0p1;p1=offset1+j1*t1p0+j2*t1p1;var i0=0,i1=0,i2=0,d0s0=t0p2,d0s1=t0p0-s2*t0p2,d0s2=t0p1-s0*t0p0,d1s0=t1p2,d1s1=t1p0-s2*t1p2,d1s2=t1p1-s0*t1p0;for(i2=0;i2<s1;++i2){for(i1=0;i1<s0;++i1){for(i0=0;i0<s2;++i0){a0[p0]=a1[p1]*Y0;p0+=d0s0;p1+=d1s0;}p0+=d0s1;p1+=d1s1;}p0+=d0s2;p1+=d1s2;}}}};},'float32,1,0,float32,1,0':function(){return function assign_cwise_loop_1s0m2f32(SS,a0,t0,p0,a1,t1,p1){var s0=SS[0],s1=SS[1],t0p0=t0[0],t0p1=t0[1],t1p0=t1[0],t1p1=t1[1];p0|=0;p1|=0;var i0=0,i1=0,d0s0=t0p1,d0s1=t0p0-s1*t0p1,d1s0=t1p1,d1s1=t1p0-s1*t1p1;for(i1=0;i1<s0;++i1){for(i0=0;i0<s1;++i0){a0[p0]=a1[p1];p0+=d0s0;p1+=d1s0;}p0+=d0s1;p1+=d1s1;}};},'float32,1,0,float32,0,1':function(){return function assign_cwise_loop_1s0m0f32(SS,a0,t0,p0,a1,t1,p1){var s0=SS[0],s1=SS[1],t0p0=t0[0],t0p1=t0[1],t1p0=t1[0],t1p1=t1[1];p0|=0;p1|=0;var offset0=p0;var offset1=p1;for(var j0=SS[1]|0;j0>0;){if(j0<64){s1=j0;j0=0;}else{s1=64;j0-=64;}for(var j1=SS[0]|0;j1>0;){if(j1<64){s0=j1;j1=0;}else{s0=64;j1-=64;}p0=offset0+j0*t0p1+j1*t0p0;p1=offset1+j0*t1p1+j1*t1p0;var i0=0,i1=0,d0s0=t0p1,d0s1=t0p0-s1*t0p1,d1s0=t1p1,d1s1=t1p0-s1*t1p1;for(i1=0;i1<s0;++i1){for(i0=0;i0<s1;++i0){a0[p0]=a1[p1];p0+=d0s0;p1+=d1s0;}p0+=d0s1;p1+=d1s1;}}}};},'uint8,2,0,1,uint8,1,2,0':function(){return function assign_cwise_loop_2s0s1m0u8(SS,a0,t0,p0,a1,t1,p1){var s0=SS[0],s1=SS[1],s2=SS[2],t0p0=t0[0],t0p1=t0[1],t0p2=t0[2],t1p0=t1[0],t1p1=t1[1],t1p2=t1[2];p0|=0;p1|=0;var offset0=p0;var offset1=p1;for(var j0=SS[2]|0;j0>0;){if(j0<64){s2=j0;j0=0;}else{s2=64;j0-=64;}for(var j1=SS[0]|0;j1>0;){if(j1<64){s0=j1;j1=0;}else{s0=64;j1-=64;}for(var j2=SS[1]|0;j2>0;){if(j2<64){s1=j2;j2=0;}else{s1=64;j2-=64;}p0=offset0+j0*t0p2+j1*t0p0+j2*t0p1;p1=offset1+j0*t1p2+j1*t1p0+j2*t1p1;var i0=0,i1=0,i2=0,d0s0=t0p2,d0s1=t0p0-s2*t0p2,d0s2=t0p1-s0*t0p0,d1s0=t1p2,d1s1=t1p0-s2*t1p2,d1s2=t1p1-s0*t1p0;for(i2=0;i2<s1;++i2){for(i1=0;i1<s0;++i1){for(i0=0;i0<s2;++i0){a0[p0]=a1[p1];p0+=d0s0;p1+=d1s0;}p0+=d0s1;p1+=d1s1;}p0+=d0s2;p1+=d1s2;}}}}};},'uint8,2,0,1,array,2,0,1':function(){return function assign_cwise_loop_2s0s1m3u8a(SS,a0,t0,p0,a1,t1,p1){var s0=SS[0],s1=SS[1],s2=SS[2],t0p0=t0[0],t0p1=t0[1],t0p2=t0[2],t1p0=t1[0],t1p1=t1[1],t1p2=t1[2];p0|=0;p1|=0;var i0=0,i1=0,i2=0,d0s0=t0p2,d0s1=t0p0-s2*t0p2,d0s2=t0p1-s0*t0p0,d1s0=t1p2,d1s1=t1p0-s2*t1p2,d1s2=t1p1-s0*t1p0;for(i2=0;i2<s1;++i2){for(i1=0;i1<s0;++i1){for(i0=0;i0<s2;++i0){a0[p0]=a1[p1];p0+=d0s0;p1+=d1s0;}p0+=d0s1;p1+=d1s1;}p0+=d0s2;p1+=d1s2;}};}};//Generates a cwise operator\nfunction generateCWiseOp(proc,typesig){var key=typesig.join(',');var f=CACHED_CWiseOp[key];return f();}var compile=generateCWiseOp;var CACHED_thunk={mul:function(compile){var CACHED={};return function mul_cwise_thunk(array0,array1,array2){var t0=array0.dtype,r0=array0.order,t1=array1.dtype,r1=array1.order,t2=array2.dtype,r2=array2.order,type=[t0,r0.join(),t1,r1.join(),t2,r2.join()].join(),proc=CACHED[type];if(!proc){CACHED[type]=proc=compile([t0,r0,t1,r1,t2,r2]);}return proc(array0.shape.slice(0),array0.data,array0.stride,array0.offset|0,array1.data,array1.stride,array1.offset|0,array2.data,array2.stride,array2.offset|0);};},muls:function(compile){var CACHED={};return function muls_cwise_thunk(array0,array1,scalar2){var t0=array0.dtype,r0=array0.order,t1=array1.dtype,r1=array1.order,type=[t0,r0.join(),t1,r1.join()].join(),proc=CACHED[type];if(!proc){CACHED[type]=proc=compile([t0,r0,t1,r1]);}return proc(array0.shape.slice(0),array0.data,array0.stride,array0.offset|0,array1.data,array1.stride,array1.offset|0,scalar2);};},mulseq:function(compile){var CACHED={};return function mulseq_cwise_thunk(array0,scalar1){var t0=array0.dtype,r0=array0.order,type=[t0,r0.join()].join(),proc=CACHED[type];if(!proc){CACHED[type]=proc=compile([t0,r0]);}return proc(array0.shape.slice(0),array0.data,array0.stride,array0.offset|0,scalar1);};},div:function(compile){var CACHED={};return function div_cwise_thunk(array0,array1,array2){var t0=array0.dtype,r0=array0.order,t1=array1.dtype,r1=array1.order,t2=array2.dtype,r2=array2.order,type=[t0,r0.join(),t1,r1.join(),t2,r2.join()].join(),proc=CACHED[type];if(!proc){CACHED[type]=proc=compile([t0,r0,t1,r1,t2,r2]);}return proc(array0.shape.slice(0),array0.data,array0.stride,array0.offset|0,array1.data,array1.stride,array1.offset|0,array2.data,array2.stride,array2.offset|0);};},divs:function(compile){var CACHED={};return function divs_cwise_thunk(array0,array1,scalar2){var t0=array0.dtype,r0=array0.order,t1=array1.dtype,r1=array1.order,type=[t0,r0.join(),t1,r1.join()].join(),proc=CACHED[type];if(!proc){CACHED[type]=proc=compile([t0,r0,t1,r1]);}return proc(array0.shape.slice(0),array0.data,array0.stride,array0.offset|0,array1.data,array1.stride,array1.offset|0,scalar2);};},divseq:function(compile){var CACHED={};return function divseq_cwise_thunk(array0,scalar1){var t0=array0.dtype,r0=array0.order,type=[t0,r0.join()].join(),proc=CACHED[type];if(!proc){CACHED[type]=proc=compile([t0,r0]);}return proc(array0.shape.slice(0),array0.data,array0.stride,array0.offset|0,scalar1);};},assign:function(compile){var CACHED={};return function assign_cwise_thunk(array0,array1){var t0=array0.dtype,r0=array0.order,t1=array1.dtype,r1=array1.order,type=[t0,r0.join(),t1,r1.join()].join(),proc=CACHED[type];if(!proc){CACHED[type]=proc=compile([t0,r0,t1,r1]);}return proc(array0.shape.slice(0),array0.data,array0.stride,array0.offset|0,array1.data,array1.stride,array1.offset|0);};}};function createThunk(proc){var thunk=CACHED_thunk[proc.funcName];return thunk(compile.bind(undefined,proc));}function makeOp(user_args){return createThunk({funcName:user_args.funcName});}var assign_ops={mul:\"*\",div:\"/\"};(function(){for(var id in assign_ops){exports[id]=makeOp({funcName:id});exports[id+\"s\"]=makeOp({funcName:id+\"s\"});exports[id+\"seq\"]=makeOp({funcName:id+\"seq\"});}})();exports.assign=makeOp({funcName:\"assign\"});/***/},/***/7382:/***/function(module,__unused_webpack_exports,__nested_webpack_require_685819__){\"use strict\";var ndarray=__nested_webpack_require_685819__(5050);var do_convert=__nested_webpack_require_685819__(9262);module.exports=function convert(arr,result){var shape=[],c=arr,sz=1;while(Array.isArray(c)){shape.push(c.length);sz*=c.length;c=c[0];}if(shape.length===0){return ndarray();}if(!result){result=ndarray(new Float64Array(sz),shape);}do_convert(result,arr);return result;};/***/},/***/9262:/***/function(module){\"use strict\";function CwiseOp(){return function(SS,a0,t0,p0,Y0){var s0=SS[0],s1=SS[1],s2=SS[2],t0p0=t0[0],t0p1=t0[1],t0p2=t0[2],index=[0,0,0];p0|=0;var i0=0,i1=0,i2=0,d0s0=t0p2,d0s1=t0p1-s2*t0p2,d0s2=t0p0-s1*t0p1;for(i2=0;i2<s0;++i2){for(i1=0;i1<s1;++i1){for(i0=0;i0<s2;++i0){{var _inline_1_v=Y0,_inline_1_i;for(_inline_1_i=0;_inline_1_i<index.length-1;++_inline_1_i){_inline_1_v=_inline_1_v[index[_inline_1_i]];}a0[p0]=_inline_1_v[index[index.length-1]];}p0+=d0s0;++index[2];}p0+=d0s1;index[2]-=s2;++index[1];}p0+=d0s2;index[1]-=s1;++index[0];}};}//Generates a cwise operator\nfunction generateCWiseOp(){return CwiseOp();}var compile=generateCWiseOp;function thunk(compile){var CACHED={};return function convert_cwise_thunk(array0,scalar1){var t0=array0.dtype,r0=array0.order,type=[t0,r0.join()].join(),proc=CACHED[type];if(!proc){CACHED[type]=proc=compile([t0,r0]);}return proc(array0.shape.slice(0),array0.data,array0.stride,array0.offset|0,scalar1);};}function createThunk(proc){return thunk(compile.bind(undefined,proc));}function compileCwise(user_args){return createThunk({funcName:user_args.funcName});}module.exports=compileCwise({funcName:\"convert\"});/***/},/***/8139:/***/function(module,__unused_webpack_exports,__nested_webpack_require_687462__){\"use strict\";var pool=__nested_webpack_require_687462__(5306);function getMallocFree(dtype){switch(dtype){case\"uint32\":return[pool.mallocUint32,pool.freeUint32];default:return null;}}var CACHED_insertionSort={\"uint32,1,0\":function(malloc,free){return function ndarrayInsertionSort1d0uint32(left,right,data,offset,s0,s1,n0,n1,d1,e1,f1){var i,j,cptr,ptr=left*s0+offset,i1,scratch=malloc(n1),dptr,sptr,a,b;for(i=left+1;i<=right;++i){j=i;ptr+=s0;cptr=ptr;dptr=0;sptr=ptr;for(i1=0;i1<n1;++i1){scratch[dptr++]=data[sptr];sptr+=d1;}__g:while(j-->left){dptr=0;sptr=cptr-s0;__l:for(i1=0;i1<n1;++i1){a=data[sptr];b=scratch[dptr];if(a<b){break __g;}if(a>b){break __l;}sptr+=e1;dptr+=f1;}dptr=cptr;sptr=cptr-s0;for(i1=0;i1<n1;++i1){data[dptr]=data[sptr];dptr+=d1;sptr+=d1;}cptr-=s0;}dptr=cptr;sptr=0;for(i1=0;i1<n1;++i1){data[dptr]=scratch[sptr++];dptr+=d1;}}free(scratch);};}};function createInsertionSort(order,dtype){var allocator=getMallocFree(dtype);var key=[dtype,order].join(',');var result=CACHED_insertionSort[key];if(allocator){return result(allocator[0],allocator[1]);}else{return result();}}var CACHED_quickSort={\"uint32,1,0\":function(insertionSort,malloc,free){return function ndarrayQuickSort1d0uint32(left,right,data,offset,s0,s1,n0,n1,d1,e1,f1){var sixth=(right-left+1)/6|0,index1=left+sixth,index5=right-sixth,index3=left+right>>1,index2=index3-sixth,index4=index3+sixth,el1=index1,el2=index2,el3=index3,el4=index4,el5=index5,less=left+1,great=right-1,pivots_are_equal=true,tmp,tmp0,x,y,z,k,ptr0,ptr1,ptr2,comp_pivot1=0,comp_pivot2=0,comp=0,i1,b_ptr0,b_ptr1,b_ptr2,b_ptr3,b_ptr4,b_ptr5,b_ptr6,b_ptr7,ptr3,ptr4,ptr5,ptr6,ptr7,pivot_ptr,ptr_shift,elementSize=n1,pivot1=malloc(elementSize),pivot2=malloc(elementSize);b_ptr0=s0*el1;b_ptr1=s0*el2;ptr_shift=offset;__l1:for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;comp=data[ptr0]-data[ptr1];if(comp>0){tmp0=el1;el1=el2;el2=tmp0;break __l1;}if(comp<0){break __l1;}ptr_shift+=e1;}b_ptr0=s0*el4;b_ptr1=s0*el5;ptr_shift=offset;__l2:for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;comp=data[ptr0]-data[ptr1];if(comp>0){tmp0=el4;el4=el5;el5=tmp0;break __l2;}if(comp<0){break __l2;}ptr_shift+=e1;}b_ptr0=s0*el1;b_ptr1=s0*el3;ptr_shift=offset;__l3:for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;comp=data[ptr0]-data[ptr1];if(comp>0){tmp0=el1;el1=el3;el3=tmp0;break __l3;}if(comp<0){break __l3;}ptr_shift+=e1;}b_ptr0=s0*el2;b_ptr1=s0*el3;ptr_shift=offset;__l4:for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;comp=data[ptr0]-data[ptr1];if(comp>0){tmp0=el2;el2=el3;el3=tmp0;break __l4;}if(comp<0){break __l4;}ptr_shift+=e1;}b_ptr0=s0*el1;b_ptr1=s0*el4;ptr_shift=offset;__l5:for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;comp=data[ptr0]-data[ptr1];if(comp>0){tmp0=el1;el1=el4;el4=tmp0;break __l5;}if(comp<0){break __l5;}ptr_shift+=e1;}b_ptr0=s0*el3;b_ptr1=s0*el4;ptr_shift=offset;__l6:for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;comp=data[ptr0]-data[ptr1];if(comp>0){tmp0=el3;el3=el4;el4=tmp0;break __l6;}if(comp<0){break __l6;}ptr_shift+=e1;}b_ptr0=s0*el2;b_ptr1=s0*el5;ptr_shift=offset;__l7:for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;comp=data[ptr0]-data[ptr1];if(comp>0){tmp0=el2;el2=el5;el5=tmp0;break __l7;}if(comp<0){break __l7;}ptr_shift+=e1;}b_ptr0=s0*el2;b_ptr1=s0*el3;ptr_shift=offset;__l8:for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;comp=data[ptr0]-data[ptr1];if(comp>0){tmp0=el2;el2=el3;el3=tmp0;break __l8;}if(comp<0){break __l8;}ptr_shift+=e1;}b_ptr0=s0*el4;b_ptr1=s0*el5;ptr_shift=offset;__l9:for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;comp=data[ptr0]-data[ptr1];if(comp>0){tmp0=el4;el4=el5;el5=tmp0;break __l9;}if(comp<0){break __l9;}ptr_shift+=e1;}b_ptr0=s0*el1;b_ptr1=s0*el2;b_ptr2=s0*el3;b_ptr3=s0*el4;b_ptr4=s0*el5;b_ptr5=s0*index1;b_ptr6=s0*index3;b_ptr7=s0*index5;pivot_ptr=0;ptr_shift=offset;for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;ptr2=b_ptr2+ptr_shift;ptr3=b_ptr3+ptr_shift;ptr4=b_ptr4+ptr_shift;ptr5=b_ptr5+ptr_shift;ptr6=b_ptr6+ptr_shift;ptr7=b_ptr7+ptr_shift;pivot1[pivot_ptr]=data[ptr1];pivot2[pivot_ptr]=data[ptr3];pivots_are_equal=pivots_are_equal&&pivot1[pivot_ptr]===pivot2[pivot_ptr];x=data[ptr0];y=data[ptr2];z=data[ptr4];data[ptr5]=x;data[ptr6]=y;data[ptr7]=z;++pivot_ptr;ptr_shift+=d1;}b_ptr0=s0*index2;b_ptr1=s0*left;ptr_shift=offset;for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;data[ptr0]=data[ptr1];ptr_shift+=d1;}b_ptr0=s0*index4;b_ptr1=s0*right;ptr_shift=offset;for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;data[ptr0]=data[ptr1];ptr_shift+=d1;}if(pivots_are_equal){for(k=less;k<=great;++k){ptr0=offset+k*s0;pivot_ptr=0;__l10:for(i1=0;i1<n1;++i1){comp=data[ptr0]-pivot1[pivot_ptr];if(comp!==0){break __l10;}pivot_ptr+=f1;ptr0+=e1;}if(comp===0){continue;}if(comp<0){if(k!==less){b_ptr0=s0*k;b_ptr1=s0*less;ptr_shift=offset;for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;tmp=data[ptr0];data[ptr0]=data[ptr1];data[ptr1]=tmp;ptr_shift+=d1;}}++less;}else{while(true){ptr0=offset+great*s0;pivot_ptr=0;__l11:for(i1=0;i1<n1;++i1){comp=data[ptr0]-pivot1[pivot_ptr];if(comp!==0){break __l11;}pivot_ptr+=f1;ptr0+=e1;}if(comp>0){great--;}else if(comp<0){b_ptr0=s0*k;b_ptr1=s0*less;b_ptr2=s0*great;ptr_shift=offset;for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;ptr2=b_ptr2+ptr_shift;tmp=data[ptr0];data[ptr0]=data[ptr1];data[ptr1]=data[ptr2];data[ptr2]=tmp;ptr_shift+=d1;}++less;--great;break;}else{b_ptr0=s0*k;b_ptr1=s0*great;ptr_shift=offset;for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;tmp=data[ptr0];data[ptr0]=data[ptr1];data[ptr1]=tmp;ptr_shift+=d1;}--great;break;}}}}}else{for(k=less;k<=great;++k){ptr0=offset+k*s0;pivot_ptr=0;__l12:for(i1=0;i1<n1;++i1){comp_pivot1=data[ptr0]-pivot1[pivot_ptr];if(comp_pivot1!==0){break __l12;}pivot_ptr+=f1;ptr0+=e1;}if(comp_pivot1<0){if(k!==less){b_ptr0=s0*k;b_ptr1=s0*less;ptr_shift=offset;for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;tmp=data[ptr0];data[ptr0]=data[ptr1];data[ptr1]=tmp;ptr_shift+=d1;}}++less;}else{ptr0=offset+k*s0;pivot_ptr=0;__l13:for(i1=0;i1<n1;++i1){comp_pivot2=data[ptr0]-pivot2[pivot_ptr];if(comp_pivot2!==0){break __l13;}pivot_ptr+=f1;ptr0+=e1;}if(comp_pivot2>0){while(true){ptr0=offset+great*s0;pivot_ptr=0;__l14:for(i1=0;i1<n1;++i1){comp=data[ptr0]-pivot2[pivot_ptr];if(comp!==0){break __l14;}pivot_ptr+=f1;ptr0+=e1;}if(comp>0){if(--great<k){break;}continue;}else{ptr0=offset+great*s0;pivot_ptr=0;__l15:for(i1=0;i1<n1;++i1){comp=data[ptr0]-pivot1[pivot_ptr];if(comp!==0){break __l15;}pivot_ptr+=f1;ptr0+=e1;}if(comp<0){b_ptr0=s0*k;b_ptr1=s0*less;b_ptr2=s0*great;ptr_shift=offset;for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;ptr2=b_ptr2+ptr_shift;tmp=data[ptr0];data[ptr0]=data[ptr1];data[ptr1]=data[ptr2];data[ptr2]=tmp;ptr_shift+=d1;}++less;--great;}else{b_ptr0=s0*k;b_ptr1=s0*great;ptr_shift=offset;for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;tmp=data[ptr0];data[ptr0]=data[ptr1];data[ptr1]=tmp;ptr_shift+=d1;}--great;}break;}}}}}}b_ptr0=s0*left;b_ptr1=s0*(less-1);pivot_ptr=0;ptr_shift=offset;for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;data[ptr0]=data[ptr1];data[ptr1]=pivot1[pivot_ptr];++pivot_ptr;ptr_shift+=d1;}b_ptr0=s0*right;b_ptr1=s0*(great+1);pivot_ptr=0;ptr_shift=offset;for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;data[ptr0]=data[ptr1];data[ptr1]=pivot2[pivot_ptr];++pivot_ptr;ptr_shift+=d1;}if(less-2-left<=32){insertionSort(left,less-2,data,offset,s0,s1,n0,n1,d1,e1,f1);}else{ndarrayQuickSort1d0uint32(left,less-2,data,offset,s0,s1,n0,n1,d1,e1,f1);}if(right-(great+2)<=32){insertionSort(great+2,right,data,offset,s0,s1,n0,n1,d1,e1,f1);}else{ndarrayQuickSort1d0uint32(great+2,right,data,offset,s0,s1,n0,n1,d1,e1,f1);}if(pivots_are_equal){free(pivot1);free(pivot2);return;}if(less<index1&&great>index5){__l16:while(true){ptr0=offset+less*s0;pivot_ptr=0;ptr_shift=offset;for(i1=0;i1<n1;++i1){if(data[ptr0]!==pivot1[pivot_ptr]){break __l16;}++pivot_ptr;ptr0+=d1;}++less;}__l17:while(true){ptr0=offset+great*s0;pivot_ptr=0;ptr_shift=offset;for(i1=0;i1<n1;++i1){if(data[ptr0]!==pivot2[pivot_ptr]){break __l17;}++pivot_ptr;ptr0+=d1;}--great;}for(k=less;k<=great;++k){ptr0=offset+k*s0;pivot_ptr=0;__l18:for(i1=0;i1<n1;++i1){comp_pivot1=data[ptr0]-pivot1[pivot_ptr];if(comp_pivot1!==0){break __l18;}pivot_ptr+=f1;ptr0+=e1;}if(comp_pivot1===0){if(k!==less){b_ptr0=s0*k;b_ptr1=s0*less;ptr_shift=offset;for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;tmp=data[ptr0];data[ptr0]=data[ptr1];data[ptr1]=tmp;ptr_shift+=d1;}}++less;}else{ptr0=offset+k*s0;pivot_ptr=0;__l19:for(i1=0;i1<n1;++i1){comp_pivot2=data[ptr0]-pivot2[pivot_ptr];if(comp_pivot2!==0){break __l19;}pivot_ptr+=f1;ptr0+=e1;}if(comp_pivot2===0){while(true){ptr0=offset+great*s0;pivot_ptr=0;__l20:for(i1=0;i1<n1;++i1){comp=data[ptr0]-pivot2[pivot_ptr];if(comp!==0){break __l20;}pivot_ptr+=f1;ptr0+=e1;}if(comp===0){if(--great<k){break;}continue;}else{ptr0=offset+great*s0;pivot_ptr=0;__l21:for(i1=0;i1<n1;++i1){comp=data[ptr0]-pivot1[pivot_ptr];if(comp!==0){break __l21;}pivot_ptr+=f1;ptr0+=e1;}if(comp<0){b_ptr0=s0*k;b_ptr1=s0*less;b_ptr2=s0*great;ptr_shift=offset;for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;ptr2=b_ptr2+ptr_shift;tmp=data[ptr0];data[ptr0]=data[ptr1];data[ptr1]=data[ptr2];data[ptr2]=tmp;ptr_shift+=d1;}++less;--great;}else{b_ptr0=s0*k;b_ptr1=s0*great;ptr_shift=offset;for(i1=0;i1<n1;++i1){ptr0=b_ptr0+ptr_shift;ptr1=b_ptr1+ptr_shift;tmp=data[ptr0];data[ptr0]=data[ptr1];data[ptr1]=tmp;ptr_shift+=d1;}--great;}break;}}}}}}free(pivot1);free(pivot2);if(great-less<=32){insertionSort(less,great,data,offset,s0,s1,n0,n1,d1,e1,f1);}else{ndarrayQuickSort1d0uint32(less,great,data,offset,s0,s1,n0,n1,d1,e1,f1);}};}};function createQuickSort(order,dtype,insertionSort){var allocator=getMallocFree(dtype);var key=[dtype,order].join(',');var result=CACHED_quickSort[key];if(order.length>1&&allocator){return result(insertionSort,allocator[0],allocator[1]);}else{return result(insertionSort);}}var CACHED_sort={\"uint32,1,0\":function(insertionSort,quickSort){return function(array){var data=array.data,offset=array.offset|0,shape=array.shape,stride=array.stride,s0=stride[0]|0,n0=shape[0]|0,s1=stride[1]|0,n1=shape[1]|0,d1=s1,e1=s1,f1=1;if(n0<=32){insertionSort(0,n0-1,data,offset,s0,s1,n0,n1,d1,e1,f1);}else{quickSort(0,n0-1,data,offset,s0,s1,n0,n1,d1,e1,f1);}};}};function compileSort(order,dtype){var key=[dtype,order].join(',');var result=CACHED_sort[key];var insertionSort=createInsertionSort(order,dtype);var quickSort=createQuickSort(order,dtype,insertionSort);return result(insertionSort,quickSort);}module.exports=compileSort;/***/},/***/8729:/***/function(module,__unused_webpack_exports,__nested_webpack_require_698313__){\"use strict\";var compile=__nested_webpack_require_698313__(8139);var CACHE={};function sort(array){var order=array.order;var dtype=array.dtype;var typeSig=[order,dtype];var typeName=typeSig.join(\":\");var compiled=CACHE[typeName];if(!compiled){CACHE[typeName]=compiled=compile(order,dtype);}compiled(array);return array;}module.exports=sort;/***/},/***/5050:/***/function(module,__unused_webpack_exports,__nested_webpack_require_698723__){var isBuffer=__nested_webpack_require_698723__(4780);var hasTypedArrays=typeof Float64Array!==\"undefined\";function compare1st(a,b){return a[0]-b[0];}function order(){var stride=this.stride;var terms=new Array(stride.length);var i;for(i=0;i<terms.length;++i){terms[i]=[Math.abs(stride[i]),i];}terms.sort(compare1st);var result=new Array(terms.length);for(i=0;i<result.length;++i){result[i]=terms[i][1];}return result;}var allFns={// Special case for trivial arrays\nT:function(dtype){function View(a){this.data=a;}var proto=View.prototype;proto.dtype=dtype;proto.index=function(){return-1;};proto.size=0;proto.dimension=-1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function(){return new View(this.data);};proto.get=proto.set=function(){};proto.pick=function(){return null;};return function construct(a){return new View(a);};},// Special case for 0d arrays\n0:function(dtype,TrivialArray){function View(a,d){this.data=a;this.offset=d;}var proto=View.prototype;proto.dtype=dtype;proto.index=function(){return this.offset;};proto.dimension=0;proto.size=1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function copy(){return new View(this.data,this.offset);};proto.pick=function pick(){return TrivialArray(this.data);};proto.valueOf=proto.get=function get(){return dtype===\"generic\"?this.data.get(this.offset):this.data[this.offset];};proto.set=function set(v){return dtype===\"generic\"?this.data.set(this.offset,v):this.data[this.offset]=v;};return function construct(a,b,c,d){return new View(a,d);};},1:function(dtype,CTOR_LIST,ORDER){function View(a,b0,c0,d){this.data=a;this.shape=[b0];this.stride=[c0];this.offset=d|0;}var proto=View.prototype;proto.dtype=dtype;proto.dimension=1;Object.defineProperty(proto,\"size\",{get:function size(){return this.shape[0];}});proto.order=[0];proto.set=function set(i0,v){return dtype===\"generic\"?this.data.set(this.offset+this.stride[0]*i0,v):this.data[this.offset+this.stride[0]*i0]=v;};proto.get=function get(i0){return dtype===\"generic\"?this.data.get(this.offset+this.stride[0]*i0):this.data[this.offset+this.stride[0]*i0];};proto.index=function index(i0){return this.offset+this.stride[0]*i0;};proto.hi=function hi(i0){return new View(this.data,typeof i0!==\"number\"||i0<0?this.shape[0]:i0|0,this.stride[0],this.offset);};proto.lo=function lo(i0){var b=this.offset,d=0,a0=this.shape[0],c0=this.stride[0];if(typeof i0===\"number\"&&i0>=0){d=i0|0;b+=c0*d;a0-=d;}return new View(this.data,a0,c0,b);};proto.step=function step(i0){var a0=this.shape[0],b0=this.stride[0],c=this.offset,d=0,ceil=Math.ceil;if(typeof i0===\"number\"){d=i0|0;if(d<0){c+=b0*(a0-1);a0=ceil(-a0/d);}else{a0=ceil(a0/d);}b0*=d;}return new View(this.data,a0,b0,c);};proto.transpose=function transpose(i0){i0=i0===undefined?0:i0|0;var a=this.shape,b=this.stride;return new View(this.data,a[i0],b[i0],this.offset);};proto.pick=function pick(i0){var a=[],b=[],c=this.offset;if(typeof i0===\"number\"&&i0>=0){c=c+this.stride[0]*i0|0;}else{a.push(this.shape[0]);b.push(this.stride[0]);}var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c);};return function construct(data,shape,stride,offset){return new View(data,shape[0],stride[0],offset);};},2:function(dtype,CTOR_LIST,ORDER){function View(a,b0,b1,c0,c1,d){this.data=a;this.shape=[b0,b1];this.stride=[c0,c1];this.offset=d|0;}var proto=View.prototype;proto.dtype=dtype;proto.dimension=2;Object.defineProperty(proto,\"size\",{get:function size(){return this.shape[0]*this.shape[1];}});Object.defineProperty(proto,\"order\",{get:function order(){return Math.abs(this.stride[0])>Math.abs(this.stride[1])?[1,0]:[0,1];}});proto.set=function set(i0,i1,v){return dtype===\"generic\"?this.data.set(this.offset+this.stride[0]*i0+this.stride[1]*i1,v):this.data[this.offset+this.stride[0]*i0+this.stride[1]*i1]=v;};proto.get=function get(i0,i1){return dtype===\"generic\"?this.data.get(this.offset+this.stride[0]*i0+this.stride[1]*i1):this.data[this.offset+this.stride[0]*i0+this.stride[1]*i1];};proto.index=function index(i0,i1){return this.offset+this.stride[0]*i0+this.stride[1]*i1;};proto.hi=function hi(i0,i1){return new View(this.data,typeof i0!==\"number\"||i0<0?this.shape[0]:i0|0,typeof i1!==\"number\"||i1<0?this.shape[1]:i1|0,this.stride[0],this.stride[1],this.offset);};proto.lo=function lo(i0,i1){var b=this.offset,d=0,a0=this.shape[0],a1=this.shape[1],c0=this.stride[0],c1=this.stride[1];if(typeof i0===\"number\"&&i0>=0){d=i0|0;b+=c0*d;a0-=d;}if(typeof i1===\"number\"&&i1>=0){d=i1|0;b+=c1*d;a1-=d;}return new View(this.data,a0,a1,c0,c1,b);};proto.step=function step(i0,i1){var a0=this.shape[0],a1=this.shape[1],b0=this.stride[0],b1=this.stride[1],c=this.offset,d=0,ceil=Math.ceil;if(typeof i0===\"number\"){d=i0|0;if(d<0){c+=b0*(a0-1);a0=ceil(-a0/d);}else{a0=ceil(a0/d);}b0*=d;}if(typeof i1===\"number\"){d=i1|0;if(d<0){c+=b1*(a1-1);a1=ceil(-a1/d);}else{a1=ceil(a1/d);}b1*=d;}return new View(this.data,a0,a1,b0,b1,c);};proto.transpose=function transpose(i0,i1){i0=i0===undefined?0:i0|0;i1=i1===undefined?1:i1|0;var a=this.shape,b=this.stride;return new View(this.data,a[i0],a[i1],b[i0],b[i1],this.offset);};proto.pick=function pick(i0,i1){var a=[],b=[],c=this.offset;if(typeof i0===\"number\"&&i0>=0){c=c+this.stride[0]*i0|0;}else{a.push(this.shape[0]);b.push(this.stride[0]);}if(typeof i1===\"number\"&&i1>=0){c=c+this.stride[1]*i1|0;}else{a.push(this.shape[1]);b.push(this.stride[1]);}var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c);};return function construct(data,shape,stride,offset){return new View(data,shape[0],shape[1],stride[0],stride[1],offset);};},3:function(dtype,CTOR_LIST,ORDER){function View(a,b0,b1,b2,c0,c1,c2,d){this.data=a;this.shape=[b0,b1,b2];this.stride=[c0,c1,c2];this.offset=d|0;}var proto=View.prototype;proto.dtype=dtype;proto.dimension=3;Object.defineProperty(proto,\"size\",{get:function size(){return this.shape[0]*this.shape[1]*this.shape[2];}});Object.defineProperty(proto,\"order\",{get:function order(){var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);if(s0>s1){if(s1>s2){return[2,1,0];}else if(s0>s2){return[1,2,0];}else{return[1,0,2];}}else if(s0>s2){return[2,0,1];}else if(s2>s1){return[0,1,2];}else{return[0,2,1];}}});proto.set=function set(i0,i1,i2,v){return dtype===\"generic\"?this.data.set(this.offset+this.stride[0]*i0+this.stride[1]*i1+this.stride[2]*i2,v):this.data[this.offset+this.stride[0]*i0+this.stride[1]*i1+this.stride[2]*i2]=v;};proto.get=function get(i0,i1,i2){return dtype===\"generic\"?this.data.get(this.offset+this.stride[0]*i0+this.stride[1]*i1+this.stride[2]*i2):this.data[this.offset+this.stride[0]*i0+this.stride[1]*i1+this.stride[2]*i2];};proto.index=function index(i0,i1,i2){return this.offset+this.stride[0]*i0+this.stride[1]*i1+this.stride[2]*i2;};proto.hi=function hi(i0,i1,i2){return new View(this.data,typeof i0!==\"number\"||i0<0?this.shape[0]:i0|0,typeof i1!==\"number\"||i1<0?this.shape[1]:i1|0,typeof i2!==\"number\"||i2<0?this.shape[2]:i2|0,this.stride[0],this.stride[1],this.stride[2],this.offset);};proto.lo=function lo(i0,i1,i2){var b=this.offset,d=0,a0=this.shape[0],a1=this.shape[1],a2=this.shape[2],c0=this.stride[0],c1=this.stride[1],c2=this.stride[2];if(typeof i0===\"number\"&&i0>=0){d=i0|0;b+=c0*d;a0-=d;}if(typeof i1===\"number\"&&i1>=0){d=i1|0;b+=c1*d;a1-=d;}if(typeof i2===\"number\"&&i2>=0){d=i2|0;b+=c2*d;a2-=d;}return new View(this.data,a0,a1,a2,c0,c1,c2,b);};proto.step=function step(i0,i1,i2){var a0=this.shape[0],a1=this.shape[1],a2=this.shape[2],b0=this.stride[0],b1=this.stride[1],b2=this.stride[2],c=this.offset,d=0,ceil=Math.ceil;if(typeof i0===\"number\"){d=i0|0;if(d<0){c+=b0*(a0-1);a0=ceil(-a0/d);}else{a0=ceil(a0/d);}b0*=d;}if(typeof i1===\"number\"){d=i1|0;if(d<0){c+=b1*(a1-1);a1=ceil(-a1/d);}else{a1=ceil(a1/d);}b1*=d;}if(typeof i2===\"number\"){d=i2|0;if(d<0){c+=b2*(a2-1);a2=ceil(-a2/d);}else{a2=ceil(a2/d);}b2*=d;}return new View(this.data,a0,a1,a2,b0,b1,b2,c);};proto.transpose=function transpose(i0,i1,i2){i0=i0===undefined?0:i0|0;i1=i1===undefined?1:i1|0;i2=i2===undefined?2:i2|0;var a=this.shape,b=this.stride;return new View(this.data,a[i0],a[i1],a[i2],b[i0],b[i1],b[i2],this.offset);};proto.pick=function pick(i0,i1,i2){var a=[],b=[],c=this.offset;if(typeof i0===\"number\"&&i0>=0){c=c+this.stride[0]*i0|0;}else{a.push(this.shape[0]);b.push(this.stride[0]);}if(typeof i1===\"number\"&&i1>=0){c=c+this.stride[1]*i1|0;}else{a.push(this.shape[1]);b.push(this.stride[1]);}if(typeof i2===\"number\"&&i2>=0){c=c+this.stride[2]*i2|0;}else{a.push(this.shape[2]);b.push(this.stride[2]);}var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c);};return function construct(data,shape,stride,offset){return new View(data,shape[0],shape[1],shape[2],stride[0],stride[1],stride[2],offset);};},4:function(dtype,CTOR_LIST,ORDER){function View(a,b0,b1,b2,b3,c0,c1,c2,c3,d){this.data=a;this.shape=[b0,b1,b2,b3];this.stride=[c0,c1,c2,c3];this.offset=d|0;}var proto=View.prototype;proto.dtype=dtype;proto.dimension=4;Object.defineProperty(proto,\"size\",{get:function size(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3];}});Object.defineProperty(proto,\"order\",{get:ORDER});proto.set=function set(i0,i1,i2,i3,v){return dtype===\"generic\"?this.data.set(this.offset+this.stride[0]*i0+this.stride[1]*i1+this.stride[2]*i2+this.stride[3]*i3,v):this.data[this.offset+this.stride[0]*i0+this.stride[1]*i1+this.stride[2]*i2+this.stride[3]*i3]=v;};proto.get=function get(i0,i1,i2,i3){return dtype===\"generic\"?this.data.get(this.offset+this.stride[0]*i0+this.stride[1]*i1+this.stride[2]*i2+this.stride[3]*i3):this.data[this.offset+this.stride[0]*i0+this.stride[1]*i1+this.stride[2]*i2+this.stride[3]*i3];};proto.index=function index(i0,i1,i2,i3){return this.offset+this.stride[0]*i0+this.stride[1]*i1+this.stride[2]*i2+this.stride[3]*i3;};proto.hi=function hi(i0,i1,i2,i3){return new View(this.data,typeof i0!==\"number\"||i0<0?this.shape[0]:i0|0,typeof i1!==\"number\"||i1<0?this.shape[1]:i1|0,typeof i2!==\"number\"||i2<0?this.shape[2]:i2|0,typeof i3!==\"number\"||i3<0?this.shape[3]:i3|0,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.offset);};proto.lo=function lo(i0,i1,i2,i3){var b=this.offset,d=0,a0=this.shape[0],a1=this.shape[1],a2=this.shape[2],a3=this.shape[3],c0=this.stride[0],c1=this.stride[1],c2=this.stride[2],c3=this.stride[3];if(typeof i0===\"number\"&&i0>=0){d=i0|0;b+=c0*d;a0-=d;}if(typeof i1===\"number\"&&i1>=0){d=i1|0;b+=c1*d;a1-=d;}if(typeof i2===\"number\"&&i2>=0){d=i2|0;b+=c2*d;a2-=d;}if(typeof i3===\"number\"&&i3>=0){d=i3|0;b+=c3*d;a3-=d;}return new View(this.data,a0,a1,a2,a3,c0,c1,c2,c3,b);};proto.step=function step(i0,i1,i2,i3){var a0=this.shape[0],a1=this.shape[1],a2=this.shape[2],a3=this.shape[3],b0=this.stride[0],b1=this.stride[1],b2=this.stride[2],b3=this.stride[3],c=this.offset,d=0,ceil=Math.ceil;if(typeof i0===\"number\"){d=i0|0;if(d<0){c+=b0*(a0-1);a0=ceil(-a0/d);}else{a0=ceil(a0/d);}b0*=d;}if(typeof i1===\"number\"){d=i1|0;if(d<0){c+=b1*(a1-1);a1=ceil(-a1/d);}else{a1=ceil(a1/d);}b1*=d;}if(typeof i2===\"number\"){d=i2|0;if(d<0){c+=b2*(a2-1);a2=ceil(-a2/d);}else{a2=ceil(a2/d);}b2*=d;}if(typeof i3===\"number\"){d=i3|0;if(d<0){c+=b3*(a3-1);a3=ceil(-a3/d);}else{a3=ceil(a3/d);}b3*=d;}return new View(this.data,a0,a1,a2,a3,b0,b1,b2,b3,c);};proto.transpose=function transpose(i0,i1,i2,i3){i0=i0===undefined?0:i0|0;i1=i1===undefined?1:i1|0;i2=i2===undefined?2:i2|0;i3=i3===undefined?3:i3|0;var a=this.shape,b=this.stride;return new View(this.data,a[i0],a[i1],a[i2],a[i3],b[i0],b[i1],b[i2],b[i3],this.offset);};proto.pick=function pick(i0,i1,i2,i3){var a=[],b=[],c=this.offset;if(typeof i0===\"number\"&&i0>=0){c=c+this.stride[0]*i0|0;}else{a.push(this.shape[0]);b.push(this.stride[0]);}if(typeof i1===\"number\"&&i1>=0){c=c+this.stride[1]*i1|0;}else{a.push(this.shape[1]);b.push(this.stride[1]);}if(typeof i2===\"number\"&&i2>=0){c=c+this.stride[2]*i2|0;}else{a.push(this.shape[2]);b.push(this.stride[2]);}if(typeof i3===\"number\"&&i3>=0){c=c+this.stride[3]*i3|0;}else{a.push(this.shape[3]);b.push(this.stride[3]);}var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c);};return function construct(data,shape,stride,offset){return new View(data,shape[0],shape[1],shape[2],shape[3],stride[0],stride[1],stride[2],stride[3],offset);};},5:function anonymous(dtype,CTOR_LIST,ORDER){function View(a,b0,b1,b2,b3,b4,c0,c1,c2,c3,c4,d){this.data=a;this.shape=[b0,b1,b2,b3,b4];this.stride=[c0,c1,c2,c3,c4];this.offset=d|0;}var proto=View.prototype;proto.dtype=dtype;proto.dimension=5;Object.defineProperty(proto,\"size\",{get:function size(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]*this.shape[4];}});Object.defineProperty(proto,\"order\",{get:ORDER});proto.set=function set(i0,i1,i2,i3,i4,v){return dtype===\"generic\"?this.data.set(this.offset+this.stride[0]*i0+this.stride[1]*i1+this.stride[2]*i2+this.stride[3]*i3+this.stride[4]*i4,v):this.data[this.offset+this.stride[0]*i0+this.stride[1]*i1+this.stride[2]*i2+this.stride[3]*i3+this.stride[4]*i4]=v;};proto.get=function get(i0,i1,i2,i3,i4){return dtype===\"generic\"?this.data.get(this.offset+this.stride[0]*i0+this.stride[1]*i1+this.stride[2]*i2+this.stride[3]*i3+this.stride[4]*i4):this.data[this.offset+this.stride[0]*i0+this.stride[1]*i1+this.stride[2]*i2+this.stride[3]*i3+this.stride[4]*i4];};proto.index=function index(i0,i1,i2,i3,i4){return this.offset+this.stride[0]*i0+this.stride[1]*i1+this.stride[2]*i2+this.stride[3]*i3+this.stride[4]*i4;};proto.hi=function hi(i0,i1,i2,i3,i4){return new View(this.data,typeof i0!==\"number\"||i0<0?this.shape[0]:i0|0,typeof i1!==\"number\"||i1<0?this.shape[1]:i1|0,typeof i2!==\"number\"||i2<0?this.shape[2]:i2|0,typeof i3!==\"number\"||i3<0?this.shape[3]:i3|0,typeof i4!==\"number\"||i4<0?this.shape[4]:i4|0,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.stride[4],this.offset);};proto.lo=function lo(i0,i1,i2,i3,i4){var b=this.offset,d=0,a0=this.shape[0],a1=this.shape[1],a2=this.shape[2],a3=this.shape[3],a4=this.shape[4],c0=this.stride[0],c1=this.stride[1],c2=this.stride[2],c3=this.stride[3],c4=this.stride[4];if(typeof i0===\"number\"&&i0>=0){d=i0|0;b+=c0*d;a0-=d;}if(typeof i1===\"number\"&&i1>=0){d=i1|0;b+=c1*d;a1-=d;}if(typeof i2===\"number\"&&i2>=0){d=i2|0;b+=c2*d;a2-=d;}if(typeof i3===\"number\"&&i3>=0){d=i3|0;b+=c3*d;a3-=d;}if(typeof i4===\"number\"&&i4>=0){d=i4|0;b+=c4*d;a4-=d;}return new View(this.data,a0,a1,a2,a3,a4,c0,c1,c2,c3,c4,b);};proto.step=function step(i0,i1,i2,i3,i4){var a0=this.shape[0],a1=this.shape[1],a2=this.shape[2],a3=this.shape[3],a4=this.shape[4],b0=this.stride[0],b1=this.stride[1],b2=this.stride[2],b3=this.stride[3],b4=this.stride[4],c=this.offset,d=0,ceil=Math.ceil;if(typeof i0===\"number\"){d=i0|0;if(d<0){c+=b0*(a0-1);a0=ceil(-a0/d);}else{a0=ceil(a0/d);}b0*=d;}if(typeof i1===\"number\"){d=i1|0;if(d<0){c+=b1*(a1-1);a1=ceil(-a1/d);}else{a1=ceil(a1/d);}b1*=d;}if(typeof i2===\"number\"){d=i2|0;if(d<0){c+=b2*(a2-1);a2=ceil(-a2/d);}else{a2=ceil(a2/d);}b2*=d;}if(typeof i3===\"number\"){d=i3|0;if(d<0){c+=b3*(a3-1);a3=ceil(-a3/d);}else{a3=ceil(a3/d);}b3*=d;}if(typeof i4===\"number\"){d=i4|0;if(d<0){c+=b4*(a4-1);a4=ceil(-a4/d);}else{a4=ceil(a4/d);}b4*=d;}return new View(this.data,a0,a1,a2,a3,a4,b0,b1,b2,b3,b4,c);};proto.transpose=function transpose(i0,i1,i2,i3,i4){i0=i0===undefined?0:i0|0;i1=i1===undefined?1:i1|0;i2=i2===undefined?2:i2|0;i3=i3===undefined?3:i3|0;i4=i4===undefined?4:i4|0;var a=this.shape,b=this.stride;return new View(this.data,a[i0],a[i1],a[i2],a[i3],a[i4],b[i0],b[i1],b[i2],b[i3],b[i4],this.offset);};proto.pick=function pick(i0,i1,i2,i3,i4){var a=[],b=[],c=this.offset;if(typeof i0===\"number\"&&i0>=0){c=c+this.stride[0]*i0|0;}else{a.push(this.shape[0]);b.push(this.stride[0]);}if(typeof i1===\"number\"&&i1>=0){c=c+this.stride[1]*i1|0;}else{a.push(this.shape[1]);b.push(this.stride[1]);}if(typeof i2===\"number\"&&i2>=0){c=c+this.stride[2]*i2|0;}else{a.push(this.shape[2]);b.push(this.stride[2]);}if(typeof i3===\"number\"&&i3>=0){c=c+this.stride[3]*i3|0;}else{a.push(this.shape[3]);b.push(this.stride[3]);}if(typeof i4===\"number\"&&i4>=0){c=c+this.stride[4]*i4|0;}else{a.push(this.shape[4]);b.push(this.stride[4]);}var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c);};return function construct(data,shape,stride,offset){return new View(data,shape[0],shape[1],shape[2],shape[3],shape[4],stride[0],stride[1],stride[2],stride[3],stride[4],offset);};}};function compileConstructor(inType,inDimension){var dKey=inDimension===-1?'T':String(inDimension);var procedure=allFns[dKey];if(inDimension===-1){return procedure(inType);}else if(inDimension===0){return procedure(inType,CACHED_CONSTRUCTORS[inType][0]);}return procedure(inType,CACHED_CONSTRUCTORS[inType],order);}function arrayDType(data){if(isBuffer(data)){return\"buffer\";}if(hasTypedArrays){switch(Object.prototype.toString.call(data)){case\"[object Float64Array]\":return\"float64\";case\"[object Float32Array]\":return\"float32\";case\"[object Int8Array]\":return\"int8\";case\"[object Int16Array]\":return\"int16\";case\"[object Int32Array]\":return\"int32\";case\"[object Uint8ClampedArray]\":return\"uint8_clamped\";case\"[object Uint8Array]\":return\"uint8\";case\"[object Uint16Array]\":return\"uint16\";case\"[object Uint32Array]\":return\"uint32\";case\"[object BigInt64Array]\":return\"bigint64\";case\"[object BigUint64Array]\":return\"biguint64\";}}if(Array.isArray(data)){return\"array\";}return\"generic\";}var CACHED_CONSTRUCTORS={\"generic\":[],\"buffer\":[],\"array\":[],// typed arrays\n\"float32\":[],\"float64\":[],\"int8\":[],\"int16\":[],\"int32\":[],\"uint8_clamped\":[],\"uint8\":[],\"uint16\":[],\"uint32\":[],\"bigint64\":[],\"biguint64\":[]};(function(){for(var id in CACHED_CONSTRUCTORS){CACHED_CONSTRUCTORS[id].push(compileConstructor(id,-1));}});function wrappedNDArrayCtor(data,shape,stride,offset){if(data===undefined){var ctor=CACHED_CONSTRUCTORS.array[0];return ctor([]);}else if(typeof data===\"number\"){data=[data];}if(shape===undefined){shape=[data.length];}var d=shape.length;if(stride===undefined){stride=new Array(d);for(var i=d-1,sz=1;i>=0;--i){stride[i]=sz;sz*=shape[i];}}if(offset===undefined){offset=0;for(var i=0;i<d;++i){if(stride[i]<0){offset-=(shape[i]-1)*stride[i];}}}var inType=arrayDType(data);var ctor_list=CACHED_CONSTRUCTORS[inType];while(ctor_list.length<=d+1){ctor_list.push(compileConstructor(inType,ctor_list.length-1));}var ctor=ctor_list[d+1];return ctor(data,shape,stride,offset);}module.exports=wrappedNDArrayCtor;/***/},/***/8551:/***/function(module,__unused_webpack_exports,__nested_webpack_require_717073__){\"use strict\";var doubleBits=__nested_webpack_require_717073__(8362);var SMALLEST_DENORM=Math.pow(2,-1074);var UINT_MAX=-1>>>0;module.exports=nextafter;function nextafter(x,y){if(isNaN(x)||isNaN(y)){return NaN;}if(x===y){return x;}if(x===0){if(y<0){return-SMALLEST_DENORM;}else{return SMALLEST_DENORM;}}var hi=doubleBits.hi(x);var lo=doubleBits.lo(x);if(y>x===x>0){if(lo===UINT_MAX){hi+=1;lo=0;}else{lo+=1;}}else{if(lo===0){lo=UINT_MAX;hi-=1;}else{lo-=1;}}return doubleBits.pack(lo,hi);}/***/},/***/115:/***/function(__unused_webpack_module,exports){var DEFAULT_NORMALS_EPSILON=1e-6;var DEFAULT_FACE_EPSILON=1e-6;//Estimate the vertex normals of a mesh\nexports.vertexNormals=function(faces,positions,specifiedEpsilon){var N=positions.length;var normals=new Array(N);var epsilon=specifiedEpsilon===void 0?DEFAULT_NORMALS_EPSILON:specifiedEpsilon;//Initialize normal array\nfor(var i=0;i<N;++i){normals[i]=[0.0,0.0,0.0];}//Walk over all the faces and add per-vertex contribution to normal weights\nfor(var i=0;i<faces.length;++i){var f=faces[i];var p=0;var c=f[f.length-1];var n=f[0];for(var j=0;j<f.length;++j){//Shift indices back\np=c;c=n;n=f[(j+1)%f.length];var v0=positions[p];var v1=positions[c];var v2=positions[n];//Compute infineteismal arcs\nvar d01=new Array(3);var m01=0.0;var d21=new Array(3);var m21=0.0;for(var k=0;k<3;++k){d01[k]=v0[k]-v1[k];m01+=d01[k]*d01[k];d21[k]=v2[k]-v1[k];m21+=d21[k]*d21[k];}//Accumulate values in normal\nif(m01*m21>epsilon){var norm=normals[c];var w=1.0/Math.sqrt(m01*m21);for(var k=0;k<3;++k){var u=(k+1)%3;var v=(k+2)%3;norm[k]+=w*(d21[u]*d01[v]-d21[v]*d01[u]);}}}}//Scale all normals to unit length\nfor(var i=0;i<N;++i){var norm=normals[i];var m=0.0;for(var k=0;k<3;++k){m+=norm[k]*norm[k];}if(m>epsilon){var w=1.0/Math.sqrt(m);for(var k=0;k<3;++k){norm[k]*=w;}}else{for(var k=0;k<3;++k){norm[k]=0.0;}}}//Return the resulting set of patches\nreturn normals;};//Compute face normals of a mesh\nexports.faceNormals=function(faces,positions,specifiedEpsilon){var N=faces.length;var normals=new Array(N);var epsilon=specifiedEpsilon===void 0?DEFAULT_FACE_EPSILON:specifiedEpsilon;for(var i=0;i<N;++i){var f=faces[i];var pos=new Array(3);for(var j=0;j<3;++j){pos[j]=positions[f[j]];}var d01=new Array(3);var d21=new Array(3);for(var j=0;j<3;++j){d01[j]=pos[1][j]-pos[0][j];d21[j]=pos[2][j]-pos[0][j];}var n=new Array(3);var l=0.0;for(var j=0;j<3;++j){var u=(j+1)%3;var v=(j+2)%3;n[j]=d01[u]*d21[v]-d01[v]*d21[u];l+=n[j]*n[j];}if(l>epsilon){l=1.0/Math.sqrt(l);}else{l=0.0;}for(var j=0;j<3;++j){n[j]*=l;}normals[i]=n;}return normals;};/***/},/***/567:/***/function(module){\"use strict\";module.exports=quatFromFrame;function quatFromFrame(out,rx,ry,rz,ux,uy,uz,fx,fy,fz){var tr=rx+uy+fz;if(l>0){var l=Math.sqrt(tr+1.0);out[0]=0.5*(uz-fy)/l;out[1]=0.5*(fx-rz)/l;out[2]=0.5*(ry-uy)/l;out[3]=0.5*l;}else{var tf=Math.max(rx,uy,fz);var l=Math.sqrt(2*tf-tr+1.0);if(rx>=tf){//x y z  order\nout[0]=0.5*l;out[1]=0.5*(ux+ry)/l;out[2]=0.5*(fx+rz)/l;out[3]=0.5*(uz-fy)/l;}else if(uy>=tf){//y z x  order\nout[0]=0.5*(ry+ux)/l;out[1]=0.5*l;out[2]=0.5*(fy+uz)/l;out[3]=0.5*(fx-rz)/l;}else{//z x y  order\nout[0]=0.5*(rz+fx)/l;out[1]=0.5*(uz+fy)/l;out[2]=0.5*l;out[3]=0.5*(ry-ux)/l;}}return out;}/***/},/***/7774:/***/function(module,__unused_webpack_exports,__nested_webpack_require_720348__){\"use strict\";module.exports=createOrbitController;var filterVector=__nested_webpack_require_720348__(8444);var lookAt=__nested_webpack_require_720348__(3012);var mat4FromQuat=__nested_webpack_require_720348__(5950);var invert44=__nested_webpack_require_720348__(7437);var quatFromFrame=__nested_webpack_require_720348__(567);function len3(x,y,z){return Math.sqrt(Math.pow(x,2)+Math.pow(y,2)+Math.pow(z,2));}function len4(w,x,y,z){return Math.sqrt(Math.pow(w,2)+Math.pow(x,2)+Math.pow(y,2)+Math.pow(z,2));}function normalize4(out,a){var ax=a[0];var ay=a[1];var az=a[2];var aw=a[3];var al=len4(ax,ay,az,aw);if(al>1e-6){out[0]=ax/al;out[1]=ay/al;out[2]=az/al;out[3]=aw/al;}else{out[0]=out[1]=out[2]=0.0;out[3]=1.0;}}function OrbitCameraController(initQuat,initCenter,initRadius){this.radius=filterVector([initRadius]);this.center=filterVector(initCenter);this.rotation=filterVector(initQuat);this.computedRadius=this.radius.curve(0);this.computedCenter=this.center.curve(0);this.computedRotation=this.rotation.curve(0);this.computedUp=[0.1,0,0];this.computedEye=[0.1,0,0];this.computedMatrix=[0.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.recalcMatrix(0);}var proto=OrbitCameraController.prototype;proto.lastT=function(){return Math.max(this.radius.lastT(),this.center.lastT(),this.rotation.lastT());};proto.recalcMatrix=function(t){this.radius.curve(t);this.center.curve(t);this.rotation.curve(t);var quat=this.computedRotation;normalize4(quat,quat);var mat=this.computedMatrix;mat4FromQuat(mat,quat);var center=this.computedCenter;var eye=this.computedEye;var up=this.computedUp;var radius=Math.exp(this.computedRadius[0]);eye[0]=center[0]+radius*mat[2];eye[1]=center[1]+radius*mat[6];eye[2]=center[2]+radius*mat[10];up[0]=mat[1];up[1]=mat[5];up[2]=mat[9];for(var i=0;i<3;++i){var rr=0.0;for(var j=0;j<3;++j){rr+=mat[i+4*j]*eye[j];}mat[12+i]=-rr;}};proto.getMatrix=function(t,result){this.recalcMatrix(t);var m=this.computedMatrix;if(result){for(var i=0;i<16;++i){result[i]=m[i];}return result;}return m;};proto.idle=function(t){this.center.idle(t);this.radius.idle(t);this.rotation.idle(t);};proto.flush=function(t){this.center.flush(t);this.radius.flush(t);this.rotation.flush(t);};proto.pan=function(t,dx,dy,dz){dx=dx||0.0;dy=dy||0.0;dz=dz||0.0;this.recalcMatrix(t);var mat=this.computedMatrix;var ux=mat[1];var uy=mat[5];var uz=mat[9];var ul=len3(ux,uy,uz);ux/=ul;uy/=ul;uz/=ul;var rx=mat[0];var ry=mat[4];var rz=mat[8];var ru=rx*ux+ry*uy+rz*uz;rx-=ux*ru;ry-=uy*ru;rz-=uz*ru;var rl=len3(rx,ry,rz);rx/=rl;ry/=rl;rz/=rl;var fx=mat[2];var fy=mat[6];var fz=mat[10];var fu=fx*ux+fy*uy+fz*uz;var fr=fx*rx+fy*ry+fz*rz;fx-=fu*ux+fr*rx;fy-=fu*uy+fr*ry;fz-=fu*uz+fr*rz;var fl=len3(fx,fy,fz);fx/=fl;fy/=fl;fz/=fl;var vx=rx*dx+ux*dy;var vy=ry*dx+uy*dy;var vz=rz*dx+uz*dy;this.center.move(t,vx,vy,vz);//Update z-component of radius\nvar radius=Math.exp(this.computedRadius[0]);radius=Math.max(1e-4,radius+dz);this.radius.set(t,Math.log(radius));};proto.rotate=function(t,dx,dy,dz){this.recalcMatrix(t);dx=dx||0.0;dy=dy||0.0;var mat=this.computedMatrix;var rx=mat[0];var ry=mat[4];var rz=mat[8];var ux=mat[1];var uy=mat[5];var uz=mat[9];var fx=mat[2];var fy=mat[6];var fz=mat[10];var qx=dx*rx+dy*ux;var qy=dx*ry+dy*uy;var qz=dx*rz+dy*uz;var bx=-(fy*qz-fz*qy);var by=-(fz*qx-fx*qz);var bz=-(fx*qy-fy*qx);var bw=Math.sqrt(Math.max(0.0,1.0-Math.pow(bx,2)-Math.pow(by,2)-Math.pow(bz,2)));var bl=len4(bx,by,bz,bw);if(bl>1e-6){bx/=bl;by/=bl;bz/=bl;bw/=bl;}else{bx=by=bz=0.0;bw=1.0;}var rotation=this.computedRotation;var ax=rotation[0];var ay=rotation[1];var az=rotation[2];var aw=rotation[3];var cx=ax*bw+aw*bx+ay*bz-az*by;var cy=ay*bw+aw*by+az*bx-ax*bz;var cz=az*bw+aw*bz+ax*by-ay*bx;var cw=aw*bw-ax*bx-ay*by-az*bz;//Apply roll\nif(dz){bx=fx;by=fy;bz=fz;var s=Math.sin(dz)/len3(bx,by,bz);bx*=s;by*=s;bz*=s;bw=Math.cos(dx);cx=cx*bw+cw*bx+cy*bz-cz*by;cy=cy*bw+cw*by+cz*bx-cx*bz;cz=cz*bw+cw*bz+cx*by-cy*bx;cw=cw*bw-cx*bx-cy*by-cz*bz;}var cl=len4(cx,cy,cz,cw);if(cl>1e-6){cx/=cl;cy/=cl;cz/=cl;cw/=cl;}else{cx=cy=cz=0.0;cw=1.0;}this.rotation.set(t,cx,cy,cz,cw);};proto.lookAt=function(t,eye,center,up){this.recalcMatrix(t);center=center||this.computedCenter;eye=eye||this.computedEye;up=up||this.computedUp;var mat=this.computedMatrix;lookAt(mat,eye,center,up);var rotation=this.computedRotation;quatFromFrame(rotation,mat[0],mat[1],mat[2],mat[4],mat[5],mat[6],mat[8],mat[9],mat[10]);normalize4(rotation,rotation);this.rotation.set(t,rotation[0],rotation[1],rotation[2],rotation[3]);var fl=0.0;for(var i=0;i<3;++i){fl+=Math.pow(center[i]-eye[i],2);}this.radius.set(t,0.5*Math.log(Math.max(fl,1e-6)));this.center.set(t,center[0],center[1],center[2]);};proto.translate=function(t,dx,dy,dz){this.center.move(t,dx||0.0,dy||0.0,dz||0.0);};proto.setMatrix=function(t,matrix){var rotation=this.computedRotation;quatFromFrame(rotation,matrix[0],matrix[1],matrix[2],matrix[4],matrix[5],matrix[6],matrix[8],matrix[9],matrix[10]);normalize4(rotation,rotation);this.rotation.set(t,rotation[0],rotation[1],rotation[2],rotation[3]);var mat=this.computedMatrix;invert44(mat,matrix);var w=mat[15];if(Math.abs(w)>1e-6){var cx=mat[12]/w;var cy=mat[13]/w;var cz=mat[14]/w;this.recalcMatrix(t);var r=Math.exp(this.computedRadius[0]);this.center.set(t,cx-mat[2]*r,cy-mat[6]*r,cz-mat[10]*r);this.radius.idle(t);}else{this.center.idle(t);this.radius.idle(t);}};proto.setDistance=function(t,d){if(d>0){this.radius.set(t,Math.log(d));}};proto.setDistanceLimits=function(lo,hi){if(lo>0){lo=Math.log(lo);}else{lo=-Infinity;}if(hi>0){hi=Math.log(hi);}else{hi=Infinity;}hi=Math.max(hi,lo);this.radius.bounds[0][0]=lo;this.radius.bounds[1][0]=hi;};proto.getDistanceLimits=function(out){var bounds=this.radius.bounds;if(out){out[0]=Math.exp(bounds[0][0]);out[1]=Math.exp(bounds[1][0]);return out;}return[Math.exp(bounds[0][0]),Math.exp(bounds[1][0])];};proto.toJSON=function(){this.recalcMatrix(this.lastT());return{center:this.computedCenter.slice(),rotation:this.computedRotation.slice(),distance:Math.log(this.computedRadius[0]),zoomMin:this.radius.bounds[0][0],zoomMax:this.radius.bounds[1][0]};};proto.fromJSON=function(options){var t=this.lastT();var c=options.center;if(c){this.center.set(t,c[0],c[1],c[2]);}var r=options.rotation;if(r){this.rotation.set(t,r[0],r[1],r[2],r[3]);}var d=options.distance;if(d&&d>0){this.radius.set(t,Math.log(d));}this.setDistanceLimits(options.zoomMin,options.zoomMax);};function createOrbitController(options){options=options||{};var center=options.center||[0,0,0];var rotation=options.rotation||[0,0,0,1];var radius=options.radius||1.0;center=[].slice.call(center,0,3);rotation=[].slice.call(rotation,0,4);normalize4(rotation,rotation);var result=new OrbitCameraController(rotation,center,Math.log(radius));result.setDistanceLimits(options.zoomMin,options.zoomMax);if('eye'in options||'up'in options){result.lookAt(0,options.eye,options.center,options.up);}return result;}/***/},/***/4930:/***/function(module,__unused_webpack_exports,__nested_webpack_require_727216__){\"use strict\";/*!\n * pad-left <https://github.com/jonschlinkert/pad-left>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT license.\n */var repeat=__nested_webpack_require_727216__(6184);module.exports=function padLeft(str,num,ch){ch=typeof ch!=='undefined'?ch+'':' ';return repeat(ch,num)+str;};/***/},/***/4405:/***/function(module){module.exports=function parseUnit(str,out){if(!out)out=[0,''];str=String(str);var num=parseFloat(str,10);out[0]=num;out[1]=str.match(/[\\d.\\-\\+]*\\s*(.*)/)[1]||'';return out;};/***/},/***/4166:/***/function(module,__unused_webpack_exports,__nested_webpack_require_727817__){\"use strict\";module.exports=planarDual;var compareAngle=__nested_webpack_require_727817__(9398);function planarDual(cells,positions){var numVertices=positions.length|0;var numEdges=cells.length;var adj=[new Array(numVertices),new Array(numVertices)];for(var i=0;i<numVertices;++i){adj[0][i]=[];adj[1][i]=[];}for(var i=0;i<numEdges;++i){var c=cells[i];adj[0][c[0]].push(c);adj[1][c[1]].push(c);}var cycles=[];//Add isolated vertices as trivial case\nfor(var i=0;i<numVertices;++i){if(adj[0][i].length+adj[1][i].length===0){cycles.push([i]);}}//Remove a half edge\nfunction cut(c,i){var a=adj[i][c[i]];a.splice(a.indexOf(c),1);}//Find next vertex and cut edge\nfunction next(a,b,noCut){var nextCell,nextVertex,nextDir;for(var i=0;i<2;++i){if(adj[i][b].length>0){nextCell=adj[i][b][0];nextDir=i;break;}}nextVertex=nextCell[nextDir^1];for(var dir=0;dir<2;++dir){var nbhd=adj[dir][b];for(var k=0;k<nbhd.length;++k){var e=nbhd[k];var p=e[dir^1];var cmp=compareAngle(positions[a],positions[b],positions[nextVertex],positions[p]);if(cmp>0){nextCell=e;nextVertex=p;nextDir=dir;}}}if(noCut){return nextVertex;}if(nextCell){cut(nextCell,nextDir);}return nextVertex;}function extractCycle(v,dir){var e0=adj[dir][v][0];var cycle=[v];cut(e0,dir);var u=e0[dir^1];var d0=dir;while(true){while(u!==v){cycle.push(u);u=next(cycle[cycle.length-2],u,false);}if(adj[0][v].length+adj[1][v].length===0){break;}var a=cycle[cycle.length-1];var b=v;var c=cycle[1];var d=next(a,b,true);if(compareAngle(positions[a],positions[b],positions[c],positions[d])<0){break;}cycle.push(v);u=next(a,b);}return cycle;}function shouldGlue(pcycle,ncycle){return ncycle[1]===ncycle[ncycle.length-1];}for(var i=0;i<numVertices;++i){for(var j=0;j<2;++j){var pcycle=[];while(adj[j][i].length>0){var ni=adj[0][i].length;var ncycle=extractCycle(i,j);if(shouldGlue(pcycle,ncycle)){//Glue together trivial cycles\npcycle.push.apply(pcycle,ncycle);}else{if(pcycle.length>0){cycles.push(pcycle);}pcycle=ncycle;}}if(pcycle.length>0){cycles.push(pcycle);}}}//Combine paths and loops together\nreturn cycles;}/***/},/***/3959:/***/function(module,__unused_webpack_exports,__nested_webpack_require_729936__){\"use strict\";module.exports=trimLeaves;var e2a=__nested_webpack_require_729936__(8348);function trimLeaves(edges,positions){var adj=e2a(edges,positions.length);var live=new Array(positions.length);var nbhd=new Array(positions.length);var dead=[];for(var i=0;i<positions.length;++i){var count=adj[i].length;nbhd[i]=count;live[i]=true;if(count<=1){dead.push(i);}}while(dead.length>0){var v=dead.pop();live[v]=false;var n=adj[v];for(var i=0;i<n.length;++i){var u=n[i];if(--nbhd[u]===0){dead.push(u);}}}var newIndex=new Array(positions.length);var npositions=[];for(var i=0;i<positions.length;++i){if(live[i]){var v=npositions.length;newIndex[i]=v;npositions.push(positions[i]);}else{newIndex[i]=-1;}}var nedges=[];for(var i=0;i<edges.length;++i){var e=edges[i];if(live[e[0]]&&live[e[1]]){nedges.push([newIndex[e[0]],newIndex[e[1]]]);}}return[nedges,npositions];}/***/},/***/8040:/***/function(module,__unused_webpack_exports,__nested_webpack_require_730865__){\"use strict\";module.exports=planarGraphToPolyline;var e2a=__nested_webpack_require_730865__(8348);var planarDual=__nested_webpack_require_730865__(4166);var preprocessPolygon=__nested_webpack_require_730865__(211);var twoProduct=__nested_webpack_require_730865__(9660);var robustSum=__nested_webpack_require_730865__(9662);var uniq=__nested_webpack_require_730865__(1215);var trimLeaves=__nested_webpack_require_730865__(3959);function makeArray(length,fill){var result=new Array(length);for(var i=0;i<length;++i){result[i]=fill;}return result;}function makeArrayOfArrays(length){var result=new Array(length);for(var i=0;i<length;++i){result[i]=[];}return result;}function planarGraphToPolyline(edges,positions){//Trim leaves\nvar result=trimLeaves(edges,positions);edges=result[0];positions=result[1];var numVertices=positions.length;var numEdges=edges.length;//Calculate adjacency list, check manifold\nvar adj=e2a(edges,positions.length);for(var i=0;i<numVertices;++i){if(adj[i].length%2===1){throw new Error('planar-graph-to-polyline: graph must be manifold');}}//Get faces\nvar faces=planarDual(edges,positions);//Check orientation of a polygon using exact arithmetic\nfunction ccw(c){var n=c.length;var area=[0];for(var j=0;j<n;++j){var a=positions[c[j]];var b=positions[c[(j+1)%n]];var t00=twoProduct(-a[0],a[1]);var t01=twoProduct(-a[0],b[1]);var t10=twoProduct(b[0],a[1]);var t11=twoProduct(b[0],b[1]);area=robustSum(area,robustSum(robustSum(t00,t01),robustSum(t10,t11)));}return area[area.length-1]>0;}//Extract all clockwise faces\nfaces=faces.filter(ccw);//Detect which loops are contained in one another to handle parent-of relation\nvar numFaces=faces.length;var parent=new Array(numFaces);var containment=new Array(numFaces);for(var i=0;i<numFaces;++i){parent[i]=i;var row=new Array(numFaces);var loopVertices=faces[i].map(function(v){return positions[v];});var pmc=preprocessPolygon([loopVertices]);var count=0;outer:for(var j=0;j<numFaces;++j){row[j]=0;if(i===j){continue;}var c=faces[j];var n=c.length;for(var k=0;k<n;++k){var d=pmc(positions[c[k]]);if(d!==0){if(d<0){row[j]=1;count+=1;}continue outer;}}row[j]=1;count+=1;}containment[i]=[count,i,row];}containment.sort(function(a,b){return b[0]-a[0];});for(var i=0;i<numFaces;++i){var row=containment[i];var idx=row[1];var children=row[2];for(var j=0;j<numFaces;++j){if(children[j]){parent[j]=idx;}}}//Initialize face adjacency list\nvar fadj=makeArrayOfArrays(numFaces);for(var i=0;i<numFaces;++i){fadj[i].push(parent[i]);fadj[parent[i]].push(i);}//Build adjacency matrix for edges\nvar edgeAdjacency={};var internalVertices=makeArray(numVertices,false);for(var i=0;i<numFaces;++i){var c=faces[i];var n=c.length;for(var j=0;j<n;++j){var a=c[j];var b=c[(j+1)%n];var key=Math.min(a,b)+\":\"+Math.max(a,b);if(key in edgeAdjacency){var neighbor=edgeAdjacency[key];fadj[neighbor].push(i);fadj[i].push(neighbor);internalVertices[a]=internalVertices[b]=true;}else{edgeAdjacency[key]=i;}}}function sharedBoundary(c){var n=c.length;for(var i=0;i<n;++i){if(!internalVertices[c[i]]){return false;}}return true;}var toVisit=[];var parity=makeArray(numFaces,-1);for(var i=0;i<numFaces;++i){if(parent[i]===i&&!sharedBoundary(faces[i])){toVisit.push(i);parity[i]=0;}else{parity[i]=-1;}}//Using face adjacency, classify faces as in/out\nvar result=[];while(toVisit.length>0){var top=toVisit.pop();var nbhd=fadj[top];uniq(nbhd,function(a,b){return a-b;});var nnbhr=nbhd.length;var p=parity[top];var polyline;if(p===0){var c=faces[top];polyline=[c];}for(var i=0;i<nnbhr;++i){var f=nbhd[i];if(parity[f]>=0){continue;}parity[f]=p^1;toVisit.push(f);if(p===0){var c=faces[f];if(!sharedBoundary(c)){c.reverse();polyline.push(c);}}}if(p===0){result.push(polyline);}}return result;}/***/},/***/211:/***/function(module,__unused_webpack_exports,__nested_webpack_require_734566__){module.exports=preprocessPolygon;var orient=__nested_webpack_require_734566__(417)[3];var makeSlabs=__nested_webpack_require_734566__(4385);var makeIntervalTree=__nested_webpack_require_734566__(9014);var bsearch=__nested_webpack_require_734566__(5070);function visitInterval(){return true;}function intervalSearch(table){return function(x,y){var tree=table[x];if(tree){return!!tree.queryPoint(y,visitInterval);}return false;};}function buildVerticalIndex(segments){var table={};for(var i=0;i<segments.length;++i){var s=segments[i];var x=s[0][0];var y0=s[0][1];var y1=s[1][1];var p=[Math.min(y0,y1),Math.max(y0,y1)];if(x in table){table[x].push(p);}else{table[x]=[p];}}var intervalTable={};var keys=Object.keys(table);for(var i=0;i<keys.length;++i){var segs=table[keys[i]];intervalTable[keys[i]]=makeIntervalTree(segs);}return intervalSearch(intervalTable);}function buildSlabSearch(slabs,coordinates){return function(p){var bucket=bsearch.le(coordinates,p[0]);if(bucket<0){return 1;}var root=slabs[bucket];if(!root){if(bucket>0&&coordinates[bucket]===p[0]){root=slabs[bucket-1];}else{return 1;}}var lastOrientation=1;while(root){var s=root.key;var o=orient(p,s[0],s[1]);if(s[0][0]<s[1][0]){if(o<0){root=root.left;}else if(o>0){lastOrientation=-1;root=root.right;}else{return 0;}}else{if(o>0){root=root.left;}else if(o<0){lastOrientation=1;root=root.right;}else{return 0;}}}return lastOrientation;};}function classifyEmpty(p){return 1;}function createClassifyVertical(testVertical){return function classify(p){if(testVertical(p[0],p[1])){return 0;}return 1;};}function createClassifyPointDegen(testVertical,testNormal){return function classify(p){if(testVertical(p[0],p[1])){return 0;}return testNormal(p);};}function preprocessPolygon(loops){//Compute number of loops\nvar numLoops=loops.length;//Unpack segments\nvar segments=[];var vsegments=[];var ptr=0;for(var i=0;i<numLoops;++i){var loop=loops[i];var numVertices=loop.length;for(var s=numVertices-1,t=0;t<numVertices;s=t++){var a=loop[s];var b=loop[t];if(a[0]===b[0]){vsegments.push([a,b]);}else{segments.push([a,b]);}}}//Degenerate case: All loops are empty\nif(segments.length===0){if(vsegments.length===0){return classifyEmpty;}else{return createClassifyVertical(buildVerticalIndex(vsegments));}}//Build slab decomposition\nvar slabs=makeSlabs(segments);var testSlab=buildSlabSearch(slabs.slabs,slabs.coordinates);if(vsegments.length===0){return testSlab;}else{return createClassifyPointDegen(buildVerticalIndex(vsegments),testSlab);}}/***/},/***/7309:/***/function(module){\"use strict\";//Optimized version for triangle closest point\n// Based on Eberly's WildMagick codes\n// http://www.geometrictools.com/LibMathematics/Distance/Distance.html\nvar diff=new Float64Array(4);var edge0=new Float64Array(4);var edge1=new Float64Array(4);function closestPoint2d(V0,V1,V2,point,result){//Reallocate buffers if necessary\nif(diff.length<point.length){diff=new Float64Array(point.length);edge0=new Float64Array(point.length);edge1=new Float64Array(point.length);}//Compute edges\nfor(var i=0;i<point.length;++i){diff[i]=V0[i]-point[i];edge0[i]=V1[i]-V0[i];edge1[i]=V2[i]-V0[i];}//Compute coefficients for quadratic func\nvar a00=0.0,a01=0.0,a11=0.0,b0=0.0,b1=0.0,c=0.0;for(var i=0;i<point.length;++i){var e0=edge0[i],e1=edge1[i],d=diff[i];a00+=e0*e0;a01+=e0*e1;a11+=e1*e1;b0+=d*e0;b1+=d*e1;c+=d*d;}//Compute determinant/coeffs\nvar det=Math.abs(a00*a11-a01*a01);var s=a01*b1-a11*b0;var t=a01*b0-a00*b1;var sqrDistance;//Hardcoded Voronoi diagram classification\nif(s+t<=det){if(s<0){if(t<0){// region 4\nif(b0<0){t=0;if(-b0>=a00){s=1.0;sqrDistance=a00+2.0*b0+c;}else{s=-b0/a00;sqrDistance=b0*s+c;}}else{s=0;if(b1>=0){t=0;sqrDistance=c;}else if(-b1>=a11){t=1;sqrDistance=a11+2.0*b1+c;}else{t=-b1/a11;sqrDistance=b1*t+c;}}}else{// region 3\ns=0;if(b1>=0){t=0;sqrDistance=c;}else if(-b1>=a11){t=1;sqrDistance=a11+2.0*b1+c;}else{t=-b1/a11;sqrDistance=b1*t+c;}}}else if(t<0){// region 5\nt=0;if(b0>=0){s=0;sqrDistance=c;}else if(-b0>=a00){s=1;sqrDistance=a00+2.0*b0+c;}else{s=-b0/a00;sqrDistance=b0*s+c;}}else{// region 0\n// minimum at interior point\nvar invDet=1.0/det;s*=invDet;t*=invDet;sqrDistance=s*(a00*s+a01*t+2.0*b0)+t*(a01*s+a11*t+2.0*b1)+c;}}else{var tmp0,tmp1,numer,denom;if(s<0){// region 2\ntmp0=a01+b0;tmp1=a11+b1;if(tmp1>tmp0){numer=tmp1-tmp0;denom=a00-2.0*a01+a11;if(numer>=denom){s=1;t=0;sqrDistance=a00+2.0*b0+c;}else{s=numer/denom;t=1-s;sqrDistance=s*(a00*s+a01*t+2.0*b0)+t*(a01*s+a11*t+2.0*b1)+c;}}else{s=0;if(tmp1<=0){t=1;sqrDistance=a11+2.0*b1+c;}else if(b1>=0){t=0;sqrDistance=c;}else{t=-b1/a11;sqrDistance=b1*t+c;}}}else if(t<0){// region 6\ntmp0=a01+b1;tmp1=a00+b0;if(tmp1>tmp0){numer=tmp1-tmp0;denom=a00-2.0*a01+a11;if(numer>=denom){t=1;s=0;sqrDistance=a11+2.0*b1+c;}else{t=numer/denom;s=1-t;sqrDistance=s*(a00*s+a01*t+2.0*b0)+t*(a01*s+a11*t+2.0*b1)+c;}}else{t=0;if(tmp1<=0){s=1;sqrDistance=a00+2.0*b0+c;}else if(b0>=0){s=0;sqrDistance=c;}else{s=-b0/a00;sqrDistance=b0*s+c;}}}else{// region 1\nnumer=a11+b1-a01-b0;if(numer<=0){s=0;t=1;sqrDistance=a11+2.0*b1+c;}else{denom=a00-2.0*a01+a11;if(numer>=denom){s=1;t=0;sqrDistance=a00+2.0*b0+c;}else{s=numer/denom;t=1-s;sqrDistance=s*(a00*s+a01*t+2.0*b0)+t*(a01*s+a11*t+2.0*b1)+c;}}}}var u=1.0-s-t;for(var i=0;i<point.length;++i){result[i]=u*V0[i]+s*V1[i]+t*V2[i];}if(sqrDistance<0){return 0;}return sqrDistance;}module.exports=closestPoint2d;/***/},/***/1116:/***/function(module,__unused_webpack_exports,__nested_webpack_require_739938__){module.exports=__nested_webpack_require_739938__(6093);/***/},/***/7584:/***/function(module,__unused_webpack_exports,__nested_webpack_require_740063__){\"use strict\";var bnadd=__nested_webpack_require_740063__(1539);module.exports=add;function add(a,b){var n=a.length;var r=new Array(n);for(var i=0;i<n;++i){r[i]=bnadd(a[i],b[i]);}return r;}/***/},/***/2826:/***/function(module,__unused_webpack_exports,__nested_webpack_require_740321__){\"use strict\";module.exports=float2rat;var rat=__nested_webpack_require_740321__(5125);function float2rat(v){var result=new Array(v.length);for(var i=0;i<v.length;++i){result[i]=rat(v[i]);}return result;}/***/},/***/4469:/***/function(module,__unused_webpack_exports,__nested_webpack_require_740594__){\"use strict\";var rat=__nested_webpack_require_740594__(5125);var mul=__nested_webpack_require_740594__(3962);module.exports=muls;function muls(a,x){var s=rat(x);var n=a.length;var r=new Array(n);for(var i=0;i<n;++i){r[i]=mul(a[i],s);}return r;}/***/},/***/6695:/***/function(module,__unused_webpack_exports,__nested_webpack_require_740894__){\"use strict\";var bnsub=__nested_webpack_require_740894__(4354);module.exports=sub;function sub(a,b){var n=a.length;var r=new Array(n);for(var i=0;i<n;++i){r[i]=bnsub(a[i],b[i]);}return r;}/***/},/***/7037:/***/function(module,__unused_webpack_exports,__nested_webpack_require_741152__){\"use strict\";var compareCell=__nested_webpack_require_741152__(9209);var compareOrientedCell=__nested_webpack_require_741152__(1284);var orientation=__nested_webpack_require_741152__(9887);module.exports=reduceCellComplex;function reduceCellComplex(cells){cells.sort(compareOrientedCell);var n=cells.length;var ptr=0;for(var i=0;i<n;++i){var c=cells[i];var o=orientation(c);if(o===0){continue;}if(ptr>0){var f=cells[ptr-1];if(compareCell(c,f)===0&&orientation(f)!==o){ptr-=1;continue;}}cells[ptr++]=c;}cells.length=ptr;return cells;}/***/},/***/6184:/***/function(module){\"use strict\";/*!\n * repeat-string <https://github.com/jonschlinkert/repeat-string>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */ /**\n * Results cache\n */var res='';var cache;/**\n * Expose `repeat`\n */module.exports=repeat;/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */function repeat(str,num){if(typeof str!=='string'){throw new TypeError('expected a string');}// cover common, quick use cases\nif(num===1)return str;if(num===2)return str+str;var max=str.length*num;if(cache!==str||typeof cache==='undefined'){cache=str;res='';}else if(res.length>=max){return res.substr(0,max);}while(max>res.length&&num>1){if(num&1){res+=str;}num>>=1;str+=str;}res+=str;res=res.substr(0,max);return res;}/***/},/***/8161:/***/function(module,__unused_webpack_exports,__nested_webpack_require_742805__){module.exports=__nested_webpack_require_742805__.g.performance&&__nested_webpack_require_742805__.g.performance.now?function now(){return performance.now();}:Date.now||function now(){return+new Date();};/***/},/***/402:/***/function(module){\"use strict\";module.exports=compressExpansion;function compressExpansion(e){var m=e.length;var Q=e[e.length-1];var bottom=m;for(var i=m-2;i>=0;--i){var a=Q;var b=e[i];Q=a+b;var bv=Q-a;var q=b-bv;if(q){e[--bottom]=Q;Q=q;}}var top=0;for(var i=bottom;i<m;++i){var a=e[i];var b=Q;Q=a+b;var bv=Q-a;var q=b-bv;if(q){e[top++]=q;}}e[top++]=Q;e.length=top;return e;}/***/},/***/8167:/***/function(module,__unused_webpack_exports,__nested_webpack_require_743459__){\"use strict\";var twoProduct=__nested_webpack_require_743459__(9660);var robustSum=__nested_webpack_require_743459__(9662);var robustScale=__nested_webpack_require_743459__(8289);var compress=__nested_webpack_require_743459__(402);var NUM_EXPANDED=6;function determinant_2(sum,scale,prod,compress){return function robustDeterminant2(m){return compress(sum(prod(m[0][0],m[1][1]),prod(-m[0][1],m[1][0])));};}function determinant_3(sum,scale,prod,compress){return function robustDeterminant3(m){return compress(sum(scale(sum(prod(m[1][1],m[2][2]),prod(-m[1][2],m[2][1])),m[0][0]),sum(scale(sum(prod(m[1][0],m[2][2]),prod(-m[1][2],m[2][0])),-m[0][1]),scale(sum(prod(m[1][0],m[2][1]),prod(-m[1][1],m[2][0])),m[0][2]))));};}function determinant_4(sum,scale,prod,compress){return function robustDeterminant4(m){return compress(sum(sum(scale(sum(scale(sum(prod(m[2][2],m[3][3]),prod(-m[2][3],m[3][2])),m[1][1]),sum(scale(sum(prod(m[2][1],m[3][3]),prod(-m[2][3],m[3][1])),-m[1][2]),scale(sum(prod(m[2][1],m[3][2]),prod(-m[2][2],m[3][1])),m[1][3]))),m[0][0]),scale(sum(scale(sum(prod(m[2][2],m[3][3]),prod(-m[2][3],m[3][2])),m[1][0]),sum(scale(sum(prod(m[2][0],m[3][3]),prod(-m[2][3],m[3][0])),-m[1][2]),scale(sum(prod(m[2][0],m[3][2]),prod(-m[2][2],m[3][0])),m[1][3]))),-m[0][1])),sum(scale(sum(scale(sum(prod(m[2][1],m[3][3]),prod(-m[2][3],m[3][1])),m[1][0]),sum(scale(sum(prod(m[2][0],m[3][3]),prod(-m[2][3],m[3][0])),-m[1][1]),scale(sum(prod(m[2][0],m[3][1]),prod(-m[2][1],m[3][0])),m[1][3]))),m[0][2]),scale(sum(scale(sum(prod(m[2][1],m[3][2]),prod(-m[2][2],m[3][1])),m[1][0]),sum(scale(sum(prod(m[2][0],m[3][2]),prod(-m[2][2],m[3][0])),-m[1][1]),scale(sum(prod(m[2][0],m[3][1]),prod(-m[2][1],m[3][0])),m[1][2]))),-m[0][3]))));};}function determinant_5(sum,scale,prod,compress){return function robustDeterminant5(m){return compress(sum(sum(scale(sum(sum(scale(sum(scale(sum(prod(m[3][3],m[4][4]),prod(-m[3][4],m[4][3])),m[2][2]),sum(scale(sum(prod(m[3][2],m[4][4]),prod(-m[3][4],m[4][2])),-m[2][3]),scale(sum(prod(m[3][2],m[4][3]),prod(-m[3][3],m[4][2])),m[2][4]))),m[1][1]),scale(sum(scale(sum(prod(m[3][3],m[4][4]),prod(-m[3][4],m[4][3])),m[2][1]),sum(scale(sum(prod(m[3][1],m[4][4]),prod(-m[3][4],m[4][1])),-m[2][3]),scale(sum(prod(m[3][1],m[4][3]),prod(-m[3][3],m[4][1])),m[2][4]))),-m[1][2])),sum(scale(sum(scale(sum(prod(m[3][2],m[4][4]),prod(-m[3][4],m[4][2])),m[2][1]),sum(scale(sum(prod(m[3][1],m[4][4]),prod(-m[3][4],m[4][1])),-m[2][2]),scale(sum(prod(m[3][1],m[4][2]),prod(-m[3][2],m[4][1])),m[2][4]))),m[1][3]),scale(sum(scale(sum(prod(m[3][2],m[4][3]),prod(-m[3][3],m[4][2])),m[2][1]),sum(scale(sum(prod(m[3][1],m[4][3]),prod(-m[3][3],m[4][1])),-m[2][2]),scale(sum(prod(m[3][1],m[4][2]),prod(-m[3][2],m[4][1])),m[2][3]))),-m[1][4]))),m[0][0]),scale(sum(sum(scale(sum(scale(sum(prod(m[3][3],m[4][4]),prod(-m[3][4],m[4][3])),m[2][2]),sum(scale(sum(prod(m[3][2],m[4][4]),prod(-m[3][4],m[4][2])),-m[2][3]),scale(sum(prod(m[3][2],m[4][3]),prod(-m[3][3],m[4][2])),m[2][4]))),m[1][0]),scale(sum(scale(sum(prod(m[3][3],m[4][4]),prod(-m[3][4],m[4][3])),m[2][0]),sum(scale(sum(prod(m[3][0],m[4][4]),prod(-m[3][4],m[4][0])),-m[2][3]),scale(sum(prod(m[3][0],m[4][3]),prod(-m[3][3],m[4][0])),m[2][4]))),-m[1][2])),sum(scale(sum(scale(sum(prod(m[3][2],m[4][4]),prod(-m[3][4],m[4][2])),m[2][0]),sum(scale(sum(prod(m[3][0],m[4][4]),prod(-m[3][4],m[4][0])),-m[2][2]),scale(sum(prod(m[3][0],m[4][2]),prod(-m[3][2],m[4][0])),m[2][4]))),m[1][3]),scale(sum(scale(sum(prod(m[3][2],m[4][3]),prod(-m[3][3],m[4][2])),m[2][0]),sum(scale(sum(prod(m[3][0],m[4][3]),prod(-m[3][3],m[4][0])),-m[2][2]),scale(sum(prod(m[3][0],m[4][2]),prod(-m[3][2],m[4][0])),m[2][3]))),-m[1][4]))),-m[0][1])),sum(scale(sum(sum(scale(sum(scale(sum(prod(m[3][3],m[4][4]),prod(-m[3][4],m[4][3])),m[2][1]),sum(scale(sum(prod(m[3][1],m[4][4]),prod(-m[3][4],m[4][1])),-m[2][3]),scale(sum(prod(m[3][1],m[4][3]),prod(-m[3][3],m[4][1])),m[2][4]))),m[1][0]),scale(sum(scale(sum(prod(m[3][3],m[4][4]),prod(-m[3][4],m[4][3])),m[2][0]),sum(scale(sum(prod(m[3][0],m[4][4]),prod(-m[3][4],m[4][0])),-m[2][3]),scale(sum(prod(m[3][0],m[4][3]),prod(-m[3][3],m[4][0])),m[2][4]))),-m[1][1])),sum(scale(sum(scale(sum(prod(m[3][1],m[4][4]),prod(-m[3][4],m[4][1])),m[2][0]),sum(scale(sum(prod(m[3][0],m[4][4]),prod(-m[3][4],m[4][0])),-m[2][1]),scale(sum(prod(m[3][0],m[4][1]),prod(-m[3][1],m[4][0])),m[2][4]))),m[1][3]),scale(sum(scale(sum(prod(m[3][1],m[4][3]),prod(-m[3][3],m[4][1])),m[2][0]),sum(scale(sum(prod(m[3][0],m[4][3]),prod(-m[3][3],m[4][0])),-m[2][1]),scale(sum(prod(m[3][0],m[4][1]),prod(-m[3][1],m[4][0])),m[2][3]))),-m[1][4]))),m[0][2]),sum(scale(sum(sum(scale(sum(scale(sum(prod(m[3][2],m[4][4]),prod(-m[3][4],m[4][2])),m[2][1]),sum(scale(sum(prod(m[3][1],m[4][4]),prod(-m[3][4],m[4][1])),-m[2][2]),scale(sum(prod(m[3][1],m[4][2]),prod(-m[3][2],m[4][1])),m[2][4]))),m[1][0]),scale(sum(scale(sum(prod(m[3][2],m[4][4]),prod(-m[3][4],m[4][2])),m[2][0]),sum(scale(sum(prod(m[3][0],m[4][4]),prod(-m[3][4],m[4][0])),-m[2][2]),scale(sum(prod(m[3][0],m[4][2]),prod(-m[3][2],m[4][0])),m[2][4]))),-m[1][1])),sum(scale(sum(scale(sum(prod(m[3][1],m[4][4]),prod(-m[3][4],m[4][1])),m[2][0]),sum(scale(sum(prod(m[3][0],m[4][4]),prod(-m[3][4],m[4][0])),-m[2][1]),scale(sum(prod(m[3][0],m[4][1]),prod(-m[3][1],m[4][0])),m[2][4]))),m[1][2]),scale(sum(scale(sum(prod(m[3][1],m[4][2]),prod(-m[3][2],m[4][1])),m[2][0]),sum(scale(sum(prod(m[3][0],m[4][2]),prod(-m[3][2],m[4][0])),-m[2][1]),scale(sum(prod(m[3][0],m[4][1]),prod(-m[3][1],m[4][0])),m[2][2]))),-m[1][4]))),-m[0][3]),scale(sum(sum(scale(sum(scale(sum(prod(m[3][2],m[4][3]),prod(-m[3][3],m[4][2])),m[2][1]),sum(scale(sum(prod(m[3][1],m[4][3]),prod(-m[3][3],m[4][1])),-m[2][2]),scale(sum(prod(m[3][1],m[4][2]),prod(-m[3][2],m[4][1])),m[2][3]))),m[1][0]),scale(sum(scale(sum(prod(m[3][2],m[4][3]),prod(-m[3][3],m[4][2])),m[2][0]),sum(scale(sum(prod(m[3][0],m[4][3]),prod(-m[3][3],m[4][0])),-m[2][2]),scale(sum(prod(m[3][0],m[4][2]),prod(-m[3][2],m[4][0])),m[2][3]))),-m[1][1])),sum(scale(sum(scale(sum(prod(m[3][1],m[4][3]),prod(-m[3][3],m[4][1])),m[2][0]),sum(scale(sum(prod(m[3][0],m[4][3]),prod(-m[3][3],m[4][0])),-m[2][1]),scale(sum(prod(m[3][0],m[4][1]),prod(-m[3][1],m[4][0])),m[2][3]))),m[1][2]),scale(sum(scale(sum(prod(m[3][1],m[4][2]),prod(-m[3][2],m[4][1])),m[2][0]),sum(scale(sum(prod(m[3][0],m[4][2]),prod(-m[3][2],m[4][0])),-m[2][1]),scale(sum(prod(m[3][0],m[4][1]),prod(-m[3][1],m[4][0])),m[2][2]))),-m[1][3]))),m[0][4])))));};}function compileDeterminant(n){var fn=n===2?determinant_2:n===3?determinant_3:n===4?determinant_4:n===5?determinant_5:undefined;return fn(robustSum,robustScale,twoProduct,compress);}var CACHE=[function robustDeterminant0(){return[0];},function robustDeterminant1(m){return[m[0][0]];}];function proc(det0,det1,det2,det3,det4,det5,CACHE,gen){return function robustDeterminant(m){switch(m.length){case 0:return det0(m);case 1:return det1(m);case 2:return det2(m);case 3:return det3(m);case 4:return det4(m);case 5:return det5(m);}var det=CACHE[m.length];if(!det)det=CACHE[m.length]=gen(m.length);return det(m);};}function generateDispatch(){while(CACHE.length<NUM_EXPANDED){CACHE.push(compileDeterminant(CACHE.length));}module.exports=proc.apply(undefined,CACHE.concat([CACHE,compileDeterminant]));for(var i=0;i<CACHE.length;++i){module.exports[i]=CACHE[i];}}generateDispatch();/***/},/***/9130:/***/function(module,__unused_webpack_exports,__nested_webpack_require_750794__){\"use strict\";var twoProduct=__nested_webpack_require_750794__(9660);var robustSum=__nested_webpack_require_750794__(9662);module.exports=robustDotProduct;function robustDotProduct(a,b){var r=twoProduct(a[0],b[0]);for(var i=1;i<a.length;++i){r=robustSum(r,twoProduct(a[i],b[i]));}return r;}/***/},/***/2227:/***/function(module,__unused_webpack_exports,__nested_webpack_require_751139__){\"use strict\";var twoProduct=__nested_webpack_require_751139__(9660);var robustSum=__nested_webpack_require_751139__(9662);var robustDiff=__nested_webpack_require_751139__(4078);var robustScale=__nested_webpack_require_751139__(8289);var NUM_EXPAND=6;function orientation(n){var fn=n===3?inSphere3:n===4?inSphere4:n===5?inSphere5:inSphere6;return fn(robustSum,robustDiff,twoProduct,robustScale);}function inSphere0(){return 0;}function inSphere1(){return 0;}function inSphere2(){return 0;}function inSphere3(sum,diff,prod,scale){function exactInSphere3(m0,m1,m2){var w0=prod(m0[0],m0[0]);var w0m1=scale(w0,m1[0]);var w0m2=scale(w0,m2[0]);var w1=prod(m1[0],m1[0]);var w1m0=scale(w1,m0[0]);var w1m2=scale(w1,m2[0]);var w2=prod(m2[0],m2[0]);var w2m0=scale(w2,m0[0]);var w2m1=scale(w2,m1[0]);var p=sum(diff(w2m1,w1m2),diff(w1m0,w0m1));var n=diff(w2m0,w0m2);var d=diff(p,n);return d[d.length-1];}return exactInSphere3;}function inSphere4(sum,diff,prod,scale){function exactInSphere4(m0,m1,m2,m3){var w0=sum(prod(m0[0],m0[0]),prod(m0[1],m0[1]));var w0m1=scale(w0,m1[0]);var w0m2=scale(w0,m2[0]);var w0m3=scale(w0,m3[0]);var w1=sum(prod(m1[0],m1[0]),prod(m1[1],m1[1]));var w1m0=scale(w1,m0[0]);var w1m2=scale(w1,m2[0]);var w1m3=scale(w1,m3[0]);var w2=sum(prod(m2[0],m2[0]),prod(m2[1],m2[1]));var w2m0=scale(w2,m0[0]);var w2m1=scale(w2,m1[0]);var w2m3=scale(w2,m3[0]);var w3=sum(prod(m3[0],m3[0]),prod(m3[1],m3[1]));var w3m0=scale(w3,m0[0]);var w3m1=scale(w3,m1[0]);var w3m2=scale(w3,m2[0]);var p=sum(sum(scale(diff(w3m2,w2m3),m1[1]),sum(scale(diff(w3m1,w1m3),-m2[1]),scale(diff(w2m1,w1m2),m3[1]))),sum(scale(diff(w3m1,w1m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m1[1]),scale(diff(w1m0,w0m1),m3[1]))));var n=sum(sum(scale(diff(w3m2,w2m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m2[1]),scale(diff(w2m0,w0m2),m3[1]))),sum(scale(diff(w2m1,w1m2),m0[1]),sum(scale(diff(w2m0,w0m2),-m1[1]),scale(diff(w1m0,w0m1),m2[1]))));var d=diff(p,n);return d[d.length-1];}return exactInSphere4;}function inSphere5(sum,diff,prod,scale){function exactInSphere5(m0,m1,m2,m3,m4){var w0=sum(prod(m0[0],m0[0]),sum(prod(m0[1],m0[1]),prod(m0[2],m0[2])));var w0m1=scale(w0,m1[0]);var w0m2=scale(w0,m2[0]);var w0m3=scale(w0,m3[0]);var w0m4=scale(w0,m4[0]);var w1=sum(prod(m1[0],m1[0]),sum(prod(m1[1],m1[1]),prod(m1[2],m1[2])));var w1m0=scale(w1,m0[0]);var w1m2=scale(w1,m2[0]);var w1m3=scale(w1,m3[0]);var w1m4=scale(w1,m4[0]);var w2=sum(prod(m2[0],m2[0]),sum(prod(m2[1],m2[1]),prod(m2[2],m2[2])));var w2m0=scale(w2,m0[0]);var w2m1=scale(w2,m1[0]);var w2m3=scale(w2,m3[0]);var w2m4=scale(w2,m4[0]);var w3=sum(prod(m3[0],m3[0]),sum(prod(m3[1],m3[1]),prod(m3[2],m3[2])));var w3m0=scale(w3,m0[0]);var w3m1=scale(w3,m1[0]);var w3m2=scale(w3,m2[0]);var w3m4=scale(w3,m4[0]);var w4=sum(prod(m4[0],m4[0]),sum(prod(m4[1],m4[1]),prod(m4[2],m4[2])));var w4m0=scale(w4,m0[0]);var w4m1=scale(w4,m1[0]);var w4m2=scale(w4,m2[0]);var w4m3=scale(w4,m3[0]);var p=sum(sum(sum(scale(sum(scale(diff(w4m3,w3m4),m2[1]),sum(scale(diff(w4m2,w2m4),-m3[1]),scale(diff(w3m2,w2m3),m4[1]))),m1[2]),sum(scale(sum(scale(diff(w4m3,w3m4),m1[1]),sum(scale(diff(w4m1,w1m4),-m3[1]),scale(diff(w3m1,w1m3),m4[1]))),-m2[2]),scale(sum(scale(diff(w4m2,w2m4),m1[1]),sum(scale(diff(w4m1,w1m4),-m2[1]),scale(diff(w2m1,w1m2),m4[1]))),m3[2]))),sum(scale(sum(scale(diff(w3m2,w2m3),m1[1]),sum(scale(diff(w3m1,w1m3),-m2[1]),scale(diff(w2m1,w1m2),m3[1]))),-m4[2]),sum(scale(sum(scale(diff(w4m3,w3m4),m1[1]),sum(scale(diff(w4m1,w1m4),-m3[1]),scale(diff(w3m1,w1m3),m4[1]))),m0[2]),scale(sum(scale(diff(w4m3,w3m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m3[1]),scale(diff(w3m0,w0m3),m4[1]))),-m1[2])))),sum(sum(scale(sum(scale(diff(w4m1,w1m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m1[1]),scale(diff(w1m0,w0m1),m4[1]))),m3[2]),sum(scale(sum(scale(diff(w3m1,w1m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m1[1]),scale(diff(w1m0,w0m1),m3[1]))),-m4[2]),scale(sum(scale(diff(w3m2,w2m3),m1[1]),sum(scale(diff(w3m1,w1m3),-m2[1]),scale(diff(w2m1,w1m2),m3[1]))),m0[2]))),sum(scale(sum(scale(diff(w3m2,w2m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m2[1]),scale(diff(w2m0,w0m2),m3[1]))),-m1[2]),sum(scale(sum(scale(diff(w3m1,w1m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m1[1]),scale(diff(w1m0,w0m1),m3[1]))),m2[2]),scale(sum(scale(diff(w2m1,w1m2),m0[1]),sum(scale(diff(w2m0,w0m2),-m1[1]),scale(diff(w1m0,w0m1),m2[1]))),-m3[2])))));var n=sum(sum(sum(scale(sum(scale(diff(w4m3,w3m4),m2[1]),sum(scale(diff(w4m2,w2m4),-m3[1]),scale(diff(w3m2,w2m3),m4[1]))),m0[2]),scale(sum(scale(diff(w4m3,w3m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m3[1]),scale(diff(w3m0,w0m3),m4[1]))),-m2[2])),sum(scale(sum(scale(diff(w4m2,w2m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m2[1]),scale(diff(w2m0,w0m2),m4[1]))),m3[2]),scale(sum(scale(diff(w3m2,w2m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m2[1]),scale(diff(w2m0,w0m2),m3[1]))),-m4[2]))),sum(sum(scale(sum(scale(diff(w4m2,w2m4),m1[1]),sum(scale(diff(w4m1,w1m4),-m2[1]),scale(diff(w2m1,w1m2),m4[1]))),m0[2]),scale(sum(scale(diff(w4m2,w2m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m2[1]),scale(diff(w2m0,w0m2),m4[1]))),-m1[2])),sum(scale(sum(scale(diff(w4m1,w1m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m1[1]),scale(diff(w1m0,w0m1),m4[1]))),m2[2]),scale(sum(scale(diff(w2m1,w1m2),m0[1]),sum(scale(diff(w2m0,w0m2),-m1[1]),scale(diff(w1m0,w0m1),m2[1]))),-m4[2]))));var d=diff(p,n);return d[d.length-1];}return exactInSphere5;}function inSphere6(sum,diff,prod,scale){function exactInSphere6(m0,m1,m2,m3,m4,m5){var w0=sum(sum(prod(m0[0],m0[0]),prod(m0[1],m0[1])),sum(prod(m0[2],m0[2]),prod(m0[3],m0[3])));var w0m1=scale(w0,m1[0]);var w0m2=scale(w0,m2[0]);var w0m3=scale(w0,m3[0]);var w0m4=scale(w0,m4[0]);var w0m5=scale(w0,m5[0]);var w1=sum(sum(prod(m1[0],m1[0]),prod(m1[1],m1[1])),sum(prod(m1[2],m1[2]),prod(m1[3],m1[3])));var w1m0=scale(w1,m0[0]);var w1m2=scale(w1,m2[0]);var w1m3=scale(w1,m3[0]);var w1m4=scale(w1,m4[0]);var w1m5=scale(w1,m5[0]);var w2=sum(sum(prod(m2[0],m2[0]),prod(m2[1],m2[1])),sum(prod(m2[2],m2[2]),prod(m2[3],m2[3])));var w2m0=scale(w2,m0[0]);var w2m1=scale(w2,m1[0]);var w2m3=scale(w2,m3[0]);var w2m4=scale(w2,m4[0]);var w2m5=scale(w2,m5[0]);var w3=sum(sum(prod(m3[0],m3[0]),prod(m3[1],m3[1])),sum(prod(m3[2],m3[2]),prod(m3[3],m3[3])));var w3m0=scale(w3,m0[0]);var w3m1=scale(w3,m1[0]);var w3m2=scale(w3,m2[0]);var w3m4=scale(w3,m4[0]);var w3m5=scale(w3,m5[0]);var w4=sum(sum(prod(m4[0],m4[0]),prod(m4[1],m4[1])),sum(prod(m4[2],m4[2]),prod(m4[3],m4[3])));var w4m0=scale(w4,m0[0]);var w4m1=scale(w4,m1[0]);var w4m2=scale(w4,m2[0]);var w4m3=scale(w4,m3[0]);var w4m5=scale(w4,m5[0]);var w5=sum(sum(prod(m5[0],m5[0]),prod(m5[1],m5[1])),sum(prod(m5[2],m5[2]),prod(m5[3],m5[3])));var w5m0=scale(w5,m0[0]);var w5m1=scale(w5,m1[0]);var w5m2=scale(w5,m2[0]);var w5m3=scale(w5,m3[0]);var w5m4=scale(w5,m4[0]);var p=sum(sum(sum(scale(sum(sum(scale(sum(scale(diff(w5m4,w4m5),m3[1]),sum(scale(diff(w5m3,w3m5),-m4[1]),scale(diff(w4m3,w3m4),m5[1]))),m2[2]),scale(sum(scale(diff(w5m4,w4m5),m2[1]),sum(scale(diff(w5m2,w2m5),-m4[1]),scale(diff(w4m2,w2m4),m5[1]))),-m3[2])),sum(scale(sum(scale(diff(w5m3,w3m5),m2[1]),sum(scale(diff(w5m2,w2m5),-m3[1]),scale(diff(w3m2,w2m3),m5[1]))),m4[2]),scale(sum(scale(diff(w4m3,w3m4),m2[1]),sum(scale(diff(w4m2,w2m4),-m3[1]),scale(diff(w3m2,w2m3),m4[1]))),-m5[2]))),m1[3]),sum(scale(sum(sum(scale(sum(scale(diff(w5m4,w4m5),m3[1]),sum(scale(diff(w5m3,w3m5),-m4[1]),scale(diff(w4m3,w3m4),m5[1]))),m1[2]),scale(sum(scale(diff(w5m4,w4m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m4[1]),scale(diff(w4m1,w1m4),m5[1]))),-m3[2])),sum(scale(sum(scale(diff(w5m3,w3m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m3[1]),scale(diff(w3m1,w1m3),m5[1]))),m4[2]),scale(sum(scale(diff(w4m3,w3m4),m1[1]),sum(scale(diff(w4m1,w1m4),-m3[1]),scale(diff(w3m1,w1m3),m4[1]))),-m5[2]))),-m2[3]),scale(sum(sum(scale(sum(scale(diff(w5m4,w4m5),m2[1]),sum(scale(diff(w5m2,w2m5),-m4[1]),scale(diff(w4m2,w2m4),m5[1]))),m1[2]),scale(sum(scale(diff(w5m4,w4m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m4[1]),scale(diff(w4m1,w1m4),m5[1]))),-m2[2])),sum(scale(sum(scale(diff(w5m2,w2m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m2[1]),scale(diff(w2m1,w1m2),m5[1]))),m4[2]),scale(sum(scale(diff(w4m2,w2m4),m1[1]),sum(scale(diff(w4m1,w1m4),-m2[1]),scale(diff(w2m1,w1m2),m4[1]))),-m5[2]))),m3[3]))),sum(sum(scale(sum(sum(scale(sum(scale(diff(w5m3,w3m5),m2[1]),sum(scale(diff(w5m2,w2m5),-m3[1]),scale(diff(w3m2,w2m3),m5[1]))),m1[2]),scale(sum(scale(diff(w5m3,w3m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m3[1]),scale(diff(w3m1,w1m3),m5[1]))),-m2[2])),sum(scale(sum(scale(diff(w5m2,w2m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m2[1]),scale(diff(w2m1,w1m2),m5[1]))),m3[2]),scale(sum(scale(diff(w3m2,w2m3),m1[1]),sum(scale(diff(w3m1,w1m3),-m2[1]),scale(diff(w2m1,w1m2),m3[1]))),-m5[2]))),-m4[3]),scale(sum(sum(scale(sum(scale(diff(w4m3,w3m4),m2[1]),sum(scale(diff(w4m2,w2m4),-m3[1]),scale(diff(w3m2,w2m3),m4[1]))),m1[2]),scale(sum(scale(diff(w4m3,w3m4),m1[1]),sum(scale(diff(w4m1,w1m4),-m3[1]),scale(diff(w3m1,w1m3),m4[1]))),-m2[2])),sum(scale(sum(scale(diff(w4m2,w2m4),m1[1]),sum(scale(diff(w4m1,w1m4),-m2[1]),scale(diff(w2m1,w1m2),m4[1]))),m3[2]),scale(sum(scale(diff(w3m2,w2m3),m1[1]),sum(scale(diff(w3m1,w1m3),-m2[1]),scale(diff(w2m1,w1m2),m3[1]))),-m4[2]))),m5[3])),sum(scale(sum(sum(scale(sum(scale(diff(w5m4,w4m5),m3[1]),sum(scale(diff(w5m3,w3m5),-m4[1]),scale(diff(w4m3,w3m4),m5[1]))),m1[2]),scale(sum(scale(diff(w5m4,w4m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m4[1]),scale(diff(w4m1,w1m4),m5[1]))),-m3[2])),sum(scale(sum(scale(diff(w5m3,w3m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m3[1]),scale(diff(w3m1,w1m3),m5[1]))),m4[2]),scale(sum(scale(diff(w4m3,w3m4),m1[1]),sum(scale(diff(w4m1,w1m4),-m3[1]),scale(diff(w3m1,w1m3),m4[1]))),-m5[2]))),m0[3]),scale(sum(sum(scale(sum(scale(diff(w5m4,w4m5),m3[1]),sum(scale(diff(w5m3,w3m5),-m4[1]),scale(diff(w4m3,w3m4),m5[1]))),m0[2]),scale(sum(scale(diff(w5m4,w4m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m4[1]),scale(diff(w4m0,w0m4),m5[1]))),-m3[2])),sum(scale(sum(scale(diff(w5m3,w3m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m3[1]),scale(diff(w3m0,w0m3),m5[1]))),m4[2]),scale(sum(scale(diff(w4m3,w3m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m3[1]),scale(diff(w3m0,w0m3),m4[1]))),-m5[2]))),-m1[3])))),sum(sum(sum(scale(sum(sum(scale(sum(scale(diff(w5m4,w4m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m4[1]),scale(diff(w4m1,w1m4),m5[1]))),m0[2]),scale(sum(scale(diff(w5m4,w4m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m4[1]),scale(diff(w4m0,w0m4),m5[1]))),-m1[2])),sum(scale(sum(scale(diff(w5m1,w1m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m1[1]),scale(diff(w1m0,w0m1),m5[1]))),m4[2]),scale(sum(scale(diff(w4m1,w1m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m1[1]),scale(diff(w1m0,w0m1),m4[1]))),-m5[2]))),m3[3]),scale(sum(sum(scale(sum(scale(diff(w5m3,w3m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m3[1]),scale(diff(w3m1,w1m3),m5[1]))),m0[2]),scale(sum(scale(diff(w5m3,w3m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m3[1]),scale(diff(w3m0,w0m3),m5[1]))),-m1[2])),sum(scale(sum(scale(diff(w5m1,w1m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m1[1]),scale(diff(w1m0,w0m1),m5[1]))),m3[2]),scale(sum(scale(diff(w3m1,w1m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m1[1]),scale(diff(w1m0,w0m1),m3[1]))),-m5[2]))),-m4[3])),sum(scale(sum(sum(scale(sum(scale(diff(w4m3,w3m4),m1[1]),sum(scale(diff(w4m1,w1m4),-m3[1]),scale(diff(w3m1,w1m3),m4[1]))),m0[2]),scale(sum(scale(diff(w4m3,w3m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m3[1]),scale(diff(w3m0,w0m3),m4[1]))),-m1[2])),sum(scale(sum(scale(diff(w4m1,w1m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m1[1]),scale(diff(w1m0,w0m1),m4[1]))),m3[2]),scale(sum(scale(diff(w3m1,w1m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m1[1]),scale(diff(w1m0,w0m1),m3[1]))),-m4[2]))),m5[3]),scale(sum(sum(scale(sum(scale(diff(w5m3,w3m5),m2[1]),sum(scale(diff(w5m2,w2m5),-m3[1]),scale(diff(w3m2,w2m3),m5[1]))),m1[2]),scale(sum(scale(diff(w5m3,w3m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m3[1]),scale(diff(w3m1,w1m3),m5[1]))),-m2[2])),sum(scale(sum(scale(diff(w5m2,w2m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m2[1]),scale(diff(w2m1,w1m2),m5[1]))),m3[2]),scale(sum(scale(diff(w3m2,w2m3),m1[1]),sum(scale(diff(w3m1,w1m3),-m2[1]),scale(diff(w2m1,w1m2),m3[1]))),-m5[2]))),m0[3]))),sum(sum(scale(sum(sum(scale(sum(scale(diff(w5m3,w3m5),m2[1]),sum(scale(diff(w5m2,w2m5),-m3[1]),scale(diff(w3m2,w2m3),m5[1]))),m0[2]),scale(sum(scale(diff(w5m3,w3m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m3[1]),scale(diff(w3m0,w0m3),m5[1]))),-m2[2])),sum(scale(sum(scale(diff(w5m2,w2m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m2[1]),scale(diff(w2m0,w0m2),m5[1]))),m3[2]),scale(sum(scale(diff(w3m2,w2m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m2[1]),scale(diff(w2m0,w0m2),m3[1]))),-m5[2]))),-m1[3]),scale(sum(sum(scale(sum(scale(diff(w5m3,w3m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m3[1]),scale(diff(w3m1,w1m3),m5[1]))),m0[2]),scale(sum(scale(diff(w5m3,w3m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m3[1]),scale(diff(w3m0,w0m3),m5[1]))),-m1[2])),sum(scale(sum(scale(diff(w5m1,w1m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m1[1]),scale(diff(w1m0,w0m1),m5[1]))),m3[2]),scale(sum(scale(diff(w3m1,w1m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m1[1]),scale(diff(w1m0,w0m1),m3[1]))),-m5[2]))),m2[3])),sum(scale(sum(sum(scale(sum(scale(diff(w5m2,w2m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m2[1]),scale(diff(w2m1,w1m2),m5[1]))),m0[2]),scale(sum(scale(diff(w5m2,w2m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m2[1]),scale(diff(w2m0,w0m2),m5[1]))),-m1[2])),sum(scale(sum(scale(diff(w5m1,w1m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m1[1]),scale(diff(w1m0,w0m1),m5[1]))),m2[2]),scale(sum(scale(diff(w2m1,w1m2),m0[1]),sum(scale(diff(w2m0,w0m2),-m1[1]),scale(diff(w1m0,w0m1),m2[1]))),-m5[2]))),-m3[3]),scale(sum(sum(scale(sum(scale(diff(w3m2,w2m3),m1[1]),sum(scale(diff(w3m1,w1m3),-m2[1]),scale(diff(w2m1,w1m2),m3[1]))),m0[2]),scale(sum(scale(diff(w3m2,w2m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m2[1]),scale(diff(w2m0,w0m2),m3[1]))),-m1[2])),sum(scale(sum(scale(diff(w3m1,w1m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m1[1]),scale(diff(w1m0,w0m1),m3[1]))),m2[2]),scale(sum(scale(diff(w2m1,w1m2),m0[1]),sum(scale(diff(w2m0,w0m2),-m1[1]),scale(diff(w1m0,w0m1),m2[1]))),-m3[2]))),m5[3])))));var n=sum(sum(sum(scale(sum(sum(scale(sum(scale(diff(w5m4,w4m5),m3[1]),sum(scale(diff(w5m3,w3m5),-m4[1]),scale(diff(w4m3,w3m4),m5[1]))),m2[2]),scale(sum(scale(diff(w5m4,w4m5),m2[1]),sum(scale(diff(w5m2,w2m5),-m4[1]),scale(diff(w4m2,w2m4),m5[1]))),-m3[2])),sum(scale(sum(scale(diff(w5m3,w3m5),m2[1]),sum(scale(diff(w5m2,w2m5),-m3[1]),scale(diff(w3m2,w2m3),m5[1]))),m4[2]),scale(sum(scale(diff(w4m3,w3m4),m2[1]),sum(scale(diff(w4m2,w2m4),-m3[1]),scale(diff(w3m2,w2m3),m4[1]))),-m5[2]))),m0[3]),sum(scale(sum(sum(scale(sum(scale(diff(w5m4,w4m5),m3[1]),sum(scale(diff(w5m3,w3m5),-m4[1]),scale(diff(w4m3,w3m4),m5[1]))),m0[2]),scale(sum(scale(diff(w5m4,w4m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m4[1]),scale(diff(w4m0,w0m4),m5[1]))),-m3[2])),sum(scale(sum(scale(diff(w5m3,w3m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m3[1]),scale(diff(w3m0,w0m3),m5[1]))),m4[2]),scale(sum(scale(diff(w4m3,w3m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m3[1]),scale(diff(w3m0,w0m3),m4[1]))),-m5[2]))),-m2[3]),scale(sum(sum(scale(sum(scale(diff(w5m4,w4m5),m2[1]),sum(scale(diff(w5m2,w2m5),-m4[1]),scale(diff(w4m2,w2m4),m5[1]))),m0[2]),scale(sum(scale(diff(w5m4,w4m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m4[1]),scale(diff(w4m0,w0m4),m5[1]))),-m2[2])),sum(scale(sum(scale(diff(w5m2,w2m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m2[1]),scale(diff(w2m0,w0m2),m5[1]))),m4[2]),scale(sum(scale(diff(w4m2,w2m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m2[1]),scale(diff(w2m0,w0m2),m4[1]))),-m5[2]))),m3[3]))),sum(sum(scale(sum(sum(scale(sum(scale(diff(w5m3,w3m5),m2[1]),sum(scale(diff(w5m2,w2m5),-m3[1]),scale(diff(w3m2,w2m3),m5[1]))),m0[2]),scale(sum(scale(diff(w5m3,w3m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m3[1]),scale(diff(w3m0,w0m3),m5[1]))),-m2[2])),sum(scale(sum(scale(diff(w5m2,w2m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m2[1]),scale(diff(w2m0,w0m2),m5[1]))),m3[2]),scale(sum(scale(diff(w3m2,w2m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m2[1]),scale(diff(w2m0,w0m2),m3[1]))),-m5[2]))),-m4[3]),scale(sum(sum(scale(sum(scale(diff(w4m3,w3m4),m2[1]),sum(scale(diff(w4m2,w2m4),-m3[1]),scale(diff(w3m2,w2m3),m4[1]))),m0[2]),scale(sum(scale(diff(w4m3,w3m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m3[1]),scale(diff(w3m0,w0m3),m4[1]))),-m2[2])),sum(scale(sum(scale(diff(w4m2,w2m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m2[1]),scale(diff(w2m0,w0m2),m4[1]))),m3[2]),scale(sum(scale(diff(w3m2,w2m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m2[1]),scale(diff(w2m0,w0m2),m3[1]))),-m4[2]))),m5[3])),sum(scale(sum(sum(scale(sum(scale(diff(w5m4,w4m5),m2[1]),sum(scale(diff(w5m2,w2m5),-m4[1]),scale(diff(w4m2,w2m4),m5[1]))),m1[2]),scale(sum(scale(diff(w5m4,w4m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m4[1]),scale(diff(w4m1,w1m4),m5[1]))),-m2[2])),sum(scale(sum(scale(diff(w5m2,w2m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m2[1]),scale(diff(w2m1,w1m2),m5[1]))),m4[2]),scale(sum(scale(diff(w4m2,w2m4),m1[1]),sum(scale(diff(w4m1,w1m4),-m2[1]),scale(diff(w2m1,w1m2),m4[1]))),-m5[2]))),m0[3]),scale(sum(sum(scale(sum(scale(diff(w5m4,w4m5),m2[1]),sum(scale(diff(w5m2,w2m5),-m4[1]),scale(diff(w4m2,w2m4),m5[1]))),m0[2]),scale(sum(scale(diff(w5m4,w4m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m4[1]),scale(diff(w4m0,w0m4),m5[1]))),-m2[2])),sum(scale(sum(scale(diff(w5m2,w2m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m2[1]),scale(diff(w2m0,w0m2),m5[1]))),m4[2]),scale(sum(scale(diff(w4m2,w2m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m2[1]),scale(diff(w2m0,w0m2),m4[1]))),-m5[2]))),-m1[3])))),sum(sum(sum(scale(sum(sum(scale(sum(scale(diff(w5m4,w4m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m4[1]),scale(diff(w4m1,w1m4),m5[1]))),m0[2]),scale(sum(scale(diff(w5m4,w4m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m4[1]),scale(diff(w4m0,w0m4),m5[1]))),-m1[2])),sum(scale(sum(scale(diff(w5m1,w1m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m1[1]),scale(diff(w1m0,w0m1),m5[1]))),m4[2]),scale(sum(scale(diff(w4m1,w1m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m1[1]),scale(diff(w1m0,w0m1),m4[1]))),-m5[2]))),m2[3]),scale(sum(sum(scale(sum(scale(diff(w5m2,w2m5),m1[1]),sum(scale(diff(w5m1,w1m5),-m2[1]),scale(diff(w2m1,w1m2),m5[1]))),m0[2]),scale(sum(scale(diff(w5m2,w2m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m2[1]),scale(diff(w2m0,w0m2),m5[1]))),-m1[2])),sum(scale(sum(scale(diff(w5m1,w1m5),m0[1]),sum(scale(diff(w5m0,w0m5),-m1[1]),scale(diff(w1m0,w0m1),m5[1]))),m2[2]),scale(sum(scale(diff(w2m1,w1m2),m0[1]),sum(scale(diff(w2m0,w0m2),-m1[1]),scale(diff(w1m0,w0m1),m2[1]))),-m5[2]))),-m4[3])),sum(scale(sum(sum(scale(sum(scale(diff(w4m2,w2m4),m1[1]),sum(scale(diff(w4m1,w1m4),-m2[1]),scale(diff(w2m1,w1m2),m4[1]))),m0[2]),scale(sum(scale(diff(w4m2,w2m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m2[1]),scale(diff(w2m0,w0m2),m4[1]))),-m1[2])),sum(scale(sum(scale(diff(w4m1,w1m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m1[1]),scale(diff(w1m0,w0m1),m4[1]))),m2[2]),scale(sum(scale(diff(w2m1,w1m2),m0[1]),sum(scale(diff(w2m0,w0m2),-m1[1]),scale(diff(w1m0,w0m1),m2[1]))),-m4[2]))),m5[3]),scale(sum(sum(scale(sum(scale(diff(w4m3,w3m4),m2[1]),sum(scale(diff(w4m2,w2m4),-m3[1]),scale(diff(w3m2,w2m3),m4[1]))),m1[2]),scale(sum(scale(diff(w4m3,w3m4),m1[1]),sum(scale(diff(w4m1,w1m4),-m3[1]),scale(diff(w3m1,w1m3),m4[1]))),-m2[2])),sum(scale(sum(scale(diff(w4m2,w2m4),m1[1]),sum(scale(diff(w4m1,w1m4),-m2[1]),scale(diff(w2m1,w1m2),m4[1]))),m3[2]),scale(sum(scale(diff(w3m2,w2m3),m1[1]),sum(scale(diff(w3m1,w1m3),-m2[1]),scale(diff(w2m1,w1m2),m3[1]))),-m4[2]))),m0[3]))),sum(sum(scale(sum(sum(scale(sum(scale(diff(w4m3,w3m4),m2[1]),sum(scale(diff(w4m2,w2m4),-m3[1]),scale(diff(w3m2,w2m3),m4[1]))),m0[2]),scale(sum(scale(diff(w4m3,w3m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m3[1]),scale(diff(w3m0,w0m3),m4[1]))),-m2[2])),sum(scale(sum(scale(diff(w4m2,w2m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m2[1]),scale(diff(w2m0,w0m2),m4[1]))),m3[2]),scale(sum(scale(diff(w3m2,w2m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m2[1]),scale(diff(w2m0,w0m2),m3[1]))),-m4[2]))),-m1[3]),scale(sum(sum(scale(sum(scale(diff(w4m3,w3m4),m1[1]),sum(scale(diff(w4m1,w1m4),-m3[1]),scale(diff(w3m1,w1m3),m4[1]))),m0[2]),scale(sum(scale(diff(w4m3,w3m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m3[1]),scale(diff(w3m0,w0m3),m4[1]))),-m1[2])),sum(scale(sum(scale(diff(w4m1,w1m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m1[1]),scale(diff(w1m0,w0m1),m4[1]))),m3[2]),scale(sum(scale(diff(w3m1,w1m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m1[1]),scale(diff(w1m0,w0m1),m3[1]))),-m4[2]))),m2[3])),sum(scale(sum(sum(scale(sum(scale(diff(w4m2,w2m4),m1[1]),sum(scale(diff(w4m1,w1m4),-m2[1]),scale(diff(w2m1,w1m2),m4[1]))),m0[2]),scale(sum(scale(diff(w4m2,w2m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m2[1]),scale(diff(w2m0,w0m2),m4[1]))),-m1[2])),sum(scale(sum(scale(diff(w4m1,w1m4),m0[1]),sum(scale(diff(w4m0,w0m4),-m1[1]),scale(diff(w1m0,w0m1),m4[1]))),m2[2]),scale(sum(scale(diff(w2m1,w1m2),m0[1]),sum(scale(diff(w2m0,w0m2),-m1[1]),scale(diff(w1m0,w0m1),m2[1]))),-m4[2]))),-m3[3]),scale(sum(sum(scale(sum(scale(diff(w3m2,w2m3),m1[1]),sum(scale(diff(w3m1,w1m3),-m2[1]),scale(diff(w2m1,w1m2),m3[1]))),m0[2]),scale(sum(scale(diff(w3m2,w2m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m2[1]),scale(diff(w2m0,w0m2),m3[1]))),-m1[2])),sum(scale(sum(scale(diff(w3m1,w1m3),m0[1]),sum(scale(diff(w3m0,w0m3),-m1[1]),scale(diff(w1m0,w0m1),m3[1]))),m2[2]),scale(sum(scale(diff(w2m1,w1m2),m0[1]),sum(scale(diff(w2m0,w0m2),-m1[1]),scale(diff(w1m0,w0m1),m2[1]))),-m3[2]))),m4[3])))));var d=diff(p,n);return d[d.length-1];}return exactInSphere6;}var CACHED=[inSphere0,inSphere1,inSphere2];function slowInSphere(args){var proc=CACHED[args.length];if(!proc){proc=CACHED[args.length]=orientation(args.length);}return proc.apply(undefined,args);}function proc(slow,o0,o1,o2,o3,o4,o5,o6){function testInSphere(a0,a1,a2,a3,a4,a5){switch(arguments.length){case 0:case 1:return 0;case 2:return o2(a0,a1);case 3:return o3(a0,a1,a2);case 4:return o4(a0,a1,a2,a3);case 5:return o5(a0,a1,a2,a3,a4);case 6:return o6(a0,a1,a2,a3,a4,a5);}var s=new Array(arguments.length);for(var i=0;i<arguments.length;++i){s[i]=arguments[i];}return slow(s);}return testInSphere;}function generateInSphereTest(){while(CACHED.length<=NUM_EXPAND){CACHED.push(orientation(CACHED.length));}module.exports=proc.apply(undefined,[slowInSphere].concat(CACHED));for(var i=0;i<=NUM_EXPAND;++i){module.exports[i]=CACHED[i];}}generateInSphereTest();/***/},/***/6606:/***/function(module,__unused_webpack_exports,__nested_webpack_require_773154__){\"use strict\";var determinant=__nested_webpack_require_773154__(8167);var NUM_EXPAND=6;function generateSolver(n){var fn=n===2?solve2d:n===3?solve3d:n===4?solve4d:n===5?solve5d:solve6d;if(n<6){return fn(determinant[n]);}return fn(determinant);}function robustLinearSolve0d(){return[[0]];}function robustLinearSolve1d(A,b){return[[b[0]],[A[0][0]]];}function solve2d(det){return function robustLinearSolve2d(A,b){return[det([[+b[0],+A[0][1]],[+b[1],+A[1][1]]]),det([[+A[0][0],+b[0]],[+A[1][0],+b[1]]]),det(A)];};}function solve3d(det){return function robustLinearSolve3d(A,b){return[det([[+b[0],+A[0][1],+A[0][2]],[+b[1],+A[1][1],+A[1][2]],[+b[2],+A[2][1],+A[2][2]]]),det([[+A[0][0],+b[0],+A[0][2]],[+A[1][0],+b[1],+A[1][2]],[+A[2][0],+b[2],+A[2][2]]]),det([[+A[0][0],+A[0][1],+b[0]],[+A[1][0],+A[1][1],+b[1]],[+A[2][0],+A[2][1],+b[2]]]),det(A)];};}function solve4d(det){return function robustLinearSolve4d(A,b){return[det([[+b[0],+A[0][1],+A[0][2],+A[0][3]],[+b[1],+A[1][1],+A[1][2],+A[1][3]],[+b[2],+A[2][1],+A[2][2],+A[2][3]],[+b[3],+A[3][1],+A[3][2],+A[3][3]]]),det([[+A[0][0],+b[0],+A[0][2],+A[0][3]],[+A[1][0],+b[1],+A[1][2],+A[1][3]],[+A[2][0],+b[2],+A[2][2],+A[2][3]],[+A[3][0],+b[3],+A[3][2],+A[3][3]]]),det([[+A[0][0],+A[0][1],+b[0],+A[0][3]],[+A[1][0],+A[1][1],+b[1],+A[1][3]],[+A[2][0],+A[2][1],+b[2],+A[2][3]],[+A[3][0],+A[3][1],+b[3],+A[3][3]]]),det([[+A[0][0],+A[0][1],+A[0][2],+b[0]],[+A[1][0],+A[1][1],+A[1][2],+b[1]],[+A[2][0],+A[2][1],+A[2][2],+b[2]],[+A[3][0],+A[3][1],+A[3][2],+b[3]]]),det(A)];};}function solve5d(det){return function robustLinearSolve5d(A,b){return[det([[+b[0],+A[0][1],+A[0][2],+A[0][3],+A[0][4]],[+b[1],+A[1][1],+A[1][2],+A[1][3],+A[1][4]],[+b[2],+A[2][1],+A[2][2],+A[2][3],+A[2][4]],[+b[3],+A[3][1],+A[3][2],+A[3][3],+A[3][4]],[+b[4],+A[4][1],+A[4][2],+A[4][3],+A[4][4]]]),det([[+A[0][0],+b[0],+A[0][2],+A[0][3],+A[0][4]],[+A[1][0],+b[1],+A[1][2],+A[1][3],+A[1][4]],[+A[2][0],+b[2],+A[2][2],+A[2][3],+A[2][4]],[+A[3][0],+b[3],+A[3][2],+A[3][3],+A[3][4]],[+A[4][0],+b[4],+A[4][2],+A[4][3],+A[4][4]]]),det([[+A[0][0],+A[0][1],+b[0],+A[0][3],+A[0][4]],[+A[1][0],+A[1][1],+b[1],+A[1][3],+A[1][4]],[+A[2][0],+A[2][1],+b[2],+A[2][3],+A[2][4]],[+A[3][0],+A[3][1],+b[3],+A[3][3],+A[3][4]],[+A[4][0],+A[4][1],+b[4],+A[4][3],+A[4][4]]]),det([[+A[0][0],+A[0][1],+A[0][2],+b[0],+A[0][4]],[+A[1][0],+A[1][1],+A[1][2],+b[1],+A[1][4]],[+A[2][0],+A[2][1],+A[2][2],+b[2],+A[2][4]],[+A[3][0],+A[3][1],+A[3][2],+b[3],+A[3][4]],[+A[4][0],+A[4][1],+A[4][2],+b[4],+A[4][4]]]),det([[+A[0][0],+A[0][1],+A[0][2],+A[0][3],+b[0]],[+A[1][0],+A[1][1],+A[1][2],+A[1][3],+b[1]],[+A[2][0],+A[2][1],+A[2][2],+A[2][3],+b[2]],[+A[3][0],+A[3][1],+A[3][2],+A[3][3],+b[3]],[+A[4][0],+A[4][1],+A[4][2],+A[4][3],+b[4]]]),det(A)];};}function solve6d(det){return function robustLinearSolve6d(A,b){return[det([[+b[0],+A[0][1],+A[0][2],+A[0][3],+A[0][4],+A[0][5]],[+b[1],+A[1][1],+A[1][2],+A[1][3],+A[1][4],+A[1][5]],[+b[2],+A[2][1],+A[2][2],+A[2][3],+A[2][4],+A[2][5]],[+b[3],+A[3][1],+A[3][2],+A[3][3],+A[3][4],+A[3][5]],[+b[4],+A[4][1],+A[4][2],+A[4][3],+A[4][4],+A[4][5]],[+b[5],+A[5][1],+A[5][2],+A[5][3],+A[5][4],+A[5][5]]]),det([[+A[0][0],+b[0],+A[0][2],+A[0][3],+A[0][4],+A[0][5]],[+A[1][0],+b[1],+A[1][2],+A[1][3],+A[1][4],+A[1][5]],[+A[2][0],+b[2],+A[2][2],+A[2][3],+A[2][4],+A[2][5]],[+A[3][0],+b[3],+A[3][2],+A[3][3],+A[3][4],+A[3][5]],[+A[4][0],+b[4],+A[4][2],+A[4][3],+A[4][4],+A[4][5]],[+A[5][0],+b[5],+A[5][2],+A[5][3],+A[5][4],+A[5][5]]]),det([[+A[0][0],+A[0][1],+b[0],+A[0][3],+A[0][4],+A[0][5]],[+A[1][0],+A[1][1],+b[1],+A[1][3],+A[1][4],+A[1][5]],[+A[2][0],+A[2][1],+b[2],+A[2][3],+A[2][4],+A[2][5]],[+A[3][0],+A[3][1],+b[3],+A[3][3],+A[3][4],+A[3][5]],[+A[4][0],+A[4][1],+b[4],+A[4][3],+A[4][4],+A[4][5]],[+A[5][0],+A[5][1],+b[5],+A[5][3],+A[5][4],+A[5][5]]]),det([[+A[0][0],+A[0][1],+A[0][2],+b[0],+A[0][4],+A[0][5]],[+A[1][0],+A[1][1],+A[1][2],+b[1],+A[1][4],+A[1][5]],[+A[2][0],+A[2][1],+A[2][2],+b[2],+A[2][4],+A[2][5]],[+A[3][0],+A[3][1],+A[3][2],+b[3],+A[3][4],+A[3][5]],[+A[4][0],+A[4][1],+A[4][2],+b[4],+A[4][4],+A[4][5]],[+A[5][0],+A[5][1],+A[5][2],+b[5],+A[5][4],+A[5][5]]]),det([[+A[0][0],+A[0][1],+A[0][2],+A[0][3],+b[0],+A[0][5]],[+A[1][0],+A[1][1],+A[1][2],+A[1][3],+b[1],+A[1][5]],[+A[2][0],+A[2][1],+A[2][2],+A[2][3],+b[2],+A[2][5]],[+A[3][0],+A[3][1],+A[3][2],+A[3][3],+b[3],+A[3][5]],[+A[4][0],+A[4][1],+A[4][2],+A[4][3],+b[4],+A[4][5]],[+A[5][0],+A[5][1],+A[5][2],+A[5][3],+b[5],+A[5][5]]]),det([[+A[0][0],+A[0][1],+A[0][2],+A[0][3],+A[0][4],+b[0]],[+A[1][0],+A[1][1],+A[1][2],+A[1][3],+A[1][4],+b[1]],[+A[2][0],+A[2][1],+A[2][2],+A[2][3],+A[2][4],+b[2]],[+A[3][0],+A[3][1],+A[3][2],+A[3][3],+A[3][4],+b[3]],[+A[4][0],+A[4][1],+A[4][2],+A[4][3],+A[4][4],+b[4]],[+A[5][0],+A[5][1],+A[5][2],+A[5][3],+A[5][4],+b[5]]]),det(A)];};}var CACHE=[robustLinearSolve0d,robustLinearSolve1d];function proc(s0,s1,s2,s3,s4,s5,CACHE,g){return function dispatchLinearSolve(A,b){switch(A.length){case 0:return s0(A,b);case 1:return s1(A,b);case 2:return s2(A,b);case 3:return s3(A,b);case 4:return s4(A,b);case 5:return s5(A,b);}var s=CACHE[A.length];if(!s)s=CACHE[A.length]=g(A.length);return s(A,b);};}function generateDispatch(){while(CACHE.length<NUM_EXPAND){CACHE.push(generateSolver(CACHE.length));}module.exports=proc.apply(undefined,CACHE.concat([CACHE,generateSolver]));for(var i=0;i<NUM_EXPAND;++i){module.exports[i]=CACHE[i];}}generateDispatch();/***/},/***/417:/***/function(module,__unused_webpack_exports,__nested_webpack_require_778597__){\"use strict\";var twoProduct=__nested_webpack_require_778597__(9660);var robustSum=__nested_webpack_require_778597__(9662);var robustScale=__nested_webpack_require_778597__(8289);var robustSubtract=__nested_webpack_require_778597__(4078);var NUM_EXPAND=5;var EPSILON=1.1102230246251565e-16;var ERRBOUND3=(3.0+16.0*EPSILON)*EPSILON;var ERRBOUND4=(7.0+56.0*EPSILON)*EPSILON;function orientation_3(sum,prod,scale,sub){return function orientation3Exact(m0,m1,m2){var p=sum(sum(prod(m1[1],m2[0]),prod(-m2[1],m1[0])),sum(prod(m0[1],m1[0]),prod(-m1[1],m0[0])));var n=sum(prod(m0[1],m2[0]),prod(-m2[1],m0[0]));var d=sub(p,n);return d[d.length-1];};}function orientation_4(sum,prod,scale,sub){return function orientation4Exact(m0,m1,m2,m3){var p=sum(sum(scale(sum(prod(m2[1],m3[0]),prod(-m3[1],m2[0])),m1[2]),sum(scale(sum(prod(m1[1],m3[0]),prod(-m3[1],m1[0])),-m2[2]),scale(sum(prod(m1[1],m2[0]),prod(-m2[1],m1[0])),m3[2]))),sum(scale(sum(prod(m1[1],m3[0]),prod(-m3[1],m1[0])),m0[2]),sum(scale(sum(prod(m0[1],m3[0]),prod(-m3[1],m0[0])),-m1[2]),scale(sum(prod(m0[1],m1[0]),prod(-m1[1],m0[0])),m3[2]))));var n=sum(sum(scale(sum(prod(m2[1],m3[0]),prod(-m3[1],m2[0])),m0[2]),sum(scale(sum(prod(m0[1],m3[0]),prod(-m3[1],m0[0])),-m2[2]),scale(sum(prod(m0[1],m2[0]),prod(-m2[1],m0[0])),m3[2]))),sum(scale(sum(prod(m1[1],m2[0]),prod(-m2[1],m1[0])),m0[2]),sum(scale(sum(prod(m0[1],m2[0]),prod(-m2[1],m0[0])),-m1[2]),scale(sum(prod(m0[1],m1[0]),prod(-m1[1],m0[0])),m2[2]))));var d=sub(p,n);return d[d.length-1];};}function orientation_5(sum,prod,scale,sub){return function orientation5Exact(m0,m1,m2,m3,m4){var p=sum(sum(sum(scale(sum(scale(sum(prod(m3[1],m4[0]),prod(-m4[1],m3[0])),m2[2]),sum(scale(sum(prod(m2[1],m4[0]),prod(-m4[1],m2[0])),-m3[2]),scale(sum(prod(m2[1],m3[0]),prod(-m3[1],m2[0])),m4[2]))),m1[3]),sum(scale(sum(scale(sum(prod(m3[1],m4[0]),prod(-m4[1],m3[0])),m1[2]),sum(scale(sum(prod(m1[1],m4[0]),prod(-m4[1],m1[0])),-m3[2]),scale(sum(prod(m1[1],m3[0]),prod(-m3[1],m1[0])),m4[2]))),-m2[3]),scale(sum(scale(sum(prod(m2[1],m4[0]),prod(-m4[1],m2[0])),m1[2]),sum(scale(sum(prod(m1[1],m4[0]),prod(-m4[1],m1[0])),-m2[2]),scale(sum(prod(m1[1],m2[0]),prod(-m2[1],m1[0])),m4[2]))),m3[3]))),sum(scale(sum(scale(sum(prod(m2[1],m3[0]),prod(-m3[1],m2[0])),m1[2]),sum(scale(sum(prod(m1[1],m3[0]),prod(-m3[1],m1[0])),-m2[2]),scale(sum(prod(m1[1],m2[0]),prod(-m2[1],m1[0])),m3[2]))),-m4[3]),sum(scale(sum(scale(sum(prod(m3[1],m4[0]),prod(-m4[1],m3[0])),m1[2]),sum(scale(sum(prod(m1[1],m4[0]),prod(-m4[1],m1[0])),-m3[2]),scale(sum(prod(m1[1],m3[0]),prod(-m3[1],m1[0])),m4[2]))),m0[3]),scale(sum(scale(sum(prod(m3[1],m4[0]),prod(-m4[1],m3[0])),m0[2]),sum(scale(sum(prod(m0[1],m4[0]),prod(-m4[1],m0[0])),-m3[2]),scale(sum(prod(m0[1],m3[0]),prod(-m3[1],m0[0])),m4[2]))),-m1[3])))),sum(sum(scale(sum(scale(sum(prod(m1[1],m4[0]),prod(-m4[1],m1[0])),m0[2]),sum(scale(sum(prod(m0[1],m4[0]),prod(-m4[1],m0[0])),-m1[2]),scale(sum(prod(m0[1],m1[0]),prod(-m1[1],m0[0])),m4[2]))),m3[3]),sum(scale(sum(scale(sum(prod(m1[1],m3[0]),prod(-m3[1],m1[0])),m0[2]),sum(scale(sum(prod(m0[1],m3[0]),prod(-m3[1],m0[0])),-m1[2]),scale(sum(prod(m0[1],m1[0]),prod(-m1[1],m0[0])),m3[2]))),-m4[3]),scale(sum(scale(sum(prod(m2[1],m3[0]),prod(-m3[1],m2[0])),m1[2]),sum(scale(sum(prod(m1[1],m3[0]),prod(-m3[1],m1[0])),-m2[2]),scale(sum(prod(m1[1],m2[0]),prod(-m2[1],m1[0])),m3[2]))),m0[3]))),sum(scale(sum(scale(sum(prod(m2[1],m3[0]),prod(-m3[1],m2[0])),m0[2]),sum(scale(sum(prod(m0[1],m3[0]),prod(-m3[1],m0[0])),-m2[2]),scale(sum(prod(m0[1],m2[0]),prod(-m2[1],m0[0])),m3[2]))),-m1[3]),sum(scale(sum(scale(sum(prod(m1[1],m3[0]),prod(-m3[1],m1[0])),m0[2]),sum(scale(sum(prod(m0[1],m3[0]),prod(-m3[1],m0[0])),-m1[2]),scale(sum(prod(m0[1],m1[0]),prod(-m1[1],m0[0])),m3[2]))),m2[3]),scale(sum(scale(sum(prod(m1[1],m2[0]),prod(-m2[1],m1[0])),m0[2]),sum(scale(sum(prod(m0[1],m2[0]),prod(-m2[1],m0[0])),-m1[2]),scale(sum(prod(m0[1],m1[0]),prod(-m1[1],m0[0])),m2[2]))),-m3[3])))));var n=sum(sum(sum(scale(sum(scale(sum(prod(m3[1],m4[0]),prod(-m4[1],m3[0])),m2[2]),sum(scale(sum(prod(m2[1],m4[0]),prod(-m4[1],m2[0])),-m3[2]),scale(sum(prod(m2[1],m3[0]),prod(-m3[1],m2[0])),m4[2]))),m0[3]),scale(sum(scale(sum(prod(m3[1],m4[0]),prod(-m4[1],m3[0])),m0[2]),sum(scale(sum(prod(m0[1],m4[0]),prod(-m4[1],m0[0])),-m3[2]),scale(sum(prod(m0[1],m3[0]),prod(-m3[1],m0[0])),m4[2]))),-m2[3])),sum(scale(sum(scale(sum(prod(m2[1],m4[0]),prod(-m4[1],m2[0])),m0[2]),sum(scale(sum(prod(m0[1],m4[0]),prod(-m4[1],m0[0])),-m2[2]),scale(sum(prod(m0[1],m2[0]),prod(-m2[1],m0[0])),m4[2]))),m3[3]),scale(sum(scale(sum(prod(m2[1],m3[0]),prod(-m3[1],m2[0])),m0[2]),sum(scale(sum(prod(m0[1],m3[0]),prod(-m3[1],m0[0])),-m2[2]),scale(sum(prod(m0[1],m2[0]),prod(-m2[1],m0[0])),m3[2]))),-m4[3]))),sum(sum(scale(sum(scale(sum(prod(m2[1],m4[0]),prod(-m4[1],m2[0])),m1[2]),sum(scale(sum(prod(m1[1],m4[0]),prod(-m4[1],m1[0])),-m2[2]),scale(sum(prod(m1[1],m2[0]),prod(-m2[1],m1[0])),m4[2]))),m0[3]),scale(sum(scale(sum(prod(m2[1],m4[0]),prod(-m4[1],m2[0])),m0[2]),sum(scale(sum(prod(m0[1],m4[0]),prod(-m4[1],m0[0])),-m2[2]),scale(sum(prod(m0[1],m2[0]),prod(-m2[1],m0[0])),m4[2]))),-m1[3])),sum(scale(sum(scale(sum(prod(m1[1],m4[0]),prod(-m4[1],m1[0])),m0[2]),sum(scale(sum(prod(m0[1],m4[0]),prod(-m4[1],m0[0])),-m1[2]),scale(sum(prod(m0[1],m1[0]),prod(-m1[1],m0[0])),m4[2]))),m2[3]),scale(sum(scale(sum(prod(m1[1],m2[0]),prod(-m2[1],m1[0])),m0[2]),sum(scale(sum(prod(m0[1],m2[0]),prod(-m2[1],m0[0])),-m1[2]),scale(sum(prod(m0[1],m1[0]),prod(-m1[1],m0[0])),m2[2]))),-m4[3]))));var d=sub(p,n);return d[d.length-1];};}function orientation(n){var fn=n===3?orientation_3:n===4?orientation_4:orientation_5;return fn(robustSum,twoProduct,robustScale,robustSubtract);}var orientation3Exact=orientation(3);var orientation4Exact=orientation(4);var CACHED=[function orientation0(){return 0;},function orientation1(){return 0;},function orientation2(a,b){return b[0]-a[0];},function orientation3(a,b,c){var l=(a[1]-c[1])*(b[0]-c[0]);var r=(a[0]-c[0])*(b[1]-c[1]);var det=l-r;var s;if(l>0){if(r<=0){return det;}else{s=l+r;}}else if(l<0){if(r>=0){return det;}else{s=-(l+r);}}else{return det;}var tol=ERRBOUND3*s;if(det>=tol||det<=-tol){return det;}return orientation3Exact(a,b,c);},function orientation4(a,b,c,d){var adx=a[0]-d[0];var bdx=b[0]-d[0];var cdx=c[0]-d[0];var ady=a[1]-d[1];var bdy=b[1]-d[1];var cdy=c[1]-d[1];var adz=a[2]-d[2];var bdz=b[2]-d[2];var cdz=c[2]-d[2];var bdxcdy=bdx*cdy;var cdxbdy=cdx*bdy;var cdxady=cdx*ady;var adxcdy=adx*cdy;var adxbdy=adx*bdy;var bdxady=bdx*ady;var det=adz*(bdxcdy-cdxbdy)+bdz*(cdxady-adxcdy)+cdz*(adxbdy-bdxady);var permanent=(Math.abs(bdxcdy)+Math.abs(cdxbdy))*Math.abs(adz)+(Math.abs(cdxady)+Math.abs(adxcdy))*Math.abs(bdz)+(Math.abs(adxbdy)+Math.abs(bdxady))*Math.abs(cdz);var tol=ERRBOUND4*permanent;if(det>tol||-det>tol){return det;}return orientation4Exact(a,b,c,d);}];function slowOrient(args){var proc=CACHED[args.length];if(!proc){proc=CACHED[args.length]=orientation(args.length);}return proc.apply(undefined,args);}function proc(slow,o0,o1,o2,o3,o4,o5){return function getOrientation(a0,a1,a2,a3,a4){switch(arguments.length){case 0:case 1:return 0;case 2:return o2(a0,a1);case 3:return o3(a0,a1,a2);case 4:return o4(a0,a1,a2,a3);case 5:return o5(a0,a1,a2,a3,a4);}var s=new Array(arguments.length);for(var i=0;i<arguments.length;++i){s[i]=arguments[i];}return slow(s);};}function generateOrientationProc(){while(CACHED.length<=NUM_EXPAND){CACHED.push(orientation(CACHED.length));}module.exports=proc.apply(undefined,[slowOrient].concat(CACHED));for(var i=0;i<=NUM_EXPAND;++i){module.exports[i]=CACHED[i];}}generateOrientationProc();/***/},/***/2019:/***/function(module,__unused_webpack_exports,__nested_webpack_require_786202__){\"use strict\";var robustSum=__nested_webpack_require_786202__(9662);var robustScale=__nested_webpack_require_786202__(8289);module.exports=robustProduct;function robustProduct(a,b){if(a.length===1){return robustScale(b,a[0]);}if(b.length===1){return robustScale(a,b[0]);}if(a.length===0||b.length===0){return[0];}var r=[0];if(a.length<b.length){for(var i=0;i<a.length;++i){r=robustSum(r,robustScale(b,a[i]));}}else{for(var i=0;i<b.length;++i){r=robustSum(r,robustScale(a,b[i]));}}return r;}/***/},/***/8289:/***/function(module,__unused_webpack_exports,__nested_webpack_require_786747__){\"use strict\";var twoProduct=__nested_webpack_require_786747__(9660);var twoSum=__nested_webpack_require_786747__(87);module.exports=scaleLinearExpansion;function scaleLinearExpansion(e,scale){var n=e.length;if(n===1){var ts=twoProduct(e[0],scale);if(ts[0]){return ts;}return[ts[1]];}var g=new Array(2*n);var q=[0.1,0.1];var t=[0.1,0.1];var count=0;twoProduct(e[0],scale,q);if(q[0]){g[count++]=q[0];}for(var i=1;i<n;++i){twoProduct(e[i],scale,t);var pq=q[1];twoSum(pq,t[0],q);if(q[0]){g[count++]=q[0];}var a=t[1];var b=q[1];var x=a+b;var bv=x-a;var y=b-bv;q[1]=x;if(y){g[count++]=y;}}if(q[1]){g[count++]=q[1];}if(count===0){g[count++]=0.0;}g.length=count;return g;}/***/},/***/4434:/***/function(module,__unused_webpack_exports,__nested_webpack_require_787467__){\"use strict\";module.exports=segmentsIntersect;var orient=__nested_webpack_require_787467__(417)[3];function checkCollinear(a0,a1,b0,b1){for(var d=0;d<2;++d){var x0=a0[d];var y0=a1[d];var l0=Math.min(x0,y0);var h0=Math.max(x0,y0);var x1=b0[d];var y1=b1[d];var l1=Math.min(x1,y1);var h1=Math.max(x1,y1);if(h1<l0||h0<l1){return false;}}return true;}function segmentsIntersect(a0,a1,b0,b1){var x0=orient(a0,b0,b1);var y0=orient(a1,b0,b1);if(x0>0&&y0>0||x0<0&&y0<0){return false;}var x1=orient(b0,a0,a1);var y1=orient(b1,a0,a1);if(x1>0&&y1>0||x1<0&&y1<0){return false;}//Check for degenerate collinear case\nif(x0===0&&y0===0&&x1===0&&y1===0){return checkCollinear(a0,a1,b0,b1);}return true;}/***/},/***/4078:/***/function(module){\"use strict\";module.exports=robustSubtract;//Easy case: Add two scalars\nfunction scalarScalar(a,b){var x=a+b;var bv=x-a;var av=x-bv;var br=b-bv;var ar=a-av;var y=ar+br;if(y){return[y,x];}return[x];}function robustSubtract(e,f){var ne=e.length|0;var nf=f.length|0;if(ne===1&&nf===1){return scalarScalar(e[0],-f[0]);}var n=ne+nf;var g=new Array(n);var count=0;var eptr=0;var fptr=0;var abs=Math.abs;var ei=e[eptr];var ea=abs(ei);var fi=-f[fptr];var fa=abs(fi);var a,b;if(ea<fa){b=ei;eptr+=1;if(eptr<ne){ei=e[eptr];ea=abs(ei);}}else{b=fi;fptr+=1;if(fptr<nf){fi=-f[fptr];fa=abs(fi);}}if(eptr<ne&&ea<fa||fptr>=nf){a=ei;eptr+=1;if(eptr<ne){ei=e[eptr];ea=abs(ei);}}else{a=fi;fptr+=1;if(fptr<nf){fi=-f[fptr];fa=abs(fi);}}var x=a+b;var bv=x-a;var y=b-bv;var q0=y;var q1=x;var _x,_bv,_av,_br,_ar;while(eptr<ne&&fptr<nf){if(ea<fa){a=ei;eptr+=1;if(eptr<ne){ei=e[eptr];ea=abs(ei);}}else{a=fi;fptr+=1;if(fptr<nf){fi=-f[fptr];fa=abs(fi);}}b=q0;x=a+b;bv=x-a;y=b-bv;if(y){g[count++]=y;}_x=q1+x;_bv=_x-q1;_av=_x-_bv;_br=x-_bv;_ar=q1-_av;q0=_ar+_br;q1=_x;}while(eptr<ne){a=ei;b=q0;x=a+b;bv=x-a;y=b-bv;if(y){g[count++]=y;}_x=q1+x;_bv=_x-q1;_av=_x-_bv;_br=x-_bv;_ar=q1-_av;q0=_ar+_br;q1=_x;eptr+=1;if(eptr<ne){ei=e[eptr];}}while(fptr<nf){a=fi;b=q0;x=a+b;bv=x-a;y=b-bv;if(y){g[count++]=y;}_x=q1+x;_bv=_x-q1;_av=_x-_bv;_br=x-_bv;_ar=q1-_av;q0=_ar+_br;q1=_x;fptr+=1;if(fptr<nf){fi=-f[fptr];}}if(q0){g[count++]=q0;}if(q1){g[count++]=q1;}if(!count){g[count++]=0.0;}g.length=count;return g;}/***/},/***/9662:/***/function(module){\"use strict\";module.exports=linearExpansionSum;//Easy case: Add two scalars\nfunction scalarScalar(a,b){var x=a+b;var bv=x-a;var av=x-bv;var br=b-bv;var ar=a-av;var y=ar+br;if(y){return[y,x];}return[x];}function linearExpansionSum(e,f){var ne=e.length|0;var nf=f.length|0;if(ne===1&&nf===1){return scalarScalar(e[0],f[0]);}var n=ne+nf;var g=new Array(n);var count=0;var eptr=0;var fptr=0;var abs=Math.abs;var ei=e[eptr];var ea=abs(ei);var fi=f[fptr];var fa=abs(fi);var a,b;if(ea<fa){b=ei;eptr+=1;if(eptr<ne){ei=e[eptr];ea=abs(ei);}}else{b=fi;fptr+=1;if(fptr<nf){fi=f[fptr];fa=abs(fi);}}if(eptr<ne&&ea<fa||fptr>=nf){a=ei;eptr+=1;if(eptr<ne){ei=e[eptr];ea=abs(ei);}}else{a=fi;fptr+=1;if(fptr<nf){fi=f[fptr];fa=abs(fi);}}var x=a+b;var bv=x-a;var y=b-bv;var q0=y;var q1=x;var _x,_bv,_av,_br,_ar;while(eptr<ne&&fptr<nf){if(ea<fa){a=ei;eptr+=1;if(eptr<ne){ei=e[eptr];ea=abs(ei);}}else{a=fi;fptr+=1;if(fptr<nf){fi=f[fptr];fa=abs(fi);}}b=q0;x=a+b;bv=x-a;y=b-bv;if(y){g[count++]=y;}_x=q1+x;_bv=_x-q1;_av=_x-_bv;_br=x-_bv;_ar=q1-_av;q0=_ar+_br;q1=_x;}while(eptr<ne){a=ei;b=q0;x=a+b;bv=x-a;y=b-bv;if(y){g[count++]=y;}_x=q1+x;_bv=_x-q1;_av=_x-_bv;_br=x-_bv;_ar=q1-_av;q0=_ar+_br;q1=_x;eptr+=1;if(eptr<ne){ei=e[eptr];}}while(fptr<nf){a=fi;b=q0;x=a+b;bv=x-a;y=b-bv;if(y){g[count++]=y;}_x=q1+x;_bv=_x-q1;_av=_x-_bv;_br=x-_bv;_ar=q1-_av;q0=_ar+_br;q1=_x;fptr+=1;if(fptr<nf){fi=f[fptr];}}if(q0){g[count++]=q0;}if(q1){g[count++]=q1;}if(!count){g[count++]=0.0;}g.length=count;return g;}/***/},/***/8691:/***/function(module,__unused_webpack_exports,__nested_webpack_require_791231__){\"use strict\";module.exports=boundary;var bnd=__nested_webpack_require_791231__(2692);var reduce=__nested_webpack_require_791231__(7037);function boundary(cells){return reduce(bnd(cells));}/***/},/***/7212:/***/function(module,__unused_webpack_exports,__nested_webpack_require_791475__){\"use strict\";module.exports=extractContour;var ndarray=__nested_webpack_require_791475__(5050);var pool=__nested_webpack_require_791475__(5306);var ndsort=__nested_webpack_require_791475__(8729);var contourAlgorithm=__nested_webpack_require_791475__(1168);function getDimension(cells){var numCells=cells.length;var d=0;for(var i=0;i<numCells;++i){d=Math.max(d,cells[i].length)|0;}return d-1;}function getSigns(values,level){var numVerts=values.length;var vertexSigns=pool.mallocUint8(numVerts);for(var i=0;i<numVerts;++i){vertexSigns[i]=values[i]<level|0;}return vertexSigns;}function getEdges(cells,d){var numCells=cells.length;var maxEdges=d*(d+1)/2*numCells|0;var edges=pool.mallocUint32(maxEdges*2);var ePtr=0;for(var i=0;i<numCells;++i){var c=cells[i];var d=c.length;for(var j=0;j<d;++j){for(var k=0;k<j;++k){var a=c[k];var b=c[j];edges[ePtr++]=Math.min(a,b)|0;edges[ePtr++]=Math.max(a,b)|0;}}}var nedges=ePtr/2|0;ndsort(ndarray(edges,[nedges,2]));var ptr=2;for(var i=2;i<ePtr;i+=2){if(edges[i-2]===edges[i]&&edges[i-1]===edges[i+1]){continue;}edges[ptr++]=edges[i];edges[ptr++]=edges[i+1];}return ndarray(edges,[ptr/2|0,2]);}function getCrossingWeights(edges,values,signs,level){var edata=edges.data;var numEdges=edges.shape[0];var weights=pool.mallocDouble(numEdges);var ptr=0;for(var i=0;i<numEdges;++i){var a=edata[2*i];var b=edata[2*i+1];if(signs[a]===signs[b]){continue;}var va=values[a];var vb=values[b];edata[2*ptr]=a;edata[2*ptr+1]=b;weights[ptr++]=(vb-level)/(vb-va);}edges.shape[0]=ptr;return ndarray(weights,[ptr]);}function getCascade(edges,numVerts){var result=pool.mallocInt32(numVerts*2);var numEdges=edges.shape[0];var edata=edges.data;result[0]=0;var lastV=0;for(var i=0;i<numEdges;++i){var a=edata[2*i];if(a!==lastV){result[2*lastV+1]=i;while(++lastV<a){result[2*lastV]=i;result[2*lastV+1]=i;}result[2*lastV]=i;}}result[2*lastV+1]=numEdges;while(++lastV<numVerts){result[2*lastV]=result[2*lastV+1]=numEdges;}return result;}function unpackEdges(edges){var ne=edges.shape[0]|0;var edata=edges.data;var result=new Array(ne);for(var i=0;i<ne;++i){result[i]=[edata[2*i],edata[2*i+1]];}return result;}function extractContour(cells,values,level,d){level=level||0.0;//If user didn't specify `d`, use brute force scan\nif(typeof d==='undefined'){d=getDimension(cells);}//Count number of cells\nvar numCells=cells.length;if(numCells===0||d<1){return{cells:[],vertexIds:[],vertexWeights:[]};}//Read in vertex signs\nvar vertexSigns=getSigns(values,+level);//First get 1-skeleton, find all crossings\nvar edges=getEdges(cells,d);var weights=getCrossingWeights(edges,values,vertexSigns,+level);//Build vertex cascade to speed up binary search\nvar vcascade=getCascade(edges,values.length|0);//Then construct cells\nvar faces=contourAlgorithm(d)(cells,edges.data,vcascade,vertexSigns);//Unpack data into pretty format\nvar uedges=unpackEdges(edges);var uweights=[].slice.call(weights.data,0,weights.shape[0]);//Release data\npool.free(vertexSigns);pool.free(edges.data);pool.free(weights.data);pool.free(vcascade);return{cells:faces,vertexIds:uedges,vertexWeights:uweights};}/***/},/***/1168:/***/function(module){\"use strict\";module.exports=getPolygonizer;var allFns=[function cellPolygonizer_0(){function B(C,E,i,j){var a=Math.min(i,j)|0,b=Math.max(i,j)|0,l=C[2*a],h=C[2*a+1];while(l<h){var m=l+h>>1,v=E[2*m+1];if(v===b){return m;}if(b<v){h=m;}else{l=m+1;}}return l;}function getContour0d(F,E,C,S){var n=F.length,R=[];for(var i=0;i<n;++i){var c=F[i],l=c.length;}return R;}return getContour0d;},function cellPolygonizer_1(){function B(C,E,i,j){var a=Math.min(i,j)|0,b=Math.max(i,j)|0,l=C[2*a],h=C[2*a+1];while(l<h){var m=l+h>>1,v=E[2*m+1];if(v===b){return m;}if(b<v){h=m;}else{l=m+1;}}return l;}function getContour1d(F,E,C,S){var n=F.length,R=[];for(var i=0;i<n;++i){var c=F[i],l=c.length;if(l===2){var M=(S[c[0]]<<0)+(S[c[1]]<<1);if(M===0||M===3){continue;}switch(M){case 0:break;case 1:R.push([B(C,E,c[0],c[1])]);break;case 2:R.push([B(C,E,c[1],c[0])]);break;case 3:break;}}}return R;}return getContour1d;},function cellPolygonizer_2(){function B(C,E,i,j){var a=Math.min(i,j)|0,b=Math.max(i,j)|0,l=C[2*a],h=C[2*a+1];while(l<h){var m=l+h>>1,v=E[2*m+1];if(v===b){return m;}if(b<v){h=m;}else{l=m+1;}}return l;}function getContour2d(F,E,C,S){var n=F.length,R=[];for(var i=0;i<n;++i){var c=F[i],l=c.length;if(l===3){var M=(S[c[0]]<<0)+(S[c[1]]<<1)+(S[c[2]]<<2);if(M===0||M===7){continue;}switch(M){case 0:break;case 1:R.push([B(C,E,c[0],c[2]),B(C,E,c[0],c[1])]);break;case 2:R.push([B(C,E,c[1],c[0]),B(C,E,c[1],c[2])]);break;case 3:R.push([B(C,E,c[0],c[2]),B(C,E,c[1],c[2])]);break;case 4:R.push([B(C,E,c[2],c[1]),B(C,E,c[2],c[0])]);break;case 5:R.push([B(C,E,c[2],c[1]),B(C,E,c[0],c[1])]);break;case 6:R.push([B(C,E,c[1],c[0]),B(C,E,c[2],c[0])]);break;case 7:break;}}else if(l===2){var M=(S[c[0]]<<0)+(S[c[1]]<<1);if(M===0||M===3){continue;}switch(M){case 0:break;case 1:R.push([B(C,E,c[0],c[1])]);break;case 2:R.push([B(C,E,c[1],c[0])]);break;case 3:break;}}}return R;}return getContour2d;},function cellPolygonizer_3(){function B(C,E,i,j){var a=Math.min(i,j)|0,b=Math.max(i,j)|0,l=C[2*a],h=C[2*a+1];while(l<h){var m=l+h>>1,v=E[2*m+1];if(v===b){return m;}if(b<v){h=m;}else{l=m+1;}}return l;}function getContour3d(F,E,C,S){var n=F.length,R=[];for(var i=0;i<n;++i){var c=F[i],l=c.length;if(l===4){var M=(S[c[0]]<<0)+(S[c[1]]<<1)+(S[c[2]]<<2)+(S[c[3]]<<3);if(M===0||M===15){continue;}switch(M){case 0:break;case 1:R.push([B(C,E,c[0],c[1]),B(C,E,c[0],c[2]),B(C,E,c[0],c[3])]);break;case 2:R.push([B(C,E,c[1],c[2]),B(C,E,c[1],c[0]),B(C,E,c[1],c[3])]);break;case 3:R.push([B(C,E,c[1],c[2]),B(C,E,c[0],c[2]),B(C,E,c[0],c[3])],[B(C,E,c[1],c[3]),B(C,E,c[1],c[2]),B(C,E,c[0],c[3])]);break;case 4:R.push([B(C,E,c[2],c[0]),B(C,E,c[2],c[1]),B(C,E,c[2],c[3])]);break;case 5:R.push([B(C,E,c[0],c[1]),B(C,E,c[2],c[1]),B(C,E,c[0],c[3])],[B(C,E,c[2],c[1]),B(C,E,c[2],c[3]),B(C,E,c[0],c[3])]);break;case 6:R.push([B(C,E,c[2],c[0]),B(C,E,c[1],c[0]),B(C,E,c[1],c[3])],[B(C,E,c[2],c[3]),B(C,E,c[2],c[0]),B(C,E,c[1],c[3])]);break;case 7:R.push([B(C,E,c[0],c[3]),B(C,E,c[1],c[3]),B(C,E,c[2],c[3])]);break;case 8:R.push([B(C,E,c[3],c[1]),B(C,E,c[3],c[0]),B(C,E,c[3],c[2])]);break;case 9:R.push([B(C,E,c[3],c[1]),B(C,E,c[0],c[1]),B(C,E,c[0],c[2])],[B(C,E,c[3],c[2]),B(C,E,c[3],c[1]),B(C,E,c[0],c[2])]);break;case 10:R.push([B(C,E,c[1],c[0]),B(C,E,c[3],c[0]),B(C,E,c[1],c[2])],[B(C,E,c[3],c[0]),B(C,E,c[3],c[2]),B(C,E,c[1],c[2])]);break;case 11:R.push([B(C,E,c[1],c[2]),B(C,E,c[0],c[2]),B(C,E,c[3],c[2])]);break;case 12:R.push([B(C,E,c[3],c[0]),B(C,E,c[2],c[0]),B(C,E,c[2],c[1])],[B(C,E,c[3],c[1]),B(C,E,c[3],c[0]),B(C,E,c[2],c[1])]);break;case 13:R.push([B(C,E,c[0],c[1]),B(C,E,c[2],c[1]),B(C,E,c[3],c[1])]);break;case 14:R.push([B(C,E,c[2],c[0]),B(C,E,c[1],c[0]),B(C,E,c[3],c[0])]);break;case 15:break;}}else if(l===3){var M=(S[c[0]]<<0)+(S[c[1]]<<1)+(S[c[2]]<<2);if(M===0||M===7){continue;}switch(M){case 0:break;case 1:R.push([B(C,E,c[0],c[2]),B(C,E,c[0],c[1])]);break;case 2:R.push([B(C,E,c[1],c[0]),B(C,E,c[1],c[2])]);break;case 3:R.push([B(C,E,c[0],c[2]),B(C,E,c[1],c[2])]);break;case 4:R.push([B(C,E,c[2],c[1]),B(C,E,c[2],c[0])]);break;case 5:R.push([B(C,E,c[2],c[1]),B(C,E,c[0],c[1])]);break;case 6:R.push([B(C,E,c[1],c[0]),B(C,E,c[2],c[0])]);break;case 7:break;}}else if(l===2){var M=(S[c[0]]<<0)+(S[c[1]]<<1);if(M===0||M===3){continue;}switch(M){case 0:break;case 1:R.push([B(C,E,c[0],c[1])]);break;case 2:R.push([B(C,E,c[1],c[0])]);break;case 3:break;}}}return R;}return getContour3d;}];function getPolygonizer(d){return allFns[d]();}/***/},/***/8211:/***/function(__unused_webpack_module,exports,__nested_webpack_require_799024__){\"use strict\";var __webpack_unused_export__;\"use restrict\";var bits=__nested_webpack_require_799024__(2288),UnionFind=__nested_webpack_require_799024__(1731);//Returns the dimension of a cell complex\nfunction dimension(cells){var d=0,max=Math.max;for(var i=0,il=cells.length;i<il;++i){d=max(d,cells[i].length);}return d-1;}__webpack_unused_export__=dimension;//Counts the number of vertices in faces\nfunction countVertices(cells){var vc=-1,max=Math.max;for(var i=0,il=cells.length;i<il;++i){var c=cells[i];for(var j=0,jl=c.length;j<jl;++j){vc=max(vc,c[j]);}}return vc+1;}__webpack_unused_export__=countVertices;//Returns a deep copy of cells\nfunction cloneCells(cells){var ncells=new Array(cells.length);for(var i=0,il=cells.length;i<il;++i){ncells[i]=cells[i].slice(0);}return ncells;}__webpack_unused_export__=cloneCells;//Ranks a pair of cells up to permutation\nfunction compareCells(a,b){var n=a.length,t=a.length-b.length,min=Math.min;if(t){return t;}switch(n){case 0:return 0;case 1:return a[0]-b[0];case 2:var d=a[0]+a[1]-b[0]-b[1];if(d){return d;}return min(a[0],a[1])-min(b[0],b[1]);case 3:var l1=a[0]+a[1],m1=b[0]+b[1];d=l1+a[2]-(m1+b[2]);if(d){return d;}var l0=min(a[0],a[1]),m0=min(b[0],b[1]),d=min(l0,a[2])-min(m0,b[2]);if(d){return d;}return min(l0+a[2],l1)-min(m0+b[2],m1);//TODO: Maybe optimize n=4 as well?\ndefault:var as=a.slice(0);as.sort();var bs=b.slice(0);bs.sort();for(var i=0;i<n;++i){t=as[i]-bs[i];if(t){return t;}}return 0;}}exports.H=compareCells;function compareZipped(a,b){return compareCells(a[0],b[0]);}//Puts a cell complex into normal order for the purposes of findCell queries\nfunction normalize(cells,attr){if(attr){var len=cells.length;var zipped=new Array(len);for(var i=0;i<len;++i){zipped[i]=[cells[i],attr[i]];}zipped.sort(compareZipped);for(var i=0;i<len;++i){cells[i]=zipped[i][0];attr[i]=zipped[i][1];}return cells;}else{cells.sort(compareCells);return cells;}}__webpack_unused_export__=normalize;//Removes all duplicate cells in the complex\nfunction unique(cells){if(cells.length===0){return[];}var ptr=1,len=cells.length;for(var i=1;i<len;++i){var a=cells[i];if(compareCells(a,cells[i-1])){if(i===ptr){ptr++;continue;}cells[ptr++]=a;}}cells.length=ptr;return cells;}__webpack_unused_export__=unique;//Finds a cell in a normalized cell complex\nfunction findCell(cells,c){var lo=0,hi=cells.length-1,r=-1;while(lo<=hi){var mid=lo+hi>>1,s=compareCells(cells[mid],c);if(s<=0){if(s===0){r=mid;}lo=mid+1;}else if(s>0){hi=mid-1;}}return r;}__webpack_unused_export__=findCell;//Builds an index for an n-cell.  This is more general than dual, but less efficient\nfunction incidence(from_cells,to_cells){var index=new Array(from_cells.length);for(var i=0,il=index.length;i<il;++i){index[i]=[];}var b=[];for(var i=0,n=to_cells.length;i<n;++i){var c=to_cells[i];var cl=c.length;for(var k=1,kn=1<<cl;k<kn;++k){b.length=bits.popCount(k);var l=0;for(var j=0;j<cl;++j){if(k&1<<j){b[l++]=c[j];}}var idx=findCell(from_cells,b);if(idx<0){continue;}while(true){index[idx++].push(i);if(idx>=from_cells.length||compareCells(from_cells[idx],b)!==0){break;}}}}return index;}__webpack_unused_export__=incidence;//Computes the dual of the mesh.  This is basically an optimized version of buildIndex for the situation where from_cells is just the list of vertices\nfunction dual(cells,vertex_count){if(!vertex_count){return incidence(unique(skeleton(cells,0)),cells,0);}var res=new Array(vertex_count);for(var i=0;i<vertex_count;++i){res[i]=[];}for(var i=0,len=cells.length;i<len;++i){var c=cells[i];for(var j=0,cl=c.length;j<cl;++j){res[c[j]].push(i);}}return res;}__webpack_unused_export__=dual;//Enumerates all cells in the complex\nfunction explode(cells){var result=[];for(var i=0,il=cells.length;i<il;++i){var c=cells[i],cl=c.length|0;for(var j=1,jl=1<<cl;j<jl;++j){var b=[];for(var k=0;k<cl;++k){if(j>>>k&1){b.push(c[k]);}}result.push(b);}}return normalize(result);}__webpack_unused_export__=explode;//Enumerates all of the n-cells of a cell complex\nfunction skeleton(cells,n){if(n<0){return[];}var result=[],k0=(1<<n+1)-1;for(var i=0;i<cells.length;++i){var c=cells[i];for(var k=k0;k<1<<c.length;k=bits.nextCombination(k)){var b=new Array(n+1),l=0;for(var j=0;j<c.length;++j){if(k&1<<j){b[l++]=c[j];}}result.push(b);}}return normalize(result);}__webpack_unused_export__=skeleton;//Computes the boundary of all cells, does not remove duplicates\nfunction boundary(cells){var res=[];for(var i=0,il=cells.length;i<il;++i){var c=cells[i];for(var j=0,cl=c.length;j<cl;++j){var b=new Array(c.length-1);for(var k=0,l=0;k<cl;++k){if(k!==j){b[l++]=c[k];}}res.push(b);}}return normalize(res);}__webpack_unused_export__=boundary;//Computes connected components for a dense cell complex\nfunction connectedComponents_dense(cells,vertex_count){var labels=new UnionFind(vertex_count);for(var i=0;i<cells.length;++i){var c=cells[i];for(var j=0;j<c.length;++j){for(var k=j+1;k<c.length;++k){labels.link(c[j],c[k]);}}}var components=[],component_labels=labels.ranks;for(var i=0;i<component_labels.length;++i){component_labels[i]=-1;}for(var i=0;i<cells.length;++i){var l=labels.find(cells[i][0]);if(component_labels[l]<0){component_labels[l]=components.length;components.push([cells[i].slice(0)]);}else{components[component_labels[l]].push(cells[i].slice(0));}}return components;}//Computes connected components for a sparse graph\nfunction connectedComponents_sparse(cells){var vertices=unique(normalize(skeleton(cells,0))),labels=new UnionFind(vertices.length);for(var i=0;i<cells.length;++i){var c=cells[i];for(var j=0;j<c.length;++j){var vj=findCell(vertices,[c[j]]);for(var k=j+1;k<c.length;++k){labels.link(vj,findCell(vertices,[c[k]]));}}}var components=[],component_labels=labels.ranks;for(var i=0;i<component_labels.length;++i){component_labels[i]=-1;}for(var i=0;i<cells.length;++i){var l=labels.find(findCell(vertices,[cells[i][0]]));if(component_labels[l]<0){component_labels[l]=components.length;components.push([cells[i].slice(0)]);}else{components[component_labels[l]].push(cells[i].slice(0));}}return components;}//Computes connected components for a cell complex\nfunction connectedComponents(cells,vertex_count){if(vertex_count){return connectedComponents_dense(cells,vertex_count);}return connectedComponents_sparse(cells);}__webpack_unused_export__=connectedComponents;/***/},/***/9392:/***/function(__unused_webpack_module,exports){\"use strict\";/**\n * Bit twiddling hacks for JavaScript.\n *\n * Author: Mikola Lysenko\n *\n * Ported from Stanford bit twiddling hack library:\n *    http://graphics.stanford.edu/~seander/bithacks.html\n */\"use restrict\";//Number of bits in an integer\nvar INT_BITS=32;//Constants\nexports.INT_BITS=INT_BITS;exports.INT_MAX=0x7fffffff;exports.INT_MIN=-1<<INT_BITS-1;//Returns -1, 0, +1 depending on sign of x\nexports.sign=function(v){return(v>0)-(v<0);};//Computes absolute value of integer\nexports.abs=function(v){var mask=v>>INT_BITS-1;return(v^mask)-mask;};//Computes minimum of integers x and y\nexports.min=function(x,y){return y^(x^y)&-(x<y);};//Computes maximum of integers x and y\nexports.max=function(x,y){return x^(x^y)&-(x<y);};//Checks if a number is a power of two\nexports.isPow2=function(v){return!(v&v-1)&&!!v;};//Computes log base 2 of v\nexports.log2=function(v){var r,shift;r=(v>0xFFFF)<<4;v>>>=r;shift=(v>0xFF)<<3;v>>>=shift;r|=shift;shift=(v>0xF)<<2;v>>>=shift;r|=shift;shift=(v>0x3)<<1;v>>>=shift;r|=shift;return r|v>>1;};//Computes log base 10 of v\nexports.log10=function(v){return v>=1000000000?9:v>=100000000?8:v>=10000000?7:v>=1000000?6:v>=100000?5:v>=10000?4:v>=1000?3:v>=100?2:v>=10?1:0;};//Counts number of bits\nexports.popCount=function(v){v=v-(v>>>1&0x55555555);v=(v&0x33333333)+(v>>>2&0x33333333);return(v+(v>>>4)&0xF0F0F0F)*0x1010101>>>24;};//Counts number of trailing zeros\nfunction countTrailingZeros(v){var c=32;v&=-v;if(v)c--;if(v&0x0000FFFF)c-=16;if(v&0x00FF00FF)c-=8;if(v&0x0F0F0F0F)c-=4;if(v&0x33333333)c-=2;if(v&0x55555555)c-=1;return c;}exports.countTrailingZeros=countTrailingZeros;//Rounds to next power of 2\nexports.nextPow2=function(v){v+=v===0;--v;v|=v>>>1;v|=v>>>2;v|=v>>>4;v|=v>>>8;v|=v>>>16;return v+1;};//Rounds down to previous power of 2\nexports.prevPow2=function(v){v|=v>>>1;v|=v>>>2;v|=v>>>4;v|=v>>>8;v|=v>>>16;return v-(v>>>1);};//Computes parity of word\nexports.parity=function(v){v^=v>>>16;v^=v>>>8;v^=v>>>4;v&=0xf;return 0x6996>>>v&1;};var REVERSE_TABLE=new Array(256);(function(tab){for(var i=0;i<256;++i){var v=i,r=i,s=7;for(v>>>=1;v;v>>>=1){r<<=1;r|=v&1;--s;}tab[i]=r<<s&0xff;}})(REVERSE_TABLE);//Reverse bits in a 32 bit word\nexports.reverse=function(v){return REVERSE_TABLE[v&0xff]<<24|REVERSE_TABLE[v>>>8&0xff]<<16|REVERSE_TABLE[v>>>16&0xff]<<8|REVERSE_TABLE[v>>>24&0xff];};//Interleave bits of 2 coordinates with 16 bits.  Useful for fast quadtree codes\nexports.interleave2=function(x,y){x&=0xFFFF;x=(x|x<<8)&0x00FF00FF;x=(x|x<<4)&0x0F0F0F0F;x=(x|x<<2)&0x33333333;x=(x|x<<1)&0x55555555;y&=0xFFFF;y=(y|y<<8)&0x00FF00FF;y=(y|y<<4)&0x0F0F0F0F;y=(y|y<<2)&0x33333333;y=(y|y<<1)&0x55555555;return x|y<<1;};//Extracts the nth interleaved component\nexports.deinterleave2=function(v,n){v=v>>>n&0x55555555;v=(v|v>>>1)&0x33333333;v=(v|v>>>2)&0x0F0F0F0F;v=(v|v>>>4)&0x00FF00FF;v=(v|v>>>16)&0x000FFFF;return v<<16>>16;};//Interleave bits of 3 coordinates, each with 10 bits.  Useful for fast octree codes\nexports.interleave3=function(x,y,z){x&=0x3FF;x=(x|x<<16)&4278190335;x=(x|x<<8)&251719695;x=(x|x<<4)&3272356035;x=(x|x<<2)&1227133513;y&=0x3FF;y=(y|y<<16)&4278190335;y=(y|y<<8)&251719695;y=(y|y<<4)&3272356035;y=(y|y<<2)&1227133513;x|=y<<1;z&=0x3FF;z=(z|z<<16)&4278190335;z=(z|z<<8)&251719695;z=(z|z<<4)&3272356035;z=(z|z<<2)&1227133513;return x|z<<2;};//Extracts nth interleaved component of a 3-tuple\nexports.deinterleave3=function(v,n){v=v>>>n&1227133513;v=(v|v>>>2)&3272356035;v=(v|v>>>4)&251719695;v=(v|v>>>8)&4278190335;v=(v|v>>>16)&0x3FF;return v<<22>>22;};//Computes next combination in colexicographic order (this is mistakenly called nextPermutation on the bit twiddling hacks page)\nexports.nextCombination=function(v){var t=v|v-1;return t+1|(~t&-~t)-1>>>countTrailingZeros(v)+1;};/***/},/***/6656:/***/function(__unused_webpack_module,exports,__nested_webpack_require_809170__){\"use strict\";\"use restrict\";var bits=__nested_webpack_require_809170__(9392),UnionFind=__nested_webpack_require_809170__(9521);//Returns the dimension of a cell complex\nfunction dimension(cells){var d=0,max=Math.max;for(var i=0,il=cells.length;i<il;++i){d=max(d,cells[i].length);}return d-1;}exports.dimension=dimension;//Counts the number of vertices in faces\nfunction countVertices(cells){var vc=-1,max=Math.max;for(var i=0,il=cells.length;i<il;++i){var c=cells[i];for(var j=0,jl=c.length;j<jl;++j){vc=max(vc,c[j]);}}return vc+1;}exports.countVertices=countVertices;//Returns a deep copy of cells\nfunction cloneCells(cells){var ncells=new Array(cells.length);for(var i=0,il=cells.length;i<il;++i){ncells[i]=cells[i].slice(0);}return ncells;}exports.cloneCells=cloneCells;//Ranks a pair of cells up to permutation\nfunction compareCells(a,b){var n=a.length,t=a.length-b.length,min=Math.min;if(t){return t;}switch(n){case 0:return 0;case 1:return a[0]-b[0];case 2:var d=a[0]+a[1]-b[0]-b[1];if(d){return d;}return min(a[0],a[1])-min(b[0],b[1]);case 3:var l1=a[0]+a[1],m1=b[0]+b[1];d=l1+a[2]-(m1+b[2]);if(d){return d;}var l0=min(a[0],a[1]),m0=min(b[0],b[1]),d=min(l0,a[2])-min(m0,b[2]);if(d){return d;}return min(l0+a[2],l1)-min(m0+b[2],m1);//TODO: Maybe optimize n=4 as well?\ndefault:var as=a.slice(0);as.sort();var bs=b.slice(0);bs.sort();for(var i=0;i<n;++i){t=as[i]-bs[i];if(t){return t;}}return 0;}}exports.compareCells=compareCells;function compareZipped(a,b){return compareCells(a[0],b[0]);}//Puts a cell complex into normal order for the purposes of findCell queries\nfunction normalize(cells,attr){if(attr){var len=cells.length;var zipped=new Array(len);for(var i=0;i<len;++i){zipped[i]=[cells[i],attr[i]];}zipped.sort(compareZipped);for(var i=0;i<len;++i){cells[i]=zipped[i][0];attr[i]=zipped[i][1];}return cells;}else{cells.sort(compareCells);return cells;}}exports.normalize=normalize;//Removes all duplicate cells in the complex\nfunction unique(cells){if(cells.length===0){return[];}var ptr=1,len=cells.length;for(var i=1;i<len;++i){var a=cells[i];if(compareCells(a,cells[i-1])){if(i===ptr){ptr++;continue;}cells[ptr++]=a;}}cells.length=ptr;return cells;}exports.unique=unique;//Finds a cell in a normalized cell complex\nfunction findCell(cells,c){var lo=0,hi=cells.length-1,r=-1;while(lo<=hi){var mid=lo+hi>>1,s=compareCells(cells[mid],c);if(s<=0){if(s===0){r=mid;}lo=mid+1;}else if(s>0){hi=mid-1;}}return r;}exports.findCell=findCell;//Builds an index for an n-cell.  This is more general than dual, but less efficient\nfunction incidence(from_cells,to_cells){var index=new Array(from_cells.length);for(var i=0,il=index.length;i<il;++i){index[i]=[];}var b=[];for(var i=0,n=to_cells.length;i<n;++i){var c=to_cells[i];var cl=c.length;for(var k=1,kn=1<<cl;k<kn;++k){b.length=bits.popCount(k);var l=0;for(var j=0;j<cl;++j){if(k&1<<j){b[l++]=c[j];}}var idx=findCell(from_cells,b);if(idx<0){continue;}while(true){index[idx++].push(i);if(idx>=from_cells.length||compareCells(from_cells[idx],b)!==0){break;}}}}return index;}exports.incidence=incidence;//Computes the dual of the mesh.  This is basically an optimized version of buildIndex for the situation where from_cells is just the list of vertices\nfunction dual(cells,vertex_count){if(!vertex_count){return incidence(unique(skeleton(cells,0)),cells,0);}var res=new Array(vertex_count);for(var i=0;i<vertex_count;++i){res[i]=[];}for(var i=0,len=cells.length;i<len;++i){var c=cells[i];for(var j=0,cl=c.length;j<cl;++j){res[c[j]].push(i);}}return res;}exports.dual=dual;//Enumerates all cells in the complex\nfunction explode(cells){var result=[];for(var i=0,il=cells.length;i<il;++i){var c=cells[i],cl=c.length|0;for(var j=1,jl=1<<cl;j<jl;++j){var b=[];for(var k=0;k<cl;++k){if(j>>>k&1){b.push(c[k]);}}result.push(b);}}return normalize(result);}exports.explode=explode;//Enumerates all of the n-cells of a cell complex\nfunction skeleton(cells,n){if(n<0){return[];}var result=[],k0=(1<<n+1)-1;for(var i=0;i<cells.length;++i){var c=cells[i];for(var k=k0;k<1<<c.length;k=bits.nextCombination(k)){var b=new Array(n+1),l=0;for(var j=0;j<c.length;++j){if(k&1<<j){b[l++]=c[j];}}result.push(b);}}return normalize(result);}exports.skeleton=skeleton;//Computes the boundary of all cells, does not remove duplicates\nfunction boundary(cells){var res=[];for(var i=0,il=cells.length;i<il;++i){var c=cells[i];for(var j=0,cl=c.length;j<cl;++j){var b=new Array(c.length-1);for(var k=0,l=0;k<cl;++k){if(k!==j){b[l++]=c[k];}}res.push(b);}}return normalize(res);}exports.boundary=boundary;//Computes connected components for a dense cell complex\nfunction connectedComponents_dense(cells,vertex_count){var labels=new UnionFind(vertex_count);for(var i=0;i<cells.length;++i){var c=cells[i];for(var j=0;j<c.length;++j){for(var k=j+1;k<c.length;++k){labels.link(c[j],c[k]);}}}var components=[],component_labels=labels.ranks;for(var i=0;i<component_labels.length;++i){component_labels[i]=-1;}for(var i=0;i<cells.length;++i){var l=labels.find(cells[i][0]);if(component_labels[l]<0){component_labels[l]=components.length;components.push([cells[i].slice(0)]);}else{components[component_labels[l]].push(cells[i].slice(0));}}return components;}//Computes connected components for a sparse graph\nfunction connectedComponents_sparse(cells){var vertices=unique(normalize(skeleton(cells,0))),labels=new UnionFind(vertices.length);for(var i=0;i<cells.length;++i){var c=cells[i];for(var j=0;j<c.length;++j){var vj=findCell(vertices,[c[j]]);for(var k=j+1;k<c.length;++k){labels.link(vj,findCell(vertices,[c[k]]));}}}var components=[],component_labels=labels.ranks;for(var i=0;i<component_labels.length;++i){component_labels[i]=-1;}for(var i=0;i<cells.length;++i){var l=labels.find(findCell(vertices,[cells[i][0]]));if(component_labels[l]<0){component_labels[l]=components.length;components.push([cells[i].slice(0)]);}else{components[component_labels[l]].push(cells[i].slice(0));}}return components;}//Computes connected components for a cell complex\nfunction connectedComponents(cells,vertex_count){if(vertex_count){return connectedComponents_dense(cells,vertex_count);}return connectedComponents_sparse(cells);}exports.connectedComponents=connectedComponents;/***/},/***/9521:/***/function(module){\"use strict\";\"use restrict\";module.exports=UnionFind;function UnionFind(count){this.roots=new Array(count);this.ranks=new Array(count);for(var i=0;i<count;++i){this.roots[i]=i;this.ranks[i]=0;}}UnionFind.prototype.length=function(){return this.roots.length;};UnionFind.prototype.makeSet=function(){var n=this.roots.length;this.roots.push(n);this.ranks.push(0);return n;};UnionFind.prototype.find=function(x){var roots=this.roots;while(roots[x]!==x){var y=roots[x];roots[x]=roots[y];x=y;}return x;};UnionFind.prototype.link=function(x,y){var xr=this.find(x),yr=this.find(y);if(xr===yr){return;}var ranks=this.ranks,roots=this.roots,xd=ranks[xr],yd=ranks[yr];if(xd<yd){roots[xr]=yr;}else if(yd<xd){roots[yr]=xr;}else{roots[yr]=xr;++ranks[xr];}};/***/},/***/8243:/***/function(module,__unused_webpack_exports,__nested_webpack_require_816184__){\"use strict\";module.exports=simplifyPolygon;var orient=__nested_webpack_require_816184__(417);var sc=__nested_webpack_require_816184__(6656);function errorWeight(base,a,b){var area=Math.abs(orient(base,a,b));var perim=Math.sqrt(Math.pow(a[0]-b[0],2)+Math.pow(a[1]-b[1],2));return area/perim;}function simplifyPolygon(cells,positions,minArea){var n=positions.length;var nc=cells.length;var inv=new Array(n);var outv=new Array(n);var weights=new Array(n);var dead=new Array(n);//Initialize tables\nfor(var i=0;i<n;++i){inv[i]=outv[i]=-1;weights[i]=Infinity;dead[i]=false;}//Compute neighbors\nfor(var i=0;i<nc;++i){var c=cells[i];if(c.length!==2){throw new Error(\"Input must be a graph\");}var s=c[1];var t=c[0];if(outv[t]!==-1){outv[t]=-2;}else{outv[t]=s;}if(inv[s]!==-1){inv[s]=-2;}else{inv[s]=t;}}//Updates the weight for vertex i\nfunction computeWeight(i){if(dead[i]){return Infinity;}//TODO: Check that the line segment doesn't cross once simplified\nvar s=inv[i];var t=outv[i];if(s<0||t<0){return Infinity;}else{return errorWeight(positions[i],positions[s],positions[t]);}}//Swaps two nodes on the heap (i,j) are the index of the nodes\nfunction heapSwap(i,j){var a=heap[i];var b=heap[j];heap[i]=b;heap[j]=a;index[a]=j;index[b]=i;}//Returns the weight of node i on the heap\nfunction heapWeight(i){return weights[heap[i]];}function heapParent(i){if(i&1){return i-1>>1;}return(i>>1)-1;}//Bubble element i down the heap\nfunction heapDown(i){var w=heapWeight(i);while(true){var tw=w;var left=2*i+1;var right=2*(i+1);var next=i;if(left<heapCount){var lw=heapWeight(left);if(lw<tw){next=left;tw=lw;}}if(right<heapCount){var rw=heapWeight(right);if(rw<tw){next=right;}}if(next===i){return i;}heapSwap(i,next);i=next;}}//Bubbles element i up the heap\nfunction heapUp(i){var w=heapWeight(i);while(i>0){var parent=heapParent(i);if(parent>=0){var pw=heapWeight(parent);if(w<pw){heapSwap(i,parent);i=parent;continue;}}return i;}}//Pop minimum element\nfunction heapPop(){if(heapCount>0){var head=heap[0];heapSwap(0,heapCount-1);heapCount-=1;heapDown(0);return head;}return-1;}//Update heap item i\nfunction heapUpdate(i,w){var a=heap[i];if(weights[a]===w){return i;}weights[a]=-Infinity;heapUp(i);heapPop();weights[a]=w;heapCount+=1;return heapUp(heapCount-1);}//Kills a vertex (assume vertex already removed from heap)\nfunction kill(i){if(dead[i]){return;}//Kill vertex\ndead[i]=true;//Fixup topology\nvar s=inv[i];var t=outv[i];if(inv[t]>=0){inv[t]=s;}if(outv[s]>=0){outv[s]=t;}//Update weights on s and t\nif(index[s]>=0){heapUpdate(index[s],computeWeight(s));}if(index[t]>=0){heapUpdate(index[t],computeWeight(t));}}//Initialize weights and heap\nvar heap=[];var index=new Array(n);for(var i=0;i<n;++i){var w=weights[i]=computeWeight(i);if(w<Infinity){index[i]=heap.length;heap.push(i);}else{index[i]=-1;}}var heapCount=heap.length;for(var i=heapCount>>1;i>=0;--i){heapDown(i);}//Kill vertices\nwhile(true){var hmin=heapPop();if(hmin<0||weights[hmin]>minArea){break;}kill(hmin);}//Build collapsed vertex table\nvar npositions=[];for(var i=0;i<n;++i){if(!dead[i]){index[i]=npositions.length;npositions.push(positions[i].slice());}}var nv=npositions.length;function tortoiseHare(seq,start){if(seq[start]<0){return start;}var t=start;var h=start;do{//Walk two steps with h\nvar nh=seq[h];if(!dead[h]||nh<0||nh===h){break;}h=nh;nh=seq[h];if(!dead[h]||nh<0||nh===h){break;}h=nh;//Walk one step with t\nt=seq[t];}while(t!==h);//Compress cycles\nfor(var v=start;v!==h;v=seq[v]){seq[v]=h;}return h;}var ncells=[];cells.forEach(function(c){var tin=tortoiseHare(inv,c[0]);var tout=tortoiseHare(outv,c[1]);if(tin>=0&&tout>=0&&tin!==tout){var cin=index[tin];var cout=index[tout];if(cin!==cout){ncells.push([cin,cout]);}}});//Normalize result\nsc.unique(sc.normalize(ncells));//Return final list of cells\nreturn{positions:npositions,edges:ncells};}/***/},/***/6638:/***/function(module,__unused_webpack_exports,__nested_webpack_require_820054__){\"use strict\";module.exports=orderSegments;var orient=__nested_webpack_require_820054__(417);function horizontalOrder(a,b){var bl,br;if(b[0][0]<b[1][0]){bl=b[0];br=b[1];}else if(b[0][0]>b[1][0]){bl=b[1];br=b[0];}else{var alo=Math.min(a[0][1],a[1][1]);var ahi=Math.max(a[0][1],a[1][1]);var blo=Math.min(b[0][1],b[1][1]);var bhi=Math.max(b[0][1],b[1][1]);if(ahi<blo){return ahi-blo;}if(alo>bhi){return alo-bhi;}return ahi-bhi;}var al,ar;if(a[0][1]<a[1][1]){al=a[0];ar=a[1];}else{al=a[1];ar=a[0];}var d=orient(br,bl,al);if(d){return d;}d=orient(br,bl,ar);if(d){return d;}return ar-br;}function orderSegments(b,a){var al,ar;if(a[0][0]<a[1][0]){al=a[0];ar=a[1];}else if(a[0][0]>a[1][0]){al=a[1];ar=a[0];}else{return horizontalOrder(a,b);}var bl,br;if(b[0][0]<b[1][0]){bl=b[0];br=b[1];}else if(b[0][0]>b[1][0]){bl=b[1];br=b[0];}else{return-horizontalOrder(b,a);}var d1=orient(al,ar,br);var d2=orient(al,ar,bl);if(d1<0){if(d2<=0){return d1;}}else if(d1>0){if(d2>=0){return d1;}}else if(d2){return d2;}d1=orient(br,bl,ar);d2=orient(br,bl,al);if(d1<0){if(d2<=0){return d1;}}else if(d1>0){if(d2>=0){return d1;}}else if(d2){return d2;}return ar[0]-br[0];}/***/},/***/4385:/***/function(module,__unused_webpack_exports,__nested_webpack_require_821267__){\"use strict\";module.exports=createSlabDecomposition;var bounds=__nested_webpack_require_821267__(5070);var createRBTree=__nested_webpack_require_821267__(7080);var orient=__nested_webpack_require_821267__(417);var orderSegments=__nested_webpack_require_821267__(6638);function SlabDecomposition(slabs,coordinates,horizontal){this.slabs=slabs;this.coordinates=coordinates;this.horizontal=horizontal;}var proto=SlabDecomposition.prototype;function compareHorizontal(e,y){return e.y-y;}function searchBucket(root,p){var lastNode=null;while(root){var seg=root.key;var l,r;if(seg[0][0]<seg[1][0]){l=seg[0];r=seg[1];}else{l=seg[1];r=seg[0];}var o=orient(l,r,p);if(o<0){root=root.left;}else if(o>0){if(p[0]!==seg[1][0]){lastNode=root;root=root.right;}else{var val=searchBucket(root.right,p);if(val){return val;}root=root.left;}}else{if(p[0]!==seg[1][0]){return root;}else{var val=searchBucket(root.right,p);if(val){return val;}root=root.left;}}}return lastNode;}proto.castUp=function(p){var bucket=bounds.le(this.coordinates,p[0]);if(bucket<0){return-1;}var root=this.slabs[bucket];var hitNode=searchBucket(this.slabs[bucket],p);var lastHit=-1;if(hitNode){lastHit=hitNode.value;}//Edge case: need to handle horizontal segments (sucks)\nif(this.coordinates[bucket]===p[0]){var lastSegment=null;if(hitNode){lastSegment=hitNode.key;}if(bucket>0){var otherHitNode=searchBucket(this.slabs[bucket-1],p);if(otherHitNode){if(lastSegment){if(orderSegments(otherHitNode.key,lastSegment)>0){lastSegment=otherHitNode.key;lastHit=otherHitNode.value;}}else{lastHit=otherHitNode.value;lastSegment=otherHitNode.key;}}}var horiz=this.horizontal[bucket];if(horiz.length>0){var hbucket=bounds.ge(horiz,p[1],compareHorizontal);if(hbucket<horiz.length){var e=horiz[hbucket];if(p[1]===e.y){if(e.closed){return e.index;}else{while(hbucket<horiz.length-1&&horiz[hbucket+1].y===p[1]){hbucket=hbucket+1;e=horiz[hbucket];if(e.closed){return e.index;}}if(e.y===p[1]&&!e.start){hbucket=hbucket+1;if(hbucket>=horiz.length){return lastHit;}e=horiz[hbucket];}}}//Check if e is above/below last segment\nif(e.start){if(lastSegment){var o=orient(lastSegment[0],lastSegment[1],[p[0],e.y]);if(lastSegment[0][0]>lastSegment[1][0]){o=-o;}if(o>0){lastHit=e.index;}}else{lastHit=e.index;}}else if(e.y!==p[1]){lastHit=e.index;}}}}return lastHit;};function IntervalSegment(y,index,start,closed){this.y=y;this.index=index;this.start=start;this.closed=closed;}function Event(x,segment,create,index){this.x=x;this.segment=segment;this.create=create;this.index=index;}function createSlabDecomposition(segments){var numSegments=segments.length;var numEvents=2*numSegments;var events=new Array(numEvents);for(var i=0;i<numSegments;++i){var s=segments[i];var f=s[0][0]<s[1][0];events[2*i]=new Event(s[0][0],s,f,i);events[2*i+1]=new Event(s[1][0],s,!f,i);}events.sort(function(a,b){var d=a.x-b.x;if(d){return d;}d=a.create-b.create;if(d){return d;}return Math.min(a.segment[0][1],a.segment[1][1])-Math.min(b.segment[0][1],b.segment[1][1]);});var tree=createRBTree(orderSegments);var slabs=[];var lines=[];var horizontal=[];var lastX=-Infinity;for(var i=0;i<numEvents;){var x=events[i].x;var horiz=[];while(i<numEvents){var e=events[i];if(e.x!==x){break;}i+=1;if(e.segment[0][0]===e.x&&e.segment[1][0]===e.x){if(e.create){if(e.segment[0][1]<e.segment[1][1]){horiz.push(new IntervalSegment(e.segment[0][1],e.index,true,true));horiz.push(new IntervalSegment(e.segment[1][1],e.index,false,false));}else{horiz.push(new IntervalSegment(e.segment[1][1],e.index,true,false));horiz.push(new IntervalSegment(e.segment[0][1],e.index,false,true));}}}else{if(e.create){tree=tree.insert(e.segment,e.index);}else{tree=tree.remove(e.segment);}}}slabs.push(tree.root);lines.push(x);horizontal.push(horiz);}return new SlabDecomposition(slabs,lines,horizontal);}/***/},/***/4670:/***/function(module,__unused_webpack_exports,__nested_webpack_require_825079__){\"use strict\";var robustDot=__nested_webpack_require_825079__(9130);var robustSum=__nested_webpack_require_825079__(9662);module.exports=splitPolygon;module.exports.positive=positive;module.exports.negative=negative;function planeT(p,plane){var r=robustSum(robustDot(p,plane),[plane[plane.length-1]]);return r[r.length-1];}//Can't do this exactly and emit a floating point result\nfunction lerpW(a,wa,b,wb){var d=wb-wa;var t=-wa/d;if(t<0.0){t=0.0;}else if(t>1.0){t=1.0;}var ti=1.0-t;var n=a.length;var r=new Array(n);for(var i=0;i<n;++i){r[i]=t*a[i]+ti*b[i];}return r;}function splitPolygon(points,plane){var pos=[];var neg=[];var a=planeT(points[points.length-1],plane);for(var s=points[points.length-1],t=points[0],i=0;i<points.length;++i,s=t){t=points[i];var b=planeT(t,plane);if(a<0&&b>0||a>0&&b<0){var p=lerpW(s,b,t,a);pos.push(p);neg.push(p.slice());}if(b<0){neg.push(t.slice());}else if(b>0){pos.push(t.slice());}else{pos.push(t.slice());neg.push(t.slice());}a=b;}return{positive:pos,negative:neg};}function positive(points,plane){var pos=[];var a=planeT(points[points.length-1],plane);for(var s=points[points.length-1],t=points[0],i=0;i<points.length;++i,s=t){t=points[i];var b=planeT(t,plane);if(a<0&&b>0||a>0&&b<0){pos.push(lerpW(s,b,t,a));}if(b>=0){pos.push(t.slice());}a=b;}return pos;}function negative(points,plane){var neg=[];var a=planeT(points[points.length-1],plane);for(var s=points[points.length-1],t=points[0],i=0;i<points.length;++i,s=t){t=points[i];var b=planeT(t,plane);if(a<0&&b>0||a>0&&b<0){neg.push(lerpW(s,b,t,a));}if(b<=0){neg.push(t.slice());}a=b;}return neg;}/***/},/***/8974:/***/function(module,exports,__nested_webpack_require_826706__){var __WEBPACK_AMD_DEFINE_RESULT__;/* global window, exports, define */!function(){'use strict';var re={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\x25]+/,modulo:/^\\x25{2}/,placeholder:/^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\d]*)/i,key_access:/^\\.([a-z_][a-z_\\d]*)/i,index_access:/^\\[(\\d+)\\]/,sign:/^[+-]/};function sprintf(key){// `arguments` is not an array, but should be fine for this call\nreturn sprintf_format(sprintf_parse(key),arguments);}function vsprintf(fmt,argv){return sprintf.apply(null,[fmt].concat(argv||[]));}function sprintf_format(parse_tree,argv){var cursor=1,tree_length=parse_tree.length,arg,output='',i,k,ph,pad,pad_character,pad_length,is_positive,sign;for(i=0;i<tree_length;i++){if(typeof parse_tree[i]==='string'){output+=parse_tree[i];}else if(typeof parse_tree[i]==='object'){ph=parse_tree[i];// convenience purposes only\nif(ph.keys){// keyword argument\narg=argv[cursor];for(k=0;k<ph.keys.length;k++){if(arg==undefined){throw new Error(sprintf('[sprintf] Cannot access property \"%s\" of undefined value \"%s\"',ph.keys[k],ph.keys[k-1]));}arg=arg[ph.keys[k]];}}else if(ph.param_no){// positional argument (explicit)\narg=argv[ph.param_no];}else{// positional argument (implicit)\narg=argv[cursor++];}if(re.not_type.test(ph.type)&&re.not_primitive.test(ph.type)&&arg instanceof Function){arg=arg();}if(re.numeric_arg.test(ph.type)&&typeof arg!=='number'&&isNaN(arg)){throw new TypeError(sprintf('[sprintf] expecting number but found %T',arg));}if(re.number.test(ph.type)){is_positive=arg>=0;}switch(ph.type){case'b':arg=parseInt(arg,10).toString(2);break;case'c':arg=String.fromCharCode(parseInt(arg,10));break;case'd':case'i':arg=parseInt(arg,10);break;case'j':arg=JSON.stringify(arg,null,ph.width?parseInt(ph.width):0);break;case'e':arg=ph.precision?parseFloat(arg).toExponential(ph.precision):parseFloat(arg).toExponential();break;case'f':arg=ph.precision?parseFloat(arg).toFixed(ph.precision):parseFloat(arg);break;case'g':arg=ph.precision?String(Number(arg.toPrecision(ph.precision))):parseFloat(arg);break;case'o':arg=(parseInt(arg,10)>>>0).toString(8);break;case's':arg=String(arg);arg=ph.precision?arg.substring(0,ph.precision):arg;break;case't':arg=String(!!arg);arg=ph.precision?arg.substring(0,ph.precision):arg;break;case'T':arg=Object.prototype.toString.call(arg).slice(8,-1).toLowerCase();arg=ph.precision?arg.substring(0,ph.precision):arg;break;case'u':arg=parseInt(arg,10)>>>0;break;case'v':arg=arg.valueOf();arg=ph.precision?arg.substring(0,ph.precision):arg;break;case'x':arg=(parseInt(arg,10)>>>0).toString(16);break;case'X':arg=(parseInt(arg,10)>>>0).toString(16).toUpperCase();break;}if(re.json.test(ph.type)){output+=arg;}else{if(re.number.test(ph.type)&&(!is_positive||ph.sign)){sign=is_positive?'+':'-';arg=arg.toString().replace(re.sign,'');}else{sign='';}pad_character=ph.pad_char?ph.pad_char==='0'?'0':ph.pad_char.charAt(1):' ';pad_length=ph.width-(sign+arg).length;pad=ph.width?pad_length>0?pad_character.repeat(pad_length):'':'';output+=ph.align?sign+arg+pad:pad_character==='0'?sign+pad+arg:pad+sign+arg;}}}return output;}var sprintf_cache=Object.create(null);function sprintf_parse(fmt){if(sprintf_cache[fmt]){return sprintf_cache[fmt];}var _fmt=fmt,match,parse_tree=[],arg_names=0;while(_fmt){if((match=re.text.exec(_fmt))!==null){parse_tree.push(match[0]);}else if((match=re.modulo.exec(_fmt))!==null){parse_tree.push('%');}else if((match=re.placeholder.exec(_fmt))!==null){if(match[2]){arg_names|=1;var field_list=[],replacement_field=match[2],field_match=[];if((field_match=re.key.exec(replacement_field))!==null){field_list.push(field_match[1]);while((replacement_field=replacement_field.substring(field_match[0].length))!==''){if((field_match=re.key_access.exec(replacement_field))!==null){field_list.push(field_match[1]);}else if((field_match=re.index_access.exec(replacement_field))!==null){field_list.push(field_match[1]);}else{throw new SyntaxError('[sprintf] failed to parse named argument key');}}}else{throw new SyntaxError('[sprintf] failed to parse named argument key');}match[2]=field_list;}else{arg_names|=2;}if(arg_names===3){throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported');}parse_tree.push({placeholder:match[0],param_no:match[1],keys:match[2],sign:match[3],pad_char:match[4],align:match[5],width:match[6],precision:match[7],type:match[8]});}else{throw new SyntaxError('[sprintf] unexpected placeholder');}_fmt=_fmt.substring(match[0].length);}return sprintf_cache[fmt]=parse_tree;}/**\n     * export to either browser or node.js\n     */ /* eslint-disable quote-props */if(true){exports.sprintf=sprintf;exports.vsprintf=vsprintf;}if(typeof window!=='undefined'){window['sprintf']=sprintf;window['vsprintf']=vsprintf;if(true){!(__WEBPACK_AMD_DEFINE_RESULT__=function(){return{'sprintf':sprintf,'vsprintf':vsprintf};}.call(exports,__nested_webpack_require_826706__,exports,module),__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__));}}/* eslint-enable quote-props */}();// eslint-disable-line\n/***/},/***/4162:/***/function(module,__unused_webpack_exports,__nested_webpack_require_831998__){\"use strict\";module.exports=surfaceNets;var generateContourExtractor=__nested_webpack_require_831998__(9284);var zeroCrossings=__nested_webpack_require_831998__(9584);var allFns={\"2d\":function(genContour,order,dtype){var contour=genContour({order:order,scalarArguments:3,getters:dtype===\"generic\"?[0]:undefined,phase:function phaseFunc(p,a,b,c){return p>c|0;},vertex:function vertexFunc(d0,d1,v0,v1,v2,v3,p0,p1,p2,p3,a,b,c){var m=(p0<<0)+(p1<<1)+(p2<<2)+(p3<<3)|0;if(m===0||m===15){return;}switch(m){case 0:a.push([d0-0.5,d1-0.5]);break;case 1:a.push([d0-0.25-0.25*(v1+v0-2*c)/(v0-v1),d1-0.25-0.25*(v2+v0-2*c)/(v0-v2)]);break;case 2:a.push([d0-0.75-0.25*(-v1-v0+2*c)/(v1-v0),d1-0.25-0.25*(v3+v1-2*c)/(v1-v3)]);break;case 3:a.push([d0-0.5,d1-0.5-0.5*(v2+v0+v3+v1-4*c)/(v0-v2+v1-v3)]);break;case 4:a.push([d0-0.25-0.25*(v3+v2-2*c)/(v2-v3),d1-0.75-0.25*(-v2-v0+2*c)/(v2-v0)]);break;case 5:a.push([d0-0.5-0.5*(v1+v0+v3+v2-4*c)/(v0-v1+v2-v3),d1-0.5]);break;case 6:a.push([d0-0.5-0.25*(-v1-v0+v3+v2)/(v1-v0+v2-v3),d1-0.5-0.25*(-v2-v0+v3+v1)/(v2-v0+v1-v3)]);break;case 7:a.push([d0-0.75-0.25*(v3+v2-2*c)/(v2-v3),d1-0.75-0.25*(v3+v1-2*c)/(v1-v3)]);break;case 8:a.push([d0-0.75-0.25*(-v3-v2+2*c)/(v3-v2),d1-0.75-0.25*(-v3-v1+2*c)/(v3-v1)]);break;case 9:a.push([d0-0.5-0.25*(v1+v0+-v3-v2)/(v0-v1+v3-v2),d1-0.5-0.25*(v2+v0+-v3-v1)/(v0-v2+v3-v1)]);break;case 10:a.push([d0-0.5-0.5*(-v1-v0+-v3-v2+4*c)/(v1-v0+v3-v2),d1-0.5]);break;case 11:a.push([d0-0.25-0.25*(-v3-v2+2*c)/(v3-v2),d1-0.75-0.25*(v2+v0-2*c)/(v0-v2)]);break;case 12:a.push([d0-0.5,d1-0.5-0.5*(-v2-v0+-v3-v1+4*c)/(v2-v0+v3-v1)]);break;case 13:a.push([d0-0.75-0.25*(v1+v0-2*c)/(v0-v1),d1-0.25-0.25*(-v3-v1+2*c)/(v3-v1)]);break;case 14:a.push([d0-0.25-0.25*(-v1-v0+2*c)/(v1-v0),d1-0.25-0.25*(-v2-v0+2*c)/(v2-v0)]);break;case 15:a.push([d0-0.5,d1-0.5]);break;}},cell:function cellFunc(v0,v1,c0,c1,p0,p1,a,b,c){if(p0){b.push([v0,v1]);}else{b.push([v1,v0]);}}});return function(array,level){var verts=[],cells=[];contour(array,verts,cells,level);return{positions:verts,cells:cells};};}};function buildSurfaceNets(order,dtype){var inKey=order.length+'d';var fn=allFns[inKey];if(fn)return fn(generateContourExtractor,order,dtype);}//1D case: Need to handle specially\nfunction mesh1D(array,level){var zc=zeroCrossings(array,level);var n=zc.length;var npos=new Array(n);var ncel=new Array(n);for(var i=0;i<n;++i){npos[i]=[zc[i]];ncel[i]=[i];}return{positions:npos,cells:ncel};}var CACHE={};function surfaceNets(array,level){if(array.dimension<=0){return{positions:[],cells:[]};}else if(array.dimension===1){return mesh1D(array,level);}var typesig=array.order.join()+\"-\"+array.dtype;var proc=CACHE[typesig];var level=+level||0.0;if(!proc){proc=CACHE[typesig]=buildSurfaceNets(array.order,array.dtype);}return proc(array,level);}/***/},/***/6946:/***/function(module,__unused_webpack_exports,__nested_webpack_require_834822__){\"use strict\";module.exports=textGet;var vectorizeText=__nested_webpack_require_834822__(875);var globals=window||process.global||{};var __TEXT_CACHE=globals.__TEXT_CACHE||{};globals.__TEXT_CACHE={};function unwrap(mesh){var cells=mesh.cells;var positions=mesh.positions;var data=new Float32Array(cells.length*6);var ptr=0;var shapeX=0;for(var i=0;i<cells.length;++i){var tri=cells[i];for(var j=0;j<3;++j){var point=positions[tri[j]];data[ptr++]=point[0];data[ptr++]=point[1]+1.4;shapeX=Math.max(point[0],shapeX);}}return{data:data,shape:shapeX};}function textGet(font,text,opts){var opts=opts||{};var fontcache=__TEXT_CACHE[font];if(!fontcache){fontcache=__TEXT_CACHE[font]={' ':{data:new Float32Array(0),shape:0.2}};}var mesh=fontcache[text];if(!mesh){if(text.length<=1||!/\\d/.test(text)){mesh=fontcache[text]=unwrap(vectorizeText(text,{triangles:true,font:font,textAlign:opts.textAlign||'left',textBaseline:'alphabetic',styletags:{breaklines:true,bolds:true,italics:true,subscripts:true,superscripts:true}}));}else{var parts=text.split(/(\\d|\\s)/);var buffer=new Array(parts.length);var bufferSize=0;var shapeX=0;for(var i=0;i<parts.length;++i){buffer[i]=textGet(font,parts[i]);bufferSize+=buffer[i].data.length;shapeX+=buffer[i].shape;if(i>0){shapeX+=0.02;}}var data=new Float32Array(bufferSize);var ptr=0;var xOffset=-0.5*shapeX;for(var i=0;i<buffer.length;++i){var bdata=buffer[i].data;for(var j=0;j<bdata.length;j+=2){data[ptr++]=bdata[j]+xOffset;data[ptr++]=bdata[j+1];}xOffset+=buffer[i].shape+0.02;}mesh=fontcache[text]={data:data,shape:shapeX};}}return mesh;}/***/},/***/14:/***/function(module,__unused_webpack_exports,__nested_webpack_require_836458__){\"use strict\";var parseUnit=__nested_webpack_require_836458__(4405);module.exports=toPX;var PIXELS_PER_INCH=96;function getPropertyInPX(element,prop){var parts=parseUnit(getComputedStyle(element).getPropertyValue(prop));return parts[0]*toPX(parts[1],element);}//This brutal hack is needed\nfunction getSizeBrutal(unit,element){var testDIV=document.createElement('div');testDIV.style['font-size']='128'+unit;element.appendChild(testDIV);var size=getPropertyInPX(testDIV,'font-size')/128;element.removeChild(testDIV);return size;}function toPX(str,element){element=element||document.body;str=(str||'px').trim().toLowerCase();if(element===window||element===document){element=document.body;}switch(str){case'%'://Ambiguous, not sure if we should use width or height\nreturn element.clientHeight/100.0;case'ch':case'ex':return getSizeBrutal(str,element);case'em':return getPropertyInPX(element,'font-size');case'rem':return getPropertyInPX(document.body,'font-size');case'vw':return window.innerWidth/100;case'vh':return window.innerHeight/100;case'vmin':return Math.min(window.innerWidth,window.innerHeight)/100;case'vmax':return Math.max(window.innerWidth,window.innerHeight)/100;case'in':return PIXELS_PER_INCH;case'cm':return PIXELS_PER_INCH/2.54;case'mm':return PIXELS_PER_INCH/25.4;case'pt':return PIXELS_PER_INCH/72;case'pc':return PIXELS_PER_INCH/6;}return 1;}/***/},/***/3440:/***/function(module,__unused_webpack_exports,__nested_webpack_require_837888__){\"use strict\";module.exports=createTurntableController;var filterVector=__nested_webpack_require_837888__(8444);var invert44=__nested_webpack_require_837888__(7437);var rotateM=__nested_webpack_require_837888__(4422);var cross=__nested_webpack_require_837888__(903);var normalize3=__nested_webpack_require_837888__(899);var dot3=__nested_webpack_require_837888__(9305);function len3(x,y,z){return Math.sqrt(Math.pow(x,2)+Math.pow(y,2)+Math.pow(z,2));}function clamp1(x){return Math.min(1.0,Math.max(-1.0,x));}function findOrthoPair(v){var vx=Math.abs(v[0]);var vy=Math.abs(v[1]);var vz=Math.abs(v[2]);var u=[0,0,0];if(vx>Math.max(vy,vz)){u[2]=1;}else if(vy>Math.max(vx,vz)){u[0]=1;}else{u[1]=1;}var vv=0;var uv=0;for(var i=0;i<3;++i){vv+=v[i]*v[i];uv+=u[i]*v[i];}for(var i=0;i<3;++i){u[i]-=uv/vv*v[i];}normalize3(u,u);return u;}function TurntableController(zoomMin,zoomMax,center,up,right,radius,theta,phi){this.center=filterVector(center);this.up=filterVector(up);this.right=filterVector(right);this.radius=filterVector([radius]);this.angle=filterVector([theta,phi]);this.angle.bounds=[[-Infinity,-Math.PI/2],[Infinity,Math.PI/2]];this.setDistanceLimits(zoomMin,zoomMax);this.computedCenter=this.center.curve(0);this.computedUp=this.up.curve(0);this.computedRight=this.right.curve(0);this.computedRadius=this.radius.curve(0);this.computedAngle=this.angle.curve(0);this.computedToward=[0,0,0];this.computedEye=[0,0,0];this.computedMatrix=new Array(16);for(var i=0;i<16;++i){this.computedMatrix[i]=0.5;}this.recalcMatrix(0);}var proto=TurntableController.prototype;proto.setDistanceLimits=function(minDist,maxDist){if(minDist>0){minDist=Math.log(minDist);}else{minDist=-Infinity;}if(maxDist>0){maxDist=Math.log(maxDist);}else{maxDist=Infinity;}maxDist=Math.max(maxDist,minDist);this.radius.bounds[0][0]=minDist;this.radius.bounds[1][0]=maxDist;};proto.getDistanceLimits=function(out){var bounds=this.radius.bounds[0];if(out){out[0]=Math.exp(bounds[0][0]);out[1]=Math.exp(bounds[1][0]);return out;}return[Math.exp(bounds[0][0]),Math.exp(bounds[1][0])];};proto.recalcMatrix=function(t){//Recompute curves\nthis.center.curve(t);this.up.curve(t);this.right.curve(t);this.radius.curve(t);this.angle.curve(t);//Compute frame for camera matrix\nvar up=this.computedUp;var right=this.computedRight;var uu=0.0;var ur=0.0;for(var i=0;i<3;++i){ur+=up[i]*right[i];uu+=up[i]*up[i];}var ul=Math.sqrt(uu);var rr=0.0;for(var i=0;i<3;++i){right[i]-=up[i]*ur/uu;rr+=right[i]*right[i];up[i]/=ul;}var rl=Math.sqrt(rr);for(var i=0;i<3;++i){right[i]/=rl;}//Compute toward vector\nvar toward=this.computedToward;cross(toward,up,right);normalize3(toward,toward);//Compute angular parameters\nvar radius=Math.exp(this.computedRadius[0]);var theta=this.computedAngle[0];var phi=this.computedAngle[1];var ctheta=Math.cos(theta);var stheta=Math.sin(theta);var cphi=Math.cos(phi);var sphi=Math.sin(phi);var center=this.computedCenter;var wx=ctheta*cphi;var wy=stheta*cphi;var wz=sphi;var sx=-ctheta*sphi;var sy=-stheta*sphi;var sz=cphi;var eye=this.computedEye;var mat=this.computedMatrix;for(var i=0;i<3;++i){var x=wx*right[i]+wy*toward[i]+wz*up[i];mat[4*i+1]=sx*right[i]+sy*toward[i]+sz*up[i];mat[4*i+2]=x;mat[4*i+3]=0.0;}var ax=mat[1];var ay=mat[5];var az=mat[9];var bx=mat[2];var by=mat[6];var bz=mat[10];var cx=ay*bz-az*by;var cy=az*bx-ax*bz;var cz=ax*by-ay*bx;var cl=len3(cx,cy,cz);cx/=cl;cy/=cl;cz/=cl;mat[0]=cx;mat[4]=cy;mat[8]=cz;for(var i=0;i<3;++i){eye[i]=center[i]+mat[2+4*i]*radius;}for(var i=0;i<3;++i){var rr=0.0;for(var j=0;j<3;++j){rr+=mat[i+4*j]*eye[j];}mat[12+i]=-rr;}mat[15]=1.0;};proto.getMatrix=function(t,result){this.recalcMatrix(t);var mat=this.computedMatrix;if(result){for(var i=0;i<16;++i){result[i]=mat[i];}return result;}return mat;};var zAxis=[0,0,0];proto.rotate=function(t,dtheta,dphi,droll){this.angle.move(t,dtheta,dphi);if(droll){this.recalcMatrix(t);var mat=this.computedMatrix;zAxis[0]=mat[2];zAxis[1]=mat[6];zAxis[2]=mat[10];var up=this.computedUp;var right=this.computedRight;var toward=this.computedToward;for(var i=0;i<3;++i){mat[4*i]=up[i];mat[4*i+1]=right[i];mat[4*i+2]=toward[i];}rotateM(mat,mat,droll,zAxis);for(var i=0;i<3;++i){up[i]=mat[4*i];right[i]=mat[4*i+1];}this.up.set(t,up[0],up[1],up[2]);this.right.set(t,right[0],right[1],right[2]);}};proto.pan=function(t,dx,dy,dz){dx=dx||0.0;dy=dy||0.0;dz=dz||0.0;this.recalcMatrix(t);var mat=this.computedMatrix;var dist=Math.exp(this.computedRadius[0]);var ux=mat[1];var uy=mat[5];var uz=mat[9];var ul=len3(ux,uy,uz);ux/=ul;uy/=ul;uz/=ul;var rx=mat[0];var ry=mat[4];var rz=mat[8];var ru=rx*ux+ry*uy+rz*uz;rx-=ux*ru;ry-=uy*ru;rz-=uz*ru;var rl=len3(rx,ry,rz);rx/=rl;ry/=rl;rz/=rl;var vx=rx*dx+ux*dy;var vy=ry*dx+uy*dy;var vz=rz*dx+uz*dy;this.center.move(t,vx,vy,vz);//Update z-component of radius\nvar radius=Math.exp(this.computedRadius[0]);radius=Math.max(1e-4,radius+dz);this.radius.set(t,Math.log(radius));};proto.translate=function(t,dx,dy,dz){this.center.move(t,dx||0.0,dy||0.0,dz||0.0);};//Recenters the coordinate axes\nproto.setMatrix=function(t,mat,axes,noSnap){//Get the axes for tare\nvar ushift=1;if(typeof axes==='number'){ushift=axes|0;}if(ushift<0||ushift>3){ushift=1;}var vshift=(ushift+2)%3;var fshift=(ushift+1)%3;//Recompute state for new t value\nif(!mat){this.recalcMatrix(t);mat=this.computedMatrix;}//Get right and up vectors\nvar ux=mat[ushift];var uy=mat[ushift+4];var uz=mat[ushift+8];if(!noSnap){var ul=len3(ux,uy,uz);ux/=ul;uy/=ul;uz/=ul;}else{var ax=Math.abs(ux);var ay=Math.abs(uy);var az=Math.abs(uz);var am=Math.max(ax,ay,az);if(ax===am){ux=ux<0?-1:1;uy=uz=0;}else if(az===am){uz=uz<0?-1:1;ux=uy=0;}else{uy=uy<0?-1:1;ux=uz=0;}}var rx=mat[vshift];var ry=mat[vshift+4];var rz=mat[vshift+8];var ru=rx*ux+ry*uy+rz*uz;rx-=ux*ru;ry-=uy*ru;rz-=uz*ru;var rl=len3(rx,ry,rz);rx/=rl;ry/=rl;rz/=rl;var fx=uy*rz-uz*ry;var fy=uz*rx-ux*rz;var fz=ux*ry-uy*rx;var fl=len3(fx,fy,fz);fx/=fl;fy/=fl;fz/=fl;this.center.jump(t,ex,ey,ez);this.radius.idle(t);this.up.jump(t,ux,uy,uz);this.right.jump(t,rx,ry,rz);var phi,theta;if(ushift===2){var cx=mat[1];var cy=mat[5];var cz=mat[9];var cr=cx*rx+cy*ry+cz*rz;var cf=cx*fx+cy*fy+cz*fz;if(tu<0){phi=-Math.PI/2;}else{phi=Math.PI/2;}theta=Math.atan2(cf,cr);}else{var tx=mat[2];var ty=mat[6];var tz=mat[10];var tu=tx*ux+ty*uy+tz*uz;var tr=tx*rx+ty*ry+tz*rz;var tf=tx*fx+ty*fy+tz*fz;phi=Math.asin(clamp1(tu));theta=Math.atan2(tf,tr);}this.angle.jump(t,theta,phi);this.recalcMatrix(t);var dx=mat[2];var dy=mat[6];var dz=mat[10];var imat=this.computedMatrix;invert44(imat,mat);var w=imat[15];var ex=imat[12]/w;var ey=imat[13]/w;var ez=imat[14]/w;var gs=Math.exp(this.computedRadius[0]);this.center.jump(t,ex-dx*gs,ey-dy*gs,ez-dz*gs);};proto.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT());};proto.idle=function(t){this.center.idle(t);this.up.idle(t);this.right.idle(t);this.radius.idle(t);this.angle.idle(t);};proto.flush=function(t){this.center.flush(t);this.up.flush(t);this.right.flush(t);this.radius.flush(t);this.angle.flush(t);};proto.setDistance=function(t,d){if(d>0){this.radius.set(t,Math.log(d));}};proto.lookAt=function(t,eye,center,up){this.recalcMatrix(t);eye=eye||this.computedEye;center=center||this.computedCenter;up=up||this.computedUp;var ux=up[0];var uy=up[1];var uz=up[2];var ul=len3(ux,uy,uz);if(ul<1e-6){return;}ux/=ul;uy/=ul;uz/=ul;var tx=eye[0]-center[0];var ty=eye[1]-center[1];var tz=eye[2]-center[2];var tl=len3(tx,ty,tz);if(tl<1e-6){return;}tx/=tl;ty/=tl;tz/=tl;var right=this.computedRight;var rx=right[0];var ry=right[1];var rz=right[2];var ru=ux*rx+uy*ry+uz*rz;rx-=ru*ux;ry-=ru*uy;rz-=ru*uz;var rl=len3(rx,ry,rz);if(rl<0.01){rx=uy*tz-uz*ty;ry=uz*tx-ux*tz;rz=ux*ty-uy*tx;rl=len3(rx,ry,rz);if(rl<1e-6){return;}}rx/=rl;ry/=rl;rz/=rl;this.up.set(t,ux,uy,uz);this.right.set(t,rx,ry,rz);this.center.set(t,center[0],center[1],center[2]);this.radius.set(t,Math.log(tl));var fx=uy*rz-uz*ry;var fy=uz*rx-ux*rz;var fz=ux*ry-uy*rx;var fl=len3(fx,fy,fz);fx/=fl;fy/=fl;fz/=fl;var tu=ux*tx+uy*ty+uz*tz;var tr=rx*tx+ry*ty+rz*tz;var tf=fx*tx+fy*ty+fz*tz;var phi=Math.asin(clamp1(tu));var theta=Math.atan2(tf,tr);var angleState=this.angle._state;var lastTheta=angleState[angleState.length-1];var lastPhi=angleState[angleState.length-2];lastTheta=lastTheta%(2.0*Math.PI);var dp=Math.abs(lastTheta+2.0*Math.PI-theta);var d0=Math.abs(lastTheta-theta);var dn=Math.abs(lastTheta-2.0*Math.PI-theta);if(dp<d0){lastTheta+=2.0*Math.PI;}if(dn<d0){lastTheta-=2.0*Math.PI;}this.angle.jump(this.angle.lastT(),lastTheta,lastPhi);this.angle.set(t,theta,phi);};function createTurntableController(options){options=options||{};var center=options.center||[0,0,0];var up=options.up||[0,1,0];var right=options.right||findOrthoPair(up);var radius=options.radius||1.0;var theta=options.theta||0.0;var phi=options.phi||0.0;center=[].slice.call(center,0,3);up=[].slice.call(up,0,3);normalize3(up,up);right=[].slice.call(right,0,3);normalize3(right,right);if('eye'in options){var eye=options.eye;var toward=[eye[0]-center[0],eye[1]-center[1],eye[2]-center[2]];cross(right,toward,up);if(len3(right[0],right[1],right[2])<1e-6){right=findOrthoPair(up);}else{normalize3(right,right);}radius=len3(toward[0],toward[1],toward[2]);var ut=dot3(up,toward)/radius;var rt=dot3(right,toward)/radius;phi=Math.acos(ut);theta=Math.acos(rt);}//Use logarithmic coordinates for radius\nradius=Math.log(radius);//Return the controller\nreturn new TurntableController(options.zoomMin,options.zoomMax,center,up,right,radius,theta,phi);}/***/},/***/9660:/***/function(module){\"use strict\";module.exports=twoProduct;var SPLITTER=+(Math.pow(2,27)+1.0);function twoProduct(a,b,result){var x=a*b;var c=SPLITTER*a;var abig=c-a;var ahi=c-abig;var alo=a-ahi;var d=SPLITTER*b;var bbig=d-b;var bhi=d-bbig;var blo=b-bhi;var err1=x-ahi*bhi;var err2=err1-alo*bhi;var err3=err2-ahi*blo;var y=alo*blo-err3;if(result){result[0]=y;result[1]=x;return result;}return[y,x];}/***/},/***/87:/***/function(module){\"use strict\";module.exports=fastTwoSum;function fastTwoSum(a,b,result){var x=a+b;var bv=x-a;var av=x-bv;var br=b-bv;var ar=a-av;if(result){result[0]=ar+br;result[1]=x;return result;}return[ar+br,x];}/***/},/***/5306:/***/function(__unused_webpack_module,exports,__nested_webpack_require_848023__){\"use strict\";var bits=__nested_webpack_require_848023__(2288);var dup=__nested_webpack_require_848023__(3094);var Buffer=__nested_webpack_require_848023__(2146)/* .Buffer */.lW;//Legacy pool support\nif(!__nested_webpack_require_848023__.g.__TYPEDARRAY_POOL){__nested_webpack_require_848023__.g.__TYPEDARRAY_POOL={UINT8:dup([32,0]),UINT16:dup([32,0]),UINT32:dup([32,0]),BIGUINT64:dup([32,0]),INT8:dup([32,0]),INT16:dup([32,0]),INT32:dup([32,0]),BIGINT64:dup([32,0]),FLOAT:dup([32,0]),DOUBLE:dup([32,0]),DATA:dup([32,0]),UINT8C:dup([32,0]),BUFFER:dup([32,0])};}var hasUint8C=typeof Uint8ClampedArray!=='undefined';var hasBigUint64=typeof BigUint64Array!=='undefined';var hasBigInt64=typeof BigInt64Array!=='undefined';var POOL=__nested_webpack_require_848023__.g.__TYPEDARRAY_POOL;//Upgrade pool\nif(!POOL.UINT8C){POOL.UINT8C=dup([32,0]);}if(!POOL.BIGUINT64){POOL.BIGUINT64=dup([32,0]);}if(!POOL.BIGINT64){POOL.BIGINT64=dup([32,0]);}if(!POOL.BUFFER){POOL.BUFFER=dup([32,0]);}//New technique: Only allocate from ArrayBufferView and Buffer\nvar DATA=POOL.DATA,BUFFER=POOL.BUFFER;exports.free=function free(array){if(Buffer.isBuffer(array)){BUFFER[bits.log2(array.length)].push(array);}else{if(Object.prototype.toString.call(array)!=='[object ArrayBuffer]'){array=array.buffer;}if(!array){return;}var n=array.length||array.byteLength;var log_n=bits.log2(n)|0;DATA[log_n].push(array);}};function freeArrayBuffer(buffer){if(!buffer){return;}var n=buffer.length||buffer.byteLength;var log_n=bits.log2(n);DATA[log_n].push(buffer);}function freeTypedArray(array){freeArrayBuffer(array.buffer);}exports.freeUint8=exports.freeUint16=exports.freeUint32=exports.freeBigUint64=exports.freeInt8=exports.freeInt16=exports.freeInt32=exports.freeBigInt64=exports.freeFloat32=exports.freeFloat=exports.freeFloat64=exports.freeDouble=exports.freeUint8Clamped=exports.freeDataView=freeTypedArray;exports.freeArrayBuffer=freeArrayBuffer;exports.freeBuffer=function freeBuffer(array){BUFFER[bits.log2(array.length)].push(array);};exports.malloc=function malloc(n,dtype){if(dtype===undefined||dtype==='arraybuffer'){return mallocArrayBuffer(n);}else{switch(dtype){case'uint8':return mallocUint8(n);case'uint16':return mallocUint16(n);case'uint32':return mallocUint32(n);case'int8':return mallocInt8(n);case'int16':return mallocInt16(n);case'int32':return mallocInt32(n);case'float':case'float32':return mallocFloat(n);case'double':case'float64':return mallocDouble(n);case'uint8_clamped':return mallocUint8Clamped(n);case'bigint64':return mallocBigInt64(n);case'biguint64':return mallocBigUint64(n);case'buffer':return mallocBuffer(n);case'data':case'dataview':return mallocDataView(n);default:return null;}}return null;};function mallocArrayBuffer(n){var n=bits.nextPow2(n);var log_n=bits.log2(n);var d=DATA[log_n];if(d.length>0){return d.pop();}return new ArrayBuffer(n);}exports.mallocArrayBuffer=mallocArrayBuffer;function mallocUint8(n){return new Uint8Array(mallocArrayBuffer(n),0,n);}exports.mallocUint8=mallocUint8;function mallocUint16(n){return new Uint16Array(mallocArrayBuffer(2*n),0,n);}exports.mallocUint16=mallocUint16;function mallocUint32(n){return new Uint32Array(mallocArrayBuffer(4*n),0,n);}exports.mallocUint32=mallocUint32;function mallocInt8(n){return new Int8Array(mallocArrayBuffer(n),0,n);}exports.mallocInt8=mallocInt8;function mallocInt16(n){return new Int16Array(mallocArrayBuffer(2*n),0,n);}exports.mallocInt16=mallocInt16;function mallocInt32(n){return new Int32Array(mallocArrayBuffer(4*n),0,n);}exports.mallocInt32=mallocInt32;function mallocFloat(n){return new Float32Array(mallocArrayBuffer(4*n),0,n);}exports.mallocFloat32=exports.mallocFloat=mallocFloat;function mallocDouble(n){return new Float64Array(mallocArrayBuffer(8*n),0,n);}exports.mallocFloat64=exports.mallocDouble=mallocDouble;function mallocUint8Clamped(n){if(hasUint8C){return new Uint8ClampedArray(mallocArrayBuffer(n),0,n);}else{return mallocUint8(n);}}exports.mallocUint8Clamped=mallocUint8Clamped;function mallocBigUint64(n){if(hasBigUint64){return new BigUint64Array(mallocArrayBuffer(8*n),0,n);}else{return null;}}exports.mallocBigUint64=mallocBigUint64;function mallocBigInt64(n){if(hasBigInt64){return new BigInt64Array(mallocArrayBuffer(8*n),0,n);}else{return null;}}exports.mallocBigInt64=mallocBigInt64;function mallocDataView(n){return new DataView(mallocArrayBuffer(n),0,n);}exports.mallocDataView=mallocDataView;function mallocBuffer(n){n=bits.nextPow2(n);var log_n=bits.log2(n);var cache=BUFFER[log_n];if(cache.length>0){return cache.pop();}return new Buffer(n);}exports.mallocBuffer=mallocBuffer;exports.clearCache=function clearCache(){for(var i=0;i<32;++i){POOL.UINT8[i].length=0;POOL.UINT16[i].length=0;POOL.UINT32[i].length=0;POOL.INT8[i].length=0;POOL.INT16[i].length=0;POOL.INT32[i].length=0;POOL.FLOAT[i].length=0;POOL.DOUBLE[i].length=0;POOL.BIGUINT64[i].length=0;POOL.BIGINT64[i].length=0;POOL.UINT8C[i].length=0;DATA[i].length=0;BUFFER[i].length=0;}};/***/},/***/1731:/***/function(module){\"use strict\";\"use restrict\";module.exports=UnionFind;function UnionFind(count){this.roots=new Array(count);this.ranks=new Array(count);for(var i=0;i<count;++i){this.roots[i]=i;this.ranks[i]=0;}}var proto=UnionFind.prototype;Object.defineProperty(proto,\"length\",{\"get\":function(){return this.roots.length;}});proto.makeSet=function(){var n=this.roots.length;this.roots.push(n);this.ranks.push(0);return n;};proto.find=function(x){var x0=x;var roots=this.roots;while(roots[x]!==x){x=roots[x];}while(roots[x0]!==x){var y=roots[x0];roots[x0]=x;x0=y;}return x;};proto.link=function(x,y){var xr=this.find(x),yr=this.find(y);if(xr===yr){return;}var ranks=this.ranks,roots=this.roots,xd=ranks[xr],yd=ranks[yr];if(xd<yd){roots[xr]=yr;}else if(yd<xd){roots[yr]=xr;}else{roots[yr]=xr;++ranks[xr];}};/***/},/***/1215:/***/function(module){\"use strict\";function unique_pred(list,compare){var ptr=1,len=list.length,a=list[0],b=list[0];for(var i=1;i<len;++i){b=a;a=list[i];if(compare(a,b)){if(i===ptr){ptr++;continue;}list[ptr++]=a;}}list.length=ptr;return list;}function unique_eq(list){var ptr=1,len=list.length,a=list[0],b=list[0];for(var i=1;i<len;++i,b=a){b=a;a=list[i];if(a!==b){if(i===ptr){ptr++;continue;}list[ptr++]=a;}}list.length=ptr;return list;}function unique(list,compare,sorted){if(list.length===0){return list;}if(compare){if(!sorted){list.sort(compare);}return unique_pred(list,compare);}if(!sorted){list.sort();}return unique_eq(list);}module.exports=unique;/***/},/***/875:/***/function(module,__unused_webpack_exports,__nested_webpack_require_854473__){\"use strict\";module.exports=createText;var vectorizeText=__nested_webpack_require_854473__(712);var defaultCanvas=null;var defaultContext=null;if(typeof document!=='undefined'){defaultCanvas=document.createElement('canvas');defaultCanvas.width=8192;defaultCanvas.height=1024;defaultContext=defaultCanvas.getContext(\"2d\");}function createText(str,options){if(typeof options!==\"object\"||options===null){options={};}return vectorizeText(str,options.canvas||defaultCanvas,options.context||defaultContext,options);}/***/},/***/712:/***/function(module,__unused_webpack_exports,__nested_webpack_require_855052__){module.exports=vectorizeText;module.exports.processPixels=processPixels;var surfaceNets=__nested_webpack_require_855052__(4162);var ndarray=__nested_webpack_require_855052__(5050);var simplify=__nested_webpack_require_855052__(8243);var cleanPSLG=__nested_webpack_require_855052__(197);var cdt2d=__nested_webpack_require_855052__(7761);var toPolygonCrappy=__nested_webpack_require_855052__(8040);var TAG_bold=\"b\";var CHR_bold='b|';var TAG_italic=\"i\";var CHR_italic='i|';var TAG_super=\"sup\";var CHR_super0='+';var CHR_super='+1';var TAG_sub=\"sub\";var CHR_sub0='-';var CHR_sub='-1';function parseTag(tag,TAG_CHR,str,map){var opnTag=\"<\"+tag+\">\";var clsTag=\"</\"+tag+\">\";var nOPN=opnTag.length;var nCLS=clsTag.length;var isRecursive=TAG_CHR[0]===CHR_super0||TAG_CHR[0]===CHR_sub0;var a=0;var b=-nCLS;while(a>-1){a=str.indexOf(opnTag,a);if(a===-1)break;b=str.indexOf(clsTag,a+nOPN);if(b===-1)break;if(b<=a)break;for(var i=a;i<b+nCLS;++i){if(i<a+nOPN||i>=b){map[i]=null;str=str.substr(0,i)+\" \"+str.substr(i+1);}else{if(map[i]!==null){var pos=map[i].indexOf(TAG_CHR[0]);if(pos===-1){map[i]+=TAG_CHR;}else{// i.e. to handle multiple sub/super-scripts\nif(isRecursive){// i.e to increase the sub/sup number\nmap[i]=map[i].substr(0,pos+1)+(1+parseInt(map[i][pos+1]))+map[i].substr(pos+2);}}}}}var start=a+nOPN;var remainingStr=str.substr(start,b-start);var c=remainingStr.indexOf(opnTag);if(c!==-1)a=c;else a=b+nCLS;}return map;}function transformPositions(positions,options,size){var align=options.textAlign||\"start\";var baseline=options.textBaseline||\"alphabetic\";var lo=[1<<30,1<<30];var hi=[0,0];var n=positions.length;for(var i=0;i<n;++i){var p=positions[i];for(var j=0;j<2;++j){lo[j]=Math.min(lo[j],p[j])|0;hi[j]=Math.max(hi[j],p[j])|0;}}var xShift=0;switch(align){case\"center\":xShift=-0.5*(lo[0]+hi[0]);break;case\"right\":case\"end\":xShift=-hi[0];break;case\"left\":case\"start\":xShift=-lo[0];break;default:throw new Error(\"vectorize-text: Unrecognized textAlign: '\"+align+\"'\");}var yShift=0;switch(baseline){case\"hanging\":case\"top\":yShift=-lo[1];break;case\"middle\":yShift=-0.5*(lo[1]+hi[1]);break;case\"alphabetic\":case\"ideographic\":yShift=-3*size;break;case\"bottom\":yShift=-hi[1];break;default:throw new Error(\"vectorize-text: Unrecoginized textBaseline: '\"+baseline+\"'\");}var scale=1.0/size;if(\"lineHeight\"in options){scale*=+options.lineHeight;}else if(\"width\"in options){scale=options.width/(hi[0]-lo[0]);}else if(\"height\"in options){scale=options.height/(hi[1]-lo[1]);}return positions.map(function(p){return[scale*(p[0]+xShift),scale*(p[1]+yShift)];});}function getPixels(canvas,context,rawString,fontSize,lineSpacing,styletags){rawString=rawString.replace(/\\n/g,'');// don't accept \\n in the input\nif(styletags.breaklines===true){rawString=rawString.replace(/\\<br\\>/g,'\\n');// replace <br> tags with \\n in the string\n}else{rawString=rawString.replace(/\\<br\\>/g,' ');// don't accept <br> tags in the input and replace with space in this case\n}var activeStyle=\"\";var map=[];for(j=0;j<rawString.length;++j){map[j]=activeStyle;}if(styletags.bolds===true)map=parseTag(TAG_bold,CHR_bold,rawString,map);if(styletags.italics===true)map=parseTag(TAG_italic,CHR_italic,rawString,map);if(styletags.superscripts===true)map=parseTag(TAG_super,CHR_super,rawString,map);if(styletags.subscripts===true)map=parseTag(TAG_sub,CHR_sub,rawString,map);var allStyles=[];var plainText=\"\";for(j=0;j<rawString.length;++j){if(map[j]!==null){plainText+=rawString[j];allStyles.push(map[j]);}}var allTexts=plainText.split('\\n');var numberOfLines=allTexts.length;var lineHeight=Math.round(lineSpacing*fontSize);var offsetX=fontSize;var offsetY=fontSize*2;var maxWidth=0;var minHeight=numberOfLines*lineHeight+offsetY;if(canvas.height<minHeight){canvas.height=minHeight;}context.fillStyle=\"#000\";context.fillRect(0,0,canvas.width,canvas.height);context.fillStyle=\"#fff\";var i,j,xPos,yPos,zPos;var nDone=0;var buffer=\"\";function writeBuffer(){if(buffer!==\"\"){var delta=context.measureText(buffer).width;context.fillText(buffer,offsetX+xPos,offsetY+yPos);xPos+=delta;}}function getTextFontSize(){return\"\"+Math.round(zPos)+\"px \";}function changeStyle(oldStyle,newStyle){var ctxFont=\"\"+context.font;if(styletags.subscripts===true){var oldIndex_Sub=oldStyle.indexOf(CHR_sub0);var newIndex_Sub=newStyle.indexOf(CHR_sub0);var oldSub=oldIndex_Sub>-1?parseInt(oldStyle[1+oldIndex_Sub]):0;var newSub=newIndex_Sub>-1?parseInt(newStyle[1+newIndex_Sub]):0;if(oldSub!==newSub){ctxFont=ctxFont.replace(getTextFontSize(),\"?px \");zPos*=Math.pow(0.75,newSub-oldSub);ctxFont=ctxFont.replace(\"?px \",getTextFontSize());}yPos+=0.25*lineHeight*(newSub-oldSub);}if(styletags.superscripts===true){var oldIndex_Super=oldStyle.indexOf(CHR_super0);var newIndex_Super=newStyle.indexOf(CHR_super0);var oldSuper=oldIndex_Super>-1?parseInt(oldStyle[1+oldIndex_Super]):0;var newSuper=newIndex_Super>-1?parseInt(newStyle[1+newIndex_Super]):0;if(oldSuper!==newSuper){ctxFont=ctxFont.replace(getTextFontSize(),\"?px \");zPos*=Math.pow(0.75,newSuper-oldSuper);ctxFont=ctxFont.replace(\"?px \",getTextFontSize());}yPos-=0.25*lineHeight*(newSuper-oldSuper);}if(styletags.bolds===true){var wasBold=oldStyle.indexOf(CHR_bold)>-1;var is_Bold=newStyle.indexOf(CHR_bold)>-1;if(!wasBold&&is_Bold){if(wasItalic){ctxFont=ctxFont.replace(\"italic \",\"italic bold \");}else{ctxFont=\"bold \"+ctxFont;}}if(wasBold&&!is_Bold){ctxFont=ctxFont.replace(\"bold \",'');}}if(styletags.italics===true){var wasItalic=oldStyle.indexOf(CHR_italic)>-1;var is_Italic=newStyle.indexOf(CHR_italic)>-1;if(!wasItalic&&is_Italic){ctxFont=\"italic \"+ctxFont;}if(wasItalic&&!is_Italic){ctxFont=ctxFont.replace(\"italic \",'');}}context.font=ctxFont;}for(i=0;i<numberOfLines;++i){var txt=allTexts[i]+'\\n';xPos=0;yPos=i*lineHeight;zPos=fontSize;buffer=\"\";for(j=0;j<txt.length;++j){var style=j+nDone<allStyles.length?allStyles[j+nDone]:allStyles[allStyles.length-1];if(activeStyle===style){buffer+=txt[j];}else{writeBuffer();buffer=txt[j];if(style!==undefined){changeStyle(activeStyle,style);activeStyle=style;}}}writeBuffer();nDone+=txt.length;var width=Math.round(xPos+2*offsetX)|0;if(maxWidth<width)maxWidth=width;}//Cut pixels from image\nvar xCut=maxWidth;var yCut=offsetY+lineHeight*numberOfLines;var pixels=ndarray(context.getImageData(0,0,xCut,yCut).data,[yCut,xCut,4]);return pixels.pick(-1,-1,0).transpose(1,0);}function getContour(pixels,doSimplify){var contour=surfaceNets(pixels,128);if(doSimplify){return simplify(contour.cells,contour.positions,0.25);}return{edges:contour.cells,positions:contour.positions};}function processPixelsImpl(pixels,options,size,simplify){//Extract contour\nvar contour=getContour(pixels,simplify);//Apply warp to positions\nvar positions=transformPositions(contour.positions,options,size);var edges=contour.edges;var flip=\"ccw\"===options.orientation;//Clean up the PSLG, resolve self intersections, etc.\ncleanPSLG(positions,edges);//If triangulate flag passed, triangulate the result\nif(options.polygons||options.polygon||options.polyline){var result=toPolygonCrappy(edges,positions);var nresult=new Array(result.length);for(var i=0;i<result.length;++i){var loops=result[i];var nloops=new Array(loops.length);for(var j=0;j<loops.length;++j){var loop=loops[j];var nloop=new Array(loop.length);for(var k=0;k<loop.length;++k){nloop[k]=positions[loop[k]].slice();}if(flip){nloop.reverse();}nloops[j]=nloop;}nresult[i]=nloops;}return nresult;}else if(options.triangles||options.triangulate||options.triangle){return{cells:cdt2d(positions,edges,{delaunay:false,exterior:false,interior:true}),positions:positions};}else{return{edges:edges,positions:positions};}}function processPixels(pixels,options,size){try{return processPixelsImpl(pixels,options,size,true);}catch(e){}try{return processPixelsImpl(pixels,options,size,false);}catch(e){}if(options.polygons||options.polyline||options.polygon){return[];}if(options.triangles||options.triangulate||options.triangle){return{cells:[],positions:[]};}return{edges:[],positions:[]};}function vectorizeText(str,canvas,context,options){var size=64;var lineSpacing=1.25;var styletags={breaklines:false,bolds:false,italics:false,subscripts:false,superscripts:false};if(options){if(options.size&&options.size>0)size=options.size;if(options.lineSpacing&&options.lineSpacing>0)lineSpacing=options.lineSpacing;if(options.styletags&&options.styletags.breaklines)styletags.breaklines=options.styletags.breaklines?true:false;if(options.styletags&&options.styletags.bolds)styletags.bolds=options.styletags.bolds?true:false;if(options.styletags&&options.styletags.italics)styletags.italics=options.styletags.italics?true:false;if(options.styletags&&options.styletags.subscripts)styletags.subscripts=options.styletags.subscripts?true:false;if(options.styletags&&options.styletags.superscripts)styletags.superscripts=options.styletags.superscripts?true:false;}context.font=[options.fontStyle,options.fontVariant,options.fontWeight,size+\"px\",options.font].filter(function(d){return d;}).join(\" \");context.textAlign=\"start\";context.textBaseline=\"alphabetic\";context.direction=\"ltr\";var pixels=getPixels(canvas,context,str,size,lineSpacing,styletags);return processPixels(pixels,options,size);}/***/},/***/5346:/***/function(module){// Copyright (C) 2011 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n/**\n * @fileoverview Install a leaky WeakMap emulation on platforms that\n * don't provide a built-in one.\n *\n * <p>Assumes that an ES5 platform where, if {@code WeakMap} is\n * already present, then it conforms to the anticipated ES6\n * specification. To run this file on an ES5 or almost ES5\n * implementation where the {@code WeakMap} specification does not\n * quite conform, run <code>repairES5.js</code> first.\n *\n * <p>Even though WeakMapModule is not global, the linter thinks it\n * is, which is why it is in the overrides list below.\n *\n * <p>NOTE: Before using this WeakMap emulation in a non-SES\n * environment, see the note below about hiddenRecord.\n *\n * @author Mark S. Miller\n * @requires crypto, ArrayBuffer, Uint8Array, navigator, console\n * @overrides WeakMap, ses, Proxy\n * @overrides WeakMapModule\n */ /**\n * This {@code WeakMap} emulation is observably equivalent to the\n * ES-Harmony WeakMap, but with leakier garbage collection properties.\n *\n * <p>As with true WeakMaps, in this emulation, a key does not\n * retain maps indexed by that key and (crucially) a map does not\n * retain the keys it indexes. A map by itself also does not retain\n * the values associated with that map.\n *\n * <p>However, the values associated with a key in some map are\n * retained so long as that key is retained and those associations are\n * not overridden. For example, when used to support membranes, all\n * values exported from a given membrane will live for the lifetime\n * they would have had in the absence of an interposed membrane. Even\n * when the membrane is revoked, all objects that would have been\n * reachable in the absence of revocation will still be reachable, as\n * far as the GC can tell, even though they will no longer be relevant\n * to ongoing computation.\n *\n * <p>The API implemented here is approximately the API as implemented\n * in FF6.0a1 and agreed to by MarkM, Andreas Gal, and Dave Herman,\n * rather than the offially approved proposal page. TODO(erights):\n * upgrade the ecmascript WeakMap proposal page to explain this API\n * change and present to EcmaScript committee for their approval.\n *\n * <p>The first difference between the emulation here and that in\n * FF6.0a1 is the presence of non enumerable {@code get___, has___,\n * set___, and delete___} methods on WeakMap instances to represent\n * what would be the hidden internal properties of a primitive\n * implementation. Whereas the FF6.0a1 WeakMap.prototype methods\n * require their {@code this} to be a genuine WeakMap instance (i.e.,\n * an object of {@code [[Class]]} \"WeakMap}), since there is nothing\n * unforgeable about the pseudo-internal method names used here,\n * nothing prevents these emulated prototype methods from being\n * applied to non-WeakMaps with pseudo-internal methods of the same\n * names.\n *\n * <p>Another difference is that our emulated {@code\n * WeakMap.prototype} is not itself a WeakMap. A problem with the\n * current FF6.0a1 API is that WeakMap.prototype is itself a WeakMap\n * providing ambient mutability and an ambient communications\n * channel. Thus, if a WeakMap is already present and has this\n * problem, repairES5.js wraps it in a safe wrappper in order to\n * prevent access to this channel. (See\n * PATCH_MUTABLE_FROZEN_WEAKMAP_PROTO in repairES5.js).\n */ /**\n * If this is a full <a href=\n * \"http://code.google.com/p/es-lab/wiki/SecureableES5\"\n * >secureable ES5</a> platform and the ES-Harmony {@code WeakMap} is\n * absent, install an approximate emulation.\n *\n * <p>If WeakMap is present but cannot store some objects, use our approximate\n * emulation as a wrapper.\n *\n * <p>If this is almost a secureable ES5 platform, then WeakMap.js\n * should be run after repairES5.js.\n *\n * <p>See {@code WeakMap} for documentation of the garbage collection\n * properties of this WeakMap emulation.\n */(function WeakMapModule(){\"use strict\";if(typeof ses!=='undefined'&&ses.ok&&!ses.ok()){// already too broken, so give up\nreturn;}/**\n   * In some cases (current Firefox), we must make a choice betweeen a\n   * WeakMap which is capable of using all varieties of host objects as\n   * keys and one which is capable of safely using proxies as keys. See\n   * comments below about HostWeakMap and DoubleWeakMap for details.\n   *\n   * This function (which is a global, not exposed to guests) marks a\n   * WeakMap as permitted to do what is necessary to index all host\n   * objects, at the cost of making it unsafe for proxies.\n   *\n   * Do not apply this function to anything which is not a genuine\n   * fresh WeakMap.\n   */function weakMapPermitHostObjects(map){// identity of function used as a secret -- good enough and cheap\nif(map.permitHostObjects___){map.permitHostObjects___(weakMapPermitHostObjects);}}if(typeof ses!=='undefined'){ses.weakMapPermitHostObjects=weakMapPermitHostObjects;}// IE 11 has no Proxy but has a broken WeakMap such that we need to patch\n// it using DoubleWeakMap; this flag tells DoubleWeakMap so.\nvar doubleWeakMapCheckSilentFailure=false;// Check if there is already a good-enough WeakMap implementation, and if so\n// exit without replacing it.\nif(typeof WeakMap==='function'){var HostWeakMap=WeakMap;// There is a WeakMap -- is it good enough?\nif(typeof navigator!=='undefined'&&/Firefox/.test(navigator.userAgent)){// We're now *assuming not*, because as of this writing (2013-05-06)\n// Firefox's WeakMaps have a miscellany of objects they won't accept, and\n// we don't want to make an exhaustive list, and testing for just one\n// will be a problem if that one is fixed alone (as they did for Event).\n// If there is a platform that we *can* reliably test on, here's how to\n// do it:\n//  var problematic = ... ;\n//  var testHostMap = new HostWeakMap();\n//  try {\n//    testHostMap.set(problematic, 1);  // Firefox 20 will throw here\n//    if (testHostMap.get(problematic) === 1) {\n//      return;\n//    }\n//  } catch (e) {}\n}else{// IE 11 bug: WeakMaps silently fail to store frozen objects.\nvar testMap=new HostWeakMap();var testObject=Object.freeze({});testMap.set(testObject,1);if(testMap.get(testObject)!==1){doubleWeakMapCheckSilentFailure=true;// Fall through to installing our WeakMap.\n}else{module.exports=WeakMap;return;}}}var hop=Object.prototype.hasOwnProperty;var gopn=Object.getOwnPropertyNames;var defProp=Object.defineProperty;var isExtensible=Object.isExtensible;/**\n   * Security depends on HIDDEN_NAME being both <i>unguessable</i> and\n   * <i>undiscoverable</i> by untrusted code.\n   *\n   * <p>Given the known weaknesses of Math.random() on existing\n   * browsers, it does not generate unguessability we can be confident\n   * of.\n   *\n   * <p>It is the monkey patching logic in this file that is intended\n   * to ensure undiscoverability. The basic idea is that there are\n   * three fundamental means of discovering properties of an object:\n   * The for/in loop, Object.keys(), and Object.getOwnPropertyNames(),\n   * as well as some proposed ES6 extensions that appear on our\n   * whitelist. The first two only discover enumerable properties, and\n   * we only use HIDDEN_NAME to name a non-enumerable property, so the\n   * only remaining threat should be getOwnPropertyNames and some\n   * proposed ES6 extensions that appear on our whitelist. We monkey\n   * patch them to remove HIDDEN_NAME from the list of properties they\n   * returns.\n   *\n   * <p>TODO(erights): On a platform with built-in Proxies, proxies\n   * could be used to trap and thereby discover the HIDDEN_NAME, so we\n   * need to monkey patch Proxy.create, Proxy.createFunction, etc, in\n   * order to wrap the provided handler with the real handler which\n   * filters out all traps using HIDDEN_NAME.\n   *\n   * <p>TODO(erights): Revisit Mike Stay's suggestion that we use an\n   * encapsulated function at a not-necessarily-secret name, which\n   * uses the Stiegler shared-state rights amplification pattern to\n   * reveal the associated value only to the WeakMap in which this key\n   * is associated with that value. Since only the key retains the\n   * function, the function can also remember the key without causing\n   * leakage of the key, so this doesn't violate our general gc\n   * goals. In addition, because the name need not be a guarded\n   * secret, we could efficiently handle cross-frame frozen keys.\n   */var HIDDEN_NAME_PREFIX='weakmap:';var HIDDEN_NAME=HIDDEN_NAME_PREFIX+'ident:'+Math.random()+'___';if(typeof crypto!=='undefined'&&typeof crypto.getRandomValues==='function'&&typeof ArrayBuffer==='function'&&typeof Uint8Array==='function'){var ab=new ArrayBuffer(25);var u8s=new Uint8Array(ab);crypto.getRandomValues(u8s);HIDDEN_NAME=HIDDEN_NAME_PREFIX+'rand:'+Array.prototype.map.call(u8s,function(u8){return(u8%36).toString(36);}).join('')+'___';}function isNotHiddenName(name){return!(name.substr(0,HIDDEN_NAME_PREFIX.length)==HIDDEN_NAME_PREFIX&&name.substr(name.length-3)==='___');}/**\n   * Monkey patch getOwnPropertyNames to avoid revealing the\n   * HIDDEN_NAME.\n   *\n   * <p>The ES5.1 spec requires each name to appear only once, but as\n   * of this writing, this requirement is controversial for ES6, so we\n   * made this code robust against this case. If the resulting extra\n   * search turns out to be expensive, we can probably relax this once\n   * ES6 is adequately supported on all major browsers, iff no browser\n   * versions we support at that time have relaxed this constraint\n   * without providing built-in ES6 WeakMaps.\n   */defProp(Object,'getOwnPropertyNames',{value:function fakeGetOwnPropertyNames(obj){return gopn(obj).filter(isNotHiddenName);}});/**\n   * getPropertyNames is not in ES5 but it is proposed for ES6 and\n   * does appear in our whitelist, so we need to clean it too.\n   */if('getPropertyNames'in Object){var originalGetPropertyNames=Object.getPropertyNames;defProp(Object,'getPropertyNames',{value:function fakeGetPropertyNames(obj){return originalGetPropertyNames(obj).filter(isNotHiddenName);}});}/**\n   * <p>To treat objects as identity-keys with reasonable efficiency\n   * on ES5 by itself (i.e., without any object-keyed collections), we\n   * need to add a hidden property to such key objects when we\n   * can. This raises several issues:\n   * <ul>\n   * <li>Arranging to add this property to objects before we lose the\n   *     chance, and\n   * <li>Hiding the existence of this new property from most\n   *     JavaScript code.\n   * <li>Preventing <i>certification theft</i>, where one object is\n   *     created falsely claiming to be the key of an association\n   *     actually keyed by another object.\n   * <li>Preventing <i>value theft</i>, where untrusted code with\n   *     access to a key object but not a weak map nevertheless\n   *     obtains access to the value associated with that key in that\n   *     weak map.\n   * </ul>\n   * We do so by\n   * <ul>\n   * <li>Making the name of the hidden property unguessable, so \"[]\"\n   *     indexing, which we cannot intercept, cannot be used to access\n   *     a property without knowing the name.\n   * <li>Making the hidden property non-enumerable, so we need not\n   *     worry about for-in loops or {@code Object.keys},\n   * <li>monkey patching those reflective methods that would\n   *     prevent extensions, to add this hidden property first,\n   * <li>monkey patching those methods that would reveal this\n   *     hidden property.\n   * </ul>\n   * Unfortunately, because of same-origin iframes, we cannot reliably\n   * add this hidden property before an object becomes\n   * non-extensible. Instead, if we encounter a non-extensible object\n   * without a hidden record that we can detect (whether or not it has\n   * a hidden record stored under a name secret to us), then we just\n   * use the key object itself to represent its identity in a brute\n   * force leaky map stored in the weak map, losing all the advantages\n   * of weakness for these.\n   */function getHiddenRecord(key){if(key!==Object(key)){throw new TypeError('Not an object: '+key);}var hiddenRecord=key[HIDDEN_NAME];if(hiddenRecord&&hiddenRecord.key===key){return hiddenRecord;}if(!isExtensible(key)){// Weak map must brute force, as explained in doc-comment above.\nreturn void 0;}// The hiddenRecord and the key point directly at each other, via\n// the \"key\" and HIDDEN_NAME properties respectively. The key\n// field is for quickly verifying that this hidden record is an\n// own property, not a hidden record from up the prototype chain.\n//\n// NOTE: Because this WeakMap emulation is meant only for systems like\n// SES where Object.prototype is frozen without any numeric\n// properties, it is ok to use an object literal for the hiddenRecord.\n// This has two advantages:\n// * It is much faster in a performance critical place\n// * It avoids relying on Object.create(null), which had been\n//   problematic on Chrome 28.0.1480.0. See\n//   https://code.google.com/p/google-caja/issues/detail?id=1687\nhiddenRecord={key:key};// When using this WeakMap emulation on platforms where\n// Object.prototype might not be frozen and Object.create(null) is\n// reliable, use the following two commented out lines instead.\n// hiddenRecord = Object.create(null);\n// hiddenRecord.key = key;\n// Please contact us if you need this to work on platforms where\n// Object.prototype might not be frozen and\n// Object.create(null) might not be reliable.\ntry{defProp(key,HIDDEN_NAME,{value:hiddenRecord,writable:false,enumerable:false,configurable:false});return hiddenRecord;}catch(error){// Under some circumstances, isExtensible seems to misreport whether\n// the HIDDEN_NAME can be defined.\n// The circumstances have not been isolated, but at least affect\n// Node.js v0.10.26 on TravisCI / Linux, but not the same version of\n// Node.js on OS X.\nreturn void 0;}}/**\n   * Monkey patch operations that would make their argument\n   * non-extensible.\n   *\n   * <p>The monkey patched versions throw a TypeError if their\n   * argument is not an object, so it should only be done to functions\n   * that should throw a TypeError anyway if their argument is not an\n   * object.\n   */(function(){var oldFreeze=Object.freeze;defProp(Object,'freeze',{value:function identifyingFreeze(obj){getHiddenRecord(obj);return oldFreeze(obj);}});var oldSeal=Object.seal;defProp(Object,'seal',{value:function identifyingSeal(obj){getHiddenRecord(obj);return oldSeal(obj);}});var oldPreventExtensions=Object.preventExtensions;defProp(Object,'preventExtensions',{value:function identifyingPreventExtensions(obj){getHiddenRecord(obj);return oldPreventExtensions(obj);}});})();function constFunc(func){func.prototype=null;return Object.freeze(func);}var calledAsFunctionWarningDone=false;function calledAsFunctionWarning(){// Future ES6 WeakMap is currently (2013-09-10) expected to reject WeakMap()\n// but we used to permit it and do it ourselves, so warn only.\nif(!calledAsFunctionWarningDone&&typeof console!=='undefined'){calledAsFunctionWarningDone=true;console.warn('WeakMap should be invoked as new WeakMap(), not '+'WeakMap(). This will be an error in the future.');}}var nextId=0;var OurWeakMap=function(){if(!(this instanceof OurWeakMap)){// approximate test for new ...()\ncalledAsFunctionWarning();}// We are currently (12/25/2012) never encountering any prematurely\n// non-extensible keys.\nvar keys=[];// brute force for prematurely non-extensible keys.\nvar values=[];// brute force for corresponding values.\nvar id=nextId++;function get___(key,opt_default){var index;var hiddenRecord=getHiddenRecord(key);if(hiddenRecord){return id in hiddenRecord?hiddenRecord[id]:opt_default;}else{index=keys.indexOf(key);return index>=0?values[index]:opt_default;}}function has___(key){var hiddenRecord=getHiddenRecord(key);if(hiddenRecord){return id in hiddenRecord;}else{return keys.indexOf(key)>=0;}}function set___(key,value){var index;var hiddenRecord=getHiddenRecord(key);if(hiddenRecord){hiddenRecord[id]=value;}else{index=keys.indexOf(key);if(index>=0){values[index]=value;}else{// Since some browsers preemptively terminate slow turns but\n// then continue computing with presumably corrupted heap\n// state, we here defensively get keys.length first and then\n// use it to update both the values and keys arrays, keeping\n// them in sync.\nindex=keys.length;values[index]=value;// If we crash here, values will be one longer than keys.\nkeys[index]=key;}}return this;}function delete___(key){var hiddenRecord=getHiddenRecord(key);var index,lastIndex;if(hiddenRecord){return id in hiddenRecord&&delete hiddenRecord[id];}else{index=keys.indexOf(key);if(index<0){return false;}// Since some browsers preemptively terminate slow turns but\n// then continue computing with potentially corrupted heap\n// state, we here defensively get keys.length first and then use\n// it to update both the keys and the values array, keeping\n// them in sync. We update the two with an order of assignments,\n// such that any prefix of these assignments will preserve the\n// key/value correspondence, either before or after the delete.\n// Note that this needs to work correctly when index === lastIndex.\nlastIndex=keys.length-1;keys[index]=void 0;// If we crash here, there's a void 0 in the keys array, but\n// no operation will cause a \"keys.indexOf(void 0)\", since\n// getHiddenRecord(void 0) will always throw an error first.\nvalues[index]=values[lastIndex];// If we crash here, values[index] cannot be found here,\n// because keys[index] is void 0.\nkeys[index]=keys[lastIndex];// If index === lastIndex and we crash here, then keys[index]\n// is still void 0, since the aliasing killed the previous key.\nkeys.length=lastIndex;// If we crash here, keys will be one shorter than values.\nvalues.length=lastIndex;return true;}}return Object.create(OurWeakMap.prototype,{get___:{value:constFunc(get___)},has___:{value:constFunc(has___)},set___:{value:constFunc(set___)},delete___:{value:constFunc(delete___)}});};OurWeakMap.prototype=Object.create(Object.prototype,{get:{/**\n       * Return the value most recently associated with key, or\n       * opt_default if none.\n       */value:function get(key,opt_default){return this.get___(key,opt_default);},writable:true,configurable:true},has:{/**\n       * Is there a value associated with key in this WeakMap?\n       */value:function has(key){return this.has___(key);},writable:true,configurable:true},set:{/**\n       * Associate value with key in this WeakMap, overwriting any\n       * previous association if present.\n       */value:function set(key,value){return this.set___(key,value);},writable:true,configurable:true},'delete':{/**\n       * Remove any association for key in this WeakMap, returning\n       * whether there was one.\n       *\n       * <p>Note that the boolean return here does not work like the\n       * {@code delete} operator. The {@code delete} operator returns\n       * whether the deletion succeeds at bringing about a state in\n       * which the deleted property is absent. The {@code delete}\n       * operator therefore returns true if the property was already\n       * absent, whereas this {@code delete} method returns false if\n       * the association was already absent.\n       */value:function remove(key){return this.delete___(key);},writable:true,configurable:true}});if(typeof HostWeakMap==='function'){(function(){// If we got here, then the platform has a WeakMap but we are concerned\n// that it may refuse to store some key types. Therefore, make a map\n// implementation which makes use of both as possible.\n// In this mode we are always using double maps, so we are not proxy-safe.\n// This combination does not occur in any known browser, but we had best\n// be safe.\nif(doubleWeakMapCheckSilentFailure&&typeof Proxy!=='undefined'){Proxy=undefined;}function DoubleWeakMap(){if(!(this instanceof OurWeakMap)){// approximate test for new ...()\ncalledAsFunctionWarning();}// Preferable, truly weak map.\nvar hmap=new HostWeakMap();// Our hidden-property-based pseudo-weak-map. Lazily initialized in the\n// 'set' implementation; thus we can avoid performing extra lookups if\n// we know all entries actually stored are entered in 'hmap'.\nvar omap=undefined;// Hidden-property maps are not compatible with proxies because proxies\n// can observe the hidden name and either accidentally expose it or fail\n// to allow the hidden property to be set. Therefore, we do not allow\n// arbitrary WeakMaps to switch to using hidden properties, but only\n// those which need the ability, and unprivileged code is not allowed\n// to set the flag.\n//\n// (Except in doubleWeakMapCheckSilentFailure mode in which case we\n// disable proxies.)\nvar enableSwitching=false;function dget(key,opt_default){if(omap){return hmap.has(key)?hmap.get(key):omap.get___(key,opt_default);}else{return hmap.get(key,opt_default);}}function dhas(key){return hmap.has(key)||(omap?omap.has___(key):false);}var dset;if(doubleWeakMapCheckSilentFailure){dset=function(key,value){hmap.set(key,value);if(!hmap.has(key)){if(!omap){omap=new OurWeakMap();}omap.set(key,value);}return this;};}else{dset=function(key,value){if(enableSwitching){try{hmap.set(key,value);}catch(e){if(!omap){omap=new OurWeakMap();}omap.set___(key,value);}}else{hmap.set(key,value);}return this;};}function ddelete(key){var result=!!hmap['delete'](key);if(omap){return omap.delete___(key)||result;}return result;}return Object.create(OurWeakMap.prototype,{get___:{value:constFunc(dget)},has___:{value:constFunc(dhas)},set___:{value:constFunc(dset)},delete___:{value:constFunc(ddelete)},permitHostObjects___:{value:constFunc(function(token){if(token===weakMapPermitHostObjects){enableSwitching=true;}else{throw new Error('bogus call to permitHostObjects___');}})}});}DoubleWeakMap.prototype=OurWeakMap.prototype;module.exports=DoubleWeakMap;// define .constructor to hide OurWeakMap ctor\nObject.defineProperty(WeakMap.prototype,'constructor',{value:WeakMap,enumerable:false,// as default .constructor is\nconfigurable:true,writable:true});})();}else{// There is no host WeakMap, so we must use the emulation.\n// Emulated WeakMaps are incompatible with native proxies (because proxies\n// can observe the hidden name), so we must disable Proxy usage (in\n// ArrayLike and Domado, currently).\nif(typeof Proxy!=='undefined'){Proxy=undefined;}module.exports=OurWeakMap;}})();/***/},/***/9222:/***/function(module,__unused_webpack_exports,__nested_webpack_require_886916__){var hiddenStore=__nested_webpack_require_886916__(7178);module.exports=createStore;function createStore(){var key={};return function(obj){if((typeof obj!=='object'||obj===null)&&typeof obj!=='function'){throw new Error('Weakmap-shim: Key must be object');}var store=obj.valueOf(key);return store&&store.identity===key?store:hiddenStore(obj,key);};}/***/},/***/7178:/***/function(module){module.exports=hiddenStore;function hiddenStore(obj,key){var store={identity:key};var valueOf=obj.valueOf;Object.defineProperty(obj,\"valueOf\",{value:function(value){return value!==key?valueOf.apply(this,arguments):store;},writable:true});return store;}/***/},/***/4037:/***/function(module,__unused_webpack_exports,__nested_webpack_require_887625__){// Original - @Gozola.\n// https://gist.github.com/Gozala/1269991\n// This is a reimplemented version (with a few bug fixes).\nvar createStore=__nested_webpack_require_887625__(9222);module.exports=weakMap;function weakMap(){var privates=createStore();return{'get':function(key,fallback){var store=privates(key);return store.hasOwnProperty('value')?store.value:fallback;},'set':function(key,value){privates(key).value=value;return this;},'has':function(key){return'value'in privates(key);},'delete':function(key){return delete privates(key).value;}};}/***/},/***/6183:/***/function(module){\"use strict\";function CWiseOp(){return function(SS,a0,t0,p0,Y0,Y1){var s0=SS[0],t0p0=t0[0],index=[0],q0=t0p0;p0|=0;var i0=0,d0s0=t0p0;for(i0=0;i0<s0;++i0){{var da=a0[p0]-Y1;var db=a0[p0+q0]-Y1;if(da>=0!==db>=0){Y0.push(index[0]+0.5+0.5*(da+db)/(da-db));}}p0+=d0s0;++index[0];}};}//Generates a cwise operator\nfunction generateCWiseOp(){return CWiseOp();}var compile=generateCWiseOp;function thunk(compile){var CACHED={};return function zeroCrossings_cwise_thunk(array0,scalar2,scalar3){var t0=array0.dtype,r0=array0.order,type=[t0,r0.join()].join(),proc=CACHED[type];if(!proc){CACHED[type]=proc=compile([t0,r0]);}return proc(array0.shape.slice(0),array0.data,array0.stride,array0.offset|0,scalar2,scalar3);};}function createThunk(proc){return thunk(compile.bind(undefined,proc));}function compileCwise(user_args){return createThunk({funcName:user_args.funcName});}module.exports=compileCwise({funcName:'zeroCrossings'});/***/},/***/9584:/***/function(module,__unused_webpack_exports,__nested_webpack_require_889201__){\"use strict\";module.exports=findZeroCrossings;var core=__nested_webpack_require_889201__(6183);function findZeroCrossings(array,level){var cross=[];level=+level||0.0;core(array.hi(array.shape[0]-1),cross,level);return cross;}/***/},/***/6601:/***/function(){/* (ignored) */ /***/}/******/};/************************************************************************/ /******/ // The module cache\n/******/var __webpack_module_cache__={};/******/ /******/ // The require function\n/******/function __nested_webpack_require_889692__(moduleId){/******/ // Check if module is in cache\n/******/var cachedModule=__webpack_module_cache__[moduleId];/******/if(cachedModule!==undefined){/******/return cachedModule.exports;/******/}/******/ // Create a new module (and put it into the cache)\n/******/var module=__webpack_module_cache__[moduleId]={/******/id:moduleId,/******/loaded:false,/******/exports:{}/******/};/******/ /******/ // Execute the module function\n/******/__webpack_modules__[moduleId].call(module.exports,module,module.exports,__nested_webpack_require_889692__);/******/ /******/ // Flag the module as loaded\n/******/module.loaded=true;/******/ /******/ // Return the exports of the module\n/******/return module.exports;/******/}/******/ /************************************************************************/ /******/ /* webpack/runtime/global */ /******/!function(){/******/__nested_webpack_require_889692__.g=function(){/******/if(typeof globalThis==='object')return globalThis;/******/try{/******/return this||new Function('return this')();/******/}catch(e){/******/if(typeof window==='object')return window;/******/}/******/}();/******/}();/******/ /******/ /* webpack/runtime/node module decorator */ /******/!function(){/******/__nested_webpack_require_889692__.nmd=function(module){/******/module.paths=[];/******/if(!module.children)module.children=[];/******/return module;/******/};/******/}();/******/ /************************************************************************/ /******/ /******/ // startup\n/******/ // Load entry module and return exports\n/******/ // This entry module is referenced by other modules so it can't be inlined\n/******/var __webpack_exports__=__nested_webpack_require_889692__(7386);/******/ /******/return __webpack_exports__;/******/}());});\n\n/***/ }),\n\n/***/ 12856:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_4546747__) {\n\n\"use strict\";\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _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); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar base64 = __nested_webpack_require_4546747__(95341);\nvar ieee754 = __nested_webpack_require_4546747__(95280);\nvar customInspectSymbol = typeof Symbol === 'function' && typeof Symbol['for'] === 'function' // eslint-disable-line dot-notation\n? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n: null;\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\nvar K_MAX_LENGTH = 0x7fffffff;\nexports.kMaxLength = K_MAX_LENGTH;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n *               implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && typeof console.error === 'function') {\n  console.error('This browser lacks typed array (Uint8Array) support which is required by ' + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.');\n}\nfunction typedArraySupport() {\n  // Can typed array instances can be augmented?\n  try {\n    var arr = new Uint8Array(1);\n    var proto = {\n      foo: function foo() {\n        return 42;\n      }\n    };\n    Object.setPrototypeOf(proto, Uint8Array.prototype);\n    Object.setPrototypeOf(arr, proto);\n    return arr.foo() === 42;\n  } catch (e) {\n    return false;\n  }\n}\nObject.defineProperty(Buffer.prototype, 'parent', {\n  enumerable: true,\n  get: function get() {\n    if (!Buffer.isBuffer(this)) return undefined;\n    return this.buffer;\n  }\n});\nObject.defineProperty(Buffer.prototype, 'offset', {\n  enumerable: true,\n  get: function get() {\n    if (!Buffer.isBuffer(this)) return undefined;\n    return this.byteOffset;\n  }\n});\nfunction createBuffer(length) {\n  if (length > K_MAX_LENGTH) {\n    throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"');\n  }\n  // Return an augmented `Uint8Array` instance\n  var buf = new Uint8Array(length);\n  Object.setPrototypeOf(buf, Buffer.prototype);\n  return buf;\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer(arg, encodingOrOffset, length) {\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new TypeError('The \"string\" argument must be of type string. Received type number');\n    }\n    return allocUnsafe(arg);\n  }\n  return from(arg, encodingOrOffset, length);\n}\nBuffer.poolSize = 8192; // not used by this implementation\n\nfunction from(value, encodingOrOffset, length) {\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset);\n  }\n  if (ArrayBuffer.isView(value)) {\n    return fromArrayView(value);\n  }\n  if (value == null) {\n    throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + _typeof(value));\n  }\n  if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n    return fromArrayBuffer(value, encodingOrOffset, length);\n  }\n  if (typeof SharedArrayBuffer !== 'undefined' && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n    return fromArrayBuffer(value, encodingOrOffset, length);\n  }\n  if (typeof value === 'number') {\n    throw new TypeError('The \"value\" argument must not be of type number. Received type number');\n  }\n  var valueOf = value.valueOf && value.valueOf();\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length);\n  }\n  var b = fromObject(value);\n  if (b) return b;\n  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === 'function') {\n    return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length);\n  }\n  throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + _typeof(value));\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(value, encodingOrOffset, length);\n};\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\nObject.setPrototypeOf(Buffer, Uint8Array);\nfunction assertSize(size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be of type number');\n  } else if (size < 0) {\n    throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"');\n  }\n}\nfunction alloc(size, fill, encoding) {\n  assertSize(size);\n  if (size <= 0) {\n    return createBuffer(size);\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpreted as a start offset.\n    return typeof encoding === 'string' ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);\n  }\n  return createBuffer(size);\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(size, fill, encoding);\n};\nfunction allocUnsafe(size) {\n  assertSize(size);\n  return createBuffer(size < 0 ? 0 : checked(size) | 0);\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(size);\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(size);\n};\nfunction fromString(string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8';\n  }\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('Unknown encoding: ' + encoding);\n  }\n  var length = byteLength(string, encoding) | 0;\n  var buf = createBuffer(length);\n  var actual = buf.write(string, encoding);\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    buf = buf.slice(0, actual);\n  }\n  return buf;\n}\nfunction fromArrayLike(array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0;\n  var buf = createBuffer(length);\n  for (var i = 0; i < length; i += 1) {\n    buf[i] = array[i] & 255;\n  }\n  return buf;\n}\nfunction fromArrayView(arrayView) {\n  if (isInstance(arrayView, Uint8Array)) {\n    var copy = new Uint8Array(arrayView);\n    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n  }\n  return fromArrayLike(arrayView);\n}\nfunction fromArrayBuffer(array, byteOffset, length) {\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\"offset\" is outside of buffer bounds');\n  }\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\"length\" is outside of buffer bounds');\n  }\n  var buf;\n  if (byteOffset === undefined && length === undefined) {\n    buf = new Uint8Array(array);\n  } else if (length === undefined) {\n    buf = new Uint8Array(array, byteOffset);\n  } else {\n    buf = new Uint8Array(array, byteOffset, length);\n  }\n\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(buf, Buffer.prototype);\n  return buf;\n}\nfunction fromObject(obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0;\n    var buf = createBuffer(len);\n    if (buf.length === 0) {\n      return buf;\n    }\n    obj.copy(buf, 0, 0, len);\n    return buf;\n  }\n  if (obj.length !== undefined) {\n    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n      return createBuffer(0);\n    }\n    return fromArrayLike(obj);\n  }\n  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n    return fromArrayLike(obj.data);\n  }\n}\nfunction checked(length) {\n  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= K_MAX_LENGTH) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes');\n  }\n  return length | 0;\n}\nfunction SlowBuffer(length) {\n  if (+length != length) {\n    // eslint-disable-line eqeqeq\n    length = 0;\n  }\n  return Buffer.alloc(+length);\n}\nBuffer.isBuffer = function isBuffer(b) {\n  return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false\n};\n\nBuffer.compare = function compare(a, b) {\n  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');\n  }\n  if (a === b) return 0;\n  var x = a.length;\n  var y = b.length;\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i];\n      y = b[i];\n      break;\n    }\n  }\n  if (x < y) return -1;\n  if (y < x) return 1;\n  return 0;\n};\nBuffer.isEncoding = function isEncoding(encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true;\n    default:\n      return false;\n  }\n};\nBuffer.concat = function concat(list, length) {\n  if (!Array.isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers');\n  }\n  if (list.length === 0) {\n    return Buffer.alloc(0);\n  }\n  var i;\n  if (length === undefined) {\n    length = 0;\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length;\n    }\n  }\n  var buffer = Buffer.allocUnsafe(length);\n  var pos = 0;\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i];\n    if (isInstance(buf, Uint8Array)) {\n      if (pos + buf.length > buffer.length) {\n        if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n        buf.copy(buffer, pos);\n      } else {\n        Uint8Array.prototype.set.call(buffer, buf, pos);\n      }\n    } else if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers');\n    } else {\n      buf.copy(buffer, pos);\n    }\n    pos += buf.length;\n  }\n  return buffer;\n};\nfunction byteLength(string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length;\n  }\n  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n    return string.byteLength;\n  }\n  if (typeof string !== 'string') {\n    throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' + 'Received type ' + _typeof(string));\n  }\n  var len = string.length;\n  var mustMatch = arguments.length > 2 && arguments[2] === true;\n  if (!mustMatch && len === 0) return 0;\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false;\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len;\n      case 'utf8':\n      case 'utf-8':\n        return utf8ToBytes(string).length;\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2;\n      case 'hex':\n        return len >>> 1;\n      case 'base64':\n        return base64ToBytes(string).length;\n      default:\n        if (loweredCase) {\n          return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8\n        }\n\n        encoding = ('' + encoding).toLowerCase();\n        loweredCase = true;\n    }\n  }\n}\nBuffer.byteLength = byteLength;\nfunction slowToString(encoding, start, end) {\n  var loweredCase = false;\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0;\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return '';\n  }\n  if (end === undefined || end > this.length) {\n    end = this.length;\n  }\n  if (end <= 0) {\n    return '';\n  }\n\n  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0;\n  start >>>= 0;\n  if (end <= start) {\n    return '';\n  }\n  if (!encoding) encoding = 'utf8';\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end);\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end);\n      case 'ascii':\n        return asciiSlice(this, start, end);\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end);\n      case 'base64':\n        return base64Slice(this, start, end);\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end);\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n        encoding = (encoding + '').toLowerCase();\n        loweredCase = true;\n    }\n  }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true;\nfunction swap(b, n, m) {\n  var i = b[n];\n  b[n] = b[m];\n  b[m] = i;\n}\nBuffer.prototype.swap16 = function swap16() {\n  var len = this.length;\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits');\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1);\n  }\n  return this;\n};\nBuffer.prototype.swap32 = function swap32() {\n  var len = this.length;\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits');\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3);\n    swap(this, i + 1, i + 2);\n  }\n  return this;\n};\nBuffer.prototype.swap64 = function swap64() {\n  var len = this.length;\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits');\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7);\n    swap(this, i + 1, i + 6);\n    swap(this, i + 2, i + 5);\n    swap(this, i + 3, i + 4);\n  }\n  return this;\n};\nBuffer.prototype.toString = function toString() {\n  var length = this.length;\n  if (length === 0) return '';\n  if (arguments.length === 0) return utf8Slice(this, 0, length);\n  return slowToString.apply(this, arguments);\n};\nBuffer.prototype.toLocaleString = Buffer.prototype.toString;\nBuffer.prototype.equals = function equals(b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');\n  if (this === b) return true;\n  return Buffer.compare(this, b) === 0;\n};\nBuffer.prototype.inspect = function inspect() {\n  var str = '';\n  var max = exports.INSPECT_MAX_BYTES;\n  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();\n  if (this.length > max) str += ' ... ';\n  return '<Buffer ' + str + '>';\n};\nif (customInspectSymbol) {\n  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n}\nBuffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n  if (isInstance(target, Uint8Array)) {\n    target = Buffer.from(target, target.offset, target.byteLength);\n  }\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. ' + 'Received type ' + _typeof(target));\n  }\n  if (start === undefined) {\n    start = 0;\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0;\n  }\n  if (thisStart === undefined) {\n    thisStart = 0;\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length;\n  }\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index');\n  }\n  if (thisStart >= thisEnd && start >= end) {\n    return 0;\n  }\n  if (thisStart >= thisEnd) {\n    return -1;\n  }\n  if (start >= end) {\n    return 1;\n  }\n  start >>>= 0;\n  end >>>= 0;\n  thisStart >>>= 0;\n  thisEnd >>>= 0;\n  if (this === target) return 0;\n  var x = thisEnd - thisStart;\n  var y = end - start;\n  var len = Math.min(x, y);\n  var thisCopy = this.slice(thisStart, thisEnd);\n  var targetCopy = target.slice(start, end);\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i];\n      y = targetCopy[i];\n      break;\n    }\n  }\n  if (x < y) return -1;\n  if (y < x) return 1;\n  return 0;\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1;\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset;\n    byteOffset = 0;\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff;\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000;\n  }\n  byteOffset = +byteOffset; // Coerce to Number.\n  if (numberIsNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : buffer.length - 1;\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1;else byteOffset = buffer.length - 1;\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0;else return -1;\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding);\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1;\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n  } else if (typeof val === 'number') {\n    val = val & 0xFF; // Search for a byte value [0-255]\n    if (typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n      }\n    }\n    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n  }\n  throw new TypeError('val must be string, number or Buffer');\n}\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1;\n  var arrLength = arr.length;\n  var valLength = val.length;\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase();\n    if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1;\n      }\n      indexSize = 2;\n      arrLength /= 2;\n      valLength /= 2;\n      byteOffset /= 2;\n    }\n  }\n  function read(buf, i) {\n    if (indexSize === 1) {\n      return buf[i];\n    } else {\n      return buf.readUInt16BE(i * indexSize);\n    }\n  }\n  var i;\n  if (dir) {\n    var foundIndex = -1;\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i;\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex;\n        foundIndex = -1;\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true;\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false;\n          break;\n        }\n      }\n      if (found) return i;\n    }\n  }\n  return -1;\n}\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1;\n};\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\nfunction hexWrite(buf, string, offset, length) {\n  offset = Number(offset) || 0;\n  var remaining = buf.length - offset;\n  if (!length) {\n    length = remaining;\n  } else {\n    length = Number(length);\n    if (length > remaining) {\n      length = remaining;\n    }\n  }\n  var strLen = string.length;\n  if (length > strLen / 2) {\n    length = strLen / 2;\n  }\n  var i;\n  for (i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16);\n    if (numberIsNaN(parsed)) return i;\n    buf[offset + i] = parsed;\n  }\n  return i;\n}\nfunction utf8Write(buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\nfunction asciiWrite(buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\nfunction base64Write(buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\nfunction ucs2Write(buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\nBuffer.prototype.write = function write(string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8';\n    length = this.length;\n    offset = 0;\n    // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset;\n    length = this.length;\n    offset = 0;\n    // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset >>> 0;\n    if (isFinite(length)) {\n      length = length >>> 0;\n      if (encoding === undefined) encoding = 'utf8';\n    } else {\n      encoding = length;\n      length = undefined;\n    }\n  } else {\n    throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n  }\n  var remaining = this.length - offset;\n  if (length === undefined || length > remaining) length = remaining;\n  if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds');\n  }\n  if (!encoding) encoding = 'utf8';\n  var loweredCase = false;\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length);\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length);\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return asciiWrite(this, string, offset, length);\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length);\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length);\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n        encoding = ('' + encoding).toLowerCase();\n        loweredCase = true;\n    }\n  }\n};\nBuffer.prototype.toJSON = function toJSON() {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  };\n};\nfunction base64Slice(buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf);\n  } else {\n    return base64.fromByteArray(buf.slice(start, end));\n  }\n}\nfunction utf8Slice(buf, start, end) {\n  end = Math.min(buf.length, end);\n  var res = [];\n  var i = start;\n  while (i < end) {\n    var firstByte = buf[i];\n    var codePoint = null;\n    var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;\n    if (i + bytesPerSequence <= end) {\n      var secondByte = void 0,\n        thirdByte = void 0,\n        fourthByte = void 0,\n        tempCodePoint = void 0;\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte;\n          }\n          break;\n        case 2:\n          secondByte = buf[i + 1];\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint;\n            }\n          }\n          break;\n        case 3:\n          secondByte = buf[i + 1];\n          thirdByte = buf[i + 2];\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint;\n            }\n          }\n          break;\n        case 4:\n          secondByte = buf[i + 1];\n          thirdByte = buf[i + 2];\n          fourthByte = buf[i + 3];\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint;\n            }\n          }\n      }\n    }\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD;\n      bytesPerSequence = 1;\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000;\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n      codePoint = 0xDC00 | codePoint & 0x3FF;\n    }\n    res.push(codePoint);\n    i += bytesPerSequence;\n  }\n  return decodeCodePointsArray(res);\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\nfunction decodeCodePointsArray(codePoints) {\n  var len = codePoints.length;\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = '';\n  var i = 0;\n  while (i < len) {\n    res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n  }\n  return res;\n}\nfunction asciiSlice(buf, start, end) {\n  var ret = '';\n  end = Math.min(buf.length, end);\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F);\n  }\n  return ret;\n}\nfunction latin1Slice(buf, start, end) {\n  var ret = '';\n  end = Math.min(buf.length, end);\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i]);\n  }\n  return ret;\n}\nfunction hexSlice(buf, start, end) {\n  var len = buf.length;\n  if (!start || start < 0) start = 0;\n  if (!end || end < 0 || end > len) end = len;\n  var out = '';\n  for (var i = start; i < end; ++i) {\n    out += hexSliceLookupTable[buf[i]];\n  }\n  return out;\n}\nfunction utf16leSlice(buf, start, end) {\n  var bytes = buf.slice(start, end);\n  var res = '';\n  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n  for (var i = 0; i < bytes.length - 1; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n  }\n  return res;\n}\nBuffer.prototype.slice = function slice(start, end) {\n  var len = this.length;\n  start = ~~start;\n  end = end === undefined ? len : ~~end;\n  if (start < 0) {\n    start += len;\n    if (start < 0) start = 0;\n  } else if (start > len) {\n    start = len;\n  }\n  if (end < 0) {\n    end += len;\n    if (end < 0) end = 0;\n  } else if (end > len) {\n    end = len;\n  }\n  if (end < start) end = start;\n  var newBuf = this.subarray(start, end);\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(newBuf, Buffer.prototype);\n  return newBuf;\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset(offset, ext, length) {\n  if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');\n}\nBuffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n  offset = offset >>> 0;\n  byteLength = byteLength >>> 0;\n  if (!noAssert) checkOffset(offset, byteLength, this.length);\n  var val = this[offset];\n  var mul = 1;\n  var i = 0;\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul;\n  }\n  return val;\n};\nBuffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n  offset = offset >>> 0;\n  byteLength = byteLength >>> 0;\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length);\n  }\n  var val = this[offset + --byteLength];\n  var mul = 1;\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul;\n  }\n  return val;\n};\nBuffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 1, this.length);\n  return this[offset];\n};\nBuffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 2, this.length);\n  return this[offset] | this[offset + 1] << 8;\n};\nBuffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 2, this.length);\n  return this[offset] << 8 | this[offset + 1];\n};\nBuffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 4, this.length);\n  return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;\n};\nBuffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 4, this.length);\n  return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {\n  offset = offset >>> 0;\n  validateNumber(offset, 'offset');\n  var first = this[offset];\n  var last = this[offset + 7];\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8);\n  }\n  var lo = first + this[++offset] * Math.pow(2, 8) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 24);\n  var hi = this[++offset] + this[++offset] * Math.pow(2, 8) + this[++offset] * Math.pow(2, 16) + last * Math.pow(2, 24);\n  return BigInt(lo) + (BigInt(hi) << BigInt(32));\n});\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {\n  offset = offset >>> 0;\n  validateNumber(offset, 'offset');\n  var first = this[offset];\n  var last = this[offset + 7];\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8);\n  }\n  var hi = first * Math.pow(2, 24) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 8) + this[++offset];\n  var lo = this[++offset] * Math.pow(2, 24) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 8) + last;\n  return (BigInt(hi) << BigInt(32)) + BigInt(lo);\n});\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n  offset = offset >>> 0;\n  byteLength = byteLength >>> 0;\n  if (!noAssert) checkOffset(offset, byteLength, this.length);\n  var val = this[offset];\n  var mul = 1;\n  var i = 0;\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul;\n  }\n  mul *= 0x80;\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n  return val;\n};\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n  offset = offset >>> 0;\n  byteLength = byteLength >>> 0;\n  if (!noAssert) checkOffset(offset, byteLength, this.length);\n  var i = byteLength;\n  var mul = 1;\n  var val = this[offset + --i];\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul;\n  }\n  mul *= 0x80;\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n  return val;\n};\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 1, this.length);\n  if (!(this[offset] & 0x80)) return this[offset];\n  return (0xff - this[offset] + 1) * -1;\n};\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 2, this.length);\n  var val = this[offset] | this[offset + 1] << 8;\n  return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 2, this.length);\n  var val = this[offset + 1] | this[offset] << 8;\n  return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 4, this.length);\n  return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 4, this.length);\n  return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {\n  offset = offset >>> 0;\n  validateNumber(offset, 'offset');\n  var first = this[offset];\n  var last = this[offset + 7];\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8);\n  }\n  var val = this[offset + 4] + this[offset + 5] * Math.pow(2, 8) + this[offset + 6] * Math.pow(2, 16) + (last << 24); // Overflow\n\n  return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * Math.pow(2, 8) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 24));\n});\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {\n  offset = offset >>> 0;\n  validateNumber(offset, 'offset');\n  var first = this[offset];\n  var last = this[offset + 7];\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8);\n  }\n  var val = (first << 24) +\n  // Overflow\n  this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 8) + this[++offset];\n  return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * Math.pow(2, 24) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 8) + last);\n});\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 4, this.length);\n  return ieee754.read(this, offset, true, 23, 4);\n};\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 4, this.length);\n  return ieee754.read(this, offset, false, 23, 4);\n};\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 8, this.length);\n  return ieee754.read(this, offset, true, 52, 8);\n};\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 8, this.length);\n  return ieee754.read(this, offset, false, 52, 8);\n};\nfunction checkInt(buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds');\n  if (offset + ext > buf.length) throw new RangeError('Index out of range');\n}\nBuffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  byteLength = byteLength >>> 0;\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n    checkInt(this, value, offset, byteLength, maxBytes, 0);\n  }\n  var mul = 1;\n  var i = 0;\n  this[offset] = value & 0xFF;\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = value / mul & 0xFF;\n  }\n  return offset + byteLength;\n};\nBuffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  byteLength = byteLength >>> 0;\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n    checkInt(this, value, offset, byteLength, maxBytes, 0);\n  }\n  var i = byteLength - 1;\n  var mul = 1;\n  this[offset + i] = value & 0xFF;\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = value / mul & 0xFF;\n  }\n  return offset + byteLength;\n};\nBuffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n  this[offset] = value & 0xff;\n  return offset + 1;\n};\nBuffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n  this[offset] = value & 0xff;\n  this[offset + 1] = value >>> 8;\n  return offset + 2;\n};\nBuffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n  this[offset] = value >>> 8;\n  this[offset + 1] = value & 0xff;\n  return offset + 2;\n};\nBuffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n  this[offset + 3] = value >>> 24;\n  this[offset + 2] = value >>> 16;\n  this[offset + 1] = value >>> 8;\n  this[offset] = value & 0xff;\n  return offset + 4;\n};\nBuffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n  this[offset] = value >>> 24;\n  this[offset + 1] = value >>> 16;\n  this[offset + 2] = value >>> 8;\n  this[offset + 3] = value & 0xff;\n  return offset + 4;\n};\nfunction wrtBigUInt64LE(buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7);\n  var lo = Number(value & BigInt(0xffffffff));\n  buf[offset++] = lo;\n  lo = lo >> 8;\n  buf[offset++] = lo;\n  lo = lo >> 8;\n  buf[offset++] = lo;\n  lo = lo >> 8;\n  buf[offset++] = lo;\n  var hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n  buf[offset++] = hi;\n  hi = hi >> 8;\n  buf[offset++] = hi;\n  hi = hi >> 8;\n  buf[offset++] = hi;\n  hi = hi >> 8;\n  buf[offset++] = hi;\n  return offset;\n}\nfunction wrtBigUInt64BE(buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7);\n  var lo = Number(value & BigInt(0xffffffff));\n  buf[offset + 7] = lo;\n  lo = lo >> 8;\n  buf[offset + 6] = lo;\n  lo = lo >> 8;\n  buf[offset + 5] = lo;\n  lo = lo >> 8;\n  buf[offset + 4] = lo;\n  var hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n  buf[offset + 3] = hi;\n  hi = hi >> 8;\n  buf[offset + 2] = hi;\n  hi = hi >> 8;\n  buf[offset + 1] = hi;\n  hi = hi >> 8;\n  buf[offset] = hi;\n  return offset + 8;\n}\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'));\n});\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'));\n});\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1);\n    checkInt(this, value, offset, byteLength, limit - 1, -limit);\n  }\n  var i = 0;\n  var mul = 1;\n  var sub = 0;\n  this[offset] = value & 0xFF;\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1;\n    }\n    this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n  }\n  return offset + byteLength;\n};\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1);\n    checkInt(this, value, offset, byteLength, limit - 1, -limit);\n  }\n  var i = byteLength - 1;\n  var mul = 1;\n  var sub = 0;\n  this[offset + i] = value & 0xFF;\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1;\n    }\n    this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n  }\n  return offset + byteLength;\n};\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n  if (value < 0) value = 0xff + value + 1;\n  this[offset] = value & 0xff;\n  return offset + 1;\n};\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n  this[offset] = value & 0xff;\n  this[offset + 1] = value >>> 8;\n  return offset + 2;\n};\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n  this[offset] = value >>> 8;\n  this[offset + 1] = value & 0xff;\n  return offset + 2;\n};\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n  this[offset] = value & 0xff;\n  this[offset + 1] = value >>> 8;\n  this[offset + 2] = value >>> 16;\n  this[offset + 3] = value >>> 24;\n  return offset + 4;\n};\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n  if (value < 0) value = 0xffffffff + value + 1;\n  this[offset] = value >>> 24;\n  this[offset + 1] = value >>> 16;\n  this[offset + 2] = value >>> 8;\n  this[offset + 3] = value & 0xff;\n  return offset + 4;\n};\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'));\n});\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'));\n});\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range');\n  if (offset < 0) throw new RangeError('Index out of range');\n}\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4);\n  return offset + 4;\n}\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert);\n};\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert);\n};\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8);\n  return offset + 8;\n}\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert);\n};\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert);\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer');\n  if (!start) start = 0;\n  if (!end && end !== 0) end = this.length;\n  if (targetStart >= target.length) targetStart = target.length;\n  if (!targetStart) targetStart = 0;\n  if (end > 0 && end < start) end = start;\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0;\n  if (target.length === 0 || this.length === 0) return 0;\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds');\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('Index out of range');\n  if (end < 0) throw new RangeError('sourceEnd out of bounds');\n\n  // Are we oob?\n  if (end > this.length) end = this.length;\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start;\n  }\n  var len = end - start;\n  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n    // Use built-in when available, missing from IE11\n    this.copyWithin(targetStart, start, end);\n  } else {\n    Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);\n  }\n  return len;\n};\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start;\n      start = 0;\n      end = this.length;\n    } else if (typeof end === 'string') {\n      encoding = end;\n      end = this.length;\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string');\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding);\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0);\n      if (encoding === 'utf8' && code < 128 || encoding === 'latin1') {\n        // Fast path: If `val` fits into a single byte, use that numeric value.\n        val = code;\n      }\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255;\n  } else if (typeof val === 'boolean') {\n    val = Number(val);\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index');\n  }\n  if (end <= start) {\n    return this;\n  }\n  start = start >>> 0;\n  end = end === undefined ? this.length : end >>> 0;\n  if (!val) val = 0;\n  var i;\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val;\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);\n    var len = bytes.length;\n    if (len === 0) {\n      throw new TypeError('The value \"' + val + '\" is invalid for argument \"value\"');\n    }\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len];\n    }\n  }\n  return this;\n};\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nvar errors = {};\nfunction E(sym, getMessage, Base) {\n  errors[sym] = /*#__PURE__*/function (_Base) {\n    _inherits(NodeError, _Base);\n    var _super = _createSuper(NodeError);\n    function NodeError() {\n      var _this;\n      _classCallCheck(this, NodeError);\n      _this = _super.call(this);\n      Object.defineProperty(_assertThisInitialized(_this), 'message', {\n        value: getMessage.apply(_assertThisInitialized(_this), arguments),\n        writable: true,\n        configurable: true\n      });\n\n      // Add the error code to the name to include it in the stack trace.\n      _this.name = \"\".concat(_this.name, \" [\").concat(sym, \"]\");\n      // Access the stack to generate the error message including the error code\n      // from the name.\n      _this.stack; // eslint-disable-line no-unused-expressions\n      // Reset the name to the actual name.\n      delete _this.name;\n      return _this;\n    }\n    _createClass(NodeError, [{\n      key: \"code\",\n      get: function get() {\n        return sym;\n      },\n      set: function set(value) {\n        Object.defineProperty(this, 'code', {\n          configurable: true,\n          enumerable: true,\n          value: value,\n          writable: true\n        });\n      }\n    }, {\n      key: \"toString\",\n      value: function toString() {\n        return \"\".concat(this.name, \" [\").concat(sym, \"]: \").concat(this.message);\n      }\n    }]);\n    return NodeError;\n  }(Base);\n}\nE('ERR_BUFFER_OUT_OF_BOUNDS', function (name) {\n  if (name) {\n    return \"\".concat(name, \" is outside of buffer bounds\");\n  }\n  return 'Attempt to access memory outside buffer bounds';\n}, RangeError);\nE('ERR_INVALID_ARG_TYPE', function (name, actual) {\n  return \"The \\\"\".concat(name, \"\\\" argument must be of type number. Received type \").concat(_typeof(actual));\n}, TypeError);\nE('ERR_OUT_OF_RANGE', function (str, range, input) {\n  var msg = \"The value of \\\"\".concat(str, \"\\\" is out of range.\");\n  var received = input;\n  if (Number.isInteger(input) && Math.abs(input) > Math.pow(2, 32)) {\n    received = addNumericalSeparator(String(input));\n  } else if (typeof input === 'bigint') {\n    received = String(input);\n    if (input > Math.pow(BigInt(2), BigInt(32)) || input < -Math.pow(BigInt(2), BigInt(32))) {\n      received = addNumericalSeparator(received);\n    }\n    received += 'n';\n  }\n  msg += \" It must be \".concat(range, \". Received \").concat(received);\n  return msg;\n}, RangeError);\nfunction addNumericalSeparator(val) {\n  var res = '';\n  var i = val.length;\n  var start = val[0] === '-' ? 1 : 0;\n  for (; i >= start + 4; i -= 3) {\n    res = \"_\".concat(val.slice(i - 3, i)).concat(res);\n  }\n  return \"\".concat(val.slice(0, i)).concat(res);\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds(buf, offset, byteLength) {\n  validateNumber(offset, 'offset');\n  if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n    boundsError(offset, buf.length - (byteLength + 1));\n  }\n}\nfunction checkIntBI(value, min, max, buf, offset, byteLength) {\n  if (value > max || value < min) {\n    var n = typeof min === 'bigint' ? 'n' : '';\n    var range;\n    if (byteLength > 3) {\n      if (min === 0 || min === BigInt(0)) {\n        range = \">= 0\".concat(n, \" and < 2\").concat(n, \" ** \").concat((byteLength + 1) * 8).concat(n);\n      } else {\n        range = \">= -(2\".concat(n, \" ** \").concat((byteLength + 1) * 8 - 1).concat(n, \") and < 2 ** \") + \"\".concat((byteLength + 1) * 8 - 1).concat(n);\n      }\n    } else {\n      range = \">= \".concat(min).concat(n, \" and <= \").concat(max).concat(n);\n    }\n    throw new errors.ERR_OUT_OF_RANGE('value', range, value);\n  }\n  checkBounds(buf, offset, byteLength);\n}\nfunction validateNumber(value, name) {\n  if (typeof value !== 'number') {\n    throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value);\n  }\n}\nfunction boundsError(value, length, type) {\n  if (Math.floor(value) !== value) {\n    validateNumber(value, type);\n    throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value);\n  }\n  if (length < 0) {\n    throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n  }\n  throw new errors.ERR_OUT_OF_RANGE(type || 'offset', \">= \".concat(type ? 1 : 0, \" and <= \").concat(length), value);\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\nfunction base64clean(str) {\n  // Node takes equal signs as end of the Base64 encoding\n  str = str.split('=')[0];\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = str.trim().replace(INVALID_BASE64_RE, '');\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return '';\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '=';\n  }\n  return str;\n}\nfunction utf8ToBytes(string, units) {\n  units = units || Infinity;\n  var codePoint;\n  var length = string.length;\n  var leadSurrogate = null;\n  var bytes = [];\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i);\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n          continue;\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n          continue;\n        }\n\n        // valid lead\n        leadSurrogate = codePoint;\n        continue;\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n        leadSurrogate = codePoint;\n        continue;\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n    }\n    leadSurrogate = null;\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break;\n      bytes.push(codePoint);\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break;\n      bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break;\n      bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break;\n      bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n    } else {\n      throw new Error('Invalid code point');\n    }\n  }\n  return bytes;\n}\nfunction asciiToBytes(str) {\n  var byteArray = [];\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF);\n  }\n  return byteArray;\n}\nfunction utf16leToBytes(str, units) {\n  var c, hi, lo;\n  var byteArray = [];\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break;\n    c = str.charCodeAt(i);\n    hi = c >> 8;\n    lo = c % 256;\n    byteArray.push(lo);\n    byteArray.push(hi);\n  }\n  return byteArray;\n}\nfunction base64ToBytes(str) {\n  return base64.toByteArray(base64clean(str));\n}\nfunction blitBuffer(src, dst, offset, length) {\n  var i;\n  for (i = 0; i < length; ++i) {\n    if (i + offset >= dst.length || i >= src.length) break;\n    dst[i + offset] = src[i];\n  }\n  return i;\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance(obj, type) {\n  return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;\n}\nfunction numberIsNaN(obj) {\n  // For IE11 support\n  return obj !== obj; // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = function () {\n  var alphabet = '0123456789abcdef';\n  var table = new Array(256);\n  for (var i = 0; i < 16; ++i) {\n    var i16 = i * 16;\n    for (var j = 0; j < 16; ++j) {\n      table[i16 + j] = alphabet[i] + alphabet[j];\n    }\n  }\n  return table;\n}();\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod(fn) {\n  return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn;\n}\nfunction BufferBigIntNotDefined() {\n  throw new Error('BigInt not supported');\n}\n\n/***/ }),\n\n/***/ 35791:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = isMobile;\nmodule.exports.isMobile = isMobile;\nmodule.exports[\"default\"] = isMobile;\nvar mobileRE = /(android|bb\\d+|meego).+mobile|armv7l|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|samsungbrowser|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i;\nvar notMobileRE = /CrOS/;\nvar tabletRE = /android|ipad|playbook|silk/i;\nfunction isMobile(opts) {\n  if (!opts) opts = {};\n  var ua = opts.ua;\n  if (!ua && typeof navigator !== 'undefined') ua = navigator.userAgent;\n  if (ua && ua.headers && typeof ua.headers['user-agent'] === 'string') {\n    ua = ua.headers['user-agent'];\n  }\n  if (typeof ua !== 'string') return false;\n  var result = mobileRE.test(ua) && !notMobileRE.test(ua) || !!opts.tablet && tabletRE.test(ua);\n  if (!result && opts.tablet && opts.featureDetect && navigator && navigator.maxTouchPoints > 1 && ua.indexOf('Macintosh') !== -1 && ua.indexOf('Safari') !== -1) {\n    result = true;\n  }\n  return result;\n}\n\n/***/ }),\n\n/***/ 86781:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_4610266__) {\n\n\"use strict\";\n__nested_webpack_require_4610266__.r(__webpack_exports__);\n/* harmony export */ __nested_webpack_require_4610266__.d(__webpack_exports__, {\n/* harmony export */   \"sankeyCenter\": function() { return /* binding */ center; },\n/* harmony export */   \"sankeyCircular\": function() { return /* binding */ sankeyCircular; },\n/* harmony export */   \"sankeyJustify\": function() { return /* binding */ justify; },\n/* harmony export */   \"sankeyLeft\": function() { return /* binding */ left; },\n/* harmony export */   \"sankeyRight\": function() { return /* binding */ right; }\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_4610266__(33064);\n/* harmony import */ var d3_collection__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_4610266__(15140);\n/* harmony import */ var d3_shape__WEBPACK_IMPORTED_MODULE_3__ = __nested_webpack_require_4610266__(45879);\n/* harmony import */ var elementary_circuits_directed_graph__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_4610266__(2502);\n/* harmony import */ var elementary_circuits_directed_graph__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nested_webpack_require_4610266__.n(elementary_circuits_directed_graph__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n\n\n// For a given link, return the target node's depth\nfunction targetDepth(d) {\n  return d.target.depth;\n}\n\n// The depth of a node when the nodeAlign (align) is set to 'left'\nfunction left(node) {\n  return node.depth;\n}\n\n// The depth of a node when the nodeAlign (align) is set to 'right'\nfunction right(node, n) {\n  return n - 1 - node.height;\n}\n\n// The depth of a node when the nodeAlign (align) is set to 'justify'\nfunction justify(node, n) {\n  return node.sourceLinks.length ? node.depth : n - 1;\n}\n\n// The depth of a node when the nodeAlign (align) is set to 'center'\nfunction center(node) {\n  return node.targetLinks.length ? node.depth : node.sourceLinks.length ? (0,d3_array__WEBPACK_IMPORTED_MODULE_0__/* .min */ .VV)(node.sourceLinks, targetDepth) - 1 : 0;\n}\n\n// returns a function, using the parameter given to the sankey setting\nfunction constant(x) {\n  return function () {\n    return x;\n  };\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n/// https://github.com/tomshanley/d3-sankeyCircular-circular\n\n// sort links' breadth (ie top to bottom in a column), based on their source nodes' breadths\nfunction ascendingSourceBreadth(a, b) {\n  return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\n\n// sort links' breadth (ie top to bottom in a column), based on their target nodes' breadths\nfunction ascendingTargetBreadth(a, b) {\n  return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\n\n// sort nodes' breadth (ie top to bottom in a column)\n// if both nodes have circular links, or both don't have circular links, then sort by the top (y0) of the node\n// else push nodes that have top circular links to the top, and nodes that have bottom circular links to the bottom\nfunction ascendingBreadth(a, b) {\n  if (a.partOfCycle === b.partOfCycle) {\n    return a.y0 - b.y0;\n  } else {\n    if (a.circularLinkType === 'top' || b.circularLinkType === 'bottom') {\n      return -1;\n    } else {\n      return 1;\n    }\n  }\n}\n\n// return the value of a node or link\nfunction value(d) {\n  return d.value;\n}\n\n// return the vertical center of a node\nfunction nodeCenter(node) {\n  return (node.y0 + node.y1) / 2;\n}\n\n// return the vertical center of a link's source node\nfunction linkSourceCenter(link) {\n  return nodeCenter(link.source);\n}\n\n// return the vertical center of a link's target node\nfunction linkTargetCenter(link) {\n  return nodeCenter(link.target);\n}\n\n// Return the default value for ID for node, d.index\nfunction defaultId(d) {\n  return d.index;\n}\n\n// Return the default object the graph's nodes, graph.nodes\nfunction defaultNodes(graph) {\n  return graph.nodes;\n}\n\n// Return the default object the graph's nodes, graph.links\nfunction defaultLinks(graph) {\n  return graph.links;\n}\n\n// Return the node from the collection that matches the provided ID, or throw an error if no match\nfunction find(nodeById, id) {\n  var node = nodeById.get(id);\n  if (!node) throw new Error('missing: ' + id);\n  return node;\n}\n\nfunction getNodeID(node, id) {\n  return id(node);\n}\n\n// The main sankeyCircular functions\n\n// Some constants for circular link calculations\nvar verticalMargin = 25;\nvar baseRadius = 10;\nvar scale = 0.3; //Possibly let user control this, although anything over 0.5 starts to get too cramped\n\nfunction sankeyCircular () {\n  // Set the default values\n  var x0 = 0,\n      y0 = 0,\n      x1 = 1,\n      y1 = 1,\n      // extent\n  dx = 24,\n      // nodeWidth\n  py,\n      // nodePadding, for vertical postioning\n  id = defaultId,\n      align = justify,\n      nodes = defaultNodes,\n      links = defaultLinks,\n      iterations = 32,\n      circularLinkGap = 2,\n      paddingRatio,\n      sortNodes = null;\n\n  function sankeyCircular() {\n    var graph = {\n      nodes: nodes.apply(null, arguments),\n      links: links.apply(null, arguments)\n\n      // Process the graph's nodes and links, setting their positions\n\n      // 1.  Associate the nodes with their respective links, and vice versa\n    };computeNodeLinks(graph);\n\n    // 2.  Determine which links result in a circular path in the graph\n    identifyCircles(graph, id, sortNodes);\n\n    // 4. Calculate the nodes' values, based on the values of the incoming and outgoing links\n    computeNodeValues(graph);\n\n    // 5.  Calculate the nodes' depth based on the incoming and outgoing links\n    //     Sets the nodes':\n    //     - depth:  the depth in the graph\n    //     - column: the depth (0, 1, 2, etc), as is relates to visual position from left to right\n    //     - x0, x1: the x coordinates, as is relates to visual position from left to right\n    computeNodeDepths(graph);\n\n    // 3.  Determine how the circular links will be drawn,\n    //     either travelling back above the main chart (\"top\")\n    //     or below the main chart (\"bottom\")\n    selectCircularLinkTypes(graph, id);\n\n    // 6.  Calculate the nodes' and links' vertical position within their respective column\n    //     Also readjusts sankeyCircular size if circular links are needed, and node x's\n    computeNodeBreadths(graph, iterations, id);\n    computeLinkBreadths(graph);\n\n    // 7.  Sort links per node, based on the links' source/target nodes' breadths\n    // 8.  Adjust nodes that overlap links that span 2+ columns\n    var linkSortingIterations = 4; //Possibly let user control this number, like the iterations over node placement\n    for (var iteration = 0; iteration < linkSortingIterations; iteration++) {\n\n      sortSourceLinks(graph, y1, id);\n      sortTargetLinks(graph, y1, id);\n      resolveNodeLinkOverlaps(graph, y0, y1, id);\n      sortSourceLinks(graph, y1, id);\n      sortTargetLinks(graph, y1, id);\n    }\n\n    // 8.1  Adjust node and link positions back to fill height of chart area if compressed\n    fillHeight(graph, y0, y1);\n\n    // 9. Calculate visually appealling path for the circular paths, and create the \"d\" string\n    addCircularPathData(graph, circularLinkGap, y1, id);\n\n    return graph;\n  } // end of sankeyCircular function\n\n\n  // Set the sankeyCircular parameters\n  // nodeID, nodeAlign, nodeWidth, nodePadding, nodes, links, size, extent, iterations, nodePaddingRatio, circularLinkGap\n  sankeyCircular.nodeId = function (_) {\n    return arguments.length ? (id = typeof _ === 'function' ? _ : constant(_), sankeyCircular) : id;\n  };\n\n  sankeyCircular.nodeAlign = function (_) {\n    return arguments.length ? (align = typeof _ === 'function' ? _ : constant(_), sankeyCircular) : align;\n  };\n\n  sankeyCircular.nodeWidth = function (_) {\n    return arguments.length ? (dx = +_, sankeyCircular) : dx;\n  };\n\n  sankeyCircular.nodePadding = function (_) {\n    return arguments.length ? (py = +_, sankeyCircular) : py;\n  };\n\n  sankeyCircular.nodes = function (_) {\n    return arguments.length ? (nodes = typeof _ === 'function' ? _ : constant(_), sankeyCircular) : nodes;\n  };\n\n  sankeyCircular.links = function (_) {\n    return arguments.length ? (links = typeof _ === 'function' ? _ : constant(_), sankeyCircular) : links;\n  };\n\n  sankeyCircular.size = function (_) {\n    return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankeyCircular) : [x1 - x0, y1 - y0];\n  };\n\n  sankeyCircular.extent = function (_) {\n    return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankeyCircular) : [[x0, y0], [x1, y1]];\n  };\n\n  sankeyCircular.iterations = function (_) {\n    return arguments.length ? (iterations = +_, sankeyCircular) : iterations;\n  };\n\n  sankeyCircular.circularLinkGap = function (_) {\n    return arguments.length ? (circularLinkGap = +_, sankeyCircular) : circularLinkGap;\n  };\n\n  sankeyCircular.nodePaddingRatio = function (_) {\n    return arguments.length ? (paddingRatio = +_, sankeyCircular) : paddingRatio;\n  };\n\n  sankeyCircular.sortNodes = function (_) {\n    return arguments.length ? (sortNodes = _, sankeyCircular) : sortNodes;\n  };\n\n  sankeyCircular.update = function (graph) {\n    // 5.  Calculate the nodes' depth based on the incoming and outgoing links\n    //     Sets the nodes':\n    //     - depth:  the depth in the graph\n    //     - column: the depth (0, 1, 2, etc), as is relates to visual position from left to right\n    //     - x0, x1: the x coordinates, as is relates to visual position from left to right\n    // computeNodeDepths(graph)\n\n    // 3.  Determine how the circular links will be drawn,\n    //     either travelling back above the main chart (\"top\")\n    //     or below the main chart (\"bottom\")\n    selectCircularLinkTypes(graph, id);\n\n    // 6.  Calculate the nodes' and links' vertical position within their respective column\n    //     Also readjusts sankeyCircular size if circular links are needed, and node x's\n    // computeNodeBreadths(graph, iterations, id)\n    computeLinkBreadths(graph);\n\n    // Force position of circular link type based on position\n    graph.links.forEach(function (link) {\n      if (link.circular) {\n        link.circularLinkType = link.y0 + link.y1 < y1 ? 'top' : 'bottom';\n\n        link.source.circularLinkType = link.circularLinkType;\n        link.target.circularLinkType = link.circularLinkType;\n      }\n    });\n\n    sortSourceLinks(graph, y1, id, false); // Sort links but do not move nodes\n    sortTargetLinks(graph, y1, id);\n\n    // 7.  Sort links per node, based on the links' source/target nodes' breadths\n    // 8.  Adjust nodes that overlap links that span 2+ columns\n    // var linkSortingIterations = 4; //Possibly let user control this number, like the iterations over node placement\n    // for (var iteration = 0; iteration < linkSortingIterations; iteration++) {\n    //\n    //   sortSourceLinks(graph, y1, id)\n    //   sortTargetLinks(graph, y1, id)\n    //   resolveNodeLinkOverlaps(graph, y0, y1, id)\n    //   sortSourceLinks(graph, y1, id)\n    //   sortTargetLinks(graph, y1, id)\n    //\n    // }\n\n    // 8.1  Adjust node and link positions back to fill height of chart area if compressed\n    // fillHeight(graph, y0, y1)\n\n    // 9. Calculate visually appealling path for the circular paths, and create the \"d\" string\n    addCircularPathData(graph, circularLinkGap, y1, id);\n    return graph;\n  };\n\n  // Populate the sourceLinks and targetLinks for each node.\n  // Also, if the source and target are not objects, assume they are indices.\n  function computeNodeLinks(graph) {\n    graph.nodes.forEach(function (node, i) {\n      node.index = i;\n      node.sourceLinks = [];\n      node.targetLinks = [];\n    });\n    var nodeById = (0,d3_collection__WEBPACK_IMPORTED_MODULE_1__/* .map */ .UI)(graph.nodes, id);\n    graph.links.forEach(function (link, i) {\n      link.index = i;\n      var source = link.source;\n      var target = link.target;\n      if ((typeof source === \"undefined\" ? \"undefined\" : _typeof(source)) !== 'object') {\n        source = link.source = find(nodeById, source);\n      }\n      if ((typeof target === \"undefined\" ? \"undefined\" : _typeof(target)) !== 'object') {\n        target = link.target = find(nodeById, target);\n      }\n      source.sourceLinks.push(link);\n      target.targetLinks.push(link);\n    });\n    return graph;\n  }\n\n  // Compute the value (size) and cycleness of each node by summing the associated links.\n  function computeNodeValues(graph) {\n    graph.nodes.forEach(function (node) {\n      node.partOfCycle = false;\n      node.value = Math.max((0,d3_array__WEBPACK_IMPORTED_MODULE_0__/* .sum */ .Sm)(node.sourceLinks, value), (0,d3_array__WEBPACK_IMPORTED_MODULE_0__/* .sum */ .Sm)(node.targetLinks, value));\n      node.sourceLinks.forEach(function (link) {\n        if (link.circular) {\n          node.partOfCycle = true;\n          node.circularLinkType = link.circularLinkType;\n        }\n      });\n      node.targetLinks.forEach(function (link) {\n        if (link.circular) {\n          node.partOfCycle = true;\n          node.circularLinkType = link.circularLinkType;\n        }\n      });\n    });\n  }\n\n  function getCircleMargins(graph) {\n    var totalTopLinksWidth = 0,\n        totalBottomLinksWidth = 0,\n        totalRightLinksWidth = 0,\n        totalLeftLinksWidth = 0;\n\n    var maxColumn = (0,d3_array__WEBPACK_IMPORTED_MODULE_0__/* .max */ .Fp)(graph.nodes, function (node) {\n      return node.column;\n    });\n\n    graph.links.forEach(function (link) {\n      if (link.circular) {\n        if (link.circularLinkType == 'top') {\n          totalTopLinksWidth = totalTopLinksWidth + link.width;\n        } else {\n          totalBottomLinksWidth = totalBottomLinksWidth + link.width;\n        }\n\n        if (link.target.column == 0) {\n          totalLeftLinksWidth = totalLeftLinksWidth + link.width;\n        }\n\n        if (link.source.column == maxColumn) {\n          totalRightLinksWidth = totalRightLinksWidth + link.width;\n        }\n      }\n    });\n\n    //account for radius of curves and padding between links\n    totalTopLinksWidth = totalTopLinksWidth > 0 ? totalTopLinksWidth + verticalMargin + baseRadius : totalTopLinksWidth;\n    totalBottomLinksWidth = totalBottomLinksWidth > 0 ? totalBottomLinksWidth + verticalMargin + baseRadius : totalBottomLinksWidth;\n    totalRightLinksWidth = totalRightLinksWidth > 0 ? totalRightLinksWidth + verticalMargin + baseRadius : totalRightLinksWidth;\n    totalLeftLinksWidth = totalLeftLinksWidth > 0 ? totalLeftLinksWidth + verticalMargin + baseRadius : totalLeftLinksWidth;\n\n    return { \"top\": totalTopLinksWidth, \"bottom\": totalBottomLinksWidth, \"left\": totalLeftLinksWidth, \"right\": totalRightLinksWidth };\n  }\n\n  // Update the x0, y0, x1 and y1 for the sankeyCircular, to allow space for any circular links\n  function scaleSankeySize(graph, margin) {\n\n    var maxColumn = (0,d3_array__WEBPACK_IMPORTED_MODULE_0__/* .max */ .Fp)(graph.nodes, function (node) {\n      return node.column;\n    });\n\n    var currentWidth = x1 - x0;\n    var currentHeight = y1 - y0;\n\n    var newWidth = currentWidth + margin.right + margin.left;\n    var newHeight = currentHeight + margin.top + margin.bottom;\n\n    var scaleX = currentWidth / newWidth;\n    var scaleY = currentHeight / newHeight;\n\n    x0 = x0 * scaleX + margin.left;\n    x1 = margin.right == 0 ? x1 : x1 * scaleX;\n    y0 = y0 * scaleY + margin.top;\n    y1 = y1 * scaleY;\n\n    graph.nodes.forEach(function (node) {\n      node.x0 = x0 + node.column * ((x1 - x0 - dx) / maxColumn);\n      node.x1 = node.x0 + dx;\n    });\n\n    return scaleY;\n  }\n\n  // Iteratively assign the depth for each node.\n  // Nodes are assigned the maximum depth of incoming neighbors plus one;\n  // nodes with no incoming links are assigned depth zero, while\n  // nodes with no outgoing links are assigned the maximum depth.\n  function computeNodeDepths(graph) {\n    var nodes, next, x;\n\n    for (nodes = graph.nodes, next = [], x = 0; nodes.length; ++x, nodes = next, next = []) {\n      nodes.forEach(function (node) {\n        node.depth = x;\n        node.sourceLinks.forEach(function (link) {\n          if (next.indexOf(link.target) < 0 && !link.circular) {\n            next.push(link.target);\n          }\n        });\n      });\n    }\n\n    for (nodes = graph.nodes, next = [], x = 0; nodes.length; ++x, nodes = next, next = []) {\n      nodes.forEach(function (node) {\n        node.height = x;\n        node.targetLinks.forEach(function (link) {\n          if (next.indexOf(link.source) < 0 && !link.circular) {\n            next.push(link.source);\n          }\n        });\n      });\n    }\n\n    // assign column numbers, and get max value\n    graph.nodes.forEach(function (node) {\n      node.column = Math.floor(align.call(null, node, x));\n    });\n  }\n\n  // Assign nodes' breadths, and then shift nodes that overlap (resolveCollisions)\n  function computeNodeBreadths(graph, iterations, id) {\n    var columns = (0,d3_collection__WEBPACK_IMPORTED_MODULE_1__/* .nest */ .b1)().key(function (d) {\n      return d.column;\n    }).sortKeys(d3_array__WEBPACK_IMPORTED_MODULE_0__/* .ascending */ .j2).entries(graph.nodes).map(function (d) {\n      return d.values;\n    });\n\n    initializeNodeBreadth(id);\n    resolveCollisions();\n\n    for (var alpha = 1, n = iterations; n > 0; --n) {\n      relaxLeftAndRight(alpha *= 0.99, id);\n      resolveCollisions();\n    }\n\n    function initializeNodeBreadth(id) {\n\n      //override py if nodePadding has been set\n      if (paddingRatio) {\n        var padding = Infinity;\n        columns.forEach(function (nodes) {\n          var thisPadding = y1 * paddingRatio / (nodes.length + 1);\n          padding = thisPadding < padding ? thisPadding : padding;\n        });\n        py = padding;\n      }\n\n      var ky = (0,d3_array__WEBPACK_IMPORTED_MODULE_0__/* .min */ .VV)(columns, function (nodes) {\n        return (y1 - y0 - (nodes.length - 1) * py) / (0,d3_array__WEBPACK_IMPORTED_MODULE_0__/* .sum */ .Sm)(nodes, value);\n      });\n\n      //calculate the widths of the links\n      ky = ky * scale;\n\n      graph.links.forEach(function (link) {\n        link.width = link.value * ky;\n      });\n\n      //determine how much to scale down the chart, based on circular links\n      var margin = getCircleMargins(graph);\n      var ratio = scaleSankeySize(graph, margin);\n\n      //re-calculate widths\n      ky = ky * ratio;\n\n      graph.links.forEach(function (link) {\n        link.width = link.value * ky;\n      });\n\n      columns.forEach(function (nodes) {\n        var nodesLength = nodes.length;\n        nodes.forEach(function (node, i) {\n          if (node.depth == columns.length - 1 && nodesLength == 1) {\n            node.y0 = y1 / 2 - node.value * ky;\n            node.y1 = node.y0 + node.value * ky;\n          } else if (node.depth == 0 && nodesLength == 1) {\n            node.y0 = y1 / 2 - node.value * ky;\n            node.y1 = node.y0 + node.value * ky;\n          } else if (node.partOfCycle) {\n            if (numberOfNonSelfLinkingCycles(node, id) == 0) {\n              node.y0 = y1 / 2 + i;\n              node.y1 = node.y0 + node.value * ky;\n            } else if (node.circularLinkType == 'top') {\n              node.y0 = y0 + i;\n              node.y1 = node.y0 + node.value * ky;\n            } else {\n              node.y0 = y1 - node.value * ky - i;\n              node.y1 = node.y0 + node.value * ky;\n            }\n          } else {\n            if (margin.top == 0 || margin.bottom == 0) {\n              node.y0 = (y1 - y0) / nodesLength * i;\n              node.y1 = node.y0 + node.value * ky;\n            } else {\n              node.y0 = (y1 - y0) / 2 - nodesLength / 2 + i;\n              node.y1 = node.y0 + node.value * ky;\n            }\n          }\n        });\n      });\n    }\n\n    // For each node in each column, check the node's vertical position in relation to its targets and sources vertical position\n    // and shift up/down to be closer to the vertical middle of those targets and sources\n    function relaxLeftAndRight(alpha, id) {\n      var columnsLength = columns.length;\n\n      columns.forEach(function (nodes) {\n        var n = nodes.length;\n        var depth = nodes[0].depth;\n\n        nodes.forEach(function (node) {\n          // check the node is not an orphan\n          var nodeHeight;\n          if (node.sourceLinks.length || node.targetLinks.length) {\n            if (node.partOfCycle && numberOfNonSelfLinkingCycles(node, id) > 0) ; else if (depth == 0 && n == 1) {\n              nodeHeight = node.y1 - node.y0;\n\n              node.y0 = y1 / 2 - nodeHeight / 2;\n              node.y1 = y1 / 2 + nodeHeight / 2;\n            } else if (depth == columnsLength - 1 && n == 1) {\n              nodeHeight = node.y1 - node.y0;\n\n              node.y0 = y1 / 2 - nodeHeight / 2;\n              node.y1 = y1 / 2 + nodeHeight / 2;\n            } else {\n              var avg = 0;\n\n              var avgTargetY = (0,d3_array__WEBPACK_IMPORTED_MODULE_0__/* .mean */ .J6)(node.sourceLinks, linkTargetCenter);\n              var avgSourceY = (0,d3_array__WEBPACK_IMPORTED_MODULE_0__/* .mean */ .J6)(node.targetLinks, linkSourceCenter);\n\n              if (avgTargetY && avgSourceY) {\n                avg = (avgTargetY + avgSourceY) / 2;\n              } else {\n                avg = avgTargetY || avgSourceY;\n              }\n\n              var dy = (avg - nodeCenter(node)) * alpha;\n              // positive if it node needs to move down\n              node.y0 += dy;\n              node.y1 += dy;\n            }\n          }\n        });\n      });\n    }\n\n    // For each column, check if nodes are overlapping, and if so, shift up/down\n    function resolveCollisions() {\n      columns.forEach(function (nodes) {\n        var node,\n            dy,\n            y = y0,\n            n = nodes.length,\n            i;\n\n        // Push any overlapping nodes down.\n        nodes.sort(ascendingBreadth);\n\n        for (i = 0; i < n; ++i) {\n          node = nodes[i];\n          dy = y - node.y0;\n\n          if (dy > 0) {\n            node.y0 += dy;\n            node.y1 += dy;\n          }\n          y = node.y1 + py;\n        }\n\n        // If the bottommost node goes outside the bounds, push it back up.\n        dy = y - py - y1;\n        if (dy > 0) {\n          y = node.y0 -= dy, node.y1 -= dy;\n\n          // Push any overlapping nodes back up.\n          for (i = n - 2; i >= 0; --i) {\n            node = nodes[i];\n            dy = node.y1 + py - y;\n            if (dy > 0) node.y0 -= dy, node.y1 -= dy;\n            y = node.y0;\n          }\n        }\n      });\n    }\n  }\n\n  // Assign the links y0 and y1 based on source/target nodes position,\n  // plus the link's relative position to other links to the same node\n  function computeLinkBreadths(graph) {\n    graph.nodes.forEach(function (node) {\n      node.sourceLinks.sort(ascendingTargetBreadth);\n      node.targetLinks.sort(ascendingSourceBreadth);\n    });\n    graph.nodes.forEach(function (node) {\n      var y0 = node.y0;\n      var y1 = y0;\n\n      // start from the bottom of the node for cycle links\n      var y0cycle = node.y1;\n      var y1cycle = y0cycle;\n\n      node.sourceLinks.forEach(function (link) {\n        if (link.circular) {\n          link.y0 = y0cycle - link.width / 2;\n          y0cycle = y0cycle - link.width;\n        } else {\n          link.y0 = y0 + link.width / 2;\n          y0 += link.width;\n        }\n      });\n      node.targetLinks.forEach(function (link) {\n        if (link.circular) {\n          link.y1 = y1cycle - link.width / 2;\n          y1cycle = y1cycle - link.width;\n        } else {\n          link.y1 = y1 + link.width / 2;\n          y1 += link.width;\n        }\n      });\n    });\n  }\n\n  return sankeyCircular;\n}\n\n/// /////////////////////////////////////////////////////////////////////////////////\n// Cycle functions\n// portion of code to detect circular links based on Colin Fergus' bl.ock https://gist.github.com/cfergus/3956043\n\n// Identify circles in the link objects\nfunction identifyCircles(graph, id, sortNodes) {\n  var circularLinkID = 0;\n  if (sortNodes === null) {\n\n    // Building adjacency graph\n    var adjList = [];\n    for (var i = 0; i < graph.links.length; i++) {\n      var link = graph.links[i];\n      var source = link.source.index;\n      var target = link.target.index;\n      if (!adjList[source]) adjList[source] = [];\n      if (!adjList[target]) adjList[target] = [];\n\n      // Add links if not already in set\n      if (adjList[source].indexOf(target) === -1) adjList[source].push(target);\n    }\n\n    // Find all elementary circuits\n    var cycles = elementary_circuits_directed_graph__WEBPACK_IMPORTED_MODULE_2___default()(adjList);\n\n    // Sort by circuits length\n    cycles.sort(function (a, b) {\n      return a.length - b.length;\n    });\n\n    var circularLinks = {};\n    for (i = 0; i < cycles.length; i++) {\n      var cycle = cycles[i];\n      var last = cycle.slice(-2);\n      if (!circularLinks[last[0]]) circularLinks[last[0]] = {};\n      circularLinks[last[0]][last[1]] = true;\n    }\n\n    graph.links.forEach(function (link) {\n      var target = link.target.index;\n      var source = link.source.index;\n      // If self-linking or a back-edge\n      if (target === source || circularLinks[source] && circularLinks[source][target]) {\n        link.circular = true;\n        link.circularLinkID = circularLinkID;\n        circularLinkID = circularLinkID + 1;\n      } else {\n        link.circular = false;\n      }\n    });\n  } else {\n    graph.links.forEach(function (link) {\n      if (link.source[sortNodes] < link.target[sortNodes]) {\n        link.circular = false;\n      } else {\n        link.circular = true;\n        link.circularLinkID = circularLinkID;\n        circularLinkID = circularLinkID + 1;\n      }\n    });\n  }\n}\n\n// Assign a circular link type (top or bottom), based on:\n// - if the source/target node already has circular links, then use the same type\n// - if not, choose the type with fewer links\nfunction selectCircularLinkTypes(graph, id) {\n  var numberOfTops = 0;\n  var numberOfBottoms = 0;\n  graph.links.forEach(function (link) {\n    if (link.circular) {\n      // if either souce or target has type already use that\n      if (link.source.circularLinkType || link.target.circularLinkType) {\n        // default to source type if available\n        link.circularLinkType = link.source.circularLinkType ? link.source.circularLinkType : link.target.circularLinkType;\n      } else {\n        link.circularLinkType = numberOfTops < numberOfBottoms ? 'top' : 'bottom';\n      }\n\n      if (link.circularLinkType == 'top') {\n        numberOfTops = numberOfTops + 1;\n      } else {\n        numberOfBottoms = numberOfBottoms + 1;\n      }\n\n      graph.nodes.forEach(function (node) {\n        if (getNodeID(node, id) == getNodeID(link.source, id) || getNodeID(node, id) == getNodeID(link.target, id)) {\n          node.circularLinkType = link.circularLinkType;\n        }\n      });\n    }\n  });\n\n  //correct self-linking links to be same direction as node\n  graph.links.forEach(function (link) {\n    if (link.circular) {\n      //if both source and target node are same type, then link should have same type\n      if (link.source.circularLinkType == link.target.circularLinkType) {\n        link.circularLinkType = link.source.circularLinkType;\n      }\n      //if link is selflinking, then link should have same type as node\n      if (selfLinking(link, id)) {\n        link.circularLinkType = link.source.circularLinkType;\n      }\n    }\n  });\n}\n\n// Return the angle between a straight line between the source and target of the link, and the vertical plane of the node\nfunction linkAngle(link) {\n  var adjacent = Math.abs(link.y1 - link.y0);\n  var opposite = Math.abs(link.target.x0 - link.source.x1);\n\n  return Math.atan(opposite / adjacent);\n}\n\n// Check if two circular links potentially overlap\nfunction circularLinksCross(link1, link2) {\n  if (link1.source.column < link2.target.column) {\n    return false;\n  } else if (link1.target.column > link2.source.column) {\n    return false;\n  } else {\n    return true;\n  }\n}\n\n// Return the number of circular links for node, not including self linking links\nfunction numberOfNonSelfLinkingCycles(node, id) {\n  var sourceCount = 0;\n  node.sourceLinks.forEach(function (l) {\n    sourceCount = l.circular && !selfLinking(l, id) ? sourceCount + 1 : sourceCount;\n  });\n\n  var targetCount = 0;\n  node.targetLinks.forEach(function (l) {\n    targetCount = l.circular && !selfLinking(l, id) ? targetCount + 1 : targetCount;\n  });\n\n  return sourceCount + targetCount;\n}\n\n// Check if a circular link is the only circular link for both its source and target node\nfunction onlyCircularLink(link) {\n  var nodeSourceLinks = link.source.sourceLinks;\n  var sourceCount = 0;\n  nodeSourceLinks.forEach(function (l) {\n    sourceCount = l.circular ? sourceCount + 1 : sourceCount;\n  });\n\n  var nodeTargetLinks = link.target.targetLinks;\n  var targetCount = 0;\n  nodeTargetLinks.forEach(function (l) {\n    targetCount = l.circular ? targetCount + 1 : targetCount;\n  });\n\n  if (sourceCount > 1 || targetCount > 1) {\n    return false;\n  } else {\n    return true;\n  }\n}\n\n// creates vertical buffer values per set of top/bottom links\nfunction calcVerticalBuffer(links, circularLinkGap, id) {\n  links.sort(sortLinkColumnAscending);\n  links.forEach(function (link, i) {\n    var buffer = 0;\n\n    if (selfLinking(link, id) && onlyCircularLink(link)) {\n      link.circularPathData.verticalBuffer = buffer + link.width / 2;\n    } else {\n      var j = 0;\n      for (j; j < i; j++) {\n        if (circularLinksCross(links[i], links[j])) {\n          var bufferOverThisLink = links[j].circularPathData.verticalBuffer + links[j].width / 2 + circularLinkGap;\n          buffer = bufferOverThisLink > buffer ? bufferOverThisLink : buffer;\n        }\n      }\n\n      link.circularPathData.verticalBuffer = buffer + link.width / 2;\n    }\n  });\n\n  return links;\n}\n\n// calculate the optimum path for a link to reduce overlaps\nfunction addCircularPathData(graph, circularLinkGap, y1, id) {\n  //var baseRadius = 10\n  var buffer = 5;\n  //var verticalMargin = 25\n\n  var minY = (0,d3_array__WEBPACK_IMPORTED_MODULE_0__/* .min */ .VV)(graph.links, function (link) {\n    return link.source.y0;\n  });\n\n  // create object for circular Path Data\n  graph.links.forEach(function (link) {\n    if (link.circular) {\n      link.circularPathData = {};\n    }\n  });\n\n  // calc vertical offsets per top/bottom links\n  var topLinks = graph.links.filter(function (l) {\n    return l.circularLinkType == 'top';\n  });\n  /* topLinks = */calcVerticalBuffer(topLinks, circularLinkGap, id);\n\n  var bottomLinks = graph.links.filter(function (l) {\n    return l.circularLinkType == 'bottom';\n  });\n  /* bottomLinks = */calcVerticalBuffer(bottomLinks, circularLinkGap, id);\n\n  // add the base data for each link\n  graph.links.forEach(function (link) {\n    if (link.circular) {\n      link.circularPathData.arcRadius = link.width + baseRadius;\n      link.circularPathData.leftNodeBuffer = buffer;\n      link.circularPathData.rightNodeBuffer = buffer;\n      link.circularPathData.sourceWidth = link.source.x1 - link.source.x0;\n      link.circularPathData.sourceX = link.source.x0 + link.circularPathData.sourceWidth;\n      link.circularPathData.targetX = link.target.x0;\n      link.circularPathData.sourceY = link.y0;\n      link.circularPathData.targetY = link.y1;\n\n      // for self linking paths, and that the only circular link in/out of that node\n      if (selfLinking(link, id) && onlyCircularLink(link)) {\n        link.circularPathData.leftSmallArcRadius = baseRadius + link.width / 2;\n        link.circularPathData.leftLargeArcRadius = baseRadius + link.width / 2;\n        link.circularPathData.rightSmallArcRadius = baseRadius + link.width / 2;\n        link.circularPathData.rightLargeArcRadius = baseRadius + link.width / 2;\n\n        if (link.circularLinkType == 'bottom') {\n          link.circularPathData.verticalFullExtent = link.source.y1 + verticalMargin + link.circularPathData.verticalBuffer;\n          link.circularPathData.verticalLeftInnerExtent = link.circularPathData.verticalFullExtent - link.circularPathData.leftLargeArcRadius;\n          link.circularPathData.verticalRightInnerExtent = link.circularPathData.verticalFullExtent - link.circularPathData.rightLargeArcRadius;\n        } else {\n          // top links\n          link.circularPathData.verticalFullExtent = link.source.y0 - verticalMargin - link.circularPathData.verticalBuffer;\n          link.circularPathData.verticalLeftInnerExtent = link.circularPathData.verticalFullExtent + link.circularPathData.leftLargeArcRadius;\n          link.circularPathData.verticalRightInnerExtent = link.circularPathData.verticalFullExtent + link.circularPathData.rightLargeArcRadius;\n        }\n      } else {\n        // else calculate normally\n        // add left extent coordinates, based on links with same source column and circularLink type\n        var thisColumn = link.source.column;\n        var thisCircularLinkType = link.circularLinkType;\n        var sameColumnLinks = graph.links.filter(function (l) {\n          return l.source.column == thisColumn && l.circularLinkType == thisCircularLinkType;\n        });\n\n        if (link.circularLinkType == 'bottom') {\n          sameColumnLinks.sort(sortLinkSourceYDescending);\n        } else {\n          sameColumnLinks.sort(sortLinkSourceYAscending);\n        }\n\n        var radiusOffset = 0;\n        sameColumnLinks.forEach(function (l, i) {\n          if (l.circularLinkID == link.circularLinkID) {\n            link.circularPathData.leftSmallArcRadius = baseRadius + link.width / 2 + radiusOffset;\n            link.circularPathData.leftLargeArcRadius = baseRadius + link.width / 2 + i * circularLinkGap + radiusOffset;\n          }\n          radiusOffset = radiusOffset + l.width;\n        });\n\n        // add right extent coordinates, based on links with same target column and circularLink type\n        thisColumn = link.target.column;\n        sameColumnLinks = graph.links.filter(function (l) {\n          return l.target.column == thisColumn && l.circularLinkType == thisCircularLinkType;\n        });\n        if (link.circularLinkType == 'bottom') {\n          sameColumnLinks.sort(sortLinkTargetYDescending);\n        } else {\n          sameColumnLinks.sort(sortLinkTargetYAscending);\n        }\n\n        radiusOffset = 0;\n        sameColumnLinks.forEach(function (l, i) {\n          if (l.circularLinkID == link.circularLinkID) {\n            link.circularPathData.rightSmallArcRadius = baseRadius + link.width / 2 + radiusOffset;\n            link.circularPathData.rightLargeArcRadius = baseRadius + link.width / 2 + i * circularLinkGap + radiusOffset;\n          }\n          radiusOffset = radiusOffset + l.width;\n        });\n\n        // bottom links\n        if (link.circularLinkType == 'bottom') {\n          link.circularPathData.verticalFullExtent = Math.max(y1, link.source.y1, link.target.y1) + verticalMargin + link.circularPathData.verticalBuffer;\n          link.circularPathData.verticalLeftInnerExtent = link.circularPathData.verticalFullExtent - link.circularPathData.leftLargeArcRadius;\n          link.circularPathData.verticalRightInnerExtent = link.circularPathData.verticalFullExtent - link.circularPathData.rightLargeArcRadius;\n        } else {\n          // top links\n          link.circularPathData.verticalFullExtent = minY - verticalMargin - link.circularPathData.verticalBuffer;\n          link.circularPathData.verticalLeftInnerExtent = link.circularPathData.verticalFullExtent + link.circularPathData.leftLargeArcRadius;\n          link.circularPathData.verticalRightInnerExtent = link.circularPathData.verticalFullExtent + link.circularPathData.rightLargeArcRadius;\n        }\n      }\n\n      // all links\n      link.circularPathData.leftInnerExtent = link.circularPathData.sourceX + link.circularPathData.leftNodeBuffer;\n      link.circularPathData.rightInnerExtent = link.circularPathData.targetX - link.circularPathData.rightNodeBuffer;\n      link.circularPathData.leftFullExtent = link.circularPathData.sourceX + link.circularPathData.leftLargeArcRadius + link.circularPathData.leftNodeBuffer;\n      link.circularPathData.rightFullExtent = link.circularPathData.targetX - link.circularPathData.rightLargeArcRadius - link.circularPathData.rightNodeBuffer;\n    }\n\n    if (link.circular) {\n      link.path = createCircularPathString(link);\n    } else {\n      var normalPath = (0,d3_shape__WEBPACK_IMPORTED_MODULE_3__/* .linkHorizontal */ .h5)().source(function (d) {\n        var x = d.source.x0 + (d.source.x1 - d.source.x0);\n        var y = d.y0;\n        return [x, y];\n      }).target(function (d) {\n        var x = d.target.x0;\n        var y = d.y1;\n        return [x, y];\n      });\n      link.path = normalPath(link);\n    }\n  });\n}\n\n// create a d path using the addCircularPathData\nfunction createCircularPathString(link) {\n  var pathString = '';\n  // 'pathData' is assigned a value but never used\n  // var pathData = {}\n\n  if (link.circularLinkType == 'top') {\n    pathString =\n    // start at the right of the source node\n    'M' + link.circularPathData.sourceX + ' ' + link.circularPathData.sourceY + ' ' +\n    // line right to buffer point\n    'L' + link.circularPathData.leftInnerExtent + ' ' + link.circularPathData.sourceY + ' ' +\n    // Arc around: Centre of arc X and  //Centre of arc Y\n    'A' + link.circularPathData.leftLargeArcRadius + ' ' + link.circularPathData.leftSmallArcRadius + ' 0 0 0 ' +\n    // End of arc X //End of arc Y\n    link.circularPathData.leftFullExtent + ' ' + (link.circularPathData.sourceY - link.circularPathData.leftSmallArcRadius) + ' ' + // End of arc X\n    // line up to buffer point\n    'L' + link.circularPathData.leftFullExtent + ' ' + link.circularPathData.verticalLeftInnerExtent + ' ' +\n    // Arc around: Centre of arc X and  //Centre of arc Y\n    'A' + link.circularPathData.leftLargeArcRadius + ' ' + link.circularPathData.leftLargeArcRadius + ' 0 0 0 ' +\n    // End of arc X //End of arc Y\n    link.circularPathData.leftInnerExtent + ' ' + link.circularPathData.verticalFullExtent + ' ' + // End of arc X\n    // line left to buffer point\n    'L' + link.circularPathData.rightInnerExtent + ' ' + link.circularPathData.verticalFullExtent + ' ' +\n    // Arc around: Centre of arc X and  //Centre of arc Y\n    'A' + link.circularPathData.rightLargeArcRadius + ' ' + link.circularPathData.rightLargeArcRadius + ' 0 0 0 ' +\n    // End of arc X //End of arc Y\n    link.circularPathData.rightFullExtent + ' ' + link.circularPathData.verticalRightInnerExtent + ' ' + // End of arc X\n    // line down\n    'L' + link.circularPathData.rightFullExtent + ' ' + (link.circularPathData.targetY - link.circularPathData.rightSmallArcRadius) + ' ' +\n    // Arc around: Centre of arc X and  //Centre of arc Y\n    'A' + link.circularPathData.rightLargeArcRadius + ' ' + link.circularPathData.rightSmallArcRadius + ' 0 0 0 ' +\n    // End of arc X //End of arc Y\n    link.circularPathData.rightInnerExtent + ' ' + link.circularPathData.targetY + ' ' + // End of arc X\n    // line to end\n    'L' + link.circularPathData.targetX + ' ' + link.circularPathData.targetY;\n  } else {\n    // bottom path\n    pathString =\n    // start at the right of the source node\n    'M' + link.circularPathData.sourceX + ' ' + link.circularPathData.sourceY + ' ' +\n    // line right to buffer point\n    'L' + link.circularPathData.leftInnerExtent + ' ' + link.circularPathData.sourceY + ' ' +\n    // Arc around: Centre of arc X and  //Centre of arc Y\n    'A' + link.circularPathData.leftLargeArcRadius + ' ' + link.circularPathData.leftSmallArcRadius + ' 0 0 1 ' +\n    // End of arc X //End of arc Y\n    link.circularPathData.leftFullExtent + ' ' + (link.circularPathData.sourceY + link.circularPathData.leftSmallArcRadius) + ' ' + // End of arc X\n    // line down to buffer point\n    'L' + link.circularPathData.leftFullExtent + ' ' + link.circularPathData.verticalLeftInnerExtent + ' ' +\n    // Arc around: Centre of arc X and  //Centre of arc Y\n    'A' + link.circularPathData.leftLargeArcRadius + ' ' + link.circularPathData.leftLargeArcRadius + ' 0 0 1 ' +\n    // End of arc X //End of arc Y\n    link.circularPathData.leftInnerExtent + ' ' + link.circularPathData.verticalFullExtent + ' ' + // End of arc X\n    // line left to buffer point\n    'L' + link.circularPathData.rightInnerExtent + ' ' + link.circularPathData.verticalFullExtent + ' ' +\n    // Arc around: Centre of arc X and  //Centre of arc Y\n    'A' + link.circularPathData.rightLargeArcRadius + ' ' + link.circularPathData.rightLargeArcRadius + ' 0 0 1 ' +\n    // End of arc X //End of arc Y\n    link.circularPathData.rightFullExtent + ' ' + link.circularPathData.verticalRightInnerExtent + ' ' + // End of arc X\n    // line up\n    'L' + link.circularPathData.rightFullExtent + ' ' + (link.circularPathData.targetY + link.circularPathData.rightSmallArcRadius) + ' ' +\n    // Arc around: Centre of arc X and  //Centre of arc Y\n    'A' + link.circularPathData.rightLargeArcRadius + ' ' + link.circularPathData.rightSmallArcRadius + ' 0 0 1 ' +\n    // End of arc X //End of arc Y\n    link.circularPathData.rightInnerExtent + ' ' + link.circularPathData.targetY + ' ' + // End of arc X\n    // line to end\n    'L' + link.circularPathData.targetX + ' ' + link.circularPathData.targetY;\n  }\n\n  return pathString;\n}\n\n// sort links based on the distance between the source and tartget node columns\n// if the same, then use Y position of the source node\nfunction sortLinkColumnAscending(link1, link2) {\n  if (linkColumnDistance(link1) == linkColumnDistance(link2)) {\n    return link1.circularLinkType == 'bottom' ? sortLinkSourceYDescending(link1, link2) : sortLinkSourceYAscending(link1, link2);\n  } else {\n    return linkColumnDistance(link2) - linkColumnDistance(link1);\n  }\n}\n\n// sort ascending links by their source vertical position, y0\nfunction sortLinkSourceYAscending(link1, link2) {\n  return link1.y0 - link2.y0;\n}\n\n// sort descending links by their source vertical position, y0\nfunction sortLinkSourceYDescending(link1, link2) {\n  return link2.y0 - link1.y0;\n}\n\n// sort ascending links by their target vertical position, y1\nfunction sortLinkTargetYAscending(link1, link2) {\n  return link1.y1 - link2.y1;\n}\n\n// sort descending links by their target vertical position, y1\nfunction sortLinkTargetYDescending(link1, link2) {\n  return link2.y1 - link1.y1;\n}\n\n// return the distance between the link's target and source node, in terms of the nodes' column\nfunction linkColumnDistance(link) {\n  return link.target.column - link.source.column;\n}\n\n// return the distance between the link's target and source node, in terms of the nodes' X coordinate\nfunction linkXLength(link) {\n  return link.target.x0 - link.source.x1;\n}\n\n// Return the Y coordinate on the longerLink path * which is perpendicular shorterLink's source.\n// * approx, based on a straight line from target to source, when in fact the path is a bezier\nfunction linkPerpendicularYToLinkSource(longerLink, shorterLink) {\n  // get the angle for the longer link\n  var angle = linkAngle(longerLink);\n\n  // get the adjacent length to the other link's x position\n  var heightFromY1ToPependicular = linkXLength(shorterLink) / Math.tan(angle);\n\n  // add or subtract from longer link1's original y1, depending on the slope\n  var yPerpendicular = incline(longerLink) == 'up' ? longerLink.y1 + heightFromY1ToPependicular : longerLink.y1 - heightFromY1ToPependicular;\n\n  return yPerpendicular;\n}\n\n// Return the Y coordinate on the longerLink path * which is perpendicular shorterLink's source.\n// * approx, based on a straight line from target to source, when in fact the path is a bezier\nfunction linkPerpendicularYToLinkTarget(longerLink, shorterLink) {\n  // get the angle for the longer link\n  var angle = linkAngle(longerLink);\n\n  // get the adjacent length to the other link's x position\n  var heightFromY1ToPependicular = linkXLength(shorterLink) / Math.tan(angle);\n\n  // add or subtract from longer link's original y1, depending on the slope\n  var yPerpendicular = incline(longerLink) == 'up' ? longerLink.y1 - heightFromY1ToPependicular : longerLink.y1 + heightFromY1ToPependicular;\n\n  return yPerpendicular;\n}\n\n// Move any nodes that overlap links which span 2+ columns\nfunction resolveNodeLinkOverlaps(graph, y0, y1, id) {\n\n  graph.links.forEach(function (link) {\n    if (link.circular) {\n      return;\n    }\n\n    if (link.target.column - link.source.column > 1) {\n      var columnToTest = link.source.column + 1;\n      var maxColumnToTest = link.target.column - 1;\n\n      var i = 1;\n      var numberOfColumnsToTest = maxColumnToTest - columnToTest + 1;\n\n      for (i = 1; columnToTest <= maxColumnToTest; columnToTest++, i++) {\n        graph.nodes.forEach(function (node) {\n          if (node.column == columnToTest) {\n            var t = i / (numberOfColumnsToTest + 1);\n\n            // Find all the points of a cubic bezier curve in javascript\n            // https://stackoverflow.com/questions/15397596/find-all-the-points-of-a-cubic-bezier-curve-in-javascript\n\n            var B0_t = Math.pow(1 - t, 3);\n            var B1_t = 3 * t * Math.pow(1 - t, 2);\n            var B2_t = 3 * Math.pow(t, 2) * (1 - t);\n            var B3_t = Math.pow(t, 3);\n\n            var py_t = B0_t * link.y0 + B1_t * link.y0 + B2_t * link.y1 + B3_t * link.y1;\n\n            var linkY0AtColumn = py_t - link.width / 2;\n            var linkY1AtColumn = py_t + link.width / 2;\n            var dy;\n\n            // If top of link overlaps node, push node up\n            if (linkY0AtColumn > node.y0 && linkY0AtColumn < node.y1) {\n\n              dy = node.y1 - linkY0AtColumn + 10;\n              dy = node.circularLinkType == 'bottom' ? dy : -dy;\n\n              node = adjustNodeHeight(node, dy, y0, y1);\n\n              // check if other nodes need to move up too\n              graph.nodes.forEach(function (otherNode) {\n                // don't need to check itself or nodes at different columns\n                if (getNodeID(otherNode, id) == getNodeID(node, id) || otherNode.column != node.column) {\n                  return;\n                }\n                if (nodesOverlap(node, otherNode)) {\n                  adjustNodeHeight(otherNode, dy, y0, y1);\n                }\n              });\n            } else if (linkY1AtColumn > node.y0 && linkY1AtColumn < node.y1) {\n              // If bottom of link overlaps node, push node down\n              dy = linkY1AtColumn - node.y0 + 10;\n\n              node = adjustNodeHeight(node, dy, y0, y1);\n\n              // check if other nodes need to move down too\n              graph.nodes.forEach(function (otherNode) {\n                // don't need to check itself or nodes at different columns\n                if (getNodeID(otherNode, id) == getNodeID(node, id) || otherNode.column != node.column) {\n                  return;\n                }\n                if (otherNode.y0 < node.y1 && otherNode.y1 > node.y1) {\n                  adjustNodeHeight(otherNode, dy, y0, y1);\n                }\n              });\n            } else if (linkY0AtColumn < node.y0 && linkY1AtColumn > node.y1) {\n              // if link completely overlaps node\n              dy = linkY1AtColumn - node.y0 + 10;\n\n              node = adjustNodeHeight(node, dy, y0, y1);\n\n              graph.nodes.forEach(function (otherNode) {\n                // don't need to check itself or nodes at different columns\n                if (getNodeID(otherNode, id) == getNodeID(node, id) || otherNode.column != node.column) {\n                  return;\n                }\n                if (otherNode.y0 < node.y1 && otherNode.y1 > node.y1) {\n                  adjustNodeHeight(otherNode, dy, y0, y1);\n                }\n              });\n            }\n          }\n        });\n      }\n    }\n  });\n}\n\n// check if two nodes overlap\nfunction nodesOverlap(nodeA, nodeB) {\n  // test if nodeA top partially overlaps nodeB\n  if (nodeA.y0 > nodeB.y0 && nodeA.y0 < nodeB.y1) {\n    return true;\n  } else if (nodeA.y1 > nodeB.y0 && nodeA.y1 < nodeB.y1) {\n    // test if nodeA bottom partially overlaps nodeB\n    return true;\n  } else if (nodeA.y0 < nodeB.y0 && nodeA.y1 > nodeB.y1) {\n    // test if nodeA covers nodeB\n    return true;\n  } else {\n    return false;\n  }\n}\n\n// update a node, and its associated links, vertical positions (y0, y1)\nfunction adjustNodeHeight(node, dy, sankeyY0, sankeyY1) {\n  if (node.y0 + dy >= sankeyY0 && node.y1 + dy <= sankeyY1) {\n    node.y0 = node.y0 + dy;\n    node.y1 = node.y1 + dy;\n\n    node.targetLinks.forEach(function (l) {\n      l.y1 = l.y1 + dy;\n    });\n\n    node.sourceLinks.forEach(function (l) {\n      l.y0 = l.y0 + dy;\n    });\n  }\n  return node;\n}\n\n// sort and set the links' y0 for each node\nfunction sortSourceLinks(graph, y1, id, moveNodes) {\n  graph.nodes.forEach(function (node) {\n    // move any nodes up which are off the bottom\n    if (moveNodes && node.y + (node.y1 - node.y0) > y1) {\n      node.y = node.y - (node.y + (node.y1 - node.y0) - y1);\n    }\n\n    var nodesSourceLinks = graph.links.filter(function (l) {\n      return getNodeID(l.source, id) == getNodeID(node, id);\n    });\n\n    var nodeSourceLinksLength = nodesSourceLinks.length;\n\n    // if more than 1 link then sort\n    if (nodeSourceLinksLength > 1) {\n      nodesSourceLinks.sort(function (link1, link2) {\n        // if both are not circular...\n        if (!link1.circular && !link2.circular) {\n          // if the target nodes are the same column, then sort by the link's target y\n          if (link1.target.column == link2.target.column) {\n            return link1.y1 - link2.y1;\n          } else if (!sameInclines(link1, link2)) {\n            // if the links slope in different directions, then sort by the link's target y\n            return link1.y1 - link2.y1;\n\n            // if the links slope in same directions, then sort by any overlap\n          } else {\n            if (link1.target.column > link2.target.column) {\n              var link2Adj = linkPerpendicularYToLinkTarget(link2, link1);\n              return link1.y1 - link2Adj;\n            }\n            if (link2.target.column > link1.target.column) {\n              var link1Adj = linkPerpendicularYToLinkTarget(link1, link2);\n              return link1Adj - link2.y1;\n            }\n          }\n        }\n\n        // if only one is circular, the move top links up, or bottom links down\n        if (link1.circular && !link2.circular) {\n          return link1.circularLinkType == 'top' ? -1 : 1;\n        } else if (link2.circular && !link1.circular) {\n          return link2.circularLinkType == 'top' ? 1 : -1;\n        }\n\n        // if both links are circular...\n        if (link1.circular && link2.circular) {\n          // ...and they both loop the same way (both top)\n          if (link1.circularLinkType === link2.circularLinkType && link1.circularLinkType == 'top') {\n            // ...and they both connect to a target with same column, then sort by the target's y\n            if (link1.target.column === link2.target.column) {\n              return link1.target.y1 - link2.target.y1;\n            } else {\n              // ...and they connect to different column targets, then sort by how far back they\n              return link2.target.column - link1.target.column;\n            }\n          } else if (link1.circularLinkType === link2.circularLinkType && link1.circularLinkType == 'bottom') {\n            // ...and they both loop the same way (both bottom)\n            // ...and they both connect to a target with same column, then sort by the target's y\n            if (link1.target.column === link2.target.column) {\n              return link2.target.y1 - link1.target.y1;\n            } else {\n              // ...and they connect to different column targets, then sort by how far back they\n              return link1.target.column - link2.target.column;\n            }\n          } else {\n            // ...and they loop around different ways, the move top up and bottom down\n            return link1.circularLinkType == 'top' ? -1 : 1;\n          }\n        }\n      });\n    }\n\n    // update y0 for links\n    var ySourceOffset = node.y0;\n\n    nodesSourceLinks.forEach(function (link) {\n      link.y0 = ySourceOffset + link.width / 2;\n      ySourceOffset = ySourceOffset + link.width;\n    });\n\n    // correct any circular bottom links so they are at the bottom of the node\n    nodesSourceLinks.forEach(function (link, i) {\n      if (link.circularLinkType == 'bottom') {\n        var j = i + 1;\n        var offsetFromBottom = 0;\n        // sum the widths of any links that are below this link\n        for (j; j < nodeSourceLinksLength; j++) {\n          offsetFromBottom = offsetFromBottom + nodesSourceLinks[j].width;\n        }\n        link.y0 = node.y1 - offsetFromBottom - link.width / 2;\n      }\n    });\n  });\n}\n\n// sort and set the links' y1 for each node\nfunction sortTargetLinks(graph, y1, id) {\n  graph.nodes.forEach(function (node) {\n    var nodesTargetLinks = graph.links.filter(function (l) {\n      return getNodeID(l.target, id) == getNodeID(node, id);\n    });\n\n    var nodesTargetLinksLength = nodesTargetLinks.length;\n\n    if (nodesTargetLinksLength > 1) {\n      nodesTargetLinks.sort(function (link1, link2) {\n        // if both are not circular, the base on the source y position\n        if (!link1.circular && !link2.circular) {\n          if (link1.source.column == link2.source.column) {\n            return link1.y0 - link2.y0;\n          } else if (!sameInclines(link1, link2)) {\n            return link1.y0 - link2.y0;\n          } else {\n            // get the angle of the link to the further source node (ie the smaller column)\n            if (link2.source.column < link1.source.column) {\n              var link2Adj = linkPerpendicularYToLinkSource(link2, link1);\n\n              return link1.y0 - link2Adj;\n            }\n            if (link1.source.column < link2.source.column) {\n              var link1Adj = linkPerpendicularYToLinkSource(link1, link2);\n\n              return link1Adj - link2.y0;\n            }\n          }\n        }\n\n        // if only one is circular, the move top links up, or bottom links down\n        if (link1.circular && !link2.circular) {\n          return link1.circularLinkType == 'top' ? -1 : 1;\n        } else if (link2.circular && !link1.circular) {\n          return link2.circularLinkType == 'top' ? 1 : -1;\n        }\n\n        // if both links are circular...\n        if (link1.circular && link2.circular) {\n          // ...and they both loop the same way (both top)\n          if (link1.circularLinkType === link2.circularLinkType && link1.circularLinkType == 'top') {\n            // ...and they both connect to a target with same column, then sort by the target's y\n            if (link1.source.column === link2.source.column) {\n              return link1.source.y1 - link2.source.y1;\n            } else {\n              // ...and they connect to different column targets, then sort by how far back they\n              return link1.source.column - link2.source.column;\n            }\n          } else if (link1.circularLinkType === link2.circularLinkType && link1.circularLinkType == 'bottom') {\n            // ...and they both loop the same way (both bottom)\n            // ...and they both connect to a target with same column, then sort by the target's y\n            if (link1.source.column === link2.source.column) {\n              return link1.source.y1 - link2.source.y1;\n            } else {\n              // ...and they connect to different column targets, then sort by how far back they\n              return link2.source.column - link1.source.column;\n            }\n          } else {\n            // ...and they loop around different ways, the move top up and bottom down\n            return link1.circularLinkType == 'top' ? -1 : 1;\n          }\n        }\n      });\n    }\n\n    // update y1 for links\n    var yTargetOffset = node.y0;\n\n    nodesTargetLinks.forEach(function (link) {\n      link.y1 = yTargetOffset + link.width / 2;\n      yTargetOffset = yTargetOffset + link.width;\n    });\n\n    // correct any circular bottom links so they are at the bottom of the node\n    nodesTargetLinks.forEach(function (link, i) {\n      if (link.circularLinkType == 'bottom') {\n        var j = i + 1;\n        var offsetFromBottom = 0;\n        // sum the widths of any links that are below this link\n        for (j; j < nodesTargetLinksLength; j++) {\n          offsetFromBottom = offsetFromBottom + nodesTargetLinks[j].width;\n        }\n        link.y1 = node.y1 - offsetFromBottom - link.width / 2;\n      }\n    });\n  });\n}\n\n// test if links both slope up, or both slope down\nfunction sameInclines(link1, link2) {\n  return incline(link1) == incline(link2);\n}\n\n// returns the slope of a link, from source to target\n// up => slopes up from source to target\n// down => slopes down from source to target\nfunction incline(link) {\n  return link.y0 - link.y1 > 0 ? 'up' : 'down';\n}\n\n// check if link is self linking, ie links a node to the same node\nfunction selfLinking(link, id) {\n  return getNodeID(link.source, id) == getNodeID(link.target, id);\n}\n\nfunction fillHeight(graph, y0, y1) {\n\n  var nodes = graph.nodes;\n  var links = graph.links;\n\n  var top = false;\n  var bottom = false;\n\n  links.forEach(function (link) {\n    if (link.circularLinkType == \"top\") {\n      top = true;\n    } else if (link.circularLinkType == \"bottom\") {\n      bottom = true;\n    }\n  });\n\n  if (top == false || bottom == false) {\n    var minY0 = (0,d3_array__WEBPACK_IMPORTED_MODULE_0__/* .min */ .VV)(nodes, function (node) {\n      return node.y0;\n    });\n    var maxY1 = (0,d3_array__WEBPACK_IMPORTED_MODULE_0__/* .max */ .Fp)(nodes, function (node) {\n      return node.y1;\n    });\n    var currentHeight = maxY1 - minY0;\n    var chartHeight = y1 - y0;\n    var ratio = chartHeight / currentHeight;\n\n    nodes.forEach(function (node) {\n      var nodeHeight = (node.y1 - node.y0) * ratio;\n      node.y0 = (node.y0 - minY0) * ratio;\n      node.y1 = node.y0 + nodeHeight;\n    });\n\n    links.forEach(function (link) {\n      link.y0 = (link.y0 - minY0) * ratio;\n      link.y1 = (link.y1 - minY0) * ratio;\n      link.width = link.width * ratio;\n    });\n  }\n}\n\n\n\n\n/***/ }),\n\n/***/ 30838:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_4668375__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__nested_webpack_require_4668375__.r(__webpack_exports__);\n\n// EXPORTS\n__nested_webpack_require_4668375__.d(__webpack_exports__, {\n  \"sankey\": function() { return /* reexport */ sankey; },\n  \"sankeyCenter\": function() { return /* reexport */ center; },\n  \"sankeyJustify\": function() { return /* reexport */ justify; },\n  \"sankeyLeft\": function() { return /* reexport */ left; },\n  \"sankeyLinkHorizontal\": function() { return /* reexport */ sankeyLinkHorizontal; },\n  \"sankeyRight\": function() { return /* reexport */ right; }\n});\n\n// EXTERNAL MODULE: ./node_modules/d3-array/src/index.js + 14 modules\nvar src = __nested_webpack_require_4668375__(33064);\n// EXTERNAL MODULE: ./node_modules/d3-collection/src/index.js + 3 modules\nvar d3_collection_src = __nested_webpack_require_4668375__(15140);\n;// CONCATENATED MODULE: ./node_modules/@plotly/d3-sankey/src/align.js\n\n\nfunction targetDepth(d) {\n  return d.target.depth;\n}\n\nfunction left(node) {\n  return node.depth;\n}\n\nfunction right(node, n) {\n  return n - 1 - node.height;\n}\n\nfunction justify(node, n) {\n  return node.sourceLinks.length ? node.depth : n - 1;\n}\n\nfunction center(node) {\n  return node.targetLinks.length ? node.depth\n      : node.sourceLinks.length ? (0,src/* min */.VV)(node.sourceLinks, targetDepth) - 1\n      : 0;\n}\n\n;// CONCATENATED MODULE: ./node_modules/@plotly/d3-sankey/src/constant.js\nfunction constant(x) {\n  return function() {\n    return x;\n  };\n}\n\n;// CONCATENATED MODULE: ./node_modules/@plotly/d3-sankey/src/sankey.js\n\n\n\n\n\nfunction ascendingSourceBreadth(a, b) {\n  return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\n\nfunction ascendingTargetBreadth(a, b) {\n  return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\n\nfunction ascendingBreadth(a, b) {\n  return a.y0 - b.y0;\n}\n\nfunction value(d) {\n  return d.value;\n}\n\nfunction nodeCenter(node) {\n  return (node.y0 + node.y1) / 2;\n}\n\nfunction weightedSource(link) {\n  return nodeCenter(link.source) * link.value;\n}\n\nfunction weightedTarget(link) {\n  return nodeCenter(link.target) * link.value;\n}\n\nfunction defaultId(d) {\n  return d.index;\n}\n\nfunction defaultNodes(graph) {\n  return graph.nodes;\n}\n\nfunction defaultLinks(graph) {\n  return graph.links;\n}\n\nfunction find(nodeById, id) {\n  var node = nodeById.get(id);\n  if (!node) throw new Error(\"missing: \" + id);\n  return node;\n}\n\n/* harmony default export */ function sankey() {\n  var x0 = 0, y0 = 0, x1 = 1, y1 = 1, // extent\n      dx = 24, // nodeWidth\n      py = 8, // nodePadding\n      id = defaultId,\n      align = justify,\n      nodes = defaultNodes,\n      links = defaultLinks,\n      iterations = 32,\n      maxPaddedSpace = 2 / 3; // Defined as a fraction of the total available space\n\n  function sankey() {\n    var graph = {nodes: nodes.apply(null, arguments), links: links.apply(null, arguments)};\n    computeNodeLinks(graph);\n    computeNodeValues(graph);\n    computeNodeDepths(graph);\n    computeNodeBreadths(graph, iterations);\n    computeLinkBreadths(graph);\n    return graph;\n  }\n\n  sankey.update = function(graph) {\n    computeLinkBreadths(graph);\n    return graph;\n  };\n\n  sankey.nodeId = function(_) {\n    return arguments.length ? (id = typeof _ === \"function\" ? _ : constant(_), sankey) : id;\n  };\n\n  sankey.nodeAlign = function(_) {\n    return arguments.length ? (align = typeof _ === \"function\" ? _ : constant(_), sankey) : align;\n  };\n\n  sankey.nodeWidth = function(_) {\n    return arguments.length ? (dx = +_, sankey) : dx;\n  };\n\n  sankey.nodePadding = function(_) {\n    return arguments.length ? (py = +_, sankey) : py;\n  };\n\n  sankey.nodes = function(_) {\n    return arguments.length ? (nodes = typeof _ === \"function\" ? _ : constant(_), sankey) : nodes;\n  };\n\n  sankey.links = function(_) {\n    return arguments.length ? (links = typeof _ === \"function\" ? _ : constant(_), sankey) : links;\n  };\n\n  sankey.size = function(_) {\n    return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankey) : [x1 - x0, y1 - y0];\n  };\n\n  sankey.extent = function(_) {\n    return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankey) : [[x0, y0], [x1, y1]];\n  };\n\n  sankey.iterations = function(_) {\n    return arguments.length ? (iterations = +_, sankey) : iterations;\n  };\n\n  // Populate the sourceLinks and targetLinks for each node.\n  // Also, if the source and target are not objects, assume they are indices.\n  function computeNodeLinks(graph) {\n    graph.nodes.forEach(function(node, i) {\n      node.index = i;\n      node.sourceLinks = [];\n      node.targetLinks = [];\n    });\n\n    var nodeById = (0,d3_collection_src/* map */.UI)(graph.nodes, id);\n    graph.links.forEach(function(link, i) {\n      link.index = i;\n      var source = link.source, target = link.target;\n      if (typeof source !== \"object\") source = link.source = find(nodeById, source);\n      if (typeof target !== \"object\") target = link.target = find(nodeById, target);\n      source.sourceLinks.push(link);\n      target.targetLinks.push(link);\n    });\n  }\n\n  // Compute the value (size) of each node by summing the associated links.\n  function computeNodeValues(graph) {\n    graph.nodes.forEach(function(node) {\n      node.value = Math.max(\n        (0,src/* sum */.Sm)(node.sourceLinks, value),\n        (0,src/* sum */.Sm)(node.targetLinks, value)\n      );\n    });\n  }\n\n  // Iteratively assign the depth (x-position) for each node.\n  // Nodes are assigned the maximum depth of incoming neighbors plus one;\n  // nodes with no incoming links are assigned depth zero, while\n  // nodes with no outgoing links are assigned the maximum depth.\n  function computeNodeDepths(graph) {\n    var nodes, next, x;\n\n    for (nodes = graph.nodes, next = [], x = 0; nodes.length; ++x, nodes = next, next = []) {\n      nodes.forEach(function(node) {\n        node.depth = x;\n        node.sourceLinks.forEach(function(link) {\n          if (next.indexOf(link.target) < 0) {\n            next.push(link.target);\n          }\n        });\n      });\n    }\n\n    for (nodes = graph.nodes, next = [], x = 0; nodes.length; ++x, nodes = next, next = []) {\n      nodes.forEach(function(node) {\n        node.height = x;\n        node.targetLinks.forEach(function(link) {\n          if (next.indexOf(link.source) < 0) {\n            next.push(link.source);\n          }\n        });\n      });\n    }\n\n    var kx = (x1 - x0 - dx) / (x - 1);\n    graph.nodes.forEach(function(node) {\n      node.x1 = (node.x0 = x0 + Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x)))) * kx) + dx;\n    });\n  }\n\n  function computeNodeBreadths(graph) {\n    var columns = (0,d3_collection_src/* nest */.b1)()\n        .key(function(d) { return d.x0; })\n        .sortKeys(src/* ascending */.j2)\n        .entries(graph.nodes)\n        .map(function(d) { return d.values; });\n\n    //\n    initializeNodeBreadth();\n    resolveCollisions();\n    for (var alpha = 1, n = iterations; n > 0; --n) {\n      relaxRightToLeft(alpha *= 0.99);\n      resolveCollisions();\n      relaxLeftToRight(alpha);\n      resolveCollisions();\n    }\n\n    function initializeNodeBreadth() {\n      var L = (0,src/* max */.Fp)(columns, function(nodes) {\n        return nodes.length;\n      });\n      var maxNodePadding = maxPaddedSpace * (y1 - y0) / (L - 1);\n      if(py > maxNodePadding) py = maxNodePadding;\n      var ky = (0,src/* min */.VV)(columns, function(nodes) {\n        return (y1 - y0 - (nodes.length - 1) * py) / (0,src/* sum */.Sm)(nodes, value);\n      });\n\n      columns.forEach(function(nodes) {\n        nodes.forEach(function(node, i) {\n          node.y1 = (node.y0 = i) + node.value * ky;\n        });\n      });\n\n      graph.links.forEach(function(link) {\n        link.width = link.value * ky;\n      });\n    }\n\n    function relaxLeftToRight(alpha) {\n      columns.forEach(function(nodes) {\n        nodes.forEach(function(node) {\n          if (node.targetLinks.length) {\n            var dy = ((0,src/* sum */.Sm)(node.targetLinks, weightedSource) / (0,src/* sum */.Sm)(node.targetLinks, value) - nodeCenter(node)) * alpha;\n            node.y0 += dy, node.y1 += dy;\n          }\n        });\n      });\n    }\n\n    function relaxRightToLeft(alpha) {\n      columns.slice().reverse().forEach(function(nodes) {\n        nodes.forEach(function(node) {\n          if (node.sourceLinks.length) {\n            var dy = ((0,src/* sum */.Sm)(node.sourceLinks, weightedTarget) / (0,src/* sum */.Sm)(node.sourceLinks, value) - nodeCenter(node)) * alpha;\n            node.y0 += dy, node.y1 += dy;\n          }\n        });\n      });\n    }\n\n    function resolveCollisions() {\n      columns.forEach(function(nodes) {\n        var node,\n            dy,\n            y = y0,\n            n = nodes.length,\n            i;\n\n        // Push any overlapping nodes down.\n        nodes.sort(ascendingBreadth);\n        for (i = 0; i < n; ++i) {\n          node = nodes[i];\n          dy = y - node.y0;\n          if (dy > 0) node.y0 += dy, node.y1 += dy;\n          y = node.y1 + py;\n        }\n\n        // If the bottommost node goes outside the bounds, push it back up.\n        dy = y - py - y1;\n        if (dy > 0) {\n          y = (node.y0 -= dy), node.y1 -= dy;\n\n          // Push any overlapping nodes back up.\n          for (i = n - 2; i >= 0; --i) {\n            node = nodes[i];\n            dy = node.y1 + py - y;\n            if (dy > 0) node.y0 -= dy, node.y1 -= dy;\n            y = node.y0;\n          }\n        }\n      });\n    }\n  }\n\n  function computeLinkBreadths(graph) {\n    graph.nodes.forEach(function(node) {\n      node.sourceLinks.sort(ascendingTargetBreadth);\n      node.targetLinks.sort(ascendingSourceBreadth);\n    });\n    graph.nodes.forEach(function(node) {\n      var y0 = node.y0, y1 = y0;\n      node.sourceLinks.forEach(function(link) {\n        link.y0 = y0 + link.width / 2, y0 += link.width;\n      });\n      node.targetLinks.forEach(function(link) {\n        link.y1 = y1 + link.width / 2, y1 += link.width;\n      });\n    });\n  }\n\n  return sankey;\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-shape/src/link/index.js + 4 modules\nvar src_link = __nested_webpack_require_4668375__(45879);\n;// CONCATENATED MODULE: ./node_modules/@plotly/d3-sankey/src/sankeyLinkHorizontal.js\n\n\nfunction horizontalSource(d) {\n  return [d.source.x1, d.y0];\n}\n\nfunction horizontalTarget(d) {\n  return [d.target.x0, d.y1];\n}\n\n/* harmony default export */ function sankeyLinkHorizontal() {\n  return (0,src_link/* linkHorizontal */.h5)()\n      .source(horizontalSource)\n      .target(horizontalTarget);\n}\n\n;// CONCATENATED MODULE: ./node_modules/@plotly/d3-sankey/index.js\n\n\n\n\n\n/***/ }),\n\n/***/ 39898:\n/***/ (function(module, exports, __nested_webpack_require_4678912__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;!function() {\n  var d3 = {\n    version: \"3.8.0\"\n  };\n  var d3_arraySlice = [].slice, d3_array = function(list) {\n    return d3_arraySlice.call(list);\n  };\n  var d3_document = self.document;\n  function d3_documentElement(node) {\n    return node && (node.ownerDocument || node.document || node).documentElement;\n  }\n  function d3_window(node) {\n    return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n  }\n  if (d3_document) {\n    try {\n      d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n    } catch (e) {\n      d3_array = function(list) {\n        var i = list.length, array = new Array(i);\n        while (i--) array[i] = list[i];\n        return array;\n      };\n    }\n  }\n  if (!Date.now) Date.now = function() {\n    return +new Date();\n  };\n  if (d3_document) {\n    try {\n      d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n    } catch (error) {\n      var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n      d3_element_prototype.setAttribute = function(name, value) {\n        d3_element_setAttribute.call(this, name, value + \"\");\n      };\n      d3_element_prototype.setAttributeNS = function(space, local, value) {\n        d3_element_setAttributeNS.call(this, space, local, value + \"\");\n      };\n      d3_style_prototype.setProperty = function(name, value, priority) {\n        d3_style_setProperty.call(this, name, value + \"\", priority);\n      };\n    }\n  }\n  d3.ascending = d3_ascending;\n  function d3_ascending(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n  d3.descending = function(a, b) {\n    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n  };\n  d3.min = function(array, f) {\n    var i = -1, n = array.length, a, b;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n    }\n    return a;\n  };\n  d3.max = function(array, f) {\n    var i = -1, n = array.length, a, b;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n    }\n    return a;\n  };\n  d3.extent = function(array, f) {\n    var i = -1, n = array.length, a, b, c;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = c = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = c = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n    return [ a, c ];\n  };\n  function d3_number(x) {\n    return x === null ? NaN : +x;\n  }\n  function d3_numeric(x) {\n    return !isNaN(x);\n  }\n  d3.sum = function(array, f) {\n    var s = 0, n = array.length, a, i = -1;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n    } else {\n      while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n    }\n    return s;\n  };\n  d3.mean = function(array, f) {\n    var s = 0, n = array.length, a, i = -1, j = n;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n    } else {\n      while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n    }\n    if (j) return s / j;\n  };\n  d3.quantile = function(values, p) {\n    var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n    return e ? v + e * (values[h] - v) : v;\n  };\n  d3.median = function(array, f) {\n    var numbers = [], n = array.length, a, i = -1;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n    } else {\n      while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n    }\n    if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n  };\n  d3.variance = function(array, f) {\n    var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n    if (arguments.length === 1) {\n      while (++i < n) {\n        if (d3_numeric(a = d3_number(array[i]))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    } else {\n      while (++i < n) {\n        if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n    if (j > 1) return s / (j - 1);\n  };\n  d3.deviation = function() {\n    var v = d3.variance.apply(this, arguments);\n    return v ? Math.sqrt(v) : v;\n  };\n  function d3_bisector(compare) {\n    return {\n      left: function(a, x, lo, hi) {\n        if (arguments.length < 3) lo = 0;\n        if (arguments.length < 4) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n        }\n        return lo;\n      },\n      right: function(a, x, lo, hi) {\n        if (arguments.length < 3) lo = 0;\n        if (arguments.length < 4) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n        }\n        return lo;\n      }\n    };\n  }\n  var d3_bisect = d3_bisector(d3_ascending);\n  d3.bisectLeft = d3_bisect.left;\n  d3.bisect = d3.bisectRight = d3_bisect.right;\n  d3.bisector = function(f) {\n    return d3_bisector(f.length === 1 ? function(d, x) {\n      return d3_ascending(f(d), x);\n    } : f);\n  };\n  d3.shuffle = function(array, i0, i1) {\n    if ((m = arguments.length) < 3) {\n      i1 = array.length;\n      if (m < 2) i0 = 0;\n    }\n    var m = i1 - i0, t, i;\n    while (m) {\n      i = Math.random() * m-- | 0;\n      t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n    }\n    return array;\n  };\n  d3.permute = function(array, indexes) {\n    var i = indexes.length, permutes = new Array(i);\n    while (i--) permutes[i] = array[indexes[i]];\n    return permutes;\n  };\n  d3.pairs = function(array) {\n    var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n    while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n    return pairs;\n  };\n  d3.transpose = function(matrix) {\n    if (!(n = matrix.length)) return [];\n    for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n      for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n        row[j] = matrix[j][i];\n      }\n    }\n    return transpose;\n  };\n  function d3_transposeLength(d) {\n    return d.length;\n  }\n  d3.zip = function() {\n    return d3.transpose(arguments);\n  };\n  d3.keys = function(map) {\n    var keys = [];\n    for (var key in map) keys.push(key);\n    return keys;\n  };\n  d3.values = function(map) {\n    var values = [];\n    for (var key in map) values.push(map[key]);\n    return values;\n  };\n  d3.entries = function(map) {\n    var entries = [];\n    for (var key in map) entries.push({\n      key: key,\n      value: map[key]\n    });\n    return entries;\n  };\n  d3.merge = function(arrays) {\n    var n = arrays.length, m, i = -1, j = 0, merged, array;\n    while (++i < n) j += arrays[i].length;\n    merged = new Array(j);\n    while (--n >= 0) {\n      array = arrays[n];\n      m = array.length;\n      while (--m >= 0) {\n        merged[--j] = array[m];\n      }\n    }\n    return merged;\n  };\n  var abs = Math.abs;\n  d3.range = function(start, stop, step) {\n    if (arguments.length < 3) {\n      step = 1;\n      if (arguments.length < 2) {\n        stop = start;\n        start = 0;\n      }\n    }\n    if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n    var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n    start *= k, stop *= k, step *= k;\n    if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n    return range;\n  };\n  function d3_range_integerScale(x) {\n    var k = 1;\n    while (x * k % 1) k *= 10;\n    return k;\n  }\n  function d3_class(ctor, properties) {\n    for (var key in properties) {\n      Object.defineProperty(ctor.prototype, key, {\n        value: properties[key],\n        enumerable: false\n      });\n    }\n  }\n  d3.map = function(object, f) {\n    var map = new d3_Map();\n    if (object instanceof d3_Map) {\n      object.forEach(function(key, value) {\n        map.set(key, value);\n      });\n    } else if (Array.isArray(object)) {\n      var i = -1, n = object.length, o;\n      if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n    } else {\n      for (var key in object) map.set(key, object[key]);\n    }\n    return map;\n  };\n  function d3_Map() {\n    this._ = Object.create(null);\n  }\n  var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n  d3_class(d3_Map, {\n    has: d3_map_has,\n    get: function(key) {\n      return this._[d3_map_escape(key)];\n    },\n    set: function(key, value) {\n      return this._[d3_map_escape(key)] = value;\n    },\n    remove: d3_map_remove,\n    keys: d3_map_keys,\n    values: function() {\n      var values = [];\n      for (var key in this._) values.push(this._[key]);\n      return values;\n    },\n    entries: function() {\n      var entries = [];\n      for (var key in this._) entries.push({\n        key: d3_map_unescape(key),\n        value: this._[key]\n      });\n      return entries;\n    },\n    size: d3_map_size,\n    empty: d3_map_empty,\n    forEach: function(f) {\n      for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n    }\n  });\n  function d3_map_escape(key) {\n    return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n  }\n  function d3_map_unescape(key) {\n    return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n  }\n  function d3_map_has(key) {\n    return d3_map_escape(key) in this._;\n  }\n  function d3_map_remove(key) {\n    return (key = d3_map_escape(key)) in this._ && delete this._[key];\n  }\n  function d3_map_keys() {\n    var keys = [];\n    for (var key in this._) keys.push(d3_map_unescape(key));\n    return keys;\n  }\n  function d3_map_size() {\n    var size = 0;\n    for (var key in this._) ++size;\n    return size;\n  }\n  function d3_map_empty() {\n    for (var key in this._) return false;\n    return true;\n  }\n  d3.nest = function() {\n    var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n    function map(mapType, array, depth) {\n      if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n      var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n      while (++i < n) {\n        if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n          values.push(object);\n        } else {\n          valuesByKey.set(keyValue, [ object ]);\n        }\n      }\n      if (mapType) {\n        object = mapType();\n        setter = function(keyValue, values) {\n          object.set(keyValue, map(mapType, values, depth));\n        };\n      } else {\n        object = {};\n        setter = function(keyValue, values) {\n          object[keyValue] = map(mapType, values, depth);\n        };\n      }\n      valuesByKey.forEach(setter);\n      return object;\n    }\n    function entries(map, depth) {\n      if (depth >= keys.length) return map;\n      var array = [], sortKey = sortKeys[depth++];\n      map.forEach(function(key, keyMap) {\n        array.push({\n          key: key,\n          values: entries(keyMap, depth)\n        });\n      });\n      return sortKey ? array.sort(function(a, b) {\n        return sortKey(a.key, b.key);\n      }) : array;\n    }\n    nest.map = function(array, mapType) {\n      return map(mapType, array, 0);\n    };\n    nest.entries = function(array) {\n      return entries(map(d3.map, array, 0), 0);\n    };\n    nest.key = function(d) {\n      keys.push(d);\n      return nest;\n    };\n    nest.sortKeys = function(order) {\n      sortKeys[keys.length - 1] = order;\n      return nest;\n    };\n    nest.sortValues = function(order) {\n      sortValues = order;\n      return nest;\n    };\n    nest.rollup = function(f) {\n      rollup = f;\n      return nest;\n    };\n    return nest;\n  };\n  d3.set = function(array) {\n    var set = new d3_Set();\n    if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n    return set;\n  };\n  function d3_Set() {\n    this._ = Object.create(null);\n  }\n  d3_class(d3_Set, {\n    has: d3_map_has,\n    add: function(key) {\n      this._[d3_map_escape(key += \"\")] = true;\n      return key;\n    },\n    remove: d3_map_remove,\n    values: d3_map_keys,\n    size: d3_map_size,\n    empty: d3_map_empty,\n    forEach: function(f) {\n      for (var key in this._) f.call(this, d3_map_unescape(key));\n    }\n  });\n  d3.behavior = {};\n  function d3_identity(d) {\n    return d;\n  }\n  d3.rebind = function(target, source) {\n    var i = 1, n = arguments.length, method;\n    while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n    return target;\n  };\n  function d3_rebind(target, source, method) {\n    return function() {\n      var value = method.apply(source, arguments);\n      return value === source ? target : value;\n    };\n  }\n  function d3_vendorSymbol(object, name) {\n    if (name in object) return name;\n    name = name.charAt(0).toUpperCase() + name.slice(1);\n    for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n      var prefixName = d3_vendorPrefixes[i] + name;\n      if (prefixName in object) return prefixName;\n    }\n  }\n  var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n  function d3_noop() {}\n  d3.dispatch = function() {\n    var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n    return dispatch;\n  };\n  function d3_dispatch() {}\n  d3_dispatch.prototype.on = function(type, listener) {\n    var i = type.indexOf(\".\"), name = \"\";\n    if (i >= 0) {\n      name = type.slice(i + 1);\n      type = type.slice(0, i);\n    }\n    if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n    if (arguments.length === 2) {\n      if (listener == null) for (type in this) {\n        if (this.hasOwnProperty(type)) this[type].on(name, null);\n      }\n      return this;\n    }\n  };\n  function d3_dispatch_event(dispatch) {\n    var listeners = [], listenerByName = new d3_Map();\n    function event() {\n      var z = listeners, i = -1, n = z.length, l;\n      while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n      return dispatch;\n    }\n    event.on = function(name, listener) {\n      var l = listenerByName.get(name), i;\n      if (arguments.length < 2) return l && l.on;\n      if (l) {\n        l.on = null;\n        listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n        listenerByName.remove(name);\n      }\n      if (listener) listeners.push(listenerByName.set(name, {\n        on: listener\n      }));\n      return dispatch;\n    };\n    return event;\n  }\n  d3.event = null;\n  function d3_eventPreventDefault() {\n    d3.event.preventDefault();\n  }\n  function d3_eventSource() {\n    var e = d3.event, s;\n    while (s = e.sourceEvent) e = s;\n    return e;\n  }\n  function d3_eventDispatch(target) {\n    var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n    dispatch.of = function(thiz, argumentz) {\n      return function(e1) {\n        try {\n          var e0 = e1.sourceEvent = d3.event;\n          e1.target = target;\n          d3.event = e1;\n          dispatch[e1.type].apply(thiz, argumentz);\n        } finally {\n          d3.event = e0;\n        }\n      };\n    };\n    return dispatch;\n  }\n  d3.requote = function(s) {\n    return s.replace(d3_requote_re, \"\\\\$&\");\n  };\n  var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n  var d3_subclass = {}.__proto__ ? function(object, prototype) {\n    object.__proto__ = prototype;\n  } : function(object, prototype) {\n    for (var property in prototype) object[property] = prototype[property];\n  };\n  function d3_selection(groups) {\n    d3_subclass(groups, d3_selectionPrototype);\n    return groups;\n  }\n  var d3_select = function(s, n) {\n    return n.querySelector(s);\n  }, d3_selectAll = function(s, n) {\n    return n.querySelectorAll(s);\n  }, d3_selectMatches = function(n, s) {\n    var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n    d3_selectMatches = function(n, s) {\n      return d3_selectMatcher.call(n, s);\n    };\n    return d3_selectMatches(n, s);\n  };\n  if (typeof Sizzle === \"function\") {\n    d3_select = function(s, n) {\n      return Sizzle(s, n)[0] || null;\n    };\n    d3_selectAll = Sizzle;\n    d3_selectMatches = Sizzle.matchesSelector;\n  }\n  d3.selection = function() {\n    return d3.select(d3_document.documentElement);\n  };\n  var d3_selectionPrototype = d3.selection.prototype = [];\n  d3_selectionPrototype.select = function(selector) {\n    var subgroups = [], subgroup, subnode, group, node;\n    selector = d3_selection_selector(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = (group = this[j]).parentNode;\n      for (var i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n          if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_selector(selector) {\n    return typeof selector === \"function\" ? selector : function() {\n      return d3_select(selector, this);\n    };\n  }\n  d3_selectionPrototype.selectAll = function(selector) {\n    var subgroups = [], subgroup, node;\n    selector = d3_selection_selectorAll(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n          subgroup.parentNode = node;\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_selectorAll(selector) {\n    return typeof selector === \"function\" ? selector : function() {\n      return d3_selectAll(selector, this);\n    };\n  }\n  var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n  var d3_nsPrefix = {\n    svg: \"http://www.w3.org/2000/svg\",\n    xhtml: d3_nsXhtml,\n    xlink: \"http://www.w3.org/1999/xlink\",\n    xml: \"http://www.w3.org/XML/1998/namespace\",\n    xmlns: \"http://www.w3.org/2000/xmlns/\"\n  };\n  d3.ns = {\n    prefix: d3_nsPrefix,\n    qualify: function(name) {\n      var i = name.indexOf(\":\"), prefix = name;\n      if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n      return d3_nsPrefix.hasOwnProperty(prefix) ? {\n        space: d3_nsPrefix[prefix],\n        local: name\n      } : name;\n    }\n  };\n  d3_selectionPrototype.attr = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") {\n        var node = this.node();\n        name = d3.ns.qualify(name);\n        return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n      }\n      for (value in name) this.each(d3_selection_attr(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_attr(name, value));\n  };\n  function d3_selection_attr(name, value) {\n    name = d3.ns.qualify(name);\n    function attrNull() {\n      this.removeAttribute(name);\n    }\n    function attrNullNS() {\n      this.removeAttributeNS(name.space, name.local);\n    }\n    function attrConstant() {\n      this.setAttribute(name, value);\n    }\n    function attrConstantNS() {\n      this.setAttributeNS(name.space, name.local, value);\n    }\n    function attrFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n    }\n    function attrFunctionNS() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n    }\n    return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n  }\n  function d3_collapse(s) {\n    return s.trim().replace(/\\s+/g, \" \");\n  }\n  d3_selectionPrototype.classed = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") {\n        var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n        if (value = node.classList) {\n          while (++i < n) if (!value.contains(name[i])) return false;\n        } else {\n          value = node.getAttribute(\"class\");\n          while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n        }\n        return true;\n      }\n      for (value in name) this.each(d3_selection_classed(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_classed(name, value));\n  };\n  function d3_selection_classedRe(name) {\n    return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n  }\n  function d3_selection_classes(name) {\n    return (name + \"\").trim().split(/^|\\s+/);\n  }\n  function d3_selection_classed(name, value) {\n    name = d3_selection_classes(name).map(d3_selection_classedName);\n    var n = name.length;\n    function classedConstant() {\n      var i = -1;\n      while (++i < n) name[i](this, value);\n    }\n    function classedFunction() {\n      var i = -1, x = value.apply(this, arguments);\n      while (++i < n) name[i](this, x);\n    }\n    return typeof value === \"function\" ? classedFunction : classedConstant;\n  }\n  function d3_selection_classedName(name) {\n    var re = d3_selection_classedRe(name);\n    return function(node, value) {\n      if (c = node.classList) return value ? c.add(name) : c.remove(name);\n      var c = node.getAttribute(\"class\") || \"\";\n      if (value) {\n        re.lastIndex = 0;\n        if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n      } else {\n        node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n      }\n    };\n  }\n  d3_selectionPrototype.style = function(name, value, priority) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof name !== \"string\") {\n        if (n < 2) value = \"\";\n        for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n        return this;\n      }\n      if (n < 2) {\n        var node = this.node();\n        return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n      }\n      priority = \"\";\n    }\n    return this.each(d3_selection_style(name, value, priority));\n  };\n  function d3_selection_style(name, value, priority) {\n    function styleNull() {\n      this.style.removeProperty(name);\n    }\n    function styleConstant() {\n      this.style.setProperty(name, value, priority);\n    }\n    function styleFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n    }\n    return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n  }\n  d3_selectionPrototype.property = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") return this.node()[name];\n      for (value in name) this.each(d3_selection_property(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_property(name, value));\n  };\n  function d3_selection_property(name, value) {\n    function propertyNull() {\n      delete this[name];\n    }\n    function propertyConstant() {\n      this[name] = value;\n    }\n    function propertyFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) delete this[name]; else this[name] = x;\n    }\n    return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n  }\n  d3_selectionPrototype.text = function(value) {\n    return arguments.length ? this.each(typeof value === \"function\" ? function() {\n      var v = value.apply(this, arguments);\n      this.textContent = v == null ? \"\" : v;\n    } : value == null ? function() {\n      this.textContent = \"\";\n    } : function() {\n      this.textContent = value;\n    }) : this.node().textContent;\n  };\n  d3_selectionPrototype.html = function(value) {\n    return arguments.length ? this.each(typeof value === \"function\" ? function() {\n      var v = value.apply(this, arguments);\n      this.innerHTML = v == null ? \"\" : v;\n    } : value == null ? function() {\n      this.innerHTML = \"\";\n    } : function() {\n      this.innerHTML = value;\n    }) : this.node().innerHTML;\n  };\n  d3_selectionPrototype.append = function(name) {\n    name = d3_selection_creator(name);\n    return this.select(function() {\n      return this.appendChild(name.apply(this, arguments));\n    });\n  };\n  function d3_selection_creator(name) {\n    function create() {\n      var document = this.ownerDocument, namespace = this.namespaceURI;\n      return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n    }\n    function createNS() {\n      return this.ownerDocument.createElementNS(name.space, name.local);\n    }\n    return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n  }\n  d3_selectionPrototype.insert = function(name, before) {\n    name = d3_selection_creator(name);\n    before = d3_selection_selector(before);\n    return this.select(function() {\n      return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n    });\n  };\n  d3_selectionPrototype.remove = function() {\n    return this.each(d3_selectionRemove);\n  };\n  function d3_selectionRemove() {\n    var parent = this.parentNode;\n    if (parent) parent.removeChild(this);\n  }\n  d3_selectionPrototype.data = function(value, key) {\n    var i = -1, n = this.length, group, node;\n    if (!arguments.length) {\n      value = new Array(n = (group = this[0]).length);\n      while (++i < n) {\n        if (node = group[i]) {\n          value[i] = node.__data__;\n        }\n      }\n      return value;\n    }\n    function bind(group, groupData) {\n      var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n      if (key) {\n        var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n        for (i = -1; ++i < n; ) {\n          if (node = group[i]) {\n            if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n              exitNodes[i] = node;\n            } else {\n              nodeByKeyValue.set(keyValue, node);\n            }\n            keyValues[i] = keyValue;\n          }\n        }\n        for (i = -1; ++i < m; ) {\n          if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n            enterNodes[i] = d3_selection_dataNode(nodeData);\n          } else if (node !== true) {\n            updateNodes[i] = node;\n            node.__data__ = nodeData;\n          }\n          nodeByKeyValue.set(keyValue, true);\n        }\n        for (i = -1; ++i < n; ) {\n          if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n            exitNodes[i] = group[i];\n          }\n        }\n      } else {\n        for (i = -1; ++i < n0; ) {\n          node = group[i];\n          nodeData = groupData[i];\n          if (node) {\n            node.__data__ = nodeData;\n            updateNodes[i] = node;\n          } else {\n            enterNodes[i] = d3_selection_dataNode(nodeData);\n          }\n        }\n        for (;i < m; ++i) {\n          enterNodes[i] = d3_selection_dataNode(groupData[i]);\n        }\n        for (;i < n; ++i) {\n          exitNodes[i] = group[i];\n        }\n      }\n      enterNodes.update = updateNodes;\n      enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n      enter.push(enterNodes);\n      update.push(updateNodes);\n      exit.push(exitNodes);\n    }\n    var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n    if (typeof value === \"function\") {\n      while (++i < n) {\n        bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n      }\n    } else {\n      while (++i < n) {\n        bind(group = this[i], value);\n      }\n    }\n    update.enter = function() {\n      return enter;\n    };\n    update.exit = function() {\n      return exit;\n    };\n    return update;\n  };\n  function d3_selection_dataNode(data) {\n    return {\n      __data__: data\n    };\n  }\n  d3_selectionPrototype.datum = function(value) {\n    return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n  };\n  d3_selectionPrototype.filter = function(filter) {\n    var subgroups = [], subgroup, group, node;\n    if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = (group = this[j]).parentNode;\n      for (var i = 0, n = group.length; i < n; i++) {\n        if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n          subgroup.push(node);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_filter(selector) {\n    return function() {\n      return d3_selectMatches(this, selector);\n    };\n  }\n  d3_selectionPrototype.order = function() {\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n        if (node = group[i]) {\n          if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n          next = node;\n        }\n      }\n    }\n    return this;\n  };\n  d3_selectionPrototype.sort = function(comparator) {\n    comparator = d3_selection_sortComparator.apply(this, arguments);\n    for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n    return this.order();\n  };\n  function d3_selection_sortComparator(comparator) {\n    if (!arguments.length) comparator = d3_ascending;\n    return function(a, b) {\n      return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n    };\n  }\n  d3_selectionPrototype.each = function(callback) {\n    return d3_selection_each(this, function(node, i, j) {\n      callback.call(node, node.__data__, i, j);\n    });\n  };\n  function d3_selection_each(groups, callback) {\n    for (var j = 0, m = groups.length; j < m; j++) {\n      for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n        if (node = group[i]) callback(node, i, j);\n      }\n    }\n    return groups;\n  }\n  d3_selectionPrototype.call = function(callback) {\n    var args = d3_array(arguments);\n    callback.apply(args[0] = this, args);\n    return this;\n  };\n  d3_selectionPrototype.empty = function() {\n    return !this.node();\n  };\n  d3_selectionPrototype.node = function() {\n    for (var j = 0, m = this.length; j < m; j++) {\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        var node = group[i];\n        if (node) return node;\n      }\n    }\n    return null;\n  };\n  d3_selectionPrototype.size = function() {\n    var n = 0;\n    d3_selection_each(this, function() {\n      ++n;\n    });\n    return n;\n  };\n  function d3_selection_enter(selection) {\n    d3_subclass(selection, d3_selection_enterPrototype);\n    return selection;\n  }\n  var d3_selection_enterPrototype = [];\n  d3.selection.enter = d3_selection_enter;\n  d3.selection.enter.prototype = d3_selection_enterPrototype;\n  d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n  d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n  d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n  d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n  d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n  d3_selection_enterPrototype.select = function(selector) {\n    var subgroups = [], subgroup, subnode, upgroup, group, node;\n    for (var j = -1, m = this.length; ++j < m; ) {\n      upgroup = (group = this[j]).update;\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = group.parentNode;\n      for (var i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n          subnode.__data__ = node.__data__;\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  d3_selection_enterPrototype.insert = function(name, before) {\n    if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n    return d3_selectionPrototype.insert.call(this, name, before);\n  };\n  function d3_selection_enterInsertBefore(enter) {\n    var i0, j0;\n    return function(d, i, j) {\n      var group = enter[j].update, n = group.length, node;\n      if (j != j0) j0 = j, i0 = 0;\n      if (i >= i0) i0 = i + 1;\n      while (!(node = group[i0]) && ++i0 < n) ;\n      return node;\n    };\n  }\n  d3.select = function(node) {\n    var group;\n    if (typeof node === \"string\") {\n      group = [ d3_select(node, d3_document) ];\n      group.parentNode = d3_document.documentElement;\n    } else {\n      group = [ node ];\n      group.parentNode = d3_documentElement(node);\n    }\n    return d3_selection([ group ]);\n  };\n  d3.selectAll = function(nodes) {\n    var group;\n    if (typeof nodes === \"string\") {\n      group = d3_array(d3_selectAll(nodes, d3_document));\n      group.parentNode = d3_document.documentElement;\n    } else {\n      group = d3_array(nodes);\n      group.parentNode = null;\n    }\n    return d3_selection([ group ]);\n  };\n  d3_selectionPrototype.on = function(type, listener, capture) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof type !== \"string\") {\n        if (n < 2) listener = false;\n        for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n        return this;\n      }\n      if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n      capture = false;\n    }\n    return this.each(d3_selection_on(type, listener, capture));\n  };\n  function d3_selection_on(type, listener, capture) {\n    var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n    if (i > 0) type = type.slice(0, i);\n    var filter = d3_selection_onFilters.get(type);\n    if (filter) type = filter, wrap = d3_selection_onFilter;\n    function onRemove() {\n      var l = this[name];\n      if (l) {\n        this.removeEventListener(type, l, l.$);\n        delete this[name];\n      }\n    }\n    function onAdd() {\n      var l = wrap(listener, d3_array(arguments));\n      onRemove.call(this);\n      this.addEventListener(type, this[name] = l, l.$ = capture);\n      l._ = listener;\n    }\n    function removeAll() {\n      var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n      for (var name in this) {\n        if (match = name.match(re)) {\n          var l = this[name];\n          this.removeEventListener(match[1], l, l.$);\n          delete this[name];\n        }\n      }\n    }\n    return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n  }\n  var d3_selection_onFilters = d3.map({\n    mouseenter: \"mouseover\",\n    mouseleave: \"mouseout\"\n  });\n  if (d3_document) {\n    d3_selection_onFilters.forEach(function(k) {\n      if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n    });\n  }\n  function d3_selection_onListener(listener, argumentz) {\n    return function(e) {\n      var o = d3.event;\n      d3.event = e;\n      argumentz[0] = this.__data__;\n      try {\n        listener.apply(this, argumentz);\n      } finally {\n        d3.event = o;\n      }\n    };\n  }\n  function d3_selection_onFilter(listener, argumentz) {\n    var l = d3_selection_onListener(listener, argumentz);\n    return function(e) {\n      var target = this, related = e.relatedTarget;\n      if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n        l.call(target, e);\n      }\n    };\n  }\n  var d3_event_dragSelect, d3_event_dragId = 0;\n  function d3_event_dragSuppress(node) {\n    var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n    if (d3_event_dragSelect == null) {\n      d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n    }\n    if (d3_event_dragSelect) {\n      var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n      style[d3_event_dragSelect] = \"none\";\n    }\n    return function(suppressClick) {\n      w.on(name, null);\n      if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n      if (suppressClick) {\n        var off = function() {\n          w.on(click, null);\n        };\n        w.on(click, function() {\n          d3_eventPreventDefault();\n          off();\n        }, true);\n        setTimeout(off, 0);\n      }\n    };\n  }\n  d3.mouse = function(container) {\n    return d3_mousePoint(container, d3_eventSource());\n  };\n  var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n  function d3_mousePoint(container, e) {\n    if (e.changedTouches) e = e.changedTouches[0];\n    var svg = container.ownerSVGElement || container;\n    if (svg.createSVGPoint) {\n      var point = svg.createSVGPoint();\n      if (d3_mouse_bug44083 < 0) {\n        var window = d3_window(container);\n        if (window.scrollX || window.scrollY) {\n          svg = d3.select(\"body\").append(\"svg\").style({\n            position: \"absolute\",\n            top: 0,\n            left: 0,\n            margin: 0,\n            padding: 0,\n            border: \"none\"\n          }, \"important\");\n          var ctm = svg[0][0].getScreenCTM();\n          d3_mouse_bug44083 = !(ctm.f || ctm.e);\n          svg.remove();\n        }\n      }\n      if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n      point.y = e.clientY;\n      point = point.matrixTransform(container.getScreenCTM().inverse());\n      return [ point.x, point.y ];\n    }\n    var rect = container.getBoundingClientRect();\n    return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n  }\n  d3.touch = function(container, touches, identifier) {\n    if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n    if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n      if ((touch = touches[i]).identifier === identifier) {\n        return d3_mousePoint(container, touch);\n      }\n    }\n  };\n  d3.behavior.drag = function() {\n    var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n    function drag() {\n      this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n    }\n    function dragstart(id, position, subject, move, end) {\n      return function() {\n        var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n        if (origin) {\n          dragOffset = origin.apply(that, arguments);\n          dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n        } else {\n          dragOffset = [ 0, 0 ];\n        }\n        dispatch({\n          type: \"dragstart\"\n        });\n        function moved() {\n          var position1 = position(parent, dragId), dx, dy;\n          if (!position1) return;\n          dx = position1[0] - position0[0];\n          dy = position1[1] - position0[1];\n          dragged |= dx | dy;\n          position0 = position1;\n          dispatch({\n            type: \"drag\",\n            x: position1[0] + dragOffset[0],\n            y: position1[1] + dragOffset[1],\n            dx: dx,\n            dy: dy\n          });\n        }\n        function ended() {\n          if (!position(parent, dragId)) return;\n          dragSubject.on(move + dragName, null).on(end + dragName, null);\n          dragRestore(dragged);\n          dispatch({\n            type: \"dragend\"\n          });\n        }\n      };\n    }\n    drag.origin = function(x) {\n      if (!arguments.length) return origin;\n      origin = x;\n      return drag;\n    };\n    return d3.rebind(drag, event, \"on\");\n  };\n  function d3_behavior_dragTouchId() {\n    return d3.event.changedTouches[0].identifier;\n  }\n  d3.touches = function(container, touches) {\n    if (arguments.length < 2) touches = d3_eventSource().touches;\n    return touches ? d3_array(touches).map(function(touch) {\n      var point = d3_mousePoint(container, touch);\n      point.identifier = touch.identifier;\n      return point;\n    }) : [];\n  };\n  var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n  function d3_sgn(x) {\n    return x > 0 ? 1 : x < 0 ? -1 : 0;\n  }\n  function d3_cross2d(a, b, c) {\n    return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n  }\n  function d3_acos(x) {\n    return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n  }\n  function d3_asin(x) {\n    return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n  }\n  function d3_sinh(x) {\n    return ((x = Math.exp(x)) - 1 / x) / 2;\n  }\n  function d3_cosh(x) {\n    return ((x = Math.exp(x)) + 1 / x) / 2;\n  }\n  function d3_tanh(x) {\n    return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n  }\n  function d3_haversin(x) {\n    return (x = Math.sin(x / 2)) * x;\n  }\n  var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n  d3.interpolateZoom = function(p0, p1) {\n    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n    if (d2 < ε2) {\n      S = Math.log(w1 / w0) / ρ;\n      i = function(t) {\n        return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n      };\n    } else {\n      var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n      S = (r1 - r0) / ρ;\n      i = function(t) {\n        var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n        return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n      };\n    }\n    i.duration = S * 1e3;\n    return i;\n  };\n  d3.behavior.zoom = function() {\n    var view = {\n      x: 0,\n      y: 0,\n      k: 1\n    }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n    if (!d3_behavior_zoomWheel) {\n      d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n        return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n      }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n        return d3.event.wheelDelta;\n      }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n        return -d3.event.detail;\n      }, \"MozMousePixelScroll\");\n    }\n    function zoom(g) {\n      g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n    }\n    zoom.event = function(g) {\n      g.each(function() {\n        var dispatch = event.of(this, arguments), view1 = view;\n        if (d3_transitionInheritId) {\n          d3.select(this).transition().each(\"start.zoom\", function() {\n            view = this.__chart__ || {\n              x: 0,\n              y: 0,\n              k: 1\n            };\n            zoomstarted(dispatch);\n          }).tween(\"zoom:zoom\", function() {\n            var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n            return function(t) {\n              var l = i(t), k = dx / l[2];\n              this.__chart__ = view = {\n                x: cx - l[0] * k,\n                y: cy - l[1] * k,\n                k: k\n              };\n              zoomed(dispatch);\n            };\n          }).each(\"interrupt.zoom\", function() {\n            zoomended(dispatch);\n          }).each(\"end.zoom\", function() {\n            zoomended(dispatch);\n          });\n        } else {\n          this.__chart__ = view;\n          zoomstarted(dispatch);\n          zoomed(dispatch);\n          zoomended(dispatch);\n        }\n      });\n    };\n    zoom.translate = function(_) {\n      if (!arguments.length) return [ view.x, view.y ];\n      view = {\n        x: +_[0],\n        y: +_[1],\n        k: view.k\n      };\n      rescale();\n      return zoom;\n    };\n    zoom.scale = function(_) {\n      if (!arguments.length) return view.k;\n      view = {\n        x: view.x,\n        y: view.y,\n        k: null\n      };\n      scaleTo(+_);\n      rescale();\n      return zoom;\n    };\n    zoom.scaleExtent = function(_) {\n      if (!arguments.length) return scaleExtent;\n      scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.center = function(_) {\n      if (!arguments.length) return center;\n      center = _ && [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.size = function(_) {\n      if (!arguments.length) return size;\n      size = _ && [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.duration = function(_) {\n      if (!arguments.length) return duration;\n      duration = +_;\n      return zoom;\n    };\n    zoom.x = function(z) {\n      if (!arguments.length) return x1;\n      x1 = z;\n      x0 = z.copy();\n      view = {\n        x: 0,\n        y: 0,\n        k: 1\n      };\n      return zoom;\n    };\n    zoom.y = function(z) {\n      if (!arguments.length) return y1;\n      y1 = z;\n      y0 = z.copy();\n      view = {\n        x: 0,\n        y: 0,\n        k: 1\n      };\n      return zoom;\n    };\n    function location(p) {\n      return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n    }\n    function point(l) {\n      return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n    }\n    function scaleTo(s) {\n      view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n    }\n    function translateTo(p, l) {\n      l = point(l);\n      view.x += p[0] - l[0];\n      view.y += p[1] - l[1];\n    }\n    function zoomTo(that, p, l, k) {\n      that.__chart__ = {\n        x: view.x,\n        y: view.y,\n        k: view.k\n      };\n      scaleTo(Math.pow(2, k));\n      translateTo(center0 = p, l);\n      that = d3.select(that);\n      if (duration > 0) that = that.transition().duration(duration);\n      that.call(zoom.event);\n    }\n    function rescale() {\n      if (x1) x1.domain(x0.range().map(function(x) {\n        return (x - view.x) / view.k;\n      }).map(x0.invert));\n      if (y1) y1.domain(y0.range().map(function(y) {\n        return (y - view.y) / view.k;\n      }).map(y0.invert));\n    }\n    function zoomstarted(dispatch) {\n      if (!zooming++) dispatch({\n        type: \"zoomstart\"\n      });\n    }\n    function zoomed(dispatch) {\n      rescale();\n      dispatch({\n        type: \"zoom\",\n        scale: view.k,\n        translate: [ view.x, view.y ]\n      });\n    }\n    function zoomended(dispatch) {\n      if (!--zooming) dispatch({\n        type: \"zoomend\"\n      }), center0 = null;\n    }\n    function mousedowned() {\n      var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n      d3_selection_interrupt.call(that);\n      zoomstarted(dispatch);\n      function moved() {\n        dragged = 1;\n        translateTo(d3.mouse(that), location0);\n        zoomed(dispatch);\n      }\n      function ended() {\n        subject.on(mousemove, null).on(mouseup, null);\n        dragRestore(dragged);\n        zoomended(dispatch);\n      }\n    }\n    function touchstarted() {\n      var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n      started();\n      zoomstarted(dispatch);\n      subject.on(mousedown, null).on(touchstart, started);\n      function relocate() {\n        var touches = d3.touches(that);\n        scale0 = view.k;\n        touches.forEach(function(t) {\n          if (t.identifier in locations0) locations0[t.identifier] = location(t);\n        });\n        return touches;\n      }\n      function started() {\n        var target = d3.event.target;\n        d3.select(target).on(touchmove, moved).on(touchend, ended);\n        targets.push(target);\n        var changed = d3.event.changedTouches;\n        for (var i = 0, n = changed.length; i < n; ++i) {\n          locations0[changed[i].identifier] = null;\n        }\n        var touches = relocate(), now = Date.now();\n        if (touches.length === 1) {\n          if (now - touchtime < 500) {\n            var p = touches[0];\n            zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n            d3_eventPreventDefault();\n          }\n          touchtime = now;\n        } else if (touches.length > 1) {\n          var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n          distance0 = dx * dx + dy * dy;\n        }\n      }\n      function moved() {\n        var touches = d3.touches(that), p0, l0, p1, l1;\n        d3_selection_interrupt.call(that);\n        for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n          p1 = touches[i];\n          if (l1 = locations0[p1.identifier]) {\n            if (l0) break;\n            p0 = p1, l0 = l1;\n          }\n        }\n        if (l1) {\n          var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n          p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n          l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n          scaleTo(scale1 * scale0);\n        }\n        touchtime = null;\n        translateTo(p0, l0);\n        zoomed(dispatch);\n      }\n      function ended() {\n        if (d3.event.touches.length) {\n          var changed = d3.event.changedTouches;\n          for (var i = 0, n = changed.length; i < n; ++i) {\n            delete locations0[changed[i].identifier];\n          }\n          for (var identifier in locations0) {\n            return void relocate();\n          }\n        }\n        d3.selectAll(targets).on(zoomName, null);\n        subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n        dragRestore();\n        zoomended(dispatch);\n      }\n    }\n    function mousewheeled() {\n      var dispatch = event.of(this, arguments);\n      if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n      translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n      mousewheelTimer = setTimeout(function() {\n        mousewheelTimer = null;\n        zoomended(dispatch);\n      }, 50);\n      d3_eventPreventDefault();\n      scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n      translateTo(center0, translate0);\n      zoomed(dispatch);\n    }\n    function dblclicked() {\n      var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n      zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n    }\n    return d3.rebind(zoom, event, \"on\");\n  };\n  var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n  d3.color = d3_color;\n  function d3_color() {}\n  d3_color.prototype.toString = function() {\n    return this.rgb() + \"\";\n  };\n  d3.hsl = d3_hsl;\n  function d3_hsl(h, s, l) {\n    return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n  }\n  var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n  d3_hslPrototype.brighter = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_hsl(this.h, this.s, this.l / k);\n  };\n  d3_hslPrototype.darker = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_hsl(this.h, this.s, k * this.l);\n  };\n  d3_hslPrototype.rgb = function() {\n    return d3_hsl_rgb(this.h, this.s, this.l);\n  };\n  function d3_hsl_rgb(h, s, l) {\n    var m1, m2;\n    h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n    s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n    l = l < 0 ? 0 : l > 1 ? 1 : l;\n    m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n    m1 = 2 * l - m2;\n    function v(h) {\n      if (h > 360) h -= 360; else if (h < 0) h += 360;\n      if (h < 60) return m1 + (m2 - m1) * h / 60;\n      if (h < 180) return m2;\n      if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n      return m1;\n    }\n    function vv(h) {\n      return Math.round(v(h) * 255);\n    }\n    return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n  }\n  d3.hcl = d3_hcl;\n  function d3_hcl(h, c, l) {\n    return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n  }\n  var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n  d3_hclPrototype.brighter = function(k) {\n    return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n  };\n  d3_hclPrototype.darker = function(k) {\n    return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n  };\n  d3_hclPrototype.rgb = function() {\n    return d3_hcl_lab(this.h, this.c, this.l).rgb();\n  };\n  function d3_hcl_lab(h, c, l) {\n    if (isNaN(h)) h = 0;\n    if (isNaN(c)) c = 0;\n    return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n  }\n  d3.lab = d3_lab;\n  function d3_lab(l, a, b) {\n    return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n  }\n  var d3_lab_K = 18;\n  var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n  var d3_labPrototype = d3_lab.prototype = new d3_color();\n  d3_labPrototype.brighter = function(k) {\n    return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n  };\n  d3_labPrototype.darker = function(k) {\n    return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n  };\n  d3_labPrototype.rgb = function() {\n    return d3_lab_rgb(this.l, this.a, this.b);\n  };\n  function d3_lab_rgb(l, a, b) {\n    var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n    x = d3_lab_xyz(x) * d3_lab_X;\n    y = d3_lab_xyz(y) * d3_lab_Y;\n    z = d3_lab_xyz(z) * d3_lab_Z;\n    return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n  }\n  function d3_lab_hcl(l, a, b) {\n    return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n  }\n  function d3_lab_xyz(x) {\n    return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n  }\n  function d3_xyz_lab(x) {\n    return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n  }\n  function d3_xyz_rgb(r) {\n    return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n  }\n  d3.rgb = d3_rgb;\n  function d3_rgb(r, g, b) {\n    return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n  }\n  function d3_rgbNumber(value) {\n    return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n  }\n  function d3_rgbString(value) {\n    return d3_rgbNumber(value) + \"\";\n  }\n  var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n  d3_rgbPrototype.brighter = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    var r = this.r, g = this.g, b = this.b, i = 30;\n    if (!r && !g && !b) return new d3_rgb(i, i, i);\n    if (r && r < i) r = i;\n    if (g && g < i) g = i;\n    if (b && b < i) b = i;\n    return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n  };\n  d3_rgbPrototype.darker = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_rgb(k * this.r, k * this.g, k * this.b);\n  };\n  d3_rgbPrototype.hsl = function() {\n    return d3_rgb_hsl(this.r, this.g, this.b);\n  };\n  d3_rgbPrototype.toString = function() {\n    return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n  };\n  function d3_rgb_hex(v) {\n    return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n  }\n  function d3_rgb_parse(format, rgb, hsl) {\n    var r = 0, g = 0, b = 0, m1, m2, color;\n    m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n    if (m1) {\n      m2 = m1[2].split(\",\");\n      switch (m1[1]) {\n       case \"hsl\":\n        {\n          return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n        }\n\n       case \"rgb\":\n        {\n          return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n        }\n      }\n    }\n    if (color = d3_rgb_names.get(format)) {\n      return rgb(color.r, color.g, color.b);\n    }\n    if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n      if (format.length === 4) {\n        r = (color & 3840) >> 4;\n        r = r >> 4 | r;\n        g = color & 240;\n        g = g >> 4 | g;\n        b = color & 15;\n        b = b << 4 | b;\n      } else if (format.length === 7) {\n        r = (color & 16711680) >> 16;\n        g = (color & 65280) >> 8;\n        b = color & 255;\n      }\n    }\n    return rgb(r, g, b);\n  }\n  function d3_rgb_hsl(r, g, b) {\n    var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n    if (d) {\n      s = l < .5 ? d / (max + min) : d / (2 - max - min);\n      if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n      h *= 60;\n    } else {\n      h = NaN;\n      s = l > 0 && l < 1 ? 0 : h;\n    }\n    return new d3_hsl(h, s, l);\n  }\n  function d3_rgb_lab(r, g, b) {\n    r = d3_rgb_xyz(r);\n    g = d3_rgb_xyz(g);\n    b = d3_rgb_xyz(b);\n    var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n    return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n  }\n  function d3_rgb_xyz(r) {\n    return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n  }\n  function d3_rgb_parseNumber(c) {\n    var f = parseFloat(c);\n    return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n  }\n  var d3_rgb_names = d3.map({\n    aliceblue: 15792383,\n    antiquewhite: 16444375,\n    aqua: 65535,\n    aquamarine: 8388564,\n    azure: 15794175,\n    beige: 16119260,\n    bisque: 16770244,\n    black: 0,\n    blanchedalmond: 16772045,\n    blue: 255,\n    blueviolet: 9055202,\n    brown: 10824234,\n    burlywood: 14596231,\n    cadetblue: 6266528,\n    chartreuse: 8388352,\n    chocolate: 13789470,\n    coral: 16744272,\n    cornflowerblue: 6591981,\n    cornsilk: 16775388,\n    crimson: 14423100,\n    cyan: 65535,\n    darkblue: 139,\n    darkcyan: 35723,\n    darkgoldenrod: 12092939,\n    darkgray: 11119017,\n    darkgreen: 25600,\n    darkgrey: 11119017,\n    darkkhaki: 12433259,\n    darkmagenta: 9109643,\n    darkolivegreen: 5597999,\n    darkorange: 16747520,\n    darkorchid: 10040012,\n    darkred: 9109504,\n    darksalmon: 15308410,\n    darkseagreen: 9419919,\n    darkslateblue: 4734347,\n    darkslategray: 3100495,\n    darkslategrey: 3100495,\n    darkturquoise: 52945,\n    darkviolet: 9699539,\n    deeppink: 16716947,\n    deepskyblue: 49151,\n    dimgray: 6908265,\n    dimgrey: 6908265,\n    dodgerblue: 2003199,\n    firebrick: 11674146,\n    floralwhite: 16775920,\n    forestgreen: 2263842,\n    fuchsia: 16711935,\n    gainsboro: 14474460,\n    ghostwhite: 16316671,\n    gold: 16766720,\n    goldenrod: 14329120,\n    gray: 8421504,\n    green: 32768,\n    greenyellow: 11403055,\n    grey: 8421504,\n    honeydew: 15794160,\n    hotpink: 16738740,\n    indianred: 13458524,\n    indigo: 4915330,\n    ivory: 16777200,\n    khaki: 15787660,\n    lavender: 15132410,\n    lavenderblush: 16773365,\n    lawngreen: 8190976,\n    lemonchiffon: 16775885,\n    lightblue: 11393254,\n    lightcoral: 15761536,\n    lightcyan: 14745599,\n    lightgoldenrodyellow: 16448210,\n    lightgray: 13882323,\n    lightgreen: 9498256,\n    lightgrey: 13882323,\n    lightpink: 16758465,\n    lightsalmon: 16752762,\n    lightseagreen: 2142890,\n    lightskyblue: 8900346,\n    lightslategray: 7833753,\n    lightslategrey: 7833753,\n    lightsteelblue: 11584734,\n    lightyellow: 16777184,\n    lime: 65280,\n    limegreen: 3329330,\n    linen: 16445670,\n    magenta: 16711935,\n    maroon: 8388608,\n    mediumaquamarine: 6737322,\n    mediumblue: 205,\n    mediumorchid: 12211667,\n    mediumpurple: 9662683,\n    mediumseagreen: 3978097,\n    mediumslateblue: 8087790,\n    mediumspringgreen: 64154,\n    mediumturquoise: 4772300,\n    mediumvioletred: 13047173,\n    midnightblue: 1644912,\n    mintcream: 16121850,\n    mistyrose: 16770273,\n    moccasin: 16770229,\n    navajowhite: 16768685,\n    navy: 128,\n    oldlace: 16643558,\n    olive: 8421376,\n    olivedrab: 7048739,\n    orange: 16753920,\n    orangered: 16729344,\n    orchid: 14315734,\n    palegoldenrod: 15657130,\n    palegreen: 10025880,\n    paleturquoise: 11529966,\n    palevioletred: 14381203,\n    papayawhip: 16773077,\n    peachpuff: 16767673,\n    peru: 13468991,\n    pink: 16761035,\n    plum: 14524637,\n    powderblue: 11591910,\n    purple: 8388736,\n    rebeccapurple: 6697881,\n    red: 16711680,\n    rosybrown: 12357519,\n    royalblue: 4286945,\n    saddlebrown: 9127187,\n    salmon: 16416882,\n    sandybrown: 16032864,\n    seagreen: 3050327,\n    seashell: 16774638,\n    sienna: 10506797,\n    silver: 12632256,\n    skyblue: 8900331,\n    slateblue: 6970061,\n    slategray: 7372944,\n    slategrey: 7372944,\n    snow: 16775930,\n    springgreen: 65407,\n    steelblue: 4620980,\n    tan: 13808780,\n    teal: 32896,\n    thistle: 14204888,\n    tomato: 16737095,\n    turquoise: 4251856,\n    violet: 15631086,\n    wheat: 16113331,\n    white: 16777215,\n    whitesmoke: 16119285,\n    yellow: 16776960,\n    yellowgreen: 10145074\n  });\n  d3_rgb_names.forEach(function(key, value) {\n    d3_rgb_names.set(key, d3_rgbNumber(value));\n  });\n  function d3_functor(v) {\n    return typeof v === \"function\" ? v : function() {\n      return v;\n    };\n  }\n  d3.functor = d3_functor;\n  d3.xhr = d3_xhrType(d3_identity);\n  function d3_xhrType(response) {\n    return function(url, mimeType, callback) {\n      if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n      mimeType = null;\n      return d3_xhr(url, mimeType, response, callback);\n    };\n  }\n  function d3_xhr(url, mimeType, response, callback) {\n    var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n    if (self.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n    \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n      request.readyState > 3 && respond();\n    };\n    function respond() {\n      var status = request.status, result;\n      if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n        try {\n          result = response.call(xhr, request);\n        } catch (e) {\n          dispatch.error.call(xhr, e);\n          return;\n        }\n        dispatch.load.call(xhr, result);\n      } else {\n        dispatch.error.call(xhr, request);\n      }\n    }\n    request.onprogress = function(event) {\n      var o = d3.event;\n      d3.event = event;\n      try {\n        dispatch.progress.call(xhr, request);\n      } finally {\n        d3.event = o;\n      }\n    };\n    xhr.header = function(name, value) {\n      name = (name + \"\").toLowerCase();\n      if (arguments.length < 2) return headers[name];\n      if (value == null) delete headers[name]; else headers[name] = value + \"\";\n      return xhr;\n    };\n    xhr.mimeType = function(value) {\n      if (!arguments.length) return mimeType;\n      mimeType = value == null ? null : value + \"\";\n      return xhr;\n    };\n    xhr.responseType = function(value) {\n      if (!arguments.length) return responseType;\n      responseType = value;\n      return xhr;\n    };\n    xhr.response = function(value) {\n      response = value;\n      return xhr;\n    };\n    [ \"get\", \"post\" ].forEach(function(method) {\n      xhr[method] = function() {\n        return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n      };\n    });\n    xhr.send = function(method, data, callback) {\n      if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n      request.open(method, url, true);\n      if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n      if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n      if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n      if (responseType != null) request.responseType = responseType;\n      if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n        callback(null, request);\n      });\n      dispatch.beforesend.call(xhr, request);\n      request.send(data == null ? null : data);\n      return xhr;\n    };\n    xhr.abort = function() {\n      request.abort();\n      return xhr;\n    };\n    d3.rebind(xhr, dispatch, \"on\");\n    return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n  }\n  function d3_xhr_fixCallback(callback) {\n    return callback.length === 1 ? function(error, request) {\n      callback(error == null ? request : null);\n    } : callback;\n  }\n  function d3_xhrHasResponse(request) {\n    var type = request.responseType;\n    return type && type !== \"text\" ? request.response : request.responseText;\n  }\n  d3.dsv = function(delimiter, mimeType) {\n    var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n    function dsv(url, row, callback) {\n      if (arguments.length < 3) callback = row, row = null;\n      var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n      xhr.row = function(_) {\n        return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n      };\n      return xhr;\n    }\n    function response(request) {\n      return dsv.parse(request.responseText);\n    }\n    function typedResponse(f) {\n      return function(request) {\n        return dsv.parse(request.responseText, f);\n      };\n    }\n    dsv.parse = function(text, f) {\n      var o;\n      return dsv.parseRows(text, function(row, i) {\n        if (o) return o(row, i - 1);\n        var a = function(d) {\n          var obj = {};\n          var len = row.length;\n          for (var k = 0; k < len; ++k) {\n            obj[row[k]] = d[k];\n          }\n          return obj;\n        };\n        o = f ? function(row, i) {\n          return f(a(row), i);\n        } : a;\n      });\n    };\n    dsv.parseRows = function(text, f) {\n      var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n      function token() {\n        if (I >= N) return EOF;\n        if (eol) return eol = false, EOL;\n        var j = I;\n        if (text.charCodeAt(j) === 34) {\n          var i = j;\n          while (i++ < N) {\n            if (text.charCodeAt(i) === 34) {\n              if (text.charCodeAt(i + 1) !== 34) break;\n              ++i;\n            }\n          }\n          I = i + 2;\n          var c = text.charCodeAt(i + 1);\n          if (c === 13) {\n            eol = true;\n            if (text.charCodeAt(i + 2) === 10) ++I;\n          } else if (c === 10) {\n            eol = true;\n          }\n          return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n        }\n        while (I < N) {\n          var c = text.charCodeAt(I++), k = 1;\n          if (c === 10) eol = true; else if (c === 13) {\n            eol = true;\n            if (text.charCodeAt(I) === 10) ++I, ++k;\n          } else if (c !== delimiterCode) continue;\n          return text.slice(j, I - k);\n        }\n        return text.slice(j);\n      }\n      while ((t = token()) !== EOF) {\n        var a = [];\n        while (t !== EOL && t !== EOF) {\n          a.push(t);\n          t = token();\n        }\n        if (f && (a = f(a, n++)) == null) continue;\n        rows.push(a);\n      }\n      return rows;\n    };\n    dsv.format = function(rows) {\n      if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n      var fieldSet = new d3_Set(), fields = [];\n      rows.forEach(function(row) {\n        for (var field in row) {\n          if (!fieldSet.has(field)) {\n            fields.push(fieldSet.add(field));\n          }\n        }\n      });\n      return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n        return fields.map(function(field) {\n          return formatValue(row[field]);\n        }).join(delimiter);\n      })).join(\"\\n\");\n    };\n    dsv.formatRows = function(rows) {\n      return rows.map(formatRow).join(\"\\n\");\n    };\n    function formatRow(row) {\n      return row.map(formatValue).join(delimiter);\n    }\n    function formatValue(text) {\n      return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n    }\n    return dsv;\n  };\n  d3.csv = d3.dsv(\",\", \"text/csv\");\n  d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n  var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n    setTimeout(callback, 17);\n  };\n  d3.timer = function() {\n    d3_timer.apply(this, arguments);\n  };\n  function d3_timer(callback, delay, then) {\n    var n = arguments.length;\n    if (n < 2) delay = 0;\n    if (n < 3) then = Date.now();\n    var time = then + delay, timer = {\n      c: callback,\n      t: time,\n      n: null\n    };\n    if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n    d3_timer_queueTail = timer;\n    if (!d3_timer_interval) {\n      d3_timer_timeout = clearTimeout(d3_timer_timeout);\n      d3_timer_interval = 1;\n      d3_timer_frame(d3_timer_step);\n    }\n    return timer;\n  }\n  function d3_timer_step() {\n    var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n    if (delay > 24) {\n      if (isFinite(delay)) {\n        clearTimeout(d3_timer_timeout);\n        d3_timer_timeout = setTimeout(d3_timer_step, delay);\n      }\n      d3_timer_interval = 0;\n    } else {\n      d3_timer_interval = 1;\n      d3_timer_frame(d3_timer_step);\n    }\n  }\n  d3.timer.flush = function() {\n    d3_timer_mark();\n    d3_timer_sweep();\n  };\n  function d3_timer_mark() {\n    var now = Date.now(), timer = d3_timer_queueHead;\n    while (timer) {\n      if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n      timer = timer.n;\n    }\n    return now;\n  }\n  function d3_timer_sweep() {\n    var t0, t1 = d3_timer_queueHead, time = Infinity;\n    while (t1) {\n      if (t1.c) {\n        if (t1.t < time) time = t1.t;\n        t1 = (t0 = t1).n;\n      } else {\n        t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n      }\n    }\n    d3_timer_queueTail = t0;\n    return time;\n  }\n  d3.round = function(x, n) {\n    return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n  };\n  d3.geom = {};\n  function d3_geom_pointX(d) {\n    return d[0];\n  }\n  function d3_geom_pointY(d) {\n    return d[1];\n  }\n  d3.geom.hull = function(vertices) {\n    var x = d3_geom_pointX, y = d3_geom_pointY;\n    if (arguments.length) return hull(vertices);\n    function hull(data) {\n      if (data.length < 3) return [];\n      var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n      for (i = 0; i < n; i++) {\n        points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n      }\n      points.sort(d3_geom_hullOrder);\n      for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n      var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n      var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n      for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n      for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n      return polygon;\n    }\n    hull.x = function(_) {\n      return arguments.length ? (x = _, hull) : x;\n    };\n    hull.y = function(_) {\n      return arguments.length ? (y = _, hull) : y;\n    };\n    return hull;\n  };\n  function d3_geom_hullUpper(points) {\n    var n = points.length, hull = [ 0, 1 ], hs = 2;\n    for (var i = 2; i < n; i++) {\n      while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n      hull[hs++] = i;\n    }\n    return hull.slice(0, hs);\n  }\n  function d3_geom_hullOrder(a, b) {\n    return a[0] - b[0] || a[1] - b[1];\n  }\n  d3.geom.polygon = function(coordinates) {\n    d3_subclass(coordinates, d3_geom_polygonPrototype);\n    return coordinates;\n  };\n  var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n  d3_geom_polygonPrototype.area = function() {\n    var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n    while (++i < n) {\n      a = b;\n      b = this[i];\n      area += a[1] * b[0] - a[0] * b[1];\n    }\n    return area * .5;\n  };\n  d3_geom_polygonPrototype.centroid = function(k) {\n    var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n    if (!arguments.length) k = -1 / (6 * this.area());\n    while (++i < n) {\n      a = b;\n      b = this[i];\n      c = a[0] * b[1] - b[0] * a[1];\n      x += (a[0] + b[0]) * c;\n      y += (a[1] + b[1]) * c;\n    }\n    return [ x * k, y * k ];\n  };\n  d3_geom_polygonPrototype.clip = function(subject) {\n    var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n    while (++i < n) {\n      input = subject.slice();\n      subject.length = 0;\n      b = this[i];\n      c = input[(m = input.length - closed) - 1];\n      j = -1;\n      while (++j < m) {\n        d = input[j];\n        if (d3_geom_polygonInside(d, a, b)) {\n          if (!d3_geom_polygonInside(c, a, b)) {\n            subject.push(d3_geom_polygonIntersect(c, d, a, b));\n          }\n          subject.push(d);\n        } else if (d3_geom_polygonInside(c, a, b)) {\n          subject.push(d3_geom_polygonIntersect(c, d, a, b));\n        }\n        c = d;\n      }\n      if (closed) subject.push(subject[0]);\n      a = b;\n    }\n    return subject;\n  };\n  function d3_geom_polygonInside(p, a, b) {\n    return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n  }\n  function d3_geom_polygonIntersect(c, d, a, b) {\n    var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n    return [ x1 + ua * x21, y1 + ua * y21 ];\n  }\n  function d3_geom_polygonClosed(coordinates) {\n    var a = coordinates[0], b = coordinates[coordinates.length - 1];\n    return !(a[0] - b[0] || a[1] - b[1]);\n  }\n  var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n  function d3_geom_voronoiBeach() {\n    d3_geom_voronoiRedBlackNode(this);\n    this.edge = this.site = this.circle = null;\n  }\n  function d3_geom_voronoiCreateBeach(site) {\n    var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n    beach.site = site;\n    return beach;\n  }\n  function d3_geom_voronoiDetachBeach(beach) {\n    d3_geom_voronoiDetachCircle(beach);\n    d3_geom_voronoiBeaches.remove(beach);\n    d3_geom_voronoiBeachPool.push(beach);\n    d3_geom_voronoiRedBlackNode(beach);\n  }\n  function d3_geom_voronoiRemoveBeach(beach) {\n    var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n      x: x,\n      y: y\n    }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n    d3_geom_voronoiDetachBeach(beach);\n    var lArc = previous;\n    while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n      previous = lArc.P;\n      disappearing.unshift(lArc);\n      d3_geom_voronoiDetachBeach(lArc);\n      lArc = previous;\n    }\n    disappearing.unshift(lArc);\n    d3_geom_voronoiDetachCircle(lArc);\n    var rArc = next;\n    while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n      next = rArc.N;\n      disappearing.push(rArc);\n      d3_geom_voronoiDetachBeach(rArc);\n      rArc = next;\n    }\n    disappearing.push(rArc);\n    d3_geom_voronoiDetachCircle(rArc);\n    var nArcs = disappearing.length, iArc;\n    for (iArc = 1; iArc < nArcs; ++iArc) {\n      rArc = disappearing[iArc];\n      lArc = disappearing[iArc - 1];\n      d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n    }\n    lArc = disappearing[0];\n    rArc = disappearing[nArcs - 1];\n    rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n    d3_geom_voronoiAttachCircle(lArc);\n    d3_geom_voronoiAttachCircle(rArc);\n  }\n  function d3_geom_voronoiAddBeach(site) {\n    var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n    while (node) {\n      dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n      if (dxl > ε) node = node.L; else {\n        dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n        if (dxr > ε) {\n          if (!node.R) {\n            lArc = node;\n            break;\n          }\n          node = node.R;\n        } else {\n          if (dxl > -ε) {\n            lArc = node.P;\n            rArc = node;\n          } else if (dxr > -ε) {\n            lArc = node;\n            rArc = node.N;\n          } else {\n            lArc = rArc = node;\n          }\n          break;\n        }\n      }\n    }\n    var newArc = d3_geom_voronoiCreateBeach(site);\n    d3_geom_voronoiBeaches.insert(lArc, newArc);\n    if (!lArc && !rArc) return;\n    if (lArc === rArc) {\n      d3_geom_voronoiDetachCircle(lArc);\n      rArc = d3_geom_voronoiCreateBeach(lArc.site);\n      d3_geom_voronoiBeaches.insert(newArc, rArc);\n      newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n      d3_geom_voronoiAttachCircle(lArc);\n      d3_geom_voronoiAttachCircle(rArc);\n      return;\n    }\n    if (!rArc) {\n      newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n      return;\n    }\n    d3_geom_voronoiDetachCircle(lArc);\n    d3_geom_voronoiDetachCircle(rArc);\n    var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n      x: (cy * hb - by * hc) / d + ax,\n      y: (bx * hc - cx * hb) / d + ay\n    };\n    d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n    newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n    rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n    d3_geom_voronoiAttachCircle(lArc);\n    d3_geom_voronoiAttachCircle(rArc);\n  }\n  function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n    var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n    if (!pby2) return rfocx;\n    var lArc = arc.P;\n    if (!lArc) return -Infinity;\n    site = lArc.site;\n    var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n    if (!plby2) return lfocx;\n    var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n    if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n    return (rfocx + lfocx) / 2;\n  }\n  function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n    var rArc = arc.N;\n    if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n    var site = arc.site;\n    return site.y === directrix ? site.x : Infinity;\n  }\n  function d3_geom_voronoiCell(site) {\n    this.site = site;\n    this.edges = [];\n  }\n  d3_geom_voronoiCell.prototype.prepare = function() {\n    var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n    while (iHalfEdge--) {\n      edge = halfEdges[iHalfEdge].edge;\n      if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n    }\n    halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n    return halfEdges.length;\n  };\n  function d3_geom_voronoiCloseCells(extent) {\n    var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n    while (iCell--) {\n      cell = cells[iCell];\n      if (!cell || !cell.prepare()) continue;\n      halfEdges = cell.edges;\n      nHalfEdges = halfEdges.length;\n      iHalfEdge = 0;\n      while (iHalfEdge < nHalfEdges) {\n        end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n        start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n        if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n          halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n            x: x0,\n            y: abs(x2 - x0) < ε ? y2 : y1\n          } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n            x: abs(y2 - y1) < ε ? x2 : x1,\n            y: y1\n          } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n            x: x1,\n            y: abs(x2 - x1) < ε ? y2 : y0\n          } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n            x: abs(y2 - y0) < ε ? x2 : x0,\n            y: y0\n          } : null), cell.site, null));\n          ++nHalfEdges;\n        }\n      }\n    }\n  }\n  function d3_geom_voronoiHalfEdgeOrder(a, b) {\n    return b.angle - a.angle;\n  }\n  function d3_geom_voronoiCircle() {\n    d3_geom_voronoiRedBlackNode(this);\n    this.x = this.y = this.arc = this.site = this.cy = null;\n  }\n  function d3_geom_voronoiAttachCircle(arc) {\n    var lArc = arc.P, rArc = arc.N;\n    if (!lArc || !rArc) return;\n    var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n    if (lSite === rSite) return;\n    var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n    var d = 2 * (ax * cy - ay * cx);\n    if (d >= -ε2) return;\n    var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n    var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n    circle.arc = arc;\n    circle.site = cSite;\n    circle.x = x + bx;\n    circle.y = cy + Math.sqrt(x * x + y * y);\n    circle.cy = cy;\n    arc.circle = circle;\n    var before = null, node = d3_geom_voronoiCircles._;\n    while (node) {\n      if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n        if (node.L) node = node.L; else {\n          before = node.P;\n          break;\n        }\n      } else {\n        if (node.R) node = node.R; else {\n          before = node;\n          break;\n        }\n      }\n    }\n    d3_geom_voronoiCircles.insert(before, circle);\n    if (!before) d3_geom_voronoiFirstCircle = circle;\n  }\n  function d3_geom_voronoiDetachCircle(arc) {\n    var circle = arc.circle;\n    if (circle) {\n      if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n      d3_geom_voronoiCircles.remove(circle);\n      d3_geom_voronoiCirclePool.push(circle);\n      d3_geom_voronoiRedBlackNode(circle);\n      arc.circle = null;\n    }\n  }\n  function d3_geom_clipLine(x0, y0, x1, y1) {\n    return function(line) {\n      var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n      r = x0 - ax;\n      if (!dx && r > 0) return;\n      r /= dx;\n      if (dx < 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      } else if (dx > 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      }\n      r = x1 - ax;\n      if (!dx && r < 0) return;\n      r /= dx;\n      if (dx < 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      } else if (dx > 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      }\n      r = y0 - ay;\n      if (!dy && r > 0) return;\n      r /= dy;\n      if (dy < 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      } else if (dy > 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      }\n      r = y1 - ay;\n      if (!dy && r < 0) return;\n      r /= dy;\n      if (dy < 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      } else if (dy > 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      }\n      if (t0 > 0) line.a = {\n        x: ax + t0 * dx,\n        y: ay + t0 * dy\n      };\n      if (t1 < 1) line.b = {\n        x: ax + t1 * dx,\n        y: ay + t1 * dy\n      };\n      return line;\n    };\n  }\n  function d3_geom_voronoiClipEdges(extent) {\n    var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n    while (i--) {\n      e = edges[i];\n      if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n        e.a = e.b = null;\n        edges.splice(i, 1);\n      }\n    }\n  }\n  function d3_geom_voronoiConnectEdge(edge, extent) {\n    var vb = edge.b;\n    if (vb) return true;\n    var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n    if (ry === ly) {\n      if (fx < x0 || fx >= x1) return;\n      if (lx > rx) {\n        if (!va) va = {\n          x: fx,\n          y: y0\n        }; else if (va.y >= y1) return;\n        vb = {\n          x: fx,\n          y: y1\n        };\n      } else {\n        if (!va) va = {\n          x: fx,\n          y: y1\n        }; else if (va.y < y0) return;\n        vb = {\n          x: fx,\n          y: y0\n        };\n      }\n    } else {\n      fm = (lx - rx) / (ry - ly);\n      fb = fy - fm * fx;\n      if (fm < -1 || fm > 1) {\n        if (lx > rx) {\n          if (!va) va = {\n            x: (y0 - fb) / fm,\n            y: y0\n          }; else if (va.y >= y1) return;\n          vb = {\n            x: (y1 - fb) / fm,\n            y: y1\n          };\n        } else {\n          if (!va) va = {\n            x: (y1 - fb) / fm,\n            y: y1\n          }; else if (va.y < y0) return;\n          vb = {\n            x: (y0 - fb) / fm,\n            y: y0\n          };\n        }\n      } else {\n        if (ly < ry) {\n          if (!va) va = {\n            x: x0,\n            y: fm * x0 + fb\n          }; else if (va.x >= x1) return;\n          vb = {\n            x: x1,\n            y: fm * x1 + fb\n          };\n        } else {\n          if (!va) va = {\n            x: x1,\n            y: fm * x1 + fb\n          }; else if (va.x < x0) return;\n          vb = {\n            x: x0,\n            y: fm * x0 + fb\n          };\n        }\n      }\n    }\n    edge.a = va;\n    edge.b = vb;\n    return true;\n  }\n  function d3_geom_voronoiEdge(lSite, rSite) {\n    this.l = lSite;\n    this.r = rSite;\n    this.a = this.b = null;\n  }\n  function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n    var edge = new d3_geom_voronoiEdge(lSite, rSite);\n    d3_geom_voronoiEdges.push(edge);\n    if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n    if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n    d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n    d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n    return edge;\n  }\n  function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n    var edge = new d3_geom_voronoiEdge(lSite, null);\n    edge.a = va;\n    edge.b = vb;\n    d3_geom_voronoiEdges.push(edge);\n    return edge;\n  }\n  function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n    if (!edge.a && !edge.b) {\n      edge.a = vertex;\n      edge.l = lSite;\n      edge.r = rSite;\n    } else if (edge.l === rSite) {\n      edge.b = vertex;\n    } else {\n      edge.a = vertex;\n    }\n  }\n  function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n    var va = edge.a, vb = edge.b;\n    this.edge = edge;\n    this.site = lSite;\n    this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n  }\n  d3_geom_voronoiHalfEdge.prototype = {\n    start: function() {\n      return this.edge.l === this.site ? this.edge.a : this.edge.b;\n    },\n    end: function() {\n      return this.edge.l === this.site ? this.edge.b : this.edge.a;\n    }\n  };\n  function d3_geom_voronoiRedBlackTree() {\n    this._ = null;\n  }\n  function d3_geom_voronoiRedBlackNode(node) {\n    node.U = node.C = node.L = node.R = node.P = node.N = null;\n  }\n  d3_geom_voronoiRedBlackTree.prototype = {\n    insert: function(after, node) {\n      var parent, grandpa, uncle;\n      if (after) {\n        node.P = after;\n        node.N = after.N;\n        if (after.N) after.N.P = node;\n        after.N = node;\n        if (after.R) {\n          after = after.R;\n          while (after.L) after = after.L;\n          after.L = node;\n        } else {\n          after.R = node;\n        }\n        parent = after;\n      } else if (this._) {\n        after = d3_geom_voronoiRedBlackFirst(this._);\n        node.P = null;\n        node.N = after;\n        after.P = after.L = node;\n        parent = after;\n      } else {\n        node.P = node.N = null;\n        this._ = node;\n        parent = null;\n      }\n      node.L = node.R = null;\n      node.U = parent;\n      node.C = true;\n      after = node;\n      while (parent && parent.C) {\n        grandpa = parent.U;\n        if (parent === grandpa.L) {\n          uncle = grandpa.R;\n          if (uncle && uncle.C) {\n            parent.C = uncle.C = false;\n            grandpa.C = true;\n            after = grandpa;\n          } else {\n            if (after === parent.R) {\n              d3_geom_voronoiRedBlackRotateLeft(this, parent);\n              after = parent;\n              parent = after.U;\n            }\n            parent.C = false;\n            grandpa.C = true;\n            d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n          }\n        } else {\n          uncle = grandpa.L;\n          if (uncle && uncle.C) {\n            parent.C = uncle.C = false;\n            grandpa.C = true;\n            after = grandpa;\n          } else {\n            if (after === parent.L) {\n              d3_geom_voronoiRedBlackRotateRight(this, parent);\n              after = parent;\n              parent = after.U;\n            }\n            parent.C = false;\n            grandpa.C = true;\n            d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n          }\n        }\n        parent = after.U;\n      }\n      this._.C = false;\n    },\n    remove: function(node) {\n      if (node.N) node.N.P = node.P;\n      if (node.P) node.P.N = node.N;\n      node.N = node.P = null;\n      var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n      if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n      if (parent) {\n        if (parent.L === node) parent.L = next; else parent.R = next;\n      } else {\n        this._ = next;\n      }\n      if (left && right) {\n        red = next.C;\n        next.C = node.C;\n        next.L = left;\n        left.U = next;\n        if (next !== right) {\n          parent = next.U;\n          next.U = node.U;\n          node = next.R;\n          parent.L = node;\n          next.R = right;\n          right.U = next;\n        } else {\n          next.U = parent;\n          parent = next;\n          node = next.R;\n        }\n      } else {\n        red = node.C;\n        node = next;\n      }\n      if (node) node.U = parent;\n      if (red) return;\n      if (node && node.C) {\n        node.C = false;\n        return;\n      }\n      do {\n        if (node === this._) break;\n        if (node === parent.L) {\n          sibling = parent.R;\n          if (sibling.C) {\n            sibling.C = false;\n            parent.C = true;\n            d3_geom_voronoiRedBlackRotateLeft(this, parent);\n            sibling = parent.R;\n          }\n          if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n            if (!sibling.R || !sibling.R.C) {\n              sibling.L.C = false;\n              sibling.C = true;\n              d3_geom_voronoiRedBlackRotateRight(this, sibling);\n              sibling = parent.R;\n            }\n            sibling.C = parent.C;\n            parent.C = sibling.R.C = false;\n            d3_geom_voronoiRedBlackRotateLeft(this, parent);\n            node = this._;\n            break;\n          }\n        } else {\n          sibling = parent.L;\n          if (sibling.C) {\n            sibling.C = false;\n            parent.C = true;\n            d3_geom_voronoiRedBlackRotateRight(this, parent);\n            sibling = parent.L;\n          }\n          if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n            if (!sibling.L || !sibling.L.C) {\n              sibling.R.C = false;\n              sibling.C = true;\n              d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n              sibling = parent.L;\n            }\n            sibling.C = parent.C;\n            parent.C = sibling.L.C = false;\n            d3_geom_voronoiRedBlackRotateRight(this, parent);\n            node = this._;\n            break;\n          }\n        }\n        sibling.C = true;\n        node = parent;\n        parent = parent.U;\n      } while (!node.C);\n      if (node) node.C = false;\n    }\n  };\n  function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n    var p = node, q = node.R, parent = p.U;\n    if (parent) {\n      if (parent.L === p) parent.L = q; else parent.R = q;\n    } else {\n      tree._ = q;\n    }\n    q.U = parent;\n    p.U = q;\n    p.R = q.L;\n    if (p.R) p.R.U = p;\n    q.L = p;\n  }\n  function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n    var p = node, q = node.L, parent = p.U;\n    if (parent) {\n      if (parent.L === p) parent.L = q; else parent.R = q;\n    } else {\n      tree._ = q;\n    }\n    q.U = parent;\n    p.U = q;\n    p.L = q.R;\n    if (p.L) p.L.U = p;\n    q.R = p;\n  }\n  function d3_geom_voronoiRedBlackFirst(node) {\n    while (node.L) node = node.L;\n    return node;\n  }\n  function d3_geom_voronoi(sites, bbox) {\n    var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n    d3_geom_voronoiEdges = [];\n    d3_geom_voronoiCells = new Array(sites.length);\n    d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n    d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n    while (true) {\n      circle = d3_geom_voronoiFirstCircle;\n      if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n        if (site.x !== x0 || site.y !== y0) {\n          d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n          d3_geom_voronoiAddBeach(site);\n          x0 = site.x, y0 = site.y;\n        }\n        site = sites.pop();\n      } else if (circle) {\n        d3_geom_voronoiRemoveBeach(circle.arc);\n      } else {\n        break;\n      }\n    }\n    if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n    var diagram = {\n      cells: d3_geom_voronoiCells,\n      edges: d3_geom_voronoiEdges\n    };\n    d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n    return diagram;\n  }\n  function d3_geom_voronoiVertexOrder(a, b) {\n    return b.y - a.y || b.x - a.x;\n  }\n  d3.geom.voronoi = function(points) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n    if (points) return voronoi(points);\n    function voronoi(data) {\n      var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n      d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n        var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n          var s = e.start();\n          return [ s.x, s.y ];\n        }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n        polygon.point = data[i];\n      });\n      return polygons;\n    }\n    function sites(data) {\n      return data.map(function(d, i) {\n        return {\n          x: Math.round(fx(d, i) / ε) * ε,\n          y: Math.round(fy(d, i) / ε) * ε,\n          i: i\n        };\n      });\n    }\n    voronoi.links = function(data) {\n      return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n        return edge.l && edge.r;\n      }).map(function(edge) {\n        return {\n          source: data[edge.l.i],\n          target: data[edge.r.i]\n        };\n      });\n    };\n    voronoi.triangles = function(data) {\n      var triangles = [];\n      d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n        var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n        while (++j < m) {\n          e0 = e1;\n          s0 = s1;\n          e1 = edges[j].edge;\n          s1 = e1.l === site ? e1.r : e1.l;\n          if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n            triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n          }\n        }\n      });\n      return triangles;\n    };\n    voronoi.x = function(_) {\n      return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n    };\n    voronoi.y = function(_) {\n      return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n    };\n    voronoi.clipExtent = function(_) {\n      if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n      clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n      return voronoi;\n    };\n    voronoi.size = function(_) {\n      if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n      return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n    };\n    return voronoi;\n  };\n  var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n  function d3_geom_voronoiTriangleArea(a, b, c) {\n    return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n  }\n  d3.geom.delaunay = function(vertices) {\n    return d3.geom.voronoi().triangles(vertices);\n  };\n  d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n    if (compat = arguments.length) {\n      x = d3_geom_quadtreeCompatX;\n      y = d3_geom_quadtreeCompatY;\n      if (compat === 3) {\n        y2 = y1;\n        x2 = x1;\n        y1 = x1 = 0;\n      }\n      return quadtree(points);\n    }\n    function quadtree(data) {\n      var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n      if (x1 != null) {\n        x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n      } else {\n        x2_ = y2_ = -(x1_ = y1_ = Infinity);\n        xs = [], ys = [];\n        n = data.length;\n        if (compat) for (i = 0; i < n; ++i) {\n          d = data[i];\n          if (d.x < x1_) x1_ = d.x;\n          if (d.y < y1_) y1_ = d.y;\n          if (d.x > x2_) x2_ = d.x;\n          if (d.y > y2_) y2_ = d.y;\n          xs.push(d.x);\n          ys.push(d.y);\n        } else for (i = 0; i < n; ++i) {\n          var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n          if (x_ < x1_) x1_ = x_;\n          if (y_ < y1_) y1_ = y_;\n          if (x_ > x2_) x2_ = x_;\n          if (y_ > y2_) y2_ = y_;\n          xs.push(x_);\n          ys.push(y_);\n        }\n      }\n      var dx = x2_ - x1_, dy = y2_ - y1_;\n      if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n      function insert(n, d, x, y, x1, y1, x2, y2) {\n        if (isNaN(x) || isNaN(y)) return;\n        if (n.leaf) {\n          var nx = n.x, ny = n.y;\n          if (nx != null) {\n            if (abs(nx - x) + abs(ny - y) < .01) {\n              insertChild(n, d, x, y, x1, y1, x2, y2);\n            } else {\n              var nPoint = n.point;\n              n.x = n.y = n.point = null;\n              insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n              insertChild(n, d, x, y, x1, y1, x2, y2);\n            }\n          } else {\n            n.x = x, n.y = y, n.point = d;\n          }\n        } else {\n          insertChild(n, d, x, y, x1, y1, x2, y2);\n        }\n      }\n      function insertChild(n, d, x, y, x1, y1, x2, y2) {\n        var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n        n.leaf = false;\n        n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n        if (right) x1 = xm; else x2 = xm;\n        if (below) y1 = ym; else y2 = ym;\n        insert(n, d, x, y, x1, y1, x2, y2);\n      }\n      var root = d3_geom_quadtreeNode();\n      root.add = function(d) {\n        insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n      };\n      root.visit = function(f) {\n        d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n      };\n      root.find = function(point) {\n        return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n      };\n      i = -1;\n      if (x1 == null) {\n        while (++i < n) {\n          insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n        }\n        --i;\n      } else data.forEach(root.add);\n      xs = ys = data = d = null;\n      return root;\n    }\n    quadtree.x = function(_) {\n      return arguments.length ? (x = _, quadtree) : x;\n    };\n    quadtree.y = function(_) {\n      return arguments.length ? (y = _, quadtree) : y;\n    };\n    quadtree.extent = function(_) {\n      if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n      if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n      y2 = +_[1][1];\n      return quadtree;\n    };\n    quadtree.size = function(_) {\n      if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n      if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n      return quadtree;\n    };\n    return quadtree;\n  };\n  function d3_geom_quadtreeCompatX(d) {\n    return d.x;\n  }\n  function d3_geom_quadtreeCompatY(d) {\n    return d.y;\n  }\n  function d3_geom_quadtreeNode() {\n    return {\n      leaf: true,\n      nodes: [],\n      point: null,\n      x: null,\n      y: null\n    };\n  }\n  function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n    if (!f(node, x1, y1, x2, y2)) {\n      var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n      if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n      if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n      if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n      if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n    }\n  }\n  function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n    var minDistance2 = Infinity, closestPoint;\n    (function find(node, x1, y1, x2, y2) {\n      if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n      if (point = node.point) {\n        var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n        if (distance2 < minDistance2) {\n          var distance = Math.sqrt(minDistance2 = distance2);\n          x0 = x - distance, y0 = y - distance;\n          x3 = x + distance, y3 = y + distance;\n          closestPoint = point;\n        }\n      }\n      var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n      for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n        if (node = children[i & 3]) switch (i & 3) {\n         case 0:\n          find(node, x1, y1, xm, ym);\n          break;\n\n         case 1:\n          find(node, xm, y1, x2, ym);\n          break;\n\n         case 2:\n          find(node, x1, ym, xm, y2);\n          break;\n\n         case 3:\n          find(node, xm, ym, x2, y2);\n          break;\n        }\n      }\n    })(root, x0, y0, x3, y3);\n    return closestPoint;\n  }\n  d3.interpolateRgb = d3_interpolateRgb;\n  function d3_interpolateRgb(a, b) {\n    a = d3.rgb(a);\n    b = d3.rgb(b);\n    var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n    return function(t) {\n      return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n    };\n  }\n  d3.interpolateObject = d3_interpolateObject;\n  function d3_interpolateObject(a, b) {\n    var i = {}, c = {}, k;\n    for (k in a) {\n      if (k in b) {\n        i[k] = d3_interpolate(a[k], b[k]);\n      } else {\n        c[k] = a[k];\n      }\n    }\n    for (k in b) {\n      if (!(k in a)) {\n        c[k] = b[k];\n      }\n    }\n    return function(t) {\n      for (k in i) c[k] = i[k](t);\n      return c;\n    };\n  }\n  d3.interpolateNumber = d3_interpolateNumber;\n  function d3_interpolateNumber(a, b) {\n    a = +a, b = +b;\n    return function(t) {\n      return a * (1 - t) + b * t;\n    };\n  }\n  d3.interpolateString = d3_interpolateString;\n  function d3_interpolateString(a, b) {\n    var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n    a = a + \"\", b = b + \"\";\n    while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n      if ((bs = bm.index) > bi) {\n        bs = b.slice(bi, bs);\n        if (s[i]) s[i] += bs; else s[++i] = bs;\n      }\n      if ((am = am[0]) === (bm = bm[0])) {\n        if (s[i]) s[i] += bm; else s[++i] = bm;\n      } else {\n        s[++i] = null;\n        q.push({\n          i: i,\n          x: d3_interpolateNumber(am, bm)\n        });\n      }\n      bi = d3_interpolate_numberB.lastIndex;\n    }\n    if (bi < b.length) {\n      bs = b.slice(bi);\n      if (s[i]) s[i] += bs; else s[++i] = bs;\n    }\n    return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n      return b(t) + \"\";\n    }) : function() {\n      return b;\n    } : (b = q.length, function(t) {\n      for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    });\n  }\n  var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n  d3.interpolate = d3_interpolate;\n  function d3_interpolate(a, b) {\n    var i = d3.interpolators.length, f;\n    while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n    return f;\n  }\n  d3.interpolators = [ function(a, b) {\n    var t = typeof b;\n    return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n  } ];\n  d3.interpolateArray = d3_interpolateArray;\n  function d3_interpolateArray(a, b) {\n    var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n    for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n    for (;i < na; ++i) c[i] = a[i];\n    for (;i < nb; ++i) c[i] = b[i];\n    return function(t) {\n      for (i = 0; i < n0; ++i) c[i] = x[i](t);\n      return c;\n    };\n  }\n  var d3_ease_default = function() {\n    return d3_identity;\n  };\n  var d3_ease = d3.map({\n    linear: d3_ease_default,\n    poly: d3_ease_poly,\n    quad: function() {\n      return d3_ease_quad;\n    },\n    cubic: function() {\n      return d3_ease_cubic;\n    },\n    sin: function() {\n      return d3_ease_sin;\n    },\n    exp: function() {\n      return d3_ease_exp;\n    },\n    circle: function() {\n      return d3_ease_circle;\n    },\n    elastic: d3_ease_elastic,\n    back: d3_ease_back,\n    bounce: function() {\n      return d3_ease_bounce;\n    }\n  });\n  var d3_ease_mode = d3.map({\n    \"in\": d3_identity,\n    out: d3_ease_reverse,\n    \"in-out\": d3_ease_reflect,\n    \"out-in\": function(f) {\n      return d3_ease_reflect(d3_ease_reverse(f));\n    }\n  });\n  d3.ease = function(name) {\n    var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n    t = d3_ease.get(t) || d3_ease_default;\n    m = d3_ease_mode.get(m) || d3_identity;\n    return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n  };\n  function d3_ease_clamp(f) {\n    return function(t) {\n      return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n    };\n  }\n  function d3_ease_reverse(f) {\n    return function(t) {\n      return 1 - f(1 - t);\n    };\n  }\n  function d3_ease_reflect(f) {\n    return function(t) {\n      return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n    };\n  }\n  function d3_ease_quad(t) {\n    return t * t;\n  }\n  function d3_ease_cubic(t) {\n    return t * t * t;\n  }\n  function d3_ease_cubicInOut(t) {\n    if (t <= 0) return 0;\n    if (t >= 1) return 1;\n    var t2 = t * t, t3 = t2 * t;\n    return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n  }\n  function d3_ease_poly(e) {\n    return function(t) {\n      return Math.pow(t, e);\n    };\n  }\n  function d3_ease_sin(t) {\n    return 1 - Math.cos(t * halfπ);\n  }\n  function d3_ease_exp(t) {\n    return Math.pow(2, 10 * (t - 1));\n  }\n  function d3_ease_circle(t) {\n    return 1 - Math.sqrt(1 - t * t);\n  }\n  function d3_ease_elastic(a, p) {\n    var s;\n    if (arguments.length < 2) p = .45;\n    if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n    return function(t) {\n      return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n    };\n  }\n  function d3_ease_back(s) {\n    if (!s) s = 1.70158;\n    return function(t) {\n      return t * t * ((s + 1) * t - s);\n    };\n  }\n  function d3_ease_bounce(t) {\n    return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n  }\n  d3.interpolateHcl = d3_interpolateHcl;\n  function d3_interpolateHcl(a, b) {\n    a = d3.hcl(a);\n    b = d3.hcl(b);\n    var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n    if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n    if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n    return function(t) {\n      return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n    };\n  }\n  d3.interpolateHsl = d3_interpolateHsl;\n  function d3_interpolateHsl(a, b) {\n    a = d3.hsl(a);\n    b = d3.hsl(b);\n    var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n    if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n    if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n    return function(t) {\n      return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n    };\n  }\n  d3.interpolateLab = d3_interpolateLab;\n  function d3_interpolateLab(a, b) {\n    a = d3.lab(a);\n    b = d3.lab(b);\n    var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n    return function(t) {\n      return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n    };\n  }\n  d3.interpolateRound = d3_interpolateRound;\n  function d3_interpolateRound(a, b) {\n    b -= a;\n    return function(t) {\n      return Math.round(a + b * t);\n    };\n  }\n  d3.transform = function(string) {\n    var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n    return (d3.transform = function(string) {\n      if (string != null) {\n        g.setAttribute(\"transform\", string);\n        var t = g.transform.baseVal.consolidate();\n      }\n      return new d3_transform(t ? t.matrix : d3_transformIdentity);\n    })(string);\n  };\n  function d3_transform(m) {\n    var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n    if (r0[0] * r1[1] < r1[0] * r0[1]) {\n      r0[0] *= -1;\n      r0[1] *= -1;\n      kx *= -1;\n      kz *= -1;\n    }\n    this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n    this.translate = [ m.e, m.f ];\n    this.scale = [ kx, ky ];\n    this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n  }\n  d3_transform.prototype.toString = function() {\n    return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n  };\n  function d3_transformDot(a, b) {\n    return a[0] * b[0] + a[1] * b[1];\n  }\n  function d3_transformNormalize(a) {\n    var k = Math.sqrt(d3_transformDot(a, a));\n    if (k) {\n      a[0] /= k;\n      a[1] /= k;\n    }\n    return k;\n  }\n  function d3_transformCombine(a, b, k) {\n    a[0] += k * b[0];\n    a[1] += k * b[1];\n    return a;\n  }\n  var d3_transformIdentity = {\n    a: 1,\n    b: 0,\n    c: 0,\n    d: 1,\n    e: 0,\n    f: 0\n  };\n  d3.interpolateTransform = d3_interpolateTransform;\n  function d3_interpolateTransformPop(s) {\n    return s.length ? s.pop() + \",\" : \"\";\n  }\n  function d3_interpolateTranslate(ta, tb, s, q) {\n    if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n      var i = s.push(\"translate(\", null, \",\", null, \")\");\n      q.push({\n        i: i - 4,\n        x: d3_interpolateNumber(ta[0], tb[0])\n      }, {\n        i: i - 2,\n        x: d3_interpolateNumber(ta[1], tb[1])\n      });\n    } else if (tb[0] || tb[1]) {\n      s.push(\"translate(\" + tb + \")\");\n    }\n  }\n  function d3_interpolateRotate(ra, rb, s, q) {\n    if (ra !== rb) {\n      if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n      q.push({\n        i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n        x: d3_interpolateNumber(ra, rb)\n      });\n    } else if (rb) {\n      s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n    }\n  }\n  function d3_interpolateSkew(wa, wb, s, q) {\n    if (wa !== wb) {\n      q.push({\n        i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n        x: d3_interpolateNumber(wa, wb)\n      });\n    } else if (wb) {\n      s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n    }\n  }\n  function d3_interpolateScale(ka, kb, s, q) {\n    if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n      var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({\n        i: i - 4,\n        x: d3_interpolateNumber(ka[0], kb[0])\n      }, {\n        i: i - 2,\n        x: d3_interpolateNumber(ka[1], kb[1])\n      });\n    } else if (kb[0] !== 1 || kb[1] !== 1) {\n      s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n    }\n  }\n  function d3_interpolateTransform(a, b) {\n    var s = [], q = [];\n    a = d3.transform(a), b = d3.transform(b);\n    d3_interpolateTranslate(a.translate, b.translate, s, q);\n    d3_interpolateRotate(a.rotate, b.rotate, s, q);\n    d3_interpolateSkew(a.skew, b.skew, s, q);\n    d3_interpolateScale(a.scale, b.scale, s, q);\n    a = b = null;\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  }\n  function d3_uninterpolateNumber(a, b) {\n    b = (b -= a = +a) || 1 / b;\n    return function(x) {\n      return (x - a) / b;\n    };\n  }\n  function d3_uninterpolateClamp(a, b) {\n    b = (b -= a = +a) || 1 / b;\n    return function(x) {\n      return Math.max(0, Math.min(1, (x - a) / b));\n    };\n  }\n  d3.layout = {};\n  d3.layout.bundle = function() {\n    return function(links) {\n      var paths = [], i = -1, n = links.length;\n      while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n      return paths;\n    };\n  };\n  function d3_layout_bundlePath(link) {\n    var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n    while (start !== lca) {\n      start = start.parent;\n      points.push(start);\n    }\n    var k = points.length;\n    while (end !== lca) {\n      points.splice(k, 0, end);\n      end = end.parent;\n    }\n    return points;\n  }\n  function d3_layout_bundleAncestors(node) {\n    var ancestors = [], parent = node.parent;\n    while (parent != null) {\n      ancestors.push(node);\n      node = parent;\n      parent = parent.parent;\n    }\n    ancestors.push(node);\n    return ancestors;\n  }\n  function d3_layout_bundleLeastCommonAncestor(a, b) {\n    if (a === b) return a;\n    var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n    while (aNode === bNode) {\n      sharedNode = aNode;\n      aNode = aNodes.pop();\n      bNode = bNodes.pop();\n    }\n    return sharedNode;\n  }\n  d3.layout.chord = function() {\n    var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n    function relayout() {\n      var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n      chords = [];\n      groups = [];\n      k = 0, i = -1;\n      while (++i < n) {\n        x = 0, j = -1;\n        while (++j < n) {\n          x += matrix[i][j];\n        }\n        groupSums.push(x);\n        subgroupIndex.push(d3.range(n));\n        k += x;\n      }\n      if (sortGroups) {\n        groupIndex.sort(function(a, b) {\n          return sortGroups(groupSums[a], groupSums[b]);\n        });\n      }\n      if (sortSubgroups) {\n        subgroupIndex.forEach(function(d, i) {\n          d.sort(function(a, b) {\n            return sortSubgroups(matrix[i][a], matrix[i][b]);\n          });\n        });\n      }\n      k = (τ - padding * n) / k;\n      x = 0, i = -1;\n      while (++i < n) {\n        x0 = x, j = -1;\n        while (++j < n) {\n          var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n          subgroups[di + \"-\" + dj] = {\n            index: di,\n            subindex: dj,\n            startAngle: a0,\n            endAngle: a1,\n            value: v\n          };\n        }\n        groups[di] = {\n          index: di,\n          startAngle: x0,\n          endAngle: x,\n          value: groupSums[di]\n        };\n        x += padding;\n      }\n      i = -1;\n      while (++i < n) {\n        j = i - 1;\n        while (++j < n) {\n          var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n          if (source.value || target.value) {\n            chords.push(source.value < target.value ? {\n              source: target,\n              target: source\n            } : {\n              source: source,\n              target: target\n            });\n          }\n        }\n      }\n      if (sortChords) resort();\n    }\n    function resort() {\n      chords.sort(function(a, b) {\n        return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n      });\n    }\n    chord.matrix = function(x) {\n      if (!arguments.length) return matrix;\n      n = (matrix = x) && matrix.length;\n      chords = groups = null;\n      return chord;\n    };\n    chord.padding = function(x) {\n      if (!arguments.length) return padding;\n      padding = x;\n      chords = groups = null;\n      return chord;\n    };\n    chord.sortGroups = function(x) {\n      if (!arguments.length) return sortGroups;\n      sortGroups = x;\n      chords = groups = null;\n      return chord;\n    };\n    chord.sortSubgroups = function(x) {\n      if (!arguments.length) return sortSubgroups;\n      sortSubgroups = x;\n      chords = null;\n      return chord;\n    };\n    chord.sortChords = function(x) {\n      if (!arguments.length) return sortChords;\n      sortChords = x;\n      if (chords) resort();\n      return chord;\n    };\n    chord.chords = function() {\n      if (!chords) relayout();\n      return chords;\n    };\n    chord.groups = function() {\n      if (!groups) relayout();\n      return groups;\n    };\n    return chord;\n  };\n  d3.layout.force = function() {\n    var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n    function repulse(node) {\n      return function(quad, x1, _, x2) {\n        if (quad.point !== node) {\n          var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n          if (dw * dw / theta2 < dn) {\n            if (dn < chargeDistance2) {\n              var k = quad.charge / dn;\n              node.px -= dx * k;\n              node.py -= dy * k;\n            }\n            return true;\n          }\n          if (quad.point && dn && dn < chargeDistance2) {\n            var k = quad.pointCharge / dn;\n            node.px -= dx * k;\n            node.py -= dy * k;\n          }\n        }\n        return !quad.charge;\n      };\n    }\n    force.tick = function() {\n      if ((alpha *= .99) < .005) {\n        timer = null;\n        event.end({\n          type: \"end\",\n          alpha: alpha = 0\n        });\n        return true;\n      }\n      var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n      for (i = 0; i < m; ++i) {\n        o = links[i];\n        s = o.source;\n        t = o.target;\n        x = t.x - s.x;\n        y = t.y - s.y;\n        if (l = x * x + y * y) {\n          l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n          x *= l;\n          y *= l;\n          t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n          t.y -= y * k;\n          s.x += x * (k = 1 - k);\n          s.y += y * k;\n        }\n      }\n      if (k = alpha * gravity) {\n        x = size[0] / 2;\n        y = size[1] / 2;\n        i = -1;\n        if (k) while (++i < n) {\n          o = nodes[i];\n          o.x += (x - o.x) * k;\n          o.y += (y - o.y) * k;\n        }\n      }\n      if (charge) {\n        d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n        i = -1;\n        while (++i < n) {\n          if (!(o = nodes[i]).fixed) {\n            q.visit(repulse(o));\n          }\n        }\n      }\n      i = -1;\n      while (++i < n) {\n        o = nodes[i];\n        if (o.fixed) {\n          o.x = o.px;\n          o.y = o.py;\n        } else {\n          o.x -= (o.px - (o.px = o.x)) * friction;\n          o.y -= (o.py - (o.py = o.y)) * friction;\n        }\n      }\n      event.tick({\n        type: \"tick\",\n        alpha: alpha\n      });\n    };\n    force.nodes = function(x) {\n      if (!arguments.length) return nodes;\n      nodes = x;\n      return force;\n    };\n    force.links = function(x) {\n      if (!arguments.length) return links;\n      links = x;\n      return force;\n    };\n    force.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return force;\n    };\n    force.linkDistance = function(x) {\n      if (!arguments.length) return linkDistance;\n      linkDistance = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.distance = force.linkDistance;\n    force.linkStrength = function(x) {\n      if (!arguments.length) return linkStrength;\n      linkStrength = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.friction = function(x) {\n      if (!arguments.length) return friction;\n      friction = +x;\n      return force;\n    };\n    force.charge = function(x) {\n      if (!arguments.length) return charge;\n      charge = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.chargeDistance = function(x) {\n      if (!arguments.length) return Math.sqrt(chargeDistance2);\n      chargeDistance2 = x * x;\n      return force;\n    };\n    force.gravity = function(x) {\n      if (!arguments.length) return gravity;\n      gravity = +x;\n      return force;\n    };\n    force.theta = function(x) {\n      if (!arguments.length) return Math.sqrt(theta2);\n      theta2 = x * x;\n      return force;\n    };\n    force.alpha = function(x) {\n      if (!arguments.length) return alpha;\n      x = +x;\n      if (alpha) {\n        if (x > 0) {\n          alpha = x;\n        } else {\n          timer.c = null, timer.t = NaN, timer = null;\n          event.end({\n            type: \"end\",\n            alpha: alpha = 0\n          });\n        }\n      } else if (x > 0) {\n        event.start({\n          type: \"start\",\n          alpha: alpha = x\n        });\n        timer = d3_timer(force.tick);\n      }\n      return force;\n    };\n    force.start = function() {\n      var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n      for (i = 0; i < n; ++i) {\n        (o = nodes[i]).index = i;\n        o.weight = 0;\n      }\n      for (i = 0; i < m; ++i) {\n        o = links[i];\n        if (typeof o.source == \"number\") o.source = nodes[o.source];\n        if (typeof o.target == \"number\") o.target = nodes[o.target];\n        ++o.source.weight;\n        ++o.target.weight;\n      }\n      for (i = 0; i < n; ++i) {\n        o = nodes[i];\n        if (isNaN(o.x)) o.x = position(\"x\", w);\n        if (isNaN(o.y)) o.y = position(\"y\", h);\n        if (isNaN(o.px)) o.px = o.x;\n        if (isNaN(o.py)) o.py = o.y;\n      }\n      distances = [];\n      if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n      strengths = [];\n      if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n      charges = [];\n      if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n      function position(dimension, size) {\n        if (!neighbors) {\n          neighbors = new Array(n);\n          for (j = 0; j < n; ++j) {\n            neighbors[j] = [];\n          }\n          for (j = 0; j < m; ++j) {\n            var o = links[j];\n            neighbors[o.source.index].push(o.target);\n            neighbors[o.target.index].push(o.source);\n          }\n        }\n        var candidates = neighbors[i], j = -1, l = candidates.length, x;\n        while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n        return Math.random() * size;\n      }\n      return force.resume();\n    };\n    force.resume = function() {\n      return force.alpha(.1);\n    };\n    force.stop = function() {\n      return force.alpha(0);\n    };\n    force.drag = function() {\n      if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n      if (!arguments.length) return drag;\n      this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n    };\n    function dragmove(d) {\n      d.px = d3.event.x, d.py = d3.event.y;\n      force.resume();\n    }\n    return d3.rebind(force, event, \"on\");\n  };\n  function d3_layout_forceDragstart(d) {\n    d.fixed |= 2;\n  }\n  function d3_layout_forceDragend(d) {\n    d.fixed &= ~6;\n  }\n  function d3_layout_forceMouseover(d) {\n    d.fixed |= 4;\n    d.px = d.x, d.py = d.y;\n  }\n  function d3_layout_forceMouseout(d) {\n    d.fixed &= ~4;\n  }\n  function d3_layout_forceAccumulate(quad, alpha, charges) {\n    var cx = 0, cy = 0;\n    quad.charge = 0;\n    if (!quad.leaf) {\n      var nodes = quad.nodes, n = nodes.length, i = -1, c;\n      while (++i < n) {\n        c = nodes[i];\n        if (c == null) continue;\n        d3_layout_forceAccumulate(c, alpha, charges);\n        quad.charge += c.charge;\n        cx += c.charge * c.cx;\n        cy += c.charge * c.cy;\n      }\n    }\n    if (quad.point) {\n      if (!quad.leaf) {\n        quad.point.x += Math.random() - .5;\n        quad.point.y += Math.random() - .5;\n      }\n      var k = alpha * charges[quad.point.index];\n      quad.charge += quad.pointCharge = k;\n      cx += k * quad.point.x;\n      cy += k * quad.point.y;\n    }\n    quad.cx = cx / quad.charge;\n    quad.cy = cy / quad.charge;\n  }\n  var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n  d3.layout.hierarchy = function() {\n    var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n    function hierarchy(root) {\n      var stack = [ root ], nodes = [], node;\n      root.depth = 0;\n      while ((node = stack.pop()) != null) {\n        nodes.push(node);\n        if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n          var n, childs, child;\n          while (--n >= 0) {\n            stack.push(child = childs[n]);\n            child.parent = node;\n            child.depth = node.depth + 1;\n          }\n          if (value) node.value = 0;\n          node.children = childs;\n        } else {\n          if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n          delete node.children;\n        }\n      }\n      d3_layout_hierarchyVisitAfter(root, function(node) {\n        var childs, parent;\n        if (sort && (childs = node.children)) childs.sort(sort);\n        if (value && (parent = node.parent)) parent.value += node.value;\n      });\n      return nodes;\n    }\n    hierarchy.sort = function(x) {\n      if (!arguments.length) return sort;\n      sort = x;\n      return hierarchy;\n    };\n    hierarchy.children = function(x) {\n      if (!arguments.length) return children;\n      children = x;\n      return hierarchy;\n    };\n    hierarchy.value = function(x) {\n      if (!arguments.length) return value;\n      value = x;\n      return hierarchy;\n    };\n    hierarchy.revalue = function(root) {\n      if (value) {\n        d3_layout_hierarchyVisitBefore(root, function(node) {\n          if (node.children) node.value = 0;\n        });\n        d3_layout_hierarchyVisitAfter(root, function(node) {\n          var parent;\n          if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n          if (parent = node.parent) parent.value += node.value;\n        });\n      }\n      return root;\n    };\n    return hierarchy;\n  };\n  function d3_layout_hierarchyRebind(object, hierarchy) {\n    d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n    object.nodes = object;\n    object.links = d3_layout_hierarchyLinks;\n    return object;\n  }\n  function d3_layout_hierarchyVisitBefore(node, callback) {\n    var nodes = [ node ];\n    while ((node = nodes.pop()) != null) {\n      callback(node);\n      if ((children = node.children) && (n = children.length)) {\n        var n, children;\n        while (--n >= 0) nodes.push(children[n]);\n      }\n    }\n  }\n  function d3_layout_hierarchyVisitAfter(node, callback) {\n    var nodes = [ node ], nodes2 = [];\n    while ((node = nodes.pop()) != null) {\n      nodes2.push(node);\n      if ((children = node.children) && (n = children.length)) {\n        var i = -1, n, children;\n        while (++i < n) nodes.push(children[i]);\n      }\n    }\n    while ((node = nodes2.pop()) != null) {\n      callback(node);\n    }\n  }\n  function d3_layout_hierarchyChildren(d) {\n    return d.children;\n  }\n  function d3_layout_hierarchyValue(d) {\n    return d.value;\n  }\n  function d3_layout_hierarchySort(a, b) {\n    return b.value - a.value;\n  }\n  function d3_layout_hierarchyLinks(nodes) {\n    return d3.merge(nodes.map(function(parent) {\n      return (parent.children || []).map(function(child) {\n        return {\n          source: parent,\n          target: child\n        };\n      });\n    }));\n  }\n  d3.layout.partition = function() {\n    var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n    function position(node, x, dx, dy) {\n      var children = node.children;\n      node.x = x;\n      node.y = node.depth * dy;\n      node.dx = dx;\n      node.dy = dy;\n      if (children && (n = children.length)) {\n        var i = -1, n, c, d;\n        dx = node.value ? dx / node.value : 0;\n        while (++i < n) {\n          position(c = children[i], x, d = c.value * dx, dy);\n          x += d;\n        }\n      }\n    }\n    function depth(node) {\n      var children = node.children, d = 0;\n      if (children && (n = children.length)) {\n        var i = -1, n;\n        while (++i < n) d = Math.max(d, depth(children[i]));\n      }\n      return 1 + d;\n    }\n    function partition(d, i) {\n      var nodes = hierarchy.call(this, d, i);\n      position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n      return nodes;\n    }\n    partition.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return partition;\n    };\n    return d3_layout_hierarchyRebind(partition, hierarchy);\n  };\n  d3.layout.pie = function() {\n    var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n    function pie(data) {\n      var n = data.length, values = data.map(function(d, i) {\n        return +value.call(pie, d, i);\n      }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n      if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n        return values[j] - values[i];\n      } : function(i, j) {\n        return sort(data[i], data[j]);\n      });\n      index.forEach(function(i) {\n        arcs[i] = {\n          data: data[i],\n          value: v = values[i],\n          startAngle: a,\n          endAngle: a += v * k + pa,\n          padAngle: p\n        };\n      });\n      return arcs;\n    }\n    pie.value = function(_) {\n      if (!arguments.length) return value;\n      value = _;\n      return pie;\n    };\n    pie.sort = function(_) {\n      if (!arguments.length) return sort;\n      sort = _;\n      return pie;\n    };\n    pie.startAngle = function(_) {\n      if (!arguments.length) return startAngle;\n      startAngle = _;\n      return pie;\n    };\n    pie.endAngle = function(_) {\n      if (!arguments.length) return endAngle;\n      endAngle = _;\n      return pie;\n    };\n    pie.padAngle = function(_) {\n      if (!arguments.length) return padAngle;\n      padAngle = _;\n      return pie;\n    };\n    return pie;\n  };\n  var d3_layout_pieSortByValue = {};\n  d3.layout.stack = function() {\n    var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n    function stack(data, index) {\n      if (!(n = data.length)) return data;\n      var series = data.map(function(d, i) {\n        return values.call(stack, d, i);\n      });\n      var points = series.map(function(d) {\n        return d.map(function(v, i) {\n          return [ x.call(stack, v, i), y.call(stack, v, i) ];\n        });\n      });\n      var orders = order.call(stack, points, index);\n      series = d3.permute(series, orders);\n      points = d3.permute(points, orders);\n      var offsets = offset.call(stack, points, index);\n      var m = series[0].length, n, i, j, o;\n      for (j = 0; j < m; ++j) {\n        out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n        for (i = 1; i < n; ++i) {\n          out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n        }\n      }\n      return data;\n    }\n    stack.values = function(x) {\n      if (!arguments.length) return values;\n      values = x;\n      return stack;\n    };\n    stack.order = function(x) {\n      if (!arguments.length) return order;\n      order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n      return stack;\n    };\n    stack.offset = function(x) {\n      if (!arguments.length) return offset;\n      offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n      return stack;\n    };\n    stack.x = function(z) {\n      if (!arguments.length) return x;\n      x = z;\n      return stack;\n    };\n    stack.y = function(z) {\n      if (!arguments.length) return y;\n      y = z;\n      return stack;\n    };\n    stack.out = function(z) {\n      if (!arguments.length) return out;\n      out = z;\n      return stack;\n    };\n    return stack;\n  };\n  function d3_layout_stackX(d) {\n    return d.x;\n  }\n  function d3_layout_stackY(d) {\n    return d.y;\n  }\n  function d3_layout_stackOut(d, y0, y) {\n    d.y0 = y0;\n    d.y = y;\n  }\n  var d3_layout_stackOrders = d3.map({\n    \"inside-out\": function(data) {\n      var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n        return max[a] - max[b];\n      }), top = 0, bottom = 0, tops = [], bottoms = [];\n      for (i = 0; i < n; ++i) {\n        j = index[i];\n        if (top < bottom) {\n          top += sums[j];\n          tops.push(j);\n        } else {\n          bottom += sums[j];\n          bottoms.push(j);\n        }\n      }\n      return bottoms.reverse().concat(tops);\n    },\n    reverse: function(data) {\n      return d3.range(data.length).reverse();\n    },\n    \"default\": d3_layout_stackOrderDefault\n  });\n  var d3_layout_stackOffsets = d3.map({\n    silhouette: function(data) {\n      var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n      for (j = 0; j < m; ++j) {\n        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n        if (o > max) max = o;\n        sums.push(o);\n      }\n      for (j = 0; j < m; ++j) {\n        y0[j] = (max - sums[j]) / 2;\n      }\n      return y0;\n    },\n    wiggle: function(data) {\n      var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n      y0[0] = o = o0 = 0;\n      for (j = 1; j < m; ++j) {\n        for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n        for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n          for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n            s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n          }\n          s2 += s3 * data[i][j][1];\n        }\n        y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n        if (o < o0) o0 = o;\n      }\n      for (j = 0; j < m; ++j) y0[j] -= o0;\n      return y0;\n    },\n    expand: function(data) {\n      var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n      for (j = 0; j < m; ++j) {\n        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n        if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n      }\n      for (j = 0; j < m; ++j) y0[j] = 0;\n      return y0;\n    },\n    zero: d3_layout_stackOffsetZero\n  });\n  function d3_layout_stackOrderDefault(data) {\n    return d3.range(data.length);\n  }\n  function d3_layout_stackOffsetZero(data) {\n    var j = -1, m = data[0].length, y0 = [];\n    while (++j < m) y0[j] = 0;\n    return y0;\n  }\n  function d3_layout_stackMaxIndex(array) {\n    var i = 1, j = 0, v = array[0][1], k, n = array.length;\n    for (;i < n; ++i) {\n      if ((k = array[i][1]) > v) {\n        j = i;\n        v = k;\n      }\n    }\n    return j;\n  }\n  function d3_layout_stackReduceSum(d) {\n    return d.reduce(d3_layout_stackSum, 0);\n  }\n  function d3_layout_stackSum(p, d) {\n    return p + d[1];\n  }\n  d3.layout.histogram = function() {\n    var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n    function histogram(data, i) {\n      var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n      while (++i < m) {\n        bin = bins[i] = [];\n        bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n        bin.y = 0;\n      }\n      if (m > 0) {\n        i = -1;\n        while (++i < n) {\n          x = values[i];\n          if (x >= range[0] && x <= range[1]) {\n            bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n            bin.y += k;\n            bin.push(data[i]);\n          }\n        }\n      }\n      return bins;\n    }\n    histogram.value = function(x) {\n      if (!arguments.length) return valuer;\n      valuer = x;\n      return histogram;\n    };\n    histogram.range = function(x) {\n      if (!arguments.length) return ranger;\n      ranger = d3_functor(x);\n      return histogram;\n    };\n    histogram.bins = function(x) {\n      if (!arguments.length) return binner;\n      binner = typeof x === \"number\" ? function(range) {\n        return d3_layout_histogramBinFixed(range, x);\n      } : d3_functor(x);\n      return histogram;\n    };\n    histogram.frequency = function(x) {\n      if (!arguments.length) return frequency;\n      frequency = !!x;\n      return histogram;\n    };\n    return histogram;\n  };\n  function d3_layout_histogramBinSturges(range, values) {\n    return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n  }\n  function d3_layout_histogramBinFixed(range, n) {\n    var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n    while (++x <= n) f[x] = m * x + b;\n    return f;\n  }\n  function d3_layout_histogramRange(values) {\n    return [ d3.min(values), d3.max(values) ];\n  }\n  d3.layout.pack = function() {\n    var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n    function pack(d, i) {\n      var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n        return radius;\n      };\n      root.x = root.y = 0;\n      d3_layout_hierarchyVisitAfter(root, function(d) {\n        d.r = +r(d.value);\n      });\n      d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n      if (padding) {\n        var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n        d3_layout_hierarchyVisitAfter(root, function(d) {\n          d.r += dr;\n        });\n        d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n        d3_layout_hierarchyVisitAfter(root, function(d) {\n          d.r -= dr;\n        });\n      }\n      d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n      return nodes;\n    }\n    pack.size = function(_) {\n      if (!arguments.length) return size;\n      size = _;\n      return pack;\n    };\n    pack.radius = function(_) {\n      if (!arguments.length) return radius;\n      radius = _ == null || typeof _ === \"function\" ? _ : +_;\n      return pack;\n    };\n    pack.padding = function(_) {\n      if (!arguments.length) return padding;\n      padding = +_;\n      return pack;\n    };\n    return d3_layout_hierarchyRebind(pack, hierarchy);\n  };\n  function d3_layout_packSort(a, b) {\n    return a.value - b.value;\n  }\n  function d3_layout_packInsert(a, b) {\n    var c = a._pack_next;\n    a._pack_next = b;\n    b._pack_prev = a;\n    b._pack_next = c;\n    c._pack_prev = b;\n  }\n  function d3_layout_packSplice(a, b) {\n    a._pack_next = b;\n    b._pack_prev = a;\n  }\n  function d3_layout_packIntersects(a, b) {\n    var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n    return .999 * dr * dr > dx * dx + dy * dy;\n  }\n  function d3_layout_packSiblings(node) {\n    if (!(nodes = node.children) || !(n = nodes.length)) return;\n    var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n    function bound(node) {\n      xMin = Math.min(node.x - node.r, xMin);\n      xMax = Math.max(node.x + node.r, xMax);\n      yMin = Math.min(node.y - node.r, yMin);\n      yMax = Math.max(node.y + node.r, yMax);\n    }\n    nodes.forEach(d3_layout_packLink);\n    a = nodes[0];\n    a.x = -a.r;\n    a.y = 0;\n    bound(a);\n    if (n > 1) {\n      b = nodes[1];\n      b.x = b.r;\n      b.y = 0;\n      bound(b);\n      if (n > 2) {\n        c = nodes[2];\n        d3_layout_packPlace(a, b, c);\n        bound(c);\n        d3_layout_packInsert(a, c);\n        a._pack_prev = c;\n        d3_layout_packInsert(c, b);\n        b = a._pack_next;\n        for (i = 3; i < n; i++) {\n          d3_layout_packPlace(a, b, c = nodes[i]);\n          var isect = 0, s1 = 1, s2 = 1;\n          for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n            if (d3_layout_packIntersects(j, c)) {\n              isect = 1;\n              break;\n            }\n          }\n          if (isect == 1) {\n            for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n              if (d3_layout_packIntersects(k, c)) {\n                break;\n              }\n            }\n          }\n          if (isect) {\n            if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n            i--;\n          } else {\n            d3_layout_packInsert(a, c);\n            b = c;\n            bound(c);\n          }\n        }\n      }\n    }\n    var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n    for (i = 0; i < n; i++) {\n      c = nodes[i];\n      c.x -= cx;\n      c.y -= cy;\n      cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n    }\n    node.r = cr;\n    nodes.forEach(d3_layout_packUnlink);\n  }\n  function d3_layout_packLink(node) {\n    node._pack_next = node._pack_prev = node;\n  }\n  function d3_layout_packUnlink(node) {\n    delete node._pack_next;\n    delete node._pack_prev;\n  }\n  function d3_layout_packTransform(node, x, y, k) {\n    var children = node.children;\n    node.x = x += k * node.x;\n    node.y = y += k * node.y;\n    node.r *= k;\n    if (children) {\n      var i = -1, n = children.length;\n      while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n    }\n  }\n  function d3_layout_packPlace(a, b, c) {\n    var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n    if (db && (dx || dy)) {\n      var da = b.r + c.r, dc = dx * dx + dy * dy;\n      da *= da;\n      db *= db;\n      var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n      c.x = a.x + x * dx + y * dy;\n      c.y = a.y + x * dy - y * dx;\n    } else {\n      c.x = a.x + db;\n      c.y = a.y;\n    }\n  }\n  d3.layout.tree = function() {\n    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n    function tree(d, i) {\n      var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n      d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n      d3_layout_hierarchyVisitBefore(root1, secondWalk);\n      if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n        var left = root0, right = root0, bottom = root0;\n        d3_layout_hierarchyVisitBefore(root0, function(node) {\n          if (node.x < left.x) left = node;\n          if (node.x > right.x) right = node;\n          if (node.depth > bottom.depth) bottom = node;\n        });\n        var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n        d3_layout_hierarchyVisitBefore(root0, function(node) {\n          node.x = (node.x + tx) * kx;\n          node.y = node.depth * ky;\n        });\n      }\n      return nodes;\n    }\n    function wrapTree(root0) {\n      var root1 = {\n        A: null,\n        children: [ root0 ]\n      }, queue = [ root1 ], node1;\n      while ((node1 = queue.pop()) != null) {\n        for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n          queue.push((children[i] = child = {\n            _: children[i],\n            parent: node1,\n            children: (child = children[i].children) && child.slice() || [],\n            A: null,\n            a: null,\n            z: 0,\n            m: 0,\n            c: 0,\n            s: 0,\n            t: null,\n            i: i\n          }).a = child);\n        }\n      }\n      return root1.children[0];\n    }\n    function firstWalk(v) {\n      var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n      if (children.length) {\n        d3_layout_treeShift(v);\n        var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n        if (w) {\n          v.z = w.z + separation(v._, w._);\n          v.m = v.z - midpoint;\n        } else {\n          v.z = midpoint;\n        }\n      } else if (w) {\n        v.z = w.z + separation(v._, w._);\n      }\n      v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n    }\n    function secondWalk(v) {\n      v._.x = v.z + v.parent.m;\n      v.m += v.parent.m;\n    }\n    function apportion(v, w, ancestor) {\n      if (w) {\n        var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n        while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n          vom = d3_layout_treeLeft(vom);\n          vop = d3_layout_treeRight(vop);\n          vop.a = v;\n          shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n          if (shift > 0) {\n            d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n            sip += shift;\n            sop += shift;\n          }\n          sim += vim.m;\n          sip += vip.m;\n          som += vom.m;\n          sop += vop.m;\n        }\n        if (vim && !d3_layout_treeRight(vop)) {\n          vop.t = vim;\n          vop.m += sim - sop;\n        }\n        if (vip && !d3_layout_treeLeft(vom)) {\n          vom.t = vip;\n          vom.m += sip - som;\n          ancestor = v;\n        }\n      }\n      return ancestor;\n    }\n    function sizeNode(node) {\n      node.x *= size[0];\n      node.y = node.depth * size[1];\n    }\n    tree.separation = function(x) {\n      if (!arguments.length) return separation;\n      separation = x;\n      return tree;\n    };\n    tree.size = function(x) {\n      if (!arguments.length) return nodeSize ? null : size;\n      nodeSize = (size = x) == null ? sizeNode : null;\n      return tree;\n    };\n    tree.nodeSize = function(x) {\n      if (!arguments.length) return nodeSize ? size : null;\n      nodeSize = (size = x) == null ? null : sizeNode;\n      return tree;\n    };\n    return d3_layout_hierarchyRebind(tree, hierarchy);\n  };\n  function d3_layout_treeSeparation(a, b) {\n    return a.parent == b.parent ? 1 : 2;\n  }\n  function d3_layout_treeLeft(v) {\n    var children = v.children;\n    return children.length ? children[0] : v.t;\n  }\n  function d3_layout_treeRight(v) {\n    var children = v.children, n;\n    return (n = children.length) ? children[n - 1] : v.t;\n  }\n  function d3_layout_treeMove(wm, wp, shift) {\n    var change = shift / (wp.i - wm.i);\n    wp.c -= change;\n    wp.s += shift;\n    wm.c += change;\n    wp.z += shift;\n    wp.m += shift;\n  }\n  function d3_layout_treeShift(v) {\n    var shift = 0, change = 0, children = v.children, i = children.length, w;\n    while (--i >= 0) {\n      w = children[i];\n      w.z += shift;\n      w.m += shift;\n      shift += w.s + (change += w.c);\n    }\n  }\n  function d3_layout_treeAncestor(vim, v, ancestor) {\n    return vim.a.parent === v.parent ? vim.a : ancestor;\n  }\n  d3.layout.cluster = function() {\n    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n    function cluster(d, i) {\n      var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n      d3_layout_hierarchyVisitAfter(root, function(node) {\n        var children = node.children;\n        if (children && children.length) {\n          node.x = d3_layout_clusterX(children);\n          node.y = d3_layout_clusterY(children);\n        } else {\n          node.x = previousNode ? x += separation(node, previousNode) : 0;\n          node.y = 0;\n          previousNode = node;\n        }\n      });\n      var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n      d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n        node.x = (node.x - root.x) * size[0];\n        node.y = (root.y - node.y) * size[1];\n      } : function(node) {\n        node.x = (node.x - x0) / (x1 - x0) * size[0];\n        node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n      });\n      return nodes;\n    }\n    cluster.separation = function(x) {\n      if (!arguments.length) return separation;\n      separation = x;\n      return cluster;\n    };\n    cluster.size = function(x) {\n      if (!arguments.length) return nodeSize ? null : size;\n      nodeSize = (size = x) == null;\n      return cluster;\n    };\n    cluster.nodeSize = function(x) {\n      if (!arguments.length) return nodeSize ? size : null;\n      nodeSize = (size = x) != null;\n      return cluster;\n    };\n    return d3_layout_hierarchyRebind(cluster, hierarchy);\n  };\n  function d3_layout_clusterY(children) {\n    return 1 + d3.max(children, function(child) {\n      return child.y;\n    });\n  }\n  function d3_layout_clusterX(children) {\n    return children.reduce(function(x, child) {\n      return x + child.x;\n    }, 0) / children.length;\n  }\n  function d3_layout_clusterLeft(node) {\n    var children = node.children;\n    return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n  }\n  function d3_layout_clusterRight(node) {\n    var children = node.children, n;\n    return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n  }\n  d3.layout.treemap = function() {\n    var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n    function scale(children, k) {\n      var i = -1, n = children.length, child, area;\n      while (++i < n) {\n        area = (child = children[i]).value * (k < 0 ? 0 : k);\n        child.area = isNaN(area) || area <= 0 ? 0 : area;\n      }\n    }\n    function squarify(node) {\n      var children = node.children;\n      if (children && children.length) {\n        var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n        scale(remaining, rect.dx * rect.dy / node.value);\n        row.area = 0;\n        while ((n = remaining.length) > 0) {\n          row.push(child = remaining[n - 1]);\n          row.area += child.area;\n          if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n            remaining.pop();\n            best = score;\n          } else {\n            row.area -= row.pop().area;\n            position(row, u, rect, false);\n            u = Math.min(rect.dx, rect.dy);\n            row.length = row.area = 0;\n            best = Infinity;\n          }\n        }\n        if (row.length) {\n          position(row, u, rect, true);\n          row.length = row.area = 0;\n        }\n        children.forEach(squarify);\n      }\n    }\n    function stickify(node) {\n      var children = node.children;\n      if (children && children.length) {\n        var rect = pad(node), remaining = children.slice(), child, row = [];\n        scale(remaining, rect.dx * rect.dy / node.value);\n        row.area = 0;\n        while (child = remaining.pop()) {\n          row.push(child);\n          row.area += child.area;\n          if (child.z != null) {\n            position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n            row.length = row.area = 0;\n          }\n        }\n        children.forEach(stickify);\n      }\n    }\n    function worst(row, u) {\n      var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n      while (++i < n) {\n        if (!(r = row[i].area)) continue;\n        if (r < rmin) rmin = r;\n        if (r > rmax) rmax = r;\n      }\n      s *= s;\n      u *= u;\n      return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n    }\n    function position(row, u, rect, flush) {\n      var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n      if (u == rect.dx) {\n        if (flush || v > rect.dy) v = rect.dy;\n        while (++i < n) {\n          o = row[i];\n          o.x = x;\n          o.y = y;\n          o.dy = v;\n          x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n        }\n        o.z = true;\n        o.dx += rect.x + rect.dx - x;\n        rect.y += v;\n        rect.dy -= v;\n      } else {\n        if (flush || v > rect.dx) v = rect.dx;\n        while (++i < n) {\n          o = row[i];\n          o.x = x;\n          o.y = y;\n          o.dx = v;\n          y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n        }\n        o.z = false;\n        o.dy += rect.y + rect.dy - y;\n        rect.x += v;\n        rect.dx -= v;\n      }\n    }\n    function treemap(d) {\n      var nodes = stickies || hierarchy(d), root = nodes[0];\n      root.x = root.y = 0;\n      if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n      if (stickies) hierarchy.revalue(root);\n      scale([ root ], root.dx * root.dy / root.value);\n      (stickies ? stickify : squarify)(root);\n      if (sticky) stickies = nodes;\n      return nodes;\n    }\n    treemap.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return treemap;\n    };\n    treemap.padding = function(x) {\n      if (!arguments.length) return padding;\n      function padFunction(node) {\n        var p = x.call(treemap, node, node.depth);\n        return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n      }\n      function padConstant(node) {\n        return d3_layout_treemapPad(node, x);\n      }\n      var type;\n      pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n      padConstant) : padConstant;\n      return treemap;\n    };\n    treemap.round = function(x) {\n      if (!arguments.length) return round != Number;\n      round = x ? Math.round : Number;\n      return treemap;\n    };\n    treemap.sticky = function(x) {\n      if (!arguments.length) return sticky;\n      sticky = x;\n      stickies = null;\n      return treemap;\n    };\n    treemap.ratio = function(x) {\n      if (!arguments.length) return ratio;\n      ratio = x;\n      return treemap;\n    };\n    treemap.mode = function(x) {\n      if (!arguments.length) return mode;\n      mode = x + \"\";\n      return treemap;\n    };\n    return d3_layout_hierarchyRebind(treemap, hierarchy);\n  };\n  function d3_layout_treemapPadNull(node) {\n    return {\n      x: node.x,\n      y: node.y,\n      dx: node.dx,\n      dy: node.dy\n    };\n  }\n  function d3_layout_treemapPad(node, padding) {\n    var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n    if (dx < 0) {\n      x += dx / 2;\n      dx = 0;\n    }\n    if (dy < 0) {\n      y += dy / 2;\n      dy = 0;\n    }\n    return {\n      x: x,\n      y: y,\n      dx: dx,\n      dy: dy\n    };\n  }\n  d3.random = {\n    normal: function(µ, σ) {\n      var n = arguments.length;\n      if (n < 2) σ = 1;\n      if (n < 1) µ = 0;\n      return function() {\n        var x, y, r;\n        do {\n          x = Math.random() * 2 - 1;\n          y = Math.random() * 2 - 1;\n          r = x * x + y * y;\n        } while (!r || r > 1);\n        return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n      };\n    },\n    logNormal: function() {\n      var random = d3.random.normal.apply(d3, arguments);\n      return function() {\n        return Math.exp(random());\n      };\n    },\n    bates: function(m) {\n      var random = d3.random.irwinHall(m);\n      return function() {\n        return random() / m;\n      };\n    },\n    irwinHall: function(m) {\n      return function() {\n        for (var s = 0, j = 0; j < m; j++) s += Math.random();\n        return s;\n      };\n    }\n  };\n  d3.scale = {};\n  function d3_scaleExtent(domain) {\n    var start = domain[0], stop = domain[domain.length - 1];\n    return start < stop ? [ start, stop ] : [ stop, start ];\n  }\n  function d3_scaleRange(scale) {\n    return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n  }\n  function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n    var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n    return function(x) {\n      return i(u(x));\n    };\n  }\n  function d3_scale_nice(domain, nice) {\n    var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n    if (x1 < x0) {\n      dx = i0, i0 = i1, i1 = dx;\n      dx = x0, x0 = x1, x1 = dx;\n    }\n    domain[i0] = nice.floor(x0);\n    domain[i1] = nice.ceil(x1);\n    return domain;\n  }\n  function d3_scale_niceStep(step) {\n    return step ? {\n      floor: function(x) {\n        return Math.floor(x / step) * step;\n      },\n      ceil: function(x) {\n        return Math.ceil(x / step) * step;\n      }\n    } : d3_scale_niceIdentity;\n  }\n  var d3_scale_niceIdentity = {\n    floor: d3_identity,\n    ceil: d3_identity\n  };\n  function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n    var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n    if (domain[k] < domain[0]) {\n      domain = domain.slice().reverse();\n      range = range.slice().reverse();\n    }\n    while (++j <= k) {\n      u.push(uninterpolate(domain[j - 1], domain[j]));\n      i.push(interpolate(range[j - 1], range[j]));\n    }\n    return function(x) {\n      var j = d3.bisect(domain, x, 1, k) - 1;\n      return i[j](u[j](x));\n    };\n  }\n  d3.scale.linear = function() {\n    return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n  };\n  function d3_scale_linear(domain, range, interpolate, clamp) {\n    var output, input;\n    function rescale() {\n      var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n      output = linear(domain, range, uninterpolate, interpolate);\n      input = linear(range, domain, uninterpolate, d3_interpolate);\n      return scale;\n    }\n    function scale(x) {\n      return output(x);\n    }\n    scale.invert = function(y) {\n      return input(y);\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(Number);\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.rangeRound = function(x) {\n      return scale.range(x).interpolate(d3_interpolateRound);\n    };\n    scale.clamp = function(x) {\n      if (!arguments.length) return clamp;\n      clamp = x;\n      return rescale();\n    };\n    scale.interpolate = function(x) {\n      if (!arguments.length) return interpolate;\n      interpolate = x;\n      return rescale();\n    };\n    scale.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    scale.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    scale.nice = function(m) {\n      d3_scale_linearNice(domain, m);\n      return rescale();\n    };\n    scale.copy = function() {\n      return d3_scale_linear(domain, range, interpolate, clamp);\n    };\n    return rescale();\n  }\n  function d3_scale_linearRebind(scale, linear) {\n    return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n  }\n  function d3_scale_linearNice(domain, m) {\n    d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n    d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n    return domain;\n  }\n  function d3_scale_linearTickRange(domain, m) {\n    if (m == null) m = 10;\n    var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n    if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n    extent[0] = Math.ceil(extent[0] / step) * step;\n    extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n    extent[2] = step;\n    return extent;\n  }\n  function d3_scale_linearTicks(domain, m) {\n    return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n  }\n  var d3_scale_linearFormatSignificant = {\n    s: 1,\n    g: 1,\n    p: 1,\n    r: 1,\n    e: 1\n  };\n  function d3_scale_linearPrecision(value) {\n    return -Math.floor(Math.log(value) / Math.LN10 + .01);\n  }\n  function d3_scale_linearFormatPrecision(type, range) {\n    var p = d3_scale_linearPrecision(range[2]);\n    return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n  }\n  d3.scale.log = function() {\n    return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n  };\n  function d3_scale_log(linear, base, positive, domain) {\n    function log(x) {\n      return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n    }\n    function pow(x) {\n      return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n    }\n    function scale(x) {\n      return linear(log(x));\n    }\n    scale.invert = function(x) {\n      return pow(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      positive = x[0] >= 0;\n      linear.domain((domain = x.map(Number)).map(log));\n      return scale;\n    };\n    scale.base = function(_) {\n      if (!arguments.length) return base;\n      base = +_;\n      linear.domain(domain.map(log));\n      return scale;\n    };\n    scale.nice = function() {\n      var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n      linear.domain(niced);\n      domain = niced.map(pow);\n      return scale;\n    };\n    scale.ticks = function() {\n      var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n      if (isFinite(j - i)) {\n        if (positive) {\n          for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n          ticks.push(pow(i));\n        } else {\n          ticks.push(pow(i));\n          for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n        }\n        for (i = 0; ticks[i] < u; i++) {}\n        for (j = ticks.length; ticks[j - 1] > v; j--) {}\n        ticks = ticks.slice(i, j);\n      }\n      return ticks;\n    };\n    scale.copy = function() {\n      return d3_scale_log(linear.copy(), base, positive, domain);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  var d3_scale_logNiceNegative = {\n    floor: function(x) {\n      return -Math.ceil(-x);\n    },\n    ceil: function(x) {\n      return -Math.floor(-x);\n    }\n  };\n  d3.scale.pow = function() {\n    return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n  };\n  function d3_scale_pow(linear, exponent, domain) {\n    var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n    function scale(x) {\n      return linear(powp(x));\n    }\n    scale.invert = function(x) {\n      return powb(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      linear.domain((domain = x.map(Number)).map(powp));\n      return scale;\n    };\n    scale.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    scale.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    scale.nice = function(m) {\n      return scale.domain(d3_scale_linearNice(domain, m));\n    };\n    scale.exponent = function(x) {\n      if (!arguments.length) return exponent;\n      powp = d3_scale_powPow(exponent = x);\n      powb = d3_scale_powPow(1 / exponent);\n      linear.domain(domain.map(powp));\n      return scale;\n    };\n    scale.copy = function() {\n      return d3_scale_pow(linear.copy(), exponent, domain);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  function d3_scale_powPow(e) {\n    return function(x) {\n      return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n    };\n  }\n  d3.scale.sqrt = function() {\n    return d3.scale.pow().exponent(.5);\n  };\n  d3.scale.ordinal = function() {\n    return d3_scale_ordinal([], {\n      t: \"range\",\n      a: [ [] ]\n    });\n  };\n  function d3_scale_ordinal(domain, ranger) {\n    var index, range, rangeBand;\n    function scale(x) {\n      return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n    }\n    function steps(start, step) {\n      return d3.range(domain.length).map(function(i) {\n        return start + step * i;\n      });\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = [];\n      index = new d3_Map();\n      var i = -1, n = x.length, xi;\n      while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n      return scale[ranger.t].apply(scale, ranger.a);\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      rangeBand = 0;\n      ranger = {\n        t: \"range\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangePoints = function(x, padding) {\n      if (arguments.length < 2) padding = 0;\n      var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n      0) : (stop - start) / (domain.length - 1 + padding);\n      range = steps(start + step * padding / 2, step);\n      rangeBand = 0;\n      ranger = {\n        t: \"rangePoints\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeRoundPoints = function(x, padding) {\n      if (arguments.length < 2) padding = 0;\n      var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n      0) : (stop - start) / (domain.length - 1 + padding) | 0;\n      range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n      rangeBand = 0;\n      ranger = {\n        t: \"rangeRoundPoints\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeBands = function(x, padding, outerPadding) {\n      if (arguments.length < 2) padding = 0;\n      if (arguments.length < 3) outerPadding = padding;\n      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n      range = steps(start + step * outerPadding, step);\n      if (reverse) range.reverse();\n      rangeBand = step * (1 - padding);\n      ranger = {\n        t: \"rangeBands\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeRoundBands = function(x, padding, outerPadding) {\n      if (arguments.length < 2) padding = 0;\n      if (arguments.length < 3) outerPadding = padding;\n      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n      range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n      if (reverse) range.reverse();\n      rangeBand = Math.round(step * (1 - padding));\n      ranger = {\n        t: \"rangeRoundBands\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeBand = function() {\n      return rangeBand;\n    };\n    scale.rangeExtent = function() {\n      return d3_scaleExtent(ranger.a[0]);\n    };\n    scale.copy = function() {\n      return d3_scale_ordinal(domain, ranger);\n    };\n    return scale.domain(domain);\n  }\n  d3.scale.category10 = function() {\n    return d3.scale.ordinal().range(d3_category10);\n  };\n  d3.scale.category20 = function() {\n    return d3.scale.ordinal().range(d3_category20);\n  };\n  d3.scale.category20b = function() {\n    return d3.scale.ordinal().range(d3_category20b);\n  };\n  d3.scale.category20c = function() {\n    return d3.scale.ordinal().range(d3_category20c);\n  };\n  var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n  var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n  var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n  var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n  d3.scale.quantile = function() {\n    return d3_scale_quantile([], []);\n  };\n  function d3_scale_quantile(domain, range) {\n    var thresholds;\n    function rescale() {\n      var k = 0, q = range.length;\n      thresholds = [];\n      while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n      return scale;\n    }\n    function scale(x) {\n      if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.quantiles = function() {\n      return thresholds;\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n    };\n    scale.copy = function() {\n      return d3_scale_quantile(domain, range);\n    };\n    return rescale();\n  }\n  d3.scale.quantize = function() {\n    return d3_scale_quantize(0, 1, [ 0, 1 ]);\n  };\n  function d3_scale_quantize(x0, x1, range) {\n    var kx, i;\n    function scale(x) {\n      return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n    }\n    function rescale() {\n      kx = range.length / (x1 - x0);\n      i = range.length - 1;\n      return scale;\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return [ x0, x1 ];\n      x0 = +x[0];\n      x1 = +x[x.length - 1];\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      y = y < 0 ? NaN : y / kx + x0;\n      return [ y, y + 1 / kx ];\n    };\n    scale.copy = function() {\n      return d3_scale_quantize(x0, x1, range);\n    };\n    return rescale();\n  }\n  d3.scale.threshold = function() {\n    return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n  };\n  function d3_scale_threshold(domain, range) {\n    function scale(x) {\n      if (x <= x) return range[d3.bisect(domain, x)];\n    }\n    scale.domain = function(_) {\n      if (!arguments.length) return domain;\n      domain = _;\n      return scale;\n    };\n    scale.range = function(_) {\n      if (!arguments.length) return range;\n      range = _;\n      return scale;\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      return [ domain[y - 1], domain[y] ];\n    };\n    scale.copy = function() {\n      return d3_scale_threshold(domain, range);\n    };\n    return scale;\n  }\n  d3.scale.identity = function() {\n    return d3_scale_identity([ 0, 1 ]);\n  };\n  function d3_scale_identity(domain) {\n    function identity(x) {\n      return +x;\n    }\n    identity.invert = identity;\n    identity.domain = identity.range = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(identity);\n      return identity;\n    };\n    identity.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    identity.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    identity.copy = function() {\n      return d3_scale_identity(domain);\n    };\n    return identity;\n  }\n  d3.svg = {};\n  function d3_zero() {\n    return 0;\n  }\n  d3.svg.arc = function() {\n    var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n    function arc() {\n      var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n      if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n      if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n      var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n      if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n        rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n        if (!cw) p1 *= -1;\n        if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n        if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n      }\n      if (r1) {\n        x0 = r1 * Math.cos(a0 + p1);\n        y0 = r1 * Math.sin(a0 + p1);\n        x1 = r1 * Math.cos(a1 - p1);\n        y1 = r1 * Math.sin(a1 - p1);\n        var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n        if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n          var h1 = (a0 + a1) / 2;\n          x0 = r1 * Math.cos(h1);\n          y0 = r1 * Math.sin(h1);\n          x1 = y1 = null;\n        }\n      } else {\n        x0 = y0 = 0;\n      }\n      if (r0) {\n        x2 = r0 * Math.cos(a1 - p0);\n        y2 = r0 * Math.sin(a1 - p0);\n        x3 = r0 * Math.cos(a0 + p0);\n        y3 = r0 * Math.sin(a0 + p0);\n        var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n        if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n          var h0 = (a0 + a1) / 2;\n          x2 = r0 * Math.cos(h0);\n          y2 = r0 * Math.sin(h0);\n          x3 = y3 = null;\n        }\n      } else {\n        x2 = y2 = 0;\n      }\n      if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n        cr = r0 < r1 ^ cw ? 0 : 1;\n        var rc1 = rc, rc0 = rc;\n        if (da < π) {\n          var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n          rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n          rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n        }\n        if (x1 != null) {\n          var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n          if (rc === rc1) {\n            path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n          } else {\n            path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n          }\n        } else {\n          path.push(\"M\", x0, \",\", y0);\n        }\n        if (x3 != null) {\n          var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n          if (rc === rc0) {\n            path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n          } else {\n            path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n          }\n        } else {\n          path.push(\"L\", x2, \",\", y2);\n        }\n      } else {\n        path.push(\"M\", x0, \",\", y0);\n        if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n        path.push(\"L\", x2, \",\", y2);\n        if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n      }\n      path.push(\"Z\");\n      return path.join(\"\");\n    }\n    function circleSegment(r1, cw) {\n      return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n    }\n    arc.innerRadius = function(v) {\n      if (!arguments.length) return innerRadius;\n      innerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.outerRadius = function(v) {\n      if (!arguments.length) return outerRadius;\n      outerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.cornerRadius = function(v) {\n      if (!arguments.length) return cornerRadius;\n      cornerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.padRadius = function(v) {\n      if (!arguments.length) return padRadius;\n      padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n      return arc;\n    };\n    arc.startAngle = function(v) {\n      if (!arguments.length) return startAngle;\n      startAngle = d3_functor(v);\n      return arc;\n    };\n    arc.endAngle = function(v) {\n      if (!arguments.length) return endAngle;\n      endAngle = d3_functor(v);\n      return arc;\n    };\n    arc.padAngle = function(v) {\n      if (!arguments.length) return padAngle;\n      padAngle = d3_functor(v);\n      return arc;\n    };\n    arc.centroid = function() {\n      var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n      return [ Math.cos(a) * r, Math.sin(a) * r ];\n    };\n    return arc;\n  };\n  var d3_svg_arcAuto = \"auto\";\n  function d3_svg_arcInnerRadius(d) {\n    return d.innerRadius;\n  }\n  function d3_svg_arcOuterRadius(d) {\n    return d.outerRadius;\n  }\n  function d3_svg_arcStartAngle(d) {\n    return d.startAngle;\n  }\n  function d3_svg_arcEndAngle(d) {\n    return d.endAngle;\n  }\n  function d3_svg_arcPadAngle(d) {\n    return d && d.padAngle;\n  }\n  function d3_svg_arcSweep(x0, y0, x1, y1) {\n    return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n  }\n  function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n    var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n    if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n    return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n  }\n  function d3_true() {\n    return true;\n  }\n  function d3_svg_line(projection) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n    function line(data) {\n      var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n      function segment() {\n        segments.push(\"M\", interpolate(projection(points), tension));\n      }\n      while (++i < n) {\n        if (defined.call(this, d = data[i], i)) {\n          points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n        } else if (points.length) {\n          segment();\n          points = [];\n        }\n      }\n      if (points.length) segment();\n      return segments.length ? segments.join(\"\") : null;\n    }\n    line.x = function(_) {\n      if (!arguments.length) return x;\n      x = _;\n      return line;\n    };\n    line.y = function(_) {\n      if (!arguments.length) return y;\n      y = _;\n      return line;\n    };\n    line.defined = function(_) {\n      if (!arguments.length) return defined;\n      defined = _;\n      return line;\n    };\n    line.interpolate = function(_) {\n      if (!arguments.length) return interpolateKey;\n      if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n      return line;\n    };\n    line.tension = function(_) {\n      if (!arguments.length) return tension;\n      tension = _;\n      return line;\n    };\n    return line;\n  }\n  d3.svg.line = function() {\n    return d3_svg_line(d3_identity);\n  };\n  var d3_svg_lineInterpolators = d3.map({\n    linear: d3_svg_lineLinear,\n    \"linear-closed\": d3_svg_lineLinearClosed,\n    step: d3_svg_lineStep,\n    \"step-before\": d3_svg_lineStepBefore,\n    \"step-after\": d3_svg_lineStepAfter,\n    basis: d3_svg_lineBasis,\n    \"basis-open\": d3_svg_lineBasisOpen,\n    \"basis-closed\": d3_svg_lineBasisClosed,\n    bundle: d3_svg_lineBundle,\n    cardinal: d3_svg_lineCardinal,\n    \"cardinal-open\": d3_svg_lineCardinalOpen,\n    \"cardinal-closed\": d3_svg_lineCardinalClosed,\n    monotone: d3_svg_lineMonotone\n  });\n  d3_svg_lineInterpolators.forEach(function(key, value) {\n    value.key = key;\n    value.closed = /-closed$/.test(key);\n  });\n  function d3_svg_lineLinear(points) {\n    return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n  }\n  function d3_svg_lineLinearClosed(points) {\n    return points.join(\"L\") + \"Z\";\n  }\n  function d3_svg_lineStep(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n    if (n > 1) path.push(\"H\", p[0]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineStepBefore(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineStepAfter(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineCardinalOpen(points, tension) {\n    return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n  }\n  function d3_svg_lineCardinalClosed(points, tension) {\n    return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n    points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n  }\n  function d3_svg_lineCardinal(points, tension) {\n    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n  }\n  function d3_svg_lineHermite(points, tangents) {\n    if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n      return d3_svg_lineLinear(points);\n    }\n    var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n    if (quad) {\n      path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n      p0 = points[1];\n      pi = 2;\n    }\n    if (tangents.length > 1) {\n      t = tangents[1];\n      p = points[pi];\n      pi++;\n      path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n      for (var i = 2; i < tangents.length; i++, pi++) {\n        p = points[pi];\n        t = tangents[i];\n        path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n      }\n    }\n    if (quad) {\n      var lp = points[pi];\n      path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n    }\n    return path;\n  }\n  function d3_svg_lineCardinalTangents(points, tension) {\n    var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n    while (++i < n) {\n      p0 = p1;\n      p1 = p2;\n      p2 = points[i];\n      tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n    }\n    return tangents;\n  }\n  function d3_svg_lineBasis(points) {\n    if (points.length < 3) return d3_svg_lineLinear(points);\n    var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n    points.push(points[n - 1]);\n    while (++i <= n) {\n      pi = points[i];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    points.pop();\n    path.push(\"L\", pi);\n    return path.join(\"\");\n  }\n  function d3_svg_lineBasisOpen(points) {\n    if (points.length < 4) return d3_svg_lineLinear(points);\n    var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n    while (++i < 3) {\n      pi = points[i];\n      px.push(pi[0]);\n      py.push(pi[1]);\n    }\n    path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n    --i;\n    while (++i < n) {\n      pi = points[i];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    return path.join(\"\");\n  }\n  function d3_svg_lineBasisClosed(points) {\n    var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n    while (++i < 4) {\n      pi = points[i % n];\n      px.push(pi[0]);\n      py.push(pi[1]);\n    }\n    path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n    --i;\n    while (++i < m) {\n      pi = points[i % n];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    return path.join(\"\");\n  }\n  function d3_svg_lineBundle(points, tension) {\n    var n = points.length - 1;\n    if (n) {\n      var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n      while (++i <= n) {\n        p = points[i];\n        t = i / n;\n        p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n        p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n      }\n    }\n    return d3_svg_lineBasis(points);\n  }\n  function d3_svg_lineDot4(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n  }\n  var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n  function d3_svg_lineBasisBezier(path, x, y) {\n    path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n  }\n  function d3_svg_lineSlope(p0, p1) {\n    return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n  }\n  function d3_svg_lineFiniteDifferences(points) {\n    var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n    while (++i < j) {\n      m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n    }\n    m[i] = d;\n    return m;\n  }\n  function d3_svg_lineMonotoneTangents(points) {\n    var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n    while (++i < j) {\n      d = d3_svg_lineSlope(points[i], points[i + 1]);\n      if (abs(d) < ε) {\n        m[i] = m[i + 1] = 0;\n      } else {\n        a = m[i] / d;\n        b = m[i + 1] / d;\n        s = a * a + b * b;\n        if (s > 9) {\n          s = d * 3 / Math.sqrt(s);\n          m[i] = s * a;\n          m[i + 1] = s * b;\n        }\n      }\n    }\n    i = -1;\n    while (++i <= j) {\n      s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n      tangents.push([ s || 0, m[i] * s || 0 ]);\n    }\n    return tangents;\n  }\n  function d3_svg_lineMonotone(points) {\n    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n  }\n  d3.svg.line.radial = function() {\n    var line = d3_svg_line(d3_svg_lineRadial);\n    line.radius = line.x, delete line.x;\n    line.angle = line.y, delete line.y;\n    return line;\n  };\n  function d3_svg_lineRadial(points) {\n    var point, i = -1, n = points.length, r, a;\n    while (++i < n) {\n      point = points[i];\n      r = point[0];\n      a = point[1] - halfπ;\n      point[0] = r * Math.cos(a);\n      point[1] = r * Math.sin(a);\n    }\n    return points;\n  }\n  function d3_svg_area(projection) {\n    var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n    function area(data) {\n      var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n        return x;\n      } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n        return y;\n      } : d3_functor(y1), x, y;\n      function segment() {\n        segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n      }\n      while (++i < n) {\n        if (defined.call(this, d = data[i], i)) {\n          points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n          points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n        } else if (points0.length) {\n          segment();\n          points0 = [];\n          points1 = [];\n        }\n      }\n      if (points0.length) segment();\n      return segments.length ? segments.join(\"\") : null;\n    }\n    area.x = function(_) {\n      if (!arguments.length) return x1;\n      x0 = x1 = _;\n      return area;\n    };\n    area.x0 = function(_) {\n      if (!arguments.length) return x0;\n      x0 = _;\n      return area;\n    };\n    area.x1 = function(_) {\n      if (!arguments.length) return x1;\n      x1 = _;\n      return area;\n    };\n    area.y = function(_) {\n      if (!arguments.length) return y1;\n      y0 = y1 = _;\n      return area;\n    };\n    area.y0 = function(_) {\n      if (!arguments.length) return y0;\n      y0 = _;\n      return area;\n    };\n    area.y1 = function(_) {\n      if (!arguments.length) return y1;\n      y1 = _;\n      return area;\n    };\n    area.defined = function(_) {\n      if (!arguments.length) return defined;\n      defined = _;\n      return area;\n    };\n    area.interpolate = function(_) {\n      if (!arguments.length) return interpolateKey;\n      if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n      interpolateReverse = interpolate.reverse || interpolate;\n      L = interpolate.closed ? \"M\" : \"L\";\n      return area;\n    };\n    area.tension = function(_) {\n      if (!arguments.length) return tension;\n      tension = _;\n      return area;\n    };\n    return area;\n  }\n  d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n  d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n  d3.svg.area = function() {\n    return d3_svg_area(d3_identity);\n  };\n  d3.svg.area.radial = function() {\n    var area = d3_svg_area(d3_svg_lineRadial);\n    area.radius = area.x, delete area.x;\n    area.innerRadius = area.x0, delete area.x0;\n    area.outerRadius = area.x1, delete area.x1;\n    area.angle = area.y, delete area.y;\n    area.startAngle = area.y0, delete area.y0;\n    area.endAngle = area.y1, delete area.y1;\n    return area;\n  };\n  function d3_source(d) {\n    return d.source;\n  }\n  function d3_target(d) {\n    return d.target;\n  }\n  d3.svg.chord = function() {\n    var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n    function chord(d, i) {\n      var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n      return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n    }\n    function subgroup(self, f, d, i) {\n      var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n      return {\n        r: r,\n        a0: a0,\n        a1: a1,\n        p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n        p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n      };\n    }\n    function equals(a, b) {\n      return a.a0 == b.a0 && a.a1 == b.a1;\n    }\n    function arc(r, p, a) {\n      return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n    }\n    function curve(r0, p0, r1, p1) {\n      return \"Q 0,0 \" + p1;\n    }\n    chord.radius = function(v) {\n      if (!arguments.length) return radius;\n      radius = d3_functor(v);\n      return chord;\n    };\n    chord.source = function(v) {\n      if (!arguments.length) return source;\n      source = d3_functor(v);\n      return chord;\n    };\n    chord.target = function(v) {\n      if (!arguments.length) return target;\n      target = d3_functor(v);\n      return chord;\n    };\n    chord.startAngle = function(v) {\n      if (!arguments.length) return startAngle;\n      startAngle = d3_functor(v);\n      return chord;\n    };\n    chord.endAngle = function(v) {\n      if (!arguments.length) return endAngle;\n      endAngle = d3_functor(v);\n      return chord;\n    };\n    return chord;\n  };\n  function d3_svg_chordRadius(d) {\n    return d.radius;\n  }\n  d3.svg.diagonal = function() {\n    var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n    function diagonal(d, i) {\n      var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n        x: p0.x,\n        y: m\n      }, {\n        x: p3.x,\n        y: m\n      }, p3 ];\n      p = p.map(projection);\n      return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n    }\n    diagonal.source = function(x) {\n      if (!arguments.length) return source;\n      source = d3_functor(x);\n      return diagonal;\n    };\n    diagonal.target = function(x) {\n      if (!arguments.length) return target;\n      target = d3_functor(x);\n      return diagonal;\n    };\n    diagonal.projection = function(x) {\n      if (!arguments.length) return projection;\n      projection = x;\n      return diagonal;\n    };\n    return diagonal;\n  };\n  function d3_svg_diagonalProjection(d) {\n    return [ d.x, d.y ];\n  }\n  d3.svg.diagonal.radial = function() {\n    var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n    diagonal.projection = function(x) {\n      return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n    };\n    return diagonal;\n  };\n  function d3_svg_diagonalRadialProjection(projection) {\n    return function() {\n      var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n      return [ r * Math.cos(a), r * Math.sin(a) ];\n    };\n  }\n  d3.svg.symbol = function() {\n    var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n    function symbol(d, i) {\n      return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n    }\n    symbol.type = function(x) {\n      if (!arguments.length) return type;\n      type = d3_functor(x);\n      return symbol;\n    };\n    symbol.size = function(x) {\n      if (!arguments.length) return size;\n      size = d3_functor(x);\n      return symbol;\n    };\n    return symbol;\n  };\n  function d3_svg_symbolSize() {\n    return 64;\n  }\n  function d3_svg_symbolType() {\n    return \"circle\";\n  }\n  function d3_svg_symbolCircle(size) {\n    var r = Math.sqrt(size / π);\n    return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n  }\n  var d3_svg_symbols = d3.map({\n    circle: d3_svg_symbolCircle,\n    cross: function(size) {\n      var r = Math.sqrt(size / 5) / 2;\n      return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n    },\n    diamond: function(size) {\n      var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n      return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n    },\n    square: function(size) {\n      var r = Math.sqrt(size) / 2;\n      return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n    },\n    \"triangle-down\": function(size) {\n      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n      return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n    },\n    \"triangle-up\": function(size) {\n      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n      return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n    }\n  });\n  d3.svg.symbolTypes = d3_svg_symbols.keys();\n  var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n  d3_selectionPrototype.transition = function(name) {\n    var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n      time: Date.now(),\n      ease: d3_ease_cubicInOut,\n      delay: 0,\n      duration: 250\n    };\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n        subgroup.push(node);\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_selectionPrototype.interrupt = function(name) {\n    return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n  };\n  var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n  function d3_selection_interruptNS(ns) {\n    return function() {\n      var lock, activeId, active;\n      if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n        active.timer.c = null;\n        active.timer.t = NaN;\n        if (--lock.count) delete lock[activeId]; else delete this[ns];\n        lock.active += .5;\n        active.event && active.event.interrupt.call(this, this.__data__, active.index);\n      }\n    };\n  }\n  function d3_transition(groups, ns, id) {\n    d3_subclass(groups, d3_transitionPrototype);\n    groups.namespace = ns;\n    groups.id = id;\n    return groups;\n  }\n  var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n  d3_transitionPrototype.call = d3_selectionPrototype.call;\n  d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n  d3_transitionPrototype.node = d3_selectionPrototype.node;\n  d3_transitionPrototype.size = d3_selectionPrototype.size;\n  d3.transition = function(selection, name) {\n    return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n  };\n  d3.transition.prototype = d3_transitionPrototype;\n  d3_transitionPrototype.select = function(selector) {\n    var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n    selector = d3_selection_selector(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n          if (\"__data__\" in node) subnode.__data__ = node.__data__;\n          d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n          subgroup.push(subnode);\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_transitionPrototype.selectAll = function(selector) {\n    var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n    selector = d3_selection_selectorAll(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          transition = node[ns][id];\n          subnodes = selector.call(node, node.__data__, i, j);\n          subgroups.push(subgroup = []);\n          for (var k = -1, o = subnodes.length; ++k < o; ) {\n            if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n            subgroup.push(subnode);\n          }\n        }\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_transitionPrototype.filter = function(filter) {\n    var subgroups = [], subgroup, group, node;\n    if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n          subgroup.push(node);\n        }\n      }\n    }\n    return d3_transition(subgroups, this.namespace, this.id);\n  };\n  d3_transitionPrototype.tween = function(name, tween) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n    return d3_selection_each(this, tween == null ? function(node) {\n      node[ns][id].tween.remove(name);\n    } : function(node) {\n      node[ns][id].tween.set(name, tween);\n    });\n  };\n  function d3_transition_tween(groups, name, value, tween) {\n    var id = groups.id, ns = groups.namespace;\n    return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n    } : (value = tween(value), function(node) {\n      node[ns][id].tween.set(name, value);\n    }));\n  }\n  d3_transitionPrototype.attr = function(nameNS, value) {\n    if (arguments.length < 2) {\n      for (value in nameNS) this.attr(value, nameNS[value]);\n      return this;\n    }\n    var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n    function attrNull() {\n      this.removeAttribute(name);\n    }\n    function attrNullNS() {\n      this.removeAttributeNS(name.space, name.local);\n    }\n    function attrTween(b) {\n      return b == null ? attrNull : (b += \"\", function() {\n        var a = this.getAttribute(name), i;\n        return a !== b && (i = interpolate(a, b), function(t) {\n          this.setAttribute(name, i(t));\n        });\n      });\n    }\n    function attrTweenNS(b) {\n      return b == null ? attrNullNS : (b += \"\", function() {\n        var a = this.getAttributeNS(name.space, name.local), i;\n        return a !== b && (i = interpolate(a, b), function(t) {\n          this.setAttributeNS(name.space, name.local, i(t));\n        });\n      });\n    }\n    return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n  };\n  d3_transitionPrototype.attrTween = function(nameNS, tween) {\n    var name = d3.ns.qualify(nameNS);\n    function attrTween(d, i) {\n      var f = tween.call(this, d, i, this.getAttribute(name));\n      return f && function(t) {\n        this.setAttribute(name, f(t));\n      };\n    }\n    function attrTweenNS(d, i) {\n      var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n      return f && function(t) {\n        this.setAttributeNS(name.space, name.local, f(t));\n      };\n    }\n    return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n  };\n  d3_transitionPrototype.style = function(name, value, priority) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof name !== \"string\") {\n        if (n < 2) value = \"\";\n        for (priority in name) this.style(priority, name[priority], value);\n        return this;\n      }\n      priority = \"\";\n    }\n    function styleNull() {\n      this.style.removeProperty(name);\n    }\n    function styleString(b) {\n      return b == null ? styleNull : (b += \"\", function() {\n        var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n        return a !== b && (i = d3_interpolate(a, b), function(t) {\n          this.style.setProperty(name, i(t), priority);\n        });\n      });\n    }\n    return d3_transition_tween(this, \"style.\" + name, value, styleString);\n  };\n  d3_transitionPrototype.styleTween = function(name, tween, priority) {\n    if (arguments.length < 3) priority = \"\";\n    function styleTween(d, i) {\n      var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n      return f && function(t) {\n        this.style.setProperty(name, f(t), priority);\n      };\n    }\n    return this.tween(\"style.\" + name, styleTween);\n  };\n  d3_transitionPrototype.text = function(value) {\n    return d3_transition_tween(this, \"text\", value, d3_transition_text);\n  };\n  function d3_transition_text(b) {\n    if (b == null) b = \"\";\n    return function() {\n      this.textContent = b;\n    };\n  }\n  d3_transitionPrototype.remove = function() {\n    var ns = this.namespace;\n    return this.each(\"end.transition\", function() {\n      var p;\n      if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n    });\n  };\n  d3_transitionPrototype.ease = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].ease;\n    if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n    return d3_selection_each(this, function(node) {\n      node[ns][id].ease = value;\n    });\n  };\n  d3_transitionPrototype.delay = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].delay;\n    return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].delay = +value.call(node, node.__data__, i, j);\n    } : (value = +value, function(node) {\n      node[ns][id].delay = value;\n    }));\n  };\n  d3_transitionPrototype.duration = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].duration;\n    return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n    } : (value = Math.max(1, value), function(node) {\n      node[ns][id].duration = value;\n    }));\n  };\n  d3_transitionPrototype.each = function(type, listener) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 2) {\n      var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n      try {\n        d3_transitionInheritId = id;\n        d3_selection_each(this, function(node, i, j) {\n          d3_transitionInherit = node[ns][id];\n          type.call(node, node.__data__, i, j);\n        });\n      } finally {\n        d3_transitionInherit = inherit;\n        d3_transitionInheritId = inheritId;\n      }\n    } else {\n      d3_selection_each(this, function(node) {\n        var transition = node[ns][id];\n        (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n      });\n    }\n    return this;\n  };\n  d3_transitionPrototype.transition = function() {\n    var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        if (node = group[i]) {\n          transition = node[ns][id0];\n          d3_transitionNode(node, i, ns, id1, {\n            time: transition.time,\n            ease: transition.ease,\n            delay: transition.delay + transition.duration,\n            duration: transition.duration\n          });\n        }\n        subgroup.push(node);\n      }\n    }\n    return d3_transition(subgroups, ns, id1);\n  };\n  function d3_transitionNamespace(name) {\n    return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n  }\n  function d3_transitionNode(node, i, ns, id, inherit) {\n    var lock = node[ns] || (node[ns] = {\n      active: 0,\n      count: 0\n    }), transition = lock[id], time, timer, duration, ease, tweens;\n    function schedule(elapsed) {\n      var delay = transition.delay;\n      timer.t = delay + time;\n      if (delay <= elapsed) return start(elapsed - delay);\n      timer.c = start;\n    }\n    function start(elapsed) {\n      var activeId = lock.active, active = lock[activeId];\n      if (active) {\n        active.timer.c = null;\n        active.timer.t = NaN;\n        --lock.count;\n        delete lock[activeId];\n        active.event && active.event.interrupt.call(node, node.__data__, active.index);\n      }\n      for (var cancelId in lock) {\n        if (+cancelId < id) {\n          var cancel = lock[cancelId];\n          cancel.timer.c = null;\n          cancel.timer.t = NaN;\n          --lock.count;\n          delete lock[cancelId];\n        }\n      }\n      timer.c = tick;\n      d3_timer(function() {\n        if (timer.c && tick(elapsed || 1)) {\n          timer.c = null;\n          timer.t = NaN;\n        }\n        return 1;\n      }, 0, time);\n      lock.active = id;\n      transition.event && transition.event.start.call(node, node.__data__, i);\n      tweens = [];\n      transition.tween.forEach(function(key, value) {\n        if (value = value.call(node, node.__data__, i)) {\n          tweens.push(value);\n        }\n      });\n      ease = transition.ease;\n      duration = transition.duration;\n    }\n    function tick(elapsed) {\n      var t = elapsed / duration, e = ease(t), n = tweens.length;\n      while (n > 0) {\n        tweens[--n].call(node, e);\n      }\n      if (t >= 1) {\n        transition.event && transition.event.end.call(node, node.__data__, i);\n        if (--lock.count) delete lock[id]; else delete node[ns];\n        return 1;\n      }\n    }\n    if (!transition) {\n      time = inherit.time;\n      timer = d3_timer(schedule, 0, time);\n      transition = lock[id] = {\n        tween: new d3_Map(),\n        time: time,\n        timer: timer,\n        delay: inherit.delay,\n        duration: inherit.duration,\n        ease: inherit.ease,\n        index: i\n      };\n      inherit = null;\n      ++lock.count;\n    }\n  }\n  d3.svg.axis = function() {\n    var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n    function axis(g) {\n      g.each(function() {\n        var g = d3.select(this);\n        var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n        var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n        var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n        d3.transition(path));\n        tickEnter.append(\"line\");\n        tickEnter.append(\"text\");\n        var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n        if (orient === \"bottom\" || orient === \"top\") {\n          tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n          text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n          pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n        } else {\n          tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n          text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n          pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n        }\n        lineEnter.attr(y2, sign * innerTickSize);\n        textEnter.attr(y1, sign * tickSpacing);\n        lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n        textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n        if (scale1.rangeBand) {\n          var x = scale1, dx = x.rangeBand() / 2;\n          scale0 = scale1 = function(d) {\n            return x(d) + dx;\n          };\n        } else if (scale0.rangeBand) {\n          scale0 = scale1;\n        } else {\n          tickExit.call(tickTransform, scale1, scale0);\n        }\n        tickEnter.call(tickTransform, scale0, scale1);\n        tickUpdate.call(tickTransform, scale1, scale1);\n      });\n    }\n    axis.scale = function(x) {\n      if (!arguments.length) return scale;\n      scale = x;\n      return axis;\n    };\n    axis.orient = function(x) {\n      if (!arguments.length) return orient;\n      orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n      return axis;\n    };\n    axis.ticks = function() {\n      if (!arguments.length) return tickArguments_;\n      tickArguments_ = d3_array(arguments);\n      return axis;\n    };\n    axis.tickValues = function(x) {\n      if (!arguments.length) return tickValues;\n      tickValues = x;\n      return axis;\n    };\n    axis.tickFormat = function(x) {\n      if (!arguments.length) return tickFormat_;\n      tickFormat_ = x;\n      return axis;\n    };\n    axis.tickSize = function(x) {\n      var n = arguments.length;\n      if (!n) return innerTickSize;\n      innerTickSize = +x;\n      outerTickSize = +arguments[n - 1];\n      return axis;\n    };\n    axis.innerTickSize = function(x) {\n      if (!arguments.length) return innerTickSize;\n      innerTickSize = +x;\n      return axis;\n    };\n    axis.outerTickSize = function(x) {\n      if (!arguments.length) return outerTickSize;\n      outerTickSize = +x;\n      return axis;\n    };\n    axis.tickPadding = function(x) {\n      if (!arguments.length) return tickPadding;\n      tickPadding = +x;\n      return axis;\n    };\n    axis.tickSubdivide = function() {\n      return arguments.length && axis;\n    };\n    return axis;\n  };\n  var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n    top: 1,\n    right: 1,\n    bottom: 1,\n    left: 1\n  };\n  function d3_svg_axisX(selection, x0, x1) {\n    selection.attr(\"transform\", function(d) {\n      var v0 = x0(d);\n      return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n    });\n  }\n  function d3_svg_axisY(selection, y0, y1) {\n    selection.attr(\"transform\", function(d) {\n      var v0 = y0(d);\n      return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n    });\n  }\n  d3.svg.brush = function() {\n    var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n    function brush(g) {\n      g.each(function() {\n        var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n        var background = g.selectAll(\".background\").data([ 0 ]);\n        background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n        g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n        var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n        resize.exit().remove();\n        resize.enter().append(\"g\").attr(\"class\", function(d) {\n          return \"resize \" + d;\n        }).style(\"cursor\", function(d) {\n          return d3_svg_brushCursor[d];\n        }).append(\"rect\").attr(\"x\", function(d) {\n          return /[ew]$/.test(d) ? -3 : null;\n        }).attr(\"y\", function(d) {\n          return /^[ns]/.test(d) ? -3 : null;\n        }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n        resize.style(\"display\", brush.empty() ? \"none\" : null);\n        var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n        if (x) {\n          range = d3_scaleRange(x);\n          backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n          redrawX(gUpdate);\n        }\n        if (y) {\n          range = d3_scaleRange(y);\n          backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n          redrawY(gUpdate);\n        }\n        redraw(gUpdate);\n      });\n    }\n    brush.event = function(g) {\n      g.each(function() {\n        var event_ = event.of(this, arguments), extent1 = {\n          x: xExtent,\n          y: yExtent,\n          i: xExtentDomain,\n          j: yExtentDomain\n        }, extent0 = this.__chart__ || extent1;\n        this.__chart__ = extent1;\n        if (d3_transitionInheritId) {\n          d3.select(this).transition().each(\"start.brush\", function() {\n            xExtentDomain = extent0.i;\n            yExtentDomain = extent0.j;\n            xExtent = extent0.x;\n            yExtent = extent0.y;\n            event_({\n              type: \"brushstart\"\n            });\n          }).tween(\"brush:brush\", function() {\n            var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n            xExtentDomain = yExtentDomain = null;\n            return function(t) {\n              xExtent = extent1.x = xi(t);\n              yExtent = extent1.y = yi(t);\n              event_({\n                type: \"brush\",\n                mode: \"resize\"\n              });\n            };\n          }).each(\"end.brush\", function() {\n            xExtentDomain = extent1.i;\n            yExtentDomain = extent1.j;\n            event_({\n              type: \"brush\",\n              mode: \"resize\"\n            });\n            event_({\n              type: \"brushend\"\n            });\n          });\n        } else {\n          event_({\n            type: \"brushstart\"\n          });\n          event_({\n            type: \"brush\",\n            mode: \"resize\"\n          });\n          event_({\n            type: \"brushend\"\n          });\n        }\n      });\n    };\n    function redraw(g) {\n      g.selectAll(\".resize\").attr(\"transform\", function(d) {\n        return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n      });\n    }\n    function redrawX(g) {\n      g.select(\".extent\").attr(\"x\", xExtent[0]);\n      g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n    }\n    function redrawY(g) {\n      g.select(\".extent\").attr(\"y\", yExtent[0]);\n      g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n    }\n    function brushstart() {\n      var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n      var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n      if (d3.event.changedTouches) {\n        w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n      } else {\n        w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n      }\n      g.interrupt().selectAll(\"*\").interrupt();\n      if (dragging) {\n        origin[0] = xExtent[0] - origin[0];\n        origin[1] = yExtent[0] - origin[1];\n      } else if (resizing) {\n        var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n        offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n        origin[0] = xExtent[ex];\n        origin[1] = yExtent[ey];\n      } else if (d3.event.altKey) center = origin.slice();\n      g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n      d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n      event_({\n        type: \"brushstart\"\n      });\n      brushmove();\n      function keydown() {\n        if (d3.event.keyCode == 32) {\n          if (!dragging) {\n            center = null;\n            origin[0] -= xExtent[1];\n            origin[1] -= yExtent[1];\n            dragging = 2;\n          }\n          d3_eventPreventDefault();\n        }\n      }\n      function keyup() {\n        if (d3.event.keyCode == 32 && dragging == 2) {\n          origin[0] += xExtent[1];\n          origin[1] += yExtent[1];\n          dragging = 0;\n          d3_eventPreventDefault();\n        }\n      }\n      function brushmove() {\n        var point = d3.mouse(target), moved = false;\n        if (offset) {\n          point[0] += offset[0];\n          point[1] += offset[1];\n        }\n        if (!dragging) {\n          if (d3.event.altKey) {\n            if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n            origin[0] = xExtent[+(point[0] < center[0])];\n            origin[1] = yExtent[+(point[1] < center[1])];\n          } else center = null;\n        }\n        if (resizingX && move1(point, x, 0)) {\n          redrawX(g);\n          moved = true;\n        }\n        if (resizingY && move1(point, y, 1)) {\n          redrawY(g);\n          moved = true;\n        }\n        if (moved) {\n          redraw(g);\n          event_({\n            type: \"brush\",\n            mode: dragging ? \"move\" : \"resize\"\n          });\n        }\n      }\n      function move1(point, scale, i) {\n        var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n        if (dragging) {\n          r0 -= position;\n          r1 -= size + position;\n        }\n        min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n        if (dragging) {\n          max = (min += position) + size;\n        } else {\n          if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n          if (position < min) {\n            max = min;\n            min = position;\n          } else {\n            max = position;\n          }\n        }\n        if (extent[0] != min || extent[1] != max) {\n          if (i) yExtentDomain = null; else xExtentDomain = null;\n          extent[0] = min;\n          extent[1] = max;\n          return true;\n        }\n      }\n      function brushend() {\n        brushmove();\n        g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n        d3.select(\"body\").style(\"cursor\", null);\n        w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n        dragRestore();\n        event_({\n          type: \"brushend\"\n        });\n      }\n    }\n    brush.x = function(z) {\n      if (!arguments.length) return x;\n      x = z;\n      resizes = d3_svg_brushResizes[!x << 1 | !y];\n      return brush;\n    };\n    brush.y = function(z) {\n      if (!arguments.length) return y;\n      y = z;\n      resizes = d3_svg_brushResizes[!x << 1 | !y];\n      return brush;\n    };\n    brush.clamp = function(z) {\n      if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n      if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n      return brush;\n    };\n    brush.extent = function(z) {\n      var x0, x1, y0, y1, t;\n      if (!arguments.length) {\n        if (x) {\n          if (xExtentDomain) {\n            x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n          } else {\n            x0 = xExtent[0], x1 = xExtent[1];\n            if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n            if (x1 < x0) t = x0, x0 = x1, x1 = t;\n          }\n        }\n        if (y) {\n          if (yExtentDomain) {\n            y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n          } else {\n            y0 = yExtent[0], y1 = yExtent[1];\n            if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n            if (y1 < y0) t = y0, y0 = y1, y1 = t;\n          }\n        }\n        return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n      }\n      if (x) {\n        x0 = z[0], x1 = z[1];\n        if (y) x0 = x0[0], x1 = x1[0];\n        xExtentDomain = [ x0, x1 ];\n        if (x.invert) x0 = x(x0), x1 = x(x1);\n        if (x1 < x0) t = x0, x0 = x1, x1 = t;\n        if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n      }\n      if (y) {\n        y0 = z[0], y1 = z[1];\n        if (x) y0 = y0[1], y1 = y1[1];\n        yExtentDomain = [ y0, y1 ];\n        if (y.invert) y0 = y(y0), y1 = y(y1);\n        if (y1 < y0) t = y0, y0 = y1, y1 = t;\n        if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n      }\n      return brush;\n    };\n    brush.clear = function() {\n      if (!brush.empty()) {\n        xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n        xExtentDomain = yExtentDomain = null;\n      }\n      return brush;\n    };\n    brush.empty = function() {\n      return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n    };\n    return d3.rebind(brush, event, \"on\");\n  };\n  var d3_svg_brushCursor = {\n    n: \"ns-resize\",\n    e: \"ew-resize\",\n    s: \"ns-resize\",\n    w: \"ew-resize\",\n    nw: \"nwse-resize\",\n    ne: \"nesw-resize\",\n    se: \"nwse-resize\",\n    sw: \"nesw-resize\"\n  };\n  var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n  d3.text = d3_xhrType(function(request) {\n    return request.responseText;\n  });\n  d3.json = function(url, callback) {\n    return d3_xhr(url, \"application/json\", d3_json, callback);\n  };\n  function d3_json(request) {\n    return JSON.parse(request.responseText);\n  }\n  d3.html = function(url, callback) {\n    return d3_xhr(url, \"text/html\", d3_html, callback);\n  };\n  function d3_html(request) {\n    var range = d3_document.createRange();\n    range.selectNode(d3_document.body);\n    return range.createContextualFragment(request.responseText);\n  }\n  d3.xml = d3_xhrType(function(request) {\n    return request.responseXML;\n  });\n  if (true) this.d3 = d3, !(__WEBPACK_AMD_DEFINE_FACTORY__ = (d3),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __nested_webpack_require_4678912__, exports, module)) :\n\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); else {}\n}.apply(self);\n\n/***/ }),\n\n/***/ 88294:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_4914199__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_4914199__(62849)\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjpudWxsLCJzb3VyY2VzIjpbIi9ob21lL3NvbGFyY2gvcGxvdGx5L3dlYmdsL3Bsb3RseS5qcy9ub2RlX21vZHVsZXMvQHBsb3RseS9wb2ludC1jbHVzdGVyL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vcXVhZCcpXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUNaO0FBQ0EsTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDOyJ9\n\n/***/ }),\n\n/***/ 62849:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_4914796__) {\n\n\"use strict\";\n/**\n * @module  point-cluster/quad\n *\n * Bucket based quad tree clustering\n */\n\n\n\nvar search = __nested_webpack_require_4914796__(91358)\nvar clamp = __nested_webpack_require_4914796__(53435)\nvar rect = __nested_webpack_require_4914796__(18863)\nvar getBounds = __nested_webpack_require_4914796__(21527)\nvar pick = __nested_webpack_require_4914796__(71299)\nvar defined = __nested_webpack_require_4914796__(46775)\nvar flatten = __nested_webpack_require_4914796__(30120)\nvar isObj = __nested_webpack_require_4914796__(64941)\nvar dtype = __nested_webpack_require_4914796__(90660)\nvar log2 = __nested_webpack_require_4914796__(27084)\n\nvar MAX_GROUP_ID = 1073741824\n\nmodule.exports = function cluster (srcPoints, options) {\n\tif (!options) { options = {} }\n\n\tsrcPoints = flatten(srcPoints, 'float64')\n\n\toptions = pick(options, {\n\t\tbounds: 'range bounds dataBox databox',\n\t\tmaxDepth: 'depth maxDepth maxdepth level maxLevel maxlevel levels',\n\t\tdtype: 'type dtype format out dst output destination'\n\t\t// sort: 'sortBy sortby sort',\n\t\t// pick: 'pick levelPoint',\n\t\t// nodeSize: 'node nodeSize minNodeSize minSize size'\n\t})\n\n\t// let nodeSize = defined(options.nodeSize, 1)\n\tvar maxDepth = defined(options.maxDepth, 255)\n\tvar bounds = defined(options.bounds, getBounds(srcPoints, 2))\n\tif (bounds[0] === bounds[2]) { bounds[2]++ }\n\tif (bounds[1] === bounds[3]) { bounds[3]++ }\n\n\tvar points = normalize(srcPoints, bounds)\n\n\t// init variables\n\tvar n = srcPoints.length >>> 1\n\tvar ids\n\tif (!options.dtype) { options.dtype = 'array' }\n\n\tif (typeof options.dtype === 'string') {\n\t\tids = new (dtype(options.dtype))(n)\n\t}\n\telse if (options.dtype) {\n\t\tids = options.dtype\n\t\tif (Array.isArray(ids)) { ids.length = n }\n\t}\n\tfor (var i = 0; i < n; ++i) {\n\t\tids[i] = i\n\t}\n\n\t// representative point indexes for levels\n\tvar levels = []\n\n\t// starting indexes of subranges in sub levels, levels.length * 4\n\tvar sublevels = []\n\n\t// unique group ids, sorted in z-curve fashion within levels by shifting bits\n\tvar groups = []\n\n\t// level offsets in `ids`\n\tvar offsets = []\n\n\n\t// sort points\n\tsort(0, 0, 1, ids, 0, 1)\n\n\n\t// return reordered ids with provided methods\n\t// save level offsets in output buffer\n\tvar offset = 0\n\tfor (var level = 0; level < levels.length; level++) {\n\t\tvar levelItems = levels[level]\n\t\tif (ids.set) { ids.set(levelItems, offset) }\n\t\telse {\n\t\t\tfor (var i$1 = 0, l = levelItems.length; i$1 < l; i$1++) {\n\t\t\t\tids[i$1 + offset] = levelItems[i$1]\n\t\t\t}\n\t\t}\n\t\tvar nextOffset = offset + levels[level].length\n\t\toffsets[level] = [offset, nextOffset]\n\t\toffset = nextOffset\n\t}\n\n\tids.range = range\n\n\treturn ids\n\n\n\n\t// FIXME: it is possible to create one typed array heap and reuse that to avoid memory blow\n\tfunction sort (x, y, diam, ids, level, group) {\n\t\tif (!ids.length) { return null }\n\n\t\t// save first point as level representative\n\t\tvar levelItems = levels[level] || (levels[level] = [])\n\t\tvar levelGroups = groups[level] || (groups[level] = [])\n\t\tvar sublevel = sublevels[level] || (sublevels[level] = [])\n\t\tvar offset = levelItems.length\n\n\t\tlevel++\n\n\t\t// max depth reached - put all items into a first group\n\t\t// alternatively - if group id overflow - avoid proceeding\n\t\tif (level > maxDepth || group > MAX_GROUP_ID) {\n\t\t\tfor (var i = 0; i < ids.length; i++) {\n\t\t\t\tlevelItems.push(ids[i])\n\t\t\t\tlevelGroups.push(group)\n\t\t\t\tsublevel.push(null, null, null, null)\n\t\t\t}\n\n\t\t\treturn offset\n\t\t}\n\n\t\tlevelItems.push(ids[0])\n\t\tlevelGroups.push(group)\n\n\t\tif (ids.length <= 1) {\n\t\t\tsublevel.push(null, null, null, null)\n\t\t\treturn offset\n\t\t}\n\n\n\t\tvar d2 = diam * .5\n\t\tvar cx = x + d2, cy = y + d2\n\n\t\t// distribute points by 4 buckets\n\t\tvar lolo = [], lohi = [], hilo = [], hihi = []\n\n\t\tfor (var i$1 = 1, l = ids.length; i$1 < l; i$1++) {\n\t\t\tvar idx = ids[i$1],\n\t\t\t\tx$1 = points[idx * 2],\n\t\t\t\ty$1 = points[idx * 2 + 1]\n\t\t\tx$1 < cx ? (y$1 < cy ? lolo.push(idx) : lohi.push(idx)) : (y$1 < cy ? hilo.push(idx) : hihi.push(idx))\n\t\t}\n\n\t\tgroup <<= 2\n\n\t\tsublevel.push(\n\t\t\tsort(x, y, d2, lolo, level, group),\n\t\t\tsort(x, cy, d2, lohi, level, group + 1),\n\t\t\tsort(cx, y, d2, hilo, level, group + 2),\n\t\t\tsort(cx, cy, d2, hihi, level, group + 3)\n\t\t)\n\n\t\treturn offset\n\t}\n\n\t// get all points within the passed range\n\tfunction range () {\n\t\tvar args = [], len = arguments.length;\n\t\twhile ( len-- ) args[ len ] = arguments[ len ];\n\n\t\tvar options\n\n\t\tif (isObj(args[args.length - 1])) {\n\t\t\tvar arg = args.pop()\n\n\t\t\t// detect if that was a rect object\n\t\t\tif (!args.length && (arg.x != null || arg.l != null || arg.left != null)) {\n\t\t\t\targs = [arg]\n\t\t\t\toptions = {}\n\t\t\t}\n\n\t\t\toptions = pick(arg, {\n\t\t\t\tlevel: 'level maxLevel',\n\t\t\t\td: 'd diam diameter r radius px pxSize pixel pixelSize maxD size minSize',\n\t\t\t\tlod: 'lod details ranges offsets'\n\t\t\t})\n\t\t}\n\t\telse {\n\t\t\toptions = {}\n\t\t}\n\n\t\tif (!args.length) { args = bounds }\n\n\t\tvar box = rect.apply( void 0, args )\n\n\t\tvar ref = [\n\t\t\tMath.min(box.x, box.x + box.width),\n\t\t\tMath.min(box.y, box.y + box.height),\n\t\t\tMath.max(box.x, box.x + box.width),\n\t\t\tMath.max(box.y, box.y + box.height)\n\t\t];\n\t\tvar minX = ref[0];\n\t\tvar minY = ref[1];\n\t\tvar maxX = ref[2];\n\t\tvar maxY = ref[3];\n\n\t\tvar ref$1 = normalize([minX, minY, maxX, maxY], bounds );\n\t\tvar nminX = ref$1[0];\n\t\tvar nminY = ref$1[1];\n\t\tvar nmaxX = ref$1[2];\n\t\tvar nmaxY = ref$1[3];\n\n\t\tvar maxLevel = defined(options.level, levels.length)\n\n\t\t// limit maxLevel by px size\n\t\tif (options.d != null) {\n\t\t\tvar d\n\t\t\tif (typeof options.d === 'number') { d = [options.d, options.d] }\n\t\t\telse if (options.d.length) { d = options.d }\n\n\t\t\tmaxLevel = Math.min(\n\t\t\t\tMath.max(\n\t\t\t\t\tMath.ceil(-log2(Math.abs(d[0]) / (bounds[2] - bounds[0]))),\n\t\t\t\t\tMath.ceil(-log2(Math.abs(d[1]) / (bounds[3] - bounds[1])))\n\t\t\t\t),\n\t\t\t\tmaxLevel\n\t\t\t)\n\t\t}\n\t\tmaxLevel = Math.min(maxLevel, levels.length)\n\n\t\t// return levels of details\n\t\tif (options.lod) {\n\t\t\treturn lod(nminX, nminY, nmaxX, nmaxY, maxLevel)\n\t\t}\n\n\n\n\t\t// do selection ids\n\t\tvar selection = []\n\n\t\t// FIXME: probably we can do LOD here beforehead\n\t\tselect( 0, 0, 1, 0, 0, 1)\n\n\t\tfunction select ( lox, loy, d, level, from, to ) {\n\t\t\tif (from === null || to === null) { return }\n\n\t\t\tvar hix = lox + d\n\t\t\tvar hiy = loy + d\n\n\t\t\t// if box does not intersect level - ignore\n\t\t\tif ( nminX > hix || nminY > hiy || nmaxX < lox || nmaxY < loy ) { return }\n\t\t\tif ( level >= maxLevel ) { return }\n\t\t\tif ( from === to ) { return }\n\n\t\t\t// if points fall into box range - take it\n\t\t\tvar levelItems = levels[level]\n\n\t\t\tif (to === undefined) { to = levelItems.length }\n\n\t\t\tfor (var i = from; i < to; i++) {\n\t\t\t\tvar id = levelItems[i]\n\n\t\t\t\tvar px = srcPoints[ id * 2 ]\n\t\t\t\tvar py = srcPoints[ id * 2 + 1 ]\n\n\t\t\t\tif ( px >= minX && px <= maxX && py >= minY && py <= maxY ) {selection.push(id)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// for every subsection do select\n\t\t\tvar offsets = sublevels[ level ]\n\t\t\tvar off0 = offsets[ from * 4 + 0 ]\n\t\t\tvar off1 = offsets[ from * 4 + 1 ]\n\t\t\tvar off2 = offsets[ from * 4 + 2 ]\n\t\t\tvar off3 = offsets[ from * 4 + 3 ]\n\t\t\tvar end = nextOffset(offsets, from + 1)\n\n\t\t\tvar d2 = d * .5\n\t\t\tvar nextLevel = level + 1\n\t\t\tselect( lox, loy, d2, nextLevel, off0, off1 || off2 || off3 || end)\n\t\t\tselect( lox, loy + d2, d2, nextLevel, off1, off2 || off3 || end)\n\t\t\tselect( lox + d2, loy, d2, nextLevel, off2, off3 || end)\n\t\t\tselect( lox + d2, loy + d2, d2, nextLevel, off3, end)\n\t\t}\n\n\t\tfunction nextOffset(offsets, from) {\n\t\t\tvar offset = null, i = 0\n\t\t\twhile(offset === null) {\n\t\t\t\toffset = offsets[ from * 4 + i ]\n\t\t\t\ti++\n\t\t\t\tif (i > offsets.length) { return null }\n\t\t\t}\n\t\t\treturn offset\n\t\t}\n\n\t\treturn selection\n\t}\n\n\t// get range offsets within levels to render lods appropriate for zoom level\n\t// TODO: it is possible to store minSize of a point to optimize neede level calc\n\tfunction lod (lox, loy, hix, hiy, maxLevel) {\n\t\tvar ranges = []\n\n\t\tfor (var level = 0; level < maxLevel; level++) {\n\t\t\tvar levelGroups = groups[level]\n\t\t\tvar from = offsets[level][0]\n\n\t\t\tvar levelGroupStart = group(lox, loy, level)\n\t\t\tvar levelGroupEnd = group(hix, hiy, level)\n\n\t\t\t// FIXME: utilize sublevels to speed up search range here\n\t\t\tvar startOffset = search.ge(levelGroups, levelGroupStart)\n\t\t\tvar endOffset = search.gt(levelGroups, levelGroupEnd, startOffset, levelGroups.length - 1)\n\n\t\t\tranges[level] = [startOffset + from, endOffset + from]\n\t\t}\n\n\t\treturn ranges\n\t}\n\n\t// get group id closest to the x,y coordinate, corresponding to a level\n\tfunction group (x, y, level) {\n\t\tvar group = 1\n\n\t\tvar cx = .5, cy = .5\n\t\tvar diam = .5\n\n\t\tfor (var i = 0; i < level; i++) {\n\t\t\tgroup <<= 2\n\n\t\t\tgroup += x < cx ? (y < cy ? 0 : 1) : (y < cy ? 2 : 3)\n\n\t\t\tdiam *= .5\n\n\t\t\tcx += x < cx ? -diam : diam\n\t\t\tcy += y < cy ? -diam : diam\n\t\t}\n\n\t\treturn group\n\t}\n}\n\n\n// normalize points by bounds\nfunction normalize (pts, bounds) {\n\tvar lox = bounds[0];\n\tvar loy = bounds[1];\n\tvar hix = bounds[2];\n\tvar hiy = bounds[3];\n\tvar scaleX = 1.0 / (hix - lox)\n\tvar scaleY = 1.0 / (hiy - loy)\n\tvar result = new Array(pts.length)\n\n\tfor (var i = 0, n = pts.length / 2; i < n; i++) {\n\t\tresult[2*i] = clamp((pts[2*i] - lox) * scaleX, 0, 1)\n\t\tresult[2*i+1] = clamp((pts[2*i+1] - loy) * scaleY, 0, 1)\n\t}\n\n\treturn result\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64, \n\n/***/ }),\n\n/***/ 30774:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_4952941__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nvar meta_1 = __nested_webpack_require_4952941__(60302);\n// Note: change RADIUS => earthRadius\nvar RADIUS = 6378137;\n/**\n * Takes one or more features and returns their area in square meters.\n *\n * @name area\n * @param {GeoJSON} geojson input GeoJSON feature(s)\n * @returns {number} area in square meters\n * @example\n * var polygon = turf.polygon([[[125, -15], [113, -22], [154, -27], [144, -15], [125, -15]]]);\n *\n * var area = turf.area(polygon);\n *\n * //addToMap\n * var addToMap = [polygon]\n * polygon.properties.area = area\n */\nfunction area(geojson) {\n    return meta_1.geomReduce(geojson, function (value, geom) {\n        return value + calculateArea(geom);\n    }, 0);\n}\nexports[\"default\"] = area;\n/**\n * Calculate Area\n *\n * @private\n * @param {Geometry} geom GeoJSON Geometries\n * @returns {number} area\n */\nfunction calculateArea(geom) {\n    var total = 0;\n    var i;\n    switch (geom.type) {\n        case \"Polygon\":\n            return polygonArea(geom.coordinates);\n        case \"MultiPolygon\":\n            for (i = 0; i < geom.coordinates.length; i++) {\n                total += polygonArea(geom.coordinates[i]);\n            }\n            return total;\n        case \"Point\":\n        case \"MultiPoint\":\n        case \"LineString\":\n        case \"MultiLineString\":\n            return 0;\n    }\n    return 0;\n}\nfunction polygonArea(coords) {\n    var total = 0;\n    if (coords && coords.length > 0) {\n        total += Math.abs(ringArea(coords[0]));\n        for (var i = 1; i < coords.length; i++) {\n            total -= Math.abs(ringArea(coords[i]));\n        }\n    }\n    return total;\n}\n/**\n * @private\n * Calculate the approximate area of the polygon were it projected onto the earth.\n * Note that this area will be positive if ring is oriented clockwise, otherwise it will be negative.\n *\n * Reference:\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for Polygons on a Sphere\",\n * JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007 https://trs.jpl.nasa.gov/handle/2014/40409\n *\n * @param {Array<Array<number>>} coords Ring Coordinates\n * @returns {number} The approximate signed geodesic area of the polygon in square meters.\n */\nfunction ringArea(coords) {\n    var p1;\n    var p2;\n    var p3;\n    var lowerIndex;\n    var middleIndex;\n    var upperIndex;\n    var i;\n    var total = 0;\n    var coordsLength = coords.length;\n    if (coordsLength > 2) {\n        for (i = 0; i < coordsLength; i++) {\n            if (i === coordsLength - 2) {\n                // i = N-2\n                lowerIndex = coordsLength - 2;\n                middleIndex = coordsLength - 1;\n                upperIndex = 0;\n            }\n            else if (i === coordsLength - 1) {\n                // i = N-1\n                lowerIndex = coordsLength - 1;\n                middleIndex = 0;\n                upperIndex = 1;\n            }\n            else {\n                // i = 0 to N-3\n                lowerIndex = i;\n                middleIndex = i + 1;\n                upperIndex = i + 2;\n            }\n            p1 = coords[lowerIndex];\n            p2 = coords[middleIndex];\n            p3 = coords[upperIndex];\n            total += (rad(p3[0]) - rad(p1[0])) * Math.sin(rad(p2[1]));\n        }\n        total = (total * RADIUS * RADIUS) / 2;\n    }\n    return total;\n}\nfunction rad(num) {\n    return (num * Math.PI) / 180;\n}\n\n\n/***/ }),\n\n/***/ 23132:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n\n\n/***/ }),\n\n/***/ 60302:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_4980891__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n\nvar helpers = __nested_webpack_require_4980891__(23132);\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.coordAll = coordAll;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.findSegment = findSegment;\nexports.findPoint = findPoint;\n\n\n/***/ }),\n\n/***/ 85268:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_5029503__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nvar meta_1 = __nested_webpack_require_5029503__(27138);\n/**\n * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.\n *\n * @name bbox\n * @param {GeoJSON} geojson any GeoJSON object\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);\n * var bbox = turf.bbox(line);\n * var bboxPolygon = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [line, bboxPolygon]\n */\nfunction bbox(geojson) {\n    var result = [Infinity, Infinity, -Infinity, -Infinity];\n    meta_1.coordEach(geojson, function (coord) {\n        if (result[0] > coord[0]) {\n            result[0] = coord[0];\n        }\n        if (result[1] > coord[1]) {\n            result[1] = coord[1];\n        }\n        if (result[2] < coord[0]) {\n            result[2] = coord[0];\n        }\n        if (result[3] < coord[1]) {\n            result[3] = coord[1];\n        }\n    });\n    return result;\n}\nbbox[\"default\"] = bbox;\nexports[\"default\"] = bbox;\n\n\n/***/ }),\n\n/***/ 94228:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n\n\n/***/ }),\n\n/***/ 27138:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_5055140__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n\nvar helpers = __nested_webpack_require_5055140__(94228);\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.coordAll = coordAll;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.findSegment = findSegment;\nexports.findPoint = findPoint;\n\n\n/***/ }),\n\n/***/ 29261:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_5103752__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nvar meta_1 = __nested_webpack_require_5103752__(88553);\nvar helpers_1 = __nested_webpack_require_5103752__(64182);\n/**\n * Takes one or more features and calculates the centroid using the mean of all vertices.\n * This lessens the effect of small islands and artifacts when calculating the centroid of a set of polygons.\n *\n * @name centroid\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional Parameters\n * @param {Object} [options.properties={}] an Object that is used as the {@link Feature}'s properties\n * @returns {Feature<Point>} the centroid of the input features\n * @example\n * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);\n *\n * var centroid = turf.centroid(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, centroid]\n */\nfunction centroid(geojson, options) {\n    if (options === void 0) { options = {}; }\n    var xSum = 0;\n    var ySum = 0;\n    var len = 0;\n    meta_1.coordEach(geojson, function (coord) {\n        xSum += coord[0];\n        ySum += coord[1];\n        len++;\n    });\n    return helpers_1.point([xSum / len, ySum / len], options.properties);\n}\nexports[\"default\"] = centroid;\n\n\n/***/ }),\n\n/***/ 64182:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.370,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius / 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.370,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1 / 1.0936,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, options) {\n    if (options === void 0) { options = {}; }\n    switch (type) {\n        case \"Point\": return point(coordinates).geometry;\n        case \"LineString\": return lineString(coordinates).geometry;\n        case \"Polygon\": return polygon(coordinates).geometry;\n        case \"MultiPoint\": return multiPoint(coordinates).geometry;\n        case \"MultiLineString\": return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\": return multiPolygon(coordinates).geometry;\n        default: throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return degrees * 180 / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return radians * Math.PI / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num) && !/^\\s*$/.test(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return (!!input) && (input.constructor === Object);\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n// Deprecated methods\nfunction radians2degrees() {\n    throw new Error(\"method has been renamed to `radiansToDegrees`\");\n}\nexports.radians2degrees = radians2degrees;\nfunction degrees2radians() {\n    throw new Error(\"method has been renamed to `degreesToRadians`\");\n}\nexports.degrees2radians = degrees2radians;\nfunction distanceToDegrees() {\n    throw new Error(\"method has been renamed to `lengthToDegrees`\");\n}\nexports.distanceToDegrees = distanceToDegrees;\nfunction distanceToRadians() {\n    throw new Error(\"method has been renamed to `lengthToRadians`\");\n}\nexports.distanceToRadians = distanceToRadians;\nfunction radiansToDistance() {\n    throw new Error(\"method has been renamed to `radiansToLength`\");\n}\nexports.radiansToDistance = radiansToDistance;\nfunction bearingToAngle() {\n    throw new Error(\"method has been renamed to `bearingToAzimuth`\");\n}\nexports.bearingToAngle = bearingToAngle;\nfunction convertDistance() {\n    throw new Error(\"method has been renamed to `convertLength`\");\n}\nexports.convertDistance = convertDistance;\n\n\n/***/ }),\n\n/***/ 88553:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_5130094__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n\nvar helpers = __nested_webpack_require_5130094__(64182);\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n    // Handles null Geometry -- Skips this GeoJSON\n    if (geojson === null) return;\n    var j, k, l, geometry, stopG, coords,\n        geometryMaybeCollection,\n        wrapShrink = 0,\n        coordIndex = 0,\n        isGeometryCollection,\n        type = geojson.type,\n        isFeatureCollection = type === 'FeatureCollection',\n        isFeature = type === 'Feature',\n        stop = isFeatureCollection ? geojson.features.length : 1;\n\n    // This logic may look a little weird. The reason why it is that way\n    // is because it's trying to be fast. GeoJSON supports multiple kinds\n    // of objects at its root: FeatureCollection, Features, Geometries.\n    // This function has the responsibility of handling all of them, and that\n    // means that some of the `for` loops you see below actually just don't apply\n    // to certain inputs. For instance, if you give this just a\n    // Point geometry, then both loops are short-circuited and all we do\n    // is gradually rename the input until it's called 'geometry'.\n    //\n    // This also aims to allocate as few resources as possible: just a\n    // few numbers and booleans, rather than any temporary arrays as would\n    // be required with the normalization approach.\n    for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n        geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry :\n            (isFeature ? geojson.geometry : geojson));\n        isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n        stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n        for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n            var multiFeatureIndex = 0;\n            var geometryIndex = 0;\n            geometry = isGeometryCollection ?\n                geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n\n            // Handles null Geometry -- Skips this geometry\n            if (geometry === null) continue;\n            coords = geometry.coordinates;\n            var geomType = geometry.type;\n\n            wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0;\n\n            switch (geomType) {\n            case null:\n                break;\n            case 'Point':\n                if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n                coordIndex++;\n                multiFeatureIndex++;\n                break;\n            case 'LineString':\n            case 'MultiPoint':\n                for (j = 0; j < coords.length; j++) {\n                    if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n                    coordIndex++;\n                    if (geomType === 'MultiPoint') multiFeatureIndex++;\n                }\n                if (geomType === 'LineString') multiFeatureIndex++;\n                break;\n            case 'Polygon':\n            case 'MultiLineString':\n                for (j = 0; j < coords.length; j++) {\n                    for (k = 0; k < coords[j].length - wrapShrink; k++) {\n                        if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n                        coordIndex++;\n                    }\n                    if (geomType === 'MultiLineString') multiFeatureIndex++;\n                    if (geomType === 'Polygon') geometryIndex++;\n                }\n                if (geomType === 'Polygon') multiFeatureIndex++;\n                break;\n            case 'MultiPolygon':\n                for (j = 0; j < coords.length; j++) {\n                    geometryIndex = 0;\n                    for (k = 0; k < coords[j].length; k++) {\n                        for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                            if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n                            coordIndex++;\n                        }\n                        geometryIndex++;\n                    }\n                    multiFeatureIndex++;\n                }\n                break;\n            case 'GeometryCollection':\n                for (j = 0; j < geometry.geometries.length; j++)\n                    if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n                break;\n            default:\n                throw new Error('Unknown Geometry Type');\n            }\n        }\n    }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n    var previousValue = initialValue;\n    coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n        if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n        else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n    }, excludeWrapCoord);\n    return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n    var i;\n    switch (geojson.type) {\n    case 'FeatureCollection':\n        for (i = 0; i < geojson.features.length; i++) {\n            if (callback(geojson.features[i].properties, i) === false) break;\n        }\n        break;\n    case 'Feature':\n        callback(geojson.properties, 0);\n        break;\n    }\n}\n\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n    var previousValue = initialValue;\n    propEach(geojson, function (currentProperties, featureIndex) {\n        if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n        else previousValue = callback(previousValue, currentProperties, featureIndex);\n    });\n    return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n    if (geojson.type === 'Feature') {\n        callback(geojson, 0);\n    } else if (geojson.type === 'FeatureCollection') {\n        for (var i = 0; i < geojson.features.length; i++) {\n            if (callback(geojson.features[i], i) === false) break;\n        }\n    }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n    var previousValue = initialValue;\n    featureEach(geojson, function (currentFeature, featureIndex) {\n        if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n        else previousValue = callback(previousValue, currentFeature, featureIndex);\n    });\n    return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n    var coords = [];\n    coordEach(geojson, function (coord) {\n        coords.push(coord);\n    });\n    return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n    var i, j, g, geometry, stopG,\n        geometryMaybeCollection,\n        isGeometryCollection,\n        featureProperties,\n        featureBBox,\n        featureId,\n        featureIndex = 0,\n        isFeatureCollection = geojson.type === 'FeatureCollection',\n        isFeature = geojson.type === 'Feature',\n        stop = isFeatureCollection ? geojson.features.length : 1;\n\n    // This logic may look a little weird. The reason why it is that way\n    // is because it's trying to be fast. GeoJSON supports multiple kinds\n    // of objects at its root: FeatureCollection, Features, Geometries.\n    // This function has the responsibility of handling all of them, and that\n    // means that some of the `for` loops you see below actually just don't apply\n    // to certain inputs. For instance, if you give this just a\n    // Point geometry, then both loops are short-circuited and all we do\n    // is gradually rename the input until it's called 'geometry'.\n    //\n    // This also aims to allocate as few resources as possible: just a\n    // few numbers and booleans, rather than any temporary arrays as would\n    // be required with the normalization approach.\n    for (i = 0; i < stop; i++) {\n\n        geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry :\n            (isFeature ? geojson.geometry : geojson));\n        featureProperties = (isFeatureCollection ? geojson.features[i].properties :\n            (isFeature ? geojson.properties : {}));\n        featureBBox = (isFeatureCollection ? geojson.features[i].bbox :\n            (isFeature ? geojson.bbox : undefined));\n        featureId = (isFeatureCollection ? geojson.features[i].id :\n            (isFeature ? geojson.id : undefined));\n        isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n        stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n        for (g = 0; g < stopG; g++) {\n            geometry = isGeometryCollection ?\n                geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n\n            // Handle null Geometry\n            if (geometry === null) {\n                if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n                continue;\n            }\n            switch (geometry.type) {\n            case 'Point':\n            case 'LineString':\n            case 'MultiPoint':\n            case 'Polygon':\n            case 'MultiLineString':\n            case 'MultiPolygon': {\n                if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n                break;\n            }\n            case 'GeometryCollection': {\n                for (j = 0; j < geometry.geometries.length; j++) {\n                    if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n                }\n                break;\n            }\n            default:\n                throw new Error('Unknown Geometry Type');\n            }\n        }\n        // Only increase `featureIndex` per each feature\n        featureIndex++;\n    }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n    var previousValue = initialValue;\n    geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n        if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n        else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n    });\n    return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n    geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n        // Callback for single geometry\n        var type = (geometry === null) ? null : geometry.type;\n        switch (type) {\n        case null:\n        case 'Point':\n        case 'LineString':\n        case 'Polygon':\n            if (callback(helpers.feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false;\n            return;\n        }\n\n        var geomType;\n\n        // Callback for multi-geometry\n        switch (type) {\n        case 'MultiPoint':\n            geomType = 'Point';\n            break;\n        case 'MultiLineString':\n            geomType = 'LineString';\n            break;\n        case 'MultiPolygon':\n            geomType = 'Polygon';\n            break;\n        }\n\n        for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n            var coordinate = geometry.coordinates[multiFeatureIndex];\n            var geom = {\n                type: geomType,\n                coordinates: coordinate\n            };\n            if (callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n        }\n    });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n    var previousValue = initialValue;\n    flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) {\n        if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n        else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n    });\n    return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n    flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n        var segmentIndex = 0;\n\n        // Exclude null Geometries\n        if (!feature.geometry) return;\n        // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n        var type = feature.geometry.type;\n        if (type === 'Point' || type === 'MultiPoint') return;\n\n        // Generate 2-vertex line segments\n        var previousCoords;\n        var previousFeatureIndex = 0;\n        var previousMultiIndex = 0;\n        var prevGeomIndex = 0;\n        if (coordEach(feature, function (currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n            // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n            if (previousCoords === undefined || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {\n                previousCoords = currentCoord;\n                previousFeatureIndex = featureIndex;\n                previousMultiIndex = multiPartIndexCoord;\n                prevGeomIndex = geometryIndex;\n                segmentIndex = 0;\n                return;\n            }\n            var currentSegment = helpers.lineString([previousCoords, currentCoord], feature.properties);\n            if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n            segmentIndex++;\n            previousCoords = currentCoord;\n        }) === false) return false;\n    });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentInex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n    var previousValue = initialValue;\n    var started = false;\n    segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n        if (started === false && initialValue === undefined) previousValue = currentSegment;\n        else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n        started = true;\n    });\n    return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n    // validation\n    if (!geojson) throw new Error('geojson is required');\n\n    flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n        if (feature.geometry === null) return;\n        var type = feature.geometry.type;\n        var coords = feature.geometry.coordinates;\n        switch (type) {\n        case 'LineString':\n            if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n            break;\n        case 'Polygon':\n            for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n                if (callback(helpers.lineString(coords[geometryIndex], feature.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n            }\n            break;\n        }\n    });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n    var previousValue = initialValue;\n    lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n        if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n        else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n    });\n    return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n    // Optional Parameters\n    options = options || {};\n    if (!helpers.isObject(options)) throw new Error('options is invalid');\n    var featureIndex = options.featureIndex || 0;\n    var multiFeatureIndex = options.multiFeatureIndex || 0;\n    var geometryIndex = options.geometryIndex || 0;\n    var segmentIndex = options.segmentIndex || 0;\n\n    // Find FeatureIndex\n    var properties = options.properties;\n    var geometry;\n\n    switch (geojson.type) {\n    case 'FeatureCollection':\n        if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n        properties = properties || geojson.features[featureIndex].properties;\n        geometry = geojson.features[featureIndex].geometry;\n        break;\n    case 'Feature':\n        properties = properties || geojson.properties;\n        geometry = geojson.geometry;\n        break;\n    case 'Point':\n    case 'MultiPoint':\n        return null;\n    case 'LineString':\n    case 'Polygon':\n    case 'MultiLineString':\n    case 'MultiPolygon':\n        geometry = geojson;\n        break;\n    default:\n        throw new Error('geojson is invalid');\n    }\n\n    // Find SegmentIndex\n    if (geometry === null) return null;\n    var coords = geometry.coordinates;\n    switch (geometry.type) {\n    case 'Point':\n    case 'MultiPoint':\n        return null;\n    case 'LineString':\n        if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n        return helpers.lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options);\n    case 'Polygon':\n        if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n        if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n        return helpers.lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options);\n    case 'MultiLineString':\n        if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n        if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n        return helpers.lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options);\n    case 'MultiPolygon':\n        if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n        if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n        if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n        return helpers.lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options);\n    }\n    throw new Error('geojson is invalid');\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n    // Optional Parameters\n    options = options || {};\n    if (!helpers.isObject(options)) throw new Error('options is invalid');\n    var featureIndex = options.featureIndex || 0;\n    var multiFeatureIndex = options.multiFeatureIndex || 0;\n    var geometryIndex = options.geometryIndex || 0;\n    var coordIndex = options.coordIndex || 0;\n\n    // Find FeatureIndex\n    var properties = options.properties;\n    var geometry;\n\n    switch (geojson.type) {\n    case 'FeatureCollection':\n        if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n        properties = properties || geojson.features[featureIndex].properties;\n        geometry = geojson.features[featureIndex].geometry;\n        break;\n    case 'Feature':\n        properties = properties || geojson.properties;\n        geometry = geojson.geometry;\n        break;\n    case 'Point':\n    case 'MultiPoint':\n        return null;\n    case 'LineString':\n    case 'Polygon':\n    case 'MultiLineString':\n    case 'MultiPolygon':\n        geometry = geojson;\n        break;\n    default:\n        throw new Error('geojson is invalid');\n    }\n\n    // Find Coord Index\n    if (geometry === null) return null;\n    var coords = geometry.coordinates;\n    switch (geometry.type) {\n    case 'Point':\n        return helpers.point(coords, properties, options);\n    case 'MultiPoint':\n        if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n        return helpers.point(coords[multiFeatureIndex], properties, options);\n    case 'LineString':\n        if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n        return helpers.point(coords[coordIndex], properties, options);\n    case 'Polygon':\n        if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n        if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n        return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case 'MultiLineString':\n        if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n        if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n        return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case 'MultiPolygon':\n        if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n        if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n        if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n        return helpers.point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n    }\n    throw new Error('geojson is invalid');\n}\n\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.coordAll = coordAll;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.findSegment = findSegment;\nexports.findPoint = findPoint;\n\n\n/***/ }),\n\n/***/ 65185:\n/***/ (function(module) {\n\n\nmodule.exports = absolutize\n\n/**\n * redefine `path` with absolute coordinates\n *\n * @param {Array} path\n * @return {Array}\n */\n\nfunction absolutize(path){\n\tvar startX = 0\n\tvar startY = 0\n\tvar x = 0\n\tvar y = 0\n\n\treturn path.map(function(seg){\n\t\tseg = seg.slice()\n\t\tvar type = seg[0]\n\t\tvar command = type.toUpperCase()\n\n\t\t// is relative\n\t\tif (type != command) {\n\t\t\tseg[0] = command\n\t\t\tswitch (type) {\n\t\t\t\tcase 'a':\n\t\t\t\t\tseg[6] += x\n\t\t\t\t\tseg[7] += y\n\t\t\t\t\tbreak\n\t\t\t\tcase 'v':\n\t\t\t\t\tseg[1] += y\n\t\t\t\t\tbreak\n\t\t\t\tcase 'h':\n\t\t\t\t\tseg[1] += x\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tfor (var i = 1; i < seg.length;) {\n\t\t\t\t\t\tseg[i++] += x\n\t\t\t\t\t\tseg[i++] += y\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// update cursor state\n\t\tswitch (command) {\n\t\t\tcase 'Z':\n\t\t\t\tx = startX\n\t\t\t\ty = startY\n\t\t\t\tbreak\n\t\t\tcase 'H':\n\t\t\t\tx = seg[1]\n\t\t\t\tbreak\n\t\t\tcase 'V':\n\t\t\t\ty = seg[1]\n\t\t\t\tbreak\n\t\t\tcase 'M':\n\t\t\t\tx = startX = seg[1]\n\t\t\t\ty = startY = seg[2]\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tx = seg[seg.length - 2]\n\t\t\t\ty = seg[seg.length - 1]\n\t\t}\n\n\t\treturn seg\n\t})\n}\n\n\n/***/ }),\n\n/***/ 21527:\n/***/ (function(module) {\n\n\"use strict\";\n\r\n\r\nmodule.exports = normalize;\r\n\r\nfunction normalize (arr, dim) {\r\n\tif (!arr || arr.length == null) throw Error('Argument should be an array')\r\n\r\n\tif (dim == null) dim = 1\r\n\telse dim = Math.floor(dim)\r\n\r\n\tvar bounds = Array(dim * 2)\r\n\r\n\tfor (var offset = 0; offset < dim; offset++) {\r\n\t\tvar max = -Infinity, min = Infinity, i = offset, l = arr.length;\r\n\r\n\t\tfor (; i < l; i+=dim) {\r\n\t\t\tif (arr[i] > max) max = arr[i];\r\n\t\t\tif (arr[i] < min) min = arr[i];\r\n\t\t}\r\n\r\n\t\tbounds[offset] = min\r\n\t\tbounds[dim + offset] = max\r\n\t}\r\n\r\n\treturn bounds;\r\n}\r\n\n\n/***/ }),\n\n/***/ 24696:\n/***/ (function(module) {\n\n\n/**\n * Array#filter.\n *\n * @param {Array} arr\n * @param {Function} fn\n * @param {Object=} self\n * @return {Array}\n * @throw TypeError\n */\n\nmodule.exports = function (arr, fn, self) {\n  if (arr.filter) return arr.filter(fn, self);\n  if (void 0 === arr || null === arr) throw new TypeError;\n  if ('function' != typeof fn) throw new TypeError;\n  var ret = [];\n  for (var i = 0; i < arr.length; i++) {\n    if (!hasOwn.call(arr, i)) continue;\n    var val = arr[i];\n    if (fn.call(self, val, i, arr)) ret.push(val);\n  }\n  return ret;\n};\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n\n\n/***/ }),\n\n/***/ 6851:\n/***/ (function(module) {\n\n\"use strict\";\n\nmodule.exports = function (arr, predicate, ctx) {\n\tif (typeof Array.prototype.findIndex === 'function') {\n\t\treturn arr.findIndex(predicate, ctx);\n\t}\n\n\tif (typeof predicate !== 'function') {\n\t\tthrow new TypeError('predicate must be a function');\n\t}\n\n\tvar list = Object(arr);\n\tvar len = list.length;\n\n\tif (len === 0) {\n\t\treturn -1;\n\t}\n\n\tfor (var i = 0; i < len; i++) {\n\t\tif (predicate.call(ctx, list[i], i, list)) {\n\t\t\treturn i;\n\t\t}\n\t}\n\n\treturn -1;\n};\n\n\n/***/ }),\n\n/***/ 54:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5180025__) {\n\n\"use strict\";\n\r\n\r\nvar getBounds = __nested_webpack_require_5180025__(21527)\r\n\r\nmodule.exports = normalize;\r\n\r\nfunction normalize (arr, dim, bounds) {\r\n\tif (!arr || arr.length == null) throw Error('Argument should be an array')\r\n\r\n\tif (dim == null) dim = 1\r\n\tif (bounds == null) bounds = getBounds(arr, dim)\r\n\r\n\tfor (var offset = 0; offset < dim; offset++) {\r\n\t\tvar max = bounds[dim + offset], min = bounds[offset], i = offset, l = arr.length;\r\n\r\n\t\tif (max === Infinity && min === -Infinity) {\r\n\t\t\tfor (i = offset; i < l; i+=dim) {\r\n\t\t\t\tarr[i] = arr[i] === max ? 1 : arr[i] === min ? 0 : .5\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (max === Infinity) {\r\n\t\t\tfor (i = offset; i < l; i+=dim) {\r\n\t\t\t\tarr[i] = arr[i] === max ? 1 : 0\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (min === -Infinity) {\r\n\t\t\tfor (i = offset; i < l; i+=dim) {\r\n\t\t\t\tarr[i] = arr[i] === min ? 0 : 1\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvar range = max - min\r\n\t\t\tfor (i = offset; i < l; i+=dim) {\r\n\t\t\t\tif (!isNaN(arr[i])) {\r\n\t\t\t\t\tarr[i] = range === 0 ? .5 : (arr[i] - min) / range\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn arr;\r\n}\r\n\n\n/***/ }),\n\n/***/ 57471:\n/***/ (function(module) {\n\n\nmodule.exports = function newArray(start, end) {\n    var n0 = typeof start === 'number',\n        n1 = typeof end === 'number'\n\n    if (n0 && !n1) {\n        end = start\n        start = 0\n    } else if (!n0 && !n1) {\n        start = 0\n        end = 0\n    }\n\n    start = start|0\n    end = end|0\n    var len = end-start\n    if (len<0)\n        throw new Error('array length must be positive')\n    \n    var a = new Array(len)\n    for (var i=0, c=start; i<len; i++, c++)\n        a[i] = c\n    return a\n}\n\n/***/ }),\n\n/***/ 32791:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5181697__) {\n\n\"use strict\";\n/* provided dependency */ var process = __nested_webpack_require_5181697__(90386);\n// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __nested_webpack_require_5181697__(79616),\n    _require$codes = _require.codes,\n    ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n    ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n    ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n    ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n    ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\n\nvar AssertionError = __nested_webpack_require_5181697__(73894);\n\nvar _require2 = __nested_webpack_require_5181697__(43827),\n    inspect = _require2.inspect;\n\nvar _require$types = (__nested_webpack_require_5181697__(43827).types),\n    isPromise = _require$types.isPromise,\n    isRegExp = _require$types.isRegExp;\n\nvar objectAssign = Object.assign ? Object.assign : (__nested_webpack_require_5181697__(73523).assign);\nvar objectIs = Object.is ? Object.is : __nested_webpack_require_5181697__(64003);\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\n\nfunction lazyLoadComparison() {\n  var comparison = __nested_webpack_require_5181697__(74061);\n\n  isDeepEqual = comparison.isDeepEqual;\n  isDeepStrictEqual = comparison.isDeepStrictEqual;\n} // Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\n\n\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = (/* unused pure expression or super */ null && (0));\n\nvar escapeFn = function escapeFn(str) {\n  return meta[str.charCodeAt(0)];\n};\n\nvar warned = false; // The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {}; // All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n  if (obj.message instanceof Error) throw obj.message;\n  throw new AssertionError(obj);\n}\n\nfunction fail(actual, expected, message, operator, stackStartFn) {\n  var argsLen = arguments.length;\n  var internalMessage;\n\n  if (argsLen === 0) {\n    internalMessage = 'Failed';\n  } else if (argsLen === 1) {\n    message = actual;\n    actual = undefined;\n  } else {\n    if (warned === false) {\n      warned = true;\n      var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n      warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n    }\n\n    if (argsLen === 2) operator = '!=';\n  }\n\n  if (message instanceof Error) throw message;\n  var errArgs = {\n    actual: actual,\n    expected: expected,\n    operator: operator === undefined ? 'fail' : operator,\n    stackStartFn: stackStartFn || fail\n  };\n\n  if (message !== undefined) {\n    errArgs.message = message;\n  }\n\n  var err = new AssertionError(errArgs);\n\n  if (internalMessage) {\n    err.message = internalMessage;\n    err.generatedMessage = true;\n  }\n\n  throw err;\n}\n\nassert.fail = fail; // The AssertionError is defined in internal/error.\n\nassert.AssertionError = AssertionError;\n\nfunction innerOk(fn, argLen, value, message) {\n  if (!value) {\n    var generatedMessage = false;\n\n    if (argLen === 0) {\n      generatedMessage = true;\n      message = 'No value argument passed to `assert.ok()`';\n    } else if (message instanceof Error) {\n      throw message;\n    }\n\n    var err = new AssertionError({\n      actual: value,\n      expected: true,\n      message: message,\n      operator: '==',\n      stackStartFn: fn\n    });\n    err.generatedMessage = generatedMessage;\n    throw err;\n  }\n} // Pure assertion tests whether a value is truthy, as determined\n// by !!value.\n\n\nfunction ok() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  innerOk.apply(void 0, [ok, args.length].concat(args));\n}\n\nassert.ok = ok; // The equality assertion tests shallow, coercive equality with ==.\n\n/* eslint-disable no-restricted-properties */\n\nassert.equal = function equal(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  } // eslint-disable-next-line eqeqeq\n\n\n  if (actual != expected) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: '==',\n      stackStartFn: equal\n    });\n  }\n}; // The non-equality assertion tests for whether two objects are not\n// equal with !=.\n\n\nassert.notEqual = function notEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  } // eslint-disable-next-line eqeqeq\n\n\n  if (actual == expected) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: '!=',\n      stackStartFn: notEqual\n    });\n  }\n}; // The equivalence assertion tests a deep equality relation.\n\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n\n  if (isDeepEqual === undefined) lazyLoadComparison();\n\n  if (!isDeepEqual(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'deepEqual',\n      stackStartFn: deepEqual\n    });\n  }\n}; // The non-equivalence assertion tests for any deep inequality.\n\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n\n  if (isDeepEqual === undefined) lazyLoadComparison();\n\n  if (isDeepEqual(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'notDeepEqual',\n      stackStartFn: notDeepEqual\n    });\n  }\n};\n/* eslint-enable */\n\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n\n  if (isDeepEqual === undefined) lazyLoadComparison();\n\n  if (!isDeepStrictEqual(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'deepStrictEqual',\n      stackStartFn: deepStrictEqual\n    });\n  }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\n\nfunction notDeepStrictEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n\n  if (isDeepEqual === undefined) lazyLoadComparison();\n\n  if (isDeepStrictEqual(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'notDeepStrictEqual',\n      stackStartFn: notDeepStrictEqual\n    });\n  }\n}\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n\n  if (!objectIs(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'strictEqual',\n      stackStartFn: strictEqual\n    });\n  }\n};\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n\n  if (objectIs(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'notStrictEqual',\n      stackStartFn: notStrictEqual\n    });\n  }\n};\n\nvar Comparison = function Comparison(obj, keys, actual) {\n  var _this = this;\n\n  _classCallCheck(this, Comparison);\n\n  keys.forEach(function (key) {\n    if (key in obj) {\n      if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && obj[key].test(actual[key])) {\n        _this[key] = actual[key];\n      } else {\n        _this[key] = obj[key];\n      }\n    }\n  });\n};\n\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n  if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n    if (!message) {\n      // Create placeholder objects to create a nice output.\n      var a = new Comparison(actual, keys);\n      var b = new Comparison(expected, keys, actual);\n      var err = new AssertionError({\n        actual: a,\n        expected: b,\n        operator: 'deepStrictEqual',\n        stackStartFn: fn\n      });\n      err.actual = actual;\n      err.expected = expected;\n      err.operator = fn.name;\n      throw err;\n    }\n\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: fn.name,\n      stackStartFn: fn\n    });\n  }\n}\n\nfunction expectedException(actual, expected, msg, fn) {\n  if (typeof expected !== 'function') {\n    if (isRegExp(expected)) return expected.test(actual); // assert.doesNotThrow does not accept objects.\n\n    if (arguments.length === 2) {\n      throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n    } // Handle primitives properly.\n\n\n    if (_typeof(actual) !== 'object' || actual === null) {\n      var err = new AssertionError({\n        actual: actual,\n        expected: expected,\n        message: msg,\n        operator: 'deepStrictEqual',\n        stackStartFn: fn\n      });\n      err.operator = fn.name;\n      throw err;\n    }\n\n    var keys = Object.keys(expected); // Special handle errors to make sure the name and the message are compared\n    // as well.\n\n    if (expected instanceof Error) {\n      keys.push('name', 'message');\n    } else if (keys.length === 0) {\n      throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n    }\n\n    if (isDeepEqual === undefined) lazyLoadComparison();\n    keys.forEach(function (key) {\n      if (typeof actual[key] === 'string' && isRegExp(expected[key]) && expected[key].test(actual[key])) {\n        return;\n      }\n\n      compareExceptionKey(actual, expected, key, msg, keys, fn);\n    });\n    return true;\n  } // Guard instanceof against arrow functions as they don't have a prototype.\n\n\n  if (expected.prototype !== undefined && actual instanceof expected) {\n    return true;\n  }\n\n  if (Error.isPrototypeOf(expected)) {\n    return false;\n  }\n\n  return expected.call({}, actual) === true;\n}\n\nfunction getActual(fn) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n  }\n\n  try {\n    fn();\n  } catch (e) {\n    return e;\n  }\n\n  return NO_EXCEPTION_SENTINEL;\n}\n\nfunction checkIsPromise(obj) {\n  // Accept native ES6 promises and promises that are implemented in a similar\n  // way. Do not accept thenables that use a function as `obj` and that have no\n  // `catch` handler.\n  // TODO: thenables are checked up until they have the correct methods,\n  // but according to documentation, the `then` method should receive\n  // the `fulfill` and `reject` arguments as well or it may be never resolved.\n  return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\n\nfunction waitForActual(promiseFn) {\n  return Promise.resolve().then(function () {\n    var resultPromise;\n\n    if (typeof promiseFn === 'function') {\n      // Return a rejected promise if `promiseFn` throws synchronously.\n      resultPromise = promiseFn(); // Fail in case no promise is returned.\n\n      if (!checkIsPromise(resultPromise)) {\n        throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n      }\n    } else if (checkIsPromise(promiseFn)) {\n      resultPromise = promiseFn;\n    } else {\n      throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n    }\n\n    return Promise.resolve().then(function () {\n      return resultPromise;\n    }).then(function () {\n      return NO_EXCEPTION_SENTINEL;\n    }).catch(function (e) {\n      return e;\n    });\n  });\n}\n\nfunction expectsError(stackStartFn, actual, error, message) {\n  if (typeof error === 'string') {\n    if (arguments.length === 4) {\n      throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n    }\n\n    if (_typeof(actual) === 'object' && actual !== null) {\n      if (actual.message === error) {\n        throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n      }\n    } else if (actual === error) {\n      throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n    }\n\n    message = error;\n    error = undefined;\n  } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n  }\n\n  if (actual === NO_EXCEPTION_SENTINEL) {\n    var details = '';\n\n    if (error && error.name) {\n      details += \" (\".concat(error.name, \")\");\n    }\n\n    details += message ? \": \".concat(message) : '.';\n    var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n    innerFail({\n      actual: undefined,\n      expected: error,\n      operator: stackStartFn.name,\n      message: \"Missing expected \".concat(fnType).concat(details),\n      stackStartFn: stackStartFn\n    });\n  }\n\n  if (error && !expectedException(actual, error, message, stackStartFn)) {\n    throw actual;\n  }\n}\n\nfunction expectsNoError(stackStartFn, actual, error, message) {\n  if (actual === NO_EXCEPTION_SENTINEL) return;\n\n  if (typeof error === 'string') {\n    message = error;\n    error = undefined;\n  }\n\n  if (!error || expectedException(actual, error)) {\n    var details = message ? \": \".concat(message) : '.';\n    var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n    innerFail({\n      actual: actual,\n      expected: error,\n      operator: stackStartFn.name,\n      message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n      stackStartFn: stackStartFn\n    });\n  }\n\n  throw actual;\n}\n\nassert.throws = function throws(promiseFn) {\n  for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n    args[_key2 - 1] = arguments[_key2];\n  }\n\n  expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\n\nassert.rejects = function rejects(promiseFn) {\n  for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n    args[_key3 - 1] = arguments[_key3];\n  }\n\n  return waitForActual(promiseFn).then(function (result) {\n    return expectsError.apply(void 0, [rejects, result].concat(args));\n  });\n};\n\nassert.doesNotThrow = function doesNotThrow(fn) {\n  for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n    args[_key4 - 1] = arguments[_key4];\n  }\n\n  expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\n\nassert.doesNotReject = function doesNotReject(fn) {\n  for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n    args[_key5 - 1] = arguments[_key5];\n  }\n\n  return waitForActual(fn).then(function (result) {\n    return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n  });\n};\n\nassert.ifError = function ifError(err) {\n  if (err !== null && err !== undefined) {\n    var message = 'ifError got unwanted exception: ';\n\n    if (_typeof(err) === 'object' && typeof err.message === 'string') {\n      if (err.message.length === 0 && err.constructor) {\n        message += err.constructor.name;\n      } else {\n        message += err.message;\n      }\n    } else {\n      message += inspect(err);\n    }\n\n    var newErr = new AssertionError({\n      actual: err,\n      expected: null,\n      operator: 'ifError',\n      message: message,\n      stackStartFn: ifError\n    }); // Make sure we actually have a stack trace!\n\n    var origStack = err.stack;\n\n    if (typeof origStack === 'string') {\n      // This will remove any duplicated frames from the error frames taken\n      // from within `ifError` and add the original error frames to the newly\n      // created ones.\n      var tmp2 = origStack.split('\\n');\n      tmp2.shift(); // Filter all frames existing in err.stack.\n\n      var tmp1 = newErr.stack.split('\\n');\n\n      for (var i = 0; i < tmp2.length; i++) {\n        // Find the first occurrence of the frame.\n        var pos = tmp1.indexOf(tmp2[i]);\n\n        if (pos !== -1) {\n          // Only keep new frames.\n          tmp1 = tmp1.slice(0, pos);\n          break;\n        }\n      }\n\n      newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n    }\n\n    throw newErr;\n  }\n}; // Expose a strict only variant of assert\n\n\nfunction strict() {\n  for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n    args[_key6] = arguments[_key6];\n  }\n\n  innerOk.apply(void 0, [strict, args.length].concat(args));\n}\n\nassert.strict = objectAssign(strict, assert, {\n  equal: assert.strictEqual,\n  deepEqual: assert.deepStrictEqual,\n  notEqual: assert.notStrictEqual,\n  notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;\n\n/***/ }),\n\n/***/ 73894:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5201412__) {\n\n\"use strict\";\n/* provided dependency */ var process = __nested_webpack_require_5201412__(90386);\n// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar _require = __nested_webpack_require_5201412__(43827),\n    inspect = _require.inspect;\n\nvar _require2 = __nested_webpack_require_5201412__(79616),\n    ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\n\n\nfunction repeat(str, count) {\n  count = Math.floor(count);\n  if (str.length == 0 || count == 0) return '';\n  var maxCount = str.length * count;\n  count = Math.floor(Math.log(count) / Math.log(2));\n\n  while (count) {\n    str += str;\n    count--;\n  }\n\n  str += str.substring(0, maxCount - str.length);\n  return str;\n}\n\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n  deepStrictEqual: 'Expected values to be strictly deep-equal:',\n  strictEqual: 'Expected values to be strictly equal:',\n  strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n  deepEqual: 'Expected values to be loosely deep-equal:',\n  equal: 'Expected values to be loosely equal:',\n  notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n  notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n  notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n  notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n  notEqual: 'Expected \"actual\" to be loosely unequal to:',\n  notIdentical: 'Values identical but not reference-equal:'\n}; // Comparing short primitives should just show === / !== instead of using the\n// diff.\n\nvar kMaxShortLength = 10;\n\nfunction copyError(source) {\n  var keys = Object.keys(source);\n  var target = Object.create(Object.getPrototypeOf(source));\n  keys.forEach(function (key) {\n    target[key] = source[key];\n  });\n  Object.defineProperty(target, 'message', {\n    value: source.message\n  });\n  return target;\n}\n\nfunction inspectValue(val) {\n  // The util.inspect default values could be changed. This makes sure the\n  // error messages contain the necessary information nevertheless.\n  return inspect(val, {\n    compact: false,\n    customInspect: false,\n    depth: 1000,\n    maxArrayLength: Infinity,\n    // Assert compares only enumerable properties (with a few exceptions).\n    showHidden: false,\n    // Having a long line as error is better than wrapping the line for\n    // comparison for now.\n    // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n    // have meta information about the inspected properties (i.e., know where\n    // in what line the property starts and ends).\n    breakLength: Infinity,\n    // Assert does not detect proxies currently.\n    showProxy: false,\n    sorted: true,\n    // Inspect getters as we also check them when comparing entries.\n    getters: true\n  });\n}\n\nfunction createErrDiff(actual, expected, operator) {\n  var other = '';\n  var res = '';\n  var lastPos = 0;\n  var end = '';\n  var skipped = false;\n  var actualInspected = inspectValue(actual);\n  var actualLines = actualInspected.split('\\n');\n  var expectedLines = inspectValue(expected).split('\\n');\n  var i = 0;\n  var indicator = ''; // In case both values are objects explicitly mark them as not reference equal\n  // for the `strictEqual` operator.\n\n  if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n    operator = 'strictEqualObject';\n  } // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n  // equal, check further special handling.\n\n\n  if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n    var inputLength = actualLines[0].length + expectedLines[0].length; // If the character length of \"actual\" and \"expected\" together is less than\n    // kMaxShortLength and if neither is an object and at least one of them is\n    // not `zero`, use the strict equal comparison to visualize the output.\n\n    if (inputLength <= kMaxShortLength) {\n      if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n        // -0 === +0\n        return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n      }\n    } else if (operator !== 'strictEqualObject') {\n      // If the stderr is a tty and the input length is lower than the current\n      // columns per line, add a mismatch indicator below the output. If it is\n      // not a tty, use a default value of 80 characters.\n      var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n\n      if (inputLength < maxLength) {\n        while (actualLines[0][i] === expectedLines[0][i]) {\n          i++;\n        } // Ignore the first characters.\n\n\n        if (i > 2) {\n          // Add position indicator for the first mismatch in case it is a\n          // single line and the input length is less than the column length.\n          indicator = \"\\n  \".concat(repeat(' ', i), \"^\");\n          i = 0;\n        }\n      }\n    }\n  } // Remove all ending lines that match (this optimizes the output for\n  // readability by reducing the number of total changed lines).\n\n\n  var a = actualLines[actualLines.length - 1];\n  var b = expectedLines[expectedLines.length - 1];\n\n  while (a === b) {\n    if (i++ < 2) {\n      end = \"\\n  \".concat(a).concat(end);\n    } else {\n      other = a;\n    }\n\n    actualLines.pop();\n    expectedLines.pop();\n    if (actualLines.length === 0 || expectedLines.length === 0) break;\n    a = actualLines[actualLines.length - 1];\n    b = expectedLines[expectedLines.length - 1];\n  }\n\n  var maxLines = Math.max(actualLines.length, expectedLines.length); // Strict equal with identical objects that are not identical by reference.\n  // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n\n  if (maxLines === 0) {\n    // We have to get the result again. The lines were all removed before.\n    var _actualLines = actualInspected.split('\\n'); // Only remove lines in case it makes sense to collapse those.\n    // TODO: Accept env to always show the full error.\n\n\n    if (_actualLines.length > 30) {\n      _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n\n      while (_actualLines.length > 27) {\n        _actualLines.pop();\n      }\n    }\n\n    return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n  }\n\n  if (i > 3) {\n    end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n    skipped = true;\n  }\n\n  if (other !== '') {\n    end = \"\\n  \".concat(other).concat(end);\n    other = '';\n  }\n\n  var printedLines = 0;\n  var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n  var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n\n  for (i = 0; i < maxLines; i++) {\n    // Only extra expected lines exist\n    var cur = i - lastPos;\n\n    if (actualLines.length < i + 1) {\n      // If the last diverging line is more than one line above and the\n      // current line is at least line three, add some of the former lines and\n      // also add dots to indicate skipped entries.\n      if (cur > 1 && i > 2) {\n        if (cur > 4) {\n          res += \"\\n\".concat(blue, \"...\").concat(white);\n          skipped = true;\n        } else if (cur > 3) {\n          res += \"\\n  \".concat(expectedLines[i - 2]);\n          printedLines++;\n        }\n\n        res += \"\\n  \".concat(expectedLines[i - 1]);\n        printedLines++;\n      } // Mark the current line as the last diverging one.\n\n\n      lastPos = i; // Add the expected line to the cache.\n\n      other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n      printedLines++; // Only extra actual lines exist\n    } else if (expectedLines.length < i + 1) {\n      // If the last diverging line is more than one line above and the\n      // current line is at least line three, add some of the former lines and\n      // also add dots to indicate skipped entries.\n      if (cur > 1 && i > 2) {\n        if (cur > 4) {\n          res += \"\\n\".concat(blue, \"...\").concat(white);\n          skipped = true;\n        } else if (cur > 3) {\n          res += \"\\n  \".concat(actualLines[i - 2]);\n          printedLines++;\n        }\n\n        res += \"\\n  \".concat(actualLines[i - 1]);\n        printedLines++;\n      } // Mark the current line as the last diverging one.\n\n\n      lastPos = i; // Add the actual line to the result.\n\n      res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n      printedLines++; // Lines diverge\n    } else {\n      var expectedLine = expectedLines[i];\n      var actualLine = actualLines[i]; // If the lines diverge, specifically check for lines that only diverge by\n      // a trailing comma. In that case it is actually identical and we should\n      // mark it as such.\n\n      var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine); // If the expected line has a trailing comma but is otherwise identical,\n      // add a comma at the end of the actual line. Otherwise the output could\n      // look weird as in:\n      //\n      //   [\n      //     1         // No comma at the end!\n      // +   2\n      //   ]\n      //\n\n      if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n        divergingLines = false;\n        actualLine += ',';\n      }\n\n      if (divergingLines) {\n        // If the last diverging line is more than one line above and the\n        // current line is at least line three, add some of the former lines and\n        // also add dots to indicate skipped entries.\n        if (cur > 1 && i > 2) {\n          if (cur > 4) {\n            res += \"\\n\".concat(blue, \"...\").concat(white);\n            skipped = true;\n          } else if (cur > 3) {\n            res += \"\\n  \".concat(actualLines[i - 2]);\n            printedLines++;\n          }\n\n          res += \"\\n  \".concat(actualLines[i - 1]);\n          printedLines++;\n        } // Mark the current line as the last diverging one.\n\n\n        lastPos = i; // Add the actual line to the result and cache the expected diverging\n        // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n\n        res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n        other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n        printedLines += 2; // Lines are identical\n      } else {\n        // Add all cached information to the result before adding other things\n        // and reset the cache.\n        res += other;\n        other = ''; // If the last diverging line is exactly one line above or if it is the\n        // very first line, add the line to the result.\n\n        if (cur === 1 || i === 0) {\n          res += \"\\n  \".concat(actualLine);\n          printedLines++;\n        }\n      }\n    } // Inspected object to big (Show ~20 rows max)\n\n\n    if (printedLines > 20 && i < maxLines - 2) {\n      return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n    }\n  }\n\n  return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\n\nvar AssertionError =\n/*#__PURE__*/\nfunction (_Error) {\n  _inherits(AssertionError, _Error);\n\n  function AssertionError(options) {\n    var _this;\n\n    _classCallCheck(this, AssertionError);\n\n    if (_typeof(options) !== 'object' || options === null) {\n      throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n    }\n\n    var message = options.message,\n        operator = options.operator,\n        stackStartFn = options.stackStartFn;\n    var actual = options.actual,\n        expected = options.expected;\n    var limit = Error.stackTraceLimit;\n    Error.stackTraceLimit = 0;\n\n    if (message != null) {\n      _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, String(message)));\n    } else {\n      if (process.stderr && process.stderr.isTTY) {\n        // Reset on each call to make sure we handle dynamically set environment\n        // variables correct.\n        if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n          blue = \"\\x1B[34m\";\n          green = \"\\x1B[32m\";\n          white = \"\\x1B[39m\";\n          red = \"\\x1B[31m\";\n        } else {\n          blue = '';\n          green = '';\n          white = '';\n          red = '';\n        }\n      } // Prevent the error stack from being visible by duplicating the error\n      // in a very close way to the original in case both sides are actually\n      // instances of Error.\n\n\n      if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n        actual = copyError(actual);\n        expected = copyError(expected);\n      }\n\n      if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n        _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, createErrDiff(actual, expected, operator)));\n      } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n        // In case the objects are equal but the operator requires unequal, show\n        // the first object and say A equals B\n        var base = kReadableOperator[operator];\n        var res = inspectValue(actual).split('\\n'); // In case \"actual\" is an object, it should not be reference equal.\n\n        if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n          base = kReadableOperator.notStrictEqualObject;\n        } // Only remove lines in case it makes sense to collapse those.\n        // TODO: Accept env to always show the full error.\n\n\n        if (res.length > 30) {\n          res[26] = \"\".concat(blue, \"...\").concat(white);\n\n          while (res.length > 27) {\n            res.pop();\n          }\n        } // Only print a single input.\n\n\n        if (res.length === 1) {\n          _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \" \").concat(res[0])));\n        } else {\n          _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\")));\n        }\n      } else {\n        var _res = inspectValue(actual);\n\n        var other = '';\n        var knownOperators = kReadableOperator[operator];\n\n        if (operator === 'notDeepEqual' || operator === 'notEqual') {\n          _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n\n          if (_res.length > 1024) {\n            _res = \"\".concat(_res.slice(0, 1021), \"...\");\n          }\n        } else {\n          other = \"\".concat(inspectValue(expected));\n\n          if (_res.length > 512) {\n            _res = \"\".concat(_res.slice(0, 509), \"...\");\n          }\n\n          if (other.length > 512) {\n            other = \"\".concat(other.slice(0, 509), \"...\");\n          }\n\n          if (operator === 'deepEqual' || operator === 'equal') {\n            _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n          } else {\n            other = \" \".concat(operator, \" \").concat(other);\n          }\n        }\n\n        _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(_res).concat(other)));\n      }\n    }\n\n    Error.stackTraceLimit = limit;\n    _this.generatedMessage = !message;\n    Object.defineProperty(_assertThisInitialized(_this), 'name', {\n      value: 'AssertionError [ERR_ASSERTION]',\n      enumerable: false,\n      writable: true,\n      configurable: true\n    });\n    _this.code = 'ERR_ASSERTION';\n    _this.actual = actual;\n    _this.expected = expected;\n    _this.operator = operator;\n\n    if (Error.captureStackTrace) {\n      // eslint-disable-next-line no-restricted-syntax\n      Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n    } // Create error message including the error code in the name.\n\n\n    _this.stack; // Reset the name.\n\n    _this.name = 'AssertionError';\n    return _possibleConstructorReturn(_this);\n  }\n\n  _createClass(AssertionError, [{\n    key: \"toString\",\n    value: function toString() {\n      return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n    }\n  }, {\n    key: inspect.custom,\n    value: function value(recurseTimes, ctx) {\n      // This limits the `actual` and `expected` property default inspection to\n      // the minimum depth. Otherwise those values would be too verbose compared\n      // to the actual error message which contains a combined view of these two\n      // input values.\n      return inspect(this, _objectSpread({}, ctx, {\n        customInspect: false,\n        depth: 0\n      }));\n    }\n  }]);\n\n  return AssertionError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = AssertionError;\n\n/***/ }),\n\n/***/ 79616:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5223503__) {\n\n\"use strict\";\n// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n\n/* eslint node-core/alphabetize-errors: \"error\" */\n\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n // The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar codes = {}; // Lazy loaded\n\nvar assert;\nvar util;\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inherits(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      var _this;\n\n      _classCallCheck(this, NodeError);\n\n      _this = _possibleConstructorReturn(this, _getPrototypeOf(NodeError).call(this, getMessage(arg1, arg2, arg3)));\n      _this.code = code;\n      return _this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  if (assert === undefined) assert = __nested_webpack_require_5223503__(32791);\n  assert(typeof name === 'string', \"'name' must be a string\"); // determiner: 'must be' or 'must not be'\n\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } // TODO(BridgeAR): Improve the output by showing `null` and similar.\n\n\n  msg += \". Received type \".concat(_typeof(actual));\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n  var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n  if (util === undefined) util = __nested_webpack_require_5223503__(43827);\n  var inspected = util.inspect(value);\n\n  if (inspected.length > 128) {\n    inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n  }\n\n  return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n  var type;\n\n  if (value && value.constructor && value.constructor.name) {\n    type = \"instance of \".concat(value.constructor.name);\n  } else {\n    type = \"type \".concat(_typeof(value));\n  }\n\n  return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  if (assert === undefined) assert = __nested_webpack_require_5223503__(32791);\n  assert(args.length > 0, 'At least one arg needs to be specified');\n  var msg = 'The ';\n  var len = args.length;\n  args = args.map(function (a) {\n    return \"\\\"\".concat(a, \"\\\"\");\n  });\n\n  switch (len) {\n    case 1:\n      msg += \"\".concat(args[0], \" argument\");\n      break;\n\n    case 2:\n      msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n      break;\n\n    default:\n      msg += args.slice(0, len - 1).join(', ');\n      msg += \", and \".concat(args[len - 1], \" arguments\");\n      break;\n  }\n\n  return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;\n\n/***/ }),\n\n/***/ 74061:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5230935__) {\n\n\"use strict\";\n// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar regexFlagsSupported = /a/g.flags !== undefined;\n\nvar arrayFromSet = function arrayFromSet(set) {\n  var array = [];\n  set.forEach(function (value) {\n    return array.push(value);\n  });\n  return array;\n};\n\nvar arrayFromMap = function arrayFromMap(map) {\n  var array = [];\n  map.forEach(function (value, key) {\n    return array.push([key, value]);\n  });\n  return array;\n};\n\nvar objectIs = Object.is ? Object.is : __nested_webpack_require_5230935__(64003);\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n  return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : __nested_webpack_require_5230935__(15567);\n\nfunction uncurryThis(f) {\n  return f.call.bind(f);\n}\n\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\n\nvar _require$types = (__nested_webpack_require_5230935__(43827).types),\n    isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n    isArrayBufferView = _require$types.isArrayBufferView,\n    isDate = _require$types.isDate,\n    isMap = _require$types.isMap,\n    isRegExp = _require$types.isRegExp,\n    isSet = _require$types.isSet,\n    isNativeError = _require$types.isNativeError,\n    isBoxedPrimitive = _require$types.isBoxedPrimitive,\n    isNumberObject = _require$types.isNumberObject,\n    isStringObject = _require$types.isStringObject,\n    isBooleanObject = _require$types.isBooleanObject,\n    isBigIntObject = _require$types.isBigIntObject,\n    isSymbolObject = _require$types.isSymbolObject,\n    isFloat32Array = _require$types.isFloat32Array,\n    isFloat64Array = _require$types.isFloat64Array;\n\nfunction isNonIndex(key) {\n  if (key.length === 0 || key.length > 10) return true;\n\n  for (var i = 0; i < key.length; i++) {\n    var code = key.charCodeAt(i);\n    if (code < 48 || code > 57) return true;\n  } // The maximum size for an array is 2 ** 32 -1.\n\n\n  return key.length === 10 && key >= Math.pow(2, 32);\n}\n\nfunction getOwnNonIndexProperties(value) {\n  return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n} // Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\n\n\nfunction compare(a, b) {\n  if (a === b) {\n    return 0;\n  }\n\n  var x = a.length;\n  var y = b.length;\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i];\n      y = b[i];\n      break;\n    }\n  }\n\n  if (x < y) {\n    return -1;\n  }\n\n  if (y < x) {\n    return 1;\n  }\n\n  return 0;\n}\n\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3; // Check if they have the same source and flags\n\nfunction areSimilarRegExps(a, b) {\n  return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\n\nfunction areSimilarFloatArrays(a, b) {\n  if (a.byteLength !== b.byteLength) {\n    return false;\n  }\n\n  for (var offset = 0; offset < a.byteLength; offset++) {\n    if (a[offset] !== b[offset]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction areSimilarTypedArrays(a, b) {\n  if (a.byteLength !== b.byteLength) {\n    return false;\n  }\n\n  return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\n\nfunction areEqualArrayBuffers(buf1, buf2) {\n  return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\n\nfunction isEqualBoxedPrimitive(val1, val2) {\n  if (isNumberObject(val1)) {\n    return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n  }\n\n  if (isStringObject(val1)) {\n    return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n  }\n\n  if (isBooleanObject(val1)) {\n    return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n  }\n\n  if (isBigIntObject(val1)) {\n    return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n  }\n\n  return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n} // Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n  // All identical values are equivalent, as determined by ===.\n  if (val1 === val2) {\n    if (val1 !== 0) return true;\n    return strict ? objectIs(val1, val2) : true;\n  } // Check more closely if val1 and val2 are equal.\n\n\n  if (strict) {\n    if (_typeof(val1) !== 'object') {\n      return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n    }\n\n    if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n      return false;\n    }\n\n    if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n      return false;\n    }\n  } else {\n    if (val1 === null || _typeof(val1) !== 'object') {\n      if (val2 === null || _typeof(val2) !== 'object') {\n        // eslint-disable-next-line eqeqeq\n        return val1 == val2;\n      }\n\n      return false;\n    }\n\n    if (val2 === null || _typeof(val2) !== 'object') {\n      return false;\n    }\n  }\n\n  var val1Tag = objectToString(val1);\n  var val2Tag = objectToString(val2);\n\n  if (val1Tag !== val2Tag) {\n    return false;\n  }\n\n  if (Array.isArray(val1)) {\n    // Check for sparse arrays and general fast path\n    if (val1.length !== val2.length) {\n      return false;\n    }\n\n    var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n    var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n    if (keys1.length !== keys2.length) {\n      return false;\n    }\n\n    return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n  } // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n  // wan't to early return out of the rest of the checks. However we can check\n  // if the second value is one of these values and the first isn't.\n\n\n  if (val1Tag === '[object Object]') {\n    // return keyCheck(val1, val2, strict, memos, kNoIterator);\n    if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n      return false;\n    }\n  }\n\n  if (isDate(val1)) {\n    if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n      return false;\n    }\n  } else if (isRegExp(val1)) {\n    if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n      return false;\n    }\n  } else if (isNativeError(val1) || val1 instanceof Error) {\n    // Do not compare the stack as it might differ even though the error itself\n    // is otherwise identical.\n    if (val1.message !== val2.message || val1.name !== val2.name) {\n      return false;\n    }\n  } else if (isArrayBufferView(val1)) {\n    if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n      if (!areSimilarFloatArrays(val1, val2)) {\n        return false;\n      }\n    } else if (!areSimilarTypedArrays(val1, val2)) {\n      return false;\n    } // Buffer.compare returns true, so val1.length === val2.length. If they both\n    // only contain numeric keys, we don't need to exam further than checking\n    // the symbols.\n\n\n    var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n\n    var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n    if (_keys.length !== _keys2.length) {\n      return false;\n    }\n\n    return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n  } else if (isSet(val1)) {\n    if (!isSet(val2) || val1.size !== val2.size) {\n      return false;\n    }\n\n    return keyCheck(val1, val2, strict, memos, kIsSet);\n  } else if (isMap(val1)) {\n    if (!isMap(val2) || val1.size !== val2.size) {\n      return false;\n    }\n\n    return keyCheck(val1, val2, strict, memos, kIsMap);\n  } else if (isAnyArrayBuffer(val1)) {\n    if (!areEqualArrayBuffers(val1, val2)) {\n      return false;\n    }\n  } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n    return false;\n  }\n\n  return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\n\nfunction getEnumerables(val, keys) {\n  return keys.filter(function (k) {\n    return propertyIsEnumerable(val, k);\n  });\n}\n\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n  // For all remaining Object pairs, including Array, objects and Maps,\n  // equivalence is determined by having:\n  // a) The same number of owned enumerable properties\n  // b) The same set of keys/indexes (although not necessarily the same order)\n  // c) Equivalent values for every corresponding key/index\n  // d) For Sets and Maps, equal contents\n  // Note: this accounts for both named and indexed properties on Arrays.\n  if (arguments.length === 5) {\n    aKeys = Object.keys(val1);\n    var bKeys = Object.keys(val2); // The pair must have the same number of owned properties.\n\n    if (aKeys.length !== bKeys.length) {\n      return false;\n    }\n  } // Cheap key test\n\n\n  var i = 0;\n\n  for (; i < aKeys.length; i++) {\n    if (!hasOwnProperty(val2, aKeys[i])) {\n      return false;\n    }\n  }\n\n  if (strict && arguments.length === 5) {\n    var symbolKeysA = objectGetOwnPropertySymbols(val1);\n\n    if (symbolKeysA.length !== 0) {\n      var count = 0;\n\n      for (i = 0; i < symbolKeysA.length; i++) {\n        var key = symbolKeysA[i];\n\n        if (propertyIsEnumerable(val1, key)) {\n          if (!propertyIsEnumerable(val2, key)) {\n            return false;\n          }\n\n          aKeys.push(key);\n          count++;\n        } else if (propertyIsEnumerable(val2, key)) {\n          return false;\n        }\n      }\n\n      var symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n      if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n        return false;\n      }\n    } else {\n      var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n      if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n        return false;\n      }\n    }\n  }\n\n  if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n    return true;\n  } // Use memos to handle cycles.\n\n\n  if (memos === undefined) {\n    memos = {\n      val1: new Map(),\n      val2: new Map(),\n      position: 0\n    };\n  } else {\n    // We prevent up to two map.has(x) calls by directly retrieving the value\n    // and checking for undefined. The map can only contain numbers, so it is\n    // safe to check for undefined only.\n    var val2MemoA = memos.val1.get(val1);\n\n    if (val2MemoA !== undefined) {\n      var val2MemoB = memos.val2.get(val2);\n\n      if (val2MemoB !== undefined) {\n        return val2MemoA === val2MemoB;\n      }\n    }\n\n    memos.position++;\n  }\n\n  memos.val1.set(val1, memos.position);\n  memos.val2.set(val2, memos.position);\n  var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n  memos.val1.delete(val1);\n  memos.val2.delete(val2);\n  return areEq;\n}\n\nfunction setHasEqualElement(set, val1, strict, memo) {\n  // Go looking.\n  var setValues = arrayFromSet(set);\n\n  for (var i = 0; i < setValues.length; i++) {\n    var val2 = setValues[i];\n\n    if (innerDeepEqual(val1, val2, strict, memo)) {\n      // Remove the matching element to make sure we do not check that again.\n      set.delete(val2);\n      return true;\n    }\n  }\n\n  return false;\n} // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\n\n\nfunction findLooseMatchingPrimitives(prim) {\n  switch (_typeof(prim)) {\n    case 'undefined':\n      return null;\n\n    case 'object':\n      // Only pass in null as object!\n      return undefined;\n\n    case 'symbol':\n      return false;\n\n    case 'string':\n      prim = +prim;\n    // Loose equal entries exist only if the string is possible to convert to\n    // a regular number and not NaN.\n    // Fall through\n\n    case 'number':\n      if (numberIsNaN(prim)) {\n        return false;\n      }\n\n  }\n\n  return true;\n}\n\nfunction setMightHaveLoosePrim(a, b, prim) {\n  var altValue = findLooseMatchingPrimitives(prim);\n  if (altValue != null) return altValue;\n  return b.has(altValue) && !a.has(altValue);\n}\n\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n  var altValue = findLooseMatchingPrimitives(prim);\n\n  if (altValue != null) {\n    return altValue;\n  }\n\n  var curB = b.get(altValue);\n\n  if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n    return false;\n  }\n\n  return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\n\nfunction setEquiv(a, b, strict, memo) {\n  // This is a lazily initiated Set of entries which have to be compared\n  // pairwise.\n  var set = null;\n  var aValues = arrayFromSet(a);\n\n  for (var i = 0; i < aValues.length; i++) {\n    var val = aValues[i]; // Note: Checking for the objects first improves the performance for object\n    // heavy sets but it is a minor slow down for primitives. As they are fast\n    // to check this improves the worst case scenario instead.\n\n    if (_typeof(val) === 'object' && val !== null) {\n      if (set === null) {\n        set = new Set();\n      } // If the specified value doesn't exist in the second set its an not null\n      // object (or non strict only: a not matching primitive) we'll need to go\n      // hunting for something thats deep-(strict-)equal to it. To make this\n      // O(n log n) complexity we have to copy these values in a new set first.\n\n\n      set.add(val);\n    } else if (!b.has(val)) {\n      if (strict) return false; // Fast path to detect missing string, symbol, undefined and null values.\n\n      if (!setMightHaveLoosePrim(a, b, val)) {\n        return false;\n      }\n\n      if (set === null) {\n        set = new Set();\n      }\n\n      set.add(val);\n    }\n  }\n\n  if (set !== null) {\n    var bValues = arrayFromSet(b);\n\n    for (var _i = 0; _i < bValues.length; _i++) {\n      var _val = bValues[_i]; // We have to check if a primitive value is already\n      // matching and only if it's not, go hunting for it.\n\n      if (_typeof(_val) === 'object' && _val !== null) {\n        if (!setHasEqualElement(set, _val, strict, memo)) return false;\n      } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n        return false;\n      }\n    }\n\n    return set.size === 0;\n  }\n\n  return true;\n}\n\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n  // To be able to handle cases like:\n  //   Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n  // ... we need to consider *all* matching keys, not just the first we find.\n  var setValues = arrayFromSet(set);\n\n  for (var i = 0; i < setValues.length; i++) {\n    var key2 = setValues[i];\n\n    if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n      set.delete(key2);\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction mapEquiv(a, b, strict, memo) {\n  var set = null;\n  var aEntries = arrayFromMap(a);\n\n  for (var i = 0; i < aEntries.length; i++) {\n    var _aEntries$i = _slicedToArray(aEntries[i], 2),\n        key = _aEntries$i[0],\n        item1 = _aEntries$i[1];\n\n    if (_typeof(key) === 'object' && key !== null) {\n      if (set === null) {\n        set = new Set();\n      }\n\n      set.add(key);\n    } else {\n      // By directly retrieving the value we prevent another b.has(key) check in\n      // almost all possible cases.\n      var item2 = b.get(key);\n\n      if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n        if (strict) return false; // Fast path to detect missing string, symbol, undefined and null\n        // keys.\n\n        if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n\n        if (set === null) {\n          set = new Set();\n        }\n\n        set.add(key);\n      }\n    }\n  }\n\n  if (set !== null) {\n    var bEntries = arrayFromMap(b);\n\n    for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n      var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n          key = _bEntries$_i[0],\n          item = _bEntries$_i[1];\n\n      if (_typeof(key) === 'object' && key !== null) {\n        if (!mapHasEqualEntry(set, a, key, item, strict, memo)) return false;\n      } else if (!strict && (!a.has(key) || !innerDeepEqual(a.get(key), item, false, memo)) && !mapHasEqualEntry(set, a, key, item, false, memo)) {\n        return false;\n      }\n    }\n\n    return set.size === 0;\n  }\n\n  return true;\n}\n\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n  // Sets and maps don't have their entries accessible via normal object\n  // properties.\n  var i = 0;\n\n  if (iterationType === kIsSet) {\n    if (!setEquiv(a, b, strict, memos)) {\n      return false;\n    }\n  } else if (iterationType === kIsMap) {\n    if (!mapEquiv(a, b, strict, memos)) {\n      return false;\n    }\n  } else if (iterationType === kIsArray) {\n    for (; i < a.length; i++) {\n      if (hasOwnProperty(a, i)) {\n        if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n          return false;\n        }\n      } else if (hasOwnProperty(b, i)) {\n        return false;\n      } else {\n        // Array is sparse.\n        var keysA = Object.keys(a);\n\n        for (; i < keysA.length; i++) {\n          var key = keysA[i];\n\n          if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n            return false;\n          }\n        }\n\n        if (keysA.length !== Object.keys(b).length) {\n          return false;\n        }\n\n        return true;\n      }\n    }\n  } // The pair must have equivalent values for every corresponding key.\n  // Possibly expensive deep test:\n\n\n  for (i = 0; i < keys.length; i++) {\n    var _key = keys[i];\n\n    if (!innerDeepEqual(a[_key], b[_key], strict, memos)) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction isDeepEqual(val1, val2) {\n  return innerDeepEqual(val1, val2, kLoose);\n}\n\nfunction isDeepStrictEqual(val1, val2) {\n  return innerDeepEqual(val1, val2, kStrict);\n}\n\nmodule.exports = {\n  isDeepEqual: isDeepEqual,\n  isDeepStrictEqual: isDeepStrictEqual\n};\n\n/***/ }),\n\n/***/ 95341:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(\n      uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n    ))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n\n\n/***/ }),\n\n/***/ 91358:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// (a, y, c, l, h) = (array, y[, cmp, lo, hi])\n\nfunction ge(a, y, c, l, h) {\n  var i = h + 1;\n  while (l <= h) {\n    var m = (l + h) >>> 1, x = a[m];\n    var p = (c !== undefined) ? c(x, y) : (x - y);\n    if (p >= 0) { i = m; h = m - 1 } else { l = m + 1 }\n  }\n  return i;\n};\n\nfunction gt(a, y, c, l, h) {\n  var i = h + 1;\n  while (l <= h) {\n    var m = (l + h) >>> 1, x = a[m];\n    var p = (c !== undefined) ? c(x, y) : (x - y);\n    if (p > 0) { i = m; h = m - 1 } else { l = m + 1 }\n  }\n  return i;\n};\n\nfunction lt(a, y, c, l, h) {\n  var i = l - 1;\n  while (l <= h) {\n    var m = (l + h) >>> 1, x = a[m];\n    var p = (c !== undefined) ? c(x, y) : (x - y);\n    if (p < 0) { i = m; l = m + 1 } else { h = m - 1 }\n  }\n  return i;\n};\n\nfunction le(a, y, c, l, h) {\n  var i = l - 1;\n  while (l <= h) {\n    var m = (l + h) >>> 1, x = a[m];\n    var p = (c !== undefined) ? c(x, y) : (x - y);\n    if (p <= 0) { i = m; l = m + 1 } else { h = m - 1 }\n  }\n  return i;\n};\n\nfunction eq(a, y, c, l, h) {\n  while (l <= h) {\n    var m = (l + h) >>> 1, x = a[m];\n    var p = (c !== undefined) ? c(x, y) : (x - y);\n    if (p === 0) { return m }\n    if (p <= 0) { l = m + 1 } else { h = m - 1 }\n  }\n  return -1;\n};\n\nfunction norm(a, y, c, l, h, f) {\n  if (typeof c === 'function') {\n    return f(a, y, c, (l === undefined) ? 0 : l | 0, (h === undefined) ? a.length - 1 : h | 0);\n  }\n  return f(a, y, undefined, (c === undefined) ? 0 : c | 0, (l === undefined) ? a.length - 1 : l | 0);\n}\n\nmodule.exports = {\n  ge: function(a, y, c, l, h) { return norm(a, y, c, l, h, ge)},\n  gt: function(a, y, c, l, h) { return norm(a, y, c, l, h, gt)},\n  lt: function(a, y, c, l, h) { return norm(a, y, c, l, h, lt)},\n  le: function(a, y, c, l, h) { return norm(a, y, c, l, h, le)},\n  eq: function(a, y, c, l, h) { return norm(a, y, c, l, h, eq)}\n}\n\n\n/***/ }),\n\n/***/ 13547:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n/**\n * Bit twiddling hacks for JavaScript.\n *\n * Author: Mikola Lysenko\n *\n * Ported from Stanford bit twiddling hack library:\n *    http://graphics.stanford.edu/~seander/bithacks.html\n */\n\n \"use restrict\";\n\n//Number of bits in an integer\nvar INT_BITS = 32;\n\n//Constants\nexports.INT_BITS  = INT_BITS;\nexports.INT_MAX   =  0x7fffffff;\nexports.INT_MIN   = -1<<(INT_BITS-1);\n\n//Returns -1, 0, +1 depending on sign of x\nexports.sign = function(v) {\n  return (v > 0) - (v < 0);\n}\n\n//Computes absolute value of integer\nexports.abs = function(v) {\n  var mask = v >> (INT_BITS-1);\n  return (v ^ mask) - mask;\n}\n\n//Computes minimum of integers x and y\nexports.min = function(x, y) {\n  return y ^ ((x ^ y) & -(x < y));\n}\n\n//Computes maximum of integers x and y\nexports.max = function(x, y) {\n  return x ^ ((x ^ y) & -(x < y));\n}\n\n//Checks if a number is a power of two\nexports.isPow2 = function(v) {\n  return !(v & (v-1)) && (!!v);\n}\n\n//Computes log base 2 of v\nexports.log2 = function(v) {\n  var r, shift;\n  r =     (v > 0xFFFF) << 4; v >>>= r;\n  shift = (v > 0xFF  ) << 3; v >>>= shift; r |= shift;\n  shift = (v > 0xF   ) << 2; v >>>= shift; r |= shift;\n  shift = (v > 0x3   ) << 1; v >>>= shift; r |= shift;\n  return r | (v >> 1);\n}\n\n//Computes log base 10 of v\nexports.log10 = function(v) {\n  return  (v >= 1000000000) ? 9 : (v >= 100000000) ? 8 : (v >= 10000000) ? 7 :\n          (v >= 1000000) ? 6 : (v >= 100000) ? 5 : (v >= 10000) ? 4 :\n          (v >= 1000) ? 3 : (v >= 100) ? 2 : (v >= 10) ? 1 : 0;\n}\n\n//Counts number of bits\nexports.popCount = function(v) {\n  v = v - ((v >>> 1) & 0x55555555);\n  v = (v & 0x33333333) + ((v >>> 2) & 0x33333333);\n  return ((v + (v >>> 4) & 0xF0F0F0F) * 0x1010101) >>> 24;\n}\n\n//Counts number of trailing zeros\nfunction countTrailingZeros(v) {\n  var c = 32;\n  v &= -v;\n  if (v) c--;\n  if (v & 0x0000FFFF) c -= 16;\n  if (v & 0x00FF00FF) c -= 8;\n  if (v & 0x0F0F0F0F) c -= 4;\n  if (v & 0x33333333) c -= 2;\n  if (v & 0x55555555) c -= 1;\n  return c;\n}\nexports.countTrailingZeros = countTrailingZeros;\n\n//Rounds to next power of 2\nexports.nextPow2 = function(v) {\n  v += v === 0;\n  --v;\n  v |= v >>> 1;\n  v |= v >>> 2;\n  v |= v >>> 4;\n  v |= v >>> 8;\n  v |= v >>> 16;\n  return v + 1;\n}\n\n//Rounds down to previous power of 2\nexports.prevPow2 = function(v) {\n  v |= v >>> 1;\n  v |= v >>> 2;\n  v |= v >>> 4;\n  v |= v >>> 8;\n  v |= v >>> 16;\n  return v - (v>>>1);\n}\n\n//Computes parity of word\nexports.parity = function(v) {\n  v ^= v >>> 16;\n  v ^= v >>> 8;\n  v ^= v >>> 4;\n  v &= 0xf;\n  return (0x6996 >>> v) & 1;\n}\n\nvar REVERSE_TABLE = new Array(256);\n\n(function(tab) {\n  for(var i=0; i<256; ++i) {\n    var v = i, r = i, s = 7;\n    for (v >>>= 1; v; v >>>= 1) {\n      r <<= 1;\n      r |= v & 1;\n      --s;\n    }\n    tab[i] = (r << s) & 0xff;\n  }\n})(REVERSE_TABLE);\n\n//Reverse bits in a 32 bit word\nexports.reverse = function(v) {\n  return  (REVERSE_TABLE[ v         & 0xff] << 24) |\n          (REVERSE_TABLE[(v >>> 8)  & 0xff] << 16) |\n          (REVERSE_TABLE[(v >>> 16) & 0xff] << 8)  |\n           REVERSE_TABLE[(v >>> 24) & 0xff];\n}\n\n//Interleave bits of 2 coordinates with 16 bits.  Useful for fast quadtree codes\nexports.interleave2 = function(x, y) {\n  x &= 0xFFFF;\n  x = (x | (x << 8)) & 0x00FF00FF;\n  x = (x | (x << 4)) & 0x0F0F0F0F;\n  x = (x | (x << 2)) & 0x33333333;\n  x = (x | (x << 1)) & 0x55555555;\n\n  y &= 0xFFFF;\n  y = (y | (y << 8)) & 0x00FF00FF;\n  y = (y | (y << 4)) & 0x0F0F0F0F;\n  y = (y | (y << 2)) & 0x33333333;\n  y = (y | (y << 1)) & 0x55555555;\n\n  return x | (y << 1);\n}\n\n//Extracts the nth interleaved component\nexports.deinterleave2 = function(v, n) {\n  v = (v >>> n) & 0x55555555;\n  v = (v | (v >>> 1))  & 0x33333333;\n  v = (v | (v >>> 2))  & 0x0F0F0F0F;\n  v = (v | (v >>> 4))  & 0x00FF00FF;\n  v = (v | (v >>> 16)) & 0x000FFFF;\n  return (v << 16) >> 16;\n}\n\n\n//Interleave bits of 3 coordinates, each with 10 bits.  Useful for fast octree codes\nexports.interleave3 = function(x, y, z) {\n  x &= 0x3FF;\n  x  = (x | (x<<16)) & 4278190335;\n  x  = (x | (x<<8))  & 251719695;\n  x  = (x | (x<<4))  & 3272356035;\n  x  = (x | (x<<2))  & 1227133513;\n\n  y &= 0x3FF;\n  y  = (y | (y<<16)) & 4278190335;\n  y  = (y | (y<<8))  & 251719695;\n  y  = (y | (y<<4))  & 3272356035;\n  y  = (y | (y<<2))  & 1227133513;\n  x |= (y << 1);\n  \n  z &= 0x3FF;\n  z  = (z | (z<<16)) & 4278190335;\n  z  = (z | (z<<8))  & 251719695;\n  z  = (z | (z<<4))  & 3272356035;\n  z  = (z | (z<<2))  & 1227133513;\n  \n  return x | (z << 2);\n}\n\n//Extracts nth interleaved component of a 3-tuple\nexports.deinterleave3 = function(v, n) {\n  v = (v >>> n)       & 1227133513;\n  v = (v | (v>>>2))   & 3272356035;\n  v = (v | (v>>>4))   & 251719695;\n  v = (v | (v>>>8))   & 4278190335;\n  v = (v | (v>>>16))  & 0x3FF;\n  return (v<<22)>>22;\n}\n\n//Computes next combination in colexicographic order (this is mistakenly called nextPermutation on the bit twiddling hacks page)\nexports.nextCombination = function(v) {\n  var t = v | (v - 1);\n  return (t + 1) | (((~t & -~t) - 1) >>> (countTrailingZeros(v) + 1));\n}\n\n\n\n/***/ }),\n\n/***/ 44781:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5262775__) {\n\n\"use strict\";\n\r\n\r\nvar clamp = __nested_webpack_require_5262775__(53435)\r\n\r\nmodule.exports = calcSDF\r\n\r\nvar INF = 1e20;\r\n\r\nfunction calcSDF(src, options) {\r\n    if (!options) options = {}\r\n\r\n    var cutoff = options.cutoff == null ? 0.25 : options.cutoff\r\n    var radius = options.radius == null ? 8 : options.radius\r\n    var channel = options.channel || 0\r\n    var w, h, size, data, intData, stride, ctx, canvas, imgData, i, l\r\n\r\n    // handle image container\r\n    if (ArrayBuffer.isView(src) || Array.isArray(src)) {\r\n        if (!options.width || !options.height) throw Error('For raw data width and height should be provided by options')\r\n        w = options.width, h = options.height\r\n        data = src\r\n\r\n        if (!options.stride) stride = Math.floor(src.length / w / h)\r\n        else stride = options.stride\r\n    }\r\n    else {\r\n        if (window.HTMLCanvasElement && src instanceof window.HTMLCanvasElement) {\r\n            canvas = src\r\n            ctx = canvas.getContext('2d')\r\n            w = canvas.width, h = canvas.height\r\n            imgData = ctx.getImageData(0, 0, w, h)\r\n            data = imgData.data\r\n            stride = 4\r\n        }\r\n        else if (window.CanvasRenderingContext2D && src instanceof window.CanvasRenderingContext2D) {\r\n            canvas = src.canvas\r\n            ctx = src\r\n            w = canvas.width, h = canvas.height\r\n            imgData = ctx.getImageData(0, 0, w, h)\r\n            data = imgData.data\r\n            stride = 4\r\n        }\r\n        else if (window.ImageData && src instanceof window.ImageData) {\r\n            imgData = src\r\n            w = src.width, h = src.height\r\n            data = imgData.data\r\n            stride = 4\r\n        }\r\n    }\r\n\r\n    size = Math.max(w, h)\r\n\r\n    //convert int data to floats\r\n    if ((window.Uint8ClampedArray && data instanceof window.Uint8ClampedArray) || (window.Uint8Array && data instanceof window.Uint8Array)) {\r\n        intData = data\r\n        data = Array(w*h)\r\n\r\n        for (i = 0, l = intData.length; i < l; i++) {\r\n            data[i] = intData[i*stride + channel] / 255\r\n        }\r\n    }\r\n    else {\r\n        if (stride !== 1) throw Error('Raw data can have only 1 value per pixel')\r\n    }\r\n\r\n    // temporary arrays for the distance transform\r\n    var gridOuter = Array(w * h)\r\n    var gridInner = Array(w * h)\r\n    var f = Array(size)\r\n    var d = Array(size)\r\n    var z = Array(size + 1)\r\n    var v = Array(size)\r\n\r\n    for (i = 0, l = w * h; i < l; i++) {\r\n        var a = data[i]\r\n        gridOuter[i] = a === 1 ? 0 : a === 0 ? INF : Math.pow(Math.max(0, 0.5 - a), 2)\r\n        gridInner[i] = a === 1 ? INF : a === 0 ? 0 : Math.pow(Math.max(0, a - 0.5), 2)\r\n    }\r\n\r\n    edt(gridOuter, w, h, f, d, v, z)\r\n    edt(gridInner, w, h, f, d, v, z)\r\n\r\n    var dist = window.Float32Array ? new Float32Array(w * h) : new Array(w * h)\r\n\r\n    for (i = 0, l = w*h; i < l; i++) {\r\n        dist[i] = clamp(1 - ( (gridOuter[i] - gridInner[i]) / radius + cutoff), 0, 1)\r\n    }\r\n\r\n    return dist\r\n}\r\n\r\n// 2D Euclidean distance transform by Felzenszwalb & Huttenlocher https://cs.brown.edu/~pff/dt/\r\nfunction edt(data, width, height, f, d, v, z) {\r\n    for (var x = 0; x < width; x++) {\r\n        for (var y = 0; y < height; y++) {\r\n            f[y] = data[y * width + x]\r\n        }\r\n        edt1d(f, d, v, z, height)\r\n        for (y = 0; y < height; y++) {\r\n            data[y * width + x] = d[y]\r\n        }\r\n    }\r\n    for (y = 0; y < height; y++) {\r\n        for (x = 0; x < width; x++) {\r\n            f[x] = data[y * width + x]\r\n        }\r\n        edt1d(f, d, v, z, width)\r\n        for (x = 0; x < width; x++) {\r\n            data[y * width + x] = Math.sqrt(d[x])\r\n        }\r\n    }\r\n}\r\n\r\n// 1D squared distance transform\r\nfunction edt1d(f, d, v, z, n) {\r\n    v[0] = 0;\r\n    z[0] = -INF\r\n    z[1] = +INF\r\n\r\n    for (var q = 1, k = 0; q < n; q++) {\r\n        var s = ((f[q] + q * q) - (f[v[k]] + v[k] * v[k])) / (2 * q - 2 * v[k])\r\n        while (s <= z[k]) {\r\n            k--\r\n            s = ((f[q] + q * q) - (f[v[k]] + v[k] * v[k])) / (2 * q - 2 * v[k])\r\n        }\r\n        k++\r\n        v[k] = q\r\n        z[k] = s\r\n        z[k + 1] = +INF\r\n    }\r\n\r\n    for (q = 0, k = 0; q < n; q++) {\r\n        while (z[k + 1] < q) k++\r\n        d[q] = (q - v[k]) * (q - v[k]) + f[v[k]]\r\n    }\r\n}\r\n\n\n/***/ }),\n\n/***/ 68222:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5267138__) {\n\n\"use strict\";\n\n\nvar bind = __nested_webpack_require_5267138__(77575);\nvar GetIntrinsic = __nested_webpack_require_5267138__(68318);\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind() {\n\treturn $reflectApply(bind, $call, arguments);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n\n\n/***/ }),\n\n/***/ 53435:\n/***/ (function(module) {\n\nmodule.exports = clamp\n\nfunction clamp(value, min, max) {\n  return min < max\n    ? (value < min ? min : value > max ? max : value)\n    : (value < max ? max : value > min ? min : value)\n}\n\n\n/***/ }),\n\n/***/ 6475:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5268322__) {\n\n\"use strict\";\n/** @module  color-id */\r\n\r\n\r\n\r\nvar clamp = __nested_webpack_require_5268322__(53435)\r\n\r\nmodule.exports = toNumber\r\nmodule.exports.to = toNumber\r\nmodule.exports.from = fromNumber\r\n\r\nfunction toNumber (rgba, normalized) {\r\n\tif(normalized == null) normalized = true\r\n\r\n\tvar r = rgba[0], g = rgba[1], b = rgba[2], a = rgba[3]\r\n\r\n\tif (a == null) a = normalized ? 1 : 255\r\n\r\n\tif (normalized) {\r\n\t\tr *= 255\r\n\t\tg *= 255\r\n\t\tb *= 255\r\n\t\ta *= 255\r\n\t}\r\n\r\n\tr = clamp(r, 0, 255) & 0xFF\r\n\tg = clamp(g, 0, 255) & 0xFF\r\n\tb = clamp(b, 0, 255) & 0xFF\r\n\ta = clamp(a, 0, 255) & 0xFF\r\n\r\n\t//hi-order shift converts to -1, so we can't use <<24\r\n\tvar n = (r * 0x01000000) + (g << 16) + (b << 8) + (a)\r\n\r\n\treturn n\r\n}\r\n\r\nfunction fromNumber (n, normalized) {\r\n\tn = +n\r\n\r\n\tvar r = n >>> 24\r\n\tvar g = (n & 0x00ff0000) >>> 16\r\n\tvar b = (n & 0x0000ff00) >>> 8\r\n\tvar a = n & 0x000000ff\r\n\r\n\tif (normalized === false) return [r, g, b, a]\r\n\r\n\treturn [r/255, g/255, b/255, a/255]\r\n}\r\n\n\n/***/ }),\n\n/***/ 76857:\n/***/ (function(module) {\n\n\"use strict\";\n\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n\n\n/***/ }),\n\n/***/ 25075:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5274043__) {\n\n\"use strict\";\n/** @module  color-normalize */\r\n\r\n\r\n\r\nvar rgba = __nested_webpack_require_5274043__(36652)\r\nvar clamp = __nested_webpack_require_5274043__(53435)\r\nvar dtype = __nested_webpack_require_5274043__(90660)\r\n\r\nmodule.exports = function normalize (color, type) {\r\n\tif (type === 'float' || !type) type = 'array'\r\n\tif (type === 'uint') type = 'uint8'\r\n\tif (type === 'uint_clamped') type = 'uint8_clamped'\r\n\tvar Ctor = dtype(type)\r\n\tvar output = new Ctor(4)\r\n\r\n\tvar normalize = type !== 'uint8' && type !== 'uint8_clamped'\r\n\r\n\t// attempt to parse non-array arguments\r\n\tif (!color.length || typeof color === 'string') {\r\n\t\tcolor = rgba(color)\r\n\t\tcolor[0] /= 255\r\n\t\tcolor[1] /= 255\r\n\t\tcolor[2] /= 255\r\n\t}\r\n\r\n\t// 0, 1 are possible contradictory values for Arrays:\r\n\t// [1,1,1] input gives [1,1,1] output instead of [1/255,1/255,1/255], which may be collision if input is meant to be uint.\r\n\t// converting [1,1,1] to [1/255,1/255,1/255] in case of float input gives larger mistake since [1,1,1] float is frequent edge value, whereas [0,1,1], [1,1,1] etc. uint inputs are relatively rare\r\n\tif (isInt(color)) {\r\n\t\toutput[0] = color[0]\r\n\t\toutput[1] = color[1]\r\n\t\toutput[2] = color[2]\r\n\t\toutput[3] = color[3] != null ? color[3] : 255\r\n\r\n\t\tif (normalize) {\r\n\t\t\toutput[0] /= 255\r\n\t\t\toutput[1] /= 255\r\n\t\t\toutput[2] /= 255\r\n\t\t\toutput[3] /= 255\r\n\t\t}\r\n\r\n\t\treturn output\r\n\t}\r\n\r\n\tif (!normalize) {\r\n\t\toutput[0] = clamp(Math.floor(color[0] * 255), 0, 255)\r\n\t\toutput[1] = clamp(Math.floor(color[1] * 255), 0, 255)\r\n\t\toutput[2] = clamp(Math.floor(color[2] * 255), 0, 255)\r\n\t\toutput[3] = color[3] == null ? 255 : clamp(Math.floor(color[3] * 255), 0, 255)\r\n\t} else {\r\n\t\toutput[0] = color[0]\r\n\t\toutput[1] = color[1]\r\n\t\toutput[2] = color[2]\r\n\t\toutput[3] = color[3] != null ? color[3] : 1\r\n\t}\r\n\r\n\treturn output\r\n}\r\n\r\nfunction isInt(color) {\r\n\tif (color instanceof Uint8Array || color instanceof Uint8ClampedArray) return true\r\n\r\n\tif (Array.isArray(color) &&\r\n\t\t(color[0] > 1 || color[0] === 0) &&\r\n\t\t(color[1] > 1 || color[1] === 0) &&\r\n\t\t(color[2] > 1 || color[2] === 0) &&\r\n\t\t(!color[3] || color[3] > 1)\r\n\t) return true\r\n\r\n\treturn false\r\n}\r\n\n\n/***/ }),\n\n/***/ 90736:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5276222__) {\n\n\"use strict\";\n/**\n * @module color-parse\n */\n\n\n\nvar names = __nested_webpack_require_5276222__(76857)\nvar isObject = __nested_webpack_require_5276222__(10973)\nvar defined = __nested_webpack_require_5276222__(46775)\n\nmodule.exports = parse\n\n/**\n * Base hues\n * http://dev.w3.org/csswg/css-color/#typedef-named-hue\n */\n//FIXME: use external hue detector\nvar baseHues = {\n\tred: 0,\n\torange: 60,\n\tyellow: 120,\n\tgreen: 180,\n\tblue: 240,\n\tpurple: 300\n}\n\n/**\n * Parse color from the string passed\n *\n * @return {Object} A space indicator `space`, an array `values` and `alpha`\n */\nfunction parse (cstr) {\n\tvar m, parts = [], alpha = 1, space\n\n\tif (typeof cstr === 'string') {\n\t\t//keyword\n\t\tif (names[cstr]) {\n\t\t\tparts = names[cstr].slice()\n\t\t\tspace = 'rgb'\n\t\t}\n\n\t\t//reserved words\n\t\telse if (cstr === 'transparent') {\n\t\t\talpha = 0\n\t\t\tspace = 'rgb'\n\t\t\tparts = [0,0,0]\n\t\t}\n\n\t\t//hex\n\t\telse if (/^#[A-Fa-f0-9]+$/.test(cstr)) {\n\t\t\tvar base = cstr.slice(1)\n\t\t\tvar size = base.length\n\t\t\tvar isShort = size <= 4\n\t\t\talpha = 1\n\n\t\t\tif (isShort) {\n\t\t\t\tparts = [\n\t\t\t\t\tparseInt(base[0] + base[0], 16),\n\t\t\t\t\tparseInt(base[1] + base[1], 16),\n\t\t\t\t\tparseInt(base[2] + base[2], 16)\n\t\t\t\t]\n\t\t\t\tif (size === 4) {\n\t\t\t\t\talpha = parseInt(base[3] + base[3], 16) / 255\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparts = [\n\t\t\t\t\tparseInt(base[0] + base[1], 16),\n\t\t\t\t\tparseInt(base[2] + base[3], 16),\n\t\t\t\t\tparseInt(base[4] + base[5], 16)\n\t\t\t\t]\n\t\t\t\tif (size === 8) {\n\t\t\t\t\talpha = parseInt(base[6] + base[7], 16) / 255\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!parts[0]) parts[0] = 0\n\t\t\tif (!parts[1]) parts[1] = 0\n\t\t\tif (!parts[2]) parts[2] = 0\n\n\t\t\tspace = 'rgb'\n\t\t}\n\n\t\t//color space\n\t\telse if (m = /^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\\s*\\(([^\\)]*)\\)/.exec(cstr)) {\n\t\t\tvar name = m[1]\n\t\t\tvar isRGB = name === 'rgb'\n\t\t\tvar base = name.replace(/a$/, '')\n\t\t\tspace = base\n\t\t\tvar size = base === 'cmyk' ? 4 : base === 'gray' ? 1 : 3\n\t\t\tparts = m[2].trim()\n\t\t\t\t.split(/\\s*,\\s*/)\n\t\t\t\t.map(function (x, i) {\n\t\t\t\t\t//<percentage>\n\t\t\t\t\tif (/%$/.test(x)) {\n\t\t\t\t\t\t//alpha\n\t\t\t\t\t\tif (i === size)\treturn parseFloat(x) / 100\n\t\t\t\t\t\t//rgb\n\t\t\t\t\t\tif (base === 'rgb') return parseFloat(x) * 255 / 100\n\t\t\t\t\t\treturn parseFloat(x)\n\t\t\t\t\t}\n\t\t\t\t\t//hue\n\t\t\t\t\telse if (base[i] === 'h') {\n\t\t\t\t\t\t//<deg>\n\t\t\t\t\t\tif (/deg$/.test(x)) {\n\t\t\t\t\t\t\treturn parseFloat(x)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t//<base-hue>\n\t\t\t\t\t\telse if (baseHues[x] !== undefined) {\n\t\t\t\t\t\t\treturn baseHues[x]\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn parseFloat(x)\n\t\t\t\t})\n\n\t\t\tif (name === base) parts.push(1)\n\t\t\talpha = (isRGB) ? 1 : (parts[size] === undefined) ? 1 : parts[size]\n\t\t\tparts = parts.slice(0, size)\n\t\t}\n\n\t\t//named channels case\n\t\telse if (cstr.length > 10 && /[0-9](?:\\s|\\/)/.test(cstr)) {\n\t\t\tparts = cstr.match(/([0-9]+)/g).map(function (value) {\n\t\t\t\treturn parseFloat(value)\n\t\t\t})\n\n\t\t\tspace = cstr.match(/([a-z])/ig).join('').toLowerCase()\n\t\t}\n\t}\n\n\t//numeric case\n\telse if (!isNaN(cstr)) {\n\t\tspace = 'rgb'\n\t\tparts = [cstr >>> 16, (cstr & 0x00ff00) >>> 8, cstr & 0x0000ff]\n\t}\n\n\t//object case - detects css cases of rgb and hsl\n\telse if (isObject(cstr)) {\n\t\tvar r = defined(cstr.r, cstr.red, cstr.R, null)\n\n\t\tif (r !== null) {\n\t\t\tspace = 'rgb'\n\t\t\tparts = [\n\t\t\t\tr,\n\t\t\t\tdefined(cstr.g, cstr.green, cstr.G),\n\t\t\t\tdefined(cstr.b, cstr.blue, cstr.B)\n\t\t\t]\n\t\t}\n\t\telse {\n\t\t\tspace = 'hsl'\n\t\t\tparts = [\n\t\t\t\tdefined(cstr.h, cstr.hue, cstr.H),\n\t\t\t\tdefined(cstr.s, cstr.saturation, cstr.S),\n\t\t\t\tdefined(cstr.l, cstr.lightness, cstr.L, cstr.b, cstr.brightness)\n\t\t\t]\n\t\t}\n\n\t\talpha = defined(cstr.a, cstr.alpha, cstr.opacity, 1)\n\n\t\tif (cstr.opacity != null) alpha /= 100\n\t}\n\n\t//array\n\telse if (Array.isArray(cstr) || __nested_webpack_require_5276222__.g.ArrayBuffer && ArrayBuffer.isView && ArrayBuffer.isView(cstr)) {\n\t\tparts = [cstr[0], cstr[1], cstr[2]]\n\t\tspace = 'rgb'\n\t\talpha = cstr.length === 4 ? cstr[3] : 1\n\t}\n\n\treturn {\n\t\tspace: space,\n\t\tvalues: parts,\n\t\talpha: alpha\n\t}\n}\n\n\n/***/ }),\n\n/***/ 36652:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5280089__) {\n\n\"use strict\";\n/** @module  color-rgba */\n\n\n\nvar parse = __nested_webpack_require_5280089__(90736)\nvar hsl = __nested_webpack_require_5280089__(80009)\nvar clamp = __nested_webpack_require_5280089__(53435)\n\nmodule.exports = function rgba (color) {\n\tvar values, i, l\n\n\t//attempt to parse non-array arguments\n\tvar parsed = parse(color)\n\n\tif (!parsed.space) return []\n\n\tvalues = Array(3)\n\tvalues[0] = clamp(parsed.values[0], 0, 255)\n\tvalues[1] = clamp(parsed.values[1], 0, 255)\n\tvalues[2] = clamp(parsed.values[2], 0, 255)\n\n\tif (parsed.space[0] === 'h') {\n\t\tvalues = hsl.rgb(values)\n\t}\n\n\tvalues.push(clamp(parsed.alpha, 0, 1))\n\n\treturn values\n}\n\n\n/***/ }),\n\n/***/ 80009:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5280784__) {\n\n\"use strict\";\n/**\n * @module color-space/hsl\n */\n\n\nvar rgb = __nested_webpack_require_5280784__(6866);\n\nmodule.exports = {\n\tname: 'hsl',\n\tmin: [0,0,0],\n\tmax: [360,100,100],\n\tchannel: ['hue', 'saturation', 'lightness'],\n\talias: ['HSL'],\n\n\trgb: function(hsl) {\n\t\tvar h = hsl[0] / 360,\n\t\t\t\ts = hsl[1] / 100,\n\t\t\t\tl = hsl[2] / 100,\n\t\t\t\tt1, t2, t3, rgb, val;\n\n\t\tif (s === 0) {\n\t\t\tval = l * 255;\n\t\t\treturn [val, val, val];\n\t\t}\n\n\t\tif (l < 0.5) {\n\t\t\tt2 = l * (1 + s);\n\t\t}\n\t\telse {\n\t\t\tt2 = l + s - l * s;\n\t\t}\n\t\tt1 = 2 * l - t2;\n\n\t\trgb = [0, 0, 0];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\tt3 = h + 1 / 3 * - (i - 1);\n\t\t\tif (t3 < 0) {\n\t\t\t\tt3++;\n\t\t\t}\n\t\t\telse if (t3 > 1) {\n\t\t\t\tt3--;\n\t\t\t}\n\n\t\t\tif (6 * t3 < 1) {\n\t\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t\t}\n\t\t\telse if (2 * t3 < 1) {\n\t\t\t\tval = t2;\n\t\t\t}\n\t\t\telse if (3 * t3 < 2) {\n\t\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tval = t1;\n\t\t\t}\n\n\t\t\trgb[i] = val * 255;\n\t\t}\n\n\t\treturn rgb;\n\t}\n};\n\n\n//extend rgb\nrgb.hsl = function(rgb) {\n\tvar r = rgb[0]/255,\n\t\t\tg = rgb[1]/255,\n\t\t\tb = rgb[2]/255,\n\t\t\tmin = Math.min(r, g, b),\n\t\t\tmax = Math.max(r, g, b),\n\t\t\tdelta = max - min,\n\t\t\th, s, l;\n\n\tif (max === min) {\n\t\th = 0;\n\t}\n\telse if (r === max) {\n\t\th = (g - b) / delta;\n\t}\n\telse if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t}\n\telse if (b === max) {\n\t\th = 4 + (r - g)/ delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t}\n\telse if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t}\n\telse {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\n\n/***/ }),\n\n/***/ 6866:\n/***/ (function(module) {\n\n\"use strict\";\n/**\n * RGB space.\n *\n * @module  color-space/rgb\n */\n\n\nmodule.exports = {\n\tname: 'rgb',\n\tmin: [0,0,0],\n\tmax: [255,255,255],\n\tchannel: ['red', 'green', 'blue'],\n\talias: ['RGB']\n};\n\n\n/***/ }),\n\n/***/ 24138:\n/***/ (function(module) {\n\nmodule.exports = {\n  AFG: 'afghan',\n  ALA: '\\\\b\\\\wland',\n  ALB: 'albania',\n  DZA: 'algeria',\n  ASM: '^(?=.*americ).*samoa',\n  AND: 'andorra',\n  AGO: 'angola',\n  AIA: 'anguill?a',\n  ATA: 'antarctica',\n  ATG: 'antigua',\n  ARG: 'argentin',\n  ARM: 'armenia',\n  ABW: '^(?!.*bonaire).*\\\\baruba',\n  AUS: 'australia',\n  AUT: '^(?!.*hungary).*austria|\\\\baustri.*\\\\bemp',\n  AZE: 'azerbaijan',\n  BHS: 'bahamas',\n  BHR: 'bahrain',\n  BGD: 'bangladesh|^(?=.*east).*paki?stan',\n  BRB: 'barbados',\n  BLR: 'belarus|byelo',\n  BEL: '^(?!.*luxem).*belgium',\n  BLZ: 'belize|^(?=.*british).*honduras',\n  BEN: 'benin|dahome',\n  BMU: 'bermuda',\n  BTN: 'bhutan',\n  BOL: 'bolivia',\n  BES: '^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\\\bbes.?islands',\n  BIH: 'herzegovina|bosnia',\n  BWA: 'botswana|bechuana',\n  BVT: 'bouvet',\n  BRA: 'brazil',\n  IOT: 'british.?indian.?ocean',\n  BRN: 'brunei',\n  BGR: 'bulgaria',\n  BFA: 'burkina|\\\\bfaso|upper.?volta',\n  BDI: 'burundi',\n  CPV: 'verde',\n  KHM: 'cambodia|kampuchea|khmer',\n  CMR: 'cameroon',\n  CAN: 'canada',\n  CYM: 'cayman',\n  CAF: '\\\\bcentral.african.republic',\n  TCD: '\\\\bchad',\n  CHL: '\\\\bchile',\n  CHN: '^(?!.*\\\\bmac)(?!.*\\\\bhong)(?!.*\\\\btai)(?!.*\\\\brep).*china|^(?=.*peo)(?=.*rep).*china',\n  CXR: 'christmas',\n  CCK: '\\\\bcocos|keeling',\n  COL: 'colombia',\n  COM: 'comoro',\n  COG: '^(?!.*\\\\bdem)(?!.*\\\\bd[\\\\.]?r)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\\\bcongo',\n  COK: '\\\\bcook',\n  CRI: 'costa.?rica',\n  CIV: 'ivoire|ivory',\n  HRV: 'croatia',\n  CUB: '\\\\bcuba',\n  CUW: '^(?!.*bonaire).*\\\\bcura(c|ç)ao',\n  CYP: 'cyprus',\n  CSK: 'czechoslovakia',\n  CZE: '^(?=.*rep).*czech|czechia|bohemia',\n  COD: '\\\\bdem.*congo|congo.*\\\\bdem|congo.*\\\\bd[\\\\.]?r|\\\\bd[\\\\.]?r.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc',\n  DNK: 'denmark',\n  DJI: 'djibouti',\n  DMA: 'dominica(?!n)',\n  DOM: 'dominican.rep',\n  ECU: 'ecuador',\n  EGY: 'egypt',\n  SLV: 'el.?salvador',\n  GNQ: 'guine.*eq|eq.*guine|^(?=.*span).*guinea',\n  ERI: 'eritrea',\n  EST: 'estonia',\n  ETH: 'ethiopia|abyssinia',\n  FLK: 'falkland|malvinas',\n  FRO: 'faroe|faeroe',\n  FJI: 'fiji',\n  FIN: 'finland',\n  FRA: '^(?!.*\\\\bdep)(?!.*martinique).*france|french.?republic|\\\\bgaul',\n  GUF: '^(?=.*french).*guiana',\n  PYF: 'french.?polynesia|tahiti',\n  ATF: 'french.?southern',\n  GAB: 'gabon',\n  GMB: 'gambia',\n  GEO: '^(?!.*south).*georgia',\n  DDR: 'german.?democratic.?republic|democratic.?republic.*germany|east.germany',\n  DEU: '^(?!.*east).*germany|^(?=.*\\\\bfed.*\\\\brep).*german',\n  GHA: 'ghana|gold.?coast',\n  GIB: 'gibraltar',\n  GRC: 'greece|hellenic|hellas',\n  GRL: 'greenland',\n  GRD: 'grenada',\n  GLP: 'guadeloupe',\n  GUM: '\\\\bguam',\n  GTM: 'guatemala',\n  GGY: 'guernsey',\n  GIN: '^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea',\n  GNB: 'bissau|^(?=.*portu).*guinea',\n  GUY: 'guyana|british.?guiana',\n  HTI: 'haiti',\n  HMD: 'heard.*mcdonald',\n  VAT: 'holy.?see|vatican|papal.?st',\n  HND: '^(?!.*brit).*honduras',\n  HKG: 'hong.?kong',\n  HUN: '^(?!.*austr).*hungary',\n  ISL: 'iceland',\n  IND: 'india(?!.*ocea)',\n  IDN: 'indonesia',\n  IRN: '\\\\biran|persia',\n  IRQ: '\\\\biraq|mesopotamia',\n  IRL: '(^ireland)|(^republic.*ireland)',\n  IMN: '^(?=.*isle).*\\\\bman',\n  ISR: 'israel',\n  ITA: 'italy',\n  JAM: 'jamaica',\n  JPN: 'japan',\n  JEY: 'jersey',\n  JOR: 'jordan',\n  KAZ: 'kazak',\n  KEN: 'kenya|british.?east.?africa|east.?africa.?prot',\n  KIR: 'kiribati',\n  PRK: '^(?=.*democrat|people|north|d.*p.*.r).*\\\\bkorea|dprk|korea.*(d.*p.*r)',\n  KWT: 'kuwait',\n  KGZ: 'kyrgyz|kirghiz',\n  LAO: '\\\\blaos?\\\\b',\n  LVA: 'latvia',\n  LBN: 'lebanon',\n  LSO: 'lesotho|basuto',\n  LBR: 'liberia',\n  LBY: 'libya',\n  LIE: 'liechtenstein',\n  LTU: 'lithuania',\n  LUX: '^(?!.*belg).*luxem',\n  MAC: 'maca(o|u)',\n  MDG: 'madagascar|malagasy',\n  MWI: 'malawi|nyasa',\n  MYS: 'malaysia',\n  MDV: 'maldive',\n  MLI: '\\\\bmali\\\\b',\n  MLT: '\\\\bmalta',\n  MHL: 'marshall',\n  MTQ: 'martinique',\n  MRT: 'mauritania',\n  MUS: 'mauritius',\n  MYT: '\\\\bmayotte',\n  MEX: '\\\\bmexic',\n  FSM: 'fed.*micronesia|micronesia.*fed',\n  MCO: 'monaco',\n  MNG: 'mongolia',\n  MNE: '^(?!.*serbia).*montenegro',\n  MSR: 'montserrat',\n  MAR: 'morocco|\\\\bmaroc',\n  MOZ: 'mozambique',\n  MMR: 'myanmar|burma',\n  NAM: 'namibia',\n  NRU: 'nauru',\n  NPL: 'nepal',\n  NLD: '^(?!.*\\\\bant)(?!.*\\\\bcarib).*netherlands',\n  ANT: '^(?=.*\\\\bant).*(nether|dutch)',\n  NCL: 'new.?caledonia',\n  NZL: 'new.?zealand',\n  NIC: 'nicaragua',\n  NER: '\\\\bniger(?!ia)',\n  NGA: 'nigeria',\n  NIU: 'niue',\n  NFK: 'norfolk',\n  MNP: 'mariana',\n  NOR: 'norway',\n  OMN: '\\\\boman|trucial',\n  PAK: '^(?!.*east).*paki?stan',\n  PLW: 'palau',\n  PSE: 'palestin|\\\\bgaza|west.?bank',\n  PAN: 'panama',\n  PNG: 'papua|new.?guinea',\n  PRY: 'paraguay',\n  PER: 'peru',\n  PHL: 'philippines',\n  PCN: 'pitcairn',\n  POL: 'poland',\n  PRT: 'portugal',\n  PRI: 'puerto.?rico',\n  QAT: 'qatar',\n  KOR: '^(?!.*d.*p.*r)(?!.*democrat)(?!.*people)(?!.*north).*\\\\bkorea(?!.*d.*p.*r)',\n  MDA: 'moldov|b(a|e)ssarabia',\n  REU: 'r(e|é)union',\n  ROU: 'r(o|u|ou)mania',\n  RUS: '\\\\brussia|soviet.?union|u\\\\.?s\\\\.?s\\\\.?r|socialist.?republics',\n  RWA: 'rwanda',\n  BLM: 'barth(e|é)lemy',\n  SHN: 'helena',\n  KNA: 'kitts|\\\\bnevis',\n  LCA: '\\\\blucia',\n  MAF: '^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)',\n  SPM: 'miquelon',\n  VCT: 'vincent',\n  WSM: '^(?!.*amer).*samoa',\n  SMR: 'san.?marino',\n  STP: '\\\\bs(a|ã)o.?tom(e|é)',\n  SAU: '\\\\bsa\\\\w*.?arabia',\n  SEN: 'senegal',\n  SRB: '^(?!.*monte).*serbia',\n  SYC: 'seychell',\n  SLE: 'sierra',\n  SGP: 'singapore',\n  SXM: '^(?!.*martin)(?!.*saba).*maarten',\n  SVK: '^(?!.*cze).*slovak',\n  SVN: 'slovenia',\n  SLB: 'solomon',\n  SOM: 'somali',\n  ZAF: 'south.africa|s\\\\\\\\..?africa',\n  SGS: 'south.?georgia|sandwich',\n  SSD: '\\\\bs\\\\w*.?sudan',\n  ESP: 'spain',\n  LKA: 'sri.?lanka|ceylon',\n  SDN: '^(?!.*\\\\bs(?!u)).*sudan',\n  SUR: 'surinam|dutch.?guiana',\n  SJM: 'svalbard',\n  SWZ: 'swaziland',\n  SWE: 'sweden',\n  CHE: 'switz|swiss',\n  SYR: 'syria',\n  TWN: 'taiwan|taipei|formosa|^(?!.*peo)(?=.*rep).*china',\n  TJK: 'tajik',\n  THA: 'thailand|\\\\bsiam',\n  MKD: 'macedonia|fyrom',\n  TLS: '^(?=.*leste).*timor|^(?=.*east).*timor',\n  TGO: 'togo',\n  TKL: 'tokelau',\n  TON: 'tonga',\n  TTO: 'trinidad|tobago',\n  TUN: 'tunisia',\n  TUR: 'turkey',\n  TKM: 'turkmen',\n  TCA: 'turks',\n  TUV: 'tuvalu',\n  UGA: 'uganda',\n  UKR: 'ukrain',\n  ARE: 'emirates|^u\\\\.?a\\\\.?e\\\\.?$|united.?arab.?em',\n  GBR: 'united.?kingdom|britain|^u\\\\.?k\\\\.?$',\n  TZA: 'tanzania',\n  USA: 'united.?states\\\\b(?!.*islands)|\\\\bu\\\\.?s\\\\.?a\\\\.?\\\\b|^\\\\s*u\\\\.?s\\\\.?\\\\b(?!.*islands)',\n  UMI: 'minor.?outlying.?is',\n  URY: 'uruguay',\n  UZB: 'uzbek',\n  VUT: 'vanuatu|new.?hebrides',\n  VEN: 'venezuela',\n  VNM: '^(?!.*republic).*viet.?nam|^(?=.*socialist).*viet.?nam',\n  VGB: '^(?=.*\\\\bu\\\\.?\\\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin',\n  VIR: '^(?=.*\\\\bu\\\\.?\\\\s?s).*virgin|^(?=.*states).*virgin',\n  WLF: 'futuna|wallis',\n  ESH: 'western.sahara',\n  YEM: '^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\\\bp\\\\.?d\\\\.?r).*yemen',\n  YMD: '^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\\\bp\\\\.?d\\\\.?r).*yemen',\n  YUG: 'yugoslavia',\n  ZMB: 'zambia|northern.?rhodesia',\n  EAZ: 'zanzibar',\n  ZWE: 'zimbabwe|^(?!.*northern).*rhodesia'\n}\n\n\n/***/ }),\n\n/***/ 72791:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5289969__) {\n\n\"use strict\";\n﻿\r\n\r\nmodule.exports = {\r\n\tparse: __nested_webpack_require_5289969__(41004),\r\n\tstringify: __nested_webpack_require_5289969__(53313)\r\n}\r\n\n\n/***/ }),\n\n/***/ 63625:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5290188__) {\n\n\"use strict\";\n\r\n\r\nvar sizes = __nested_webpack_require_5290188__(40402)\r\n\r\nmodule.exports = {\r\n\tisSize: function isSize(value) {\r\n\t\treturn /^[\\d\\.]/.test(value)\r\n\t\t\t|| value.indexOf('/') !== -1\r\n\t\t\t|| sizes.indexOf(value) !== -1\r\n\t}\r\n}\r\n\n\n/***/ }),\n\n/***/ 41004:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5290510__) {\n\n\"use strict\";\n\r\n\r\nvar unquote = __nested_webpack_require_5290510__(90448)\r\nvar globalKeywords = __nested_webpack_require_5290510__(38732)\r\nvar systemFontKeywords = __nested_webpack_require_5290510__(41901)\r\nvar fontWeightKeywords = __nested_webpack_require_5290510__(15659)\r\nvar fontStyleKeywords = __nested_webpack_require_5290510__(96209)\r\nvar fontStretchKeywords = __nested_webpack_require_5290510__(83794)\r\nvar splitBy = __nested_webpack_require_5290510__(99011)\r\nvar isSize = (__nested_webpack_require_5290510__(63625).isSize)\r\n\r\n\r\nmodule.exports = parseFont\r\n\r\n\r\nvar cache = parseFont.cache = {}\r\n\r\n\r\nfunction parseFont (value) {\r\n\tif (typeof value !== 'string') throw new Error('Font argument must be a string.')\r\n\r\n\tif (cache[value]) return cache[value]\r\n\r\n\tif (value === '') {\r\n\t\tthrow new Error('Cannot parse an empty string.')\r\n\t}\r\n\r\n\tif (systemFontKeywords.indexOf(value) !== -1) {\r\n\t\treturn cache[value] = {system: value}\r\n\t}\r\n\r\n\tvar font = {\r\n\t\tstyle: 'normal',\r\n\t\tvariant: 'normal',\r\n\t\tweight: 'normal',\r\n\t\tstretch: 'normal',\r\n\t\tlineHeight: 'normal',\r\n\t\tsize: '1rem',\r\n\t\tfamily: ['serif']\r\n\t}\r\n\r\n\tvar tokens = splitBy(value, /\\s+/)\r\n\tvar token\r\n\r\n\twhile (token = tokens.shift()) {\r\n\t\tif (globalKeywords.indexOf(token) !== -1) {\r\n\t\t\t['style', 'variant', 'weight', 'stretch'].forEach(function(prop) {\r\n\t\t\t\tfont[prop] = token\r\n\t\t\t})\r\n\r\n\t\t\treturn cache[value] = font\r\n\t\t}\r\n\r\n\t\tif (fontStyleKeywords.indexOf(token) !== -1) {\r\n\t\t\tfont.style = token\r\n\t\t\tcontinue\r\n\t\t}\r\n\r\n\t\tif (token === 'normal' || token === 'small-caps') {\r\n\t\t\tfont.variant = token\r\n\t\t\tcontinue\r\n\t\t}\r\n\r\n\t\tif (fontStretchKeywords.indexOf(token) !== -1) {\r\n\t\t\tfont.stretch = token\r\n\t\t\tcontinue\r\n\t\t}\r\n\r\n\t\tif (fontWeightKeywords.indexOf(token) !== -1) {\r\n\t\t\tfont.weight = token\r\n\t\t\tcontinue\r\n\t\t}\r\n\r\n\r\n\t\tif (isSize(token)) {\r\n\t\t\tvar parts = splitBy(token, '/')\r\n\t\t\tfont.size = parts[0]\r\n\t\t\tif (parts[1] != null) {\r\n\t\t\t\tfont.lineHeight = parseLineHeight(parts[1])\r\n\t\t\t}\r\n\t\t\telse if (tokens[0] === '/') {\r\n\t\t\t\ttokens.shift()\r\n\t\t\t\tfont.lineHeight = parseLineHeight(tokens.shift())\r\n \t\t\t}\r\n\r\n\t\t\tif (!tokens.length) {\r\n\t\t\t\tthrow new Error('Missing required font-family.')\r\n\t\t\t}\r\n\t\t\tfont.family = splitBy(tokens.join(' '), /\\s*,\\s*/).map(unquote)\r\n\r\n\t\t\treturn cache[value] = font\r\n\t\t}\r\n\r\n\t\tthrow new Error('Unknown or unsupported font token: ' + token)\r\n\t}\r\n\r\n\tthrow new Error('Missing required font-size.')\r\n}\r\n\r\n\r\nfunction parseLineHeight(value) {\r\n\tvar parsed = parseFloat(value)\r\n\tif (parsed.toString() === value) {\r\n\t\treturn parsed\r\n\t}\r\n\treturn value\r\n}\r\n\n\n/***/ }),\n\n/***/ 53313:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5293015__) {\n\n\"use strict\";\n\r\n\r\nvar pick = __nested_webpack_require_5293015__(71299)\r\nvar isSize = (__nested_webpack_require_5293015__(63625).isSize)\r\n\r\nvar globals = a2o(__nested_webpack_require_5293015__(38732))\r\nvar systems = a2o(__nested_webpack_require_5293015__(41901))\r\nvar weights = a2o(__nested_webpack_require_5293015__(15659))\r\nvar styles = a2o(__nested_webpack_require_5293015__(96209))\r\nvar stretches = a2o(__nested_webpack_require_5293015__(83794))\r\n\r\nvar variants = {'normal': 1, 'small-caps': 1}\r\nvar fams = {\r\n\t'serif': 1,\r\n\t'sans-serif': 1,\r\n\t'monospace': 1,\r\n\t'cursive': 1,\r\n\t'fantasy': 1,\r\n\t'system-ui': 1\r\n}\r\n\r\nvar defaults = {\r\n\tstyle: 'normal',\r\n\tvariant: 'normal',\r\n\tweight: 'normal',\r\n\tstretch: 'normal',\r\n\tsize: '1rem',\r\n\tlineHeight: 'normal',\r\n\tfamily: 'serif'\r\n}\r\n\r\nmodule.exports = function stringifyFont (o) {\r\n\to = pick(o, {\r\n\t\tstyle: 'style fontstyle fontStyle font-style slope distinction',\r\n\t\tvariant: 'variant font-variant fontVariant fontvariant var capitalization',\r\n\t\tweight: 'weight w font-weight fontWeight fontweight',\r\n\t\tstretch: 'stretch font-stretch fontStretch fontstretch width',\r\n\t\tsize: 'size s font-size fontSize fontsize height em emSize',\r\n\t\tlineHeight: 'lh line-height lineHeight lineheight leading',\r\n\t\tfamily: 'font family fontFamily font-family fontfamily type typeface face',\r\n\t\tsystem: 'system reserved default global',\r\n\t})\r\n\r\n\tif (o.system) {\r\n\t\tif (o.system) verify(o.system, systems)\r\n\t\treturn o.system\r\n\t}\r\n\r\n\tverify(o.style, styles)\r\n\tverify(o.variant, variants)\r\n\tverify(o.weight, weights)\r\n\tverify(o.stretch, stretches)\r\n\r\n\t// default root value is medium, but by default it's inherited\r\n\tif (o.size == null) o.size = defaults.size\r\n\tif (typeof o.size === 'number') o.size += 'px'\r\n\r\n\tif (!isSize) throw Error('Bad size value `' + o.size + '`')\r\n\r\n\t// many user-agents use serif, we don't detect that for consistency\r\n\tif (!o.family) o.family = defaults.family\r\n\tif (Array.isArray(o.family)) {\r\n\t\tif (!o.family.length) o.family = [defaults.family]\r\n\t\to.family = o.family.map(function (f) {\r\n\t\t\treturn fams[f] ? f : '\"' + f + '\"'\r\n\t\t}).join(', ')\r\n\t}\r\n\r\n\t// [ [ <'font-style'> || <font-variant-css21> || <'font-weight'> || <'font-stretch'> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'> ]\r\n\tvar result = []\r\n\r\n\tresult.push(o.style)\r\n\tif (o.variant !== o.style) result.push(o.variant)\r\n\r\n\tif (o.weight !== o.variant &&\r\n\t\to.weight !== o.style) result.push(o.weight)\r\n\r\n\tif (o.stretch !== o.weight &&\r\n\t\to.stretch !== o.variant &&\r\n\t\to.stretch !== o.style) result.push(o.stretch)\r\n\r\n\tresult.push(o.size + (o.lineHeight == null || o.lineHeight === 'normal' || (o.lineHeight + '' === '1')  ? '' : ('/' + o.lineHeight)))\r\n\tresult.push(o.family)\r\n\r\n\treturn result.filter(Boolean).join(' ')\r\n}\r\n\r\nfunction verify (value, values) {\r\n\tif (value && !values[value] && !globals[value]) throw Error('Unknown keyword `' + value +'`')\r\n\r\n\treturn value\r\n}\r\n\r\n\r\n// ['a', 'b'] -> {a: true, b: true}\r\nfunction a2o (a) {\r\n\tvar o = {}\r\n\tfor (var i = 0; i < a.length; i++) {\r\n\t\to[a[i]] = 1\r\n\t}\r\n\treturn o\r\n}\r\n\n\n/***/ }),\n\n/***/ 55174:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5296056__) {\n\n\"use strict\";\n\n\nvar isValue             = __nested_webpack_require_5296056__(24582)\n  , ensureValue         = __nested_webpack_require_5296056__(10424)\n  , ensurePlainFunction = __nested_webpack_require_5296056__(82527)\n  , copy                = __nested_webpack_require_5296056__(19012)\n  , normalizeOptions    = __nested_webpack_require_5296056__(21780)\n  , map                 = __nested_webpack_require_5296056__(16906);\n\nvar bind = Function.prototype.bind\n  , defineProperty = Object.defineProperty\n  , hasOwnProperty = Object.prototype.hasOwnProperty\n  , define;\n\ndefine = function (name, desc, options) {\n\tvar value = ensureValue(desc) && ensurePlainFunction(desc.value), dgs;\n\tdgs = copy(desc);\n\tdelete dgs.writable;\n\tdelete dgs.value;\n\tdgs.get = function () {\n\t\tif (!options.overwriteDefinition && hasOwnProperty.call(this, name)) return value;\n\t\tdesc.value = bind.call(value, options.resolveContext ? options.resolveContext(this) : this);\n\t\tdefineProperty(this, name, desc);\n\t\treturn this[name];\n\t};\n\treturn dgs;\n};\n\nmodule.exports = function (props/*, options*/) {\n\tvar options = normalizeOptions(arguments[1]);\n\tif (isValue(options.resolveContext)) ensurePlainFunction(options.resolveContext);\n\treturn map(props, function (desc, name) { return define(name, desc, options); });\n};\n\n\n/***/ }),\n\n/***/ 62072:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5297358__) {\n\n\"use strict\";\n\n\nvar isValue         = __nested_webpack_require_5297358__(24582)\n  , isPlainFunction = __nested_webpack_require_5297358__(84985)\n  , assign          = __nested_webpack_require_5297358__(95879)\n  , normalizeOpts   = __nested_webpack_require_5297358__(21780)\n  , contains        = __nested_webpack_require_5297358__(66741);\n\nvar d = (module.exports = function (dscr, value/*, options*/) {\n\tvar c, e, w, options, desc;\n\tif (arguments.length < 2 || typeof dscr !== \"string\") {\n\t\toptions = value;\n\t\tvalue = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[2];\n\t}\n\tif (isValue(dscr)) {\n\t\tc = contains.call(dscr, \"c\");\n\t\te = contains.call(dscr, \"e\");\n\t\tw = contains.call(dscr, \"w\");\n\t} else {\n\t\tc = w = true;\n\t\te = false;\n\t}\n\n\tdesc = { value: value, configurable: c, enumerable: e, writable: w };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n});\n\nd.gs = function (dscr, get, set/*, options*/) {\n\tvar c, e, options, desc;\n\tif (typeof dscr !== \"string\") {\n\t\toptions = set;\n\t\tset = get;\n\t\tget = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[3];\n\t}\n\tif (!isValue(get)) {\n\t\tget = undefined;\n\t} else if (!isPlainFunction(get)) {\n\t\toptions = get;\n\t\tget = set = undefined;\n\t} else if (!isValue(set)) {\n\t\tset = undefined;\n\t} else if (!isPlainFunction(set)) {\n\t\toptions = set;\n\t\tset = undefined;\n\t}\n\tif (isValue(dscr)) {\n\t\tc = contains.call(dscr, \"c\");\n\t\te = contains.call(dscr, \"e\");\n\t} else {\n\t\tc = true;\n\t\te = false;\n\t}\n\n\tdesc = { get: get, set: set, configurable: c, enumerable: e };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n\n\n/***/ }),\n\n/***/ 33064:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5298978__) {\n\n\"use strict\";\n\n// EXPORTS\n__nested_webpack_require_5298978__.d(__webpack_exports__, {\n  \"j2\": function() { return /* reexport */ src_ascending; },\n  \"Fp\": function() { return /* reexport */ max; },\n  \"J6\": function() { return /* reexport */ mean; },\n  \"TS\": function() { return /* reexport */ merge; },\n  \"VV\": function() { return /* reexport */ min; },\n  \"w6\": function() { return /* reexport */ src_range; },\n  \"Sm\": function() { return /* reexport */ sum; }\n});\n\n// UNUSED EXPORTS: bisect, bisectLeft, bisectRight, bisector, cross, descending, deviation, extent, histogram, median, pairs, permute, quantile, scan, shuffle, thresholdFreedmanDiaconis, thresholdScott, thresholdSturges, tickIncrement, tickStep, ticks, transpose, variance, zip\n\n;// CONCATENATED MODULE: ./node_modules/d3-array/src/ascending.js\n/* harmony default export */ function src_ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-array/src/bisector.js\n\n\n/* harmony default export */ function bisector(compare) {\n  if (compare.length === 1) compare = ascendingComparator(compare);\n  return {\n    left: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      }\n      return lo;\n    },\n    right: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) > 0) hi = mid;\n        else lo = mid + 1;\n      }\n      return lo;\n    }\n  };\n}\n\nfunction ascendingComparator(f) {\n  return function(d, x) {\n    return src_ascending(f(d), x);\n  };\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-array/src/bisect.js\n\n\n\nvar ascendingBisect = bisector(src_ascending);\nvar bisectRight = ascendingBisect.right;\nvar bisectLeft = ascendingBisect.left;\n/* harmony default export */ var src_bisect = ((/* unused pure expression or super */ null && (0)));\n\n;// CONCATENATED MODULE: ./node_modules/d3-array/src/array.js\nvar array = Array.prototype;\n\nvar array_slice = array.slice;\nvar array_map = array.map;\n\n;// CONCATENATED MODULE: ./node_modules/d3-array/src/ticks.js\nvar e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\n/* harmony default export */ function ticks(start, stop, count) {\n  var reverse,\n      i = -1,\n      n,\n      ticks,\n      step;\n\n  stop = +stop, start = +start, count = +count;\n  if (start === stop && count > 0) return [start];\n  if (reverse = stop < start) n = start, start = stop, stop = n;\n  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n  if (step > 0) {\n    start = Math.ceil(start / step);\n    stop = Math.floor(stop / step);\n    ticks = new Array(n = Math.ceil(stop - start + 1));\n    while (++i < n) ticks[i] = (start + i) * step;\n  } else {\n    start = Math.floor(start * step);\n    stop = Math.ceil(stop * step);\n    ticks = new Array(n = Math.ceil(start - stop + 1));\n    while (++i < n) ticks[i] = (start - i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\nfunction tickIncrement(start, stop, count) {\n  var step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log(step) / Math.LN10),\n      error = step / Math.pow(10, power);\n  return power >= 0\n      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nfunction ticks_tickStep(start, stop, count) {\n  var step0 = Math.abs(stop - start) / Math.max(0, count),\n      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n      error = step0 / step1;\n  if (error >= e10) step1 *= 10;\n  else if (error >= e5) step1 *= 5;\n  else if (error >= e2) step1 *= 2;\n  return stop < start ? -step1 : step1;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-array/src/histogram.js\n\n\n\n\n\n\n\n\n\n/* harmony default export */ function histogram() {\n  var value = identity,\n      domain = extent,\n      threshold = sturges;\n\n  function histogram(data) {\n    var i,\n        n = data.length,\n        x,\n        values = new Array(n);\n\n    for (i = 0; i < n; ++i) {\n      values[i] = value(data[i], i, data);\n    }\n\n    var xz = domain(values),\n        x0 = xz[0],\n        x1 = xz[1],\n        tz = threshold(values, x0, x1);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      tz = tickStep(x0, x1, tz);\n      tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n    }\n\n    // Remove any thresholds outside the domain.\n    var m = tz.length;\n    while (tz[0] <= x0) tz.shift(), --m;\n    while (tz[m - 1] > x1) tz.pop(), --m;\n\n    var bins = new Array(m + 1),\n        bin;\n\n    // Initialize bins.\n    for (i = 0; i <= m; ++i) {\n      bin = bins[i] = [];\n      bin.x0 = i > 0 ? tz[i - 1] : x0;\n      bin.x1 = i < m ? tz[i] : x1;\n    }\n\n    // Assign data to bins by value, ignoring any outside the domain.\n    for (i = 0; i < n; ++i) {\n      x = values[i];\n      if (x0 <= x && x <= x1) {\n        bins[bisect(tz, x, 0, m)].push(data[i]);\n      }\n    }\n\n    return bins;\n  }\n\n  histogram.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n  };\n\n  histogram.domain = function(_) {\n    return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n  };\n\n  histogram.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n  };\n\n  return histogram;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-array/src/threshold/freedmanDiaconis.js\n\n\n\n\n\n/* harmony default export */ function freedmanDiaconis(values, min, max) {\n  values = map.call(values, number).sort(ascending);\n  return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-array/src/max.js\n/* harmony default export */ function max(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      max;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null && value > max) {\n            max = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null && value > max) {\n            max = value;\n          }\n        }\n      }\n    }\n  }\n\n  return max;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-array/src/number.js\n/* harmony default export */ function src_number(x) {\n  return x === null ? NaN : +x;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-array/src/mean.js\n\n\n/* harmony default export */ function mean(values, valueof) {\n  var n = values.length,\n      m = n,\n      i = -1,\n      value,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (!isNaN(value = src_number(values[i]))) sum += value;\n      else --m;\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (!isNaN(value = src_number(valueof(values[i], i, values)))) sum += value;\n      else --m;\n    }\n  }\n\n  if (m) return sum / m;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-array/src/merge.js\n/* harmony default export */ function merge(arrays) {\n  var n = arrays.length,\n      m,\n      i = -1,\n      j = 0,\n      merged,\n      array;\n\n  while (++i < n) j += arrays[i].length;\n  merged = new Array(j);\n\n  while (--n >= 0) {\n    array = arrays[n];\n    m = array.length;\n    while (--m >= 0) {\n      merged[--j] = array[m];\n    }\n  }\n\n  return merged;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-array/src/min.js\n/* harmony default export */ function min(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      min;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        min = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null && min > value) {\n            min = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        min = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null && min > value) {\n            min = value;\n          }\n        }\n      }\n    }\n  }\n\n  return min;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-array/src/range.js\n/* harmony default export */ function src_range(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-array/src/sum.js\n/* harmony default export */ function sum(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (value = +valueof(values[i], i, values)) sum += value;\n    }\n  }\n\n  return sum;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-array/src/index.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/***/ }),\n\n/***/ 15140:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5309077__) {\n\n\"use strict\";\n\n// EXPORTS\n__nested_webpack_require_5309077__.d(__webpack_exports__, {\n  \"UI\": function() { return /* reexport */ src_map; },\n  \"b1\": function() { return /* reexport */ nest; }\n});\n\n// UNUSED EXPORTS: entries, keys, set, values\n\n;// CONCATENATED MODULE: ./node_modules/d3-collection/src/map.js\nvar prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n  constructor: Map,\n  has: function(key) {\n    return (prefix + key) in this;\n  },\n  get: function(key) {\n    return this[prefix + key];\n  },\n  set: function(key, value) {\n    this[prefix + key] = value;\n    return this;\n  },\n  remove: function(key) {\n    var property = prefix + key;\n    return property in this && delete this[property];\n  },\n  clear: function() {\n    for (var property in this) if (property[0] === prefix) delete this[property];\n  },\n  keys: function() {\n    var keys = [];\n    for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n    return keys;\n  },\n  values: function() {\n    var values = [];\n    for (var property in this) if (property[0] === prefix) values.push(this[property]);\n    return values;\n  },\n  entries: function() {\n    var entries = [];\n    for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n    return entries;\n  },\n  size: function() {\n    var size = 0;\n    for (var property in this) if (property[0] === prefix) ++size;\n    return size;\n  },\n  empty: function() {\n    for (var property in this) if (property[0] === prefix) return false;\n    return true;\n  },\n  each: function(f) {\n    for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n  }\n};\n\nfunction map(object, f) {\n  var map = new Map;\n\n  // Copy constructor.\n  if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n  // Index array by numeric index or specified key function.\n  else if (Array.isArray(object)) {\n    var i = -1,\n        n = object.length,\n        o;\n\n    if (f == null) while (++i < n) map.set(i, object[i]);\n    else while (++i < n) map.set(f(o = object[i], i, object), o);\n  }\n\n  // Convert object to map.\n  else if (object) for (var key in object) map.set(key, object[key]);\n\n  return map;\n}\n\n/* harmony default export */ var src_map = (map);\n\n;// CONCATENATED MODULE: ./node_modules/d3-collection/src/nest.js\n\n\n/* harmony default export */ function nest() {\n  var keys = [],\n      sortKeys = [],\n      sortValues,\n      rollup,\n      nest;\n\n  function apply(array, depth, createResult, setResult) {\n    if (depth >= keys.length) {\n      if (sortValues != null) array.sort(sortValues);\n      return rollup != null ? rollup(array) : array;\n    }\n\n    var i = -1,\n        n = array.length,\n        key = keys[depth++],\n        keyValue,\n        value,\n        valuesByKey = src_map(),\n        values,\n        result = createResult();\n\n    while (++i < n) {\n      if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n        values.push(value);\n      } else {\n        valuesByKey.set(keyValue, [value]);\n      }\n    }\n\n    valuesByKey.each(function(values, key) {\n      setResult(result, key, apply(values, depth, createResult, setResult));\n    });\n\n    return result;\n  }\n\n  function entries(map, depth) {\n    if (++depth > keys.length) return map;\n    var array, sortKey = sortKeys[depth - 1];\n    if (rollup != null && depth >= keys.length) array = map.entries();\n    else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n    return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n  }\n\n  return nest = {\n    object: function(array) { return apply(array, 0, createObject, setObject); },\n    map: function(array) { return apply(array, 0, createMap, setMap); },\n    entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n    key: function(d) { keys.push(d); return nest; },\n    sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n    sortValues: function(order) { sortValues = order; return nest; },\n    rollup: function(f) { rollup = f; return nest; }\n  };\n}\n\nfunction createObject() {\n  return {};\n}\n\nfunction setObject(object, key, value) {\n  object[key] = value;\n}\n\nfunction createMap() {\n  return src_map();\n}\n\nfunction setMap(map, key, value) {\n  map.set(key, value);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-collection/src/set.js\n\n\nfunction Set() {}\n\nvar proto = src_map.prototype;\n\nSet.prototype = set.prototype = {\n  constructor: Set,\n  has: proto.has,\n  add: function(value) {\n    value += \"\";\n    this[prefix + value] = value;\n    return this;\n  },\n  remove: proto.remove,\n  clear: proto.clear,\n  values: proto.keys,\n  size: proto.size,\n  empty: proto.empty,\n  each: proto.each\n};\n\nfunction set(object, f) {\n  var set = new Set;\n\n  // Copy constructor.\n  if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n  // Otherwise, assume it’s an array.\n  else if (object) {\n    var i = -1, n = object.length;\n    if (f == null) while (++i < n) set.add(object[i]);\n    else while (++i < n) set.add(f(object[i], i, object));\n  }\n\n  return set;\n}\n\n/* harmony default export */ var src_set = ((/* unused pure expression or super */ null && (0)));\n\n;// CONCATENATED MODULE: ./node_modules/d3-collection/src/index.js\n\n\n\n\n\n\n\n\n/***/ }),\n\n/***/ 49887:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5314558__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__nested_webpack_require_5314558__.r(__webpack_exports__);\n\n// EXPORTS\n__nested_webpack_require_5314558__.d(__webpack_exports__, {\n  \"forceCenter\": function() { return /* reexport */ center; },\n  \"forceCollide\": function() { return /* reexport */ collide; },\n  \"forceLink\": function() { return /* reexport */ src_link; },\n  \"forceManyBody\": function() { return /* reexport */ manyBody; },\n  \"forceRadial\": function() { return /* reexport */ radial; },\n  \"forceSimulation\": function() { return /* reexport */ simulation; },\n  \"forceX\": function() { return /* reexport */ src_x; },\n  \"forceY\": function() { return /* reexport */ src_y; }\n});\n\n;// CONCATENATED MODULE: ./node_modules/d3-force/src/center.js\n/* harmony default export */ function center(x, y) {\n  var nodes;\n\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force() {\n    var i,\n        n = nodes.length,\n        node,\n        sx = 0,\n        sy = 0;\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i], sx += node.x, sy += node.y;\n    }\n\n    for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n      node = nodes[i], node.x -= sx, node.y -= sy;\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  return force;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-force/src/constant.js\n/* harmony default export */ function constant(x) {\n  return function() {\n    return x;\n  };\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-force/src/jiggle.js\n/* harmony default export */ function jiggle() {\n  return (Math.random() - 0.5) * 1e-6;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/add.js\n/* harmony default export */ function add(d) {\n  var x = +this._x.call(null, d),\n      y = +this._y.call(null, d);\n  return add_add(this.cover(x, y), x, y, d);\n}\n\nfunction add_add(tree, x, y, d) {\n  if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n  var parent,\n      node = tree._root,\n      leaf = {data: d},\n      x0 = tree._x0,\n      y0 = tree._y0,\n      x1 = tree._x1,\n      y1 = tree._y1,\n      xm,\n      ym,\n      xp,\n      yp,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return tree._root = leaf, tree;\n\n  // Find the existing leaf for the new point, or add it.\n  while (node.length) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n  }\n\n  // Is the new point is exactly coincident with the existing point?\n  xp = +tree._x.call(null, node.data);\n  yp = +tree._y.call(null, node.data);\n  if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n  // Otherwise, split the leaf node until the old and new point are separated.\n  do {\n    parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n  } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n  return parent[j] = node, parent[i] = leaf, tree;\n}\n\nfunction addAll(data) {\n  var d, i, n = data.length,\n      x,\n      y,\n      xz = new Array(n),\n      yz = new Array(n),\n      x0 = Infinity,\n      y0 = Infinity,\n      x1 = -Infinity,\n      y1 = -Infinity;\n\n  // Compute the points and their extent.\n  for (i = 0; i < n; ++i) {\n    if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n    xz[i] = x;\n    yz[i] = y;\n    if (x < x0) x0 = x;\n    if (x > x1) x1 = x;\n    if (y < y0) y0 = y;\n    if (y > y1) y1 = y;\n  }\n\n  // If there were no (valid) points, abort.\n  if (x0 > x1 || y0 > y1) return this;\n\n  // Expand the tree to cover the new points.\n  this.cover(x0, y0).cover(x1, y1);\n\n  // Add the new points.\n  for (i = 0; i < n; ++i) {\n    add_add(this, xz[i], yz[i], data[i]);\n  }\n\n  return this;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/cover.js\n/* harmony default export */ function cover(x, y) {\n  if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n  var x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1;\n\n  // If the quadtree has no extent, initialize them.\n  // Integer extent are necessary so that if we later double the extent,\n  // the existing quadrant boundaries don’t change due to floating point error!\n  if (isNaN(x0)) {\n    x1 = (x0 = Math.floor(x)) + 1;\n    y1 = (y0 = Math.floor(y)) + 1;\n  }\n\n  // Otherwise, double repeatedly to cover.\n  else {\n    var z = x1 - x0,\n        node = this._root,\n        parent,\n        i;\n\n    while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n      i = (y < y0) << 1 | (x < x0);\n      parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n      switch (i) {\n        case 0: x1 = x0 + z, y1 = y0 + z; break;\n        case 1: x0 = x1 - z, y1 = y0 + z; break;\n        case 2: x1 = x0 + z, y0 = y1 - z; break;\n        case 3: x0 = x1 - z, y0 = y1 - z; break;\n      }\n    }\n\n    if (this._root && this._root.length) this._root = node;\n  }\n\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  return this;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/data.js\n/* harmony default export */ function data() {\n  var data = [];\n  this.visit(function(node) {\n    if (!node.length) do data.push(node.data); while (node = node.next)\n  });\n  return data;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/extent.js\n/* harmony default export */ function extent(_) {\n  return arguments.length\n      ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n      : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/quad.js\n/* harmony default export */ function quad(node, x0, y0, x1, y1) {\n  this.node = node;\n  this.x0 = x0;\n  this.y0 = y0;\n  this.x1 = x1;\n  this.y1 = y1;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/find.js\n\n\n/* harmony default export */ function find(x, y, radius) {\n  var data,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1,\n      y1,\n      x2,\n      y2,\n      x3 = this._x1,\n      y3 = this._y1,\n      quads = [],\n      node = this._root,\n      q,\n      i;\n\n  if (node) quads.push(new quad(node, x0, y0, x3, y3));\n  if (radius == null) radius = Infinity;\n  else {\n    x0 = x - radius, y0 = y - radius;\n    x3 = x + radius, y3 = y + radius;\n    radius *= radius;\n  }\n\n  while (q = quads.pop()) {\n\n    // Stop searching if this quadrant can’t contain a closer node.\n    if (!(node = q.node)\n        || (x1 = q.x0) > x3\n        || (y1 = q.y0) > y3\n        || (x2 = q.x1) < x0\n        || (y2 = q.y1) < y0) continue;\n\n    // Bisect the current quadrant.\n    if (node.length) {\n      var xm = (x1 + x2) / 2,\n          ym = (y1 + y2) / 2;\n\n      quads.push(\n        new quad(node[3], xm, ym, x2, y2),\n        new quad(node[2], x1, ym, xm, y2),\n        new quad(node[1], xm, y1, x2, ym),\n        new quad(node[0], x1, y1, xm, ym)\n      );\n\n      // Visit the closest quadrant first.\n      if (i = (y >= ym) << 1 | (x >= xm)) {\n        q = quads[quads.length - 1];\n        quads[quads.length - 1] = quads[quads.length - 1 - i];\n        quads[quads.length - 1 - i] = q;\n      }\n    }\n\n    // Visit this point. (Visiting coincident points isn’t necessary!)\n    else {\n      var dx = x - +this._x.call(null, node.data),\n          dy = y - +this._y.call(null, node.data),\n          d2 = dx * dx + dy * dy;\n      if (d2 < radius) {\n        var d = Math.sqrt(radius = d2);\n        x0 = x - d, y0 = y - d;\n        x3 = x + d, y3 = y + d;\n        data = node.data;\n      }\n    }\n  }\n\n  return data;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/remove.js\n/* harmony default export */ function remove(d) {\n  if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n  var parent,\n      node = this._root,\n      retainer,\n      previous,\n      next,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1,\n      x,\n      y,\n      xm,\n      ym,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return this;\n\n  // Find the leaf node for the point.\n  // While descending, also retain the deepest parent with a non-removed sibling.\n  if (node.length) while (true) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n    if (!node.length) break;\n    if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n  }\n\n  // Find the point to remove.\n  while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n  if (next = node.next) delete node.next;\n\n  // If there are multiple coincident points, remove just the point.\n  if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n  // If this is the root point, remove it.\n  if (!parent) return this._root = next, this;\n\n  // Remove this leaf.\n  next ? parent[i] = next : delete parent[i];\n\n  // If the parent now contains exactly one leaf, collapse superfluous parents.\n  if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n      && node === (parent[3] || parent[2] || parent[1] || parent[0])\n      && !node.length) {\n    if (retainer) retainer[j] = node;\n    else this._root = node;\n  }\n\n  return this;\n}\n\nfunction removeAll(data) {\n  for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n  return this;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/root.js\n/* harmony default export */ function root() {\n  return this._root;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/size.js\n/* harmony default export */ function size() {\n  var size = 0;\n  this.visit(function(node) {\n    if (!node.length) do ++size; while (node = node.next)\n  });\n  return size;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/visit.js\n\n\n/* harmony default export */ function visit(callback) {\n  var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n  if (node) quads.push(new quad(node, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n      var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[3]) quads.push(new quad(child, xm, ym, x1, y1));\n      if (child = node[2]) quads.push(new quad(child, x0, ym, xm, y1));\n      if (child = node[1]) quads.push(new quad(child, xm, y0, x1, ym));\n      if (child = node[0]) quads.push(new quad(child, x0, y0, xm, ym));\n    }\n  }\n  return this;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/visitAfter.js\n\n\n/* harmony default export */ function visitAfter(callback) {\n  var quads = [], next = [], q;\n  if (this._root) quads.push(new quad(this._root, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    var node = q.node;\n    if (node.length) {\n      var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[0]) quads.push(new quad(child, x0, y0, xm, ym));\n      if (child = node[1]) quads.push(new quad(child, xm, y0, x1, ym));\n      if (child = node[2]) quads.push(new quad(child, x0, ym, xm, y1));\n      if (child = node[3]) quads.push(new quad(child, xm, ym, x1, y1));\n    }\n    next.push(q);\n  }\n  while (q = next.pop()) {\n    callback(q.node, q.x0, q.y0, q.x1, q.y1);\n  }\n  return this;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/x.js\nfunction defaultX(d) {\n  return d[0];\n}\n\n/* harmony default export */ function x(_) {\n  return arguments.length ? (this._x = _, this) : this._x;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/y.js\nfunction defaultY(d) {\n  return d[1];\n}\n\n/* harmony default export */ function y(_) {\n  return arguments.length ? (this._y = _, this) : this._y;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/quadtree.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction quadtree(nodes, x, y) {\n  var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n  return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n  this._x = x;\n  this._y = y;\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n  var copy = {data: leaf.data}, next = copy;\n  while (leaf = leaf.next) next = next.next = {data: leaf.data};\n  return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n  var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n      node = this._root,\n      nodes,\n      child;\n\n  if (!node) return copy;\n\n  if (!node.length) return copy._root = leaf_copy(node), copy;\n\n  nodes = [{source: node, target: copy._root = new Array(4)}];\n  while (node = nodes.pop()) {\n    for (var i = 0; i < 4; ++i) {\n      if (child = node.source[i]) {\n        if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n        else node.target[i] = leaf_copy(child);\n      }\n    }\n  }\n\n  return copy;\n};\n\ntreeProto.add = add;\ntreeProto.addAll = addAll;\ntreeProto.cover = cover;\ntreeProto.data = data;\ntreeProto.extent = extent;\ntreeProto.find = find;\ntreeProto.remove = remove;\ntreeProto.removeAll = removeAll;\ntreeProto.root = root;\ntreeProto.size = size;\ntreeProto.visit = visit;\ntreeProto.visitAfter = visitAfter;\ntreeProto.x = x;\ntreeProto.y = y;\n\n;// CONCATENATED MODULE: ./node_modules/d3-force/src/collide.js\n\n\n\n\nfunction collide_x(d) {\n  return d.x + d.vx;\n}\n\nfunction collide_y(d) {\n  return d.y + d.vy;\n}\n\n/* harmony default export */ function collide(radius) {\n  var nodes,\n      radii,\n      strength = 1,\n      iterations = 1;\n\n  if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n  function force() {\n    var i, n = nodes.length,\n        tree,\n        node,\n        xi,\n        yi,\n        ri,\n        ri2;\n\n    for (var k = 0; k < iterations; ++k) {\n      tree = quadtree(nodes, collide_x, collide_y).visitAfter(prepare);\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        ri = radii[node.index], ri2 = ri * ri;\n        xi = node.x + node.vx;\n        yi = node.y + node.vy;\n        tree.visit(apply);\n      }\n    }\n\n    function apply(quad, x0, y0, x1, y1) {\n      var data = quad.data, rj = quad.r, r = ri + rj;\n      if (data) {\n        if (data.index > node.index) {\n          var x = xi - data.x - data.vx,\n              y = yi - data.y - data.vy,\n              l = x * x + y * y;\n          if (l < r * r) {\n            if (x === 0) x = jiggle(), l += x * x;\n            if (y === 0) y = jiggle(), l += y * y;\n            l = (r - (l = Math.sqrt(l))) / l * strength;\n            node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n            node.vy += (y *= l) * r;\n            data.vx -= x * (r = 1 - r);\n            data.vy -= y * r;\n          }\n        }\n        return;\n      }\n      return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n    }\n  }\n\n  function prepare(quad) {\n    if (quad.data) return quad.r = radii[quad.data.index];\n    for (var i = quad.r = 0; i < 4; ++i) {\n      if (quad[i] && quad[i].r > quad.r) {\n        quad.r = quad[i].r;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    radii = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = +_, force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n  };\n\n  return force;\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-collection/src/index.js + 3 modules\nvar src = __nested_webpack_require_5314558__(15140);\n;// CONCATENATED MODULE: ./node_modules/d3-force/src/link.js\n\n\n\n\nfunction index(d) {\n  return d.index;\n}\n\nfunction link_find(nodeById, nodeId) {\n  var node = nodeById.get(nodeId);\n  if (!node) throw new Error(\"missing: \" + nodeId);\n  return node;\n}\n\n/* harmony default export */ function src_link(links) {\n  var id = index,\n      strength = defaultStrength,\n      strengths,\n      distance = constant(30),\n      distances,\n      nodes,\n      count,\n      bias,\n      iterations = 1;\n\n  if (links == null) links = [];\n\n  function defaultStrength(link) {\n    return 1 / Math.min(count[link.source.index], count[link.target.index]);\n  }\n\n  function force(alpha) {\n    for (var k = 0, n = links.length; k < iterations; ++k) {\n      for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n        link = links[i], source = link.source, target = link.target;\n        x = target.x + target.vx - source.x - source.vx || jiggle();\n        y = target.y + target.vy - source.y - source.vy || jiggle();\n        l = Math.sqrt(x * x + y * y);\n        l = (l - distances[i]) / l * alpha * strengths[i];\n        x *= l, y *= l;\n        target.vx -= x * (b = bias[i]);\n        target.vy -= y * b;\n        source.vx += x * (b = 1 - b);\n        source.vy += y * b;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n\n    var i,\n        n = nodes.length,\n        m = links.length,\n        nodeById = (0,src/* map */.UI)(nodes, id),\n        link;\n\n    for (i = 0, count = new Array(n); i < m; ++i) {\n      link = links[i], link.index = i;\n      if (typeof link.source !== \"object\") link.source = link_find(nodeById, link.source);\n      if (typeof link.target !== \"object\") link.target = link_find(nodeById, link.target);\n      count[link.source.index] = (count[link.source.index] || 0) + 1;\n      count[link.target.index] = (count[link.target.index] || 0) + 1;\n    }\n\n    for (i = 0, bias = new Array(m); i < m; ++i) {\n      link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n    }\n\n    strengths = new Array(m), initializeStrength();\n    distances = new Array(m), initializeDistance();\n  }\n\n  function initializeStrength() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      strengths[i] = +strength(links[i], i, links);\n    }\n  }\n\n  function initializeDistance() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      distances[i] = +distance(links[i], i, links);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.links = function(_) {\n    return arguments.length ? (links = _, initialize(), force) : links;\n  };\n\n  force.id = function(_) {\n    return arguments.length ? (id = _, force) : id;\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n  };\n\n  force.distance = function(_) {\n    return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n  };\n\n  return force;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-dispatch/src/dispatch.js\nvar noop = {value: function() {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\n/* harmony default export */ var src_dispatch = (dispatch);\n\n;// CONCATENATED MODULE: ./node_modules/d3-timer/src/timer.js\nvar timer_frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nfunction now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nfunction Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nfunction timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nfunction timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++timer_frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n    t = t._next;\n  }\n  --timer_frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  timer_frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    timer_frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (timer_frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    timer_frame = 1, setFrame(wake);\n  }\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-force/src/simulation.js\n\n\n\n\nfunction simulation_x(d) {\n  return d.x;\n}\n\nfunction simulation_y(d) {\n  return d.y;\n}\n\nvar initialRadius = 10,\n    initialAngle = Math.PI * (3 - Math.sqrt(5));\n\n/* harmony default export */ function simulation(nodes) {\n  var simulation,\n      alpha = 1,\n      alphaMin = 0.001,\n      alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n      alphaTarget = 0,\n      velocityDecay = 0.6,\n      forces = (0,src/* map */.UI)(),\n      stepper = timer(step),\n      event = src_dispatch(\"tick\", \"end\");\n\n  if (nodes == null) nodes = [];\n\n  function step() {\n    tick();\n    event.call(\"tick\", simulation);\n    if (alpha < alphaMin) {\n      stepper.stop();\n      event.call(\"end\", simulation);\n    }\n  }\n\n  function tick(iterations) {\n    var i, n = nodes.length, node;\n\n    if (iterations === undefined) iterations = 1;\n\n    for (var k = 0; k < iterations; ++k) {\n      alpha += (alphaTarget - alpha) * alphaDecay;\n\n      forces.each(function (force) {\n        force(alpha);\n      });\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        if (node.fx == null) node.x += node.vx *= velocityDecay;\n        else node.x = node.fx, node.vx = 0;\n        if (node.fy == null) node.y += node.vy *= velocityDecay;\n        else node.y = node.fy, node.vy = 0;\n      }\n    }\n\n    return simulation;\n  }\n\n  function initializeNodes() {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.index = i;\n      if (node.fx != null) node.x = node.fx;\n      if (node.fy != null) node.y = node.fy;\n      if (isNaN(node.x) || isNaN(node.y)) {\n        var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n        node.x = radius * Math.cos(angle);\n        node.y = radius * Math.sin(angle);\n      }\n      if (isNaN(node.vx) || isNaN(node.vy)) {\n        node.vx = node.vy = 0;\n      }\n    }\n  }\n\n  function initializeForce(force) {\n    if (force.initialize) force.initialize(nodes);\n    return force;\n  }\n\n  initializeNodes();\n\n  return simulation = {\n    tick: tick,\n\n    restart: function() {\n      return stepper.restart(step), simulation;\n    },\n\n    stop: function() {\n      return stepper.stop(), simulation;\n    },\n\n    nodes: function(_) {\n      return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n    },\n\n    alpha: function(_) {\n      return arguments.length ? (alpha = +_, simulation) : alpha;\n    },\n\n    alphaMin: function(_) {\n      return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n    },\n\n    alphaDecay: function(_) {\n      return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n    },\n\n    alphaTarget: function(_) {\n      return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n    },\n\n    velocityDecay: function(_) {\n      return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n    },\n\n    force: function(name, _) {\n      return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n    },\n\n    find: function(x, y, radius) {\n      var i = 0,\n          n = nodes.length,\n          dx,\n          dy,\n          d2,\n          node,\n          closest;\n\n      if (radius == null) radius = Infinity;\n      else radius *= radius;\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        dx = x - node.x;\n        dy = y - node.y;\n        d2 = dx * dx + dy * dy;\n        if (d2 < radius) closest = node, radius = d2;\n      }\n\n      return closest;\n    },\n\n    on: function(name, _) {\n      return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n    }\n  };\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-force/src/manyBody.js\n\n\n\n\n\n/* harmony default export */ function manyBody() {\n  var nodes,\n      node,\n      alpha,\n      strength = constant(-30),\n      strengths,\n      distanceMin2 = 1,\n      distanceMax2 = Infinity,\n      theta2 = 0.81;\n\n  function force(_) {\n    var i, n = nodes.length, tree = quadtree(nodes, simulation_x, simulation_y).visitAfter(accumulate);\n    for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    strengths = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n  }\n\n  function accumulate(quad) {\n    var strength = 0, q, c, weight = 0, x, y, i;\n\n    // For internal nodes, accumulate forces from child quadrants.\n    if (quad.length) {\n      for (x = y = i = 0; i < 4; ++i) {\n        if ((q = quad[i]) && (c = Math.abs(q.value))) {\n          strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n        }\n      }\n      quad.x = x / weight;\n      quad.y = y / weight;\n    }\n\n    // For leaf nodes, accumulate forces from coincident quadrants.\n    else {\n      q = quad;\n      q.x = q.data.x;\n      q.y = q.data.y;\n      do strength += strengths[q.data.index];\n      while (q = q.next);\n    }\n\n    quad.value = strength;\n  }\n\n  function apply(quad, x1, _, x2) {\n    if (!quad.value) return true;\n\n    var x = quad.x - node.x,\n        y = quad.y - node.y,\n        w = x2 - x1,\n        l = x * x + y * y;\n\n    // Apply the Barnes-Hut approximation if possible.\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (w * w / theta2 < l) {\n      if (l < distanceMax2) {\n        if (x === 0) x = jiggle(), l += x * x;\n        if (y === 0) y = jiggle(), l += y * y;\n        if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n        node.vx += x * quad.value * alpha / l;\n        node.vy += y * quad.value * alpha / l;\n      }\n      return true;\n    }\n\n    // Otherwise, process points directly.\n    else if (quad.length || l >= distanceMax2) return;\n\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (quad.data !== node || quad.next) {\n      if (x === 0) x = jiggle(), l += x * x;\n      if (y === 0) y = jiggle(), l += y * y;\n      if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n    }\n\n    do if (quad.data !== node) {\n      w = strengths[quad.data.index] * alpha / l;\n      node.vx += x * w;\n      node.vy += y * w;\n    } while (quad = quad.next);\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.distanceMin = function(_) {\n    return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n  };\n\n  force.distanceMax = function(_) {\n    return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n  };\n\n  force.theta = function(_) {\n    return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n  };\n\n  return force;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-force/src/radial.js\n\n\n/* harmony default export */ function radial(radius, x, y) {\n  var nodes,\n      strength = constant(0.1),\n      strengths,\n      radiuses;\n\n  if (typeof radius !== \"function\") radius = constant(+radius);\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length; i < n; ++i) {\n      var node = nodes[i],\n          dx = node.x - x || 1e-6,\n          dy = node.y - y || 1e-6,\n          r = Math.sqrt(dx * dx + dy * dy),\n          k = (radiuses[i] - r) * strengths[i] * alpha / r;\n      node.vx += dx * k;\n      node.vy += dy * k;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    radiuses = new Array(n);\n    for (i = 0; i < n; ++i) {\n      radiuses[i] = +radius(nodes[i], i, nodes);\n      strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _, initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  return force;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-force/src/x.js\n\n\n/* harmony default export */ function src_x(x) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      xz;\n\n  if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    xz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n  };\n\n  return force;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-force/src/y.js\n\n\n/* harmony default export */ function src_y(y) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      yz;\n\n  if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    yz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n  };\n\n  return force;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-force/src/index.js\n\n\n\n\n\n\n\n\n\n\n/***/ }),\n\n/***/ 60721:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5350845__) {\n\n\"use strict\";\n\n// EXPORTS\n__nested_webpack_require_5350845__.d(__webpack_exports__, {\n  \"WU\": function() { return /* reexport */ format; },\n  \"FF\": function() { return /* reexport */ locale; }\n});\n\n// UNUSED EXPORTS: FormatSpecifier, formatDefaultLocale, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound\n\n;// CONCATENATED MODULE: ./node_modules/d3-format/src/formatDecimal.js\n/* harmony default export */ function formatDecimal(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nfunction formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-format/src/exponent.js\n\n\n/* harmony default export */ function exponent(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-format/src/formatGroup.js\n/* harmony default export */ function formatGroup(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-format/src/formatNumerals.js\n/* harmony default export */ function formatNumerals(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-format/src/formatSpecifier.js\n// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nfunction formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n\n;// CONCATENATED MODULE: ./node_modules/d3-format/src/formatTrim.js\n// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\n/* harmony default export */ function formatTrim(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-format/src/formatPrefixAuto.js\n\n\nvar prefixExponent;\n\n/* harmony default export */ function formatPrefixAuto(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-format/src/formatRounded.js\n\n\n/* harmony default export */ function formatRounded(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-format/src/formatTypes.js\n\n\n\n\n/* harmony default export */ var formatTypes = ({\n  \"%\": function(x, p) { return (x * 100).toFixed(p); },\n  \"b\": function(x) { return Math.round(x).toString(2); },\n  \"c\": function(x) { return x + \"\"; },\n  \"d\": formatDecimal,\n  \"e\": function(x, p) { return x.toExponential(p); },\n  \"f\": function(x, p) { return x.toFixed(p); },\n  \"g\": function(x, p) { return x.toPrecision(p); },\n  \"o\": function(x) { return Math.round(x).toString(8); },\n  \"p\": function(x, p) { return formatRounded(x * 100, p); },\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n  \"x\": function(x) { return Math.round(x).toString(16); }\n});\n\n;// CONCATENATED MODULE: ./node_modules/d3-format/src/identity.js\n/* harmony default export */ function identity(x) {\n  return x;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-format/src/locale.js\n\n\n\n\n\n\n\n\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\n/* harmony default export */ function locale(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-format/src/defaultLocale.js\n\n\nvar defaultLocale_locale;\nvar format;\nvar formatPrefix;\n\ndefaultLocale({\n  decimal: \".\",\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"],\n  minus: \"-\"\n});\n\nfunction defaultLocale(definition) {\n  defaultLocale_locale = locale(definition);\n  format = defaultLocale_locale.format;\n  formatPrefix = defaultLocale_locale.formatPrefix;\n  return defaultLocale_locale;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-format/src/index.js\n\n\n\n\n\n\n\n\n/***/ }),\n\n/***/ 65704:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5363959__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__nested_webpack_require_5363959__.r(__webpack_exports__);\n\n// EXPORTS\n__nested_webpack_require_5363959__.d(__webpack_exports__, {\n  \"geoAiry\": function() { return /* reexport */ airy; },\n  \"geoAiryRaw\": function() { return /* reexport */ airyRaw; },\n  \"geoAitoff\": function() { return /* reexport */ aitoff; },\n  \"geoAitoffRaw\": function() { return /* reexport */ aitoffRaw; },\n  \"geoArmadillo\": function() { return /* reexport */ armadillo; },\n  \"geoArmadilloRaw\": function() { return /* reexport */ armadilloRaw; },\n  \"geoAugust\": function() { return /* reexport */ august; },\n  \"geoAugustRaw\": function() { return /* reexport */ augustRaw; },\n  \"geoBaker\": function() { return /* reexport */ baker; },\n  \"geoBakerRaw\": function() { return /* reexport */ bakerRaw; },\n  \"geoBerghaus\": function() { return /* reexport */ berghaus; },\n  \"geoBerghausRaw\": function() { return /* reexport */ berghausRaw; },\n  \"geoBertin1953\": function() { return /* reexport */ bertin; },\n  \"geoBertin1953Raw\": function() { return /* reexport */ bertin1953Raw; },\n  \"geoBoggs\": function() { return /* reexport */ boggs; },\n  \"geoBoggsRaw\": function() { return /* reexport */ boggsRaw; },\n  \"geoBonne\": function() { return /* reexport */ bonne; },\n  \"geoBonneRaw\": function() { return /* reexport */ bonneRaw; },\n  \"geoBottomley\": function() { return /* reexport */ bottomley; },\n  \"geoBottomleyRaw\": function() { return /* reexport */ bottomleyRaw; },\n  \"geoBromley\": function() { return /* reexport */ bromley; },\n  \"geoBromleyRaw\": function() { return /* reexport */ bromleyRaw; },\n  \"geoChamberlin\": function() { return /* reexport */ chamberlin; },\n  \"geoChamberlinAfrica\": function() { return /* reexport */ chamberlinAfrica; },\n  \"geoChamberlinRaw\": function() { return /* reexport */ chamberlinRaw; },\n  \"geoCollignon\": function() { return /* reexport */ collignon; },\n  \"geoCollignonRaw\": function() { return /* reexport */ collignonRaw; },\n  \"geoCraig\": function() { return /* reexport */ craig; },\n  \"geoCraigRaw\": function() { return /* reexport */ craigRaw; },\n  \"geoCraster\": function() { return /* reexport */ craster; },\n  \"geoCrasterRaw\": function() { return /* reexport */ crasterRaw; },\n  \"geoCylindricalEqualArea\": function() { return /* reexport */ cylindricalEqualArea; },\n  \"geoCylindricalEqualAreaRaw\": function() { return /* reexport */ cylindricalEqualAreaRaw; },\n  \"geoCylindricalStereographic\": function() { return /* reexport */ cylindricalStereographic; },\n  \"geoCylindricalStereographicRaw\": function() { return /* reexport */ cylindricalStereographicRaw; },\n  \"geoEckert1\": function() { return /* reexport */ eckert1; },\n  \"geoEckert1Raw\": function() { return /* reexport */ eckert1Raw; },\n  \"geoEckert2\": function() { return /* reexport */ eckert2; },\n  \"geoEckert2Raw\": function() { return /* reexport */ eckert2Raw; },\n  \"geoEckert3\": function() { return /* reexport */ eckert3; },\n  \"geoEckert3Raw\": function() { return /* reexport */ eckert3Raw; },\n  \"geoEckert4\": function() { return /* reexport */ eckert4; },\n  \"geoEckert4Raw\": function() { return /* reexport */ eckert4Raw; },\n  \"geoEckert5\": function() { return /* reexport */ eckert5; },\n  \"geoEckert5Raw\": function() { return /* reexport */ eckert5Raw; },\n  \"geoEckert6\": function() { return /* reexport */ eckert6; },\n  \"geoEckert6Raw\": function() { return /* reexport */ eckert6Raw; },\n  \"geoEisenlohr\": function() { return /* reexport */ eisenlohr; },\n  \"geoEisenlohrRaw\": function() { return /* reexport */ eisenlohrRaw; },\n  \"geoFahey\": function() { return /* reexport */ fahey; },\n  \"geoFaheyRaw\": function() { return /* reexport */ faheyRaw; },\n  \"geoFoucaut\": function() { return /* reexport */ foucaut; },\n  \"geoFoucautRaw\": function() { return /* reexport */ foucautRaw; },\n  \"geoFoucautSinusoidal\": function() { return /* reexport */ foucautSinusoidal; },\n  \"geoFoucautSinusoidalRaw\": function() { return /* reexport */ foucautSinusoidalRaw; },\n  \"geoGilbert\": function() { return /* reexport */ gilbert; },\n  \"geoGingery\": function() { return /* reexport */ gingery; },\n  \"geoGingeryRaw\": function() { return /* reexport */ gingeryRaw; },\n  \"geoGinzburg4\": function() { return /* reexport */ ginzburg4; },\n  \"geoGinzburg4Raw\": function() { return /* reexport */ ginzburg4Raw; },\n  \"geoGinzburg5\": function() { return /* reexport */ ginzburg5; },\n  \"geoGinzburg5Raw\": function() { return /* reexport */ ginzburg5Raw; },\n  \"geoGinzburg6\": function() { return /* reexport */ ginzburg6; },\n  \"geoGinzburg6Raw\": function() { return /* reexport */ ginzburg6Raw; },\n  \"geoGinzburg8\": function() { return /* reexport */ ginzburg8; },\n  \"geoGinzburg8Raw\": function() { return /* reexport */ ginzburg8Raw; },\n  \"geoGinzburg9\": function() { return /* reexport */ ginzburg9; },\n  \"geoGinzburg9Raw\": function() { return /* reexport */ ginzburg9Raw; },\n  \"geoGringorten\": function() { return /* reexport */ gringorten; },\n  \"geoGringortenQuincuncial\": function() { return /* reexport */ quincuncial_gringorten; },\n  \"geoGringortenRaw\": function() { return /* reexport */ gringortenRaw; },\n  \"geoGuyou\": function() { return /* reexport */ guyou; },\n  \"geoGuyouRaw\": function() { return /* reexport */ guyouRaw; },\n  \"geoHammer\": function() { return /* reexport */ hammer; },\n  \"geoHammerRaw\": function() { return /* reexport */ hammerRaw; },\n  \"geoHammerRetroazimuthal\": function() { return /* reexport */ hammerRetroazimuthal; },\n  \"geoHammerRetroazimuthalRaw\": function() { return /* reexport */ hammerRetroazimuthalRaw; },\n  \"geoHealpix\": function() { return /* reexport */ healpix; },\n  \"geoHealpixRaw\": function() { return /* reexport */ healpixRaw; },\n  \"geoHill\": function() { return /* reexport */ hill; },\n  \"geoHillRaw\": function() { return /* reexport */ hillRaw; },\n  \"geoHomolosine\": function() { return /* reexport */ homolosine; },\n  \"geoHomolosineRaw\": function() { return /* reexport */ homolosineRaw; },\n  \"geoHufnagel\": function() { return /* reexport */ hufnagel; },\n  \"geoHufnagelRaw\": function() { return /* reexport */ hufnagelRaw; },\n  \"geoHyperelliptical\": function() { return /* reexport */ hyperelliptical; },\n  \"geoHyperellipticalRaw\": function() { return /* reexport */ hyperellipticalRaw; },\n  \"geoInterrupt\": function() { return /* reexport */ interrupted; },\n  \"geoInterruptedBoggs\": function() { return /* reexport */ interrupted_boggs; },\n  \"geoInterruptedHomolosine\": function() { return /* reexport */ interrupted_homolosine; },\n  \"geoInterruptedMollweide\": function() { return /* reexport */ interrupted_mollweide; },\n  \"geoInterruptedMollweideHemispheres\": function() { return /* reexport */ mollweideHemispheres; },\n  \"geoInterruptedQuarticAuthalic\": function() { return /* reexport */ quarticAuthalic; },\n  \"geoInterruptedSinuMollweide\": function() { return /* reexport */ interrupted_sinuMollweide; },\n  \"geoInterruptedSinusoidal\": function() { return /* reexport */ interrupted_sinusoidal; },\n  \"geoKavrayskiy7\": function() { return /* reexport */ kavrayskiy7; },\n  \"geoKavrayskiy7Raw\": function() { return /* reexport */ kavrayskiy7Raw; },\n  \"geoLagrange\": function() { return /* reexport */ lagrange; },\n  \"geoLagrangeRaw\": function() { return /* reexport */ lagrangeRaw; },\n  \"geoLarrivee\": function() { return /* reexport */ larrivee; },\n  \"geoLarriveeRaw\": function() { return /* reexport */ larriveeRaw; },\n  \"geoLaskowski\": function() { return /* reexport */ laskowski; },\n  \"geoLaskowskiRaw\": function() { return /* reexport */ laskowskiRaw; },\n  \"geoLittrow\": function() { return /* reexport */ littrow; },\n  \"geoLittrowRaw\": function() { return /* reexport */ littrowRaw; },\n  \"geoLoximuthal\": function() { return /* reexport */ loximuthal; },\n  \"geoLoximuthalRaw\": function() { return /* reexport */ loximuthalRaw; },\n  \"geoMiller\": function() { return /* reexport */ miller; },\n  \"geoMillerRaw\": function() { return /* reexport */ millerRaw; },\n  \"geoModifiedStereographic\": function() { return /* reexport */ modifiedStereographic; },\n  \"geoModifiedStereographicAlaska\": function() { return /* reexport */ modifiedStereographicAlaska; },\n  \"geoModifiedStereographicGs48\": function() { return /* reexport */ modifiedStereographicGs48; },\n  \"geoModifiedStereographicGs50\": function() { return /* reexport */ modifiedStereographicGs50; },\n  \"geoModifiedStereographicLee\": function() { return /* reexport */ modifiedStereographicLee; },\n  \"geoModifiedStereographicMiller\": function() { return /* reexport */ modifiedStereographicMiller; },\n  \"geoModifiedStereographicRaw\": function() { return /* reexport */ modifiedStereographicRaw; },\n  \"geoMollweide\": function() { return /* reexport */ mollweide; },\n  \"geoMollweideRaw\": function() { return /* reexport */ mollweideRaw; },\n  \"geoMtFlatPolarParabolic\": function() { return /* reexport */ mtFlatPolarParabolic; },\n  \"geoMtFlatPolarParabolicRaw\": function() { return /* reexport */ mtFlatPolarParabolicRaw; },\n  \"geoMtFlatPolarQuartic\": function() { return /* reexport */ mtFlatPolarQuartic; },\n  \"geoMtFlatPolarQuarticRaw\": function() { return /* reexport */ mtFlatPolarQuarticRaw; },\n  \"geoMtFlatPolarSinusoidal\": function() { return /* reexport */ mtFlatPolarSinusoidal; },\n  \"geoMtFlatPolarSinusoidalRaw\": function() { return /* reexport */ mtFlatPolarSinusoidalRaw; },\n  \"geoNaturalEarth\": function() { return /* reexport */ naturalEarth1/* default */.Z; },\n  \"geoNaturalEarth2\": function() { return /* reexport */ naturalEarth2; },\n  \"geoNaturalEarth2Raw\": function() { return /* reexport */ naturalEarth2Raw; },\n  \"geoNaturalEarthRaw\": function() { return /* reexport */ naturalEarth1/* naturalEarth1Raw */.K; },\n  \"geoNellHammer\": function() { return /* reexport */ nellHammer; },\n  \"geoNellHammerRaw\": function() { return /* reexport */ nellHammerRaw; },\n  \"geoNicolosi\": function() { return /* reexport */ nicolosi; },\n  \"geoNicolosiRaw\": function() { return /* reexport */ nicolosiRaw; },\n  \"geoPatterson\": function() { return /* reexport */ patterson; },\n  \"geoPattersonRaw\": function() { return /* reexport */ pattersonRaw; },\n  \"geoPeirceQuincuncial\": function() { return /* reexport */ peirce; },\n  \"geoPierceQuincuncial\": function() { return /* reexport */ peirce; },\n  \"geoPolyconic\": function() { return /* reexport */ polyconic; },\n  \"geoPolyconicRaw\": function() { return /* reexport */ polyconicRaw; },\n  \"geoPolyhedral\": function() { return /* reexport */ polyhedral; },\n  \"geoPolyhedralButterfly\": function() { return /* reexport */ butterfly; },\n  \"geoPolyhedralCollignon\": function() { return /* reexport */ polyhedral_collignon; },\n  \"geoPolyhedralWaterman\": function() { return /* reexport */ waterman; },\n  \"geoProject\": function() { return /* reexport */ project; },\n  \"geoQuantize\": function() { return /* reexport */ quantize; },\n  \"geoQuincuncial\": function() { return /* reexport */ quincuncial; },\n  \"geoRectangularPolyconic\": function() { return /* reexport */ rectangularPolyconic; },\n  \"geoRectangularPolyconicRaw\": function() { return /* reexport */ rectangularPolyconicRaw; },\n  \"geoRobinson\": function() { return /* reexport */ robinson; },\n  \"geoRobinsonRaw\": function() { return /* reexport */ robinsonRaw; },\n  \"geoSatellite\": function() { return /* reexport */ satellite; },\n  \"geoSatelliteRaw\": function() { return /* reexport */ satelliteRaw; },\n  \"geoSinuMollweide\": function() { return /* reexport */ sinuMollweide; },\n  \"geoSinuMollweideRaw\": function() { return /* reexport */ sinuMollweideRaw; },\n  \"geoSinusoidal\": function() { return /* reexport */ sinusoidal; },\n  \"geoSinusoidalRaw\": function() { return /* reexport */ sinusoidalRaw; },\n  \"geoStitch\": function() { return /* reexport */ stitch; },\n  \"geoTimes\": function() { return /* reexport */ times; },\n  \"geoTimesRaw\": function() { return /* reexport */ timesRaw; },\n  \"geoTwoPointAzimuthal\": function() { return /* reexport */ twoPointAzimuthal; },\n  \"geoTwoPointAzimuthalRaw\": function() { return /* reexport */ twoPointAzimuthalRaw; },\n  \"geoTwoPointAzimuthalUsa\": function() { return /* reexport */ twoPointAzimuthalUsa; },\n  \"geoTwoPointEquidistant\": function() { return /* reexport */ twoPointEquidistant; },\n  \"geoTwoPointEquidistantRaw\": function() { return /* reexport */ twoPointEquidistantRaw; },\n  \"geoTwoPointEquidistantUsa\": function() { return /* reexport */ twoPointEquidistantUsa; },\n  \"geoVanDerGrinten\": function() { return /* reexport */ vanDerGrinten; },\n  \"geoVanDerGrinten2\": function() { return /* reexport */ vanDerGrinten2; },\n  \"geoVanDerGrinten2Raw\": function() { return /* reexport */ vanDerGrinten2Raw; },\n  \"geoVanDerGrinten3\": function() { return /* reexport */ vanDerGrinten3; },\n  \"geoVanDerGrinten3Raw\": function() { return /* reexport */ vanDerGrinten3Raw; },\n  \"geoVanDerGrinten4\": function() { return /* reexport */ vanDerGrinten4; },\n  \"geoVanDerGrinten4Raw\": function() { return /* reexport */ vanDerGrinten4Raw; },\n  \"geoVanDerGrintenRaw\": function() { return /* reexport */ vanDerGrintenRaw; },\n  \"geoWagner\": function() { return /* reexport */ wagner; },\n  \"geoWagner4\": function() { return /* reexport */ wagner4; },\n  \"geoWagner4Raw\": function() { return /* reexport */ wagner4Raw; },\n  \"geoWagner6\": function() { return /* reexport */ wagner6; },\n  \"geoWagner6Raw\": function() { return /* reexport */ wagner6Raw; },\n  \"geoWagner7\": function() { return /* reexport */ wagner7; },\n  \"geoWagnerRaw\": function() { return /* reexport */ wagnerRaw; },\n  \"geoWiechel\": function() { return /* reexport */ wiechel; },\n  \"geoWiechelRaw\": function() { return /* reexport */ wiechelRaw; },\n  \"geoWinkel3\": function() { return /* reexport */ winkel3; },\n  \"geoWinkel3Raw\": function() { return /* reexport */ winkel3Raw; }\n});\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/projection/index.js + 1 modules\nvar src_projection = __nested_webpack_require_5363959__(15002);\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/math.js\nvar abs = Math.abs;\nvar atan = Math.atan;\nvar atan2 = Math.atan2;\nvar ceil = Math.ceil;\nvar cos = Math.cos;\nvar exp = Math.exp;\nvar floor = Math.floor;\nvar log = Math.log;\nvar max = Math.max;\nvar min = Math.min;\nvar pow = Math.pow;\nvar round = Math.round;\nvar sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nvar sin = Math.sin;\nvar tan = Math.tan;\n\nvar epsilon = 1e-6;\nvar epsilon2 = 1e-12;\nvar pi = Math.PI;\nvar halfPi = pi / 2;\nvar quarterPi = pi / 4;\nvar sqrt1_2 = Math.SQRT1_2;\nvar sqrt2 = sqrt(2);\nvar sqrtPi = sqrt(pi);\nvar tau = pi * 2;\nvar degrees = 180 / pi;\nvar radians = pi / 180;\n\nfunction sinci(x) {\n  return x ? x / Math.sin(x) : 1;\n}\n\nfunction asin(x) {\n  return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nfunction acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nfunction sqrt(x) {\n  return x > 0 ? Math.sqrt(x) : 0;\n}\n\nfunction tanh(x) {\n  x = exp(2 * x);\n  return (x - 1) / (x + 1);\n}\n\nfunction sinh(x) {\n  return (exp(x) - exp(-x)) / 2;\n}\n\nfunction cosh(x) {\n  return (exp(x) + exp(-x)) / 2;\n}\n\nfunction arsinh(x) {\n  return log(x + sqrt(x * x + 1));\n}\n\nfunction arcosh(x) {\n  return log(x + sqrt(x * x - 1));\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/airy.js\n\n\n\nfunction airyRaw(beta) {\n  var tanBeta_2 = tan(beta / 2),\n      b = 2 * log(cos(beta / 2)) / (tanBeta_2 * tanBeta_2);\n\n  function forward(x, y) {\n    var cosx = cos(x),\n        cosy = cos(y),\n        siny = sin(y),\n        cosz = cosy * cosx,\n        k = -((1 - cosz ? log((1 + cosz) / 2) / (1 - cosz) : -0.5) + b / (1 + cosz));\n    return [k * cosy * sin(x), k * siny];\n  }\n\n  forward.invert = function(x, y) {\n    var r = sqrt(x * x + y * y),\n        z = -beta / 2,\n        i = 50, delta;\n    if (!r) return [0, 0];\n    do {\n      var z_2 = z / 2,\n          cosz_2 = cos(z_2),\n          sinz_2 = sin(z_2),\n          tanz_2 = sinz_2 / cosz_2,\n          lnsecz_2 = -log(abs(cosz_2));\n      z -= delta = (2 / tanz_2 * lnsecz_2 - b * tanz_2 - r) / (-lnsecz_2 / (sinz_2 * sinz_2) + 1 - b / (2 * cosz_2 * cosz_2)) * (cosz_2 < 0 ? 0.7 : 1);\n    } while (abs(delta) > epsilon && --i > 0);\n    var sinz = sin(z);\n    return [atan2(x * sinz, r * cos(z)), asin(y * sinz / r)];\n  };\n\n  return forward;\n}\n\n/* harmony default export */ function airy() {\n  var beta = halfPi,\n      m = (0,src_projection/* projectionMutator */.r)(airyRaw),\n      p = m(beta);\n\n  p.radius = function(_) {\n    return arguments.length ? m(beta = _ * radians) : beta * degrees;\n  };\n\n  return p\n      .scale(179.976)\n      .clipAngle(147);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/aitoff.js\n\n\n\nfunction aitoffRaw(x, y) {\n  var cosy = cos(y), sincia = sinci(acos(cosy * cos(x /= 2)));\n  return [2 * cosy * sin(x) * sincia, sin(y) * sincia];\n}\n\n// Abort if [x, y] is not within an ellipse centered at [0, 0] with\n// semi-major axis pi and semi-minor axis pi/2.\naitoffRaw.invert = function(x, y) {\n  if (x * x + 4 * y * y > pi * pi + epsilon) return;\n  var x1 = x, y1 = y, i = 25;\n  do {\n    var sinx = sin(x1),\n        sinx_2 = sin(x1 / 2),\n        cosx_2 = cos(x1 / 2),\n        siny = sin(y1),\n        cosy = cos(y1),\n        sin_2y = sin(2 * y1),\n        sin2y = siny * siny,\n        cos2y = cosy * cosy,\n        sin2x_2 = sinx_2 * sinx_2,\n        c = 1 - cos2y * cosx_2 * cosx_2,\n        e = c ? acos(cosy * cosx_2) * sqrt(f = 1 / c) : f = 0,\n        f,\n        fx = 2 * e * cosy * sinx_2 - x,\n        fy = e * siny - y,\n        dxdx = f * (cos2y * sin2x_2 + e * cosy * cosx_2 * sin2y),\n        dxdy = f * (0.5 * sinx * sin_2y - e * 2 * siny * sinx_2),\n        dydx = f * 0.25 * (sin_2y * sinx_2 - e * siny * cos2y * sinx),\n        dydy = f * (sin2y * cosx_2 + e * sin2x_2 * cosy),\n        z = dxdy * dydx - dydy * dxdx;\n    if (!z) break;\n    var dx = (fy * dxdy - fx * dydy) / z,\n        dy = (fx * dydx - fy * dxdx) / z;\n    x1 -= dx, y1 -= dy;\n  } while ((abs(dx) > epsilon || abs(dy) > epsilon) && --i > 0);\n  return [x1, y1];\n};\n\n/* harmony default export */ function aitoff() {\n  return (0,src_projection/* default */.Z)(aitoffRaw)\n      .scale(152.63);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/armadillo.js\n\n\n\nfunction armadilloRaw(phi0) {\n  var sinPhi0 = sin(phi0),\n      cosPhi0 = cos(phi0),\n      sPhi0 = phi0 >= 0 ? 1 : -1,\n      tanPhi0 = tan(sPhi0 * phi0),\n      k = (1 + sinPhi0 - cosPhi0) / 2;\n\n  function forward(lambda, phi) {\n    var cosPhi = cos(phi),\n        cosLambda = cos(lambda /= 2);\n    return [\n      (1 + cosPhi) * sin(lambda),\n      (sPhi0 * phi > -atan2(cosLambda, tanPhi0) - 1e-3 ? 0 : -sPhi0 * 10) + k + sin(phi) * cosPhi0 - (1 + cosPhi) * sinPhi0 * cosLambda // TODO D3 core should allow null or [NaN, NaN] to be returned.\n    ];\n  }\n\n  forward.invert = function(x, y) {\n    var lambda = 0,\n        phi = 0,\n        i = 50;\n    do {\n      var cosLambda = cos(lambda),\n          sinLambda = sin(lambda),\n          cosPhi = cos(phi),\n          sinPhi = sin(phi),\n          A = 1 + cosPhi,\n          fx = A * sinLambda - x,\n          fy = k + sinPhi * cosPhi0 - A * sinPhi0 * cosLambda - y,\n          dxdLambda = A * cosLambda / 2,\n          dxdPhi = -sinLambda * sinPhi,\n          dydLambda = sinPhi0 * A * sinLambda / 2,\n          dydPhi = cosPhi0 * cosPhi + sinPhi0 * cosLambda * sinPhi,\n          denominator = dxdPhi * dydLambda - dydPhi * dxdLambda,\n          dLambda = (fy * dxdPhi - fx * dydPhi) / denominator / 2,\n          dPhi = (fx * dydLambda - fy * dxdLambda) / denominator;\n      if (abs(dPhi) > 2) dPhi /= 2;\n      lambda -= dLambda, phi -= dPhi;\n    } while ((abs(dLambda) > epsilon || abs(dPhi) > epsilon) && --i > 0);\n    return sPhi0 * phi > -atan2(cos(lambda), tanPhi0) - 1e-3 ? [lambda * 2, phi] : null;\n  };\n\n  return forward;\n}\n\n/* harmony default export */ function armadillo() {\n  var phi0 = 20 * radians,\n      sPhi0 = phi0 >= 0 ? 1 : -1,\n      tanPhi0 = tan(sPhi0 * phi0),\n      m = (0,src_projection/* projectionMutator */.r)(armadilloRaw),\n      p = m(phi0),\n      stream_ = p.stream;\n\n  p.parallel = function(_) {\n    if (!arguments.length) return phi0 * degrees;\n    tanPhi0 = tan((sPhi0 = (phi0 = _ * radians) >= 0 ? 1 : -1) * phi0);\n    return m(phi0);\n  };\n\n  p.stream = function(stream) {\n    var rotate = p.rotate(),\n        rotateStream = stream_(stream),\n        sphereStream = (p.rotate([0, 0]), stream_(stream)),\n        precision = p.precision();\n    p.rotate(rotate);\n    rotateStream.sphere = function() {\n      sphereStream.polygonStart(), sphereStream.lineStart();\n      for (var lambda = sPhi0 * -180; sPhi0 * lambda < 180; lambda += sPhi0 * 90)\n        sphereStream.point(lambda, sPhi0 * 90);\n      if (phi0) while (sPhi0 * (lambda -= 3 * sPhi0 * precision) >= -180) {\n        sphereStream.point(lambda, sPhi0 * -atan2(cos(lambda * radians / 2), tanPhi0) * degrees);\n      }\n      sphereStream.lineEnd(), sphereStream.polygonEnd();\n    };\n    return rotateStream;\n  };\n\n  return p\n      .scale(218.695)\n      .center([0, 28.0974]);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/august.js\n\n\n\nfunction augustRaw(lambda, phi) {\n  var tanPhi = tan(phi / 2),\n      k = sqrt(1 - tanPhi * tanPhi),\n      c = 1 + k * cos(lambda /= 2),\n      x = sin(lambda) * k / c,\n      y = tanPhi / c,\n      x2 = x * x,\n      y2 = y * y;\n  return [\n    4 / 3 * x * (3 + x2 - 3 * y2),\n    4 / 3 * y * (3 + 3 * x2 - y2)\n  ];\n}\n\naugustRaw.invert = function(x, y) {\n  x *= 3 / 8, y *= 3 / 8;\n  if (!x && abs(y) > 1) return null;\n  var x2 = x * x,\n      y2 = y * y,\n      s = 1 + x2 + y2,\n      sin3Eta = sqrt((s - sqrt(s * s - 4 * y * y)) / 2),\n      eta = asin(sin3Eta) / 3,\n      xi = sin3Eta ? arcosh(abs(y / sin3Eta)) / 3 : arsinh(abs(x)) / 3,\n      cosEta = cos(eta),\n      coshXi = cosh(xi),\n      d = coshXi * coshXi - cosEta * cosEta;\n  return [\n    sign(x) * 2 * atan2(sinh(xi) * cosEta, 0.25 - d),\n    sign(y) * 2 * atan2(coshXi * sin(eta), 0.25 + d)\n  ];\n};\n\n/* harmony default export */ function august() {\n  return (0,src_projection/* default */.Z)(augustRaw)\n      .scale(66.1603);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/baker.js\n\n\n\nvar sqrt8 = sqrt(8),\n    phi0 = log(1 + sqrt2);\n\nfunction bakerRaw(lambda, phi) {\n  var phi0 = abs(phi);\n  return phi0 < quarterPi\n      ? [lambda, log(tan(quarterPi + phi / 2))]\n      : [lambda * cos(phi0) * (2 * sqrt2 - 1 / sin(phi0)), sign(phi) * (2 * sqrt2 * (phi0 - quarterPi) - log(tan(phi0 / 2)))];\n}\n\nbakerRaw.invert = function(x, y) {\n  if ((y0 = abs(y)) < phi0) return [x, 2 * atan(exp(y)) - halfPi];\n  var phi = quarterPi, i = 25, delta, y0;\n  do {\n    var cosPhi_2 = cos(phi / 2), tanPhi_2 = tan(phi / 2);\n    phi -= delta = (sqrt8 * (phi - quarterPi) - log(tanPhi_2) - y0) / (sqrt8 - cosPhi_2 * cosPhi_2 / (2 * tanPhi_2));\n  } while (abs(delta) > epsilon2 && --i > 0);\n  return [x / (cos(phi) * (sqrt8 - 1 / sin(phi))), sign(y) * phi];\n};\n\n/* harmony default export */ function baker() {\n  return (0,src_projection/* default */.Z)(bakerRaw)\n      .scale(112.314);\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/projection/azimuthalEquidistant.js\nvar azimuthalEquidistant = __nested_webpack_require_5363959__(17889);\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/berghaus.js\n\n\n\nfunction berghausRaw(lobes) {\n  var k = 2 * pi / lobes;\n\n  function forward(lambda, phi) {\n    var p = (0,azimuthalEquidistant/* azimuthalEquidistantRaw */.N)(lambda, phi);\n    if (abs(lambda) > halfPi) { // back hemisphere\n      var theta = atan2(p[1], p[0]),\n          r = sqrt(p[0] * p[0] + p[1] * p[1]),\n          theta0 = k * round((theta - halfPi) / k) + halfPi,\n          alpha = atan2(sin(theta -= theta0), 2 - cos(theta)); // angle relative to lobe end\n      theta = theta0 + asin(pi / r * sin(alpha)) - alpha;\n      p[0] = r * cos(theta);\n      p[1] = r * sin(theta);\n    }\n    return p;\n  }\n\n  forward.invert = function(x, y) {\n    var r = sqrt(x * x + y * y);\n    if (r > halfPi) {\n      var theta = atan2(y, x),\n          theta0 = k * round((theta - halfPi) / k) + halfPi,\n          s = theta > theta0 ? -1 : 1,\n          A = r * cos(theta0 - theta),\n          cotAlpha = 1 / tan(s * acos((A - pi) / sqrt(pi * (pi - 2 * A) + r * r)));\n      theta = theta0 + 2 * atan((cotAlpha + s * sqrt(cotAlpha * cotAlpha - 3)) / 3);\n      x = r * cos(theta), y = r * sin(theta);\n    }\n    return azimuthalEquidistant/* azimuthalEquidistantRaw.invert */.N.invert(x, y);\n  };\n\n  return forward;\n}\n\n/* harmony default export */ function berghaus() {\n  var lobes = 5,\n      m = (0,src_projection/* projectionMutator */.r)(berghausRaw),\n      p = m(lobes),\n      projectionStream = p.stream,\n      epsilon = 1e-2,\n      cr = -cos(epsilon * radians),\n      sr = sin(epsilon * radians);\n\n  p.lobes = function(_) {\n    return arguments.length ? m(lobes = +_) : lobes;\n  };\n\n  p.stream = function(stream) {\n    var rotate = p.rotate(),\n        rotateStream = projectionStream(stream),\n        sphereStream = (p.rotate([0, 0]), projectionStream(stream));\n    p.rotate(rotate);\n    rotateStream.sphere = function() {\n      sphereStream.polygonStart(), sphereStream.lineStart();\n      for (var i = 0, delta = 360 / lobes, delta0 = 2 * pi / lobes, phi = 90 - 180 / lobes, phi0 = halfPi; i < lobes; ++i, phi -= delta, phi0 -= delta0) {\n        sphereStream.point(atan2(sr * cos(phi0), cr) * degrees, asin(sr * sin(phi0)) * degrees);\n        if (phi < -90) {\n          sphereStream.point(-90, -180 - phi - epsilon);\n          sphereStream.point(-90, -180 - phi + epsilon);\n        } else {\n          sphereStream.point(90, phi + epsilon);\n          sphereStream.point(90, phi - epsilon);\n        }\n      }\n      sphereStream.lineEnd(), sphereStream.polygonEnd();\n    };\n    return rotateStream;\n  };\n\n  return p\n      .scale(87.8076)\n      .center([0, 17.1875])\n      .clipAngle(180 - 1e-3);\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/projection/azimuthalEqualArea.js\nvar azimuthalEqualArea = __nested_webpack_require_5363959__(12956);\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/hammer.js\n\n\n\nfunction hammerRaw(A, B) {\n  if (arguments.length < 2) B = A;\n  if (B === 1) return azimuthalEqualArea/* azimuthalEqualAreaRaw */.l;\n  if (B === Infinity) return hammerQuarticAuthalicRaw;\n\n  function forward(lambda, phi) {\n    var coordinates = (0,azimuthalEqualArea/* azimuthalEqualAreaRaw */.l)(lambda / B, phi);\n    coordinates[0] *= A;\n    return coordinates;\n  }\n\n  forward.invert = function(x, y) {\n    var coordinates = azimuthalEqualArea/* azimuthalEqualAreaRaw.invert */.l.invert(x / A, y);\n    coordinates[0] *= B;\n    return coordinates;\n  };\n\n  return forward;\n}\n\nfunction hammerQuarticAuthalicRaw(lambda, phi) {\n  return [\n    lambda * cos(phi) / cos(phi /= 2),\n    2 * sin(phi)\n  ];\n}\n\nhammerQuarticAuthalicRaw.invert = function(x, y) {\n  var phi = 2 * asin(y / 2);\n  return [\n    x * cos(phi / 2) / cos(phi),\n    phi\n  ];\n};\n\n/* harmony default export */ function hammer() {\n  var B = 2,\n      m = (0,src_projection/* projectionMutator */.r)(hammerRaw),\n      p = m(B);\n\n  p.coefficient = function(_) {\n    if (!arguments.length) return B;\n    return m(B = +_);\n  };\n\n  return p\n    .scale(169.529);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/newton.js\n\n\n// Approximate Newton-Raphson\n// Solve f(x) = y, start from x\nfunction solve(f, y, x) {\n  var steps = 100, delta, f0, f1;\n  x = x === undefined ? 0 : +x;\n  y = +y;\n  do {\n    f0 = f(x);\n    f1 = f(x + epsilon);\n    if (f0 === f1) f1 = f0 + epsilon;\n    x -= delta = (-1 * epsilon * (f0 - y)) / (f0 - f1);\n  } while (steps-- > 0 && abs(delta) > epsilon);\n  return steps < 0 ? NaN : x;\n}\n\n// Approximate Newton-Raphson in 2D\n// Solve f(a,b) = [x,y]\nfunction solve2d(f, MAX_ITERATIONS, eps) {\n  if (MAX_ITERATIONS === undefined) MAX_ITERATIONS = 40;\n  if (eps === undefined) eps = epsilon2;\n  return function(x, y, a, b) {\n    var err2, da, db;\n    a = a === undefined ? 0 : +a;\n    b = b === undefined ? 0 : +b;\n    for (var i = 0; i < MAX_ITERATIONS; i++) {\n      var p = f(a, b),\n        // diffs\n        tx = p[0] - x,\n        ty = p[1] - y;\n      if (abs(tx) < eps && abs(ty) < eps) break; // we're there!\n\n      // backtrack if we overshot\n      var h = tx * tx + ty * ty;\n      if (h > err2) {\n        a -= da /= 2;\n        b -= db /= 2;\n        continue;\n      }\n      err2 = h;\n\n      // partial derivatives\n      var ea = (a > 0 ? -1 : 1) * eps,\n        eb = (b > 0 ? -1 : 1) * eps,\n        pa = f(a + ea, b),\n        pb = f(a, b + eb),\n        dxa = (pa[0] - p[0]) / ea,\n        dya = (pa[1] - p[1]) / ea,\n        dxb = (pb[0] - p[0]) / eb,\n        dyb = (pb[1] - p[1]) / eb,\n        // determinant\n        D = dyb * dxa - dya * dxb,\n        // newton step — or half-step for small D\n        l = (abs(D) < 0.5 ? 0.5 : 1) / D;\n      da = (ty * dxb - tx * dyb) * l;\n      db = (tx * dya - ty * dxa) * l;\n      a += da;\n      b += db;\n      if (abs(da) < eps && abs(db) < eps) break; // we're crawling\n    }\n    return [a, b];\n  };\n}\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/bertin.js\n\n\n\n\n\n// Bertin 1953 as a modified Briesemeister\n// https://bl.ocks.org/Fil/5b9ee9636dfb6ffa53443c9006beb642\nfunction bertin1953Raw() {\n  var hammer = hammerRaw(1.68, 2),\n      fu = 1.4, k = 12;\n\n  function forward(lambda, phi) {\n\n    if (lambda + phi < -fu) {\n      var u = (lambda - phi + 1.6) * (lambda + phi + fu) / 8;\n      lambda += u;\n      phi -= 0.8 * u * sin(phi + pi / 2);\n    }\n\n    var r = hammer(lambda, phi);\n\n    var d = (1 - cos(lambda * phi)) / k;\n\n    if (r[1] < 0) {\n      r[0] *= 1 + d;\n    }\n    if (r[1] > 0) {\n      r[1] *= 1 + d / 1.5 * r[0] * r[0];\n    }\n\n    return r;\n  }\n  \n  forward.invert = solve2d(forward);\n  return forward;\n}\n\n/* harmony default export */ function bertin() {\n  // this projection should not be rotated\n  return (0,src_projection/* default */.Z)(bertin1953Raw())\n    .rotate([-16.5, -42])\n    .scale(176.57)\n    .center([7.93, 0.09]);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/mollweide.js\n\n\n\nfunction mollweideBromleyTheta(cp, phi) {\n  var cpsinPhi = cp * sin(phi), i = 30, delta;\n  do phi -= delta = (phi + sin(phi) - cpsinPhi) / (1 + cos(phi));\n  while (abs(delta) > epsilon && --i > 0);\n  return phi / 2;\n}\n\nfunction mollweideBromleyRaw(cx, cy, cp) {\n\n  function forward(lambda, phi) {\n    return [cx * lambda * cos(phi = mollweideBromleyTheta(cp, phi)), cy * sin(phi)];\n  }\n\n  forward.invert = function(x, y) {\n    return y = asin(y / cy), [x / (cx * cos(y)), asin((2 * y + sin(2 * y)) / cp)];\n  };\n\n  return forward;\n}\n\nvar mollweideRaw = mollweideBromleyRaw(sqrt2 / halfPi, sqrt2, pi);\n\n/* harmony default export */ function mollweide() {\n  return (0,src_projection/* default */.Z)(mollweideRaw)\n      .scale(169.529);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/boggs.js\n\n\n\n\nvar k = 2.00276,\n    w = 1.11072;\n\nfunction boggsRaw(lambda, phi) {\n  var theta = mollweideBromleyTheta(pi, phi);\n  return [k * lambda / (1 / cos(phi) + w / cos(theta)), (phi + sqrt2 * sin(theta)) / k];\n}\n\nboggsRaw.invert = function(x, y) {\n  var ky = k * y, theta = y < 0 ? -quarterPi : quarterPi, i = 25, delta, phi;\n  do {\n    phi = ky - sqrt2 * sin(theta);\n    theta -= delta = (sin(2 * theta) + 2 * theta - pi * sin(phi)) / (2 * cos(2 * theta) + 2 + pi * cos(phi) * sqrt2 * cos(theta));\n  } while (abs(delta) > epsilon && --i > 0);\n  phi = ky - sqrt2 * sin(theta);\n  return [x * (1 / cos(phi) + w / cos(theta)) / k, phi];\n};\n\n/* harmony default export */ function boggs() {\n  return (0,src_projection/* default */.Z)(boggsRaw)\n      .scale(160.857);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/parallel1.js\n\n\n\n/* harmony default export */ function parallel1(projectAt) {\n  var phi0 = 0,\n      m = (0,src_projection/* projectionMutator */.r)(projectAt),\n      p = m(phi0);\n\n  p.parallel = function(_) {\n    return arguments.length ? m(phi0 = _ * radians) : phi0 * degrees;\n  };\n\n  return p;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/sinusoidal.js\n\n\n\nfunction sinusoidalRaw(lambda, phi) {\n  return [lambda * cos(phi), phi];\n}\n\nsinusoidalRaw.invert = function(x, y) {\n  return [x / cos(y), y];\n};\n\n/* harmony default export */ function sinusoidal() {\n  return (0,src_projection/* default */.Z)(sinusoidalRaw)\n      .scale(152.63);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/bonne.js\n\n\n\n\nfunction bonneRaw(phi0) {\n  if (!phi0) return sinusoidalRaw;\n  var cotPhi0 = 1 / tan(phi0);\n\n  function forward(lambda, phi) {\n    var rho = cotPhi0 + phi0 - phi,\n        e = rho ? lambda * cos(phi) / rho : rho;\n    return [rho * sin(e), cotPhi0 - rho * cos(e)];\n  }\n\n  forward.invert = function(x, y) {\n    var rho = sqrt(x * x + (y = cotPhi0 - y) * y),\n        phi = cotPhi0 + phi0 - rho;\n    return [rho / cos(phi) * atan2(x, y), phi];\n  };\n\n  return forward;\n}\n\n/* harmony default export */ function bonne() {\n  return parallel1(bonneRaw)\n      .scale(123.082)\n      .center([0, 26.1441])\n      .parallel(45);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/bottomley.js\n\n\n\nfunction bottomleyRaw(sinPsi) {\n\n  function forward(lambda, phi) {\n    var rho = halfPi - phi,\n        eta = rho ? lambda * sinPsi * sin(rho) / rho : rho;\n    return [rho * sin(eta) / sinPsi, halfPi - rho * cos(eta)];\n  }\n\n  forward.invert = function(x, y) {\n    var x1 = x * sinPsi,\n        y1 = halfPi - y,\n        rho = sqrt(x1 * x1 + y1 * y1),\n        eta = atan2(x1, y1);\n    return [(rho ? rho / sin(rho) : 1) * eta / sinPsi, halfPi - rho];\n  };\n\n  return forward;\n}\n\n/* harmony default export */ function bottomley() {\n  var sinPsi = 0.5,\n      m = (0,src_projection/* projectionMutator */.r)(bottomleyRaw),\n      p = m(sinPsi);\n\n  p.fraction = function(_) {\n    return arguments.length ? m(sinPsi = +_) : sinPsi;\n  };\n\n  return p\n      .scale(158.837);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/bromley.js\n\n\n\n\nvar bromleyRaw = mollweideBromleyRaw(1, 4 / pi, pi);\n\n/* harmony default export */ function bromley() {\n  return (0,src_projection/* default */.Z)(bromleyRaw)\n      .scale(152.63);\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/centroid.js\nvar centroid = __nested_webpack_require_5363959__(66624);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/rotation.js\nvar rotation = __nested_webpack_require_5363959__(49386);\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/chamberlin.js\n\n\n\n\n// Azimuthal distance.\nfunction distance(dPhi, c1, s1, c2, s2, dLambda) {\n  var cosdLambda = cos(dLambda), r;\n  if (abs(dPhi) > 1 || abs(dLambda) > 1) {\n    r = acos(s1 * s2 + c1 * c2 * cosdLambda);\n  } else {\n    var sindPhi = sin(dPhi / 2), sindLambda = sin(dLambda / 2);\n    r = 2 * asin(sqrt(sindPhi * sindPhi + c1 * c2 * sindLambda * sindLambda));\n  }\n  return abs(r) > epsilon ? [r, atan2(c2 * sin(dLambda), c1 * s2 - s1 * c2 * cosdLambda)] : [0, 0];\n}\n\n// Angle opposite a, and contained between sides of lengths b and c.\nfunction angle(b, c, a) {\n  return acos((b * b + c * c - a * a) / (2 * b * c));\n}\n\n// Normalize longitude.\nfunction longitude(lambda) {\n  return lambda - 2 * pi * floor((lambda + pi) / (2 * pi));\n}\n\nfunction chamberlinRaw(p0, p1, p2) {\n  var points = [\n    [p0[0], p0[1], sin(p0[1]), cos(p0[1])],\n    [p1[0], p1[1], sin(p1[1]), cos(p1[1])],\n    [p2[0], p2[1], sin(p2[1]), cos(p2[1])]\n  ];\n\n  for (var a = points[2], b, i = 0; i < 3; ++i, a = b) {\n    b = points[i];\n    a.v = distance(b[1] - a[1], a[3], a[2], b[3], b[2], b[0] - a[0]);\n    a.point = [0, 0];\n  }\n\n  var beta0 = angle(points[0].v[0], points[2].v[0], points[1].v[0]),\n      beta1 = angle(points[0].v[0], points[1].v[0], points[2].v[0]),\n      beta2 = pi - beta0;\n\n  points[2].point[1] = 0;\n  points[0].point[0] = -(points[1].point[0] = points[0].v[0] / 2);\n\n  var mean = [\n    points[2].point[0] = points[0].point[0] + points[2].v[0] * cos(beta0),\n    2 * (points[0].point[1] = points[1].point[1] = points[2].v[0] * sin(beta0))\n  ];\n\n  function forward(lambda, phi) {\n    var sinPhi = sin(phi),\n        cosPhi = cos(phi),\n        v = new Array(3), i;\n\n    // Compute distance and azimuth from control points.\n    for (i = 0; i < 3; ++i) {\n      var p = points[i];\n      v[i] = distance(phi - p[1], p[3], p[2], cosPhi, sinPhi, lambda - p[0]);\n      if (!v[i][0]) return p.point;\n      v[i][1] = longitude(v[i][1] - p.v[1]);\n    }\n\n    // Arithmetic mean of interception points.\n    var point = mean.slice();\n    for (i = 0; i < 3; ++i) {\n      var j = i == 2 ? 0 : i + 1;\n      var a = angle(points[i].v[0], v[i][0], v[j][0]);\n      if (v[i][1] < 0) a = -a;\n\n      if (!i) {\n        point[0] += v[i][0] * cos(a);\n        point[1] -= v[i][0] * sin(a);\n      } else if (i == 1) {\n        a = beta1 - a;\n        point[0] -= v[i][0] * cos(a);\n        point[1] -= v[i][0] * sin(a);\n      } else {\n        a = beta2 - a;\n        point[0] += v[i][0] * cos(a);\n        point[1] += v[i][0] * sin(a);\n      }\n    }\n\n    point[0] /= 3, point[1] /= 3;\n    return point;\n  }\n\n  return forward;\n}\n\nfunction pointRadians(p) {\n  return p[0] *= radians, p[1] *= radians, p;\n}\n\nfunction chamberlinAfrica() {\n  return chamberlin([0, 22], [45, 22], [22.5, -22])\n      .scale(380)\n      .center([22.5, 2]);\n}\n\nfunction chamberlin(p0, p1, p2) { // TODO order matters!\n  var c = (0,centroid/* default */.Z)({type: \"MultiPoint\", coordinates: [p0, p1, p2]}),\n      R = [-c[0], -c[1]],\n      r = (0,rotation/* default */.Z)(R),\n      f = chamberlinRaw(pointRadians(r(p0)), pointRadians(r(p1)), pointRadians(r(p2)));\n  f.invert = solve2d(f);\n  var p = (0,src_projection/* default */.Z)(f).rotate(R),\n      center = p.center;\n\n  delete p.rotate;\n\n  p.center = function(_) {\n    return arguments.length ? center(r(_)) : r.invert(center());\n  };\n\n  return p\n      .clipAngle(90);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/collignon.js\n\n\n\nfunction collignonRaw(lambda, phi) {\n  var alpha = sqrt(1 - sin(phi));\n  return [(2 / sqrtPi) * lambda * alpha, sqrtPi * (1 - alpha)];\n}\n\ncollignonRaw.invert = function(x, y) {\n  var lambda = (lambda = y / sqrtPi - 1) * lambda;\n  return [lambda > 0 ? x * sqrt(pi / lambda) / 2 : 0, asin(1 - lambda)];\n};\n\n/* harmony default export */ function collignon() {\n  return (0,src_projection/* default */.Z)(collignonRaw)\n      .scale(95.6464)\n      .center([0, 30]);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/craig.js\n\n\n\nfunction craigRaw(phi0) {\n  var tanPhi0 = tan(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda, (lambda ? lambda / sin(lambda) : 1) * (sin(phi) * cos(lambda) - tanPhi0 * cos(phi))];\n  }\n\n  forward.invert = tanPhi0 ? function(x, y) {\n    if (x) y *= sin(x) / x;\n    var cosLambda = cos(x);\n    return [x, 2 * atan2(sqrt(cosLambda * cosLambda + tanPhi0 * tanPhi0 - y * y) - cosLambda, tanPhi0 - y)];\n  } : function(x, y) {\n    return [x, asin(x ? y * tan(x) / x : y)];\n  };\n\n  return forward;\n}\n\n/* harmony default export */ function craig() {\n  return parallel1(craigRaw)\n      .scale(249.828)\n      .clipAngle(90);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/craster.js\n\n\n\nvar sqrt3 = sqrt(3);\n\nfunction crasterRaw(lambda, phi) {\n  return [sqrt3 * lambda * (2 * cos(2 * phi / 3) - 1) / sqrtPi, sqrt3 * sqrtPi * sin(phi / 3)];\n}\n\ncrasterRaw.invert = function(x, y) {\n  var phi = 3 * asin(y / (sqrt3 * sqrtPi));\n  return [sqrtPi * x / (sqrt3 * (2 * cos(2 * phi / 3) - 1)), phi];\n};\n\n/* harmony default export */ function craster() {\n  return (0,src_projection/* default */.Z)(crasterRaw)\n      .scale(156.19);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/cylindricalEqualArea.js\n\n\n\nfunction cylindricalEqualAreaRaw(phi0) {\n  var cosPhi0 = cos(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda * cosPhi0, sin(phi) / cosPhi0];\n  }\n\n  forward.invert = function(x, y) {\n    return [x / cosPhi0, asin(y * cosPhi0)];\n  };\n\n  return forward;\n}\n\n/* harmony default export */ function cylindricalEqualArea() {\n  return parallel1(cylindricalEqualAreaRaw)\n      .parallel(38.58) // acos(sqrt(width / height / pi)) * radians\n      .scale(195.044); // width / (sqrt(width / height / pi) * 2 * pi)\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/cylindricalStereographic.js\n\n\n\nfunction cylindricalStereographicRaw(phi0) {\n  var cosPhi0 = cos(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda * cosPhi0, (1 + cosPhi0) * tan(phi / 2)];\n  }\n\n  forward.invert = function(x, y) {\n    return [x / cosPhi0, atan(y / (1 + cosPhi0)) * 2];\n  };\n\n  return forward;\n}\n\n/* harmony default export */ function cylindricalStereographic() {\n  return parallel1(cylindricalStereographicRaw)\n      .scale(124.75);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/eckert1.js\n\n\n\nfunction eckert1Raw(lambda, phi) {\n  var alpha = sqrt(8 / (3 * pi));\n  return [\n    alpha * lambda * (1 - abs(phi) / pi),\n    alpha * phi\n  ];\n}\n\neckert1Raw.invert = function(x, y) {\n  var alpha = sqrt(8 / (3 * pi)),\n      phi = y / alpha;\n  return [\n    x / (alpha * (1 - abs(phi) / pi)),\n    phi\n  ];\n};\n\n/* harmony default export */ function eckert1() {\n  return (0,src_projection/* default */.Z)(eckert1Raw)\n      .scale(165.664);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/eckert2.js\n\n\n\nfunction eckert2Raw(lambda, phi) {\n  var alpha = sqrt(4 - 3 * sin(abs(phi)));\n  return [\n    2 / sqrt(6 * pi) * lambda * alpha,\n    sign(phi) * sqrt(2 * pi / 3) * (2 - alpha)\n  ];\n}\n\neckert2Raw.invert = function(x, y) {\n  var alpha = 2 - abs(y) / sqrt(2 * pi / 3);\n  return [\n    x * sqrt(6 * pi) / (2 * alpha),\n    sign(y) * asin((4 - alpha * alpha) / 3)\n  ];\n};\n\n/* harmony default export */ function eckert2() {\n  return (0,src_projection/* default */.Z)(eckert2Raw)\n      .scale(165.664);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/eckert3.js\n\n\n\nfunction eckert3Raw(lambda, phi) {\n  var k = sqrt(pi * (4 + pi));\n  return [\n    2 / k * lambda * (1 + sqrt(1 - 4 * phi * phi / (pi * pi))),\n    4 / k * phi\n  ];\n}\n\neckert3Raw.invert = function(x, y) {\n  var k = sqrt(pi * (4 + pi)) / 2;\n  return [\n    x * k / (1 + sqrt(1 - y * y * (4 + pi) / (4 * pi))),\n    y * k / 2\n  ];\n};\n\n/* harmony default export */ function eckert3() {\n  return (0,src_projection/* default */.Z)(eckert3Raw)\n      .scale(180.739);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/eckert4.js\n\n\n\nfunction eckert4Raw(lambda, phi) {\n  var k = (2 + halfPi) * sin(phi);\n  phi /= 2;\n  for (var i = 0, delta = Infinity; i < 10 && abs(delta) > epsilon; i++) {\n    var cosPhi = cos(phi);\n    phi -= delta = (phi + sin(phi) * (cosPhi + 2) - k) / (2 * cosPhi * (1 + cosPhi));\n  }\n  return [\n    2 / sqrt(pi * (4 + pi)) * lambda * (1 + cos(phi)),\n    2 * sqrt(pi / (4 + pi)) * sin(phi)\n  ];\n}\n\neckert4Raw.invert = function(x, y) {\n  var A = y * sqrt((4 + pi) / pi) / 2,\n      k = asin(A),\n      c = cos(k);\n  return [\n    x / (2 / sqrt(pi * (4 + pi)) * (1 + c)),\n    asin((k + A * (c + 2)) / (2 + halfPi))\n  ];\n};\n\n/* harmony default export */ function eckert4() {\n  return (0,src_projection/* default */.Z)(eckert4Raw)\n      .scale(180.739);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/eckert5.js\n\n\n\nfunction eckert5Raw(lambda, phi) {\n  return [\n    lambda * (1 + cos(phi)) / sqrt(2 + pi),\n    2 * phi / sqrt(2 + pi)\n  ];\n}\n\neckert5Raw.invert = function(x, y) {\n  var k = sqrt(2 + pi),\n      phi = y * k / 2;\n  return [\n    k * x / (1 + cos(phi)),\n    phi\n  ];\n};\n\n/* harmony default export */ function eckert5() {\n  return (0,src_projection/* default */.Z)(eckert5Raw)\n      .scale(173.044);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/eckert6.js\n\n\n\nfunction eckert6Raw(lambda, phi) {\n  var k = (1 + halfPi) * sin(phi);\n  for (var i = 0, delta = Infinity; i < 10 && abs(delta) > epsilon; i++) {\n    phi -= delta = (phi + sin(phi) - k) / (1 + cos(phi));\n  }\n  k = sqrt(2 + pi);\n  return [\n    lambda * (1 + cos(phi)) / k,\n    2 * phi / k\n  ];\n}\n\neckert6Raw.invert = function(x, y) {\n  var j = 1 + halfPi,\n      k = sqrt(j / 2);\n  return [\n    x * 2 * k / (1 + cos(y *= k)),\n    asin((y + sin(y)) / j)\n  ];\n};\n\n/* harmony default export */ function eckert6() {\n  return (0,src_projection/* default */.Z)(eckert6Raw)\n      .scale(173.044);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/eisenlohr.js\n\n\n\n\nvar eisenlohrK = 3 + 2 * sqrt2;\n\nfunction eisenlohrRaw(lambda, phi) {\n  var s0 = sin(lambda /= 2),\n      c0 = cos(lambda),\n      k = sqrt(cos(phi)),\n      c1 = cos(phi /= 2),\n      t = sin(phi) / (c1 + sqrt2 * c0 * k),\n      c = sqrt(2 / (1 + t * t)),\n      v = sqrt((sqrt2 * c1 + (c0 + s0) * k) / (sqrt2 * c1 + (c0 - s0) * k));\n  return [\n    eisenlohrK * (c * (v - 1 / v) - 2 * log(v)),\n    eisenlohrK * (c * t * (v + 1 / v) - 2 * atan(t))\n  ];\n}\n\neisenlohrRaw.invert = function(x, y) {\n  if (!(p = augustRaw.invert(x / 1.2, y * 1.065))) return null;\n  var lambda = p[0], phi = p[1], i = 20, p;\n  x /= eisenlohrK, y /= eisenlohrK;\n  do {\n    var _0 = lambda / 2,\n        _1 = phi / 2,\n        s0 = sin(_0),\n        c0 = cos(_0),\n        s1 = sin(_1),\n        c1 = cos(_1),\n        cos1 = cos(phi),\n        k = sqrt(cos1),\n        t = s1 / (c1 + sqrt2 * c0 * k),\n        t2 = t * t,\n        c = sqrt(2 / (1 + t2)),\n        v0 = (sqrt2 * c1 + (c0 + s0) * k),\n        v1 = (sqrt2 * c1 + (c0 - s0) * k),\n        v2 = v0 / v1,\n        v = sqrt(v2),\n        vm1v = v - 1 / v,\n        vp1v = v + 1 / v,\n        fx = c * vm1v - 2 * log(v) - x,\n        fy = c * t * vp1v - 2 * atan(t) - y,\n        deltatDeltaLambda = s1 && sqrt1_2 * k * s0 * t2 / s1,\n        deltatDeltaPhi = (sqrt2 * c0 * c1 + k) / (2 * (c1 + sqrt2 * c0 * k) * (c1 + sqrt2 * c0 * k) * k),\n        deltacDeltat = -0.5 * t * c * c * c,\n        deltacDeltaLambda = deltacDeltat * deltatDeltaLambda,\n        deltacDeltaPhi = deltacDeltat * deltatDeltaPhi,\n        A = (A = 2 * c1 + sqrt2 * k * (c0 - s0)) * A * v,\n        deltavDeltaLambda = (sqrt2 * c0 * c1 * k + cos1) / A,\n        deltavDeltaPhi = -(sqrt2 * s0 * s1) / (k * A),\n        deltaxDeltaLambda = vm1v * deltacDeltaLambda - 2 * deltavDeltaLambda / v + c * (deltavDeltaLambda + deltavDeltaLambda / v2),\n        deltaxDeltaPhi = vm1v * deltacDeltaPhi - 2 * deltavDeltaPhi / v + c * (deltavDeltaPhi + deltavDeltaPhi / v2),\n        deltayDeltaLambda = t * vp1v * deltacDeltaLambda - 2 * deltatDeltaLambda / (1 + t2) + c * vp1v * deltatDeltaLambda + c * t * (deltavDeltaLambda - deltavDeltaLambda / v2),\n        deltayDeltaPhi = t * vp1v * deltacDeltaPhi - 2 * deltatDeltaPhi / (1 + t2) + c * vp1v * deltatDeltaPhi + c * t * (deltavDeltaPhi - deltavDeltaPhi / v2),\n        denominator = deltaxDeltaPhi * deltayDeltaLambda - deltayDeltaPhi * deltaxDeltaLambda;\n    if (!denominator) break;\n    var deltaLambda = (fy * deltaxDeltaPhi - fx * deltayDeltaPhi) / denominator,\n        deltaPhi = (fx * deltayDeltaLambda - fy * deltaxDeltaLambda) / denominator;\n    lambda -= deltaLambda;\n    phi = max(-halfPi, min(halfPi, phi - deltaPhi));\n  } while ((abs(deltaLambda) > epsilon || abs(deltaPhi) > epsilon) && --i > 0);\n  return abs(abs(phi) - halfPi) < epsilon ? [0, phi] : i && [lambda, phi];\n};\n\n/* harmony default export */ function eisenlohr() {\n  return (0,src_projection/* default */.Z)(eisenlohrRaw)\n      .scale(62.5271);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/fahey.js\n\n\n\nvar faheyK = cos(35 * radians);\n\nfunction faheyRaw(lambda, phi) {\n  var t = tan(phi / 2);\n  return [lambda * faheyK * sqrt(1 - t * t), (1 + faheyK) * t];\n}\n\nfaheyRaw.invert = function(x, y) {\n  var t = y / (1 + faheyK);\n  return [x && x / (faheyK * sqrt(1 - t * t)), 2 * atan(t)];\n};\n\n/* harmony default export */ function fahey() {\n  return (0,src_projection/* default */.Z)(faheyRaw)\n      .scale(137.152);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/foucaut.js\n\n\n\nfunction foucautRaw(lambda, phi) {\n  var k = phi / 2, cosk = cos(k);\n  return [ 2 * lambda / sqrtPi * cos(phi) * cosk * cosk, sqrtPi * tan(k)];\n}\n\nfoucautRaw.invert = function(x, y) {\n  var k = atan(y / sqrtPi), cosk = cos(k), phi = 2 * k;\n  return [x * sqrtPi / 2 / (cos(phi) * cosk * cosk), phi];\n};\n\n/* harmony default export */ function foucaut() {\n  return (0,src_projection/* default */.Z)(foucautRaw)\n      .scale(135.264);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/foucautSinusoidal.js\n\n\n\n\nfunction foucautSinusoidalRaw(alpha) {\n  var beta = 1 - alpha,\n      equatorial = raw(pi, 0)[0] - raw(-pi, 0)[0],\n      polar = raw(0, halfPi)[1] - raw(0, -halfPi)[1],\n      ratio = sqrt(2 * polar / equatorial);\n\n  function raw(lambda, phi) {\n    var cosphi = cos(phi),\n        sinphi = sin(phi);\n    return [\n      cosphi / (beta + alpha * cosphi) * lambda,\n      beta * phi + alpha * sinphi\n    ];\n  }\n\n  function forward(lambda, phi) {\n    var p = raw(lambda, phi);\n    return [p[0] * ratio, p[1] / ratio];\n  }\n\n  function forwardMeridian(phi) {\n    return forward(0, phi)[1];\n  }\n\n  forward.invert = function(x, y) {\n    var phi = solve(forwardMeridian, y),\n        lambda = x / ratio * (alpha + beta / cos(phi));\n    return [lambda, phi];\n  };\n\n  return forward;\n}\n\n/* harmony default export */ function foucautSinusoidal() {\n  var alpha = 0.5,\n      m = (0,src_projection/* projectionMutator */.r)(foucautSinusoidalRaw),\n      p = m(alpha);\n\n  p.alpha = function(_) {\n    return arguments.length ? m(alpha = +_) : alpha;\n  };\n\n  return p\n      .scale(168.725);\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/projection/orthographic.js\nvar orthographic = __nested_webpack_require_5363959__(57962);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/projection/equirectangular.js\nvar projection_equirectangular = __nested_webpack_require_5363959__(97492);\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/gilbert.js\n\n\n\nfunction gilbertForward(point) {\n  return [point[0] / 2, asin(tan(point[1] / 2 * radians)) * degrees];\n}\n\nfunction gilbertInvert(point) {\n  return [point[0] * 2, 2 * atan(sin(point[1] * radians)) * degrees];\n}\n\n/* harmony default export */ function gilbert(projectionType) {\n  if (projectionType == null) projectionType = orthographic/* default */.Z;\n  var projection = projectionType(),\n      equirectangular = (0,projection_equirectangular/* default */.Z)().scale(degrees).precision(0).clipAngle(null).translate([0, 0]); // antimeridian cutting\n\n  function gilbert(point) {\n    return projection(gilbertForward(point));\n  }\n\n  if (projection.invert) gilbert.invert = function(point) {\n    return gilbertInvert(projection.invert(point));\n  };\n\n  gilbert.stream = function(stream) {\n    var s1 = projection.stream(stream), s0 = equirectangular.stream({\n      point: function(lambda, phi) { s1.point(lambda / 2, asin(tan(-phi / 2 * radians)) * degrees); },\n      lineStart: function() { s1.lineStart(); },\n      lineEnd: function() { s1.lineEnd(); },\n      polygonStart: function() { s1.polygonStart(); },\n      polygonEnd: function() { s1.polygonEnd(); }\n    });\n    s0.sphere = s1.sphere;\n    return s0;\n  };\n\n  function property(name) {\n    gilbert[name] = function() {\n      return arguments.length ? (projection[name].apply(projection, arguments), gilbert) : projection[name]();\n    };\n  }\n\n  gilbert.rotate = function(_) {\n    return arguments.length ? (equirectangular.rotate(_), gilbert) : equirectangular.rotate();\n  };\n\n  gilbert.center = function(_) {\n    return arguments.length ? (projection.center(gilbertForward(_)), gilbert) : gilbertInvert(projection.center());\n  };\n\n  property(\"angle\");\n  property(\"clipAngle\");\n  property(\"clipExtent\");\n  property(\"fitExtent\");\n  property(\"fitHeight\");\n  property(\"fitSize\");\n  property(\"fitWidth\");\n  property(\"scale\");\n  property(\"translate\");\n  property(\"precision\");\n\n  return gilbert\n      .scale(249.5);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/gingery.js\n\n\n\nfunction gingeryRaw(rho, n) {\n  var k = 2 * pi / n,\n      rho2 = rho * rho;\n\n  function forward(lambda, phi) {\n    var p = (0,azimuthalEquidistant/* azimuthalEquidistantRaw */.N)(lambda, phi),\n        x = p[0],\n        y = p[1],\n        r2 = x * x + y * y;\n\n    if (r2 > rho2) {\n      var r = sqrt(r2),\n          theta = atan2(y, x),\n          theta0 = k * round(theta / k),\n          alpha = theta - theta0,\n          rhoCosAlpha = rho * cos(alpha),\n          k_ = (rho * sin(alpha) - alpha * sin(rhoCosAlpha)) / (halfPi - rhoCosAlpha),\n          s_ = gingeryLength(alpha, k_),\n          e = (pi - rho) / gingeryIntegrate(s_, rhoCosAlpha, pi);\n\n      x = r;\n      var i = 50, delta;\n      do {\n        x -= delta = (rho + gingeryIntegrate(s_, rhoCosAlpha, x) * e - r) / (s_(x) * e);\n      } while (abs(delta) > epsilon && --i > 0);\n\n      y = alpha * sin(x);\n      if (x < halfPi) y -= k_ * (x - halfPi);\n\n      var s = sin(theta0),\n          c = cos(theta0);\n      p[0] = x * c - y * s;\n      p[1] = x * s + y * c;\n    }\n    return p;\n  }\n\n  forward.invert = function(x, y) {\n    var r2 = x * x + y * y;\n    if (r2 > rho2) {\n      var r = sqrt(r2),\n          theta = atan2(y, x),\n          theta0 = k * round(theta / k),\n          dTheta = theta - theta0;\n\n      x = r * cos(dTheta);\n      y = r * sin(dTheta);\n\n      var x_halfPi = x - halfPi,\n          sinx = sin(x),\n          alpha = y / sinx,\n          delta = x < halfPi ? Infinity : 0,\n          i = 10;\n\n      while (true) {\n        var rhosinAlpha = rho * sin(alpha),\n            rhoCosAlpha = rho * cos(alpha),\n            sinRhoCosAlpha = sin(rhoCosAlpha),\n            halfPi_RhoCosAlpha = halfPi - rhoCosAlpha,\n            k_ = (rhosinAlpha - alpha * sinRhoCosAlpha) / halfPi_RhoCosAlpha,\n            s_ = gingeryLength(alpha, k_);\n\n        if (abs(delta) < epsilon2 || !--i) break;\n\n        alpha -= delta = (alpha * sinx - k_ * x_halfPi - y) / (\n          sinx - x_halfPi * 2 * (\n            halfPi_RhoCosAlpha * (rhoCosAlpha + alpha * rhosinAlpha * cos(rhoCosAlpha) - sinRhoCosAlpha) -\n            rhosinAlpha * (rhosinAlpha - alpha * sinRhoCosAlpha)\n          ) / (halfPi_RhoCosAlpha * halfPi_RhoCosAlpha));\n      }\n      r = rho + gingeryIntegrate(s_, rhoCosAlpha, x) * (pi - rho) / gingeryIntegrate(s_, rhoCosAlpha, pi);\n      theta = theta0 + alpha;\n      x = r * cos(theta);\n      y = r * sin(theta);\n    }\n    return azimuthalEquidistant/* azimuthalEquidistantRaw.invert */.N.invert(x, y);\n  };\n\n  return forward;\n}\n\nfunction gingeryLength(alpha, k) {\n  return function(x) {\n    var y_ = alpha * cos(x);\n    if (x < halfPi) y_ -= k;\n    return sqrt(1 + y_ * y_);\n  };\n}\n\n// Numerical integration: trapezoidal rule.\nfunction gingeryIntegrate(f, a, b) {\n  var n = 50,\n      h = (b - a) / n,\n      s = f(a) + f(b);\n  for (var i = 1, x = a; i < n; ++i) s += 2 * f(x += h);\n  return s * 0.5 * h;\n}\n\n/* harmony default export */ function gingery() {\n  var n = 6,\n      rho = 30 * radians,\n      cRho = cos(rho),\n      sRho = sin(rho),\n      m = (0,src_projection/* projectionMutator */.r)(gingeryRaw),\n      p = m(rho, n),\n      stream_ = p.stream,\n      epsilon = 1e-2,\n      cr = -cos(epsilon * radians),\n      sr = sin(epsilon * radians);\n\n  p.radius = function(_) {\n    if (!arguments.length) return rho * degrees;\n    cRho = cos(rho = _ * radians);\n    sRho = sin(rho);\n    return m(rho, n);\n  };\n\n  p.lobes = function(_) {\n    if (!arguments.length) return n;\n    return m(rho, n = +_);\n  };\n\n  p.stream = function(stream) {\n    var rotate = p.rotate(),\n        rotateStream = stream_(stream),\n        sphereStream = (p.rotate([0, 0]), stream_(stream));\n    p.rotate(rotate);\n    rotateStream.sphere = function() {\n      sphereStream.polygonStart(), sphereStream.lineStart();\n      for (var i = 0, delta = 2 * pi / n, phi = 0; i < n; ++i, phi -= delta) {\n        sphereStream.point(atan2(sr * cos(phi), cr) * degrees, asin(sr * sin(phi)) * degrees);\n        sphereStream.point(atan2(sRho * cos(phi - delta / 2), cRho) * degrees, asin(sRho * sin(phi - delta / 2)) * degrees);\n      }\n      sphereStream.lineEnd(), sphereStream.polygonEnd();\n    };\n    return rotateStream;\n  };\n\n  return p\n      .rotate([90, -40])\n      .scale(91.7095)\n      .clipAngle(180 - 1e-3);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/ginzburgPolyconic.js\n\n\n/* harmony default export */ function ginzburgPolyconic(a, b, c, d, e, f, g, h) {\n  if (arguments.length < 8) h = 0;\n\n  function forward(lambda, phi) {\n    if (!phi) return [a * lambda / pi, 0];\n    var phi2 = phi * phi,\n        xB = a + phi2 * (b + phi2 * (c + phi2 * d)),\n        yB = phi * (e - 1 + phi2 * (f - h + phi2 * g)),\n        m = (xB * xB + yB * yB) / (2 * yB),\n        alpha = lambda * asin(xB / m) / pi;\n    return [m * sin(alpha), phi * (1 + phi2 * h) + m * (1 - cos(alpha))];\n  }\n\n  forward.invert = function(x, y) {\n    var lambda = pi * x / a,\n        phi = y,\n        deltaLambda, deltaPhi, i = 50;\n    do {\n      var phi2 = phi * phi,\n          xB = a + phi2 * (b + phi2 * (c + phi2 * d)),\n          yB = phi * (e - 1 + phi2 * (f - h + phi2 * g)),\n          p = xB * xB + yB * yB,\n          q = 2 * yB,\n          m = p / q,\n          m2 = m * m,\n          dAlphadLambda = asin(xB / m) / pi,\n          alpha = lambda * dAlphadLambda,\n          xB2 = xB * xB,\n          dxBdPhi = (2 * b + phi2 * (4 * c + phi2 * 6 * d)) * phi,\n          dyBdPhi = e + phi2 * (3 * f + phi2 * 5 * g),\n          dpdPhi = 2 * (xB * dxBdPhi + yB * (dyBdPhi - 1)),\n          dqdPhi = 2 * (dyBdPhi - 1),\n          dmdPhi = (dpdPhi * q - p * dqdPhi) / (q * q),\n          cosAlpha = cos(alpha),\n          sinAlpha = sin(alpha),\n          mcosAlpha = m * cosAlpha,\n          msinAlpha = m * sinAlpha,\n          dAlphadPhi = ((lambda / pi) * (1 / sqrt(1 - xB2 / m2)) * (dxBdPhi * m - xB * dmdPhi)) / m2,\n          fx = msinAlpha - x,\n          fy = phi * (1 + phi2 * h) + m - mcosAlpha - y,\n          deltaxDeltaPhi = dmdPhi * sinAlpha + mcosAlpha * dAlphadPhi,\n          deltaxDeltaLambda = mcosAlpha * dAlphadLambda,\n          deltayDeltaPhi = 1 + dmdPhi - (dmdPhi * cosAlpha - msinAlpha * dAlphadPhi),\n          deltayDeltaLambda = msinAlpha * dAlphadLambda,\n          denominator = deltaxDeltaPhi * deltayDeltaLambda - deltayDeltaPhi * deltaxDeltaLambda;\n      if (!denominator) break;\n      lambda -= deltaLambda = (fy * deltaxDeltaPhi - fx * deltayDeltaPhi) / denominator;\n      phi -= deltaPhi = (fx * deltayDeltaLambda - fy * deltaxDeltaLambda) / denominator;\n    } while ((abs(deltaLambda) > epsilon || abs(deltaPhi) > epsilon) && --i > 0);\n    return [lambda, phi];\n  };\n\n  return forward;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/ginzburg4.js\n\n\n\nvar ginzburg4Raw = ginzburgPolyconic(2.8284, -1.6988, 0.75432, -0.18071, 1.76003, -0.38914, 0.042555);\n\n/* harmony default export */ function ginzburg4() {\n  return (0,src_projection/* default */.Z)(ginzburg4Raw)\n      .scale(149.995);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/ginzburg5.js\n\n\n\nvar ginzburg5Raw = ginzburgPolyconic(2.583819, -0.835827, 0.170354, -0.038094, 1.543313, -0.411435,0.082742);\n\n/* harmony default export */ function ginzburg5() {\n  return (0,src_projection/* default */.Z)(ginzburg5Raw)\n      .scale(153.93);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/ginzburg6.js\n\n\n\n\nvar ginzburg6Raw = ginzburgPolyconic(5 / 6 * pi, -0.62636, -0.0344, 0, 1.3493, -0.05524, 0, 0.045);\n\n/* harmony default export */ function ginzburg6() {\n  return (0,src_projection/* default */.Z)(ginzburg6Raw)\n      .scale(130.945);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/ginzburg8.js\n\n\n\nfunction ginzburg8Raw(lambda, phi) {\n  var lambda2 = lambda * lambda,\n      phi2 = phi * phi;\n  return [\n    lambda * (1 - 0.162388 * phi2) * (0.87 - 0.000952426 * lambda2 * lambda2),\n    phi * (1 + phi2 / 12)\n  ];\n}\n\nginzburg8Raw.invert = function(x, y) {\n  var lambda = x,\n      phi = y,\n      i = 50, delta;\n  do {\n    var phi2 = phi * phi;\n    phi -= delta = (phi * (1 + phi2 / 12) - y) / (1 + phi2 / 4);\n  } while (abs(delta) > epsilon && --i > 0);\n  i = 50;\n  x /= 1 -0.162388 * phi2;\n  do {\n    var lambda4 = (lambda4 = lambda * lambda) * lambda4;\n    lambda -= delta = (lambda * (0.87 - 0.000952426 * lambda4) - x) / (0.87 - 0.00476213 * lambda4);\n  } while (abs(delta) > epsilon && --i > 0);\n  return [lambda, phi];\n};\n\n/* harmony default export */ function ginzburg8() {\n  return (0,src_projection/* default */.Z)(ginzburg8Raw)\n      .scale(131.747);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/ginzburg9.js\n\n\n\nvar ginzburg9Raw = ginzburgPolyconic(2.6516, -0.76534, 0.19123, -0.047094, 1.36289, -0.13965,0.031762);\n\n/* harmony default export */ function ginzburg9() {\n  return (0,src_projection/* default */.Z)(ginzburg9Raw)\n      .scale(131.087);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/square.js\n\n\n/* harmony default export */ function square(project) {\n  var dx = project(halfPi, 0)[0] - project(-halfPi, 0)[0];\n\n  function projectSquare(lambda, phi) {\n    var s = lambda > 0 ? -0.5 : 0.5,\n        point = project(lambda + s * pi, phi);\n    point[0] -= s * dx;\n    return point;\n  }\n\n  if (project.invert) projectSquare.invert = function(x, y) {\n    var s = x > 0 ? -0.5 : 0.5,\n        location = project.invert(x + s * dx, y),\n        lambda = location[0] - s * pi;\n    if (lambda < -pi) lambda += 2 * pi;\n    else if (lambda > pi) lambda -= 2 * pi;\n    location[0] = lambda;\n    return location;\n  };\n\n  return projectSquare;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/gringorten.js\n\n\n\n\nfunction gringortenRaw(lambda, phi) {\n  var sLambda = sign(lambda),\n      sPhi = sign(phi),\n      cosPhi = cos(phi),\n      x = cos(lambda) * cosPhi,\n      y = sin(lambda) * cosPhi,\n      z = sin(sPhi * phi);\n  lambda = abs(atan2(y, z));\n  phi = asin(x);\n  if (abs(lambda - halfPi) > epsilon) lambda %= halfPi;\n  var point = gringortenHexadecant(lambda > pi / 4 ? halfPi - lambda : lambda, phi);\n  if (lambda > pi / 4) z = point[0], point[0] = -point[1], point[1] = -z;\n  return (point[0] *= sLambda, point[1] *= -sPhi, point);\n}\n\ngringortenRaw.invert = function(x, y) {\n  if (abs(x) > 1) x = sign(x) * 2 - x;\n  if (abs(y) > 1) y = sign(y) * 2 - y;\n  var sx = sign(x),\n      sy = sign(y),\n      x0 = -sx * x,\n      y0 = -sy * y,\n      t = y0 / x0 < 1,\n      p = gringortenHexadecantInvert(t ? y0 : x0, t ? x0 : y0),\n      lambda = p[0],\n      phi = p[1],\n      cosPhi = cos(phi);\n  if (t) lambda = -halfPi - lambda;\n  return [sx * (atan2(sin(lambda) * cosPhi, -sin(phi)) + pi), sy * asin(cos(lambda) * cosPhi)];\n};\n\nfunction gringortenHexadecant(lambda, phi) {\n  if (phi === halfPi) return [0, 0];\n\n  var sinPhi = sin(phi),\n      r = sinPhi * sinPhi,\n      r2 = r * r,\n      j = 1 + r2,\n      k = 1 + 3 * r2,\n      q = 1 - r2,\n      z = asin(1 / sqrt(j)),\n      v = q + r * j * z,\n      p2 = (1 - sinPhi) / v,\n      p = sqrt(p2),\n      a2 = p2 * j,\n      a = sqrt(a2),\n      h = p * q,\n      x,\n      i;\n\n  if (lambda === 0) return [0, -(h + r * a)];\n\n  var cosPhi = cos(phi),\n      secPhi = 1 / cosPhi,\n      drdPhi = 2 * sinPhi * cosPhi,\n      dvdPhi = (-3 * r + z * k) * drdPhi,\n      dp2dPhi = (-v * cosPhi - (1 - sinPhi) * dvdPhi) / (v * v),\n      dpdPhi = (0.5 * dp2dPhi) / p,\n      dhdPhi = q * dpdPhi - 2 * r * p * drdPhi,\n      dra2dPhi = r * j * dp2dPhi + p2 * k * drdPhi,\n      mu = -secPhi * drdPhi,\n      nu = -secPhi * dra2dPhi,\n      zeta = -2 * secPhi * dhdPhi,\n      lambda1 = 4 * lambda / pi,\n      delta;\n\n  // Slower but accurate bisection method.\n  if (lambda > 0.222 * pi || phi < pi / 4 && lambda > 0.175 * pi) {\n    x = (h + r * sqrt(a2 * (1 + r2) - h * h)) / (1 + r2);\n    if (lambda > pi / 4) return [x, x];\n    var x1 = x, x0 = 0.5 * x;\n    x = 0.5 * (x0 + x1), i = 50;\n    do {\n      var g = sqrt(a2 - x * x),\n          f = (x * (zeta + mu * g) + nu * asin(x / a)) - lambda1;\n      if (!f) break;\n      if (f < 0) x0 = x;\n      else x1 = x;\n      x = 0.5 * (x0 + x1);\n    } while (abs(x1 - x0) > epsilon && --i > 0);\n  }\n\n  // Newton-Raphson.\n  else {\n    x = epsilon, i = 25;\n    do {\n      var x2 = x * x,\n          g2 = sqrt(a2 - x2),\n          zetaMug = zeta + mu * g2,\n          f2 = x * zetaMug + nu * asin(x / a) - lambda1,\n          df = zetaMug + (nu - mu * x2) / g2;\n      x -= delta = g2 ? f2 / df : 0;\n    } while (abs(delta) > epsilon && --i > 0);\n  }\n\n  return [x, -h - r * sqrt(a2 - x * x)];\n}\n\nfunction gringortenHexadecantInvert(x, y) {\n  var x0 = 0,\n      x1 = 1,\n      r = 0.5,\n      i = 50;\n\n  while (true) {\n    var r2 = r * r,\n        sinPhi = sqrt(r),\n        z = asin(1 / sqrt(1 + r2)),\n        v = (1 - r2) + r * (1 + r2) * z,\n        p2 = (1 - sinPhi) / v,\n        p = sqrt(p2),\n        a2 = p2 * (1 + r2),\n        h = p * (1 - r2),\n        g2 = a2 - x * x,\n        g = sqrt(g2),\n        y0 = y + h + r * g;\n    if (abs(x1 - x0) < epsilon2 || --i === 0 || y0 === 0) break;\n    if (y0 > 0) x0 = r;\n    else x1 = r;\n    r = 0.5 * (x0 + x1);\n  }\n\n  if (!i) return null;\n\n  var phi = asin(sinPhi),\n      cosPhi = cos(phi),\n      secPhi = 1 / cosPhi,\n      drdPhi = 2 * sinPhi * cosPhi,\n      dvdPhi = (-3 * r + z * (1 + 3 * r2)) * drdPhi,\n      dp2dPhi = (-v * cosPhi - (1 - sinPhi) * dvdPhi) / (v * v),\n      dpdPhi = 0.5 * dp2dPhi / p,\n      dhdPhi = (1 - r2) * dpdPhi - 2 * r * p * drdPhi,\n      zeta = -2 * secPhi * dhdPhi,\n      mu = -secPhi * drdPhi,\n      nu = -secPhi * (r * (1 + r2) * dp2dPhi + p2 * (1 + 3 * r2) * drdPhi);\n\n  return [pi / 4 * (x * (zeta + mu * g) + nu * asin(x / sqrt(a2))), phi];\n}\n\n/* harmony default export */ function gringorten() {\n  return (0,src_projection/* default */.Z)(square(gringortenRaw))\n      .scale(239.75);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/elliptic.js\n\n\n// Returns [sn, cn, dn](u + iv|m).\nfunction ellipticJi(u, v, m) {\n  var a, b, c;\n  if (!u) {\n    b = ellipticJ(v, 1 - m);\n    return [\n      [0, b[0] / b[1]],\n      [1 / b[1], 0],\n      [b[2] / b[1], 0]\n    ];\n  }\n  a = ellipticJ(u, m);\n  if (!v) return [[a[0], 0], [a[1], 0], [a[2], 0]];\n  b = ellipticJ(v, 1 - m);\n  c = b[1] * b[1] + m * a[0] * a[0] * b[0] * b[0];\n  return [\n    [a[0] * b[2] / c, a[1] * a[2] * b[0] * b[1] / c],\n    [a[1] * b[1] / c, -a[0] * a[2] * b[0] * b[2] / c],\n    [a[2] * b[1] * b[2] / c, -m * a[0] * a[1] * b[0] / c]\n  ];\n}\n\n// Returns [sn, cn, dn, ph](u|m).\nfunction ellipticJ(u, m) {\n  var ai, b, phi, t, twon;\n  if (m < epsilon) {\n    t = sin(u);\n    b = cos(u);\n    ai = m * (u - t * b) / 4;\n    return [\n      t - ai * b,\n      b + ai * t,\n      1 - m * t * t / 2,\n      u - ai\n    ];\n  }\n  if (m >= 1 - epsilon) {\n    ai = (1 - m) / 4;\n    b = cosh(u);\n    t = tanh(u);\n    phi = 1 / b;\n    twon = b * sinh(u);\n    return [\n      t + ai * (twon - u) / (b * b),\n      phi - ai * t * phi * (twon - u),\n      phi + ai * t * phi * (twon + u),\n      2 * atan(exp(u)) - halfPi + ai * (twon - u) / b\n    ];\n  }\n\n  var a = [1, 0, 0, 0, 0, 0, 0, 0, 0],\n      c = [sqrt(m), 0, 0, 0, 0, 0, 0, 0, 0],\n      i = 0;\n  b = sqrt(1 - m);\n  twon = 1;\n\n  while (abs(c[i] / a[i]) > epsilon && i < 8) {\n    ai = a[i++];\n    c[i] = (ai - b) / 2;\n    a[i] = (ai + b) / 2;\n    b = sqrt(ai * b);\n    twon *= 2;\n  }\n\n  phi = twon * a[i] * u;\n  do {\n    t = c[i] * sin(b = phi) / a[i];\n    phi = (asin(t) + phi) / 2;\n  } while (--i);\n\n  return [sin(phi), t = cos(phi), t / cos(phi - b), phi];\n}\n\n// Calculate F(phi+iPsi|m).\n// See Abramowitz and Stegun, 17.4.11.\nfunction ellipticFi(phi, psi, m) {\n  var r = abs(phi),\n      i = abs(psi),\n      sinhPsi = sinh(i);\n  if (r) {\n    var cscPhi = 1 / sin(r),\n        cotPhi2 = 1 / (tan(r) * tan(r)),\n        b = -(cotPhi2 + m * (sinhPsi * sinhPsi * cscPhi * cscPhi) - 1 + m),\n        c = (m - 1) * cotPhi2,\n        cotLambda2 = (-b + sqrt(b * b - 4 * c)) / 2;\n    return [\n      ellipticF(atan(1 / sqrt(cotLambda2)), m) * sign(phi),\n      ellipticF(atan(sqrt((cotLambda2 / cotPhi2 - 1) / m)), 1 - m) * sign(psi)\n    ];\n  }\n  return [\n    0,\n    ellipticF(atan(sinhPsi), 1 - m) * sign(psi)\n  ];\n}\n\n// Calculate F(phi|m) where m = k² = sin²α.\n// See Abramowitz and Stegun, 17.6.7.\nfunction ellipticF(phi, m) {\n  if (!m) return phi;\n  if (m === 1) return log(tan(phi / 2 + quarterPi));\n  var a = 1,\n      b = sqrt(1 - m),\n      c = sqrt(m);\n  for (var i = 0; abs(c) > epsilon; i++) {\n    if (phi % pi) {\n      var dPhi = atan(b * tan(phi) / a);\n      if (dPhi < 0) dPhi += pi;\n      phi += dPhi + ~~(phi / pi) * pi;\n    } else phi += phi;\n    c = (a + b) / 2;\n    b = sqrt(a * b);\n    c = ((a = c) - b) / 2;\n  }\n  return phi / (pow(2, i) * a);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/guyou.js\n\n\n\n\n\nfunction guyouRaw(lambda, phi) {\n  var k_ = (sqrt2 - 1) / (sqrt2 + 1),\n      k = sqrt(1 - k_ * k_),\n      K = ellipticF(halfPi, k * k),\n      f = -1,\n      psi = log(tan(pi / 4 + abs(phi) / 2)),\n      r = exp(f * psi) / sqrt(k_),\n      at = guyouComplexAtan(r * cos(f * lambda), r * sin(f * lambda)),\n      t = ellipticFi(at[0], at[1], k * k);\n  return [-t[1], (phi >= 0 ? 1 : -1) * (0.5 * K - t[0])];\n}\n\nfunction guyouComplexAtan(x, y) {\n  var x2 = x * x,\n      y_1 = y + 1,\n      t = 1 - x2 - y * y;\n  return [\n   0.5 * ((x >= 0 ? halfPi : -halfPi) - atan2(t, 2 * x)),\n    -0.25 * log(t * t + 4 * x2) +0.5 * log(y_1 * y_1 + x2)\n  ];\n}\n\nfunction guyouComplexDivide(a, b) {\n  var denominator = b[0] * b[0] + b[1] * b[1];\n  return [\n    (a[0] * b[0] + a[1] * b[1]) / denominator,\n    (a[1] * b[0] - a[0] * b[1]) / denominator\n  ];\n}\n\nguyouRaw.invert = function(x, y) {\n  var k_ = (sqrt2 - 1) / (sqrt2 + 1),\n      k = sqrt(1 - k_ * k_),\n      K = ellipticF(halfPi, k * k),\n      f = -1,\n      j = ellipticJi(0.5 * K - y, -x, k * k),\n      tn = guyouComplexDivide(j[0], j[1]),\n      lambda = atan2(tn[1], tn[0]) / f;\n  return [\n    lambda,\n    2 * atan(exp(0.5 / f * log(k_ * tn[0] * tn[0] + k_ * tn[1] * tn[1]))) - halfPi\n  ];\n};\n\n/* harmony default export */ function guyou() {\n  return (0,src_projection/* default */.Z)(square(guyouRaw))\n      .scale(151.496);\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/circle.js + 1 modules\nvar src_circle = __nested_webpack_require_5363959__(7613);\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/hammerRetroazimuthal.js\n\n\n\nfunction hammerRetroazimuthalRaw(phi0) {\n  var sinPhi0 = sin(phi0),\n      cosPhi0 = cos(phi0),\n      rotate = hammerRetroazimuthalRotation(phi0);\n\n  rotate.invert = hammerRetroazimuthalRotation(-phi0);\n\n  function forward(lambda, phi) {\n    var p = rotate(lambda, phi);\n    lambda = p[0], phi = p[1];\n    var sinPhi = sin(phi),\n        cosPhi = cos(phi),\n        cosLambda = cos(lambda),\n        z = acos(sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosLambda),\n        sinz = sin(z),\n        K = abs(sinz) > epsilon ? z / sinz : 1;\n    return [\n      K * cosPhi0 * sin(lambda),\n      (abs(lambda) > halfPi ? K : -K) // rotate for back hemisphere\n        * (sinPhi0 * cosPhi - cosPhi0 * sinPhi * cosLambda)\n    ];\n  }\n\n  forward.invert = function(x, y) {\n    var rho = sqrt(x * x + y * y),\n        sinz = -sin(rho),\n        cosz = cos(rho),\n        a = rho * cosz,\n        b = -y * sinz,\n        c = rho * sinPhi0,\n        d = sqrt(a * a + b * b - c * c),\n        phi = atan2(a * c + b * d, b * c - a * d),\n        lambda = (rho > halfPi ? -1 : 1) * atan2(x * sinz, rho * cos(phi) * cosz + y * sin(phi) * sinz);\n    return rotate.invert(lambda, phi);\n  };\n\n  return forward;\n}\n\n// Latitudinal rotation by phi0.\n// Temporary hack until D3 supports arbitrary small-circle clipping origins.\nfunction hammerRetroazimuthalRotation(phi0) {\n  var sinPhi0 = sin(phi0),\n      cosPhi0 = cos(phi0);\n\n  return function(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi);\n    return [\n      atan2(y, x * cosPhi0 - z * sinPhi0),\n      asin(z * cosPhi0 + x * sinPhi0)\n    ];\n  };\n}\n\n/* harmony default export */ function hammerRetroazimuthal() {\n  var phi0 = 0,\n      m = (0,src_projection/* projectionMutator */.r)(hammerRetroazimuthalRaw),\n      p = m(phi0),\n      rotate_ = p.rotate,\n      stream_ = p.stream,\n      circle = (0,src_circle/* default */.Z)();\n\n  p.parallel = function(_) {\n    if (!arguments.length) return phi0 * degrees;\n    var r = p.rotate();\n    return m(phi0 = _ * radians).rotate(r);\n  };\n\n  // Temporary hack; see hammerRetroazimuthalRotation.\n  p.rotate = function(_) {\n    if (!arguments.length) return (_ = rotate_.call(p), _[1] += phi0 * degrees, _);\n    rotate_.call(p, [_[0], _[1] - phi0 * degrees]);\n    circle.center([-_[0], -_[1]]);\n    return p;\n  };\n\n  p.stream = function(stream) {\n    stream = stream_(stream);\n    stream.sphere = function() {\n      stream.polygonStart();\n      var epsilon = 1e-2,\n          ring = circle.radius(90 - epsilon)().coordinates[0],\n          n = ring.length - 1,\n          i = -1,\n          p;\n      stream.lineStart();\n      while (++i < n) stream.point((p = ring[i])[0], p[1]);\n      stream.lineEnd();\n      ring = circle.radius(90 + epsilon)().coordinates[0];\n      n = ring.length - 1;\n      stream.lineStart();\n      while (--i >= 0) stream.point((p = ring[i])[0], p[1]);\n      stream.lineEnd();\n      stream.polygonEnd();\n    };\n    return stream;\n  };\n\n  return p\n      .scale(79.4187)\n      .parallel(45)\n      .clipAngle(180 - 1e-3);\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-array/src/index.js + 14 modules\nvar src = __nested_webpack_require_5363959__(33064);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/stream.js\nvar src_stream = __nested_webpack_require_5363959__(72736);\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/healpix.js\n\n\n\n\n\n\nvar K = 3,\n    healpixParallel = asin(1 - 1 / K) * degrees,\n    healpixLambert = cylindricalEqualAreaRaw(0);\n\nfunction healpixRaw(H) {\n  var phi0 = healpixParallel * radians,\n      dx = collignonRaw(pi, phi0)[0] - collignonRaw(-pi, phi0)[0],\n      y0 = healpixLambert(0, phi0)[1],\n      y1 = collignonRaw(0, phi0)[1],\n      dy1 = sqrtPi - y1,\n      k = tau / H,\n      w = 4 / tau,\n      h = y0 + (dy1 * dy1 * 4) / tau;\n\n  function forward(lambda, phi) {\n    var point,\n        phi2 = abs(phi);\n    if (phi2 > phi0) {\n      var i = min(H - 1, max(0, floor((lambda + pi) / k)));\n      lambda += pi * (H - 1) / H - i * k;\n      point = collignonRaw(lambda, phi2);\n      point[0] = point[0] * tau / dx - tau * (H - 1) / (2 * H) + i * tau / H;\n      point[1] = y0 + (point[1] - y1) * 4 * dy1 / tau;\n      if (phi < 0) point[1] = -point[1];\n    } else {\n      point = healpixLambert(lambda, phi);\n    }\n    point[0] *= w, point[1] /= h;\n    return point;\n  }\n\n  forward.invert = function(x, y) {\n    x /= w, y *= h;\n    var y2 = abs(y);\n    if (y2 > y0) {\n      var i = min(H - 1, max(0, floor((x + pi) / k)));\n      x = (x + pi * (H - 1) / H - i * k) * dx / tau;\n      var point = collignonRaw.invert(x, 0.25 * (y2 - y0) * tau / dy1 + y1);\n      point[0] -= pi * (H - 1) / H - i * k;\n      if (y < 0) point[1] = -point[1];\n      return point;\n    }\n    return healpixLambert.invert(x, y);\n  };\n\n  return forward;\n}\n\nfunction sphereTop(x, i) {\n  return [x, i & 1 ? 90 - epsilon : healpixParallel];\n}\n\nfunction sphereBottom(x, i) {\n  return [x, i & 1 ? -90 + epsilon : -healpixParallel];\n}\n\nfunction sphereNudge(d) {\n  return [d[0] * (1 - epsilon), d[1]];\n}\n\nfunction sphere(step) {\n  var c = [].concat(\n    (0,src/* range */.w6)(-180, 180 + step / 2, step).map(sphereTop),\n    (0,src/* range */.w6)(180, -180 - step / 2, -step).map(sphereBottom)\n  );\n  return {\n    type: \"Polygon\",\n    coordinates: [step === 180 ? c.map(sphereNudge) : c]\n  };\n}\n\n/* harmony default export */ function healpix() {\n  var H = 4,\n      m = (0,src_projection/* projectionMutator */.r)(healpixRaw),\n      p = m(H),\n      stream_ = p.stream;\n\n  p.lobes = function(_) {\n    return arguments.length ? m(H = +_) : H;\n  };\n\n  p.stream = function(stream) {\n    var rotate = p.rotate(),\n        rotateStream = stream_(stream),\n        sphereStream = (p.rotate([0, 0]), stream_(stream));\n    p.rotate(rotate);\n    rotateStream.sphere = function() { (0,src_stream/* default */.Z)(sphere(180 / H), sphereStream); };\n    return rotateStream;\n  };\n\n  return p\n      .scale(239.75);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/hill.js\n\n\n\nfunction hillRaw(K) {\n  var L = 1 + K,\n      sinBt = sin(1 / L),\n      Bt = asin(sinBt),\n      A = 2 * sqrt(pi / (B = pi + 4 * Bt * L)),\n      B,\n      rho0 = 0.5 * A * (L + sqrt(K * (2 + K))),\n      K2 = K * K,\n      L2 = L * L;\n\n  function forward(lambda, phi) {\n    var t = 1 - sin(phi),\n        rho,\n        omega;\n    if (t && t < 2) {\n      var theta = halfPi - phi, i = 25, delta;\n      do {\n        var sinTheta = sin(theta),\n            cosTheta = cos(theta),\n            Bt_Bt1 = Bt + atan2(sinTheta, L - cosTheta),\n            C = 1 + L2 - 2 * L * cosTheta;\n        theta -= delta = (theta - K2 * Bt - L * sinTheta + C * Bt_Bt1 -0.5 * t * B) / (2 * L * sinTheta * Bt_Bt1);\n      } while (abs(delta) > epsilon2 && --i > 0);\n      rho = A * sqrt(C);\n      omega = lambda * Bt_Bt1 / pi;\n    } else {\n      rho = A * (K + t);\n      omega = lambda * Bt / pi;\n    }\n    return [\n      rho * sin(omega),\n      rho0 - rho * cos(omega)\n    ];\n  }\n\n  forward.invert = function(x, y) {\n    var rho2 = x * x + (y -= rho0) * y,\n        cosTheta = (1 + L2 - rho2 / (A * A)) / (2 * L),\n        theta = acos(cosTheta),\n        sinTheta = sin(theta),\n        Bt_Bt1 = Bt + atan2(sinTheta, L - cosTheta);\n    return [\n      asin(x / sqrt(rho2)) * pi / Bt_Bt1,\n      asin(1 - 2 * (theta - K2 * Bt - L * sinTheta + (1 + L2 - 2 * L * cosTheta) * Bt_Bt1) / B)\n    ];\n  };\n\n  return forward;\n}\n\n/* harmony default export */ function hill() {\n  var K = 1,\n      m = (0,src_projection/* projectionMutator */.r)(hillRaw),\n      p = m(K);\n\n  p.ratio = function(_) {\n    return arguments.length ? m(K = +_) : K;\n  };\n\n  return p\n      .scale(167.774)\n      .center([0, 18.67]);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/sinuMollweide.js\n\n\n\n\nvar sinuMollweidePhi = 0.7109889596207567;\n\nvar sinuMollweideY = 0.0528035274542;\n\nfunction sinuMollweideRaw(lambda, phi) {\n  return phi > -sinuMollweidePhi\n      ? (lambda = mollweideRaw(lambda, phi), lambda[1] += sinuMollweideY, lambda)\n      : sinusoidalRaw(lambda, phi);\n}\n\nsinuMollweideRaw.invert = function(x, y) {\n  return y > -sinuMollweidePhi\n      ? mollweideRaw.invert(x, y - sinuMollweideY)\n      : sinusoidalRaw.invert(x, y);\n};\n\n/* harmony default export */ function sinuMollweide() {\n  return (0,src_projection/* default */.Z)(sinuMollweideRaw)\n      .rotate([-20, -55])\n      .scale(164.263)\n      .center([0, -5.4036]);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/homolosine.js\n\n\n\n\n\n\nfunction homolosineRaw(lambda, phi) {\n  return abs(phi) > sinuMollweidePhi\n      ? (lambda = mollweideRaw(lambda, phi), lambda[1] -= phi > 0 ? sinuMollweideY : -sinuMollweideY, lambda)\n      : sinusoidalRaw(lambda, phi);\n}\n\nhomolosineRaw.invert = function(x, y) {\n  return abs(y) > sinuMollweidePhi\n      ? mollweideRaw.invert(x, y + (y > 0 ? sinuMollweideY : -sinuMollweideY))\n      : sinusoidalRaw.invert(x, y);\n};\n\n/* harmony default export */ function homolosine() {\n  return (0,src_projection/* default */.Z)(homolosineRaw)\n      .scale(152.63);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/hufnagel.js\n\n\n\n\nfunction hufnagelRaw(a, b, psiMax, ratio) {\n  var k = sqrt(\n      (4 * pi) /\n        (2 * psiMax +\n          (1 + a - b / 2) * sin(2 * psiMax) +\n          ((a + b) / 2) * sin(4 * psiMax) +\n          (b / 2) * sin(6 * psiMax))\n    ),\n    c = sqrt(\n      ratio *\n        sin(psiMax) *\n        sqrt((1 + a * cos(2 * psiMax) + b * cos(4 * psiMax)) / (1 + a + b))\n    ),\n    M = psiMax * mapping(1);\n\n  function radius(psi) {\n    return sqrt(1 + a * cos(2 * psi) + b * cos(4 * psi));\n  }\n\n  function mapping(t) {\n    var psi = t * psiMax;\n    return (\n      (2 * psi +\n        (1 + a - b / 2) * sin(2 * psi) +\n        ((a + b) / 2) * sin(4 * psi) +\n        (b / 2) * sin(6 * psi)) /\n      psiMax\n    );\n  }\n\n  function inversemapping(psi) {\n    return radius(psi) * sin(psi);\n  }\n\n  var forward = function(lambda, phi) {\n    var psi = psiMax * solve(mapping, (M * sin(phi)) / psiMax, phi / pi);\n    if (isNaN(psi)) psi = psiMax * sign(phi);\n    var kr = k * radius(psi);\n    return [((kr * c * lambda) / pi) * cos(psi), (kr / c) * sin(psi)];\n  };\n\n  forward.invert = function(x, y) {\n    var psi = solve(inversemapping, (y * c) / k);\n    return [\n      (x * pi) / (cos(psi) * k * c * radius(psi)),\n      asin((psiMax * mapping(psi / psiMax)) / M)\n    ];\n  };\n\n  if (psiMax === 0) {\n    k = sqrt(ratio / pi);\n    forward = function(lambda, phi) {\n      return [lambda * k, sin(phi) / k];\n    };\n    forward.invert = function(x, y) {\n      return [x / k, asin(y * k)];\n    };\n  }\n\n  return forward;\n}\n\n/* harmony default export */ function hufnagel() {\n  var a = 1,\n    b = 0,\n    psiMax = 45 * radians,\n    ratio = 2,\n    mutate = (0,src_projection/* projectionMutator */.r)(hufnagelRaw),\n    projection = mutate(a, b, psiMax, ratio);\n\n  projection.a = function(_) {\n    return arguments.length ? mutate((a = +_), b, psiMax, ratio) : a;\n  };\n  projection.b = function(_) {\n    return arguments.length ? mutate(a, (b = +_), psiMax, ratio) : b;\n  };\n  projection.psiMax = function(_) {\n    return arguments.length\n      ? mutate(a, b, (psiMax = +_ * radians), ratio)\n      : psiMax * degrees;\n  };\n  projection.ratio = function(_) {\n    return arguments.length ? mutate(a, b, psiMax, (ratio = +_)) : ratio;\n  };\n\n  return projection.scale(180.739);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/integrate.js\n// https://github.com/scijs/integrate-adaptive-simpson\n\n// This algorithm adapted from pseudocode in:\n// http://www.math.utk.edu/~ccollins/refs/Handouts/rich.pdf\nfunction adsimp (f, a, b, fa, fm, fb, V0, tol, maxdepth, depth, state) {\n  if (state.nanEncountered) {\n    return NaN;\n  }\n\n  var h, f1, f2, sl, sr, s2, m, V1, V2, err;\n\n  h = b - a;\n  f1 = f(a + h * 0.25);\n  f2 = f(b - h * 0.25);\n\n  // Simple check for NaN:\n  if (isNaN(f1)) {\n    state.nanEncountered = true;\n    return;\n  }\n\n  // Simple check for NaN:\n  if (isNaN(f2)) {\n    state.nanEncountered = true;\n    return;\n  }\n\n  sl = h * (fa + 4 * f1 + fm) / 12;\n  sr = h * (fm + 4 * f2 + fb) / 12;\n  s2 = sl + sr;\n  err = (s2 - V0) / 15;\n\n  if (depth > maxdepth) {\n    state.maxDepthCount++;\n    return s2 + err;\n  } else if (Math.abs(err) < tol) {\n    return s2 + err;\n  } else {\n    m = a + h * 0.5;\n\n    V1 = adsimp(f, a, m, fa, f1, fm, sl, tol * 0.5, maxdepth, depth + 1, state);\n\n    if (isNaN(V1)) {\n      state.nanEncountered = true;\n      return NaN;\n    }\n\n    V2 = adsimp(f, m, b, fm, f2, fb, sr, tol * 0.5, maxdepth, depth + 1, state);\n\n    if (isNaN(V2)) {\n      state.nanEncountered = true;\n      return NaN;\n    }\n\n    return V1 + V2;\n  }\n}\n\nfunction integrate (f, a, b, tol, maxdepth) {\n  var state = {\n    maxDepthCount: 0,\n    nanEncountered: false\n  };\n\n  if (tol === undefined) {\n    tol = 1e-8;\n  }\n  if (maxdepth === undefined) {\n    maxdepth = 20;\n  }\n\n  var fa = f(a);\n  var fm = f(0.5 * (a + b));\n  var fb = f(b);\n\n  var V0 = (fa + 4 * fm + fb) * (b - a) / 6;\n\n  var result = adsimp(f, a, b, fa, fm, fb, V0, tol, maxdepth, 1, state);\n\n/*\n  if (state.maxDepthCount > 0 && console && console.warn) {\n    console.warn('integrate-adaptive-simpson: Warning: maximum recursion depth (' + maxdepth + ') reached ' + state.maxDepthCount + ' times');\n  }\n\n  if (state.nanEncountered && console && console.warn) {\n    console.warn('integrate-adaptive-simpson: Warning: NaN encountered. Halting early.');\n  }\n*/\n\n  return result;\n}\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/hyperelliptical.js\n\n\n\n\nfunction hyperellipticalRaw(alpha, k, gamma) {\n\n  function elliptic (f) {\n    return alpha + (1 - alpha) * pow(1 - pow(f, k), 1 / k);\n  }\n\n  function z(f) {\n    return integrate(elliptic, 0, f, 1e-4);\n  }\n\n  var G = 1 / z(1),\n      n = 1000,\n      m = (1 + 1e-8) * G,\n      approx = [];\n  for (var i = 0; i <= n; i++)\n      approx.push(z(i / n) * m);\n\n  function Y(sinphi) {\n    var rmin = 0, rmax = n, r = n >> 1;\n    do {\n      if (approx[r] > sinphi) rmax = r; else rmin = r;\n      r = (rmin + rmax) >> 1;\n    } while (r > rmin);\n    var u = approx[r + 1] - approx[r];\n    if (u) u = (sinphi - approx[r + 1]) / u;\n    return (r + 1 + u) / n;\n  }\n\n  var ratio = 2 * Y(1) / pi * G / gamma;\n\n  var forward = function(lambda, phi) {\n    var y = Y(abs(sin(phi))),\n        x = elliptic(y) * lambda;\n    y /= ratio;\n    return [ x, (phi >= 0) ? y : -y ];\n  };\n\n  forward.invert = function(x, y) {\n    var phi;\n    y *= ratio;\n    if (abs(y) < 1) phi = sign(y) * asin(z(abs(y)) * G);\n    return [ x / elliptic(abs(y)), phi ];\n  };\n\n  return forward;\n}\n\n/* harmony default export */ function hyperelliptical() {\n  var alpha = 0,\n      k = 2.5,\n      gamma = 1.183136, // affine = sqrt(2 * gamma / pi) = 0.8679\n      m = (0,src_projection/* projectionMutator */.r)(hyperellipticalRaw),\n      p = m(alpha, k, gamma);\n\n  p.alpha = function(_) {\n    return arguments.length ? m(alpha = +_, k, gamma) : alpha;\n  };\n\n  p.k = function(_) {\n    return arguments.length ? m(alpha, k = +_, gamma) : k;\n  };\n\n  p.gamma = function(_) {\n    return arguments.length ? m(alpha, k, gamma = +_) : gamma;\n  };\n\n  return p\n      .scale(152.63);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/interrupted/index.js\n\n\n\n\nfunction pointEqual(a, b) {\n  return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n\nfunction interpolateLine(coordinates, m) {\n  var i = -1,\n      n = coordinates.length,\n      p0 = coordinates[0],\n      p1,\n      dx,\n      dy,\n      resampled = [];\n  while (++i < n) {\n    p1 = coordinates[i];\n    dx = (p1[0] - p0[0]) / m;\n    dy = (p1[1] - p0[1]) / m;\n    for (var j = 0; j < m; ++j) resampled.push([p0[0] + j * dx, p0[1] + j * dy]);\n    p0 = p1;\n  }\n  resampled.push(p1);\n  return resampled;\n}\n\nfunction interpolateSphere(lobes) {\n  var coordinates = [],\n      lobe,\n      lambda0, phi0, phi1,\n      lambda2, phi2,\n      i, n = lobes[0].length;\n\n  // Northern Hemisphere\n  for (i = 0; i < n; ++i) {\n    lobe = lobes[0][i];\n    lambda0 = lobe[0][0], phi0 = lobe[0][1], phi1 = lobe[1][1];\n    lambda2 = lobe[2][0], phi2 = lobe[2][1];\n    coordinates.push(interpolateLine([\n      [lambda0 + epsilon, phi0 + epsilon],\n      [lambda0 + epsilon, phi1 - epsilon],\n      [lambda2 - epsilon, phi1 - epsilon],\n      [lambda2 - epsilon, phi2 + epsilon]\n    ], 30));\n  }\n\n  // Southern Hemisphere\n  for (i = lobes[1].length - 1; i >= 0; --i) {\n    lobe = lobes[1][i];\n    lambda0 = lobe[0][0], phi0 = lobe[0][1], phi1 = lobe[1][1];\n    lambda2 = lobe[2][0], phi2 = lobe[2][1];\n    coordinates.push(interpolateLine([\n      [lambda2 - epsilon, phi2 - epsilon],\n      [lambda2 - epsilon, phi1 + epsilon],\n      [lambda0 + epsilon, phi1 + epsilon],\n      [lambda0 + epsilon, phi0 - epsilon]\n    ], 30));\n  }\n\n  return {\n    type: \"Polygon\",\n    coordinates: [(0,src/* merge */.TS)(coordinates)]\n  };\n}\n\n/* harmony default export */ function interrupted(project, lobes, inverse) {\n  var sphere, bounds;\n\n  function forward(lambda, phi) {\n    var sign = phi < 0 ? -1 : +1, lobe = lobes[+(phi < 0)];\n    for (var i = 0, n = lobe.length - 1; i < n && lambda > lobe[i][2][0]; ++i);\n    var p = project(lambda - lobe[i][1][0], phi);\n    p[0] += project(lobe[i][1][0], sign * phi > sign * lobe[i][0][1] ? lobe[i][0][1] : phi)[0];\n    return p;\n  }\n\n  if (inverse) {\n    forward.invert = inverse(forward);\n  } else if (project.invert) {\n    forward.invert = function(x, y) {\n      var bound = bounds[+(y < 0)], lobe = lobes[+(y < 0)];\n      for (var i = 0, n = bound.length; i < n; ++i) {\n        var b = bound[i];\n        if (b[0][0] <= x && x < b[1][0] && b[0][1] <= y && y < b[1][1]) {\n          var p = project.invert(x - project(lobe[i][1][0], 0)[0], y);\n          p[0] += lobe[i][1][0];\n          return pointEqual(forward(p[0], p[1]), [x, y]) ? p : null;\n        }\n      }\n    };\n  }\n\n  var p = (0,src_projection/* default */.Z)(forward),\n      stream_ = p.stream;\n\n  p.stream = function(stream) {\n    var rotate = p.rotate(),\n        rotateStream = stream_(stream),\n        sphereStream = (p.rotate([0, 0]), stream_(stream));\n    p.rotate(rotate);\n    rotateStream.sphere = function() { (0,src_stream/* default */.Z)(sphere, sphereStream); };\n    return rotateStream;\n  };\n  \n  p.lobes = function(_) {\n    if (!arguments.length) return lobes.map(function(lobe) {\n      return lobe.map(function(l) {\n        return [\n          [l[0][0] * degrees, l[0][1] * degrees],\n          [l[1][0] * degrees, l[1][1] * degrees],\n          [l[2][0] * degrees, l[2][1] * degrees]\n        ];\n      });\n    });\n\n    sphere = interpolateSphere(_);\n\n    lobes = _.map(function(lobe) {\n      return lobe.map(function(l) {\n        return [\n          [l[0][0] * radians, l[0][1] * radians],\n          [l[1][0] * radians, l[1][1] * radians],\n          [l[2][0] * radians, l[2][1] * radians]\n        ];\n      });\n    });\n\n    bounds = lobes.map(function(lobe) {\n      return lobe.map(function(l) {\n        var x0 = project(l[0][0], l[0][1])[0],\n            x1 = project(l[2][0], l[2][1])[0],\n            y0 = project(l[1][0], l[0][1])[1],\n            y1 = project(l[1][0], l[1][1])[1],\n            t;\n        if (y0 > y1) t = y0, y0 = y1, y1 = t;\n        return [[x0, y0], [x1, y1]];\n      });\n    });\n\n    return p;\n  };\n\n  if (lobes != null) p.lobes(lobes);\n\n  return p;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/interrupted/boggs.js\n\n\n\nvar lobes = [[ // northern hemisphere\n  [[-180,   0], [-100,  90], [ -40,   0]],\n  [[ -40,   0], [  30,  90], [ 180,   0]]\n], [ // southern hemisphere\n  [[-180,   0], [-160, -90], [-100,   0]],\n  [[-100,   0], [ -60, -90], [ -20,   0]],\n  [[ -20,   0], [  20, -90], [  80,   0]],\n  [[  80,   0], [ 140, -90], [ 180,   0]]\n]];\n\n/* harmony default export */ function interrupted_boggs() {\n  return interrupted(boggsRaw, lobes)\n      .scale(160.857);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/interrupted/homolosine.js\n\n\n\nvar homolosine_lobes = [[ // northern hemisphere\n  [[-180,   0], [-100,  90], [ -40,   0]],\n  [[ -40,   0], [  30,  90], [ 180,   0]]\n], [ // southern hemisphere\n  [[-180,   0], [-160, -90], [-100,   0]],\n  [[-100,   0], [ -60, -90], [ -20,   0]],\n  [[ -20,   0], [  20, -90], [  80,   0]],\n  [[  80,   0], [ 140, -90], [ 180,   0]]\n]];\n\n/* harmony default export */ function interrupted_homolosine() {\n  return interrupted(homolosineRaw, homolosine_lobes)\n      .scale(152.63);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/interrupted/mollweide.js\n\n\n\nvar mollweide_lobes = [[ // northern hemisphere\n  [[-180,   0], [-100,  90], [ -40,   0]],\n  [[ -40,   0], [  30,  90], [ 180,   0]]\n], [ // southern hemisphere\n  [[-180,   0], [-160, -90], [-100,   0]],\n  [[-100,   0], [ -60, -90], [ -20,   0]],\n  [[ -20,   0], [  20, -90], [  80,   0]],\n  [[  80,   0], [ 140, -90], [ 180,   0]]\n]];\n\n/* harmony default export */ function interrupted_mollweide() {\n  return interrupted(mollweideRaw, mollweide_lobes)\n      .scale(169.529);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/interrupted/mollweideHemispheres.js\n\n\n\nvar mollweideHemispheres_lobes = [[ // northern hemisphere\n  [[-180,   0], [ -90,  90], [   0,   0]],\n  [[   0,   0], [  90,  90], [ 180,   0]]\n], [ // southern hemisphere\n  [[-180,   0], [ -90, -90], [   0,   0]],\n  [[   0,   0], [  90, -90], [ 180,   0]]\n]];\n\n/* harmony default export */ function mollweideHemispheres() {\n  return interrupted(mollweideRaw, mollweideHemispheres_lobes)\n      .scale(169.529)\n      .rotate([20, 0]);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/interrupted/sinuMollweide.js\n\n\n\n\nvar sinuMollweide_lobes = [[ // northern hemisphere\n  [[-180,  35], [ -30,  90], [   0,  35]],\n  [[   0,  35], [  30,  90], [ 180,  35]]\n], [ // southern hemisphere\n  [[-180, -10], [-102, -90], [ -65, -10]],\n  [[ -65, -10], [   5, -90], [  77, -10]],\n  [[  77, -10], [ 103, -90], [ 180, -10]]\n]];\n\n/* harmony default export */ function interrupted_sinuMollweide() {\n  return interrupted(sinuMollweideRaw, sinuMollweide_lobes, solve2d)\n      .rotate([-20, -55])\n      .scale(164.263)\n      .center([0, -5.4036]);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/interrupted/sinusoidal.js\n\n\n\nvar sinusoidal_lobes = [[ // northern hemisphere\n  [[-180,   0], [-110,  90], [ -40,   0]],\n  [[ -40,   0], [   0,  90], [  40,   0]],\n  [[  40,   0], [ 110,  90], [ 180,   0]]\n], [ // southern hemisphere\n  [[-180,   0], [-110, -90], [ -40,   0]],\n  [[ -40,   0], [   0, -90], [  40,   0]],\n  [[  40,   0], [ 110, -90], [ 180,   0]]\n]];\n\n/* harmony default export */ function interrupted_sinusoidal() {\n  return interrupted(sinusoidalRaw, sinusoidal_lobes)\n      .scale(152.63)\n      .rotate([-20, 0]);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/kavrayskiy7.js\n\n\n\nfunction kavrayskiy7Raw(lambda, phi) {\n  return [3 / tau * lambda * sqrt(pi * pi / 3 - phi * phi), phi];\n}\n\nkavrayskiy7Raw.invert = function(x, y) {\n  return [tau / 3 * x / sqrt(pi * pi / 3 - y * y), y];\n};\n\n/* harmony default export */ function kavrayskiy7() {\n  return (0,src_projection/* default */.Z)(kavrayskiy7Raw)\n      .scale(158.837);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/lagrange.js\n\n\n\nfunction lagrangeRaw(n) {\n\n  function forward(lambda, phi) {\n    if (abs(abs(phi) - halfPi) < epsilon) return [0, phi < 0 ? -2 : 2];\n    var sinPhi = sin(phi),\n        v = pow((1 + sinPhi) / (1 - sinPhi), n / 2),\n        c = 0.5 * (v + 1 / v) + cos(lambda *= n);\n    return [\n      2 * sin(lambda) / c,\n      (v - 1 / v) / c\n    ];\n  }\n\n  forward.invert = function(x, y) {\n    var y0 = abs(y);\n    if (abs(y0 - 2) < epsilon) return x ? null : [0, sign(y) * halfPi];\n    if (y0 > 2) return null;\n\n    x /= 2, y /= 2;\n    var x2 = x * x,\n        y2 = y * y,\n        t = 2 * y / (1 + x2 + y2); // tanh(nPhi)\n    t = pow((1 + t) / (1 - t), 1 / n);\n    return [\n      atan2(2 * x, 1 - x2 - y2) / n,\n      asin((t - 1) / (t + 1))\n    ];\n  };\n\n  return forward;\n}\n\n/* harmony default export */ function lagrange() {\n  var n = 0.5,\n      m = (0,src_projection/* projectionMutator */.r)(lagrangeRaw),\n      p = m(n);\n\n  p.spacing = function(_) {\n    return arguments.length ? m(n = +_) : n;\n  };\n\n  return p\n      .scale(124.75);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/larrivee.js\n\n\n\nvar pi_sqrt2 = pi / sqrt2;\n\nfunction larriveeRaw(lambda, phi) {\n  return [\n    lambda * (1 + sqrt(cos(phi))) / 2,\n    phi / (cos(phi / 2) * cos(lambda / 6))\n  ];\n}\n\nlarriveeRaw.invert = function(x, y) {\n  var x0 = abs(x),\n      y0 = abs(y),\n      lambda = epsilon,\n      phi = halfPi;\n  if (y0 < pi_sqrt2) phi *= y0 / pi_sqrt2;\n  else lambda += 6 * acos(pi_sqrt2 / y0);\n  for (var i = 0; i < 25; i++) {\n    var sinPhi = sin(phi),\n        sqrtcosPhi = sqrt(cos(phi)),\n        sinPhi_2 = sin(phi / 2),\n        cosPhi_2 = cos(phi / 2),\n        sinLambda_6 = sin(lambda / 6),\n        cosLambda_6 = cos(lambda / 6),\n        f0 = 0.5 * lambda * (1 + sqrtcosPhi) - x0,\n        f1 = phi / (cosPhi_2 * cosLambda_6) - y0,\n        df0dPhi = sqrtcosPhi ? -0.25 * lambda * sinPhi / sqrtcosPhi : 0,\n        df0dLambda = 0.5 * (1 + sqrtcosPhi),\n        df1dPhi = (1 + 0.5 * phi * sinPhi_2 / cosPhi_2) / (cosPhi_2 * cosLambda_6),\n        df1dLambda = (phi / cosPhi_2) * (sinLambda_6 / 6) / (cosLambda_6 * cosLambda_6),\n        denom = df0dPhi * df1dLambda - df1dPhi * df0dLambda,\n        dPhi = (f0 * df1dLambda - f1 * df0dLambda) / denom,\n        dLambda = (f1 * df0dPhi - f0 * df1dPhi) / denom;\n    phi -= dPhi;\n    lambda -= dLambda;\n    if (abs(dPhi) < epsilon && abs(dLambda) < epsilon) break;\n  }\n  return [x < 0 ? -lambda : lambda, y < 0 ? -phi : phi];\n};\n\n/* harmony default export */ function larrivee() {\n  return (0,src_projection/* default */.Z)(larriveeRaw)\n      .scale(97.2672);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/laskowski.js\n\n\n\nfunction laskowskiRaw(lambda, phi) {\n  var lambda2 = lambda * lambda, phi2 = phi * phi;\n  return [\n    lambda * (0.975534 + phi2 * (-0.119161 + lambda2 * -0.0143059 + phi2 * -0.0547009)),\n    phi * (1.00384 + lambda2 * (0.0802894 + phi2 * -0.02855 + lambda2 * 0.000199025) + phi2 * (0.0998909 + phi2 * -0.0491032))\n  ];\n}\n\nlaskowskiRaw.invert = function(x, y) {\n  var lambda = sign(x) * pi,\n      phi = y / 2,\n      i = 50;\n  do {\n    var lambda2 = lambda * lambda,\n        phi2 = phi * phi,\n        lambdaPhi = lambda * phi,\n        fx = lambda * (0.975534 + phi2 * (-0.119161 + lambda2 * -0.0143059 + phi2 * -0.0547009)) - x,\n        fy = phi * (1.00384 + lambda2 * (0.0802894 + phi2 * -0.02855 + lambda2 * 0.000199025) + phi2 * (0.0998909 + phi2 * -0.0491032)) - y,\n        deltaxDeltaLambda = 0.975534 - phi2 * (0.119161 + 3 * lambda2 * 0.0143059 + phi2 * 0.0547009),\n        deltaxDeltaPhi = -lambdaPhi * (2 * 0.119161 + 4 * 0.0547009 * phi2 + 2 * 0.0143059 * lambda2),\n        deltayDeltaLambda = lambdaPhi * (2 * 0.0802894 + 4 * 0.000199025 * lambda2 + 2 * -0.02855 * phi2),\n        deltayDeltaPhi = 1.00384 + lambda2 * (0.0802894 + 0.000199025 * lambda2) + phi2 * (3 * (0.0998909 - 0.02855 * lambda2) - 5 * 0.0491032 * phi2),\n        denominator = deltaxDeltaPhi * deltayDeltaLambda - deltayDeltaPhi * deltaxDeltaLambda,\n        deltaLambda = (fy * deltaxDeltaPhi - fx * deltayDeltaPhi) / denominator,\n        deltaPhi = (fx * deltayDeltaLambda - fy * deltaxDeltaLambda) / denominator;\n    lambda -= deltaLambda, phi -= deltaPhi;\n  } while ((abs(deltaLambda) > epsilon || abs(deltaPhi) > epsilon) && --i > 0);\n  return i && [lambda, phi];\n};\n\n/* harmony default export */ function laskowski() {\n  return (0,src_projection/* default */.Z)(laskowskiRaw)\n      .scale(139.98);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/littrow.js\n\n\n\nfunction littrowRaw(lambda, phi) {\n  return [\n    sin(lambda) / cos(phi),\n    tan(phi) * cos(lambda)\n  ];\n}\n\nlittrowRaw.invert = function(x, y) {\n  var x2 = x * x,\n      y2 = y * y,\n      y2_1 = y2 + 1,\n      x2_y2_1 = x2 + y2_1,\n      cosPhi = x\n          ? sqrt1_2 * sqrt((x2_y2_1 - sqrt(x2_y2_1 * x2_y2_1 - 4 * x2)) / x2)\n          : 1 / sqrt(y2_1);\n  return [\n    asin(x * cosPhi),\n    sign(y) * acos(cosPhi)\n  ];\n};\n\n/* harmony default export */ function littrow() {\n  return (0,src_projection/* default */.Z)(littrowRaw)\n      .scale(144.049)\n      .clipAngle(90 - 1e-3);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/loximuthal.js\n\n\n\nfunction loximuthalRaw(phi0) {\n  var cosPhi0 = cos(phi0),\n      tanPhi0 = tan(quarterPi + phi0 / 2);\n\n  function forward(lambda, phi) {\n    var y = phi - phi0,\n        x = abs(y) < epsilon ? lambda * cosPhi0\n            : abs(x = quarterPi + phi / 2) < epsilon || abs(abs(x) - halfPi) < epsilon\n            ? 0 : lambda * y / log(tan(x) / tanPhi0);\n    return [x, y];\n  }\n\n  forward.invert = function(x, y) {\n    var lambda,\n        phi = y + phi0;\n    return [\n      abs(y) < epsilon ? x / cosPhi0\n          : (abs(lambda = quarterPi + phi / 2) < epsilon || abs(abs(lambda) - halfPi) < epsilon) ? 0\n          : x * log(tan(lambda) / tanPhi0) / y,\n      phi\n    ];\n  };\n\n  return forward;\n}\n\n/* harmony default export */ function loximuthal() {\n  return parallel1(loximuthalRaw)\n      .parallel(40)\n      .scale(158.837);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/miller.js\n\n\n\nfunction millerRaw(lambda, phi) {\n  return [lambda, 1.25 * log(tan(quarterPi + 0.4 * phi))];\n}\n\nmillerRaw.invert = function(x, y) {\n  return [x, 2.5 * atan(exp(0.8 * y)) - 0.625 * pi];\n};\n\n/* harmony default export */ function miller() {\n  return (0,src_projection/* default */.Z)(millerRaw)\n      .scale(108.318);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/modifiedStereographic.js\n\n\n\nfunction modifiedStereographicRaw(C) {\n  var m = C.length - 1;\n\n  function forward(lambda, phi) {\n    var cosPhi = cos(phi),\n        k = 2 / (1 + cosPhi * cos(lambda)),\n        zr = k * cosPhi * sin(lambda),\n        zi = k * sin(phi),\n        i = m,\n        w = C[i],\n        ar = w[0],\n        ai = w[1],\n        t;\n    while (--i >= 0) {\n      w = C[i];\n      ar = w[0] + zr * (t = ar) - zi * ai;\n      ai = w[1] + zr * ai + zi * t;\n    }\n    ar = zr * (t = ar) - zi * ai;\n    ai = zr * ai + zi * t;\n    return [ar, ai];\n  }\n\n  forward.invert = function(x, y) {\n    var i = 20,\n        zr = x,\n        zi = y;\n    do {\n      var j = m,\n          w = C[j],\n          ar = w[0],\n          ai = w[1],\n          br = 0,\n          bi = 0,\n          t;\n\n      while (--j >= 0) {\n        w = C[j];\n        br = ar + zr * (t = br) - zi * bi;\n        bi = ai + zr * bi + zi * t;\n        ar = w[0] + zr * (t = ar) - zi * ai;\n        ai = w[1] + zr * ai + zi * t;\n      }\n      br = ar + zr * (t = br) - zi * bi;\n      bi = ai + zr * bi + zi * t;\n      ar = zr * (t = ar) - zi * ai - x;\n      ai = zr * ai + zi * t - y;\n\n      var denominator = br * br + bi * bi, deltar, deltai;\n      zr -= deltar = (ar * br + ai * bi) / denominator;\n      zi -= deltai = (ai * br - ar * bi) / denominator;\n    } while (abs(deltar) + abs(deltai) > epsilon * epsilon && --i > 0);\n\n    if (i) {\n      var rho = sqrt(zr * zr + zi * zi),\n          c = 2 * atan(rho * 0.5),\n          sinc = sin(c);\n      return [atan2(zr * sinc, rho * cos(c)), rho ? asin(zi * sinc / rho) : 0];\n    }\n  };\n\n  return forward;\n}\n\nvar alaska = [[0.9972523, 0], [0.0052513, -0.0041175], [0.0074606, 0.0048125], [-0.0153783, -0.1968253], [0.0636871, -0.1408027], [0.3660976, -0.2937382]],\n    gs48 = [[0.98879, 0], [0, 0], [-0.050909, 0], [0, 0], [0.075528, 0]],\n    gs50 = [[0.9842990, 0], [0.0211642, 0.0037608], [-0.1036018, -0.0575102], [-0.0329095, -0.0320119], [0.0499471, 0.1223335], [0.0260460, 0.0899805], [0.0007388, -0.1435792], [0.0075848, -0.1334108], [-0.0216473, 0.0776645], [-0.0225161, 0.0853673]],\n    modifiedStereographic_miller = [[0.9245, 0], [0, 0], [0.01943, 0]],\n    lee = [[0.721316, 0], [0, 0], [-0.00881625, -0.00617325]];\n\nfunction modifiedStereographicAlaska() {\n  return modifiedStereographic(alaska, [152, -64])\n      .scale(1400)\n      .center([-160.908, 62.4864])\n      .clipAngle(30)\n      .angle(7.8);\n}\n\nfunction modifiedStereographicGs48() {\n  return modifiedStereographic(gs48, [95, -38])\n      .scale(1000)\n      .clipAngle(55)\n      .center([-96.5563, 38.8675]);\n}\n\nfunction modifiedStereographicGs50() {\n  return modifiedStereographic(gs50, [120, -45])\n      .scale(359.513)\n      .clipAngle(55)\n      .center([-117.474, 53.0628]);\n}\n\nfunction modifiedStereographicMiller() {\n  return modifiedStereographic(modifiedStereographic_miller, [-20, -18])\n      .scale(209.091)\n      .center([20, 16.7214])\n      .clipAngle(82);\n}\n\nfunction modifiedStereographicLee() {\n  return modifiedStereographic(lee, [165, 10])\n      .scale(250)\n      .clipAngle(130)\n      .center([-165, -10]);\n}\n\nfunction modifiedStereographic(coefficients, rotate) {\n  var p = (0,src_projection/* default */.Z)(modifiedStereographicRaw(coefficients)).rotate(rotate).clipAngle(90),\n      r = (0,rotation/* default */.Z)(rotate),\n      center = p.center;\n\n  delete p.rotate;\n\n  p.center = function(_) {\n    return arguments.length ? center(r(_)) : r.invert(center());\n  };\n\n  return p;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/mtFlatPolarParabolic.js\n\n\n\nvar sqrt6 = sqrt(6),\n    sqrt7 = sqrt(7);\n\nfunction mtFlatPolarParabolicRaw(lambda, phi) {\n  var theta = asin(7 * sin(phi) / (3 * sqrt6));\n  return [\n    sqrt6 * lambda * (2 * cos(2 * theta / 3) - 1) / sqrt7,\n    9 * sin(theta / 3) / sqrt7\n  ];\n}\n\nmtFlatPolarParabolicRaw.invert = function(x, y) {\n  var theta = 3 * asin(y * sqrt7 / 9);\n  return [\n    x * sqrt7 / (sqrt6 * (2 * cos(2 * theta / 3) - 1)),\n    asin(sin(theta) * 3 * sqrt6 / 7)\n  ];\n};\n\n/* harmony default export */ function mtFlatPolarParabolic() {\n  return (0,src_projection/* default */.Z)(mtFlatPolarParabolicRaw)\n      .scale(164.859);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/mtFlatPolarQuartic.js\n\n\n\nfunction mtFlatPolarQuarticRaw(lambda, phi) {\n  var k = (1 + sqrt1_2) * sin(phi),\n      theta = phi;\n  for (var i = 0, delta; i < 25; i++) {\n    theta -= delta = (sin(theta / 2) + sin(theta) - k) / (0.5 * cos(theta / 2) + cos(theta));\n    if (abs(delta) < epsilon) break;\n  }\n  return [\n    lambda * (1 + 2 * cos(theta) / cos(theta / 2)) / (3 * sqrt2),\n    2 * sqrt(3) * sin(theta / 2) / sqrt(2 + sqrt2)\n  ];\n}\n\nmtFlatPolarQuarticRaw.invert = function(x, y) {\n  var sinTheta_2 = y * sqrt(2 + sqrt2) / (2 * sqrt(3)),\n      theta = 2 * asin(sinTheta_2);\n  return [\n    3 * sqrt2 * x / (1 + 2 * cos(theta) / cos(theta / 2)),\n    asin((sinTheta_2 + sin(theta)) / (1 + sqrt1_2))\n  ];\n};\n\n/* harmony default export */ function mtFlatPolarQuartic() {\n  return (0,src_projection/* default */.Z)(mtFlatPolarQuarticRaw)\n      .scale(188.209);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/mtFlatPolarSinusoidal.js\n\n\n\nfunction mtFlatPolarSinusoidalRaw(lambda, phi) {\n  var A = sqrt(6 / (4 + pi)),\n      k = (1 + pi / 4) * sin(phi),\n      theta = phi / 2;\n  for (var i = 0, delta; i < 25; i++) {\n    theta -= delta = (theta / 2 + sin(theta) - k) / (0.5 + cos(theta));\n    if (abs(delta) < epsilon) break;\n  }\n  return [\n    A * (0.5 + cos(theta)) * lambda / 1.5,\n    A * theta\n  ];\n}\n\nmtFlatPolarSinusoidalRaw.invert = function(x, y) {\n  var A = sqrt(6 / (4 + pi)),\n      theta = y / A;\n  if (abs(abs(theta) - halfPi) < epsilon) theta = theta < 0 ? -halfPi : halfPi;\n  return [\n    1.5 * x / (A * (0.5 + cos(theta))),\n    asin((theta / 2 + sin(theta)) / (1 + pi / 4))\n  ];\n};\n\n/* harmony default export */ function mtFlatPolarSinusoidal() {\n  return (0,src_projection/* default */.Z)(mtFlatPolarSinusoidalRaw)\n      .scale(166.518);\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/projection/naturalEarth1.js\nvar naturalEarth1 = __nested_webpack_require_5363959__(26867);\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/naturalEarth2.js\n\n\n\nfunction naturalEarth2Raw(lambda, phi) {\n  var phi2 = phi * phi, phi4 = phi2 * phi2, phi6 = phi2 * phi4;\n  return [\n    lambda * (0.84719 - 0.13063 * phi2 + phi6 * phi6 * (-0.04515 + 0.05494 * phi2 - 0.02326 * phi4 + 0.00331 * phi6)),\n    phi * (1.01183 + phi4 * phi4 * (-0.02625 + 0.01926 * phi2 - 0.00396 * phi4))\n  ];\n}\n\nnaturalEarth2Raw.invert = function(x, y) {\n  var phi = y, i = 25, delta, phi2, phi4, phi6;\n  do {\n    phi2 = phi * phi; phi4 = phi2 * phi2;\n    phi -= delta = ((phi * (1.01183 + phi4 * phi4 * (-0.02625 + 0.01926 * phi2 - 0.00396 * phi4))) - y) /\n      (1.01183 + phi4 * phi4 * ((9 * -0.02625) + (11 * 0.01926) * phi2 + (13 * -0.00396) * phi4));\n  } while (abs(delta) > epsilon2 && --i > 0);\n  phi2 = phi * phi; phi4 = phi2 * phi2; phi6 = phi2 * phi4;\n  return [\n    x / (0.84719 - 0.13063 * phi2 + phi6 * phi6 * (-0.04515 + 0.05494 * phi2 - 0.02326 * phi4 + 0.00331 * phi6)),\n    phi\n  ];\n};\n\n/* harmony default export */ function naturalEarth2() {\n  return (0,src_projection/* default */.Z)(naturalEarth2Raw)\n      .scale(175.295);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/nellHammer.js\n\n\n\nfunction nellHammerRaw(lambda, phi) {\n  return [\n    lambda * (1 + cos(phi)) / 2,\n    2 * (phi - tan(phi / 2))\n  ];\n}\n\nnellHammerRaw.invert = function(x, y) {\n  var p = y / 2;\n  for (var i = 0, delta = Infinity; i < 10 && abs(delta) > epsilon; ++i) {\n    var c = cos(y / 2);\n    y -= delta = (y - tan(y / 2) - p) / (1 - 0.5 / (c * c));\n  }\n  return [\n    2 * x / (1 + cos(y)),\n    y\n  ];\n};\n\n/* harmony default export */ function nellHammer() {\n  return (0,src_projection/* default */.Z)(nellHammerRaw)\n      .scale(152.63);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/interrupted/quarticAuthalic.js\n\n\n\nvar quarticAuthalic_lobes = [[ // northern hemisphere\n  [[-180,  0],  [-90,  90], [   0,  0]],\n  [[   0,  0], [  90,  90], [ 180, 0]]\n], [ // southern hemisphere\n  [[-180, 0], [-90, -90], [  0, 0]],\n  [[   0, 0], [ 90, -90], [180, 0]]\n]];\n\n/* harmony default export */ function quarticAuthalic() {\n  return interrupted(hammerRaw(Infinity), quarticAuthalic_lobes)\n      .rotate([20, 0])\n      .scale(152.63);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/nicolosi.js\n\n\n\n\n// Based on Torben Jansen's implementation\n// https://beta.observablehq.com/@toja/nicolosi-globular-projection\n// https://beta.observablehq.com/@toja/nicolosi-globular-inverse\n\nfunction nicolosiRaw(lambda, phi) {\n  var sinPhi = sin(phi),\n    q = cos(phi),\n    s = sign(lambda);\n\n  if (lambda === 0 || abs(phi) === halfPi) return [0, phi];\n  else if (phi === 0) return [lambda, 0];\n  else if (abs(lambda) === halfPi) return [lambda * q, halfPi * sinPhi];\n\n  var b = pi / (2 * lambda) - (2 * lambda) / pi,\n    c = (2 * phi) / pi,\n    d = (1 - c * c) / (sinPhi - c);\n\n  var b2 = b * b,\n    d2 = d * d,\n    b2d2 = 1 + b2 / d2,\n    d2b2 = 1 + d2 / b2;\n\n  var M = ((b * sinPhi) / d - b / 2) / b2d2,\n    N = ((d2 * sinPhi) / b2 + d / 2) / d2b2,\n    m = M * M + (q * q) / b2d2,\n    n = N * N - ((d2 * sinPhi * sinPhi) / b2 + d * sinPhi - 1) / d2b2;\n\n  return [\n    halfPi * (M + sqrt(m) * s),\n    halfPi * (N + sqrt(n < 0 ? 0 : n) * sign(-phi * b) * s)\n  ];\n}\n\nnicolosiRaw.invert = function(x, y) {\n\n  x /= halfPi;\n  y /= halfPi;\n\n  var x2 = x * x,\n    y2 = y * y,\n    x2y2 = x2 + y2,\n    pi2 = pi * pi;\n\n  return [\n    x ? (x2y2 -1 + sqrt((1 - x2y2) * (1 - x2y2) + 4 * x2)) / (2 * x) * halfPi : 0,\n    solve(function(phi) {\n      return (\n        x2y2 * (pi * sin(phi) - 2 * phi) * pi +\n        4 * phi * phi * (y - sin(phi)) +\n        2 * pi * phi -\n        pi2 * y\n      );\n    }, 0)\n  ];\n};\n\n/* harmony default export */ function nicolosi() {\n  return (0,src_projection/* default */.Z)(nicolosiRaw)\n    .scale(127.267);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/patterson.js\n\n\n\n// Based on Java implementation by Bojan Savric.\n// https://github.com/OSUCartography/JMapProjLib/blob/master/src/com/jhlabs/map/proj/PattersonProjection.java\n\nvar pattersonK1 = 1.0148,\n    pattersonK2 = 0.23185,\n    pattersonK3 = -0.14499,\n    pattersonK4 = 0.02406,\n    pattersonC1 = pattersonK1,\n    pattersonC2 = 5 * pattersonK2,\n    pattersonC3 = 7 * pattersonK3,\n    pattersonC4 = 9 * pattersonK4,\n    pattersonYmax = 1.790857183;\n\nfunction pattersonRaw(lambda, phi) {\n  var phi2 = phi * phi;\n  return [\n    lambda,\n    phi * (pattersonK1 + phi2 * phi2 * (pattersonK2 + phi2 * (pattersonK3 + pattersonK4 * phi2)))\n  ];\n}\n\npattersonRaw.invert = function(x, y) {\n  if (y > pattersonYmax) y = pattersonYmax;\n  else if (y < -pattersonYmax) y = -pattersonYmax;\n  var yc = y, delta;\n\n  do { // Newton-Raphson\n    var y2 = yc * yc;\n    yc -= delta = ((yc * (pattersonK1 + y2 * y2 * (pattersonK2 + y2 * (pattersonK3 + pattersonK4 * y2)))) - y) / (pattersonC1 + y2 * y2 * (pattersonC2 + y2 * (pattersonC3 + pattersonC4 * y2)));\n  } while (abs(delta) > epsilon);\n\n  return [x, yc];\n};\n\n/* harmony default export */ function patterson() {\n  return (0,src_projection/* default */.Z)(pattersonRaw)\n      .scale(139.319);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/polyconic.js\n\n\n\nfunction polyconicRaw(lambda, phi) {\n  if (abs(phi) < epsilon) return [lambda, 0];\n  var tanPhi = tan(phi),\n      k = lambda * sin(phi);\n  return [\n    sin(k) / tanPhi,\n    phi + (1 - cos(k)) / tanPhi\n  ];\n}\n\npolyconicRaw.invert = function(x, y) {\n  if (abs(y) < epsilon) return [x, 0];\n  var k = x * x + y * y,\n      phi = y * 0.5,\n      i = 10, delta;\n  do {\n    var tanPhi = tan(phi),\n        secPhi = 1 / cos(phi),\n        j = k - 2 * y * phi + phi * phi;\n    phi -= delta = (tanPhi * j + 2 * (phi - y)) / (2 + j * secPhi * secPhi + 2 * (phi - y) * tanPhi);\n  } while (abs(delta) > epsilon && --i > 0);\n  tanPhi = tan(phi);\n  return [\n    (abs(y) < abs(phi + 1 / tanPhi) ? asin(x * tanPhi) : sign(y) * sign(x) * (acos(abs(x * tanPhi)) + halfPi)) / sin(phi),\n    phi\n  ];\n};\n\n/* harmony default export */ function polyconic() {\n  return (0,src_projection/* default */.Z)(polyconicRaw)\n      .scale(103.74);\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/bounds.js\nvar bounds = __nested_webpack_require_5363959__(77338);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/interpolate.js\nvar interpolate = __nested_webpack_require_5363959__(83074);\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/polyhedral/matrix.js\n\n\n// Note: 6-element arrays are used to denote the 3x3 affine transform matrix:\n// [a, b, c,\n//  d, e, f,\n//  0, 0, 1] - this redundant row is left out.\n\n// Transform matrix for [a0, a1] -> [b0, b1].\n/* harmony default export */ function matrix(a, b) {\n  var u = subtract(a[1], a[0]),\n      v = subtract(b[1], b[0]),\n      phi = matrix_angle(u, v),\n      s = matrix_length(u) / matrix_length(v);\n\n  return multiply([\n    1, 0, a[0][0],\n    0, 1, a[0][1]\n  ], multiply([\n    s, 0, 0,\n    0, s, 0\n  ], multiply([\n    cos(phi), sin(phi), 0,\n    -sin(phi), cos(phi), 0\n  ], [\n    1, 0, -b[0][0],\n    0, 1, -b[0][1]\n  ])));\n}\n\n// Inverts a transform matrix.\nfunction inverse(m) {\n  var k = 1 / (m[0] * m[4] - m[1] * m[3]);\n  return [\n    k * m[4], -k * m[1], k * (m[1] * m[5] - m[2] * m[4]),\n    -k * m[3], k * m[0], k * (m[2] * m[3] - m[0] * m[5])\n  ];\n}\n\n// Multiplies two 3x2 matrices.\nfunction multiply(a, b) {\n  return [\n    a[0] * b[0] + a[1] * b[3],\n    a[0] * b[1] + a[1] * b[4],\n    a[0] * b[2] + a[1] * b[5] + a[2],\n    a[3] * b[0] + a[4] * b[3],\n    a[3] * b[1] + a[4] * b[4],\n    a[3] * b[2] + a[4] * b[5] + a[5]\n  ];\n}\n\n// Subtracts 2D vectors.\nfunction subtract(a, b) {\n  return [a[0] - b[0], a[1] - b[1]];\n}\n\n// Magnitude of a 2D vector.\nfunction matrix_length(v) {\n  return sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n\n// Angle between two 2D vectors.\nfunction matrix_angle(a, b) {\n  return atan2(a[0] * b[1] - a[1] * b[0], a[0] * b[0] + a[1] * b[1]);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/polyhedral/index.js\n\n\n\n\n// Creates a polyhedral projection.\n//  * root: a spanning tree of polygon faces.  Nodes are automatically\n//    augmented with a transform matrix.\n//  * face: a function that returns the appropriate node for a given {lambda, phi}\n//    point (radians).\n//  * r: rotation angle for root face [deprecated by .angle()].\n/* harmony default export */ function polyhedral(root, face, r) {\n\n  recurse(root, {transform: null});\n\n  function recurse(node, parent) {\n    node.edges = faceEdges(node.face);\n    // Find shared edge.\n    if (parent.face) {\n      var shared = node.shared = sharedEdge(node.face, parent.face),\n          m = matrix(shared.map(parent.project), shared.map(node.project));\n      node.transform = parent.transform ? multiply(parent.transform, m) : m;\n      // Replace shared edge in parent edges array.\n      var edges = parent.edges;\n      for (var i = 0, n = edges.length; i < n; ++i) {\n        if (polyhedral_pointEqual(shared[0], edges[i][1]) && polyhedral_pointEqual(shared[1], edges[i][0])) edges[i] = node;\n        if (polyhedral_pointEqual(shared[0], edges[i][0]) && polyhedral_pointEqual(shared[1], edges[i][1])) edges[i] = node;\n      }\n      edges = node.edges;\n      for (i = 0, n = edges.length; i < n; ++i) {\n        if (polyhedral_pointEqual(shared[0], edges[i][0]) && polyhedral_pointEqual(shared[1], edges[i][1])) edges[i] = parent;\n        if (polyhedral_pointEqual(shared[0], edges[i][1]) && polyhedral_pointEqual(shared[1], edges[i][0])) edges[i] = parent;\n      }\n    } else {\n      node.transform = parent.transform;\n    }\n    if (node.children) {\n      node.children.forEach(function(child) {\n        recurse(child, node);\n      });\n    }\n    return node;\n  }\n\n  function forward(lambda, phi) {\n    var node = face(lambda, phi),\n        point = node.project([lambda * degrees, phi * degrees]),\n        t;\n    if (t = node.transform) {\n      return [\n        t[0] * point[0] + t[1] * point[1] + t[2],\n        -(t[3] * point[0] + t[4] * point[1] + t[5])\n      ];\n    }\n    point[1] = -point[1];\n    return point;\n  }\n\n  // Naive inverse!  A faster solution would use bounding boxes, or even a\n  // polygonal quadtree.\n  if (hasInverse(root)) forward.invert = function(x, y) {\n    var coordinates = faceInvert(root, [x, -y]);\n    return coordinates && (coordinates[0] *= radians, coordinates[1] *= radians, coordinates);\n  };\n\n  function faceInvert(node, coordinates) {\n    var invert = node.project.invert,\n        t = node.transform,\n        point = coordinates;\n    if (t) {\n      t = inverse(t);\n      point = [\n        t[0] * point[0] + t[1] * point[1] + t[2],\n        (t[3] * point[0] + t[4] * point[1] + t[5])\n      ];\n    }\n    if (invert && node === faceDegrees(p = invert(point))) return p;\n    var p,\n        children = node.children;\n    for (var i = 0, n = children && children.length; i < n; ++i) {\n      if (p = faceInvert(children[i], coordinates)) return p;\n    }\n  }\n\n  function faceDegrees(coordinates) {\n    return face(coordinates[0] * radians, coordinates[1] * radians);\n  }\n\n  var proj = (0,src_projection/* default */.Z)(forward),\n      stream_ = proj.stream;\n\n  proj.stream = function(stream) {\n    var rotate = proj.rotate(),\n        rotateStream = stream_(stream),\n        sphereStream = (proj.rotate([0, 0]), stream_(stream));\n    proj.rotate(rotate);\n    rotateStream.sphere = function() {\n      sphereStream.polygonStart();\n      sphereStream.lineStart();\n      outline(sphereStream, root);\n      sphereStream.lineEnd();\n      sphereStream.polygonEnd();\n    };\n    return rotateStream;\n  };\n\n  return proj.angle(r == null ? -30 : r * degrees);\n}\n\nfunction outline(stream, node, parent) {\n  var point,\n      edges = node.edges,\n      n = edges.length,\n      edge,\n      multiPoint = {type: \"MultiPoint\", coordinates: node.face},\n      notPoles = node.face.filter(function(d) { return abs(d[1]) !== 90; }),\n      b = (0,bounds/* default */.Z)({type: \"MultiPoint\", coordinates: notPoles}),\n      inside = false,\n      j = -1,\n      dx = b[1][0] - b[0][0];\n  // TODO\n  var c = dx === 180 || dx === 360\n      ? [(b[0][0] + b[1][0]) / 2, (b[0][1] + b[1][1]) / 2]\n      : (0,centroid/* default */.Z)(multiPoint);\n  // First find the shared edge…\n  if (parent) while (++j < n) {\n    if (edges[j] === parent) break;\n  }\n  ++j;\n  for (var i = 0; i < n; ++i) {\n    edge = edges[(i + j) % n];\n    if (Array.isArray(edge)) {\n      if (!inside) {\n        stream.point((point = (0,interpolate/* default */.Z)(edge[0], c)(epsilon))[0], point[1]);\n        inside = true;\n      }\n      stream.point((point = (0,interpolate/* default */.Z)(edge[1], c)(epsilon))[0], point[1]);\n    } else {\n      inside = false;\n      if (edge !== parent) outline(stream, edge, node);\n    }\n  }\n}\n\n// Tests equality of two spherical points.\nfunction polyhedral_pointEqual(a, b) {\n  return a && b && a[0] === b[0] && a[1] === b[1];\n}\n\n// Finds a shared edge given two clockwise polygons.\nfunction sharedEdge(a, b) {\n  var x, y, n = a.length, found = null;\n  for (var i = 0; i < n; ++i) {\n    x = a[i];\n    for (var j = b.length; --j >= 0;) {\n      y = b[j];\n      if (x[0] === y[0] && x[1] === y[1]) {\n        if (found) return [found, x];\n        found = x;\n      }\n    }\n  }\n}\n\n// Converts an array of n face vertices to an array of n + 1 edges.\nfunction faceEdges(face) {\n  var n = face.length,\n      edges = [];\n  for (var a = face[n - 1], i = 0; i < n; ++i) edges.push([a, a = face[i]]);\n  return edges;\n}\n\nfunction hasInverse(node) {\n  return node.project.invert || node.children && node.children.some(hasInverse);\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/projection/gnomonic.js\nvar gnomonic = __nested_webpack_require_5363959__(98936);\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/polyhedral/octahedron.js\n// TODO generate on-the-fly to avoid external modification.\nvar octahedron = [\n  [0, 90],\n  [-90, 0], [0, 0], [90, 0], [180, 0],\n  [0, -90]\n];\n\n/* harmony default export */ var polyhedral_octahedron = ([\n  [0, 2, 1],\n  [0, 3, 2],\n  [5, 1, 2],\n  [5, 2, 3],\n  [0, 1, 4],\n  [0, 4, 3],\n  [5, 4, 1],\n  [5, 3, 4]\n].map(function(face) {\n  return face.map(function(i) {\n    return octahedron[i];\n  });\n}));\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/polyhedral/butterfly.js\n\n\n\n\n\n/* harmony default export */ function butterfly(faceProjection) {\n\n  faceProjection = faceProjection || function(face) {\n    var c = (0,centroid/* default */.Z)({type: \"MultiPoint\", coordinates: face});\n    return (0,gnomonic/* default */.Z)().scale(1).translate([0, 0]).rotate([-c[0], -c[1]]);\n  };\n\n  var faces = polyhedral_octahedron.map(function(face) {\n    return {face: face, project: faceProjection(face)};\n  });\n\n  [-1, 0, 0, 1, 0, 1, 4, 5].forEach(function(d, i) {\n    var node = faces[d];\n    node && (node.children || (node.children = [])).push(faces[i]);\n  });\n\n  return polyhedral(faces[0], function(lambda, phi) {\n        return faces[lambda < -pi / 2 ? phi < 0 ? 6 : 4\n            : lambda < 0 ? phi < 0 ? 2 : 0\n            : lambda < pi / 2 ? phi < 0 ? 3 : 1\n            : phi < 0 ? 7 : 5];\n      })\n      .angle(-30)\n      .scale(101.858)\n      .center([0, 45]);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/polyhedral/collignon.js\n\n\n\n\n\n\nvar kx = 2 / sqrt(3);\n\nfunction collignonK(a, b) {\n  var p = collignonRaw(a, b);\n  return [p[0] * kx, p[1]];\n}\n\ncollignonK.invert = function(x,y) {\n  return collignonRaw.invert(x / kx, y);\n};\n\n/* harmony default export */ function polyhedral_collignon(faceProjection) {\n\n  faceProjection = faceProjection || function(face) {\n    var c = (0,centroid/* default */.Z)({type: \"MultiPoint\", coordinates: face});\n    return (0,src_projection/* default */.Z)(collignonK).translate([0, 0]).scale(1).rotate(c[1] > 0 ? [-c[0], 0] : [180 - c[0], 180]);\n  };\n\n  var faces = polyhedral_octahedron.map(function(face) {\n    return {face: face, project: faceProjection(face)};\n  });\n\n  [-1, 0, 0, 1, 0, 1, 4, 5].forEach(function(d, i) {\n    var node = faces[d];\n    node && (node.children || (node.children = [])).push(faces[i]);\n  });\n\n  return polyhedral(faces[0], function(lambda, phi) {\n        return faces[lambda < -pi / 2 ? phi < 0 ? 6 : 4\n            : lambda < 0 ? phi < 0 ? 2 : 0\n            : lambda < pi / 2 ? phi < 0 ? 3 : 1\n            : phi < 0 ? 7 : 5];\n      })\n      .angle(-30)\n      .scale(121.906)\n      .center([0, 48.5904]);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/polyhedral/waterman.js\n\n\n\n\n\n/* harmony default export */ function waterman(faceProjection) {\n\n  faceProjection = faceProjection || function(face) {\n    var c = face.length === 6 ? (0,centroid/* default */.Z)({type: \"MultiPoint\", coordinates: face}) : face[0];\n    return (0,gnomonic/* default */.Z)().scale(1).translate([0, 0]).rotate([-c[0], -c[1]]);\n  };\n\n  var w5 = polyhedral_octahedron.map(function(face) {\n    var xyz = face.map(cartesian),\n        n = xyz.length,\n        a = xyz[n - 1],\n        b,\n        hexagon = [];\n    for (var i = 0; i < n; ++i) {\n      b = xyz[i];\n      hexagon.push(spherical([\n        a[0] * 0.9486832980505138 + b[0] * 0.31622776601683794,\n        a[1] * 0.9486832980505138 + b[1] * 0.31622776601683794,\n        a[2] * 0.9486832980505138 + b[2] * 0.31622776601683794\n      ]), spherical([\n        b[0] * 0.9486832980505138 + a[0] * 0.31622776601683794,\n        b[1] * 0.9486832980505138 + a[1] * 0.31622776601683794,\n        b[2] * 0.9486832980505138 + a[2] * 0.31622776601683794\n      ]));\n      a = b;\n    }\n    return hexagon;\n  });\n\n  var cornerNormals = [];\n\n  var parents = [-1, 0, 0, 1, 0, 1, 4, 5];\n\n  w5.forEach(function(hexagon, j) {\n    var face = polyhedral_octahedron[j],\n        n = face.length,\n        normals = cornerNormals[j] = [];\n    for (var i = 0; i < n; ++i) {\n      w5.push([\n        face[i],\n        hexagon[(i * 2 + 2) % (2 * n)],\n        hexagon[(i * 2 + 1) % (2 * n)]\n      ]);\n      parents.push(j);\n      normals.push(cross(\n        cartesian(hexagon[(i * 2 + 2) % (2 * n)]),\n        cartesian(hexagon[(i * 2 + 1) % (2 * n)])\n      ));\n    }\n  });\n\n  var faces = w5.map(function(face) {\n    return {\n      project: faceProjection(face),\n      face: face\n    };\n  });\n\n  parents.forEach(function(d, i) {\n    var parent = faces[d];\n    parent && (parent.children || (parent.children = [])).push(faces[i]);\n  });\n\n  function face(lambda, phi) {\n    var cosphi = cos(phi),\n        p = [cosphi * cos(lambda), cosphi * sin(lambda), sin(phi)];\n\n    var hexagon = lambda < -pi / 2 ? phi < 0 ? 6 : 4\n        : lambda < 0 ? phi < 0 ? 2 : 0\n        : lambda < pi / 2 ? phi < 0 ? 3 : 1\n        : phi < 0 ? 7 : 5;\n\n    var n = cornerNormals[hexagon];\n\n    return faces[dot(n[0], p) < 0 ? 8 + 3 * hexagon\n        : dot(n[1], p) < 0 ? 8 + 3 * hexagon + 1\n        : dot(n[2], p) < 0 ? 8 + 3 * hexagon + 2\n        : hexagon];\n  }\n\n  return polyhedral(faces[0], face)\n      .angle(-30)\n      .scale(110.625)\n      .center([0,45]);\n}\n\nfunction dot(a, b) {\n  for (var i = 0, n = a.length, s = 0; i < n; ++i) s += a[i] * b[i];\n  return s;\n}\n\nfunction cross(a, b) {\n  return [\n    a[1] * b[2] - a[2] * b[1],\n    a[2] * b[0] - a[0] * b[2],\n    a[0] * b[1] - a[1] * b[0]\n  ];\n}\n\n// Converts 3D Cartesian to spherical coordinates (degrees).\nfunction spherical(cartesian) {\n  return [\n    atan2(cartesian[1], cartesian[0]) * degrees,\n    asin(max(-1, min(1, cartesian[2]))) * degrees\n  ];\n}\n\n// Converts spherical coordinates (degrees) to 3D Cartesian.\nfunction cartesian(coordinates) {\n  var lambda = coordinates[0] * radians,\n      phi = coordinates[1] * radians,\n      cosphi = cos(phi);\n  return [\n    cosphi * cos(lambda),\n    cosphi * sin(lambda),\n    sin(phi)\n  ];\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/noop.js\n/* harmony default export */ function noop() {}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/project/clockwise.js\n/* harmony default export */ function clockwise(ring) {\n  if ((n = ring.length) < 4) return false;\n  var i = 0,\n      n,\n      area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n  while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n  return area <= 0;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/project/contains.js\n/* harmony default export */ function contains(ring, point) {\n  var x = point[0],\n      y = point[1],\n      contains = false;\n  for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n    var pi = ring[i], xi = pi[0], yi = pi[1],\n        pj = ring[j], xj = pj[0], yj = pj[1];\n    if (((yi > y) ^ (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi)) contains = !contains;\n  }\n  return contains;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/project/index.js\n\n\n\n\n\n/* harmony default export */ function project(object, projection) {\n  var stream = projection.stream, project;\n  if (!stream) throw new Error(\"invalid projection\");\n  switch (object && object.type) {\n    case \"Feature\": project = projectFeature; break;\n    case \"FeatureCollection\": project = projectFeatureCollection; break;\n    default: project = projectGeometry; break;\n  }\n  return project(object, stream);\n}\n\nfunction projectFeatureCollection(o, stream) {\n  return {\n    type: \"FeatureCollection\",\n    features: o.features.map(function(f) {\n      return projectFeature(f, stream);\n    })\n  };\n}\n\nfunction projectFeature(o, stream) {\n  return {\n    type: \"Feature\",\n    id: o.id,\n    properties: o.properties,\n    geometry: projectGeometry(o.geometry, stream)\n  };\n}\n\nfunction projectGeometryCollection(o, stream) {\n  return {\n    type: \"GeometryCollection\",\n    geometries: o.geometries.map(function(o) {\n      return projectGeometry(o, stream);\n    })\n  };\n}\n\nfunction projectGeometry(o, stream) {\n  if (!o) return null;\n  if (o.type === \"GeometryCollection\") return projectGeometryCollection(o, stream);\n  var sink;\n  switch (o.type) {\n    case \"Point\": sink = sinkPoint; break;\n    case \"MultiPoint\": sink = sinkPoint; break;\n    case \"LineString\": sink = sinkLine; break;\n    case \"MultiLineString\": sink = sinkLine; break;\n    case \"Polygon\": sink = sinkPolygon; break;\n    case \"MultiPolygon\": sink = sinkPolygon; break;\n    case \"Sphere\": sink = sinkPolygon; break;\n    default: return null;\n  }\n  (0,src_stream/* default */.Z)(o, stream(sink));\n  return sink.result();\n}\n\nvar points = [],\n    lines = [];\n\nvar sinkPoint = {\n  point: function(x, y) {\n    points.push([x, y]);\n  },\n  result: function() {\n    var result = !points.length ? null\n        : points.length < 2 ? {type: \"Point\", coordinates: points[0]}\n        : {type: \"MultiPoint\", coordinates: points};\n    points = [];\n    return result;\n  }\n};\n\nvar sinkLine = {\n  lineStart: noop,\n  point: function(x, y) {\n    points.push([x, y]);\n  },\n  lineEnd: function() {\n    if (points.length) lines.push(points), points = [];\n  },\n  result: function() {\n    var result = !lines.length ? null\n        : lines.length < 2 ? {type: \"LineString\", coordinates: lines[0]}\n        : {type: \"MultiLineString\", coordinates: lines};\n    lines = [];\n    return result;\n  }\n};\n\nvar sinkPolygon = {\n  polygonStart: noop,\n  lineStart: noop,\n  point: function(x, y) {\n    points.push([x, y]);\n  },\n  lineEnd: function() {\n    var n = points.length;\n    if (n) {\n      do points.push(points[0].slice()); while (++n < 4);\n      lines.push(points), points = [];\n    }\n  },\n  polygonEnd: noop,\n  result: function() {\n    if (!lines.length) return null;\n    var polygons = [],\n        holes = [];\n\n    // https://github.com/d3/d3/issues/1558\n    lines.forEach(function(ring) {\n      if (clockwise(ring)) polygons.push([ring]);\n      else holes.push(ring);\n    });\n\n    holes.forEach(function(hole) {\n      var point = hole[0];\n      polygons.some(function(polygon) {\n        if (contains(polygon[0], point)) {\n          polygon.push(hole);\n          return true;\n        }\n      }) || polygons.push([hole]);\n    });\n\n    lines = [];\n\n    return !polygons.length ? null\n        : polygons.length > 1 ? {type: \"MultiPolygon\", coordinates: polygons}\n        : {type: \"Polygon\", coordinates: polygons[0]};\n  }\n};\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/quincuncial/index.js\n\n\n\n/* harmony default export */ function quincuncial(project) {\n  var dx = project(halfPi, 0)[0] - project(-halfPi, 0)[0];\n\n  function projectQuincuncial(lambda, phi) {\n    var t = abs(lambda) < halfPi,\n        p = project(t ? lambda : lambda > 0 ? lambda - pi : lambda + pi, phi),\n        x = (p[0] - p[1]) * sqrt1_2,\n        y = (p[0] + p[1]) * sqrt1_2;\n    if (t) return [x, y];\n    var d = dx * sqrt1_2,\n        s = x > 0 ^ y > 0 ? -1 : 1;\n    return [s * x - sign(y) * d, s * y - sign(x) * d];\n  }\n\n  if (project.invert) projectQuincuncial.invert = function(x0, y0) {\n    var x = (x0 + y0) * sqrt1_2,\n        y = (y0 - x0) * sqrt1_2,\n        t = abs(x) < 0.5 * dx && abs(y) < 0.5 * dx;\n\n    if (!t) {\n      var d = dx * sqrt1_2,\n          s = x > 0 ^ y > 0 ? -1 : 1,\n          x1 = -s * x0 + (y > 0 ? 1 : -1) * d,\n          y1 = -s * y0 + (x > 0 ? 1 : -1) * d;\n      x = (-x1 - y1) * sqrt1_2;\n      y = (x1 - y1) * sqrt1_2;\n    }\n\n    var p = project.invert(x, y);\n    if (!t) p[0] += x > 0 ? pi : -pi;\n    return p;\n  };\n\n  return (0,src_projection/* default */.Z)(projectQuincuncial)\n      .rotate([-90, -90, 45])\n      .clipAngle(180 - 1e-3);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/quincuncial/gringorten.js\n\n\n\n/* harmony default export */ function quincuncial_gringorten() {\n  return quincuncial(gringortenRaw)\n      .scale(176.423);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/quincuncial/peirce.js\n\n\n\n/* harmony default export */ function peirce() {\n  return quincuncial(guyouRaw)\n      .scale(111.48);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/quantize.js\n/* harmony default export */ function quantize(input, digits) {\n  if (!(0 <= (digits = +digits) && digits <= 20)) throw new Error(\"invalid digits\");\n\n  function quantizePoint(input) {\n    var n = input.length, i = 2, output = new Array(n);\n    output[0] = +input[0].toFixed(digits);\n    output[1] = +input[1].toFixed(digits);\n    while (i < n) output[i] = input[i], ++i;\n    return output;\n  }\n\n  function quantizePoints(input) {\n    return input.map(quantizePoint);\n  }\n\n  function quantizePointsNoDuplicates(input) {\n    var point0 = quantizePoint(input[0]);\n    var output = [point0];\n    for (var i = 1; i < input.length; i++) {\n      var point = quantizePoint(input[i]);\n      if (point.length > 2 || point[0] != point0[0] || point[1] != point0[1]) {\n        output.push(point);\n        point0 = point;\n      }\n    }\n    if (output.length === 1 && input.length > 1) {\n      output.push(quantizePoint(input[input.length - 1]));\n    }\n    return output;\n  }\n\n  function quantizePolygon(input) {\n    return input.map(quantizePointsNoDuplicates);\n  }\n\n  function quantizeGeometry(input) {\n    if (input == null) return input;\n    var output;\n    switch (input.type) {\n      case \"GeometryCollection\": output = {type: \"GeometryCollection\", geometries: input.geometries.map(quantizeGeometry)}; break;\n      case \"Point\": output = {type: \"Point\", coordinates: quantizePoint(input.coordinates)}; break;\n      case \"MultiPoint\": output = {type: input.type, coordinates: quantizePoints(input.coordinates)}; break;\n      case \"LineString\": output = {type: input.type, coordinates: quantizePointsNoDuplicates(input.coordinates)}; break;\n      case \"MultiLineString\": case \"Polygon\": output = {type: input.type, coordinates: quantizePolygon(input.coordinates)}; break;\n      case \"MultiPolygon\": output = {type: \"MultiPolygon\", coordinates: input.coordinates.map(quantizePolygon)}; break;\n      default: return input;\n    }\n    if (input.bbox != null) output.bbox = input.bbox;\n    return output;\n  }\n\n  function quantizeFeature(input) {\n    var output = {type: \"Feature\", properties: input.properties, geometry: quantizeGeometry(input.geometry)};\n    if (input.id != null) output.id = input.id;\n    if (input.bbox != null) output.bbox = input.bbox;\n    return output;\n  }\n\n  if (input != null) switch (input.type) {\n    case \"Feature\": return quantizeFeature(input);\n    case \"FeatureCollection\": {\n      var output = {type: \"FeatureCollection\", features: input.features.map(quantizeFeature)};\n      if (input.bbox != null) output.bbox = input.bbox;\n      return output;\n    }\n    default: return quantizeGeometry(input);\n  }\n\n  return input;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/rectangularPolyconic.js\n\n\n\nfunction rectangularPolyconicRaw(phi0) {\n  var sinPhi0 = sin(phi0);\n\n  function forward(lambda, phi) {\n    var A = sinPhi0 ? tan(lambda * sinPhi0 / 2) / sinPhi0 : lambda / 2;\n    if (!phi) return [2 * A, -phi0];\n    var E = 2 * atan(A * sin(phi)),\n        cotPhi = 1 / tan(phi);\n    return [\n      sin(E) * cotPhi,\n      phi + (1 - cos(E)) * cotPhi - phi0\n    ];\n  }\n\n  // TODO return null for points outside outline.\n  forward.invert = function(x, y) {\n    if (abs(y += phi0) < epsilon) return [sinPhi0 ? 2 * atan(sinPhi0 * x / 2) / sinPhi0 : x, 0];\n    var k = x * x + y * y,\n        phi = 0,\n        i = 10, delta;\n    do {\n      var tanPhi = tan(phi),\n          secPhi = 1 / cos(phi),\n          j = k - 2 * y * phi + phi * phi;\n      phi -= delta = (tanPhi * j + 2 * (phi - y)) / (2 + j * secPhi * secPhi + 2 * (phi - y) * tanPhi);\n    } while (abs(delta) > epsilon && --i > 0);\n    var E = x * (tanPhi = tan(phi)),\n        A = tan(abs(y) < abs(phi + 1 / tanPhi) ? asin(E) * 0.5 : acos(E) * 0.5 + pi / 4) / sin(phi);\n    return [\n      sinPhi0 ? 2 * atan(sinPhi0 * A) / sinPhi0 : 2 * A,\n      phi\n    ];\n  };\n\n  return forward;\n}\n\n/* harmony default export */ function rectangularPolyconic() {\n  return parallel1(rectangularPolyconicRaw)\n      .scale(131.215);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/robinson.js\n\n\n\nvar robinson_K = [\n  [0.9986, -0.062],\n  [1.0000, 0.0000],\n  [0.9986, 0.0620],\n  [0.9954, 0.1240],\n  [0.9900, 0.1860],\n  [0.9822, 0.2480],\n  [0.9730, 0.3100],\n  [0.9600, 0.3720],\n  [0.9427, 0.4340],\n  [0.9216, 0.4958],\n  [0.8962, 0.5571],\n  [0.8679, 0.6176],\n  [0.8350, 0.6769],\n  [0.7986, 0.7346],\n  [0.7597, 0.7903],\n  [0.7186, 0.8435],\n  [0.6732, 0.8936],\n  [0.6213, 0.9394],\n  [0.5722, 0.9761],\n  [0.5322, 1.0000]\n];\n\nrobinson_K.forEach(function(d) {\n  d[1] *= 1.0144;\n});\n\nfunction robinsonRaw(lambda, phi) {\n  var i = min(18, abs(phi) * 36 / pi),\n      i0 = floor(i),\n      di = i - i0,\n      ax = (k = robinson_K[i0])[0],\n      ay = k[1],\n      bx = (k = robinson_K[++i0])[0],\n      by = k[1],\n      cx = (k = robinson_K[min(19, ++i0)])[0],\n      cy = k[1],\n      k;\n  return [\n    lambda * (bx + di * (cx - ax) / 2 + di * di * (cx - 2 * bx + ax) / 2),\n    (phi > 0 ? halfPi : -halfPi) * (by + di * (cy - ay) / 2 + di * di * (cy - 2 * by + ay) / 2)\n  ];\n}\n\nrobinsonRaw.invert = function(x, y) {\n  var yy = y / halfPi,\n      phi = yy * 90,\n      i = min(18, abs(phi / 5)),\n      i0 = max(0, floor(i));\n  do {\n    var ay = robinson_K[i0][1],\n        by = robinson_K[i0 + 1][1],\n        cy = robinson_K[min(19, i0 + 2)][1],\n        u = cy - ay,\n        v = cy - 2 * by + ay,\n        t = 2 * (abs(yy) - by) / u,\n        c = v / u,\n        di = t * (1 - c * t * (1 - 2 * c * t));\n    if (di >= 0 || i0 === 1) {\n      phi = (y >= 0 ? 5 : -5) * (di + i);\n      var j = 50, delta;\n      do {\n        i = min(18, abs(phi) / 5);\n        i0 = floor(i);\n        di = i - i0;\n        ay = robinson_K[i0][1];\n        by = robinson_K[i0 + 1][1];\n        cy = robinson_K[min(19, i0 + 2)][1];\n        phi -= (delta = (y >= 0 ? halfPi : -halfPi) * (by + di * (cy - ay) / 2 + di * di * (cy - 2 * by + ay) / 2) - y) * degrees;\n      } while (abs(delta) > epsilon2 && --j > 0);\n      break;\n    }\n  } while (--i0 >= 0);\n  var ax = robinson_K[i0][0],\n      bx = robinson_K[i0 + 1][0],\n      cx = robinson_K[min(19, i0 + 2)][0];\n  return [\n    x / (bx + di * (cx - ax) / 2 + di * di * (cx - 2 * bx + ax) / 2),\n    phi * radians\n  ];\n};\n\n/* harmony default export */ function robinson() {\n  return (0,src_projection/* default */.Z)(robinsonRaw)\n      .scale(152.63);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/satellite.js\n\n\n\nfunction satelliteVerticalRaw(P) {\n  function forward(lambda, phi) {\n    var cosPhi = cos(phi),\n        k = (P - 1) / (P - cosPhi * cos(lambda));\n    return [\n      k * cosPhi * sin(lambda),\n      k * sin(phi)\n    ];\n  }\n\n  forward.invert = function(x, y) {\n    var rho2 = x * x + y * y,\n        rho = sqrt(rho2),\n        sinc = (P - sqrt(1 - rho2 * (P + 1) / (P - 1))) / ((P - 1) / rho + rho / (P - 1));\n    return [\n      atan2(x * sinc, rho * sqrt(1 - sinc * sinc)),\n      rho ? asin(y * sinc / rho) : 0\n    ];\n  };\n\n  return forward;\n}\n\nfunction satelliteRaw(P, omega) {\n  var vertical = satelliteVerticalRaw(P);\n  if (!omega) return vertical;\n  var cosOmega = cos(omega),\n      sinOmega = sin(omega);\n\n  function forward(lambda, phi) {\n    var coordinates = vertical(lambda, phi),\n        y = coordinates[1],\n        A = y * sinOmega / (P - 1) + cosOmega;\n    return [\n      coordinates[0] * cosOmega / A,\n      y / A\n    ];\n  }\n\n  forward.invert = function(x, y) {\n    var k = (P - 1) / (P - 1 - y * sinOmega);\n    return vertical.invert(k * x, k * y * cosOmega);\n  };\n\n  return forward;\n}\n\n/* harmony default export */ function satellite() {\n  var distance = 2,\n      omega = 0,\n      m = (0,src_projection/* projectionMutator */.r)(satelliteRaw),\n      p = m(distance, omega);\n\n  // As a multiple of radius.\n  p.distance = function(_) {\n    if (!arguments.length) return distance;\n    return m(distance = +_, omega);\n  };\n\n  p.tilt = function(_) {\n    if (!arguments.length) return omega * degrees;\n    return m(distance, omega = _ * radians);\n  };\n\n  return p\n      .scale(432.147)\n      .clipAngle(acos(1 / distance) * degrees - 1e-6);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/stitch.js\nvar stitch_epsilon = 1e-4,\n    epsilonInverse = 1e4,\n    x0 = -180, x0e = x0 + stitch_epsilon,\n    x1 = 180, x1e = x1 - stitch_epsilon,\n    y0 = -90, y0e = y0 + stitch_epsilon,\n    y1 = 90, y1e = y1 - stitch_epsilon;\n\nfunction nonempty(coordinates) {\n  return coordinates.length > 0;\n}\n\nfunction stitch_quantize(x) {\n  return Math.floor(x * epsilonInverse) / epsilonInverse;\n}\n\nfunction normalizePoint(y) {\n  return y === y0 || y === y1 ? [0, y] : [x0, stitch_quantize(y)]; // pole or antimeridian?\n}\n\nfunction clampPoint(p) {\n  var x = p[0], y = p[1], clamped = false;\n  if (x <= x0e) x = x0, clamped = true;\n  else if (x >= x1e) x = x1, clamped = true;\n  if (y <= y0e) y = y0, clamped = true;\n  else if (y >= y1e) y = y1, clamped = true;\n  return clamped ? [x, y] : p;\n}\n\nfunction clampPoints(points) {\n  return points.map(clampPoint);\n}\n\n// For each ring, detect where it crosses the antimeridian or pole.\nfunction extractFragments(rings, polygon, fragments) {\n  for (var j = 0, m = rings.length; j < m; ++j) {\n    var ring = rings[j].slice();\n\n    // By default, assume that this ring doesn’t need any stitching.\n    fragments.push({index: -1, polygon: polygon, ring: ring});\n\n    for (var i = 0, n = ring.length; i < n; ++i) {\n      var point = ring[i],\n          x = point[0],\n          y = point[1];\n\n      // If this is an antimeridian or polar point…\n      if (x <= x0e || x >= x1e || y <= y0e || y >= y1e) {\n        ring[i] = clampPoint(point);\n\n        // Advance through any antimeridian or polar points…\n        for (var k = i + 1; k < n; ++k) {\n          var pointk = ring[k],\n              xk = pointk[0],\n              yk = pointk[1];\n          if (xk > x0e && xk < x1e && yk > y0e && yk < y1e) break;\n        }\n\n        // If this was just a single antimeridian or polar point,\n        // we don’t need to cut this ring into a fragment;\n        // we can just leave it as-is.\n        if (k === i + 1) continue;\n\n        // Otherwise, if this is not the first point in the ring,\n        // cut the current fragment so that it ends at the current point.\n        // The current point is also normalized for later joining.\n        if (i) {\n          var fragmentBefore = {index: -1, polygon: polygon, ring: ring.slice(0, i + 1)};\n          fragmentBefore.ring[fragmentBefore.ring.length - 1] = normalizePoint(y);\n          fragments[fragments.length - 1] = fragmentBefore;\n        }\n\n        // If the ring started with an antimeridian fragment,\n        // we can ignore that fragment entirely.\n        else fragments.pop();\n\n        // If the remainder of the ring is an antimeridian fragment,\n        // move on to the next ring.\n        if (k >= n) break;\n\n        // Otherwise, add the remaining ring fragment and continue.\n        fragments.push({index: -1, polygon: polygon, ring: ring = ring.slice(k - 1)});\n        ring[0] = normalizePoint(ring[0][1]);\n        i = -1;\n        n = ring.length;\n      }\n    }\n  }\n}\n\n// Now stitch the fragments back together into rings.\nfunction stitchFragments(fragments) {\n  var i, n = fragments.length;\n\n  // To connect the fragments start-to-end, create a simple index by end.\n  var fragmentByStart = {},\n      fragmentByEnd = {},\n      fragment,\n      start,\n      startFragment,\n      end,\n      endFragment;\n\n  // For each fragment…\n  for (i = 0; i < n; ++i) {\n    fragment = fragments[i];\n    start = fragment.ring[0];\n    end = fragment.ring[fragment.ring.length - 1];\n\n    // If this fragment is closed, add it as a standalone ring.\n    if (start[0] === end[0] && start[1] === end[1]) {\n      fragment.polygon.push(fragment.ring);\n      fragments[i] = null;\n      continue;\n    }\n\n    fragment.index = i;\n    fragmentByStart[start] = fragmentByEnd[end] = fragment;\n  }\n\n  // For each open fragment…\n  for (i = 0; i < n; ++i) {\n    fragment = fragments[i];\n    if (fragment) {\n      start = fragment.ring[0];\n      end = fragment.ring[fragment.ring.length - 1];\n      startFragment = fragmentByEnd[start];\n      endFragment = fragmentByStart[end];\n\n      delete fragmentByStart[start];\n      delete fragmentByEnd[end];\n\n      // If this fragment is closed, add it as a standalone ring.\n      if (start[0] === end[0] && start[1] === end[1]) {\n        fragment.polygon.push(fragment.ring);\n        continue;\n      }\n\n      if (startFragment) {\n        delete fragmentByEnd[start];\n        delete fragmentByStart[startFragment.ring[0]];\n        startFragment.ring.pop(); // drop the shared coordinate\n        fragments[startFragment.index] = null;\n        fragment = {index: -1, polygon: startFragment.polygon, ring: startFragment.ring.concat(fragment.ring)};\n\n        if (startFragment === endFragment) {\n          // Connect both ends to this single fragment to create a ring.\n          fragment.polygon.push(fragment.ring);\n        } else {\n          fragment.index = n++;\n          fragments.push(fragmentByStart[fragment.ring[0]] = fragmentByEnd[fragment.ring[fragment.ring.length - 1]] = fragment);\n        }\n      } else if (endFragment) {\n        delete fragmentByStart[end];\n        delete fragmentByEnd[endFragment.ring[endFragment.ring.length - 1]];\n        fragment.ring.pop(); // drop the shared coordinate\n        fragment = {index: n++, polygon: endFragment.polygon, ring: fragment.ring.concat(endFragment.ring)};\n        fragments[endFragment.index] = null;\n        fragments.push(fragmentByStart[fragment.ring[0]] = fragmentByEnd[fragment.ring[fragment.ring.length - 1]] = fragment);\n      } else {\n        fragment.ring.push(fragment.ring[0]); // close ring\n        fragment.polygon.push(fragment.ring);\n      }\n    }\n  }\n}\n\nfunction stitchFeature(input) {\n  var output = {type: \"Feature\", geometry: stitchGeometry(input.geometry)};\n  if (input.id != null) output.id = input.id;\n  if (input.bbox != null) output.bbox = input.bbox;\n  if (input.properties != null) output.properties = input.properties;\n  return output;\n}\n\nfunction stitchGeometry(input) {\n  if (input == null) return input;\n  var output, fragments, i, n;\n  switch (input.type) {\n    case \"GeometryCollection\": output = {type: \"GeometryCollection\", geometries: input.geometries.map(stitchGeometry)}; break;\n    case \"Point\": output = {type: \"Point\", coordinates: clampPoint(input.coordinates)}; break;\n    case \"MultiPoint\": case \"LineString\": output = {type: input.type, coordinates: clampPoints(input.coordinates)}; break;\n    case \"MultiLineString\": output = {type: \"MultiLineString\", coordinates: input.coordinates.map(clampPoints)}; break;\n    case \"Polygon\": {\n      var polygon = [];\n      extractFragments(input.coordinates, polygon, fragments = []);\n      stitchFragments(fragments);\n      output = {type: \"Polygon\", coordinates: polygon};\n      break;\n    }\n    case \"MultiPolygon\": {\n      fragments = [], i = -1, n = input.coordinates.length;\n      var polygons = new Array(n);\n      while (++i < n) extractFragments(input.coordinates[i], polygons[i] = [], fragments);\n      stitchFragments(fragments);\n      output = {type: \"MultiPolygon\", coordinates: polygons.filter(nonempty)};\n      break;\n    }\n    default: return input;\n  }\n  if (input.bbox != null) output.bbox = input.bbox;\n  return output;\n}\n\n/* harmony default export */ function stitch(input) {\n  if (input == null) return input;\n  switch (input.type) {\n    case \"Feature\": return stitchFeature(input);\n    case \"FeatureCollection\": {\n      var output = {type: \"FeatureCollection\", features: input.features.map(stitchFeature)};\n      if (input.bbox != null) output.bbox = input.bbox;\n      return output;\n    }\n    default: return stitchGeometry(input);\n  }\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/times.js\n\n\n\nfunction timesRaw(lambda, phi) {\n  var t = tan(phi / 2),\n      s = sin(quarterPi * t);\n  return [\n    lambda * (0.74482 - 0.34588 * s * s),\n    1.70711 * t\n  ];\n}\n\ntimesRaw.invert = function(x, y) {\n  var t = y / 1.70711,\n      s = sin(quarterPi * t);\n  return [\n    x / (0.74482 - 0.34588 * s * s),\n    2 * atan(t)\n  ];\n};\n\n/* harmony default export */ function times() {\n  return (0,src_projection/* default */.Z)(timesRaw)\n      .scale(146.153);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/twoPoint.js\n\n\n\n// Compute the origin as the midpoint of the two reference points.\n// Rotate one of the reference points by the origin.\n// Apply the spherical law of sines to compute gamma rotation.\n/* harmony default export */ function twoPoint(raw, p0, p1) {\n  var i = (0,interpolate/* default */.Z)(p0, p1),\n      o = i(0.5),\n      a = (0,rotation/* default */.Z)([-o[0], -o[1]])(p0),\n      b = i.distance / 2,\n      y = -asin(sin(a[1] * radians) / sin(b)),\n      R = [-o[0], -o[1], -(a[0] > 0 ? pi - y : y) * degrees],\n      p = (0,src_projection/* default */.Z)(raw(b)).rotate(R),\n      r = (0,rotation/* default */.Z)(R),\n      center = p.center;\n\n  delete p.rotate;\n\n  p.center = function(_) {\n    return arguments.length ? center(r(_)) : r.invert(center());\n  };\n\n  return p\n      .clipAngle(90);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/twoPointAzimuthal.js\n\n\n\n\nfunction twoPointAzimuthalRaw(d) {\n  var cosd = cos(d);\n\n  function forward(lambda, phi) {\n    var coordinates = (0,gnomonic/* gnomonicRaw */.M)(lambda, phi);\n    coordinates[0] *= cosd;\n    return coordinates;\n  }\n\n  forward.invert = function(x, y) {\n    return gnomonic/* gnomonicRaw.invert */.M.invert(x / cosd, y);\n  };\n\n  return forward;\n}\n\nfunction twoPointAzimuthalUsa() {\n  return twoPointAzimuthal([-158, 21.5], [-77, 39])\n      .clipAngle(60)\n      .scale(400);\n}\n\nfunction twoPointAzimuthal(p0, p1) {\n  return twoPoint(twoPointAzimuthalRaw, p0, p1);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/twoPointEquidistant.js\n\n\n\n\n// TODO clip to ellipse\nfunction twoPointEquidistantRaw(z0) {\n  if (!(z0 *= 2)) return azimuthalEquidistant/* azimuthalEquidistantRaw */.N;\n  var lambdaa = -z0 / 2,\n      lambdab = -lambdaa,\n      z02 = z0 * z0,\n      tanLambda0 = tan(lambdab),\n      S = 0.5 / sin(lambdab);\n\n  function forward(lambda, phi) {\n    var za = acos(cos(phi) * cos(lambda - lambdaa)),\n        zb = acos(cos(phi) * cos(lambda - lambdab)),\n        ys = phi < 0 ? -1 : 1;\n    za *= za, zb *= zb;\n    return [\n      (za - zb) / (2 * z0),\n      ys * sqrt(4 * z02 * zb - (z02 - za + zb) * (z02 - za + zb)) / (2 * z0)\n    ];\n  }\n\n  forward.invert = function(x, y) {\n    var y2 = y * y,\n        cosza = cos(sqrt(y2 + (t = x + lambdaa) * t)),\n        coszb = cos(sqrt(y2 + (t = x + lambdab) * t)),\n        t,\n        d;\n    return [\n      atan2(d = cosza - coszb, t = (cosza + coszb) * tanLambda0),\n      (y < 0 ? -1 : 1) * acos(sqrt(t * t + d * d) * S)\n    ];\n  };\n\n  return forward;\n}\n\nfunction twoPointEquidistantUsa() {\n  return twoPointEquidistant([-158, 21.5], [-77, 39])\n      .clipAngle(130)\n      .scale(122.571);\n}\n\nfunction twoPointEquidistant(p0, p1) {\n  return twoPoint(twoPointEquidistantRaw, p0, p1);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/vanDerGrinten.js\n\n\n\nfunction vanDerGrintenRaw(lambda, phi) {\n  if (abs(phi) < epsilon) return [lambda, 0];\n  var sinTheta = abs(phi / halfPi),\n      theta = asin(sinTheta);\n  if (abs(lambda) < epsilon || abs(abs(phi) - halfPi) < epsilon) return [0, sign(phi) * pi * tan(theta / 2)];\n  var cosTheta = cos(theta),\n      A = abs(pi / lambda - lambda / pi) / 2,\n      A2 = A * A,\n      G = cosTheta / (sinTheta + cosTheta - 1),\n      P = G * (2 / sinTheta - 1),\n      P2 = P * P,\n      P2_A2 = P2 + A2,\n      G_P2 = G - P2,\n      Q = A2 + G;\n  return [\n    sign(lambda) * pi * (A * G_P2 + sqrt(A2 * G_P2 * G_P2 - P2_A2 * (G * G - P2))) / P2_A2,\n    sign(phi) * pi * (P * Q - A * sqrt((A2 + 1) * P2_A2 - Q * Q)) / P2_A2\n  ];\n}\n\nvanDerGrintenRaw.invert = function(x, y) {\n  if (abs(y) < epsilon) return [x, 0];\n  if (abs(x) < epsilon) return [0, halfPi * sin(2 * atan(y / pi))];\n  var x2 = (x /= pi) * x,\n      y2 = (y /= pi) * y,\n      x2_y2 = x2 + y2,\n      z = x2_y2 * x2_y2,\n      c1 = -abs(y) * (1 + x2_y2),\n      c2 = c1 - 2 * y2 + x2,\n      c3 = -2 * c1 + 1 + 2 * y2 + z,\n      d = y2 / c3 + (2 * c2 * c2 * c2 / (c3 * c3 * c3) - 9 * c1 * c2 / (c3 * c3)) / 27,\n      a1 = (c1 - c2 * c2 / (3 * c3)) / c3,\n      m1 = 2 * sqrt(-a1 / 3),\n      theta1 = acos(3 * d / (a1 * m1)) / 3;\n  return [\n    pi * (x2_y2 - 1 + sqrt(1 + 2 * (x2 - y2) + z)) / (2 * x),\n    sign(y) * pi * (-m1 * cos(theta1 + pi / 3) - c2 / (3 * c3))\n  ];\n};\n\n/* harmony default export */ function vanDerGrinten() {\n  return (0,src_projection/* default */.Z)(vanDerGrintenRaw)\n      .scale(79.4183);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/vanDerGrinten2.js\n\n\n\nfunction vanDerGrinten2Raw(lambda, phi) {\n  if (abs(phi) < epsilon) return [lambda, 0];\n  var sinTheta = abs(phi / halfPi),\n      theta = asin(sinTheta);\n  if (abs(lambda) < epsilon || abs(abs(phi) - halfPi) < epsilon) return [0, sign(phi) * pi * tan(theta / 2)];\n  var cosTheta = cos(theta),\n      A = abs(pi / lambda - lambda / pi) / 2,\n      A2 = A * A,\n      x1 = cosTheta * (sqrt(1 + A2) - A * cosTheta) / (1 + A2 * sinTheta * sinTheta);\n  return [\n    sign(lambda) * pi * x1,\n    sign(phi) * pi * sqrt(1 - x1 * (2 * A + x1))\n  ];\n}\n\nvanDerGrinten2Raw.invert = function(x, y) {\n  if (!x) return [0, halfPi * sin(2 * atan(y / pi))];\n  var x1 = abs(x / pi),\n      A = (1 - x1 * x1 - (y /= pi) * y) / (2 * x1),\n      A2 = A * A,\n      B = sqrt(A2 + 1);\n  return [\n    sign(x) * pi * (B - A),\n    sign(y) * halfPi * sin(2 * atan2(sqrt((1 - 2 * A * x1) * (A + B) - x1), sqrt(B + A + x1)))\n  ];\n};\n\n/* harmony default export */ function vanDerGrinten2() {\n  return (0,src_projection/* default */.Z)(vanDerGrinten2Raw)\n      .scale(79.4183);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/vanDerGrinten3.js\n\n\n\nfunction vanDerGrinten3Raw(lambda, phi) {\n  if (abs(phi) < epsilon) return [lambda, 0];\n  var sinTheta = phi / halfPi,\n      theta = asin(sinTheta);\n  if (abs(lambda) < epsilon || abs(abs(phi) - halfPi) < epsilon) return [0, pi * tan(theta / 2)];\n  var A = (pi / lambda - lambda / pi) / 2,\n      y1 = sinTheta / (1 + cos(theta));\n  return [\n    pi * (sign(lambda) * sqrt(A * A + 1 - y1 * y1) - A),\n    pi * y1\n  ];\n}\n\nvanDerGrinten3Raw.invert = function(x, y) {\n  if (!y) return [x, 0];\n  var y1 = y / pi,\n      A = (pi * pi * (1 - y1 * y1) - x * x) / (2 * pi * x);\n  return [\n    x ? pi * (sign(x) * sqrt(A * A + 1) - A) : 0,\n    halfPi * sin(2 * atan(y1))\n  ];\n};\n\n/* harmony default export */ function vanDerGrinten3() {\n  return (0,src_projection/* default */.Z)(vanDerGrinten3Raw)\n        .scale(79.4183);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/vanDerGrinten4.js\n\n\n\nfunction vanDerGrinten4Raw(lambda, phi) {\n  if (!phi) return [lambda, 0];\n  var phi0 = abs(phi);\n  if (!lambda || phi0 === halfPi) return [0, phi];\n  var B = phi0 / halfPi,\n      B2 = B * B,\n      C = (8 * B - B2 * (B2 + 2) - 5) / (2 * B2 * (B - 1)),\n      C2 = C * C,\n      BC = B * C,\n      B_C2 = B2 + C2 + 2 * BC,\n      B_3C = B + 3 * C,\n      lambda0 = lambda / halfPi,\n      lambda1 = lambda0 + 1 / lambda0,\n      D = sign(abs(lambda) - halfPi) * sqrt(lambda1 * lambda1 - 4),\n      D2 = D * D,\n      F = B_C2 * (B2 + C2 * D2 - 1) + (1 - B2) * (B2 * (B_3C * B_3C + 4 * C2) + 12 * BC * C2 + 4 * C2 * C2),\n      x1 = (D * (B_C2 + C2 - 1) + 2 * sqrt(F)) / (4 * B_C2 + D2);\n  return [\n    sign(lambda) * halfPi * x1,\n    sign(phi) * halfPi * sqrt(1 + D * abs(x1) - x1 * x1)\n  ];\n}\n\nvanDerGrinten4Raw.invert = function(x, y) {\n  var delta;\n  if (!x || !y) return [x, y];\n  y /= pi;\n  var x1 = sign(x) * x / halfPi,\n      D = (x1 * x1 - 1 + 4 * y * y) / abs(x1),\n      D2 = D * D,\n      B = 2 * y,\n      i = 50;\n  do {\n    var B2 = B * B,\n        C = (8 * B - B2 * (B2 + 2) - 5) / (2 * B2 * (B - 1)),\n        C_ = (3 * B - B2 * B - 10) / (2 * B2 * B),\n        C2 = C * C,\n        BC = B * C,\n        B_C = B + C,\n        B_C2 = B_C * B_C,\n        B_3C = B + 3 * C,\n        F = B_C2 * (B2 + C2 * D2 - 1) + (1 - B2) * (B2 * (B_3C * B_3C + 4 * C2) + C2 * (12 * BC + 4 * C2)),\n        F_ = -2 * B_C * (4 * BC * C2 + (1 - 4 * B2 + 3 * B2 * B2) * (1 + C_) + C2 * (-6 + 14 * B2 - D2 + (-8 + 8 * B2 - 2 * D2) * C_) + BC * (-8 + 12 * B2 + (-10 + 10 * B2 - D2) * C_)),\n        sqrtF = sqrt(F),\n        f = D * (B_C2 + C2 - 1) + 2 * sqrtF - x1 * (4 * B_C2 + D2),\n        f_ = D * (2 * C * C_ + 2 * B_C * (1 + C_)) + F_ / sqrtF - 8 * B_C * (D * (-1 + C2 + B_C2) + 2 * sqrtF) * (1 + C_) / (D2 + 4 * B_C2);\n    B -= delta = f / f_;\n  } while (delta > epsilon && --i > 0);\n  return [\n    sign(x) * (sqrt(D * D + 4) + D) * pi / 4,\n    halfPi * B\n  ];\n};\n\n/* harmony default export */ function vanDerGrinten4() {\n  return (0,src_projection/* default */.Z)(vanDerGrinten4Raw)\n      .scale(127.16);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/wagner.js\n\n\n\nfunction wagnerFormula(cx, cy, m1, m2, n) {\n  function forward(lambda, phi) {\n    var s = m1 * sin(m2 * phi),\n        c0 = sqrt(1 - s * s),\n        c1 = sqrt(2 / (1 + c0 * cos(lambda *= n)));\n    return [\n      cx * c0 * c1 * sin(lambda),\n      cy * s * c1\n    ];\n  }\n\n  forward.invert = function(x, y) {\n    var t1 = x / cx,\n        t2 = y / cy,\n        p = sqrt(t1 * t1 + t2 * t2),\n        c = 2 * asin(p / 2);\n    return [\n      atan2(x * tan(c), cx * p) / n,\n      p && asin(y * sin(c) / (cy * m1 * p)) / m2\n    ];\n  };\n\n  return forward;\n}\n\nfunction wagnerRaw(poleline, parallels, inflation, ratio) {\n  // 60 is always used as reference parallel\n  var phi1 = pi / 3;\n\n  // sanitizing the input values\n  // poleline and parallels may approximate but never equal 0\n  poleline = max(poleline, epsilon);\n  parallels = max(parallels, epsilon);\n  // poleline must be <= 90; parallels may approximate but never equal 180\n  poleline = min(poleline, halfPi);\n  parallels = min(parallels, pi - epsilon);\n  // 0 <= inflation <= 99.999\n  inflation = max(inflation, 0);\n  inflation = min(inflation, 100 - epsilon);\n  // ratio > 0.\n  // sensible values, i.e. something that renders a map which still can be\n  // recognized as world map, are e.g. 20 <= ratio <= 1000.\n  ratio = max(ratio, epsilon);\n\n  // convert values from boehm notation\n  // areal inflation e.g. from 0 to 1 or 20 to 1.2:\n  var vinflation = inflation/100 + 1;\n  // axial ratio e.g. from 200 to 2:\n  var vratio  = ratio / 100;\n  // the other ones are a bit more complicated...\n  var m2 = acos(vinflation * cos(phi1)) / phi1,\n      m1 = sin(poleline) / sin(m2 * halfPi),\n      n = parallels / pi,\n      k = sqrt(vratio * sin(poleline / 2) / sin(parallels / 2)),\n      cx = k / sqrt(n * m1 * m2),\n      cy = 1 / (k * sqrt(n * m1 * m2));\n\n  return wagnerFormula(cx, cy, m1, m2, n);\n}\n\nfunction wagner() {\n  // default values generate wagner8\n  var poleline = 65 * radians,\n      parallels = 60 * radians,\n      inflation = 20,\n      ratio = 200,\n      mutate = (0,src_projection/* projectionMutator */.r)(wagnerRaw),\n      projection = mutate(poleline, parallels, inflation, ratio);\n\n  projection.poleline = function(_) {\n    return arguments.length ? mutate(poleline = +_ * radians, parallels, inflation, ratio) : poleline * degrees;\n  };\n\n  projection.parallels = function(_) {\n    return arguments.length ? mutate(poleline, parallels = +_ * radians, inflation, ratio) : parallels * degrees;\n  };\n  projection.inflation = function(_) {\n    return arguments.length ? mutate(poleline, parallels, inflation = +_, ratio) : inflation;\n  };\n  projection.ratio = function(_) {\n    return arguments.length ? mutate(poleline, parallels, inflation, ratio = +_) : ratio;\n  };\n\n  return projection\n    .scale(163.775);\n}\n\nfunction wagner7() {\n  return wagner()\n      .poleline(65)\n      .parallels(60)\n      .inflation(0)\n      .ratio(200)\n      .scale(172.633);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/wagner4.js\n\n\n\n\nvar A = 4 * pi + 3 * sqrt(3),\n    B = 2 * sqrt(2 * pi * sqrt(3) / A);\n\nvar wagner4Raw = mollweideBromleyRaw(B * sqrt(3) / pi, B, A / 6);\n\n/* harmony default export */ function wagner4() {\n  return (0,src_projection/* default */.Z)(wagner4Raw)\n      .scale(176.84);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/wagner6.js\n\n\n\nfunction wagner6Raw(lambda, phi) {\n  return [lambda * sqrt(1 - 3 * phi * phi / (pi * pi)), phi];\n}\n\nwagner6Raw.invert = function(x, y) {\n  return [x / sqrt(1 - 3 * y * y / (pi * pi)), y];\n};\n\n/* harmony default export */ function wagner6() {\n  return (0,src_projection/* default */.Z)(wagner6Raw)\n      .scale(152.63);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/wiechel.js\n\n\n\nfunction wiechelRaw(lambda, phi) {\n  var cosPhi = cos(phi),\n      sinPhi = cos(lambda) * cosPhi,\n      sin1_Phi = 1 - sinPhi,\n      cosLambda = cos(lambda = atan2(sin(lambda) * cosPhi, -sin(phi))),\n      sinLambda = sin(lambda);\n  cosPhi = sqrt(1 - sinPhi * sinPhi);\n  return [\n    sinLambda * cosPhi - cosLambda * sin1_Phi,\n    -cosLambda * cosPhi - sinLambda * sin1_Phi\n  ];\n}\n\nwiechelRaw.invert = function(x, y) {\n  var w = (x * x + y * y) / -2,\n      k = sqrt(-w * (2 + w)),\n      b = y * w + x * k,\n      a = x * w - y * k,\n      D = sqrt(a * a + b * b);\n  return [\n    atan2(k * b, D * (1 + w)),\n    D ? -asin(k * a / D) : 0\n  ];\n};\n\n/* harmony default export */ function wiechel() {\n  return (0,src_projection/* default */.Z)(wiechelRaw)\n      .rotate([0, -90, 45])\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/winkel3.js\n\n\n\n\nfunction winkel3Raw(lambda, phi) {\n  var coordinates = aitoffRaw(lambda, phi);\n  return [\n    (coordinates[0] + lambda / halfPi) / 2,\n    (coordinates[1] + phi) / 2\n  ];\n}\n\nwinkel3Raw.invert = function(x, y) {\n  var lambda = x, phi = y, i = 25;\n  do {\n    var cosphi = cos(phi),\n        sinphi = sin(phi),\n        sin_2phi = sin(2 * phi),\n        sin2phi = sinphi * sinphi,\n        cos2phi = cosphi * cosphi,\n        sinlambda = sin(lambda),\n        coslambda_2 = cos(lambda / 2),\n        sinlambda_2 = sin(lambda / 2),\n        sin2lambda_2 = sinlambda_2 * sinlambda_2,\n        C = 1 - cos2phi * coslambda_2 * coslambda_2,\n        E = C ? acos(cosphi * coslambda_2) * sqrt(F = 1 / C) : F = 0,\n        F,\n        fx = 0.5 * (2 * E * cosphi * sinlambda_2 + lambda / halfPi) - x,\n        fy = 0.5 * (E * sinphi + phi) - y,\n        dxdlambda = 0.5 * F * (cos2phi * sin2lambda_2 + E * cosphi * coslambda_2 * sin2phi) + 0.5 / halfPi,\n        dxdphi = F * (sinlambda * sin_2phi / 4 - E * sinphi * sinlambda_2),\n        dydlambda = 0.125 * F * (sin_2phi * sinlambda_2 - E * sinphi * cos2phi * sinlambda),\n        dydphi = 0.5 * F * (sin2phi * coslambda_2 + E * sin2lambda_2 * cosphi) + 0.5,\n        denominator = dxdphi * dydlambda - dydphi * dxdlambda,\n        dlambda = (fy * dxdphi - fx * dydphi) / denominator,\n        dphi = (fx * dydlambda - fy * dxdlambda) / denominator;\n    lambda -= dlambda, phi -= dphi;\n  } while ((abs(dlambda) > epsilon || abs(dphi) > epsilon) && --i > 0);\n  return [lambda, phi];\n};\n\n/* harmony default export */ function winkel3() {\n  return (0,src_projection/* default */.Z)(winkel3Raw)\n      .scale(158.837);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo-projection/src/index.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // DEPRECATED moved to d3-geo\n\n\n\n\n\n\n\n\n\n\n\n\n\n // DEPRECATED misspelling\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/***/ }),\n\n/***/ 33940:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5526773__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5526773__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n  return new Adder;\n}\n\nfunction Adder() {\n  this.reset();\n}\n\nAdder.prototype = {\n  constructor: Adder,\n  reset: function() {\n    this.s = // rounded value\n    this.t = 0; // exact error\n  },\n  add: function(y) {\n    add(temp, y, this.t);\n    add(this, temp.s, this.s);\n    if (this.s) this.t += temp.t;\n    else this.s = temp.t;\n  },\n  valueOf: function() {\n    return this.s;\n  }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n  var x = adder.s = a + b,\n      bv = x - a,\n      av = x - bv;\n  adder.t = (a - av) + (b - bv);\n}\n\n\n/***/ }),\n\n/***/ 97860:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5528042__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5528042__.d(__webpack_exports__, {\n/* harmony export */   \"L9\": function() { return /* binding */ areaRingSum; },\n/* harmony export */   \"ZP\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; },\n/* harmony export */   \"gL\": function() { return /* binding */ areaStream; }\n/* harmony export */ });\n/* harmony import */ var _adder_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5528042__(33940);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_5528042__(39695);\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5528042__(73182);\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_3__ = __nested_webpack_require_5528042__(72736);\n\n\n\n\n\nvar areaRingSum = (0,_adder_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z)();\n\nvar areaSum = (0,_adder_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z)(),\n    lambda00,\n    phi00,\n    lambda0,\n    cosPhi0,\n    sinPhi0;\n\nvar areaStream = {\n  point: _noop_js__WEBPACK_IMPORTED_MODULE_1__/* [\"default\"] */ .Z,\n  lineStart: _noop_js__WEBPACK_IMPORTED_MODULE_1__/* [\"default\"] */ .Z,\n  lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_1__/* [\"default\"] */ .Z,\n  polygonStart: function() {\n    areaRingSum.reset();\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    var areaRing = +areaRingSum;\n    areaSum.add(areaRing < 0 ? _math_js__WEBPACK_IMPORTED_MODULE_2__/* .tau */ .BZ + areaRing : areaRing);\n    this.lineStart = this.lineEnd = this.point = _noop_js__WEBPACK_IMPORTED_MODULE_1__/* [\"default\"] */ .Z;\n  },\n  sphere: function() {\n    areaSum.add(_math_js__WEBPACK_IMPORTED_MODULE_2__/* .tau */ .BZ);\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n  areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n  areaStream.point = areaPoint;\n  lambda00 = lambda, phi00 = phi;\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_2__/* .radians */ .uR, phi *= _math_js__WEBPACK_IMPORTED_MODULE_2__/* .radians */ .uR;\n  lambda0 = lambda, cosPhi0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_2__/* .cos */ .mC)(phi = phi / 2 + _math_js__WEBPACK_IMPORTED_MODULE_2__/* .quarterPi */ .pu), sinPhi0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_2__/* .sin */ .O$)(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_2__/* .radians */ .uR, phi *= _math_js__WEBPACK_IMPORTED_MODULE_2__/* .radians */ .uR;\n  phi = phi / 2 + _math_js__WEBPACK_IMPORTED_MODULE_2__/* .quarterPi */ .pu; // half the angular distance from south pole\n\n  // Spherical excess E for a spherical triangle with vertices: south pole,\n  // previous point, current point.  Uses a formula derived from Cagnoli’s\n  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n  var dLambda = lambda - lambda0,\n      sdLambda = dLambda >= 0 ? 1 : -1,\n      adLambda = sdLambda * dLambda,\n      cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_2__/* .cos */ .mC)(phi),\n      sinPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_2__/* .sin */ .O$)(phi),\n      k = sinPhi0 * sinPhi,\n      u = cosPhi0 * cosPhi + k * (0,_math_js__WEBPACK_IMPORTED_MODULE_2__/* .cos */ .mC)(adLambda),\n      v = k * sdLambda * (0,_math_js__WEBPACK_IMPORTED_MODULE_2__/* .sin */ .O$)(adLambda);\n  areaRingSum.add((0,_math_js__WEBPACK_IMPORTED_MODULE_2__/* .atan2 */ .fv)(v, u));\n\n  // Advance the previous points.\n  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(object) {\n  areaSum.reset();\n  (0,_stream_js__WEBPACK_IMPORTED_MODULE_3__/* [\"default\"] */ .Z)(object, areaStream);\n  return areaSum * 2;\n}\n\n\n/***/ }),\n\n/***/ 77338:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5531865__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5531865__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony import */ var _adder_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5531865__(33940);\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5531865__(97860);\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_3__ = __nested_webpack_require_5531865__(7620);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_5531865__(39695);\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_4__ = __nested_webpack_require_5531865__(72736);\n\n\n\n\n\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n    lambda2, // previous lambda-coordinate\n    lambda00, phi00, // first point\n    p0, // previous 3D point\n    deltaSum = (0,_adder_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z)(),\n    ranges,\n    range;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: boundsLineStart,\n  lineEnd: boundsLineEnd,\n  polygonStart: function() {\n    boundsStream.point = boundsRingPoint;\n    boundsStream.lineStart = boundsRingStart;\n    boundsStream.lineEnd = boundsRingEnd;\n    deltaSum.reset();\n    _area_js__WEBPACK_IMPORTED_MODULE_1__/* .areaStream.polygonStart */ .gL.polygonStart();\n  },\n  polygonEnd: function() {\n    _area_js__WEBPACK_IMPORTED_MODULE_1__/* .areaStream.polygonEnd */ .gL.polygonEnd();\n    boundsStream.point = boundsPoint;\n    boundsStream.lineStart = boundsLineStart;\n    boundsStream.lineEnd = boundsLineEnd;\n    if (_area_js__WEBPACK_IMPORTED_MODULE_1__/* .areaRingSum */ .L9 < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n    else if (deltaSum > _math_js__WEBPACK_IMPORTED_MODULE_2__/* .epsilon */ .Ho) phi1 = 90;\n    else if (deltaSum < -_math_js__WEBPACK_IMPORTED_MODULE_2__/* .epsilon */ .Ho) phi0 = -90;\n    range[0] = lambda0, range[1] = lambda1;\n  },\n  sphere: function() {\n    lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n  }\n};\n\nfunction boundsPoint(lambda, phi) {\n  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n  var p = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesian */ .Og)([lambda * _math_js__WEBPACK_IMPORTED_MODULE_2__/* .radians */ .uR, phi * _math_js__WEBPACK_IMPORTED_MODULE_2__/* .radians */ .uR]);\n  if (p0) {\n    var normal = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesianCross */ .T5)(p0, p),\n        equatorial = [normal[1], -normal[0], 0],\n        inflection = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesianCross */ .T5)(equatorial, normal);\n    (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesianNormalizeInPlace */ .iJ)(inflection);\n    inflection = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .spherical */ .Y1)(inflection);\n    var delta = lambda - lambda2,\n        sign = delta > 0 ? 1 : -1,\n        lambdai = inflection[0] * _math_js__WEBPACK_IMPORTED_MODULE_2__/* .degrees */ .RW * sign,\n        phii,\n        antimeridian = (0,_math_js__WEBPACK_IMPORTED_MODULE_2__/* .abs */ .Wn)(delta) > 180;\n    if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = inflection[1] * _math_js__WEBPACK_IMPORTED_MODULE_2__/* .degrees */ .RW;\n      if (phii > phi1) phi1 = phii;\n    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = -inflection[1] * _math_js__WEBPACK_IMPORTED_MODULE_2__/* .degrees */ .RW;\n      if (phii < phi0) phi0 = phii;\n    } else {\n      if (phi < phi0) phi0 = phi;\n      if (phi > phi1) phi1 = phi;\n    }\n    if (antimeridian) {\n      if (lambda < lambda2) {\n        if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n      } else {\n        if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n      }\n    } else {\n      if (lambda1 >= lambda0) {\n        if (lambda < lambda0) lambda0 = lambda;\n        if (lambda > lambda1) lambda1 = lambda;\n      } else {\n        if (lambda > lambda2) {\n          if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n        } else {\n          if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n        }\n      }\n    }\n  } else {\n    ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  }\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n  p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n  boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n  range[0] = lambda0, range[1] = lambda1;\n  boundsStream.point = boundsPoint;\n  p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n  if (p0) {\n    var delta = lambda - lambda2;\n    deltaSum.add((0,_math_js__WEBPACK_IMPORTED_MODULE_2__/* .abs */ .Wn)(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n  } else {\n    lambda00 = lambda, phi00 = phi;\n  }\n  _area_js__WEBPACK_IMPORTED_MODULE_1__/* .areaStream.point */ .gL.point(lambda, phi);\n  linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n  _area_js__WEBPACK_IMPORTED_MODULE_1__/* .areaStream.lineStart */ .gL.lineStart();\n}\n\nfunction boundsRingEnd() {\n  boundsRingPoint(lambda00, phi00);\n  _area_js__WEBPACK_IMPORTED_MODULE_1__/* .areaStream.lineEnd */ .gL.lineEnd();\n  if ((0,_math_js__WEBPACK_IMPORTED_MODULE_2__/* .abs */ .Wn)(deltaSum) > _math_js__WEBPACK_IMPORTED_MODULE_2__/* .epsilon */ .Ho) lambda0 = -(lambda1 = 180);\n  range[0] = lambda0, range[1] = lambda1;\n  p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n  return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n  return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n  return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(feature) {\n  var i, n, a, b, merged, deltaMax, delta;\n\n  phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n  ranges = [];\n  (0,_stream_js__WEBPACK_IMPORTED_MODULE_4__/* [\"default\"] */ .Z)(feature, boundsStream);\n\n  // First, sort ranges by their minimum longitudes.\n  if (n = ranges.length) {\n    ranges.sort(rangeCompare);\n\n    // Then, merge any ranges that overlap.\n    for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n      b = ranges[i];\n      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n        if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n        if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n      } else {\n        merged.push(a = b);\n      }\n    }\n\n    // Finally, find the largest gap between the merged ranges.\n    // The final bounding box will be the inverse of this gap.\n    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n      b = merged[i];\n      if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n    }\n  }\n\n  ranges = range = null;\n\n  return lambda0 === Infinity || phi0 === Infinity\n      ? [[NaN, NaN], [NaN, NaN]]\n      : [[lambda0, phi0], [lambda1, phi1]];\n}\n\n\n/***/ }),\n\n/***/ 7620:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5539255__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5539255__.d(__webpack_exports__, {\n/* harmony export */   \"Og\": function() { return /* binding */ cartesian; },\n/* harmony export */   \"T\": function() { return /* binding */ cartesianScale; },\n/* harmony export */   \"T5\": function() { return /* binding */ cartesianCross; },\n/* harmony export */   \"Y1\": function() { return /* binding */ spherical; },\n/* harmony export */   \"iJ\": function() { return /* binding */ cartesianNormalizeInPlace; },\n/* harmony export */   \"j9\": function() { return /* binding */ cartesianDot; },\n/* harmony export */   \"s0\": function() { return /* binding */ cartesianAddInPlace; }\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5539255__(39695);\n\n\nfunction spherical(cartesian) {\n  return [(0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .atan2 */ .fv)(cartesian[1], cartesian[0]), (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .asin */ .ZR)(cartesian[2])];\n}\n\nfunction cartesian(spherical) {\n  var lambda = spherical[0], phi = spherical[1], cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(phi);\n  return [cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(lambda), cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(lambda), (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(phi)];\n}\n\nfunction cartesianDot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nfunction cartesianCross(a, b) {\n  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nfunction cartesianAddInPlace(a, b) {\n  a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nfunction cartesianScale(vector, k) {\n  return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nfunction cartesianNormalizeInPlace(d) {\n  var l = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sqrt */ ._b)(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n  d[0] /= l, d[1] /= l, d[2] /= l;\n}\n\n\n/***/ }),\n\n/***/ 66624:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5541334__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5541334__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5541334__(39695);\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5541334__(73182);\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_5541334__(72736);\n\n\n\n\nvar W0, W1,\n    X0, Y0, Z0,\n    X1, Y1, Z1,\n    X2, Y2, Z2,\n    lambda00, phi00, // first point\n    x0, y0, z0; // previous point\n\nvar centroidStream = {\n  sphere: _noop_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z,\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__/* .radians */ .uR, phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__/* .radians */ .uR;\n  var cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .cos */ .mC)(phi);\n  centroidPointCartesian(cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .cos */ .mC)(lambda), cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(lambda), (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n  ++W0;\n  X0 += (x - X0) / W0;\n  Y0 += (y - Y0) / W0;\n  Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__/* .radians */ .uR, phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__/* .radians */ .uR;\n  var cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .cos */ .mC)(phi);\n  x0 = cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .cos */ .mC)(lambda);\n  y0 = cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(lambda);\n  z0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(phi);\n  centroidStream.point = centroidLinePoint;\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__/* .radians */ .uR, phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__/* .radians */ .uR;\n  var cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .cos */ .mC)(phi),\n      x = cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .cos */ .mC)(lambda),\n      y = cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(lambda),\n      z = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(phi),\n      w = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .atan2 */ .fv)((0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sqrt */ ._b)((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n  centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n  centroidRingPoint(lambda00, phi00);\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n  lambda00 = lambda, phi00 = phi;\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__/* .radians */ .uR, phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__/* .radians */ .uR;\n  centroidStream.point = centroidRingPoint;\n  var cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .cos */ .mC)(phi);\n  x0 = cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .cos */ .mC)(lambda);\n  y0 = cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(lambda);\n  z0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(phi);\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__/* .radians */ .uR, phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__/* .radians */ .uR;\n  var cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .cos */ .mC)(phi),\n      x = cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .cos */ .mC)(lambda),\n      y = cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(lambda),\n      z = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(phi),\n      cx = y0 * z - z0 * y,\n      cy = z0 * x - x0 * z,\n      cz = x0 * y - y0 * x,\n      m = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sqrt */ ._b)(cx * cx + cy * cy + cz * cz),\n      w = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .asin */ .ZR)(m), // line weight = angle\n      v = m && -w / m; // area weight multiplier\n  X2 += v * cx;\n  Y2 += v * cy;\n  Z2 += v * cz;\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(object) {\n  W0 = W1 =\n  X0 = Y0 = Z0 =\n  X1 = Y1 = Z1 =\n  X2 = Y2 = Z2 = 0;\n  (0,_stream_js__WEBPACK_IMPORTED_MODULE_2__/* [\"default\"] */ .Z)(object, centroidStream);\n\n  var x = X2,\n      y = Y2,\n      z = Z2,\n      m = x * x + y * y + z * z;\n\n  // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n  if (m < _math_js__WEBPACK_IMPORTED_MODULE_1__/* .epsilon2 */ .aW) {\n    x = X1, y = Y1, z = Z1;\n    // If the feature has zero length, fall back to arithmetic mean of point vectors.\n    if (W1 < _math_js__WEBPACK_IMPORTED_MODULE_1__/* .epsilon */ .Ho) x = X0, y = Y0, z = Z0;\n    m = x * x + y * y + z * z;\n    // If the feature still has an undefined ccentroid, then return.\n    if (m < _math_js__WEBPACK_IMPORTED_MODULE_1__/* .epsilon2 */ .aW) return [NaN, NaN];\n  }\n\n  return [(0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .atan2 */ .fv)(y, x) * _math_js__WEBPACK_IMPORTED_MODULE_1__/* .degrees */ .RW, (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .asin */ .ZR)(z / (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sqrt */ ._b)(m)) * _math_js__WEBPACK_IMPORTED_MODULE_1__/* .degrees */ .RW];\n}\n\n\n/***/ }),\n\n/***/ 7613:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5547852__) {\n\n\"use strict\";\n\n// EXPORTS\n__nested_webpack_require_5547852__.d(__webpack_exports__, {\n  \"m\": function() { return /* binding */ circleStream; },\n  \"Z\": function() { return /* binding */ circle; }\n});\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/cartesian.js\nvar cartesian = __nested_webpack_require_5547852__(7620);\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/constant.js\n/* harmony default export */ function constant(x) {\n  return function() {\n    return x;\n  };\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/math.js\nvar math = __nested_webpack_require_5547852__(39695);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/rotation.js\nvar rotation = __nested_webpack_require_5547852__(49386);\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/circle.js\n\n\n\n\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nfunction circleStream(stream, radius, delta, direction, t0, t1) {\n  if (!delta) return;\n  var cosRadius = (0,math/* cos */.mC)(radius),\n      sinRadius = (0,math/* sin */.O$)(radius),\n      step = direction * delta;\n  if (t0 == null) {\n    t0 = radius + direction * math/* tau */.BZ;\n    t1 = radius - step / 2;\n  } else {\n    t0 = circleRadius(cosRadius, t0);\n    t1 = circleRadius(cosRadius, t1);\n    if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * math/* tau */.BZ;\n  }\n  for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n    point = (0,cartesian/* spherical */.Y1)([cosRadius, -sinRadius * (0,math/* cos */.mC)(t), -sinRadius * (0,math/* sin */.O$)(t)]);\n    stream.point(point[0], point[1]);\n  }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n  point = (0,cartesian/* cartesian */.Og)(point), point[0] -= cosRadius;\n  (0,cartesian/* cartesianNormalizeInPlace */.iJ)(point);\n  var radius = (0,math/* acos */.Kh)(-point[1]);\n  return ((-point[2] < 0 ? -radius : radius) + math/* tau */.BZ - math/* epsilon */.Ho) % math/* tau */.BZ;\n}\n\n/* harmony default export */ function circle() {\n  var center = constant([0, 0]),\n      radius = constant(90),\n      precision = constant(6),\n      ring,\n      rotate,\n      stream = {point: point};\n\n  function point(x, y) {\n    ring.push(x = rotate(x, y));\n    x[0] *= math/* degrees */.RW, x[1] *= math/* degrees */.RW;\n  }\n\n  function circle() {\n    var c = center.apply(this, arguments),\n        r = radius.apply(this, arguments) * math/* radians */.uR,\n        p = precision.apply(this, arguments) * math/* radians */.uR;\n    ring = [];\n    rotate = (0,rotation/* rotateRadians */.I)(-c[0] * math/* radians */.uR, -c[1] * math/* radians */.uR, 0).invert;\n    circleStream(stream, r, p, 1);\n    c = {type: \"Polygon\", coordinates: [ring]};\n    ring = rotate = null;\n    return c;\n  }\n\n  circle.center = function(_) {\n    return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n  };\n\n  circle.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n  };\n\n  circle.precision = function(_) {\n    return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n  };\n\n  return circle;\n}\n\n\n/***/ }),\n\n/***/ 87070:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5551143__) {\n\n\"use strict\";\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5551143__(97023);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5551143__(39695);\n\n\n\n/* harmony default export */ __webpack_exports__[\"Z\"] = ((0,_index_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z)(\n  function() { return true; },\n  clipAntimeridianLine,\n  clipAntimeridianInterpolate,\n  [-_math_js__WEBPACK_IMPORTED_MODULE_1__.pi, -_math_js__WEBPACK_IMPORTED_MODULE_1__/* .halfPi */ .ou]\n));\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n  var lambda0 = NaN,\n      phi0 = NaN,\n      sign0 = NaN,\n      clean; // no intersections\n\n  return {\n    lineStart: function() {\n      stream.lineStart();\n      clean = 1;\n    },\n    point: function(lambda1, phi1) {\n      var sign1 = lambda1 > 0 ? _math_js__WEBPACK_IMPORTED_MODULE_1__.pi : -_math_js__WEBPACK_IMPORTED_MODULE_1__.pi,\n          delta = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .abs */ .Wn)(lambda1 - lambda0);\n      if ((0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .abs */ .Wn)(delta - _math_js__WEBPACK_IMPORTED_MODULE_1__.pi) < _math_js__WEBPACK_IMPORTED_MODULE_1__/* .epsilon */ .Ho) { // line crosses a pole\n        stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? _math_js__WEBPACK_IMPORTED_MODULE_1__/* .halfPi */ .ou : -_math_js__WEBPACK_IMPORTED_MODULE_1__/* .halfPi */ .ou);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        stream.point(lambda1, phi0);\n        clean = 0;\n      } else if (sign0 !== sign1 && delta >= _math_js__WEBPACK_IMPORTED_MODULE_1__.pi) { // line crosses antimeridian\n        if ((0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .abs */ .Wn)(lambda0 - sign0) < _math_js__WEBPACK_IMPORTED_MODULE_1__/* .epsilon */ .Ho) lambda0 -= sign0 * _math_js__WEBPACK_IMPORTED_MODULE_1__/* .epsilon */ .Ho; // handle degeneracies\n        if ((0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .abs */ .Wn)(lambda1 - sign1) < _math_js__WEBPACK_IMPORTED_MODULE_1__/* .epsilon */ .Ho) lambda1 -= sign1 * _math_js__WEBPACK_IMPORTED_MODULE_1__/* .epsilon */ .Ho;\n        phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        clean = 0;\n      }\n      stream.point(lambda0 = lambda1, phi0 = phi1);\n      sign0 = sign1;\n    },\n    lineEnd: function() {\n      stream.lineEnd();\n      lambda0 = phi0 = NaN;\n    },\n    clean: function() {\n      return 2 - clean; // if intersections, rejoin first and last segments\n    }\n  };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n  var cosPhi0,\n      cosPhi1,\n      sinLambda0Lambda1 = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(lambda0 - lambda1);\n  return (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .abs */ .Wn)(sinLambda0Lambda1) > _math_js__WEBPACK_IMPORTED_MODULE_1__/* .epsilon */ .Ho\n      ? (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .atan */ .z4)(((0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(phi0) * (cosPhi1 = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .cos */ .mC)(phi1)) * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(lambda1)\n          - (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(phi1) * (cosPhi0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .cos */ .mC)(phi0)) * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(lambda0))\n          / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n      : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n  var phi;\n  if (from == null) {\n    phi = direction * _math_js__WEBPACK_IMPORTED_MODULE_1__/* .halfPi */ .ou;\n    stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__.pi, phi);\n    stream.point(0, phi);\n    stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__.pi, phi);\n    stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__.pi, 0);\n    stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__.pi, -phi);\n    stream.point(0, -phi);\n    stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__.pi, -phi);\n    stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__.pi, 0);\n    stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__.pi, phi);\n  } else if ((0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .abs */ .Wn)(from[0] - to[0]) > _math_js__WEBPACK_IMPORTED_MODULE_1__/* .epsilon */ .Ho) {\n    var lambda = from[0] < to[0] ? _math_js__WEBPACK_IMPORTED_MODULE_1__.pi : -_math_js__WEBPACK_IMPORTED_MODULE_1__.pi;\n    phi = direction * lambda / 2;\n    stream.point(-lambda, phi);\n    stream.point(0, phi);\n    stream.point(lambda, phi);\n  } else {\n    stream.point(to[0], to[1]);\n  }\n}\n\n\n/***/ }),\n\n/***/ 85272:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5556150__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5556150__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5556150__(73182);\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n  var lines = [],\n      line;\n  return {\n    point: function(x, y, m) {\n      line.push([x, y, m]);\n    },\n    lineStart: function() {\n      lines.push(line = []);\n    },\n    lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z,\n    rejoin: function() {\n      if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n    },\n    result: function() {\n      var result = lines;\n      lines = [];\n      line = null;\n      return result;\n    }\n  };\n}\n\n\n/***/ }),\n\n/***/ 1457:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5557109__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5557109__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_3__ = __nested_webpack_require_5557109__(7620);\n/* harmony import */ var _circle_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5557109__(7613);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5557109__(39695);\n/* harmony import */ var _pointEqual_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_5557109__(67108);\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_4__ = __nested_webpack_require_5557109__(97023);\n\n\n\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(radius) {\n  var cr = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(radius),\n      delta = 6 * _math_js__WEBPACK_IMPORTED_MODULE_0__/* .radians */ .uR,\n      smallRadius = cr > 0,\n      notHemisphere = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .abs */ .Wn)(cr) > _math_js__WEBPACK_IMPORTED_MODULE_0__/* .epsilon */ .Ho; // TODO optimise for this common case\n\n  function interpolate(from, to, direction, stream) {\n    (0,_circle_js__WEBPACK_IMPORTED_MODULE_1__/* .circleStream */ .m)(stream, radius, delta, direction, from, to);\n  }\n\n  function visible(lambda, phi) {\n    return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(lambda) * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(phi) > cr;\n  }\n\n  // Takes a line and cuts into visible segments. Return values used for polygon\n  // clipping: 0 - there were intersections or the line was empty; 1 - no\n  // intersections 2 - there were intersections, and the first and last segments\n  // should be rejoined.\n  function clipLine(stream) {\n    var point0, // previous point\n        c0, // code for previous point\n        v0, // visibility of previous point\n        v00, // visibility of first point\n        clean; // no intersections\n    return {\n      lineStart: function() {\n        v00 = v0 = false;\n        clean = 1;\n      },\n      point: function(lambda, phi) {\n        var point1 = [lambda, phi],\n            point2,\n            v = visible(lambda, phi),\n            c = smallRadius\n              ? v ? 0 : code(lambda, phi)\n              : v ? code(lambda + (lambda < 0 ? _math_js__WEBPACK_IMPORTED_MODULE_0__.pi : -_math_js__WEBPACK_IMPORTED_MODULE_0__.pi), phi) : 0;\n        if (!point0 && (v00 = v0 = v)) stream.lineStart();\n        if (v !== v0) {\n          point2 = intersect(point0, point1);\n          if (!point2 || (0,_pointEqual_js__WEBPACK_IMPORTED_MODULE_2__/* [\"default\"] */ .Z)(point0, point2) || (0,_pointEqual_js__WEBPACK_IMPORTED_MODULE_2__/* [\"default\"] */ .Z)(point1, point2))\n            point1[2] = 1;\n        }\n        if (v !== v0) {\n          clean = 0;\n          if (v) {\n            // outside going in\n            stream.lineStart();\n            point2 = intersect(point1, point0);\n            stream.point(point2[0], point2[1]);\n          } else {\n            // inside going out\n            point2 = intersect(point0, point1);\n            stream.point(point2[0], point2[1], 2);\n            stream.lineEnd();\n          }\n          point0 = point2;\n        } else if (notHemisphere && point0 && smallRadius ^ v) {\n          var t;\n          // If the codes for two points are different, or are both zero,\n          // and there this segment intersects with the small circle.\n          if (!(c & c0) && (t = intersect(point1, point0, true))) {\n            clean = 0;\n            if (smallRadius) {\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n            } else {\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1], 3);\n            }\n          }\n        }\n        if (v && (!point0 || !(0,_pointEqual_js__WEBPACK_IMPORTED_MODULE_2__/* [\"default\"] */ .Z)(point0, point1))) {\n          stream.point(point1[0], point1[1]);\n        }\n        point0 = point1, v0 = v, c0 = c;\n      },\n      lineEnd: function() {\n        if (v0) stream.lineEnd();\n        point0 = null;\n      },\n      // Rejoin first and last segments if there were intersections and the first\n      // and last points were visible.\n      clean: function() {\n        return clean | ((v00 && v0) << 1);\n      }\n    };\n  }\n\n  // Intersects the great circle between a and b with the clip circle.\n  function intersect(a, b, two) {\n    var pa = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesian */ .Og)(a),\n        pb = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesian */ .Og)(b);\n\n    // We have two planes, n1.p = d1 and n2.p = d2.\n    // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n    var n1 = [1, 0, 0], // normal\n        n2 = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesianCross */ .T5)(pa, pb),\n        n2n2 = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesianDot */ .j9)(n2, n2),\n        n1n2 = n2[0], // cartesianDot(n1, n2),\n        determinant = n2n2 - n1n2 * n1n2;\n\n    // Two polar points.\n    if (!determinant) return !two && a;\n\n    var c1 =  cr * n2n2 / determinant,\n        c2 = -cr * n1n2 / determinant,\n        n1xn2 = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesianCross */ .T5)(n1, n2),\n        A = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesianScale */ .T)(n1, c1),\n        B = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesianScale */ .T)(n2, c2);\n    (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesianAddInPlace */ .s0)(A, B);\n\n    // Solve |p(t)|^2 = 1.\n    var u = n1xn2,\n        w = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesianDot */ .j9)(A, u),\n        uu = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesianDot */ .j9)(u, u),\n        t2 = w * w - uu * ((0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesianDot */ .j9)(A, A) - 1);\n\n    if (t2 < 0) return;\n\n    var t = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sqrt */ ._b)(t2),\n        q = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesianScale */ .T)(u, (-w - t) / uu);\n    (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesianAddInPlace */ .s0)(q, A);\n    q = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .spherical */ .Y1)(q);\n\n    if (!two) return q;\n\n    // Two intersection points.\n    var lambda0 = a[0],\n        lambda1 = b[0],\n        phi0 = a[1],\n        phi1 = b[1],\n        z;\n\n    if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n    var delta = lambda1 - lambda0,\n        polar = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .abs */ .Wn)(delta - _math_js__WEBPACK_IMPORTED_MODULE_0__.pi) < _math_js__WEBPACK_IMPORTED_MODULE_0__/* .epsilon */ .Ho,\n        meridian = polar || delta < _math_js__WEBPACK_IMPORTED_MODULE_0__/* .epsilon */ .Ho;\n\n    if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n    // Check that the first point is between a and b.\n    if (meridian\n        ? polar\n          ? phi0 + phi1 > 0 ^ q[1] < ((0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .abs */ .Wn)(q[0] - lambda0) < _math_js__WEBPACK_IMPORTED_MODULE_0__/* .epsilon */ .Ho ? phi0 : phi1)\n          : phi0 <= q[1] && q[1] <= phi1\n        : delta > _math_js__WEBPACK_IMPORTED_MODULE_0__.pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n      var q1 = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesianScale */ .T)(u, (-w + t) / uu);\n      (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .cartesianAddInPlace */ .s0)(q1, A);\n      return [q, (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__/* .spherical */ .Y1)(q1)];\n    }\n  }\n\n  // Generates a 4-bit vector representing the location of a point relative to\n  // the small circle's bounding box.\n  function code(lambda, phi) {\n    var r = smallRadius ? radius : _math_js__WEBPACK_IMPORTED_MODULE_0__.pi - radius,\n        code = 0;\n    if (lambda < -r) code |= 1; // left\n    else if (lambda > r) code |= 2; // right\n    if (phi < -r) code |= 4; // below\n    else if (phi > r) code |= 8; // above\n    return code;\n  }\n\n  return (0,_index_js__WEBPACK_IMPORTED_MODULE_4__/* [\"default\"] */ .Z)(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-_math_js__WEBPACK_IMPORTED_MODULE_0__.pi, radius - _math_js__WEBPACK_IMPORTED_MODULE_0__.pi]);\n}\n\n\n/***/ }),\n\n/***/ 97023:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5565602__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5565602__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony import */ var _buffer_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5565602__(85272);\n/* harmony import */ var _rejoin_js__WEBPACK_IMPORTED_MODULE_3__ = __nested_webpack_require_5565602__(46225);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_4__ = __nested_webpack_require_5565602__(39695);\n/* harmony import */ var _polygonContains_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_5565602__(23071);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5565602__(33064);\n\n\n\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(pointVisible, clipLine, interpolate, start) {\n  return function(sink) {\n    var line = clipLine(sink),\n        ringBuffer = (0,_buffer_js__WEBPACK_IMPORTED_MODULE_1__/* [\"default\"] */ .Z)(),\n        ringSink = clipLine(ringBuffer),\n        polygonStarted = false,\n        polygon,\n        segments,\n        ring;\n\n    var clip = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        clip.point = pointRing;\n        clip.lineStart = ringStart;\n        clip.lineEnd = ringEnd;\n        segments = [];\n        polygon = [];\n      },\n      polygonEnd: function() {\n        clip.point = point;\n        clip.lineStart = lineStart;\n        clip.lineEnd = lineEnd;\n        segments = (0,d3_array__WEBPACK_IMPORTED_MODULE_0__/* .merge */ .TS)(segments);\n        var startInside = (0,_polygonContains_js__WEBPACK_IMPORTED_MODULE_2__/* [\"default\"] */ .Z)(polygon, start);\n        if (segments.length) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          (0,_rejoin_js__WEBPACK_IMPORTED_MODULE_3__/* [\"default\"] */ .Z)(segments, compareIntersection, startInside, interpolate, sink);\n        } else if (startInside) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          interpolate(null, null, 1, sink);\n          sink.lineEnd();\n        }\n        if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n        segments = polygon = null;\n      },\n      sphere: function() {\n        sink.polygonStart();\n        sink.lineStart();\n        interpolate(null, null, 1, sink);\n        sink.lineEnd();\n        sink.polygonEnd();\n      }\n    };\n\n    function point(lambda, phi) {\n      if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n    }\n\n    function pointLine(lambda, phi) {\n      line.point(lambda, phi);\n    }\n\n    function lineStart() {\n      clip.point = pointLine;\n      line.lineStart();\n    }\n\n    function lineEnd() {\n      clip.point = point;\n      line.lineEnd();\n    }\n\n    function pointRing(lambda, phi) {\n      ring.push([lambda, phi]);\n      ringSink.point(lambda, phi);\n    }\n\n    function ringStart() {\n      ringSink.lineStart();\n      ring = [];\n    }\n\n    function ringEnd() {\n      pointRing(ring[0][0], ring[0][1]);\n      ringSink.lineEnd();\n\n      var clean = ringSink.clean(),\n          ringSegments = ringBuffer.result(),\n          i, n = ringSegments.length, m,\n          segment,\n          point;\n\n      ring.pop();\n      polygon.push(ring);\n      ring = null;\n\n      if (!n) return;\n\n      // No intersections.\n      if (clean & 1) {\n        segment = ringSegments[0];\n        if ((m = segment.length - 1) > 0) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n          sink.lineEnd();\n        }\n        return;\n      }\n\n      // Rejoin connected segments.\n      // TODO reuse ringBuffer.rejoin()?\n      if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n      segments.push(ringSegments.filter(validSegment));\n    }\n\n    return clip;\n  };\n}\n\nfunction validSegment(segment) {\n  return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n  return ((a = a.x)[0] < 0 ? a[1] - _math_js__WEBPACK_IMPORTED_MODULE_4__/* .halfPi */ .ou - _math_js__WEBPACK_IMPORTED_MODULE_4__/* .epsilon */ .Ho : _math_js__WEBPACK_IMPORTED_MODULE_4__/* .halfPi */ .ou - a[1])\n       - ((b = b.x)[0] < 0 ? b[1] - _math_js__WEBPACK_IMPORTED_MODULE_4__/* .halfPi */ .ou - _math_js__WEBPACK_IMPORTED_MODULE_4__/* .epsilon */ .Ho : _math_js__WEBPACK_IMPORTED_MODULE_4__/* .halfPi */ .ou - b[1]);\n}\n\n\n/***/ }),\n\n/***/ 87605:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5570346__) {\n\n\"use strict\";\n\n// EXPORTS\n__nested_webpack_require_5570346__.d(__webpack_exports__, {\n  \"Z\": function() { return /* binding */ clipRectangle; }\n});\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/math.js\nvar math = __nested_webpack_require_5570346__(39695);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/clip/buffer.js\nvar buffer = __nested_webpack_require_5570346__(85272);\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/clip/line.js\n/* harmony default export */ function line(a, b, x0, y0, x1, y1) {\n  var ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n  if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n  return true;\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/clip/rejoin.js\nvar rejoin = __nested_webpack_require_5570346__(46225);\n// EXTERNAL MODULE: ./node_modules/d3-array/src/index.js + 14 modules\nvar src = __nested_webpack_require_5570346__(33064);\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/clip/rectangle.js\n\n\n\n\n\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nfunction clipRectangle(x0, y0, x1, y1) {\n\n  function visible(x, y) {\n    return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n  }\n\n  function interpolate(from, to, direction, stream) {\n    var a = 0, a1 = 0;\n    if (from == null\n        || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n        || comparePoint(from, to) < 0 ^ direction > 0) {\n      do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n      while ((a = (a + direction + 4) % 4) !== a1);\n    } else {\n      stream.point(to[0], to[1]);\n    }\n  }\n\n  function corner(p, direction) {\n    return (0,math/* abs */.Wn)(p[0] - x0) < math/* epsilon */.Ho ? direction > 0 ? 0 : 3\n        : (0,math/* abs */.Wn)(p[0] - x1) < math/* epsilon */.Ho ? direction > 0 ? 2 : 1\n        : (0,math/* abs */.Wn)(p[1] - y0) < math/* epsilon */.Ho ? direction > 0 ? 1 : 0\n        : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n  }\n\n  function compareIntersection(a, b) {\n    return comparePoint(a.x, b.x);\n  }\n\n  function comparePoint(a, b) {\n    var ca = corner(a, 1),\n        cb = corner(b, 1);\n    return ca !== cb ? ca - cb\n        : ca === 0 ? b[1] - a[1]\n        : ca === 1 ? a[0] - b[0]\n        : ca === 2 ? a[1] - b[1]\n        : b[0] - a[0];\n  }\n\n  return function(stream) {\n    var activeStream = stream,\n        bufferStream = (0,buffer/* default */.Z)(),\n        segments,\n        polygon,\n        ring,\n        x__, y__, v__, // first point\n        x_, y_, v_, // previous point\n        first,\n        clean;\n\n    var clipStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: polygonStart,\n      polygonEnd: polygonEnd\n    };\n\n    function point(x, y) {\n      if (visible(x, y)) activeStream.point(x, y);\n    }\n\n    function polygonInside() {\n      var winding = 0;\n\n      for (var i = 0, n = polygon.length; i < n; ++i) {\n        for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n          a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n          if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n          else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n        }\n      }\n\n      return winding;\n    }\n\n    // Buffer geometry within a polygon and then clip it en masse.\n    function polygonStart() {\n      activeStream = bufferStream, segments = [], polygon = [], clean = true;\n    }\n\n    function polygonEnd() {\n      var startInside = polygonInside(),\n          cleanInside = clean && startInside,\n          visible = (segments = (0,src/* merge */.TS)(segments)).length;\n      if (cleanInside || visible) {\n        stream.polygonStart();\n        if (cleanInside) {\n          stream.lineStart();\n          interpolate(null, null, 1, stream);\n          stream.lineEnd();\n        }\n        if (visible) {\n          (0,rejoin/* default */.Z)(segments, compareIntersection, startInside, interpolate, stream);\n        }\n        stream.polygonEnd();\n      }\n      activeStream = stream, segments = polygon = ring = null;\n    }\n\n    function lineStart() {\n      clipStream.point = linePoint;\n      if (polygon) polygon.push(ring = []);\n      first = true;\n      v_ = false;\n      x_ = y_ = NaN;\n    }\n\n    // TODO rather than special-case polygons, simply handle them separately.\n    // Ideally, coincident intersection points should be jittered to avoid\n    // clipping issues.\n    function lineEnd() {\n      if (segments) {\n        linePoint(x__, y__);\n        if (v__ && v_) bufferStream.rejoin();\n        segments.push(bufferStream.result());\n      }\n      clipStream.point = point;\n      if (v_) activeStream.lineEnd();\n    }\n\n    function linePoint(x, y) {\n      var v = visible(x, y);\n      if (polygon) ring.push([x, y]);\n      if (first) {\n        x__ = x, y__ = y, v__ = v;\n        first = false;\n        if (v) {\n          activeStream.lineStart();\n          activeStream.point(x, y);\n        }\n      } else {\n        if (v && v_) activeStream.point(x, y);\n        else {\n          var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n              b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n          if (line(a, b, x0, y0, x1, y1)) {\n            if (!v_) {\n              activeStream.lineStart();\n              activeStream.point(a[0], a[1]);\n            }\n            activeStream.point(b[0], b[1]);\n            if (!v) activeStream.lineEnd();\n            clean = false;\n          } else if (v) {\n            activeStream.lineStart();\n            activeStream.point(x, y);\n            clean = false;\n          }\n        }\n      }\n      x_ = x, y_ = y, v_ = v;\n    }\n\n    return clipStream;\n  };\n}\n\n\n/***/ }),\n\n/***/ 46225:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5577240__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5577240__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony import */ var _pointEqual_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5577240__(67108);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5577240__(39695);\n\n\n\nfunction Intersection(point, points, other, entry) {\n  this.x = point;\n  this.z = points;\n  this.o = other; // another intersection\n  this.e = entry; // is an entry?\n  this.v = false; // visited\n  this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(segments, compareIntersection, startInside, interpolate, stream) {\n  var subject = [],\n      clip = [],\n      i,\n      n;\n\n  segments.forEach(function(segment) {\n    if ((n = segment.length - 1) <= 0) return;\n    var n, p0 = segment[0], p1 = segment[n], x;\n\n    if ((0,_pointEqual_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z)(p0, p1)) {\n      if (!p0[2] && !p1[2]) {\n        stream.lineStart();\n        for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n        stream.lineEnd();\n        return;\n      }\n      // handle degenerate cases by moving the point\n      p1[0] += 2 * _math_js__WEBPACK_IMPORTED_MODULE_1__/* .epsilon */ .Ho;\n    }\n\n    subject.push(x = new Intersection(p0, segment, null, true));\n    clip.push(x.o = new Intersection(p0, null, x, false));\n    subject.push(x = new Intersection(p1, segment, null, false));\n    clip.push(x.o = new Intersection(p1, null, x, true));\n  });\n\n  if (!subject.length) return;\n\n  clip.sort(compareIntersection);\n  link(subject);\n  link(clip);\n\n  for (i = 0, n = clip.length; i < n; ++i) {\n    clip[i].e = startInside = !startInside;\n  }\n\n  var start = subject[0],\n      points,\n      point;\n\n  while (1) {\n    // Find first unvisited intersection.\n    var current = start,\n        isSubject = true;\n    while (current.v) if ((current = current.n) === start) return;\n    points = current.z;\n    stream.lineStart();\n    do {\n      current.v = current.o.v = true;\n      if (current.e) {\n        if (isSubject) {\n          for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.n.x, 1, stream);\n        }\n        current = current.n;\n      } else {\n        if (isSubject) {\n          points = current.p.z;\n          for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.p.x, -1, stream);\n        }\n        current = current.p;\n      }\n      current = current.o;\n      points = current.z;\n      isSubject = !isSubject;\n    } while (!current.v);\n    stream.lineEnd();\n  }\n}\n\nfunction link(array) {\n  if (!(n = array.length)) return;\n  var n,\n      i = 0,\n      a = array[0],\n      b;\n  while (++i < n) {\n    a.n = b = array[i];\n    b.p = a;\n    a = b;\n  }\n  a.n = b = array[0];\n  b.p = a;\n}\n\n\n/***/ }),\n\n/***/ 96059:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5580592__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5580592__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n\n  function compose(x, y) {\n    return x = a(x, y), b(x[0], x[1]);\n  }\n\n  if (a.invert && b.invert) compose.invert = function(x, y) {\n    return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n  };\n\n  return compose;\n}\n\n\n/***/ }),\n\n/***/ 8593:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5581206__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5581206__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x) {\n  return x;\n}\n\n\n/***/ }),\n\n/***/ 27362:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5581614__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__nested_webpack_require_5581614__.r(__webpack_exports__);\n\n// EXPORTS\n__nested_webpack_require_5581614__.d(__webpack_exports__, {\n  \"geoAlbers\": function() { return /* reexport */ albers; },\n  \"geoAlbersUsa\": function() { return /* reexport */ albersUsa; },\n  \"geoArea\": function() { return /* reexport */ src_area/* default */.ZP; },\n  \"geoAzimuthalEqualArea\": function() { return /* reexport */ azimuthalEqualArea/* default */.Z; },\n  \"geoAzimuthalEqualAreaRaw\": function() { return /* reexport */ azimuthalEqualArea/* azimuthalEqualAreaRaw */.l; },\n  \"geoAzimuthalEquidistant\": function() { return /* reexport */ azimuthalEquidistant/* default */.Z; },\n  \"geoAzimuthalEquidistantRaw\": function() { return /* reexport */ azimuthalEquidistant/* azimuthalEquidistantRaw */.N; },\n  \"geoBounds\": function() { return /* reexport */ bounds/* default */.Z; },\n  \"geoCentroid\": function() { return /* reexport */ centroid/* default */.Z; },\n  \"geoCircle\": function() { return /* reexport */ circle/* default */.Z; },\n  \"geoClipAntimeridian\": function() { return /* reexport */ antimeridian/* default */.Z; },\n  \"geoClipCircle\": function() { return /* reexport */ clip_circle/* default */.Z; },\n  \"geoClipExtent\": function() { return /* reexport */ extent; },\n  \"geoClipRectangle\": function() { return /* reexport */ rectangle/* default */.Z; },\n  \"geoConicConformal\": function() { return /* reexport */ conicConformal; },\n  \"geoConicConformalRaw\": function() { return /* reexport */ conicConformalRaw; },\n  \"geoConicEqualArea\": function() { return /* reexport */ conicEqualArea; },\n  \"geoConicEqualAreaRaw\": function() { return /* reexport */ conicEqualAreaRaw; },\n  \"geoConicEquidistant\": function() { return /* reexport */ conicEquidistant; },\n  \"geoConicEquidistantRaw\": function() { return /* reexport */ conicEquidistantRaw; },\n  \"geoContains\": function() { return /* reexport */ contains; },\n  \"geoDistance\": function() { return /* reexport */ distance; },\n  \"geoEqualEarth\": function() { return /* reexport */ equalEarth; },\n  \"geoEqualEarthRaw\": function() { return /* reexport */ equalEarthRaw; },\n  \"geoEquirectangular\": function() { return /* reexport */ equirectangular/* default */.Z; },\n  \"geoEquirectangularRaw\": function() { return /* reexport */ equirectangular/* equirectangularRaw */.k; },\n  \"geoGnomonic\": function() { return /* reexport */ gnomonic/* default */.Z; },\n  \"geoGnomonicRaw\": function() { return /* reexport */ gnomonic/* gnomonicRaw */.M; },\n  \"geoGraticule\": function() { return /* reexport */ graticule; },\n  \"geoGraticule10\": function() { return /* reexport */ graticule10; },\n  \"geoIdentity\": function() { return /* reexport */ projection_identity; },\n  \"geoInterpolate\": function() { return /* reexport */ interpolate/* default */.Z; },\n  \"geoLength\": function() { return /* reexport */ src_length; },\n  \"geoMercator\": function() { return /* reexport */ mercator; },\n  \"geoMercatorRaw\": function() { return /* reexport */ mercatorRaw; },\n  \"geoNaturalEarth1\": function() { return /* reexport */ naturalEarth1/* default */.Z; },\n  \"geoNaturalEarth1Raw\": function() { return /* reexport */ naturalEarth1/* naturalEarth1Raw */.K; },\n  \"geoOrthographic\": function() { return /* reexport */ orthographic/* default */.Z; },\n  \"geoOrthographicRaw\": function() { return /* reexport */ orthographic/* orthographicRaw */.I; },\n  \"geoPath\": function() { return /* reexport */ path; },\n  \"geoProjection\": function() { return /* reexport */ projection/* default */.Z; },\n  \"geoProjectionMutator\": function() { return /* reexport */ projection/* projectionMutator */.r; },\n  \"geoRotation\": function() { return /* reexport */ rotation/* default */.Z; },\n  \"geoStereographic\": function() { return /* reexport */ stereographic; },\n  \"geoStereographicRaw\": function() { return /* reexport */ stereographicRaw; },\n  \"geoStream\": function() { return /* reexport */ stream/* default */.Z; },\n  \"geoTransform\": function() { return /* reexport */ src_transform/* default */.Z; },\n  \"geoTransverseMercator\": function() { return /* reexport */ transverseMercator; },\n  \"geoTransverseMercatorRaw\": function() { return /* reexport */ transverseMercatorRaw; }\n});\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/area.js\nvar src_area = __nested_webpack_require_5581614__(97860);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/bounds.js\nvar bounds = __nested_webpack_require_5581614__(77338);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/centroid.js\nvar centroid = __nested_webpack_require_5581614__(66624);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/circle.js + 1 modules\nvar circle = __nested_webpack_require_5581614__(7613);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/clip/antimeridian.js\nvar antimeridian = __nested_webpack_require_5581614__(87070);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/clip/circle.js\nvar clip_circle = __nested_webpack_require_5581614__(1457);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/clip/rectangle.js + 1 modules\nvar rectangle = __nested_webpack_require_5581614__(87605);\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/clip/extent.js\n\n\n/* harmony default export */ function extent() {\n  var x0 = 0,\n      y0 = 0,\n      x1 = 960,\n      y1 = 500,\n      cache,\n      cacheStream,\n      clip;\n\n  return clip = {\n    stream: function(stream) {\n      return cache && cacheStream === stream ? cache : cache = (0,rectangle/* default */.Z)(x0, y0, x1, y1)(cacheStream = stream);\n    },\n    extent: function(_) {\n      return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n    }\n  };\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/polygonContains.js\nvar polygonContains = __nested_webpack_require_5581614__(23071);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/adder.js\nvar adder = __nested_webpack_require_5581614__(33940);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/math.js\nvar math = __nested_webpack_require_5581614__(39695);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/noop.js\nvar noop = __nested_webpack_require_5581614__(73182);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/stream.js\nvar stream = __nested_webpack_require_5581614__(72736);\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/length.js\n\n\n\n\n\nvar lengthSum = (0,adder/* default */.Z)(),\n    lambda0,\n    sinPhi0,\n    cosPhi0;\n\nvar lengthStream = {\n  sphere: noop/* default */.Z,\n  point: noop/* default */.Z,\n  lineStart: lengthLineStart,\n  lineEnd: noop/* default */.Z,\n  polygonStart: noop/* default */.Z,\n  polygonEnd: noop/* default */.Z\n};\n\nfunction lengthLineStart() {\n  lengthStream.point = lengthPointFirst;\n  lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n  lengthStream.point = lengthStream.lineEnd = noop/* default */.Z;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n  lambda *= math/* radians */.uR, phi *= math/* radians */.uR;\n  lambda0 = lambda, sinPhi0 = (0,math/* sin */.O$)(phi), cosPhi0 = (0,math/* cos */.mC)(phi);\n  lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n  lambda *= math/* radians */.uR, phi *= math/* radians */.uR;\n  var sinPhi = (0,math/* sin */.O$)(phi),\n      cosPhi = (0,math/* cos */.mC)(phi),\n      delta = (0,math/* abs */.Wn)(lambda - lambda0),\n      cosDelta = (0,math/* cos */.mC)(delta),\n      sinDelta = (0,math/* sin */.O$)(delta),\n      x = cosPhi * sinDelta,\n      y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n      z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n  lengthSum.add((0,math/* atan2 */.fv)((0,math/* sqrt */._b)(x * x + y * y), z));\n  lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\n/* harmony default export */ function src_length(object) {\n  lengthSum.reset();\n  (0,stream/* default */.Z)(object, lengthStream);\n  return +lengthSum;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/distance.js\n\n\nvar coordinates = [null, null],\n    object = {type: \"LineString\", coordinates: coordinates};\n\n/* harmony default export */ function distance(a, b) {\n  coordinates[0] = a;\n  coordinates[1] = b;\n  return src_length(object);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/contains.js\n\n\n\n\nvar containsObjectType = {\n  Feature: function(object, point) {\n    return containsGeometry(object.geometry, point);\n  },\n  FeatureCollection: function(object, point) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n    return false;\n  }\n};\n\nvar containsGeometryType = {\n  Sphere: function() {\n    return true;\n  },\n  Point: function(object, point) {\n    return containsPoint(object.coordinates, point);\n  },\n  MultiPoint: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n    return false;\n  },\n  LineString: function(object, point) {\n    return containsLine(object.coordinates, point);\n  },\n  MultiLineString: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsLine(coordinates[i], point)) return true;\n    return false;\n  },\n  Polygon: function(object, point) {\n    return containsPolygon(object.coordinates, point);\n  },\n  MultiPolygon: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n    return false;\n  },\n  GeometryCollection: function(object, point) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n    return false;\n  }\n};\n\nfunction containsGeometry(geometry, point) {\n  return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n      ? containsGeometryType[geometry.type](geometry, point)\n      : false;\n}\n\nfunction containsPoint(coordinates, point) {\n  return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n  var ao, bo, ab;\n  for (var i = 0, n = coordinates.length; i < n; i++) {\n    bo = distance(coordinates[i], point);\n    if (bo === 0) return true;\n    if (i > 0) {\n      ab = distance(coordinates[i], coordinates[i - 1]);\n      if (\n        ab > 0 &&\n        ao <= ab &&\n        bo <= ab &&\n        (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < math/* epsilon2 */.aW * ab\n      )\n        return true;\n    }\n    ao = bo;\n  }\n  return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n  return !!(0,polygonContains/* default */.Z)(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n  return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n  return [point[0] * math/* radians */.uR, point[1] * math/* radians */.uR];\n}\n\n/* harmony default export */ function contains(object, point) {\n  return (object && containsObjectType.hasOwnProperty(object.type)\n      ? containsObjectType[object.type]\n      : containsGeometry)(object, point);\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-array/src/index.js + 14 modules\nvar src = __nested_webpack_require_5581614__(33064);\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/graticule.js\n\n\n\nfunction graticuleX(y0, y1, dy) {\n  var y = (0,src/* range */.w6)(y0, y1 - math/* epsilon */.Ho, dy).concat(y1);\n  return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n  var x = (0,src/* range */.w6)(x0, x1 - math/* epsilon */.Ho, dx).concat(x1);\n  return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nfunction graticule() {\n  var x1, x0, X1, X0,\n      y1, y0, Y1, Y0,\n      dx = 10, dy = dx, DX = 90, DY = 360,\n      x, y, X, Y,\n      precision = 2.5;\n\n  function graticule() {\n    return {type: \"MultiLineString\", coordinates: lines()};\n  }\n\n  function lines() {\n    return (0,src/* range */.w6)((0,math/* ceil */.mD)(X0 / DX) * DX, X1, DX).map(X)\n        .concat((0,src/* range */.w6)((0,math/* ceil */.mD)(Y0 / DY) * DY, Y1, DY).map(Y))\n        .concat((0,src/* range */.w6)((0,math/* ceil */.mD)(x0 / dx) * dx, x1, dx).filter(function(x) { return (0,math/* abs */.Wn)(x % DX) > math/* epsilon */.Ho; }).map(x))\n        .concat((0,src/* range */.w6)((0,math/* ceil */.mD)(y0 / dy) * dy, y1, dy).filter(function(y) { return (0,math/* abs */.Wn)(y % DY) > math/* epsilon */.Ho; }).map(y));\n  }\n\n  graticule.lines = function() {\n    return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n  };\n\n  graticule.outline = function() {\n    return {\n      type: \"Polygon\",\n      coordinates: [\n        X(X0).concat(\n        Y(Y1).slice(1),\n        X(X1).reverse().slice(1),\n        Y(Y0).reverse().slice(1))\n      ]\n    };\n  };\n\n  graticule.extent = function(_) {\n    if (!arguments.length) return graticule.extentMinor();\n    return graticule.extentMajor(_).extentMinor(_);\n  };\n\n  graticule.extentMajor = function(_) {\n    if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n    X0 = +_[0][0], X1 = +_[1][0];\n    Y0 = +_[0][1], Y1 = +_[1][1];\n    if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n    if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.extentMinor = function(_) {\n    if (!arguments.length) return [[x0, y0], [x1, y1]];\n    x0 = +_[0][0], x1 = +_[1][0];\n    y0 = +_[0][1], y1 = +_[1][1];\n    if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n    if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.step = function(_) {\n    if (!arguments.length) return graticule.stepMinor();\n    return graticule.stepMajor(_).stepMinor(_);\n  };\n\n  graticule.stepMajor = function(_) {\n    if (!arguments.length) return [DX, DY];\n    DX = +_[0], DY = +_[1];\n    return graticule;\n  };\n\n  graticule.stepMinor = function(_) {\n    if (!arguments.length) return [dx, dy];\n    dx = +_[0], dy = +_[1];\n    return graticule;\n  };\n\n  graticule.precision = function(_) {\n    if (!arguments.length) return precision;\n    precision = +_;\n    x = graticuleX(y0, y1, 90);\n    y = graticuleY(x0, x1, precision);\n    X = graticuleX(Y0, Y1, 90);\n    Y = graticuleY(X0, X1, precision);\n    return graticule;\n  };\n\n  return graticule\n      .extentMajor([[-180, -90 + math/* epsilon */.Ho], [180, 90 - math/* epsilon */.Ho]])\n      .extentMinor([[-180, -80 - math/* epsilon */.Ho], [180, 80 + math/* epsilon */.Ho]]);\n}\n\nfunction graticule10() {\n  return graticule()();\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/interpolate.js\nvar interpolate = __nested_webpack_require_5581614__(83074);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/identity.js\nvar identity = __nested_webpack_require_5581614__(8593);\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/path/area.js\n\n\n\n\nvar areaSum = (0,adder/* default */.Z)(),\n    areaRingSum = (0,adder/* default */.Z)(),\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar areaStream = {\n  point: noop/* default */.Z,\n  lineStart: noop/* default */.Z,\n  lineEnd: noop/* default */.Z,\n  polygonStart: function() {\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop/* default */.Z;\n    areaSum.add((0,math/* abs */.Wn)(areaRingSum));\n    areaRingSum.reset();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum.reset();\n    return area;\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n  areaStream.point = areaPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n  areaRingSum.add(y0 * x - x0 * y);\n  x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n  areaPoint(x00, y00);\n}\n\n/* harmony default export */ var path_area = (areaStream);\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/path/bounds.js\nvar path_bounds = __nested_webpack_require_5581614__(3559);\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/path/centroid.js\n\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n    Y0 = 0,\n    Z0 = 0,\n    X1 = 0,\n    Y1 = 0,\n    Z1 = 0,\n    X2 = 0,\n    Y2 = 0,\n    Z2 = 0,\n    centroid_x00,\n    centroid_y00,\n    centroid_x0,\n    centroid_y0;\n\nvar centroidStream = {\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.point = centroidPoint;\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  },\n  result: function() {\n    var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n        : Z1 ? [X1 / Z1, Y1 / Z1]\n        : Z0 ? [X0 / Z0, Y0 / Z0]\n        : [NaN, NaN];\n    X0 = Y0 = Z0 =\n    X1 = Y1 = Z1 =\n    X2 = Y2 = Z2 = 0;\n    return centroid;\n  }\n};\n\nfunction centroidPoint(x, y) {\n  X0 += x;\n  Y0 += y;\n  ++Z0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n  centroidStream.point = centroidPointLine;\n  centroidPoint(centroid_x0 = x, centroid_y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n  var dx = x - centroid_x0, dy = y - centroid_y0, z = (0,math/* sqrt */._b)(dx * dx + dy * dy);\n  X1 += z * (centroid_x0 + x) / 2;\n  Y1 += z * (centroid_y0 + y) / 2;\n  Z1 += z;\n  centroidPoint(centroid_x0 = x, centroid_y0 = y);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n  centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n  centroidPointRing(centroid_x00, centroid_y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n  centroidStream.point = centroidPointRing;\n  centroidPoint(centroid_x00 = centroid_x0 = x, centroid_y00 = centroid_y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n  var dx = x - centroid_x0,\n      dy = y - centroid_y0,\n      z = (0,math/* sqrt */._b)(dx * dx + dy * dy);\n\n  X1 += z * (centroid_x0 + x) / 2;\n  Y1 += z * (centroid_y0 + y) / 2;\n  Z1 += z;\n\n  z = centroid_y0 * x - centroid_x0 * y;\n  X2 += z * (centroid_x0 + x);\n  Y2 += z * (centroid_y0 + y);\n  Z2 += z * 3;\n  centroidPoint(centroid_x0 = x, centroid_y0 = y);\n}\n\n/* harmony default export */ var path_centroid = (centroidStream);\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/path/context.js\n\n\n\nfunction PathContext(context) {\n  this._context = context;\n}\n\nPathContext.prototype = {\n  _radius: 4.5,\n  pointRadius: function(_) {\n    return this._radius = _, this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._context.closePath();\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._context.moveTo(x, y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._context.lineTo(x, y);\n        break;\n      }\n      default: {\n        this._context.moveTo(x + this._radius, y);\n        this._context.arc(x, y, this._radius, 0, math/* tau */.BZ);\n        break;\n      }\n    }\n  },\n  result: noop/* default */.Z\n};\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/path/measure.js\n\n\n\n\nvar measure_lengthSum = (0,adder/* default */.Z)(),\n    lengthRing,\n    measure_x00,\n    measure_y00,\n    measure_x0,\n    measure_y0;\n\nvar measure_lengthStream = {\n  point: noop/* default */.Z,\n  lineStart: function() {\n    measure_lengthStream.point = measure_lengthPointFirst;\n  },\n  lineEnd: function() {\n    if (lengthRing) measure_lengthPoint(measure_x00, measure_y00);\n    measure_lengthStream.point = noop/* default */.Z;\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +measure_lengthSum;\n    measure_lengthSum.reset();\n    return length;\n  }\n};\n\nfunction measure_lengthPointFirst(x, y) {\n  measure_lengthStream.point = measure_lengthPoint;\n  measure_x00 = measure_x0 = x, measure_y00 = measure_y0 = y;\n}\n\nfunction measure_lengthPoint(x, y) {\n  measure_x0 -= x, measure_y0 -= y;\n  measure_lengthSum.add((0,math/* sqrt */._b)(measure_x0 * measure_x0 + measure_y0 * measure_y0));\n  measure_x0 = x, measure_y0 = y;\n}\n\n/* harmony default export */ var measure = (measure_lengthStream);\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/path/string.js\nfunction PathString() {\n  this._string = [];\n}\n\nPathString.prototype = {\n  _radius: 4.5,\n  _circle: string_circle(4.5),\n  pointRadius: function(_) {\n    if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n    return this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._string.push(\"Z\");\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._string.push(\"M\", x, \",\", y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._string.push(\"L\", x, \",\", y);\n        break;\n      }\n      default: {\n        if (this._circle == null) this._circle = string_circle(this._radius);\n        this._string.push(\"M\", x, \",\", y, this._circle);\n        break;\n      }\n    }\n  },\n  result: function() {\n    if (this._string.length) {\n      var result = this._string.join(\"\");\n      this._string = [];\n      return result;\n    } else {\n      return null;\n    }\n  }\n};\n\nfunction string_circle(radius) {\n  return \"m0,\" + radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n      + \"z\";\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/path/index.js\n\n\n\n\n\n\n\n\n\n/* harmony default export */ function path(projection, context) {\n  var pointRadius = 4.5,\n      projectionStream,\n      contextStream;\n\n  function path(object) {\n    if (object) {\n      if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n      (0,stream/* default */.Z)(object, projectionStream(contextStream));\n    }\n    return contextStream.result();\n  }\n\n  path.area = function(object) {\n    (0,stream/* default */.Z)(object, projectionStream(path_area));\n    return path_area.result();\n  };\n\n  path.measure = function(object) {\n    (0,stream/* default */.Z)(object, projectionStream(measure));\n    return measure.result();\n  };\n\n  path.bounds = function(object) {\n    (0,stream/* default */.Z)(object, projectionStream(path_bounds/* default */.Z));\n    return path_bounds/* default.result */.Z.result();\n  };\n\n  path.centroid = function(object) {\n    (0,stream/* default */.Z)(object, projectionStream(path_centroid));\n    return path_centroid.result();\n  };\n\n  path.projection = function(_) {\n    return arguments.length ? (projectionStream = _ == null ? (projection = null, identity/* default */.Z) : (projection = _).stream, path) : projection;\n  };\n\n  path.context = function(_) {\n    if (!arguments.length) return context;\n    contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n    if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n    return path;\n  };\n\n  path.pointRadius = function(_) {\n    if (!arguments.length) return pointRadius;\n    pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n    return path;\n  };\n\n  return path.projection(projection).context(context);\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/projection/index.js + 1 modules\nvar projection = __nested_webpack_require_5581614__(15002);\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/projection/conic.js\n\n\n\nfunction conicProjection(projectAt) {\n  var phi0 = 0,\n      phi1 = math.pi / 3,\n      m = (0,projection/* projectionMutator */.r)(projectAt),\n      p = m(phi0, phi1);\n\n  p.parallels = function(_) {\n    return arguments.length ? m(phi0 = _[0] * math/* radians */.uR, phi1 = _[1] * math/* radians */.uR) : [phi0 * math/* degrees */.RW, phi1 * math/* degrees */.RW];\n  };\n\n  return p;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/projection/cylindricalEqualArea.js\n\n\nfunction cylindricalEqualAreaRaw(phi0) {\n  var cosPhi0 = (0,math/* cos */.mC)(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda * cosPhi0, (0,math/* sin */.O$)(phi) / cosPhi0];\n  }\n\n  forward.invert = function(x, y) {\n    return [x / cosPhi0, (0,math/* asin */.ZR)(y * cosPhi0)];\n  };\n\n  return forward;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/projection/conicEqualArea.js\n\n\n\n\nfunction conicEqualAreaRaw(y0, y1) {\n  var sy0 = (0,math/* sin */.O$)(y0), n = (sy0 + (0,math/* sin */.O$)(y1)) / 2;\n\n  // Are the parallels symmetrical around the Equator?\n  if ((0,math/* abs */.Wn)(n) < math/* epsilon */.Ho) return cylindricalEqualAreaRaw(y0);\n\n  var c = 1 + sy0 * (2 * n - sy0), r0 = (0,math/* sqrt */._b)(c) / n;\n\n  function project(x, y) {\n    var r = (0,math/* sqrt */._b)(c - 2 * n * (0,math/* sin */.O$)(y)) / n;\n    return [r * (0,math/* sin */.O$)(x *= n), r0 - r * (0,math/* cos */.mC)(x)];\n  }\n\n  project.invert = function(x, y) {\n    var r0y = r0 - y,\n        l = (0,math/* atan2 */.fv)(x, (0,math/* abs */.Wn)(r0y)) * (0,math/* sign */.Xx)(r0y);\n    if (r0y * n < 0)\n      l -= math.pi * (0,math/* sign */.Xx)(x) * (0,math/* sign */.Xx)(r0y);\n    return [l / n, (0,math/* asin */.ZR)((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n  };\n\n  return project;\n}\n\n/* harmony default export */ function conicEqualArea() {\n  return conicProjection(conicEqualAreaRaw)\n      .scale(155.424)\n      .center([0, 33.6442]);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/projection/albers.js\n\n\n/* harmony default export */ function albers() {\n  return conicEqualArea()\n      .parallels([29.5, 45.5])\n      .scale(1070)\n      .translate([480, 250])\n      .rotate([96, 0])\n      .center([-0.6, 38.7]);\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/projection/fit.js\nvar fit = __nested_webpack_require_5581614__(47589);\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/projection/albersUsa.js\n\n\n\n\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n  var n = streams.length;\n  return {\n    point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n    sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n    lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n    lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n    polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n    polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n  };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\n/* harmony default export */ function albersUsa() {\n  var cache,\n      cacheStream,\n      lower48 = albers(), lower48Point,\n      alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n      hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n      point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n  function albersUsa(coordinates) {\n    var x = coordinates[0], y = coordinates[1];\n    return point = null,\n        (lower48Point.point(x, y), point)\n        || (alaskaPoint.point(x, y), point)\n        || (hawaiiPoint.point(x, y), point);\n  }\n\n  albersUsa.invert = function(coordinates) {\n    var k = lower48.scale(),\n        t = lower48.translate(),\n        x = (coordinates[0] - t[0]) / k,\n        y = (coordinates[1] - t[1]) / k;\n    return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n        : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n        : lower48).invert(coordinates);\n  };\n\n  albersUsa.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n  };\n\n  albersUsa.precision = function(_) {\n    if (!arguments.length) return lower48.precision();\n    lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n    return reset();\n  };\n\n  albersUsa.scale = function(_) {\n    if (!arguments.length) return lower48.scale();\n    lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n    return albersUsa.translate(lower48.translate());\n  };\n\n  albersUsa.translate = function(_) {\n    if (!arguments.length) return lower48.translate();\n    var k = lower48.scale(), x = +_[0], y = +_[1];\n\n    lower48Point = lower48\n        .translate(_)\n        .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n        .stream(pointStream);\n\n    alaskaPoint = alaska\n        .translate([x - 0.307 * k, y + 0.201 * k])\n        .clipExtent([[x - 0.425 * k + math/* epsilon */.Ho, y + 0.120 * k + math/* epsilon */.Ho], [x - 0.214 * k - math/* epsilon */.Ho, y + 0.234 * k - math/* epsilon */.Ho]])\n        .stream(pointStream);\n\n    hawaiiPoint = hawaii\n        .translate([x - 0.205 * k, y + 0.212 * k])\n        .clipExtent([[x - 0.214 * k + math/* epsilon */.Ho, y + 0.166 * k + math/* epsilon */.Ho], [x - 0.115 * k - math/* epsilon */.Ho, y + 0.234 * k - math/* epsilon */.Ho]])\n        .stream(pointStream);\n\n    return reset();\n  };\n\n  albersUsa.fitExtent = function(extent, object) {\n    return (0,fit/* fitExtent */.qg)(albersUsa, extent, object);\n  };\n\n  albersUsa.fitSize = function(size, object) {\n    return (0,fit/* fitSize */.mF)(albersUsa, size, object);\n  };\n\n  albersUsa.fitWidth = function(width, object) {\n    return (0,fit/* fitWidth */.V6)(albersUsa, width, object);\n  };\n\n  albersUsa.fitHeight = function(height, object) {\n    return (0,fit/* fitHeight */.rf)(albersUsa, height, object);\n  };\n\n  function reset() {\n    cache = cacheStream = null;\n    return albersUsa;\n  }\n\n  return albersUsa.scale(1070);\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/projection/azimuthalEqualArea.js\nvar azimuthalEqualArea = __nested_webpack_require_5581614__(12956);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/projection/azimuthalEquidistant.js\nvar azimuthalEquidistant = __nested_webpack_require_5581614__(17889);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/rotation.js\nvar rotation = __nested_webpack_require_5581614__(49386);\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/projection/mercator.js\n\n\n\n\nfunction mercatorRaw(lambda, phi) {\n  return [lambda, (0,math/* log */.cM)((0,math/* tan */.OR)((math/* halfPi */.ou + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n  return [x, 2 * (0,math/* atan */.z4)((0,math/* exp */.Qq)(y)) - math/* halfPi */.ou];\n};\n\n/* harmony default export */ function mercator() {\n  return mercatorProjection(mercatorRaw)\n      .scale(961 / math/* tau */.BZ);\n}\n\nfunction mercatorProjection(project) {\n  var m = (0,projection/* default */.Z)(project),\n      center = m.center,\n      scale = m.scale,\n      translate = m.translate,\n      clipExtent = m.clipExtent,\n      x0 = null, y0, x1, y1; // clip extent\n\n  m.scale = function(_) {\n    return arguments.length ? (scale(_), reclip()) : scale();\n  };\n\n  m.translate = function(_) {\n    return arguments.length ? (translate(_), reclip()) : translate();\n  };\n\n  m.center = function(_) {\n    return arguments.length ? (center(_), reclip()) : center();\n  };\n\n  m.clipExtent = function(_) {\n    return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  function reclip() {\n    var k = math.pi * scale(),\n        t = m((0,rotation/* default */.Z)(m.rotate()).invert([0, 0]));\n    return clipExtent(x0 == null\n        ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n        ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n        : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n  }\n\n  return reclip();\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/projection/conicConformal.js\n\n\n\n\nfunction tany(y) {\n  return (0,math/* tan */.OR)((math/* halfPi */.ou + y) / 2);\n}\n\nfunction conicConformalRaw(y0, y1) {\n  var cy0 = (0,math/* cos */.mC)(y0),\n      n = y0 === y1 ? (0,math/* sin */.O$)(y0) : (0,math/* log */.cM)(cy0 / (0,math/* cos */.mC)(y1)) / (0,math/* log */.cM)(tany(y1) / tany(y0)),\n      f = cy0 * (0,math/* pow */.sQ)(tany(y0), n) / n;\n\n  if (!n) return mercatorRaw;\n\n  function project(x, y) {\n    if (f > 0) { if (y < -math/* halfPi */.ou + math/* epsilon */.Ho) y = -math/* halfPi */.ou + math/* epsilon */.Ho; }\n    else { if (y > math/* halfPi */.ou - math/* epsilon */.Ho) y = math/* halfPi */.ou - math/* epsilon */.Ho; }\n    var r = f / (0,math/* pow */.sQ)(tany(y), n);\n    return [r * (0,math/* sin */.O$)(n * x), f - r * (0,math/* cos */.mC)(n * x)];\n  }\n\n  project.invert = function(x, y) {\n    var fy = f - y, r = (0,math/* sign */.Xx)(n) * (0,math/* sqrt */._b)(x * x + fy * fy),\n      l = (0,math/* atan2 */.fv)(x, (0,math/* abs */.Wn)(fy)) * (0,math/* sign */.Xx)(fy);\n    if (fy * n < 0)\n      l -= math.pi * (0,math/* sign */.Xx)(x) * (0,math/* sign */.Xx)(fy);\n    return [l / n, 2 * (0,math/* atan */.z4)((0,math/* pow */.sQ)(f / r, 1 / n)) - math/* halfPi */.ou];\n  };\n\n  return project;\n}\n\n/* harmony default export */ function conicConformal() {\n  return conicProjection(conicConformalRaw)\n      .scale(109.5)\n      .parallels([30, 30]);\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/projection/equirectangular.js\nvar equirectangular = __nested_webpack_require_5581614__(97492);\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/projection/conicEquidistant.js\n\n\n\n\nfunction conicEquidistantRaw(y0, y1) {\n  var cy0 = (0,math/* cos */.mC)(y0),\n      n = y0 === y1 ? (0,math/* sin */.O$)(y0) : (cy0 - (0,math/* cos */.mC)(y1)) / (y1 - y0),\n      g = cy0 / n + y0;\n\n  if ((0,math/* abs */.Wn)(n) < math/* epsilon */.Ho) return equirectangular/* equirectangularRaw */.k;\n\n  function project(x, y) {\n    var gy = g - y, nx = n * x;\n    return [gy * (0,math/* sin */.O$)(nx), g - gy * (0,math/* cos */.mC)(nx)];\n  }\n\n  project.invert = function(x, y) {\n    var gy = g - y,\n        l = (0,math/* atan2 */.fv)(x, (0,math/* abs */.Wn)(gy)) * (0,math/* sign */.Xx)(gy);\n    if (gy * n < 0)\n      l -= math.pi * (0,math/* sign */.Xx)(x) * (0,math/* sign */.Xx)(gy);\n    return [l / n, g - (0,math/* sign */.Xx)(n) * (0,math/* sqrt */._b)(x * x + gy * gy)];\n  };\n\n  return project;\n}\n\n/* harmony default export */ function conicEquidistant() {\n  return conicProjection(conicEquidistantRaw)\n      .scale(131.154)\n      .center([0, 13.9389]);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/projection/equalEarth.js\n\n\n\nvar A1 = 1.340264,\n    A2 = -0.081106,\n    A3 = 0.000893,\n    A4 = 0.003796,\n    M = (0,math/* sqrt */._b)(3) / 2,\n    iterations = 12;\n\nfunction equalEarthRaw(lambda, phi) {\n  var l = (0,math/* asin */.ZR)(M * (0,math/* sin */.O$)(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n  return [\n    lambda * (0,math/* cos */.mC)(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n    l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n  ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n  var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n  for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n    fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n    fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n    l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n    if ((0,math/* abs */.Wn)(delta) < math/* epsilon2 */.aW) break;\n  }\n  return [\n    M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / (0,math/* cos */.mC)(l),\n    (0,math/* asin */.ZR)((0,math/* sin */.O$)(l) / M)\n  ];\n};\n\n/* harmony default export */ function equalEarth() {\n  return (0,projection/* default */.Z)(equalEarthRaw)\n      .scale(177.158);\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/projection/gnomonic.js\nvar gnomonic = __nested_webpack_require_5581614__(98936);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/transform.js\nvar src_transform = __nested_webpack_require_5581614__(64684);\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/projection/identity.js\n\n\n\n\n\n\n/* harmony default export */ function projection_identity() {\n  var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n      alpha = 0, ca, sa, // angle\n      x0 = null, y0, x1, y1, // clip extent\n      kx = 1, ky = 1,\n      transform = (0,src_transform/* transformer */.l)({\n        point: function(x, y) {\n          var p = projection([x, y])\n          this.stream.point(p[0], p[1]);\n        }\n      }),\n      postclip = identity/* default */.Z,\n      cache,\n      cacheStream;\n\n  function reset() {\n    kx = k * sx;\n    ky = k * sy;\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  function projection (p) {\n    var x = p[0] * kx, y = p[1] * ky;\n    if (alpha) {\n      var t = y * ca - x * sa;\n      x = x * ca + y * sa;\n      y = t;\n    }    \n    return [x + tx, y + ty];\n  }\n  projection.invert = function(p) {\n    var x = p[0] - tx, y = p[1] - ty;\n    if (alpha) {\n      var t = y * ca + x * sa;\n      x = x * ca - y * sa;\n      y = t;\n    }\n    return [x / kx, y / ky];\n  };\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n  };\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity/* default */.Z) : (0,rectangle/* default */.Z)(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, reset()) : k;\n  };\n  projection.translate = function(_) {\n    return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n  }\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * math/* radians */.uR, sa = (0,math/* sin */.O$)(alpha), ca = (0,math/* cos */.mC)(alpha), reset()) : alpha * math/* degrees */.RW;\n  };\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n  };\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n  };\n  projection.fitExtent = function(extent, object) {\n    return (0,fit/* fitExtent */.qg)(projection, extent, object);\n  };\n  projection.fitSize = function(size, object) {\n    return (0,fit/* fitSize */.mF)(projection, size, object);\n  };\n  projection.fitWidth = function(width, object) {\n    return (0,fit/* fitWidth */.V6)(projection, width, object);\n  };\n  projection.fitHeight = function(height, object) {\n    return (0,fit/* fitHeight */.rf)(projection, height, object);\n  };\n\n  return projection;\n}\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/projection/naturalEarth1.js\nvar naturalEarth1 = __nested_webpack_require_5581614__(26867);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/projection/orthographic.js\nvar orthographic = __nested_webpack_require_5581614__(57962);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/projection/azimuthal.js\nvar azimuthal = __nested_webpack_require_5581614__(25382);\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/projection/stereographic.js\n\n\n\n\nfunction stereographicRaw(x, y) {\n  var cy = (0,math/* cos */.mC)(y), k = 1 + (0,math/* cos */.mC)(x) * cy;\n  return [cy * (0,math/* sin */.O$)(x) / k, (0,math/* sin */.O$)(y) / k];\n}\n\nstereographicRaw.invert = (0,azimuthal/* azimuthalInvert */.O)(function(z) {\n  return 2 * (0,math/* atan */.z4)(z);\n});\n\n/* harmony default export */ function stereographic() {\n  return (0,projection/* default */.Z)(stereographicRaw)\n      .scale(250)\n      .clipAngle(142);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/projection/transverseMercator.js\n\n\n\nfunction transverseMercatorRaw(lambda, phi) {\n  return [(0,math/* log */.cM)((0,math/* tan */.OR)((math/* halfPi */.ou + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n  return [-y, 2 * (0,math/* atan */.z4)((0,math/* exp */.Qq)(x)) - math/* halfPi */.ou];\n};\n\n/* harmony default export */ function transverseMercator() {\n  var m = mercatorProjection(transverseMercatorRaw),\n      center = m.center,\n      rotate = m.rotate;\n\n  m.center = function(_) {\n    return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n  };\n\n  m.rotate = function(_) {\n    return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n  };\n\n  return rotate([0, 0, 90])\n      .scale(159.155);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/index.js\n\n\n\n\n\n\n // DEPRECATED! Use d3.geoIdentity().clipExtent(…).\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/***/ }),\n\n/***/ 83074:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5622742__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5622742__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5622742__(39695);\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n  var x0 = a[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__/* .radians */ .uR,\n      y0 = a[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__/* .radians */ .uR,\n      x1 = b[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__/* .radians */ .uR,\n      y1 = b[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__/* .radians */ .uR,\n      cy0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(y0),\n      sy0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(y0),\n      cy1 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(y1),\n      sy1 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(y1),\n      kx0 = cy0 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(x0),\n      ky0 = cy0 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(x0),\n      kx1 = cy1 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(x1),\n      ky1 = cy1 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(x1),\n      d = 2 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .asin */ .ZR)((0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sqrt */ ._b)((0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .haversin */ .Jy)(y1 - y0) + cy0 * cy1 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .haversin */ .Jy)(x1 - x0))),\n      k = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(d);\n\n  var interpolate = d ? function(t) {\n    var B = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(t *= d) / k,\n        A = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(d - t) / k,\n        x = A * kx0 + B * kx1,\n        y = A * ky0 + B * ky1,\n        z = A * sy0 + B * sy1;\n    return [\n      (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .atan2 */ .fv)(y, x) * _math_js__WEBPACK_IMPORTED_MODULE_0__/* .degrees */ .RW,\n      (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .atan2 */ .fv)(z, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sqrt */ ._b)(x * x + y * y)) * _math_js__WEBPACK_IMPORTED_MODULE_0__/* .degrees */ .RW\n    ];\n  } : function() {\n    return [x0 * _math_js__WEBPACK_IMPORTED_MODULE_0__/* .degrees */ .RW, y0 * _math_js__WEBPACK_IMPORTED_MODULE_0__/* .degrees */ .RW];\n  };\n\n  interpolate.distance = d;\n\n  return interpolate;\n}\n\n\n/***/ }),\n\n/***/ 39695:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5625352__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5625352__.d(__webpack_exports__, {\n/* harmony export */   \"BZ\": function() { return /* binding */ tau; },\n/* harmony export */   \"Ho\": function() { return /* binding */ epsilon; },\n/* harmony export */   \"Jy\": function() { return /* binding */ haversin; },\n/* harmony export */   \"Kh\": function() { return /* binding */ acos; },\n/* harmony export */   \"O$\": function() { return /* binding */ sin; },\n/* harmony export */   \"OR\": function() { return /* binding */ tan; },\n/* harmony export */   \"Qq\": function() { return /* binding */ exp; },\n/* harmony export */   \"RW\": function() { return /* binding */ degrees; },\n/* harmony export */   \"Wn\": function() { return /* binding */ abs; },\n/* harmony export */   \"Xx\": function() { return /* binding */ sign; },\n/* harmony export */   \"ZR\": function() { return /* binding */ asin; },\n/* harmony export */   \"_b\": function() { return /* binding */ sqrt; },\n/* harmony export */   \"aW\": function() { return /* binding */ epsilon2; },\n/* harmony export */   \"cM\": function() { return /* binding */ log; },\n/* harmony export */   \"fv\": function() { return /* binding */ atan2; },\n/* harmony export */   \"mC\": function() { return /* binding */ cos; },\n/* harmony export */   \"mD\": function() { return /* binding */ ceil; },\n/* harmony export */   \"ou\": function() { return /* binding */ halfPi; },\n/* harmony export */   \"pi\": function() { return /* binding */ pi; },\n/* harmony export */   \"pu\": function() { return /* binding */ quarterPi; },\n/* harmony export */   \"sQ\": function() { return /* binding */ pow; },\n/* harmony export */   \"uR\": function() { return /* binding */ radians; },\n/* harmony export */   \"z4\": function() { return /* binding */ atan; }\n/* harmony export */ });\n/* unused harmony export floor */\nvar epsilon = 1e-6;\nvar epsilon2 = 1e-12;\nvar pi = Math.PI;\nvar halfPi = pi / 2;\nvar quarterPi = pi / 4;\nvar tau = pi * 2;\n\nvar degrees = 180 / pi;\nvar radians = pi / 180;\n\nvar abs = Math.abs;\nvar atan = Math.atan;\nvar atan2 = Math.atan2;\nvar cos = Math.cos;\nvar ceil = Math.ceil;\nvar exp = Math.exp;\nvar floor = Math.floor;\nvar log = Math.log;\nvar pow = Math.pow;\nvar sin = Math.sin;\nvar sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nvar sqrt = Math.sqrt;\nvar tan = Math.tan;\n\nfunction acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nfunction asin(x) {\n  return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nfunction haversin(x) {\n  return (x = sin(x / 2)) * x;\n}\n\n\n/***/ }),\n\n/***/ 73182:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5627985__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5627985__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* binding */ noop; }\n/* harmony export */ });\nfunction noop() {}\n\n\n/***/ }),\n\n/***/ 3559:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5628290__) {\n\n\"use strict\";\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5628290__(73182);\n\n\nvar x0 = Infinity,\n    y0 = x0,\n    x1 = -x0,\n    y1 = x1;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z,\n  lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z,\n  polygonStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z,\n  polygonEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z,\n  result: function() {\n    var bounds = [[x0, y0], [x1, y1]];\n    x1 = y1 = -(y0 = x0 = Infinity);\n    return bounds;\n  }\n};\n\nfunction boundsPoint(x, y) {\n  if (x < x0) x0 = x;\n  if (x > x1) x1 = x;\n  if (y < y0) y0 = y;\n  if (y > y1) y1 = y;\n}\n\n/* harmony default export */ __webpack_exports__[\"Z\"] = (boundsStream);\n\n\n/***/ }),\n\n/***/ 67108:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5629222__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5629222__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5629222__(39695);\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n  return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .abs */ .Wn)(a[0] - b[0]) < _math_js__WEBPACK_IMPORTED_MODULE_0__/* .epsilon */ .Ho && (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .abs */ .Wn)(a[1] - b[1]) < _math_js__WEBPACK_IMPORTED_MODULE_0__/* .epsilon */ .Ho;\n}\n\n\n/***/ }),\n\n/***/ 23071:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5629983__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5629983__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony import */ var _adder_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5629983__(33940);\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_5629983__(7620);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5629983__(39695);\n\n\n\n\nvar sum = (0,_adder_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z)();\n\nfunction longitude(point) {\n  if ((0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .abs */ .Wn)(point[0]) <= _math_js__WEBPACK_IMPORTED_MODULE_1__.pi)\n    return point[0];\n  else\n    return (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sign */ .Xx)(point[0]) * (((0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .abs */ .Wn)(point[0]) + _math_js__WEBPACK_IMPORTED_MODULE_1__.pi) % _math_js__WEBPACK_IMPORTED_MODULE_1__/* .tau */ .BZ - _math_js__WEBPACK_IMPORTED_MODULE_1__.pi);\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(polygon, point) {\n  var lambda = longitude(point),\n      phi = point[1],\n      sinPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(phi),\n      normal = [(0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(lambda), -(0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .cos */ .mC)(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  sum.reset();\n\n  if (sinPhi === 1) phi = _math_js__WEBPACK_IMPORTED_MODULE_1__/* .halfPi */ .ou + _math_js__WEBPACK_IMPORTED_MODULE_1__/* .epsilon */ .Ho;\n  else if (sinPhi === -1) phi = -_math_js__WEBPACK_IMPORTED_MODULE_1__/* .halfPi */ .ou - _math_js__WEBPACK_IMPORTED_MODULE_1__/* .epsilon */ .Ho;\n\n  for (var i = 0, n = polygon.length; i < n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = longitude(point0),\n        phi0 = point0[1] / 2 + _math_js__WEBPACK_IMPORTED_MODULE_1__/* .quarterPi */ .pu,\n        sinPhi0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(phi0),\n        cosPhi0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .cos */ .mC)(phi0);\n\n    for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n      var point1 = ring[j],\n          lambda1 = longitude(point1),\n          phi1 = point1[1] / 2 + _math_js__WEBPACK_IMPORTED_MODULE_1__/* .quarterPi */ .pu,\n          sinPhi1 = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(phi1),\n          cosPhi1 = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .cos */ .mC)(phi1),\n          delta = lambda1 - lambda0,\n          sign = delta >= 0 ? 1 : -1,\n          absDelta = sign * delta,\n          antimeridian = absDelta > _math_js__WEBPACK_IMPORTED_MODULE_1__.pi,\n          k = sinPhi0 * sinPhi1;\n\n      sum.add((0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .atan2 */ .fv)(k * sign * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(absDelta), cosPhi0 * cosPhi1 + k * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .cos */ .mC)(absDelta)));\n      angle += antimeridian ? delta + sign * _math_js__WEBPACK_IMPORTED_MODULE_1__/* .tau */ .BZ : delta;\n\n      // Are the longitudes either side of the point’s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n        var arc = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_2__/* .cartesianCross */ .T5)((0,_cartesian_js__WEBPACK_IMPORTED_MODULE_2__/* .cartesian */ .Og)(point0), (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_2__/* .cartesian */ .Og)(point1));\n        (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_2__/* .cartesianNormalizeInPlace */ .iJ)(arc);\n        var intersection = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_2__/* .cartesianCross */ .T5)(normal, arc);\n        (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_2__/* .cartesianNormalizeInPlace */ .iJ)(intersection);\n        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .asin */ .ZR)(intersection[2]);\n        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta >= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle < -_math_js__WEBPACK_IMPORTED_MODULE_1__/* .epsilon */ .Ho || angle < _math_js__WEBPACK_IMPORTED_MODULE_1__/* .epsilon */ .Ho && sum < -_math_js__WEBPACK_IMPORTED_MODULE_1__/* .epsilon */ .Ho) ^ (winding & 1);\n}\n\n\n/***/ }),\n\n/***/ 25382:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5635039__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5635039__.d(__webpack_exports__, {\n/* harmony export */   \"O\": function() { return /* binding */ azimuthalInvert; },\n/* harmony export */   \"W\": function() { return /* binding */ azimuthalRaw; }\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5635039__(39695);\n\n\nfunction azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(x),\n        cy = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(y),\n        k = scale(cx * cy);\n    return [\n      k * cy * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(x),\n      k * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(y)\n    ];\n  }\n}\n\nfunction azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sqrt */ ._b)(x * x + y * y),\n        c = angle(z),\n        sc = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(c),\n        cc = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(c);\n    return [\n      (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .atan2 */ .fv)(x * sc, z * cc),\n      (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .asin */ .ZR)(z && y * sc / z)\n    ];\n  }\n}\n\n\n/***/ }),\n\n/***/ 12956:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5636413__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5636413__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; },\n/* harmony export */   \"l\": function() { return /* binding */ azimuthalEqualAreaRaw; }\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5636413__(39695);\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5636413__(25382);\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_5636413__(15002);\n\n\n\n\nvar azimuthalEqualAreaRaw = (0,_azimuthal_js__WEBPACK_IMPORTED_MODULE_0__/* .azimuthalRaw */ .W)(function(cxcy) {\n  return (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sqrt */ ._b)(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = (0,_azimuthal_js__WEBPACK_IMPORTED_MODULE_0__/* .azimuthalInvert */ .O)(function(z) {\n  return 2 * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .asin */ .ZR)(z / 2);\n});\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n  return (0,_index_js__WEBPACK_IMPORTED_MODULE_2__/* [\"default\"] */ .Z)(azimuthalEqualAreaRaw)\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n}\n\n\n/***/ }),\n\n/***/ 17889:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5637733__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5637733__.d(__webpack_exports__, {\n/* harmony export */   \"N\": function() { return /* binding */ azimuthalEquidistantRaw; },\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5637733__(39695);\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5637733__(25382);\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_5637733__(15002);\n\n\n\n\nvar azimuthalEquidistantRaw = (0,_azimuthal_js__WEBPACK_IMPORTED_MODULE_0__/* .azimuthalRaw */ .W)(function(c) {\n  return (c = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .acos */ .Kh)(c)) && c / (0,_math_js__WEBPACK_IMPORTED_MODULE_1__/* .sin */ .O$)(c);\n});\n\nazimuthalEquidistantRaw.invert = (0,_azimuthal_js__WEBPACK_IMPORTED_MODULE_0__/* .azimuthalInvert */ .O)(function(z) {\n  return z;\n});\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n  return (0,_index_js__WEBPACK_IMPORTED_MODULE_2__/* [\"default\"] */ .Z)(azimuthalEquidistantRaw)\n      .scale(79.4188)\n      .clipAngle(180 - 1e-3);\n}\n\n\n/***/ }),\n\n/***/ 97492:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5639052__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5639052__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; },\n/* harmony export */   \"k\": function() { return /* binding */ equirectangularRaw; }\n/* harmony export */ });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5639052__(15002);\n\n\nfunction equirectangularRaw(lambda, phi) {\n  return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n  return (0,_index_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z)(equirectangularRaw)\n      .scale(152.63);\n}\n\n\n/***/ }),\n\n/***/ 47589:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5639861__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5639861__.d(__webpack_exports__, {\n/* harmony export */   \"V6\": function() { return /* binding */ fitWidth; },\n/* harmony export */   \"mF\": function() { return /* binding */ fitSize; },\n/* harmony export */   \"qg\": function() { return /* binding */ fitExtent; },\n/* harmony export */   \"rf\": function() { return /* binding */ fitHeight; }\n/* harmony export */ });\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5639861__(72736);\n/* harmony import */ var _path_bounds_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5639861__(3559);\n\n\n\nfunction fit(projection, fitBounds, object) {\n  var clip = projection.clipExtent && projection.clipExtent();\n  projection.scale(150).translate([0, 0]);\n  if (clip != null) projection.clipExtent(null);\n  (0,_stream_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z)(object, projection.stream(_path_bounds_js__WEBPACK_IMPORTED_MODULE_1__/* [\"default\"] */ .Z));\n  fitBounds(_path_bounds_js__WEBPACK_IMPORTED_MODULE_1__/* [\"default\"].result */ .Z.result());\n  if (clip != null) projection.clipExtent(clip);\n  return projection;\n}\n\nfunction fitExtent(projection, extent, object) {\n  return fit(projection, function(b) {\n    var w = extent[1][0] - extent[0][0],\n        h = extent[1][1] - extent[0][1],\n        k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n        x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n        y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nfunction fitSize(projection, size, object) {\n  return fitExtent(projection, [[0, 0], size], object);\n}\n\nfunction fitWidth(projection, width, object) {\n  return fit(projection, function(b) {\n    var w = +width,\n        k = w / (b[1][0] - b[0][0]),\n        x = (w - k * (b[1][0] + b[0][0])) / 2,\n        y = -k * b[0][1];\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nfunction fitHeight(projection, height, object) {\n  return fit(projection, function(b) {\n    var h = +height,\n        k = h / (b[1][1] - b[0][1]),\n        x = -k * b[0][0],\n        y = (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\n\n/***/ }),\n\n/***/ 98936:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5642212__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5642212__.d(__webpack_exports__, {\n/* harmony export */   \"M\": function() { return /* binding */ gnomonicRaw; },\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5642212__(39695);\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5642212__(25382);\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_5642212__(15002);\n\n\n\n\nfunction gnomonicRaw(x, y) {\n  var cy = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(y), k = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(x) * cy;\n  return [cy * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(x) / k, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(y) / k];\n}\n\ngnomonicRaw.invert = (0,_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__/* .azimuthalInvert */ .O)(_math_js__WEBPACK_IMPORTED_MODULE_0__/* .atan */ .z4);\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n  return (0,_index_js__WEBPACK_IMPORTED_MODULE_2__/* [\"default\"] */ .Z)(gnomonicRaw)\n      .scale(144.049)\n      .clipAngle(60);\n}\n\n\n/***/ }),\n\n/***/ 15002:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5643568__) {\n\n\"use strict\";\n\n// EXPORTS\n__nested_webpack_require_5643568__.d(__webpack_exports__, {\n  \"Z\": function() { return /* binding */ projection; },\n  \"r\": function() { return /* binding */ projectionMutator; }\n});\n\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/clip/antimeridian.js\nvar antimeridian = __nested_webpack_require_5643568__(87070);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/clip/circle.js\nvar circle = __nested_webpack_require_5643568__(1457);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/clip/rectangle.js + 1 modules\nvar rectangle = __nested_webpack_require_5643568__(87605);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/compose.js\nvar compose = __nested_webpack_require_5643568__(96059);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/identity.js\nvar identity = __nested_webpack_require_5643568__(8593);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/math.js\nvar math = __nested_webpack_require_5643568__(39695);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/rotation.js\nvar rotation = __nested_webpack_require_5643568__(49386);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/transform.js\nvar transform = __nested_webpack_require_5643568__(64684);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/projection/fit.js\nvar fit = __nested_webpack_require_5643568__(47589);\n// EXTERNAL MODULE: ./node_modules/d3-geo/src/cartesian.js\nvar cartesian = __nested_webpack_require_5643568__(7620);\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/projection/resample.js\n\n\n\n\nvar maxDepth = 16, // maximum depth of subdivision\n    cosMinDistance = (0,math/* cos */.mC)(30 * math/* radians */.uR); // cos(minimum angular distance)\n\n/* harmony default export */ function resample(project, delta2) {\n  return +delta2 ? resample_resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n  return (0,transform/* transformer */.l)({\n    point: function(x, y) {\n      x = project(x, y);\n      this.stream.point(x[0], x[1]);\n    }\n  });\n}\n\nfunction resample_resample(project, delta2) {\n\n  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n    var dx = x1 - x0,\n        dy = y1 - y0,\n        d2 = dx * dx + dy * dy;\n    if (d2 > 4 * delta2 && depth--) {\n      var a = a0 + a1,\n          b = b0 + b1,\n          c = c0 + c1,\n          m = (0,math/* sqrt */._b)(a * a + b * b + c * c),\n          phi2 = (0,math/* asin */.ZR)(c /= m),\n          lambda2 = (0,math/* abs */.Wn)((0,math/* abs */.Wn)(c) - 1) < math/* epsilon */.Ho || (0,math/* abs */.Wn)(lambda0 - lambda1) < math/* epsilon */.Ho ? (lambda0 + lambda1) / 2 : (0,math/* atan2 */.fv)(b, a),\n          p = project(lambda2, phi2),\n          x2 = p[0],\n          y2 = p[1],\n          dx2 = x2 - x0,\n          dy2 = y2 - y0,\n          dz = dy * dx2 - dx * dy2;\n      if (dz * dz / d2 > delta2 // perpendicular projected distance\n          || (0,math/* abs */.Wn)((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n          || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n        stream.point(x2, y2);\n        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n      }\n    }\n  }\n  return function(stream) {\n    var lambda00, x00, y00, a00, b00, c00, // first point\n        lambda0, x0, y0, a0, b0, c0; // previous point\n\n    var resampleStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n    };\n\n    function point(x, y) {\n      x = project(x, y);\n      stream.point(x[0], x[1]);\n    }\n\n    function lineStart() {\n      x0 = NaN;\n      resampleStream.point = linePoint;\n      stream.lineStart();\n    }\n\n    function linePoint(lambda, phi) {\n      var c = (0,cartesian/* cartesian */.Og)([lambda, phi]), p = project(lambda, phi);\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n      stream.point(x0, y0);\n    }\n\n    function lineEnd() {\n      resampleStream.point = point;\n      stream.lineEnd();\n    }\n\n    function ringStart() {\n      lineStart();\n      resampleStream.point = ringPoint;\n      resampleStream.lineEnd = ringEnd;\n    }\n\n    function ringPoint(lambda, phi) {\n      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n      resampleStream.point = linePoint;\n    }\n\n    function ringEnd() {\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n      resampleStream.lineEnd = lineEnd;\n      lineEnd();\n    }\n\n    return resampleStream;\n  };\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-geo/src/projection/index.js\n\n\n\n\n\n\n\n\n\n\n\nvar transformRadians = (0,transform/* transformer */.l)({\n  point: function(x, y) {\n    this.stream.point(x * math/* radians */.uR, y * math/* radians */.uR);\n  }\n});\n\nfunction transformRotate(rotate) {\n  return (0,transform/* transformer */.l)({\n    point: function(x, y) {\n      var r = rotate(x, y);\n      return this.stream.point(r[0], r[1]);\n    }\n  });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [dx + k * x, dy - k * y];\n  }\n  transform.invert = function(x, y) {\n    return [(x - dx) / k * sx, (dy - y) / k * sy];\n  };\n  return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n  var cosAlpha = (0,math/* cos */.mC)(alpha),\n      sinAlpha = (0,math/* sin */.O$)(alpha),\n      a = cosAlpha * k,\n      b = sinAlpha * k,\n      ai = cosAlpha / k,\n      bi = sinAlpha / k,\n      ci = (sinAlpha * dy - cosAlpha * dx) / k,\n      fi = (sinAlpha * dx + cosAlpha * dy) / k;\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [a * x - b * y + dx, dy - b * x - a * y];\n  }\n  transform.invert = function(x, y) {\n    return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n  };\n  return transform;\n}\n\nfunction projection(project) {\n  return projectionMutator(function() { return project; })();\n}\n\nfunction projectionMutator(projectAt) {\n  var project,\n      k = 150, // scale\n      x = 480, y = 250, // translate\n      lambda = 0, phi = 0, // center\n      deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n      alpha = 0, // post-rotate angle\n      sx = 1, // reflectX\n      sy = 1, // reflectX\n      theta = null, preclip = antimeridian/* default */.Z, // pre-clip angle\n      x0 = null, y0, x1, y1, postclip = identity/* default */.Z, // post-clip extent\n      delta2 = 0.5, // precision\n      projectResample,\n      projectTransform,\n      projectRotateTransform,\n      cache,\n      cacheStream;\n\n  function projection(point) {\n    return projectRotateTransform(point[0] * math/* radians */.uR, point[1] * math/* radians */.uR);\n  }\n\n  function invert(point) {\n    point = projectRotateTransform.invert(point[0], point[1]);\n    return point && [point[0] * math/* degrees */.RW, point[1] * math/* degrees */.RW];\n  }\n\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n  };\n\n  projection.preclip = function(_) {\n    return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n  };\n\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n\n  projection.clipAngle = function(_) {\n    return arguments.length ? (preclip = +_ ? (0,circle/* default */.Z)(theta = _ * math/* radians */.uR) : (theta = null, antimeridian/* default */.Z), reset()) : theta * math/* degrees */.RW;\n  };\n\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity/* default */.Z) : (0,rectangle/* default */.Z)(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, recenter()) : k;\n  };\n\n  projection.translate = function(_) {\n    return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n  };\n\n  projection.center = function(_) {\n    return arguments.length ? (lambda = _[0] % 360 * math/* radians */.uR, phi = _[1] % 360 * math/* radians */.uR, recenter()) : [lambda * math/* degrees */.RW, phi * math/* degrees */.RW];\n  };\n\n  projection.rotate = function(_) {\n    return arguments.length ? (deltaLambda = _[0] % 360 * math/* radians */.uR, deltaPhi = _[1] % 360 * math/* radians */.uR, deltaGamma = _.length > 2 ? _[2] % 360 * math/* radians */.uR : 0, recenter()) : [deltaLambda * math/* degrees */.RW, deltaPhi * math/* degrees */.RW, deltaGamma * math/* degrees */.RW];\n  };\n\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * math/* radians */.uR, recenter()) : alpha * math/* degrees */.RW;\n  };\n\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n  };\n\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n  };\n\n  projection.precision = function(_) {\n    return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : (0,math/* sqrt */._b)(delta2);\n  };\n\n  projection.fitExtent = function(extent, object) {\n    return (0,fit/* fitExtent */.qg)(projection, extent, object);\n  };\n\n  projection.fitSize = function(size, object) {\n    return (0,fit/* fitSize */.mF)(projection, size, object);\n  };\n\n  projection.fitWidth = function(width, object) {\n    return (0,fit/* fitWidth */.V6)(projection, width, object);\n  };\n\n  projection.fitHeight = function(height, object) {\n    return (0,fit/* fitHeight */.rf)(projection, height, object);\n  };\n\n  function recenter() {\n    var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n        transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], sx, sy, alpha);\n    rotate = (0,rotation/* rotateRadians */.I)(deltaLambda, deltaPhi, deltaGamma);\n    projectTransform = (0,compose/* default */.Z)(project, transform);\n    projectRotateTransform = (0,compose/* default */.Z)(rotate, projectTransform);\n    projectResample = resample(projectTransform, delta2);\n    return reset();\n  }\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return function() {\n    project = projectAt.apply(this, arguments);\n    projection.invert = project.invert && invert;\n    return recenter();\n  };\n}\n\n\n/***/ }),\n\n/***/ 26867:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5654343__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5654343__.d(__webpack_exports__, {\n/* harmony export */   \"K\": function() { return /* binding */ naturalEarth1Raw; },\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5654343__(15002);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5654343__(39695);\n\n\n\nfunction naturalEarth1Raw(lambda, phi) {\n  var phi2 = phi * phi, phi4 = phi2 * phi2;\n  return [\n    lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n    phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n  ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n  var phi = y, i = 25, delta;\n  do {\n    var phi2 = phi * phi, phi4 = phi2 * phi2;\n    phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n        (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n  } while ((0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .abs */ .Wn)(delta) > _math_js__WEBPACK_IMPORTED_MODULE_0__/* .epsilon */ .Ho && --i > 0);\n  return [\n    x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n    phi\n  ];\n};\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n  return (0,_index_js__WEBPACK_IMPORTED_MODULE_1__/* [\"default\"] */ .Z)(naturalEarth1Raw)\n      .scale(175.295);\n}\n\n\n/***/ }),\n\n/***/ 57962:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5656093__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5656093__.d(__webpack_exports__, {\n/* harmony export */   \"I\": function() { return /* binding */ orthographicRaw; },\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5656093__(39695);\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5656093__(25382);\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_5656093__(15002);\n\n\n\n\nfunction orthographicRaw(x, y) {\n  return [(0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(y) * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(x), (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(y)];\n}\n\northographicRaw.invert = (0,_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__/* .azimuthalInvert */ .O)(_math_js__WEBPACK_IMPORTED_MODULE_0__/* .asin */ .ZR);\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n  return (0,_index_js__WEBPACK_IMPORTED_MODULE_2__/* [\"default\"] */ .Z)(orthographicRaw)\n      .scale(249.5)\n      .clipAngle(90 + _math_js__WEBPACK_IMPORTED_MODULE_0__/* .epsilon */ .Ho);\n}\n\n\n/***/ }),\n\n/***/ 49386:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5657429__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5657429__.d(__webpack_exports__, {\n/* harmony export */   \"I\": function() { return /* binding */ rotateRadians; },\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\n/* harmony import */ var _compose_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5657429__(96059);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5657429__(39695);\n\n\n\nfunction rotationIdentity(lambda, phi) {\n  return [(0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .abs */ .Wn)(lambda) > _math_js__WEBPACK_IMPORTED_MODULE_0__.pi ? lambda + Math.round(-lambda / _math_js__WEBPACK_IMPORTED_MODULE_0__/* .tau */ .BZ) * _math_js__WEBPACK_IMPORTED_MODULE_0__/* .tau */ .BZ : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nfunction rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n  return (deltaLambda %= _math_js__WEBPACK_IMPORTED_MODULE_0__/* .tau */ .BZ) ? (deltaPhi || deltaGamma ? (0,_compose_js__WEBPACK_IMPORTED_MODULE_1__/* [\"default\"] */ .Z)(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n    : rotationLambda(deltaLambda))\n    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n    : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n  return function(lambda, phi) {\n    return lambda += deltaLambda, [lambda > _math_js__WEBPACK_IMPORTED_MODULE_0__.pi ? lambda - _math_js__WEBPACK_IMPORTED_MODULE_0__/* .tau */ .BZ : lambda < -_math_js__WEBPACK_IMPORTED_MODULE_0__.pi ? lambda + _math_js__WEBPACK_IMPORTED_MODULE_0__/* .tau */ .BZ : lambda, phi];\n  };\n}\n\nfunction rotationLambda(deltaLambda) {\n  var rotation = forwardRotationLambda(deltaLambda);\n  rotation.invert = forwardRotationLambda(-deltaLambda);\n  return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n  var cosDeltaPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(deltaPhi),\n      sinDeltaPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(deltaPhi),\n      cosDeltaGamma = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(deltaGamma),\n      sinDeltaGamma = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(deltaGamma);\n\n  function rotation(lambda, phi) {\n    var cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(phi),\n        x = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(lambda) * cosPhi,\n        y = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(lambda) * cosPhi,\n        z = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(phi),\n        k = z * cosDeltaPhi + x * sinDeltaPhi;\n    return [\n      (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .atan2 */ .fv)(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n      (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .asin */ .ZR)(k * cosDeltaGamma + y * sinDeltaGamma)\n    ];\n  }\n\n  rotation.invert = function(lambda, phi) {\n    var cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(phi),\n        x = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .cos */ .mC)(lambda) * cosPhi,\n        y = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(lambda) * cosPhi,\n        z = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .sin */ .O$)(phi),\n        k = z * cosDeltaGamma - y * sinDeltaGamma;\n    return [\n      (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .atan2 */ .fv)(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n      (0,_math_js__WEBPACK_IMPORTED_MODULE_0__/* .asin */ .ZR)(k * cosDeltaPhi - x * sinDeltaPhi)\n    ];\n  };\n\n  return rotation;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(rotate) {\n  rotate = rotateRadians(rotate[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__/* .radians */ .uR, rotate[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__/* .radians */ .uR, rotate.length > 2 ? rotate[2] * _math_js__WEBPACK_IMPORTED_MODULE_0__/* .radians */ .uR : 0);\n\n  function forward(coordinates) {\n    coordinates = rotate(coordinates[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__/* .radians */ .uR, coordinates[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__/* .radians */ .uR);\n    return coordinates[0] *= _math_js__WEBPACK_IMPORTED_MODULE_0__/* .degrees */ .RW, coordinates[1] *= _math_js__WEBPACK_IMPORTED_MODULE_0__/* .degrees */ .RW, coordinates;\n  }\n\n  forward.invert = function(coordinates) {\n    coordinates = rotate.invert(coordinates[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__/* .radians */ .uR, coordinates[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__/* .radians */ .uR);\n    return coordinates[0] *= _math_js__WEBPACK_IMPORTED_MODULE_0__/* .degrees */ .RW, coordinates[1] *= _math_js__WEBPACK_IMPORTED_MODULE_0__/* .degrees */ .RW, coordinates;\n  };\n\n  return forward;\n}\n\n\n/***/ }),\n\n/***/ 72736:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5662287__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5662287__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }\n/* harmony export */ });\nfunction streamGeometry(geometry, stream) {\n  if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n    streamGeometryType[geometry.type](geometry, stream);\n  }\n}\n\nvar streamObjectType = {\n  Feature: function(object, stream) {\n    streamGeometry(object.geometry, stream);\n  },\n  FeatureCollection: function(object, stream) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) streamGeometry(features[i].geometry, stream);\n  }\n};\n\nvar streamGeometryType = {\n  Sphere: function(object, stream) {\n    stream.sphere();\n  },\n  Point: function(object, stream) {\n    object = object.coordinates;\n    stream.point(object[0], object[1], object[2]);\n  },\n  MultiPoint: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n  },\n  LineString: function(object, stream) {\n    streamLine(object.coordinates, stream, 0);\n  },\n  MultiLineString: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamLine(coordinates[i], stream, 0);\n  },\n  Polygon: function(object, stream) {\n    streamPolygon(object.coordinates, stream);\n  },\n  MultiPolygon: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamPolygon(coordinates[i], stream);\n  },\n  GeometryCollection: function(object, stream) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) streamGeometry(geometries[i], stream);\n  }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n  var i = -1, n = coordinates.length - closed, coordinate;\n  stream.lineStart();\n  while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n  stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n  var i = -1, n = coordinates.length;\n  stream.polygonStart();\n  while (++i < n) streamLine(coordinates[i], stream, 1);\n  stream.polygonEnd();\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(object, stream) {\n  if (object && streamObjectType.hasOwnProperty(object.type)) {\n    streamObjectType[object.type](object, stream);\n  } else {\n    streamGeometry(object, stream);\n  }\n}\n\n\n/***/ }),\n\n/***/ 64684:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5664955__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5664955__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; },\n/* harmony export */   \"l\": function() { return /* binding */ transformer; }\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(methods) {\n  return {\n    stream: transformer(methods)\n  };\n}\n\nfunction transformer(methods) {\n  return function(stream) {\n    var s = new TransformStream;\n    for (var key in methods) s[key] = methods[key];\n    s.stream = stream;\n    return s;\n  };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n  constructor: TransformStream,\n  point: function(x, y) { this.stream.point(x, y); },\n  sphere: function() { this.stream.sphere(); },\n  lineStart: function() { this.stream.lineStart(); },\n  lineEnd: function() { this.stream.lineEnd(); },\n  polygonStart: function() { this.stream.polygonStart(); },\n  polygonEnd: function() { this.stream.polygonEnd(); }\n};\n\n\n/***/ }),\n\n/***/ 674:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5666090__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__nested_webpack_require_5666090__.r(__webpack_exports__);\n\n// EXPORTS\n__nested_webpack_require_5666090__.d(__webpack_exports__, {\n  \"cluster\": function() { return /* reexport */ cluster; },\n  \"hierarchy\": function() { return /* reexport */ hierarchy; },\n  \"pack\": function() { return /* reexport */ pack; },\n  \"packEnclose\": function() { return /* reexport */ enclose; },\n  \"packSiblings\": function() { return /* reexport */ siblings; },\n  \"partition\": function() { return /* reexport */ partition; },\n  \"stratify\": function() { return /* reexport */ stratify; },\n  \"tree\": function() { return /* reexport */ tree; },\n  \"treemap\": function() { return /* reexport */ treemap; },\n  \"treemapBinary\": function() { return /* reexport */ binary; },\n  \"treemapDice\": function() { return /* reexport */ dice; },\n  \"treemapResquarify\": function() { return /* reexport */ resquarify; },\n  \"treemapSlice\": function() { return /* reexport */ treemap_slice; },\n  \"treemapSliceDice\": function() { return /* reexport */ sliceDice; },\n  \"treemapSquarify\": function() { return /* reexport */ squarify; }\n});\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/cluster.js\nfunction defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n  return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n  return x + c.x;\n}\n\nfunction maxY(children) {\n  return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n  return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n  var children;\n  while (children = node.children) node = children[0];\n  return node;\n}\n\nfunction leafRight(node) {\n  var children;\n  while (children = node.children) node = children[children.length - 1];\n  return node;\n}\n\n/* harmony default export */ function cluster() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = false;\n\n  function cluster(root) {\n    var previousNode,\n        x = 0;\n\n    // First walk, computing the initial x & y values.\n    root.eachAfter(function(node) {\n      var children = node.children;\n      if (children) {\n        node.x = meanX(children);\n        node.y = maxY(children);\n      } else {\n        node.x = previousNode ? x += separation(node, previousNode) : 0;\n        node.y = 0;\n        previousNode = node;\n      }\n    });\n\n    var left = leafLeft(root),\n        right = leafRight(root),\n        x0 = left.x - separation(left, right) / 2,\n        x1 = right.x + separation(right, left) / 2;\n\n    // Second walk, normalizing x & y to the desired size.\n    return root.eachAfter(nodeSize ? function(node) {\n      node.x = (node.x - root.x) * dx;\n      node.y = (root.y - node.y) * dy;\n    } : function(node) {\n      node.x = (node.x - x0) / (x1 - x0) * dx;\n      node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n    });\n  }\n\n  cluster.separation = function(x) {\n    return arguments.length ? (separation = x, cluster) : separation;\n  };\n\n  cluster.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n  };\n\n  cluster.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return cluster;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/hierarchy/count.js\nfunction count(node) {\n  var sum = 0,\n      children = node.children,\n      i = children && children.length;\n  if (!i) sum = 1;\n  else while (--i >= 0) sum += children[i].value;\n  node.value = sum;\n}\n\n/* harmony default export */ function hierarchy_count() {\n  return this.eachAfter(count);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/hierarchy/each.js\n/* harmony default export */ function each(callback) {\n  var node = this, current, next = [node], children, i, n;\n  do {\n    current = next.reverse(), next = [];\n    while (node = current.pop()) {\n      callback(node), children = node.children;\n      if (children) for (i = 0, n = children.length; i < n; ++i) {\n        next.push(children[i]);\n      }\n    }\n  } while (next.length);\n  return this;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js\n/* harmony default export */ function eachBefore(callback) {\n  var node = this, nodes = [node], children, i;\n  while (node = nodes.pop()) {\n    callback(node), children = node.children;\n    if (children) for (i = children.length - 1; i >= 0; --i) {\n      nodes.push(children[i]);\n    }\n  }\n  return this;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js\n/* harmony default export */ function eachAfter(callback) {\n  var node = this, nodes = [node], next = [], children, i, n;\n  while (node = nodes.pop()) {\n    next.push(node), children = node.children;\n    if (children) for (i = 0, n = children.length; i < n; ++i) {\n      nodes.push(children[i]);\n    }\n  }\n  while (node = next.pop()) {\n    callback(node);\n  }\n  return this;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/hierarchy/sum.js\n/* harmony default export */ function sum(value) {\n  return this.eachAfter(function(node) {\n    var sum = +value(node.data) || 0,\n        children = node.children,\n        i = children && children.length;\n    while (--i >= 0) sum += children[i].value;\n    node.value = sum;\n  });\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/hierarchy/sort.js\n/* harmony default export */ function sort(compare) {\n  return this.eachBefore(function(node) {\n    if (node.children) {\n      node.children.sort(compare);\n    }\n  });\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/hierarchy/path.js\n/* harmony default export */ function path(end) {\n  var start = this,\n      ancestor = leastCommonAncestor(start, end),\n      nodes = [start];\n  while (start !== ancestor) {\n    start = start.parent;\n    nodes.push(start);\n  }\n  var k = nodes.length;\n  while (end !== ancestor) {\n    nodes.splice(k, 0, end);\n    end = end.parent;\n  }\n  return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n  if (a === b) return a;\n  var aNodes = a.ancestors(),\n      bNodes = b.ancestors(),\n      c = null;\n  a = aNodes.pop();\n  b = bNodes.pop();\n  while (a === b) {\n    c = a;\n    a = aNodes.pop();\n    b = bNodes.pop();\n  }\n  return c;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/hierarchy/ancestors.js\n/* harmony default export */ function ancestors() {\n  var node = this, nodes = [node];\n  while (node = node.parent) {\n    nodes.push(node);\n  }\n  return nodes;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/hierarchy/descendants.js\n/* harmony default export */ function descendants() {\n  var nodes = [];\n  this.each(function(node) {\n    nodes.push(node);\n  });\n  return nodes;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/hierarchy/leaves.js\n/* harmony default export */ function leaves() {\n  var leaves = [];\n  this.eachBefore(function(node) {\n    if (!node.children) {\n      leaves.push(node);\n    }\n  });\n  return leaves;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/hierarchy/links.js\n/* harmony default export */ function links() {\n  var root = this, links = [];\n  root.each(function(node) {\n    if (node !== root) { // Don’t include the root’s parent, if any.\n      links.push({source: node.parent, target: node});\n    }\n  });\n  return links;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/hierarchy/index.js\n\n\n\n\n\n\n\n\n\n\n\n\nfunction hierarchy(data, children) {\n  var root = new Node(data),\n      valued = +data.value && (root.value = data.value),\n      node,\n      nodes = [root],\n      child,\n      childs,\n      i,\n      n;\n\n  if (children == null) children = defaultChildren;\n\n  while (node = nodes.pop()) {\n    if (valued) node.value = +node.data.value;\n    if ((childs = children(node.data)) && (n = childs.length)) {\n      node.children = new Array(n);\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = node.children[i] = new Node(childs[i]));\n        child.parent = node;\n        child.depth = node.depth + 1;\n      }\n    }\n  }\n\n  return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n  return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n  return d.children;\n}\n\nfunction copyData(node) {\n  node.data = node.data.data;\n}\n\nfunction computeHeight(node) {\n  var height = 0;\n  do node.height = height;\n  while ((node = node.parent) && (node.height < ++height));\n}\n\nfunction Node(data) {\n  this.data = data;\n  this.depth =\n  this.height = 0;\n  this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n  constructor: Node,\n  count: hierarchy_count,\n  each: each,\n  eachAfter: eachAfter,\n  eachBefore: eachBefore,\n  sum: sum,\n  sort: sort,\n  path: path,\n  ancestors: ancestors,\n  descendants: descendants,\n  leaves: leaves,\n  links: links,\n  copy: node_copy\n};\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/array.js\nvar slice = Array.prototype.slice;\n\nfunction shuffle(array) {\n  var m = array.length,\n      t,\n      i;\n\n  while (m) {\n    i = Math.random() * m-- | 0;\n    t = array[m];\n    array[m] = array[i];\n    array[i] = t;\n  }\n\n  return array;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/pack/enclose.js\n\n\n/* harmony default export */ function enclose(circles) {\n  var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n  while (i < n) {\n    p = circles[i];\n    if (e && enclosesWeak(e, p)) ++i;\n    else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n  }\n\n  return e;\n}\n\nfunction extendBasis(B, p) {\n  var i, j;\n\n  if (enclosesWeakAll(p, B)) return [p];\n\n  // If we get here then B must have at least one element.\n  for (i = 0; i < B.length; ++i) {\n    if (enclosesNot(p, B[i])\n        && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n      return [B[i], p];\n    }\n  }\n\n  // If we get here then B must have at least two elements.\n  for (i = 0; i < B.length - 1; ++i) {\n    for (j = i + 1; j < B.length; ++j) {\n      if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n          && enclosesNot(encloseBasis2(B[i], p), B[j])\n          && enclosesNot(encloseBasis2(B[j], p), B[i])\n          && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n        return [B[i], B[j], p];\n      }\n    }\n  }\n\n  // If we get here then something is very wrong.\n  throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n  var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n  return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n  var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n  for (var i = 0; i < B.length; ++i) {\n    if (!enclosesWeak(a, B[i])) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction encloseBasis(B) {\n  switch (B.length) {\n    case 1: return encloseBasis1(B[0]);\n    case 2: return encloseBasis2(B[0], B[1]);\n    case 3: return encloseBasis3(B[0], B[1], B[2]);\n  }\n}\n\nfunction encloseBasis1(a) {\n  return {\n    x: a.x,\n    y: a.y,\n    r: a.r\n  };\n}\n\nfunction encloseBasis2(a, b) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n      l = Math.sqrt(x21 * x21 + y21 * y21);\n  return {\n    x: (x1 + x2 + x21 / l * r21) / 2,\n    y: (y1 + y2 + y21 / l * r21) / 2,\n    r: (l + r1 + r2) / 2\n  };\n}\n\nfunction encloseBasis3(a, b, c) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x3 = c.x, y3 = c.y, r3 = c.r,\n      a2 = x1 - x2,\n      a3 = x1 - x3,\n      b2 = y1 - y2,\n      b3 = y1 - y3,\n      c2 = r2 - r1,\n      c3 = r3 - r1,\n      d1 = x1 * x1 + y1 * y1 - r1 * r1,\n      d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n      d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n      ab = a3 * b2 - a2 * b3,\n      xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n      xb = (b3 * c2 - b2 * c3) / ab,\n      ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n      yb = (a2 * c3 - a3 * c2) / ab,\n      A = xb * xb + yb * yb - 1,\n      B = 2 * (r1 + xa * xb + ya * yb),\n      C = xa * xa + ya * ya - r1 * r1,\n      r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n  return {\n    x: x1 + xa + xb * r,\n    y: y1 + ya + yb * r,\n    r: r\n  };\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/pack/siblings.js\n\n\nfunction place(b, a, c) {\n  var dx = b.x - a.x, x, a2,\n      dy = b.y - a.y, y, b2,\n      d2 = dx * dx + dy * dy;\n  if (d2) {\n    a2 = a.r + c.r, a2 *= a2;\n    b2 = b.r + c.r, b2 *= b2;\n    if (a2 > b2) {\n      x = (d2 + b2 - a2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n      c.x = b.x - x * dx - y * dy;\n      c.y = b.y - x * dy + y * dx;\n    } else {\n      x = (d2 + a2 - b2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n      c.x = a.x + x * dx - y * dy;\n      c.y = a.y + x * dy + y * dx;\n    }\n  } else {\n    c.x = a.x + c.r;\n    c.y = a.y;\n  }\n}\n\nfunction intersects(a, b) {\n  var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n  var a = node._,\n      b = node.next._,\n      ab = a.r + b.r,\n      dx = (a.x * b.r + b.x * a.r) / ab,\n      dy = (a.y * b.r + b.y * a.r) / ab;\n  return dx * dx + dy * dy;\n}\n\nfunction siblings_Node(circle) {\n  this._ = circle;\n  this.next = null;\n  this.previous = null;\n}\n\nfunction packEnclose(circles) {\n  if (!(n = circles.length)) return 0;\n\n  var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n  // Place the first circle.\n  a = circles[0], a.x = 0, a.y = 0;\n  if (!(n > 1)) return a.r;\n\n  // Place the second circle.\n  b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n  if (!(n > 2)) return a.r + b.r;\n\n  // Place the third circle.\n  place(b, a, c = circles[2]);\n\n  // Initialize the front-chain using the first three circles a, b and c.\n  a = new siblings_Node(a), b = new siblings_Node(b), c = new siblings_Node(c);\n  a.next = c.previous = b;\n  b.next = a.previous = c;\n  c.next = b.previous = a;\n\n  // Attempt to place each remaining circle…\n  pack: for (i = 3; i < n; ++i) {\n    place(a._, b._, c = circles[i]), c = new siblings_Node(c);\n\n    // Find the closest intersecting circle on the front-chain, if any.\n    // “Closeness” is determined by linear distance along the front-chain.\n    // “Ahead” or “behind” is likewise determined by linear distance.\n    j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n    do {\n      if (sj <= sk) {\n        if (intersects(j._, c._)) {\n          b = j, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sj += j._.r, j = j.next;\n      } else {\n        if (intersects(k._, c._)) {\n          a = k, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sk += k._.r, k = k.previous;\n      }\n    } while (j !== k.next);\n\n    // Success! Insert the new circle c between a and b.\n    c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n    // Compute the new closest circle pair to the centroid.\n    aa = score(a);\n    while ((c = c.next) !== b) {\n      if ((ca = score(c)) < aa) {\n        a = c, aa = ca;\n      }\n    }\n    b = a.next;\n  }\n\n  // Compute the enclosing circle of the front chain.\n  a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n  // Translate the circles to put the enclosing circle around the origin.\n  for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n  return c.r;\n}\n\n/* harmony default export */ function siblings(circles) {\n  packEnclose(circles);\n  return circles;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/accessors.js\nfunction optional(f) {\n  return f == null ? null : required(f);\n}\n\nfunction required(f) {\n  if (typeof f !== \"function\") throw new Error;\n  return f;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/constant.js\nfunction constantZero() {\n  return 0;\n}\n\n/* harmony default export */ function constant(x) {\n  return function() {\n    return x;\n  };\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/pack/index.js\n\n\n\n\nfunction defaultRadius(d) {\n  return Math.sqrt(d.value);\n}\n\n/* harmony default export */ function pack() {\n  var radius = null,\n      dx = 1,\n      dy = 1,\n      padding = constantZero;\n\n  function pack(root) {\n    root.x = dx / 2, root.y = dy / 2;\n    if (radius) {\n      root.eachBefore(radiusLeaf(radius))\n          .eachAfter(packChildren(padding, 0.5))\n          .eachBefore(translateChild(1));\n    } else {\n      root.eachBefore(radiusLeaf(defaultRadius))\n          .eachAfter(packChildren(constantZero, 1))\n          .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n          .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n    }\n    return root;\n  }\n\n  pack.radius = function(x) {\n    return arguments.length ? (radius = optional(x), pack) : radius;\n  };\n\n  pack.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n  };\n\n  pack.padding = function(x) {\n    return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n  };\n\n  return pack;\n}\n\nfunction radiusLeaf(radius) {\n  return function(node) {\n    if (!node.children) {\n      node.r = Math.max(0, +radius(node) || 0);\n    }\n  };\n}\n\nfunction packChildren(padding, k) {\n  return function(node) {\n    if (children = node.children) {\n      var children,\n          i,\n          n = children.length,\n          r = padding(node) * k || 0,\n          e;\n\n      if (r) for (i = 0; i < n; ++i) children[i].r += r;\n      e = packEnclose(children);\n      if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n      node.r = e + r;\n    }\n  };\n}\n\nfunction translateChild(k) {\n  return function(node) {\n    var parent = node.parent;\n    node.r *= k;\n    if (parent) {\n      node.x = parent.x + k * node.x;\n      node.y = parent.y + k * node.y;\n    }\n  };\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/treemap/round.js\n/* harmony default export */ function treemap_round(node) {\n  node.x0 = Math.round(node.x0);\n  node.y0 = Math.round(node.y0);\n  node.x1 = Math.round(node.x1);\n  node.y1 = Math.round(node.y1);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/treemap/dice.js\n/* harmony default export */ function dice(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (x1 - x0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.y0 = y0, node.y1 = y1;\n    node.x0 = x0, node.x1 = x0 += node.value * k;\n  }\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/partition.js\n\n\n\n/* harmony default export */ function partition() {\n  var dx = 1,\n      dy = 1,\n      padding = 0,\n      round = false;\n\n  function partition(root) {\n    var n = root.height + 1;\n    root.x0 =\n    root.y0 = padding;\n    root.x1 = dx;\n    root.y1 = dy / n;\n    root.eachBefore(positionNode(dy, n));\n    if (round) root.eachBefore(treemap_round);\n    return root;\n  }\n\n  function positionNode(dy, n) {\n    return function(node) {\n      if (node.children) {\n        dice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n      }\n      var x0 = node.x0,\n          y0 = node.y0,\n          x1 = node.x1 - padding,\n          y1 = node.y1 - padding;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      node.x0 = x0;\n      node.y0 = y0;\n      node.x1 = x1;\n      node.y1 = y1;\n    };\n  }\n\n  partition.round = function(x) {\n    return arguments.length ? (round = !!x, partition) : round;\n  };\n\n  partition.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n  };\n\n  partition.padding = function(x) {\n    return arguments.length ? (padding = +x, partition) : padding;\n  };\n\n  return partition;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/stratify.js\n\n\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n    preroot = {depth: -1},\n    ambiguous = {};\n\nfunction defaultId(d) {\n  return d.id;\n}\n\nfunction defaultParentId(d) {\n  return d.parentId;\n}\n\n/* harmony default export */ function stratify() {\n  var id = defaultId,\n      parentId = defaultParentId;\n\n  function stratify(data) {\n    var d,\n        i,\n        n = data.length,\n        root,\n        parent,\n        node,\n        nodes = new Array(n),\n        nodeId,\n        nodeKey,\n        nodeByKey = {};\n\n    for (i = 0; i < n; ++i) {\n      d = data[i], node = nodes[i] = new Node(d);\n      if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n        nodeKey = keyPrefix + (node.id = nodeId);\n        nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n      }\n    }\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i], nodeId = parentId(data[i], i, data);\n      if (nodeId == null || !(nodeId += \"\")) {\n        if (root) throw new Error(\"multiple roots\");\n        root = node;\n      } else {\n        parent = nodeByKey[keyPrefix + nodeId];\n        if (!parent) throw new Error(\"missing: \" + nodeId);\n        if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n        if (parent.children) parent.children.push(node);\n        else parent.children = [node];\n        node.parent = parent;\n      }\n    }\n\n    if (!root) throw new Error(\"no root\");\n    root.parent = preroot;\n    root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n    root.parent = null;\n    if (n > 0) throw new Error(\"cycle\");\n\n    return root;\n  }\n\n  stratify.id = function(x) {\n    return arguments.length ? (id = required(x), stratify) : id;\n  };\n\n  stratify.parentId = function(x) {\n    return arguments.length ? (parentId = required(x), stratify) : parentId;\n  };\n\n  return stratify;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/tree.js\n\n\nfunction tree_defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n//   return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n  var children = v.children;\n  return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n  var children = v.children;\n  return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n  var change = shift / (wp.i - wm.i);\n  wp.c -= change;\n  wp.s += shift;\n  wm.c += change;\n  wp.z += shift;\n  wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n  var shift = 0,\n      change = 0,\n      children = v.children,\n      i = children.length,\n      w;\n  while (--i >= 0) {\n    w = children[i];\n    w.z += shift;\n    w.m += shift;\n    shift += w.s + (change += w.c);\n  }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n  return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n  this._ = node;\n  this.parent = null;\n  this.children = null;\n  this.A = null; // default ancestor\n  this.a = this; // ancestor\n  this.z = 0; // prelim\n  this.m = 0; // mod\n  this.c = 0; // change\n  this.s = 0; // shift\n  this.t = null; // thread\n  this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n  var tree = new TreeNode(root, 0),\n      node,\n      nodes = [tree],\n      child,\n      children,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if (children = node._.children) {\n      node.children = new Array(n = children.length);\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n        child.parent = node;\n      }\n    }\n  }\n\n  (tree.parent = new TreeNode(null, 0)).children = [tree];\n  return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\n/* harmony default export */ function tree() {\n  var separation = tree_defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = null;\n\n  function tree(root) {\n    var t = treeRoot(root);\n\n    // Compute the layout using Buchheim et al.’s algorithm.\n    t.eachAfter(firstWalk), t.parent.m = -t.z;\n    t.eachBefore(secondWalk);\n\n    // If a fixed node size is specified, scale x and y.\n    if (nodeSize) root.eachBefore(sizeNode);\n\n    // If a fixed tree size is specified, scale x and y based on the extent.\n    // Compute the left-most, right-most, and depth-most nodes for extents.\n    else {\n      var left = root,\n          right = root,\n          bottom = root;\n      root.eachBefore(function(node) {\n        if (node.x < left.x) left = node;\n        if (node.x > right.x) right = node;\n        if (node.depth > bottom.depth) bottom = node;\n      });\n      var s = left === right ? 1 : separation(left, right) / 2,\n          tx = s - left.x,\n          kx = dx / (right.x + s + tx),\n          ky = dy / (bottom.depth || 1);\n      root.eachBefore(function(node) {\n        node.x = (node.x + tx) * kx;\n        node.y = node.depth * ky;\n      });\n    }\n\n    return root;\n  }\n\n  // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n  // applied recursively to the children of v, as well as the function\n  // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n  // node v is placed to the midpoint of its outermost children.\n  function firstWalk(v) {\n    var children = v.children,\n        siblings = v.parent.children,\n        w = v.i ? siblings[v.i - 1] : null;\n    if (children) {\n      executeShifts(v);\n      var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n      if (w) {\n        v.z = w.z + separation(v._, w._);\n        v.m = v.z - midpoint;\n      } else {\n        v.z = midpoint;\n      }\n    } else if (w) {\n      v.z = w.z + separation(v._, w._);\n    }\n    v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n  }\n\n  // Computes all real x-coordinates by summing up the modifiers recursively.\n  function secondWalk(v) {\n    v._.x = v.z + v.parent.m;\n    v.m += v.parent.m;\n  }\n\n  // The core of the algorithm. Here, a new subtree is combined with the\n  // previous subtrees. Threads are used to traverse the inside and outside\n  // contours of the left and right subtree up to the highest common level. The\n  // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n  // superscript o means outside and i means inside, the subscript - means left\n  // subtree and + means right subtree. For summing up the modifiers along the\n  // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n  // nodes of the inside contours conflict, we compute the left one of the\n  // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n  // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n  // Finally, we add a new thread (if necessary).\n  function apportion(v, w, ancestor) {\n    if (w) {\n      var vip = v,\n          vop = v,\n          vim = w,\n          vom = vip.parent.children[0],\n          sip = vip.m,\n          sop = vop.m,\n          sim = vim.m,\n          som = vom.m,\n          shift;\n      while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n        vom = nextLeft(vom);\n        vop = nextRight(vop);\n        vop.a = v;\n        shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n        if (shift > 0) {\n          moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n          sip += shift;\n          sop += shift;\n        }\n        sim += vim.m;\n        sip += vip.m;\n        som += vom.m;\n        sop += vop.m;\n      }\n      if (vim && !nextRight(vop)) {\n        vop.t = vim;\n        vop.m += sim - sop;\n      }\n      if (vip && !nextLeft(vom)) {\n        vom.t = vip;\n        vom.m += sip - som;\n        ancestor = v;\n      }\n    }\n    return ancestor;\n  }\n\n  function sizeNode(node) {\n    node.x *= dx;\n    node.y = node.depth * dy;\n  }\n\n  tree.separation = function(x) {\n    return arguments.length ? (separation = x, tree) : separation;\n  };\n\n  tree.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n  };\n\n  tree.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return tree;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/treemap/slice.js\n/* harmony default export */ function treemap_slice(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (y1 - y0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.x0 = x0, node.x1 = x1;\n    node.y0 = y0, node.y1 = y0 += node.value * k;\n  }\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/treemap/squarify.js\n\n\n\nvar phi = (1 + Math.sqrt(5)) / 2;\n\nfunction squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n  var rows = [],\n      nodes = parent.children,\n      row,\n      nodeValue,\n      i0 = 0,\n      i1 = 0,\n      n = nodes.length,\n      dx, dy,\n      value = parent.value,\n      sumValue,\n      minValue,\n      maxValue,\n      newRatio,\n      minRatio,\n      alpha,\n      beta;\n\n  while (i0 < n) {\n    dx = x1 - x0, dy = y1 - y0;\n\n    // Find the next non-empty node.\n    do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n    minValue = maxValue = sumValue;\n    alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n    beta = sumValue * sumValue * alpha;\n    minRatio = Math.max(maxValue / beta, beta / minValue);\n\n    // Keep adding nodes while the aspect ratio maintains or improves.\n    for (; i1 < n; ++i1) {\n      sumValue += nodeValue = nodes[i1].value;\n      if (nodeValue < minValue) minValue = nodeValue;\n      if (nodeValue > maxValue) maxValue = nodeValue;\n      beta = sumValue * sumValue * alpha;\n      newRatio = Math.max(maxValue / beta, beta / minValue);\n      if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n      minRatio = newRatio;\n    }\n\n    // Position and record the row orientation.\n    rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n    if (row.dice) dice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n    else treemap_slice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n    value -= sumValue, i0 = i1;\n  }\n\n  return rows;\n}\n\n/* harmony default export */ var squarify = ((function custom(ratio) {\n\n  function squarify(parent, x0, y0, x1, y1) {\n    squarifyRatio(ratio, parent, x0, y0, x1, y1);\n  }\n\n  squarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return squarify;\n})(phi));\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/treemap/index.js\n\n\n\n\n\n/* harmony default export */ function treemap() {\n  var tile = squarify,\n      round = false,\n      dx = 1,\n      dy = 1,\n      paddingStack = [0],\n      paddingInner = constantZero,\n      paddingTop = constantZero,\n      paddingRight = constantZero,\n      paddingBottom = constantZero,\n      paddingLeft = constantZero;\n\n  function treemap(root) {\n    root.x0 =\n    root.y0 = 0;\n    root.x1 = dx;\n    root.y1 = dy;\n    root.eachBefore(positionNode);\n    paddingStack = [0];\n    if (round) root.eachBefore(treemap_round);\n    return root;\n  }\n\n  function positionNode(node) {\n    var p = paddingStack[node.depth],\n        x0 = node.x0 + p,\n        y0 = node.y0 + p,\n        x1 = node.x1 - p,\n        y1 = node.y1 - p;\n    if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n    if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n    node.x0 = x0;\n    node.y0 = y0;\n    node.x1 = x1;\n    node.y1 = y1;\n    if (node.children) {\n      p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n      x0 += paddingLeft(node) - p;\n      y0 += paddingTop(node) - p;\n      x1 -= paddingRight(node) - p;\n      y1 -= paddingBottom(node) - p;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      tile(node, x0, y0, x1, y1);\n    }\n  }\n\n  treemap.round = function(x) {\n    return arguments.length ? (round = !!x, treemap) : round;\n  };\n\n  treemap.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n  };\n\n  treemap.tile = function(x) {\n    return arguments.length ? (tile = required(x), treemap) : tile;\n  };\n\n  treemap.padding = function(x) {\n    return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n  };\n\n  treemap.paddingInner = function(x) {\n    return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n  };\n\n  treemap.paddingOuter = function(x) {\n    return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n  };\n\n  treemap.paddingTop = function(x) {\n    return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n  };\n\n  treemap.paddingRight = function(x) {\n    return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n  };\n\n  treemap.paddingBottom = function(x) {\n    return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n  };\n\n  treemap.paddingLeft = function(x) {\n    return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n  };\n\n  return treemap;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/treemap/binary.js\n/* harmony default export */ function binary(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      i, n = nodes.length,\n      sum, sums = new Array(n + 1);\n\n  for (sums[0] = sum = i = 0; i < n; ++i) {\n    sums[i + 1] = sum += nodes[i].value;\n  }\n\n  partition(0, n, parent.value, x0, y0, x1, y1);\n\n  function partition(i, j, value, x0, y0, x1, y1) {\n    if (i >= j - 1) {\n      var node = nodes[i];\n      node.x0 = x0, node.y0 = y0;\n      node.x1 = x1, node.y1 = y1;\n      return;\n    }\n\n    var valueOffset = sums[i],\n        valueTarget = (value / 2) + valueOffset,\n        k = i + 1,\n        hi = j - 1;\n\n    while (k < hi) {\n      var mid = k + hi >>> 1;\n      if (sums[mid] < valueTarget) k = mid + 1;\n      else hi = mid;\n    }\n\n    if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n    var valueLeft = sums[k] - valueOffset,\n        valueRight = value - valueLeft;\n\n    if ((x1 - x0) > (y1 - y0)) {\n      var xk = (x0 * valueRight + x1 * valueLeft) / value;\n      partition(i, k, valueLeft, x0, y0, xk, y1);\n      partition(k, j, valueRight, xk, y0, x1, y1);\n    } else {\n      var yk = (y0 * valueRight + y1 * valueLeft) / value;\n      partition(i, k, valueLeft, x0, y0, x1, yk);\n      partition(k, j, valueRight, x0, yk, x1, y1);\n    }\n  }\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/treemap/sliceDice.js\n\n\n\n/* harmony default export */ function sliceDice(parent, x0, y0, x1, y1) {\n  (parent.depth & 1 ? treemap_slice : dice)(parent, x0, y0, x1, y1);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/treemap/resquarify.js\n\n\n\n\n/* harmony default export */ var resquarify = ((function custom(ratio) {\n\n  function resquarify(parent, x0, y0, x1, y1) {\n    if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n      var rows,\n          row,\n          nodes,\n          i,\n          j = -1,\n          n,\n          m = rows.length,\n          value = parent.value;\n\n      while (++j < m) {\n        row = rows[j], nodes = row.children;\n        for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n        if (row.dice) dice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n        else treemap_slice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n        value -= row.value;\n      }\n    } else {\n      parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n      rows.ratio = ratio;\n    }\n  }\n\n  resquarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return resquarify;\n})(phi));\n\n;// CONCATENATED MODULE: ./node_modules/d3-hierarchy/src/index.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/***/ }),\n\n/***/ 45879:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5702679__) {\n\n\"use strict\";\n\n// EXPORTS\n__nested_webpack_require_5702679__.d(__webpack_exports__, {\n  \"h5\": function() { return /* binding */ linkHorizontal; }\n});\n\n// UNUSED EXPORTS: linkRadial, linkVertical\n\n;// CONCATENATED MODULE: ./node_modules/d3-path/src/path.js\nvar pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction Path() {\n  this._x0 = this._y0 = // start of current subpath\n  this._x1 = this._y1 = null; // end of current subpath\n  this._ = \"\";\n}\n\nfunction path() {\n  return new Path;\n}\n\nPath.prototype = path.prototype = {\n  constructor: Path,\n  moveTo: function(x, y) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n  },\n  closePath: function() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  },\n  lineTo: function(x, y) {\n    this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  quadraticCurveTo: function(x1, y1, x, y) {\n    this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n    this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  arcTo: function(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n    var x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      var x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n      }\n\n      this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n    }\n  },\n  arc: function(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n    var dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._ += \"M\" + x0 + \",\" + y0;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._ += \"L\" + x0 + \",\" + y0;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n    }\n  },\n  rect: function(x, y, w, h) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n  },\n  toString: function() {\n    return this._;\n  }\n};\n\n/* harmony default export */ var src_path = (path);\n\n;// CONCATENATED MODULE: ./node_modules/d3-shape/src/array.js\nvar slice = Array.prototype.slice;\n\n;// CONCATENATED MODULE: ./node_modules/d3-shape/src/constant.js\n/* harmony default export */ function constant(x) {\n  return function constant() {\n    return x;\n  };\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-shape/src/point.js\nfunction point_x(p) {\n  return p[0];\n}\n\nfunction point_y(p) {\n  return p[1];\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-shape/src/link/index.js\n\n\n\n\n\n\nfunction linkSource(d) {\n  return d.source;\n}\n\nfunction linkTarget(d) {\n  return d.target;\n}\n\nfunction link_link(curve) {\n  var source = linkSource,\n      target = linkTarget,\n      x = point_x,\n      y = point_y,\n      context = null;\n\n  function link() {\n    var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n    if (!context) context = buffer = src_path();\n    curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  link.source = function(_) {\n    return arguments.length ? (source = _, link) : source;\n  };\n\n  link.target = function(_) {\n    return arguments.length ? (target = _, link) : target;\n  };\n\n  link.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n  };\n\n  link.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n  };\n\n  link.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), link) : context;\n  };\n\n  return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n  var p0 = pointRadial(x0, y0),\n      p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n      p2 = pointRadial(x1, y0),\n      p3 = pointRadial(x1, y1);\n  context.moveTo(p0[0], p0[1]);\n  context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nfunction linkHorizontal() {\n  return link_link(curveHorizontal);\n}\n\nfunction linkVertical() {\n  return link_link(curveVertical);\n}\n\nfunction linkRadial() {\n  var l = link_link(curveRadial);\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n  return l;\n}\n\n\n/***/ }),\n\n/***/ 84096:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5709765__) {\n\n\"use strict\";\n\n// EXPORTS\n__nested_webpack_require_5709765__.d(__webpack_exports__, {\n  \"i$\": function() { return /* reexport */ timeFormat; },\n  \"Dq\": function() { return /* reexport */ formatLocale; },\n  \"g0\": function() { return /* reexport */ utcFormat; }\n});\n\n// UNUSED EXPORTS: isoFormat, isoParse, timeFormatDefaultLocale, timeParse, utcParse\n\n// EXTERNAL MODULE: ./node_modules/d3-time/src/utcWeek.js\nvar utcWeek = __nested_webpack_require_5709765__(58176);\n// EXTERNAL MODULE: ./node_modules/d3-time/src/utcDay.js\nvar utcDay = __nested_webpack_require_5709765__(48480);\n// EXTERNAL MODULE: ./node_modules/d3-time/src/week.js\nvar src_week = __nested_webpack_require_5709765__(59879);\n// EXTERNAL MODULE: ./node_modules/d3-time/src/day.js\nvar src_day = __nested_webpack_require_5709765__(82301);\n// EXTERNAL MODULE: ./node_modules/d3-time/src/year.js\nvar year = __nested_webpack_require_5709765__(34823);\n// EXTERNAL MODULE: ./node_modules/d3-time/src/utcYear.js\nvar utcYear = __nested_webpack_require_5709765__(79791);\n;// CONCATENATED MODULE: ./node_modules/d3-time-format/src/locale.js\n\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nfunction formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? utcWeek/* utcMonday.ceil */.l6.ceil(week) : (0,utcWeek/* utcMonday */.l6)(week);\n          week = utcDay/* default.offset */.Z.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? src_week/* monday.ceil */.wA.ceil(week) : (0,src_week/* monday */.wA)(week);\n          week = src_day/* default.offset */.Z.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  var map = {}, i = -1, n = names.length;\n  while (++i < n) map[names[i].toLowerCase()] = i;\n  return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + src_day/* default.count */.Z.count((0,year/* default */.Z)(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(src_week/* sunday.count */.OM.count((0,year/* default */.Z)(d) - 1, d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? (0,src_week/* thursday */.bL)(d) : src_week/* thursday.ceil */.bL.ceil(d);\n  return pad(src_week/* thursday.count */.bL.count((0,year/* default */.Z)(d), d) + ((0,year/* default */.Z)(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(src_week/* monday.count */.wA.count((0,year/* default */.Z)(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + utcDay/* default.count */.Z.count((0,utcYear/* default */.Z)(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(utcWeek/* utcSunday.count */.Ox.count((0,utcYear/* default */.Z)(d) - 1, d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? (0,utcWeek/* utcThursday */.hB)(d) : utcWeek/* utcThursday.ceil */.hB.ceil(d);\n  return pad(utcWeek/* utcThursday.count */.hB.count((0,utcYear/* default */.Z)(d), d) + ((0,utcYear/* default */.Z)(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(utcWeek/* utcMonday.count */.l6.count((0,utcYear/* default */.Z)(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-time-format/src/defaultLocale.js\n\n\nvar locale;\nvar timeFormat;\nvar timeParse;\nvar utcFormat;\nvar utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nfunction defaultLocale(definition) {\n  locale = formatLocale(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n\n;// CONCATENATED MODULE: ./node_modules/d3-time-format/src/index.js\n\n\n\n\n\n\n/***/ }),\n\n/***/ 82301:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5729967__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5729967__.d(__webpack_exports__, {\n/* harmony export */   \"a\": function() { return /* binding */ days; }\n/* harmony export */ });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5729967__(30052);\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5729967__(54263);\n\n\n\nvar day = (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z)(function(date) {\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setDate(date.getDate() + step);\n}, function(start, end) {\n  return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__/* .durationMinute */ .yB) / _duration_js__WEBPACK_IMPORTED_MODULE_1__/* .durationDay */ .UD;\n}, function(date) {\n  return date.getDate() - 1;\n});\n\n/* harmony default export */ __webpack_exports__[\"Z\"] = (day);\nvar days = day.range;\n\n\n/***/ }),\n\n/***/ 54263:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5731018__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5731018__.d(__webpack_exports__, {\n/* harmony export */   \"UD\": function() { return /* binding */ durationDay; },\n/* harmony export */   \"Y2\": function() { return /* binding */ durationHour; },\n/* harmony export */   \"Ym\": function() { return /* binding */ durationSecond; },\n/* harmony export */   \"iM\": function() { return /* binding */ durationWeek; },\n/* harmony export */   \"yB\": function() { return /* binding */ durationMinute; }\n/* harmony export */ });\nvar durationSecond = 1e3;\nvar durationMinute = 6e4;\nvar durationHour = 36e5;\nvar durationDay = 864e5;\nvar durationWeek = 6048e5;\n\n\n/***/ }),\n\n/***/ 81041:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5731766__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__nested_webpack_require_5731766__.r(__webpack_exports__);\n\n// EXPORTS\n__nested_webpack_require_5731766__.d(__webpack_exports__, {\n  \"timeDay\": function() { return /* reexport */ day/* default */.Z; },\n  \"timeDays\": function() { return /* reexport */ day/* days */.a; },\n  \"timeFriday\": function() { return /* reexport */ week/* friday */.mC; },\n  \"timeFridays\": function() { return /* reexport */ week/* fridays */.b$; },\n  \"timeHour\": function() { return /* reexport */ src_hour; },\n  \"timeHours\": function() { return /* reexport */ hours; },\n  \"timeInterval\": function() { return /* reexport */ interval/* default */.Z; },\n  \"timeMillisecond\": function() { return /* reexport */ src_millisecond; },\n  \"timeMilliseconds\": function() { return /* reexport */ milliseconds; },\n  \"timeMinute\": function() { return /* reexport */ src_minute; },\n  \"timeMinutes\": function() { return /* reexport */ minutes; },\n  \"timeMonday\": function() { return /* reexport */ week/* monday */.wA; },\n  \"timeMondays\": function() { return /* reexport */ week/* mondays */.bJ; },\n  \"timeMonth\": function() { return /* reexport */ src_month; },\n  \"timeMonths\": function() { return /* reexport */ months; },\n  \"timeSaturday\": function() { return /* reexport */ week/* saturday */.EY; },\n  \"timeSaturdays\": function() { return /* reexport */ week/* saturdays */.Ff; },\n  \"timeSecond\": function() { return /* reexport */ src_second; },\n  \"timeSeconds\": function() { return /* reexport */ seconds; },\n  \"timeSunday\": function() { return /* reexport */ week/* sunday */.OM; },\n  \"timeSundays\": function() { return /* reexport */ week/* sundays */.vm; },\n  \"timeThursday\": function() { return /* reexport */ week/* thursday */.bL; },\n  \"timeThursdays\": function() { return /* reexport */ week/* thursdays */.$t; },\n  \"timeTuesday\": function() { return /* reexport */ week/* tuesday */.sy; },\n  \"timeTuesdays\": function() { return /* reexport */ week/* tuesdays */.aU; },\n  \"timeWednesday\": function() { return /* reexport */ week/* wednesday */.zg; },\n  \"timeWednesdays\": function() { return /* reexport */ week/* wednesdays */.Ld; },\n  \"timeWeek\": function() { return /* reexport */ week/* sunday */.OM; },\n  \"timeWeeks\": function() { return /* reexport */ week/* sundays */.vm; },\n  \"timeYear\": function() { return /* reexport */ year/* default */.Z; },\n  \"timeYears\": function() { return /* reexport */ year/* years */.g; },\n  \"utcDay\": function() { return /* reexport */ utcDay/* default */.Z; },\n  \"utcDays\": function() { return /* reexport */ utcDay/* utcDays */.y; },\n  \"utcFriday\": function() { return /* reexport */ utcWeek/* utcFriday */.QQ; },\n  \"utcFridays\": function() { return /* reexport */ utcWeek/* utcFridays */.fz; },\n  \"utcHour\": function() { return /* reexport */ src_utcHour; },\n  \"utcHours\": function() { return /* reexport */ utcHours; },\n  \"utcMillisecond\": function() { return /* reexport */ src_millisecond; },\n  \"utcMilliseconds\": function() { return /* reexport */ milliseconds; },\n  \"utcMinute\": function() { return /* reexport */ src_utcMinute; },\n  \"utcMinutes\": function() { return /* reexport */ utcMinutes; },\n  \"utcMonday\": function() { return /* reexport */ utcWeek/* utcMonday */.l6; },\n  \"utcMondays\": function() { return /* reexport */ utcWeek/* utcMondays */.$3; },\n  \"utcMonth\": function() { return /* reexport */ src_utcMonth; },\n  \"utcMonths\": function() { return /* reexport */ utcMonths; },\n  \"utcSaturday\": function() { return /* reexport */ utcWeek/* utcSaturday */.g4; },\n  \"utcSaturdays\": function() { return /* reexport */ utcWeek/* utcSaturdays */.Q_; },\n  \"utcSecond\": function() { return /* reexport */ src_second; },\n  \"utcSeconds\": function() { return /* reexport */ seconds; },\n  \"utcSunday\": function() { return /* reexport */ utcWeek/* utcSunday */.Ox; },\n  \"utcSundays\": function() { return /* reexport */ utcWeek/* utcSundays */.SU; },\n  \"utcThursday\": function() { return /* reexport */ utcWeek/* utcThursday */.hB; },\n  \"utcThursdays\": function() { return /* reexport */ utcWeek/* utcThursdays */.xj; },\n  \"utcTuesday\": function() { return /* reexport */ utcWeek/* utcTuesday */.J1; },\n  \"utcTuesdays\": function() { return /* reexport */ utcWeek/* utcTuesdays */.DK; },\n  \"utcWednesday\": function() { return /* reexport */ utcWeek/* utcWednesday */.b3; },\n  \"utcWednesdays\": function() { return /* reexport */ utcWeek/* utcWednesdays */.uy; },\n  \"utcWeek\": function() { return /* reexport */ utcWeek/* utcSunday */.Ox; },\n  \"utcWeeks\": function() { return /* reexport */ utcWeek/* utcSundays */.SU; },\n  \"utcYear\": function() { return /* reexport */ utcYear/* default */.Z; },\n  \"utcYears\": function() { return /* reexport */ utcYear/* utcYears */.D; }\n});\n\n// EXTERNAL MODULE: ./node_modules/d3-time/src/interval.js\nvar interval = __nested_webpack_require_5731766__(30052);\n;// CONCATENATED MODULE: ./node_modules/d3-time/src/millisecond.js\n\n\nvar millisecond = (0,interval/* default */.Z)(function() {\n  // noop\n}, function(date, step) {\n  date.setTime(+date + step);\n}, function(start, end) {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return (0,interval/* default */.Z)(function(date) {\n    date.setTime(Math.floor(date / k) * k);\n  }, function(date, step) {\n    date.setTime(+date + step * k);\n  }, function(start, end) {\n    return (end - start) / k;\n  });\n};\n\n/* harmony default export */ var src_millisecond = (millisecond);\nvar milliseconds = millisecond.range;\n\n// EXTERNAL MODULE: ./node_modules/d3-time/src/duration.js\nvar duration = __nested_webpack_require_5731766__(54263);\n;// CONCATENATED MODULE: ./node_modules/d3-time/src/second.js\n\n\n\nvar second = (0,interval/* default */.Z)(function(date) {\n  date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n  date.setTime(+date + step * duration/* durationSecond */.Ym);\n}, function(start, end) {\n  return (end - start) / duration/* durationSecond */.Ym;\n}, function(date) {\n  return date.getUTCSeconds();\n});\n\n/* harmony default export */ var src_second = (second);\nvar seconds = second.range;\n\n;// CONCATENATED MODULE: ./node_modules/d3-time/src/minute.js\n\n\n\nvar minute = (0,interval/* default */.Z)(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * duration/* durationSecond */.Ym);\n}, function(date, step) {\n  date.setTime(+date + step * duration/* durationMinute */.yB);\n}, function(start, end) {\n  return (end - start) / duration/* durationMinute */.yB;\n}, function(date) {\n  return date.getMinutes();\n});\n\n/* harmony default export */ var src_minute = (minute);\nvar minutes = minute.range;\n\n;// CONCATENATED MODULE: ./node_modules/d3-time/src/hour.js\n\n\n\nvar hour = (0,interval/* default */.Z)(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * duration/* durationSecond */.Ym - date.getMinutes() * duration/* durationMinute */.yB);\n}, function(date, step) {\n  date.setTime(+date + step * duration/* durationHour */.Y2);\n}, function(start, end) {\n  return (end - start) / duration/* durationHour */.Y2;\n}, function(date) {\n  return date.getHours();\n});\n\n/* harmony default export */ var src_hour = (hour);\nvar hours = hour.range;\n\n// EXTERNAL MODULE: ./node_modules/d3-time/src/day.js\nvar day = __nested_webpack_require_5731766__(82301);\n// EXTERNAL MODULE: ./node_modules/d3-time/src/week.js\nvar week = __nested_webpack_require_5731766__(59879);\n;// CONCATENATED MODULE: ./node_modules/d3-time/src/month.js\n\n\nvar month = (0,interval/* default */.Z)(function(date) {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n  return date.getMonth();\n});\n\n/* harmony default export */ var src_month = (month);\nvar months = month.range;\n\n// EXTERNAL MODULE: ./node_modules/d3-time/src/year.js\nvar year = __nested_webpack_require_5731766__(34823);\n;// CONCATENATED MODULE: ./node_modules/d3-time/src/utcMinute.js\n\n\n\nvar utcMinute = (0,interval/* default */.Z)(function(date) {\n  date.setUTCSeconds(0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * duration/* durationMinute */.yB);\n}, function(start, end) {\n  return (end - start) / duration/* durationMinute */.yB;\n}, function(date) {\n  return date.getUTCMinutes();\n});\n\n/* harmony default export */ var src_utcMinute = (utcMinute);\nvar utcMinutes = utcMinute.range;\n\n;// CONCATENATED MODULE: ./node_modules/d3-time/src/utcHour.js\n\n\n\nvar utcHour = (0,interval/* default */.Z)(function(date) {\n  date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * duration/* durationHour */.Y2);\n}, function(start, end) {\n  return (end - start) / duration/* durationHour */.Y2;\n}, function(date) {\n  return date.getUTCHours();\n});\n\n/* harmony default export */ var src_utcHour = (utcHour);\nvar utcHours = utcHour.range;\n\n// EXTERNAL MODULE: ./node_modules/d3-time/src/utcDay.js\nvar utcDay = __nested_webpack_require_5731766__(48480);\n// EXTERNAL MODULE: ./node_modules/d3-time/src/utcWeek.js\nvar utcWeek = __nested_webpack_require_5731766__(58176);\n;// CONCATENATED MODULE: ./node_modules/d3-time/src/utcMonth.js\n\n\nvar utcMonth = (0,interval/* default */.Z)(function(date) {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n  return date.getUTCMonth();\n});\n\n/* harmony default export */ var src_utcMonth = (utcMonth);\nvar utcMonths = utcMonth.range;\n\n// EXTERNAL MODULE: ./node_modules/d3-time/src/utcYear.js\nvar utcYear = __nested_webpack_require_5731766__(79791);\n;// CONCATENATED MODULE: ./node_modules/d3-time/src/index.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/***/ }),\n\n/***/ 30052:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5741779__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5741779__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": function() { return /* binding */ newInterval; }\n/* harmony export */ });\nvar t0 = new Date,\n    t1 = new Date;\n\nfunction newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = function(date) {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n\n\n/***/ }),\n\n/***/ 48480:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5744222__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5744222__.d(__webpack_exports__, {\n/* harmony export */   \"y\": function() { return /* binding */ utcDays; }\n/* harmony export */ });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5744222__(30052);\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5744222__(54263);\n\n\n\nvar utcDay = (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z)(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__/* .durationDay */ .UD;\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\n\n/* harmony default export */ __webpack_exports__[\"Z\"] = (utcDay);\nvar utcDays = utcDay.range;\n\n\n/***/ }),\n\n/***/ 58176:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5745175__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5745175__.d(__webpack_exports__, {\n/* harmony export */   \"$3\": function() { return /* binding */ utcMondays; },\n/* harmony export */   \"DK\": function() { return /* binding */ utcTuesdays; },\n/* harmony export */   \"J1\": function() { return /* binding */ utcTuesday; },\n/* harmony export */   \"Ox\": function() { return /* binding */ utcSunday; },\n/* harmony export */   \"QQ\": function() { return /* binding */ utcFriday; },\n/* harmony export */   \"Q_\": function() { return /* binding */ utcSaturdays; },\n/* harmony export */   \"SU\": function() { return /* binding */ utcSundays; },\n/* harmony export */   \"b3\": function() { return /* binding */ utcWednesday; },\n/* harmony export */   \"fz\": function() { return /* binding */ utcFridays; },\n/* harmony export */   \"g4\": function() { return /* binding */ utcSaturday; },\n/* harmony export */   \"hB\": function() { return /* binding */ utcThursday; },\n/* harmony export */   \"l6\": function() { return /* binding */ utcMonday; },\n/* harmony export */   \"uy\": function() { return /* binding */ utcWednesdays; },\n/* harmony export */   \"xj\": function() { return /* binding */ utcThursdays; }\n/* harmony export */ });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5745175__(30052);\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5745175__(54263);\n\n\n\nfunction utcWeekday(i) {\n  return (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z)(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__/* .durationWeek */ .iM;\n  });\n}\n\nvar utcSunday = utcWeekday(0);\nvar utcMonday = utcWeekday(1);\nvar utcTuesday = utcWeekday(2);\nvar utcWednesday = utcWeekday(3);\nvar utcThursday = utcWeekday(4);\nvar utcFriday = utcWeekday(5);\nvar utcSaturday = utcWeekday(6);\n\nvar utcSundays = utcSunday.range;\nvar utcMondays = utcMonday.range;\nvar utcTuesdays = utcTuesday.range;\nvar utcWednesdays = utcWednesday.range;\nvar utcThursdays = utcThursday.range;\nvar utcFridays = utcFriday.range;\nvar utcSaturdays = utcSaturday.range;\n\n\n/***/ }),\n\n/***/ 79791:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5747602__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5747602__.d(__webpack_exports__, {\n/* harmony export */   \"D\": function() { return /* binding */ utcYears; }\n/* harmony export */ });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5747602__(30052);\n\n\nvar utcYear = (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z)(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z)(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"Z\"] = (utcYear);\nvar utcYears = utcYear.range;\n\n\n/***/ }),\n\n/***/ 59879:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5748914__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5748914__.d(__webpack_exports__, {\n/* harmony export */   \"$t\": function() { return /* binding */ thursdays; },\n/* harmony export */   \"EY\": function() { return /* binding */ saturday; },\n/* harmony export */   \"Ff\": function() { return /* binding */ saturdays; },\n/* harmony export */   \"Ld\": function() { return /* binding */ wednesdays; },\n/* harmony export */   \"OM\": function() { return /* binding */ sunday; },\n/* harmony export */   \"aU\": function() { return /* binding */ tuesdays; },\n/* harmony export */   \"b$\": function() { return /* binding */ fridays; },\n/* harmony export */   \"bJ\": function() { return /* binding */ mondays; },\n/* harmony export */   \"bL\": function() { return /* binding */ thursday; },\n/* harmony export */   \"mC\": function() { return /* binding */ friday; },\n/* harmony export */   \"sy\": function() { return /* binding */ tuesday; },\n/* harmony export */   \"vm\": function() { return /* binding */ sundays; },\n/* harmony export */   \"wA\": function() { return /* binding */ monday; },\n/* harmony export */   \"zg\": function() { return /* binding */ wednesday; }\n/* harmony export */ });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5748914__(30052);\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_5748914__(54263);\n\n\n\nfunction weekday(i) {\n  return (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z)(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__/* .durationMinute */ .yB) / _duration_js__WEBPACK_IMPORTED_MODULE_1__/* .durationWeek */ .iM;\n  });\n}\n\nvar sunday = weekday(0);\nvar monday = weekday(1);\nvar tuesday = weekday(2);\nvar wednesday = weekday(3);\nvar thursday = weekday(4);\nvar friday = weekday(5);\nvar saturday = weekday(6);\n\nvar sundays = sunday.range;\nvar mondays = monday.range;\nvar tuesdays = tuesday.range;\nvar wednesdays = wednesday.range;\nvar thursdays = thursday.range;\nvar fridays = friday.range;\nvar saturdays = saturday.range;\n\n\n/***/ }),\n\n/***/ 34823:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_5751319__) {\n\n\"use strict\";\n/* harmony export */ __nested_webpack_require_5751319__.d(__webpack_exports__, {\n/* harmony export */   \"g\": function() { return /* binding */ years; }\n/* harmony export */ });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_5751319__(30052);\n\n\nvar year = (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z)(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .Z)(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"Z\"] = (year);\nvar years = year.range;\n\n\n/***/ }),\n\n/***/ 17045:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5752562__) {\n\n\"use strict\";\n\n\nvar keys = __nested_webpack_require_5752562__(8709);\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n\n\n/***/ }),\n\n/***/ 46775:\n/***/ (function(module) {\n\nmodule.exports = function () {\n    for (var i = 0; i < arguments.length; i++) {\n        if (arguments[i] !== undefined) return arguments[i];\n    }\n};\n\n\n/***/ }),\n\n/***/ 53545:\n/***/ (function(module) {\n\n\"use strict\";\n\r\n\r\n\r\nmodule.exports = kerning\r\n\r\n\r\nvar canvas = kerning.canvas = document.createElement('canvas')\r\nvar ctx = canvas.getContext('2d')\r\nvar asciiPairs = createPairs([32, 126])\r\n\r\nkerning.createPairs = createPairs\r\nkerning.ascii = asciiPairs\r\n\r\n\r\nfunction kerning (family, o) {\r\n\tif (Array.isArray(family)) family = family.join(', ')\r\n\r\n\tvar table = {}, pairs, fs = 16, threshold = .05\r\n\r\n\tif (o) {\r\n\t\tif (o.length === 2 && typeof o[0] === 'number') {\r\n\t\t\tpairs = createPairs(o)\r\n\t\t}\r\n\t\telse if (Array.isArray(o)) {\r\n\t\t\tpairs = o\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (o.o) pairs = createPairs(o.o)\r\n\t\t\telse if (o.pairs) pairs = o.pairs\r\n\r\n\t\t\tif (o.fontSize) fs = o.fontSize\r\n\t\t\tif (o.threshold != null) threshold = o.threshold\r\n\t\t}\r\n\t}\r\n\r\n\tif (!pairs) pairs = asciiPairs\r\n\r\n\tctx.font = fs + 'px ' + family\r\n\r\n\tfor (var i = 0; i < pairs.length; i++) {\r\n\t\tvar pair = pairs[i]\r\n\t\tvar width = ctx.measureText(pair[0]).width + ctx.measureText(pair[1]).width\r\n\t\tvar kerningWidth = ctx.measureText(pair).width\r\n\t\tif (Math.abs(width - kerningWidth) > fs * threshold) {\r\n\t\t\tvar emWidth = (kerningWidth - width) / fs\r\n\t\t\ttable[pair] = emWidth * 1000\r\n\t\t}\r\n\t}\r\n\r\n\treturn table\r\n}\r\n\r\n\r\nfunction createPairs (range) {\r\n\tvar pairs = []\r\n\r\n    for (var i = range[0]; i <= range[1]; i++) {\r\n\t\tvar leftChar = String.fromCharCode(i)\r\n\t\tfor (var j = range[0]; j < range[1]; j++) {\r\n\t\t\tvar rightChar = String.fromCharCode(j)\r\n\t\t\tvar pair = leftChar + rightChar\r\n\r\n\t\t\tpairs.push(pair)\r\n\t\t}\r\n\t}\r\n\r\n\treturn pairs\r\n}\r\n\n\n/***/ }),\n\n/***/ 31457:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5756021__) {\n\nvar abs = __nested_webpack_require_5756021__(65185)\nvar normalize = __nested_webpack_require_5756021__(18625)\n\nvar methods = {\n  'M': 'moveTo',\n  'C': 'bezierCurveTo'\n}\n\nmodule.exports = function(context, segments) {\n  context.beginPath()\n\n  // Make path easy to reproduce.\n  normalize(abs(segments)).forEach(\n    function(segment) {\n      var command = segment[0]\n      var args = segment.slice(1)\n\n      // Convert the path command to a context method.\n      context[methods[command]].apply(context, args)\n    }\n  )\n\n  context.closePath()\n}\n\n\n/***/ }),\n\n/***/ 90660:\n/***/ (function(module) {\n\nmodule.exports = function(dtype) {\n  switch (dtype) {\n    case 'int8':\n      return Int8Array\n    case 'int16':\n      return Int16Array\n    case 'int32':\n      return Int32Array\n    case 'uint8':\n      return Uint8Array\n    case 'uint16':\n      return Uint16Array\n    case 'uint32':\n      return Uint32Array\n    case 'float32':\n      return Float32Array\n    case 'float64':\n      return Float64Array\n    case 'array':\n      return Array\n    case 'uint8_clamped':\n      return Uint8ClampedArray\n  }\n}\n\n\n/***/ }),\n\n/***/ 12129:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nfunction dupe_array(count, value, i) {\n  var c = count[i]|0\n  if(c <= 0) {\n    return []\n  }\n  var result = new Array(c), j\n  if(i === count.length-1) {\n    for(j=0; j<c; ++j) {\n      result[j] = value\n    }\n  } else {\n    for(j=0; j<c; ++j) {\n      result[j] = dupe_array(count, value, i+1)\n    }\n  }\n  return result\n}\n\nfunction dupe_number(count, value) {\n  var result, i\n  result = new Array(count)\n  for(i=0; i<count; ++i) {\n    result[i] = value\n  }\n  return result\n}\n\nfunction dupe(count, value) {\n  if(typeof value === \"undefined\") {\n    value = 0\n  }\n  switch(typeof count) {\n    case \"number\":\n      if(count > 0) {\n        return dupe_number(count|0, value)\n      }\n    break\n    case \"object\":\n      if(typeof (count.length) === \"number\") {\n        return dupe_array(count, value, 0)\n      }\n    break\n  }\n  return []\n}\n\nmodule.exports = dupe\n\n/***/ }),\n\n/***/ 11474:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = earcut;\nmodule.exports[\"default\"] = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n    dim = dim || 2;\n\n    var hasHoles = holeIndices && holeIndices.length,\n        outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n        outerNode = linkedList(data, 0, outerLen, dim, true),\n        triangles = [];\n\n    if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n    var minX, minY, maxX, maxY, x, y, invSize;\n\n    if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n    // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n    if (data.length > 80 * dim) {\n        minX = maxX = data[0];\n        minY = maxY = data[1];\n\n        for (var i = dim; i < outerLen; i += dim) {\n            x = data[i];\n            y = data[i + 1];\n            if (x < minX) minX = x;\n            if (y < minY) minY = y;\n            if (x > maxX) maxX = x;\n            if (y > maxY) maxY = y;\n        }\n\n        // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n        invSize = Math.max(maxX - minX, maxY - minY);\n        invSize = invSize !== 0 ? 1 / invSize : 0;\n    }\n\n    earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n    return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n    var i, last;\n\n    if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n        for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n    } else {\n        for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n    }\n\n    if (last && equals(last, last.next)) {\n        removeNode(last);\n        last = last.next;\n    }\n\n    return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n    if (!start) return start;\n    if (!end) end = start;\n\n    var p = start,\n        again;\n    do {\n        again = false;\n\n        if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n            removeNode(p);\n            p = end = p.prev;\n            if (p === p.next) break;\n            again = true;\n\n        } else {\n            p = p.next;\n        }\n    } while (again || p !== end);\n\n    return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n    if (!ear) return;\n\n    // interlink polygon nodes in z-order\n    if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n    var stop = ear,\n        prev, next;\n\n    // iterate through ears, slicing them one by one\n    while (ear.prev !== ear.next) {\n        prev = ear.prev;\n        next = ear.next;\n\n        if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n            // cut off the triangle\n            triangles.push(prev.i / dim);\n            triangles.push(ear.i / dim);\n            triangles.push(next.i / dim);\n\n            removeNode(ear);\n\n            // skipping the next vertex leads to less sliver triangles\n            ear = next.next;\n            stop = next.next;\n\n            continue;\n        }\n\n        ear = next;\n\n        // if we looped through the whole remaining polygon and can't find any more ears\n        if (ear === stop) {\n            // try filtering points and slicing again\n            if (!pass) {\n                earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n            // if this didn't work, try curing all small self-intersections locally\n            } else if (pass === 1) {\n                ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n                earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n            // as a last resort, try splitting the remaining polygon into two\n            } else if (pass === 2) {\n                splitEarcut(ear, triangles, dim, minX, minY, invSize);\n            }\n\n            break;\n        }\n    }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n    var a = ear.prev,\n        b = ear,\n        c = ear.next;\n\n    if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n    // now make sure we don't have other points inside the potential ear\n    var p = ear.next.next;\n\n    while (p !== ear.prev) {\n        if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n            area(p.prev, p, p.next) >= 0) return false;\n        p = p.next;\n    }\n\n    return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n    var a = ear.prev,\n        b = ear,\n        c = ear.next;\n\n    if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n    // triangle bbox; min & max are calculated like this for speed\n    var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),\n        minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),\n        maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),\n        maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);\n\n    // z-order range for the current triangle bbox;\n    var minZ = zOrder(minTX, minTY, minX, minY, invSize),\n        maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n    var p = ear.prevZ,\n        n = ear.nextZ;\n\n    // look for points inside the triangle in both directions\n    while (p && p.z >= minZ && n && n.z <= maxZ) {\n        if (p !== ear.prev && p !== ear.next &&\n            pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n            area(p.prev, p, p.next) >= 0) return false;\n        p = p.prevZ;\n\n        if (n !== ear.prev && n !== ear.next &&\n            pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n            area(n.prev, n, n.next) >= 0) return false;\n        n = n.nextZ;\n    }\n\n    // look for remaining points in decreasing z-order\n    while (p && p.z >= minZ) {\n        if (p !== ear.prev && p !== ear.next &&\n            pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n            area(p.prev, p, p.next) >= 0) return false;\n        p = p.prevZ;\n    }\n\n    // look for remaining points in increasing z-order\n    while (n && n.z <= maxZ) {\n        if (n !== ear.prev && n !== ear.next &&\n            pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n            area(n.prev, n, n.next) >= 0) return false;\n        n = n.nextZ;\n    }\n\n    return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n    var p = start;\n    do {\n        var a = p.prev,\n            b = p.next.next;\n\n        if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n            triangles.push(a.i / dim);\n            triangles.push(p.i / dim);\n            triangles.push(b.i / dim);\n\n            // remove two nodes involved\n            removeNode(p);\n            removeNode(p.next);\n\n            p = start = b;\n        }\n        p = p.next;\n    } while (p !== start);\n\n    return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n    // look for a valid diagonal that divides the polygon into two\n    var a = start;\n    do {\n        var b = a.next.next;\n        while (b !== a.prev) {\n            if (a.i !== b.i && isValidDiagonal(a, b)) {\n                // split the polygon in two by the diagonal\n                var c = splitPolygon(a, b);\n\n                // filter colinear points around the cuts\n                a = filterPoints(a, a.next);\n                c = filterPoints(c, c.next);\n\n                // run earcut on each half\n                earcutLinked(a, triangles, dim, minX, minY, invSize);\n                earcutLinked(c, triangles, dim, minX, minY, invSize);\n                return;\n            }\n            b = b.next;\n        }\n        a = a.next;\n    } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n    var queue = [],\n        i, len, start, end, list;\n\n    for (i = 0, len = holeIndices.length; i < len; i++) {\n        start = holeIndices[i] * dim;\n        end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n        list = linkedList(data, start, end, dim, false);\n        if (list === list.next) list.steiner = true;\n        queue.push(getLeftmost(list));\n    }\n\n    queue.sort(compareX);\n\n    // process holes from left to right\n    for (i = 0; i < queue.length; i++) {\n        eliminateHole(queue[i], outerNode);\n        outerNode = filterPoints(outerNode, outerNode.next);\n    }\n\n    return outerNode;\n}\n\nfunction compareX(a, b) {\n    return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n    outerNode = findHoleBridge(hole, outerNode);\n    if (outerNode) {\n        var b = splitPolygon(outerNode, hole);\n\n        // filter collinear points around the cuts\n        filterPoints(outerNode, outerNode.next);\n        filterPoints(b, b.next);\n    }\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n    var p = outerNode,\n        hx = hole.x,\n        hy = hole.y,\n        qx = -Infinity,\n        m;\n\n    // find a segment intersected by a ray from the hole's leftmost point to the left;\n    // segment's endpoint with lesser x will be potential connection point\n    do {\n        if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n            var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n            if (x <= hx && x > qx) {\n                qx = x;\n                if (x === hx) {\n                    if (hy === p.y) return p;\n                    if (hy === p.next.y) return p.next;\n                }\n                m = p.x < p.next.x ? p : p.next;\n            }\n        }\n        p = p.next;\n    } while (p !== outerNode);\n\n    if (!m) return null;\n\n    if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\n    // look for points inside the triangle of hole point, segment intersection and endpoint;\n    // if there are no points found, we have a valid connection;\n    // otherwise choose the point of the minimum angle with the ray as connection point\n\n    var stop = m,\n        mx = m.x,\n        my = m.y,\n        tanMin = Infinity,\n        tan;\n\n    p = m;\n\n    do {\n        if (hx >= p.x && p.x >= mx && hx !== p.x &&\n                pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n            tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n            if (locallyInside(p, hole) &&\n                (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n                m = p;\n                tanMin = tan;\n            }\n        }\n\n        p = p.next;\n    } while (p !== stop);\n\n    return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n    return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n    var p = start;\n    do {\n        if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n        p.prevZ = p.prev;\n        p.nextZ = p.next;\n        p = p.next;\n    } while (p !== start);\n\n    p.prevZ.nextZ = null;\n    p.prevZ = null;\n\n    sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n    var i, p, q, e, tail, numMerges, pSize, qSize,\n        inSize = 1;\n\n    do {\n        p = list;\n        list = null;\n        tail = null;\n        numMerges = 0;\n\n        while (p) {\n            numMerges++;\n            q = p;\n            pSize = 0;\n            for (i = 0; i < inSize; i++) {\n                pSize++;\n                q = q.nextZ;\n                if (!q) break;\n            }\n            qSize = inSize;\n\n            while (pSize > 0 || (qSize > 0 && q)) {\n\n                if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n                    e = p;\n                    p = p.nextZ;\n                    pSize--;\n                } else {\n                    e = q;\n                    q = q.nextZ;\n                    qSize--;\n                }\n\n                if (tail) tail.nextZ = e;\n                else list = e;\n\n                e.prevZ = tail;\n                tail = e;\n            }\n\n            p = q;\n        }\n\n        tail.nextZ = null;\n        inSize *= 2;\n\n    } while (numMerges > 1);\n\n    return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n    // coords are transformed into non-negative 15-bit integer range\n    x = 32767 * (x - minX) * invSize;\n    y = 32767 * (y - minY) * invSize;\n\n    x = (x | (x << 8)) & 0x00FF00FF;\n    x = (x | (x << 4)) & 0x0F0F0F0F;\n    x = (x | (x << 2)) & 0x33333333;\n    x = (x | (x << 1)) & 0x55555555;\n\n    y = (y | (y << 8)) & 0x00FF00FF;\n    y = (y | (y << 4)) & 0x0F0F0F0F;\n    y = (y | (y << 2)) & 0x33333333;\n    y = (y | (y << 1)) & 0x55555555;\n\n    return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n    var p = start,\n        leftmost = start;\n    do {\n        if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n        p = p.next;\n    } while (p !== start);\n\n    return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n    return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n           (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n           (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n    return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n           (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n            (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n            equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n    return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n    return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n    var o1 = sign(area(p1, q1, p2));\n    var o2 = sign(area(p1, q1, q2));\n    var o3 = sign(area(p2, q2, p1));\n    var o4 = sign(area(p2, q2, q1));\n\n    if (o1 !== o2 && o3 !== o4) return true; // general case\n\n    if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n    if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n    if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n    if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n    return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n    return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n    return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n    var p = a;\n    do {\n        if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n                intersects(p, p.next, a, b)) return true;\n        p = p.next;\n    } while (p !== a);\n\n    return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n    return area(a.prev, a, a.next) < 0 ?\n        area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n        area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n    var p = a,\n        inside = false,\n        px = (a.x + b.x) / 2,\n        py = (a.y + b.y) / 2;\n    do {\n        if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n                (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n            inside = !inside;\n        p = p.next;\n    } while (p !== a);\n\n    return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n    var a2 = new Node(a.i, a.x, a.y),\n        b2 = new Node(b.i, b.x, b.y),\n        an = a.next,\n        bp = b.prev;\n\n    a.next = b;\n    b.prev = a;\n\n    a2.next = an;\n    an.prev = a2;\n\n    b2.next = a2;\n    a2.prev = b2;\n\n    bp.next = b2;\n    b2.prev = bp;\n\n    return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n    var p = new Node(i, x, y);\n\n    if (!last) {\n        p.prev = p;\n        p.next = p;\n\n    } else {\n        p.next = last.next;\n        p.prev = last;\n        last.next.prev = p;\n        last.next = p;\n    }\n    return p;\n}\n\nfunction removeNode(p) {\n    p.next.prev = p.prev;\n    p.prev.next = p.next;\n\n    if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n    if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n    // vertex index in coordinates array\n    this.i = i;\n\n    // vertex coordinates\n    this.x = x;\n    this.y = y;\n\n    // previous and next vertex nodes in a polygon ring\n    this.prev = null;\n    this.next = null;\n\n    // z-order curve value\n    this.z = null;\n\n    // previous and next nodes in z-order\n    this.prevZ = null;\n    this.nextZ = null;\n\n    // indicates whether this is a steiner point\n    this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n    var hasHoles = holeIndices && holeIndices.length;\n    var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n    var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n    if (hasHoles) {\n        for (var i = 0, len = holeIndices.length; i < len; i++) {\n            var start = holeIndices[i] * dim;\n            var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n            polygonArea -= Math.abs(signedArea(data, start, end, dim));\n        }\n    }\n\n    var trianglesArea = 0;\n    for (i = 0; i < triangles.length; i += 3) {\n        var a = triangles[i] * dim;\n        var b = triangles[i + 1] * dim;\n        var c = triangles[i + 2] * dim;\n        trianglesArea += Math.abs(\n            (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n            (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n    }\n\n    return polygonArea === 0 && trianglesArea === 0 ? 0 :\n        Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n    var sum = 0;\n    for (var i = start, j = end - dim; i < end; i += dim) {\n        sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n        j = i;\n    }\n    return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n    var dim = data[0][0].length,\n        result = {vertices: [], holes: [], dimensions: dim},\n        holeIndex = 0;\n\n    for (var i = 0; i < data.length; i++) {\n        for (var j = 0; j < data[i].length; j++) {\n            for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n        }\n        if (i > 0) {\n            holeIndex += data[i - 1].length;\n            result.holes.push(holeIndex);\n        }\n    }\n    return result;\n};\n\n\n/***/ }),\n\n/***/ 2502:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5778588__) {\n\nvar tarjan = __nested_webpack_require_5778588__(68664);\n\nmodule.exports = function findCircuits(edges, cb) {\n    var circuits = []; // Output\n\n    var stack = [];\n    var blocked = [];\n    var B = {};\n    var Ak = [];\n    var s;\n\n    function unblock(u) {\n        blocked[u] = false;\n        if(B.hasOwnProperty(u)) {\n            Object.keys(B[u]).forEach(function(w) {\n                delete B[u][w];\n                if(blocked[w]) {unblock(w);}\n            });\n        }\n    }\n\n    function circuit(v) {\n        var found = false;\n\n        stack.push(v);\n        blocked[v] = true;\n\n        // L1\n        var i;\n        var w;\n        for(i = 0; i < Ak[v].length; i++) {\n            w = Ak[v][i];\n            if(w === s) {\n                output(s, stack);\n                found = true;\n            } else if(!blocked[w]) {\n                found = circuit(w);\n            }\n        }\n\n        // L2\n        if(found) {\n            unblock(v);\n        } else {\n            for(i = 0; i < Ak[v].length; i++) {\n                w = Ak[v][i];\n                var entry = B[w];\n\n                if(!entry) {\n                    entry = {};\n                    B[w] = entry;\n                }\n\n                entry[w] = true;\n            }\n        }\n        stack.pop();\n        return found;\n    }\n\n    function output(start, stack) {\n        var cycle = [].concat(stack).concat(start);\n        if(cb) {\n            cb(circuit);\n        } else {\n            circuits.push(cycle);\n        }\n    }\n\n    function subgraph(minId) {\n      // Remove edges with indice smaller than minId\n        for(var i = 0; i < edges.length; i++) {\n            if(i < minId) edges[i] = [];\n            edges[i] = edges[i].filter(function(i) {\n                return i >= minId;\n            });\n        }\n    }\n\n    function adjacencyStructureSCC(from) {\n        // Make subgraph starting from vertex minId\n        subgraph(from);\n        var g = edges;\n\n        // Find strongly connected components using Tarjan algorithm\n        var sccs = tarjan(g);\n\n        // Filter out trivial connected components (ie. made of one node)\n        var ccs = sccs.components.filter(function(scc) {\n            return scc.length > 1;\n        });\n\n        // Find least vertex\n        var leastVertex = Infinity;\n        var leastVertexComponent;\n        for(var i = 0; i < ccs.length; i++) {\n            for(var j = 0; j < ccs[i].length; j++) {\n                if(ccs[i][j] < leastVertex) {\n                    leastVertex = ccs[i][j];\n                    leastVertexComponent = i;\n                }\n            }\n        }\n\n        var cc = ccs[leastVertexComponent];\n\n        if(!cc) return false;\n\n        // Return the adjacency list of first component\n        var adjList = edges.map(function(l, index) {\n            if(cc.indexOf(index) === -1) return [];\n            return l.filter(function(i) {\n                return cc.indexOf(i) !== -1;\n            });\n        });\n\n        return {\n            leastVertex: leastVertex,\n            adjList: adjList\n        };\n    }\n\n    s = 0;\n    var n = edges.length;\n    while(s < n) {\n        // find strong component with least vertex in\n        // subgraph starting from vertex `s`\n        var p = adjacencyStructureSCC(s);\n\n        // Its least vertex\n        s = p.leastVertex;\n        // Its adjacency list\n        Ak = p.adjList;\n\n        if(Ak) {\n            for(var i = 0; i < Ak.length; i++) {\n                for(var j = 0; j < Ak[i].length; j++) {\n                    var vertexId = Ak[i][j];\n                    blocked[+vertexId] = false;\n                    B[vertexId] = {};\n                }\n            }\n            circuit(s);\n            s = s + 1;\n        } else {\n            s = n;\n        }\n\n    }\n\n    if(cb) {\n        return;\n    } else {\n        return circuits;\n    }\n};\n\n\n/***/ }),\n\n/***/ 72943:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5782486__) {\n\n\"use strict\";\n\n\n/* globals\n\tAtomics,\n\tSharedArrayBuffer,\n*/\n\nvar undefined;\n\nvar $TypeError = TypeError;\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () { throw new $TypeError(); };\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = __nested_webpack_require_5782486__(57877)();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar generator; // = function * () {};\nvar generatorFunction = generator ? getProto(generator) : undefined;\nvar asyncFn; // async function() {};\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\nvar asyncGen; // async function * () {};\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%ArrayPrototype%': Array.prototype,\n\t'%ArrayProto_entries%': Array.prototype.entries,\n\t'%ArrayProto_forEach%': Array.prototype.forEach,\n\t'%ArrayProto_keys%': Array.prototype.keys,\n\t'%ArrayProto_values%': Array.prototype.values,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': asyncFunction,\n\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\n\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\n\t'%AsyncGeneratorFunction%': asyncGenFunction,\n\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\n\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%Boolean%': Boolean,\n\t'%BooleanPrototype%': Boolean.prototype,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\n\t'%Date%': Date,\n\t'%DatePrototype%': Date.prototype,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%ErrorPrototype%': Error.prototype,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%EvalErrorPrototype%': EvalError.prototype,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\n\t'%Function%': Function,\n\t'%FunctionPrototype%': Function.prototype,\n\t'%Generator%': generator ? getProto(generator()) : undefined,\n\t'%GeneratorFunction%': generatorFunction,\n\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%NumberPrototype%': Number.prototype,\n\t'%Object%': Object,\n\t'%ObjectPrototype%': Object.prototype,\n\t'%ObjProto_toString%': Object.prototype.toString,\n\t'%ObjProto_valueOf%': Object.prototype.valueOf,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\n\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\n\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\n\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\n\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%RangeErrorPrototype%': RangeError.prototype,\n\t'%ReferenceError%': ReferenceError,\n\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%RegExpPrototype%': RegExp.prototype,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%StringPrototype%': String.prototype,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\n\t'%SyntaxError%': SyntaxError,\n\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\n\t'%TypeError%': $TypeError,\n\t'%TypeErrorPrototype%': $TypeError.prototype,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\n\t'%URIError%': URIError,\n\t'%URIErrorPrototype%': URIError.prototype,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\n};\n\nvar bind = __nested_webpack_require_5782486__(77575);\nvar $replace = bind.call(Function.call, String.prototype.replace);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tif (!(name in INTRINSICS)) {\n\t\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\n\t}\n\n\t// istanbul ignore if // hopefully this is impossible to test :-)\n\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\n\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t}\n\n\treturn INTRINSICS[name];\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\n\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\n\tfor (var i = 1; i < parts.length; i += 1) {\n\t\tif (value != null) {\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, parts[i]);\n\t\t\t\tif (!allowMissing && !(parts[i] in value)) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\n\t\t\t} else {\n\t\t\t\tvalue = value[parts[i]];\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\n\n/***/ }),\n\n/***/ 84671:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5792677__) {\n\n\"use strict\";\n\n\nvar bind = __nested_webpack_require_5792677__(77575);\n\nvar GetIntrinsic = __nested_webpack_require_5792677__(72943);\n\nvar $Function = GetIntrinsic('%Function%');\nvar $apply = $Function.apply;\nvar $call = $Function.call;\n\nmodule.exports = function callBind() {\n\treturn bind.apply($call, arguments);\n};\n\nmodule.exports.apply = function applyBind() {\n\treturn bind.apply($apply, arguments);\n};\n\n\n/***/ }),\n\n/***/ 92978:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5793153__) {\n\n\"use strict\";\n\n\nvar GetIntrinsic = __nested_webpack_require_5793153__(72943);\n\nvar callBind = __nested_webpack_require_5793153__(84671);\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n\n\n/***/ }),\n\n/***/ 67295:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5793677__) {\n\n\"use strict\";\n\n\nvar GetIntrinsic = __nested_webpack_require_5793677__(72943);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%');\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n\n\n/***/ }),\n\n/***/ 16134:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5794036__) {\n\n\"use strict\";\n// Inspired by Google Closure:\n// http://closure-library.googlecode.com/svn/docs/\n// closure_goog_array_array.js.html#goog.array.clear\n\n\n\nvar value = __nested_webpack_require_5794036__(36672);\n\nmodule.exports = function () {\n\tvalue(this).length = 0;\n\treturn this;\n};\n\n\n/***/ }),\n\n/***/ 4892:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5794401__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_5794401__(64404)() ? Array.from : __nested_webpack_require_5794401__(49441);\n\n\n/***/ }),\n\n/***/ 64404:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function () {\n\tvar from = Array.from, arr, result;\n\tif (typeof from !== \"function\") return false;\n\tarr = [\"raz\", \"dwa\"];\n\tresult = from(arr);\n\treturn Boolean(result && result !== arr && result[1] === \"dwa\");\n};\n\n\n/***/ }),\n\n/***/ 49441:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5794903__) {\n\n\"use strict\";\n\n\nvar iteratorSymbol = (__nested_webpack_require_5794903__(8260).iterator)\n  , isArguments    = __nested_webpack_require_5794903__(73051)\n  , isFunction     = __nested_webpack_require_5794903__(33717)\n  , toPosInt       = __nested_webpack_require_5794903__(35976)\n  , callable       = __nested_webpack_require_5794903__(78513)\n  , validValue     = __nested_webpack_require_5794903__(36672)\n  , isValue        = __nested_webpack_require_5794903__(95296)\n  , isString       = __nested_webpack_require_5794903__(87963)\n  , isArray        = Array.isArray\n  , call           = Function.prototype.call\n  , desc           = { configurable: true, enumerable: true, writable: true, value: null }\n  , defineProperty = Object.defineProperty;\n\n// eslint-disable-next-line complexity, max-lines-per-function\nmodule.exports = function (arrayLike/*, mapFn, thisArg*/) {\n\tvar mapFn = arguments[1]\n\t  , thisArg = arguments[2]\n\t  , Context\n\t  , i\n\t  , j\n\t  , arr\n\t  , length\n\t  , code\n\t  , iterator\n\t  , result\n\t  , getIterator\n\t  , value;\n\n\tarrayLike = Object(validValue(arrayLike));\n\n\tif (isValue(mapFn)) callable(mapFn);\n\tif (!this || this === Array || !isFunction(this)) {\n\t\t// Result: Plain array\n\t\tif (!mapFn) {\n\t\t\tif (isArguments(arrayLike)) {\n\t\t\t\t// Source: Arguments\n\t\t\t\tlength = arrayLike.length;\n\t\t\t\tif (length !== 1) return Array.apply(null, arrayLike);\n\t\t\t\tarr = new Array(1);\n\t\t\t\tarr[0] = arrayLike[0];\n\t\t\t\treturn arr;\n\t\t\t}\n\t\t\tif (isArray(arrayLike)) {\n\t\t\t\t// Source: Array\n\t\t\t\tarr = new Array((length = arrayLike.length));\n\t\t\t\tfor (i = 0; i < length; ++i) arr[i] = arrayLike[i];\n\t\t\t\treturn arr;\n\t\t\t}\n\t\t}\n\t\tarr = [];\n\t} else {\n\t\t// Result: Non plain array\n\t\tContext = this;\n\t}\n\n\tif (!isArray(arrayLike)) {\n\t\tif ((getIterator = arrayLike[iteratorSymbol]) !== undefined) {\n\t\t\t// Source: Iterator\n\t\t\titerator = callable(getIterator).call(arrayLike);\n\t\t\tif (Context) arr = new Context();\n\t\t\tresult = iterator.next();\n\t\t\ti = 0;\n\t\t\twhile (!result.done) {\n\t\t\t\tvalue = mapFn ? call.call(mapFn, thisArg, result.value, i) : result.value;\n\t\t\t\tif (Context) {\n\t\t\t\t\tdesc.value = value;\n\t\t\t\t\tdefineProperty(arr, i, desc);\n\t\t\t\t} else {\n\t\t\t\t\tarr[i] = value;\n\t\t\t\t}\n\t\t\t\tresult = iterator.next();\n\t\t\t\t++i;\n\t\t\t}\n\t\t\tlength = i;\n\t\t} else if (isString(arrayLike)) {\n\t\t\t// Source: String\n\t\t\tlength = arrayLike.length;\n\t\t\tif (Context) arr = new Context();\n\t\t\tfor (i = 0, j = 0; i < length; ++i) {\n\t\t\t\tvalue = arrayLike[i];\n\t\t\t\tif (i + 1 < length) {\n\t\t\t\t\tcode = value.charCodeAt(0);\n\t\t\t\t\t// eslint-disable-next-line max-depth\n\t\t\t\t\tif (code >= 0xd800 && code <= 0xdbff) value += arrayLike[++i];\n\t\t\t\t}\n\t\t\t\tvalue = mapFn ? call.call(mapFn, thisArg, value, j) : value;\n\t\t\t\tif (Context) {\n\t\t\t\t\tdesc.value = value;\n\t\t\t\t\tdefineProperty(arr, j, desc);\n\t\t\t\t} else {\n\t\t\t\t\tarr[j] = value;\n\t\t\t\t}\n\t\t\t\t++j;\n\t\t\t}\n\t\t\tlength = j;\n\t\t}\n\t}\n\tif (length === undefined) {\n\t\t// Source: array or array-like\n\t\tlength = toPosInt(arrayLike.length);\n\t\tif (Context) arr = new Context(length);\n\t\tfor (i = 0; i < length; ++i) {\n\t\t\tvalue = mapFn ? call.call(mapFn, thisArg, arrayLike[i], i) : arrayLike[i];\n\t\t\tif (Context) {\n\t\t\t\tdesc.value = value;\n\t\t\t\tdefineProperty(arr, i, desc);\n\t\t\t} else {\n\t\t\t\tarr[i] = value;\n\t\t\t}\n\t\t}\n\t}\n\tif (Context) {\n\t\tdesc.value = null;\n\t\tarr.length = length;\n\t}\n\treturn arr;\n};\n\n\n/***/ }),\n\n/***/ 73051:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar objToString = Object.prototype.toString\n  , id = objToString.call((function () { return arguments; })());\n\nmodule.exports = function (value) { return objToString.call(value) === id; };\n\n\n/***/ }),\n\n/***/ 33717:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar objToString = Object.prototype.toString\n  , isFunctionStringTag = RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);\n\nmodule.exports = function (value) {\n\treturn typeof value === \"function\" && isFunctionStringTag(objToString.call(value));\n};\n\n\n/***/ }),\n\n/***/ 52345:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// eslint-disable-next-line no-empty-function\nmodule.exports = function () {};\n\n\n/***/ }),\n\n/***/ 9953:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5798871__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_5798871__(90436)() ? Math.sign : __nested_webpack_require_5798871__(6069);\n\n\n/***/ }),\n\n/***/ 90436:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function () {\n\tvar sign = Math.sign;\n\tif (typeof sign !== \"function\") return false;\n\treturn sign(10) === 1 && sign(-20) === -1;\n};\n\n\n/***/ }),\n\n/***/ 6069:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function (value) {\n\tvalue = Number(value);\n\tif (isNaN(value) || value === 0) return value;\n\treturn value > 0 ? 1 : -1;\n};\n\n\n/***/ }),\n\n/***/ 56247:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5799498__) {\n\n\"use strict\";\n\n\nvar sign  = __nested_webpack_require_5799498__(9953)\n  , abs   = Math.abs\n  , floor = Math.floor;\n\nmodule.exports = function (value) {\n\tif (isNaN(value)) return 0;\n\tvalue = Number(value);\n\tif (value === 0 || !isFinite(value)) return value;\n\treturn sign(value) * floor(abs(value));\n};\n\n\n/***/ }),\n\n/***/ 35976:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5799883__) {\n\n\"use strict\";\n\n\nvar toInteger = __nested_webpack_require_5799883__(56247)\n  , max       = Math.max;\n\nmodule.exports = function (value) { return max(0, toInteger(value)); };\n\n\n/***/ }),\n\n/***/ 67260:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5800141__) {\n\n\"use strict\";\n// Internal method, used by iteration functions.\n// Calls a function for each key-value pair found in object\n// Optionally takes compareFn to iterate object in specific order\n\n\n\nvar callable                = __nested_webpack_require_5800141__(78513)\n  , value                   = __nested_webpack_require_5800141__(36672)\n  , bind                    = Function.prototype.bind\n  , call                    = Function.prototype.call\n  , keys                    = Object.keys\n  , objPropertyIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nmodule.exports = function (method, defVal) {\n\treturn function (obj, cb/*, thisArg, compareFn*/) {\n\t\tvar list, thisArg = arguments[2], compareFn = arguments[3];\n\t\tobj = Object(value(obj));\n\t\tcallable(cb);\n\n\t\tlist = keys(obj);\n\t\tif (compareFn) {\n\t\t\tlist.sort(typeof compareFn === \"function\" ? bind.call(compareFn, obj) : undefined);\n\t\t}\n\t\tif (typeof method !== \"function\") method = list[method];\n\t\treturn call.call(method, list, function (key, index) {\n\t\t\tif (!objPropertyIsEnumerable.call(obj, key)) return defVal;\n\t\t\treturn call.call(cb, thisArg, obj[key], key, obj, index);\n\t\t});\n\t};\n};\n\n\n/***/ }),\n\n/***/ 95879:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5801355__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_5801355__(73583)() ? Object.assign : __nested_webpack_require_5801355__(34205);\n\n\n/***/ }),\n\n/***/ 73583:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function () {\n\tvar assign = Object.assign, obj;\n\tif (typeof assign !== \"function\") return false;\n\tobj = { foo: \"raz\" };\n\tassign(obj, { bar: \"dwa\" }, { trzy: \"trzy\" });\n\treturn obj.foo + obj.bar + obj.trzy === \"razdwatrzy\";\n};\n\n\n/***/ }),\n\n/***/ 34205:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5801875__) {\n\n\"use strict\";\n\n\nvar keys  = __nested_webpack_require_5801875__(68700)\n  , value = __nested_webpack_require_5801875__(36672)\n  , max   = Math.max;\n\nmodule.exports = function (dest, src/*, …srcn*/) {\n\tvar error, i, length = max(arguments.length, 2), assign;\n\tdest = Object(value(dest));\n\tassign = function (key) {\n\t\ttry {\n\t\t\tdest[key] = src[key];\n\t\t} catch (e) {\n\t\t\tif (!error) error = e;\n\t\t}\n\t};\n\tfor (i = 1; i < length; ++i) {\n\t\tsrc = arguments[i];\n\t\tkeys(src).forEach(assign);\n\t}\n\tif (error !== undefined) throw error;\n\treturn dest;\n};\n\n\n/***/ }),\n\n/***/ 19012:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5802482__) {\n\n\"use strict\";\n\n\nvar aFrom  = __nested_webpack_require_5802482__(4892)\n  , assign = __nested_webpack_require_5802482__(95879)\n  , value  = __nested_webpack_require_5802482__(36672);\n\nmodule.exports = function (obj/*, propertyNames, options*/) {\n\tvar copy = Object(value(obj)), propertyNames = arguments[1], options = Object(arguments[2]);\n\tif (copy !== obj && !propertyNames) return copy;\n\tvar result = {};\n\tif (propertyNames) {\n\t\taFrom(propertyNames, function (propertyName) {\n\t\t\tif (options.ensure || propertyName in obj) result[propertyName] = obj[propertyName];\n\t\t});\n\t} else {\n\t\tassign(result, obj);\n\t}\n\treturn result;\n};\n\n\n/***/ }),\n\n/***/ 52818:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5803163__) {\n\n\"use strict\";\n// Workaround for http://code.google.com/p/v8/issues/detail?id=2804\n\n\n\nvar create = Object.create, shim;\n\nif (!__nested_webpack_require_5803163__(33247)()) {\n\tshim = __nested_webpack_require_5803163__(51882);\n}\n\nmodule.exports = (function () {\n\tvar nullObject, polyProps, desc;\n\tif (!shim) return create;\n\tif (shim.level !== 1) return create;\n\n\tnullObject = {};\n\tpolyProps = {};\n\tdesc = { configurable: false, enumerable: false, writable: true, value: undefined };\n\tObject.getOwnPropertyNames(Object.prototype).forEach(function (name) {\n\t\tif (name === \"__proto__\") {\n\t\t\tpolyProps[name] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\twritable: true,\n\t\t\t\tvalue: undefined\n\t\t\t};\n\t\t\treturn;\n\t\t}\n\t\tpolyProps[name] = desc;\n\t});\n\tObject.defineProperties(nullObject, polyProps);\n\n\tObject.defineProperty(shim, \"nullPolyfill\", {\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t\twritable: false,\n\t\tvalue: nullObject\n\t});\n\n\treturn function (prototype, props) {\n\t\treturn create(prototype === null ? nullObject : prototype, props);\n\t};\n})();\n\n\n/***/ }),\n\n/***/ 96437:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5804280__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_5804280__(67260)(\"forEach\");\n\n\n/***/ }),\n\n/***/ 99611:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5804452__) {\n\n\"use strict\";\n\n\nvar isValue = __nested_webpack_require_5804452__(95296);\n\nvar map = { function: true, object: true };\n\nmodule.exports = function (value) { return (isValue(value) && map[typeof value]) || false; };\n\n\n/***/ }),\n\n/***/ 95296:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5804750__) {\n\n\"use strict\";\n\n\nvar _undefined = __nested_webpack_require_5804750__(52345)(); // Support ES3 engines\n\nmodule.exports = function (val) { return val !== _undefined && val !== null; };\n\n\n/***/ }),\n\n/***/ 68700:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5805017__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_5805017__(13895)() ? Object.keys : __nested_webpack_require_5805017__(25217);\n\n\n/***/ }),\n\n/***/ 13895:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function () {\n\ttry {\n\t\tObject.keys(\"primitive\");\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\n\n/***/ }),\n\n/***/ 25217:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5805410__) {\n\n\"use strict\";\n\n\nvar isValue = __nested_webpack_require_5805410__(95296);\n\nvar keys = Object.keys;\n\nmodule.exports = function (object) { return keys(isValue(object) ? Object(object) : object); };\n\n\n/***/ }),\n\n/***/ 16906:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5805690__) {\n\n\"use strict\";\n\n\nvar callable = __nested_webpack_require_5805690__(78513)\n  , forEach  = __nested_webpack_require_5805690__(96437)\n  , call     = Function.prototype.call;\n\nmodule.exports = function (obj, cb/*, thisArg*/) {\n\tvar result = {}, thisArg = arguments[2];\n\tcallable(cb);\n\tforEach(obj, function (value, key, targetObj, index) {\n\t\tresult[key] = call.call(cb, thisArg, value, key, targetObj, index);\n\t});\n\treturn result;\n};\n\n\n/***/ }),\n\n/***/ 21780:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5806189__) {\n\n\"use strict\";\n\n\nvar isValue = __nested_webpack_require_5806189__(95296);\n\nvar forEach = Array.prototype.forEach, create = Object.create;\n\nvar process = function (src, obj) {\n\tvar key;\n\tfor (key in src) obj[key] = src[key];\n};\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function (opts1/*, …options*/) {\n\tvar result = create(null);\n\tforEach.call(arguments, function (options) {\n\t\tif (!isValue(options)) return;\n\t\tprocess(Object(options), result);\n\t});\n\treturn result;\n};\n\n\n/***/ }),\n\n/***/ 1496:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5806760__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_5806760__(33247)() ? Object.setPrototypeOf : __nested_webpack_require_5806760__(51882);\n\n\n/***/ }),\n\n/***/ 33247:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar create = Object.create, getPrototypeOf = Object.getPrototypeOf, plainObject = {};\n\nmodule.exports = function (/* CustomCreate*/) {\n\tvar setPrototypeOf = Object.setPrototypeOf, customCreate = arguments[0] || create;\n\tif (typeof setPrototypeOf !== \"function\") return false;\n\treturn getPrototypeOf(setPrototypeOf(customCreate(null), plainObject)) === plainObject;\n};\n\n\n/***/ }),\n\n/***/ 51882:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5807413__) {\n\n\"use strict\";\n/* eslint no-proto: \"off\" */\n\n// Big thanks to @WebReflection for sorting this out\n// https://gist.github.com/WebReflection/5593554\n\n\n\nvar isObject         = __nested_webpack_require_5807413__(99611)\n  , value            = __nested_webpack_require_5807413__(36672)\n  , objIsPrototypeOf = Object.prototype.isPrototypeOf\n  , defineProperty   = Object.defineProperty\n  , nullDesc         = { configurable: true, enumerable: false, writable: true, value: undefined }\n  , validate;\n\nvalidate = function (obj, prototype) {\n\tvalue(obj);\n\tif (prototype === null || isObject(prototype)) return obj;\n\tthrow new TypeError(\"Prototype must be null or an object\");\n};\n\nmodule.exports = (function (status) {\n\tvar fn, set;\n\tif (!status) return null;\n\tif (status.level === 2) {\n\t\tif (status.set) {\n\t\t\tset = status.set;\n\t\t\tfn = function (obj, prototype) {\n\t\t\t\tset.call(validate(obj, prototype), prototype);\n\t\t\t\treturn obj;\n\t\t\t};\n\t\t} else {\n\t\t\tfn = function (obj, prototype) {\n\t\t\t\tvalidate(obj, prototype).__proto__ = prototype;\n\t\t\t\treturn obj;\n\t\t\t};\n\t\t}\n\t} else {\n\t\tfn = function self(obj, prototype) {\n\t\t\tvar isNullBase;\n\t\t\tvalidate(obj, prototype);\n\t\t\tisNullBase = objIsPrototypeOf.call(self.nullPolyfill, obj);\n\t\t\tif (isNullBase) delete self.nullPolyfill.__proto__;\n\t\t\tif (prototype === null) prototype = self.nullPolyfill;\n\t\t\tobj.__proto__ = prototype;\n\t\t\tif (isNullBase) defineProperty(self.nullPolyfill, \"__proto__\", nullDesc);\n\t\t\treturn obj;\n\t\t};\n\t}\n\treturn Object.defineProperty(fn, \"level\", {\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t\twritable: false,\n\t\tvalue: status.level\n\t});\n})(\n\t(function () {\n\t\tvar tmpObj1 = Object.create(null)\n\t\t  , tmpObj2 = {}\n\t\t  , set\n\t\t  , desc = Object.getOwnPropertyDescriptor(Object.prototype, \"__proto__\");\n\n\t\tif (desc) {\n\t\t\ttry {\n\t\t\t\tset = desc.set; // Opera crashes at this point\n\t\t\t\tset.call(tmpObj1, tmpObj2);\n\t\t\t} catch (ignore) {}\n\t\t\tif (Object.getPrototypeOf(tmpObj1) === tmpObj2) return { set: set, level: 2 };\n\t\t}\n\n\t\ttmpObj1.__proto__ = tmpObj2;\n\t\tif (Object.getPrototypeOf(tmpObj1) === tmpObj2) return { level: 2 };\n\n\t\ttmpObj1 = {};\n\t\ttmpObj1.__proto__ = tmpObj2;\n\t\tif (Object.getPrototypeOf(tmpObj1) === tmpObj2) return { level: 1 };\n\n\t\treturn false;\n\t})()\n);\n\n__nested_webpack_require_5807413__(52818);\n\n\n/***/ }),\n\n/***/ 78513:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function (fn) {\n\tif (typeof fn !== \"function\") throw new TypeError(fn + \" is not a function\");\n\treturn fn;\n};\n\n\n/***/ }),\n\n/***/ 98976:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5809922__) {\n\n\"use strict\";\n\n\nvar isObject = __nested_webpack_require_5809922__(99611);\n\nmodule.exports = function (value) {\n\tif (!isObject(value)) throw new TypeError(value + \" is not an Object\");\n\treturn value;\n};\n\n\n/***/ }),\n\n/***/ 36672:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5810209__) {\n\n\"use strict\";\n\n\nvar isValue = __nested_webpack_require_5810209__(95296);\n\nmodule.exports = function (value) {\n\tif (!isValue(value)) throw new TypeError(\"Cannot use null or undefined\");\n\treturn value;\n};\n\n\n/***/ }),\n\n/***/ 66741:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5810497__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_5810497__(17557)() ? String.prototype.contains : __nested_webpack_require_5810497__(60381);\n\n\n/***/ }),\n\n/***/ 17557:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar str = \"razdwatrzy\";\n\nmodule.exports = function () {\n\tif (typeof str.contains !== \"function\") return false;\n\treturn str.contains(\"dwa\") === true && str.contains(\"foo\") === false;\n};\n\n\n/***/ }),\n\n/***/ 60381:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar indexOf = String.prototype.indexOf;\n\nmodule.exports = function (searchString/*, position*/) {\n\treturn indexOf.call(this, searchString, arguments[1]) > -1;\n};\n\n\n/***/ }),\n\n/***/ 87963:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar objToString = Object.prototype.toString, id = objToString.call(\"\");\n\nmodule.exports = function (value) {\n\treturn (\n\t\ttypeof value === \"string\" ||\n\t\t(value &&\n\t\t\ttypeof value === \"object\" &&\n\t\t\t(value instanceof String || objToString.call(value) === id)) ||\n\t\tfalse\n\t);\n};\n\n\n/***/ }),\n\n/***/ 43043:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar generated = Object.create(null), random = Math.random;\n\nmodule.exports = function () {\n\tvar str;\n\tdo {\n\t\tstr = random().toString(36).slice(2);\n\t} while (generated[str]);\n\treturn str;\n};\n\n\n/***/ }),\n\n/***/ 32411:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5811806__) {\n\n\"use strict\";\n\n\nvar setPrototypeOf = __nested_webpack_require_5811806__(1496)\n  , contains       = __nested_webpack_require_5811806__(66741)\n  , d              = __nested_webpack_require_5811806__(62072)\n  , Symbol         = __nested_webpack_require_5811806__(8260)\n  , Iterator       = __nested_webpack_require_5811806__(95426);\n\nvar defineProperty = Object.defineProperty, ArrayIterator;\n\nArrayIterator = module.exports = function (arr, kind) {\n\tif (!(this instanceof ArrayIterator)) throw new TypeError(\"Constructor requires 'new'\");\n\tIterator.call(this, arr);\n\tif (!kind) kind = \"value\";\n\telse if (contains.call(kind, \"key+value\")) kind = \"key+value\";\n\telse if (contains.call(kind, \"key\")) kind = \"key\";\n\telse kind = \"value\";\n\tdefineProperty(this, \"__kind__\", d(\"\", kind));\n};\nif (setPrototypeOf) setPrototypeOf(ArrayIterator, Iterator);\n\n// Internal %ArrayIteratorPrototype% doesn't expose its constructor\ndelete ArrayIterator.prototype.constructor;\n\nArrayIterator.prototype = Object.create(Iterator.prototype, {\n\t_resolve: d(function (i) {\n\t\tif (this.__kind__ === \"value\") return this.__list__[i];\n\t\tif (this.__kind__ === \"key+value\") return [i, this.__list__[i]];\n\t\treturn i;\n\t})\n});\ndefineProperty(ArrayIterator.prototype, Symbol.toStringTag, d(\"c\", \"Array Iterator\"));\n\n\n/***/ }),\n\n/***/ 27515:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5813109__) {\n\n\"use strict\";\n\n\nvar isArguments = __nested_webpack_require_5813109__(73051)\n  , callable    = __nested_webpack_require_5813109__(78513)\n  , isString    = __nested_webpack_require_5813109__(87963)\n  , get         = __nested_webpack_require_5813109__(66661);\n\nvar isArray = Array.isArray, call = Function.prototype.call, some = Array.prototype.some;\n\nmodule.exports = function (iterable, cb /*, thisArg*/) {\n\tvar mode, thisArg = arguments[2], result, doBreak, broken, i, length, char, code;\n\tif (isArray(iterable) || isArguments(iterable)) mode = \"array\";\n\telse if (isString(iterable)) mode = \"string\";\n\telse iterable = get(iterable);\n\n\tcallable(cb);\n\tdoBreak = function () {\n\t\tbroken = true;\n\t};\n\tif (mode === \"array\") {\n\t\tsome.call(iterable, function (value) {\n\t\t\tcall.call(cb, thisArg, value, doBreak);\n\t\t\treturn broken;\n\t\t});\n\t\treturn;\n\t}\n\tif (mode === \"string\") {\n\t\tlength = iterable.length;\n\t\tfor (i = 0; i < length; ++i) {\n\t\t\tchar = iterable[i];\n\t\t\tif (i + 1 < length) {\n\t\t\t\tcode = char.charCodeAt(0);\n\t\t\t\tif (code >= 0xd800 && code <= 0xdbff) char += iterable[++i];\n\t\t\t}\n\t\t\tcall.call(cb, thisArg, char, doBreak);\n\t\t\tif (broken) break;\n\t\t}\n\t\treturn;\n\t}\n\tresult = iterable.next();\n\n\twhile (!result.done) {\n\t\tcall.call(cb, thisArg, result.value, doBreak);\n\t\tif (broken) return;\n\t\tresult = iterable.next();\n\t}\n};\n\n\n/***/ }),\n\n/***/ 66661:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5814464__) {\n\n\"use strict\";\n\n\nvar isArguments    = __nested_webpack_require_5814464__(73051)\n  , isString       = __nested_webpack_require_5814464__(87963)\n  , ArrayIterator  = __nested_webpack_require_5814464__(32411)\n  , StringIterator = __nested_webpack_require_5814464__(259)\n  , iterable       = __nested_webpack_require_5814464__(58095)\n  , iteratorSymbol = (__nested_webpack_require_5814464__(8260).iterator);\n\nmodule.exports = function (obj) {\n\tif (typeof iterable(obj)[iteratorSymbol] === \"function\") return obj[iteratorSymbol]();\n\tif (isArguments(obj)) return new ArrayIterator(obj);\n\tif (isString(obj)) return new StringIterator(obj);\n\treturn new ArrayIterator(obj);\n};\n\n\n/***/ }),\n\n/***/ 95426:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5815141__) {\n\n\"use strict\";\n\n\nvar clear    = __nested_webpack_require_5815141__(16134)\n  , assign   = __nested_webpack_require_5815141__(95879)\n  , callable = __nested_webpack_require_5815141__(78513)\n  , value    = __nested_webpack_require_5815141__(36672)\n  , d        = __nested_webpack_require_5815141__(62072)\n  , autoBind = __nested_webpack_require_5815141__(55174)\n  , Symbol   = __nested_webpack_require_5815141__(8260);\n\nvar defineProperty = Object.defineProperty, defineProperties = Object.defineProperties, Iterator;\n\nmodule.exports = Iterator = function (list, context) {\n\tif (!(this instanceof Iterator)) throw new TypeError(\"Constructor requires 'new'\");\n\tdefineProperties(this, {\n\t\t__list__: d(\"w\", value(list)),\n\t\t__context__: d(\"w\", context),\n\t\t__nextIndex__: d(\"w\", 0)\n\t});\n\tif (!context) return;\n\tcallable(context.on);\n\tcontext.on(\"_add\", this._onAdd);\n\tcontext.on(\"_delete\", this._onDelete);\n\tcontext.on(\"_clear\", this._onClear);\n};\n\n// Internal %IteratorPrototype% doesn't expose its constructor\ndelete Iterator.prototype.constructor;\n\ndefineProperties(\n\tIterator.prototype,\n\tassign(\n\t\t{\n\t\t\t_next: d(function () {\n\t\t\t\tvar i;\n\t\t\t\tif (!this.__list__) return undefined;\n\t\t\t\tif (this.__redo__) {\n\t\t\t\t\ti = this.__redo__.shift();\n\t\t\t\t\tif (i !== undefined) return i;\n\t\t\t\t}\n\t\t\t\tif (this.__nextIndex__ < this.__list__.length) return this.__nextIndex__++;\n\t\t\t\tthis._unBind();\n\t\t\t\treturn undefined;\n\t\t\t}),\n\t\t\tnext: d(function () {\n\t\t\t\treturn this._createResult(this._next());\n\t\t\t}),\n\t\t\t_createResult: d(function (i) {\n\t\t\t\tif (i === undefined) return { done: true, value: undefined };\n\t\t\t\treturn { done: false, value: this._resolve(i) };\n\t\t\t}),\n\t\t\t_resolve: d(function (i) {\n\t\t\t\treturn this.__list__[i];\n\t\t\t}),\n\t\t\t_unBind: d(function () {\n\t\t\t\tthis.__list__ = null;\n\t\t\t\tdelete this.__redo__;\n\t\t\t\tif (!this.__context__) return;\n\t\t\t\tthis.__context__.off(\"_add\", this._onAdd);\n\t\t\t\tthis.__context__.off(\"_delete\", this._onDelete);\n\t\t\t\tthis.__context__.off(\"_clear\", this._onClear);\n\t\t\t\tthis.__context__ = null;\n\t\t\t}),\n\t\t\ttoString: d(function () {\n\t\t\t\treturn \"[object \" + (this[Symbol.toStringTag] || \"Object\") + \"]\";\n\t\t\t})\n\t\t},\n\t\tautoBind({\n\t\t\t_onAdd: d(function (index) {\n\t\t\t\tif (index >= this.__nextIndex__) return;\n\t\t\t\t++this.__nextIndex__;\n\t\t\t\tif (!this.__redo__) {\n\t\t\t\t\tdefineProperty(this, \"__redo__\", d(\"c\", [index]));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.__redo__.forEach(function (redo, i) {\n\t\t\t\t\tif (redo >= index) this.__redo__[i] = ++redo;\n\t\t\t\t}, this);\n\t\t\t\tthis.__redo__.push(index);\n\t\t\t}),\n\t\t\t_onDelete: d(function (index) {\n\t\t\t\tvar i;\n\t\t\t\tif (index >= this.__nextIndex__) return;\n\t\t\t\t--this.__nextIndex__;\n\t\t\t\tif (!this.__redo__) return;\n\t\t\t\ti = this.__redo__.indexOf(index);\n\t\t\t\tif (i !== -1) this.__redo__.splice(i, 1);\n\t\t\t\tthis.__redo__.forEach(function (redo, j) {\n\t\t\t\t\tif (redo > index) this.__redo__[j] = --redo;\n\t\t\t\t}, this);\n\t\t\t}),\n\t\t\t_onClear: d(function () {\n\t\t\t\tif (this.__redo__) clear.call(this.__redo__);\n\t\t\t\tthis.__nextIndex__ = 0;\n\t\t\t})\n\t\t})\n\t)\n);\n\ndefineProperty(\n\tIterator.prototype,\n\tSymbol.iterator,\n\td(function () {\n\t\treturn this;\n\t})\n);\n\n\n/***/ }),\n\n/***/ 35940:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5818191__) {\n\n\"use strict\";\n\n\nvar isArguments = __nested_webpack_require_5818191__(73051)\n  , isValue     = __nested_webpack_require_5818191__(95296)\n  , isString    = __nested_webpack_require_5818191__(87963);\n\nvar iteratorSymbol = (__nested_webpack_require_5818191__(8260).iterator)\n  , isArray        = Array.isArray;\n\nmodule.exports = function (value) {\n\tif (!isValue(value)) return false;\n\tif (isArray(value)) return true;\n\tif (isString(value)) return true;\n\tif (isArguments(value)) return true;\n\treturn typeof value[iteratorSymbol] === \"function\";\n};\n\n\n/***/ }),\n\n/***/ 259:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5818772__) {\n\n\"use strict\";\n// Thanks @mathiasbynens\n// http://mathiasbynens.be/notes/javascript-unicode#iterating-over-symbols\n\n\n\nvar setPrototypeOf = __nested_webpack_require_5818772__(1496)\n  , d              = __nested_webpack_require_5818772__(62072)\n  , Symbol         = __nested_webpack_require_5818772__(8260)\n  , Iterator       = __nested_webpack_require_5818772__(95426);\n\nvar defineProperty = Object.defineProperty, StringIterator;\n\nStringIterator = module.exports = function (str) {\n\tif (!(this instanceof StringIterator)) throw new TypeError(\"Constructor requires 'new'\");\n\tstr = String(str);\n\tIterator.call(this, str);\n\tdefineProperty(this, \"__length__\", d(\"\", str.length));\n};\nif (setPrototypeOf) setPrototypeOf(StringIterator, Iterator);\n\n// Internal %ArrayIteratorPrototype% doesn't expose its constructor\ndelete StringIterator.prototype.constructor;\n\nStringIterator.prototype = Object.create(Iterator.prototype, {\n\t_next: d(function () {\n\t\tif (!this.__list__) return undefined;\n\t\tif (this.__nextIndex__ < this.__length__) return this.__nextIndex__++;\n\t\tthis._unBind();\n\t\treturn undefined;\n\t}),\n\t_resolve: d(function (i) {\n\t\tvar char = this.__list__[i], code;\n\t\tif (this.__nextIndex__ === this.__length__) return char;\n\t\tcode = char.charCodeAt(0);\n\t\tif (code >= 0xd800 && code <= 0xdbff) return char + this.__list__[this.__nextIndex__++];\n\t\treturn char;\n\t})\n});\ndefineProperty(StringIterator.prototype, Symbol.toStringTag, d(\"c\", \"String Iterator\"));\n\n\n/***/ }),\n\n/***/ 58095:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5820266__) {\n\n\"use strict\";\n\n\nvar isIterable = __nested_webpack_require_5820266__(35940);\n\nmodule.exports = function (value) {\n\tif (!isIterable(value)) throw new TypeError(value + \" is not iterable\");\n\treturn value;\n};\n\n\n/***/ }),\n\n/***/ 73523:\n/***/ (function(module) {\n\n\"use strict\";\n/**\n * Code refactored from Mozilla Developer Network:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n */\n\n\n\nfunction assign(target, firstSource) {\n  if (target === undefined || target === null) {\n    throw new TypeError('Cannot convert first argument to object');\n  }\n\n  var to = Object(target);\n  for (var i = 1; i < arguments.length; i++) {\n    var nextSource = arguments[i];\n    if (nextSource === undefined || nextSource === null) {\n      continue;\n    }\n\n    var keysArray = Object.keys(Object(nextSource));\n    for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {\n      var nextKey = keysArray[nextIndex];\n      var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n      if (desc !== undefined && desc.enumerable) {\n        to[nextKey] = nextSource[nextKey];\n      }\n    }\n  }\n  return to;\n}\n\nfunction polyfill() {\n  if (!Object.assign) {\n    Object.defineProperty(Object, 'assign', {\n      enumerable: false,\n      configurable: true,\n      writable: true,\n      value: assign\n    });\n  }\n}\n\nmodule.exports = {\n  assign: assign,\n  polyfill: polyfill\n};\n\n\n/***/ }),\n\n/***/ 8260:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5821773__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_5821773__(69711)()\n\t? (__nested_webpack_require_5821773__(94908).Symbol)\n\t: __nested_webpack_require_5821773__(18415);\n\n\n/***/ }),\n\n/***/ 69711:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5822005__) {\n\n\"use strict\";\n\n\nvar global     = __nested_webpack_require_5822005__(94908)\n  , validTypes = { object: true, symbol: true };\n\nmodule.exports = function () {\n\tvar Symbol = global.Symbol;\n\tvar symbol;\n\tif (typeof Symbol !== \"function\") return false;\n\tsymbol = Symbol(\"test symbol\");\n\ttry { String(symbol); }\n\tcatch (e) { return false; }\n\n\t// Return 'true' also for polyfills\n\tif (!validTypes[typeof Symbol.iterator]) return false;\n\tif (!validTypes[typeof Symbol.toPrimitive]) return false;\n\tif (!validTypes[typeof Symbol.toStringTag]) return false;\n\n\treturn true;\n};\n\n\n/***/ }),\n\n/***/ 82276:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function (value) {\n\tif (!value) return false;\n\tif (typeof value === \"symbol\") return true;\n\tif (!value.constructor) return false;\n\tif (value.constructor.name !== \"Symbol\") return false;\n\treturn value[value.constructor.toStringTag] === \"Symbol\";\n};\n\n\n/***/ }),\n\n/***/ 29366:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5822988__) {\n\n\"use strict\";\n\n\nvar d = __nested_webpack_require_5822988__(62072);\n\nvar create = Object.create, defineProperty = Object.defineProperty, objPrototype = Object.prototype;\n\nvar created = create(null);\nmodule.exports = function (desc) {\n\tvar postfix = 0, name, ie11BugWorkaround;\n\twhile (created[desc + (postfix || \"\")]) ++postfix;\n\tdesc += postfix || \"\";\n\tcreated[desc] = true;\n\tname = \"@@\" + desc;\n\tdefineProperty(\n\t\tobjPrototype,\n\t\tname,\n\t\td.gs(null, function (value) {\n\t\t\t// For IE11 issue see:\n\t\t\t// https://connect.microsoft.com/IE/feedbackdetail/view/1928508/\n\t\t\t//    ie11-broken-getters-on-dom-objects\n\t\t\t// https://github.com/medikoo/es6-symbol/issues/12\n\t\t\tif (ie11BugWorkaround) return;\n\t\t\tie11BugWorkaround = true;\n\t\t\tdefineProperty(this, name, d(value));\n\t\t\tie11BugWorkaround = false;\n\t\t})\n\t);\n\treturn name;\n};\n\n\n/***/ }),\n\n/***/ 92842:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5823894__) {\n\n\"use strict\";\n\n\nvar d            = __nested_webpack_require_5823894__(62072)\n  , NativeSymbol = (__nested_webpack_require_5823894__(94908).Symbol);\n\nmodule.exports = function (SymbolPolyfill) {\n\treturn Object.defineProperties(SymbolPolyfill, {\n\t\t// To ensure proper interoperability with other native functions (e.g. Array.from)\n\t\t// fallback to eventual native implementation of given symbol\n\t\thasInstance: d(\n\t\t\t\"\", (NativeSymbol && NativeSymbol.hasInstance) || SymbolPolyfill(\"hasInstance\")\n\t\t),\n\t\tisConcatSpreadable: d(\n\t\t\t\"\",\n\t\t\t(NativeSymbol && NativeSymbol.isConcatSpreadable) ||\n\t\t\t\tSymbolPolyfill(\"isConcatSpreadable\")\n\t\t),\n\t\titerator: d(\"\", (NativeSymbol && NativeSymbol.iterator) || SymbolPolyfill(\"iterator\")),\n\t\tmatch: d(\"\", (NativeSymbol && NativeSymbol.match) || SymbolPolyfill(\"match\")),\n\t\treplace: d(\"\", (NativeSymbol && NativeSymbol.replace) || SymbolPolyfill(\"replace\")),\n\t\tsearch: d(\"\", (NativeSymbol && NativeSymbol.search) || SymbolPolyfill(\"search\")),\n\t\tspecies: d(\"\", (NativeSymbol && NativeSymbol.species) || SymbolPolyfill(\"species\")),\n\t\tsplit: d(\"\", (NativeSymbol && NativeSymbol.split) || SymbolPolyfill(\"split\")),\n\t\ttoPrimitive: d(\n\t\t\t\"\", (NativeSymbol && NativeSymbol.toPrimitive) || SymbolPolyfill(\"toPrimitive\")\n\t\t),\n\t\ttoStringTag: d(\n\t\t\t\"\", (NativeSymbol && NativeSymbol.toStringTag) || SymbolPolyfill(\"toStringTag\")\n\t\t),\n\t\tunscopables: d(\n\t\t\t\"\", (NativeSymbol && NativeSymbol.unscopables) || SymbolPolyfill(\"unscopables\")\n\t\t)\n\t});\n};\n\n\n/***/ }),\n\n/***/ 13304:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5825432__) {\n\n\"use strict\";\n\n\nvar d              = __nested_webpack_require_5825432__(62072)\n  , validateSymbol = __nested_webpack_require_5825432__(53308);\n\nvar registry = Object.create(null);\n\nmodule.exports = function (SymbolPolyfill) {\n\treturn Object.defineProperties(SymbolPolyfill, {\n\t\tfor: d(function (key) {\n\t\t\tif (registry[key]) return registry[key];\n\t\t\treturn (registry[key] = SymbolPolyfill(String(key)));\n\t\t}),\n\t\tkeyFor: d(function (symbol) {\n\t\t\tvar key;\n\t\t\tvalidateSymbol(symbol);\n\t\t\tfor (key in registry) {\n\t\t\t\tif (registry[key] === symbol) return key;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t})\n\t});\n};\n\n\n/***/ }),\n\n/***/ 18415:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5826094__) {\n\n\"use strict\";\n// ES2015 Symbol polyfill for environments that do not (or partially) support it\n\n\n\nvar d                    = __nested_webpack_require_5826094__(62072)\n  , validateSymbol       = __nested_webpack_require_5826094__(53308)\n  , NativeSymbol         = (__nested_webpack_require_5826094__(94908).Symbol)\n  , generateName         = __nested_webpack_require_5826094__(29366)\n  , setupStandardSymbols = __nested_webpack_require_5826094__(92842)\n  , setupSymbolRegistry  = __nested_webpack_require_5826094__(13304);\n\nvar create = Object.create\n  , defineProperties = Object.defineProperties\n  , defineProperty = Object.defineProperty;\n\nvar SymbolPolyfill, HiddenSymbol, isNativeSafe;\n\nif (typeof NativeSymbol === \"function\") {\n\ttry {\n\t\tString(NativeSymbol());\n\t\tisNativeSafe = true;\n\t} catch (ignore) {}\n} else {\n\tNativeSymbol = null;\n}\n\n// Internal constructor (not one exposed) for creating Symbol instances.\n// This one is used to ensure that `someSymbol instanceof Symbol` always return false\nHiddenSymbol = function Symbol(description) {\n\tif (this instanceof HiddenSymbol) throw new TypeError(\"Symbol is not a constructor\");\n\treturn SymbolPolyfill(description);\n};\n\n// Exposed `Symbol` constructor\n// (returns instances of HiddenSymbol)\nmodule.exports = SymbolPolyfill = function Symbol(description) {\n\tvar symbol;\n\tif (this instanceof Symbol) throw new TypeError(\"Symbol is not a constructor\");\n\tif (isNativeSafe) return NativeSymbol(description);\n\tsymbol = create(HiddenSymbol.prototype);\n\tdescription = description === undefined ? \"\" : String(description);\n\treturn defineProperties(symbol, {\n\t\t__description__: d(\"\", description),\n\t\t__name__: d(\"\", generateName(description))\n\t});\n};\n\nsetupStandardSymbols(SymbolPolyfill);\nsetupSymbolRegistry(SymbolPolyfill);\n\n// Internal tweaks for real symbol producer\ndefineProperties(HiddenSymbol.prototype, {\n\tconstructor: d(SymbolPolyfill),\n\ttoString: d(\"\", function () { return this.__name__; })\n});\n\n// Proper implementation of methods exposed on Symbol.prototype\n// They won't be accessible on produced symbol instances as they derive from HiddenSymbol.prototype\ndefineProperties(SymbolPolyfill.prototype, {\n\ttoString: d(function () { return \"Symbol (\" + validateSymbol(this).__description__ + \")\"; }),\n\tvalueOf: d(function () { return validateSymbol(this); })\n});\ndefineProperty(\n\tSymbolPolyfill.prototype,\n\tSymbolPolyfill.toPrimitive,\n\td(\"\", function () {\n\t\tvar symbol = validateSymbol(this);\n\t\tif (typeof symbol === \"symbol\") return symbol;\n\t\treturn symbol.toString();\n\t})\n);\ndefineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toStringTag, d(\"c\", \"Symbol\"));\n\n// Proper implementaton of toPrimitive and toStringTag for returned symbol instances\ndefineProperty(\n\tHiddenSymbol.prototype, SymbolPolyfill.toStringTag,\n\td(\"c\", SymbolPolyfill.prototype[SymbolPolyfill.toStringTag])\n);\n\n// Note: It's important to define `toPrimitive` as last one, as some implementations\n// implement `toPrimitive` natively without implementing `toStringTag` (or other specified symbols)\n// And that may invoke error in definition flow:\n// See: https://github.com/medikoo/es6-symbol/issues/13#issuecomment-164146149\ndefineProperty(\n\tHiddenSymbol.prototype, SymbolPolyfill.toPrimitive,\n\td(\"c\", SymbolPolyfill.prototype[SymbolPolyfill.toPrimitive])\n);\n\n\n/***/ }),\n\n/***/ 53308:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5829396__) {\n\n\"use strict\";\n\n\nvar isSymbol = __nested_webpack_require_5829396__(82276);\n\nmodule.exports = function (value) {\n\tif (!isSymbol(value)) throw new TypeError(value + \" is not a symbol\");\n\treturn value;\n};\n\n\n/***/ }),\n\n/***/ 83522:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5829682__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_5829682__(96402)() ? WeakMap : __nested_webpack_require_5829682__(329);\n\n\n/***/ }),\n\n/***/ 96402:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function () {\n\tvar weakMap, obj;\n\n\tif (typeof WeakMap !== \"function\") return false;\n\ttry {\n\t\t// WebKit doesn't support arguments and crashes\n\t\tweakMap = new WeakMap([[obj = {}, \"one\"], [{}, \"two\"], [{}, \"three\"]]);\n\t} catch (e) {\n\t\treturn false;\n\t}\n\tif (String(weakMap) !== \"[object WeakMap]\") return false;\n\tif (typeof weakMap.set !== \"function\") return false;\n\tif (weakMap.set({}, 1) !== weakMap) return false;\n\tif (typeof weakMap.delete !== \"function\") return false;\n\tif (typeof weakMap.has !== \"function\") return false;\n\tif (weakMap.get(obj) !== \"one\") return false;\n\n\treturn true;\n};\n\n\n/***/ }),\n\n/***/ 96416:\n/***/ (function(module) {\n\n\"use strict\";\n// Exports true if environment provides native `WeakMap` implementation, whatever that is.\n\n\n\nmodule.exports = (function () {\n\tif (typeof WeakMap !== \"function\") return false;\n\treturn Object.prototype.toString.call(new WeakMap()) === \"[object WeakMap]\";\n}());\n\n\n/***/ }),\n\n/***/ 329:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5830882__) {\n\n\"use strict\";\n\n\nvar isValue           = __nested_webpack_require_5830882__(95296)\n  , setPrototypeOf    = __nested_webpack_require_5830882__(1496)\n  , object            = __nested_webpack_require_5830882__(98976)\n  , ensureValue       = __nested_webpack_require_5830882__(36672)\n  , randomUniq        = __nested_webpack_require_5830882__(43043)\n  , d                 = __nested_webpack_require_5830882__(62072)\n  , getIterator       = __nested_webpack_require_5830882__(66661)\n  , forOf             = __nested_webpack_require_5830882__(27515)\n  , toStringTagSymbol = (__nested_webpack_require_5830882__(8260).toStringTag)\n  , isNative          = __nested_webpack_require_5830882__(96416)\n\n  , isArray = Array.isArray, defineProperty = Object.defineProperty\n  , objHasOwnProperty = Object.prototype.hasOwnProperty, getPrototypeOf = Object.getPrototypeOf\n  , WeakMapPoly;\n\nmodule.exports = WeakMapPoly = function (/* Iterable*/) {\n\tvar iterable = arguments[0], self;\n\n\tif (!(this instanceof WeakMapPoly)) throw new TypeError(\"Constructor requires 'new'\");\n\tself = isNative && setPrototypeOf && (WeakMap !== WeakMapPoly)\n\t\t? setPrototypeOf(new WeakMap(), getPrototypeOf(this)) : this;\n\n\tif (isValue(iterable)) {\n\t\tif (!isArray(iterable)) iterable = getIterator(iterable);\n\t}\n\tdefineProperty(self, \"__weakMapData__\", d(\"c\", \"$weakMap$\" + randomUniq()));\n\tif (!iterable) return self;\n\tforOf(iterable, function (val) {\n\t\tensureValue(val);\n\t\tself.set(val[0], val[1]);\n\t});\n\treturn self;\n};\n\nif (isNative) {\n\tif (setPrototypeOf) setPrototypeOf(WeakMapPoly, WeakMap);\n\tWeakMapPoly.prototype = Object.create(WeakMap.prototype, { constructor: d(WeakMapPoly) });\n}\n\nObject.defineProperties(WeakMapPoly.prototype, {\n\tdelete: d(function (key) {\n\t\tif (objHasOwnProperty.call(object(key), this.__weakMapData__)) {\n\t\t\tdelete key[this.__weakMapData__];\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}),\n\tget: d(function (key) {\n\t\tif (!objHasOwnProperty.call(object(key), this.__weakMapData__)) return undefined;\n\t\treturn key[this.__weakMapData__];\n\t}),\n\thas: d(function (key) {\n\t\treturn objHasOwnProperty.call(object(key), this.__weakMapData__);\n\t}),\n\tset: d(function (key, value) {\n\t\tdefineProperty(object(key), this.__weakMapData__, d(\"c\", value));\n\t\treturn this;\n\t}),\n\ttoString: d(function () {\n\t\treturn \"[object WeakMap]\";\n\t})\n});\ndefineProperty(WeakMapPoly.prototype, toStringTagSymbol, d(\"c\", \"WeakMap\"));\n\n\n/***/ }),\n\n/***/ 15398:\n/***/ (function(module) {\n\n\"use strict\";\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n\n\n/***/ }),\n\n/***/ 60774:\n/***/ (function(module) {\n\nvar naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of Object.prototype being sealed (via preventExtensions, seal or freeze)\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ is resolved with global context, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n\n\n/***/ }),\n\n/***/ 94908:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5849239__) {\n\n\"use strict\";\n\n\nmodule.exports = __nested_webpack_require_5849239__(51152)() ? globalThis : __nested_webpack_require_5849239__(60774);\n\n\n/***/ }),\n\n/***/ 51152:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function () {\n\tif (typeof globalThis !== \"object\") return false;\n\tif (!globalThis) return false;\n\treturn globalThis.Array === Array;\n};\n\n\n/***/ }),\n\n/***/ 92770:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5849666__) {\n\n\"use strict\";\n/**\n * inspired by is-number <https://github.com/jonschlinkert/is-number>\n * but significantly simplified and sped up by ignoring number and string constructors\n * ie these return false:\n *   new Number(1)\n *   new String('1')\n */\n\n\n\nvar allBlankCharCodes = __nested_webpack_require_5849666__(18546);\n\nmodule.exports = function(n) {\n    var type = typeof n;\n    if(type === 'string') {\n        var original = n;\n        n = +n;\n        // whitespace strings cast to zero - filter them out\n        if(n===0 && allBlankCharCodes(original)) return false;\n    }\n    else if(type !== 'number') return false;\n\n    return n - n < 1;\n};\n\n\n/***/ }),\n\n/***/ 30120:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5850394__) {\n\n/*eslint new-cap:0*/\nvar dtype = __nested_webpack_require_5850394__(90660)\n\nmodule.exports = flattenVertexData\n\nfunction flattenVertexData (data, output, offset) {\n  if (!data) throw new TypeError('must specify data as first parameter')\n  offset = +(offset || 0) | 0\n\n  if (Array.isArray(data) && (data[0] && typeof data[0][0] === 'number')) {\n    var dim = data[0].length\n    var length = data.length * dim\n    var i, j, k, l\n\n    // no output specified, create a new typed array\n    if (!output || typeof output === 'string') {\n      output = new (dtype(output || 'float32'))(length + offset)\n    }\n\n    var dstLength = output.length - offset\n    if (length !== dstLength) {\n      throw new Error('source length ' + length + ' (' + dim + 'x' + data.length + ')' +\n        ' does not match destination length ' + dstLength)\n    }\n\n    for (i = 0, k = offset; i < data.length; i++) {\n      for (j = 0; j < dim; j++) {\n        output[k++] = data[i][j] === null ? NaN : data[i][j]\n      }\n    }\n  } else {\n    if (!output || typeof output === 'string') {\n      // no output, create a new one\n      var Ctor = dtype(output || 'float32')\n\n      // handle arrays separately due to possible nulls\n      if (Array.isArray(data) || output === 'array') {\n        output = new Ctor(data.length + offset)\n        for (i = 0, k = offset, l = output.length; k < l; k++, i++) {\n          output[k] = data[i] === null ? NaN : data[i]\n        }\n      } else {\n        if (offset === 0) {\n          output = new Ctor(data)\n        } else {\n          output = new Ctor(data.length + offset)\n\n          output.set(data, offset)\n        }\n      }\n    } else {\n      // store output in existing array\n      output.set(data, offset)\n    }\n  }\n\n  return output\n}\n\n\n/***/ }),\n\n/***/ 68016:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5852219__) {\n\n\"use strict\";\n\r\n\r\nvar stringifyFont = __nested_webpack_require_5852219__(53313)\r\nvar defaultChars = [32, 126]\r\n\r\nmodule.exports = atlas\r\n\r\nfunction atlas(options) {\r\n  options = options || {}\r\n\r\n  var shape  = options.shape ? options.shape : options.canvas ? [options.canvas.width, options.canvas.height] : [512, 512]\r\n  var canvas = options.canvas || document.createElement('canvas')\r\n  var font   = options.font\r\n  var step   = typeof options.step === 'number' ? [options.step, options.step] : options.step || [32, 32]\r\n  var chars  = options.chars || defaultChars\r\n\r\n  if (font && typeof font !== 'string') font = stringifyFont(font)\r\n\r\n  if (!Array.isArray(chars)) {\r\n    chars = String(chars).split('')\r\n  } else\r\n  if (chars.length === 2\r\n    && typeof chars[0] === 'number'\r\n    && typeof chars[1] === 'number'\r\n  ) {\r\n    var newchars = []\r\n\r\n    for (var i = chars[0], j = 0; i <= chars[1]; i++) {\r\n      newchars[j++] = String.fromCharCode(i)\r\n    }\r\n\r\n    chars = newchars\r\n  }\r\n\r\n  shape = shape.slice()\r\n  canvas.width  = shape[0]\r\n  canvas.height = shape[1]\r\n\r\n  var ctx = canvas.getContext('2d')\r\n\r\n  ctx.fillStyle = '#000'\r\n  ctx.fillRect(0, 0, canvas.width, canvas.height)\r\n\r\n  ctx.font = font\r\n  ctx.textAlign = 'center'\r\n  ctx.textBaseline = 'middle'\r\n  ctx.fillStyle = '#fff'\r\n\r\n  var x = step[0] / 2\r\n  var y = step[1] / 2\r\n  for (var i = 0; i < chars.length; i++) {\r\n    ctx.fillText(chars[i], x, y)\r\n    if ((x += step[0]) > shape[0] - step[0]/2) (x = step[0]/2), (y += step[1])\r\n  }\r\n\r\n  return canvas\r\n}\r\n\n\n/***/ }),\n\n/***/ 32879:\n/***/ (function(module) {\n\n\"use strict\";\n\r\n\r\nmodule.exports = measure\r\n\r\nmeasure.canvas = document.createElement('canvas')\r\nmeasure.cache = {}\r\n\r\nfunction measure (font, o) {\r\n\tif (!o) o = {}\r\n\r\n\tif (typeof font === 'string' || Array.isArray(font)) {\r\n\t\to.family = font\r\n\t}\r\n\r\n\tvar family = Array.isArray(o.family) ? o.family.join(', ') : o.family\r\n\tif (!family) throw Error('`family` must be defined')\r\n\r\n\tvar fs = o.size || o.fontSize || o.em || 48\r\n\tvar weight = o.weight || o.fontWeight || ''\r\n\tvar style = o.style || o.fontStyle || ''\r\n\tvar font = [style, weight, fs].join(' ') + 'px ' + family\r\n\tvar origin = o.origin || 'top'\r\n\r\n\tif (measure.cache[family]) {\r\n\t\t// return more precise values if cache has them\r\n\t\tif (fs <= measure.cache[family].em) {\r\n\t\t\treturn applyOrigin(measure.cache[family], origin)\r\n\t\t}\r\n\t}\r\n\r\n\tvar canvas = o.canvas || measure.canvas\r\n\tvar ctx = canvas.getContext('2d')\r\n\tvar chars = {\r\n\t\tupper: o.upper !== undefined ? o.upper : 'H',\r\n\t\tlower: o.lower !== undefined ? o.lower : 'x',\r\n\t\tdescent: o.descent !== undefined ? o.descent : 'p',\r\n\t\tascent: o.ascent !== undefined ? o.ascent : 'h',\r\n\t\ttittle: o.tittle !== undefined ? o.tittle : 'i',\r\n\t\tovershoot: o.overshoot !== undefined ? o.overshoot : 'O'\r\n\t}\r\n\tvar l = Math.ceil(fs * 1.5)\r\n\tcanvas.height = l\r\n\tcanvas.width = l * .5\r\n\tctx.font = font\r\n\r\n\tvar char = 'H'\r\n\tvar result = {\r\n\t\ttop: 0\r\n\t}\r\n\r\n\t// measure line-height\r\n\tctx.clearRect(0, 0, l, l)\r\n\tctx.textBaseline = 'top'\r\n\tctx.fillStyle = 'black'\r\n\tctx.fillText(char, 0, 0)\r\n\tvar topPx = firstTop(ctx.getImageData(0, 0, l, l))\r\n\tctx.clearRect(0, 0, l, l)\r\n\tctx.textBaseline = 'bottom'\r\n\tctx.fillText(char, 0, l)\r\n\tvar bottomPx = firstTop(ctx.getImageData(0, 0, l, l))\r\n\tresult.lineHeight =\r\n\tresult.bottom = l - bottomPx + topPx\r\n\r\n\t// measure baseline\r\n\tctx.clearRect(0, 0, l, l)\r\n\tctx.textBaseline = 'alphabetic'\r\n\tctx.fillText(char, 0, l)\r\n\tvar baselinePx = firstTop(ctx.getImageData(0, 0, l, l))\r\n\tvar baseline = l - baselinePx - 1 + topPx\r\n\tresult.baseline =\r\n\tresult.alphabetic = baseline\r\n\r\n\t// measure median\r\n\tctx.clearRect(0, 0, l, l)\r\n\tctx.textBaseline = 'middle'\r\n\tctx.fillText(char, 0, l * .5)\r\n\tvar medianPx = firstTop(ctx.getImageData(0, 0, l, l))\r\n\tresult.median =\r\n\tresult.middle = l - medianPx - 1 + topPx - l * .5\r\n\r\n\t// measure hanging\r\n\tctx.clearRect(0, 0, l, l)\r\n\tctx.textBaseline = 'hanging'\r\n\tctx.fillText(char, 0, l * .5)\r\n\tvar hangingPx = firstTop(ctx.getImageData(0, 0, l, l))\r\n\tresult.hanging = l - hangingPx - 1 + topPx - l * .5\r\n\r\n\t// measure ideographic\r\n\tctx.clearRect(0, 0, l, l)\r\n\tctx.textBaseline = 'ideographic'\r\n\tctx.fillText(char, 0, l)\r\n\tvar ideographicPx = firstTop(ctx.getImageData(0, 0, l, l))\r\n\tresult.ideographic = l - ideographicPx - 1 + topPx\r\n\r\n\t// measure cap\r\n\tif (chars.upper) {\r\n\t\tctx.clearRect(0, 0, l, l)\r\n\t\tctx.textBaseline = 'top'\r\n\t\tctx.fillText(chars.upper, 0, 0)\r\n\t\tresult.upper = firstTop(ctx.getImageData(0, 0, l, l))\r\n\t\tresult.capHeight = (result.baseline - result.upper)\r\n\t}\r\n\r\n\t// measure x\r\n\tif (chars.lower) {\r\n\t\tctx.clearRect(0, 0, l, l)\r\n\t\tctx.textBaseline = 'top'\r\n\t\tctx.fillText(chars.lower, 0, 0)\r\n\t\tresult.lower = firstTop(ctx.getImageData(0, 0, l, l))\r\n\t\tresult.xHeight = (result.baseline - result.lower)\r\n\t}\r\n\r\n\t// measure tittle\r\n\tif (chars.tittle) {\r\n\t\tctx.clearRect(0, 0, l, l)\r\n\t\tctx.textBaseline = 'top'\r\n\t\tctx.fillText(chars.tittle, 0, 0)\r\n\t\tresult.tittle = firstTop(ctx.getImageData(0, 0, l, l))\r\n\t}\r\n\r\n\t// measure ascent\r\n\tif (chars.ascent) {\r\n\t\tctx.clearRect(0, 0, l, l)\r\n\t\tctx.textBaseline = 'top'\r\n\t\tctx.fillText(chars.ascent, 0, 0)\r\n\t\tresult.ascent = firstTop(ctx.getImageData(0, 0, l, l))\r\n\t}\r\n\r\n\t// measure descent\r\n\tif (chars.descent) {\r\n\t\tctx.clearRect(0, 0, l, l)\r\n\t\tctx.textBaseline = 'top'\r\n\t\tctx.fillText(chars.descent, 0, 0)\r\n\t\tresult.descent = firstBottom(ctx.getImageData(0, 0, l, l))\r\n\t}\r\n\r\n\t// measure overshoot\r\n\tif (chars.overshoot) {\r\n\t\tctx.clearRect(0, 0, l, l)\r\n\t\tctx.textBaseline = 'top'\r\n\t\tctx.fillText(chars.overshoot, 0, 0)\r\n\t\tvar overshootPx = firstBottom(ctx.getImageData(0, 0, l, l))\r\n\t\tresult.overshoot = overshootPx - baseline\r\n\t}\r\n\r\n\t// normalize result\r\n\tfor (var name in result) {\r\n\t\tresult[name] /= fs\r\n\t}\r\n\r\n\tresult.em = fs\r\n\tmeasure.cache[family] = result\r\n\r\n\treturn applyOrigin(result, origin)\r\n}\r\n\r\nfunction applyOrigin(obj, origin) {\r\n\tvar res = {}\r\n\tif (typeof origin === 'string') origin = obj[origin]\r\n\tfor (var name in obj) {\r\n\t\tif (name === 'em') continue\r\n\t\tres[name] = obj[name] - origin\r\n\t}\r\n\treturn res\r\n}\r\n\r\nfunction firstTop(iData) {\r\n\tvar l = iData.height\r\n\tvar data = iData.data\r\n\tfor (var i = 3; i < data.length; i+=4) {\r\n\t\tif (data[i] !== 0) {\r\n\t\t\treturn Math.floor((i - 3) *.25 / l)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction firstBottom(iData) {\r\n\tvar l = iData.height\r\n\tvar data = iData.data\r\n\tfor (var i = data.length - 1; i > 0; i -= 4) {\r\n\t\tif (data[i] !== 0) {\r\n\t\t\treturn Math.floor((i - 3) *.25 / l)\r\n\t\t}\r\n\t}\r\n}\r\n\n\n/***/ }),\n\n/***/ 86165:\n/***/ (function(module) {\n\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n    if (toString.call(fn) !== '[object Function]') {\n        throw new TypeError('iterator must be a function');\n    }\n    var l = obj.length;\n    if (l === +l) {\n        for (var i = 0; i < l; i++) {\n            fn.call(ctx, obj[i], i, obj);\n        }\n    } else {\n        for (var k in obj) {\n            if (hasOwn.call(obj, k)) {\n                fn.call(ctx, obj[k], k, obj);\n            }\n        }\n    }\n};\n\n\n\n/***/ }),\n\n/***/ 73047:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slice.call(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                args.concat(slice.call(arguments))\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        } else {\n            return target.apply(\n                that,\n                args.concat(slice.call(arguments))\n            );\n        }\n    };\n\n    var boundLength = Math.max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs.push('$' + i);\n    }\n\n    bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n\n\n/***/ }),\n\n/***/ 77575:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5860864__) {\n\n\"use strict\";\n\n\nvar implementation = __nested_webpack_require_5860864__(73047);\n\nmodule.exports = Function.prototype.bind || implementation;\n\n\n/***/ }),\n\n/***/ 86249:\n/***/ (function(module) {\n\nmodule.exports = getCanvasContext\nfunction getCanvasContext (type, opts) {\n  if (typeof type !== 'string') {\n    throw new TypeError('must specify type string')\n  }\n\n  opts = opts || {}\n\n  if (typeof document === 'undefined' && !opts.canvas) {\n    return null // check for Node\n  }\n\n  var canvas = opts.canvas || document.createElement('canvas')\n  if (typeof opts.width === 'number') {\n    canvas.width = opts.width\n  }\n  if (typeof opts.height === 'number') {\n    canvas.height = opts.height\n  }\n\n  var attribs = opts\n  var gl\n  try {\n    var names = [ type ]\n    // prefix GL contexts\n    if (type.indexOf('webgl') === 0) {\n      names.push('experimental-' + type)\n    }\n\n    for (var i = 0; i < names.length; i++) {\n      gl = canvas.getContext(names[i], attribs)\n      if (gl) return gl\n    }\n  } catch (e) {\n    gl = null\n  }\n  return (gl || null) // ensure null on fail\n}\n\n\n/***/ }),\n\n/***/ 68318:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5862021__) {\n\n\"use strict\";\n\n\n/* globals\n\tAggregateError,\n\tAtomics,\n\tFinalizationRegistry,\n\tSharedArrayBuffer,\n\tWeakRef,\n*/\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\t// eslint-disable-next-line no-new-func\n\t\treturn Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = __nested_webpack_require_5862021__(57877)();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar asyncGenFunction = getEvalledConstructor('async function* () {}');\nvar asyncGenFunctionPrototype = asyncGenFunction ? asyncGenFunction.prototype : undefined;\nvar asyncGenPrototype = asyncGenFunctionPrototype ? asyncGenFunctionPrototype.prototype : undefined;\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': getEvalledConstructor('async function () {}'),\n\t'%AsyncGenerator%': asyncGenFunctionPrototype,\n\t'%AsyncGeneratorFunction%': asyncGenFunction,\n\t'%AsyncIteratorPrototype%': asyncGenPrototype ? getProto(asyncGenPrototype) : undefined,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': getEvalledConstructor('function* () {}'),\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = __nested_webpack_require_5862021__(77575);\nvar hasOwn = __nested_webpack_require_5862021__(35065);\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\n\n/***/ }),\n\n/***/ 85400:\n/***/ (function(module) {\n\nmodule.exports = adjoint;\n\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nfunction adjoint(out, a) {\n    var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n        a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n        a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n        a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n\n    out[0]  =  (a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22));\n    out[1]  = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n    out[2]  =  (a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12));\n    out[3]  = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n    out[4]  = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n    out[5]  =  (a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22));\n    out[6]  = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n    out[7]  =  (a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12));\n    out[8]  =  (a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21));\n    out[9]  = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n    out[10] =  (a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11));\n    out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n    out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n    out[13] =  (a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21));\n    out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n    out[15] =  (a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11));\n    return out;\n};\n\n/***/ }),\n\n/***/ 42331:\n/***/ (function(module) {\n\nmodule.exports = clone;\n\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {mat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\nfunction clone(a) {\n    var out = new Float32Array(16);\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    out[4] = a[4];\n    out[5] = a[5];\n    out[6] = a[6];\n    out[7] = a[7];\n    out[8] = a[8];\n    out[9] = a[9];\n    out[10] = a[10];\n    out[11] = a[11];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n    return out;\n};\n\n/***/ }),\n\n/***/ 31042:\n/***/ (function(module) {\n\nmodule.exports = copy;\n\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nfunction copy(out, a) {\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    out[4] = a[4];\n    out[5] = a[5];\n    out[6] = a[6];\n    out[7] = a[7];\n    out[8] = a[8];\n    out[9] = a[9];\n    out[10] = a[10];\n    out[11] = a[11];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n    return out;\n};\n\n/***/ }),\n\n/***/ 11902:\n/***/ (function(module) {\n\nmodule.exports = create;\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\nfunction create() {\n    var out = new Float32Array(16);\n    out[0] = 1;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = 1;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[10] = 1;\n    out[11] = 0;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = 0;\n    out[15] = 1;\n    return out;\n};\n\n/***/ }),\n\n/***/ 89887:\n/***/ (function(module) {\n\nmodule.exports = determinant;\n\n/**\n * Calculates the determinant of a mat4\n *\n * @param {mat4} a the source matrix\n * @returns {Number} determinant of a\n */\nfunction determinant(a) {\n    var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n        a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n        a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n        a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15],\n\n        b00 = a00 * a11 - a01 * a10,\n        b01 = a00 * a12 - a02 * a10,\n        b02 = a00 * a13 - a03 * a10,\n        b03 = a01 * a12 - a02 * a11,\n        b04 = a01 * a13 - a03 * a11,\n        b05 = a02 * a13 - a03 * a12,\n        b06 = a20 * a31 - a21 * a30,\n        b07 = a20 * a32 - a22 * a30,\n        b08 = a20 * a33 - a23 * a30,\n        b09 = a21 * a32 - a22 * a31,\n        b10 = a21 * a33 - a23 * a31,\n        b11 = a22 * a33 - a23 * a32;\n\n    // Calculate the determinant\n    return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n};\n\n/***/ }),\n\n/***/ 27812:\n/***/ (function(module) {\n\nmodule.exports = fromQuat;\n\n/**\n * Creates a matrix from a quaternion rotation.\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @returns {mat4} out\n */\nfunction fromQuat(out, q) {\n    var x = q[0], y = q[1], z = q[2], w = q[3],\n        x2 = x + x,\n        y2 = y + y,\n        z2 = z + z,\n\n        xx = x * x2,\n        yx = y * x2,\n        yy = y * y2,\n        zx = z * x2,\n        zy = z * y2,\n        zz = z * z2,\n        wx = w * x2,\n        wy = w * y2,\n        wz = w * z2;\n\n    out[0] = 1 - yy - zz;\n    out[1] = yx + wz;\n    out[2] = zx - wy;\n    out[3] = 0;\n\n    out[4] = yx - wz;\n    out[5] = 1 - xx - zz;\n    out[6] = zy + wx;\n    out[7] = 0;\n\n    out[8] = zx + wy;\n    out[9] = zy - wx;\n    out[10] = 1 - xx - yy;\n    out[11] = 0;\n\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = 0;\n    out[15] = 1;\n\n    return out;\n};\n\n/***/ }),\n\n/***/ 34045:\n/***/ (function(module) {\n\nmodule.exports = fromRotation\n\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest)\n *     mat4.rotate(dest, dest, rad, axis)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {vec3} axis the axis to rotate around\n * @returns {mat4} out\n */\nfunction fromRotation(out, rad, axis) {\n  var s, c, t\n  var x = axis[0]\n  var y = axis[1]\n  var z = axis[2]\n  var len = Math.sqrt(x * x + y * y + z * z)\n\n  if (Math.abs(len) < 0.000001) {\n    return null\n  }\n\n  len = 1 / len\n  x *= len\n  y *= len\n  z *= len\n\n  s = Math.sin(rad)\n  c = Math.cos(rad)\n  t = 1 - c\n\n  // Perform rotation-specific matrix multiplication\n  out[0] = x * x * t + c\n  out[1] = y * x * t + z * s\n  out[2] = z * x * t - y * s\n  out[3] = 0\n  out[4] = x * y * t - z * s\n  out[5] = y * y * t + c\n  out[6] = z * y * t + x * s\n  out[7] = 0\n  out[8] = x * z * t + y * s\n  out[9] = y * z * t - x * s\n  out[10] = z * z * t + c\n  out[11] = 0\n  out[12] = 0\n  out[13] = 0\n  out[14] = 0\n  out[15] = 1\n  return out\n}\n\n\n/***/ }),\n\n/***/ 45973:\n/***/ (function(module) {\n\nmodule.exports = fromRotationTranslation;\n\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, vec);\n *     var quatMat = mat4.create();\n *     quat4.toMat4(quat, quatMat);\n *     mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {vec3} v Translation vector\n * @returns {mat4} out\n */\nfunction fromRotationTranslation(out, q, v) {\n    // Quaternion math\n    var x = q[0], y = q[1], z = q[2], w = q[3],\n        x2 = x + x,\n        y2 = y + y,\n        z2 = z + z,\n\n        xx = x * x2,\n        xy = x * y2,\n        xz = x * z2,\n        yy = y * y2,\n        yz = y * z2,\n        zz = z * z2,\n        wx = w * x2,\n        wy = w * y2,\n        wz = w * z2;\n\n    out[0] = 1 - (yy + zz);\n    out[1] = xy + wz;\n    out[2] = xz - wy;\n    out[3] = 0;\n    out[4] = xy - wz;\n    out[5] = 1 - (xx + zz);\n    out[6] = yz + wx;\n    out[7] = 0;\n    out[8] = xz + wy;\n    out[9] = yz - wx;\n    out[10] = 1 - (xx + yy);\n    out[11] = 0;\n    out[12] = v[0];\n    out[13] = v[1];\n    out[14] = v[2];\n    out[15] = 1;\n    \n    return out;\n};\n\n/***/ }),\n\n/***/ 81472:\n/***/ (function(module) {\n\nmodule.exports = fromScaling\n\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest)\n *     mat4.scale(dest, dest, vec)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {vec3} v Scaling vector\n * @returns {mat4} out\n */\nfunction fromScaling(out, v) {\n  out[0] = v[0]\n  out[1] = 0\n  out[2] = 0\n  out[3] = 0\n  out[4] = 0\n  out[5] = v[1]\n  out[6] = 0\n  out[7] = 0\n  out[8] = 0\n  out[9] = 0\n  out[10] = v[2]\n  out[11] = 0\n  out[12] = 0\n  out[13] = 0\n  out[14] = 0\n  out[15] = 1\n  return out\n}\n\n\n/***/ }),\n\n/***/ 14669:\n/***/ (function(module) {\n\nmodule.exports = fromTranslation\n\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest)\n *     mat4.translate(dest, dest, vec)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {vec3} v Translation vector\n * @returns {mat4} out\n */\nfunction fromTranslation(out, v) {\n  out[0] = 1\n  out[1] = 0\n  out[2] = 0\n  out[3] = 0\n  out[4] = 0\n  out[5] = 1\n  out[6] = 0\n  out[7] = 0\n  out[8] = 0\n  out[9] = 0\n  out[10] = 1\n  out[11] = 0\n  out[12] = v[0]\n  out[13] = v[1]\n  out[14] = v[2]\n  out[15] = 1\n  return out\n}\n\n\n/***/ }),\n\n/***/ 75262:\n/***/ (function(module) {\n\nmodule.exports = fromXRotation\n\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest)\n *     mat4.rotateX(dest, dest, rad)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction fromXRotation(out, rad) {\n    var s = Math.sin(rad),\n        c = Math.cos(rad)\n\n    // Perform axis-specific matrix multiplication\n    out[0] = 1\n    out[1] = 0\n    out[2] = 0\n    out[3] = 0\n    out[4] = 0\n    out[5] = c\n    out[6] = s\n    out[7] = 0\n    out[8] = 0\n    out[9] = -s\n    out[10] = c\n    out[11] = 0\n    out[12] = 0\n    out[13] = 0\n    out[14] = 0\n    out[15] = 1\n    return out\n}\n\n/***/ }),\n\n/***/ 331:\n/***/ (function(module) {\n\nmodule.exports = fromYRotation\n\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest)\n *     mat4.rotateY(dest, dest, rad)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction fromYRotation(out, rad) {\n    var s = Math.sin(rad),\n        c = Math.cos(rad)\n\n    // Perform axis-specific matrix multiplication\n    out[0] = c\n    out[1] = 0\n    out[2] = -s\n    out[3] = 0\n    out[4] = 0\n    out[5] = 1\n    out[6] = 0\n    out[7] = 0\n    out[8] = s\n    out[9] = 0\n    out[10] = c\n    out[11] = 0\n    out[12] = 0\n    out[13] = 0\n    out[14] = 0\n    out[15] = 1\n    return out\n}\n\n/***/ }),\n\n/***/ 11049:\n/***/ (function(module) {\n\nmodule.exports = fromZRotation\n\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest)\n *     mat4.rotateZ(dest, dest, rad)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction fromZRotation(out, rad) {\n    var s = Math.sin(rad),\n        c = Math.cos(rad)\n\n    // Perform axis-specific matrix multiplication\n    out[0] = c\n    out[1] = s\n    out[2] = 0\n    out[3] = 0\n    out[4] = -s\n    out[5] = c\n    out[6] = 0\n    out[7] = 0\n    out[8] = 0\n    out[9] = 0\n    out[10] = 1\n    out[11] = 0\n    out[12] = 0\n    out[13] = 0\n    out[14] = 0\n    out[15] = 1\n    return out\n}\n\n/***/ }),\n\n/***/ 75195:\n/***/ (function(module) {\n\nmodule.exports = frustum;\n\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction frustum(out, left, right, bottom, top, near, far) {\n    var rl = 1 / (right - left),\n        tb = 1 / (top - bottom),\n        nf = 1 / (near - far);\n    out[0] = (near * 2) * rl;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = (near * 2) * tb;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = (right + left) * rl;\n    out[9] = (top + bottom) * tb;\n    out[10] = (far + near) * nf;\n    out[11] = -1;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = (far * near * 2) * nf;\n    out[15] = 0;\n    return out;\n};\n\n/***/ }),\n\n/***/ 71551:\n/***/ (function(module) {\n\nmodule.exports = identity;\n\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\nfunction identity(out) {\n    out[0] = 1;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = 1;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[10] = 1;\n    out[11] = 0;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = 0;\n    out[15] = 1;\n    return out;\n};\n\n/***/ }),\n\n/***/ 79576:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5888117__) {\n\nmodule.exports = {\n  create: __nested_webpack_require_5888117__(11902)\n  , clone: __nested_webpack_require_5888117__(42331)\n  , copy: __nested_webpack_require_5888117__(31042)\n  , identity: __nested_webpack_require_5888117__(71551)\n  , transpose: __nested_webpack_require_5888117__(88654)\n  , invert: __nested_webpack_require_5888117__(95874)\n  , adjoint: __nested_webpack_require_5888117__(85400)\n  , determinant: __nested_webpack_require_5888117__(89887)\n  , multiply: __nested_webpack_require_5888117__(91362)\n  , translate: __nested_webpack_require_5888117__(31283)\n  , scale: __nested_webpack_require_5888117__(10789)\n  , rotate: __nested_webpack_require_5888117__(65074)\n  , rotateX: __nested_webpack_require_5888117__(35545)\n  , rotateY: __nested_webpack_require_5888117__(94918)\n  , rotateZ: __nested_webpack_require_5888117__(15692)\n  , fromRotation: __nested_webpack_require_5888117__(34045)\n  , fromRotationTranslation: __nested_webpack_require_5888117__(45973)\n  , fromScaling: __nested_webpack_require_5888117__(81472)\n  , fromTranslation: __nested_webpack_require_5888117__(14669)\n  , fromXRotation: __nested_webpack_require_5888117__(75262)\n  , fromYRotation: __nested_webpack_require_5888117__(331)\n  , fromZRotation: __nested_webpack_require_5888117__(11049)\n  , fromQuat: __nested_webpack_require_5888117__(27812)\n  , frustum: __nested_webpack_require_5888117__(75195)\n  , perspective: __nested_webpack_require_5888117__(7864)\n  , perspectiveFromFieldOfView: __nested_webpack_require_5888117__(35279)\n  , ortho: __nested_webpack_require_5888117__(60378)\n  , lookAt: __nested_webpack_require_5888117__(65551)\n  , str: __nested_webpack_require_5888117__(6726)\n}\n\n\n/***/ }),\n\n/***/ 95874:\n/***/ (function(module) {\n\nmodule.exports = invert;\n\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nfunction invert(out, a) {\n    var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n        a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n        a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n        a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15],\n\n        b00 = a00 * a11 - a01 * a10,\n        b01 = a00 * a12 - a02 * a10,\n        b02 = a00 * a13 - a03 * a10,\n        b03 = a01 * a12 - a02 * a11,\n        b04 = a01 * a13 - a03 * a11,\n        b05 = a02 * a13 - a03 * a12,\n        b06 = a20 * a31 - a21 * a30,\n        b07 = a20 * a32 - a22 * a30,\n        b08 = a20 * a33 - a23 * a30,\n        b09 = a21 * a32 - a22 * a31,\n        b10 = a21 * a33 - a23 * a31,\n        b11 = a22 * a33 - a23 * a32,\n\n        // Calculate the determinant\n        det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n    if (!det) { \n        return null; \n    }\n    det = 1.0 / det;\n\n    out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n    out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n    out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n    out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n    out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n    out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n    out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n    out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n    out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n    out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n    out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n    out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n    out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n    out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n    out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n    out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n\n    return out;\n};\n\n/***/ }),\n\n/***/ 65551:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5891483__) {\n\nvar identity = __nested_webpack_require_5891483__(71551);\n\nmodule.exports = lookAt;\n\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {vec3} eye Position of the viewer\n * @param {vec3} center Point the viewer is looking at\n * @param {vec3} up vec3 pointing up\n * @returns {mat4} out\n */\nfunction lookAt(out, eye, center, up) {\n    var x0, x1, x2, y0, y1, y2, z0, z1, z2, len,\n        eyex = eye[0],\n        eyey = eye[1],\n        eyez = eye[2],\n        upx = up[0],\n        upy = up[1],\n        upz = up[2],\n        centerx = center[0],\n        centery = center[1],\n        centerz = center[2];\n\n    if (Math.abs(eyex - centerx) < 0.000001 &&\n        Math.abs(eyey - centery) < 0.000001 &&\n        Math.abs(eyez - centerz) < 0.000001) {\n        return identity(out);\n    }\n\n    z0 = eyex - centerx;\n    z1 = eyey - centery;\n    z2 = eyez - centerz;\n\n    len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);\n    z0 *= len;\n    z1 *= len;\n    z2 *= len;\n\n    x0 = upy * z2 - upz * z1;\n    x1 = upz * z0 - upx * z2;\n    x2 = upx * z1 - upy * z0;\n    len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);\n    if (!len) {\n        x0 = 0;\n        x1 = 0;\n        x2 = 0;\n    } else {\n        len = 1 / len;\n        x0 *= len;\n        x1 *= len;\n        x2 *= len;\n    }\n\n    y0 = z1 * x2 - z2 * x1;\n    y1 = z2 * x0 - z0 * x2;\n    y2 = z0 * x1 - z1 * x0;\n\n    len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);\n    if (!len) {\n        y0 = 0;\n        y1 = 0;\n        y2 = 0;\n    } else {\n        len = 1 / len;\n        y0 *= len;\n        y1 *= len;\n        y2 *= len;\n    }\n\n    out[0] = x0;\n    out[1] = y0;\n    out[2] = z0;\n    out[3] = 0;\n    out[4] = x1;\n    out[5] = y1;\n    out[6] = z1;\n    out[7] = 0;\n    out[8] = x2;\n    out[9] = y2;\n    out[10] = z2;\n    out[11] = 0;\n    out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n    out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n    out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n    out[15] = 1;\n\n    return out;\n};\n\n/***/ }),\n\n/***/ 91362:\n/***/ (function(module) {\n\nmodule.exports = multiply;\n\n/**\n * Multiplies two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the first operand\n * @param {mat4} b the second operand\n * @returns {mat4} out\n */\nfunction multiply(out, a, b) {\n    var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n        a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n        a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n        a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n\n    // Cache only the current line of the second matrix\n    var b0  = b[0], b1 = b[1], b2 = b[2], b3 = b[3];  \n    out[0] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n    out[1] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n    out[2] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n    out[3] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n    b0 = b[4]; b1 = b[5]; b2 = b[6]; b3 = b[7];\n    out[4] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n    out[5] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n    out[6] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n    out[7] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n    b0 = b[8]; b1 = b[9]; b2 = b[10]; b3 = b[11];\n    out[8] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n    out[9] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n    out[10] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n    out[11] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n    b0 = b[12]; b1 = b[13]; b2 = b[14]; b3 = b[15];\n    out[12] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n    out[13] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n    out[14] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n    out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n    return out;\n};\n\n/***/ }),\n\n/***/ 60378:\n/***/ (function(module) {\n\nmodule.exports = ortho;\n\n/**\n * Generates a orthogonal projection matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction ortho(out, left, right, bottom, top, near, far) {\n    var lr = 1 / (left - right),\n        bt = 1 / (bottom - top),\n        nf = 1 / (near - far);\n    out[0] = -2 * lr;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = -2 * bt;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[10] = 2 * nf;\n    out[11] = 0;\n    out[12] = (left + right) * lr;\n    out[13] = (top + bottom) * bt;\n    out[14] = (far + near) * nf;\n    out[15] = 1;\n    return out;\n};\n\n/***/ }),\n\n/***/ 7864:\n/***/ (function(module) {\n\nmodule.exports = perspective;\n\n/**\n * Generates a perspective projection matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction perspective(out, fovy, aspect, near, far) {\n    var f = 1.0 / Math.tan(fovy / 2),\n        nf = 1 / (near - far);\n    out[0] = f / aspect;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = f;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[10] = (far + near) * nf;\n    out[11] = -1;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = (2 * far * near) * nf;\n    out[15] = 0;\n    return out;\n};\n\n/***/ }),\n\n/***/ 35279:\n/***/ (function(module) {\n\nmodule.exports = perspectiveFromFieldOfView;\n\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction perspectiveFromFieldOfView(out, fov, near, far) {\n    var upTan = Math.tan(fov.upDegrees * Math.PI/180.0),\n        downTan = Math.tan(fov.downDegrees * Math.PI/180.0),\n        leftTan = Math.tan(fov.leftDegrees * Math.PI/180.0),\n        rightTan = Math.tan(fov.rightDegrees * Math.PI/180.0),\n        xScale = 2.0 / (leftTan + rightTan),\n        yScale = 2.0 / (upTan + downTan);\n\n    out[0] = xScale;\n    out[1] = 0.0;\n    out[2] = 0.0;\n    out[3] = 0.0;\n    out[4] = 0.0;\n    out[5] = yScale;\n    out[6] = 0.0;\n    out[7] = 0.0;\n    out[8] = -((leftTan - rightTan) * xScale * 0.5);\n    out[9] = ((upTan - downTan) * yScale * 0.5);\n    out[10] = far / (near - far);\n    out[11] = -1.0;\n    out[12] = 0.0;\n    out[13] = 0.0;\n    out[14] = (far * near) / (near - far);\n    out[15] = 0.0;\n    return out;\n}\n\n\n\n/***/ }),\n\n/***/ 65074:\n/***/ (function(module) {\n\nmodule.exports = rotate;\n\n/**\n * Rotates a mat4 by the given angle\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {vec3} axis the axis to rotate around\n * @returns {mat4} out\n */\nfunction rotate(out, a, rad, axis) {\n    var x = axis[0], y = axis[1], z = axis[2],\n        len = Math.sqrt(x * x + y * y + z * z),\n        s, c, t,\n        a00, a01, a02, a03,\n        a10, a11, a12, a13,\n        a20, a21, a22, a23,\n        b00, b01, b02,\n        b10, b11, b12,\n        b20, b21, b22;\n\n    if (Math.abs(len) < 0.000001) { return null; }\n    \n    len = 1 / len;\n    x *= len;\n    y *= len;\n    z *= len;\n\n    s = Math.sin(rad);\n    c = Math.cos(rad);\n    t = 1 - c;\n\n    a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3];\n    a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7];\n    a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11];\n\n    // Construct the elements of the rotation matrix\n    b00 = x * x * t + c; b01 = y * x * t + z * s; b02 = z * x * t - y * s;\n    b10 = x * y * t - z * s; b11 = y * y * t + c; b12 = z * y * t + x * s;\n    b20 = x * z * t + y * s; b21 = y * z * t - x * s; b22 = z * z * t + c;\n\n    // Perform rotation-specific matrix multiplication\n    out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n    out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n    out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n    out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n    out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n    out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n    out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n    out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n    out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n    out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n    out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n    out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n    if (a !== out) { // If the source and destination differ, copy the unchanged last row\n        out[12] = a[12];\n        out[13] = a[13];\n        out[14] = a[14];\n        out[15] = a[15];\n    }\n    return out;\n};\n\n/***/ }),\n\n/***/ 35545:\n/***/ (function(module) {\n\nmodule.exports = rotateX;\n\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction rotateX(out, a, rad) {\n    var s = Math.sin(rad),\n        c = Math.cos(rad),\n        a10 = a[4],\n        a11 = a[5],\n        a12 = a[6],\n        a13 = a[7],\n        a20 = a[8],\n        a21 = a[9],\n        a22 = a[10],\n        a23 = a[11];\n\n    if (a !== out) { // If the source and destination differ, copy the unchanged rows\n        out[0]  = a[0];\n        out[1]  = a[1];\n        out[2]  = a[2];\n        out[3]  = a[3];\n        out[12] = a[12];\n        out[13] = a[13];\n        out[14] = a[14];\n        out[15] = a[15];\n    }\n\n    // Perform axis-specific matrix multiplication\n    out[4] = a10 * c + a20 * s;\n    out[5] = a11 * c + a21 * s;\n    out[6] = a12 * c + a22 * s;\n    out[7] = a13 * c + a23 * s;\n    out[8] = a20 * c - a10 * s;\n    out[9] = a21 * c - a11 * s;\n    out[10] = a22 * c - a12 * s;\n    out[11] = a23 * c - a13 * s;\n    return out;\n};\n\n/***/ }),\n\n/***/ 94918:\n/***/ (function(module) {\n\nmodule.exports = rotateY;\n\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction rotateY(out, a, rad) {\n    var s = Math.sin(rad),\n        c = Math.cos(rad),\n        a00 = a[0],\n        a01 = a[1],\n        a02 = a[2],\n        a03 = a[3],\n        a20 = a[8],\n        a21 = a[9],\n        a22 = a[10],\n        a23 = a[11];\n\n    if (a !== out) { // If the source and destination differ, copy the unchanged rows\n        out[4]  = a[4];\n        out[5]  = a[5];\n        out[6]  = a[6];\n        out[7]  = a[7];\n        out[12] = a[12];\n        out[13] = a[13];\n        out[14] = a[14];\n        out[15] = a[15];\n    }\n\n    // Perform axis-specific matrix multiplication\n    out[0] = a00 * c - a20 * s;\n    out[1] = a01 * c - a21 * s;\n    out[2] = a02 * c - a22 * s;\n    out[3] = a03 * c - a23 * s;\n    out[8] = a00 * s + a20 * c;\n    out[9] = a01 * s + a21 * c;\n    out[10] = a02 * s + a22 * c;\n    out[11] = a03 * s + a23 * c;\n    return out;\n};\n\n/***/ }),\n\n/***/ 15692:\n/***/ (function(module) {\n\nmodule.exports = rotateZ;\n\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction rotateZ(out, a, rad) {\n    var s = Math.sin(rad),\n        c = Math.cos(rad),\n        a00 = a[0],\n        a01 = a[1],\n        a02 = a[2],\n        a03 = a[3],\n        a10 = a[4],\n        a11 = a[5],\n        a12 = a[6],\n        a13 = a[7];\n\n    if (a !== out) { // If the source and destination differ, copy the unchanged last row\n        out[8]  = a[8];\n        out[9]  = a[9];\n        out[10] = a[10];\n        out[11] = a[11];\n        out[12] = a[12];\n        out[13] = a[13];\n        out[14] = a[14];\n        out[15] = a[15];\n    }\n\n    // Perform axis-specific matrix multiplication\n    out[0] = a00 * c + a10 * s;\n    out[1] = a01 * c + a11 * s;\n    out[2] = a02 * c + a12 * s;\n    out[3] = a03 * c + a13 * s;\n    out[4] = a10 * c - a00 * s;\n    out[5] = a11 * c - a01 * s;\n    out[6] = a12 * c - a02 * s;\n    out[7] = a13 * c - a03 * s;\n    return out;\n};\n\n/***/ }),\n\n/***/ 10789:\n/***/ (function(module) {\n\nmodule.exports = scale;\n\n/**\n * Scales the mat4 by the dimensions in the given vec3\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to scale\n * @param {vec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\nfunction scale(out, a, v) {\n    var x = v[0], y = v[1], z = v[2];\n\n    out[0] = a[0] * x;\n    out[1] = a[1] * x;\n    out[2] = a[2] * x;\n    out[3] = a[3] * x;\n    out[4] = a[4] * y;\n    out[5] = a[5] * y;\n    out[6] = a[6] * y;\n    out[7] = a[7] * y;\n    out[8] = a[8] * z;\n    out[9] = a[9] * z;\n    out[10] = a[10] * z;\n    out[11] = a[11] * z;\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n    return out;\n};\n\n/***/ }),\n\n/***/ 6726:\n/***/ (function(module) {\n\nmodule.exports = str;\n\n/**\n * Returns a string representation of a mat4\n *\n * @param {mat4} mat matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\nfunction str(a) {\n    return 'mat4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ', ' +\n                    a[4] + ', ' + a[5] + ', ' + a[6] + ', ' + a[7] + ', ' +\n                    a[8] + ', ' + a[9] + ', ' + a[10] + ', ' + a[11] + ', ' + \n                    a[12] + ', ' + a[13] + ', ' + a[14] + ', ' + a[15] + ')';\n};\n\n/***/ }),\n\n/***/ 31283:\n/***/ (function(module) {\n\nmodule.exports = translate;\n\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to translate\n * @param {vec3} v vector to translate by\n * @returns {mat4} out\n */\nfunction translate(out, a, v) {\n    var x = v[0], y = v[1], z = v[2],\n        a00, a01, a02, a03,\n        a10, a11, a12, a13,\n        a20, a21, a22, a23;\n\n    if (a === out) {\n        out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n        out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n        out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n        out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n    } else {\n        a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3];\n        a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7];\n        a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11];\n\n        out[0] = a00; out[1] = a01; out[2] = a02; out[3] = a03;\n        out[4] = a10; out[5] = a11; out[6] = a12; out[7] = a13;\n        out[8] = a20; out[9] = a21; out[10] = a22; out[11] = a23;\n\n        out[12] = a00 * x + a10 * y + a20 * z + a[12];\n        out[13] = a01 * x + a11 * y + a21 * z + a[13];\n        out[14] = a02 * x + a12 * y + a22 * z + a[14];\n        out[15] = a03 * x + a13 * y + a23 * z + a[15];\n    }\n\n    return out;\n};\n\n/***/ }),\n\n/***/ 88654:\n/***/ (function(module) {\n\nmodule.exports = transpose;\n\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nfunction transpose(out, a) {\n    // If we are transposing ourselves we can skip a few steps but have to cache some values\n    if (out === a) {\n        var a01 = a[1], a02 = a[2], a03 = a[3],\n            a12 = a[6], a13 = a[7],\n            a23 = a[11];\n\n        out[1] = a[4];\n        out[2] = a[8];\n        out[3] = a[12];\n        out[4] = a01;\n        out[6] = a[9];\n        out[7] = a[13];\n        out[8] = a02;\n        out[9] = a12;\n        out[11] = a[14];\n        out[12] = a03;\n        out[13] = a13;\n        out[14] = a23;\n    } else {\n        out[0] = a[0];\n        out[1] = a[4];\n        out[2] = a[8];\n        out[3] = a[12];\n        out[4] = a[1];\n        out[5] = a[5];\n        out[6] = a[9];\n        out[7] = a[13];\n        out[8] = a[2];\n        out[9] = a[6];\n        out[10] = a[10];\n        out[11] = a[14];\n        out[12] = a[3];\n        out[13] = a[7];\n        out[14] = a[11];\n        out[15] = a[15];\n    }\n    \n    return out;\n};\n\n/***/ }),\n\n/***/ 42505:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5908037__) {\n\n\"use strict\";\n\n\nvar Font = __nested_webpack_require_5908037__(72791)\nvar pick = __nested_webpack_require_5908037__(71299)\nvar createRegl = __nested_webpack_require_5908037__(98580)\nvar createGl = __nested_webpack_require_5908037__(12018)\nvar WeakMap = __nested_webpack_require_5908037__(83522)\nvar rgba = __nested_webpack_require_5908037__(25075)\nvar fontAtlas = __nested_webpack_require_5908037__(68016)\nvar pool = __nested_webpack_require_5908037__(58404)\nvar parseRect = __nested_webpack_require_5908037__(18863)\nvar isObj = __nested_webpack_require_5908037__(10973)\nvar parseUnit = __nested_webpack_require_5908037__(25677)\nvar px = __nested_webpack_require_5908037__(75686)\nvar kerning = __nested_webpack_require_5908037__(53545)\nvar extend = __nested_webpack_require_5908037__(56131)\nvar metrics = __nested_webpack_require_5908037__(32879)\nvar flatten = __nested_webpack_require_5908037__(30120)\nvar ref = __nested_webpack_require_5908037__(13547);\nvar nextPow2 = ref.nextPow2;\n\nvar shaderCache = new WeakMap\n\n\n// Safari does not support font-stretch\nvar isStretchSupported = false\nif (document.body) {\n    var el = document.body.appendChild(document.createElement('div'))\n    el.style.font = 'italic small-caps bold condensed 16px/2 cursive'\n    if (getComputedStyle(el).fontStretch) {\n        isStretchSupported = true\n    }\n    document.body.removeChild(el)\n}\n\nvar GlText = function GlText (o) {\n\tif (isRegl(o)) {\n\t\to = {regl: o}\n\t\tthis.gl = o.regl._gl\n\t}\n\telse {\n\t\tthis.gl = createGl(o)\n\t}\n\n\tthis.shader = shaderCache.get(this.gl)\n\n\tif (!this.shader) {\n\t\tthis.regl = o.regl || createRegl({ gl: this.gl })\n\t}\n\telse {\n\t\tthis.regl = this.shader.regl\n\t}\n\n\tthis.charBuffer = this.regl.buffer({ type: 'uint8', usage: 'stream' })\n\tthis.sizeBuffer = this.regl.buffer({ type: 'float', usage: 'stream' })\n\n\tif (!this.shader) {\n\t\tthis.shader = this.createShader()\n\t\tshaderCache.set(this.gl, this.shader)\n\t}\n\n\tthis.batch = []\n\n\t// multiple options initial state\n\tthis.fontSize = []\n\tthis.font = []\n\tthis.fontAtlas = []\n\n\tthis.draw = this.shader.draw.bind(this)\n\tthis.render = function () {\n\t\t// FIXME: add Safari regl report here:\n\t\t// charBuffer and width just do not trigger\n\t\tthis.regl._refresh()\n\t\tthis.draw(this.batch)\n\t}\n\tthis.canvas = this.gl.canvas\n\n\tthis.update(isObj(o) ? o : {})\n};\n\nGlText.prototype.createShader = function createShader () {\n\tvar regl = this.regl\n\n\tvar draw = regl({\n\t\tblend: {\n\t\t\tenable: true,\n\t\t\tcolor: [0,0,0,1],\n\n\t\t\tfunc: {\n\t\t\t\tsrcRGB: 'src alpha',\n\t\t\t\tdstRGB: 'one minus src alpha',\n\t\t\t\tsrcAlpha: 'one minus dst alpha',\n\t\t\t\tdstAlpha: 'one'\n\t\t\t}\n\t\t},\n\t\tstencil: {enable: false},\n\t\tdepth: {enable: false},\n\n\t\tcount: regl.prop('count'),\n\t\toffset: regl.prop('offset'),\n\t\tattributes: {\n\t\t\tcharOffset: {\n\t\t\t\toffset: 4,\n\t\t\t\tstride: 8,\n\t\t\t\tbuffer: regl.this('sizeBuffer')\n\t\t\t},\n\t\t\twidth: {\n\t\t\t\toffset: 0,\n\t\t\t\tstride: 8,\n\t\t\t\tbuffer: regl.this('sizeBuffer')\n\t\t\t},\n\t\t\tchar: regl.this('charBuffer'),\n\t\t\tposition: regl.this('position')\n\t\t},\n\t\tuniforms: {\n\t\t\tatlasSize: function (c, p) { return [p.atlas.width, p.atlas.height]; },\n\t\t\tatlasDim: function (c, p) { return [p.atlas.cols, p.atlas.rows]; },\n\t\t\tatlas: function (c, p) { return p.atlas.texture; },\n\t\t\tcharStep: function (c, p) { return p.atlas.step; },\n\t\t\tem: function (c, p) { return p.atlas.em; },\n\t\t\tcolor: regl.prop('color'),\n\t\t\topacity: regl.prop('opacity'),\n\t\t\tviewport: regl.this('viewportArray'),\n\t\t\tscale: regl.this('scale'),\n\t\t\talign: regl.prop('align'),\n\t\t\tbaseline: regl.prop('baseline'),\n\t\t\ttranslate: regl.this('translate'),\n\t\t\tpositionOffset: regl.prop('positionOffset')\n\t\t},\n\t\tprimitive: 'points',\n\t\tviewport: regl.this('viewport'),\n\n\t\tvert: \"\\n\\t\\t\\tprecision highp float;\\n\\t\\t\\tattribute float width, charOffset, char;\\n\\t\\t\\tattribute vec2 position;\\n\\t\\t\\tuniform float fontSize, charStep, em, align, baseline;\\n\\t\\t\\tuniform vec4 viewport;\\n\\t\\t\\tuniform vec4 color;\\n\\t\\t\\tuniform vec2 atlasSize, atlasDim, scale, translate, positionOffset;\\n\\t\\t\\tvarying vec2 charCoord, charId;\\n\\t\\t\\tvarying float charWidth;\\n\\t\\t\\tvarying vec4 fontColor;\\n\\t\\t\\tvoid main () {\\n\\t\\t\\t\\tvec2 offset = floor(em * (vec2(align + charOffset, baseline)\\n\\t\\t\\t\\t\\t+ vec2(positionOffset.x, -positionOffset.y)))\\n\\t\\t\\t\\t\\t/ (viewport.zw * scale.xy);\\n\\n\\t\\t\\t\\tvec2 position = (position + translate) * scale;\\n\\t\\t\\t\\tposition += offset * scale;\\n\\n\\t\\t\\t\\tcharCoord = position * viewport.zw + viewport.xy;\\n\\n\\t\\t\\t\\tgl_Position = vec4(position * 2. - 1., 0, 1);\\n\\n\\t\\t\\t\\tgl_PointSize = charStep;\\n\\n\\t\\t\\t\\tcharId.x = mod(char, atlasDim.x);\\n\\t\\t\\t\\tcharId.y = floor(char / atlasDim.x);\\n\\n\\t\\t\\t\\tcharWidth = width * em;\\n\\n\\t\\t\\t\\tfontColor = color / 255.;\\n\\t\\t\\t}\",\n\n\t\tfrag: \"\\n\\t\\t\\tprecision highp float;\\n\\t\\t\\tuniform float fontSize, charStep, opacity;\\n\\t\\t\\tuniform vec2 atlasSize;\\n\\t\\t\\tuniform vec4 viewport;\\n\\t\\t\\tuniform sampler2D atlas;\\n\\t\\t\\tvarying vec4 fontColor;\\n\\t\\t\\tvarying vec2 charCoord, charId;\\n\\t\\t\\tvarying float charWidth;\\n\\n\\t\\t\\tfloat lightness(vec4 color) {\\n\\t\\t\\t\\treturn color.r * 0.299 + color.g * 0.587 + color.b * 0.114;\\n\\t\\t\\t}\\n\\n\\t\\t\\tvoid main () {\\n\\t\\t\\t\\tvec2 uv = gl_FragCoord.xy - charCoord + charStep * .5;\\n\\t\\t\\t\\tfloat halfCharStep = floor(charStep * .5 + .5);\\n\\n\\t\\t\\t\\t// invert y and shift by 1px (FF expecially needs that)\\n\\t\\t\\t\\tuv.y = charStep - uv.y;\\n\\n\\t\\t\\t\\t// ignore points outside of character bounding box\\n\\t\\t\\t\\tfloat halfCharWidth = ceil(charWidth * .5);\\n\\t\\t\\t\\tif (floor(uv.x) > halfCharStep + halfCharWidth ||\\n\\t\\t\\t\\t\\tfloor(uv.x) < halfCharStep - halfCharWidth) return;\\n\\n\\t\\t\\t\\tuv += charId * charStep;\\n\\t\\t\\t\\tuv = uv / atlasSize;\\n\\n\\t\\t\\t\\tvec4 color = fontColor;\\n\\t\\t\\t\\tvec4 mask = texture2D(atlas, uv);\\n\\n\\t\\t\\t\\tfloat maskY = lightness(mask);\\n\\t\\t\\t\\t// float colorY = lightness(color);\\n\\t\\t\\t\\tcolor.a *= maskY;\\n\\t\\t\\t\\tcolor.a *= opacity;\\n\\n\\t\\t\\t\\t// color.a += .1;\\n\\n\\t\\t\\t\\t// antialiasing, see yiq color space y-channel formula\\n\\t\\t\\t\\t// color.rgb += (1. - color.rgb) * (1. - mask.rgb);\\n\\n\\t\\t\\t\\tgl_FragColor = color;\\n\\t\\t\\t}\"\n\t})\n\n\t// per font-size atlas\n\tvar atlas = {}\n\n\treturn { regl: regl, draw: draw, atlas: atlas }\n};\n\nGlText.prototype.update = function update (o) {\n\t\tvar this$1 = this;\n\n\tif (typeof o === 'string') { o = { text: o } }\n\telse if (!o) { return }\n\n\t// FIXME: make this a static transform or more general approact\n\to = pick(o, {\n\t\tposition: 'position positions coord coords coordinates',\n\t\tfont: 'font fontFace fontface typeface cssFont css-font family fontFamily',\n\t\tfontSize: 'fontSize fontsize size font-size',\n\t\ttext: 'text texts chars characters value values symbols',\n\t\talign: 'align alignment textAlign textbaseline',\n\t\tbaseline: 'baseline textBaseline textbaseline',\n\t\tdirection: 'dir direction textDirection',\n\t\tcolor: 'color colour fill fill-color fillColor textColor textcolor',\n\t\tkerning: 'kerning kern',\n\t\trange: 'range dataBox',\n\t\tviewport: 'vp viewport viewBox viewbox viewPort',\n\t\topacity: 'opacity alpha transparency visible visibility opaque',\n\t\toffset: 'offset positionOffset padding shift indent indentation'\n\t}, true)\n\n\n\tif (o.opacity != null) {\n\t\tif (Array.isArray(o.opacity)) {\n\t\t\tthis.opacity = o.opacity.map(function (o) { return parseFloat(o); })\n\t\t}\n\t\telse {\n\t\t\tthis.opacity = parseFloat(o.opacity)\n\t\t}\n\t}\n\n\tif (o.viewport != null) {\n\t\tthis.viewport = parseRect(o.viewport)\n\n\t\tthis.viewportArray = [this.viewport.x, this.viewport.y, this.viewport.width, this.viewport.height]\n\n\t}\n\tif (this.viewport == null) {\n\t\tthis.viewport = {\n\t\t\tx: 0, y: 0,\n\t\t\twidth: this.gl.drawingBufferWidth,\n\t\t\theight: this.gl.drawingBufferHeight\n\t\t}\n\t\tthis.viewportArray = [this.viewport.x, this.viewport.y, this.viewport.width, this.viewport.height]\n\t}\n\n\tif (o.kerning != null) { this.kerning = o.kerning }\n\n\tif (o.offset != null) {\n\t\tif (typeof o.offset === 'number') { o.offset = [o.offset, 0] }\n\n\t\tthis.positionOffset = flatten(o.offset)\n\t}\n\n\tif (o.direction) { this.direction = o.direction }\n\n\tif (o.range) {\n\t\tthis.range = o.range\n\t\tthis.scale = [1 / (o.range[2] - o.range[0]), 1 / (o.range[3] - o.range[1])]\n\t\tthis.translate = [-o.range[0], -o.range[1]]\n\t}\n\tif (o.scale) { this.scale = o.scale }\n\tif (o.translate) { this.translate = o.translate }\n\n\t// default scale corresponds to viewport\n\tif (!this.scale) { this.scale = [1 / this.viewport.width, 1 / this.viewport.height] }\n\n\tif (!this.translate) { this.translate = [0, 0] }\n\n\tif (!this.font.length && !o.font) { o.font = GlText.baseFontSize + 'px sans-serif' }\n\n\t// normalize font caching string\n\tvar newFont = false, newFontSize = false\n\n\t// obtain new font data\n\tif (o.font) {\n\t\t(Array.isArray(o.font) ? o.font : [o.font]).forEach(function (font, i) {\n\t\t\t// normalize font\n\t\t\tif (typeof font === 'string') {\n\t\t\t\ttry {\n\t\t\t\t\tfont = Font.parse(font)\n\t\t\t\t} catch (e) {\n\t\t\t\t\tfont = Font.parse(GlText.baseFontSize + 'px ' + font)\n\t\t\t\t}\n\t\t\t}\n\t\t\telse { font = Font.parse(Font.stringify(font)) }\n\n\t\t\tvar baseString = Font.stringify({\n\t\t\t\tsize: GlText.baseFontSize,\n\t\t\t\tfamily: font.family,\n\t\t\t\tstretch: isStretchSupported ? font.stretch : undefined,\n\t\t\t\tvariant: font.variant,\n\t\t\t\tweight: font.weight,\n\t\t\t\tstyle: font.style\n\t\t\t})\n\n\t\t\tvar unit = parseUnit(font.size)\n\t\t\tvar fs = Math.round(unit[0] * px(unit[1]))\n\t\t\tif (fs !== this$1.fontSize[i]) {\n\t\t\t\tnewFontSize = true\n\t\t\t\tthis$1.fontSize[i] = fs\n\t\t\t}\n\n\t\t\t// calc new font metrics/atlas\n\t\t\tif (!this$1.font[i] || baseString != this$1.font[i].baseString) {\n\t\t\t\tnewFont = true\n\n\t\t\t\t// obtain font cache or create one\n\t\t\t\tthis$1.font[i] = GlText.fonts[baseString]\n\t\t\t\tif (!this$1.font[i]) {\n\t\t\t\t\tvar family = font.family.join(', ')\n\t\t\t\t\tvar style = [font.style]\n\t\t\t\t\tif (font.style != font.variant) { style.push(font.variant) }\n\t\t\t\t\tif (font.variant != font.weight) { style.push(font.weight) }\n\t\t\t\t\tif (isStretchSupported && font.weight != font.stretch) { style.push(font.stretch) }\n\n\t\t\t\t\tthis$1.font[i] = {\n\t\t\t\t\t\tbaseString: baseString,\n\n\t\t\t\t\t\t// typeface\n\t\t\t\t\t\tfamily: family,\n\t\t\t\t\t\tweight: font.weight,\n\t\t\t\t\t\tstretch: font.stretch,\n\t\t\t\t\t\tstyle: font.style,\n\t\t\t\t\t\tvariant: font.variant,\n\n\t\t\t\t\t\t// widths of characters\n\t\t\t\t\t\twidth: {},\n\n\t\t\t\t\t\t// kernin pairs offsets\n\t\t\t\t\t\tkerning: {},\n\n\t\t\t\t\t\tmetrics: metrics(family, {\n\t\t\t\t\t\t\torigin: 'top',\n\t\t\t\t\t\t\tfontSize: GlText.baseFontSize,\n\t\t\t\t\t\t\tfontStyle: style.join(' ')\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\n\t\t\t\t\tGlText.fonts[baseString] = this$1.font[i]\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n\n\t// FIXME: make independend font-size\n\t// if (o.fontSize) {\n\t// let unit = parseUnit(o.fontSize)\n\t// let fs = Math.round(unit[0] * px(unit[1]))\n\n\t// if (fs != this.fontSize) {\n\t// \tnewFontSize = true\n\t// \tthis.fontSize = fs\n\t// }\n\t// }\n\n\tif (newFont || newFontSize) {\n\t\tthis.font.forEach(function (font, i) {\n\t\t\tvar fontString = Font.stringify({\n\t\t\t\tsize: this$1.fontSize[i],\n\t\t\t\tfamily: font.family,\n\t\t\t\tstretch: isStretchSupported ? font.stretch : undefined,\n\t\t\t\tvariant: font.variant,\n\t\t\t\tweight: font.weight,\n\t\t\t\tstyle: font.style\n\t\t\t})\n\n\t\t\t// calc new font size atlas\n\t\t\tthis$1.fontAtlas[i] = this$1.shader.atlas[fontString]\n\n\t\t\tif (!this$1.fontAtlas[i]) {\n\t\t\t\tvar metrics = font.metrics\n\n\t\t\t\tthis$1.shader.atlas[fontString] =\n\t\t\t\tthis$1.fontAtlas[i] = {\n\t\t\t\t\tfontString: fontString,\n\t\t\t\t\t// even step is better for rendered characters\n\t\t\t\t\tstep: Math.ceil(this$1.fontSize[i] * metrics.bottom * .5) * 2,\n\t\t\t\t\tem: this$1.fontSize[i],\n\t\t\t\t\tcols: 0,\n\t\t\t\t\trows: 0,\n\t\t\t\t\theight: 0,\n\t\t\t\t\twidth: 0,\n\t\t\t\t\tchars: [],\n\t\t\t\t\tids: {},\n\t\t\t\t\ttexture: this$1.regl.texture()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// bump atlas characters\n\t\t\tif (o.text == null) { o.text = this$1.text }\n\t\t})\n\t}\n\n\t// if multiple positions - duplicate text arguments\n\t// FIXME: this possibly can be done better to avoid array spawn\n\tif (typeof o.text === 'string' && o.position && o.position.length > 2) {\n\t\tvar textArray = Array(o.position.length * .5)\n\t\tfor (var i = 0; i < textArray.length; i++) {\n\t\t\ttextArray[i] = o.text\n\t\t}\n\t\to.text = textArray\n\t}\n\n\t// calculate offsets for the new font/text\n\tvar newAtlasChars\n\tif (o.text != null || newFont) {\n\t\t// FIXME: ignore spaces\n\t\t// text offsets within the text buffer\n\t\tthis.textOffsets = [0]\n\n\t\tif (Array.isArray(o.text)) {\n\t\t\tthis.count = o.text[0].length\n\t\t\tthis.counts = [this.count]\n\t\t\tfor (var i$1 = 1; i$1 < o.text.length; i$1++) {\n\t\t\t\tthis.textOffsets[i$1] = this.textOffsets[i$1 - 1] + o.text[i$1 - 1].length\n\t\t\t\tthis.count += o.text[i$1].length\n\t\t\t\tthis.counts.push(o.text[i$1].length)\n\t\t\t}\n\t\t\tthis.text = o.text.join('')\n\t\t}\n\t\telse {\n\t\t\tthis.text = o.text\n\t\t\tthis.count = this.text.length\n\t\t\tthis.counts = [this.count]\n\t\t}\n\n\t\tnewAtlasChars = []\n\n\t\t// detect & measure new characters\n\t\tthis.font.forEach(function (font, idx) {\n\t\t\tGlText.atlasContext.font = font.baseString\n\n\t\t\tvar atlas = this$1.fontAtlas[idx]\n\n\t\t\tfor (var i = 0; i < this$1.text.length; i++) {\n\t\t\t\tvar char = this$1.text.charAt(i)\n\n\t\t\t\tif (atlas.ids[char] == null) {\n\t\t\t\t\tatlas.ids[char] = atlas.chars.length\n\t\t\t\t\tatlas.chars.push(char)\n\t\t\t\t\tnewAtlasChars.push(char)\n\t\t\t\t}\n\n\t\t\t\tif (font.width[char] == null) {\n\t\t\t\t\tfont.width[char] = GlText.atlasContext.measureText(char).width / GlText.baseFontSize\n\n\t\t\t\t\t// measure kerning pairs for the new character\n\t\t\t\t\tif (this$1.kerning) {\n\t\t\t\t\t\tvar pairs = []\n\t\t\t\t\t\tfor (var baseChar in font.width) {\n\t\t\t\t\t\t\tpairs.push(baseChar + char, char + baseChar)\n\t\t\t\t\t\t}\n\t\t\t\t\t\textend(font.kerning, kerning(font.family, {\n\t\t\t\t\t\t\tpairs: pairs\n\t\t\t\t\t\t}))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n\n\t// create single position buffer (faster than batch or multiple separate instances)\n\tif (o.position) {\n\t\tif (o.position.length > 2) {\n\t\t\tvar flat = !o.position[0].length\n\t\t\tvar positionData = pool.mallocFloat(this.count * 2)\n\t\t\tfor (var i$2 = 0, ptr = 0; i$2 < this.counts.length; i$2++) {\n\t\t\t\tvar count = this.counts[i$2]\n\t\t\t\tif (flat) {\n\t\t\t\t\tfor (var j = 0; j < count; j++) {\n\t\t\t\t\t\tpositionData[ptr++] = o.position[i$2 * 2]\n\t\t\t\t\t\tpositionData[ptr++] = o.position[i$2 * 2 + 1]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tfor (var j$1 = 0; j$1 < count; j$1++) {\n\t\t\t\t\t\tpositionData[ptr++] = o.position[i$2][0]\n\t\t\t\t\t\tpositionData[ptr++] = o.position[i$2][1]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.position.call) {\n\t\t\t\tthis.position({\n\t\t\t\t\ttype: 'float',\n\t\t\t\t\tdata: positionData\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis.position = this.regl.buffer({\n\t\t\t\t\ttype: 'float',\n\t\t\t\t\tdata: positionData\n\t\t\t\t})\n\t\t\t}\n\t\t\tpool.freeFloat(positionData)\n\t\t}\n\t\telse {\n\t\t\tif (this.position.destroy) { this.position.destroy() }\n\t\t\tthis.position = {\n\t\t\t\tconstant: o.position\n\t\t\t}\n\t\t}\n\t}\n\n\t// populate text/offset buffers if font/text has changed\n\t// as [charWidth, offset, charWidth, offset...]\n\t// that is in em units since font-size can change often\n\tif (o.text || newFont) {\n\t\tvar charIds = pool.mallocUint8(this.count)\n\t\tvar sizeData = pool.mallocFloat(this.count * 2)\n\t\tthis.textWidth = []\n\n\t\tfor (var i$3 = 0, ptr$1 = 0; i$3 < this.counts.length; i$3++) {\n\t\t\tvar count$1 = this.counts[i$3]\n\t\t\tvar font = this.font[i$3] || this.font[0]\n\t\t\tvar atlas = this.fontAtlas[i$3] || this.fontAtlas[0]\n\n\t\t\tfor (var j$2 = 0; j$2 < count$1; j$2++) {\n\t\t\t\tvar char = this.text.charAt(ptr$1)\n\t\t\t\tvar prevChar = this.text.charAt(ptr$1 - 1)\n\n\t\t\t\tcharIds[ptr$1] = atlas.ids[char]\n\t\t\t\tsizeData[ptr$1 * 2] = font.width[char]\n\n\t\t\t\tif (j$2) {\n\t\t\t\t\tvar prevWidth = sizeData[ptr$1 * 2 - 2]\n\t\t\t\t\tvar currWidth = sizeData[ptr$1 * 2]\n\t\t\t\t\tvar prevOffset = sizeData[ptr$1 * 2 - 1]\n\t\t\t\t\tvar offset = prevOffset + prevWidth * .5 + currWidth * .5;\n\n\t\t\t\t\tif (this.kerning) {\n\t\t\t\t\t\tvar kerning$1 = font.kerning[prevChar + char]\n\t\t\t\t\t\tif (kerning$1) {\n\t\t\t\t\t\t\toffset += kerning$1 * 1e-3\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tsizeData[ptr$1 * 2 + 1] = offset\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tsizeData[ptr$1 * 2 + 1] = sizeData[ptr$1 * 2] * .5\n\t\t\t\t}\n\n\t\t\t\tptr$1++\n\t\t\t}\n\t\t\tthis.textWidth.push(\n\t\t\t\t!sizeData.length ? 0 :\n\t\t\t\t// last offset + half last width\n\t\t\t\tsizeData[ptr$1 * 2 - 2] * .5 + sizeData[ptr$1 * 2 - 1]\n\t\t\t)\n\t\t}\n\n\n\t\t// bump recalc align offset\n\t\tif (!o.align) { o.align = this.align }\n\t\tthis.charBuffer({data: charIds, type: 'uint8', usage: 'stream'})\n\t\tthis.sizeBuffer({data: sizeData, type: 'float', usage: 'stream'})\n\t\tpool.freeUint8(charIds)\n\t\tpool.freeFloat(sizeData)\n\n\t\t// udpate font atlas and texture\n\t\tif (newAtlasChars.length) {\n\t\t\tthis.font.forEach(function (font, i) {\n\t\t\t\tvar atlas = this$1.fontAtlas[i]\n\n\t\t\t\t// FIXME: insert metrics-based ratio here\n\t\t\t\tvar step = atlas.step\n\n\t\t\t\tvar maxCols = Math.floor(GlText.maxAtlasSize / step)\n\t\t\t\tvar cols = Math.min(maxCols, atlas.chars.length)\n\t\t\t\tvar rows = Math.ceil(atlas.chars.length / cols)\n\n\t\t\t\tvar atlasWidth = nextPow2( cols * step )\n\t\t\t\t// let atlasHeight = Math.min(rows * step + step * .5, GlText.maxAtlasSize);\n\t\t\t\tvar atlasHeight = nextPow2( rows * step );\n\n\t\t\t\tatlas.width = atlasWidth\n\t\t\t\tatlas.height = atlasHeight;\n\t\t\t\tatlas.rows = rows\n\t\t\t\tatlas.cols = cols\n\n\t\t\t\tif (!atlas.em) { return }\n\n\t\t\t\tatlas.texture({\n\t\t\t\t\tdata: fontAtlas({\n\t\t\t\t\t\tcanvas: GlText.atlasCanvas,\n\t\t\t\t\t\tfont: atlas.fontString,\n\t\t\t\t\t\tchars: atlas.chars,\n\t\t\t\t\t\tshape: [atlasWidth, atlasHeight],\n\t\t\t\t\t\tstep: [step, step]\n\t\t\t\t\t})\n\t\t\t\t})\n\n\t\t\t})\n\t\t}\n\t}\n\n\tif (o.align) {\n\t\tthis.align = o.align\n\t\tthis.alignOffset = this.textWidth.map(function (textWidth, i) {\n\t\t\tvar align = !Array.isArray(this$1.align) ? this$1.align : this$1.align.length > 1 ? this$1.align[i] : this$1.align[0]\n\n\t\t\tif (typeof align === 'number') { return align }\n\t\t\tswitch (align) {\n\t\t\t\tcase 'right':\n\t\t\t\tcase 'end':\n\t\t\t\t\treturn -textWidth\n\t\t\t\tcase 'center':\n\t\t\t\tcase 'centre':\n\t\t\t\tcase 'middle':\n\t\t\t\t\treturn -textWidth * .5\n\t\t\t}\n\n\t\t\treturn 0\n\t\t})\n\t}\n\n\tif (this.baseline == null && o.baseline == null) {\n\t\to.baseline = 0\n\t}\n\tif (o.baseline != null) {\n\t\tthis.baseline = o.baseline\n\t\tif (!Array.isArray(this.baseline)) { this.baseline = [this.baseline] }\n\t\tthis.baselineOffset = this.baseline.map(function (baseline, i) {\n\t\t\tvar m = (this$1.font[i] || this$1.font[0]).metrics\n\t\t\tvar base = 0\n\n\t\t\tbase += m.bottom * .5\n\n\t\t\tif (typeof baseline === 'number') {\n\t\t\t\tbase += (baseline - m.baseline)\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbase += -m[baseline]\n\t\t\t}\n\n\t\t\tbase *= -1\n\t\t\treturn base\n\t\t})\n\t}\n\n\t// flatten colors to a single uint8 array\n\tif (o.color != null) {\n\t\tif (!o.color) { o.color = 'transparent' }\n\n\t\t// single color\n\t\tif (typeof o.color === 'string' || !isNaN(o.color)) {\n\t\t\tthis.color = rgba(o.color, 'uint8')\n\t\t}\n\t\t// array\n\t\telse {\n\t\t\tvar colorData\n\n\t\t\t// flat array\n\t\t\tif (typeof o.color[0] === 'number' && o.color.length > this.counts.length) {\n\t\t\t\tvar l = o.color.length\n\t\t\t\tcolorData = pool.mallocUint8(l)\n\t\t\t\tvar sub = (o.color.subarray || o.color.slice).bind(o.color)\n\t\t\t\tfor (var i$4 = 0; i$4 < l; i$4 += 4) {\n\t\t\t\t\tcolorData.set(rgba(sub(i$4, i$4 + 4), 'uint8'), i$4)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// nested array\n\t\t\telse {\n\t\t\t\tvar l$1 = o.color.length\n\t\t\t\tcolorData = pool.mallocUint8(l$1 * 4)\n\t\t\t\tfor (var i$5 = 0; i$5 < l$1; i$5++) {\n\t\t\t\t\tcolorData.set(rgba(o.color[i$5] || 0, 'uint8'), i$5 * 4)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.color = colorData\n\t\t}\n\t}\n\n\t// update render batch\n\tif (o.position || o.text || o.color || o.baseline || o.align || o.font || o.offset || o.opacity) {\n\t\tvar isBatch = (this.color.length > 4)\n\t\t\t|| (this.baselineOffset.length > 1)\n\t\t\t|| (this.align && this.align.length > 1)\n\t\t\t|| (this.fontAtlas.length > 1)\n\t\t\t|| (this.positionOffset.length > 2)\n\t\tif (isBatch) {\n\t\t\tvar length = Math.max(\n\t\t\t\tthis.position.length * .5 || 0,\n\t\t\t\tthis.color.length * .25 || 0,\n\t\t\t\tthis.baselineOffset.length || 0,\n\t\t\t\tthis.alignOffset.length || 0,\n\t\t\t\tthis.font.length || 0,\n\t\t\t\tthis.opacity.length || 0,\n\t\t\t\tthis.positionOffset.length * .5 || 0\n\t\t\t)\n\t\t\tthis.batch = Array(length)\n\t\t\tfor (var i$6 = 0; i$6 < this.batch.length; i$6++) {\n\t\t\t\tthis.batch[i$6] = {\n\t\t\t\t\tcount: this.counts.length > 1 ? this.counts[i$6] : this.counts[0],\n\t\t\t\t\toffset: this.textOffsets.length > 1 ? this.textOffsets[i$6] : this.textOffsets[0],\n\t\t\t\t\tcolor: !this.color ? [0,0,0,255] : this.color.length <= 4 ? this.color : this.color.subarray(i$6 * 4, i$6 * 4 + 4),\n\t\t\t\t\topacity: Array.isArray(this.opacity) ? this.opacity[i$6] : this.opacity,\n\t\t\t\t\tbaseline: this.baselineOffset[i$6] != null ? this.baselineOffset[i$6] : this.baselineOffset[0],\n\t\t\t\t\talign: !this.align ? 0 : this.alignOffset[i$6] != null ? this.alignOffset[i$6] : this.alignOffset[0],\n\t\t\t\t\tatlas: this.fontAtlas[i$6] || this.fontAtlas[0],\n\t\t\t\t\tpositionOffset: this.positionOffset.length > 2 ? this.positionOffset.subarray(i$6 * 2, i$6 * 2 + 2) : this.positionOffset\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// single-color, single-baseline, single-align batch is faster to render\n\t\telse {\n\t\t\tif (this.count) {\n\t\t\t\tthis.batch = [{\n\t\t\t\t\tcount: this.count,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tcolor: this.color || [0,0,0,255],\n\t\t\t\t\topacity: Array.isArray(this.opacity) ? this.opacity[0] : this.opacity,\n\t\t\t\t\tbaseline: this.baselineOffset[0],\n\t\t\t\t\talign: this.alignOffset ? this.alignOffset[0] : 0,\n\t\t\t\t\tatlas: this.fontAtlas[0],\n\t\t\t\t\tpositionOffset: this.positionOffset\n\t\t\t\t}]\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.batch = []\n\t\t\t}\n\t\t}\n\t}\n};\n\nGlText.prototype.destroy = function destroy () {\n\t// TODO: count instances of atlases and destroy all on null\n};\n\n\n// defaults\nGlText.prototype.kerning = true\nGlText.prototype.position = { constant: new Float32Array(2) }\nGlText.prototype.translate = null\nGlText.prototype.scale = null\nGlText.prototype.font = null\nGlText.prototype.text = ''\nGlText.prototype.positionOffset = [0, 0]\nGlText.prototype.opacity = 1\nGlText.prototype.color = new Uint8Array([0, 0, 0, 255])\nGlText.prototype.alignOffset = [0, 0]\n\n\n// size of an atlas\nGlText.maxAtlasSize = 1024\n\n// font atlas canvas is singleton\nGlText.atlasCanvas = document.createElement('canvas')\nGlText.atlasContext = GlText.atlasCanvas.getContext('2d', {alpha: false})\n\n// font-size used for metrics, atlas step calculation\nGlText.baseFontSize = 64\n\n// fonts storage\nGlText.fonts = {}\n\n// max number of different font atlases/textures cached\n// FIXME: enable atlas size limitation via LRU\n// GlText.atlasCacheSize = 64\n\nfunction isRegl (o) {\n\treturn typeof o === 'function' &&\n\to._gl &&\n\to.prop &&\n\to.texture &&\n\to.buffer\n}\n\n\nmodule.exports = GlText\n\n\n\n/***/ }),\n\n/***/ 12018:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5929703__) {\n\n\"use strict\";\n/** @module  gl-util/context */\r\n\r\n\r\nvar pick = __nested_webpack_require_5929703__(71299)\r\n\r\nmodule.exports = function setContext (o) {\r\n\tif (!o) o = {}\r\n\telse if (typeof o === 'string') o = {container: o}\r\n\r\n\t// HTMLCanvasElement\r\n\tif (isCanvas(o)) {\r\n\t\to = {container: o}\r\n\t}\r\n\t// HTMLElement\r\n\telse if (isElement(o)) {\r\n\t\to = {container: o}\r\n\t}\r\n\t// WebGLContext\r\n\telse if (isContext(o)) {\r\n\t\to = {gl: o}\r\n\t}\r\n\t// options object\r\n\telse {\r\n\t\to = pick(o, {\r\n\t\t\tcontainer: 'container target element el canvas holder parent parentNode wrapper use ref root node',\r\n\t\t\tgl: 'gl context webgl glContext',\r\n\t\t\tattrs: 'attributes attrs contextAttributes',\r\n\t\t\tpixelRatio: 'pixelRatio pxRatio px ratio pxratio pixelratio',\r\n\t\t\twidth: 'w width',\r\n\t\t\theight: 'h height'\r\n\t\t}, true)\r\n\t}\r\n\r\n\tif (!o.pixelRatio) o.pixelRatio = __nested_webpack_require_5929703__.g.pixelRatio || 1\r\n\r\n\t// make sure there is container and canvas\r\n\tif (o.gl) {\r\n\t\treturn o.gl\r\n\t}\r\n\tif (o.canvas) {\r\n\t\to.container = o.canvas.parentNode\r\n\t}\r\n\tif (o.container) {\r\n\t\tif (typeof o.container === 'string') {\r\n\t\t\tvar c = document.querySelector(o.container)\r\n\t\t\tif (!c) throw Error('Element ' + o.container + ' is not found')\r\n\t\t\to.container = c\r\n\t\t}\r\n\t\tif (isCanvas(o.container)) {\r\n\t\t\to.canvas = o.container\r\n\t\t\to.container = o.canvas.parentNode\r\n\t\t}\r\n\t\telse if (!o.canvas) {\r\n\t\t\to.canvas = createCanvas()\r\n\t\t\to.container.appendChild(o.canvas)\r\n\t\t\tresize(o)\r\n\t\t}\r\n\t}\r\n\t// blank new canvas\r\n\telse if (!o.canvas) {\r\n\t\tif (typeof document !== 'undefined') {\r\n\t\t\to.container = document.body || document.documentElement\r\n\t\t\to.canvas = createCanvas()\r\n\t\t\to.container.appendChild(o.canvas)\r\n\t\t\tresize(o)\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthrow Error('Not DOM environment. Use headless-gl.')\r\n\t\t}\r\n\t}\r\n\r\n\t// make sure there is context\r\n\tif (!o.gl) {\r\n\t\t['webgl', 'experimental-webgl', 'webgl-experimental'].some(function (c) {\r\n\t\t\ttry {\r\n\t\t\t\to.gl = o.canvas.getContext(c, o.attrs);\r\n\t\t\t} catch (e) { /* no-op */ }\r\n\t\t\treturn o.gl;\r\n\t\t});\r\n\t}\r\n\r\n\treturn o.gl\r\n}\r\n\r\n\r\nfunction resize (o) {\r\n\tif (o.container) {\r\n\t\tif (o.container == document.body) {\r\n\t\t\tif (!document.body.style.width) o.canvas.width = o.width || (o.pixelRatio * __nested_webpack_require_5929703__.g.innerWidth)\r\n\t\t\tif (!document.body.style.height) o.canvas.height = o.height || (o.pixelRatio * __nested_webpack_require_5929703__.g.innerHeight)\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvar bounds = o.container.getBoundingClientRect()\r\n\t\t\to.canvas.width = o.width || (bounds.right - bounds.left)\r\n\t\t\to.canvas.height = o.height || (bounds.bottom - bounds.top)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction isCanvas (e) {\r\n\treturn typeof e.getContext === 'function'\r\n\t\t&& 'width' in e\r\n\t\t&& 'height' in e\r\n}\r\n\r\nfunction isElement (e) {\r\n\treturn typeof e.nodeName === 'string' &&\r\n\t\ttypeof e.appendChild === 'function' &&\r\n\t\ttypeof e.getBoundingClientRect === 'function'\r\n}\r\n\r\nfunction isContext (e) {\r\n\treturn typeof e.drawArrays === 'function' ||\r\n\t\ttypeof e.drawElements === 'function'\r\n}\r\n\r\nfunction createCanvas () {\r\n\tvar canvas = document.createElement('canvas')\r\n\tcanvas.style.position = 'absolute'\r\n\tcanvas.style.top = 0\r\n\tcanvas.style.left = 0\r\n\r\n\treturn canvas\r\n}\r\n\n\n/***/ }),\n\n/***/ 56068:\n/***/ (function(module) {\n\nmodule.exports = function(strings) {\n  if (typeof strings === 'string') strings = [strings]\n  var exprs = [].slice.call(arguments,1)\n  var parts = []\n  for (var i = 0; i < strings.length-1; i++) {\n    parts.push(strings[i], exprs[i] || '')\n  }\n  parts.push(strings[i])\n  return parts.join('')\n}\n\n\n/***/ }),\n\n/***/ 57035:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5933237__) {\n\n\"use strict\";\n\r\n\r\nvar isBrowser = __nested_webpack_require_5933237__(54404)\r\nvar hasHover\r\n\r\nif (typeof __nested_webpack_require_5933237__.g.matchMedia === 'function') {\r\n\thasHover = !__nested_webpack_require_5933237__.g.matchMedia('(hover: none)').matches\r\n}\r\nelse {\r\n\thasHover = isBrowser\r\n}\r\n\r\nmodule.exports = hasHover\r\n\n\n/***/ }),\n\n/***/ 38520:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5933616__) {\n\n\"use strict\";\n\r\n\r\nvar isBrowser = __nested_webpack_require_5933616__(54404)\r\n\r\nfunction detect() {\r\n\tvar supported = false\r\n\r\n\ttry {\r\n\t\tvar opts = Object.defineProperty({}, 'passive', {\r\n\t\t\tget: function() {\r\n\t\t\t\tsupported = true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\twindow.addEventListener('test', null, opts)\r\n\t\twindow.removeEventListener('test', null, opts)\r\n\t} catch(e) {\r\n\t\tsupported = false\r\n\t}\r\n\r\n\treturn supported\r\n}\r\n\r\nmodule.exports = isBrowser && detect()\r\n\n\n/***/ }),\n\n/***/ 57877:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5934149__) {\n\n\"use strict\";\n\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = __nested_webpack_require_5934149__(35638);\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n\n\n/***/ }),\n\n/***/ 35638:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n\n\n/***/ }),\n\n/***/ 84543:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5936493__) {\n\n\"use strict\";\n\n\nvar hasSymbols = __nested_webpack_require_5936493__(35638);\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n\n\n/***/ }),\n\n/***/ 35065:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5936754__) {\n\n\"use strict\";\n\n\nvar bind = __nested_webpack_require_5936754__(77575);\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n\n\n/***/ }),\n\n/***/ 95280:\n/***/ (function(__unused_webpack_module, exports) {\n\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n\n\n/***/ }),\n\n/***/ 42018:\n/***/ (function(module) {\n\nif (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n\n\n/***/ }),\n\n/***/ 47216:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nvar toStr = Object.prototype.toString;\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn toStr.call(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\ttoStr.call(value) !== '[object Array]' &&\n\t\ttoStr.call(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n\n\n/***/ }),\n\n/***/ 54404:\n/***/ (function(module) {\n\nmodule.exports = true;\n\n/***/ }),\n\n/***/ 65481:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5941103__) {\n\n\"use strict\";\n\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = __nested_webpack_require_5941103__(84543)();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n\n\n/***/ }),\n\n/***/ 62683:\n/***/ (function(module) {\n\n\"use strict\";\n\nmodule.exports = typeof navigator !== 'undefined' &&\n\t(/MSIE/.test(navigator.userAgent) || /Trident\\//.test(navigator.appVersion));\n\n\n/***/ }),\n\n/***/ 64274:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n\n\n/***/ }),\n\n/***/ 15567:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5942572__) {\n\n\"use strict\";\n\n\nvar callBind = __nested_webpack_require_5942572__(68222);\nvar define = __nested_webpack_require_5942572__(17045);\n\nvar implementation = __nested_webpack_require_5942572__(64274);\nvar getPolyfill = __nested_webpack_require_5942572__(14922);\nvar shim = __nested_webpack_require_5942572__(22442);\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n\n\n/***/ }),\n\n/***/ 14922:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5943152__) {\n\n\"use strict\";\n\n\nvar implementation = __nested_webpack_require_5943152__(64274);\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n\n\n/***/ }),\n\n/***/ 22442:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5943477__) {\n\n\"use strict\";\n\n\nvar define = __nested_webpack_require_5943477__(17045);\nvar getPolyfill = __nested_webpack_require_5943477__(14922);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n\n\n/***/ }),\n\n/***/ 64941:\n/***/ (function(module) {\n\n\"use strict\";\n\nmodule.exports = function (x) {\n\tvar type = typeof x;\n\treturn x !== null && (type === 'object' || type === 'function');\n};\n\n\n/***/ }),\n\n/***/ 10973:\n/***/ (function(module) {\n\n\"use strict\";\n\nvar toString = Object.prototype.toString;\n\nmodule.exports = function (x) {\n\tvar prototype;\n\treturn toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));\n};\n\n\n/***/ }),\n\n/***/ 18546:\n/***/ (function(module) {\n\n\"use strict\";\n\r\n\r\n/**\r\n * Is this string all whitespace?\r\n * This solution kind of makes my brain hurt, but it's significantly faster\r\n * than !str.trim() or any other solution I could find.\r\n *\r\n * whitespace codes from: http://en.wikipedia.org/wiki/Whitespace_character\r\n * and verified with:\r\n *\r\n *  for(var i = 0; i < 65536; i++) {\r\n *      var s = String.fromCharCode(i);\r\n *      if(+s===0 && !s.trim()) console.log(i, s);\r\n *  }\r\n *\r\n * which counts a couple of these as *not* whitespace, but finds nothing else\r\n * that *is* whitespace. Note that charCodeAt stops at 16 bits, but it appears\r\n * that there are no whitespace characters above this, and code points above\r\n * this do not map onto white space characters.\r\n */\r\n\r\nmodule.exports = function(str){\r\n    var l = str.length,\r\n        a;\r\n    for(var i = 0; i < l; i++) {\r\n        a = str.charCodeAt(i);\r\n        if((a < 9 || a > 13) && (a !== 32) && (a !== 133) && (a !== 160) &&\r\n            (a !== 5760) && (a !== 6158) && (a < 8192 || a > 8205) &&\r\n            (a !== 8232) && (a !== 8233) && (a !== 8239) && (a !== 8287) &&\r\n            (a !== 8288) && (a !== 12288) && (a !== 65279)) {\r\n                return false;\r\n        }\r\n    }\r\n    return true;\r\n}\r\n\n\n/***/ }),\n\n/***/ 89546:\n/***/ (function(module) {\n\n\"use strict\";\n\r\n\r\nmodule.exports = function isPath(str) {\r\n\tif (typeof str !== 'string') return false\r\n\r\n\tstr = str.trim()\r\n\r\n\t// https://www.w3.org/TR/SVG/paths.html#PathDataBNF\r\n\tif (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(str) && /[\\dz]$/i.test(str) && str.length > 4) return true\r\n\r\n\treturn false\r\n}\r\n\n\n/***/ }),\n\n/***/ 9187:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_5946120__) {\n\n\"use strict\";\n\n\nvar forEach = __nested_webpack_require_5946120__(86165);\nvar availableTypedArrays = __nested_webpack_require_5946120__(72077);\nvar callBound = __nested_webpack_require_5946120__(92978);\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasSymbols = __nested_webpack_require_5946120__(57877)();\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\n\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = __nested_webpack_require_5946120__(67295);\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new __nested_webpack_require_5946120__.g[typedArray]();\n\t\tif (!(Symbol.toStringTag in arr)) {\n\t\t\tthrow new EvalError('this engine has support for Symbol.toStringTag, but ' + typedArray + ' does not have the property! Please report this.');\n\t\t}\n\t\tvar proto = getPrototypeOf(arr);\n\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\tif (!descriptor) {\n\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t}\n\t\ttoStrTags[typedArray] = descriptor.get;\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n\n\n/***/ }),\n\n/***/ 44517:\n/***/ (function(module) {\n\n/* Mapbox GL JS is licensed under the 3-Clause BSD License. Full text of license: https://github.com/mapbox/mapbox-gl-js/blob/v1.10.1/LICENSE.txt */\n(function (global, factory) {\n  true ? module.exports = factory() :\n0;\n}(this, (function () { 'use strict';\n\n/* eslint-disable */\n\nvar shared, worker, mapboxgl;\n// define gets called three times: one for each chunk. we rely on the order\n// they're imported to know which is which\nfunction define(_, chunk) {\nif (!shared) {\n    shared = chunk;\n} else if (!worker) {\n    worker = chunk;\n} else {\n    var workerBundleString = 'var sharedChunk = {}; (' + shared + ')(sharedChunk); (' + worker + ')(sharedChunk);'\n\n    var sharedChunk = {};\n    shared(sharedChunk);\n    mapboxgl = chunk(sharedChunk);\n    mapboxgl.workerUrl = window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' }));\n}\n}\n\n\ndefine(['exports'], function (exports) { 'use strict';\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar version = \"1.10.1\";\n\nvar unitbezier = UnitBezier;\nfunction UnitBezier(p1x, p1y, p2x, p2y) {\n    this.cx = 3 * p1x;\n    this.bx = 3 * (p2x - p1x) - this.cx;\n    this.ax = 1 - this.cx - this.bx;\n    this.cy = 3 * p1y;\n    this.by = 3 * (p2y - p1y) - this.cy;\n    this.ay = 1 - this.cy - this.by;\n    this.p1x = p1x;\n    this.p1y = p2y;\n    this.p2x = p2x;\n    this.p2y = p2y;\n}\nUnitBezier.prototype.sampleCurveX = function (t) {\n    return ((this.ax * t + this.bx) * t + this.cx) * t;\n};\nUnitBezier.prototype.sampleCurveY = function (t) {\n    return ((this.ay * t + this.by) * t + this.cy) * t;\n};\nUnitBezier.prototype.sampleCurveDerivativeX = function (t) {\n    return (3 * this.ax * t + 2 * this.bx) * t + this.cx;\n};\nUnitBezier.prototype.solveCurveX = function (x, epsilon) {\n    if (typeof epsilon === 'undefined') {\n        epsilon = 0.000001;\n    }\n    var t0, t1, t2, x2, i;\n    for (t2 = x, i = 0; i < 8; i++) {\n        x2 = this.sampleCurveX(t2) - x;\n        if (Math.abs(x2) < epsilon) {\n            return t2;\n        }\n        var d2 = this.sampleCurveDerivativeX(t2);\n        if (Math.abs(d2) < 0.000001) {\n            break;\n        }\n        t2 = t2 - x2 / d2;\n    }\n    t0 = 0;\n    t1 = 1;\n    t2 = x;\n    if (t2 < t0) {\n        return t0;\n    }\n    if (t2 > t1) {\n        return t1;\n    }\n    while (t0 < t1) {\n        x2 = this.sampleCurveX(t2);\n        if (Math.abs(x2 - x) < epsilon) {\n            return t2;\n        }\n        if (x > x2) {\n            t0 = t2;\n        } else {\n            t1 = t2;\n        }\n        t2 = (t1 - t0) * 0.5 + t0;\n    }\n    return t2;\n};\nUnitBezier.prototype.solve = function (x, epsilon) {\n    return this.sampleCurveY(this.solveCurveX(x, epsilon));\n};\n\nvar pointGeometry = Point;\nfunction Point(x, y) {\n    this.x = x;\n    this.y = y;\n}\nPoint.prototype = {\n    clone: function () {\n        return new Point(this.x, this.y);\n    },\n    add: function (p) {\n        return this.clone()._add(p);\n    },\n    sub: function (p) {\n        return this.clone()._sub(p);\n    },\n    multByPoint: function (p) {\n        return this.clone()._multByPoint(p);\n    },\n    divByPoint: function (p) {\n        return this.clone()._divByPoint(p);\n    },\n    mult: function (k) {\n        return this.clone()._mult(k);\n    },\n    div: function (k) {\n        return this.clone()._div(k);\n    },\n    rotate: function (a) {\n        return this.clone()._rotate(a);\n    },\n    rotateAround: function (a, p) {\n        return this.clone()._rotateAround(a, p);\n    },\n    matMult: function (m) {\n        return this.clone()._matMult(m);\n    },\n    unit: function () {\n        return this.clone()._unit();\n    },\n    perp: function () {\n        return this.clone()._perp();\n    },\n    round: function () {\n        return this.clone()._round();\n    },\n    mag: function () {\n        return Math.sqrt(this.x * this.x + this.y * this.y);\n    },\n    equals: function (other) {\n        return this.x === other.x && this.y === other.y;\n    },\n    dist: function (p) {\n        return Math.sqrt(this.distSqr(p));\n    },\n    distSqr: function (p) {\n        var dx = p.x - this.x, dy = p.y - this.y;\n        return dx * dx + dy * dy;\n    },\n    angle: function () {\n        return Math.atan2(this.y, this.x);\n    },\n    angleTo: function (b) {\n        return Math.atan2(this.y - b.y, this.x - b.x);\n    },\n    angleWith: function (b) {\n        return this.angleWithSep(b.x, b.y);\n    },\n    angleWithSep: function (x, y) {\n        return Math.atan2(this.x * y - this.y * x, this.x * x + this.y * y);\n    },\n    _matMult: function (m) {\n        var x = m[0] * this.x + m[1] * this.y, y = m[2] * this.x + m[3] * this.y;\n        this.x = x;\n        this.y = y;\n        return this;\n    },\n    _add: function (p) {\n        this.x += p.x;\n        this.y += p.y;\n        return this;\n    },\n    _sub: function (p) {\n        this.x -= p.x;\n        this.y -= p.y;\n        return this;\n    },\n    _mult: function (k) {\n        this.x *= k;\n        this.y *= k;\n        return this;\n    },\n    _div: function (k) {\n        this.x /= k;\n        this.y /= k;\n        return this;\n    },\n    _multByPoint: function (p) {\n        this.x *= p.x;\n        this.y *= p.y;\n        return this;\n    },\n    _divByPoint: function (p) {\n        this.x /= p.x;\n        this.y /= p.y;\n        return this;\n    },\n    _unit: function () {\n        this._div(this.mag());\n        return this;\n    },\n    _perp: function () {\n        var y = this.y;\n        this.y = this.x;\n        this.x = -y;\n        return this;\n    },\n    _rotate: function (angle) {\n        var cos = Math.cos(angle), sin = Math.sin(angle), x = cos * this.x - sin * this.y, y = sin * this.x + cos * this.y;\n        this.x = x;\n        this.y = y;\n        return this;\n    },\n    _rotateAround: function (angle, p) {\n        var cos = Math.cos(angle), sin = Math.sin(angle), x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y), y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y);\n        this.x = x;\n        this.y = y;\n        return this;\n    },\n    _round: function () {\n        this.x = Math.round(this.x);\n        this.y = Math.round(this.y);\n        return this;\n    }\n};\nPoint.convert = function (a) {\n    if (a instanceof Point) {\n        return a;\n    }\n    if (Array.isArray(a)) {\n        return new Point(a[0], a[1]);\n    }\n    return a;\n};\n\nfunction deepEqual(a, b) {\n    if (Array.isArray(a)) {\n        if (!Array.isArray(b) || a.length !== b.length) {\n            return false;\n        }\n        for (var i = 0; i < a.length; i++) {\n            if (!deepEqual(a[i], b[i])) {\n                return false;\n            }\n        }\n        return true;\n    }\n    if (typeof a === 'object' && a !== null && b !== null) {\n        if (!(typeof b === 'object')) {\n            return false;\n        }\n        var keys = Object.keys(a);\n        if (keys.length !== Object.keys(b).length) {\n            return false;\n        }\n        for (var key in a) {\n            if (!deepEqual(a[key], b[key])) {\n                return false;\n            }\n        }\n        return true;\n    }\n    return a === b;\n}\n\nfunction easeCubicInOut(t) {\n    if (t <= 0) {\n        return 0;\n    }\n    if (t >= 1) {\n        return 1;\n    }\n    var t2 = t * t, t3 = t2 * t;\n    return 4 * (t < 0.5 ? t3 : 3 * (t - t2) + t3 - 0.75);\n}\nfunction bezier(p1x, p1y, p2x, p2y) {\n    var bezier = new unitbezier(p1x, p1y, p2x, p2y);\n    return function (t) {\n        return bezier.solve(t);\n    };\n}\nvar ease = bezier(0.25, 0.1, 0.25, 1);\nfunction clamp(n, min, max) {\n    return Math.min(max, Math.max(min, n));\n}\nfunction wrap(n, min, max) {\n    var d = max - min;\n    var w = ((n - min) % d + d) % d + min;\n    return w === min ? max : w;\n}\nfunction asyncAll(array, fn, callback) {\n    if (!array.length) {\n        return callback(null, []);\n    }\n    var remaining = array.length;\n    var results = new Array(array.length);\n    var error = null;\n    array.forEach(function (item, i) {\n        fn(item, function (err, result) {\n            if (err) {\n                error = err;\n            }\n            results[i] = result;\n            if (--remaining === 0) {\n                callback(error, results);\n            }\n        });\n    });\n}\nfunction values(obj) {\n    var result = [];\n    for (var k in obj) {\n        result.push(obj[k]);\n    }\n    return result;\n}\nfunction keysDifference(obj, other) {\n    var difference = [];\n    for (var i in obj) {\n        if (!(i in other)) {\n            difference.push(i);\n        }\n    }\n    return difference;\n}\nfunction extend(dest) {\n    var sources = [], len = arguments.length - 1;\n    while (len-- > 0)\n        sources[len] = arguments[len + 1];\n    for (var i = 0, list = sources; i < list.length; i += 1) {\n        var src = list[i];\n        for (var k in src) {\n            dest[k] = src[k];\n        }\n    }\n    return dest;\n}\nfunction pick(src, properties) {\n    var result = {};\n    for (var i = 0; i < properties.length; i++) {\n        var k = properties[i];\n        if (k in src) {\n            result[k] = src[k];\n        }\n    }\n    return result;\n}\nvar id = 1;\nfunction uniqueId() {\n    return id++;\n}\nfunction uuid() {\n    function b(a) {\n        return a ? (a ^ Math.random() * 16 >> a / 4).toString(16) : ([10000000] + -[1000] + -4000 + -8000 + -100000000000).replace(/[018]/g, b);\n    }\n    return b();\n}\nfunction validateUuid(str) {\n    return str ? /^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(str) : false;\n}\nfunction bindAll(fns, context) {\n    fns.forEach(function (fn) {\n        if (!context[fn]) {\n            return;\n        }\n        context[fn] = context[fn].bind(context);\n    });\n}\nfunction endsWith(string, suffix) {\n    return string.indexOf(suffix, string.length - suffix.length) !== -1;\n}\nfunction mapObject(input, iterator, context) {\n    var output = {};\n    for (var key in input) {\n        output[key] = iterator.call(context || this, input[key], key, input);\n    }\n    return output;\n}\nfunction filterObject(input, iterator, context) {\n    var output = {};\n    for (var key in input) {\n        if (iterator.call(context || this, input[key], key, input)) {\n            output[key] = input[key];\n        }\n    }\n    return output;\n}\nfunction clone(input) {\n    if (Array.isArray(input)) {\n        return input.map(clone);\n    } else if (typeof input === 'object' && input) {\n        return mapObject(input, clone);\n    } else {\n        return input;\n    }\n}\nfunction arraysIntersect(a, b) {\n    for (var l = 0; l < a.length; l++) {\n        if (b.indexOf(a[l]) >= 0) {\n            return true;\n        }\n    }\n    return false;\n}\nvar warnOnceHistory = {};\nfunction warnOnce(message) {\n    if (!warnOnceHistory[message]) {\n        if (typeof console !== 'undefined') {\n            console.warn(message);\n        }\n        warnOnceHistory[message] = true;\n    }\n}\nfunction isCounterClockwise(a, b, c) {\n    return (c.y - a.y) * (b.x - a.x) > (b.y - a.y) * (c.x - a.x);\n}\nfunction calculateSignedArea(ring) {\n    var sum = 0;\n    for (var i = 0, len = ring.length, j = len - 1, p1 = void 0, p2 = void 0; i < len; j = i++) {\n        p1 = ring[i];\n        p2 = ring[j];\n        sum += (p2.x - p1.x) * (p1.y + p2.y);\n    }\n    return sum;\n}\nfunction sphericalToCartesian(ref) {\n    var r = ref[0];\n    var azimuthal = ref[1];\n    var polar = ref[2];\n    azimuthal += 90;\n    azimuthal *= Math.PI / 180;\n    polar *= Math.PI / 180;\n    return {\n        x: r * Math.cos(azimuthal) * Math.sin(polar),\n        y: r * Math.sin(azimuthal) * Math.sin(polar),\n        z: r * Math.cos(polar)\n    };\n}\nfunction isWorker() {\n    return typeof WorkerGlobalScope !== 'undefined' && typeof self !== 'undefined' && self instanceof WorkerGlobalScope;\n}\nfunction parseCacheControl(cacheControl) {\n    var re = /(?:^|(?:\\s*\\,\\s*))([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g;\n    var header = {};\n    cacheControl.replace(re, function ($0, $1, $2, $3) {\n        var value = $2 || $3;\n        header[$1] = value ? value.toLowerCase() : true;\n        return '';\n    });\n    if (header['max-age']) {\n        var maxAge = parseInt(header['max-age'], 10);\n        if (isNaN(maxAge)) {\n            delete header['max-age'];\n        } else {\n            header['max-age'] = maxAge;\n        }\n    }\n    return header;\n}\nvar _isSafari = null;\nfunction isSafari(scope) {\n    if (_isSafari == null) {\n        var userAgent = scope.navigator ? scope.navigator.userAgent : null;\n        _isSafari = !!scope.safari || !!(userAgent && (/\\b(iPad|iPhone|iPod)\\b/.test(userAgent) || !!userAgent.match('Safari') && !userAgent.match('Chrome')));\n    }\n    return _isSafari;\n}\nfunction storageAvailable(type) {\n    try {\n        var storage = self[type];\n        storage.setItem('_mapbox_test_', 1);\n        storage.removeItem('_mapbox_test_');\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\nfunction b64EncodeUnicode(str) {\n    return self.btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {\n        return String.fromCharCode(Number('0x' + p1));\n    }));\n}\nfunction b64DecodeUnicode(str) {\n    return decodeURIComponent(self.atob(str).split('').map(function (c) {\n        return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n    }).join(''));\n}\n\nvar now = self.performance && self.performance.now ? self.performance.now.bind(self.performance) : Date.now.bind(Date);\nvar raf = self.requestAnimationFrame || self.mozRequestAnimationFrame || self.webkitRequestAnimationFrame || self.msRequestAnimationFrame;\nvar cancel = self.cancelAnimationFrame || self.mozCancelAnimationFrame || self.webkitCancelAnimationFrame || self.msCancelAnimationFrame;\nvar linkEl;\nvar reducedMotionQuery;\nvar exported = {\n    now: now,\n    frame: function frame(fn) {\n        var frame = raf(fn);\n        return {\n            cancel: function () {\n                return cancel(frame);\n            }\n        };\n    },\n    getImageData: function getImageData(img, padding) {\n        if (padding === void 0)\n            padding = 0;\n        var canvas = self.document.createElement('canvas');\n        var context = canvas.getContext('2d');\n        if (!context) {\n            throw new Error('failed to create canvas 2d context');\n        }\n        canvas.width = img.width;\n        canvas.height = img.height;\n        context.drawImage(img, 0, 0, img.width, img.height);\n        return context.getImageData(-padding, -padding, img.width + 2 * padding, img.height + 2 * padding);\n    },\n    resolveURL: function resolveURL(path) {\n        if (!linkEl) {\n            linkEl = self.document.createElement('a');\n        }\n        linkEl.href = path;\n        return linkEl.href;\n    },\n    hardwareConcurrency: self.navigator.hardwareConcurrency || 4,\n    get devicePixelRatio() {\n        return self.devicePixelRatio;\n    },\n    get prefersReducedMotion() {\n        if (!self.matchMedia) {\n            return false;\n        }\n        if (reducedMotionQuery == null) {\n            reducedMotionQuery = self.matchMedia('(prefers-reduced-motion: reduce)');\n        }\n        return reducedMotionQuery.matches;\n    }\n};\n\nvar config = {\n    API_URL: 'https://api.mapbox.com',\n    get EVENTS_URL() {\n        if (!this.API_URL) {\n            return null;\n        }\n        if (this.API_URL.indexOf('https://api.mapbox.cn') === 0) {\n            return 'https://events.mapbox.cn/events/v2';\n        } else if (this.API_URL.indexOf('https://api.mapbox.com') === 0) {\n            return 'https://events.mapbox.com/events/v2';\n        } else {\n            return null;\n        }\n    },\n    FEEDBACK_URL: 'https://apps.mapbox.com/feedback',\n    REQUIRE_ACCESS_TOKEN: true,\n    ACCESS_TOKEN: null,\n    MAX_PARALLEL_IMAGE_REQUESTS: 16\n};\n\nvar exported$1 = {\n    supported: false,\n    testSupport: testSupport\n};\nvar glForTesting;\nvar webpCheckComplete = false;\nvar webpImgTest;\nvar webpImgTestOnloadComplete = false;\nif (self.document) {\n    webpImgTest = self.document.createElement('img');\n    webpImgTest.onload = function () {\n        if (glForTesting) {\n            testWebpTextureUpload(glForTesting);\n        }\n        glForTesting = null;\n        webpImgTestOnloadComplete = true;\n    };\n    webpImgTest.onerror = function () {\n        webpCheckComplete = true;\n        glForTesting = null;\n    };\n    webpImgTest.src = 'data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=';\n}\nfunction testSupport(gl) {\n    if (webpCheckComplete || !webpImgTest) {\n        return;\n    }\n    if (webpImgTestOnloadComplete) {\n        testWebpTextureUpload(gl);\n    } else {\n        glForTesting = gl;\n    }\n}\nfunction testWebpTextureUpload(gl) {\n    var texture = gl.createTexture();\n    gl.bindTexture(gl.TEXTURE_2D, texture);\n    try {\n        gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, webpImgTest);\n        if (gl.isContextLost()) {\n            return;\n        }\n        exported$1.supported = true;\n    } catch (e) {\n    }\n    gl.deleteTexture(texture);\n    webpCheckComplete = true;\n}\n\nvar SKU_ID = '01';\nfunction createSkuToken() {\n    var TOKEN_VERSION = '1';\n    var base62chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n    var sessionRandomizer = '';\n    for (var i = 0; i < 10; i++) {\n        sessionRandomizer += base62chars[Math.floor(Math.random() * 62)];\n    }\n    var expiration = 12 * 60 * 60 * 1000;\n    var token = [\n        TOKEN_VERSION,\n        SKU_ID,\n        sessionRandomizer\n    ].join('');\n    var tokenExpiresAt = Date.now() + expiration;\n    return {\n        token: token,\n        tokenExpiresAt: tokenExpiresAt\n    };\n}\n\nvar RequestManager = function RequestManager(transformRequestFn, customAccessToken) {\n    this._transformRequestFn = transformRequestFn;\n    this._customAccessToken = customAccessToken;\n    this._createSkuToken();\n};\nRequestManager.prototype._createSkuToken = function _createSkuToken() {\n    var skuToken = createSkuToken();\n    this._skuToken = skuToken.token;\n    this._skuTokenExpiresAt = skuToken.tokenExpiresAt;\n};\nRequestManager.prototype._isSkuTokenExpired = function _isSkuTokenExpired() {\n    return Date.now() > this._skuTokenExpiresAt;\n};\nRequestManager.prototype.transformRequest = function transformRequest(url, type) {\n    if (this._transformRequestFn) {\n        return this._transformRequestFn(url, type) || { url: url };\n    }\n    return { url: url };\n};\nRequestManager.prototype.normalizeStyleURL = function normalizeStyleURL(url, accessToken) {\n    if (!isMapboxURL(url)) {\n        return url;\n    }\n    var urlObject = parseUrl(url);\n    urlObject.path = '/styles/v1' + urlObject.path;\n    return this._makeAPIURL(urlObject, this._customAccessToken || accessToken);\n};\nRequestManager.prototype.normalizeGlyphsURL = function normalizeGlyphsURL(url, accessToken) {\n    if (!isMapboxURL(url)) {\n        return url;\n    }\n    var urlObject = parseUrl(url);\n    urlObject.path = '/fonts/v1' + urlObject.path;\n    return this._makeAPIURL(urlObject, this._customAccessToken || accessToken);\n};\nRequestManager.prototype.normalizeSourceURL = function normalizeSourceURL(url, accessToken) {\n    if (!isMapboxURL(url)) {\n        return url;\n    }\n    var urlObject = parseUrl(url);\n    urlObject.path = '/v4/' + urlObject.authority + '.json';\n    urlObject.params.push('secure');\n    return this._makeAPIURL(urlObject, this._customAccessToken || accessToken);\n};\nRequestManager.prototype.normalizeSpriteURL = function normalizeSpriteURL(url, format, extension, accessToken) {\n    var urlObject = parseUrl(url);\n    if (!isMapboxURL(url)) {\n        urlObject.path += '' + format + extension;\n        return formatUrl(urlObject);\n    }\n    urlObject.path = '/styles/v1' + urlObject.path + '/sprite' + format + extension;\n    return this._makeAPIURL(urlObject, this._customAccessToken || accessToken);\n};\nRequestManager.prototype.normalizeTileURL = function normalizeTileURL(tileURL, tileSize) {\n    if (this._isSkuTokenExpired()) {\n        this._createSkuToken();\n    }\n    if (tileURL && !isMapboxURL(tileURL)) {\n        return tileURL;\n    }\n    var urlObject = parseUrl(tileURL);\n    var imageExtensionRe = /(\\.(png|jpg)\\d*)(?=$)/;\n    var tileURLAPIPrefixRe = /^.+\\/v4\\//;\n    var suffix = exported.devicePixelRatio >= 2 || tileSize === 512 ? '@2x' : '';\n    var extension = exported$1.supported ? '.webp' : '$1';\n    urlObject.path = urlObject.path.replace(imageExtensionRe, '' + suffix + extension);\n    urlObject.path = urlObject.path.replace(tileURLAPIPrefixRe, '/');\n    urlObject.path = '/v4' + urlObject.path;\n    var accessToken = this._customAccessToken || getAccessToken(urlObject.params) || config.ACCESS_TOKEN;\n    if (config.REQUIRE_ACCESS_TOKEN && accessToken && this._skuToken) {\n        urlObject.params.push('sku=' + this._skuToken);\n    }\n    return this._makeAPIURL(urlObject, accessToken);\n};\nRequestManager.prototype.canonicalizeTileURL = function canonicalizeTileURL(url, removeAccessToken) {\n    var version = '/v4/';\n    var extensionRe = /\\.[\\w]+$/;\n    var urlObject = parseUrl(url);\n    if (!urlObject.path.match(/(^\\/v4\\/)/) || !urlObject.path.match(extensionRe)) {\n        return url;\n    }\n    var result = 'mapbox://tiles/';\n    result += urlObject.path.replace(version, '');\n    var params = urlObject.params;\n    if (removeAccessToken) {\n        params = params.filter(function (p) {\n            return !p.match(/^access_token=/);\n        });\n    }\n    if (params.length) {\n        result += '?' + params.join('&');\n    }\n    return result;\n};\nRequestManager.prototype.canonicalizeTileset = function canonicalizeTileset(tileJSON, sourceURL) {\n    var removeAccessToken = sourceURL ? isMapboxURL(sourceURL) : false;\n    var canonical = [];\n    for (var i = 0, list = tileJSON.tiles || []; i < list.length; i += 1) {\n        var url = list[i];\n        if (isMapboxHTTPURL(url)) {\n            canonical.push(this.canonicalizeTileURL(url, removeAccessToken));\n        } else {\n            canonical.push(url);\n        }\n    }\n    return canonical;\n};\nRequestManager.prototype._makeAPIURL = function _makeAPIURL(urlObject, accessToken) {\n    var help = 'See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes';\n    var apiUrlObject = parseUrl(config.API_URL);\n    urlObject.protocol = apiUrlObject.protocol;\n    urlObject.authority = apiUrlObject.authority;\n    if (apiUrlObject.path !== '/') {\n        urlObject.path = '' + apiUrlObject.path + urlObject.path;\n    }\n    if (!config.REQUIRE_ACCESS_TOKEN) {\n        return formatUrl(urlObject);\n    }\n    accessToken = accessToken || config.ACCESS_TOKEN;\n    if (!accessToken) {\n        throw new Error('An API access token is required to use Mapbox GL. ' + help);\n    }\n    if (accessToken[0] === 's') {\n        throw new Error('Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). ' + help);\n    }\n    urlObject.params = urlObject.params.filter(function (d) {\n        return d.indexOf('access_token') === -1;\n    });\n    urlObject.params.push('access_token=' + accessToken);\n    return formatUrl(urlObject);\n};\nfunction isMapboxURL(url) {\n    return url.indexOf('mapbox:') === 0;\n}\nvar mapboxHTTPURLRe = /^((https?:)?\\/\\/)?([^\\/]+\\.)?mapbox\\.c(n|om)(\\/|\\?|$)/i;\nfunction isMapboxHTTPURL(url) {\n    return mapboxHTTPURLRe.test(url);\n}\nfunction hasCacheDefeatingSku(url) {\n    return url.indexOf('sku=') > 0 && isMapboxHTTPURL(url);\n}\nfunction getAccessToken(params) {\n    for (var i = 0, list = params; i < list.length; i += 1) {\n        var param = list[i];\n        var match = param.match(/^access_token=(.*)$/);\n        if (match) {\n            return match[1];\n        }\n    }\n    return null;\n}\nvar urlRe = /^(\\w+):\\/\\/([^/?]*)(\\/[^?]+)?\\??(.+)?/;\nfunction parseUrl(url) {\n    var parts = url.match(urlRe);\n    if (!parts) {\n        throw new Error('Unable to parse URL object');\n    }\n    return {\n        protocol: parts[1],\n        authority: parts[2],\n        path: parts[3] || '/',\n        params: parts[4] ? parts[4].split('&') : []\n    };\n}\nfunction formatUrl(obj) {\n    var params = obj.params.length ? '?' + obj.params.join('&') : '';\n    return obj.protocol + '://' + obj.authority + obj.path + params;\n}\nvar telemEventKey = 'mapbox.eventData';\nfunction parseAccessToken(accessToken) {\n    if (!accessToken) {\n        return null;\n    }\n    var parts = accessToken.split('.');\n    if (!parts || parts.length !== 3) {\n        return null;\n    }\n    try {\n        var jsonData = JSON.parse(b64DecodeUnicode(parts[1]));\n        return jsonData;\n    } catch (e) {\n        return null;\n    }\n}\nvar TelemetryEvent = function TelemetryEvent(type) {\n    this.type = type;\n    this.anonId = null;\n    this.eventData = {};\n    this.queue = [];\n    this.pendingRequest = null;\n};\nTelemetryEvent.prototype.getStorageKey = function getStorageKey(domain) {\n    var tokenData = parseAccessToken(config.ACCESS_TOKEN);\n    var u = '';\n    if (tokenData && tokenData['u']) {\n        u = b64EncodeUnicode(tokenData['u']);\n    } else {\n        u = config.ACCESS_TOKEN || '';\n    }\n    return domain ? telemEventKey + '.' + domain + ':' + u : telemEventKey + ':' + u;\n};\nTelemetryEvent.prototype.fetchEventData = function fetchEventData() {\n    var isLocalStorageAvailable = storageAvailable('localStorage');\n    var storageKey = this.getStorageKey();\n    var uuidKey = this.getStorageKey('uuid');\n    if (isLocalStorageAvailable) {\n        try {\n            var data = self.localStorage.getItem(storageKey);\n            if (data) {\n                this.eventData = JSON.parse(data);\n            }\n            var uuid = self.localStorage.getItem(uuidKey);\n            if (uuid) {\n                this.anonId = uuid;\n            }\n        } catch (e) {\n            warnOnce('Unable to read from LocalStorage');\n        }\n    }\n};\nTelemetryEvent.prototype.saveEventData = function saveEventData() {\n    var isLocalStorageAvailable = storageAvailable('localStorage');\n    var storageKey = this.getStorageKey();\n    var uuidKey = this.getStorageKey('uuid');\n    if (isLocalStorageAvailable) {\n        try {\n            self.localStorage.setItem(uuidKey, this.anonId);\n            if (Object.keys(this.eventData).length >= 1) {\n                self.localStorage.setItem(storageKey, JSON.stringify(this.eventData));\n            }\n        } catch (e) {\n            warnOnce('Unable to write to LocalStorage');\n        }\n    }\n};\nTelemetryEvent.prototype.processRequests = function processRequests(_) {\n};\nTelemetryEvent.prototype.postEvent = function postEvent(timestamp, additionalPayload, callback, customAccessToken) {\n    var this$1 = this;\n    if (!config.EVENTS_URL) {\n        return;\n    }\n    var eventsUrlObject = parseUrl(config.EVENTS_URL);\n    eventsUrlObject.params.push('access_token=' + (customAccessToken || config.ACCESS_TOKEN || ''));\n    var payload = {\n        event: this.type,\n        created: new Date(timestamp).toISOString(),\n        sdkIdentifier: 'mapbox-gl-js',\n        sdkVersion: version,\n        skuId: SKU_ID,\n        userId: this.anonId\n    };\n    var finalPayload = additionalPayload ? extend(payload, additionalPayload) : payload;\n    var request = {\n        url: formatUrl(eventsUrlObject),\n        headers: { 'Content-Type': 'text/plain' },\n        body: JSON.stringify([finalPayload])\n    };\n    this.pendingRequest = postData(request, function (error) {\n        this$1.pendingRequest = null;\n        callback(error);\n        this$1.saveEventData();\n        this$1.processRequests(customAccessToken);\n    });\n};\nTelemetryEvent.prototype.queueRequest = function queueRequest(event, customAccessToken) {\n    this.queue.push(event);\n    this.processRequests(customAccessToken);\n};\nvar MapLoadEvent = function (TelemetryEvent) {\n    function MapLoadEvent() {\n        TelemetryEvent.call(this, 'map.load');\n        this.success = {};\n        this.skuToken = '';\n    }\n    if (TelemetryEvent)\n        MapLoadEvent.__proto__ = TelemetryEvent;\n    MapLoadEvent.prototype = Object.create(TelemetryEvent && TelemetryEvent.prototype);\n    MapLoadEvent.prototype.constructor = MapLoadEvent;\n    MapLoadEvent.prototype.postMapLoadEvent = function postMapLoadEvent(tileUrls, mapId, skuToken, customAccessToken) {\n        this.skuToken = skuToken;\n        if (config.EVENTS_URL && customAccessToken || config.ACCESS_TOKEN && Array.isArray(tileUrls) && tileUrls.some(function (url) {\n                return isMapboxURL(url) || isMapboxHTTPURL(url);\n            })) {\n            this.queueRequest({\n                id: mapId,\n                timestamp: Date.now()\n            }, customAccessToken);\n        }\n    };\n    MapLoadEvent.prototype.processRequests = function processRequests(customAccessToken) {\n        var this$1 = this;\n        if (this.pendingRequest || this.queue.length === 0) {\n            return;\n        }\n        var ref = this.queue.shift();\n        var id = ref.id;\n        var timestamp = ref.timestamp;\n        if (id && this.success[id]) {\n            return;\n        }\n        if (!this.anonId) {\n            this.fetchEventData();\n        }\n        if (!validateUuid(this.anonId)) {\n            this.anonId = uuid();\n        }\n        this.postEvent(timestamp, { skuToken: this.skuToken }, function (err) {\n            if (!err) {\n                if (id) {\n                    this$1.success[id] = true;\n                }\n            }\n        }, customAccessToken);\n    };\n    return MapLoadEvent;\n}(TelemetryEvent);\nvar TurnstileEvent = function (TelemetryEvent) {\n    function TurnstileEvent(customAccessToken) {\n        TelemetryEvent.call(this, 'appUserTurnstile');\n        this._customAccessToken = customAccessToken;\n    }\n    if (TelemetryEvent)\n        TurnstileEvent.__proto__ = TelemetryEvent;\n    TurnstileEvent.prototype = Object.create(TelemetryEvent && TelemetryEvent.prototype);\n    TurnstileEvent.prototype.constructor = TurnstileEvent;\n    TurnstileEvent.prototype.postTurnstileEvent = function postTurnstileEvent(tileUrls, customAccessToken) {\n        if (config.EVENTS_URL && config.ACCESS_TOKEN && Array.isArray(tileUrls) && tileUrls.some(function (url) {\n                return isMapboxURL(url) || isMapboxHTTPURL(url);\n            })) {\n            this.queueRequest(Date.now(), customAccessToken);\n        }\n    };\n    TurnstileEvent.prototype.processRequests = function processRequests(customAccessToken) {\n        var this$1 = this;\n        if (this.pendingRequest || this.queue.length === 0) {\n            return;\n        }\n        if (!this.anonId || !this.eventData.lastSuccess || !this.eventData.tokenU) {\n            this.fetchEventData();\n        }\n        var tokenData = parseAccessToken(config.ACCESS_TOKEN);\n        var tokenU = tokenData ? tokenData['u'] : config.ACCESS_TOKEN;\n        var dueForEvent = tokenU !== this.eventData.tokenU;\n        if (!validateUuid(this.anonId)) {\n            this.anonId = uuid();\n            dueForEvent = true;\n        }\n        var nextUpdate = this.queue.shift();\n        if (this.eventData.lastSuccess) {\n            var lastUpdate = new Date(this.eventData.lastSuccess);\n            var nextDate = new Date(nextUpdate);\n            var daysElapsed = (nextUpdate - this.eventData.lastSuccess) / (24 * 60 * 60 * 1000);\n            dueForEvent = dueForEvent || daysElapsed >= 1 || daysElapsed < -1 || lastUpdate.getDate() !== nextDate.getDate();\n        } else {\n            dueForEvent = true;\n        }\n        if (!dueForEvent) {\n            return this.processRequests();\n        }\n        this.postEvent(nextUpdate, { 'enabled.telemetry': false }, function (err) {\n            if (!err) {\n                this$1.eventData.lastSuccess = nextUpdate;\n                this$1.eventData.tokenU = tokenU;\n            }\n        }, customAccessToken);\n    };\n    return TurnstileEvent;\n}(TelemetryEvent);\nvar turnstileEvent_ = new TurnstileEvent();\nvar postTurnstileEvent = turnstileEvent_.postTurnstileEvent.bind(turnstileEvent_);\nvar mapLoadEvent_ = new MapLoadEvent();\nvar postMapLoadEvent = mapLoadEvent_.postMapLoadEvent.bind(mapLoadEvent_);\n\nvar CACHE_NAME = 'mapbox-tiles';\nvar cacheLimit = 500;\nvar cacheCheckThreshold = 50;\nvar MIN_TIME_UNTIL_EXPIRY = 1000 * 60 * 7;\nvar sharedCache;\nfunction cacheOpen() {\n    if (self.caches && !sharedCache) {\n        sharedCache = self.caches.open(CACHE_NAME);\n    }\n}\nvar responseConstructorSupportsReadableStream;\nfunction prepareBody(response, callback) {\n    if (responseConstructorSupportsReadableStream === undefined) {\n        try {\n            new Response(new ReadableStream());\n            responseConstructorSupportsReadableStream = true;\n        } catch (e) {\n            responseConstructorSupportsReadableStream = false;\n        }\n    }\n    if (responseConstructorSupportsReadableStream) {\n        callback(response.body);\n    } else {\n        response.blob().then(callback);\n    }\n}\nfunction cachePut(request, response, requestTime) {\n    cacheOpen();\n    if (!sharedCache) {\n        return;\n    }\n    var options = {\n        status: response.status,\n        statusText: response.statusText,\n        headers: new self.Headers()\n    };\n    response.headers.forEach(function (v, k) {\n        return options.headers.set(k, v);\n    });\n    var cacheControl = parseCacheControl(response.headers.get('Cache-Control') || '');\n    if (cacheControl['no-store']) {\n        return;\n    }\n    if (cacheControl['max-age']) {\n        options.headers.set('Expires', new Date(requestTime + cacheControl['max-age'] * 1000).toUTCString());\n    }\n    var timeUntilExpiry = new Date(options.headers.get('Expires')).getTime() - requestTime;\n    if (timeUntilExpiry < MIN_TIME_UNTIL_EXPIRY) {\n        return;\n    }\n    prepareBody(response, function (body) {\n        var clonedResponse = new self.Response(body, options);\n        cacheOpen();\n        if (!sharedCache) {\n            return;\n        }\n        sharedCache.then(function (cache) {\n            return cache.put(stripQueryParameters(request.url), clonedResponse);\n        }).catch(function (e) {\n            return warnOnce(e.message);\n        });\n    });\n}\nfunction stripQueryParameters(url) {\n    var start = url.indexOf('?');\n    return start < 0 ? url : url.slice(0, start);\n}\nfunction cacheGet(request, callback) {\n    cacheOpen();\n    if (!sharedCache) {\n        return callback(null);\n    }\n    var strippedURL = stripQueryParameters(request.url);\n    sharedCache.then(function (cache) {\n        cache.match(strippedURL).then(function (response) {\n            var fresh = isFresh(response);\n            cache.delete(strippedURL);\n            if (fresh) {\n                cache.put(strippedURL, response.clone());\n            }\n            callback(null, response, fresh);\n        }).catch(callback);\n    }).catch(callback);\n}\nfunction isFresh(response) {\n    if (!response) {\n        return false;\n    }\n    var expires = new Date(response.headers.get('Expires') || 0);\n    var cacheControl = parseCacheControl(response.headers.get('Cache-Control') || '');\n    return expires > Date.now() && !cacheControl['no-cache'];\n}\nvar globalEntryCounter = Infinity;\nfunction cacheEntryPossiblyAdded(dispatcher) {\n    globalEntryCounter++;\n    if (globalEntryCounter > cacheCheckThreshold) {\n        dispatcher.getActor().send('enforceCacheSizeLimit', cacheLimit);\n        globalEntryCounter = 0;\n    }\n}\nfunction enforceCacheSizeLimit(limit) {\n    cacheOpen();\n    if (!sharedCache) {\n        return;\n    }\n    sharedCache.then(function (cache) {\n        cache.keys().then(function (keys) {\n            for (var i = 0; i < keys.length - limit; i++) {\n                cache.delete(keys[i]);\n            }\n        });\n    });\n}\nfunction clearTileCache(callback) {\n    var promise = self.caches.delete(CACHE_NAME);\n    if (callback) {\n        promise.catch(callback).then(function () {\n            return callback();\n        });\n    }\n}\nfunction setCacheLimits(limit, checkThreshold) {\n    cacheLimit = limit;\n    cacheCheckThreshold = checkThreshold;\n}\n\nvar supportsOffscreenCanvas;\nfunction offscreenCanvasSupported() {\n    if (supportsOffscreenCanvas == null) {\n        supportsOffscreenCanvas = self.OffscreenCanvas && new self.OffscreenCanvas(1, 1).getContext('2d') && typeof self.createImageBitmap === 'function';\n    }\n    return supportsOffscreenCanvas;\n}\n\nvar ResourceType = {\n    Unknown: 'Unknown',\n    Style: 'Style',\n    Source: 'Source',\n    Tile: 'Tile',\n    Glyphs: 'Glyphs',\n    SpriteImage: 'SpriteImage',\n    SpriteJSON: 'SpriteJSON',\n    Image: 'Image'\n};\nif (typeof Object.freeze == 'function') {\n    Object.freeze(ResourceType);\n}\nvar AJAXError = function (Error) {\n    function AJAXError(message, status, url) {\n        if (status === 401 && isMapboxHTTPURL(url)) {\n            message += ': you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes';\n        }\n        Error.call(this, message);\n        this.status = status;\n        this.url = url;\n        this.name = this.constructor.name;\n        this.message = message;\n    }\n    if (Error)\n        AJAXError.__proto__ = Error;\n    AJAXError.prototype = Object.create(Error && Error.prototype);\n    AJAXError.prototype.constructor = AJAXError;\n    AJAXError.prototype.toString = function toString() {\n        return this.name + ': ' + this.message + ' (' + this.status + '): ' + this.url;\n    };\n    return AJAXError;\n}(Error);\nvar getReferrer = isWorker() ? function () {\n    return self.worker && self.worker.referrer;\n} : function () {\n    return (self.location.protocol === 'blob:' ? self.parent : self).location.href;\n};\nvar isFileURL = function (url) {\n    return /^file:/.test(url) || /^file:/.test(getReferrer()) && !/^\\w+:/.test(url);\n};\nfunction makeFetchRequest(requestParameters, callback) {\n    var controller = new self.AbortController();\n    var request = new self.Request(requestParameters.url, {\n        method: requestParameters.method || 'GET',\n        body: requestParameters.body,\n        credentials: requestParameters.credentials,\n        headers: requestParameters.headers,\n        referrer: getReferrer(),\n        signal: controller.signal\n    });\n    var complete = false;\n    var aborted = false;\n    var cacheIgnoringSearch = hasCacheDefeatingSku(request.url);\n    if (requestParameters.type === 'json') {\n        request.headers.set('Accept', 'application/json');\n    }\n    var validateOrFetch = function (err, cachedResponse, responseIsFresh) {\n        if (aborted) {\n            return;\n        }\n        if (err) {\n            if (err.message !== 'SecurityError') {\n                warnOnce(err);\n            }\n        }\n        if (cachedResponse && responseIsFresh) {\n            return finishRequest(cachedResponse);\n        }\n        var requestTime = Date.now();\n        self.fetch(request).then(function (response) {\n            if (response.ok) {\n                var cacheableResponse = cacheIgnoringSearch ? response.clone() : null;\n                return finishRequest(response, cacheableResponse, requestTime);\n            } else {\n                return callback(new AJAXError(response.statusText, response.status, requestParameters.url));\n            }\n        }).catch(function (error) {\n            if (error.code === 20) {\n                return;\n            }\n            callback(new Error(error.message));\n        });\n    };\n    var finishRequest = function (response, cacheableResponse, requestTime) {\n        (requestParameters.type === 'arrayBuffer' ? response.arrayBuffer() : requestParameters.type === 'json' ? response.json() : response.text()).then(function (result) {\n            if (aborted) {\n                return;\n            }\n            if (cacheableResponse && requestTime) {\n                cachePut(request, cacheableResponse, requestTime);\n            }\n            complete = true;\n            callback(null, result, response.headers.get('Cache-Control'), response.headers.get('Expires'));\n        }).catch(function (err) {\n            if (!aborted) {\n                callback(new Error(err.message));\n            }\n        });\n    };\n    if (cacheIgnoringSearch) {\n        cacheGet(request, validateOrFetch);\n    } else {\n        validateOrFetch(null, null);\n    }\n    return {\n        cancel: function () {\n            aborted = true;\n            if (!complete) {\n                controller.abort();\n            }\n        }\n    };\n}\nfunction makeXMLHttpRequest(requestParameters, callback) {\n    var xhr = new self.XMLHttpRequest();\n    xhr.open(requestParameters.method || 'GET', requestParameters.url, true);\n    if (requestParameters.type === 'arrayBuffer') {\n        xhr.responseType = 'arraybuffer';\n    }\n    for (var k in requestParameters.headers) {\n        xhr.setRequestHeader(k, requestParameters.headers[k]);\n    }\n    if (requestParameters.type === 'json') {\n        xhr.responseType = 'text';\n        xhr.setRequestHeader('Accept', 'application/json');\n    }\n    xhr.withCredentials = requestParameters.credentials === 'include';\n    xhr.onerror = function () {\n        callback(new Error(xhr.statusText));\n    };\n    xhr.onload = function () {\n        if ((xhr.status >= 200 && xhr.status < 300 || xhr.status === 0) && xhr.response !== null) {\n            var data = xhr.response;\n            if (requestParameters.type === 'json') {\n                try {\n                    data = JSON.parse(xhr.response);\n                } catch (err) {\n                    return callback(err);\n                }\n            }\n            callback(null, data, xhr.getResponseHeader('Cache-Control'), xhr.getResponseHeader('Expires'));\n        } else {\n            callback(new AJAXError(xhr.statusText, xhr.status, requestParameters.url));\n        }\n    };\n    xhr.send(requestParameters.body);\n    return {\n        cancel: function () {\n            return xhr.abort();\n        }\n    };\n}\nvar makeRequest = function (requestParameters, callback) {\n    if (!isFileURL(requestParameters.url)) {\n        if (self.fetch && self.Request && self.AbortController && self.Request.prototype.hasOwnProperty('signal')) {\n            return makeFetchRequest(requestParameters, callback);\n        }\n        if (isWorker() && self.worker && self.worker.actor) {\n            var queueOnMainThread = true;\n            return self.worker.actor.send('getResource', requestParameters, callback, undefined, queueOnMainThread);\n        }\n    }\n    return makeXMLHttpRequest(requestParameters, callback);\n};\nvar getJSON = function (requestParameters, callback) {\n    return makeRequest(extend(requestParameters, { type: 'json' }), callback);\n};\nvar getArrayBuffer = function (requestParameters, callback) {\n    return makeRequest(extend(requestParameters, { type: 'arrayBuffer' }), callback);\n};\nvar postData = function (requestParameters, callback) {\n    return makeRequest(extend(requestParameters, { method: 'POST' }), callback);\n};\nfunction sameOrigin(url) {\n    var a = self.document.createElement('a');\n    a.href = url;\n    return a.protocol === self.document.location.protocol && a.host === self.document.location.host;\n}\nvar transparentPngUrl = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=';\nfunction arrayBufferToImage(data, callback, cacheControl, expires) {\n    var img = new self.Image();\n    var URL = self.URL;\n    img.onload = function () {\n        callback(null, img);\n        URL.revokeObjectURL(img.src);\n    };\n    img.onerror = function () {\n        return callback(new Error('Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.'));\n    };\n    var blob = new self.Blob([new Uint8Array(data)], { type: 'image/png' });\n    img.cacheControl = cacheControl;\n    img.expires = expires;\n    img.src = data.byteLength ? URL.createObjectURL(blob) : transparentPngUrl;\n}\nfunction arrayBufferToImageBitmap(data, callback) {\n    var blob = new self.Blob([new Uint8Array(data)], { type: 'image/png' });\n    self.createImageBitmap(blob).then(function (imgBitmap) {\n        callback(null, imgBitmap);\n    }).catch(function (e) {\n        callback(new Error('Could not load image because of ' + e.message + '. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.'));\n    });\n}\nvar imageQueue, numImageRequests;\nvar resetImageRequestQueue = function () {\n    imageQueue = [];\n    numImageRequests = 0;\n};\nresetImageRequestQueue();\nvar getImage = function (requestParameters, callback) {\n    if (exported$1.supported) {\n        if (!requestParameters.headers) {\n            requestParameters.headers = {};\n        }\n        requestParameters.headers.accept = 'image/webp,*/*';\n    }\n    if (numImageRequests >= config.MAX_PARALLEL_IMAGE_REQUESTS) {\n        var queued = {\n            requestParameters: requestParameters,\n            callback: callback,\n            cancelled: false,\n            cancel: function cancel() {\n                this.cancelled = true;\n            }\n        };\n        imageQueue.push(queued);\n        return queued;\n    }\n    numImageRequests++;\n    var advanced = false;\n    var advanceImageRequestQueue = function () {\n        if (advanced) {\n            return;\n        }\n        advanced = true;\n        numImageRequests--;\n        while (imageQueue.length && numImageRequests < config.MAX_PARALLEL_IMAGE_REQUESTS) {\n            var request = imageQueue.shift();\n            var requestParameters = request.requestParameters;\n            var callback = request.callback;\n            var cancelled = request.cancelled;\n            if (!cancelled) {\n                request.cancel = getImage(requestParameters, callback).cancel;\n            }\n        }\n    };\n    var request = getArrayBuffer(requestParameters, function (err, data, cacheControl, expires) {\n        advanceImageRequestQueue();\n        if (err) {\n            callback(err);\n        } else if (data) {\n            if (offscreenCanvasSupported()) {\n                arrayBufferToImageBitmap(data, callback);\n            } else {\n                arrayBufferToImage(data, callback, cacheControl, expires);\n            }\n        }\n    });\n    return {\n        cancel: function () {\n            request.cancel();\n            advanceImageRequestQueue();\n        }\n    };\n};\nvar getVideo = function (urls, callback) {\n    var video = self.document.createElement('video');\n    video.muted = true;\n    video.onloadstart = function () {\n        callback(null, video);\n    };\n    for (var i = 0; i < urls.length; i++) {\n        var s = self.document.createElement('source');\n        if (!sameOrigin(urls[i])) {\n            video.crossOrigin = 'Anonymous';\n        }\n        s.src = urls[i];\n        video.appendChild(s);\n    }\n    return {\n        cancel: function () {\n        }\n    };\n};\n\nfunction _addEventListener(type, listener, listenerList) {\n    var listenerExists = listenerList[type] && listenerList[type].indexOf(listener) !== -1;\n    if (!listenerExists) {\n        listenerList[type] = listenerList[type] || [];\n        listenerList[type].push(listener);\n    }\n}\nfunction _removeEventListener(type, listener, listenerList) {\n    if (listenerList && listenerList[type]) {\n        var index = listenerList[type].indexOf(listener);\n        if (index !== -1) {\n            listenerList[type].splice(index, 1);\n        }\n    }\n}\nvar Event = function Event(type, data) {\n    if (data === void 0)\n        data = {};\n    extend(this, data);\n    this.type = type;\n};\nvar ErrorEvent = function (Event) {\n    function ErrorEvent(error, data) {\n        if (data === void 0)\n            data = {};\n        Event.call(this, 'error', extend({ error: error }, data));\n    }\n    if (Event)\n        ErrorEvent.__proto__ = Event;\n    ErrorEvent.prototype = Object.create(Event && Event.prototype);\n    ErrorEvent.prototype.constructor = ErrorEvent;\n    return ErrorEvent;\n}(Event);\nvar Evented = function Evented() {\n};\nEvented.prototype.on = function on(type, listener) {\n    this._listeners = this._listeners || {};\n    _addEventListener(type, listener, this._listeners);\n    return this;\n};\nEvented.prototype.off = function off(type, listener) {\n    _removeEventListener(type, listener, this._listeners);\n    _removeEventListener(type, listener, this._oneTimeListeners);\n    return this;\n};\nEvented.prototype.once = function once(type, listener) {\n    this._oneTimeListeners = this._oneTimeListeners || {};\n    _addEventListener(type, listener, this._oneTimeListeners);\n    return this;\n};\nEvented.prototype.fire = function fire(event, properties) {\n    if (typeof event === 'string') {\n        event = new Event(event, properties || {});\n    }\n    var type = event.type;\n    if (this.listens(type)) {\n        event.target = this;\n        var listeners = this._listeners && this._listeners[type] ? this._listeners[type].slice() : [];\n        for (var i = 0, list = listeners; i < list.length; i += 1) {\n            var listener = list[i];\n            listener.call(this, event);\n        }\n        var oneTimeListeners = this._oneTimeListeners && this._oneTimeListeners[type] ? this._oneTimeListeners[type].slice() : [];\n        for (var i$1 = 0, list$1 = oneTimeListeners; i$1 < list$1.length; i$1 += 1) {\n            var listener$1 = list$1[i$1];\n            _removeEventListener(type, listener$1, this._oneTimeListeners);\n            listener$1.call(this, event);\n        }\n        var parent = this._eventedParent;\n        if (parent) {\n            extend(event, typeof this._eventedParentData === 'function' ? this._eventedParentData() : this._eventedParentData);\n            parent.fire(event);\n        }\n    } else if (event instanceof ErrorEvent) {\n        console.error(event.error);\n    }\n    return this;\n};\nEvented.prototype.listens = function listens(type) {\n    return this._listeners && this._listeners[type] && this._listeners[type].length > 0 || this._oneTimeListeners && this._oneTimeListeners[type] && this._oneTimeListeners[type].length > 0 || this._eventedParent && this._eventedParent.listens(type);\n};\nEvented.prototype.setEventedParent = function setEventedParent(parent, data) {\n    this._eventedParent = parent;\n    this._eventedParentData = data;\n    return this;\n};\n\nvar $version = 8;\nvar $root = {\n\tversion: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: [\n\t\t\t8\n\t\t]\n\t},\n\tname: {\n\t\ttype: \"string\"\n\t},\n\tmetadata: {\n\t\ttype: \"*\"\n\t},\n\tcenter: {\n\t\ttype: \"array\",\n\t\tvalue: \"number\"\n\t},\n\tzoom: {\n\t\ttype: \"number\"\n\t},\n\tbearing: {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tperiod: 360,\n\t\tunits: \"degrees\"\n\t},\n\tpitch: {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tunits: \"degrees\"\n\t},\n\tlight: {\n\t\ttype: \"light\"\n\t},\n\tsources: {\n\t\trequired: true,\n\t\ttype: \"sources\"\n\t},\n\tsprite: {\n\t\ttype: \"string\"\n\t},\n\tglyphs: {\n\t\ttype: \"string\"\n\t},\n\ttransition: {\n\t\ttype: \"transition\"\n\t},\n\tlayers: {\n\t\trequired: true,\n\t\ttype: \"array\",\n\t\tvalue: \"layer\"\n\t}\n};\nvar sources = {\n\t\"*\": {\n\t\ttype: \"source\"\n\t}\n};\nvar source = [\n\t\"source_vector\",\n\t\"source_raster\",\n\t\"source_raster_dem\",\n\t\"source_geojson\",\n\t\"source_video\",\n\t\"source_image\"\n];\nvar source_vector = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvector: {\n\t\t\t}\n\t\t}\n\t},\n\turl: {\n\t\ttype: \"string\"\n\t},\n\ttiles: {\n\t\ttype: \"array\",\n\t\tvalue: \"string\"\n\t},\n\tbounds: {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 4,\n\t\t\"default\": [\n\t\t\t-180,\n\t\t\t-85.051129,\n\t\t\t180,\n\t\t\t85.051129\n\t\t]\n\t},\n\tscheme: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\txyz: {\n\t\t\t},\n\t\t\ttms: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"xyz\"\n\t},\n\tminzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 0\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 22\n\t},\n\tattribution: {\n\t\ttype: \"string\"\n\t},\n\tpromoteId: {\n\t\ttype: \"promoteId\"\n\t},\n\t\"*\": {\n\t\ttype: \"*\"\n\t}\n};\nvar source_raster = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\traster: {\n\t\t\t}\n\t\t}\n\t},\n\turl: {\n\t\ttype: \"string\"\n\t},\n\ttiles: {\n\t\ttype: \"array\",\n\t\tvalue: \"string\"\n\t},\n\tbounds: {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 4,\n\t\t\"default\": [\n\t\t\t-180,\n\t\t\t-85.051129,\n\t\t\t180,\n\t\t\t85.051129\n\t\t]\n\t},\n\tminzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 0\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 22\n\t},\n\ttileSize: {\n\t\ttype: \"number\",\n\t\t\"default\": 512,\n\t\tunits: \"pixels\"\n\t},\n\tscheme: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\txyz: {\n\t\t\t},\n\t\t\ttms: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"xyz\"\n\t},\n\tattribution: {\n\t\ttype: \"string\"\n\t},\n\t\"*\": {\n\t\ttype: \"*\"\n\t}\n};\nvar source_raster_dem = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\t\"raster-dem\": {\n\t\t\t}\n\t\t}\n\t},\n\turl: {\n\t\ttype: \"string\"\n\t},\n\ttiles: {\n\t\ttype: \"array\",\n\t\tvalue: \"string\"\n\t},\n\tbounds: {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 4,\n\t\t\"default\": [\n\t\t\t-180,\n\t\t\t-85.051129,\n\t\t\t180,\n\t\t\t85.051129\n\t\t]\n\t},\n\tminzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 0\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 22\n\t},\n\ttileSize: {\n\t\ttype: \"number\",\n\t\t\"default\": 512,\n\t\tunits: \"pixels\"\n\t},\n\tattribution: {\n\t\ttype: \"string\"\n\t},\n\tencoding: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tterrarium: {\n\t\t\t},\n\t\t\tmapbox: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"mapbox\"\n\t},\n\t\"*\": {\n\t\ttype: \"*\"\n\t}\n};\nvar source_geojson = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tgeojson: {\n\t\t\t}\n\t\t}\n\t},\n\tdata: {\n\t\ttype: \"*\"\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 18\n\t},\n\tattribution: {\n\t\ttype: \"string\"\n\t},\n\tbuffer: {\n\t\ttype: \"number\",\n\t\t\"default\": 128,\n\t\tmaximum: 512,\n\t\tminimum: 0\n\t},\n\ttolerance: {\n\t\ttype: \"number\",\n\t\t\"default\": 0.375\n\t},\n\tcluster: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\tclusterRadius: {\n\t\ttype: \"number\",\n\t\t\"default\": 50,\n\t\tminimum: 0\n\t},\n\tclusterMaxZoom: {\n\t\ttype: \"number\"\n\t},\n\tclusterProperties: {\n\t\ttype: \"*\"\n\t},\n\tlineMetrics: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\tgenerateId: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\tpromoteId: {\n\t\ttype: \"promoteId\"\n\t}\n};\nvar source_video = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvideo: {\n\t\t\t}\n\t\t}\n\t},\n\turls: {\n\t\trequired: true,\n\t\ttype: \"array\",\n\t\tvalue: \"string\"\n\t},\n\tcoordinates: {\n\t\trequired: true,\n\t\ttype: \"array\",\n\t\tlength: 4,\n\t\tvalue: {\n\t\t\ttype: \"array\",\n\t\t\tlength: 2,\n\t\t\tvalue: \"number\"\n\t\t}\n\t}\n};\nvar source_image = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\timage: {\n\t\t\t}\n\t\t}\n\t},\n\turl: {\n\t\trequired: true,\n\t\ttype: \"string\"\n\t},\n\tcoordinates: {\n\t\trequired: true,\n\t\ttype: \"array\",\n\t\tlength: 4,\n\t\tvalue: {\n\t\t\ttype: \"array\",\n\t\t\tlength: 2,\n\t\t\tvalue: \"number\"\n\t\t}\n\t}\n};\nvar layer = {\n\tid: {\n\t\ttype: \"string\",\n\t\trequired: true\n\t},\n\ttype: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tfill: {\n\t\t\t},\n\t\t\tline: {\n\t\t\t},\n\t\t\tsymbol: {\n\t\t\t},\n\t\t\tcircle: {\n\t\t\t},\n\t\t\theatmap: {\n\t\t\t},\n\t\t\t\"fill-extrusion\": {\n\t\t\t},\n\t\t\traster: {\n\t\t\t},\n\t\t\thillshade: {\n\t\t\t},\n\t\t\tbackground: {\n\t\t\t}\n\t\t},\n\t\trequired: true\n\t},\n\tmetadata: {\n\t\ttype: \"*\"\n\t},\n\tsource: {\n\t\ttype: \"string\"\n\t},\n\t\"source-layer\": {\n\t\ttype: \"string\"\n\t},\n\tminzoom: {\n\t\ttype: \"number\",\n\t\tminimum: 0,\n\t\tmaximum: 24\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\tminimum: 0,\n\t\tmaximum: 24\n\t},\n\tfilter: {\n\t\ttype: \"filter\"\n\t},\n\tlayout: {\n\t\ttype: \"layout\"\n\t},\n\tpaint: {\n\t\ttype: \"paint\"\n\t}\n};\nvar layout = [\n\t\"layout_fill\",\n\t\"layout_line\",\n\t\"layout_circle\",\n\t\"layout_heatmap\",\n\t\"layout_fill-extrusion\",\n\t\"layout_symbol\",\n\t\"layout_raster\",\n\t\"layout_hillshade\",\n\t\"layout_background\"\n];\nvar layout_background = {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_fill = {\n\t\"fill-sort-key\": {\n\t\ttype: \"number\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_circle = {\n\t\"circle-sort-key\": {\n\t\ttype: \"number\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_heatmap = {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_line = {\n\t\"line-cap\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tbutt: {\n\t\t\t},\n\t\t\tround: {\n\t\t\t},\n\t\t\tsquare: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"butt\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-join\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tbevel: {\n\t\t\t},\n\t\t\tround: {\n\t\t\t},\n\t\t\tmiter: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"miter\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-miter-limit\": {\n\t\ttype: \"number\",\n\t\t\"default\": 2,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"line-join\": \"miter\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-round-limit\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1.05,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"line-join\": \"round\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-sort-key\": {\n\t\ttype: \"number\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_symbol = {\n\t\"symbol-placement\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tpoint: {\n\t\t\t},\n\t\t\tline: {\n\t\t\t},\n\t\t\t\"line-center\": {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"point\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"symbol-spacing\": {\n\t\ttype: \"number\",\n\t\t\"default\": 250,\n\t\tminimum: 1,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"symbol-placement\": \"line\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"symbol-avoid-edges\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"symbol-sort-key\": {\n\t\ttype: \"number\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"symbol-z-order\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tauto: {\n\t\t\t},\n\t\t\t\"viewport-y\": {\n\t\t\t},\n\t\t\tsource: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-allow-overlap\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-ignore-placement\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-optional\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-rotation-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t},\n\t\t\tauto: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-size\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tunits: \"factor of the original icon size\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-text-fit\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tnone: {\n\t\t\t},\n\t\t\twidth: {\n\t\t\t},\n\t\t\theight: {\n\t\t\t},\n\t\t\tboth: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"none\",\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-text-fit-padding\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 4,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"icon-text-fit\": [\n\t\t\t\t\t\"both\",\n\t\t\t\t\t\"width\",\n\t\t\t\t\t\"height\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-image\": {\n\t\ttype: \"resolvedImage\",\n\t\ttokens: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-rotate\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tperiod: 360,\n\t\tunits: \"degrees\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-padding\": {\n\t\ttype: \"number\",\n\t\t\"default\": 2,\n\t\tminimum: 0,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-keep-upright\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t{\n\t\t\t\t\"icon-rotation-alignment\": \"map\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"line\",\n\t\t\t\t\t\"line-center\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-offset\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tcenter: {\n\t\t\t},\n\t\t\tleft: {\n\t\t\t},\n\t\t\tright: {\n\t\t\t},\n\t\t\ttop: {\n\t\t\t},\n\t\t\tbottom: {\n\t\t\t},\n\t\t\t\"top-left\": {\n\t\t\t},\n\t\t\t\"top-right\": {\n\t\t\t},\n\t\t\t\"bottom-left\": {\n\t\t\t},\n\t\t\t\"bottom-right\": {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"center\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-pitch-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t},\n\t\t\tauto: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-pitch-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t},\n\t\t\tauto: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-rotation-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t},\n\t\t\tauto: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-field\": {\n\t\ttype: \"formatted\",\n\t\t\"default\": \"\",\n\t\ttokens: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-font\": {\n\t\ttype: \"array\",\n\t\tvalue: \"string\",\n\t\t\"default\": [\n\t\t\t\"Open Sans Regular\",\n\t\t\t\"Arial Unicode MS Regular\"\n\t\t],\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-size\": {\n\t\ttype: \"number\",\n\t\t\"default\": 16,\n\t\tminimum: 0,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-max-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 10,\n\t\tminimum: 0,\n\t\tunits: \"ems\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-line-height\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1.2,\n\t\tunits: \"ems\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-letter-spacing\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tunits: \"ems\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-justify\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tauto: {\n\t\t\t},\n\t\t\tleft: {\n\t\t\t},\n\t\t\tcenter: {\n\t\t\t},\n\t\t\tright: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"center\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-radial-offset\": {\n\t\ttype: \"number\",\n\t\tunits: \"ems\",\n\t\t\"default\": 0,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"property-type\": \"data-driven\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t}\n\t},\n\t\"text-variable-anchor\": {\n\t\ttype: \"array\",\n\t\tvalue: \"enum\",\n\t\tvalues: {\n\t\t\tcenter: {\n\t\t\t},\n\t\t\tleft: {\n\t\t\t},\n\t\t\tright: {\n\t\t\t},\n\t\t\ttop: {\n\t\t\t},\n\t\t\tbottom: {\n\t\t\t},\n\t\t\t\"top-left\": {\n\t\t\t},\n\t\t\t\"top-right\": {\n\t\t\t},\n\t\t\t\"bottom-left\": {\n\t\t\t},\n\t\t\t\"bottom-right\": {\n\t\t\t}\n\t\t},\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"point\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tcenter: {\n\t\t\t},\n\t\t\tleft: {\n\t\t\t},\n\t\t\tright: {\n\t\t\t},\n\t\t\ttop: {\n\t\t\t},\n\t\t\tbottom: {\n\t\t\t},\n\t\t\t\"top-left\": {\n\t\t\t},\n\t\t\t\"top-right\": {\n\t\t\t},\n\t\t\t\"bottom-left\": {\n\t\t\t},\n\t\t\t\"bottom-right\": {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"center\",\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"!\": \"text-variable-anchor\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-max-angle\": {\n\t\ttype: \"number\",\n\t\t\"default\": 45,\n\t\tunits: \"degrees\",\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"line\",\n\t\t\t\t\t\"line-center\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-writing-mode\": {\n\t\ttype: \"array\",\n\t\tvalue: \"enum\",\n\t\tvalues: {\n\t\t\thorizontal: {\n\t\t\t},\n\t\t\tvertical: {\n\t\t\t}\n\t\t},\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"point\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-rotate\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tperiod: 360,\n\t\tunits: \"degrees\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-padding\": {\n\t\ttype: \"number\",\n\t\t\"default\": 2,\n\t\tminimum: 0,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-keep-upright\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": true,\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"text-rotation-alignment\": \"map\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"line\",\n\t\t\t\t\t\"line-center\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-transform\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tnone: {\n\t\t\t},\n\t\t\tuppercase: {\n\t\t\t},\n\t\t\tlowercase: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"none\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-offset\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tunits: \"ems\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"!\": \"text-radial-offset\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-allow-overlap\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-ignore-placement\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-optional\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_raster = {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_hillshade = {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar filter = {\n\ttype: \"array\",\n\tvalue: \"*\"\n};\nvar filter_operator = {\n\ttype: \"enum\",\n\tvalues: {\n\t\t\"==\": {\n\t\t},\n\t\t\"!=\": {\n\t\t},\n\t\t\">\": {\n\t\t},\n\t\t\">=\": {\n\t\t},\n\t\t\"<\": {\n\t\t},\n\t\t\"<=\": {\n\t\t},\n\t\t\"in\": {\n\t\t},\n\t\t\"!in\": {\n\t\t},\n\t\tall: {\n\t\t},\n\t\tany: {\n\t\t},\n\t\tnone: {\n\t\t},\n\t\thas: {\n\t\t},\n\t\t\"!has\": {\n\t\t},\n\t\twithin: {\n\t\t}\n\t}\n};\nvar geometry_type = {\n\ttype: \"enum\",\n\tvalues: {\n\t\tPoint: {\n\t\t},\n\t\tLineString: {\n\t\t},\n\t\tPolygon: {\n\t\t}\n\t}\n};\nvar function_stop = {\n\ttype: \"array\",\n\tminimum: 0,\n\tmaximum: 24,\n\tvalue: [\n\t\t\"number\",\n\t\t\"color\"\n\t],\n\tlength: 2\n};\nvar expression = {\n\ttype: \"array\",\n\tvalue: \"*\",\n\tminimum: 1\n};\nvar expression_name = {\n\ttype: \"enum\",\n\tvalues: {\n\t\t\"let\": {\n\t\t\tgroup: \"Variable binding\"\n\t\t},\n\t\t\"var\": {\n\t\t\tgroup: \"Variable binding\"\n\t\t},\n\t\tliteral: {\n\t\t\tgroup: \"Types\"\n\t\t},\n\t\tarray: {\n\t\t\tgroup: \"Types\"\n\t\t},\n\t\tat: {\n\t\t\tgroup: \"Lookup\"\n\t\t},\n\t\t\"in\": {\n\t\t\tgroup: \"Lookup\"\n\t\t},\n\t\t\"index-of\": {\n\t\t\tgroup: \"Lookup\"\n\t\t},\n\t\tslice: {\n\t\t\tgroup: \"Lookup\"\n\t\t},\n\t\t\"case\": {\n\t\t\tgroup: \"Decision\"\n\t\t},\n\t\tmatch: {\n\t\t\tgroup: \"Decision\"\n\t\t},\n\t\tcoalesce: {\n\t\t\tgroup: \"Decision\"\n\t\t},\n\t\tstep: {\n\t\t\tgroup: \"Ramps, scales, curves\"\n\t\t},\n\t\tinterpolate: {\n\t\t\tgroup: \"Ramps, scales, curves\"\n\t\t},\n\t\t\"interpolate-hcl\": {\n\t\t\tgroup: \"Ramps, scales, curves\"\n\t\t},\n\t\t\"interpolate-lab\": {\n\t\t\tgroup: \"Ramps, scales, curves\"\n\t\t},\n\t\tln2: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\tpi: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\te: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\t\"typeof\": {\n\t\t\tgroup: \"Types\"\n\t\t},\n\t\tstring: {\n\t\t\tgroup: \"Types\"\n\t\t},\n\t\tnumber: {\n\t\t\tgroup: \"Types\"\n\t\t},\n\t\tboolean: {\n\t\t\tgroup: \"Types\"\n\t\t},\n\t\tobject: {\n\t\t\tgroup: \"Types\"\n\t\t},\n\t\tcollator: {\n\t\t\tgroup: \"Types\"\n\t\t},\n\t\tformat: {\n\t\t\tgroup: \"Types\"\n\t\t},\n\t\timage: {\n\t\t\tgroup: \"Types\"\n\t\t},\n\t\t\"number-format\": {\n\t\t\tgroup: \"Types\"\n\t\t},\n\t\t\"to-string\": {\n\t\t\tgroup: \"Types\"\n\t\t},\n\t\t\"to-number\": {\n\t\t\tgroup: \"Types\"\n\t\t},\n\t\t\"to-boolean\": {\n\t\t\tgroup: \"Types\"\n\t\t},\n\t\t\"to-rgba\": {\n\t\t\tgroup: \"Color\"\n\t\t},\n\t\t\"to-color\": {\n\t\t\tgroup: \"Types\"\n\t\t},\n\t\trgb: {\n\t\t\tgroup: \"Color\"\n\t\t},\n\t\trgba: {\n\t\t\tgroup: \"Color\"\n\t\t},\n\t\tget: {\n\t\t\tgroup: \"Lookup\"\n\t\t},\n\t\thas: {\n\t\t\tgroup: \"Lookup\"\n\t\t},\n\t\tlength: {\n\t\t\tgroup: \"Lookup\"\n\t\t},\n\t\tproperties: {\n\t\t\tgroup: \"Feature data\"\n\t\t},\n\t\t\"feature-state\": {\n\t\t\tgroup: \"Feature data\"\n\t\t},\n\t\t\"geometry-type\": {\n\t\t\tgroup: \"Feature data\"\n\t\t},\n\t\tid: {\n\t\t\tgroup: \"Feature data\"\n\t\t},\n\t\tzoom: {\n\t\t\tgroup: \"Zoom\"\n\t\t},\n\t\t\"heatmap-density\": {\n\t\t\tgroup: \"Heatmap\"\n\t\t},\n\t\t\"line-progress\": {\n\t\t\tgroup: \"Feature data\"\n\t\t},\n\t\taccumulated: {\n\t\t\tgroup: \"Feature data\"\n\t\t},\n\t\t\"+\": {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\t\"*\": {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\t\"-\": {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\t\"/\": {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\t\"%\": {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\t\"^\": {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\tsqrt: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\tlog10: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\tln: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\tlog2: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\tsin: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\tcos: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\ttan: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\tasin: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\tacos: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\tatan: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\tmin: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\tmax: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\tround: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\tabs: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\tceil: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\tfloor: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\tdistance: {\n\t\t\tgroup: \"Math\"\n\t\t},\n\t\t\"==\": {\n\t\t\tgroup: \"Decision\"\n\t\t},\n\t\t\"!=\": {\n\t\t\tgroup: \"Decision\"\n\t\t},\n\t\t\">\": {\n\t\t\tgroup: \"Decision\"\n\t\t},\n\t\t\"<\": {\n\t\t\tgroup: \"Decision\"\n\t\t},\n\t\t\">=\": {\n\t\t\tgroup: \"Decision\"\n\t\t},\n\t\t\"<=\": {\n\t\t\tgroup: \"Decision\"\n\t\t},\n\t\tall: {\n\t\t\tgroup: \"Decision\"\n\t\t},\n\t\tany: {\n\t\t\tgroup: \"Decision\"\n\t\t},\n\t\t\"!\": {\n\t\t\tgroup: \"Decision\"\n\t\t},\n\t\twithin: {\n\t\t\tgroup: \"Decision\"\n\t\t},\n\t\t\"is-supported-script\": {\n\t\t\tgroup: \"String\"\n\t\t},\n\t\tupcase: {\n\t\t\tgroup: \"String\"\n\t\t},\n\t\tdowncase: {\n\t\t\tgroup: \"String\"\n\t\t},\n\t\tconcat: {\n\t\t\tgroup: \"String\"\n\t\t},\n\t\t\"resolved-locale\": {\n\t\t\tgroup: \"String\"\n\t\t}\n\t}\n};\nvar light = {\n\tanchor: {\n\t\ttype: \"enum\",\n\t\t\"default\": \"viewport\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"property-type\": \"data-constant\",\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t}\n\t},\n\tposition: {\n\t\ttype: \"array\",\n\t\t\"default\": [\n\t\t\t1.15,\n\t\t\t210,\n\t\t\t30\n\t\t],\n\t\tlength: 3,\n\t\tvalue: \"number\",\n\t\t\"property-type\": \"data-constant\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t}\n\t},\n\tcolor: {\n\t\ttype: \"color\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": \"#ffffff\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t},\n\tintensity: {\n\t\ttype: \"number\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": 0.5,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t}\n};\nvar paint = [\n\t\"paint_fill\",\n\t\"paint_line\",\n\t\"paint_circle\",\n\t\"paint_heatmap\",\n\t\"paint_fill-extrusion\",\n\t\"paint_symbol\",\n\t\"paint_raster\",\n\t\"paint_hillshade\",\n\t\"paint_background\"\n];\nvar paint_fill = {\n\t\"fill-antialias\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"fill-pattern\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-outline-color\": {\n\t\ttype: \"color\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"fill-pattern\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"fill-antialias\": true\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"fill-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-pattern\": {\n\t\ttype: \"resolvedImage\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded-data-driven\"\n\t}\n};\nvar paint_line = {\n\t\"line-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"line-pattern\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"line-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-gap-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-offset\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-blur\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-dasharray\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"line widths\",\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"line-pattern\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded\"\n\t},\n\t\"line-pattern\": {\n\t\ttype: \"resolvedImage\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded-data-driven\"\n\t},\n\t\"line-gradient\": {\n\t\ttype: \"color\",\n\t\ttransition: false,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"line-dasharray\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"!\": \"line-pattern\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tsource: \"geojson\",\n\t\t\t\thas: {\n\t\t\t\t\tlineMetrics: true\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"line-progress\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"color-ramp\"\n\t}\n};\nvar paint_circle = {\n\t\"circle-radius\": {\n\t\ttype: \"number\",\n\t\t\"default\": 5,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-blur\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"circle-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"circle-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"circle-pitch-scale\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"circle-pitch-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"viewport\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"circle-stroke-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-stroke-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-stroke-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t}\n};\nvar paint_heatmap = {\n\t\"heatmap-radius\": {\n\t\ttype: \"number\",\n\t\t\"default\": 30,\n\t\tminimum: 1,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"heatmap-weight\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"heatmap-intensity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"heatmap-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": [\n\t\t\t\"interpolate\",\n\t\t\t[\n\t\t\t\t\"linear\"\n\t\t\t],\n\t\t\t[\n\t\t\t\t\"heatmap-density\"\n\t\t\t],\n\t\t\t0,\n\t\t\t\"rgba(0, 0, 255, 0)\",\n\t\t\t0.1,\n\t\t\t\"royalblue\",\n\t\t\t0.3,\n\t\t\t\"cyan\",\n\t\t\t0.5,\n\t\t\t\"lime\",\n\t\t\t0.7,\n\t\t\t\"yellow\",\n\t\t\t1,\n\t\t\t\"red\"\n\t\t],\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"heatmap-density\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"color-ramp\"\n\t},\n\t\"heatmap-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar paint_symbol = {\n\t\"icon-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-halo-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"rgba(0, 0, 0, 0)\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-halo-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-halo-blur\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t\"icon-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\toverridable: true,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-halo-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"rgba(0, 0, 0, 0)\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-halo-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-halo-blur\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t\"text-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar paint_raster = {\n\t\"raster-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-hue-rotate\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tperiod: 360,\n\t\ttransition: true,\n\t\tunits: \"degrees\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-brightness-min\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-brightness-max\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-saturation\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: -1,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-contrast\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: -1,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-resampling\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tlinear: {\n\t\t\t},\n\t\t\tnearest: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"linear\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-fade-duration\": {\n\t\ttype: \"number\",\n\t\t\"default\": 300,\n\t\tminimum: 0,\n\t\ttransition: false,\n\t\tunits: \"milliseconds\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar paint_hillshade = {\n\t\"hillshade-illumination-direction\": {\n\t\ttype: \"number\",\n\t\t\"default\": 335,\n\t\tminimum: 0,\n\t\tmaximum: 359,\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-illumination-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"viewport\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-exaggeration\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0.5,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-shadow-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-highlight-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#FFFFFF\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-accent-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar paint_background = {\n\t\"background-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"background-pattern\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"background-pattern\": {\n\t\ttype: \"resolvedImage\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded\"\n\t},\n\t\"background-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar transition = {\n\tduration: {\n\t\ttype: \"number\",\n\t\t\"default\": 300,\n\t\tminimum: 0,\n\t\tunits: \"milliseconds\"\n\t},\n\tdelay: {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\tunits: \"milliseconds\"\n\t}\n};\nvar promoteId = {\n\t\"*\": {\n\t\ttype: \"string\"\n\t}\n};\nvar spec = {\n\t$version: $version,\n\t$root: $root,\n\tsources: sources,\n\tsource: source,\n\tsource_vector: source_vector,\n\tsource_raster: source_raster,\n\tsource_raster_dem: source_raster_dem,\n\tsource_geojson: source_geojson,\n\tsource_video: source_video,\n\tsource_image: source_image,\n\tlayer: layer,\n\tlayout: layout,\n\tlayout_background: layout_background,\n\tlayout_fill: layout_fill,\n\tlayout_circle: layout_circle,\n\tlayout_heatmap: layout_heatmap,\n\t\"layout_fill-extrusion\": {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n},\n\tlayout_line: layout_line,\n\tlayout_symbol: layout_symbol,\n\tlayout_raster: layout_raster,\n\tlayout_hillshade: layout_hillshade,\n\tfilter: filter,\n\tfilter_operator: filter_operator,\n\tgeometry_type: geometry_type,\n\t\"function\": {\n\texpression: {\n\t\ttype: \"expression\"\n\t},\n\tstops: {\n\t\ttype: \"array\",\n\t\tvalue: \"function_stop\"\n\t},\n\tbase: {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0\n\t},\n\tproperty: {\n\t\ttype: \"string\",\n\t\t\"default\": \"$zoom\"\n\t},\n\ttype: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tidentity: {\n\t\t\t},\n\t\t\texponential: {\n\t\t\t},\n\t\t\tinterval: {\n\t\t\t},\n\t\t\tcategorical: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"exponential\"\n\t},\n\tcolorSpace: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\trgb: {\n\t\t\t},\n\t\t\tlab: {\n\t\t\t},\n\t\t\thcl: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"rgb\"\n\t},\n\t\"default\": {\n\t\ttype: \"*\",\n\t\trequired: false\n\t}\n},\n\tfunction_stop: function_stop,\n\texpression: expression,\n\texpression_name: expression_name,\n\tlight: light,\n\tpaint: paint,\n\tpaint_fill: paint_fill,\n\t\"paint_fill-extrusion\": {\n\t\"fill-extrusion-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-extrusion-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"fill-extrusion-pattern\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-extrusion-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-extrusion-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"fill-extrusion-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-extrusion-pattern\": {\n\t\ttype: \"resolvedImage\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded-data-driven\"\n\t},\n\t\"fill-extrusion-height\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\tunits: \"meters\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-extrusion-base\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\tunits: \"meters\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"fill-extrusion-height\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-extrusion-vertical-gradient\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": true,\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n},\n\tpaint_line: paint_line,\n\tpaint_circle: paint_circle,\n\tpaint_heatmap: paint_heatmap,\n\tpaint_symbol: paint_symbol,\n\tpaint_raster: paint_raster,\n\tpaint_hillshade: paint_hillshade,\n\tpaint_background: paint_background,\n\ttransition: transition,\n\t\"property-type\": {\n\t\"data-driven\": {\n\t\ttype: \"property-type\"\n\t},\n\t\"cross-faded\": {\n\t\ttype: \"property-type\"\n\t},\n\t\"cross-faded-data-driven\": {\n\t\ttype: \"property-type\"\n\t},\n\t\"color-ramp\": {\n\t\ttype: \"property-type\"\n\t},\n\t\"data-constant\": {\n\t\ttype: \"property-type\"\n\t},\n\tconstant: {\n\t\ttype: \"property-type\"\n\t}\n},\n\tpromoteId: promoteId\n};\n\nvar ValidationError = function ValidationError(key, value, message, identifier) {\n    this.message = (key ? key + ': ' : '') + message;\n    if (identifier) {\n        this.identifier = identifier;\n    }\n    if (value !== null && value !== undefined && value.__line__) {\n        this.line = value.__line__;\n    }\n};\n\nfunction validateConstants(options) {\n    var key = options.key;\n    var constants = options.value;\n    if (constants) {\n        return [new ValidationError(key, constants, 'constants have been deprecated as of v8')];\n    } else {\n        return [];\n    }\n}\n\nfunction extend$1 (output) {\n    var inputs = [], len = arguments.length - 1;\n    while (len-- > 0)\n        inputs[len] = arguments[len + 1];\n    for (var i = 0, list = inputs; i < list.length; i += 1) {\n        var input = list[i];\n        for (var k in input) {\n            output[k] = input[k];\n        }\n    }\n    return output;\n}\n\nfunction unbundle(value) {\n    if (value instanceof Number || value instanceof String || value instanceof Boolean) {\n        return value.valueOf();\n    } else {\n        return value;\n    }\n}\nfunction deepUnbundle(value) {\n    if (Array.isArray(value)) {\n        return value.map(deepUnbundle);\n    } else if (value instanceof Object && !(value instanceof Number || value instanceof String || value instanceof Boolean)) {\n        var unbundledValue = {};\n        for (var key in value) {\n            unbundledValue[key] = deepUnbundle(value[key]);\n        }\n        return unbundledValue;\n    }\n    return unbundle(value);\n}\n\nvar ParsingError = function (Error) {\n    function ParsingError(key, message) {\n        Error.call(this, message);\n        this.message = message;\n        this.key = key;\n    }\n    if (Error)\n        ParsingError.__proto__ = Error;\n    ParsingError.prototype = Object.create(Error && Error.prototype);\n    ParsingError.prototype.constructor = ParsingError;\n    return ParsingError;\n}(Error);\n\nvar Scope = function Scope(parent, bindings) {\n    if (bindings === void 0)\n        bindings = [];\n    this.parent = parent;\n    this.bindings = {};\n    for (var i = 0, list = bindings; i < list.length; i += 1) {\n        var ref = list[i];\n        var name = ref[0];\n        var expression = ref[1];\n        this.bindings[name] = expression;\n    }\n};\nScope.prototype.concat = function concat(bindings) {\n    return new Scope(this, bindings);\n};\nScope.prototype.get = function get(name) {\n    if (this.bindings[name]) {\n        return this.bindings[name];\n    }\n    if (this.parent) {\n        return this.parent.get(name);\n    }\n    throw new Error(name + ' not found in scope.');\n};\nScope.prototype.has = function has(name) {\n    if (this.bindings[name]) {\n        return true;\n    }\n    return this.parent ? this.parent.has(name) : false;\n};\n\nvar NullType = { kind: 'null' };\nvar NumberType = { kind: 'number' };\nvar StringType = { kind: 'string' };\nvar BooleanType = { kind: 'boolean' };\nvar ColorType = { kind: 'color' };\nvar ObjectType = { kind: 'object' };\nvar ValueType = { kind: 'value' };\nvar ErrorType = { kind: 'error' };\nvar CollatorType = { kind: 'collator' };\nvar FormattedType = { kind: 'formatted' };\nvar ResolvedImageType = { kind: 'resolvedImage' };\nfunction array(itemType, N) {\n    return {\n        kind: 'array',\n        itemType: itemType,\n        N: N\n    };\n}\nfunction toString(type) {\n    if (type.kind === 'array') {\n        var itemType = toString(type.itemType);\n        return typeof type.N === 'number' ? 'array<' + itemType + ', ' + type.N + '>' : type.itemType.kind === 'value' ? 'array' : 'array<' + itemType + '>';\n    } else {\n        return type.kind;\n    }\n}\nvar valueMemberTypes = [\n    NullType,\n    NumberType,\n    StringType,\n    BooleanType,\n    ColorType,\n    FormattedType,\n    ObjectType,\n    array(ValueType),\n    ResolvedImageType\n];\nfunction checkSubtype(expected, t) {\n    if (t.kind === 'error') {\n        return null;\n    } else if (expected.kind === 'array') {\n        if (t.kind === 'array' && (t.N === 0 && t.itemType.kind === 'value' || !checkSubtype(expected.itemType, t.itemType)) && (typeof expected.N !== 'number' || expected.N === t.N)) {\n            return null;\n        }\n    } else if (expected.kind === t.kind) {\n        return null;\n    } else if (expected.kind === 'value') {\n        for (var i = 0, list = valueMemberTypes; i < list.length; i += 1) {\n            var memberType = list[i];\n            if (!checkSubtype(memberType, t)) {\n                return null;\n            }\n        }\n    }\n    return 'Expected ' + toString(expected) + ' but found ' + toString(t) + ' instead.';\n}\nfunction isValidType(provided, allowedTypes) {\n    return allowedTypes.some(function (t) {\n        return t.kind === provided.kind;\n    });\n}\nfunction isValidNativeType(provided, allowedTypes) {\n    return allowedTypes.some(function (t) {\n        if (t === 'null') {\n            return provided === null;\n        } else if (t === 'array') {\n            return Array.isArray(provided);\n        } else if (t === 'object') {\n            return provided && !Array.isArray(provided) && typeof provided === 'object';\n        } else {\n            return t === typeof provided;\n        }\n    });\n}\n\nvar csscolorparser = createCommonjsModule(function (module, exports) {\nvar kCSSColorTable = {\n    'transparent': [\n        0,\n        0,\n        0,\n        0\n    ],\n    'aliceblue': [\n        240,\n        248,\n        255,\n        1\n    ],\n    'antiquewhite': [\n        250,\n        235,\n        215,\n        1\n    ],\n    'aqua': [\n        0,\n        255,\n        255,\n        1\n    ],\n    'aquamarine': [\n        127,\n        255,\n        212,\n        1\n    ],\n    'azure': [\n        240,\n        255,\n        255,\n        1\n    ],\n    'beige': [\n        245,\n        245,\n        220,\n        1\n    ],\n    'bisque': [\n        255,\n        228,\n        196,\n        1\n    ],\n    'black': [\n        0,\n        0,\n        0,\n        1\n    ],\n    'blanchedalmond': [\n        255,\n        235,\n        205,\n        1\n    ],\n    'blue': [\n        0,\n        0,\n        255,\n        1\n    ],\n    'blueviolet': [\n        138,\n        43,\n        226,\n        1\n    ],\n    'brown': [\n        165,\n        42,\n        42,\n        1\n    ],\n    'burlywood': [\n        222,\n        184,\n        135,\n        1\n    ],\n    'cadetblue': [\n        95,\n        158,\n        160,\n        1\n    ],\n    'chartreuse': [\n        127,\n        255,\n        0,\n        1\n    ],\n    'chocolate': [\n        210,\n        105,\n        30,\n        1\n    ],\n    'coral': [\n        255,\n        127,\n        80,\n        1\n    ],\n    'cornflowerblue': [\n        100,\n        149,\n        237,\n        1\n    ],\n    'cornsilk': [\n        255,\n        248,\n        220,\n        1\n    ],\n    'crimson': [\n        220,\n        20,\n        60,\n        1\n    ],\n    'cyan': [\n        0,\n        255,\n        255,\n        1\n    ],\n    'darkblue': [\n        0,\n        0,\n        139,\n        1\n    ],\n    'darkcyan': [\n        0,\n        139,\n        139,\n        1\n    ],\n    'darkgoldenrod': [\n        184,\n        134,\n        11,\n        1\n    ],\n    'darkgray': [\n        169,\n        169,\n        169,\n        1\n    ],\n    'darkgreen': [\n        0,\n        100,\n        0,\n        1\n    ],\n    'darkgrey': [\n        169,\n        169,\n        169,\n        1\n    ],\n    'darkkhaki': [\n        189,\n        183,\n        107,\n        1\n    ],\n    'darkmagenta': [\n        139,\n        0,\n        139,\n        1\n    ],\n    'darkolivegreen': [\n        85,\n        107,\n        47,\n        1\n    ],\n    'darkorange': [\n        255,\n        140,\n        0,\n        1\n    ],\n    'darkorchid': [\n        153,\n        50,\n        204,\n        1\n    ],\n    'darkred': [\n        139,\n        0,\n        0,\n        1\n    ],\n    'darksalmon': [\n        233,\n        150,\n        122,\n        1\n    ],\n    'darkseagreen': [\n        143,\n        188,\n        143,\n        1\n    ],\n    'darkslateblue': [\n        72,\n        61,\n        139,\n        1\n    ],\n    'darkslategray': [\n        47,\n        79,\n        79,\n        1\n    ],\n    'darkslategrey': [\n        47,\n        79,\n        79,\n        1\n    ],\n    'darkturquoise': [\n        0,\n        206,\n        209,\n        1\n    ],\n    'darkviolet': [\n        148,\n        0,\n        211,\n        1\n    ],\n    'deeppink': [\n        255,\n        20,\n        147,\n        1\n    ],\n    'deepskyblue': [\n        0,\n        191,\n        255,\n        1\n    ],\n    'dimgray': [\n        105,\n        105,\n        105,\n        1\n    ],\n    'dimgrey': [\n        105,\n        105,\n        105,\n        1\n    ],\n    'dodgerblue': [\n        30,\n        144,\n        255,\n        1\n    ],\n    'firebrick': [\n        178,\n        34,\n        34,\n        1\n    ],\n    'floralwhite': [\n        255,\n        250,\n        240,\n        1\n    ],\n    'forestgreen': [\n        34,\n        139,\n        34,\n        1\n    ],\n    'fuchsia': [\n        255,\n        0,\n        255,\n        1\n    ],\n    'gainsboro': [\n        220,\n        220,\n        220,\n        1\n    ],\n    'ghostwhite': [\n        248,\n        248,\n        255,\n        1\n    ],\n    'gold': [\n        255,\n        215,\n        0,\n        1\n    ],\n    'goldenrod': [\n        218,\n        165,\n        32,\n        1\n    ],\n    'gray': [\n        128,\n        128,\n        128,\n        1\n    ],\n    'green': [\n        0,\n        128,\n        0,\n        1\n    ],\n    'greenyellow': [\n        173,\n        255,\n        47,\n        1\n    ],\n    'grey': [\n        128,\n        128,\n        128,\n        1\n    ],\n    'honeydew': [\n        240,\n        255,\n        240,\n        1\n    ],\n    'hotpink': [\n        255,\n        105,\n        180,\n        1\n    ],\n    'indianred': [\n        205,\n        92,\n        92,\n        1\n    ],\n    'indigo': [\n        75,\n        0,\n        130,\n        1\n    ],\n    'ivory': [\n        255,\n        255,\n        240,\n        1\n    ],\n    'khaki': [\n        240,\n        230,\n        140,\n        1\n    ],\n    'lavender': [\n        230,\n        230,\n        250,\n        1\n    ],\n    'lavenderblush': [\n        255,\n        240,\n        245,\n        1\n    ],\n    'lawngreen': [\n        124,\n        252,\n        0,\n        1\n    ],\n    'lemonchiffon': [\n        255,\n        250,\n        205,\n        1\n    ],\n    'lightblue': [\n        173,\n        216,\n        230,\n        1\n    ],\n    'lightcoral': [\n        240,\n        128,\n        128,\n        1\n    ],\n    'lightcyan': [\n        224,\n        255,\n        255,\n        1\n    ],\n    'lightgoldenrodyellow': [\n        250,\n        250,\n        210,\n        1\n    ],\n    'lightgray': [\n        211,\n        211,\n        211,\n        1\n    ],\n    'lightgreen': [\n        144,\n        238,\n        144,\n        1\n    ],\n    'lightgrey': [\n        211,\n        211,\n        211,\n        1\n    ],\n    'lightpink': [\n        255,\n        182,\n        193,\n        1\n    ],\n    'lightsalmon': [\n        255,\n        160,\n        122,\n        1\n    ],\n    'lightseagreen': [\n        32,\n        178,\n        170,\n        1\n    ],\n    'lightskyblue': [\n        135,\n        206,\n        250,\n        1\n    ],\n    'lightslategray': [\n        119,\n        136,\n        153,\n        1\n    ],\n    'lightslategrey': [\n        119,\n        136,\n        153,\n        1\n    ],\n    'lightsteelblue': [\n        176,\n        196,\n        222,\n        1\n    ],\n    'lightyellow': [\n        255,\n        255,\n        224,\n        1\n    ],\n    'lime': [\n        0,\n        255,\n        0,\n        1\n    ],\n    'limegreen': [\n        50,\n        205,\n        50,\n        1\n    ],\n    'linen': [\n        250,\n        240,\n        230,\n        1\n    ],\n    'magenta': [\n        255,\n        0,\n        255,\n        1\n    ],\n    'maroon': [\n        128,\n        0,\n        0,\n        1\n    ],\n    'mediumaquamarine': [\n        102,\n        205,\n        170,\n        1\n    ],\n    'mediumblue': [\n        0,\n        0,\n        205,\n        1\n    ],\n    'mediumorchid': [\n        186,\n        85,\n        211,\n        1\n    ],\n    'mediumpurple': [\n        147,\n        112,\n        219,\n        1\n    ],\n    'mediumseagreen': [\n        60,\n        179,\n        113,\n        1\n    ],\n    'mediumslateblue': [\n        123,\n        104,\n        238,\n        1\n    ],\n    'mediumspringgreen': [\n        0,\n        250,\n        154,\n        1\n    ],\n    'mediumturquoise': [\n        72,\n        209,\n        204,\n        1\n    ],\n    'mediumvioletred': [\n        199,\n        21,\n        133,\n        1\n    ],\n    'midnightblue': [\n        25,\n        25,\n        112,\n        1\n    ],\n    'mintcream': [\n        245,\n        255,\n        250,\n        1\n    ],\n    'mistyrose': [\n        255,\n        228,\n        225,\n        1\n    ],\n    'moccasin': [\n        255,\n        228,\n        181,\n        1\n    ],\n    'navajowhite': [\n        255,\n        222,\n        173,\n        1\n    ],\n    'navy': [\n        0,\n        0,\n        128,\n        1\n    ],\n    'oldlace': [\n        253,\n        245,\n        230,\n        1\n    ],\n    'olive': [\n        128,\n        128,\n        0,\n        1\n    ],\n    'olivedrab': [\n        107,\n        142,\n        35,\n        1\n    ],\n    'orange': [\n        255,\n        165,\n        0,\n        1\n    ],\n    'orangered': [\n        255,\n        69,\n        0,\n        1\n    ],\n    'orchid': [\n        218,\n        112,\n        214,\n        1\n    ],\n    'palegoldenrod': [\n        238,\n        232,\n        170,\n        1\n    ],\n    'palegreen': [\n        152,\n        251,\n        152,\n        1\n    ],\n    'paleturquoise': [\n        175,\n        238,\n        238,\n        1\n    ],\n    'palevioletred': [\n        219,\n        112,\n        147,\n        1\n    ],\n    'papayawhip': [\n        255,\n        239,\n        213,\n        1\n    ],\n    'peachpuff': [\n        255,\n        218,\n        185,\n        1\n    ],\n    'peru': [\n        205,\n        133,\n        63,\n        1\n    ],\n    'pink': [\n        255,\n        192,\n        203,\n        1\n    ],\n    'plum': [\n        221,\n        160,\n        221,\n        1\n    ],\n    'powderblue': [\n        176,\n        224,\n        230,\n        1\n    ],\n    'purple': [\n        128,\n        0,\n        128,\n        1\n    ],\n    'rebeccapurple': [\n        102,\n        51,\n        153,\n        1\n    ],\n    'red': [\n        255,\n        0,\n        0,\n        1\n    ],\n    'rosybrown': [\n        188,\n        143,\n        143,\n        1\n    ],\n    'royalblue': [\n        65,\n        105,\n        225,\n        1\n    ],\n    'saddlebrown': [\n        139,\n        69,\n        19,\n        1\n    ],\n    'salmon': [\n        250,\n        128,\n        114,\n        1\n    ],\n    'sandybrown': [\n        244,\n        164,\n        96,\n        1\n    ],\n    'seagreen': [\n        46,\n        139,\n        87,\n        1\n    ],\n    'seashell': [\n        255,\n        245,\n        238,\n        1\n    ],\n    'sienna': [\n        160,\n        82,\n        45,\n        1\n    ],\n    'silver': [\n        192,\n        192,\n        192,\n        1\n    ],\n    'skyblue': [\n        135,\n        206,\n        235,\n        1\n    ],\n    'slateblue': [\n        106,\n        90,\n        205,\n        1\n    ],\n    'slategray': [\n        112,\n        128,\n        144,\n        1\n    ],\n    'slategrey': [\n        112,\n        128,\n        144,\n        1\n    ],\n    'snow': [\n        255,\n        250,\n        250,\n        1\n    ],\n    'springgreen': [\n        0,\n        255,\n        127,\n        1\n    ],\n    'steelblue': [\n        70,\n        130,\n        180,\n        1\n    ],\n    'tan': [\n        210,\n        180,\n        140,\n        1\n    ],\n    'teal': [\n        0,\n        128,\n        128,\n        1\n    ],\n    'thistle': [\n        216,\n        191,\n        216,\n        1\n    ],\n    'tomato': [\n        255,\n        99,\n        71,\n        1\n    ],\n    'turquoise': [\n        64,\n        224,\n        208,\n        1\n    ],\n    'violet': [\n        238,\n        130,\n        238,\n        1\n    ],\n    'wheat': [\n        245,\n        222,\n        179,\n        1\n    ],\n    'white': [\n        255,\n        255,\n        255,\n        1\n    ],\n    'whitesmoke': [\n        245,\n        245,\n        245,\n        1\n    ],\n    'yellow': [\n        255,\n        255,\n        0,\n        1\n    ],\n    'yellowgreen': [\n        154,\n        205,\n        50,\n        1\n    ]\n};\nfunction clamp_css_byte(i) {\n    i = Math.round(i);\n    return i < 0 ? 0 : i > 255 ? 255 : i;\n}\nfunction clamp_css_float(f) {\n    return f < 0 ? 0 : f > 1 ? 1 : f;\n}\nfunction parse_css_int(str) {\n    if (str[str.length - 1] === '%') {\n        return clamp_css_byte(parseFloat(str) / 100 * 255);\n    }\n    return clamp_css_byte(parseInt(str));\n}\nfunction parse_css_float(str) {\n    if (str[str.length - 1] === '%') {\n        return clamp_css_float(parseFloat(str) / 100);\n    }\n    return clamp_css_float(parseFloat(str));\n}\nfunction css_hue_to_rgb(m1, m2, h) {\n    if (h < 0) {\n        h += 1;\n    } else if (h > 1) {\n        h -= 1;\n    }\n    if (h * 6 < 1) {\n        return m1 + (m2 - m1) * h * 6;\n    }\n    if (h * 2 < 1) {\n        return m2;\n    }\n    if (h * 3 < 2) {\n        return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n    }\n    return m1;\n}\nfunction parseCSSColor(css_str) {\n    var str = css_str.replace(/ /g, '').toLowerCase();\n    if (str in kCSSColorTable) {\n        return kCSSColorTable[str].slice();\n    }\n    if (str[0] === '#') {\n        if (str.length === 4) {\n            var iv = parseInt(str.substr(1), 16);\n            if (!(iv >= 0 && iv <= 4095)) {\n                return null;\n            }\n            return [\n                (iv & 3840) >> 4 | (iv & 3840) >> 8,\n                iv & 240 | (iv & 240) >> 4,\n                iv & 15 | (iv & 15) << 4,\n                1\n            ];\n        } else if (str.length === 7) {\n            var iv = parseInt(str.substr(1), 16);\n            if (!(iv >= 0 && iv <= 16777215)) {\n                return null;\n            }\n            return [\n                (iv & 16711680) >> 16,\n                (iv & 65280) >> 8,\n                iv & 255,\n                1\n            ];\n        }\n        return null;\n    }\n    var op = str.indexOf('('), ep = str.indexOf(')');\n    if (op !== -1 && ep + 1 === str.length) {\n        var fname = str.substr(0, op);\n        var params = str.substr(op + 1, ep - (op + 1)).split(',');\n        var alpha = 1;\n        switch (fname) {\n        case 'rgba':\n            if (params.length !== 4) {\n                return null;\n            }\n            alpha = parse_css_float(params.pop());\n        case 'rgb':\n            if (params.length !== 3) {\n                return null;\n            }\n            return [\n                parse_css_int(params[0]),\n                parse_css_int(params[1]),\n                parse_css_int(params[2]),\n                alpha\n            ];\n        case 'hsla':\n            if (params.length !== 4) {\n                return null;\n            }\n            alpha = parse_css_float(params.pop());\n        case 'hsl':\n            if (params.length !== 3) {\n                return null;\n            }\n            var h = (parseFloat(params[0]) % 360 + 360) % 360 / 360;\n            var s = parse_css_float(params[1]);\n            var l = parse_css_float(params[2]);\n            var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n            var m1 = l * 2 - m2;\n            return [\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h + 1 / 3) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h - 1 / 3) * 255),\n                alpha\n            ];\n        default:\n            return null;\n        }\n    }\n    return null;\n}\ntry {\n    exports.parseCSSColor = parseCSSColor;\n} catch (e) {\n}\n});\nvar csscolorparser_1 = csscolorparser.parseCSSColor;\n\nvar Color = function Color(r, g, b, a) {\n    if (a === void 0)\n        a = 1;\n    this.r = r;\n    this.g = g;\n    this.b = b;\n    this.a = a;\n};\nColor.parse = function parse(input) {\n    if (!input) {\n        return undefined;\n    }\n    if (input instanceof Color) {\n        return input;\n    }\n    if (typeof input !== 'string') {\n        return undefined;\n    }\n    var rgba = csscolorparser_1(input);\n    if (!rgba) {\n        return undefined;\n    }\n    return new Color(rgba[0] / 255 * rgba[3], rgba[1] / 255 * rgba[3], rgba[2] / 255 * rgba[3], rgba[3]);\n};\nColor.prototype.toString = function toString() {\n    var ref = this.toArray();\n    var r = ref[0];\n    var g = ref[1];\n    var b = ref[2];\n    var a = ref[3];\n    return 'rgba(' + Math.round(r) + ',' + Math.round(g) + ',' + Math.round(b) + ',' + a + ')';\n};\nColor.prototype.toArray = function toArray() {\n    var ref = this;\n    var r = ref.r;\n    var g = ref.g;\n    var b = ref.b;\n    var a = ref.a;\n    return a === 0 ? [\n        0,\n        0,\n        0,\n        0\n    ] : [\n        r * 255 / a,\n        g * 255 / a,\n        b * 255 / a,\n        a\n    ];\n};\nColor.black = new Color(0, 0, 0, 1);\nColor.white = new Color(1, 1, 1, 1);\nColor.transparent = new Color(0, 0, 0, 0);\nColor.red = new Color(1, 0, 0, 1);\n\nvar Collator = function Collator(caseSensitive, diacriticSensitive, locale) {\n    if (caseSensitive) {\n        this.sensitivity = diacriticSensitive ? 'variant' : 'case';\n    } else {\n        this.sensitivity = diacriticSensitive ? 'accent' : 'base';\n    }\n    this.locale = locale;\n    this.collator = new Intl.Collator(this.locale ? this.locale : [], {\n        sensitivity: this.sensitivity,\n        usage: 'search'\n    });\n};\nCollator.prototype.compare = function compare(lhs, rhs) {\n    return this.collator.compare(lhs, rhs);\n};\nCollator.prototype.resolvedLocale = function resolvedLocale() {\n    return new Intl.Collator(this.locale ? this.locale : []).resolvedOptions().locale;\n};\n\nvar FormattedSection = function FormattedSection(text, image, scale, fontStack, textColor) {\n    this.text = text;\n    this.image = image;\n    this.scale = scale;\n    this.fontStack = fontStack;\n    this.textColor = textColor;\n};\nvar Formatted = function Formatted(sections) {\n    this.sections = sections;\n};\nFormatted.fromString = function fromString(unformatted) {\n    return new Formatted([new FormattedSection(unformatted, null, null, null, null)]);\n};\nFormatted.prototype.isEmpty = function isEmpty() {\n    if (this.sections.length === 0) {\n        return true;\n    }\n    return !this.sections.some(function (section) {\n        return section.text.length !== 0 || section.image && section.image.name.length !== 0;\n    });\n};\nFormatted.factory = function factory(text) {\n    if (text instanceof Formatted) {\n        return text;\n    } else {\n        return Formatted.fromString(text);\n    }\n};\nFormatted.prototype.toString = function toString() {\n    if (this.sections.length === 0) {\n        return '';\n    }\n    return this.sections.map(function (section) {\n        return section.text;\n    }).join('');\n};\nFormatted.prototype.serialize = function serialize() {\n    var serialized = ['format'];\n    for (var i = 0, list = this.sections; i < list.length; i += 1) {\n        var section = list[i];\n        if (section.image) {\n            serialized.push([\n                'image',\n                section.image.name\n            ]);\n            continue;\n        }\n        serialized.push(section.text);\n        var options = {};\n        if (section.fontStack) {\n            options['text-font'] = [\n                'literal',\n                section.fontStack.split(',')\n            ];\n        }\n        if (section.scale) {\n            options['font-scale'] = section.scale;\n        }\n        if (section.textColor) {\n            options['text-color'] = ['rgba'].concat(section.textColor.toArray());\n        }\n        serialized.push(options);\n    }\n    return serialized;\n};\n\nvar ResolvedImage = function ResolvedImage(options) {\n    this.name = options.name;\n    this.available = options.available;\n};\nResolvedImage.prototype.toString = function toString() {\n    return this.name;\n};\nResolvedImage.fromString = function fromString(name) {\n    if (!name) {\n        return null;\n    }\n    return new ResolvedImage({\n        name: name,\n        available: false\n    });\n};\nResolvedImage.prototype.serialize = function serialize() {\n    return [\n        'image',\n        this.name\n    ];\n};\n\nfunction validateRGBA(r, g, b, a) {\n    if (!(typeof r === 'number' && r >= 0 && r <= 255 && typeof g === 'number' && g >= 0 && g <= 255 && typeof b === 'number' && b >= 0 && b <= 255)) {\n        var value = typeof a === 'number' ? [\n            r,\n            g,\n            b,\n            a\n        ] : [\n            r,\n            g,\n            b\n        ];\n        return 'Invalid rgba value [' + value.join(', ') + ']: \\'r\\', \\'g\\', and \\'b\\' must be between 0 and 255.';\n    }\n    if (!(typeof a === 'undefined' || typeof a === 'number' && a >= 0 && a <= 1)) {\n        return 'Invalid rgba value [' + [\n            r,\n            g,\n            b,\n            a\n        ].join(', ') + ']: \\'a\\' must be between 0 and 1.';\n    }\n    return null;\n}\nfunction isValue(mixed) {\n    if (mixed === null) {\n        return true;\n    } else if (typeof mixed === 'string') {\n        return true;\n    } else if (typeof mixed === 'boolean') {\n        return true;\n    } else if (typeof mixed === 'number') {\n        return true;\n    } else if (mixed instanceof Color) {\n        return true;\n    } else if (mixed instanceof Collator) {\n        return true;\n    } else if (mixed instanceof Formatted) {\n        return true;\n    } else if (mixed instanceof ResolvedImage) {\n        return true;\n    } else if (Array.isArray(mixed)) {\n        for (var i = 0, list = mixed; i < list.length; i += 1) {\n            var item = list[i];\n            if (!isValue(item)) {\n                return false;\n            }\n        }\n        return true;\n    } else if (typeof mixed === 'object') {\n        for (var key in mixed) {\n            if (!isValue(mixed[key])) {\n                return false;\n            }\n        }\n        return true;\n    } else {\n        return false;\n    }\n}\nfunction typeOf(value) {\n    if (value === null) {\n        return NullType;\n    } else if (typeof value === 'string') {\n        return StringType;\n    } else if (typeof value === 'boolean') {\n        return BooleanType;\n    } else if (typeof value === 'number') {\n        return NumberType;\n    } else if (value instanceof Color) {\n        return ColorType;\n    } else if (value instanceof Collator) {\n        return CollatorType;\n    } else if (value instanceof Formatted) {\n        return FormattedType;\n    } else if (value instanceof ResolvedImage) {\n        return ResolvedImageType;\n    } else if (Array.isArray(value)) {\n        var length = value.length;\n        var itemType;\n        for (var i = 0, list = value; i < list.length; i += 1) {\n            var item = list[i];\n            var t = typeOf(item);\n            if (!itemType) {\n                itemType = t;\n            } else if (itemType === t) {\n                continue;\n            } else {\n                itemType = ValueType;\n                break;\n            }\n        }\n        return array(itemType || ValueType, length);\n    } else {\n        return ObjectType;\n    }\n}\nfunction toString$1(value) {\n    var type = typeof value;\n    if (value === null) {\n        return '';\n    } else if (type === 'string' || type === 'number' || type === 'boolean') {\n        return String(value);\n    } else if (value instanceof Color || value instanceof Formatted || value instanceof ResolvedImage) {\n        return value.toString();\n    } else {\n        return JSON.stringify(value);\n    }\n}\n\nvar Literal = function Literal(type, value) {\n    this.type = type;\n    this.value = value;\n};\nLiteral.parse = function parse(args, context) {\n    if (args.length !== 2) {\n        return context.error('\\'literal\\' expression requires exactly one argument, but found ' + (args.length - 1) + ' instead.');\n    }\n    if (!isValue(args[1])) {\n        return context.error('invalid value');\n    }\n    var value = args[1];\n    var type = typeOf(value);\n    var expected = context.expectedType;\n    if (type.kind === 'array' && type.N === 0 && expected && expected.kind === 'array' && (typeof expected.N !== 'number' || expected.N === 0)) {\n        type = expected;\n    }\n    return new Literal(type, value);\n};\nLiteral.prototype.evaluate = function evaluate() {\n    return this.value;\n};\nLiteral.prototype.eachChild = function eachChild() {\n};\nLiteral.prototype.outputDefined = function outputDefined() {\n    return true;\n};\nLiteral.prototype.serialize = function serialize() {\n    if (this.type.kind === 'array' || this.type.kind === 'object') {\n        return [\n            'literal',\n            this.value\n        ];\n    } else if (this.value instanceof Color) {\n        return ['rgba'].concat(this.value.toArray());\n    } else if (this.value instanceof Formatted) {\n        return this.value.serialize();\n    } else {\n        return this.value;\n    }\n};\n\nvar RuntimeError = function RuntimeError(message) {\n    this.name = 'ExpressionEvaluationError';\n    this.message = message;\n};\nRuntimeError.prototype.toJSON = function toJSON() {\n    return this.message;\n};\n\nvar types = {\n    string: StringType,\n    number: NumberType,\n    boolean: BooleanType,\n    object: ObjectType\n};\nvar Assertion = function Assertion(type, args) {\n    this.type = type;\n    this.args = args;\n};\nAssertion.parse = function parse(args, context) {\n    if (args.length < 2) {\n        return context.error('Expected at least one argument.');\n    }\n    var i = 1;\n    var type;\n    var name = args[0];\n    if (name === 'array') {\n        var itemType;\n        if (args.length > 2) {\n            var type$1 = args[1];\n            if (typeof type$1 !== 'string' || !(type$1 in types) || type$1 === 'object') {\n                return context.error('The item type argument of \"array\" must be one of string, number, boolean', 1);\n            }\n            itemType = types[type$1];\n            i++;\n        } else {\n            itemType = ValueType;\n        }\n        var N;\n        if (args.length > 3) {\n            if (args[2] !== null && (typeof args[2] !== 'number' || args[2] < 0 || args[2] !== Math.floor(args[2]))) {\n                return context.error('The length argument to \"array\" must be a positive integer literal', 2);\n            }\n            N = args[2];\n            i++;\n        }\n        type = array(itemType, N);\n    } else {\n        type = types[name];\n    }\n    var parsed = [];\n    for (; i < args.length; i++) {\n        var input = context.parse(args[i], i, ValueType);\n        if (!input) {\n            return null;\n        }\n        parsed.push(input);\n    }\n    return new Assertion(type, parsed);\n};\nAssertion.prototype.evaluate = function evaluate(ctx) {\n    for (var i = 0; i < this.args.length; i++) {\n        var value = this.args[i].evaluate(ctx);\n        var error = checkSubtype(this.type, typeOf(value));\n        if (!error) {\n            return value;\n        } else if (i === this.args.length - 1) {\n            throw new RuntimeError('Expected value to be of type ' + toString(this.type) + ', but found ' + toString(typeOf(value)) + ' instead.');\n        }\n    }\n    return null;\n};\nAssertion.prototype.eachChild = function eachChild(fn) {\n    this.args.forEach(fn);\n};\nAssertion.prototype.outputDefined = function outputDefined() {\n    return this.args.every(function (arg) {\n        return arg.outputDefined();\n    });\n};\nAssertion.prototype.serialize = function serialize() {\n    var type = this.type;\n    var serialized = [type.kind];\n    if (type.kind === 'array') {\n        var itemType = type.itemType;\n        if (itemType.kind === 'string' || itemType.kind === 'number' || itemType.kind === 'boolean') {\n            serialized.push(itemType.kind);\n            var N = type.N;\n            if (typeof N === 'number' || this.args.length > 1) {\n                serialized.push(N);\n            }\n        }\n    }\n    return serialized.concat(this.args.map(function (arg) {\n        return arg.serialize();\n    }));\n};\n\nvar FormatExpression = function FormatExpression(sections) {\n    this.type = FormattedType;\n    this.sections = sections;\n};\nFormatExpression.parse = function parse(args, context) {\n    if (args.length < 2) {\n        return context.error('Expected at least one argument.');\n    }\n    var firstArg = args[1];\n    if (!Array.isArray(firstArg) && typeof firstArg === 'object') {\n        return context.error('First argument must be an image or text section.');\n    }\n    var sections = [];\n    var nextTokenMayBeObject = false;\n    for (var i = 1; i <= args.length - 1; ++i) {\n        var arg = args[i];\n        if (nextTokenMayBeObject && typeof arg === 'object' && !Array.isArray(arg)) {\n            nextTokenMayBeObject = false;\n            var scale = null;\n            if (arg['font-scale']) {\n                scale = context.parse(arg['font-scale'], 1, NumberType);\n                if (!scale) {\n                    return null;\n                }\n            }\n            var font = null;\n            if (arg['text-font']) {\n                font = context.parse(arg['text-font'], 1, array(StringType));\n                if (!font) {\n                    return null;\n                }\n            }\n            var textColor = null;\n            if (arg['text-color']) {\n                textColor = context.parse(arg['text-color'], 1, ColorType);\n                if (!textColor) {\n                    return null;\n                }\n            }\n            var lastExpression = sections[sections.length - 1];\n            lastExpression.scale = scale;\n            lastExpression.font = font;\n            lastExpression.textColor = textColor;\n        } else {\n            var content = context.parse(args[i], 1, ValueType);\n            if (!content) {\n                return null;\n            }\n            var kind = content.type.kind;\n            if (kind !== 'string' && kind !== 'value' && kind !== 'null' && kind !== 'resolvedImage') {\n                return context.error('Formatted text type must be \\'string\\', \\'value\\', \\'image\\' or \\'null\\'.');\n            }\n            nextTokenMayBeObject = true;\n            sections.push({\n                content: content,\n                scale: null,\n                font: null,\n                textColor: null\n            });\n        }\n    }\n    return new FormatExpression(sections);\n};\nFormatExpression.prototype.evaluate = function evaluate(ctx) {\n    var evaluateSection = function (section) {\n        var evaluatedContent = section.content.evaluate(ctx);\n        if (typeOf(evaluatedContent) === ResolvedImageType) {\n            return new FormattedSection('', evaluatedContent, null, null, null);\n        }\n        return new FormattedSection(toString$1(evaluatedContent), null, section.scale ? section.scale.evaluate(ctx) : null, section.font ? section.font.evaluate(ctx).join(',') : null, section.textColor ? section.textColor.evaluate(ctx) : null);\n    };\n    return new Formatted(this.sections.map(evaluateSection));\n};\nFormatExpression.prototype.eachChild = function eachChild(fn) {\n    for (var i = 0, list = this.sections; i < list.length; i += 1) {\n        var section = list[i];\n        fn(section.content);\n        if (section.scale) {\n            fn(section.scale);\n        }\n        if (section.font) {\n            fn(section.font);\n        }\n        if (section.textColor) {\n            fn(section.textColor);\n        }\n    }\n};\nFormatExpression.prototype.outputDefined = function outputDefined() {\n    return false;\n};\nFormatExpression.prototype.serialize = function serialize() {\n    var serialized = ['format'];\n    for (var i = 0, list = this.sections; i < list.length; i += 1) {\n        var section = list[i];\n        serialized.push(section.content.serialize());\n        var options = {};\n        if (section.scale) {\n            options['font-scale'] = section.scale.serialize();\n        }\n        if (section.font) {\n            options['text-font'] = section.font.serialize();\n        }\n        if (section.textColor) {\n            options['text-color'] = section.textColor.serialize();\n        }\n        serialized.push(options);\n    }\n    return serialized;\n};\n\nvar ImageExpression = function ImageExpression(input) {\n    this.type = ResolvedImageType;\n    this.input = input;\n};\nImageExpression.parse = function parse(args, context) {\n    if (args.length !== 2) {\n        return context.error('Expected two arguments.');\n    }\n    var name = context.parse(args[1], 1, StringType);\n    if (!name) {\n        return context.error('No image name provided.');\n    }\n    return new ImageExpression(name);\n};\nImageExpression.prototype.evaluate = function evaluate(ctx) {\n    var evaluatedImageName = this.input.evaluate(ctx);\n    var value = ResolvedImage.fromString(evaluatedImageName);\n    if (value && ctx.availableImages) {\n        value.available = ctx.availableImages.indexOf(evaluatedImageName) > -1;\n    }\n    return value;\n};\nImageExpression.prototype.eachChild = function eachChild(fn) {\n    fn(this.input);\n};\nImageExpression.prototype.outputDefined = function outputDefined() {\n    return false;\n};\nImageExpression.prototype.serialize = function serialize() {\n    return [\n        'image',\n        this.input.serialize()\n    ];\n};\n\nvar types$1 = {\n    'to-boolean': BooleanType,\n    'to-color': ColorType,\n    'to-number': NumberType,\n    'to-string': StringType\n};\nvar Coercion = function Coercion(type, args) {\n    this.type = type;\n    this.args = args;\n};\nCoercion.parse = function parse(args, context) {\n    if (args.length < 2) {\n        return context.error('Expected at least one argument.');\n    }\n    var name = args[0];\n    if ((name === 'to-boolean' || name === 'to-string') && args.length !== 2) {\n        return context.error('Expected one argument.');\n    }\n    var type = types$1[name];\n    var parsed = [];\n    for (var i = 1; i < args.length; i++) {\n        var input = context.parse(args[i], i, ValueType);\n        if (!input) {\n            return null;\n        }\n        parsed.push(input);\n    }\n    return new Coercion(type, parsed);\n};\nCoercion.prototype.evaluate = function evaluate(ctx) {\n    if (this.type.kind === 'boolean') {\n        return Boolean(this.args[0].evaluate(ctx));\n    } else if (this.type.kind === 'color') {\n        var input;\n        var error;\n        for (var i = 0, list = this.args; i < list.length; i += 1) {\n            var arg = list[i];\n            input = arg.evaluate(ctx);\n            error = null;\n            if (input instanceof Color) {\n                return input;\n            } else if (typeof input === 'string') {\n                var c = ctx.parseColor(input);\n                if (c) {\n                    return c;\n                }\n            } else if (Array.isArray(input)) {\n                if (input.length < 3 || input.length > 4) {\n                    error = 'Invalid rbga value ' + JSON.stringify(input) + ': expected an array containing either three or four numeric values.';\n                } else {\n                    error = validateRGBA(input[0], input[1], input[2], input[3]);\n                }\n                if (!error) {\n                    return new Color(input[0] / 255, input[1] / 255, input[2] / 255, input[3]);\n                }\n            }\n        }\n        throw new RuntimeError(error || 'Could not parse color from value \\'' + (typeof input === 'string' ? input : String(JSON.stringify(input))) + '\\'');\n    } else if (this.type.kind === 'number') {\n        var value = null;\n        for (var i$1 = 0, list$1 = this.args; i$1 < list$1.length; i$1 += 1) {\n            var arg$1 = list$1[i$1];\n            value = arg$1.evaluate(ctx);\n            if (value === null) {\n                return 0;\n            }\n            var num = Number(value);\n            if (isNaN(num)) {\n                continue;\n            }\n            return num;\n        }\n        throw new RuntimeError('Could not convert ' + JSON.stringify(value) + ' to number.');\n    } else if (this.type.kind === 'formatted') {\n        return Formatted.fromString(toString$1(this.args[0].evaluate(ctx)));\n    } else if (this.type.kind === 'resolvedImage') {\n        return ResolvedImage.fromString(toString$1(this.args[0].evaluate(ctx)));\n    } else {\n        return toString$1(this.args[0].evaluate(ctx));\n    }\n};\nCoercion.prototype.eachChild = function eachChild(fn) {\n    this.args.forEach(fn);\n};\nCoercion.prototype.outputDefined = function outputDefined() {\n    return this.args.every(function (arg) {\n        return arg.outputDefined();\n    });\n};\nCoercion.prototype.serialize = function serialize() {\n    if (this.type.kind === 'formatted') {\n        return new FormatExpression([{\n                content: this.args[0],\n                scale: null,\n                font: null,\n                textColor: null\n            }]).serialize();\n    }\n    if (this.type.kind === 'resolvedImage') {\n        return new ImageExpression(this.args[0]).serialize();\n    }\n    var serialized = ['to-' + this.type.kind];\n    this.eachChild(function (child) {\n        serialized.push(child.serialize());\n    });\n    return serialized;\n};\n\nvar geometryTypes = [\n    'Unknown',\n    'Point',\n    'LineString',\n    'Polygon'\n];\nvar EvaluationContext = function EvaluationContext() {\n    this.globals = null;\n    this.feature = null;\n    this.featureState = null;\n    this.formattedSection = null;\n    this._parseColorCache = {};\n    this.availableImages = null;\n    this.canonical = null;\n};\nEvaluationContext.prototype.id = function id() {\n    return this.feature && 'id' in this.feature ? this.feature.id : null;\n};\nEvaluationContext.prototype.geometryType = function geometryType() {\n    return this.feature ? typeof this.feature.type === 'number' ? geometryTypes[this.feature.type] : this.feature.type : null;\n};\nEvaluationContext.prototype.geometry = function geometry() {\n    return this.feature && 'geometry' in this.feature ? this.feature.geometry : null;\n};\nEvaluationContext.prototype.canonicalID = function canonicalID() {\n    return this.canonical;\n};\nEvaluationContext.prototype.properties = function properties() {\n    return this.feature && this.feature.properties || {};\n};\nEvaluationContext.prototype.parseColor = function parseColor(input) {\n    var cached = this._parseColorCache[input];\n    if (!cached) {\n        cached = this._parseColorCache[input] = Color.parse(input);\n    }\n    return cached;\n};\n\nvar CompoundExpression = function CompoundExpression(name, type, evaluate, args) {\n    this.name = name;\n    this.type = type;\n    this._evaluate = evaluate;\n    this.args = args;\n};\nCompoundExpression.prototype.evaluate = function evaluate(ctx) {\n    return this._evaluate(ctx, this.args);\n};\nCompoundExpression.prototype.eachChild = function eachChild(fn) {\n    this.args.forEach(fn);\n};\nCompoundExpression.prototype.outputDefined = function outputDefined() {\n    return false;\n};\nCompoundExpression.prototype.serialize = function serialize() {\n    return [this.name].concat(this.args.map(function (arg) {\n        return arg.serialize();\n    }));\n};\nCompoundExpression.parse = function parse(args, context) {\n    var ref$1;\n    var op = args[0];\n    var definition = CompoundExpression.definitions[op];\n    if (!definition) {\n        return context.error('Unknown expression \"' + op + '\". If you wanted a literal array, use [\"literal\", [...]].', 0);\n    }\n    var type = Array.isArray(definition) ? definition[0] : definition.type;\n    var availableOverloads = Array.isArray(definition) ? [[\n            definition[1],\n            definition[2]\n        ]] : definition.overloads;\n    var overloads = availableOverloads.filter(function (ref) {\n        var signature = ref[0];\n        return !Array.isArray(signature) || signature.length === args.length - 1;\n    });\n    var signatureContext = null;\n    for (var i$3 = 0, list = overloads; i$3 < list.length; i$3 += 1) {\n        var ref = list[i$3];\n        var params = ref[0];\n        var evaluate = ref[1];\n        signatureContext = new ParsingContext(context.registry, context.path, null, context.scope);\n        var parsedArgs = [];\n        var argParseFailed = false;\n        for (var i = 1; i < args.length; i++) {\n            var arg = args[i];\n            var expectedType = Array.isArray(params) ? params[i - 1] : params.type;\n            var parsed = signatureContext.parse(arg, 1 + parsedArgs.length, expectedType);\n            if (!parsed) {\n                argParseFailed = true;\n                break;\n            }\n            parsedArgs.push(parsed);\n        }\n        if (argParseFailed) {\n            continue;\n        }\n        if (Array.isArray(params)) {\n            if (params.length !== parsedArgs.length) {\n                signatureContext.error('Expected ' + params.length + ' arguments, but found ' + parsedArgs.length + ' instead.');\n                continue;\n            }\n        }\n        for (var i$1 = 0; i$1 < parsedArgs.length; i$1++) {\n            var expected = Array.isArray(params) ? params[i$1] : params.type;\n            var arg$1 = parsedArgs[i$1];\n            signatureContext.concat(i$1 + 1).checkSubtype(expected, arg$1.type);\n        }\n        if (signatureContext.errors.length === 0) {\n            return new CompoundExpression(op, type, evaluate, parsedArgs);\n        }\n    }\n    if (overloads.length === 1) {\n        (ref$1 = context.errors).push.apply(ref$1, signatureContext.errors);\n    } else {\n        var expected$1 = overloads.length ? overloads : availableOverloads;\n        var signatures = expected$1.map(function (ref) {\n            var params = ref[0];\n            return stringifySignature(params);\n        }).join(' | ');\n        var actualTypes = [];\n        for (var i$2 = 1; i$2 < args.length; i$2++) {\n            var parsed$1 = context.parse(args[i$2], 1 + actualTypes.length);\n            if (!parsed$1) {\n                return null;\n            }\n            actualTypes.push(toString(parsed$1.type));\n        }\n        context.error('Expected arguments of type ' + signatures + ', but found (' + actualTypes.join(', ') + ') instead.');\n    }\n    return null;\n};\nCompoundExpression.register = function register(registry, definitions) {\n    CompoundExpression.definitions = definitions;\n    for (var name in definitions) {\n        registry[name] = CompoundExpression;\n    }\n};\nfunction stringifySignature(signature) {\n    if (Array.isArray(signature)) {\n        return '(' + signature.map(toString).join(', ') + ')';\n    } else {\n        return '(' + toString(signature.type) + '...)';\n    }\n}\n\nvar CollatorExpression = function CollatorExpression(caseSensitive, diacriticSensitive, locale) {\n    this.type = CollatorType;\n    this.locale = locale;\n    this.caseSensitive = caseSensitive;\n    this.diacriticSensitive = diacriticSensitive;\n};\nCollatorExpression.parse = function parse(args, context) {\n    if (args.length !== 2) {\n        return context.error('Expected one argument.');\n    }\n    var options = args[1];\n    if (typeof options !== 'object' || Array.isArray(options)) {\n        return context.error('Collator options argument must be an object.');\n    }\n    var caseSensitive = context.parse(options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType);\n    if (!caseSensitive) {\n        return null;\n    }\n    var diacriticSensitive = context.parse(options['diacritic-sensitive'] === undefined ? false : options['diacritic-sensitive'], 1, BooleanType);\n    if (!diacriticSensitive) {\n        return null;\n    }\n    var locale = null;\n    if (options['locale']) {\n        locale = context.parse(options['locale'], 1, StringType);\n        if (!locale) {\n            return null;\n        }\n    }\n    return new CollatorExpression(caseSensitive, diacriticSensitive, locale);\n};\nCollatorExpression.prototype.evaluate = function evaluate(ctx) {\n    return new Collator(this.caseSensitive.evaluate(ctx), this.diacriticSensitive.evaluate(ctx), this.locale ? this.locale.evaluate(ctx) : null);\n};\nCollatorExpression.prototype.eachChild = function eachChild(fn) {\n    fn(this.caseSensitive);\n    fn(this.diacriticSensitive);\n    if (this.locale) {\n        fn(this.locale);\n    }\n};\nCollatorExpression.prototype.outputDefined = function outputDefined() {\n    return false;\n};\nCollatorExpression.prototype.serialize = function serialize() {\n    var options = {};\n    options['case-sensitive'] = this.caseSensitive.serialize();\n    options['diacritic-sensitive'] = this.diacriticSensitive.serialize();\n    if (this.locale) {\n        options['locale'] = this.locale.serialize();\n    }\n    return [\n        'collator',\n        options\n    ];\n};\n\nvar EXTENT = 8192;\nfunction updateBBox(bbox, coord) {\n    bbox[0] = Math.min(bbox[0], coord[0]);\n    bbox[1] = Math.min(bbox[1], coord[1]);\n    bbox[2] = Math.max(bbox[2], coord[0]);\n    bbox[3] = Math.max(bbox[3], coord[1]);\n}\nfunction mercatorXfromLng(lng) {\n    return (180 + lng) / 360;\n}\nfunction mercatorYfromLat(lat) {\n    return (180 - 180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360))) / 360;\n}\nfunction boxWithinBox(bbox1, bbox2) {\n    if (bbox1[0] <= bbox2[0]) {\n        return false;\n    }\n    if (bbox1[2] >= bbox2[2]) {\n        return false;\n    }\n    if (bbox1[1] <= bbox2[1]) {\n        return false;\n    }\n    if (bbox1[3] >= bbox2[3]) {\n        return false;\n    }\n    return true;\n}\nfunction getTileCoordinates(p, canonical) {\n    var x = mercatorXfromLng(p[0]);\n    var y = mercatorYfromLat(p[1]);\n    var tilesAtZoom = Math.pow(2, canonical.z);\n    return [\n        Math.round(x * tilesAtZoom * EXTENT),\n        Math.round(y * tilesAtZoom * EXTENT)\n    ];\n}\nfunction onBoundary(p, p1, p2) {\n    var x1 = p[0] - p1[0];\n    var y1 = p[1] - p1[1];\n    var x2 = p[0] - p2[0];\n    var y2 = p[1] - p2[1];\n    return x1 * y2 - x2 * y1 === 0 && x1 * x2 <= 0 && y1 * y2 <= 0;\n}\nfunction rayIntersect(p, p1, p2) {\n    return p1[1] > p[1] !== p2[1] > p[1] && p[0] < (p2[0] - p1[0]) * (p[1] - p1[1]) / (p2[1] - p1[1]) + p1[0];\n}\nfunction pointWithinPolygon(point, rings) {\n    var inside = false;\n    for (var i = 0, len = rings.length; i < len; i++) {\n        var ring = rings[i];\n        for (var j = 0, len2 = ring.length; j < len2 - 1; j++) {\n            if (onBoundary(point, ring[j], ring[j + 1])) {\n                return false;\n            }\n            if (rayIntersect(point, ring[j], ring[j + 1])) {\n                inside = !inside;\n            }\n        }\n    }\n    return inside;\n}\nfunction pointWithinPolygons(point, polygons) {\n    for (var i = 0; i < polygons.length; i++) {\n        if (pointWithinPolygon(point, polygons[i])) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction perp(v1, v2) {\n    return v1[0] * v2[1] - v1[1] * v2[0];\n}\nfunction twoSided(p1, p2, q1, q2) {\n    var x1 = p1[0] - q1[0];\n    var y1 = p1[1] - q1[1];\n    var x2 = p2[0] - q1[0];\n    var y2 = p2[1] - q1[1];\n    var x3 = q2[0] - q1[0];\n    var y3 = q2[1] - q1[1];\n    var det1 = x1 * y3 - x3 * y1;\n    var det2 = x2 * y3 - x3 * y2;\n    if (det1 > 0 && det2 < 0 || det1 < 0 && det2 > 0) {\n        return true;\n    }\n    return false;\n}\nfunction lineIntersectLine(a, b, c, d) {\n    var vectorP = [\n        b[0] - a[0],\n        b[1] - a[1]\n    ];\n    var vectorQ = [\n        d[0] - c[0],\n        d[1] - c[1]\n    ];\n    if (perp(vectorQ, vectorP) === 0) {\n        return false;\n    }\n    if (twoSided(a, b, c, d) && twoSided(c, d, a, b)) {\n        return true;\n    }\n    return false;\n}\nfunction lineIntersectPolygon(p1, p2, polygon) {\n    for (var i = 0, list = polygon; i < list.length; i += 1) {\n        var ring = list[i];\n        for (var j = 0; j < ring.length - 1; ++j) {\n            if (lineIntersectLine(p1, p2, ring[j], ring[j + 1])) {\n                return true;\n            }\n        }\n    }\n    return false;\n}\nfunction lineStringWithinPolygon(line, polygon) {\n    for (var i = 0; i < line.length; ++i) {\n        if (!pointWithinPolygon(line[i], polygon)) {\n            return false;\n        }\n    }\n    for (var i$1 = 0; i$1 < line.length - 1; ++i$1) {\n        if (lineIntersectPolygon(line[i$1], line[i$1 + 1], polygon)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction lineStringWithinPolygons(line, polygons) {\n    for (var i = 0; i < polygons.length; i++) {\n        if (lineStringWithinPolygon(line, polygons[i])) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction getTilePolygon(coordinates, bbox, canonical) {\n    var polygon = [];\n    for (var i = 0; i < coordinates.length; i++) {\n        var ring = [];\n        for (var j = 0; j < coordinates[i].length; j++) {\n            var coord = getTileCoordinates(coordinates[i][j], canonical);\n            updateBBox(bbox, coord);\n            ring.push(coord);\n        }\n        polygon.push(ring);\n    }\n    return polygon;\n}\nfunction getTilePolygons(coordinates, bbox, canonical) {\n    var polygons = [];\n    for (var i = 0; i < coordinates.length; i++) {\n        var polygon = getTilePolygon(coordinates[i], bbox, canonical);\n        polygons.push(polygon);\n    }\n    return polygons;\n}\nfunction updatePoint(p, bbox, polyBBox, worldSize) {\n    if (p[0] < polyBBox[0] || p[0] > polyBBox[2]) {\n        var halfWorldSize = worldSize * 0.5;\n        var shift = p[0] - polyBBox[0] > halfWorldSize ? -worldSize : polyBBox[0] - p[0] > halfWorldSize ? worldSize : 0;\n        if (shift === 0) {\n            shift = p[0] - polyBBox[2] > halfWorldSize ? -worldSize : polyBBox[2] - p[0] > halfWorldSize ? worldSize : 0;\n        }\n        p[0] += shift;\n    }\n    updateBBox(bbox, p);\n}\nfunction resetBBox(bbox) {\n    bbox[0] = bbox[1] = Infinity;\n    bbox[2] = bbox[3] = -Infinity;\n}\nfunction getTilePoints(geometry, pointBBox, polyBBox, canonical) {\n    var worldSize = Math.pow(2, canonical.z) * EXTENT;\n    var shifts = [\n        canonical.x * EXTENT,\n        canonical.y * EXTENT\n    ];\n    var tilePoints = [];\n    for (var i$1 = 0, list$1 = geometry; i$1 < list$1.length; i$1 += 1) {\n        var points = list$1[i$1];\n        for (var i = 0, list = points; i < list.length; i += 1) {\n            var point = list[i];\n            var p = [\n                point.x + shifts[0],\n                point.y + shifts[1]\n            ];\n            updatePoint(p, pointBBox, polyBBox, worldSize);\n            tilePoints.push(p);\n        }\n    }\n    return tilePoints;\n}\nfunction getTileLines(geometry, lineBBox, polyBBox, canonical) {\n    var worldSize = Math.pow(2, canonical.z) * EXTENT;\n    var shifts = [\n        canonical.x * EXTENT,\n        canonical.y * EXTENT\n    ];\n    var tileLines = [];\n    for (var i$1 = 0, list$1 = geometry; i$1 < list$1.length; i$1 += 1) {\n        var line = list$1[i$1];\n        var tileLine = [];\n        for (var i = 0, list = line; i < list.length; i += 1) {\n            var point = list[i];\n            var p = [\n                point.x + shifts[0],\n                point.y + shifts[1]\n            ];\n            updateBBox(lineBBox, p);\n            tileLine.push(p);\n        }\n        tileLines.push(tileLine);\n    }\n    if (lineBBox[2] - lineBBox[0] <= worldSize / 2) {\n        resetBBox(lineBBox);\n        for (var i$3 = 0, list$3 = tileLines; i$3 < list$3.length; i$3 += 1) {\n            var line$1 = list$3[i$3];\n            for (var i$2 = 0, list$2 = line$1; i$2 < list$2.length; i$2 += 1) {\n                var p$1 = list$2[i$2];\n                updatePoint(p$1, lineBBox, polyBBox, worldSize);\n            }\n        }\n    }\n    return tileLines;\n}\nfunction pointsWithinPolygons(ctx, polygonGeometry) {\n    var pointBBox = [\n        Infinity,\n        Infinity,\n        -Infinity,\n        -Infinity\n    ];\n    var polyBBox = [\n        Infinity,\n        Infinity,\n        -Infinity,\n        -Infinity\n    ];\n    var canonical = ctx.canonicalID();\n    if (polygonGeometry.type === 'Polygon') {\n        var tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n        var tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n        if (!boxWithinBox(pointBBox, polyBBox)) {\n            return false;\n        }\n        for (var i = 0, list = tilePoints; i < list.length; i += 1) {\n            var point = list[i];\n            if (!pointWithinPolygon(point, tilePolygon)) {\n                return false;\n            }\n        }\n    }\n    if (polygonGeometry.type === 'MultiPolygon') {\n        var tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n        var tilePoints$1 = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n        if (!boxWithinBox(pointBBox, polyBBox)) {\n            return false;\n        }\n        for (var i$1 = 0, list$1 = tilePoints$1; i$1 < list$1.length; i$1 += 1) {\n            var point$1 = list$1[i$1];\n            if (!pointWithinPolygons(point$1, tilePolygons)) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\nfunction linesWithinPolygons(ctx, polygonGeometry) {\n    var lineBBox = [\n        Infinity,\n        Infinity,\n        -Infinity,\n        -Infinity\n    ];\n    var polyBBox = [\n        Infinity,\n        Infinity,\n        -Infinity,\n        -Infinity\n    ];\n    var canonical = ctx.canonicalID();\n    if (polygonGeometry.type === 'Polygon') {\n        var tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n        var tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n        if (!boxWithinBox(lineBBox, polyBBox)) {\n            return false;\n        }\n        for (var i = 0, list = tileLines; i < list.length; i += 1) {\n            var line = list[i];\n            if (!lineStringWithinPolygon(line, tilePolygon)) {\n                return false;\n            }\n        }\n    }\n    if (polygonGeometry.type === 'MultiPolygon') {\n        var tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n        var tileLines$1 = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n        if (!boxWithinBox(lineBBox, polyBBox)) {\n            return false;\n        }\n        for (var i$1 = 0, list$1 = tileLines$1; i$1 < list$1.length; i$1 += 1) {\n            var line$1 = list$1[i$1];\n            if (!lineStringWithinPolygons(line$1, tilePolygons)) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\nvar Within = function Within(geojson, geometries) {\n    this.type = BooleanType;\n    this.geojson = geojson;\n    this.geometries = geometries;\n};\nWithin.parse = function parse(args, context) {\n    if (args.length !== 2) {\n        return context.error('\\'within\\' expression requires exactly one argument, but found ' + (args.length - 1) + ' instead.');\n    }\n    if (isValue(args[1])) {\n        var geojson = args[1];\n        if (geojson.type === 'FeatureCollection') {\n            for (var i = 0; i < geojson.features.length; ++i) {\n                var type = geojson.features[i].geometry.type;\n                if (type === 'Polygon' || type === 'MultiPolygon') {\n                    return new Within(geojson, geojson.features[i].geometry);\n                }\n            }\n        } else if (geojson.type === 'Feature') {\n            var type$1 = geojson.geometry.type;\n            if (type$1 === 'Polygon' || type$1 === 'MultiPolygon') {\n                return new Within(geojson, geojson.geometry);\n            }\n        } else if (geojson.type === 'Polygon' || geojson.type === 'MultiPolygon') {\n            return new Within(geojson, geojson);\n        }\n    }\n    return context.error('\\'within\\' expression requires valid geojson object that contains polygon geometry type.');\n};\nWithin.prototype.evaluate = function evaluate(ctx) {\n    if (ctx.geometry() != null && ctx.canonicalID() != null) {\n        if (ctx.geometryType() === 'Point') {\n            return pointsWithinPolygons(ctx, this.geometries);\n        } else if (ctx.geometryType() === 'LineString') {\n            return linesWithinPolygons(ctx, this.geometries);\n        }\n    }\n    return false;\n};\nWithin.prototype.eachChild = function eachChild() {\n};\nWithin.prototype.outputDefined = function outputDefined() {\n    return true;\n};\nWithin.prototype.serialize = function serialize() {\n    return [\n        'within',\n        this.geojson\n    ];\n};\n\nfunction isFeatureConstant(e) {\n    if (e instanceof CompoundExpression) {\n        if (e.name === 'get' && e.args.length === 1) {\n            return false;\n        } else if (e.name === 'feature-state') {\n            return false;\n        } else if (e.name === 'has' && e.args.length === 1) {\n            return false;\n        } else if (e.name === 'properties' || e.name === 'geometry-type' || e.name === 'id') {\n            return false;\n        } else if (/^filter-/.test(e.name)) {\n            return false;\n        }\n    }\n    if (e instanceof Within) {\n        return false;\n    }\n    var result = true;\n    e.eachChild(function (arg) {\n        if (result && !isFeatureConstant(arg)) {\n            result = false;\n        }\n    });\n    return result;\n}\nfunction isStateConstant(e) {\n    if (e instanceof CompoundExpression) {\n        if (e.name === 'feature-state') {\n            return false;\n        }\n    }\n    var result = true;\n    e.eachChild(function (arg) {\n        if (result && !isStateConstant(arg)) {\n            result = false;\n        }\n    });\n    return result;\n}\nfunction isGlobalPropertyConstant(e, properties) {\n    if (e instanceof CompoundExpression && properties.indexOf(e.name) >= 0) {\n        return false;\n    }\n    var result = true;\n    e.eachChild(function (arg) {\n        if (result && !isGlobalPropertyConstant(arg, properties)) {\n            result = false;\n        }\n    });\n    return result;\n}\n\nvar Var = function Var(name, boundExpression) {\n    this.type = boundExpression.type;\n    this.name = name;\n    this.boundExpression = boundExpression;\n};\nVar.parse = function parse(args, context) {\n    if (args.length !== 2 || typeof args[1] !== 'string') {\n        return context.error('\\'var\\' expression requires exactly one string literal argument.');\n    }\n    var name = args[1];\n    if (!context.scope.has(name)) {\n        return context.error('Unknown variable \"' + name + '\". Make sure \"' + name + '\" has been bound in an enclosing \"let\" expression before using it.', 1);\n    }\n    return new Var(name, context.scope.get(name));\n};\nVar.prototype.evaluate = function evaluate(ctx) {\n    return this.boundExpression.evaluate(ctx);\n};\nVar.prototype.eachChild = function eachChild() {\n};\nVar.prototype.outputDefined = function outputDefined() {\n    return false;\n};\nVar.prototype.serialize = function serialize() {\n    return [\n        'var',\n        this.name\n    ];\n};\n\nvar ParsingContext = function ParsingContext(registry, path, expectedType, scope, errors) {\n    if (path === void 0)\n        path = [];\n    if (scope === void 0)\n        scope = new Scope();\n    if (errors === void 0)\n        errors = [];\n    this.registry = registry;\n    this.path = path;\n    this.key = path.map(function (part) {\n        return '[' + part + ']';\n    }).join('');\n    this.scope = scope;\n    this.errors = errors;\n    this.expectedType = expectedType;\n};\nParsingContext.prototype.parse = function parse(expr, index, expectedType, bindings, options) {\n    if (options === void 0)\n        options = {};\n    if (index) {\n        return this.concat(index, expectedType, bindings)._parse(expr, options);\n    }\n    return this._parse(expr, options);\n};\nParsingContext.prototype._parse = function _parse(expr, options) {\n    if (expr === null || typeof expr === 'string' || typeof expr === 'boolean' || typeof expr === 'number') {\n        expr = [\n            'literal',\n            expr\n        ];\n    }\n    function annotate(parsed, type, typeAnnotation) {\n        if (typeAnnotation === 'assert') {\n            return new Assertion(type, [parsed]);\n        } else if (typeAnnotation === 'coerce') {\n            return new Coercion(type, [parsed]);\n        } else {\n            return parsed;\n        }\n    }\n    if (Array.isArray(expr)) {\n        if (expr.length === 0) {\n            return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');\n        }\n        var op = expr[0];\n        if (typeof op !== 'string') {\n            this.error('Expression name must be a string, but found ' + typeof op + ' instead. If you wanted a literal array, use [\"literal\", [...]].', 0);\n            return null;\n        }\n        var Expr = this.registry[op];\n        if (Expr) {\n            var parsed = Expr.parse(expr, this);\n            if (!parsed) {\n                return null;\n            }\n            if (this.expectedType) {\n                var expected = this.expectedType;\n                var actual = parsed.type;\n                if ((expected.kind === 'string' || expected.kind === 'number' || expected.kind === 'boolean' || expected.kind === 'object' || expected.kind === 'array') && actual.kind === 'value') {\n                    parsed = annotate(parsed, expected, options.typeAnnotation || 'assert');\n                } else if ((expected.kind === 'color' || expected.kind === 'formatted' || expected.kind === 'resolvedImage') && (actual.kind === 'value' || actual.kind === 'string')) {\n                    parsed = annotate(parsed, expected, options.typeAnnotation || 'coerce');\n                } else if (this.checkSubtype(expected, actual)) {\n                    return null;\n                }\n            }\n            if (!(parsed instanceof Literal) && parsed.type.kind !== 'resolvedImage' && isConstant(parsed)) {\n                var ec = new EvaluationContext();\n                try {\n                    parsed = new Literal(parsed.type, parsed.evaluate(ec));\n                } catch (e) {\n                    this.error(e.message);\n                    return null;\n                }\n            }\n            return parsed;\n        }\n        return this.error('Unknown expression \"' + op + '\". If you wanted a literal array, use [\"literal\", [...]].', 0);\n    } else if (typeof expr === 'undefined') {\n        return this.error('\\'undefined\\' value invalid. Use null instead.');\n    } else if (typeof expr === 'object') {\n        return this.error('Bare objects invalid. Use [\"literal\", {...}] instead.');\n    } else {\n        return this.error('Expected an array, but found ' + typeof expr + ' instead.');\n    }\n};\nParsingContext.prototype.concat = function concat(index, expectedType, bindings) {\n    var path = typeof index === 'number' ? this.path.concat(index) : this.path;\n    var scope = bindings ? this.scope.concat(bindings) : this.scope;\n    return new ParsingContext(this.registry, path, expectedType || null, scope, this.errors);\n};\nParsingContext.prototype.error = function error(error$1) {\n    var keys = [], len = arguments.length - 1;\n    while (len-- > 0)\n        keys[len] = arguments[len + 1];\n    var key = '' + this.key + keys.map(function (k) {\n        return '[' + k + ']';\n    }).join('');\n    this.errors.push(new ParsingError(key, error$1));\n};\nParsingContext.prototype.checkSubtype = function checkSubtype$1(expected, t) {\n    var error = checkSubtype(expected, t);\n    if (error) {\n        this.error(error);\n    }\n    return error;\n};\nfunction isConstant(expression) {\n    if (expression instanceof Var) {\n        return isConstant(expression.boundExpression);\n    } else if (expression instanceof CompoundExpression && expression.name === 'error') {\n        return false;\n    } else if (expression instanceof CollatorExpression) {\n        return false;\n    } else if (expression instanceof Within) {\n        return false;\n    }\n    var isTypeAnnotation = expression instanceof Coercion || expression instanceof Assertion;\n    var childrenConstant = true;\n    expression.eachChild(function (child) {\n        if (isTypeAnnotation) {\n            childrenConstant = childrenConstant && isConstant(child);\n        } else {\n            childrenConstant = childrenConstant && child instanceof Literal;\n        }\n    });\n    if (!childrenConstant) {\n        return false;\n    }\n    return isFeatureConstant(expression) && isGlobalPropertyConstant(expression, [\n        'zoom',\n        'heatmap-density',\n        'line-progress',\n        'accumulated',\n        'is-supported-script'\n    ]);\n}\n\nfunction findStopLessThanOrEqualTo(stops, input) {\n    var lastIndex = stops.length - 1;\n    var lowerIndex = 0;\n    var upperIndex = lastIndex;\n    var currentIndex = 0;\n    var currentValue, nextValue;\n    while (lowerIndex <= upperIndex) {\n        currentIndex = Math.floor((lowerIndex + upperIndex) / 2);\n        currentValue = stops[currentIndex];\n        nextValue = stops[currentIndex + 1];\n        if (currentValue <= input) {\n            if (currentIndex === lastIndex || input < nextValue) {\n                return currentIndex;\n            }\n            lowerIndex = currentIndex + 1;\n        } else if (currentValue > input) {\n            upperIndex = currentIndex - 1;\n        } else {\n            throw new RuntimeError('Input is not a number.');\n        }\n    }\n    return 0;\n}\n\nvar Step = function Step(type, input, stops) {\n    this.type = type;\n    this.input = input;\n    this.labels = [];\n    this.outputs = [];\n    for (var i = 0, list = stops; i < list.length; i += 1) {\n        var ref = list[i];\n        var label = ref[0];\n        var expression = ref[1];\n        this.labels.push(label);\n        this.outputs.push(expression);\n    }\n};\nStep.parse = function parse(args, context) {\n    if (args.length - 1 < 4) {\n        return context.error('Expected at least 4 arguments, but found only ' + (args.length - 1) + '.');\n    }\n    if ((args.length - 1) % 2 !== 0) {\n        return context.error('Expected an even number of arguments.');\n    }\n    var input = context.parse(args[1], 1, NumberType);\n    if (!input) {\n        return null;\n    }\n    var stops = [];\n    var outputType = null;\n    if (context.expectedType && context.expectedType.kind !== 'value') {\n        outputType = context.expectedType;\n    }\n    for (var i = 1; i < args.length; i += 2) {\n        var label = i === 1 ? -Infinity : args[i];\n        var value = args[i + 1];\n        var labelKey = i;\n        var valueKey = i + 1;\n        if (typeof label !== 'number') {\n            return context.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n        }\n        if (stops.length && stops[stops.length - 1][0] >= label) {\n            return context.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n        }\n        var parsed = context.parse(value, valueKey, outputType);\n        if (!parsed) {\n            return null;\n        }\n        outputType = outputType || parsed.type;\n        stops.push([\n            label,\n            parsed\n        ]);\n    }\n    return new Step(outputType, input, stops);\n};\nStep.prototype.evaluate = function evaluate(ctx) {\n    var labels = this.labels;\n    var outputs = this.outputs;\n    if (labels.length === 1) {\n        return outputs[0].evaluate(ctx);\n    }\n    var value = this.input.evaluate(ctx);\n    if (value <= labels[0]) {\n        return outputs[0].evaluate(ctx);\n    }\n    var stopCount = labels.length;\n    if (value >= labels[stopCount - 1]) {\n        return outputs[stopCount - 1].evaluate(ctx);\n    }\n    var index = findStopLessThanOrEqualTo(labels, value);\n    return outputs[index].evaluate(ctx);\n};\nStep.prototype.eachChild = function eachChild(fn) {\n    fn(this.input);\n    for (var i = 0, list = this.outputs; i < list.length; i += 1) {\n        var expression = list[i];\n        fn(expression);\n    }\n};\nStep.prototype.outputDefined = function outputDefined() {\n    return this.outputs.every(function (out) {\n        return out.outputDefined();\n    });\n};\nStep.prototype.serialize = function serialize() {\n    var serialized = [\n        'step',\n        this.input.serialize()\n    ];\n    for (var i = 0; i < this.labels.length; i++) {\n        if (i > 0) {\n            serialized.push(this.labels[i]);\n        }\n        serialized.push(this.outputs[i].serialize());\n    }\n    return serialized;\n};\n\nfunction number(a, b, t) {\n    return a * (1 - t) + b * t;\n}\nfunction color(from, to, t) {\n    return new Color(number(from.r, to.r, t), number(from.g, to.g, t), number(from.b, to.b, t), number(from.a, to.a, t));\n}\nfunction array$1(from, to, t) {\n    return from.map(function (d, i) {\n        return number(d, to[i], t);\n    });\n}\n\nvar interpolate = /*#__PURE__*/Object.freeze({\n__proto__: null,\nnumber: number,\ncolor: color,\narray: array$1\n});\n\nvar Xn = 0.95047, Yn = 1, Zn = 1.08883, t0 = 4 / 29, t1 = 6 / 29, t2 = 3 * t1 * t1, t3 = t1 * t1 * t1, deg2rad = Math.PI / 180, rad2deg = 180 / Math.PI;\nfunction xyz2lab(t) {\n    return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\nfunction lab2xyz(t) {\n    return t > t1 ? t * t * t : t2 * (t - t0);\n}\nfunction xyz2rgb(x) {\n    return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\nfunction rgb2xyz(x) {\n    x /= 255;\n    return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\nfunction rgbToLab(rgbColor) {\n    var b = rgb2xyz(rgbColor.r), a = rgb2xyz(rgbColor.g), l = rgb2xyz(rgbColor.b), x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn), y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.072175 * l) / Yn), z = xyz2lab((0.0193339 * b + 0.119192 * a + 0.9503041 * l) / Zn);\n    return {\n        l: 116 * y - 16,\n        a: 500 * (x - y),\n        b: 200 * (y - z),\n        alpha: rgbColor.a\n    };\n}\nfunction labToRgb(labColor) {\n    var y = (labColor.l + 16) / 116, x = isNaN(labColor.a) ? y : y + labColor.a / 500, z = isNaN(labColor.b) ? y : y - labColor.b / 200;\n    y = Yn * lab2xyz(y);\n    x = Xn * lab2xyz(x);\n    z = Zn * lab2xyz(z);\n    return new Color(xyz2rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z), xyz2rgb(-0.969266 * x + 1.8760108 * y + 0.041556 * z), xyz2rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z), labColor.alpha);\n}\nfunction interpolateLab(from, to, t) {\n    return {\n        l: number(from.l, to.l, t),\n        a: number(from.a, to.a, t),\n        b: number(from.b, to.b, t),\n        alpha: number(from.alpha, to.alpha, t)\n    };\n}\nfunction rgbToHcl(rgbColor) {\n    var ref = rgbToLab(rgbColor);\n    var l = ref.l;\n    var a = ref.a;\n    var b = ref.b;\n    var h = Math.atan2(b, a) * rad2deg;\n    return {\n        h: h < 0 ? h + 360 : h,\n        c: Math.sqrt(a * a + b * b),\n        l: l,\n        alpha: rgbColor.a\n    };\n}\nfunction hclToRgb(hclColor) {\n    var h = hclColor.h * deg2rad, c = hclColor.c, l = hclColor.l;\n    return labToRgb({\n        l: l,\n        a: Math.cos(h) * c,\n        b: Math.sin(h) * c,\n        alpha: hclColor.alpha\n    });\n}\nfunction interpolateHue(a, b, t) {\n    var d = b - a;\n    return a + t * (d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d);\n}\nfunction interpolateHcl(from, to, t) {\n    return {\n        h: interpolateHue(from.h, to.h, t),\n        c: number(from.c, to.c, t),\n        l: number(from.l, to.l, t),\n        alpha: number(from.alpha, to.alpha, t)\n    };\n}\nvar lab = {\n    forward: rgbToLab,\n    reverse: labToRgb,\n    interpolate: interpolateLab\n};\nvar hcl = {\n    forward: rgbToHcl,\n    reverse: hclToRgb,\n    interpolate: interpolateHcl\n};\n\nvar colorSpaces = /*#__PURE__*/Object.freeze({\n__proto__: null,\nlab: lab,\nhcl: hcl\n});\n\nvar Interpolate = function Interpolate(type, operator, interpolation, input, stops) {\n    this.type = type;\n    this.operator = operator;\n    this.interpolation = interpolation;\n    this.input = input;\n    this.labels = [];\n    this.outputs = [];\n    for (var i = 0, list = stops; i < list.length; i += 1) {\n        var ref = list[i];\n        var label = ref[0];\n        var expression = ref[1];\n        this.labels.push(label);\n        this.outputs.push(expression);\n    }\n};\nInterpolate.interpolationFactor = function interpolationFactor(interpolation, input, lower, upper) {\n    var t = 0;\n    if (interpolation.name === 'exponential') {\n        t = exponentialInterpolation(input, interpolation.base, lower, upper);\n    } else if (interpolation.name === 'linear') {\n        t = exponentialInterpolation(input, 1, lower, upper);\n    } else if (interpolation.name === 'cubic-bezier') {\n        var c = interpolation.controlPoints;\n        var ub = new unitbezier(c[0], c[1], c[2], c[3]);\n        t = ub.solve(exponentialInterpolation(input, 1, lower, upper));\n    }\n    return t;\n};\nInterpolate.parse = function parse(args, context) {\n    var operator = args[0];\n    var interpolation = args[1];\n    var input = args[2];\n    var rest = args.slice(3);\n    if (!Array.isArray(interpolation) || interpolation.length === 0) {\n        return context.error('Expected an interpolation type expression.', 1);\n    }\n    if (interpolation[0] === 'linear') {\n        interpolation = { name: 'linear' };\n    } else if (interpolation[0] === 'exponential') {\n        var base = interpolation[1];\n        if (typeof base !== 'number') {\n            return context.error('Exponential interpolation requires a numeric base.', 1, 1);\n        }\n        interpolation = {\n            name: 'exponential',\n            base: base\n        };\n    } else if (interpolation[0] === 'cubic-bezier') {\n        var controlPoints = interpolation.slice(1);\n        if (controlPoints.length !== 4 || controlPoints.some(function (t) {\n                return typeof t !== 'number' || t < 0 || t > 1;\n            })) {\n            return context.error('Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', 1);\n        }\n        interpolation = {\n            name: 'cubic-bezier',\n            controlPoints: controlPoints\n        };\n    } else {\n        return context.error('Unknown interpolation type ' + String(interpolation[0]), 1, 0);\n    }\n    if (args.length - 1 < 4) {\n        return context.error('Expected at least 4 arguments, but found only ' + (args.length - 1) + '.');\n    }\n    if ((args.length - 1) % 2 !== 0) {\n        return context.error('Expected an even number of arguments.');\n    }\n    input = context.parse(input, 2, NumberType);\n    if (!input) {\n        return null;\n    }\n    var stops = [];\n    var outputType = null;\n    if (operator === 'interpolate-hcl' || operator === 'interpolate-lab') {\n        outputType = ColorType;\n    } else if (context.expectedType && context.expectedType.kind !== 'value') {\n        outputType = context.expectedType;\n    }\n    for (var i = 0; i < rest.length; i += 2) {\n        var label = rest[i];\n        var value = rest[i + 1];\n        var labelKey = i + 3;\n        var valueKey = i + 4;\n        if (typeof label !== 'number') {\n            return context.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n        }\n        if (stops.length && stops[stops.length - 1][0] >= label) {\n            return context.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n        }\n        var parsed = context.parse(value, valueKey, outputType);\n        if (!parsed) {\n            return null;\n        }\n        outputType = outputType || parsed.type;\n        stops.push([\n            label,\n            parsed\n        ]);\n    }\n    if (outputType.kind !== 'number' && outputType.kind !== 'color' && !(outputType.kind === 'array' && outputType.itemType.kind === 'number' && typeof outputType.N === 'number')) {\n        return context.error('Type ' + toString(outputType) + ' is not interpolatable.');\n    }\n    return new Interpolate(outputType, operator, interpolation, input, stops);\n};\nInterpolate.prototype.evaluate = function evaluate(ctx) {\n    var labels = this.labels;\n    var outputs = this.outputs;\n    if (labels.length === 1) {\n        return outputs[0].evaluate(ctx);\n    }\n    var value = this.input.evaluate(ctx);\n    if (value <= labels[0]) {\n        return outputs[0].evaluate(ctx);\n    }\n    var stopCount = labels.length;\n    if (value >= labels[stopCount - 1]) {\n        return outputs[stopCount - 1].evaluate(ctx);\n    }\n    var index = findStopLessThanOrEqualTo(labels, value);\n    var lower = labels[index];\n    var upper = labels[index + 1];\n    var t = Interpolate.interpolationFactor(this.interpolation, value, lower, upper);\n    var outputLower = outputs[index].evaluate(ctx);\n    var outputUpper = outputs[index + 1].evaluate(ctx);\n    if (this.operator === 'interpolate') {\n        return interpolate[this.type.kind.toLowerCase()](outputLower, outputUpper, t);\n    } else if (this.operator === 'interpolate-hcl') {\n        return hcl.reverse(hcl.interpolate(hcl.forward(outputLower), hcl.forward(outputUpper), t));\n    } else {\n        return lab.reverse(lab.interpolate(lab.forward(outputLower), lab.forward(outputUpper), t));\n    }\n};\nInterpolate.prototype.eachChild = function eachChild(fn) {\n    fn(this.input);\n    for (var i = 0, list = this.outputs; i < list.length; i += 1) {\n        var expression = list[i];\n        fn(expression);\n    }\n};\nInterpolate.prototype.outputDefined = function outputDefined() {\n    return this.outputs.every(function (out) {\n        return out.outputDefined();\n    });\n};\nInterpolate.prototype.serialize = function serialize() {\n    var interpolation;\n    if (this.interpolation.name === 'linear') {\n        interpolation = ['linear'];\n    } else if (this.interpolation.name === 'exponential') {\n        if (this.interpolation.base === 1) {\n            interpolation = ['linear'];\n        } else {\n            interpolation = [\n                'exponential',\n                this.interpolation.base\n            ];\n        }\n    } else {\n        interpolation = ['cubic-bezier'].concat(this.interpolation.controlPoints);\n    }\n    var serialized = [\n        this.operator,\n        interpolation,\n        this.input.serialize()\n    ];\n    for (var i = 0; i < this.labels.length; i++) {\n        serialized.push(this.labels[i], this.outputs[i].serialize());\n    }\n    return serialized;\n};\nfunction exponentialInterpolation(input, base, lowerValue, upperValue) {\n    var difference = upperValue - lowerValue;\n    var progress = input - lowerValue;\n    if (difference === 0) {\n        return 0;\n    } else if (base === 1) {\n        return progress / difference;\n    } else {\n        return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n    }\n}\n\nvar Coalesce = function Coalesce(type, args) {\n    this.type = type;\n    this.args = args;\n};\nCoalesce.parse = function parse(args, context) {\n    if (args.length < 2) {\n        return context.error('Expectected at least one argument.');\n    }\n    var outputType = null;\n    var expectedType = context.expectedType;\n    if (expectedType && expectedType.kind !== 'value') {\n        outputType = expectedType;\n    }\n    var parsedArgs = [];\n    for (var i = 0, list = args.slice(1); i < list.length; i += 1) {\n        var arg = list[i];\n        var parsed = context.parse(arg, 1 + parsedArgs.length, outputType, undefined, { typeAnnotation: 'omit' });\n        if (!parsed) {\n            return null;\n        }\n        outputType = outputType || parsed.type;\n        parsedArgs.push(parsed);\n    }\n    var needsAnnotation = expectedType && parsedArgs.some(function (arg) {\n        return checkSubtype(expectedType, arg.type);\n    });\n    return needsAnnotation ? new Coalesce(ValueType, parsedArgs) : new Coalesce(outputType, parsedArgs);\n};\nCoalesce.prototype.evaluate = function evaluate(ctx) {\n    var result = null;\n    var argCount = 0;\n    var requestedImageName;\n    for (var i = 0, list = this.args; i < list.length; i += 1) {\n        var arg = list[i];\n        argCount++;\n        result = arg.evaluate(ctx);\n        if (result && result instanceof ResolvedImage && !result.available) {\n            if (!requestedImageName) {\n                requestedImageName = result.name;\n            }\n            result = null;\n            if (argCount === this.args.length) {\n                result = requestedImageName;\n            }\n        }\n        if (result !== null) {\n            break;\n        }\n    }\n    return result;\n};\nCoalesce.prototype.eachChild = function eachChild(fn) {\n    this.args.forEach(fn);\n};\nCoalesce.prototype.outputDefined = function outputDefined() {\n    return this.args.every(function (arg) {\n        return arg.outputDefined();\n    });\n};\nCoalesce.prototype.serialize = function serialize() {\n    var serialized = ['coalesce'];\n    this.eachChild(function (child) {\n        serialized.push(child.serialize());\n    });\n    return serialized;\n};\n\nvar Let = function Let(bindings, result) {\n    this.type = result.type;\n    this.bindings = [].concat(bindings);\n    this.result = result;\n};\nLet.prototype.evaluate = function evaluate(ctx) {\n    return this.result.evaluate(ctx);\n};\nLet.prototype.eachChild = function eachChild(fn) {\n    for (var i = 0, list = this.bindings; i < list.length; i += 1) {\n        var binding = list[i];\n        fn(binding[1]);\n    }\n    fn(this.result);\n};\nLet.parse = function parse(args, context) {\n    if (args.length < 4) {\n        return context.error('Expected at least 3 arguments, but found ' + (args.length - 1) + ' instead.');\n    }\n    var bindings = [];\n    for (var i = 1; i < args.length - 1; i += 2) {\n        var name = args[i];\n        if (typeof name !== 'string') {\n            return context.error('Expected string, but found ' + typeof name + ' instead.', i);\n        }\n        if (/[^a-zA-Z0-9_]/.test(name)) {\n            return context.error('Variable names must contain only alphanumeric characters or \\'_\\'.', i);\n        }\n        var value = context.parse(args[i + 1], i + 1);\n        if (!value) {\n            return null;\n        }\n        bindings.push([\n            name,\n            value\n        ]);\n    }\n    var result = context.parse(args[args.length - 1], args.length - 1, context.expectedType, bindings);\n    if (!result) {\n        return null;\n    }\n    return new Let(bindings, result);\n};\nLet.prototype.outputDefined = function outputDefined() {\n    return this.result.outputDefined();\n};\nLet.prototype.serialize = function serialize() {\n    var serialized = ['let'];\n    for (var i = 0, list = this.bindings; i < list.length; i += 1) {\n        var ref = list[i];\n        var name = ref[0];\n        var expr = ref[1];\n        serialized.push(name, expr.serialize());\n    }\n    serialized.push(this.result.serialize());\n    return serialized;\n};\n\nvar At = function At(type, index, input) {\n    this.type = type;\n    this.index = index;\n    this.input = input;\n};\nAt.parse = function parse(args, context) {\n    if (args.length !== 3) {\n        return context.error('Expected 2 arguments, but found ' + (args.length - 1) + ' instead.');\n    }\n    var index = context.parse(args[1], 1, NumberType);\n    var input = context.parse(args[2], 2, array(context.expectedType || ValueType));\n    if (!index || !input) {\n        return null;\n    }\n    var t = input.type;\n    return new At(t.itemType, index, input);\n};\nAt.prototype.evaluate = function evaluate(ctx) {\n    var index = this.index.evaluate(ctx);\n    var array = this.input.evaluate(ctx);\n    if (index < 0) {\n        throw new RuntimeError('Array index out of bounds: ' + index + ' < 0.');\n    }\n    if (index >= array.length) {\n        throw new RuntimeError('Array index out of bounds: ' + index + ' > ' + (array.length - 1) + '.');\n    }\n    if (index !== Math.floor(index)) {\n        throw new RuntimeError('Array index must be an integer, but found ' + index + ' instead.');\n    }\n    return array[index];\n};\nAt.prototype.eachChild = function eachChild(fn) {\n    fn(this.index);\n    fn(this.input);\n};\nAt.prototype.outputDefined = function outputDefined() {\n    return false;\n};\nAt.prototype.serialize = function serialize() {\n    return [\n        'at',\n        this.index.serialize(),\n        this.input.serialize()\n    ];\n};\n\nvar In = function In(needle, haystack) {\n    this.type = BooleanType;\n    this.needle = needle;\n    this.haystack = haystack;\n};\nIn.parse = function parse(args, context) {\n    if (args.length !== 3) {\n        return context.error('Expected 2 arguments, but found ' + (args.length - 1) + ' instead.');\n    }\n    var needle = context.parse(args[1], 1, ValueType);\n    var haystack = context.parse(args[2], 2, ValueType);\n    if (!needle || !haystack) {\n        return null;\n    }\n    if (!isValidType(needle.type, [\n            BooleanType,\n            StringType,\n            NumberType,\n            NullType,\n            ValueType\n        ])) {\n        return context.error('Expected first argument to be of type boolean, string, number or null, but found ' + toString(needle.type) + ' instead');\n    }\n    return new In(needle, haystack);\n};\nIn.prototype.evaluate = function evaluate(ctx) {\n    var needle = this.needle.evaluate(ctx);\n    var haystack = this.haystack.evaluate(ctx);\n    if (!haystack) {\n        return false;\n    }\n    if (!isValidNativeType(needle, [\n            'boolean',\n            'string',\n            'number',\n            'null'\n        ])) {\n        throw new RuntimeError('Expected first argument to be of type boolean, string, number or null, but found ' + toString(typeOf(needle)) + ' instead.');\n    }\n    if (!isValidNativeType(haystack, [\n            'string',\n            'array'\n        ])) {\n        throw new RuntimeError('Expected second argument to be of type array or string, but found ' + toString(typeOf(haystack)) + ' instead.');\n    }\n    return haystack.indexOf(needle) >= 0;\n};\nIn.prototype.eachChild = function eachChild(fn) {\n    fn(this.needle);\n    fn(this.haystack);\n};\nIn.prototype.outputDefined = function outputDefined() {\n    return true;\n};\nIn.prototype.serialize = function serialize() {\n    return [\n        'in',\n        this.needle.serialize(),\n        this.haystack.serialize()\n    ];\n};\n\nvar IndexOf = function IndexOf(needle, haystack, fromIndex) {\n    this.type = NumberType;\n    this.needle = needle;\n    this.haystack = haystack;\n    this.fromIndex = fromIndex;\n};\nIndexOf.parse = function parse(args, context) {\n    if (args.length <= 2 || args.length >= 5) {\n        return context.error('Expected 3 or 4 arguments, but found ' + (args.length - 1) + ' instead.');\n    }\n    var needle = context.parse(args[1], 1, ValueType);\n    var haystack = context.parse(args[2], 2, ValueType);\n    if (!needle || !haystack) {\n        return null;\n    }\n    if (!isValidType(needle.type, [\n            BooleanType,\n            StringType,\n            NumberType,\n            NullType,\n            ValueType\n        ])) {\n        return context.error('Expected first argument to be of type boolean, string, number or null, but found ' + toString(needle.type) + ' instead');\n    }\n    if (args.length === 4) {\n        var fromIndex = context.parse(args[3], 3, NumberType);\n        if (!fromIndex) {\n            return null;\n        }\n        return new IndexOf(needle, haystack, fromIndex);\n    } else {\n        return new IndexOf(needle, haystack);\n    }\n};\nIndexOf.prototype.evaluate = function evaluate(ctx) {\n    var needle = this.needle.evaluate(ctx);\n    var haystack = this.haystack.evaluate(ctx);\n    if (!isValidNativeType(needle, [\n            'boolean',\n            'string',\n            'number',\n            'null'\n        ])) {\n        throw new RuntimeError('Expected first argument to be of type boolean, string, number or null, but found ' + toString(typeOf(needle)) + ' instead.');\n    }\n    if (!isValidNativeType(haystack, [\n            'string',\n            'array'\n        ])) {\n        throw new RuntimeError('Expected second argument to be of type array or string, but found ' + toString(typeOf(haystack)) + ' instead.');\n    }\n    if (this.fromIndex) {\n        var fromIndex = this.fromIndex.evaluate(ctx);\n        return haystack.indexOf(needle, fromIndex);\n    }\n    return haystack.indexOf(needle);\n};\nIndexOf.prototype.eachChild = function eachChild(fn) {\n    fn(this.needle);\n    fn(this.haystack);\n    if (this.fromIndex) {\n        fn(this.fromIndex);\n    }\n};\nIndexOf.prototype.outputDefined = function outputDefined() {\n    return false;\n};\nIndexOf.prototype.serialize = function serialize() {\n    if (this.fromIndex != null && this.fromIndex !== undefined) {\n        var fromIndex = this.fromIndex.serialize();\n        return [\n            'index-of',\n            this.needle.serialize(),\n            this.haystack.serialize(),\n            fromIndex\n        ];\n    }\n    return [\n        'index-of',\n        this.needle.serialize(),\n        this.haystack.serialize()\n    ];\n};\n\nvar Match = function Match(inputType, outputType, input, cases, outputs, otherwise) {\n    this.inputType = inputType;\n    this.type = outputType;\n    this.input = input;\n    this.cases = cases;\n    this.outputs = outputs;\n    this.otherwise = otherwise;\n};\nMatch.parse = function parse(args, context) {\n    if (args.length < 5) {\n        return context.error('Expected at least 4 arguments, but found only ' + (args.length - 1) + '.');\n    }\n    if (args.length % 2 !== 1) {\n        return context.error('Expected an even number of arguments.');\n    }\n    var inputType;\n    var outputType;\n    if (context.expectedType && context.expectedType.kind !== 'value') {\n        outputType = context.expectedType;\n    }\n    var cases = {};\n    var outputs = [];\n    for (var i = 2; i < args.length - 1; i += 2) {\n        var labels = args[i];\n        var value = args[i + 1];\n        if (!Array.isArray(labels)) {\n            labels = [labels];\n        }\n        var labelContext = context.concat(i);\n        if (labels.length === 0) {\n            return labelContext.error('Expected at least one branch label.');\n        }\n        for (var i$1 = 0, list = labels; i$1 < list.length; i$1 += 1) {\n            var label = list[i$1];\n            if (typeof label !== 'number' && typeof label !== 'string') {\n                return labelContext.error('Branch labels must be numbers or strings.');\n            } else if (typeof label === 'number' && Math.abs(label) > Number.MAX_SAFE_INTEGER) {\n                return labelContext.error('Branch labels must be integers no larger than ' + Number.MAX_SAFE_INTEGER + '.');\n            } else if (typeof label === 'number' && Math.floor(label) !== label) {\n                return labelContext.error('Numeric branch labels must be integer values.');\n            } else if (!inputType) {\n                inputType = typeOf(label);\n            } else if (labelContext.checkSubtype(inputType, typeOf(label))) {\n                return null;\n            }\n            if (typeof cases[String(label)] !== 'undefined') {\n                return labelContext.error('Branch labels must be unique.');\n            }\n            cases[String(label)] = outputs.length;\n        }\n        var result = context.parse(value, i, outputType);\n        if (!result) {\n            return null;\n        }\n        outputType = outputType || result.type;\n        outputs.push(result);\n    }\n    var input = context.parse(args[1], 1, ValueType);\n    if (!input) {\n        return null;\n    }\n    var otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n    if (!otherwise) {\n        return null;\n    }\n    if (input.type.kind !== 'value' && context.concat(1).checkSubtype(inputType, input.type)) {\n        return null;\n    }\n    return new Match(inputType, outputType, input, cases, outputs, otherwise);\n};\nMatch.prototype.evaluate = function evaluate(ctx) {\n    var input = this.input.evaluate(ctx);\n    var output = typeOf(input) === this.inputType && this.outputs[this.cases[input]] || this.otherwise;\n    return output.evaluate(ctx);\n};\nMatch.prototype.eachChild = function eachChild(fn) {\n    fn(this.input);\n    this.outputs.forEach(fn);\n    fn(this.otherwise);\n};\nMatch.prototype.outputDefined = function outputDefined() {\n    return this.outputs.every(function (out) {\n        return out.outputDefined();\n    }) && this.otherwise.outputDefined();\n};\nMatch.prototype.serialize = function serialize() {\n    var this$1 = this;\n    var serialized = [\n        'match',\n        this.input.serialize()\n    ];\n    var sortedLabels = Object.keys(this.cases).sort();\n    var groupedByOutput = [];\n    var outputLookup = {};\n    for (var i = 0, list = sortedLabels; i < list.length; i += 1) {\n        var label = list[i];\n        var outputIndex = outputLookup[this.cases[label]];\n        if (outputIndex === undefined) {\n            outputLookup[this.cases[label]] = groupedByOutput.length;\n            groupedByOutput.push([\n                this.cases[label],\n                [label]\n            ]);\n        } else {\n            groupedByOutput[outputIndex][1].push(label);\n        }\n    }\n    var coerceLabel = function (label) {\n        return this$1.inputType.kind === 'number' ? Number(label) : label;\n    };\n    for (var i$1 = 0, list$1 = groupedByOutput; i$1 < list$1.length; i$1 += 1) {\n        var ref = list$1[i$1];\n        var outputIndex = ref[0];\n        var labels = ref[1];\n        if (labels.length === 1) {\n            serialized.push(coerceLabel(labels[0]));\n        } else {\n            serialized.push(labels.map(coerceLabel));\n        }\n        serialized.push(this.outputs[outputIndex$1].serialize());\n    }\n    serialized.push(this.otherwise.serialize());\n    return serialized;\n};\n\nvar Case = function Case(type, branches, otherwise) {\n    this.type = type;\n    this.branches = branches;\n    this.otherwise = otherwise;\n};\nCase.parse = function parse(args, context) {\n    if (args.length < 4) {\n        return context.error('Expected at least 3 arguments, but found only ' + (args.length - 1) + '.');\n    }\n    if (args.length % 2 !== 0) {\n        return context.error('Expected an odd number of arguments.');\n    }\n    var outputType;\n    if (context.expectedType && context.expectedType.kind !== 'value') {\n        outputType = context.expectedType;\n    }\n    var branches = [];\n    for (var i = 1; i < args.length - 1; i += 2) {\n        var test = context.parse(args[i], i, BooleanType);\n        if (!test) {\n            return null;\n        }\n        var result = context.parse(args[i + 1], i + 1, outputType);\n        if (!result) {\n            return null;\n        }\n        branches.push([\n            test,\n            result\n        ]);\n        outputType = outputType || result.type;\n    }\n    var otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n    if (!otherwise) {\n        return null;\n    }\n    return new Case(outputType, branches, otherwise);\n};\nCase.prototype.evaluate = function evaluate(ctx) {\n    for (var i = 0, list = this.branches; i < list.length; i += 1) {\n        var ref = list[i];\n        var test = ref[0];\n        var expression = ref[1];\n        if (test.evaluate(ctx)) {\n            return expression.evaluate(ctx);\n        }\n    }\n    return this.otherwise.evaluate(ctx);\n};\nCase.prototype.eachChild = function eachChild(fn) {\n    for (var i = 0, list = this.branches; i < list.length; i += 1) {\n        var ref = list[i];\n        var test = ref[0];\n        var expression = ref[1];\n        fn(test);\n        fn(expression);\n    }\n    fn(this.otherwise);\n};\nCase.prototype.outputDefined = function outputDefined() {\n    return this.branches.every(function (ref) {\n        var _ = ref[0];\n        var out = ref[1];\n        return out.outputDefined();\n    }) && this.otherwise.outputDefined();\n};\nCase.prototype.serialize = function serialize() {\n    var serialized = ['case'];\n    this.eachChild(function (child) {\n        serialized.push(child.serialize());\n    });\n    return serialized;\n};\n\nvar Slice = function Slice(type, input, beginIndex, endIndex) {\n    this.type = type;\n    this.input = input;\n    this.beginIndex = beginIndex;\n    this.endIndex = endIndex;\n};\nSlice.parse = function parse(args, context) {\n    if (args.length <= 2 || args.length >= 5) {\n        return context.error('Expected 3 or 4 arguments, but found ' + (args.length - 1) + ' instead.');\n    }\n    var input = context.parse(args[1], 1, ValueType);\n    var beginIndex = context.parse(args[2], 2, NumberType);\n    if (!input || !beginIndex) {\n        return null;\n    }\n    if (!isValidType(input.type, [\n            array(ValueType),\n            StringType,\n            ValueType\n        ])) {\n        return context.error('Expected first argument to be of type array or string, but found ' + toString(input.type) + ' instead');\n    }\n    if (args.length === 4) {\n        var endIndex = context.parse(args[3], 3, NumberType);\n        if (!endIndex) {\n            return null;\n        }\n        return new Slice(input.type, input, beginIndex, endIndex);\n    } else {\n        return new Slice(input.type, input, beginIndex);\n    }\n};\nSlice.prototype.evaluate = function evaluate(ctx) {\n    var input = this.input.evaluate(ctx);\n    var beginIndex = this.beginIndex.evaluate(ctx);\n    if (!isValidNativeType(input, [\n            'string',\n            'array'\n        ])) {\n        throw new RuntimeError('Expected first argument to be of type array or string, but found ' + toString(typeOf(input)) + ' instead.');\n    }\n    if (this.endIndex) {\n        var endIndex = this.endIndex.evaluate(ctx);\n        return input.slice(beginIndex, endIndex);\n    }\n    return input.slice(beginIndex);\n};\nSlice.prototype.eachChild = function eachChild(fn) {\n    fn(this.input);\n    fn(this.beginIndex);\n    if (this.endIndex) {\n        fn(this.endIndex);\n    }\n};\nSlice.prototype.outputDefined = function outputDefined() {\n    return false;\n};\nSlice.prototype.serialize = function serialize() {\n    if (this.endIndex != null && this.endIndex !== undefined) {\n        var endIndex = this.endIndex.serialize();\n        return [\n            'slice',\n            this.input.serialize(),\n            this.beginIndex.serialize(),\n            endIndex\n        ];\n    }\n    return [\n        'slice',\n        this.input.serialize(),\n        this.beginIndex.serialize()\n    ];\n};\n\nfunction isComparableType(op, type) {\n    if (op === '==' || op === '!=') {\n        return type.kind === 'boolean' || type.kind === 'string' || type.kind === 'number' || type.kind === 'null' || type.kind === 'value';\n    } else {\n        return type.kind === 'string' || type.kind === 'number' || type.kind === 'value';\n    }\n}\nfunction eq(ctx, a, b) {\n    return a === b;\n}\nfunction neq(ctx, a, b) {\n    return a !== b;\n}\nfunction lt(ctx, a, b) {\n    return a < b;\n}\nfunction gt(ctx, a, b) {\n    return a > b;\n}\nfunction lteq(ctx, a, b) {\n    return a <= b;\n}\nfunction gteq(ctx, a, b) {\n    return a >= b;\n}\nfunction eqCollate(ctx, a, b, c) {\n    return c.compare(a, b) === 0;\n}\nfunction neqCollate(ctx, a, b, c) {\n    return !eqCollate(ctx, a, b, c);\n}\nfunction ltCollate(ctx, a, b, c) {\n    return c.compare(a, b) < 0;\n}\nfunction gtCollate(ctx, a, b, c) {\n    return c.compare(a, b) > 0;\n}\nfunction lteqCollate(ctx, a, b, c) {\n    return c.compare(a, b) <= 0;\n}\nfunction gteqCollate(ctx, a, b, c) {\n    return c.compare(a, b) >= 0;\n}\nfunction makeComparison(op, compareBasic, compareWithCollator) {\n    var isOrderComparison = op !== '==' && op !== '!=';\n    return function () {\n        function Comparison(lhs, rhs, collator) {\n            this.type = BooleanType;\n            this.lhs = lhs;\n            this.rhs = rhs;\n            this.collator = collator;\n            this.hasUntypedArgument = lhs.type.kind === 'value' || rhs.type.kind === 'value';\n        }\n        Comparison.parse = function parse(args, context) {\n            if (args.length !== 3 && args.length !== 4) {\n                return context.error('Expected two or three arguments.');\n            }\n            var op = args[0];\n            var lhs = context.parse(args[1], 1, ValueType);\n            if (!lhs) {\n                return null;\n            }\n            if (!isComparableType(op, lhs.type)) {\n                return context.concat(1).error('\"' + op + '\" comparisons are not supported for type \\'' + toString(lhs.type) + '\\'.');\n            }\n            var rhs = context.parse(args[2], 2, ValueType);\n            if (!rhs) {\n                return null;\n            }\n            if (!isComparableType(op, rhs.type)) {\n                return context.concat(2).error('\"' + op + '\" comparisons are not supported for type \\'' + toString(rhs.type) + '\\'.');\n            }\n            if (lhs.type.kind !== rhs.type.kind && lhs.type.kind !== 'value' && rhs.type.kind !== 'value') {\n                return context.error('Cannot compare types \\'' + toString(lhs.type) + '\\' and \\'' + toString(rhs.type) + '\\'.');\n            }\n            if (isOrderComparison) {\n                if (lhs.type.kind === 'value' && rhs.type.kind !== 'value') {\n                    lhs = new Assertion(rhs.type, [lhs]);\n                } else if (lhs.type.kind !== 'value' && rhs.type.kind === 'value') {\n                    rhs = new Assertion(lhs.type, [rhs]);\n                }\n            }\n            var collator = null;\n            if (args.length === 4) {\n                if (lhs.type.kind !== 'string' && rhs.type.kind !== 'string' && lhs.type.kind !== 'value' && rhs.type.kind !== 'value') {\n                    return context.error('Cannot use collator to compare non-string types.');\n                }\n                collator = context.parse(args[3], 3, CollatorType);\n                if (!collator) {\n                    return null;\n                }\n            }\n            return new Comparison(lhs, rhs, collator);\n        };\n        Comparison.prototype.evaluate = function evaluate(ctx) {\n            var lhs = this.lhs.evaluate(ctx);\n            var rhs = this.rhs.evaluate(ctx);\n            if (isOrderComparison && this.hasUntypedArgument) {\n                var lt = typeOf(lhs);\n                var rt = typeOf(rhs);\n                if (lt.kind !== rt.kind || !(lt.kind === 'string' || lt.kind === 'number')) {\n                    throw new RuntimeError('Expected arguments for \"' + op + '\" to be (string, string) or (number, number), but found (' + lt.kind + ', ' + rt.kind + ') instead.');\n                }\n            }\n            if (this.collator && !isOrderComparison && this.hasUntypedArgument) {\n                var lt$1 = typeOf(lhs);\n                var rt$1 = typeOf(rhs);\n                if (lt$1.kind !== 'string' || rt$1.kind !== 'string') {\n                    return compareBasic(ctx, lhs, rhs);\n                }\n            }\n            return this.collator ? compareWithCollator(ctx, lhs, rhs, this.collator.evaluate(ctx)) : compareBasic(ctx, lhs, rhs);\n        };\n        Comparison.prototype.eachChild = function eachChild(fn) {\n            fn(this.lhs);\n            fn(this.rhs);\n            if (this.collator) {\n                fn(this.collator);\n            }\n        };\n        Comparison.prototype.outputDefined = function outputDefined() {\n            return true;\n        };\n        Comparison.prototype.serialize = function serialize() {\n            var serialized = [op];\n            this.eachChild(function (child) {\n                serialized.push(child.serialize());\n            });\n            return serialized;\n        };\n        return Comparison;\n    }();\n}\nvar Equals = makeComparison('==', eq, eqCollate);\nvar NotEquals = makeComparison('!=', neq, neqCollate);\nvar LessThan = makeComparison('<', lt, ltCollate);\nvar GreaterThan = makeComparison('>', gt, gtCollate);\nvar LessThanOrEqual = makeComparison('<=', lteq, lteqCollate);\nvar GreaterThanOrEqual = makeComparison('>=', gteq, gteqCollate);\n\nvar NumberFormat = function NumberFormat(number, locale, currency, minFractionDigits, maxFractionDigits) {\n    this.type = StringType;\n    this.number = number;\n    this.locale = locale;\n    this.currency = currency;\n    this.minFractionDigits = minFractionDigits;\n    this.maxFractionDigits = maxFractionDigits;\n};\nNumberFormat.parse = function parse(args, context) {\n    if (args.length !== 3) {\n        return context.error('Expected two arguments.');\n    }\n    var number = context.parse(args[1], 1, NumberType);\n    if (!number) {\n        return null;\n    }\n    var options = args[2];\n    if (typeof options !== 'object' || Array.isArray(options)) {\n        return context.error('NumberFormat options argument must be an object.');\n    }\n    var locale = null;\n    if (options['locale']) {\n        locale = context.parse(options['locale'], 1, StringType);\n        if (!locale) {\n            return null;\n        }\n    }\n    var currency = null;\n    if (options['currency']) {\n        currency = context.parse(options['currency'], 1, StringType);\n        if (!currency) {\n            return null;\n        }\n    }\n    var minFractionDigits = null;\n    if (options['min-fraction-digits']) {\n        minFractionDigits = context.parse(options['min-fraction-digits'], 1, NumberType);\n        if (!minFractionDigits) {\n            return null;\n        }\n    }\n    var maxFractionDigits = null;\n    if (options['max-fraction-digits']) {\n        maxFractionDigits = context.parse(options['max-fraction-digits'], 1, NumberType);\n        if (!maxFractionDigits) {\n            return null;\n        }\n    }\n    return new NumberFormat(number, locale, currency, minFractionDigits, maxFractionDigits);\n};\nNumberFormat.prototype.evaluate = function evaluate(ctx) {\n    return new Intl.NumberFormat(this.locale ? this.locale.evaluate(ctx) : [], {\n        style: this.currency ? 'currency' : 'decimal',\n        currency: this.currency ? this.currency.evaluate(ctx) : undefined,\n        minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(ctx) : undefined,\n        maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(ctx) : undefined\n    }).format(this.number.evaluate(ctx));\n};\nNumberFormat.prototype.eachChild = function eachChild(fn) {\n    fn(this.number);\n    if (this.locale) {\n        fn(this.locale);\n    }\n    if (this.currency) {\n        fn(this.currency);\n    }\n    if (this.minFractionDigits) {\n        fn(this.minFractionDigits);\n    }\n    if (this.maxFractionDigits) {\n        fn(this.maxFractionDigits);\n    }\n};\nNumberFormat.prototype.outputDefined = function outputDefined() {\n    return false;\n};\nNumberFormat.prototype.serialize = function serialize() {\n    var options = {};\n    if (this.locale) {\n        options['locale'] = this.locale.serialize();\n    }\n    if (this.currency) {\n        options['currency'] = this.currency.serialize();\n    }\n    if (this.minFractionDigits) {\n        options['min-fraction-digits'] = this.minFractionDigits.serialize();\n    }\n    if (this.maxFractionDigits) {\n        options['max-fraction-digits'] = this.maxFractionDigits.serialize();\n    }\n    return [\n        'number-format',\n        this.number.serialize(),\n        options\n    ];\n};\n\nvar Length = function Length(input) {\n    this.type = NumberType;\n    this.input = input;\n};\nLength.parse = function parse(args, context) {\n    if (args.length !== 2) {\n        return context.error('Expected 1 argument, but found ' + (args.length - 1) + ' instead.');\n    }\n    var input = context.parse(args[1], 1);\n    if (!input) {\n        return null;\n    }\n    if (input.type.kind !== 'array' && input.type.kind !== 'string' && input.type.kind !== 'value') {\n        return context.error('Expected argument of type string or array, but found ' + toString(input.type) + ' instead.');\n    }\n    return new Length(input);\n};\nLength.prototype.evaluate = function evaluate(ctx) {\n    var input = this.input.evaluate(ctx);\n    if (typeof input === 'string') {\n        return input.length;\n    } else if (Array.isArray(input)) {\n        return input.length;\n    } else {\n        throw new RuntimeError('Expected value to be of type string or array, but found ' + toString(typeOf(input)) + ' instead.');\n    }\n};\nLength.prototype.eachChild = function eachChild(fn) {\n    fn(this.input);\n};\nLength.prototype.outputDefined = function outputDefined() {\n    return false;\n};\nLength.prototype.serialize = function serialize() {\n    var serialized = ['length'];\n    this.eachChild(function (child) {\n        serialized.push(child.serialize());\n    });\n    return serialized;\n};\n\nvar expressions = {\n    '==': Equals,\n    '!=': NotEquals,\n    '>': GreaterThan,\n    '<': LessThan,\n    '>=': GreaterThanOrEqual,\n    '<=': LessThanOrEqual,\n    'array': Assertion,\n    'at': At,\n    'boolean': Assertion,\n    'case': Case,\n    'coalesce': Coalesce,\n    'collator': CollatorExpression,\n    'format': FormatExpression,\n    'image': ImageExpression,\n    'in': In,\n    'index-of': IndexOf,\n    'interpolate': Interpolate,\n    'interpolate-hcl': Interpolate,\n    'interpolate-lab': Interpolate,\n    'length': Length,\n    'let': Let,\n    'literal': Literal,\n    'match': Match,\n    'number': Assertion,\n    'number-format': NumberFormat,\n    'object': Assertion,\n    'slice': Slice,\n    'step': Step,\n    'string': Assertion,\n    'to-boolean': Coercion,\n    'to-color': Coercion,\n    'to-number': Coercion,\n    'to-string': Coercion,\n    'var': Var,\n    'within': Within\n};\nfunction rgba(ctx, ref) {\n    var r = ref[0];\n    var g = ref[1];\n    var b = ref[2];\n    var a = ref[3];\n    r = r.evaluate(ctx);\n    g = g.evaluate(ctx);\n    b = b.evaluate(ctx);\n    var alpha = a ? a.evaluate(ctx) : 1;\n    var error = validateRGBA(r, g, b, alpha);\n    if (error) {\n        throw new RuntimeError(error);\n    }\n    return new Color(r / 255 * alpha, g / 255 * alpha, b / 255 * alpha, alpha);\n}\nfunction has(key, obj) {\n    return key in obj;\n}\nfunction get(key, obj) {\n    var v = obj[key];\n    return typeof v === 'undefined' ? null : v;\n}\nfunction binarySearch(v, a, i, j) {\n    while (i <= j) {\n        var m = i + j >> 1;\n        if (a[m] === v) {\n            return true;\n        }\n        if (a[m] > v) {\n            j = m - 1;\n        } else {\n            i = m + 1;\n        }\n    }\n    return false;\n}\nfunction varargs(type) {\n    return { type: type };\n}\nCompoundExpression.register(expressions, {\n    'error': [\n        ErrorType,\n        [StringType],\n        function (ctx, ref) {\n            var v = ref[0];\n            throw new RuntimeError(v.evaluate(ctx));\n        }\n    ],\n    'typeof': [\n        StringType,\n        [ValueType],\n        function (ctx, ref) {\n            var v = ref[0];\n            return toString(typeOf(v.evaluate(ctx)));\n        }\n    ],\n    'to-rgba': [\n        array(NumberType, 4),\n        [ColorType],\n        function (ctx, ref) {\n            var v = ref[0];\n            return v.evaluate(ctx).toArray();\n        }\n    ],\n    'rgb': [\n        ColorType,\n        [\n            NumberType,\n            NumberType,\n            NumberType\n        ],\n        rgba\n    ],\n    'rgba': [\n        ColorType,\n        [\n            NumberType,\n            NumberType,\n            NumberType,\n            NumberType\n        ],\n        rgba\n    ],\n    'has': {\n        type: BooleanType,\n        overloads: [\n            [\n                [StringType],\n                function (ctx, ref) {\n                    var key = ref[0];\n                    return has(key.evaluate(ctx), ctx.properties());\n                }\n            ],\n            [\n                [\n                    StringType,\n                    ObjectType\n                ],\n                function (ctx, ref) {\n                    var key = ref[0];\n                    var obj = ref[1];\n                    return has(key.evaluate(ctx), obj.evaluate(ctx));\n                }\n            ]\n        ]\n    },\n    'get': {\n        type: ValueType,\n        overloads: [\n            [\n                [StringType],\n                function (ctx, ref) {\n                    var key = ref[0];\n                    return get(key.evaluate(ctx), ctx.properties());\n                }\n            ],\n            [\n                [\n                    StringType,\n                    ObjectType\n                ],\n                function (ctx, ref) {\n                    var key = ref[0];\n                    var obj = ref[1];\n                    return get(key.evaluate(ctx), obj.evaluate(ctx));\n                }\n            ]\n        ]\n    },\n    'feature-state': [\n        ValueType,\n        [StringType],\n        function (ctx, ref) {\n            var key = ref[0];\n            return get(key.evaluate(ctx), ctx.featureState || {});\n        }\n    ],\n    'properties': [\n        ObjectType,\n        [],\n        function (ctx) {\n            return ctx.properties();\n        }\n    ],\n    'geometry-type': [\n        StringType,\n        [],\n        function (ctx) {\n            return ctx.geometryType();\n        }\n    ],\n    'id': [\n        ValueType,\n        [],\n        function (ctx) {\n            return ctx.id();\n        }\n    ],\n    'zoom': [\n        NumberType,\n        [],\n        function (ctx) {\n            return ctx.globals.zoom;\n        }\n    ],\n    'heatmap-density': [\n        NumberType,\n        [],\n        function (ctx) {\n            return ctx.globals.heatmapDensity || 0;\n        }\n    ],\n    'line-progress': [\n        NumberType,\n        [],\n        function (ctx) {\n            return ctx.globals.lineProgress || 0;\n        }\n    ],\n    'accumulated': [\n        ValueType,\n        [],\n        function (ctx) {\n            return ctx.globals.accumulated === undefined ? null : ctx.globals.accumulated;\n        }\n    ],\n    '+': [\n        NumberType,\n        varargs(NumberType),\n        function (ctx, args) {\n            var result = 0;\n            for (var i = 0, list = args; i < list.length; i += 1) {\n                var arg = list[i];\n                result += arg.evaluate(ctx);\n            }\n            return result;\n        }\n    ],\n    '*': [\n        NumberType,\n        varargs(NumberType),\n        function (ctx, args) {\n            var result = 1;\n            for (var i = 0, list = args; i < list.length; i += 1) {\n                var arg = list[i];\n                result *= arg.evaluate(ctx);\n            }\n            return result;\n        }\n    ],\n    '-': {\n        type: NumberType,\n        overloads: [\n            [\n                [\n                    NumberType,\n                    NumberType\n                ],\n                function (ctx, ref) {\n                    var a = ref[0];\n                    var b = ref[1];\n                    return a.evaluate(ctx) - b.evaluate(ctx);\n                }\n            ],\n            [\n                [NumberType],\n                function (ctx, ref) {\n                    var a = ref[0];\n                    return -a.evaluate(ctx);\n                }\n            ]\n        ]\n    },\n    '/': [\n        NumberType,\n        [\n            NumberType,\n            NumberType\n        ],\n        function (ctx, ref) {\n            var a = ref[0];\n            var b = ref[1];\n            return a.evaluate(ctx) / b.evaluate(ctx);\n        }\n    ],\n    '%': [\n        NumberType,\n        [\n            NumberType,\n            NumberType\n        ],\n        function (ctx, ref) {\n            var a = ref[0];\n            var b = ref[1];\n            return a.evaluate(ctx) % b.evaluate(ctx);\n        }\n    ],\n    'ln2': [\n        NumberType,\n        [],\n        function () {\n            return Math.LN2;\n        }\n    ],\n    'pi': [\n        NumberType,\n        [],\n        function () {\n            return Math.PI;\n        }\n    ],\n    'e': [\n        NumberType,\n        [],\n        function () {\n            return Math.E;\n        }\n    ],\n    '^': [\n        NumberType,\n        [\n            NumberType,\n            NumberType\n        ],\n        function (ctx, ref) {\n            var b = ref[0];\n            var e = ref[1];\n            return Math.pow(b.evaluate(ctx), e.evaluate(ctx));\n        }\n    ],\n    'sqrt': [\n        NumberType,\n        [NumberType],\n        function (ctx, ref) {\n            var x = ref[0];\n            return Math.sqrt(x.evaluate(ctx));\n        }\n    ],\n    'log10': [\n        NumberType,\n        [NumberType],\n        function (ctx, ref) {\n            var n = ref[0];\n            return Math.log(n.evaluate(ctx)) / Math.LN10;\n        }\n    ],\n    'ln': [\n        NumberType,\n        [NumberType],\n        function (ctx, ref) {\n            var n = ref[0];\n            return Math.log(n.evaluate(ctx));\n        }\n    ],\n    'log2': [\n        NumberType,\n        [NumberType],\n        function (ctx, ref) {\n            var n = ref[0];\n            return Math.log(n.evaluate(ctx)) / Math.LN2;\n        }\n    ],\n    'sin': [\n        NumberType,\n        [NumberType],\n        function (ctx, ref) {\n            var n = ref[0];\n            return Math.sin(n.evaluate(ctx));\n        }\n    ],\n    'cos': [\n        NumberType,\n        [NumberType],\n        function (ctx, ref) {\n            var n = ref[0];\n            return Math.cos(n.evaluate(ctx));\n        }\n    ],\n    'tan': [\n        NumberType,\n        [NumberType],\n        function (ctx, ref) {\n            var n = ref[0];\n            return Math.tan(n.evaluate(ctx));\n        }\n    ],\n    'asin': [\n        NumberType,\n        [NumberType],\n        function (ctx, ref) {\n            var n = ref[0];\n            return Math.asin(n.evaluate(ctx));\n        }\n    ],\n    'acos': [\n        NumberType,\n        [NumberType],\n        function (ctx, ref) {\n            var n = ref[0];\n            return Math.acos(n.evaluate(ctx));\n        }\n    ],\n    'atan': [\n        NumberType,\n        [NumberType],\n        function (ctx, ref) {\n            var n = ref[0];\n            return Math.atan(n.evaluate(ctx));\n        }\n    ],\n    'min': [\n        NumberType,\n        varargs(NumberType),\n        function (ctx, args) {\n            return Math.min.apply(Math, args.map(function (arg) {\n                return arg.evaluate(ctx);\n            }));\n        }\n    ],\n    'max': [\n        NumberType,\n        varargs(NumberType),\n        function (ctx, args) {\n            return Math.max.apply(Math, args.map(function (arg) {\n                return arg.evaluate(ctx);\n            }));\n        }\n    ],\n    'abs': [\n        NumberType,\n        [NumberType],\n        function (ctx, ref) {\n            var n = ref[0];\n            return Math.abs(n.evaluate(ctx));\n        }\n    ],\n    'round': [\n        NumberType,\n        [NumberType],\n        function (ctx, ref) {\n            var n = ref[0];\n            var v = n.evaluate(ctx);\n            return v < 0 ? -Math.round(-v) : Math.round(v);\n        }\n    ],\n    'floor': [\n        NumberType,\n        [NumberType],\n        function (ctx, ref) {\n            var n = ref[0];\n            return Math.floor(n.evaluate(ctx));\n        }\n    ],\n    'ceil': [\n        NumberType,\n        [NumberType],\n        function (ctx, ref) {\n            var n = ref[0];\n            return Math.ceil(n.evaluate(ctx));\n        }\n    ],\n    'filter-==': [\n        BooleanType,\n        [\n            StringType,\n            ValueType\n        ],\n        function (ctx, ref) {\n            var k = ref[0];\n            var v = ref[1];\n            return ctx.properties()[k.value] === v.value;\n        }\n    ],\n    'filter-id-==': [\n        BooleanType,\n        [ValueType],\n        function (ctx, ref) {\n            var v = ref[0];\n            return ctx.id() === v.value;\n        }\n    ],\n    'filter-type-==': [\n        BooleanType,\n        [StringType],\n        function (ctx, ref) {\n            var v = ref[0];\n            return ctx.geometryType() === v.value;\n        }\n    ],\n    'filter-<': [\n        BooleanType,\n        [\n            StringType,\n            ValueType\n        ],\n        function (ctx, ref) {\n            var k = ref[0];\n            var v = ref[1];\n            var a = ctx.properties()[k.value];\n            var b = v.value;\n            return typeof a === typeof b && a < b;\n        }\n    ],\n    'filter-id-<': [\n        BooleanType,\n        [ValueType],\n        function (ctx, ref) {\n            var v = ref[0];\n            var a = ctx.id();\n            var b = v.value;\n            return typeof a === typeof b && a < b;\n        }\n    ],\n    'filter->': [\n        BooleanType,\n        [\n            StringType,\n            ValueType\n        ],\n        function (ctx, ref) {\n            var k = ref[0];\n            var v = ref[1];\n            var a = ctx.properties()[k.value];\n            var b = v.value;\n            return typeof a === typeof b && a > b;\n        }\n    ],\n    'filter-id->': [\n        BooleanType,\n        [ValueType],\n        function (ctx, ref) {\n            var v = ref[0];\n            var a = ctx.id();\n            var b = v.value;\n            return typeof a === typeof b && a > b;\n        }\n    ],\n    'filter-<=': [\n        BooleanType,\n        [\n            StringType,\n            ValueType\n        ],\n        function (ctx, ref) {\n            var k = ref[0];\n            var v = ref[1];\n            var a = ctx.properties()[k.value];\n            var b = v.value;\n            return typeof a === typeof b && a <= b;\n        }\n    ],\n    'filter-id-<=': [\n        BooleanType,\n        [ValueType],\n        function (ctx, ref) {\n            var v = ref[0];\n            var a = ctx.id();\n            var b = v.value;\n            return typeof a === typeof b && a <= b;\n        }\n    ],\n    'filter->=': [\n        BooleanType,\n        [\n            StringType,\n            ValueType\n        ],\n        function (ctx, ref) {\n            var k = ref[0];\n            var v = ref[1];\n            var a = ctx.properties()[k.value];\n            var b = v.value;\n            return typeof a === typeof b && a >= b;\n        }\n    ],\n    'filter-id->=': [\n        BooleanType,\n        [ValueType],\n        function (ctx, ref) {\n            var v = ref[0];\n            var a = ctx.id();\n            var b = v.value;\n            return typeof a === typeof b && a >= b;\n        }\n    ],\n    'filter-has': [\n        BooleanType,\n        [ValueType],\n        function (ctx, ref) {\n            var k = ref[0];\n            return k.value in ctx.properties();\n        }\n    ],\n    'filter-has-id': [\n        BooleanType,\n        [],\n        function (ctx) {\n            return ctx.id() !== null && ctx.id() !== undefined;\n        }\n    ],\n    'filter-type-in': [\n        BooleanType,\n        [array(StringType)],\n        function (ctx, ref) {\n            var v = ref[0];\n            return v.value.indexOf(ctx.geometryType()) >= 0;\n        }\n    ],\n    'filter-id-in': [\n        BooleanType,\n        [array(ValueType)],\n        function (ctx, ref) {\n            var v = ref[0];\n            return v.value.indexOf(ctx.id()) >= 0;\n        }\n    ],\n    'filter-in-small': [\n        BooleanType,\n        [\n            StringType,\n            array(ValueType)\n        ],\n        function (ctx, ref) {\n            var k = ref[0];\n            var v = ref[1];\n            return v.value.indexOf(ctx.properties()[k.value]) >= 0;\n        }\n    ],\n    'filter-in-large': [\n        BooleanType,\n        [\n            StringType,\n            array(ValueType)\n        ],\n        function (ctx, ref) {\n            var k = ref[0];\n            var v = ref[1];\n            return binarySearch(ctx.properties()[k.value], v.value, 0, v.value.length - 1);\n        }\n    ],\n    'all': {\n        type: BooleanType,\n        overloads: [\n            [\n                [\n                    BooleanType,\n                    BooleanType\n                ],\n                function (ctx, ref) {\n                    var a = ref[0];\n                    var b = ref[1];\n                    return a.evaluate(ctx) && b.evaluate(ctx);\n                }\n            ],\n            [\n                varargs(BooleanType),\n                function (ctx, args) {\n                    for (var i = 0, list = args; i < list.length; i += 1) {\n                        var arg = list[i];\n                        if (!arg.evaluate(ctx)) {\n                            return false;\n                        }\n                    }\n                    return true;\n                }\n            ]\n        ]\n    },\n    'any': {\n        type: BooleanType,\n        overloads: [\n            [\n                [\n                    BooleanType,\n                    BooleanType\n                ],\n                function (ctx, ref) {\n                    var a = ref[0];\n                    var b = ref[1];\n                    return a.evaluate(ctx) || b.evaluate(ctx);\n                }\n            ],\n            [\n                varargs(BooleanType),\n                function (ctx, args) {\n                    for (var i = 0, list = args; i < list.length; i += 1) {\n                        var arg = list[i];\n                        if (arg.evaluate(ctx)) {\n                            return true;\n                        }\n                    }\n                    return false;\n                }\n            ]\n        ]\n    },\n    '!': [\n        BooleanType,\n        [BooleanType],\n        function (ctx, ref) {\n            var b = ref[0];\n            return !b.evaluate(ctx);\n        }\n    ],\n    'is-supported-script': [\n        BooleanType,\n        [StringType],\n        function (ctx, ref) {\n            var s = ref[0];\n            var isSupportedScript = ctx.globals && ctx.globals.isSupportedScript;\n            if (isSupportedScript) {\n                return isSupportedScript(s.evaluate(ctx));\n            }\n            return true;\n        }\n    ],\n    'upcase': [\n        StringType,\n        [StringType],\n        function (ctx, ref) {\n            var s = ref[0];\n            return s.evaluate(ctx).toUpperCase();\n        }\n    ],\n    'downcase': [\n        StringType,\n        [StringType],\n        function (ctx, ref) {\n            var s = ref[0];\n            return s.evaluate(ctx).toLowerCase();\n        }\n    ],\n    'concat': [\n        StringType,\n        varargs(ValueType),\n        function (ctx, args) {\n            return args.map(function (arg) {\n                return toString$1(arg.evaluate(ctx));\n            }).join('');\n        }\n    ],\n    'resolved-locale': [\n        StringType,\n        [CollatorType],\n        function (ctx, ref) {\n            var collator = ref[0];\n            return collator.evaluate(ctx).resolvedLocale();\n        }\n    ]\n});\n\nfunction success(value) {\n    return {\n        result: 'success',\n        value: value\n    };\n}\nfunction error(value) {\n    return {\n        result: 'error',\n        value: value\n    };\n}\n\nfunction supportsPropertyExpression(spec) {\n    return spec['property-type'] === 'data-driven' || spec['property-type'] === 'cross-faded-data-driven';\n}\nfunction supportsZoomExpression(spec) {\n    return !!spec.expression && spec.expression.parameters.indexOf('zoom') > -1;\n}\nfunction supportsInterpolation(spec) {\n    return !!spec.expression && spec.expression.interpolated;\n}\n\nfunction getType(val) {\n    if (val instanceof Number) {\n        return 'number';\n    } else if (val instanceof String) {\n        return 'string';\n    } else if (val instanceof Boolean) {\n        return 'boolean';\n    } else if (Array.isArray(val)) {\n        return 'array';\n    } else if (val === null) {\n        return 'null';\n    } else {\n        return typeof val;\n    }\n}\n\nfunction isFunction(value) {\n    return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\nfunction identityFunction(x) {\n    return x;\n}\nfunction createFunction(parameters, propertySpec) {\n    var isColor = propertySpec.type === 'color';\n    var zoomAndFeatureDependent = parameters.stops && typeof parameters.stops[0][0] === 'object';\n    var featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n    var zoomDependent = zoomAndFeatureDependent || !featureDependent;\n    var type = parameters.type || (supportsInterpolation(propertySpec) ? 'exponential' : 'interval');\n    if (isColor) {\n        parameters = extend$1({}, parameters);\n        if (parameters.stops) {\n            parameters.stops = parameters.stops.map(function (stop) {\n                return [\n                    stop[0],\n                    Color.parse(stop[1])\n                ];\n            });\n        }\n        if (parameters.default) {\n            parameters.default = Color.parse(parameters.default);\n        } else {\n            parameters.default = Color.parse(propertySpec.default);\n        }\n    }\n    if (parameters.colorSpace && parameters.colorSpace !== 'rgb' && !colorSpaces[parameters.colorSpace]) {\n        throw new Error('Unknown color space: ' + parameters.colorSpace);\n    }\n    var innerFun;\n    var hashedStops;\n    var categoricalKeyType;\n    if (type === 'exponential') {\n        innerFun = evaluateExponentialFunction;\n    } else if (type === 'interval') {\n        innerFun = evaluateIntervalFunction;\n    } else if (type === 'categorical') {\n        innerFun = evaluateCategoricalFunction;\n        hashedStops = Object.create(null);\n        for (var i = 0, list = parameters.stops; i < list.length; i += 1) {\n            var stop = list[i];\n            hashedStops[stop[0]] = stop[1];\n        }\n        categoricalKeyType = typeof parameters.stops[0][0];\n    } else if (type === 'identity') {\n        innerFun = evaluateIdentityFunction;\n    } else {\n        throw new Error('Unknown function type \"' + type + '\"');\n    }\n    if (zoomAndFeatureDependent) {\n        var featureFunctions = {};\n        var zoomStops = [];\n        for (var s = 0; s < parameters.stops.length; s++) {\n            var stop$1 = parameters.stops[s];\n            var zoom = stop$1[0].zoom;\n            if (featureFunctions[zoom] === undefined) {\n                featureFunctions[zoom] = {\n                    zoom: zoom,\n                    type: parameters.type,\n                    property: parameters.property,\n                    default: parameters.default,\n                    stops: []\n                };\n                zoomStops.push(zoom);\n            }\n            featureFunctions[zoom].stops.push([\n                stop$1[0].value,\n                stop$1[1]\n            ]);\n        }\n        var featureFunctionStops = [];\n        for (var i$1 = 0, list$1 = zoomStops; i$1 < list$1.length; i$1 += 1) {\n            var z = list$1[i$1];\n            featureFunctionStops.push([\n                featureFunctions[z].zoom,\n                createFunction(featureFunctions[z], propertySpec)\n            ]);\n        }\n        var interpolationType = { name: 'linear' };\n        return {\n            kind: 'composite',\n            interpolationType: interpolationType,\n            interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n            zoomStops: featureFunctionStops.map(function (s) {\n                return s[0];\n            }),\n            evaluate: function evaluate(ref, properties) {\n                var zoom = ref.zoom;\n                return evaluateExponentialFunction({\n                    stops: featureFunctionStops,\n                    base: parameters.base\n                }, propertySpec, zoom).evaluate(zoom, properties);\n            }\n        };\n    } else if (zoomDependent) {\n        var interpolationType$1 = type === 'exponential' ? {\n            name: 'exponential',\n            base: parameters.base !== undefined ? parameters.base : 1\n        } : null;\n        return {\n            kind: 'camera',\n            interpolationType: interpolationType$1,\n            interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType$1),\n            zoomStops: parameters.stops.map(function (s) {\n                return s[0];\n            }),\n            evaluate: function (ref) {\n                var zoom = ref.zoom;\n                return innerFun(parameters, propertySpec, zoom, hashedStops, categoricalKeyType);\n            }\n        };\n    } else {\n        return {\n            kind: 'source',\n            evaluate: function evaluate(_, feature) {\n                var value = feature && feature.properties ? feature.properties[parameters.property] : undefined;\n                if (value === undefined) {\n                    return coalesce(parameters.default, propertySpec.default);\n                }\n                return innerFun(parameters, propertySpec, value, hashedStops, categoricalKeyType);\n            }\n        };\n    }\n}\nfunction coalesce(a, b, c) {\n    if (a !== undefined) {\n        return a;\n    }\n    if (b !== undefined) {\n        return b;\n    }\n    if (c !== undefined) {\n        return c;\n    }\n}\nfunction evaluateCategoricalFunction(parameters, propertySpec, input, hashedStops, keyType) {\n    var evaluated = typeof input === keyType ? hashedStops[input] : undefined;\n    return coalesce(evaluated, parameters.default, propertySpec.default);\n}\nfunction evaluateIntervalFunction(parameters, propertySpec, input) {\n    if (getType(input) !== 'number') {\n        return coalesce(parameters.default, propertySpec.default);\n    }\n    var n = parameters.stops.length;\n    if (n === 1) {\n        return parameters.stops[0][1];\n    }\n    if (input <= parameters.stops[0][0]) {\n        return parameters.stops[0][1];\n    }\n    if (input >= parameters.stops[n - 1][0]) {\n        return parameters.stops[n - 1][1];\n    }\n    var index = findStopLessThanOrEqualTo(parameters.stops.map(function (stop) {\n        return stop[0];\n    }), input);\n    return parameters.stops[index][1];\n}\nfunction evaluateExponentialFunction(parameters, propertySpec, input) {\n    var base = parameters.base !== undefined ? parameters.base : 1;\n    if (getType(input) !== 'number') {\n        return coalesce(parameters.default, propertySpec.default);\n    }\n    var n = parameters.stops.length;\n    if (n === 1) {\n        return parameters.stops[0][1];\n    }\n    if (input <= parameters.stops[0][0]) {\n        return parameters.stops[0][1];\n    }\n    if (input >= parameters.stops[n - 1][0]) {\n        return parameters.stops[n - 1][1];\n    }\n    var index = findStopLessThanOrEqualTo(parameters.stops.map(function (stop) {\n        return stop[0];\n    }), input);\n    var t = interpolationFactor(input, base, parameters.stops[index][0], parameters.stops[index + 1][0]);\n    var outputLower = parameters.stops[index][1];\n    var outputUpper = parameters.stops[index + 1][1];\n    var interp = interpolate[propertySpec.type] || identityFunction;\n    if (parameters.colorSpace && parameters.colorSpace !== 'rgb') {\n        var colorspace = colorSpaces[parameters.colorSpace];\n        interp = function (a, b) {\n            return colorspace.reverse(colorspace.interpolate(colorspace.forward(a), colorspace.forward(b), t));\n        };\n    }\n    if (typeof outputLower.evaluate === 'function') {\n        return {\n            evaluate: function evaluate() {\n                var args = [], len = arguments.length;\n                while (len--)\n                    args[len] = arguments[len];\n                var evaluatedLower = outputLower.evaluate.apply(undefined, args);\n                var evaluatedUpper = outputUpper.evaluate.apply(undefined, args);\n                if (evaluatedLower === undefined || evaluatedUpper === undefined) {\n                    return undefined;\n                }\n                return interp(evaluatedLower, evaluatedUpper, t);\n            }\n        };\n    }\n    return interp(outputLower, outputUpper, t);\n}\nfunction evaluateIdentityFunction(parameters, propertySpec, input) {\n    if (propertySpec.type === 'color') {\n        input = Color.parse(input);\n    } else if (propertySpec.type === 'formatted') {\n        input = Formatted.fromString(input.toString());\n    } else if (propertySpec.type === 'resolvedImage') {\n        input = ResolvedImage.fromString(input.toString());\n    } else if (getType(input) !== propertySpec.type && (propertySpec.type !== 'enum' || !propertySpec.values[input])) {\n        input = undefined;\n    }\n    return coalesce(input, parameters.default, propertySpec.default);\n}\nfunction interpolationFactor(input, base, lowerValue, upperValue) {\n    var difference = upperValue - lowerValue;\n    var progress = input - lowerValue;\n    if (difference === 0) {\n        return 0;\n    } else if (base === 1) {\n        return progress / difference;\n    } else {\n        return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n    }\n}\n\nvar StyleExpression = function StyleExpression(expression, propertySpec) {\n    this.expression = expression;\n    this._warningHistory = {};\n    this._evaluator = new EvaluationContext();\n    this._defaultValue = propertySpec ? getDefaultValue(propertySpec) : null;\n    this._enumValues = propertySpec && propertySpec.type === 'enum' ? propertySpec.values : null;\n};\nStyleExpression.prototype.evaluateWithoutErrorHandling = function evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n    this._evaluator.globals = globals;\n    this._evaluator.feature = feature;\n    this._evaluator.featureState = featureState;\n    this._evaluator.canonical = canonical;\n    this._evaluator.availableImages = availableImages || null;\n    this._evaluator.formattedSection = formattedSection;\n    return this.expression.evaluate(this._evaluator);\n};\nStyleExpression.prototype.evaluate = function evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n    this._evaluator.globals = globals;\n    this._evaluator.feature = feature || null;\n    this._evaluator.featureState = featureState || null;\n    this._evaluator.canonical = canonical;\n    this._evaluator.availableImages = availableImages || null;\n    this._evaluator.formattedSection = formattedSection || null;\n    try {\n        var val = this.expression.evaluate(this._evaluator);\n        if (val === null || val === undefined || typeof val === 'number' && val !== val) {\n            return this._defaultValue;\n        }\n        if (this._enumValues && !(val in this._enumValues)) {\n            throw new RuntimeError('Expected value to be one of ' + Object.keys(this._enumValues).map(function (v) {\n                return JSON.stringify(v);\n            }).join(', ') + ', but found ' + JSON.stringify(val) + ' instead.');\n        }\n        return val;\n    } catch (e) {\n        if (!this._warningHistory[e.message]) {\n            this._warningHistory[e.message] = true;\n            if (typeof console !== 'undefined') {\n                console.warn(e.message);\n            }\n        }\n        return this._defaultValue;\n    }\n};\nfunction isExpression(expression) {\n    return Array.isArray(expression) && expression.length > 0 && typeof expression[0] === 'string' && expression[0] in expressions;\n}\nfunction createExpression(expression, propertySpec) {\n    var parser = new ParsingContext(expressions, [], propertySpec ? getExpectedType(propertySpec) : undefined);\n    var parsed = parser.parse(expression, undefined, undefined, undefined, propertySpec && propertySpec.type === 'string' ? { typeAnnotation: 'coerce' } : undefined);\n    if (!parsed) {\n        return error(parser.errors);\n    }\n    return success(new StyleExpression(parsed, propertySpec));\n}\nvar ZoomConstantExpression = function ZoomConstantExpression(kind, expression) {\n    this.kind = kind;\n    this._styleExpression = expression;\n    this.isStateDependent = kind !== 'constant' && !isStateConstant(expression.expression);\n};\nZoomConstantExpression.prototype.evaluateWithoutErrorHandling = function evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n    return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n};\nZoomConstantExpression.prototype.evaluate = function evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n    return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n};\nvar ZoomDependentExpression = function ZoomDependentExpression(kind, expression, zoomStops, interpolationType) {\n    this.kind = kind;\n    this.zoomStops = zoomStops;\n    this._styleExpression = expression;\n    this.isStateDependent = kind !== 'camera' && !isStateConstant(expression.expression);\n    this.interpolationType = interpolationType;\n};\nZoomDependentExpression.prototype.evaluateWithoutErrorHandling = function evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n    return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n};\nZoomDependentExpression.prototype.evaluate = function evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n    return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n};\nZoomDependentExpression.prototype.interpolationFactor = function interpolationFactor(input, lower, upper) {\n    if (this.interpolationType) {\n        return Interpolate.interpolationFactor(this.interpolationType, input, lower, upper);\n    } else {\n        return 0;\n    }\n};\nfunction createPropertyExpression(expression, propertySpec) {\n    expression = createExpression(expression, propertySpec);\n    if (expression.result === 'error') {\n        return expression;\n    }\n    var parsed = expression.value.expression;\n    var isFeatureConstant$1 = isFeatureConstant(parsed);\n    if (!isFeatureConstant$1 && !supportsPropertyExpression(propertySpec)) {\n        return error([new ParsingError('', 'data expressions not supported')]);\n    }\n    var isZoomConstant = isGlobalPropertyConstant(parsed, ['zoom']);\n    if (!isZoomConstant && !supportsZoomExpression(propertySpec)) {\n        return error([new ParsingError('', 'zoom expressions not supported')]);\n    }\n    var zoomCurve = findZoomCurve(parsed);\n    if (!zoomCurve && !isZoomConstant) {\n        return error([new ParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')]);\n    } else if (zoomCurve instanceof ParsingError) {\n        return error([zoomCurve]);\n    } else if (zoomCurve instanceof Interpolate && !supportsInterpolation(propertySpec)) {\n        return error([new ParsingError('', '\"interpolate\" expressions cannot be used with this property')]);\n    }\n    if (!zoomCurve) {\n        return success(isFeatureConstant$1 ? new ZoomConstantExpression('constant', expression.value) : new ZoomConstantExpression('source', expression.value));\n    }\n    var interpolationType = zoomCurve instanceof Interpolate ? zoomCurve.interpolation : undefined;\n    return success(isFeatureConstant$1 ? new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType) : new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType));\n}\nvar StylePropertyFunction = function StylePropertyFunction(parameters, specification) {\n    this._parameters = parameters;\n    this._specification = specification;\n    extend$1(this, createFunction(this._parameters, this._specification));\n};\nStylePropertyFunction.deserialize = function deserialize(serialized) {\n    return new StylePropertyFunction(serialized._parameters, serialized._specification);\n};\nStylePropertyFunction.serialize = function serialize(input) {\n    return {\n        _parameters: input._parameters,\n        _specification: input._specification\n    };\n};\nfunction normalizePropertyExpression(value, specification) {\n    if (isFunction(value)) {\n        return new StylePropertyFunction(value, specification);\n    } else if (isExpression(value)) {\n        var expression = createPropertyExpression(value, specification);\n        if (expression.result === 'error') {\n            throw new Error(expression.value.map(function (err) {\n                return err.key + ': ' + err.message;\n            }).join(', '));\n        }\n        return expression.value;\n    } else {\n        var constant = value;\n        if (typeof value === 'string' && specification.type === 'color') {\n            constant = Color.parse(value);\n        }\n        return {\n            kind: 'constant',\n            evaluate: function () {\n                return constant;\n            }\n        };\n    }\n}\nfunction findZoomCurve(expression) {\n    var result = null;\n    if (expression instanceof Let) {\n        result = findZoomCurve(expression.result);\n    } else if (expression instanceof Coalesce) {\n        for (var i = 0, list = expression.args; i < list.length; i += 1) {\n            var arg = list[i];\n            result = findZoomCurve(arg);\n            if (result) {\n                break;\n            }\n        }\n    } else if ((expression instanceof Step || expression instanceof Interpolate) && expression.input instanceof CompoundExpression && expression.input.name === 'zoom') {\n        result = expression;\n    }\n    if (result instanceof ParsingError) {\n        return result;\n    }\n    expression.eachChild(function (child) {\n        var childResult = findZoomCurve(child);\n        if (childResult instanceof ParsingError) {\n            result = childResult;\n        } else if (!result && childResult) {\n            result = new ParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.');\n        } else if (result && childResult && result !== childResult) {\n            result = new ParsingError('', 'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.');\n        }\n    });\n    return result;\n}\nfunction getExpectedType(spec) {\n    var types = {\n        color: ColorType,\n        string: StringType,\n        number: NumberType,\n        enum: StringType,\n        boolean: BooleanType,\n        formatted: FormattedType,\n        resolvedImage: ResolvedImageType\n    };\n    if (spec.type === 'array') {\n        return array(types[spec.value] || ValueType, spec.length);\n    }\n    return types[spec.type];\n}\nfunction getDefaultValue(spec) {\n    if (spec.type === 'color' && isFunction(spec.default)) {\n        return new Color(0, 0, 0, 0);\n    } else if (spec.type === 'color') {\n        return Color.parse(spec.default) || null;\n    } else if (spec.default === undefined) {\n        return null;\n    } else {\n        return spec.default;\n    }\n}\n\nfunction validateObject(options) {\n    var key = options.key;\n    var object = options.value;\n    var elementSpecs = options.valueSpec || {};\n    var elementValidators = options.objectElementValidators || {};\n    var style = options.style;\n    var styleSpec = options.styleSpec;\n    var errors = [];\n    var type = getType(object);\n    if (type !== 'object') {\n        return [new ValidationError(key, object, 'object expected, ' + type + ' found')];\n    }\n    for (var objectKey in object) {\n        var elementSpecKey = objectKey.split('.')[0];\n        var elementSpec = elementSpecs[elementSpecKey] || elementSpecs['*'];\n        var validateElement = void 0;\n        if (elementValidators[elementSpecKey]) {\n            validateElement = elementValidators[elementSpecKey];\n        } else if (elementSpecs[elementSpecKey]) {\n            validateElement = validate;\n        } else if (elementValidators['*']) {\n            validateElement = elementValidators['*'];\n        } else if (elementSpecs['*']) {\n            validateElement = validate;\n        } else {\n            errors.push(new ValidationError(key, object[objectKey], 'unknown property \"' + objectKey + '\"'));\n            continue;\n        }\n        errors = errors.concat(validateElement({\n            key: (key ? key + '.' : key) + objectKey,\n            value: object[objectKey],\n            valueSpec: elementSpec,\n            style: style,\n            styleSpec: styleSpec,\n            object: object,\n            objectKey: objectKey\n        }, object));\n    }\n    for (var elementSpecKey$1 in elementSpecs) {\n        if (elementValidators[elementSpecKey$1]) {\n            continue;\n        }\n        if (elementSpecs[elementSpecKey$1].required && elementSpecs[elementSpecKey$1]['default'] === undefined && object[elementSpecKey$1] === undefined) {\n            errors.push(new ValidationError(key, object, 'missing required property \"' + elementSpecKey$1 + '\"'));\n        }\n    }\n    return errors;\n}\n\nfunction validateArray(options) {\n    var array = options.value;\n    var arraySpec = options.valueSpec;\n    var style = options.style;\n    var styleSpec = options.styleSpec;\n    var key = options.key;\n    var validateArrayElement = options.arrayElementValidator || validate;\n    if (getType(array) !== 'array') {\n        return [new ValidationError(key, array, 'array expected, ' + getType(array) + ' found')];\n    }\n    if (arraySpec.length && array.length !== arraySpec.length) {\n        return [new ValidationError(key, array, 'array length ' + arraySpec.length + ' expected, length ' + array.length + ' found')];\n    }\n    if (arraySpec['min-length'] && array.length < arraySpec['min-length']) {\n        return [new ValidationError(key, array, 'array length at least ' + arraySpec['min-length'] + ' expected, length ' + array.length + ' found')];\n    }\n    var arrayElementSpec = {\n        'type': arraySpec.value,\n        'values': arraySpec.values\n    };\n    if (styleSpec.$version < 7) {\n        arrayElementSpec.function = arraySpec.function;\n    }\n    if (getType(arraySpec.value) === 'object') {\n        arrayElementSpec = arraySpec.value;\n    }\n    var errors = [];\n    for (var i = 0; i < array.length; i++) {\n        errors = errors.concat(validateArrayElement({\n            array: array,\n            arrayIndex: i,\n            value: array[i],\n            valueSpec: arrayElementSpec,\n            style: style,\n            styleSpec: styleSpec,\n            key: key + '[' + i + ']'\n        }));\n    }\n    return errors;\n}\n\nfunction validateNumber(options) {\n    var key = options.key;\n    var value = options.value;\n    var valueSpec = options.valueSpec;\n    var type = getType(value);\n    if (type === 'number' && value !== value) {\n        type = 'NaN';\n    }\n    if (type !== 'number') {\n        return [new ValidationError(key, value, 'number expected, ' + type + ' found')];\n    }\n    if ('minimum' in valueSpec && value < valueSpec.minimum) {\n        return [new ValidationError(key, value, value + ' is less than the minimum value ' + valueSpec.minimum)];\n    }\n    if ('maximum' in valueSpec && value > valueSpec.maximum) {\n        return [new ValidationError(key, value, value + ' is greater than the maximum value ' + valueSpec.maximum)];\n    }\n    return [];\n}\n\nfunction validateFunction(options) {\n    var functionValueSpec = options.valueSpec;\n    var functionType = unbundle(options.value.type);\n    var stopKeyType;\n    var stopDomainValues = {};\n    var previousStopDomainValue;\n    var previousStopDomainZoom;\n    var isZoomFunction = functionType !== 'categorical' && options.value.property === undefined;\n    var isPropertyFunction = !isZoomFunction;\n    var isZoomAndPropertyFunction = getType(options.value.stops) === 'array' && getType(options.value.stops[0]) === 'array' && getType(options.value.stops[0][0]) === 'object';\n    var errors = validateObject({\n        key: options.key,\n        value: options.value,\n        valueSpec: options.styleSpec.function,\n        style: options.style,\n        styleSpec: options.styleSpec,\n        objectElementValidators: {\n            stops: validateFunctionStops,\n            default: validateFunctionDefault\n        }\n    });\n    if (functionType === 'identity' && isZoomFunction) {\n        errors.push(new ValidationError(options.key, options.value, 'missing required property \"property\"'));\n    }\n    if (functionType !== 'identity' && !options.value.stops) {\n        errors.push(new ValidationError(options.key, options.value, 'missing required property \"stops\"'));\n    }\n    if (functionType === 'exponential' && options.valueSpec.expression && !supportsInterpolation(options.valueSpec)) {\n        errors.push(new ValidationError(options.key, options.value, 'exponential functions not supported'));\n    }\n    if (options.styleSpec.$version >= 8) {\n        if (isPropertyFunction && !supportsPropertyExpression(options.valueSpec)) {\n            errors.push(new ValidationError(options.key, options.value, 'property functions not supported'));\n        } else if (isZoomFunction && !supportsZoomExpression(options.valueSpec)) {\n            errors.push(new ValidationError(options.key, options.value, 'zoom functions not supported'));\n        }\n    }\n    if ((functionType === 'categorical' || isZoomAndPropertyFunction) && options.value.property === undefined) {\n        errors.push(new ValidationError(options.key, options.value, '\"property\" property is required'));\n    }\n    return errors;\n    function validateFunctionStops(options) {\n        if (functionType === 'identity') {\n            return [new ValidationError(options.key, options.value, 'identity function may not have a \"stops\" property')];\n        }\n        var errors = [];\n        var value = options.value;\n        errors = errors.concat(validateArray({\n            key: options.key,\n            value: value,\n            valueSpec: options.valueSpec,\n            style: options.style,\n            styleSpec: options.styleSpec,\n            arrayElementValidator: validateFunctionStop\n        }));\n        if (getType(value) === 'array' && value.length === 0) {\n            errors.push(new ValidationError(options.key, value, 'array must have at least one stop'));\n        }\n        return errors;\n    }\n    function validateFunctionStop(options) {\n        var errors = [];\n        var value = options.value;\n        var key = options.key;\n        if (getType(value) !== 'array') {\n            return [new ValidationError(key, value, 'array expected, ' + getType(value) + ' found')];\n        }\n        if (value.length !== 2) {\n            return [new ValidationError(key, value, 'array length 2 expected, length ' + value.length + ' found')];\n        }\n        if (isZoomAndPropertyFunction) {\n            if (getType(value[0]) !== 'object') {\n                return [new ValidationError(key, value, 'object expected, ' + getType(value[0]) + ' found')];\n            }\n            if (value[0].zoom === undefined) {\n                return [new ValidationError(key, value, 'object stop key must have zoom')];\n            }\n            if (value[0].value === undefined) {\n                return [new ValidationError(key, value, 'object stop key must have value')];\n            }\n            if (previousStopDomainZoom && previousStopDomainZoom > unbundle(value[0].zoom)) {\n                return [new ValidationError(key, value[0].zoom, 'stop zoom values must appear in ascending order')];\n            }\n            if (unbundle(value[0].zoom) !== previousStopDomainZoom) {\n                previousStopDomainZoom = unbundle(value[0].zoom);\n                previousStopDomainValue = undefined;\n                stopDomainValues = {};\n            }\n            errors = errors.concat(validateObject({\n                key: key + '[0]',\n                value: value[0],\n                valueSpec: { zoom: {} },\n                style: options.style,\n                styleSpec: options.styleSpec,\n                objectElementValidators: {\n                    zoom: validateNumber,\n                    value: validateStopDomainValue\n                }\n            }));\n        } else {\n            errors = errors.concat(validateStopDomainValue({\n                key: key + '[0]',\n                value: value[0],\n                valueSpec: {},\n                style: options.style,\n                styleSpec: options.styleSpec\n            }, value));\n        }\n        if (isExpression(deepUnbundle(value[1]))) {\n            return errors.concat([new ValidationError(key + '[1]', value[1], 'expressions are not allowed in function stops.')]);\n        }\n        return errors.concat(validate({\n            key: key + '[1]',\n            value: value[1],\n            valueSpec: functionValueSpec,\n            style: options.style,\n            styleSpec: options.styleSpec\n        }));\n    }\n    function validateStopDomainValue(options, stop) {\n        var type = getType(options.value);\n        var value = unbundle(options.value);\n        var reportValue = options.value !== null ? options.value : stop;\n        if (!stopKeyType) {\n            stopKeyType = type;\n        } else if (type !== stopKeyType) {\n            return [new ValidationError(options.key, reportValue, type + ' stop domain type must match previous stop domain type ' + stopKeyType)];\n        }\n        if (type !== 'number' && type !== 'string' && type !== 'boolean') {\n            return [new ValidationError(options.key, reportValue, 'stop domain value must be a number, string, or boolean')];\n        }\n        if (type !== 'number' && functionType !== 'categorical') {\n            var message = 'number expected, ' + type + ' found';\n            if (supportsPropertyExpression(functionValueSpec) && functionType === undefined) {\n                message += '\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.';\n            }\n            return [new ValidationError(options.key, reportValue, message)];\n        }\n        if (functionType === 'categorical' && type === 'number' && (!isFinite(value) || Math.floor(value) !== value)) {\n            return [new ValidationError(options.key, reportValue, 'integer expected, found ' + value)];\n        }\n        if (functionType !== 'categorical' && type === 'number' && previousStopDomainValue !== undefined && value < previousStopDomainValue) {\n            return [new ValidationError(options.key, reportValue, 'stop domain values must appear in ascending order')];\n        } else {\n            previousStopDomainValue = value;\n        }\n        if (functionType === 'categorical' && value in stopDomainValues) {\n            return [new ValidationError(options.key, reportValue, 'stop domain values must be unique')];\n        } else {\n            stopDomainValues[value] = true;\n        }\n        return [];\n    }\n    function validateFunctionDefault(options) {\n        return validate({\n            key: options.key,\n            value: options.value,\n            valueSpec: functionValueSpec,\n            style: options.style,\n            styleSpec: options.styleSpec\n        });\n    }\n}\n\nfunction validateExpression(options) {\n    var expression = (options.expressionContext === 'property' ? createPropertyExpression : createExpression)(deepUnbundle(options.value), options.valueSpec);\n    if (expression.result === 'error') {\n        return expression.value.map(function (error) {\n            return new ValidationError('' + options.key + error.key, options.value, error.message);\n        });\n    }\n    var expressionObj = expression.value.expression || expression.value._styleExpression.expression;\n    if (options.expressionContext === 'property' && options.propertyKey === 'text-font' && !expressionObj.outputDefined()) {\n        return [new ValidationError(options.key, options.value, 'Invalid data expression for \"' + options.propertyKey + '\". Output values must be contained as literals within the expression.')];\n    }\n    if (options.expressionContext === 'property' && options.propertyType === 'layout' && !isStateConstant(expressionObj)) {\n        return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with layout properties.')];\n    }\n    if (options.expressionContext === 'filter' && !isStateConstant(expressionObj)) {\n        return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with filters.')];\n    }\n    if (options.expressionContext && options.expressionContext.indexOf('cluster') === 0) {\n        if (!isGlobalPropertyConstant(expressionObj, [\n                'zoom',\n                'feature-state'\n            ])) {\n            return [new ValidationError(options.key, options.value, '\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];\n        }\n        if (options.expressionContext === 'cluster-initial' && !isFeatureConstant(expressionObj)) {\n            return [new ValidationError(options.key, options.value, 'Feature data expressions are not supported with initial expression part of cluster properties.')];\n        }\n    }\n    return [];\n}\n\nfunction validateBoolean(options) {\n    var value = options.value;\n    var key = options.key;\n    var type = getType(value);\n    if (type !== 'boolean') {\n        return [new ValidationError(key, value, 'boolean expected, ' + type + ' found')];\n    }\n    return [];\n}\n\nfunction validateColor(options) {\n    var key = options.key;\n    var value = options.value;\n    var type = getType(value);\n    if (type !== 'string') {\n        return [new ValidationError(key, value, 'color expected, ' + type + ' found')];\n    }\n    if (csscolorparser_1(value) === null) {\n        return [new ValidationError(key, value, 'color expected, \"' + value + '\" found')];\n    }\n    return [];\n}\n\nfunction validateEnum(options) {\n    var key = options.key;\n    var value = options.value;\n    var valueSpec = options.valueSpec;\n    var errors = [];\n    if (Array.isArray(valueSpec.values)) {\n        if (valueSpec.values.indexOf(unbundle(value)) === -1) {\n            errors.push(new ValidationError(key, value, 'expected one of [' + valueSpec.values.join(', ') + '], ' + JSON.stringify(value) + ' found'));\n        }\n    } else {\n        if (Object.keys(valueSpec.values).indexOf(unbundle(value)) === -1) {\n            errors.push(new ValidationError(key, value, 'expected one of [' + Object.keys(valueSpec.values).join(', ') + '], ' + JSON.stringify(value) + ' found'));\n        }\n    }\n    return errors;\n}\n\nfunction isExpressionFilter(filter) {\n    if (filter === true || filter === false) {\n        return true;\n    }\n    if (!Array.isArray(filter) || filter.length === 0) {\n        return false;\n    }\n    switch (filter[0]) {\n    case 'has':\n        return filter.length >= 2 && filter[1] !== '$id' && filter[1] !== '$type';\n    case 'in':\n        return filter.length >= 3 && (typeof filter[1] !== 'string' || Array.isArray(filter[2]));\n    case '!in':\n    case '!has':\n    case 'none':\n        return false;\n    case '==':\n    case '!=':\n    case '>':\n    case '>=':\n    case '<':\n    case '<=':\n        return filter.length !== 3 || (Array.isArray(filter[1]) || Array.isArray(filter[2]));\n    case 'any':\n    case 'all':\n        for (var i = 0, list = filter.slice(1); i < list.length; i += 1) {\n            var f = list[i];\n            if (!isExpressionFilter(f) && typeof f !== 'boolean') {\n                return false;\n            }\n        }\n        return true;\n    default:\n        return true;\n    }\n}\nvar filterSpec = {\n    'type': 'boolean',\n    'default': false,\n    'transition': false,\n    'property-type': 'data-driven',\n    'expression': {\n        'interpolated': false,\n        'parameters': [\n            'zoom',\n            'feature'\n        ]\n    }\n};\nfunction createFilter(filter) {\n    if (filter === null || filter === undefined) {\n        return {\n            filter: function () {\n                return true;\n            },\n            needGeometry: false\n        };\n    }\n    if (!isExpressionFilter(filter)) {\n        filter = convertFilter(filter);\n    }\n    var compiled = createExpression(filter, filterSpec);\n    if (compiled.result === 'error') {\n        throw new Error(compiled.value.map(function (err) {\n            return err.key + ': ' + err.message;\n        }).join(', '));\n    } else {\n        var needGeometry = geometryNeeded(filter);\n        return {\n            filter: function (globalProperties, feature, canonical) {\n                return compiled.value.evaluate(globalProperties, feature, {}, canonical);\n            },\n            needGeometry: needGeometry\n        };\n    }\n}\nfunction compare(a, b) {\n    return a < b ? -1 : a > b ? 1 : 0;\n}\nfunction geometryNeeded(filter) {\n    if (!Array.isArray(filter)) {\n        return false;\n    }\n    if (filter[0] === 'within') {\n        return true;\n    }\n    for (var index = 1; index < filter.length; index++) {\n        if (geometryNeeded(filter[index])) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction convertFilter(filter) {\n    if (!filter) {\n        return true;\n    }\n    var op = filter[0];\n    if (filter.length <= 1) {\n        return op !== 'any';\n    }\n    var converted = op === '==' ? convertComparisonOp(filter[1], filter[2], '==') : op === '!=' ? convertNegation(convertComparisonOp(filter[1], filter[2], '==')) : op === '<' || op === '>' || op === '<=' || op === '>=' ? convertComparisonOp(filter[1], filter[2], op) : op === 'any' ? convertDisjunctionOp(filter.slice(1)) : op === 'all' ? ['all'].concat(filter.slice(1).map(convertFilter)) : op === 'none' ? ['all'].concat(filter.slice(1).map(convertFilter).map(convertNegation)) : op === 'in' ? convertInOp(filter[1], filter.slice(2)) : op === '!in' ? convertNegation(convertInOp(filter[1], filter.slice(2))) : op === 'has' ? convertHasOp(filter[1]) : op === '!has' ? convertNegation(convertHasOp(filter[1])) : op === 'within' ? filter : true;\n    return converted;\n}\nfunction convertComparisonOp(property, value, op) {\n    switch (property) {\n    case '$type':\n        return [\n            'filter-type-' + op,\n            value\n        ];\n    case '$id':\n        return [\n            'filter-id-' + op,\n            value\n        ];\n    default:\n        return [\n            'filter-' + op,\n            property,\n            value\n        ];\n    }\n}\nfunction convertDisjunctionOp(filters) {\n    return ['any'].concat(filters.map(convertFilter));\n}\nfunction convertInOp(property, values) {\n    if (values.length === 0) {\n        return false;\n    }\n    switch (property) {\n    case '$type':\n        return [\n            'filter-type-in',\n            [\n                'literal',\n                values\n            ]\n        ];\n    case '$id':\n        return [\n            'filter-id-in',\n            [\n                'literal',\n                values\n            ]\n        ];\n    default:\n        if (values.length > 200 && !values.some(function (v) {\n                return typeof v !== typeof values[0];\n            })) {\n            return [\n                'filter-in-large',\n                property,\n                [\n                    'literal',\n                    values.sort(compare)\n                ]\n            ];\n        } else {\n            return [\n                'filter-in-small',\n                property,\n                [\n                    'literal',\n                    values\n                ]\n            ];\n        }\n    }\n}\nfunction convertHasOp(property) {\n    switch (property) {\n    case '$type':\n        return true;\n    case '$id':\n        return ['filter-has-id'];\n    default:\n        return [\n            'filter-has',\n            property\n        ];\n    }\n}\nfunction convertNegation(filter) {\n    return [\n        '!',\n        filter\n    ];\n}\n\nfunction validateFilter(options) {\n    if (isExpressionFilter(deepUnbundle(options.value))) {\n        return validateExpression(extend$1({}, options, {\n            expressionContext: 'filter',\n            valueSpec: { value: 'boolean' }\n        }));\n    } else {\n        return validateNonExpressionFilter(options);\n    }\n}\nfunction validateNonExpressionFilter(options) {\n    var value = options.value;\n    var key = options.key;\n    if (getType(value) !== 'array') {\n        return [new ValidationError(key, value, 'array expected, ' + getType(value) + ' found')];\n    }\n    var styleSpec = options.styleSpec;\n    var type;\n    var errors = [];\n    if (value.length < 1) {\n        return [new ValidationError(key, value, 'filter array must have at least 1 element')];\n    }\n    errors = errors.concat(validateEnum({\n        key: key + '[0]',\n        value: value[0],\n        valueSpec: styleSpec.filter_operator,\n        style: options.style,\n        styleSpec: options.styleSpec\n    }));\n    switch (unbundle(value[0])) {\n    case '<':\n    case '<=':\n    case '>':\n    case '>=':\n        if (value.length >= 2 && unbundle(value[1]) === '$type') {\n            errors.push(new ValidationError(key, value, '\"$type\" cannot be use with operator \"' + value[0] + '\"'));\n        }\n    case '==':\n    case '!=':\n        if (value.length !== 3) {\n            errors.push(new ValidationError(key, value, 'filter array for operator \"' + value[0] + '\" must have 3 elements'));\n        }\n    case 'in':\n    case '!in':\n        if (value.length >= 2) {\n            type = getType(value[1]);\n            if (type !== 'string') {\n                errors.push(new ValidationError(key + '[1]', value[1], 'string expected, ' + type + ' found'));\n            }\n        }\n        for (var i = 2; i < value.length; i++) {\n            type = getType(value[i]);\n            if (unbundle(value[1]) === '$type') {\n                errors = errors.concat(validateEnum({\n                    key: key + '[' + i + ']',\n                    value: value[i],\n                    valueSpec: styleSpec.geometry_type,\n                    style: options.style,\n                    styleSpec: options.styleSpec\n                }));\n            } else if (type !== 'string' && type !== 'number' && type !== 'boolean') {\n                errors.push(new ValidationError(key + '[' + i + ']', value[i], 'string, number, or boolean expected, ' + type + ' found'));\n            }\n        }\n        break;\n    case 'any':\n    case 'all':\n    case 'none':\n        for (var i$1 = 1; i$1 < value.length; i$1++) {\n            errors = errors.concat(validateNonExpressionFilter({\n                key: key + '[' + i$1 + ']',\n                value: value[i$1],\n                style: options.style,\n                styleSpec: options.styleSpec\n            }));\n        }\n        break;\n    case 'has':\n    case '!has':\n        type = getType(value[1]);\n        if (value.length !== 2) {\n            errors.push(new ValidationError(key, value, 'filter array for \"' + value[0] + '\" operator must have 2 elements'));\n        } else if (type !== 'string') {\n            errors.push(new ValidationError(key + '[1]', value[1], 'string expected, ' + type + ' found'));\n        }\n        break;\n    case 'within':\n        type = getType(value[1]);\n        if (value.length !== 2) {\n            errors.push(new ValidationError(key, value, 'filter array for \"' + value[0] + '\" operator must have 2 elements'));\n        } else if (type !== 'object') {\n            errors.push(new ValidationError(key + '[1]', value[1], 'object expected, ' + type + ' found'));\n        }\n        break;\n    }\n    return errors;\n}\n\nfunction validateProperty(options, propertyType) {\n    var key = options.key;\n    var style = options.style;\n    var styleSpec = options.styleSpec;\n    var value = options.value;\n    var propertyKey = options.objectKey;\n    var layerSpec = styleSpec[propertyType + '_' + options.layerType];\n    if (!layerSpec) {\n        return [];\n    }\n    var transitionMatch = propertyKey.match(/^(.*)-transition$/);\n    if (propertyType === 'paint' && transitionMatch && layerSpec[transitionMatch[1]] && layerSpec[transitionMatch[1]].transition) {\n        return validate({\n            key: key,\n            value: value,\n            valueSpec: styleSpec.transition,\n            style: style,\n            styleSpec: styleSpec\n        });\n    }\n    var valueSpec = options.valueSpec || layerSpec[propertyKey];\n    if (!valueSpec) {\n        return [new ValidationError(key, value, 'unknown property \"' + propertyKey + '\"')];\n    }\n    var tokenMatch;\n    if (getType(value) === 'string' && supportsPropertyExpression(valueSpec) && !valueSpec.tokens && (tokenMatch = /^{([^}]+)}$/.exec(value))) {\n        return [new ValidationError(key, value, '\"' + propertyKey + '\" does not support interpolation syntax\\n' + 'Use an identity property function instead: `{ \"type\": \"identity\", \"property\": ' + JSON.stringify(tokenMatch[1]) + ' }`.')];\n    }\n    var errors = [];\n    if (options.layerType === 'symbol') {\n        if (propertyKey === 'text-field' && style && !style.glyphs) {\n            errors.push(new ValidationError(key, value, 'use of \"text-field\" requires a style \"glyphs\" property'));\n        }\n        if (propertyKey === 'text-font' && isFunction(deepUnbundle(value)) && unbundle(value.type) === 'identity') {\n            errors.push(new ValidationError(key, value, '\"text-font\" does not support identity functions'));\n        }\n    }\n    return errors.concat(validate({\n        key: options.key,\n        value: value,\n        valueSpec: valueSpec,\n        style: style,\n        styleSpec: styleSpec,\n        expressionContext: 'property',\n        propertyType: propertyType,\n        propertyKey: propertyKey\n    }));\n}\n\nfunction validatePaintProperty(options) {\n    return validateProperty(options, 'paint');\n}\n\nfunction validateLayoutProperty(options) {\n    return validateProperty(options, 'layout');\n}\n\nfunction validateLayer(options) {\n    var errors = [];\n    var layer = options.value;\n    var key = options.key;\n    var style = options.style;\n    var styleSpec = options.styleSpec;\n    if (!layer.type && !layer.ref) {\n        errors.push(new ValidationError(key, layer, 'either \"type\" or \"ref\" is required'));\n    }\n    var type = unbundle(layer.type);\n    var ref = unbundle(layer.ref);\n    if (layer.id) {\n        var layerId = unbundle(layer.id);\n        for (var i = 0; i < options.arrayIndex; i++) {\n            var otherLayer = style.layers[i];\n            if (unbundle(otherLayer.id) === layerId) {\n                errors.push(new ValidationError(key, layer.id, 'duplicate layer id \"' + layer.id + '\", previously used at line ' + otherLayer.id.__line__));\n            }\n        }\n    }\n    if ('ref' in layer) {\n        [\n            'type',\n            'source',\n            'source-layer',\n            'filter',\n            'layout'\n        ].forEach(function (p) {\n            if (p in layer) {\n                errors.push(new ValidationError(key, layer[p], '\"' + p + '\" is prohibited for ref layers'));\n            }\n        });\n        var parent;\n        style.layers.forEach(function (layer) {\n            if (unbundle(layer.id) === ref) {\n                parent = layer;\n            }\n        });\n        if (!parent) {\n            errors.push(new ValidationError(key, layer.ref, 'ref layer \"' + ref + '\" not found'));\n        } else if (parent.ref) {\n            errors.push(new ValidationError(key, layer.ref, 'ref cannot reference another ref layer'));\n        } else {\n            type = unbundle(parent.type);\n        }\n    } else if (type !== 'background') {\n        if (!layer.source) {\n            errors.push(new ValidationError(key, layer, 'missing required property \"source\"'));\n        } else {\n            var source = style.sources && style.sources[layer.source];\n            var sourceType = source && unbundle(source.type);\n            if (!source) {\n                errors.push(new ValidationError(key, layer.source, 'source \"' + layer.source + '\" not found'));\n            } else if (sourceType === 'vector' && type === 'raster') {\n                errors.push(new ValidationError(key, layer.source, 'layer \"' + layer.id + '\" requires a raster source'));\n            } else if (sourceType === 'raster' && type !== 'raster') {\n                errors.push(new ValidationError(key, layer.source, 'layer \"' + layer.id + '\" requires a vector source'));\n            } else if (sourceType === 'vector' && !layer['source-layer']) {\n                errors.push(new ValidationError(key, layer, 'layer \"' + layer.id + '\" must specify a \"source-layer\"'));\n            } else if (sourceType === 'raster-dem' && type !== 'hillshade') {\n                errors.push(new ValidationError(key, layer.source, 'raster-dem source can only be used with layer type \\'hillshade\\'.'));\n            } else if (type === 'line' && layer.paint && layer.paint['line-gradient'] && (sourceType !== 'geojson' || !source.lineMetrics)) {\n                errors.push(new ValidationError(key, layer, 'layer \"' + layer.id + '\" specifies a line-gradient, which requires a GeoJSON source with `lineMetrics` enabled.'));\n            }\n        }\n    }\n    errors = errors.concat(validateObject({\n        key: key,\n        value: layer,\n        valueSpec: styleSpec.layer,\n        style: options.style,\n        styleSpec: options.styleSpec,\n        objectElementValidators: {\n            '*': function _() {\n                return [];\n            },\n            type: function type() {\n                return validate({\n                    key: key + '.type',\n                    value: layer.type,\n                    valueSpec: styleSpec.layer.type,\n                    style: options.style,\n                    styleSpec: options.styleSpec,\n                    object: layer,\n                    objectKey: 'type'\n                });\n            },\n            filter: validateFilter,\n            layout: function layout(options) {\n                return validateObject({\n                    layer: layer,\n                    key: options.key,\n                    value: options.value,\n                    style: options.style,\n                    styleSpec: options.styleSpec,\n                    objectElementValidators: {\n                        '*': function _(options) {\n                            return validateLayoutProperty(extend$1({ layerType: type }, options));\n                        }\n                    }\n                });\n            },\n            paint: function paint(options) {\n                return validateObject({\n                    layer: layer,\n                    key: options.key,\n                    value: options.value,\n                    style: options.style,\n                    styleSpec: options.styleSpec,\n                    objectElementValidators: {\n                        '*': function _(options) {\n                            return validatePaintProperty(extend$1({ layerType: type }, options));\n                        }\n                    }\n                });\n            }\n        }\n    }));\n    return errors;\n}\n\nfunction validateString(options) {\n    var value = options.value;\n    var key = options.key;\n    var type = getType(value);\n    if (type !== 'string') {\n        return [new ValidationError(key, value, 'string expected, ' + type + ' found')];\n    }\n    return [];\n}\n\nvar objectElementValidators = { promoteId: validatePromoteId };\nfunction validateSource(options) {\n    var value = options.value;\n    var key = options.key;\n    var styleSpec = options.styleSpec;\n    var style = options.style;\n    if (!value.type) {\n        return [new ValidationError(key, value, '\"type\" is required')];\n    }\n    var type = unbundle(value.type);\n    var errors;\n    switch (type) {\n    case 'vector':\n    case 'raster':\n    case 'raster-dem':\n        errors = validateObject({\n            key: key,\n            value: value,\n            valueSpec: styleSpec['source_' + type.replace('-', '_')],\n            style: options.style,\n            styleSpec: styleSpec,\n            objectElementValidators: objectElementValidators\n        });\n        return errors;\n    case 'geojson':\n        errors = validateObject({\n            key: key,\n            value: value,\n            valueSpec: styleSpec.source_geojson,\n            style: style,\n            styleSpec: styleSpec,\n            objectElementValidators: objectElementValidators\n        });\n        if (value.cluster) {\n            for (var prop in value.clusterProperties) {\n                var ref = value.clusterProperties[prop];\n                var operator = ref[0];\n                var mapExpr = ref[1];\n                var reduceExpr = typeof operator === 'string' ? [\n                    operator,\n                    ['accumulated'],\n                    [\n                        'get',\n                        prop\n                    ]\n                ] : operator;\n                errors.push.apply(errors, validateExpression({\n                    key: key + '.' + prop + '.map',\n                    value: mapExpr,\n                    expressionContext: 'cluster-map'\n                }));\n                errors.push.apply(errors, validateExpression({\n                    key: key + '.' + prop + '.reduce',\n                    value: reduceExpr,\n                    expressionContext: 'cluster-reduce'\n                }));\n            }\n        }\n        return errors;\n    case 'video':\n        return validateObject({\n            key: key,\n            value: value,\n            valueSpec: styleSpec.source_video,\n            style: style,\n            styleSpec: styleSpec\n        });\n    case 'image':\n        return validateObject({\n            key: key,\n            value: value,\n            valueSpec: styleSpec.source_image,\n            style: style,\n            styleSpec: styleSpec\n        });\n    case 'canvas':\n        return [new ValidationError(key, null, 'Please use runtime APIs to add canvas sources, rather than including them in stylesheets.', 'source.canvas')];\n    default:\n        return validateEnum({\n            key: key + '.type',\n            value: value.type,\n            valueSpec: {\n                values: [\n                    'vector',\n                    'raster',\n                    'raster-dem',\n                    'geojson',\n                    'video',\n                    'image'\n                ]\n            },\n            style: style,\n            styleSpec: styleSpec\n        });\n    }\n}\nfunction validatePromoteId(ref) {\n    var key = ref.key;\n    var value = ref.value;\n    if (getType(value) === 'string') {\n        return validateString({\n            key: key,\n            value: value\n        });\n    } else {\n        var errors = [];\n        for (var prop in value) {\n            errors.push.apply(errors, validateString({\n                key: key + '.' + prop,\n                value: value[prop]\n            }));\n        }\n        return errors;\n    }\n}\n\nfunction validateLight(options) {\n    var light = options.value;\n    var styleSpec = options.styleSpec;\n    var lightSpec = styleSpec.light;\n    var style = options.style;\n    var errors = [];\n    var rootType = getType(light);\n    if (light === undefined) {\n        return errors;\n    } else if (rootType !== 'object') {\n        errors = errors.concat([new ValidationError('light', light, 'object expected, ' + rootType + ' found')]);\n        return errors;\n    }\n    for (var key in light) {\n        var transitionMatch = key.match(/^(.*)-transition$/);\n        if (transitionMatch && lightSpec[transitionMatch[1]] && lightSpec[transitionMatch[1]].transition) {\n            errors = errors.concat(validate({\n                key: key,\n                value: light[key],\n                valueSpec: styleSpec.transition,\n                style: style,\n                styleSpec: styleSpec\n            }));\n        } else if (lightSpec[key]) {\n            errors = errors.concat(validate({\n                key: key,\n                value: light[key],\n                valueSpec: lightSpec[key],\n                style: style,\n                styleSpec: styleSpec\n            }));\n        } else {\n            errors = errors.concat([new ValidationError(key, light[key], 'unknown property \"' + key + '\"')]);\n        }\n    }\n    return errors;\n}\n\nfunction validateFormatted(options) {\n    if (validateString(options).length === 0) {\n        return [];\n    }\n    return validateExpression(options);\n}\n\nfunction validateImage(options) {\n    if (validateString(options).length === 0) {\n        return [];\n    }\n    return validateExpression(options);\n}\n\nvar VALIDATORS = {\n    '*': function _() {\n        return [];\n    },\n    'array': validateArray,\n    'boolean': validateBoolean,\n    'number': validateNumber,\n    'color': validateColor,\n    'constants': validateConstants,\n    'enum': validateEnum,\n    'filter': validateFilter,\n    'function': validateFunction,\n    'layer': validateLayer,\n    'object': validateObject,\n    'source': validateSource,\n    'light': validateLight,\n    'string': validateString,\n    'formatted': validateFormatted,\n    'resolvedImage': validateImage\n};\nfunction validate(options) {\n    var value = options.value;\n    var valueSpec = options.valueSpec;\n    var styleSpec = options.styleSpec;\n    if (valueSpec.expression && isFunction(unbundle(value))) {\n        return validateFunction(options);\n    } else if (valueSpec.expression && isExpression(deepUnbundle(value))) {\n        return validateExpression(options);\n    } else if (valueSpec.type && VALIDATORS[valueSpec.type]) {\n        return VALIDATORS[valueSpec.type](options);\n    } else {\n        var valid = validateObject(extend$1({}, options, { valueSpec: valueSpec.type ? styleSpec[valueSpec.type] : valueSpec }));\n        return valid;\n    }\n}\n\nfunction validateGlyphsURL (options) {\n    var value = options.value;\n    var key = options.key;\n    var errors = validateString(options);\n    if (errors.length) {\n        return errors;\n    }\n    if (value.indexOf('{fontstack}') === -1) {\n        errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{fontstack}\" token'));\n    }\n    if (value.indexOf('{range}') === -1) {\n        errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{range}\" token'));\n    }\n    return errors;\n}\n\nfunction validateStyleMin(style, styleSpec) {\n    if (styleSpec === void 0)\n        styleSpec = spec;\n    var errors = [];\n    errors = errors.concat(validate({\n        key: '',\n        value: style,\n        valueSpec: styleSpec.$root,\n        styleSpec: styleSpec,\n        style: style,\n        objectElementValidators: {\n            glyphs: validateGlyphsURL,\n            '*': function _() {\n                return [];\n            }\n        }\n    }));\n    if (style.constants) {\n        errors = errors.concat(validateConstants({\n            key: 'constants',\n            value: style.constants,\n            style: style,\n            styleSpec: styleSpec\n        }));\n    }\n    return sortErrors(errors);\n}\nvalidateStyleMin.source = wrapCleanErrors(validateSource);\nvalidateStyleMin.light = wrapCleanErrors(validateLight);\nvalidateStyleMin.layer = wrapCleanErrors(validateLayer);\nvalidateStyleMin.filter = wrapCleanErrors(validateFilter);\nvalidateStyleMin.paintProperty = wrapCleanErrors(validatePaintProperty);\nvalidateStyleMin.layoutProperty = wrapCleanErrors(validateLayoutProperty);\nfunction sortErrors(errors) {\n    return [].concat(errors).sort(function (a, b) {\n        return a.line - b.line;\n    });\n}\nfunction wrapCleanErrors(inner) {\n    return function () {\n        var args = [], len = arguments.length;\n        while (len--)\n            args[len] = arguments[len];\n        return sortErrors(inner.apply(this, args));\n    };\n}\n\nvar validateStyle = validateStyleMin;\nvar validateLight$1 = validateStyle.light;\nvar validatePaintProperty$1 = validateStyle.paintProperty;\nvar validateLayoutProperty$1 = validateStyle.layoutProperty;\nfunction emitValidationErrors(emitter, errors) {\n    var hasErrors = false;\n    if (errors && errors.length) {\n        for (var i = 0, list = errors; i < list.length; i += 1) {\n            var error = list[i];\n            emitter.fire(new ErrorEvent(new Error(error.message)));\n            hasErrors = true;\n        }\n    }\n    return hasErrors;\n}\n\nvar gridIndex = GridIndex;\nvar NUM_PARAMS = 3;\nfunction GridIndex(extent, n, padding) {\n    var cells = this.cells = [];\n    if (extent instanceof ArrayBuffer) {\n        this.arrayBuffer = extent;\n        var array = new Int32Array(this.arrayBuffer);\n        extent = array[0];\n        n = array[1];\n        padding = array[2];\n        this.d = n + 2 * padding;\n        for (var k = 0; k < this.d * this.d; k++) {\n            var start = array[NUM_PARAMS + k];\n            var end = array[NUM_PARAMS + k + 1];\n            cells.push(start === end ? null : array.subarray(start, end));\n        }\n        var keysOffset = array[NUM_PARAMS + cells.length];\n        var bboxesOffset = array[NUM_PARAMS + cells.length + 1];\n        this.keys = array.subarray(keysOffset, bboxesOffset);\n        this.bboxes = array.subarray(bboxesOffset);\n        this.insert = this._insertReadonly;\n    } else {\n        this.d = n + 2 * padding;\n        for (var i = 0; i < this.d * this.d; i++) {\n            cells.push([]);\n        }\n        this.keys = [];\n        this.bboxes = [];\n    }\n    this.n = n;\n    this.extent = extent;\n    this.padding = padding;\n    this.scale = n / extent;\n    this.uid = 0;\n    var p = padding / n * extent;\n    this.min = -p;\n    this.max = extent + p;\n}\nGridIndex.prototype.insert = function (key, x1, y1, x2, y2) {\n    this._forEachCell(x1, y1, x2, y2, this._insertCell, this.uid++);\n    this.keys.push(key);\n    this.bboxes.push(x1);\n    this.bboxes.push(y1);\n    this.bboxes.push(x2);\n    this.bboxes.push(y2);\n};\nGridIndex.prototype._insertReadonly = function () {\n    throw 'Cannot insert into a GridIndex created from an ArrayBuffer.';\n};\nGridIndex.prototype._insertCell = function (x1, y1, x2, y2, cellIndex, uid) {\n    this.cells[cellIndex].push(uid);\n};\nGridIndex.prototype.query = function (x1, y1, x2, y2, intersectionTest) {\n    var min = this.min;\n    var max = this.max;\n    if (x1 <= min && y1 <= min && max <= x2 && max <= y2 && !intersectionTest) {\n        return Array.prototype.slice.call(this.keys);\n    } else {\n        var result = [];\n        var seenUids = {};\n        this._forEachCell(x1, y1, x2, y2, this._queryCell, result, seenUids, intersectionTest);\n        return result;\n    }\n};\nGridIndex.prototype._queryCell = function (x1, y1, x2, y2, cellIndex, result, seenUids, intersectionTest) {\n    var cell = this.cells[cellIndex];\n    if (cell !== null) {\n        var keys = this.keys;\n        var bboxes = this.bboxes;\n        for (var u = 0; u < cell.length; u++) {\n            var uid = cell[u];\n            if (seenUids[uid] === undefined) {\n                var offset = uid * 4;\n                if (intersectionTest ? intersectionTest(bboxes[offset + 0], bboxes[offset + 1], bboxes[offset + 2], bboxes[offset + 3]) : x1 <= bboxes[offset + 2] && y1 <= bboxes[offset + 3] && x2 >= bboxes[offset + 0] && y2 >= bboxes[offset + 1]) {\n                    seenUids[uid] = true;\n                    result.push(keys[uid]);\n                } else {\n                    seenUids[uid] = false;\n                }\n            }\n        }\n    }\n};\nGridIndex.prototype._forEachCell = function (x1, y1, x2, y2, fn, arg1, arg2, intersectionTest) {\n    var cx1 = this._convertToCellCoord(x1);\n    var cy1 = this._convertToCellCoord(y1);\n    var cx2 = this._convertToCellCoord(x2);\n    var cy2 = this._convertToCellCoord(y2);\n    for (var x = cx1; x <= cx2; x++) {\n        for (var y = cy1; y <= cy2; y++) {\n            var cellIndex = this.d * y + x;\n            if (intersectionTest && !intersectionTest(this._convertFromCellCoord(x), this._convertFromCellCoord(y), this._convertFromCellCoord(x + 1), this._convertFromCellCoord(y + 1))) {\n                continue;\n            }\n            if (fn.call(this, x1, y1, x2, y2, cellIndex, arg1, arg2, intersectionTest)) {\n                return;\n            }\n        }\n    }\n};\nGridIndex.prototype._convertFromCellCoord = function (x) {\n    return (x - this.padding) / this.scale;\n};\nGridIndex.prototype._convertToCellCoord = function (x) {\n    return Math.max(0, Math.min(this.d - 1, Math.floor(x * this.scale) + this.padding));\n};\nGridIndex.prototype.toArrayBuffer = function () {\n    if (this.arrayBuffer) {\n        return this.arrayBuffer;\n    }\n    var cells = this.cells;\n    var metadataLength = NUM_PARAMS + this.cells.length + 1 + 1;\n    var totalCellLength = 0;\n    for (var i = 0; i < this.cells.length; i++) {\n        totalCellLength += this.cells[i].length;\n    }\n    var array = new Int32Array(metadataLength + totalCellLength + this.keys.length + this.bboxes.length);\n    array[0] = this.extent;\n    array[1] = this.n;\n    array[2] = this.padding;\n    var offset = metadataLength;\n    for (var k = 0; k < cells.length; k++) {\n        var cell = cells[k];\n        array[NUM_PARAMS + k] = offset;\n        array.set(cell, offset);\n        offset += cell.length;\n    }\n    array[NUM_PARAMS + cells.length] = offset;\n    array.set(this.keys, offset);\n    offset += this.keys.length;\n    array[NUM_PARAMS + cells.length + 1] = offset;\n    array.set(this.bboxes, offset);\n    offset += this.bboxes.length;\n    return array.buffer;\n};\n\nvar ImageData = self.ImageData;\nvar ImageBitmap = self.ImageBitmap;\nvar registry = {};\nfunction register(name, klass, options) {\n    if (options === void 0)\n        options = {};\n    Object.defineProperty(klass, '_classRegistryKey', {\n        value: name,\n        writeable: false\n    });\n    registry[name] = {\n        klass: klass,\n        omit: options.omit || [],\n        shallow: options.shallow || []\n    };\n}\nregister('Object', Object);\ngridIndex.serialize = function serialize(grid, transferables) {\n    var buffer = grid.toArrayBuffer();\n    if (transferables) {\n        transferables.push(buffer);\n    }\n    return { buffer: buffer };\n};\ngridIndex.deserialize = function deserialize(serialized) {\n    return new gridIndex(serialized.buffer);\n};\nregister('Grid', gridIndex);\nregister('Color', Color);\nregister('Error', Error);\nregister('ResolvedImage', ResolvedImage);\nregister('StylePropertyFunction', StylePropertyFunction);\nregister('StyleExpression', StyleExpression, { omit: ['_evaluator'] });\nregister('ZoomDependentExpression', ZoomDependentExpression);\nregister('ZoomConstantExpression', ZoomConstantExpression);\nregister('CompoundExpression', CompoundExpression, { omit: ['_evaluate'] });\nfor (var name in expressions) {\n    if (expressions[name]._classRegistryKey) {\n        continue;\n    }\n    register('Expression_' + name, expressions[name]);\n}\nfunction isArrayBuffer(val) {\n    return val && typeof ArrayBuffer !== 'undefined' && (val instanceof ArrayBuffer || val.constructor && val.constructor.name === 'ArrayBuffer');\n}\nfunction isImageBitmap(val) {\n    return ImageBitmap && val instanceof ImageBitmap;\n}\nfunction serialize(input, transferables) {\n    if (input === null || input === undefined || typeof input === 'boolean' || typeof input === 'number' || typeof input === 'string' || input instanceof Boolean || input instanceof Number || input instanceof String || input instanceof Date || input instanceof RegExp) {\n        return input;\n    }\n    if (isArrayBuffer(input) || isImageBitmap(input)) {\n        if (transferables) {\n            transferables.push(input);\n        }\n        return input;\n    }\n    if (ArrayBuffer.isView(input)) {\n        var view = input;\n        if (transferables) {\n            transferables.push(view.buffer);\n        }\n        return view;\n    }\n    if (input instanceof ImageData) {\n        if (transferables) {\n            transferables.push(input.data.buffer);\n        }\n        return input;\n    }\n    if (Array.isArray(input)) {\n        var serialized = [];\n        for (var i = 0, list = input; i < list.length; i += 1) {\n            var item = list[i];\n            serialized.push(serialize(item, transferables));\n        }\n        return serialized;\n    }\n    if (typeof input === 'object') {\n        var klass = input.constructor;\n        var name = klass._classRegistryKey;\n        if (!name) {\n            throw new Error('can\\'t serialize object of unregistered class');\n        }\n        var properties = klass.serialize ? klass.serialize(input, transferables) : {};\n        if (!klass.serialize) {\n            for (var key in input) {\n                if (!input.hasOwnProperty(key)) {\n                    continue;\n                }\n                if (registry[name].omit.indexOf(key) >= 0) {\n                    continue;\n                }\n                var property = input[key];\n                properties[key] = registry[name].shallow.indexOf(key) >= 0 ? property : serialize(property, transferables);\n            }\n            if (input instanceof Error) {\n                properties.message = input.message;\n            }\n        }\n        if (properties.$name) {\n            throw new Error('$name property is reserved for worker serialization logic.');\n        }\n        if (name !== 'Object') {\n            properties.$name = name;\n        }\n        return properties;\n    }\n    throw new Error('can\\'t serialize object of type ' + typeof input);\n}\nfunction deserialize(input) {\n    if (input === null || input === undefined || typeof input === 'boolean' || typeof input === 'number' || typeof input === 'string' || input instanceof Boolean || input instanceof Number || input instanceof String || input instanceof Date || input instanceof RegExp || isArrayBuffer(input) || isImageBitmap(input) || ArrayBuffer.isView(input) || input instanceof ImageData) {\n        return input;\n    }\n    if (Array.isArray(input)) {\n        return input.map(deserialize);\n    }\n    if (typeof input === 'object') {\n        var name = input.$name || 'Object';\n        var ref = registry[name];\n        var klass = ref.klass;\n        if (!klass) {\n            throw new Error('can\\'t deserialize unregistered class ' + name);\n        }\n        if (klass.deserialize) {\n            return klass.deserialize(input);\n        }\n        var result = Object.create(klass.prototype);\n        for (var i = 0, list = Object.keys(input); i < list.length; i += 1) {\n            var key = list[i];\n            if (key === '$name') {\n                continue;\n            }\n            var value = input[key];\n            result[key] = registry[name].shallow.indexOf(key) >= 0 ? value : deserialize(value);\n        }\n        return result;\n    }\n    throw new Error('can\\'t deserialize object of type ' + typeof input);\n}\n\nvar ZoomHistory = function ZoomHistory() {\n    this.first = true;\n};\nZoomHistory.prototype.update = function update(z, now) {\n    var floorZ = Math.floor(z);\n    if (this.first) {\n        this.first = false;\n        this.lastIntegerZoom = floorZ;\n        this.lastIntegerZoomTime = 0;\n        this.lastZoom = z;\n        this.lastFloorZoom = floorZ;\n        return true;\n    }\n    if (this.lastFloorZoom > floorZ) {\n        this.lastIntegerZoom = floorZ + 1;\n        this.lastIntegerZoomTime = now;\n    } else if (this.lastFloorZoom < floorZ) {\n        this.lastIntegerZoom = floorZ;\n        this.lastIntegerZoomTime = now;\n    }\n    if (z !== this.lastZoom) {\n        this.lastZoom = z;\n        this.lastFloorZoom = floorZ;\n        return true;\n    }\n    return false;\n};\n\nvar unicodeBlockLookup = {\n    'Latin-1 Supplement': function (char) {\n        return char >= 128 && char <= 255;\n    },\n    'Arabic': function (char) {\n        return char >= 1536 && char <= 1791;\n    },\n    'Arabic Supplement': function (char) {\n        return char >= 1872 && char <= 1919;\n    },\n    'Arabic Extended-A': function (char) {\n        return char >= 2208 && char <= 2303;\n    },\n    'Hangul Jamo': function (char) {\n        return char >= 4352 && char <= 4607;\n    },\n    'Unified Canadian Aboriginal Syllabics': function (char) {\n        return char >= 5120 && char <= 5759;\n    },\n    'Khmer': function (char) {\n        return char >= 6016 && char <= 6143;\n    },\n    'Unified Canadian Aboriginal Syllabics Extended': function (char) {\n        return char >= 6320 && char <= 6399;\n    },\n    'General Punctuation': function (char) {\n        return char >= 8192 && char <= 8303;\n    },\n    'Letterlike Symbols': function (char) {\n        return char >= 8448 && char <= 8527;\n    },\n    'Number Forms': function (char) {\n        return char >= 8528 && char <= 8591;\n    },\n    'Miscellaneous Technical': function (char) {\n        return char >= 8960 && char <= 9215;\n    },\n    'Control Pictures': function (char) {\n        return char >= 9216 && char <= 9279;\n    },\n    'Optical Character Recognition': function (char) {\n        return char >= 9280 && char <= 9311;\n    },\n    'Enclosed Alphanumerics': function (char) {\n        return char >= 9312 && char <= 9471;\n    },\n    'Geometric Shapes': function (char) {\n        return char >= 9632 && char <= 9727;\n    },\n    'Miscellaneous Symbols': function (char) {\n        return char >= 9728 && char <= 9983;\n    },\n    'Miscellaneous Symbols and Arrows': function (char) {\n        return char >= 11008 && char <= 11263;\n    },\n    'CJK Radicals Supplement': function (char) {\n        return char >= 11904 && char <= 12031;\n    },\n    'Kangxi Radicals': function (char) {\n        return char >= 12032 && char <= 12255;\n    },\n    'Ideographic Description Characters': function (char) {\n        return char >= 12272 && char <= 12287;\n    },\n    'CJK Symbols and Punctuation': function (char) {\n        return char >= 12288 && char <= 12351;\n    },\n    'Hiragana': function (char) {\n        return char >= 12352 && char <= 12447;\n    },\n    'Katakana': function (char) {\n        return char >= 12448 && char <= 12543;\n    },\n    'Bopomofo': function (char) {\n        return char >= 12544 && char <= 12591;\n    },\n    'Hangul Compatibility Jamo': function (char) {\n        return char >= 12592 && char <= 12687;\n    },\n    'Kanbun': function (char) {\n        return char >= 12688 && char <= 12703;\n    },\n    'Bopomofo Extended': function (char) {\n        return char >= 12704 && char <= 12735;\n    },\n    'CJK Strokes': function (char) {\n        return char >= 12736 && char <= 12783;\n    },\n    'Katakana Phonetic Extensions': function (char) {\n        return char >= 12784 && char <= 12799;\n    },\n    'Enclosed CJK Letters and Months': function (char) {\n        return char >= 12800 && char <= 13055;\n    },\n    'CJK Compatibility': function (char) {\n        return char >= 13056 && char <= 13311;\n    },\n    'CJK Unified Ideographs Extension A': function (char) {\n        return char >= 13312 && char <= 19903;\n    },\n    'Yijing Hexagram Symbols': function (char) {\n        return char >= 19904 && char <= 19967;\n    },\n    'CJK Unified Ideographs': function (char) {\n        return char >= 19968 && char <= 40959;\n    },\n    'Yi Syllables': function (char) {\n        return char >= 40960 && char <= 42127;\n    },\n    'Yi Radicals': function (char) {\n        return char >= 42128 && char <= 42191;\n    },\n    'Hangul Jamo Extended-A': function (char) {\n        return char >= 43360 && char <= 43391;\n    },\n    'Hangul Syllables': function (char) {\n        return char >= 44032 && char <= 55215;\n    },\n    'Hangul Jamo Extended-B': function (char) {\n        return char >= 55216 && char <= 55295;\n    },\n    'Private Use Area': function (char) {\n        return char >= 57344 && char <= 63743;\n    },\n    'CJK Compatibility Ideographs': function (char) {\n        return char >= 63744 && char <= 64255;\n    },\n    'Arabic Presentation Forms-A': function (char) {\n        return char >= 64336 && char <= 65023;\n    },\n    'Vertical Forms': function (char) {\n        return char >= 65040 && char <= 65055;\n    },\n    'CJK Compatibility Forms': function (char) {\n        return char >= 65072 && char <= 65103;\n    },\n    'Small Form Variants': function (char) {\n        return char >= 65104 && char <= 65135;\n    },\n    'Arabic Presentation Forms-B': function (char) {\n        return char >= 65136 && char <= 65279;\n    },\n    'Halfwidth and Fullwidth Forms': function (char) {\n        return char >= 65280 && char <= 65519;\n    }\n};\n\nfunction allowsVerticalWritingMode(chars) {\n    for (var i = 0, list = chars; i < list.length; i += 1) {\n        var char = list[i];\n        if (charHasUprightVerticalOrientation(char.charCodeAt(0))) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction allowsLetterSpacing(chars) {\n    for (var i = 0, list = chars; i < list.length; i += 1) {\n        var char = list[i];\n        if (!charAllowsLetterSpacing(char.charCodeAt(0))) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction charAllowsLetterSpacing(char) {\n    if (unicodeBlockLookup['Arabic'](char)) {\n        return false;\n    }\n    if (unicodeBlockLookup['Arabic Supplement'](char)) {\n        return false;\n    }\n    if (unicodeBlockLookup['Arabic Extended-A'](char)) {\n        return false;\n    }\n    if (unicodeBlockLookup['Arabic Presentation Forms-A'](char)) {\n        return false;\n    }\n    if (unicodeBlockLookup['Arabic Presentation Forms-B'](char)) {\n        return false;\n    }\n    return true;\n}\nfunction charAllowsIdeographicBreaking(char) {\n    if (char < 11904) {\n        return false;\n    }\n    if (unicodeBlockLookup['Bopomofo Extended'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Bopomofo'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['CJK Compatibility Forms'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['CJK Compatibility Ideographs'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['CJK Compatibility'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['CJK Radicals Supplement'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['CJK Strokes'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['CJK Symbols and Punctuation'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['CJK Unified Ideographs Extension A'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['CJK Unified Ideographs'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Enclosed CJK Letters and Months'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Halfwidth and Fullwidth Forms'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Hiragana'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Ideographic Description Characters'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Kangxi Radicals'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Katakana Phonetic Extensions'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Katakana'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Vertical Forms'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Yi Radicals'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Yi Syllables'](char)) {\n        return true;\n    }\n    return false;\n}\nfunction charHasUprightVerticalOrientation(char) {\n    if (char === 746 || char === 747) {\n        return true;\n    }\n    if (char < 4352) {\n        return false;\n    }\n    if (unicodeBlockLookup['Bopomofo Extended'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Bopomofo'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['CJK Compatibility Forms'](char)) {\n        if (!(char >= 65097 && char <= 65103)) {\n            return true;\n        }\n    }\n    if (unicodeBlockLookup['CJK Compatibility Ideographs'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['CJK Compatibility'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['CJK Radicals Supplement'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['CJK Strokes'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['CJK Symbols and Punctuation'](char)) {\n        if (!(char >= 12296 && char <= 12305) && !(char >= 12308 && char <= 12319) && char !== 12336) {\n            return true;\n        }\n    }\n    if (unicodeBlockLookup['CJK Unified Ideographs Extension A'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['CJK Unified Ideographs'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Enclosed CJK Letters and Months'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Hangul Compatibility Jamo'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Hangul Jamo Extended-A'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Hangul Jamo Extended-B'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Hangul Jamo'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Hangul Syllables'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Hiragana'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Ideographic Description Characters'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Kanbun'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Kangxi Radicals'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Katakana Phonetic Extensions'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Katakana'](char)) {\n        if (char !== 12540) {\n            return true;\n        }\n    }\n    if (unicodeBlockLookup['Halfwidth and Fullwidth Forms'](char)) {\n        if (char !== 65288 && char !== 65289 && char !== 65293 && !(char >= 65306 && char <= 65310) && char !== 65339 && char !== 65341 && char !== 65343 && !(char >= 65371 && char <= 65503) && char !== 65507 && !(char >= 65512 && char <= 65519)) {\n            return true;\n        }\n    }\n    if (unicodeBlockLookup['Small Form Variants'](char)) {\n        if (!(char >= 65112 && char <= 65118) && !(char >= 65123 && char <= 65126)) {\n            return true;\n        }\n    }\n    if (unicodeBlockLookup['Unified Canadian Aboriginal Syllabics'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Unified Canadian Aboriginal Syllabics Extended'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Vertical Forms'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Yijing Hexagram Symbols'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Yi Syllables'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Yi Radicals'](char)) {\n        return true;\n    }\n    return false;\n}\nfunction charHasNeutralVerticalOrientation(char) {\n    if (unicodeBlockLookup['Latin-1 Supplement'](char)) {\n        if (char === 167 || char === 169 || char === 174 || char === 177 || char === 188 || char === 189 || char === 190 || char === 215 || char === 247) {\n            return true;\n        }\n    }\n    if (unicodeBlockLookup['General Punctuation'](char)) {\n        if (char === 8214 || char === 8224 || char === 8225 || char === 8240 || char === 8241 || char === 8251 || char === 8252 || char === 8258 || char === 8263 || char === 8264 || char === 8265 || char === 8273) {\n            return true;\n        }\n    }\n    if (unicodeBlockLookup['Letterlike Symbols'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Number Forms'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Miscellaneous Technical'](char)) {\n        if (char >= 8960 && char <= 8967 || char >= 8972 && char <= 8991 || char >= 8996 && char <= 9000 || char === 9003 || char >= 9085 && char <= 9114 || char >= 9150 && char <= 9165 || char === 9167 || char >= 9169 && char <= 9179 || char >= 9186 && char <= 9215) {\n            return true;\n        }\n    }\n    if (unicodeBlockLookup['Control Pictures'](char) && char !== 9251) {\n        return true;\n    }\n    if (unicodeBlockLookup['Optical Character Recognition'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Enclosed Alphanumerics'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Geometric Shapes'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Miscellaneous Symbols'](char)) {\n        if (!(char >= 9754 && char <= 9759)) {\n            return true;\n        }\n    }\n    if (unicodeBlockLookup['Miscellaneous Symbols and Arrows'](char)) {\n        if (char >= 11026 && char <= 11055 || char >= 11088 && char <= 11097 || char >= 11192 && char <= 11243) {\n            return true;\n        }\n    }\n    if (unicodeBlockLookup['CJK Symbols and Punctuation'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Katakana'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Private Use Area'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['CJK Compatibility Forms'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Small Form Variants'](char)) {\n        return true;\n    }\n    if (unicodeBlockLookup['Halfwidth and Fullwidth Forms'](char)) {\n        return true;\n    }\n    if (char === 8734 || char === 8756 || char === 8757 || char >= 9984 && char <= 10087 || char >= 10102 && char <= 10131 || char === 65532 || char === 65533) {\n        return true;\n    }\n    return false;\n}\nfunction charHasRotatedVerticalOrientation(char) {\n    return !(charHasUprightVerticalOrientation(char) || charHasNeutralVerticalOrientation(char));\n}\nfunction charInComplexShapingScript(char) {\n    return unicodeBlockLookup['Arabic'](char) || unicodeBlockLookup['Arabic Supplement'](char) || unicodeBlockLookup['Arabic Extended-A'](char) || unicodeBlockLookup['Arabic Presentation Forms-A'](char) || unicodeBlockLookup['Arabic Presentation Forms-B'](char);\n}\nfunction charInRTLScript(char) {\n    return char >= 1424 && char <= 2303 || unicodeBlockLookup['Arabic Presentation Forms-A'](char) || unicodeBlockLookup['Arabic Presentation Forms-B'](char);\n}\nfunction charInSupportedScript(char, canRenderRTL) {\n    if (!canRenderRTL && charInRTLScript(char)) {\n        return false;\n    }\n    if (char >= 2304 && char <= 3583 || char >= 3840 && char <= 4255 || unicodeBlockLookup['Khmer'](char)) {\n        return false;\n    }\n    return true;\n}\nfunction stringContainsRTLText(chars) {\n    for (var i = 0, list = chars; i < list.length; i += 1) {\n        var char = list[i];\n        if (charInRTLScript(char.charCodeAt(0))) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction isStringInSupportedScript(chars, canRenderRTL) {\n    for (var i = 0, list = chars; i < list.length; i += 1) {\n        var char = list[i];\n        if (!charInSupportedScript(char.charCodeAt(0), canRenderRTL)) {\n            return false;\n        }\n    }\n    return true;\n}\n\nvar status = {\n    unavailable: 'unavailable',\n    deferred: 'deferred',\n    loading: 'loading',\n    loaded: 'loaded',\n    error: 'error'\n};\nvar _completionCallback = null;\nvar pluginStatus = status.unavailable;\nvar pluginURL = null;\nvar triggerPluginCompletionEvent = function (error) {\n    if (error && typeof error === 'string' && error.indexOf('NetworkError') > -1) {\n        pluginStatus = status.error;\n    }\n    if (_completionCallback) {\n        _completionCallback(error);\n    }\n};\nfunction sendPluginStateToWorker() {\n    evented.fire(new Event('pluginStateChange', {\n        pluginStatus: pluginStatus,\n        pluginURL: pluginURL\n    }));\n}\nvar evented = new Evented();\nvar getRTLTextPluginStatus = function () {\n    return pluginStatus;\n};\nvar registerForPluginStateChange = function (callback) {\n    callback({\n        pluginStatus: pluginStatus,\n        pluginURL: pluginURL\n    });\n    evented.on('pluginStateChange', callback);\n    return callback;\n};\nvar setRTLTextPlugin = function (url, callback, deferred) {\n    if (deferred === void 0)\n        deferred = false;\n    if (pluginStatus === status.deferred || pluginStatus === status.loading || pluginStatus === status.loaded) {\n        throw new Error('setRTLTextPlugin cannot be called multiple times.');\n    }\n    pluginURL = exported.resolveURL(url);\n    pluginStatus = status.deferred;\n    _completionCallback = callback;\n    sendPluginStateToWorker();\n    if (!deferred) {\n        downloadRTLTextPlugin();\n    }\n};\nvar downloadRTLTextPlugin = function () {\n    if (pluginStatus !== status.deferred || !pluginURL) {\n        throw new Error('rtl-text-plugin cannot be downloaded unless a pluginURL is specified');\n    }\n    pluginStatus = status.loading;\n    sendPluginStateToWorker();\n    if (pluginURL) {\n        getArrayBuffer({ url: pluginURL }, function (error) {\n            if (error) {\n                triggerPluginCompletionEvent(error);\n            } else {\n                pluginStatus = status.loaded;\n                sendPluginStateToWorker();\n            }\n        });\n    }\n};\nvar plugin = {\n    applyArabicShaping: null,\n    processBidirectionalText: null,\n    processStyledBidirectionalText: null,\n    isLoaded: function isLoaded() {\n        return pluginStatus === status.loaded || plugin.applyArabicShaping != null;\n    },\n    isLoading: function isLoading() {\n        return pluginStatus === status.loading;\n    },\n    setState: function setState(state) {\n        pluginStatus = state.pluginStatus;\n        pluginURL = state.pluginURL;\n    },\n    isParsed: function isParsed() {\n        return plugin.applyArabicShaping != null && plugin.processBidirectionalText != null && plugin.processStyledBidirectionalText != null;\n    },\n    getPluginURL: function getPluginURL() {\n        return pluginURL;\n    }\n};\nvar lazyLoadRTLTextPlugin = function () {\n    if (!plugin.isLoading() && !plugin.isLoaded() && getRTLTextPluginStatus() === 'deferred') {\n        downloadRTLTextPlugin();\n    }\n};\n\nvar EvaluationParameters = function EvaluationParameters(zoom, options) {\n    this.zoom = zoom;\n    if (options) {\n        this.now = options.now;\n        this.fadeDuration = options.fadeDuration;\n        this.zoomHistory = options.zoomHistory;\n        this.transition = options.transition;\n    } else {\n        this.now = 0;\n        this.fadeDuration = 0;\n        this.zoomHistory = new ZoomHistory();\n        this.transition = {};\n    }\n};\nEvaluationParameters.prototype.isSupportedScript = function isSupportedScript(str) {\n    return isStringInSupportedScript(str, plugin.isLoaded());\n};\nEvaluationParameters.prototype.crossFadingFactor = function crossFadingFactor() {\n    if (this.fadeDuration === 0) {\n        return 1;\n    } else {\n        return Math.min((this.now - this.zoomHistory.lastIntegerZoomTime) / this.fadeDuration, 1);\n    }\n};\nEvaluationParameters.prototype.getCrossfadeParameters = function getCrossfadeParameters() {\n    var z = this.zoom;\n    var fraction = z - Math.floor(z);\n    var t = this.crossFadingFactor();\n    return z > this.zoomHistory.lastIntegerZoom ? {\n        fromScale: 2,\n        toScale: 1,\n        t: fraction + (1 - fraction) * t\n    } : {\n        fromScale: 0.5,\n        toScale: 1,\n        t: 1 - (1 - t) * fraction\n    };\n};\n\nvar PropertyValue = function PropertyValue(property, value) {\n    this.property = property;\n    this.value = value;\n    this.expression = normalizePropertyExpression(value === undefined ? property.specification.default : value, property.specification);\n};\nPropertyValue.prototype.isDataDriven = function isDataDriven() {\n    return this.expression.kind === 'source' || this.expression.kind === 'composite';\n};\nPropertyValue.prototype.possiblyEvaluate = function possiblyEvaluate(parameters, canonical, availableImages) {\n    return this.property.possiblyEvaluate(this, parameters, canonical, availableImages);\n};\nvar TransitionablePropertyValue = function TransitionablePropertyValue(property) {\n    this.property = property;\n    this.value = new PropertyValue(property, undefined);\n};\nTransitionablePropertyValue.prototype.transitioned = function transitioned(parameters, prior) {\n    return new TransitioningPropertyValue(this.property, this.value, prior, extend({}, parameters.transition, this.transition), parameters.now);\n};\nTransitionablePropertyValue.prototype.untransitioned = function untransitioned() {\n    return new TransitioningPropertyValue(this.property, this.value, null, {}, 0);\n};\nvar Transitionable = function Transitionable(properties) {\n    this._properties = properties;\n    this._values = Object.create(properties.defaultTransitionablePropertyValues);\n};\nTransitionable.prototype.getValue = function getValue(name) {\n    return clone(this._values[name].value.value);\n};\nTransitionable.prototype.setValue = function setValue(name, value) {\n    if (!this._values.hasOwnProperty(name)) {\n        this._values[name] = new TransitionablePropertyValue(this._values[name].property);\n    }\n    this._values[name].value = new PropertyValue(this._values[name].property, value === null ? undefined : clone(value));\n};\nTransitionable.prototype.getTransition = function getTransition(name) {\n    return clone(this._values[name].transition);\n};\nTransitionable.prototype.setTransition = function setTransition(name, value) {\n    if (!this._values.hasOwnProperty(name)) {\n        this._values[name] = new TransitionablePropertyValue(this._values[name].property);\n    }\n    this._values[name].transition = clone(value) || undefined;\n};\nTransitionable.prototype.serialize = function serialize() {\n    var result = {};\n    for (var i = 0, list = Object.keys(this._values); i < list.length; i += 1) {\n        var property = list[i];\n        var value = this.getValue(property);\n        if (value !== undefined) {\n            result[property] = value;\n        }\n        var transition = this.getTransition(property);\n        if (transition !== undefined) {\n            result[property + '-transition'] = transition;\n        }\n    }\n    return result;\n};\nTransitionable.prototype.transitioned = function transitioned(parameters, prior) {\n    var result = new Transitioning(this._properties);\n    for (var i = 0, list = Object.keys(this._values); i < list.length; i += 1) {\n        var property = list[i];\n        result._values[property] = this._values[property].transitioned(parameters, prior._values[property]);\n    }\n    return result;\n};\nTransitionable.prototype.untransitioned = function untransitioned() {\n    var result = new Transitioning(this._properties);\n    for (var i = 0, list = Object.keys(this._values); i < list.length; i += 1) {\n        var property = list[i];\n        result._values[property] = this._values[property].untransitioned();\n    }\n    return result;\n};\nvar TransitioningPropertyValue = function TransitioningPropertyValue(property, value, prior, transition, now) {\n    this.property = property;\n    this.value = value;\n    this.begin = now + transition.delay || 0;\n    this.end = this.begin + transition.duration || 0;\n    if (property.specification.transition && (transition.delay || transition.duration)) {\n        this.prior = prior;\n    }\n};\nTransitioningPropertyValue.prototype.possiblyEvaluate = function possiblyEvaluate(parameters, canonical, availableImages) {\n    var now = parameters.now || 0;\n    var finalValue = this.value.possiblyEvaluate(parameters, canonical, availableImages);\n    var prior = this.prior;\n    if (!prior) {\n        return finalValue;\n    } else if (now > this.end) {\n        this.prior = null;\n        return finalValue;\n    } else if (this.value.isDataDriven()) {\n        this.prior = null;\n        return finalValue;\n    } else if (now < this.begin) {\n        return prior.possiblyEvaluate(parameters, canonical, availableImages);\n    } else {\n        var t = (now - this.begin) / (this.end - this.begin);\n        return this.property.interpolate(prior.possiblyEvaluate(parameters, canonical, availableImages), finalValue, easeCubicInOut(t));\n    }\n};\nvar Transitioning = function Transitioning(properties) {\n    this._properties = properties;\n    this._values = Object.create(properties.defaultTransitioningPropertyValues);\n};\nTransitioning.prototype.possiblyEvaluate = function possiblyEvaluate(parameters, canonical, availableImages) {\n    var result = new PossiblyEvaluated(this._properties);\n    for (var i = 0, list = Object.keys(this._values); i < list.length; i += 1) {\n        var property = list[i];\n        result._values[property] = this._values[property].possiblyEvaluate(parameters, canonical, availableImages);\n    }\n    return result;\n};\nTransitioning.prototype.hasTransition = function hasTransition() {\n    for (var i = 0, list = Object.keys(this._values); i < list.length; i += 1) {\n        var property = list[i];\n        if (this._values[property].prior) {\n            return true;\n        }\n    }\n    return false;\n};\nvar Layout = function Layout(properties) {\n    this._properties = properties;\n    this._values = Object.create(properties.defaultPropertyValues);\n};\nLayout.prototype.getValue = function getValue(name) {\n    return clone(this._values[name].value);\n};\nLayout.prototype.setValue = function setValue(name, value) {\n    this._values[name] = new PropertyValue(this._values[name].property, value === null ? undefined : clone(value));\n};\nLayout.prototype.serialize = function serialize() {\n    var result = {};\n    for (var i = 0, list = Object.keys(this._values); i < list.length; i += 1) {\n        var property = list[i];\n        var value = this.getValue(property);\n        if (value !== undefined) {\n            result[property] = value;\n        }\n    }\n    return result;\n};\nLayout.prototype.possiblyEvaluate = function possiblyEvaluate(parameters, canonical, availableImages) {\n    var result = new PossiblyEvaluated(this._properties);\n    for (var i = 0, list = Object.keys(this._values); i < list.length; i += 1) {\n        var property = list[i];\n        result._values[property] = this._values[property].possiblyEvaluate(parameters, canonical, availableImages);\n    }\n    return result;\n};\nvar PossiblyEvaluatedPropertyValue = function PossiblyEvaluatedPropertyValue(property, value, parameters) {\n    this.property = property;\n    this.value = value;\n    this.parameters = parameters;\n};\nPossiblyEvaluatedPropertyValue.prototype.isConstant = function isConstant() {\n    return this.value.kind === 'constant';\n};\nPossiblyEvaluatedPropertyValue.prototype.constantOr = function constantOr(value) {\n    if (this.value.kind === 'constant') {\n        return this.value.value;\n    } else {\n        return value;\n    }\n};\nPossiblyEvaluatedPropertyValue.prototype.evaluate = function evaluate(feature, featureState, canonical, availableImages) {\n    return this.property.evaluate(this.value, this.parameters, feature, featureState, canonical, availableImages);\n};\nvar PossiblyEvaluated = function PossiblyEvaluated(properties) {\n    this._properties = properties;\n    this._values = Object.create(properties.defaultPossiblyEvaluatedValues);\n};\nPossiblyEvaluated.prototype.get = function get(name) {\n    return this._values[name];\n};\nvar DataConstantProperty = function DataConstantProperty(specification) {\n    this.specification = specification;\n};\nDataConstantProperty.prototype.possiblyEvaluate = function possiblyEvaluate(value, parameters) {\n    return value.expression.evaluate(parameters);\n};\nDataConstantProperty.prototype.interpolate = function interpolate$1(a, b, t) {\n    var interp = interpolate[this.specification.type];\n    if (interp) {\n        return interp(a, b, t);\n    } else {\n        return a;\n    }\n};\nvar DataDrivenProperty = function DataDrivenProperty(specification, overrides) {\n    this.specification = specification;\n    this.overrides = overrides;\n};\nDataDrivenProperty.prototype.possiblyEvaluate = function possiblyEvaluate(value, parameters, canonical, availableImages) {\n    if (value.expression.kind === 'constant' || value.expression.kind === 'camera') {\n        return new PossiblyEvaluatedPropertyValue(this, {\n            kind: 'constant',\n            value: value.expression.evaluate(parameters, null, {}, canonical, availableImages)\n        }, parameters);\n    } else {\n        return new PossiblyEvaluatedPropertyValue(this, value.expression, parameters);\n    }\n};\nDataDrivenProperty.prototype.interpolate = function interpolate$2(a, b, t) {\n    if (a.value.kind !== 'constant' || b.value.kind !== 'constant') {\n        return a;\n    }\n    if (a.value.value === undefined || b.value.value === undefined) {\n        return new PossiblyEvaluatedPropertyValue(this, {\n            kind: 'constant',\n            value: undefined\n        }, a.parameters);\n    }\n    var interp = interpolate[this.specification.type];\n    if (interp) {\n        return new PossiblyEvaluatedPropertyValue(this, {\n            kind: 'constant',\n            value: interp(a.value.value, b.value.value, t)\n        }, a.parameters);\n    } else {\n        return a;\n    }\n};\nDataDrivenProperty.prototype.evaluate = function evaluate(value, parameters, feature, featureState, canonical, availableImages) {\n    if (value.kind === 'constant') {\n        return value.value;\n    } else {\n        return value.evaluate(parameters, feature, featureState, canonical, availableImages);\n    }\n};\nvar CrossFadedDataDrivenProperty = function (DataDrivenProperty) {\n    function CrossFadedDataDrivenProperty() {\n        DataDrivenProperty.apply(this, arguments);\n    }\n    if (DataDrivenProperty)\n        CrossFadedDataDrivenProperty.__proto__ = DataDrivenProperty;\n    CrossFadedDataDrivenProperty.prototype = Object.create(DataDrivenProperty && DataDrivenProperty.prototype);\n    CrossFadedDataDrivenProperty.prototype.constructor = CrossFadedDataDrivenProperty;\n    CrossFadedDataDrivenProperty.prototype.possiblyEvaluate = function possiblyEvaluate(value, parameters, canonical, availableImages) {\n        if (value.value === undefined) {\n            return new PossiblyEvaluatedPropertyValue(this, {\n                kind: 'constant',\n                value: undefined\n            }, parameters);\n        } else if (value.expression.kind === 'constant') {\n            var evaluatedValue = value.expression.evaluate(parameters, null, {}, canonical, availableImages);\n            var isImageExpression = value.property.specification.type === 'resolvedImage';\n            var constantValue = isImageExpression && typeof evaluatedValue !== 'string' ? evaluatedValue.name : evaluatedValue;\n            var constant = this._calculate(constantValue, constantValue, constantValue, parameters);\n            return new PossiblyEvaluatedPropertyValue(this, {\n                kind: 'constant',\n                value: constant\n            }, parameters);\n        } else if (value.expression.kind === 'camera') {\n            var cameraVal = this._calculate(value.expression.evaluate({ zoom: parameters.zoom - 1 }), value.expression.evaluate({ zoom: parameters.zoom }), value.expression.evaluate({ zoom: parameters.zoom + 1 }), parameters);\n            return new PossiblyEvaluatedPropertyValue(this, {\n                kind: 'constant',\n                value: cameraVal\n            }, parameters);\n        } else {\n            return new PossiblyEvaluatedPropertyValue(this, value.expression, parameters);\n        }\n    };\n    CrossFadedDataDrivenProperty.prototype.evaluate = function evaluate(value, globals, feature, featureState, canonical, availableImages) {\n        if (value.kind === 'source') {\n            var constant = value.evaluate(globals, feature, featureState, canonical, availableImages);\n            return this._calculate(constant, constant, constant, globals);\n        } else if (value.kind === 'composite') {\n            return this._calculate(value.evaluate({ zoom: Math.floor(globals.zoom) - 1 }, feature, featureState), value.evaluate({ zoom: Math.floor(globals.zoom) }, feature, featureState), value.evaluate({ zoom: Math.floor(globals.zoom) + 1 }, feature, featureState), globals);\n        } else {\n            return value.value;\n        }\n    };\n    CrossFadedDataDrivenProperty.prototype._calculate = function _calculate(min, mid, max, parameters) {\n        var z = parameters.zoom;\n        return z > parameters.zoomHistory.lastIntegerZoom ? {\n            from: min,\n            to: mid\n        } : {\n            from: max,\n            to: mid\n        };\n    };\n    CrossFadedDataDrivenProperty.prototype.interpolate = function interpolate(a) {\n        return a;\n    };\n    return CrossFadedDataDrivenProperty;\n}(DataDrivenProperty);\nvar CrossFadedProperty = function CrossFadedProperty(specification) {\n    this.specification = specification;\n};\nCrossFadedProperty.prototype.possiblyEvaluate = function possiblyEvaluate(value, parameters, canonical, availableImages) {\n    if (value.value === undefined) {\n        return undefined;\n    } else if (value.expression.kind === 'constant') {\n        var constant = value.expression.evaluate(parameters, null, {}, canonical, availableImages);\n        return this._calculate(constant, constant, constant, parameters);\n    } else {\n        return this._calculate(value.expression.evaluate(new EvaluationParameters(Math.floor(parameters.zoom - 1), parameters)), value.expression.evaluate(new EvaluationParameters(Math.floor(parameters.zoom), parameters)), value.expression.evaluate(new EvaluationParameters(Math.floor(parameters.zoom + 1), parameters)), parameters);\n    }\n};\nCrossFadedProperty.prototype._calculate = function _calculate(min, mid, max, parameters) {\n    var z = parameters.zoom;\n    return z > parameters.zoomHistory.lastIntegerZoom ? {\n        from: min,\n        to: mid\n    } : {\n        from: max,\n        to: mid\n    };\n};\nCrossFadedProperty.prototype.interpolate = function interpolate(a) {\n    return a;\n};\nvar ColorRampProperty = function ColorRampProperty(specification) {\n    this.specification = specification;\n};\nColorRampProperty.prototype.possiblyEvaluate = function possiblyEvaluate(value, parameters, canonical, availableImages) {\n    return !!value.expression.evaluate(parameters, null, {}, canonical, availableImages);\n};\nColorRampProperty.prototype.interpolate = function interpolate() {\n    return false;\n};\nvar Properties = function Properties(properties) {\n    this.properties = properties;\n    this.defaultPropertyValues = {};\n    this.defaultTransitionablePropertyValues = {};\n    this.defaultTransitioningPropertyValues = {};\n    this.defaultPossiblyEvaluatedValues = {};\n    this.overridableProperties = [];\n    for (var property in properties) {\n        var prop = properties[property];\n        if (prop.specification.overridable) {\n            this.overridableProperties.push(property);\n        }\n        var defaultPropertyValue = this.defaultPropertyValues[property] = new PropertyValue(prop, undefined);\n        var defaultTransitionablePropertyValue = this.defaultTransitionablePropertyValues[property] = new TransitionablePropertyValue(prop);\n        this.defaultTransitioningPropertyValues[property] = defaultTransitionablePropertyValue.untransitioned();\n        this.defaultPossiblyEvaluatedValues[property] = defaultPropertyValue.possiblyEvaluate({});\n    }\n};\nregister('DataDrivenProperty', DataDrivenProperty);\nregister('DataConstantProperty', DataConstantProperty);\nregister('CrossFadedDataDrivenProperty', CrossFadedDataDrivenProperty);\nregister('CrossFadedProperty', CrossFadedProperty);\nregister('ColorRampProperty', ColorRampProperty);\n\nvar TRANSITION_SUFFIX = '-transition';\nvar StyleLayer = function (Evented) {\n    function StyleLayer(layer, properties) {\n        Evented.call(this);\n        this.id = layer.id;\n        this.type = layer.type;\n        this._featureFilter = {\n            filter: function () {\n                return true;\n            },\n            needGeometry: false\n        };\n        if (layer.type === 'custom') {\n            return;\n        }\n        layer = layer;\n        this.metadata = layer.metadata;\n        this.minzoom = layer.minzoom;\n        this.maxzoom = layer.maxzoom;\n        if (layer.type !== 'background') {\n            this.source = layer.source;\n            this.sourceLayer = layer['source-layer'];\n            this.filter = layer.filter;\n        }\n        if (properties.layout) {\n            this._unevaluatedLayout = new Layout(properties.layout);\n        }\n        if (properties.paint) {\n            this._transitionablePaint = new Transitionable(properties.paint);\n            for (var property in layer.paint) {\n                this.setPaintProperty(property, layer.paint[property], { validate: false });\n            }\n            for (var property$1 in layer.layout) {\n                this.setLayoutProperty(property$1, layer.layout[property$1], { validate: false });\n            }\n            this._transitioningPaint = this._transitionablePaint.untransitioned();\n            this.paint = new PossiblyEvaluated(properties.paint);\n        }\n    }\n    if (Evented)\n        StyleLayer.__proto__ = Evented;\n    StyleLayer.prototype = Object.create(Evented && Evented.prototype);\n    StyleLayer.prototype.constructor = StyleLayer;\n    StyleLayer.prototype.getCrossfadeParameters = function getCrossfadeParameters() {\n        return this._crossfadeParameters;\n    };\n    StyleLayer.prototype.getLayoutProperty = function getLayoutProperty(name) {\n        if (name === 'visibility') {\n            return this.visibility;\n        }\n        return this._unevaluatedLayout.getValue(name);\n    };\n    StyleLayer.prototype.setLayoutProperty = function setLayoutProperty(name, value, options) {\n        if (options === void 0)\n            options = {};\n        if (value !== null && value !== undefined) {\n            var key = 'layers.' + this.id + '.layout.' + name;\n            if (this._validate(validateLayoutProperty$1, key, name, value, options)) {\n                return;\n            }\n        }\n        if (name === 'visibility') {\n            this.visibility = value;\n            return;\n        }\n        this._unevaluatedLayout.setValue(name, value);\n    };\n    StyleLayer.prototype.getPaintProperty = function getPaintProperty(name) {\n        if (endsWith(name, TRANSITION_SUFFIX)) {\n            return this._transitionablePaint.getTransition(name.slice(0, -TRANSITION_SUFFIX.length));\n        } else {\n            return this._transitionablePaint.getValue(name);\n        }\n    };\n    StyleLayer.prototype.setPaintProperty = function setPaintProperty(name, value, options) {\n        if (options === void 0)\n            options = {};\n        if (value !== null && value !== undefined) {\n            var key = 'layers.' + this.id + '.paint.' + name;\n            if (this._validate(validatePaintProperty$1, key, name, value, options)) {\n                return false;\n            }\n        }\n        if (endsWith(name, TRANSITION_SUFFIX)) {\n            this._transitionablePaint.setTransition(name.slice(0, -TRANSITION_SUFFIX.length), value || undefined);\n            return false;\n        } else {\n            var transitionable = this._transitionablePaint._values[name];\n            var isCrossFadedProperty = transitionable.property.specification['property-type'] === 'cross-faded-data-driven';\n            var wasDataDriven = transitionable.value.isDataDriven();\n            var oldValue = transitionable.value;\n            this._transitionablePaint.setValue(name, value);\n            this._handleSpecialPaintPropertyUpdate(name);\n            var newValue = this._transitionablePaint._values[name].value;\n            var isDataDriven = newValue.isDataDriven();\n            return isDataDriven || wasDataDriven || isCrossFadedProperty || this._handleOverridablePaintPropertyUpdate(name, oldValue, newValue);\n        }\n    };\n    StyleLayer.prototype._handleSpecialPaintPropertyUpdate = function _handleSpecialPaintPropertyUpdate(_) {\n    };\n    StyleLayer.prototype._handleOverridablePaintPropertyUpdate = function _handleOverridablePaintPropertyUpdate(name, oldValue, newValue) {\n        return false;\n    };\n    StyleLayer.prototype.isHidden = function isHidden(zoom) {\n        if (this.minzoom && zoom < this.minzoom) {\n            return true;\n        }\n        if (this.maxzoom && zoom >= this.maxzoom) {\n            return true;\n        }\n        return this.visibility === 'none';\n    };\n    StyleLayer.prototype.updateTransitions = function updateTransitions(parameters) {\n        this._transitioningPaint = this._transitionablePaint.transitioned(parameters, this._transitioningPaint);\n    };\n    StyleLayer.prototype.hasTransition = function hasTransition() {\n        return this._transitioningPaint.hasTransition();\n    };\n    StyleLayer.prototype.recalculate = function recalculate(parameters, availableImages) {\n        if (parameters.getCrossfadeParameters) {\n            this._crossfadeParameters = parameters.getCrossfadeParameters();\n        }\n        if (this._unevaluatedLayout) {\n            this.layout = this._unevaluatedLayout.possiblyEvaluate(parameters, undefined, availableImages);\n        }\n        this.paint = this._transitioningPaint.possiblyEvaluate(parameters, undefined, availableImages);\n    };\n    StyleLayer.prototype.serialize = function serialize() {\n        var output = {\n            'id': this.id,\n            'type': this.type,\n            'source': this.source,\n            'source-layer': this.sourceLayer,\n            'metadata': this.metadata,\n            'minzoom': this.minzoom,\n            'maxzoom': this.maxzoom,\n            'filter': this.filter,\n            'layout': this._unevaluatedLayout && this._unevaluatedLayout.serialize(),\n            'paint': this._transitionablePaint && this._transitionablePaint.serialize()\n        };\n        if (this.visibility) {\n            output.layout = output.layout || {};\n            output.layout.visibility = this.visibility;\n        }\n        return filterObject(output, function (value, key) {\n            return value !== undefined && !(key === 'layout' && !Object.keys(value).length) && !(key === 'paint' && !Object.keys(value).length);\n        });\n    };\n    StyleLayer.prototype._validate = function _validate(validate, key, name, value, options) {\n        if (options === void 0)\n            options = {};\n        if (options && options.validate === false) {\n            return false;\n        }\n        return emitValidationErrors(this, validate.call(validateStyle, {\n            key: key,\n            layerType: this.type,\n            objectKey: name,\n            value: value,\n            styleSpec: spec,\n            style: {\n                glyphs: true,\n                sprite: true\n            }\n        }));\n    };\n    StyleLayer.prototype.is3D = function is3D() {\n        return false;\n    };\n    StyleLayer.prototype.isTileClipped = function isTileClipped() {\n        return false;\n    };\n    StyleLayer.prototype.hasOffscreenPass = function hasOffscreenPass() {\n        return false;\n    };\n    StyleLayer.prototype.resize = function resize() {\n    };\n    StyleLayer.prototype.isStateDependent = function isStateDependent() {\n        for (var property in this.paint._values) {\n            var value = this.paint.get(property);\n            if (!(value instanceof PossiblyEvaluatedPropertyValue) || !supportsPropertyExpression(value.property.specification)) {\n                continue;\n            }\n            if ((value.value.kind === 'source' || value.value.kind === 'composite') && value.value.isStateDependent) {\n                return true;\n            }\n        }\n        return false;\n    };\n    return StyleLayer;\n}(Evented);\n\nvar viewTypes = {\n    'Int8': Int8Array,\n    'Uint8': Uint8Array,\n    'Int16': Int16Array,\n    'Uint16': Uint16Array,\n    'Int32': Int32Array,\n    'Uint32': Uint32Array,\n    'Float32': Float32Array\n};\nvar Struct = function Struct(structArray, index) {\n    this._structArray = structArray;\n    this._pos1 = index * this.size;\n    this._pos2 = this._pos1 / 2;\n    this._pos4 = this._pos1 / 4;\n    this._pos8 = this._pos1 / 8;\n};\nvar DEFAULT_CAPACITY = 128;\nvar RESIZE_MULTIPLIER = 5;\nvar StructArray = function StructArray() {\n    this.isTransferred = false;\n    this.capacity = -1;\n    this.resize(0);\n};\nStructArray.serialize = function serialize(array, transferables) {\n    array._trim();\n    if (transferables) {\n        array.isTransferred = true;\n        transferables.push(array.arrayBuffer);\n    }\n    return {\n        length: array.length,\n        arrayBuffer: array.arrayBuffer\n    };\n};\nStructArray.deserialize = function deserialize(input) {\n    var structArray = Object.create(this.prototype);\n    structArray.arrayBuffer = input.arrayBuffer;\n    structArray.length = input.length;\n    structArray.capacity = input.arrayBuffer.byteLength / structArray.bytesPerElement;\n    structArray._refreshViews();\n    return structArray;\n};\nStructArray.prototype._trim = function _trim() {\n    if (this.length !== this.capacity) {\n        this.capacity = this.length;\n        this.arrayBuffer = this.arrayBuffer.slice(0, this.length * this.bytesPerElement);\n        this._refreshViews();\n    }\n};\nStructArray.prototype.clear = function clear() {\n    this.length = 0;\n};\nStructArray.prototype.resize = function resize(n) {\n    this.reserve(n);\n    this.length = n;\n};\nStructArray.prototype.reserve = function reserve(n) {\n    if (n > this.capacity) {\n        this.capacity = Math.max(n, Math.floor(this.capacity * RESIZE_MULTIPLIER), DEFAULT_CAPACITY);\n        this.arrayBuffer = new ArrayBuffer(this.capacity * this.bytesPerElement);\n        var oldUint8Array = this.uint8;\n        this._refreshViews();\n        if (oldUint8Array) {\n            this.uint8.set(oldUint8Array);\n        }\n    }\n};\nStructArray.prototype._refreshViews = function _refreshViews() {\n    throw new Error('_refreshViews() must be implemented by each concrete StructArray layout');\n};\nfunction createLayout(members, alignment) {\n    if (alignment === void 0)\n        alignment = 1;\n    var offset = 0;\n    var maxSize = 0;\n    var layoutMembers = members.map(function (member) {\n        var typeSize = sizeOf(member.type);\n        var memberOffset = offset = align(offset, Math.max(alignment, typeSize));\n        var components = member.components || 1;\n        maxSize = Math.max(maxSize, typeSize);\n        offset += typeSize * components;\n        return {\n            name: member.name,\n            type: member.type,\n            components: components,\n            offset: memberOffset\n        };\n    });\n    var size = align(offset, Math.max(maxSize, alignment));\n    return {\n        members: layoutMembers,\n        size: size,\n        alignment: alignment\n    };\n}\nfunction sizeOf(type) {\n    return viewTypes[type].BYTES_PER_ELEMENT;\n}\nfunction align(offset, size) {\n    return Math.ceil(offset / size) * size;\n}\n\nvar StructArrayLayout2i4 = function (StructArray) {\n    function StructArrayLayout2i4() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout2i4.__proto__ = StructArray;\n    StructArrayLayout2i4.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout2i4.prototype.constructor = StructArrayLayout2i4;\n    StructArrayLayout2i4.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.int16 = new Int16Array(this.arrayBuffer);\n    };\n    StructArrayLayout2i4.prototype.emplaceBack = function emplaceBack(v0, v1) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1);\n    };\n    StructArrayLayout2i4.prototype.emplace = function emplace(i, v0, v1) {\n        var o2 = i * 2;\n        this.int16[o2 + 0] = v0;\n        this.int16[o2 + 1] = v1;\n        return i;\n    };\n    return StructArrayLayout2i4;\n}(StructArray);\nStructArrayLayout2i4.prototype.bytesPerElement = 4;\nregister('StructArrayLayout2i4', StructArrayLayout2i4);\nvar StructArrayLayout4i8 = function (StructArray) {\n    function StructArrayLayout4i8() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout4i8.__proto__ = StructArray;\n    StructArrayLayout4i8.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout4i8.prototype.constructor = StructArrayLayout4i8;\n    StructArrayLayout4i8.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.int16 = new Int16Array(this.arrayBuffer);\n    };\n    StructArrayLayout4i8.prototype.emplaceBack = function emplaceBack(v0, v1, v2, v3) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1, v2, v3);\n    };\n    StructArrayLayout4i8.prototype.emplace = function emplace(i, v0, v1, v2, v3) {\n        var o2 = i * 4;\n        this.int16[o2 + 0] = v0;\n        this.int16[o2 + 1] = v1;\n        this.int16[o2 + 2] = v2;\n        this.int16[o2 + 3] = v3;\n        return i;\n    };\n    return StructArrayLayout4i8;\n}(StructArray);\nStructArrayLayout4i8.prototype.bytesPerElement = 8;\nregister('StructArrayLayout4i8', StructArrayLayout4i8);\nvar StructArrayLayout2i4i12 = function (StructArray) {\n    function StructArrayLayout2i4i12() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout2i4i12.__proto__ = StructArray;\n    StructArrayLayout2i4i12.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout2i4i12.prototype.constructor = StructArrayLayout2i4i12;\n    StructArrayLayout2i4i12.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.int16 = new Int16Array(this.arrayBuffer);\n    };\n    StructArrayLayout2i4i12.prototype.emplaceBack = function emplaceBack(v0, v1, v2, v3, v4, v5) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1, v2, v3, v4, v5);\n    };\n    StructArrayLayout2i4i12.prototype.emplace = function emplace(i, v0, v1, v2, v3, v4, v5) {\n        var o2 = i * 6;\n        this.int16[o2 + 0] = v0;\n        this.int16[o2 + 1] = v1;\n        this.int16[o2 + 2] = v2;\n        this.int16[o2 + 3] = v3;\n        this.int16[o2 + 4] = v4;\n        this.int16[o2 + 5] = v5;\n        return i;\n    };\n    return StructArrayLayout2i4i12;\n}(StructArray);\nStructArrayLayout2i4i12.prototype.bytesPerElement = 12;\nregister('StructArrayLayout2i4i12', StructArrayLayout2i4i12);\nvar StructArrayLayout2i4ub8 = function (StructArray) {\n    function StructArrayLayout2i4ub8() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout2i4ub8.__proto__ = StructArray;\n    StructArrayLayout2i4ub8.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout2i4ub8.prototype.constructor = StructArrayLayout2i4ub8;\n    StructArrayLayout2i4ub8.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.int16 = new Int16Array(this.arrayBuffer);\n    };\n    StructArrayLayout2i4ub8.prototype.emplaceBack = function emplaceBack(v0, v1, v2, v3, v4, v5) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1, v2, v3, v4, v5);\n    };\n    StructArrayLayout2i4ub8.prototype.emplace = function emplace(i, v0, v1, v2, v3, v4, v5) {\n        var o2 = i * 4;\n        var o1 = i * 8;\n        this.int16[o2 + 0] = v0;\n        this.int16[o2 + 1] = v1;\n        this.uint8[o1 + 4] = v2;\n        this.uint8[o1 + 5] = v3;\n        this.uint8[o1 + 6] = v4;\n        this.uint8[o1 + 7] = v5;\n        return i;\n    };\n    return StructArrayLayout2i4ub8;\n}(StructArray);\nStructArrayLayout2i4ub8.prototype.bytesPerElement = 8;\nregister('StructArrayLayout2i4ub8', StructArrayLayout2i4ub8);\nvar StructArrayLayout8ui2ub18 = function (StructArray) {\n    function StructArrayLayout8ui2ub18() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout8ui2ub18.__proto__ = StructArray;\n    StructArrayLayout8ui2ub18.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout8ui2ub18.prototype.constructor = StructArrayLayout8ui2ub18;\n    StructArrayLayout8ui2ub18.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.uint16 = new Uint16Array(this.arrayBuffer);\n    };\n    StructArrayLayout8ui2ub18.prototype.emplaceBack = function emplaceBack(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n    };\n    StructArrayLayout8ui2ub18.prototype.emplace = function emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n        var o2 = i * 9;\n        var o1 = i * 18;\n        this.uint16[o2 + 0] = v0;\n        this.uint16[o2 + 1] = v1;\n        this.uint16[o2 + 2] = v2;\n        this.uint16[o2 + 3] = v3;\n        this.uint16[o2 + 4] = v4;\n        this.uint16[o2 + 5] = v5;\n        this.uint16[o2 + 6] = v6;\n        this.uint16[o2 + 7] = v7;\n        this.uint8[o1 + 16] = v8;\n        this.uint8[o1 + 17] = v9;\n        return i;\n    };\n    return StructArrayLayout8ui2ub18;\n}(StructArray);\nStructArrayLayout8ui2ub18.prototype.bytesPerElement = 18;\nregister('StructArrayLayout8ui2ub18', StructArrayLayout8ui2ub18);\nvar StructArrayLayout4i4ui4i24 = function (StructArray) {\n    function StructArrayLayout4i4ui4i24() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout4i4ui4i24.__proto__ = StructArray;\n    StructArrayLayout4i4ui4i24.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout4i4ui4i24.prototype.constructor = StructArrayLayout4i4ui4i24;\n    StructArrayLayout4i4ui4i24.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.int16 = new Int16Array(this.arrayBuffer);\n        this.uint16 = new Uint16Array(this.arrayBuffer);\n    };\n    StructArrayLayout4i4ui4i24.prototype.emplaceBack = function emplaceBack(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11);\n    };\n    StructArrayLayout4i4ui4i24.prototype.emplace = function emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) {\n        var o2 = i * 12;\n        this.int16[o2 + 0] = v0;\n        this.int16[o2 + 1] = v1;\n        this.int16[o2 + 2] = v2;\n        this.int16[o2 + 3] = v3;\n        this.uint16[o2 + 4] = v4;\n        this.uint16[o2 + 5] = v5;\n        this.uint16[o2 + 6] = v6;\n        this.uint16[o2 + 7] = v7;\n        this.int16[o2 + 8] = v8;\n        this.int16[o2 + 9] = v9;\n        this.int16[o2 + 10] = v10;\n        this.int16[o2 + 11] = v11;\n        return i;\n    };\n    return StructArrayLayout4i4ui4i24;\n}(StructArray);\nStructArrayLayout4i4ui4i24.prototype.bytesPerElement = 24;\nregister('StructArrayLayout4i4ui4i24', StructArrayLayout4i4ui4i24);\nvar StructArrayLayout3f12 = function (StructArray) {\n    function StructArrayLayout3f12() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout3f12.__proto__ = StructArray;\n    StructArrayLayout3f12.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout3f12.prototype.constructor = StructArrayLayout3f12;\n    StructArrayLayout3f12.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.float32 = new Float32Array(this.arrayBuffer);\n    };\n    StructArrayLayout3f12.prototype.emplaceBack = function emplaceBack(v0, v1, v2) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1, v2);\n    };\n    StructArrayLayout3f12.prototype.emplace = function emplace(i, v0, v1, v2) {\n        var o4 = i * 3;\n        this.float32[o4 + 0] = v0;\n        this.float32[o4 + 1] = v1;\n        this.float32[o4 + 2] = v2;\n        return i;\n    };\n    return StructArrayLayout3f12;\n}(StructArray);\nStructArrayLayout3f12.prototype.bytesPerElement = 12;\nregister('StructArrayLayout3f12', StructArrayLayout3f12);\nvar StructArrayLayout1ul4 = function (StructArray) {\n    function StructArrayLayout1ul4() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout1ul4.__proto__ = StructArray;\n    StructArrayLayout1ul4.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout1ul4.prototype.constructor = StructArrayLayout1ul4;\n    StructArrayLayout1ul4.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.uint32 = new Uint32Array(this.arrayBuffer);\n    };\n    StructArrayLayout1ul4.prototype.emplaceBack = function emplaceBack(v0) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0);\n    };\n    StructArrayLayout1ul4.prototype.emplace = function emplace(i, v0) {\n        var o4 = i * 1;\n        this.uint32[o4 + 0] = v0;\n        return i;\n    };\n    return StructArrayLayout1ul4;\n}(StructArray);\nStructArrayLayout1ul4.prototype.bytesPerElement = 4;\nregister('StructArrayLayout1ul4', StructArrayLayout1ul4);\nvar StructArrayLayout6i1ul2ui20 = function (StructArray) {\n    function StructArrayLayout6i1ul2ui20() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout6i1ul2ui20.__proto__ = StructArray;\n    StructArrayLayout6i1ul2ui20.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout6i1ul2ui20.prototype.constructor = StructArrayLayout6i1ul2ui20;\n    StructArrayLayout6i1ul2ui20.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.int16 = new Int16Array(this.arrayBuffer);\n        this.uint32 = new Uint32Array(this.arrayBuffer);\n        this.uint16 = new Uint16Array(this.arrayBuffer);\n    };\n    StructArrayLayout6i1ul2ui20.prototype.emplaceBack = function emplaceBack(v0, v1, v2, v3, v4, v5, v6, v7, v8) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8);\n    };\n    StructArrayLayout6i1ul2ui20.prototype.emplace = function emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8) {\n        var o2 = i * 10;\n        var o4 = i * 5;\n        this.int16[o2 + 0] = v0;\n        this.int16[o2 + 1] = v1;\n        this.int16[o2 + 2] = v2;\n        this.int16[o2 + 3] = v3;\n        this.int16[o2 + 4] = v4;\n        this.int16[o2 + 5] = v5;\n        this.uint32[o4 + 3] = v6;\n        this.uint16[o2 + 8] = v7;\n        this.uint16[o2 + 9] = v8;\n        return i;\n    };\n    return StructArrayLayout6i1ul2ui20;\n}(StructArray);\nStructArrayLayout6i1ul2ui20.prototype.bytesPerElement = 20;\nregister('StructArrayLayout6i1ul2ui20', StructArrayLayout6i1ul2ui20);\nvar StructArrayLayout2i2i2i12 = function (StructArray) {\n    function StructArrayLayout2i2i2i12() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout2i2i2i12.__proto__ = StructArray;\n    StructArrayLayout2i2i2i12.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout2i2i2i12.prototype.constructor = StructArrayLayout2i2i2i12;\n    StructArrayLayout2i2i2i12.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.int16 = new Int16Array(this.arrayBuffer);\n    };\n    StructArrayLayout2i2i2i12.prototype.emplaceBack = function emplaceBack(v0, v1, v2, v3, v4, v5) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1, v2, v3, v4, v5);\n    };\n    StructArrayLayout2i2i2i12.prototype.emplace = function emplace(i, v0, v1, v2, v3, v4, v5) {\n        var o2 = i * 6;\n        this.int16[o2 + 0] = v0;\n        this.int16[o2 + 1] = v1;\n        this.int16[o2 + 2] = v2;\n        this.int16[o2 + 3] = v3;\n        this.int16[o2 + 4] = v4;\n        this.int16[o2 + 5] = v5;\n        return i;\n    };\n    return StructArrayLayout2i2i2i12;\n}(StructArray);\nStructArrayLayout2i2i2i12.prototype.bytesPerElement = 12;\nregister('StructArrayLayout2i2i2i12', StructArrayLayout2i2i2i12);\nvar StructArrayLayout2f1f2i16 = function (StructArray) {\n    function StructArrayLayout2f1f2i16() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout2f1f2i16.__proto__ = StructArray;\n    StructArrayLayout2f1f2i16.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout2f1f2i16.prototype.constructor = StructArrayLayout2f1f2i16;\n    StructArrayLayout2f1f2i16.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.float32 = new Float32Array(this.arrayBuffer);\n        this.int16 = new Int16Array(this.arrayBuffer);\n    };\n    StructArrayLayout2f1f2i16.prototype.emplaceBack = function emplaceBack(v0, v1, v2, v3, v4) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1, v2, v3, v4);\n    };\n    StructArrayLayout2f1f2i16.prototype.emplace = function emplace(i, v0, v1, v2, v3, v4) {\n        var o4 = i * 4;\n        var o2 = i * 8;\n        this.float32[o4 + 0] = v0;\n        this.float32[o4 + 1] = v1;\n        this.float32[o4 + 2] = v2;\n        this.int16[o2 + 6] = v3;\n        this.int16[o2 + 7] = v4;\n        return i;\n    };\n    return StructArrayLayout2f1f2i16;\n}(StructArray);\nStructArrayLayout2f1f2i16.prototype.bytesPerElement = 16;\nregister('StructArrayLayout2f1f2i16', StructArrayLayout2f1f2i16);\nvar StructArrayLayout2ub2f12 = function (StructArray) {\n    function StructArrayLayout2ub2f12() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout2ub2f12.__proto__ = StructArray;\n    StructArrayLayout2ub2f12.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout2ub2f12.prototype.constructor = StructArrayLayout2ub2f12;\n    StructArrayLayout2ub2f12.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.float32 = new Float32Array(this.arrayBuffer);\n    };\n    StructArrayLayout2ub2f12.prototype.emplaceBack = function emplaceBack(v0, v1, v2, v3) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1, v2, v3);\n    };\n    StructArrayLayout2ub2f12.prototype.emplace = function emplace(i, v0, v1, v2, v3) {\n        var o1 = i * 12;\n        var o4 = i * 3;\n        this.uint8[o1 + 0] = v0;\n        this.uint8[o1 + 1] = v1;\n        this.float32[o4 + 1] = v2;\n        this.float32[o4 + 2] = v3;\n        return i;\n    };\n    return StructArrayLayout2ub2f12;\n}(StructArray);\nStructArrayLayout2ub2f12.prototype.bytesPerElement = 12;\nregister('StructArrayLayout2ub2f12', StructArrayLayout2ub2f12);\nvar StructArrayLayout3ui6 = function (StructArray) {\n    function StructArrayLayout3ui6() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout3ui6.__proto__ = StructArray;\n    StructArrayLayout3ui6.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout3ui6.prototype.constructor = StructArrayLayout3ui6;\n    StructArrayLayout3ui6.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.uint16 = new Uint16Array(this.arrayBuffer);\n    };\n    StructArrayLayout3ui6.prototype.emplaceBack = function emplaceBack(v0, v1, v2) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1, v2);\n    };\n    StructArrayLayout3ui6.prototype.emplace = function emplace(i, v0, v1, v2) {\n        var o2 = i * 3;\n        this.uint16[o2 + 0] = v0;\n        this.uint16[o2 + 1] = v1;\n        this.uint16[o2 + 2] = v2;\n        return i;\n    };\n    return StructArrayLayout3ui6;\n}(StructArray);\nStructArrayLayout3ui6.prototype.bytesPerElement = 6;\nregister('StructArrayLayout3ui6', StructArrayLayout3ui6);\nvar StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48 = function (StructArray) {\n    function StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48.__proto__ = StructArray;\n    StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48.prototype.constructor = StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48;\n    StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.int16 = new Int16Array(this.arrayBuffer);\n        this.uint16 = new Uint16Array(this.arrayBuffer);\n        this.uint32 = new Uint32Array(this.arrayBuffer);\n        this.float32 = new Float32Array(this.arrayBuffer);\n    };\n    StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48.prototype.emplaceBack = function emplaceBack(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16);\n    };\n    StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48.prototype.emplace = function emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) {\n        var o2 = i * 24;\n        var o4 = i * 12;\n        var o1 = i * 48;\n        this.int16[o2 + 0] = v0;\n        this.int16[o2 + 1] = v1;\n        this.uint16[o2 + 2] = v2;\n        this.uint16[o2 + 3] = v3;\n        this.uint32[o4 + 2] = v4;\n        this.uint32[o4 + 3] = v5;\n        this.uint32[o4 + 4] = v6;\n        this.uint16[o2 + 10] = v7;\n        this.uint16[o2 + 11] = v8;\n        this.uint16[o2 + 12] = v9;\n        this.float32[o4 + 7] = v10;\n        this.float32[o4 + 8] = v11;\n        this.uint8[o1 + 36] = v12;\n        this.uint8[o1 + 37] = v13;\n        this.uint8[o1 + 38] = v14;\n        this.uint32[o4 + 10] = v15;\n        this.int16[o2 + 22] = v16;\n        return i;\n    };\n    return StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48;\n}(StructArray);\nStructArrayLayout2i2ui3ul3ui2f3ub1ul1i48.prototype.bytesPerElement = 48;\nregister('StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48', StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48);\nvar StructArrayLayout8i15ui1ul4f68 = function (StructArray) {\n    function StructArrayLayout8i15ui1ul4f68() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout8i15ui1ul4f68.__proto__ = StructArray;\n    StructArrayLayout8i15ui1ul4f68.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout8i15ui1ul4f68.prototype.constructor = StructArrayLayout8i15ui1ul4f68;\n    StructArrayLayout8i15ui1ul4f68.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.int16 = new Int16Array(this.arrayBuffer);\n        this.uint16 = new Uint16Array(this.arrayBuffer);\n        this.uint32 = new Uint32Array(this.arrayBuffer);\n        this.float32 = new Float32Array(this.arrayBuffer);\n    };\n    StructArrayLayout8i15ui1ul4f68.prototype.emplaceBack = function emplaceBack(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27);\n    };\n    StructArrayLayout8i15ui1ul4f68.prototype.emplace = function emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) {\n        var o2 = i * 34;\n        var o4 = i * 17;\n        this.int16[o2 + 0] = v0;\n        this.int16[o2 + 1] = v1;\n        this.int16[o2 + 2] = v2;\n        this.int16[o2 + 3] = v3;\n        this.int16[o2 + 4] = v4;\n        this.int16[o2 + 5] = v5;\n        this.int16[o2 + 6] = v6;\n        this.int16[o2 + 7] = v7;\n        this.uint16[o2 + 8] = v8;\n        this.uint16[o2 + 9] = v9;\n        this.uint16[o2 + 10] = v10;\n        this.uint16[o2 + 11] = v11;\n        this.uint16[o2 + 12] = v12;\n        this.uint16[o2 + 13] = v13;\n        this.uint16[o2 + 14] = v14;\n        this.uint16[o2 + 15] = v15;\n        this.uint16[o2 + 16] = v16;\n        this.uint16[o2 + 17] = v17;\n        this.uint16[o2 + 18] = v18;\n        this.uint16[o2 + 19] = v19;\n        this.uint16[o2 + 20] = v20;\n        this.uint16[o2 + 21] = v21;\n        this.uint16[o2 + 22] = v22;\n        this.uint32[o4 + 12] = v23;\n        this.float32[o4 + 13] = v24;\n        this.float32[o4 + 14] = v25;\n        this.float32[o4 + 15] = v26;\n        this.float32[o4 + 16] = v27;\n        return i;\n    };\n    return StructArrayLayout8i15ui1ul4f68;\n}(StructArray);\nStructArrayLayout8i15ui1ul4f68.prototype.bytesPerElement = 68;\nregister('StructArrayLayout8i15ui1ul4f68', StructArrayLayout8i15ui1ul4f68);\nvar StructArrayLayout1f4 = function (StructArray) {\n    function StructArrayLayout1f4() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout1f4.__proto__ = StructArray;\n    StructArrayLayout1f4.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout1f4.prototype.constructor = StructArrayLayout1f4;\n    StructArrayLayout1f4.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.float32 = new Float32Array(this.arrayBuffer);\n    };\n    StructArrayLayout1f4.prototype.emplaceBack = function emplaceBack(v0) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0);\n    };\n    StructArrayLayout1f4.prototype.emplace = function emplace(i, v0) {\n        var o4 = i * 1;\n        this.float32[o4 + 0] = v0;\n        return i;\n    };\n    return StructArrayLayout1f4;\n}(StructArray);\nStructArrayLayout1f4.prototype.bytesPerElement = 4;\nregister('StructArrayLayout1f4', StructArrayLayout1f4);\nvar StructArrayLayout3i6 = function (StructArray) {\n    function StructArrayLayout3i6() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout3i6.__proto__ = StructArray;\n    StructArrayLayout3i6.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout3i6.prototype.constructor = StructArrayLayout3i6;\n    StructArrayLayout3i6.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.int16 = new Int16Array(this.arrayBuffer);\n    };\n    StructArrayLayout3i6.prototype.emplaceBack = function emplaceBack(v0, v1, v2) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1, v2);\n    };\n    StructArrayLayout3i6.prototype.emplace = function emplace(i, v0, v1, v2) {\n        var o2 = i * 3;\n        this.int16[o2 + 0] = v0;\n        this.int16[o2 + 1] = v1;\n        this.int16[o2 + 2] = v2;\n        return i;\n    };\n    return StructArrayLayout3i6;\n}(StructArray);\nStructArrayLayout3i6.prototype.bytesPerElement = 6;\nregister('StructArrayLayout3i6', StructArrayLayout3i6);\nvar StructArrayLayout1ul2ui8 = function (StructArray) {\n    function StructArrayLayout1ul2ui8() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout1ul2ui8.__proto__ = StructArray;\n    StructArrayLayout1ul2ui8.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout1ul2ui8.prototype.constructor = StructArrayLayout1ul2ui8;\n    StructArrayLayout1ul2ui8.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.uint32 = new Uint32Array(this.arrayBuffer);\n        this.uint16 = new Uint16Array(this.arrayBuffer);\n    };\n    StructArrayLayout1ul2ui8.prototype.emplaceBack = function emplaceBack(v0, v1, v2) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1, v2);\n    };\n    StructArrayLayout1ul2ui8.prototype.emplace = function emplace(i, v0, v1, v2) {\n        var o4 = i * 2;\n        var o2 = i * 4;\n        this.uint32[o4 + 0] = v0;\n        this.uint16[o2 + 2] = v1;\n        this.uint16[o2 + 3] = v2;\n        return i;\n    };\n    return StructArrayLayout1ul2ui8;\n}(StructArray);\nStructArrayLayout1ul2ui8.prototype.bytesPerElement = 8;\nregister('StructArrayLayout1ul2ui8', StructArrayLayout1ul2ui8);\nvar StructArrayLayout2ui4 = function (StructArray) {\n    function StructArrayLayout2ui4() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout2ui4.__proto__ = StructArray;\n    StructArrayLayout2ui4.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout2ui4.prototype.constructor = StructArrayLayout2ui4;\n    StructArrayLayout2ui4.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.uint16 = new Uint16Array(this.arrayBuffer);\n    };\n    StructArrayLayout2ui4.prototype.emplaceBack = function emplaceBack(v0, v1) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1);\n    };\n    StructArrayLayout2ui4.prototype.emplace = function emplace(i, v0, v1) {\n        var o2 = i * 2;\n        this.uint16[o2 + 0] = v0;\n        this.uint16[o2 + 1] = v1;\n        return i;\n    };\n    return StructArrayLayout2ui4;\n}(StructArray);\nStructArrayLayout2ui4.prototype.bytesPerElement = 4;\nregister('StructArrayLayout2ui4', StructArrayLayout2ui4);\nvar StructArrayLayout1ui2 = function (StructArray) {\n    function StructArrayLayout1ui2() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout1ui2.__proto__ = StructArray;\n    StructArrayLayout1ui2.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout1ui2.prototype.constructor = StructArrayLayout1ui2;\n    StructArrayLayout1ui2.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.uint16 = new Uint16Array(this.arrayBuffer);\n    };\n    StructArrayLayout1ui2.prototype.emplaceBack = function emplaceBack(v0) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0);\n    };\n    StructArrayLayout1ui2.prototype.emplace = function emplace(i, v0) {\n        var o2 = i * 1;\n        this.uint16[o2 + 0] = v0;\n        return i;\n    };\n    return StructArrayLayout1ui2;\n}(StructArray);\nStructArrayLayout1ui2.prototype.bytesPerElement = 2;\nregister('StructArrayLayout1ui2', StructArrayLayout1ui2);\nvar StructArrayLayout2f8 = function (StructArray) {\n    function StructArrayLayout2f8() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout2f8.__proto__ = StructArray;\n    StructArrayLayout2f8.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout2f8.prototype.constructor = StructArrayLayout2f8;\n    StructArrayLayout2f8.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.float32 = new Float32Array(this.arrayBuffer);\n    };\n    StructArrayLayout2f8.prototype.emplaceBack = function emplaceBack(v0, v1) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1);\n    };\n    StructArrayLayout2f8.prototype.emplace = function emplace(i, v0, v1) {\n        var o4 = i * 2;\n        this.float32[o4 + 0] = v0;\n        this.float32[o4 + 1] = v1;\n        return i;\n    };\n    return StructArrayLayout2f8;\n}(StructArray);\nStructArrayLayout2f8.prototype.bytesPerElement = 8;\nregister('StructArrayLayout2f8', StructArrayLayout2f8);\nvar StructArrayLayout4f16 = function (StructArray) {\n    function StructArrayLayout4f16() {\n        StructArray.apply(this, arguments);\n    }\n    if (StructArray)\n        StructArrayLayout4f16.__proto__ = StructArray;\n    StructArrayLayout4f16.prototype = Object.create(StructArray && StructArray.prototype);\n    StructArrayLayout4f16.prototype.constructor = StructArrayLayout4f16;\n    StructArrayLayout4f16.prototype._refreshViews = function _refreshViews() {\n        this.uint8 = new Uint8Array(this.arrayBuffer);\n        this.float32 = new Float32Array(this.arrayBuffer);\n    };\n    StructArrayLayout4f16.prototype.emplaceBack = function emplaceBack(v0, v1, v2, v3) {\n        var i = this.length;\n        this.resize(i + 1);\n        return this.emplace(i, v0, v1, v2, v3);\n    };\n    StructArrayLayout4f16.prototype.emplace = function emplace(i, v0, v1, v2, v3) {\n        var o4 = i * 4;\n        this.float32[o4 + 0] = v0;\n        this.float32[o4 + 1] = v1;\n        this.float32[o4 + 2] = v2;\n        this.float32[o4 + 3] = v3;\n        return i;\n    };\n    return StructArrayLayout4f16;\n}(StructArray);\nStructArrayLayout4f16.prototype.bytesPerElement = 16;\nregister('StructArrayLayout4f16', StructArrayLayout4f16);\nvar CollisionBoxStruct = function (Struct) {\n    function CollisionBoxStruct() {\n        Struct.apply(this, arguments);\n    }\n    if (Struct)\n        CollisionBoxStruct.__proto__ = Struct;\n    CollisionBoxStruct.prototype = Object.create(Struct && Struct.prototype);\n    CollisionBoxStruct.prototype.constructor = CollisionBoxStruct;\n    var prototypeAccessors = {\n        anchorPointX: { configurable: true },\n        anchorPointY: { configurable: true },\n        x1: { configurable: true },\n        y1: { configurable: true },\n        x2: { configurable: true },\n        y2: { configurable: true },\n        featureIndex: { configurable: true },\n        sourceLayerIndex: { configurable: true },\n        bucketIndex: { configurable: true },\n        anchorPoint: { configurable: true }\n    };\n    prototypeAccessors.anchorPointX.get = function () {\n        return this._structArray.int16[this._pos2 + 0];\n    };\n    prototypeAccessors.anchorPointY.get = function () {\n        return this._structArray.int16[this._pos2 + 1];\n    };\n    prototypeAccessors.x1.get = function () {\n        return this._structArray.int16[this._pos2 + 2];\n    };\n    prototypeAccessors.y1.get = function () {\n        return this._structArray.int16[this._pos2 + 3];\n    };\n    prototypeAccessors.x2.get = function () {\n        return this._structArray.int16[this._pos2 + 4];\n    };\n    prototypeAccessors.y2.get = function () {\n        return this._structArray.int16[this._pos2 + 5];\n    };\n    prototypeAccessors.featureIndex.get = function () {\n        return this._structArray.uint32[this._pos4 + 3];\n    };\n    prototypeAccessors.sourceLayerIndex.get = function () {\n        return this._structArray.uint16[this._pos2 + 8];\n    };\n    prototypeAccessors.bucketIndex.get = function () {\n        return this._structArray.uint16[this._pos2 + 9];\n    };\n    prototypeAccessors.anchorPoint.get = function () {\n        return new pointGeometry(this.anchorPointX, this.anchorPointY);\n    };\n    Object.defineProperties(CollisionBoxStruct.prototype, prototypeAccessors);\n    return CollisionBoxStruct;\n}(Struct);\nCollisionBoxStruct.prototype.size = 20;\nvar CollisionBoxArray = function (StructArrayLayout6i1ul2ui20) {\n    function CollisionBoxArray() {\n        StructArrayLayout6i1ul2ui20.apply(this, arguments);\n    }\n    if (StructArrayLayout6i1ul2ui20)\n        CollisionBoxArray.__proto__ = StructArrayLayout6i1ul2ui20;\n    CollisionBoxArray.prototype = Object.create(StructArrayLayout6i1ul2ui20 && StructArrayLayout6i1ul2ui20.prototype);\n    CollisionBoxArray.prototype.constructor = CollisionBoxArray;\n    CollisionBoxArray.prototype.get = function get(index) {\n        return new CollisionBoxStruct(this, index);\n    };\n    return CollisionBoxArray;\n}(StructArrayLayout6i1ul2ui20);\nregister('CollisionBoxArray', CollisionBoxArray);\nvar PlacedSymbolStruct = function (Struct) {\n    function PlacedSymbolStruct() {\n        Struct.apply(this, arguments);\n    }\n    if (Struct)\n        PlacedSymbolStruct.__proto__ = Struct;\n    PlacedSymbolStruct.prototype = Object.create(Struct && Struct.prototype);\n    PlacedSymbolStruct.prototype.constructor = PlacedSymbolStruct;\n    var prototypeAccessors$1 = {\n        anchorX: { configurable: true },\n        anchorY: { configurable: true },\n        glyphStartIndex: { configurable: true },\n        numGlyphs: { configurable: true },\n        vertexStartIndex: { configurable: true },\n        lineStartIndex: { configurable: true },\n        lineLength: { configurable: true },\n        segment: { configurable: true },\n        lowerSize: { configurable: true },\n        upperSize: { configurable: true },\n        lineOffsetX: { configurable: true },\n        lineOffsetY: { configurable: true },\n        writingMode: { configurable: true },\n        placedOrientation: { configurable: true },\n        hidden: { configurable: true },\n        crossTileID: { configurable: true },\n        associatedIconIndex: { configurable: true }\n    };\n    prototypeAccessors$1.anchorX.get = function () {\n        return this._structArray.int16[this._pos2 + 0];\n    };\n    prototypeAccessors$1.anchorY.get = function () {\n        return this._structArray.int16[this._pos2 + 1];\n    };\n    prototypeAccessors$1.glyphStartIndex.get = function () {\n        return this._structArray.uint16[this._pos2 + 2];\n    };\n    prototypeAccessors$1.numGlyphs.get = function () {\n        return this._structArray.uint16[this._pos2 + 3];\n    };\n    prototypeAccessors$1.vertexStartIndex.get = function () {\n        return this._structArray.uint32[this._pos4 + 2];\n    };\n    prototypeAccessors$1.lineStartIndex.get = function () {\n        return this._structArray.uint32[this._pos4 + 3];\n    };\n    prototypeAccessors$1.lineLength.get = function () {\n        return this._structArray.uint32[this._pos4 + 4];\n    };\n    prototypeAccessors$1.segment.get = function () {\n        return this._structArray.uint16[this._pos2 + 10];\n    };\n    prototypeAccessors$1.lowerSize.get = function () {\n        return this._structArray.uint16[this._pos2 + 11];\n    };\n    prototypeAccessors$1.upperSize.get = function () {\n        return this._structArray.uint16[this._pos2 + 12];\n    };\n    prototypeAccessors$1.lineOffsetX.get = function () {\n        return this._structArray.float32[this._pos4 + 7];\n    };\n    prototypeAccessors$1.lineOffsetY.get = function () {\n        return this._structArray.float32[this._pos4 + 8];\n    };\n    prototypeAccessors$1.writingMode.get = function () {\n        return this._structArray.uint8[this._pos1 + 36];\n    };\n    prototypeAccessors$1.placedOrientation.get = function () {\n        return this._structArray.uint8[this._pos1 + 37];\n    };\n    prototypeAccessors$1.placedOrientation.set = function (x) {\n        this._structArray.uint8[this._pos1 + 37] = x;\n    };\n    prototypeAccessors$1.hidden.get = function () {\n        return this._structArray.uint8[this._pos1 + 38];\n    };\n    prototypeAccessors$1.hidden.set = function (x) {\n        this._structArray.uint8[this._pos1 + 38] = x;\n    };\n    prototypeAccessors$1.crossTileID.get = function () {\n        return this._structArray.uint32[this._pos4 + 10];\n    };\n    prototypeAccessors$1.crossTileID.set = function (x) {\n        this._structArray.uint32[this._pos4 + 10] = x;\n    };\n    prototypeAccessors$1.associatedIconIndex.get = function () {\n        return this._structArray.int16[this._pos2 + 22];\n    };\n    Object.defineProperties(PlacedSymbolStruct.prototype, prototypeAccessors$1);\n    return PlacedSymbolStruct;\n}(Struct);\nPlacedSymbolStruct.prototype.size = 48;\nvar PlacedSymbolArray = function (StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48) {\n    function PlacedSymbolArray() {\n        StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48.apply(this, arguments);\n    }\n    if (StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48)\n        PlacedSymbolArray.__proto__ = StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48;\n    PlacedSymbolArray.prototype = Object.create(StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48 && StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48.prototype);\n    PlacedSymbolArray.prototype.constructor = PlacedSymbolArray;\n    PlacedSymbolArray.prototype.get = function get(index) {\n        return new PlacedSymbolStruct(this, index);\n    };\n    return PlacedSymbolArray;\n}(StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48);\nregister('PlacedSymbolArray', PlacedSymbolArray);\nvar SymbolInstanceStruct = function (Struct) {\n    function SymbolInstanceStruct() {\n        Struct.apply(this, arguments);\n    }\n    if (Struct)\n        SymbolInstanceStruct.__proto__ = Struct;\n    SymbolInstanceStruct.prototype = Object.create(Struct && Struct.prototype);\n    SymbolInstanceStruct.prototype.constructor = SymbolInstanceStruct;\n    var prototypeAccessors$2 = {\n        anchorX: { configurable: true },\n        anchorY: { configurable: true },\n        rightJustifiedTextSymbolIndex: { configurable: true },\n        centerJustifiedTextSymbolIndex: { configurable: true },\n        leftJustifiedTextSymbolIndex: { configurable: true },\n        verticalPlacedTextSymbolIndex: { configurable: true },\n        placedIconSymbolIndex: { configurable: true },\n        verticalPlacedIconSymbolIndex: { configurable: true },\n        key: { configurable: true },\n        textBoxStartIndex: { configurable: true },\n        textBoxEndIndex: { configurable: true },\n        verticalTextBoxStartIndex: { configurable: true },\n        verticalTextBoxEndIndex: { configurable: true },\n        iconBoxStartIndex: { configurable: true },\n        iconBoxEndIndex: { configurable: true },\n        verticalIconBoxStartIndex: { configurable: true },\n        verticalIconBoxEndIndex: { configurable: true },\n        featureIndex: { configurable: true },\n        numHorizontalGlyphVertices: { configurable: true },\n        numVerticalGlyphVertices: { configurable: true },\n        numIconVertices: { configurable: true },\n        numVerticalIconVertices: { configurable: true },\n        useRuntimeCollisionCircles: { configurable: true },\n        crossTileID: { configurable: true },\n        textBoxScale: { configurable: true },\n        textOffset0: { configurable: true },\n        textOffset1: { configurable: true },\n        collisionCircleDiameter: { configurable: true }\n    };\n    prototypeAccessors$2.anchorX.get = function () {\n        return this._structArray.int16[this._pos2 + 0];\n    };\n    prototypeAccessors$2.anchorY.get = function () {\n        return this._structArray.int16[this._pos2 + 1];\n    };\n    prototypeAccessors$2.rightJustifiedTextSymbolIndex.get = function () {\n        return this._structArray.int16[this._pos2 + 2];\n    };\n    prototypeAccessors$2.centerJustifiedTextSymbolIndex.get = function () {\n        return this._structArray.int16[this._pos2 + 3];\n    };\n    prototypeAccessors$2.leftJustifiedTextSymbolIndex.get = function () {\n        return this._structArray.int16[this._pos2 + 4];\n    };\n    prototypeAccessors$2.verticalPlacedTextSymbolIndex.get = function () {\n        return this._structArray.int16[this._pos2 + 5];\n    };\n    prototypeAccessors$2.placedIconSymbolIndex.get = function () {\n        return this._structArray.int16[this._pos2 + 6];\n    };\n    prototypeAccessors$2.verticalPlacedIconSymbolIndex.get = function () {\n        return this._structArray.int16[this._pos2 + 7];\n    };\n    prototypeAccessors$2.key.get = function () {\n        return this._structArray.uint16[this._pos2 + 8];\n    };\n    prototypeAccessors$2.textBoxStartIndex.get = function () {\n        return this._structArray.uint16[this._pos2 + 9];\n    };\n    prototypeAccessors$2.textBoxEndIndex.get = function () {\n        return this._structArray.uint16[this._pos2 + 10];\n    };\n    prototypeAccessors$2.verticalTextBoxStartIndex.get = function () {\n        return this._structArray.uint16[this._pos2 + 11];\n    };\n    prototypeAccessors$2.verticalTextBoxEndIndex.get = function () {\n        return this._structArray.uint16[this._pos2 + 12];\n    };\n    prototypeAccessors$2.iconBoxStartIndex.get = function () {\n        return this._structArray.uint16[this._pos2 + 13];\n    };\n    prototypeAccessors$2.iconBoxEndIndex.get = function () {\n        return this._structArray.uint16[this._pos2 + 14];\n    };\n    prototypeAccessors$2.verticalIconBoxStartIndex.get = function () {\n        return this._structArray.uint16[this._pos2 + 15];\n    };\n    prototypeAccessors$2.verticalIconBoxEndIndex.get = function () {\n        return this._structArray.uint16[this._pos2 + 16];\n    };\n    prototypeAccessors$2.featureIndex.get = function () {\n        return this._structArray.uint16[this._pos2 + 17];\n    };\n    prototypeAccessors$2.numHorizontalGlyphVertices.get = function () {\n        return this._structArray.uint16[this._pos2 + 18];\n    };\n    prototypeAccessors$2.numVerticalGlyphVertices.get = function () {\n        return this._structArray.uint16[this._pos2 + 19];\n    };\n    prototypeAccessors$2.numIconVertices.get = function () {\n        return this._structArray.uint16[this._pos2 + 20];\n    };\n    prototypeAccessors$2.numVerticalIconVertices.get = function () {\n        return this._structArray.uint16[this._pos2 + 21];\n    };\n    prototypeAccessors$2.useRuntimeCollisionCircles.get = function () {\n        return this._structArray.uint16[this._pos2 + 22];\n    };\n    prototypeAccessors$2.crossTileID.get = function () {\n        return this._structArray.uint32[this._pos4 + 12];\n    };\n    prototypeAccessors$2.crossTileID.set = function (x) {\n        this._structArray.uint32[this._pos4 + 12] = x;\n    };\n    prototypeAccessors$2.textBoxScale.get = function () {\n        return this._structArray.float32[this._pos4 + 13];\n    };\n    prototypeAccessors$2.textOffset0.get = function () {\n        return this._structArray.float32[this._pos4 + 14];\n    };\n    prototypeAccessors$2.textOffset1.get = function () {\n        return this._structArray.float32[this._pos4 + 15];\n    };\n    prototypeAccessors$2.collisionCircleDiameter.get = function () {\n        return this._structArray.float32[this._pos4 + 16];\n    };\n    Object.defineProperties(SymbolInstanceStruct.prototype, prototypeAccessors$2);\n    return SymbolInstanceStruct;\n}(Struct);\nSymbolInstanceStruct.prototype.size = 68;\nvar SymbolInstanceArray = function (StructArrayLayout8i15ui1ul4f68) {\n    function SymbolInstanceArray() {\n        StructArrayLayout8i15ui1ul4f68.apply(this, arguments);\n    }\n    if (StructArrayLayout8i15ui1ul4f68)\n        SymbolInstanceArray.__proto__ = StructArrayLayout8i15ui1ul4f68;\n    SymbolInstanceArray.prototype = Object.create(StructArrayLayout8i15ui1ul4f68 && StructArrayLayout8i15ui1ul4f68.prototype);\n    SymbolInstanceArray.prototype.constructor = SymbolInstanceArray;\n    SymbolInstanceArray.prototype.get = function get(index) {\n        return new SymbolInstanceStruct(this, index);\n    };\n    return SymbolInstanceArray;\n}(StructArrayLayout8i15ui1ul4f68);\nregister('SymbolInstanceArray', SymbolInstanceArray);\nvar GlyphOffsetArray = function (StructArrayLayout1f4) {\n    function GlyphOffsetArray() {\n        StructArrayLayout1f4.apply(this, arguments);\n    }\n    if (StructArrayLayout1f4)\n        GlyphOffsetArray.__proto__ = StructArrayLayout1f4;\n    GlyphOffsetArray.prototype = Object.create(StructArrayLayout1f4 && StructArrayLayout1f4.prototype);\n    GlyphOffsetArray.prototype.constructor = GlyphOffsetArray;\n    GlyphOffsetArray.prototype.getoffsetX = function getoffsetX(index) {\n        return this.float32[index * 1 + 0];\n    };\n    return GlyphOffsetArray;\n}(StructArrayLayout1f4);\nregister('GlyphOffsetArray', GlyphOffsetArray);\nvar SymbolLineVertexArray = function (StructArrayLayout3i6) {\n    function SymbolLineVertexArray() {\n        StructArrayLayout3i6.apply(this, arguments);\n    }\n    if (StructArrayLayout3i6)\n        SymbolLineVertexArray.__proto__ = StructArrayLayout3i6;\n    SymbolLineVertexArray.prototype = Object.create(StructArrayLayout3i6 && StructArrayLayout3i6.prototype);\n    SymbolLineVertexArray.prototype.constructor = SymbolLineVertexArray;\n    SymbolLineVertexArray.prototype.getx = function getx(index) {\n        return this.int16[index * 3 + 0];\n    };\n    SymbolLineVertexArray.prototype.gety = function gety(index) {\n        return this.int16[index * 3 + 1];\n    };\n    SymbolLineVertexArray.prototype.gettileUnitDistanceFromAnchor = function gettileUnitDistanceFromAnchor(index) {\n        return this.int16[index * 3 + 2];\n    };\n    return SymbolLineVertexArray;\n}(StructArrayLayout3i6);\nregister('SymbolLineVertexArray', SymbolLineVertexArray);\nvar FeatureIndexStruct = function (Struct) {\n    function FeatureIndexStruct() {\n        Struct.apply(this, arguments);\n    }\n    if (Struct)\n        FeatureIndexStruct.__proto__ = Struct;\n    FeatureIndexStruct.prototype = Object.create(Struct && Struct.prototype);\n    FeatureIndexStruct.prototype.constructor = FeatureIndexStruct;\n    var prototypeAccessors$3 = {\n        featureIndex: { configurable: true },\n        sourceLayerIndex: { configurable: true },\n        bucketIndex: { configurable: true }\n    };\n    prototypeAccessors$3.featureIndex.get = function () {\n        return this._structArray.uint32[this._pos4 + 0];\n    };\n    prototypeAccessors$3.sourceLayerIndex.get = function () {\n        return this._structArray.uint16[this._pos2 + 2];\n    };\n    prototypeAccessors$3.bucketIndex.get = function () {\n        return this._structArray.uint16[this._pos2 + 3];\n    };\n    Object.defineProperties(FeatureIndexStruct.prototype, prototypeAccessors$3);\n    return FeatureIndexStruct;\n}(Struct);\nFeatureIndexStruct.prototype.size = 8;\nvar FeatureIndexArray = function (StructArrayLayout1ul2ui8) {\n    function FeatureIndexArray() {\n        StructArrayLayout1ul2ui8.apply(this, arguments);\n    }\n    if (StructArrayLayout1ul2ui8)\n        FeatureIndexArray.__proto__ = StructArrayLayout1ul2ui8;\n    FeatureIndexArray.prototype = Object.create(StructArrayLayout1ul2ui8 && StructArrayLayout1ul2ui8.prototype);\n    FeatureIndexArray.prototype.constructor = FeatureIndexArray;\n    FeatureIndexArray.prototype.get = function get(index) {\n        return new FeatureIndexStruct(this, index);\n    };\n    return FeatureIndexArray;\n}(StructArrayLayout1ul2ui8);\nregister('FeatureIndexArray', FeatureIndexArray);\n\nvar layout$1 = createLayout([{\n        name: 'a_pos',\n        components: 2,\n        type: 'Int16'\n    }], 4);\nvar members = layout$1.members;\n\nvar SegmentVector = function SegmentVector(segments) {\n    if (segments === void 0)\n        segments = [];\n    this.segments = segments;\n};\nSegmentVector.prototype.prepareSegment = function prepareSegment(numVertices, layoutVertexArray, indexArray, sortKey) {\n    var segment = this.segments[this.segments.length - 1];\n    if (numVertices > SegmentVector.MAX_VERTEX_ARRAY_LENGTH) {\n        warnOnce('Max vertices per segment is ' + SegmentVector.MAX_VERTEX_ARRAY_LENGTH + ': bucket requested ' + numVertices);\n    }\n    if (!segment || segment.vertexLength + numVertices > SegmentVector.MAX_VERTEX_ARRAY_LENGTH || segment.sortKey !== sortKey) {\n        segment = {\n            vertexOffset: layoutVertexArray.length,\n            primitiveOffset: indexArray.length,\n            vertexLength: 0,\n            primitiveLength: 0\n        };\n        if (sortKey !== undefined) {\n            segment.sortKey = sortKey;\n        }\n        this.segments.push(segment);\n    }\n    return segment;\n};\nSegmentVector.prototype.get = function get() {\n    return this.segments;\n};\nSegmentVector.prototype.destroy = function destroy() {\n    for (var i = 0, list = this.segments; i < list.length; i += 1) {\n        var segment = list[i];\n        for (var k in segment.vaos) {\n            segment.vaos[k].destroy();\n        }\n    }\n};\nSegmentVector.simpleSegment = function simpleSegment(vertexOffset, primitiveOffset, vertexLength, primitiveLength) {\n    return new SegmentVector([{\n            vertexOffset: vertexOffset,\n            primitiveOffset: primitiveOffset,\n            vertexLength: vertexLength,\n            primitiveLength: primitiveLength,\n            vaos: {},\n            sortKey: 0\n        }]);\n};\nSegmentVector.MAX_VERTEX_ARRAY_LENGTH = Math.pow(2, 16) - 1;\nregister('SegmentVector', SegmentVector);\n\nfunction packUint8ToFloat(a, b) {\n    a = clamp(Math.floor(a), 0, 255);\n    b = clamp(Math.floor(b), 0, 255);\n    return 256 * a + b;\n}\n\nvar patternAttributes = createLayout([\n    {\n        name: 'a_pattern_from',\n        components: 4,\n        type: 'Uint16'\n    },\n    {\n        name: 'a_pattern_to',\n        components: 4,\n        type: 'Uint16'\n    },\n    {\n        name: 'a_pixel_ratio_from',\n        components: 1,\n        type: 'Uint8'\n    },\n    {\n        name: 'a_pixel_ratio_to',\n        components: 1,\n        type: 'Uint8'\n    }\n]);\n\nvar murmurhash3_gc = createCommonjsModule(function (module) {\nfunction murmurhash3_32_gc(key, seed) {\n    var remainder, bytes, h1, h1b, c1, c2, k1, i;\n    remainder = key.length & 3;\n    bytes = key.length - remainder;\n    h1 = seed;\n    c1 = 3432918353;\n    c2 = 461845907;\n    i = 0;\n    while (i < bytes) {\n        k1 = key.charCodeAt(i) & 255 | (key.charCodeAt(++i) & 255) << 8 | (key.charCodeAt(++i) & 255) << 16 | (key.charCodeAt(++i) & 255) << 24;\n        ++i;\n        k1 = (k1 & 65535) * c1 + (((k1 >>> 16) * c1 & 65535) << 16) & 4294967295;\n        k1 = k1 << 15 | k1 >>> 17;\n        k1 = (k1 & 65535) * c2 + (((k1 >>> 16) * c2 & 65535) << 16) & 4294967295;\n        h1 ^= k1;\n        h1 = h1 << 13 | h1 >>> 19;\n        h1b = (h1 & 65535) * 5 + (((h1 >>> 16) * 5 & 65535) << 16) & 4294967295;\n        h1 = (h1b & 65535) + 27492 + (((h1b >>> 16) + 58964 & 65535) << 16);\n    }\n    k1 = 0;\n    switch (remainder) {\n    case 3:\n        k1 ^= (key.charCodeAt(i + 2) & 255) << 16;\n    case 2:\n        k1 ^= (key.charCodeAt(i + 1) & 255) << 8;\n    case 1:\n        k1 ^= key.charCodeAt(i) & 255;\n        k1 = (k1 & 65535) * c1 + (((k1 >>> 16) * c1 & 65535) << 16) & 4294967295;\n        k1 = k1 << 15 | k1 >>> 17;\n        k1 = (k1 & 65535) * c2 + (((k1 >>> 16) * c2 & 65535) << 16) & 4294967295;\n        h1 ^= k1;\n    }\n    h1 ^= key.length;\n    h1 ^= h1 >>> 16;\n    h1 = (h1 & 65535) * 2246822507 + (((h1 >>> 16) * 2246822507 & 65535) << 16) & 4294967295;\n    h1 ^= h1 >>> 13;\n    h1 = (h1 & 65535) * 3266489909 + (((h1 >>> 16) * 3266489909 & 65535) << 16) & 4294967295;\n    h1 ^= h1 >>> 16;\n    return h1 >>> 0;\n}\n{\n    module.exports = murmurhash3_32_gc;\n}\n});\n\nvar murmurhash2_gc = createCommonjsModule(function (module) {\nfunction murmurhash2_32_gc(str, seed) {\n    var l = str.length, h = seed ^ l, i = 0, k;\n    while (l >= 4) {\n        k = str.charCodeAt(i) & 255 | (str.charCodeAt(++i) & 255) << 8 | (str.charCodeAt(++i) & 255) << 16 | (str.charCodeAt(++i) & 255) << 24;\n        k = (k & 65535) * 1540483477 + (((k >>> 16) * 1540483477 & 65535) << 16);\n        k ^= k >>> 24;\n        k = (k & 65535) * 1540483477 + (((k >>> 16) * 1540483477 & 65535) << 16);\n        h = (h & 65535) * 1540483477 + (((h >>> 16) * 1540483477 & 65535) << 16) ^ k;\n        l -= 4;\n        ++i;\n    }\n    switch (l) {\n    case 3:\n        h ^= (str.charCodeAt(i + 2) & 255) << 16;\n    case 2:\n        h ^= (str.charCodeAt(i + 1) & 255) << 8;\n    case 1:\n        h ^= str.charCodeAt(i) & 255;\n        h = (h & 65535) * 1540483477 + (((h >>> 16) * 1540483477 & 65535) << 16);\n    }\n    h ^= h >>> 13;\n    h = (h & 65535) * 1540483477 + (((h >>> 16) * 1540483477 & 65535) << 16);\n    h ^= h >>> 15;\n    return h >>> 0;\n}\n{\n    module.exports = murmurhash2_32_gc;\n}\n});\n\nvar murmurhashJs = murmurhash3_gc;\nvar murmur3_1 = murmurhash3_gc;\nvar murmur2_1 = murmurhash2_gc;\nmurmurhashJs.murmur3 = murmur3_1;\nmurmurhashJs.murmur2 = murmur2_1;\n\nvar FeaturePositionMap = function FeaturePositionMap() {\n    this.ids = [];\n    this.positions = [];\n    this.indexed = false;\n};\nFeaturePositionMap.prototype.add = function add(id, index, start, end) {\n    this.ids.push(getNumericId(id));\n    this.positions.push(index, start, end);\n};\nFeaturePositionMap.prototype.getPositions = function getPositions(id) {\n    var intId = getNumericId(id);\n    var i = 0;\n    var j = this.ids.length - 1;\n    while (i < j) {\n        var m = i + j >> 1;\n        if (this.ids[m] >= intId) {\n            j = m;\n        } else {\n            i = m + 1;\n        }\n    }\n    var positions = [];\n    while (this.ids[i] === intId) {\n        var index = this.positions[3 * i];\n        var start = this.positions[3 * i + 1];\n        var end = this.positions[3 * i + 2];\n        positions.push({\n            index: index,\n            start: start,\n            end: end\n        });\n        i++;\n    }\n    return positions;\n};\nFeaturePositionMap.serialize = function serialize(map, transferables) {\n    var ids = new Float64Array(map.ids);\n    var positions = new Uint32Array(map.positions);\n    sort(ids, positions, 0, ids.length - 1);\n    if (transferables) {\n        transferables.push(ids.buffer, positions.buffer);\n    }\n    return {\n        ids: ids,\n        positions: positions\n    };\n};\nFeaturePositionMap.deserialize = function deserialize(obj) {\n    var map = new FeaturePositionMap();\n    map.ids = obj.ids;\n    map.positions = obj.positions;\n    map.indexed = true;\n    return map;\n};\nvar MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;\nfunction getNumericId(value) {\n    var numValue = +value;\n    if (!isNaN(numValue) && numValue <= MAX_SAFE_INTEGER) {\n        return numValue;\n    }\n    return murmurhashJs(String(value));\n}\nfunction sort(ids, positions, left, right) {\n    while (left < right) {\n        var pivot = ids[left + right >> 1];\n        var i = left - 1;\n        var j = right + 1;\n        while (true) {\n            do {\n                i++;\n            } while (ids[i] < pivot);\n            do {\n                j--;\n            } while (ids[j] > pivot);\n            if (i >= j) {\n                break;\n            }\n            swap(ids, i, j);\n            swap(positions, 3 * i, 3 * j);\n            swap(positions, 3 * i + 1, 3 * j + 1);\n            swap(positions, 3 * i + 2, 3 * j + 2);\n        }\n        if (j - left < right - j) {\n            sort(ids, positions, left, j);\n            left = j + 1;\n        } else {\n            sort(ids, positions, j + 1, right);\n            right = j;\n        }\n    }\n}\nfunction swap(arr, i, j) {\n    var tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\nregister('FeaturePositionMap', FeaturePositionMap);\n\nvar Uniform = function Uniform(context, location) {\n    this.gl = context.gl;\n    this.location = location;\n};\nvar Uniform1i = function (Uniform) {\n    function Uniform1i(context, location) {\n        Uniform.call(this, context, location);\n        this.current = 0;\n    }\n    if (Uniform)\n        Uniform1i.__proto__ = Uniform;\n    Uniform1i.prototype = Object.create(Uniform && Uniform.prototype);\n    Uniform1i.prototype.constructor = Uniform1i;\n    Uniform1i.prototype.set = function set(v) {\n        if (this.current !== v) {\n            this.current = v;\n            this.gl.uniform1i(this.location, v);\n        }\n    };\n    return Uniform1i;\n}(Uniform);\nvar Uniform1f = function (Uniform) {\n    function Uniform1f(context, location) {\n        Uniform.call(this, context, location);\n        this.current = 0;\n    }\n    if (Uniform)\n        Uniform1f.__proto__ = Uniform;\n    Uniform1f.prototype = Object.create(Uniform && Uniform.prototype);\n    Uniform1f.prototype.constructor = Uniform1f;\n    Uniform1f.prototype.set = function set(v) {\n        if (this.current !== v) {\n            this.current = v;\n            this.gl.uniform1f(this.location, v);\n        }\n    };\n    return Uniform1f;\n}(Uniform);\nvar Uniform2f = function (Uniform) {\n    function Uniform2f(context, location) {\n        Uniform.call(this, context, location);\n        this.current = [\n            0,\n            0\n        ];\n    }\n    if (Uniform)\n        Uniform2f.__proto__ = Uniform;\n    Uniform2f.prototype = Object.create(Uniform && Uniform.prototype);\n    Uniform2f.prototype.constructor = Uniform2f;\n    Uniform2f.prototype.set = function set(v) {\n        if (v[0] !== this.current[0] || v[1] !== this.current[1]) {\n            this.current = v;\n            this.gl.uniform2f(this.location, v[0], v[1]);\n        }\n    };\n    return Uniform2f;\n}(Uniform);\nvar Uniform3f = function (Uniform) {\n    function Uniform3f(context, location) {\n        Uniform.call(this, context, location);\n        this.current = [\n            0,\n            0,\n            0\n        ];\n    }\n    if (Uniform)\n        Uniform3f.__proto__ = Uniform;\n    Uniform3f.prototype = Object.create(Uniform && Uniform.prototype);\n    Uniform3f.prototype.constructor = Uniform3f;\n    Uniform3f.prototype.set = function set(v) {\n        if (v[0] !== this.current[0] || v[1] !== this.current[1] || v[2] !== this.current[2]) {\n            this.current = v;\n            this.gl.uniform3f(this.location, v[0], v[1], v[2]);\n        }\n    };\n    return Uniform3f;\n}(Uniform);\nvar Uniform4f = function (Uniform) {\n    function Uniform4f(context, location) {\n        Uniform.call(this, context, location);\n        this.current = [\n            0,\n            0,\n            0,\n            0\n        ];\n    }\n    if (Uniform)\n        Uniform4f.__proto__ = Uniform;\n    Uniform4f.prototype = Object.create(Uniform && Uniform.prototype);\n    Uniform4f.prototype.constructor = Uniform4f;\n    Uniform4f.prototype.set = function set(v) {\n        if (v[0] !== this.current[0] || v[1] !== this.current[1] || v[2] !== this.current[2] || v[3] !== this.current[3]) {\n            this.current = v;\n            this.gl.uniform4f(this.location, v[0], v[1], v[2], v[3]);\n        }\n    };\n    return Uniform4f;\n}(Uniform);\nvar UniformColor = function (Uniform) {\n    function UniformColor(context, location) {\n        Uniform.call(this, context, location);\n        this.current = Color.transparent;\n    }\n    if (Uniform)\n        UniformColor.__proto__ = Uniform;\n    UniformColor.prototype = Object.create(Uniform && Uniform.prototype);\n    UniformColor.prototype.constructor = UniformColor;\n    UniformColor.prototype.set = function set(v) {\n        if (v.r !== this.current.r || v.g !== this.current.g || v.b !== this.current.b || v.a !== this.current.a) {\n            this.current = v;\n            this.gl.uniform4f(this.location, v.r, v.g, v.b, v.a);\n        }\n    };\n    return UniformColor;\n}(Uniform);\nvar emptyMat4 = new Float32Array(16);\nvar UniformMatrix4f = function (Uniform) {\n    function UniformMatrix4f(context, location) {\n        Uniform.call(this, context, location);\n        this.current = emptyMat4;\n    }\n    if (Uniform)\n        UniformMatrix4f.__proto__ = Uniform;\n    UniformMatrix4f.prototype = Object.create(Uniform && Uniform.prototype);\n    UniformMatrix4f.prototype.constructor = UniformMatrix4f;\n    UniformMatrix4f.prototype.set = function set(v) {\n        if (v[12] !== this.current[12] || v[0] !== this.current[0]) {\n            this.current = v;\n            this.gl.uniformMatrix4fv(this.location, false, v);\n            return;\n        }\n        for (var i = 1; i < 16; i++) {\n            if (v[i] !== this.current[i]) {\n                this.current = v;\n                this.gl.uniformMatrix4fv(this.location, false, v);\n                break;\n            }\n        }\n    };\n    return UniformMatrix4f;\n}(Uniform);\n\nfunction packColor(color) {\n    return [\n        packUint8ToFloat(255 * color.r, 255 * color.g),\n        packUint8ToFloat(255 * color.b, 255 * color.a)\n    ];\n}\nvar ConstantBinder = function ConstantBinder(value, names, type) {\n    this.value = value;\n    this.uniformNames = names.map(function (name) {\n        return 'u_' + name;\n    });\n    this.type = type;\n};\nConstantBinder.prototype.setUniform = function setUniform(uniform, globals, currentValue) {\n    uniform.set(currentValue.constantOr(this.value));\n};\nConstantBinder.prototype.getBinding = function getBinding(context, location, _) {\n    return this.type === 'color' ? new UniformColor(context, location) : new Uniform1f(context, location);\n};\nvar CrossFadedConstantBinder = function CrossFadedConstantBinder(value, names) {\n    this.uniformNames = names.map(function (name) {\n        return 'u_' + name;\n    });\n    this.patternFrom = null;\n    this.patternTo = null;\n    this.pixelRatioFrom = 1;\n    this.pixelRatioTo = 1;\n};\nCrossFadedConstantBinder.prototype.setConstantPatternPositions = function setConstantPatternPositions(posTo, posFrom) {\n    this.pixelRatioFrom = posFrom.pixelRatio;\n    this.pixelRatioTo = posTo.pixelRatio;\n    this.patternFrom = posFrom.tlbr;\n    this.patternTo = posTo.tlbr;\n};\nCrossFadedConstantBinder.prototype.setUniform = function setUniform(uniform, globals, currentValue, uniformName) {\n    var pos = uniformName === 'u_pattern_to' ? this.patternTo : uniformName === 'u_pattern_from' ? this.patternFrom : uniformName === 'u_pixel_ratio_to' ? this.pixelRatioTo : uniformName === 'u_pixel_ratio_from' ? this.pixelRatioFrom : null;\n    if (pos) {\n        uniform.set(pos);\n    }\n};\nCrossFadedConstantBinder.prototype.getBinding = function getBinding(context, location, name) {\n    return name.substr(0, 9) === 'u_pattern' ? new Uniform4f(context, location) : new Uniform1f(context, location);\n};\nvar SourceExpressionBinder = function SourceExpressionBinder(expression, names, type, PaintVertexArray) {\n    this.expression = expression;\n    this.type = type;\n    this.maxValue = 0;\n    this.paintVertexAttributes = names.map(function (name) {\n        return {\n            name: 'a_' + name,\n            type: 'Float32',\n            components: type === 'color' ? 2 : 1,\n            offset: 0\n        };\n    });\n    this.paintVertexArray = new PaintVertexArray();\n};\nSourceExpressionBinder.prototype.populatePaintArray = function populatePaintArray(newLength, feature, imagePositions, canonical, formattedSection) {\n    var start = this.paintVertexArray.length;\n    var value = this.expression.evaluate(new EvaluationParameters(0), feature, {}, canonical, [], formattedSection);\n    this.paintVertexArray.resize(newLength);\n    this._setPaintValue(start, newLength, value);\n};\nSourceExpressionBinder.prototype.updatePaintArray = function updatePaintArray(start, end, feature, featureState) {\n    var value = this.expression.evaluate({ zoom: 0 }, feature, featureState);\n    this._setPaintValue(start, end, value);\n};\nSourceExpressionBinder.prototype._setPaintValue = function _setPaintValue(start, end, value) {\n    if (this.type === 'color') {\n        var color = packColor(value);\n        for (var i = start; i < end; i++) {\n            this.paintVertexArray.emplace(i, color[0], color[1]);\n        }\n    } else {\n        for (var i$1 = start; i$1 < end; i$1++) {\n            this.paintVertexArray.emplace(i$1, value);\n        }\n        this.maxValue = Math.max(this.maxValue, Math.abs(value));\n    }\n};\nSourceExpressionBinder.prototype.upload = function upload(context) {\n    if (this.paintVertexArray && this.paintVertexArray.arrayBuffer) {\n        if (this.paintVertexBuffer && this.paintVertexBuffer.buffer) {\n            this.paintVertexBuffer.updateData(this.paintVertexArray);\n        } else {\n            this.paintVertexBuffer = context.createVertexBuffer(this.paintVertexArray, this.paintVertexAttributes, this.expression.isStateDependent);\n        }\n    }\n};\nSourceExpressionBinder.prototype.destroy = function destroy() {\n    if (this.paintVertexBuffer) {\n        this.paintVertexBuffer.destroy();\n    }\n};\nvar CompositeExpressionBinder = function CompositeExpressionBinder(expression, names, type, useIntegerZoom, zoom, PaintVertexArray) {\n    this.expression = expression;\n    this.uniformNames = names.map(function (name) {\n        return 'u_' + name + '_t';\n    });\n    this.type = type;\n    this.useIntegerZoom = useIntegerZoom;\n    this.zoom = zoom;\n    this.maxValue = 0;\n    this.paintVertexAttributes = names.map(function (name) {\n        return {\n            name: 'a_' + name,\n            type: 'Float32',\n            components: type === 'color' ? 4 : 2,\n            offset: 0\n        };\n    });\n    this.paintVertexArray = new PaintVertexArray();\n};\nCompositeExpressionBinder.prototype.populatePaintArray = function populatePaintArray(newLength, feature, imagePositions, canonical, formattedSection) {\n    var min = this.expression.evaluate(new EvaluationParameters(this.zoom), feature, {}, canonical, [], formattedSection);\n    var max = this.expression.evaluate(new EvaluationParameters(this.zoom + 1), feature, {}, canonical, [], formattedSection);\n    var start = this.paintVertexArray.length;\n    this.paintVertexArray.resize(newLength);\n    this._setPaintValue(start, newLength, min, max);\n};\nCompositeExpressionBinder.prototype.updatePaintArray = function updatePaintArray(start, end, feature, featureState) {\n    var min = this.expression.evaluate({ zoom: this.zoom }, feature, featureState);\n    var max = this.expression.evaluate({ zoom: this.zoom + 1 }, feature, featureState);\n    this._setPaintValue(start, end, min, max);\n};\nCompositeExpressionBinder.prototype._setPaintValue = function _setPaintValue(start, end, min, max) {\n    if (this.type === 'color') {\n        var minColor = packColor(min);\n        var maxColor = packColor(max);\n        for (var i = start; i < end; i++) {\n            this.paintVertexArray.emplace(i, minColor[0], minColor[1], maxColor[0], maxColor[1]);\n        }\n    } else {\n        for (var i$1 = start; i$1 < end; i$1++) {\n            this.paintVertexArray.emplace(i$1, min, max);\n        }\n        this.maxValue = Math.max(this.maxValue, Math.abs(min), Math.abs(max));\n    }\n};\nCompositeExpressionBinder.prototype.upload = function upload(context) {\n    if (this.paintVertexArray && this.paintVertexArray.arrayBuffer) {\n        if (this.paintVertexBuffer && this.paintVertexBuffer.buffer) {\n            this.paintVertexBuffer.updateData(this.paintVertexArray);\n        } else {\n            this.paintVertexBuffer = context.createVertexBuffer(this.paintVertexArray, this.paintVertexAttributes, this.expression.isStateDependent);\n        }\n    }\n};\nCompositeExpressionBinder.prototype.destroy = function destroy() {\n    if (this.paintVertexBuffer) {\n        this.paintVertexBuffer.destroy();\n    }\n};\nCompositeExpressionBinder.prototype.setUniform = function setUniform(uniform, globals) {\n    var currentZoom = this.useIntegerZoom ? Math.floor(globals.zoom) : globals.zoom;\n    var factor = clamp(this.expression.interpolationFactor(currentZoom, this.zoom, this.zoom + 1), 0, 1);\n    uniform.set(factor);\n};\nCompositeExpressionBinder.prototype.getBinding = function getBinding(context, location, _) {\n    return new Uniform1f(context, location);\n};\nvar CrossFadedCompositeBinder = function CrossFadedCompositeBinder(expression, type, useIntegerZoom, zoom, PaintVertexArray, layerId) {\n    this.expression = expression;\n    this.type = type;\n    this.useIntegerZoom = useIntegerZoom;\n    this.zoom = zoom;\n    this.layerId = layerId;\n    this.zoomInPaintVertexArray = new PaintVertexArray();\n    this.zoomOutPaintVertexArray = new PaintVertexArray();\n};\nCrossFadedCompositeBinder.prototype.populatePaintArray = function populatePaintArray(length, feature, imagePositions) {\n    var start = this.zoomInPaintVertexArray.length;\n    this.zoomInPaintVertexArray.resize(length);\n    this.zoomOutPaintVertexArray.resize(length);\n    this._setPaintValues(start, length, feature.patterns && feature.patterns[this.layerId], imagePositions);\n};\nCrossFadedCompositeBinder.prototype.updatePaintArray = function updatePaintArray(start, end, feature, featureState, imagePositions) {\n    this._setPaintValues(start, end, feature.patterns && feature.patterns[this.layerId], imagePositions);\n};\nCrossFadedCompositeBinder.prototype._setPaintValues = function _setPaintValues(start, end, patterns, positions) {\n    if (!positions || !patterns) {\n        return;\n    }\n    var min = patterns.min;\n    var mid = patterns.mid;\n    var max = patterns.max;\n    var imageMin = positions[min];\n    var imageMid = positions[mid];\n    var imageMax = positions[max];\n    if (!imageMin || !imageMid || !imageMax) {\n        return;\n    }\n    for (var i = start; i < end; i++) {\n        this.zoomInPaintVertexArray.emplace(i, imageMid.tl[0], imageMid.tl[1], imageMid.br[0], imageMid.br[1], imageMin.tl[0], imageMin.tl[1], imageMin.br[0], imageMin.br[1], imageMid.pixelRatio, imageMin.pixelRatio);\n        this.zoomOutPaintVertexArray.emplace(i, imageMid.tl[0], imageMid.tl[1], imageMid.br[0], imageMid.br[1], imageMax.tl[0], imageMax.tl[1], imageMax.br[0], imageMax.br[1], imageMid.pixelRatio, imageMax.pixelRatio);\n    }\n};\nCrossFadedCompositeBinder.prototype.upload = function upload(context) {\n    if (this.zoomInPaintVertexArray && this.zoomInPaintVertexArray.arrayBuffer && this.zoomOutPaintVertexArray && this.zoomOutPaintVertexArray.arrayBuffer) {\n        this.zoomInPaintVertexBuffer = context.createVertexBuffer(this.zoomInPaintVertexArray, patternAttributes.members, this.expression.isStateDependent);\n        this.zoomOutPaintVertexBuffer = context.createVertexBuffer(this.zoomOutPaintVertexArray, patternAttributes.members, this.expression.isStateDependent);\n    }\n};\nCrossFadedCompositeBinder.prototype.destroy = function destroy() {\n    if (this.zoomOutPaintVertexBuffer) {\n        this.zoomOutPaintVertexBuffer.destroy();\n    }\n    if (this.zoomInPaintVertexBuffer) {\n        this.zoomInPaintVertexBuffer.destroy();\n    }\n};\nvar ProgramConfiguration = function ProgramConfiguration(layer, zoom, filterProperties, layoutAttributes) {\n    this.binders = {};\n    this.layoutAttributes = layoutAttributes;\n    this._buffers = [];\n    var keys = [];\n    for (var property in layer.paint._values) {\n        if (!filterProperties(property)) {\n            continue;\n        }\n        var value = layer.paint.get(property);\n        if (!(value instanceof PossiblyEvaluatedPropertyValue) || !supportsPropertyExpression(value.property.specification)) {\n            continue;\n        }\n        var names = paintAttributeNames(property, layer.type);\n        var expression = value.value;\n        var type = value.property.specification.type;\n        var useIntegerZoom = value.property.useIntegerZoom;\n        var propType = value.property.specification['property-type'];\n        var isCrossFaded = propType === 'cross-faded' || propType === 'cross-faded-data-driven';\n        if (expression.kind === 'constant') {\n            this.binders[property] = isCrossFaded ? new CrossFadedConstantBinder(expression.value, names) : new ConstantBinder(expression.value, names, type);\n            keys.push('/u_' + property);\n        } else if (expression.kind === 'source' || isCrossFaded) {\n            var StructArrayLayout = layoutType(property, type, 'source');\n            this.binders[property] = isCrossFaded ? new CrossFadedCompositeBinder(expression, type, useIntegerZoom, zoom, StructArrayLayout, layer.id) : new SourceExpressionBinder(expression, names, type, StructArrayLayout);\n            keys.push('/a_' + property);\n        } else {\n            var StructArrayLayout$1 = layoutType(property, type, 'composite');\n            this.binders[property] = new CompositeExpressionBinder(expression, names, type, useIntegerZoom, zoom, StructArrayLayout$1);\n            keys.push('/z_' + property);\n        }\n    }\n    this.cacheKey = keys.sort().join('');\n};\nProgramConfiguration.prototype.getMaxValue = function getMaxValue(property) {\n    var binder = this.binders[property];\n    return binder instanceof SourceExpressionBinder || binder instanceof CompositeExpressionBinder ? binder.maxValue : 0;\n};\nProgramConfiguration.prototype.populatePaintArrays = function populatePaintArrays(newLength, feature, imagePositions, canonical, formattedSection) {\n    for (var property in this.binders) {\n        var binder = this.binders[property];\n        if (binder instanceof SourceExpressionBinder || binder instanceof CompositeExpressionBinder || binder instanceof CrossFadedCompositeBinder) {\n            binder.populatePaintArray(newLength, feature, imagePositions, canonical, formattedSection);\n        }\n    }\n};\nProgramConfiguration.prototype.setConstantPatternPositions = function setConstantPatternPositions(posTo, posFrom) {\n    for (var property in this.binders) {\n        var binder = this.binders[property];\n        if (binder instanceof CrossFadedConstantBinder) {\n            binder.setConstantPatternPositions(posTo, posFrom);\n        }\n    }\n};\nProgramConfiguration.prototype.updatePaintArrays = function updatePaintArrays(featureStates, featureMap, vtLayer, layer, imagePositions) {\n    var dirty = false;\n    for (var id in featureStates) {\n        var positions = featureMap.getPositions(id);\n        for (var i = 0, list = positions; i < list.length; i += 1) {\n            var pos = list[i];\n            var feature = vtLayer.feature(pos.index);\n            for (var property in this.binders) {\n                var binder = this.binders[property];\n                if ((binder instanceof SourceExpressionBinder || binder instanceof CompositeExpressionBinder || binder instanceof CrossFadedCompositeBinder) && binder.expression.isStateDependent === true) {\n                    var value = layer.paint.get(property);\n                    binder.expression = value.value;\n                    binder.updatePaintArray(pos.start, pos.end, feature, featureStates[id], imagePositions);\n                    dirty = true;\n                }\n            }\n        }\n    }\n    return dirty;\n};\nProgramConfiguration.prototype.defines = function defines() {\n    var result = [];\n    for (var property in this.binders) {\n        var binder = this.binders[property];\n        if (binder instanceof ConstantBinder || binder instanceof CrossFadedConstantBinder) {\n            result.push.apply(result, binder.uniformNames.map(function (name) {\n                return '#define HAS_UNIFORM_' + name;\n            }));\n        }\n    }\n    return result;\n};\nProgramConfiguration.prototype.getPaintVertexBuffers = function getPaintVertexBuffers() {\n    return this._buffers;\n};\nProgramConfiguration.prototype.getUniforms = function getUniforms(context, locations) {\n    var uniforms = [];\n    for (var property in this.binders) {\n        var binder = this.binders[property];\n        if (binder instanceof ConstantBinder || binder instanceof CrossFadedConstantBinder || binder instanceof CompositeExpressionBinder) {\n            for (var i = 0, list = binder.uniformNames; i < list.length; i += 1) {\n                var name = list[i];\n                if (locations[name]) {\n                    var binding = binder.getBinding(context, locations[name], name);\n                    uniforms.push({\n                        name: name,\n                        property: property,\n                        binding: binding\n                    });\n                }\n            }\n        }\n    }\n    return uniforms;\n};\nProgramConfiguration.prototype.setUniforms = function setUniforms(context, binderUniforms, properties, globals) {\n    for (var i = 0, list = binderUniforms; i < list.length; i += 1) {\n        var ref = list[i];\n        var name = ref.name;\n        var property = ref.property;\n        var binding = ref.binding;\n        this.binders[property].setUniform(binding, globals, properties.get(property), name);\n    }\n};\nProgramConfiguration.prototype.updatePaintBuffers = function updatePaintBuffers(crossfade) {\n    this._buffers = [];\n    for (var property in this.binders) {\n        var binder = this.binders[property];\n        if (crossfade && binder instanceof CrossFadedCompositeBinder) {\n            var patternVertexBuffer = crossfade.fromScale === 2 ? binder.zoomInPaintVertexBuffer : binder.zoomOutPaintVertexBuffer;\n            if (patternVertexBuffer) {\n                this._buffers.push(patternVertexBuffer);\n            }\n        } else if ((binder instanceof SourceExpressionBinder || binder instanceof CompositeExpressionBinder) && binder.paintVertexBuffer) {\n            this._buffers.push(binder.paintVertexBuffer);\n        }\n    }\n};\nProgramConfiguration.prototype.upload = function upload(context) {\n    for (var property in this.binders) {\n        var binder = this.binders[property];\n        if (binder instanceof SourceExpressionBinder || binder instanceof CompositeExpressionBinder || binder instanceof CrossFadedCompositeBinder) {\n            binder.upload(context);\n        }\n    }\n    this.updatePaintBuffers();\n};\nProgramConfiguration.prototype.destroy = function destroy() {\n    for (var property in this.binders) {\n        var binder = this.binders[property];\n        if (binder instanceof SourceExpressionBinder || binder instanceof CompositeExpressionBinder || binder instanceof CrossFadedCompositeBinder) {\n            binder.destroy();\n        }\n    }\n};\nvar ProgramConfigurationSet = function ProgramConfigurationSet(layoutAttributes, layers, zoom, filterProperties) {\n    if (filterProperties === void 0)\n        filterProperties = function () {\n            return true;\n        };\n    this.programConfigurations = {};\n    for (var i = 0, list = layers; i < list.length; i += 1) {\n        var layer = list[i];\n        this.programConfigurations[layer.id] = new ProgramConfiguration(layer, zoom, filterProperties, layoutAttributes);\n    }\n    this.needsUpload = false;\n    this._featureMap = new FeaturePositionMap();\n    this._bufferOffset = 0;\n};\nProgramConfigurationSet.prototype.populatePaintArrays = function populatePaintArrays(length, feature, index, imagePositions, canonical, formattedSection) {\n    for (var key in this.programConfigurations) {\n        this.programConfigurations[key].populatePaintArrays(length, feature, imagePositions, canonical, formattedSection);\n    }\n    if (feature.id !== undefined) {\n        this._featureMap.add(feature.id, index, this._bufferOffset, length);\n    }\n    this._bufferOffset = length;\n    this.needsUpload = true;\n};\nProgramConfigurationSet.prototype.updatePaintArrays = function updatePaintArrays(featureStates, vtLayer, layers, imagePositions) {\n    for (var i = 0, list = layers; i < list.length; i += 1) {\n        var layer = list[i];\n        this.needsUpload = this.programConfigurations[layer.id].updatePaintArrays(featureStates, this._featureMap, vtLayer, layer, imagePositions) || this.needsUpload;\n    }\n};\nProgramConfigurationSet.prototype.get = function get(layerId) {\n    return this.programConfigurations[layerId];\n};\nProgramConfigurationSet.prototype.upload = function upload(context) {\n    if (!this.needsUpload) {\n        return;\n    }\n    for (var layerId in this.programConfigurations) {\n        this.programConfigurations[layerId].upload(context);\n    }\n    this.needsUpload = false;\n};\nProgramConfigurationSet.prototype.destroy = function destroy() {\n    for (var layerId in this.programConfigurations) {\n        this.programConfigurations[layerId].destroy();\n    }\n};\nfunction paintAttributeNames(property, type) {\n    var attributeNameExceptions = {\n        'text-opacity': ['opacity'],\n        'icon-opacity': ['opacity'],\n        'text-color': ['fill_color'],\n        'icon-color': ['fill_color'],\n        'text-halo-color': ['halo_color'],\n        'icon-halo-color': ['halo_color'],\n        'text-halo-blur': ['halo_blur'],\n        'icon-halo-blur': ['halo_blur'],\n        'text-halo-width': ['halo_width'],\n        'icon-halo-width': ['halo_width'],\n        'line-gap-width': ['gapwidth'],\n        'line-pattern': [\n            'pattern_to',\n            'pattern_from',\n            'pixel_ratio_to',\n            'pixel_ratio_from'\n        ],\n        'fill-pattern': [\n            'pattern_to',\n            'pattern_from',\n            'pixel_ratio_to',\n            'pixel_ratio_from'\n        ],\n        'fill-extrusion-pattern': [\n            'pattern_to',\n            'pattern_from',\n            'pixel_ratio_to',\n            'pixel_ratio_from'\n        ]\n    };\n    return attributeNameExceptions[property] || [property.replace(type + '-', '').replace(/-/g, '_')];\n}\nfunction getLayoutException(property) {\n    var propertyExceptions = {\n        'line-pattern': {\n            'source': StructArrayLayout8ui2ub18,\n            'composite': StructArrayLayout8ui2ub18\n        },\n        'fill-pattern': {\n            'source': StructArrayLayout8ui2ub18,\n            'composite': StructArrayLayout8ui2ub18\n        },\n        'fill-extrusion-pattern': {\n            'source': StructArrayLayout8ui2ub18,\n            'composite': StructArrayLayout8ui2ub18\n        }\n    };\n    return propertyExceptions[property];\n}\nfunction layoutType(property, type, binderType) {\n    var defaultLayouts = {\n        'color': {\n            'source': StructArrayLayout2f8,\n            'composite': StructArrayLayout4f16\n        },\n        'number': {\n            'source': StructArrayLayout1f4,\n            'composite': StructArrayLayout2f8\n        }\n    };\n    var layoutException = getLayoutException(property);\n    return layoutException && layoutException[binderType] || defaultLayouts[type][binderType];\n}\nregister('ConstantBinder', ConstantBinder);\nregister('CrossFadedConstantBinder', CrossFadedConstantBinder);\nregister('SourceExpressionBinder', SourceExpressionBinder);\nregister('CrossFadedCompositeBinder', CrossFadedCompositeBinder);\nregister('CompositeExpressionBinder', CompositeExpressionBinder);\nregister('ProgramConfiguration', ProgramConfiguration, { omit: ['_buffers'] });\nregister('ProgramConfigurationSet', ProgramConfigurationSet);\n\nvar EXTENT$1 = 8192;\n\nfunction createBounds(bits) {\n    return {\n        min: -1 * Math.pow(2, bits - 1),\n        max: Math.pow(2, bits - 1) - 1\n    };\n}\nvar bounds = createBounds(15);\nfunction loadGeometry(feature) {\n    var scale = EXTENT$1 / feature.extent;\n    var geometry = feature.loadGeometry();\n    for (var r = 0; r < geometry.length; r++) {\n        var ring = geometry[r];\n        for (var p = 0; p < ring.length; p++) {\n            var point = ring[p];\n            point.x = Math.round(point.x * scale);\n            point.y = Math.round(point.y * scale);\n            if (point.x < bounds.min || point.x > bounds.max || point.y < bounds.min || point.y > bounds.max) {\n                warnOnce('Geometry exceeds allowed extent, reduce your vector tile buffer size');\n                point.x = clamp(point.x, bounds.min, bounds.max);\n                point.y = clamp(point.y, bounds.min, bounds.max);\n            }\n        }\n    }\n    return geometry;\n}\n\nfunction addCircleVertex(layoutVertexArray, x, y, extrudeX, extrudeY) {\n    layoutVertexArray.emplaceBack(x * 2 + (extrudeX + 1) / 2, y * 2 + (extrudeY + 1) / 2);\n}\nvar CircleBucket = function CircleBucket(options) {\n    this.zoom = options.zoom;\n    this.overscaling = options.overscaling;\n    this.layers = options.layers;\n    this.layerIds = this.layers.map(function (layer) {\n        return layer.id;\n    });\n    this.index = options.index;\n    this.hasPattern = false;\n    this.layoutVertexArray = new StructArrayLayout2i4();\n    this.indexArray = new StructArrayLayout3ui6();\n    this.segments = new SegmentVector();\n    this.programConfigurations = new ProgramConfigurationSet(members, options.layers, options.zoom);\n    this.stateDependentLayerIds = this.layers.filter(function (l) {\n        return l.isStateDependent();\n    }).map(function (l) {\n        return l.id;\n    });\n};\nCircleBucket.prototype.populate = function populate(features, options, canonical) {\n    var styleLayer = this.layers[0];\n    var bucketFeatures = [];\n    var circleSortKey = null;\n    if (styleLayer.type === 'circle') {\n        circleSortKey = styleLayer.layout.get('circle-sort-key');\n    }\n    for (var i = 0, list = features; i < list.length; i += 1) {\n        var ref = list[i];\n        var feature = ref.feature;\n        var id = ref.id;\n        var index = ref.index;\n        var sourceLayerIndex = ref.sourceLayerIndex;\n        var needGeometry = this.layers[0]._featureFilter.needGeometry;\n        var evaluationFeature = {\n            type: feature.type,\n            id: id,\n            properties: feature.properties,\n            geometry: needGeometry ? loadGeometry(feature) : []\n        };\n        if (!this.layers[0]._featureFilter.filter(new EvaluationParameters(this.zoom), evaluationFeature, canonical)) {\n            continue;\n        }\n        if (!needGeometry) {\n            evaluationFeature.geometry = loadGeometry(feature);\n        }\n        var sortKey = circleSortKey ? circleSortKey.evaluate(evaluationFeature, {}, canonical) : undefined;\n        var bucketFeature = {\n            id: id,\n            properties: feature.properties,\n            type: feature.type,\n            sourceLayerIndex: sourceLayerIndex,\n            index: index,\n            geometry: evaluationFeature.geometry,\n            patterns: {},\n            sortKey: sortKey\n        };\n        bucketFeatures.push(bucketFeature);\n    }\n    if (circleSortKey) {\n        bucketFeatures.sort(function (a, b) {\n            return a.sortKey - b.sortKey;\n        });\n    }\n    for (var i$1 = 0, list$1 = bucketFeatures; i$1 < list$1.length; i$1 += 1) {\n        var bucketFeature$1 = list$1[i$1];\n        var ref$1 = bucketFeature$1;\n        var geometry = ref$1.geometry;\n        var index$1 = ref$1.index;\n        var sourceLayerIndex$1 = ref$1.sourceLayerIndex;\n        var feature$1 = features[index$1].feature;\n        this.addFeature(bucketFeature$1, geometry, index$1, canonical);\n        options.featureIndex.insert(feature$1, geometry, index$1, sourceLayerIndex$1, this.index);\n    }\n};\nCircleBucket.prototype.update = function update(states, vtLayer, imagePositions) {\n    if (!this.stateDependentLayers.length) {\n        return;\n    }\n    this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, imagePositions);\n};\nCircleBucket.prototype.isEmpty = function isEmpty() {\n    return this.layoutVertexArray.length === 0;\n};\nCircleBucket.prototype.uploadPending = function uploadPending() {\n    return !this.uploaded || this.programConfigurations.needsUpload;\n};\nCircleBucket.prototype.upload = function upload(context) {\n    if (!this.uploaded) {\n        this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, members);\n        this.indexBuffer = context.createIndexBuffer(this.indexArray);\n    }\n    this.programConfigurations.upload(context);\n    this.uploaded = true;\n};\nCircleBucket.prototype.destroy = function destroy() {\n    if (!this.layoutVertexBuffer) {\n        return;\n    }\n    this.layoutVertexBuffer.destroy();\n    this.indexBuffer.destroy();\n    this.programConfigurations.destroy();\n    this.segments.destroy();\n};\nCircleBucket.prototype.addFeature = function addFeature(feature, geometry, index, canonical) {\n    for (var i$1 = 0, list$1 = geometry; i$1 < list$1.length; i$1 += 1) {\n        var ring = list$1[i$1];\n        for (var i = 0, list = ring; i < list.length; i += 1) {\n            var point = list[i];\n            var x = point.x;\n            var y = point.y;\n            if (x < 0 || x >= EXTENT$1 || y < 0 || y >= EXTENT$1) {\n                continue;\n            }\n            var segment = this.segments.prepareSegment(4, this.layoutVertexArray, this.indexArray, feature.sortKey);\n            var index$1 = segment.vertexLength;\n            addCircleVertex(this.layoutVertexArray, x, y, -1, -1);\n            addCircleVertex(this.layoutVertexArray, x, y, 1, -1);\n            addCircleVertex(this.layoutVertexArray, x, y, 1, 1);\n            addCircleVertex(this.layoutVertexArray, x, y, -1, 1);\n            this.indexArray.emplaceBack(index$1, index$1 + 1, index$1 + 2);\n            this.indexArray.emplaceBack(index$1, index$1 + 3, index$1 + 2);\n            segment.vertexLength += 4;\n            segment.primitiveLength += 2;\n        }\n    }\n    this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, feature, index, {}, canonical);\n};\nregister('CircleBucket', CircleBucket, { omit: ['layers'] });\n\nfunction polygonIntersectsPolygon(polygonA, polygonB) {\n    for (var i = 0; i < polygonA.length; i++) {\n        if (polygonContainsPoint(polygonB, polygonA[i])) {\n            return true;\n        }\n    }\n    for (var i$1 = 0; i$1 < polygonB.length; i$1++) {\n        if (polygonContainsPoint(polygonA, polygonB[i$1])) {\n            return true;\n        }\n    }\n    if (lineIntersectsLine(polygonA, polygonB)) {\n        return true;\n    }\n    return false;\n}\nfunction polygonIntersectsBufferedPoint(polygon, point, radius) {\n    if (polygonContainsPoint(polygon, point)) {\n        return true;\n    }\n    if (pointIntersectsBufferedLine(point, polygon, radius)) {\n        return true;\n    }\n    return false;\n}\nfunction polygonIntersectsMultiPolygon(polygon, multiPolygon) {\n    if (polygon.length === 1) {\n        return multiPolygonContainsPoint(multiPolygon, polygon[0]);\n    }\n    for (var m = 0; m < multiPolygon.length; m++) {\n        var ring = multiPolygon[m];\n        for (var n = 0; n < ring.length; n++) {\n            if (polygonContainsPoint(polygon, ring[n])) {\n                return true;\n            }\n        }\n    }\n    for (var i = 0; i < polygon.length; i++) {\n        if (multiPolygonContainsPoint(multiPolygon, polygon[i])) {\n            return true;\n        }\n    }\n    for (var k = 0; k < multiPolygon.length; k++) {\n        if (lineIntersectsLine(polygon, multiPolygon[k])) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction polygonIntersectsBufferedMultiLine(polygon, multiLine, radius) {\n    for (var i = 0; i < multiLine.length; i++) {\n        var line = multiLine[i];\n        if (polygon.length >= 3) {\n            for (var k = 0; k < line.length; k++) {\n                if (polygonContainsPoint(polygon, line[k])) {\n                    return true;\n                }\n            }\n        }\n        if (lineIntersectsBufferedLine(polygon, line, radius)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction lineIntersectsBufferedLine(lineA, lineB, radius) {\n    if (lineA.length > 1) {\n        if (lineIntersectsLine(lineA, lineB)) {\n            return true;\n        }\n        for (var j = 0; j < lineB.length; j++) {\n            if (pointIntersectsBufferedLine(lineB[j], lineA, radius)) {\n                return true;\n            }\n        }\n    }\n    for (var k = 0; k < lineA.length; k++) {\n        if (pointIntersectsBufferedLine(lineA[k], lineB, radius)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction lineIntersectsLine(lineA, lineB) {\n    if (lineA.length === 0 || lineB.length === 0) {\n        return false;\n    }\n    for (var i = 0; i < lineA.length - 1; i++) {\n        var a0 = lineA[i];\n        var a1 = lineA[i + 1];\n        for (var j = 0; j < lineB.length - 1; j++) {\n            var b0 = lineB[j];\n            var b1 = lineB[j + 1];\n            if (lineSegmentIntersectsLineSegment(a0, a1, b0, b1)) {\n                return true;\n            }\n        }\n    }\n    return false;\n}\nfunction lineSegmentIntersectsLineSegment(a0, a1, b0, b1) {\n    return isCounterClockwise(a0, b0, b1) !== isCounterClockwise(a1, b0, b1) && isCounterClockwise(a0, a1, b0) !== isCounterClockwise(a0, a1, b1);\n}\nfunction pointIntersectsBufferedLine(p, line, radius) {\n    var radiusSquared = radius * radius;\n    if (line.length === 1) {\n        return p.distSqr(line[0]) < radiusSquared;\n    }\n    for (var i = 1; i < line.length; i++) {\n        var v = line[i - 1], w = line[i];\n        if (distToSegmentSquared(p, v, w) < radiusSquared) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction distToSegmentSquared(p, v, w) {\n    var l2 = v.distSqr(w);\n    if (l2 === 0) {\n        return p.distSqr(v);\n    }\n    var t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n    if (t < 0) {\n        return p.distSqr(v);\n    }\n    if (t > 1) {\n        return p.distSqr(w);\n    }\n    return p.distSqr(w.sub(v)._mult(t)._add(v));\n}\nfunction multiPolygonContainsPoint(rings, p) {\n    var c = false, ring, p1, p2;\n    for (var k = 0; k < rings.length; k++) {\n        ring = rings[k];\n        for (var i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n            p1 = ring[i];\n            p2 = ring[j];\n            if (p1.y > p.y !== p2.y > p.y && p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x) {\n                c = !c;\n            }\n        }\n    }\n    return c;\n}\nfunction polygonContainsPoint(ring, p) {\n    var c = false;\n    for (var i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n        var p1 = ring[i];\n        var p2 = ring[j];\n        if (p1.y > p.y !== p2.y > p.y && p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x) {\n            c = !c;\n        }\n    }\n    return c;\n}\nfunction polygonIntersectsBox(ring, boxX1, boxY1, boxX2, boxY2) {\n    for (var i$1 = 0, list = ring; i$1 < list.length; i$1 += 1) {\n        var p = list[i$1];\n        if (boxX1 <= p.x && boxY1 <= p.y && boxX2 >= p.x && boxY2 >= p.y) {\n            return true;\n        }\n    }\n    var corners = [\n        new pointGeometry(boxX1, boxY1),\n        new pointGeometry(boxX1, boxY2),\n        new pointGeometry(boxX2, boxY2),\n        new pointGeometry(boxX2, boxY1)\n    ];\n    if (ring.length > 2) {\n        for (var i$2 = 0, list$1 = corners; i$2 < list$1.length; i$2 += 1) {\n            var corner = list$1[i$2];\n            if (polygonContainsPoint(ring, corner)) {\n                return true;\n            }\n        }\n    }\n    for (var i = 0; i < ring.length - 1; i++) {\n        var p1 = ring[i];\n        var p2 = ring[i + 1];\n        if (edgeIntersectsBox(p1, p2, corners)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction edgeIntersectsBox(e1, e2, corners) {\n    var tl = corners[0];\n    var br = corners[2];\n    if (e1.x < tl.x && e2.x < tl.x || e1.x > br.x && e2.x > br.x || e1.y < tl.y && e2.y < tl.y || e1.y > br.y && e2.y > br.y) {\n        return false;\n    }\n    var dir = isCounterClockwise(e1, e2, corners[0]);\n    return dir !== isCounterClockwise(e1, e2, corners[1]) || dir !== isCounterClockwise(e1, e2, corners[2]) || dir !== isCounterClockwise(e1, e2, corners[3]);\n}\n\nfunction getMaximumPaintValue(property, layer, bucket) {\n    var value = layer.paint.get(property).value;\n    if (value.kind === 'constant') {\n        return value.value;\n    } else {\n        return bucket.programConfigurations.get(layer.id).getMaxValue(property);\n    }\n}\nfunction translateDistance(translate) {\n    return Math.sqrt(translate[0] * translate[0] + translate[1] * translate[1]);\n}\nfunction translate(queryGeometry, translate, translateAnchor, bearing, pixelsToTileUnits) {\n    if (!translate[0] && !translate[1]) {\n        return queryGeometry;\n    }\n    var pt = pointGeometry.convert(translate)._mult(pixelsToTileUnits);\n    if (translateAnchor === 'viewport') {\n        pt._rotate(-bearing);\n    }\n    var translated = [];\n    for (var i = 0; i < queryGeometry.length; i++) {\n        var point = queryGeometry[i];\n        translated.push(point.sub(pt));\n    }\n    return translated;\n}\n\nvar layout$2 = new Properties({ 'circle-sort-key': new DataDrivenProperty(spec['layout_circle']['circle-sort-key']) });\nvar paint$1 = new Properties({\n    'circle-radius': new DataDrivenProperty(spec['paint_circle']['circle-radius']),\n    'circle-color': new DataDrivenProperty(spec['paint_circle']['circle-color']),\n    'circle-blur': new DataDrivenProperty(spec['paint_circle']['circle-blur']),\n    'circle-opacity': new DataDrivenProperty(spec['paint_circle']['circle-opacity']),\n    'circle-translate': new DataConstantProperty(spec['paint_circle']['circle-translate']),\n    'circle-translate-anchor': new DataConstantProperty(spec['paint_circle']['circle-translate-anchor']),\n    'circle-pitch-scale': new DataConstantProperty(spec['paint_circle']['circle-pitch-scale']),\n    'circle-pitch-alignment': new DataConstantProperty(spec['paint_circle']['circle-pitch-alignment']),\n    'circle-stroke-width': new DataDrivenProperty(spec['paint_circle']['circle-stroke-width']),\n    'circle-stroke-color': new DataDrivenProperty(spec['paint_circle']['circle-stroke-color']),\n    'circle-stroke-opacity': new DataDrivenProperty(spec['paint_circle']['circle-stroke-opacity'])\n});\nvar properties = {\n    paint: paint$1,\n    layout: layout$2\n};\n\nvar ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nif (!Math.hypot) {\n    Math.hypot = function () {\n        var arguments$1 = arguments;\n        var y = 0, i = arguments.length;\n        while (i--) {\n            y += arguments$1[i] * arguments$1[i];\n        }\n        return Math.sqrt(y);\n    };\n}\n\nfunction create() {\n    var out = new ARRAY_TYPE(4);\n    if (ARRAY_TYPE != Float32Array) {\n        out[1] = 0;\n        out[2] = 0;\n    }\n    out[0] = 1;\n    out[3] = 1;\n    return out;\n}\nfunction rotate(out, a, rad) {\n    var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n    var s = Math.sin(rad);\n    var c = Math.cos(rad);\n    out[0] = a0 * c + a2 * s;\n    out[1] = a1 * c + a3 * s;\n    out[2] = a0 * -s + a2 * c;\n    out[3] = a1 * -s + a3 * c;\n    return out;\n}\n\nfunction create$1() {\n    var out = new ARRAY_TYPE(9);\n    if (ARRAY_TYPE != Float32Array) {\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 0;\n        out[5] = 0;\n        out[6] = 0;\n        out[7] = 0;\n    }\n    out[0] = 1;\n    out[4] = 1;\n    out[8] = 1;\n    return out;\n}\nfunction fromRotation(out, rad) {\n    var s = Math.sin(rad), c = Math.cos(rad);\n    out[0] = c;\n    out[1] = s;\n    out[2] = 0;\n    out[3] = -s;\n    out[4] = c;\n    out[5] = 0;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 1;\n    return out;\n}\n\nfunction create$2() {\n    var out = new ARRAY_TYPE(16);\n    if (ARRAY_TYPE != Float32Array) {\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 0;\n        out[4] = 0;\n        out[6] = 0;\n        out[7] = 0;\n        out[8] = 0;\n        out[9] = 0;\n        out[11] = 0;\n        out[12] = 0;\n        out[13] = 0;\n        out[14] = 0;\n    }\n    out[0] = 1;\n    out[5] = 1;\n    out[10] = 1;\n    out[15] = 1;\n    return out;\n}\nfunction clone$1(a) {\n    var out = new ARRAY_TYPE(16);\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    out[4] = a[4];\n    out[5] = a[5];\n    out[6] = a[6];\n    out[7] = a[7];\n    out[8] = a[8];\n    out[9] = a[9];\n    out[10] = a[10];\n    out[11] = a[11];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n    return out;\n}\nfunction identity(out) {\n    out[0] = 1;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = 1;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[10] = 1;\n    out[11] = 0;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = 0;\n    out[15] = 1;\n    return out;\n}\nfunction invert(out, a) {\n    var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n    var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n    var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n    var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n    var b00 = a00 * a11 - a01 * a10;\n    var b01 = a00 * a12 - a02 * a10;\n    var b02 = a00 * a13 - a03 * a10;\n    var b03 = a01 * a12 - a02 * a11;\n    var b04 = a01 * a13 - a03 * a11;\n    var b05 = a02 * a13 - a03 * a12;\n    var b06 = a20 * a31 - a21 * a30;\n    var b07 = a20 * a32 - a22 * a30;\n    var b08 = a20 * a33 - a23 * a30;\n    var b09 = a21 * a32 - a22 * a31;\n    var b10 = a21 * a33 - a23 * a31;\n    var b11 = a22 * a33 - a23 * a32;\n    var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n    if (!det) {\n        return null;\n    }\n    det = 1 / det;\n    out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n    out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n    out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n    out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n    out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n    out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n    out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n    out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n    out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n    out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n    out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n    out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n    out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n    out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n    out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n    out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n    return out;\n}\nfunction multiply(out, a, b) {\n    var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n    var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n    var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n    var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n    var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n    out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n    out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n    out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n    out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n    b0 = b[4];\n    b1 = b[5];\n    b2 = b[6];\n    b3 = b[7];\n    out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n    out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n    out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n    out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n    b0 = b[8];\n    b1 = b[9];\n    b2 = b[10];\n    b3 = b[11];\n    out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n    out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n    out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n    out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n    b0 = b[12];\n    b1 = b[13];\n    b2 = b[14];\n    b3 = b[15];\n    out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n    out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n    out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n    out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n    return out;\n}\nfunction translate$1(out, a, v) {\n    var x = v[0], y = v[1], z = v[2];\n    var a00, a01, a02, a03;\n    var a10, a11, a12, a13;\n    var a20, a21, a22, a23;\n    if (a === out) {\n        out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n        out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n        out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n        out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n    } else {\n        a00 = a[0];\n        a01 = a[1];\n        a02 = a[2];\n        a03 = a[3];\n        a10 = a[4];\n        a11 = a[5];\n        a12 = a[6];\n        a13 = a[7];\n        a20 = a[8];\n        a21 = a[9];\n        a22 = a[10];\n        a23 = a[11];\n        out[0] = a00;\n        out[1] = a01;\n        out[2] = a02;\n        out[3] = a03;\n        out[4] = a10;\n        out[5] = a11;\n        out[6] = a12;\n        out[7] = a13;\n        out[8] = a20;\n        out[9] = a21;\n        out[10] = a22;\n        out[11] = a23;\n        out[12] = a00 * x + a10 * y + a20 * z + a[12];\n        out[13] = a01 * x + a11 * y + a21 * z + a[13];\n        out[14] = a02 * x + a12 * y + a22 * z + a[14];\n        out[15] = a03 * x + a13 * y + a23 * z + a[15];\n    }\n    return out;\n}\nfunction scale(out, a, v) {\n    var x = v[0], y = v[1], z = v[2];\n    out[0] = a[0] * x;\n    out[1] = a[1] * x;\n    out[2] = a[2] * x;\n    out[3] = a[3] * x;\n    out[4] = a[4] * y;\n    out[5] = a[5] * y;\n    out[6] = a[6] * y;\n    out[7] = a[7] * y;\n    out[8] = a[8] * z;\n    out[9] = a[9] * z;\n    out[10] = a[10] * z;\n    out[11] = a[11] * z;\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n    return out;\n}\nfunction rotateX(out, a, rad) {\n    var s = Math.sin(rad);\n    var c = Math.cos(rad);\n    var a10 = a[4];\n    var a11 = a[5];\n    var a12 = a[6];\n    var a13 = a[7];\n    var a20 = a[8];\n    var a21 = a[9];\n    var a22 = a[10];\n    var a23 = a[11];\n    if (a !== out) {\n        out[0] = a[0];\n        out[1] = a[1];\n        out[2] = a[2];\n        out[3] = a[3];\n        out[12] = a[12];\n        out[13] = a[13];\n        out[14] = a[14];\n        out[15] = a[15];\n    }\n    out[4] = a10 * c + a20 * s;\n    out[5] = a11 * c + a21 * s;\n    out[6] = a12 * c + a22 * s;\n    out[7] = a13 * c + a23 * s;\n    out[8] = a20 * c - a10 * s;\n    out[9] = a21 * c - a11 * s;\n    out[10] = a22 * c - a12 * s;\n    out[11] = a23 * c - a13 * s;\n    return out;\n}\nfunction rotateZ(out, a, rad) {\n    var s = Math.sin(rad);\n    var c = Math.cos(rad);\n    var a00 = a[0];\n    var a01 = a[1];\n    var a02 = a[2];\n    var a03 = a[3];\n    var a10 = a[4];\n    var a11 = a[5];\n    var a12 = a[6];\n    var a13 = a[7];\n    if (a !== out) {\n        out[8] = a[8];\n        out[9] = a[9];\n        out[10] = a[10];\n        out[11] = a[11];\n        out[12] = a[12];\n        out[13] = a[13];\n        out[14] = a[14];\n        out[15] = a[15];\n    }\n    out[0] = a00 * c + a10 * s;\n    out[1] = a01 * c + a11 * s;\n    out[2] = a02 * c + a12 * s;\n    out[3] = a03 * c + a13 * s;\n    out[4] = a10 * c - a00 * s;\n    out[5] = a11 * c - a01 * s;\n    out[6] = a12 * c - a02 * s;\n    out[7] = a13 * c - a03 * s;\n    return out;\n}\nfunction perspective(out, fovy, aspect, near, far) {\n    var f = 1 / Math.tan(fovy / 2), nf;\n    out[0] = f / aspect;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = f;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[11] = -1;\n    out[12] = 0;\n    out[13] = 0;\n    out[15] = 0;\n    if (far != null && far !== Infinity) {\n        nf = 1 / (near - far);\n        out[10] = (far + near) * nf;\n        out[14] = 2 * far * near * nf;\n    } else {\n        out[10] = -1;\n        out[14] = -2 * near;\n    }\n    return out;\n}\nfunction ortho(out, left, right, bottom, top, near, far) {\n    var lr = 1 / (left - right);\n    var bt = 1 / (bottom - top);\n    var nf = 1 / (near - far);\n    out[0] = -2 * lr;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = -2 * bt;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[10] = 2 * nf;\n    out[11] = 0;\n    out[12] = (left + right) * lr;\n    out[13] = (top + bottom) * bt;\n    out[14] = (far + near) * nf;\n    out[15] = 1;\n    return out;\n}\nvar mul = multiply;\n\nfunction create$3() {\n    var out = new ARRAY_TYPE(3);\n    if (ARRAY_TYPE != Float32Array) {\n        out[0] = 0;\n        out[1] = 0;\n        out[2] = 0;\n    }\n    return out;\n}\nfunction clone$2(a) {\n    var out = new ARRAY_TYPE(3);\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    return out;\n}\nfunction add(out, a, b) {\n    out[0] = a[0] + b[0];\n    out[1] = a[1] + b[1];\n    out[2] = a[2] + b[2];\n    return out;\n}\nfunction subtract(out, a, b) {\n    out[0] = a[0] - b[0];\n    out[1] = a[1] - b[1];\n    out[2] = a[2] - b[2];\n    return out;\n}\nfunction scale$1(out, a, b) {\n    out[0] = a[0] * b;\n    out[1] = a[1] * b;\n    out[2] = a[2] * b;\n    return out;\n}\nfunction normalize(out, a) {\n    var x = a[0];\n    var y = a[1];\n    var z = a[2];\n    var len = x * x + y * y + z * z;\n    if (len > 0) {\n        len = 1 / Math.sqrt(len);\n    }\n    out[0] = a[0] * len;\n    out[1] = a[1] * len;\n    out[2] = a[2] * len;\n    return out;\n}\nfunction dot(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\nfunction cross(out, a, b) {\n    var ax = a[0], ay = a[1], az = a[2];\n    var bx = b[0], by = b[1], bz = b[2];\n    out[0] = ay * bz - az * by;\n    out[1] = az * bx - ax * bz;\n    out[2] = ax * by - ay * bx;\n    return out;\n}\nfunction transformMat3(out, a, m) {\n    var x = a[0], y = a[1], z = a[2];\n    out[0] = x * m[0] + y * m[3] + z * m[6];\n    out[1] = x * m[1] + y * m[4] + z * m[7];\n    out[2] = x * m[2] + y * m[5] + z * m[8];\n    return out;\n}\nvar sub = subtract;\nvar forEach = function () {\n    var vec = create$3();\n    return function (a, stride, offset, count, fn, arg) {\n        var i, l;\n        if (!stride) {\n            stride = 3;\n        }\n        if (!offset) {\n            offset = 0;\n        }\n        if (count) {\n            l = Math.min(count * stride + offset, a.length);\n        } else {\n            l = a.length;\n        }\n        for (i = offset; i < l; i += stride) {\n            vec[0] = a[i];\n            vec[1] = a[i + 1];\n            vec[2] = a[i + 2];\n            fn(vec, vec, arg);\n            a[i] = vec[0];\n            a[i + 1] = vec[1];\n            a[i + 2] = vec[2];\n        }\n        return a;\n    };\n}();\n\nfunction create$4() {\n    var out = new ARRAY_TYPE(4);\n    if (ARRAY_TYPE != Float32Array) {\n        out[0] = 0;\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 0;\n    }\n    return out;\n}\nfunction scale$2(out, a, b) {\n    out[0] = a[0] * b;\n    out[1] = a[1] * b;\n    out[2] = a[2] * b;\n    out[3] = a[3] * b;\n    return out;\n}\nfunction dot$1(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\nfunction transformMat4(out, a, m) {\n    var x = a[0], y = a[1], z = a[2], w = a[3];\n    out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n    out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n    out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n    out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n    return out;\n}\nvar forEach$1 = function () {\n    var vec = create$4();\n    return function (a, stride, offset, count, fn, arg) {\n        var i, l;\n        if (!stride) {\n            stride = 4;\n        }\n        if (!offset) {\n            offset = 0;\n        }\n        if (count) {\n            l = Math.min(count * stride + offset, a.length);\n        } else {\n            l = a.length;\n        }\n        for (i = offset; i < l; i += stride) {\n            vec[0] = a[i];\n            vec[1] = a[i + 1];\n            vec[2] = a[i + 2];\n            vec[3] = a[i + 3];\n            fn(vec, vec, arg);\n            a[i] = vec[0];\n            a[i + 1] = vec[1];\n            a[i + 2] = vec[2];\n            a[i + 3] = vec[3];\n        }\n        return a;\n    };\n}();\n\nfunction create$5() {\n    var out = new ARRAY_TYPE(2);\n    if (ARRAY_TYPE != Float32Array) {\n        out[0] = 0;\n        out[1] = 0;\n    }\n    return out;\n}\nfunction squaredLength(a) {\n    var x = a[0], y = a[1];\n    return x * x + y * y;\n}\nvar sqrLen = squaredLength;\nvar forEach$2 = function () {\n    var vec = create$5();\n    return function (a, stride, offset, count, fn, arg) {\n        var i, l;\n        if (!stride) {\n            stride = 2;\n        }\n        if (!offset) {\n            offset = 0;\n        }\n        if (count) {\n            l = Math.min(count * stride + offset, a.length);\n        } else {\n            l = a.length;\n        }\n        for (i = offset; i < l; i += stride) {\n            vec[0] = a[i];\n            vec[1] = a[i + 1];\n            fn(vec, vec, arg);\n            a[i] = vec[0];\n            a[i + 1] = vec[1];\n        }\n        return a;\n    };\n}();\n\nvar CircleStyleLayer = function (StyleLayer) {\n    function CircleStyleLayer(layer) {\n        StyleLayer.call(this, layer, properties);\n    }\n    if (StyleLayer)\n        CircleStyleLayer.__proto__ = StyleLayer;\n    CircleStyleLayer.prototype = Object.create(StyleLayer && StyleLayer.prototype);\n    CircleStyleLayer.prototype.constructor = CircleStyleLayer;\n    CircleStyleLayer.prototype.createBucket = function createBucket(parameters) {\n        return new CircleBucket(parameters);\n    };\n    CircleStyleLayer.prototype.queryRadius = function queryRadius(bucket) {\n        var circleBucket = bucket;\n        return getMaximumPaintValue('circle-radius', this, circleBucket) + getMaximumPaintValue('circle-stroke-width', this, circleBucket) + translateDistance(this.paint.get('circle-translate'));\n    };\n    CircleStyleLayer.prototype.queryIntersectsFeature = function queryIntersectsFeature(queryGeometry, feature, featureState, geometry, zoom, transform, pixelsToTileUnits, pixelPosMatrix) {\n        var translatedPolygon = translate(queryGeometry, this.paint.get('circle-translate'), this.paint.get('circle-translate-anchor'), transform.angle, pixelsToTileUnits);\n        var radius = this.paint.get('circle-radius').evaluate(feature, featureState);\n        var stroke = this.paint.get('circle-stroke-width').evaluate(feature, featureState);\n        var size = radius + stroke;\n        var alignWithMap = this.paint.get('circle-pitch-alignment') === 'map';\n        var transformedPolygon = alignWithMap ? translatedPolygon : projectQueryGeometry(translatedPolygon, pixelPosMatrix);\n        var transformedSize = alignWithMap ? size * pixelsToTileUnits : size;\n        for (var i$1 = 0, list$1 = geometry; i$1 < list$1.length; i$1 += 1) {\n            var ring = list$1[i$1];\n            for (var i = 0, list = ring; i < list.length; i += 1) {\n                var point = list[i];\n                var transformedPoint = alignWithMap ? point : projectPoint(point, pixelPosMatrix);\n                var adjustedSize = transformedSize;\n                var projectedCenter = transformMat4([], [\n                    point.x,\n                    point.y,\n                    0,\n                    1\n                ], pixelPosMatrix);\n                if (this.paint.get('circle-pitch-scale') === 'viewport' && this.paint.get('circle-pitch-alignment') === 'map') {\n                    adjustedSize *= projectedCenter[3] / transform.cameraToCenterDistance;\n                } else if (this.paint.get('circle-pitch-scale') === 'map' && this.paint.get('circle-pitch-alignment') === 'viewport') {\n                    adjustedSize *= transform.cameraToCenterDistance / projectedCenter[3];\n                }\n                if (polygonIntersectsBufferedPoint(transformedPolygon, transformedPoint, adjustedSize)) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    };\n    return CircleStyleLayer;\n}(StyleLayer);\nfunction projectPoint(p, pixelPosMatrix) {\n    var point = transformMat4([], [\n        p.x,\n        p.y,\n        0,\n        1\n    ], pixelPosMatrix);\n    return new pointGeometry(point[0] / point[3], point[1] / point[3]);\n}\nfunction projectQueryGeometry(queryGeometry, pixelPosMatrix) {\n    return queryGeometry.map(function (p) {\n        return projectPoint(p, pixelPosMatrix);\n    });\n}\n\nvar HeatmapBucket = function (CircleBucket) {\n    function HeatmapBucket() {\n        CircleBucket.apply(this, arguments);\n    }\n    if (CircleBucket)\n        HeatmapBucket.__proto__ = CircleBucket;\n    HeatmapBucket.prototype = Object.create(CircleBucket && CircleBucket.prototype);\n    HeatmapBucket.prototype.constructor = HeatmapBucket;\n    return HeatmapBucket;\n}(CircleBucket);\nregister('HeatmapBucket', HeatmapBucket, { omit: ['layers'] });\n\nfunction createImage(image, ref, channels, data) {\n    var width = ref.width;\n    var height = ref.height;\n    if (!data) {\n        data = new Uint8Array(width * height * channels);\n    } else if (data instanceof Uint8ClampedArray) {\n        data = new Uint8Array(data.buffer);\n    } else if (data.length !== width * height * channels) {\n        throw new RangeError('mismatched image size');\n    }\n    image.width = width;\n    image.height = height;\n    image.data = data;\n    return image;\n}\nfunction resizeImage(image, ref, channels) {\n    var width = ref.width;\n    var height = ref.height;\n    if (width === image.width && height === image.height) {\n        return;\n    }\n    var newImage = createImage({}, {\n        width: width,\n        height: height\n    }, channels);\n    copyImage(image, newImage, {\n        x: 0,\n        y: 0\n    }, {\n        x: 0,\n        y: 0\n    }, {\n        width: Math.min(image.width, width),\n        height: Math.min(image.height, height)\n    }, channels);\n    image.width = width;\n    image.height = height;\n    image.data = newImage.data;\n}\nfunction copyImage(srcImg, dstImg, srcPt, dstPt, size, channels) {\n    if (size.width === 0 || size.height === 0) {\n        return dstImg;\n    }\n    if (size.width > srcImg.width || size.height > srcImg.height || srcPt.x > srcImg.width - size.width || srcPt.y > srcImg.height - size.height) {\n        throw new RangeError('out of range source coordinates for image copy');\n    }\n    if (size.width > dstImg.width || size.height > dstImg.height || dstPt.x > dstImg.width - size.width || dstPt.y > dstImg.height - size.height) {\n        throw new RangeError('out of range destination coordinates for image copy');\n    }\n    var srcData = srcImg.data;\n    var dstData = dstImg.data;\n    for (var y = 0; y < size.height; y++) {\n        var srcOffset = ((srcPt.y + y) * srcImg.width + srcPt.x) * channels;\n        var dstOffset = ((dstPt.y + y) * dstImg.width + dstPt.x) * channels;\n        for (var i = 0; i < size.width * channels; i++) {\n            dstData[dstOffset + i] = srcData[srcOffset + i];\n        }\n    }\n    return dstImg;\n}\nvar AlphaImage = function AlphaImage(size, data) {\n    createImage(this, size, 1, data);\n};\nAlphaImage.prototype.resize = function resize(size) {\n    resizeImage(this, size, 1);\n};\nAlphaImage.prototype.clone = function clone() {\n    return new AlphaImage({\n        width: this.width,\n        height: this.height\n    }, new Uint8Array(this.data));\n};\nAlphaImage.copy = function copy(srcImg, dstImg, srcPt, dstPt, size) {\n    copyImage(srcImg, dstImg, srcPt, dstPt, size, 1);\n};\nvar RGBAImage = function RGBAImage(size, data) {\n    createImage(this, size, 4, data);\n};\nRGBAImage.prototype.resize = function resize(size) {\n    resizeImage(this, size, 4);\n};\nRGBAImage.prototype.replace = function replace(data, copy) {\n    if (copy) {\n        this.data.set(data);\n    } else if (data instanceof Uint8ClampedArray) {\n        this.data = new Uint8Array(data.buffer);\n    } else {\n        this.data = data;\n    }\n};\nRGBAImage.prototype.clone = function clone() {\n    return new RGBAImage({\n        width: this.width,\n        height: this.height\n    }, new Uint8Array(this.data));\n};\nRGBAImage.copy = function copy(srcImg, dstImg, srcPt, dstPt, size) {\n    copyImage(srcImg, dstImg, srcPt, dstPt, size, 4);\n};\nregister('AlphaImage', AlphaImage);\nregister('RGBAImage', RGBAImage);\n\nvar paint$2 = new Properties({\n    'heatmap-radius': new DataDrivenProperty(spec['paint_heatmap']['heatmap-radius']),\n    'heatmap-weight': new DataDrivenProperty(spec['paint_heatmap']['heatmap-weight']),\n    'heatmap-intensity': new DataConstantProperty(spec['paint_heatmap']['heatmap-intensity']),\n    'heatmap-color': new ColorRampProperty(spec['paint_heatmap']['heatmap-color']),\n    'heatmap-opacity': new DataConstantProperty(spec['paint_heatmap']['heatmap-opacity'])\n});\nvar properties$1 = { paint: paint$2 };\n\nfunction renderColorRamp(expression, colorRampEvaluationParameter) {\n    var colorRampData = new Uint8Array(256 * 4);\n    var evaluationGlobals = {};\n    for (var i = 0, j = 0; i < 256; i++, j += 4) {\n        evaluationGlobals[colorRampEvaluationParameter] = i / 255;\n        var pxColor = expression.evaluate(evaluationGlobals);\n        colorRampData[j + 0] = Math.floor(pxColor.r * 255 / pxColor.a);\n        colorRampData[j + 1] = Math.floor(pxColor.g * 255 / pxColor.a);\n        colorRampData[j + 2] = Math.floor(pxColor.b * 255 / pxColor.a);\n        colorRampData[j + 3] = Math.floor(pxColor.a * 255);\n    }\n    return new RGBAImage({\n        width: 256,\n        height: 1\n    }, colorRampData);\n}\n\nvar HeatmapStyleLayer = function (StyleLayer) {\n    function HeatmapStyleLayer(layer) {\n        StyleLayer.call(this, layer, properties$1);\n        this._updateColorRamp();\n    }\n    if (StyleLayer)\n        HeatmapStyleLayer.__proto__ = StyleLayer;\n    HeatmapStyleLayer.prototype = Object.create(StyleLayer && StyleLayer.prototype);\n    HeatmapStyleLayer.prototype.constructor = HeatmapStyleLayer;\n    HeatmapStyleLayer.prototype.createBucket = function createBucket(options) {\n        return new HeatmapBucket(options);\n    };\n    HeatmapStyleLayer.prototype._handleSpecialPaintPropertyUpdate = function _handleSpecialPaintPropertyUpdate(name) {\n        if (name === 'heatmap-color') {\n            this._updateColorRamp();\n        }\n    };\n    HeatmapStyleLayer.prototype._updateColorRamp = function _updateColorRamp() {\n        var expression = this._transitionablePaint._values['heatmap-color'].value.expression;\n        this.colorRamp = renderColorRamp(expression, 'heatmapDensity');\n        this.colorRampTexture = null;\n    };\n    HeatmapStyleLayer.prototype.resize = function resize() {\n        if (this.heatmapFbo) {\n            this.heatmapFbo.destroy();\n            this.heatmapFbo = null;\n        }\n    };\n    HeatmapStyleLayer.prototype.queryRadius = function queryRadius() {\n        return 0;\n    };\n    HeatmapStyleLayer.prototype.queryIntersectsFeature = function queryIntersectsFeature() {\n        return false;\n    };\n    HeatmapStyleLayer.prototype.hasOffscreenPass = function hasOffscreenPass() {\n        return this.paint.get('heatmap-opacity') !== 0 && this.visibility !== 'none';\n    };\n    return HeatmapStyleLayer;\n}(StyleLayer);\n\nvar paint$3 = new Properties({\n    'hillshade-illumination-direction': new DataConstantProperty(spec['paint_hillshade']['hillshade-illumination-direction']),\n    'hillshade-illumination-anchor': new DataConstantProperty(spec['paint_hillshade']['hillshade-illumination-anchor']),\n    'hillshade-exaggeration': new DataConstantProperty(spec['paint_hillshade']['hillshade-exaggeration']),\n    'hillshade-shadow-color': new DataConstantProperty(spec['paint_hillshade']['hillshade-shadow-color']),\n    'hillshade-highlight-color': new DataConstantProperty(spec['paint_hillshade']['hillshade-highlight-color']),\n    'hillshade-accent-color': new DataConstantProperty(spec['paint_hillshade']['hillshade-accent-color'])\n});\nvar properties$2 = { paint: paint$3 };\n\nvar HillshadeStyleLayer = function (StyleLayer) {\n    function HillshadeStyleLayer(layer) {\n        StyleLayer.call(this, layer, properties$2);\n    }\n    if (StyleLayer)\n        HillshadeStyleLayer.__proto__ = StyleLayer;\n    HillshadeStyleLayer.prototype = Object.create(StyleLayer && StyleLayer.prototype);\n    HillshadeStyleLayer.prototype.constructor = HillshadeStyleLayer;\n    HillshadeStyleLayer.prototype.hasOffscreenPass = function hasOffscreenPass() {\n        return this.paint.get('hillshade-exaggeration') !== 0 && this.visibility !== 'none';\n    };\n    return HillshadeStyleLayer;\n}(StyleLayer);\n\nvar layout$3 = createLayout([{\n        name: 'a_pos',\n        components: 2,\n        type: 'Int16'\n    }], 4);\nvar members$1 = layout$3.members;\n\nvar earcut_1 = earcut;\nvar default_1 = earcut;\nfunction earcut(data, holeIndices, dim) {\n    dim = dim || 2;\n    var hasHoles = holeIndices && holeIndices.length, outerLen = hasHoles ? holeIndices[0] * dim : data.length, outerNode = linkedList(data, 0, outerLen, dim, true), triangles = [];\n    if (!outerNode || outerNode.next === outerNode.prev) {\n        return triangles;\n    }\n    var minX, minY, maxX, maxY, x, y, invSize;\n    if (hasHoles) {\n        outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n    }\n    if (data.length > 80 * dim) {\n        minX = maxX = data[0];\n        minY = maxY = data[1];\n        for (var i = dim; i < outerLen; i += dim) {\n            x = data[i];\n            y = data[i + 1];\n            if (x < minX) {\n                minX = x;\n            }\n            if (y < minY) {\n                minY = y;\n            }\n            if (x > maxX) {\n                maxX = x;\n            }\n            if (y > maxY) {\n                maxY = y;\n            }\n        }\n        invSize = Math.max(maxX - minX, maxY - minY);\n        invSize = invSize !== 0 ? 1 / invSize : 0;\n    }\n    earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n    return triangles;\n}\nfunction linkedList(data, start, end, dim, clockwise) {\n    var i, last;\n    if (clockwise === signedArea(data, start, end, dim) > 0) {\n        for (i = start; i < end; i += dim) {\n            last = insertNode(i, data[i], data[i + 1], last);\n        }\n    } else {\n        for (i = end - dim; i >= start; i -= dim) {\n            last = insertNode(i, data[i], data[i + 1], last);\n        }\n    }\n    if (last && equals(last, last.next)) {\n        removeNode(last);\n        last = last.next;\n    }\n    return last;\n}\nfunction filterPoints(start, end) {\n    if (!start) {\n        return start;\n    }\n    if (!end) {\n        end = start;\n    }\n    var p = start, again;\n    do {\n        again = false;\n        if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n            removeNode(p);\n            p = end = p.prev;\n            if (p === p.next) {\n                break;\n            }\n            again = true;\n        } else {\n            p = p.next;\n        }\n    } while (again || p !== end);\n    return end;\n}\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n    if (!ear) {\n        return;\n    }\n    if (!pass && invSize) {\n        indexCurve(ear, minX, minY, invSize);\n    }\n    var stop = ear, prev, next;\n    while (ear.prev !== ear.next) {\n        prev = ear.prev;\n        next = ear.next;\n        if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n            triangles.push(prev.i / dim);\n            triangles.push(ear.i / dim);\n            triangles.push(next.i / dim);\n            removeNode(ear);\n            ear = next.next;\n            stop = next.next;\n            continue;\n        }\n        ear = next;\n        if (ear === stop) {\n            if (!pass) {\n                earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n            } else if (pass === 1) {\n                ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n                earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n            } else if (pass === 2) {\n                splitEarcut(ear, triangles, dim, minX, minY, invSize);\n            }\n            break;\n        }\n    }\n}\nfunction isEar(ear) {\n    var a = ear.prev, b = ear, c = ear.next;\n    if (area(a, b, c) >= 0) {\n        return false;\n    }\n    var p = ear.next.next;\n    while (p !== ear.prev) {\n        if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) {\n            return false;\n        }\n        p = p.next;\n    }\n    return true;\n}\nfunction isEarHashed(ear, minX, minY, invSize) {\n    var a = ear.prev, b = ear, c = ear.next;\n    if (area(a, b, c) >= 0) {\n        return false;\n    }\n    var minTX = a.x < b.x ? a.x < c.x ? a.x : c.x : b.x < c.x ? b.x : c.x, minTY = a.y < b.y ? a.y < c.y ? a.y : c.y : b.y < c.y ? b.y : c.y, maxTX = a.x > b.x ? a.x > c.x ? a.x : c.x : b.x > c.x ? b.x : c.x, maxTY = a.y > b.y ? a.y > c.y ? a.y : c.y : b.y > c.y ? b.y : c.y;\n    var minZ = zOrder(minTX, minTY, minX, minY, invSize), maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n    var p = ear.prevZ, n = ear.nextZ;\n    while (p && p.z >= minZ && n && n.z <= maxZ) {\n        if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) {\n            return false;\n        }\n        p = p.prevZ;\n        if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0) {\n            return false;\n        }\n        n = n.nextZ;\n    }\n    while (p && p.z >= minZ) {\n        if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) {\n            return false;\n        }\n        p = p.prevZ;\n    }\n    while (n && n.z <= maxZ) {\n        if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0) {\n            return false;\n        }\n        n = n.nextZ;\n    }\n    return true;\n}\nfunction cureLocalIntersections(start, triangles, dim) {\n    var p = start;\n    do {\n        var a = p.prev, b = p.next.next;\n        if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n            triangles.push(a.i / dim);\n            triangles.push(p.i / dim);\n            triangles.push(b.i / dim);\n            removeNode(p);\n            removeNode(p.next);\n            p = start = b;\n        }\n        p = p.next;\n    } while (p !== start);\n    return filterPoints(p);\n}\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n    var a = start;\n    do {\n        var b = a.next.next;\n        while (b !== a.prev) {\n            if (a.i !== b.i && isValidDiagonal(a, b)) {\n                var c = splitPolygon(a, b);\n                a = filterPoints(a, a.next);\n                c = filterPoints(c, c.next);\n                earcutLinked(a, triangles, dim, minX, minY, invSize);\n                earcutLinked(c, triangles, dim, minX, minY, invSize);\n                return;\n            }\n            b = b.next;\n        }\n        a = a.next;\n    } while (a !== start);\n}\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n    var queue = [], i, len, start, end, list;\n    for (i = 0, len = holeIndices.length; i < len; i++) {\n        start = holeIndices[i] * dim;\n        end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n        list = linkedList(data, start, end, dim, false);\n        if (list === list.next) {\n            list.steiner = true;\n        }\n        queue.push(getLeftmost(list));\n    }\n    queue.sort(compareX);\n    for (i = 0; i < queue.length; i++) {\n        eliminateHole(queue[i], outerNode);\n        outerNode = filterPoints(outerNode, outerNode.next);\n    }\n    return outerNode;\n}\nfunction compareX(a, b) {\n    return a.x - b.x;\n}\nfunction eliminateHole(hole, outerNode) {\n    outerNode = findHoleBridge(hole, outerNode);\n    if (outerNode) {\n        var b = splitPolygon(outerNode, hole);\n        filterPoints(outerNode, outerNode.next);\n        filterPoints(b, b.next);\n    }\n}\nfunction findHoleBridge(hole, outerNode) {\n    var p = outerNode, hx = hole.x, hy = hole.y, qx = -Infinity, m;\n    do {\n        if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n            var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n            if (x <= hx && x > qx) {\n                qx = x;\n                if (x === hx) {\n                    if (hy === p.y) {\n                        return p;\n                    }\n                    if (hy === p.next.y) {\n                        return p.next;\n                    }\n                }\n                m = p.x < p.next.x ? p : p.next;\n            }\n        }\n        p = p.next;\n    } while (p !== outerNode);\n    if (!m) {\n        return null;\n    }\n    if (hx === qx) {\n        return m;\n    }\n    var stop = m, mx = m.x, my = m.y, tanMin = Infinity, tan;\n    p = m;\n    do {\n        if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n            tan = Math.abs(hy - p.y) / (hx - p.x);\n            if (locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector(m, p)))) {\n                m = p;\n                tanMin = tan;\n            }\n        }\n        p = p.next;\n    } while (p !== stop);\n    return m;\n}\nfunction sectorContainsSector(m, p) {\n    return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\nfunction indexCurve(start, minX, minY, invSize) {\n    var p = start;\n    do {\n        if (p.z === null) {\n            p.z = zOrder(p.x, p.y, minX, minY, invSize);\n        }\n        p.prevZ = p.prev;\n        p.nextZ = p.next;\n        p = p.next;\n    } while (p !== start);\n    p.prevZ.nextZ = null;\n    p.prevZ = null;\n    sortLinked(p);\n}\nfunction sortLinked(list) {\n    var i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1;\n    do {\n        p = list;\n        list = null;\n        tail = null;\n        numMerges = 0;\n        while (p) {\n            numMerges++;\n            q = p;\n            pSize = 0;\n            for (i = 0; i < inSize; i++) {\n                pSize++;\n                q = q.nextZ;\n                if (!q) {\n                    break;\n                }\n            }\n            qSize = inSize;\n            while (pSize > 0 || qSize > 0 && q) {\n                if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n                    e = p;\n                    p = p.nextZ;\n                    pSize--;\n                } else {\n                    e = q;\n                    q = q.nextZ;\n                    qSize--;\n                }\n                if (tail) {\n                    tail.nextZ = e;\n                } else {\n                    list = e;\n                }\n                e.prevZ = tail;\n                tail = e;\n            }\n            p = q;\n        }\n        tail.nextZ = null;\n        inSize *= 2;\n    } while (numMerges > 1);\n    return list;\n}\nfunction zOrder(x, y, minX, minY, invSize) {\n    x = 32767 * (x - minX) * invSize;\n    y = 32767 * (y - minY) * invSize;\n    x = (x | x << 8) & 16711935;\n    x = (x | x << 4) & 252645135;\n    x = (x | x << 2) & 858993459;\n    x = (x | x << 1) & 1431655765;\n    y = (y | y << 8) & 16711935;\n    y = (y | y << 4) & 252645135;\n    y = (y | y << 2) & 858993459;\n    y = (y | y << 1) & 1431655765;\n    return x | y << 1;\n}\nfunction getLeftmost(start) {\n    var p = start, leftmost = start;\n    do {\n        if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y) {\n            leftmost = p;\n        }\n        p = p.next;\n    } while (p !== start);\n    return leftmost;\n}\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n    return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 && (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 && (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\nfunction isValidDiagonal(a, b) {\n    return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && (area(a.prev, a, b.prev) || area(a, b.prev, b)) || equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0);\n}\nfunction area(p, q, r) {\n    return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\nfunction equals(p1, p2) {\n    return p1.x === p2.x && p1.y === p2.y;\n}\nfunction intersects(p1, q1, p2, q2) {\n    var o1 = sign(area(p1, q1, p2));\n    var o2 = sign(area(p1, q1, q2));\n    var o3 = sign(area(p2, q2, p1));\n    var o4 = sign(area(p2, q2, q1));\n    if (o1 !== o2 && o3 !== o4) {\n        return true;\n    }\n    if (o1 === 0 && onSegment(p1, p2, q1)) {\n        return true;\n    }\n    if (o2 === 0 && onSegment(p1, q2, q1)) {\n        return true;\n    }\n    if (o3 === 0 && onSegment(p2, p1, q2)) {\n        return true;\n    }\n    if (o4 === 0 && onSegment(p2, q1, q2)) {\n        return true;\n    }\n    return false;\n}\nfunction onSegment(p, q, r) {\n    return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\nfunction sign(num) {\n    return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\nfunction intersectsPolygon(a, b) {\n    var p = a;\n    do {\n        if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b)) {\n            return true;\n        }\n        p = p.next;\n    } while (p !== a);\n    return false;\n}\nfunction locallyInside(a, b) {\n    return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\nfunction middleInside(a, b) {\n    var p = a, inside = false, px = (a.x + b.x) / 2, py = (a.y + b.y) / 2;\n    do {\n        if (p.y > py !== p.next.y > py && p.next.y !== p.y && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x) {\n            inside = !inside;\n        }\n        p = p.next;\n    } while (p !== a);\n    return inside;\n}\nfunction splitPolygon(a, b) {\n    var a2 = new Node(a.i, a.x, a.y), b2 = new Node(b.i, b.x, b.y), an = a.next, bp = b.prev;\n    a.next = b;\n    b.prev = a;\n    a2.next = an;\n    an.prev = a2;\n    b2.next = a2;\n    a2.prev = b2;\n    bp.next = b2;\n    b2.prev = bp;\n    return b2;\n}\nfunction insertNode(i, x, y, last) {\n    var p = new Node(i, x, y);\n    if (!last) {\n        p.prev = p;\n        p.next = p;\n    } else {\n        p.next = last.next;\n        p.prev = last;\n        last.next.prev = p;\n        last.next = p;\n    }\n    return p;\n}\nfunction removeNode(p) {\n    p.next.prev = p.prev;\n    p.prev.next = p.next;\n    if (p.prevZ) {\n        p.prevZ.nextZ = p.nextZ;\n    }\n    if (p.nextZ) {\n        p.nextZ.prevZ = p.prevZ;\n    }\n}\nfunction Node(i, x, y) {\n    this.i = i;\n    this.x = x;\n    this.y = y;\n    this.prev = null;\n    this.next = null;\n    this.z = null;\n    this.prevZ = null;\n    this.nextZ = null;\n    this.steiner = false;\n}\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n    var hasHoles = holeIndices && holeIndices.length;\n    var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n    var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n    if (hasHoles) {\n        for (var i = 0, len = holeIndices.length; i < len; i++) {\n            var start = holeIndices[i] * dim;\n            var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n            polygonArea -= Math.abs(signedArea(data, start, end, dim));\n        }\n    }\n    var trianglesArea = 0;\n    for (i = 0; i < triangles.length; i += 3) {\n        var a = triangles[i] * dim;\n        var b = triangles[i + 1] * dim;\n        var c = triangles[i + 2] * dim;\n        trianglesArea += Math.abs((data[a] - data[c]) * (data[b + 1] - data[a + 1]) - (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n    }\n    return polygonArea === 0 && trianglesArea === 0 ? 0 : Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\nfunction signedArea(data, start, end, dim) {\n    var sum = 0;\n    for (var i = start, j = end - dim; i < end; i += dim) {\n        sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n        j = i;\n    }\n    return sum;\n}\nearcut.flatten = function (data) {\n    var dim = data[0][0].length, result = {\n            vertices: [],\n            holes: [],\n            dimensions: dim\n        }, holeIndex = 0;\n    for (var i = 0; i < data.length; i++) {\n        for (var j = 0; j < data[i].length; j++) {\n            for (var d = 0; d < dim; d++) {\n                result.vertices.push(data[i][j][d]);\n            }\n        }\n        if (i > 0) {\n            holeIndex += data[i - 1].length;\n            result.holes.push(holeIndex);\n        }\n    }\n    return result;\n};\nearcut_1.default = default_1;\n\nfunction quickselect(arr, k, left, right, compare) {\n    quickselectStep(arr, k, left || 0, right || arr.length - 1, compare || defaultCompare);\n}\nfunction quickselectStep(arr, k, left, right, compare) {\n    while (right > left) {\n        if (right - left > 600) {\n            var n = right - left + 1;\n            var m = k - left + 1;\n            var z = Math.log(n);\n            var s = 0.5 * Math.exp(2 * z / 3);\n            var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n            var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n            var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n            quickselectStep(arr, k, newLeft, newRight, compare);\n        }\n        var t = arr[k];\n        var i = left;\n        var j = right;\n        swap$1(arr, left, k);\n        if (compare(arr[right], t) > 0) {\n            swap$1(arr, left, right);\n        }\n        while (i < j) {\n            swap$1(arr, i, j);\n            i++;\n            j--;\n            while (compare(arr[i], t) < 0) {\n                i++;\n            }\n            while (compare(arr[j], t) > 0) {\n                j--;\n            }\n        }\n        if (compare(arr[left], t) === 0) {\n            swap$1(arr, left, j);\n        } else {\n            j++;\n            swap$1(arr, j, right);\n        }\n        if (j <= k) {\n            left = j + 1;\n        }\n        if (k <= j) {\n            right = j - 1;\n        }\n    }\n}\nfunction swap$1(arr, i, j) {\n    var tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\nfunction defaultCompare(a, b) {\n    return a < b ? -1 : a > b ? 1 : 0;\n}\n\nfunction classifyRings(rings, maxRings) {\n    var len = rings.length;\n    if (len <= 1) {\n        return [rings];\n    }\n    var polygons = [];\n    var polygon, ccw;\n    for (var i = 0; i < len; i++) {\n        var area = calculateSignedArea(rings[i]);\n        if (area === 0) {\n            continue;\n        }\n        rings[i].area = Math.abs(area);\n        if (ccw === undefined) {\n            ccw = area < 0;\n        }\n        if (ccw === area < 0) {\n            if (polygon) {\n                polygons.push(polygon);\n            }\n            polygon = [rings[i]];\n        } else {\n            polygon.push(rings[i]);\n        }\n    }\n    if (polygon) {\n        polygons.push(polygon);\n    }\n    if (maxRings > 1) {\n        for (var j = 0; j < polygons.length; j++) {\n            if (polygons[j].length <= maxRings) {\n                continue;\n            }\n            quickselect(polygons[j], maxRings, 1, polygons[j].length - 1, compareAreas);\n            polygons[j] = polygons[j].slice(0, maxRings);\n        }\n    }\n    return polygons;\n}\nfunction compareAreas(a, b) {\n    return b.area - a.area;\n}\n\nfunction hasPattern(type, layers, options) {\n    var patterns = options.patternDependencies;\n    var hasPattern = false;\n    for (var i = 0, list = layers; i < list.length; i += 1) {\n        var layer = list[i];\n        var patternProperty = layer.paint.get(type + '-pattern');\n        if (!patternProperty.isConstant()) {\n            hasPattern = true;\n        }\n        var constantPattern = patternProperty.constantOr(null);\n        if (constantPattern) {\n            hasPattern = true;\n            patterns[constantPattern.to] = true;\n            patterns[constantPattern.from] = true;\n        }\n    }\n    return hasPattern;\n}\nfunction addPatternDependencies(type, layers, patternFeature, zoom, options) {\n    var patterns = options.patternDependencies;\n    for (var i = 0, list = layers; i < list.length; i += 1) {\n        var layer = list[i];\n        var patternProperty = layer.paint.get(type + '-pattern');\n        var patternPropertyValue = patternProperty.value;\n        if (patternPropertyValue.kind !== 'constant') {\n            var min = patternPropertyValue.evaluate({ zoom: zoom - 1 }, patternFeature, {}, options.availableImages);\n            var mid = patternPropertyValue.evaluate({ zoom: zoom }, patternFeature, {}, options.availableImages);\n            var max = patternPropertyValue.evaluate({ zoom: zoom + 1 }, patternFeature, {}, options.availableImages);\n            min = min && min.name ? min.name : min;\n            mid = mid && mid.name ? mid.name : mid;\n            max = max && max.name ? max.name : max;\n            patterns[min] = true;\n            patterns[mid] = true;\n            patterns[max] = true;\n            patternFeature.patterns[layer.id] = {\n                min: min,\n                mid: mid,\n                max: max\n            };\n        }\n    }\n    return patternFeature;\n}\n\nvar EARCUT_MAX_RINGS = 500;\nvar FillBucket = function FillBucket(options) {\n    this.zoom = options.zoom;\n    this.overscaling = options.overscaling;\n    this.layers = options.layers;\n    this.layerIds = this.layers.map(function (layer) {\n        return layer.id;\n    });\n    this.index = options.index;\n    this.hasPattern = false;\n    this.patternFeatures = [];\n    this.layoutVertexArray = new StructArrayLayout2i4();\n    this.indexArray = new StructArrayLayout3ui6();\n    this.indexArray2 = new StructArrayLayout2ui4();\n    this.programConfigurations = new ProgramConfigurationSet(members$1, options.layers, options.zoom);\n    this.segments = new SegmentVector();\n    this.segments2 = new SegmentVector();\n    this.stateDependentLayerIds = this.layers.filter(function (l) {\n        return l.isStateDependent();\n    }).map(function (l) {\n        return l.id;\n    });\n};\nFillBucket.prototype.populate = function populate(features, options, canonical) {\n    this.hasPattern = hasPattern('fill', this.layers, options);\n    var fillSortKey = this.layers[0].layout.get('fill-sort-key');\n    var bucketFeatures = [];\n    for (var i = 0, list = features; i < list.length; i += 1) {\n        var ref = list[i];\n        var feature = ref.feature;\n        var id = ref.id;\n        var index = ref.index;\n        var sourceLayerIndex = ref.sourceLayerIndex;\n        var needGeometry = this.layers[0]._featureFilter.needGeometry;\n        var evaluationFeature = {\n            type: feature.type,\n            id: id,\n            properties: feature.properties,\n            geometry: needGeometry ? loadGeometry(feature) : []\n        };\n        if (!this.layers[0]._featureFilter.filter(new EvaluationParameters(this.zoom), evaluationFeature, canonical)) {\n            continue;\n        }\n        if (!needGeometry) {\n            evaluationFeature.geometry = loadGeometry(feature);\n        }\n        var sortKey = fillSortKey ? fillSortKey.evaluate(evaluationFeature, {}, canonical, options.availableImages) : undefined;\n        var bucketFeature = {\n            id: id,\n            properties: feature.properties,\n            type: feature.type,\n            sourceLayerIndex: sourceLayerIndex,\n            index: index,\n            geometry: evaluationFeature.geometry,\n            patterns: {},\n            sortKey: sortKey\n        };\n        bucketFeatures.push(bucketFeature);\n    }\n    if (fillSortKey) {\n        bucketFeatures.sort(function (a, b) {\n            return a.sortKey - b.sortKey;\n        });\n    }\n    for (var i$1 = 0, list$1 = bucketFeatures; i$1 < list$1.length; i$1 += 1) {\n        var bucketFeature$1 = list$1[i$1];\n        var ref$1 = bucketFeature$1;\n        var geometry = ref$1.geometry;\n        var index$1 = ref$1.index;\n        var sourceLayerIndex$1 = ref$1.sourceLayerIndex;\n        if (this.hasPattern) {\n            var patternFeature = addPatternDependencies('fill', this.layers, bucketFeature$1, this.zoom, options);\n            this.patternFeatures.push(patternFeature);\n        } else {\n            this.addFeature(bucketFeature$1, geometry, index$1, canonical, {});\n        }\n        var feature$1 = features[index$1].feature;\n        options.featureIndex.insert(feature$1, geometry, index$1, sourceLayerIndex$1, this.index);\n    }\n};\nFillBucket.prototype.update = function update(states, vtLayer, imagePositions) {\n    if (!this.stateDependentLayers.length) {\n        return;\n    }\n    this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, imagePositions);\n};\nFillBucket.prototype.addFeatures = function addFeatures(options, canonical, imagePositions) {\n    for (var i = 0, list = this.patternFeatures; i < list.length; i += 1) {\n        var feature = list[i];\n        this.addFeature(feature, feature.geometry, feature.index, canonical, imagePositions);\n    }\n};\nFillBucket.prototype.isEmpty = function isEmpty() {\n    return this.layoutVertexArray.length === 0;\n};\nFillBucket.prototype.uploadPending = function uploadPending() {\n    return !this.uploaded || this.programConfigurations.needsUpload;\n};\nFillBucket.prototype.upload = function upload(context) {\n    if (!this.uploaded) {\n        this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, members$1);\n        this.indexBuffer = context.createIndexBuffer(this.indexArray);\n        this.indexBuffer2 = context.createIndexBuffer(this.indexArray2);\n    }\n    this.programConfigurations.upload(context);\n    this.uploaded = true;\n};\nFillBucket.prototype.destroy = function destroy() {\n    if (!this.layoutVertexBuffer) {\n        return;\n    }\n    this.layoutVertexBuffer.destroy();\n    this.indexBuffer.destroy();\n    this.indexBuffer2.destroy();\n    this.programConfigurations.destroy();\n    this.segments.destroy();\n    this.segments2.destroy();\n};\nFillBucket.prototype.addFeature = function addFeature(feature, geometry, index, canonical, imagePositions) {\n    for (var i$4 = 0, list$2 = classifyRings(geometry, EARCUT_MAX_RINGS); i$4 < list$2.length; i$4 += 1) {\n        var polygon = list$2[i$4];\n        var numVertices = 0;\n        for (var i$2 = 0, list = polygon; i$2 < list.length; i$2 += 1) {\n            var ring = list[i$2];\n            numVertices += ring.length;\n        }\n        var triangleSegment = this.segments.prepareSegment(numVertices, this.layoutVertexArray, this.indexArray);\n        var triangleIndex = triangleSegment.vertexLength;\n        var flattened = [];\n        var holeIndices = [];\n        for (var i$3 = 0, list$1 = polygon; i$3 < list$1.length; i$3 += 1) {\n            var ring$1 = list$1[i$3];\n            if (ring$1.length === 0) {\n                continue;\n            }\n            if (ring$1 !== polygon[0]) {\n                holeIndices.push(flattened.length / 2);\n            }\n            var lineSegment = this.segments2.prepareSegment(ring$1.length, this.layoutVertexArray, this.indexArray2);\n            var lineIndex = lineSegment.vertexLength;\n            this.layoutVertexArray.emplaceBack(ring$1[0].x, ring$1[0].y);\n            this.indexArray2.emplaceBack(lineIndex + ring$1.length - 1, lineIndex);\n            flattened.push(ring$1[0].x);\n            flattened.push(ring$1[0].y);\n            for (var i = 1; i < ring$1.length; i++) {\n                this.layoutVertexArray.emplaceBack(ring$1[i].x, ring$1[i].y);\n                this.indexArray2.emplaceBack(lineIndex + i - 1, lineIndex + i);\n                flattened.push(ring$1[i].x);\n                flattened.push(ring$1[i].y);\n            }\n            lineSegment.vertexLength += ring$1.length;\n            lineSegment.primitiveLength += ring$1.length;\n        }\n        var indices = earcut_1(flattened, holeIndices);\n        for (var i$1 = 0; i$1 < indices.length; i$1 += 3) {\n            this.indexArray.emplaceBack(triangleIndex + indices[i$1], triangleIndex + indices[i$1 + 1], triangleIndex + indices[i$1 + 2]);\n        }\n        triangleSegment.vertexLength += numVertices;\n        triangleSegment.primitiveLength += indices.length / 3;\n    }\n    this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, feature, index, imagePositions, canonical);\n};\nregister('FillBucket', FillBucket, {\n    omit: [\n        'layers',\n        'patternFeatures'\n    ]\n});\n\nvar layout$4 = new Properties({ 'fill-sort-key': new DataDrivenProperty(spec['layout_fill']['fill-sort-key']) });\nvar paint$4 = new Properties({\n    'fill-antialias': new DataConstantProperty(spec['paint_fill']['fill-antialias']),\n    'fill-opacity': new DataDrivenProperty(spec['paint_fill']['fill-opacity']),\n    'fill-color': new DataDrivenProperty(spec['paint_fill']['fill-color']),\n    'fill-outline-color': new DataDrivenProperty(spec['paint_fill']['fill-outline-color']),\n    'fill-translate': new DataConstantProperty(spec['paint_fill']['fill-translate']),\n    'fill-translate-anchor': new DataConstantProperty(spec['paint_fill']['fill-translate-anchor']),\n    'fill-pattern': new CrossFadedDataDrivenProperty(spec['paint_fill']['fill-pattern'])\n});\nvar properties$3 = {\n    paint: paint$4,\n    layout: layout$4\n};\n\nvar FillStyleLayer = function (StyleLayer) {\n    function FillStyleLayer(layer) {\n        StyleLayer.call(this, layer, properties$3);\n    }\n    if (StyleLayer)\n        FillStyleLayer.__proto__ = StyleLayer;\n    FillStyleLayer.prototype = Object.create(StyleLayer && StyleLayer.prototype);\n    FillStyleLayer.prototype.constructor = FillStyleLayer;\n    FillStyleLayer.prototype.recalculate = function recalculate(parameters, availableImages) {\n        StyleLayer.prototype.recalculate.call(this, parameters, availableImages);\n        var outlineColor = this.paint._values['fill-outline-color'];\n        if (outlineColor.value.kind === 'constant' && outlineColor.value.value === undefined) {\n            this.paint._values['fill-outline-color'] = this.paint._values['fill-color'];\n        }\n    };\n    FillStyleLayer.prototype.createBucket = function createBucket(parameters) {\n        return new FillBucket(parameters);\n    };\n    FillStyleLayer.prototype.queryRadius = function queryRadius() {\n        return translateDistance(this.paint.get('fill-translate'));\n    };\n    FillStyleLayer.prototype.queryIntersectsFeature = function queryIntersectsFeature(queryGeometry, feature, featureState, geometry, zoom, transform, pixelsToTileUnits) {\n        var translatedPolygon = translate(queryGeometry, this.paint.get('fill-translate'), this.paint.get('fill-translate-anchor'), transform.angle, pixelsToTileUnits);\n        return polygonIntersectsMultiPolygon(translatedPolygon, geometry);\n    };\n    FillStyleLayer.prototype.isTileClipped = function isTileClipped() {\n        return true;\n    };\n    return FillStyleLayer;\n}(StyleLayer);\n\nvar layout$5 = createLayout([\n    {\n        name: 'a_pos',\n        components: 2,\n        type: 'Int16'\n    },\n    {\n        name: 'a_normal_ed',\n        components: 4,\n        type: 'Int16'\n    }\n], 4);\nvar members$2 = layout$5.members;\n\nvar vectortilefeature = VectorTileFeature;\nfunction VectorTileFeature(pbf, end, extent, keys, values) {\n    this.properties = {};\n    this.extent = extent;\n    this.type = 0;\n    this._pbf = pbf;\n    this._geometry = -1;\n    this._keys = keys;\n    this._values = values;\n    pbf.readFields(readFeature, this, end);\n}\nfunction readFeature(tag, feature, pbf) {\n    if (tag == 1) {\n        feature.id = pbf.readVarint();\n    } else if (tag == 2) {\n        readTag(pbf, feature);\n    } else if (tag == 3) {\n        feature.type = pbf.readVarint();\n    } else if (tag == 4) {\n        feature._geometry = pbf.pos;\n    }\n}\nfunction readTag(pbf, feature) {\n    var end = pbf.readVarint() + pbf.pos;\n    while (pbf.pos < end) {\n        var key = feature._keys[pbf.readVarint()], value = feature._values[pbf.readVarint()];\n        feature.properties[key] = value;\n    }\n}\nVectorTileFeature.types = [\n    'Unknown',\n    'Point',\n    'LineString',\n    'Polygon'\n];\nVectorTileFeature.prototype.loadGeometry = function () {\n    var pbf = this._pbf;\n    pbf.pos = this._geometry;\n    var end = pbf.readVarint() + pbf.pos, cmd = 1, length = 0, x = 0, y = 0, lines = [], line;\n    while (pbf.pos < end) {\n        if (length <= 0) {\n            var cmdLen = pbf.readVarint();\n            cmd = cmdLen & 7;\n            length = cmdLen >> 3;\n        }\n        length--;\n        if (cmd === 1 || cmd === 2) {\n            x += pbf.readSVarint();\n            y += pbf.readSVarint();\n            if (cmd === 1) {\n                if (line) {\n                    lines.push(line);\n                }\n                line = [];\n            }\n            line.push(new pointGeometry(x, y));\n        } else if (cmd === 7) {\n            if (line) {\n                line.push(line[0].clone());\n            }\n        } else {\n            throw new Error('unknown command ' + cmd);\n        }\n    }\n    if (line) {\n        lines.push(line);\n    }\n    return lines;\n};\nVectorTileFeature.prototype.bbox = function () {\n    var pbf = this._pbf;\n    pbf.pos = this._geometry;\n    var end = pbf.readVarint() + pbf.pos, cmd = 1, length = 0, x = 0, y = 0, x1 = Infinity, x2 = -Infinity, y1 = Infinity, y2 = -Infinity;\n    while (pbf.pos < end) {\n        if (length <= 0) {\n            var cmdLen = pbf.readVarint();\n            cmd = cmdLen & 7;\n            length = cmdLen >> 3;\n        }\n        length--;\n        if (cmd === 1 || cmd === 2) {\n            x += pbf.readSVarint();\n            y += pbf.readSVarint();\n            if (x < x1) {\n                x1 = x;\n            }\n            if (x > x2) {\n                x2 = x;\n            }\n            if (y < y1) {\n                y1 = y;\n            }\n            if (y > y2) {\n                y2 = y;\n            }\n        } else if (cmd !== 7) {\n            throw new Error('unknown command ' + cmd);\n        }\n    }\n    return [\n        x1,\n        y1,\n        x2,\n        y2\n    ];\n};\nVectorTileFeature.prototype.toGeoJSON = function (x, y, z) {\n    var size = this.extent * Math.pow(2, z), x0 = this.extent * x, y0 = this.extent * y, coords = this.loadGeometry(), type = VectorTileFeature.types[this.type], i, j;\n    function project(line) {\n        for (var j = 0; j < line.length; j++) {\n            var p = line[j], y2 = 180 - (p.y + y0) * 360 / size;\n            line[j] = [\n                (p.x + x0) * 360 / size - 180,\n                360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90\n            ];\n        }\n    }\n    switch (this.type) {\n    case 1:\n        var points = [];\n        for (i = 0; i < coords.length; i++) {\n            points[i] = coords[i][0];\n        }\n        coords = points;\n        project(coords);\n        break;\n    case 2:\n        for (i = 0; i < coords.length; i++) {\n            project(coords[i]);\n        }\n        break;\n    case 3:\n        coords = classifyRings$1(coords);\n        for (i = 0; i < coords.length; i++) {\n            for (j = 0; j < coords[i].length; j++) {\n                project(coords[i][j]);\n            }\n        }\n        break;\n    }\n    if (coords.length === 1) {\n        coords = coords[0];\n    } else {\n        type = 'Multi' + type;\n    }\n    var result = {\n        type: 'Feature',\n        geometry: {\n            type: type,\n            coordinates: coords\n        },\n        properties: this.properties\n    };\n    if ('id' in this) {\n        result.id = this.id;\n    }\n    return result;\n};\nfunction classifyRings$1(rings) {\n    var len = rings.length;\n    if (len <= 1) {\n        return [rings];\n    }\n    var polygons = [], polygon, ccw;\n    for (var i = 0; i < len; i++) {\n        var area = signedArea$1(rings[i]);\n        if (area === 0) {\n            continue;\n        }\n        if (ccw === undefined) {\n            ccw = area < 0;\n        }\n        if (ccw === area < 0) {\n            if (polygon) {\n                polygons.push(polygon);\n            }\n            polygon = [rings[i]];\n        } else {\n            polygon.push(rings[i]);\n        }\n    }\n    if (polygon) {\n        polygons.push(polygon);\n    }\n    return polygons;\n}\nfunction signedArea$1(ring) {\n    var sum = 0;\n    for (var i = 0, len = ring.length, j = len - 1, p1, p2; i < len; j = i++) {\n        p1 = ring[i];\n        p2 = ring[j];\n        sum += (p2.x - p1.x) * (p1.y + p2.y);\n    }\n    return sum;\n}\n\nvar vectortilelayer = VectorTileLayer;\nfunction VectorTileLayer(pbf, end) {\n    this.version = 1;\n    this.name = null;\n    this.extent = 4096;\n    this.length = 0;\n    this._pbf = pbf;\n    this._keys = [];\n    this._values = [];\n    this._features = [];\n    pbf.readFields(readLayer, this, end);\n    this.length = this._features.length;\n}\nfunction readLayer(tag, layer, pbf) {\n    if (tag === 15) {\n        layer.version = pbf.readVarint();\n    } else if (tag === 1) {\n        layer.name = pbf.readString();\n    } else if (tag === 5) {\n        layer.extent = pbf.readVarint();\n    } else if (tag === 2) {\n        layer._features.push(pbf.pos);\n    } else if (tag === 3) {\n        layer._keys.push(pbf.readString());\n    } else if (tag === 4) {\n        layer._values.push(readValueMessage(pbf));\n    }\n}\nfunction readValueMessage(pbf) {\n    var value = null, end = pbf.readVarint() + pbf.pos;\n    while (pbf.pos < end) {\n        var tag = pbf.readVarint() >> 3;\n        value = tag === 1 ? pbf.readString() : tag === 2 ? pbf.readFloat() : tag === 3 ? pbf.readDouble() : tag === 4 ? pbf.readVarint64() : tag === 5 ? pbf.readVarint() : tag === 6 ? pbf.readSVarint() : tag === 7 ? pbf.readBoolean() : null;\n    }\n    return value;\n}\nVectorTileLayer.prototype.feature = function (i) {\n    if (i < 0 || i >= this._features.length) {\n        throw new Error('feature index out of bounds');\n    }\n    this._pbf.pos = this._features[i];\n    var end = this._pbf.readVarint() + this._pbf.pos;\n    return new vectortilefeature(this._pbf, end, this.extent, this._keys, this._values);\n};\n\nvar vectortile = VectorTile;\nfunction VectorTile(pbf, end) {\n    this.layers = pbf.readFields(readTile, {}, end);\n}\nfunction readTile(tag, layers, pbf) {\n    if (tag === 3) {\n        var layer = new vectortilelayer(pbf, pbf.readVarint() + pbf.pos);\n        if (layer.length) {\n            layers[layer.name] = layer;\n        }\n    }\n}\n\nvar VectorTile$1 = vectortile;\nvar VectorTileFeature$1 = vectortilefeature;\nvar VectorTileLayer$1 = vectortilelayer;\n\nvar vectorTile = {\n\tVectorTile: VectorTile$1,\n\tVectorTileFeature: VectorTileFeature$1,\n\tVectorTileLayer: VectorTileLayer$1\n};\n\nvar vectorTileFeatureTypes = vectorTile.VectorTileFeature.types;\nvar EARCUT_MAX_RINGS$1 = 500;\nvar FACTOR = Math.pow(2, 13);\nfunction addVertex(vertexArray, x, y, nx, ny, nz, t, e) {\n    vertexArray.emplaceBack(x, y, Math.floor(nx * FACTOR) * 2 + t, ny * FACTOR * 2, nz * FACTOR * 2, Math.round(e));\n}\nvar FillExtrusionBucket = function FillExtrusionBucket(options) {\n    this.zoom = options.zoom;\n    this.overscaling = options.overscaling;\n    this.layers = options.layers;\n    this.layerIds = this.layers.map(function (layer) {\n        return layer.id;\n    });\n    this.index = options.index;\n    this.hasPattern = false;\n    this.layoutVertexArray = new StructArrayLayout2i4i12();\n    this.indexArray = new StructArrayLayout3ui6();\n    this.programConfigurations = new ProgramConfigurationSet(members$2, options.layers, options.zoom);\n    this.segments = new SegmentVector();\n    this.stateDependentLayerIds = this.layers.filter(function (l) {\n        return l.isStateDependent();\n    }).map(function (l) {\n        return l.id;\n    });\n};\nFillExtrusionBucket.prototype.populate = function populate(features, options, canonical) {\n    this.features = [];\n    this.hasPattern = hasPattern('fill-extrusion', this.layers, options);\n    for (var i = 0, list = features; i < list.length; i += 1) {\n        var ref = list[i];\n        var feature = ref.feature;\n        var id = ref.id;\n        var index = ref.index;\n        var sourceLayerIndex = ref.sourceLayerIndex;\n        var needGeometry = this.layers[0]._featureFilter.needGeometry;\n        var evaluationFeature = {\n            type: feature.type,\n            id: id,\n            properties: feature.properties,\n            geometry: needGeometry ? loadGeometry(feature) : []\n        };\n        if (!this.layers[0]._featureFilter.filter(new EvaluationParameters(this.zoom), evaluationFeature, canonical)) {\n            continue;\n        }\n        var patternFeature = {\n            id: id,\n            sourceLayerIndex: sourceLayerIndex,\n            index: index,\n            geometry: needGeometry ? evaluationFeature.geometry : loadGeometry(feature),\n            properties: feature.properties,\n            type: feature.type,\n            patterns: {}\n        };\n        if (typeof feature.id !== 'undefined') {\n            patternFeature.id = feature.id;\n        }\n        if (this.hasPattern) {\n            this.features.push(addPatternDependencies('fill-extrusion', this.layers, patternFeature, this.zoom, options));\n        } else {\n            this.addFeature(patternFeature, patternFeature.geometry, index, canonical, {});\n        }\n        options.featureIndex.insert(feature, patternFeature.geometry, index, sourceLayerIndex, this.index, true);\n    }\n};\nFillExtrusionBucket.prototype.addFeatures = function addFeatures(options, canonical, imagePositions) {\n    for (var i = 0, list = this.features; i < list.length; i += 1) {\n        var feature = list[i];\n        var geometry = feature.geometry;\n        this.addFeature(feature, geometry, feature.index, canonical, imagePositions);\n    }\n};\nFillExtrusionBucket.prototype.update = function update(states, vtLayer, imagePositions) {\n    if (!this.stateDependentLayers.length) {\n        return;\n    }\n    this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, imagePositions);\n};\nFillExtrusionBucket.prototype.isEmpty = function isEmpty() {\n    return this.layoutVertexArray.length === 0;\n};\nFillExtrusionBucket.prototype.uploadPending = function uploadPending() {\n    return !this.uploaded || this.programConfigurations.needsUpload;\n};\nFillExtrusionBucket.prototype.upload = function upload(context) {\n    if (!this.uploaded) {\n        this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, members$2);\n        this.indexBuffer = context.createIndexBuffer(this.indexArray);\n    }\n    this.programConfigurations.upload(context);\n    this.uploaded = true;\n};\nFillExtrusionBucket.prototype.destroy = function destroy() {\n    if (!this.layoutVertexBuffer) {\n        return;\n    }\n    this.layoutVertexBuffer.destroy();\n    this.indexBuffer.destroy();\n    this.programConfigurations.destroy();\n    this.segments.destroy();\n};\nFillExtrusionBucket.prototype.addFeature = function addFeature(feature, geometry, index, canonical, imagePositions) {\n    for (var i$4 = 0, list$3 = classifyRings(geometry, EARCUT_MAX_RINGS$1); i$4 < list$3.length; i$4 += 1) {\n        var polygon = list$3[i$4];\n        var numVertices = 0;\n        for (var i$1 = 0, list = polygon; i$1 < list.length; i$1 += 1) {\n            var ring = list[i$1];\n            numVertices += ring.length;\n        }\n        var segment = this.segments.prepareSegment(4, this.layoutVertexArray, this.indexArray);\n        for (var i$2 = 0, list$1 = polygon; i$2 < list$1.length; i$2 += 1) {\n            var ring$1 = list$1[i$2];\n            if (ring$1.length === 0) {\n                continue;\n            }\n            if (isEntirelyOutside(ring$1)) {\n                continue;\n            }\n            var edgeDistance = 0;\n            for (var p = 0; p < ring$1.length; p++) {\n                var p1 = ring$1[p];\n                if (p >= 1) {\n                    var p2 = ring$1[p - 1];\n                    if (!isBoundaryEdge(p1, p2)) {\n                        if (segment.vertexLength + 4 > SegmentVector.MAX_VERTEX_ARRAY_LENGTH) {\n                            segment = this.segments.prepareSegment(4, this.layoutVertexArray, this.indexArray);\n                        }\n                        var perp = p1.sub(p2)._perp()._unit();\n                        var dist = p2.dist(p1);\n                        if (edgeDistance + dist > 32768) {\n                            edgeDistance = 0;\n                        }\n                        addVertex(this.layoutVertexArray, p1.x, p1.y, perp.x, perp.y, 0, 0, edgeDistance);\n                        addVertex(this.layoutVertexArray, p1.x, p1.y, perp.x, perp.y, 0, 1, edgeDistance);\n                        edgeDistance += dist;\n                        addVertex(this.layoutVertexArray, p2.x, p2.y, perp.x, perp.y, 0, 0, edgeDistance);\n                        addVertex(this.layoutVertexArray, p2.x, p2.y, perp.x, perp.y, 0, 1, edgeDistance);\n                        var bottomRight = segment.vertexLength;\n                        this.indexArray.emplaceBack(bottomRight, bottomRight + 2, bottomRight + 1);\n                        this.indexArray.emplaceBack(bottomRight + 1, bottomRight + 2, bottomRight + 3);\n                        segment.vertexLength += 4;\n                        segment.primitiveLength += 2;\n                    }\n                }\n            }\n        }\n        if (segment.vertexLength + numVertices > SegmentVector.MAX_VERTEX_ARRAY_LENGTH) {\n            segment = this.segments.prepareSegment(numVertices, this.layoutVertexArray, this.indexArray);\n        }\n        if (vectorTileFeatureTypes[feature.type] !== 'Polygon') {\n            continue;\n        }\n        var flattened = [];\n        var holeIndices = [];\n        var triangleIndex = segment.vertexLength;\n        for (var i$3 = 0, list$2 = polygon; i$3 < list$2.length; i$3 += 1) {\n            var ring$2 = list$2[i$3];\n            if (ring$2.length === 0) {\n                continue;\n            }\n            if (ring$2 !== polygon[0]) {\n                holeIndices.push(flattened.length / 2);\n            }\n            for (var i = 0; i < ring$2.length; i++) {\n                var p$1 = ring$2[i];\n                addVertex(this.layoutVertexArray, p$1.x, p$1.y, 0, 0, 1, 1, 0);\n                flattened.push(p$1.x);\n                flattened.push(p$1.y);\n            }\n        }\n        var indices = earcut_1(flattened, holeIndices);\n        for (var j = 0; j < indices.length; j += 3) {\n            this.indexArray.emplaceBack(triangleIndex + indices[j], triangleIndex + indices[j + 2], triangleIndex + indices[j + 1]);\n        }\n        segment.primitiveLength += indices.length / 3;\n        segment.vertexLength += numVertices;\n    }\n    this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, feature, index, imagePositions, canonical);\n};\nregister('FillExtrusionBucket', FillExtrusionBucket, {\n    omit: [\n        'layers',\n        'features'\n    ]\n});\nfunction isBoundaryEdge(p1, p2) {\n    return p1.x === p2.x && (p1.x < 0 || p1.x > EXTENT$1) || p1.y === p2.y && (p1.y < 0 || p1.y > EXTENT$1);\n}\nfunction isEntirelyOutside(ring) {\n    return ring.every(function (p) {\n        return p.x < 0;\n    }) || ring.every(function (p) {\n        return p.x > EXTENT$1;\n    }) || ring.every(function (p) {\n        return p.y < 0;\n    }) || ring.every(function (p) {\n        return p.y > EXTENT$1;\n    });\n}\n\nvar paint$5 = new Properties({\n    'fill-extrusion-opacity': new DataConstantProperty(spec['paint_fill-extrusion']['fill-extrusion-opacity']),\n    'fill-extrusion-color': new DataDrivenProperty(spec['paint_fill-extrusion']['fill-extrusion-color']),\n    'fill-extrusion-translate': new DataConstantProperty(spec['paint_fill-extrusion']['fill-extrusion-translate']),\n    'fill-extrusion-translate-anchor': new DataConstantProperty(spec['paint_fill-extrusion']['fill-extrusion-translate-anchor']),\n    'fill-extrusion-pattern': new CrossFadedDataDrivenProperty(spec['paint_fill-extrusion']['fill-extrusion-pattern']),\n    'fill-extrusion-height': new DataDrivenProperty(spec['paint_fill-extrusion']['fill-extrusion-height']),\n    'fill-extrusion-base': new DataDrivenProperty(spec['paint_fill-extrusion']['fill-extrusion-base']),\n    'fill-extrusion-vertical-gradient': new DataConstantProperty(spec['paint_fill-extrusion']['fill-extrusion-vertical-gradient'])\n});\nvar properties$4 = { paint: paint$5 };\n\nvar FillExtrusionStyleLayer = function (StyleLayer) {\n    function FillExtrusionStyleLayer(layer) {\n        StyleLayer.call(this, layer, properties$4);\n    }\n    if (StyleLayer)\n        FillExtrusionStyleLayer.__proto__ = StyleLayer;\n    FillExtrusionStyleLayer.prototype = Object.create(StyleLayer && StyleLayer.prototype);\n    FillExtrusionStyleLayer.prototype.constructor = FillExtrusionStyleLayer;\n    FillExtrusionStyleLayer.prototype.createBucket = function createBucket(parameters) {\n        return new FillExtrusionBucket(parameters);\n    };\n    FillExtrusionStyleLayer.prototype.queryRadius = function queryRadius() {\n        return translateDistance(this.paint.get('fill-extrusion-translate'));\n    };\n    FillExtrusionStyleLayer.prototype.is3D = function is3D() {\n        return true;\n    };\n    FillExtrusionStyleLayer.prototype.queryIntersectsFeature = function queryIntersectsFeature(queryGeometry, feature, featureState, geometry, zoom, transform, pixelsToTileUnits, pixelPosMatrix) {\n        var translatedPolygon = translate(queryGeometry, this.paint.get('fill-extrusion-translate'), this.paint.get('fill-extrusion-translate-anchor'), transform.angle, pixelsToTileUnits);\n        var height = this.paint.get('fill-extrusion-height').evaluate(feature, featureState);\n        var base = this.paint.get('fill-extrusion-base').evaluate(feature, featureState);\n        var projectedQueryGeometry = projectQueryGeometry$1(translatedPolygon, pixelPosMatrix, transform, 0);\n        var projected = projectExtrusion(geometry, base, height, pixelPosMatrix);\n        var projectedBase = projected[0];\n        var projectedTop = projected[1];\n        return checkIntersection(projectedBase, projectedTop, projectedQueryGeometry);\n    };\n    return FillExtrusionStyleLayer;\n}(StyleLayer);\nfunction dot$2(a, b) {\n    return a.x * b.x + a.y * b.y;\n}\nfunction getIntersectionDistance(projectedQueryGeometry, projectedFace) {\n    if (projectedQueryGeometry.length === 1) {\n        var i = 0;\n        var a = projectedFace[i++];\n        var b;\n        while (!b || a.equals(b)) {\n            b = projectedFace[i++];\n            if (!b) {\n                return Infinity;\n            }\n        }\n        for (; i < projectedFace.length; i++) {\n            var c = projectedFace[i];\n            var p = projectedQueryGeometry[0];\n            var ab = b.sub(a);\n            var ac = c.sub(a);\n            var ap = p.sub(a);\n            var dotABAB = dot$2(ab, ab);\n            var dotABAC = dot$2(ab, ac);\n            var dotACAC = dot$2(ac, ac);\n            var dotAPAB = dot$2(ap, ab);\n            var dotAPAC = dot$2(ap, ac);\n            var denom = dotABAB * dotACAC - dotABAC * dotABAC;\n            var v = (dotACAC * dotAPAB - dotABAC * dotAPAC) / denom;\n            var w = (dotABAB * dotAPAC - dotABAC * dotAPAB) / denom;\n            var u = 1 - v - w;\n            var distance = a.z * u + b.z * v + c.z * w;\n            if (isFinite(distance)) {\n                return distance;\n            }\n        }\n        return Infinity;\n    } else {\n        var closestDistance = Infinity;\n        for (var i$1 = 0, list = projectedFace; i$1 < list.length; i$1 += 1) {\n            var p$1 = list[i$1];\n            closestDistance = Math.min(closestDistance, p$1.z);\n        }\n        return closestDistance;\n    }\n}\nfunction checkIntersection(projectedBase, projectedTop, projectedQueryGeometry) {\n    var closestDistance = Infinity;\n    if (polygonIntersectsMultiPolygon(projectedQueryGeometry, projectedTop)) {\n        closestDistance = getIntersectionDistance(projectedQueryGeometry, projectedTop[0]);\n    }\n    for (var r = 0; r < projectedTop.length; r++) {\n        var ringTop = projectedTop[r];\n        var ringBase = projectedBase[r];\n        for (var p = 0; p < ringTop.length - 1; p++) {\n            var topA = ringTop[p];\n            var topB = ringTop[p + 1];\n            var baseA = ringBase[p];\n            var baseB = ringBase[p + 1];\n            var face = [\n                topA,\n                topB,\n                baseB,\n                baseA,\n                topA\n            ];\n            if (polygonIntersectsPolygon(projectedQueryGeometry, face)) {\n                closestDistance = Math.min(closestDistance, getIntersectionDistance(projectedQueryGeometry, face));\n            }\n        }\n    }\n    return closestDistance === Infinity ? false : closestDistance;\n}\nfunction projectExtrusion(geometry, zBase, zTop, m) {\n    var projectedBase = [];\n    var projectedTop = [];\n    var baseXZ = m[8] * zBase;\n    var baseYZ = m[9] * zBase;\n    var baseZZ = m[10] * zBase;\n    var baseWZ = m[11] * zBase;\n    var topXZ = m[8] * zTop;\n    var topYZ = m[9] * zTop;\n    var topZZ = m[10] * zTop;\n    var topWZ = m[11] * zTop;\n    for (var i$1 = 0, list$1 = geometry; i$1 < list$1.length; i$1 += 1) {\n        var r = list$1[i$1];\n        var ringBase = [];\n        var ringTop = [];\n        for (var i = 0, list = r; i < list.length; i += 1) {\n            var p = list[i];\n            var x = p.x;\n            var y = p.y;\n            var sX = m[0] * x + m[4] * y + m[12];\n            var sY = m[1] * x + m[5] * y + m[13];\n            var sZ = m[2] * x + m[6] * y + m[14];\n            var sW = m[3] * x + m[7] * y + m[15];\n            var baseX = sX + baseXZ;\n            var baseY = sY + baseYZ;\n            var baseZ = sZ + baseZZ;\n            var baseW = sW + baseWZ;\n            var topX = sX + topXZ;\n            var topY = sY + topYZ;\n            var topZ = sZ + topZZ;\n            var topW = sW + topWZ;\n            var b = new pointGeometry(baseX / baseW, baseY / baseW);\n            b.z = baseZ / baseW;\n            ringBase.push(b);\n            var t = new pointGeometry(topX / topW, topY / topW);\n            t.z = topZ / topW;\n            ringTop.push(t);\n        }\n        projectedBase.push(ringBase);\n        projectedTop.push(ringTop);\n    }\n    return [\n        projectedBase,\n        projectedTop\n    ];\n}\nfunction projectQueryGeometry$1(queryGeometry, pixelPosMatrix, transform, z) {\n    var projectedQueryGeometry = [];\n    for (var i = 0, list = queryGeometry; i < list.length; i += 1) {\n        var p = list[i];\n        var v = [\n            p.x,\n            p.y,\n            z,\n            1\n        ];\n        transformMat4(v, v, pixelPosMatrix);\n        projectedQueryGeometry.push(new pointGeometry(v[0] / v[3], v[1] / v[3]));\n    }\n    return projectedQueryGeometry;\n}\n\nvar lineLayoutAttributes = createLayout([\n    {\n        name: 'a_pos_normal',\n        components: 2,\n        type: 'Int16'\n    },\n    {\n        name: 'a_data',\n        components: 4,\n        type: 'Uint8'\n    }\n], 4);\nvar members$3 = lineLayoutAttributes.members;\n\nvar vectorTileFeatureTypes$1 = vectorTile.VectorTileFeature.types;\nvar EXTRUDE_SCALE = 63;\nvar COS_HALF_SHARP_CORNER = Math.cos(75 / 2 * (Math.PI / 180));\nvar SHARP_CORNER_OFFSET = 15;\nvar DEG_PER_TRIANGLE = 20;\nvar LINE_DISTANCE_BUFFER_BITS = 15;\nvar LINE_DISTANCE_SCALE = 1 / 2;\nvar MAX_LINE_DISTANCE = Math.pow(2, LINE_DISTANCE_BUFFER_BITS - 1) / LINE_DISTANCE_SCALE;\nvar LineBucket = function LineBucket(options) {\n    this.zoom = options.zoom;\n    this.overscaling = options.overscaling;\n    this.layers = options.layers;\n    this.layerIds = this.layers.map(function (layer) {\n        return layer.id;\n    });\n    this.index = options.index;\n    this.hasPattern = false;\n    this.patternFeatures = [];\n    this.layoutVertexArray = new StructArrayLayout2i4ub8();\n    this.indexArray = new StructArrayLayout3ui6();\n    this.programConfigurations = new ProgramConfigurationSet(members$3, options.layers, options.zoom);\n    this.segments = new SegmentVector();\n    this.stateDependentLayerIds = this.layers.filter(function (l) {\n        return l.isStateDependent();\n    }).map(function (l) {\n        return l.id;\n    });\n};\nLineBucket.prototype.populate = function populate(features, options, canonical) {\n    this.hasPattern = hasPattern('line', this.layers, options);\n    var lineSortKey = this.layers[0].layout.get('line-sort-key');\n    var bucketFeatures = [];\n    for (var i = 0, list = features; i < list.length; i += 1) {\n        var ref = list[i];\n        var feature = ref.feature;\n        var id = ref.id;\n        var index = ref.index;\n        var sourceLayerIndex = ref.sourceLayerIndex;\n        var needGeometry = this.layers[0]._featureFilter.needGeometry;\n        var evaluationFeature = {\n            type: feature.type,\n            id: id,\n            properties: feature.properties,\n            geometry: needGeometry ? loadGeometry(feature) : []\n        };\n        if (!this.layers[0]._featureFilter.filter(new EvaluationParameters(this.zoom), evaluationFeature, canonical)) {\n            continue;\n        }\n        if (!needGeometry) {\n            evaluationFeature.geometry = loadGeometry(feature);\n        }\n        var sortKey = lineSortKey ? lineSortKey.evaluate(evaluationFeature, {}, canonical) : undefined;\n        var bucketFeature = {\n            id: id,\n            properties: feature.properties,\n            type: feature.type,\n            sourceLayerIndex: sourceLayerIndex,\n            index: index,\n            geometry: evaluationFeature.geometry,\n            patterns: {},\n            sortKey: sortKey\n        };\n        bucketFeatures.push(bucketFeature);\n    }\n    if (lineSortKey) {\n        bucketFeatures.sort(function (a, b) {\n            return a.sortKey - b.sortKey;\n        });\n    }\n    for (var i$1 = 0, list$1 = bucketFeatures; i$1 < list$1.length; i$1 += 1) {\n        var bucketFeature$1 = list$1[i$1];\n        var ref$1 = bucketFeature$1;\n        var geometry = ref$1.geometry;\n        var index$1 = ref$1.index;\n        var sourceLayerIndex$1 = ref$1.sourceLayerIndex;\n        if (this.hasPattern) {\n            var patternBucketFeature = addPatternDependencies('line', this.layers, bucketFeature$1, this.zoom, options);\n            this.patternFeatures.push(patternBucketFeature);\n        } else {\n            this.addFeature(bucketFeature$1, geometry, index$1, canonical, {});\n        }\n        var feature$1 = features[index$1].feature;\n        options.featureIndex.insert(feature$1, geometry, index$1, sourceLayerIndex$1, this.index);\n    }\n};\nLineBucket.prototype.update = function update(states, vtLayer, imagePositions) {\n    if (!this.stateDependentLayers.length) {\n        return;\n    }\n    this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, imagePositions);\n};\nLineBucket.prototype.addFeatures = function addFeatures(options, canonical, imagePositions) {\n    for (var i = 0, list = this.patternFeatures; i < list.length; i += 1) {\n        var feature = list[i];\n        this.addFeature(feature, feature.geometry, feature.index, canonical, imagePositions);\n    }\n};\nLineBucket.prototype.isEmpty = function isEmpty() {\n    return this.layoutVertexArray.length === 0;\n};\nLineBucket.prototype.uploadPending = function uploadPending() {\n    return !this.uploaded || this.programConfigurations.needsUpload;\n};\nLineBucket.prototype.upload = function upload(context) {\n    if (!this.uploaded) {\n        this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, members$3);\n        this.indexBuffer = context.createIndexBuffer(this.indexArray);\n    }\n    this.programConfigurations.upload(context);\n    this.uploaded = true;\n};\nLineBucket.prototype.destroy = function destroy() {\n    if (!this.layoutVertexBuffer) {\n        return;\n    }\n    this.layoutVertexBuffer.destroy();\n    this.indexBuffer.destroy();\n    this.programConfigurations.destroy();\n    this.segments.destroy();\n};\nLineBucket.prototype.addFeature = function addFeature(feature, geometry, index, canonical, imagePositions) {\n    var layout = this.layers[0].layout;\n    var join = layout.get('line-join').evaluate(feature, {});\n    var cap = layout.get('line-cap');\n    var miterLimit = layout.get('line-miter-limit');\n    var roundLimit = layout.get('line-round-limit');\n    for (var i = 0, list = geometry; i < list.length; i += 1) {\n        var line = list[i];\n        this.addLine(line, feature, join, cap, miterLimit, roundLimit);\n    }\n    this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, feature, index, imagePositions, canonical);\n};\nLineBucket.prototype.addLine = function addLine(vertices, feature, join, cap, miterLimit, roundLimit) {\n    this.distance = 0;\n    this.scaledDistance = 0;\n    this.totalDistance = 0;\n    if (!!feature.properties && feature.properties.hasOwnProperty('mapbox_clip_start') && feature.properties.hasOwnProperty('mapbox_clip_end')) {\n        this.clipStart = +feature.properties['mapbox_clip_start'];\n        this.clipEnd = +feature.properties['mapbox_clip_end'];\n        for (var i = 0; i < vertices.length - 1; i++) {\n            this.totalDistance += vertices[i].dist(vertices[i + 1]);\n        }\n        this.updateScaledDistance();\n    }\n    var isPolygon = vectorTileFeatureTypes$1[feature.type] === 'Polygon';\n    var len = vertices.length;\n    while (len >= 2 && vertices[len - 1].equals(vertices[len - 2])) {\n        len--;\n    }\n    var first = 0;\n    while (first < len - 1 && vertices[first].equals(vertices[first + 1])) {\n        first++;\n    }\n    if (len < (isPolygon ? 3 : 2)) {\n        return;\n    }\n    if (join === 'bevel') {\n        miterLimit = 1.05;\n    }\n    var sharpCornerOffset = this.overscaling <= 16 ? SHARP_CORNER_OFFSET * EXTENT$1 / (512 * this.overscaling) : 0;\n    var segment = this.segments.prepareSegment(len * 10, this.layoutVertexArray, this.indexArray);\n    var currentVertex;\n    var prevVertex = undefined;\n    var nextVertex = undefined;\n    var prevNormal = undefined;\n    var nextNormal = undefined;\n    this.e1 = this.e2 = -1;\n    if (isPolygon) {\n        currentVertex = vertices[len - 2];\n        nextNormal = vertices[first].sub(currentVertex)._unit()._perp();\n    }\n    for (var i$1 = first; i$1 < len; i$1++) {\n        nextVertex = i$1 === len - 1 ? isPolygon ? vertices[first + 1] : undefined : vertices[i$1 + 1];\n        if (nextVertex && vertices[i$1].equals(nextVertex)) {\n            continue;\n        }\n        if (nextNormal) {\n            prevNormal = nextNormal;\n        }\n        if (currentVertex) {\n            prevVertex = currentVertex;\n        }\n        currentVertex = vertices[i$1];\n        nextNormal = nextVertex ? nextVertex.sub(currentVertex)._unit()._perp() : prevNormal;\n        prevNormal = prevNormal || nextNormal;\n        var joinNormal = prevNormal.add(nextNormal);\n        if (joinNormal.x !== 0 || joinNormal.y !== 0) {\n            joinNormal._unit();\n        }\n        var cosAngle = prevNormal.x * nextNormal.x + prevNormal.y * nextNormal.y;\n        var cosHalfAngle = joinNormal.x * nextNormal.x + joinNormal.y * nextNormal.y;\n        var miterLength = cosHalfAngle !== 0 ? 1 / cosHalfAngle : Infinity;\n        var approxAngle = 2 * Math.sqrt(2 - 2 * cosHalfAngle);\n        var isSharpCorner = cosHalfAngle < COS_HALF_SHARP_CORNER && prevVertex && nextVertex;\n        var lineTurnsLeft = prevNormal.x * nextNormal.y - prevNormal.y * nextNormal.x > 0;\n        if (isSharpCorner && i$1 > first) {\n            var prevSegmentLength = currentVertex.dist(prevVertex);\n            if (prevSegmentLength > 2 * sharpCornerOffset) {\n                var newPrevVertex = currentVertex.sub(currentVertex.sub(prevVertex)._mult(sharpCornerOffset / prevSegmentLength)._round());\n                this.updateDistance(prevVertex, newPrevVertex);\n                this.addCurrentVertex(newPrevVertex, prevNormal, 0, 0, segment);\n                prevVertex = newPrevVertex;\n            }\n        }\n        var middleVertex = prevVertex && nextVertex;\n        var currentJoin = middleVertex ? join : isPolygon ? 'butt' : cap;\n        if (middleVertex && currentJoin === 'round') {\n            if (miterLength < roundLimit) {\n                currentJoin = 'miter';\n            } else if (miterLength <= 2) {\n                currentJoin = 'fakeround';\n            }\n        }\n        if (currentJoin === 'miter' && miterLength > miterLimit) {\n            currentJoin = 'bevel';\n        }\n        if (currentJoin === 'bevel') {\n            if (miterLength > 2) {\n                currentJoin = 'flipbevel';\n            }\n            if (miterLength < miterLimit) {\n                currentJoin = 'miter';\n            }\n        }\n        if (prevVertex) {\n            this.updateDistance(prevVertex, currentVertex);\n        }\n        if (currentJoin === 'miter') {\n            joinNormal._mult(miterLength);\n            this.addCurrentVertex(currentVertex, joinNormal, 0, 0, segment);\n        } else if (currentJoin === 'flipbevel') {\n            if (miterLength > 100) {\n                joinNormal = nextNormal.mult(-1);\n            } else {\n                var bevelLength = miterLength * prevNormal.add(nextNormal).mag() / prevNormal.sub(nextNormal).mag();\n                joinNormal._perp()._mult(bevelLength * (lineTurnsLeft ? -1 : 1));\n            }\n            this.addCurrentVertex(currentVertex, joinNormal, 0, 0, segment);\n            this.addCurrentVertex(currentVertex, joinNormal.mult(-1), 0, 0, segment);\n        } else if (currentJoin === 'bevel' || currentJoin === 'fakeround') {\n            var offset = -Math.sqrt(miterLength * miterLength - 1);\n            var offsetA = lineTurnsLeft ? offset : 0;\n            var offsetB = lineTurnsLeft ? 0 : offset;\n            if (prevVertex) {\n                this.addCurrentVertex(currentVertex, prevNormal, offsetA, offsetB, segment);\n            }\n            if (currentJoin === 'fakeround') {\n                var n = Math.round(approxAngle * 180 / Math.PI / DEG_PER_TRIANGLE);\n                for (var m = 1; m < n; m++) {\n                    var t = m / n;\n                    if (t !== 0.5) {\n                        var t2 = t - 0.5;\n                        var A = 1.0904 + cosAngle * (-3.2452 + cosAngle * (3.55645 - cosAngle * 1.43519));\n                        var B = 0.848013 + cosAngle * (-1.06021 + cosAngle * 0.215638);\n                        t = t + t * t2 * (t - 1) * (A * t2 * t2 + B);\n                    }\n                    var extrude = nextNormal.sub(prevNormal)._mult(t)._add(prevNormal)._unit()._mult(lineTurnsLeft ? -1 : 1);\n                    this.addHalfVertex(currentVertex, extrude.x, extrude.y, false, lineTurnsLeft, 0, segment);\n                }\n            }\n            if (nextVertex) {\n                this.addCurrentVertex(currentVertex, nextNormal, -offsetA, -offsetB, segment);\n            }\n        } else if (currentJoin === 'butt') {\n            this.addCurrentVertex(currentVertex, joinNormal, 0, 0, segment);\n        } else if (currentJoin === 'square') {\n            var offset$1 = prevVertex ? 1 : -1;\n            this.addCurrentVertex(currentVertex, joinNormal, offset$1, offset$1, segment);\n        } else if (currentJoin === 'round') {\n            if (prevVertex) {\n                this.addCurrentVertex(currentVertex, prevNormal, 0, 0, segment);\n                this.addCurrentVertex(currentVertex, prevNormal, 1, 1, segment, true);\n            }\n            if (nextVertex) {\n                this.addCurrentVertex(currentVertex, nextNormal, -1, -1, segment, true);\n                this.addCurrentVertex(currentVertex, nextNormal, 0, 0, segment);\n            }\n        }\n        if (isSharpCorner && i$1 < len - 1) {\n            var nextSegmentLength = currentVertex.dist(nextVertex);\n            if (nextSegmentLength > 2 * sharpCornerOffset) {\n                var newCurrentVertex = currentVertex.add(nextVertex.sub(currentVertex)._mult(sharpCornerOffset / nextSegmentLength)._round());\n                this.updateDistance(currentVertex, newCurrentVertex);\n                this.addCurrentVertex(newCurrentVertex, nextNormal, 0, 0, segment);\n                currentVertex = newCurrentVertex;\n            }\n        }\n    }\n};\nLineBucket.prototype.addCurrentVertex = function addCurrentVertex(p, normal, endLeft, endRight, segment, round) {\n    if (round === void 0)\n        round = false;\n    var leftX = normal.x + normal.y * endLeft;\n    var leftY = normal.y - normal.x * endLeft;\n    var rightX = -normal.x + normal.y * endRight;\n    var rightY = -normal.y - normal.x * endRight;\n    this.addHalfVertex(p, leftX, leftY, round, false, endLeft, segment);\n    this.addHalfVertex(p, rightX, rightY, round, true, -endRight, segment);\n    if (this.distance > MAX_LINE_DISTANCE / 2 && this.totalDistance === 0) {\n        this.distance = 0;\n        this.addCurrentVertex(p, normal, endLeft, endRight, segment, round);\n    }\n};\nLineBucket.prototype.addHalfVertex = function addHalfVertex(ref, extrudeX, extrudeY, round, up, dir, segment) {\n    var x = ref.x;\n    var y = ref.y;\n    var linesofar = this.scaledDistance * LINE_DISTANCE_SCALE;\n    this.layoutVertexArray.emplaceBack((x << 1) + (round ? 1 : 0), (y << 1) + (up ? 1 : 0), Math.round(EXTRUDE_SCALE * extrudeX) + 128, Math.round(EXTRUDE_SCALE * extrudeY) + 128, (dir === 0 ? 0 : dir < 0 ? -1 : 1) + 1 | (linesofar & 63) << 2, linesofar >> 6);\n    var e = segment.vertexLength++;\n    if (this.e1 >= 0 && this.e2 >= 0) {\n        this.indexArray.emplaceBack(this.e1, this.e2, e);\n        segment.primitiveLength++;\n    }\n    if (up) {\n        this.e2 = e;\n    } else {\n        this.e1 = e;\n    }\n};\nLineBucket.prototype.updateScaledDistance = function updateScaledDistance() {\n    this.scaledDistance = this.totalDistance > 0 ? (this.clipStart + (this.clipEnd - this.clipStart) * this.distance / this.totalDistance) * (MAX_LINE_DISTANCE - 1) : this.distance;\n};\nLineBucket.prototype.updateDistance = function updateDistance(prev, next) {\n    this.distance += prev.dist(next);\n    this.updateScaledDistance();\n};\nregister('LineBucket', LineBucket, {\n    omit: [\n        'layers',\n        'patternFeatures'\n    ]\n});\n\nvar layout$6 = new Properties({\n    'line-cap': new DataConstantProperty(spec['layout_line']['line-cap']),\n    'line-join': new DataDrivenProperty(spec['layout_line']['line-join']),\n    'line-miter-limit': new DataConstantProperty(spec['layout_line']['line-miter-limit']),\n    'line-round-limit': new DataConstantProperty(spec['layout_line']['line-round-limit']),\n    'line-sort-key': new DataDrivenProperty(spec['layout_line']['line-sort-key'])\n});\nvar paint$6 = new Properties({\n    'line-opacity': new DataDrivenProperty(spec['paint_line']['line-opacity']),\n    'line-color': new DataDrivenProperty(spec['paint_line']['line-color']),\n    'line-translate': new DataConstantProperty(spec['paint_line']['line-translate']),\n    'line-translate-anchor': new DataConstantProperty(spec['paint_line']['line-translate-anchor']),\n    'line-width': new DataDrivenProperty(spec['paint_line']['line-width']),\n    'line-gap-width': new DataDrivenProperty(spec['paint_line']['line-gap-width']),\n    'line-offset': new DataDrivenProperty(spec['paint_line']['line-offset']),\n    'line-blur': new DataDrivenProperty(spec['paint_line']['line-blur']),\n    'line-dasharray': new CrossFadedProperty(spec['paint_line']['line-dasharray']),\n    'line-pattern': new CrossFadedDataDrivenProperty(spec['paint_line']['line-pattern']),\n    'line-gradient': new ColorRampProperty(spec['paint_line']['line-gradient'])\n});\nvar properties$5 = {\n    paint: paint$6,\n    layout: layout$6\n};\n\nvar LineFloorwidthProperty = function (DataDrivenProperty) {\n    function LineFloorwidthProperty() {\n        DataDrivenProperty.apply(this, arguments);\n    }\n    if (DataDrivenProperty)\n        LineFloorwidthProperty.__proto__ = DataDrivenProperty;\n    LineFloorwidthProperty.prototype = Object.create(DataDrivenProperty && DataDrivenProperty.prototype);\n    LineFloorwidthProperty.prototype.constructor = LineFloorwidthProperty;\n    LineFloorwidthProperty.prototype.possiblyEvaluate = function possiblyEvaluate(value, parameters) {\n        parameters = new EvaluationParameters(Math.floor(parameters.zoom), {\n            now: parameters.now,\n            fadeDuration: parameters.fadeDuration,\n            zoomHistory: parameters.zoomHistory,\n            transition: parameters.transition\n        });\n        return DataDrivenProperty.prototype.possiblyEvaluate.call(this, value, parameters);\n    };\n    LineFloorwidthProperty.prototype.evaluate = function evaluate(value, globals, feature, featureState) {\n        globals = extend({}, globals, { zoom: Math.floor(globals.zoom) });\n        return DataDrivenProperty.prototype.evaluate.call(this, value, globals, feature, featureState);\n    };\n    return LineFloorwidthProperty;\n}(DataDrivenProperty);\nvar lineFloorwidthProperty = new LineFloorwidthProperty(properties$5.paint.properties['line-width'].specification);\nlineFloorwidthProperty.useIntegerZoom = true;\nvar LineStyleLayer = function (StyleLayer) {\n    function LineStyleLayer(layer) {\n        StyleLayer.call(this, layer, properties$5);\n    }\n    if (StyleLayer)\n        LineStyleLayer.__proto__ = StyleLayer;\n    LineStyleLayer.prototype = Object.create(StyleLayer && StyleLayer.prototype);\n    LineStyleLayer.prototype.constructor = LineStyleLayer;\n    LineStyleLayer.prototype._handleSpecialPaintPropertyUpdate = function _handleSpecialPaintPropertyUpdate(name) {\n        if (name === 'line-gradient') {\n            this._updateGradient();\n        }\n    };\n    LineStyleLayer.prototype._updateGradient = function _updateGradient() {\n        var expression = this._transitionablePaint._values['line-gradient'].value.expression;\n        this.gradient = renderColorRamp(expression, 'lineProgress');\n        this.gradientTexture = null;\n    };\n    LineStyleLayer.prototype.recalculate = function recalculate(parameters, availableImages) {\n        StyleLayer.prototype.recalculate.call(this, parameters, availableImages);\n        this.paint._values['line-floorwidth'] = lineFloorwidthProperty.possiblyEvaluate(this._transitioningPaint._values['line-width'].value, parameters);\n    };\n    LineStyleLayer.prototype.createBucket = function createBucket(parameters) {\n        return new LineBucket(parameters);\n    };\n    LineStyleLayer.prototype.queryRadius = function queryRadius(bucket) {\n        var lineBucket = bucket;\n        var width = getLineWidth(getMaximumPaintValue('line-width', this, lineBucket), getMaximumPaintValue('line-gap-width', this, lineBucket));\n        var offset = getMaximumPaintValue('line-offset', this, lineBucket);\n        return width / 2 + Math.abs(offset) + translateDistance(this.paint.get('line-translate'));\n    };\n    LineStyleLayer.prototype.queryIntersectsFeature = function queryIntersectsFeature(queryGeometry, feature, featureState, geometry, zoom, transform, pixelsToTileUnits) {\n        var translatedPolygon = translate(queryGeometry, this.paint.get('line-translate'), this.paint.get('line-translate-anchor'), transform.angle, pixelsToTileUnits);\n        var halfWidth = pixelsToTileUnits / 2 * getLineWidth(this.paint.get('line-width').evaluate(feature, featureState), this.paint.get('line-gap-width').evaluate(feature, featureState));\n        var lineOffset = this.paint.get('line-offset').evaluate(feature, featureState);\n        if (lineOffset) {\n            geometry = offsetLine(geometry, lineOffset * pixelsToTileUnits);\n        }\n        return polygonIntersectsBufferedMultiLine(translatedPolygon, geometry, halfWidth);\n    };\n    LineStyleLayer.prototype.isTileClipped = function isTileClipped() {\n        return true;\n    };\n    return LineStyleLayer;\n}(StyleLayer);\nfunction getLineWidth(lineWidth, lineGapWidth) {\n    if (lineGapWidth > 0) {\n        return lineGapWidth + 2 * lineWidth;\n    } else {\n        return lineWidth;\n    }\n}\nfunction offsetLine(rings, offset) {\n    var newRings = [];\n    var zero = new pointGeometry(0, 0);\n    for (var k = 0; k < rings.length; k++) {\n        var ring = rings[k];\n        var newRing = [];\n        for (var i = 0; i < ring.length; i++) {\n            var a = ring[i - 1];\n            var b = ring[i];\n            var c = ring[i + 1];\n            var aToB = i === 0 ? zero : b.sub(a)._unit()._perp();\n            var bToC = i === ring.length - 1 ? zero : c.sub(b)._unit()._perp();\n            var extrude = aToB._add(bToC)._unit();\n            var cosHalfAngle = extrude.x * bToC.x + extrude.y * bToC.y;\n            extrude._mult(1 / cosHalfAngle);\n            newRing.push(extrude._mult(offset)._add(b));\n        }\n        newRings.push(newRing);\n    }\n    return newRings;\n}\n\nvar symbolLayoutAttributes = createLayout([\n    {\n        name: 'a_pos_offset',\n        components: 4,\n        type: 'Int16'\n    },\n    {\n        name: 'a_data',\n        components: 4,\n        type: 'Uint16'\n    },\n    {\n        name: 'a_pixeloffset',\n        components: 4,\n        type: 'Int16'\n    }\n], 4);\nvar dynamicLayoutAttributes = createLayout([{\n        name: 'a_projected_pos',\n        components: 3,\n        type: 'Float32'\n    }], 4);\nvar placementOpacityAttributes = createLayout([{\n        name: 'a_fade_opacity',\n        components: 1,\n        type: 'Uint32'\n    }], 4);\nvar collisionVertexAttributes = createLayout([\n    {\n        name: 'a_placed',\n        components: 2,\n        type: 'Uint8'\n    },\n    {\n        name: 'a_shift',\n        components: 2,\n        type: 'Float32'\n    }\n]);\nvar collisionBox = createLayout([\n    {\n        type: 'Int16',\n        name: 'anchorPointX'\n    },\n    {\n        type: 'Int16',\n        name: 'anchorPointY'\n    },\n    {\n        type: 'Int16',\n        name: 'x1'\n    },\n    {\n        type: 'Int16',\n        name: 'y1'\n    },\n    {\n        type: 'Int16',\n        name: 'x2'\n    },\n    {\n        type: 'Int16',\n        name: 'y2'\n    },\n    {\n        type: 'Uint32',\n        name: 'featureIndex'\n    },\n    {\n        type: 'Uint16',\n        name: 'sourceLayerIndex'\n    },\n    {\n        type: 'Uint16',\n        name: 'bucketIndex'\n    }\n]);\nvar collisionBoxLayout = createLayout([\n    {\n        name: 'a_pos',\n        components: 2,\n        type: 'Int16'\n    },\n    {\n        name: 'a_anchor_pos',\n        components: 2,\n        type: 'Int16'\n    },\n    {\n        name: 'a_extrude',\n        components: 2,\n        type: 'Int16'\n    }\n], 4);\nvar collisionCircleLayout = createLayout([\n    {\n        name: 'a_pos',\n        components: 2,\n        type: 'Float32'\n    },\n    {\n        name: 'a_radius',\n        components: 1,\n        type: 'Float32'\n    },\n    {\n        name: 'a_flags',\n        components: 2,\n        type: 'Int16'\n    }\n], 4);\nvar quadTriangle = createLayout([{\n        name: 'triangle',\n        components: 3,\n        type: 'Uint16'\n    }]);\nvar placement = createLayout([\n    {\n        type: 'Int16',\n        name: 'anchorX'\n    },\n    {\n        type: 'Int16',\n        name: 'anchorY'\n    },\n    {\n        type: 'Uint16',\n        name: 'glyphStartIndex'\n    },\n    {\n        type: 'Uint16',\n        name: 'numGlyphs'\n    },\n    {\n        type: 'Uint32',\n        name: 'vertexStartIndex'\n    },\n    {\n        type: 'Uint32',\n        name: 'lineStartIndex'\n    },\n    {\n        type: 'Uint32',\n        name: 'lineLength'\n    },\n    {\n        type: 'Uint16',\n        name: 'segment'\n    },\n    {\n        type: 'Uint16',\n        name: 'lowerSize'\n    },\n    {\n        type: 'Uint16',\n        name: 'upperSize'\n    },\n    {\n        type: 'Float32',\n        name: 'lineOffsetX'\n    },\n    {\n        type: 'Float32',\n        name: 'lineOffsetY'\n    },\n    {\n        type: 'Uint8',\n        name: 'writingMode'\n    },\n    {\n        type: 'Uint8',\n        name: 'placedOrientation'\n    },\n    {\n        type: 'Uint8',\n        name: 'hidden'\n    },\n    {\n        type: 'Uint32',\n        name: 'crossTileID'\n    },\n    {\n        type: 'Int16',\n        name: 'associatedIconIndex'\n    }\n]);\nvar symbolInstance = createLayout([\n    {\n        type: 'Int16',\n        name: 'anchorX'\n    },\n    {\n        type: 'Int16',\n        name: 'anchorY'\n    },\n    {\n        type: 'Int16',\n        name: 'rightJustifiedTextSymbolIndex'\n    },\n    {\n        type: 'Int16',\n        name: 'centerJustifiedTextSymbolIndex'\n    },\n    {\n        type: 'Int16',\n        name: 'leftJustifiedTextSymbolIndex'\n    },\n    {\n        type: 'Int16',\n        name: 'verticalPlacedTextSymbolIndex'\n    },\n    {\n        type: 'Int16',\n        name: 'placedIconSymbolIndex'\n    },\n    {\n        type: 'Int16',\n        name: 'verticalPlacedIconSymbolIndex'\n    },\n    {\n        type: 'Uint16',\n        name: 'key'\n    },\n    {\n        type: 'Uint16',\n        name: 'textBoxStartIndex'\n    },\n    {\n        type: 'Uint16',\n        name: 'textBoxEndIndex'\n    },\n    {\n        type: 'Uint16',\n        name: 'verticalTextBoxStartIndex'\n    },\n    {\n        type: 'Uint16',\n        name: 'verticalTextBoxEndIndex'\n    },\n    {\n        type: 'Uint16',\n        name: 'iconBoxStartIndex'\n    },\n    {\n        type: 'Uint16',\n        name: 'iconBoxEndIndex'\n    },\n    {\n        type: 'Uint16',\n        name: 'verticalIconBoxStartIndex'\n    },\n    {\n        type: 'Uint16',\n        name: 'verticalIconBoxEndIndex'\n    },\n    {\n        type: 'Uint16',\n        name: 'featureIndex'\n    },\n    {\n        type: 'Uint16',\n        name: 'numHorizontalGlyphVertices'\n    },\n    {\n        type: 'Uint16',\n        name: 'numVerticalGlyphVertices'\n    },\n    {\n        type: 'Uint16',\n        name: 'numIconVertices'\n    },\n    {\n        type: 'Uint16',\n        name: 'numVerticalIconVertices'\n    },\n    {\n        type: 'Uint16',\n        name: 'useRuntimeCollisionCircles'\n    },\n    {\n        type: 'Uint32',\n        name: 'crossTileID'\n    },\n    {\n        type: 'Float32',\n        name: 'textBoxScale'\n    },\n    {\n        type: 'Float32',\n        components: 2,\n        name: 'textOffset'\n    },\n    {\n        type: 'Float32',\n        name: 'collisionCircleDiameter'\n    }\n]);\nvar glyphOffset = createLayout([{\n        type: 'Float32',\n        name: 'offsetX'\n    }]);\nvar lineVertex = createLayout([\n    {\n        type: 'Int16',\n        name: 'x'\n    },\n    {\n        type: 'Int16',\n        name: 'y'\n    },\n    {\n        type: 'Int16',\n        name: 'tileUnitDistanceFromAnchor'\n    }\n]);\n\nfunction transformText(text, layer, feature) {\n    var transform = layer.layout.get('text-transform').evaluate(feature, {});\n    if (transform === 'uppercase') {\n        text = text.toLocaleUpperCase();\n    } else if (transform === 'lowercase') {\n        text = text.toLocaleLowerCase();\n    }\n    if (plugin.applyArabicShaping) {\n        text = plugin.applyArabicShaping(text);\n    }\n    return text;\n}\nfunction transformText$1 (text, layer, feature) {\n    text.sections.forEach(function (section) {\n        section.text = transformText(section.text, layer, feature);\n    });\n    return text;\n}\n\nfunction mergeLines (features) {\n    var leftIndex = {};\n    var rightIndex = {};\n    var mergedFeatures = [];\n    var mergedIndex = 0;\n    function add(k) {\n        mergedFeatures.push(features[k]);\n        mergedIndex++;\n    }\n    function mergeFromRight(leftKey, rightKey, geom) {\n        var i = rightIndex[leftKey];\n        delete rightIndex[leftKey];\n        rightIndex[rightKey] = i;\n        mergedFeatures[i].geometry[0].pop();\n        mergedFeatures[i].geometry[0] = mergedFeatures[i].geometry[0].concat(geom[0]);\n        return i;\n    }\n    function mergeFromLeft(leftKey, rightKey, geom) {\n        var i = leftIndex[rightKey];\n        delete leftIndex[rightKey];\n        leftIndex[leftKey] = i;\n        mergedFeatures[i].geometry[0].shift();\n        mergedFeatures[i].geometry[0] = geom[0].concat(mergedFeatures[i].geometry[0]);\n        return i;\n    }\n    function getKey(text, geom, onRight) {\n        var point = onRight ? geom[0][geom[0].length - 1] : geom[0][0];\n        return text + ':' + point.x + ':' + point.y;\n    }\n    for (var k = 0; k < features.length; k++) {\n        var feature = features[k];\n        var geom = feature.geometry;\n        var text = feature.text ? feature.text.toString() : null;\n        if (!text) {\n            add(k);\n            continue;\n        }\n        var leftKey = getKey(text, geom), rightKey = getKey(text, geom, true);\n        if (leftKey in rightIndex && rightKey in leftIndex && rightIndex[leftKey] !== leftIndex[rightKey]) {\n            var j = mergeFromLeft(leftKey, rightKey, geom);\n            var i = mergeFromRight(leftKey, rightKey, mergedFeatures[j].geometry);\n            delete leftIndex[leftKey];\n            delete rightIndex[rightKey];\n            rightIndex[getKey(text, mergedFeatures[i].geometry, true)] = i;\n            mergedFeatures[j].geometry = null;\n        } else if (leftKey in rightIndex) {\n            mergeFromRight(leftKey, rightKey, geom);\n        } else if (rightKey in leftIndex) {\n            mergeFromLeft(leftKey, rightKey, geom);\n        } else {\n            add(k);\n            leftIndex[leftKey] = mergedIndex - 1;\n            rightIndex[rightKey] = mergedIndex - 1;\n        }\n    }\n    return mergedFeatures.filter(function (f) {\n        return f.geometry;\n    });\n}\n\nvar verticalizedCharacterMap = {\n    '!': '\\uFE15',\n    '#': '\\uFF03',\n    '$': '\\uFF04',\n    '%': '\\uFF05',\n    '&': '\\uFF06',\n    '(': '\\uFE35',\n    ')': '\\uFE36',\n    '*': '\\uFF0A',\n    '+': '\\uFF0B',\n    ',': '\\uFE10',\n    '-': '\\uFE32',\n    '.': '\\u30FB',\n    '/': '\\uFF0F',\n    ':': '\\uFE13',\n    ';': '\\uFE14',\n    '<': '\\uFE3F',\n    '=': '\\uFF1D',\n    '>': '\\uFE40',\n    '?': '\\uFE16',\n    '@': '\\uFF20',\n    '[': '\\uFE47',\n    '\\\\': '\\uFF3C',\n    ']': '\\uFE48',\n    '^': '\\uFF3E',\n    '_': '︳',\n    '`': '\\uFF40',\n    '{': '\\uFE37',\n    '|': '\\u2015',\n    '}': '\\uFE38',\n    '~': '\\uFF5E',\n    '\\xA2': '\\uFFE0',\n    '\\xA3': '\\uFFE1',\n    '\\xA5': '\\uFFE5',\n    '\\xA6': '\\uFFE4',\n    '\\xAC': '\\uFFE2',\n    '\\xAF': '\\uFFE3',\n    '\\u2013': '\\uFE32',\n    '\\u2014': '\\uFE31',\n    '\\u2018': '\\uFE43',\n    '\\u2019': '\\uFE44',\n    '\\u201C': '\\uFE41',\n    '\\u201D': '\\uFE42',\n    '\\u2026': '\\uFE19',\n    '\\u2027': '\\u30FB',\n    '\\u20A9': '\\uFFE6',\n    '\\u3001': '\\uFE11',\n    '\\u3002': '\\uFE12',\n    '\\u3008': '\\uFE3F',\n    '\\u3009': '\\uFE40',\n    '\\u300A': '\\uFE3D',\n    '\\u300B': '\\uFE3E',\n    '\\u300C': '\\uFE41',\n    '\\u300D': '\\uFE42',\n    '\\u300E': '\\uFE43',\n    '\\u300F': '\\uFE44',\n    '\\u3010': '\\uFE3B',\n    '\\u3011': '\\uFE3C',\n    '\\u3014': '\\uFE39',\n    '\\u3015': '\\uFE3A',\n    '\\u3016': '\\uFE17',\n    '\\u3017': '\\uFE18',\n    '\\uFF01': '\\uFE15',\n    '\\uFF08': '\\uFE35',\n    '\\uFF09': '\\uFE36',\n    '\\uFF0C': '\\uFE10',\n    '\\uFF0D': '\\uFE32',\n    '\\uFF0E': '\\u30FB',\n    '\\uFF1A': '\\uFE13',\n    '\\uFF1B': '\\uFE14',\n    '\\uFF1C': '\\uFE3F',\n    '\\uFF1E': '\\uFE40',\n    '\\uFF1F': '\\uFE16',\n    '\\uFF3B': '\\uFE47',\n    '\\uFF3D': '\\uFE48',\n    '＿': '︳',\n    '\\uFF5B': '\\uFE37',\n    '\\uFF5C': '\\u2015',\n    '\\uFF5D': '\\uFE38',\n    '\\uFF5F': '\\uFE35',\n    '\\uFF60': '\\uFE36',\n    '\\uFF61': '\\uFE12',\n    '\\uFF62': '\\uFE41',\n    '\\uFF63': '\\uFE42'\n};\nfunction verticalizePunctuation(input) {\n    var output = '';\n    for (var i = 0; i < input.length; i++) {\n        var nextCharCode = input.charCodeAt(i + 1) || null;\n        var prevCharCode = input.charCodeAt(i - 1) || null;\n        var canReplacePunctuation = (!nextCharCode || !charHasRotatedVerticalOrientation(nextCharCode) || verticalizedCharacterMap[input[i + 1]]) && (!prevCharCode || !charHasRotatedVerticalOrientation(prevCharCode) || verticalizedCharacterMap[input[i - 1]]);\n        if (canReplacePunctuation && verticalizedCharacterMap[input[i]]) {\n            output += verticalizedCharacterMap[input[i]];\n        } else {\n            output += input[i];\n        }\n    }\n    return output;\n}\n\nvar ONE_EM = 24;\n\nvar read = function (buffer, offset, isLE, mLen, nBytes) {\n    var e, m;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var nBits = -7;\n    var i = isLE ? nBytes - 1 : 0;\n    var d = isLE ? -1 : 1;\n    var s = buffer[offset + i];\n    i += d;\n    e = s & (1 << -nBits) - 1;\n    s >>= -nBits;\n    nBits += eLen;\n    for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {\n    }\n    m = e & (1 << -nBits) - 1;\n    e >>= -nBits;\n    nBits += mLen;\n    for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {\n    }\n    if (e === 0) {\n        e = 1 - eBias;\n    } else if (e === eMax) {\n        return m ? NaN : (s ? -1 : 1) * Infinity;\n    } else {\n        m = m + Math.pow(2, mLen);\n        e = e - eBias;\n    }\n    return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n};\nvar write = function (buffer, value, offset, isLE, mLen, nBytes) {\n    var e, m, c;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n    var i = isLE ? 0 : nBytes - 1;\n    var d = isLE ? 1 : -1;\n    var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n    value = Math.abs(value);\n    if (isNaN(value) || value === Infinity) {\n        m = isNaN(value) ? 1 : 0;\n        e = eMax;\n    } else {\n        e = Math.floor(Math.log(value) / Math.LN2);\n        if (value * (c = Math.pow(2, -e)) < 1) {\n            e--;\n            c *= 2;\n        }\n        if (e + eBias >= 1) {\n            value += rt / c;\n        } else {\n            value += rt * Math.pow(2, 1 - eBias);\n        }\n        if (value * c >= 2) {\n            e++;\n            c /= 2;\n        }\n        if (e + eBias >= eMax) {\n            m = 0;\n            e = eMax;\n        } else if (e + eBias >= 1) {\n            m = (value * c - 1) * Math.pow(2, mLen);\n            e = e + eBias;\n        } else {\n            m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n            e = 0;\n        }\n    }\n    for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {\n    }\n    e = e << mLen | m;\n    eLen += mLen;\n    for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {\n    }\n    buffer[offset + i - d] |= s * 128;\n};\n\nvar ieee754 = {\n\tread: read,\n\twrite: write\n};\n\nvar pbf = Pbf;\n\nfunction Pbf(buf) {\n    this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0);\n    this.pos = 0;\n    this.type = 0;\n    this.length = this.buf.length;\n}\nPbf.Varint = 0;\nPbf.Fixed64 = 1;\nPbf.Bytes = 2;\nPbf.Fixed32 = 5;\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16), SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\nvar TEXT_DECODER_MIN_LENGTH = 12;\nvar utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf8');\nPbf.prototype = {\n    destroy: function () {\n        this.buf = null;\n    },\n    readFields: function (readField, result, end) {\n        end = end || this.length;\n        while (this.pos < end) {\n            var val = this.readVarint(), tag = val >> 3, startPos = this.pos;\n            this.type = val & 7;\n            readField(tag, result, this);\n            if (this.pos === startPos) {\n                this.skip(val);\n            }\n        }\n        return result;\n    },\n    readMessage: function (readField, result) {\n        return this.readFields(readField, result, this.readVarint() + this.pos);\n    },\n    readFixed32: function () {\n        var val = readUInt32(this.buf, this.pos);\n        this.pos += 4;\n        return val;\n    },\n    readSFixed32: function () {\n        var val = readInt32(this.buf, this.pos);\n        this.pos += 4;\n        return val;\n    },\n    readFixed64: function () {\n        var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n        this.pos += 8;\n        return val;\n    },\n    readSFixed64: function () {\n        var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n        this.pos += 8;\n        return val;\n    },\n    readFloat: function () {\n        var val = ieee754.read(this.buf, this.pos, true, 23, 4);\n        this.pos += 4;\n        return val;\n    },\n    readDouble: function () {\n        var val = ieee754.read(this.buf, this.pos, true, 52, 8);\n        this.pos += 8;\n        return val;\n    },\n    readVarint: function (isSigned) {\n        var buf = this.buf, val, b;\n        b = buf[this.pos++];\n        val = b & 127;\n        if (b < 128) {\n            return val;\n        }\n        b = buf[this.pos++];\n        val |= (b & 127) << 7;\n        if (b < 128) {\n            return val;\n        }\n        b = buf[this.pos++];\n        val |= (b & 127) << 14;\n        if (b < 128) {\n            return val;\n        }\n        b = buf[this.pos++];\n        val |= (b & 127) << 21;\n        if (b < 128) {\n            return val;\n        }\n        b = buf[this.pos];\n        val |= (b & 15) << 28;\n        return readVarintRemainder(val, isSigned, this);\n    },\n    readVarint64: function () {\n        return this.readVarint(true);\n    },\n    readSVarint: function () {\n        var num = this.readVarint();\n        return num % 2 === 1 ? (num + 1) / -2 : num / 2;\n    },\n    readBoolean: function () {\n        return Boolean(this.readVarint());\n    },\n    readString: function () {\n        var end = this.readVarint() + this.pos;\n        var pos = this.pos;\n        this.pos = end;\n        if (end - pos >= TEXT_DECODER_MIN_LENGTH && utf8TextDecoder) {\n            return readUtf8TextDecoder(this.buf, pos, end);\n        }\n        return readUtf8(this.buf, pos, end);\n    },\n    readBytes: function () {\n        var end = this.readVarint() + this.pos, buffer = this.buf.subarray(this.pos, end);\n        this.pos = end;\n        return buffer;\n    },\n    readPackedVarint: function (arr, isSigned) {\n        if (this.type !== Pbf.Bytes) {\n            return arr.push(this.readVarint(isSigned));\n        }\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) {\n            arr.push(this.readVarint(isSigned));\n        }\n        return arr;\n    },\n    readPackedSVarint: function (arr) {\n        if (this.type !== Pbf.Bytes) {\n            return arr.push(this.readSVarint());\n        }\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) {\n            arr.push(this.readSVarint());\n        }\n        return arr;\n    },\n    readPackedBoolean: function (arr) {\n        if (this.type !== Pbf.Bytes) {\n            return arr.push(this.readBoolean());\n        }\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) {\n            arr.push(this.readBoolean());\n        }\n        return arr;\n    },\n    readPackedFloat: function (arr) {\n        if (this.type !== Pbf.Bytes) {\n            return arr.push(this.readFloat());\n        }\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) {\n            arr.push(this.readFloat());\n        }\n        return arr;\n    },\n    readPackedDouble: function (arr) {\n        if (this.type !== Pbf.Bytes) {\n            return arr.push(this.readDouble());\n        }\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) {\n            arr.push(this.readDouble());\n        }\n        return arr;\n    },\n    readPackedFixed32: function (arr) {\n        if (this.type !== Pbf.Bytes) {\n            return arr.push(this.readFixed32());\n        }\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) {\n            arr.push(this.readFixed32());\n        }\n        return arr;\n    },\n    readPackedSFixed32: function (arr) {\n        if (this.type !== Pbf.Bytes) {\n            return arr.push(this.readSFixed32());\n        }\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) {\n            arr.push(this.readSFixed32());\n        }\n        return arr;\n    },\n    readPackedFixed64: function (arr) {\n        if (this.type !== Pbf.Bytes) {\n            return arr.push(this.readFixed64());\n        }\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) {\n            arr.push(this.readFixed64());\n        }\n        return arr;\n    },\n    readPackedSFixed64: function (arr) {\n        if (this.type !== Pbf.Bytes) {\n            return arr.push(this.readSFixed64());\n        }\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) {\n            arr.push(this.readSFixed64());\n        }\n        return arr;\n    },\n    skip: function (val) {\n        var type = val & 7;\n        if (type === Pbf.Varint) {\n            while (this.buf[this.pos++] > 127) {\n            }\n        } else if (type === Pbf.Bytes) {\n            this.pos = this.readVarint() + this.pos;\n        } else if (type === Pbf.Fixed32) {\n            this.pos += 4;\n        } else if (type === Pbf.Fixed64) {\n            this.pos += 8;\n        } else {\n            throw new Error('Unimplemented type: ' + type);\n        }\n    },\n    writeTag: function (tag, type) {\n        this.writeVarint(tag << 3 | type);\n    },\n    realloc: function (min) {\n        var length = this.length || 16;\n        while (length < this.pos + min) {\n            length *= 2;\n        }\n        if (length !== this.length) {\n            var buf = new Uint8Array(length);\n            buf.set(this.buf);\n            this.buf = buf;\n            this.length = length;\n        }\n    },\n    finish: function () {\n        this.length = this.pos;\n        this.pos = 0;\n        return this.buf.subarray(0, this.length);\n    },\n    writeFixed32: function (val) {\n        this.realloc(4);\n        writeInt32(this.buf, val, this.pos);\n        this.pos += 4;\n    },\n    writeSFixed32: function (val) {\n        this.realloc(4);\n        writeInt32(this.buf, val, this.pos);\n        this.pos += 4;\n    },\n    writeFixed64: function (val) {\n        this.realloc(8);\n        writeInt32(this.buf, val & -1, this.pos);\n        writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n        this.pos += 8;\n    },\n    writeSFixed64: function (val) {\n        this.realloc(8);\n        writeInt32(this.buf, val & -1, this.pos);\n        writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n        this.pos += 8;\n    },\n    writeVarint: function (val) {\n        val = +val || 0;\n        if (val > 268435455 || val < 0) {\n            writeBigVarint(val, this);\n            return;\n        }\n        this.realloc(4);\n        this.buf[this.pos++] = val & 127 | (val > 127 ? 128 : 0);\n        if (val <= 127) {\n            return;\n        }\n        this.buf[this.pos++] = (val >>>= 7) & 127 | (val > 127 ? 128 : 0);\n        if (val <= 127) {\n            return;\n        }\n        this.buf[this.pos++] = (val >>>= 7) & 127 | (val > 127 ? 128 : 0);\n        if (val <= 127) {\n            return;\n        }\n        this.buf[this.pos++] = val >>> 7 & 127;\n    },\n    writeSVarint: function (val) {\n        this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n    },\n    writeBoolean: function (val) {\n        this.writeVarint(Boolean(val));\n    },\n    writeString: function (str) {\n        str = String(str);\n        this.realloc(str.length * 4);\n        this.pos++;\n        var startPos = this.pos;\n        this.pos = writeUtf8(this.buf, str, this.pos);\n        var len = this.pos - startPos;\n        if (len >= 128) {\n            makeRoomForExtraLength(startPos, len, this);\n        }\n        this.pos = startPos - 1;\n        this.writeVarint(len);\n        this.pos += len;\n    },\n    writeFloat: function (val) {\n        this.realloc(4);\n        ieee754.write(this.buf, val, this.pos, true, 23, 4);\n        this.pos += 4;\n    },\n    writeDouble: function (val) {\n        this.realloc(8);\n        ieee754.write(this.buf, val, this.pos, true, 52, 8);\n        this.pos += 8;\n    },\n    writeBytes: function (buffer) {\n        var len = buffer.length;\n        this.writeVarint(len);\n        this.realloc(len);\n        for (var i = 0; i < len; i++) {\n            this.buf[this.pos++] = buffer[i];\n        }\n    },\n    writeRawMessage: function (fn, obj) {\n        this.pos++;\n        var startPos = this.pos;\n        fn(obj, this);\n        var len = this.pos - startPos;\n        if (len >= 128) {\n            makeRoomForExtraLength(startPos, len, this);\n        }\n        this.pos = startPos - 1;\n        this.writeVarint(len);\n        this.pos += len;\n    },\n    writeMessage: function (tag, fn, obj) {\n        this.writeTag(tag, Pbf.Bytes);\n        this.writeRawMessage(fn, obj);\n    },\n    writePackedVarint: function (tag, arr) {\n        if (arr.length) {\n            this.writeMessage(tag, writePackedVarint, arr);\n        }\n    },\n    writePackedSVarint: function (tag, arr) {\n        if (arr.length) {\n            this.writeMessage(tag, writePackedSVarint, arr);\n        }\n    },\n    writePackedBoolean: function (tag, arr) {\n        if (arr.length) {\n            this.writeMessage(tag, writePackedBoolean, arr);\n        }\n    },\n    writePackedFloat: function (tag, arr) {\n        if (arr.length) {\n            this.writeMessage(tag, writePackedFloat, arr);\n        }\n    },\n    writePackedDouble: function (tag, arr) {\n        if (arr.length) {\n            this.writeMessage(tag, writePackedDouble, arr);\n        }\n    },\n    writePackedFixed32: function (tag, arr) {\n        if (arr.length) {\n            this.writeMessage(tag, writePackedFixed32, arr);\n        }\n    },\n    writePackedSFixed32: function (tag, arr) {\n        if (arr.length) {\n            this.writeMessage(tag, writePackedSFixed32, arr);\n        }\n    },\n    writePackedFixed64: function (tag, arr) {\n        if (arr.length) {\n            this.writeMessage(tag, writePackedFixed64, arr);\n        }\n    },\n    writePackedSFixed64: function (tag, arr) {\n        if (arr.length) {\n            this.writeMessage(tag, writePackedSFixed64, arr);\n        }\n    },\n    writeBytesField: function (tag, buffer) {\n        this.writeTag(tag, Pbf.Bytes);\n        this.writeBytes(buffer);\n    },\n    writeFixed32Field: function (tag, val) {\n        this.writeTag(tag, Pbf.Fixed32);\n        this.writeFixed32(val);\n    },\n    writeSFixed32Field: function (tag, val) {\n        this.writeTag(tag, Pbf.Fixed32);\n        this.writeSFixed32(val);\n    },\n    writeFixed64Field: function (tag, val) {\n        this.writeTag(tag, Pbf.Fixed64);\n        this.writeFixed64(val);\n    },\n    writeSFixed64Field: function (tag, val) {\n        this.writeTag(tag, Pbf.Fixed64);\n        this.writeSFixed64(val);\n    },\n    writeVarintField: function (tag, val) {\n        this.writeTag(tag, Pbf.Varint);\n        this.writeVarint(val);\n    },\n    writeSVarintField: function (tag, val) {\n        this.writeTag(tag, Pbf.Varint);\n        this.writeSVarint(val);\n    },\n    writeStringField: function (tag, str) {\n        this.writeTag(tag, Pbf.Bytes);\n        this.writeString(str);\n    },\n    writeFloatField: function (tag, val) {\n        this.writeTag(tag, Pbf.Fixed32);\n        this.writeFloat(val);\n    },\n    writeDoubleField: function (tag, val) {\n        this.writeTag(tag, Pbf.Fixed64);\n        this.writeDouble(val);\n    },\n    writeBooleanField: function (tag, val) {\n        this.writeVarintField(tag, Boolean(val));\n    }\n};\nfunction readVarintRemainder(l, s, p) {\n    var buf = p.buf, h, b;\n    b = buf[p.pos++];\n    h = (b & 112) >> 4;\n    if (b < 128) {\n        return toNum(l, h, s);\n    }\n    b = buf[p.pos++];\n    h |= (b & 127) << 3;\n    if (b < 128) {\n        return toNum(l, h, s);\n    }\n    b = buf[p.pos++];\n    h |= (b & 127) << 10;\n    if (b < 128) {\n        return toNum(l, h, s);\n    }\n    b = buf[p.pos++];\n    h |= (b & 127) << 17;\n    if (b < 128) {\n        return toNum(l, h, s);\n    }\n    b = buf[p.pos++];\n    h |= (b & 127) << 24;\n    if (b < 128) {\n        return toNum(l, h, s);\n    }\n    b = buf[p.pos++];\n    h |= (b & 1) << 31;\n    if (b < 128) {\n        return toNum(l, h, s);\n    }\n    throw new Error('Expected varint not more than 10 bytes');\n}\nfunction readPackedEnd(pbf) {\n    return pbf.type === Pbf.Bytes ? pbf.readVarint() + pbf.pos : pbf.pos + 1;\n}\nfunction toNum(low, high, isSigned) {\n    if (isSigned) {\n        return high * 4294967296 + (low >>> 0);\n    }\n    return (high >>> 0) * 4294967296 + (low >>> 0);\n}\nfunction writeBigVarint(val, pbf) {\n    var low, high;\n    if (val >= 0) {\n        low = val % 4294967296 | 0;\n        high = val / 4294967296 | 0;\n    } else {\n        low = ~(-val % 4294967296);\n        high = ~(-val / 4294967296);\n        if (low ^ 4294967295) {\n            low = low + 1 | 0;\n        } else {\n            low = 0;\n            high = high + 1 | 0;\n        }\n    }\n    if (val >= 18446744073709552000 || val < -18446744073709552000) {\n        throw new Error('Given varint doesn\\'t fit into 10 bytes');\n    }\n    pbf.realloc(10);\n    writeBigVarintLow(low, high, pbf);\n    writeBigVarintHigh(high, pbf);\n}\nfunction writeBigVarintLow(low, high, pbf) {\n    pbf.buf[pbf.pos++] = low & 127 | 128;\n    low >>>= 7;\n    pbf.buf[pbf.pos++] = low & 127 | 128;\n    low >>>= 7;\n    pbf.buf[pbf.pos++] = low & 127 | 128;\n    low >>>= 7;\n    pbf.buf[pbf.pos++] = low & 127 | 128;\n    low >>>= 7;\n    pbf.buf[pbf.pos] = low & 127;\n}\nfunction writeBigVarintHigh(high, pbf) {\n    var lsb = (high & 7) << 4;\n    pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 128 : 0);\n    if (!high) {\n        return;\n    }\n    pbf.buf[pbf.pos++] = high & 127 | ((high >>>= 7) ? 128 : 0);\n    if (!high) {\n        return;\n    }\n    pbf.buf[pbf.pos++] = high & 127 | ((high >>>= 7) ? 128 : 0);\n    if (!high) {\n        return;\n    }\n    pbf.buf[pbf.pos++] = high & 127 | ((high >>>= 7) ? 128 : 0);\n    if (!high) {\n        return;\n    }\n    pbf.buf[pbf.pos++] = high & 127 | ((high >>>= 7) ? 128 : 0);\n    if (!high) {\n        return;\n    }\n    pbf.buf[pbf.pos++] = high & 127;\n}\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n    var extraLen = len <= 16383 ? 1 : len <= 2097151 ? 2 : len <= 268435455 ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));\n    pbf.realloc(extraLen);\n    for (var i = pbf.pos - 1; i >= startPos; i--) {\n        pbf.buf[i + extraLen] = pbf.buf[i];\n    }\n}\nfunction writePackedVarint(arr, pbf) {\n    for (var i = 0; i < arr.length; i++) {\n        pbf.writeVarint(arr[i]);\n    }\n}\nfunction writePackedSVarint(arr, pbf) {\n    for (var i = 0; i < arr.length; i++) {\n        pbf.writeSVarint(arr[i]);\n    }\n}\nfunction writePackedFloat(arr, pbf) {\n    for (var i = 0; i < arr.length; i++) {\n        pbf.writeFloat(arr[i]);\n    }\n}\nfunction writePackedDouble(arr, pbf) {\n    for (var i = 0; i < arr.length; i++) {\n        pbf.writeDouble(arr[i]);\n    }\n}\nfunction writePackedBoolean(arr, pbf) {\n    for (var i = 0; i < arr.length; i++) {\n        pbf.writeBoolean(arr[i]);\n    }\n}\nfunction writePackedFixed32(arr, pbf) {\n    for (var i = 0; i < arr.length; i++) {\n        pbf.writeFixed32(arr[i]);\n    }\n}\nfunction writePackedSFixed32(arr, pbf) {\n    for (var i = 0; i < arr.length; i++) {\n        pbf.writeSFixed32(arr[i]);\n    }\n}\nfunction writePackedFixed64(arr, pbf) {\n    for (var i = 0; i < arr.length; i++) {\n        pbf.writeFixed64(arr[i]);\n    }\n}\nfunction writePackedSFixed64(arr, pbf) {\n    for (var i = 0; i < arr.length; i++) {\n        pbf.writeSFixed64(arr[i]);\n    }\n}\nfunction readUInt32(buf, pos) {\n    return (buf[pos] | buf[pos + 1] << 8 | buf[pos + 2] << 16) + buf[pos + 3] * 16777216;\n}\nfunction writeInt32(buf, val, pos) {\n    buf[pos] = val;\n    buf[pos + 1] = val >>> 8;\n    buf[pos + 2] = val >>> 16;\n    buf[pos + 3] = val >>> 24;\n}\nfunction readInt32(buf, pos) {\n    return (buf[pos] | buf[pos + 1] << 8 | buf[pos + 2] << 16) + (buf[pos + 3] << 24);\n}\nfunction readUtf8(buf, pos, end) {\n    var str = '';\n    var i = pos;\n    while (i < end) {\n        var b0 = buf[i];\n        var c = null;\n        var bytesPerSequence = b0 > 239 ? 4 : b0 > 223 ? 3 : b0 > 191 ? 2 : 1;\n        if (i + bytesPerSequence > end) {\n            break;\n        }\n        var b1, b2, b3;\n        if (bytesPerSequence === 1) {\n            if (b0 < 128) {\n                c = b0;\n            }\n        } else if (bytesPerSequence === 2) {\n            b1 = buf[i + 1];\n            if ((b1 & 192) === 128) {\n                c = (b0 & 31) << 6 | b1 & 63;\n                if (c <= 127) {\n                    c = null;\n                }\n            }\n        } else if (bytesPerSequence === 3) {\n            b1 = buf[i + 1];\n            b2 = buf[i + 2];\n            if ((b1 & 192) === 128 && (b2 & 192) === 128) {\n                c = (b0 & 15) << 12 | (b1 & 63) << 6 | b2 & 63;\n                if (c <= 2047 || c >= 55296 && c <= 57343) {\n                    c = null;\n                }\n            }\n        } else if (bytesPerSequence === 4) {\n            b1 = buf[i + 1];\n            b2 = buf[i + 2];\n            b3 = buf[i + 3];\n            if ((b1 & 192) === 128 && (b2 & 192) === 128 && (b3 & 192) === 128) {\n                c = (b0 & 15) << 18 | (b1 & 63) << 12 | (b2 & 63) << 6 | b3 & 63;\n                if (c <= 65535 || c >= 1114112) {\n                    c = null;\n                }\n            }\n        }\n        if (c === null) {\n            c = 65533;\n            bytesPerSequence = 1;\n        } else if (c > 65535) {\n            c -= 65536;\n            str += String.fromCharCode(c >>> 10 & 1023 | 55296);\n            c = 56320 | c & 1023;\n        }\n        str += String.fromCharCode(c);\n        i += bytesPerSequence;\n    }\n    return str;\n}\nfunction readUtf8TextDecoder(buf, pos, end) {\n    return utf8TextDecoder.decode(buf.subarray(pos, end));\n}\nfunction writeUtf8(buf, str, pos) {\n    for (var i = 0, c, lead; i < str.length; i++) {\n        c = str.charCodeAt(i);\n        if (c > 55295 && c < 57344) {\n            if (lead) {\n                if (c < 56320) {\n                    buf[pos++] = 239;\n                    buf[pos++] = 191;\n                    buf[pos++] = 189;\n                    lead = c;\n                    continue;\n                } else {\n                    c = lead - 55296 << 10 | c - 56320 | 65536;\n                    lead = null;\n                }\n            } else {\n                if (c > 56319 || i + 1 === str.length) {\n                    buf[pos++] = 239;\n                    buf[pos++] = 191;\n                    buf[pos++] = 189;\n                } else {\n                    lead = c;\n                }\n                continue;\n            }\n        } else if (lead) {\n            buf[pos++] = 239;\n            buf[pos++] = 191;\n            buf[pos++] = 189;\n            lead = null;\n        }\n        if (c < 128) {\n            buf[pos++] = c;\n        } else {\n            if (c < 2048) {\n                buf[pos++] = c >> 6 | 192;\n            } else {\n                if (c < 65536) {\n                    buf[pos++] = c >> 12 | 224;\n                } else {\n                    buf[pos++] = c >> 18 | 240;\n                    buf[pos++] = c >> 12 & 63 | 128;\n                }\n                buf[pos++] = c >> 6 & 63 | 128;\n            }\n            buf[pos++] = c & 63 | 128;\n        }\n    }\n    return pos;\n}\n\nvar border = 3;\nfunction readFontstacks(tag, glyphs, pbf) {\n    if (tag === 1) {\n        pbf.readMessage(readFontstack, glyphs);\n    }\n}\nfunction readFontstack(tag, glyphs, pbf) {\n    if (tag === 3) {\n        var ref = pbf.readMessage(readGlyph, {});\n        var id = ref.id;\n        var bitmap = ref.bitmap;\n        var width = ref.width;\n        var height = ref.height;\n        var left = ref.left;\n        var top = ref.top;\n        var advance = ref.advance;\n        glyphs.push({\n            id: id,\n            bitmap: new AlphaImage({\n                width: width + 2 * border,\n                height: height + 2 * border\n            }, bitmap),\n            metrics: {\n                width: width,\n                height: height,\n                left: left,\n                top: top,\n                advance: advance\n            }\n        });\n    }\n}\nfunction readGlyph(tag, glyph, pbf) {\n    if (tag === 1) {\n        glyph.id = pbf.readVarint();\n    } else if (tag === 2) {\n        glyph.bitmap = pbf.readBytes();\n    } else if (tag === 3) {\n        glyph.width = pbf.readVarint();\n    } else if (tag === 4) {\n        glyph.height = pbf.readVarint();\n    } else if (tag === 5) {\n        glyph.left = pbf.readSVarint();\n    } else if (tag === 6) {\n        glyph.top = pbf.readSVarint();\n    } else if (tag === 7) {\n        glyph.advance = pbf.readVarint();\n    }\n}\nfunction parseGlyphPBF (data) {\n    return new pbf(data).readFields(readFontstacks, []);\n}\nvar GLYPH_PBF_BORDER = border;\n\nfunction potpack(boxes) {\n\n    // calculate total box area and maximum box width\n    var area = 0;\n    var maxWidth = 0;\n\n    for (var i$1 = 0, list = boxes; i$1 < list.length; i$1 += 1) {\n        var box = list[i$1];\n\n        area += box.w * box.h;\n        maxWidth = Math.max(maxWidth, box.w);\n    }\n\n    // sort the boxes for insertion by height, descending\n    boxes.sort(function (a, b) { return b.h - a.h; });\n\n    // aim for a squarish resulting container,\n    // slightly adjusted for sub-100% space utilization\n    var startWidth = Math.max(Math.ceil(Math.sqrt(area / 0.95)), maxWidth);\n\n    // start with a single empty space, unbounded at the bottom\n    var spaces = [{x: 0, y: 0, w: startWidth, h: Infinity}];\n\n    var width = 0;\n    var height = 0;\n\n    for (var i$2 = 0, list$1 = boxes; i$2 < list$1.length; i$2 += 1) {\n        // look through spaces backwards so that we check smaller spaces first\n        var box$1 = list$1[i$2];\n\n        for (var i = spaces.length - 1; i >= 0; i--) {\n            var space = spaces[i];\n\n            // look for empty spaces that can accommodate the current box\n            if (box$1.w > space.w || box$1.h > space.h) { continue; }\n\n            // found the space; add the box to its top-left corner\n            // |-------|-------|\n            // |  box  |       |\n            // |_______|       |\n            // |         space |\n            // |_______________|\n            box$1.x = space.x;\n            box$1.y = space.y;\n\n            height = Math.max(height, box$1.y + box$1.h);\n            width = Math.max(width, box$1.x + box$1.w);\n\n            if (box$1.w === space.w && box$1.h === space.h) {\n                // space matches the box exactly; remove it\n                var last = spaces.pop();\n                if (i < spaces.length) { spaces[i] = last; }\n\n            } else if (box$1.h === space.h) {\n                // space matches the box height; update it accordingly\n                // |-------|---------------|\n                // |  box  | updated space |\n                // |_______|_______________|\n                space.x += box$1.w;\n                space.w -= box$1.w;\n\n            } else if (box$1.w === space.w) {\n                // space matches the box width; update it accordingly\n                // |---------------|\n                // |      box      |\n                // |_______________|\n                // | updated space |\n                // |_______________|\n                space.y += box$1.h;\n                space.h -= box$1.h;\n\n            } else {\n                // otherwise the box splits the space into two spaces\n                // |-------|-----------|\n                // |  box  | new space |\n                // |_______|___________|\n                // | updated space     |\n                // |___________________|\n                spaces.push({\n                    x: space.x + box$1.w,\n                    y: space.y,\n                    w: space.w - box$1.w,\n                    h: box$1.h\n                });\n                space.y += box$1.h;\n                space.h -= box$1.h;\n            }\n            break;\n        }\n    }\n\n    return {\n        w: width, // container width\n        h: height, // container height\n        fill: (area / (width * height)) || 0 // space utilization\n    };\n}\n\nvar IMAGE_PADDING = 1;\nvar ImagePosition = function ImagePosition(paddedRect, ref) {\n    var pixelRatio = ref.pixelRatio;\n    var version = ref.version;\n    var stretchX = ref.stretchX;\n    var stretchY = ref.stretchY;\n    var content = ref.content;\n    this.paddedRect = paddedRect;\n    this.pixelRatio = pixelRatio;\n    this.stretchX = stretchX;\n    this.stretchY = stretchY;\n    this.content = content;\n    this.version = version;\n};\nvar prototypeAccessors = {\n    tl: { configurable: true },\n    br: { configurable: true },\n    tlbr: { configurable: true },\n    displaySize: { configurable: true }\n};\nprototypeAccessors.tl.get = function () {\n    return [\n        this.paddedRect.x + IMAGE_PADDING,\n        this.paddedRect.y + IMAGE_PADDING\n    ];\n};\nprototypeAccessors.br.get = function () {\n    return [\n        this.paddedRect.x + this.paddedRect.w - IMAGE_PADDING,\n        this.paddedRect.y + this.paddedRect.h - IMAGE_PADDING\n    ];\n};\nprototypeAccessors.tlbr.get = function () {\n    return this.tl.concat(this.br);\n};\nprototypeAccessors.displaySize.get = function () {\n    return [\n        (this.paddedRect.w - IMAGE_PADDING * 2) / this.pixelRatio,\n        (this.paddedRect.h - IMAGE_PADDING * 2) / this.pixelRatio\n    ];\n};\nObject.defineProperties(ImagePosition.prototype, prototypeAccessors);\nvar ImageAtlas = function ImageAtlas(icons, patterns) {\n    var iconPositions = {}, patternPositions = {};\n    this.haveRenderCallbacks = [];\n    var bins = [];\n    this.addImages(icons, iconPositions, bins);\n    this.addImages(patterns, patternPositions, bins);\n    var ref = potpack(bins);\n    var w = ref.w;\n    var h = ref.h;\n    var image = new RGBAImage({\n        width: w || 1,\n        height: h || 1\n    });\n    for (var id in icons) {\n        var src = icons[id];\n        var bin = iconPositions[id].paddedRect;\n        RGBAImage.copy(src.data, image, {\n            x: 0,\n            y: 0\n        }, {\n            x: bin.x + IMAGE_PADDING,\n            y: bin.y + IMAGE_PADDING\n        }, src.data);\n    }\n    for (var id$1 in patterns) {\n        var src$1 = patterns[id$1];\n        var bin$1 = patternPositions[id$1].paddedRect;\n        var x = bin$1.x + IMAGE_PADDING, y = bin$1.y + IMAGE_PADDING, w$1 = src$1.data.width, h$1 = src$1.data.height;\n        RGBAImage.copy(src$1.data, image, {\n            x: 0,\n            y: 0\n        }, {\n            x: x,\n            y: y\n        }, src$1.data);\n        RGBAImage.copy(src$1.data, image, {\n            x: 0,\n            y: h$1 - 1\n        }, {\n            x: x,\n            y: y - 1\n        }, {\n            width: w$1,\n            height: 1\n        });\n        RGBAImage.copy(src$1.data, image, {\n            x: 0,\n            y: 0\n        }, {\n            x: x,\n            y: y + h$1\n        }, {\n            width: w$1,\n            height: 1\n        });\n        RGBAImage.copy(src$1.data, image, {\n            x: w$1 - 1,\n            y: 0\n        }, {\n            x: x - 1,\n            y: y\n        }, {\n            width: 1,\n            height: h$1\n        });\n        RGBAImage.copy(src$1.data, image, {\n            x: 0,\n            y: 0\n        }, {\n            x: x + w$1,\n            y: y\n        }, {\n            width: 1,\n            height: h$1\n        });\n    }\n    this.image = image;\n    this.iconPositions = iconPositions;\n    this.patternPositions = patternPositions;\n};\nImageAtlas.prototype.addImages = function addImages(images, positions, bins) {\n    for (var id in images) {\n        var src = images[id];\n        var bin = {\n            x: 0,\n            y: 0,\n            w: src.data.width + 2 * IMAGE_PADDING,\n            h: src.data.height + 2 * IMAGE_PADDING\n        };\n        bins.push(bin);\n        positions[id] = new ImagePosition(bin, src);\n        if (src.hasRenderCallback) {\n            this.haveRenderCallbacks.push(id);\n        }\n    }\n};\nImageAtlas.prototype.patchUpdatedImages = function patchUpdatedImages(imageManager, texture) {\n    imageManager.dispatchRenderCallbacks(this.haveRenderCallbacks);\n    for (var name in imageManager.updatedImages) {\n        this.patchUpdatedImage(this.iconPositions[name], imageManager.getImage(name), texture);\n        this.patchUpdatedImage(this.patternPositions[name], imageManager.getImage(name), texture);\n    }\n};\nImageAtlas.prototype.patchUpdatedImage = function patchUpdatedImage(position, image, texture) {\n    if (!position || !image) {\n        return;\n    }\n    if (position.version === image.version) {\n        return;\n    }\n    position.version = image.version;\n    var ref = position.tl;\n    var x = ref[0];\n    var y = ref[1];\n    texture.update(image.data, undefined, {\n        x: x,\n        y: y\n    });\n};\nregister('ImagePosition', ImagePosition);\nregister('ImageAtlas', ImageAtlas);\n\nvar WritingMode = {\n    horizontal: 1,\n    vertical: 2,\n    horizontalOnly: 3\n};\nvar SHAPING_DEFAULT_OFFSET = -17;\nfunction isEmpty(positionedLines) {\n    for (var i = 0, list = positionedLines; i < list.length; i += 1) {\n        var line = list[i];\n        if (line.positionedGlyphs.length !== 0) {\n            return false;\n        }\n    }\n    return true;\n}\nvar PUAbegin = 57344;\nvar PUAend = 63743;\nvar SectionOptions = function SectionOptions() {\n    this.scale = 1;\n    this.fontStack = '';\n    this.imageName = null;\n};\nSectionOptions.forText = function forText(scale, fontStack) {\n    var textOptions = new SectionOptions();\n    textOptions.scale = scale || 1;\n    textOptions.fontStack = fontStack;\n    return textOptions;\n};\nSectionOptions.forImage = function forImage(imageName) {\n    var imageOptions = new SectionOptions();\n    imageOptions.imageName = imageName;\n    return imageOptions;\n};\nvar TaggedString = function TaggedString() {\n    this.text = '';\n    this.sectionIndex = [];\n    this.sections = [];\n    this.imageSectionID = null;\n};\nTaggedString.fromFeature = function fromFeature(text, defaultFontStack) {\n    var result = new TaggedString();\n    for (var i = 0; i < text.sections.length; i++) {\n        var section = text.sections[i];\n        if (!section.image) {\n            result.addTextSection(section, defaultFontStack);\n        } else {\n            result.addImageSection(section);\n        }\n    }\n    return result;\n};\nTaggedString.prototype.length = function length() {\n    return this.text.length;\n};\nTaggedString.prototype.getSection = function getSection(index) {\n    return this.sections[this.sectionIndex[index]];\n};\nTaggedString.prototype.getSectionIndex = function getSectionIndex(index) {\n    return this.sectionIndex[index];\n};\nTaggedString.prototype.getCharCode = function getCharCode(index) {\n    return this.text.charCodeAt(index);\n};\nTaggedString.prototype.verticalizePunctuation = function verticalizePunctuation$1() {\n    this.text = verticalizePunctuation(this.text);\n};\nTaggedString.prototype.trim = function trim() {\n    var beginningWhitespace = 0;\n    for (var i = 0; i < this.text.length && whitespace[this.text.charCodeAt(i)]; i++) {\n        beginningWhitespace++;\n    }\n    var trailingWhitespace = this.text.length;\n    for (var i$1 = this.text.length - 1; i$1 >= 0 && i$1 >= beginningWhitespace && whitespace[this.text.charCodeAt(i$1)]; i$1--) {\n        trailingWhitespace--;\n    }\n    this.text = this.text.substring(beginningWhitespace, trailingWhitespace);\n    this.sectionIndex = this.sectionIndex.slice(beginningWhitespace, trailingWhitespace);\n};\nTaggedString.prototype.substring = function substring(start, end) {\n    var substring = new TaggedString();\n    substring.text = this.text.substring(start, end);\n    substring.sectionIndex = this.sectionIndex.slice(start, end);\n    substring.sections = this.sections;\n    return substring;\n};\nTaggedString.prototype.toString = function toString() {\n    return this.text;\n};\nTaggedString.prototype.getMaxScale = function getMaxScale() {\n    var this$1 = this;\n    return this.sectionIndex.reduce(function (max, index) {\n        return Math.max(max, this$1.sections[index].scale);\n    }, 0);\n};\nTaggedString.prototype.addTextSection = function addTextSection(section, defaultFontStack) {\n    this.text += section.text;\n    this.sections.push(SectionOptions.forText(section.scale, section.fontStack || defaultFontStack));\n    var index = this.sections.length - 1;\n    for (var i = 0; i < section.text.length; ++i) {\n        this.sectionIndex.push(index);\n    }\n};\nTaggedString.prototype.addImageSection = function addImageSection(section) {\n    var imageName = section.image ? section.image.name : '';\n    if (imageName.length === 0) {\n        warnOnce('Can\\'t add FormattedSection with an empty image.');\n        return;\n    }\n    var nextImageSectionCharCode = this.getNextImageSectionCharCode();\n    if (!nextImageSectionCharCode) {\n        warnOnce('Reached maximum number of images ' + (PUAend - PUAbegin + 2));\n        return;\n    }\n    this.text += String.fromCharCode(nextImageSectionCharCode);\n    this.sections.push(SectionOptions.forImage(imageName));\n    this.sectionIndex.push(this.sections.length - 1);\n};\nTaggedString.prototype.getNextImageSectionCharCode = function getNextImageSectionCharCode() {\n    if (!this.imageSectionID) {\n        this.imageSectionID = PUAbegin;\n        return this.imageSectionID;\n    }\n    if (this.imageSectionID >= PUAend) {\n        return null;\n    }\n    return ++this.imageSectionID;\n};\nfunction breakLines(input, lineBreakPoints) {\n    var lines = [];\n    var text = input.text;\n    var start = 0;\n    for (var i = 0, list = lineBreakPoints; i < list.length; i += 1) {\n        var lineBreak = list[i];\n        lines.push(input.substring(start, lineBreak));\n        start = lineBreak;\n    }\n    if (start < text.length) {\n        lines.push(input.substring(start, text.length));\n    }\n    return lines;\n}\nfunction shapeText(text, glyphMap, glyphPositions, imagePositions, defaultFontStack, maxWidth, lineHeight, textAnchor, textJustify, spacing, translate, writingMode, allowVerticalPlacement, symbolPlacement, layoutTextSize, layoutTextSizeThisZoom) {\n    var logicalInput = TaggedString.fromFeature(text, defaultFontStack);\n    if (writingMode === WritingMode.vertical) {\n        logicalInput.verticalizePunctuation();\n    }\n    var lines;\n    var processBidirectionalText = plugin.processBidirectionalText;\n    var processStyledBidirectionalText = plugin.processStyledBidirectionalText;\n    if (processBidirectionalText && logicalInput.sections.length === 1) {\n        lines = [];\n        var untaggedLines = processBidirectionalText(logicalInput.toString(), determineLineBreaks(logicalInput, spacing, maxWidth, glyphMap, imagePositions, symbolPlacement, layoutTextSize));\n        for (var i$1 = 0, list = untaggedLines; i$1 < list.length; i$1 += 1) {\n            var line = list[i$1];\n            var taggedLine = new TaggedString();\n            taggedLine.text = line;\n            taggedLine.sections = logicalInput.sections;\n            for (var i = 0; i < line.length; i++) {\n                taggedLine.sectionIndex.push(0);\n            }\n            lines.push(taggedLine);\n        }\n    } else if (processStyledBidirectionalText) {\n        lines = [];\n        var processedLines = processStyledBidirectionalText(logicalInput.text, logicalInput.sectionIndex, determineLineBreaks(logicalInput, spacing, maxWidth, glyphMap, imagePositions, symbolPlacement, layoutTextSize));\n        for (var i$2 = 0, list$1 = processedLines; i$2 < list$1.length; i$2 += 1) {\n            var line$1 = list$1[i$2];\n            var taggedLine$1 = new TaggedString();\n            taggedLine$1.text = line$1[0];\n            taggedLine$1.sectionIndex = line$1[1];\n            taggedLine$1.sections = logicalInput.sections;\n            lines.push(taggedLine$1);\n        }\n    } else {\n        lines = breakLines(logicalInput, determineLineBreaks(logicalInput, spacing, maxWidth, glyphMap, imagePositions, symbolPlacement, layoutTextSize));\n    }\n    var positionedLines = [];\n    var shaping = {\n        positionedLines: positionedLines,\n        text: logicalInput.toString(),\n        top: translate[1],\n        bottom: translate[1],\n        left: translate[0],\n        right: translate[0],\n        writingMode: writingMode,\n        iconsInText: false,\n        verticalizable: false\n    };\n    shapeLines(shaping, glyphMap, glyphPositions, imagePositions, lines, lineHeight, textAnchor, textJustify, writingMode, spacing, allowVerticalPlacement, layoutTextSizeThisZoom);\n    if (isEmpty(positionedLines)) {\n        return false;\n    }\n    return shaping;\n}\nvar whitespace = {};\nwhitespace[9] = true;\nwhitespace[10] = true;\nwhitespace[11] = true;\nwhitespace[12] = true;\nwhitespace[13] = true;\nwhitespace[32] = true;\nvar breakable = {};\nbreakable[10] = true;\nbreakable[32] = true;\nbreakable[38] = true;\nbreakable[40] = true;\nbreakable[41] = true;\nbreakable[43] = true;\nbreakable[45] = true;\nbreakable[47] = true;\nbreakable[173] = true;\nbreakable[183] = true;\nbreakable[8203] = true;\nbreakable[8208] = true;\nbreakable[8211] = true;\nbreakable[8231] = true;\nfunction getGlyphAdvance(codePoint, section, glyphMap, imagePositions, spacing, layoutTextSize) {\n    if (!section.imageName) {\n        var positions = glyphMap[section.fontStack];\n        var glyph = positions && positions[codePoint];\n        if (!glyph) {\n            return 0;\n        }\n        return glyph.metrics.advance * section.scale + spacing;\n    } else {\n        var imagePosition = imagePositions[section.imageName];\n        if (!imagePosition) {\n            return 0;\n        }\n        return imagePosition.displaySize[0] * section.scale * ONE_EM / layoutTextSize + spacing;\n    }\n}\nfunction determineAverageLineWidth(logicalInput, spacing, maxWidth, glyphMap, imagePositions, layoutTextSize) {\n    var totalWidth = 0;\n    for (var index = 0; index < logicalInput.length(); index++) {\n        var section = logicalInput.getSection(index);\n        totalWidth += getGlyphAdvance(logicalInput.getCharCode(index), section, glyphMap, imagePositions, spacing, layoutTextSize);\n    }\n    var lineCount = Math.max(1, Math.ceil(totalWidth / maxWidth));\n    return totalWidth / lineCount;\n}\nfunction calculateBadness(lineWidth, targetWidth, penalty, isLastBreak) {\n    var raggedness = Math.pow(lineWidth - targetWidth, 2);\n    if (isLastBreak) {\n        if (lineWidth < targetWidth) {\n            return raggedness / 2;\n        } else {\n            return raggedness * 2;\n        }\n    }\n    return raggedness + Math.abs(penalty) * penalty;\n}\nfunction calculatePenalty(codePoint, nextCodePoint, penalizableIdeographicBreak) {\n    var penalty = 0;\n    if (codePoint === 10) {\n        penalty -= 10000;\n    }\n    if (penalizableIdeographicBreak) {\n        penalty += 150;\n    }\n    if (codePoint === 40 || codePoint === 65288) {\n        penalty += 50;\n    }\n    if (nextCodePoint === 41 || nextCodePoint === 65289) {\n        penalty += 50;\n    }\n    return penalty;\n}\nfunction evaluateBreak(breakIndex, breakX, targetWidth, potentialBreaks, penalty, isLastBreak) {\n    var bestPriorBreak = null;\n    var bestBreakBadness = calculateBadness(breakX, targetWidth, penalty, isLastBreak);\n    for (var i = 0, list = potentialBreaks; i < list.length; i += 1) {\n        var potentialBreak = list[i];\n        var lineWidth = breakX - potentialBreak.x;\n        var breakBadness = calculateBadness(lineWidth, targetWidth, penalty, isLastBreak) + potentialBreak.badness;\n        if (breakBadness <= bestBreakBadness) {\n            bestPriorBreak = potentialBreak;\n            bestBreakBadness = breakBadness;\n        }\n    }\n    return {\n        index: breakIndex,\n        x: breakX,\n        priorBreak: bestPriorBreak,\n        badness: bestBreakBadness\n    };\n}\nfunction leastBadBreaks(lastLineBreak) {\n    if (!lastLineBreak) {\n        return [];\n    }\n    return leastBadBreaks(lastLineBreak.priorBreak).concat(lastLineBreak.index);\n}\nfunction determineLineBreaks(logicalInput, spacing, maxWidth, glyphMap, imagePositions, symbolPlacement, layoutTextSize) {\n    if (symbolPlacement !== 'point') {\n        return [];\n    }\n    if (!logicalInput) {\n        return [];\n    }\n    var potentialLineBreaks = [];\n    var targetWidth = determineAverageLineWidth(logicalInput, spacing, maxWidth, glyphMap, imagePositions, layoutTextSize);\n    var hasServerSuggestedBreakpoints = logicalInput.text.indexOf('\\u200B') >= 0;\n    var currentX = 0;\n    for (var i = 0; i < logicalInput.length(); i++) {\n        var section = logicalInput.getSection(i);\n        var codePoint = logicalInput.getCharCode(i);\n        if (!whitespace[codePoint]) {\n            currentX += getGlyphAdvance(codePoint, section, glyphMap, imagePositions, spacing, layoutTextSize);\n        }\n        if (i < logicalInput.length() - 1) {\n            var ideographicBreak = charAllowsIdeographicBreaking(codePoint);\n            if (breakable[codePoint] || ideographicBreak || section.imageName) {\n                potentialLineBreaks.push(evaluateBreak(i + 1, currentX, targetWidth, potentialLineBreaks, calculatePenalty(codePoint, logicalInput.getCharCode(i + 1), ideographicBreak && hasServerSuggestedBreakpoints), false));\n            }\n        }\n    }\n    return leastBadBreaks(evaluateBreak(logicalInput.length(), currentX, targetWidth, potentialLineBreaks, 0, true));\n}\nfunction getAnchorAlignment(anchor) {\n    var horizontalAlign = 0.5, verticalAlign = 0.5;\n    switch (anchor) {\n    case 'right':\n    case 'top-right':\n    case 'bottom-right':\n        horizontalAlign = 1;\n        break;\n    case 'left':\n    case 'top-left':\n    case 'bottom-left':\n        horizontalAlign = 0;\n        break;\n    }\n    switch (anchor) {\n    case 'bottom':\n    case 'bottom-right':\n    case 'bottom-left':\n        verticalAlign = 1;\n        break;\n    case 'top':\n    case 'top-right':\n    case 'top-left':\n        verticalAlign = 0;\n        break;\n    }\n    return {\n        horizontalAlign: horizontalAlign,\n        verticalAlign: verticalAlign\n    };\n}\nfunction shapeLines(shaping, glyphMap, glyphPositions, imagePositions, lines, lineHeight, textAnchor, textJustify, writingMode, spacing, allowVerticalPlacement, layoutTextSizeThisZoom) {\n    var x = 0;\n    var y = SHAPING_DEFAULT_OFFSET;\n    var maxLineLength = 0;\n    var maxLineHeight = 0;\n    var justify = textJustify === 'right' ? 1 : textJustify === 'left' ? 0 : 0.5;\n    var lineIndex = 0;\n    for (var i$1 = 0, list = lines; i$1 < list.length; i$1 += 1) {\n        var line = list[i$1];\n        line.trim();\n        var lineMaxScale = line.getMaxScale();\n        var maxLineOffset = (lineMaxScale - 1) * ONE_EM;\n        var positionedLine = {\n            positionedGlyphs: [],\n            lineOffset: 0\n        };\n        shaping.positionedLines[lineIndex] = positionedLine;\n        var positionedGlyphs = positionedLine.positionedGlyphs;\n        var lineOffset = 0;\n        if (!line.length()) {\n            y += lineHeight;\n            ++lineIndex;\n            continue;\n        }\n        for (var i = 0; i < line.length(); i++) {\n            var section = line.getSection(i);\n            var sectionIndex = line.getSectionIndex(i);\n            var codePoint = line.getCharCode(i);\n            var baselineOffset = 0;\n            var metrics = null;\n            var rect = null;\n            var imageName = null;\n            var verticalAdvance = ONE_EM;\n            var vertical = !(writingMode === WritingMode.horizontal || !allowVerticalPlacement && !charHasUprightVerticalOrientation(codePoint) || allowVerticalPlacement && (whitespace[codePoint] || charInComplexShapingScript(codePoint)));\n            if (!section.imageName) {\n                var positions = glyphPositions[section.fontStack];\n                var glyphPosition = positions && positions[codePoint];\n                if (glyphPosition && glyphPosition.rect) {\n                    rect = glyphPosition.rect;\n                    metrics = glyphPosition.metrics;\n                } else {\n                    var glyphs = glyphMap[section.fontStack];\n                    var glyph = glyphs && glyphs[codePoint];\n                    if (!glyph) {\n                        continue;\n                    }\n                    metrics = glyph.metrics;\n                }\n                baselineOffset = (lineMaxScale - section.scale) * ONE_EM;\n            } else {\n                var imagePosition = imagePositions[section.imageName];\n                if (!imagePosition) {\n                    continue;\n                }\n                imageName = section.imageName;\n                shaping.iconsInText = shaping.iconsInText || true;\n                rect = imagePosition.paddedRect;\n                var size = imagePosition.displaySize;\n                section.scale = section.scale * ONE_EM / layoutTextSizeThisZoom;\n                metrics = {\n                    width: size[0],\n                    height: size[1],\n                    left: IMAGE_PADDING,\n                    top: -GLYPH_PBF_BORDER,\n                    advance: vertical ? size[1] : size[0]\n                };\n                var imageOffset = ONE_EM - size[1] * section.scale;\n                baselineOffset = maxLineOffset + imageOffset;\n                verticalAdvance = metrics.advance;\n                var offset = vertical ? size[0] * section.scale - ONE_EM * lineMaxScale : size[1] * section.scale - ONE_EM * lineMaxScale;\n                if (offset > 0 && offset > lineOffset) {\n                    lineOffset = offset;\n                }\n            }\n            if (!vertical) {\n                positionedGlyphs.push({\n                    glyph: codePoint,\n                    imageName: imageName,\n                    x: x,\n                    y: y + baselineOffset,\n                    vertical: vertical,\n                    scale: section.scale,\n                    fontStack: section.fontStack,\n                    sectionIndex: sectionIndex,\n                    metrics: metrics,\n                    rect: rect\n                });\n                x += metrics.advance * section.scale + spacing;\n            } else {\n                shaping.verticalizable = true;\n                positionedGlyphs.push({\n                    glyph: codePoint,\n                    imageName: imageName,\n                    x: x,\n                    y: y + baselineOffset,\n                    vertical: vertical,\n                    scale: section.scale,\n                    fontStack: section.fontStack,\n                    sectionIndex: sectionIndex,\n                    metrics: metrics,\n                    rect: rect\n                });\n                x += verticalAdvance * section.scale + spacing;\n            }\n        }\n        if (positionedGlyphs.length !== 0) {\n            var lineLength = x - spacing;\n            maxLineLength = Math.max(lineLength, maxLineLength);\n            justifyLine(positionedGlyphs, 0, positionedGlyphs.length - 1, justify, lineOffset);\n        }\n        x = 0;\n        var currentLineHeight = lineHeight * lineMaxScale + lineOffset;\n        positionedLine.lineOffset = Math.max(lineOffset, maxLineOffset);\n        y += currentLineHeight;\n        maxLineHeight = Math.max(currentLineHeight, maxLineHeight);\n        ++lineIndex;\n    }\n    var height = y - SHAPING_DEFAULT_OFFSET;\n    var ref = getAnchorAlignment(textAnchor);\n    var horizontalAlign = ref.horizontalAlign;\n    var verticalAlign = ref.verticalAlign;\n    align$1(shaping.positionedLines, justify, horizontalAlign, verticalAlign, maxLineLength, maxLineHeight, lineHeight, height, lines.length);\n    shaping.top += -verticalAlign * height;\n    shaping.bottom = shaping.top + height;\n    shaping.left += -horizontalAlign * maxLineLength;\n    shaping.right = shaping.left + maxLineLength;\n}\nfunction justifyLine(positionedGlyphs, start, end, justify, lineOffset) {\n    if (!justify && !lineOffset) {\n        return;\n    }\n    var lastPositionedGlyph = positionedGlyphs[end];\n    var lastAdvance = lastPositionedGlyph.metrics.advance * lastPositionedGlyph.scale;\n    var lineIndent = (positionedGlyphs[end].x + lastAdvance) * justify;\n    for (var j = start; j <= end; j++) {\n        positionedGlyphs[j].x -= lineIndent;\n        positionedGlyphs[j].y += lineOffset;\n    }\n}\nfunction align$1(positionedLines, justify, horizontalAlign, verticalAlign, maxLineLength, maxLineHeight, lineHeight, blockHeight, lineCount) {\n    var shiftX = (justify - horizontalAlign) * maxLineLength;\n    var shiftY = 0;\n    if (maxLineHeight !== lineHeight) {\n        shiftY = -blockHeight * verticalAlign - SHAPING_DEFAULT_OFFSET;\n    } else {\n        shiftY = (-verticalAlign * lineCount + 0.5) * lineHeight;\n    }\n    for (var i$1 = 0, list$1 = positionedLines; i$1 < list$1.length; i$1 += 1) {\n        var line = list$1[i$1];\n        for (var i = 0, list = line.positionedGlyphs; i < list.length; i += 1) {\n            var positionedGlyph = list[i];\n            positionedGlyph.x += shiftX;\n            positionedGlyph.y += shiftY;\n        }\n    }\n}\nfunction shapeIcon(image, iconOffset, iconAnchor) {\n    var ref = getAnchorAlignment(iconAnchor);\n    var horizontalAlign = ref.horizontalAlign;\n    var verticalAlign = ref.verticalAlign;\n    var dx = iconOffset[0];\n    var dy = iconOffset[1];\n    var x1 = dx - image.displaySize[0] * horizontalAlign;\n    var x2 = x1 + image.displaySize[0];\n    var y1 = dy - image.displaySize[1] * verticalAlign;\n    var y2 = y1 + image.displaySize[1];\n    return {\n        image: image,\n        top: y1,\n        bottom: y2,\n        left: x1,\n        right: x2\n    };\n}\nfunction fitIconToText(shapedIcon, shapedText, textFit, padding, iconOffset, fontScale) {\n    var image = shapedIcon.image;\n    var collisionPadding;\n    if (image.content) {\n        var content = image.content;\n        var pixelRatio = image.pixelRatio || 1;\n        collisionPadding = [\n            content[0] / pixelRatio,\n            content[1] / pixelRatio,\n            image.displaySize[0] - content[2] / pixelRatio,\n            image.displaySize[1] - content[3] / pixelRatio\n        ];\n    }\n    var textLeft = shapedText.left * fontScale;\n    var textRight = shapedText.right * fontScale;\n    var top, right, bottom, left;\n    if (textFit === 'width' || textFit === 'both') {\n        left = iconOffset[0] + textLeft - padding[3];\n        right = iconOffset[0] + textRight + padding[1];\n    } else {\n        left = iconOffset[0] + (textLeft + textRight - image.displaySize[0]) / 2;\n        right = left + image.displaySize[0];\n    }\n    var textTop = shapedText.top * fontScale;\n    var textBottom = shapedText.bottom * fontScale;\n    if (textFit === 'height' || textFit === 'both') {\n        top = iconOffset[1] + textTop - padding[0];\n        bottom = iconOffset[1] + textBottom + padding[2];\n    } else {\n        top = iconOffset[1] + (textTop + textBottom - image.displaySize[1]) / 2;\n        bottom = top + image.displaySize[1];\n    }\n    return {\n        image: image,\n        top: top,\n        right: right,\n        bottom: bottom,\n        left: left,\n        collisionPadding: collisionPadding\n    };\n}\n\nvar Anchor = function (Point) {\n    function Anchor(x, y, angle, segment) {\n        Point.call(this, x, y);\n        this.angle = angle;\n        if (segment !== undefined) {\n            this.segment = segment;\n        }\n    }\n    if (Point)\n        Anchor.__proto__ = Point;\n    Anchor.prototype = Object.create(Point && Point.prototype);\n    Anchor.prototype.constructor = Anchor;\n    Anchor.prototype.clone = function clone() {\n        return new Anchor(this.x, this.y, this.angle, this.segment);\n    };\n    return Anchor;\n}(pointGeometry);\nregister('Anchor', Anchor);\n\nvar SIZE_PACK_FACTOR = 128;\nfunction getSizeData(tileZoom, value) {\n    var expression = value.expression;\n    if (expression.kind === 'constant') {\n        var layoutSize = expression.evaluate(new EvaluationParameters(tileZoom + 1));\n        return {\n            kind: 'constant',\n            layoutSize: layoutSize\n        };\n    } else if (expression.kind === 'source') {\n        return { kind: 'source' };\n    } else {\n        var zoomStops = expression.zoomStops;\n        var interpolationType = expression.interpolationType;\n        var lower = 0;\n        while (lower < zoomStops.length && zoomStops[lower] <= tileZoom) {\n            lower++;\n        }\n        lower = Math.max(0, lower - 1);\n        var upper = lower;\n        while (upper < zoomStops.length && zoomStops[upper] < tileZoom + 1) {\n            upper++;\n        }\n        upper = Math.min(zoomStops.length - 1, upper);\n        var minZoom = zoomStops[lower];\n        var maxZoom = zoomStops[upper];\n        if (expression.kind === 'composite') {\n            return {\n                kind: 'composite',\n                minZoom: minZoom,\n                maxZoom: maxZoom,\n                interpolationType: interpolationType\n            };\n        }\n        var minSize = expression.evaluate(new EvaluationParameters(minZoom));\n        var maxSize = expression.evaluate(new EvaluationParameters(maxZoom));\n        return {\n            kind: 'camera',\n            minZoom: minZoom,\n            maxZoom: maxZoom,\n            minSize: minSize,\n            maxSize: maxSize,\n            interpolationType: interpolationType\n        };\n    }\n}\nfunction evaluateSizeForFeature(sizeData, ref, ref$1) {\n    var uSize = ref.uSize;\n    var uSizeT = ref.uSizeT;\n    var lowerSize = ref$1.lowerSize;\n    var upperSize = ref$1.upperSize;\n    if (sizeData.kind === 'source') {\n        return lowerSize / SIZE_PACK_FACTOR;\n    } else if (sizeData.kind === 'composite') {\n        return number(lowerSize / SIZE_PACK_FACTOR, upperSize / SIZE_PACK_FACTOR, uSizeT);\n    }\n    return uSize;\n}\nfunction evaluateSizeForZoom(sizeData, zoom) {\n    var uSizeT = 0;\n    var uSize = 0;\n    if (sizeData.kind === 'constant') {\n        uSize = sizeData.layoutSize;\n    } else if (sizeData.kind !== 'source') {\n        var interpolationType = sizeData.interpolationType;\n        var minZoom = sizeData.minZoom;\n        var maxZoom = sizeData.maxZoom;\n        var t = !interpolationType ? 0 : clamp(Interpolate.interpolationFactor(interpolationType, zoom, minZoom, maxZoom), 0, 1);\n        if (sizeData.kind === 'camera') {\n            uSize = number(sizeData.minSize, sizeData.maxSize, t);\n        } else {\n            uSizeT = t;\n        }\n    }\n    return {\n        uSizeT: uSizeT,\n        uSize: uSize\n    };\n}\n\nvar symbolSize = /*#__PURE__*/Object.freeze({\n__proto__: null,\ngetSizeData: getSizeData,\nevaluateSizeForFeature: evaluateSizeForFeature,\nevaluateSizeForZoom: evaluateSizeForZoom,\nSIZE_PACK_FACTOR: SIZE_PACK_FACTOR\n});\n\nfunction checkMaxAngle(line, anchor, labelLength, windowSize, maxAngle) {\n    if (anchor.segment === undefined) {\n        return true;\n    }\n    var p = anchor;\n    var index = anchor.segment + 1;\n    var anchorDistance = 0;\n    while (anchorDistance > -labelLength / 2) {\n        index--;\n        if (index < 0) {\n            return false;\n        }\n        anchorDistance -= line[index].dist(p);\n        p = line[index];\n    }\n    anchorDistance += line[index].dist(line[index + 1]);\n    index++;\n    var recentCorners = [];\n    var recentAngleDelta = 0;\n    while (anchorDistance < labelLength / 2) {\n        var prev = line[index - 1];\n        var current = line[index];\n        var next = line[index + 1];\n        if (!next) {\n            return false;\n        }\n        var angleDelta = prev.angleTo(current) - current.angleTo(next);\n        angleDelta = Math.abs((angleDelta + 3 * Math.PI) % (Math.PI * 2) - Math.PI);\n        recentCorners.push({\n            distance: anchorDistance,\n            angleDelta: angleDelta\n        });\n        recentAngleDelta += angleDelta;\n        while (anchorDistance - recentCorners[0].distance > windowSize) {\n            recentAngleDelta -= recentCorners.shift().angleDelta;\n        }\n        if (recentAngleDelta > maxAngle) {\n            return false;\n        }\n        index++;\n        anchorDistance += current.dist(next);\n    }\n    return true;\n}\n\nfunction getLineLength(line) {\n    var lineLength = 0;\n    for (var k = 0; k < line.length - 1; k++) {\n        lineLength += line[k].dist(line[k + 1]);\n    }\n    return lineLength;\n}\nfunction getAngleWindowSize(shapedText, glyphSize, boxScale) {\n    return shapedText ? 3 / 5 * glyphSize * boxScale : 0;\n}\nfunction getShapedLabelLength(shapedText, shapedIcon) {\n    return Math.max(shapedText ? shapedText.right - shapedText.left : 0, shapedIcon ? shapedIcon.right - shapedIcon.left : 0);\n}\nfunction getCenterAnchor(line, maxAngle, shapedText, shapedIcon, glyphSize, boxScale) {\n    var angleWindowSize = getAngleWindowSize(shapedText, glyphSize, boxScale);\n    var labelLength = getShapedLabelLength(shapedText, shapedIcon) * boxScale;\n    var prevDistance = 0;\n    var centerDistance = getLineLength(line) / 2;\n    for (var i = 0; i < line.length - 1; i++) {\n        var a = line[i], b = line[i + 1];\n        var segmentDistance = a.dist(b);\n        if (prevDistance + segmentDistance > centerDistance) {\n            var t = (centerDistance - prevDistance) / segmentDistance, x = number(a.x, b.x, t), y = number(a.y, b.y, t);\n            var anchor = new Anchor(x, y, b.angleTo(a), i);\n            anchor._round();\n            if (!angleWindowSize || checkMaxAngle(line, anchor, labelLength, angleWindowSize, maxAngle)) {\n                return anchor;\n            } else {\n                return;\n            }\n        }\n        prevDistance += segmentDistance;\n    }\n}\nfunction getAnchors(line, spacing, maxAngle, shapedText, shapedIcon, glyphSize, boxScale, overscaling, tileExtent) {\n    var angleWindowSize = getAngleWindowSize(shapedText, glyphSize, boxScale);\n    var shapedLabelLength = getShapedLabelLength(shapedText, shapedIcon);\n    var labelLength = shapedLabelLength * boxScale;\n    var isLineContinued = line[0].x === 0 || line[0].x === tileExtent || line[0].y === 0 || line[0].y === tileExtent;\n    if (spacing - labelLength < spacing / 4) {\n        spacing = labelLength + spacing / 4;\n    }\n    var fixedExtraOffset = glyphSize * 2;\n    var offset = !isLineContinued ? (shapedLabelLength / 2 + fixedExtraOffset) * boxScale * overscaling % spacing : spacing / 2 * overscaling % spacing;\n    return resample(line, offset, spacing, angleWindowSize, maxAngle, labelLength, isLineContinued, false, tileExtent);\n}\nfunction resample(line, offset, spacing, angleWindowSize, maxAngle, labelLength, isLineContinued, placeAtMiddle, tileExtent) {\n    var halfLabelLength = labelLength / 2;\n    var lineLength = getLineLength(line);\n    var distance = 0, markedDistance = offset - spacing;\n    var anchors = [];\n    for (var i = 0; i < line.length - 1; i++) {\n        var a = line[i], b = line[i + 1];\n        var segmentDist = a.dist(b), angle = b.angleTo(a);\n        while (markedDistance + spacing < distance + segmentDist) {\n            markedDistance += spacing;\n            var t = (markedDistance - distance) / segmentDist, x = number(a.x, b.x, t), y = number(a.y, b.y, t);\n            if (x >= 0 && x < tileExtent && y >= 0 && y < tileExtent && markedDistance - halfLabelLength >= 0 && markedDistance + halfLabelLength <= lineLength) {\n                var anchor = new Anchor(x, y, angle, i);\n                anchor._round();\n                if (!angleWindowSize || checkMaxAngle(line, anchor, labelLength, angleWindowSize, maxAngle)) {\n                    anchors.push(anchor);\n                }\n            }\n        }\n        distance += segmentDist;\n    }\n    if (!placeAtMiddle && !anchors.length && !isLineContinued) {\n        anchors = resample(line, distance / 2, spacing, angleWindowSize, maxAngle, labelLength, isLineContinued, true, tileExtent);\n    }\n    return anchors;\n}\n\nfunction clipLine(lines, x1, y1, x2, y2) {\n    var clippedLines = [];\n    for (var l = 0; l < lines.length; l++) {\n        var line = lines[l];\n        var clippedLine = void 0;\n        for (var i = 0; i < line.length - 1; i++) {\n            var p0 = line[i];\n            var p1 = line[i + 1];\n            if (p0.x < x1 && p1.x < x1) {\n                continue;\n            } else if (p0.x < x1) {\n                p0 = new pointGeometry(x1, p0.y + (p1.y - p0.y) * ((x1 - p0.x) / (p1.x - p0.x)))._round();\n            } else if (p1.x < x1) {\n                p1 = new pointGeometry(x1, p0.y + (p1.y - p0.y) * ((x1 - p0.x) / (p1.x - p0.x)))._round();\n            }\n            if (p0.y < y1 && p1.y < y1) {\n                continue;\n            } else if (p0.y < y1) {\n                p0 = new pointGeometry(p0.x + (p1.x - p0.x) * ((y1 - p0.y) / (p1.y - p0.y)), y1)._round();\n            } else if (p1.y < y1) {\n                p1 = new pointGeometry(p0.x + (p1.x - p0.x) * ((y1 - p0.y) / (p1.y - p0.y)), y1)._round();\n            }\n            if (p0.x >= x2 && p1.x >= x2) {\n                continue;\n            } else if (p0.x >= x2) {\n                p0 = new pointGeometry(x2, p0.y + (p1.y - p0.y) * ((x2 - p0.x) / (p1.x - p0.x)))._round();\n            } else if (p1.x >= x2) {\n                p1 = new pointGeometry(x2, p0.y + (p1.y - p0.y) * ((x2 - p0.x) / (p1.x - p0.x)))._round();\n            }\n            if (p0.y >= y2 && p1.y >= y2) {\n                continue;\n            } else if (p0.y >= y2) {\n                p0 = new pointGeometry(p0.x + (p1.x - p0.x) * ((y2 - p0.y) / (p1.y - p0.y)), y2)._round();\n            } else if (p1.y >= y2) {\n                p1 = new pointGeometry(p0.x + (p1.x - p0.x) * ((y2 - p0.y) / (p1.y - p0.y)), y2)._round();\n            }\n            if (!clippedLine || !p0.equals(clippedLine[clippedLine.length - 1])) {\n                clippedLine = [p0];\n                clippedLines.push(clippedLine);\n            }\n            clippedLine.push(p1);\n        }\n    }\n    return clippedLines;\n}\n\nvar border$1 = IMAGE_PADDING;\nfunction getIconQuads(shapedIcon, iconRotate, isSDFIcon, hasIconTextFit) {\n    var quads = [];\n    var image = shapedIcon.image;\n    var pixelRatio = image.pixelRatio;\n    var imageWidth = image.paddedRect.w - 2 * border$1;\n    var imageHeight = image.paddedRect.h - 2 * border$1;\n    var iconWidth = shapedIcon.right - shapedIcon.left;\n    var iconHeight = shapedIcon.bottom - shapedIcon.top;\n    var stretchX = image.stretchX || [[\n            0,\n            imageWidth\n        ]];\n    var stretchY = image.stretchY || [[\n            0,\n            imageHeight\n        ]];\n    var reduceRanges = function (sum, range) {\n        return sum + range[1] - range[0];\n    };\n    var stretchWidth = stretchX.reduce(reduceRanges, 0);\n    var stretchHeight = stretchY.reduce(reduceRanges, 0);\n    var fixedWidth = imageWidth - stretchWidth;\n    var fixedHeight = imageHeight - stretchHeight;\n    var stretchOffsetX = 0;\n    var stretchContentWidth = stretchWidth;\n    var stretchOffsetY = 0;\n    var stretchContentHeight = stretchHeight;\n    var fixedOffsetX = 0;\n    var fixedContentWidth = fixedWidth;\n    var fixedOffsetY = 0;\n    var fixedContentHeight = fixedHeight;\n    if (image.content && hasIconTextFit) {\n        var content = image.content;\n        stretchOffsetX = sumWithinRange(stretchX, 0, content[0]);\n        stretchOffsetY = sumWithinRange(stretchY, 0, content[1]);\n        stretchContentWidth = sumWithinRange(stretchX, content[0], content[2]);\n        stretchContentHeight = sumWithinRange(stretchY, content[1], content[3]);\n        fixedOffsetX = content[0] - stretchOffsetX;\n        fixedOffsetY = content[1] - stretchOffsetY;\n        fixedContentWidth = content[2] - content[0] - stretchContentWidth;\n        fixedContentHeight = content[3] - content[1] - stretchContentHeight;\n    }\n    var makeBox = function (left, top, right, bottom) {\n        var leftEm = getEmOffset(left.stretch - stretchOffsetX, stretchContentWidth, iconWidth, shapedIcon.left);\n        var leftPx = getPxOffset(left.fixed - fixedOffsetX, fixedContentWidth, left.stretch, stretchWidth);\n        var topEm = getEmOffset(top.stretch - stretchOffsetY, stretchContentHeight, iconHeight, shapedIcon.top);\n        var topPx = getPxOffset(top.fixed - fixedOffsetY, fixedContentHeight, top.stretch, stretchHeight);\n        var rightEm = getEmOffset(right.stretch - stretchOffsetX, stretchContentWidth, iconWidth, shapedIcon.left);\n        var rightPx = getPxOffset(right.fixed - fixedOffsetX, fixedContentWidth, right.stretch, stretchWidth);\n        var bottomEm = getEmOffset(bottom.stretch - stretchOffsetY, stretchContentHeight, iconHeight, shapedIcon.top);\n        var bottomPx = getPxOffset(bottom.fixed - fixedOffsetY, fixedContentHeight, bottom.stretch, stretchHeight);\n        var tl = new pointGeometry(leftEm, topEm);\n        var tr = new pointGeometry(rightEm, topEm);\n        var br = new pointGeometry(rightEm, bottomEm);\n        var bl = new pointGeometry(leftEm, bottomEm);\n        var pixelOffsetTL = new pointGeometry(leftPx / pixelRatio, topPx / pixelRatio);\n        var pixelOffsetBR = new pointGeometry(rightPx / pixelRatio, bottomPx / pixelRatio);\n        var angle = iconRotate * Math.PI / 180;\n        if (angle) {\n            var sin = Math.sin(angle), cos = Math.cos(angle), matrix = [\n                    cos,\n                    -sin,\n                    sin,\n                    cos\n                ];\n            tl._matMult(matrix);\n            tr._matMult(matrix);\n            bl._matMult(matrix);\n            br._matMult(matrix);\n        }\n        var x1 = left.stretch + left.fixed;\n        var x2 = right.stretch + right.fixed;\n        var y1 = top.stretch + top.fixed;\n        var y2 = bottom.stretch + bottom.fixed;\n        var subRect = {\n            x: image.paddedRect.x + border$1 + x1,\n            y: image.paddedRect.y + border$1 + y1,\n            w: x2 - x1,\n            h: y2 - y1\n        };\n        var minFontScaleX = fixedContentWidth / pixelRatio / iconWidth;\n        var minFontScaleY = fixedContentHeight / pixelRatio / iconHeight;\n        return {\n            tl: tl,\n            tr: tr,\n            bl: bl,\n            br: br,\n            tex: subRect,\n            writingMode: undefined,\n            glyphOffset: [\n                0,\n                0\n            ],\n            sectionIndex: 0,\n            pixelOffsetTL: pixelOffsetTL,\n            pixelOffsetBR: pixelOffsetBR,\n            minFontScaleX: minFontScaleX,\n            minFontScaleY: minFontScaleY,\n            isSDF: isSDFIcon\n        };\n    };\n    if (!hasIconTextFit || !image.stretchX && !image.stretchY) {\n        quads.push(makeBox({\n            fixed: 0,\n            stretch: -1\n        }, {\n            fixed: 0,\n            stretch: -1\n        }, {\n            fixed: 0,\n            stretch: imageWidth + 1\n        }, {\n            fixed: 0,\n            stretch: imageHeight + 1\n        }));\n    } else {\n        var xCuts = stretchZonesToCuts(stretchX, fixedWidth, stretchWidth);\n        var yCuts = stretchZonesToCuts(stretchY, fixedHeight, stretchHeight);\n        for (var xi = 0; xi < xCuts.length - 1; xi++) {\n            var x1 = xCuts[xi];\n            var x2 = xCuts[xi + 1];\n            for (var yi = 0; yi < yCuts.length - 1; yi++) {\n                var y1 = yCuts[yi];\n                var y2 = yCuts[yi + 1];\n                quads.push(makeBox(x1, y1, x2, y2));\n            }\n        }\n    }\n    return quads;\n}\nfunction sumWithinRange(ranges, min, max) {\n    var sum = 0;\n    for (var i = 0, list = ranges; i < list.length; i += 1) {\n        var range = list[i];\n        sum += Math.max(min, Math.min(max, range[1])) - Math.max(min, Math.min(max, range[0]));\n    }\n    return sum;\n}\nfunction stretchZonesToCuts(stretchZones, fixedSize, stretchSize) {\n    var cuts = [{\n            fixed: -border$1,\n            stretch: 0\n        }];\n    for (var i = 0, list = stretchZones; i < list.length; i += 1) {\n        var ref = list[i];\n        var c1 = ref[0];\n        var c2 = ref[1];\n        var last = cuts[cuts.length - 1];\n        cuts.push({\n            fixed: c1 - last.stretch,\n            stretch: last.stretch\n        });\n        cuts.push({\n            fixed: c1 - last.stretch,\n            stretch: last.stretch + (c2 - c1)\n        });\n    }\n    cuts.push({\n        fixed: fixedSize + border$1,\n        stretch: stretchSize\n    });\n    return cuts;\n}\nfunction getEmOffset(stretchOffset, stretchSize, iconSize, iconOffset) {\n    return stretchOffset / stretchSize * iconSize + iconOffset;\n}\nfunction getPxOffset(fixedOffset, fixedSize, stretchOffset, stretchSize) {\n    return fixedOffset - fixedSize * stretchOffset / stretchSize;\n}\nfunction getGlyphQuads(anchor, shaping, textOffset, layer, alongLine, feature, imageMap, allowVerticalPlacement) {\n    var textRotate = layer.layout.get('text-rotate').evaluate(feature, {}) * Math.PI / 180;\n    var quads = [];\n    for (var i$1 = 0, list$1 = shaping.positionedLines; i$1 < list$1.length; i$1 += 1) {\n        var line = list$1[i$1];\n        for (var i = 0, list = line.positionedGlyphs; i < list.length; i += 1) {\n            var positionedGlyph = list[i];\n            if (!positionedGlyph.rect) {\n                continue;\n            }\n            var textureRect = positionedGlyph.rect || {};\n            var glyphPadding = 1;\n            var rectBuffer = GLYPH_PBF_BORDER + glyphPadding;\n            var isSDF = true;\n            var pixelRatio = 1;\n            var lineOffset = 0;\n            var rotateVerticalGlyph = (alongLine || allowVerticalPlacement) && positionedGlyph.vertical;\n            var halfAdvance = positionedGlyph.metrics.advance * positionedGlyph.scale / 2;\n            if (allowVerticalPlacement && shaping.verticalizable) {\n                var scaledGlyphOffset = (positionedGlyph.scale - 1) * ONE_EM;\n                var imageOffset = (ONE_EM - positionedGlyph.metrics.width * positionedGlyph.scale) / 2;\n                lineOffset = line.lineOffset / 2 - (positionedGlyph.imageName ? -imageOffset : scaledGlyphOffset);\n            }\n            if (positionedGlyph.imageName) {\n                var image = imageMap[positionedGlyph.imageName];\n                isSDF = image.sdf;\n                pixelRatio = image.pixelRatio;\n                rectBuffer = IMAGE_PADDING / pixelRatio;\n            }\n            var glyphOffset = alongLine ? [\n                positionedGlyph.x + halfAdvance,\n                positionedGlyph.y\n            ] : [\n                0,\n                0\n            ];\n            var builtInOffset = alongLine ? [\n                0,\n                0\n            ] : [\n                positionedGlyph.x + halfAdvance + textOffset[0],\n                positionedGlyph.y + textOffset[1] - lineOffset\n            ];\n            var verticalizedLabelOffset = [\n                0,\n                0\n            ];\n            if (rotateVerticalGlyph) {\n                verticalizedLabelOffset = builtInOffset;\n                builtInOffset = [\n                    0,\n                    0\n                ];\n            }\n            var x1 = (positionedGlyph.metrics.left - rectBuffer) * positionedGlyph.scale - halfAdvance + builtInOffset[0];\n            var y1 = (-positionedGlyph.metrics.top - rectBuffer) * positionedGlyph.scale + builtInOffset[1];\n            var x2 = x1 + textureRect.w * positionedGlyph.scale / pixelRatio;\n            var y2 = y1 + textureRect.h * positionedGlyph.scale / pixelRatio;\n            var tl = new pointGeometry(x1, y1);\n            var tr = new pointGeometry(x2, y1);\n            var bl = new pointGeometry(x1, y2);\n            var br = new pointGeometry(x2, y2);\n            if (rotateVerticalGlyph) {\n                var center = new pointGeometry(-halfAdvance, halfAdvance - SHAPING_DEFAULT_OFFSET);\n                var verticalRotation = -Math.PI / 2;\n                var xHalfWidthOffsetCorrection = ONE_EM / 2 - halfAdvance;\n                var yImageOffsetCorrection = positionedGlyph.imageName ? xHalfWidthOffsetCorrection : 0;\n                var halfWidthOffsetCorrection = new pointGeometry(5 - SHAPING_DEFAULT_OFFSET - xHalfWidthOffsetCorrection, -yImageOffsetCorrection);\n                var verticalOffsetCorrection = new (Function.prototype.bind.apply(pointGeometry, [null].concat(verticalizedLabelOffset)))();\n                tl._rotateAround(verticalRotation, center)._add(halfWidthOffsetCorrection)._add(verticalOffsetCorrection);\n                tr._rotateAround(verticalRotation, center)._add(halfWidthOffsetCorrection)._add(verticalOffsetCorrection);\n                bl._rotateAround(verticalRotation, center)._add(halfWidthOffsetCorrection)._add(verticalOffsetCorrection);\n                br._rotateAround(verticalRotation, center)._add(halfWidthOffsetCorrection)._add(verticalOffsetCorrection);\n            }\n            if (textRotate) {\n                var sin = Math.sin(textRotate), cos = Math.cos(textRotate), matrix = [\n                        cos,\n                        -sin,\n                        sin,\n                        cos\n                    ];\n                tl._matMult(matrix);\n                tr._matMult(matrix);\n                bl._matMult(matrix);\n                br._matMult(matrix);\n            }\n            var pixelOffsetTL = new pointGeometry(0, 0);\n            var pixelOffsetBR = new pointGeometry(0, 0);\n            var minFontScaleX = 0;\n            var minFontScaleY = 0;\n            quads.push({\n                tl: tl,\n                tr: tr,\n                bl: bl,\n                br: br,\n                tex: textureRect,\n                writingMode: shaping.writingMode,\n                glyphOffset: glyphOffset,\n                sectionIndex: positionedGlyph.sectionIndex,\n                isSDF: isSDF,\n                pixelOffsetTL: pixelOffsetTL,\n                pixelOffsetBR: pixelOffsetBR,\n                minFontScaleX: minFontScaleX,\n                minFontScaleY: minFontScaleY\n            });\n        }\n    }\n    return quads;\n}\n\nvar CollisionFeature = function CollisionFeature(collisionBoxArray, anchor, featureIndex, sourceLayerIndex, bucketIndex, shaped, boxScale, padding, alignLine, rotate) {\n    this.boxStartIndex = collisionBoxArray.length;\n    if (alignLine) {\n        var top = shaped.top;\n        var bottom = shaped.bottom;\n        var collisionPadding = shaped.collisionPadding;\n        if (collisionPadding) {\n            top -= collisionPadding[1];\n            bottom += collisionPadding[3];\n        }\n        var height = bottom - top;\n        if (height > 0) {\n            height = Math.max(10, height);\n            this.circleDiameter = height;\n        }\n    } else {\n        var y1 = shaped.top * boxScale - padding;\n        var y2 = shaped.bottom * boxScale + padding;\n        var x1 = shaped.left * boxScale - padding;\n        var x2 = shaped.right * boxScale + padding;\n        var collisionPadding$1 = shaped.collisionPadding;\n        if (collisionPadding$1) {\n            x1 -= collisionPadding$1[0] * boxScale;\n            y1 -= collisionPadding$1[1] * boxScale;\n            x2 += collisionPadding$1[2] * boxScale;\n            y2 += collisionPadding$1[3] * boxScale;\n        }\n        if (rotate) {\n            var tl = new pointGeometry(x1, y1);\n            var tr = new pointGeometry(x2, y1);\n            var bl = new pointGeometry(x1, y2);\n            var br = new pointGeometry(x2, y2);\n            var rotateRadians = rotate * Math.PI / 180;\n            tl._rotate(rotateRadians);\n            tr._rotate(rotateRadians);\n            bl._rotate(rotateRadians);\n            br._rotate(rotateRadians);\n            x1 = Math.min(tl.x, tr.x, bl.x, br.x);\n            x2 = Math.max(tl.x, tr.x, bl.x, br.x);\n            y1 = Math.min(tl.y, tr.y, bl.y, br.y);\n            y2 = Math.max(tl.y, tr.y, bl.y, br.y);\n        }\n        collisionBoxArray.emplaceBack(anchor.x, anchor.y, x1, y1, x2, y2, featureIndex, sourceLayerIndex, bucketIndex);\n    }\n    this.boxEndIndex = collisionBoxArray.length;\n};\n\nvar TinyQueue = function TinyQueue(data, compare) {\n    if (data === void 0)\n        data = [];\n    if (compare === void 0)\n        compare = defaultCompare$1;\n    this.data = data;\n    this.length = this.data.length;\n    this.compare = compare;\n    if (this.length > 0) {\n        for (var i = (this.length >> 1) - 1; i >= 0; i--) {\n            this._down(i);\n        }\n    }\n};\nTinyQueue.prototype.push = function push(item) {\n    this.data.push(item);\n    this.length++;\n    this._up(this.length - 1);\n};\nTinyQueue.prototype.pop = function pop() {\n    if (this.length === 0) {\n        return undefined;\n    }\n    var top = this.data[0];\n    var bottom = this.data.pop();\n    this.length--;\n    if (this.length > 0) {\n        this.data[0] = bottom;\n        this._down(0);\n    }\n    return top;\n};\nTinyQueue.prototype.peek = function peek() {\n    return this.data[0];\n};\nTinyQueue.prototype._up = function _up(pos) {\n    var ref = this;\n    var data = ref.data;\n    var compare = ref.compare;\n    var item = data[pos];\n    while (pos > 0) {\n        var parent = pos - 1 >> 1;\n        var current = data[parent];\n        if (compare(item, current) >= 0) {\n            break;\n        }\n        data[pos] = current;\n        pos = parent;\n    }\n    data[pos] = item;\n};\nTinyQueue.prototype._down = function _down(pos) {\n    var ref = this;\n    var data = ref.data;\n    var compare = ref.compare;\n    var halfLength = this.length >> 1;\n    var item = data[pos];\n    while (pos < halfLength) {\n        var left = (pos << 1) + 1;\n        var best = data[left];\n        var right = left + 1;\n        if (right < this.length && compare(data[right], best) < 0) {\n            left = right;\n            best = data[right];\n        }\n        if (compare(best, item) >= 0) {\n            break;\n        }\n        data[pos] = best;\n        pos = left;\n    }\n    data[pos] = item;\n};\nfunction defaultCompare$1(a, b) {\n    return a < b ? -1 : a > b ? 1 : 0;\n}\n\nfunction findPoleOfInaccessibility (polygonRings, precision, debug) {\n    if (precision === void 0)\n        precision = 1;\n    if (debug === void 0)\n        debug = false;\n    var minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n    var outerRing = polygonRings[0];\n    for (var i = 0; i < outerRing.length; i++) {\n        var p = outerRing[i];\n        if (!i || p.x < minX) {\n            minX = p.x;\n        }\n        if (!i || p.y < minY) {\n            minY = p.y;\n        }\n        if (!i || p.x > maxX) {\n            maxX = p.x;\n        }\n        if (!i || p.y > maxY) {\n            maxY = p.y;\n        }\n    }\n    var width = maxX - minX;\n    var height = maxY - minY;\n    var cellSize = Math.min(width, height);\n    var h = cellSize / 2;\n    var cellQueue = new TinyQueue([], compareMax);\n    if (cellSize === 0) {\n        return new pointGeometry(minX, minY);\n    }\n    for (var x = minX; x < maxX; x += cellSize) {\n        for (var y = minY; y < maxY; y += cellSize) {\n            cellQueue.push(new Cell(x + h, y + h, h, polygonRings));\n        }\n    }\n    var bestCell = getCentroidCell(polygonRings);\n    var numProbes = cellQueue.length;\n    while (cellQueue.length) {\n        var cell = cellQueue.pop();\n        if (cell.d > bestCell.d || !bestCell.d) {\n            bestCell = cell;\n            if (debug) {\n                console.log('found best %d after %d probes', Math.round(10000 * cell.d) / 10000, numProbes);\n            }\n        }\n        if (cell.max - bestCell.d <= precision) {\n            continue;\n        }\n        h = cell.h / 2;\n        cellQueue.push(new Cell(cell.p.x - h, cell.p.y - h, h, polygonRings));\n        cellQueue.push(new Cell(cell.p.x + h, cell.p.y - h, h, polygonRings));\n        cellQueue.push(new Cell(cell.p.x - h, cell.p.y + h, h, polygonRings));\n        cellQueue.push(new Cell(cell.p.x + h, cell.p.y + h, h, polygonRings));\n        numProbes += 4;\n    }\n    if (debug) {\n        console.log('num probes: ' + numProbes);\n        console.log('best distance: ' + bestCell.d);\n    }\n    return bestCell.p;\n}\nfunction compareMax(a, b) {\n    return b.max - a.max;\n}\nfunction Cell(x, y, h, polygon) {\n    this.p = new pointGeometry(x, y);\n    this.h = h;\n    this.d = pointToPolygonDist(this.p, polygon);\n    this.max = this.d + this.h * Math.SQRT2;\n}\nfunction pointToPolygonDist(p, polygon) {\n    var inside = false;\n    var minDistSq = Infinity;\n    for (var k = 0; k < polygon.length; k++) {\n        var ring = polygon[k];\n        for (var i = 0, len = ring.length, j = len - 1; i < len; j = i++) {\n            var a = ring[i];\n            var b = ring[j];\n            if (a.y > p.y !== b.y > p.y && p.x < (b.x - a.x) * (p.y - a.y) / (b.y - a.y) + a.x) {\n                inside = !inside;\n            }\n            minDistSq = Math.min(minDistSq, distToSegmentSquared(p, a, b));\n        }\n    }\n    return (inside ? 1 : -1) * Math.sqrt(minDistSq);\n}\nfunction getCentroidCell(polygon) {\n    var area = 0;\n    var x = 0;\n    var y = 0;\n    var points = polygon[0];\n    for (var i = 0, len = points.length, j = len - 1; i < len; j = i++) {\n        var a = points[i];\n        var b = points[j];\n        var f = a.x * b.y - b.x * a.y;\n        x += (a.x + b.x) * f;\n        y += (a.y + b.y) * f;\n        area += f * 3;\n    }\n    return new Cell(x / area, y / area, 0, polygon);\n}\n\nvar baselineOffset = 7;\nvar INVALID_TEXT_OFFSET = Number.POSITIVE_INFINITY;\nfunction evaluateVariableOffset(anchor, offset) {\n    function fromRadialOffset(anchor, radialOffset) {\n        var x = 0, y = 0;\n        if (radialOffset < 0) {\n            radialOffset = 0;\n        }\n        var hypotenuse = radialOffset / Math.sqrt(2);\n        switch (anchor) {\n        case 'top-right':\n        case 'top-left':\n            y = hypotenuse - baselineOffset;\n            break;\n        case 'bottom-right':\n        case 'bottom-left':\n            y = -hypotenuse + baselineOffset;\n            break;\n        case 'bottom':\n            y = -radialOffset + baselineOffset;\n            break;\n        case 'top':\n            y = radialOffset - baselineOffset;\n            break;\n        }\n        switch (anchor) {\n        case 'top-right':\n        case 'bottom-right':\n            x = -hypotenuse;\n            break;\n        case 'top-left':\n        case 'bottom-left':\n            x = hypotenuse;\n            break;\n        case 'left':\n            x = radialOffset;\n            break;\n        case 'right':\n            x = -radialOffset;\n            break;\n        }\n        return [\n            x,\n            y\n        ];\n    }\n    function fromTextOffset(anchor, offsetX, offsetY) {\n        var x = 0, y = 0;\n        offsetX = Math.abs(offsetX);\n        offsetY = Math.abs(offsetY);\n        switch (anchor) {\n        case 'top-right':\n        case 'top-left':\n        case 'top':\n            y = offsetY - baselineOffset;\n            break;\n        case 'bottom-right':\n        case 'bottom-left':\n        case 'bottom':\n            y = -offsetY + baselineOffset;\n            break;\n        }\n        switch (anchor) {\n        case 'top-right':\n        case 'bottom-right':\n        case 'right':\n            x = -offsetX;\n            break;\n        case 'top-left':\n        case 'bottom-left':\n        case 'left':\n            x = offsetX;\n            break;\n        }\n        return [\n            x,\n            y\n        ];\n    }\n    return offset[1] !== INVALID_TEXT_OFFSET ? fromTextOffset(anchor, offset[0], offset[1]) : fromRadialOffset(anchor, offset[0]);\n}\nfunction performSymbolLayout(bucket, glyphMap, glyphPositions, imageMap, imagePositions, showCollisionBoxes, canonical) {\n    bucket.createArrays();\n    var tileSize = 512 * bucket.overscaling;\n    bucket.tilePixelRatio = EXTENT$1 / tileSize;\n    bucket.compareText = {};\n    bucket.iconsNeedLinear = false;\n    var layout = bucket.layers[0].layout;\n    var unevaluatedLayoutValues = bucket.layers[0]._unevaluatedLayout._values;\n    var sizes = {};\n    if (bucket.textSizeData.kind === 'composite') {\n        var ref = bucket.textSizeData;\n        var minZoom = ref.minZoom;\n        var maxZoom = ref.maxZoom;\n        sizes.compositeTextSizes = [\n            unevaluatedLayoutValues['text-size'].possiblyEvaluate(new EvaluationParameters(minZoom), canonical),\n            unevaluatedLayoutValues['text-size'].possiblyEvaluate(new EvaluationParameters(maxZoom), canonical)\n        ];\n    }\n    if (bucket.iconSizeData.kind === 'composite') {\n        var ref$1 = bucket.iconSizeData;\n        var minZoom$1 = ref$1.minZoom;\n        var maxZoom$1 = ref$1.maxZoom;\n        sizes.compositeIconSizes = [\n            unevaluatedLayoutValues['icon-size'].possiblyEvaluate(new EvaluationParameters(minZoom$1), canonical),\n            unevaluatedLayoutValues['icon-size'].possiblyEvaluate(new EvaluationParameters(maxZoom$1), canonical)\n        ];\n    }\n    sizes.layoutTextSize = unevaluatedLayoutValues['text-size'].possiblyEvaluate(new EvaluationParameters(bucket.zoom + 1), canonical);\n    sizes.layoutIconSize = unevaluatedLayoutValues['icon-size'].possiblyEvaluate(new EvaluationParameters(bucket.zoom + 1), canonical);\n    sizes.textMaxSize = unevaluatedLayoutValues['text-size'].possiblyEvaluate(new EvaluationParameters(18));\n    var lineHeight = layout.get('text-line-height') * ONE_EM;\n    var textAlongLine = layout.get('text-rotation-alignment') === 'map' && layout.get('symbol-placement') !== 'point';\n    var keepUpright = layout.get('text-keep-upright');\n    var textSize = layout.get('text-size');\n    var loop = function () {\n        var feature = list[i$1];\n        var fontstack = layout.get('text-font').evaluate(feature, {}, canonical).join(',');\n        var layoutTextSizeThisZoom = textSize.evaluate(feature, {}, canonical);\n        var layoutTextSize = sizes.layoutTextSize.evaluate(feature, {}, canonical);\n        var layoutIconSize = sizes.layoutIconSize.evaluate(feature, {}, canonical);\n        var shapedTextOrientations = {\n            horizontal: {},\n            vertical: undefined\n        };\n        var text = feature.text;\n        var textOffset = [\n            0,\n            0\n        ];\n        if (text) {\n            var unformattedText = text.toString();\n            var spacing = layout.get('text-letter-spacing').evaluate(feature, {}, canonical) * ONE_EM;\n            var spacingIfAllowed = allowsLetterSpacing(unformattedText) ? spacing : 0;\n            var textAnchor = layout.get('text-anchor').evaluate(feature, {}, canonical);\n            var variableTextAnchor = layout.get('text-variable-anchor');\n            if (!variableTextAnchor) {\n                var radialOffset = layout.get('text-radial-offset').evaluate(feature, {}, canonical);\n                if (radialOffset) {\n                    textOffset = evaluateVariableOffset(textAnchor, [\n                        radialOffset * ONE_EM,\n                        INVALID_TEXT_OFFSET\n                    ]);\n                } else {\n                    textOffset = layout.get('text-offset').evaluate(feature, {}, canonical).map(function (t) {\n                        return t * ONE_EM;\n                    });\n                }\n            }\n            var textJustify = textAlongLine ? 'center' : layout.get('text-justify').evaluate(feature, {}, canonical);\n            var symbolPlacement = layout.get('symbol-placement');\n            var maxWidth = symbolPlacement === 'point' ? layout.get('text-max-width').evaluate(feature, {}, canonical) * ONE_EM : 0;\n            var addVerticalShapingForPointLabelIfNeeded = function () {\n                if (bucket.allowVerticalPlacement && allowsVerticalWritingMode(unformattedText)) {\n                    shapedTextOrientations.vertical = shapeText(text, glyphMap, glyphPositions, imagePositions, fontstack, maxWidth, lineHeight, textAnchor, 'left', spacingIfAllowed, textOffset, WritingMode.vertical, true, symbolPlacement, layoutTextSize, layoutTextSizeThisZoom);\n                }\n            };\n            if (!textAlongLine && variableTextAnchor) {\n                var justifications = textJustify === 'auto' ? variableTextAnchor.map(function (a) {\n                    return getAnchorJustification(a);\n                }) : [textJustify];\n                var singleLine = false;\n                for (var i = 0; i < justifications.length; i++) {\n                    var justification = justifications[i];\n                    if (shapedTextOrientations.horizontal[justification]) {\n                        continue;\n                    }\n                    if (singleLine) {\n                        shapedTextOrientations.horizontal[justification] = shapedTextOrientations.horizontal[0];\n                    } else {\n                        var shaping = shapeText(text, glyphMap, glyphPositions, imagePositions, fontstack, maxWidth, lineHeight, 'center', justification, spacingIfAllowed, textOffset, WritingMode.horizontal, false, symbolPlacement, layoutTextSize, layoutTextSizeThisZoom);\n                        if (shaping) {\n                            shapedTextOrientations.horizontal[justification] = shaping;\n                            singleLine = shaping.positionedLines.length === 1;\n                        }\n                    }\n                }\n                addVerticalShapingForPointLabelIfNeeded();\n            } else {\n                if (textJustify === 'auto') {\n                    textJustify = getAnchorJustification(textAnchor);\n                }\n                var shaping$1 = shapeText(text, glyphMap, glyphPositions, imagePositions, fontstack, maxWidth, lineHeight, textAnchor, textJustify, spacingIfAllowed, textOffset, WritingMode.horizontal, false, symbolPlacement, layoutTextSize, layoutTextSizeThisZoom);\n                if (shaping$1) {\n                    shapedTextOrientations.horizontal[textJustify] = shaping$1;\n                }\n                addVerticalShapingForPointLabelIfNeeded();\n                if (allowsVerticalWritingMode(unformattedText) && textAlongLine && keepUpright) {\n                    shapedTextOrientations.vertical = shapeText(text, glyphMap, glyphPositions, imagePositions, fontstack, maxWidth, lineHeight, textAnchor, textJustify, spacingIfAllowed, textOffset, WritingMode.vertical, false, symbolPlacement, layoutTextSize, layoutTextSizeThisZoom);\n                }\n            }\n        }\n        var shapedIcon = void 0;\n        var isSDFIcon = false;\n        if (feature.icon && feature.icon.name) {\n            var image = imageMap[feature.icon.name];\n            if (image) {\n                shapedIcon = shapeIcon(imagePositions[feature.icon.name], layout.get('icon-offset').evaluate(feature, {}, canonical), layout.get('icon-anchor').evaluate(feature, {}, canonical));\n                isSDFIcon = image.sdf;\n                if (bucket.sdfIcons === undefined) {\n                    bucket.sdfIcons = image.sdf;\n                } else if (bucket.sdfIcons !== image.sdf) {\n                    warnOnce('Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer');\n                }\n                if (image.pixelRatio !== bucket.pixelRatio) {\n                    bucket.iconsNeedLinear = true;\n                } else if (layout.get('icon-rotate').constantOr(1) !== 0) {\n                    bucket.iconsNeedLinear = true;\n                }\n            }\n        }\n        var shapedText = getDefaultHorizontalShaping(shapedTextOrientations.horizontal) || shapedTextOrientations.vertical;\n        bucket.iconsInText = shapedText ? shapedText.iconsInText : false;\n        if (shapedText || shapedIcon) {\n            addFeature(bucket, feature, shapedTextOrientations, shapedIcon, imageMap, sizes, layoutTextSize, layoutIconSize, textOffset, isSDFIcon, canonical);\n        }\n    };\n    for (var i$1 = 0, list = bucket.features; i$1 < list.length; i$1 += 1)\n        loop();\n    if (showCollisionBoxes) {\n        bucket.generateCollisionDebugBuffers();\n    }\n}\nfunction getAnchorJustification(anchor) {\n    switch (anchor) {\n    case 'right':\n    case 'top-right':\n    case 'bottom-right':\n        return 'right';\n    case 'left':\n    case 'top-left':\n    case 'bottom-left':\n        return 'left';\n    }\n    return 'center';\n}\nfunction addFeature(bucket, feature, shapedTextOrientations, shapedIcon, imageMap, sizes, layoutTextSize, layoutIconSize, textOffset, isSDFIcon, canonical) {\n    var textMaxSize = sizes.textMaxSize.evaluate(feature, {});\n    if (textMaxSize === undefined) {\n        textMaxSize = layoutTextSize;\n    }\n    var layout = bucket.layers[0].layout;\n    var iconOffset = layout.get('icon-offset').evaluate(feature, {}, canonical);\n    var defaultHorizontalShaping = getDefaultHorizontalShaping(shapedTextOrientations.horizontal);\n    var glyphSize = 24, fontScale = layoutTextSize / glyphSize, textBoxScale = bucket.tilePixelRatio * fontScale, textMaxBoxScale = bucket.tilePixelRatio * textMaxSize / glyphSize, iconBoxScale = bucket.tilePixelRatio * layoutIconSize, symbolMinDistance = bucket.tilePixelRatio * layout.get('symbol-spacing'), textPadding = layout.get('text-padding') * bucket.tilePixelRatio, iconPadding = layout.get('icon-padding') * bucket.tilePixelRatio, textMaxAngle = layout.get('text-max-angle') / 180 * Math.PI, textAlongLine = layout.get('text-rotation-alignment') === 'map' && layout.get('symbol-placement') !== 'point', iconAlongLine = layout.get('icon-rotation-alignment') === 'map' && layout.get('symbol-placement') !== 'point', symbolPlacement = layout.get('symbol-placement'), textRepeatDistance = symbolMinDistance / 2;\n    var iconTextFit = layout.get('icon-text-fit');\n    var verticallyShapedIcon;\n    if (shapedIcon && iconTextFit !== 'none') {\n        if (bucket.allowVerticalPlacement && shapedTextOrientations.vertical) {\n            verticallyShapedIcon = fitIconToText(shapedIcon, shapedTextOrientations.vertical, iconTextFit, layout.get('icon-text-fit-padding'), iconOffset, fontScale);\n        }\n        if (defaultHorizontalShaping) {\n            shapedIcon = fitIconToText(shapedIcon, defaultHorizontalShaping, iconTextFit, layout.get('icon-text-fit-padding'), iconOffset, fontScale);\n        }\n    }\n    var addSymbolAtAnchor = function (line, anchor) {\n        if (anchor.x < 0 || anchor.x >= EXTENT$1 || anchor.y < 0 || anchor.y >= EXTENT$1) {\n            return;\n        }\n        addSymbol(bucket, anchor, line, shapedTextOrientations, shapedIcon, imageMap, verticallyShapedIcon, bucket.layers[0], bucket.collisionBoxArray, feature.index, feature.sourceLayerIndex, bucket.index, textBoxScale, textPadding, textAlongLine, textOffset, iconBoxScale, iconPadding, iconAlongLine, iconOffset, feature, sizes, isSDFIcon, canonical, layoutTextSize);\n    };\n    if (symbolPlacement === 'line') {\n        for (var i$1 = 0, list$1 = clipLine(feature.geometry, 0, 0, EXTENT$1, EXTENT$1); i$1 < list$1.length; i$1 += 1) {\n            var line = list$1[i$1];\n            var anchors = getAnchors(line, symbolMinDistance, textMaxAngle, shapedTextOrientations.vertical || defaultHorizontalShaping, shapedIcon, glyphSize, textMaxBoxScale, bucket.overscaling, EXTENT$1);\n            for (var i = 0, list = anchors; i < list.length; i += 1) {\n                var anchor = list[i];\n                var shapedText = defaultHorizontalShaping;\n                if (!shapedText || !anchorIsTooClose(bucket, shapedText.text, textRepeatDistance, anchor)) {\n                    addSymbolAtAnchor(line, anchor);\n                }\n            }\n        }\n    } else if (symbolPlacement === 'line-center') {\n        for (var i$2 = 0, list$2 = feature.geometry; i$2 < list$2.length; i$2 += 1) {\n            var line$1 = list$2[i$2];\n            if (line$1.length > 1) {\n                var anchor$1 = getCenterAnchor(line$1, textMaxAngle, shapedTextOrientations.vertical || defaultHorizontalShaping, shapedIcon, glyphSize, textMaxBoxScale);\n                if (anchor$1) {\n                    addSymbolAtAnchor(line$1, anchor$1);\n                }\n            }\n        }\n    } else if (feature.type === 'Polygon') {\n        for (var i$3 = 0, list$3 = classifyRings(feature.geometry, 0); i$3 < list$3.length; i$3 += 1) {\n            var polygon = list$3[i$3];\n            var poi = findPoleOfInaccessibility(polygon, 16);\n            addSymbolAtAnchor(polygon[0], new Anchor(poi.x, poi.y, 0));\n        }\n    } else if (feature.type === 'LineString') {\n        for (var i$4 = 0, list$4 = feature.geometry; i$4 < list$4.length; i$4 += 1) {\n            var line$2 = list$4[i$4];\n            addSymbolAtAnchor(line$2, new Anchor(line$2[0].x, line$2[0].y, 0));\n        }\n    } else if (feature.type === 'Point') {\n        for (var i$6 = 0, list$6 = feature.geometry; i$6 < list$6.length; i$6 += 1) {\n            var points = list$6[i$6];\n            for (var i$5 = 0, list$5 = points; i$5 < list$5.length; i$5 += 1) {\n                var point = list$5[i$5];\n                addSymbolAtAnchor([point], new Anchor(point.x, point.y, 0));\n            }\n        }\n    }\n}\nvar MAX_GLYPH_ICON_SIZE = 255;\nvar MAX_PACKED_SIZE = MAX_GLYPH_ICON_SIZE * SIZE_PACK_FACTOR;\nfunction addTextVertices(bucket, anchor, shapedText, imageMap, layer, textAlongLine, feature, textOffset, lineArray, writingMode, placementTypes, placedTextSymbolIndices, placedIconIndex, sizes, canonical) {\n    var glyphQuads = getGlyphQuads(anchor, shapedText, textOffset, layer, textAlongLine, feature, imageMap, bucket.allowVerticalPlacement);\n    var sizeData = bucket.textSizeData;\n    var textSizeData = null;\n    if (sizeData.kind === 'source') {\n        textSizeData = [SIZE_PACK_FACTOR * layer.layout.get('text-size').evaluate(feature, {})];\n        if (textSizeData[0] > MAX_PACKED_SIZE) {\n            warnOnce(bucket.layerIds[0] + ': Value for \"text-size\" is >= ' + MAX_GLYPH_ICON_SIZE + '. Reduce your \"text-size\".');\n        }\n    } else if (sizeData.kind === 'composite') {\n        textSizeData = [\n            SIZE_PACK_FACTOR * sizes.compositeTextSizes[0].evaluate(feature, {}, canonical),\n            SIZE_PACK_FACTOR * sizes.compositeTextSizes[1].evaluate(feature, {}, canonical)\n        ];\n        if (textSizeData[0] > MAX_PACKED_SIZE || textSizeData[1] > MAX_PACKED_SIZE) {\n            warnOnce(bucket.layerIds[0] + ': Value for \"text-size\" is >= ' + MAX_GLYPH_ICON_SIZE + '. Reduce your \"text-size\".');\n        }\n    }\n    bucket.addSymbols(bucket.text, glyphQuads, textSizeData, textOffset, textAlongLine, feature, writingMode, anchor, lineArray.lineStartIndex, lineArray.lineLength, placedIconIndex, canonical);\n    for (var i = 0, list = placementTypes; i < list.length; i += 1) {\n        var placementType = list[i];\n        placedTextSymbolIndices[placementType] = bucket.text.placedSymbolArray.length - 1;\n    }\n    return glyphQuads.length * 4;\n}\nfunction getDefaultHorizontalShaping(horizontalShaping) {\n    for (var justification in horizontalShaping) {\n        return horizontalShaping[justification];\n    }\n    return null;\n}\nfunction addSymbol(bucket, anchor, line, shapedTextOrientations, shapedIcon, imageMap, verticallyShapedIcon, layer, collisionBoxArray, featureIndex, sourceLayerIndex, bucketIndex, textBoxScale, textPadding, textAlongLine, textOffset, iconBoxScale, iconPadding, iconAlongLine, iconOffset, feature, sizes, isSDFIcon, canonical, layoutTextSize) {\n    var assign;\n    var lineArray = bucket.addToLineVertexArray(anchor, line);\n    var textCollisionFeature, iconCollisionFeature, verticalTextCollisionFeature, verticalIconCollisionFeature;\n    var numIconVertices = 0;\n    var numVerticalIconVertices = 0;\n    var numHorizontalGlyphVertices = 0;\n    var numVerticalGlyphVertices = 0;\n    var placedIconSymbolIndex = -1;\n    var verticalPlacedIconSymbolIndex = -1;\n    var placedTextSymbolIndices = {};\n    var key = murmurhashJs('');\n    var textOffset0 = 0;\n    var textOffset1 = 0;\n    if (layer._unevaluatedLayout.getValue('text-radial-offset') === undefined) {\n        assign = layer.layout.get('text-offset').evaluate(feature, {}, canonical).map(function (t) {\n            return t * ONE_EM;\n        }), textOffset0 = assign[0], textOffset1 = assign[1];\n    } else {\n        textOffset0 = layer.layout.get('text-radial-offset').evaluate(feature, {}, canonical) * ONE_EM;\n        textOffset1 = INVALID_TEXT_OFFSET;\n    }\n    if (bucket.allowVerticalPlacement && shapedTextOrientations.vertical) {\n        var textRotation = layer.layout.get('text-rotate').evaluate(feature, {}, canonical);\n        var verticalTextRotation = textRotation + 90;\n        var verticalShaping = shapedTextOrientations.vertical;\n        verticalTextCollisionFeature = new CollisionFeature(collisionBoxArray, anchor, featureIndex, sourceLayerIndex, bucketIndex, verticalShaping, textBoxScale, textPadding, textAlongLine, verticalTextRotation);\n        if (verticallyShapedIcon) {\n            verticalIconCollisionFeature = new CollisionFeature(collisionBoxArray, anchor, featureIndex, sourceLayerIndex, bucketIndex, verticallyShapedIcon, iconBoxScale, iconPadding, textAlongLine, verticalTextRotation);\n        }\n    }\n    if (shapedIcon) {\n        var iconRotate = layer.layout.get('icon-rotate').evaluate(feature, {});\n        var hasIconTextFit = layer.layout.get('icon-text-fit') !== 'none';\n        var iconQuads = getIconQuads(shapedIcon, iconRotate, isSDFIcon, hasIconTextFit);\n        var verticalIconQuads = verticallyShapedIcon ? getIconQuads(verticallyShapedIcon, iconRotate, isSDFIcon, hasIconTextFit) : undefined;\n        iconCollisionFeature = new CollisionFeature(collisionBoxArray, anchor, featureIndex, sourceLayerIndex, bucketIndex, shapedIcon, iconBoxScale, iconPadding, false, iconRotate);\n        numIconVertices = iconQuads.length * 4;\n        var sizeData = bucket.iconSizeData;\n        var iconSizeData = null;\n        if (sizeData.kind === 'source') {\n            iconSizeData = [SIZE_PACK_FACTOR * layer.layout.get('icon-size').evaluate(feature, {})];\n            if (iconSizeData[0] > MAX_PACKED_SIZE) {\n                warnOnce(bucket.layerIds[0] + ': Value for \"icon-size\" is >= ' + MAX_GLYPH_ICON_SIZE + '. Reduce your \"icon-size\".');\n            }\n        } else if (sizeData.kind === 'composite') {\n            iconSizeData = [\n                SIZE_PACK_FACTOR * sizes.compositeIconSizes[0].evaluate(feature, {}, canonical),\n                SIZE_PACK_FACTOR * sizes.compositeIconSizes[1].evaluate(feature, {}, canonical)\n            ];\n            if (iconSizeData[0] > MAX_PACKED_SIZE || iconSizeData[1] > MAX_PACKED_SIZE) {\n                warnOnce(bucket.layerIds[0] + ': Value for \"icon-size\" is >= ' + MAX_GLYPH_ICON_SIZE + '. Reduce your \"icon-size\".');\n            }\n        }\n        bucket.addSymbols(bucket.icon, iconQuads, iconSizeData, iconOffset, iconAlongLine, feature, false, anchor, lineArray.lineStartIndex, lineArray.lineLength, -1, canonical);\n        placedIconSymbolIndex = bucket.icon.placedSymbolArray.length - 1;\n        if (verticalIconQuads) {\n            numVerticalIconVertices = verticalIconQuads.length * 4;\n            bucket.addSymbols(bucket.icon, verticalIconQuads, iconSizeData, iconOffset, iconAlongLine, feature, WritingMode.vertical, anchor, lineArray.lineStartIndex, lineArray.lineLength, -1, canonical);\n            verticalPlacedIconSymbolIndex = bucket.icon.placedSymbolArray.length - 1;\n        }\n    }\n    for (var justification in shapedTextOrientations.horizontal) {\n        var shaping = shapedTextOrientations.horizontal[justification];\n        if (!textCollisionFeature) {\n            key = murmurhashJs(shaping.text);\n            var textRotate = layer.layout.get('text-rotate').evaluate(feature, {}, canonical);\n            textCollisionFeature = new CollisionFeature(collisionBoxArray, anchor, featureIndex, sourceLayerIndex, bucketIndex, shaping, textBoxScale, textPadding, textAlongLine, textRotate);\n        }\n        var singleLine = shaping.positionedLines.length === 1;\n        numHorizontalGlyphVertices += addTextVertices(bucket, anchor, shaping, imageMap, layer, textAlongLine, feature, textOffset, lineArray, shapedTextOrientations.vertical ? WritingMode.horizontal : WritingMode.horizontalOnly, singleLine ? Object.keys(shapedTextOrientations.horizontal) : [justification], placedTextSymbolIndices, placedIconSymbolIndex, sizes, canonical);\n        if (singleLine) {\n            break;\n        }\n    }\n    if (shapedTextOrientations.vertical) {\n        numVerticalGlyphVertices += addTextVertices(bucket, anchor, shapedTextOrientations.vertical, imageMap, layer, textAlongLine, feature, textOffset, lineArray, WritingMode.vertical, ['vertical'], placedTextSymbolIndices, verticalPlacedIconSymbolIndex, sizes, canonical);\n    }\n    var textBoxStartIndex = textCollisionFeature ? textCollisionFeature.boxStartIndex : bucket.collisionBoxArray.length;\n    var textBoxEndIndex = textCollisionFeature ? textCollisionFeature.boxEndIndex : bucket.collisionBoxArray.length;\n    var verticalTextBoxStartIndex = verticalTextCollisionFeature ? verticalTextCollisionFeature.boxStartIndex : bucket.collisionBoxArray.length;\n    var verticalTextBoxEndIndex = verticalTextCollisionFeature ? verticalTextCollisionFeature.boxEndIndex : bucket.collisionBoxArray.length;\n    var iconBoxStartIndex = iconCollisionFeature ? iconCollisionFeature.boxStartIndex : bucket.collisionBoxArray.length;\n    var iconBoxEndIndex = iconCollisionFeature ? iconCollisionFeature.boxEndIndex : bucket.collisionBoxArray.length;\n    var verticalIconBoxStartIndex = verticalIconCollisionFeature ? verticalIconCollisionFeature.boxStartIndex : bucket.collisionBoxArray.length;\n    var verticalIconBoxEndIndex = verticalIconCollisionFeature ? verticalIconCollisionFeature.boxEndIndex : bucket.collisionBoxArray.length;\n    var collisionCircleDiameter = -1;\n    var getCollisionCircleHeight = function (feature, prevHeight) {\n        if (feature && feature.circleDiameter) {\n            return Math.max(feature.circleDiameter, prevHeight);\n        }\n        return prevHeight;\n    };\n    collisionCircleDiameter = getCollisionCircleHeight(textCollisionFeature, collisionCircleDiameter);\n    collisionCircleDiameter = getCollisionCircleHeight(verticalTextCollisionFeature, collisionCircleDiameter);\n    collisionCircleDiameter = getCollisionCircleHeight(iconCollisionFeature, collisionCircleDiameter);\n    collisionCircleDiameter = getCollisionCircleHeight(verticalIconCollisionFeature, collisionCircleDiameter);\n    var useRuntimeCollisionCircles = collisionCircleDiameter > -1 ? 1 : 0;\n    if (useRuntimeCollisionCircles) {\n        collisionCircleDiameter *= layoutTextSize / ONE_EM;\n    }\n    if (bucket.glyphOffsetArray.length >= SymbolBucket.MAX_GLYPHS) {\n        warnOnce('Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907');\n    }\n    if (feature.sortKey !== undefined) {\n        bucket.addToSortKeyRanges(bucket.symbolInstances.length, feature.sortKey);\n    }\n    bucket.symbolInstances.emplaceBack(anchor.x, anchor.y, placedTextSymbolIndices.right >= 0 ? placedTextSymbolIndices.right : -1, placedTextSymbolIndices.center >= 0 ? placedTextSymbolIndices.center : -1, placedTextSymbolIndices.left >= 0 ? placedTextSymbolIndices.left : -1, placedTextSymbolIndices.vertical || -1, placedIconSymbolIndex, verticalPlacedIconSymbolIndex, key, textBoxStartIndex, textBoxEndIndex, verticalTextBoxStartIndex, verticalTextBoxEndIndex, iconBoxStartIndex, iconBoxEndIndex, verticalIconBoxStartIndex, verticalIconBoxEndIndex, featureIndex, numHorizontalGlyphVertices, numVerticalGlyphVertices, numIconVertices, numVerticalIconVertices, useRuntimeCollisionCircles, 0, textBoxScale, textOffset0, textOffset1, collisionCircleDiameter);\n}\nfunction anchorIsTooClose(bucket, text, repeatDistance, anchor) {\n    var compareText = bucket.compareText;\n    if (!(text in compareText)) {\n        compareText[text] = [];\n    } else {\n        var otherAnchors = compareText[text];\n        for (var k = otherAnchors.length - 1; k >= 0; k--) {\n            if (anchor.dist(otherAnchors[k]) < repeatDistance) {\n                return true;\n            }\n        }\n    }\n    compareText[text].push(anchor);\n    return false;\n}\n\nvar vectorTileFeatureTypes$2 = vectorTile.VectorTileFeature.types;\nvar shaderOpacityAttributes = [{\n        name: 'a_fade_opacity',\n        components: 1,\n        type: 'Uint8',\n        offset: 0\n    }];\nfunction addVertex$1(array, anchorX, anchorY, ox, oy, tx, ty, sizeVertex, isSDF, pixelOffsetX, pixelOffsetY, minFontScaleX, minFontScaleY) {\n    var aSizeX = sizeVertex ? Math.min(MAX_PACKED_SIZE, Math.round(sizeVertex[0])) : 0;\n    var aSizeY = sizeVertex ? Math.min(MAX_PACKED_SIZE, Math.round(sizeVertex[1])) : 0;\n    array.emplaceBack(anchorX, anchorY, Math.round(ox * 32), Math.round(oy * 32), tx, ty, (aSizeX << 1) + (isSDF ? 1 : 0), aSizeY, pixelOffsetX * 16, pixelOffsetY * 16, minFontScaleX * 256, minFontScaleY * 256);\n}\nfunction addDynamicAttributes(dynamicLayoutVertexArray, p, angle) {\n    dynamicLayoutVertexArray.emplaceBack(p.x, p.y, angle);\n    dynamicLayoutVertexArray.emplaceBack(p.x, p.y, angle);\n    dynamicLayoutVertexArray.emplaceBack(p.x, p.y, angle);\n    dynamicLayoutVertexArray.emplaceBack(p.x, p.y, angle);\n}\nfunction containsRTLText(formattedText) {\n    for (var i = 0, list = formattedText.sections; i < list.length; i += 1) {\n        var section = list[i];\n        if (stringContainsRTLText(section.text)) {\n            return true;\n        }\n    }\n    return false;\n}\nvar SymbolBuffers = function SymbolBuffers(programConfigurations) {\n    this.layoutVertexArray = new StructArrayLayout4i4ui4i24();\n    this.indexArray = new StructArrayLayout3ui6();\n    this.programConfigurations = programConfigurations;\n    this.segments = new SegmentVector();\n    this.dynamicLayoutVertexArray = new StructArrayLayout3f12();\n    this.opacityVertexArray = new StructArrayLayout1ul4();\n    this.placedSymbolArray = new PlacedSymbolArray();\n};\nSymbolBuffers.prototype.isEmpty = function isEmpty() {\n    return this.layoutVertexArray.length === 0 && this.indexArray.length === 0 && this.dynamicLayoutVertexArray.length === 0 && this.opacityVertexArray.length === 0;\n};\nSymbolBuffers.prototype.upload = function upload(context, dynamicIndexBuffer, upload$1, update) {\n    if (this.isEmpty()) {\n        return;\n    }\n    if (upload$1) {\n        this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, symbolLayoutAttributes.members);\n        this.indexBuffer = context.createIndexBuffer(this.indexArray, dynamicIndexBuffer);\n        this.dynamicLayoutVertexBuffer = context.createVertexBuffer(this.dynamicLayoutVertexArray, dynamicLayoutAttributes.members, true);\n        this.opacityVertexBuffer = context.createVertexBuffer(this.opacityVertexArray, shaderOpacityAttributes, true);\n        this.opacityVertexBuffer.itemSize = 1;\n    }\n    if (upload$1 || update) {\n        this.programConfigurations.upload(context);\n    }\n};\nSymbolBuffers.prototype.destroy = function destroy() {\n    if (!this.layoutVertexBuffer) {\n        return;\n    }\n    this.layoutVertexBuffer.destroy();\n    this.indexBuffer.destroy();\n    this.programConfigurations.destroy();\n    this.segments.destroy();\n    this.dynamicLayoutVertexBuffer.destroy();\n    this.opacityVertexBuffer.destroy();\n};\nregister('SymbolBuffers', SymbolBuffers);\nvar CollisionBuffers = function CollisionBuffers(LayoutArray, layoutAttributes, IndexArray) {\n    this.layoutVertexArray = new LayoutArray();\n    this.layoutAttributes = layoutAttributes;\n    this.indexArray = new IndexArray();\n    this.segments = new SegmentVector();\n    this.collisionVertexArray = new StructArrayLayout2ub2f12();\n};\nCollisionBuffers.prototype.upload = function upload(context) {\n    this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, this.layoutAttributes);\n    this.indexBuffer = context.createIndexBuffer(this.indexArray);\n    this.collisionVertexBuffer = context.createVertexBuffer(this.collisionVertexArray, collisionVertexAttributes.members, true);\n};\nCollisionBuffers.prototype.destroy = function destroy() {\n    if (!this.layoutVertexBuffer) {\n        return;\n    }\n    this.layoutVertexBuffer.destroy();\n    this.indexBuffer.destroy();\n    this.segments.destroy();\n    this.collisionVertexBuffer.destroy();\n};\nregister('CollisionBuffers', CollisionBuffers);\nvar SymbolBucket = function SymbolBucket(options) {\n    this.collisionBoxArray = options.collisionBoxArray;\n    this.zoom = options.zoom;\n    this.overscaling = options.overscaling;\n    this.layers = options.layers;\n    this.layerIds = this.layers.map(function (layer) {\n        return layer.id;\n    });\n    this.index = options.index;\n    this.pixelRatio = options.pixelRatio;\n    this.sourceLayerIndex = options.sourceLayerIndex;\n    this.hasPattern = false;\n    this.hasRTLText = false;\n    this.sortKeyRanges = [];\n    this.collisionCircleArray = [];\n    this.placementInvProjMatrix = identity([]);\n    this.placementViewportMatrix = identity([]);\n    var layer = this.layers[0];\n    var unevaluatedLayoutValues = layer._unevaluatedLayout._values;\n    this.textSizeData = getSizeData(this.zoom, unevaluatedLayoutValues['text-size']);\n    this.iconSizeData = getSizeData(this.zoom, unevaluatedLayoutValues['icon-size']);\n    var layout = this.layers[0].layout;\n    var sortKey = layout.get('symbol-sort-key');\n    var zOrder = layout.get('symbol-z-order');\n    this.sortFeaturesByKey = zOrder !== 'viewport-y' && sortKey.constantOr(1) !== undefined;\n    var zOrderByViewportY = zOrder === 'viewport-y' || zOrder === 'auto' && !this.sortFeaturesByKey;\n    this.sortFeaturesByY = zOrderByViewportY && (layout.get('text-allow-overlap') || layout.get('icon-allow-overlap') || layout.get('text-ignore-placement') || layout.get('icon-ignore-placement'));\n    if (layout.get('symbol-placement') === 'point') {\n        this.writingModes = layout.get('text-writing-mode').map(function (wm) {\n            return WritingMode[wm];\n        });\n    }\n    this.stateDependentLayerIds = this.layers.filter(function (l) {\n        return l.isStateDependent();\n    }).map(function (l) {\n        return l.id;\n    });\n    this.sourceID = options.sourceID;\n};\nSymbolBucket.prototype.createArrays = function createArrays() {\n    this.text = new SymbolBuffers(new ProgramConfigurationSet(symbolLayoutAttributes.members, this.layers, this.zoom, function (property) {\n        return /^text/.test(property);\n    }));\n    this.icon = new SymbolBuffers(new ProgramConfigurationSet(symbolLayoutAttributes.members, this.layers, this.zoom, function (property) {\n        return /^icon/.test(property);\n    }));\n    this.glyphOffsetArray = new GlyphOffsetArray();\n    this.lineVertexArray = new SymbolLineVertexArray();\n    this.symbolInstances = new SymbolInstanceArray();\n};\nSymbolBucket.prototype.calculateGlyphDependencies = function calculateGlyphDependencies(text, stack, textAlongLine, allowVerticalPlacement, doesAllowVerticalWritingMode) {\n    for (var i = 0; i < text.length; i++) {\n        stack[text.charCodeAt(i)] = true;\n        if ((textAlongLine || allowVerticalPlacement) && doesAllowVerticalWritingMode) {\n            var verticalChar = verticalizedCharacterMap[text.charAt(i)];\n            if (verticalChar) {\n                stack[verticalChar.charCodeAt(0)] = true;\n            }\n        }\n    }\n};\nSymbolBucket.prototype.populate = function populate(features, options, canonical) {\n    var layer = this.layers[0];\n    var layout = layer.layout;\n    var textFont = layout.get('text-font');\n    var textField = layout.get('text-field');\n    var iconImage = layout.get('icon-image');\n    var hasText = (textField.value.kind !== 'constant' || textField.value.value instanceof Formatted && !textField.value.value.isEmpty() || textField.value.value.toString().length > 0) && (textFont.value.kind !== 'constant' || textFont.value.value.length > 0);\n    var hasIcon = iconImage.value.kind !== 'constant' || !!iconImage.value.value || Object.keys(iconImage.parameters).length > 0;\n    var symbolSortKey = layout.get('symbol-sort-key');\n    this.features = [];\n    if (!hasText && !hasIcon) {\n        return;\n    }\n    var icons = options.iconDependencies;\n    var stacks = options.glyphDependencies;\n    var availableImages = options.availableImages;\n    var globalProperties = new EvaluationParameters(this.zoom);\n    for (var i$1 = 0, list$1 = features; i$1 < list$1.length; i$1 += 1) {\n        var ref = list$1[i$1];\n        var feature = ref.feature;\n        var id = ref.id;\n        var index = ref.index;\n        var sourceLayerIndex = ref.sourceLayerIndex;\n        var needGeometry = layer._featureFilter.needGeometry;\n        var evaluationFeature = {\n            type: feature.type,\n            id: id,\n            properties: feature.properties,\n            geometry: needGeometry ? loadGeometry(feature) : []\n        };\n        if (!layer._featureFilter.filter(globalProperties, evaluationFeature, canonical)) {\n            continue;\n        }\n        if (!needGeometry) {\n            evaluationFeature.geometry = loadGeometry(feature);\n        }\n        var text = void 0;\n        if (hasText) {\n            var resolvedTokens = layer.getValueAndResolveTokens('text-field', evaluationFeature, canonical, availableImages);\n            var formattedText = Formatted.factory(resolvedTokens);\n            if (containsRTLText(formattedText)) {\n                this.hasRTLText = true;\n            }\n            if (!this.hasRTLText || getRTLTextPluginStatus() === 'unavailable' || this.hasRTLText && plugin.isParsed()) {\n                text = transformText$1(formattedText, layer, evaluationFeature);\n            }\n        }\n        var icon = void 0;\n        if (hasIcon) {\n            var resolvedTokens$1 = layer.getValueAndResolveTokens('icon-image', evaluationFeature, canonical, availableImages);\n            if (resolvedTokens$1 instanceof ResolvedImage) {\n                icon = resolvedTokens$1;\n            } else {\n                icon = ResolvedImage.fromString(resolvedTokens$1);\n            }\n        }\n        if (!text && !icon) {\n            continue;\n        }\n        var sortKey = this.sortFeaturesByKey ? symbolSortKey.evaluate(evaluationFeature, {}, canonical) : undefined;\n        var symbolFeature = {\n            id: id,\n            text: text,\n            icon: icon,\n            index: index,\n            sourceLayerIndex: sourceLayerIndex,\n            geometry: loadGeometry(feature),\n            properties: feature.properties,\n            type: vectorTileFeatureTypes$2[feature.type],\n            sortKey: sortKey\n        };\n        this.features.push(symbolFeature);\n        if (icon) {\n            icons[icon.name] = true;\n        }\n        if (text) {\n            var fontStack = textFont.evaluate(evaluationFeature, {}, canonical).join(',');\n            var textAlongLine = layout.get('text-rotation-alignment') === 'map' && layout.get('symbol-placement') !== 'point';\n            this.allowVerticalPlacement = this.writingModes && this.writingModes.indexOf(WritingMode.vertical) >= 0;\n            for (var i = 0, list = text.sections; i < list.length; i += 1) {\n                var section = list[i];\n                if (!section.image) {\n                    var doesAllowVerticalWritingMode = allowsVerticalWritingMode(text.toString());\n                    var sectionFont = section.fontStack || fontStack;\n                    var sectionStack = stacks[sectionFont] = stacks[sectionFont] || {};\n                    this.calculateGlyphDependencies(section.text, sectionStack, textAlongLine, this.allowVerticalPlacement, doesAllowVerticalWritingMode);\n                } else {\n                    icons[section.image.name] = true;\n                }\n            }\n        }\n    }\n    if (layout.get('symbol-placement') === 'line') {\n        this.features = mergeLines(this.features);\n    }\n    if (this.sortFeaturesByKey) {\n        this.features.sort(function (a, b) {\n            return a.sortKey - b.sortKey;\n        });\n    }\n};\nSymbolBucket.prototype.update = function update(states, vtLayer, imagePositions) {\n    if (!this.stateDependentLayers.length) {\n        return;\n    }\n    this.text.programConfigurations.updatePaintArrays(states, vtLayer, this.layers, imagePositions);\n    this.icon.programConfigurations.updatePaintArrays(states, vtLayer, this.layers, imagePositions);\n};\nSymbolBucket.prototype.isEmpty = function isEmpty() {\n    return this.symbolInstances.length === 0 && !this.hasRTLText;\n};\nSymbolBucket.prototype.uploadPending = function uploadPending() {\n    return !this.uploaded || this.text.programConfigurations.needsUpload || this.icon.programConfigurations.needsUpload;\n};\nSymbolBucket.prototype.upload = function upload(context) {\n    if (!this.uploaded && this.hasDebugData()) {\n        this.textCollisionBox.upload(context);\n        this.iconCollisionBox.upload(context);\n    }\n    this.text.upload(context, this.sortFeaturesByY, !this.uploaded, this.text.programConfigurations.needsUpload);\n    this.icon.upload(context, this.sortFeaturesByY, !this.uploaded, this.icon.programConfigurations.needsUpload);\n    this.uploaded = true;\n};\nSymbolBucket.prototype.destroyDebugData = function destroyDebugData() {\n    this.textCollisionBox.destroy();\n    this.iconCollisionBox.destroy();\n};\nSymbolBucket.prototype.destroy = function destroy() {\n    this.text.destroy();\n    this.icon.destroy();\n    if (this.hasDebugData()) {\n        this.destroyDebugData();\n    }\n};\nSymbolBucket.prototype.addToLineVertexArray = function addToLineVertexArray(anchor, line) {\n    var lineStartIndex = this.lineVertexArray.length;\n    if (anchor.segment !== undefined) {\n        var sumForwardLength = anchor.dist(line[anchor.segment + 1]);\n        var sumBackwardLength = anchor.dist(line[anchor.segment]);\n        var vertices = {};\n        for (var i = anchor.segment + 1; i < line.length; i++) {\n            vertices[i] = {\n                x: line[i].x,\n                y: line[i].y,\n                tileUnitDistanceFromAnchor: sumForwardLength\n            };\n            if (i < line.length - 1) {\n                sumForwardLength += line[i + 1].dist(line[i]);\n            }\n        }\n        for (var i$1 = anchor.segment || 0; i$1 >= 0; i$1--) {\n            vertices[i$1] = {\n                x: line[i$1].x,\n                y: line[i$1].y,\n                tileUnitDistanceFromAnchor: sumBackwardLength\n            };\n            if (i$1 > 0) {\n                sumBackwardLength += line[i$1 - 1].dist(line[i$1]);\n            }\n        }\n        for (var i$2 = 0; i$2 < line.length; i$2++) {\n            var vertex = vertices[i$2];\n            this.lineVertexArray.emplaceBack(vertex.x, vertex.y, vertex.tileUnitDistanceFromAnchor);\n        }\n    }\n    return {\n        lineStartIndex: lineStartIndex,\n        lineLength: this.lineVertexArray.length - lineStartIndex\n    };\n};\nSymbolBucket.prototype.addSymbols = function addSymbols(arrays, quads, sizeVertex, lineOffset, alongLine, feature, writingMode, labelAnchor, lineStartIndex, lineLength, associatedIconIndex, canonical) {\n    var indexArray = arrays.indexArray;\n    var layoutVertexArray = arrays.layoutVertexArray;\n    var segment = arrays.segments.prepareSegment(4 * quads.length, layoutVertexArray, indexArray, feature.sortKey);\n    var glyphOffsetArrayStart = this.glyphOffsetArray.length;\n    var vertexStartIndex = segment.vertexLength;\n    var angle = this.allowVerticalPlacement && writingMode === WritingMode.vertical ? Math.PI / 2 : 0;\n    var sections = feature.text && feature.text.sections;\n    for (var i = 0; i < quads.length; i++) {\n        var ref = quads[i];\n        var tl = ref.tl;\n        var tr = ref.tr;\n        var bl = ref.bl;\n        var br = ref.br;\n        var tex = ref.tex;\n        var pixelOffsetTL = ref.pixelOffsetTL;\n        var pixelOffsetBR = ref.pixelOffsetBR;\n        var minFontScaleX = ref.minFontScaleX;\n        var minFontScaleY = ref.minFontScaleY;\n        var glyphOffset = ref.glyphOffset;\n        var isSDF = ref.isSDF;\n        var sectionIndex = ref.sectionIndex;\n        var index = segment.vertexLength;\n        var y = glyphOffset[1];\n        addVertex$1(layoutVertexArray, labelAnchor.x, labelAnchor.y, tl.x, y + tl.y, tex.x, tex.y, sizeVertex, isSDF, pixelOffsetTL.x, pixelOffsetTL.y, minFontScaleX, minFontScaleY);\n        addVertex$1(layoutVertexArray, labelAnchor.x, labelAnchor.y, tr.x, y + tr.y, tex.x + tex.w, tex.y, sizeVertex, isSDF, pixelOffsetBR.x, pixelOffsetTL.y, minFontScaleX, minFontScaleY);\n        addVertex$1(layoutVertexArray, labelAnchor.x, labelAnchor.y, bl.x, y + bl.y, tex.x, tex.y + tex.h, sizeVertex, isSDF, pixelOffsetTL.x, pixelOffsetBR.y, minFontScaleX, minFontScaleY);\n        addVertex$1(layoutVertexArray, labelAnchor.x, labelAnchor.y, br.x, y + br.y, tex.x + tex.w, tex.y + tex.h, sizeVertex, isSDF, pixelOffsetBR.x, pixelOffsetBR.y, minFontScaleX, minFontScaleY);\n        addDynamicAttributes(arrays.dynamicLayoutVertexArray, labelAnchor, angle);\n        indexArray.emplaceBack(index, index + 1, index + 2);\n        indexArray.emplaceBack(index + 1, index + 2, index + 3);\n        segment.vertexLength += 4;\n        segment.primitiveLength += 2;\n        this.glyphOffsetArray.emplaceBack(glyphOffset[0]);\n        if (i === quads.length - 1 || sectionIndex !== quads[i + 1].sectionIndex) {\n            arrays.programConfigurations.populatePaintArrays(layoutVertexArray.length, feature, feature.index, {}, canonical, sections && sections[sectionIndex]);\n        }\n    }\n    arrays.placedSymbolArray.emplaceBack(labelAnchor.x, labelAnchor.y, glyphOffsetArrayStart, this.glyphOffsetArray.length - glyphOffsetArrayStart, vertexStartIndex, lineStartIndex, lineLength, labelAnchor.segment, sizeVertex ? sizeVertex[0] : 0, sizeVertex ? sizeVertex[1] : 0, lineOffset[0], lineOffset[1], writingMode, 0, false, 0, associatedIconIndex);\n};\nSymbolBucket.prototype._addCollisionDebugVertex = function _addCollisionDebugVertex(layoutVertexArray, collisionVertexArray, point, anchorX, anchorY, extrude) {\n    collisionVertexArray.emplaceBack(0, 0);\n    return layoutVertexArray.emplaceBack(point.x, point.y, anchorX, anchorY, Math.round(extrude.x), Math.round(extrude.y));\n};\nSymbolBucket.prototype.addCollisionDebugVertices = function addCollisionDebugVertices(x1, y1, x2, y2, arrays, boxAnchorPoint, symbolInstance) {\n    var segment = arrays.segments.prepareSegment(4, arrays.layoutVertexArray, arrays.indexArray);\n    var index = segment.vertexLength;\n    var layoutVertexArray = arrays.layoutVertexArray;\n    var collisionVertexArray = arrays.collisionVertexArray;\n    var anchorX = symbolInstance.anchorX;\n    var anchorY = symbolInstance.anchorY;\n    this._addCollisionDebugVertex(layoutVertexArray, collisionVertexArray, boxAnchorPoint, anchorX, anchorY, new pointGeometry(x1, y1));\n    this._addCollisionDebugVertex(layoutVertexArray, collisionVertexArray, boxAnchorPoint, anchorX, anchorY, new pointGeometry(x2, y1));\n    this._addCollisionDebugVertex(layoutVertexArray, collisionVertexArray, boxAnchorPoint, anchorX, anchorY, new pointGeometry(x2, y2));\n    this._addCollisionDebugVertex(layoutVertexArray, collisionVertexArray, boxAnchorPoint, anchorX, anchorY, new pointGeometry(x1, y2));\n    segment.vertexLength += 4;\n    var indexArray = arrays.indexArray;\n    indexArray.emplaceBack(index, index + 1);\n    indexArray.emplaceBack(index + 1, index + 2);\n    indexArray.emplaceBack(index + 2, index + 3);\n    indexArray.emplaceBack(index + 3, index);\n    segment.primitiveLength += 4;\n};\nSymbolBucket.prototype.addDebugCollisionBoxes = function addDebugCollisionBoxes(startIndex, endIndex, symbolInstance, isText) {\n    for (var b = startIndex; b < endIndex; b++) {\n        var box = this.collisionBoxArray.get(b);\n        var x1 = box.x1;\n        var y1 = box.y1;\n        var x2 = box.x2;\n        var y2 = box.y2;\n        this.addCollisionDebugVertices(x1, y1, x2, y2, isText ? this.textCollisionBox : this.iconCollisionBox, box.anchorPoint, symbolInstance);\n    }\n};\nSymbolBucket.prototype.generateCollisionDebugBuffers = function generateCollisionDebugBuffers() {\n    if (this.hasDebugData()) {\n        this.destroyDebugData();\n    }\n    this.textCollisionBox = new CollisionBuffers(StructArrayLayout2i2i2i12, collisionBoxLayout.members, StructArrayLayout2ui4);\n    this.iconCollisionBox = new CollisionBuffers(StructArrayLayout2i2i2i12, collisionBoxLayout.members, StructArrayLayout2ui4);\n    for (var i = 0; i < this.symbolInstances.length; i++) {\n        var symbolInstance = this.symbolInstances.get(i);\n        this.addDebugCollisionBoxes(symbolInstance.textBoxStartIndex, symbolInstance.textBoxEndIndex, symbolInstance, true);\n        this.addDebugCollisionBoxes(symbolInstance.verticalTextBoxStartIndex, symbolInstance.verticalTextBoxEndIndex, symbolInstance, true);\n        this.addDebugCollisionBoxes(symbolInstance.iconBoxStartIndex, symbolInstance.iconBoxEndIndex, symbolInstance, false);\n        this.addDebugCollisionBoxes(symbolInstance.verticalIconBoxStartIndex, symbolInstance.verticalIconBoxEndIndex, symbolInstance, false);\n    }\n};\nSymbolBucket.prototype._deserializeCollisionBoxesForSymbol = function _deserializeCollisionBoxesForSymbol(collisionBoxArray, textStartIndex, textEndIndex, verticalTextStartIndex, verticalTextEndIndex, iconStartIndex, iconEndIndex, verticalIconStartIndex, verticalIconEndIndex) {\n    var collisionArrays = {};\n    for (var k = textStartIndex; k < textEndIndex; k++) {\n        var box = collisionBoxArray.get(k);\n        collisionArrays.textBox = {\n            x1: box.x1,\n            y1: box.y1,\n            x2: box.x2,\n            y2: box.y2,\n            anchorPointX: box.anchorPointX,\n            anchorPointY: box.anchorPointY\n        };\n        collisionArrays.textFeatureIndex = box.featureIndex;\n        break;\n    }\n    for (var k$1 = verticalTextStartIndex; k$1 < verticalTextEndIndex; k$1++) {\n        var box$1 = collisionBoxArray.get(k$1);\n        collisionArrays.verticalTextBox = {\n            x1: box$1.x1,\n            y1: box$1.y1,\n            x2: box$1.x2,\n            y2: box$1.y2,\n            anchorPointX: box$1.anchorPointX,\n            anchorPointY: box$1.anchorPointY\n        };\n        collisionArrays.verticalTextFeatureIndex = box$1.featureIndex;\n        break;\n    }\n    for (var k$2 = iconStartIndex; k$2 < iconEndIndex; k$2++) {\n        var box$2 = collisionBoxArray.get(k$2);\n        collisionArrays.iconBox = {\n            x1: box$2.x1,\n            y1: box$2.y1,\n            x2: box$2.x2,\n            y2: box$2.y2,\n            anchorPointX: box$2.anchorPointX,\n            anchorPointY: box$2.anchorPointY\n        };\n        collisionArrays.iconFeatureIndex = box$2.featureIndex;\n        break;\n    }\n    for (var k$3 = verticalIconStartIndex; k$3 < verticalIconEndIndex; k$3++) {\n        var box$3 = collisionBoxArray.get(k$3);\n        collisionArrays.verticalIconBox = {\n            x1: box$3.x1,\n            y1: box$3.y1,\n            x2: box$3.x2,\n            y2: box$3.y2,\n            anchorPointX: box$3.anchorPointX,\n            anchorPointY: box$3.anchorPointY\n        };\n        collisionArrays.verticalIconFeatureIndex = box$3.featureIndex;\n        break;\n    }\n    return collisionArrays;\n};\nSymbolBucket.prototype.deserializeCollisionBoxes = function deserializeCollisionBoxes(collisionBoxArray) {\n    this.collisionArrays = [];\n    for (var i = 0; i < this.symbolInstances.length; i++) {\n        var symbolInstance = this.symbolInstances.get(i);\n        this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(collisionBoxArray, symbolInstance.textBoxStartIndex, symbolInstance.textBoxEndIndex, symbolInstance.verticalTextBoxStartIndex, symbolInstance.verticalTextBoxEndIndex, symbolInstance.iconBoxStartIndex, symbolInstance.iconBoxEndIndex, symbolInstance.verticalIconBoxStartIndex, symbolInstance.verticalIconBoxEndIndex));\n    }\n};\nSymbolBucket.prototype.hasTextData = function hasTextData() {\n    return this.text.segments.get().length > 0;\n};\nSymbolBucket.prototype.hasIconData = function hasIconData() {\n    return this.icon.segments.get().length > 0;\n};\nSymbolBucket.prototype.hasDebugData = function hasDebugData() {\n    return this.textCollisionBox && this.iconCollisionBox;\n};\nSymbolBucket.prototype.hasTextCollisionBoxData = function hasTextCollisionBoxData() {\n    return this.hasDebugData() && this.textCollisionBox.segments.get().length > 0;\n};\nSymbolBucket.prototype.hasIconCollisionBoxData = function hasIconCollisionBoxData() {\n    return this.hasDebugData() && this.iconCollisionBox.segments.get().length > 0;\n};\nSymbolBucket.prototype.addIndicesForPlacedSymbol = function addIndicesForPlacedSymbol(iconOrText, placedSymbolIndex) {\n    var placedSymbol = iconOrText.placedSymbolArray.get(placedSymbolIndex);\n    var endIndex = placedSymbol.vertexStartIndex + placedSymbol.numGlyphs * 4;\n    for (var vertexIndex = placedSymbol.vertexStartIndex; vertexIndex < endIndex; vertexIndex += 4) {\n        iconOrText.indexArray.emplaceBack(vertexIndex, vertexIndex + 1, vertexIndex + 2);\n        iconOrText.indexArray.emplaceBack(vertexIndex + 1, vertexIndex + 2, vertexIndex + 3);\n    }\n};\nSymbolBucket.prototype.getSortedSymbolIndexes = function getSortedSymbolIndexes(angle) {\n    if (this.sortedAngle === angle && this.symbolInstanceIndexes !== undefined) {\n        return this.symbolInstanceIndexes;\n    }\n    var sin = Math.sin(angle);\n    var cos = Math.cos(angle);\n    var rotatedYs = [];\n    var featureIndexes = [];\n    var result = [];\n    for (var i = 0; i < this.symbolInstances.length; ++i) {\n        result.push(i);\n        var symbolInstance = this.symbolInstances.get(i);\n        rotatedYs.push(Math.round(sin * symbolInstance.anchorX + cos * symbolInstance.anchorY) | 0);\n        featureIndexes.push(symbolInstance.featureIndex);\n    }\n    result.sort(function (aIndex, bIndex) {\n        return rotatedYs[aIndex] - rotatedYs[bIndex] || featureIndexes[bIndex] - featureIndexes[aIndex];\n    });\n    return result;\n};\nSymbolBucket.prototype.addToSortKeyRanges = function addToSortKeyRanges(symbolInstanceIndex, sortKey) {\n    var last = this.sortKeyRanges[this.sortKeyRanges.length - 1];\n    if (last && last.sortKey === sortKey) {\n        last.symbolInstanceEnd = symbolInstanceIndex + 1;\n    } else {\n        this.sortKeyRanges.push({\n            sortKey: sortKey,\n            symbolInstanceStart: symbolInstanceIndex,\n            symbolInstanceEnd: symbolInstanceIndex + 1\n        });\n    }\n};\nSymbolBucket.prototype.sortFeatures = function sortFeatures(angle) {\n    var this$1 = this;\n    if (!this.sortFeaturesByY) {\n        return;\n    }\n    if (this.sortedAngle === angle) {\n        return;\n    }\n    if (this.text.segments.get().length > 1 || this.icon.segments.get().length > 1) {\n        return;\n    }\n    this.symbolInstanceIndexes = this.getSortedSymbolIndexes(angle);\n    this.sortedAngle = angle;\n    this.text.indexArray.clear();\n    this.icon.indexArray.clear();\n    this.featureSortOrder = [];\n    for (var i$1 = 0, list = this.symbolInstanceIndexes; i$1 < list.length; i$1 += 1) {\n        var i = list[i$1];\n        var symbolInstance = this.symbolInstances.get(i);\n        this.featureSortOrder.push(symbolInstance.featureIndex);\n        [\n            symbolInstance.rightJustifiedTextSymbolIndex,\n            symbolInstance.centerJustifiedTextSymbolIndex,\n            symbolInstance.leftJustifiedTextSymbolIndex\n        ].forEach(function (index, i, array) {\n            if (index >= 0 && array.indexOf(index) === i) {\n                this$1.addIndicesForPlacedSymbol(this$1.text, index);\n            }\n        });\n        if (symbolInstance.verticalPlacedTextSymbolIndex >= 0) {\n            this.addIndicesForPlacedSymbol(this.text, symbolInstance.verticalPlacedTextSymbolIndex);\n        }\n        if (symbolInstance.placedIconSymbolIndex >= 0) {\n            this.addIndicesForPlacedSymbol(this.icon, symbolInstance.placedIconSymbolIndex);\n        }\n        if (symbolInstance.verticalPlacedIconSymbolIndex >= 0) {\n            this.addIndicesForPlacedSymbol(this.icon, symbolInstance.verticalPlacedIconSymbolIndex);\n        }\n    }\n    if (this.text.indexBuffer) {\n        this.text.indexBuffer.updateData(this.text.indexArray);\n    }\n    if (this.icon.indexBuffer) {\n        this.icon.indexBuffer.updateData(this.icon.indexArray);\n    }\n};\nregister('SymbolBucket', SymbolBucket, {\n    omit: [\n        'layers',\n        'collisionBoxArray',\n        'features',\n        'compareText'\n    ]\n});\nSymbolBucket.MAX_GLYPHS = 65535;\nSymbolBucket.addDynamicAttributes = addDynamicAttributes;\n\nfunction resolveTokens(properties, text) {\n    return text.replace(/{([^{}]+)}/g, function (match, key) {\n        return key in properties ? String(properties[key]) : '';\n    });\n}\n\nvar layout$7 = new Properties({\n    'symbol-placement': new DataConstantProperty(spec['layout_symbol']['symbol-placement']),\n    'symbol-spacing': new DataConstantProperty(spec['layout_symbol']['symbol-spacing']),\n    'symbol-avoid-edges': new DataConstantProperty(spec['layout_symbol']['symbol-avoid-edges']),\n    'symbol-sort-key': new DataDrivenProperty(spec['layout_symbol']['symbol-sort-key']),\n    'symbol-z-order': new DataConstantProperty(spec['layout_symbol']['symbol-z-order']),\n    'icon-allow-overlap': new DataConstantProperty(spec['layout_symbol']['icon-allow-overlap']),\n    'icon-ignore-placement': new DataConstantProperty(spec['layout_symbol']['icon-ignore-placement']),\n    'icon-optional': new DataConstantProperty(spec['layout_symbol']['icon-optional']),\n    'icon-rotation-alignment': new DataConstantProperty(spec['layout_symbol']['icon-rotation-alignment']),\n    'icon-size': new DataDrivenProperty(spec['layout_symbol']['icon-size']),\n    'icon-text-fit': new DataConstantProperty(spec['layout_symbol']['icon-text-fit']),\n    'icon-text-fit-padding': new DataConstantProperty(spec['layout_symbol']['icon-text-fit-padding']),\n    'icon-image': new DataDrivenProperty(spec['layout_symbol']['icon-image']),\n    'icon-rotate': new DataDrivenProperty(spec['layout_symbol']['icon-rotate']),\n    'icon-padding': new DataConstantProperty(spec['layout_symbol']['icon-padding']),\n    'icon-keep-upright': new DataConstantProperty(spec['layout_symbol']['icon-keep-upright']),\n    'icon-offset': new DataDrivenProperty(spec['layout_symbol']['icon-offset']),\n    'icon-anchor': new DataDrivenProperty(spec['layout_symbol']['icon-anchor']),\n    'icon-pitch-alignment': new DataConstantProperty(spec['layout_symbol']['icon-pitch-alignment']),\n    'text-pitch-alignment': new DataConstantProperty(spec['layout_symbol']['text-pitch-alignment']),\n    'text-rotation-alignment': new DataConstantProperty(spec['layout_symbol']['text-rotation-alignment']),\n    'text-field': new DataDrivenProperty(spec['layout_symbol']['text-field']),\n    'text-font': new DataDrivenProperty(spec['layout_symbol']['text-font']),\n    'text-size': new DataDrivenProperty(spec['layout_symbol']['text-size']),\n    'text-max-width': new DataDrivenProperty(spec['layout_symbol']['text-max-width']),\n    'text-line-height': new DataConstantProperty(spec['layout_symbol']['text-line-height']),\n    'text-letter-spacing': new DataDrivenProperty(spec['layout_symbol']['text-letter-spacing']),\n    'text-justify': new DataDrivenProperty(spec['layout_symbol']['text-justify']),\n    'text-radial-offset': new DataDrivenProperty(spec['layout_symbol']['text-radial-offset']),\n    'text-variable-anchor': new DataConstantProperty(spec['layout_symbol']['text-variable-anchor']),\n    'text-anchor': new DataDrivenProperty(spec['layout_symbol']['text-anchor']),\n    'text-max-angle': new DataConstantProperty(spec['layout_symbol']['text-max-angle']),\n    'text-writing-mode': new DataConstantProperty(spec['layout_symbol']['text-writing-mode']),\n    'text-rotate': new DataDrivenProperty(spec['layout_symbol']['text-rotate']),\n    'text-padding': new DataConstantProperty(spec['layout_symbol']['text-padding']),\n    'text-keep-upright': new DataConstantProperty(spec['layout_symbol']['text-keep-upright']),\n    'text-transform': new DataDrivenProperty(spec['layout_symbol']['text-transform']),\n    'text-offset': new DataDrivenProperty(spec['layout_symbol']['text-offset']),\n    'text-allow-overlap': new DataConstantProperty(spec['layout_symbol']['text-allow-overlap']),\n    'text-ignore-placement': new DataConstantProperty(spec['layout_symbol']['text-ignore-placement']),\n    'text-optional': new DataConstantProperty(spec['layout_symbol']['text-optional'])\n});\nvar paint$7 = new Properties({\n    'icon-opacity': new DataDrivenProperty(spec['paint_symbol']['icon-opacity']),\n    'icon-color': new DataDrivenProperty(spec['paint_symbol']['icon-color']),\n    'icon-halo-color': new DataDrivenProperty(spec['paint_symbol']['icon-halo-color']),\n    'icon-halo-width': new DataDrivenProperty(spec['paint_symbol']['icon-halo-width']),\n    'icon-halo-blur': new DataDrivenProperty(spec['paint_symbol']['icon-halo-blur']),\n    'icon-translate': new DataConstantProperty(spec['paint_symbol']['icon-translate']),\n    'icon-translate-anchor': new DataConstantProperty(spec['paint_symbol']['icon-translate-anchor']),\n    'text-opacity': new DataDrivenProperty(spec['paint_symbol']['text-opacity']),\n    'text-color': new DataDrivenProperty(spec['paint_symbol']['text-color'], {\n        runtimeType: ColorType,\n        getOverride: function (o) {\n            return o.textColor;\n        },\n        hasOverride: function (o) {\n            return !!o.textColor;\n        }\n    }),\n    'text-halo-color': new DataDrivenProperty(spec['paint_symbol']['text-halo-color']),\n    'text-halo-width': new DataDrivenProperty(spec['paint_symbol']['text-halo-width']),\n    'text-halo-blur': new DataDrivenProperty(spec['paint_symbol']['text-halo-blur']),\n    'text-translate': new DataConstantProperty(spec['paint_symbol']['text-translate']),\n    'text-translate-anchor': new DataConstantProperty(spec['paint_symbol']['text-translate-anchor'])\n});\nvar properties$6 = {\n    paint: paint$7,\n    layout: layout$7\n};\n\nvar FormatSectionOverride = function FormatSectionOverride(defaultValue) {\n    this.type = defaultValue.property.overrides ? defaultValue.property.overrides.runtimeType : NullType;\n    this.defaultValue = defaultValue;\n};\nFormatSectionOverride.prototype.evaluate = function evaluate(ctx) {\n    if (ctx.formattedSection) {\n        var overrides = this.defaultValue.property.overrides;\n        if (overrides && overrides.hasOverride(ctx.formattedSection)) {\n            return overrides.getOverride(ctx.formattedSection);\n        }\n    }\n    if (ctx.feature && ctx.featureState) {\n        return this.defaultValue.evaluate(ctx.feature, ctx.featureState);\n    }\n    return this.defaultValue.property.specification.default;\n};\nFormatSectionOverride.prototype.eachChild = function eachChild(fn) {\n    if (!this.defaultValue.isConstant()) {\n        var expr = this.defaultValue.value;\n        fn(expr._styleExpression.expression);\n    }\n};\nFormatSectionOverride.prototype.outputDefined = function outputDefined() {\n    return false;\n};\nFormatSectionOverride.prototype.serialize = function serialize() {\n    return null;\n};\nregister('FormatSectionOverride', FormatSectionOverride, { omit: ['defaultValue'] });\n\nvar SymbolStyleLayer = function (StyleLayer) {\n    function SymbolStyleLayer(layer) {\n        StyleLayer.call(this, layer, properties$6);\n    }\n    if (StyleLayer)\n        SymbolStyleLayer.__proto__ = StyleLayer;\n    SymbolStyleLayer.prototype = Object.create(StyleLayer && StyleLayer.prototype);\n    SymbolStyleLayer.prototype.constructor = SymbolStyleLayer;\n    SymbolStyleLayer.prototype.recalculate = function recalculate(parameters, availableImages) {\n        StyleLayer.prototype.recalculate.call(this, parameters, availableImages);\n        if (this.layout.get('icon-rotation-alignment') === 'auto') {\n            if (this.layout.get('symbol-placement') !== 'point') {\n                this.layout._values['icon-rotation-alignment'] = 'map';\n            } else {\n                this.layout._values['icon-rotation-alignment'] = 'viewport';\n            }\n        }\n        if (this.layout.get('text-rotation-alignment') === 'auto') {\n            if (this.layout.get('symbol-placement') !== 'point') {\n                this.layout._values['text-rotation-alignment'] = 'map';\n            } else {\n                this.layout._values['text-rotation-alignment'] = 'viewport';\n            }\n        }\n        if (this.layout.get('text-pitch-alignment') === 'auto') {\n            this.layout._values['text-pitch-alignment'] = this.layout.get('text-rotation-alignment');\n        }\n        if (this.layout.get('icon-pitch-alignment') === 'auto') {\n            this.layout._values['icon-pitch-alignment'] = this.layout.get('icon-rotation-alignment');\n        }\n        if (this.layout.get('symbol-placement') === 'point') {\n            var writingModes = this.layout.get('text-writing-mode');\n            if (writingModes) {\n                var deduped = [];\n                for (var i = 0, list = writingModes; i < list.length; i += 1) {\n                    var m = list[i];\n                    if (deduped.indexOf(m) < 0) {\n                        deduped.push(m);\n                    }\n                }\n                this.layout._values['text-writing-mode'] = deduped;\n            } else {\n                this.layout._values['text-writing-mode'] = ['horizontal'];\n            }\n        }\n        this._setPaintOverrides();\n    };\n    SymbolStyleLayer.prototype.getValueAndResolveTokens = function getValueAndResolveTokens(name, feature, canonical, availableImages) {\n        var value = this.layout.get(name).evaluate(feature, {}, canonical, availableImages);\n        var unevaluated = this._unevaluatedLayout._values[name];\n        if (!unevaluated.isDataDriven() && !isExpression(unevaluated.value) && value) {\n            return resolveTokens(feature.properties, value);\n        }\n        return value;\n    };\n    SymbolStyleLayer.prototype.createBucket = function createBucket(parameters) {\n        return new SymbolBucket(parameters);\n    };\n    SymbolStyleLayer.prototype.queryRadius = function queryRadius() {\n        return 0;\n    };\n    SymbolStyleLayer.prototype.queryIntersectsFeature = function queryIntersectsFeature() {\n        return false;\n    };\n    SymbolStyleLayer.prototype._setPaintOverrides = function _setPaintOverrides() {\n        for (var i = 0, list = properties$6.paint.overridableProperties; i < list.length; i += 1) {\n            var overridable = list[i];\n            if (!SymbolStyleLayer.hasPaintOverride(this.layout, overridable)) {\n                continue;\n            }\n            var overriden = this.paint.get(overridable);\n            var override = new FormatSectionOverride(overriden);\n            var styleExpression = new StyleExpression(override, overriden.property.specification);\n            var expression = null;\n            if (overriden.value.kind === 'constant' || overriden.value.kind === 'source') {\n                expression = new ZoomConstantExpression('source', styleExpression);\n            } else {\n                expression = new ZoomDependentExpression('composite', styleExpression, overriden.value.zoomStops, overriden.value._interpolationType);\n            }\n            this.paint._values[overridable] = new PossiblyEvaluatedPropertyValue(overriden.property, expression, overriden.parameters);\n        }\n    };\n    SymbolStyleLayer.prototype._handleOverridablePaintPropertyUpdate = function _handleOverridablePaintPropertyUpdate(name, oldValue, newValue) {\n        if (!this.layout || oldValue.isDataDriven() || newValue.isDataDriven()) {\n            return false;\n        }\n        return SymbolStyleLayer.hasPaintOverride(this.layout, name);\n    };\n    SymbolStyleLayer.hasPaintOverride = function hasPaintOverride(layout, propertyName) {\n        var textField = layout.get('text-field');\n        var property = properties$6.paint.properties[propertyName];\n        var hasOverrides = false;\n        var checkSections = function (sections) {\n            for (var i = 0, list = sections; i < list.length; i += 1) {\n                var section = list[i];\n                if (property.overrides && property.overrides.hasOverride(section)) {\n                    hasOverrides = true;\n                    return;\n                }\n            }\n        };\n        if (textField.value.kind === 'constant' && textField.value.value instanceof Formatted) {\n            checkSections(textField.value.value.sections);\n        } else if (textField.value.kind === 'source') {\n            var checkExpression = function (expression) {\n                if (hasOverrides) {\n                    return;\n                }\n                if (expression instanceof Literal && typeOf(expression.value) === FormattedType) {\n                    var formatted = expression.value;\n                    checkSections(formatted.sections);\n                } else if (expression instanceof FormatExpression) {\n                    checkSections(expression.sections);\n                } else {\n                    expression.eachChild(checkExpression);\n                }\n            };\n            var expr = textField.value;\n            if (expr._styleExpression) {\n                checkExpression(expr._styleExpression.expression);\n            }\n        }\n        return hasOverrides;\n    };\n    return SymbolStyleLayer;\n}(StyleLayer);\n\nvar paint$8 = new Properties({\n    'background-color': new DataConstantProperty(spec['paint_background']['background-color']),\n    'background-pattern': new CrossFadedProperty(spec['paint_background']['background-pattern']),\n    'background-opacity': new DataConstantProperty(spec['paint_background']['background-opacity'])\n});\nvar properties$7 = { paint: paint$8 };\n\nvar BackgroundStyleLayer = function (StyleLayer) {\n    function BackgroundStyleLayer(layer) {\n        StyleLayer.call(this, layer, properties$7);\n    }\n    if (StyleLayer)\n        BackgroundStyleLayer.__proto__ = StyleLayer;\n    BackgroundStyleLayer.prototype = Object.create(StyleLayer && StyleLayer.prototype);\n    BackgroundStyleLayer.prototype.constructor = BackgroundStyleLayer;\n    return BackgroundStyleLayer;\n}(StyleLayer);\n\nvar paint$9 = new Properties({\n    'raster-opacity': new DataConstantProperty(spec['paint_raster']['raster-opacity']),\n    'raster-hue-rotate': new DataConstantProperty(spec['paint_raster']['raster-hue-rotate']),\n    'raster-brightness-min': new DataConstantProperty(spec['paint_raster']['raster-brightness-min']),\n    'raster-brightness-max': new DataConstantProperty(spec['paint_raster']['raster-brightness-max']),\n    'raster-saturation': new DataConstantProperty(spec['paint_raster']['raster-saturation']),\n    'raster-contrast': new DataConstantProperty(spec['paint_raster']['raster-contrast']),\n    'raster-resampling': new DataConstantProperty(spec['paint_raster']['raster-resampling']),\n    'raster-fade-duration': new DataConstantProperty(spec['paint_raster']['raster-fade-duration'])\n});\nvar properties$8 = { paint: paint$9 };\n\nvar RasterStyleLayer = function (StyleLayer) {\n    function RasterStyleLayer(layer) {\n        StyleLayer.call(this, layer, properties$8);\n    }\n    if (StyleLayer)\n        RasterStyleLayer.__proto__ = StyleLayer;\n    RasterStyleLayer.prototype = Object.create(StyleLayer && StyleLayer.prototype);\n    RasterStyleLayer.prototype.constructor = RasterStyleLayer;\n    return RasterStyleLayer;\n}(StyleLayer);\n\nfunction validateCustomStyleLayer(layerObject) {\n    var errors = [];\n    var id = layerObject.id;\n    if (id === undefined) {\n        errors.push({ message: 'layers.' + id + ': missing required property \"id\"' });\n    }\n    if (layerObject.render === undefined) {\n        errors.push({ message: 'layers.' + id + ': missing required method \"render\"' });\n    }\n    if (layerObject.renderingMode && layerObject.renderingMode !== '2d' && layerObject.renderingMode !== '3d') {\n        errors.push({ message: 'layers.' + id + ': property \"renderingMode\" must be either \"2d\" or \"3d\"' });\n    }\n    return errors;\n}\nvar CustomStyleLayer = function (StyleLayer) {\n    function CustomStyleLayer(implementation) {\n        StyleLayer.call(this, implementation, {});\n        this.implementation = implementation;\n    }\n    if (StyleLayer)\n        CustomStyleLayer.__proto__ = StyleLayer;\n    CustomStyleLayer.prototype = Object.create(StyleLayer && StyleLayer.prototype);\n    CustomStyleLayer.prototype.constructor = CustomStyleLayer;\n    CustomStyleLayer.prototype.is3D = function is3D() {\n        return this.implementation.renderingMode === '3d';\n    };\n    CustomStyleLayer.prototype.hasOffscreenPass = function hasOffscreenPass() {\n        return this.implementation.prerender !== undefined;\n    };\n    CustomStyleLayer.prototype.recalculate = function recalculate() {\n    };\n    CustomStyleLayer.prototype.updateTransitions = function updateTransitions() {\n    };\n    CustomStyleLayer.prototype.hasTransition = function hasTransition() {\n    };\n    CustomStyleLayer.prototype.serialize = function serialize() {\n    };\n    CustomStyleLayer.prototype.onAdd = function onAdd(map) {\n        if (this.implementation.onAdd) {\n            this.implementation.onAdd(map, map.painter.context.gl);\n        }\n    };\n    CustomStyleLayer.prototype.onRemove = function onRemove(map) {\n        if (this.implementation.onRemove) {\n            this.implementation.onRemove(map, map.painter.context.gl);\n        }\n    };\n    return CustomStyleLayer;\n}(StyleLayer);\n\nvar subclasses = {\n    circle: CircleStyleLayer,\n    heatmap: HeatmapStyleLayer,\n    hillshade: HillshadeStyleLayer,\n    fill: FillStyleLayer,\n    'fill-extrusion': FillExtrusionStyleLayer,\n    line: LineStyleLayer,\n    symbol: SymbolStyleLayer,\n    background: BackgroundStyleLayer,\n    raster: RasterStyleLayer\n};\nfunction createStyleLayer(layer) {\n    if (layer.type === 'custom') {\n        return new CustomStyleLayer(layer);\n    } else {\n        return new subclasses[layer.type](layer);\n    }\n}\n\nvar HTMLImageElement = self.HTMLImageElement;\nvar HTMLCanvasElement = self.HTMLCanvasElement;\nvar HTMLVideoElement = self.HTMLVideoElement;\nvar ImageData$1 = self.ImageData;\nvar ImageBitmap$1 = self.ImageBitmap;\nvar Texture = function Texture(context, image, format, options) {\n    this.context = context;\n    this.format = format;\n    this.texture = context.gl.createTexture();\n    this.update(image, options);\n};\nTexture.prototype.update = function update(image, options, position) {\n    var width = image.width;\n    var height = image.height;\n    var resize = (!this.size || this.size[0] !== width || this.size[1] !== height) && !position;\n    var ref = this;\n    var context = ref.context;\n    var gl = context.gl;\n    this.useMipmap = Boolean(options && options.useMipmap);\n    gl.bindTexture(gl.TEXTURE_2D, this.texture);\n    context.pixelStoreUnpackFlipY.set(false);\n    context.pixelStoreUnpack.set(1);\n    context.pixelStoreUnpackPremultiplyAlpha.set(this.format === gl.RGBA && (!options || options.premultiply !== false));\n    if (resize) {\n        this.size = [\n            width,\n            height\n        ];\n        if (image instanceof HTMLImageElement || image instanceof HTMLCanvasElement || image instanceof HTMLVideoElement || image instanceof ImageData$1 || ImageBitmap$1 && image instanceof ImageBitmap$1) {\n            gl.texImage2D(gl.TEXTURE_2D, 0, this.format, this.format, gl.UNSIGNED_BYTE, image);\n        } else {\n            gl.texImage2D(gl.TEXTURE_2D, 0, this.format, width, height, 0, this.format, gl.UNSIGNED_BYTE, image.data);\n        }\n    } else {\n        var ref$1 = position || {\n            x: 0,\n            y: 0\n        };\n        var x = ref$1.x;\n        var y = ref$1.y;\n        if (image instanceof HTMLImageElement || image instanceof HTMLCanvasElement || image instanceof HTMLVideoElement || image instanceof ImageData$1 || ImageBitmap$1 && image instanceof ImageBitmap$1) {\n            gl.texSubImage2D(gl.TEXTURE_2D, 0, x, y, gl.RGBA, gl.UNSIGNED_BYTE, image);\n        } else {\n            gl.texSubImage2D(gl.TEXTURE_2D, 0, x, y, width, height, gl.RGBA, gl.UNSIGNED_BYTE, image.data);\n        }\n    }\n    if (this.useMipmap && this.isSizePowerOfTwo()) {\n        gl.generateMipmap(gl.TEXTURE_2D);\n    }\n};\nTexture.prototype.bind = function bind(filter, wrap, minFilter) {\n    var ref = this;\n    var context = ref.context;\n    var gl = context.gl;\n    gl.bindTexture(gl.TEXTURE_2D, this.texture);\n    if (minFilter === gl.LINEAR_MIPMAP_NEAREST && !this.isSizePowerOfTwo()) {\n        minFilter = gl.LINEAR;\n    }\n    if (filter !== this.filter) {\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filter);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter || filter);\n        this.filter = filter;\n    }\n    if (wrap !== this.wrap) {\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, wrap);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, wrap);\n        this.wrap = wrap;\n    }\n};\nTexture.prototype.isSizePowerOfTwo = function isSizePowerOfTwo() {\n    return this.size[0] === this.size[1] && Math.log(this.size[0]) / Math.LN2 % 1 === 0;\n};\nTexture.prototype.destroy = function destroy() {\n    var ref = this.context;\n    var gl = ref.gl;\n    gl.deleteTexture(this.texture);\n    this.texture = null;\n};\n\nvar ThrottledInvoker = function ThrottledInvoker(callback) {\n    var this$1 = this;\n    this._callback = callback;\n    this._triggered = false;\n    if (typeof MessageChannel !== 'undefined') {\n        this._channel = new MessageChannel();\n        this._channel.port2.onmessage = function () {\n            this$1._triggered = false;\n            this$1._callback();\n        };\n    }\n};\nThrottledInvoker.prototype.trigger = function trigger() {\n    var this$1 = this;\n    if (!this._triggered) {\n        this._triggered = true;\n        if (this._channel) {\n            this._channel.port1.postMessage(true);\n        } else {\n            setTimeout(function () {\n                this$1._triggered = false;\n                this$1._callback();\n            }, 0);\n        }\n    }\n};\nThrottledInvoker.prototype.remove = function remove() {\n    delete this._channel;\n    this._callback = function () {\n    };\n};\n\nvar Actor = function Actor(target, parent, mapId) {\n    this.target = target;\n    this.parent = parent;\n    this.mapId = mapId;\n    this.callbacks = {};\n    this.tasks = {};\n    this.taskQueue = [];\n    this.cancelCallbacks = {};\n    bindAll([\n        'receive',\n        'process'\n    ], this);\n    this.invoker = new ThrottledInvoker(this.process);\n    this.target.addEventListener('message', this.receive, false);\n    this.globalScope = isWorker() ? target : self;\n};\nActor.prototype.send = function send(type, data, callback, targetMapId, mustQueue) {\n    var this$1 = this;\n    if (mustQueue === void 0)\n        mustQueue = false;\n    var id = Math.round(Math.random() * 1000000000000000000).toString(36).substring(0, 10);\n    if (callback) {\n        this.callbacks[id] = callback;\n    }\n    var buffers = isSafari(this.globalScope) ? undefined : [];\n    this.target.postMessage({\n        id: id,\n        type: type,\n        hasCallback: !!callback,\n        targetMapId: targetMapId,\n        mustQueue: mustQueue,\n        sourceMapId: this.mapId,\n        data: serialize(data, buffers)\n    }, buffers);\n    return {\n        cancel: function () {\n            if (callback) {\n                delete this$1.callbacks[id];\n            }\n            this$1.target.postMessage({\n                id: id,\n                type: '<cancel>',\n                targetMapId: targetMapId,\n                sourceMapId: this$1.mapId\n            });\n        }\n    };\n};\nActor.prototype.receive = function receive(message) {\n    var data = message.data, id = data.id;\n    if (!id) {\n        return;\n    }\n    if (data.targetMapId && this.mapId !== data.targetMapId) {\n        return;\n    }\n    if (data.type === '<cancel>') {\n        delete this.tasks[id];\n        var cancel = this.cancelCallbacks[id];\n        delete this.cancelCallbacks[id];\n        if (cancel) {\n            cancel();\n        }\n    } else {\n        if (isWorker() || data.mustQueue) {\n            this.tasks[id] = data;\n            this.taskQueue.push(id);\n            this.invoker.trigger();\n        } else {\n            this.processTask(id, data);\n        }\n    }\n};\nActor.prototype.process = function process() {\n    if (!this.taskQueue.length) {\n        return;\n    }\n    var id = this.taskQueue.shift();\n    var task = this.tasks[id];\n    delete this.tasks[id];\n    if (this.taskQueue.length) {\n        this.invoker.trigger();\n    }\n    if (!task) {\n        return;\n    }\n    this.processTask(id, task);\n};\nActor.prototype.processTask = function processTask(id, task) {\n    var this$1 = this;\n    if (task.type === '<response>') {\n        var callback = this.callbacks[id];\n        delete this.callbacks[id];\n        if (callback) {\n            if (task.error) {\n                callback(deserialize(task.error));\n            } else {\n                callback(null, deserialize(task.data));\n            }\n        }\n    } else {\n        var completed = false;\n        var buffers = isSafari(this.globalScope) ? undefined : [];\n        var done = task.hasCallback ? function (err, data) {\n            completed = true;\n            delete this$1.cancelCallbacks[id];\n            this$1.target.postMessage({\n                id: id,\n                type: '<response>',\n                sourceMapId: this$1.mapId,\n                error: err ? serialize(err) : null,\n                data: serialize(data, buffers)\n            }, buffers);\n        } : function (_) {\n            completed = true;\n        };\n        var callback$1 = null;\n        var params = deserialize(task.data);\n        if (this.parent[task.type]) {\n            callback$1 = this.parent[task.type](task.sourceMapId, params, done);\n        } else if (this.parent.getWorkerSource) {\n            var keys = task.type.split('.');\n            var scope = this.parent.getWorkerSource(task.sourceMapId, keys[0], params.source);\n            callback$1 = scope[keys[1]](params, done);\n        } else {\n            done(new Error('Could not find function ' + task.type));\n        }\n        if (!completed && callback$1 && callback$1.cancel) {\n            this.cancelCallbacks[id] = callback$1.cancel;\n        }\n    }\n};\nActor.prototype.remove = function remove() {\n    this.invoker.remove();\n    this.target.removeEventListener('message', this.receive, false);\n};\n\n/**\n * getTileBBox\n *\n * @param    {Number}  x  Tile coordinate x\n * @param    {Number}  y  Tile coordinate y\n * @param    {Number}  z  Tile zoom\n * @returns  {String}  String of the bounding box\n */\nfunction getTileBBox(x, y, z) {\n    // for Google/OSM tile scheme we need to alter the y\n    y = (Math.pow(2, z) - y - 1);\n\n    var min = getMercCoords(x * 256, y * 256, z),\n        max = getMercCoords((x + 1) * 256, (y + 1) * 256, z);\n\n    return min[0] + ',' + min[1] + ',' + max[0] + ',' + max[1];\n}\n\n\n/**\n * getMercCoords\n *\n * @param    {Number}  x  Pixel coordinate x\n * @param    {Number}  y  Pixel coordinate y\n * @param    {Number}  z  Tile zoom\n * @returns  {Array}   [x, y]\n */\nfunction getMercCoords(x, y, z) {\n    var resolution = (2 * Math.PI * 6378137 / 256) / Math.pow(2, z),\n        merc_x = (x * resolution - 2 * Math.PI  * 6378137 / 2.0),\n        merc_y = (y * resolution - 2 * Math.PI  * 6378137 / 2.0);\n\n    return [merc_x, merc_y];\n}\n\nvar LngLatBounds = function LngLatBounds(sw, ne) {\n    if (!sw) ; else if (ne) {\n        this.setSouthWest(sw).setNorthEast(ne);\n    } else if (sw.length === 4) {\n        this.setSouthWest([\n            sw[0],\n            sw[1]\n        ]).setNorthEast([\n            sw[2],\n            sw[3]\n        ]);\n    } else {\n        this.setSouthWest(sw[0]).setNorthEast(sw[1]);\n    }\n};\nLngLatBounds.prototype.setNorthEast = function setNorthEast(ne) {\n    this._ne = ne instanceof LngLat ? new LngLat(ne.lng, ne.lat) : LngLat.convert(ne);\n    return this;\n};\nLngLatBounds.prototype.setSouthWest = function setSouthWest(sw) {\n    this._sw = sw instanceof LngLat ? new LngLat(sw.lng, sw.lat) : LngLat.convert(sw);\n    return this;\n};\nLngLatBounds.prototype.extend = function extend(obj) {\n    var sw = this._sw, ne = this._ne;\n    var sw2, ne2;\n    if (obj instanceof LngLat) {\n        sw2 = obj;\n        ne2 = obj;\n    } else if (obj instanceof LngLatBounds) {\n        sw2 = obj._sw;\n        ne2 = obj._ne;\n        if (!sw2 || !ne2) {\n            return this;\n        }\n    } else {\n        if (Array.isArray(obj)) {\n            if (obj.length === 4 || obj.every(Array.isArray)) {\n                var lngLatBoundsObj = obj;\n                return this.extend(LngLatBounds.convert(lngLatBoundsObj));\n            } else {\n                var lngLatObj = obj;\n                return this.extend(LngLat.convert(lngLatObj));\n            }\n        }\n        return this;\n    }\n    if (!sw && !ne) {\n        this._sw = new LngLat(sw2.lng, sw2.lat);\n        this._ne = new LngLat(ne2.lng, ne2.lat);\n    } else {\n        sw.lng = Math.min(sw2.lng, sw.lng);\n        sw.lat = Math.min(sw2.lat, sw.lat);\n        ne.lng = Math.max(ne2.lng, ne.lng);\n        ne.lat = Math.max(ne2.lat, ne.lat);\n    }\n    return this;\n};\nLngLatBounds.prototype.getCenter = function getCenter() {\n    return new LngLat((this._sw.lng + this._ne.lng) / 2, (this._sw.lat + this._ne.lat) / 2);\n};\nLngLatBounds.prototype.getSouthWest = function getSouthWest() {\n    return this._sw;\n};\nLngLatBounds.prototype.getNorthEast = function getNorthEast() {\n    return this._ne;\n};\nLngLatBounds.prototype.getNorthWest = function getNorthWest() {\n    return new LngLat(this.getWest(), this.getNorth());\n};\nLngLatBounds.prototype.getSouthEast = function getSouthEast() {\n    return new LngLat(this.getEast(), this.getSouth());\n};\nLngLatBounds.prototype.getWest = function getWest() {\n    return this._sw.lng;\n};\nLngLatBounds.prototype.getSouth = function getSouth() {\n    return this._sw.lat;\n};\nLngLatBounds.prototype.getEast = function getEast() {\n    return this._ne.lng;\n};\nLngLatBounds.prototype.getNorth = function getNorth() {\n    return this._ne.lat;\n};\nLngLatBounds.prototype.toArray = function toArray() {\n    return [\n        this._sw.toArray(),\n        this._ne.toArray()\n    ];\n};\nLngLatBounds.prototype.toString = function toString() {\n    return 'LngLatBounds(' + this._sw.toString() + ', ' + this._ne.toString() + ')';\n};\nLngLatBounds.prototype.isEmpty = function isEmpty() {\n    return !(this._sw && this._ne);\n};\nLngLatBounds.prototype.contains = function contains(lnglat) {\n    var ref = LngLat.convert(lnglat);\n    var lng = ref.lng;\n    var lat = ref.lat;\n    var containsLatitude = this._sw.lat <= lat && lat <= this._ne.lat;\n    var containsLongitude = this._sw.lng <= lng && lng <= this._ne.lng;\n    if (this._sw.lng > this._ne.lng) {\n        containsLongitude = this._sw.lng >= lng && lng >= this._ne.lng;\n    }\n    return containsLatitude && containsLongitude;\n};\nLngLatBounds.convert = function convert(input) {\n    if (!input || input instanceof LngLatBounds) {\n        return input;\n    }\n    return new LngLatBounds(input);\n};\n\nvar earthRadius = 6371008.8;\nvar LngLat = function LngLat(lng, lat) {\n    if (isNaN(lng) || isNaN(lat)) {\n        throw new Error('Invalid LngLat object: (' + lng + ', ' + lat + ')');\n    }\n    this.lng = +lng;\n    this.lat = +lat;\n    if (this.lat > 90 || this.lat < -90) {\n        throw new Error('Invalid LngLat latitude value: must be between -90 and 90');\n    }\n};\nLngLat.prototype.wrap = function wrap$1() {\n    return new LngLat(wrap(this.lng, -180, 180), this.lat);\n};\nLngLat.prototype.toArray = function toArray() {\n    return [\n        this.lng,\n        this.lat\n    ];\n};\nLngLat.prototype.toString = function toString() {\n    return 'LngLat(' + this.lng + ', ' + this.lat + ')';\n};\nLngLat.prototype.distanceTo = function distanceTo(lngLat) {\n    var rad = Math.PI / 180;\n    var lat1 = this.lat * rad;\n    var lat2 = lngLat.lat * rad;\n    var a = Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos((lngLat.lng - this.lng) * rad);\n    var maxMeters = earthRadius * Math.acos(Math.min(a, 1));\n    return maxMeters;\n};\nLngLat.prototype.toBounds = function toBounds(radius) {\n    if (radius === void 0)\n        radius = 0;\n    var earthCircumferenceInMetersAtEquator = 40075017;\n    var latAccuracy = 360 * radius / earthCircumferenceInMetersAtEquator, lngAccuracy = latAccuracy / Math.cos(Math.PI / 180 * this.lat);\n    return new LngLatBounds(new LngLat(this.lng - lngAccuracy, this.lat - latAccuracy), new LngLat(this.lng + lngAccuracy, this.lat + latAccuracy));\n};\nLngLat.convert = function convert(input) {\n    if (input instanceof LngLat) {\n        return input;\n    }\n    if (Array.isArray(input) && (input.length === 2 || input.length === 3)) {\n        return new LngLat(Number(input[0]), Number(input[1]));\n    }\n    if (!Array.isArray(input) && typeof input === 'object' && input !== null) {\n        return new LngLat(Number('lng' in input ? input.lng : input.lon), Number(input.lat));\n    }\n    throw new Error('`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]');\n};\n\nvar earthCircumfrence = 2 * Math.PI * earthRadius;\nfunction circumferenceAtLatitude(latitude) {\n    return earthCircumfrence * Math.cos(latitude * Math.PI / 180);\n}\nfunction mercatorXfromLng$1(lng) {\n    return (180 + lng) / 360;\n}\nfunction mercatorYfromLat$1(lat) {\n    return (180 - 180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360))) / 360;\n}\nfunction mercatorZfromAltitude(altitude, lat) {\n    return altitude / circumferenceAtLatitude(lat);\n}\nfunction lngFromMercatorX(x) {\n    return x * 360 - 180;\n}\nfunction latFromMercatorY(y) {\n    var y2 = 180 - y * 360;\n    return 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90;\n}\nfunction altitudeFromMercatorZ(z, y) {\n    return z * circumferenceAtLatitude(latFromMercatorY(y));\n}\nfunction mercatorScale(lat) {\n    return 1 / Math.cos(lat * Math.PI / 180);\n}\nvar MercatorCoordinate = function MercatorCoordinate(x, y, z) {\n    if (z === void 0)\n        z = 0;\n    this.x = +x;\n    this.y = +y;\n    this.z = +z;\n};\nMercatorCoordinate.fromLngLat = function fromLngLat(lngLatLike, altitude) {\n    if (altitude === void 0)\n        altitude = 0;\n    var lngLat = LngLat.convert(lngLatLike);\n    return new MercatorCoordinate(mercatorXfromLng$1(lngLat.lng), mercatorYfromLat$1(lngLat.lat), mercatorZfromAltitude(altitude, lngLat.lat));\n};\nMercatorCoordinate.prototype.toLngLat = function toLngLat() {\n    return new LngLat(lngFromMercatorX(this.x), latFromMercatorY(this.y));\n};\nMercatorCoordinate.prototype.toAltitude = function toAltitude() {\n    return altitudeFromMercatorZ(this.z, this.y);\n};\nMercatorCoordinate.prototype.meterInMercatorCoordinateUnits = function meterInMercatorCoordinateUnits() {\n    return 1 / earthCircumfrence * mercatorScale(latFromMercatorY(this.y));\n};\n\nvar CanonicalTileID = function CanonicalTileID(z, x, y) {\n    this.z = z;\n    this.x = x;\n    this.y = y;\n    this.key = calculateKey(0, z, z, x, y);\n};\nCanonicalTileID.prototype.equals = function equals(id) {\n    return this.z === id.z && this.x === id.x && this.y === id.y;\n};\nCanonicalTileID.prototype.url = function url(urls, scheme) {\n    var bbox = getTileBBox(this.x, this.y, this.z);\n    var quadkey = getQuadkey(this.z, this.x, this.y);\n    return urls[(this.x + this.y) % urls.length].replace('{prefix}', (this.x % 16).toString(16) + (this.y % 16).toString(16)).replace('{z}', String(this.z)).replace('{x}', String(this.x)).replace('{y}', String(scheme === 'tms' ? Math.pow(2, this.z) - this.y - 1 : this.y)).replace('{quadkey}', quadkey).replace('{bbox-epsg-3857}', bbox);\n};\nCanonicalTileID.prototype.getTilePoint = function getTilePoint(coord) {\n    var tilesAtZoom = Math.pow(2, this.z);\n    return new pointGeometry((coord.x * tilesAtZoom - this.x) * EXTENT$1, (coord.y * tilesAtZoom - this.y) * EXTENT$1);\n};\nCanonicalTileID.prototype.toString = function toString() {\n    return this.z + '/' + this.x + '/' + this.y;\n};\nvar UnwrappedTileID = function UnwrappedTileID(wrap, canonical) {\n    this.wrap = wrap;\n    this.canonical = canonical;\n    this.key = calculateKey(wrap, canonical.z, canonical.z, canonical.x, canonical.y);\n};\nvar OverscaledTileID = function OverscaledTileID(overscaledZ, wrap, z, x, y) {\n    this.overscaledZ = overscaledZ;\n    this.wrap = wrap;\n    this.canonical = new CanonicalTileID(z, +x, +y);\n    this.key = calculateKey(wrap, overscaledZ, z, x, y);\n};\nOverscaledTileID.prototype.equals = function equals(id) {\n    return this.overscaledZ === id.overscaledZ && this.wrap === id.wrap && this.canonical.equals(id.canonical);\n};\nOverscaledTileID.prototype.scaledTo = function scaledTo(targetZ) {\n    var zDifference = this.canonical.z - targetZ;\n    if (targetZ > this.canonical.z) {\n        return new OverscaledTileID(targetZ, this.wrap, this.canonical.z, this.canonical.x, this.canonical.y);\n    } else {\n        return new OverscaledTileID(targetZ, this.wrap, targetZ, this.canonical.x >> zDifference, this.canonical.y >> zDifference);\n    }\n};\nOverscaledTileID.prototype.calculateScaledKey = function calculateScaledKey(targetZ, withWrap) {\n    var zDifference = this.canonical.z - targetZ;\n    if (targetZ > this.canonical.z) {\n        return calculateKey(this.wrap * +withWrap, targetZ, this.canonical.z, this.canonical.x, this.canonical.y);\n    } else {\n        return calculateKey(this.wrap * +withWrap, targetZ, targetZ, this.canonical.x >> zDifference, this.canonical.y >> zDifference);\n    }\n};\nOverscaledTileID.prototype.isChildOf = function isChildOf(parent) {\n    if (parent.wrap !== this.wrap) {\n        return false;\n    }\n    var zDifference = this.canonical.z - parent.canonical.z;\n    return parent.overscaledZ === 0 || parent.overscaledZ < this.overscaledZ && parent.canonical.x === this.canonical.x >> zDifference && parent.canonical.y === this.canonical.y >> zDifference;\n};\nOverscaledTileID.prototype.children = function children(sourceMaxZoom) {\n    if (this.overscaledZ >= sourceMaxZoom) {\n        return [new OverscaledTileID(this.overscaledZ + 1, this.wrap, this.canonical.z, this.canonical.x, this.canonical.y)];\n    }\n    var z = this.canonical.z + 1;\n    var x = this.canonical.x * 2;\n    var y = this.canonical.y * 2;\n    return [\n        new OverscaledTileID(z, this.wrap, z, x, y),\n        new OverscaledTileID(z, this.wrap, z, x + 1, y),\n        new OverscaledTileID(z, this.wrap, z, x, y + 1),\n        new OverscaledTileID(z, this.wrap, z, x + 1, y + 1)\n    ];\n};\nOverscaledTileID.prototype.isLessThan = function isLessThan(rhs) {\n    if (this.wrap < rhs.wrap) {\n        return true;\n    }\n    if (this.wrap > rhs.wrap) {\n        return false;\n    }\n    if (this.overscaledZ < rhs.overscaledZ) {\n        return true;\n    }\n    if (this.overscaledZ > rhs.overscaledZ) {\n        return false;\n    }\n    if (this.canonical.x < rhs.canonical.x) {\n        return true;\n    }\n    if (this.canonical.x > rhs.canonical.x) {\n        return false;\n    }\n    if (this.canonical.y < rhs.canonical.y) {\n        return true;\n    }\n    return false;\n};\nOverscaledTileID.prototype.wrapped = function wrapped() {\n    return new OverscaledTileID(this.overscaledZ, 0, this.canonical.z, this.canonical.x, this.canonical.y);\n};\nOverscaledTileID.prototype.unwrapTo = function unwrapTo(wrap) {\n    return new OverscaledTileID(this.overscaledZ, wrap, this.canonical.z, this.canonical.x, this.canonical.y);\n};\nOverscaledTileID.prototype.overscaleFactor = function overscaleFactor() {\n    return Math.pow(2, this.overscaledZ - this.canonical.z);\n};\nOverscaledTileID.prototype.toUnwrapped = function toUnwrapped() {\n    return new UnwrappedTileID(this.wrap, this.canonical);\n};\nOverscaledTileID.prototype.toString = function toString() {\n    return this.overscaledZ + '/' + this.canonical.x + '/' + this.canonical.y;\n};\nOverscaledTileID.prototype.getTilePoint = function getTilePoint(coord) {\n    return this.canonical.getTilePoint(new MercatorCoordinate(coord.x - this.wrap, coord.y));\n};\nfunction calculateKey(wrap, overscaledZ, z, x, y) {\n    wrap *= 2;\n    if (wrap < 0) {\n        wrap = wrap * -1 - 1;\n    }\n    var dim = 1 << z;\n    return (dim * dim * wrap + dim * y + x).toString(36) + z.toString(36) + overscaledZ.toString(36);\n}\nfunction getQuadkey(z, x, y) {\n    var quadkey = '', mask;\n    for (var i = z; i > 0; i--) {\n        mask = 1 << i - 1;\n        quadkey += (x & mask ? 1 : 0) + (y & mask ? 2 : 0);\n    }\n    return quadkey;\n}\nregister('CanonicalTileID', CanonicalTileID);\nregister('OverscaledTileID', OverscaledTileID, { omit: ['posMatrix'] });\n\nvar DEMData = function DEMData(uid, data, encoding) {\n    this.uid = uid;\n    if (data.height !== data.width) {\n        throw new RangeError('DEM tiles must be square');\n    }\n    if (encoding && encoding !== 'mapbox' && encoding !== 'terrarium') {\n        return warnOnce('\"' + encoding + '\" is not a valid encoding type. Valid types include \"mapbox\" and \"terrarium\".');\n    }\n    this.stride = data.height;\n    var dim = this.dim = data.height - 2;\n    this.data = new Uint32Array(data.data.buffer);\n    this.encoding = encoding || 'mapbox';\n    for (var x = 0; x < dim; x++) {\n        this.data[this._idx(-1, x)] = this.data[this._idx(0, x)];\n        this.data[this._idx(dim, x)] = this.data[this._idx(dim - 1, x)];\n        this.data[this._idx(x, -1)] = this.data[this._idx(x, 0)];\n        this.data[this._idx(x, dim)] = this.data[this._idx(x, dim - 1)];\n    }\n    this.data[this._idx(-1, -1)] = this.data[this._idx(0, 0)];\n    this.data[this._idx(dim, -1)] = this.data[this._idx(dim - 1, 0)];\n    this.data[this._idx(-1, dim)] = this.data[this._idx(0, dim - 1)];\n    this.data[this._idx(dim, dim)] = this.data[this._idx(dim - 1, dim - 1)];\n};\nDEMData.prototype.get = function get(x, y) {\n    var pixels = new Uint8Array(this.data.buffer);\n    var index = this._idx(x, y) * 4;\n    var unpack = this.encoding === 'terrarium' ? this._unpackTerrarium : this._unpackMapbox;\n    return unpack(pixels[index], pixels[index + 1], pixels[index + 2]);\n};\nDEMData.prototype.getUnpackVector = function getUnpackVector() {\n    return this.encoding === 'terrarium' ? [\n        256,\n        1,\n        1 / 256,\n        32768\n    ] : [\n        6553.6,\n        25.6,\n        0.1,\n        10000\n    ];\n};\nDEMData.prototype._idx = function _idx(x, y) {\n    if (x < -1 || x >= this.dim + 1 || y < -1 || y >= this.dim + 1) {\n        throw new RangeError('out of range source coordinates for DEM data');\n    }\n    return (y + 1) * this.stride + (x + 1);\n};\nDEMData.prototype._unpackMapbox = function _unpackMapbox(r, g, b) {\n    return (r * 256 * 256 + g * 256 + b) / 10 - 10000;\n};\nDEMData.prototype._unpackTerrarium = function _unpackTerrarium(r, g, b) {\n    return r * 256 + g + b / 256 - 32768;\n};\nDEMData.prototype.getPixels = function getPixels() {\n    return new RGBAImage({\n        width: this.stride,\n        height: this.stride\n    }, new Uint8Array(this.data.buffer));\n};\nDEMData.prototype.backfillBorder = function backfillBorder(borderTile, dx, dy) {\n    if (this.dim !== borderTile.dim) {\n        throw new Error('dem dimension mismatch');\n    }\n    var xMin = dx * this.dim, xMax = dx * this.dim + this.dim, yMin = dy * this.dim, yMax = dy * this.dim + this.dim;\n    switch (dx) {\n    case -1:\n        xMin = xMax - 1;\n        break;\n    case 1:\n        xMax = xMin + 1;\n        break;\n    }\n    switch (dy) {\n    case -1:\n        yMin = yMax - 1;\n        break;\n    case 1:\n        yMax = yMin + 1;\n        break;\n    }\n    var ox = -dx * this.dim;\n    var oy = -dy * this.dim;\n    for (var y = yMin; y < yMax; y++) {\n        for (var x = xMin; x < xMax; x++) {\n            this.data[this._idx(x, y)] = borderTile.data[this._idx(x + ox, y + oy)];\n        }\n    }\n};\nregister('DEMData', DEMData);\n\nfunction deserialize$1(input, style) {\n    var output = {};\n    if (!style) {\n        return output;\n    }\n    var loop = function () {\n        var bucket = list$1[i$1];\n        var layers = bucket.layerIds.map(function (id) {\n            return style.getLayer(id);\n        }).filter(Boolean);\n        if (layers.length === 0) {\n            return;\n        }\n        bucket.layers = layers;\n        if (bucket.stateDependentLayerIds) {\n            bucket.stateDependentLayers = bucket.stateDependentLayerIds.map(function (lId) {\n                return layers.filter(function (l) {\n                    return l.id === lId;\n                })[0];\n            });\n        }\n        for (var i = 0, list = layers; i < list.length; i += 1) {\n            var layer = list[i];\n            output[layer.id] = bucket;\n        }\n    };\n    for (var i$1 = 0, list$1 = input; i$1 < list$1.length; i$1 += 1)\n        loop();\n    return output;\n}\n\nvar DictionaryCoder = function DictionaryCoder(strings) {\n    this._stringToNumber = {};\n    this._numberToString = [];\n    for (var i = 0; i < strings.length; i++) {\n        var string = strings[i];\n        this._stringToNumber[string] = i;\n        this._numberToString[i] = string;\n    }\n};\nDictionaryCoder.prototype.encode = function encode(string) {\n    return this._stringToNumber[string];\n};\nDictionaryCoder.prototype.decode = function decode(n) {\n    return this._numberToString[n];\n};\n\nvar Feature = function Feature(vectorTileFeature, z, x, y, id) {\n    this.type = 'Feature';\n    this._vectorTileFeature = vectorTileFeature;\n    vectorTileFeature._z = z;\n    vectorTileFeature._x = x;\n    vectorTileFeature._y = y;\n    this.properties = vectorTileFeature.properties;\n    this.id = id;\n};\nvar prototypeAccessors$1 = { geometry: { configurable: true } };\nprototypeAccessors$1.geometry.get = function () {\n    if (this._geometry === undefined) {\n        this._geometry = this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x, this._vectorTileFeature._y, this._vectorTileFeature._z).geometry;\n    }\n    return this._geometry;\n};\nprototypeAccessors$1.geometry.set = function (g) {\n    this._geometry = g;\n};\nFeature.prototype.toJSON = function toJSON() {\n    var json = { geometry: this.geometry };\n    for (var i in this) {\n        if (i === '_geometry' || i === '_vectorTileFeature') {\n            continue;\n        }\n        json[i] = this[i];\n    }\n    return json;\n};\nObject.defineProperties(Feature.prototype, prototypeAccessors$1);\n\nvar SourceFeatureState = function SourceFeatureState() {\n    this.state = {};\n    this.stateChanges = {};\n    this.deletedStates = {};\n};\nSourceFeatureState.prototype.updateState = function updateState(sourceLayer, featureId, newState) {\n    var feature = String(featureId);\n    this.stateChanges[sourceLayer] = this.stateChanges[sourceLayer] || {};\n    this.stateChanges[sourceLayer][feature] = this.stateChanges[sourceLayer][feature] || {};\n    extend(this.stateChanges[sourceLayer][feature], newState);\n    if (this.deletedStates[sourceLayer] === null) {\n        this.deletedStates[sourceLayer] = {};\n        for (var ft in this.state[sourceLayer]) {\n            if (ft !== feature) {\n                this.deletedStates[sourceLayer][ft] = null;\n            }\n        }\n    } else {\n        var featureDeletionQueued = this.deletedStates[sourceLayer] && this.deletedStates[sourceLayer][feature] === null;\n        if (featureDeletionQueued) {\n            this.deletedStates[sourceLayer][feature] = {};\n            for (var prop in this.state[sourceLayer][feature]) {\n                if (!newState[prop]) {\n                    this.deletedStates[sourceLayer][feature][prop] = null;\n                }\n            }\n        } else {\n            for (var key in newState) {\n                var deletionInQueue = this.deletedStates[sourceLayer] && this.deletedStates[sourceLayer][feature] && this.deletedStates[sourceLayer][feature][key] === null;\n                if (deletionInQueue) {\n                    delete this.deletedStates[sourceLayer][feature][key];\n                }\n            }\n        }\n    }\n};\nSourceFeatureState.prototype.removeFeatureState = function removeFeatureState(sourceLayer, featureId, key) {\n    var sourceLayerDeleted = this.deletedStates[sourceLayer] === null;\n    if (sourceLayerDeleted) {\n        return;\n    }\n    var feature = String(featureId);\n    this.deletedStates[sourceLayer] = this.deletedStates[sourceLayer] || {};\n    if (key && featureId !== undefined) {\n        if (this.deletedStates[sourceLayer][feature] !== null) {\n            this.deletedStates[sourceLayer][feature] = this.deletedStates[sourceLayer][feature] || {};\n            this.deletedStates[sourceLayer][feature][key] = null;\n        }\n    } else if (featureId !== undefined) {\n        var updateInQueue = this.stateChanges[sourceLayer] && this.stateChanges[sourceLayer][feature];\n        if (updateInQueue) {\n            this.deletedStates[sourceLayer][feature] = {};\n            for (key in this.stateChanges[sourceLayer][feature]) {\n                this.deletedStates[sourceLayer][feature][key] = null;\n            }\n        } else {\n            this.deletedStates[sourceLayer][feature] = null;\n        }\n    } else {\n        this.deletedStates[sourceLayer] = null;\n    }\n};\nSourceFeatureState.prototype.getState = function getState(sourceLayer, featureId) {\n    var feature = String(featureId);\n    var base = this.state[sourceLayer] || {};\n    var changes = this.stateChanges[sourceLayer] || {};\n    var reconciledState = extend({}, base[feature], changes[feature]);\n    if (this.deletedStates[sourceLayer] === null) {\n        return {};\n    } else if (this.deletedStates[sourceLayer]) {\n        var featureDeletions = this.deletedStates[sourceLayer][featureId];\n        if (featureDeletions === null) {\n            return {};\n        }\n        for (var prop in featureDeletions) {\n            delete reconciledState[prop];\n        }\n    }\n    return reconciledState;\n};\nSourceFeatureState.prototype.initializeTileState = function initializeTileState(tile, painter) {\n    tile.setFeatureState(this.state, painter);\n};\nSourceFeatureState.prototype.coalesceChanges = function coalesceChanges(tiles, painter) {\n    var featuresChanged = {};\n    for (var sourceLayer in this.stateChanges) {\n        this.state[sourceLayer] = this.state[sourceLayer] || {};\n        var layerStates = {};\n        for (var feature in this.stateChanges[sourceLayer]) {\n            if (!this.state[sourceLayer][feature]) {\n                this.state[sourceLayer][feature] = {};\n            }\n            extend(this.state[sourceLayer][feature], this.stateChanges[sourceLayer][feature]);\n            layerStates[feature] = this.state[sourceLayer][feature];\n        }\n        featuresChanged[sourceLayer] = layerStates;\n    }\n    for (var sourceLayer$1 in this.deletedStates) {\n        this.state[sourceLayer$1] = this.state[sourceLayer$1] || {};\n        var layerStates$1 = {};\n        if (this.deletedStates[sourceLayer$1] === null) {\n            for (var ft in this.state[sourceLayer$1]) {\n                layerStates$1[ft] = {};\n                this.state[sourceLayer$1][ft] = {};\n            }\n        } else {\n            for (var feature$1 in this.deletedStates[sourceLayer$1]) {\n                var deleteWholeFeatureState = this.deletedStates[sourceLayer$1][feature$1] === null;\n                if (deleteWholeFeatureState) {\n                    this.state[sourceLayer$1][feature$1] = {};\n                } else {\n                    for (var i = 0, list = Object.keys(this.deletedStates[sourceLayer$1][feature$1]); i < list.length; i += 1) {\n                        var key = list[i];\n                        delete this.state[sourceLayer$1][feature$1][key];\n                    }\n                }\n                layerStates$1[feature$1] = this.state[sourceLayer$1][feature$1];\n            }\n        }\n        featuresChanged[sourceLayer$1] = featuresChanged[sourceLayer$1] || {};\n        extend(featuresChanged[sourceLayer$1], layerStates$1);\n    }\n    this.stateChanges = {};\n    this.deletedStates = {};\n    if (Object.keys(featuresChanged).length === 0) {\n        return;\n    }\n    for (var id in tiles) {\n        var tile = tiles[id];\n        tile.setFeatureState(featuresChanged, painter);\n    }\n};\n\nvar FeatureIndex = function FeatureIndex(tileID, promoteId) {\n    this.tileID = tileID;\n    this.x = tileID.canonical.x;\n    this.y = tileID.canonical.y;\n    this.z = tileID.canonical.z;\n    this.grid = new gridIndex(EXTENT$1, 16, 0);\n    this.grid3D = new gridIndex(EXTENT$1, 16, 0);\n    this.featureIndexArray = new FeatureIndexArray();\n    this.promoteId = promoteId;\n};\nFeatureIndex.prototype.insert = function insert(feature, geometry, featureIndex, sourceLayerIndex, bucketIndex, is3D) {\n    var key = this.featureIndexArray.length;\n    this.featureIndexArray.emplaceBack(featureIndex, sourceLayerIndex, bucketIndex);\n    var grid = is3D ? this.grid3D : this.grid;\n    for (var r = 0; r < geometry.length; r++) {\n        var ring = geometry[r];\n        var bbox = [\n            Infinity,\n            Infinity,\n            -Infinity,\n            -Infinity\n        ];\n        for (var i = 0; i < ring.length; i++) {\n            var p = ring[i];\n            bbox[0] = Math.min(bbox[0], p.x);\n            bbox[1] = Math.min(bbox[1], p.y);\n            bbox[2] = Math.max(bbox[2], p.x);\n            bbox[3] = Math.max(bbox[3], p.y);\n        }\n        if (bbox[0] < EXTENT$1 && bbox[1] < EXTENT$1 && bbox[2] >= 0 && bbox[3] >= 0) {\n            grid.insert(key, bbox[0], bbox[1], bbox[2], bbox[3]);\n        }\n    }\n};\nFeatureIndex.prototype.loadVTLayers = function loadVTLayers() {\n    if (!this.vtLayers) {\n        this.vtLayers = new vectorTile.VectorTile(new pbf(this.rawTileData)).layers;\n        this.sourceLayerCoder = new DictionaryCoder(this.vtLayers ? Object.keys(this.vtLayers).sort() : ['_geojsonTileLayer']);\n    }\n    return this.vtLayers;\n};\nFeatureIndex.prototype.query = function query(args, styleLayers, serializedLayers, sourceFeatureState) {\n    var this$1 = this;\n    this.loadVTLayers();\n    var params = args.params || {}, pixelsToTileUnits = EXTENT$1 / args.tileSize / args.scale, filter = createFilter(params.filter);\n    var queryGeometry = args.queryGeometry;\n    var queryPadding = args.queryPadding * pixelsToTileUnits;\n    var bounds = getBounds(queryGeometry);\n    var matching = this.grid.query(bounds.minX - queryPadding, bounds.minY - queryPadding, bounds.maxX + queryPadding, bounds.maxY + queryPadding);\n    var cameraBounds = getBounds(args.cameraQueryGeometry);\n    var matching3D = this.grid3D.query(cameraBounds.minX - queryPadding, cameraBounds.minY - queryPadding, cameraBounds.maxX + queryPadding, cameraBounds.maxY + queryPadding, function (bx1, by1, bx2, by2) {\n        return polygonIntersectsBox(args.cameraQueryGeometry, bx1 - queryPadding, by1 - queryPadding, bx2 + queryPadding, by2 + queryPadding);\n    });\n    for (var i = 0, list = matching3D; i < list.length; i += 1) {\n        var key = list[i];\n        matching.push(key);\n    }\n    matching.sort(topDownFeatureComparator);\n    var result = {};\n    var previousIndex;\n    var loop = function (k) {\n        var index = matching[k];\n        if (index === previousIndex) {\n            return;\n        }\n        previousIndex = index;\n        var match = this$1.featureIndexArray.get(index);\n        var featureGeometry = null;\n        this$1.loadMatchingFeature(result, match.bucketIndex, match.sourceLayerIndex, match.featureIndex, filter, params.layers, params.availableImages, styleLayers, serializedLayers, sourceFeatureState, function (feature, styleLayer, featureState) {\n            if (!featureGeometry) {\n                featureGeometry = loadGeometry(feature);\n            }\n            return styleLayer.queryIntersectsFeature(queryGeometry, feature, featureState, featureGeometry, this$1.z, args.transform, pixelsToTileUnits, args.pixelPosMatrix);\n        });\n    };\n    for (var k = 0; k < matching.length; k++)\n        loop(k);\n    return result;\n};\nFeatureIndex.prototype.loadMatchingFeature = function loadMatchingFeature(result, bucketIndex, sourceLayerIndex, featureIndex, filter, filterLayerIDs, availableImages, styleLayers, serializedLayers, sourceFeatureState, intersectionTest) {\n    var layerIDs = this.bucketLayerIDs[bucketIndex];\n    if (filterLayerIDs && !arraysIntersect(filterLayerIDs, layerIDs)) {\n        return;\n    }\n    var sourceLayerName = this.sourceLayerCoder.decode(sourceLayerIndex);\n    var sourceLayer = this.vtLayers[sourceLayerName];\n    var feature = sourceLayer.feature(featureIndex);\n    if (!filter.filter(new EvaluationParameters(this.tileID.overscaledZ), feature)) {\n        return;\n    }\n    var id = this.getId(feature, sourceLayerName);\n    for (var l = 0; l < layerIDs.length; l++) {\n        var layerID = layerIDs[l];\n        if (filterLayerIDs && filterLayerIDs.indexOf(layerID) < 0) {\n            continue;\n        }\n        var styleLayer = styleLayers[layerID];\n        if (!styleLayer) {\n            continue;\n        }\n        var featureState = {};\n        if (id !== undefined && sourceFeatureState) {\n            featureState = sourceFeatureState.getState(styleLayer.sourceLayer || '_geojsonTileLayer', id);\n        }\n        var serializedLayer = serializedLayers[layerID];\n        serializedLayer.paint = evaluateProperties(serializedLayer.paint, styleLayer.paint, feature, featureState, availableImages);\n        serializedLayer.layout = evaluateProperties(serializedLayer.layout, styleLayer.layout, feature, featureState, availableImages);\n        var intersectionZ = !intersectionTest || intersectionTest(feature, styleLayer, featureState);\n        if (!intersectionZ) {\n            continue;\n        }\n        var geojsonFeature = new Feature(feature, this.z, this.x, this.y, id);\n        geojsonFeature.layer = serializedLayer;\n        var layerResult = result[layerID];\n        if (layerResult === undefined) {\n            layerResult = result[layerID] = [];\n        }\n        layerResult.push({\n            featureIndex: featureIndex,\n            feature: geojsonFeature,\n            intersectionZ: intersectionZ\n        });\n    }\n};\nFeatureIndex.prototype.lookupSymbolFeatures = function lookupSymbolFeatures(symbolFeatureIndexes, serializedLayers, bucketIndex, sourceLayerIndex, filterSpec, filterLayerIDs, availableImages, styleLayers) {\n    var result = {};\n    this.loadVTLayers();\n    var filter = createFilter(filterSpec);\n    for (var i = 0, list = symbolFeatureIndexes; i < list.length; i += 1) {\n        var symbolFeatureIndex = list[i];\n        this.loadMatchingFeature(result, bucketIndex, sourceLayerIndex, symbolFeatureIndex, filter, filterLayerIDs, availableImages, styleLayers, serializedLayers);\n    }\n    return result;\n};\nFeatureIndex.prototype.hasLayer = function hasLayer(id) {\n    for (var i$1 = 0, list$1 = this.bucketLayerIDs; i$1 < list$1.length; i$1 += 1) {\n        var layerIDs = list$1[i$1];\n        for (var i = 0, list = layerIDs; i < list.length; i += 1) {\n            var layerID = list[i];\n            if (id === layerID) {\n                return true;\n            }\n        }\n    }\n    return false;\n};\nFeatureIndex.prototype.getId = function getId(feature, sourceLayerId) {\n    var id = feature.id;\n    if (this.promoteId) {\n        var propName = typeof this.promoteId === 'string' ? this.promoteId : this.promoteId[sourceLayerId];\n        id = feature.properties[propName];\n        if (typeof id === 'boolean') {\n            id = Number(id);\n        }\n    }\n    return id;\n};\nregister('FeatureIndex', FeatureIndex, {\n    omit: [\n        'rawTileData',\n        'sourceLayerCoder'\n    ]\n});\nfunction evaluateProperties(serializedProperties, styleLayerProperties, feature, featureState, availableImages) {\n    return mapObject(serializedProperties, function (property, key) {\n        var prop = styleLayerProperties instanceof PossiblyEvaluated ? styleLayerProperties.get(key) : null;\n        return prop && prop.evaluate ? prop.evaluate(feature, featureState, availableImages) : prop;\n    });\n}\nfunction getBounds(geometry) {\n    var minX = Infinity;\n    var minY = Infinity;\n    var maxX = -Infinity;\n    var maxY = -Infinity;\n    for (var i = 0, list = geometry; i < list.length; i += 1) {\n        var p = list[i];\n        minX = Math.min(minX, p.x);\n        minY = Math.min(minY, p.y);\n        maxX = Math.max(maxX, p.x);\n        maxY = Math.max(maxY, p.y);\n    }\n    return {\n        minX: minX,\n        minY: minY,\n        maxX: maxX,\n        maxY: maxY\n    };\n}\nfunction topDownFeatureComparator(a, b) {\n    return b - a;\n}\n\nvar CLOCK_SKEW_RETRY_TIMEOUT = 30000;\nvar Tile = function Tile(tileID, size) {\n    this.tileID = tileID;\n    this.uid = uniqueId();\n    this.uses = 0;\n    this.tileSize = size;\n    this.buckets = {};\n    this.expirationTime = null;\n    this.queryPadding = 0;\n    this.hasSymbolBuckets = false;\n    this.hasRTLText = false;\n    this.dependencies = {};\n    this.expiredRequestCount = 0;\n    this.state = 'loading';\n};\nTile.prototype.registerFadeDuration = function registerFadeDuration(duration) {\n    var fadeEndTime = duration + this.timeAdded;\n    if (fadeEndTime < exported.now()) {\n        return;\n    }\n    if (this.fadeEndTime && fadeEndTime < this.fadeEndTime) {\n        return;\n    }\n    this.fadeEndTime = fadeEndTime;\n};\nTile.prototype.wasRequested = function wasRequested() {\n    return this.state === 'errored' || this.state === 'loaded' || this.state === 'reloading';\n};\nTile.prototype.loadVectorData = function loadVectorData(data, painter, justReloaded) {\n    if (this.hasData()) {\n        this.unloadVectorData();\n    }\n    this.state = 'loaded';\n    if (!data) {\n        this.collisionBoxArray = new CollisionBoxArray();\n        return;\n    }\n    if (data.featureIndex) {\n        this.latestFeatureIndex = data.featureIndex;\n        if (data.rawTileData) {\n            this.latestRawTileData = data.rawTileData;\n            this.latestFeatureIndex.rawTileData = data.rawTileData;\n        } else if (this.latestRawTileData) {\n            this.latestFeatureIndex.rawTileData = this.latestRawTileData;\n        }\n    }\n    this.collisionBoxArray = data.collisionBoxArray;\n    this.buckets = deserialize$1(data.buckets, painter.style);\n    this.hasSymbolBuckets = false;\n    for (var id in this.buckets) {\n        var bucket = this.buckets[id];\n        if (bucket instanceof SymbolBucket) {\n            this.hasSymbolBuckets = true;\n            if (justReloaded) {\n                bucket.justReloaded = true;\n            } else {\n                break;\n            }\n        }\n    }\n    this.hasRTLText = false;\n    if (this.hasSymbolBuckets) {\n        for (var id$1 in this.buckets) {\n            var bucket$1 = this.buckets[id$1];\n            if (bucket$1 instanceof SymbolBucket) {\n                if (bucket$1.hasRTLText) {\n                    this.hasRTLText = true;\n                    lazyLoadRTLTextPlugin();\n                    break;\n                }\n            }\n        }\n    }\n    this.queryPadding = 0;\n    for (var id$2 in this.buckets) {\n        var bucket$2 = this.buckets[id$2];\n        this.queryPadding = Math.max(this.queryPadding, painter.style.getLayer(id$2).queryRadius(bucket$2));\n    }\n    if (data.imageAtlas) {\n        this.imageAtlas = data.imageAtlas;\n    }\n    if (data.glyphAtlasImage) {\n        this.glyphAtlasImage = data.glyphAtlasImage;\n    }\n};\nTile.prototype.unloadVectorData = function unloadVectorData() {\n    for (var id in this.buckets) {\n        this.buckets[id].destroy();\n    }\n    this.buckets = {};\n    if (this.imageAtlasTexture) {\n        this.imageAtlasTexture.destroy();\n    }\n    if (this.imageAtlas) {\n        this.imageAtlas = null;\n    }\n    if (this.glyphAtlasTexture) {\n        this.glyphAtlasTexture.destroy();\n    }\n    this.latestFeatureIndex = null;\n    this.state = 'unloaded';\n};\nTile.prototype.getBucket = function getBucket(layer) {\n    return this.buckets[layer.id];\n};\nTile.prototype.upload = function upload(context) {\n    for (var id in this.buckets) {\n        var bucket = this.buckets[id];\n        if (bucket.uploadPending()) {\n            bucket.upload(context);\n        }\n    }\n    var gl = context.gl;\n    if (this.imageAtlas && !this.imageAtlas.uploaded) {\n        this.imageAtlasTexture = new Texture(context, this.imageAtlas.image, gl.RGBA);\n        this.imageAtlas.uploaded = true;\n    }\n    if (this.glyphAtlasImage) {\n        this.glyphAtlasTexture = new Texture(context, this.glyphAtlasImage, gl.ALPHA);\n        this.glyphAtlasImage = null;\n    }\n};\nTile.prototype.prepare = function prepare(imageManager) {\n    if (this.imageAtlas) {\n        this.imageAtlas.patchUpdatedImages(imageManager, this.imageAtlasTexture);\n    }\n};\nTile.prototype.queryRenderedFeatures = function queryRenderedFeatures(layers, serializedLayers, sourceFeatureState, queryGeometry, cameraQueryGeometry, scale, params, transform, maxPitchScaleFactor, pixelPosMatrix) {\n    if (!this.latestFeatureIndex || !this.latestFeatureIndex.rawTileData) {\n        return {};\n    }\n    return this.latestFeatureIndex.query({\n        queryGeometry: queryGeometry,\n        cameraQueryGeometry: cameraQueryGeometry,\n        scale: scale,\n        tileSize: this.tileSize,\n        pixelPosMatrix: pixelPosMatrix,\n        transform: transform,\n        params: params,\n        queryPadding: this.queryPadding * maxPitchScaleFactor\n    }, layers, serializedLayers, sourceFeatureState);\n};\nTile.prototype.querySourceFeatures = function querySourceFeatures(result, params) {\n    var featureIndex = this.latestFeatureIndex;\n    if (!featureIndex || !featureIndex.rawTileData) {\n        return;\n    }\n    var vtLayers = featureIndex.loadVTLayers();\n    var sourceLayer = params ? params.sourceLayer : '';\n    var layer = vtLayers._geojsonTileLayer || vtLayers[sourceLayer];\n    if (!layer) {\n        return;\n    }\n    var filter = createFilter(params && params.filter);\n    var ref = this.tileID.canonical;\n    var z = ref.z;\n    var x = ref.x;\n    var y = ref.y;\n    var coord = {\n        z: z,\n        x: x,\n        y: y\n    };\n    for (var i = 0; i < layer.length; i++) {\n        var feature = layer.feature(i);\n        if (filter.filter(new EvaluationParameters(this.tileID.overscaledZ), feature)) {\n            var id = featureIndex.getId(feature, sourceLayer);\n            var geojsonFeature = new Feature(feature, z, x, y, id);\n            geojsonFeature.tile = coord;\n            result.push(geojsonFeature);\n        }\n    }\n};\nTile.prototype.hasData = function hasData() {\n    return this.state === 'loaded' || this.state === 'reloading' || this.state === 'expired';\n};\nTile.prototype.patternsLoaded = function patternsLoaded() {\n    return this.imageAtlas && !!Object.keys(this.imageAtlas.patternPositions).length;\n};\nTile.prototype.setExpiryData = function setExpiryData(data) {\n    var prior = this.expirationTime;\n    if (data.cacheControl) {\n        var parsedCC = parseCacheControl(data.cacheControl);\n        if (parsedCC['max-age']) {\n            this.expirationTime = Date.now() + parsedCC['max-age'] * 1000;\n        }\n    } else if (data.expires) {\n        this.expirationTime = new Date(data.expires).getTime();\n    }\n    if (this.expirationTime) {\n        var now = Date.now();\n        var isExpired = false;\n        if (this.expirationTime > now) {\n            isExpired = false;\n        } else if (!prior) {\n            isExpired = true;\n        } else if (this.expirationTime < prior) {\n            isExpired = true;\n        } else {\n            var delta = this.expirationTime - prior;\n            if (!delta) {\n                isExpired = true;\n            } else {\n                this.expirationTime = now + Math.max(delta, CLOCK_SKEW_RETRY_TIMEOUT);\n            }\n        }\n        if (isExpired) {\n            this.expiredRequestCount++;\n            this.state = 'expired';\n        } else {\n            this.expiredRequestCount = 0;\n        }\n    }\n};\nTile.prototype.getExpiryTimeout = function getExpiryTimeout() {\n    if (this.expirationTime) {\n        if (this.expiredRequestCount) {\n            return 1000 * (1 << Math.min(this.expiredRequestCount - 1, 31));\n        } else {\n            return Math.min(this.expirationTime - new Date().getTime(), Math.pow(2, 31) - 1);\n        }\n    }\n};\nTile.prototype.setFeatureState = function setFeatureState(states, painter) {\n    if (!this.latestFeatureIndex || !this.latestFeatureIndex.rawTileData || Object.keys(states).length === 0) {\n        return;\n    }\n    var vtLayers = this.latestFeatureIndex.loadVTLayers();\n    for (var id in this.buckets) {\n        if (!painter.style.hasLayer(id)) {\n            continue;\n        }\n        var bucket = this.buckets[id];\n        var sourceLayerId = bucket.layers[0]['sourceLayer'] || '_geojsonTileLayer';\n        var sourceLayer = vtLayers[sourceLayerId];\n        var sourceLayerStates = states[sourceLayerId];\n        if (!sourceLayer || !sourceLayerStates || Object.keys(sourceLayerStates).length === 0) {\n            continue;\n        }\n        bucket.update(sourceLayerStates, sourceLayer, this.imageAtlas && this.imageAtlas.patternPositions || {});\n        var layer = painter && painter.style && painter.style.getLayer(id);\n        if (layer) {\n            this.queryPadding = Math.max(this.queryPadding, layer.queryRadius(bucket));\n        }\n    }\n};\nTile.prototype.holdingForFade = function holdingForFade() {\n    return this.symbolFadeHoldUntil !== undefined;\n};\nTile.prototype.symbolFadeFinished = function symbolFadeFinished() {\n    return !this.symbolFadeHoldUntil || this.symbolFadeHoldUntil < exported.now();\n};\nTile.prototype.clearFadeHold = function clearFadeHold() {\n    this.symbolFadeHoldUntil = undefined;\n};\nTile.prototype.setHoldDuration = function setHoldDuration(duration) {\n    this.symbolFadeHoldUntil = exported.now() + duration;\n};\nTile.prototype.setDependencies = function setDependencies(namespace, dependencies) {\n    var index = {};\n    for (var i = 0, list = dependencies; i < list.length; i += 1) {\n        var dep = list[i];\n        index[dep] = true;\n    }\n    this.dependencies[namespace] = index;\n};\nTile.prototype.hasDependency = function hasDependency(namespaces, keys) {\n    for (var i$1 = 0, list$1 = namespaces; i$1 < list$1.length; i$1 += 1) {\n        var namespace = list$1[i$1];\n        var dependencies = this.dependencies[namespace];\n        if (dependencies) {\n            for (var i = 0, list = keys; i < list.length; i += 1) {\n                var key = list[i];\n                if (dependencies[key]) {\n                    return true;\n                }\n            }\n        }\n    }\n    return false;\n};\n\nvar refProperties = [\n    'type',\n    'source',\n    'source-layer',\n    'minzoom',\n    'maxzoom',\n    'filter',\n    'layout'\n];\n\nvar performance = self.performance;\nvar RequestPerformance = function RequestPerformance(request) {\n    this._marks = {\n        start: [\n            request.url,\n            'start'\n        ].join('#'),\n        end: [\n            request.url,\n            'end'\n        ].join('#'),\n        measure: request.url.toString()\n    };\n    performance.mark(this._marks.start);\n};\nRequestPerformance.prototype.finish = function finish() {\n    performance.mark(this._marks.end);\n    var resourceTimingData = performance.getEntriesByName(this._marks.measure);\n    if (resourceTimingData.length === 0) {\n        performance.measure(this._marks.measure, this._marks.start, this._marks.end);\n        resourceTimingData = performance.getEntriesByName(this._marks.measure);\n        performance.clearMarks(this._marks.start);\n        performance.clearMarks(this._marks.end);\n        performance.clearMeasures(this._marks.measure);\n    }\n    return resourceTimingData;\n};\n\nexports.Actor = Actor;\nexports.AlphaImage = AlphaImage;\nexports.CanonicalTileID = CanonicalTileID;\nexports.CollisionBoxArray = CollisionBoxArray;\nexports.Color = Color;\nexports.DEMData = DEMData;\nexports.DataConstantProperty = DataConstantProperty;\nexports.DictionaryCoder = DictionaryCoder;\nexports.EXTENT = EXTENT$1;\nexports.ErrorEvent = ErrorEvent;\nexports.EvaluationParameters = EvaluationParameters;\nexports.Event = Event;\nexports.Evented = Evented;\nexports.FeatureIndex = FeatureIndex;\nexports.FillBucket = FillBucket;\nexports.FillExtrusionBucket = FillExtrusionBucket;\nexports.ImageAtlas = ImageAtlas;\nexports.ImagePosition = ImagePosition;\nexports.LineBucket = LineBucket;\nexports.LngLat = LngLat;\nexports.LngLatBounds = LngLatBounds;\nexports.MercatorCoordinate = MercatorCoordinate;\nexports.ONE_EM = ONE_EM;\nexports.OverscaledTileID = OverscaledTileID;\nexports.Point = pointGeometry;\nexports.Point$1 = pointGeometry;\nexports.Properties = Properties;\nexports.Protobuf = pbf;\nexports.RGBAImage = RGBAImage;\nexports.RequestManager = RequestManager;\nexports.RequestPerformance = RequestPerformance;\nexports.ResourceType = ResourceType;\nexports.SegmentVector = SegmentVector;\nexports.SourceFeatureState = SourceFeatureState;\nexports.StructArrayLayout1ui2 = StructArrayLayout1ui2;\nexports.StructArrayLayout2f1f2i16 = StructArrayLayout2f1f2i16;\nexports.StructArrayLayout2i4 = StructArrayLayout2i4;\nexports.StructArrayLayout3ui6 = StructArrayLayout3ui6;\nexports.StructArrayLayout4i8 = StructArrayLayout4i8;\nexports.SymbolBucket = SymbolBucket;\nexports.Texture = Texture;\nexports.Tile = Tile;\nexports.Transitionable = Transitionable;\nexports.Uniform1f = Uniform1f;\nexports.Uniform1i = Uniform1i;\nexports.Uniform2f = Uniform2f;\nexports.Uniform3f = Uniform3f;\nexports.Uniform4f = Uniform4f;\nexports.UniformColor = UniformColor;\nexports.UniformMatrix4f = UniformMatrix4f;\nexports.UnwrappedTileID = UnwrappedTileID;\nexports.ValidationError = ValidationError;\nexports.WritingMode = WritingMode;\nexports.ZoomHistory = ZoomHistory;\nexports.add = add;\nexports.addDynamicAttributes = addDynamicAttributes;\nexports.asyncAll = asyncAll;\nexports.bezier = bezier;\nexports.bindAll = bindAll;\nexports.browser = exported;\nexports.cacheEntryPossiblyAdded = cacheEntryPossiblyAdded;\nexports.clamp = clamp;\nexports.clearTileCache = clearTileCache;\nexports.clipLine = clipLine;\nexports.clone = clone$1;\nexports.clone$1 = clone;\nexports.clone$2 = clone$2;\nexports.collisionCircleLayout = collisionCircleLayout;\nexports.config = config;\nexports.create = create$2;\nexports.create$1 = create$1;\nexports.create$2 = create;\nexports.createCommonjsModule = createCommonjsModule;\nexports.createExpression = createExpression;\nexports.createLayout = createLayout;\nexports.createStyleLayer = createStyleLayer;\nexports.cross = cross;\nexports.deepEqual = deepEqual;\nexports.dot = dot;\nexports.dot$1 = dot$1;\nexports.ease = ease;\nexports.emitValidationErrors = emitValidationErrors;\nexports.endsWith = endsWith;\nexports.enforceCacheSizeLimit = enforceCacheSizeLimit;\nexports.evaluateSizeForFeature = evaluateSizeForFeature;\nexports.evaluateSizeForZoom = evaluateSizeForZoom;\nexports.evaluateVariableOffset = evaluateVariableOffset;\nexports.evented = evented;\nexports.extend = extend;\nexports.featureFilter = createFilter;\nexports.filterObject = filterObject;\nexports.fromRotation = fromRotation;\nexports.getAnchorAlignment = getAnchorAlignment;\nexports.getAnchorJustification = getAnchorJustification;\nexports.getArrayBuffer = getArrayBuffer;\nexports.getImage = getImage;\nexports.getJSON = getJSON;\nexports.getRTLTextPluginStatus = getRTLTextPluginStatus;\nexports.getReferrer = getReferrer;\nexports.getVideo = getVideo;\nexports.identity = identity;\nexports.invert = invert;\nexports.isChar = unicodeBlockLookup;\nexports.isMapboxURL = isMapboxURL;\nexports.keysDifference = keysDifference;\nexports.makeRequest = makeRequest;\nexports.mapObject = mapObject;\nexports.mercatorXfromLng = mercatorXfromLng$1;\nexports.mercatorYfromLat = mercatorYfromLat$1;\nexports.mercatorZfromAltitude = mercatorZfromAltitude;\nexports.mul = mul;\nexports.multiply = multiply;\nexports.mvt = vectorTile;\nexports.normalize = normalize;\nexports.number = number;\nexports.offscreenCanvasSupported = offscreenCanvasSupported;\nexports.ortho = ortho;\nexports.parseGlyphPBF = parseGlyphPBF;\nexports.pbf = pbf;\nexports.performSymbolLayout = performSymbolLayout;\nexports.perspective = perspective;\nexports.pick = pick;\nexports.plugin = plugin;\nexports.polygonIntersectsPolygon = polygonIntersectsPolygon;\nexports.postMapLoadEvent = postMapLoadEvent;\nexports.postTurnstileEvent = postTurnstileEvent;\nexports.potpack = potpack;\nexports.refProperties = refProperties;\nexports.register = register;\nexports.registerForPluginStateChange = registerForPluginStateChange;\nexports.rotate = rotate;\nexports.rotateX = rotateX;\nexports.rotateZ = rotateZ;\nexports.scale = scale;\nexports.scale$1 = scale$2;\nexports.scale$2 = scale$1;\nexports.setCacheLimits = setCacheLimits;\nexports.setRTLTextPlugin = setRTLTextPlugin;\nexports.sphericalToCartesian = sphericalToCartesian;\nexports.sqrLen = sqrLen;\nexports.styleSpec = spec;\nexports.sub = sub;\nexports.symbolSize = symbolSize;\nexports.transformMat3 = transformMat3;\nexports.transformMat4 = transformMat4;\nexports.translate = translate$1;\nexports.triggerPluginCompletionEvent = triggerPluginCompletionEvent;\nexports.uniqueId = uniqueId;\nexports.validateCustomStyleLayer = validateCustomStyleLayer;\nexports.validateLight = validateLight$1;\nexports.validateStyle = validateStyle;\nexports.values = values;\nexports.vectorTile = vectorTile;\nexports.version = version;\nexports.warnOnce = warnOnce;\nexports.webpSupported = exported$1;\nexports.window = self;\nexports.wrap = wrap;\n\n});\n\ndefine(['./shared'], function (performance$1) { 'use strict';\n\nfunction stringify(obj) {\n    var type = typeof obj;\n    if (type === 'number' || type === 'boolean' || type === 'string' || obj === undefined || obj === null) {\n        return JSON.stringify(obj);\n    }\n    if (Array.isArray(obj)) {\n        var str$1 = '[';\n        for (var i$1 = 0, list = obj; i$1 < list.length; i$1 += 1) {\n            var val = list[i$1];\n            str$1 += stringify(val) + ',';\n        }\n        return str$1 + ']';\n    }\n    var keys = Object.keys(obj).sort();\n    var str = '{';\n    for (var i = 0; i < keys.length; i++) {\n        str += JSON.stringify(keys[i]) + ':' + stringify(obj[keys[i]]) + ',';\n    }\n    return str + '}';\n}\nfunction getKey(layer) {\n    var key = '';\n    for (var i = 0, list = performance$1.refProperties; i < list.length; i += 1) {\n        var k = list[i];\n        key += '/' + stringify(layer[k]);\n    }\n    return key;\n}\nfunction groupByLayout(layers, cachedKeys) {\n    var groups = {};\n    for (var i = 0; i < layers.length; i++) {\n        var k = cachedKeys && cachedKeys[layers[i].id] || getKey(layers[i]);\n        if (cachedKeys) {\n            cachedKeys[layers[i].id] = k;\n        }\n        var group = groups[k];\n        if (!group) {\n            group = groups[k] = [];\n        }\n        group.push(layers[i]);\n    }\n    var result = [];\n    for (var k$1 in groups) {\n        result.push(groups[k$1]);\n    }\n    return result;\n}\n\nvar StyleLayerIndex = function StyleLayerIndex(layerConfigs) {\n    this.keyCache = {};\n    if (layerConfigs) {\n        this.replace(layerConfigs);\n    }\n};\nStyleLayerIndex.prototype.replace = function replace(layerConfigs) {\n    this._layerConfigs = {};\n    this._layers = {};\n    this.update(layerConfigs, []);\n};\nStyleLayerIndex.prototype.update = function update(layerConfigs, removedIds) {\n    var this$1 = this;\n    for (var i = 0, list = layerConfigs; i < list.length; i += 1) {\n        var layerConfig = list[i];\n        this._layerConfigs[layerConfig.id] = layerConfig;\n        var layer = this._layers[layerConfig.id] = performance$1.createStyleLayer(layerConfig);\n        layer._featureFilter = performance$1.featureFilter(layer.filter);\n        if (this.keyCache[layerConfig.id]) {\n            delete this.keyCache[layerConfig.id];\n        }\n    }\n    for (var i$1 = 0, list$1 = removedIds; i$1 < list$1.length; i$1 += 1) {\n        var id = list$1[i$1];\n        delete this.keyCache[id];\n        delete this._layerConfigs[id];\n        delete this._layers[id];\n    }\n    this.familiesBySource = {};\n    var groups = groupByLayout(performance$1.values(this._layerConfigs), this.keyCache);\n    for (var i$2 = 0, list$2 = groups; i$2 < list$2.length; i$2 += 1) {\n        var layerConfigs$1 = list$2[i$2];\n        var layers = layerConfigs$1.map(function (layerConfig) {\n            return this$1._layers[layerConfig.id];\n        });\n        var layer$1 = layers[0];\n        if (layer$1.visibility === 'none') {\n            continue;\n        }\n        var sourceId = layer$1.source || '';\n        var sourceGroup = this.familiesBySource[sourceId];\n        if (!sourceGroup) {\n            sourceGroup = this.familiesBySource[sourceId] = {};\n        }\n        var sourceLayerId = layer$1.sourceLayer || '_geojsonTileLayer';\n        var sourceLayerFamilies = sourceGroup[sourceLayerId];\n        if (!sourceLayerFamilies) {\n            sourceLayerFamilies = sourceGroup[sourceLayerId] = [];\n        }\n        sourceLayerFamilies.push(layers);\n    }\n};\n\nvar padding = 1;\nvar GlyphAtlas = function GlyphAtlas(stacks) {\n    var positions = {};\n    var bins = [];\n    for (var stack in stacks) {\n        var glyphs = stacks[stack];\n        var stackPositions = positions[stack] = {};\n        for (var id in glyphs) {\n            var src = glyphs[+id];\n            if (!src || src.bitmap.width === 0 || src.bitmap.height === 0) {\n                continue;\n            }\n            var bin = {\n                x: 0,\n                y: 0,\n                w: src.bitmap.width + 2 * padding,\n                h: src.bitmap.height + 2 * padding\n            };\n            bins.push(bin);\n            stackPositions[id] = {\n                rect: bin,\n                metrics: src.metrics\n            };\n        }\n    }\n    var ref = performance$1.potpack(bins);\n    var w = ref.w;\n    var h = ref.h;\n    var image = new performance$1.AlphaImage({\n        width: w || 1,\n        height: h || 1\n    });\n    for (var stack$1 in stacks) {\n        var glyphs$1 = stacks[stack$1];\n        for (var id$1 in glyphs$1) {\n            var src$1 = glyphs$1[+id$1];\n            if (!src$1 || src$1.bitmap.width === 0 || src$1.bitmap.height === 0) {\n                continue;\n            }\n            var bin$1 = positions[stack$1][id$1].rect;\n            performance$1.AlphaImage.copy(src$1.bitmap, image, {\n                x: 0,\n                y: 0\n            }, {\n                x: bin$1.x + padding,\n                y: bin$1.y + padding\n            }, src$1.bitmap);\n        }\n    }\n    this.image = image;\n    this.positions = positions;\n};\nperformance$1.register('GlyphAtlas', GlyphAtlas);\n\nvar WorkerTile = function WorkerTile(params) {\n    this.tileID = new performance$1.OverscaledTileID(params.tileID.overscaledZ, params.tileID.wrap, params.tileID.canonical.z, params.tileID.canonical.x, params.tileID.canonical.y);\n    this.uid = params.uid;\n    this.zoom = params.zoom;\n    this.pixelRatio = params.pixelRatio;\n    this.tileSize = params.tileSize;\n    this.source = params.source;\n    this.overscaling = this.tileID.overscaleFactor();\n    this.showCollisionBoxes = params.showCollisionBoxes;\n    this.collectResourceTiming = !!params.collectResourceTiming;\n    this.returnDependencies = !!params.returnDependencies;\n    this.promoteId = params.promoteId;\n};\nWorkerTile.prototype.parse = function parse(data, layerIndex, availableImages, actor, callback) {\n    var this$1 = this;\n    this.status = 'parsing';\n    this.data = data;\n    this.collisionBoxArray = new performance$1.CollisionBoxArray();\n    var sourceLayerCoder = new performance$1.DictionaryCoder(Object.keys(data.layers).sort());\n    var featureIndex = new performance$1.FeatureIndex(this.tileID, this.promoteId);\n    featureIndex.bucketLayerIDs = [];\n    var buckets = {};\n    var options = {\n        featureIndex: featureIndex,\n        iconDependencies: {},\n        patternDependencies: {},\n        glyphDependencies: {},\n        availableImages: availableImages\n    };\n    var layerFamilies = layerIndex.familiesBySource[this.source];\n    for (var sourceLayerId in layerFamilies) {\n        var sourceLayer = data.layers[sourceLayerId];\n        if (!sourceLayer) {\n            continue;\n        }\n        if (sourceLayer.version === 1) {\n            performance$1.warnOnce('Vector tile source \"' + this.source + '\" layer \"' + sourceLayerId + '\" ' + 'does not use vector tile spec v2 and therefore may have some rendering errors.');\n        }\n        var sourceLayerIndex = sourceLayerCoder.encode(sourceLayerId);\n        var features = [];\n        for (var index = 0; index < sourceLayer.length; index++) {\n            var feature = sourceLayer.feature(index);\n            var id = featureIndex.getId(feature, sourceLayerId);\n            features.push({\n                feature: feature,\n                id: id,\n                index: index,\n                sourceLayerIndex: sourceLayerIndex\n            });\n        }\n        for (var i = 0, list = layerFamilies[sourceLayerId]; i < list.length; i += 1) {\n            var family = list[i];\n            var layer = family[0];\n            if (layer.minzoom && this.zoom < Math.floor(layer.minzoom)) {\n                continue;\n            }\n            if (layer.maxzoom && this.zoom >= layer.maxzoom) {\n                continue;\n            }\n            if (layer.visibility === 'none') {\n                continue;\n            }\n            recalculateLayers(family, this.zoom, availableImages);\n            var bucket = buckets[layer.id] = layer.createBucket({\n                index: featureIndex.bucketLayerIDs.length,\n                layers: family,\n                zoom: this.zoom,\n                pixelRatio: this.pixelRatio,\n                overscaling: this.overscaling,\n                collisionBoxArray: this.collisionBoxArray,\n                sourceLayerIndex: sourceLayerIndex,\n                sourceID: this.source\n            });\n            bucket.populate(features, options, this.tileID.canonical);\n            featureIndex.bucketLayerIDs.push(family.map(function (l) {\n                return l.id;\n            }));\n        }\n    }\n    var error;\n    var glyphMap;\n    var iconMap;\n    var patternMap;\n    var stacks = performance$1.mapObject(options.glyphDependencies, function (glyphs) {\n        return Object.keys(glyphs).map(Number);\n    });\n    if (Object.keys(stacks).length) {\n        actor.send('getGlyphs', {\n            uid: this.uid,\n            stacks: stacks\n        }, function (err, result) {\n            if (!error) {\n                error = err;\n                glyphMap = result;\n                maybePrepare.call(this$1);\n            }\n        });\n    } else {\n        glyphMap = {};\n    }\n    var icons = Object.keys(options.iconDependencies);\n    if (icons.length) {\n        actor.send('getImages', {\n            icons: icons,\n            source: this.source,\n            tileID: this.tileID,\n            type: 'icons'\n        }, function (err, result) {\n            if (!error) {\n                error = err;\n                iconMap = result;\n                maybePrepare.call(this$1);\n            }\n        });\n    } else {\n        iconMap = {};\n    }\n    var patterns = Object.keys(options.patternDependencies);\n    if (patterns.length) {\n        actor.send('getImages', {\n            icons: patterns,\n            source: this.source,\n            tileID: this.tileID,\n            type: 'patterns'\n        }, function (err, result) {\n            if (!error) {\n                error = err;\n                patternMap = result;\n                maybePrepare.call(this$1);\n            }\n        });\n    } else {\n        patternMap = {};\n    }\n    maybePrepare.call(this);\n    function maybePrepare() {\n        if (error) {\n            return callback(error);\n        } else if (glyphMap && iconMap && patternMap) {\n            var glyphAtlas = new GlyphAtlas(glyphMap);\n            var imageAtlas = new performance$1.ImageAtlas(iconMap, patternMap);\n            for (var key in buckets) {\n                var bucket = buckets[key];\n                if (bucket instanceof performance$1.SymbolBucket) {\n                    recalculateLayers(bucket.layers, this.zoom, availableImages);\n                    performance$1.performSymbolLayout(bucket, glyphMap, glyphAtlas.positions, iconMap, imageAtlas.iconPositions, this.showCollisionBoxes, this.tileID.canonical);\n                } else if (bucket.hasPattern && (bucket instanceof performance$1.LineBucket || bucket instanceof performance$1.FillBucket || bucket instanceof performance$1.FillExtrusionBucket)) {\n                    recalculateLayers(bucket.layers, this.zoom, availableImages);\n                    bucket.addFeatures(options, this.tileID.canonical, imageAtlas.patternPositions);\n                }\n            }\n            this.status = 'done';\n            callback(null, {\n                buckets: performance$1.values(buckets).filter(function (b) {\n                    return !b.isEmpty();\n                }),\n                featureIndex: featureIndex,\n                collisionBoxArray: this.collisionBoxArray,\n                glyphAtlasImage: glyphAtlas.image,\n                imageAtlas: imageAtlas,\n                glyphMap: this.returnDependencies ? glyphMap : null,\n                iconMap: this.returnDependencies ? iconMap : null,\n                glyphPositions: this.returnDependencies ? glyphAtlas.positions : null\n            });\n        }\n    }\n};\nfunction recalculateLayers(layers, zoom, availableImages) {\n    var parameters = new performance$1.EvaluationParameters(zoom);\n    for (var i = 0, list = layers; i < list.length; i += 1) {\n        var layer = list[i];\n        layer.recalculate(parameters, availableImages);\n    }\n}\n\nfunction loadVectorTile(params, callback) {\n    var request = performance$1.getArrayBuffer(params.request, function (err, data, cacheControl, expires) {\n        if (err) {\n            callback(err);\n        } else if (data) {\n            callback(null, {\n                vectorTile: new performance$1.vectorTile.VectorTile(new performance$1.pbf(data)),\n                rawData: data,\n                cacheControl: cacheControl,\n                expires: expires\n            });\n        }\n    });\n    return function () {\n        request.cancel();\n        callback();\n    };\n}\nvar VectorTileWorkerSource = function VectorTileWorkerSource(actor, layerIndex, availableImages, loadVectorData) {\n    this.actor = actor;\n    this.layerIndex = layerIndex;\n    this.availableImages = availableImages;\n    this.loadVectorData = loadVectorData || loadVectorTile;\n    this.loading = {};\n    this.loaded = {};\n};\nVectorTileWorkerSource.prototype.loadTile = function loadTile(params, callback) {\n    var this$1 = this;\n    var uid = params.uid;\n    if (!this.loading) {\n        this.loading = {};\n    }\n    var perf = params && params.request && params.request.collectResourceTiming ? new performance$1.RequestPerformance(params.request) : false;\n    var workerTile = this.loading[uid] = new WorkerTile(params);\n    workerTile.abort = this.loadVectorData(params, function (err, response) {\n        delete this$1.loading[uid];\n        if (err || !response) {\n            workerTile.status = 'done';\n            this$1.loaded[uid] = workerTile;\n            return callback(err);\n        }\n        var rawTileData = response.rawData;\n        var cacheControl = {};\n        if (response.expires) {\n            cacheControl.expires = response.expires;\n        }\n        if (response.cacheControl) {\n            cacheControl.cacheControl = response.cacheControl;\n        }\n        var resourceTiming = {};\n        if (perf) {\n            var resourceTimingData = perf.finish();\n            if (resourceTimingData) {\n                resourceTiming.resourceTiming = JSON.parse(JSON.stringify(resourceTimingData));\n            }\n        }\n        workerTile.vectorTile = response.vectorTile;\n        workerTile.parse(response.vectorTile, this$1.layerIndex, this$1.availableImages, this$1.actor, function (err, result) {\n            if (err || !result) {\n                return callback(err);\n            }\n            callback(null, performance$1.extend({ rawTileData: rawTileData.slice(0) }, result, cacheControl, resourceTiming));\n        });\n        this$1.loaded = this$1.loaded || {};\n        this$1.loaded[uid] = workerTile;\n    });\n};\nVectorTileWorkerSource.prototype.reloadTile = function reloadTile(params, callback) {\n    var this$1 = this;\n    var loaded = this.loaded, uid = params.uid, vtSource = this;\n    if (loaded && loaded[uid]) {\n        var workerTile = loaded[uid];\n        workerTile.showCollisionBoxes = params.showCollisionBoxes;\n        var done = function (err, data) {\n            var reloadCallback = workerTile.reloadCallback;\n            if (reloadCallback) {\n                delete workerTile.reloadCallback;\n                workerTile.parse(workerTile.vectorTile, vtSource.layerIndex, this$1.availableImages, vtSource.actor, reloadCallback);\n            }\n            callback(err, data);\n        };\n        if (workerTile.status === 'parsing') {\n            workerTile.reloadCallback = done;\n        } else if (workerTile.status === 'done') {\n            if (workerTile.vectorTile) {\n                workerTile.parse(workerTile.vectorTile, this.layerIndex, this.availableImages, this.actor, done);\n            } else {\n                done();\n            }\n        }\n    }\n};\nVectorTileWorkerSource.prototype.abortTile = function abortTile(params, callback) {\n    var loading = this.loading, uid = params.uid;\n    if (loading && loading[uid] && loading[uid].abort) {\n        loading[uid].abort();\n        delete loading[uid];\n    }\n    callback();\n};\nVectorTileWorkerSource.prototype.removeTile = function removeTile(params, callback) {\n    var loaded = this.loaded, uid = params.uid;\n    if (loaded && loaded[uid]) {\n        delete loaded[uid];\n    }\n    callback();\n};\n\nvar ImageBitmap = performance$1.window.ImageBitmap;\nvar RasterDEMTileWorkerSource = function RasterDEMTileWorkerSource() {\n    this.loaded = {};\n};\nRasterDEMTileWorkerSource.prototype.loadTile = function loadTile(params, callback) {\n    var uid = params.uid;\n    var encoding = params.encoding;\n    var rawImageData = params.rawImageData;\n    var imagePixels = ImageBitmap && rawImageData instanceof ImageBitmap ? this.getImageData(rawImageData) : rawImageData;\n    var dem = new performance$1.DEMData(uid, imagePixels, encoding);\n    this.loaded = this.loaded || {};\n    this.loaded[uid] = dem;\n    callback(null, dem);\n};\nRasterDEMTileWorkerSource.prototype.getImageData = function getImageData(imgBitmap) {\n    if (!this.offscreenCanvas || !this.offscreenCanvasContext) {\n        this.offscreenCanvas = new OffscreenCanvas(imgBitmap.width, imgBitmap.height);\n        this.offscreenCanvasContext = this.offscreenCanvas.getContext('2d');\n    }\n    this.offscreenCanvas.width = imgBitmap.width;\n    this.offscreenCanvas.height = imgBitmap.height;\n    this.offscreenCanvasContext.drawImage(imgBitmap, 0, 0, imgBitmap.width, imgBitmap.height);\n    var imgData = this.offscreenCanvasContext.getImageData(-1, -1, imgBitmap.width + 2, imgBitmap.height + 2);\n    this.offscreenCanvasContext.clearRect(0, 0, this.offscreenCanvas.width, this.offscreenCanvas.height);\n    return new performance$1.RGBAImage({\n        width: imgData.width,\n        height: imgData.height\n    }, imgData.data);\n};\nRasterDEMTileWorkerSource.prototype.removeTile = function removeTile(params) {\n    var loaded = this.loaded, uid = params.uid;\n    if (loaded && loaded[uid]) {\n        delete loaded[uid];\n    }\n};\n\nvar geojsonRewind = rewind;\nfunction rewind(gj, outer) {\n    var type = gj && gj.type, i;\n    if (type === 'FeatureCollection') {\n        for (i = 0; i < gj.features.length; i++) {\n            rewind(gj.features[i], outer);\n        }\n    } else if (type === 'GeometryCollection') {\n        for (i = 0; i < gj.geometries.length; i++) {\n            rewind(gj.geometries[i], outer);\n        }\n    } else if (type === 'Feature') {\n        rewind(gj.geometry, outer);\n    } else if (type === 'Polygon') {\n        rewindRings(gj.coordinates, outer);\n    } else if (type === 'MultiPolygon') {\n        for (i = 0; i < gj.coordinates.length; i++) {\n            rewindRings(gj.coordinates[i], outer);\n        }\n    }\n    return gj;\n}\nfunction rewindRings(rings, outer) {\n    if (rings.length === 0) {\n        return;\n    }\n    rewindRing(rings[0], outer);\n    for (var i = 1; i < rings.length; i++) {\n        rewindRing(rings[i], !outer);\n    }\n}\nfunction rewindRing(ring, dir) {\n    var area = 0;\n    for (var i = 0, len = ring.length, j = len - 1; i < len; j = i++) {\n        area += (ring[i][0] - ring[j][0]) * (ring[j][1] + ring[i][1]);\n    }\n    if (area >= 0 !== !!dir) {\n        ring.reverse();\n    }\n}\n\nvar toGeoJSON = performance$1.vectorTile.VectorTileFeature.prototype.toGeoJSON;\nvar FeatureWrapper = function FeatureWrapper(feature) {\n    this._feature = feature;\n    this.extent = performance$1.EXTENT;\n    this.type = feature.type;\n    this.properties = feature.tags;\n    if ('id' in feature && !isNaN(feature.id)) {\n        this.id = parseInt(feature.id, 10);\n    }\n};\nFeatureWrapper.prototype.loadGeometry = function loadGeometry() {\n    if (this._feature.type === 1) {\n        var geometry = [];\n        for (var i = 0, list = this._feature.geometry; i < list.length; i += 1) {\n            var point = list[i];\n            geometry.push([new performance$1.Point$1(point[0], point[1])]);\n        }\n        return geometry;\n    } else {\n        var geometry$1 = [];\n        for (var i$2 = 0, list$2 = this._feature.geometry; i$2 < list$2.length; i$2 += 1) {\n            var ring = list$2[i$2];\n            var newRing = [];\n            for (var i$1 = 0, list$1 = ring; i$1 < list$1.length; i$1 += 1) {\n                var point$1 = list$1[i$1];\n                newRing.push(new performance$1.Point$1(point$1[0], point$1[1]));\n            }\n            geometry$1.push(newRing);\n        }\n        return geometry$1;\n    }\n};\nFeatureWrapper.prototype.toGeoJSON = function toGeoJSON$1(x, y, z) {\n    return toGeoJSON.call(this, x, y, z);\n};\nvar GeoJSONWrapper = function GeoJSONWrapper(features) {\n    this.layers = { '_geojsonTileLayer': this };\n    this.name = '_geojsonTileLayer';\n    this.extent = performance$1.EXTENT;\n    this.length = features.length;\n    this._features = features;\n};\nGeoJSONWrapper.prototype.feature = function feature(i) {\n    return new FeatureWrapper(this._features[i]);\n};\n\nvar VectorTileFeature = performance$1.vectorTile.VectorTileFeature;\nvar geojson_wrapper = GeoJSONWrapper$1;\nfunction GeoJSONWrapper$1(features, options) {\n    this.options = options || {};\n    this.features = features;\n    this.length = features.length;\n}\nGeoJSONWrapper$1.prototype.feature = function (i) {\n    return new FeatureWrapper$1(this.features[i], this.options.extent);\n};\nfunction FeatureWrapper$1(feature, extent) {\n    this.id = typeof feature.id === 'number' ? feature.id : undefined;\n    this.type = feature.type;\n    this.rawGeometry = feature.type === 1 ? [feature.geometry] : feature.geometry;\n    this.properties = feature.tags;\n    this.extent = extent || 4096;\n}\nFeatureWrapper$1.prototype.loadGeometry = function () {\n    var rings = this.rawGeometry;\n    this.geometry = [];\n    for (var i = 0; i < rings.length; i++) {\n        var ring = rings[i];\n        var newRing = [];\n        for (var j = 0; j < ring.length; j++) {\n            newRing.push(new performance$1.Point$1(ring[j][0], ring[j][1]));\n        }\n        this.geometry.push(newRing);\n    }\n    return this.geometry;\n};\nFeatureWrapper$1.prototype.bbox = function () {\n    if (!this.geometry) {\n        this.loadGeometry();\n    }\n    var rings = this.geometry;\n    var x1 = Infinity;\n    var x2 = -Infinity;\n    var y1 = Infinity;\n    var y2 = -Infinity;\n    for (var i = 0; i < rings.length; i++) {\n        var ring = rings[i];\n        for (var j = 0; j < ring.length; j++) {\n            var coord = ring[j];\n            x1 = Math.min(x1, coord.x);\n            x2 = Math.max(x2, coord.x);\n            y1 = Math.min(y1, coord.y);\n            y2 = Math.max(y2, coord.y);\n        }\n    }\n    return [\n        x1,\n        y1,\n        x2,\n        y2\n    ];\n};\nFeatureWrapper$1.prototype.toGeoJSON = VectorTileFeature.prototype.toGeoJSON;\n\nvar vtPbf = fromVectorTileJs;\nvar fromVectorTileJs_1 = fromVectorTileJs;\nvar fromGeojsonVt_1 = fromGeojsonVt;\nvar GeoJSONWrapper_1 = geojson_wrapper;\nfunction fromVectorTileJs(tile) {\n    var out = new performance$1.pbf();\n    writeTile(tile, out);\n    return out.finish();\n}\nfunction fromGeojsonVt(layers, options) {\n    options = options || {};\n    var l = {};\n    for (var k in layers) {\n        l[k] = new geojson_wrapper(layers[k].features, options);\n        l[k].name = k;\n        l[k].version = options.version;\n        l[k].extent = options.extent;\n    }\n    return fromVectorTileJs({ layers: l });\n}\nfunction writeTile(tile, pbf) {\n    for (var key in tile.layers) {\n        pbf.writeMessage(3, writeLayer, tile.layers[key]);\n    }\n}\nfunction writeLayer(layer, pbf) {\n    pbf.writeVarintField(15, layer.version || 1);\n    pbf.writeStringField(1, layer.name || '');\n    pbf.writeVarintField(5, layer.extent || 4096);\n    var i;\n    var context = {\n        keys: [],\n        values: [],\n        keycache: {},\n        valuecache: {}\n    };\n    for (i = 0; i < layer.length; i++) {\n        context.feature = layer.feature(i);\n        pbf.writeMessage(2, writeFeature, context);\n    }\n    var keys = context.keys;\n    for (i = 0; i < keys.length; i++) {\n        pbf.writeStringField(3, keys[i]);\n    }\n    var values = context.values;\n    for (i = 0; i < values.length; i++) {\n        pbf.writeMessage(4, writeValue, values[i]);\n    }\n}\nfunction writeFeature(context, pbf) {\n    var feature = context.feature;\n    if (feature.id !== undefined) {\n        pbf.writeVarintField(1, feature.id);\n    }\n    pbf.writeMessage(2, writeProperties, context);\n    pbf.writeVarintField(3, feature.type);\n    pbf.writeMessage(4, writeGeometry, feature);\n}\nfunction writeProperties(context, pbf) {\n    var feature = context.feature;\n    var keys = context.keys;\n    var values = context.values;\n    var keycache = context.keycache;\n    var valuecache = context.valuecache;\n    for (var key in feature.properties) {\n        var keyIndex = keycache[key];\n        if (typeof keyIndex === 'undefined') {\n            keys.push(key);\n            keyIndex = keys.length - 1;\n            keycache[key] = keyIndex;\n        }\n        pbf.writeVarint(keyIndex);\n        var value = feature.properties[key];\n        var type = typeof value;\n        if (type !== 'string' && type !== 'boolean' && type !== 'number') {\n            value = JSON.stringify(value);\n        }\n        var valueKey = type + ':' + value;\n        var valueIndex = valuecache[valueKey];\n        if (typeof valueIndex === 'undefined') {\n            values.push(value);\n            valueIndex = values.length - 1;\n            valuecache[valueKey] = valueIndex;\n        }\n        pbf.writeVarint(valueIndex);\n    }\n}\nfunction command(cmd, length) {\n    return (length << 3) + (cmd & 7);\n}\nfunction zigzag(num) {\n    return num << 1 ^ num >> 31;\n}\nfunction writeGeometry(feature, pbf) {\n    var geometry = feature.loadGeometry();\n    var type = feature.type;\n    var x = 0;\n    var y = 0;\n    var rings = geometry.length;\n    for (var r = 0; r < rings; r++) {\n        var ring = geometry[r];\n        var count = 1;\n        if (type === 1) {\n            count = ring.length;\n        }\n        pbf.writeVarint(command(1, count));\n        var lineCount = type === 3 ? ring.length - 1 : ring.length;\n        for (var i = 0; i < lineCount; i++) {\n            if (i === 1 && type !== 1) {\n                pbf.writeVarint(command(2, lineCount - 1));\n            }\n            var dx = ring[i].x - x;\n            var dy = ring[i].y - y;\n            pbf.writeVarint(zigzag(dx));\n            pbf.writeVarint(zigzag(dy));\n            x += dx;\n            y += dy;\n        }\n        if (type === 3) {\n            pbf.writeVarint(command(7, 1));\n        }\n    }\n}\nfunction writeValue(value, pbf) {\n    var type = typeof value;\n    if (type === 'string') {\n        pbf.writeStringField(1, value);\n    } else if (type === 'boolean') {\n        pbf.writeBooleanField(7, value);\n    } else if (type === 'number') {\n        if (value % 1 !== 0) {\n            pbf.writeDoubleField(3, value);\n        } else if (value < 0) {\n            pbf.writeSVarintField(6, value);\n        } else {\n            pbf.writeVarintField(5, value);\n        }\n    }\n}\nvtPbf.fromVectorTileJs = fromVectorTileJs_1;\nvtPbf.fromGeojsonVt = fromGeojsonVt_1;\nvtPbf.GeoJSONWrapper = GeoJSONWrapper_1;\n\nfunction sortKD(ids, coords, nodeSize, left, right, depth) {\n    if (right - left <= nodeSize) {\n        return;\n    }\n    var m = left + right >> 1;\n    select(ids, coords, m, left, right, depth % 2);\n    sortKD(ids, coords, nodeSize, left, m - 1, depth + 1);\n    sortKD(ids, coords, nodeSize, m + 1, right, depth + 1);\n}\nfunction select(ids, coords, k, left, right, inc) {\n    while (right > left) {\n        if (right - left > 600) {\n            var n = right - left + 1;\n            var m = k - left + 1;\n            var z = Math.log(n);\n            var s = 0.5 * Math.exp(2 * z / 3);\n            var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n            var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n            var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n            select(ids, coords, k, newLeft, newRight, inc);\n        }\n        var t = coords[2 * k + inc];\n        var i = left;\n        var j = right;\n        swapItem(ids, coords, left, k);\n        if (coords[2 * right + inc] > t) {\n            swapItem(ids, coords, left, right);\n        }\n        while (i < j) {\n            swapItem(ids, coords, i, j);\n            i++;\n            j--;\n            while (coords[2 * i + inc] < t) {\n                i++;\n            }\n            while (coords[2 * j + inc] > t) {\n                j--;\n            }\n        }\n        if (coords[2 * left + inc] === t) {\n            swapItem(ids, coords, left, j);\n        } else {\n            j++;\n            swapItem(ids, coords, j, right);\n        }\n        if (j <= k) {\n            left = j + 1;\n        }\n        if (k <= j) {\n            right = j - 1;\n        }\n    }\n}\nfunction swapItem(ids, coords, i, j) {\n    swap(ids, i, j);\n    swap(coords, 2 * i, 2 * j);\n    swap(coords, 2 * i + 1, 2 * j + 1);\n}\nfunction swap(arr, i, j) {\n    var tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\nfunction range(ids, coords, minX, minY, maxX, maxY, nodeSize) {\n    var stack = [\n        0,\n        ids.length - 1,\n        0\n    ];\n    var result = [];\n    var x, y;\n    while (stack.length) {\n        var axis = stack.pop();\n        var right = stack.pop();\n        var left = stack.pop();\n        if (right - left <= nodeSize) {\n            for (var i = left; i <= right; i++) {\n                x = coords[2 * i];\n                y = coords[2 * i + 1];\n                if (x >= minX && x <= maxX && y >= minY && y <= maxY) {\n                    result.push(ids[i]);\n                }\n            }\n            continue;\n        }\n        var m = Math.floor((left + right) / 2);\n        x = coords[2 * m];\n        y = coords[2 * m + 1];\n        if (x >= minX && x <= maxX && y >= minY && y <= maxY) {\n            result.push(ids[m]);\n        }\n        var nextAxis = (axis + 1) % 2;\n        if (axis === 0 ? minX <= x : minY <= y) {\n            stack.push(left);\n            stack.push(m - 1);\n            stack.push(nextAxis);\n        }\n        if (axis === 0 ? maxX >= x : maxY >= y) {\n            stack.push(m + 1);\n            stack.push(right);\n            stack.push(nextAxis);\n        }\n    }\n    return result;\n}\n\nfunction within(ids, coords, qx, qy, r, nodeSize) {\n    var stack = [\n        0,\n        ids.length - 1,\n        0\n    ];\n    var result = [];\n    var r2 = r * r;\n    while (stack.length) {\n        var axis = stack.pop();\n        var right = stack.pop();\n        var left = stack.pop();\n        if (right - left <= nodeSize) {\n            for (var i = left; i <= right; i++) {\n                if (sqDist(coords[2 * i], coords[2 * i + 1], qx, qy) <= r2) {\n                    result.push(ids[i]);\n                }\n            }\n            continue;\n        }\n        var m = Math.floor((left + right) / 2);\n        var x = coords[2 * m];\n        var y = coords[2 * m + 1];\n        if (sqDist(x, y, qx, qy) <= r2) {\n            result.push(ids[m]);\n        }\n        var nextAxis = (axis + 1) % 2;\n        if (axis === 0 ? qx - r <= x : qy - r <= y) {\n            stack.push(left);\n            stack.push(m - 1);\n            stack.push(nextAxis);\n        }\n        if (axis === 0 ? qx + r >= x : qy + r >= y) {\n            stack.push(m + 1);\n            stack.push(right);\n            stack.push(nextAxis);\n        }\n    }\n    return result;\n}\nfunction sqDist(ax, ay, bx, by) {\n    var dx = ax - bx;\n    var dy = ay - by;\n    return dx * dx + dy * dy;\n}\n\nvar defaultGetX = function (p) {\n    return p[0];\n};\nvar defaultGetY = function (p) {\n    return p[1];\n};\nvar KDBush = function KDBush(points, getX, getY, nodeSize, ArrayType) {\n    if (getX === void 0)\n        getX = defaultGetX;\n    if (getY === void 0)\n        getY = defaultGetY;\n    if (nodeSize === void 0)\n        nodeSize = 64;\n    if (ArrayType === void 0)\n        ArrayType = Float64Array;\n    this.nodeSize = nodeSize;\n    this.points = points;\n    var IndexArrayType = points.length < 65536 ? Uint16Array : Uint32Array;\n    var ids = this.ids = new IndexArrayType(points.length);\n    var coords = this.coords = new ArrayType(points.length * 2);\n    for (var i = 0; i < points.length; i++) {\n        ids[i] = i;\n        coords[2 * i] = getX(points[i]);\n        coords[2 * i + 1] = getY(points[i]);\n    }\n    sortKD(ids, coords, nodeSize, 0, ids.length - 1, 0);\n};\nKDBush.prototype.range = function range$1(minX, minY, maxX, maxY) {\n    return range(this.ids, this.coords, minX, minY, maxX, maxY, this.nodeSize);\n};\nKDBush.prototype.within = function within$1(x, y, r) {\n    return within(this.ids, this.coords, x, y, r, this.nodeSize);\n};\n\nvar defaultOptions = {\n    minZoom: 0,\n    maxZoom: 16,\n    radius: 40,\n    extent: 512,\n    nodeSize: 64,\n    log: false,\n    generateId: false,\n    reduce: null,\n    map: function (props) {\n        return props;\n    }\n};\nvar Supercluster = function Supercluster(options) {\n    this.options = extend(Object.create(defaultOptions), options);\n    this.trees = new Array(this.options.maxZoom + 1);\n};\nSupercluster.prototype.load = function load(points) {\n    var ref = this.options;\n    var log = ref.log;\n    var minZoom = ref.minZoom;\n    var maxZoom = ref.maxZoom;\n    var nodeSize = ref.nodeSize;\n    if (log) {\n        console.time('total time');\n    }\n    var timerId = 'prepare ' + points.length + ' points';\n    if (log) {\n        console.time(timerId);\n    }\n    this.points = points;\n    var clusters = [];\n    for (var i = 0; i < points.length; i++) {\n        if (!points[i].geometry) {\n            continue;\n        }\n        clusters.push(createPointCluster(points[i], i));\n    }\n    this.trees[maxZoom + 1] = new KDBush(clusters, getX, getY, nodeSize, Float32Array);\n    if (log) {\n        console.timeEnd(timerId);\n    }\n    for (var z = maxZoom; z >= minZoom; z--) {\n        var now = +Date.now();\n        clusters = this._cluster(clusters, z);\n        this.trees[z] = new KDBush(clusters, getX, getY, nodeSize, Float32Array);\n        if (log) {\n            console.log('z%d: %d clusters in %dms', z, clusters.length, +Date.now() - now);\n        }\n    }\n    if (log) {\n        console.timeEnd('total time');\n    }\n    return this;\n};\nSupercluster.prototype.getClusters = function getClusters(bbox, zoom) {\n    var minLng = ((bbox[0] + 180) % 360 + 360) % 360 - 180;\n    var minLat = Math.max(-90, Math.min(90, bbox[1]));\n    var maxLng = bbox[2] === 180 ? 180 : ((bbox[2] + 180) % 360 + 360) % 360 - 180;\n    var maxLat = Math.max(-90, Math.min(90, bbox[3]));\n    if (bbox[2] - bbox[0] >= 360) {\n        minLng = -180;\n        maxLng = 180;\n    } else if (minLng > maxLng) {\n        var easternHem = this.getClusters([\n            minLng,\n            minLat,\n            180,\n            maxLat\n        ], zoom);\n        var westernHem = this.getClusters([\n            -180,\n            minLat,\n            maxLng,\n            maxLat\n        ], zoom);\n        return easternHem.concat(westernHem);\n    }\n    var tree = this.trees[this._limitZoom(zoom)];\n    var ids = tree.range(lngX(minLng), latY(maxLat), lngX(maxLng), latY(minLat));\n    var clusters = [];\n    for (var i = 0, list = ids; i < list.length; i += 1) {\n        var id = list[i];\n        var c = tree.points[id];\n        clusters.push(c.numPoints ? getClusterJSON(c) : this.points[c.index]);\n    }\n    return clusters;\n};\nSupercluster.prototype.getChildren = function getChildren(clusterId) {\n    var originId = this._getOriginId(clusterId);\n    var originZoom = this._getOriginZoom(clusterId);\n    var errorMsg = 'No cluster with the specified id.';\n    var index = this.trees[originZoom];\n    if (!index) {\n        throw new Error(errorMsg);\n    }\n    var origin = index.points[originId];\n    if (!origin) {\n        throw new Error(errorMsg);\n    }\n    var r = this.options.radius / (this.options.extent * Math.pow(2, originZoom - 1));\n    var ids = index.within(origin.x, origin.y, r);\n    var children = [];\n    for (var i = 0, list = ids; i < list.length; i += 1) {\n        var id = list[i];\n        var c = index.points[id];\n        if (c.parentId === clusterId) {\n            children.push(c.numPoints ? getClusterJSON(c) : this.points[c.index]);\n        }\n    }\n    if (children.length === 0) {\n        throw new Error(errorMsg);\n    }\n    return children;\n};\nSupercluster.prototype.getLeaves = function getLeaves(clusterId, limit, offset) {\n    limit = limit || 10;\n    offset = offset || 0;\n    var leaves = [];\n    this._appendLeaves(leaves, clusterId, limit, offset, 0);\n    return leaves;\n};\nSupercluster.prototype.getTile = function getTile(z, x, y) {\n    var tree = this.trees[this._limitZoom(z)];\n    var z2 = Math.pow(2, z);\n    var ref = this.options;\n    var extent = ref.extent;\n    var radius = ref.radius;\n    var p = radius / extent;\n    var top = (y - p) / z2;\n    var bottom = (y + 1 + p) / z2;\n    var tile = { features: [] };\n    this._addTileFeatures(tree.range((x - p) / z2, top, (x + 1 + p) / z2, bottom), tree.points, x, y, z2, tile);\n    if (x === 0) {\n        this._addTileFeatures(tree.range(1 - p / z2, top, 1, bottom), tree.points, z2, y, z2, tile);\n    }\n    if (x === z2 - 1) {\n        this._addTileFeatures(tree.range(0, top, p / z2, bottom), tree.points, -1, y, z2, tile);\n    }\n    return tile.features.length ? tile : null;\n};\nSupercluster.prototype.getClusterExpansionZoom = function getClusterExpansionZoom(clusterId) {\n    var expansionZoom = this._getOriginZoom(clusterId) - 1;\n    while (expansionZoom <= this.options.maxZoom) {\n        var children = this.getChildren(clusterId);\n        expansionZoom++;\n        if (children.length !== 1) {\n            break;\n        }\n        clusterId = children[0].properties.cluster_id;\n    }\n    return expansionZoom;\n};\nSupercluster.prototype._appendLeaves = function _appendLeaves(result, clusterId, limit, offset, skipped) {\n    var children = this.getChildren(clusterId);\n    for (var i = 0, list = children; i < list.length; i += 1) {\n        var child = list[i];\n        var props = child.properties;\n        if (props && props.cluster) {\n            if (skipped + props.point_count <= offset) {\n                skipped += props.point_count;\n            } else {\n                skipped = this._appendLeaves(result, props.cluster_id, limit, offset, skipped);\n            }\n        } else if (skipped < offset) {\n            skipped++;\n        } else {\n            result.push(child);\n        }\n        if (result.length === limit) {\n            break;\n        }\n    }\n    return skipped;\n};\nSupercluster.prototype._addTileFeatures = function _addTileFeatures(ids, points, x, y, z2, tile) {\n    for (var i$1 = 0, list = ids; i$1 < list.length; i$1 += 1) {\n        var i = list[i$1];\n        var c = points[i];\n        var isCluster = c.numPoints;\n        var f = {\n            type: 1,\n            geometry: [[\n                    Math.round(this.options.extent * (c.x * z2 - x)),\n                    Math.round(this.options.extent * (c.y * z2 - y))\n                ]],\n            tags: isCluster ? getClusterProperties(c) : this.points[c.index].properties\n        };\n        var id = void 0;\n        if (isCluster) {\n            id = c.id;\n        } else if (this.options.generateId) {\n            id = c.index;\n        } else if (this.points[c.index].id) {\n            id = this.points[c.index].id;\n        }\n        if (id !== undefined) {\n            f.id = id;\n        }\n        tile.features.push(f);\n    }\n};\nSupercluster.prototype._limitZoom = function _limitZoom(z) {\n    return Math.max(this.options.minZoom, Math.min(z, this.options.maxZoom + 1));\n};\nSupercluster.prototype._cluster = function _cluster(points, zoom) {\n    var clusters = [];\n    var ref = this.options;\n    var radius = ref.radius;\n    var extent = ref.extent;\n    var reduce = ref.reduce;\n    var r = radius / (extent * Math.pow(2, zoom));\n    for (var i = 0; i < points.length; i++) {\n        var p = points[i];\n        if (p.zoom <= zoom) {\n            continue;\n        }\n        p.zoom = zoom;\n        var tree = this.trees[zoom + 1];\n        var neighborIds = tree.within(p.x, p.y, r);\n        var numPoints = p.numPoints || 1;\n        var wx = p.x * numPoints;\n        var wy = p.y * numPoints;\n        var clusterProperties = reduce && numPoints > 1 ? this._map(p, true) : null;\n        var id = (i << 5) + (zoom + 1) + this.points.length;\n        for (var i$1 = 0, list = neighborIds; i$1 < list.length; i$1 += 1) {\n            var neighborId = list[i$1];\n            var b = tree.points[neighborId];\n            if (b.zoom <= zoom) {\n                continue;\n            }\n            b.zoom = zoom;\n            var numPoints2 = b.numPoints || 1;\n            wx += b.x * numPoints2;\n            wy += b.y * numPoints2;\n            numPoints += numPoints2;\n            b.parentId = id;\n            if (reduce) {\n                if (!clusterProperties) {\n                    clusterProperties = this._map(p, true);\n                }\n                reduce(clusterProperties, this._map(b));\n            }\n        }\n        if (numPoints === 1) {\n            clusters.push(p);\n        } else {\n            p.parentId = id;\n            clusters.push(createCluster(wx / numPoints, wy / numPoints, id, numPoints, clusterProperties));\n        }\n    }\n    return clusters;\n};\nSupercluster.prototype._getOriginId = function _getOriginId(clusterId) {\n    return clusterId - this.points.length >> 5;\n};\nSupercluster.prototype._getOriginZoom = function _getOriginZoom(clusterId) {\n    return (clusterId - this.points.length) % 32;\n};\nSupercluster.prototype._map = function _map(point, clone) {\n    if (point.numPoints) {\n        return clone ? extend({}, point.properties) : point.properties;\n    }\n    var original = this.points[point.index].properties;\n    var result = this.options.map(original);\n    return clone && result === original ? extend({}, result) : result;\n};\nfunction createCluster(x, y, id, numPoints, properties) {\n    return {\n        x: x,\n        y: y,\n        zoom: Infinity,\n        id: id,\n        parentId: -1,\n        numPoints: numPoints,\n        properties: properties\n    };\n}\nfunction createPointCluster(p, id) {\n    var ref = p.geometry.coordinates;\n    var x = ref[0];\n    var y = ref[1];\n    return {\n        x: lngX(x),\n        y: latY(y),\n        zoom: Infinity,\n        index: id,\n        parentId: -1\n    };\n}\nfunction getClusterJSON(cluster) {\n    return {\n        type: 'Feature',\n        id: cluster.id,\n        properties: getClusterProperties(cluster),\n        geometry: {\n            type: 'Point',\n            coordinates: [\n                xLng(cluster.x),\n                yLat(cluster.y)\n            ]\n        }\n    };\n}\nfunction getClusterProperties(cluster) {\n    var count = cluster.numPoints;\n    var abbrev = count >= 10000 ? Math.round(count / 1000) + 'k' : count >= 1000 ? Math.round(count / 100) / 10 + 'k' : count;\n    return extend(extend({}, cluster.properties), {\n        cluster: true,\n        cluster_id: cluster.id,\n        point_count: count,\n        point_count_abbreviated: abbrev\n    });\n}\nfunction lngX(lng) {\n    return lng / 360 + 0.5;\n}\nfunction latY(lat) {\n    var sin = Math.sin(lat * Math.PI / 180);\n    var y = 0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI;\n    return y < 0 ? 0 : y > 1 ? 1 : y;\n}\nfunction xLng(x) {\n    return (x - 0.5) * 360;\n}\nfunction yLat(y) {\n    var y2 = (180 - y * 360) * Math.PI / 180;\n    return 360 * Math.atan(Math.exp(y2)) / Math.PI - 90;\n}\nfunction extend(dest, src) {\n    for (var id in src) {\n        dest[id] = src[id];\n    }\n    return dest;\n}\nfunction getX(p) {\n    return p.x;\n}\nfunction getY(p) {\n    return p.y;\n}\n\nfunction simplify(coords, first, last, sqTolerance) {\n    var maxSqDist = sqTolerance;\n    var mid = last - first >> 1;\n    var minPosToMid = last - first;\n    var index;\n    var ax = coords[first];\n    var ay = coords[first + 1];\n    var bx = coords[last];\n    var by = coords[last + 1];\n    for (var i = first + 3; i < last; i += 3) {\n        var d = getSqSegDist(coords[i], coords[i + 1], ax, ay, bx, by);\n        if (d > maxSqDist) {\n            index = i;\n            maxSqDist = d;\n        } else if (d === maxSqDist) {\n            var posToMid = Math.abs(i - mid);\n            if (posToMid < minPosToMid) {\n                index = i;\n                minPosToMid = posToMid;\n            }\n        }\n    }\n    if (maxSqDist > sqTolerance) {\n        if (index - first > 3) {\n            simplify(coords, first, index, sqTolerance);\n        }\n        coords[index + 2] = maxSqDist;\n        if (last - index > 3) {\n            simplify(coords, index, last, sqTolerance);\n        }\n    }\n}\nfunction getSqSegDist(px, py, x, y, bx, by) {\n    var dx = bx - x;\n    var dy = by - y;\n    if (dx !== 0 || dy !== 0) {\n        var t = ((px - x) * dx + (py - y) * dy) / (dx * dx + dy * dy);\n        if (t > 1) {\n            x = bx;\n            y = by;\n        } else if (t > 0) {\n            x += dx * t;\n            y += dy * t;\n        }\n    }\n    dx = px - x;\n    dy = py - y;\n    return dx * dx + dy * dy;\n}\n\nfunction createFeature(id, type, geom, tags) {\n    var feature = {\n        id: typeof id === 'undefined' ? null : id,\n        type: type,\n        geometry: geom,\n        tags: tags,\n        minX: Infinity,\n        minY: Infinity,\n        maxX: -Infinity,\n        maxY: -Infinity\n    };\n    calcBBox(feature);\n    return feature;\n}\nfunction calcBBox(feature) {\n    var geom = feature.geometry;\n    var type = feature.type;\n    if (type === 'Point' || type === 'MultiPoint' || type === 'LineString') {\n        calcLineBBox(feature, geom);\n    } else if (type === 'Polygon' || type === 'MultiLineString') {\n        for (var i = 0; i < geom.length; i++) {\n            calcLineBBox(feature, geom[i]);\n        }\n    } else if (type === 'MultiPolygon') {\n        for (i = 0; i < geom.length; i++) {\n            for (var j = 0; j < geom[i].length; j++) {\n                calcLineBBox(feature, geom[i][j]);\n            }\n        }\n    }\n}\nfunction calcLineBBox(feature, geom) {\n    for (var i = 0; i < geom.length; i += 3) {\n        feature.minX = Math.min(feature.minX, geom[i]);\n        feature.minY = Math.min(feature.minY, geom[i + 1]);\n        feature.maxX = Math.max(feature.maxX, geom[i]);\n        feature.maxY = Math.max(feature.maxY, geom[i + 1]);\n    }\n}\n\nfunction convert(data, options) {\n    var features = [];\n    if (data.type === 'FeatureCollection') {\n        for (var i = 0; i < data.features.length; i++) {\n            convertFeature(features, data.features[i], options, i);\n        }\n    } else if (data.type === 'Feature') {\n        convertFeature(features, data, options);\n    } else {\n        convertFeature(features, { geometry: data }, options);\n    }\n    return features;\n}\nfunction convertFeature(features, geojson, options, index) {\n    if (!geojson.geometry) {\n        return;\n    }\n    var coords = geojson.geometry.coordinates;\n    var type = geojson.geometry.type;\n    var tolerance = Math.pow(options.tolerance / ((1 << options.maxZoom) * options.extent), 2);\n    var geometry = [];\n    var id = geojson.id;\n    if (options.promoteId) {\n        id = geojson.properties[options.promoteId];\n    } else if (options.generateId) {\n        id = index || 0;\n    }\n    if (type === 'Point') {\n        convertPoint(coords, geometry);\n    } else if (type === 'MultiPoint') {\n        for (var i = 0; i < coords.length; i++) {\n            convertPoint(coords[i], geometry);\n        }\n    } else if (type === 'LineString') {\n        convertLine(coords, geometry, tolerance, false);\n    } else if (type === 'MultiLineString') {\n        if (options.lineMetrics) {\n            for (i = 0; i < coords.length; i++) {\n                geometry = [];\n                convertLine(coords[i], geometry, tolerance, false);\n                features.push(createFeature(id, 'LineString', geometry, geojson.properties));\n            }\n            return;\n        } else {\n            convertLines(coords, geometry, tolerance, false);\n        }\n    } else if (type === 'Polygon') {\n        convertLines(coords, geometry, tolerance, true);\n    } else if (type === 'MultiPolygon') {\n        for (i = 0; i < coords.length; i++) {\n            var polygon = [];\n            convertLines(coords[i], polygon, tolerance, true);\n            geometry.push(polygon);\n        }\n    } else if (type === 'GeometryCollection') {\n        for (i = 0; i < geojson.geometry.geometries.length; i++) {\n            convertFeature(features, {\n                id: id,\n                geometry: geojson.geometry.geometries[i],\n                properties: geojson.properties\n            }, options, index);\n        }\n        return;\n    } else {\n        throw new Error('Input data is not a valid GeoJSON object.');\n    }\n    features.push(createFeature(id, type, geometry, geojson.properties));\n}\nfunction convertPoint(coords, out) {\n    out.push(projectX(coords[0]));\n    out.push(projectY(coords[1]));\n    out.push(0);\n}\nfunction convertLine(ring, out, tolerance, isPolygon) {\n    var x0, y0;\n    var size = 0;\n    for (var j = 0; j < ring.length; j++) {\n        var x = projectX(ring[j][0]);\n        var y = projectY(ring[j][1]);\n        out.push(x);\n        out.push(y);\n        out.push(0);\n        if (j > 0) {\n            if (isPolygon) {\n                size += (x0 * y - x * y0) / 2;\n            } else {\n                size += Math.sqrt(Math.pow(x - x0, 2) + Math.pow(y - y0, 2));\n            }\n        }\n        x0 = x;\n        y0 = y;\n    }\n    var last = out.length - 3;\n    out[2] = 1;\n    simplify(out, 0, last, tolerance);\n    out[last + 2] = 1;\n    out.size = Math.abs(size);\n    out.start = 0;\n    out.end = out.size;\n}\nfunction convertLines(rings, out, tolerance, isPolygon) {\n    for (var i = 0; i < rings.length; i++) {\n        var geom = [];\n        convertLine(rings[i], geom, tolerance, isPolygon);\n        out.push(geom);\n    }\n}\nfunction projectX(x) {\n    return x / 360 + 0.5;\n}\nfunction projectY(y) {\n    var sin = Math.sin(y * Math.PI / 180);\n    var y2 = 0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI;\n    return y2 < 0 ? 0 : y2 > 1 ? 1 : y2;\n}\n\nfunction clip(features, scale, k1, k2, axis, minAll, maxAll, options) {\n    k1 /= scale;\n    k2 /= scale;\n    if (minAll >= k1 && maxAll < k2) {\n        return features;\n    } else if (maxAll < k1 || minAll >= k2) {\n        return null;\n    }\n    var clipped = [];\n    for (var i = 0; i < features.length; i++) {\n        var feature = features[i];\n        var geometry = feature.geometry;\n        var type = feature.type;\n        var min = axis === 0 ? feature.minX : feature.minY;\n        var max = axis === 0 ? feature.maxX : feature.maxY;\n        if (min >= k1 && max < k2) {\n            clipped.push(feature);\n            continue;\n        } else if (max < k1 || min >= k2) {\n            continue;\n        }\n        var newGeometry = [];\n        if (type === 'Point' || type === 'MultiPoint') {\n            clipPoints(geometry, newGeometry, k1, k2, axis);\n        } else if (type === 'LineString') {\n            clipLine(geometry, newGeometry, k1, k2, axis, false, options.lineMetrics);\n        } else if (type === 'MultiLineString') {\n            clipLines(geometry, newGeometry, k1, k2, axis, false);\n        } else if (type === 'Polygon') {\n            clipLines(geometry, newGeometry, k1, k2, axis, true);\n        } else if (type === 'MultiPolygon') {\n            for (var j = 0; j < geometry.length; j++) {\n                var polygon = [];\n                clipLines(geometry[j], polygon, k1, k2, axis, true);\n                if (polygon.length) {\n                    newGeometry.push(polygon);\n                }\n            }\n        }\n        if (newGeometry.length) {\n            if (options.lineMetrics && type === 'LineString') {\n                for (j = 0; j < newGeometry.length; j++) {\n                    clipped.push(createFeature(feature.id, type, newGeometry[j], feature.tags));\n                }\n                continue;\n            }\n            if (type === 'LineString' || type === 'MultiLineString') {\n                if (newGeometry.length === 1) {\n                    type = 'LineString';\n                    newGeometry = newGeometry[0];\n                } else {\n                    type = 'MultiLineString';\n                }\n            }\n            if (type === 'Point' || type === 'MultiPoint') {\n                type = newGeometry.length === 3 ? 'Point' : 'MultiPoint';\n            }\n            clipped.push(createFeature(feature.id, type, newGeometry, feature.tags));\n        }\n    }\n    return clipped.length ? clipped : null;\n}\nfunction clipPoints(geom, newGeom, k1, k2, axis) {\n    for (var i = 0; i < geom.length; i += 3) {\n        var a = geom[i + axis];\n        if (a >= k1 && a <= k2) {\n            newGeom.push(geom[i]);\n            newGeom.push(geom[i + 1]);\n            newGeom.push(geom[i + 2]);\n        }\n    }\n}\nfunction clipLine(geom, newGeom, k1, k2, axis, isPolygon, trackMetrics) {\n    var slice = newSlice(geom);\n    var intersect = axis === 0 ? intersectX : intersectY;\n    var len = geom.start;\n    var segLen, t;\n    for (var i = 0; i < geom.length - 3; i += 3) {\n        var ax = geom[i];\n        var ay = geom[i + 1];\n        var az = geom[i + 2];\n        var bx = geom[i + 3];\n        var by = geom[i + 4];\n        var a = axis === 0 ? ax : ay;\n        var b = axis === 0 ? bx : by;\n        var exited = false;\n        if (trackMetrics) {\n            segLen = Math.sqrt(Math.pow(ax - bx, 2) + Math.pow(ay - by, 2));\n        }\n        if (a < k1) {\n            if (b > k1) {\n                t = intersect(slice, ax, ay, bx, by, k1);\n                if (trackMetrics) {\n                    slice.start = len + segLen * t;\n                }\n            }\n        } else if (a > k2) {\n            if (b < k2) {\n                t = intersect(slice, ax, ay, bx, by, k2);\n                if (trackMetrics) {\n                    slice.start = len + segLen * t;\n                }\n            }\n        } else {\n            addPoint(slice, ax, ay, az);\n        }\n        if (b < k1 && a >= k1) {\n            t = intersect(slice, ax, ay, bx, by, k1);\n            exited = true;\n        }\n        if (b > k2 && a <= k2) {\n            t = intersect(slice, ax, ay, bx, by, k2);\n            exited = true;\n        }\n        if (!isPolygon && exited) {\n            if (trackMetrics) {\n                slice.end = len + segLen * t;\n            }\n            newGeom.push(slice);\n            slice = newSlice(geom);\n        }\n        if (trackMetrics) {\n            len += segLen;\n        }\n    }\n    var last = geom.length - 3;\n    ax = geom[last];\n    ay = geom[last + 1];\n    az = geom[last + 2];\n    a = axis === 0 ? ax : ay;\n    if (a >= k1 && a <= k2) {\n        addPoint(slice, ax, ay, az);\n    }\n    last = slice.length - 3;\n    if (isPolygon && last >= 3 && (slice[last] !== slice[0] || slice[last + 1] !== slice[1])) {\n        addPoint(slice, slice[0], slice[1], slice[2]);\n    }\n    if (slice.length) {\n        newGeom.push(slice);\n    }\n}\nfunction newSlice(line) {\n    var slice = [];\n    slice.size = line.size;\n    slice.start = line.start;\n    slice.end = line.end;\n    return slice;\n}\nfunction clipLines(geom, newGeom, k1, k2, axis, isPolygon) {\n    for (var i = 0; i < geom.length; i++) {\n        clipLine(geom[i], newGeom, k1, k2, axis, isPolygon, false);\n    }\n}\nfunction addPoint(out, x, y, z) {\n    out.push(x);\n    out.push(y);\n    out.push(z);\n}\nfunction intersectX(out, ax, ay, bx, by, x) {\n    var t = (x - ax) / (bx - ax);\n    out.push(x);\n    out.push(ay + (by - ay) * t);\n    out.push(1);\n    return t;\n}\nfunction intersectY(out, ax, ay, bx, by, y) {\n    var t = (y - ay) / (by - ay);\n    out.push(ax + (bx - ax) * t);\n    out.push(y);\n    out.push(1);\n    return t;\n}\n\nfunction wrap(features, options) {\n    var buffer = options.buffer / options.extent;\n    var merged = features;\n    var left = clip(features, 1, -1 - buffer, buffer, 0, -1, 2, options);\n    var right = clip(features, 1, 1 - buffer, 2 + buffer, 0, -1, 2, options);\n    if (left || right) {\n        merged = clip(features, 1, -buffer, 1 + buffer, 0, -1, 2, options) || [];\n        if (left) {\n            merged = shiftFeatureCoords(left, 1).concat(merged);\n        }\n        if (right) {\n            merged = merged.concat(shiftFeatureCoords(right, -1));\n        }\n    }\n    return merged;\n}\nfunction shiftFeatureCoords(features, offset) {\n    var newFeatures = [];\n    for (var i = 0; i < features.length; i++) {\n        var feature = features[i], type = feature.type;\n        var newGeometry;\n        if (type === 'Point' || type === 'MultiPoint' || type === 'LineString') {\n            newGeometry = shiftCoords(feature.geometry, offset);\n        } else if (type === 'MultiLineString' || type === 'Polygon') {\n            newGeometry = [];\n            for (var j = 0; j < feature.geometry.length; j++) {\n                newGeometry.push(shiftCoords(feature.geometry[j], offset));\n            }\n        } else if (type === 'MultiPolygon') {\n            newGeometry = [];\n            for (j = 0; j < feature.geometry.length; j++) {\n                var newPolygon = [];\n                for (var k = 0; k < feature.geometry[j].length; k++) {\n                    newPolygon.push(shiftCoords(feature.geometry[j][k], offset));\n                }\n                newGeometry.push(newPolygon);\n            }\n        }\n        newFeatures.push(createFeature(feature.id, type, newGeometry, feature.tags));\n    }\n    return newFeatures;\n}\nfunction shiftCoords(points, offset) {\n    var newPoints = [];\n    newPoints.size = points.size;\n    if (points.start !== undefined) {\n        newPoints.start = points.start;\n        newPoints.end = points.end;\n    }\n    for (var i = 0; i < points.length; i += 3) {\n        newPoints.push(points[i] + offset, points[i + 1], points[i + 2]);\n    }\n    return newPoints;\n}\n\nfunction transformTile(tile, extent) {\n    if (tile.transformed) {\n        return tile;\n    }\n    var z2 = 1 << tile.z, tx = tile.x, ty = tile.y, i, j, k;\n    for (i = 0; i < tile.features.length; i++) {\n        var feature = tile.features[i], geom = feature.geometry, type = feature.type;\n        feature.geometry = [];\n        if (type === 1) {\n            for (j = 0; j < geom.length; j += 2) {\n                feature.geometry.push(transformPoint(geom[j], geom[j + 1], extent, z2, tx, ty));\n            }\n        } else {\n            for (j = 0; j < geom.length; j++) {\n                var ring = [];\n                for (k = 0; k < geom[j].length; k += 2) {\n                    ring.push(transformPoint(geom[j][k], geom[j][k + 1], extent, z2, tx, ty));\n                }\n                feature.geometry.push(ring);\n            }\n        }\n    }\n    tile.transformed = true;\n    return tile;\n}\nfunction transformPoint(x, y, extent, z2, tx, ty) {\n    return [\n        Math.round(extent * (x * z2 - tx)),\n        Math.round(extent * (y * z2 - ty))\n    ];\n}\n\nfunction createTile(features, z, tx, ty, options) {\n    var tolerance = z === options.maxZoom ? 0 : options.tolerance / ((1 << z) * options.extent);\n    var tile = {\n        features: [],\n        numPoints: 0,\n        numSimplified: 0,\n        numFeatures: 0,\n        source: null,\n        x: tx,\n        y: ty,\n        z: z,\n        transformed: false,\n        minX: 2,\n        minY: 1,\n        maxX: -1,\n        maxY: 0\n    };\n    for (var i = 0; i < features.length; i++) {\n        tile.numFeatures++;\n        addFeature(tile, features[i], tolerance, options);\n        var minX = features[i].minX;\n        var minY = features[i].minY;\n        var maxX = features[i].maxX;\n        var maxY = features[i].maxY;\n        if (minX < tile.minX) {\n            tile.minX = minX;\n        }\n        if (minY < tile.minY) {\n            tile.minY = minY;\n        }\n        if (maxX > tile.maxX) {\n            tile.maxX = maxX;\n        }\n        if (maxY > tile.maxY) {\n            tile.maxY = maxY;\n        }\n    }\n    return tile;\n}\nfunction addFeature(tile, feature, tolerance, options) {\n    var geom = feature.geometry, type = feature.type, simplified = [];\n    if (type === 'Point' || type === 'MultiPoint') {\n        for (var i = 0; i < geom.length; i += 3) {\n            simplified.push(geom[i]);\n            simplified.push(geom[i + 1]);\n            tile.numPoints++;\n            tile.numSimplified++;\n        }\n    } else if (type === 'LineString') {\n        addLine(simplified, geom, tile, tolerance, false, false);\n    } else if (type === 'MultiLineString' || type === 'Polygon') {\n        for (i = 0; i < geom.length; i++) {\n            addLine(simplified, geom[i], tile, tolerance, type === 'Polygon', i === 0);\n        }\n    } else if (type === 'MultiPolygon') {\n        for (var k = 0; k < geom.length; k++) {\n            var polygon = geom[k];\n            for (i = 0; i < polygon.length; i++) {\n                addLine(simplified, polygon[i], tile, tolerance, true, i === 0);\n            }\n        }\n    }\n    if (simplified.length) {\n        var tags = feature.tags || null;\n        if (type === 'LineString' && options.lineMetrics) {\n            tags = {};\n            for (var key in feature.tags) {\n                tags[key] = feature.tags[key];\n            }\n            tags['mapbox_clip_start'] = geom.start / geom.size;\n            tags['mapbox_clip_end'] = geom.end / geom.size;\n        }\n        var tileFeature = {\n            geometry: simplified,\n            type: type === 'Polygon' || type === 'MultiPolygon' ? 3 : type === 'LineString' || type === 'MultiLineString' ? 2 : 1,\n            tags: tags\n        };\n        if (feature.id !== null) {\n            tileFeature.id = feature.id;\n        }\n        tile.features.push(tileFeature);\n    }\n}\nfunction addLine(result, geom, tile, tolerance, isPolygon, isOuter) {\n    var sqTolerance = tolerance * tolerance;\n    if (tolerance > 0 && geom.size < (isPolygon ? sqTolerance : tolerance)) {\n        tile.numPoints += geom.length / 3;\n        return;\n    }\n    var ring = [];\n    for (var i = 0; i < geom.length; i += 3) {\n        if (tolerance === 0 || geom[i + 2] > sqTolerance) {\n            tile.numSimplified++;\n            ring.push(geom[i]);\n            ring.push(geom[i + 1]);\n        }\n        tile.numPoints++;\n    }\n    if (isPolygon) {\n        rewind$1(ring, isOuter);\n    }\n    result.push(ring);\n}\nfunction rewind$1(ring, clockwise) {\n    var area = 0;\n    for (var i = 0, len = ring.length, j = len - 2; i < len; j = i, i += 2) {\n        area += (ring[i] - ring[j]) * (ring[i + 1] + ring[j + 1]);\n    }\n    if (area > 0 === clockwise) {\n        for (i = 0, len = ring.length; i < len / 2; i += 2) {\n            var x = ring[i];\n            var y = ring[i + 1];\n            ring[i] = ring[len - 2 - i];\n            ring[i + 1] = ring[len - 1 - i];\n            ring[len - 2 - i] = x;\n            ring[len - 1 - i] = y;\n        }\n    }\n}\n\nfunction geojsonvt(data, options) {\n    return new GeoJSONVT(data, options);\n}\nfunction GeoJSONVT(data, options) {\n    options = this.options = extend$1(Object.create(this.options), options);\n    var debug = options.debug;\n    if (debug) {\n        console.time('preprocess data');\n    }\n    if (options.maxZoom < 0 || options.maxZoom > 24) {\n        throw new Error('maxZoom should be in the 0-24 range');\n    }\n    if (options.promoteId && options.generateId) {\n        throw new Error('promoteId and generateId cannot be used together.');\n    }\n    var features = convert(data, options);\n    this.tiles = {};\n    this.tileCoords = [];\n    if (debug) {\n        console.timeEnd('preprocess data');\n        console.log('index: maxZoom: %d, maxPoints: %d', options.indexMaxZoom, options.indexMaxPoints);\n        console.time('generate tiles');\n        this.stats = {};\n        this.total = 0;\n    }\n    features = wrap(features, options);\n    if (features.length) {\n        this.splitTile(features, 0, 0, 0);\n    }\n    if (debug) {\n        if (features.length) {\n            console.log('features: %d, points: %d', this.tiles[0].numFeatures, this.tiles[0].numPoints);\n        }\n        console.timeEnd('generate tiles');\n        console.log('tiles generated:', this.total, JSON.stringify(this.stats));\n    }\n}\nGeoJSONVT.prototype.options = {\n    maxZoom: 14,\n    indexMaxZoom: 5,\n    indexMaxPoints: 100000,\n    tolerance: 3,\n    extent: 4096,\n    buffer: 64,\n    lineMetrics: false,\n    promoteId: null,\n    generateId: false,\n    debug: 0\n};\nGeoJSONVT.prototype.splitTile = function (features, z, x, y, cz, cx, cy) {\n    var stack = [\n            features,\n            z,\n            x,\n            y\n        ], options = this.options, debug = options.debug;\n    while (stack.length) {\n        y = stack.pop();\n        x = stack.pop();\n        z = stack.pop();\n        features = stack.pop();\n        var z2 = 1 << z, id = toID(z, x, y), tile = this.tiles[id];\n        if (!tile) {\n            if (debug > 1) {\n                console.time('creation');\n            }\n            tile = this.tiles[id] = createTile(features, z, x, y, options);\n            this.tileCoords.push({\n                z: z,\n                x: x,\n                y: y\n            });\n            if (debug) {\n                if (debug > 1) {\n                    console.log('tile z%d-%d-%d (features: %d, points: %d, simplified: %d)', z, x, y, tile.numFeatures, tile.numPoints, tile.numSimplified);\n                    console.timeEnd('creation');\n                }\n                var key = 'z' + z;\n                this.stats[key] = (this.stats[key] || 0) + 1;\n                this.total++;\n            }\n        }\n        tile.source = features;\n        if (!cz) {\n            if (z === options.indexMaxZoom || tile.numPoints <= options.indexMaxPoints) {\n                continue;\n            }\n        } else {\n            if (z === options.maxZoom || z === cz) {\n                continue;\n            }\n            var m = 1 << cz - z;\n            if (x !== Math.floor(cx / m) || y !== Math.floor(cy / m)) {\n                continue;\n            }\n        }\n        tile.source = null;\n        if (features.length === 0) {\n            continue;\n        }\n        if (debug > 1) {\n            console.time('clipping');\n        }\n        var k1 = 0.5 * options.buffer / options.extent, k2 = 0.5 - k1, k3 = 0.5 + k1, k4 = 1 + k1, tl, bl, tr, br, left, right;\n        tl = bl = tr = br = null;\n        left = clip(features, z2, x - k1, x + k3, 0, tile.minX, tile.maxX, options);\n        right = clip(features, z2, x + k2, x + k4, 0, tile.minX, tile.maxX, options);\n        features = null;\n        if (left) {\n            tl = clip(left, z2, y - k1, y + k3, 1, tile.minY, tile.maxY, options);\n            bl = clip(left, z2, y + k2, y + k4, 1, tile.minY, tile.maxY, options);\n            left = null;\n        }\n        if (right) {\n            tr = clip(right, z2, y - k1, y + k3, 1, tile.minY, tile.maxY, options);\n            br = clip(right, z2, y + k2, y + k4, 1, tile.minY, tile.maxY, options);\n            right = null;\n        }\n        if (debug > 1) {\n            console.timeEnd('clipping');\n        }\n        stack.push(tl || [], z + 1, x * 2, y * 2);\n        stack.push(bl || [], z + 1, x * 2, y * 2 + 1);\n        stack.push(tr || [], z + 1, x * 2 + 1, y * 2);\n        stack.push(br || [], z + 1, x * 2 + 1, y * 2 + 1);\n    }\n};\nGeoJSONVT.prototype.getTile = function (z, x, y) {\n    var options = this.options, extent = options.extent, debug = options.debug;\n    if (z < 0 || z > 24) {\n        return null;\n    }\n    var z2 = 1 << z;\n    x = (x % z2 + z2) % z2;\n    var id = toID(z, x, y);\n    if (this.tiles[id]) {\n        return transformTile(this.tiles[id], extent);\n    }\n    if (debug > 1) {\n        console.log('drilling down to z%d-%d-%d', z, x, y);\n    }\n    var z0 = z, x0 = x, y0 = y, parent;\n    while (!parent && z0 > 0) {\n        z0--;\n        x0 = Math.floor(x0 / 2);\n        y0 = Math.floor(y0 / 2);\n        parent = this.tiles[toID(z0, x0, y0)];\n    }\n    if (!parent || !parent.source) {\n        return null;\n    }\n    if (debug > 1) {\n        console.log('found parent tile z%d-%d-%d', z0, x0, y0);\n    }\n    if (debug > 1) {\n        console.time('drilling down');\n    }\n    this.splitTile(parent.source, z0, x0, y0, z, x, y);\n    if (debug > 1) {\n        console.timeEnd('drilling down');\n    }\n    return this.tiles[id] ? transformTile(this.tiles[id], extent) : null;\n};\nfunction toID(z, x, y) {\n    return ((1 << z) * y + x) * 32 + z;\n}\nfunction extend$1(dest, src) {\n    for (var i in src) {\n        dest[i] = src[i];\n    }\n    return dest;\n}\n\nfunction loadGeoJSONTile(params, callback) {\n    var canonical = params.tileID.canonical;\n    if (!this._geoJSONIndex) {\n        return callback(null, null);\n    }\n    var geoJSONTile = this._geoJSONIndex.getTile(canonical.z, canonical.x, canonical.y);\n    if (!geoJSONTile) {\n        return callback(null, null);\n    }\n    var geojsonWrapper = new GeoJSONWrapper(geoJSONTile.features);\n    var pbf = vtPbf(geojsonWrapper);\n    if (pbf.byteOffset !== 0 || pbf.byteLength !== pbf.buffer.byteLength) {\n        pbf = new Uint8Array(pbf);\n    }\n    callback(null, {\n        vectorTile: geojsonWrapper,\n        rawData: pbf.buffer\n    });\n}\nvar GeoJSONWorkerSource = function (VectorTileWorkerSource) {\n    function GeoJSONWorkerSource(actor, layerIndex, availableImages, loadGeoJSON) {\n        VectorTileWorkerSource.call(this, actor, layerIndex, availableImages, loadGeoJSONTile);\n        if (loadGeoJSON) {\n            this.loadGeoJSON = loadGeoJSON;\n        }\n    }\n    if (VectorTileWorkerSource)\n        GeoJSONWorkerSource.__proto__ = VectorTileWorkerSource;\n    GeoJSONWorkerSource.prototype = Object.create(VectorTileWorkerSource && VectorTileWorkerSource.prototype);\n    GeoJSONWorkerSource.prototype.constructor = GeoJSONWorkerSource;\n    GeoJSONWorkerSource.prototype.loadData = function loadData(params, callback) {\n        if (this._pendingCallback) {\n            this._pendingCallback(null, { abandoned: true });\n        }\n        this._pendingCallback = callback;\n        this._pendingLoadDataParams = params;\n        if (this._state && this._state !== 'Idle') {\n            this._state = 'NeedsLoadData';\n        } else {\n            this._state = 'Coalescing';\n            this._loadData();\n        }\n    };\n    GeoJSONWorkerSource.prototype._loadData = function _loadData() {\n        var this$1 = this;\n        if (!this._pendingCallback || !this._pendingLoadDataParams) {\n            return;\n        }\n        var callback = this._pendingCallback;\n        var params = this._pendingLoadDataParams;\n        delete this._pendingCallback;\n        delete this._pendingLoadDataParams;\n        var perf = params && params.request && params.request.collectResourceTiming ? new performance$1.RequestPerformance(params.request) : false;\n        this.loadGeoJSON(params, function (err, data) {\n            if (err || !data) {\n                return callback(err);\n            } else if (typeof data !== 'object') {\n                return callback(new Error('Input data given to \\'' + params.source + '\\' is not a valid GeoJSON object.'));\n            } else {\n                geojsonRewind(data, true);\n                try {\n                    this$1._geoJSONIndex = params.cluster ? new Supercluster(getSuperclusterOptions(params)).load(data.features) : geojsonvt(data, params.geojsonVtOptions);\n                } catch (err) {\n                    return callback(err);\n                }\n                this$1.loaded = {};\n                var result = {};\n                if (perf) {\n                    var resourceTimingData = perf.finish();\n                    if (resourceTimingData) {\n                        result.resourceTiming = {};\n                        result.resourceTiming[params.source] = JSON.parse(JSON.stringify(resourceTimingData));\n                    }\n                }\n                callback(null, result);\n            }\n        });\n    };\n    GeoJSONWorkerSource.prototype.coalesce = function coalesce() {\n        if (this._state === 'Coalescing') {\n            this._state = 'Idle';\n        } else if (this._state === 'NeedsLoadData') {\n            this._state = 'Coalescing';\n            this._loadData();\n        }\n    };\n    GeoJSONWorkerSource.prototype.reloadTile = function reloadTile(params, callback) {\n        var loaded = this.loaded, uid = params.uid;\n        if (loaded && loaded[uid]) {\n            return VectorTileWorkerSource.prototype.reloadTile.call(this, params, callback);\n        } else {\n            return this.loadTile(params, callback);\n        }\n    };\n    GeoJSONWorkerSource.prototype.loadGeoJSON = function loadGeoJSON(params, callback) {\n        if (params.request) {\n            performance$1.getJSON(params.request, callback);\n        } else if (typeof params.data === 'string') {\n            try {\n                return callback(null, JSON.parse(params.data));\n            } catch (e) {\n                return callback(new Error('Input data given to \\'' + params.source + '\\' is not a valid GeoJSON object.'));\n            }\n        } else {\n            return callback(new Error('Input data given to \\'' + params.source + '\\' is not a valid GeoJSON object.'));\n        }\n    };\n    GeoJSONWorkerSource.prototype.removeSource = function removeSource(params, callback) {\n        if (this._pendingCallback) {\n            this._pendingCallback(null, { abandoned: true });\n        }\n        callback();\n    };\n    GeoJSONWorkerSource.prototype.getClusterExpansionZoom = function getClusterExpansionZoom(params, callback) {\n        try {\n            callback(null, this._geoJSONIndex.getClusterExpansionZoom(params.clusterId));\n        } catch (e) {\n            callback(e);\n        }\n    };\n    GeoJSONWorkerSource.prototype.getClusterChildren = function getClusterChildren(params, callback) {\n        try {\n            callback(null, this._geoJSONIndex.getChildren(params.clusterId));\n        } catch (e) {\n            callback(e);\n        }\n    };\n    GeoJSONWorkerSource.prototype.getClusterLeaves = function getClusterLeaves(params, callback) {\n        try {\n            callback(null, this._geoJSONIndex.getLeaves(params.clusterId, params.limit, params.offset));\n        } catch (e) {\n            callback(e);\n        }\n    };\n    return GeoJSONWorkerSource;\n}(VectorTileWorkerSource);\nfunction getSuperclusterOptions(ref) {\n    var superclusterOptions = ref.superclusterOptions;\n    var clusterProperties = ref.clusterProperties;\n    if (!clusterProperties || !superclusterOptions) {\n        return superclusterOptions;\n    }\n    var mapExpressions = {};\n    var reduceExpressions = {};\n    var globals = {\n        accumulated: null,\n        zoom: 0\n    };\n    var feature = { properties: null };\n    var propertyNames = Object.keys(clusterProperties);\n    for (var i = 0, list = propertyNames; i < list.length; i += 1) {\n        var key = list[i];\n        var ref$1 = clusterProperties[key];\n        var operator = ref$1[0];\n        var mapExpression = ref$1[1];\n        var mapExpressionParsed = performance$1.createExpression(mapExpression);\n        var reduceExpressionParsed = performance$1.createExpression(typeof operator === 'string' ? [\n            operator,\n            ['accumulated'],\n            [\n                'get',\n                key\n            ]\n        ] : operator);\n        mapExpressions[key] = mapExpressionParsed.value;\n        reduceExpressions[key] = reduceExpressionParsed.value;\n    }\n    superclusterOptions.map = function (pointProperties) {\n        feature.properties = pointProperties;\n        var properties = {};\n        for (var i = 0, list = propertyNames; i < list.length; i += 1) {\n            var key = list[i];\n            properties[key] = mapExpressions[key].evaluate(globals, feature);\n        }\n        return properties;\n    };\n    superclusterOptions.reduce = function (accumulated, clusterProperties) {\n        feature.properties = clusterProperties;\n        for (var i = 0, list = propertyNames; i < list.length; i += 1) {\n            var key = list[i];\n            globals.accumulated = accumulated[key];\n            accumulated[key] = reduceExpressions[key].evaluate(globals, feature);\n        }\n    };\n    return superclusterOptions;\n}\n\nvar Worker = function Worker(self) {\n    var this$1 = this;\n    this.self = self;\n    this.actor = new performance$1.Actor(self, this);\n    this.layerIndexes = {};\n    this.availableImages = {};\n    this.workerSourceTypes = {\n        vector: VectorTileWorkerSource,\n        geojson: GeoJSONWorkerSource\n    };\n    this.workerSources = {};\n    this.demWorkerSources = {};\n    this.self.registerWorkerSource = function (name, WorkerSource) {\n        if (this$1.workerSourceTypes[name]) {\n            throw new Error('Worker source with name \"' + name + '\" already registered.');\n        }\n        this$1.workerSourceTypes[name] = WorkerSource;\n    };\n    this.self.registerRTLTextPlugin = function (rtlTextPlugin) {\n        if (performance$1.plugin.isParsed()) {\n            throw new Error('RTL text plugin already registered.');\n        }\n        performance$1.plugin['applyArabicShaping'] = rtlTextPlugin.applyArabicShaping;\n        performance$1.plugin['processBidirectionalText'] = rtlTextPlugin.processBidirectionalText;\n        performance$1.plugin['processStyledBidirectionalText'] = rtlTextPlugin.processStyledBidirectionalText;\n    };\n};\nWorker.prototype.setReferrer = function setReferrer(mapID, referrer) {\n    this.referrer = referrer;\n};\nWorker.prototype.setImages = function setImages(mapId, images, callback) {\n    this.availableImages[mapId] = images;\n    for (var workerSource in this.workerSources[mapId]) {\n        var ws = this.workerSources[mapId][workerSource];\n        for (var source in ws) {\n            ws[source].availableImages = images;\n        }\n    }\n    callback();\n};\nWorker.prototype.setLayers = function setLayers(mapId, layers, callback) {\n    this.getLayerIndex(mapId).replace(layers);\n    callback();\n};\nWorker.prototype.updateLayers = function updateLayers(mapId, params, callback) {\n    this.getLayerIndex(mapId).update(params.layers, params.removedIds);\n    callback();\n};\nWorker.prototype.loadTile = function loadTile(mapId, params, callback) {\n    this.getWorkerSource(mapId, params.type, params.source).loadTile(params, callback);\n};\nWorker.prototype.loadDEMTile = function loadDEMTile(mapId, params, callback) {\n    this.getDEMWorkerSource(mapId, params.source).loadTile(params, callback);\n};\nWorker.prototype.reloadTile = function reloadTile(mapId, params, callback) {\n    this.getWorkerSource(mapId, params.type, params.source).reloadTile(params, callback);\n};\nWorker.prototype.abortTile = function abortTile(mapId, params, callback) {\n    this.getWorkerSource(mapId, params.type, params.source).abortTile(params, callback);\n};\nWorker.prototype.removeTile = function removeTile(mapId, params, callback) {\n    this.getWorkerSource(mapId, params.type, params.source).removeTile(params, callback);\n};\nWorker.prototype.removeDEMTile = function removeDEMTile(mapId, params) {\n    this.getDEMWorkerSource(mapId, params.source).removeTile(params);\n};\nWorker.prototype.removeSource = function removeSource(mapId, params, callback) {\n    if (!this.workerSources[mapId] || !this.workerSources[mapId][params.type] || !this.workerSources[mapId][params.type][params.source]) {\n        return;\n    }\n    var worker = this.workerSources[mapId][params.type][params.source];\n    delete this.workerSources[mapId][params.type][params.source];\n    if (worker.removeSource !== undefined) {\n        worker.removeSource(params, callback);\n    } else {\n        callback();\n    }\n};\nWorker.prototype.loadWorkerSource = function loadWorkerSource(map, params, callback) {\n    try {\n        this.self.importScripts(params.url);\n        callback();\n    } catch (e) {\n        callback(e.toString());\n    }\n};\nWorker.prototype.syncRTLPluginState = function syncRTLPluginState(map, state, callback) {\n    try {\n        performance$1.plugin.setState(state);\n        var pluginURL = performance$1.plugin.getPluginURL();\n        if (performance$1.plugin.isLoaded() && !performance$1.plugin.isParsed() && pluginURL != null) {\n            this.self.importScripts(pluginURL);\n            var complete = performance$1.plugin.isParsed();\n            var error = complete ? undefined : new Error('RTL Text Plugin failed to import scripts from ' + pluginURL);\n            callback(error, complete);\n        }\n    } catch (e) {\n        callback(e.toString());\n    }\n};\nWorker.prototype.getAvailableImages = function getAvailableImages(mapId) {\n    var availableImages = this.availableImages[mapId];\n    if (!availableImages) {\n        availableImages = [];\n    }\n    return availableImages;\n};\nWorker.prototype.getLayerIndex = function getLayerIndex(mapId) {\n    var layerIndexes = this.layerIndexes[mapId];\n    if (!layerIndexes) {\n        layerIndexes = this.layerIndexes[mapId] = new StyleLayerIndex();\n    }\n    return layerIndexes;\n};\nWorker.prototype.getWorkerSource = function getWorkerSource(mapId, type, source) {\n    var this$1 = this;\n    if (!this.workerSources[mapId]) {\n        this.workerSources[mapId] = {};\n    }\n    if (!this.workerSources[mapId][type]) {\n        this.workerSources[mapId][type] = {};\n    }\n    if (!this.workerSources[mapId][type][source]) {\n        var actor = {\n            send: function (type, data, callback) {\n                this$1.actor.send(type, data, callback, mapId);\n            }\n        };\n        this.workerSources[mapId][type][source] = new this.workerSourceTypes[type](actor, this.getLayerIndex(mapId), this.getAvailableImages(mapId));\n    }\n    return this.workerSources[mapId][type][source];\n};\nWorker.prototype.getDEMWorkerSource = function getDEMWorkerSource(mapId, source) {\n    if (!this.demWorkerSources[mapId]) {\n        this.demWorkerSources[mapId] = {};\n    }\n    if (!this.demWorkerSources[mapId][source]) {\n        this.demWorkerSources[mapId][source] = new RasterDEMTileWorkerSource();\n    }\n    return this.demWorkerSources[mapId][source];\n};\nWorker.prototype.enforceCacheSizeLimit = function enforceCacheSizeLimit$1(mapId, limit) {\n    performance$1.enforceCacheSizeLimit(limit);\n};\nif (typeof WorkerGlobalScope !== 'undefined' && typeof performance$1.window !== 'undefined' && performance$1.window instanceof WorkerGlobalScope) {\n    performance$1.window.worker = new Worker(performance$1.window);\n}\n\nreturn Worker;\n\n});\n\ndefine(['./shared'], function (performance) { 'use strict';\n\nvar mapboxGlSupported = performance.createCommonjsModule(function (module) {\nif ( module.exports) {\n    module.exports = isSupported;\n} else if (window) {\n    window.mapboxgl = window.mapboxgl || {};\n    window.mapboxgl.supported = isSupported;\n    window.mapboxgl.notSupportedReason = notSupportedReason;\n}\nfunction isSupported(options) {\n    return !notSupportedReason(options);\n}\nfunction notSupportedReason(options) {\n    if (!isBrowser()) {\n        return 'not a browser';\n    }\n    if (!isArraySupported()) {\n        return 'insufficent Array support';\n    }\n    if (!isFunctionSupported()) {\n        return 'insufficient Function support';\n    }\n    if (!isObjectSupported()) {\n        return 'insufficient Object support';\n    }\n    if (!isJSONSupported()) {\n        return 'insufficient JSON support';\n    }\n    if (!isWorkerSupported()) {\n        return 'insufficient worker support';\n    }\n    if (!isUint8ClampedArraySupported()) {\n        return 'insufficient Uint8ClampedArray support';\n    }\n    if (!isArrayBufferSupported()) {\n        return 'insufficient ArrayBuffer support';\n    }\n    if (!isCanvasGetImageDataSupported()) {\n        return 'insufficient Canvas/getImageData support';\n    }\n    if (!isWebGLSupportedCached(options && options.failIfMajorPerformanceCaveat)) {\n        return 'insufficient WebGL support';\n    }\n}\nfunction isBrowser() {\n    return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction isArraySupported() {\n    return Array.prototype && Array.prototype.every && Array.prototype.filter && Array.prototype.forEach && Array.prototype.indexOf && Array.prototype.lastIndexOf && Array.prototype.map && Array.prototype.some && Array.prototype.reduce && Array.prototype.reduceRight && Array.isArray;\n}\nfunction isFunctionSupported() {\n    return Function.prototype && Function.prototype.bind;\n}\nfunction isObjectSupported() {\n    return Object.keys && Object.create && Object.getPrototypeOf && Object.getOwnPropertyNames && Object.isSealed && Object.isFrozen && Object.isExtensible && Object.getOwnPropertyDescriptor && Object.defineProperty && Object.defineProperties && Object.seal && Object.freeze && Object.preventExtensions;\n}\nfunction isJSONSupported() {\n    return 'JSON' in window && 'parse' in JSON && 'stringify' in JSON;\n}\nfunction isWorkerSupported() {\n    if (!('Worker' in window && 'Blob' in window && 'URL' in window)) {\n        return false;\n    }\n    var blob = new Blob([''], { type: 'text/javascript' });\n    var workerURL = URL.createObjectURL(blob);\n    var supported;\n    var worker;\n    try {\n        worker = new Worker(workerURL);\n        supported = true;\n    } catch (e) {\n        supported = false;\n    }\n    if (worker) {\n        worker.terminate();\n    }\n    URL.revokeObjectURL(workerURL);\n    return supported;\n}\nfunction isUint8ClampedArraySupported() {\n    return 'Uint8ClampedArray' in window;\n}\nfunction isArrayBufferSupported() {\n    return ArrayBuffer.isView;\n}\nfunction isCanvasGetImageDataSupported() {\n    var canvas = document.createElement('canvas');\n    canvas.width = canvas.height = 1;\n    var context = canvas.getContext('2d');\n    if (!context) {\n        return false;\n    }\n    var imageData = context.getImageData(0, 0, 1, 1);\n    return imageData && imageData.width === canvas.width;\n}\nvar isWebGLSupportedCache = {};\nfunction isWebGLSupportedCached(failIfMajorPerformanceCaveat) {\n    if (isWebGLSupportedCache[failIfMajorPerformanceCaveat] === undefined) {\n        isWebGLSupportedCache[failIfMajorPerformanceCaveat] = isWebGLSupported(failIfMajorPerformanceCaveat);\n    }\n    return isWebGLSupportedCache[failIfMajorPerformanceCaveat];\n}\nisSupported.webGLContextAttributes = {\n    antialias: false,\n    alpha: true,\n    stencil: true,\n    depth: true\n};\nfunction getWebGLContext(failIfMajorPerformanceCaveat) {\n    var canvas = document.createElement('canvas');\n    var attributes = Object.create(isSupported.webGLContextAttributes);\n    attributes.failIfMajorPerformanceCaveat = failIfMajorPerformanceCaveat;\n    if (canvas.probablySupportsContext) {\n        return canvas.probablySupportsContext('webgl', attributes) || canvas.probablySupportsContext('experimental-webgl', attributes);\n    } else if (canvas.supportsContext) {\n        return canvas.supportsContext('webgl', attributes) || canvas.supportsContext('experimental-webgl', attributes);\n    } else {\n        return canvas.getContext('webgl', attributes) || canvas.getContext('experimental-webgl', attributes);\n    }\n}\nfunction isWebGLSupported(failIfMajorPerformanceCaveat) {\n    var gl = getWebGLContext(failIfMajorPerformanceCaveat);\n    if (!gl) {\n        return false;\n    }\n    var shader = gl.createShader(gl.VERTEX_SHADER);\n    if (!shader || gl.isContextLost()) {\n        return false;\n    }\n    gl.shaderSource(shader, 'void main() {}');\n    gl.compileShader(shader);\n    return gl.getShaderParameter(shader, gl.COMPILE_STATUS) === true;\n}\n});\n\nvar DOM = {};\nDOM.create = function (tagName, className, container) {\n    var el = performance.window.document.createElement(tagName);\n    if (className !== undefined) {\n        el.className = className;\n    }\n    if (container) {\n        container.appendChild(el);\n    }\n    return el;\n};\nDOM.createNS = function (namespaceURI, tagName) {\n    var el = performance.window.document.createElementNS(namespaceURI, tagName);\n    return el;\n};\nvar docStyle = performance.window.document.documentElement.style;\nfunction testProp(props) {\n    if (!docStyle) {\n        return props[0];\n    }\n    for (var i = 0; i < props.length; i++) {\n        if (props[i] in docStyle) {\n            return props[i];\n        }\n    }\n    return props[0];\n}\nvar selectProp = testProp([\n    'userSelect',\n    'MozUserSelect',\n    'WebkitUserSelect',\n    'msUserSelect'\n]);\nvar userSelect;\nDOM.disableDrag = function () {\n    if (docStyle && selectProp) {\n        userSelect = docStyle[selectProp];\n        docStyle[selectProp] = 'none';\n    }\n};\nDOM.enableDrag = function () {\n    if (docStyle && selectProp) {\n        docStyle[selectProp] = userSelect;\n    }\n};\nvar transformProp = testProp([\n    'transform',\n    'WebkitTransform'\n]);\nDOM.setTransform = function (el, value) {\n    el.style[transformProp] = value;\n};\nvar passiveSupported = false;\ntry {\n    var options$1 = Object.defineProperty({}, 'passive', {\n        get: function get() {\n            passiveSupported = true;\n        }\n    });\n    performance.window.addEventListener('test', options$1, options$1);\n    performance.window.removeEventListener('test', options$1, options$1);\n} catch (err) {\n    passiveSupported = false;\n}\nDOM.addEventListener = function (target, type, callback, options) {\n    if (options === void 0)\n        options = {};\n    if ('passive' in options && passiveSupported) {\n        target.addEventListener(type, callback, options);\n    } else {\n        target.addEventListener(type, callback, options.capture);\n    }\n};\nDOM.removeEventListener = function (target, type, callback, options) {\n    if (options === void 0)\n        options = {};\n    if ('passive' in options && passiveSupported) {\n        target.removeEventListener(type, callback, options);\n    } else {\n        target.removeEventListener(type, callback, options.capture);\n    }\n};\nvar suppressClick = function (e) {\n    e.preventDefault();\n    e.stopPropagation();\n    performance.window.removeEventListener('click', suppressClick, true);\n};\nDOM.suppressClick = function () {\n    performance.window.addEventListener('click', suppressClick, true);\n    performance.window.setTimeout(function () {\n        performance.window.removeEventListener('click', suppressClick, true);\n    }, 0);\n};\nDOM.mousePos = function (el, e) {\n    var rect = el.getBoundingClientRect();\n    return new performance.Point(e.clientX - rect.left - el.clientLeft, e.clientY - rect.top - el.clientTop);\n};\nDOM.touchPos = function (el, touches) {\n    var rect = el.getBoundingClientRect(), points = [];\n    for (var i = 0; i < touches.length; i++) {\n        points.push(new performance.Point(touches[i].clientX - rect.left - el.clientLeft, touches[i].clientY - rect.top - el.clientTop));\n    }\n    return points;\n};\nDOM.mouseButton = function (e) {\n    if (typeof performance.window.InstallTrigger !== 'undefined' && e.button === 2 && e.ctrlKey && performance.window.navigator.platform.toUpperCase().indexOf('MAC') >= 0) {\n        return 0;\n    }\n    return e.button;\n};\nDOM.remove = function (node) {\n    if (node.parentNode) {\n        node.parentNode.removeChild(node);\n    }\n};\n\nfunction loadSprite (baseURL, requestManager, callback) {\n    var json, image, error;\n    var format = performance.browser.devicePixelRatio > 1 ? '@2x' : '';\n    var jsonRequest = performance.getJSON(requestManager.transformRequest(requestManager.normalizeSpriteURL(baseURL, format, '.json'), performance.ResourceType.SpriteJSON), function (err, data) {\n        jsonRequest = null;\n        if (!error) {\n            error = err;\n            json = data;\n            maybeComplete();\n        }\n    });\n    var imageRequest = performance.getImage(requestManager.transformRequest(requestManager.normalizeSpriteURL(baseURL, format, '.png'), performance.ResourceType.SpriteImage), function (err, img) {\n        imageRequest = null;\n        if (!error) {\n            error = err;\n            image = img;\n            maybeComplete();\n        }\n    });\n    function maybeComplete() {\n        if (error) {\n            callback(error);\n        } else if (json && image) {\n            var imageData = performance.browser.getImageData(image);\n            var result = {};\n            for (var id in json) {\n                var ref = json[id];\n                var width = ref.width;\n                var height = ref.height;\n                var x = ref.x;\n                var y = ref.y;\n                var sdf = ref.sdf;\n                var pixelRatio = ref.pixelRatio;\n                var stretchX = ref.stretchX;\n                var stretchY = ref.stretchY;\n                var content = ref.content;\n                var data = new performance.RGBAImage({\n                    width: width,\n                    height: height\n                });\n                performance.RGBAImage.copy(imageData, data, {\n                    x: x,\n                    y: y\n                }, {\n                    x: 0,\n                    y: 0\n                }, {\n                    width: width,\n                    height: height\n                });\n                result[id] = {\n                    data: data,\n                    pixelRatio: pixelRatio,\n                    sdf: sdf,\n                    stretchX: stretchX,\n                    stretchY: stretchY,\n                    content: content\n                };\n            }\n            callback(null, result);\n        }\n    }\n    return {\n        cancel: function cancel() {\n            if (jsonRequest) {\n                jsonRequest.cancel();\n                jsonRequest = null;\n            }\n            if (imageRequest) {\n                imageRequest.cancel();\n                imageRequest = null;\n            }\n        }\n    };\n}\n\nfunction renderStyleImage(image) {\n    var userImage = image.userImage;\n    if (userImage && userImage.render) {\n        var updated = userImage.render();\n        if (updated) {\n            image.data.replace(new Uint8Array(userImage.data.buffer));\n            return true;\n        }\n    }\n    return false;\n}\n\nvar padding = 1;\nvar ImageManager = function (Evented) {\n    function ImageManager() {\n        Evented.call(this);\n        this.images = {};\n        this.updatedImages = {};\n        this.callbackDispatchedThisFrame = {};\n        this.loaded = false;\n        this.requestors = [];\n        this.patterns = {};\n        this.atlasImage = new performance.RGBAImage({\n            width: 1,\n            height: 1\n        });\n        this.dirty = true;\n    }\n    if (Evented)\n        ImageManager.__proto__ = Evented;\n    ImageManager.prototype = Object.create(Evented && Evented.prototype);\n    ImageManager.prototype.constructor = ImageManager;\n    ImageManager.prototype.isLoaded = function isLoaded() {\n        return this.loaded;\n    };\n    ImageManager.prototype.setLoaded = function setLoaded(loaded) {\n        if (this.loaded === loaded) {\n            return;\n        }\n        this.loaded = loaded;\n        if (loaded) {\n            for (var i = 0, list = this.requestors; i < list.length; i += 1) {\n                var ref = list[i];\n                var ids = ref.ids;\n                var callback = ref.callback;\n                this._notify(ids, callback);\n            }\n            this.requestors = [];\n        }\n    };\n    ImageManager.prototype.getImage = function getImage(id) {\n        return this.images[id];\n    };\n    ImageManager.prototype.addImage = function addImage(id, image) {\n        if (this._validate(id, image)) {\n            this.images[id] = image;\n        }\n    };\n    ImageManager.prototype._validate = function _validate(id, image) {\n        var valid = true;\n        if (!this._validateStretch(image.stretchX, image.data && image.data.width)) {\n            this.fire(new performance.ErrorEvent(new Error('Image \"' + id + '\" has invalid \"stretchX\" value')));\n            valid = false;\n        }\n        if (!this._validateStretch(image.stretchY, image.data && image.data.height)) {\n            this.fire(new performance.ErrorEvent(new Error('Image \"' + id + '\" has invalid \"stretchY\" value')));\n            valid = false;\n        }\n        if (!this._validateContent(image.content, image)) {\n            this.fire(new performance.ErrorEvent(new Error('Image \"' + id + '\" has invalid \"content\" value')));\n            valid = false;\n        }\n        return valid;\n    };\n    ImageManager.prototype._validateStretch = function _validateStretch(stretch, size) {\n        if (!stretch) {\n            return true;\n        }\n        var last = 0;\n        for (var i = 0, list = stretch; i < list.length; i += 1) {\n            var part = list[i];\n            if (part[0] < last || part[1] < part[0] || size < part[1]) {\n                return false;\n            }\n            last = part[1];\n        }\n        return true;\n    };\n    ImageManager.prototype._validateContent = function _validateContent(content, image) {\n        if (!content) {\n            return true;\n        }\n        if (content.length !== 4) {\n            return false;\n        }\n        if (content[0] < 0 || image.data.width < content[0]) {\n            return false;\n        }\n        if (content[1] < 0 || image.data.height < content[1]) {\n            return false;\n        }\n        if (content[2] < 0 || image.data.width < content[2]) {\n            return false;\n        }\n        if (content[3] < 0 || image.data.height < content[3]) {\n            return false;\n        }\n        if (content[2] < content[0]) {\n            return false;\n        }\n        if (content[3] < content[1]) {\n            return false;\n        }\n        return true;\n    };\n    ImageManager.prototype.updateImage = function updateImage(id, image) {\n        var oldImage = this.images[id];\n        image.version = oldImage.version + 1;\n        this.images[id] = image;\n        this.updatedImages[id] = true;\n    };\n    ImageManager.prototype.removeImage = function removeImage(id) {\n        var image = this.images[id];\n        delete this.images[id];\n        delete this.patterns[id];\n        if (image.userImage && image.userImage.onRemove) {\n            image.userImage.onRemove();\n        }\n    };\n    ImageManager.prototype.listImages = function listImages() {\n        return Object.keys(this.images);\n    };\n    ImageManager.prototype.getImages = function getImages(ids, callback) {\n        var hasAllDependencies = true;\n        if (!this.isLoaded()) {\n            for (var i = 0, list = ids; i < list.length; i += 1) {\n                var id = list[i];\n                if (!this.images[id]) {\n                    hasAllDependencies = false;\n                }\n            }\n        }\n        if (this.isLoaded() || hasAllDependencies) {\n            this._notify(ids, callback);\n        } else {\n            this.requestors.push({\n                ids: ids,\n                callback: callback\n            });\n        }\n    };\n    ImageManager.prototype._notify = function _notify(ids, callback) {\n        var response = {};\n        for (var i = 0, list = ids; i < list.length; i += 1) {\n            var id = list[i];\n            if (!this.images[id]) {\n                this.fire(new performance.Event('styleimagemissing', { id: id }));\n            }\n            var image = this.images[id];\n            if (image) {\n                response[id] = {\n                    data: image.data.clone(),\n                    pixelRatio: image.pixelRatio,\n                    sdf: image.sdf,\n                    version: image.version,\n                    stretchX: image.stretchX,\n                    stretchY: image.stretchY,\n                    content: image.content,\n                    hasRenderCallback: Boolean(image.userImage && image.userImage.render)\n                };\n            } else {\n                performance.warnOnce('Image \"' + id + '\" could not be loaded. Please make sure you have added the image with map.addImage() or a \"sprite\" property in your style. You can provide missing images by listening for the \"styleimagemissing\" map event.');\n            }\n        }\n        callback(null, response);\n    };\n    ImageManager.prototype.getPixelSize = function getPixelSize() {\n        var ref = this.atlasImage;\n        var width = ref.width;\n        var height = ref.height;\n        return {\n            width: width,\n            height: height\n        };\n    };\n    ImageManager.prototype.getPattern = function getPattern(id) {\n        var pattern = this.patterns[id];\n        var image = this.getImage(id);\n        if (!image) {\n            return null;\n        }\n        if (pattern && pattern.position.version === image.version) {\n            return pattern.position;\n        }\n        if (!pattern) {\n            var w = image.data.width + padding * 2;\n            var h = image.data.height + padding * 2;\n            var bin = {\n                w: w,\n                h: h,\n                x: 0,\n                y: 0\n            };\n            var position = new performance.ImagePosition(bin, image);\n            this.patterns[id] = {\n                bin: bin,\n                position: position\n            };\n        } else {\n            pattern.position.version = image.version;\n        }\n        this._updatePatternAtlas();\n        return this.patterns[id].position;\n    };\n    ImageManager.prototype.bind = function bind(context) {\n        var gl = context.gl;\n        if (!this.atlasTexture) {\n            this.atlasTexture = new performance.Texture(context, this.atlasImage, gl.RGBA);\n        } else if (this.dirty) {\n            this.atlasTexture.update(this.atlasImage);\n            this.dirty = false;\n        }\n        this.atlasTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n    };\n    ImageManager.prototype._updatePatternAtlas = function _updatePatternAtlas() {\n        var bins = [];\n        for (var id in this.patterns) {\n            bins.push(this.patterns[id].bin);\n        }\n        var ref = performance.potpack(bins);\n        var w = ref.w;\n        var h = ref.h;\n        var dst = this.atlasImage;\n        dst.resize({\n            width: w || 1,\n            height: h || 1\n        });\n        for (var id$1 in this.patterns) {\n            var ref$1 = this.patterns[id$1];\n            var bin = ref$1.bin;\n            var x = bin.x + padding;\n            var y = bin.y + padding;\n            var src = this.images[id$1].data;\n            var w$1 = src.width;\n            var h$1 = src.height;\n            performance.RGBAImage.copy(src, dst, {\n                x: 0,\n                y: 0\n            }, {\n                x: x,\n                y: y\n            }, {\n                width: w$1,\n                height: h$1\n            });\n            performance.RGBAImage.copy(src, dst, {\n                x: 0,\n                y: h$1 - 1\n            }, {\n                x: x,\n                y: y - 1\n            }, {\n                width: w$1,\n                height: 1\n            });\n            performance.RGBAImage.copy(src, dst, {\n                x: 0,\n                y: 0\n            }, {\n                x: x,\n                y: y + h$1\n            }, {\n                width: w$1,\n                height: 1\n            });\n            performance.RGBAImage.copy(src, dst, {\n                x: w$1 - 1,\n                y: 0\n            }, {\n                x: x - 1,\n                y: y\n            }, {\n                width: 1,\n                height: h$1\n            });\n            performance.RGBAImage.copy(src, dst, {\n                x: 0,\n                y: 0\n            }, {\n                x: x + w$1,\n                y: y\n            }, {\n                width: 1,\n                height: h$1\n            });\n        }\n        this.dirty = true;\n    };\n    ImageManager.prototype.beginFrame = function beginFrame() {\n        this.callbackDispatchedThisFrame = {};\n    };\n    ImageManager.prototype.dispatchRenderCallbacks = function dispatchRenderCallbacks(ids) {\n        for (var i = 0, list = ids; i < list.length; i += 1) {\n            var id = list[i];\n            if (this.callbackDispatchedThisFrame[id]) {\n                continue;\n            }\n            this.callbackDispatchedThisFrame[id] = true;\n            var image = this.images[id];\n            var updated = renderStyleImage(image);\n            if (updated) {\n                this.updateImage(id, image);\n            }\n        }\n    };\n    return ImageManager;\n}(performance.Evented);\n\nfunction loadGlyphRange (fontstack, range, urlTemplate, requestManager, callback) {\n    var begin = range * 256;\n    var end = begin + 255;\n    var request = requestManager.transformRequest(requestManager.normalizeGlyphsURL(urlTemplate).replace('{fontstack}', fontstack).replace('{range}', begin + '-' + end), performance.ResourceType.Glyphs);\n    performance.getArrayBuffer(request, function (err, data) {\n        if (err) {\n            callback(err);\n        } else if (data) {\n            var glyphs = {};\n            for (var i = 0, list = performance.parseGlyphPBF(data); i < list.length; i += 1) {\n                var glyph = list[i];\n                glyphs[glyph.id] = glyph;\n            }\n            callback(null, glyphs);\n        }\n    });\n}\n\nvar tinySdf = TinySDF;\nvar default_1 = TinySDF;\nvar INF = 100000000000000000000;\nfunction TinySDF(fontSize, buffer, radius, cutoff, fontFamily, fontWeight) {\n    this.fontSize = fontSize || 24;\n    this.buffer = buffer === undefined ? 3 : buffer;\n    this.cutoff = cutoff || 0.25;\n    this.fontFamily = fontFamily || 'sans-serif';\n    this.fontWeight = fontWeight || 'normal';\n    this.radius = radius || 8;\n    var size = this.size = this.fontSize + this.buffer * 2;\n    this.canvas = document.createElement('canvas');\n    this.canvas.width = this.canvas.height = size;\n    this.ctx = this.canvas.getContext('2d');\n    this.ctx.font = this.fontWeight + ' ' + this.fontSize + 'px ' + this.fontFamily;\n    this.ctx.textBaseline = 'middle';\n    this.ctx.fillStyle = 'black';\n    this.gridOuter = new Float64Array(size * size);\n    this.gridInner = new Float64Array(size * size);\n    this.f = new Float64Array(size);\n    this.d = new Float64Array(size);\n    this.z = new Float64Array(size + 1);\n    this.v = new Int16Array(size);\n    this.middle = Math.round(size / 2 * (navigator.userAgent.indexOf('Gecko/') >= 0 ? 1.2 : 1));\n}\nTinySDF.prototype.draw = function (char) {\n    this.ctx.clearRect(0, 0, this.size, this.size);\n    this.ctx.fillText(char, this.buffer, this.middle);\n    var imgData = this.ctx.getImageData(0, 0, this.size, this.size);\n    var alphaChannel = new Uint8ClampedArray(this.size * this.size);\n    for (var i = 0; i < this.size * this.size; i++) {\n        var a = imgData.data[i * 4 + 3] / 255;\n        this.gridOuter[i] = a === 1 ? 0 : a === 0 ? INF : Math.pow(Math.max(0, 0.5 - a), 2);\n        this.gridInner[i] = a === 1 ? INF : a === 0 ? 0 : Math.pow(Math.max(0, a - 0.5), 2);\n    }\n    edt(this.gridOuter, this.size, this.size, this.f, this.d, this.v, this.z);\n    edt(this.gridInner, this.size, this.size, this.f, this.d, this.v, this.z);\n    for (i = 0; i < this.size * this.size; i++) {\n        var d = this.gridOuter[i] - this.gridInner[i];\n        alphaChannel[i] = Math.max(0, Math.min(255, Math.round(255 - 255 * (d / this.radius + this.cutoff))));\n    }\n    return alphaChannel;\n};\nfunction edt(data, width, height, f, d, v, z) {\n    for (var x = 0; x < width; x++) {\n        for (var y = 0; y < height; y++) {\n            f[y] = data[y * width + x];\n        }\n        edt1d(f, d, v, z, height);\n        for (y = 0; y < height; y++) {\n            data[y * width + x] = d[y];\n        }\n    }\n    for (y = 0; y < height; y++) {\n        for (x = 0; x < width; x++) {\n            f[x] = data[y * width + x];\n        }\n        edt1d(f, d, v, z, width);\n        for (x = 0; x < width; x++) {\n            data[y * width + x] = Math.sqrt(d[x]);\n        }\n    }\n}\nfunction edt1d(f, d, v, z, n) {\n    v[0] = 0;\n    z[0] = -INF;\n    z[1] = +INF;\n    for (var q = 1, k = 0; q < n; q++) {\n        var s = (f[q] + q * q - (f[v[k]] + v[k] * v[k])) / (2 * q - 2 * v[k]);\n        while (s <= z[k]) {\n            k--;\n            s = (f[q] + q * q - (f[v[k]] + v[k] * v[k])) / (2 * q - 2 * v[k]);\n        }\n        k++;\n        v[k] = q;\n        z[k] = s;\n        z[k + 1] = +INF;\n    }\n    for (q = 0, k = 0; q < n; q++) {\n        while (z[k + 1] < q) {\n            k++;\n        }\n        d[q] = (q - v[k]) * (q - v[k]) + f[v[k]];\n    }\n}\ntinySdf.default = default_1;\n\nvar GlyphManager = function GlyphManager(requestManager, localIdeographFontFamily) {\n    this.requestManager = requestManager;\n    this.localIdeographFontFamily = localIdeographFontFamily;\n    this.entries = {};\n};\nGlyphManager.prototype.setURL = function setURL(url) {\n    this.url = url;\n};\nGlyphManager.prototype.getGlyphs = function getGlyphs(glyphs, callback) {\n    var this$1 = this;\n    var all = [];\n    for (var stack in glyphs) {\n        for (var i = 0, list = glyphs[stack]; i < list.length; i += 1) {\n            var id = list[i];\n            all.push({\n                stack: stack,\n                id: id\n            });\n        }\n    }\n    performance.asyncAll(all, function (ref, callback) {\n        var stack = ref.stack;\n        var id = ref.id;\n        var entry = this$1.entries[stack];\n        if (!entry) {\n            entry = this$1.entries[stack] = {\n                glyphs: {},\n                requests: {},\n                ranges: {}\n            };\n        }\n        var glyph = entry.glyphs[id];\n        if (glyph !== undefined) {\n            callback(null, {\n                stack: stack,\n                id: id,\n                glyph: glyph\n            });\n            return;\n        }\n        glyph = this$1._tinySDF(entry, stack, id);\n        if (glyph) {\n            entry.glyphs[id] = glyph;\n            callback(null, {\n                stack: stack,\n                id: id,\n                glyph: glyph\n            });\n            return;\n        }\n        var range = Math.floor(id / 256);\n        if (range * 256 > 65535) {\n            callback(new Error('glyphs > 65535 not supported'));\n            return;\n        }\n        if (entry.ranges[range]) {\n            callback(null, {\n                stack: stack,\n                id: id,\n                glyph: glyph\n            });\n            return;\n        }\n        var requests = entry.requests[range];\n        if (!requests) {\n            requests = entry.requests[range] = [];\n            GlyphManager.loadGlyphRange(stack, range, this$1.url, this$1.requestManager, function (err, response) {\n                if (response) {\n                    for (var id in response) {\n                        if (!this$1._doesCharSupportLocalGlyph(+id)) {\n                            entry.glyphs[+id] = response[+id];\n                        }\n                    }\n                    entry.ranges[range] = true;\n                }\n                for (var i = 0, list = requests; i < list.length; i += 1) {\n                    var cb = list[i];\n                    cb(err, response);\n                }\n                delete entry.requests[range];\n            });\n        }\n        requests.push(function (err, result) {\n            if (err) {\n                callback(err);\n            } else if (result) {\n                callback(null, {\n                    stack: stack,\n                    id: id,\n                    glyph: result[id] || null\n                });\n            }\n        });\n    }, function (err, glyphs) {\n        if (err) {\n            callback(err);\n        } else if (glyphs) {\n            var result = {};\n            for (var i = 0, list = glyphs; i < list.length; i += 1) {\n                var ref = list[i];\n                var stack = ref.stack;\n                var id = ref.id;\n                var glyph = ref.glyph;\n                (result[stack] || (result[stack] = {}))[id] = glyph && {\n                    id: glyph.id,\n                    bitmap: glyph.bitmap.clone(),\n                    metrics: glyph.metrics\n                };\n            }\n            callback(null, result);\n        }\n    });\n};\nGlyphManager.prototype._doesCharSupportLocalGlyph = function _doesCharSupportLocalGlyph(id) {\n    return !!this.localIdeographFontFamily && (performance.isChar['CJK Unified Ideographs'](id) || performance.isChar['Hangul Syllables'](id) || performance.isChar['Hiragana'](id) || performance.isChar['Katakana'](id));\n};\nGlyphManager.prototype._tinySDF = function _tinySDF(entry, stack, id) {\n    var family = this.localIdeographFontFamily;\n    if (!family) {\n        return;\n    }\n    if (!this._doesCharSupportLocalGlyph(id)) {\n        return;\n    }\n    var tinySDF = entry.tinySDF;\n    if (!tinySDF) {\n        var fontWeight = '400';\n        if (/bold/i.test(stack)) {\n            fontWeight = '900';\n        } else if (/medium/i.test(stack)) {\n            fontWeight = '500';\n        } else if (/light/i.test(stack)) {\n            fontWeight = '200';\n        }\n        tinySDF = entry.tinySDF = new GlyphManager.TinySDF(24, 3, 8, 0.25, family, fontWeight);\n    }\n    return {\n        id: id,\n        bitmap: new performance.AlphaImage({\n            width: 30,\n            height: 30\n        }, tinySDF.draw(String.fromCharCode(id))),\n        metrics: {\n            width: 24,\n            height: 24,\n            left: 0,\n            top: -8,\n            advance: 24\n        }\n    };\n};\nGlyphManager.loadGlyphRange = loadGlyphRange;\nGlyphManager.TinySDF = tinySdf;\n\nvar LightPositionProperty = function LightPositionProperty() {\n    this.specification = performance.styleSpec.light.position;\n};\nLightPositionProperty.prototype.possiblyEvaluate = function possiblyEvaluate(value, parameters) {\n    return performance.sphericalToCartesian(value.expression.evaluate(parameters));\n};\nLightPositionProperty.prototype.interpolate = function interpolate$1(a, b, t) {\n    return {\n        x: performance.number(a.x, b.x, t),\n        y: performance.number(a.y, b.y, t),\n        z: performance.number(a.z, b.z, t)\n    };\n};\nvar properties = new performance.Properties({\n    'anchor': new performance.DataConstantProperty(performance.styleSpec.light.anchor),\n    'position': new LightPositionProperty(),\n    'color': new performance.DataConstantProperty(performance.styleSpec.light.color),\n    'intensity': new performance.DataConstantProperty(performance.styleSpec.light.intensity)\n});\nvar TRANSITION_SUFFIX = '-transition';\nvar Light = function (Evented) {\n    function Light(lightOptions) {\n        Evented.call(this);\n        this._transitionable = new performance.Transitionable(properties);\n        this.setLight(lightOptions);\n        this._transitioning = this._transitionable.untransitioned();\n    }\n    if (Evented)\n        Light.__proto__ = Evented;\n    Light.prototype = Object.create(Evented && Evented.prototype);\n    Light.prototype.constructor = Light;\n    Light.prototype.getLight = function getLight() {\n        return this._transitionable.serialize();\n    };\n    Light.prototype.setLight = function setLight(light, options) {\n        if (options === void 0)\n            options = {};\n        if (this._validate(performance.validateLight, light, options)) {\n            return;\n        }\n        for (var name in light) {\n            var value = light[name];\n            if (performance.endsWith(name, TRANSITION_SUFFIX)) {\n                this._transitionable.setTransition(name.slice(0, -TRANSITION_SUFFIX.length), value);\n            } else {\n                this._transitionable.setValue(name, value);\n            }\n        }\n    };\n    Light.prototype.updateTransitions = function updateTransitions(parameters) {\n        this._transitioning = this._transitionable.transitioned(parameters, this._transitioning);\n    };\n    Light.prototype.hasTransition = function hasTransition() {\n        return this._transitioning.hasTransition();\n    };\n    Light.prototype.recalculate = function recalculate(parameters) {\n        this.properties = this._transitioning.possiblyEvaluate(parameters);\n    };\n    Light.prototype._validate = function _validate(validate, value, options) {\n        if (options && options.validate === false) {\n            return false;\n        }\n        return performance.emitValidationErrors(this, validate.call(performance.validateStyle, performance.extend({\n            value: value,\n            style: {\n                glyphs: true,\n                sprite: true\n            },\n            styleSpec: performance.styleSpec\n        })));\n    };\n    return Light;\n}(performance.Evented);\n\nvar LineAtlas = function LineAtlas(width, height) {\n    this.width = width;\n    this.height = height;\n    this.nextRow = 0;\n    this.data = new Uint8Array(this.width * this.height);\n    this.dashEntry = {};\n};\nLineAtlas.prototype.getDash = function getDash(dasharray, round) {\n    var key = dasharray.join(',') + String(round);\n    if (!this.dashEntry[key]) {\n        this.dashEntry[key] = this.addDash(dasharray, round);\n    }\n    return this.dashEntry[key];\n};\nLineAtlas.prototype.getDashRanges = function getDashRanges(dasharray, lineAtlasWidth, stretch) {\n    var oddDashArray = dasharray.length % 2 === 1;\n    var ranges = [];\n    var left = oddDashArray ? -dasharray[dasharray.length - 1] * stretch : 0;\n    var right = dasharray[0] * stretch;\n    var isDash = true;\n    ranges.push({\n        left: left,\n        right: right,\n        isDash: isDash,\n        zeroLength: dasharray[0] === 0\n    });\n    var currentDashLength = dasharray[0];\n    for (var i = 1; i < dasharray.length; i++) {\n        isDash = !isDash;\n        var dashLength = dasharray[i];\n        left = currentDashLength * stretch;\n        currentDashLength += dashLength;\n        right = currentDashLength * stretch;\n        ranges.push({\n            left: left,\n            right: right,\n            isDash: isDash,\n            zeroLength: dashLength === 0\n        });\n    }\n    return ranges;\n};\nLineAtlas.prototype.addRoundDash = function addRoundDash(ranges, stretch, n) {\n    var halfStretch = stretch / 2;\n    for (var y = -n; y <= n; y++) {\n        var row = this.nextRow + n + y;\n        var index = this.width * row;\n        var currIndex = 0;\n        var range = ranges[currIndex];\n        for (var x = 0; x < this.width; x++) {\n            if (x / range.right > 1) {\n                range = ranges[++currIndex];\n            }\n            var distLeft = Math.abs(x - range.left);\n            var distRight = Math.abs(x - range.right);\n            var minDist = Math.min(distLeft, distRight);\n            var signedDistance = void 0;\n            var distMiddle = y / n * (halfStretch + 1);\n            if (range.isDash) {\n                var distEdge = halfStretch - Math.abs(distMiddle);\n                signedDistance = Math.sqrt(minDist * minDist + distEdge * distEdge);\n            } else {\n                signedDistance = halfStretch - Math.sqrt(minDist * minDist + distMiddle * distMiddle);\n            }\n            this.data[index + x] = Math.max(0, Math.min(255, signedDistance + 128));\n        }\n    }\n};\nLineAtlas.prototype.addRegularDash = function addRegularDash(ranges) {\n    for (var i = ranges.length - 1; i >= 0; --i) {\n        var part = ranges[i];\n        var next = ranges[i + 1];\n        if (part.zeroLength) {\n            ranges.splice(i, 1);\n        } else if (next && next.isDash === part.isDash) {\n            next.left = part.left;\n            ranges.splice(i, 1);\n        }\n    }\n    var first = ranges[0];\n    var last = ranges[ranges.length - 1];\n    if (first.isDash === last.isDash) {\n        first.left = last.left - this.width;\n        last.right = first.right + this.width;\n    }\n    var index = this.width * this.nextRow;\n    var currIndex = 0;\n    var range = ranges[currIndex];\n    for (var x = 0; x < this.width; x++) {\n        if (x / range.right > 1) {\n            range = ranges[++currIndex];\n        }\n        var distLeft = Math.abs(x - range.left);\n        var distRight = Math.abs(x - range.right);\n        var minDist = Math.min(distLeft, distRight);\n        var signedDistance = range.isDash ? minDist : -minDist;\n        this.data[index + x] = Math.max(0, Math.min(255, signedDistance + 128));\n    }\n};\nLineAtlas.prototype.addDash = function addDash(dasharray, round) {\n    var n = round ? 7 : 0;\n    var height = 2 * n + 1;\n    if (this.nextRow + height > this.height) {\n        performance.warnOnce('LineAtlas out of space');\n        return null;\n    }\n    var length = 0;\n    for (var i = 0; i < dasharray.length; i++) {\n        length += dasharray[i];\n    }\n    if (length !== 0) {\n        var stretch = this.width / length;\n        var ranges = this.getDashRanges(dasharray, this.width, stretch);\n        if (round) {\n            this.addRoundDash(ranges, stretch, n);\n        } else {\n            this.addRegularDash(ranges);\n        }\n    }\n    var dashEntry = {\n        y: (this.nextRow + n + 0.5) / this.height,\n        height: 2 * n / this.height,\n        width: length\n    };\n    this.nextRow += height;\n    this.dirty = true;\n    return dashEntry;\n};\nLineAtlas.prototype.bind = function bind(context) {\n    var gl = context.gl;\n    if (!this.texture) {\n        this.texture = gl.createTexture();\n        gl.bindTexture(gl.TEXTURE_2D, this.texture);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n        gl.texImage2D(gl.TEXTURE_2D, 0, gl.ALPHA, this.width, this.height, 0, gl.ALPHA, gl.UNSIGNED_BYTE, this.data);\n    } else {\n        gl.bindTexture(gl.TEXTURE_2D, this.texture);\n        if (this.dirty) {\n            this.dirty = false;\n            gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, this.width, this.height, gl.ALPHA, gl.UNSIGNED_BYTE, this.data);\n        }\n    }\n};\n\nvar Dispatcher = function Dispatcher(workerPool, parent) {\n    this.workerPool = workerPool;\n    this.actors = [];\n    this.currentActor = 0;\n    this.id = performance.uniqueId();\n    var workers = this.workerPool.acquire(this.id);\n    for (var i = 0; i < workers.length; i++) {\n        var worker = workers[i];\n        var actor = new Dispatcher.Actor(worker, parent, this.id);\n        actor.name = 'Worker ' + i;\n        this.actors.push(actor);\n    }\n};\nDispatcher.prototype.broadcast = function broadcast(type, data, cb) {\n    cb = cb || function () {\n    };\n    performance.asyncAll(this.actors, function (actor, done) {\n        actor.send(type, data, done);\n    }, cb);\n};\nDispatcher.prototype.getActor = function getActor() {\n    this.currentActor = (this.currentActor + 1) % this.actors.length;\n    return this.actors[this.currentActor];\n};\nDispatcher.prototype.remove = function remove() {\n    this.actors.forEach(function (actor) {\n        actor.remove();\n    });\n    this.actors = [];\n    this.workerPool.release(this.id);\n};\nDispatcher.Actor = performance.Actor;\n\nfunction loadTileJSON (options, requestManager, callback) {\n    var loaded = function (err, tileJSON) {\n        if (err) {\n            return callback(err);\n        } else if (tileJSON) {\n            var result = performance.pick(performance.extend(tileJSON, options), [\n                'tiles',\n                'minzoom',\n                'maxzoom',\n                'attribution',\n                'mapbox_logo',\n                'bounds',\n                'scheme',\n                'tileSize',\n                'encoding'\n            ]);\n            if (tileJSON.vector_layers) {\n                result.vectorLayers = tileJSON.vector_layers;\n                result.vectorLayerIds = result.vectorLayers.map(function (layer) {\n                    return layer.id;\n                });\n            }\n            result.tiles = requestManager.canonicalizeTileset(result, options.url);\n            callback(null, result);\n        }\n    };\n    if (options.url) {\n        return performance.getJSON(requestManager.transformRequest(requestManager.normalizeSourceURL(options.url), performance.ResourceType.Source), loaded);\n    } else {\n        return performance.browser.frame(function () {\n            return loaded(null, options);\n        });\n    }\n}\n\nvar TileBounds = function TileBounds(bounds, minzoom, maxzoom) {\n    this.bounds = performance.LngLatBounds.convert(this.validateBounds(bounds));\n    this.minzoom = minzoom || 0;\n    this.maxzoom = maxzoom || 24;\n};\nTileBounds.prototype.validateBounds = function validateBounds(bounds) {\n    if (!Array.isArray(bounds) || bounds.length !== 4) {\n        return [\n            -180,\n            -90,\n            180,\n            90\n        ];\n    }\n    return [\n        Math.max(-180, bounds[0]),\n        Math.max(-90, bounds[1]),\n        Math.min(180, bounds[2]),\n        Math.min(90, bounds[3])\n    ];\n};\nTileBounds.prototype.contains = function contains(tileID) {\n    var worldSize = Math.pow(2, tileID.z);\n    var level = {\n        minX: Math.floor(performance.mercatorXfromLng(this.bounds.getWest()) * worldSize),\n        minY: Math.floor(performance.mercatorYfromLat(this.bounds.getNorth()) * worldSize),\n        maxX: Math.ceil(performance.mercatorXfromLng(this.bounds.getEast()) * worldSize),\n        maxY: Math.ceil(performance.mercatorYfromLat(this.bounds.getSouth()) * worldSize)\n    };\n    var hit = tileID.x >= level.minX && tileID.x < level.maxX && tileID.y >= level.minY && tileID.y < level.maxY;\n    return hit;\n};\n\nvar VectorTileSource = function (Evented) {\n    function VectorTileSource(id, options, dispatcher, eventedParent) {\n        Evented.call(this);\n        this.id = id;\n        this.dispatcher = dispatcher;\n        this.type = 'vector';\n        this.minzoom = 0;\n        this.maxzoom = 22;\n        this.scheme = 'xyz';\n        this.tileSize = 512;\n        this.reparseOverscaled = true;\n        this.isTileClipped = true;\n        this._loaded = false;\n        performance.extend(this, performance.pick(options, [\n            'url',\n            'scheme',\n            'tileSize',\n            'promoteId'\n        ]));\n        this._options = performance.extend({ type: 'vector' }, options);\n        this._collectResourceTiming = options.collectResourceTiming;\n        if (this.tileSize !== 512) {\n            throw new Error('vector tile sources must have a tileSize of 512');\n        }\n        this.setEventedParent(eventedParent);\n    }\n    if (Evented)\n        VectorTileSource.__proto__ = Evented;\n    VectorTileSource.prototype = Object.create(Evented && Evented.prototype);\n    VectorTileSource.prototype.constructor = VectorTileSource;\n    VectorTileSource.prototype.load = function load() {\n        var this$1 = this;\n        this._loaded = false;\n        this.fire(new performance.Event('dataloading', { dataType: 'source' }));\n        this._tileJSONRequest = loadTileJSON(this._options, this.map._requestManager, function (err, tileJSON) {\n            this$1._tileJSONRequest = null;\n            this$1._loaded = true;\n            if (err) {\n                this$1.fire(new performance.ErrorEvent(err));\n            } else if (tileJSON) {\n                performance.extend(this$1, tileJSON);\n                if (tileJSON.bounds) {\n                    this$1.tileBounds = new TileBounds(tileJSON.bounds, this$1.minzoom, this$1.maxzoom);\n                }\n                performance.postTurnstileEvent(tileJSON.tiles, this$1.map._requestManager._customAccessToken);\n                performance.postMapLoadEvent(tileJSON.tiles, this$1.map._getMapId(), this$1.map._requestManager._skuToken, this$1.map._requestManager._customAccessToken);\n                this$1.fire(new performance.Event('data', {\n                    dataType: 'source',\n                    sourceDataType: 'metadata'\n                }));\n                this$1.fire(new performance.Event('data', {\n                    dataType: 'source',\n                    sourceDataType: 'content'\n                }));\n            }\n        });\n    };\n    VectorTileSource.prototype.loaded = function loaded() {\n        return this._loaded;\n    };\n    VectorTileSource.prototype.hasTile = function hasTile(tileID) {\n        return !this.tileBounds || this.tileBounds.contains(tileID.canonical);\n    };\n    VectorTileSource.prototype.onAdd = function onAdd(map) {\n        this.map = map;\n        this.load();\n    };\n    VectorTileSource.prototype.onRemove = function onRemove() {\n        if (this._tileJSONRequest) {\n            this._tileJSONRequest.cancel();\n            this._tileJSONRequest = null;\n        }\n    };\n    VectorTileSource.prototype.serialize = function serialize() {\n        return performance.extend({}, this._options);\n    };\n    VectorTileSource.prototype.loadTile = function loadTile(tile, callback) {\n        var url = this.map._requestManager.normalizeTileURL(tile.tileID.canonical.url(this.tiles, this.scheme));\n        var params = {\n            request: this.map._requestManager.transformRequest(url, performance.ResourceType.Tile),\n            uid: tile.uid,\n            tileID: tile.tileID,\n            zoom: tile.tileID.overscaledZ,\n            tileSize: this.tileSize * tile.tileID.overscaleFactor(),\n            type: this.type,\n            source: this.id,\n            pixelRatio: performance.browser.devicePixelRatio,\n            showCollisionBoxes: this.map.showCollisionBoxes,\n            promoteId: this.promoteId\n        };\n        params.request.collectResourceTiming = this._collectResourceTiming;\n        if (!tile.actor || tile.state === 'expired') {\n            tile.actor = this.dispatcher.getActor();\n            tile.request = tile.actor.send('loadTile', params, done.bind(this));\n        } else if (tile.state === 'loading') {\n            tile.reloadCallback = callback;\n        } else {\n            tile.request = tile.actor.send('reloadTile', params, done.bind(this));\n        }\n        function done(err, data) {\n            delete tile.request;\n            if (tile.aborted) {\n                return callback(null);\n            }\n            if (err && err.status !== 404) {\n                return callback(err);\n            }\n            if (data && data.resourceTiming) {\n                tile.resourceTiming = data.resourceTiming;\n            }\n            if (this.map._refreshExpiredTiles && data) {\n                tile.setExpiryData(data);\n            }\n            tile.loadVectorData(data, this.map.painter);\n            performance.cacheEntryPossiblyAdded(this.dispatcher);\n            callback(null);\n            if (tile.reloadCallback) {\n                this.loadTile(tile, tile.reloadCallback);\n                tile.reloadCallback = null;\n            }\n        }\n    };\n    VectorTileSource.prototype.abortTile = function abortTile(tile) {\n        if (tile.request) {\n            tile.request.cancel();\n            delete tile.request;\n        }\n        if (tile.actor) {\n            tile.actor.send('abortTile', {\n                uid: tile.uid,\n                type: this.type,\n                source: this.id\n            }, undefined);\n        }\n    };\n    VectorTileSource.prototype.unloadTile = function unloadTile(tile) {\n        tile.unloadVectorData();\n        if (tile.actor) {\n            tile.actor.send('removeTile', {\n                uid: tile.uid,\n                type: this.type,\n                source: this.id\n            }, undefined);\n        }\n    };\n    VectorTileSource.prototype.hasTransition = function hasTransition() {\n        return false;\n    };\n    return VectorTileSource;\n}(performance.Evented);\n\nvar RasterTileSource = function (Evented) {\n    function RasterTileSource(id, options, dispatcher, eventedParent) {\n        Evented.call(this);\n        this.id = id;\n        this.dispatcher = dispatcher;\n        this.setEventedParent(eventedParent);\n        this.type = 'raster';\n        this.minzoom = 0;\n        this.maxzoom = 22;\n        this.roundZoom = true;\n        this.scheme = 'xyz';\n        this.tileSize = 512;\n        this._loaded = false;\n        this._options = performance.extend({ type: 'raster' }, options);\n        performance.extend(this, performance.pick(options, [\n            'url',\n            'scheme',\n            'tileSize'\n        ]));\n    }\n    if (Evented)\n        RasterTileSource.__proto__ = Evented;\n    RasterTileSource.prototype = Object.create(Evented && Evented.prototype);\n    RasterTileSource.prototype.constructor = RasterTileSource;\n    RasterTileSource.prototype.load = function load() {\n        var this$1 = this;\n        this._loaded = false;\n        this.fire(new performance.Event('dataloading', { dataType: 'source' }));\n        this._tileJSONRequest = loadTileJSON(this._options, this.map._requestManager, function (err, tileJSON) {\n            this$1._tileJSONRequest = null;\n            this$1._loaded = true;\n            if (err) {\n                this$1.fire(new performance.ErrorEvent(err));\n            } else if (tileJSON) {\n                performance.extend(this$1, tileJSON);\n                if (tileJSON.bounds) {\n                    this$1.tileBounds = new TileBounds(tileJSON.bounds, this$1.minzoom, this$1.maxzoom);\n                }\n                performance.postTurnstileEvent(tileJSON.tiles);\n                performance.postMapLoadEvent(tileJSON.tiles, this$1.map._getMapId(), this$1.map._requestManager._skuToken);\n                this$1.fire(new performance.Event('data', {\n                    dataType: 'source',\n                    sourceDataType: 'metadata'\n                }));\n                this$1.fire(new performance.Event('data', {\n                    dataType: 'source',\n                    sourceDataType: 'content'\n                }));\n            }\n        });\n    };\n    RasterTileSource.prototype.loaded = function loaded() {\n        return this._loaded;\n    };\n    RasterTileSource.prototype.onAdd = function onAdd(map) {\n        this.map = map;\n        this.load();\n    };\n    RasterTileSource.prototype.onRemove = function onRemove() {\n        if (this._tileJSONRequest) {\n            this._tileJSONRequest.cancel();\n            this._tileJSONRequest = null;\n        }\n    };\n    RasterTileSource.prototype.serialize = function serialize() {\n        return performance.extend({}, this._options);\n    };\n    RasterTileSource.prototype.hasTile = function hasTile(tileID) {\n        return !this.tileBounds || this.tileBounds.contains(tileID.canonical);\n    };\n    RasterTileSource.prototype.loadTile = function loadTile(tile, callback) {\n        var this$1 = this;\n        var url = this.map._requestManager.normalizeTileURL(tile.tileID.canonical.url(this.tiles, this.scheme), this.tileSize);\n        tile.request = performance.getImage(this.map._requestManager.transformRequest(url, performance.ResourceType.Tile), function (err, img) {\n            delete tile.request;\n            if (tile.aborted) {\n                tile.state = 'unloaded';\n                callback(null);\n            } else if (err) {\n                tile.state = 'errored';\n                callback(err);\n            } else if (img) {\n                if (this$1.map._refreshExpiredTiles) {\n                    tile.setExpiryData(img);\n                }\n                delete img.cacheControl;\n                delete img.expires;\n                var context = this$1.map.painter.context;\n                var gl = context.gl;\n                tile.texture = this$1.map.painter.getTileTexture(img.width);\n                if (tile.texture) {\n                    tile.texture.update(img, { useMipmap: true });\n                } else {\n                    tile.texture = new performance.Texture(context, img, gl.RGBA, { useMipmap: true });\n                    tile.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE, gl.LINEAR_MIPMAP_NEAREST);\n                    if (context.extTextureFilterAnisotropic) {\n                        gl.texParameterf(gl.TEXTURE_2D, context.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT, context.extTextureFilterAnisotropicMax);\n                    }\n                }\n                tile.state = 'loaded';\n                performance.cacheEntryPossiblyAdded(this$1.dispatcher);\n                callback(null);\n            }\n        });\n    };\n    RasterTileSource.prototype.abortTile = function abortTile(tile, callback) {\n        if (tile.request) {\n            tile.request.cancel();\n            delete tile.request;\n        }\n        callback();\n    };\n    RasterTileSource.prototype.unloadTile = function unloadTile(tile, callback) {\n        if (tile.texture) {\n            this.map.painter.saveTileTexture(tile.texture);\n        }\n        callback();\n    };\n    RasterTileSource.prototype.hasTransition = function hasTransition() {\n        return false;\n    };\n    return RasterTileSource;\n}(performance.Evented);\n\nvar RasterDEMTileSource = function (RasterTileSource) {\n    function RasterDEMTileSource(id, options, dispatcher, eventedParent) {\n        RasterTileSource.call(this, id, options, dispatcher, eventedParent);\n        this.type = 'raster-dem';\n        this.maxzoom = 22;\n        this._options = performance.extend({ type: 'raster-dem' }, options);\n        this.encoding = options.encoding || 'mapbox';\n    }\n    if (RasterTileSource)\n        RasterDEMTileSource.__proto__ = RasterTileSource;\n    RasterDEMTileSource.prototype = Object.create(RasterTileSource && RasterTileSource.prototype);\n    RasterDEMTileSource.prototype.constructor = RasterDEMTileSource;\n    RasterDEMTileSource.prototype.serialize = function serialize() {\n        return {\n            type: 'raster-dem',\n            url: this.url,\n            tileSize: this.tileSize,\n            tiles: this.tiles,\n            bounds: this.bounds,\n            encoding: this.encoding\n        };\n    };\n    RasterDEMTileSource.prototype.loadTile = function loadTile(tile, callback) {\n        var url = this.map._requestManager.normalizeTileURL(tile.tileID.canonical.url(this.tiles, this.scheme), this.tileSize);\n        tile.request = performance.getImage(this.map._requestManager.transformRequest(url, performance.ResourceType.Tile), imageLoaded.bind(this));\n        tile.neighboringTiles = this._getNeighboringTiles(tile.tileID);\n        function imageLoaded(err, img) {\n            delete tile.request;\n            if (tile.aborted) {\n                tile.state = 'unloaded';\n                callback(null);\n            } else if (err) {\n                tile.state = 'errored';\n                callback(err);\n            } else if (img) {\n                if (this.map._refreshExpiredTiles) {\n                    tile.setExpiryData(img);\n                }\n                delete img.cacheControl;\n                delete img.expires;\n                var transfer = performance.window.ImageBitmap && img instanceof performance.window.ImageBitmap && performance.offscreenCanvasSupported();\n                var rawImageData = transfer ? img : performance.browser.getImageData(img, 1);\n                var params = {\n                    uid: tile.uid,\n                    coord: tile.tileID,\n                    source: this.id,\n                    rawImageData: rawImageData,\n                    encoding: this.encoding\n                };\n                if (!tile.actor || tile.state === 'expired') {\n                    tile.actor = this.dispatcher.getActor();\n                    tile.actor.send('loadDEMTile', params, done.bind(this));\n                }\n            }\n        }\n        function done(err, dem) {\n            if (err) {\n                tile.state = 'errored';\n                callback(err);\n            }\n            if (dem) {\n                tile.dem = dem;\n                tile.needsHillshadePrepare = true;\n                tile.state = 'loaded';\n                callback(null);\n            }\n        }\n    };\n    RasterDEMTileSource.prototype._getNeighboringTiles = function _getNeighboringTiles(tileID) {\n        var canonical = tileID.canonical;\n        var dim = Math.pow(2, canonical.z);\n        var px = (canonical.x - 1 + dim) % dim;\n        var pxw = canonical.x === 0 ? tileID.wrap - 1 : tileID.wrap;\n        var nx = (canonical.x + 1 + dim) % dim;\n        var nxw = canonical.x + 1 === dim ? tileID.wrap + 1 : tileID.wrap;\n        var neighboringTiles = {};\n        neighboringTiles[new performance.OverscaledTileID(tileID.overscaledZ, pxw, canonical.z, px, canonical.y).key] = { backfilled: false };\n        neighboringTiles[new performance.OverscaledTileID(tileID.overscaledZ, nxw, canonical.z, nx, canonical.y).key] = { backfilled: false };\n        if (canonical.y > 0) {\n            neighboringTiles[new performance.OverscaledTileID(tileID.overscaledZ, pxw, canonical.z, px, canonical.y - 1).key] = { backfilled: false };\n            neighboringTiles[new performance.OverscaledTileID(tileID.overscaledZ, tileID.wrap, canonical.z, canonical.x, canonical.y - 1).key] = { backfilled: false };\n            neighboringTiles[new performance.OverscaledTileID(tileID.overscaledZ, nxw, canonical.z, nx, canonical.y - 1).key] = { backfilled: false };\n        }\n        if (canonical.y + 1 < dim) {\n            neighboringTiles[new performance.OverscaledTileID(tileID.overscaledZ, pxw, canonical.z, px, canonical.y + 1).key] = { backfilled: false };\n            neighboringTiles[new performance.OverscaledTileID(tileID.overscaledZ, tileID.wrap, canonical.z, canonical.x, canonical.y + 1).key] = { backfilled: false };\n            neighboringTiles[new performance.OverscaledTileID(tileID.overscaledZ, nxw, canonical.z, nx, canonical.y + 1).key] = { backfilled: false };\n        }\n        return neighboringTiles;\n    };\n    RasterDEMTileSource.prototype.unloadTile = function unloadTile(tile) {\n        if (tile.demTexture) {\n            this.map.painter.saveTileTexture(tile.demTexture);\n        }\n        if (tile.fbo) {\n            tile.fbo.destroy();\n            delete tile.fbo;\n        }\n        if (tile.dem) {\n            delete tile.dem;\n        }\n        delete tile.neighboringTiles;\n        tile.state = 'unloaded';\n        if (tile.actor) {\n            tile.actor.send('removeDEMTile', {\n                uid: tile.uid,\n                source: this.id\n            });\n        }\n    };\n    return RasterDEMTileSource;\n}(RasterTileSource);\n\nvar GeoJSONSource = function (Evented) {\n    function GeoJSONSource(id, options, dispatcher, eventedParent) {\n        Evented.call(this);\n        this.id = id;\n        this.type = 'geojson';\n        this.minzoom = 0;\n        this.maxzoom = 18;\n        this.tileSize = 512;\n        this.isTileClipped = true;\n        this.reparseOverscaled = true;\n        this._removed = false;\n        this._loaded = false;\n        this.actor = dispatcher.getActor();\n        this.setEventedParent(eventedParent);\n        this._data = options.data;\n        this._options = performance.extend({}, options);\n        this._collectResourceTiming = options.collectResourceTiming;\n        this._resourceTiming = [];\n        if (options.maxzoom !== undefined) {\n            this.maxzoom = options.maxzoom;\n        }\n        if (options.type) {\n            this.type = options.type;\n        }\n        if (options.attribution) {\n            this.attribution = options.attribution;\n        }\n        this.promoteId = options.promoteId;\n        var scale = performance.EXTENT / this.tileSize;\n        this.workerOptions = performance.extend({\n            source: this.id,\n            cluster: options.cluster || false,\n            geojsonVtOptions: {\n                buffer: (options.buffer !== undefined ? options.buffer : 128) * scale,\n                tolerance: (options.tolerance !== undefined ? options.tolerance : 0.375) * scale,\n                extent: performance.EXTENT,\n                maxZoom: this.maxzoom,\n                lineMetrics: options.lineMetrics || false,\n                generateId: options.generateId || false\n            },\n            superclusterOptions: {\n                maxZoom: options.clusterMaxZoom !== undefined ? Math.min(options.clusterMaxZoom, this.maxzoom - 1) : this.maxzoom - 1,\n                extent: performance.EXTENT,\n                radius: (options.clusterRadius || 50) * scale,\n                log: false,\n                generateId: options.generateId || false\n            },\n            clusterProperties: options.clusterProperties\n        }, options.workerOptions);\n    }\n    if (Evented)\n        GeoJSONSource.__proto__ = Evented;\n    GeoJSONSource.prototype = Object.create(Evented && Evented.prototype);\n    GeoJSONSource.prototype.constructor = GeoJSONSource;\n    GeoJSONSource.prototype.load = function load() {\n        var this$1 = this;\n        this.fire(new performance.Event('dataloading', { dataType: 'source' }));\n        this._updateWorkerData(function (err) {\n            if (err) {\n                this$1.fire(new performance.ErrorEvent(err));\n                return;\n            }\n            var data = {\n                dataType: 'source',\n                sourceDataType: 'metadata'\n            };\n            if (this$1._collectResourceTiming && this$1._resourceTiming && this$1._resourceTiming.length > 0) {\n                data.resourceTiming = this$1._resourceTiming;\n                this$1._resourceTiming = [];\n            }\n            this$1.fire(new performance.Event('data', data));\n        });\n    };\n    GeoJSONSource.prototype.onAdd = function onAdd(map) {\n        this.map = map;\n        this.load();\n    };\n    GeoJSONSource.prototype.setData = function setData(data) {\n        var this$1 = this;\n        this._data = data;\n        this.fire(new performance.Event('dataloading', { dataType: 'source' }));\n        this._updateWorkerData(function (err) {\n            if (err) {\n                this$1.fire(new performance.ErrorEvent(err));\n                return;\n            }\n            var data = {\n                dataType: 'source',\n                sourceDataType: 'content'\n            };\n            if (this$1._collectResourceTiming && this$1._resourceTiming && this$1._resourceTiming.length > 0) {\n                data.resourceTiming = this$1._resourceTiming;\n                this$1._resourceTiming = [];\n            }\n            this$1.fire(new performance.Event('data', data));\n        });\n        return this;\n    };\n    GeoJSONSource.prototype.getClusterExpansionZoom = function getClusterExpansionZoom(clusterId, callback) {\n        this.actor.send('geojson.getClusterExpansionZoom', {\n            clusterId: clusterId,\n            source: this.id\n        }, callback);\n        return this;\n    };\n    GeoJSONSource.prototype.getClusterChildren = function getClusterChildren(clusterId, callback) {\n        this.actor.send('geojson.getClusterChildren', {\n            clusterId: clusterId,\n            source: this.id\n        }, callback);\n        return this;\n    };\n    GeoJSONSource.prototype.getClusterLeaves = function getClusterLeaves(clusterId, limit, offset, callback) {\n        this.actor.send('geojson.getClusterLeaves', {\n            source: this.id,\n            clusterId: clusterId,\n            limit: limit,\n            offset: offset\n        }, callback);\n        return this;\n    };\n    GeoJSONSource.prototype._updateWorkerData = function _updateWorkerData(callback) {\n        var this$1 = this;\n        this._loaded = false;\n        var options = performance.extend({}, this.workerOptions);\n        var data = this._data;\n        if (typeof data === 'string') {\n            options.request = this.map._requestManager.transformRequest(performance.browser.resolveURL(data), performance.ResourceType.Source);\n            options.request.collectResourceTiming = this._collectResourceTiming;\n        } else {\n            options.data = JSON.stringify(data);\n        }\n        this.actor.send(this.type + '.loadData', options, function (err, result) {\n            if (this$1._removed || result && result.abandoned) {\n                return;\n            }\n            this$1._loaded = true;\n            if (result && result.resourceTiming && result.resourceTiming[this$1.id]) {\n                this$1._resourceTiming = result.resourceTiming[this$1.id].slice(0);\n            }\n            this$1.actor.send(this$1.type + '.coalesce', { source: options.source }, null);\n            callback(err);\n        });\n    };\n    GeoJSONSource.prototype.loaded = function loaded() {\n        return this._loaded;\n    };\n    GeoJSONSource.prototype.loadTile = function loadTile(tile, callback) {\n        var this$1 = this;\n        var message = !tile.actor ? 'loadTile' : 'reloadTile';\n        tile.actor = this.actor;\n        var params = {\n            type: this.type,\n            uid: tile.uid,\n            tileID: tile.tileID,\n            zoom: tile.tileID.overscaledZ,\n            maxZoom: this.maxzoom,\n            tileSize: this.tileSize,\n            source: this.id,\n            pixelRatio: performance.browser.devicePixelRatio,\n            showCollisionBoxes: this.map.showCollisionBoxes,\n            promoteId: this.promoteId\n        };\n        tile.request = this.actor.send(message, params, function (err, data) {\n            delete tile.request;\n            tile.unloadVectorData();\n            if (tile.aborted) {\n                return callback(null);\n            }\n            if (err) {\n                return callback(err);\n            }\n            tile.loadVectorData(data, this$1.map.painter, message === 'reloadTile');\n            return callback(null);\n        });\n    };\n    GeoJSONSource.prototype.abortTile = function abortTile(tile) {\n        if (tile.request) {\n            tile.request.cancel();\n            delete tile.request;\n        }\n        tile.aborted = true;\n    };\n    GeoJSONSource.prototype.unloadTile = function unloadTile(tile) {\n        tile.unloadVectorData();\n        this.actor.send('removeTile', {\n            uid: tile.uid,\n            type: this.type,\n            source: this.id\n        });\n    };\n    GeoJSONSource.prototype.onRemove = function onRemove() {\n        this._removed = true;\n        this.actor.send('removeSource', {\n            type: this.type,\n            source: this.id\n        });\n    };\n    GeoJSONSource.prototype.serialize = function serialize() {\n        return performance.extend({}, this._options, {\n            type: this.type,\n            data: this._data\n        });\n    };\n    GeoJSONSource.prototype.hasTransition = function hasTransition() {\n        return false;\n    };\n    return GeoJSONSource;\n}(performance.Evented);\n\nvar rasterBoundsAttributes = performance.createLayout([\n    {\n        name: 'a_pos',\n        type: 'Int16',\n        components: 2\n    },\n    {\n        name: 'a_texture_pos',\n        type: 'Int16',\n        components: 2\n    }\n]);\n\nvar ImageSource = function (Evented) {\n    function ImageSource(id, options, dispatcher, eventedParent) {\n        Evented.call(this);\n        this.id = id;\n        this.dispatcher = dispatcher;\n        this.coordinates = options.coordinates;\n        this.type = 'image';\n        this.minzoom = 0;\n        this.maxzoom = 22;\n        this.tileSize = 512;\n        this.tiles = {};\n        this._loaded = false;\n        this.setEventedParent(eventedParent);\n        this.options = options;\n    }\n    if (Evented)\n        ImageSource.__proto__ = Evented;\n    ImageSource.prototype = Object.create(Evented && Evented.prototype);\n    ImageSource.prototype.constructor = ImageSource;\n    ImageSource.prototype.load = function load(newCoordinates, successCallback) {\n        var this$1 = this;\n        this._loaded = false;\n        this.fire(new performance.Event('dataloading', { dataType: 'source' }));\n        this.url = this.options.url;\n        performance.getImage(this.map._requestManager.transformRequest(this.url, performance.ResourceType.Image), function (err, image) {\n            this$1._loaded = true;\n            if (err) {\n                this$1.fire(new performance.ErrorEvent(err));\n            } else if (image) {\n                this$1.image = image;\n                if (newCoordinates) {\n                    this$1.coordinates = newCoordinates;\n                }\n                if (successCallback) {\n                    successCallback();\n                }\n                this$1._finishLoading();\n            }\n        });\n    };\n    ImageSource.prototype.loaded = function loaded() {\n        return this._loaded;\n    };\n    ImageSource.prototype.updateImage = function updateImage(options) {\n        var this$1 = this;\n        if (!this.image || !options.url) {\n            return this;\n        }\n        this.options.url = options.url;\n        this.load(options.coordinates, function () {\n            this$1.texture = null;\n        });\n        return this;\n    };\n    ImageSource.prototype._finishLoading = function _finishLoading() {\n        if (this.map) {\n            this.setCoordinates(this.coordinates);\n            this.fire(new performance.Event('data', {\n                dataType: 'source',\n                sourceDataType: 'metadata'\n            }));\n        }\n    };\n    ImageSource.prototype.onAdd = function onAdd(map) {\n        this.map = map;\n        this.load();\n    };\n    ImageSource.prototype.setCoordinates = function setCoordinates(coordinates) {\n        var this$1 = this;\n        this.coordinates = coordinates;\n        var cornerCoords = coordinates.map(performance.MercatorCoordinate.fromLngLat);\n        this.tileID = getCoordinatesCenterTileID(cornerCoords);\n        this.minzoom = this.maxzoom = this.tileID.z;\n        var tileCoords = cornerCoords.map(function (coord) {\n            return this$1.tileID.getTilePoint(coord)._round();\n        });\n        this._boundsArray = new performance.StructArrayLayout4i8();\n        this._boundsArray.emplaceBack(tileCoords[0].x, tileCoords[0].y, 0, 0);\n        this._boundsArray.emplaceBack(tileCoords[1].x, tileCoords[1].y, performance.EXTENT, 0);\n        this._boundsArray.emplaceBack(tileCoords[3].x, tileCoords[3].y, 0, performance.EXTENT);\n        this._boundsArray.emplaceBack(tileCoords[2].x, tileCoords[2].y, performance.EXTENT, performance.EXTENT);\n        if (this.boundsBuffer) {\n            this.boundsBuffer.destroy();\n            delete this.boundsBuffer;\n        }\n        this.fire(new performance.Event('data', {\n            dataType: 'source',\n            sourceDataType: 'content'\n        }));\n        return this;\n    };\n    ImageSource.prototype.prepare = function prepare() {\n        if (Object.keys(this.tiles).length === 0 || !this.image) {\n            return;\n        }\n        var context = this.map.painter.context;\n        var gl = context.gl;\n        if (!this.boundsBuffer) {\n            this.boundsBuffer = context.createVertexBuffer(this._boundsArray, rasterBoundsAttributes.members);\n        }\n        if (!this.boundsSegments) {\n            this.boundsSegments = performance.SegmentVector.simpleSegment(0, 0, 4, 2);\n        }\n        if (!this.texture) {\n            this.texture = new performance.Texture(context, this.image, gl.RGBA);\n            this.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n        }\n        for (var w in this.tiles) {\n            var tile = this.tiles[w];\n            if (tile.state !== 'loaded') {\n                tile.state = 'loaded';\n                tile.texture = this.texture;\n            }\n        }\n    };\n    ImageSource.prototype.loadTile = function loadTile(tile, callback) {\n        if (this.tileID && this.tileID.equals(tile.tileID.canonical)) {\n            this.tiles[String(tile.tileID.wrap)] = tile;\n            tile.buckets = {};\n            callback(null);\n        } else {\n            tile.state = 'errored';\n            callback(null);\n        }\n    };\n    ImageSource.prototype.serialize = function serialize() {\n        return {\n            type: 'image',\n            url: this.options.url,\n            coordinates: this.coordinates\n        };\n    };\n    ImageSource.prototype.hasTransition = function hasTransition() {\n        return false;\n    };\n    return ImageSource;\n}(performance.Evented);\nfunction getCoordinatesCenterTileID(coords) {\n    var minX = Infinity;\n    var minY = Infinity;\n    var maxX = -Infinity;\n    var maxY = -Infinity;\n    for (var i = 0, list = coords; i < list.length; i += 1) {\n        var coord = list[i];\n        minX = Math.min(minX, coord.x);\n        minY = Math.min(minY, coord.y);\n        maxX = Math.max(maxX, coord.x);\n        maxY = Math.max(maxY, coord.y);\n    }\n    var dx = maxX - minX;\n    var dy = maxY - minY;\n    var dMax = Math.max(dx, dy);\n    var zoom = Math.max(0, Math.floor(-Math.log(dMax) / Math.LN2));\n    var tilesAtZoom = Math.pow(2, zoom);\n    return new performance.CanonicalTileID(zoom, Math.floor((minX + maxX) / 2 * tilesAtZoom), Math.floor((minY + maxY) / 2 * tilesAtZoom));\n}\n\nvar VideoSource = function (ImageSource) {\n    function VideoSource(id, options, dispatcher, eventedParent) {\n        ImageSource.call(this, id, options, dispatcher, eventedParent);\n        this.roundZoom = true;\n        this.type = 'video';\n        this.options = options;\n    }\n    if (ImageSource)\n        VideoSource.__proto__ = ImageSource;\n    VideoSource.prototype = Object.create(ImageSource && ImageSource.prototype);\n    VideoSource.prototype.constructor = VideoSource;\n    VideoSource.prototype.load = function load() {\n        var this$1 = this;\n        this._loaded = false;\n        var options = this.options;\n        this.urls = [];\n        for (var i = 0, list = options.urls; i < list.length; i += 1) {\n            var url = list[i];\n            this.urls.push(this.map._requestManager.transformRequest(url, performance.ResourceType.Source).url);\n        }\n        performance.getVideo(this.urls, function (err, video) {\n            this$1._loaded = true;\n            if (err) {\n                this$1.fire(new performance.ErrorEvent(err));\n            } else if (video) {\n                this$1.video = video;\n                this$1.video.loop = true;\n                this$1.video.addEventListener('playing', function () {\n                    this$1.map.triggerRepaint();\n                });\n                if (this$1.map) {\n                    this$1.video.play();\n                }\n                this$1._finishLoading();\n            }\n        });\n    };\n    VideoSource.prototype.pause = function pause() {\n        if (this.video) {\n            this.video.pause();\n        }\n    };\n    VideoSource.prototype.play = function play() {\n        if (this.video) {\n            this.video.play();\n        }\n    };\n    VideoSource.prototype.seek = function seek(seconds) {\n        if (this.video) {\n            var seekableRange = this.video.seekable;\n            if (seconds < seekableRange.start(0) || seconds > seekableRange.end(0)) {\n                this.fire(new performance.ErrorEvent(new performance.ValidationError('sources.' + this.id, null, 'Playback for this video can be set only between the ' + seekableRange.start(0) + ' and ' + seekableRange.end(0) + '-second mark.')));\n            } else {\n                this.video.currentTime = seconds;\n            }\n        }\n    };\n    VideoSource.prototype.getVideo = function getVideo() {\n        return this.video;\n    };\n    VideoSource.prototype.onAdd = function onAdd(map) {\n        if (this.map) {\n            return;\n        }\n        this.map = map;\n        this.load();\n        if (this.video) {\n            this.video.play();\n            this.setCoordinates(this.coordinates);\n        }\n    };\n    VideoSource.prototype.prepare = function prepare() {\n        if (Object.keys(this.tiles).length === 0 || this.video.readyState < 2) {\n            return;\n        }\n        var context = this.map.painter.context;\n        var gl = context.gl;\n        if (!this.boundsBuffer) {\n            this.boundsBuffer = context.createVertexBuffer(this._boundsArray, rasterBoundsAttributes.members);\n        }\n        if (!this.boundsSegments) {\n            this.boundsSegments = performance.SegmentVector.simpleSegment(0, 0, 4, 2);\n        }\n        if (!this.texture) {\n            this.texture = new performance.Texture(context, this.video, gl.RGBA);\n            this.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n        } else if (!this.video.paused) {\n            this.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n            gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, this.video);\n        }\n        for (var w in this.tiles) {\n            var tile = this.tiles[w];\n            if (tile.state !== 'loaded') {\n                tile.state = 'loaded';\n                tile.texture = this.texture;\n            }\n        }\n    };\n    VideoSource.prototype.serialize = function serialize() {\n        return {\n            type: 'video',\n            urls: this.urls,\n            coordinates: this.coordinates\n        };\n    };\n    VideoSource.prototype.hasTransition = function hasTransition() {\n        return this.video && !this.video.paused;\n    };\n    return VideoSource;\n}(ImageSource);\n\nvar CanvasSource = function (ImageSource) {\n    function CanvasSource(id, options, dispatcher, eventedParent) {\n        ImageSource.call(this, id, options, dispatcher, eventedParent);\n        if (!options.coordinates) {\n            this.fire(new performance.ErrorEvent(new performance.ValidationError('sources.' + id, null, 'missing required property \"coordinates\"')));\n        } else if (!Array.isArray(options.coordinates) || options.coordinates.length !== 4 || options.coordinates.some(function (c) {\n                return !Array.isArray(c) || c.length !== 2 || c.some(function (l) {\n                    return typeof l !== 'number';\n                });\n            })) {\n            this.fire(new performance.ErrorEvent(new performance.ValidationError('sources.' + id, null, '\"coordinates\" property must be an array of 4 longitude/latitude array pairs')));\n        }\n        if (options.animate && typeof options.animate !== 'boolean') {\n            this.fire(new performance.ErrorEvent(new performance.ValidationError('sources.' + id, null, 'optional \"animate\" property must be a boolean value')));\n        }\n        if (!options.canvas) {\n            this.fire(new performance.ErrorEvent(new performance.ValidationError('sources.' + id, null, 'missing required property \"canvas\"')));\n        } else if (typeof options.canvas !== 'string' && !(options.canvas instanceof performance.window.HTMLCanvasElement)) {\n            this.fire(new performance.ErrorEvent(new performance.ValidationError('sources.' + id, null, '\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance')));\n        }\n        this.options = options;\n        this.animate = options.animate !== undefined ? options.animate : true;\n    }\n    if (ImageSource)\n        CanvasSource.__proto__ = ImageSource;\n    CanvasSource.prototype = Object.create(ImageSource && ImageSource.prototype);\n    CanvasSource.prototype.constructor = CanvasSource;\n    CanvasSource.prototype.load = function load() {\n        this._loaded = true;\n        if (!this.canvas) {\n            this.canvas = this.options.canvas instanceof performance.window.HTMLCanvasElement ? this.options.canvas : performance.window.document.getElementById(this.options.canvas);\n        }\n        this.width = this.canvas.width;\n        this.height = this.canvas.height;\n        if (this._hasInvalidDimensions()) {\n            this.fire(new performance.ErrorEvent(new Error('Canvas dimensions cannot be less than or equal to zero.')));\n            return;\n        }\n        this.play = function () {\n            this._playing = true;\n            this.map.triggerRepaint();\n        };\n        this.pause = function () {\n            if (this._playing) {\n                this.prepare();\n                this._playing = false;\n            }\n        };\n        this._finishLoading();\n    };\n    CanvasSource.prototype.getCanvas = function getCanvas() {\n        return this.canvas;\n    };\n    CanvasSource.prototype.onAdd = function onAdd(map) {\n        this.map = map;\n        this.load();\n        if (this.canvas) {\n            if (this.animate) {\n                this.play();\n            }\n        }\n    };\n    CanvasSource.prototype.onRemove = function onRemove() {\n        this.pause();\n    };\n    CanvasSource.prototype.prepare = function prepare() {\n        var resize = false;\n        if (this.canvas.width !== this.width) {\n            this.width = this.canvas.width;\n            resize = true;\n        }\n        if (this.canvas.height !== this.height) {\n            this.height = this.canvas.height;\n            resize = true;\n        }\n        if (this._hasInvalidDimensions()) {\n            return;\n        }\n        if (Object.keys(this.tiles).length === 0) {\n            return;\n        }\n        var context = this.map.painter.context;\n        var gl = context.gl;\n        if (!this.boundsBuffer) {\n            this.boundsBuffer = context.createVertexBuffer(this._boundsArray, rasterBoundsAttributes.members);\n        }\n        if (!this.boundsSegments) {\n            this.boundsSegments = performance.SegmentVector.simpleSegment(0, 0, 4, 2);\n        }\n        if (!this.texture) {\n            this.texture = new performance.Texture(context, this.canvas, gl.RGBA, { premultiply: true });\n        } else if (resize || this._playing) {\n            this.texture.update(this.canvas, { premultiply: true });\n        }\n        for (var w in this.tiles) {\n            var tile = this.tiles[w];\n            if (tile.state !== 'loaded') {\n                tile.state = 'loaded';\n                tile.texture = this.texture;\n            }\n        }\n    };\n    CanvasSource.prototype.serialize = function serialize() {\n        return {\n            type: 'canvas',\n            coordinates: this.coordinates\n        };\n    };\n    CanvasSource.prototype.hasTransition = function hasTransition() {\n        return this._playing;\n    };\n    CanvasSource.prototype._hasInvalidDimensions = function _hasInvalidDimensions() {\n        for (var i = 0, list = [\n                    this.canvas.width,\n                    this.canvas.height\n                ]; i < list.length; i += 1) {\n            var x = list[i];\n            if (isNaN(x) || x <= 0) {\n                return true;\n            }\n        }\n        return false;\n    };\n    return CanvasSource;\n}(ImageSource);\n\nvar sourceTypes = {\n    vector: VectorTileSource,\n    raster: RasterTileSource,\n    'raster-dem': RasterDEMTileSource,\n    geojson: GeoJSONSource,\n    video: VideoSource,\n    image: ImageSource,\n    canvas: CanvasSource\n};\nvar create = function (id, specification, dispatcher, eventedParent) {\n    var source = new sourceTypes[specification.type](id, specification, dispatcher, eventedParent);\n    if (source.id !== id) {\n        throw new Error('Expected Source id to be ' + id + ' instead of ' + source.id);\n    }\n    performance.bindAll([\n        'load',\n        'abort',\n        'unload',\n        'serialize',\n        'prepare'\n    ], source);\n    return source;\n};\nvar getType = function (name) {\n    return sourceTypes[name];\n};\nvar setType = function (name, type) {\n    sourceTypes[name] = type;\n};\n\nfunction getPixelPosMatrix(transform, tileID) {\n    var t = performance.identity([]);\n    performance.translate(t, t, [\n        1,\n        1,\n        0\n    ]);\n    performance.scale(t, t, [\n        transform.width * 0.5,\n        transform.height * 0.5,\n        1\n    ]);\n    return performance.multiply(t, t, transform.calculatePosMatrix(tileID.toUnwrapped()));\n}\nfunction queryIncludes3DLayer(layers, styleLayers, sourceID) {\n    if (layers) {\n        for (var i = 0, list = layers; i < list.length; i += 1) {\n            var layerID = list[i];\n            var layer = styleLayers[layerID];\n            if (layer && layer.source === sourceID && layer.type === 'fill-extrusion') {\n                return true;\n            }\n        }\n    } else {\n        for (var key in styleLayers) {\n            var layer$1 = styleLayers[key];\n            if (layer$1.source === sourceID && layer$1.type === 'fill-extrusion') {\n                return true;\n            }\n        }\n    }\n    return false;\n}\nfunction queryRenderedFeatures(sourceCache, styleLayers, serializedLayers, queryGeometry, params, transform) {\n    var has3DLayer = queryIncludes3DLayer(params && params.layers, styleLayers, sourceCache.id);\n    var maxPitchScaleFactor = transform.maxPitchScaleFactor();\n    var tilesIn = sourceCache.tilesIn(queryGeometry, maxPitchScaleFactor, has3DLayer);\n    tilesIn.sort(sortTilesIn);\n    var renderedFeatureLayers = [];\n    for (var i = 0, list = tilesIn; i < list.length; i += 1) {\n        var tileIn = list[i];\n        renderedFeatureLayers.push({\n            wrappedTileID: tileIn.tileID.wrapped().key,\n            queryResults: tileIn.tile.queryRenderedFeatures(styleLayers, serializedLayers, sourceCache._state, tileIn.queryGeometry, tileIn.cameraQueryGeometry, tileIn.scale, params, transform, maxPitchScaleFactor, getPixelPosMatrix(sourceCache.transform, tileIn.tileID))\n        });\n    }\n    var result = mergeRenderedFeatureLayers(renderedFeatureLayers);\n    for (var layerID in result) {\n        result[layerID].forEach(function (featureWrapper) {\n            var feature = featureWrapper.feature;\n            var state = sourceCache.getFeatureState(feature.layer['source-layer'], feature.id);\n            feature.source = feature.layer.source;\n            if (feature.layer['source-layer']) {\n                feature.sourceLayer = feature.layer['source-layer'];\n            }\n            feature.state = state;\n        });\n    }\n    return result;\n}\nfunction queryRenderedSymbols(styleLayers, serializedLayers, sourceCaches, queryGeometry, params, collisionIndex, retainedQueryData) {\n    var result = {};\n    var renderedSymbols = collisionIndex.queryRenderedSymbols(queryGeometry);\n    var bucketQueryData = [];\n    for (var i = 0, list = Object.keys(renderedSymbols).map(Number); i < list.length; i += 1) {\n        var bucketInstanceId = list[i];\n        bucketQueryData.push(retainedQueryData[bucketInstanceId]);\n    }\n    bucketQueryData.sort(sortTilesIn);\n    var loop = function () {\n        var queryData = list$2[i$2];\n        var bucketSymbols = queryData.featureIndex.lookupSymbolFeatures(renderedSymbols[queryData.bucketInstanceId], serializedLayers, queryData.bucketIndex, queryData.sourceLayerIndex, params.filter, params.layers, params.availableImages, styleLayers);\n        for (var layerID in bucketSymbols) {\n            var resultFeatures = result[layerID] = result[layerID] || [];\n            var layerSymbols = bucketSymbols[layerID];\n            layerSymbols.sort(function (a, b) {\n                var featureSortOrder = queryData.featureSortOrder;\n                if (featureSortOrder) {\n                    var sortedA = featureSortOrder.indexOf(a.featureIndex);\n                    var sortedB = featureSortOrder.indexOf(b.featureIndex);\n                    return sortedB - sortedA;\n                } else {\n                    return b.featureIndex - a.featureIndex;\n                }\n            });\n            for (var i$1 = 0, list$1 = layerSymbols; i$1 < list$1.length; i$1 += 1) {\n                var symbolFeature = list$1[i$1];\n                resultFeatures.push(symbolFeature);\n            }\n        }\n    };\n    for (var i$2 = 0, list$2 = bucketQueryData; i$2 < list$2.length; i$2 += 1)\n        loop();\n    var loop$1 = function (layerName) {\n        result[layerName].forEach(function (featureWrapper) {\n            var feature = featureWrapper.feature;\n            var layer = styleLayers[layerName];\n            var sourceCache = sourceCaches[layer.source];\n            var state = sourceCache.getFeatureState(feature.layer['source-layer'], feature.id);\n            feature.source = feature.layer.source;\n            if (feature.layer['source-layer']) {\n                feature.sourceLayer = feature.layer['source-layer'];\n            }\n            feature.state = state;\n        });\n    };\n    for (var layerName in result)\n        loop$1(layerName);\n    return result;\n}\nfunction querySourceFeatures(sourceCache, params) {\n    var tiles = sourceCache.getRenderableIds().map(function (id) {\n        return sourceCache.getTileByID(id);\n    });\n    var result = [];\n    var dataTiles = {};\n    for (var i = 0; i < tiles.length; i++) {\n        var tile = tiles[i];\n        var dataID = tile.tileID.canonical.key;\n        if (!dataTiles[dataID]) {\n            dataTiles[dataID] = true;\n            tile.querySourceFeatures(result, params);\n        }\n    }\n    return result;\n}\nfunction sortTilesIn(a, b) {\n    var idA = a.tileID;\n    var idB = b.tileID;\n    return idA.overscaledZ - idB.overscaledZ || idA.canonical.y - idB.canonical.y || idA.wrap - idB.wrap || idA.canonical.x - idB.canonical.x;\n}\nfunction mergeRenderedFeatureLayers(tiles) {\n    var result = {};\n    var wrappedIDLayerMap = {};\n    for (var i$1 = 0, list$1 = tiles; i$1 < list$1.length; i$1 += 1) {\n        var tile = list$1[i$1];\n        var queryResults = tile.queryResults;\n        var wrappedID = tile.wrappedTileID;\n        var wrappedIDLayers = wrappedIDLayerMap[wrappedID] = wrappedIDLayerMap[wrappedID] || {};\n        for (var layerID in queryResults) {\n            var tileFeatures = queryResults[layerID];\n            var wrappedIDFeatures = wrappedIDLayers[layerID] = wrappedIDLayers[layerID] || {};\n            var resultFeatures = result[layerID] = result[layerID] || [];\n            for (var i = 0, list = tileFeatures; i < list.length; i += 1) {\n                var tileFeature = list[i];\n                if (!wrappedIDFeatures[tileFeature.featureIndex]) {\n                    wrappedIDFeatures[tileFeature.featureIndex] = true;\n                    resultFeatures.push(tileFeature);\n                }\n            }\n        }\n    }\n    return result;\n}\n\nvar TileCache = function TileCache(max, onRemove) {\n    this.max = max;\n    this.onRemove = onRemove;\n    this.reset();\n};\nTileCache.prototype.reset = function reset() {\n    for (var key in this.data) {\n        for (var i = 0, list = this.data[key]; i < list.length; i += 1) {\n            var removedData = list[i];\n            if (removedData.timeout) {\n                clearTimeout(removedData.timeout);\n            }\n            this.onRemove(removedData.value);\n        }\n    }\n    this.data = {};\n    this.order = [];\n    return this;\n};\nTileCache.prototype.add = function add(tileID, data, expiryTimeout) {\n    var this$1 = this;\n    var key = tileID.wrapped().key;\n    if (this.data[key] === undefined) {\n        this.data[key] = [];\n    }\n    var dataWrapper = {\n        value: data,\n        timeout: undefined\n    };\n    if (expiryTimeout !== undefined) {\n        dataWrapper.timeout = setTimeout(function () {\n            this$1.remove(tileID, dataWrapper);\n        }, expiryTimeout);\n    }\n    this.data[key].push(dataWrapper);\n    this.order.push(key);\n    if (this.order.length > this.max) {\n        var removedData = this._getAndRemoveByKey(this.order[0]);\n        if (removedData) {\n            this.onRemove(removedData);\n        }\n    }\n    return this;\n};\nTileCache.prototype.has = function has(tileID) {\n    return tileID.wrapped().key in this.data;\n};\nTileCache.prototype.getAndRemove = function getAndRemove(tileID) {\n    if (!this.has(tileID)) {\n        return null;\n    }\n    return this._getAndRemoveByKey(tileID.wrapped().key);\n};\nTileCache.prototype._getAndRemoveByKey = function _getAndRemoveByKey(key) {\n    var data = this.data[key].shift();\n    if (data.timeout) {\n        clearTimeout(data.timeout);\n    }\n    if (this.data[key].length === 0) {\n        delete this.data[key];\n    }\n    this.order.splice(this.order.indexOf(key), 1);\n    return data.value;\n};\nTileCache.prototype.getByKey = function getByKey(key) {\n    var data = this.data[key];\n    return data ? data[0].value : null;\n};\nTileCache.prototype.get = function get(tileID) {\n    if (!this.has(tileID)) {\n        return null;\n    }\n    var data = this.data[tileID.wrapped().key][0];\n    return data.value;\n};\nTileCache.prototype.remove = function remove(tileID, value) {\n    if (!this.has(tileID)) {\n        return this;\n    }\n    var key = tileID.wrapped().key;\n    var dataIndex = value === undefined ? 0 : this.data[key].indexOf(value);\n    var data = this.data[key][dataIndex];\n    this.data[key].splice(dataIndex, 1);\n    if (data.timeout) {\n        clearTimeout(data.timeout);\n    }\n    if (this.data[key].length === 0) {\n        delete this.data[key];\n    }\n    this.onRemove(data.value);\n    this.order.splice(this.order.indexOf(key), 1);\n    return this;\n};\nTileCache.prototype.setMaxSize = function setMaxSize(max) {\n    this.max = max;\n    while (this.order.length > this.max) {\n        var removedData = this._getAndRemoveByKey(this.order[0]);\n        if (removedData) {\n            this.onRemove(removedData);\n        }\n    }\n    return this;\n};\nTileCache.prototype.filter = function filter(filterFn) {\n    var removed = [];\n    for (var key in this.data) {\n        for (var i = 0, list = this.data[key]; i < list.length; i += 1) {\n            var entry = list[i];\n            if (!filterFn(entry.value)) {\n                removed.push(entry);\n            }\n        }\n    }\n    for (var i$1 = 0, list$1 = removed; i$1 < list$1.length; i$1 += 1) {\n        var r = list$1[i$1];\n        this.remove(r.value.tileID, r);\n    }\n};\n\nvar IndexBuffer = function IndexBuffer(context, array, dynamicDraw) {\n    this.context = context;\n    var gl = context.gl;\n    this.buffer = gl.createBuffer();\n    this.dynamicDraw = Boolean(dynamicDraw);\n    this.context.unbindVAO();\n    context.bindElementBuffer.set(this.buffer);\n    gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, array.arrayBuffer, this.dynamicDraw ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW);\n    if (!this.dynamicDraw) {\n        delete array.arrayBuffer;\n    }\n};\nIndexBuffer.prototype.bind = function bind() {\n    this.context.bindElementBuffer.set(this.buffer);\n};\nIndexBuffer.prototype.updateData = function updateData(array) {\n    var gl = this.context.gl;\n    this.context.unbindVAO();\n    this.bind();\n    gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER, 0, array.arrayBuffer);\n};\nIndexBuffer.prototype.destroy = function destroy() {\n    var gl = this.context.gl;\n    if (this.buffer) {\n        gl.deleteBuffer(this.buffer);\n        delete this.buffer;\n    }\n};\n\nvar AttributeType = {\n    Int8: 'BYTE',\n    Uint8: 'UNSIGNED_BYTE',\n    Int16: 'SHORT',\n    Uint16: 'UNSIGNED_SHORT',\n    Int32: 'INT',\n    Uint32: 'UNSIGNED_INT',\n    Float32: 'FLOAT'\n};\nvar VertexBuffer = function VertexBuffer(context, array, attributes, dynamicDraw) {\n    this.length = array.length;\n    this.attributes = attributes;\n    this.itemSize = array.bytesPerElement;\n    this.dynamicDraw = dynamicDraw;\n    this.context = context;\n    var gl = context.gl;\n    this.buffer = gl.createBuffer();\n    context.bindVertexBuffer.set(this.buffer);\n    gl.bufferData(gl.ARRAY_BUFFER, array.arrayBuffer, this.dynamicDraw ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW);\n    if (!this.dynamicDraw) {\n        delete array.arrayBuffer;\n    }\n};\nVertexBuffer.prototype.bind = function bind() {\n    this.context.bindVertexBuffer.set(this.buffer);\n};\nVertexBuffer.prototype.updateData = function updateData(array) {\n    var gl = this.context.gl;\n    this.bind();\n    gl.bufferSubData(gl.ARRAY_BUFFER, 0, array.arrayBuffer);\n};\nVertexBuffer.prototype.enableAttributes = function enableAttributes(gl, program) {\n    for (var j = 0; j < this.attributes.length; j++) {\n        var member = this.attributes[j];\n        var attribIndex = program.attributes[member.name];\n        if (attribIndex !== undefined) {\n            gl.enableVertexAttribArray(attribIndex);\n        }\n    }\n};\nVertexBuffer.prototype.setVertexAttribPointers = function setVertexAttribPointers(gl, program, vertexOffset) {\n    for (var j = 0; j < this.attributes.length; j++) {\n        var member = this.attributes[j];\n        var attribIndex = program.attributes[member.name];\n        if (attribIndex !== undefined) {\n            gl.vertexAttribPointer(attribIndex, member.components, gl[AttributeType[member.type]], false, this.itemSize, member.offset + this.itemSize * (vertexOffset || 0));\n        }\n    }\n};\nVertexBuffer.prototype.destroy = function destroy() {\n    var gl = this.context.gl;\n    if (this.buffer) {\n        gl.deleteBuffer(this.buffer);\n        delete this.buffer;\n    }\n};\n\nvar BaseValue = function BaseValue(context) {\n    this.gl = context.gl;\n    this.default = this.getDefault();\n    this.current = this.default;\n    this.dirty = false;\n};\nBaseValue.prototype.get = function get() {\n    return this.current;\n};\nBaseValue.prototype.set = function set(value) {\n};\nBaseValue.prototype.getDefault = function getDefault() {\n    return this.default;\n};\nBaseValue.prototype.setDefault = function setDefault() {\n    this.set(this.default);\n};\nvar ClearColor = function (BaseValue) {\n    function ClearColor() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        ClearColor.__proto__ = BaseValue;\n    ClearColor.prototype = Object.create(BaseValue && BaseValue.prototype);\n    ClearColor.prototype.constructor = ClearColor;\n    ClearColor.prototype.getDefault = function getDefault() {\n        return performance.Color.transparent;\n    };\n    ClearColor.prototype.set = function set(v) {\n        var c = this.current;\n        if (v.r === c.r && v.g === c.g && v.b === c.b && v.a === c.a && !this.dirty) {\n            return;\n        }\n        this.gl.clearColor(v.r, v.g, v.b, v.a);\n        this.current = v;\n        this.dirty = false;\n    };\n    return ClearColor;\n}(BaseValue);\nvar ClearDepth = function (BaseValue) {\n    function ClearDepth() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        ClearDepth.__proto__ = BaseValue;\n    ClearDepth.prototype = Object.create(BaseValue && BaseValue.prototype);\n    ClearDepth.prototype.constructor = ClearDepth;\n    ClearDepth.prototype.getDefault = function getDefault() {\n        return 1;\n    };\n    ClearDepth.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        this.gl.clearDepth(v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return ClearDepth;\n}(BaseValue);\nvar ClearStencil = function (BaseValue) {\n    function ClearStencil() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        ClearStencil.__proto__ = BaseValue;\n    ClearStencil.prototype = Object.create(BaseValue && BaseValue.prototype);\n    ClearStencil.prototype.constructor = ClearStencil;\n    ClearStencil.prototype.getDefault = function getDefault() {\n        return 0;\n    };\n    ClearStencil.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        this.gl.clearStencil(v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return ClearStencil;\n}(BaseValue);\nvar ColorMask = function (BaseValue) {\n    function ColorMask() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        ColorMask.__proto__ = BaseValue;\n    ColorMask.prototype = Object.create(BaseValue && BaseValue.prototype);\n    ColorMask.prototype.constructor = ColorMask;\n    ColorMask.prototype.getDefault = function getDefault() {\n        return [\n            true,\n            true,\n            true,\n            true\n        ];\n    };\n    ColorMask.prototype.set = function set(v) {\n        var c = this.current;\n        if (v[0] === c[0] && v[1] === c[1] && v[2] === c[2] && v[3] === c[3] && !this.dirty) {\n            return;\n        }\n        this.gl.colorMask(v[0], v[1], v[2], v[3]);\n        this.current = v;\n        this.dirty = false;\n    };\n    return ColorMask;\n}(BaseValue);\nvar DepthMask = function (BaseValue) {\n    function DepthMask() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        DepthMask.__proto__ = BaseValue;\n    DepthMask.prototype = Object.create(BaseValue && BaseValue.prototype);\n    DepthMask.prototype.constructor = DepthMask;\n    DepthMask.prototype.getDefault = function getDefault() {\n        return true;\n    };\n    DepthMask.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        this.gl.depthMask(v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return DepthMask;\n}(BaseValue);\nvar StencilMask = function (BaseValue) {\n    function StencilMask() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        StencilMask.__proto__ = BaseValue;\n    StencilMask.prototype = Object.create(BaseValue && BaseValue.prototype);\n    StencilMask.prototype.constructor = StencilMask;\n    StencilMask.prototype.getDefault = function getDefault() {\n        return 255;\n    };\n    StencilMask.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        this.gl.stencilMask(v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return StencilMask;\n}(BaseValue);\nvar StencilFunc = function (BaseValue) {\n    function StencilFunc() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        StencilFunc.__proto__ = BaseValue;\n    StencilFunc.prototype = Object.create(BaseValue && BaseValue.prototype);\n    StencilFunc.prototype.constructor = StencilFunc;\n    StencilFunc.prototype.getDefault = function getDefault() {\n        return {\n            func: this.gl.ALWAYS,\n            ref: 0,\n            mask: 255\n        };\n    };\n    StencilFunc.prototype.set = function set(v) {\n        var c = this.current;\n        if (v.func === c.func && v.ref === c.ref && v.mask === c.mask && !this.dirty) {\n            return;\n        }\n        this.gl.stencilFunc(v.func, v.ref, v.mask);\n        this.current = v;\n        this.dirty = false;\n    };\n    return StencilFunc;\n}(BaseValue);\nvar StencilOp = function (BaseValue) {\n    function StencilOp() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        StencilOp.__proto__ = BaseValue;\n    StencilOp.prototype = Object.create(BaseValue && BaseValue.prototype);\n    StencilOp.prototype.constructor = StencilOp;\n    StencilOp.prototype.getDefault = function getDefault() {\n        var gl = this.gl;\n        return [\n            gl.KEEP,\n            gl.KEEP,\n            gl.KEEP\n        ];\n    };\n    StencilOp.prototype.set = function set(v) {\n        var c = this.current;\n        if (v[0] === c[0] && v[1] === c[1] && v[2] === c[2] && !this.dirty) {\n            return;\n        }\n        this.gl.stencilOp(v[0], v[1], v[2]);\n        this.current = v;\n        this.dirty = false;\n    };\n    return StencilOp;\n}(BaseValue);\nvar StencilTest = function (BaseValue) {\n    function StencilTest() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        StencilTest.__proto__ = BaseValue;\n    StencilTest.prototype = Object.create(BaseValue && BaseValue.prototype);\n    StencilTest.prototype.constructor = StencilTest;\n    StencilTest.prototype.getDefault = function getDefault() {\n        return false;\n    };\n    StencilTest.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        var gl = this.gl;\n        if (v) {\n            gl.enable(gl.STENCIL_TEST);\n        } else {\n            gl.disable(gl.STENCIL_TEST);\n        }\n        this.current = v;\n        this.dirty = false;\n    };\n    return StencilTest;\n}(BaseValue);\nvar DepthRange = function (BaseValue) {\n    function DepthRange() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        DepthRange.__proto__ = BaseValue;\n    DepthRange.prototype = Object.create(BaseValue && BaseValue.prototype);\n    DepthRange.prototype.constructor = DepthRange;\n    DepthRange.prototype.getDefault = function getDefault() {\n        return [\n            0,\n            1\n        ];\n    };\n    DepthRange.prototype.set = function set(v) {\n        var c = this.current;\n        if (v[0] === c[0] && v[1] === c[1] && !this.dirty) {\n            return;\n        }\n        this.gl.depthRange(v[0], v[1]);\n        this.current = v;\n        this.dirty = false;\n    };\n    return DepthRange;\n}(BaseValue);\nvar DepthTest = function (BaseValue) {\n    function DepthTest() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        DepthTest.__proto__ = BaseValue;\n    DepthTest.prototype = Object.create(BaseValue && BaseValue.prototype);\n    DepthTest.prototype.constructor = DepthTest;\n    DepthTest.prototype.getDefault = function getDefault() {\n        return false;\n    };\n    DepthTest.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        var gl = this.gl;\n        if (v) {\n            gl.enable(gl.DEPTH_TEST);\n        } else {\n            gl.disable(gl.DEPTH_TEST);\n        }\n        this.current = v;\n        this.dirty = false;\n    };\n    return DepthTest;\n}(BaseValue);\nvar DepthFunc = function (BaseValue) {\n    function DepthFunc() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        DepthFunc.__proto__ = BaseValue;\n    DepthFunc.prototype = Object.create(BaseValue && BaseValue.prototype);\n    DepthFunc.prototype.constructor = DepthFunc;\n    DepthFunc.prototype.getDefault = function getDefault() {\n        return this.gl.LESS;\n    };\n    DepthFunc.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        this.gl.depthFunc(v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return DepthFunc;\n}(BaseValue);\nvar Blend = function (BaseValue) {\n    function Blend() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        Blend.__proto__ = BaseValue;\n    Blend.prototype = Object.create(BaseValue && BaseValue.prototype);\n    Blend.prototype.constructor = Blend;\n    Blend.prototype.getDefault = function getDefault() {\n        return false;\n    };\n    Blend.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        var gl = this.gl;\n        if (v) {\n            gl.enable(gl.BLEND);\n        } else {\n            gl.disable(gl.BLEND);\n        }\n        this.current = v;\n        this.dirty = false;\n    };\n    return Blend;\n}(BaseValue);\nvar BlendFunc = function (BaseValue) {\n    function BlendFunc() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        BlendFunc.__proto__ = BaseValue;\n    BlendFunc.prototype = Object.create(BaseValue && BaseValue.prototype);\n    BlendFunc.prototype.constructor = BlendFunc;\n    BlendFunc.prototype.getDefault = function getDefault() {\n        var gl = this.gl;\n        return [\n            gl.ONE,\n            gl.ZERO\n        ];\n    };\n    BlendFunc.prototype.set = function set(v) {\n        var c = this.current;\n        if (v[0] === c[0] && v[1] === c[1] && !this.dirty) {\n            return;\n        }\n        this.gl.blendFunc(v[0], v[1]);\n        this.current = v;\n        this.dirty = false;\n    };\n    return BlendFunc;\n}(BaseValue);\nvar BlendColor = function (BaseValue) {\n    function BlendColor() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        BlendColor.__proto__ = BaseValue;\n    BlendColor.prototype = Object.create(BaseValue && BaseValue.prototype);\n    BlendColor.prototype.constructor = BlendColor;\n    BlendColor.prototype.getDefault = function getDefault() {\n        return performance.Color.transparent;\n    };\n    BlendColor.prototype.set = function set(v) {\n        var c = this.current;\n        if (v.r === c.r && v.g === c.g && v.b === c.b && v.a === c.a && !this.dirty) {\n            return;\n        }\n        this.gl.blendColor(v.r, v.g, v.b, v.a);\n        this.current = v;\n        this.dirty = false;\n    };\n    return BlendColor;\n}(BaseValue);\nvar BlendEquation = function (BaseValue) {\n    function BlendEquation() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        BlendEquation.__proto__ = BaseValue;\n    BlendEquation.prototype = Object.create(BaseValue && BaseValue.prototype);\n    BlendEquation.prototype.constructor = BlendEquation;\n    BlendEquation.prototype.getDefault = function getDefault() {\n        return this.gl.FUNC_ADD;\n    };\n    BlendEquation.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        this.gl.blendEquation(v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return BlendEquation;\n}(BaseValue);\nvar CullFace = function (BaseValue) {\n    function CullFace() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        CullFace.__proto__ = BaseValue;\n    CullFace.prototype = Object.create(BaseValue && BaseValue.prototype);\n    CullFace.prototype.constructor = CullFace;\n    CullFace.prototype.getDefault = function getDefault() {\n        return false;\n    };\n    CullFace.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        var gl = this.gl;\n        if (v) {\n            gl.enable(gl.CULL_FACE);\n        } else {\n            gl.disable(gl.CULL_FACE);\n        }\n        this.current = v;\n        this.dirty = false;\n    };\n    return CullFace;\n}(BaseValue);\nvar CullFaceSide = function (BaseValue) {\n    function CullFaceSide() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        CullFaceSide.__proto__ = BaseValue;\n    CullFaceSide.prototype = Object.create(BaseValue && BaseValue.prototype);\n    CullFaceSide.prototype.constructor = CullFaceSide;\n    CullFaceSide.prototype.getDefault = function getDefault() {\n        return this.gl.BACK;\n    };\n    CullFaceSide.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        this.gl.cullFace(v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return CullFaceSide;\n}(BaseValue);\nvar FrontFace = function (BaseValue) {\n    function FrontFace() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        FrontFace.__proto__ = BaseValue;\n    FrontFace.prototype = Object.create(BaseValue && BaseValue.prototype);\n    FrontFace.prototype.constructor = FrontFace;\n    FrontFace.prototype.getDefault = function getDefault() {\n        return this.gl.CCW;\n    };\n    FrontFace.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        this.gl.frontFace(v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return FrontFace;\n}(BaseValue);\nvar Program = function (BaseValue) {\n    function Program() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        Program.__proto__ = BaseValue;\n    Program.prototype = Object.create(BaseValue && BaseValue.prototype);\n    Program.prototype.constructor = Program;\n    Program.prototype.getDefault = function getDefault() {\n        return null;\n    };\n    Program.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        this.gl.useProgram(v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return Program;\n}(BaseValue);\nvar ActiveTextureUnit = function (BaseValue) {\n    function ActiveTextureUnit() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        ActiveTextureUnit.__proto__ = BaseValue;\n    ActiveTextureUnit.prototype = Object.create(BaseValue && BaseValue.prototype);\n    ActiveTextureUnit.prototype.constructor = ActiveTextureUnit;\n    ActiveTextureUnit.prototype.getDefault = function getDefault() {\n        return this.gl.TEXTURE0;\n    };\n    ActiveTextureUnit.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        this.gl.activeTexture(v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return ActiveTextureUnit;\n}(BaseValue);\nvar Viewport = function (BaseValue) {\n    function Viewport() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        Viewport.__proto__ = BaseValue;\n    Viewport.prototype = Object.create(BaseValue && BaseValue.prototype);\n    Viewport.prototype.constructor = Viewport;\n    Viewport.prototype.getDefault = function getDefault() {\n        var gl = this.gl;\n        return [\n            0,\n            0,\n            gl.drawingBufferWidth,\n            gl.drawingBufferHeight\n        ];\n    };\n    Viewport.prototype.set = function set(v) {\n        var c = this.current;\n        if (v[0] === c[0] && v[1] === c[1] && v[2] === c[2] && v[3] === c[3] && !this.dirty) {\n            return;\n        }\n        this.gl.viewport(v[0], v[1], v[2], v[3]);\n        this.current = v;\n        this.dirty = false;\n    };\n    return Viewport;\n}(BaseValue);\nvar BindFramebuffer = function (BaseValue) {\n    function BindFramebuffer() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        BindFramebuffer.__proto__ = BaseValue;\n    BindFramebuffer.prototype = Object.create(BaseValue && BaseValue.prototype);\n    BindFramebuffer.prototype.constructor = BindFramebuffer;\n    BindFramebuffer.prototype.getDefault = function getDefault() {\n        return null;\n    };\n    BindFramebuffer.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        var gl = this.gl;\n        gl.bindFramebuffer(gl.FRAMEBUFFER, v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return BindFramebuffer;\n}(BaseValue);\nvar BindRenderbuffer = function (BaseValue) {\n    function BindRenderbuffer() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        BindRenderbuffer.__proto__ = BaseValue;\n    BindRenderbuffer.prototype = Object.create(BaseValue && BaseValue.prototype);\n    BindRenderbuffer.prototype.constructor = BindRenderbuffer;\n    BindRenderbuffer.prototype.getDefault = function getDefault() {\n        return null;\n    };\n    BindRenderbuffer.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        var gl = this.gl;\n        gl.bindRenderbuffer(gl.RENDERBUFFER, v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return BindRenderbuffer;\n}(BaseValue);\nvar BindTexture = function (BaseValue) {\n    function BindTexture() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        BindTexture.__proto__ = BaseValue;\n    BindTexture.prototype = Object.create(BaseValue && BaseValue.prototype);\n    BindTexture.prototype.constructor = BindTexture;\n    BindTexture.prototype.getDefault = function getDefault() {\n        return null;\n    };\n    BindTexture.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        var gl = this.gl;\n        gl.bindTexture(gl.TEXTURE_2D, v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return BindTexture;\n}(BaseValue);\nvar BindVertexBuffer = function (BaseValue) {\n    function BindVertexBuffer() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        BindVertexBuffer.__proto__ = BaseValue;\n    BindVertexBuffer.prototype = Object.create(BaseValue && BaseValue.prototype);\n    BindVertexBuffer.prototype.constructor = BindVertexBuffer;\n    BindVertexBuffer.prototype.getDefault = function getDefault() {\n        return null;\n    };\n    BindVertexBuffer.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        var gl = this.gl;\n        gl.bindBuffer(gl.ARRAY_BUFFER, v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return BindVertexBuffer;\n}(BaseValue);\nvar BindElementBuffer = function (BaseValue) {\n    function BindElementBuffer() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        BindElementBuffer.__proto__ = BaseValue;\n    BindElementBuffer.prototype = Object.create(BaseValue && BaseValue.prototype);\n    BindElementBuffer.prototype.constructor = BindElementBuffer;\n    BindElementBuffer.prototype.getDefault = function getDefault() {\n        return null;\n    };\n    BindElementBuffer.prototype.set = function set(v) {\n        var gl = this.gl;\n        gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return BindElementBuffer;\n}(BaseValue);\nvar BindVertexArrayOES = function (BaseValue) {\n    function BindVertexArrayOES(context) {\n        BaseValue.call(this, context);\n        this.vao = context.extVertexArrayObject;\n    }\n    if (BaseValue)\n        BindVertexArrayOES.__proto__ = BaseValue;\n    BindVertexArrayOES.prototype = Object.create(BaseValue && BaseValue.prototype);\n    BindVertexArrayOES.prototype.constructor = BindVertexArrayOES;\n    BindVertexArrayOES.prototype.getDefault = function getDefault() {\n        return null;\n    };\n    BindVertexArrayOES.prototype.set = function set(v) {\n        if (!this.vao || v === this.current && !this.dirty) {\n            return;\n        }\n        this.vao.bindVertexArrayOES(v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return BindVertexArrayOES;\n}(BaseValue);\nvar PixelStoreUnpack = function (BaseValue) {\n    function PixelStoreUnpack() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        PixelStoreUnpack.__proto__ = BaseValue;\n    PixelStoreUnpack.prototype = Object.create(BaseValue && BaseValue.prototype);\n    PixelStoreUnpack.prototype.constructor = PixelStoreUnpack;\n    PixelStoreUnpack.prototype.getDefault = function getDefault() {\n        return 4;\n    };\n    PixelStoreUnpack.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        var gl = this.gl;\n        gl.pixelStorei(gl.UNPACK_ALIGNMENT, v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return PixelStoreUnpack;\n}(BaseValue);\nvar PixelStoreUnpackPremultiplyAlpha = function (BaseValue) {\n    function PixelStoreUnpackPremultiplyAlpha() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        PixelStoreUnpackPremultiplyAlpha.__proto__ = BaseValue;\n    PixelStoreUnpackPremultiplyAlpha.prototype = Object.create(BaseValue && BaseValue.prototype);\n    PixelStoreUnpackPremultiplyAlpha.prototype.constructor = PixelStoreUnpackPremultiplyAlpha;\n    PixelStoreUnpackPremultiplyAlpha.prototype.getDefault = function getDefault() {\n        return false;\n    };\n    PixelStoreUnpackPremultiplyAlpha.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        var gl = this.gl;\n        gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return PixelStoreUnpackPremultiplyAlpha;\n}(BaseValue);\nvar PixelStoreUnpackFlipY = function (BaseValue) {\n    function PixelStoreUnpackFlipY() {\n        BaseValue.apply(this, arguments);\n    }\n    if (BaseValue)\n        PixelStoreUnpackFlipY.__proto__ = BaseValue;\n    PixelStoreUnpackFlipY.prototype = Object.create(BaseValue && BaseValue.prototype);\n    PixelStoreUnpackFlipY.prototype.constructor = PixelStoreUnpackFlipY;\n    PixelStoreUnpackFlipY.prototype.getDefault = function getDefault() {\n        return false;\n    };\n    PixelStoreUnpackFlipY.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        var gl = this.gl;\n        gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return PixelStoreUnpackFlipY;\n}(BaseValue);\nvar FramebufferAttachment = function (BaseValue) {\n    function FramebufferAttachment(context, parent) {\n        BaseValue.call(this, context);\n        this.context = context;\n        this.parent = parent;\n    }\n    if (BaseValue)\n        FramebufferAttachment.__proto__ = BaseValue;\n    FramebufferAttachment.prototype = Object.create(BaseValue && BaseValue.prototype);\n    FramebufferAttachment.prototype.constructor = FramebufferAttachment;\n    FramebufferAttachment.prototype.getDefault = function getDefault() {\n        return null;\n    };\n    return FramebufferAttachment;\n}(BaseValue);\nvar ColorAttachment = function (FramebufferAttachment) {\n    function ColorAttachment() {\n        FramebufferAttachment.apply(this, arguments);\n    }\n    if (FramebufferAttachment)\n        ColorAttachment.__proto__ = FramebufferAttachment;\n    ColorAttachment.prototype = Object.create(FramebufferAttachment && FramebufferAttachment.prototype);\n    ColorAttachment.prototype.constructor = ColorAttachment;\n    ColorAttachment.prototype.setDirty = function setDirty() {\n        this.dirty = true;\n    };\n    ColorAttachment.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        this.context.bindFramebuffer.set(this.parent);\n        var gl = this.gl;\n        gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, v, 0);\n        this.current = v;\n        this.dirty = false;\n    };\n    return ColorAttachment;\n}(FramebufferAttachment);\nvar DepthAttachment = function (FramebufferAttachment) {\n    function DepthAttachment() {\n        FramebufferAttachment.apply(this, arguments);\n    }\n    if (FramebufferAttachment)\n        DepthAttachment.__proto__ = FramebufferAttachment;\n    DepthAttachment.prototype = Object.create(FramebufferAttachment && FramebufferAttachment.prototype);\n    DepthAttachment.prototype.constructor = DepthAttachment;\n    DepthAttachment.prototype.set = function set(v) {\n        if (v === this.current && !this.dirty) {\n            return;\n        }\n        this.context.bindFramebuffer.set(this.parent);\n        var gl = this.gl;\n        gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, v);\n        this.current = v;\n        this.dirty = false;\n    };\n    return DepthAttachment;\n}(FramebufferAttachment);\n\nvar Framebuffer = function Framebuffer(context, width, height, hasDepth) {\n    this.context = context;\n    this.width = width;\n    this.height = height;\n    var gl = context.gl;\n    var fbo = this.framebuffer = gl.createFramebuffer();\n    this.colorAttachment = new ColorAttachment(context, fbo);\n    if (hasDepth) {\n        this.depthAttachment = new DepthAttachment(context, fbo);\n    }\n};\nFramebuffer.prototype.destroy = function destroy() {\n    var gl = this.context.gl;\n    var texture = this.colorAttachment.get();\n    if (texture) {\n        gl.deleteTexture(texture);\n    }\n    if (this.depthAttachment) {\n        var renderbuffer = this.depthAttachment.get();\n        if (renderbuffer) {\n            gl.deleteRenderbuffer(renderbuffer);\n        }\n    }\n    gl.deleteFramebuffer(this.framebuffer);\n};\n\nvar ALWAYS = 519;\nvar DepthMode = function DepthMode(depthFunc, depthMask, depthRange) {\n    this.func = depthFunc;\n    this.mask = depthMask;\n    this.range = depthRange;\n};\nDepthMode.ReadOnly = false;\nDepthMode.ReadWrite = true;\nDepthMode.disabled = new DepthMode(ALWAYS, DepthMode.ReadOnly, [\n    0,\n    1\n]);\n\nvar ALWAYS$1 = 519;\nvar KEEP = 7680;\nvar StencilMode = function StencilMode(test, ref, mask, fail, depthFail, pass) {\n    this.test = test;\n    this.ref = ref;\n    this.mask = mask;\n    this.fail = fail;\n    this.depthFail = depthFail;\n    this.pass = pass;\n};\nStencilMode.disabled = new StencilMode({\n    func: ALWAYS$1,\n    mask: 0\n}, 0, 0, KEEP, KEEP, KEEP);\n\nvar ZERO = 0;\nvar ONE = 1;\nvar ONE_MINUS_SRC_ALPHA = 771;\nvar ColorMode = function ColorMode(blendFunction, blendColor, mask) {\n    this.blendFunction = blendFunction;\n    this.blendColor = blendColor;\n    this.mask = mask;\n};\nColorMode.Replace = [\n    ONE,\n    ZERO\n];\nColorMode.disabled = new ColorMode(ColorMode.Replace, performance.Color.transparent, [\n    false,\n    false,\n    false,\n    false\n]);\nColorMode.unblended = new ColorMode(ColorMode.Replace, performance.Color.transparent, [\n    true,\n    true,\n    true,\n    true\n]);\nColorMode.alphaBlended = new ColorMode([\n    ONE,\n    ONE_MINUS_SRC_ALPHA\n], performance.Color.transparent, [\n    true,\n    true,\n    true,\n    true\n]);\n\nvar BACK = 1029;\nvar CCW = 2305;\nvar CullFaceMode = function CullFaceMode(enable, mode, frontFace) {\n    this.enable = enable;\n    this.mode = mode;\n    this.frontFace = frontFace;\n};\nCullFaceMode.disabled = new CullFaceMode(false, BACK, CCW);\nCullFaceMode.backCCW = new CullFaceMode(true, BACK, CCW);\n\nvar Context = function Context(gl) {\n    this.gl = gl;\n    this.extVertexArrayObject = this.gl.getExtension('OES_vertex_array_object');\n    this.clearColor = new ClearColor(this);\n    this.clearDepth = new ClearDepth(this);\n    this.clearStencil = new ClearStencil(this);\n    this.colorMask = new ColorMask(this);\n    this.depthMask = new DepthMask(this);\n    this.stencilMask = new StencilMask(this);\n    this.stencilFunc = new StencilFunc(this);\n    this.stencilOp = new StencilOp(this);\n    this.stencilTest = new StencilTest(this);\n    this.depthRange = new DepthRange(this);\n    this.depthTest = new DepthTest(this);\n    this.depthFunc = new DepthFunc(this);\n    this.blend = new Blend(this);\n    this.blendFunc = new BlendFunc(this);\n    this.blendColor = new BlendColor(this);\n    this.blendEquation = new BlendEquation(this);\n    this.cullFace = new CullFace(this);\n    this.cullFaceSide = new CullFaceSide(this);\n    this.frontFace = new FrontFace(this);\n    this.program = new Program(this);\n    this.activeTexture = new ActiveTextureUnit(this);\n    this.viewport = new Viewport(this);\n    this.bindFramebuffer = new BindFramebuffer(this);\n    this.bindRenderbuffer = new BindRenderbuffer(this);\n    this.bindTexture = new BindTexture(this);\n    this.bindVertexBuffer = new BindVertexBuffer(this);\n    this.bindElementBuffer = new BindElementBuffer(this);\n    this.bindVertexArrayOES = this.extVertexArrayObject && new BindVertexArrayOES(this);\n    this.pixelStoreUnpack = new PixelStoreUnpack(this);\n    this.pixelStoreUnpackPremultiplyAlpha = new PixelStoreUnpackPremultiplyAlpha(this);\n    this.pixelStoreUnpackFlipY = new PixelStoreUnpackFlipY(this);\n    this.extTextureFilterAnisotropic = gl.getExtension('EXT_texture_filter_anisotropic') || gl.getExtension('MOZ_EXT_texture_filter_anisotropic') || gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic');\n    if (this.extTextureFilterAnisotropic) {\n        this.extTextureFilterAnisotropicMax = gl.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT);\n    }\n    this.extTextureHalfFloat = gl.getExtension('OES_texture_half_float');\n    if (this.extTextureHalfFloat) {\n        gl.getExtension('OES_texture_half_float_linear');\n        this.extRenderToTextureHalfFloat = gl.getExtension('EXT_color_buffer_half_float');\n    }\n    this.extTimerQuery = gl.getExtension('EXT_disjoint_timer_query');\n};\nContext.prototype.setDefault = function setDefault() {\n    this.unbindVAO();\n    this.clearColor.setDefault();\n    this.clearDepth.setDefault();\n    this.clearStencil.setDefault();\n    this.colorMask.setDefault();\n    this.depthMask.setDefault();\n    this.stencilMask.setDefault();\n    this.stencilFunc.setDefault();\n    this.stencilOp.setDefault();\n    this.stencilTest.setDefault();\n    this.depthRange.setDefault();\n    this.depthTest.setDefault();\n    this.depthFunc.setDefault();\n    this.blend.setDefault();\n    this.blendFunc.setDefault();\n    this.blendColor.setDefault();\n    this.blendEquation.setDefault();\n    this.cullFace.setDefault();\n    this.cullFaceSide.setDefault();\n    this.frontFace.setDefault();\n    this.program.setDefault();\n    this.activeTexture.setDefault();\n    this.bindFramebuffer.setDefault();\n    this.pixelStoreUnpack.setDefault();\n    this.pixelStoreUnpackPremultiplyAlpha.setDefault();\n    this.pixelStoreUnpackFlipY.setDefault();\n};\nContext.prototype.setDirty = function setDirty() {\n    this.clearColor.dirty = true;\n    this.clearDepth.dirty = true;\n    this.clearStencil.dirty = true;\n    this.colorMask.dirty = true;\n    this.depthMask.dirty = true;\n    this.stencilMask.dirty = true;\n    this.stencilFunc.dirty = true;\n    this.stencilOp.dirty = true;\n    this.stencilTest.dirty = true;\n    this.depthRange.dirty = true;\n    this.depthTest.dirty = true;\n    this.depthFunc.dirty = true;\n    this.blend.dirty = true;\n    this.blendFunc.dirty = true;\n    this.blendColor.dirty = true;\n    this.blendEquation.dirty = true;\n    this.cullFace.dirty = true;\n    this.cullFaceSide.dirty = true;\n    this.frontFace.dirty = true;\n    this.program.dirty = true;\n    this.activeTexture.dirty = true;\n    this.viewport.dirty = true;\n    this.bindFramebuffer.dirty = true;\n    this.bindRenderbuffer.dirty = true;\n    this.bindTexture.dirty = true;\n    this.bindVertexBuffer.dirty = true;\n    this.bindElementBuffer.dirty = true;\n    if (this.extVertexArrayObject) {\n        this.bindVertexArrayOES.dirty = true;\n    }\n    this.pixelStoreUnpack.dirty = true;\n    this.pixelStoreUnpackPremultiplyAlpha.dirty = true;\n    this.pixelStoreUnpackFlipY.dirty = true;\n};\nContext.prototype.createIndexBuffer = function createIndexBuffer(array, dynamicDraw) {\n    return new IndexBuffer(this, array, dynamicDraw);\n};\nContext.prototype.createVertexBuffer = function createVertexBuffer(array, attributes, dynamicDraw) {\n    return new VertexBuffer(this, array, attributes, dynamicDraw);\n};\nContext.prototype.createRenderbuffer = function createRenderbuffer(storageFormat, width, height) {\n    var gl = this.gl;\n    var rbo = gl.createRenderbuffer();\n    this.bindRenderbuffer.set(rbo);\n    gl.renderbufferStorage(gl.RENDERBUFFER, storageFormat, width, height);\n    this.bindRenderbuffer.set(null);\n    return rbo;\n};\nContext.prototype.createFramebuffer = function createFramebuffer(width, height, hasDepth) {\n    return new Framebuffer(this, width, height, hasDepth);\n};\nContext.prototype.clear = function clear(ref) {\n    var color = ref.color;\n    var depth = ref.depth;\n    var gl = this.gl;\n    var mask = 0;\n    if (color) {\n        mask |= gl.COLOR_BUFFER_BIT;\n        this.clearColor.set(color);\n        this.colorMask.set([\n            true,\n            true,\n            true,\n            true\n        ]);\n    }\n    if (typeof depth !== 'undefined') {\n        mask |= gl.DEPTH_BUFFER_BIT;\n        this.depthRange.set([\n            0,\n            1\n        ]);\n        this.clearDepth.set(depth);\n        this.depthMask.set(true);\n    }\n    gl.clear(mask);\n};\nContext.prototype.setCullFace = function setCullFace(cullFaceMode) {\n    if (cullFaceMode.enable === false) {\n        this.cullFace.set(false);\n    } else {\n        this.cullFace.set(true);\n        this.cullFaceSide.set(cullFaceMode.mode);\n        this.frontFace.set(cullFaceMode.frontFace);\n    }\n};\nContext.prototype.setDepthMode = function setDepthMode(depthMode) {\n    if (depthMode.func === this.gl.ALWAYS && !depthMode.mask) {\n        this.depthTest.set(false);\n    } else {\n        this.depthTest.set(true);\n        this.depthFunc.set(depthMode.func);\n        this.depthMask.set(depthMode.mask);\n        this.depthRange.set(depthMode.range);\n    }\n};\nContext.prototype.setStencilMode = function setStencilMode(stencilMode) {\n    if (stencilMode.test.func === this.gl.ALWAYS && !stencilMode.mask) {\n        this.stencilTest.set(false);\n    } else {\n        this.stencilTest.set(true);\n        this.stencilMask.set(stencilMode.mask);\n        this.stencilOp.set([\n            stencilMode.fail,\n            stencilMode.depthFail,\n            stencilMode.pass\n        ]);\n        this.stencilFunc.set({\n            func: stencilMode.test.func,\n            ref: stencilMode.ref,\n            mask: stencilMode.test.mask\n        });\n    }\n};\nContext.prototype.setColorMode = function setColorMode(colorMode) {\n    if (performance.deepEqual(colorMode.blendFunction, ColorMode.Replace)) {\n        this.blend.set(false);\n    } else {\n        this.blend.set(true);\n        this.blendFunc.set(colorMode.blendFunction);\n        this.blendColor.set(colorMode.blendColor);\n    }\n    this.colorMask.set(colorMode.mask);\n};\nContext.prototype.unbindVAO = function unbindVAO() {\n    if (this.extVertexArrayObject) {\n        this.bindVertexArrayOES.set(null);\n    }\n};\n\nvar SourceCache = function (Evented) {\n    function SourceCache(id, options, dispatcher) {\n        var this$1 = this;\n        Evented.call(this);\n        this.id = id;\n        this.dispatcher = dispatcher;\n        this.on('data', function (e) {\n            if (e.dataType === 'source' && e.sourceDataType === 'metadata') {\n                this$1._sourceLoaded = true;\n            }\n            if (this$1._sourceLoaded && !this$1._paused && e.dataType === 'source' && e.sourceDataType === 'content') {\n                this$1.reload();\n                if (this$1.transform) {\n                    this$1.update(this$1.transform);\n                }\n            }\n        });\n        this.on('error', function () {\n            this$1._sourceErrored = true;\n        });\n        this._source = create(id, options, dispatcher, this);\n        this._tiles = {};\n        this._cache = new TileCache(0, this._unloadTile.bind(this));\n        this._timers = {};\n        this._cacheTimers = {};\n        this._maxTileCacheSize = null;\n        this._loadedParentTiles = {};\n        this._coveredTiles = {};\n        this._state = new performance.SourceFeatureState();\n    }\n    if (Evented)\n        SourceCache.__proto__ = Evented;\n    SourceCache.prototype = Object.create(Evented && Evented.prototype);\n    SourceCache.prototype.constructor = SourceCache;\n    SourceCache.prototype.onAdd = function onAdd(map) {\n        this.map = map;\n        this._maxTileCacheSize = map ? map._maxTileCacheSize : null;\n        if (this._source && this._source.onAdd) {\n            this._source.onAdd(map);\n        }\n    };\n    SourceCache.prototype.onRemove = function onRemove(map) {\n        if (this._source && this._source.onRemove) {\n            this._source.onRemove(map);\n        }\n    };\n    SourceCache.prototype.loaded = function loaded() {\n        if (this._sourceErrored) {\n            return true;\n        }\n        if (!this._sourceLoaded) {\n            return false;\n        }\n        if (!this._source.loaded()) {\n            return false;\n        }\n        for (var t in this._tiles) {\n            var tile = this._tiles[t];\n            if (tile.state !== 'loaded' && tile.state !== 'errored') {\n                return false;\n            }\n        }\n        return true;\n    };\n    SourceCache.prototype.getSource = function getSource() {\n        return this._source;\n    };\n    SourceCache.prototype.pause = function pause() {\n        this._paused = true;\n    };\n    SourceCache.prototype.resume = function resume() {\n        if (!this._paused) {\n            return;\n        }\n        var shouldReload = this._shouldReloadOnResume;\n        this._paused = false;\n        this._shouldReloadOnResume = false;\n        if (shouldReload) {\n            this.reload();\n        }\n        if (this.transform) {\n            this.update(this.transform);\n        }\n    };\n    SourceCache.prototype._loadTile = function _loadTile(tile, callback) {\n        return this._source.loadTile(tile, callback);\n    };\n    SourceCache.prototype._unloadTile = function _unloadTile(tile) {\n        if (this._source.unloadTile) {\n            return this._source.unloadTile(tile, function () {\n            });\n        }\n    };\n    SourceCache.prototype._abortTile = function _abortTile(tile) {\n        if (this._source.abortTile) {\n            return this._source.abortTile(tile, function () {\n            });\n        }\n    };\n    SourceCache.prototype.serialize = function serialize() {\n        return this._source.serialize();\n    };\n    SourceCache.prototype.prepare = function prepare(context) {\n        if (this._source.prepare) {\n            this._source.prepare();\n        }\n        this._state.coalesceChanges(this._tiles, this.map ? this.map.painter : null);\n        for (var i in this._tiles) {\n            var tile = this._tiles[i];\n            tile.upload(context);\n            tile.prepare(this.map.style.imageManager);\n        }\n    };\n    SourceCache.prototype.getIds = function getIds() {\n        return performance.values(this._tiles).map(function (tile) {\n            return tile.tileID;\n        }).sort(compareTileId).map(function (id) {\n            return id.key;\n        });\n    };\n    SourceCache.prototype.getRenderableIds = function getRenderableIds(symbolLayer) {\n        var this$1 = this;\n        var renderables = [];\n        for (var id in this._tiles) {\n            if (this._isIdRenderable(id, symbolLayer)) {\n                renderables.push(this._tiles[id]);\n            }\n        }\n        if (symbolLayer) {\n            return renderables.sort(function (a_, b_) {\n                var a = a_.tileID;\n                var b = b_.tileID;\n                var rotatedA = new performance.Point(a.canonical.x, a.canonical.y)._rotate(this$1.transform.angle);\n                var rotatedB = new performance.Point(b.canonical.x, b.canonical.y)._rotate(this$1.transform.angle);\n                return a.overscaledZ - b.overscaledZ || rotatedB.y - rotatedA.y || rotatedB.x - rotatedA.x;\n            }).map(function (tile) {\n                return tile.tileID.key;\n            });\n        }\n        return renderables.map(function (tile) {\n            return tile.tileID;\n        }).sort(compareTileId).map(function (id) {\n            return id.key;\n        });\n    };\n    SourceCache.prototype.hasRenderableParent = function hasRenderableParent(tileID) {\n        var parentTile = this.findLoadedParent(tileID, 0);\n        if (parentTile) {\n            return this._isIdRenderable(parentTile.tileID.key);\n        }\n        return false;\n    };\n    SourceCache.prototype._isIdRenderable = function _isIdRenderable(id, symbolLayer) {\n        return this._tiles[id] && this._tiles[id].hasData() && !this._coveredTiles[id] && (symbolLayer || !this._tiles[id].holdingForFade());\n    };\n    SourceCache.prototype.reload = function reload() {\n        if (this._paused) {\n            this._shouldReloadOnResume = true;\n            return;\n        }\n        this._cache.reset();\n        for (var i in this._tiles) {\n            if (this._tiles[i].state !== 'errored') {\n                this._reloadTile(i, 'reloading');\n            }\n        }\n    };\n    SourceCache.prototype._reloadTile = function _reloadTile(id, state) {\n        var tile = this._tiles[id];\n        if (!tile) {\n            return;\n        }\n        if (tile.state !== 'loading') {\n            tile.state = state;\n        }\n        this._loadTile(tile, this._tileLoaded.bind(this, tile, id, state));\n    };\n    SourceCache.prototype._tileLoaded = function _tileLoaded(tile, id, previousState, err) {\n        if (err) {\n            tile.state = 'errored';\n            if (err.status !== 404) {\n                this._source.fire(new performance.ErrorEvent(err, { tile: tile }));\n            } else {\n                this.update(this.transform);\n            }\n            return;\n        }\n        tile.timeAdded = performance.browser.now();\n        if (previousState === 'expired') {\n            tile.refreshedUponExpiration = true;\n        }\n        this._setTileReloadTimer(id, tile);\n        if (this.getSource().type === 'raster-dem' && tile.dem) {\n            this._backfillDEM(tile);\n        }\n        this._state.initializeTileState(tile, this.map ? this.map.painter : null);\n        this._source.fire(new performance.Event('data', {\n            dataType: 'source',\n            tile: tile,\n            coord: tile.tileID\n        }));\n    };\n    SourceCache.prototype._backfillDEM = function _backfillDEM(tile) {\n        var renderables = this.getRenderableIds();\n        for (var i = 0; i < renderables.length; i++) {\n            var borderId = renderables[i];\n            if (tile.neighboringTiles && tile.neighboringTiles[borderId]) {\n                var borderTile = this.getTileByID(borderId);\n                fillBorder(tile, borderTile);\n                fillBorder(borderTile, tile);\n            }\n        }\n        function fillBorder(tile, borderTile) {\n            tile.needsHillshadePrepare = true;\n            var dx = borderTile.tileID.canonical.x - tile.tileID.canonical.x;\n            var dy = borderTile.tileID.canonical.y - tile.tileID.canonical.y;\n            var dim = Math.pow(2, tile.tileID.canonical.z);\n            var borderId = borderTile.tileID.key;\n            if (dx === 0 && dy === 0) {\n                return;\n            }\n            if (Math.abs(dy) > 1) {\n                return;\n            }\n            if (Math.abs(dx) > 1) {\n                if (Math.abs(dx + dim) === 1) {\n                    dx += dim;\n                } else if (Math.abs(dx - dim) === 1) {\n                    dx -= dim;\n                }\n            }\n            if (!borderTile.dem || !tile.dem) {\n                return;\n            }\n            tile.dem.backfillBorder(borderTile.dem, dx, dy);\n            if (tile.neighboringTiles && tile.neighboringTiles[borderId]) {\n                tile.neighboringTiles[borderId].backfilled = true;\n            }\n        }\n    };\n    SourceCache.prototype.getTile = function getTile(tileID) {\n        return this.getTileByID(tileID.key);\n    };\n    SourceCache.prototype.getTileByID = function getTileByID(id) {\n        return this._tiles[id];\n    };\n    SourceCache.prototype._retainLoadedChildren = function _retainLoadedChildren(idealTiles, zoom, maxCoveringZoom, retain) {\n        for (var id in this._tiles) {\n            var tile = this._tiles[id];\n            if (retain[id] || !tile.hasData() || tile.tileID.overscaledZ <= zoom || tile.tileID.overscaledZ > maxCoveringZoom) {\n                continue;\n            }\n            var topmostLoadedID = tile.tileID;\n            while (tile && tile.tileID.overscaledZ > zoom + 1) {\n                var parentID = tile.tileID.scaledTo(tile.tileID.overscaledZ - 1);\n                tile = this._tiles[parentID.key];\n                if (tile && tile.hasData()) {\n                    topmostLoadedID = parentID;\n                }\n            }\n            var tileID = topmostLoadedID;\n            while (tileID.overscaledZ > zoom) {\n                tileID = tileID.scaledTo(tileID.overscaledZ - 1);\n                if (idealTiles[tileID.key]) {\n                    retain[topmostLoadedID.key] = topmostLoadedID;\n                    break;\n                }\n            }\n        }\n    };\n    SourceCache.prototype.findLoadedParent = function findLoadedParent(tileID, minCoveringZoom) {\n        if (tileID.key in this._loadedParentTiles) {\n            var parent = this._loadedParentTiles[tileID.key];\n            if (parent && parent.tileID.overscaledZ >= minCoveringZoom) {\n                return parent;\n            } else {\n                return null;\n            }\n        }\n        for (var z = tileID.overscaledZ - 1; z >= minCoveringZoom; z--) {\n            var parentTileID = tileID.scaledTo(z);\n            var tile = this._getLoadedTile(parentTileID);\n            if (tile) {\n                return tile;\n            }\n        }\n    };\n    SourceCache.prototype._getLoadedTile = function _getLoadedTile(tileID) {\n        var tile = this._tiles[tileID.key];\n        if (tile && tile.hasData()) {\n            return tile;\n        }\n        var cachedTile = this._cache.getByKey(tileID.wrapped().key);\n        return cachedTile;\n    };\n    SourceCache.prototype.updateCacheSize = function updateCacheSize(transform) {\n        var widthInTiles = Math.ceil(transform.width / this._source.tileSize) + 1;\n        var heightInTiles = Math.ceil(transform.height / this._source.tileSize) + 1;\n        var approxTilesInView = widthInTiles * heightInTiles;\n        var commonZoomRange = 5;\n        var viewDependentMaxSize = Math.floor(approxTilesInView * commonZoomRange);\n        var maxSize = typeof this._maxTileCacheSize === 'number' ? Math.min(this._maxTileCacheSize, viewDependentMaxSize) : viewDependentMaxSize;\n        this._cache.setMaxSize(maxSize);\n    };\n    SourceCache.prototype.handleWrapJump = function handleWrapJump(lng) {\n        var prevLng = this._prevLng === undefined ? lng : this._prevLng;\n        var lngDifference = lng - prevLng;\n        var worldDifference = lngDifference / 360;\n        var wrapDelta = Math.round(worldDifference);\n        this._prevLng = lng;\n        if (wrapDelta) {\n            var tiles = {};\n            for (var key in this._tiles) {\n                var tile = this._tiles[key];\n                tile.tileID = tile.tileID.unwrapTo(tile.tileID.wrap + wrapDelta);\n                tiles[tile.tileID.key] = tile;\n            }\n            this._tiles = tiles;\n            for (var id in this._timers) {\n                clearTimeout(this._timers[id]);\n                delete this._timers[id];\n            }\n            for (var id$1 in this._tiles) {\n                var tile$1 = this._tiles[id$1];\n                this._setTileReloadTimer(id$1, tile$1);\n            }\n        }\n    };\n    SourceCache.prototype.update = function update(transform) {\n        var this$1 = this;\n        this.transform = transform;\n        if (!this._sourceLoaded || this._paused) {\n            return;\n        }\n        this.updateCacheSize(transform);\n        this.handleWrapJump(this.transform.center.lng);\n        this._coveredTiles = {};\n        var idealTileIDs;\n        if (!this.used) {\n            idealTileIDs = [];\n        } else if (this._source.tileID) {\n            idealTileIDs = transform.getVisibleUnwrappedCoordinates(this._source.tileID).map(function (unwrapped) {\n                return new performance.OverscaledTileID(unwrapped.canonical.z, unwrapped.wrap, unwrapped.canonical.z, unwrapped.canonical.x, unwrapped.canonical.y);\n            });\n        } else {\n            idealTileIDs = transform.coveringTiles({\n                tileSize: this._source.tileSize,\n                minzoom: this._source.minzoom,\n                maxzoom: this._source.maxzoom,\n                roundZoom: this._source.roundZoom,\n                reparseOverscaled: this._source.reparseOverscaled\n            });\n            if (this._source.hasTile) {\n                idealTileIDs = idealTileIDs.filter(function (coord) {\n                    return this$1._source.hasTile(coord);\n                });\n            }\n        }\n        var zoom = transform.coveringZoomLevel(this._source);\n        var minCoveringZoom = Math.max(zoom - SourceCache.maxOverzooming, this._source.minzoom);\n        var maxCoveringZoom = Math.max(zoom + SourceCache.maxUnderzooming, this._source.minzoom);\n        var retain = this._updateRetainedTiles(idealTileIDs, zoom);\n        if (isRasterType(this._source.type)) {\n            var parentsForFading = {};\n            var fadingTiles = {};\n            var ids = Object.keys(retain);\n            for (var i = 0, list = ids; i < list.length; i += 1) {\n                var id = list[i];\n                var tileID = retain[id];\n                var tile = this._tiles[id];\n                if (!tile || tile.fadeEndTime && tile.fadeEndTime <= performance.browser.now()) {\n                    continue;\n                }\n                var parentTile = this.findLoadedParent(tileID, minCoveringZoom);\n                if (parentTile) {\n                    this._addTile(parentTile.tileID);\n                    parentsForFading[parentTile.tileID.key] = parentTile.tileID;\n                }\n                fadingTiles[id] = tileID;\n            }\n            this._retainLoadedChildren(fadingTiles, zoom, maxCoveringZoom, retain);\n            for (var id$1 in parentsForFading) {\n                if (!retain[id$1]) {\n                    this._coveredTiles[id$1] = true;\n                    retain[id$1] = parentsForFading[id$1];\n                }\n            }\n        }\n        for (var retainedId in retain) {\n            this._tiles[retainedId].clearFadeHold();\n        }\n        var remove = performance.keysDifference(this._tiles, retain);\n        for (var i$1 = 0, list$1 = remove; i$1 < list$1.length; i$1 += 1) {\n            var tileID$1 = list$1[i$1];\n            var tile$1 = this._tiles[tileID$1];\n            if (tile$1.hasSymbolBuckets && !tile$1.holdingForFade()) {\n                tile$1.setHoldDuration(this.map._fadeDuration);\n            } else if (!tile$1.hasSymbolBuckets || tile$1.symbolFadeFinished()) {\n                this._removeTile(tileID$1);\n            }\n        }\n        this._updateLoadedParentTileCache();\n    };\n    SourceCache.prototype.releaseSymbolFadeTiles = function releaseSymbolFadeTiles() {\n        for (var id in this._tiles) {\n            if (this._tiles[id].holdingForFade()) {\n                this._removeTile(id);\n            }\n        }\n    };\n    SourceCache.prototype._updateRetainedTiles = function _updateRetainedTiles(idealTileIDs, zoom) {\n        var retain = {};\n        var checked = {};\n        var minCoveringZoom = Math.max(zoom - SourceCache.maxOverzooming, this._source.minzoom);\n        var maxCoveringZoom = Math.max(zoom + SourceCache.maxUnderzooming, this._source.minzoom);\n        var missingTiles = {};\n        for (var i = 0, list = idealTileIDs; i < list.length; i += 1) {\n            var tileID = list[i];\n            var tile = this._addTile(tileID);\n            retain[tileID.key] = tileID;\n            if (tile.hasData()) {\n                continue;\n            }\n            if (zoom < this._source.maxzoom) {\n                missingTiles[tileID.key] = tileID;\n            }\n        }\n        this._retainLoadedChildren(missingTiles, zoom, maxCoveringZoom, retain);\n        for (var i$1 = 0, list$1 = idealTileIDs; i$1 < list$1.length; i$1 += 1) {\n            var tileID$1 = list$1[i$1];\n            var tile$1 = this._tiles[tileID$1.key];\n            if (tile$1.hasData()) {\n                continue;\n            }\n            if (zoom + 1 > this._source.maxzoom) {\n                var childCoord = tileID$1.children(this._source.maxzoom)[0];\n                var childTile = this.getTile(childCoord);\n                if (!!childTile && childTile.hasData()) {\n                    retain[childCoord.key] = childCoord;\n                    continue;\n                }\n            } else {\n                var children = tileID$1.children(this._source.maxzoom);\n                if (retain[children[0].key] && retain[children[1].key] && retain[children[2].key] && retain[children[3].key]) {\n                    continue;\n                }\n            }\n            var parentWasRequested = tile$1.wasRequested();\n            for (var overscaledZ = tileID$1.overscaledZ - 1; overscaledZ >= minCoveringZoom; --overscaledZ) {\n                var parentId = tileID$1.scaledTo(overscaledZ);\n                if (checked[parentId.key]) {\n                    break;\n                }\n                checked[parentId.key] = true;\n                tile$1 = this.getTile(parentId);\n                if (!tile$1 && parentWasRequested) {\n                    tile$1 = this._addTile(parentId);\n                }\n                if (tile$1) {\n                    retain[parentId.key] = parentId;\n                    parentWasRequested = tile$1.wasRequested();\n                    if (tile$1.hasData()) {\n                        break;\n                    }\n                }\n            }\n        }\n        return retain;\n    };\n    SourceCache.prototype._updateLoadedParentTileCache = function _updateLoadedParentTileCache() {\n        this._loadedParentTiles = {};\n        for (var tileKey in this._tiles) {\n            var path = [];\n            var parentTile = void 0;\n            var currentId = this._tiles[tileKey].tileID;\n            while (currentId.overscaledZ > 0) {\n                if (currentId.key in this._loadedParentTiles) {\n                    parentTile = this._loadedParentTiles[currentId.key];\n                    break;\n                }\n                path.push(currentId.key);\n                var parentId = currentId.scaledTo(currentId.overscaledZ - 1);\n                parentTile = this._getLoadedTile(parentId);\n                if (parentTile) {\n                    break;\n                }\n                currentId = parentId;\n            }\n            for (var i = 0, list = path; i < list.length; i += 1) {\n                var key = list[i];\n                this._loadedParentTiles[key] = parentTile;\n            }\n        }\n    };\n    SourceCache.prototype._addTile = function _addTile(tileID) {\n        var tile = this._tiles[tileID.key];\n        if (tile) {\n            return tile;\n        }\n        tile = this._cache.getAndRemove(tileID);\n        if (tile) {\n            this._setTileReloadTimer(tileID.key, tile);\n            tile.tileID = tileID;\n            this._state.initializeTileState(tile, this.map ? this.map.painter : null);\n            if (this._cacheTimers[tileID.key]) {\n                clearTimeout(this._cacheTimers[tileID.key]);\n                delete this._cacheTimers[tileID.key];\n                this._setTileReloadTimer(tileID.key, tile);\n            }\n        }\n        var cached = Boolean(tile);\n        if (!cached) {\n            tile = new performance.Tile(tileID, this._source.tileSize * tileID.overscaleFactor());\n            this._loadTile(tile, this._tileLoaded.bind(this, tile, tileID.key, tile.state));\n        }\n        if (!tile) {\n            return null;\n        }\n        tile.uses++;\n        this._tiles[tileID.key] = tile;\n        if (!cached) {\n            this._source.fire(new performance.Event('dataloading', {\n                tile: tile,\n                coord: tile.tileID,\n                dataType: 'source'\n            }));\n        }\n        return tile;\n    };\n    SourceCache.prototype._setTileReloadTimer = function _setTileReloadTimer(id, tile) {\n        var this$1 = this;\n        if (id in this._timers) {\n            clearTimeout(this._timers[id]);\n            delete this._timers[id];\n        }\n        var expiryTimeout = tile.getExpiryTimeout();\n        if (expiryTimeout) {\n            this._timers[id] = setTimeout(function () {\n                this$1._reloadTile(id, 'expired');\n                delete this$1._timers[id];\n            }, expiryTimeout);\n        }\n    };\n    SourceCache.prototype._removeTile = function _removeTile(id) {\n        var tile = this._tiles[id];\n        if (!tile) {\n            return;\n        }\n        tile.uses--;\n        delete this._tiles[id];\n        if (this._timers[id]) {\n            clearTimeout(this._timers[id]);\n            delete this._timers[id];\n        }\n        if (tile.uses > 0) {\n            return;\n        }\n        if (tile.hasData() && tile.state !== 'reloading') {\n            this._cache.add(tile.tileID, tile, tile.getExpiryTimeout());\n        } else {\n            tile.aborted = true;\n            this._abortTile(tile);\n            this._unloadTile(tile);\n        }\n    };\n    SourceCache.prototype.clearTiles = function clearTiles() {\n        this._shouldReloadOnResume = false;\n        this._paused = false;\n        for (var id in this._tiles) {\n            this._removeTile(id);\n        }\n        this._cache.reset();\n    };\n    SourceCache.prototype.tilesIn = function tilesIn(pointQueryGeometry, maxPitchScaleFactor, has3DLayer) {\n        var this$1 = this;\n        var tileResults = [];\n        var transform = this.transform;\n        if (!transform) {\n            return tileResults;\n        }\n        var cameraPointQueryGeometry = has3DLayer ? transform.getCameraQueryGeometry(pointQueryGeometry) : pointQueryGeometry;\n        var queryGeometry = pointQueryGeometry.map(function (p) {\n            return transform.pointCoordinate(p);\n        });\n        var cameraQueryGeometry = cameraPointQueryGeometry.map(function (p) {\n            return transform.pointCoordinate(p);\n        });\n        var ids = this.getIds();\n        var minX = Infinity;\n        var minY = Infinity;\n        var maxX = -Infinity;\n        var maxY = -Infinity;\n        for (var i$1 = 0, list = cameraQueryGeometry; i$1 < list.length; i$1 += 1) {\n            var p = list[i$1];\n            minX = Math.min(minX, p.x);\n            minY = Math.min(minY, p.y);\n            maxX = Math.max(maxX, p.x);\n            maxY = Math.max(maxY, p.y);\n        }\n        var loop = function (i) {\n            var tile = this$1._tiles[ids[i]];\n            if (tile.holdingForFade()) {\n                return;\n            }\n            var tileID = tile.tileID;\n            var scale = Math.pow(2, transform.zoom - tile.tileID.overscaledZ);\n            var queryPadding = maxPitchScaleFactor * tile.queryPadding * performance.EXTENT / tile.tileSize / scale;\n            var tileSpaceBounds = [\n                tileID.getTilePoint(new performance.MercatorCoordinate(minX, minY)),\n                tileID.getTilePoint(new performance.MercatorCoordinate(maxX, maxY))\n            ];\n            if (tileSpaceBounds[0].x - queryPadding < performance.EXTENT && tileSpaceBounds[0].y - queryPadding < performance.EXTENT && tileSpaceBounds[1].x + queryPadding >= 0 && tileSpaceBounds[1].y + queryPadding >= 0) {\n                var tileSpaceQueryGeometry = queryGeometry.map(function (c) {\n                    return tileID.getTilePoint(c);\n                });\n                var tileSpaceCameraQueryGeometry = cameraQueryGeometry.map(function (c) {\n                    return tileID.getTilePoint(c);\n                });\n                tileResults.push({\n                    tile: tile,\n                    tileID: tileID,\n                    queryGeometry: tileSpaceQueryGeometry,\n                    cameraQueryGeometry: tileSpaceCameraQueryGeometry,\n                    scale: scale\n                });\n            }\n        };\n        for (var i = 0; i < ids.length; i++)\n            loop(i);\n        return tileResults;\n    };\n    SourceCache.prototype.getVisibleCoordinates = function getVisibleCoordinates(symbolLayer) {\n        var this$1 = this;\n        var coords = this.getRenderableIds(symbolLayer).map(function (id) {\n            return this$1._tiles[id].tileID;\n        });\n        for (var i = 0, list = coords; i < list.length; i += 1) {\n            var coord = list[i];\n            coord.posMatrix = this.transform.calculatePosMatrix(coord.toUnwrapped());\n        }\n        return coords;\n    };\n    SourceCache.prototype.hasTransition = function hasTransition() {\n        if (this._source.hasTransition()) {\n            return true;\n        }\n        if (isRasterType(this._source.type)) {\n            for (var id in this._tiles) {\n                var tile = this._tiles[id];\n                if (tile.fadeEndTime !== undefined && tile.fadeEndTime >= performance.browser.now()) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    };\n    SourceCache.prototype.setFeatureState = function setFeatureState(sourceLayer, featureId, state) {\n        sourceLayer = sourceLayer || '_geojsonTileLayer';\n        this._state.updateState(sourceLayer, featureId, state);\n    };\n    SourceCache.prototype.removeFeatureState = function removeFeatureState(sourceLayer, featureId, key) {\n        sourceLayer = sourceLayer || '_geojsonTileLayer';\n        this._state.removeFeatureState(sourceLayer, featureId, key);\n    };\n    SourceCache.prototype.getFeatureState = function getFeatureState(sourceLayer, featureId) {\n        sourceLayer = sourceLayer || '_geojsonTileLayer';\n        return this._state.getState(sourceLayer, featureId);\n    };\n    SourceCache.prototype.setDependencies = function setDependencies(tileKey, namespace, dependencies) {\n        var tile = this._tiles[tileKey];\n        if (tile) {\n            tile.setDependencies(namespace, dependencies);\n        }\n    };\n    SourceCache.prototype.reloadTilesForDependencies = function reloadTilesForDependencies(namespaces, keys) {\n        for (var id in this._tiles) {\n            var tile = this._tiles[id];\n            if (tile.hasDependency(namespaces, keys)) {\n                this._reloadTile(id, 'reloading');\n            }\n        }\n        this._cache.filter(function (tile) {\n            return !tile.hasDependency(namespaces, keys);\n        });\n    };\n    return SourceCache;\n}(performance.Evented);\nSourceCache.maxOverzooming = 10;\nSourceCache.maxUnderzooming = 3;\nfunction compareTileId(a, b) {\n    var aWrap = Math.abs(a.wrap * 2) - +(a.wrap < 0);\n    var bWrap = Math.abs(b.wrap * 2) - +(b.wrap < 0);\n    return a.overscaledZ - b.overscaledZ || bWrap - aWrap || b.canonical.y - a.canonical.y || b.canonical.x - a.canonical.x;\n}\nfunction isRasterType(type) {\n    return type === 'raster' || type === 'image' || type === 'video';\n}\n\nfunction WebWorker () {\n    return new performance.window.Worker(exported.workerUrl);\n}\n\nvar PRELOAD_POOL_ID = 'mapboxgl_preloaded_worker_pool';\nvar WorkerPool = function WorkerPool() {\n    this.active = {};\n};\nWorkerPool.prototype.acquire = function acquire(mapId) {\n    if (!this.workers) {\n        this.workers = [];\n        while (this.workers.length < WorkerPool.workerCount) {\n            this.workers.push(new WebWorker());\n        }\n    }\n    this.active[mapId] = true;\n    return this.workers.slice();\n};\nWorkerPool.prototype.release = function release(mapId) {\n    delete this.active[mapId];\n    if (this.numActive() === 0) {\n        this.workers.forEach(function (w) {\n            w.terminate();\n        });\n        this.workers = null;\n    }\n};\nWorkerPool.prototype.isPreloaded = function isPreloaded() {\n    return !!this.active[PRELOAD_POOL_ID];\n};\nWorkerPool.prototype.numActive = function numActive() {\n    return Object.keys(this.active).length;\n};\nvar availableLogicalProcessors = Math.floor(performance.browser.hardwareConcurrency / 2);\nWorkerPool.workerCount = Math.max(Math.min(availableLogicalProcessors, 6), 1);\n\nvar globalWorkerPool;\nfunction getGlobalWorkerPool() {\n    if (!globalWorkerPool) {\n        globalWorkerPool = new WorkerPool();\n    }\n    return globalWorkerPool;\n}\nfunction prewarm() {\n    var workerPool = getGlobalWorkerPool();\n    workerPool.acquire(PRELOAD_POOL_ID);\n}\nfunction clearPrewarmedResources() {\n    var pool = globalWorkerPool;\n    if (pool) {\n        if (pool.isPreloaded() && pool.numActive() === 1) {\n            pool.release(PRELOAD_POOL_ID);\n            globalWorkerPool = null;\n        } else {\n            console.warn('Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()');\n        }\n    }\n}\n\nfunction deref(layer, parent) {\n    var result = {};\n    for (var k in layer) {\n        if (k !== 'ref') {\n            result[k] = layer[k];\n        }\n    }\n    performance.refProperties.forEach(function (k) {\n        if (k in parent) {\n            result[k] = parent[k];\n        }\n    });\n    return result;\n}\nfunction derefLayers(layers) {\n    layers = layers.slice();\n    var map = Object.create(null);\n    for (var i = 0; i < layers.length; i++) {\n        map[layers[i].id] = layers[i];\n    }\n    for (var i$1 = 0; i$1 < layers.length; i$1++) {\n        if ('ref' in layers[i$1]) {\n            layers[i$1] = deref(layers[i$1], map[layers[i$1].ref]);\n        }\n    }\n    return layers;\n}\n\nfunction emptyStyle() {\n    var style = {};\n    var version = performance.styleSpec['$version'];\n    for (var styleKey in performance.styleSpec['$root']) {\n        var spec = performance.styleSpec['$root'][styleKey];\n        if (spec.required) {\n            var value = null;\n            if (styleKey === 'version') {\n                value = version;\n            } else {\n                if (spec.type === 'array') {\n                    value = [];\n                } else {\n                    value = {};\n                }\n            }\n            if (value != null) {\n                style[styleKey] = value;\n            }\n        }\n    }\n    return style;\n}\n\nvar operations = {\n    setStyle: 'setStyle',\n    addLayer: 'addLayer',\n    removeLayer: 'removeLayer',\n    setPaintProperty: 'setPaintProperty',\n    setLayoutProperty: 'setLayoutProperty',\n    setFilter: 'setFilter',\n    addSource: 'addSource',\n    removeSource: 'removeSource',\n    setGeoJSONSourceData: 'setGeoJSONSourceData',\n    setLayerZoomRange: 'setLayerZoomRange',\n    setLayerProperty: 'setLayerProperty',\n    setCenter: 'setCenter',\n    setZoom: 'setZoom',\n    setBearing: 'setBearing',\n    setPitch: 'setPitch',\n    setSprite: 'setSprite',\n    setGlyphs: 'setGlyphs',\n    setTransition: 'setTransition',\n    setLight: 'setLight'\n};\nfunction addSource(sourceId, after, commands) {\n    commands.push({\n        command: operations.addSource,\n        args: [\n            sourceId,\n            after[sourceId]\n        ]\n    });\n}\nfunction removeSource(sourceId, commands, sourcesRemoved) {\n    commands.push({\n        command: operations.removeSource,\n        args: [sourceId]\n    });\n    sourcesRemoved[sourceId] = true;\n}\nfunction updateSource(sourceId, after, commands, sourcesRemoved) {\n    removeSource(sourceId, commands, sourcesRemoved);\n    addSource(sourceId, after, commands);\n}\nfunction canUpdateGeoJSON(before, after, sourceId) {\n    var prop;\n    for (prop in before[sourceId]) {\n        if (!before[sourceId].hasOwnProperty(prop)) {\n            continue;\n        }\n        if (prop !== 'data' && !performance.deepEqual(before[sourceId][prop], after[sourceId][prop])) {\n            return false;\n        }\n    }\n    for (prop in after[sourceId]) {\n        if (!after[sourceId].hasOwnProperty(prop)) {\n            continue;\n        }\n        if (prop !== 'data' && !performance.deepEqual(before[sourceId][prop], after[sourceId][prop])) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction diffSources(before, after, commands, sourcesRemoved) {\n    before = before || {};\n    after = after || {};\n    var sourceId;\n    for (sourceId in before) {\n        if (!before.hasOwnProperty(sourceId)) {\n            continue;\n        }\n        if (!after.hasOwnProperty(sourceId)) {\n            removeSource(sourceId, commands, sourcesRemoved);\n        }\n    }\n    for (sourceId in after) {\n        if (!after.hasOwnProperty(sourceId)) {\n            continue;\n        }\n        if (!before.hasOwnProperty(sourceId)) {\n            addSource(sourceId, after, commands);\n        } else if (!performance.deepEqual(before[sourceId], after[sourceId])) {\n            if (before[sourceId].type === 'geojson' && after[sourceId].type === 'geojson' && canUpdateGeoJSON(before, after, sourceId)) {\n                commands.push({\n                    command: operations.setGeoJSONSourceData,\n                    args: [\n                        sourceId,\n                        after[sourceId].data\n                    ]\n                });\n            } else {\n                updateSource(sourceId, after, commands, sourcesRemoved);\n            }\n        }\n    }\n}\nfunction diffLayerPropertyChanges(before, after, commands, layerId, klass, command) {\n    before = before || {};\n    after = after || {};\n    var prop;\n    for (prop in before) {\n        if (!before.hasOwnProperty(prop)) {\n            continue;\n        }\n        if (!performance.deepEqual(before[prop], after[prop])) {\n            commands.push({\n                command: command,\n                args: [\n                    layerId,\n                    prop,\n                    after[prop],\n                    klass\n                ]\n            });\n        }\n    }\n    for (prop in after) {\n        if (!after.hasOwnProperty(prop) || before.hasOwnProperty(prop)) {\n            continue;\n        }\n        if (!performance.deepEqual(before[prop], after[prop])) {\n            commands.push({\n                command: command,\n                args: [\n                    layerId,\n                    prop,\n                    after[prop],\n                    klass\n                ]\n            });\n        }\n    }\n}\nfunction pluckId(layer) {\n    return layer.id;\n}\nfunction indexById(group, layer) {\n    group[layer.id] = layer;\n    return group;\n}\nfunction diffLayers(before, after, commands) {\n    before = before || [];\n    after = after || [];\n    var beforeOrder = before.map(pluckId);\n    var afterOrder = after.map(pluckId);\n    var beforeIndex = before.reduce(indexById, {});\n    var afterIndex = after.reduce(indexById, {});\n    var tracker = beforeOrder.slice();\n    var clean = Object.create(null);\n    var i, d, layerId, beforeLayer, afterLayer, insertBeforeLayerId, prop;\n    for (i = 0, d = 0; i < beforeOrder.length; i++) {\n        layerId = beforeOrder[i];\n        if (!afterIndex.hasOwnProperty(layerId)) {\n            commands.push({\n                command: operations.removeLayer,\n                args: [layerId]\n            });\n            tracker.splice(tracker.indexOf(layerId, d), 1);\n        } else {\n            d++;\n        }\n    }\n    for (i = 0, d = 0; i < afterOrder.length; i++) {\n        layerId = afterOrder[afterOrder.length - 1 - i];\n        if (tracker[tracker.length - 1 - i] === layerId) {\n            continue;\n        }\n        if (beforeIndex.hasOwnProperty(layerId)) {\n            commands.push({\n                command: operations.removeLayer,\n                args: [layerId]\n            });\n            tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1);\n        } else {\n            d++;\n        }\n        insertBeforeLayerId = tracker[tracker.length - i];\n        commands.push({\n            command: operations.addLayer,\n            args: [\n                afterIndex[layerId],\n                insertBeforeLayerId\n            ]\n        });\n        tracker.splice(tracker.length - i, 0, layerId);\n        clean[layerId] = true;\n    }\n    for (i = 0; i < afterOrder.length; i++) {\n        layerId = afterOrder[i];\n        beforeLayer = beforeIndex[layerId];\n        afterLayer = afterIndex[layerId];\n        if (clean[layerId] || performance.deepEqual(beforeLayer, afterLayer)) {\n            continue;\n        }\n        if (!performance.deepEqual(beforeLayer.source, afterLayer.source) || !performance.deepEqual(beforeLayer['source-layer'], afterLayer['source-layer']) || !performance.deepEqual(beforeLayer.type, afterLayer.type)) {\n            commands.push({\n                command: operations.removeLayer,\n                args: [layerId]\n            });\n            insertBeforeLayerId = tracker[tracker.lastIndexOf(layerId) + 1];\n            commands.push({\n                command: operations.addLayer,\n                args: [\n                    afterLayer,\n                    insertBeforeLayerId\n                ]\n            });\n            continue;\n        }\n        diffLayerPropertyChanges(beforeLayer.layout, afterLayer.layout, commands, layerId, null, operations.setLayoutProperty);\n        diffLayerPropertyChanges(beforeLayer.paint, afterLayer.paint, commands, layerId, null, operations.setPaintProperty);\n        if (!performance.deepEqual(beforeLayer.filter, afterLayer.filter)) {\n            commands.push({\n                command: operations.setFilter,\n                args: [\n                    layerId,\n                    afterLayer.filter\n                ]\n            });\n        }\n        if (!performance.deepEqual(beforeLayer.minzoom, afterLayer.minzoom) || !performance.deepEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) {\n            commands.push({\n                command: operations.setLayerZoomRange,\n                args: [\n                    layerId,\n                    afterLayer.minzoom,\n                    afterLayer.maxzoom\n                ]\n            });\n        }\n        for (prop in beforeLayer) {\n            if (!beforeLayer.hasOwnProperty(prop)) {\n                continue;\n            }\n            if (prop === 'layout' || prop === 'paint' || prop === 'filter' || prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') {\n                continue;\n            }\n            if (prop.indexOf('paint.') === 0) {\n                diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n            } else if (!performance.deepEqual(beforeLayer[prop], afterLayer[prop])) {\n                commands.push({\n                    command: operations.setLayerProperty,\n                    args: [\n                        layerId,\n                        prop,\n                        afterLayer[prop]\n                    ]\n                });\n            }\n        }\n        for (prop in afterLayer) {\n            if (!afterLayer.hasOwnProperty(prop) || beforeLayer.hasOwnProperty(prop)) {\n                continue;\n            }\n            if (prop === 'layout' || prop === 'paint' || prop === 'filter' || prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') {\n                continue;\n            }\n            if (prop.indexOf('paint.') === 0) {\n                diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n            } else if (!performance.deepEqual(beforeLayer[prop], afterLayer[prop])) {\n                commands.push({\n                    command: operations.setLayerProperty,\n                    args: [\n                        layerId,\n                        prop,\n                        afterLayer[prop]\n                    ]\n                });\n            }\n        }\n    }\n}\nfunction diffStyles(before, after) {\n    if (!before) {\n        return [{\n                command: operations.setStyle,\n                args: [after]\n            }];\n    }\n    var commands = [];\n    try {\n        if (!performance.deepEqual(before.version, after.version)) {\n            return [{\n                    command: operations.setStyle,\n                    args: [after]\n                }];\n        }\n        if (!performance.deepEqual(before.center, after.center)) {\n            commands.push({\n                command: operations.setCenter,\n                args: [after.center]\n            });\n        }\n        if (!performance.deepEqual(before.zoom, after.zoom)) {\n            commands.push({\n                command: operations.setZoom,\n                args: [after.zoom]\n            });\n        }\n        if (!performance.deepEqual(before.bearing, after.bearing)) {\n            commands.push({\n                command: operations.setBearing,\n                args: [after.bearing]\n            });\n        }\n        if (!performance.deepEqual(before.pitch, after.pitch)) {\n            commands.push({\n                command: operations.setPitch,\n                args: [after.pitch]\n            });\n        }\n        if (!performance.deepEqual(before.sprite, after.sprite)) {\n            commands.push({\n                command: operations.setSprite,\n                args: [after.sprite]\n            });\n        }\n        if (!performance.deepEqual(before.glyphs, after.glyphs)) {\n            commands.push({\n                command: operations.setGlyphs,\n                args: [after.glyphs]\n            });\n        }\n        if (!performance.deepEqual(before.transition, after.transition)) {\n            commands.push({\n                command: operations.setTransition,\n                args: [after.transition]\n            });\n        }\n        if (!performance.deepEqual(before.light, after.light)) {\n            commands.push({\n                command: operations.setLight,\n                args: [after.light]\n            });\n        }\n        var sourcesRemoved = {};\n        var removeOrAddSourceCommands = [];\n        diffSources(before.sources, after.sources, removeOrAddSourceCommands, sourcesRemoved);\n        var beforeLayers = [];\n        if (before.layers) {\n            before.layers.forEach(function (layer) {\n                if (sourcesRemoved[layer.source]) {\n                    commands.push({\n                        command: operations.removeLayer,\n                        args: [layer.id]\n                    });\n                } else {\n                    beforeLayers.push(layer);\n                }\n            });\n        }\n        commands = commands.concat(removeOrAddSourceCommands);\n        diffLayers(beforeLayers, after.layers, commands);\n    } catch (e) {\n        console.warn('Unable to compute style diff:', e);\n        commands = [{\n                command: operations.setStyle,\n                args: [after]\n            }];\n    }\n    return commands;\n}\n\nvar PathInterpolator = function PathInterpolator(points_, padding_) {\n    this.reset(points_, padding_);\n};\nPathInterpolator.prototype.reset = function reset(points_, padding_) {\n    this.points = points_ || [];\n    this._distances = [0];\n    for (var i = 1; i < this.points.length; i++) {\n        this._distances[i] = this._distances[i - 1] + this.points[i].dist(this.points[i - 1]);\n    }\n    this.length = this._distances[this._distances.length - 1];\n    this.padding = Math.min(padding_ || 0, this.length * 0.5);\n    this.paddedLength = this.length - this.padding * 2;\n};\nPathInterpolator.prototype.lerp = function lerp(t) {\n    if (this.points.length === 1) {\n        return this.points[0];\n    }\n    t = performance.clamp(t, 0, 1);\n    var currentIndex = 1;\n    var distOfCurrentIdx = this._distances[currentIndex];\n    var distToTarget = t * this.paddedLength + this.padding;\n    while (distOfCurrentIdx < distToTarget && currentIndex < this._distances.length) {\n        distOfCurrentIdx = this._distances[++currentIndex];\n    }\n    var idxOfPrevPoint = currentIndex - 1;\n    var distOfPrevIdx = this._distances[idxOfPrevPoint];\n    var segmentLength = distOfCurrentIdx - distOfPrevIdx;\n    var segmentT = segmentLength > 0 ? (distToTarget - distOfPrevIdx) / segmentLength : 0;\n    return this.points[idxOfPrevPoint].mult(1 - segmentT).add(this.points[currentIndex].mult(segmentT));\n};\n\nvar GridIndex = function GridIndex(width, height, cellSize) {\n    var boxCells = this.boxCells = [];\n    var circleCells = this.circleCells = [];\n    this.xCellCount = Math.ceil(width / cellSize);\n    this.yCellCount = Math.ceil(height / cellSize);\n    for (var i = 0; i < this.xCellCount * this.yCellCount; i++) {\n        boxCells.push([]);\n        circleCells.push([]);\n    }\n    this.circleKeys = [];\n    this.boxKeys = [];\n    this.bboxes = [];\n    this.circles = [];\n    this.width = width;\n    this.height = height;\n    this.xScale = this.xCellCount / width;\n    this.yScale = this.yCellCount / height;\n    this.boxUid = 0;\n    this.circleUid = 0;\n};\nGridIndex.prototype.keysLength = function keysLength() {\n    return this.boxKeys.length + this.circleKeys.length;\n};\nGridIndex.prototype.insert = function insert(key, x1, y1, x2, y2) {\n    this._forEachCell(x1, y1, x2, y2, this._insertBoxCell, this.boxUid++);\n    this.boxKeys.push(key);\n    this.bboxes.push(x1);\n    this.bboxes.push(y1);\n    this.bboxes.push(x2);\n    this.bboxes.push(y2);\n};\nGridIndex.prototype.insertCircle = function insertCircle(key, x, y, radius) {\n    this._forEachCell(x - radius, y - radius, x + radius, y + radius, this._insertCircleCell, this.circleUid++);\n    this.circleKeys.push(key);\n    this.circles.push(x);\n    this.circles.push(y);\n    this.circles.push(radius);\n};\nGridIndex.prototype._insertBoxCell = function _insertBoxCell(x1, y1, x2, y2, cellIndex, uid) {\n    this.boxCells[cellIndex].push(uid);\n};\nGridIndex.prototype._insertCircleCell = function _insertCircleCell(x1, y1, x2, y2, cellIndex, uid) {\n    this.circleCells[cellIndex].push(uid);\n};\nGridIndex.prototype._query = function _query(x1, y1, x2, y2, hitTest, predicate) {\n    if (x2 < 0 || x1 > this.width || y2 < 0 || y1 > this.height) {\n        return hitTest ? false : [];\n    }\n    var result = [];\n    if (x1 <= 0 && y1 <= 0 && this.width <= x2 && this.height <= y2) {\n        if (hitTest) {\n            return true;\n        }\n        for (var boxUid = 0; boxUid < this.boxKeys.length; boxUid++) {\n            result.push({\n                key: this.boxKeys[boxUid],\n                x1: this.bboxes[boxUid * 4],\n                y1: this.bboxes[boxUid * 4 + 1],\n                x2: this.bboxes[boxUid * 4 + 2],\n                y2: this.bboxes[boxUid * 4 + 3]\n            });\n        }\n        for (var circleUid = 0; circleUid < this.circleKeys.length; circleUid++) {\n            var x = this.circles[circleUid * 3];\n            var y = this.circles[circleUid * 3 + 1];\n            var radius = this.circles[circleUid * 3 + 2];\n            result.push({\n                key: this.circleKeys[circleUid],\n                x1: x - radius,\n                y1: y - radius,\n                x2: x + radius,\n                y2: y + radius\n            });\n        }\n        return predicate ? result.filter(predicate) : result;\n    } else {\n        var queryArgs = {\n            hitTest: hitTest,\n            seenUids: {\n                box: {},\n                circle: {}\n            }\n        };\n        this._forEachCell(x1, y1, x2, y2, this._queryCell, result, queryArgs, predicate);\n        return hitTest ? result.length > 0 : result;\n    }\n};\nGridIndex.prototype._queryCircle = function _queryCircle(x, y, radius, hitTest, predicate) {\n    var x1 = x - radius;\n    var x2 = x + radius;\n    var y1 = y - radius;\n    var y2 = y + radius;\n    if (x2 < 0 || x1 > this.width || y2 < 0 || y1 > this.height) {\n        return hitTest ? false : [];\n    }\n    var result = [];\n    var queryArgs = {\n        hitTest: hitTest,\n        circle: {\n            x: x,\n            y: y,\n            radius: radius\n        },\n        seenUids: {\n            box: {},\n            circle: {}\n        }\n    };\n    this._forEachCell(x1, y1, x2, y2, this._queryCellCircle, result, queryArgs, predicate);\n    return hitTest ? result.length > 0 : result;\n};\nGridIndex.prototype.query = function query(x1, y1, x2, y2, predicate) {\n    return this._query(x1, y1, x2, y2, false, predicate);\n};\nGridIndex.prototype.hitTest = function hitTest(x1, y1, x2, y2, predicate) {\n    return this._query(x1, y1, x2, y2, true, predicate);\n};\nGridIndex.prototype.hitTestCircle = function hitTestCircle(x, y, radius, predicate) {\n    return this._queryCircle(x, y, radius, true, predicate);\n};\nGridIndex.prototype._queryCell = function _queryCell(x1, y1, x2, y2, cellIndex, result, queryArgs, predicate) {\n    var seenUids = queryArgs.seenUids;\n    var boxCell = this.boxCells[cellIndex];\n    if (boxCell !== null) {\n        var bboxes = this.bboxes;\n        for (var i = 0, list = boxCell; i < list.length; i += 1) {\n            var boxUid = list[i];\n            if (!seenUids.box[boxUid]) {\n                seenUids.box[boxUid] = true;\n                var offset = boxUid * 4;\n                if (x1 <= bboxes[offset + 2] && y1 <= bboxes[offset + 3] && x2 >= bboxes[offset + 0] && y2 >= bboxes[offset + 1] && (!predicate || predicate(this.boxKeys[boxUid]))) {\n                    if (queryArgs.hitTest) {\n                        result.push(true);\n                        return true;\n                    } else {\n                        result.push({\n                            key: this.boxKeys[boxUid],\n                            x1: bboxes[offset],\n                            y1: bboxes[offset + 1],\n                            x2: bboxes[offset + 2],\n                            y2: bboxes[offset + 3]\n                        });\n                    }\n                }\n            }\n        }\n    }\n    var circleCell = this.circleCells[cellIndex];\n    if (circleCell !== null) {\n        var circles = this.circles;\n        for (var i$1 = 0, list$1 = circleCell; i$1 < list$1.length; i$1 += 1) {\n            var circleUid = list$1[i$1];\n            if (!seenUids.circle[circleUid]) {\n                seenUids.circle[circleUid] = true;\n                var offset$1 = circleUid * 3;\n                if (this._circleAndRectCollide(circles[offset$1], circles[offset$1 + 1], circles[offset$1 + 2], x1, y1, x2, y2) && (!predicate || predicate(this.circleKeys[circleUid]))) {\n                    if (queryArgs.hitTest) {\n                        result.push(true);\n                        return true;\n                    } else {\n                        var x = circles[offset$1];\n                        var y = circles[offset$1 + 1];\n                        var radius = circles[offset$1 + 2];\n                        result.push({\n                            key: this.circleKeys[circleUid],\n                            x1: x - radius,\n                            y1: y - radius,\n                            x2: x + radius,\n                            y2: y + radius\n                        });\n                    }\n                }\n            }\n        }\n    }\n};\nGridIndex.prototype._queryCellCircle = function _queryCellCircle(x1, y1, x2, y2, cellIndex, result, queryArgs, predicate) {\n    var circle = queryArgs.circle;\n    var seenUids = queryArgs.seenUids;\n    var boxCell = this.boxCells[cellIndex];\n    if (boxCell !== null) {\n        var bboxes = this.bboxes;\n        for (var i = 0, list = boxCell; i < list.length; i += 1) {\n            var boxUid = list[i];\n            if (!seenUids.box[boxUid]) {\n                seenUids.box[boxUid] = true;\n                var offset = boxUid * 4;\n                if (this._circleAndRectCollide(circle.x, circle.y, circle.radius, bboxes[offset + 0], bboxes[offset + 1], bboxes[offset + 2], bboxes[offset + 3]) && (!predicate || predicate(this.boxKeys[boxUid]))) {\n                    result.push(true);\n                    return true;\n                }\n            }\n        }\n    }\n    var circleCell = this.circleCells[cellIndex];\n    if (circleCell !== null) {\n        var circles = this.circles;\n        for (var i$1 = 0, list$1 = circleCell; i$1 < list$1.length; i$1 += 1) {\n            var circleUid = list$1[i$1];\n            if (!seenUids.circle[circleUid]) {\n                seenUids.circle[circleUid] = true;\n                var offset$1 = circleUid * 3;\n                if (this._circlesCollide(circles[offset$1], circles[offset$1 + 1], circles[offset$1 + 2], circle.x, circle.y, circle.radius) && (!predicate || predicate(this.circleKeys[circleUid]))) {\n                    result.push(true);\n                    return true;\n                }\n            }\n        }\n    }\n};\nGridIndex.prototype._forEachCell = function _forEachCell(x1, y1, x2, y2, fn, arg1, arg2, predicate) {\n    var cx1 = this._convertToXCellCoord(x1);\n    var cy1 = this._convertToYCellCoord(y1);\n    var cx2 = this._convertToXCellCoord(x2);\n    var cy2 = this._convertToYCellCoord(y2);\n    for (var x = cx1; x <= cx2; x++) {\n        for (var y = cy1; y <= cy2; y++) {\n            var cellIndex = this.xCellCount * y + x;\n            if (fn.call(this, x1, y1, x2, y2, cellIndex, arg1, arg2, predicate)) {\n                return;\n            }\n        }\n    }\n};\nGridIndex.prototype._convertToXCellCoord = function _convertToXCellCoord(x) {\n    return Math.max(0, Math.min(this.xCellCount - 1, Math.floor(x * this.xScale)));\n};\nGridIndex.prototype._convertToYCellCoord = function _convertToYCellCoord(y) {\n    return Math.max(0, Math.min(this.yCellCount - 1, Math.floor(y * this.yScale)));\n};\nGridIndex.prototype._circlesCollide = function _circlesCollide(x1, y1, r1, x2, y2, r2) {\n    var dx = x2 - x1;\n    var dy = y2 - y1;\n    var bothRadii = r1 + r2;\n    return bothRadii * bothRadii > dx * dx + dy * dy;\n};\nGridIndex.prototype._circleAndRectCollide = function _circleAndRectCollide(circleX, circleY, radius, x1, y1, x2, y2) {\n    var halfRectWidth = (x2 - x1) / 2;\n    var distX = Math.abs(circleX - (x1 + halfRectWidth));\n    if (distX > halfRectWidth + radius) {\n        return false;\n    }\n    var halfRectHeight = (y2 - y1) / 2;\n    var distY = Math.abs(circleY - (y1 + halfRectHeight));\n    if (distY > halfRectHeight + radius) {\n        return false;\n    }\n    if (distX <= halfRectWidth || distY <= halfRectHeight) {\n        return true;\n    }\n    var dx = distX - halfRectWidth;\n    var dy = distY - halfRectHeight;\n    return dx * dx + dy * dy <= radius * radius;\n};\n\nfunction getLabelPlaneMatrix(posMatrix, pitchWithMap, rotateWithMap, transform, pixelsToTileUnits) {\n    var m = performance.create();\n    if (pitchWithMap) {\n        performance.scale(m, m, [\n            1 / pixelsToTileUnits,\n            1 / pixelsToTileUnits,\n            1\n        ]);\n        if (!rotateWithMap) {\n            performance.rotateZ(m, m, transform.angle);\n        }\n    } else {\n        performance.multiply(m, transform.labelPlaneMatrix, posMatrix);\n    }\n    return m;\n}\nfunction getGlCoordMatrix(posMatrix, pitchWithMap, rotateWithMap, transform, pixelsToTileUnits) {\n    if (pitchWithMap) {\n        var m = performance.clone(posMatrix);\n        performance.scale(m, m, [\n            pixelsToTileUnits,\n            pixelsToTileUnits,\n            1\n        ]);\n        if (!rotateWithMap) {\n            performance.rotateZ(m, m, -transform.angle);\n        }\n        return m;\n    } else {\n        return transform.glCoordMatrix;\n    }\n}\nfunction project(point, matrix) {\n    var pos = [\n        point.x,\n        point.y,\n        0,\n        1\n    ];\n    xyTransformMat4(pos, pos, matrix);\n    var w = pos[3];\n    return {\n        point: new performance.Point(pos[0] / w, pos[1] / w),\n        signedDistanceFromCamera: w\n    };\n}\nfunction getPerspectiveRatio(cameraToCenterDistance, signedDistanceFromCamera) {\n    return 0.5 + 0.5 * (cameraToCenterDistance / signedDistanceFromCamera);\n}\nfunction isVisible(anchorPos, clippingBuffer) {\n    var x = anchorPos[0] / anchorPos[3];\n    var y = anchorPos[1] / anchorPos[3];\n    var inPaddedViewport = x >= -clippingBuffer[0] && x <= clippingBuffer[0] && y >= -clippingBuffer[1] && y <= clippingBuffer[1];\n    return inPaddedViewport;\n}\nfunction updateLineLabels(bucket, posMatrix, painter, isText, labelPlaneMatrix, glCoordMatrix, pitchWithMap, keepUpright) {\n    var sizeData = isText ? bucket.textSizeData : bucket.iconSizeData;\n    var partiallyEvaluatedSize = performance.evaluateSizeForZoom(sizeData, painter.transform.zoom);\n    var clippingBuffer = [\n        256 / painter.width * 2 + 1,\n        256 / painter.height * 2 + 1\n    ];\n    var dynamicLayoutVertexArray = isText ? bucket.text.dynamicLayoutVertexArray : bucket.icon.dynamicLayoutVertexArray;\n    dynamicLayoutVertexArray.clear();\n    var lineVertexArray = bucket.lineVertexArray;\n    var placedSymbols = isText ? bucket.text.placedSymbolArray : bucket.icon.placedSymbolArray;\n    var aspectRatio = painter.transform.width / painter.transform.height;\n    var useVertical = false;\n    for (var s = 0; s < placedSymbols.length; s++) {\n        var symbol = placedSymbols.get(s);\n        if (symbol.hidden || symbol.writingMode === performance.WritingMode.vertical && !useVertical) {\n            hideGlyphs(symbol.numGlyphs, dynamicLayoutVertexArray);\n            continue;\n        }\n        useVertical = false;\n        var anchorPos = [\n            symbol.anchorX,\n            symbol.anchorY,\n            0,\n            1\n        ];\n        performance.transformMat4(anchorPos, anchorPos, posMatrix);\n        if (!isVisible(anchorPos, clippingBuffer)) {\n            hideGlyphs(symbol.numGlyphs, dynamicLayoutVertexArray);\n            continue;\n        }\n        var cameraToAnchorDistance = anchorPos[3];\n        var perspectiveRatio = getPerspectiveRatio(painter.transform.cameraToCenterDistance, cameraToAnchorDistance);\n        var fontSize = performance.evaluateSizeForFeature(sizeData, partiallyEvaluatedSize, symbol);\n        var pitchScaledFontSize = pitchWithMap ? fontSize / perspectiveRatio : fontSize * perspectiveRatio;\n        var tileAnchorPoint = new performance.Point(symbol.anchorX, symbol.anchorY);\n        var anchorPoint = project(tileAnchorPoint, labelPlaneMatrix).point;\n        var projectionCache = {};\n        var placeUnflipped = placeGlyphsAlongLine(symbol, pitchScaledFontSize, false, keepUpright, posMatrix, labelPlaneMatrix, glCoordMatrix, bucket.glyphOffsetArray, lineVertexArray, dynamicLayoutVertexArray, anchorPoint, tileAnchorPoint, projectionCache, aspectRatio);\n        useVertical = placeUnflipped.useVertical;\n        if (placeUnflipped.notEnoughRoom || useVertical || placeUnflipped.needsFlipping && placeGlyphsAlongLine(symbol, pitchScaledFontSize, true, keepUpright, posMatrix, labelPlaneMatrix, glCoordMatrix, bucket.glyphOffsetArray, lineVertexArray, dynamicLayoutVertexArray, anchorPoint, tileAnchorPoint, projectionCache, aspectRatio).notEnoughRoom) {\n            hideGlyphs(symbol.numGlyphs, dynamicLayoutVertexArray);\n        }\n    }\n    if (isText) {\n        bucket.text.dynamicLayoutVertexBuffer.updateData(dynamicLayoutVertexArray);\n    } else {\n        bucket.icon.dynamicLayoutVertexBuffer.updateData(dynamicLayoutVertexArray);\n    }\n}\nfunction placeFirstAndLastGlyph(fontScale, glyphOffsetArray, lineOffsetX, lineOffsetY, flip, anchorPoint, tileAnchorPoint, symbol, lineVertexArray, labelPlaneMatrix, projectionCache) {\n    var glyphEndIndex = symbol.glyphStartIndex + symbol.numGlyphs;\n    var lineStartIndex = symbol.lineStartIndex;\n    var lineEndIndex = symbol.lineStartIndex + symbol.lineLength;\n    var firstGlyphOffset = glyphOffsetArray.getoffsetX(symbol.glyphStartIndex);\n    var lastGlyphOffset = glyphOffsetArray.getoffsetX(glyphEndIndex - 1);\n    var firstPlacedGlyph = placeGlyphAlongLine(fontScale * firstGlyphOffset, lineOffsetX, lineOffsetY, flip, anchorPoint, tileAnchorPoint, symbol.segment, lineStartIndex, lineEndIndex, lineVertexArray, labelPlaneMatrix, projectionCache);\n    if (!firstPlacedGlyph) {\n        return null;\n    }\n    var lastPlacedGlyph = placeGlyphAlongLine(fontScale * lastGlyphOffset, lineOffsetX, lineOffsetY, flip, anchorPoint, tileAnchorPoint, symbol.segment, lineStartIndex, lineEndIndex, lineVertexArray, labelPlaneMatrix, projectionCache);\n    if (!lastPlacedGlyph) {\n        return null;\n    }\n    return {\n        first: firstPlacedGlyph,\n        last: lastPlacedGlyph\n    };\n}\nfunction requiresOrientationChange(writingMode, firstPoint, lastPoint, aspectRatio) {\n    if (writingMode === performance.WritingMode.horizontal) {\n        var rise = Math.abs(lastPoint.y - firstPoint.y);\n        var run = Math.abs(lastPoint.x - firstPoint.x) * aspectRatio;\n        if (rise > run) {\n            return { useVertical: true };\n        }\n    }\n    if (writingMode === performance.WritingMode.vertical ? firstPoint.y < lastPoint.y : firstPoint.x > lastPoint.x) {\n        return { needsFlipping: true };\n    }\n    return null;\n}\nfunction placeGlyphsAlongLine(symbol, fontSize, flip, keepUpright, posMatrix, labelPlaneMatrix, glCoordMatrix, glyphOffsetArray, lineVertexArray, dynamicLayoutVertexArray, anchorPoint, tileAnchorPoint, projectionCache, aspectRatio) {\n    var fontScale = fontSize / 24;\n    var lineOffsetX = symbol.lineOffsetX * fontScale;\n    var lineOffsetY = symbol.lineOffsetY * fontScale;\n    var placedGlyphs;\n    if (symbol.numGlyphs > 1) {\n        var glyphEndIndex = symbol.glyphStartIndex + symbol.numGlyphs;\n        var lineStartIndex = symbol.lineStartIndex;\n        var lineEndIndex = symbol.lineStartIndex + symbol.lineLength;\n        var firstAndLastGlyph = placeFirstAndLastGlyph(fontScale, glyphOffsetArray, lineOffsetX, lineOffsetY, flip, anchorPoint, tileAnchorPoint, symbol, lineVertexArray, labelPlaneMatrix, projectionCache);\n        if (!firstAndLastGlyph) {\n            return { notEnoughRoom: true };\n        }\n        var firstPoint = project(firstAndLastGlyph.first.point, glCoordMatrix).point;\n        var lastPoint = project(firstAndLastGlyph.last.point, glCoordMatrix).point;\n        if (keepUpright && !flip) {\n            var orientationChange = requiresOrientationChange(symbol.writingMode, firstPoint, lastPoint, aspectRatio);\n            if (orientationChange) {\n                return orientationChange;\n            }\n        }\n        placedGlyphs = [firstAndLastGlyph.first];\n        for (var glyphIndex = symbol.glyphStartIndex + 1; glyphIndex < glyphEndIndex - 1; glyphIndex++) {\n            placedGlyphs.push(placeGlyphAlongLine(fontScale * glyphOffsetArray.getoffsetX(glyphIndex), lineOffsetX, lineOffsetY, flip, anchorPoint, tileAnchorPoint, symbol.segment, lineStartIndex, lineEndIndex, lineVertexArray, labelPlaneMatrix, projectionCache));\n        }\n        placedGlyphs.push(firstAndLastGlyph.last);\n    } else {\n        if (keepUpright && !flip) {\n            var a = project(tileAnchorPoint, posMatrix).point;\n            var tileVertexIndex = symbol.lineStartIndex + symbol.segment + 1;\n            var tileSegmentEnd = new performance.Point(lineVertexArray.getx(tileVertexIndex), lineVertexArray.gety(tileVertexIndex));\n            var projectedVertex = project(tileSegmentEnd, posMatrix);\n            var b = projectedVertex.signedDistanceFromCamera > 0 ? projectedVertex.point : projectTruncatedLineSegment(tileAnchorPoint, tileSegmentEnd, a, 1, posMatrix);\n            var orientationChange$1 = requiresOrientationChange(symbol.writingMode, a, b, aspectRatio);\n            if (orientationChange$1) {\n                return orientationChange$1;\n            }\n        }\n        var singleGlyph = placeGlyphAlongLine(fontScale * glyphOffsetArray.getoffsetX(symbol.glyphStartIndex), lineOffsetX, lineOffsetY, flip, anchorPoint, tileAnchorPoint, symbol.segment, symbol.lineStartIndex, symbol.lineStartIndex + symbol.lineLength, lineVertexArray, labelPlaneMatrix, projectionCache);\n        if (!singleGlyph) {\n            return { notEnoughRoom: true };\n        }\n        placedGlyphs = [singleGlyph];\n    }\n    for (var i = 0, list = placedGlyphs; i < list.length; i += 1) {\n        var glyph = list[i];\n        performance.addDynamicAttributes(dynamicLayoutVertexArray, glyph.point, glyph.angle);\n    }\n    return {};\n}\nfunction projectTruncatedLineSegment(previousTilePoint, currentTilePoint, previousProjectedPoint, minimumLength, projectionMatrix) {\n    var projectedUnitVertex = project(previousTilePoint.add(previousTilePoint.sub(currentTilePoint)._unit()), projectionMatrix).point;\n    var projectedUnitSegment = previousProjectedPoint.sub(projectedUnitVertex);\n    return previousProjectedPoint.add(projectedUnitSegment._mult(minimumLength / projectedUnitSegment.mag()));\n}\nfunction placeGlyphAlongLine(offsetX, lineOffsetX, lineOffsetY, flip, anchorPoint, tileAnchorPoint, anchorSegment, lineStartIndex, lineEndIndex, lineVertexArray, labelPlaneMatrix, projectionCache) {\n    var combinedOffsetX = flip ? offsetX - lineOffsetX : offsetX + lineOffsetX;\n    var dir = combinedOffsetX > 0 ? 1 : -1;\n    var angle = 0;\n    if (flip) {\n        dir *= -1;\n        angle = Math.PI;\n    }\n    if (dir < 0) {\n        angle += Math.PI;\n    }\n    var currentIndex = dir > 0 ? lineStartIndex + anchorSegment : lineStartIndex + anchorSegment + 1;\n    var current = anchorPoint;\n    var prev = anchorPoint;\n    var distanceToPrev = 0;\n    var currentSegmentDistance = 0;\n    var absOffsetX = Math.abs(combinedOffsetX);\n    var pathVertices = [];\n    while (distanceToPrev + currentSegmentDistance <= absOffsetX) {\n        currentIndex += dir;\n        if (currentIndex < lineStartIndex || currentIndex >= lineEndIndex) {\n            return null;\n        }\n        prev = current;\n        pathVertices.push(current);\n        current = projectionCache[currentIndex];\n        if (current === undefined) {\n            var currentVertex = new performance.Point(lineVertexArray.getx(currentIndex), lineVertexArray.gety(currentIndex));\n            var projection = project(currentVertex, labelPlaneMatrix);\n            if (projection.signedDistanceFromCamera > 0) {\n                current = projectionCache[currentIndex] = projection.point;\n            } else {\n                var previousLineVertexIndex = currentIndex - dir;\n                var previousTilePoint = distanceToPrev === 0 ? tileAnchorPoint : new performance.Point(lineVertexArray.getx(previousLineVertexIndex), lineVertexArray.gety(previousLineVertexIndex));\n                current = projectTruncatedLineSegment(previousTilePoint, currentVertex, prev, absOffsetX - distanceToPrev + 1, labelPlaneMatrix);\n            }\n        }\n        distanceToPrev += currentSegmentDistance;\n        currentSegmentDistance = prev.dist(current);\n    }\n    var segmentInterpolationT = (absOffsetX - distanceToPrev) / currentSegmentDistance;\n    var prevToCurrent = current.sub(prev);\n    var p = prevToCurrent.mult(segmentInterpolationT)._add(prev);\n    p._add(prevToCurrent._unit()._perp()._mult(lineOffsetY * dir));\n    var segmentAngle = angle + Math.atan2(current.y - prev.y, current.x - prev.x);\n    pathVertices.push(p);\n    return {\n        point: p,\n        angle: segmentAngle,\n        path: pathVertices\n    };\n}\nvar hiddenGlyphAttributes = new Float32Array([\n    -Infinity,\n    -Infinity,\n    0,\n    -Infinity,\n    -Infinity,\n    0,\n    -Infinity,\n    -Infinity,\n    0,\n    -Infinity,\n    -Infinity,\n    0\n]);\nfunction hideGlyphs(num, dynamicLayoutVertexArray) {\n    for (var i = 0; i < num; i++) {\n        var offset = dynamicLayoutVertexArray.length;\n        dynamicLayoutVertexArray.resize(offset + 4);\n        dynamicLayoutVertexArray.float32.set(hiddenGlyphAttributes, offset * 3);\n    }\n}\nfunction xyTransformMat4(out, a, m) {\n    var x = a[0], y = a[1];\n    out[0] = m[0] * x + m[4] * y + m[12];\n    out[1] = m[1] * x + m[5] * y + m[13];\n    out[3] = m[3] * x + m[7] * y + m[15];\n    return out;\n}\n\nvar viewportPadding = 100;\nvar CollisionIndex = function CollisionIndex(transform, grid, ignoredGrid) {\n    if (grid === void 0)\n        grid = new GridIndex(transform.width + 2 * viewportPadding, transform.height + 2 * viewportPadding, 25);\n    if (ignoredGrid === void 0)\n        ignoredGrid = new GridIndex(transform.width + 2 * viewportPadding, transform.height + 2 * viewportPadding, 25);\n    this.transform = transform;\n    this.grid = grid;\n    this.ignoredGrid = ignoredGrid;\n    this.pitchfactor = Math.cos(transform._pitch) * transform.cameraToCenterDistance;\n    this.screenRightBoundary = transform.width + viewportPadding;\n    this.screenBottomBoundary = transform.height + viewportPadding;\n    this.gridRightBoundary = transform.width + 2 * viewportPadding;\n    this.gridBottomBoundary = transform.height + 2 * viewportPadding;\n};\nCollisionIndex.prototype.placeCollisionBox = function placeCollisionBox(collisionBox, allowOverlap, textPixelRatio, posMatrix, collisionGroupPredicate) {\n    var projectedPoint = this.projectAndGetPerspectiveRatio(posMatrix, collisionBox.anchorPointX, collisionBox.anchorPointY);\n    var tileToViewport = textPixelRatio * projectedPoint.perspectiveRatio;\n    var tlX = collisionBox.x1 * tileToViewport + projectedPoint.point.x;\n    var tlY = collisionBox.y1 * tileToViewport + projectedPoint.point.y;\n    var brX = collisionBox.x2 * tileToViewport + projectedPoint.point.x;\n    var brY = collisionBox.y2 * tileToViewport + projectedPoint.point.y;\n    if (!this.isInsideGrid(tlX, tlY, brX, brY) || !allowOverlap && this.grid.hitTest(tlX, tlY, brX, brY, collisionGroupPredicate)) {\n        return {\n            box: [],\n            offscreen: false\n        };\n    }\n    return {\n        box: [\n            tlX,\n            tlY,\n            brX,\n            brY\n        ],\n        offscreen: this.isOffscreen(tlX, tlY, brX, brY)\n    };\n};\nCollisionIndex.prototype.placeCollisionCircles = function placeCollisionCircles(allowOverlap, symbol, lineVertexArray, glyphOffsetArray, fontSize, posMatrix, labelPlaneMatrix, labelToScreenMatrix, showCollisionCircles, pitchWithMap, collisionGroupPredicate, circlePixelDiameter, textPixelPadding) {\n    var placedCollisionCircles = [];\n    var tileUnitAnchorPoint = new performance.Point(symbol.anchorX, symbol.anchorY);\n    var screenAnchorPoint = project(tileUnitAnchorPoint, posMatrix);\n    var perspectiveRatio = getPerspectiveRatio(this.transform.cameraToCenterDistance, screenAnchorPoint.signedDistanceFromCamera);\n    var labelPlaneFontSize = pitchWithMap ? fontSize / perspectiveRatio : fontSize * perspectiveRatio;\n    var labelPlaneFontScale = labelPlaneFontSize / performance.ONE_EM;\n    var labelPlaneAnchorPoint = project(tileUnitAnchorPoint, labelPlaneMatrix).point;\n    var projectionCache = {};\n    var lineOffsetX = symbol.lineOffsetX * labelPlaneFontScale;\n    var lineOffsetY = symbol.lineOffsetY * labelPlaneFontScale;\n    var firstAndLastGlyph = placeFirstAndLastGlyph(labelPlaneFontScale, glyphOffsetArray, lineOffsetX, lineOffsetY, false, labelPlaneAnchorPoint, tileUnitAnchorPoint, symbol, lineVertexArray, labelPlaneMatrix, projectionCache);\n    var collisionDetected = false;\n    var inGrid = false;\n    var entirelyOffscreen = true;\n    if (firstAndLastGlyph) {\n        var radius = circlePixelDiameter * 0.5 * perspectiveRatio + textPixelPadding;\n        var screenPlaneMin = new performance.Point(-viewportPadding, -viewportPadding);\n        var screenPlaneMax = new performance.Point(this.screenRightBoundary, this.screenBottomBoundary);\n        var interpolator = new PathInterpolator();\n        var first = firstAndLastGlyph.first;\n        var last = firstAndLastGlyph.last;\n        var projectedPath = [];\n        for (var i = first.path.length - 1; i >= 1; i--) {\n            projectedPath.push(first.path[i]);\n        }\n        for (var i$1 = 1; i$1 < last.path.length; i$1++) {\n            projectedPath.push(last.path[i$1]);\n        }\n        var circleDist = radius * 2.5;\n        if (labelToScreenMatrix) {\n            var screenSpacePath = projectedPath.map(function (p) {\n                return project(p, labelToScreenMatrix);\n            });\n            if (screenSpacePath.some(function (point) {\n                    return point.signedDistanceFromCamera <= 0;\n                })) {\n                projectedPath = [];\n            } else {\n                projectedPath = screenSpacePath.map(function (p) {\n                    return p.point;\n                });\n            }\n        }\n        var segments = [];\n        if (projectedPath.length > 0) {\n            var minPoint = projectedPath[0].clone();\n            var maxPoint = projectedPath[0].clone();\n            for (var i$2 = 1; i$2 < projectedPath.length; i$2++) {\n                minPoint.x = Math.min(minPoint.x, projectedPath[i$2].x);\n                minPoint.y = Math.min(minPoint.y, projectedPath[i$2].y);\n                maxPoint.x = Math.max(maxPoint.x, projectedPath[i$2].x);\n                maxPoint.y = Math.max(maxPoint.y, projectedPath[i$2].y);\n            }\n            if (minPoint.x >= screenPlaneMin.x && maxPoint.x <= screenPlaneMax.x && minPoint.y >= screenPlaneMin.y && maxPoint.y <= screenPlaneMax.y) {\n                segments = [projectedPath];\n            } else if (maxPoint.x < screenPlaneMin.x || minPoint.x > screenPlaneMax.x || maxPoint.y < screenPlaneMin.y || minPoint.y > screenPlaneMax.y) {\n                segments = [];\n            } else {\n                segments = performance.clipLine([projectedPath], screenPlaneMin.x, screenPlaneMin.y, screenPlaneMax.x, screenPlaneMax.y);\n            }\n        }\n        for (var i$4 = 0, list = segments; i$4 < list.length; i$4 += 1) {\n            var seg = list[i$4];\n            interpolator.reset(seg, radius * 0.25);\n            var numCircles = 0;\n            if (interpolator.length <= 0.5 * radius) {\n                numCircles = 1;\n            } else {\n                numCircles = Math.ceil(interpolator.paddedLength / circleDist) + 1;\n            }\n            for (var i$3 = 0; i$3 < numCircles; i$3++) {\n                var t = i$3 / Math.max(numCircles - 1, 1);\n                var circlePosition = interpolator.lerp(t);\n                var centerX = circlePosition.x + viewportPadding;\n                var centerY = circlePosition.y + viewportPadding;\n                placedCollisionCircles.push(centerX, centerY, radius, 0);\n                var x1 = centerX - radius;\n                var y1 = centerY - radius;\n                var x2 = centerX + radius;\n                var y2 = centerY + radius;\n                entirelyOffscreen = entirelyOffscreen && this.isOffscreen(x1, y1, x2, y2);\n                inGrid = inGrid || this.isInsideGrid(x1, y1, x2, y2);\n                if (!allowOverlap) {\n                    if (this.grid.hitTestCircle(centerX, centerY, radius, collisionGroupPredicate)) {\n                        collisionDetected = true;\n                        if (!showCollisionCircles) {\n                            return {\n                                circles: [],\n                                offscreen: false,\n                                collisionDetected: collisionDetected\n                            };\n                        }\n                    }\n                }\n            }\n        }\n    }\n    return {\n        circles: !showCollisionCircles && collisionDetected || !inGrid ? [] : placedCollisionCircles,\n        offscreen: entirelyOffscreen,\n        collisionDetected: collisionDetected\n    };\n};\nCollisionIndex.prototype.queryRenderedSymbols = function queryRenderedSymbols(viewportQueryGeometry) {\n    if (viewportQueryGeometry.length === 0 || this.grid.keysLength() === 0 && this.ignoredGrid.keysLength() === 0) {\n        return {};\n    }\n    var query = [];\n    var minX = Infinity;\n    var minY = Infinity;\n    var maxX = -Infinity;\n    var maxY = -Infinity;\n    for (var i = 0, list = viewportQueryGeometry; i < list.length; i += 1) {\n        var point = list[i];\n        var gridPoint = new performance.Point(point.x + viewportPadding, point.y + viewportPadding);\n        minX = Math.min(minX, gridPoint.x);\n        minY = Math.min(minY, gridPoint.y);\n        maxX = Math.max(maxX, gridPoint.x);\n        maxY = Math.max(maxY, gridPoint.y);\n        query.push(gridPoint);\n    }\n    var features = this.grid.query(minX, minY, maxX, maxY).concat(this.ignoredGrid.query(minX, minY, maxX, maxY));\n    var seenFeatures = {};\n    var result = {};\n    for (var i$1 = 0, list$1 = features; i$1 < list$1.length; i$1 += 1) {\n        var feature = list$1[i$1];\n        var featureKey = feature.key;\n        if (seenFeatures[featureKey.bucketInstanceId] === undefined) {\n            seenFeatures[featureKey.bucketInstanceId] = {};\n        }\n        if (seenFeatures[featureKey.bucketInstanceId][featureKey.featureIndex]) {\n            continue;\n        }\n        var bbox = [\n            new performance.Point(feature.x1, feature.y1),\n            new performance.Point(feature.x2, feature.y1),\n            new performance.Point(feature.x2, feature.y2),\n            new performance.Point(feature.x1, feature.y2)\n        ];\n        if (!performance.polygonIntersectsPolygon(query, bbox)) {\n            continue;\n        }\n        seenFeatures[featureKey.bucketInstanceId][featureKey.featureIndex] = true;\n        if (result[featureKey.bucketInstanceId] === undefined) {\n            result[featureKey.bucketInstanceId] = [];\n        }\n        result[featureKey.bucketInstanceId].push(featureKey.featureIndex);\n    }\n    return result;\n};\nCollisionIndex.prototype.insertCollisionBox = function insertCollisionBox(collisionBox, ignorePlacement, bucketInstanceId, featureIndex, collisionGroupID) {\n    var grid = ignorePlacement ? this.ignoredGrid : this.grid;\n    var key = {\n        bucketInstanceId: bucketInstanceId,\n        featureIndex: featureIndex,\n        collisionGroupID: collisionGroupID\n    };\n    grid.insert(key, collisionBox[0], collisionBox[1], collisionBox[2], collisionBox[3]);\n};\nCollisionIndex.prototype.insertCollisionCircles = function insertCollisionCircles(collisionCircles, ignorePlacement, bucketInstanceId, featureIndex, collisionGroupID) {\n    var grid = ignorePlacement ? this.ignoredGrid : this.grid;\n    var key = {\n        bucketInstanceId: bucketInstanceId,\n        featureIndex: featureIndex,\n        collisionGroupID: collisionGroupID\n    };\n    for (var k = 0; k < collisionCircles.length; k += 4) {\n        grid.insertCircle(key, collisionCircles[k], collisionCircles[k + 1], collisionCircles[k + 2]);\n    }\n};\nCollisionIndex.prototype.projectAndGetPerspectiveRatio = function projectAndGetPerspectiveRatio(posMatrix, x, y) {\n    var p = [\n        x,\n        y,\n        0,\n        1\n    ];\n    xyTransformMat4(p, p, posMatrix);\n    var a = new performance.Point((p[0] / p[3] + 1) / 2 * this.transform.width + viewportPadding, (-p[1] / p[3] + 1) / 2 * this.transform.height + viewportPadding);\n    return {\n        point: a,\n        perspectiveRatio: 0.5 + 0.5 * (this.transform.cameraToCenterDistance / p[3])\n    };\n};\nCollisionIndex.prototype.isOffscreen = function isOffscreen(x1, y1, x2, y2) {\n    return x2 < viewportPadding || x1 >= this.screenRightBoundary || y2 < viewportPadding || y1 > this.screenBottomBoundary;\n};\nCollisionIndex.prototype.isInsideGrid = function isInsideGrid(x1, y1, x2, y2) {\n    return x2 >= 0 && x1 < this.gridRightBoundary && y2 >= 0 && y1 < this.gridBottomBoundary;\n};\nCollisionIndex.prototype.getViewportMatrix = function getViewportMatrix() {\n    var m = performance.identity([]);\n    performance.translate(m, m, [\n        -viewportPadding,\n        -viewportPadding,\n        0\n    ]);\n    return m;\n};\n\nfunction pixelsToTileUnits (tile, pixelValue, z) {\n    return pixelValue * (performance.EXTENT / (tile.tileSize * Math.pow(2, z - tile.tileID.overscaledZ)));\n}\n\nvar OpacityState = function OpacityState(prevState, increment, placed, skipFade) {\n    if (prevState) {\n        this.opacity = Math.max(0, Math.min(1, prevState.opacity + (prevState.placed ? increment : -increment)));\n    } else {\n        this.opacity = skipFade && placed ? 1 : 0;\n    }\n    this.placed = placed;\n};\nOpacityState.prototype.isHidden = function isHidden() {\n    return this.opacity === 0 && !this.placed;\n};\nvar JointOpacityState = function JointOpacityState(prevState, increment, placedText, placedIcon, skipFade) {\n    this.text = new OpacityState(prevState ? prevState.text : null, increment, placedText, skipFade);\n    this.icon = new OpacityState(prevState ? prevState.icon : null, increment, placedIcon, skipFade);\n};\nJointOpacityState.prototype.isHidden = function isHidden() {\n    return this.text.isHidden() && this.icon.isHidden();\n};\nvar JointPlacement = function JointPlacement(text, icon, skipFade) {\n    this.text = text;\n    this.icon = icon;\n    this.skipFade = skipFade;\n};\nvar CollisionCircleArray = function CollisionCircleArray() {\n    this.invProjMatrix = performance.create();\n    this.viewportMatrix = performance.create();\n    this.circles = [];\n};\nvar RetainedQueryData = function RetainedQueryData(bucketInstanceId, featureIndex, sourceLayerIndex, bucketIndex, tileID) {\n    this.bucketInstanceId = bucketInstanceId;\n    this.featureIndex = featureIndex;\n    this.sourceLayerIndex = sourceLayerIndex;\n    this.bucketIndex = bucketIndex;\n    this.tileID = tileID;\n};\nvar CollisionGroups = function CollisionGroups(crossSourceCollisions) {\n    this.crossSourceCollisions = crossSourceCollisions;\n    this.maxGroupID = 0;\n    this.collisionGroups = {};\n};\nCollisionGroups.prototype.get = function get(sourceID) {\n    if (!this.crossSourceCollisions) {\n        if (!this.collisionGroups[sourceID]) {\n            var nextGroupID = ++this.maxGroupID;\n            this.collisionGroups[sourceID] = {\n                ID: nextGroupID,\n                predicate: function (key) {\n                    return key.collisionGroupID === nextGroupID;\n                }\n            };\n        }\n        return this.collisionGroups[sourceID];\n    } else {\n        return {\n            ID: 0,\n            predicate: null\n        };\n    }\n};\nfunction calculateVariableLayoutShift(anchor, width, height, textOffset, textBoxScale) {\n    var ref = performance.getAnchorAlignment(anchor);\n    var horizontalAlign = ref.horizontalAlign;\n    var verticalAlign = ref.verticalAlign;\n    var shiftX = -(horizontalAlign - 0.5) * width;\n    var shiftY = -(verticalAlign - 0.5) * height;\n    var offset = performance.evaluateVariableOffset(anchor, textOffset);\n    return new performance.Point(shiftX + offset[0] * textBoxScale, shiftY + offset[1] * textBoxScale);\n}\nfunction shiftVariableCollisionBox(collisionBox, shiftX, shiftY, rotateWithMap, pitchWithMap, angle) {\n    var x1 = collisionBox.x1;\n    var x2 = collisionBox.x2;\n    var y1 = collisionBox.y1;\n    var y2 = collisionBox.y2;\n    var anchorPointX = collisionBox.anchorPointX;\n    var anchorPointY = collisionBox.anchorPointY;\n    var rotatedOffset = new performance.Point(shiftX, shiftY);\n    if (rotateWithMap) {\n        rotatedOffset._rotate(pitchWithMap ? angle : -angle);\n    }\n    return {\n        x1: x1 + rotatedOffset.x,\n        y1: y1 + rotatedOffset.y,\n        x2: x2 + rotatedOffset.x,\n        y2: y2 + rotatedOffset.y,\n        anchorPointX: anchorPointX,\n        anchorPointY: anchorPointY\n    };\n}\nvar Placement = function Placement(transform, fadeDuration, crossSourceCollisions, prevPlacement) {\n    this.transform = transform.clone();\n    this.collisionIndex = new CollisionIndex(this.transform);\n    this.placements = {};\n    this.opacities = {};\n    this.variableOffsets = {};\n    this.stale = false;\n    this.commitTime = 0;\n    this.fadeDuration = fadeDuration;\n    this.retainedQueryData = {};\n    this.collisionGroups = new CollisionGroups(crossSourceCollisions);\n    this.collisionCircleArrays = {};\n    this.prevPlacement = prevPlacement;\n    if (prevPlacement) {\n        prevPlacement.prevPlacement = undefined;\n    }\n    this.placedOrientations = {};\n};\nPlacement.prototype.getBucketParts = function getBucketParts(results, styleLayer, tile, sortAcrossTiles) {\n    var symbolBucket = tile.getBucket(styleLayer);\n    var bucketFeatureIndex = tile.latestFeatureIndex;\n    if (!symbolBucket || !bucketFeatureIndex || styleLayer.id !== symbolBucket.layerIds[0]) {\n        return;\n    }\n    var collisionBoxArray = tile.collisionBoxArray;\n    var layout = symbolBucket.layers[0].layout;\n    var scale = Math.pow(2, this.transform.zoom - tile.tileID.overscaledZ);\n    var textPixelRatio = tile.tileSize / performance.EXTENT;\n    var posMatrix = this.transform.calculatePosMatrix(tile.tileID.toUnwrapped());\n    var pitchWithMap = layout.get('text-pitch-alignment') === 'map';\n    var rotateWithMap = layout.get('text-rotation-alignment') === 'map';\n    var pixelsToTiles = pixelsToTileUnits(tile, 1, this.transform.zoom);\n    var textLabelPlaneMatrix = getLabelPlaneMatrix(posMatrix, pitchWithMap, rotateWithMap, this.transform, pixelsToTiles);\n    var labelToScreenMatrix = null;\n    if (pitchWithMap) {\n        var glMatrix = getGlCoordMatrix(posMatrix, pitchWithMap, rotateWithMap, this.transform, pixelsToTiles);\n        labelToScreenMatrix = performance.multiply([], this.transform.labelPlaneMatrix, glMatrix);\n    }\n    this.retainedQueryData[symbolBucket.bucketInstanceId] = new RetainedQueryData(symbolBucket.bucketInstanceId, bucketFeatureIndex, symbolBucket.sourceLayerIndex, symbolBucket.index, tile.tileID);\n    var parameters = {\n        bucket: symbolBucket,\n        layout: layout,\n        posMatrix: posMatrix,\n        textLabelPlaneMatrix: textLabelPlaneMatrix,\n        labelToScreenMatrix: labelToScreenMatrix,\n        scale: scale,\n        textPixelRatio: textPixelRatio,\n        holdingForFade: tile.holdingForFade(),\n        collisionBoxArray: collisionBoxArray,\n        partiallyEvaluatedTextSize: performance.evaluateSizeForZoom(symbolBucket.textSizeData, this.transform.zoom),\n        collisionGroup: this.collisionGroups.get(symbolBucket.sourceID)\n    };\n    if (sortAcrossTiles) {\n        for (var i = 0, list = symbolBucket.sortKeyRanges; i < list.length; i += 1) {\n            var range = list[i];\n            var sortKey = range.sortKey;\n            var symbolInstanceStart = range.symbolInstanceStart;\n            var symbolInstanceEnd = range.symbolInstanceEnd;\n            results.push({\n                sortKey: sortKey,\n                symbolInstanceStart: symbolInstanceStart,\n                symbolInstanceEnd: symbolInstanceEnd,\n                parameters: parameters\n            });\n        }\n    } else {\n        results.push({\n            symbolInstanceStart: 0,\n            symbolInstanceEnd: symbolBucket.symbolInstances.length,\n            parameters: parameters\n        });\n    }\n};\nPlacement.prototype.attemptAnchorPlacement = function attemptAnchorPlacement(anchor, textBox, width, height, textBoxScale, rotateWithMap, pitchWithMap, textPixelRatio, posMatrix, collisionGroup, textAllowOverlap, symbolInstance, bucket, orientation, iconBox) {\n    var textOffset = [\n        symbolInstance.textOffset0,\n        symbolInstance.textOffset1\n    ];\n    var shift = calculateVariableLayoutShift(anchor, width, height, textOffset, textBoxScale);\n    var placedGlyphBoxes = this.collisionIndex.placeCollisionBox(shiftVariableCollisionBox(textBox, shift.x, shift.y, rotateWithMap, pitchWithMap, this.transform.angle), textAllowOverlap, textPixelRatio, posMatrix, collisionGroup.predicate);\n    if (iconBox) {\n        var placedIconBoxes = this.collisionIndex.placeCollisionBox(shiftVariableCollisionBox(iconBox, shift.x, shift.y, rotateWithMap, pitchWithMap, this.transform.angle), textAllowOverlap, textPixelRatio, posMatrix, collisionGroup.predicate);\n        if (placedIconBoxes.box.length === 0) {\n            return;\n        }\n    }\n    if (placedGlyphBoxes.box.length > 0) {\n        var prevAnchor;\n        if (this.prevPlacement && this.prevPlacement.variableOffsets[symbolInstance.crossTileID] && this.prevPlacement.placements[symbolInstance.crossTileID] && this.prevPlacement.placements[symbolInstance.crossTileID].text) {\n            prevAnchor = this.prevPlacement.variableOffsets[symbolInstance.crossTileID].anchor;\n        }\n        this.variableOffsets[symbolInstance.crossTileID] = {\n            textOffset: textOffset,\n            width: width,\n            height: height,\n            anchor: anchor,\n            textBoxScale: textBoxScale,\n            prevAnchor: prevAnchor\n        };\n        this.markUsedJustification(bucket, anchor, symbolInstance, orientation);\n        if (bucket.allowVerticalPlacement) {\n            this.markUsedOrientation(bucket, orientation, symbolInstance);\n            this.placedOrientations[symbolInstance.crossTileID] = orientation;\n        }\n        return {\n            shift: shift,\n            placedGlyphBoxes: placedGlyphBoxes\n        };\n    }\n};\nPlacement.prototype.placeLayerBucketPart = function placeLayerBucketPart(bucketPart, seenCrossTileIDs, showCollisionBoxes) {\n    var this$1 = this;\n    var ref = bucketPart.parameters;\n    var bucket = ref.bucket;\n    var layout = ref.layout;\n    var posMatrix = ref.posMatrix;\n    var textLabelPlaneMatrix = ref.textLabelPlaneMatrix;\n    var labelToScreenMatrix = ref.labelToScreenMatrix;\n    var textPixelRatio = ref.textPixelRatio;\n    var holdingForFade = ref.holdingForFade;\n    var collisionBoxArray = ref.collisionBoxArray;\n    var partiallyEvaluatedTextSize = ref.partiallyEvaluatedTextSize;\n    var collisionGroup = ref.collisionGroup;\n    var textOptional = layout.get('text-optional');\n    var iconOptional = layout.get('icon-optional');\n    var textAllowOverlap = layout.get('text-allow-overlap');\n    var iconAllowOverlap = layout.get('icon-allow-overlap');\n    var rotateWithMap = layout.get('text-rotation-alignment') === 'map';\n    var pitchWithMap = layout.get('text-pitch-alignment') === 'map';\n    var hasIconTextFit = layout.get('icon-text-fit') !== 'none';\n    var zOrderByViewportY = layout.get('symbol-z-order') === 'viewport-y';\n    var alwaysShowText = textAllowOverlap && (iconAllowOverlap || !bucket.hasIconData() || iconOptional);\n    var alwaysShowIcon = iconAllowOverlap && (textAllowOverlap || !bucket.hasTextData() || textOptional);\n    if (!bucket.collisionArrays && collisionBoxArray) {\n        bucket.deserializeCollisionBoxes(collisionBoxArray);\n    }\n    var placeSymbol = function (symbolInstance, collisionArrays) {\n        if (seenCrossTileIDs[symbolInstance.crossTileID]) {\n            return;\n        }\n        if (holdingForFade) {\n            this$1.placements[symbolInstance.crossTileID] = new JointPlacement(false, false, false);\n            return;\n        }\n        var placeText = false;\n        var placeIcon = false;\n        var offscreen = true;\n        var shift = null;\n        var placed = {\n            box: null,\n            offscreen: null\n        };\n        var placedVerticalText = {\n            box: null,\n            offscreen: null\n        };\n        var placedGlyphBoxes = null;\n        var placedGlyphCircles = null;\n        var placedIconBoxes = null;\n        var textFeatureIndex = 0;\n        var verticalTextFeatureIndex = 0;\n        var iconFeatureIndex = 0;\n        if (collisionArrays.textFeatureIndex) {\n            textFeatureIndex = collisionArrays.textFeatureIndex;\n        } else if (symbolInstance.useRuntimeCollisionCircles) {\n            textFeatureIndex = symbolInstance.featureIndex;\n        }\n        if (collisionArrays.verticalTextFeatureIndex) {\n            verticalTextFeatureIndex = collisionArrays.verticalTextFeatureIndex;\n        }\n        var textBox = collisionArrays.textBox;\n        if (textBox) {\n            var updatePreviousOrientationIfNotPlaced = function (isPlaced) {\n                var previousOrientation = performance.WritingMode.horizontal;\n                if (bucket.allowVerticalPlacement && !isPlaced && this$1.prevPlacement) {\n                    var prevPlacedOrientation = this$1.prevPlacement.placedOrientations[symbolInstance.crossTileID];\n                    if (prevPlacedOrientation) {\n                        this$1.placedOrientations[symbolInstance.crossTileID] = prevPlacedOrientation;\n                        previousOrientation = prevPlacedOrientation;\n                        this$1.markUsedOrientation(bucket, previousOrientation, symbolInstance);\n                    }\n                }\n                return previousOrientation;\n            };\n            var placeTextForPlacementModes = function (placeHorizontalFn, placeVerticalFn) {\n                if (bucket.allowVerticalPlacement && symbolInstance.numVerticalGlyphVertices > 0 && collisionArrays.verticalTextBox) {\n                    for (var i = 0, list = bucket.writingModes; i < list.length; i += 1) {\n                        var placementMode = list[i];\n                        if (placementMode === performance.WritingMode.vertical) {\n                            placed = placeVerticalFn();\n                            placedVerticalText = placed;\n                        } else {\n                            placed = placeHorizontalFn();\n                        }\n                        if (placed && placed.box && placed.box.length) {\n                            break;\n                        }\n                    }\n                } else {\n                    placed = placeHorizontalFn();\n                }\n            };\n            if (!layout.get('text-variable-anchor')) {\n                var placeBox = function (collisionTextBox, orientation) {\n                    var placedFeature = this$1.collisionIndex.placeCollisionBox(collisionTextBox, textAllowOverlap, textPixelRatio, posMatrix, collisionGroup.predicate);\n                    if (placedFeature && placedFeature.box && placedFeature.box.length) {\n                        this$1.markUsedOrientation(bucket, orientation, symbolInstance);\n                        this$1.placedOrientations[symbolInstance.crossTileID] = orientation;\n                    }\n                    return placedFeature;\n                };\n                var placeHorizontal = function () {\n                    return placeBox(textBox, performance.WritingMode.horizontal);\n                };\n                var placeVertical = function () {\n                    var verticalTextBox = collisionArrays.verticalTextBox;\n                    if (bucket.allowVerticalPlacement && symbolInstance.numVerticalGlyphVertices > 0 && verticalTextBox) {\n                        return placeBox(verticalTextBox, performance.WritingMode.vertical);\n                    }\n                    return {\n                        box: null,\n                        offscreen: null\n                    };\n                };\n                placeTextForPlacementModes(placeHorizontal, placeVertical);\n                updatePreviousOrientationIfNotPlaced(placed && placed.box && placed.box.length);\n            } else {\n                var anchors = layout.get('text-variable-anchor');\n                if (this$1.prevPlacement && this$1.prevPlacement.variableOffsets[symbolInstance.crossTileID]) {\n                    var prevOffsets = this$1.prevPlacement.variableOffsets[symbolInstance.crossTileID];\n                    if (anchors.indexOf(prevOffsets.anchor) > 0) {\n                        anchors = anchors.filter(function (anchor) {\n                            return anchor !== prevOffsets.anchor;\n                        });\n                        anchors.unshift(prevOffsets.anchor);\n                    }\n                }\n                var placeBoxForVariableAnchors = function (collisionTextBox, collisionIconBox, orientation) {\n                    var width = collisionTextBox.x2 - collisionTextBox.x1;\n                    var height = collisionTextBox.y2 - collisionTextBox.y1;\n                    var textBoxScale = symbolInstance.textBoxScale;\n                    var variableIconBox = hasIconTextFit && !iconAllowOverlap ? collisionIconBox : null;\n                    var placedBox = {\n                        box: [],\n                        offscreen: false\n                    };\n                    var placementAttempts = textAllowOverlap ? anchors.length * 2 : anchors.length;\n                    for (var i = 0; i < placementAttempts; ++i) {\n                        var anchor = anchors[i % anchors.length];\n                        var allowOverlap = i >= anchors.length;\n                        var result = this$1.attemptAnchorPlacement(anchor, collisionTextBox, width, height, textBoxScale, rotateWithMap, pitchWithMap, textPixelRatio, posMatrix, collisionGroup, allowOverlap, symbolInstance, bucket, orientation, variableIconBox);\n                        if (result) {\n                            placedBox = result.placedGlyphBoxes;\n                            if (placedBox && placedBox.box && placedBox.box.length) {\n                                placeText = true;\n                                shift = result.shift;\n                                break;\n                            }\n                        }\n                    }\n                    return placedBox;\n                };\n                var placeHorizontal$1 = function () {\n                    return placeBoxForVariableAnchors(textBox, collisionArrays.iconBox, performance.WritingMode.horizontal);\n                };\n                var placeVertical$1 = function () {\n                    var verticalTextBox = collisionArrays.verticalTextBox;\n                    var wasPlaced = placed && placed.box && placed.box.length;\n                    if (bucket.allowVerticalPlacement && !wasPlaced && symbolInstance.numVerticalGlyphVertices > 0 && verticalTextBox) {\n                        return placeBoxForVariableAnchors(verticalTextBox, collisionArrays.verticalIconBox, performance.WritingMode.vertical);\n                    }\n                    return {\n                        box: null,\n                        offscreen: null\n                    };\n                };\n                placeTextForPlacementModes(placeHorizontal$1, placeVertical$1);\n                if (placed) {\n                    placeText = placed.box;\n                    offscreen = placed.offscreen;\n                }\n                var prevOrientation = updatePreviousOrientationIfNotPlaced(placed && placed.box);\n                if (!placeText && this$1.prevPlacement) {\n                    var prevOffset = this$1.prevPlacement.variableOffsets[symbolInstance.crossTileID];\n                    if (prevOffset) {\n                        this$1.variableOffsets[symbolInstance.crossTileID] = prevOffset;\n                        this$1.markUsedJustification(bucket, prevOffset.anchor, symbolInstance, prevOrientation);\n                    }\n                }\n            }\n        }\n        placedGlyphBoxes = placed;\n        placeText = placedGlyphBoxes && placedGlyphBoxes.box && placedGlyphBoxes.box.length > 0;\n        offscreen = placedGlyphBoxes && placedGlyphBoxes.offscreen;\n        if (symbolInstance.useRuntimeCollisionCircles) {\n            var placedSymbol = bucket.text.placedSymbolArray.get(symbolInstance.centerJustifiedTextSymbolIndex);\n            var fontSize = performance.evaluateSizeForFeature(bucket.textSizeData, partiallyEvaluatedTextSize, placedSymbol);\n            var textPixelPadding = layout.get('text-padding');\n            var circlePixelDiameter = symbolInstance.collisionCircleDiameter;\n            placedGlyphCircles = this$1.collisionIndex.placeCollisionCircles(textAllowOverlap, placedSymbol, bucket.lineVertexArray, bucket.glyphOffsetArray, fontSize, posMatrix, textLabelPlaneMatrix, labelToScreenMatrix, showCollisionBoxes, pitchWithMap, collisionGroup.predicate, circlePixelDiameter, textPixelPadding);\n            placeText = textAllowOverlap || placedGlyphCircles.circles.length > 0 && !placedGlyphCircles.collisionDetected;\n            offscreen = offscreen && placedGlyphCircles.offscreen;\n        }\n        if (collisionArrays.iconFeatureIndex) {\n            iconFeatureIndex = collisionArrays.iconFeatureIndex;\n        }\n        if (collisionArrays.iconBox) {\n            var placeIconFeature = function (iconBox) {\n                var shiftedIconBox = hasIconTextFit && shift ? shiftVariableCollisionBox(iconBox, shift.x, shift.y, rotateWithMap, pitchWithMap, this$1.transform.angle) : iconBox;\n                return this$1.collisionIndex.placeCollisionBox(shiftedIconBox, iconAllowOverlap, textPixelRatio, posMatrix, collisionGroup.predicate);\n            };\n            if (placedVerticalText && placedVerticalText.box && placedVerticalText.box.length && collisionArrays.verticalIconBox) {\n                placedIconBoxes = placeIconFeature(collisionArrays.verticalIconBox);\n                placeIcon = placedIconBoxes.box.length > 0;\n            } else {\n                placedIconBoxes = placeIconFeature(collisionArrays.iconBox);\n                placeIcon = placedIconBoxes.box.length > 0;\n            }\n            offscreen = offscreen && placedIconBoxes.offscreen;\n        }\n        var iconWithoutText = textOptional || symbolInstance.numHorizontalGlyphVertices === 0 && symbolInstance.numVerticalGlyphVertices === 0;\n        var textWithoutIcon = iconOptional || symbolInstance.numIconVertices === 0;\n        if (!iconWithoutText && !textWithoutIcon) {\n            placeIcon = placeText = placeIcon && placeText;\n        } else if (!textWithoutIcon) {\n            placeText = placeIcon && placeText;\n        } else if (!iconWithoutText) {\n            placeIcon = placeIcon && placeText;\n        }\n        if (placeText && placedGlyphBoxes && placedGlyphBoxes.box) {\n            if (placedVerticalText && placedVerticalText.box && verticalTextFeatureIndex) {\n                this$1.collisionIndex.insertCollisionBox(placedGlyphBoxes.box, layout.get('text-ignore-placement'), bucket.bucketInstanceId, verticalTextFeatureIndex, collisionGroup.ID);\n            } else {\n                this$1.collisionIndex.insertCollisionBox(placedGlyphBoxes.box, layout.get('text-ignore-placement'), bucket.bucketInstanceId, textFeatureIndex, collisionGroup.ID);\n            }\n        }\n        if (placeIcon && placedIconBoxes) {\n            this$1.collisionIndex.insertCollisionBox(placedIconBoxes.box, layout.get('icon-ignore-placement'), bucket.bucketInstanceId, iconFeatureIndex, collisionGroup.ID);\n        }\n        if (placedGlyphCircles) {\n            if (placeText) {\n                this$1.collisionIndex.insertCollisionCircles(placedGlyphCircles.circles, layout.get('text-ignore-placement'), bucket.bucketInstanceId, textFeatureIndex, collisionGroup.ID);\n            }\n            if (showCollisionBoxes) {\n                var id = bucket.bucketInstanceId;\n                var circleArray = this$1.collisionCircleArrays[id];\n                if (circleArray === undefined) {\n                    circleArray = this$1.collisionCircleArrays[id] = new CollisionCircleArray();\n                }\n                for (var i = 0; i < placedGlyphCircles.circles.length; i += 4) {\n                    circleArray.circles.push(placedGlyphCircles.circles[i + 0]);\n                    circleArray.circles.push(placedGlyphCircles.circles[i + 1]);\n                    circleArray.circles.push(placedGlyphCircles.circles[i + 2]);\n                    circleArray.circles.push(placedGlyphCircles.collisionDetected ? 1 : 0);\n                }\n            }\n        }\n        this$1.placements[symbolInstance.crossTileID] = new JointPlacement(placeText || alwaysShowText, placeIcon || alwaysShowIcon, offscreen || bucket.justReloaded);\n        seenCrossTileIDs[symbolInstance.crossTileID] = true;\n    };\n    if (zOrderByViewportY) {\n        var symbolIndexes = bucket.getSortedSymbolIndexes(this.transform.angle);\n        for (var i = symbolIndexes.length - 1; i >= 0; --i) {\n            var symbolIndex = symbolIndexes[i];\n            placeSymbol(bucket.symbolInstances.get(symbolIndex), bucket.collisionArrays[symbolIndex]);\n        }\n    } else {\n        for (var i$1 = bucketPart.symbolInstanceStart; i$1 < bucketPart.symbolInstanceEnd; i$1++) {\n            placeSymbol(bucket.symbolInstances.get(i$1), bucket.collisionArrays[i$1]);\n        }\n    }\n    if (showCollisionBoxes && bucket.bucketInstanceId in this.collisionCircleArrays) {\n        var circleArray = this.collisionCircleArrays[bucket.bucketInstanceId];\n        performance.invert(circleArray.invProjMatrix, posMatrix);\n        circleArray.viewportMatrix = this.collisionIndex.getViewportMatrix();\n    }\n    bucket.justReloaded = false;\n};\nPlacement.prototype.markUsedJustification = function markUsedJustification(bucket, placedAnchor, symbolInstance, orientation) {\n    var justifications = {\n        'left': symbolInstance.leftJustifiedTextSymbolIndex,\n        'center': symbolInstance.centerJustifiedTextSymbolIndex,\n        'right': symbolInstance.rightJustifiedTextSymbolIndex\n    };\n    var autoIndex;\n    if (orientation === performance.WritingMode.vertical) {\n        autoIndex = symbolInstance.verticalPlacedTextSymbolIndex;\n    } else {\n        autoIndex = justifications[performance.getAnchorJustification(placedAnchor)];\n    }\n    var indexes = [\n        symbolInstance.leftJustifiedTextSymbolIndex,\n        symbolInstance.centerJustifiedTextSymbolIndex,\n        symbolInstance.rightJustifiedTextSymbolIndex,\n        symbolInstance.verticalPlacedTextSymbolIndex\n    ];\n    for (var i = 0, list = indexes; i < list.length; i += 1) {\n        var index = list[i];\n        if (index >= 0) {\n            if (autoIndex >= 0 && index !== autoIndex) {\n                bucket.text.placedSymbolArray.get(index).crossTileID = 0;\n            } else {\n                bucket.text.placedSymbolArray.get(index).crossTileID = symbolInstance.crossTileID;\n            }\n        }\n    }\n};\nPlacement.prototype.markUsedOrientation = function markUsedOrientation(bucket, orientation, symbolInstance) {\n    var horizontal = orientation === performance.WritingMode.horizontal || orientation === performance.WritingMode.horizontalOnly ? orientation : 0;\n    var vertical = orientation === performance.WritingMode.vertical ? orientation : 0;\n    var horizontalIndexes = [\n        symbolInstance.leftJustifiedTextSymbolIndex,\n        symbolInstance.centerJustifiedTextSymbolIndex,\n        symbolInstance.rightJustifiedTextSymbolIndex\n    ];\n    for (var i = 0, list = horizontalIndexes; i < list.length; i += 1) {\n        var index = list[i];\n        bucket.text.placedSymbolArray.get(index).placedOrientation = horizontal;\n    }\n    if (symbolInstance.verticalPlacedTextSymbolIndex) {\n        bucket.text.placedSymbolArray.get(symbolInstance.verticalPlacedTextSymbolIndex).placedOrientation = vertical;\n    }\n};\nPlacement.prototype.commit = function commit(now) {\n    this.commitTime = now;\n    this.zoomAtLastRecencyCheck = this.transform.zoom;\n    var prevPlacement = this.prevPlacement;\n    var placementChanged = false;\n    this.prevZoomAdjustment = prevPlacement ? prevPlacement.zoomAdjustment(this.transform.zoom) : 0;\n    var increment = prevPlacement ? prevPlacement.symbolFadeChange(now) : 1;\n    var prevOpacities = prevPlacement ? prevPlacement.opacities : {};\n    var prevOffsets = prevPlacement ? prevPlacement.variableOffsets : {};\n    var prevOrientations = prevPlacement ? prevPlacement.placedOrientations : {};\n    for (var crossTileID in this.placements) {\n        var jointPlacement = this.placements[crossTileID];\n        var prevOpacity = prevOpacities[crossTileID];\n        if (prevOpacity) {\n            this.opacities[crossTileID] = new JointOpacityState(prevOpacity, increment, jointPlacement.text, jointPlacement.icon);\n            placementChanged = placementChanged || jointPlacement.text !== prevOpacity.text.placed || jointPlacement.icon !== prevOpacity.icon.placed;\n        } else {\n            this.opacities[crossTileID] = new JointOpacityState(null, increment, jointPlacement.text, jointPlacement.icon, jointPlacement.skipFade);\n            placementChanged = placementChanged || jointPlacement.text || jointPlacement.icon;\n        }\n    }\n    for (var crossTileID$1 in prevOpacities) {\n        var prevOpacity$1 = prevOpacities[crossTileID$1];\n        if (!this.opacities[crossTileID$1]) {\n            var jointOpacity = new JointOpacityState(prevOpacity$1, increment, false, false);\n            if (!jointOpacity.isHidden()) {\n                this.opacities[crossTileID$1] = jointOpacity;\n                placementChanged = placementChanged || prevOpacity$1.text.placed || prevOpacity$1.icon.placed;\n            }\n        }\n    }\n    for (var crossTileID$2 in prevOffsets) {\n        if (!this.variableOffsets[crossTileID$2] && this.opacities[crossTileID$2] && !this.opacities[crossTileID$2].isHidden()) {\n            this.variableOffsets[crossTileID$2] = prevOffsets[crossTileID$2];\n        }\n    }\n    for (var crossTileID$3 in prevOrientations) {\n        if (!this.placedOrientations[crossTileID$3] && this.opacities[crossTileID$3] && !this.opacities[crossTileID$3].isHidden()) {\n            this.placedOrientations[crossTileID$3] = prevOrientations[crossTileID$3];\n        }\n    }\n    if (placementChanged) {\n        this.lastPlacementChangeTime = now;\n    } else if (typeof this.lastPlacementChangeTime !== 'number') {\n        this.lastPlacementChangeTime = prevPlacement ? prevPlacement.lastPlacementChangeTime : now;\n    }\n};\nPlacement.prototype.updateLayerOpacities = function updateLayerOpacities(styleLayer, tiles) {\n    var seenCrossTileIDs = {};\n    for (var i = 0, list = tiles; i < list.length; i += 1) {\n        var tile = list[i];\n        var symbolBucket = tile.getBucket(styleLayer);\n        if (symbolBucket && tile.latestFeatureIndex && styleLayer.id === symbolBucket.layerIds[0]) {\n            this.updateBucketOpacities(symbolBucket, seenCrossTileIDs, tile.collisionBoxArray);\n        }\n    }\n};\nPlacement.prototype.updateBucketOpacities = function updateBucketOpacities(bucket, seenCrossTileIDs, collisionBoxArray) {\n    var this$1 = this;\n    if (bucket.hasTextData()) {\n        bucket.text.opacityVertexArray.clear();\n    }\n    if (bucket.hasIconData()) {\n        bucket.icon.opacityVertexArray.clear();\n    }\n    if (bucket.hasIconCollisionBoxData()) {\n        bucket.iconCollisionBox.collisionVertexArray.clear();\n    }\n    if (bucket.hasTextCollisionBoxData()) {\n        bucket.textCollisionBox.collisionVertexArray.clear();\n    }\n    var layout = bucket.layers[0].layout;\n    var duplicateOpacityState = new JointOpacityState(null, 0, false, false, true);\n    var textAllowOverlap = layout.get('text-allow-overlap');\n    var iconAllowOverlap = layout.get('icon-allow-overlap');\n    var variablePlacement = layout.get('text-variable-anchor');\n    var rotateWithMap = layout.get('text-rotation-alignment') === 'map';\n    var pitchWithMap = layout.get('text-pitch-alignment') === 'map';\n    var hasIconTextFit = layout.get('icon-text-fit') !== 'none';\n    var defaultOpacityState = new JointOpacityState(null, 0, textAllowOverlap && (iconAllowOverlap || !bucket.hasIconData() || layout.get('icon-optional')), iconAllowOverlap && (textAllowOverlap || !bucket.hasTextData() || layout.get('text-optional')), true);\n    if (!bucket.collisionArrays && collisionBoxArray && (bucket.hasIconCollisionBoxData() || bucket.hasTextCollisionBoxData())) {\n        bucket.deserializeCollisionBoxes(collisionBoxArray);\n    }\n    var addOpacities = function (iconOrText, numVertices, opacity) {\n        for (var i = 0; i < numVertices / 4; i++) {\n            iconOrText.opacityVertexArray.emplaceBack(opacity);\n        }\n    };\n    var loop = function (s) {\n        var symbolInstance = bucket.symbolInstances.get(s);\n        var numHorizontalGlyphVertices = symbolInstance.numHorizontalGlyphVertices;\n        var numVerticalGlyphVertices = symbolInstance.numVerticalGlyphVertices;\n        var crossTileID = symbolInstance.crossTileID;\n        var isDuplicate = seenCrossTileIDs[crossTileID];\n        var opacityState = this$1.opacities[crossTileID];\n        if (isDuplicate) {\n            opacityState = duplicateOpacityState;\n        } else if (!opacityState) {\n            opacityState = defaultOpacityState;\n            this$1.opacities[crossTileID] = opacityState;\n        }\n        seenCrossTileIDs[crossTileID] = true;\n        var hasText = numHorizontalGlyphVertices > 0 || numVerticalGlyphVertices > 0;\n        var hasIcon = symbolInstance.numIconVertices > 0;\n        var placedOrientation = this$1.placedOrientations[symbolInstance.crossTileID];\n        var horizontalHidden = placedOrientation === performance.WritingMode.vertical;\n        var verticalHidden = placedOrientation === performance.WritingMode.horizontal || placedOrientation === performance.WritingMode.horizontalOnly;\n        if (hasText) {\n            var packedOpacity = packOpacity(opacityState.text);\n            var horizontalOpacity = horizontalHidden ? PACKED_HIDDEN_OPACITY : packedOpacity;\n            addOpacities(bucket.text, numHorizontalGlyphVertices, horizontalOpacity);\n            var verticalOpacity = verticalHidden ? PACKED_HIDDEN_OPACITY : packedOpacity;\n            addOpacities(bucket.text, numVerticalGlyphVertices, verticalOpacity);\n            var symbolHidden = opacityState.text.isHidden();\n            [\n                symbolInstance.rightJustifiedTextSymbolIndex,\n                symbolInstance.centerJustifiedTextSymbolIndex,\n                symbolInstance.leftJustifiedTextSymbolIndex\n            ].forEach(function (index) {\n                if (index >= 0) {\n                    bucket.text.placedSymbolArray.get(index).hidden = symbolHidden || horizontalHidden ? 1 : 0;\n                }\n            });\n            if (symbolInstance.verticalPlacedTextSymbolIndex >= 0) {\n                bucket.text.placedSymbolArray.get(symbolInstance.verticalPlacedTextSymbolIndex).hidden = symbolHidden || verticalHidden ? 1 : 0;\n            }\n            var prevOffset = this$1.variableOffsets[symbolInstance.crossTileID];\n            if (prevOffset) {\n                this$1.markUsedJustification(bucket, prevOffset.anchor, symbolInstance, placedOrientation);\n            }\n            var prevOrientation = this$1.placedOrientations[symbolInstance.crossTileID];\n            if (prevOrientation) {\n                this$1.markUsedJustification(bucket, 'left', symbolInstance, prevOrientation);\n                this$1.markUsedOrientation(bucket, prevOrientation, symbolInstance);\n            }\n        }\n        if (hasIcon) {\n            var packedOpacity$1 = packOpacity(opacityState.icon);\n            var useHorizontal = !(hasIconTextFit && symbolInstance.verticalPlacedIconSymbolIndex && horizontalHidden);\n            if (symbolInstance.placedIconSymbolIndex >= 0) {\n                var horizontalOpacity$1 = useHorizontal ? packedOpacity$1 : PACKED_HIDDEN_OPACITY;\n                addOpacities(bucket.icon, symbolInstance.numIconVertices, horizontalOpacity$1);\n                bucket.icon.placedSymbolArray.get(symbolInstance.placedIconSymbolIndex).hidden = opacityState.icon.isHidden();\n            }\n            if (symbolInstance.verticalPlacedIconSymbolIndex >= 0) {\n                var verticalOpacity$1 = !useHorizontal ? packedOpacity$1 : PACKED_HIDDEN_OPACITY;\n                addOpacities(bucket.icon, symbolInstance.numVerticalIconVertices, verticalOpacity$1);\n                bucket.icon.placedSymbolArray.get(symbolInstance.verticalPlacedIconSymbolIndex).hidden = opacityState.icon.isHidden();\n            }\n        }\n        if (bucket.hasIconCollisionBoxData() || bucket.hasTextCollisionBoxData()) {\n            var collisionArrays = bucket.collisionArrays[s];\n            if (collisionArrays) {\n                var shift = new performance.Point(0, 0);\n                if (collisionArrays.textBox || collisionArrays.verticalTextBox) {\n                    var used = true;\n                    if (variablePlacement) {\n                        var variableOffset = this$1.variableOffsets[crossTileID];\n                        if (variableOffset) {\n                            shift = calculateVariableLayoutShift(variableOffset.anchor, variableOffset.width, variableOffset.height, variableOffset.textOffset, variableOffset.textBoxScale);\n                            if (rotateWithMap) {\n                                shift._rotate(pitchWithMap ? this$1.transform.angle : -this$1.transform.angle);\n                            }\n                        } else {\n                            used = false;\n                        }\n                    }\n                    if (collisionArrays.textBox) {\n                        updateCollisionVertices(bucket.textCollisionBox.collisionVertexArray, opacityState.text.placed, !used || horizontalHidden, shift.x, shift.y);\n                    }\n                    if (collisionArrays.verticalTextBox) {\n                        updateCollisionVertices(bucket.textCollisionBox.collisionVertexArray, opacityState.text.placed, !used || verticalHidden, shift.x, shift.y);\n                    }\n                }\n                var verticalIconUsed = Boolean(!verticalHidden && collisionArrays.verticalIconBox);\n                if (collisionArrays.iconBox) {\n                    updateCollisionVertices(bucket.iconCollisionBox.collisionVertexArray, opacityState.icon.placed, verticalIconUsed, hasIconTextFit ? shift.x : 0, hasIconTextFit ? shift.y : 0);\n                }\n                if (collisionArrays.verticalIconBox) {\n                    updateCollisionVertices(bucket.iconCollisionBox.collisionVertexArray, opacityState.icon.placed, !verticalIconUsed, hasIconTextFit ? shift.x : 0, hasIconTextFit ? shift.y : 0);\n                }\n            }\n        }\n    };\n    for (var s = 0; s < bucket.symbolInstances.length; s++)\n        loop(s);\n    bucket.sortFeatures(this.transform.angle);\n    if (this.retainedQueryData[bucket.bucketInstanceId]) {\n        this.retainedQueryData[bucket.bucketInstanceId].featureSortOrder = bucket.featureSortOrder;\n    }\n    if (bucket.hasTextData() && bucket.text.opacityVertexBuffer) {\n        bucket.text.opacityVertexBuffer.updateData(bucket.text.opacityVertexArray);\n    }\n    if (bucket.hasIconData() && bucket.icon.opacityVertexBuffer) {\n        bucket.icon.opacityVertexBuffer.updateData(bucket.icon.opacityVertexArray);\n    }\n    if (bucket.hasIconCollisionBoxData() && bucket.iconCollisionBox.collisionVertexBuffer) {\n        bucket.iconCollisionBox.collisionVertexBuffer.updateData(bucket.iconCollisionBox.collisionVertexArray);\n    }\n    if (bucket.hasTextCollisionBoxData() && bucket.textCollisionBox.collisionVertexBuffer) {\n        bucket.textCollisionBox.collisionVertexBuffer.updateData(bucket.textCollisionBox.collisionVertexArray);\n    }\n    if (bucket.bucketInstanceId in this.collisionCircleArrays) {\n        var instance = this.collisionCircleArrays[bucket.bucketInstanceId];\n        bucket.placementInvProjMatrix = instance.invProjMatrix;\n        bucket.placementViewportMatrix = instance.viewportMatrix;\n        bucket.collisionCircleArray = instance.circles;\n        delete this.collisionCircleArrays[bucket.bucketInstanceId];\n    }\n};\nPlacement.prototype.symbolFadeChange = function symbolFadeChange(now) {\n    return this.fadeDuration === 0 ? 1 : (now - this.commitTime) / this.fadeDuration + this.prevZoomAdjustment;\n};\nPlacement.prototype.zoomAdjustment = function zoomAdjustment(zoom) {\n    return Math.max(0, (this.transform.zoom - zoom) / 1.5);\n};\nPlacement.prototype.hasTransitions = function hasTransitions(now) {\n    return this.stale || now - this.lastPlacementChangeTime < this.fadeDuration;\n};\nPlacement.prototype.stillRecent = function stillRecent(now, zoom) {\n    var durationAdjustment = this.zoomAtLastRecencyCheck === zoom ? 1 - this.zoomAdjustment(zoom) : 1;\n    this.zoomAtLastRecencyCheck = zoom;\n    return this.commitTime + this.fadeDuration * durationAdjustment > now;\n};\nPlacement.prototype.setStale = function setStale() {\n    this.stale = true;\n};\nfunction updateCollisionVertices(collisionVertexArray, placed, notUsed, shiftX, shiftY) {\n    collisionVertexArray.emplaceBack(placed ? 1 : 0, notUsed ? 1 : 0, shiftX || 0, shiftY || 0);\n    collisionVertexArray.emplaceBack(placed ? 1 : 0, notUsed ? 1 : 0, shiftX || 0, shiftY || 0);\n    collisionVertexArray.emplaceBack(placed ? 1 : 0, notUsed ? 1 : 0, shiftX || 0, shiftY || 0);\n    collisionVertexArray.emplaceBack(placed ? 1 : 0, notUsed ? 1 : 0, shiftX || 0, shiftY || 0);\n}\nvar shift25 = Math.pow(2, 25);\nvar shift24 = Math.pow(2, 24);\nvar shift17 = Math.pow(2, 17);\nvar shift16 = Math.pow(2, 16);\nvar shift9 = Math.pow(2, 9);\nvar shift8 = Math.pow(2, 8);\nvar shift1 = Math.pow(2, 1);\nfunction packOpacity(opacityState) {\n    if (opacityState.opacity === 0 && !opacityState.placed) {\n        return 0;\n    } else if (opacityState.opacity === 1 && opacityState.placed) {\n        return 4294967295;\n    }\n    var targetBit = opacityState.placed ? 1 : 0;\n    var opacityBits = Math.floor(opacityState.opacity * 127);\n    return opacityBits * shift25 + targetBit * shift24 + opacityBits * shift17 + targetBit * shift16 + opacityBits * shift9 + targetBit * shift8 + opacityBits * shift1 + targetBit;\n}\nvar PACKED_HIDDEN_OPACITY = 0;\n\nvar LayerPlacement = function LayerPlacement(styleLayer) {\n    this._sortAcrossTiles = styleLayer.layout.get('symbol-z-order') !== 'viewport-y' && styleLayer.layout.get('symbol-sort-key').constantOr(1) !== undefined;\n    this._currentTileIndex = 0;\n    this._currentPartIndex = 0;\n    this._seenCrossTileIDs = {};\n    this._bucketParts = [];\n};\nLayerPlacement.prototype.continuePlacement = function continuePlacement(tiles, placement, showCollisionBoxes, styleLayer, shouldPausePlacement) {\n    var bucketParts = this._bucketParts;\n    while (this._currentTileIndex < tiles.length) {\n        var tile = tiles[this._currentTileIndex];\n        placement.getBucketParts(bucketParts, styleLayer, tile, this._sortAcrossTiles);\n        this._currentTileIndex++;\n        if (shouldPausePlacement()) {\n            return true;\n        }\n    }\n    if (this._sortAcrossTiles) {\n        this._sortAcrossTiles = false;\n        bucketParts.sort(function (a, b) {\n            return a.sortKey - b.sortKey;\n        });\n    }\n    while (this._currentPartIndex < bucketParts.length) {\n        var bucketPart = bucketParts[this._currentPartIndex];\n        placement.placeLayerBucketPart(bucketPart, this._seenCrossTileIDs, showCollisionBoxes);\n        this._currentPartIndex++;\n        if (shouldPausePlacement()) {\n            return true;\n        }\n    }\n    return false;\n};\nvar PauseablePlacement = function PauseablePlacement(transform, order, forceFullPlacement, showCollisionBoxes, fadeDuration, crossSourceCollisions, prevPlacement) {\n    this.placement = new Placement(transform, fadeDuration, crossSourceCollisions, prevPlacement);\n    this._currentPlacementIndex = order.length - 1;\n    this._forceFullPlacement = forceFullPlacement;\n    this._showCollisionBoxes = showCollisionBoxes;\n    this._done = false;\n};\nPauseablePlacement.prototype.isDone = function isDone() {\n    return this._done;\n};\nPauseablePlacement.prototype.continuePlacement = function continuePlacement(order, layers, layerTiles) {\n    var this$1 = this;\n    var startTime = performance.browser.now();\n    var shouldPausePlacement = function () {\n        var elapsedTime = performance.browser.now() - startTime;\n        return this$1._forceFullPlacement ? false : elapsedTime > 2;\n    };\n    while (this._currentPlacementIndex >= 0) {\n        var layerId = order[this._currentPlacementIndex];\n        var layer = layers[layerId];\n        var placementZoom = this.placement.collisionIndex.transform.zoom;\n        if (layer.type === 'symbol' && (!layer.minzoom || layer.minzoom <= placementZoom) && (!layer.maxzoom || layer.maxzoom > placementZoom)) {\n            if (!this._inProgressLayer) {\n                this._inProgressLayer = new LayerPlacement(layer);\n            }\n            var pausePlacement = this._inProgressLayer.continuePlacement(layerTiles[layer.source], this.placement, this._showCollisionBoxes, layer, shouldPausePlacement);\n            if (pausePlacement) {\n                return;\n            }\n            delete this._inProgressLayer;\n        }\n        this._currentPlacementIndex--;\n    }\n    this._done = true;\n};\nPauseablePlacement.prototype.commit = function commit(now) {\n    this.placement.commit(now);\n    return this.placement;\n};\n\nvar roundingFactor = 512 / performance.EXTENT / 2;\nvar TileLayerIndex = function TileLayerIndex(tileID, symbolInstances, bucketInstanceId) {\n    this.tileID = tileID;\n    this.indexedSymbolInstances = {};\n    this.bucketInstanceId = bucketInstanceId;\n    for (var i = 0; i < symbolInstances.length; i++) {\n        var symbolInstance = symbolInstances.get(i);\n        var key = symbolInstance.key;\n        if (!this.indexedSymbolInstances[key]) {\n            this.indexedSymbolInstances[key] = [];\n        }\n        this.indexedSymbolInstances[key].push({\n            crossTileID: symbolInstance.crossTileID,\n            coord: this.getScaledCoordinates(symbolInstance, tileID)\n        });\n    }\n};\nTileLayerIndex.prototype.getScaledCoordinates = function getScaledCoordinates(symbolInstance, childTileID) {\n    var zDifference = childTileID.canonical.z - this.tileID.canonical.z;\n    var scale = roundingFactor / Math.pow(2, zDifference);\n    return {\n        x: Math.floor((childTileID.canonical.x * performance.EXTENT + symbolInstance.anchorX) * scale),\n        y: Math.floor((childTileID.canonical.y * performance.EXTENT + symbolInstance.anchorY) * scale)\n    };\n};\nTileLayerIndex.prototype.findMatches = function findMatches(symbolInstances, newTileID, zoomCrossTileIDs) {\n    var tolerance = this.tileID.canonical.z < newTileID.canonical.z ? 1 : Math.pow(2, this.tileID.canonical.z - newTileID.canonical.z);\n    for (var i = 0; i < symbolInstances.length; i++) {\n        var symbolInstance = symbolInstances.get(i);\n        if (symbolInstance.crossTileID) {\n            continue;\n        }\n        var indexedInstances = this.indexedSymbolInstances[symbolInstance.key];\n        if (!indexedInstances) {\n            continue;\n        }\n        var scaledSymbolCoord = this.getScaledCoordinates(symbolInstance, newTileID);\n        for (var i$1 = 0, list = indexedInstances; i$1 < list.length; i$1 += 1) {\n            var thisTileSymbol = list[i$1];\n            if (Math.abs(thisTileSymbol.coord.x - scaledSymbolCoord.x) <= tolerance && Math.abs(thisTileSymbol.coord.y - scaledSymbolCoord.y) <= tolerance && !zoomCrossTileIDs[thisTileSymbol.crossTileID]) {\n                zoomCrossTileIDs[thisTileSymbol.crossTileID] = true;\n                symbolInstance.crossTileID = thisTileSymbol.crossTileID;\n                break;\n            }\n        }\n    }\n};\nvar CrossTileIDs = function CrossTileIDs() {\n    this.maxCrossTileID = 0;\n};\nCrossTileIDs.prototype.generate = function generate() {\n    return ++this.maxCrossTileID;\n};\nvar CrossTileSymbolLayerIndex = function CrossTileSymbolLayerIndex() {\n    this.indexes = {};\n    this.usedCrossTileIDs = {};\n    this.lng = 0;\n};\nCrossTileSymbolLayerIndex.prototype.handleWrapJump = function handleWrapJump(lng) {\n    var wrapDelta = Math.round((lng - this.lng) / 360);\n    if (wrapDelta !== 0) {\n        for (var zoom in this.indexes) {\n            var zoomIndexes = this.indexes[zoom];\n            var newZoomIndex = {};\n            for (var key in zoomIndexes) {\n                var index = zoomIndexes[key];\n                index.tileID = index.tileID.unwrapTo(index.tileID.wrap + wrapDelta);\n                newZoomIndex[index.tileID.key] = index;\n            }\n            this.indexes[zoom] = newZoomIndex;\n        }\n    }\n    this.lng = lng;\n};\nCrossTileSymbolLayerIndex.prototype.addBucket = function addBucket(tileID, bucket, crossTileIDs) {\n    if (this.indexes[tileID.overscaledZ] && this.indexes[tileID.overscaledZ][tileID.key]) {\n        if (this.indexes[tileID.overscaledZ][tileID.key].bucketInstanceId === bucket.bucketInstanceId) {\n            return false;\n        } else {\n            this.removeBucketCrossTileIDs(tileID.overscaledZ, this.indexes[tileID.overscaledZ][tileID.key]);\n        }\n    }\n    for (var i = 0; i < bucket.symbolInstances.length; i++) {\n        var symbolInstance = bucket.symbolInstances.get(i);\n        symbolInstance.crossTileID = 0;\n    }\n    if (!this.usedCrossTileIDs[tileID.overscaledZ]) {\n        this.usedCrossTileIDs[tileID.overscaledZ] = {};\n    }\n    var zoomCrossTileIDs = this.usedCrossTileIDs[tileID.overscaledZ];\n    for (var zoom in this.indexes) {\n        var zoomIndexes = this.indexes[zoom];\n        if (Number(zoom) > tileID.overscaledZ) {\n            for (var id in zoomIndexes) {\n                var childIndex = zoomIndexes[id];\n                if (childIndex.tileID.isChildOf(tileID)) {\n                    childIndex.findMatches(bucket.symbolInstances, tileID, zoomCrossTileIDs);\n                }\n            }\n        } else {\n            var parentCoord = tileID.scaledTo(Number(zoom));\n            var parentIndex = zoomIndexes[parentCoord.key];\n            if (parentIndex) {\n                parentIndex.findMatches(bucket.symbolInstances, tileID, zoomCrossTileIDs);\n            }\n        }\n    }\n    for (var i$1 = 0; i$1 < bucket.symbolInstances.length; i$1++) {\n        var symbolInstance$1 = bucket.symbolInstances.get(i$1);\n        if (!symbolInstance$1.crossTileID) {\n            symbolInstance$1.crossTileID = crossTileIDs.generate();\n            zoomCrossTileIDs[symbolInstance$1.crossTileID] = true;\n        }\n    }\n    if (this.indexes[tileID.overscaledZ] === undefined) {\n        this.indexes[tileID.overscaledZ] = {};\n    }\n    this.indexes[tileID.overscaledZ][tileID.key] = new TileLayerIndex(tileID, bucket.symbolInstances, bucket.bucketInstanceId);\n    return true;\n};\nCrossTileSymbolLayerIndex.prototype.removeBucketCrossTileIDs = function removeBucketCrossTileIDs(zoom, removedBucket) {\n    for (var key in removedBucket.indexedSymbolInstances) {\n        for (var i = 0, list = removedBucket.indexedSymbolInstances[key]; i < list.length; i += 1) {\n            var symbolInstance = list[i];\n            delete this.usedCrossTileIDs[zoom][symbolInstance.crossTileID];\n        }\n    }\n};\nCrossTileSymbolLayerIndex.prototype.removeStaleBuckets = function removeStaleBuckets(currentIDs) {\n    var tilesChanged = false;\n    for (var z in this.indexes) {\n        var zoomIndexes = this.indexes[z];\n        for (var tileKey in zoomIndexes) {\n            if (!currentIDs[zoomIndexes[tileKey].bucketInstanceId]) {\n                this.removeBucketCrossTileIDs(z, zoomIndexes[tileKey]);\n                delete zoomIndexes[tileKey];\n                tilesChanged = true;\n            }\n        }\n    }\n    return tilesChanged;\n};\nvar CrossTileSymbolIndex = function CrossTileSymbolIndex() {\n    this.layerIndexes = {};\n    this.crossTileIDs = new CrossTileIDs();\n    this.maxBucketInstanceId = 0;\n    this.bucketsInCurrentPlacement = {};\n};\nCrossTileSymbolIndex.prototype.addLayer = function addLayer(styleLayer, tiles, lng) {\n    var layerIndex = this.layerIndexes[styleLayer.id];\n    if (layerIndex === undefined) {\n        layerIndex = this.layerIndexes[styleLayer.id] = new CrossTileSymbolLayerIndex();\n    }\n    var symbolBucketsChanged = false;\n    var currentBucketIDs = {};\n    layerIndex.handleWrapJump(lng);\n    for (var i = 0, list = tiles; i < list.length; i += 1) {\n        var tile = list[i];\n        var symbolBucket = tile.getBucket(styleLayer);\n        if (!symbolBucket || styleLayer.id !== symbolBucket.layerIds[0]) {\n            continue;\n        }\n        if (!symbolBucket.bucketInstanceId) {\n            symbolBucket.bucketInstanceId = ++this.maxBucketInstanceId;\n        }\n        if (layerIndex.addBucket(tile.tileID, symbolBucket, this.crossTileIDs)) {\n            symbolBucketsChanged = true;\n        }\n        currentBucketIDs[symbolBucket.bucketInstanceId] = true;\n    }\n    if (layerIndex.removeStaleBuckets(currentBucketIDs)) {\n        symbolBucketsChanged = true;\n    }\n    return symbolBucketsChanged;\n};\nCrossTileSymbolIndex.prototype.pruneUnusedLayers = function pruneUnusedLayers(usedLayers) {\n    var usedLayerMap = {};\n    usedLayers.forEach(function (usedLayer) {\n        usedLayerMap[usedLayer] = true;\n    });\n    for (var layerId in this.layerIndexes) {\n        if (!usedLayerMap[layerId]) {\n            delete this.layerIndexes[layerId];\n        }\n    }\n};\n\nvar emitValidationErrors = function (evented, errors) {\n    return performance.emitValidationErrors(evented, errors && errors.filter(function (error) {\n        return error.identifier !== 'source.canvas';\n    }));\n};\nvar supportedDiffOperations = performance.pick(operations, [\n    'addLayer',\n    'removeLayer',\n    'setPaintProperty',\n    'setLayoutProperty',\n    'setFilter',\n    'addSource',\n    'removeSource',\n    'setLayerZoomRange',\n    'setLight',\n    'setTransition',\n    'setGeoJSONSourceData'\n]);\nvar ignoredDiffOperations = performance.pick(operations, [\n    'setCenter',\n    'setZoom',\n    'setBearing',\n    'setPitch'\n]);\nvar empty = emptyStyle();\nvar Style = function (Evented) {\n    function Style(map, options) {\n        var this$1 = this;\n        if (options === void 0)\n            options = {};\n        Evented.call(this);\n        this.map = map;\n        this.dispatcher = new Dispatcher(getGlobalWorkerPool(), this);\n        this.imageManager = new ImageManager();\n        this.imageManager.setEventedParent(this);\n        this.glyphManager = new GlyphManager(map._requestManager, options.localIdeographFontFamily);\n        this.lineAtlas = new LineAtlas(256, 512);\n        this.crossTileSymbolIndex = new CrossTileSymbolIndex();\n        this._layers = {};\n        this._serializedLayers = {};\n        this._order = [];\n        this.sourceCaches = {};\n        this.zoomHistory = new performance.ZoomHistory();\n        this._loaded = false;\n        this._availableImages = [];\n        this._resetUpdates();\n        this.dispatcher.broadcast('setReferrer', performance.getReferrer());\n        var self = this;\n        this._rtlTextPluginCallback = Style.registerForPluginStateChange(function (event) {\n            var state = {\n                pluginStatus: event.pluginStatus,\n                pluginURL: event.pluginURL\n            };\n            self.dispatcher.broadcast('syncRTLPluginState', state, function (err, results) {\n                performance.triggerPluginCompletionEvent(err);\n                if (results) {\n                    var allComplete = results.every(function (elem) {\n                        return elem;\n                    });\n                    if (allComplete) {\n                        for (var id in self.sourceCaches) {\n                            self.sourceCaches[id].reload();\n                        }\n                    }\n                }\n            });\n        });\n        this.on('data', function (event) {\n            if (event.dataType !== 'source' || event.sourceDataType !== 'metadata') {\n                return;\n            }\n            var sourceCache = this$1.sourceCaches[event.sourceId];\n            if (!sourceCache) {\n                return;\n            }\n            var source = sourceCache.getSource();\n            if (!source || !source.vectorLayerIds) {\n                return;\n            }\n            for (var layerId in this$1._layers) {\n                var layer = this$1._layers[layerId];\n                if (layer.source === source.id) {\n                    this$1._validateLayer(layer);\n                }\n            }\n        });\n    }\n    if (Evented)\n        Style.__proto__ = Evented;\n    Style.prototype = Object.create(Evented && Evented.prototype);\n    Style.prototype.constructor = Style;\n    Style.prototype.loadURL = function loadURL(url, options) {\n        var this$1 = this;\n        if (options === void 0)\n            options = {};\n        this.fire(new performance.Event('dataloading', { dataType: 'style' }));\n        var validate = typeof options.validate === 'boolean' ? options.validate : !performance.isMapboxURL(url);\n        url = this.map._requestManager.normalizeStyleURL(url, options.accessToken);\n        var request = this.map._requestManager.transformRequest(url, performance.ResourceType.Style);\n        this._request = performance.getJSON(request, function (error, json) {\n            this$1._request = null;\n            if (error) {\n                this$1.fire(new performance.ErrorEvent(error));\n            } else if (json) {\n                this$1._load(json, validate);\n            }\n        });\n    };\n    Style.prototype.loadJSON = function loadJSON(json, options) {\n        var this$1 = this;\n        if (options === void 0)\n            options = {};\n        this.fire(new performance.Event('dataloading', { dataType: 'style' }));\n        this._request = performance.browser.frame(function () {\n            this$1._request = null;\n            this$1._load(json, options.validate !== false);\n        });\n    };\n    Style.prototype.loadEmpty = function loadEmpty() {\n        this.fire(new performance.Event('dataloading', { dataType: 'style' }));\n        this._load(empty, false);\n    };\n    Style.prototype._load = function _load(json, validate) {\n        if (validate && emitValidationErrors(this, performance.validateStyle(json))) {\n            return;\n        }\n        this._loaded = true;\n        this.stylesheet = json;\n        for (var id in json.sources) {\n            this.addSource(id, json.sources[id], { validate: false });\n        }\n        if (json.sprite) {\n            this._loadSprite(json.sprite);\n        } else {\n            this.imageManager.setLoaded(true);\n        }\n        this.glyphManager.setURL(json.glyphs);\n        var layers = derefLayers(this.stylesheet.layers);\n        this._order = layers.map(function (layer) {\n            return layer.id;\n        });\n        this._layers = {};\n        this._serializedLayers = {};\n        for (var i = 0, list = layers; i < list.length; i += 1) {\n            var layer = list[i];\n            layer = performance.createStyleLayer(layer);\n            layer.setEventedParent(this, { layer: { id: layer.id } });\n            this._layers[layer.id] = layer;\n            this._serializedLayers[layer.id] = layer.serialize();\n        }\n        this.dispatcher.broadcast('setLayers', this._serializeLayers(this._order));\n        this.light = new Light(this.stylesheet.light);\n        this.fire(new performance.Event('data', { dataType: 'style' }));\n        this.fire(new performance.Event('style.load'));\n    };\n    Style.prototype._loadSprite = function _loadSprite(url) {\n        var this$1 = this;\n        this._spriteRequest = loadSprite(url, this.map._requestManager, function (err, images) {\n            this$1._spriteRequest = null;\n            if (err) {\n                this$1.fire(new performance.ErrorEvent(err));\n            } else if (images) {\n                for (var id in images) {\n                    this$1.imageManager.addImage(id, images[id]);\n                }\n            }\n            this$1.imageManager.setLoaded(true);\n            this$1._availableImages = this$1.imageManager.listImages();\n            this$1.dispatcher.broadcast('setImages', this$1._availableImages);\n            this$1.fire(new performance.Event('data', { dataType: 'style' }));\n        });\n    };\n    Style.prototype._validateLayer = function _validateLayer(layer) {\n        var sourceCache = this.sourceCaches[layer.source];\n        if (!sourceCache) {\n            return;\n        }\n        var sourceLayer = layer.sourceLayer;\n        if (!sourceLayer) {\n            return;\n        }\n        var source = sourceCache.getSource();\n        if (source.type === 'geojson' || source.vectorLayerIds && source.vectorLayerIds.indexOf(sourceLayer) === -1) {\n            this.fire(new performance.ErrorEvent(new Error('Source layer \"' + sourceLayer + '\" ' + 'does not exist on source \"' + source.id + '\" ' + 'as specified by style layer \"' + layer.id + '\"')));\n        }\n    };\n    Style.prototype.loaded = function loaded() {\n        if (!this._loaded) {\n            return false;\n        }\n        if (Object.keys(this._updatedSources).length) {\n            return false;\n        }\n        for (var id in this.sourceCaches) {\n            if (!this.sourceCaches[id].loaded()) {\n                return false;\n            }\n        }\n        if (!this.imageManager.isLoaded()) {\n            return false;\n        }\n        return true;\n    };\n    Style.prototype._serializeLayers = function _serializeLayers(ids) {\n        var serializedLayers = [];\n        for (var i = 0, list = ids; i < list.length; i += 1) {\n            var id = list[i];\n            var layer = this._layers[id];\n            if (layer.type !== 'custom') {\n                serializedLayers.push(layer.serialize());\n            }\n        }\n        return serializedLayers;\n    };\n    Style.prototype.hasTransitions = function hasTransitions() {\n        if (this.light && this.light.hasTransition()) {\n            return true;\n        }\n        for (var id in this.sourceCaches) {\n            if (this.sourceCaches[id].hasTransition()) {\n                return true;\n            }\n        }\n        for (var id$1 in this._layers) {\n            if (this._layers[id$1].hasTransition()) {\n                return true;\n            }\n        }\n        return false;\n    };\n    Style.prototype._checkLoaded = function _checkLoaded() {\n        if (!this._loaded) {\n            throw new Error('Style is not done loading');\n        }\n    };\n    Style.prototype.update = function update(parameters) {\n        if (!this._loaded) {\n            return;\n        }\n        var changed = this._changed;\n        if (this._changed) {\n            var updatedIds = Object.keys(this._updatedLayers);\n            var removedIds = Object.keys(this._removedLayers);\n            if (updatedIds.length || removedIds.length) {\n                this._updateWorkerLayers(updatedIds, removedIds);\n            }\n            for (var id in this._updatedSources) {\n                var action = this._updatedSources[id];\n                if (action === 'reload') {\n                    this._reloadSource(id);\n                } else if (action === 'clear') {\n                    this._clearSource(id);\n                }\n            }\n            this._updateTilesForChangedImages();\n            for (var id$1 in this._updatedPaintProps) {\n                this._layers[id$1].updateTransitions(parameters);\n            }\n            this.light.updateTransitions(parameters);\n            this._resetUpdates();\n        }\n        for (var sourceId in this.sourceCaches) {\n            this.sourceCaches[sourceId].used = false;\n        }\n        for (var i = 0, list = this._order; i < list.length; i += 1) {\n            var layerId = list[i];\n            var layer = this._layers[layerId];\n            layer.recalculate(parameters, this._availableImages);\n            if (!layer.isHidden(parameters.zoom) && layer.source) {\n                this.sourceCaches[layer.source].used = true;\n            }\n        }\n        this.light.recalculate(parameters);\n        this.z = parameters.zoom;\n        if (changed) {\n            this.fire(new performance.Event('data', { dataType: 'style' }));\n        }\n    };\n    Style.prototype._updateTilesForChangedImages = function _updateTilesForChangedImages() {\n        var changedImages = Object.keys(this._changedImages);\n        if (changedImages.length) {\n            for (var name in this.sourceCaches) {\n                this.sourceCaches[name].reloadTilesForDependencies([\n                    'icons',\n                    'patterns'\n                ], changedImages);\n            }\n            this._changedImages = {};\n        }\n    };\n    Style.prototype._updateWorkerLayers = function _updateWorkerLayers(updatedIds, removedIds) {\n        this.dispatcher.broadcast('updateLayers', {\n            layers: this._serializeLayers(updatedIds),\n            removedIds: removedIds\n        });\n    };\n    Style.prototype._resetUpdates = function _resetUpdates() {\n        this._changed = false;\n        this._updatedLayers = {};\n        this._removedLayers = {};\n        this._updatedSources = {};\n        this._updatedPaintProps = {};\n        this._changedImages = {};\n    };\n    Style.prototype.setState = function setState(nextState) {\n        var this$1 = this;\n        this._checkLoaded();\n        if (emitValidationErrors(this, performance.validateStyle(nextState))) {\n            return false;\n        }\n        nextState = performance.clone$1(nextState);\n        nextState.layers = derefLayers(nextState.layers);\n        var changes = diffStyles(this.serialize(), nextState).filter(function (op) {\n            return !(op.command in ignoredDiffOperations);\n        });\n        if (changes.length === 0) {\n            return false;\n        }\n        var unimplementedOps = changes.filter(function (op) {\n            return !(op.command in supportedDiffOperations);\n        });\n        if (unimplementedOps.length > 0) {\n            throw new Error('Unimplemented: ' + unimplementedOps.map(function (op) {\n                return op.command;\n            }).join(', ') + '.');\n        }\n        changes.forEach(function (op) {\n            if (op.command === 'setTransition') {\n                return;\n            }\n            this$1[op.command].apply(this$1, op.args);\n        });\n        this.stylesheet = nextState;\n        return true;\n    };\n    Style.prototype.addImage = function addImage(id, image) {\n        if (this.getImage(id)) {\n            return this.fire(new performance.ErrorEvent(new Error('An image with this name already exists.')));\n        }\n        this.imageManager.addImage(id, image);\n        this._availableImages = this.imageManager.listImages();\n        this._changedImages[id] = true;\n        this._changed = true;\n        this.fire(new performance.Event('data', { dataType: 'style' }));\n    };\n    Style.prototype.updateImage = function updateImage(id, image) {\n        this.imageManager.updateImage(id, image);\n    };\n    Style.prototype.getImage = function getImage(id) {\n        return this.imageManager.getImage(id);\n    };\n    Style.prototype.removeImage = function removeImage(id) {\n        if (!this.getImage(id)) {\n            return this.fire(new performance.ErrorEvent(new Error('No image with this name exists.')));\n        }\n        this.imageManager.removeImage(id);\n        this._availableImages = this.imageManager.listImages();\n        this._changedImages[id] = true;\n        this._changed = true;\n        this.fire(new performance.Event('data', { dataType: 'style' }));\n    };\n    Style.prototype.listImages = function listImages() {\n        this._checkLoaded();\n        return this.imageManager.listImages();\n    };\n    Style.prototype.addSource = function addSource(id, source, options) {\n        var this$1 = this;\n        if (options === void 0)\n            options = {};\n        this._checkLoaded();\n        if (this.sourceCaches[id] !== undefined) {\n            throw new Error('There is already a source with this ID');\n        }\n        if (!source.type) {\n            throw new Error('The type property must be defined, but the only the following properties were given: ' + Object.keys(source).join(', ') + '.');\n        }\n        var builtIns = [\n            'vector',\n            'raster',\n            'geojson',\n            'video',\n            'image'\n        ];\n        var shouldValidate = builtIns.indexOf(source.type) >= 0;\n        if (shouldValidate && this._validate(performance.validateStyle.source, 'sources.' + id, source, null, options)) {\n            return;\n        }\n        if (this.map && this.map._collectResourceTiming) {\n            source.collectResourceTiming = true;\n        }\n        var sourceCache = this.sourceCaches[id] = new SourceCache(id, source, this.dispatcher);\n        sourceCache.style = this;\n        sourceCache.setEventedParent(this, function () {\n            return {\n                isSourceLoaded: this$1.loaded(),\n                source: sourceCache.serialize(),\n                sourceId: id\n            };\n        });\n        sourceCache.onAdd(this.map);\n        this._changed = true;\n    };\n    Style.prototype.removeSource = function removeSource(id) {\n        this._checkLoaded();\n        if (this.sourceCaches[id] === undefined) {\n            throw new Error('There is no source with this ID');\n        }\n        for (var layerId in this._layers) {\n            if (this._layers[layerId].source === id) {\n                return this.fire(new performance.ErrorEvent(new Error('Source \"' + id + '\" cannot be removed while layer \"' + layerId + '\" is using it.')));\n            }\n        }\n        var sourceCache = this.sourceCaches[id];\n        delete this.sourceCaches[id];\n        delete this._updatedSources[id];\n        sourceCache.fire(new performance.Event('data', {\n            sourceDataType: 'metadata',\n            dataType: 'source',\n            sourceId: id\n        }));\n        sourceCache.setEventedParent(null);\n        sourceCache.clearTiles();\n        if (sourceCache.onRemove) {\n            sourceCache.onRemove(this.map);\n        }\n        this._changed = true;\n    };\n    Style.prototype.setGeoJSONSourceData = function setGeoJSONSourceData(id, data) {\n        this._checkLoaded();\n        var geojsonSource = this.sourceCaches[id].getSource();\n        geojsonSource.setData(data);\n        this._changed = true;\n    };\n    Style.prototype.getSource = function getSource(id) {\n        return this.sourceCaches[id] && this.sourceCaches[id].getSource();\n    };\n    Style.prototype.addLayer = function addLayer(layerObject, before, options) {\n        if (options === void 0)\n            options = {};\n        this._checkLoaded();\n        var id = layerObject.id;\n        if (this.getLayer(id)) {\n            this.fire(new performance.ErrorEvent(new Error('Layer with id \"' + id + '\" already exists on this map')));\n            return;\n        }\n        var layer;\n        if (layerObject.type === 'custom') {\n            if (emitValidationErrors(this, performance.validateCustomStyleLayer(layerObject))) {\n                return;\n            }\n            layer = performance.createStyleLayer(layerObject);\n        } else {\n            if (typeof layerObject.source === 'object') {\n                this.addSource(id, layerObject.source);\n                layerObject = performance.clone$1(layerObject);\n                layerObject = performance.extend(layerObject, { source: id });\n            }\n            if (this._validate(performance.validateStyle.layer, 'layers.' + id, layerObject, { arrayIndex: -1 }, options)) {\n                return;\n            }\n            layer = performance.createStyleLayer(layerObject);\n            this._validateLayer(layer);\n            layer.setEventedParent(this, { layer: { id: id } });\n            this._serializedLayers[layer.id] = layer.serialize();\n        }\n        var index = before ? this._order.indexOf(before) : this._order.length;\n        if (before && index === -1) {\n            this.fire(new performance.ErrorEvent(new Error('Layer with id \"' + before + '\" does not exist on this map.')));\n            return;\n        }\n        this._order.splice(index, 0, id);\n        this._layerOrderChanged = true;\n        this._layers[id] = layer;\n        if (this._removedLayers[id] && layer.source && layer.type !== 'custom') {\n            var removed = this._removedLayers[id];\n            delete this._removedLayers[id];\n            if (removed.type !== layer.type) {\n                this._updatedSources[layer.source] = 'clear';\n            } else {\n                this._updatedSources[layer.source] = 'reload';\n                this.sourceCaches[layer.source].pause();\n            }\n        }\n        this._updateLayer(layer);\n        if (layer.onAdd) {\n            layer.onAdd(this.map);\n        }\n    };\n    Style.prototype.moveLayer = function moveLayer(id, before) {\n        this._checkLoaded();\n        this._changed = true;\n        var layer = this._layers[id];\n        if (!layer) {\n            this.fire(new performance.ErrorEvent(new Error('The layer \\'' + id + '\\' does not exist in the map\\'s style and cannot be moved.')));\n            return;\n        }\n        if (id === before) {\n            return;\n        }\n        var index = this._order.indexOf(id);\n        this._order.splice(index, 1);\n        var newIndex = before ? this._order.indexOf(before) : this._order.length;\n        if (before && newIndex === -1) {\n            this.fire(new performance.ErrorEvent(new Error('Layer with id \"' + before + '\" does not exist on this map.')));\n            return;\n        }\n        this._order.splice(newIndex, 0, id);\n        this._layerOrderChanged = true;\n    };\n    Style.prototype.removeLayer = function removeLayer(id) {\n        this._checkLoaded();\n        var layer = this._layers[id];\n        if (!layer) {\n            this.fire(new performance.ErrorEvent(new Error('The layer \\'' + id + '\\' does not exist in the map\\'s style and cannot be removed.')));\n            return;\n        }\n        layer.setEventedParent(null);\n        var index = this._order.indexOf(id);\n        this._order.splice(index, 1);\n        this._layerOrderChanged = true;\n        this._changed = true;\n        this._removedLayers[id] = layer;\n        delete this._layers[id];\n        delete this._serializedLayers[id];\n        delete this._updatedLayers[id];\n        delete this._updatedPaintProps[id];\n        if (layer.onRemove) {\n            layer.onRemove(this.map);\n        }\n    };\n    Style.prototype.getLayer = function getLayer(id) {\n        return this._layers[id];\n    };\n    Style.prototype.hasLayer = function hasLayer(id) {\n        return id in this._layers;\n    };\n    Style.prototype.setLayerZoomRange = function setLayerZoomRange(layerId, minzoom, maxzoom) {\n        this._checkLoaded();\n        var layer = this.getLayer(layerId);\n        if (!layer) {\n            this.fire(new performance.ErrorEvent(new Error('The layer \\'' + layerId + '\\' does not exist in the map\\'s style and cannot have zoom extent.')));\n            return;\n        }\n        if (layer.minzoom === minzoom && layer.maxzoom === maxzoom) {\n            return;\n        }\n        if (minzoom != null) {\n            layer.minzoom = minzoom;\n        }\n        if (maxzoom != null) {\n            layer.maxzoom = maxzoom;\n        }\n        this._updateLayer(layer);\n    };\n    Style.prototype.setFilter = function setFilter(layerId, filter, options) {\n        if (options === void 0)\n            options = {};\n        this._checkLoaded();\n        var layer = this.getLayer(layerId);\n        if (!layer) {\n            this.fire(new performance.ErrorEvent(new Error('The layer \\'' + layerId + '\\' does not exist in the map\\'s style and cannot be filtered.')));\n            return;\n        }\n        if (performance.deepEqual(layer.filter, filter)) {\n            return;\n        }\n        if (filter === null || filter === undefined) {\n            layer.filter = undefined;\n            this._updateLayer(layer);\n            return;\n        }\n        if (this._validate(performance.validateStyle.filter, 'layers.' + layer.id + '.filter', filter, null, options)) {\n            return;\n        }\n        layer.filter = performance.clone$1(filter);\n        this._updateLayer(layer);\n    };\n    Style.prototype.getFilter = function getFilter(layer) {\n        return performance.clone$1(this.getLayer(layer).filter);\n    };\n    Style.prototype.setLayoutProperty = function setLayoutProperty(layerId, name, value, options) {\n        if (options === void 0)\n            options = {};\n        this._checkLoaded();\n        var layer = this.getLayer(layerId);\n        if (!layer) {\n            this.fire(new performance.ErrorEvent(new Error('The layer \\'' + layerId + '\\' does not exist in the map\\'s style and cannot be styled.')));\n            return;\n        }\n        if (performance.deepEqual(layer.getLayoutProperty(name), value)) {\n            return;\n        }\n        layer.setLayoutProperty(name, value, options);\n        this._updateLayer(layer);\n    };\n    Style.prototype.getLayoutProperty = function getLayoutProperty(layerId, name) {\n        var layer = this.getLayer(layerId);\n        if (!layer) {\n            this.fire(new performance.ErrorEvent(new Error('The layer \\'' + layerId + '\\' does not exist in the map\\'s style.')));\n            return;\n        }\n        return layer.getLayoutProperty(name);\n    };\n    Style.prototype.setPaintProperty = function setPaintProperty(layerId, name, value, options) {\n        if (options === void 0)\n            options = {};\n        this._checkLoaded();\n        var layer = this.getLayer(layerId);\n        if (!layer) {\n            this.fire(new performance.ErrorEvent(new Error('The layer \\'' + layerId + '\\' does not exist in the map\\'s style and cannot be styled.')));\n            return;\n        }\n        if (performance.deepEqual(layer.getPaintProperty(name), value)) {\n            return;\n        }\n        var requiresRelayout = layer.setPaintProperty(name, value, options);\n        if (requiresRelayout) {\n            this._updateLayer(layer);\n        }\n        this._changed = true;\n        this._updatedPaintProps[layerId] = true;\n    };\n    Style.prototype.getPaintProperty = function getPaintProperty(layer, name) {\n        return this.getLayer(layer).getPaintProperty(name);\n    };\n    Style.prototype.setFeatureState = function setFeatureState(target, state) {\n        this._checkLoaded();\n        var sourceId = target.source;\n        var sourceLayer = target.sourceLayer;\n        var sourceCache = this.sourceCaches[sourceId];\n        if (sourceCache === undefined) {\n            this.fire(new performance.ErrorEvent(new Error('The source \\'' + sourceId + '\\' does not exist in the map\\'s style.')));\n            return;\n        }\n        var sourceType = sourceCache.getSource().type;\n        if (sourceType === 'geojson' && sourceLayer) {\n            this.fire(new performance.ErrorEvent(new Error('GeoJSON sources cannot have a sourceLayer parameter.')));\n            return;\n        }\n        if (sourceType === 'vector' && !sourceLayer) {\n            this.fire(new performance.ErrorEvent(new Error('The sourceLayer parameter must be provided for vector source types.')));\n            return;\n        }\n        if (target.id === undefined) {\n            this.fire(new performance.ErrorEvent(new Error('The feature id parameter must be provided.')));\n        }\n        sourceCache.setFeatureState(sourceLayer, target.id, state);\n    };\n    Style.prototype.removeFeatureState = function removeFeatureState(target, key) {\n        this._checkLoaded();\n        var sourceId = target.source;\n        var sourceCache = this.sourceCaches[sourceId];\n        if (sourceCache === undefined) {\n            this.fire(new performance.ErrorEvent(new Error('The source \\'' + sourceId + '\\' does not exist in the map\\'s style.')));\n            return;\n        }\n        var sourceType = sourceCache.getSource().type;\n        var sourceLayer = sourceType === 'vector' ? target.sourceLayer : undefined;\n        if (sourceType === 'vector' && !sourceLayer) {\n            this.fire(new performance.ErrorEvent(new Error('The sourceLayer parameter must be provided for vector source types.')));\n            return;\n        }\n        if (key && (typeof target.id !== 'string' && typeof target.id !== 'number')) {\n            this.fire(new performance.ErrorEvent(new Error('A feature id is requred to remove its specific state property.')));\n            return;\n        }\n        sourceCache.removeFeatureState(sourceLayer, target.id, key);\n    };\n    Style.prototype.getFeatureState = function getFeatureState(target) {\n        this._checkLoaded();\n        var sourceId = target.source;\n        var sourceLayer = target.sourceLayer;\n        var sourceCache = this.sourceCaches[sourceId];\n        if (sourceCache === undefined) {\n            this.fire(new performance.ErrorEvent(new Error('The source \\'' + sourceId + '\\' does not exist in the map\\'s style.')));\n            return;\n        }\n        var sourceType = sourceCache.getSource().type;\n        if (sourceType === 'vector' && !sourceLayer) {\n            this.fire(new performance.ErrorEvent(new Error('The sourceLayer parameter must be provided for vector source types.')));\n            return;\n        }\n        if (target.id === undefined) {\n            this.fire(new performance.ErrorEvent(new Error('The feature id parameter must be provided.')));\n        }\n        return sourceCache.getFeatureState(sourceLayer, target.id);\n    };\n    Style.prototype.getTransition = function getTransition() {\n        return performance.extend({\n            duration: 300,\n            delay: 0\n        }, this.stylesheet && this.stylesheet.transition);\n    };\n    Style.prototype.serialize = function serialize() {\n        return performance.filterObject({\n            version: this.stylesheet.version,\n            name: this.stylesheet.name,\n            metadata: this.stylesheet.metadata,\n            light: this.stylesheet.light,\n            center: this.stylesheet.center,\n            zoom: this.stylesheet.zoom,\n            bearing: this.stylesheet.bearing,\n            pitch: this.stylesheet.pitch,\n            sprite: this.stylesheet.sprite,\n            glyphs: this.stylesheet.glyphs,\n            transition: this.stylesheet.transition,\n            sources: performance.mapObject(this.sourceCaches, function (source) {\n                return source.serialize();\n            }),\n            layers: this._serializeLayers(this._order)\n        }, function (value) {\n            return value !== undefined;\n        });\n    };\n    Style.prototype._updateLayer = function _updateLayer(layer) {\n        this._updatedLayers[layer.id] = true;\n        if (layer.source && !this._updatedSources[layer.source] && this.sourceCaches[layer.source].getSource().type !== 'raster') {\n            this._updatedSources[layer.source] = 'reload';\n            this.sourceCaches[layer.source].pause();\n        }\n        this._changed = true;\n    };\n    Style.prototype._flattenAndSortRenderedFeatures = function _flattenAndSortRenderedFeatures(sourceResults) {\n        var this$1 = this;\n        var isLayer3D = function (layerId) {\n            return this$1._layers[layerId].type === 'fill-extrusion';\n        };\n        var layerIndex = {};\n        var features3D = [];\n        for (var l = this._order.length - 1; l >= 0; l--) {\n            var layerId = this._order[l];\n            if (isLayer3D(layerId)) {\n                layerIndex[layerId] = l;\n                for (var i$2 = 0, list$1 = sourceResults; i$2 < list$1.length; i$2 += 1) {\n                    var sourceResult = list$1[i$2];\n                    var layerFeatures = sourceResult[layerId];\n                    if (layerFeatures) {\n                        for (var i$1 = 0, list = layerFeatures; i$1 < list.length; i$1 += 1) {\n                            var featureWrapper = list[i$1];\n                            features3D.push(featureWrapper);\n                        }\n                    }\n                }\n            }\n        }\n        features3D.sort(function (a, b) {\n            return b.intersectionZ - a.intersectionZ;\n        });\n        var features = [];\n        for (var l$1 = this._order.length - 1; l$1 >= 0; l$1--) {\n            var layerId$1 = this._order[l$1];\n            if (isLayer3D(layerId$1)) {\n                for (var i = features3D.length - 1; i >= 0; i--) {\n                    var topmost3D = features3D[i].feature;\n                    if (layerIndex[topmost3D.layer.id] < l$1) {\n                        break;\n                    }\n                    features.push(topmost3D);\n                    features3D.pop();\n                }\n            } else {\n                for (var i$4 = 0, list$3 = sourceResults; i$4 < list$3.length; i$4 += 1) {\n                    var sourceResult$1 = list$3[i$4];\n                    var layerFeatures$1 = sourceResult$1[layerId$1];\n                    if (layerFeatures$1) {\n                        for (var i$3 = 0, list$2 = layerFeatures$1; i$3 < list$2.length; i$3 += 1) {\n                            var featureWrapper$1 = list$2[i$3];\n                            features.push(featureWrapper$1.feature);\n                        }\n                    }\n                }\n            }\n        }\n        return features;\n    };\n    Style.prototype.queryRenderedFeatures = function queryRenderedFeatures$1(queryGeometry, params, transform) {\n        if (params && params.filter) {\n            this._validate(performance.validateStyle.filter, 'queryRenderedFeatures.filter', params.filter, null, params);\n        }\n        var includedSources = {};\n        if (params && params.layers) {\n            if (!Array.isArray(params.layers)) {\n                this.fire(new performance.ErrorEvent(new Error('parameters.layers must be an Array.')));\n                return [];\n            }\n            for (var i = 0, list = params.layers; i < list.length; i += 1) {\n                var layerId = list[i];\n                var layer = this._layers[layerId];\n                if (!layer) {\n                    this.fire(new performance.ErrorEvent(new Error('The layer \\'' + layerId + '\\' does not exist in the map\\'s style and cannot be queried for features.')));\n                    return [];\n                }\n                includedSources[layer.source] = true;\n            }\n        }\n        var sourceResults = [];\n        params.availableImages = this._availableImages;\n        for (var id in this.sourceCaches) {\n            if (params.layers && !includedSources[id]) {\n                continue;\n            }\n            sourceResults.push(queryRenderedFeatures(this.sourceCaches[id], this._layers, this._serializedLayers, queryGeometry, params, transform));\n        }\n        if (this.placement) {\n            sourceResults.push(queryRenderedSymbols(this._layers, this._serializedLayers, this.sourceCaches, queryGeometry, params, this.placement.collisionIndex, this.placement.retainedQueryData));\n        }\n        return this._flattenAndSortRenderedFeatures(sourceResults);\n    };\n    Style.prototype.querySourceFeatures = function querySourceFeatures$1(sourceID, params) {\n        if (params && params.filter) {\n            this._validate(performance.validateStyle.filter, 'querySourceFeatures.filter', params.filter, null, params);\n        }\n        var sourceCache = this.sourceCaches[sourceID];\n        return sourceCache ? querySourceFeatures(sourceCache, params) : [];\n    };\n    Style.prototype.addSourceType = function addSourceType(name, SourceType, callback) {\n        if (Style.getSourceType(name)) {\n            return callback(new Error('A source type called \"' + name + '\" already exists.'));\n        }\n        Style.setSourceType(name, SourceType);\n        if (!SourceType.workerSourceURL) {\n            return callback(null, null);\n        }\n        this.dispatcher.broadcast('loadWorkerSource', {\n            name: name,\n            url: SourceType.workerSourceURL\n        }, callback);\n    };\n    Style.prototype.getLight = function getLight() {\n        return this.light.getLight();\n    };\n    Style.prototype.setLight = function setLight(lightOptions, options) {\n        if (options === void 0)\n            options = {};\n        this._checkLoaded();\n        var light = this.light.getLight();\n        var _update = false;\n        for (var key in lightOptions) {\n            if (!performance.deepEqual(lightOptions[key], light[key])) {\n                _update = true;\n                break;\n            }\n        }\n        if (!_update) {\n            return;\n        }\n        var parameters = {\n            now: performance.browser.now(),\n            transition: performance.extend({\n                duration: 300,\n                delay: 0\n            }, this.stylesheet.transition)\n        };\n        this.light.setLight(lightOptions, options);\n        this.light.updateTransitions(parameters);\n    };\n    Style.prototype._validate = function _validate(validate, key, value, props, options) {\n        if (options === void 0)\n            options = {};\n        if (options && options.validate === false) {\n            return false;\n        }\n        return emitValidationErrors(this, validate.call(performance.validateStyle, performance.extend({\n            key: key,\n            style: this.serialize(),\n            value: value,\n            styleSpec: performance.styleSpec\n        }, props)));\n    };\n    Style.prototype._remove = function _remove() {\n        if (this._request) {\n            this._request.cancel();\n            this._request = null;\n        }\n        if (this._spriteRequest) {\n            this._spriteRequest.cancel();\n            this._spriteRequest = null;\n        }\n        performance.evented.off('pluginStateChange', this._rtlTextPluginCallback);\n        for (var layerId in this._layers) {\n            var layer = this._layers[layerId];\n            layer.setEventedParent(null);\n        }\n        for (var id in this.sourceCaches) {\n            this.sourceCaches[id].clearTiles();\n            this.sourceCaches[id].setEventedParent(null);\n        }\n        this.imageManager.setEventedParent(null);\n        this.setEventedParent(null);\n        this.dispatcher.remove();\n    };\n    Style.prototype._clearSource = function _clearSource(id) {\n        this.sourceCaches[id].clearTiles();\n    };\n    Style.prototype._reloadSource = function _reloadSource(id) {\n        this.sourceCaches[id].resume();\n        this.sourceCaches[id].reload();\n    };\n    Style.prototype._updateSources = function _updateSources(transform) {\n        for (var id in this.sourceCaches) {\n            this.sourceCaches[id].update(transform);\n        }\n    };\n    Style.prototype._generateCollisionBoxes = function _generateCollisionBoxes() {\n        for (var id in this.sourceCaches) {\n            this._reloadSource(id);\n        }\n    };\n    Style.prototype._updatePlacement = function _updatePlacement(transform, showCollisionBoxes, fadeDuration, crossSourceCollisions, forceFullPlacement) {\n        if (forceFullPlacement === void 0)\n            forceFullPlacement = false;\n        var symbolBucketsChanged = false;\n        var placementCommitted = false;\n        var layerTiles = {};\n        for (var i = 0, list = this._order; i < list.length; i += 1) {\n            var layerID = list[i];\n            var styleLayer = this._layers[layerID];\n            if (styleLayer.type !== 'symbol') {\n                continue;\n            }\n            if (!layerTiles[styleLayer.source]) {\n                var sourceCache = this.sourceCaches[styleLayer.source];\n                layerTiles[styleLayer.source] = sourceCache.getRenderableIds(true).map(function (id) {\n                    return sourceCache.getTileByID(id);\n                }).sort(function (a, b) {\n                    return b.tileID.overscaledZ - a.tileID.overscaledZ || (a.tileID.isLessThan(b.tileID) ? -1 : 1);\n                });\n            }\n            var layerBucketsChanged = this.crossTileSymbolIndex.addLayer(styleLayer, layerTiles[styleLayer.source], transform.center.lng);\n            symbolBucketsChanged = symbolBucketsChanged || layerBucketsChanged;\n        }\n        this.crossTileSymbolIndex.pruneUnusedLayers(this._order);\n        forceFullPlacement = forceFullPlacement || this._layerOrderChanged || fadeDuration === 0;\n        if (forceFullPlacement || !this.pauseablePlacement || this.pauseablePlacement.isDone() && !this.placement.stillRecent(performance.browser.now(), transform.zoom)) {\n            this.pauseablePlacement = new PauseablePlacement(transform, this._order, forceFullPlacement, showCollisionBoxes, fadeDuration, crossSourceCollisions, this.placement);\n            this._layerOrderChanged = false;\n        }\n        if (this.pauseablePlacement.isDone()) {\n            this.placement.setStale();\n        } else {\n            this.pauseablePlacement.continuePlacement(this._order, this._layers, layerTiles);\n            if (this.pauseablePlacement.isDone()) {\n                this.placement = this.pauseablePlacement.commit(performance.browser.now());\n                placementCommitted = true;\n            }\n            if (symbolBucketsChanged) {\n                this.pauseablePlacement.placement.setStale();\n            }\n        }\n        if (placementCommitted || symbolBucketsChanged) {\n            for (var i$1 = 0, list$1 = this._order; i$1 < list$1.length; i$1 += 1) {\n                var layerID$1 = list$1[i$1];\n                var styleLayer$1 = this._layers[layerID$1];\n                if (styleLayer$1.type !== 'symbol') {\n                    continue;\n                }\n                this.placement.updateLayerOpacities(styleLayer$1, layerTiles[styleLayer$1.source]);\n            }\n        }\n        var needsRerender = !this.pauseablePlacement.isDone() || this.placement.hasTransitions(performance.browser.now());\n        return needsRerender;\n    };\n    Style.prototype._releaseSymbolFadeTiles = function _releaseSymbolFadeTiles() {\n        for (var id in this.sourceCaches) {\n            this.sourceCaches[id].releaseSymbolFadeTiles();\n        }\n    };\n    Style.prototype.getImages = function getImages(mapId, params, callback) {\n        this.imageManager.getImages(params.icons, callback);\n        this._updateTilesForChangedImages();\n        var sourceCache = this.sourceCaches[params.source];\n        if (sourceCache) {\n            sourceCache.setDependencies(params.tileID.key, params.type, params.icons);\n        }\n    };\n    Style.prototype.getGlyphs = function getGlyphs(mapId, params, callback) {\n        this.glyphManager.getGlyphs(params.stacks, callback);\n    };\n    Style.prototype.getResource = function getResource(mapId, params, callback) {\n        return performance.makeRequest(params, callback);\n    };\n    return Style;\n}(performance.Evented);\nStyle.getSourceType = getType;\nStyle.setSourceType = setType;\nStyle.registerForPluginStateChange = performance.registerForPluginStateChange;\n\nvar posAttributes = performance.createLayout([{\n        name: 'a_pos',\n        type: 'Int16',\n        components: 2\n    }]);\n\nvar preludeFrag = \"#ifdef GL_ES\\nprecision mediump float;\\n#else\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n#if !defined(highp)\\n#define highp\\n#endif\\n#endif\";\n\nvar preludeVert = \"#ifdef GL_ES\\nprecision highp float;\\n#else\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n#if !defined(highp)\\n#define highp\\n#endif\\n#endif\\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}\";\n\nvar backgroundFrag = \"uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar backgroundVert = \"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\";\n\nvar backgroundPatternFrag = \"uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar backgroundPatternVert = \"uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}\";\n\nvar circleFrag = \"varying vec3 v_data;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar circleVert = \"uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvoid main(void) {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,0,1);} else {gl_Position=u_matrix*vec4(circle_center,0,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);}\";\n\nvar clippingMaskFrag = \"void main() {gl_FragColor=vec4(1.0);}\";\n\nvar clippingMaskVert = \"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\";\n\nvar heatmapFrag = \"uniform highp float u_intensity;varying vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main() {\\n#pragma mapbox: initialize highp float weight\\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar heatmapVert = \"uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#pragma mapbox: define mediump float radius\\nconst highp float ZERO=1.0/255.0/16.0;\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main(void) {\\n#pragma mapbox: initialize highp float weight\\n#pragma mapbox: initialize mediump float radius\\nvec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,0,1);gl_Position=u_matrix*pos;}\";\n\nvar heatmapTextureFrag = \"uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(0.0);\\n#endif\\n}\";\n\nvar heatmapTextureVert = \"uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}\";\n\nvar collisionBoxFrag = \"varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}\";\n\nvar collisionBoxVert = \"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\";\n\nvar collisionCircleFrag = \"varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}\";\n\nvar collisionCircleVert = \"attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd  =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz  /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}\";\n\nvar debugFrag = \"uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}\";\n\nvar debugVert = \"attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,0,1);}\";\n\nvar fillFrag = \"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_FragColor=color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar fillVert = \"attribute vec2 a_pos;uniform mat4 u_matrix;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);}\";\n\nvar fillOutlineFrag = \"varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar fillOutlineVert = \"attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\";\n\nvar fillOutlinePatternFrag = \"uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar fillOutlinePatternVert = \"uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\";\n\nvar fillPatternFrag = \"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar fillPatternVert = \"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}\";\n\nvar fillExtrusionFrag = \"varying vec4 v_color;void main() {gl_FragColor=v_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar fillExtrusionVert = \"uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color;\\n#pragma mapbox: define highp float base\\n#pragma mapbox: define highp float height\\n#pragma mapbox: define highp vec4 color\\nvoid main() {\\n#pragma mapbox: initialize highp float base\\n#pragma mapbox: initialize highp float height\\n#pragma mapbox: initialize highp vec4 color\\nvec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}\";\n\nvar fillExtrusionPatternFrag = \"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar fillExtrusionPatternVert = \"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\\n? a_pos\\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}\";\n\nvar hillshadePrepareFrag = \"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform float u_maxzoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggeration=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/ pow(2.0,(u_zoom-u_maxzoom)*exaggeration+19.2562-u_zoom);gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar hillshadePrepareVert = \"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\";\n\nvar hillshadeFrag = \"uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\\n#define PI 3.141592653589793\\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar hillshadeVert = \"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}\";\n\nvar lineFrag = \"uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar lineVert = \"\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\";\n\nvar lineGradientFrag = \"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,vec2(v_lineprogress,0.5));gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar lineGradientVert = \"\\n#define MAX_LINE_DISTANCE 32767.0\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_lineprogress=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0/MAX_LINE_DISTANCE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\";\n\nvar linePatternFrag = \"uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar linePatternVert = \"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}\";\n\nvar lineSDFFrag = \"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar lineSDFVert = \"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}\";\n\nvar rasterFrag = \"uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar rasterVert = \"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}\";\n\nvar symbolIconFrag = \"uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar symbolIconVert = \"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}\";\n\nvar symbolSDFFrag = \"#define SDF_PX 8.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar symbolSDFVert = \"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}\";\n\nvar symbolTextAndIconFrag = \"#define SDF_PX 8.0\\n#define SDF 1.0\\n#define ICON 0.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\";\n\nvar symbolTextAndIconVert = \"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}\";\n\nvar prelude = compile(preludeFrag, preludeVert);\nvar background = compile(backgroundFrag, backgroundVert);\nvar backgroundPattern = compile(backgroundPatternFrag, backgroundPatternVert);\nvar circle = compile(circleFrag, circleVert);\nvar clippingMask = compile(clippingMaskFrag, clippingMaskVert);\nvar heatmap = compile(heatmapFrag, heatmapVert);\nvar heatmapTexture = compile(heatmapTextureFrag, heatmapTextureVert);\nvar collisionBox = compile(collisionBoxFrag, collisionBoxVert);\nvar collisionCircle = compile(collisionCircleFrag, collisionCircleVert);\nvar debug = compile(debugFrag, debugVert);\nvar fill = compile(fillFrag, fillVert);\nvar fillOutline = compile(fillOutlineFrag, fillOutlineVert);\nvar fillOutlinePattern = compile(fillOutlinePatternFrag, fillOutlinePatternVert);\nvar fillPattern = compile(fillPatternFrag, fillPatternVert);\nvar fillExtrusion = compile(fillExtrusionFrag, fillExtrusionVert);\nvar fillExtrusionPattern = compile(fillExtrusionPatternFrag, fillExtrusionPatternVert);\nvar hillshadePrepare = compile(hillshadePrepareFrag, hillshadePrepareVert);\nvar hillshade = compile(hillshadeFrag, hillshadeVert);\nvar line = compile(lineFrag, lineVert);\nvar lineGradient = compile(lineGradientFrag, lineGradientVert);\nvar linePattern = compile(linePatternFrag, linePatternVert);\nvar lineSDF = compile(lineSDFFrag, lineSDFVert);\nvar raster = compile(rasterFrag, rasterVert);\nvar symbolIcon = compile(symbolIconFrag, symbolIconVert);\nvar symbolSDF = compile(symbolSDFFrag, symbolSDFVert);\nvar symbolTextAndIcon = compile(symbolTextAndIconFrag, symbolTextAndIconVert);\nfunction compile(fragmentSource, vertexSource) {\n    var re = /#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g;\n    var fragmentPragmas = {};\n    fragmentSource = fragmentSource.replace(re, function (match, operation, precision, type, name) {\n        fragmentPragmas[name] = true;\n        if (operation === 'define') {\n            return '\\n#ifndef HAS_UNIFORM_u_' + name + '\\nvarying ' + precision + ' ' + type + ' ' + name + ';\\n#else\\nuniform ' + precision + ' ' + type + ' u_' + name + ';\\n#endif\\n';\n        } else {\n            return '\\n#ifdef HAS_UNIFORM_u_' + name + '\\n    ' + precision + ' ' + type + ' ' + name + ' = u_' + name + ';\\n#endif\\n';\n        }\n    });\n    vertexSource = vertexSource.replace(re, function (match, operation, precision, type, name) {\n        var attrType = type === 'float' ? 'vec2' : 'vec4';\n        var unpackType = name.match(/color/) ? 'color' : attrType;\n        if (fragmentPragmas[name]) {\n            if (operation === 'define') {\n                return '\\n#ifndef HAS_UNIFORM_u_' + name + '\\nuniform lowp float u_' + name + '_t;\\nattribute ' + precision + ' ' + attrType + ' a_' + name + ';\\nvarying ' + precision + ' ' + type + ' ' + name + ';\\n#else\\nuniform ' + precision + ' ' + type + ' u_' + name + ';\\n#endif\\n';\n            } else {\n                if (unpackType === 'vec4') {\n                    return '\\n#ifndef HAS_UNIFORM_u_' + name + '\\n    ' + name + ' = a_' + name + ';\\n#else\\n    ' + precision + ' ' + type + ' ' + name + ' = u_' + name + ';\\n#endif\\n';\n                } else {\n                    return '\\n#ifndef HAS_UNIFORM_u_' + name + '\\n    ' + name + ' = unpack_mix_' + unpackType + '(a_' + name + ', u_' + name + '_t);\\n#else\\n    ' + precision + ' ' + type + ' ' + name + ' = u_' + name + ';\\n#endif\\n';\n                }\n            }\n        } else {\n            if (operation === 'define') {\n                return '\\n#ifndef HAS_UNIFORM_u_' + name + '\\nuniform lowp float u_' + name + '_t;\\nattribute ' + precision + ' ' + attrType + ' a_' + name + ';\\n#else\\nuniform ' + precision + ' ' + type + ' u_' + name + ';\\n#endif\\n';\n            } else {\n                if (unpackType === 'vec4') {\n                    return '\\n#ifndef HAS_UNIFORM_u_' + name + '\\n    ' + precision + ' ' + type + ' ' + name + ' = a_' + name + ';\\n#else\\n    ' + precision + ' ' + type + ' ' + name + ' = u_' + name + ';\\n#endif\\n';\n                } else {\n                    return '\\n#ifndef HAS_UNIFORM_u_' + name + '\\n    ' + precision + ' ' + type + ' ' + name + ' = unpack_mix_' + unpackType + '(a_' + name + ', u_' + name + '_t);\\n#else\\n    ' + precision + ' ' + type + ' ' + name + ' = u_' + name + ';\\n#endif\\n';\n                }\n            }\n        }\n    });\n    return {\n        fragmentSource: fragmentSource,\n        vertexSource: vertexSource\n    };\n}\n\nvar shaders = /*#__PURE__*/Object.freeze({\n__proto__: null,\nprelude: prelude,\nbackground: background,\nbackgroundPattern: backgroundPattern,\ncircle: circle,\nclippingMask: clippingMask,\nheatmap: heatmap,\nheatmapTexture: heatmapTexture,\ncollisionBox: collisionBox,\ncollisionCircle: collisionCircle,\ndebug: debug,\nfill: fill,\nfillOutline: fillOutline,\nfillOutlinePattern: fillOutlinePattern,\nfillPattern: fillPattern,\nfillExtrusion: fillExtrusion,\nfillExtrusionPattern: fillExtrusionPattern,\nhillshadePrepare: hillshadePrepare,\nhillshade: hillshade,\nline: line,\nlineGradient: lineGradient,\nlinePattern: linePattern,\nlineSDF: lineSDF,\nraster: raster,\nsymbolIcon: symbolIcon,\nsymbolSDF: symbolSDF,\nsymbolTextAndIcon: symbolTextAndIcon\n});\n\nvar VertexArrayObject = function VertexArrayObject() {\n    this.boundProgram = null;\n    this.boundLayoutVertexBuffer = null;\n    this.boundPaintVertexBuffers = [];\n    this.boundIndexBuffer = null;\n    this.boundVertexOffset = null;\n    this.boundDynamicVertexBuffer = null;\n    this.vao = null;\n};\nVertexArrayObject.prototype.bind = function bind(context, program, layoutVertexBuffer, paintVertexBuffers, indexBuffer, vertexOffset, dynamicVertexBuffer, dynamicVertexBuffer2) {\n    this.context = context;\n    var paintBuffersDiffer = this.boundPaintVertexBuffers.length !== paintVertexBuffers.length;\n    for (var i = 0; !paintBuffersDiffer && i < paintVertexBuffers.length; i++) {\n        if (this.boundPaintVertexBuffers[i] !== paintVertexBuffers[i]) {\n            paintBuffersDiffer = true;\n        }\n    }\n    var isFreshBindRequired = !this.vao || this.boundProgram !== program || this.boundLayoutVertexBuffer !== layoutVertexBuffer || paintBuffersDiffer || this.boundIndexBuffer !== indexBuffer || this.boundVertexOffset !== vertexOffset || this.boundDynamicVertexBuffer !== dynamicVertexBuffer || this.boundDynamicVertexBuffer2 !== dynamicVertexBuffer2;\n    if (!context.extVertexArrayObject || isFreshBindRequired) {\n        this.freshBind(program, layoutVertexBuffer, paintVertexBuffers, indexBuffer, vertexOffset, dynamicVertexBuffer, dynamicVertexBuffer2);\n    } else {\n        context.bindVertexArrayOES.set(this.vao);\n        if (dynamicVertexBuffer) {\n            dynamicVertexBuffer.bind();\n        }\n        if (indexBuffer && indexBuffer.dynamicDraw) {\n            indexBuffer.bind();\n        }\n        if (dynamicVertexBuffer2) {\n            dynamicVertexBuffer2.bind();\n        }\n    }\n};\nVertexArrayObject.prototype.freshBind = function freshBind(program, layoutVertexBuffer, paintVertexBuffers, indexBuffer, vertexOffset, dynamicVertexBuffer, dynamicVertexBuffer2) {\n    var numPrevAttributes;\n    var numNextAttributes = program.numAttributes;\n    var context = this.context;\n    var gl = context.gl;\n    if (context.extVertexArrayObject) {\n        if (this.vao) {\n            this.destroy();\n        }\n        this.vao = context.extVertexArrayObject.createVertexArrayOES();\n        context.bindVertexArrayOES.set(this.vao);\n        numPrevAttributes = 0;\n        this.boundProgram = program;\n        this.boundLayoutVertexBuffer = layoutVertexBuffer;\n        this.boundPaintVertexBuffers = paintVertexBuffers;\n        this.boundIndexBuffer = indexBuffer;\n        this.boundVertexOffset = vertexOffset;\n        this.boundDynamicVertexBuffer = dynamicVertexBuffer;\n        this.boundDynamicVertexBuffer2 = dynamicVertexBuffer2;\n    } else {\n        numPrevAttributes = context.currentNumAttributes || 0;\n        for (var i = numNextAttributes; i < numPrevAttributes; i++) {\n            gl.disableVertexAttribArray(i);\n        }\n    }\n    layoutVertexBuffer.enableAttributes(gl, program);\n    for (var i$1 = 0, list = paintVertexBuffers; i$1 < list.length; i$1 += 1) {\n        var vertexBuffer = list[i$1];\n        vertexBuffer.enableAttributes(gl, program);\n    }\n    if (dynamicVertexBuffer) {\n        dynamicVertexBuffer.enableAttributes(gl, program);\n    }\n    if (dynamicVertexBuffer2) {\n        dynamicVertexBuffer2.enableAttributes(gl, program);\n    }\n    layoutVertexBuffer.bind();\n    layoutVertexBuffer.setVertexAttribPointers(gl, program, vertexOffset);\n    for (var i$2 = 0, list$1 = paintVertexBuffers; i$2 < list$1.length; i$2 += 1) {\n        var vertexBuffer$1 = list$1[i$2];\n        vertexBuffer$1.bind();\n        vertexBuffer$1.setVertexAttribPointers(gl, program, vertexOffset);\n    }\n    if (dynamicVertexBuffer) {\n        dynamicVertexBuffer.bind();\n        dynamicVertexBuffer.setVertexAttribPointers(gl, program, vertexOffset);\n    }\n    if (indexBuffer) {\n        indexBuffer.bind();\n    }\n    if (dynamicVertexBuffer2) {\n        dynamicVertexBuffer2.bind();\n        dynamicVertexBuffer2.setVertexAttribPointers(gl, program, vertexOffset);\n    }\n    context.currentNumAttributes = numNextAttributes;\n};\nVertexArrayObject.prototype.destroy = function destroy() {\n    if (this.vao) {\n        this.context.extVertexArrayObject.deleteVertexArrayOES(this.vao);\n        this.vao = null;\n    }\n};\n\nvar Program$1 = function Program(context, source, configuration, fixedUniforms, showOverdrawInspector) {\n    var gl = context.gl;\n    this.program = gl.createProgram();\n    var defines = configuration ? configuration.defines() : [];\n    if (showOverdrawInspector) {\n        defines.push('#define OVERDRAW_INSPECTOR;');\n    }\n    var fragmentSource = defines.concat(prelude.fragmentSource, source.fragmentSource).join('\\n');\n    var vertexSource = defines.concat(prelude.vertexSource, source.vertexSource).join('\\n');\n    var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n    if (gl.isContextLost()) {\n        this.failedToCreate = true;\n        return;\n    }\n    gl.shaderSource(fragmentShader, fragmentSource);\n    gl.compileShader(fragmentShader);\n    gl.attachShader(this.program, fragmentShader);\n    var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n    if (gl.isContextLost()) {\n        this.failedToCreate = true;\n        return;\n    }\n    gl.shaderSource(vertexShader, vertexSource);\n    gl.compileShader(vertexShader);\n    gl.attachShader(this.program, vertexShader);\n    var layoutAttributes = configuration ? configuration.layoutAttributes : [];\n    for (var i = 0; i < layoutAttributes.length; i++) {\n        gl.bindAttribLocation(this.program, i, layoutAttributes[i].name);\n    }\n    gl.linkProgram(this.program);\n    gl.deleteShader(vertexShader);\n    gl.deleteShader(fragmentShader);\n    this.numAttributes = gl.getProgramParameter(this.program, gl.ACTIVE_ATTRIBUTES);\n    this.attributes = {};\n    var uniformLocations = {};\n    for (var i$1 = 0; i$1 < this.numAttributes; i$1++) {\n        var attribute = gl.getActiveAttrib(this.program, i$1);\n        if (attribute) {\n            this.attributes[attribute.name] = gl.getAttribLocation(this.program, attribute.name);\n        }\n    }\n    var numUniforms = gl.getProgramParameter(this.program, gl.ACTIVE_UNIFORMS);\n    for (var i$2 = 0; i$2 < numUniforms; i$2++) {\n        var uniform = gl.getActiveUniform(this.program, i$2);\n        if (uniform) {\n            uniformLocations[uniform.name] = gl.getUniformLocation(this.program, uniform.name);\n        }\n    }\n    this.fixedUniforms = fixedUniforms(context, uniformLocations);\n    this.binderUniforms = configuration ? configuration.getUniforms(context, uniformLocations) : [];\n};\nProgram$1.prototype.draw = function draw(context, drawMode, depthMode, stencilMode, colorMode, cullFaceMode, uniformValues, layerID, layoutVertexBuffer, indexBuffer, segments, currentProperties, zoom, configuration, dynamicLayoutBuffer, dynamicLayoutBuffer2) {\n    var obj;\n    var gl = context.gl;\n    if (this.failedToCreate) {\n        return;\n    }\n    context.program.set(this.program);\n    context.setDepthMode(depthMode);\n    context.setStencilMode(stencilMode);\n    context.setColorMode(colorMode);\n    context.setCullFace(cullFaceMode);\n    for (var name in this.fixedUniforms) {\n        this.fixedUniforms[name].set(uniformValues[name]);\n    }\n    if (configuration) {\n        configuration.setUniforms(context, this.binderUniforms, currentProperties, { zoom: zoom });\n    }\n    var primitiveSize = (obj = {}, obj[gl.LINES] = 2, obj[gl.TRIANGLES] = 3, obj[gl.LINE_STRIP] = 1, obj)[drawMode];\n    for (var i = 0, list = segments.get(); i < list.length; i += 1) {\n        var segment = list[i];\n        var vaos = segment.vaos || (segment.vaos = {});\n        var vao = vaos[layerID] || (vaos[layerID] = new VertexArrayObject());\n        vao.bind(context, this, layoutVertexBuffer, configuration ? configuration.getPaintVertexBuffers() : [], indexBuffer, segment.vertexOffset, dynamicLayoutBuffer, dynamicLayoutBuffer2);\n        gl.drawElements(drawMode, segment.primitiveLength * primitiveSize, gl.UNSIGNED_SHORT, segment.primitiveOffset * primitiveSize * 2);\n    }\n};\n\nfunction patternUniformValues(crossfade, painter, tile) {\n    var tileRatio = 1 / pixelsToTileUnits(tile, 1, painter.transform.tileZoom);\n    var numTiles = Math.pow(2, tile.tileID.overscaledZ);\n    var tileSizeAtNearestZoom = tile.tileSize * Math.pow(2, painter.transform.tileZoom) / numTiles;\n    var pixelX = tileSizeAtNearestZoom * (tile.tileID.canonical.x + tile.tileID.wrap * numTiles);\n    var pixelY = tileSizeAtNearestZoom * tile.tileID.canonical.y;\n    return {\n        'u_image': 0,\n        'u_texsize': tile.imageAtlasTexture.size,\n        'u_scale': [\n            tileRatio,\n            crossfade.fromScale,\n            crossfade.toScale\n        ],\n        'u_fade': crossfade.t,\n        'u_pixel_coord_upper': [\n            pixelX >> 16,\n            pixelY >> 16\n        ],\n        'u_pixel_coord_lower': [\n            pixelX & 65535,\n            pixelY & 65535\n        ]\n    };\n}\nfunction bgPatternUniformValues(image, crossfade, painter, tile) {\n    var imagePosA = painter.imageManager.getPattern(image.from.toString());\n    var imagePosB = painter.imageManager.getPattern(image.to.toString());\n    var ref = painter.imageManager.getPixelSize();\n    var width = ref.width;\n    var height = ref.height;\n    var numTiles = Math.pow(2, tile.tileID.overscaledZ);\n    var tileSizeAtNearestZoom = tile.tileSize * Math.pow(2, painter.transform.tileZoom) / numTiles;\n    var pixelX = tileSizeAtNearestZoom * (tile.tileID.canonical.x + tile.tileID.wrap * numTiles);\n    var pixelY = tileSizeAtNearestZoom * tile.tileID.canonical.y;\n    return {\n        'u_image': 0,\n        'u_pattern_tl_a': imagePosA.tl,\n        'u_pattern_br_a': imagePosA.br,\n        'u_pattern_tl_b': imagePosB.tl,\n        'u_pattern_br_b': imagePosB.br,\n        'u_texsize': [\n            width,\n            height\n        ],\n        'u_mix': crossfade.t,\n        'u_pattern_size_a': imagePosA.displaySize,\n        'u_pattern_size_b': imagePosB.displaySize,\n        'u_scale_a': crossfade.fromScale,\n        'u_scale_b': crossfade.toScale,\n        'u_tile_units_to_pixels': 1 / pixelsToTileUnits(tile, 1, painter.transform.tileZoom),\n        'u_pixel_coord_upper': [\n            pixelX >> 16,\n            pixelY >> 16\n        ],\n        'u_pixel_coord_lower': [\n            pixelX & 65535,\n            pixelY & 65535\n        ]\n    };\n}\n\nvar fillExtrusionUniforms = function (context, locations) {\n    return {\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_lightpos': new performance.Uniform3f(context, locations.u_lightpos),\n        'u_lightintensity': new performance.Uniform1f(context, locations.u_lightintensity),\n        'u_lightcolor': new performance.Uniform3f(context, locations.u_lightcolor),\n        'u_vertical_gradient': new performance.Uniform1f(context, locations.u_vertical_gradient),\n        'u_opacity': new performance.Uniform1f(context, locations.u_opacity)\n    };\n};\nvar fillExtrusionPatternUniforms = function (context, locations) {\n    return {\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_lightpos': new performance.Uniform3f(context, locations.u_lightpos),\n        'u_lightintensity': new performance.Uniform1f(context, locations.u_lightintensity),\n        'u_lightcolor': new performance.Uniform3f(context, locations.u_lightcolor),\n        'u_vertical_gradient': new performance.Uniform1f(context, locations.u_vertical_gradient),\n        'u_height_factor': new performance.Uniform1f(context, locations.u_height_factor),\n        'u_image': new performance.Uniform1i(context, locations.u_image),\n        'u_texsize': new performance.Uniform2f(context, locations.u_texsize),\n        'u_pixel_coord_upper': new performance.Uniform2f(context, locations.u_pixel_coord_upper),\n        'u_pixel_coord_lower': new performance.Uniform2f(context, locations.u_pixel_coord_lower),\n        'u_scale': new performance.Uniform3f(context, locations.u_scale),\n        'u_fade': new performance.Uniform1f(context, locations.u_fade),\n        'u_opacity': new performance.Uniform1f(context, locations.u_opacity)\n    };\n};\nvar fillExtrusionUniformValues = function (matrix, painter, shouldUseVerticalGradient, opacity) {\n    var light = painter.style.light;\n    var _lp = light.properties.get('position');\n    var lightPos = [\n        _lp.x,\n        _lp.y,\n        _lp.z\n    ];\n    var lightMat = performance.create$1();\n    if (light.properties.get('anchor') === 'viewport') {\n        performance.fromRotation(lightMat, -painter.transform.angle);\n    }\n    performance.transformMat3(lightPos, lightPos, lightMat);\n    var lightColor = light.properties.get('color');\n    return {\n        'u_matrix': matrix,\n        'u_lightpos': lightPos,\n        'u_lightintensity': light.properties.get('intensity'),\n        'u_lightcolor': [\n            lightColor.r,\n            lightColor.g,\n            lightColor.b\n        ],\n        'u_vertical_gradient': +shouldUseVerticalGradient,\n        'u_opacity': opacity\n    };\n};\nvar fillExtrusionPatternUniformValues = function (matrix, painter, shouldUseVerticalGradient, opacity, coord, crossfade, tile) {\n    return performance.extend(fillExtrusionUniformValues(matrix, painter, shouldUseVerticalGradient, opacity), patternUniformValues(crossfade, painter, tile), { 'u_height_factor': -Math.pow(2, coord.overscaledZ) / tile.tileSize / 8 });\n};\n\nvar fillUniforms = function (context, locations) {\n    return { 'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix) };\n};\nvar fillPatternUniforms = function (context, locations) {\n    return {\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_image': new performance.Uniform1i(context, locations.u_image),\n        'u_texsize': new performance.Uniform2f(context, locations.u_texsize),\n        'u_pixel_coord_upper': new performance.Uniform2f(context, locations.u_pixel_coord_upper),\n        'u_pixel_coord_lower': new performance.Uniform2f(context, locations.u_pixel_coord_lower),\n        'u_scale': new performance.Uniform3f(context, locations.u_scale),\n        'u_fade': new performance.Uniform1f(context, locations.u_fade)\n    };\n};\nvar fillOutlineUniforms = function (context, locations) {\n    return {\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_world': new performance.Uniform2f(context, locations.u_world)\n    };\n};\nvar fillOutlinePatternUniforms = function (context, locations) {\n    return {\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_world': new performance.Uniform2f(context, locations.u_world),\n        'u_image': new performance.Uniform1i(context, locations.u_image),\n        'u_texsize': new performance.Uniform2f(context, locations.u_texsize),\n        'u_pixel_coord_upper': new performance.Uniform2f(context, locations.u_pixel_coord_upper),\n        'u_pixel_coord_lower': new performance.Uniform2f(context, locations.u_pixel_coord_lower),\n        'u_scale': new performance.Uniform3f(context, locations.u_scale),\n        'u_fade': new performance.Uniform1f(context, locations.u_fade)\n    };\n};\nvar fillUniformValues = function (matrix) {\n    return { 'u_matrix': matrix };\n};\nvar fillPatternUniformValues = function (matrix, painter, crossfade, tile) {\n    return performance.extend(fillUniformValues(matrix), patternUniformValues(crossfade, painter, tile));\n};\nvar fillOutlineUniformValues = function (matrix, drawingBufferSize) {\n    return {\n        'u_matrix': matrix,\n        'u_world': drawingBufferSize\n    };\n};\nvar fillOutlinePatternUniformValues = function (matrix, painter, crossfade, tile, drawingBufferSize) {\n    return performance.extend(fillPatternUniformValues(matrix, painter, crossfade, tile), { 'u_world': drawingBufferSize });\n};\n\nvar circleUniforms = function (context, locations) {\n    return {\n        'u_camera_to_center_distance': new performance.Uniform1f(context, locations.u_camera_to_center_distance),\n        'u_scale_with_map': new performance.Uniform1i(context, locations.u_scale_with_map),\n        'u_pitch_with_map': new performance.Uniform1i(context, locations.u_pitch_with_map),\n        'u_extrude_scale': new performance.Uniform2f(context, locations.u_extrude_scale),\n        'u_device_pixel_ratio': new performance.Uniform1f(context, locations.u_device_pixel_ratio),\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix)\n    };\n};\nvar circleUniformValues = function (painter, coord, tile, layer) {\n    var transform = painter.transform;\n    var pitchWithMap, extrudeScale;\n    if (layer.paint.get('circle-pitch-alignment') === 'map') {\n        var pixelRatio = pixelsToTileUnits(tile, 1, transform.zoom);\n        pitchWithMap = true;\n        extrudeScale = [\n            pixelRatio,\n            pixelRatio\n        ];\n    } else {\n        pitchWithMap = false;\n        extrudeScale = transform.pixelsToGLUnits;\n    }\n    return {\n        'u_camera_to_center_distance': transform.cameraToCenterDistance,\n        'u_scale_with_map': +(layer.paint.get('circle-pitch-scale') === 'map'),\n        'u_matrix': painter.translatePosMatrix(coord.posMatrix, tile, layer.paint.get('circle-translate'), layer.paint.get('circle-translate-anchor')),\n        'u_pitch_with_map': +pitchWithMap,\n        'u_device_pixel_ratio': performance.browser.devicePixelRatio,\n        'u_extrude_scale': extrudeScale\n    };\n};\n\nvar collisionUniforms = function (context, locations) {\n    return {\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_camera_to_center_distance': new performance.Uniform1f(context, locations.u_camera_to_center_distance),\n        'u_pixels_to_tile_units': new performance.Uniform1f(context, locations.u_pixels_to_tile_units),\n        'u_extrude_scale': new performance.Uniform2f(context, locations.u_extrude_scale),\n        'u_overscale_factor': new performance.Uniform1f(context, locations.u_overscale_factor)\n    };\n};\nvar collisionCircleUniforms = function (context, locations) {\n    return {\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_inv_matrix': new performance.UniformMatrix4f(context, locations.u_inv_matrix),\n        'u_camera_to_center_distance': new performance.Uniform1f(context, locations.u_camera_to_center_distance),\n        'u_viewport_size': new performance.Uniform2f(context, locations.u_viewport_size)\n    };\n};\nvar collisionUniformValues = function (matrix, transform, tile) {\n    var pixelRatio = pixelsToTileUnits(tile, 1, transform.zoom);\n    var scale = Math.pow(2, transform.zoom - tile.tileID.overscaledZ);\n    var overscaleFactor = tile.tileID.overscaleFactor();\n    return {\n        'u_matrix': matrix,\n        'u_camera_to_center_distance': transform.cameraToCenterDistance,\n        'u_pixels_to_tile_units': pixelRatio,\n        'u_extrude_scale': [\n            transform.pixelsToGLUnits[0] / (pixelRatio * scale),\n            transform.pixelsToGLUnits[1] / (pixelRatio * scale)\n        ],\n        'u_overscale_factor': overscaleFactor\n    };\n};\nvar collisionCircleUniformValues = function (matrix, invMatrix, transform) {\n    return {\n        'u_matrix': matrix,\n        'u_inv_matrix': invMatrix,\n        'u_camera_to_center_distance': transform.cameraToCenterDistance,\n        'u_viewport_size': [\n            transform.width,\n            transform.height\n        ]\n    };\n};\n\nvar debugUniforms = function (context, locations) {\n    return {\n        'u_color': new performance.UniformColor(context, locations.u_color),\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_overlay': new performance.Uniform1i(context, locations.u_overlay),\n        'u_overlay_scale': new performance.Uniform1f(context, locations.u_overlay_scale)\n    };\n};\nvar debugUniformValues = function (matrix, color, scaleRatio) {\n    if (scaleRatio === void 0)\n        scaleRatio = 1;\n    return {\n        'u_matrix': matrix,\n        'u_color': color,\n        'u_overlay': 0,\n        'u_overlay_scale': scaleRatio\n    };\n};\n\nvar clippingMaskUniforms = function (context, locations) {\n    return { 'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix) };\n};\nvar clippingMaskUniformValues = function (matrix) {\n    return { 'u_matrix': matrix };\n};\n\nvar heatmapUniforms = function (context, locations) {\n    return {\n        'u_extrude_scale': new performance.Uniform1f(context, locations.u_extrude_scale),\n        'u_intensity': new performance.Uniform1f(context, locations.u_intensity),\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix)\n    };\n};\nvar heatmapTextureUniforms = function (context, locations) {\n    return {\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_world': new performance.Uniform2f(context, locations.u_world),\n        'u_image': new performance.Uniform1i(context, locations.u_image),\n        'u_color_ramp': new performance.Uniform1i(context, locations.u_color_ramp),\n        'u_opacity': new performance.Uniform1f(context, locations.u_opacity)\n    };\n};\nvar heatmapUniformValues = function (matrix, tile, zoom, intensity) {\n    return {\n        'u_matrix': matrix,\n        'u_extrude_scale': pixelsToTileUnits(tile, 1, zoom),\n        'u_intensity': intensity\n    };\n};\nvar heatmapTextureUniformValues = function (painter, layer, textureUnit, colorRampUnit) {\n    var matrix = performance.create();\n    performance.ortho(matrix, 0, painter.width, painter.height, 0, 0, 1);\n    var gl = painter.context.gl;\n    return {\n        'u_matrix': matrix,\n        'u_world': [\n            gl.drawingBufferWidth,\n            gl.drawingBufferHeight\n        ],\n        'u_image': textureUnit,\n        'u_color_ramp': colorRampUnit,\n        'u_opacity': layer.paint.get('heatmap-opacity')\n    };\n};\n\nvar hillshadeUniforms = function (context, locations) {\n    return {\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_image': new performance.Uniform1i(context, locations.u_image),\n        'u_latrange': new performance.Uniform2f(context, locations.u_latrange),\n        'u_light': new performance.Uniform2f(context, locations.u_light),\n        'u_shadow': new performance.UniformColor(context, locations.u_shadow),\n        'u_highlight': new performance.UniformColor(context, locations.u_highlight),\n        'u_accent': new performance.UniformColor(context, locations.u_accent)\n    };\n};\nvar hillshadePrepareUniforms = function (context, locations) {\n    return {\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_image': new performance.Uniform1i(context, locations.u_image),\n        'u_dimension': new performance.Uniform2f(context, locations.u_dimension),\n        'u_zoom': new performance.Uniform1f(context, locations.u_zoom),\n        'u_maxzoom': new performance.Uniform1f(context, locations.u_maxzoom),\n        'u_unpack': new performance.Uniform4f(context, locations.u_unpack)\n    };\n};\nvar hillshadeUniformValues = function (painter, tile, layer) {\n    var shadow = layer.paint.get('hillshade-shadow-color');\n    var highlight = layer.paint.get('hillshade-highlight-color');\n    var accent = layer.paint.get('hillshade-accent-color');\n    var azimuthal = layer.paint.get('hillshade-illumination-direction') * (Math.PI / 180);\n    if (layer.paint.get('hillshade-illumination-anchor') === 'viewport') {\n        azimuthal -= painter.transform.angle;\n    }\n    var align = !painter.options.moving;\n    return {\n        'u_matrix': painter.transform.calculatePosMatrix(tile.tileID.toUnwrapped(), align),\n        'u_image': 0,\n        'u_latrange': getTileLatRange(painter, tile.tileID),\n        'u_light': [\n            layer.paint.get('hillshade-exaggeration'),\n            azimuthal\n        ],\n        'u_shadow': shadow,\n        'u_highlight': highlight,\n        'u_accent': accent\n    };\n};\nvar hillshadeUniformPrepareValues = function (tileID, dem, maxzoom) {\n    var stride = dem.stride;\n    var matrix = performance.create();\n    performance.ortho(matrix, 0, performance.EXTENT, -performance.EXTENT, 0, 0, 1);\n    performance.translate(matrix, matrix, [\n        0,\n        -performance.EXTENT,\n        0\n    ]);\n    return {\n        'u_matrix': matrix,\n        'u_image': 1,\n        'u_dimension': [\n            stride,\n            stride\n        ],\n        'u_zoom': tileID.overscaledZ,\n        'u_maxzoom': maxzoom,\n        'u_unpack': dem.getUnpackVector()\n    };\n};\nfunction getTileLatRange(painter, tileID) {\n    var tilesAtZoom = Math.pow(2, tileID.canonical.z);\n    var y = tileID.canonical.y;\n    return [\n        new performance.MercatorCoordinate(0, y / tilesAtZoom).toLngLat().lat,\n        new performance.MercatorCoordinate(0, (y + 1) / tilesAtZoom).toLngLat().lat\n    ];\n}\n\nvar lineUniforms = function (context, locations) {\n    return {\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_ratio': new performance.Uniform1f(context, locations.u_ratio),\n        'u_device_pixel_ratio': new performance.Uniform1f(context, locations.u_device_pixel_ratio),\n        'u_units_to_pixels': new performance.Uniform2f(context, locations.u_units_to_pixels)\n    };\n};\nvar lineGradientUniforms = function (context, locations) {\n    return {\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_ratio': new performance.Uniform1f(context, locations.u_ratio),\n        'u_device_pixel_ratio': new performance.Uniform1f(context, locations.u_device_pixel_ratio),\n        'u_units_to_pixels': new performance.Uniform2f(context, locations.u_units_to_pixels),\n        'u_image': new performance.Uniform1i(context, locations.u_image)\n    };\n};\nvar linePatternUniforms = function (context, locations) {\n    return {\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_texsize': new performance.Uniform2f(context, locations.u_texsize),\n        'u_ratio': new performance.Uniform1f(context, locations.u_ratio),\n        'u_device_pixel_ratio': new performance.Uniform1f(context, locations.u_device_pixel_ratio),\n        'u_image': new performance.Uniform1i(context, locations.u_image),\n        'u_units_to_pixels': new performance.Uniform2f(context, locations.u_units_to_pixels),\n        'u_scale': new performance.Uniform3f(context, locations.u_scale),\n        'u_fade': new performance.Uniform1f(context, locations.u_fade)\n    };\n};\nvar lineSDFUniforms = function (context, locations) {\n    return {\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_ratio': new performance.Uniform1f(context, locations.u_ratio),\n        'u_device_pixel_ratio': new performance.Uniform1f(context, locations.u_device_pixel_ratio),\n        'u_units_to_pixels': new performance.Uniform2f(context, locations.u_units_to_pixels),\n        'u_patternscale_a': new performance.Uniform2f(context, locations.u_patternscale_a),\n        'u_patternscale_b': new performance.Uniform2f(context, locations.u_patternscale_b),\n        'u_sdfgamma': new performance.Uniform1f(context, locations.u_sdfgamma),\n        'u_image': new performance.Uniform1i(context, locations.u_image),\n        'u_tex_y_a': new performance.Uniform1f(context, locations.u_tex_y_a),\n        'u_tex_y_b': new performance.Uniform1f(context, locations.u_tex_y_b),\n        'u_mix': new performance.Uniform1f(context, locations.u_mix)\n    };\n};\nvar lineUniformValues = function (painter, tile, layer) {\n    var transform = painter.transform;\n    return {\n        'u_matrix': calculateMatrix(painter, tile, layer),\n        'u_ratio': 1 / pixelsToTileUnits(tile, 1, transform.zoom),\n        'u_device_pixel_ratio': performance.browser.devicePixelRatio,\n        'u_units_to_pixels': [\n            1 / transform.pixelsToGLUnits[0],\n            1 / transform.pixelsToGLUnits[1]\n        ]\n    };\n};\nvar lineGradientUniformValues = function (painter, tile, layer) {\n    return performance.extend(lineUniformValues(painter, tile, layer), { 'u_image': 0 });\n};\nvar linePatternUniformValues = function (painter, tile, layer, crossfade) {\n    var transform = painter.transform;\n    var tileZoomRatio = calculateTileRatio(tile, transform);\n    return {\n        'u_matrix': calculateMatrix(painter, tile, layer),\n        'u_texsize': tile.imageAtlasTexture.size,\n        'u_ratio': 1 / pixelsToTileUnits(tile, 1, transform.zoom),\n        'u_device_pixel_ratio': performance.browser.devicePixelRatio,\n        'u_image': 0,\n        'u_scale': [\n            tileZoomRatio,\n            crossfade.fromScale,\n            crossfade.toScale\n        ],\n        'u_fade': crossfade.t,\n        'u_units_to_pixels': [\n            1 / transform.pixelsToGLUnits[0],\n            1 / transform.pixelsToGLUnits[1]\n        ]\n    };\n};\nvar lineSDFUniformValues = function (painter, tile, layer, dasharray, crossfade) {\n    var transform = painter.transform;\n    var lineAtlas = painter.lineAtlas;\n    var tileRatio = calculateTileRatio(tile, transform);\n    var round = layer.layout.get('line-cap') === 'round';\n    var posA = lineAtlas.getDash(dasharray.from, round);\n    var posB = lineAtlas.getDash(dasharray.to, round);\n    var widthA = posA.width * crossfade.fromScale;\n    var widthB = posB.width * crossfade.toScale;\n    return performance.extend(lineUniformValues(painter, tile, layer), {\n        'u_patternscale_a': [\n            tileRatio / widthA,\n            -posA.height / 2\n        ],\n        'u_patternscale_b': [\n            tileRatio / widthB,\n            -posB.height / 2\n        ],\n        'u_sdfgamma': lineAtlas.width / (Math.min(widthA, widthB) * 256 * performance.browser.devicePixelRatio) / 2,\n        'u_image': 0,\n        'u_tex_y_a': posA.y,\n        'u_tex_y_b': posB.y,\n        'u_mix': crossfade.t\n    });\n};\nfunction calculateTileRatio(tile, transform) {\n    return 1 / pixelsToTileUnits(tile, 1, transform.tileZoom);\n}\nfunction calculateMatrix(painter, tile, layer) {\n    return painter.translatePosMatrix(tile.tileID.posMatrix, tile, layer.paint.get('line-translate'), layer.paint.get('line-translate-anchor'));\n}\n\nvar rasterUniforms = function (context, locations) {\n    return {\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_tl_parent': new performance.Uniform2f(context, locations.u_tl_parent),\n        'u_scale_parent': new performance.Uniform1f(context, locations.u_scale_parent),\n        'u_buffer_scale': new performance.Uniform1f(context, locations.u_buffer_scale),\n        'u_fade_t': new performance.Uniform1f(context, locations.u_fade_t),\n        'u_opacity': new performance.Uniform1f(context, locations.u_opacity),\n        'u_image0': new performance.Uniform1i(context, locations.u_image0),\n        'u_image1': new performance.Uniform1i(context, locations.u_image1),\n        'u_brightness_low': new performance.Uniform1f(context, locations.u_brightness_low),\n        'u_brightness_high': new performance.Uniform1f(context, locations.u_brightness_high),\n        'u_saturation_factor': new performance.Uniform1f(context, locations.u_saturation_factor),\n        'u_contrast_factor': new performance.Uniform1f(context, locations.u_contrast_factor),\n        'u_spin_weights': new performance.Uniform3f(context, locations.u_spin_weights)\n    };\n};\nvar rasterUniformValues = function (matrix, parentTL, parentScaleBy, fade, layer) {\n    return {\n        'u_matrix': matrix,\n        'u_tl_parent': parentTL,\n        'u_scale_parent': parentScaleBy,\n        'u_buffer_scale': 1,\n        'u_fade_t': fade.mix,\n        'u_opacity': fade.opacity * layer.paint.get('raster-opacity'),\n        'u_image0': 0,\n        'u_image1': 1,\n        'u_brightness_low': layer.paint.get('raster-brightness-min'),\n        'u_brightness_high': layer.paint.get('raster-brightness-max'),\n        'u_saturation_factor': saturationFactor(layer.paint.get('raster-saturation')),\n        'u_contrast_factor': contrastFactor(layer.paint.get('raster-contrast')),\n        'u_spin_weights': spinWeights(layer.paint.get('raster-hue-rotate'))\n    };\n};\nfunction spinWeights(angle) {\n    angle *= Math.PI / 180;\n    var s = Math.sin(angle);\n    var c = Math.cos(angle);\n    return [\n        (2 * c + 1) / 3,\n        (-Math.sqrt(3) * s - c + 1) / 3,\n        (Math.sqrt(3) * s - c + 1) / 3\n    ];\n}\nfunction contrastFactor(contrast) {\n    return contrast > 0 ? 1 / (1 - contrast) : 1 + contrast;\n}\nfunction saturationFactor(saturation) {\n    return saturation > 0 ? 1 - 1 / (1.001 - saturation) : -saturation;\n}\n\nvar symbolIconUniforms = function (context, locations) {\n    return {\n        'u_is_size_zoom_constant': new performance.Uniform1i(context, locations.u_is_size_zoom_constant),\n        'u_is_size_feature_constant': new performance.Uniform1i(context, locations.u_is_size_feature_constant),\n        'u_size_t': new performance.Uniform1f(context, locations.u_size_t),\n        'u_size': new performance.Uniform1f(context, locations.u_size),\n        'u_camera_to_center_distance': new performance.Uniform1f(context, locations.u_camera_to_center_distance),\n        'u_pitch': new performance.Uniform1f(context, locations.u_pitch),\n        'u_rotate_symbol': new performance.Uniform1i(context, locations.u_rotate_symbol),\n        'u_aspect_ratio': new performance.Uniform1f(context, locations.u_aspect_ratio),\n        'u_fade_change': new performance.Uniform1f(context, locations.u_fade_change),\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_label_plane_matrix': new performance.UniformMatrix4f(context, locations.u_label_plane_matrix),\n        'u_coord_matrix': new performance.UniformMatrix4f(context, locations.u_coord_matrix),\n        'u_is_text': new performance.Uniform1i(context, locations.u_is_text),\n        'u_pitch_with_map': new performance.Uniform1i(context, locations.u_pitch_with_map),\n        'u_texsize': new performance.Uniform2f(context, locations.u_texsize),\n        'u_texture': new performance.Uniform1i(context, locations.u_texture)\n    };\n};\nvar symbolSDFUniforms = function (context, locations) {\n    return {\n        'u_is_size_zoom_constant': new performance.Uniform1i(context, locations.u_is_size_zoom_constant),\n        'u_is_size_feature_constant': new performance.Uniform1i(context, locations.u_is_size_feature_constant),\n        'u_size_t': new performance.Uniform1f(context, locations.u_size_t),\n        'u_size': new performance.Uniform1f(context, locations.u_size),\n        'u_camera_to_center_distance': new performance.Uniform1f(context, locations.u_camera_to_center_distance),\n        'u_pitch': new performance.Uniform1f(context, locations.u_pitch),\n        'u_rotate_symbol': new performance.Uniform1i(context, locations.u_rotate_symbol),\n        'u_aspect_ratio': new performance.Uniform1f(context, locations.u_aspect_ratio),\n        'u_fade_change': new performance.Uniform1f(context, locations.u_fade_change),\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_label_plane_matrix': new performance.UniformMatrix4f(context, locations.u_label_plane_matrix),\n        'u_coord_matrix': new performance.UniformMatrix4f(context, locations.u_coord_matrix),\n        'u_is_text': new performance.Uniform1i(context, locations.u_is_text),\n        'u_pitch_with_map': new performance.Uniform1i(context, locations.u_pitch_with_map),\n        'u_texsize': new performance.Uniform2f(context, locations.u_texsize),\n        'u_texture': new performance.Uniform1i(context, locations.u_texture),\n        'u_gamma_scale': new performance.Uniform1f(context, locations.u_gamma_scale),\n        'u_device_pixel_ratio': new performance.Uniform1f(context, locations.u_device_pixel_ratio),\n        'u_is_halo': new performance.Uniform1i(context, locations.u_is_halo)\n    };\n};\nvar symbolTextAndIconUniforms = function (context, locations) {\n    return {\n        'u_is_size_zoom_constant': new performance.Uniform1i(context, locations.u_is_size_zoom_constant),\n        'u_is_size_feature_constant': new performance.Uniform1i(context, locations.u_is_size_feature_constant),\n        'u_size_t': new performance.Uniform1f(context, locations.u_size_t),\n        'u_size': new performance.Uniform1f(context, locations.u_size),\n        'u_camera_to_center_distance': new performance.Uniform1f(context, locations.u_camera_to_center_distance),\n        'u_pitch': new performance.Uniform1f(context, locations.u_pitch),\n        'u_rotate_symbol': new performance.Uniform1i(context, locations.u_rotate_symbol),\n        'u_aspect_ratio': new performance.Uniform1f(context, locations.u_aspect_ratio),\n        'u_fade_change': new performance.Uniform1f(context, locations.u_fade_change),\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_label_plane_matrix': new performance.UniformMatrix4f(context, locations.u_label_plane_matrix),\n        'u_coord_matrix': new performance.UniformMatrix4f(context, locations.u_coord_matrix),\n        'u_is_text': new performance.Uniform1i(context, locations.u_is_text),\n        'u_pitch_with_map': new performance.Uniform1i(context, locations.u_pitch_with_map),\n        'u_texsize': new performance.Uniform2f(context, locations.u_texsize),\n        'u_texsize_icon': new performance.Uniform2f(context, locations.u_texsize_icon),\n        'u_texture': new performance.Uniform1i(context, locations.u_texture),\n        'u_texture_icon': new performance.Uniform1i(context, locations.u_texture_icon),\n        'u_gamma_scale': new performance.Uniform1f(context, locations.u_gamma_scale),\n        'u_device_pixel_ratio': new performance.Uniform1f(context, locations.u_device_pixel_ratio),\n        'u_is_halo': new performance.Uniform1i(context, locations.u_is_halo)\n    };\n};\nvar symbolIconUniformValues = function (functionType, size, rotateInShader, pitchWithMap, painter, matrix, labelPlaneMatrix, glCoordMatrix, isText, texSize) {\n    var transform = painter.transform;\n    return {\n        'u_is_size_zoom_constant': +(functionType === 'constant' || functionType === 'source'),\n        'u_is_size_feature_constant': +(functionType === 'constant' || functionType === 'camera'),\n        'u_size_t': size ? size.uSizeT : 0,\n        'u_size': size ? size.uSize : 0,\n        'u_camera_to_center_distance': transform.cameraToCenterDistance,\n        'u_pitch': transform.pitch / 360 * 2 * Math.PI,\n        'u_rotate_symbol': +rotateInShader,\n        'u_aspect_ratio': transform.width / transform.height,\n        'u_fade_change': painter.options.fadeDuration ? painter.symbolFadeChange : 1,\n        'u_matrix': matrix,\n        'u_label_plane_matrix': labelPlaneMatrix,\n        'u_coord_matrix': glCoordMatrix,\n        'u_is_text': +isText,\n        'u_pitch_with_map': +pitchWithMap,\n        'u_texsize': texSize,\n        'u_texture': 0\n    };\n};\nvar symbolSDFUniformValues = function (functionType, size, rotateInShader, pitchWithMap, painter, matrix, labelPlaneMatrix, glCoordMatrix, isText, texSize, isHalo) {\n    var transform = painter.transform;\n    return performance.extend(symbolIconUniformValues(functionType, size, rotateInShader, pitchWithMap, painter, matrix, labelPlaneMatrix, glCoordMatrix, isText, texSize), {\n        'u_gamma_scale': pitchWithMap ? Math.cos(transform._pitch) * transform.cameraToCenterDistance : 1,\n        'u_device_pixel_ratio': performance.browser.devicePixelRatio,\n        'u_is_halo': +isHalo\n    });\n};\nvar symbolTextAndIconUniformValues = function (functionType, size, rotateInShader, pitchWithMap, painter, matrix, labelPlaneMatrix, glCoordMatrix, texSizeSDF, texSizeIcon) {\n    return performance.extend(symbolSDFUniformValues(functionType, size, rotateInShader, pitchWithMap, painter, matrix, labelPlaneMatrix, glCoordMatrix, true, texSizeSDF, true), {\n        'u_texsize_icon': texSizeIcon,\n        'u_texture_icon': 1\n    });\n};\n\nvar backgroundUniforms = function (context, locations) {\n    return {\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_opacity': new performance.Uniform1f(context, locations.u_opacity),\n        'u_color': new performance.UniformColor(context, locations.u_color)\n    };\n};\nvar backgroundPatternUniforms = function (context, locations) {\n    return {\n        'u_matrix': new performance.UniformMatrix4f(context, locations.u_matrix),\n        'u_opacity': new performance.Uniform1f(context, locations.u_opacity),\n        'u_image': new performance.Uniform1i(context, locations.u_image),\n        'u_pattern_tl_a': new performance.Uniform2f(context, locations.u_pattern_tl_a),\n        'u_pattern_br_a': new performance.Uniform2f(context, locations.u_pattern_br_a),\n        'u_pattern_tl_b': new performance.Uniform2f(context, locations.u_pattern_tl_b),\n        'u_pattern_br_b': new performance.Uniform2f(context, locations.u_pattern_br_b),\n        'u_texsize': new performance.Uniform2f(context, locations.u_texsize),\n        'u_mix': new performance.Uniform1f(context, locations.u_mix),\n        'u_pattern_size_a': new performance.Uniform2f(context, locations.u_pattern_size_a),\n        'u_pattern_size_b': new performance.Uniform2f(context, locations.u_pattern_size_b),\n        'u_scale_a': new performance.Uniform1f(context, locations.u_scale_a),\n        'u_scale_b': new performance.Uniform1f(context, locations.u_scale_b),\n        'u_pixel_coord_upper': new performance.Uniform2f(context, locations.u_pixel_coord_upper),\n        'u_pixel_coord_lower': new performance.Uniform2f(context, locations.u_pixel_coord_lower),\n        'u_tile_units_to_pixels': new performance.Uniform1f(context, locations.u_tile_units_to_pixels)\n    };\n};\nvar backgroundUniformValues = function (matrix, opacity, color) {\n    return {\n        'u_matrix': matrix,\n        'u_opacity': opacity,\n        'u_color': color\n    };\n};\nvar backgroundPatternUniformValues = function (matrix, opacity, painter, image, tile, crossfade) {\n    return performance.extend(bgPatternUniformValues(image, crossfade, painter, tile), {\n        'u_matrix': matrix,\n        'u_opacity': opacity\n    });\n};\n\nvar programUniforms = {\n    fillExtrusion: fillExtrusionUniforms,\n    fillExtrusionPattern: fillExtrusionPatternUniforms,\n    fill: fillUniforms,\n    fillPattern: fillPatternUniforms,\n    fillOutline: fillOutlineUniforms,\n    fillOutlinePattern: fillOutlinePatternUniforms,\n    circle: circleUniforms,\n    collisionBox: collisionUniforms,\n    collisionCircle: collisionCircleUniforms,\n    debug: debugUniforms,\n    clippingMask: clippingMaskUniforms,\n    heatmap: heatmapUniforms,\n    heatmapTexture: heatmapTextureUniforms,\n    hillshade: hillshadeUniforms,\n    hillshadePrepare: hillshadePrepareUniforms,\n    line: lineUniforms,\n    lineGradient: lineGradientUniforms,\n    linePattern: linePatternUniforms,\n    lineSDF: lineSDFUniforms,\n    raster: rasterUniforms,\n    symbolIcon: symbolIconUniforms,\n    symbolSDF: symbolSDFUniforms,\n    symbolTextAndIcon: symbolTextAndIconUniforms,\n    background: backgroundUniforms,\n    backgroundPattern: backgroundPatternUniforms\n};\n\nvar quadTriangles;\nfunction drawCollisionDebug(painter, sourceCache, layer, coords, translate, translateAnchor, isText) {\n    var context = painter.context;\n    var gl = context.gl;\n    var program = painter.useProgram('collisionBox');\n    var tileBatches = [];\n    var circleCount = 0;\n    var circleOffset = 0;\n    for (var i = 0; i < coords.length; i++) {\n        var coord = coords[i];\n        var tile = sourceCache.getTile(coord);\n        var bucket = tile.getBucket(layer);\n        if (!bucket) {\n            continue;\n        }\n        var posMatrix = coord.posMatrix;\n        if (translate[0] !== 0 || translate[1] !== 0) {\n            posMatrix = painter.translatePosMatrix(coord.posMatrix, tile, translate, translateAnchor);\n        }\n        var buffers = isText ? bucket.textCollisionBox : bucket.iconCollisionBox;\n        var circleArray = bucket.collisionCircleArray;\n        if (circleArray.length > 0) {\n            var invTransform = performance.create();\n            var transform = posMatrix;\n            performance.mul(invTransform, bucket.placementInvProjMatrix, painter.transform.glCoordMatrix);\n            performance.mul(invTransform, invTransform, bucket.placementViewportMatrix);\n            tileBatches.push({\n                circleArray: circleArray,\n                circleOffset: circleOffset,\n                transform: transform,\n                invTransform: invTransform\n            });\n            circleCount += circleArray.length / 4;\n            circleOffset = circleCount;\n        }\n        if (!buffers) {\n            continue;\n        }\n        program.draw(context, gl.LINES, DepthMode.disabled, StencilMode.disabled, painter.colorModeForRenderPass(), CullFaceMode.disabled, collisionUniformValues(posMatrix, painter.transform, tile), layer.id, buffers.layoutVertexBuffer, buffers.indexBuffer, buffers.segments, null, painter.transform.zoom, null, null, buffers.collisionVertexBuffer);\n    }\n    if (!isText || !tileBatches.length) {\n        return;\n    }\n    var circleProgram = painter.useProgram('collisionCircle');\n    var vertexData = new performance.StructArrayLayout2f1f2i16();\n    vertexData.resize(circleCount * 4);\n    vertexData._trim();\n    var vertexOffset = 0;\n    for (var i$2 = 0, list = tileBatches; i$2 < list.length; i$2 += 1) {\n        var batch = list[i$2];\n        for (var i$1 = 0; i$1 < batch.circleArray.length / 4; i$1++) {\n            var circleIdx = i$1 * 4;\n            var x = batch.circleArray[circleIdx + 0];\n            var y = batch.circleArray[circleIdx + 1];\n            var radius = batch.circleArray[circleIdx + 2];\n            var collision = batch.circleArray[circleIdx + 3];\n            vertexData.emplace(vertexOffset++, x, y, radius, collision, 0);\n            vertexData.emplace(vertexOffset++, x, y, radius, collision, 1);\n            vertexData.emplace(vertexOffset++, x, y, radius, collision, 2);\n            vertexData.emplace(vertexOffset++, x, y, radius, collision, 3);\n        }\n    }\n    if (!quadTriangles || quadTriangles.length < circleCount * 2) {\n        quadTriangles = createQuadTriangles(circleCount);\n    }\n    var indexBuffer = context.createIndexBuffer(quadTriangles, true);\n    var vertexBuffer = context.createVertexBuffer(vertexData, performance.collisionCircleLayout.members, true);\n    for (var i$3 = 0, list$1 = tileBatches; i$3 < list$1.length; i$3 += 1) {\n        var batch$1 = list$1[i$3];\n        var uniforms = collisionCircleUniformValues(batch$1.transform, batch$1.invTransform, painter.transform);\n        circleProgram.draw(context, gl.TRIANGLES, DepthMode.disabled, StencilMode.disabled, painter.colorModeForRenderPass(), CullFaceMode.disabled, uniforms, layer.id, vertexBuffer, indexBuffer, performance.SegmentVector.simpleSegment(0, batch$1.circleOffset * 2, batch$1.circleArray.length, batch$1.circleArray.length / 2), null, painter.transform.zoom, null, null, null);\n    }\n    vertexBuffer.destroy();\n    indexBuffer.destroy();\n}\nfunction createQuadTriangles(quadCount) {\n    var triCount = quadCount * 2;\n    var array = new performance.StructArrayLayout3ui6();\n    array.resize(triCount);\n    array._trim();\n    for (var i = 0; i < triCount; i++) {\n        var idx = i * 6;\n        array.uint16[idx + 0] = i * 4 + 0;\n        array.uint16[idx + 1] = i * 4 + 1;\n        array.uint16[idx + 2] = i * 4 + 2;\n        array.uint16[idx + 3] = i * 4 + 2;\n        array.uint16[idx + 4] = i * 4 + 3;\n        array.uint16[idx + 5] = i * 4 + 0;\n    }\n    return array;\n}\n\nvar identityMat4 = performance.identity(new Float32Array(16));\nfunction drawSymbols(painter, sourceCache, layer, coords, variableOffsets) {\n    if (painter.renderPass !== 'translucent') {\n        return;\n    }\n    var stencilMode = StencilMode.disabled;\n    var colorMode = painter.colorModeForRenderPass();\n    var variablePlacement = layer.layout.get('text-variable-anchor');\n    if (variablePlacement) {\n        updateVariableAnchors(coords, painter, layer, sourceCache, layer.layout.get('text-rotation-alignment'), layer.layout.get('text-pitch-alignment'), variableOffsets);\n    }\n    if (layer.paint.get('icon-opacity').constantOr(1) !== 0) {\n        drawLayerSymbols(painter, sourceCache, layer, coords, false, layer.paint.get('icon-translate'), layer.paint.get('icon-translate-anchor'), layer.layout.get('icon-rotation-alignment'), layer.layout.get('icon-pitch-alignment'), layer.layout.get('icon-keep-upright'), stencilMode, colorMode);\n    }\n    if (layer.paint.get('text-opacity').constantOr(1) !== 0) {\n        drawLayerSymbols(painter, sourceCache, layer, coords, true, layer.paint.get('text-translate'), layer.paint.get('text-translate-anchor'), layer.layout.get('text-rotation-alignment'), layer.layout.get('text-pitch-alignment'), layer.layout.get('text-keep-upright'), stencilMode, colorMode);\n    }\n    if (sourceCache.map.showCollisionBoxes) {\n        drawCollisionDebug(painter, sourceCache, layer, coords, layer.paint.get('text-translate'), layer.paint.get('text-translate-anchor'), true);\n        drawCollisionDebug(painter, sourceCache, layer, coords, layer.paint.get('icon-translate'), layer.paint.get('icon-translate-anchor'), false);\n    }\n}\nfunction calculateVariableRenderShift(anchor, width, height, textOffset, textBoxScale, renderTextSize) {\n    var ref = performance.getAnchorAlignment(anchor);\n    var horizontalAlign = ref.horizontalAlign;\n    var verticalAlign = ref.verticalAlign;\n    var shiftX = -(horizontalAlign - 0.5) * width;\n    var shiftY = -(verticalAlign - 0.5) * height;\n    var variableOffset = performance.evaluateVariableOffset(anchor, textOffset);\n    return new performance.Point((shiftX / textBoxScale + variableOffset[0]) * renderTextSize, (shiftY / textBoxScale + variableOffset[1]) * renderTextSize);\n}\nfunction updateVariableAnchors(coords, painter, layer, sourceCache, rotationAlignment, pitchAlignment, variableOffsets) {\n    var tr = painter.transform;\n    var rotateWithMap = rotationAlignment === 'map';\n    var pitchWithMap = pitchAlignment === 'map';\n    for (var i = 0, list = coords; i < list.length; i += 1) {\n        var coord = list[i];\n        var tile = sourceCache.getTile(coord);\n        var bucket = tile.getBucket(layer);\n        if (!bucket || !bucket.text || !bucket.text.segments.get().length) {\n            continue;\n        }\n        var sizeData = bucket.textSizeData;\n        var size = performance.evaluateSizeForZoom(sizeData, tr.zoom);\n        var pixelToTileScale = pixelsToTileUnits(tile, 1, painter.transform.zoom);\n        var labelPlaneMatrix = getLabelPlaneMatrix(coord.posMatrix, pitchWithMap, rotateWithMap, painter.transform, pixelToTileScale);\n        var updateTextFitIcon = layer.layout.get('icon-text-fit') !== 'none' && bucket.hasIconData();\n        if (size) {\n            var tileScale = Math.pow(2, tr.zoom - tile.tileID.overscaledZ);\n            updateVariableAnchorsForBucket(bucket, rotateWithMap, pitchWithMap, variableOffsets, performance.symbolSize, tr, labelPlaneMatrix, coord.posMatrix, tileScale, size, updateTextFitIcon);\n        }\n    }\n}\nfunction updateVariableAnchorsForBucket(bucket, rotateWithMap, pitchWithMap, variableOffsets, symbolSize, transform, labelPlaneMatrix, posMatrix, tileScale, size, updateTextFitIcon) {\n    var placedSymbols = bucket.text.placedSymbolArray;\n    var dynamicTextLayoutVertexArray = bucket.text.dynamicLayoutVertexArray;\n    var dynamicIconLayoutVertexArray = bucket.icon.dynamicLayoutVertexArray;\n    var placedTextShifts = {};\n    dynamicTextLayoutVertexArray.clear();\n    for (var s = 0; s < placedSymbols.length; s++) {\n        var symbol = placedSymbols.get(s);\n        var skipOrientation = bucket.allowVerticalPlacement && !symbol.placedOrientation;\n        var variableOffset = !symbol.hidden && symbol.crossTileID && !skipOrientation ? variableOffsets[symbol.crossTileID] : null;\n        if (!variableOffset) {\n            hideGlyphs(symbol.numGlyphs, dynamicTextLayoutVertexArray);\n        } else {\n            var tileAnchor = new performance.Point(symbol.anchorX, symbol.anchorY);\n            var projectedAnchor = project(tileAnchor, pitchWithMap ? posMatrix : labelPlaneMatrix);\n            var perspectiveRatio = getPerspectiveRatio(transform.cameraToCenterDistance, projectedAnchor.signedDistanceFromCamera);\n            var renderTextSize = symbolSize.evaluateSizeForFeature(bucket.textSizeData, size, symbol) * perspectiveRatio / performance.ONE_EM;\n            if (pitchWithMap) {\n                renderTextSize *= bucket.tilePixelRatio / tileScale;\n            }\n            var width = variableOffset.width;\n            var height = variableOffset.height;\n            var anchor = variableOffset.anchor;\n            var textOffset = variableOffset.textOffset;\n            var textBoxScale = variableOffset.textBoxScale;\n            var shift = calculateVariableRenderShift(anchor, width, height, textOffset, textBoxScale, renderTextSize);\n            var shiftedAnchor = pitchWithMap ? project(tileAnchor.add(shift), labelPlaneMatrix).point : projectedAnchor.point.add(rotateWithMap ? shift.rotate(-transform.angle) : shift);\n            var angle = bucket.allowVerticalPlacement && symbol.placedOrientation === performance.WritingMode.vertical ? Math.PI / 2 : 0;\n            for (var g = 0; g < symbol.numGlyphs; g++) {\n                performance.addDynamicAttributes(dynamicTextLayoutVertexArray, shiftedAnchor, angle);\n            }\n            if (updateTextFitIcon && symbol.associatedIconIndex >= 0) {\n                placedTextShifts[symbol.associatedIconIndex] = {\n                    shiftedAnchor: shiftedAnchor,\n                    angle: angle\n                };\n            }\n        }\n    }\n    if (updateTextFitIcon) {\n        dynamicIconLayoutVertexArray.clear();\n        var placedIcons = bucket.icon.placedSymbolArray;\n        for (var i = 0; i < placedIcons.length; i++) {\n            var placedIcon = placedIcons.get(i);\n            if (placedIcon.hidden) {\n                hideGlyphs(placedIcon.numGlyphs, dynamicIconLayoutVertexArray);\n            } else {\n                var shift$1 = placedTextShifts[i];\n                if (!shift$1) {\n                    hideGlyphs(placedIcon.numGlyphs, dynamicIconLayoutVertexArray);\n                } else {\n                    for (var g$1 = 0; g$1 < placedIcon.numGlyphs; g$1++) {\n                        performance.addDynamicAttributes(dynamicIconLayoutVertexArray, shift$1.shiftedAnchor, shift$1.angle);\n                    }\n                }\n            }\n        }\n        bucket.icon.dynamicLayoutVertexBuffer.updateData(dynamicIconLayoutVertexArray);\n    }\n    bucket.text.dynamicLayoutVertexBuffer.updateData(dynamicTextLayoutVertexArray);\n}\nfunction getSymbolProgramName(isSDF, isText, bucket) {\n    if (bucket.iconsInText && isText) {\n        return 'symbolTextAndIcon';\n    } else if (isSDF) {\n        return 'symbolSDF';\n    } else {\n        return 'symbolIcon';\n    }\n}\nfunction drawLayerSymbols(painter, sourceCache, layer, coords, isText, translate, translateAnchor, rotationAlignment, pitchAlignment, keepUpright, stencilMode, colorMode) {\n    var context = painter.context;\n    var gl = context.gl;\n    var tr = painter.transform;\n    var rotateWithMap = rotationAlignment === 'map';\n    var pitchWithMap = pitchAlignment === 'map';\n    var alongLine = rotateWithMap && layer.layout.get('symbol-placement') !== 'point';\n    var rotateInShader = rotateWithMap && !pitchWithMap && !alongLine;\n    var sortFeaturesByKey = layer.layout.get('symbol-sort-key').constantOr(1) !== undefined;\n    var depthMode = painter.depthModeForSublayer(0, DepthMode.ReadOnly);\n    var variablePlacement = layer.layout.get('text-variable-anchor');\n    var tileRenderState = [];\n    for (var i$1 = 0, list$1 = coords; i$1 < list$1.length; i$1 += 1) {\n        var coord = list$1[i$1];\n        var tile = sourceCache.getTile(coord);\n        var bucket = tile.getBucket(layer);\n        if (!bucket) {\n            continue;\n        }\n        var buffers = isText ? bucket.text : bucket.icon;\n        if (!buffers || !buffers.segments.get().length) {\n            continue;\n        }\n        var programConfiguration = buffers.programConfigurations.get(layer.id);\n        var isSDF = isText || bucket.sdfIcons;\n        var sizeData = isText ? bucket.textSizeData : bucket.iconSizeData;\n        var transformed = pitchWithMap || tr.pitch !== 0;\n        var program = painter.useProgram(getSymbolProgramName(isSDF, isText, bucket), programConfiguration);\n        var size = performance.evaluateSizeForZoom(sizeData, tr.zoom);\n        var texSize = void 0;\n        var texSizeIcon = [\n            0,\n            0\n        ];\n        var atlasTexture = void 0;\n        var atlasInterpolation = void 0;\n        var atlasTextureIcon = null;\n        var atlasInterpolationIcon = void 0;\n        if (isText) {\n            atlasTexture = tile.glyphAtlasTexture;\n            atlasInterpolation = gl.LINEAR;\n            texSize = tile.glyphAtlasTexture.size;\n            if (bucket.iconsInText) {\n                texSizeIcon = tile.imageAtlasTexture.size;\n                atlasTextureIcon = tile.imageAtlasTexture;\n                var zoomDependentSize = sizeData.kind === 'composite' || sizeData.kind === 'camera';\n                atlasInterpolationIcon = transformed || painter.options.rotating || painter.options.zooming || zoomDependentSize ? gl.LINEAR : gl.NEAREST;\n            }\n        } else {\n            var iconScaled = layer.layout.get('icon-size').constantOr(0) !== 1 || bucket.iconsNeedLinear;\n            atlasTexture = tile.imageAtlasTexture;\n            atlasInterpolation = isSDF || painter.options.rotating || painter.options.zooming || iconScaled || transformed ? gl.LINEAR : gl.NEAREST;\n            texSize = tile.imageAtlasTexture.size;\n        }\n        var s = pixelsToTileUnits(tile, 1, painter.transform.zoom);\n        var labelPlaneMatrix = getLabelPlaneMatrix(coord.posMatrix, pitchWithMap, rotateWithMap, painter.transform, s);\n        var glCoordMatrix = getGlCoordMatrix(coord.posMatrix, pitchWithMap, rotateWithMap, painter.transform, s);\n        var hasVariableAnchors = variablePlacement && bucket.hasTextData();\n        var updateTextFitIcon = layer.layout.get('icon-text-fit') !== 'none' && hasVariableAnchors && bucket.hasIconData();\n        if (alongLine) {\n            updateLineLabels(bucket, coord.posMatrix, painter, isText, labelPlaneMatrix, glCoordMatrix, pitchWithMap, keepUpright);\n        }\n        var matrix = painter.translatePosMatrix(coord.posMatrix, tile, translate, translateAnchor), uLabelPlaneMatrix = alongLine || isText && variablePlacement || updateTextFitIcon ? identityMat4 : labelPlaneMatrix, uglCoordMatrix = painter.translatePosMatrix(glCoordMatrix, tile, translate, translateAnchor, true);\n        var hasHalo = isSDF && layer.paint.get(isText ? 'text-halo-width' : 'icon-halo-width').constantOr(1) !== 0;\n        var uniformValues = void 0;\n        if (isSDF) {\n            if (!bucket.iconsInText) {\n                uniformValues = symbolSDFUniformValues(sizeData.kind, size, rotateInShader, pitchWithMap, painter, matrix, uLabelPlaneMatrix, uglCoordMatrix, isText, texSize, true);\n            } else {\n                uniformValues = symbolTextAndIconUniformValues(sizeData.kind, size, rotateInShader, pitchWithMap, painter, matrix, uLabelPlaneMatrix, uglCoordMatrix, texSize, texSizeIcon);\n            }\n        } else {\n            uniformValues = symbolIconUniformValues(sizeData.kind, size, rotateInShader, pitchWithMap, painter, matrix, uLabelPlaneMatrix, uglCoordMatrix, isText, texSize);\n        }\n        var state = {\n            program: program,\n            buffers: buffers,\n            uniformValues: uniformValues,\n            atlasTexture: atlasTexture,\n            atlasTextureIcon: atlasTextureIcon,\n            atlasInterpolation: atlasInterpolation,\n            atlasInterpolationIcon: atlasInterpolationIcon,\n            isSDF: isSDF,\n            hasHalo: hasHalo\n        };\n        if (sortFeaturesByKey) {\n            var oldSegments = buffers.segments.get();\n            for (var i = 0, list = oldSegments; i < list.length; i += 1) {\n                var segment = list[i];\n                tileRenderState.push({\n                    segments: new performance.SegmentVector([segment]),\n                    sortKey: segment.sortKey,\n                    state: state\n                });\n            }\n        } else {\n            tileRenderState.push({\n                segments: buffers.segments,\n                sortKey: 0,\n                state: state\n            });\n        }\n    }\n    if (sortFeaturesByKey) {\n        tileRenderState.sort(function (a, b) {\n            return a.sortKey - b.sortKey;\n        });\n    }\n    for (var i$2 = 0, list$2 = tileRenderState; i$2 < list$2.length; i$2 += 1) {\n        var segmentState = list$2[i$2];\n        var state$1 = segmentState.state;\n        context.activeTexture.set(gl.TEXTURE0);\n        state$1.atlasTexture.bind(state$1.atlasInterpolation, gl.CLAMP_TO_EDGE);\n        if (state$1.atlasTextureIcon) {\n            context.activeTexture.set(gl.TEXTURE1);\n            if (state$1.atlasTextureIcon) {\n                state$1.atlasTextureIcon.bind(state$1.atlasInterpolationIcon, gl.CLAMP_TO_EDGE);\n            }\n        }\n        if (state$1.isSDF) {\n            var uniformValues$1 = state$1.uniformValues;\n            if (state$1.hasHalo) {\n                uniformValues$1['u_is_halo'] = 1;\n                drawSymbolElements(state$1.buffers, segmentState.segments, layer, painter, state$1.program, depthMode, stencilMode, colorMode, uniformValues$1);\n            }\n            uniformValues$1['u_is_halo'] = 0;\n        }\n        drawSymbolElements(state$1.buffers, segmentState.segments, layer, painter, state$1.program, depthMode, stencilMode, colorMode, state$1.uniformValues);\n    }\n}\nfunction drawSymbolElements(buffers, segments, layer, painter, program, depthMode, stencilMode, colorMode, uniformValues) {\n    var context = painter.context;\n    var gl = context.gl;\n    program.draw(context, gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.disabled, uniformValues, layer.id, buffers.layoutVertexBuffer, buffers.indexBuffer, segments, layer.paint, painter.transform.zoom, buffers.programConfigurations.get(layer.id), buffers.dynamicLayoutVertexBuffer, buffers.opacityVertexBuffer);\n}\n\nfunction drawCircles(painter, sourceCache, layer, coords) {\n    if (painter.renderPass !== 'translucent') {\n        return;\n    }\n    var opacity = layer.paint.get('circle-opacity');\n    var strokeWidth = layer.paint.get('circle-stroke-width');\n    var strokeOpacity = layer.paint.get('circle-stroke-opacity');\n    var sortFeaturesByKey = layer.layout.get('circle-sort-key').constantOr(1) !== undefined;\n    if (opacity.constantOr(1) === 0 && (strokeWidth.constantOr(1) === 0 || strokeOpacity.constantOr(1) === 0)) {\n        return;\n    }\n    var context = painter.context;\n    var gl = context.gl;\n    var depthMode = painter.depthModeForSublayer(0, DepthMode.ReadOnly);\n    var stencilMode = StencilMode.disabled;\n    var colorMode = painter.colorModeForRenderPass();\n    var segmentsRenderStates = [];\n    for (var i = 0; i < coords.length; i++) {\n        var coord = coords[i];\n        var tile = sourceCache.getTile(coord);\n        var bucket = tile.getBucket(layer);\n        if (!bucket) {\n            continue;\n        }\n        var programConfiguration = bucket.programConfigurations.get(layer.id);\n        var program = painter.useProgram('circle', programConfiguration);\n        var layoutVertexBuffer = bucket.layoutVertexBuffer;\n        var indexBuffer = bucket.indexBuffer;\n        var uniformValues = circleUniformValues(painter, coord, tile, layer);\n        var state = {\n            programConfiguration: programConfiguration,\n            program: program,\n            layoutVertexBuffer: layoutVertexBuffer,\n            indexBuffer: indexBuffer,\n            uniformValues: uniformValues\n        };\n        if (sortFeaturesByKey) {\n            var oldSegments = bucket.segments.get();\n            for (var i$1 = 0, list = oldSegments; i$1 < list.length; i$1 += 1) {\n                var segment = list[i$1];\n                segmentsRenderStates.push({\n                    segments: new performance.SegmentVector([segment]),\n                    sortKey: segment.sortKey,\n                    state: state\n                });\n            }\n        } else {\n            segmentsRenderStates.push({\n                segments: bucket.segments,\n                sortKey: 0,\n                state: state\n            });\n        }\n    }\n    if (sortFeaturesByKey) {\n        segmentsRenderStates.sort(function (a, b) {\n            return a.sortKey - b.sortKey;\n        });\n    }\n    for (var i$2 = 0, list$1 = segmentsRenderStates; i$2 < list$1.length; i$2 += 1) {\n        var segmentsState = list$1[i$2];\n        var ref = segmentsState.state;\n        var programConfiguration$1 = ref.programConfiguration;\n        var program$1 = ref.program;\n        var layoutVertexBuffer$1 = ref.layoutVertexBuffer;\n        var indexBuffer$1 = ref.indexBuffer;\n        var uniformValues$1 = ref.uniformValues;\n        var segments = segmentsState.segments;\n        program$1.draw(context, gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.disabled, uniformValues$1, layer.id, layoutVertexBuffer$1, indexBuffer$1, segments, layer.paint, painter.transform.zoom, programConfiguration$1);\n    }\n}\n\nfunction drawHeatmap(painter, sourceCache, layer, coords) {\n    if (layer.paint.get('heatmap-opacity') === 0) {\n        return;\n    }\n    if (painter.renderPass === 'offscreen') {\n        var context = painter.context;\n        var gl = context.gl;\n        var stencilMode = StencilMode.disabled;\n        var colorMode = new ColorMode([\n            gl.ONE,\n            gl.ONE\n        ], performance.Color.transparent, [\n            true,\n            true,\n            true,\n            true\n        ]);\n        bindFramebuffer(context, painter, layer);\n        context.clear({ color: performance.Color.transparent });\n        for (var i = 0; i < coords.length; i++) {\n            var coord = coords[i];\n            if (sourceCache.hasRenderableParent(coord)) {\n                continue;\n            }\n            var tile = sourceCache.getTile(coord);\n            var bucket = tile.getBucket(layer);\n            if (!bucket) {\n                continue;\n            }\n            var programConfiguration = bucket.programConfigurations.get(layer.id);\n            var program = painter.useProgram('heatmap', programConfiguration);\n            var ref = painter.transform;\n            var zoom = ref.zoom;\n            program.draw(context, gl.TRIANGLES, DepthMode.disabled, stencilMode, colorMode, CullFaceMode.disabled, heatmapUniformValues(coord.posMatrix, tile, zoom, layer.paint.get('heatmap-intensity')), layer.id, bucket.layoutVertexBuffer, bucket.indexBuffer, bucket.segments, layer.paint, painter.transform.zoom, programConfiguration);\n        }\n        context.viewport.set([\n            0,\n            0,\n            painter.width,\n            painter.height\n        ]);\n    } else if (painter.renderPass === 'translucent') {\n        painter.context.setColorMode(painter.colorModeForRenderPass());\n        renderTextureToMap(painter, layer);\n    }\n}\nfunction bindFramebuffer(context, painter, layer) {\n    var gl = context.gl;\n    context.activeTexture.set(gl.TEXTURE1);\n    context.viewport.set([\n        0,\n        0,\n        painter.width / 4,\n        painter.height / 4\n    ]);\n    var fbo = layer.heatmapFbo;\n    if (!fbo) {\n        var texture = gl.createTexture();\n        gl.bindTexture(gl.TEXTURE_2D, texture);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n        fbo = layer.heatmapFbo = context.createFramebuffer(painter.width / 4, painter.height / 4, false);\n        bindTextureToFramebuffer(context, painter, texture, fbo);\n    } else {\n        gl.bindTexture(gl.TEXTURE_2D, fbo.colorAttachment.get());\n        context.bindFramebuffer.set(fbo.framebuffer);\n    }\n}\nfunction bindTextureToFramebuffer(context, painter, texture, fbo) {\n    var gl = context.gl;\n    var internalFormat = context.extRenderToTextureHalfFloat ? context.extTextureHalfFloat.HALF_FLOAT_OES : gl.UNSIGNED_BYTE;\n    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, painter.width / 4, painter.height / 4, 0, gl.RGBA, internalFormat, null);\n    fbo.colorAttachment.set(texture);\n}\nfunction renderTextureToMap(painter, layer) {\n    var context = painter.context;\n    var gl = context.gl;\n    var fbo = layer.heatmapFbo;\n    if (!fbo) {\n        return;\n    }\n    context.activeTexture.set(gl.TEXTURE0);\n    gl.bindTexture(gl.TEXTURE_2D, fbo.colorAttachment.get());\n    context.activeTexture.set(gl.TEXTURE1);\n    var colorRampTexture = layer.colorRampTexture;\n    if (!colorRampTexture) {\n        colorRampTexture = layer.colorRampTexture = new performance.Texture(context, layer.colorRamp, gl.RGBA);\n    }\n    colorRampTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n    painter.useProgram('heatmapTexture').draw(context, gl.TRIANGLES, DepthMode.disabled, StencilMode.disabled, painter.colorModeForRenderPass(), CullFaceMode.disabled, heatmapTextureUniformValues(painter, layer, 0, 1), layer.id, painter.viewportBuffer, painter.quadTriangleIndexBuffer, painter.viewportSegments, layer.paint, painter.transform.zoom);\n}\n\nfunction drawLine(painter, sourceCache, layer, coords) {\n    if (painter.renderPass !== 'translucent') {\n        return;\n    }\n    var opacity = layer.paint.get('line-opacity');\n    var width = layer.paint.get('line-width');\n    if (opacity.constantOr(1) === 0 || width.constantOr(1) === 0) {\n        return;\n    }\n    var depthMode = painter.depthModeForSublayer(0, DepthMode.ReadOnly);\n    var colorMode = painter.colorModeForRenderPass();\n    var dasharray = layer.paint.get('line-dasharray');\n    var patternProperty = layer.paint.get('line-pattern');\n    var image = patternProperty.constantOr(1);\n    var gradient = layer.paint.get('line-gradient');\n    var crossfade = layer.getCrossfadeParameters();\n    var programId = image ? 'linePattern' : dasharray ? 'lineSDF' : gradient ? 'lineGradient' : 'line';\n    var context = painter.context;\n    var gl = context.gl;\n    var firstTile = true;\n    if (gradient) {\n        context.activeTexture.set(gl.TEXTURE0);\n        var gradientTexture = layer.gradientTexture;\n        if (!layer.gradient) {\n            return;\n        }\n        if (!gradientTexture) {\n            gradientTexture = layer.gradientTexture = new performance.Texture(context, layer.gradient, gl.RGBA);\n        }\n        gradientTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n    }\n    for (var i = 0, list = coords; i < list.length; i += 1) {\n        var coord = list[i];\n        var tile = sourceCache.getTile(coord);\n        if (image && !tile.patternsLoaded()) {\n            continue;\n        }\n        var bucket = tile.getBucket(layer);\n        if (!bucket) {\n            continue;\n        }\n        var programConfiguration = bucket.programConfigurations.get(layer.id);\n        var prevProgram = painter.context.program.get();\n        var program = painter.useProgram(programId, programConfiguration);\n        var programChanged = firstTile || program.program !== prevProgram;\n        var constantPattern = patternProperty.constantOr(null);\n        if (constantPattern && tile.imageAtlas) {\n            var atlas = tile.imageAtlas;\n            var posTo = atlas.patternPositions[constantPattern.to.toString()];\n            var posFrom = atlas.patternPositions[constantPattern.from.toString()];\n            if (posTo && posFrom) {\n                programConfiguration.setConstantPatternPositions(posTo, posFrom);\n            }\n        }\n        var uniformValues = image ? linePatternUniformValues(painter, tile, layer, crossfade) : dasharray ? lineSDFUniformValues(painter, tile, layer, dasharray, crossfade) : gradient ? lineGradientUniformValues(painter, tile, layer) : lineUniformValues(painter, tile, layer);\n        if (image) {\n            context.activeTexture.set(gl.TEXTURE0);\n            tile.imageAtlasTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n            programConfiguration.updatePaintBuffers(crossfade);\n        } else if (dasharray && (programChanged || painter.lineAtlas.dirty)) {\n            context.activeTexture.set(gl.TEXTURE0);\n            painter.lineAtlas.bind(context);\n        }\n        program.draw(context, gl.TRIANGLES, depthMode, painter.stencilModeForClipping(coord), colorMode, CullFaceMode.disabled, uniformValues, layer.id, bucket.layoutVertexBuffer, bucket.indexBuffer, bucket.segments, layer.paint, painter.transform.zoom, programConfiguration);\n        firstTile = false;\n    }\n}\n\nfunction drawFill(painter, sourceCache, layer, coords) {\n    var color = layer.paint.get('fill-color');\n    var opacity = layer.paint.get('fill-opacity');\n    if (opacity.constantOr(1) === 0) {\n        return;\n    }\n    var colorMode = painter.colorModeForRenderPass();\n    var pattern = layer.paint.get('fill-pattern');\n    var pass = painter.opaquePassEnabledForLayer() && (!pattern.constantOr(1) && color.constantOr(performance.Color.transparent).a === 1 && opacity.constantOr(0) === 1) ? 'opaque' : 'translucent';\n    if (painter.renderPass === pass) {\n        var depthMode = painter.depthModeForSublayer(1, painter.renderPass === 'opaque' ? DepthMode.ReadWrite : DepthMode.ReadOnly);\n        drawFillTiles(painter, sourceCache, layer, coords, depthMode, colorMode, false);\n    }\n    if (painter.renderPass === 'translucent' && layer.paint.get('fill-antialias')) {\n        var depthMode$1 = painter.depthModeForSublayer(layer.getPaintProperty('fill-outline-color') ? 2 : 0, DepthMode.ReadOnly);\n        drawFillTiles(painter, sourceCache, layer, coords, depthMode$1, colorMode, true);\n    }\n}\nfunction drawFillTiles(painter, sourceCache, layer, coords, depthMode, colorMode, isOutline) {\n    var gl = painter.context.gl;\n    var patternProperty = layer.paint.get('fill-pattern');\n    var image = patternProperty && patternProperty.constantOr(1);\n    var crossfade = layer.getCrossfadeParameters();\n    var drawMode, programName, uniformValues, indexBuffer, segments;\n    if (!isOutline) {\n        programName = image ? 'fillPattern' : 'fill';\n        drawMode = gl.TRIANGLES;\n    } else {\n        programName = image && !layer.getPaintProperty('fill-outline-color') ? 'fillOutlinePattern' : 'fillOutline';\n        drawMode = gl.LINES;\n    }\n    for (var i = 0, list = coords; i < list.length; i += 1) {\n        var coord = list[i];\n        var tile = sourceCache.getTile(coord);\n        if (image && !tile.patternsLoaded()) {\n            continue;\n        }\n        var bucket = tile.getBucket(layer);\n        if (!bucket) {\n            continue;\n        }\n        var programConfiguration = bucket.programConfigurations.get(layer.id);\n        var program = painter.useProgram(programName, programConfiguration);\n        if (image) {\n            painter.context.activeTexture.set(gl.TEXTURE0);\n            tile.imageAtlasTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n            programConfiguration.updatePaintBuffers(crossfade);\n        }\n        var constantPattern = patternProperty.constantOr(null);\n        if (constantPattern && tile.imageAtlas) {\n            var atlas = tile.imageAtlas;\n            var posTo = atlas.patternPositions[constantPattern.to.toString()];\n            var posFrom = atlas.patternPositions[constantPattern.from.toString()];\n            if (posTo && posFrom) {\n                programConfiguration.setConstantPatternPositions(posTo, posFrom);\n            }\n        }\n        var tileMatrix = painter.translatePosMatrix(coord.posMatrix, tile, layer.paint.get('fill-translate'), layer.paint.get('fill-translate-anchor'));\n        if (!isOutline) {\n            indexBuffer = bucket.indexBuffer;\n            segments = bucket.segments;\n            uniformValues = image ? fillPatternUniformValues(tileMatrix, painter, crossfade, tile) : fillUniformValues(tileMatrix);\n        } else {\n            indexBuffer = bucket.indexBuffer2;\n            segments = bucket.segments2;\n            var drawingBufferSize = [\n                gl.drawingBufferWidth,\n                gl.drawingBufferHeight\n            ];\n            uniformValues = programName === 'fillOutlinePattern' && image ? fillOutlinePatternUniformValues(tileMatrix, painter, crossfade, tile, drawingBufferSize) : fillOutlineUniformValues(tileMatrix, drawingBufferSize);\n        }\n        program.draw(painter.context, drawMode, depthMode, painter.stencilModeForClipping(coord), colorMode, CullFaceMode.disabled, uniformValues, layer.id, bucket.layoutVertexBuffer, indexBuffer, segments, layer.paint, painter.transform.zoom, programConfiguration);\n    }\n}\n\nfunction draw(painter, source, layer, coords) {\n    var opacity = layer.paint.get('fill-extrusion-opacity');\n    if (opacity === 0) {\n        return;\n    }\n    if (painter.renderPass === 'translucent') {\n        var depthMode = new DepthMode(painter.context.gl.LEQUAL, DepthMode.ReadWrite, painter.depthRangeFor3D);\n        if (opacity === 1 && !layer.paint.get('fill-extrusion-pattern').constantOr(1)) {\n            var colorMode = painter.colorModeForRenderPass();\n            drawExtrusionTiles(painter, source, layer, coords, depthMode, StencilMode.disabled, colorMode);\n        } else {\n            drawExtrusionTiles(painter, source, layer, coords, depthMode, StencilMode.disabled, ColorMode.disabled);\n            drawExtrusionTiles(painter, source, layer, coords, depthMode, painter.stencilModeFor3D(), painter.colorModeForRenderPass());\n        }\n    }\n}\nfunction drawExtrusionTiles(painter, source, layer, coords, depthMode, stencilMode, colorMode) {\n    var context = painter.context;\n    var gl = context.gl;\n    var patternProperty = layer.paint.get('fill-extrusion-pattern');\n    var image = patternProperty.constantOr(1);\n    var crossfade = layer.getCrossfadeParameters();\n    var opacity = layer.paint.get('fill-extrusion-opacity');\n    for (var i = 0, list = coords; i < list.length; i += 1) {\n        var coord = list[i];\n        var tile = source.getTile(coord);\n        var bucket = tile.getBucket(layer);\n        if (!bucket) {\n            continue;\n        }\n        var programConfiguration = bucket.programConfigurations.get(layer.id);\n        var program = painter.useProgram(image ? 'fillExtrusionPattern' : 'fillExtrusion', programConfiguration);\n        if (image) {\n            painter.context.activeTexture.set(gl.TEXTURE0);\n            tile.imageAtlasTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n            programConfiguration.updatePaintBuffers(crossfade);\n        }\n        var constantPattern = patternProperty.constantOr(null);\n        if (constantPattern && tile.imageAtlas) {\n            var atlas = tile.imageAtlas;\n            var posTo = atlas.patternPositions[constantPattern.to.toString()];\n            var posFrom = atlas.patternPositions[constantPattern.from.toString()];\n            if (posTo && posFrom) {\n                programConfiguration.setConstantPatternPositions(posTo, posFrom);\n            }\n        }\n        var matrix = painter.translatePosMatrix(coord.posMatrix, tile, layer.paint.get('fill-extrusion-translate'), layer.paint.get('fill-extrusion-translate-anchor'));\n        var shouldUseVerticalGradient = layer.paint.get('fill-extrusion-vertical-gradient');\n        var uniformValues = image ? fillExtrusionPatternUniformValues(matrix, painter, shouldUseVerticalGradient, opacity, coord, crossfade, tile) : fillExtrusionUniformValues(matrix, painter, shouldUseVerticalGradient, opacity);\n        program.draw(context, context.gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.backCCW, uniformValues, layer.id, bucket.layoutVertexBuffer, bucket.indexBuffer, bucket.segments, layer.paint, painter.transform.zoom, programConfiguration);\n    }\n}\n\nfunction drawHillshade(painter, sourceCache, layer, tileIDs) {\n    if (painter.renderPass !== 'offscreen' && painter.renderPass !== 'translucent') {\n        return;\n    }\n    var context = painter.context;\n    var sourceMaxZoom = sourceCache.getSource().maxzoom;\n    var depthMode = painter.depthModeForSublayer(0, DepthMode.ReadOnly);\n    var colorMode = painter.colorModeForRenderPass();\n    var ref = painter.renderPass === 'translucent' ? painter.stencilConfigForOverlap(tileIDs) : [\n        {},\n        tileIDs\n    ];\n    var stencilModes = ref[0];\n    var coords = ref[1];\n    for (var i = 0, list = coords; i < list.length; i += 1) {\n        var coord = list[i];\n        var tile = sourceCache.getTile(coord);\n        if (tile.needsHillshadePrepare && painter.renderPass === 'offscreen') {\n            prepareHillshade(painter, tile, layer, sourceMaxZoom, depthMode, StencilMode.disabled, colorMode);\n        } else if (painter.renderPass === 'translucent') {\n            renderHillshade(painter, tile, layer, depthMode, stencilModes[coord.overscaledZ], colorMode);\n        }\n    }\n    context.viewport.set([\n        0,\n        0,\n        painter.width,\n        painter.height\n    ]);\n}\nfunction renderHillshade(painter, tile, layer, depthMode, stencilMode, colorMode) {\n    var context = painter.context;\n    var gl = context.gl;\n    var fbo = tile.fbo;\n    if (!fbo) {\n        return;\n    }\n    var program = painter.useProgram('hillshade');\n    context.activeTexture.set(gl.TEXTURE0);\n    gl.bindTexture(gl.TEXTURE_2D, fbo.colorAttachment.get());\n    var uniformValues = hillshadeUniformValues(painter, tile, layer);\n    program.draw(context, gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.disabled, uniformValues, layer.id, painter.rasterBoundsBuffer, painter.quadTriangleIndexBuffer, painter.rasterBoundsSegments);\n}\nfunction prepareHillshade(painter, tile, layer, sourceMaxZoom, depthMode, stencilMode, colorMode) {\n    var context = painter.context;\n    var gl = context.gl;\n    var dem = tile.dem;\n    if (dem && dem.data) {\n        var tileSize = dem.dim;\n        var textureStride = dem.stride;\n        var pixelData = dem.getPixels();\n        context.activeTexture.set(gl.TEXTURE1);\n        context.pixelStoreUnpackPremultiplyAlpha.set(false);\n        tile.demTexture = tile.demTexture || painter.getTileTexture(textureStride);\n        if (tile.demTexture) {\n            var demTexture = tile.demTexture;\n            demTexture.update(pixelData, { premultiply: false });\n            demTexture.bind(gl.NEAREST, gl.CLAMP_TO_EDGE);\n        } else {\n            tile.demTexture = new performance.Texture(context, pixelData, gl.RGBA, { premultiply: false });\n            tile.demTexture.bind(gl.NEAREST, gl.CLAMP_TO_EDGE);\n        }\n        context.activeTexture.set(gl.TEXTURE0);\n        var fbo = tile.fbo;\n        if (!fbo) {\n            var renderTexture = new performance.Texture(context, {\n                width: tileSize,\n                height: tileSize,\n                data: null\n            }, gl.RGBA);\n            renderTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n            fbo = tile.fbo = context.createFramebuffer(tileSize, tileSize, true);\n            fbo.colorAttachment.set(renderTexture.texture);\n        }\n        context.bindFramebuffer.set(fbo.framebuffer);\n        context.viewport.set([\n            0,\n            0,\n            tileSize,\n            tileSize\n        ]);\n        painter.useProgram('hillshadePrepare').draw(context, gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.disabled, hillshadeUniformPrepareValues(tile.tileID, dem, sourceMaxZoom), layer.id, painter.rasterBoundsBuffer, painter.quadTriangleIndexBuffer, painter.rasterBoundsSegments);\n        tile.needsHillshadePrepare = false;\n    }\n}\n\nfunction drawRaster(painter, sourceCache, layer, tileIDs) {\n    if (painter.renderPass !== 'translucent') {\n        return;\n    }\n    if (layer.paint.get('raster-opacity') === 0) {\n        return;\n    }\n    if (!tileIDs.length) {\n        return;\n    }\n    var context = painter.context;\n    var gl = context.gl;\n    var source = sourceCache.getSource();\n    var program = painter.useProgram('raster');\n    var colorMode = painter.colorModeForRenderPass();\n    var ref = source instanceof ImageSource ? [\n        {},\n        tileIDs\n    ] : painter.stencilConfigForOverlap(tileIDs);\n    var stencilModes = ref[0];\n    var coords = ref[1];\n    var minTileZ = coords[coords.length - 1].overscaledZ;\n    var align = !painter.options.moving;\n    for (var i = 0, list = coords; i < list.length; i += 1) {\n        var coord = list[i];\n        var depthMode = painter.depthModeForSublayer(coord.overscaledZ - minTileZ, layer.paint.get('raster-opacity') === 1 ? DepthMode.ReadWrite : DepthMode.ReadOnly, gl.LESS);\n        var tile = sourceCache.getTile(coord);\n        var posMatrix = painter.transform.calculatePosMatrix(coord.toUnwrapped(), align);\n        tile.registerFadeDuration(layer.paint.get('raster-fade-duration'));\n        var parentTile = sourceCache.findLoadedParent(coord, 0), fade = getFadeValues(tile, parentTile, sourceCache, layer, painter.transform);\n        var parentScaleBy = void 0, parentTL = void 0;\n        var textureFilter = layer.paint.get('raster-resampling') === 'nearest' ? gl.NEAREST : gl.LINEAR;\n        context.activeTexture.set(gl.TEXTURE0);\n        tile.texture.bind(textureFilter, gl.CLAMP_TO_EDGE, gl.LINEAR_MIPMAP_NEAREST);\n        context.activeTexture.set(gl.TEXTURE1);\n        if (parentTile) {\n            parentTile.texture.bind(textureFilter, gl.CLAMP_TO_EDGE, gl.LINEAR_MIPMAP_NEAREST);\n            parentScaleBy = Math.pow(2, parentTile.tileID.overscaledZ - tile.tileID.overscaledZ);\n            parentTL = [\n                tile.tileID.canonical.x * parentScaleBy % 1,\n                tile.tileID.canonical.y * parentScaleBy % 1\n            ];\n        } else {\n            tile.texture.bind(textureFilter, gl.CLAMP_TO_EDGE, gl.LINEAR_MIPMAP_NEAREST);\n        }\n        var uniformValues = rasterUniformValues(posMatrix, parentTL || [\n            0,\n            0\n        ], parentScaleBy || 1, fade, layer);\n        if (source instanceof ImageSource) {\n            program.draw(context, gl.TRIANGLES, depthMode, StencilMode.disabled, colorMode, CullFaceMode.disabled, uniformValues, layer.id, source.boundsBuffer, painter.quadTriangleIndexBuffer, source.boundsSegments);\n        } else {\n            program.draw(context, gl.TRIANGLES, depthMode, stencilModes[coord.overscaledZ], colorMode, CullFaceMode.disabled, uniformValues, layer.id, painter.rasterBoundsBuffer, painter.quadTriangleIndexBuffer, painter.rasterBoundsSegments);\n        }\n    }\n}\nfunction getFadeValues(tile, parentTile, sourceCache, layer, transform) {\n    var fadeDuration = layer.paint.get('raster-fade-duration');\n    if (fadeDuration > 0) {\n        var now = performance.browser.now();\n        var sinceTile = (now - tile.timeAdded) / fadeDuration;\n        var sinceParent = parentTile ? (now - parentTile.timeAdded) / fadeDuration : -1;\n        var source = sourceCache.getSource();\n        var idealZ = transform.coveringZoomLevel({\n            tileSize: source.tileSize,\n            roundZoom: source.roundZoom\n        });\n        var fadeIn = !parentTile || Math.abs(parentTile.tileID.overscaledZ - idealZ) > Math.abs(tile.tileID.overscaledZ - idealZ);\n        var childOpacity = fadeIn && tile.refreshedUponExpiration ? 1 : performance.clamp(fadeIn ? sinceTile : 1 - sinceParent, 0, 1);\n        if (tile.refreshedUponExpiration && sinceTile >= 1) {\n            tile.refreshedUponExpiration = false;\n        }\n        if (parentTile) {\n            return {\n                opacity: 1,\n                mix: 1 - childOpacity\n            };\n        } else {\n            return {\n                opacity: childOpacity,\n                mix: 0\n            };\n        }\n    } else {\n        return {\n            opacity: 1,\n            mix: 0\n        };\n    }\n}\n\nfunction drawBackground(painter, sourceCache, layer) {\n    var color = layer.paint.get('background-color');\n    var opacity = layer.paint.get('background-opacity');\n    if (opacity === 0) {\n        return;\n    }\n    var context = painter.context;\n    var gl = context.gl;\n    var transform = painter.transform;\n    var tileSize = transform.tileSize;\n    var image = layer.paint.get('background-pattern');\n    if (painter.isPatternMissing(image)) {\n        return;\n    }\n    var pass = !image && color.a === 1 && opacity === 1 && painter.opaquePassEnabledForLayer() ? 'opaque' : 'translucent';\n    if (painter.renderPass !== pass) {\n        return;\n    }\n    var stencilMode = StencilMode.disabled;\n    var depthMode = painter.depthModeForSublayer(0, pass === 'opaque' ? DepthMode.ReadWrite : DepthMode.ReadOnly);\n    var colorMode = painter.colorModeForRenderPass();\n    var program = painter.useProgram(image ? 'backgroundPattern' : 'background');\n    var tileIDs = transform.coveringTiles({ tileSize: tileSize });\n    if (image) {\n        context.activeTexture.set(gl.TEXTURE0);\n        painter.imageManager.bind(painter.context);\n    }\n    var crossfade = layer.getCrossfadeParameters();\n    for (var i = 0, list = tileIDs; i < list.length; i += 1) {\n        var tileID = list[i];\n        var matrix = painter.transform.calculatePosMatrix(tileID.toUnwrapped());\n        var uniformValues = image ? backgroundPatternUniformValues(matrix, opacity, painter, image, {\n            tileID: tileID,\n            tileSize: tileSize\n        }, crossfade) : backgroundUniformValues(matrix, opacity, color);\n        program.draw(context, gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.disabled, uniformValues, layer.id, painter.tileExtentBuffer, painter.quadTriangleIndexBuffer, painter.tileExtentSegments);\n    }\n}\n\nvar topColor = new performance.Color(1, 0, 0, 1);\nvar btmColor = new performance.Color(0, 1, 0, 1);\nvar leftColor = new performance.Color(0, 0, 1, 1);\nvar rightColor = new performance.Color(1, 0, 1, 1);\nvar centerColor = new performance.Color(0, 1, 1, 1);\nfunction drawDebugPadding(painter) {\n    var padding = painter.transform.padding;\n    var lineWidth = 3;\n    drawHorizontalLine(painter, painter.transform.height - (padding.top || 0), lineWidth, topColor);\n    drawHorizontalLine(painter, padding.bottom || 0, lineWidth, btmColor);\n    drawVerticalLine(painter, padding.left || 0, lineWidth, leftColor);\n    drawVerticalLine(painter, painter.transform.width - (padding.right || 0), lineWidth, rightColor);\n    var center = painter.transform.centerPoint;\n    drawCrosshair(painter, center.x, painter.transform.height - center.y, centerColor);\n}\nfunction drawCrosshair(painter, x, y, color) {\n    var size = 20;\n    var lineWidth = 2;\n    drawDebugSSRect(painter, x - lineWidth / 2, y - size / 2, lineWidth, size, color);\n    drawDebugSSRect(painter, x - size / 2, y - lineWidth / 2, size, lineWidth, color);\n}\nfunction drawHorizontalLine(painter, y, lineWidth, color) {\n    drawDebugSSRect(painter, 0, y + lineWidth / 2, painter.transform.width, lineWidth, color);\n}\nfunction drawVerticalLine(painter, x, lineWidth, color) {\n    drawDebugSSRect(painter, x - lineWidth / 2, 0, lineWidth, painter.transform.height, color);\n}\nfunction drawDebugSSRect(painter, x, y, width, height, color) {\n    var context = painter.context;\n    var gl = context.gl;\n    gl.enable(gl.SCISSOR_TEST);\n    gl.scissor(x * performance.browser.devicePixelRatio, y * performance.browser.devicePixelRatio, width * performance.browser.devicePixelRatio, height * performance.browser.devicePixelRatio);\n    context.clear({ color: color });\n    gl.disable(gl.SCISSOR_TEST);\n}\nfunction drawDebug(painter, sourceCache, coords) {\n    for (var i = 0; i < coords.length; i++) {\n        drawDebugTile(painter, sourceCache, coords[i]);\n    }\n}\nfunction drawDebugTile(painter, sourceCache, coord) {\n    var context = painter.context;\n    var gl = context.gl;\n    var posMatrix = coord.posMatrix;\n    var program = painter.useProgram('debug');\n    var depthMode = DepthMode.disabled;\n    var stencilMode = StencilMode.disabled;\n    var colorMode = painter.colorModeForRenderPass();\n    var id = '$debug';\n    context.activeTexture.set(gl.TEXTURE0);\n    painter.emptyTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n    program.draw(context, gl.LINE_STRIP, depthMode, stencilMode, colorMode, CullFaceMode.disabled, debugUniformValues(posMatrix, performance.Color.red), id, painter.debugBuffer, painter.tileBorderIndexBuffer, painter.debugSegments);\n    var tileRawData = sourceCache.getTileByID(coord.key).latestRawTileData;\n    var tileByteLength = tileRawData && tileRawData.byteLength || 0;\n    var tileSizeKb = Math.floor(tileByteLength / 1024);\n    var tileSize = sourceCache.getTile(coord).tileSize;\n    var scaleRatio = 512 / Math.min(tileSize, 512) * (coord.overscaledZ / painter.transform.zoom) * 0.5;\n    var tileIdText = coord.canonical.toString();\n    if (coord.overscaledZ !== coord.canonical.z) {\n        tileIdText += ' => ' + coord.overscaledZ;\n    }\n    var tileLabel = tileIdText + ' ' + tileSizeKb + 'kb';\n    drawTextToOverlay(painter, tileLabel);\n    program.draw(context, gl.TRIANGLES, depthMode, stencilMode, ColorMode.alphaBlended, CullFaceMode.disabled, debugUniformValues(posMatrix, performance.Color.transparent, scaleRatio), id, painter.debugBuffer, painter.quadTriangleIndexBuffer, painter.debugSegments);\n}\nfunction drawTextToOverlay(painter, text) {\n    painter.initDebugOverlayCanvas();\n    var canvas = painter.debugOverlayCanvas;\n    var gl = painter.context.gl;\n    var ctx2d = painter.debugOverlayCanvas.getContext('2d');\n    ctx2d.clearRect(0, 0, canvas.width, canvas.height);\n    ctx2d.shadowColor = 'white';\n    ctx2d.shadowBlur = 2;\n    ctx2d.lineWidth = 1.5;\n    ctx2d.strokeStyle = 'white';\n    ctx2d.textBaseline = 'top';\n    ctx2d.font = 'bold ' + 36 + 'px Open Sans, sans-serif';\n    ctx2d.fillText(text, 5, 5);\n    ctx2d.strokeText(text, 5, 5);\n    painter.debugOverlayTexture.update(canvas);\n    painter.debugOverlayTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n}\n\nfunction drawCustom(painter, sourceCache, layer) {\n    var context = painter.context;\n    var implementation = layer.implementation;\n    if (painter.renderPass === 'offscreen') {\n        var prerender = implementation.prerender;\n        if (prerender) {\n            painter.setCustomLayerDefaults();\n            context.setColorMode(painter.colorModeForRenderPass());\n            prerender.call(implementation, context.gl, painter.transform.customLayerMatrix());\n            context.setDirty();\n            painter.setBaseState();\n        }\n    } else if (painter.renderPass === 'translucent') {\n        painter.setCustomLayerDefaults();\n        context.setColorMode(painter.colorModeForRenderPass());\n        context.setStencilMode(StencilMode.disabled);\n        var depthMode = implementation.renderingMode === '3d' ? new DepthMode(painter.context.gl.LEQUAL, DepthMode.ReadWrite, painter.depthRangeFor3D) : painter.depthModeForSublayer(0, DepthMode.ReadOnly);\n        context.setDepthMode(depthMode);\n        implementation.render(context.gl, painter.transform.customLayerMatrix());\n        context.setDirty();\n        painter.setBaseState();\n        context.bindFramebuffer.set(null);\n    }\n}\n\nvar draw$1 = {\n    symbol: drawSymbols,\n    circle: drawCircles,\n    heatmap: drawHeatmap,\n    line: drawLine,\n    fill: drawFill,\n    'fill-extrusion': draw,\n    hillshade: drawHillshade,\n    raster: drawRaster,\n    background: drawBackground,\n    debug: drawDebug,\n    custom: drawCustom\n};\nvar Painter = function Painter(gl, transform) {\n    this.context = new Context(gl);\n    this.transform = transform;\n    this._tileTextures = {};\n    this.setup();\n    this.numSublayers = SourceCache.maxUnderzooming + SourceCache.maxOverzooming + 1;\n    this.depthEpsilon = 1 / Math.pow(2, 16);\n    this.crossTileSymbolIndex = new CrossTileSymbolIndex();\n    this.gpuTimers = {};\n};\nPainter.prototype.resize = function resize(width, height) {\n    this.width = width * performance.browser.devicePixelRatio;\n    this.height = height * performance.browser.devicePixelRatio;\n    this.context.viewport.set([\n        0,\n        0,\n        this.width,\n        this.height\n    ]);\n    if (this.style) {\n        for (var i = 0, list = this.style._order; i < list.length; i += 1) {\n            var layerId = list[i];\n            this.style._layers[layerId].resize();\n        }\n    }\n};\nPainter.prototype.setup = function setup() {\n    var context = this.context;\n    var tileExtentArray = new performance.StructArrayLayout2i4();\n    tileExtentArray.emplaceBack(0, 0);\n    tileExtentArray.emplaceBack(performance.EXTENT, 0);\n    tileExtentArray.emplaceBack(0, performance.EXTENT);\n    tileExtentArray.emplaceBack(performance.EXTENT, performance.EXTENT);\n    this.tileExtentBuffer = context.createVertexBuffer(tileExtentArray, posAttributes.members);\n    this.tileExtentSegments = performance.SegmentVector.simpleSegment(0, 0, 4, 2);\n    var debugArray = new performance.StructArrayLayout2i4();\n    debugArray.emplaceBack(0, 0);\n    debugArray.emplaceBack(performance.EXTENT, 0);\n    debugArray.emplaceBack(0, performance.EXTENT);\n    debugArray.emplaceBack(performance.EXTENT, performance.EXTENT);\n    this.debugBuffer = context.createVertexBuffer(debugArray, posAttributes.members);\n    this.debugSegments = performance.SegmentVector.simpleSegment(0, 0, 4, 5);\n    var rasterBoundsArray = new performance.StructArrayLayout4i8();\n    rasterBoundsArray.emplaceBack(0, 0, 0, 0);\n    rasterBoundsArray.emplaceBack(performance.EXTENT, 0, performance.EXTENT, 0);\n    rasterBoundsArray.emplaceBack(0, performance.EXTENT, 0, performance.EXTENT);\n    rasterBoundsArray.emplaceBack(performance.EXTENT, performance.EXTENT, performance.EXTENT, performance.EXTENT);\n    this.rasterBoundsBuffer = context.createVertexBuffer(rasterBoundsArray, rasterBoundsAttributes.members);\n    this.rasterBoundsSegments = performance.SegmentVector.simpleSegment(0, 0, 4, 2);\n    var viewportArray = new performance.StructArrayLayout2i4();\n    viewportArray.emplaceBack(0, 0);\n    viewportArray.emplaceBack(1, 0);\n    viewportArray.emplaceBack(0, 1);\n    viewportArray.emplaceBack(1, 1);\n    this.viewportBuffer = context.createVertexBuffer(viewportArray, posAttributes.members);\n    this.viewportSegments = performance.SegmentVector.simpleSegment(0, 0, 4, 2);\n    var tileLineStripIndices = new performance.StructArrayLayout1ui2();\n    tileLineStripIndices.emplaceBack(0);\n    tileLineStripIndices.emplaceBack(1);\n    tileLineStripIndices.emplaceBack(3);\n    tileLineStripIndices.emplaceBack(2);\n    tileLineStripIndices.emplaceBack(0);\n    this.tileBorderIndexBuffer = context.createIndexBuffer(tileLineStripIndices);\n    var quadTriangleIndices = new performance.StructArrayLayout3ui6();\n    quadTriangleIndices.emplaceBack(0, 1, 2);\n    quadTriangleIndices.emplaceBack(2, 1, 3);\n    this.quadTriangleIndexBuffer = context.createIndexBuffer(quadTriangleIndices);\n    this.emptyTexture = new performance.Texture(context, {\n        width: 1,\n        height: 1,\n        data: new Uint8Array([\n            0,\n            0,\n            0,\n            0\n        ])\n    }, context.gl.RGBA);\n    var gl = this.context.gl;\n    this.stencilClearMode = new StencilMode({\n        func: gl.ALWAYS,\n        mask: 0\n    }, 0, 255, gl.ZERO, gl.ZERO, gl.ZERO);\n};\nPainter.prototype.clearStencil = function clearStencil() {\n    var context = this.context;\n    var gl = context.gl;\n    this.nextStencilID = 1;\n    this.currentStencilSource = undefined;\n    var matrix = performance.create();\n    performance.ortho(matrix, 0, this.width, this.height, 0, 0, 1);\n    performance.scale(matrix, matrix, [\n        gl.drawingBufferWidth,\n        gl.drawingBufferHeight,\n        0\n    ]);\n    this.useProgram('clippingMask').draw(context, gl.TRIANGLES, DepthMode.disabled, this.stencilClearMode, ColorMode.disabled, CullFaceMode.disabled, clippingMaskUniformValues(matrix), '$clipping', this.viewportBuffer, this.quadTriangleIndexBuffer, this.viewportSegments);\n};\nPainter.prototype._renderTileClippingMasks = function _renderTileClippingMasks(layer, tileIDs) {\n    if (this.currentStencilSource === layer.source || !layer.isTileClipped() || !tileIDs || !tileIDs.length) {\n        return;\n    }\n    this.currentStencilSource = layer.source;\n    var context = this.context;\n    var gl = context.gl;\n    if (this.nextStencilID + tileIDs.length > 256) {\n        this.clearStencil();\n    }\n    context.setColorMode(ColorMode.disabled);\n    context.setDepthMode(DepthMode.disabled);\n    var program = this.useProgram('clippingMask');\n    this._tileClippingMaskIDs = {};\n    for (var i = 0, list = tileIDs; i < list.length; i += 1) {\n        var tileID = list[i];\n        var id = this._tileClippingMaskIDs[tileID.key] = this.nextStencilID++;\n        program.draw(context, gl.TRIANGLES, DepthMode.disabled, new StencilMode({\n            func: gl.ALWAYS,\n            mask: 0\n        }, id, 255, gl.KEEP, gl.KEEP, gl.REPLACE), ColorMode.disabled, CullFaceMode.disabled, clippingMaskUniformValues(tileID.posMatrix), '$clipping', this.tileExtentBuffer, this.quadTriangleIndexBuffer, this.tileExtentSegments);\n    }\n};\nPainter.prototype.stencilModeFor3D = function stencilModeFor3D() {\n    this.currentStencilSource = undefined;\n    if (this.nextStencilID + 1 > 256) {\n        this.clearStencil();\n    }\n    var id = this.nextStencilID++;\n    var gl = this.context.gl;\n    return new StencilMode({\n        func: gl.NOTEQUAL,\n        mask: 255\n    }, id, 255, gl.KEEP, gl.KEEP, gl.REPLACE);\n};\nPainter.prototype.stencilModeForClipping = function stencilModeForClipping(tileID) {\n    var gl = this.context.gl;\n    return new StencilMode({\n        func: gl.EQUAL,\n        mask: 255\n    }, this._tileClippingMaskIDs[tileID.key], 0, gl.KEEP, gl.KEEP, gl.REPLACE);\n};\nPainter.prototype.stencilConfigForOverlap = function stencilConfigForOverlap(tileIDs) {\n    var obj;\n    var gl = this.context.gl;\n    var coords = tileIDs.sort(function (a, b) {\n        return b.overscaledZ - a.overscaledZ;\n    });\n    var minTileZ = coords[coords.length - 1].overscaledZ;\n    var stencilValues = coords[0].overscaledZ - minTileZ + 1;\n    if (stencilValues > 1) {\n        this.currentStencilSource = undefined;\n        if (this.nextStencilID + stencilValues > 256) {\n            this.clearStencil();\n        }\n        var zToStencilMode = {};\n        for (var i = 0; i < stencilValues; i++) {\n            zToStencilMode[i + minTileZ] = new StencilMode({\n                func: gl.GEQUAL,\n                mask: 255\n            }, i + this.nextStencilID, 255, gl.KEEP, gl.KEEP, gl.REPLACE);\n        }\n        this.nextStencilID += stencilValues;\n        return [\n            zToStencilMode,\n            coords\n        ];\n    }\n    return [\n        (obj = {}, obj[minTileZ] = StencilMode.disabled, obj),\n        coords\n    ];\n};\nPainter.prototype.colorModeForRenderPass = function colorModeForRenderPass() {\n    var gl = this.context.gl;\n    if (this._showOverdrawInspector) {\n        var numOverdrawSteps = 8;\n        var a = 1 / numOverdrawSteps;\n        return new ColorMode([\n            gl.CONSTANT_COLOR,\n            gl.ONE\n        ], new performance.Color(a, a, a, 0), [\n            true,\n            true,\n            true,\n            true\n        ]);\n    } else if (this.renderPass === 'opaque') {\n        return ColorMode.unblended;\n    } else {\n        return ColorMode.alphaBlended;\n    }\n};\nPainter.prototype.depthModeForSublayer = function depthModeForSublayer(n, mask, func) {\n    if (!this.opaquePassEnabledForLayer()) {\n        return DepthMode.disabled;\n    }\n    var depth = 1 - ((1 + this.currentLayer) * this.numSublayers + n) * this.depthEpsilon;\n    return new DepthMode(func || this.context.gl.LEQUAL, mask, [\n        depth,\n        depth\n    ]);\n};\nPainter.prototype.opaquePassEnabledForLayer = function opaquePassEnabledForLayer() {\n    return this.currentLayer < this.opaquePassCutoff;\n};\nPainter.prototype.render = function render(style, options) {\n    var this$1 = this;\n    this.style = style;\n    this.options = options;\n    this.lineAtlas = style.lineAtlas;\n    this.imageManager = style.imageManager;\n    this.glyphManager = style.glyphManager;\n    this.symbolFadeChange = style.placement.symbolFadeChange(performance.browser.now());\n    this.imageManager.beginFrame();\n    var layerIds = this.style._order;\n    var sourceCaches = this.style.sourceCaches;\n    for (var id in sourceCaches) {\n        var sourceCache = sourceCaches[id];\n        if (sourceCache.used) {\n            sourceCache.prepare(this.context);\n        }\n    }\n    var coordsAscending = {};\n    var coordsDescending = {};\n    var coordsDescendingSymbol = {};\n    for (var id$1 in sourceCaches) {\n        var sourceCache$1 = sourceCaches[id$1];\n        coordsAscending[id$1] = sourceCache$1.getVisibleCoordinates();\n        coordsDescending[id$1] = coordsAscending[id$1].slice().reverse();\n        coordsDescendingSymbol[id$1] = sourceCache$1.getVisibleCoordinates(true).reverse();\n    }\n    this.opaquePassCutoff = Infinity;\n    for (var i = 0; i < layerIds.length; i++) {\n        var layerId = layerIds[i];\n        if (this.style._layers[layerId].is3D()) {\n            this.opaquePassCutoff = i;\n            break;\n        }\n    }\n    this.renderPass = 'offscreen';\n    for (var i$1 = 0, list = layerIds; i$1 < list.length; i$1 += 1) {\n        var layerId$1 = list[i$1];\n        var layer = this.style._layers[layerId$1];\n        if (!layer.hasOffscreenPass() || layer.isHidden(this.transform.zoom)) {\n            continue;\n        }\n        var coords = coordsDescending[layer.source];\n        if (layer.type !== 'custom' && !coords.length) {\n            continue;\n        }\n        this.renderLayer(this, sourceCaches[layer.source], layer, coords);\n    }\n    this.context.bindFramebuffer.set(null);\n    this.context.clear({\n        color: options.showOverdrawInspector ? performance.Color.black : performance.Color.transparent,\n        depth: 1\n    });\n    this.clearStencil();\n    this._showOverdrawInspector = options.showOverdrawInspector;\n    this.depthRangeFor3D = [\n        0,\n        1 - (style._order.length + 2) * this.numSublayers * this.depthEpsilon\n    ];\n    this.renderPass = 'opaque';\n    for (this.currentLayer = layerIds.length - 1; this.currentLayer >= 0; this.currentLayer--) {\n        var layer$1 = this.style._layers[layerIds[this.currentLayer]];\n        var sourceCache$2 = sourceCaches[layer$1.source];\n        var coords$1 = coordsAscending[layer$1.source];\n        this._renderTileClippingMasks(layer$1, coords$1);\n        this.renderLayer(this, sourceCache$2, layer$1, coords$1);\n    }\n    this.renderPass = 'translucent';\n    for (this.currentLayer = 0; this.currentLayer < layerIds.length; this.currentLayer++) {\n        var layer$2 = this.style._layers[layerIds[this.currentLayer]];\n        var sourceCache$3 = sourceCaches[layer$2.source];\n        var coords$2 = (layer$2.type === 'symbol' ? coordsDescendingSymbol : coordsDescending)[layer$2.source];\n        this._renderTileClippingMasks(layer$2, coordsAscending[layer$2.source]);\n        this.renderLayer(this, sourceCache$3, layer$2, coords$2);\n    }\n    if (this.options.showTileBoundaries) {\n        var selectedSource;\n        var sourceCache$4;\n        var layers = performance.values(this.style._layers);\n        layers.forEach(function (layer) {\n            if (layer.source && !layer.isHidden(this$1.transform.zoom)) {\n                if (layer.source !== (sourceCache$4 && sourceCache$4.id)) {\n                    sourceCache$4 = this$1.style.sourceCaches[layer.source];\n                }\n                if (!selectedSource || selectedSource.getSource().maxzoom < sourceCache$4.getSource().maxzoom) {\n                    selectedSource = sourceCache$4;\n                }\n            }\n        });\n        if (selectedSource) {\n            draw$1.debug(this, selectedSource, selectedSource.getVisibleCoordinates());\n        }\n    }\n    if (this.options.showPadding) {\n        drawDebugPadding(this);\n    }\n    this.context.setDefault();\n};\nPainter.prototype.renderLayer = function renderLayer(painter, sourceCache, layer, coords) {\n    if (layer.isHidden(this.transform.zoom)) {\n        return;\n    }\n    if (layer.type !== 'background' && layer.type !== 'custom' && !coords.length) {\n        return;\n    }\n    this.id = layer.id;\n    this.gpuTimingStart(layer);\n    draw$1[layer.type](painter, sourceCache, layer, coords, this.style.placement.variableOffsets);\n    this.gpuTimingEnd();\n};\nPainter.prototype.gpuTimingStart = function gpuTimingStart(layer) {\n    if (!this.options.gpuTiming) {\n        return;\n    }\n    var ext = this.context.extTimerQuery;\n    var layerTimer = this.gpuTimers[layer.id];\n    if (!layerTimer) {\n        layerTimer = this.gpuTimers[layer.id] = {\n            calls: 0,\n            cpuTime: 0,\n            query: ext.createQueryEXT()\n        };\n    }\n    layerTimer.calls++;\n    ext.beginQueryEXT(ext.TIME_ELAPSED_EXT, layerTimer.query);\n};\nPainter.prototype.gpuTimingEnd = function gpuTimingEnd() {\n    if (!this.options.gpuTiming) {\n        return;\n    }\n    var ext = this.context.extTimerQuery;\n    ext.endQueryEXT(ext.TIME_ELAPSED_EXT);\n};\nPainter.prototype.collectGpuTimers = function collectGpuTimers() {\n    var currentLayerTimers = this.gpuTimers;\n    this.gpuTimers = {};\n    return currentLayerTimers;\n};\nPainter.prototype.queryGpuTimers = function queryGpuTimers(gpuTimers) {\n    var layers = {};\n    for (var layerId in gpuTimers) {\n        var gpuTimer = gpuTimers[layerId];\n        var ext = this.context.extTimerQuery;\n        var gpuTime = ext.getQueryObjectEXT(gpuTimer.query, ext.QUERY_RESULT_EXT) / (1000 * 1000);\n        ext.deleteQueryEXT(gpuTimer.query);\n        layers[layerId] = gpuTime;\n    }\n    return layers;\n};\nPainter.prototype.translatePosMatrix = function translatePosMatrix(matrix, tile, translate, translateAnchor, inViewportPixelUnitsUnits) {\n    if (!translate[0] && !translate[1]) {\n        return matrix;\n    }\n    var angle = inViewportPixelUnitsUnits ? translateAnchor === 'map' ? this.transform.angle : 0 : translateAnchor === 'viewport' ? -this.transform.angle : 0;\n    if (angle) {\n        var sinA = Math.sin(angle);\n        var cosA = Math.cos(angle);\n        translate = [\n            translate[0] * cosA - translate[1] * sinA,\n            translate[0] * sinA + translate[1] * cosA\n        ];\n    }\n    var translation = [\n        inViewportPixelUnitsUnits ? translate[0] : pixelsToTileUnits(tile, translate[0], this.transform.zoom),\n        inViewportPixelUnitsUnits ? translate[1] : pixelsToTileUnits(tile, translate[1], this.transform.zoom),\n        0\n    ];\n    var translatedMatrix = new Float32Array(16);\n    performance.translate(translatedMatrix, matrix, translation);\n    return translatedMatrix;\n};\nPainter.prototype.saveTileTexture = function saveTileTexture(texture) {\n    var textures = this._tileTextures[texture.size[0]];\n    if (!textures) {\n        this._tileTextures[texture.size[0]] = [texture];\n    } else {\n        textures.push(texture);\n    }\n};\nPainter.prototype.getTileTexture = function getTileTexture(size) {\n    var textures = this._tileTextures[size];\n    return textures && textures.length > 0 ? textures.pop() : null;\n};\nPainter.prototype.isPatternMissing = function isPatternMissing(image) {\n    if (!image) {\n        return false;\n    }\n    if (!image.from || !image.to) {\n        return true;\n    }\n    var imagePosA = this.imageManager.getPattern(image.from.toString());\n    var imagePosB = this.imageManager.getPattern(image.to.toString());\n    return !imagePosA || !imagePosB;\n};\nPainter.prototype.useProgram = function useProgram(name, programConfiguration) {\n    this.cache = this.cache || {};\n    var key = '' + name + (programConfiguration ? programConfiguration.cacheKey : '') + (this._showOverdrawInspector ? '/overdraw' : '');\n    if (!this.cache[key]) {\n        this.cache[key] = new Program$1(this.context, shaders[name], programConfiguration, programUniforms[name], this._showOverdrawInspector);\n    }\n    return this.cache[key];\n};\nPainter.prototype.setCustomLayerDefaults = function setCustomLayerDefaults() {\n    this.context.unbindVAO();\n    this.context.cullFace.setDefault();\n    this.context.activeTexture.setDefault();\n    this.context.pixelStoreUnpack.setDefault();\n    this.context.pixelStoreUnpackPremultiplyAlpha.setDefault();\n    this.context.pixelStoreUnpackFlipY.setDefault();\n};\nPainter.prototype.setBaseState = function setBaseState() {\n    var gl = this.context.gl;\n    this.context.cullFace.set(false);\n    this.context.viewport.set([\n        0,\n        0,\n        this.width,\n        this.height\n    ]);\n    this.context.blendEquation.set(gl.FUNC_ADD);\n};\nPainter.prototype.initDebugOverlayCanvas = function initDebugOverlayCanvas() {\n    if (this.debugOverlayCanvas == null) {\n        this.debugOverlayCanvas = performance.window.document.createElement('canvas');\n        this.debugOverlayCanvas.width = 512;\n        this.debugOverlayCanvas.height = 512;\n        var gl = this.context.gl;\n        this.debugOverlayTexture = new performance.Texture(this.context, this.debugOverlayCanvas, gl.RGBA);\n    }\n};\nPainter.prototype.destroy = function destroy() {\n    this.emptyTexture.destroy();\n    if (this.debugOverlayTexture) {\n        this.debugOverlayTexture.destroy();\n    }\n};\n\nvar Frustum = function Frustum(points_, planes_) {\n    this.points = points_;\n    this.planes = planes_;\n};\nFrustum.fromInvProjectionMatrix = function fromInvProjectionMatrix(invProj, worldSize, zoom) {\n    var clipSpaceCorners = [\n        [\n            -1,\n            1,\n            -1,\n            1\n        ],\n        [\n            1,\n            1,\n            -1,\n            1\n        ],\n        [\n            1,\n            -1,\n            -1,\n            1\n        ],\n        [\n            -1,\n            -1,\n            -1,\n            1\n        ],\n        [\n            -1,\n            1,\n            1,\n            1\n        ],\n        [\n            1,\n            1,\n            1,\n            1\n        ],\n        [\n            1,\n            -1,\n            1,\n            1\n        ],\n        [\n            -1,\n            -1,\n            1,\n            1\n        ]\n    ];\n    var scale = Math.pow(2, zoom);\n    var frustumCoords = clipSpaceCorners.map(function (v) {\n        return performance.transformMat4([], v, invProj);\n    }).map(function (v) {\n        return performance.scale$1([], v, 1 / v[3] / worldSize * scale);\n    });\n    var frustumPlanePointIndices = [\n        [\n            0,\n            1,\n            2\n        ],\n        [\n            6,\n            5,\n            4\n        ],\n        [\n            0,\n            3,\n            7\n        ],\n        [\n            2,\n            1,\n            5\n        ],\n        [\n            3,\n            2,\n            6\n        ],\n        [\n            0,\n            4,\n            5\n        ]\n    ];\n    var frustumPlanes = frustumPlanePointIndices.map(function (p) {\n        var a = performance.sub([], frustumCoords[p[0]], frustumCoords[p[1]]);\n        var b = performance.sub([], frustumCoords[p[2]], frustumCoords[p[1]]);\n        var n = performance.normalize([], performance.cross([], a, b));\n        var d = -performance.dot(n, frustumCoords[p[1]]);\n        return n.concat(d);\n    });\n    return new Frustum(frustumCoords, frustumPlanes);\n};\nvar Aabb = function Aabb(min_, max_) {\n    this.min = min_;\n    this.max = max_;\n    this.center = performance.scale$2([], performance.add([], this.min, this.max), 0.5);\n};\nAabb.prototype.quadrant = function quadrant(index) {\n    var split = [\n        index % 2 === 0,\n        index < 2\n    ];\n    var qMin = performance.clone$2(this.min);\n    var qMax = performance.clone$2(this.max);\n    for (var axis = 0; axis < split.length; axis++) {\n        qMin[axis] = split[axis] ? this.min[axis] : this.center[axis];\n        qMax[axis] = split[axis] ? this.center[axis] : this.max[axis];\n    }\n    qMax[2] = this.max[2];\n    return new Aabb(qMin, qMax);\n};\nAabb.prototype.distanceX = function distanceX(point) {\n    var pointOnAabb = Math.max(Math.min(this.max[0], point[0]), this.min[0]);\n    return pointOnAabb - point[0];\n};\nAabb.prototype.distanceY = function distanceY(point) {\n    var pointOnAabb = Math.max(Math.min(this.max[1], point[1]), this.min[1]);\n    return pointOnAabb - point[1];\n};\nAabb.prototype.intersects = function intersects(frustum) {\n    var aabbPoints = [\n        [\n            this.min[0],\n            this.min[1],\n            0,\n            1\n        ],\n        [\n            this.max[0],\n            this.min[1],\n            0,\n            1\n        ],\n        [\n            this.max[0],\n            this.max[1],\n            0,\n            1\n        ],\n        [\n            this.min[0],\n            this.max[1],\n            0,\n            1\n        ]\n    ];\n    var fullyInside = true;\n    for (var p = 0; p < frustum.planes.length; p++) {\n        var plane = frustum.planes[p];\n        var pointsInside = 0;\n        for (var i = 0; i < aabbPoints.length; i++) {\n            pointsInside += performance.dot$1(plane, aabbPoints[i]) >= 0;\n        }\n        if (pointsInside === 0) {\n            return 0;\n        }\n        if (pointsInside !== aabbPoints.length) {\n            fullyInside = false;\n        }\n    }\n    if (fullyInside) {\n        return 2;\n    }\n    for (var axis = 0; axis < 3; axis++) {\n        var projMin = Number.MAX_VALUE;\n        var projMax = -Number.MAX_VALUE;\n        for (var p$1 = 0; p$1 < frustum.points.length; p$1++) {\n            var projectedPoint = frustum.points[p$1][axis] - this.min[axis];\n            projMin = Math.min(projMin, projectedPoint);\n            projMax = Math.max(projMax, projectedPoint);\n        }\n        if (projMax < 0 || projMin > this.max[axis] - this.min[axis]) {\n            return 0;\n        }\n    }\n    return 1;\n};\n\nvar EdgeInsets = function EdgeInsets(top, bottom, left, right) {\n    if (top === void 0)\n        top = 0;\n    if (bottom === void 0)\n        bottom = 0;\n    if (left === void 0)\n        left = 0;\n    if (right === void 0)\n        right = 0;\n    if (isNaN(top) || top < 0 || isNaN(bottom) || bottom < 0 || isNaN(left) || left < 0 || isNaN(right) || right < 0) {\n        throw new Error('Invalid value for edge-insets, top, bottom, left and right must all be numbers');\n    }\n    this.top = top;\n    this.bottom = bottom;\n    this.left = left;\n    this.right = right;\n};\nEdgeInsets.prototype.interpolate = function interpolate(start, target, t) {\n    if (target.top != null && start.top != null) {\n        this.top = performance.number(start.top, target.top, t);\n    }\n    if (target.bottom != null && start.bottom != null) {\n        this.bottom = performance.number(start.bottom, target.bottom, t);\n    }\n    if (target.left != null && start.left != null) {\n        this.left = performance.number(start.left, target.left, t);\n    }\n    if (target.right != null && start.right != null) {\n        this.right = performance.number(start.right, target.right, t);\n    }\n    return this;\n};\nEdgeInsets.prototype.getCenter = function getCenter(width, height) {\n    var x = performance.clamp((this.left + width - this.right) / 2, 0, width);\n    var y = performance.clamp((this.top + height - this.bottom) / 2, 0, height);\n    return new performance.Point(x, y);\n};\nEdgeInsets.prototype.equals = function equals(other) {\n    return this.top === other.top && this.bottom === other.bottom && this.left === other.left && this.right === other.right;\n};\nEdgeInsets.prototype.clone = function clone() {\n    return new EdgeInsets(this.top, this.bottom, this.left, this.right);\n};\nEdgeInsets.prototype.toJSON = function toJSON() {\n    return {\n        top: this.top,\n        bottom: this.bottom,\n        left: this.left,\n        right: this.right\n    };\n};\n\nvar Transform = function Transform(minZoom, maxZoom, minPitch, maxPitch, renderWorldCopies) {\n    this.tileSize = 512;\n    this.maxValidLatitude = 85.051129;\n    this._renderWorldCopies = renderWorldCopies === undefined ? true : renderWorldCopies;\n    this._minZoom = minZoom || 0;\n    this._maxZoom = maxZoom || 22;\n    this._minPitch = minPitch === undefined || minPitch === null ? 0 : minPitch;\n    this._maxPitch = maxPitch === undefined || maxPitch === null ? 60 : maxPitch;\n    this.setMaxBounds();\n    this.width = 0;\n    this.height = 0;\n    this._center = new performance.LngLat(0, 0);\n    this.zoom = 0;\n    this.angle = 0;\n    this._fov = 0.6435011087932844;\n    this._pitch = 0;\n    this._unmodified = true;\n    this._edgeInsets = new EdgeInsets();\n    this._posMatrixCache = {};\n    this._alignedPosMatrixCache = {};\n};\nvar prototypeAccessors = {\n    minZoom: { configurable: true },\n    maxZoom: { configurable: true },\n    minPitch: { configurable: true },\n    maxPitch: { configurable: true },\n    renderWorldCopies: { configurable: true },\n    worldSize: { configurable: true },\n    centerOffset: { configurable: true },\n    size: { configurable: true },\n    bearing: { configurable: true },\n    pitch: { configurable: true },\n    fov: { configurable: true },\n    zoom: { configurable: true },\n    center: { configurable: true },\n    padding: { configurable: true },\n    centerPoint: { configurable: true },\n    unmodified: { configurable: true },\n    point: { configurable: true }\n};\nTransform.prototype.clone = function clone() {\n    var clone = new Transform(this._minZoom, this._maxZoom, this._minPitch, this.maxPitch, this._renderWorldCopies);\n    clone.tileSize = this.tileSize;\n    clone.latRange = this.latRange;\n    clone.width = this.width;\n    clone.height = this.height;\n    clone._center = this._center;\n    clone.zoom = this.zoom;\n    clone.angle = this.angle;\n    clone._fov = this._fov;\n    clone._pitch = this._pitch;\n    clone._unmodified = this._unmodified;\n    clone._edgeInsets = this._edgeInsets.clone();\n    clone._calcMatrices();\n    return clone;\n};\nprototypeAccessors.minZoom.get = function () {\n    return this._minZoom;\n};\nprototypeAccessors.minZoom.set = function (zoom) {\n    if (this._minZoom === zoom) {\n        return;\n    }\n    this._minZoom = zoom;\n    this.zoom = Math.max(this.zoom, zoom);\n};\nprototypeAccessors.maxZoom.get = function () {\n    return this._maxZoom;\n};\nprototypeAccessors.maxZoom.set = function (zoom) {\n    if (this._maxZoom === zoom) {\n        return;\n    }\n    this._maxZoom = zoom;\n    this.zoom = Math.min(this.zoom, zoom);\n};\nprototypeAccessors.minPitch.get = function () {\n    return this._minPitch;\n};\nprototypeAccessors.minPitch.set = function (pitch) {\n    if (this._minPitch === pitch) {\n        return;\n    }\n    this._minPitch = pitch;\n    this.pitch = Math.max(this.pitch, pitch);\n};\nprototypeAccessors.maxPitch.get = function () {\n    return this._maxPitch;\n};\nprototypeAccessors.maxPitch.set = function (pitch) {\n    if (this._maxPitch === pitch) {\n        return;\n    }\n    this._maxPitch = pitch;\n    this.pitch = Math.min(this.pitch, pitch);\n};\nprototypeAccessors.renderWorldCopies.get = function () {\n    return this._renderWorldCopies;\n};\nprototypeAccessors.renderWorldCopies.set = function (renderWorldCopies) {\n    if (renderWorldCopies === undefined) {\n        renderWorldCopies = true;\n    } else if (renderWorldCopies === null) {\n        renderWorldCopies = false;\n    }\n    this._renderWorldCopies = renderWorldCopies;\n};\nprototypeAccessors.worldSize.get = function () {\n    return this.tileSize * this.scale;\n};\nprototypeAccessors.centerOffset.get = function () {\n    return this.centerPoint._sub(this.size._div(2));\n};\nprototypeAccessors.size.get = function () {\n    return new performance.Point(this.width, this.height);\n};\nprototypeAccessors.bearing.get = function () {\n    return -this.angle / Math.PI * 180;\n};\nprototypeAccessors.bearing.set = function (bearing) {\n    var b = -performance.wrap(bearing, -180, 180) * Math.PI / 180;\n    if (this.angle === b) {\n        return;\n    }\n    this._unmodified = false;\n    this.angle = b;\n    this._calcMatrices();\n    this.rotationMatrix = performance.create$2();\n    performance.rotate(this.rotationMatrix, this.rotationMatrix, this.angle);\n};\nprototypeAccessors.pitch.get = function () {\n    return this._pitch / Math.PI * 180;\n};\nprototypeAccessors.pitch.set = function (pitch) {\n    var p = performance.clamp(pitch, this.minPitch, this.maxPitch) / 180 * Math.PI;\n    if (this._pitch === p) {\n        return;\n    }\n    this._unmodified = false;\n    this._pitch = p;\n    this._calcMatrices();\n};\nprototypeAccessors.fov.get = function () {\n    return this._fov / Math.PI * 180;\n};\nprototypeAccessors.fov.set = function (fov) {\n    fov = Math.max(0.01, Math.min(60, fov));\n    if (this._fov === fov) {\n        return;\n    }\n    this._unmodified = false;\n    this._fov = fov / 180 * Math.PI;\n    this._calcMatrices();\n};\nprototypeAccessors.zoom.get = function () {\n    return this._zoom;\n};\nprototypeAccessors.zoom.set = function (zoom) {\n    var z = Math.min(Math.max(zoom, this.minZoom), this.maxZoom);\n    if (this._zoom === z) {\n        return;\n    }\n    this._unmodified = false;\n    this._zoom = z;\n    this.scale = this.zoomScale(z);\n    this.tileZoom = Math.floor(z);\n    this.zoomFraction = z - this.tileZoom;\n    this._constrain();\n    this._calcMatrices();\n};\nprototypeAccessors.center.get = function () {\n    return this._center;\n};\nprototypeAccessors.center.set = function (center) {\n    if (center.lat === this._center.lat && center.lng === this._center.lng) {\n        return;\n    }\n    this._unmodified = false;\n    this._center = center;\n    this._constrain();\n    this._calcMatrices();\n};\nprototypeAccessors.padding.get = function () {\n    return this._edgeInsets.toJSON();\n};\nprototypeAccessors.padding.set = function (padding) {\n    if (this._edgeInsets.equals(padding)) {\n        return;\n    }\n    this._unmodified = false;\n    this._edgeInsets.interpolate(this._edgeInsets, padding, 1);\n    this._calcMatrices();\n};\nprototypeAccessors.centerPoint.get = function () {\n    return this._edgeInsets.getCenter(this.width, this.height);\n};\nTransform.prototype.isPaddingEqual = function isPaddingEqual(padding) {\n    return this._edgeInsets.equals(padding);\n};\nTransform.prototype.interpolatePadding = function interpolatePadding(start, target, t) {\n    this._unmodified = false;\n    this._edgeInsets.interpolate(start, target, t);\n    this._constrain();\n    this._calcMatrices();\n};\nTransform.prototype.coveringZoomLevel = function coveringZoomLevel(options) {\n    var z = (options.roundZoom ? Math.round : Math.floor)(this.zoom + this.scaleZoom(this.tileSize / options.tileSize));\n    return Math.max(0, z);\n};\nTransform.prototype.getVisibleUnwrappedCoordinates = function getVisibleUnwrappedCoordinates(tileID) {\n    var result = [new performance.UnwrappedTileID(0, tileID)];\n    if (this._renderWorldCopies) {\n        var utl = this.pointCoordinate(new performance.Point(0, 0));\n        var utr = this.pointCoordinate(new performance.Point(this.width, 0));\n        var ubl = this.pointCoordinate(new performance.Point(this.width, this.height));\n        var ubr = this.pointCoordinate(new performance.Point(0, this.height));\n        var w0 = Math.floor(Math.min(utl.x, utr.x, ubl.x, ubr.x));\n        var w1 = Math.floor(Math.max(utl.x, utr.x, ubl.x, ubr.x));\n        var extraWorldCopy = 1;\n        for (var w = w0 - extraWorldCopy; w <= w1 + extraWorldCopy; w++) {\n            if (w === 0) {\n                continue;\n            }\n            result.push(new performance.UnwrappedTileID(w, tileID));\n        }\n    }\n    return result;\n};\nTransform.prototype.coveringTiles = function coveringTiles(options) {\n    var z = this.coveringZoomLevel(options);\n    var actualZ = z;\n    if (options.minzoom !== undefined && z < options.minzoom) {\n        return [];\n    }\n    if (options.maxzoom !== undefined && z > options.maxzoom) {\n        z = options.maxzoom;\n    }\n    var centerCoord = performance.MercatorCoordinate.fromLngLat(this.center);\n    var numTiles = Math.pow(2, z);\n    var centerPoint = [\n        numTiles * centerCoord.x,\n        numTiles * centerCoord.y,\n        0\n    ];\n    var cameraFrustum = Frustum.fromInvProjectionMatrix(this.invProjMatrix, this.worldSize, z);\n    var minZoom = options.minzoom || 0;\n    if (this.pitch <= 60 && this._edgeInsets.top < 0.1) {\n        minZoom = z;\n    }\n    var radiusOfMaxLvlLodInTiles = 3;\n    var newRootTile = function (wrap) {\n        return {\n            aabb: new Aabb([\n                wrap * numTiles,\n                0,\n                0\n            ], [\n                (wrap + 1) * numTiles,\n                numTiles,\n                0\n            ]),\n            zoom: 0,\n            x: 0,\n            y: 0,\n            wrap: wrap,\n            fullyVisible: false\n        };\n    };\n    var stack = [];\n    var result = [];\n    var maxZoom = z;\n    var overscaledZ = options.reparseOverscaled ? actualZ : z;\n    if (this._renderWorldCopies) {\n        for (var i = 1; i <= 3; i++) {\n            stack.push(newRootTile(-i));\n            stack.push(newRootTile(i));\n        }\n    }\n    stack.push(newRootTile(0));\n    while (stack.length > 0) {\n        var it = stack.pop();\n        var x = it.x;\n        var y = it.y;\n        var fullyVisible = it.fullyVisible;\n        if (!fullyVisible) {\n            var intersectResult = it.aabb.intersects(cameraFrustum);\n            if (intersectResult === 0) {\n                continue;\n            }\n            fullyVisible = intersectResult === 2;\n        }\n        var distanceX = it.aabb.distanceX(centerPoint);\n        var distanceY = it.aabb.distanceY(centerPoint);\n        var longestDim = Math.max(Math.abs(distanceX), Math.abs(distanceY));\n        var distToSplit = radiusOfMaxLvlLodInTiles + (1 << maxZoom - it.zoom) - 2;\n        if (it.zoom === maxZoom || longestDim > distToSplit && it.zoom >= minZoom) {\n            result.push({\n                tileID: new performance.OverscaledTileID(it.zoom === maxZoom ? overscaledZ : it.zoom, it.wrap, it.zoom, x, y),\n                distanceSq: performance.sqrLen([\n                    centerPoint[0] - 0.5 - x,\n                    centerPoint[1] - 0.5 - y\n                ])\n            });\n            continue;\n        }\n        for (var i$1 = 0; i$1 < 4; i$1++) {\n            var childX = (x << 1) + i$1 % 2;\n            var childY = (y << 1) + (i$1 >> 1);\n            stack.push({\n                aabb: it.aabb.quadrant(i$1),\n                zoom: it.zoom + 1,\n                x: childX,\n                y: childY,\n                wrap: it.wrap,\n                fullyVisible: fullyVisible\n            });\n        }\n    }\n    return result.sort(function (a, b) {\n        return a.distanceSq - b.distanceSq;\n    }).map(function (a) {\n        return a.tileID;\n    });\n};\nTransform.prototype.resize = function resize(width, height) {\n    this.width = width;\n    this.height = height;\n    this.pixelsToGLUnits = [\n        2 / width,\n        -2 / height\n    ];\n    this._constrain();\n    this._calcMatrices();\n};\nprototypeAccessors.unmodified.get = function () {\n    return this._unmodified;\n};\nTransform.prototype.zoomScale = function zoomScale(zoom) {\n    return Math.pow(2, zoom);\n};\nTransform.prototype.scaleZoom = function scaleZoom(scale) {\n    return Math.log(scale) / Math.LN2;\n};\nTransform.prototype.project = function project(lnglat) {\n    var lat = performance.clamp(lnglat.lat, -this.maxValidLatitude, this.maxValidLatitude);\n    return new performance.Point(performance.mercatorXfromLng(lnglat.lng) * this.worldSize, performance.mercatorYfromLat(lat) * this.worldSize);\n};\nTransform.prototype.unproject = function unproject(point) {\n    return new performance.MercatorCoordinate(point.x / this.worldSize, point.y / this.worldSize).toLngLat();\n};\nprototypeAccessors.point.get = function () {\n    return this.project(this.center);\n};\nTransform.prototype.setLocationAtPoint = function setLocationAtPoint(lnglat, point) {\n    var a = this.pointCoordinate(point);\n    var b = this.pointCoordinate(this.centerPoint);\n    var loc = this.locationCoordinate(lnglat);\n    var newCenter = new performance.MercatorCoordinate(loc.x - (a.x - b.x), loc.y - (a.y - b.y));\n    this.center = this.coordinateLocation(newCenter);\n    if (this._renderWorldCopies) {\n        this.center = this.center.wrap();\n    }\n};\nTransform.prototype.locationPoint = function locationPoint(lnglat) {\n    return this.coordinatePoint(this.locationCoordinate(lnglat));\n};\nTransform.prototype.pointLocation = function pointLocation(p) {\n    return this.coordinateLocation(this.pointCoordinate(p));\n};\nTransform.prototype.locationCoordinate = function locationCoordinate(lnglat) {\n    return performance.MercatorCoordinate.fromLngLat(lnglat);\n};\nTransform.prototype.coordinateLocation = function coordinateLocation(coord) {\n    return coord.toLngLat();\n};\nTransform.prototype.pointCoordinate = function pointCoordinate(p) {\n    var targetZ = 0;\n    var coord0 = [\n        p.x,\n        p.y,\n        0,\n        1\n    ];\n    var coord1 = [\n        p.x,\n        p.y,\n        1,\n        1\n    ];\n    performance.transformMat4(coord0, coord0, this.pixelMatrixInverse);\n    performance.transformMat4(coord1, coord1, this.pixelMatrixInverse);\n    var w0 = coord0[3];\n    var w1 = coord1[3];\n    var x0 = coord0[0] / w0;\n    var x1 = coord1[0] / w1;\n    var y0 = coord0[1] / w0;\n    var y1 = coord1[1] / w1;\n    var z0 = coord0[2] / w0;\n    var z1 = coord1[2] / w1;\n    var t = z0 === z1 ? 0 : (targetZ - z0) / (z1 - z0);\n    return new performance.MercatorCoordinate(performance.number(x0, x1, t) / this.worldSize, performance.number(y0, y1, t) / this.worldSize);\n};\nTransform.prototype.coordinatePoint = function coordinatePoint(coord) {\n    var p = [\n        coord.x * this.worldSize,\n        coord.y * this.worldSize,\n        0,\n        1\n    ];\n    performance.transformMat4(p, p, this.pixelMatrix);\n    return new performance.Point(p[0] / p[3], p[1] / p[3]);\n};\nTransform.prototype.getBounds = function getBounds() {\n    return new performance.LngLatBounds().extend(this.pointLocation(new performance.Point(0, 0))).extend(this.pointLocation(new performance.Point(this.width, 0))).extend(this.pointLocation(new performance.Point(this.width, this.height))).extend(this.pointLocation(new performance.Point(0, this.height)));\n};\nTransform.prototype.getMaxBounds = function getMaxBounds() {\n    if (!this.latRange || this.latRange.length !== 2 || !this.lngRange || this.lngRange.length !== 2) {\n        return null;\n    }\n    return new performance.LngLatBounds([\n        this.lngRange[0],\n        this.latRange[0]\n    ], [\n        this.lngRange[1],\n        this.latRange[1]\n    ]);\n};\nTransform.prototype.setMaxBounds = function setMaxBounds(bounds) {\n    if (bounds) {\n        this.lngRange = [\n            bounds.getWest(),\n            bounds.getEast()\n        ];\n        this.latRange = [\n            bounds.getSouth(),\n            bounds.getNorth()\n        ];\n        this._constrain();\n    } else {\n        this.lngRange = null;\n        this.latRange = [\n            -this.maxValidLatitude,\n            this.maxValidLatitude\n        ];\n    }\n};\nTransform.prototype.calculatePosMatrix = function calculatePosMatrix(unwrappedTileID, aligned) {\n    if (aligned === void 0)\n        aligned = false;\n    var posMatrixKey = unwrappedTileID.key;\n    var cache = aligned ? this._alignedPosMatrixCache : this._posMatrixCache;\n    if (cache[posMatrixKey]) {\n        return cache[posMatrixKey];\n    }\n    var canonical = unwrappedTileID.canonical;\n    var scale = this.worldSize / this.zoomScale(canonical.z);\n    var unwrappedX = canonical.x + Math.pow(2, canonical.z) * unwrappedTileID.wrap;\n    var posMatrix = performance.identity(new Float64Array(16));\n    performance.translate(posMatrix, posMatrix, [\n        unwrappedX * scale,\n        canonical.y * scale,\n        0\n    ]);\n    performance.scale(posMatrix, posMatrix, [\n        scale / performance.EXTENT,\n        scale / performance.EXTENT,\n        1\n    ]);\n    performance.multiply(posMatrix, aligned ? this.alignedProjMatrix : this.projMatrix, posMatrix);\n    cache[posMatrixKey] = new Float32Array(posMatrix);\n    return cache[posMatrixKey];\n};\nTransform.prototype.customLayerMatrix = function customLayerMatrix() {\n    return this.mercatorMatrix.slice();\n};\nTransform.prototype._constrain = function _constrain() {\n    if (!this.center || !this.width || !this.height || this._constraining) {\n        return;\n    }\n    this._constraining = true;\n    var minY = -90;\n    var maxY = 90;\n    var minX = -180;\n    var maxX = 180;\n    var sy, sx, x2, y2;\n    var size = this.size, unmodified = this._unmodified;\n    if (this.latRange) {\n        var latRange = this.latRange;\n        minY = performance.mercatorYfromLat(latRange[1]) * this.worldSize;\n        maxY = performance.mercatorYfromLat(latRange[0]) * this.worldSize;\n        sy = maxY - minY < size.y ? size.y / (maxY - minY) : 0;\n    }\n    if (this.lngRange) {\n        var lngRange = this.lngRange;\n        minX = performance.mercatorXfromLng(lngRange[0]) * this.worldSize;\n        maxX = performance.mercatorXfromLng(lngRange[1]) * this.worldSize;\n        sx = maxX - minX < size.x ? size.x / (maxX - minX) : 0;\n    }\n    var point = this.point;\n    var s = Math.max(sx || 0, sy || 0);\n    if (s) {\n        this.center = this.unproject(new performance.Point(sx ? (maxX + minX) / 2 : point.x, sy ? (maxY + minY) / 2 : point.y));\n        this.zoom += this.scaleZoom(s);\n        this._unmodified = unmodified;\n        this._constraining = false;\n        return;\n    }\n    if (this.latRange) {\n        var y = point.y, h2 = size.y / 2;\n        if (y - h2 < minY) {\n            y2 = minY + h2;\n        }\n        if (y + h2 > maxY) {\n            y2 = maxY - h2;\n        }\n    }\n    if (this.lngRange) {\n        var x = point.x, w2 = size.x / 2;\n        if (x - w2 < minX) {\n            x2 = minX + w2;\n        }\n        if (x + w2 > maxX) {\n            x2 = maxX - w2;\n        }\n    }\n    if (x2 !== undefined || y2 !== undefined) {\n        this.center = this.unproject(new performance.Point(x2 !== undefined ? x2 : point.x, y2 !== undefined ? y2 : point.y));\n    }\n    this._unmodified = unmodified;\n    this._constraining = false;\n};\nTransform.prototype._calcMatrices = function _calcMatrices() {\n    if (!this.height) {\n        return;\n    }\n    var halfFov = this._fov / 2;\n    var offset = this.centerOffset;\n    this.cameraToCenterDistance = 0.5 / Math.tan(halfFov) * this.height;\n    var groundAngle = Math.PI / 2 + this._pitch;\n    var fovAboveCenter = this._fov * (0.5 + offset.y / this.height);\n    var topHalfSurfaceDistance = Math.sin(fovAboveCenter) * this.cameraToCenterDistance / Math.sin(performance.clamp(Math.PI - groundAngle - fovAboveCenter, 0.01, Math.PI - 0.01));\n    var point = this.point;\n    var x = point.x, y = point.y;\n    var furthestDistance = Math.cos(Math.PI / 2 - this._pitch) * topHalfSurfaceDistance + this.cameraToCenterDistance;\n    var farZ = furthestDistance * 1.01;\n    var nearZ = this.height / 50;\n    var m = new Float64Array(16);\n    performance.perspective(m, this._fov, this.width / this.height, nearZ, farZ);\n    m[8] = -offset.x * 2 / this.width;\n    m[9] = offset.y * 2 / this.height;\n    performance.scale(m, m, [\n        1,\n        -1,\n        1\n    ]);\n    performance.translate(m, m, [\n        0,\n        0,\n        -this.cameraToCenterDistance\n    ]);\n    performance.rotateX(m, m, this._pitch);\n    performance.rotateZ(m, m, this.angle);\n    performance.translate(m, m, [\n        -x,\n        -y,\n        0\n    ]);\n    this.mercatorMatrix = performance.scale([], m, [\n        this.worldSize,\n        this.worldSize,\n        this.worldSize\n    ]);\n    performance.scale(m, m, [\n        1,\n        1,\n        performance.mercatorZfromAltitude(1, this.center.lat) * this.worldSize,\n        1\n    ]);\n    this.projMatrix = m;\n    this.invProjMatrix = performance.invert([], this.projMatrix);\n    var xShift = this.width % 2 / 2, yShift = this.height % 2 / 2, angleCos = Math.cos(this.angle), angleSin = Math.sin(this.angle), dx = x - Math.round(x) + angleCos * xShift + angleSin * yShift, dy = y - Math.round(y) + angleCos * yShift + angleSin * xShift;\n    var alignedM = new Float64Array(m);\n    performance.translate(alignedM, alignedM, [\n        dx > 0.5 ? dx - 1 : dx,\n        dy > 0.5 ? dy - 1 : dy,\n        0\n    ]);\n    this.alignedProjMatrix = alignedM;\n    m = performance.create();\n    performance.scale(m, m, [\n        this.width / 2,\n        -this.height / 2,\n        1\n    ]);\n    performance.translate(m, m, [\n        1,\n        -1,\n        0\n    ]);\n    this.labelPlaneMatrix = m;\n    m = performance.create();\n    performance.scale(m, m, [\n        1,\n        -1,\n        1\n    ]);\n    performance.translate(m, m, [\n        -1,\n        -1,\n        0\n    ]);\n    performance.scale(m, m, [\n        2 / this.width,\n        2 / this.height,\n        1\n    ]);\n    this.glCoordMatrix = m;\n    this.pixelMatrix = performance.multiply(new Float64Array(16), this.labelPlaneMatrix, this.projMatrix);\n    m = performance.invert(new Float64Array(16), this.pixelMatrix);\n    if (!m) {\n        throw new Error('failed to invert matrix');\n    }\n    this.pixelMatrixInverse = m;\n    this._posMatrixCache = {};\n    this._alignedPosMatrixCache = {};\n};\nTransform.prototype.maxPitchScaleFactor = function maxPitchScaleFactor() {\n    if (!this.pixelMatrixInverse) {\n        return 1;\n    }\n    var coord = this.pointCoordinate(new performance.Point(0, 0));\n    var p = [\n        coord.x * this.worldSize,\n        coord.y * this.worldSize,\n        0,\n        1\n    ];\n    var topPoint = performance.transformMat4(p, p, this.pixelMatrix);\n    return topPoint[3] / this.cameraToCenterDistance;\n};\nTransform.prototype.getCameraPoint = function getCameraPoint() {\n    var pitch = this._pitch;\n    var yOffset = Math.tan(pitch) * (this.cameraToCenterDistance || 1);\n    return this.centerPoint.add(new performance.Point(0, yOffset));\n};\nTransform.prototype.getCameraQueryGeometry = function getCameraQueryGeometry(queryGeometry) {\n    var c = this.getCameraPoint();\n    if (queryGeometry.length === 1) {\n        return [\n            queryGeometry[0],\n            c\n        ];\n    } else {\n        var minX = c.x;\n        var minY = c.y;\n        var maxX = c.x;\n        var maxY = c.y;\n        for (var i = 0, list = queryGeometry; i < list.length; i += 1) {\n            var p = list[i];\n            minX = Math.min(minX, p.x);\n            minY = Math.min(minY, p.y);\n            maxX = Math.max(maxX, p.x);\n            maxY = Math.max(maxY, p.y);\n        }\n        return [\n            new performance.Point(minX, minY),\n            new performance.Point(maxX, minY),\n            new performance.Point(maxX, maxY),\n            new performance.Point(minX, maxY),\n            new performance.Point(minX, minY)\n        ];\n    }\n};\nObject.defineProperties(Transform.prototype, prototypeAccessors);\n\nfunction throttle(fn, time) {\n    var pending = false;\n    var timerId = null;\n    var later = function () {\n        timerId = null;\n        if (pending) {\n            fn();\n            timerId = setTimeout(later, time);\n            pending = false;\n        }\n    };\n    return function () {\n        pending = true;\n        if (!timerId) {\n            later();\n        }\n        return timerId;\n    };\n}\n\nvar Hash = function Hash(hashName) {\n    this._hashName = hashName && encodeURIComponent(hashName);\n    performance.bindAll([\n        '_getCurrentHash',\n        '_onHashChange',\n        '_updateHash'\n    ], this);\n    this._updateHash = throttle(this._updateHashUnthrottled.bind(this), 30 * 1000 / 100);\n};\nHash.prototype.addTo = function addTo(map) {\n    this._map = map;\n    performance.window.addEventListener('hashchange', this._onHashChange, false);\n    this._map.on('moveend', this._updateHash);\n    return this;\n};\nHash.prototype.remove = function remove() {\n    performance.window.removeEventListener('hashchange', this._onHashChange, false);\n    this._map.off('moveend', this._updateHash);\n    clearTimeout(this._updateHash());\n    delete this._map;\n    return this;\n};\nHash.prototype.getHashString = function getHashString(mapFeedback) {\n    var center = this._map.getCenter(), zoom = Math.round(this._map.getZoom() * 100) / 100, precision = Math.ceil((zoom * Math.LN2 + Math.log(512 / 360 / 0.5)) / Math.LN10), m = Math.pow(10, precision), lng = Math.round(center.lng * m) / m, lat = Math.round(center.lat * m) / m, bearing = this._map.getBearing(), pitch = this._map.getPitch();\n    var hash = '';\n    if (mapFeedback) {\n        hash += '/' + lng + '/' + lat + '/' + zoom;\n    } else {\n        hash += zoom + '/' + lat + '/' + lng;\n    }\n    if (bearing || pitch) {\n        hash += '/' + Math.round(bearing * 10) / 10;\n    }\n    if (pitch) {\n        hash += '/' + Math.round(pitch);\n    }\n    if (this._hashName) {\n        var hashName = this._hashName;\n        var found = false;\n        var parts = performance.window.location.hash.slice(1).split('&').map(function (part) {\n            var key = part.split('=')[0];\n            if (key === hashName) {\n                found = true;\n                return key + '=' + hash;\n            }\n            return part;\n        }).filter(function (a) {\n            return a;\n        });\n        if (!found) {\n            parts.push(hashName + '=' + hash);\n        }\n        return '#' + parts.join('&');\n    }\n    return '#' + hash;\n};\nHash.prototype._getCurrentHash = function _getCurrentHash() {\n    var this$1 = this;\n    var hash = performance.window.location.hash.replace('#', '');\n    if (this._hashName) {\n        var keyval;\n        hash.split('&').map(function (part) {\n            return part.split('=');\n        }).forEach(function (part) {\n            if (part[0] === this$1._hashName) {\n                keyval = part;\n            }\n        });\n        return (keyval ? keyval[1] || '' : '').split('/');\n    }\n    return hash.split('/');\n};\nHash.prototype._onHashChange = function _onHashChange() {\n    var loc = this._getCurrentHash();\n    if (loc.length >= 3 && !loc.some(function (v) {\n            return isNaN(v);\n        })) {\n        var bearing = this._map.dragRotate.isEnabled() && this._map.touchZoomRotate.isEnabled() ? +(loc[3] || 0) : this._map.getBearing();\n        this._map.jumpTo({\n            center: [\n                +loc[2],\n                +loc[1]\n            ],\n            zoom: +loc[0],\n            bearing: bearing,\n            pitch: +(loc[4] || 0)\n        });\n        return true;\n    }\n    return false;\n};\nHash.prototype._updateHashUnthrottled = function _updateHashUnthrottled() {\n    var hash = this.getHashString();\n    try {\n        performance.window.history.replaceState(performance.window.history.state, '', hash);\n    } catch (SecurityError) {\n    }\n};\n\nvar defaultInertiaOptions = {\n    linearity: 0.3,\n    easing: performance.bezier(0, 0, 0.3, 1)\n};\nvar defaultPanInertiaOptions = performance.extend({\n    deceleration: 2500,\n    maxSpeed: 1400\n}, defaultInertiaOptions);\nvar defaultZoomInertiaOptions = performance.extend({\n    deceleration: 20,\n    maxSpeed: 1400\n}, defaultInertiaOptions);\nvar defaultBearingInertiaOptions = performance.extend({\n    deceleration: 1000,\n    maxSpeed: 360\n}, defaultInertiaOptions);\nvar defaultPitchInertiaOptions = performance.extend({\n    deceleration: 1000,\n    maxSpeed: 90\n}, defaultInertiaOptions);\nvar HandlerInertia = function HandlerInertia(map) {\n    this._map = map;\n    this.clear();\n};\nHandlerInertia.prototype.clear = function clear() {\n    this._inertiaBuffer = [];\n};\nHandlerInertia.prototype.record = function record(settings) {\n    this._drainInertiaBuffer();\n    this._inertiaBuffer.push({\n        time: performance.browser.now(),\n        settings: settings\n    });\n};\nHandlerInertia.prototype._drainInertiaBuffer = function _drainInertiaBuffer() {\n    var inertia = this._inertiaBuffer, now = performance.browser.now(), cutoff = 160;\n    while (inertia.length > 0 && now - inertia[0].time > cutoff) {\n        inertia.shift();\n    }\n};\nHandlerInertia.prototype._onMoveEnd = function _onMoveEnd(panInertiaOptions) {\n    this._drainInertiaBuffer();\n    if (this._inertiaBuffer.length < 2) {\n        return;\n    }\n    var deltas = {\n        zoom: 0,\n        bearing: 0,\n        pitch: 0,\n        pan: new performance.Point(0, 0),\n        pinchAround: undefined,\n        around: undefined\n    };\n    for (var i = 0, list = this._inertiaBuffer; i < list.length; i += 1) {\n        var ref = list[i];\n        var settings = ref.settings;\n        deltas.zoom += settings.zoomDelta || 0;\n        deltas.bearing += settings.bearingDelta || 0;\n        deltas.pitch += settings.pitchDelta || 0;\n        if (settings.panDelta) {\n            deltas.pan._add(settings.panDelta);\n        }\n        if (settings.around) {\n            deltas.around = settings.around;\n        }\n        if (settings.pinchAround) {\n            deltas.pinchAround = settings.pinchAround;\n        }\n    }\n    var lastEntry = this._inertiaBuffer[this._inertiaBuffer.length - 1];\n    var duration = lastEntry.time - this._inertiaBuffer[0].time;\n    var easeOptions = {};\n    if (deltas.pan.mag()) {\n        var result = calculateEasing(deltas.pan.mag(), duration, performance.extend({}, defaultPanInertiaOptions, panInertiaOptions || {}));\n        easeOptions.offset = deltas.pan.mult(result.amount / deltas.pan.mag());\n        easeOptions.center = this._map.transform.center;\n        extendDuration(easeOptions, result);\n    }\n    if (deltas.zoom) {\n        var result$1 = calculateEasing(deltas.zoom, duration, defaultZoomInertiaOptions);\n        easeOptions.zoom = this._map.transform.zoom + result$1.amount;\n        extendDuration(easeOptions, result$1);\n    }\n    if (deltas.bearing) {\n        var result$2 = calculateEasing(deltas.bearing, duration, defaultBearingInertiaOptions);\n        easeOptions.bearing = this._map.transform.bearing + performance.clamp(result$2.amount, -179, 179);\n        extendDuration(easeOptions, result$2);\n    }\n    if (deltas.pitch) {\n        var result$3 = calculateEasing(deltas.pitch, duration, defaultPitchInertiaOptions);\n        easeOptions.pitch = this._map.transform.pitch + result$3.amount;\n        extendDuration(easeOptions, result$3);\n    }\n    if (easeOptions.zoom || easeOptions.bearing) {\n        var last = deltas.pinchAround === undefined ? deltas.around : deltas.pinchAround;\n        easeOptions.around = last ? this._map.unproject(last) : this._map.getCenter();\n    }\n    this.clear();\n    return performance.extend(easeOptions, { noMoveStart: true });\n};\nfunction extendDuration(easeOptions, result) {\n    if (!easeOptions.duration || easeOptions.duration < result.duration) {\n        easeOptions.duration = result.duration;\n        easeOptions.easing = result.easing;\n    }\n}\nfunction calculateEasing(amount, inertiaDuration, inertiaOptions) {\n    var maxSpeed = inertiaOptions.maxSpeed;\n    var linearity = inertiaOptions.linearity;\n    var deceleration = inertiaOptions.deceleration;\n    var speed = performance.clamp(amount * linearity / (inertiaDuration / 1000), -maxSpeed, maxSpeed);\n    var duration = Math.abs(speed) / (deceleration * linearity);\n    return {\n        easing: inertiaOptions.easing,\n        duration: duration * 1000,\n        amount: speed * (duration / 2)\n    };\n}\n\nvar MapMouseEvent = function (Event) {\n    function MapMouseEvent(type, map, originalEvent, data) {\n        if (data === void 0)\n            data = {};\n        var point = DOM.mousePos(map.getCanvasContainer(), originalEvent);\n        var lngLat = map.unproject(point);\n        Event.call(this, type, performance.extend({\n            point: point,\n            lngLat: lngLat,\n            originalEvent: originalEvent\n        }, data));\n        this._defaultPrevented = false;\n        this.target = map;\n    }\n    if (Event)\n        MapMouseEvent.__proto__ = Event;\n    MapMouseEvent.prototype = Object.create(Event && Event.prototype);\n    MapMouseEvent.prototype.constructor = MapMouseEvent;\n    var prototypeAccessors = { defaultPrevented: { configurable: true } };\n    MapMouseEvent.prototype.preventDefault = function preventDefault() {\n        this._defaultPrevented = true;\n    };\n    prototypeAccessors.defaultPrevented.get = function () {\n        return this._defaultPrevented;\n    };\n    Object.defineProperties(MapMouseEvent.prototype, prototypeAccessors);\n    return MapMouseEvent;\n}(performance.Event);\nvar MapTouchEvent = function (Event) {\n    function MapTouchEvent(type, map, originalEvent) {\n        var touches = type === 'touchend' ? originalEvent.changedTouches : originalEvent.touches;\n        var points = DOM.touchPos(map.getCanvasContainer(), touches);\n        var lngLats = points.map(function (t) {\n            return map.unproject(t);\n        });\n        var point = points.reduce(function (prev, curr, i, arr) {\n            return prev.add(curr.div(arr.length));\n        }, new performance.Point(0, 0));\n        var lngLat = map.unproject(point);\n        Event.call(this, type, {\n            points: points,\n            point: point,\n            lngLats: lngLats,\n            lngLat: lngLat,\n            originalEvent: originalEvent\n        });\n        this._defaultPrevented = false;\n    }\n    if (Event)\n        MapTouchEvent.__proto__ = Event;\n    MapTouchEvent.prototype = Object.create(Event && Event.prototype);\n    MapTouchEvent.prototype.constructor = MapTouchEvent;\n    var prototypeAccessors$1 = { defaultPrevented: { configurable: true } };\n    MapTouchEvent.prototype.preventDefault = function preventDefault() {\n        this._defaultPrevented = true;\n    };\n    prototypeAccessors$1.defaultPrevented.get = function () {\n        return this._defaultPrevented;\n    };\n    Object.defineProperties(MapTouchEvent.prototype, prototypeAccessors$1);\n    return MapTouchEvent;\n}(performance.Event);\nvar MapWheelEvent = function (Event) {\n    function MapWheelEvent(type, map, originalEvent) {\n        Event.call(this, type, { originalEvent: originalEvent });\n        this._defaultPrevented = false;\n    }\n    if (Event)\n        MapWheelEvent.__proto__ = Event;\n    MapWheelEvent.prototype = Object.create(Event && Event.prototype);\n    MapWheelEvent.prototype.constructor = MapWheelEvent;\n    var prototypeAccessors$2 = { defaultPrevented: { configurable: true } };\n    MapWheelEvent.prototype.preventDefault = function preventDefault() {\n        this._defaultPrevented = true;\n    };\n    prototypeAccessors$2.defaultPrevented.get = function () {\n        return this._defaultPrevented;\n    };\n    Object.defineProperties(MapWheelEvent.prototype, prototypeAccessors$2);\n    return MapWheelEvent;\n}(performance.Event);\n\nvar MapEventHandler = function MapEventHandler(map, options) {\n    this._map = map;\n    this._clickTolerance = options.clickTolerance;\n};\nMapEventHandler.prototype.reset = function reset() {\n    delete this._mousedownPos;\n};\nMapEventHandler.prototype.wheel = function wheel(e) {\n    return this._firePreventable(new MapWheelEvent(e.type, this._map, e));\n};\nMapEventHandler.prototype.mousedown = function mousedown(e, point) {\n    this._mousedownPos = point;\n    return this._firePreventable(new MapMouseEvent(e.type, this._map, e));\n};\nMapEventHandler.prototype.mouseup = function mouseup(e) {\n    this._map.fire(new MapMouseEvent(e.type, this._map, e));\n};\nMapEventHandler.prototype.click = function click(e, point) {\n    if (this._mousedownPos && this._mousedownPos.dist(point) >= this._clickTolerance) {\n        return;\n    }\n    this._map.fire(new MapMouseEvent(e.type, this._map, e));\n};\nMapEventHandler.prototype.dblclick = function dblclick(e) {\n    return this._firePreventable(new MapMouseEvent(e.type, this._map, e));\n};\nMapEventHandler.prototype.mouseover = function mouseover(e) {\n    this._map.fire(new MapMouseEvent(e.type, this._map, e));\n};\nMapEventHandler.prototype.mouseout = function mouseout(e) {\n    this._map.fire(new MapMouseEvent(e.type, this._map, e));\n};\nMapEventHandler.prototype.touchstart = function touchstart(e) {\n    return this._firePreventable(new MapTouchEvent(e.type, this._map, e));\n};\nMapEventHandler.prototype.touchmove = function touchmove(e) {\n    this._map.fire(new MapTouchEvent(e.type, this._map, e));\n};\nMapEventHandler.prototype.touchend = function touchend(e) {\n    this._map.fire(new MapTouchEvent(e.type, this._map, e));\n};\nMapEventHandler.prototype.touchcancel = function touchcancel(e) {\n    this._map.fire(new MapTouchEvent(e.type, this._map, e));\n};\nMapEventHandler.prototype._firePreventable = function _firePreventable(mapEvent) {\n    this._map.fire(mapEvent);\n    if (mapEvent.defaultPrevented) {\n        return {};\n    }\n};\nMapEventHandler.prototype.isEnabled = function isEnabled() {\n    return true;\n};\nMapEventHandler.prototype.isActive = function isActive() {\n    return false;\n};\nMapEventHandler.prototype.enable = function enable() {\n};\nMapEventHandler.prototype.disable = function disable() {\n};\nvar BlockableMapEventHandler = function BlockableMapEventHandler(map) {\n    this._map = map;\n};\nBlockableMapEventHandler.prototype.reset = function reset() {\n    this._delayContextMenu = false;\n    delete this._contextMenuEvent;\n};\nBlockableMapEventHandler.prototype.mousemove = function mousemove(e) {\n    this._map.fire(new MapMouseEvent(e.type, this._map, e));\n};\nBlockableMapEventHandler.prototype.mousedown = function mousedown() {\n    this._delayContextMenu = true;\n};\nBlockableMapEventHandler.prototype.mouseup = function mouseup() {\n    this._delayContextMenu = false;\n    if (this._contextMenuEvent) {\n        this._map.fire(new MapMouseEvent('contextmenu', this._map, this._contextMenuEvent));\n        delete this._contextMenuEvent;\n    }\n};\nBlockableMapEventHandler.prototype.contextmenu = function contextmenu(e) {\n    if (this._delayContextMenu) {\n        this._contextMenuEvent = e;\n    } else {\n        this._map.fire(new MapMouseEvent(e.type, this._map, e));\n    }\n    if (this._map.listens('contextmenu')) {\n        e.preventDefault();\n    }\n};\nBlockableMapEventHandler.prototype.isEnabled = function isEnabled() {\n    return true;\n};\nBlockableMapEventHandler.prototype.isActive = function isActive() {\n    return false;\n};\nBlockableMapEventHandler.prototype.enable = function enable() {\n};\nBlockableMapEventHandler.prototype.disable = function disable() {\n};\n\nvar BoxZoomHandler = function BoxZoomHandler(map, options) {\n    this._map = map;\n    this._el = map.getCanvasContainer();\n    this._container = map.getContainer();\n    this._clickTolerance = options.clickTolerance || 1;\n};\nBoxZoomHandler.prototype.isEnabled = function isEnabled() {\n    return !!this._enabled;\n};\nBoxZoomHandler.prototype.isActive = function isActive() {\n    return !!this._active;\n};\nBoxZoomHandler.prototype.enable = function enable() {\n    if (this.isEnabled()) {\n        return;\n    }\n    this._enabled = true;\n};\nBoxZoomHandler.prototype.disable = function disable() {\n    if (!this.isEnabled()) {\n        return;\n    }\n    this._enabled = false;\n};\nBoxZoomHandler.prototype.mousedown = function mousedown(e, point) {\n    if (!this.isEnabled()) {\n        return;\n    }\n    if (!(e.shiftKey && e.button === 0)) {\n        return;\n    }\n    DOM.disableDrag();\n    this._startPos = this._lastPos = point;\n    this._active = true;\n};\nBoxZoomHandler.prototype.mousemoveWindow = function mousemoveWindow(e, point) {\n    if (!this._active) {\n        return;\n    }\n    var pos = point;\n    if (this._lastPos.equals(pos) || !this._box && pos.dist(this._startPos) < this._clickTolerance) {\n        return;\n    }\n    var p0 = this._startPos;\n    this._lastPos = pos;\n    if (!this._box) {\n        this._box = DOM.create('div', 'mapboxgl-boxzoom', this._container);\n        this._container.classList.add('mapboxgl-crosshair');\n        this._fireEvent('boxzoomstart', e);\n    }\n    var minX = Math.min(p0.x, pos.x), maxX = Math.max(p0.x, pos.x), minY = Math.min(p0.y, pos.y), maxY = Math.max(p0.y, pos.y);\n    DOM.setTransform(this._box, 'translate(' + minX + 'px,' + minY + 'px)');\n    this._box.style.width = maxX - minX + 'px';\n    this._box.style.height = maxY - minY + 'px';\n};\nBoxZoomHandler.prototype.mouseupWindow = function mouseupWindow(e, point) {\n    var this$1 = this;\n    if (!this._active) {\n        return;\n    }\n    if (e.button !== 0) {\n        return;\n    }\n    var p0 = this._startPos, p1 = point;\n    this.reset();\n    DOM.suppressClick();\n    if (p0.x === p1.x && p0.y === p1.y) {\n        this._fireEvent('boxzoomcancel', e);\n    } else {\n        this._map.fire(new performance.Event('boxzoomend', { originalEvent: e }));\n        return {\n            cameraAnimation: function (map) {\n                return map.fitScreenCoordinates(p0, p1, this$1._map.getBearing(), { linear: true });\n            }\n        };\n    }\n};\nBoxZoomHandler.prototype.keydown = function keydown(e) {\n    if (!this._active) {\n        return;\n    }\n    if (e.keyCode === 27) {\n        this.reset();\n        this._fireEvent('boxzoomcancel', e);\n    }\n};\nBoxZoomHandler.prototype.reset = function reset() {\n    this._active = false;\n    this._container.classList.remove('mapboxgl-crosshair');\n    if (this._box) {\n        DOM.remove(this._box);\n        this._box = null;\n    }\n    DOM.enableDrag();\n    delete this._startPos;\n    delete this._lastPos;\n};\nBoxZoomHandler.prototype._fireEvent = function _fireEvent(type, e) {\n    return this._map.fire(new performance.Event(type, { originalEvent: e }));\n};\n\nfunction indexTouches(touches, points) {\n    var obj = {};\n    for (var i = 0; i < touches.length; i++) {\n        obj[touches[i].identifier] = points[i];\n    }\n    return obj;\n}\n\nfunction getCentroid(points) {\n    var sum = new performance.Point(0, 0);\n    for (var i = 0, list = points; i < list.length; i += 1) {\n        var point = list[i];\n        sum._add(point);\n    }\n    return sum.div(points.length);\n}\nvar MAX_TAP_INTERVAL = 500;\nvar MAX_TOUCH_TIME = 500;\nvar MAX_DIST = 30;\nvar SingleTapRecognizer = function SingleTapRecognizer(options) {\n    this.reset();\n    this.numTouches = options.numTouches;\n};\nSingleTapRecognizer.prototype.reset = function reset() {\n    delete this.centroid;\n    delete this.startTime;\n    delete this.touches;\n    this.aborted = false;\n};\nSingleTapRecognizer.prototype.touchstart = function touchstart(e, points, mapTouches) {\n    if (this.centroid || mapTouches.length > this.numTouches) {\n        this.aborted = true;\n    }\n    if (this.aborted) {\n        return;\n    }\n    if (this.startTime === undefined) {\n        this.startTime = e.timeStamp;\n    }\n    if (mapTouches.length === this.numTouches) {\n        this.centroid = getCentroid(points);\n        this.touches = indexTouches(mapTouches, points);\n    }\n};\nSingleTapRecognizer.prototype.touchmove = function touchmove(e, points, mapTouches) {\n    if (this.aborted || !this.centroid) {\n        return;\n    }\n    var newTouches = indexTouches(mapTouches, points);\n    for (var id in this.touches) {\n        var prevPos = this.touches[id];\n        var pos = newTouches[id];\n        if (!pos || pos.dist(prevPos) > MAX_DIST) {\n            this.aborted = true;\n        }\n    }\n};\nSingleTapRecognizer.prototype.touchend = function touchend(e, points, mapTouches) {\n    if (!this.centroid || e.timeStamp - this.startTime > MAX_TOUCH_TIME) {\n        this.aborted = true;\n    }\n    if (mapTouches.length === 0) {\n        var centroid = !this.aborted && this.centroid;\n        this.reset();\n        if (centroid) {\n            return centroid;\n        }\n    }\n};\nvar TapRecognizer = function TapRecognizer(options) {\n    this.singleTap = new SingleTapRecognizer(options);\n    this.numTaps = options.numTaps;\n    this.reset();\n};\nTapRecognizer.prototype.reset = function reset() {\n    this.lastTime = Infinity;\n    delete this.lastTap;\n    this.count = 0;\n    this.singleTap.reset();\n};\nTapRecognizer.prototype.touchstart = function touchstart(e, points, mapTouches) {\n    this.singleTap.touchstart(e, points, mapTouches);\n};\nTapRecognizer.prototype.touchmove = function touchmove(e, points, mapTouches) {\n    this.singleTap.touchmove(e, points, mapTouches);\n};\nTapRecognizer.prototype.touchend = function touchend(e, points, mapTouches) {\n    var tap = this.singleTap.touchend(e, points, mapTouches);\n    if (tap) {\n        var soonEnough = e.timeStamp - this.lastTime < MAX_TAP_INTERVAL;\n        var closeEnough = !this.lastTap || this.lastTap.dist(tap) < MAX_DIST;\n        if (!soonEnough || !closeEnough) {\n            this.reset();\n        }\n        this.count++;\n        this.lastTime = e.timeStamp;\n        this.lastTap = tap;\n        if (this.count === this.numTaps) {\n            this.reset();\n            return tap;\n        }\n    }\n};\n\nvar TapZoomHandler = function TapZoomHandler() {\n    this._zoomIn = new TapRecognizer({\n        numTouches: 1,\n        numTaps: 2\n    });\n    this._zoomOut = new TapRecognizer({\n        numTouches: 2,\n        numTaps: 1\n    });\n    this.reset();\n};\nTapZoomHandler.prototype.reset = function reset() {\n    this._active = false;\n    this._zoomIn.reset();\n    this._zoomOut.reset();\n};\nTapZoomHandler.prototype.touchstart = function touchstart(e, points, mapTouches) {\n    this._zoomIn.touchstart(e, points, mapTouches);\n    this._zoomOut.touchstart(e, points, mapTouches);\n};\nTapZoomHandler.prototype.touchmove = function touchmove(e, points, mapTouches) {\n    this._zoomIn.touchmove(e, points, mapTouches);\n    this._zoomOut.touchmove(e, points, mapTouches);\n};\nTapZoomHandler.prototype.touchend = function touchend(e, points, mapTouches) {\n    var this$1 = this;\n    var zoomInPoint = this._zoomIn.touchend(e, points, mapTouches);\n    var zoomOutPoint = this._zoomOut.touchend(e, points, mapTouches);\n    if (zoomInPoint) {\n        this._active = true;\n        e.preventDefault();\n        setTimeout(function () {\n            return this$1.reset();\n        }, 0);\n        return {\n            cameraAnimation: function (map) {\n                return map.easeTo({\n                    duration: 300,\n                    zoom: map.getZoom() + 1,\n                    around: map.unproject(zoomInPoint)\n                }, { originalEvent: e });\n            }\n        };\n    } else if (zoomOutPoint) {\n        this._active = true;\n        e.preventDefault();\n        setTimeout(function () {\n            return this$1.reset();\n        }, 0);\n        return {\n            cameraAnimation: function (map) {\n                return map.easeTo({\n                    duration: 300,\n                    zoom: map.getZoom() - 1,\n                    around: map.unproject(zoomOutPoint)\n                }, { originalEvent: e });\n            }\n        };\n    }\n};\nTapZoomHandler.prototype.touchcancel = function touchcancel() {\n    this.reset();\n};\nTapZoomHandler.prototype.enable = function enable() {\n    this._enabled = true;\n};\nTapZoomHandler.prototype.disable = function disable() {\n    this._enabled = false;\n    this.reset();\n};\nTapZoomHandler.prototype.isEnabled = function isEnabled() {\n    return this._enabled;\n};\nTapZoomHandler.prototype.isActive = function isActive() {\n    return this._active;\n};\n\nvar LEFT_BUTTON = 0;\nvar RIGHT_BUTTON = 2;\nvar MouseHandler = function MouseHandler(options) {\n    this.reset();\n    this._clickTolerance = options.clickTolerance || 1;\n};\nMouseHandler.prototype.reset = function reset() {\n    this._active = false;\n    this._moved = false;\n    delete this._lastPoint;\n    delete this._eventButton;\n};\nMouseHandler.prototype._correctButton = function _correctButton(e, button) {\n    return false;\n};\nMouseHandler.prototype._move = function _move(lastPoint, point) {\n    return {};\n};\nMouseHandler.prototype.mousedown = function mousedown(e, point) {\n    if (this._lastPoint) {\n        return;\n    }\n    var eventButton = DOM.mouseButton(e);\n    if (!this._correctButton(e, eventButton)) {\n        return;\n    }\n    this._lastPoint = point;\n    this._eventButton = eventButton;\n};\nMouseHandler.prototype.mousemoveWindow = function mousemoveWindow(e, point) {\n    var lastPoint = this._lastPoint;\n    if (!lastPoint) {\n        return;\n    }\n    e.preventDefault();\n    if (!this._moved && point.dist(lastPoint) < this._clickTolerance) {\n        return;\n    }\n    this._moved = true;\n    this._lastPoint = point;\n    return this._move(lastPoint, point);\n};\nMouseHandler.prototype.mouseupWindow = function mouseupWindow(e) {\n    var eventButton = DOM.mouseButton(e);\n    if (eventButton !== this._eventButton) {\n        return;\n    }\n    if (this._moved) {\n        DOM.suppressClick();\n    }\n    this.reset();\n};\nMouseHandler.prototype.enable = function enable() {\n    this._enabled = true;\n};\nMouseHandler.prototype.disable = function disable() {\n    this._enabled = false;\n    this.reset();\n};\nMouseHandler.prototype.isEnabled = function isEnabled() {\n    return this._enabled;\n};\nMouseHandler.prototype.isActive = function isActive() {\n    return this._active;\n};\nvar MousePanHandler = function (MouseHandler) {\n    function MousePanHandler() {\n        MouseHandler.apply(this, arguments);\n    }\n    if (MouseHandler)\n        MousePanHandler.__proto__ = MouseHandler;\n    MousePanHandler.prototype = Object.create(MouseHandler && MouseHandler.prototype);\n    MousePanHandler.prototype.constructor = MousePanHandler;\n    MousePanHandler.prototype.mousedown = function mousedown(e, point) {\n        MouseHandler.prototype.mousedown.call(this, e, point);\n        if (this._lastPoint) {\n            this._active = true;\n        }\n    };\n    MousePanHandler.prototype._correctButton = function _correctButton(e, button) {\n        return button === LEFT_BUTTON && !e.ctrlKey;\n    };\n    MousePanHandler.prototype._move = function _move(lastPoint, point) {\n        return {\n            around: point,\n            panDelta: point.sub(lastPoint)\n        };\n    };\n    return MousePanHandler;\n}(MouseHandler);\nvar MouseRotateHandler = function (MouseHandler) {\n    function MouseRotateHandler() {\n        MouseHandler.apply(this, arguments);\n    }\n    if (MouseHandler)\n        MouseRotateHandler.__proto__ = MouseHandler;\n    MouseRotateHandler.prototype = Object.create(MouseHandler && MouseHandler.prototype);\n    MouseRotateHandler.prototype.constructor = MouseRotateHandler;\n    MouseRotateHandler.prototype._correctButton = function _correctButton(e, button) {\n        return button === LEFT_BUTTON && e.ctrlKey || button === RIGHT_BUTTON;\n    };\n    MouseRotateHandler.prototype._move = function _move(lastPoint, point) {\n        var degreesPerPixelMoved = 0.8;\n        var bearingDelta = (point.x - lastPoint.x) * degreesPerPixelMoved;\n        if (bearingDelta) {\n            this._active = true;\n            return { bearingDelta: bearingDelta };\n        }\n    };\n    MouseRotateHandler.prototype.contextmenu = function contextmenu(e) {\n        e.preventDefault();\n    };\n    return MouseRotateHandler;\n}(MouseHandler);\nvar MousePitchHandler = function (MouseHandler) {\n    function MousePitchHandler() {\n        MouseHandler.apply(this, arguments);\n    }\n    if (MouseHandler)\n        MousePitchHandler.__proto__ = MouseHandler;\n    MousePitchHandler.prototype = Object.create(MouseHandler && MouseHandler.prototype);\n    MousePitchHandler.prototype.constructor = MousePitchHandler;\n    MousePitchHandler.prototype._correctButton = function _correctButton(e, button) {\n        return button === LEFT_BUTTON && e.ctrlKey || button === RIGHT_BUTTON;\n    };\n    MousePitchHandler.prototype._move = function _move(lastPoint, point) {\n        var degreesPerPixelMoved = -0.5;\n        var pitchDelta = (point.y - lastPoint.y) * degreesPerPixelMoved;\n        if (pitchDelta) {\n            this._active = true;\n            return { pitchDelta: pitchDelta };\n        }\n    };\n    MousePitchHandler.prototype.contextmenu = function contextmenu(e) {\n        e.preventDefault();\n    };\n    return MousePitchHandler;\n}(MouseHandler);\n\nvar TouchPanHandler = function TouchPanHandler(options) {\n    this._minTouches = 1;\n    this._clickTolerance = options.clickTolerance || 1;\n    this.reset();\n};\nTouchPanHandler.prototype.reset = function reset() {\n    this._active = false;\n    this._touches = {};\n    this._sum = new performance.Point(0, 0);\n};\nTouchPanHandler.prototype.touchstart = function touchstart(e, points, mapTouches) {\n    return this._calculateTransform(e, points, mapTouches);\n};\nTouchPanHandler.prototype.touchmove = function touchmove(e, points, mapTouches) {\n    if (!this._active) {\n        return;\n    }\n    e.preventDefault();\n    return this._calculateTransform(e, points, mapTouches);\n};\nTouchPanHandler.prototype.touchend = function touchend(e, points, mapTouches) {\n    this._calculateTransform(e, points, mapTouches);\n    if (this._active && mapTouches.length < this._minTouches) {\n        this.reset();\n    }\n};\nTouchPanHandler.prototype.touchcancel = function touchcancel() {\n    this.reset();\n};\nTouchPanHandler.prototype._calculateTransform = function _calculateTransform(e, points, mapTouches) {\n    if (mapTouches.length > 0) {\n        this._active = true;\n    }\n    var touches = indexTouches(mapTouches, points);\n    var touchPointSum = new performance.Point(0, 0);\n    var touchDeltaSum = new performance.Point(0, 0);\n    var touchDeltaCount = 0;\n    for (var identifier in touches) {\n        var point = touches[identifier];\n        var prevPoint = this._touches[identifier];\n        if (prevPoint) {\n            touchPointSum._add(point);\n            touchDeltaSum._add(point.sub(prevPoint));\n            touchDeltaCount++;\n            touches[identifier] = point;\n        }\n    }\n    this._touches = touches;\n    if (touchDeltaCount < this._minTouches || !touchDeltaSum.mag()) {\n        return;\n    }\n    var panDelta = touchDeltaSum.div(touchDeltaCount);\n    this._sum._add(panDelta);\n    if (this._sum.mag() < this._clickTolerance) {\n        return;\n    }\n    var around = touchPointSum.div(touchDeltaCount);\n    return {\n        around: around,\n        panDelta: panDelta\n    };\n};\nTouchPanHandler.prototype.enable = function enable() {\n    this._enabled = true;\n};\nTouchPanHandler.prototype.disable = function disable() {\n    this._enabled = false;\n    this.reset();\n};\nTouchPanHandler.prototype.isEnabled = function isEnabled() {\n    return this._enabled;\n};\nTouchPanHandler.prototype.isActive = function isActive() {\n    return this._active;\n};\n\nvar TwoTouchHandler = function TwoTouchHandler() {\n    this.reset();\n};\nTwoTouchHandler.prototype.reset = function reset() {\n    this._active = false;\n    delete this._firstTwoTouches;\n};\nTwoTouchHandler.prototype._start = function _start(points) {\n};\nTwoTouchHandler.prototype._move = function _move(points, pinchAround, e) {\n    return {};\n};\nTwoTouchHandler.prototype.touchstart = function touchstart(e, points, mapTouches) {\n    if (this._firstTwoTouches || mapTouches.length < 2) {\n        return;\n    }\n    this._firstTwoTouches = [\n        mapTouches[0].identifier,\n        mapTouches[1].identifier\n    ];\n    this._start([\n        points[0],\n        points[1]\n    ]);\n};\nTwoTouchHandler.prototype.touchmove = function touchmove(e, points, mapTouches) {\n    if (!this._firstTwoTouches) {\n        return;\n    }\n    e.preventDefault();\n    var ref = this._firstTwoTouches;\n    var idA = ref[0];\n    var idB = ref[1];\n    var a = getTouchById(mapTouches, points, idA);\n    var b = getTouchById(mapTouches, points, idB);\n    if (!a || !b) {\n        return;\n    }\n    var pinchAround = this._aroundCenter ? null : a.add(b).div(2);\n    return this._move([\n        a,\n        b\n    ], pinchAround, e);\n};\nTwoTouchHandler.prototype.touchend = function touchend(e, points, mapTouches) {\n    if (!this._firstTwoTouches) {\n        return;\n    }\n    var ref = this._firstTwoTouches;\n    var idA = ref[0];\n    var idB = ref[1];\n    var a = getTouchById(mapTouches, points, idA);\n    var b = getTouchById(mapTouches, points, idB);\n    if (a && b) {\n        return;\n    }\n    if (this._active) {\n        DOM.suppressClick();\n    }\n    this.reset();\n};\nTwoTouchHandler.prototype.touchcancel = function touchcancel() {\n    this.reset();\n};\nTwoTouchHandler.prototype.enable = function enable(options) {\n    this._enabled = true;\n    this._aroundCenter = !!options && options.around === 'center';\n};\nTwoTouchHandler.prototype.disable = function disable() {\n    this._enabled = false;\n    this.reset();\n};\nTwoTouchHandler.prototype.isEnabled = function isEnabled() {\n    return this._enabled;\n};\nTwoTouchHandler.prototype.isActive = function isActive() {\n    return this._active;\n};\nfunction getTouchById(mapTouches, points, identifier) {\n    for (var i = 0; i < mapTouches.length; i++) {\n        if (mapTouches[i].identifier === identifier) {\n            return points[i];\n        }\n    }\n}\nvar ZOOM_THRESHOLD = 0.1;\nfunction getZoomDelta(distance, lastDistance) {\n    return Math.log(distance / lastDistance) / Math.LN2;\n}\nvar TouchZoomHandler = function (TwoTouchHandler) {\n    function TouchZoomHandler() {\n        TwoTouchHandler.apply(this, arguments);\n    }\n    if (TwoTouchHandler)\n        TouchZoomHandler.__proto__ = TwoTouchHandler;\n    TouchZoomHandler.prototype = Object.create(TwoTouchHandler && TwoTouchHandler.prototype);\n    TouchZoomHandler.prototype.constructor = TouchZoomHandler;\n    TouchZoomHandler.prototype.reset = function reset() {\n        TwoTouchHandler.prototype.reset.call(this);\n        delete this._distance;\n        delete this._startDistance;\n    };\n    TouchZoomHandler.prototype._start = function _start(points) {\n        this._startDistance = this._distance = points[0].dist(points[1]);\n    };\n    TouchZoomHandler.prototype._move = function _move(points, pinchAround) {\n        var lastDistance = this._distance;\n        this._distance = points[0].dist(points[1]);\n        if (!this._active && Math.abs(getZoomDelta(this._distance, this._startDistance)) < ZOOM_THRESHOLD) {\n            return;\n        }\n        this._active = true;\n        return {\n            zoomDelta: getZoomDelta(this._distance, lastDistance),\n            pinchAround: pinchAround\n        };\n    };\n    return TouchZoomHandler;\n}(TwoTouchHandler);\nvar ROTATION_THRESHOLD = 25;\nfunction getBearingDelta(a, b) {\n    return a.angleWith(b) * 180 / Math.PI;\n}\nvar TouchRotateHandler = function (TwoTouchHandler) {\n    function TouchRotateHandler() {\n        TwoTouchHandler.apply(this, arguments);\n    }\n    if (TwoTouchHandler)\n        TouchRotateHandler.__proto__ = TwoTouchHandler;\n    TouchRotateHandler.prototype = Object.create(TwoTouchHandler && TwoTouchHandler.prototype);\n    TouchRotateHandler.prototype.constructor = TouchRotateHandler;\n    TouchRotateHandler.prototype.reset = function reset() {\n        TwoTouchHandler.prototype.reset.call(this);\n        delete this._minDiameter;\n        delete this._startVector;\n        delete this._vector;\n    };\n    TouchRotateHandler.prototype._start = function _start(points) {\n        this._startVector = this._vector = points[0].sub(points[1]);\n        this._minDiameter = points[0].dist(points[1]);\n    };\n    TouchRotateHandler.prototype._move = function _move(points, pinchAround) {\n        var lastVector = this._vector;\n        this._vector = points[0].sub(points[1]);\n        if (!this._active && this._isBelowThreshold(this._vector)) {\n            return;\n        }\n        this._active = true;\n        return {\n            bearingDelta: getBearingDelta(this._vector, lastVector),\n            pinchAround: pinchAround\n        };\n    };\n    TouchRotateHandler.prototype._isBelowThreshold = function _isBelowThreshold(vector) {\n        this._minDiameter = Math.min(this._minDiameter, vector.mag());\n        var circumference = Math.PI * this._minDiameter;\n        var threshold = ROTATION_THRESHOLD / circumference * 360;\n        var bearingDeltaSinceStart = getBearingDelta(vector, this._startVector);\n        return Math.abs(bearingDeltaSinceStart) < threshold;\n    };\n    return TouchRotateHandler;\n}(TwoTouchHandler);\nfunction isVertical(vector) {\n    return Math.abs(vector.y) > Math.abs(vector.x);\n}\nvar ALLOWED_SINGLE_TOUCH_TIME = 100;\nvar TouchPitchHandler = function (TwoTouchHandler) {\n    function TouchPitchHandler() {\n        TwoTouchHandler.apply(this, arguments);\n    }\n    if (TwoTouchHandler)\n        TouchPitchHandler.__proto__ = TwoTouchHandler;\n    TouchPitchHandler.prototype = Object.create(TwoTouchHandler && TwoTouchHandler.prototype);\n    TouchPitchHandler.prototype.constructor = TouchPitchHandler;\n    TouchPitchHandler.prototype.reset = function reset() {\n        TwoTouchHandler.prototype.reset.call(this);\n        this._valid = undefined;\n        delete this._firstMove;\n        delete this._lastPoints;\n    };\n    TouchPitchHandler.prototype._start = function _start(points) {\n        this._lastPoints = points;\n        if (isVertical(points[0].sub(points[1]))) {\n            this._valid = false;\n        }\n    };\n    TouchPitchHandler.prototype._move = function _move(points, center, e) {\n        var vectorA = points[0].sub(this._lastPoints[0]);\n        var vectorB = points[1].sub(this._lastPoints[1]);\n        this._valid = this.gestureBeginsVertically(vectorA, vectorB, e.timeStamp);\n        if (!this._valid) {\n            return;\n        }\n        this._lastPoints = points;\n        this._active = true;\n        var yDeltaAverage = (vectorA.y + vectorB.y) / 2;\n        var degreesPerPixelMoved = -0.5;\n        return { pitchDelta: yDeltaAverage * degreesPerPixelMoved };\n    };\n    TouchPitchHandler.prototype.gestureBeginsVertically = function gestureBeginsVertically(vectorA, vectorB, timeStamp) {\n        if (this._valid !== undefined) {\n            return this._valid;\n        }\n        var threshold = 2;\n        var movedA = vectorA.mag() >= threshold;\n        var movedB = vectorB.mag() >= threshold;\n        if (!movedA && !movedB) {\n            return;\n        }\n        if (!movedA || !movedB) {\n            if (this._firstMove === undefined) {\n                this._firstMove = timeStamp;\n            }\n            if (timeStamp - this._firstMove < ALLOWED_SINGLE_TOUCH_TIME) {\n                return undefined;\n            } else {\n                return false;\n            }\n        }\n        var isSameDirection = vectorA.y > 0 === vectorB.y > 0;\n        return isVertical(vectorA) && isVertical(vectorB) && isSameDirection;\n    };\n    return TouchPitchHandler;\n}(TwoTouchHandler);\n\nvar defaultOptions = {\n    panStep: 100,\n    bearingStep: 15,\n    pitchStep: 10\n};\nvar KeyboardHandler = function KeyboardHandler() {\n    var stepOptions = defaultOptions;\n    this._panStep = stepOptions.panStep;\n    this._bearingStep = stepOptions.bearingStep;\n    this._pitchStep = stepOptions.pitchStep;\n};\nKeyboardHandler.prototype.reset = function reset() {\n    this._active = false;\n};\nKeyboardHandler.prototype.keydown = function keydown(e) {\n    var this$1 = this;\n    if (e.altKey || e.ctrlKey || e.metaKey) {\n        return;\n    }\n    var zoomDir = 0;\n    var bearingDir = 0;\n    var pitchDir = 0;\n    var xDir = 0;\n    var yDir = 0;\n    switch (e.keyCode) {\n    case 61:\n    case 107:\n    case 171:\n    case 187:\n        zoomDir = 1;\n        break;\n    case 189:\n    case 109:\n    case 173:\n        zoomDir = -1;\n        break;\n    case 37:\n        if (e.shiftKey) {\n            bearingDir = -1;\n        } else {\n            e.preventDefault();\n            xDir = -1;\n        }\n        break;\n    case 39:\n        if (e.shiftKey) {\n            bearingDir = 1;\n        } else {\n            e.preventDefault();\n            xDir = 1;\n        }\n        break;\n    case 38:\n        if (e.shiftKey) {\n            pitchDir = 1;\n        } else {\n            e.preventDefault();\n            yDir = -1;\n        }\n        break;\n    case 40:\n        if (e.shiftKey) {\n            pitchDir = -1;\n        } else {\n            e.preventDefault();\n            yDir = 1;\n        }\n        break;\n    default:\n        return;\n    }\n    return {\n        cameraAnimation: function (map) {\n            var zoom = map.getZoom();\n            map.easeTo({\n                duration: 300,\n                easeId: 'keyboardHandler',\n                easing: easeOut,\n                zoom: zoomDir ? Math.round(zoom) + zoomDir * (e.shiftKey ? 2 : 1) : zoom,\n                bearing: map.getBearing() + bearingDir * this$1._bearingStep,\n                pitch: map.getPitch() + pitchDir * this$1._pitchStep,\n                offset: [\n                    -xDir * this$1._panStep,\n                    -yDir * this$1._panStep\n                ],\n                center: map.getCenter()\n            }, { originalEvent: e });\n        }\n    };\n};\nKeyboardHandler.prototype.enable = function enable() {\n    this._enabled = true;\n};\nKeyboardHandler.prototype.disable = function disable() {\n    this._enabled = false;\n    this.reset();\n};\nKeyboardHandler.prototype.isEnabled = function isEnabled() {\n    return this._enabled;\n};\nKeyboardHandler.prototype.isActive = function isActive() {\n    return this._active;\n};\nfunction easeOut(t) {\n    return t * (2 - t);\n}\n\nvar wheelZoomDelta = 4.000244140625;\nvar defaultZoomRate = 1 / 100;\nvar wheelZoomRate = 1 / 450;\nvar maxScalePerFrame = 2;\nvar ScrollZoomHandler = function ScrollZoomHandler(map, handler) {\n    this._map = map;\n    this._el = map.getCanvasContainer();\n    this._handler = handler;\n    this._delta = 0;\n    this._defaultZoomRate = defaultZoomRate;\n    this._wheelZoomRate = wheelZoomRate;\n    performance.bindAll([\n        '_onWheel',\n        '_onTimeout',\n        '_onScrollFrame',\n        '_onScrollFinished'\n    ], this);\n};\nScrollZoomHandler.prototype.setZoomRate = function setZoomRate(zoomRate) {\n    this._defaultZoomRate = zoomRate;\n};\nScrollZoomHandler.prototype.setWheelZoomRate = function setWheelZoomRate(wheelZoomRate) {\n    this._wheelZoomRate = wheelZoomRate;\n};\nScrollZoomHandler.prototype.isEnabled = function isEnabled() {\n    return !!this._enabled;\n};\nScrollZoomHandler.prototype.isActive = function isActive() {\n    return !!this._active || this._finishTimeout !== undefined;\n};\nScrollZoomHandler.prototype.isZooming = function isZooming() {\n    return !!this._zooming;\n};\nScrollZoomHandler.prototype.enable = function enable(options) {\n    if (this.isEnabled()) {\n        return;\n    }\n    this._enabled = true;\n    this._aroundCenter = options && options.around === 'center';\n};\nScrollZoomHandler.prototype.disable = function disable() {\n    if (!this.isEnabled()) {\n        return;\n    }\n    this._enabled = false;\n};\nScrollZoomHandler.prototype.wheel = function wheel(e) {\n    if (!this.isEnabled()) {\n        return;\n    }\n    var value = e.deltaMode === performance.window.WheelEvent.DOM_DELTA_LINE ? e.deltaY * 40 : e.deltaY;\n    var now = performance.browser.now(), timeDelta = now - (this._lastWheelEventTime || 0);\n    this._lastWheelEventTime = now;\n    if (value !== 0 && value % wheelZoomDelta === 0) {\n        this._type = 'wheel';\n    } else if (value !== 0 && Math.abs(value) < 4) {\n        this._type = 'trackpad';\n    } else if (timeDelta > 400) {\n        this._type = null;\n        this._lastValue = value;\n        this._timeout = setTimeout(this._onTimeout, 40, e);\n    } else if (!this._type) {\n        this._type = Math.abs(timeDelta * value) < 200 ? 'trackpad' : 'wheel';\n        if (this._timeout) {\n            clearTimeout(this._timeout);\n            this._timeout = null;\n            value += this._lastValue;\n        }\n    }\n    if (e.shiftKey && value) {\n        value = value / 4;\n    }\n    if (this._type) {\n        this._lastWheelEvent = e;\n        this._delta -= value;\n        if (!this._active) {\n            this._start(e);\n        }\n    }\n    e.preventDefault();\n};\nScrollZoomHandler.prototype._onTimeout = function _onTimeout(initialEvent) {\n    this._type = 'wheel';\n    this._delta -= this._lastValue;\n    if (!this._active) {\n        this._start(initialEvent);\n    }\n};\nScrollZoomHandler.prototype._start = function _start(e) {\n    if (!this._delta) {\n        return;\n    }\n    if (this._frameId) {\n        this._frameId = null;\n    }\n    this._active = true;\n    if (!this.isZooming()) {\n        this._zooming = true;\n    }\n    if (this._finishTimeout) {\n        clearTimeout(this._finishTimeout);\n        delete this._finishTimeout;\n    }\n    var pos = DOM.mousePos(this._el, e);\n    this._around = performance.LngLat.convert(this._aroundCenter ? this._map.getCenter() : this._map.unproject(pos));\n    this._aroundPoint = this._map.transform.locationPoint(this._around);\n    if (!this._frameId) {\n        this._frameId = true;\n        this._handler._triggerRenderFrame();\n    }\n};\nScrollZoomHandler.prototype.renderFrame = function renderFrame() {\n    return this._onScrollFrame();\n};\nScrollZoomHandler.prototype._onScrollFrame = function _onScrollFrame() {\n    var this$1 = this;\n    if (!this._frameId) {\n        return;\n    }\n    this._frameId = null;\n    if (!this.isActive()) {\n        return;\n    }\n    var tr = this._map.transform;\n    if (this._delta !== 0) {\n        var zoomRate = this._type === 'wheel' && Math.abs(this._delta) > wheelZoomDelta ? this._wheelZoomRate : this._defaultZoomRate;\n        var scale = maxScalePerFrame / (1 + Math.exp(-Math.abs(this._delta * zoomRate)));\n        if (this._delta < 0 && scale !== 0) {\n            scale = 1 / scale;\n        }\n        var fromScale = typeof this._targetZoom === 'number' ? tr.zoomScale(this._targetZoom) : tr.scale;\n        this._targetZoom = Math.min(tr.maxZoom, Math.max(tr.minZoom, tr.scaleZoom(fromScale * scale)));\n        if (this._type === 'wheel') {\n            this._startZoom = tr.zoom;\n            this._easing = this._smoothOutEasing(200);\n        }\n        this._delta = 0;\n    }\n    var targetZoom = typeof this._targetZoom === 'number' ? this._targetZoom : tr.zoom;\n    var startZoom = this._startZoom;\n    var easing = this._easing;\n    var finished = false;\n    var zoom;\n    if (this._type === 'wheel' && startZoom && easing) {\n        var t = Math.min((performance.browser.now() - this._lastWheelEventTime) / 200, 1);\n        var k = easing(t);\n        zoom = performance.number(startZoom, targetZoom, k);\n        if (t < 1) {\n            if (!this._frameId) {\n                this._frameId = true;\n            }\n        } else {\n            finished = true;\n        }\n    } else {\n        zoom = targetZoom;\n        finished = true;\n    }\n    this._active = true;\n    if (finished) {\n        this._active = false;\n        this._finishTimeout = setTimeout(function () {\n            this$1._zooming = false;\n            this$1._handler._triggerRenderFrame();\n            delete this$1._targetZoom;\n            delete this$1._finishTimeout;\n        }, 200);\n    }\n    return {\n        noInertia: true,\n        needsRenderFrame: !finished,\n        zoomDelta: zoom - tr.zoom,\n        around: this._aroundPoint,\n        originalEvent: this._lastWheelEvent\n    };\n};\nScrollZoomHandler.prototype._smoothOutEasing = function _smoothOutEasing(duration) {\n    var easing = performance.ease;\n    if (this._prevEase) {\n        var ease = this._prevEase, t = (performance.browser.now() - ease.start) / ease.duration, speed = ease.easing(t + 0.01) - ease.easing(t), x = 0.27 / Math.sqrt(speed * speed + 0.0001) * 0.01, y = Math.sqrt(0.27 * 0.27 - x * x);\n        easing = performance.bezier(x, y, 0.25, 1);\n    }\n    this._prevEase = {\n        start: performance.browser.now(),\n        duration: duration,\n        easing: easing\n    };\n    return easing;\n};\nScrollZoomHandler.prototype.reset = function reset() {\n    this._active = false;\n};\n\nvar DoubleClickZoomHandler = function DoubleClickZoomHandler(clickZoom, TapZoom) {\n    this._clickZoom = clickZoom;\n    this._tapZoom = TapZoom;\n};\nDoubleClickZoomHandler.prototype.enable = function enable() {\n    this._clickZoom.enable();\n    this._tapZoom.enable();\n};\nDoubleClickZoomHandler.prototype.disable = function disable() {\n    this._clickZoom.disable();\n    this._tapZoom.disable();\n};\nDoubleClickZoomHandler.prototype.isEnabled = function isEnabled() {\n    return this._clickZoom.isEnabled() && this._tapZoom.isEnabled();\n};\nDoubleClickZoomHandler.prototype.isActive = function isActive() {\n    return this._clickZoom.isActive() || this._tapZoom.isActive();\n};\n\nvar ClickZoomHandler = function ClickZoomHandler() {\n    this.reset();\n};\nClickZoomHandler.prototype.reset = function reset() {\n    this._active = false;\n};\nClickZoomHandler.prototype.dblclick = function dblclick(e, point) {\n    e.preventDefault();\n    return {\n        cameraAnimation: function (map) {\n            map.easeTo({\n                duration: 300,\n                zoom: map.getZoom() + (e.shiftKey ? -1 : 1),\n                around: map.unproject(point)\n            }, { originalEvent: e });\n        }\n    };\n};\nClickZoomHandler.prototype.enable = function enable() {\n    this._enabled = true;\n};\nClickZoomHandler.prototype.disable = function disable() {\n    this._enabled = false;\n    this.reset();\n};\nClickZoomHandler.prototype.isEnabled = function isEnabled() {\n    return this._enabled;\n};\nClickZoomHandler.prototype.isActive = function isActive() {\n    return this._active;\n};\n\nvar TapDragZoomHandler = function TapDragZoomHandler() {\n    this._tap = new TapRecognizer({\n        numTouches: 1,\n        numTaps: 1\n    });\n    this.reset();\n};\nTapDragZoomHandler.prototype.reset = function reset() {\n    this._active = false;\n    delete this._swipePoint;\n    delete this._swipeTouch;\n    delete this._tapTime;\n    this._tap.reset();\n};\nTapDragZoomHandler.prototype.touchstart = function touchstart(e, points, mapTouches) {\n    if (this._swipePoint) {\n        return;\n    }\n    if (this._tapTime && e.timeStamp - this._tapTime > MAX_TAP_INTERVAL) {\n        this.reset();\n    }\n    if (!this._tapTime) {\n        this._tap.touchstart(e, points, mapTouches);\n    } else if (mapTouches.length > 0) {\n        this._swipePoint = points[0];\n        this._swipeTouch = mapTouches[0].identifier;\n    }\n};\nTapDragZoomHandler.prototype.touchmove = function touchmove(e, points, mapTouches) {\n    if (!this._tapTime) {\n        this._tap.touchmove(e, points, mapTouches);\n    } else if (this._swipePoint) {\n        if (mapTouches[0].identifier !== this._swipeTouch) {\n            return;\n        }\n        var newSwipePoint = points[0];\n        var dist = newSwipePoint.y - this._swipePoint.y;\n        this._swipePoint = newSwipePoint;\n        e.preventDefault();\n        this._active = true;\n        return { zoomDelta: dist / 128 };\n    }\n};\nTapDragZoomHandler.prototype.touchend = function touchend(e, points, mapTouches) {\n    if (!this._tapTime) {\n        var point = this._tap.touchend(e, points, mapTouches);\n        if (point) {\n            this._tapTime = e.timeStamp;\n        }\n    } else if (this._swipePoint) {\n        if (mapTouches.length === 0) {\n            this.reset();\n        }\n    }\n};\nTapDragZoomHandler.prototype.touchcancel = function touchcancel() {\n    this.reset();\n};\nTapDragZoomHandler.prototype.enable = function enable() {\n    this._enabled = true;\n};\nTapDragZoomHandler.prototype.disable = function disable() {\n    this._enabled = false;\n    this.reset();\n};\nTapDragZoomHandler.prototype.isEnabled = function isEnabled() {\n    return this._enabled;\n};\nTapDragZoomHandler.prototype.isActive = function isActive() {\n    return this._active;\n};\n\nvar DragPanHandler = function DragPanHandler(el, mousePan, touchPan) {\n    this._el = el;\n    this._mousePan = mousePan;\n    this._touchPan = touchPan;\n};\nDragPanHandler.prototype.enable = function enable(options) {\n    this._inertiaOptions = options || {};\n    this._mousePan.enable();\n    this._touchPan.enable();\n    this._el.classList.add('mapboxgl-touch-drag-pan');\n};\nDragPanHandler.prototype.disable = function disable() {\n    this._mousePan.disable();\n    this._touchPan.disable();\n    this._el.classList.remove('mapboxgl-touch-drag-pan');\n};\nDragPanHandler.prototype.isEnabled = function isEnabled() {\n    return this._mousePan.isEnabled() && this._touchPan.isEnabled();\n};\nDragPanHandler.prototype.isActive = function isActive() {\n    return this._mousePan.isActive() || this._touchPan.isActive();\n};\n\nvar DragRotateHandler = function DragRotateHandler(options, mouseRotate, mousePitch) {\n    this._pitchWithRotate = options.pitchWithRotate;\n    this._mouseRotate = mouseRotate;\n    this._mousePitch = mousePitch;\n};\nDragRotateHandler.prototype.enable = function enable() {\n    this._mouseRotate.enable();\n    if (this._pitchWithRotate) {\n        this._mousePitch.enable();\n    }\n};\nDragRotateHandler.prototype.disable = function disable() {\n    this._mouseRotate.disable();\n    this._mousePitch.disable();\n};\nDragRotateHandler.prototype.isEnabled = function isEnabled() {\n    return this._mouseRotate.isEnabled() && (!this._pitchWithRotate || this._mousePitch.isEnabled());\n};\nDragRotateHandler.prototype.isActive = function isActive() {\n    return this._mouseRotate.isActive() || this._mousePitch.isActive();\n};\n\nvar TouchZoomRotateHandler = function TouchZoomRotateHandler(el, touchZoom, touchRotate, tapDragZoom) {\n    this._el = el;\n    this._touchZoom = touchZoom;\n    this._touchRotate = touchRotate;\n    this._tapDragZoom = tapDragZoom;\n    this._rotationDisabled = false;\n    this._enabled = true;\n};\nTouchZoomRotateHandler.prototype.enable = function enable(options) {\n    this._touchZoom.enable(options);\n    if (!this._rotationDisabled) {\n        this._touchRotate.enable(options);\n    }\n    this._tapDragZoom.enable();\n    this._el.classList.add('mapboxgl-touch-zoom-rotate');\n};\nTouchZoomRotateHandler.prototype.disable = function disable() {\n    this._touchZoom.disable();\n    this._touchRotate.disable();\n    this._tapDragZoom.disable();\n    this._el.classList.remove('mapboxgl-touch-zoom-rotate');\n};\nTouchZoomRotateHandler.prototype.isEnabled = function isEnabled() {\n    return this._touchZoom.isEnabled() && (this._rotationDisabled || this._touchRotate.isEnabled()) && this._tapDragZoom.isEnabled();\n};\nTouchZoomRotateHandler.prototype.isActive = function isActive() {\n    return this._touchZoom.isActive() || this._touchRotate.isActive() || this._tapDragZoom.isActive();\n};\nTouchZoomRotateHandler.prototype.disableRotation = function disableRotation() {\n    this._rotationDisabled = true;\n    this._touchRotate.disable();\n};\nTouchZoomRotateHandler.prototype.enableRotation = function enableRotation() {\n    this._rotationDisabled = false;\n    if (this._touchZoom.isEnabled()) {\n        this._touchRotate.enable();\n    }\n};\n\nvar isMoving = function (p) {\n    return p.zoom || p.drag || p.pitch || p.rotate;\n};\nvar RenderFrameEvent = function (Event) {\n    function RenderFrameEvent() {\n        Event.apply(this, arguments);\n    }\n    if (Event)\n        RenderFrameEvent.__proto__ = Event;\n    RenderFrameEvent.prototype = Object.create(Event && Event.prototype);\n    RenderFrameEvent.prototype.constructor = RenderFrameEvent;\n    return RenderFrameEvent;\n}(performance.Event);\nfunction hasChange(result) {\n    return result.panDelta && result.panDelta.mag() || result.zoomDelta || result.bearingDelta || result.pitchDelta;\n}\nvar HandlerManager = function HandlerManager(map, options) {\n    this._map = map;\n    this._el = this._map.getCanvasContainer();\n    this._handlers = [];\n    this._handlersById = {};\n    this._changes = [];\n    this._inertia = new HandlerInertia(map);\n    this._bearingSnap = options.bearingSnap;\n    this._previousActiveHandlers = {};\n    this._eventsInProgress = {};\n    this._addDefaultHandlers(options);\n    performance.bindAll([\n        'handleEvent',\n        'handleWindowEvent'\n    ], this);\n    var el = this._el;\n    this._listeners = [\n        [\n            el,\n            'touchstart',\n            { passive: false }\n        ],\n        [\n            el,\n            'touchmove',\n            { passive: false }\n        ],\n        [\n            el,\n            'touchend',\n            undefined\n        ],\n        [\n            el,\n            'touchcancel',\n            undefined\n        ],\n        [\n            el,\n            'mousedown',\n            undefined\n        ],\n        [\n            el,\n            'mousemove',\n            undefined\n        ],\n        [\n            el,\n            'mouseup',\n            undefined\n        ],\n        [\n            performance.window.document,\n            'mousemove',\n            { capture: true }\n        ],\n        [\n            performance.window.document,\n            'mouseup',\n            undefined\n        ],\n        [\n            el,\n            'mouseover',\n            undefined\n        ],\n        [\n            el,\n            'mouseout',\n            undefined\n        ],\n        [\n            el,\n            'dblclick',\n            undefined\n        ],\n        [\n            el,\n            'click',\n            undefined\n        ],\n        [\n            el,\n            'keydown',\n            { capture: false }\n        ],\n        [\n            el,\n            'keyup',\n            undefined\n        ],\n        [\n            el,\n            'wheel',\n            { passive: false }\n        ],\n        [\n            el,\n            'contextmenu',\n            undefined\n        ],\n        [\n            performance.window,\n            'blur',\n            undefined\n        ]\n    ];\n    for (var i = 0, list = this._listeners; i < list.length; i += 1) {\n        var ref = list[i];\n        var target = ref[0];\n        var type = ref[1];\n        var listenerOptions = ref[2];\n        DOM.addEventListener(target, type, target === performance.window.document ? this.handleWindowEvent : this.handleEvent, listenerOptions);\n    }\n};\nHandlerManager.prototype.destroy = function destroy() {\n    for (var i = 0, list = this._listeners; i < list.length; i += 1) {\n        var ref = list[i];\n        var target = ref[0];\n        var type = ref[1];\n        var listenerOptions = ref[2];\n        DOM.removeEventListener(target, type, target === performance.window.document ? this.handleWindowEvent : this.handleEvent, listenerOptions);\n    }\n};\nHandlerManager.prototype._addDefaultHandlers = function _addDefaultHandlers(options) {\n    var map = this._map;\n    var el = map.getCanvasContainer();\n    this._add('mapEvent', new MapEventHandler(map, options));\n    var boxZoom = map.boxZoom = new BoxZoomHandler(map, options);\n    this._add('boxZoom', boxZoom);\n    var tapZoom = new TapZoomHandler();\n    var clickZoom = new ClickZoomHandler();\n    map.doubleClickZoom = new DoubleClickZoomHandler(clickZoom, tapZoom);\n    this._add('tapZoom', tapZoom);\n    this._add('clickZoom', clickZoom);\n    var tapDragZoom = new TapDragZoomHandler();\n    this._add('tapDragZoom', tapDragZoom);\n    var touchPitch = map.touchPitch = new TouchPitchHandler();\n    this._add('touchPitch', touchPitch);\n    var mouseRotate = new MouseRotateHandler(options);\n    var mousePitch = new MousePitchHandler(options);\n    map.dragRotate = new DragRotateHandler(options, mouseRotate, mousePitch);\n    this._add('mouseRotate', mouseRotate, ['mousePitch']);\n    this._add('mousePitch', mousePitch, ['mouseRotate']);\n    var mousePan = new MousePanHandler(options);\n    var touchPan = new TouchPanHandler(options);\n    map.dragPan = new DragPanHandler(el, mousePan, touchPan);\n    this._add('mousePan', mousePan);\n    this._add('touchPan', touchPan, [\n        'touchZoom',\n        'touchRotate'\n    ]);\n    var touchRotate = new TouchRotateHandler();\n    var touchZoom = new TouchZoomHandler();\n    map.touchZoomRotate = new TouchZoomRotateHandler(el, touchZoom, touchRotate, tapDragZoom);\n    this._add('touchRotate', touchRotate, [\n        'touchPan',\n        'touchZoom'\n    ]);\n    this._add('touchZoom', touchZoom, [\n        'touchPan',\n        'touchRotate'\n    ]);\n    var scrollZoom = map.scrollZoom = new ScrollZoomHandler(map, this);\n    this._add('scrollZoom', scrollZoom, ['mousePan']);\n    var keyboard = map.keyboard = new KeyboardHandler();\n    this._add('keyboard', keyboard);\n    this._add('blockableMapEvent', new BlockableMapEventHandler(map));\n    for (var i = 0, list = [\n                'boxZoom',\n                'doubleClickZoom',\n                'tapDragZoom',\n                'touchPitch',\n                'dragRotate',\n                'dragPan',\n                'touchZoomRotate',\n                'scrollZoom',\n                'keyboard'\n            ]; i < list.length; i += 1) {\n        var name = list[i];\n        if (options.interactive && options[name]) {\n            map[name].enable(options[name]);\n        }\n    }\n};\nHandlerManager.prototype._add = function _add(handlerName, handler, allowed) {\n    this._handlers.push({\n        handlerName: handlerName,\n        handler: handler,\n        allowed: allowed\n    });\n    this._handlersById[handlerName] = handler;\n};\nHandlerManager.prototype.stop = function stop() {\n    if (this._updatingCamera) {\n        return;\n    }\n    for (var i = 0, list = this._handlers; i < list.length; i += 1) {\n        var ref = list[i];\n        var handler = ref.handler;\n        handler.reset();\n    }\n    this._inertia.clear();\n    this._fireEvents({}, {});\n    this._changes = [];\n};\nHandlerManager.prototype.isActive = function isActive() {\n    for (var i = 0, list = this._handlers; i < list.length; i += 1) {\n        var ref = list[i];\n        var handler = ref.handler;\n        if (handler.isActive()) {\n            return true;\n        }\n    }\n    return false;\n};\nHandlerManager.prototype.isZooming = function isZooming() {\n    return !!this._eventsInProgress.zoom || this._map.scrollZoom.isZooming();\n};\nHandlerManager.prototype.isRotating = function isRotating() {\n    return !!this._eventsInProgress.rotate;\n};\nHandlerManager.prototype.isMoving = function isMoving$1() {\n    return Boolean(isMoving(this._eventsInProgress)) || this.isZooming();\n};\nHandlerManager.prototype._blockedByActive = function _blockedByActive(activeHandlers, allowed, myName) {\n    for (var name in activeHandlers) {\n        if (name === myName) {\n            continue;\n        }\n        if (!allowed || allowed.indexOf(name) < 0) {\n            return true;\n        }\n    }\n    return false;\n};\nHandlerManager.prototype.handleWindowEvent = function handleWindowEvent(e) {\n    this.handleEvent(e, e.type + 'Window');\n};\nHandlerManager.prototype._getMapTouches = function _getMapTouches(touches) {\n    var mapTouches = [];\n    for (var i = 0, list = touches; i < list.length; i += 1) {\n        var t = list[i];\n        var target = t.target;\n        if (this._el.contains(target)) {\n            mapTouches.push(t);\n        }\n    }\n    return mapTouches;\n};\nHandlerManager.prototype.handleEvent = function handleEvent(e, eventName) {\n    if (e.type === 'blur') {\n        this.stop();\n        return;\n    }\n    this._updatingCamera = true;\n    var inputEvent = e.type === 'renderFrame' ? undefined : e;\n    var mergedHandlerResult = { needsRenderFrame: false };\n    var eventsInProgress = {};\n    var activeHandlers = {};\n    var mapTouches = e.touches ? this._getMapTouches(e.touches) : undefined;\n    var points = mapTouches ? DOM.touchPos(this._el, mapTouches) : DOM.mousePos(this._el, e);\n    for (var i = 0, list = this._handlers; i < list.length; i += 1) {\n        var ref = list[i];\n        var handlerName = ref.handlerName;\n        var handler = ref.handler;\n        var allowed = ref.allowed;\n        if (!handler.isEnabled()) {\n            continue;\n        }\n        var data = void 0;\n        if (this._blockedByActive(activeHandlers, allowed, handlerName)) {\n            handler.reset();\n        } else {\n            if (handler[eventName || e.type]) {\n                data = handler[eventName || e.type](e, points, mapTouches);\n                this.mergeHandlerResult(mergedHandlerResult, eventsInProgress, data, handlerName, inputEvent);\n                if (data && data.needsRenderFrame) {\n                    this._triggerRenderFrame();\n                }\n            }\n        }\n        if (data || handler.isActive()) {\n            activeHandlers[handlerName] = handler;\n        }\n    }\n    var deactivatedHandlers = {};\n    for (var name in this._previousActiveHandlers) {\n        if (!activeHandlers[name]) {\n            deactivatedHandlers[name] = inputEvent;\n        }\n    }\n    this._previousActiveHandlers = activeHandlers;\n    if (Object.keys(deactivatedHandlers).length || hasChange(mergedHandlerResult)) {\n        this._changes.push([\n            mergedHandlerResult,\n            eventsInProgress,\n            deactivatedHandlers\n        ]);\n        this._triggerRenderFrame();\n    }\n    if (Object.keys(activeHandlers).length || hasChange(mergedHandlerResult)) {\n        this._map._stop(true);\n    }\n    this._updatingCamera = false;\n    var cameraAnimation = mergedHandlerResult.cameraAnimation;\n    if (cameraAnimation) {\n        this._inertia.clear();\n        this._fireEvents({}, {});\n        this._changes = [];\n        cameraAnimation(this._map);\n    }\n};\nHandlerManager.prototype.mergeHandlerResult = function mergeHandlerResult(mergedHandlerResult, eventsInProgress, handlerResult, name, e) {\n    if (!handlerResult) {\n        return;\n    }\n    performance.extend(mergedHandlerResult, handlerResult);\n    var eventData = {\n        handlerName: name,\n        originalEvent: handlerResult.originalEvent || e\n    };\n    if (handlerResult.zoomDelta !== undefined) {\n        eventsInProgress.zoom = eventData;\n    }\n    if (handlerResult.panDelta !== undefined) {\n        eventsInProgress.drag = eventData;\n    }\n    if (handlerResult.pitchDelta !== undefined) {\n        eventsInProgress.pitch = eventData;\n    }\n    if (handlerResult.bearingDelta !== undefined) {\n        eventsInProgress.rotate = eventData;\n    }\n};\nHandlerManager.prototype._applyChanges = function _applyChanges() {\n    var combined = {};\n    var combinedEventsInProgress = {};\n    var combinedDeactivatedHandlers = {};\n    for (var i = 0, list = this._changes; i < list.length; i += 1) {\n        var ref = list[i];\n        var change = ref[0];\n        var eventsInProgress = ref[1];\n        var deactivatedHandlers = ref[2];\n        if (change.panDelta) {\n            combined.panDelta = (combined.panDelta || new performance.Point(0, 0))._add(change.panDelta);\n        }\n        if (change.zoomDelta) {\n            combined.zoomDelta = (combined.zoomDelta || 0) + change.zoomDelta;\n        }\n        if (change.bearingDelta) {\n            combined.bearingDelta = (combined.bearingDelta || 0) + change.bearingDelta;\n        }\n        if (change.pitchDelta) {\n            combined.pitchDelta = (combined.pitchDelta || 0) + change.pitchDelta;\n        }\n        if (change.around !== undefined) {\n            combined.around = change.around;\n        }\n        if (change.pinchAround !== undefined) {\n            combined.pinchAround = change.pinchAround;\n        }\n        if (change.noInertia) {\n            combined.noInertia = change.noInertia;\n        }\n        performance.extend(combinedEventsInProgress, eventsInProgress);\n        performance.extend(combinedDeactivatedHandlers, deactivatedHandlers);\n    }\n    this._updateMapTransform(combined, combinedEventsInProgress, combinedDeactivatedHandlers);\n    this._changes = [];\n};\nHandlerManager.prototype._updateMapTransform = function _updateMapTransform(combinedResult, combinedEventsInProgress, deactivatedHandlers) {\n    var map = this._map;\n    var tr = map.transform;\n    if (!hasChange(combinedResult)) {\n        return this._fireEvents(combinedEventsInProgress, deactivatedHandlers);\n    }\n    var panDelta = combinedResult.panDelta;\n    var zoomDelta = combinedResult.zoomDelta;\n    var bearingDelta = combinedResult.bearingDelta;\n    var pitchDelta = combinedResult.pitchDelta;\n    var around = combinedResult.around;\n    var pinchAround = combinedResult.pinchAround;\n    if (pinchAround !== undefined) {\n        around = pinchAround;\n    }\n    map._stop(true);\n    around = around || map.transform.centerPoint;\n    var loc = tr.pointLocation(panDelta ? around.sub(panDelta) : around);\n    if (bearingDelta) {\n        tr.bearing += bearingDelta;\n    }\n    if (pitchDelta) {\n        tr.pitch += pitchDelta;\n    }\n    if (zoomDelta) {\n        tr.zoom += zoomDelta;\n    }\n    tr.setLocationAtPoint(loc, around);\n    this._map._update();\n    if (!combinedResult.noInertia) {\n        this._inertia.record(combinedResult);\n    }\n    this._fireEvents(combinedEventsInProgress, deactivatedHandlers);\n};\nHandlerManager.prototype._fireEvents = function _fireEvents(newEventsInProgress, deactivatedHandlers) {\n    var this$1 = this;\n    var wasMoving = isMoving(this._eventsInProgress);\n    var nowMoving = isMoving(newEventsInProgress);\n    var startEvents = {};\n    for (var eventName in newEventsInProgress) {\n        var ref = newEventsInProgress[eventName];\n        var originalEvent = ref.originalEvent;\n        if (!this._eventsInProgress[eventName]) {\n            startEvents[eventName + 'start'] = originalEvent;\n        }\n        this._eventsInProgress[eventName] = newEventsInProgress[eventName];\n    }\n    if (!wasMoving && nowMoving) {\n        this._fireEvent('movestart', nowMoving.originalEvent);\n    }\n    for (var name in startEvents) {\n        this._fireEvent(name, startEvents[name]);\n    }\n    if (newEventsInProgress.rotate) {\n        this._bearingChanged = true;\n    }\n    if (nowMoving) {\n        this._fireEvent('move', nowMoving.originalEvent);\n    }\n    for (var eventName$1 in newEventsInProgress) {\n        var ref$1 = newEventsInProgress[eventName$1];\n        var originalEvent$1 = ref$1.originalEvent;\n        this._fireEvent(eventName$1, originalEvent$1);\n    }\n    var endEvents = {};\n    var originalEndEvent;\n    for (var eventName$2 in this._eventsInProgress) {\n        var ref$2 = this._eventsInProgress[eventName$2];\n        var handlerName = ref$2.handlerName;\n        var originalEvent$2 = ref$2.originalEvent;\n        if (!this._handlersById[handlerName].isActive()) {\n            delete this._eventsInProgress[eventName$2];\n            originalEndEvent = deactivatedHandlers[handlerName] || originalEvent$2;\n            endEvents[eventName$2 + 'end'] = originalEndEvent;\n        }\n    }\n    for (var name$1 in endEvents) {\n        this._fireEvent(name$1, endEvents[name$1]);\n    }\n    var stillMoving = isMoving(this._eventsInProgress);\n    if ((wasMoving || nowMoving) && !stillMoving) {\n        this._updatingCamera = true;\n        var inertialEase = this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions);\n        var shouldSnapToNorth = function (bearing) {\n            return bearing !== 0 && -this$1._bearingSnap < bearing && bearing < this$1._bearingSnap;\n        };\n        if (inertialEase) {\n            if (shouldSnapToNorth(inertialEase.bearing || this._map.getBearing())) {\n                inertialEase.bearing = 0;\n            }\n            this._map.easeTo(inertialEase, { originalEvent: originalEndEvent });\n        } else {\n            this._map.fire(new performance.Event('moveend', { originalEvent: originalEndEvent }));\n            if (shouldSnapToNorth(this._map.getBearing())) {\n                this._map.resetNorth();\n            }\n        }\n        this._bearingChanged = false;\n        this._updatingCamera = false;\n    }\n};\nHandlerManager.prototype._fireEvent = function _fireEvent(type, e) {\n    this._map.fire(new performance.Event(type, e ? { originalEvent: e } : {}));\n};\nHandlerManager.prototype._triggerRenderFrame = function _triggerRenderFrame() {\n    var this$1 = this;\n    if (this._frameId === undefined) {\n        this._frameId = this._map._requestRenderFrame(function (timeStamp) {\n            delete this$1._frameId;\n            this$1.handleEvent(new RenderFrameEvent('renderFrame', { timeStamp: timeStamp }));\n            this$1._applyChanges();\n        });\n    }\n};\n\nvar Camera = function (Evented) {\n    function Camera(transform, options) {\n        Evented.call(this);\n        this._moving = false;\n        this._zooming = false;\n        this.transform = transform;\n        this._bearingSnap = options.bearingSnap;\n        performance.bindAll(['_renderFrameCallback'], this);\n    }\n    if (Evented)\n        Camera.__proto__ = Evented;\n    Camera.prototype = Object.create(Evented && Evented.prototype);\n    Camera.prototype.constructor = Camera;\n    Camera.prototype.getCenter = function getCenter() {\n        return new performance.LngLat(this.transform.center.lng, this.transform.center.lat);\n    };\n    Camera.prototype.setCenter = function setCenter(center, eventData) {\n        return this.jumpTo({ center: center }, eventData);\n    };\n    Camera.prototype.panBy = function panBy(offset, options, eventData) {\n        offset = performance.Point.convert(offset).mult(-1);\n        return this.panTo(this.transform.center, performance.extend({ offset: offset }, options), eventData);\n    };\n    Camera.prototype.panTo = function panTo(lnglat, options, eventData) {\n        return this.easeTo(performance.extend({ center: lnglat }, options), eventData);\n    };\n    Camera.prototype.getZoom = function getZoom() {\n        return this.transform.zoom;\n    };\n    Camera.prototype.setZoom = function setZoom(zoom, eventData) {\n        this.jumpTo({ zoom: zoom }, eventData);\n        return this;\n    };\n    Camera.prototype.zoomTo = function zoomTo(zoom, options, eventData) {\n        return this.easeTo(performance.extend({ zoom: zoom }, options), eventData);\n    };\n    Camera.prototype.zoomIn = function zoomIn(options, eventData) {\n        this.zoomTo(this.getZoom() + 1, options, eventData);\n        return this;\n    };\n    Camera.prototype.zoomOut = function zoomOut(options, eventData) {\n        this.zoomTo(this.getZoom() - 1, options, eventData);\n        return this;\n    };\n    Camera.prototype.getBearing = function getBearing() {\n        return this.transform.bearing;\n    };\n    Camera.prototype.setBearing = function setBearing(bearing, eventData) {\n        this.jumpTo({ bearing: bearing }, eventData);\n        return this;\n    };\n    Camera.prototype.getPadding = function getPadding() {\n        return this.transform.padding;\n    };\n    Camera.prototype.setPadding = function setPadding(padding, eventData) {\n        this.jumpTo({ padding: padding }, eventData);\n        return this;\n    };\n    Camera.prototype.rotateTo = function rotateTo(bearing, options, eventData) {\n        return this.easeTo(performance.extend({ bearing: bearing }, options), eventData);\n    };\n    Camera.prototype.resetNorth = function resetNorth(options, eventData) {\n        this.rotateTo(0, performance.extend({ duration: 1000 }, options), eventData);\n        return this;\n    };\n    Camera.prototype.resetNorthPitch = function resetNorthPitch(options, eventData) {\n        this.easeTo(performance.extend({\n            bearing: 0,\n            pitch: 0,\n            duration: 1000\n        }, options), eventData);\n        return this;\n    };\n    Camera.prototype.snapToNorth = function snapToNorth(options, eventData) {\n        if (Math.abs(this.getBearing()) < this._bearingSnap) {\n            return this.resetNorth(options, eventData);\n        }\n        return this;\n    };\n    Camera.prototype.getPitch = function getPitch() {\n        return this.transform.pitch;\n    };\n    Camera.prototype.setPitch = function setPitch(pitch, eventData) {\n        this.jumpTo({ pitch: pitch }, eventData);\n        return this;\n    };\n    Camera.prototype.cameraForBounds = function cameraForBounds(bounds, options) {\n        bounds = performance.LngLatBounds.convert(bounds);\n        return this._cameraForBoxAndBearing(bounds.getNorthWest(), bounds.getSouthEast(), 0, options);\n    };\n    Camera.prototype._cameraForBoxAndBearing = function _cameraForBoxAndBearing(p0, p1, bearing, options) {\n        var defaultPadding = {\n            top: 0,\n            bottom: 0,\n            right: 0,\n            left: 0\n        };\n        options = performance.extend({\n            padding: defaultPadding,\n            offset: [\n                0,\n                0\n            ],\n            maxZoom: this.transform.maxZoom\n        }, options);\n        if (typeof options.padding === 'number') {\n            var p = options.padding;\n            options.padding = {\n                top: p,\n                bottom: p,\n                right: p,\n                left: p\n            };\n        }\n        options.padding = performance.extend(defaultPadding, options.padding);\n        var tr = this.transform;\n        var edgePadding = tr.padding;\n        var p0world = tr.project(performance.LngLat.convert(p0));\n        var p1world = tr.project(performance.LngLat.convert(p1));\n        var p0rotated = p0world.rotate(-bearing * Math.PI / 180);\n        var p1rotated = p1world.rotate(-bearing * Math.PI / 180);\n        var upperRight = new performance.Point(Math.max(p0rotated.x, p1rotated.x), Math.max(p0rotated.y, p1rotated.y));\n        var lowerLeft = new performance.Point(Math.min(p0rotated.x, p1rotated.x), Math.min(p0rotated.y, p1rotated.y));\n        var size = upperRight.sub(lowerLeft);\n        var scaleX = (tr.width - (edgePadding.left + edgePadding.right + options.padding.left + options.padding.right)) / size.x;\n        var scaleY = (tr.height - (edgePadding.top + edgePadding.bottom + options.padding.top + options.padding.bottom)) / size.y;\n        if (scaleY < 0 || scaleX < 0) {\n            performance.warnOnce('Map cannot fit within canvas with the given bounds, padding, and/or offset.');\n            return;\n        }\n        var zoom = Math.min(tr.scaleZoom(tr.scale * Math.min(scaleX, scaleY)), options.maxZoom);\n        var offset = performance.Point.convert(options.offset);\n        var paddingOffsetX = (options.padding.left - options.padding.right) / 2;\n        var paddingOffsetY = (options.padding.top - options.padding.bottom) / 2;\n        var offsetAtInitialZoom = new performance.Point(offset.x + paddingOffsetX, offset.y + paddingOffsetY);\n        var offsetAtFinalZoom = offsetAtInitialZoom.mult(tr.scale / tr.zoomScale(zoom));\n        var center = tr.unproject(p0world.add(p1world).div(2).sub(offsetAtFinalZoom));\n        return {\n            center: center,\n            zoom: zoom,\n            bearing: bearing\n        };\n    };\n    Camera.prototype.fitBounds = function fitBounds(bounds, options, eventData) {\n        return this._fitInternal(this.cameraForBounds(bounds, options), options, eventData);\n    };\n    Camera.prototype.fitScreenCoordinates = function fitScreenCoordinates(p0, p1, bearing, options, eventData) {\n        return this._fitInternal(this._cameraForBoxAndBearing(this.transform.pointLocation(performance.Point.convert(p0)), this.transform.pointLocation(performance.Point.convert(p1)), bearing, options), options, eventData);\n    };\n    Camera.prototype._fitInternal = function _fitInternal(calculatedOptions, options, eventData) {\n        if (!calculatedOptions) {\n            return this;\n        }\n        options = performance.extend(calculatedOptions, options);\n        delete options.padding;\n        return options.linear ? this.easeTo(options, eventData) : this.flyTo(options, eventData);\n    };\n    Camera.prototype.jumpTo = function jumpTo(options, eventData) {\n        this.stop();\n        var tr = this.transform;\n        var zoomChanged = false, bearingChanged = false, pitchChanged = false;\n        if ('zoom' in options && tr.zoom !== +options.zoom) {\n            zoomChanged = true;\n            tr.zoom = +options.zoom;\n        }\n        if (options.center !== undefined) {\n            tr.center = performance.LngLat.convert(options.center);\n        }\n        if ('bearing' in options && tr.bearing !== +options.bearing) {\n            bearingChanged = true;\n            tr.bearing = +options.bearing;\n        }\n        if ('pitch' in options && tr.pitch !== +options.pitch) {\n            pitchChanged = true;\n            tr.pitch = +options.pitch;\n        }\n        if (options.padding != null && !tr.isPaddingEqual(options.padding)) {\n            tr.padding = options.padding;\n        }\n        this.fire(new performance.Event('movestart', eventData)).fire(new performance.Event('move', eventData));\n        if (zoomChanged) {\n            this.fire(new performance.Event('zoomstart', eventData)).fire(new performance.Event('zoom', eventData)).fire(new performance.Event('zoomend', eventData));\n        }\n        if (bearingChanged) {\n            this.fire(new performance.Event('rotatestart', eventData)).fire(new performance.Event('rotate', eventData)).fire(new performance.Event('rotateend', eventData));\n        }\n        if (pitchChanged) {\n            this.fire(new performance.Event('pitchstart', eventData)).fire(new performance.Event('pitch', eventData)).fire(new performance.Event('pitchend', eventData));\n        }\n        return this.fire(new performance.Event('moveend', eventData));\n    };\n    Camera.prototype.easeTo = function easeTo(options, eventData) {\n        var this$1 = this;\n        this._stop(false, options.easeId);\n        options = performance.extend({\n            offset: [\n                0,\n                0\n            ],\n            duration: 500,\n            easing: performance.ease\n        }, options);\n        if (options.animate === false || !options.essential && performance.browser.prefersReducedMotion) {\n            options.duration = 0;\n        }\n        var tr = this.transform, startZoom = this.getZoom(), startBearing = this.getBearing(), startPitch = this.getPitch(), startPadding = this.getPadding(), zoom = 'zoom' in options ? +options.zoom : startZoom, bearing = 'bearing' in options ? this._normalizeBearing(options.bearing, startBearing) : startBearing, pitch = 'pitch' in options ? +options.pitch : startPitch, padding = 'padding' in options ? options.padding : tr.padding;\n        var offsetAsPoint = performance.Point.convert(options.offset);\n        var pointAtOffset = tr.centerPoint.add(offsetAsPoint);\n        var locationAtOffset = tr.pointLocation(pointAtOffset);\n        var center = performance.LngLat.convert(options.center || locationAtOffset);\n        this._normalizeCenter(center);\n        var from = tr.project(locationAtOffset);\n        var delta = tr.project(center).sub(from);\n        var finalScale = tr.zoomScale(zoom - startZoom);\n        var around, aroundPoint;\n        if (options.around) {\n            around = performance.LngLat.convert(options.around);\n            aroundPoint = tr.locationPoint(around);\n        }\n        var currently = {\n            moving: this._moving,\n            zooming: this._zooming,\n            rotating: this._rotating,\n            pitching: this._pitching\n        };\n        this._zooming = this._zooming || zoom !== startZoom;\n        this._rotating = this._rotating || startBearing !== bearing;\n        this._pitching = this._pitching || pitch !== startPitch;\n        this._padding = !tr.isPaddingEqual(padding);\n        this._easeId = options.easeId;\n        this._prepareEase(eventData, options.noMoveStart, currently);\n        clearTimeout(this._easeEndTimeoutID);\n        this._ease(function (k) {\n            if (this$1._zooming) {\n                tr.zoom = performance.number(startZoom, zoom, k);\n            }\n            if (this$1._rotating) {\n                tr.bearing = performance.number(startBearing, bearing, k);\n            }\n            if (this$1._pitching) {\n                tr.pitch = performance.number(startPitch, pitch, k);\n            }\n            if (this$1._padding) {\n                tr.interpolatePadding(startPadding, padding, k);\n                pointAtOffset = tr.centerPoint.add(offsetAsPoint);\n            }\n            if (around) {\n                tr.setLocationAtPoint(around, aroundPoint);\n            } else {\n                var scale = tr.zoomScale(tr.zoom - startZoom);\n                var base = zoom > startZoom ? Math.min(2, finalScale) : Math.max(0.5, finalScale);\n                var speedup = Math.pow(base, 1 - k);\n                var newCenter = tr.unproject(from.add(delta.mult(k * speedup)).mult(scale));\n                tr.setLocationAtPoint(tr.renderWorldCopies ? newCenter.wrap() : newCenter, pointAtOffset);\n            }\n            this$1._fireMoveEvents(eventData);\n        }, function (interruptingEaseId) {\n            this$1._afterEase(eventData, interruptingEaseId);\n        }, options);\n        return this;\n    };\n    Camera.prototype._prepareEase = function _prepareEase(eventData, noMoveStart, currently) {\n        if (currently === void 0)\n            currently = {};\n        this._moving = true;\n        if (!noMoveStart && !currently.moving) {\n            this.fire(new performance.Event('movestart', eventData));\n        }\n        if (this._zooming && !currently.zooming) {\n            this.fire(new performance.Event('zoomstart', eventData));\n        }\n        if (this._rotating && !currently.rotating) {\n            this.fire(new performance.Event('rotatestart', eventData));\n        }\n        if (this._pitching && !currently.pitching) {\n            this.fire(new performance.Event('pitchstart', eventData));\n        }\n    };\n    Camera.prototype._fireMoveEvents = function _fireMoveEvents(eventData) {\n        this.fire(new performance.Event('move', eventData));\n        if (this._zooming) {\n            this.fire(new performance.Event('zoom', eventData));\n        }\n        if (this._rotating) {\n            this.fire(new performance.Event('rotate', eventData));\n        }\n        if (this._pitching) {\n            this.fire(new performance.Event('pitch', eventData));\n        }\n    };\n    Camera.prototype._afterEase = function _afterEase(eventData, easeId) {\n        if (this._easeId && easeId && this._easeId === easeId) {\n            return;\n        }\n        delete this._easeId;\n        var wasZooming = this._zooming;\n        var wasRotating = this._rotating;\n        var wasPitching = this._pitching;\n        this._moving = false;\n        this._zooming = false;\n        this._rotating = false;\n        this._pitching = false;\n        this._padding = false;\n        if (wasZooming) {\n            this.fire(new performance.Event('zoomend', eventData));\n        }\n        if (wasRotating) {\n            this.fire(new performance.Event('rotateend', eventData));\n        }\n        if (wasPitching) {\n            this.fire(new performance.Event('pitchend', eventData));\n        }\n        this.fire(new performance.Event('moveend', eventData));\n    };\n    Camera.prototype.flyTo = function flyTo(options, eventData) {\n        var this$1 = this;\n        if (!options.essential && performance.browser.prefersReducedMotion) {\n            var coercedOptions = performance.pick(options, [\n                'center',\n                'zoom',\n                'bearing',\n                'pitch',\n                'around'\n            ]);\n            return this.jumpTo(coercedOptions, eventData);\n        }\n        this.stop();\n        options = performance.extend({\n            offset: [\n                0,\n                0\n            ],\n            speed: 1.2,\n            curve: 1.42,\n            easing: performance.ease\n        }, options);\n        var tr = this.transform, startZoom = this.getZoom(), startBearing = this.getBearing(), startPitch = this.getPitch(), startPadding = this.getPadding();\n        var zoom = 'zoom' in options ? performance.clamp(+options.zoom, tr.minZoom, tr.maxZoom) : startZoom;\n        var bearing = 'bearing' in options ? this._normalizeBearing(options.bearing, startBearing) : startBearing;\n        var pitch = 'pitch' in options ? +options.pitch : startPitch;\n        var padding = 'padding' in options ? options.padding : tr.padding;\n        var scale = tr.zoomScale(zoom - startZoom);\n        var offsetAsPoint = performance.Point.convert(options.offset);\n        var pointAtOffset = tr.centerPoint.add(offsetAsPoint);\n        var locationAtOffset = tr.pointLocation(pointAtOffset);\n        var center = performance.LngLat.convert(options.center || locationAtOffset);\n        this._normalizeCenter(center);\n        var from = tr.project(locationAtOffset);\n        var delta = tr.project(center).sub(from);\n        var rho = options.curve;\n        var w0 = Math.max(tr.width, tr.height), w1 = w0 / scale, u1 = delta.mag();\n        if ('minZoom' in options) {\n            var minZoom = performance.clamp(Math.min(options.minZoom, startZoom, zoom), tr.minZoom, tr.maxZoom);\n            var wMax = w0 / tr.zoomScale(minZoom - startZoom);\n            rho = Math.sqrt(wMax / u1 * 2);\n        }\n        var rho2 = rho * rho;\n        function r(i) {\n            var b = (w1 * w1 - w0 * w0 + (i ? -1 : 1) * rho2 * rho2 * u1 * u1) / (2 * (i ? w1 : w0) * rho2 * u1);\n            return Math.log(Math.sqrt(b * b + 1) - b);\n        }\n        function sinh(n) {\n            return (Math.exp(n) - Math.exp(-n)) / 2;\n        }\n        function cosh(n) {\n            return (Math.exp(n) + Math.exp(-n)) / 2;\n        }\n        function tanh(n) {\n            return sinh(n) / cosh(n);\n        }\n        var r0 = r(0);\n        var w = function (s) {\n            return cosh(r0) / cosh(r0 + rho * s);\n        };\n        var u = function (s) {\n            return w0 * ((cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2) / u1;\n        };\n        var S = (r(1) - r0) / rho;\n        if (Math.abs(u1) < 0.000001 || !isFinite(S)) {\n            if (Math.abs(w0 - w1) < 0.000001) {\n                return this.easeTo(options, eventData);\n            }\n            var k = w1 < w0 ? -1 : 1;\n            S = Math.abs(Math.log(w1 / w0)) / rho;\n            u = function () {\n                return 0;\n            };\n            w = function (s) {\n                return Math.exp(k * rho * s);\n            };\n        }\n        if ('duration' in options) {\n            options.duration = +options.duration;\n        } else {\n            var V = 'screenSpeed' in options ? +options.screenSpeed / rho : +options.speed;\n            options.duration = 1000 * S / V;\n        }\n        if (options.maxDuration && options.duration > options.maxDuration) {\n            options.duration = 0;\n        }\n        this._zooming = true;\n        this._rotating = startBearing !== bearing;\n        this._pitching = pitch !== startPitch;\n        this._padding = !tr.isPaddingEqual(padding);\n        this._prepareEase(eventData, false);\n        this._ease(function (k) {\n            var s = k * S;\n            var scale = 1 / w(s);\n            tr.zoom = k === 1 ? zoom : startZoom + tr.scaleZoom(scale);\n            if (this$1._rotating) {\n                tr.bearing = performance.number(startBearing, bearing, k);\n            }\n            if (this$1._pitching) {\n                tr.pitch = performance.number(startPitch, pitch, k);\n            }\n            if (this$1._padding) {\n                tr.interpolatePadding(startPadding, padding, k);\n                pointAtOffset = tr.centerPoint.add(offsetAsPoint);\n            }\n            var newCenter = k === 1 ? center : tr.unproject(from.add(delta.mult(u(s))).mult(scale));\n            tr.setLocationAtPoint(tr.renderWorldCopies ? newCenter.wrap() : newCenter, pointAtOffset);\n            this$1._fireMoveEvents(eventData);\n        }, function () {\n            return this$1._afterEase(eventData);\n        }, options);\n        return this;\n    };\n    Camera.prototype.isEasing = function isEasing() {\n        return !!this._easeFrameId;\n    };\n    Camera.prototype.stop = function stop() {\n        return this._stop();\n    };\n    Camera.prototype._stop = function _stop(allowGestures, easeId) {\n        if (this._easeFrameId) {\n            this._cancelRenderFrame(this._easeFrameId);\n            delete this._easeFrameId;\n            delete this._onEaseFrame;\n        }\n        if (this._onEaseEnd) {\n            var onEaseEnd = this._onEaseEnd;\n            delete this._onEaseEnd;\n            onEaseEnd.call(this, easeId);\n        }\n        if (!allowGestures) {\n            var handlers = this.handlers;\n            if (handlers) {\n                handlers.stop();\n            }\n        }\n        return this;\n    };\n    Camera.prototype._ease = function _ease(frame, finish, options) {\n        if (options.animate === false || options.duration === 0) {\n            frame(1);\n            finish();\n        } else {\n            this._easeStart = performance.browser.now();\n            this._easeOptions = options;\n            this._onEaseFrame = frame;\n            this._onEaseEnd = finish;\n            this._easeFrameId = this._requestRenderFrame(this._renderFrameCallback);\n        }\n    };\n    Camera.prototype._renderFrameCallback = function _renderFrameCallback() {\n        var t = Math.min((performance.browser.now() - this._easeStart) / this._easeOptions.duration, 1);\n        this._onEaseFrame(this._easeOptions.easing(t));\n        if (t < 1) {\n            this._easeFrameId = this._requestRenderFrame(this._renderFrameCallback);\n        } else {\n            this.stop();\n        }\n    };\n    Camera.prototype._normalizeBearing = function _normalizeBearing(bearing, currentBearing) {\n        bearing = performance.wrap(bearing, -180, 180);\n        var diff = Math.abs(bearing - currentBearing);\n        if (Math.abs(bearing - 360 - currentBearing) < diff) {\n            bearing -= 360;\n        }\n        if (Math.abs(bearing + 360 - currentBearing) < diff) {\n            bearing += 360;\n        }\n        return bearing;\n    };\n    Camera.prototype._normalizeCenter = function _normalizeCenter(center) {\n        var tr = this.transform;\n        if (!tr.renderWorldCopies || tr.lngRange) {\n            return;\n        }\n        var delta = center.lng - tr.center.lng;\n        center.lng += delta > 180 ? -360 : delta < -180 ? 360 : 0;\n    };\n    return Camera;\n}(performance.Evented);\n\nvar AttributionControl = function AttributionControl(options) {\n    if (options === void 0)\n        options = {};\n    this.options = options;\n    performance.bindAll([\n        '_updateEditLink',\n        '_updateData',\n        '_updateCompact'\n    ], this);\n};\nAttributionControl.prototype.getDefaultPosition = function getDefaultPosition() {\n    return 'bottom-right';\n};\nAttributionControl.prototype.onAdd = function onAdd(map) {\n    var compact = this.options && this.options.compact;\n    this._map = map;\n    this._container = DOM.create('div', 'mapboxgl-ctrl mapboxgl-ctrl-attrib');\n    this._innerContainer = DOM.create('div', 'mapboxgl-ctrl-attrib-inner', this._container);\n    if (compact) {\n        this._container.classList.add('mapboxgl-compact');\n    }\n    this._updateAttributions();\n    this._updateEditLink();\n    this._map.on('styledata', this._updateData);\n    this._map.on('sourcedata', this._updateData);\n    this._map.on('moveend', this._updateEditLink);\n    if (compact === undefined) {\n        this._map.on('resize', this._updateCompact);\n        this._updateCompact();\n    }\n    return this._container;\n};\nAttributionControl.prototype.onRemove = function onRemove() {\n    DOM.remove(this._container);\n    this._map.off('styledata', this._updateData);\n    this._map.off('sourcedata', this._updateData);\n    this._map.off('moveend', this._updateEditLink);\n    this._map.off('resize', this._updateCompact);\n    this._map = undefined;\n    this._attribHTML = undefined;\n};\nAttributionControl.prototype._updateEditLink = function _updateEditLink() {\n    var editLink = this._editLink;\n    if (!editLink) {\n        editLink = this._editLink = this._container.querySelector('.mapbox-improve-map');\n    }\n    var params = [\n        {\n            key: 'owner',\n            value: this.styleOwner\n        },\n        {\n            key: 'id',\n            value: this.styleId\n        },\n        {\n            key: 'access_token',\n            value: this._map._requestManager._customAccessToken || performance.config.ACCESS_TOKEN\n        }\n    ];\n    if (editLink) {\n        var paramString = params.reduce(function (acc, next, i) {\n            if (next.value) {\n                acc += next.key + '=' + next.value + (i < params.length - 1 ? '&' : '');\n            }\n            return acc;\n        }, '?');\n        editLink.href = performance.config.FEEDBACK_URL + '/' + paramString + (this._map._hash ? this._map._hash.getHashString(true) : '');\n        editLink.rel = 'noopener nofollow';\n    }\n};\nAttributionControl.prototype._updateData = function _updateData(e) {\n    if (e && (e.sourceDataType === 'metadata' || e.dataType === 'style')) {\n        this._updateAttributions();\n        this._updateEditLink();\n    }\n};\nAttributionControl.prototype._updateAttributions = function _updateAttributions() {\n    if (!this._map.style) {\n        return;\n    }\n    var attributions = [];\n    if (this.options.customAttribution) {\n        if (Array.isArray(this.options.customAttribution)) {\n            attributions = attributions.concat(this.options.customAttribution.map(function (attribution) {\n                if (typeof attribution !== 'string') {\n                    return '';\n                }\n                return attribution;\n            }));\n        } else if (typeof this.options.customAttribution === 'string') {\n            attributions.push(this.options.customAttribution);\n        }\n    }\n    if (this._map.style.stylesheet) {\n        var stylesheet = this._map.style.stylesheet;\n        this.styleOwner = stylesheet.owner;\n        this.styleId = stylesheet.id;\n    }\n    var sourceCaches = this._map.style.sourceCaches;\n    for (var id in sourceCaches) {\n        var sourceCache = sourceCaches[id];\n        if (sourceCache.used) {\n            var source = sourceCache.getSource();\n            if (source.attribution && attributions.indexOf(source.attribution) < 0) {\n                attributions.push(source.attribution);\n            }\n        }\n    }\n    attributions.sort(function (a, b) {\n        return a.length - b.length;\n    });\n    attributions = attributions.filter(function (attrib, i) {\n        for (var j = i + 1; j < attributions.length; j++) {\n            if (attributions[j].indexOf(attrib) >= 0) {\n                return false;\n            }\n        }\n        return true;\n    });\n    var attribHTML = attributions.join(' | ');\n    if (attribHTML === this._attribHTML) {\n        return;\n    }\n    this._attribHTML = attribHTML;\n    if (attributions.length) {\n        this._innerContainer.innerHTML = attribHTML;\n        this._container.classList.remove('mapboxgl-attrib-empty');\n    } else {\n        this._container.classList.add('mapboxgl-attrib-empty');\n    }\n    this._editLink = null;\n};\nAttributionControl.prototype._updateCompact = function _updateCompact() {\n    if (this._map.getCanvasContainer().offsetWidth <= 640) {\n        this._container.classList.add('mapboxgl-compact');\n    } else {\n        this._container.classList.remove('mapboxgl-compact');\n    }\n};\n\nvar LogoControl = function LogoControl() {\n    performance.bindAll(['_updateLogo'], this);\n    performance.bindAll(['_updateCompact'], this);\n};\nLogoControl.prototype.onAdd = function onAdd(map) {\n    this._map = map;\n    this._container = DOM.create('div', 'mapboxgl-ctrl');\n    var anchor = DOM.create('a', 'mapboxgl-ctrl-logo');\n    anchor.target = '_blank';\n    anchor.rel = 'noopener nofollow';\n    anchor.href = 'https://www.mapbox.com/';\n    anchor.setAttribute('aria-label', this._map._getUIString('LogoControl.Title'));\n    anchor.setAttribute('rel', 'noopener nofollow');\n    this._container.appendChild(anchor);\n    this._container.style.display = 'none';\n    this._map.on('sourcedata', this._updateLogo);\n    this._updateLogo();\n    this._map.on('resize', this._updateCompact);\n    this._updateCompact();\n    return this._container;\n};\nLogoControl.prototype.onRemove = function onRemove() {\n    DOM.remove(this._container);\n    this._map.off('sourcedata', this._updateLogo);\n    this._map.off('resize', this._updateCompact);\n};\nLogoControl.prototype.getDefaultPosition = function getDefaultPosition() {\n    return 'bottom-left';\n};\nLogoControl.prototype._updateLogo = function _updateLogo(e) {\n    if (!e || e.sourceDataType === 'metadata') {\n        this._container.style.display = this._logoRequired() ? 'block' : 'none';\n    }\n};\nLogoControl.prototype._logoRequired = function _logoRequired() {\n    if (!this._map.style) {\n        return;\n    }\n    var sourceCaches = this._map.style.sourceCaches;\n    for (var id in sourceCaches) {\n        var source = sourceCaches[id].getSource();\n        if (source.mapbox_logo) {\n            return true;\n        }\n    }\n    return false;\n};\nLogoControl.prototype._updateCompact = function _updateCompact() {\n    var containerChildren = this._container.children;\n    if (containerChildren.length) {\n        var anchor = containerChildren[0];\n        if (this._map.getCanvasContainer().offsetWidth < 250) {\n            anchor.classList.add('mapboxgl-compact');\n        } else {\n            anchor.classList.remove('mapboxgl-compact');\n        }\n    }\n};\n\nvar TaskQueue = function TaskQueue() {\n    this._queue = [];\n    this._id = 0;\n    this._cleared = false;\n    this._currentlyRunning = false;\n};\nTaskQueue.prototype.add = function add(callback) {\n    var id = ++this._id;\n    var queue = this._queue;\n    queue.push({\n        callback: callback,\n        id: id,\n        cancelled: false\n    });\n    return id;\n};\nTaskQueue.prototype.remove = function remove(id) {\n    var running = this._currentlyRunning;\n    var queue = running ? this._queue.concat(running) : this._queue;\n    for (var i = 0, list = queue; i < list.length; i += 1) {\n        var task = list[i];\n        if (task.id === id) {\n            task.cancelled = true;\n            return;\n        }\n    }\n};\nTaskQueue.prototype.run = function run(timeStamp) {\n    if (timeStamp === void 0)\n        timeStamp = 0;\n    var queue = this._currentlyRunning = this._queue;\n    this._queue = [];\n    for (var i = 0, list = queue; i < list.length; i += 1) {\n        var task = list[i];\n        if (task.cancelled) {\n            continue;\n        }\n        task.callback(timeStamp);\n        if (this._cleared) {\n            break;\n        }\n    }\n    this._cleared = false;\n    this._currentlyRunning = false;\n};\nTaskQueue.prototype.clear = function clear() {\n    if (this._currentlyRunning) {\n        this._cleared = true;\n    }\n    this._queue = [];\n};\n\nvar defaultLocale = {\n    'FullscreenControl.Enter': 'Enter fullscreen',\n    'FullscreenControl.Exit': 'Exit fullscreen',\n    'GeolocateControl.FindMyLocation': 'Find my location',\n    'GeolocateControl.LocationNotAvailable': 'Location not available',\n    'LogoControl.Title': 'Mapbox logo',\n    'NavigationControl.ResetBearing': 'Reset bearing to north',\n    'NavigationControl.ZoomIn': 'Zoom in',\n    'NavigationControl.ZoomOut': 'Zoom out',\n    'ScaleControl.Feet': 'ft',\n    'ScaleControl.Meters': 'm',\n    'ScaleControl.Kilometers': 'km',\n    'ScaleControl.Miles': 'mi',\n    'ScaleControl.NauticalMiles': 'nm'\n};\n\nvar HTMLImageElement = performance.window.HTMLImageElement;\nvar HTMLElement = performance.window.HTMLElement;\nvar ImageBitmap = performance.window.ImageBitmap;\nvar defaultMinZoom = -2;\nvar defaultMaxZoom = 22;\nvar defaultMinPitch = 0;\nvar defaultMaxPitch = 60;\nvar defaultOptions$1 = {\n    center: [\n        0,\n        0\n    ],\n    zoom: 0,\n    bearing: 0,\n    pitch: 0,\n    minZoom: defaultMinZoom,\n    maxZoom: defaultMaxZoom,\n    minPitch: defaultMinPitch,\n    maxPitch: defaultMaxPitch,\n    interactive: true,\n    scrollZoom: true,\n    boxZoom: true,\n    dragRotate: true,\n    dragPan: true,\n    keyboard: true,\n    doubleClickZoom: true,\n    touchZoomRotate: true,\n    touchPitch: true,\n    bearingSnap: 7,\n    clickTolerance: 3,\n    pitchWithRotate: true,\n    hash: false,\n    attributionControl: true,\n    failIfMajorPerformanceCaveat: false,\n    preserveDrawingBuffer: false,\n    trackResize: true,\n    renderWorldCopies: true,\n    refreshExpiredTiles: true,\n    maxTileCacheSize: null,\n    localIdeographFontFamily: 'sans-serif',\n    transformRequest: null,\n    accessToken: null,\n    fadeDuration: 300,\n    crossSourceCollisions: true\n};\nvar Map = function (Camera) {\n    function Map(options) {\n        var this$1 = this;\n        options = performance.extend({}, defaultOptions$1, options);\n        if (options.minZoom != null && options.maxZoom != null && options.minZoom > options.maxZoom) {\n            throw new Error('maxZoom must be greater than or equal to minZoom');\n        }\n        if (options.minPitch != null && options.maxPitch != null && options.minPitch > options.maxPitch) {\n            throw new Error('maxPitch must be greater than or equal to minPitch');\n        }\n        if (options.minPitch != null && options.minPitch < defaultMinPitch) {\n            throw new Error('minPitch must be greater than or equal to ' + defaultMinPitch);\n        }\n        if (options.maxPitch != null && options.maxPitch > defaultMaxPitch) {\n            throw new Error('maxPitch must be less than or equal to ' + defaultMaxPitch);\n        }\n        var transform = new Transform(options.minZoom, options.maxZoom, options.minPitch, options.maxPitch, options.renderWorldCopies);\n        Camera.call(this, transform, options);\n        this._interactive = options.interactive;\n        this._maxTileCacheSize = options.maxTileCacheSize;\n        this._failIfMajorPerformanceCaveat = options.failIfMajorPerformanceCaveat;\n        this._preserveDrawingBuffer = options.preserveDrawingBuffer;\n        this._antialias = options.antialias;\n        this._trackResize = options.trackResize;\n        this._bearingSnap = options.bearingSnap;\n        this._refreshExpiredTiles = options.refreshExpiredTiles;\n        this._fadeDuration = options.fadeDuration;\n        this._crossSourceCollisions = options.crossSourceCollisions;\n        this._crossFadingFactor = 1;\n        this._collectResourceTiming = options.collectResourceTiming;\n        this._renderTaskQueue = new TaskQueue();\n        this._controls = [];\n        this._mapId = performance.uniqueId();\n        this._locale = performance.extend({}, defaultLocale, options.locale);\n        this._requestManager = new performance.RequestManager(options.transformRequest, options.accessToken);\n        if (typeof options.container === 'string') {\n            this._container = performance.window.document.getElementById(options.container);\n            if (!this._container) {\n                throw new Error('Container \\'' + options.container + '\\' not found.');\n            }\n        } else if (options.container instanceof HTMLElement) {\n            this._container = options.container;\n        } else {\n            throw new Error('Invalid type: \\'container\\' must be a String or HTMLElement.');\n        }\n        if (options.maxBounds) {\n            this.setMaxBounds(options.maxBounds);\n        }\n        performance.bindAll([\n            '_onWindowOnline',\n            '_onWindowResize',\n            '_contextLost',\n            '_contextRestored'\n        ], this);\n        this._setupContainer();\n        this._setupPainter();\n        if (this.painter === undefined) {\n            throw new Error('Failed to initialize WebGL.');\n        }\n        this.on('move', function () {\n            return this$1._update(false);\n        });\n        this.on('moveend', function () {\n            return this$1._update(false);\n        });\n        this.on('zoom', function () {\n            return this$1._update(true);\n        });\n        if (typeof performance.window !== 'undefined') {\n            performance.window.addEventListener('online', this._onWindowOnline, false);\n            performance.window.addEventListener('resize', this._onWindowResize, false);\n        }\n        this.handlers = new HandlerManager(this, options);\n        var hashName = typeof options.hash === 'string' && options.hash || undefined;\n        this._hash = options.hash && new Hash(hashName).addTo(this);\n        if (!this._hash || !this._hash._onHashChange()) {\n            this.jumpTo({\n                center: options.center,\n                zoom: options.zoom,\n                bearing: options.bearing,\n                pitch: options.pitch\n            });\n            if (options.bounds) {\n                this.resize();\n                this.fitBounds(options.bounds, performance.extend({}, options.fitBoundsOptions, { duration: 0 }));\n            }\n        }\n        this.resize();\n        this._localIdeographFontFamily = options.localIdeographFontFamily;\n        if (options.style) {\n            this.setStyle(options.style, { localIdeographFontFamily: options.localIdeographFontFamily });\n        }\n        if (options.attributionControl) {\n            this.addControl(new AttributionControl({ customAttribution: options.customAttribution }));\n        }\n        this.addControl(new LogoControl(), options.logoPosition);\n        this.on('style.load', function () {\n            if (this$1.transform.unmodified) {\n                this$1.jumpTo(this$1.style.stylesheet);\n            }\n        });\n        this.on('data', function (event) {\n            this$1._update(event.dataType === 'style');\n            this$1.fire(new performance.Event(event.dataType + 'data', event));\n        });\n        this.on('dataloading', function (event) {\n            this$1.fire(new performance.Event(event.dataType + 'dataloading', event));\n        });\n    }\n    if (Camera)\n        Map.__proto__ = Camera;\n    Map.prototype = Object.create(Camera && Camera.prototype);\n    Map.prototype.constructor = Map;\n    var prototypeAccessors = {\n        showTileBoundaries: { configurable: true },\n        showPadding: { configurable: true },\n        showCollisionBoxes: { configurable: true },\n        showOverdrawInspector: { configurable: true },\n        repaint: { configurable: true },\n        vertices: { configurable: true },\n        version: { configurable: true }\n    };\n    Map.prototype._getMapId = function _getMapId() {\n        return this._mapId;\n    };\n    Map.prototype.addControl = function addControl(control, position) {\n        if (position === undefined && control.getDefaultPosition) {\n            position = control.getDefaultPosition();\n        }\n        if (position === undefined) {\n            position = 'top-right';\n        }\n        if (!control || !control.onAdd) {\n            return this.fire(new performance.ErrorEvent(new Error('Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.')));\n        }\n        var controlElement = control.onAdd(this);\n        this._controls.push(control);\n        var positionContainer = this._controlPositions[position];\n        if (position.indexOf('bottom') !== -1) {\n            positionContainer.insertBefore(controlElement, positionContainer.firstChild);\n        } else {\n            positionContainer.appendChild(controlElement);\n        }\n        return this;\n    };\n    Map.prototype.removeControl = function removeControl(control) {\n        if (!control || !control.onRemove) {\n            return this.fire(new performance.ErrorEvent(new Error('Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.')));\n        }\n        var ci = this._controls.indexOf(control);\n        if (ci > -1) {\n            this._controls.splice(ci, 1);\n        }\n        control.onRemove(this);\n        return this;\n    };\n    Map.prototype.resize = function resize(eventData) {\n        var dimensions = this._containerDimensions();\n        var width = dimensions[0];\n        var height = dimensions[1];\n        this._resizeCanvas(width, height);\n        this.transform.resize(width, height);\n        this.painter.resize(width, height);\n        var fireMoving = !this._moving;\n        if (fireMoving) {\n            this.stop();\n            this.fire(new performance.Event('movestart', eventData)).fire(new performance.Event('move', eventData));\n        }\n        this.fire(new performance.Event('resize', eventData));\n        if (fireMoving) {\n            this.fire(new performance.Event('moveend', eventData));\n        }\n        return this;\n    };\n    Map.prototype.getBounds = function getBounds() {\n        return this.transform.getBounds();\n    };\n    Map.prototype.getMaxBounds = function getMaxBounds() {\n        return this.transform.getMaxBounds();\n    };\n    Map.prototype.setMaxBounds = function setMaxBounds(bounds) {\n        this.transform.setMaxBounds(performance.LngLatBounds.convert(bounds));\n        return this._update();\n    };\n    Map.prototype.setMinZoom = function setMinZoom(minZoom) {\n        minZoom = minZoom === null || minZoom === undefined ? defaultMinZoom : minZoom;\n        if (minZoom >= defaultMinZoom && minZoom <= this.transform.maxZoom) {\n            this.transform.minZoom = minZoom;\n            this._update();\n            if (this.getZoom() < minZoom) {\n                this.setZoom(minZoom);\n            }\n            return this;\n        } else {\n            throw new Error('minZoom must be between ' + defaultMinZoom + ' and the current maxZoom, inclusive');\n        }\n    };\n    Map.prototype.getMinZoom = function getMinZoom() {\n        return this.transform.minZoom;\n    };\n    Map.prototype.setMaxZoom = function setMaxZoom(maxZoom) {\n        maxZoom = maxZoom === null || maxZoom === undefined ? defaultMaxZoom : maxZoom;\n        if (maxZoom >= this.transform.minZoom) {\n            this.transform.maxZoom = maxZoom;\n            this._update();\n            if (this.getZoom() > maxZoom) {\n                this.setZoom(maxZoom);\n            }\n            return this;\n        } else {\n            throw new Error('maxZoom must be greater than the current minZoom');\n        }\n    };\n    Map.prototype.getMaxZoom = function getMaxZoom() {\n        return this.transform.maxZoom;\n    };\n    Map.prototype.setMinPitch = function setMinPitch(minPitch) {\n        minPitch = minPitch === null || minPitch === undefined ? defaultMinPitch : minPitch;\n        if (minPitch < defaultMinPitch) {\n            throw new Error('minPitch must be greater than or equal to ' + defaultMinPitch);\n        }\n        if (minPitch >= defaultMinPitch && minPitch <= this.transform.maxPitch) {\n            this.transform.minPitch = minPitch;\n            this._update();\n            if (this.getPitch() < minPitch) {\n                this.setPitch(minPitch);\n            }\n            return this;\n        } else {\n            throw new Error('minPitch must be between ' + defaultMinPitch + ' and the current maxPitch, inclusive');\n        }\n    };\n    Map.prototype.getMinPitch = function getMinPitch() {\n        return this.transform.minPitch;\n    };\n    Map.prototype.setMaxPitch = function setMaxPitch(maxPitch) {\n        maxPitch = maxPitch === null || maxPitch === undefined ? defaultMaxPitch : maxPitch;\n        if (maxPitch > defaultMaxPitch) {\n            throw new Error('maxPitch must be less than or equal to ' + defaultMaxPitch);\n        }\n        if (maxPitch >= this.transform.minPitch) {\n            this.transform.maxPitch = maxPitch;\n            this._update();\n            if (this.getPitch() > maxPitch) {\n                this.setPitch(maxPitch);\n            }\n            return this;\n        } else {\n            throw new Error('maxPitch must be greater than the current minPitch');\n        }\n    };\n    Map.prototype.getMaxPitch = function getMaxPitch() {\n        return this.transform.maxPitch;\n    };\n    Map.prototype.getRenderWorldCopies = function getRenderWorldCopies() {\n        return this.transform.renderWorldCopies;\n    };\n    Map.prototype.setRenderWorldCopies = function setRenderWorldCopies(renderWorldCopies) {\n        this.transform.renderWorldCopies = renderWorldCopies;\n        return this._update();\n    };\n    Map.prototype.project = function project(lnglat) {\n        return this.transform.locationPoint(performance.LngLat.convert(lnglat));\n    };\n    Map.prototype.unproject = function unproject(point) {\n        return this.transform.pointLocation(performance.Point.convert(point));\n    };\n    Map.prototype.isMoving = function isMoving() {\n        return this._moving || this.handlers.isMoving();\n    };\n    Map.prototype.isZooming = function isZooming() {\n        return this._zooming || this.handlers.isZooming();\n    };\n    Map.prototype.isRotating = function isRotating() {\n        return this._rotating || this.handlers.isRotating();\n    };\n    Map.prototype._createDelegatedListener = function _createDelegatedListener(type, layerId, listener) {\n        var this$1 = this;\n        var obj;\n        if (type === 'mouseenter' || type === 'mouseover') {\n            var mousein = false;\n            var mousemove = function (e) {\n                var features = this$1.getLayer(layerId) ? this$1.queryRenderedFeatures(e.point, { layers: [layerId] }) : [];\n                if (!features.length) {\n                    mousein = false;\n                } else if (!mousein) {\n                    mousein = true;\n                    listener.call(this$1, new MapMouseEvent(type, this$1, e.originalEvent, { features: features }));\n                }\n            };\n            var mouseout = function () {\n                mousein = false;\n            };\n            return {\n                layer: layerId,\n                listener: listener,\n                delegates: {\n                    mousemove: mousemove,\n                    mouseout: mouseout\n                }\n            };\n        } else if (type === 'mouseleave' || type === 'mouseout') {\n            var mousein$1 = false;\n            var mousemove$1 = function (e) {\n                var features = this$1.getLayer(layerId) ? this$1.queryRenderedFeatures(e.point, { layers: [layerId] }) : [];\n                if (features.length) {\n                    mousein$1 = true;\n                } else if (mousein$1) {\n                    mousein$1 = false;\n                    listener.call(this$1, new MapMouseEvent(type, this$1, e.originalEvent));\n                }\n            };\n            var mouseout$1 = function (e) {\n                if (mousein$1) {\n                    mousein$1 = false;\n                    listener.call(this$1, new MapMouseEvent(type, this$1, e.originalEvent));\n                }\n            };\n            return {\n                layer: layerId,\n                listener: listener,\n                delegates: {\n                    mousemove: mousemove$1,\n                    mouseout: mouseout$1\n                }\n            };\n        } else {\n            var delegate = function (e) {\n                var features = this$1.getLayer(layerId) ? this$1.queryRenderedFeatures(e.point, { layers: [layerId] }) : [];\n                if (features.length) {\n                    e.features = features;\n                    listener.call(this$1, e);\n                    delete e.features;\n                }\n            };\n            return {\n                layer: layerId,\n                listener: listener,\n                delegates: (obj = {}, obj[type] = delegate, obj)\n            };\n        }\n    };\n    Map.prototype.on = function on(type, layerId, listener) {\n        if (listener === undefined) {\n            return Camera.prototype.on.call(this, type, layerId);\n        }\n        var delegatedListener = this._createDelegatedListener(type, layerId, listener);\n        this._delegatedListeners = this._delegatedListeners || {};\n        this._delegatedListeners[type] = this._delegatedListeners[type] || [];\n        this._delegatedListeners[type].push(delegatedListener);\n        for (var event in delegatedListener.delegates) {\n            this.on(event, delegatedListener.delegates[event]);\n        }\n        return this;\n    };\n    Map.prototype.once = function once(type, layerId, listener) {\n        if (listener === undefined) {\n            return Camera.prototype.once.call(this, type, layerId);\n        }\n        var delegatedListener = this._createDelegatedListener(type, layerId, listener);\n        for (var event in delegatedListener.delegates) {\n            this.once(event, delegatedListener.delegates[event]);\n        }\n        return this;\n    };\n    Map.prototype.off = function off(type, layerId, listener) {\n        var this$1 = this;\n        if (listener === undefined) {\n            return Camera.prototype.off.call(this, type, layerId);\n        }\n        var removeDelegatedListener = function (delegatedListeners) {\n            var listeners = delegatedListeners[type];\n            for (var i = 0; i < listeners.length; i++) {\n                var delegatedListener = listeners[i];\n                if (delegatedListener.layer === layerId && delegatedListener.listener === listener) {\n                    for (var event in delegatedListener.delegates) {\n                        this$1.off(event, delegatedListener.delegates[event]);\n                    }\n                    listeners.splice(i, 1);\n                    return this$1;\n                }\n            }\n        };\n        if (this._delegatedListeners && this._delegatedListeners[type]) {\n            removeDelegatedListener(this._delegatedListeners);\n        }\n        return this;\n    };\n    Map.prototype.queryRenderedFeatures = function queryRenderedFeatures(geometry, options) {\n        if (!this.style) {\n            return [];\n        }\n        if (options === undefined && geometry !== undefined && !(geometry instanceof performance.Point) && !Array.isArray(geometry)) {\n            options = geometry;\n            geometry = undefined;\n        }\n        options = options || {};\n        geometry = geometry || [\n            [\n                0,\n                0\n            ],\n            [\n                this.transform.width,\n                this.transform.height\n            ]\n        ];\n        var queryGeometry;\n        if (geometry instanceof performance.Point || typeof geometry[0] === 'number') {\n            queryGeometry = [performance.Point.convert(geometry)];\n        } else {\n            var tl = performance.Point.convert(geometry[0]);\n            var br = performance.Point.convert(geometry[1]);\n            queryGeometry = [\n                tl,\n                new performance.Point(br.x, tl.y),\n                br,\n                new performance.Point(tl.x, br.y),\n                tl\n            ];\n        }\n        return this.style.queryRenderedFeatures(queryGeometry, options, this.transform);\n    };\n    Map.prototype.querySourceFeatures = function querySourceFeatures(sourceId, parameters) {\n        return this.style.querySourceFeatures(sourceId, parameters);\n    };\n    Map.prototype.setStyle = function setStyle(style, options) {\n        options = performance.extend({}, { localIdeographFontFamily: this._localIdeographFontFamily }, options);\n        if (options.diff !== false && options.localIdeographFontFamily === this._localIdeographFontFamily && this.style && style) {\n            this._diffStyle(style, options);\n            return this;\n        } else {\n            this._localIdeographFontFamily = options.localIdeographFontFamily;\n            return this._updateStyle(style, options);\n        }\n    };\n    Map.prototype._getUIString = function _getUIString(key) {\n        var str = this._locale[key];\n        if (str == null) {\n            throw new Error('Missing UI string \\'' + key + '\\'');\n        }\n        return str;\n    };\n    Map.prototype._updateStyle = function _updateStyle(style, options) {\n        if (this.style) {\n            this.style.setEventedParent(null);\n            this.style._remove();\n        }\n        if (!style) {\n            delete this.style;\n            return this;\n        } else {\n            this.style = new Style(this, options || {});\n        }\n        this.style.setEventedParent(this, { style: this.style });\n        if (typeof style === 'string') {\n            this.style.loadURL(style);\n        } else {\n            this.style.loadJSON(style);\n        }\n        return this;\n    };\n    Map.prototype._lazyInitEmptyStyle = function _lazyInitEmptyStyle() {\n        if (!this.style) {\n            this.style = new Style(this, {});\n            this.style.setEventedParent(this, { style: this.style });\n            this.style.loadEmpty();\n        }\n    };\n    Map.prototype._diffStyle = function _diffStyle(style, options) {\n        var this$1 = this;\n        if (typeof style === 'string') {\n            var url = this._requestManager.normalizeStyleURL(style);\n            var request = this._requestManager.transformRequest(url, performance.ResourceType.Style);\n            performance.getJSON(request, function (error, json) {\n                if (error) {\n                    this$1.fire(new performance.ErrorEvent(error));\n                } else if (json) {\n                    this$1._updateDiff(json, options);\n                }\n            });\n        } else if (typeof style === 'object') {\n            this._updateDiff(style, options);\n        }\n    };\n    Map.prototype._updateDiff = function _updateDiff(style, options) {\n        try {\n            if (this.style.setState(style)) {\n                this._update(true);\n            }\n        } catch (e) {\n            performance.warnOnce('Unable to perform style diff: ' + (e.message || e.error || e) + '.  Rebuilding the style from scratch.');\n            this._updateStyle(style, options);\n        }\n    };\n    Map.prototype.getStyle = function getStyle() {\n        if (this.style) {\n            return this.style.serialize();\n        }\n    };\n    Map.prototype.isStyleLoaded = function isStyleLoaded() {\n        if (!this.style) {\n            return performance.warnOnce('There is no style added to the map.');\n        }\n        return this.style.loaded();\n    };\n    Map.prototype.addSource = function addSource(id, source) {\n        this._lazyInitEmptyStyle();\n        this.style.addSource(id, source);\n        return this._update(true);\n    };\n    Map.prototype.isSourceLoaded = function isSourceLoaded(id) {\n        var source = this.style && this.style.sourceCaches[id];\n        if (source === undefined) {\n            this.fire(new performance.ErrorEvent(new Error('There is no source with ID \\'' + id + '\\'')));\n            return;\n        }\n        return source.loaded();\n    };\n    Map.prototype.areTilesLoaded = function areTilesLoaded() {\n        var sources = this.style && this.style.sourceCaches;\n        for (var id in sources) {\n            var source = sources[id];\n            var tiles = source._tiles;\n            for (var t in tiles) {\n                var tile = tiles[t];\n                if (!(tile.state === 'loaded' || tile.state === 'errored')) {\n                    return false;\n                }\n            }\n        }\n        return true;\n    };\n    Map.prototype.addSourceType = function addSourceType(name, SourceType, callback) {\n        this._lazyInitEmptyStyle();\n        return this.style.addSourceType(name, SourceType, callback);\n    };\n    Map.prototype.removeSource = function removeSource(id) {\n        this.style.removeSource(id);\n        return this._update(true);\n    };\n    Map.prototype.getSource = function getSource(id) {\n        return this.style.getSource(id);\n    };\n    Map.prototype.addImage = function addImage(id, image, ref) {\n        if (ref === void 0)\n            ref = {};\n        var pixelRatio = ref.pixelRatio;\n        if (pixelRatio === void 0)\n            pixelRatio = 1;\n        var sdf = ref.sdf;\n        if (sdf === void 0)\n            sdf = false;\n        var stretchX = ref.stretchX;\n        var stretchY = ref.stretchY;\n        var content = ref.content;\n        this._lazyInitEmptyStyle();\n        var version = 0;\n        if (image instanceof HTMLImageElement || ImageBitmap && image instanceof ImageBitmap) {\n            var ref$1 = performance.browser.getImageData(image);\n            var width = ref$1.width;\n            var height = ref$1.height;\n            var data = ref$1.data;\n            this.style.addImage(id, {\n                data: new performance.RGBAImage({\n                    width: width,\n                    height: height\n                }, data),\n                pixelRatio: pixelRatio,\n                stretchX: stretchX,\n                stretchY: stretchY,\n                content: content,\n                sdf: sdf,\n                version: version\n            });\n        } else if (image.width === undefined || image.height === undefined) {\n            return this.fire(new performance.ErrorEvent(new Error('Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, ' + 'or object with `width`, `height`, and `data` properties with the same format as `ImageData`')));\n        } else {\n            var width$1 = image.width;\n            var height$1 = image.height;\n            var data$1 = image.data;\n            var userImage = image;\n            this.style.addImage(id, {\n                data: new performance.RGBAImage({\n                    width: width$1,\n                    height: height$1\n                }, new Uint8Array(data$1)),\n                pixelRatio: pixelRatio,\n                stretchX: stretchX,\n                stretchY: stretchY,\n                content: content,\n                sdf: sdf,\n                version: version,\n                userImage: userImage\n            });\n            if (userImage.onAdd) {\n                userImage.onAdd(this, id);\n            }\n        }\n    };\n    Map.prototype.updateImage = function updateImage(id, image) {\n        var existingImage = this.style.getImage(id);\n        if (!existingImage) {\n            return this.fire(new performance.ErrorEvent(new Error('The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.')));\n        }\n        var imageData = image instanceof HTMLImageElement || ImageBitmap && image instanceof ImageBitmap ? performance.browser.getImageData(image) : image;\n        var width = imageData.width;\n        var height = imageData.height;\n        var data = imageData.data;\n        if (width === undefined || height === undefined) {\n            return this.fire(new performance.ErrorEvent(new Error('Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, ' + 'or object with `width`, `height`, and `data` properties with the same format as `ImageData`')));\n        }\n        if (width !== existingImage.data.width || height !== existingImage.data.height) {\n            return this.fire(new performance.ErrorEvent(new Error('The width and height of the updated image must be that same as the previous version of the image')));\n        }\n        var copy = !(image instanceof HTMLImageElement || ImageBitmap && image instanceof ImageBitmap);\n        existingImage.data.replace(data, copy);\n        this.style.updateImage(id, existingImage);\n    };\n    Map.prototype.hasImage = function hasImage(id) {\n        if (!id) {\n            this.fire(new performance.ErrorEvent(new Error('Missing required image id')));\n            return false;\n        }\n        return !!this.style.getImage(id);\n    };\n    Map.prototype.removeImage = function removeImage(id) {\n        this.style.removeImage(id);\n    };\n    Map.prototype.loadImage = function loadImage(url, callback) {\n        performance.getImage(this._requestManager.transformRequest(url, performance.ResourceType.Image), callback);\n    };\n    Map.prototype.listImages = function listImages() {\n        return this.style.listImages();\n    };\n    Map.prototype.addLayer = function addLayer(layer, beforeId) {\n        this._lazyInitEmptyStyle();\n        this.style.addLayer(layer, beforeId);\n        return this._update(true);\n    };\n    Map.prototype.moveLayer = function moveLayer(id, beforeId) {\n        this.style.moveLayer(id, beforeId);\n        return this._update(true);\n    };\n    Map.prototype.removeLayer = function removeLayer(id) {\n        this.style.removeLayer(id);\n        return this._update(true);\n    };\n    Map.prototype.getLayer = function getLayer(id) {\n        return this.style.getLayer(id);\n    };\n    Map.prototype.setLayerZoomRange = function setLayerZoomRange(layerId, minzoom, maxzoom) {\n        this.style.setLayerZoomRange(layerId, minzoom, maxzoom);\n        return this._update(true);\n    };\n    Map.prototype.setFilter = function setFilter(layerId, filter, options) {\n        if (options === void 0)\n            options = {};\n        this.style.setFilter(layerId, filter, options);\n        return this._update(true);\n    };\n    Map.prototype.getFilter = function getFilter(layerId) {\n        return this.style.getFilter(layerId);\n    };\n    Map.prototype.setPaintProperty = function setPaintProperty(layerId, name, value, options) {\n        if (options === void 0)\n            options = {};\n        this.style.setPaintProperty(layerId, name, value, options);\n        return this._update(true);\n    };\n    Map.prototype.getPaintProperty = function getPaintProperty(layerId, name) {\n        return this.style.getPaintProperty(layerId, name);\n    };\n    Map.prototype.setLayoutProperty = function setLayoutProperty(layerId, name, value, options) {\n        if (options === void 0)\n            options = {};\n        this.style.setLayoutProperty(layerId, name, value, options);\n        return this._update(true);\n    };\n    Map.prototype.getLayoutProperty = function getLayoutProperty(layerId, name) {\n        return this.style.getLayoutProperty(layerId, name);\n    };\n    Map.prototype.setLight = function setLight(light, options) {\n        if (options === void 0)\n            options = {};\n        this._lazyInitEmptyStyle();\n        this.style.setLight(light, options);\n        return this._update(true);\n    };\n    Map.prototype.getLight = function getLight() {\n        return this.style.getLight();\n    };\n    Map.prototype.setFeatureState = function setFeatureState(feature, state) {\n        this.style.setFeatureState(feature, state);\n        return this._update();\n    };\n    Map.prototype.removeFeatureState = function removeFeatureState(target, key) {\n        this.style.removeFeatureState(target, key);\n        return this._update();\n    };\n    Map.prototype.getFeatureState = function getFeatureState(feature) {\n        return this.style.getFeatureState(feature);\n    };\n    Map.prototype.getContainer = function getContainer() {\n        return this._container;\n    };\n    Map.prototype.getCanvasContainer = function getCanvasContainer() {\n        return this._canvasContainer;\n    };\n    Map.prototype.getCanvas = function getCanvas() {\n        return this._canvas;\n    };\n    Map.prototype._containerDimensions = function _containerDimensions() {\n        var width = 0;\n        var height = 0;\n        if (this._container) {\n            width = this._container.clientWidth || 400;\n            height = this._container.clientHeight || 300;\n        }\n        return [\n            width,\n            height\n        ];\n    };\n    Map.prototype._detectMissingCSS = function _detectMissingCSS() {\n        var computedColor = performance.window.getComputedStyle(this._missingCSSCanary).getPropertyValue('background-color');\n        if (computedColor !== 'rgb(250, 128, 114)') {\n            performance.warnOnce('This page appears to be missing CSS declarations for ' + 'Mapbox GL JS, which may cause the map to display incorrectly. ' + 'Please ensure your page includes mapbox-gl.css, as described ' + 'in https://www.mapbox.com/mapbox-gl-js/api/.');\n        }\n    };\n    Map.prototype._setupContainer = function _setupContainer() {\n        var container = this._container;\n        container.classList.add('mapboxgl-map');\n        var missingCSSCanary = this._missingCSSCanary = DOM.create('div', 'mapboxgl-canary', container);\n        missingCSSCanary.style.visibility = 'hidden';\n        this._detectMissingCSS();\n        var canvasContainer = this._canvasContainer = DOM.create('div', 'mapboxgl-canvas-container', container);\n        if (this._interactive) {\n            canvasContainer.classList.add('mapboxgl-interactive');\n        }\n        this._canvas = DOM.create('canvas', 'mapboxgl-canvas', canvasContainer);\n        this._canvas.addEventListener('webglcontextlost', this._contextLost, false);\n        this._canvas.addEventListener('webglcontextrestored', this._contextRestored, false);\n        this._canvas.setAttribute('tabindex', '0');\n        this._canvas.setAttribute('aria-label', 'Map');\n        var dimensions = this._containerDimensions();\n        this._resizeCanvas(dimensions[0], dimensions[1]);\n        var controlContainer = this._controlContainer = DOM.create('div', 'mapboxgl-control-container', container);\n        var positions = this._controlPositions = {};\n        [\n            'top-left',\n            'top-right',\n            'bottom-left',\n            'bottom-right'\n        ].forEach(function (positionName) {\n            positions[positionName] = DOM.create('div', 'mapboxgl-ctrl-' + positionName, controlContainer);\n        });\n    };\n    Map.prototype._resizeCanvas = function _resizeCanvas(width, height) {\n        var pixelRatio = performance.browser.devicePixelRatio || 1;\n        this._canvas.width = pixelRatio * width;\n        this._canvas.height = pixelRatio * height;\n        this._canvas.style.width = width + 'px';\n        this._canvas.style.height = height + 'px';\n    };\n    Map.prototype._setupPainter = function _setupPainter() {\n        var attributes = performance.extend({}, mapboxGlSupported.webGLContextAttributes, {\n            failIfMajorPerformanceCaveat: this._failIfMajorPerformanceCaveat,\n            preserveDrawingBuffer: this._preserveDrawingBuffer,\n            antialias: this._antialias || false\n        });\n        var gl = this._canvas.getContext('webgl', attributes) || this._canvas.getContext('experimental-webgl', attributes);\n        if (!gl) {\n            this.fire(new performance.ErrorEvent(new Error('Failed to initialize WebGL')));\n            return;\n        }\n        this.painter = new Painter(gl, this.transform);\n        performance.webpSupported.testSupport(gl);\n    };\n    Map.prototype._contextLost = function _contextLost(event) {\n        event.preventDefault();\n        if (this._frame) {\n            this._frame.cancel();\n            this._frame = null;\n        }\n        this.fire(new performance.Event('webglcontextlost', { originalEvent: event }));\n    };\n    Map.prototype._contextRestored = function _contextRestored(event) {\n        this._setupPainter();\n        this.resize();\n        this._update();\n        this.fire(new performance.Event('webglcontextrestored', { originalEvent: event }));\n    };\n    Map.prototype.loaded = function loaded() {\n        return !this._styleDirty && !this._sourcesDirty && !!this.style && this.style.loaded();\n    };\n    Map.prototype._update = function _update(updateStyle) {\n        if (!this.style) {\n            return this;\n        }\n        this._styleDirty = this._styleDirty || updateStyle;\n        this._sourcesDirty = true;\n        this.triggerRepaint();\n        return this;\n    };\n    Map.prototype._requestRenderFrame = function _requestRenderFrame(callback) {\n        this._update();\n        return this._renderTaskQueue.add(callback);\n    };\n    Map.prototype._cancelRenderFrame = function _cancelRenderFrame(id) {\n        this._renderTaskQueue.remove(id);\n    };\n    Map.prototype._render = function _render(paintStartTimeStamp) {\n        var this$1 = this;\n        var gpuTimer, frameStartTime = 0;\n        var extTimerQuery = this.painter.context.extTimerQuery;\n        if (this.listens('gpu-timing-frame')) {\n            gpuTimer = extTimerQuery.createQueryEXT();\n            extTimerQuery.beginQueryEXT(extTimerQuery.TIME_ELAPSED_EXT, gpuTimer);\n            frameStartTime = performance.browser.now();\n        }\n        this.painter.context.setDirty();\n        this.painter.setBaseState();\n        this._renderTaskQueue.run(paintStartTimeStamp);\n        if (this._removed) {\n            return;\n        }\n        var crossFading = false;\n        if (this.style && this._styleDirty) {\n            this._styleDirty = false;\n            var zoom = this.transform.zoom;\n            var now = performance.browser.now();\n            this.style.zoomHistory.update(zoom, now);\n            var parameters = new performance.EvaluationParameters(zoom, {\n                now: now,\n                fadeDuration: this._fadeDuration,\n                zoomHistory: this.style.zoomHistory,\n                transition: this.style.getTransition()\n            });\n            var factor = parameters.crossFadingFactor();\n            if (factor !== 1 || factor !== this._crossFadingFactor) {\n                crossFading = true;\n                this._crossFadingFactor = factor;\n            }\n            this.style.update(parameters);\n        }\n        if (this.style && this._sourcesDirty) {\n            this._sourcesDirty = false;\n            this.style._updateSources(this.transform);\n        }\n        this._placementDirty = this.style && this.style._updatePlacement(this.painter.transform, this.showCollisionBoxes, this._fadeDuration, this._crossSourceCollisions);\n        this.painter.render(this.style, {\n            showTileBoundaries: this.showTileBoundaries,\n            showOverdrawInspector: this._showOverdrawInspector,\n            rotating: this.isRotating(),\n            zooming: this.isZooming(),\n            moving: this.isMoving(),\n            fadeDuration: this._fadeDuration,\n            showPadding: this.showPadding,\n            gpuTiming: !!this.listens('gpu-timing-layer')\n        });\n        this.fire(new performance.Event('render'));\n        if (this.loaded() && !this._loaded) {\n            this._loaded = true;\n            this.fire(new performance.Event('load'));\n        }\n        if (this.style && (this.style.hasTransitions() || crossFading)) {\n            this._styleDirty = true;\n        }\n        if (this.style && !this._placementDirty) {\n            this.style._releaseSymbolFadeTiles();\n        }\n        if (this.listens('gpu-timing-frame')) {\n            var renderCPUTime = performance.browser.now() - frameStartTime;\n            extTimerQuery.endQueryEXT(extTimerQuery.TIME_ELAPSED_EXT, gpuTimer);\n            setTimeout(function () {\n                var renderGPUTime = extTimerQuery.getQueryObjectEXT(gpuTimer, extTimerQuery.QUERY_RESULT_EXT) / (1000 * 1000);\n                extTimerQuery.deleteQueryEXT(gpuTimer);\n                this$1.fire(new performance.Event('gpu-timing-frame', {\n                    cpuTime: renderCPUTime,\n                    gpuTime: renderGPUTime\n                }));\n            }, 50);\n        }\n        if (this.listens('gpu-timing-layer')) {\n            var frameLayerQueries = this.painter.collectGpuTimers();\n            setTimeout(function () {\n                var renderedLayerTimes = this$1.painter.queryGpuTimers(frameLayerQueries);\n                this$1.fire(new performance.Event('gpu-timing-layer', { layerTimes: renderedLayerTimes }));\n            }, 50);\n        }\n        var somethingDirty = this._sourcesDirty || this._styleDirty || this._placementDirty;\n        if (somethingDirty || this._repaint) {\n            this.triggerRepaint();\n        } else if (!this.isMoving() && this.loaded()) {\n            if (!this._fullyLoaded) {\n                this._fullyLoaded = true;\n            }\n            this.fire(new performance.Event('idle'));\n        }\n        return this;\n    };\n    Map.prototype.remove = function remove() {\n        if (this._hash) {\n            this._hash.remove();\n        }\n        for (var i = 0, list = this._controls; i < list.length; i += 1) {\n            var control = list[i];\n            control.onRemove(this);\n        }\n        this._controls = [];\n        if (this._frame) {\n            this._frame.cancel();\n            this._frame = null;\n        }\n        this._renderTaskQueue.clear();\n        this.painter.destroy();\n        this.handlers.destroy();\n        delete this.handlers;\n        this.setStyle(null);\n        if (typeof performance.window !== 'undefined') {\n            performance.window.removeEventListener('resize', this._onWindowResize, false);\n            performance.window.removeEventListener('online', this._onWindowOnline, false);\n        }\n        var extension = this.painter.context.gl.getExtension('WEBGL_lose_context');\n        if (extension) {\n            extension.loseContext();\n        }\n        removeNode(this._canvasContainer);\n        removeNode(this._controlContainer);\n        removeNode(this._missingCSSCanary);\n        this._container.classList.remove('mapboxgl-map');\n        this._removed = true;\n        this.fire(new performance.Event('remove'));\n    };\n    Map.prototype.triggerRepaint = function triggerRepaint() {\n        var this$1 = this;\n        if (this.style && !this._frame) {\n            this._frame = performance.browser.frame(function (paintStartTimeStamp) {\n                this$1._frame = null;\n                this$1._render(paintStartTimeStamp);\n            });\n        }\n    };\n    Map.prototype._onWindowOnline = function _onWindowOnline() {\n        this._update();\n    };\n    Map.prototype._onWindowResize = function _onWindowResize(event) {\n        if (this._trackResize) {\n            this.resize({ originalEvent: event })._update();\n        }\n    };\n    prototypeAccessors.showTileBoundaries.get = function () {\n        return !!this._showTileBoundaries;\n    };\n    prototypeAccessors.showTileBoundaries.set = function (value) {\n        if (this._showTileBoundaries === value) {\n            return;\n        }\n        this._showTileBoundaries = value;\n        this._update();\n    };\n    prototypeAccessors.showPadding.get = function () {\n        return !!this._showPadding;\n    };\n    prototypeAccessors.showPadding.set = function (value) {\n        if (this._showPadding === value) {\n            return;\n        }\n        this._showPadding = value;\n        this._update();\n    };\n    prototypeAccessors.showCollisionBoxes.get = function () {\n        return !!this._showCollisionBoxes;\n    };\n    prototypeAccessors.showCollisionBoxes.set = function (value) {\n        if (this._showCollisionBoxes === value) {\n            return;\n        }\n        this._showCollisionBoxes = value;\n        if (value) {\n            this.style._generateCollisionBoxes();\n        } else {\n            this._update();\n        }\n    };\n    prototypeAccessors.showOverdrawInspector.get = function () {\n        return !!this._showOverdrawInspector;\n    };\n    prototypeAccessors.showOverdrawInspector.set = function (value) {\n        if (this._showOverdrawInspector === value) {\n            return;\n        }\n        this._showOverdrawInspector = value;\n        this._update();\n    };\n    prototypeAccessors.repaint.get = function () {\n        return !!this._repaint;\n    };\n    prototypeAccessors.repaint.set = function (value) {\n        if (this._repaint !== value) {\n            this._repaint = value;\n            this.triggerRepaint();\n        }\n    };\n    prototypeAccessors.vertices.get = function () {\n        return !!this._vertices;\n    };\n    prototypeAccessors.vertices.set = function (value) {\n        this._vertices = value;\n        this._update();\n    };\n    Map.prototype._setCacheLimits = function _setCacheLimits(limit, checkThreshold) {\n        performance.setCacheLimits(limit, checkThreshold);\n    };\n    prototypeAccessors.version.get = function () {\n        return performance.version;\n    };\n    Object.defineProperties(Map.prototype, prototypeAccessors);\n    return Map;\n}(Camera);\nfunction removeNode(node) {\n    if (node.parentNode) {\n        node.parentNode.removeChild(node);\n    }\n}\n\nvar defaultOptions$2 = {\n    showCompass: true,\n    showZoom: true,\n    visualizePitch: false\n};\nvar NavigationControl = function NavigationControl(options) {\n    var this$1 = this;\n    this.options = performance.extend({}, defaultOptions$2, options);\n    this._container = DOM.create('div', 'mapboxgl-ctrl mapboxgl-ctrl-group');\n    this._container.addEventListener('contextmenu', function (e) {\n        return e.preventDefault();\n    });\n    if (this.options.showZoom) {\n        performance.bindAll([\n            '_setButtonTitle',\n            '_updateZoomButtons'\n        ], this);\n        this._zoomInButton = this._createButton('mapboxgl-ctrl-zoom-in', function (e) {\n            return this$1._map.zoomIn({}, { originalEvent: e });\n        });\n        DOM.create('span', 'mapboxgl-ctrl-icon', this._zoomInButton).setAttribute('aria-hidden', true);\n        this._zoomOutButton = this._createButton('mapboxgl-ctrl-zoom-out', function (e) {\n            return this$1._map.zoomOut({}, { originalEvent: e });\n        });\n        DOM.create('span', 'mapboxgl-ctrl-icon', this._zoomOutButton).setAttribute('aria-hidden', true);\n    }\n    if (this.options.showCompass) {\n        performance.bindAll(['_rotateCompassArrow'], this);\n        this._compass = this._createButton('mapboxgl-ctrl-compass', function (e) {\n            if (this$1.options.visualizePitch) {\n                this$1._map.resetNorthPitch({}, { originalEvent: e });\n            } else {\n                this$1._map.resetNorth({}, { originalEvent: e });\n            }\n        });\n        this._compassIcon = DOM.create('span', 'mapboxgl-ctrl-icon', this._compass);\n        this._compassIcon.setAttribute('aria-hidden', true);\n    }\n};\nNavigationControl.prototype._updateZoomButtons = function _updateZoomButtons() {\n    var zoom = this._map.getZoom();\n    this._zoomInButton.disabled = zoom === this._map.getMaxZoom();\n    this._zoomOutButton.disabled = zoom === this._map.getMinZoom();\n};\nNavigationControl.prototype._rotateCompassArrow = function _rotateCompassArrow() {\n    var rotate = this.options.visualizePitch ? 'scale(' + 1 / Math.pow(Math.cos(this._map.transform.pitch * (Math.PI / 180)), 0.5) + ') rotateX(' + this._map.transform.pitch + 'deg) rotateZ(' + this._map.transform.angle * (180 / Math.PI) + 'deg)' : 'rotate(' + this._map.transform.angle * (180 / Math.PI) + 'deg)';\n    this._compassIcon.style.transform = rotate;\n};\nNavigationControl.prototype.onAdd = function onAdd(map) {\n    this._map = map;\n    if (this.options.showZoom) {\n        this._setButtonTitle(this._zoomInButton, 'ZoomIn');\n        this._setButtonTitle(this._zoomOutButton, 'ZoomOut');\n        this._map.on('zoom', this._updateZoomButtons);\n        this._updateZoomButtons();\n    }\n    if (this.options.showCompass) {\n        this._setButtonTitle(this._compass, 'ResetBearing');\n        if (this.options.visualizePitch) {\n            this._map.on('pitch', this._rotateCompassArrow);\n        }\n        this._map.on('rotate', this._rotateCompassArrow);\n        this._rotateCompassArrow();\n        this._handler = new MouseRotateWrapper(this._map, this._compass, this.options.visualizePitch);\n    }\n    return this._container;\n};\nNavigationControl.prototype.onRemove = function onRemove() {\n    DOM.remove(this._container);\n    if (this.options.showZoom) {\n        this._map.off('zoom', this._updateZoomButtons);\n    }\n    if (this.options.showCompass) {\n        if (this.options.visualizePitch) {\n            this._map.off('pitch', this._rotateCompassArrow);\n        }\n        this._map.off('rotate', this._rotateCompassArrow);\n        this._handler.off();\n        delete this._handler;\n    }\n    delete this._map;\n};\nNavigationControl.prototype._createButton = function _createButton(className, fn) {\n    var a = DOM.create('button', className, this._container);\n    a.type = 'button';\n    a.addEventListener('click', fn);\n    return a;\n};\nNavigationControl.prototype._setButtonTitle = function _setButtonTitle(button, title) {\n    var str = this._map._getUIString('NavigationControl.' + title);\n    button.title = str;\n    button.setAttribute('aria-label', str);\n};\nvar MouseRotateWrapper = function MouseRotateWrapper(map, element, pitch) {\n    if (pitch === void 0)\n        pitch = false;\n    this._clickTolerance = 10;\n    this.element = element;\n    this.mouseRotate = new MouseRotateHandler({ clickTolerance: map.dragRotate._mouseRotate._clickTolerance });\n    this.map = map;\n    if (pitch) {\n        this.mousePitch = new MousePitchHandler({ clickTolerance: map.dragRotate._mousePitch._clickTolerance });\n    }\n    performance.bindAll([\n        'mousedown',\n        'mousemove',\n        'mouseup',\n        'touchstart',\n        'touchmove',\n        'touchend',\n        'reset'\n    ], this);\n    DOM.addEventListener(element, 'mousedown', this.mousedown);\n    DOM.addEventListener(element, 'touchstart', this.touchstart, { passive: false });\n    DOM.addEventListener(element, 'touchmove', this.touchmove);\n    DOM.addEventListener(element, 'touchend', this.touchend);\n    DOM.addEventListener(element, 'touchcancel', this.reset);\n};\nMouseRotateWrapper.prototype.down = function down(e, point) {\n    this.mouseRotate.mousedown(e, point);\n    if (this.mousePitch) {\n        this.mousePitch.mousedown(e, point);\n    }\n    DOM.disableDrag();\n};\nMouseRotateWrapper.prototype.move = function move(e, point) {\n    var map = this.map;\n    var r = this.mouseRotate.mousemoveWindow(e, point);\n    if (r && r.bearingDelta) {\n        map.setBearing(map.getBearing() + r.bearingDelta);\n    }\n    if (this.mousePitch) {\n        var p = this.mousePitch.mousemoveWindow(e, point);\n        if (p && p.pitchDelta) {\n            map.setPitch(map.getPitch() + p.pitchDelta);\n        }\n    }\n};\nMouseRotateWrapper.prototype.off = function off() {\n    var element = this.element;\n    DOM.removeEventListener(element, 'mousedown', this.mousedown);\n    DOM.removeEventListener(element, 'touchstart', this.touchstart, { passive: false });\n    DOM.removeEventListener(element, 'touchmove', this.touchmove);\n    DOM.removeEventListener(element, 'touchend', this.touchend);\n    DOM.removeEventListener(element, 'touchcancel', this.reset);\n    this.offTemp();\n};\nMouseRotateWrapper.prototype.offTemp = function offTemp() {\n    DOM.enableDrag();\n    DOM.removeEventListener(performance.window, 'mousemove', this.mousemove);\n    DOM.removeEventListener(performance.window, 'mouseup', this.mouseup);\n};\nMouseRotateWrapper.prototype.mousedown = function mousedown(e) {\n    this.down(performance.extend({}, e, {\n        ctrlKey: true,\n        preventDefault: function () {\n            return e.preventDefault();\n        }\n    }), DOM.mousePos(this.element, e));\n    DOM.addEventListener(performance.window, 'mousemove', this.mousemove);\n    DOM.addEventListener(performance.window, 'mouseup', this.mouseup);\n};\nMouseRotateWrapper.prototype.mousemove = function mousemove(e) {\n    this.move(e, DOM.mousePos(this.element, e));\n};\nMouseRotateWrapper.prototype.mouseup = function mouseup(e) {\n    this.mouseRotate.mouseupWindow(e);\n    if (this.mousePitch) {\n        this.mousePitch.mouseupWindow(e);\n    }\n    this.offTemp();\n};\nMouseRotateWrapper.prototype.touchstart = function touchstart(e) {\n    if (e.targetTouches.length !== 1) {\n        this.reset();\n    } else {\n        this._startPos = this._lastPos = DOM.touchPos(this.element, e.targetTouches)[0];\n        this.down({\n            type: 'mousedown',\n            button: 0,\n            ctrlKey: true,\n            preventDefault: function () {\n                return e.preventDefault();\n            }\n        }, this._startPos);\n    }\n};\nMouseRotateWrapper.prototype.touchmove = function touchmove(e) {\n    if (e.targetTouches.length !== 1) {\n        this.reset();\n    } else {\n        this._lastPos = DOM.touchPos(this.element, e.targetTouches)[0];\n        this.move({\n            preventDefault: function () {\n                return e.preventDefault();\n            }\n        }, this._lastPos);\n    }\n};\nMouseRotateWrapper.prototype.touchend = function touchend(e) {\n    if (e.targetTouches.length === 0 && this._startPos && this._lastPos && this._startPos.dist(this._lastPos) < this._clickTolerance) {\n        this.element.click();\n    }\n    this.reset();\n};\nMouseRotateWrapper.prototype.reset = function reset() {\n    this.mouseRotate.reset();\n    if (this.mousePitch) {\n        this.mousePitch.reset();\n    }\n    delete this._startPos;\n    delete this._lastPos;\n    this.offTemp();\n};\n\nfunction smartWrap (lngLat, priorPos, transform) {\n    lngLat = new performance.LngLat(lngLat.lng, lngLat.lat);\n    if (priorPos) {\n        var left = new performance.LngLat(lngLat.lng - 360, lngLat.lat);\n        var right = new performance.LngLat(lngLat.lng + 360, lngLat.lat);\n        var delta = transform.locationPoint(lngLat).distSqr(priorPos);\n        if (transform.locationPoint(left).distSqr(priorPos) < delta) {\n            lngLat = left;\n        } else if (transform.locationPoint(right).distSqr(priorPos) < delta) {\n            lngLat = right;\n        }\n    }\n    while (Math.abs(lngLat.lng - transform.center.lng) > 180) {\n        var pos = transform.locationPoint(lngLat);\n        if (pos.x >= 0 && pos.y >= 0 && pos.x <= transform.width && pos.y <= transform.height) {\n            break;\n        }\n        if (lngLat.lng > transform.center.lng) {\n            lngLat.lng -= 360;\n        } else {\n            lngLat.lng += 360;\n        }\n    }\n    return lngLat;\n}\n\nvar anchorTranslate = {\n    'center': 'translate(-50%,-50%)',\n    'top': 'translate(-50%,0)',\n    'top-left': 'translate(0,0)',\n    'top-right': 'translate(-100%,0)',\n    'bottom': 'translate(-50%,-100%)',\n    'bottom-left': 'translate(0,-100%)',\n    'bottom-right': 'translate(-100%,-100%)',\n    'left': 'translate(0,-50%)',\n    'right': 'translate(-100%,-50%)'\n};\nfunction applyAnchorClass(element, anchor, prefix) {\n    var classList = element.classList;\n    for (var key in anchorTranslate) {\n        classList.remove('mapboxgl-' + prefix + '-anchor-' + key);\n    }\n    classList.add('mapboxgl-' + prefix + '-anchor-' + anchor);\n}\n\nvar Marker = function (Evented) {\n    function Marker(options, legacyOptions) {\n        var this$1 = this;\n        Evented.call(this);\n        if (options instanceof performance.window.HTMLElement || legacyOptions) {\n            options = performance.extend({ element: options }, legacyOptions);\n        }\n        performance.bindAll([\n            '_update',\n            '_onMove',\n            '_onUp',\n            '_addDragHandler',\n            '_onMapClick',\n            '_onKeyPress'\n        ], this);\n        this._anchor = options && options.anchor || 'center';\n        this._color = options && options.color || '#3FB1CE';\n        this._draggable = options && options.draggable || false;\n        this._state = 'inactive';\n        this._rotation = options && options.rotation || 0;\n        this._rotationAlignment = options && options.rotationAlignment || 'auto';\n        this._pitchAlignment = options && options.pitchAlignment && options.pitchAlignment !== 'auto' ? options.pitchAlignment : this._rotationAlignment;\n        if (!options || !options.element) {\n            this._defaultMarker = true;\n            this._element = DOM.create('div');\n            this._element.setAttribute('aria-label', 'Map marker');\n            var svg = DOM.createNS('http://www.w3.org/2000/svg', 'svg');\n            svg.setAttributeNS(null, 'display', 'block');\n            svg.setAttributeNS(null, 'height', '41px');\n            svg.setAttributeNS(null, 'width', '27px');\n            svg.setAttributeNS(null, 'viewBox', '0 0 27 41');\n            var markerLarge = DOM.createNS('http://www.w3.org/2000/svg', 'g');\n            markerLarge.setAttributeNS(null, 'stroke', 'none');\n            markerLarge.setAttributeNS(null, 'stroke-width', '1');\n            markerLarge.setAttributeNS(null, 'fill', 'none');\n            markerLarge.setAttributeNS(null, 'fill-rule', 'evenodd');\n            var page1 = DOM.createNS('http://www.w3.org/2000/svg', 'g');\n            page1.setAttributeNS(null, 'fill-rule', 'nonzero');\n            var shadow = DOM.createNS('http://www.w3.org/2000/svg', 'g');\n            shadow.setAttributeNS(null, 'transform', 'translate(3.0, 29.0)');\n            shadow.setAttributeNS(null, 'fill', '#000000');\n            var ellipses = [\n                {\n                    'rx': '10.5',\n                    'ry': '5.25002273'\n                },\n                {\n                    'rx': '10.5',\n                    'ry': '5.25002273'\n                },\n                {\n                    'rx': '9.5',\n                    'ry': '4.77275007'\n                },\n                {\n                    'rx': '8.5',\n                    'ry': '4.29549936'\n                },\n                {\n                    'rx': '7.5',\n                    'ry': '3.81822308'\n                },\n                {\n                    'rx': '6.5',\n                    'ry': '3.34094679'\n                },\n                {\n                    'rx': '5.5',\n                    'ry': '2.86367051'\n                },\n                {\n                    'rx': '4.5',\n                    'ry': '2.38636864'\n                }\n            ];\n            for (var i = 0, list = ellipses; i < list.length; i += 1) {\n                var data = list[i];\n                var ellipse = DOM.createNS('http://www.w3.org/2000/svg', 'ellipse');\n                ellipse.setAttributeNS(null, 'opacity', '0.04');\n                ellipse.setAttributeNS(null, 'cx', '10.5');\n                ellipse.setAttributeNS(null, 'cy', '5.80029008');\n                ellipse.setAttributeNS(null, 'rx', data['rx']);\n                ellipse.setAttributeNS(null, 'ry', data['ry']);\n                shadow.appendChild(ellipse);\n            }\n            var background = DOM.createNS('http://www.w3.org/2000/svg', 'g');\n            background.setAttributeNS(null, 'fill', this._color);\n            var bgPath = DOM.createNS('http://www.w3.org/2000/svg', 'path');\n            bgPath.setAttributeNS(null, 'd', 'M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z');\n            background.appendChild(bgPath);\n            var border = DOM.createNS('http://www.w3.org/2000/svg', 'g');\n            border.setAttributeNS(null, 'opacity', '0.25');\n            border.setAttributeNS(null, 'fill', '#000000');\n            var borderPath = DOM.createNS('http://www.w3.org/2000/svg', 'path');\n            borderPath.setAttributeNS(null, 'd', 'M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z');\n            border.appendChild(borderPath);\n            var maki = DOM.createNS('http://www.w3.org/2000/svg', 'g');\n            maki.setAttributeNS(null, 'transform', 'translate(6.0, 7.0)');\n            maki.setAttributeNS(null, 'fill', '#FFFFFF');\n            var circleContainer = DOM.createNS('http://www.w3.org/2000/svg', 'g');\n            circleContainer.setAttributeNS(null, 'transform', 'translate(8.0, 8.0)');\n            var circle1 = DOM.createNS('http://www.w3.org/2000/svg', 'circle');\n            circle1.setAttributeNS(null, 'fill', '#000000');\n            circle1.setAttributeNS(null, 'opacity', '0.25');\n            circle1.setAttributeNS(null, 'cx', '5.5');\n            circle1.setAttributeNS(null, 'cy', '5.5');\n            circle1.setAttributeNS(null, 'r', '5.4999962');\n            var circle2 = DOM.createNS('http://www.w3.org/2000/svg', 'circle');\n            circle2.setAttributeNS(null, 'fill', '#FFFFFF');\n            circle2.setAttributeNS(null, 'cx', '5.5');\n            circle2.setAttributeNS(null, 'cy', '5.5');\n            circle2.setAttributeNS(null, 'r', '5.4999962');\n            circleContainer.appendChild(circle1);\n            circleContainer.appendChild(circle2);\n            page1.appendChild(shadow);\n            page1.appendChild(background);\n            page1.appendChild(border);\n            page1.appendChild(maki);\n            page1.appendChild(circleContainer);\n            svg.appendChild(page1);\n            this._element.appendChild(svg);\n            this._offset = performance.Point.convert(options && options.offset || [\n                0,\n                -14\n            ]);\n        } else {\n            this._element = options.element;\n            this._offset = performance.Point.convert(options && options.offset || [\n                0,\n                0\n            ]);\n        }\n        this._element.classList.add('mapboxgl-marker');\n        this._element.addEventListener('dragstart', function (e) {\n            e.preventDefault();\n        });\n        this._element.addEventListener('mousedown', function (e) {\n            e.preventDefault();\n        });\n        this._element.addEventListener('focus', function () {\n            var el = this$1._map.getContainer();\n            el.scrollTop = 0;\n            el.scrollLeft = 0;\n        });\n        applyAnchorClass(this._element, this._anchor, 'marker');\n        this._popup = null;\n    }\n    if (Evented)\n        Marker.__proto__ = Evented;\n    Marker.prototype = Object.create(Evented && Evented.prototype);\n    Marker.prototype.constructor = Marker;\n    Marker.prototype.addTo = function addTo(map) {\n        this.remove();\n        this._map = map;\n        map.getCanvasContainer().appendChild(this._element);\n        map.on('move', this._update);\n        map.on('moveend', this._update);\n        this.setDraggable(this._draggable);\n        this._update();\n        this._map.on('click', this._onMapClick);\n        return this;\n    };\n    Marker.prototype.remove = function remove() {\n        if (this._map) {\n            this._map.off('click', this._onMapClick);\n            this._map.off('move', this._update);\n            this._map.off('moveend', this._update);\n            this._map.off('mousedown', this._addDragHandler);\n            this._map.off('touchstart', this._addDragHandler);\n            this._map.off('mouseup', this._onUp);\n            this._map.off('touchend', this._onUp);\n            this._map.off('mousemove', this._onMove);\n            this._map.off('touchmove', this._onMove);\n            delete this._map;\n        }\n        DOM.remove(this._element);\n        if (this._popup) {\n            this._popup.remove();\n        }\n        return this;\n    };\n    Marker.prototype.getLngLat = function getLngLat() {\n        return this._lngLat;\n    };\n    Marker.prototype.setLngLat = function setLngLat(lnglat) {\n        this._lngLat = performance.LngLat.convert(lnglat);\n        this._pos = null;\n        if (this._popup) {\n            this._popup.setLngLat(this._lngLat);\n        }\n        this._update();\n        return this;\n    };\n    Marker.prototype.getElement = function getElement() {\n        return this._element;\n    };\n    Marker.prototype.setPopup = function setPopup(popup) {\n        if (this._popup) {\n            this._popup.remove();\n            this._popup = null;\n            this._element.removeEventListener('keypress', this._onKeyPress);\n            if (!this._originalTabIndex) {\n                this._element.removeAttribute('tabindex');\n            }\n        }\n        if (popup) {\n            if (!('offset' in popup.options)) {\n                var markerHeight = 41 - 5.8 / 2;\n                var markerRadius = 13.5;\n                var linearOffset = Math.sqrt(Math.pow(markerRadius, 2) / 2);\n                popup.options.offset = this._defaultMarker ? {\n                    'top': [\n                        0,\n                        0\n                    ],\n                    'top-left': [\n                        0,\n                        0\n                    ],\n                    'top-right': [\n                        0,\n                        0\n                    ],\n                    'bottom': [\n                        0,\n                        -markerHeight\n                    ],\n                    'bottom-left': [\n                        linearOffset,\n                        (markerHeight - markerRadius + linearOffset) * -1\n                    ],\n                    'bottom-right': [\n                        -linearOffset,\n                        (markerHeight - markerRadius + linearOffset) * -1\n                    ],\n                    'left': [\n                        markerRadius,\n                        (markerHeight - markerRadius) * -1\n                    ],\n                    'right': [\n                        -markerRadius,\n                        (markerHeight - markerRadius) * -1\n                    ]\n                } : this._offset;\n            }\n            this._popup = popup;\n            if (this._lngLat) {\n                this._popup.setLngLat(this._lngLat);\n            }\n            this._originalTabIndex = this._element.getAttribute('tabindex');\n            if (!this._originalTabIndex) {\n                this._element.setAttribute('tabindex', '0');\n            }\n            this._element.addEventListener('keypress', this._onKeyPress);\n        }\n        return this;\n    };\n    Marker.prototype._onKeyPress = function _onKeyPress(e) {\n        var code = e.code;\n        var legacyCode = e.charCode || e.keyCode;\n        if (code === 'Space' || code === 'Enter' || legacyCode === 32 || legacyCode === 13) {\n            this.togglePopup();\n        }\n    };\n    Marker.prototype._onMapClick = function _onMapClick(e) {\n        var targetElement = e.originalEvent.target;\n        var element = this._element;\n        if (this._popup && (targetElement === element || element.contains(targetElement))) {\n            this.togglePopup();\n        }\n    };\n    Marker.prototype.getPopup = function getPopup() {\n        return this._popup;\n    };\n    Marker.prototype.togglePopup = function togglePopup() {\n        var popup = this._popup;\n        if (!popup) {\n            return this;\n        } else if (popup.isOpen()) {\n            popup.remove();\n        } else {\n            popup.addTo(this._map);\n        }\n        return this;\n    };\n    Marker.prototype._update = function _update(e) {\n        if (!this._map) {\n            return;\n        }\n        if (this._map.transform.renderWorldCopies) {\n            this._lngLat = smartWrap(this._lngLat, this._pos, this._map.transform);\n        }\n        this._pos = this._map.project(this._lngLat)._add(this._offset);\n        var rotation = '';\n        if (this._rotationAlignment === 'viewport' || this._rotationAlignment === 'auto') {\n            rotation = 'rotateZ(' + this._rotation + 'deg)';\n        } else if (this._rotationAlignment === 'map') {\n            rotation = 'rotateZ(' + (this._rotation - this._map.getBearing()) + 'deg)';\n        }\n        var pitch = '';\n        if (this._pitchAlignment === 'viewport' || this._pitchAlignment === 'auto') {\n            pitch = 'rotateX(0deg)';\n        } else if (this._pitchAlignment === 'map') {\n            pitch = 'rotateX(' + this._map.getPitch() + 'deg)';\n        }\n        if (!e || e.type === 'moveend') {\n            this._pos = this._pos.round();\n        }\n        DOM.setTransform(this._element, anchorTranslate[this._anchor] + ' translate(' + this._pos.x + 'px, ' + this._pos.y + 'px) ' + pitch + ' ' + rotation);\n    };\n    Marker.prototype.getOffset = function getOffset() {\n        return this._offset;\n    };\n    Marker.prototype.setOffset = function setOffset(offset) {\n        this._offset = performance.Point.convert(offset);\n        this._update();\n        return this;\n    };\n    Marker.prototype._onMove = function _onMove(e) {\n        this._pos = e.point.sub(this._positionDelta);\n        this._lngLat = this._map.unproject(this._pos);\n        this.setLngLat(this._lngLat);\n        this._element.style.pointerEvents = 'none';\n        if (this._state === 'pending') {\n            this._state = 'active';\n            this.fire(new performance.Event('dragstart'));\n        }\n        this.fire(new performance.Event('drag'));\n    };\n    Marker.prototype._onUp = function _onUp() {\n        this._element.style.pointerEvents = 'auto';\n        this._positionDelta = null;\n        this._map.off('mousemove', this._onMove);\n        this._map.off('touchmove', this._onMove);\n        if (this._state === 'active') {\n            this.fire(new performance.Event('dragend'));\n        }\n        this._state = 'inactive';\n    };\n    Marker.prototype._addDragHandler = function _addDragHandler(e) {\n        if (this._element.contains(e.originalEvent.target)) {\n            e.preventDefault();\n            this._positionDelta = e.point.sub(this._pos).add(this._offset);\n            this._state = 'pending';\n            this._map.on('mousemove', this._onMove);\n            this._map.on('touchmove', this._onMove);\n            this._map.once('mouseup', this._onUp);\n            this._map.once('touchend', this._onUp);\n        }\n    };\n    Marker.prototype.setDraggable = function setDraggable(shouldBeDraggable) {\n        this._draggable = !!shouldBeDraggable;\n        if (this._map) {\n            if (shouldBeDraggable) {\n                this._map.on('mousedown', this._addDragHandler);\n                this._map.on('touchstart', this._addDragHandler);\n            } else {\n                this._map.off('mousedown', this._addDragHandler);\n                this._map.off('touchstart', this._addDragHandler);\n            }\n        }\n        return this;\n    };\n    Marker.prototype.isDraggable = function isDraggable() {\n        return this._draggable;\n    };\n    Marker.prototype.setRotation = function setRotation(rotation) {\n        this._rotation = rotation || 0;\n        this._update();\n        return this;\n    };\n    Marker.prototype.getRotation = function getRotation() {\n        return this._rotation;\n    };\n    Marker.prototype.setRotationAlignment = function setRotationAlignment(alignment) {\n        this._rotationAlignment = alignment || 'auto';\n        this._update();\n        return this;\n    };\n    Marker.prototype.getRotationAlignment = function getRotationAlignment() {\n        return this._rotationAlignment;\n    };\n    Marker.prototype.setPitchAlignment = function setPitchAlignment(alignment) {\n        this._pitchAlignment = alignment && alignment !== 'auto' ? alignment : this._rotationAlignment;\n        this._update();\n        return this;\n    };\n    Marker.prototype.getPitchAlignment = function getPitchAlignment() {\n        return this._pitchAlignment;\n    };\n    return Marker;\n}(performance.Evented);\n\nvar defaultOptions$3 = {\n    positionOptions: {\n        enableHighAccuracy: false,\n        maximumAge: 0,\n        timeout: 6000\n    },\n    fitBoundsOptions: { maxZoom: 15 },\n    trackUserLocation: false,\n    showAccuracyCircle: true,\n    showUserLocation: true\n};\nvar supportsGeolocation;\nfunction checkGeolocationSupport(callback) {\n    if (supportsGeolocation !== undefined) {\n        callback(supportsGeolocation);\n    } else if (performance.window.navigator.permissions !== undefined) {\n        performance.window.navigator.permissions.query({ name: 'geolocation' }).then(function (p) {\n            supportsGeolocation = p.state !== 'denied';\n            callback(supportsGeolocation);\n        });\n    } else {\n        supportsGeolocation = !!performance.window.navigator.geolocation;\n        callback(supportsGeolocation);\n    }\n}\nvar numberOfWatches = 0;\nvar noTimeout = false;\nvar GeolocateControl = function (Evented) {\n    function GeolocateControl(options) {\n        Evented.call(this);\n        this.options = performance.extend({}, defaultOptions$3, options);\n        performance.bindAll([\n            '_onSuccess',\n            '_onError',\n            '_onZoom',\n            '_finish',\n            '_setupUI',\n            '_updateCamera',\n            '_updateMarker'\n        ], this);\n    }\n    if (Evented)\n        GeolocateControl.__proto__ = Evented;\n    GeolocateControl.prototype = Object.create(Evented && Evented.prototype);\n    GeolocateControl.prototype.constructor = GeolocateControl;\n    GeolocateControl.prototype.onAdd = function onAdd(map) {\n        this._map = map;\n        this._container = DOM.create('div', 'mapboxgl-ctrl mapboxgl-ctrl-group');\n        checkGeolocationSupport(this._setupUI);\n        return this._container;\n    };\n    GeolocateControl.prototype.onRemove = function onRemove() {\n        if (this._geolocationWatchID !== undefined) {\n            performance.window.navigator.geolocation.clearWatch(this._geolocationWatchID);\n            this._geolocationWatchID = undefined;\n        }\n        if (this.options.showUserLocation && this._userLocationDotMarker) {\n            this._userLocationDotMarker.remove();\n        }\n        if (this.options.showAccuracyCircle && this._accuracyCircleMarker) {\n            this._accuracyCircleMarker.remove();\n        }\n        DOM.remove(this._container);\n        this._map.off('zoom', this._onZoom);\n        this._map = undefined;\n        numberOfWatches = 0;\n        noTimeout = false;\n    };\n    GeolocateControl.prototype._isOutOfMapMaxBounds = function _isOutOfMapMaxBounds(position) {\n        var bounds = this._map.getMaxBounds();\n        var coordinates = position.coords;\n        return bounds && (coordinates.longitude < bounds.getWest() || coordinates.longitude > bounds.getEast() || coordinates.latitude < bounds.getSouth() || coordinates.latitude > bounds.getNorth());\n    };\n    GeolocateControl.prototype._setErrorState = function _setErrorState() {\n        switch (this._watchState) {\n        case 'WAITING_ACTIVE':\n            this._watchState = 'ACTIVE_ERROR';\n            this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n            this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active-error');\n            break;\n        case 'ACTIVE_LOCK':\n            this._watchState = 'ACTIVE_ERROR';\n            this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n            this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active-error');\n            this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n            break;\n        case 'BACKGROUND':\n            this._watchState = 'BACKGROUND_ERROR';\n            this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background');\n            this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background-error');\n            this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n            break;\n        }\n    };\n    GeolocateControl.prototype._onSuccess = function _onSuccess(position) {\n        if (!this._map) {\n            return;\n        }\n        if (this._isOutOfMapMaxBounds(position)) {\n            this._setErrorState();\n            this.fire(new performance.Event('outofmaxbounds', position));\n            this._updateMarker();\n            this._finish();\n            return;\n        }\n        if (this.options.trackUserLocation) {\n            this._lastKnownPosition = position;\n            switch (this._watchState) {\n            case 'WAITING_ACTIVE':\n            case 'ACTIVE_LOCK':\n            case 'ACTIVE_ERROR':\n                this._watchState = 'ACTIVE_LOCK';\n                this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-waiting');\n                this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active-error');\n                this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active');\n                break;\n            case 'BACKGROUND':\n            case 'BACKGROUND_ERROR':\n                this._watchState = 'BACKGROUND';\n                this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-waiting');\n                this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background-error');\n                this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background');\n                break;\n            }\n        }\n        if (this.options.showUserLocation && this._watchState !== 'OFF') {\n            this._updateMarker(position);\n        }\n        if (!this.options.trackUserLocation || this._watchState === 'ACTIVE_LOCK') {\n            this._updateCamera(position);\n        }\n        if (this.options.showUserLocation) {\n            this._dotElement.classList.remove('mapboxgl-user-location-dot-stale');\n        }\n        this.fire(new performance.Event('geolocate', position));\n        this._finish();\n    };\n    GeolocateControl.prototype._updateCamera = function _updateCamera(position) {\n        var center = new performance.LngLat(position.coords.longitude, position.coords.latitude);\n        var radius = position.coords.accuracy;\n        var bearing = this._map.getBearing();\n        var options = performance.extend({ bearing: bearing }, this.options.fitBoundsOptions);\n        this._map.fitBounds(center.toBounds(radius), options, { geolocateSource: true });\n    };\n    GeolocateControl.prototype._updateMarker = function _updateMarker(position) {\n        if (position) {\n            var center = new performance.LngLat(position.coords.longitude, position.coords.latitude);\n            this._accuracyCircleMarker.setLngLat(center).addTo(this._map);\n            this._userLocationDotMarker.setLngLat(center).addTo(this._map);\n            this._accuracy = position.coords.accuracy;\n            if (this.options.showUserLocation && this.options.showAccuracyCircle) {\n                this._updateCircleRadius();\n            }\n        } else {\n            this._userLocationDotMarker.remove();\n            this._accuracyCircleMarker.remove();\n        }\n    };\n    GeolocateControl.prototype._updateCircleRadius = function _updateCircleRadius() {\n        var y = this._map._container.clientHeight / 2;\n        var a = this._map.unproject([\n            0,\n            y\n        ]);\n        var b = this._map.unproject([\n            1,\n            y\n        ]);\n        var metersPerPixel = a.distanceTo(b);\n        var circleDiameter = Math.ceil(2 * this._accuracy / metersPerPixel);\n        this._circleElement.style.width = circleDiameter + 'px';\n        this._circleElement.style.height = circleDiameter + 'px';\n    };\n    GeolocateControl.prototype._onZoom = function _onZoom() {\n        if (this.options.showUserLocation && this.options.showAccuracyCircle) {\n            this._updateCircleRadius();\n        }\n    };\n    GeolocateControl.prototype._onError = function _onError(error) {\n        if (!this._map) {\n            return;\n        }\n        if (this.options.trackUserLocation) {\n            if (error.code === 1) {\n                this._watchState = 'OFF';\n                this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-waiting');\n                this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n                this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active-error');\n                this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background');\n                this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background-error');\n                this._geolocateButton.disabled = true;\n                var title = this._map._getUIString('GeolocateControl.LocationNotAvailable');\n                this._geolocateButton.title = title;\n                this._geolocateButton.setAttribute('aria-label', title);\n                if (this._geolocationWatchID !== undefined) {\n                    this._clearWatch();\n                }\n            } else if (error.code === 3 && noTimeout) {\n                return;\n            } else {\n                this._setErrorState();\n            }\n        }\n        if (this._watchState !== 'OFF' && this.options.showUserLocation) {\n            this._dotElement.classList.add('mapboxgl-user-location-dot-stale');\n        }\n        this.fire(new performance.Event('error', error));\n        this._finish();\n    };\n    GeolocateControl.prototype._finish = function _finish() {\n        if (this._timeoutId) {\n            clearTimeout(this._timeoutId);\n        }\n        this._timeoutId = undefined;\n    };\n    GeolocateControl.prototype._setupUI = function _setupUI(supported) {\n        var this$1 = this;\n        this._container.addEventListener('contextmenu', function (e) {\n            return e.preventDefault();\n        });\n        this._geolocateButton = DOM.create('button', 'mapboxgl-ctrl-geolocate', this._container);\n        DOM.create('span', 'mapboxgl-ctrl-icon', this._geolocateButton).setAttribute('aria-hidden', true);\n        this._geolocateButton.type = 'button';\n        if (supported === false) {\n            performance.warnOnce('Geolocation support is not available so the GeolocateControl will be disabled.');\n            var title = this._map._getUIString('GeolocateControl.LocationNotAvailable');\n            this._geolocateButton.disabled = true;\n            this._geolocateButton.title = title;\n            this._geolocateButton.setAttribute('aria-label', title);\n        } else {\n            var title$1 = this._map._getUIString('GeolocateControl.FindMyLocation');\n            this._geolocateButton.title = title$1;\n            this._geolocateButton.setAttribute('aria-label', title$1);\n        }\n        if (this.options.trackUserLocation) {\n            this._geolocateButton.setAttribute('aria-pressed', 'false');\n            this._watchState = 'OFF';\n        }\n        if (this.options.showUserLocation) {\n            this._dotElement = DOM.create('div', 'mapboxgl-user-location-dot');\n            this._userLocationDotMarker = new Marker(this._dotElement);\n            this._circleElement = DOM.create('div', 'mapboxgl-user-location-accuracy-circle');\n            this._accuracyCircleMarker = new Marker({\n                element: this._circleElement,\n                pitchAlignment: 'map'\n            });\n            if (this.options.trackUserLocation) {\n                this._watchState = 'OFF';\n            }\n            this._map.on('zoom', this._onZoom);\n        }\n        this._geolocateButton.addEventListener('click', this.trigger.bind(this));\n        this._setup = true;\n        if (this.options.trackUserLocation) {\n            this._map.on('movestart', function (event) {\n                var fromResize = event.originalEvent && event.originalEvent.type === 'resize';\n                if (!event.geolocateSource && this$1._watchState === 'ACTIVE_LOCK' && !fromResize) {\n                    this$1._watchState = 'BACKGROUND';\n                    this$1._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background');\n                    this$1._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n                    this$1.fire(new performance.Event('trackuserlocationend'));\n                }\n            });\n        }\n    };\n    GeolocateControl.prototype.trigger = function trigger() {\n        if (!this._setup) {\n            performance.warnOnce('Geolocate control triggered before added to a map');\n            return false;\n        }\n        if (this.options.trackUserLocation) {\n            switch (this._watchState) {\n            case 'OFF':\n                this._watchState = 'WAITING_ACTIVE';\n                this.fire(new performance.Event('trackuserlocationstart'));\n                break;\n            case 'WAITING_ACTIVE':\n            case 'ACTIVE_LOCK':\n            case 'ACTIVE_ERROR':\n            case 'BACKGROUND_ERROR':\n                numberOfWatches--;\n                noTimeout = false;\n                this._watchState = 'OFF';\n                this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-waiting');\n                this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n                this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active-error');\n                this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background');\n                this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background-error');\n                this.fire(new performance.Event('trackuserlocationend'));\n                break;\n            case 'BACKGROUND':\n                this._watchState = 'ACTIVE_LOCK';\n                this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background');\n                if (this._lastKnownPosition) {\n                    this._updateCamera(this._lastKnownPosition);\n                }\n                this.fire(new performance.Event('trackuserlocationstart'));\n                break;\n            }\n            switch (this._watchState) {\n            case 'WAITING_ACTIVE':\n                this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n                this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active');\n                break;\n            case 'ACTIVE_LOCK':\n                this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active');\n                break;\n            case 'ACTIVE_ERROR':\n                this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n                this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active-error');\n                break;\n            case 'BACKGROUND':\n                this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background');\n                break;\n            case 'BACKGROUND_ERROR':\n                this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n                this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background-error');\n                break;\n            }\n            if (this._watchState === 'OFF' && this._geolocationWatchID !== undefined) {\n                this._clearWatch();\n            } else if (this._geolocationWatchID === undefined) {\n                this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n                this._geolocateButton.setAttribute('aria-pressed', 'true');\n                numberOfWatches++;\n                var positionOptions;\n                if (numberOfWatches > 1) {\n                    positionOptions = {\n                        maximumAge: 600000,\n                        timeout: 0\n                    };\n                    noTimeout = true;\n                } else {\n                    positionOptions = this.options.positionOptions;\n                    noTimeout = false;\n                }\n                this._geolocationWatchID = performance.window.navigator.geolocation.watchPosition(this._onSuccess, this._onError, positionOptions);\n            }\n        } else {\n            performance.window.navigator.geolocation.getCurrentPosition(this._onSuccess, this._onError, this.options.positionOptions);\n            this._timeoutId = setTimeout(this._finish, 10000);\n        }\n        return true;\n    };\n    GeolocateControl.prototype._clearWatch = function _clearWatch() {\n        performance.window.navigator.geolocation.clearWatch(this._geolocationWatchID);\n        this._geolocationWatchID = undefined;\n        this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-waiting');\n        this._geolocateButton.setAttribute('aria-pressed', 'false');\n        if (this.options.showUserLocation) {\n            this._updateMarker(null);\n        }\n    };\n    return GeolocateControl;\n}(performance.Evented);\n\nvar defaultOptions$4 = {\n    maxWidth: 100,\n    unit: 'metric'\n};\nvar ScaleControl = function ScaleControl(options) {\n    this.options = performance.extend({}, defaultOptions$4, options);\n    performance.bindAll([\n        '_onMove',\n        'setUnit'\n    ], this);\n};\nScaleControl.prototype.getDefaultPosition = function getDefaultPosition() {\n    return 'bottom-left';\n};\nScaleControl.prototype._onMove = function _onMove() {\n    updateScale(this._map, this._container, this.options);\n};\nScaleControl.prototype.onAdd = function onAdd(map) {\n    this._map = map;\n    this._container = DOM.create('div', 'mapboxgl-ctrl mapboxgl-ctrl-scale', map.getContainer());\n    this._map.on('move', this._onMove);\n    this._onMove();\n    return this._container;\n};\nScaleControl.prototype.onRemove = function onRemove() {\n    DOM.remove(this._container);\n    this._map.off('move', this._onMove);\n    this._map = undefined;\n};\nScaleControl.prototype.setUnit = function setUnit(unit) {\n    this.options.unit = unit;\n    updateScale(this._map, this._container, this.options);\n};\nfunction updateScale(map, container, options) {\n    var maxWidth = options && options.maxWidth || 100;\n    var y = map._container.clientHeight / 2;\n    var left = map.unproject([\n        0,\n        y\n    ]);\n    var right = map.unproject([\n        maxWidth,\n        y\n    ]);\n    var maxMeters = left.distanceTo(right);\n    if (options && options.unit === 'imperial') {\n        var maxFeet = 3.2808 * maxMeters;\n        if (maxFeet > 5280) {\n            var maxMiles = maxFeet / 5280;\n            setScale(container, maxWidth, maxMiles, map._getUIString('ScaleControl.Miles'));\n        } else {\n            setScale(container, maxWidth, maxFeet, map._getUIString('ScaleControl.Feet'));\n        }\n    } else if (options && options.unit === 'nautical') {\n        var maxNauticals = maxMeters / 1852;\n        setScale(container, maxWidth, maxNauticals, map._getUIString('ScaleControl.NauticalMiles'));\n    } else if (maxMeters >= 1000) {\n        setScale(container, maxWidth, maxMeters / 1000, map._getUIString('ScaleControl.Kilometers'));\n    } else {\n        setScale(container, maxWidth, maxMeters, map._getUIString('ScaleControl.Meters'));\n    }\n}\nfunction setScale(container, maxWidth, maxDistance, unit) {\n    var distance = getRoundNum(maxDistance);\n    var ratio = distance / maxDistance;\n    container.style.width = maxWidth * ratio + 'px';\n    container.innerHTML = distance + '&nbsp;' + unit;\n}\nfunction getDecimalRoundNum(d) {\n    var multiplier = Math.pow(10, Math.ceil(-Math.log(d) / Math.LN10));\n    return Math.round(d * multiplier) / multiplier;\n}\nfunction getRoundNum(num) {\n    var pow10 = Math.pow(10, ('' + Math.floor(num)).length - 1);\n    var d = num / pow10;\n    d = d >= 10 ? 10 : d >= 5 ? 5 : d >= 3 ? 3 : d >= 2 ? 2 : d >= 1 ? 1 : getDecimalRoundNum(d);\n    return pow10 * d;\n}\n\nvar FullscreenControl = function FullscreenControl(options) {\n    this._fullscreen = false;\n    if (options && options.container) {\n        if (options.container instanceof performance.window.HTMLElement) {\n            this._container = options.container;\n        } else {\n            performance.warnOnce('Full screen control \\'container\\' must be a DOM element.');\n        }\n    }\n    performance.bindAll([\n        '_onClickFullscreen',\n        '_changeIcon'\n    ], this);\n    if ('onfullscreenchange' in performance.window.document) {\n        this._fullscreenchange = 'fullscreenchange';\n    } else if ('onmozfullscreenchange' in performance.window.document) {\n        this._fullscreenchange = 'mozfullscreenchange';\n    } else if ('onwebkitfullscreenchange' in performance.window.document) {\n        this._fullscreenchange = 'webkitfullscreenchange';\n    } else if ('onmsfullscreenchange' in performance.window.document) {\n        this._fullscreenchange = 'MSFullscreenChange';\n    }\n};\nFullscreenControl.prototype.onAdd = function onAdd(map) {\n    this._map = map;\n    if (!this._container) {\n        this._container = this._map.getContainer();\n    }\n    this._controlContainer = DOM.create('div', 'mapboxgl-ctrl mapboxgl-ctrl-group');\n    if (this._checkFullscreenSupport()) {\n        this._setupUI();\n    } else {\n        this._controlContainer.style.display = 'none';\n        performance.warnOnce('This device does not support fullscreen mode.');\n    }\n    return this._controlContainer;\n};\nFullscreenControl.prototype.onRemove = function onRemove() {\n    DOM.remove(this._controlContainer);\n    this._map = null;\n    performance.window.document.removeEventListener(this._fullscreenchange, this._changeIcon);\n};\nFullscreenControl.prototype._checkFullscreenSupport = function _checkFullscreenSupport() {\n    return !!(performance.window.document.fullscreenEnabled || performance.window.document.mozFullScreenEnabled || performance.window.document.msFullscreenEnabled || performance.window.document.webkitFullscreenEnabled);\n};\nFullscreenControl.prototype._setupUI = function _setupUI() {\n    var button = this._fullscreenButton = DOM.create('button', 'mapboxgl-ctrl-fullscreen', this._controlContainer);\n    DOM.create('span', 'mapboxgl-ctrl-icon', button).setAttribute('aria-hidden', true);\n    button.type = 'button';\n    this._updateTitle();\n    this._fullscreenButton.addEventListener('click', this._onClickFullscreen);\n    performance.window.document.addEventListener(this._fullscreenchange, this._changeIcon);\n};\nFullscreenControl.prototype._updateTitle = function _updateTitle() {\n    var title = this._getTitle();\n    this._fullscreenButton.setAttribute('aria-label', title);\n    this._fullscreenButton.title = title;\n};\nFullscreenControl.prototype._getTitle = function _getTitle() {\n    return this._map._getUIString(this._isFullscreen() ? 'FullscreenControl.Exit' : 'FullscreenControl.Enter');\n};\nFullscreenControl.prototype._isFullscreen = function _isFullscreen() {\n    return this._fullscreen;\n};\nFullscreenControl.prototype._changeIcon = function _changeIcon() {\n    var fullscreenElement = performance.window.document.fullscreenElement || performance.window.document.mozFullScreenElement || performance.window.document.webkitFullscreenElement || performance.window.document.msFullscreenElement;\n    if (fullscreenElement === this._container !== this._fullscreen) {\n        this._fullscreen = !this._fullscreen;\n        this._fullscreenButton.classList.toggle('mapboxgl-ctrl-shrink');\n        this._fullscreenButton.classList.toggle('mapboxgl-ctrl-fullscreen');\n        this._updateTitle();\n    }\n};\nFullscreenControl.prototype._onClickFullscreen = function _onClickFullscreen() {\n    if (this._isFullscreen()) {\n        if (performance.window.document.exitFullscreen) {\n            performance.window.document.exitFullscreen();\n        } else if (performance.window.document.mozCancelFullScreen) {\n            performance.window.document.mozCancelFullScreen();\n        } else if (performance.window.document.msExitFullscreen) {\n            performance.window.document.msExitFullscreen();\n        } else if (performance.window.document.webkitCancelFullScreen) {\n            performance.window.document.webkitCancelFullScreen();\n        }\n    } else if (this._container.requestFullscreen) {\n        this._container.requestFullscreen();\n    } else if (this._container.mozRequestFullScreen) {\n        this._container.mozRequestFullScreen();\n    } else if (this._container.msRequestFullscreen) {\n        this._container.msRequestFullscreen();\n    } else if (this._container.webkitRequestFullscreen) {\n        this._container.webkitRequestFullscreen();\n    }\n};\n\nvar defaultOptions$5 = {\n    closeButton: true,\n    closeOnClick: true,\n    className: '',\n    maxWidth: '240px'\n};\nvar Popup = function (Evented) {\n    function Popup(options) {\n        Evented.call(this);\n        this.options = performance.extend(Object.create(defaultOptions$5), options);\n        performance.bindAll([\n            '_update',\n            '_onClose',\n            'remove',\n            '_onMouseMove',\n            '_onMouseUp',\n            '_onDrag'\n        ], this);\n    }\n    if (Evented)\n        Popup.__proto__ = Evented;\n    Popup.prototype = Object.create(Evented && Evented.prototype);\n    Popup.prototype.constructor = Popup;\n    Popup.prototype.addTo = function addTo(map) {\n        if (this._map) {\n            this.remove();\n        }\n        this._map = map;\n        if (this.options.closeOnClick) {\n            this._map.on('click', this._onClose);\n        }\n        if (this.options.closeOnMove) {\n            this._map.on('move', this._onClose);\n        }\n        this._map.on('remove', this.remove);\n        this._update();\n        if (this._trackPointer) {\n            this._map.on('mousemove', this._onMouseMove);\n            this._map.on('mouseup', this._onMouseUp);\n            if (this._container) {\n                this._container.classList.add('mapboxgl-popup-track-pointer');\n            }\n            this._map._canvasContainer.classList.add('mapboxgl-track-pointer');\n        } else {\n            this._map.on('move', this._update);\n        }\n        this.fire(new performance.Event('open'));\n        return this;\n    };\n    Popup.prototype.isOpen = function isOpen() {\n        return !!this._map;\n    };\n    Popup.prototype.remove = function remove() {\n        if (this._content) {\n            DOM.remove(this._content);\n        }\n        if (this._container) {\n            DOM.remove(this._container);\n            delete this._container;\n        }\n        if (this._map) {\n            this._map.off('move', this._update);\n            this._map.off('move', this._onClose);\n            this._map.off('click', this._onClose);\n            this._map.off('remove', this.remove);\n            this._map.off('mousemove', this._onMouseMove);\n            this._map.off('mouseup', this._onMouseUp);\n            this._map.off('drag', this._onDrag);\n            delete this._map;\n        }\n        this.fire(new performance.Event('close'));\n        return this;\n    };\n    Popup.prototype.getLngLat = function getLngLat() {\n        return this._lngLat;\n    };\n    Popup.prototype.setLngLat = function setLngLat(lnglat) {\n        this._lngLat = performance.LngLat.convert(lnglat);\n        this._pos = null;\n        this._trackPointer = false;\n        this._update();\n        if (this._map) {\n            this._map.on('move', this._update);\n            this._map.off('mousemove', this._onMouseMove);\n            if (this._container) {\n                this._container.classList.remove('mapboxgl-popup-track-pointer');\n            }\n            this._map._canvasContainer.classList.remove('mapboxgl-track-pointer');\n        }\n        return this;\n    };\n    Popup.prototype.trackPointer = function trackPointer() {\n        this._trackPointer = true;\n        this._pos = null;\n        this._update();\n        if (this._map) {\n            this._map.off('move', this._update);\n            this._map.on('mousemove', this._onMouseMove);\n            this._map.on('drag', this._onDrag);\n            if (this._container) {\n                this._container.classList.add('mapboxgl-popup-track-pointer');\n            }\n            this._map._canvasContainer.classList.add('mapboxgl-track-pointer');\n        }\n        return this;\n    };\n    Popup.prototype.getElement = function getElement() {\n        return this._container;\n    };\n    Popup.prototype.setText = function setText(text) {\n        return this.setDOMContent(performance.window.document.createTextNode(text));\n    };\n    Popup.prototype.setHTML = function setHTML(html) {\n        var frag = performance.window.document.createDocumentFragment();\n        var temp = performance.window.document.createElement('body');\n        var child;\n        temp.innerHTML = html;\n        while (true) {\n            child = temp.firstChild;\n            if (!child) {\n                break;\n            }\n            frag.appendChild(child);\n        }\n        return this.setDOMContent(frag);\n    };\n    Popup.prototype.getMaxWidth = function getMaxWidth() {\n        return this._container && this._container.style.maxWidth;\n    };\n    Popup.prototype.setMaxWidth = function setMaxWidth(maxWidth) {\n        this.options.maxWidth = maxWidth;\n        this._update();\n        return this;\n    };\n    Popup.prototype.setDOMContent = function setDOMContent(htmlNode) {\n        this._createContent();\n        this._content.appendChild(htmlNode);\n        this._update();\n        return this;\n    };\n    Popup.prototype.addClassName = function addClassName(className) {\n        if (this._container) {\n            this._container.classList.add(className);\n        }\n    };\n    Popup.prototype.removeClassName = function removeClassName(className) {\n        if (this._container) {\n            this._container.classList.remove(className);\n        }\n    };\n    Popup.prototype.toggleClassName = function toggleClassName(className) {\n        if (this._container) {\n            return this._container.classList.toggle(className);\n        }\n    };\n    Popup.prototype._createContent = function _createContent() {\n        if (this._content) {\n            DOM.remove(this._content);\n        }\n        this._content = DOM.create('div', 'mapboxgl-popup-content', this._container);\n        if (this.options.closeButton) {\n            this._closeButton = DOM.create('button', 'mapboxgl-popup-close-button', this._content);\n            this._closeButton.type = 'button';\n            this._closeButton.setAttribute('aria-label', 'Close popup');\n            this._closeButton.innerHTML = '&#215;';\n            this._closeButton.addEventListener('click', this._onClose);\n        }\n    };\n    Popup.prototype._onMouseUp = function _onMouseUp(event) {\n        this._update(event.point);\n    };\n    Popup.prototype._onMouseMove = function _onMouseMove(event) {\n        this._update(event.point);\n    };\n    Popup.prototype._onDrag = function _onDrag(event) {\n        this._update(event.point);\n    };\n    Popup.prototype._update = function _update(cursor) {\n        var this$1 = this;\n        var hasPosition = this._lngLat || this._trackPointer;\n        if (!this._map || !hasPosition || !this._content) {\n            return;\n        }\n        if (!this._container) {\n            this._container = DOM.create('div', 'mapboxgl-popup', this._map.getContainer());\n            this._tip = DOM.create('div', 'mapboxgl-popup-tip', this._container);\n            this._container.appendChild(this._content);\n            if (this.options.className) {\n                this.options.className.split(' ').forEach(function (name) {\n                    return this$1._container.classList.add(name);\n                });\n            }\n            if (this._trackPointer) {\n                this._container.classList.add('mapboxgl-popup-track-pointer');\n            }\n        }\n        if (this.options.maxWidth && this._container.style.maxWidth !== this.options.maxWidth) {\n            this._container.style.maxWidth = this.options.maxWidth;\n        }\n        if (this._map.transform.renderWorldCopies && !this._trackPointer) {\n            this._lngLat = smartWrap(this._lngLat, this._pos, this._map.transform);\n        }\n        if (this._trackPointer && !cursor) {\n            return;\n        }\n        var pos = this._pos = this._trackPointer && cursor ? cursor : this._map.project(this._lngLat);\n        var anchor = this.options.anchor;\n        var offset = normalizeOffset(this.options.offset);\n        if (!anchor) {\n            var width = this._container.offsetWidth;\n            var height = this._container.offsetHeight;\n            var anchorComponents;\n            if (pos.y + offset.bottom.y < height) {\n                anchorComponents = ['top'];\n            } else if (pos.y > this._map.transform.height - height) {\n                anchorComponents = ['bottom'];\n            } else {\n                anchorComponents = [];\n            }\n            if (pos.x < width / 2) {\n                anchorComponents.push('left');\n            } else if (pos.x > this._map.transform.width - width / 2) {\n                anchorComponents.push('right');\n            }\n            if (anchorComponents.length === 0) {\n                anchor = 'bottom';\n            } else {\n                anchor = anchorComponents.join('-');\n            }\n        }\n        var offsetedPos = pos.add(offset[anchor]).round();\n        DOM.setTransform(this._container, anchorTranslate[anchor] + ' translate(' + offsetedPos.x + 'px,' + offsetedPos.y + 'px)');\n        applyAnchorClass(this._container, anchor, 'popup');\n    };\n    Popup.prototype._onClose = function _onClose() {\n        this.remove();\n    };\n    return Popup;\n}(performance.Evented);\nfunction normalizeOffset(offset) {\n    if (!offset) {\n        return normalizeOffset(new performance.Point(0, 0));\n    } else if (typeof offset === 'number') {\n        var cornerOffset = Math.round(Math.sqrt(0.5 * Math.pow(offset, 2)));\n        return {\n            'center': new performance.Point(0, 0),\n            'top': new performance.Point(0, offset),\n            'top-left': new performance.Point(cornerOffset, cornerOffset),\n            'top-right': new performance.Point(-cornerOffset, cornerOffset),\n            'bottom': new performance.Point(0, -offset),\n            'bottom-left': new performance.Point(cornerOffset, -cornerOffset),\n            'bottom-right': new performance.Point(-cornerOffset, -cornerOffset),\n            'left': new performance.Point(offset, 0),\n            'right': new performance.Point(-offset, 0)\n        };\n    } else if (offset instanceof performance.Point || Array.isArray(offset)) {\n        var convertedOffset = performance.Point.convert(offset);\n        return {\n            'center': convertedOffset,\n            'top': convertedOffset,\n            'top-left': convertedOffset,\n            'top-right': convertedOffset,\n            'bottom': convertedOffset,\n            'bottom-left': convertedOffset,\n            'bottom-right': convertedOffset,\n            'left': convertedOffset,\n            'right': convertedOffset\n        };\n    } else {\n        return {\n            'center': performance.Point.convert(offset['center'] || [\n                0,\n                0\n            ]),\n            'top': performance.Point.convert(offset['top'] || [\n                0,\n                0\n            ]),\n            'top-left': performance.Point.convert(offset['top-left'] || [\n                0,\n                0\n            ]),\n            'top-right': performance.Point.convert(offset['top-right'] || [\n                0,\n                0\n            ]),\n            'bottom': performance.Point.convert(offset['bottom'] || [\n                0,\n                0\n            ]),\n            'bottom-left': performance.Point.convert(offset['bottom-left'] || [\n                0,\n                0\n            ]),\n            'bottom-right': performance.Point.convert(offset['bottom-right'] || [\n                0,\n                0\n            ]),\n            'left': performance.Point.convert(offset['left'] || [\n                0,\n                0\n            ]),\n            'right': performance.Point.convert(offset['right'] || [\n                0,\n                0\n            ])\n        };\n    }\n}\n\nvar exported = {\n    version: performance.version,\n    supported: mapboxGlSupported,\n    setRTLTextPlugin: performance.setRTLTextPlugin,\n    getRTLTextPluginStatus: performance.getRTLTextPluginStatus,\n    Map: Map,\n    NavigationControl: NavigationControl,\n    GeolocateControl: GeolocateControl,\n    AttributionControl: AttributionControl,\n    ScaleControl: ScaleControl,\n    FullscreenControl: FullscreenControl,\n    Popup: Popup,\n    Marker: Marker,\n    Style: Style,\n    LngLat: performance.LngLat,\n    LngLatBounds: performance.LngLatBounds,\n    Point: performance.Point,\n    MercatorCoordinate: performance.MercatorCoordinate,\n    Evented: performance.Evented,\n    config: performance.config,\n    prewarm: prewarm,\n    clearPrewarmedResources: clearPrewarmedResources,\n    get accessToken() {\n        return performance.config.ACCESS_TOKEN;\n    },\n    set accessToken(token) {\n        performance.config.ACCESS_TOKEN = token;\n    },\n    get baseApiUrl() {\n        return performance.config.API_URL;\n    },\n    set baseApiUrl(url) {\n        performance.config.API_URL = url;\n    },\n    get workerCount() {\n        return WorkerPool.workerCount;\n    },\n    set workerCount(count) {\n        WorkerPool.workerCount = count;\n    },\n    get maxParallelImageRequests() {\n        return performance.config.MAX_PARALLEL_IMAGE_REQUESTS;\n    },\n    set maxParallelImageRequests(numRequests) {\n        performance.config.MAX_PARALLEL_IMAGE_REQUESTS = numRequests;\n    },\n    clearStorage: function clearStorage(callback) {\n        performance.clearTileCache(callback);\n    },\n    workerUrl: ''\n};\n\nreturn exported;\n\n});\n\n//\n\nreturn mapboxgl;\n\n})));\n//# sourceMappingURL=mapbox-gl-unminified.js.map\n\n\n/***/ }),\n\n/***/ 27084:\n/***/ (function(module) {\n\n\"use strict\";\n\nmodule.exports = Math.log2 || function (x) {\n\treturn Math.log(x) * Math.LOG2E;\n};\n\n\n/***/ }),\n\n/***/ 16825:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7522946__) {\n\n\"use strict\";\n\n\nmodule.exports = mouseListen\n\nvar mouse = __nested_webpack_require_7522946__(74311)\n\nfunction mouseListen (element, callback) {\n  if (!callback) {\n    callback = element\n    element = window\n  }\n\n  var buttonState = 0\n  var x = 0\n  var y = 0\n  var mods = {\n    shift: false,\n    alt: false,\n    control: false,\n    meta: false\n  }\n  var attached = false\n\n  function updateMods (ev) {\n    var changed = false\n    if ('altKey' in ev) {\n      changed = changed || ev.altKey !== mods.alt\n      mods.alt = !!ev.altKey\n    }\n    if ('shiftKey' in ev) {\n      changed = changed || ev.shiftKey !== mods.shift\n      mods.shift = !!ev.shiftKey\n    }\n    if ('ctrlKey' in ev) {\n      changed = changed || ev.ctrlKey !== mods.control\n      mods.control = !!ev.ctrlKey\n    }\n    if ('metaKey' in ev) {\n      changed = changed || ev.metaKey !== mods.meta\n      mods.meta = !!ev.metaKey\n    }\n    return changed\n  }\n\n  function handleEvent (nextButtons, ev) {\n    var nextX = mouse.x(ev)\n    var nextY = mouse.y(ev)\n    if ('buttons' in ev) {\n      nextButtons = ev.buttons | 0\n    }\n    if (nextButtons !== buttonState ||\n      nextX !== x ||\n      nextY !== y ||\n      updateMods(ev)) {\n      buttonState = nextButtons | 0\n      x = nextX || 0\n      y = nextY || 0\n      callback && callback(buttonState, x, y, mods)\n    }\n  }\n\n  function clearState (ev) {\n    handleEvent(0, ev)\n  }\n\n  function handleBlur () {\n    if (buttonState ||\n      x ||\n      y ||\n      mods.shift ||\n      mods.alt ||\n      mods.meta ||\n      mods.control) {\n      x = y = 0\n      buttonState = 0\n      mods.shift = mods.alt = mods.control = mods.meta = false\n      callback && callback(0, 0, 0, mods)\n    }\n  }\n\n  function handleMods (ev) {\n    if (updateMods(ev)) {\n      callback && callback(buttonState, x, y, mods)\n    }\n  }\n\n  function handleMouseMove (ev) {\n    if (mouse.buttons(ev) === 0) {\n      handleEvent(0, ev)\n    } else {\n      handleEvent(buttonState, ev)\n    }\n  }\n\n  function handleMouseDown (ev) {\n    handleEvent(buttonState | mouse.buttons(ev), ev)\n  }\n\n  function handleMouseUp (ev) {\n    handleEvent(buttonState & ~mouse.buttons(ev), ev)\n  }\n\n  function attachListeners () {\n    if (attached) {\n      return\n    }\n    attached = true\n\n    element.addEventListener('mousemove', handleMouseMove)\n\n    element.addEventListener('mousedown', handleMouseDown)\n\n    element.addEventListener('mouseup', handleMouseUp)\n\n    element.addEventListener('mouseleave', clearState)\n    element.addEventListener('mouseenter', clearState)\n    element.addEventListener('mouseout', clearState)\n    element.addEventListener('mouseover', clearState)\n\n    element.addEventListener('blur', handleBlur)\n\n    element.addEventListener('keyup', handleMods)\n    element.addEventListener('keydown', handleMods)\n    element.addEventListener('keypress', handleMods)\n\n    if (element !== window) {\n      window.addEventListener('blur', handleBlur)\n\n      window.addEventListener('keyup', handleMods)\n      window.addEventListener('keydown', handleMods)\n      window.addEventListener('keypress', handleMods)\n    }\n  }\n\n  function detachListeners () {\n    if (!attached) {\n      return\n    }\n    attached = false\n\n    element.removeEventListener('mousemove', handleMouseMove)\n\n    element.removeEventListener('mousedown', handleMouseDown)\n\n    element.removeEventListener('mouseup', handleMouseUp)\n\n    element.removeEventListener('mouseleave', clearState)\n    element.removeEventListener('mouseenter', clearState)\n    element.removeEventListener('mouseout', clearState)\n    element.removeEventListener('mouseover', clearState)\n\n    element.removeEventListener('blur', handleBlur)\n\n    element.removeEventListener('keyup', handleMods)\n    element.removeEventListener('keydown', handleMods)\n    element.removeEventListener('keypress', handleMods)\n\n    if (element !== window) {\n      window.removeEventListener('blur', handleBlur)\n\n      window.removeEventListener('keyup', handleMods)\n      window.removeEventListener('keydown', handleMods)\n      window.removeEventListener('keypress', handleMods)\n    }\n  }\n\n  // Attach listeners\n  attachListeners()\n\n  var result = {\n    element: element\n  }\n\n  Object.defineProperties(result, {\n    enabled: {\n      get: function () { return attached },\n      set: function (f) {\n        if (f) {\n          attachListeners()\n        } else {\n          detachListeners()\n        }\n      },\n      enumerable: true\n    },\n    buttons: {\n      get: function () { return buttonState },\n      enumerable: true\n    },\n    x: {\n      get: function () { return x },\n      enumerable: true\n    },\n    y: {\n      get: function () { return y },\n      enumerable: true\n    },\n    mods: {\n      get: function () { return mods },\n      enumerable: true\n    }\n  })\n\n  return result\n}\n\n\n/***/ }),\n\n/***/ 48956:\n/***/ (function(module) {\n\nvar rootPosition = { left: 0, top: 0 }\n\nmodule.exports = mouseEventOffset\nfunction mouseEventOffset (ev, target, out) {\n  target = target || ev.currentTarget || ev.srcElement\n  if (!Array.isArray(out)) {\n    out = [ 0, 0 ]\n  }\n  var cx = ev.clientX || 0\n  var cy = ev.clientY || 0\n  var rect = getBoundingClientOffset(target)\n  out[0] = cx - rect.left\n  out[1] = cy - rect.top\n  return out\n}\n\nfunction getBoundingClientOffset (element) {\n  if (element === window ||\n      element === document ||\n      element === document.body) {\n    return rootPosition\n  } else {\n    return element.getBoundingClientRect()\n  }\n}\n\n\n/***/ }),\n\n/***/ 74311:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\nfunction mouseButtons(ev) {\n  if(typeof ev === 'object') {\n    if('buttons' in ev) {\n      return ev.buttons\n    } else if('which' in ev) {\n      var b = ev.which\n      if(b === 2) {\n        return 4\n      } else if(b === 3) {\n        return 2\n      } else if(b > 0) {\n        return 1<<(b-1)\n      }\n    } else if('button' in ev) {\n      var b = ev.button\n      if(b === 1) {\n        return 4\n      } else if(b === 2) {\n        return 2\n      } else if(b >= 0) {\n        return 1<<b\n      }\n    }\n  }\n  return 0\n}\nexports.buttons = mouseButtons\n\nfunction mouseElement(ev) {\n  return ev.target || ev.srcElement || window\n}\nexports.element = mouseElement\n\nfunction mouseRelativeX(ev) {\n  if(typeof ev === 'object') {\n    if('offsetX' in ev) {\n      return ev.offsetX\n    }\n    var target = mouseElement(ev)\n    var bounds = target.getBoundingClientRect()\n    return ev.clientX - bounds.left\n  }\n  return 0\n}\nexports.x = mouseRelativeX\n\nfunction mouseRelativeY(ev) {\n  if(typeof ev === 'object') {\n    if('offsetY' in ev) {\n      return ev.offsetY\n    }\n    var target = mouseElement(ev)\n    var bounds = target.getBoundingClientRect()\n    return ev.clientY - bounds.top\n  }\n  return 0\n}\nexports.y = mouseRelativeY\n\n\n/***/ }),\n\n/***/ 1195:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7529779__) {\n\n\"use strict\";\n\n\nvar toPX = __nested_webpack_require_7529779__(75686)\n\nmodule.exports = mouseWheelListen\n\nfunction mouseWheelListen(element, callback, noScroll) {\n  if(typeof element === 'function') {\n    noScroll = !!callback\n    callback = element\n    element = window\n  }\n  var lineHeight = toPX('ex', element)\n  var listener = function(ev) {\n    if(noScroll) {\n      ev.preventDefault()\n    }\n    var dx = ev.deltaX || 0\n    var dy = ev.deltaY || 0\n    var dz = ev.deltaZ || 0\n    var mode = ev.deltaMode\n    var scale = 1\n    switch(mode) {\n      case 1:\n        scale = lineHeight\n      break\n      case 2:\n        scale = window.innerHeight\n      break\n    }\n    dx *= scale\n    dy *= scale\n    dz *= scale\n    if(dx || dy || dz) {\n      return callback(dx, dy, dz, ev)\n    }\n  }\n  element.addEventListener('wheel', listener)\n  return listener\n}\n\n\n/***/ }),\n\n/***/ 7417:\n/***/ (function(module, exports, __nested_webpack_require_7530698__) {\n\nvar __WEBPACK_AMD_DEFINE_RESULT__;/*! Native Promise Only\n    v0.8.1 (c) Kyle Simpson\n    MIT License: http://getify.mit-license.org\n*/\n\n(function UMD(name,context,definition){\n\t// special form of UMD for polyfilling across evironments\n\tcontext[name] = context[name] || definition();\n\tif (  true && module.exports) { module.exports = context[name]; }\n\telse if (true) { !(__WEBPACK_AMD_DEFINE_RESULT__ = (function $AMD$(){ return context[name]; }).call(exports, __nested_webpack_require_7530698__, exports, module),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); }\n})(\"Promise\",typeof __nested_webpack_require_7530698__.g != \"undefined\" ? __nested_webpack_require_7530698__.g : this,function DEF(){\n\t/*jshint validthis:true */\n\t\"use strict\";\n\n\tvar builtInProp, cycle, scheduling_queue,\n\t\tToString = Object.prototype.toString,\n\t\ttimer = (typeof setImmediate != \"undefined\") ?\n\t\t\tfunction timer(fn) { return setImmediate(fn); } :\n\t\t\tsetTimeout\n\t;\n\n\t// dammit, IE8.\n\ttry {\n\t\tObject.defineProperty({},\"x\",{});\n\t\tbuiltInProp = function builtInProp(obj,name,val,config) {\n\t\t\treturn Object.defineProperty(obj,name,{\n\t\t\t\tvalue: val,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: config !== false\n\t\t\t});\n\t\t};\n\t}\n\tcatch (err) {\n\t\tbuiltInProp = function builtInProp(obj,name,val) {\n\t\t\tobj[name] = val;\n\t\t\treturn obj;\n\t\t};\n\t}\n\n\t// Note: using a queue instead of array for efficiency\n\tscheduling_queue = (function Queue() {\n\t\tvar first, last, item;\n\n\t\tfunction Item(fn,self) {\n\t\t\tthis.fn = fn;\n\t\t\tthis.self = self;\n\t\t\tthis.next = void 0;\n\t\t}\n\n\t\treturn {\n\t\t\tadd: function add(fn,self) {\n\t\t\t\titem = new Item(fn,self);\n\t\t\t\tif (last) {\n\t\t\t\t\tlast.next = item;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tfirst = item;\n\t\t\t\t}\n\t\t\t\tlast = item;\n\t\t\t\titem = void 0;\n\t\t\t},\n\t\t\tdrain: function drain() {\n\t\t\t\tvar f = first;\n\t\t\t\tfirst = last = cycle = void 0;\n\n\t\t\t\twhile (f) {\n\t\t\t\t\tf.fn.call(f.self);\n\t\t\t\t\tf = f.next;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t})();\n\n\tfunction schedule(fn,self) {\n\t\tscheduling_queue.add(fn,self);\n\t\tif (!cycle) {\n\t\t\tcycle = timer(scheduling_queue.drain);\n\t\t}\n\t}\n\n\t// promise duck typing\n\tfunction isThenable(o) {\n\t\tvar _then, o_type = typeof o;\n\n\t\tif (o != null &&\n\t\t\t(\n\t\t\t\to_type == \"object\" || o_type == \"function\"\n\t\t\t)\n\t\t) {\n\t\t\t_then = o.then;\n\t\t}\n\t\treturn typeof _then == \"function\" ? _then : false;\n\t}\n\n\tfunction notify() {\n\t\tfor (var i=0; i<this.chain.length; i++) {\n\t\t\tnotifyIsolated(\n\t\t\t\tthis,\n\t\t\t\t(this.state === 1) ? this.chain[i].success : this.chain[i].failure,\n\t\t\t\tthis.chain[i]\n\t\t\t);\n\t\t}\n\t\tthis.chain.length = 0;\n\t}\n\n\t// NOTE: This is a separate function to isolate\n\t// the `try..catch` so that other code can be\n\t// optimized better\n\tfunction notifyIsolated(self,cb,chain) {\n\t\tvar ret, _then;\n\t\ttry {\n\t\t\tif (cb === false) {\n\t\t\t\tchain.reject(self.msg);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (cb === true) {\n\t\t\t\t\tret = self.msg;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tret = cb.call(void 0,self.msg);\n\t\t\t\t}\n\n\t\t\t\tif (ret === chain.promise) {\n\t\t\t\t\tchain.reject(TypeError(\"Promise-chain cycle\"));\n\t\t\t\t}\n\t\t\t\telse if (_then = isThenable(ret)) {\n\t\t\t\t\t_then.call(ret,chain.resolve,chain.reject);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tchain.resolve(ret);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\tchain.reject(err);\n\t\t}\n\t}\n\n\tfunction resolve(msg) {\n\t\tvar _then, self = this;\n\n\t\t// already triggered?\n\t\tif (self.triggered) { return; }\n\n\t\tself.triggered = true;\n\n\t\t// unwrap\n\t\tif (self.def) {\n\t\t\tself = self.def;\n\t\t}\n\n\t\ttry {\n\t\t\tif (_then = isThenable(msg)) {\n\t\t\t\tschedule(function(){\n\t\t\t\t\tvar def_wrapper = new MakeDefWrapper(self);\n\t\t\t\t\ttry {\n\t\t\t\t\t\t_then.call(msg,\n\t\t\t\t\t\t\tfunction $resolve$(){ resolve.apply(def_wrapper,arguments); },\n\t\t\t\t\t\t\tfunction $reject$(){ reject.apply(def_wrapper,arguments); }\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\treject.call(def_wrapper,err);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t\telse {\n\t\t\t\tself.msg = msg;\n\t\t\t\tself.state = 1;\n\t\t\t\tif (self.chain.length > 0) {\n\t\t\t\t\tschedule(notify,self);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\treject.call(new MakeDefWrapper(self),err);\n\t\t}\n\t}\n\n\tfunction reject(msg) {\n\t\tvar self = this;\n\n\t\t// already triggered?\n\t\tif (self.triggered) { return; }\n\n\t\tself.triggered = true;\n\n\t\t// unwrap\n\t\tif (self.def) {\n\t\t\tself = self.def;\n\t\t}\n\n\t\tself.msg = msg;\n\t\tself.state = 2;\n\t\tif (self.chain.length > 0) {\n\t\t\tschedule(notify,self);\n\t\t}\n\t}\n\n\tfunction iteratePromises(Constructor,arr,resolver,rejecter) {\n\t\tfor (var idx=0; idx<arr.length; idx++) {\n\t\t\t(function IIFE(idx){\n\t\t\t\tConstructor.resolve(arr[idx])\n\t\t\t\t.then(\n\t\t\t\t\tfunction $resolver$(msg){\n\t\t\t\t\t\tresolver(idx,msg);\n\t\t\t\t\t},\n\t\t\t\t\trejecter\n\t\t\t\t);\n\t\t\t})(idx);\n\t\t}\n\t}\n\n\tfunction MakeDefWrapper(self) {\n\t\tthis.def = self;\n\t\tthis.triggered = false;\n\t}\n\n\tfunction MakeDef(self) {\n\t\tthis.promise = self;\n\t\tthis.state = 0;\n\t\tthis.triggered = false;\n\t\tthis.chain = [];\n\t\tthis.msg = void 0;\n\t}\n\n\tfunction Promise(executor) {\n\t\tif (typeof executor != \"function\") {\n\t\t\tthrow TypeError(\"Not a function\");\n\t\t}\n\n\t\tif (this.__NPO__ !== 0) {\n\t\t\tthrow TypeError(\"Not a promise\");\n\t\t}\n\n\t\t// instance shadowing the inherited \"brand\"\n\t\t// to signal an already \"initialized\" promise\n\t\tthis.__NPO__ = 1;\n\n\t\tvar def = new MakeDef(this);\n\n\t\tthis[\"then\"] = function then(success,failure) {\n\t\t\tvar o = {\n\t\t\t\tsuccess: typeof success == \"function\" ? success : true,\n\t\t\t\tfailure: typeof failure == \"function\" ? failure : false\n\t\t\t};\n\t\t\t// Note: `then(..)` itself can be borrowed to be used against\n\t\t\t// a different promise constructor for making the chained promise,\n\t\t\t// by substituting a different `this` binding.\n\t\t\to.promise = new this.constructor(function extractChain(resolve,reject) {\n\t\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t\t}\n\n\t\t\t\to.resolve = resolve;\n\t\t\t\to.reject = reject;\n\t\t\t});\n\t\t\tdef.chain.push(o);\n\n\t\t\tif (def.state !== 0) {\n\t\t\t\tschedule(notify,def);\n\t\t\t}\n\n\t\t\treturn o.promise;\n\t\t};\n\t\tthis[\"catch\"] = function $catch$(failure) {\n\t\t\treturn this.then(void 0,failure);\n\t\t};\n\n\t\ttry {\n\t\t\texecutor.call(\n\t\t\t\tvoid 0,\n\t\t\t\tfunction publicResolve(msg){\n\t\t\t\t\tresolve.call(def,msg);\n\t\t\t\t},\n\t\t\t\tfunction publicReject(msg) {\n\t\t\t\t\treject.call(def,msg);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tcatch (err) {\n\t\t\treject.call(def,err);\n\t\t}\n\t}\n\n\tvar PromisePrototype = builtInProp({},\"constructor\",Promise,\n\t\t/*configurable=*/false\n\t);\n\n\t// Note: Android 4 cannot use `Object.defineProperty(..)` here\n\tPromise.prototype = PromisePrototype;\n\n\t// built-in \"brand\" to signal an \"uninitialized\" promise\n\tbuiltInProp(PromisePrototype,\"__NPO__\",0,\n\t\t/*configurable=*/false\n\t);\n\n\tbuiltInProp(Promise,\"resolve\",function Promise$resolve(msg) {\n\t\tvar Constructor = this;\n\n\t\t// spec mandated checks\n\t\t// note: best \"isPromise\" check that's practical for now\n\t\tif (msg && typeof msg == \"object\" && msg.__NPO__ === 1) {\n\t\t\treturn msg;\n\t\t}\n\n\t\treturn new Constructor(function executor(resolve,reject){\n\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t}\n\n\t\t\tresolve(msg);\n\t\t});\n\t});\n\n\tbuiltInProp(Promise,\"reject\",function Promise$reject(msg) {\n\t\treturn new this(function executor(resolve,reject){\n\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t}\n\n\t\t\treject(msg);\n\t\t});\n\t});\n\n\tbuiltInProp(Promise,\"all\",function Promise$all(arr) {\n\t\tvar Constructor = this;\n\n\t\t// spec mandated checks\n\t\tif (ToString.call(arr) != \"[object Array]\") {\n\t\t\treturn Constructor.reject(TypeError(\"Not an array\"));\n\t\t}\n\t\tif (arr.length === 0) {\n\t\t\treturn Constructor.resolve([]);\n\t\t}\n\n\t\treturn new Constructor(function executor(resolve,reject){\n\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t}\n\n\t\t\tvar len = arr.length, msgs = Array(len), count = 0;\n\n\t\t\titeratePromises(Constructor,arr,function resolver(idx,msg) {\n\t\t\t\tmsgs[idx] = msg;\n\t\t\t\tif (++count === len) {\n\t\t\t\t\tresolve(msgs);\n\t\t\t\t}\n\t\t\t},reject);\n\t\t});\n\t});\n\n\tbuiltInProp(Promise,\"race\",function Promise$race(arr) {\n\t\tvar Constructor = this;\n\n\t\t// spec mandated checks\n\t\tif (ToString.call(arr) != \"[object Array]\") {\n\t\t\treturn Constructor.reject(TypeError(\"Not an array\"));\n\t\t}\n\n\t\treturn new Constructor(function executor(resolve,reject){\n\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t}\n\n\t\t\titeratePromises(Constructor,arr,function resolver(idx,msg){\n\t\t\t\tresolve(msg);\n\t\t\t},reject);\n\t\t});\n\t});\n\n\treturn Promise;\n});\n\n\n/***/ }),\n\n/***/ 18625:\n/***/ (function(module) {\n\n\nvar π = Math.PI\nvar _120 = radians(120)\n\nmodule.exports = normalize\n\n/**\n * describe `path` in terms of cubic bézier \n * curves and move commands\n *\n * @param {Array} path\n * @return {Array}\n */\n\nfunction normalize(path){\n\t// init state\n\tvar prev\n\tvar result = []\n\tvar bezierX = 0\n\tvar bezierY = 0\n\tvar startX = 0\n\tvar startY = 0\n\tvar quadX = null\n\tvar quadY = null\n\tvar x = 0\n\tvar y = 0\n\n\tfor (var i = 0, len = path.length; i < len; i++) {\n\t\tvar seg = path[i]\n\t\tvar command = seg[0]\n\t\tswitch (command) {\n\t\t\tcase 'M':\n\t\t\t\tstartX = seg[1]\n\t\t\t\tstartY = seg[2]\n\t\t\t\tbreak\n\t\t\tcase 'A':\n\t\t\t\tseg = arc(x, y,seg[1],seg[2],radians(seg[3]),seg[4],seg[5],seg[6],seg[7])\n\t\t\t\t// split multi part\n\t\t\t\tseg.unshift('C')\n\t\t\t\tif (seg.length > 7) {\n\t\t\t\t\tresult.push(seg.splice(0, 7))\n\t\t\t\t\tseg.unshift('C')\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'S':\n\t\t\t\t// default control point\n\t\t\t\tvar cx = x\n\t\t\t\tvar cy = y\n\t\t\t\tif (prev == 'C' || prev == 'S') {\n\t\t\t\t\tcx += cx - bezierX // reflect the previous command's control\n\t\t\t\t\tcy += cy - bezierY // point relative to the current point\n\t\t\t\t}\n\t\t\t\tseg = ['C', cx, cy, seg[1], seg[2], seg[3], seg[4]]\n\t\t\t\tbreak\n\t\t\tcase 'T':\n\t\t\t\tif (prev == 'Q' || prev == 'T') {\n\t\t\t\t\tquadX = x * 2 - quadX // as with 'S' reflect previous control point\n\t\t\t\t\tquadY = y * 2 - quadY\n\t\t\t\t} else {\n\t\t\t\t\tquadX = x\n\t\t\t\t\tquadY = y\n\t\t\t\t}\n\t\t\t\tseg = quadratic(x, y, quadX, quadY, seg[1], seg[2])\n\t\t\t\tbreak\n\t\t\tcase 'Q':\n\t\t\t\tquadX = seg[1]\n\t\t\t\tquadY = seg[2]\n\t\t\t\tseg = quadratic(x, y, seg[1], seg[2], seg[3], seg[4])\n\t\t\t\tbreak\n\t\t\tcase 'L':\n\t\t\t\tseg = line(x, y, seg[1], seg[2])\n\t\t\t\tbreak\n\t\t\tcase 'H':\n\t\t\t\tseg = line(x, y, seg[1], y)\n\t\t\t\tbreak\n\t\t\tcase 'V':\n\t\t\t\tseg = line(x, y, x, seg[1])\n\t\t\t\tbreak\n\t\t\tcase 'Z':\n\t\t\t\tseg = line(x, y, startX, startY)\n\t\t\t\tbreak\n\t\t}\n\n\t\t// update state\n\t\tprev = command\n\t\tx = seg[seg.length - 2]\n\t\ty = seg[seg.length - 1]\n\t\tif (seg.length > 4) {\n\t\t\tbezierX = seg[seg.length - 4]\n\t\t\tbezierY = seg[seg.length - 3]\n\t\t} else {\n\t\t\tbezierX = x\n\t\t\tbezierY = y\n\t\t}\n\t\tresult.push(seg)\n\t}\n\n\treturn result\n}\n\nfunction line(x1, y1, x2, y2){\n\treturn ['C', x1, y1, x2, y2, x2, y2]\n}\n\nfunction quadratic(x1, y1, cx, cy, x2, y2){\n\treturn [\n\t\t'C',\n\t\tx1/3 + (2/3) * cx,\n\t\ty1/3 + (2/3) * cy,\n\t\tx2/3 + (2/3) * cx,\n\t\ty2/3 + (2/3) * cy,\n\t\tx2,\n\t\ty2\n\t]\n}\n\n// This function is ripped from \n// github.com/DmitryBaranovskiy/raphael/blob/4d97d4/raphael.js#L2216-L2304 \n// which references w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n// TODO: make it human readable\n\nfunction arc(x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {\n\tif (!recursive) {\n\t\tvar xy = rotate(x1, y1, -angle)\n\t\tx1 = xy.x\n\t\ty1 = xy.y\n\t\txy = rotate(x2, y2, -angle)\n\t\tx2 = xy.x\n\t\ty2 = xy.y\n\t\tvar x = (x1 - x2) / 2\n\t\tvar y = (y1 - y2) / 2\n\t\tvar h = (x * x) / (rx * rx) + (y * y) / (ry * ry)\n\t\tif (h > 1) {\n\t\t\th = Math.sqrt(h)\n\t\t\trx = h * rx\n\t\t\try = h * ry\n\t\t}\n\t\tvar rx2 = rx * rx\n\t\tvar ry2 = ry * ry\n\t\tvar k = (large_arc_flag == sweep_flag ? -1 : 1)\n\t\t\t* Math.sqrt(Math.abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x)))\n\t\tif (k == Infinity) k = 1 // neutralize\n\t\tvar cx = k * rx * y / ry + (x1 + x2) / 2\n\t\tvar cy = k * -ry * x / rx + (y1 + y2) / 2\n\t\tvar f1 = Math.asin(((y1 - cy) / ry).toFixed(9))\n\t\tvar f2 = Math.asin(((y2 - cy) / ry).toFixed(9))\n\n\t\tf1 = x1 < cx ? π - f1 : f1\n\t\tf2 = x2 < cx ? π - f2 : f2\n\t\tif (f1 < 0) f1 = π * 2 + f1\n\t\tif (f2 < 0) f2 = π * 2 + f2\n\t\tif (sweep_flag && f1 > f2) f1 = f1 - π * 2\n\t\tif (!sweep_flag && f2 > f1) f2 = f2 - π * 2\n\t} else {\n\t\tf1 = recursive[0]\n\t\tf2 = recursive[1]\n\t\tcx = recursive[2]\n\t\tcy = recursive[3]\n\t}\n\t// greater than 120 degrees requires multiple segments\n\tif (Math.abs(f2 - f1) > _120) {\n\t\tvar f2old = f2\n\t\tvar x2old = x2\n\t\tvar y2old = y2\n\t\tf2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1)\n\t\tx2 = cx + rx * Math.cos(f2)\n\t\ty2 = cy + ry * Math.sin(f2)\n\t\tvar res = arc(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy])\n\t}\n\tvar t = Math.tan((f2 - f1) / 4)\n\tvar hx = 4 / 3 * rx * t\n\tvar hy = 4 / 3 * ry * t\n\tvar curve = [\n\t\t2 * x1 - (x1 + hx * Math.sin(f1)),\n\t\t2 * y1 - (y1 - hy * Math.cos(f1)),\n\t\tx2 + hx * Math.sin(f2),\n\t\ty2 - hy * Math.cos(f2),\n\t\tx2,\n\t\ty2\n\t]\n\tif (recursive) return curve\n\tif (res) curve = curve.concat(res)\n\tfor (var i = 0; i < curve.length;) {\n\t\tvar rot = rotate(curve[i], curve[i+1], angle)\n\t\tcurve[i++] = rot.x\n\t\tcurve[i++] = rot.y\n\t}\n\treturn curve\n}\n\nfunction rotate(x, y, rad){\n\treturn {\n\t\tx: x * Math.cos(rad) - y * Math.sin(rad),\n\t\ty: x * Math.sin(rad) + y * Math.cos(rad)\n\t}\n}\n\nfunction radians(degress){\n\treturn degress * (π / 180)\n}\n\n\n/***/ }),\n\n/***/ 56131:\n/***/ (function(module) {\n\n\"use strict\";\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n/***/ }),\n\n/***/ 65848:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n\n\n/***/ }),\n\n/***/ 64003:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7546182__) {\n\n\"use strict\";\n\n\nvar define = __nested_webpack_require_7546182__(17045);\nvar callBind = __nested_webpack_require_7546182__(68222);\n\nvar implementation = __nested_webpack_require_7546182__(65848);\nvar getPolyfill = __nested_webpack_require_7546182__(27015);\nvar shim = __nested_webpack_require_7546182__(55572);\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n\n\n/***/ }),\n\n/***/ 27015:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7546690__) {\n\n\"use strict\";\n\n\nvar implementation = __nested_webpack_require_7546690__(65848);\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n\n\n/***/ }),\n\n/***/ 55572:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7546971__) {\n\n\"use strict\";\n\n\nvar getPolyfill = __nested_webpack_require_7546971__(27015);\nvar define = __nested_webpack_require_7546971__(17045);\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n\n\n/***/ }),\n\n/***/ 99019:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7547381__) {\n\n\"use strict\";\n\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = __nested_webpack_require_7547381__(64178); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n\n\n/***/ }),\n\n/***/ 8709:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7550701__) {\n\n\"use strict\";\n\n\nvar slice = Array.prototype.slice;\nvar isArgs = __nested_webpack_require_7550701__(64178);\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : __nested_webpack_require_7550701__(99019);\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n\n\n/***/ }),\n\n/***/ 64178:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n\n\n/***/ }),\n\n/***/ 88641:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/**\n * @module parenthesis\n */\n\nfunction parse (str, opts) {\n\t// pretend non-string parsed per-se\n\tif (typeof str !== 'string') return [str]\n\n\tvar res = [str]\n\n\tif (typeof opts === 'string' || Array.isArray(opts)) {\n\t\topts = {brackets: opts}\n\t}\n\telse if (!opts) opts = {}\n\n\tvar brackets = opts.brackets ? (Array.isArray(opts.brackets) ? opts.brackets : [opts.brackets]) : ['{}', '[]', '()']\n\n\tvar escape = opts.escape || '___'\n\n\tvar flat = !!opts.flat\n\n\tbrackets.forEach(function (bracket) {\n\t\t// create parenthesis regex\n\t\tvar pRE = new RegExp(['\\\\', bracket[0], '[^\\\\', bracket[0], '\\\\', bracket[1], ']*\\\\', bracket[1]].join(''))\n\n\t\tvar ids = []\n\n\t\tfunction replaceToken(token, idx, str){\n\t\t\t// save token to res\n\t\t\tvar refId = res.push(token.slice(bracket[0].length, -bracket[1].length)) - 1\n\n\t\t\tids.push(refId)\n\n\t\t\treturn escape + refId + escape\n\t\t}\n\n\t\tres.forEach(function (str, i) {\n\t\t\tvar prevStr\n\n\t\t\t// replace paren tokens till there’s none\n\t\t\tvar a = 0\n\t\t\twhile (str != prevStr) {\n\t\t\t\tprevStr = str\n\t\t\t\tstr = str.replace(pRE, replaceToken)\n\t\t\t\tif (a++ > 10e3) throw Error('References have circular dependency. Please, check them.')\n\t\t\t}\n\n\t\t\tres[i] = str\n\t\t})\n\n\t\t// wrap found refs to brackets\n\t\tids = ids.reverse()\n\t\tres = res.map(function (str) {\n\t\t\tids.forEach(function (id) {\n\t\t\t\tstr = str.replace(new RegExp('(\\\\' + escape + id + '\\\\' + escape + ')', 'g'), bracket[0] + '$1' + bracket[1])\n\t\t\t})\n\t\t\treturn str\n\t\t})\n\t})\n\n\tvar re = new RegExp('\\\\' + escape + '([0-9]+)' + '\\\\' + escape)\n\n\t// transform references to tree\n\tfunction nest (str, refs, escape) {\n\t\tvar res = [], match\n\n\t\tvar a = 0\n\t\twhile (match = re.exec(str)) {\n\t\t\tif (a++ > 10e3) throw Error('Circular references in parenthesis')\n\n\t\t\tres.push(str.slice(0, match.index))\n\n\t\t\tres.push(nest(refs[match[1]], refs))\n\n\t\t\tstr = str.slice(match.index + match[0].length)\n\t\t}\n\n\t\tres.push(str)\n\n\t\treturn res\n\t}\n\n\treturn flat ? res : nest(res[0], res)\n}\n\nfunction stringify (arg, opts) {\n\tif (opts && opts.flat) {\n\t\tvar escape = opts && opts.escape || '___'\n\n\t\tvar str = arg[0], prevStr\n\n\t\t// pretend bad string stringified with no parentheses\n\t\tif (!str) return ''\n\n\n\t\tvar re = new RegExp('\\\\' + escape + '([0-9]+)' + '\\\\' + escape)\n\n\t\tvar a = 0\n\t\twhile (str != prevStr) {\n\t\t\tif (a++ > 10e3) throw Error('Circular references in ' + arg)\n\t\t\tprevStr = str\n\t\t\tstr = str.replace(re, replaceRef)\n\t\t}\n\n\t\treturn str\n\t}\n\n\treturn arg.reduce(function f (prev, curr) {\n\t\tif (Array.isArray(curr)) {\n\t\t\tcurr = curr.reduce(f, '')\n\t\t}\n\t\treturn prev + curr\n\t}, '')\n\n\tfunction replaceRef(match, idx){\n\t\tif (arg[idx] == null) throw Error('Reference ' + idx + 'is undefined')\n\t\treturn arg[idx]\n\t}\n}\n\nfunction parenthesis (arg, opts) {\n\tif (Array.isArray(arg)) {\n\t\treturn stringify(arg, opts)\n\t}\n\telse {\n\t\treturn parse(arg, opts)\n\t}\n}\n\nparenthesis.parse = parse\nparenthesis.stringify = stringify\n\nmodule.exports = parenthesis\n\n\n/***/ }),\n\n/***/ 18863:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7555042__) {\n\n\"use strict\";\n\r\n\r\nvar pick = __nested_webpack_require_7555042__(71299)\r\n\r\nmodule.exports = parseRect\r\n\r\nfunction parseRect (arg) {\r\n  var rect\r\n\r\n  // direct arguments sequence\r\n  if (arguments.length > 1) {\r\n    arg = arguments\r\n  }\r\n\r\n  // svg viewbox\r\n  if (typeof arg === 'string') {\r\n    arg = arg.split(/\\s/).map(parseFloat)\r\n  }\r\n  else if (typeof arg === 'number') {\r\n    arg = [arg]\r\n  }\r\n\r\n  // 0, 0, 100, 100 - array-like\r\n  if (arg.length && typeof arg[0] === 'number') {\r\n    // [w, w]\r\n    if (arg.length === 1) {\r\n      rect = {\r\n        width: arg[0],\r\n        height: arg[0],\r\n        x: 0, y: 0\r\n      }\r\n    }\r\n    // [w, h]\r\n    else if (arg.length === 2) {\r\n      rect = {\r\n        width: arg[0],\r\n        height: arg[1],\r\n        x: 0, y: 0\r\n      }\r\n    }\r\n    // [l, t, r, b]\r\n    else {\r\n      rect = {\r\n        x: arg[0],\r\n        y: arg[1],\r\n        width: (arg[2] - arg[0]) || 0,\r\n        height: (arg[3] - arg[1]) || 0\r\n      }\r\n    }\r\n  }\r\n  // {x, y, w, h} or {l, t, b, r}\r\n  else if (arg) {\r\n    arg = pick(arg, {\r\n      left: 'x l left Left',\r\n      top: 'y t top Top',\r\n      width: 'w width W Width',\r\n      height: 'h height W Width',\r\n      bottom: 'b bottom Bottom',\r\n      right: 'r right Right'\r\n    })\r\n\r\n    rect = {\r\n      x: arg.left || 0,\r\n      y: arg.top || 0\r\n    }\r\n\r\n    if (arg.width == null) {\r\n      if (arg.right) rect.width = arg.right - rect.x\r\n      else rect.width = 0\r\n    }\r\n    else {\r\n      rect.width = arg.width\r\n    }\r\n\r\n    if (arg.height == null) {\r\n      if (arg.bottom) rect.height = arg.bottom - rect.y\r\n      else rect.height = 0\r\n    }\r\n    else {\r\n      rect.height = arg.height\r\n    }\r\n  }\r\n\r\n  return rect\r\n}\r\n\n\n/***/ }),\n\n/***/ 95616:\n/***/ (function(module) {\n\n\nmodule.exports = parse\n\n/**\n * expected argument lengths\n * @type {Object}\n */\n\nvar length = {a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0}\n\n/**\n * segment pattern\n * @type {RegExp}\n */\n\nvar segment = /([astvzqmhlc])([^astvzqmhlc]*)/ig\n\n/**\n * parse an svg path data string. Generates an Array\n * of commands where each command is an Array of the\n * form `[command, arg1, arg2, ...]`\n *\n * @param {String} path\n * @return {Array}\n */\n\nfunction parse(path) {\n\tvar data = []\n\tpath.replace(segment, function(_, command, args){\n\t\tvar type = command.toLowerCase()\n\t\targs = parseValues(args)\n\n\t\t// overloaded moveTo\n\t\tif (type == 'm' && args.length > 2) {\n\t\t\tdata.push([command].concat(args.splice(0, 2)))\n\t\t\ttype = 'l'\n\t\t\tcommand = command == 'm' ? 'l' : 'L'\n\t\t}\n\n\t\twhile (true) {\n\t\t\tif (args.length == length[type]) {\n\t\t\t\targs.unshift(command)\n\t\t\t\treturn data.push(args)\n\t\t\t}\n\t\t\tif (args.length < length[type]) throw new Error('malformed path data')\n\t\t\tdata.push([command].concat(args.splice(0, length[type])))\n\t\t}\n\t})\n\treturn data\n}\n\nvar number = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/ig\n\nfunction parseValues(args) {\n\tvar numbers = args.match(number)\n\treturn numbers ? numbers.map(Number) : []\n}\n\n\n/***/ }),\n\n/***/ 25677:\n/***/ (function(module) {\n\nmodule.exports = function parseUnit(str, out) {\n    if (!out)\n        out = [ 0, '' ]\n\n    str = String(str)\n    var num = parseFloat(str, 10)\n    out[0] = num\n    out[1] = str.match(/[\\d.\\-\\+]*\\s*(.*)/)[1] || ''\n    return out\n}\n\n/***/ }),\n\n/***/ 9748:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7558350__) {\n\n/* provided dependency */ var process = __nested_webpack_require_7558350__(90386);\n// Generated by CoffeeScript 1.12.2\n(function() {\n  var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n  if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n    module.exports = function() {\n      return performance.now();\n    };\n  } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n    module.exports = function() {\n      return (getNanoSeconds() - nodeLoadTime) / 1e6;\n    };\n    hrtime = process.hrtime;\n    getNanoSeconds = function() {\n      var hr;\n      hr = hrtime();\n      return hr[0] * 1e9 + hr[1];\n    };\n    moduleLoadTime = getNanoSeconds();\n    upTime = process.uptime() * 1e9;\n    nodeLoadTime = moduleLoadTime - upTime;\n  } else if (Date.now) {\n    module.exports = function() {\n      return Date.now() - loadTime;\n    };\n    loadTime = Date.now();\n  } else {\n    module.exports = function() {\n      return new Date().getTime() - loadTime;\n    };\n    loadTime = new Date().getTime();\n  }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n\n\n/***/ }),\n\n/***/ 71299:\n/***/ (function(module) {\n\n\"use strict\";\n\r\n\r\n\r\nmodule.exports = function pick (src, props, keepRest) {\r\n\tvar result = {}, prop, i\r\n\r\n\tif (typeof props === 'string') props = toList(props)\r\n\tif (Array.isArray(props)) {\r\n\t\tvar res = {}\r\n\t\tfor (i = 0; i < props.length; i++) {\r\n\t\t\tres[props[i]] = true\r\n\t\t}\r\n\t\tprops = res\r\n\t}\r\n\r\n\t// convert strings to lists\r\n\tfor (prop in props) {\r\n\t\tprops[prop] = toList(props[prop])\r\n\t}\r\n\r\n\t// keep-rest strategy requires unmatched props to be preserved\r\n\tvar occupied = {}\r\n\r\n\tfor (prop in props) {\r\n\t\tvar aliases = props[prop]\r\n\r\n\t\tif (Array.isArray(aliases)) {\r\n\t\t\tfor (i = 0; i < aliases.length; i++) {\r\n\t\t\t\tvar alias = aliases[i]\r\n\r\n\t\t\t\tif (keepRest) {\r\n\t\t\t\t\toccupied[alias] = true\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (alias in src) {\r\n\t\t\t\t\tresult[prop] = src[alias]\r\n\r\n\t\t\t\t\tif (keepRest) {\r\n\t\t\t\t\t\tfor (var j = i; j < aliases.length; j++) {\r\n\t\t\t\t\t\t\toccupied[aliases[j]] = true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (prop in src) {\r\n\t\t\tif (props[prop]) {\r\n\t\t\t\tresult[prop] = src[prop]\r\n\t\t\t}\r\n\r\n\t\t\tif (keepRest) {\r\n\t\t\t\toccupied[prop] = true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (keepRest) {\r\n\t\tfor (prop in src) {\r\n\t\t\tif (occupied[prop]) continue\r\n\t\t\tresult[prop] = src[prop]\r\n\t\t}\r\n\t}\r\n\r\n\treturn result\r\n}\r\n\r\nvar CACHE = {}\r\n\r\nfunction toList(arg) {\r\n\tif (CACHE[arg]) return CACHE[arg]\r\n\tif (typeof arg === 'string') {\r\n\t\targ = CACHE[arg] = arg.split(/\\s*,\\s*|\\s+/)\r\n\t}\r\n\treturn arg\r\n}\r\n\n\n/***/ }),\n\n/***/ 38258:\n/***/ (function(module) {\n\n// ray-casting algorithm based on\n// https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html\n\nmodule.exports = function pointInPolygonNested (point, vs, start, end) {\n    var x = point[0], y = point[1];\n    var inside = false;\n    if (start === undefined) start = 0;\n    if (end === undefined) end = vs.length;\n    var len = end - start;\n    for (var i = 0, j = len - 1; i < len; j = i++) {\n        var xi = vs[i+start][0], yi = vs[i+start][1];\n        var xj = vs[j+start][0], yj = vs[j+start][1];\n        var intersect = ((yi > y) !== (yj > y))\n            && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n        if (intersect) inside = !inside;\n    }\n    return inside;\n};\n\n\n/***/ }),\n\n/***/ 52142:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7561746__) {\n\n/*\n * @copyright 2016 Sean Connelly (@voidqk), http://syntheti.cc\n * @license MIT\n * @preserve Project Home: https://github.com/voidqk/polybooljs\n */\n\nvar BuildLog = __nested_webpack_require_7561746__(69444);\nvar Epsilon = __nested_webpack_require_7561746__(29023);\nvar Intersecter = __nested_webpack_require_7561746__(87263);\nvar SegmentChainer = __nested_webpack_require_7561746__(11328);\nvar SegmentSelector = __nested_webpack_require_7561746__(55968);\nvar GeoJSON = __nested_webpack_require_7561746__(10670);\n\nvar buildLog = false;\nvar epsilon = Epsilon();\n\nvar PolyBool;\nPolyBool = {\n\t// getter/setter for buildLog\n\tbuildLog: function(bl){\n\t\tif (bl === true)\n\t\t\tbuildLog = BuildLog();\n\t\telse if (bl === false)\n\t\t\tbuildLog = false;\n\t\treturn buildLog === false ? false : buildLog.list;\n\t},\n\t// getter/setter for epsilon\n\tepsilon: function(v){\n\t\treturn epsilon.epsilon(v);\n\t},\n\n\t// core API\n\tsegments: function(poly){\n\t\tvar i = Intersecter(true, epsilon, buildLog);\n\t\tpoly.regions.forEach(i.addRegion);\n\t\treturn {\n\t\t\tsegments: i.calculate(poly.inverted),\n\t\t\tinverted: poly.inverted\n\t\t};\n\t},\n\tcombine: function(segments1, segments2){\n\t\tvar i3 = Intersecter(false, epsilon, buildLog);\n\t\treturn {\n\t\t\tcombined: i3.calculate(\n\t\t\t\tsegments1.segments, segments1.inverted,\n\t\t\t\tsegments2.segments, segments2.inverted\n\t\t\t),\n\t\t\tinverted1: segments1.inverted,\n\t\t\tinverted2: segments2.inverted\n\t\t};\n\t},\n\tselectUnion: function(combined){\n\t\treturn {\n\t\t\tsegments: SegmentSelector.union(combined.combined, buildLog),\n\t\t\tinverted: combined.inverted1 || combined.inverted2\n\t\t}\n\t},\n\tselectIntersect: function(combined){\n\t\treturn {\n\t\t\tsegments: SegmentSelector.intersect(combined.combined, buildLog),\n\t\t\tinverted: combined.inverted1 && combined.inverted2\n\t\t}\n\t},\n\tselectDifference: function(combined){\n\t\treturn {\n\t\t\tsegments: SegmentSelector.difference(combined.combined, buildLog),\n\t\t\tinverted: combined.inverted1 && !combined.inverted2\n\t\t}\n\t},\n\tselectDifferenceRev: function(combined){\n\t\treturn {\n\t\t\tsegments: SegmentSelector.differenceRev(combined.combined, buildLog),\n\t\t\tinverted: !combined.inverted1 && combined.inverted2\n\t\t}\n\t},\n\tselectXor: function(combined){\n\t\treturn {\n\t\t\tsegments: SegmentSelector.xor(combined.combined, buildLog),\n\t\t\tinverted: combined.inverted1 !== combined.inverted2\n\t\t}\n\t},\n\tpolygon: function(segments){\n\t\treturn {\n\t\t\tregions: SegmentChainer(segments.segments, epsilon, buildLog),\n\t\t\tinverted: segments.inverted\n\t\t};\n\t},\n\n\t// GeoJSON converters\n\tpolygonFromGeoJSON: function(geojson){\n\t\treturn GeoJSON.toPolygon(PolyBool, geojson);\n\t},\n\tpolygonToGeoJSON: function(poly){\n\t\treturn GeoJSON.fromPolygon(PolyBool, epsilon, poly);\n\t},\n\n\t// helper functions for common operations\n\tunion: function(poly1, poly2){\n\t\treturn operate(poly1, poly2, PolyBool.selectUnion);\n\t},\n\tintersect: function(poly1, poly2){\n\t\treturn operate(poly1, poly2, PolyBool.selectIntersect);\n\t},\n\tdifference: function(poly1, poly2){\n\t\treturn operate(poly1, poly2, PolyBool.selectDifference);\n\t},\n\tdifferenceRev: function(poly1, poly2){\n\t\treturn operate(poly1, poly2, PolyBool.selectDifferenceRev);\n\t},\n\txor: function(poly1, poly2){\n\t\treturn operate(poly1, poly2, PolyBool.selectXor);\n\t}\n};\n\nfunction operate(poly1, poly2, selector){\n\tvar seg1 = PolyBool.segments(poly1);\n\tvar seg2 = PolyBool.segments(poly2);\n\tvar comb = PolyBool.combine(seg1, seg2);\n\tvar seg3 = selector(comb);\n\treturn PolyBool.polygon(seg3);\n}\n\nif (typeof window === 'object')\n\twindow.PolyBool = PolyBool;\n\nmodule.exports = PolyBool;\n\n\n/***/ }),\n\n/***/ 69444:\n/***/ (function(module) {\n\n// (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc\n// MIT License\n// Project Home: https://github.com/voidqk/polybooljs\n\n//\n// used strictly for logging the processing of the algorithm... only useful if you intend on\n// looking under the covers (for pretty UI's or debugging)\n//\n\nfunction BuildLog(){\n\tvar my;\n\tvar nextSegmentId = 0;\n\tvar curVert = false;\n\n\tfunction push(type, data){\n\t\tmy.list.push({\n\t\t\ttype: type,\n\t\t\tdata: data ? JSON.parse(JSON.stringify(data)) : void 0\n\t\t});\n\t\treturn my;\n\t}\n\n\tmy = {\n\t\tlist: [],\n\t\tsegmentId: function(){\n\t\t\treturn nextSegmentId++;\n\t\t},\n\t\tcheckIntersection: function(seg1, seg2){\n\t\t\treturn push('check', { seg1: seg1, seg2: seg2 });\n\t\t},\n\t\tsegmentChop: function(seg, end){\n\t\t\tpush('div_seg', { seg: seg, pt: end });\n\t\t\treturn push('chop', { seg: seg, pt: end });\n\t\t},\n\t\tstatusRemove: function(seg){\n\t\t\treturn push('pop_seg', { seg: seg });\n\t\t},\n\t\tsegmentUpdate: function(seg){\n\t\t\treturn push('seg_update', { seg: seg });\n\t\t},\n\t\tsegmentNew: function(seg, primary){\n\t\t\treturn push('new_seg', { seg: seg, primary: primary });\n\t\t},\n\t\tsegmentRemove: function(seg){\n\t\t\treturn push('rem_seg', { seg: seg });\n\t\t},\n\t\ttempStatus: function(seg, above, below){\n\t\t\treturn push('temp_status', { seg: seg, above: above, below: below });\n\t\t},\n\t\trewind: function(seg){\n\t\t\treturn push('rewind', { seg: seg });\n\t\t},\n\t\tstatus: function(seg, above, below){\n\t\t\treturn push('status', { seg: seg, above: above, below: below });\n\t\t},\n\t\tvert: function(x){\n\t\t\tif (x === curVert)\n\t\t\t\treturn my;\n\t\t\tcurVert = x;\n\t\t\treturn push('vert', { x: x });\n\t\t},\n\t\tlog: function(data){\n\t\t\tif (typeof data !== 'string')\n\t\t\t\tdata = JSON.stringify(data, false, '  ');\n\t\t\treturn push('log', { txt: data });\n\t\t},\n\t\treset: function(){\n\t\t\treturn push('reset');\n\t\t},\n\t\tselected: function(segs){\n\t\t\treturn push('selected', { segs: segs });\n\t\t},\n\t\tchainStart: function(seg){\n\t\t\treturn push('chain_start', { seg: seg });\n\t\t},\n\t\tchainRemoveHead: function(index, pt){\n\t\t\treturn push('chain_rem_head', { index: index, pt: pt });\n\t\t},\n\t\tchainRemoveTail: function(index, pt){\n\t\t\treturn push('chain_rem_tail', { index: index, pt: pt });\n\t\t},\n\t\tchainNew: function(pt1, pt2){\n\t\t\treturn push('chain_new', { pt1: pt1, pt2: pt2 });\n\t\t},\n\t\tchainMatch: function(index){\n\t\t\treturn push('chain_match', { index: index });\n\t\t},\n\t\tchainClose: function(index){\n\t\t\treturn push('chain_close', { index: index });\n\t\t},\n\t\tchainAddHead: function(index, pt){\n\t\t\treturn push('chain_add_head', { index: index, pt: pt });\n\t\t},\n\t\tchainAddTail: function(index, pt){\n\t\t\treturn push('chain_add_tail', { index: index, pt: pt, });\n\t\t},\n\t\tchainConnect: function(index1, index2){\n\t\t\treturn push('chain_con', { index1: index1, index2: index2 });\n\t\t},\n\t\tchainReverse: function(index){\n\t\t\treturn push('chain_rev', { index: index });\n\t\t},\n\t\tchainJoin: function(index1, index2){\n\t\t\treturn push('chain_join', { index1: index1, index2: index2 });\n\t\t},\n\t\tdone: function(){\n\t\t\treturn push('done');\n\t\t}\n\t};\n\treturn my;\n}\n\nmodule.exports = BuildLog;\n\n\n/***/ }),\n\n/***/ 29023:\n/***/ (function(module) {\n\n// (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc\n// MIT License\n// Project Home: https://github.com/voidqk/polybooljs\n\n//\n// provides the raw computation functions that takes epsilon into account\n//\n// zero is defined to be between (-epsilon, epsilon) exclusive\n//\n\nfunction Epsilon(eps){\n\tif (typeof eps !== 'number')\n\t\teps = 0.0000000001; // sane default? sure why not\n\tvar my = {\n\t\tepsilon: function(v){\n\t\t\tif (typeof v === 'number')\n\t\t\t\teps = v;\n\t\t\treturn eps;\n\t\t},\n\t\tpointAboveOrOnLine: function(pt, left, right){\n\t\t\tvar Ax = left[0];\n\t\t\tvar Ay = left[1];\n\t\t\tvar Bx = right[0];\n\t\t\tvar By = right[1];\n\t\t\tvar Cx = pt[0];\n\t\t\tvar Cy = pt[1];\n\t\t\treturn (Bx - Ax) * (Cy - Ay) - (By - Ay) * (Cx - Ax) >= -eps;\n\t\t},\n\t\tpointBetween: function(p, left, right){\n\t\t\t// p must be collinear with left->right\n\t\t\t// returns false if p == left, p == right, or left == right\n\t\t\tvar d_py_ly = p[1] - left[1];\n\t\t\tvar d_rx_lx = right[0] - left[0];\n\t\t\tvar d_px_lx = p[0] - left[0];\n\t\t\tvar d_ry_ly = right[1] - left[1];\n\n\t\t\tvar dot = d_px_lx * d_rx_lx + d_py_ly * d_ry_ly;\n\t\t\t// if `dot` is 0, then `p` == `left` or `left` == `right` (reject)\n\t\t\t// if `dot` is less than 0, then `p` is to the left of `left` (reject)\n\t\t\tif (dot < eps)\n\t\t\t\treturn false;\n\n\t\t\tvar sqlen = d_rx_lx * d_rx_lx + d_ry_ly * d_ry_ly;\n\t\t\t// if `dot` > `sqlen`, then `p` is to the right of `right` (reject)\n\t\t\t// therefore, if `dot - sqlen` is greater than 0, then `p` is to the right of `right` (reject)\n\t\t\tif (dot - sqlen > -eps)\n\t\t\t\treturn false;\n\n\t\t\treturn true;\n\t\t},\n\t\tpointsSameX: function(p1, p2){\n\t\t\treturn Math.abs(p1[0] - p2[0]) < eps;\n\t\t},\n\t\tpointsSameY: function(p1, p2){\n\t\t\treturn Math.abs(p1[1] - p2[1]) < eps;\n\t\t},\n\t\tpointsSame: function(p1, p2){\n\t\t\treturn my.pointsSameX(p1, p2) && my.pointsSameY(p1, p2);\n\t\t},\n\t\tpointsCompare: function(p1, p2){\n\t\t\t// returns -1 if p1 is smaller, 1 if p2 is smaller, 0 if equal\n\t\t\tif (my.pointsSameX(p1, p2))\n\t\t\t\treturn my.pointsSameY(p1, p2) ? 0 : (p1[1] < p2[1] ? -1 : 1);\n\t\t\treturn p1[0] < p2[0] ? -1 : 1;\n\t\t},\n\t\tpointsCollinear: function(pt1, pt2, pt3){\n\t\t\t// does pt1->pt2->pt3 make a straight line?\n\t\t\t// essentially this is just checking to see if the slope(pt1->pt2) === slope(pt2->pt3)\n\t\t\t// if slopes are equal, then they must be collinear, because they share pt2\n\t\t\tvar dx1 = pt1[0] - pt2[0];\n\t\t\tvar dy1 = pt1[1] - pt2[1];\n\t\t\tvar dx2 = pt2[0] - pt3[0];\n\t\t\tvar dy2 = pt2[1] - pt3[1];\n\t\t\treturn Math.abs(dx1 * dy2 - dx2 * dy1) < eps;\n\t\t},\n\t\tlinesIntersect: function(a0, a1, b0, b1){\n\t\t\t// returns false if the lines are coincident (e.g., parallel or on top of each other)\n\t\t\t//\n\t\t\t// returns an object if the lines intersect:\n\t\t\t//   {\n\t\t\t//     pt: [x, y],    where the intersection point is at\n\t\t\t//     alongA: where intersection point is along A,\n\t\t\t//     alongB: where intersection point is along B\n\t\t\t//   }\n\t\t\t//\n\t\t\t//  alongA and alongB will each be one of: -2, -1, 0, 1, 2\n\t\t\t//\n\t\t\t//  with the following meaning:\n\t\t\t//\n\t\t\t//    -2   intersection point is before segment's first point\n\t\t\t//    -1   intersection point is directly on segment's first point\n\t\t\t//     0   intersection point is between segment's first and second points (exclusive)\n\t\t\t//     1   intersection point is directly on segment's second point\n\t\t\t//     2   intersection point is after segment's second point\n\t\t\tvar adx = a1[0] - a0[0];\n\t\t\tvar ady = a1[1] - a0[1];\n\t\t\tvar bdx = b1[0] - b0[0];\n\t\t\tvar bdy = b1[1] - b0[1];\n\n\t\t\tvar axb = adx * bdy - ady * bdx;\n\t\t\tif (Math.abs(axb) < eps)\n\t\t\t\treturn false; // lines are coincident\n\n\t\t\tvar dx = a0[0] - b0[0];\n\t\t\tvar dy = a0[1] - b0[1];\n\n\t\t\tvar A = (bdx * dy - bdy * dx) / axb;\n\t\t\tvar B = (adx * dy - ady * dx) / axb;\n\n\t\t\tvar ret = {\n\t\t\t\talongA: 0,\n\t\t\t\talongB: 0,\n\t\t\t\tpt: [\n\t\t\t\t\ta0[0] + A * adx,\n\t\t\t\t\ta0[1] + A * ady\n\t\t\t\t]\n\t\t\t};\n\n\t\t\t// categorize where intersection point is along A and B\n\n\t\t\tif (A <= -eps)\n\t\t\t\tret.alongA = -2;\n\t\t\telse if (A < eps)\n\t\t\t\tret.alongA = -1;\n\t\t\telse if (A - 1 <= -eps)\n\t\t\t\tret.alongA = 0;\n\t\t\telse if (A - 1 < eps)\n\t\t\t\tret.alongA = 1;\n\t\t\telse\n\t\t\t\tret.alongA = 2;\n\n\t\t\tif (B <= -eps)\n\t\t\t\tret.alongB = -2;\n\t\t\telse if (B < eps)\n\t\t\t\tret.alongB = -1;\n\t\t\telse if (B - 1 <= -eps)\n\t\t\t\tret.alongB = 0;\n\t\t\telse if (B - 1 < eps)\n\t\t\t\tret.alongB = 1;\n\t\t\telse\n\t\t\t\tret.alongB = 2;\n\n\t\t\treturn ret;\n\t\t},\n\t\tpointInsideRegion: function(pt, region){\n\t\t\tvar x = pt[0];\n\t\t\tvar y = pt[1];\n\t\t\tvar last_x = region[region.length - 1][0];\n\t\t\tvar last_y = region[region.length - 1][1];\n\t\t\tvar inside = false;\n\t\t\tfor (var i = 0; i < region.length; i++){\n\t\t\t\tvar curr_x = region[i][0];\n\t\t\t\tvar curr_y = region[i][1];\n\n\t\t\t\t// if y is between curr_y and last_y, and\n\t\t\t\t// x is to the right of the boundary created by the line\n\t\t\t\tif ((curr_y - y > eps) != (last_y - y > eps) &&\n\t\t\t\t\t(last_x - curr_x) * (y - curr_y) / (last_y - curr_y) + curr_x - x > eps)\n\t\t\t\t\tinside = !inside\n\n\t\t\t\tlast_x = curr_x;\n\t\t\t\tlast_y = curr_y;\n\t\t\t}\n\t\t\treturn inside;\n\t\t}\n\t};\n\treturn my;\n}\n\nmodule.exports = Epsilon;\n\n\n/***/ }),\n\n/***/ 10670:\n/***/ (function(module) {\n\n// (c) Copyright 2017, Sean Connelly (@voidqk), http://syntheti.cc\n// MIT License\n// Project Home: https://github.com/voidqk/polybooljs\n\n//\n// convert between PolyBool polygon format and GeoJSON formats (Polygon and MultiPolygon)\n//\n\nvar GeoJSON = {\n\t// convert a GeoJSON object to a PolyBool polygon\n\ttoPolygon: function(PolyBool, geojson){\n\n\t\t// converts list of LineString's to segments\n\t\tfunction GeoPoly(coords){\n\t\t\t// check for empty coords\n\t\t\tif (coords.length <= 0)\n\t\t\t\treturn PolyBool.segments({ inverted: false, regions: [] });\n\n\t\t\t// convert LineString to segments\n\t\t\tfunction LineString(ls){\n\t\t\t\t// remove tail which should be the same as head\n\t\t\t\tvar reg = ls.slice(0, ls.length - 1);\n\t\t\t\treturn PolyBool.segments({ inverted: false, regions: [reg] });\n\t\t\t}\n\n\t\t\t// the first LineString is considered the outside\n\t\t\tvar out = LineString(coords[0]);\n\n\t\t\t// the rest of the LineStrings are considered interior holes, so subtract them from the\n\t\t\t// current result\n\t\t\tfor (var i = 1; i < coords.length; i++)\n\t\t\t\tout = PolyBool.selectDifference(PolyBool.combine(out, LineString(coords[i])));\n\n\t\t\treturn out;\n\t\t}\n\n\t\tif (geojson.type === 'Polygon'){\n\t\t\t// single polygon, so just convert it and we're done\n\t\t\treturn PolyBool.polygon(GeoPoly(geojson.coordinates));\n\t\t}\n\t\telse if (geojson.type === 'MultiPolygon'){\n\t\t\t// multiple polygons, so union all the polygons together\n\t\t\tvar out = PolyBool.segments({ inverted: false, regions: [] });\n\t\t\tfor (var i = 0; i < geojson.coordinates.length; i++)\n\t\t\t\tout = PolyBool.selectUnion(PolyBool.combine(out, GeoPoly(geojson.coordinates[i])));\n\t\t\treturn PolyBool.polygon(out);\n\t\t}\n\t\tthrow new Error('PolyBool: Cannot convert GeoJSON object to PolyBool polygon');\n\t},\n\n\t// convert a PolyBool polygon to a GeoJSON object\n\tfromPolygon: function(PolyBool, eps, poly){\n\t\t// make sure out polygon is clean\n\t\tpoly = PolyBool.polygon(PolyBool.segments(poly));\n\n\t\t// test if r1 is inside r2\n\t\tfunction regionInsideRegion(r1, r2){\n\t\t\t// we're guaranteed no lines intersect (because the polygon is clean), but a vertex\n\t\t\t// could be on the edge -- so we just average pt[0] and pt[1] to produce a point on the\n\t\t\t// edge of the first line, which cannot be on an edge\n\t\t\treturn eps.pointInsideRegion([\n\t\t\t\t(r1[0][0] + r1[1][0]) * 0.5,\n\t\t\t\t(r1[0][1] + r1[1][1]) * 0.5\n\t\t\t], r2);\n\t\t}\n\n\t\t// calculate inside heirarchy\n\t\t//\n\t\t//  _____________________   _______    roots -> A       -> F\n\t\t// |          A          | |   F   |            |          |\n\t\t// |  _______   _______  | |  ___  |            +-- B      +-- G\n\t\t// | |   B   | |   C   | | | |   | |            |   |\n\t\t// | |  ___  | |  ___  | | | |   | |            |   +-- D\n\t\t// | | | D | | | | E | | | | | G | |            |\n\t\t// | | |___| | | |___| | | | |   | |            +-- C\n\t\t// | |_______| |_______| | | |___| |                |\n\t\t// |_____________________| |_______|                +-- E\n\n\t\tfunction newNode(region){\n\t\t\treturn {\n\t\t\t\tregion: region,\n\t\t\t\tchildren: []\n\t\t\t};\n\t\t}\n\n\t\tvar roots = newNode(null);\n\n\t\tfunction addChild(root, region){\n\t\t\t// first check if we're inside any children\n\t\t\tfor (var i = 0; i < root.children.length; i++){\n\t\t\t\tvar child = root.children[i];\n\t\t\t\tif (regionInsideRegion(region, child.region)){\n\t\t\t\t\t// we are, so insert inside them instead\n\t\t\t\t\taddChild(child, region);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// not inside any children, so check to see if any children are inside us\n\t\t\tvar node = newNode(region);\n\t\t\tfor (var i = 0; i < root.children.length; i++){\n\t\t\t\tvar child = root.children[i];\n\t\t\t\tif (regionInsideRegion(child.region, region)){\n\t\t\t\t\t// oops... move the child beneath us, and remove them from root\n\t\t\t\t\tnode.children.push(child);\n\t\t\t\t\troot.children.splice(i, 1);\n\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// now we can add ourselves\n\t\t\troot.children.push(node);\n\t\t}\n\n\t\t// add all regions to the root\n\t\tfor (var i = 0; i < poly.regions.length; i++){\n\t\t\tvar region = poly.regions[i];\n\t\t\tif (region.length < 3) // regions must have at least 3 points (sanity check)\n\t\t\t\tcontinue;\n\t\t\taddChild(roots, region);\n\t\t}\n\n\t\t// with our heirarchy, we can distinguish between exterior borders, and interior holes\n\t\t// the root nodes are exterior, children are interior, children's children are exterior,\n\t\t// children's children's children are interior, etc\n\n\t\t// while we're at it, exteriors are counter-clockwise, and interiors are clockwise\n\n\t\tfunction forceWinding(region, clockwise){\n\t\t\t// first, see if we're clockwise or counter-clockwise\n\t\t\t// https://en.wikipedia.org/wiki/Shoelace_formula\n\t\t\tvar winding = 0;\n\t\t\tvar last_x = region[region.length - 1][0];\n\t\t\tvar last_y = region[region.length - 1][1];\n\t\t\tvar copy = [];\n\t\t\tfor (var i = 0; i < region.length; i++){\n\t\t\t\tvar curr_x = region[i][0];\n\t\t\t\tvar curr_y = region[i][1];\n\t\t\t\tcopy.push([curr_x, curr_y]); // create a copy while we're at it\n\t\t\t\twinding += curr_y * last_x - curr_x * last_y;\n\t\t\t\tlast_x = curr_x;\n\t\t\t\tlast_y = curr_y;\n\t\t\t}\n\t\t\t// this assumes Cartesian coordinates (Y is positive going up)\n\t\t\tvar isclockwise = winding < 0;\n\t\t\tif (isclockwise !== clockwise)\n\t\t\t\tcopy.reverse();\n\t\t\t// while we're here, the last point must be the first point...\n\t\t\tcopy.push([copy[0][0], copy[0][1]]);\n\t\t\treturn copy;\n\t\t}\n\n\t\tvar geopolys = [];\n\n\t\tfunction addExterior(node){\n\t\t\tvar poly = [forceWinding(node.region, false)];\n\t\t\tgeopolys.push(poly);\n\t\t\t// children of exteriors are interior\n\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\tpoly.push(getInterior(node.children[i]));\n\t\t}\n\n\t\tfunction getInterior(node){\n\t\t\t// children of interiors are exterior\n\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\taddExterior(node.children[i]);\n\t\t\t// return the clockwise interior\n\t\t\treturn forceWinding(node.region, true);\n\t\t}\n\n\t\t// root nodes are exterior\n\t\tfor (var i = 0; i < roots.children.length; i++)\n\t\t\taddExterior(roots.children[i]);\n\n\t\t// lastly, construct the approrpriate GeoJSON object\n\n\t\tif (geopolys.length <= 0) // empty GeoJSON Polygon\n\t\t\treturn { type: 'Polygon', coordinates: [] };\n\t\tif (geopolys.length == 1) // use a GeoJSON Polygon\n\t\t\treturn { type: 'Polygon', coordinates: geopolys[0] };\n\t\treturn { // otherwise, use a GeoJSON MultiPolygon\n\t\t\ttype: 'MultiPolygon',\n\t\t\tcoordinates: geopolys\n\t\t};\n\t}\n};\n\nmodule.exports = GeoJSON;\n\n\n/***/ }),\n\n/***/ 87263:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7579563__) {\n\n// (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc\n// MIT License\n// Project Home: https://github.com/voidqk/polybooljs\n\n//\n// this is the core work-horse\n//\n\nvar LinkedList = __nested_webpack_require_7579563__(26859);\n\nfunction Intersecter(selfIntersection, eps, buildLog){\n\t// selfIntersection is true/false depending on the phase of the overall algorithm\n\n\t//\n\t// segment creation\n\t//\n\n\tfunction segmentNew(start, end){\n\t\treturn {\n\t\t\tid: buildLog ? buildLog.segmentId() : -1,\n\t\t\tstart: start,\n\t\t\tend: end,\n\t\t\tmyFill: {\n\t\t\t\tabove: null, // is there fill above us?\n\t\t\t\tbelow: null  // is there fill below us?\n\t\t\t},\n\t\t\totherFill: null\n\t\t};\n\t}\n\n\tfunction segmentCopy(start, end, seg){\n\t\treturn {\n\t\t\tid: buildLog ? buildLog.segmentId() : -1,\n\t\t\tstart: start,\n\t\t\tend: end,\n\t\t\tmyFill: {\n\t\t\t\tabove: seg.myFill.above,\n\t\t\t\tbelow: seg.myFill.below\n\t\t\t},\n\t\t\totherFill: null\n\t\t};\n\t}\n\n\t//\n\t// event logic\n\t//\n\n\tvar event_root = LinkedList.create();\n\n\tfunction eventCompare(p1_isStart, p1_1, p1_2, p2_isStart, p2_1, p2_2){\n\t\t// compare the selected points first\n\t\tvar comp = eps.pointsCompare(p1_1, p2_1);\n\t\tif (comp !== 0)\n\t\t\treturn comp;\n\t\t// the selected points are the same\n\n\t\tif (eps.pointsSame(p1_2, p2_2)) // if the non-selected points are the same too...\n\t\t\treturn 0; // then the segments are equal\n\n\t\tif (p1_isStart !== p2_isStart) // if one is a start and the other isn't...\n\t\t\treturn p1_isStart ? 1 : -1; // favor the one that isn't the start\n\n\t\t// otherwise, we'll have to calculate which one is below the other manually\n\t\treturn eps.pointAboveOrOnLine(p1_2,\n\t\t\tp2_isStart ? p2_1 : p2_2, // order matters\n\t\t\tp2_isStart ? p2_2 : p2_1\n\t\t) ? 1 : -1;\n\t}\n\n\tfunction eventAdd(ev, other_pt){\n\t\tevent_root.insertBefore(ev, function(here){\n\t\t\t// should ev be inserted before here?\n\t\t\tvar comp = eventCompare(\n\t\t\t\tev  .isStart, ev  .pt,      other_pt,\n\t\t\t\there.isStart, here.pt, here.other.pt\n\t\t\t);\n\t\t\treturn comp < 0;\n\t\t});\n\t}\n\n\tfunction eventAddSegmentStart(seg, primary){\n\t\tvar ev_start = LinkedList.node({\n\t\t\tisStart: true,\n\t\t\tpt: seg.start,\n\t\t\tseg: seg,\n\t\t\tprimary: primary,\n\t\t\tother: null,\n\t\t\tstatus: null\n\t\t});\n\t\teventAdd(ev_start, seg.end);\n\t\treturn ev_start;\n\t}\n\n\tfunction eventAddSegmentEnd(ev_start, seg, primary){\n\t\tvar ev_end = LinkedList.node({\n\t\t\tisStart: false,\n\t\t\tpt: seg.end,\n\t\t\tseg: seg,\n\t\t\tprimary: primary,\n\t\t\tother: ev_start,\n\t\t\tstatus: null\n\t\t});\n\t\tev_start.other = ev_end;\n\t\teventAdd(ev_end, ev_start.pt);\n\t}\n\n\tfunction eventAddSegment(seg, primary){\n\t\tvar ev_start = eventAddSegmentStart(seg, primary);\n\t\teventAddSegmentEnd(ev_start, seg, primary);\n\t\treturn ev_start;\n\t}\n\n\tfunction eventUpdateEnd(ev, end){\n\t\t// slides an end backwards\n\t\t//   (start)------------(end)    to:\n\t\t//   (start)---(end)\n\n\t\tif (buildLog)\n\t\t\tbuildLog.segmentChop(ev.seg, end);\n\n\t\tev.other.remove();\n\t\tev.seg.end = end;\n\t\tev.other.pt = end;\n\t\teventAdd(ev.other, ev.pt);\n\t}\n\n\tfunction eventDivide(ev, pt){\n\t\tvar ns = segmentCopy(pt, ev.seg.end, ev.seg);\n\t\teventUpdateEnd(ev, pt);\n\t\treturn eventAddSegment(ns, ev.primary);\n\t}\n\n\tfunction calculate(primaryPolyInverted, secondaryPolyInverted){\n\t\t// if selfIntersection is true then there is no secondary polygon, so that isn't used\n\n\t\t//\n\t\t// status logic\n\t\t//\n\n\t\tvar status_root = LinkedList.create();\n\n\t\tfunction statusCompare(ev1, ev2){\n\t\t\tvar a1 = ev1.seg.start;\n\t\t\tvar a2 = ev1.seg.end;\n\t\t\tvar b1 = ev2.seg.start;\n\t\t\tvar b2 = ev2.seg.end;\n\n\t\t\tif (eps.pointsCollinear(a1, b1, b2)){\n\t\t\t\tif (eps.pointsCollinear(a2, b1, b2))\n\t\t\t\t\treturn 1;//eventCompare(true, a1, a2, true, b1, b2);\n\t\t\t\treturn eps.pointAboveOrOnLine(a2, b1, b2) ? 1 : -1;\n\t\t\t}\n\t\t\treturn eps.pointAboveOrOnLine(a1, b1, b2) ? 1 : -1;\n\t\t}\n\n\t\tfunction statusFindSurrounding(ev){\n\t\t\treturn status_root.findTransition(function(here){\n\t\t\t\tvar comp = statusCompare(ev, here.ev);\n\t\t\t\treturn comp > 0;\n\t\t\t});\n\t\t}\n\n\t\tfunction checkIntersection(ev1, ev2){\n\t\t\t// returns the segment equal to ev1, or false if nothing equal\n\n\t\t\tvar seg1 = ev1.seg;\n\t\t\tvar seg2 = ev2.seg;\n\t\t\tvar a1 = seg1.start;\n\t\t\tvar a2 = seg1.end;\n\t\t\tvar b1 = seg2.start;\n\t\t\tvar b2 = seg2.end;\n\n\t\t\tif (buildLog)\n\t\t\t\tbuildLog.checkIntersection(seg1, seg2);\n\n\t\t\tvar i = eps.linesIntersect(a1, a2, b1, b2);\n\n\t\t\tif (i === false){\n\t\t\t\t// segments are parallel or coincident\n\n\t\t\t\t// if points aren't collinear, then the segments are parallel, so no intersections\n\t\t\t\tif (!eps.pointsCollinear(a1, a2, b1))\n\t\t\t\t\treturn false;\n\t\t\t\t// otherwise, segments are on top of each other somehow (aka coincident)\n\n\t\t\t\tif (eps.pointsSame(a1, b2) || eps.pointsSame(a2, b1))\n\t\t\t\t\treturn false; // segments touch at endpoints... no intersection\n\n\t\t\t\tvar a1_equ_b1 = eps.pointsSame(a1, b1);\n\t\t\t\tvar a2_equ_b2 = eps.pointsSame(a2, b2);\n\n\t\t\t\tif (a1_equ_b1 && a2_equ_b2)\n\t\t\t\t\treturn ev2; // segments are exactly equal\n\n\t\t\t\tvar a1_between = !a1_equ_b1 && eps.pointBetween(a1, b1, b2);\n\t\t\t\tvar a2_between = !a2_equ_b2 && eps.pointBetween(a2, b1, b2);\n\n\t\t\t\t// handy for debugging:\n\t\t\t\t// buildLog.log({\n\t\t\t\t//\ta1_equ_b1: a1_equ_b1,\n\t\t\t\t//\ta2_equ_b2: a2_equ_b2,\n\t\t\t\t//\ta1_between: a1_between,\n\t\t\t\t//\ta2_between: a2_between\n\t\t\t\t// });\n\n\t\t\t\tif (a1_equ_b1){\n\t\t\t\t\tif (a2_between){\n\t\t\t\t\t\t//  (a1)---(a2)\n\t\t\t\t\t\t//  (b1)----------(b2)\n\t\t\t\t\t\teventDivide(ev2, a2);\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\t//  (a1)----------(a2)\n\t\t\t\t\t\t//  (b1)---(b2)\n\t\t\t\t\t\teventDivide(ev1, b2);\n\t\t\t\t\t}\n\t\t\t\t\treturn ev2;\n\t\t\t\t}\n\t\t\t\telse if (a1_between){\n\t\t\t\t\tif (!a2_equ_b2){\n\t\t\t\t\t\t// make a2 equal to b2\n\t\t\t\t\t\tif (a2_between){\n\t\t\t\t\t\t\t//         (a1)---(a2)\n\t\t\t\t\t\t\t//  (b1)-----------------(b2)\n\t\t\t\t\t\t\teventDivide(ev2, a2);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t//         (a1)----------(a2)\n\t\t\t\t\t\t\t//  (b1)----------(b2)\n\t\t\t\t\t\t\teventDivide(ev1, b2);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t//         (a1)---(a2)\n\t\t\t\t\t//  (b1)----------(b2)\n\t\t\t\t\teventDivide(ev2, a1);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse{\n\t\t\t\t// otherwise, lines intersect at i.pt, which may or may not be between the endpoints\n\n\t\t\t\t// is A divided between its endpoints? (exclusive)\n\t\t\t\tif (i.alongA === 0){\n\t\t\t\t\tif (i.alongB === -1) // yes, at exactly b1\n\t\t\t\t\t\teventDivide(ev1, b1);\n\t\t\t\t\telse if (i.alongB === 0) // yes, somewhere between B's endpoints\n\t\t\t\t\t\teventDivide(ev1, i.pt);\n\t\t\t\t\telse if (i.alongB === 1) // yes, at exactly b2\n\t\t\t\t\t\teventDivide(ev1, b2);\n\t\t\t\t}\n\n\t\t\t\t// is B divided between its endpoints? (exclusive)\n\t\t\t\tif (i.alongB === 0){\n\t\t\t\t\tif (i.alongA === -1) // yes, at exactly a1\n\t\t\t\t\t\teventDivide(ev2, a1);\n\t\t\t\t\telse if (i.alongA === 0) // yes, somewhere between A's endpoints (exclusive)\n\t\t\t\t\t\teventDivide(ev2, i.pt);\n\t\t\t\t\telse if (i.alongA === 1) // yes, at exactly a2\n\t\t\t\t\t\teventDivide(ev2, a2);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t//\n\t\t// main event loop\n\t\t//\n\t\tvar segments = [];\n\t\twhile (!event_root.isEmpty()){\n\t\t\tvar ev = event_root.getHead();\n\n\t\t\tif (buildLog)\n\t\t\t\tbuildLog.vert(ev.pt[0]);\n\n\t\t\tif (ev.isStart){\n\n\t\t\t\tif (buildLog)\n\t\t\t\t\tbuildLog.segmentNew(ev.seg, ev.primary);\n\n\t\t\t\tvar surrounding = statusFindSurrounding(ev);\n\t\t\t\tvar above = surrounding.before ? surrounding.before.ev : null;\n\t\t\t\tvar below = surrounding.after ? surrounding.after.ev : null;\n\n\t\t\t\tif (buildLog){\n\t\t\t\t\tbuildLog.tempStatus(\n\t\t\t\t\t\tev.seg,\n\t\t\t\t\t\tabove ? above.seg : false,\n\t\t\t\t\t\tbelow ? below.seg : false\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tfunction checkBothIntersections(){\n\t\t\t\t\tif (above){\n\t\t\t\t\t\tvar eve = checkIntersection(ev, above);\n\t\t\t\t\t\tif (eve)\n\t\t\t\t\t\t\treturn eve;\n\t\t\t\t\t}\n\t\t\t\t\tif (below)\n\t\t\t\t\t\treturn checkIntersection(ev, below);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tvar eve = checkBothIntersections();\n\t\t\t\tif (eve){\n\t\t\t\t\t// ev and eve are equal\n\t\t\t\t\t// we'll keep eve and throw away ev\n\n\t\t\t\t\t// merge ev.seg's fill information into eve.seg\n\n\t\t\t\t\tif (selfIntersection){\n\t\t\t\t\t\tvar toggle; // are we a toggling edge?\n\t\t\t\t\t\tif (ev.seg.myFill.below === null)\n\t\t\t\t\t\t\ttoggle = true;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttoggle = ev.seg.myFill.above !== ev.seg.myFill.below;\n\n\t\t\t\t\t\t// merge two segments that belong to the same polygon\n\t\t\t\t\t\t// think of this as sandwiching two segments together, where `eve.seg` is\n\t\t\t\t\t\t// the bottom -- this will cause the above fill flag to toggle\n\t\t\t\t\t\tif (toggle)\n\t\t\t\t\t\t\teve.seg.myFill.above = !eve.seg.myFill.above;\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\t// merge two segments that belong to different polygons\n\t\t\t\t\t\t// each segment has distinct knowledge, so no special logic is needed\n\t\t\t\t\t\t// note that this can only happen once per segment in this phase, because we\n\t\t\t\t\t\t// are guaranteed that all self-intersections are gone\n\t\t\t\t\t\teve.seg.otherFill = ev.seg.myFill;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (buildLog)\n\t\t\t\t\t\tbuildLog.segmentUpdate(eve.seg);\n\n\t\t\t\t\tev.other.remove();\n\t\t\t\t\tev.remove();\n\t\t\t\t}\n\n\t\t\t\tif (event_root.getHead() !== ev){\n\t\t\t\t\t// something was inserted before us in the event queue, so loop back around and\n\t\t\t\t\t// process it before continuing\n\t\t\t\t\tif (buildLog)\n\t\t\t\t\t\tbuildLog.rewind(ev.seg);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t//\n\t\t\t\t// calculate fill flags\n\t\t\t\t//\n\t\t\t\tif (selfIntersection){\n\t\t\t\t\tvar toggle; // are we a toggling edge?\n\t\t\t\t\tif (ev.seg.myFill.below === null) // if we are a new segment...\n\t\t\t\t\t\ttoggle = true; // then we toggle\n\t\t\t\t\telse // we are a segment that has previous knowledge from a division\n\t\t\t\t\t\ttoggle = ev.seg.myFill.above !== ev.seg.myFill.below; // calculate toggle\n\n\t\t\t\t\t// next, calculate whether we are filled below us\n\t\t\t\t\tif (!below){ // if nothing is below us...\n\t\t\t\t\t\t// we are filled below us if the polygon is inverted\n\t\t\t\t\t\tev.seg.myFill.below = primaryPolyInverted;\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\t// otherwise, we know the answer -- it's the same if whatever is below\n\t\t\t\t\t\t// us is filled above it\n\t\t\t\t\t\tev.seg.myFill.below = below.seg.myFill.above;\n\t\t\t\t\t}\n\n\t\t\t\t\t// since now we know if we're filled below us, we can calculate whether\n\t\t\t\t\t// we're filled above us by applying toggle to whatever is below us\n\t\t\t\t\tif (toggle)\n\t\t\t\t\t\tev.seg.myFill.above = !ev.seg.myFill.below;\n\t\t\t\t\telse\n\t\t\t\t\t\tev.seg.myFill.above = ev.seg.myFill.below;\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t// now we fill in any missing transition information, since we are all-knowing\n\t\t\t\t\t// at this point\n\n\t\t\t\t\tif (ev.seg.otherFill === null){\n\t\t\t\t\t\t// if we don't have other information, then we need to figure out if we're\n\t\t\t\t\t\t// inside the other polygon\n\t\t\t\t\t\tvar inside;\n\t\t\t\t\t\tif (!below){\n\t\t\t\t\t\t\t// if nothing is below us, then we're inside if the other polygon is\n\t\t\t\t\t\t\t// inverted\n\t\t\t\t\t\t\tinside =\n\t\t\t\t\t\t\t\tev.primary ? secondaryPolyInverted : primaryPolyInverted;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{ // otherwise, something is below us\n\t\t\t\t\t\t\t// so copy the below segment's other polygon's above\n\t\t\t\t\t\t\tif (ev.primary === below.primary)\n\t\t\t\t\t\t\t\tinside = below.seg.otherFill.above;\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tinside = below.seg.myFill.above;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tev.seg.otherFill = {\n\t\t\t\t\t\t\tabove: inside,\n\t\t\t\t\t\t\tbelow: inside\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (buildLog){\n\t\t\t\t\tbuildLog.status(\n\t\t\t\t\t\tev.seg,\n\t\t\t\t\t\tabove ? above.seg : false,\n\t\t\t\t\t\tbelow ? below.seg : false\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// insert the status and remember it for later removal\n\t\t\t\tev.other.status = surrounding.insert(LinkedList.node({ ev: ev }));\n\t\t\t}\n\t\t\telse{\n\t\t\t\tvar st = ev.status;\n\n\t\t\t\tif (st === null){\n\t\t\t\t\tthrow new Error('PolyBool: Zero-length segment detected; your epsilon is ' +\n\t\t\t\t\t\t'probably too small or too large');\n\t\t\t\t}\n\n\t\t\t\t// removing the status will create two new adjacent edges, so we'll need to check\n\t\t\t\t// for those\n\t\t\t\tif (status_root.exists(st.prev) && status_root.exists(st.next))\n\t\t\t\t\tcheckIntersection(st.prev.ev, st.next.ev);\n\n\t\t\t\tif (buildLog)\n\t\t\t\t\tbuildLog.statusRemove(st.ev.seg);\n\n\t\t\t\t// remove the status\n\t\t\t\tst.remove();\n\n\t\t\t\t// if we've reached this point, we've calculated everything there is to know, so\n\t\t\t\t// save the segment for reporting\n\t\t\t\tif (!ev.primary){\n\t\t\t\t\t// make sure `seg.myFill` actually points to the primary polygon though\n\t\t\t\t\tvar s = ev.seg.myFill;\n\t\t\t\t\tev.seg.myFill = ev.seg.otherFill;\n\t\t\t\t\tev.seg.otherFill = s;\n\t\t\t\t}\n\t\t\t\tsegments.push(ev.seg);\n\t\t\t}\n\n\t\t\t// remove the event and continue\n\t\t\tevent_root.getHead().remove();\n\t\t}\n\n\t\tif (buildLog)\n\t\t\tbuildLog.done();\n\n\t\treturn segments;\n\t}\n\n\t// return the appropriate API depending on what we're doing\n\tif (!selfIntersection){\n\t\t// performing combination of polygons, so only deal with already-processed segments\n\t\treturn {\n\t\t\tcalculate: function(segments1, inverted1, segments2, inverted2){\n\t\t\t\t// segmentsX come from the self-intersection API, or this API\n\t\t\t\t// invertedX is whether we treat that list of segments as an inverted polygon or not\n\t\t\t\t// returns segments that can be used for further operations\n\t\t\t\tsegments1.forEach(function(seg){\n\t\t\t\t\teventAddSegment(segmentCopy(seg.start, seg.end, seg), true);\n\t\t\t\t});\n\t\t\t\tsegments2.forEach(function(seg){\n\t\t\t\t\teventAddSegment(segmentCopy(seg.start, seg.end, seg), false);\n\t\t\t\t});\n\t\t\t\treturn calculate(inverted1, inverted2);\n\t\t\t}\n\t\t};\n\t}\n\n\t// otherwise, performing self-intersection, so deal with regions\n\treturn {\n\t\taddRegion: function(region){\n\t\t\t// regions are a list of points:\n\t\t\t//  [ [0, 0], [100, 0], [50, 100] ]\n\t\t\t// you can add multiple regions before running calculate\n\t\t\tvar pt1;\n\t\t\tvar pt2 = region[region.length - 1];\n\t\t\tfor (var i = 0; i < region.length; i++){\n\t\t\t\tpt1 = pt2;\n\t\t\t\tpt2 = region[i];\n\n\t\t\t\tvar forward = eps.pointsCompare(pt1, pt2);\n\t\t\t\tif (forward === 0) // points are equal, so we have a zero-length segment\n\t\t\t\t\tcontinue; // just skip it\n\n\t\t\t\teventAddSegment(\n\t\t\t\t\tsegmentNew(\n\t\t\t\t\t\tforward < 0 ? pt1 : pt2,\n\t\t\t\t\t\tforward < 0 ? pt2 : pt1\n\t\t\t\t\t),\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\tcalculate: function(inverted){\n\t\t\t// is the polygon inverted?\n\t\t\t// returns segments\n\t\t\treturn calculate(inverted, false);\n\t\t}\n\t};\n}\n\nmodule.exports = Intersecter;\n\n\n/***/ }),\n\n/***/ 26859:\n/***/ (function(module) {\n\n// (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc\n// MIT License\n// Project Home: https://github.com/voidqk/polybooljs\n\n//\n// simple linked list implementation that allows you to traverse down nodes and save positions\n//\n\nvar LinkedList = {\n\tcreate: function(){\n\t\tvar my = {\n\t\t\troot: { root: true, next: null },\n\t\t\texists: function(node){\n\t\t\t\tif (node === null || node === my.root)\n\t\t\t\t\treturn false;\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tisEmpty: function(){\n\t\t\t\treturn my.root.next === null;\n\t\t\t},\n\t\t\tgetHead: function(){\n\t\t\t\treturn my.root.next;\n\t\t\t},\n\t\t\tinsertBefore: function(node, check){\n\t\t\t\tvar last = my.root;\n\t\t\t\tvar here = my.root.next;\n\t\t\t\twhile (here !== null){\n\t\t\t\t\tif (check(here)){\n\t\t\t\t\t\tnode.prev = here.prev;\n\t\t\t\t\t\tnode.next = here;\n\t\t\t\t\t\there.prev.next = node;\n\t\t\t\t\t\there.prev = node;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tlast = here;\n\t\t\t\t\there = here.next;\n\t\t\t\t}\n\t\t\t\tlast.next = node;\n\t\t\t\tnode.prev = last;\n\t\t\t\tnode.next = null;\n\t\t\t},\n\t\t\tfindTransition: function(check){\n\t\t\t\tvar prev = my.root;\n\t\t\t\tvar here = my.root.next;\n\t\t\t\twhile (here !== null){\n\t\t\t\t\tif (check(here))\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tprev = here;\n\t\t\t\t\there = here.next;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tbefore: prev === my.root ? null : prev,\n\t\t\t\t\tafter: here,\n\t\t\t\t\tinsert: function(node){\n\t\t\t\t\t\tnode.prev = prev;\n\t\t\t\t\t\tnode.next = here;\n\t\t\t\t\t\tprev.next = node;\n\t\t\t\t\t\tif (here !== null)\n\t\t\t\t\t\t\there.prev = node;\n\t\t\t\t\t\treturn node;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t\treturn my;\n\t},\n\tnode: function(data){\n\t\tdata.prev = null;\n\t\tdata.next = null;\n\t\tdata.remove = function(){\n\t\t\tdata.prev.next = data.next;\n\t\t\tif (data.next)\n\t\t\t\tdata.next.prev = data.prev;\n\t\t\tdata.prev = null;\n\t\t\tdata.next = null;\n\t\t};\n\t\treturn data;\n\t}\n};\n\nmodule.exports = LinkedList;\n\n\n/***/ }),\n\n/***/ 11328:\n/***/ (function(module) {\n\n// (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc\n// MIT License\n// Project Home: https://github.com/voidqk/polybooljs\n\n//\n// converts a list of segments into a list of regions, while also removing unnecessary verticies\n//\n\nfunction SegmentChainer(segments, eps, buildLog){\n\tvar chains = [];\n\tvar regions = [];\n\n\tsegments.forEach(function(seg){\n\t\tvar pt1 = seg.start;\n\t\tvar pt2 = seg.end;\n\t\tif (eps.pointsSame(pt1, pt2)){\n\t\t\tconsole.warn('PolyBool: Warning: Zero-length segment detected; your epsilon is ' +\n\t\t\t\t'probably too small or too large');\n\t\t\treturn;\n\t\t}\n\n\t\tif (buildLog)\n\t\t\tbuildLog.chainStart(seg);\n\n\t\t// search for two chains that this segment matches\n\t\tvar first_match = {\n\t\t\tindex: 0,\n\t\t\tmatches_head: false,\n\t\t\tmatches_pt1: false\n\t\t};\n\t\tvar second_match = {\n\t\t\tindex: 0,\n\t\t\tmatches_head: false,\n\t\t\tmatches_pt1: false\n\t\t};\n\t\tvar next_match = first_match;\n\t\tfunction setMatch(index, matches_head, matches_pt1){\n\t\t\t// return true if we've matched twice\n\t\t\tnext_match.index = index;\n\t\t\tnext_match.matches_head = matches_head;\n\t\t\tnext_match.matches_pt1 = matches_pt1;\n\t\t\tif (next_match === first_match){\n\t\t\t\tnext_match = second_match;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tnext_match = null;\n\t\t\treturn true; // we've matched twice, we're done here\n\t\t}\n\t\tfor (var i = 0; i < chains.length; i++){\n\t\t\tvar chain = chains[i];\n\t\t\tvar head  = chain[0];\n\t\t\tvar head2 = chain[1];\n\t\t\tvar tail  = chain[chain.length - 1];\n\t\t\tvar tail2 = chain[chain.length - 2];\n\t\t\tif (eps.pointsSame(head, pt1)){\n\t\t\t\tif (setMatch(i, true, true))\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (eps.pointsSame(head, pt2)){\n\t\t\t\tif (setMatch(i, true, false))\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (eps.pointsSame(tail, pt1)){\n\t\t\t\tif (setMatch(i, false, true))\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (eps.pointsSame(tail, pt2)){\n\t\t\t\tif (setMatch(i, false, false))\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (next_match === first_match){\n\t\t\t// we didn't match anything, so create a new chain\n\t\t\tchains.push([ pt1, pt2 ]);\n\t\t\tif (buildLog)\n\t\t\t\tbuildLog.chainNew(pt1, pt2);\n\t\t\treturn;\n\t\t}\n\n\t\tif (next_match === second_match){\n\t\t\t// we matched a single chain\n\n\t\t\tif (buildLog)\n\t\t\t\tbuildLog.chainMatch(first_match.index);\n\n\t\t\t// add the other point to the apporpriate end, and check to see if we've closed the\n\t\t\t// chain into a loop\n\n\t\t\tvar index = first_match.index;\n\t\t\tvar pt = first_match.matches_pt1 ? pt2 : pt1; // if we matched pt1, then we add pt2, etc\n\t\t\tvar addToHead = first_match.matches_head; // if we matched at head, then add to the head\n\n\t\t\tvar chain = chains[index];\n\t\t\tvar grow  = addToHead ? chain[0] : chain[chain.length - 1];\n\t\t\tvar grow2 = addToHead ? chain[1] : chain[chain.length - 2];\n\t\t\tvar oppo  = addToHead ? chain[chain.length - 1] : chain[0];\n\t\t\tvar oppo2 = addToHead ? chain[chain.length - 2] : chain[1];\n\n\t\t\tif (eps.pointsCollinear(grow2, grow, pt)){\n\t\t\t\t// grow isn't needed because it's directly between grow2 and pt:\n\t\t\t\t// grow2 ---grow---> pt\n\t\t\t\tif (addToHead){\n\t\t\t\t\tif (buildLog)\n\t\t\t\t\t\tbuildLog.chainRemoveHead(first_match.index, pt);\n\t\t\t\t\tchain.shift();\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tif (buildLog)\n\t\t\t\t\t\tbuildLog.chainRemoveTail(first_match.index, pt);\n\t\t\t\t\tchain.pop();\n\t\t\t\t}\n\t\t\t\tgrow = grow2; // old grow is gone... new grow is what grow2 was\n\t\t\t}\n\n\t\t\tif (eps.pointsSame(oppo, pt)){\n\t\t\t\t// we're closing the loop, so remove chain from chains\n\t\t\t\tchains.splice(index, 1);\n\n\t\t\t\tif (eps.pointsCollinear(oppo2, oppo, grow)){\n\t\t\t\t\t// oppo isn't needed because it's directly between oppo2 and grow:\n\t\t\t\t\t// oppo2 ---oppo--->grow\n\t\t\t\t\tif (addToHead){\n\t\t\t\t\t\tif (buildLog)\n\t\t\t\t\t\t\tbuildLog.chainRemoveTail(first_match.index, grow);\n\t\t\t\t\t\tchain.pop();\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tif (buildLog)\n\t\t\t\t\t\t\tbuildLog.chainRemoveHead(first_match.index, grow);\n\t\t\t\t\t\tchain.shift();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (buildLog)\n\t\t\t\t\tbuildLog.chainClose(first_match.index);\n\n\t\t\t\t// we have a closed chain!\n\t\t\t\tregions.push(chain);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// not closing a loop, so just add it to the apporpriate side\n\t\t\tif (addToHead){\n\t\t\t\tif (buildLog)\n\t\t\t\t\tbuildLog.chainAddHead(first_match.index, pt);\n\t\t\t\tchain.unshift(pt);\n\t\t\t}\n\t\t\telse{\n\t\t\t\tif (buildLog)\n\t\t\t\t\tbuildLog.chainAddTail(first_match.index, pt);\n\t\t\t\tchain.push(pt);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// otherwise, we matched two chains, so we need to combine those chains together\n\n\t\tfunction reverseChain(index){\n\t\t\tif (buildLog)\n\t\t\t\tbuildLog.chainReverse(index);\n\t\t\tchains[index].reverse(); // gee, that's easy\n\t\t}\n\n\t\tfunction appendChain(index1, index2){\n\t\t\t// index1 gets index2 appended to it, and index2 is removed\n\t\t\tvar chain1 = chains[index1];\n\t\t\tvar chain2 = chains[index2];\n\t\t\tvar tail  = chain1[chain1.length - 1];\n\t\t\tvar tail2 = chain1[chain1.length - 2];\n\t\t\tvar head  = chain2[0];\n\t\t\tvar head2 = chain2[1];\n\n\t\t\tif (eps.pointsCollinear(tail2, tail, head)){\n\t\t\t\t// tail isn't needed because it's directly between tail2 and head\n\t\t\t\t// tail2 ---tail---> head\n\t\t\t\tif (buildLog)\n\t\t\t\t\tbuildLog.chainRemoveTail(index1, tail);\n\t\t\t\tchain1.pop();\n\t\t\t\ttail = tail2; // old tail is gone... new tail is what tail2 was\n\t\t\t}\n\n\t\t\tif (eps.pointsCollinear(tail, head, head2)){\n\t\t\t\t// head isn't needed because it's directly between tail and head2\n\t\t\t\t// tail ---head---> head2\n\t\t\t\tif (buildLog)\n\t\t\t\t\tbuildLog.chainRemoveHead(index2, head);\n\t\t\t\tchain2.shift();\n\t\t\t}\n\n\t\t\tif (buildLog)\n\t\t\t\tbuildLog.chainJoin(index1, index2);\n\t\t\tchains[index1] = chain1.concat(chain2);\n\t\t\tchains.splice(index2, 1);\n\t\t}\n\n\t\tvar F = first_match.index;\n\t\tvar S = second_match.index;\n\n\t\tif (buildLog)\n\t\t\tbuildLog.chainConnect(F, S);\n\n\t\tvar reverseF = chains[F].length < chains[S].length; // reverse the shorter chain, if needed\n\t\tif (first_match.matches_head){\n\t\t\tif (second_match.matches_head){\n\t\t\t\tif (reverseF){\n\t\t\t\t\t// <<<< F <<<< --- >>>> S >>>>\n\t\t\t\t\treverseChain(F);\n\t\t\t\t\t// >>>> F >>>> --- >>>> S >>>>\n\t\t\t\t\tappendChain(F, S);\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t// <<<< F <<<< --- >>>> S >>>>\n\t\t\t\t\treverseChain(S);\n\t\t\t\t\t// <<<< F <<<< --- <<<< S <<<<   logically same as:\n\t\t\t\t\t// >>>> S >>>> --- >>>> F >>>>\n\t\t\t\t\tappendChain(S, F);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse{\n\t\t\t\t// <<<< F <<<< --- <<<< S <<<<   logically same as:\n\t\t\t\t// >>>> S >>>> --- >>>> F >>>>\n\t\t\t\tappendChain(S, F);\n\t\t\t}\n\t\t}\n\t\telse{\n\t\t\tif (second_match.matches_head){\n\t\t\t\t// >>>> F >>>> --- >>>> S >>>>\n\t\t\t\tappendChain(F, S);\n\t\t\t}\n\t\t\telse{\n\t\t\t\tif (reverseF){\n\t\t\t\t\t// >>>> F >>>> --- <<<< S <<<<\n\t\t\t\t\treverseChain(F);\n\t\t\t\t\t// <<<< F <<<< --- <<<< S <<<<   logically same as:\n\t\t\t\t\t// >>>> S >>>> --- >>>> F >>>>\n\t\t\t\t\tappendChain(S, F);\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t// >>>> F >>>> --- <<<< S <<<<\n\t\t\t\t\treverseChain(S);\n\t\t\t\t\t// >>>> F >>>> --- >>>> S >>>>\n\t\t\t\t\tappendChain(F, S);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\treturn regions;\n}\n\nmodule.exports = SegmentChainer;\n\n\n/***/ }),\n\n/***/ 55968:\n/***/ (function(module) {\n\n// (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc\n// MIT License\n// Project Home: https://github.com/voidqk/polybooljs\n\n//\n// filter a list of segments based on boolean operations\n//\n\nfunction select(segments, selection, buildLog){\n\tvar result = [];\n\tsegments.forEach(function(seg){\n\t\tvar index =\n\t\t\t(seg.myFill.above ? 8 : 0) +\n\t\t\t(seg.myFill.below ? 4 : 0) +\n\t\t\t((seg.otherFill && seg.otherFill.above) ? 2 : 0) +\n\t\t\t((seg.otherFill && seg.otherFill.below) ? 1 : 0);\n\t\tif (selection[index] !== 0){\n\t\t\t// copy the segment to the results, while also calculating the fill status\n\t\t\tresult.push({\n\t\t\t\tid: buildLog ? buildLog.segmentId() : -1,\n\t\t\t\tstart: seg.start,\n\t\t\t\tend: seg.end,\n\t\t\t\tmyFill: {\n\t\t\t\t\tabove: selection[index] === 1, // 1 if filled above\n\t\t\t\t\tbelow: selection[index] === 2  // 2 if filled below\n\t\t\t\t},\n\t\t\t\totherFill: null\n\t\t\t});\n\t\t}\n\t});\n\n\tif (buildLog)\n\t\tbuildLog.selected(result);\n\n\treturn result;\n}\n\nvar SegmentSelector = {\n\tunion: function(segments, buildLog){ // primary | secondary\n\t\t// above1 below1 above2 below2    Keep?               Value\n\t\t//    0      0      0      0   =>   no                  0\n\t\t//    0      0      0      1   =>   yes filled below    2\n\t\t//    0      0      1      0   =>   yes filled above    1\n\t\t//    0      0      1      1   =>   no                  0\n\t\t//    0      1      0      0   =>   yes filled below    2\n\t\t//    0      1      0      1   =>   yes filled below    2\n\t\t//    0      1      1      0   =>   no                  0\n\t\t//    0      1      1      1   =>   no                  0\n\t\t//    1      0      0      0   =>   yes filled above    1\n\t\t//    1      0      0      1   =>   no                  0\n\t\t//    1      0      1      0   =>   yes filled above    1\n\t\t//    1      0      1      1   =>   no                  0\n\t\t//    1      1      0      0   =>   no                  0\n\t\t//    1      1      0      1   =>   no                  0\n\t\t//    1      1      1      0   =>   no                  0\n\t\t//    1      1      1      1   =>   no                  0\n\t\treturn select(segments, [\n\t\t\t0, 2, 1, 0,\n\t\t\t2, 2, 0, 0,\n\t\t\t1, 0, 1, 0,\n\t\t\t0, 0, 0, 0\n\t\t], buildLog);\n\t},\n\tintersect: function(segments, buildLog){ // primary & secondary\n\t\t// above1 below1 above2 below2    Keep?               Value\n\t\t//    0      0      0      0   =>   no                  0\n\t\t//    0      0      0      1   =>   no                  0\n\t\t//    0      0      1      0   =>   no                  0\n\t\t//    0      0      1      1   =>   no                  0\n\t\t//    0      1      0      0   =>   no                  0\n\t\t//    0      1      0      1   =>   yes filled below    2\n\t\t//    0      1      1      0   =>   no                  0\n\t\t//    0      1      1      1   =>   yes filled below    2\n\t\t//    1      0      0      0   =>   no                  0\n\t\t//    1      0      0      1   =>   no                  0\n\t\t//    1      0      1      0   =>   yes filled above    1\n\t\t//    1      0      1      1   =>   yes filled above    1\n\t\t//    1      1      0      0   =>   no                  0\n\t\t//    1      1      0      1   =>   yes filled below    2\n\t\t//    1      1      1      0   =>   yes filled above    1\n\t\t//    1      1      1      1   =>   no                  0\n\t\treturn select(segments, [\n\t\t\t0, 0, 0, 0,\n\t\t\t0, 2, 0, 2,\n\t\t\t0, 0, 1, 1,\n\t\t\t0, 2, 1, 0\n\t\t], buildLog);\n\t},\n\tdifference: function(segments, buildLog){ // primary - secondary\n\t\t// above1 below1 above2 below2    Keep?               Value\n\t\t//    0      0      0      0   =>   no                  0\n\t\t//    0      0      0      1   =>   no                  0\n\t\t//    0      0      1      0   =>   no                  0\n\t\t//    0      0      1      1   =>   no                  0\n\t\t//    0      1      0      0   =>   yes filled below    2\n\t\t//    0      1      0      1   =>   no                  0\n\t\t//    0      1      1      0   =>   yes filled below    2\n\t\t//    0      1      1      1   =>   no                  0\n\t\t//    1      0      0      0   =>   yes filled above    1\n\t\t//    1      0      0      1   =>   yes filled above    1\n\t\t//    1      0      1      0   =>   no                  0\n\t\t//    1      0      1      1   =>   no                  0\n\t\t//    1      1      0      0   =>   no                  0\n\t\t//    1      1      0      1   =>   yes filled above    1\n\t\t//    1      1      1      0   =>   yes filled below    2\n\t\t//    1      1      1      1   =>   no                  0\n\t\treturn select(segments, [\n\t\t\t0, 0, 0, 0,\n\t\t\t2, 0, 2, 0,\n\t\t\t1, 1, 0, 0,\n\t\t\t0, 1, 2, 0\n\t\t], buildLog);\n\t},\n\tdifferenceRev: function(segments, buildLog){ // secondary - primary\n\t\t// above1 below1 above2 below2    Keep?               Value\n\t\t//    0      0      0      0   =>   no                  0\n\t\t//    0      0      0      1   =>   yes filled below    2\n\t\t//    0      0      1      0   =>   yes filled above    1\n\t\t//    0      0      1      1   =>   no                  0\n\t\t//    0      1      0      0   =>   no                  0\n\t\t//    0      1      0      1   =>   no                  0\n\t\t//    0      1      1      0   =>   yes filled above    1\n\t\t//    0      1      1      1   =>   yes filled above    1\n\t\t//    1      0      0      0   =>   no                  0\n\t\t//    1      0      0      1   =>   yes filled below    2\n\t\t//    1      0      1      0   =>   no                  0\n\t\t//    1      0      1      1   =>   yes filled below    2\n\t\t//    1      1      0      0   =>   no                  0\n\t\t//    1      1      0      1   =>   no                  0\n\t\t//    1      1      1      0   =>   no                  0\n\t\t//    1      1      1      1   =>   no                  0\n\t\treturn select(segments, [\n\t\t\t0, 2, 1, 0,\n\t\t\t0, 0, 1, 1,\n\t\t\t0, 2, 0, 2,\n\t\t\t0, 0, 0, 0\n\t\t], buildLog);\n\t},\n\txor: function(segments, buildLog){ // primary ^ secondary\n\t\t// above1 below1 above2 below2    Keep?               Value\n\t\t//    0      0      0      0   =>   no                  0\n\t\t//    0      0      0      1   =>   yes filled below    2\n\t\t//    0      0      1      0   =>   yes filled above    1\n\t\t//    0      0      1      1   =>   no                  0\n\t\t//    0      1      0      0   =>   yes filled below    2\n\t\t//    0      1      0      1   =>   no                  0\n\t\t//    0      1      1      0   =>   no                  0\n\t\t//    0      1      1      1   =>   yes filled above    1\n\t\t//    1      0      0      0   =>   yes filled above    1\n\t\t//    1      0      0      1   =>   no                  0\n\t\t//    1      0      1      0   =>   no                  0\n\t\t//    1      0      1      1   =>   yes filled below    2\n\t\t//    1      1      0      0   =>   no                  0\n\t\t//    1      1      0      1   =>   yes filled above    1\n\t\t//    1      1      1      0   =>   yes filled below    2\n\t\t//    1      1      1      1   =>   no                  0\n\t\treturn select(segments, [\n\t\t\t0, 2, 1, 0,\n\t\t\t2, 0, 0, 1,\n\t\t\t1, 0, 0, 2,\n\t\t\t0, 1, 2, 0\n\t\t], buildLog);\n\t}\n};\n\nmodule.exports = SegmentSelector;\n\n\n/***/ }),\n\n/***/ 14847:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_7608566__) {\n\n\"use strict\";\nvar __webpack_unused_export__;\n\n\n\nvar Transform    = (__nested_webpack_require_7608566__(21630).Transform);\nvar streamParser = __nested_webpack_require_7608566__(90715);\n\n\nfunction ParserStream() {\n  Transform.call(this, { readableObjectMode: true });\n}\n\n// Inherit from Transform\nParserStream.prototype = Object.create(Transform.prototype);\nParserStream.prototype.constructor = ParserStream;\n\nstreamParser(ParserStream.prototype);\n\n\n__webpack_unused_export__ = ParserStream;\n\n\nexports.OF = function (src, start, dest) {\n  for (var i = start, j = 0; j < dest.length;) {\n    if (src[i++] !== dest[j++]) return false;\n  }\n  return true;\n};\n\nexports.eG = function (str, format) {\n  var arr = [], i = 0;\n\n  if (format && format === 'hex') {\n    while (i < str.length) {\n      arr.push(parseInt(str.slice(i, i + 2), 16));\n      i += 2;\n    }\n  } else {\n    for (; i < str.length; i++) {\n      /* eslint-disable no-bitwise */\n      arr.push(str.charCodeAt(i) & 0xFF);\n    }\n  }\n\n  return arr;\n};\n\nexports.mP = function (data, offset) {\n  return data[offset] | (data[offset + 1] << 8);\n};\n\nexports.n8 = function (data, offset) {\n  return data[offset + 1] | (data[offset] << 8);\n};\n\nexports.nm = function (data, offset) {\n  return data[offset] |\n    (data[offset + 1] << 8) |\n    (data[offset + 2] << 16) |\n    (data[offset + 3] * 0x1000000);\n};\n\nexports.Ag = function (data, offset) {\n  return data[offset + 3] |\n    (data[offset + 2] << 8) |\n    (data[offset + 1] << 16) |\n    (data[offset] * 0x1000000);\n};\n\n\nfunction ProbeError(message, code, statusCode) {\n  Error.call(this);\n\n  // Include stack trace in error object\n  if (Error.captureStackTrace) {\n    // Chrome and NodeJS\n    Error.captureStackTrace(this, this.constructor);\n  } else {\n    // FF, IE 10+ and Safari 6+. Fallback for others\n    this.stack = (new Error()).stack || '';\n  }\n\n  this.name = this.constructor.name;\n\n  this.message = message;\n  if (code) this.code = code;\n  if (statusCode) this.statusCode = statusCode;\n}\n\n// Inherit from Error\nProbeError.prototype = Object.create(Error.prototype);\nProbeError.prototype.constructor = ProbeError;\n\n\n__webpack_unused_export__ = ProbeError;\n\n\n/***/ }),\n\n/***/ 71371:\n/***/ (function(module) {\n\n\"use strict\";\n\n/* eslint-disable no-bitwise */\n/* eslint-disable consistent-return */\n\n\n\n//////////////////////////////////////////////////////////////////////////\n// Helpers\n//\nfunction error(message, code) {\n  var err = new Error(message);\n  err.code = code;\n  return err;\n}\n\n\nfunction utf8_decode(str) {\n  try {\n    return decodeURIComponent(escape(str));\n  } catch (_) {\n    return str;\n  }\n}\n\n\n//////////////////////////////////////////////////////////////////////////\n// Exif parser\n//\n// Input:\n//  - jpeg_bin:   Uint8Array - jpeg file\n//  - exif_start: Number     - start of TIFF header (after Exif\\0\\0)\n//  - exif_end:   Number     - end of Exif segment\n//  - on_entry:   Number     - callback\n//\nfunction ExifParser(jpeg_bin, exif_start, exif_end) {\n  // Uint8Array, exif without signature (which isn't included in offsets)\n  this.input      = jpeg_bin.subarray(exif_start, exif_end);\n\n  // offset correction for `on_entry` callback\n  this.start      = exif_start;\n\n  // Check TIFF header (includes byte alignment and first IFD offset)\n  var sig = String.fromCharCode.apply(null, this.input.subarray(0, 4));\n\n  if (sig !== 'II\\x2A\\0' && sig !== 'MM\\0\\x2A') {\n    throw error('invalid TIFF signature', 'EBADDATA');\n  }\n\n  // true if motorola (big endian) byte alignment, false if intel\n  this.big_endian = sig[0] === 'M';\n}\n\n\nExifParser.prototype.each = function (on_entry) {\n  // allow premature exit\n  this.aborted = false;\n\n  var offset = this.read_uint32(4);\n\n  this.ifds_to_read = [ {\n    id:     0,\n    offset: offset\n  } ];\n\n  while (this.ifds_to_read.length > 0 && !this.aborted) {\n    var i = this.ifds_to_read.shift();\n    if (!i.offset) continue;\n    this.scan_ifd(i.id, i.offset, on_entry);\n  }\n};\n\n\nExifParser.prototype.read_uint16 = function (offset) {\n  var d = this.input;\n  if (offset + 2 > d.length) throw error('unexpected EOF', 'EBADDATA');\n\n  return this.big_endian ?\n    d[offset] * 0x100 + d[offset + 1] :\n    d[offset] + d[offset + 1] * 0x100;\n};\n\n\nExifParser.prototype.read_uint32 = function (offset) {\n  var d = this.input;\n  if (offset + 4 > d.length) throw error('unexpected EOF', 'EBADDATA');\n\n  return this.big_endian ?\n    d[offset] * 0x1000000 + d[offset + 1] * 0x10000 + d[offset + 2] * 0x100 + d[offset + 3] :\n    d[offset] + d[offset + 1] * 0x100 + d[offset + 2] * 0x10000 + d[offset + 3] * 0x1000000;\n};\n\n\nExifParser.prototype.is_subifd_link = function (ifd, tag) {\n  return (ifd === 0 && tag === 0x8769) || // SubIFD\n         (ifd === 0 && tag === 0x8825) || // GPS Info\n         (ifd === 0x8769 && tag === 0xA005); // Interop IFD\n};\n\n\n// Returns byte length of a single component of a given format\n//\nExifParser.prototype.exif_format_length = function (format) {\n  switch (format) {\n    case 1: // byte\n    case 2: // ascii\n    case 6: // sbyte\n    case 7: // undefined\n      return 1;\n\n    case 3: // short\n    case 8: // sshort\n      return 2;\n\n    case 4:  // long\n    case 9:  // slong\n    case 11: // float\n      return 4;\n\n    case 5:  // rational\n    case 10: // srational\n    case 12: // double\n      return 8;\n\n    default:\n      // unknown type\n      return 0;\n  }\n};\n\n\n// Reads Exif data\n//\nExifParser.prototype.exif_format_read = function (format, offset) {\n  var v;\n\n  switch (format) {\n    case 1: // byte\n    case 2: // ascii\n      v = this.input[offset];\n      return v;\n\n    case 6: // sbyte\n      v = this.input[offset];\n      return v | (v & 0x80) * 0x1fffffe;\n\n    case 3: // short\n      v = this.read_uint16(offset);\n      return v;\n\n    case 8: // sshort\n      v = this.read_uint16(offset);\n      return v | (v & 0x8000) * 0x1fffe;\n\n    case 4: // long\n      v = this.read_uint32(offset);\n      return v;\n\n    case 9: // slong\n      v = this.read_uint32(offset);\n      return v | 0;\n\n    case 5:  // rational\n    case 10: // srational\n    case 11: // float\n    case 12: // double\n      return null; // not implemented\n\n    case 7: // undefined\n      return null; // blob\n\n    default:\n      // unknown type\n      return null;\n  }\n};\n\n\nExifParser.prototype.scan_ifd = function (ifd_no, offset, on_entry) {\n  var entry_count = this.read_uint16(offset);\n\n  offset += 2;\n\n  for (var i = 0; i < entry_count; i++) {\n    var tag    = this.read_uint16(offset);\n    var format = this.read_uint16(offset + 2);\n    var count  = this.read_uint32(offset + 4);\n\n    var comp_length    = this.exif_format_length(format);\n    var data_length    = count * comp_length;\n    var data_offset    = data_length <= 4 ? offset + 8 : this.read_uint32(offset + 8);\n    var is_subifd_link = false;\n\n    if (data_offset + data_length > this.input.length) {\n      throw error('unexpected EOF', 'EBADDATA');\n    }\n\n    var value = [];\n    var comp_offset = data_offset;\n\n    for (var j = 0; j < count; j++, comp_offset += comp_length) {\n      var item = this.exif_format_read(format, comp_offset);\n      if (item === null) {\n        value = null;\n        break;\n      }\n      value.push(item);\n    }\n\n    if (Array.isArray(value) && format === 2) {\n      value = utf8_decode(String.fromCharCode.apply(null, value));\n      if (value && value[value.length - 1] === '\\0') value = value.slice(0, -1);\n    }\n\n    if (this.is_subifd_link(ifd_no, tag)) {\n      if (Array.isArray(value) && Number.isInteger(value[0]) && value[0] > 0) {\n        this.ifds_to_read.push({\n          id:     tag,\n          offset: value[0]\n        });\n        is_subifd_link = true;\n      }\n    }\n\n    var entry = {\n      is_big_endian:  this.big_endian,\n      ifd:            ifd_no,\n      tag:            tag,\n      format:         format,\n      count:          count,\n      entry_offset:   offset + this.start,\n      data_length:    data_length,\n      data_offset:    data_offset + this.start,\n      value:          value,\n      is_subifd_link: is_subifd_link\n    };\n\n    if (on_entry(entry) === false) {\n      this.aborted = true;\n      return;\n    }\n\n    offset += 12;\n  }\n\n  if (ifd_no === 0) {\n    this.ifds_to_read.push({\n      id:     1,\n      offset: this.read_uint32(offset)\n    });\n  }\n};\n\n\nmodule.exports.ExifParser = ExifParser;\n\n// returns orientation stored in Exif (1-8), 0 if none was found, -1 if error\nmodule.exports.get_orientation = function (data) {\n  var orientation = 0;\n  try {\n    new ExifParser(data, 0, data.length).each(function (entry) {\n      if (entry.ifd === 0 && entry.tag === 0x112 && Array.isArray(entry.value)) {\n        orientation = entry.value[0];\n        return false;\n      }\n    });\n    return orientation;\n  } catch (err) {\n    return -1;\n  }\n};\n\n\n/***/ }),\n\n/***/ 76767:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7617354__) {\n\n\"use strict\";\n// Utils used to parse miaf-based files (avif/heic/heif)\n//\n// ISO media file spec:\n// https://web.archive.org/web/20180219054429/http://l.web.umkc.edu/lizhu/teaching/2016sp.video-communication/ref/mp4.pdf\n//\n// ISO image file format spec:\n// https://standards.iso.org/ittf/PubliclyAvailableStandards/c066067_ISO_IEC_23008-12_2017.zip\n//\n\n\n\n/* eslint-disable consistent-return */\n/* eslint-disable no-bitwise */\n\nvar readUInt16BE = (__nested_webpack_require_7617354__(14847)/* .readUInt16BE */ .n8);\nvar readUInt32BE = (__nested_webpack_require_7617354__(14847)/* .readUInt32BE */ .Ag);\n\n/*\n * interface Box {\n *   size:       uint32;   // if size == 0, box lasts until EOF\n *   boxtype:    char[4];\n *   largesize?: uint64;   // only if size == 1\n *   usertype?:  char[16]; // only if boxtype == 'uuid'\n * }\n */\nfunction unbox(data, offset) {\n  if (data.length < 4 + offset) return null;\n\n  var size = readUInt32BE(data, offset);\n\n  // size includes first 4 bytes (length)\n  if (data.length < size + offset || size < 8) return null;\n\n  // if size === 1, real size is following uint64 (only for big boxes, not needed)\n  // if size === 0, real size is until the end of the file (only for big boxes, not needed)\n\n  return {\n    boxtype: String.fromCharCode.apply(null, data.slice(offset + 4, offset + 8)),\n    data:    data.slice(offset + 8, offset + size),\n    end:     offset + size\n  };\n}\n\n\nmodule.exports.unbox = unbox;\n\n\n// parses `meta` -> `iprp` -> `ipco` box, returns:\n// {\n//   sizes: [ { width, height } ],\n//   transforms: [ { type, value } ]\n// }\nfunction scan_ipco(data, sandbox) {\n  var offset = 0;\n\n  for (;;) {\n    var box = unbox(data, offset);\n    if (!box) break;\n\n    switch (box.boxtype) {\n      case 'ispe':\n        sandbox.sizes.push({\n          width:  readUInt32BE(box.data, 4),\n          height: readUInt32BE(box.data, 8)\n        });\n        break;\n\n      case 'irot':\n        sandbox.transforms.push({\n          type: 'irot',\n          value: box.data[0] & 3\n        });\n        break;\n\n      case 'imir':\n        sandbox.transforms.push({\n          type: 'imir',\n          value: box.data[0] & 1\n        });\n        break;\n    }\n\n    offset = box.end;\n  }\n}\n\n\nfunction readUIntBE(data, offset, size) {\n  var result = 0;\n\n  for (var i = 0; i < size; i++) {\n    result = result * 256 + (data[offset + i] || 0);\n  }\n\n  return result;\n}\n\n\n// parses `meta` -> `iloc` box\nfunction scan_iloc(data, sandbox) {\n  var offset_size = (data[4] >> 4) & 0xF;\n  var length_size = data[4] & 0xF;\n  var base_offset_size = (data[5] >> 4) & 0xF;\n  var item_count = readUInt16BE(data, 6);\n  var offset = 8;\n\n  for (var i = 0; i < item_count; i++) {\n    var item_ID = readUInt16BE(data, offset);\n    offset += 2;\n\n    var data_reference_index = readUInt16BE(data, offset);\n    offset += 2;\n\n    var base_offset = readUIntBE(data, offset, base_offset_size);\n    offset += base_offset_size;\n\n    var extent_count = readUInt16BE(data, offset);\n    offset += 2;\n\n    if (data_reference_index === 0 && extent_count === 1) {\n      var first_extent_offset = readUIntBE(data, offset, offset_size);\n      var first_extent_length = readUIntBE(data, offset + offset_size, length_size);\n      sandbox.item_loc[item_ID] = { length: first_extent_length, offset: first_extent_offset + base_offset };\n    }\n\n    offset += extent_count * (offset_size + length_size);\n  }\n}\n\n\n// parses `meta` -> `iinf` box\nfunction scan_iinf(data, sandbox) {\n  var item_count = readUInt16BE(data, 4);\n  var offset = 6;\n\n  for (var i = 0; i < item_count; i++) {\n    var box = unbox(data, offset);\n    if (!box) break;\n    if (box.boxtype === 'infe') {\n      var item_id = readUInt16BE(box.data, 4);\n      var item_name = '';\n\n      for (var pos = 8; pos < box.data.length && box.data[pos]; pos++) {\n        item_name += String.fromCharCode(box.data[pos]);\n      }\n\n      sandbox.item_inf[item_name] = item_id;\n    }\n    offset = box.end;\n  }\n}\n\n\n// parses `meta` -> `iprp` box\nfunction scan_iprp(data, sandbox) {\n  var offset = 0;\n\n  for (;;) {\n    var box = unbox(data, offset);\n    if (!box) break;\n    if (box.boxtype === 'ipco') scan_ipco(box.data, sandbox);\n    offset = box.end;\n  }\n}\n\n\n// parses `meta` box\nfunction scan_meta(data, sandbox) {\n  var offset = 4; // version + flags\n\n  for (;;) {\n    var box = unbox(data, offset);\n    if (!box) break;\n    if (box.boxtype === 'iprp') scan_iprp(box.data, sandbox);\n    if (box.boxtype === 'iloc') scan_iloc(box.data, sandbox);\n    if (box.boxtype === 'iinf') scan_iinf(box.data, sandbox);\n    offset = box.end;\n  }\n}\n\n\n// get image with largest single dimension as base\nfunction getMaxSize(sizes) {\n  var maxWidthSize = sizes.reduce(function (a, b) {\n    return a.width > b.width || (a.width === b.width && a.height > b.height) ? a : b;\n  });\n\n  var maxHeightSize = sizes.reduce(function (a, b) {\n    return a.height > b.height || (a.height === b.height && a.width > b.width) ? a : b;\n  });\n\n  var maxSize;\n\n  if (maxWidthSize.width > maxHeightSize.height ||\n      (maxWidthSize.width === maxHeightSize.height && maxWidthSize.height > maxHeightSize.width)) {\n    maxSize = maxWidthSize;\n  } else {\n    maxSize = maxHeightSize;\n  }\n\n  return maxSize;\n}\n\n\nmodule.exports.readSizeFromMeta = function (data) {\n  var sandbox = {\n    sizes: [],\n    transforms: [],\n    item_inf: {},\n    item_loc: {}\n  };\n\n  scan_meta(data, sandbox);\n\n  if (!sandbox.sizes.length) return;\n\n  var maxSize = getMaxSize(sandbox.sizes);\n\n  var orientation = 1;\n\n  // convert imir/irot to exif orientation\n  sandbox.transforms.forEach(function (transform) {\n    var rotate_ccw  = { 1: 6, 2: 5, 3: 8, 4: 7, 5: 4, 6: 3, 7: 2, 8: 1 };\n    var mirror_vert = { 1: 4, 2: 3, 3: 2, 4: 1, 5: 6, 6: 5, 7: 8, 8: 7 };\n\n    if (transform.type === 'imir') {\n      if (transform.value === 0) {\n        // vertical flip\n        orientation = mirror_vert[orientation];\n      } else {\n        // horizontal flip = vertical flip + 180 deg rotation\n        orientation = mirror_vert[orientation];\n        orientation = rotate_ccw[orientation];\n        orientation = rotate_ccw[orientation];\n      }\n    }\n\n    if (transform.type === 'irot') {\n      // counter-clockwise rotation 90 deg 0-3 times\n      for (var i = 0; i < transform.value; i++) {\n        orientation = rotate_ccw[orientation];\n      }\n    }\n  });\n\n  var exif_location = null;\n\n  if (sandbox.item_inf.Exif) {\n    exif_location = sandbox.item_loc[sandbox.item_inf.Exif];\n  }\n\n  return {\n    width: maxSize.width,\n    height: maxSize.height,\n    orientation: sandbox.transforms.length ? orientation : null,\n    variants: sandbox.sizes,\n    exif_location: exif_location\n  };\n};\n\n\nmodule.exports.getMimeType = function (data) {\n  var brand = String.fromCharCode.apply(null, data.slice(0, 4));\n  var compat = {};\n\n  compat[brand] = true;\n\n  for (var i = 8; i < data.length; i += 4) {\n    compat[String.fromCharCode.apply(null, data.slice(i, i + 4))] = true;\n  }\n\n  // heic and avif are superset of miaf, so they should all list mif1 as compatible\n  if (!compat.mif1 && !compat.msf1 && !compat.miaf) return;\n\n  if (brand === 'avif' || brand === 'avis' || brand === 'avio') {\n    // `.avifs` and `image/avif-sequence` are removed from spec, all files have single type\n    return { type: 'avif', mime: 'image/avif' };\n  }\n\n  // https://nokiatech.github.io/heif/technical.html\n  if (brand === 'heic' || brand === 'heix') {\n    return { type: 'heic', mime: 'image/heic' };\n  }\n\n  if (brand === 'hevc' || brand === 'hevx') {\n    return { type: 'heic', mime: 'image/heic-sequence' };\n  }\n\n  if (compat.avif || compat.avis) {\n    return { type: 'avif', mime: 'image/avif' };\n  }\n\n  if (compat.heic || compat.heix || compat.hevc || compat.hevx || compat.heis) {\n    if (compat.msf1) {\n      return { type: 'heif', mime: 'image/heif-sequence' };\n    }\n    return { type: 'heif', mime: 'image/heif' };\n  }\n\n  return { type: 'avif', mime: 'image/avif' };\n};\n\n\n/***/ }),\n\n/***/ 24461:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7625319__) {\n\n\"use strict\";\n// Utils used to parse miaf-based files (avif/heic/heif)\n//\n//  - image collections are not supported (only last size is reported)\n//  - images with metadata encoded after image data are not supported\n//  - images without any `ispe` box are not supported\n//\n\n/* eslint-disable consistent-return */\n\n\n\n\nvar str2arr      = (__nested_webpack_require_7625319__(14847)/* .str2arr */ .eG);\nvar sliceEq      = (__nested_webpack_require_7625319__(14847)/* .sliceEq */ .OF);\nvar readUInt32BE = (__nested_webpack_require_7625319__(14847)/* .readUInt32BE */ .Ag);\nvar miaf         = __nested_webpack_require_7625319__(76767);\nvar exif         = __nested_webpack_require_7625319__(71371);\n\nvar SIG_FTYP = str2arr('ftyp');\n\n\nmodule.exports = function (data) {\n  // ISO media file (avif format) starts with ftyp box:\n  // 0000 0020 6674 7970 6176 6966\n  //  (length)  f t  y p  a v  i f\n  //\n  if (!sliceEq(data, 4, SIG_FTYP)) return;\n\n  var firstBox = miaf.unbox(data, 0);\n  if (!firstBox) return;\n\n  var fileType = miaf.getMimeType(firstBox.data);\n  if (!fileType) return;\n\n  var meta, offset = firstBox.end;\n\n  for (;;) {\n    var box = miaf.unbox(data, offset);\n    if (!box) break;\n    offset = box.end;\n\n    // mdat block SHOULD be last (but not strictly required),\n    // so it's unlikely that metadata is after it\n    if (box.boxtype === 'mdat') return;\n    if (box.boxtype === 'meta') {\n      meta = box.data;\n      break;\n    }\n  }\n\n  if (!meta) return;\n\n  var imgSize = miaf.readSizeFromMeta(meta);\n\n  if (!imgSize) return;\n\n  var result = {\n    width:    imgSize.width,\n    height:   imgSize.height,\n    type:     fileType.type,\n    mime:     fileType.mime,\n    wUnits:   'px',\n    hUnits:   'px'\n  };\n\n  if (imgSize.variants.length > 1) {\n    result.variants = imgSize.variants;\n  }\n\n  if (imgSize.orientation) {\n    result.orientation = imgSize.orientation;\n  }\n\n  if (imgSize.exif_location &&\n      imgSize.exif_location.offset + imgSize.exif_location.length <= data.length) {\n\n    var sig_offset = readUInt32BE(data, imgSize.exif_location.offset);\n    var exif_data = data.slice(\n      imgSize.exif_location.offset + sig_offset + 4,\n      imgSize.exif_location.offset + imgSize.exif_location.length);\n\n    var orientation = exif.get_orientation(exif_data);\n\n    if (orientation > 0) result.orientation = orientation;\n  }\n\n  return result;\n};\n\n\n/***/ }),\n\n/***/ 2504:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7627700__) {\n\n\"use strict\";\n\n\n/* eslint-disable consistent-return */\n\nvar str2arr      = (__nested_webpack_require_7627700__(14847)/* .str2arr */ .eG);\nvar sliceEq      = (__nested_webpack_require_7627700__(14847)/* .sliceEq */ .OF);\nvar readUInt16LE = (__nested_webpack_require_7627700__(14847)/* .readUInt16LE */ .mP);\n\nvar SIG_BM = str2arr('BM');\n\n\nmodule.exports = function (data) {\n  if (data.length < 26) return;\n\n  if (!sliceEq(data, 0, SIG_BM)) return;\n\n  return {\n    width:  readUInt16LE(data, 18),\n    height: readUInt16LE(data, 22),\n    type: 'bmp',\n    mime: 'image/bmp',\n    wUnits: 'px',\n    hUnits: 'px'\n  };\n};\n\n\n/***/ }),\n\n/***/ 47342:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7628369__) {\n\n\"use strict\";\n\n\n/* eslint-disable consistent-return */\n\nvar str2arr      = (__nested_webpack_require_7628369__(14847)/* .str2arr */ .eG);\nvar sliceEq      = (__nested_webpack_require_7628369__(14847)/* .sliceEq */ .OF);\nvar readUInt16LE = (__nested_webpack_require_7628369__(14847)/* .readUInt16LE */ .mP);\n\n\nvar SIG_GIF87a = str2arr('GIF87a');\nvar SIG_GIF89a = str2arr('GIF89a');\n\n\nmodule.exports = function (data) {\n  if (data.length < 10) return;\n\n  if (!sliceEq(data, 0, SIG_GIF87a) && !sliceEq(data, 0, SIG_GIF89a)) return;\n\n  return {\n    width:  readUInt16LE(data, 6),\n    height: readUInt16LE(data, 8),\n    type: 'gif',\n    mime: 'image/gif',\n    wUnits: 'px',\n    hUnits: 'px'\n  };\n};\n\n\n/***/ }),\n\n/***/ 31355:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7629118__) {\n\n\"use strict\";\n\n\n/* eslint-disable consistent-return */\n\nvar readUInt16LE = (__nested_webpack_require_7629118__(14847)/* .readUInt16LE */ .mP);\n\nvar HEADER = 0;\nvar TYPE_ICO = 1;\nvar INDEX_SIZE = 16;\n\n// Format specification:\n// https://en.wikipedia.org/wiki/ICO_(file_format)#Icon_resource_structure\nmodule.exports = function (data) {\n  var header = readUInt16LE(data, 0);\n  var type = readUInt16LE(data, 2);\n  var numImages = readUInt16LE(data, 4);\n\n  if (header !== HEADER || type !== TYPE_ICO || !numImages) {\n    return;\n  }\n\n  var variants = [];\n  var maxSize = { width: 0, height: 0 };\n\n  for (var i = 0; i < numImages; i++) {\n    var width = data[6 + INDEX_SIZE * i] || 256;\n    var height = data[6 + INDEX_SIZE * i + 1] || 256;\n    var size = { width: width, height: height };\n    variants.push(size);\n\n    if (width > maxSize.width || height > maxSize.height) {\n      maxSize = size;\n    }\n  }\n\n  return {\n    width: maxSize.width,\n    height: maxSize.height,\n    variants: variants,\n    type: 'ico',\n    mime: 'image/x-icon',\n    wUnits: 'px',\n    hUnits: 'px'\n  };\n};\n\n\n/***/ }),\n\n/***/ 54261:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7630282__) {\n\n\"use strict\";\n\n\n/* eslint-disable consistent-return */\n\nvar readUInt16BE = (__nested_webpack_require_7630282__(14847)/* .readUInt16BE */ .n8);\nvar str2arr      = (__nested_webpack_require_7630282__(14847)/* .str2arr */ .eG);\nvar sliceEq      = (__nested_webpack_require_7630282__(14847)/* .sliceEq */ .OF);\nvar exif         = __nested_webpack_require_7630282__(71371);\n\n\nvar SIG_EXIF  = str2arr('Exif\\0\\0');\n\n\nmodule.exports = function (data) {\n  if (data.length < 2) return;\n\n  // first marker of the file MUST be 0xFFD8,\n  // following by either 0xFFE0, 0xFFE2 or 0xFFE3\n  if (data[0] !== 0xFF || data[1] !== 0xD8 || data[2] !== 0xFF) return;\n\n  var offset = 2;\n\n  for (;;) {\n    // skip until we see 0xFF, see https://github.com/nodeca/probe-image-size/issues/68\n    for (;;) {\n      if (data.length - offset < 2) return;\n      if (data[offset++] === 0xFF) break;\n    }\n\n    var code = data[offset++];\n    var length;\n\n    // skip padding bytes\n    while (code === 0xFF) code = data[offset++];\n\n    // standalone markers, according to JPEG 1992,\n    // http://www.w3.org/Graphics/JPEG/itu-t81.pdf, see Table B.1\n    if ((0xD0 <= code && code <= 0xD9) || code === 0x01) {\n      length = 0;\n    } else if (0xC0 <= code && code <= 0xFE) {\n      // the rest of the unreserved markers\n      if (data.length - offset < 2) return;\n\n      length = readUInt16BE(data, offset) - 2;\n      offset += 2;\n    } else {\n      // unknown markers\n      return;\n    }\n\n    if (code === 0xD9 /* EOI */ || code === 0xDA /* SOS */) {\n      // end of the datastream\n      return;\n    }\n\n    var orientation;\n\n    // try to get orientation from Exif segment\n    if (code === 0xE1 && length >= 10 && sliceEq(data, offset, SIG_EXIF)) {\n      orientation = exif.get_orientation(data.slice(offset + 6, offset + length));\n    }\n\n    if (length >= 5 &&\n        (0xC0 <= code && code <= 0xCF) &&\n        code !== 0xC4 && code !== 0xC8 && code !== 0xCC) {\n\n      if (data.length - offset < length) return;\n\n      var result = {\n        width:  readUInt16BE(data, offset + 3),\n        height: readUInt16BE(data, offset + 1),\n        type:   'jpg',\n        mime:   'image/jpeg',\n        wUnits: 'px',\n        hUnits: 'px'\n      };\n\n      if (orientation > 0) {\n        result.orientation = orientation;\n      }\n\n      return result;\n    }\n\n    offset += length;\n  }\n};\n\n\n/***/ }),\n\n/***/ 6303:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7632659__) {\n\n\"use strict\";\n\n\n/* eslint-disable consistent-return */\n\nvar str2arr      = (__nested_webpack_require_7632659__(14847)/* .str2arr */ .eG);\nvar sliceEq      = (__nested_webpack_require_7632659__(14847)/* .sliceEq */ .OF);\nvar readUInt32BE = (__nested_webpack_require_7632659__(14847)/* .readUInt32BE */ .Ag);\n\n\nvar SIG_PNG  = str2arr('\\x89PNG\\r\\n\\x1a\\n');\nvar SIG_IHDR = str2arr('IHDR');\n\n\nmodule.exports = function (data) {\n  if (data.length < 24) return;\n\n  // check PNG signature\n  if (!sliceEq(data, 0, SIG_PNG)) return;\n\n  // check that first chunk is IHDR\n  if (!sliceEq(data, 12, SIG_IHDR)) return;\n\n  return {\n    width:  readUInt32BE(data, 16),\n    height: readUInt32BE(data, 20),\n    type: 'png',\n    mime: 'image/png',\n    wUnits: 'px',\n    hUnits: 'px'\n  };\n};\n\n\n/***/ }),\n\n/***/ 38689:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7633485__) {\n\n\"use strict\";\n\n\n/* eslint-disable consistent-return */\n\nvar str2arr      = (__nested_webpack_require_7633485__(14847)/* .str2arr */ .eG);\nvar sliceEq      = (__nested_webpack_require_7633485__(14847)/* .sliceEq */ .OF);\nvar readUInt32BE = (__nested_webpack_require_7633485__(14847)/* .readUInt32BE */ .Ag);\n\n\nvar SIG_8BPS  = str2arr('8BPS\\x00\\x01');\n\n\nmodule.exports = function (data) {\n  if (data.length < 6 + 16) return;\n\n  // signature + version\n  if (!sliceEq(data, 0, SIG_8BPS)) return;\n\n  return {\n    width:  readUInt32BE(data, 6 + 12),\n    height: readUInt32BE(data, 6 + 8),\n    type: 'psd',\n    mime: 'image/vnd.adobe.photoshop',\n    wUnits: 'px',\n    hUnits: 'px'\n  };\n};\n\n\n/***/ }),\n\n/***/ 6881:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/* eslint-disable consistent-return */\n\nfunction isWhiteSpace(chr) {\n  return chr === 0x20 || chr === 0x09 || chr === 0x0D || chr === 0x0A;\n}\n\n// Filter NaN, Infinity, < 0\nfunction isFinitePositive(val) {\n  return typeof val === 'number' && isFinite(val) && val > 0;\n}\n\nfunction canBeSvg(buf) {\n  var i = 0, max = buf.length;\n\n  // byte order mark, https://github.com/nodeca/probe-image-size/issues/57\n  if (buf[0] === 0xEF && buf[1] === 0xBB && buf[2] === 0xBF) i = 3;\n\n  while (i < max && isWhiteSpace(buf[i])) i++;\n\n  if (i === max) return false;\n  return buf[i] === 0x3c; /* < */\n}\n\n\n// skip `<?` (comments), `<!` (directives, cdata, doctype),\n// looking for `<svg>` or `<NAMESPACE:svg>`\nvar SVG_HEADER_RE  = /<[-_.:a-zA-Z0-9][^>]*>/;\n\n// test if the top level element is svg + optional namespace,\n// used to skip svg embedded in html\nvar SVG_TAG_RE     = /^<([-_.:a-zA-Z0-9]+:)?svg\\s/;\n\nvar SVG_WIDTH_RE   = /[^-]\\bwidth=\"([^%]+?)\"|[^-]\\bwidth='([^%]+?)'/;\nvar SVG_HEIGHT_RE  = /\\bheight=\"([^%]+?)\"|\\bheight='([^%]+?)'/;\nvar SVG_VIEWBOX_RE = /\\bview[bB]ox=\"(.+?)\"|\\bview[bB]ox='(.+?)'/;\nvar SVG_UNITS_RE   = /in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;\n\nfunction svgAttrs(str) {\n  var width   = str.match(SVG_WIDTH_RE);\n  var height  = str.match(SVG_HEIGHT_RE);\n  var viewbox = str.match(SVG_VIEWBOX_RE);\n\n  return {\n    width:   width && (width[1] || width[2]),\n    height:  height && (height[1] || height[2]),\n    viewbox: viewbox && (viewbox[1] || viewbox[2])\n  };\n}\n\n\nfunction units(str) {\n  if (!SVG_UNITS_RE.test(str)) return 'px';\n\n  return str.match(SVG_UNITS_RE)[0];\n}\n\n\nmodule.exports = function (data) {\n  if (!canBeSvg(data)) return;\n\n  var str = '';\n\n  for (var i = 0; i < data.length; i++) {\n    // 1. We can't rely on buffer features\n    // 2. Don't care about UTF16 because ascii is enougth for our goals\n    str += String.fromCharCode(data[i]);\n  }\n\n  // get top level element\n  var svgTag = (str.match(SVG_HEADER_RE) || [ '' ])[0];\n\n  // test if top level element is <svg>\n  if (!SVG_TAG_RE.test(svgTag)) return;\n\n  var attrs  = svgAttrs(svgTag);\n  var width  = parseFloat(attrs.width);\n  var height = parseFloat(attrs.height);\n\n  // Extract from direct values\n\n  if (attrs.width && attrs.height) {\n    if (!isFinitePositive(width) || !isFinitePositive(height)) return;\n\n    return {\n      width:  width,\n      height: height,\n      type:   'svg',\n      mime:   'image/svg+xml',\n      wUnits: units(attrs.width),\n      hUnits: units(attrs.height)\n    };\n  }\n\n  // Extract from viewbox\n\n  var parts = (attrs.viewbox || '').split(' ');\n  var viewbox = {\n    width:  parts[2],\n    height: parts[3]\n  };\n  var vbWidth  = parseFloat(viewbox.width);\n  var vbHeight = parseFloat(viewbox.height);\n\n  if (!isFinitePositive(vbWidth) || !isFinitePositive(vbHeight)) return;\n  if (units(viewbox.width) !== units(viewbox.height)) return;\n\n  var ratio = vbWidth / vbHeight;\n\n  if (attrs.width) {\n    if (!isFinitePositive(width)) return;\n\n    return {\n      width:  width,\n      height: width / ratio,\n      type:   'svg',\n      mime:   'image/svg+xml',\n      wUnits: units(attrs.width),\n      hUnits: units(attrs.width)\n    };\n  }\n\n  if (attrs.height) {\n    if (!isFinitePositive(height)) return;\n\n    return {\n      width:  height * ratio,\n      height: height,\n      type:   'svg',\n      mime:   'image/svg+xml',\n      wUnits: units(attrs.height),\n      hUnits: units(attrs.height)\n    };\n  }\n\n  return {\n    width:  vbWidth,\n    height: vbHeight,\n    type:   'svg',\n    mime:   'image/svg+xml',\n    wUnits: units(viewbox.width),\n    hUnits: units(viewbox.height)\n  };\n};\n\n\n/***/ }),\n\n/***/ 66278:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7637864__) {\n\n\"use strict\";\n\n\n/* eslint-disable consistent-return */\n\nvar str2arr = (__nested_webpack_require_7637864__(14847)/* .str2arr */ .eG);\nvar sliceEq = (__nested_webpack_require_7637864__(14847)/* .sliceEq */ .OF);\nvar readUInt16LE = (__nested_webpack_require_7637864__(14847)/* .readUInt16LE */ .mP);\nvar readUInt16BE = (__nested_webpack_require_7637864__(14847)/* .readUInt16BE */ .n8);\nvar readUInt32LE = (__nested_webpack_require_7637864__(14847)/* .readUInt32LE */ .nm);\nvar readUInt32BE = (__nested_webpack_require_7637864__(14847)/* .readUInt32BE */ .Ag);\n\n\nvar SIG_1 = str2arr('II\\x2A\\0');\nvar SIG_2 = str2arr('MM\\0\\x2A');\n\n\nfunction readUInt16(buffer, offset, is_big_endian) {\n  return is_big_endian ? readUInt16BE(buffer, offset) : readUInt16LE(buffer, offset);\n}\n\nfunction readUInt32(buffer, offset, is_big_endian) {\n  return is_big_endian ? readUInt32BE(buffer, offset) : readUInt32LE(buffer, offset);\n}\n\nfunction readIFDValue(data, data_offset, is_big_endian) {\n  var type       = readUInt16(data, data_offset + 2, is_big_endian);\n  var values     = readUInt32(data, data_offset + 4, is_big_endian);\n\n  if (values !== 1 || (type !== 3 && type !== 4)) return null;\n\n  if (type === 3) {\n    return readUInt16(data, data_offset + 8, is_big_endian);\n  }\n\n  return readUInt32(data, data_offset + 8, is_big_endian);\n}\n\nmodule.exports = function (data) {\n  if (data.length < 8) return;\n\n  // check TIFF signature\n  if (!sliceEq(data, 0, SIG_1) && !sliceEq(data, 0, SIG_2)) return;\n\n  var is_big_endian = (data[0] === 77 /* 'MM' */);\n  var count = readUInt32(data, 4, is_big_endian) - 8;\n\n  if (count < 0) return;\n\n  // skip until IFD\n  var offset = count + 8;\n\n  if (data.length - offset < 2) return;\n\n  // read number of IFD entries\n  var ifd_size = readUInt16(data, offset + 0, is_big_endian) * 12;\n\n  if (ifd_size <= 0) return;\n\n  offset += 2;\n\n  // read all IFD entries\n  if (data.length - offset < ifd_size) return;\n\n  var i, width, height, tag;\n\n  for (i = 0; i < ifd_size; i += 12) {\n    tag = readUInt16(data, offset + i, is_big_endian);\n\n    if (tag === 256) {\n      width = readIFDValue(data, offset + i, is_big_endian);\n    } else if (tag === 257) {\n      height = readIFDValue(data, offset + i, is_big_endian);\n    }\n  }\n\n  if (width && height) {\n    return {\n      width:  width,\n      height: height,\n      type:   'tiff',\n      mime:   'image/tiff',\n      wUnits: 'px',\n      hUnits: 'px'\n    };\n  }\n};\n\n\n/***/ }),\n\n/***/ 90784:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7640293__) {\n\n\"use strict\";\n\n\n/* eslint-disable no-bitwise */\n/* eslint-disable consistent-return */\n\nvar str2arr      = (__nested_webpack_require_7640293__(14847)/* .str2arr */ .eG);\nvar sliceEq      = (__nested_webpack_require_7640293__(14847)/* .sliceEq */ .OF);\nvar readUInt16LE = (__nested_webpack_require_7640293__(14847)/* .readUInt16LE */ .mP);\nvar readUInt32LE = (__nested_webpack_require_7640293__(14847)/* .readUInt32LE */ .nm);\nvar exif         = __nested_webpack_require_7640293__(71371);\n\n\nvar SIG_RIFF = str2arr('RIFF');\nvar SIG_WEBP = str2arr('WEBP');\n\n\nfunction parseVP8(data, offset) {\n  if (data[offset + 3] !== 0x9D || data[offset + 4] !== 0x01 || data[offset + 5] !== 0x2A) {\n    // bad code block signature\n    return;\n  }\n\n  return {\n    width:  readUInt16LE(data, offset + 6) & 0x3FFF,\n    height: readUInt16LE(data, offset + 8) & 0x3FFF,\n    type:   'webp',\n    mime:   'image/webp',\n    wUnits: 'px',\n    hUnits: 'px'\n  };\n}\n\n\nfunction parseVP8L(data, offset) {\n  if (data[offset] !== 0x2F) return;\n\n  var bits = readUInt32LE(data, offset + 1);\n\n  return {\n    width:  (bits & 0x3FFF) + 1,\n    height: ((bits >> 14) & 0x3FFF) + 1,\n    type:   'webp',\n    mime:   'image/webp',\n    wUnits: 'px',\n    hUnits: 'px'\n  };\n}\n\n\nfunction parseVP8X(data, offset) {\n  return  {\n    // TODO: replace with `data.readUIntLE(8, 3) + 1`\n    //       when 0.10 support is dropped\n    width:  ((data[offset + 6] << 16) | (data[offset + 5] << 8) | data[offset + 4]) + 1,\n    height: ((data[offset + 9] << offset) | (data[offset + 8] << 8) | data[offset + 7]) + 1,\n    type:   'webp',\n    mime:   'image/webp',\n    wUnits: 'px',\n    hUnits: 'px'\n  };\n}\n\n\nmodule.exports = function (data) {\n  if (data.length < 16) return;\n\n  // check /^RIFF....WEBPVP8([ LX])$/ signature\n  if (!sliceEq(data, 0, SIG_RIFF) && !sliceEq(data, 8, SIG_WEBP)) return;\n\n  var offset = 12;\n  var result = null;\n  var exif_orientation = 0;\n  var fileLength = readUInt32LE(data, 4) + 8;\n\n  if (fileLength > data.length) return;\n\n  while (offset + 8 < fileLength) {\n    if (data[offset] === 0) {\n      // after each chunk of odd size there should be 0 byte of padding, skip those\n      offset++;\n      continue;\n    }\n\n    var header = String.fromCharCode.apply(null, data.slice(offset, offset + 4));\n    var length = readUInt32LE(data, offset + 4);\n\n    if (header === 'VP8 ' && length >= 10) {\n      result = result || parseVP8(data, offset + 8);\n    } else if (header === 'VP8L' && length >= 9) {\n      result = result || parseVP8L(data, offset + 8);\n    } else if (header === 'VP8X' && length >= 10) {\n      result = result || parseVP8X(data, offset + 8);\n    } else if (header === 'EXIF') {\n      exif_orientation = exif.get_orientation(data.slice(offset + 8, offset + 8 + length));\n\n      // exif is the last chunk we care about, stop after it\n      offset = Infinity;\n    }\n\n    offset += 8 + length;\n  }\n\n  if (!result) return;\n\n  if (exif_orientation > 0) {\n    result.orientation = exif_orientation;\n  }\n\n  return result;\n};\n\n\n/***/ }),\n\n/***/ 91497:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7643318__) {\n\n\"use strict\";\n\n\n\nmodule.exports = {\n  avif: __nested_webpack_require_7643318__(24461),\n  bmp:  __nested_webpack_require_7643318__(2504),\n  gif:  __nested_webpack_require_7643318__(47342),\n  ico:  __nested_webpack_require_7643318__(31355),\n  jpeg: __nested_webpack_require_7643318__(54261),\n  png:  __nested_webpack_require_7643318__(6303),\n  psd:  __nested_webpack_require_7643318__(38689),\n  svg:  __nested_webpack_require_7643318__(6881),\n  tiff: __nested_webpack_require_7643318__(66278),\n  webp: __nested_webpack_require_7643318__(90784)\n};\n\n\n/***/ }),\n\n/***/ 33575:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7643813__) {\n\n\"use strict\";\n\n\n\nvar parsers = __nested_webpack_require_7643813__(91497);\n\n\nfunction probeBuffer(buffer) {\n  var parser_names = Object.keys(parsers);\n\n  for (var i = 0; i < parser_names.length; i++) {\n    var result = parsers[parser_names[i]](buffer);\n\n    if (result) return result;\n  }\n\n  return null;\n}\n\n\n///////////////////////////////////////////////////////////////////////\n// Exports\n//\n\nmodule.exports = function get_image_size(src) {\n  return probeBuffer(src);\n};\n\nmodule.exports.parsers = parsers;\n\n\n/***/ }),\n\n/***/ 90386:\n/***/ (function(module) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n\n/***/ 5877:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7649876__) {\n\nvar now = __nested_webpack_require_7649876__(9748)\n  , root = typeof window === 'undefined' ? __nested_webpack_require_7649876__.g : window\n  , vendors = ['moz', 'webkit']\n  , suffix = 'AnimationFrame'\n  , raf = root['request' + suffix]\n  , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n  raf = root[vendors[i] + 'Request' + suffix]\n  caf = root[vendors[i] + 'Cancel' + suffix]\n      || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n  var last = 0\n    , id = 0\n    , queue = []\n    , frameDuration = 1000 / 60\n\n  raf = function(callback) {\n    if(queue.length === 0) {\n      var _now = now()\n        , next = Math.max(0, frameDuration - (_now - last))\n      last = next + _now\n      setTimeout(function() {\n        var cp = queue.slice(0)\n        // Clear queue here to prevent\n        // callbacks from appending listeners\n        // to the current frame's queue\n        queue.length = 0\n        for(var i = 0; i < cp.length; i++) {\n          if(!cp[i].cancelled) {\n            try{\n              cp[i].callback(last)\n            } catch(e) {\n              setTimeout(function() { throw e }, 0)\n            }\n          }\n        }\n      }, Math.round(next))\n    }\n    queue.push({\n      handle: ++id,\n      callback: callback,\n      cancelled: false\n    })\n    return id\n  }\n\n  caf = function(handle) {\n    for(var i = 0; i < queue.length; i++) {\n      if(queue[i].handle === handle) {\n        queue[i].cancelled = true\n      }\n    }\n  }\n}\n\nmodule.exports = function(fn) {\n  // Wrap in a new function to prevent\n  // `cancel` potentially being assigned\n  // to the native rAF function\n  return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n  caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n  if (!object) {\n    object = root;\n  }\n  object.requestAnimationFrame = raf\n  object.cancelAnimationFrame = caf\n}\n\n\n/***/ }),\n\n/***/ 3593:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7651922__) {\n\n\"use strict\";\n\n\nvar getBounds = __nested_webpack_require_7651922__(21527)\nvar rgba = __nested_webpack_require_7651922__(25075)\nvar updateDiff = __nested_webpack_require_7651922__(93447)\nvar pick = __nested_webpack_require_7651922__(71299)\nvar extend = __nested_webpack_require_7651922__(56131)\nvar flatten = __nested_webpack_require_7651922__(30120)\nvar ref = __nested_webpack_require_7651922__(57060);\nvar float32 = ref.float32;\nvar fract32 = ref.fract32;\n\nmodule.exports = Error2D\n\nvar WEIGHTS = [\n\t//direction, lineWidth shift, capSize shift\n\n\t// x-error bar\n\t[1, 0, 0, 1, 0, 0],\n\t[1, 0, 0, -1, 0, 0],\n\t[-1, 0, 0, -1, 0, 0],\n\n\t[-1, 0, 0, -1, 0, 0],\n\t[-1, 0, 0, 1, 0, 0],\n\t[1, 0, 0, 1, 0, 0],\n\n\t// x-error right cap\n\t[1, 0, -1, 0, 0, 1],\n\t[1, 0, -1, 0, 0, -1],\n\t[1, 0, 1, 0, 0, -1],\n\n\t[1, 0, 1, 0, 0, -1],\n\t[1, 0, 1, 0, 0, 1],\n\t[1, 0, -1, 0, 0, 1],\n\n\t// x-error left cap\n\t[-1, 0, -1, 0, 0, 1],\n\t[-1, 0, -1, 0, 0, -1],\n\t[-1, 0, 1, 0, 0, -1],\n\n\t[-1, 0, 1, 0, 0, -1],\n\t[-1, 0, 1, 0, 0, 1],\n\t[-1, 0, -1, 0, 0, 1],\n\n\t// y-error bar\n\t[0, 1, 1, 0, 0, 0],\n\t[0, 1, -1, 0, 0, 0],\n\t[0, -1, -1, 0, 0, 0],\n\n\t[0, -1, -1, 0, 0, 0],\n\t[0, 1, 1, 0, 0, 0],\n\t[0, -1, 1, 0, 0, 0],\n\n\t// y-error top cap\n\t[0, 1, 0, -1, 1, 0],\n\t[0, 1, 0, -1, -1, 0],\n\t[0, 1, 0, 1, -1, 0],\n\n\t[0, 1, 0, 1, 1, 0],\n\t[0, 1, 0, -1, 1, 0],\n\t[0, 1, 0, 1, -1, 0],\n\n\t// y-error bottom cap\n\t[0, -1, 0, -1, 1, 0],\n\t[0, -1, 0, -1, -1, 0],\n\t[0, -1, 0, 1, -1, 0],\n\n\t[0, -1, 0, 1, 1, 0],\n\t[0, -1, 0, -1, 1, 0],\n\t[0, -1, 0, 1, -1, 0]\n]\n\n\nfunction Error2D (regl, options) {\n\tif (typeof regl === 'function') {\n\t\tif (!options) { options = {} }\n\t\toptions.regl = regl\n\t}\n\telse {\n\t\toptions = regl\n\t}\n\tif (options.length) { options.positions = options }\n\tregl = options.regl\n\n\tif (!regl.hasExtension('ANGLE_instanced_arrays')) {\n\t\tthrow Error('regl-error2d: `ANGLE_instanced_arrays` extension should be enabled');\n\t}\n\n\t// persistent variables\n\tvar gl = regl._gl, drawErrors, positionBuffer, positionFractBuffer, colorBuffer, errorBuffer, meshBuffer,\n\t\t\tdefaults = {\n\t\t\t\tcolor: 'black',\n\t\t\t\tcapSize: 5,\n\t\t\t\tlineWidth: 1,\n\t\t\t\topacity: 1,\n\t\t\t\tviewport: null,\n\t\t\t\trange: null,\n\t\t\t\toffset: 0,\n\t\t\t\tcount: 0,\n\t\t\t\tbounds: null,\n\t\t\t\tpositions: [],\n\t\t\t\terrors: []\n\t\t\t}, groups = []\n\n\t//color per-point\n\tcolorBuffer = regl.buffer({\n\t\tusage: 'dynamic',\n\t\ttype: 'uint8',\n\t\tdata: new Uint8Array(0)\n\t})\n\t//xy-position per-point\n\tpositionBuffer = regl.buffer({\n\t\tusage: 'dynamic',\n\t\ttype: 'float',\n\t\tdata: new Uint8Array(0)\n\t})\n\t//xy-position float32-fraction\n\tpositionFractBuffer = regl.buffer({\n\t\tusage: 'dynamic',\n\t\ttype: 'float',\n\t\tdata: new Uint8Array(0)\n\t})\n\t//4 errors per-point\n\terrorBuffer = regl.buffer({\n\t\tusage: 'dynamic',\n\t\ttype: 'float',\n\t\tdata: new Uint8Array(0)\n\t})\n\t//error bar mesh\n\tmeshBuffer = regl.buffer({\n\t\tusage: 'static',\n\t\ttype: 'float',\n\t\tdata: WEIGHTS\n\t})\n\n\tupdate(options)\n\n\t//drawing method\n\tdrawErrors = regl({\n\t\tvert: \"\\n\\t\\tprecision highp float;\\n\\n\\t\\tattribute vec2 position, positionFract;\\n\\t\\tattribute vec4 error;\\n\\t\\tattribute vec4 color;\\n\\n\\t\\tattribute vec2 direction, lineOffset, capOffset;\\n\\n\\t\\tuniform vec4 viewport;\\n\\t\\tuniform float lineWidth, capSize;\\n\\t\\tuniform vec2 scale, scaleFract, translate, translateFract;\\n\\n\\t\\tvarying vec4 fragColor;\\n\\n\\t\\tvoid main() {\\n\\t\\t\\tfragColor = color / 255.;\\n\\n\\t\\t\\tvec2 pixelOffset = lineWidth * lineOffset + (capSize + lineWidth) * capOffset;\\n\\n\\t\\t\\tvec2 dxy = -step(.5, direction.xy) * error.xz + step(direction.xy, vec2(-.5)) * error.yw;\\n\\n\\t\\t\\tvec2 position = position + dxy;\\n\\n\\t\\t\\tvec2 pos = (position + translate) * scale\\n\\t\\t\\t\\t+ (positionFract + translateFract) * scale\\n\\t\\t\\t\\t+ (position + translate) * scaleFract\\n\\t\\t\\t\\t+ (positionFract + translateFract) * scaleFract;\\n\\n\\t\\t\\tpos += pixelOffset / viewport.zw;\\n\\n\\t\\t\\tgl_Position = vec4(pos * 2. - 1., 0, 1);\\n\\t\\t}\\n\\t\\t\",\n\n\t\tfrag: \"\\n\\t\\tprecision highp float;\\n\\n\\t\\tvarying vec4 fragColor;\\n\\n\\t\\tuniform float opacity;\\n\\n\\t\\tvoid main() {\\n\\t\\t\\tgl_FragColor = fragColor;\\n\\t\\t\\tgl_FragColor.a *= opacity;\\n\\t\\t}\\n\\t\\t\",\n\n\t\tuniforms: {\n\t\t\trange: regl.prop('range'),\n\t\t\tlineWidth: regl.prop('lineWidth'),\n\t\t\tcapSize: regl.prop('capSize'),\n\t\t\topacity: regl.prop('opacity'),\n\t\t\tscale: regl.prop('scale'),\n\t\t\ttranslate: regl.prop('translate'),\n\t\t\tscaleFract: regl.prop('scaleFract'),\n\t\t\ttranslateFract: regl.prop('translateFract'),\n\t\t\tviewport: function (ctx, prop) { return [prop.viewport.x, prop.viewport.y, ctx.viewportWidth, ctx.viewportHeight]; }\n\t\t},\n\n\t\tattributes: {\n\t\t\t//dynamic attributes\n\t\t\tcolor: {\n\t\t\t\tbuffer: colorBuffer,\n\t\t\t\toffset: function (ctx, prop) { return prop.offset * 4; },\n\t\t\t\tdivisor: 1,\n\t\t\t},\n\t\t\tposition: {\n\t\t\t\tbuffer: positionBuffer,\n\t\t\t\toffset: function (ctx, prop) { return prop.offset * 8; },\n\t\t\t\tdivisor: 1\n\t\t\t},\n\t\t\tpositionFract: {\n\t\t\t\tbuffer: positionFractBuffer,\n\t\t\t\toffset: function (ctx, prop) { return prop.offset * 8; },\n\t\t\t\tdivisor: 1\n\t\t\t},\n\t\t\terror: {\n\t\t\t\tbuffer: errorBuffer,\n\t\t\t\toffset: function (ctx, prop) { return prop.offset * 16; },\n\t\t\t\tdivisor: 1\n\t\t\t},\n\n\t\t\t//static attributes\n\t\t\tdirection: {\n\t\t\t\tbuffer: meshBuffer,\n\t\t\t\tstride: 24,\n\t\t\t\toffset: 0\n\t\t\t},\n\t\t\tlineOffset: {\n\t\t\t\tbuffer: meshBuffer,\n\t\t\t\tstride: 24,\n\t\t\t\toffset: 8\n\t\t\t},\n\t\t\tcapOffset: {\n\t\t\t\tbuffer: meshBuffer,\n\t\t\t\tstride: 24,\n\t\t\t\toffset: 16\n\t\t\t}\n\t\t},\n\n\t\tprimitive: 'triangles',\n\n\t\tblend: {\n\t\t\tenable: true,\n\t\t\tcolor: [0,0,0,0],\n\t\t\tequation: {\n\t\t\t\trgb: 'add',\n\t\t\t\talpha: 'add'\n\t\t\t},\n\t\t\tfunc: {\n\t\t\t\tsrcRGB: 'src alpha',\n\t\t\t\tdstRGB: 'one minus src alpha',\n\t\t\t\tsrcAlpha: 'one minus dst alpha',\n\t\t\t\tdstAlpha: 'one'\n\t\t\t}\n\t\t},\n\n\t\tdepth: {\n\t\t\tenable: false\n\t\t},\n\n\t\tscissor: {\n\t\t\tenable: true,\n\t\t\tbox: regl.prop('viewport')\n\t\t},\n\t\tviewport: regl.prop('viewport'),\n\t\tstencil: false,\n\n\t\tinstances: regl.prop('count'),\n\t\tcount: WEIGHTS.length\n\t})\n\n\t//expose API\n\textend(error2d, {\n\t\tupdate: update,\n\t\tdraw: draw,\n\t\tdestroy: destroy,\n\t\tregl: regl,\n\t\tgl: gl,\n\t\tcanvas: gl.canvas,\n\t\tgroups: groups\n\t})\n\n\treturn error2d\n\n\tfunction error2d (opts) {\n\t\t//update\n\t\tif (opts) {\n\t\t\tupdate(opts)\n\t\t}\n\n\t\t//destroy\n\t\telse if (opts === null) {\n\t\t\tdestroy()\n\t\t}\n\n\t\tdraw()\n\t}\n\n\n\t//main draw method\n\tfunction draw (options) {\n\t\tif (typeof options === 'number') { return drawGroup(options) }\n\n\t\t//make options a batch\n\t\tif (options && !Array.isArray(options)) { options = [options] }\n\n\n\t\tregl._refresh()\n\n\t\t//render multiple polylines via regl batch\n\t\tgroups.forEach(function (s, i) {\n\t\t\tif (!s) { return }\n\n\t\t\tif (options) {\n\t\t\t\tif (!options[i]) { s.draw = false }\n\t\t\t\telse { s.draw = true }\n\t\t\t}\n\n\t\t\t//ignore draw flag for one pass\n\t\t\tif (!s.draw) {\n\t\t\t\ts.draw = true;\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tdrawGroup(i)\n\t\t})\n\t}\n\n\t//draw single error group by id\n\tfunction drawGroup (s) {\n\t\tif (typeof s === 'number') { s = groups[s] }\n\t\tif (s == null) { return }\n\n\t\tif (!(s && s.count && s.color && s.opacity && s.positions && s.positions.length > 1)) { return }\n\n\t\ts.scaleRatio = [\n\t\t\ts.scale[0] * s.viewport.width,\n\t\t\ts.scale[1] * s.viewport.height\n\t\t]\n\n\t\tdrawErrors(s)\n\n\t\tif (s.after) { s.after(s) }\n\t}\n\n\tfunction update (options) {\n\t\tif (!options) { return }\n\n\t\t//direct points argument\n\t\tif (options.length != null) {\n\t\t\tif (typeof options[0] === 'number') { options = [{positions: options}] }\n\t\t}\n\n\t\t//make options a batch\n\t\telse if (!Array.isArray(options)) { options = [options] }\n\n\t\t//global count of points\n\t\tvar pointCount = 0, errorCount = 0\n\n\t\terror2d.groups = groups = options.map(function (options, i) {\n\t\t\tvar group = groups[i]\n\n\t\t\tif (!options) { return group }\n\t\t\telse if (typeof options === 'function') { options = {after: options} }\n\t\t\telse if (typeof options[0] === 'number') { options = {positions: options} }\n\n\t\t\t//copy options to avoid mutation & handle aliases\n\t\t\toptions = pick(options, {\n\t\t\t\tcolor: 'color colors fill',\n\t\t\t\tcapSize: 'capSize cap capsize cap-size',\n\t\t\t\tlineWidth: 'lineWidth line-width width line thickness',\n\t\t\t\topacity: 'opacity alpha',\n\t\t\t\trange: 'range dataBox',\n\t\t\t\tviewport: 'viewport viewBox',\n\t\t\t\terrors: 'errors error',\n\t\t\t\tpositions: 'positions position data points'\n\t\t\t})\n\n\t\t\tif (!group) {\n\t\t\t\tgroups[i] = group = {\n\t\t\t\t\tid: i,\n\t\t\t\t\tscale: null,\n\t\t\t\t\ttranslate: null,\n\t\t\t\t\tscaleFract: null,\n\t\t\t\t\ttranslateFract: null,\n\t\t\t\t\tdraw: true\n\t\t\t\t}\n\t\t\t\toptions = extend({}, defaults, options)\n\t\t\t}\n\n\t\t\tupdateDiff(group, options, [{\n\t\t\t\tlineWidth: function (v) { return +v * .5; },\n\t\t\t\tcapSize: function (v) { return +v * .5; },\n\t\t\t\topacity: parseFloat,\n\t\t\t\terrors: function (errors) {\n\t\t\t\t\terrors = flatten(errors)\n\n\t\t\t\t\terrorCount += errors.length\n\t\t\t\t\treturn errors\n\t\t\t\t},\n\t\t\t\tpositions: function (positions, state) {\n\t\t\t\t\tpositions = flatten(positions, 'float64')\n\t\t\t\t\tstate.count = Math.floor(positions.length / 2)\n\t\t\t\t\tstate.bounds = getBounds(positions, 2)\n\t\t\t\t\tstate.offset = pointCount\n\n\t\t\t\t\tpointCount += state.count\n\n\t\t\t\t\treturn positions\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tcolor: function (colors, state) {\n\t\t\t\t\tvar count = state.count\n\n\t\t\t\t\tif (!colors) { colors = 'transparent' }\n\n\t\t\t\t\t// 'black' or [0,0,0,0] case\n\t\t\t\t\tif (!Array.isArray(colors) || typeof colors[0] === 'number') {\n\t\t\t\t\t\tvar color = colors\n\t\t\t\t\t\tcolors = Array(count)\n\t\t\t\t\t\tfor (var i = 0; i < count; i++) {\n\t\t\t\t\t\t\tcolors[i] = color\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (colors.length < count) { throw Error('Not enough colors') }\n\n\t\t\t\t\tvar colorData = new Uint8Array(count * 4)\n\n\t\t\t\t\t//convert colors to float arrays\n\t\t\t\t\tfor (var i$1 = 0; i$1 < count; i$1++) {\n\t\t\t\t\t\tvar c = rgba(colors[i$1], 'uint8')\n\t\t\t\t\t\tcolorData.set(c, i$1 * 4)\n\t\t\t\t\t}\n\n\t\t\t\t\treturn colorData\n\t\t\t\t},\n\n\t\t\t\trange: function (range, state, options) {\n\t\t\t\t\tvar bounds = state.bounds\n\t\t\t\t\tif (!range) { range = bounds }\n\n\t\t\t\t\tstate.scale = [1 / (range[2] - range[0]), 1 / (range[3] - range[1])]\n\t\t\t\t\tstate.translate = [-range[0], -range[1]]\n\n\t\t\t\t\tstate.scaleFract = fract32(state.scale)\n\t\t\t\t\tstate.translateFract = fract32(state.translate)\n\n\t\t\t\t\treturn range\n\t\t\t\t},\n\n\t\t\t\tviewport: function (vp) {\n\t\t\t\t\tvar viewport\n\n\t\t\t\t\tif (Array.isArray(vp)) {\n\t\t\t\t\t\tviewport = {\n\t\t\t\t\t\t\tx: vp[0],\n\t\t\t\t\t\t\ty: vp[1],\n\t\t\t\t\t\t\twidth: vp[2] - vp[0],\n\t\t\t\t\t\t\theight: vp[3] - vp[1]\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (vp) {\n\t\t\t\t\t\tviewport = {\n\t\t\t\t\t\t\tx: vp.x || vp.left || 0,\n\t\t\t\t\t\t\ty: vp.y || vp.top || 0\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (vp.right) { viewport.width = vp.right - viewport.x }\n\t\t\t\t\t\telse { viewport.width = vp.w || vp.width || 0 }\n\n\t\t\t\t\t\tif (vp.bottom) { viewport.height = vp.bottom - viewport.y }\n\t\t\t\t\t\telse { viewport.height = vp.h || vp.height || 0 }\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tviewport = {\n\t\t\t\t\t\t\tx: 0, y: 0,\n\t\t\t\t\t\t\twidth: gl.drawingBufferWidth,\n\t\t\t\t\t\t\theight: gl.drawingBufferHeight\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn viewport\n\t\t\t\t}\n\t\t\t}])\n\n\t\t\treturn group\n\t\t})\n\n\t\tif (pointCount || errorCount) {\n\t\t\tvar len = groups.reduce(function (acc, group, i) {\n\t\t\t\treturn acc + (group ? group.count : 0)\n\t\t\t}, 0)\n\n\t\t\tvar positionData = new Float64Array(len * 2)\n\t\t\tvar colorData = new Uint8Array(len * 4)\n\t\t\tvar errorData = new Float32Array(len * 4)\n\n\t\t\tgroups.forEach(function (group, i) {\n\t\t\t\tif (!group) { return }\n\t\t\t\tvar positions = group.positions;\n\t\t\t\tvar count = group.count;\n\t\t\t\tvar offset = group.offset;\n\t\t\t\tvar color = group.color;\n\t\t\t\tvar errors = group.errors;\n\t\t\t\tif (!count) { return }\n\n\t\t\t\tcolorData.set(color, offset * 4)\n\t\t\t\terrorData.set(errors, offset * 4)\n\t\t\t\tpositionData.set(positions, offset * 2)\n\t\t\t})\n\n\t\t\tvar float_data = float32(positionData)\n\t\t\tpositionBuffer(float_data)\n\t\t\tvar frac_data = fract32(positionData, float_data)\n\t\t\tpositionFractBuffer(frac_data)\n\t\t\tcolorBuffer(colorData)\n\t\t\terrorBuffer(errorData)\n\t\t}\n\n\t}\n\n\tfunction destroy () {\n\t\tpositionBuffer.destroy()\n\t\tpositionFractBuffer.destroy()\n\t\tcolorBuffer.destroy()\n\t\terrorBuffer.destroy()\n\t\tmeshBuffer.destroy()\n\t}\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64, \n\n/***/ }),\n\n/***/ 46075:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7701231__) {\n\n\"use strict\";\n\n\n\nvar rgba = __nested_webpack_require_7701231__(25075)\nvar getBounds = __nested_webpack_require_7701231__(21527)\nvar extend = __nested_webpack_require_7701231__(56131)\nvar glslify = __nested_webpack_require_7701231__(56068)\nvar pick = __nested_webpack_require_7701231__(71299)\nvar flatten = __nested_webpack_require_7701231__(30120)\nvar triangulate = __nested_webpack_require_7701231__(11474)\nvar normalize = __nested_webpack_require_7701231__(54)\nvar ref = __nested_webpack_require_7701231__(57060);\nvar float32 = ref.float32;\nvar fract32 = ref.fract32;\nvar WeakMap = __nested_webpack_require_7701231__(83522)\nvar parseRect = __nested_webpack_require_7701231__(18863)\nvar findIndex = __nested_webpack_require_7701231__(6851);\n\n\nmodule.exports = Line2D\n\n\n/** @constructor */\nfunction Line2D (regl, options) {\n\tif (!(this instanceof Line2D)) { return new Line2D(regl, options) }\n\n\tif (typeof regl === 'function') {\n\t\tif (!options) { options = {} }\n\t\toptions.regl = regl\n\t}\n\telse {\n\t\toptions = regl\n\t}\n\tif (options.length) { options.positions = options }\n\tregl = options.regl\n\n\tif (!regl.hasExtension('ANGLE_instanced_arrays')) {\n\t\tthrow Error('regl-error2d: `ANGLE_instanced_arrays` extension should be enabled');\n\t}\n\n\t// persistent variables\n\tthis.gl = regl._gl\n\tthis.regl = regl\n\n\t// list of options for lines\n\tthis.passes = []\n\n\t// cached shaders instance\n\tthis.shaders = Line2D.shaders.has(regl) ? Line2D.shaders.get(regl) : Line2D.shaders.set(regl, Line2D.createShaders(regl)).get(regl)\n\n\n\t// init defaults\n\tthis.update(options)\n}\n\n\nLine2D.dashMult = 2\nLine2D.maxPatternLength = 256\nLine2D.precisionThreshold = 3e6\nLine2D.maxPoints = 1e4\nLine2D.maxLines = 2048\n\n\n// cache of created draw calls per-regl instance\nLine2D.shaders = new WeakMap()\n\n\n// create static shaders once\nLine2D.createShaders = function (regl) {\n\tvar offsetBuffer = regl.buffer({\n\t\tusage: 'static',\n\t\ttype: 'float',\n\t\tdata: [0,1, 0,0, 1,1, 1,0]\n\t})\n\n\tvar shaderOptions = {\n\t\tprimitive: 'triangle strip',\n\t\tinstances: regl.prop('count'),\n\t\tcount: 4,\n\t\toffset: 0,\n\n\t\tuniforms: {\n\t\t\tmiterMode: function (ctx, prop) { return prop.join === 'round' ? 2 : 1; },\n\t\t\tmiterLimit: regl.prop('miterLimit'),\n\t\t\tscale: regl.prop('scale'),\n\t\t\tscaleFract: regl.prop('scaleFract'),\n\t\t\ttranslateFract: regl.prop('translateFract'),\n\t\t\ttranslate: regl.prop('translate'),\n\t\t\tthickness: regl.prop('thickness'),\n\t\t\tdashTexture: regl.prop('dashTexture'),\n\t\t\topacity: regl.prop('opacity'),\n\t\t\tpixelRatio: regl.context('pixelRatio'),\n\t\t\tid: regl.prop('id'),\n\t\t\tdashLength: regl.prop('dashLength'),\n\t\t\tviewport: function (c, p) { return [p.viewport.x, p.viewport.y, c.viewportWidth, c.viewportHeight]; },\n\t\t\tdepth: regl.prop('depth')\n\t\t},\n\n\t\tblend: {\n\t\t\tenable: true,\n\t\t\tcolor: [0,0,0,0],\n\t\t\tequation: {\n\t\t\t\trgb: 'add',\n\t\t\t\talpha: 'add'\n\t\t\t},\n\t\t\tfunc: {\n\t\t\t\tsrcRGB: 'src alpha',\n\t\t\t\tdstRGB: 'one minus src alpha',\n\t\t\t\tsrcAlpha: 'one minus dst alpha',\n\t\t\t\tdstAlpha: 'one'\n\t\t\t}\n\t\t},\n\t\tdepth: {\n\t\t\tenable: function (c, p) {\n\t\t\t\treturn !p.overlay\n\t\t\t}\n\t\t},\n\t\tstencil: {enable: false},\n\t\tscissor: {\n\t\t\tenable: true,\n\t\t\tbox: regl.prop('viewport')\n\t\t},\n\t\tviewport: regl.prop('viewport')\n\t}\n\n\n\t// simplified rectangular line shader\n\tvar drawRectLine = regl(extend({\n\t\tvert: glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec2 aCoord, bCoord, aCoordFract, bCoordFract;\\nattribute vec4 color;\\nattribute float lineEnd, lineTop;\\n\\nuniform vec2 scale, scaleFract, translate, translateFract;\\nuniform float thickness, pixelRatio, id, depth;\\nuniform vec4 viewport;\\n\\nvarying vec4 fragColor;\\nvarying vec2 tangent;\\n\\nvec2 project(vec2 position, vec2 positionFract, vec2 scale, vec2 scaleFract, vec2 translate, vec2 translateFract) {\\n\\t// the order is important\\n\\treturn position * scale + translate\\n       + positionFract * scale + translateFract\\n       + position * scaleFract\\n       + positionFract * scaleFract;\\n}\\n\\nvoid main() {\\n\\tfloat lineStart = 1. - lineEnd;\\n\\tfloat lineOffset = lineTop * 2. - 1.;\\n\\n\\tvec2 diff = (bCoord + bCoordFract - aCoord - aCoordFract);\\n\\ttangent = normalize(diff * scale * viewport.zw);\\n\\tvec2 normal = vec2(-tangent.y, tangent.x);\\n\\n\\tvec2 position = project(aCoord, aCoordFract, scale, scaleFract, translate, translateFract) * lineStart\\n\\t\\t+ project(bCoord, bCoordFract, scale, scaleFract, translate, translateFract) * lineEnd\\n\\n\\t\\t+ thickness * normal * .5 * lineOffset / viewport.zw;\\n\\n\\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\\n\\n\\tfragColor = color / 255.;\\n}\\n\"]),\n\t\tfrag: glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nuniform float dashLength, pixelRatio, thickness, opacity, id;\\nuniform sampler2D dashTexture;\\n\\nvarying vec4 fragColor;\\nvarying vec2 tangent;\\n\\nvoid main() {\\n\\tfloat alpha = 1.;\\n\\n\\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\\n\\tfloat dash = texture2D(dashTexture, vec2(t, .5)).r;\\n\\n\\tgl_FragColor = fragColor;\\n\\tgl_FragColor.a *= alpha * opacity * dash;\\n}\\n\"]),\n\n\t\tattributes: {\n\t\t\t// if point is at the end of segment\n\t\t\tlineEnd: {\n\t\t\t\tbuffer: offsetBuffer,\n\t\t\t\tdivisor: 0,\n\t\t\t\tstride: 8,\n\t\t\t\toffset: 0\n\t\t\t},\n\t\t\t// if point is at the top of segment\n\t\t\tlineTop: {\n\t\t\t\tbuffer: offsetBuffer,\n\t\t\t\tdivisor: 0,\n\t\t\t\tstride: 8,\n\t\t\t\toffset: 4\n\t\t\t},\n\t\t\t// beginning of line coordinate\n\t\t\taCoord: {\n\t\t\t\tbuffer: regl.prop('positionBuffer'),\n\t\t\t\tstride: 8,\n\t\t\t\toffset: 8,\n\t\t\t\tdivisor: 1\n\t\t\t},\n\t\t\t// end of line coordinate\n\t\t\tbCoord: {\n\t\t\t\tbuffer: regl.prop('positionBuffer'),\n\t\t\t\tstride: 8,\n\t\t\t\toffset: 16,\n\t\t\t\tdivisor: 1\n\t\t\t},\n\t\t\taCoordFract: {\n\t\t\t\tbuffer: regl.prop('positionFractBuffer'),\n\t\t\t\tstride: 8,\n\t\t\t\toffset: 8,\n\t\t\t\tdivisor: 1\n\t\t\t},\n\t\t\tbCoordFract: {\n\t\t\t\tbuffer: regl.prop('positionFractBuffer'),\n\t\t\t\tstride: 8,\n\t\t\t\toffset: 16,\n\t\t\t\tdivisor: 1\n\t\t\t},\n\t\t\tcolor: {\n\t\t\t\tbuffer: regl.prop('colorBuffer'),\n\t\t\t\tstride: 4,\n\t\t\t\toffset: 0,\n\t\t\t\tdivisor: 1\n\t\t\t}\n\t\t}\n\t}, shaderOptions))\n\n\t// create regl draw\n\tvar drawMiterLine\n\n\ttry {\n\t\tdrawMiterLine = regl(extend({\n\t\t\t// culling removes polygon creasing\n\t\t\tcull: {\n\t\t\t\tenable: true,\n\t\t\t\tface: 'back'\n\t\t\t},\n\n\t\t\tvert: glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec2 aCoord, bCoord, nextCoord, prevCoord;\\nattribute vec4 aColor, bColor;\\nattribute float lineEnd, lineTop;\\n\\nuniform vec2 scale, translate;\\nuniform float thickness, pixelRatio, id, depth;\\nuniform vec4 viewport;\\nuniform float miterLimit, miterMode;\\n\\nvarying vec4 fragColor;\\nvarying vec4 startCutoff, endCutoff;\\nvarying vec2 tangent;\\nvarying vec2 startCoord, endCoord;\\nvarying float enableStartMiter, enableEndMiter;\\n\\nconst float REVERSE_THRESHOLD = -.875;\\nconst float MIN_DIFF = 1e-6;\\n\\n// TODO: possible optimizations: avoid overcalculating all for vertices and calc just one instead\\n// TODO: precalculate dot products, normalize things beforehead etc.\\n// TODO: refactor to rectangular algorithm\\n\\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\\n\\tvec2 diff = b - a;\\n\\tvec2 perp = normalize(vec2(-diff.y, diff.x));\\n\\treturn dot(p - a, perp);\\n}\\n\\nbool isNaN( float val ){\\n  return ( val < 0.0 || 0.0 < val || val == 0.0 ) ? false : true;\\n}\\n\\nvoid main() {\\n\\tvec2 aCoord = aCoord, bCoord = bCoord, prevCoord = prevCoord, nextCoord = nextCoord;\\n\\n  vec2 adjustedScale;\\n  adjustedScale.x = (abs(scale.x) < MIN_DIFF) ? MIN_DIFF : scale.x;\\n  adjustedScale.y = (abs(scale.y) < MIN_DIFF) ? MIN_DIFF : scale.y;\\n\\n  vec2 scaleRatio = adjustedScale * viewport.zw;\\n\\tvec2 normalWidth = thickness / scaleRatio;\\n\\n\\tfloat lineStart = 1. - lineEnd;\\n\\tfloat lineBot = 1. - lineTop;\\n\\n\\tfragColor = (lineStart * aColor + lineEnd * bColor) / 255.;\\n\\n\\tif (isNaN(aCoord.x) || isNaN(aCoord.y) || isNaN(bCoord.x) || isNaN(bCoord.y)) return;\\n\\n\\tif (aCoord == prevCoord) prevCoord = aCoord + normalize(bCoord - aCoord);\\n\\tif (bCoord == nextCoord) nextCoord = bCoord - normalize(bCoord - aCoord);\\n\\n\\tvec2 prevDiff = aCoord - prevCoord;\\n\\tvec2 currDiff = bCoord - aCoord;\\n\\tvec2 nextDiff = nextCoord - bCoord;\\n\\n\\tvec2 prevTangent = normalize(prevDiff * scaleRatio);\\n\\tvec2 currTangent = normalize(currDiff * scaleRatio);\\n\\tvec2 nextTangent = normalize(nextDiff * scaleRatio);\\n\\n\\tvec2 prevNormal = vec2(-prevTangent.y, prevTangent.x);\\n\\tvec2 currNormal = vec2(-currTangent.y, currTangent.x);\\n\\tvec2 nextNormal = vec2(-nextTangent.y, nextTangent.x);\\n\\n\\tvec2 startJoinDirection = normalize(prevTangent - currTangent);\\n\\tvec2 endJoinDirection = normalize(currTangent - nextTangent);\\n\\n\\t// collapsed/unidirectional segment cases\\n\\t// FIXME: there should be more elegant solution\\n\\tvec2 prevTanDiff = abs(prevTangent - currTangent);\\n\\tvec2 nextTanDiff = abs(nextTangent - currTangent);\\n\\tif (max(prevTanDiff.x, prevTanDiff.y) < MIN_DIFF) {\\n\\t\\tstartJoinDirection = currNormal;\\n\\t}\\n\\tif (max(nextTanDiff.x, nextTanDiff.y) < MIN_DIFF) {\\n\\t\\tendJoinDirection = currNormal;\\n\\t}\\n\\tif (aCoord == bCoord) {\\n\\t\\tendJoinDirection = startJoinDirection;\\n\\t\\tcurrNormal = prevNormal;\\n\\t\\tcurrTangent = prevTangent;\\n\\t}\\n\\n\\ttangent = currTangent;\\n\\n\\t//calculate join shifts relative to normals\\n\\tfloat startJoinShift = dot(currNormal, startJoinDirection);\\n\\tfloat endJoinShift = dot(currNormal, endJoinDirection);\\n\\n\\tfloat startMiterRatio = abs(1. / startJoinShift);\\n\\tfloat endMiterRatio = abs(1. / endJoinShift);\\n\\n\\tvec2 startJoin = startJoinDirection * startMiterRatio;\\n\\tvec2 endJoin = endJoinDirection * endMiterRatio;\\n\\n\\tvec2 startTopJoin, startBotJoin, endTopJoin, endBotJoin;\\n\\tstartTopJoin = sign(startJoinShift) * startJoin * .5;\\n\\tstartBotJoin = -startTopJoin;\\n\\n\\tendTopJoin = sign(endJoinShift) * endJoin * .5;\\n\\tendBotJoin = -endTopJoin;\\n\\n\\tvec2 aTopCoord = aCoord + normalWidth * startTopJoin;\\n\\tvec2 bTopCoord = bCoord + normalWidth * endTopJoin;\\n\\tvec2 aBotCoord = aCoord + normalWidth * startBotJoin;\\n\\tvec2 bBotCoord = bCoord + normalWidth * endBotJoin;\\n\\n\\t//miter anti-clipping\\n\\tfloat baClipping = distToLine(bCoord, aCoord, aBotCoord) / dot(normalize(normalWidth * endBotJoin), normalize(normalWidth.yx * vec2(-startBotJoin.y, startBotJoin.x)));\\n\\tfloat abClipping = distToLine(aCoord, bCoord, bTopCoord) / dot(normalize(normalWidth * startBotJoin), normalize(normalWidth.yx * vec2(-endBotJoin.y, endBotJoin.x)));\\n\\n\\t//prevent close to reverse direction switch\\n\\tbool prevReverse = dot(currTangent, prevTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, prevNormal)) * min(length(prevDiff), length(currDiff)) <  length(normalWidth * currNormal);\\n\\tbool nextReverse = dot(currTangent, nextTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, nextNormal)) * min(length(nextDiff), length(currDiff)) <  length(normalWidth * currNormal);\\n\\n\\tif (prevReverse) {\\n\\t\\t//make join rectangular\\n\\t\\tvec2 miterShift = normalWidth * startJoinDirection * miterLimit * .5;\\n\\t\\tfloat normalAdjust = 1. - min(miterLimit / startMiterRatio, 1.);\\n\\t\\taBotCoord = aCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\\n\\t\\taTopCoord = aCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\\n\\t}\\n\\telse if (!nextReverse && baClipping > 0. && baClipping < length(normalWidth * endBotJoin)) {\\n\\t\\t//handle miter clipping\\n\\t\\tbTopCoord -= normalWidth * endTopJoin;\\n\\t\\tbTopCoord += normalize(endTopJoin * normalWidth) * baClipping;\\n\\t}\\n\\n\\tif (nextReverse) {\\n\\t\\t//make join rectangular\\n\\t\\tvec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5;\\n\\t\\tfloat normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.);\\n\\t\\tbBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\\n\\t\\tbTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\\n\\t}\\n\\telse if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) {\\n\\t\\t//handle miter clipping\\n\\t\\taBotCoord -= normalWidth * startBotJoin;\\n\\t\\taBotCoord += normalize(startBotJoin * normalWidth) * abClipping;\\n\\t}\\n\\n\\tvec2 aTopPosition = (aTopCoord) * adjustedScale + translate;\\n\\tvec2 aBotPosition = (aBotCoord) * adjustedScale + translate;\\n\\n\\tvec2 bTopPosition = (bTopCoord) * adjustedScale + translate;\\n\\tvec2 bBotPosition = (bBotCoord) * adjustedScale + translate;\\n\\n\\t//position is normalized 0..1 coord on the screen\\n\\tvec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd;\\n\\n\\tstartCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy;\\n\\tendCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy;\\n\\n\\tgl_Position = vec4(position  * 2.0 - 1.0, depth, 1);\\n\\n\\tenableStartMiter = step(dot(currTangent, prevTangent), .5);\\n\\tenableEndMiter = step(dot(currTangent, nextTangent), .5);\\n\\n\\t//bevel miter cutoffs\\n\\tif (miterMode == 1.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5;\\n\\t\\t\\tstartCutoff = vec4(aCoord, aCoord);\\n\\t\\t\\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\\n\\t\\t\\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tstartCutoff += viewport.xyxy;\\n\\t\\t\\tstartCutoff += startMiterWidth.xyxy;\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5;\\n\\t\\t\\tendCutoff = vec4(bCoord, bCoord);\\n\\t\\t\\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x)  / scaleRatio;\\n\\t\\t\\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tendCutoff += viewport.xyxy;\\n\\t\\t\\tendCutoff += endMiterWidth.xyxy;\\n\\t\\t}\\n\\t}\\n\\n\\t//round miter cutoffs\\n\\telse if (miterMode == 2.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5;\\n\\t\\t\\tstartCutoff = vec4(aCoord, aCoord);\\n\\t\\t\\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\\n\\t\\t\\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tstartCutoff += viewport.xyxy;\\n\\t\\t\\tstartCutoff += startMiterWidth.xyxy;\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5;\\n\\t\\t\\tendCutoff = vec4(bCoord, bCoord);\\n\\t\\t\\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x)  / scaleRatio;\\n\\t\\t\\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tendCutoff += viewport.xyxy;\\n\\t\\t\\tendCutoff += endMiterWidth.xyxy;\\n\\t\\t}\\n\\t}\\n}\\n\"]),\n\t\t\tfrag: glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nuniform float dashLength, pixelRatio, thickness, opacity, id, miterMode;\\nuniform sampler2D dashTexture;\\n\\nvarying vec4 fragColor;\\nvarying vec2 tangent;\\nvarying vec4 startCutoff, endCutoff;\\nvarying vec2 startCoord, endCoord;\\nvarying float enableStartMiter, enableEndMiter;\\n\\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\\n\\tvec2 diff = b - a;\\n\\tvec2 perp = normalize(vec2(-diff.y, diff.x));\\n\\treturn dot(p - a, perp);\\n}\\n\\nvoid main() {\\n\\tfloat alpha = 1., distToStart, distToEnd;\\n\\tfloat cutoff = thickness * .5;\\n\\n\\t//bevel miter\\n\\tif (miterMode == 1.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\\n\\t\\t\\tif (distToStart < -1.) {\\n\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\talpha *= min(max(distToStart + 1., 0.), 1.);\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\\n\\t\\t\\tif (distToEnd < -1.) {\\n\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\talpha *= min(max(distToEnd + 1., 0.), 1.);\\n\\t\\t}\\n\\t}\\n\\n\\t// round miter\\n\\telse if (miterMode == 2.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\\n\\t\\t\\tif (distToStart < 0.) {\\n\\t\\t\\t\\tfloat radius = length(gl_FragCoord.xy - startCoord);\\n\\n\\t\\t\\t\\tif(radius > cutoff + .5) {\\n\\t\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\\n\\t\\t\\tif (distToEnd < 0.) {\\n\\t\\t\\t\\tfloat radius = length(gl_FragCoord.xy - endCoord);\\n\\n\\t\\t\\t\\tif(radius > cutoff + .5) {\\n\\t\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\\n\\tfloat dash = texture2D(dashTexture, vec2(t, .5)).r;\\n\\n\\tgl_FragColor = fragColor;\\n\\tgl_FragColor.a *= alpha * opacity * dash;\\n}\\n\"]),\n\n\t\t\tattributes: {\n\t\t\t\t// is line end\n\t\t\t\tlineEnd: {\n\t\t\t\t\tbuffer: offsetBuffer,\n\t\t\t\t\tdivisor: 0,\n\t\t\t\t\tstride: 8,\n\t\t\t\t\toffset: 0\n\t\t\t\t},\n\t\t\t\t// is line top\n\t\t\t\tlineTop: {\n\t\t\t\t\tbuffer: offsetBuffer,\n\t\t\t\t\tdivisor: 0,\n\t\t\t\t\tstride: 8,\n\t\t\t\t\toffset: 4\n\t\t\t\t},\n\t\t\t\t// left color\n\t\t\t\taColor: {\n\t\t\t\t\tbuffer: regl.prop('colorBuffer'),\n\t\t\t\t\tstride: 4,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tdivisor: 1\n\t\t\t\t},\n\t\t\t\t// right color\n\t\t\t\tbColor: {\n\t\t\t\t\tbuffer: regl.prop('colorBuffer'),\n\t\t\t\t\tstride: 4,\n\t\t\t\t\toffset: 4,\n\t\t\t\t\tdivisor: 1\n\t\t\t\t},\n\t\t\t\tprevCoord: {\n\t\t\t\t\tbuffer: regl.prop('positionBuffer'),\n\t\t\t\t\tstride: 8,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tdivisor: 1\n\t\t\t\t},\n\t\t\t\taCoord: {\n\t\t\t\t\tbuffer: regl.prop('positionBuffer'),\n\t\t\t\t\tstride: 8,\n\t\t\t\t\toffset: 8,\n\t\t\t\t\tdivisor: 1\n\t\t\t\t},\n\t\t\t\tbCoord: {\n\t\t\t\t\tbuffer: regl.prop('positionBuffer'),\n\t\t\t\t\tstride: 8,\n\t\t\t\t\toffset: 16,\n\t\t\t\t\tdivisor: 1\n\t\t\t\t},\n\t\t\t\tnextCoord: {\n\t\t\t\t\tbuffer: regl.prop('positionBuffer'),\n\t\t\t\t\tstride: 8,\n\t\t\t\t\toffset: 24,\n\t\t\t\t\tdivisor: 1\n\t\t\t\t}\n\t\t\t}\n\t\t}, shaderOptions))\n\t} catch (e) {\n\t\t// IE/bad Webkit fallback\n\t\tdrawMiterLine = drawRectLine\n\t}\n\n\t// fill shader\n\tvar drawFill = regl({\n\t\tprimitive: 'triangle',\n\t\telements: function (ctx, prop) { return prop.triangles; },\n\t\toffset: 0,\n\n\t\tvert: glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position, positionFract;\\n\\nuniform vec4 color;\\nuniform vec2 scale, scaleFract, translate, translateFract;\\nuniform float pixelRatio, id;\\nuniform vec4 viewport;\\nuniform float opacity;\\n\\nvarying vec4 fragColor;\\n\\nconst float MAX_LINES = 256.;\\n\\nvoid main() {\\n\\tfloat depth = (MAX_LINES - 4. - id) / (MAX_LINES);\\n\\n\\tvec2 position = position * scale + translate\\n       + positionFract * scale + translateFract\\n       + position * scaleFract\\n       + positionFract * scaleFract;\\n\\n\\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\\n\\n\\tfragColor = color / 255.;\\n\\tfragColor.a *= opacity;\\n}\\n\"]),\n\t\tfrag: glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n\\tgl_FragColor = fragColor;\\n}\\n\"]),\n\n\t\tuniforms: {\n\t\t\tscale: regl.prop('scale'),\n\t\t\tcolor: regl.prop('fill'),\n\t\t\tscaleFract: regl.prop('scaleFract'),\n\t\t\ttranslateFract: regl.prop('translateFract'),\n\t\t\ttranslate: regl.prop('translate'),\n\t\t\topacity: regl.prop('opacity'),\n\t\t\tpixelRatio: regl.context('pixelRatio'),\n\t\t\tid: regl.prop('id'),\n\t\t\tviewport: function (ctx, prop) { return [prop.viewport.x, prop.viewport.y, ctx.viewportWidth, ctx.viewportHeight]; }\n\t\t},\n\n\t\tattributes: {\n\t\t\tposition: {\n\t\t\t\tbuffer: regl.prop('positionBuffer'),\n\t\t\t\tstride: 8,\n\t\t\t\toffset: 8\n\t\t\t},\n\t\t\tpositionFract: {\n\t\t\t\tbuffer: regl.prop('positionFractBuffer'),\n\t\t\t\tstride: 8,\n\t\t\t\toffset: 8\n\t\t\t}\n\t\t},\n\n\t\tblend: shaderOptions.blend,\n\n\t\tdepth: { enable: false },\n\t\tscissor: shaderOptions.scissor,\n\t\tstencil: shaderOptions.stencil,\n\t\tviewport: shaderOptions.viewport\n\t})\n\n\treturn {\n\t\tfill: drawFill, rect: drawRectLine, miter: drawMiterLine\n\t}\n}\n\n\n// used to for new lines instances\nLine2D.defaults = {\n\tdashes: null,\n\tjoin: 'miter',\n\tmiterLimit: 1,\n\tthickness: 10,\n\tcap: 'square',\n\tcolor: 'black',\n\topacity: 1,\n\toverlay: false,\n\tviewport: null,\n\trange: null,\n\tclose: false,\n\tfill: null\n}\n\n\nLine2D.prototype.render = function () {\n\tvar ref;\n\n\tvar args = [], len = arguments.length;\n\twhile ( len-- ) args[ len ] = arguments[ len ];\n\tif (args.length) {\n\t\t(ref = this).update.apply(ref, args)\n\t}\n\n\tthis.draw()\n}\n\n\nLine2D.prototype.draw = function () {\n\tvar this$1 = this;\n\tvar args = [], len = arguments.length;\n\twhile ( len-- ) args[ len ] = arguments[ len ];\n\n\t// render multiple polylines via regl batch\n\t(args.length ? args : this.passes).forEach(function (s, i) {\n\t\tvar ref;\n\n\t\t// render array pass as a list of passes\n\t\tif (s && Array.isArray(s)) { return (ref = this$1).draw.apply(ref, s) }\n\n\t\tif (typeof s === 'number') { s = this$1.passes[s] }\n\n\t\tif (!(s && s.count > 1 && s.opacity)) { return }\n\n\t\tthis$1.regl._refresh()\n\n\t\tif (s.fill && s.triangles && s.triangles.length > 2) {\n\t\t\tthis$1.shaders.fill(s)\n\t\t}\n\n\t\tif (!s.thickness) { return }\n\n\t\t// high scale is only available for rect mode with precision\n\t\tif (s.scale[0] * s.viewport.width > Line2D.precisionThreshold || s.scale[1] * s.viewport.height > Line2D.precisionThreshold) {\n\t\t\tthis$1.shaders.rect(s)\n\t\t}\n\n\t\t// thin this.passes or too many points are rendered as simplified rect shader\n\t\telse if (s.join === 'rect' || (!s.join && (s.thickness <= 2 || s.count >= Line2D.maxPoints))) {\n\t\t\tthis$1.shaders.rect(s)\n\t\t}\n\t\telse {\n\t\t\tthis$1.shaders.miter(s)\n\t\t}\n\t})\n\n\treturn this\n}\n\nLine2D.prototype.update = function (options) {\n\tvar this$1 = this;\n\n\tif (!options) { return }\n\n\tif (options.length != null) {\n\t\tif (typeof options[0] === 'number') { options = [{positions: options}] }\n\t}\n\n\t// make options a batch\n\telse if (!Array.isArray(options)) { options = [options] }\n\n\tvar ref = this;\n\tvar regl = ref.regl;\n\tvar gl = ref.gl;\n\n\t// process per-line settings\n\toptions.forEach(function (o, i) {\n\t\tvar state = this$1.passes[i]\n\n\t\tif (o === undefined) { return }\n\n\t\t// null-argument removes pass\n\t\tif (o === null) {\n\t\t\tthis$1.passes[i] = null\n\t\t\treturn\n\t\t}\n\n\t\tif (typeof o[0] === 'number') { o = {positions: o} }\n\n\t\t// handle aliases\n\t\to = pick(o, {\n\t\t\tpositions: 'positions points data coords',\n\t\t\tthickness: 'thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth',\n\t\t\tjoin: 'lineJoin linejoin join type mode',\n\t\t\tmiterLimit: 'miterlimit miterLimit',\n\t\t\tdashes: 'dash dashes dasharray dash-array dashArray',\n\t\t\tcolor: 'color colour stroke colors colours stroke-color strokeColor',\n\t\t\tfill: 'fill fill-color fillColor',\n\t\t\topacity: 'alpha opacity',\n\t\t\toverlay: 'overlay crease overlap intersect',\n\t\t\tclose: 'closed close closed-path closePath',\n\t\t\trange: 'range dataBox',\n\t\t\tviewport: 'viewport viewBox',\n\t\t\thole: 'holes hole hollow',\n\t\t\tsplitNull: 'splitNull'\n\t\t})\n\n\t\t// init state\n\t\tif (!state) {\n\t\t\tthis$1.passes[i] = state = {\n\t\t\t\tid: i,\n\t\t\t\tscale: null,\n\t\t\t\tscaleFract: null,\n\t\t\t\ttranslate: null,\n\t\t\t\ttranslateFract: null,\n\t\t\t\tcount: 0,\n\t\t\t\thole: [],\n\t\t\t\tdepth: 0,\n\n\t\t\t\tdashLength: 1,\n\t\t\t\tdashTexture: regl.texture({\n\t\t\t\t\tchannels: 1,\n\t\t\t\t\tdata: new Uint8Array([255]),\n\t\t\t\t\twidth: 1,\n\t\t\t\t\theight: 1,\n\t\t\t\t\tmag: 'linear',\n\t\t\t\t\tmin: 'linear'\n\t\t\t\t}),\n\n\t\t\t\tcolorBuffer: regl.buffer({\n\t\t\t\t\tusage: 'dynamic',\n\t\t\t\t\ttype: 'uint8',\n\t\t\t\t\tdata: new Uint8Array()\n\t\t\t\t}),\n\t\t\t\tpositionBuffer: regl.buffer({\n\t\t\t\t\tusage: 'dynamic',\n\t\t\t\t\ttype: 'float',\n\t\t\t\t\tdata: new Uint8Array()\n\t\t\t\t}),\n\t\t\t\tpositionFractBuffer: regl.buffer({\n\t\t\t\t\tusage: 'dynamic',\n\t\t\t\t\ttype: 'float',\n\t\t\t\t\tdata: new Uint8Array()\n\t\t\t\t})\n\t\t\t}\n\n\t\t\to = extend({}, Line2D.defaults, o)\n\t\t}\n\t\tif (o.thickness != null) { state.thickness = parseFloat(o.thickness) }\n\t\tif (o.opacity != null) { state.opacity = parseFloat(o.opacity) }\n\t\tif (o.miterLimit != null) { state.miterLimit = parseFloat(o.miterLimit) }\n\t\tif (o.overlay != null) {\n\t\t\tstate.overlay = !!o.overlay\n\t\t\tif (i < Line2D.maxLines) {\n\t\t\t\tstate.depth = 2 * (Line2D.maxLines - 1 - i % Line2D.maxLines) / Line2D.maxLines - 1.;\n\t\t\t}\n\t\t}\n\t\tif (o.join != null) { state.join = o.join }\n\t\tif (o.hole != null) { state.hole = o.hole }\n\t\tif (o.fill != null) { state.fill = !o.fill ? null : rgba(o.fill, 'uint8') }\n\t\tif (o.viewport != null) { state.viewport = parseRect(o.viewport) }\n\n\t\tif (!state.viewport) {\n\t\t\tstate.viewport = parseRect([\n\t\t\t\tgl.drawingBufferWidth,\n\t\t\t\tgl.drawingBufferHeight\n\t\t\t])\n\t\t}\n\n\t\tif (o.close != null) { state.close = o.close }\n\n\t\t// reset positions\n\t\tif (o.positions === null) { o.positions = [] }\n\t\tif (o.positions) {\n\t\t\tvar positions, count\n\n\t\t\t// if positions are an object with x/y\n\t\t\tif (o.positions.x && o.positions.y) {\n\t\t\t\tvar xPos = o.positions.x\n\t\t\t\tvar yPos = o.positions.y\n\t\t\t\tcount = state.count = Math.max(\n\t\t\t\t\txPos.length,\n\t\t\t\t\tyPos.length\n\t\t\t\t)\n\t\t\t\tpositions = new Float64Array(count * 2)\n\t\t\t\tfor (var i$1 = 0; i$1 < count; i$1++) {\n\t\t\t\t\tpositions[i$1 * 2] = xPos[i$1]\n\t\t\t\t\tpositions[i$1 * 2 + 1] = yPos[i$1]\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tpositions = flatten(o.positions, 'float64')\n\t\t\t\tcount = state.count = Math.floor(positions.length / 2)\n\t\t\t}\n\n\t\t\tvar bounds = state.bounds = getBounds(positions, 2)\n\n\t\t\t// create fill positions\n\t\t\t// FIXME: fill positions can be set only along with positions\n\t\t\tif (state.fill) {\n\t\t\t\tvar pos = []\n\n\t\t\t\t// filter bad vertices and remap triangles to ensure shape\n\t\t\t\tvar ids = {}\n\t\t\t\tvar lastId = 0\n\n\t\t\t\tfor (var i$2 = 0, ptr = 0, l = state.count; i$2 < l; i$2++) {\n\t\t\t\t\tvar x = positions[i$2*2]\n\t\t\t\t\tvar y = positions[i$2*2 + 1]\n\t\t\t\t\tif (isNaN(x) || isNaN(y) || x == null || y == null) {\n\t\t\t\t\t\tx = positions[lastId*2]\n\t\t\t\t\t\ty = positions[lastId*2 + 1]\n\t\t\t\t\t\tids[i$2] = lastId\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tlastId = i$2\n\t\t\t\t\t}\n\t\t\t\t\tpos[ptr++] = x\n\t\t\t\t\tpos[ptr++] = y\n\t\t\t\t}\n\n\t\t\t\t// split the input into multiple polygon at Null/NaN\n\t\t\t\tif(o.splitNull){\n\t\t\t\t\t// use \"ids\" to track the boundary of segment\n\t\t\t\t\t// the keys in \"ids\" is the end boundary of a segment, or split point\n\n\t\t\t\t\t// make sure there is at least one segment\n\t\t\t\t\tif(!(state.count-1 in ids)) { ids[state.count] = state.count-1 }\n\n\t\t\t\t\tvar splits = Object.keys(ids).map(Number).sort(function (a, b) { return a - b; })\n\n\t\t\t\t\tvar split_triangles = []\n\t\t\t\t\tvar base = 0\n\n\t\t\t\t\t// do not split holes\n\t\t\t\t\tvar hole_base = state.hole != null ? state.hole[0] : null\n\t\t\t\t\tif(hole_base != null){\n\t\t\t\t\t\tvar last_id = findIndex(splits, function (e){ return e>=hole_base; })\n\t\t\t\t\t\tsplits = splits.slice(0,last_id)\n\t\t\t\t\t\tsplits.push(hole_base)\n\t\t\t\t\t}\n\n\t\t\t\t\tvar loop = function ( i ) {\n\t\t\t\t\t\t// create temporary pos array with only one segment and all the holes\n\t\t\t\t\t\tvar seg_pos = pos.slice(base*2, splits[i]*2).concat(\n\t\t\t\t\t\t\thole_base ? pos.slice(hole_base*2) : []\n\t\t\t\t\t\t)\n\t\t\t\t\t\tvar hole = (state.hole || []).map(function (e) { return e-hole_base+(splits[i]-base); } )\n\t\t\t\t\t\tvar triangles = triangulate(seg_pos, hole)\n\t\t\t\t\t\t// map triangle index back to the original pos buffer\n\t\t\t\t\t\ttriangles = triangles.map(\n\t\t\t\t\t\t\tfunction (e){ return e + base + ((e + base < splits[i]) ? 0 : hole_base - splits[i]); }\n\t\t\t\t\t\t)\n\t\t\t\t\t\tsplit_triangles.push.apply(split_triangles, triangles)\n\n\t\t\t\t\t\t// skip split point\n\t\t\t\t\t\tbase = splits[i] + 1\n\t\t\t\t\t};\n\n\t\t\t\t\tfor (var i$3 = 0; i$3 < splits.length; i$3++)\n\t\t\t\t\tloop( i$3 );\n\t\t\t\t\tfor (var i$4 = 0, l$1 = split_triangles.length; i$4 < l$1; i$4++) {\n\t\t\t\t\t\tif (ids[split_triangles[i$4]] != null) { split_triangles[i$4] = ids[split_triangles[i$4]] }\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.triangles = split_triangles\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// treat the wholw input as a single polygon\n\t\t\t\t\tvar triangles$1 = triangulate(pos, state.hole || [])\n\n\t\t\t\t\tfor (var i$5 = 0, l$2 = triangles$1.length; i$5 < l$2; i$5++) {\n\t\t\t\t\t\tif (ids[triangles$1[i$5]] != null) { triangles$1[i$5] = ids[triangles$1[i$5]] }\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.triangles = triangles$1\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// update position buffers\n\t\t\tvar npos = new Float64Array(positions)\n\t\t\tnormalize(npos, 2, bounds)\n\n\t\t\tvar positionData = new Float64Array(count * 2 + 6)\n\n\t\t\t// rotate first segment join\n\t\t\tif (state.close) {\n\t\t\t\tif (positions[0] === positions[count*2 - 2] &&\n\t\t\t\t\tpositions[1] === positions[count*2 - 1]) {\n\t\t\t\t\tpositionData[0] = npos[count*2 - 4]\n\t\t\t\t\tpositionData[1] = npos[count*2 - 3]\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tpositionData[0] = npos[count*2 - 2]\n\t\t\t\t\tpositionData[1] = npos[count*2 - 1]\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tpositionData[0] = npos[0]\n\t\t\t\tpositionData[1] = npos[1]\n\t\t\t}\n\n\t\t\tpositionData.set(npos, 2)\n\n\t\t\t// add last segment\n\t\t\tif (state.close) {\n\t\t\t\t// ignore coinciding start/end\n\t\t\t\tif (positions[0] === positions[count*2 - 2] &&\n\t\t\t\t\tpositions[1] === positions[count*2 - 1]) {\n\t\t\t\t\tpositionData[count*2 + 2] = npos[2]\n\t\t\t\t\tpositionData[count*2 + 3] = npos[3]\n\t\t\t\t\tstate.count -= 1\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tpositionData[count*2 + 2] = npos[0]\n\t\t\t\t\tpositionData[count*2 + 3] = npos[1]\n\t\t\t\t\tpositionData[count*2 + 4] = npos[2]\n\t\t\t\t\tpositionData[count*2 + 5] = npos[3]\n\t\t\t\t}\n\t\t\t}\n\t\t\t// add stub\n\t\t\telse {\n\t\t\t\tpositionData[count*2 + 2] = npos[count*2 - 2]\n\t\t\t\tpositionData[count*2 + 3] = npos[count*2 - 1]\n\t\t\t\tpositionData[count*2 + 4] = npos[count*2 - 2]\n\t\t\t\tpositionData[count*2 + 5] = npos[count*2 - 1]\n\t\t\t}\n\n\t\t\tvar float_data = float32(positionData)\n\t\t\tstate.positionBuffer(float_data)\n\t\t\tvar frac_data = fract32(positionData, float_data)\n\t\t\tstate.positionFractBuffer(frac_data)\n\t\t}\n\n\t\tif (o.range) {\n\t\t\tstate.range = o.range\n\t\t} else if (!state.range) {\n\t\t\tstate.range = state.bounds\n\t\t}\n\n\t\tif ((o.range || o.positions) && state.count) {\n\t\t\tvar bounds$1 = state.bounds\n\n\t\t\tvar boundsW = bounds$1[2] - bounds$1[0],\n\t\t\t\tboundsH = bounds$1[3] - bounds$1[1]\n\n\t\t\tvar rangeW = state.range[2] - state.range[0],\n\t\t\t\trangeH = state.range[3] - state.range[1]\n\n\t\t\tstate.scale = [\n\t\t\t\tboundsW / rangeW,\n\t\t\t\tboundsH / rangeH\n\t\t\t]\n\t\t\tstate.translate = [\n\t\t\t\t-state.range[0] / rangeW + bounds$1[0] / rangeW || 0,\n\t\t\t\t-state.range[1] / rangeH + bounds$1[1] / rangeH || 0\n\t\t\t]\n\n\t\t\tstate.scaleFract = fract32(state.scale)\n\t\t\tstate.translateFract = fract32(state.translate)\n\t\t}\n\n\t\tif (o.dashes) {\n\t\t\tvar dashLength = 0., dashData\n\n\t\t\tif (!o.dashes || o.dashes.length < 2) {\n\t\t\t\tdashLength = 1.\n\t\t\t\tdashData = new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255])\n\t\t\t}\n\n\t\t\telse {\n\t\t\t\tdashLength = 0.;\n\t\t\t\tfor(var i$6 = 0; i$6 < o.dashes.length; ++i$6) {\n\t\t\t\t\tdashLength += o.dashes[i$6]\n\t\t\t\t}\n\t\t\t\tdashData = new Uint8Array(dashLength * Line2D.dashMult)\n\t\t\t\tvar ptr$1 = 0\n\t\t\t\tvar fillColor = 255\n\n\t\t\t\t// repeat texture two times to provide smooth 0-step\n\t\t\t\tfor (var k = 0; k < 2; k++) {\n\t\t\t\t\tfor(var i$7 = 0; i$7 < o.dashes.length; ++i$7) {\n\t\t\t\t\t\tfor(var j = 0, l$3 = o.dashes[i$7] * Line2D.dashMult * .5; j < l$3; ++j) {\n\t\t\t\t\t\t\tdashData[ptr$1++] = fillColor\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfillColor ^= 255\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstate.dashLength = dashLength\n\t\t\tstate.dashTexture({\n\t\t\t\tchannels: 1,\n\t\t\t\tdata: dashData,\n\t\t\t\twidth: dashData.length,\n\t\t\t\theight: 1,\n\t\t\t\tmag: 'linear',\n\t\t\t\tmin: 'linear'\n\t\t\t}, 0, 0)\n\t\t}\n\n\t\tif (o.color) {\n\t\t\tvar count$1 = state.count\n\t\t\tvar colors = o.color\n\n\t\t\tif (!colors) { colors = 'transparent' }\n\n\t\t\tvar colorData = new Uint8Array(count$1 * 4 + 4)\n\n\t\t\t// convert colors to typed arrays\n\t\t\tif (!Array.isArray(colors) || typeof colors[0] === 'number') {\n\t\t\t\tvar c = rgba(colors, 'uint8')\n\n\t\t\t\tfor (var i$8 = 0; i$8 < count$1 + 1; i$8++) {\n\t\t\t\t\tcolorData.set(c, i$8 * 4)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var i$9 = 0; i$9 < count$1; i$9++) {\n\t\t\t\t\tvar c$1 = rgba(colors[i$9], 'uint8')\n\t\t\t\t\tcolorData.set(c$1, i$9 * 4)\n\t\t\t\t}\n\t\t\t\tcolorData.set(rgba(colors[0], 'uint8'), count$1 * 4)\n\t\t\t}\n\n\t\t\tstate.colorBuffer({\n\t\t\t\tusage: 'dynamic',\n\t\t\t\ttype: 'uint8',\n\t\t\t\tdata: colorData\n\t\t\t})\n\t\t}\n\t})\n\n\t// remove unmentioned passes\n\tif (options.length < this.passes.length) {\n\t\tfor (var i = options.length; i < this.passes.length; i++) {\n\t\t\tvar pass = this.passes[i]\n\t\t\tif (!pass) { continue }\n\t\t\tpass.colorBuffer.destroy()\n\t\t\tpass.positionBuffer.destroy()\n\t\t\tpass.dashTexture.destroy()\n\t\t}\n\t\tthis.passes.length = options.length\n\t}\n\n\t// remove null items\n\tvar passes = []\n\tfor (var i$1 = 0; i$1 < this.passes.length; i$1++) {\n\t\tif (this.passes[i$1] !== null) { passes.push(this.passes[i$1]) }\n\t}\n\tthis.passes = passes\n\n\treturn this\n}\n\nLine2D.prototype.destroy = function () {\n\tthis.passes.forEach(function (pass) {\n\t\tpass.colorBuffer.destroy()\n\t\tpass.positionBuffer.destroy()\n\t\tpass.dashTexture.destroy()\n\t})\n\n\tthis.passes.length = 0\n\n\treturn this\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64, \n\n/***/ }),\n\n/***/ 11870:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7813062__) {\n\n\"use strict\";\n\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar rgba = __nested_webpack_require_7813062__(25075);\n\nvar getBounds = __nested_webpack_require_7813062__(21527);\n\nvar colorId = __nested_webpack_require_7813062__(6475);\n\nvar cluster = __nested_webpack_require_7813062__(88294);\n\nvar extend = __nested_webpack_require_7813062__(56131);\n\nvar glslify = __nested_webpack_require_7813062__(56068);\n\nvar pick = __nested_webpack_require_7813062__(71299);\n\nvar updateDiff = __nested_webpack_require_7813062__(93447);\n\nvar flatten = __nested_webpack_require_7813062__(30120);\n\nvar ie = __nested_webpack_require_7813062__(62683);\n\nvar f32 = __nested_webpack_require_7813062__(57060);\n\nvar parseRect = __nested_webpack_require_7813062__(18863);\n\nvar scatter = Scatter;\n\nfunction Scatter(regl, options) {\n  var _this = this;\n\n  if (!(this instanceof Scatter)) return new Scatter(regl, options);\n\n  if (typeof regl === 'function') {\n    if (!options) options = {};\n    options.regl = regl;\n  } else {\n    options = regl;\n    regl = null;\n  }\n\n  if (options && options.length) options.positions = options;\n  regl = options.regl; // persistent variables\n\n  var gl = regl._gl,\n      paletteTexture,\n      palette = [],\n      paletteIds = {},\n      // state\n  groups = [],\n      // textures for marker keys\n  markerTextures = [null],\n      markerCache = [null];\n  var maxColors = 255,\n      maxSize = 100; // direct color buffer mode\n  // IE does not support palette anyways\n\n  this.tooManyColors = ie; // texture with color palette\n\n  paletteTexture = regl.texture({\n    data: new Uint8Array(maxColors * 4),\n    width: maxColors,\n    height: 1,\n    type: 'uint8',\n    format: 'rgba',\n    wrapS: 'clamp',\n    wrapT: 'clamp',\n    mag: 'nearest',\n    min: 'nearest'\n  });\n  extend(this, {\n    regl: regl,\n    gl: gl,\n    groups: groups,\n    markerCache: markerCache,\n    markerTextures: markerTextures,\n    palette: palette,\n    paletteIds: paletteIds,\n    paletteTexture: paletteTexture,\n    maxColors: maxColors,\n    maxSize: maxSize,\n    canvas: gl.canvas\n  });\n  this.update(options); // common shader options\n\n  var shaderOptions = {\n    uniforms: {\n      constPointSize: !!options.constPointSize,\n      opacity: regl.prop('opacity'),\n      paletteSize: function paletteSize(ctx, prop) {\n        return [_this.tooManyColors ? 0 : maxColors, paletteTexture.height];\n      },\n      pixelRatio: regl.context('pixelRatio'),\n      scale: regl.prop('scale'),\n      scaleFract: regl.prop('scaleFract'),\n      translate: regl.prop('translate'),\n      translateFract: regl.prop('translateFract'),\n      markerTexture: regl.prop('markerTexture'),\n      paletteTexture: paletteTexture\n    },\n    attributes: {\n      // FIXME: optimize these parts\n      x: function x(ctx, prop) {\n        return prop.xAttr || {\n          buffer: prop.positionBuffer,\n          stride: 8,\n          offset: 0\n        };\n      },\n      y: function y(ctx, prop) {\n        return prop.yAttr || {\n          buffer: prop.positionBuffer,\n          stride: 8,\n          offset: 4\n        };\n      },\n      xFract: function xFract(ctx, prop) {\n        return prop.xAttr ? {\n          constant: [0, 0]\n        } : {\n          buffer: prop.positionFractBuffer,\n          stride: 8,\n          offset: 0\n        };\n      },\n      yFract: function yFract(ctx, prop) {\n        return prop.yAttr ? {\n          constant: [0, 0]\n        } : {\n          buffer: prop.positionFractBuffer,\n          stride: 8,\n          offset: 4\n        };\n      },\n      size: function size(ctx, prop) {\n        return prop.size.length ? {\n          buffer: prop.sizeBuffer,\n          stride: 2,\n          offset: 0\n        } : {\n          constant: [Math.round(prop.size * 255 / _this.maxSize)]\n        };\n      },\n      borderSize: function borderSize(ctx, prop) {\n        return prop.borderSize.length ? {\n          buffer: prop.sizeBuffer,\n          stride: 2,\n          offset: 1\n        } : {\n          constant: [Math.round(prop.borderSize * 255 / _this.maxSize)]\n        };\n      },\n      colorId: function colorId(ctx, prop) {\n        return prop.color.length ? {\n          buffer: prop.colorBuffer,\n          stride: _this.tooManyColors ? 8 : 4,\n          offset: 0\n        } : {\n          constant: _this.tooManyColors ? palette.slice(prop.color * 4, prop.color * 4 + 4) : [prop.color]\n        };\n      },\n      borderColorId: function borderColorId(ctx, prop) {\n        return prop.borderColor.length ? {\n          buffer: prop.colorBuffer,\n          stride: _this.tooManyColors ? 8 : 4,\n          offset: _this.tooManyColors ? 4 : 2\n        } : {\n          constant: _this.tooManyColors ? palette.slice(prop.borderColor * 4, prop.borderColor * 4 + 4) : [prop.borderColor]\n        };\n      },\n      isActive: function isActive(ctx, prop) {\n        return prop.activation === true ? {\n          constant: [1]\n        } : prop.activation ? prop.activation : {\n          constant: [0]\n        };\n      }\n    },\n    blend: {\n      enable: true,\n      color: [0, 0, 0, 1],\n      // photoshop blending\n      func: {\n        srcRGB: 'src alpha',\n        dstRGB: 'one minus src alpha',\n        srcAlpha: 'one minus dst alpha',\n        dstAlpha: 'one'\n      }\n    },\n    scissor: {\n      enable: true,\n      box: regl.prop('viewport')\n    },\n    viewport: regl.prop('viewport'),\n    stencil: {\n      enable: false\n    },\n    depth: {\n      enable: false\n    },\n    elements: regl.prop('elements'),\n    count: regl.prop('count'),\n    offset: regl.prop('offset'),\n    primitive: 'points'\n  }; // draw sdf-marker\n\n  var markerOptions = extend({}, shaderOptions);\n  markerOptions.frag = glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nuniform float opacity;\\nuniform sampler2D markerTexture;\\n\\nvarying vec4 fragColor, fragBorderColor;\\nvarying float fragWidth, fragBorderColorLevel, fragColorLevel;\\n\\nfloat smoothStep(float x, float y) {\\n  return 1.0 / (1.0 + exp(50.0*(x - y)));\\n}\\n\\nvoid main() {\\n  float dist = texture2D(markerTexture, gl_PointCoord).r, delta = fragWidth;\\n\\n  // max-distance alpha\\n  if (dist < 0.003) discard;\\n\\n  // null-border case\\n  if (fragBorderColorLevel == fragColorLevel || fragBorderColor.a == 0.) {\\n    float colorAmt = smoothstep(.5 - delta, .5 + delta, dist);\\n    gl_FragColor = vec4(fragColor.rgb, colorAmt * fragColor.a * opacity);\\n  }\\n  else {\\n    float borderColorAmt = smoothstep(fragBorderColorLevel - delta, fragBorderColorLevel + delta, dist);\\n    float colorAmt = smoothstep(fragColorLevel - delta, fragColorLevel + delta, dist);\\n\\n    vec4 color = fragBorderColor;\\n    color.a *= borderColorAmt;\\n    color = mix(color, fragColor, colorAmt);\\n    color.a *= opacity;\\n\\n    gl_FragColor = color;\\n  }\\n\\n}\\n\"]);\n  markerOptions.vert = glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute float x, y, xFract, yFract;\\nattribute float size, borderSize;\\nattribute vec4 colorId, borderColorId;\\nattribute float isActive;\\n\\nuniform bool constPointSize;\\nuniform float pixelRatio;\\nuniform vec2 scale, scaleFract, translate, translateFract, paletteSize;\\nuniform sampler2D paletteTexture;\\n\\nconst float maxSize = 100.;\\nconst float borderLevel = .5;\\n\\nvarying vec4 fragColor, fragBorderColor;\\nvarying float fragPointSize, fragBorderRadius, fragWidth, fragBorderColorLevel, fragColorLevel;\\n\\nfloat pointSizeScale = (constPointSize) ? 2. : pixelRatio;\\n\\nbool isDirect = (paletteSize.x < 1.);\\n\\nvec4 getColor(vec4 id) {\\n  return isDirect ? id / 255. : texture2D(paletteTexture,\\n    vec2(\\n      (id.x + .5) / paletteSize.x,\\n      (id.y + .5) / paletteSize.y\\n    )\\n  );\\n}\\n\\nvoid main() {\\n  // ignore inactive points\\n  if (isActive == 0.) return;\\n\\n  vec2 position = vec2(x, y);\\n  vec2 positionFract = vec2(xFract, yFract);\\n\\n  vec4 color = getColor(colorId);\\n  vec4 borderColor = getColor(borderColorId);\\n\\n  float size = size * maxSize / 255.;\\n  float borderSize = borderSize * maxSize / 255.;\\n\\n  gl_PointSize = 2. * size * pointSizeScale;\\n  fragPointSize = size * pixelRatio;\\n\\n  vec2 pos = (position + translate) * scale\\n      + (positionFract + translateFract) * scale\\n      + (position + translate) * scaleFract\\n      + (positionFract + translateFract) * scaleFract;\\n\\n  gl_Position = vec4(pos * 2. - 1., 0., 1.);\\n\\n  fragColor = color;\\n  fragBorderColor = borderColor;\\n  fragWidth = 1. / gl_PointSize;\\n\\n  fragBorderColorLevel = clamp(borderLevel - borderLevel * borderSize / size, 0., 1.);\\n  fragColorLevel = clamp(borderLevel + (1. - borderLevel) * borderSize / size, 0., 1.);\\n}\"]);\n  this.drawMarker = regl(markerOptions); // draw circle\n\n  var circleOptions = extend({}, shaderOptions);\n  circleOptions.frag = glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor, fragBorderColor;\\nvarying float fragBorderRadius, fragWidth;\\n\\nuniform float opacity;\\n\\nfloat smoothStep(float edge0, float edge1, float x) {\\n\\tfloat t;\\n\\tt = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);\\n\\treturn t * t * (3.0 - 2.0 * t);\\n}\\n\\nvoid main() {\\n\\tfloat radius, alpha = 1.0, delta = fragWidth;\\n\\n\\tradius = length(2.0 * gl_PointCoord.xy - 1.0);\\n\\n\\tif (radius > 1.0 + delta) {\\n\\t\\tdiscard;\\n\\t}\\n\\n\\talpha -= smoothstep(1.0 - delta, 1.0 + delta, radius);\\n\\n\\tfloat borderRadius = fragBorderRadius;\\n\\tfloat ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius);\\n\\tvec4 color = mix(fragColor, fragBorderColor, ratio);\\n\\tcolor.a *= alpha * opacity;\\n\\tgl_FragColor = color;\\n}\\n\"]);\n  circleOptions.vert = glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute float x, y, xFract, yFract;\\nattribute float size, borderSize;\\nattribute vec4 colorId, borderColorId;\\nattribute float isActive;\\n\\nuniform bool constPointSize;\\nuniform float pixelRatio;\\nuniform vec2 paletteSize, scale, scaleFract, translate, translateFract;\\nuniform sampler2D paletteTexture;\\n\\nconst float maxSize = 100.;\\n\\nvarying vec4 fragColor, fragBorderColor;\\nvarying float fragBorderRadius, fragWidth;\\n\\nfloat pointSizeScale = (constPointSize) ? 2. : pixelRatio;\\n\\nbool isDirect = (paletteSize.x < 1.);\\n\\nvec4 getColor(vec4 id) {\\n  return isDirect ? id / 255. : texture2D(paletteTexture,\\n    vec2(\\n      (id.x + .5) / paletteSize.x,\\n      (id.y + .5) / paletteSize.y\\n    )\\n  );\\n}\\n\\nvoid main() {\\n  // ignore inactive points\\n  if (isActive == 0.) return;\\n\\n  vec2 position = vec2(x, y);\\n  vec2 positionFract = vec2(xFract, yFract);\\n\\n  vec4 color = getColor(colorId);\\n  vec4 borderColor = getColor(borderColorId);\\n\\n  float size = size * maxSize / 255.;\\n  float borderSize = borderSize * maxSize / 255.;\\n\\n  gl_PointSize = (size + borderSize) * pointSizeScale;\\n\\n  vec2 pos = (position + translate) * scale\\n      + (positionFract + translateFract) * scale\\n      + (position + translate) * scaleFract\\n      + (positionFract + translateFract) * scaleFract;\\n\\n  gl_Position = vec4(pos * 2. - 1., 0., 1.);\\n\\n  fragBorderRadius = 1. - 2. * borderSize / (size + borderSize);\\n  fragColor = color;\\n  fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor;\\n  fragWidth = 1. / gl_PointSize;\\n}\\n\"]); // polyfill IE\n\n  if (ie) {\n    circleOptions.frag = circleOptions.frag.replace('smoothstep', 'smoothStep');\n    markerOptions.frag = markerOptions.frag.replace('smoothstep', 'smoothStep');\n  }\n\n  this.drawCircle = regl(circleOptions);\n} // single pass defaults\n\n\nScatter.defaults = {\n  color: 'black',\n  borderColor: 'transparent',\n  borderSize: 0,\n  size: 12,\n  opacity: 1,\n  marker: undefined,\n  viewport: null,\n  range: null,\n  pixelSize: null,\n  count: 0,\n  offset: 0,\n  bounds: null,\n  positions: [],\n  snap: 1e4\n}; // update & redraw\n\nScatter.prototype.render = function () {\n  if (arguments.length) {\n    this.update.apply(this, arguments);\n  }\n\n  this.draw();\n  return this;\n}; // draw all groups or only indicated ones\n\n\nScatter.prototype.draw = function () {\n  var _this2 = this;\n\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  var groups = this.groups; // if directly array passed - treat as passes\n\n  if (args.length === 1 && Array.isArray(args[0]) && (args[0][0] === null || Array.isArray(args[0][0]))) {\n    args = args[0];\n  } // FIXME: remove once https://github.com/regl-project/regl/issues/474 resolved\n\n\n  this.regl._refresh();\n\n  if (args.length) {\n    for (var i = 0; i < args.length; i++) {\n      this.drawItem(i, args[i]);\n    }\n  } // draw all passes\n  else {\n    groups.forEach(function (group, i) {\n      _this2.drawItem(i);\n    });\n  }\n\n  return this;\n}; // draw specific scatter group\n\n\nScatter.prototype.drawItem = function (id, els) {\n  var groups = this.groups;\n  var group = groups[id]; // debug viewport\n  // let { viewport } = group\n  // gl.enable(gl.SCISSOR_TEST);\n  // gl.scissor(viewport.x, viewport.y, viewport.width, viewport.height);\n  // gl.clearColor(0, 0, 0, .5);\n  // gl.clear(gl.COLOR_BUFFER_BIT);\n\n  if (typeof els === 'number') {\n    id = els;\n    group = groups[els];\n    els = null;\n  }\n\n  if (!(group && group.count && group.opacity)) return; // draw circles\n\n  if (group.activation[0]) {\n    // TODO: optimize this performance by making groups and regl.this props\n    this.drawCircle(this.getMarkerDrawOptions(0, group, els));\n  } // draw all other available markers\n\n\n  var batch = [];\n\n  for (var i = 1; i < group.activation.length; i++) {\n    if (!group.activation[i] || group.activation[i] !== true && !group.activation[i].data.length) continue;\n    batch.push.apply(batch, _toConsumableArray(this.getMarkerDrawOptions(i, group, els)));\n  }\n\n  if (batch.length) {\n    this.drawMarker(batch);\n  }\n}; // get options for the marker ids\n\n\nScatter.prototype.getMarkerDrawOptions = function (markerId, group, elements) {\n  var range = group.range,\n      tree = group.tree,\n      viewport = group.viewport,\n      activation = group.activation,\n      selectionBuffer = group.selectionBuffer,\n      count = group.count;\n  var regl = this.regl; // direct points\n\n  if (!tree) {\n    // if elements array - draw unclustered points\n    if (elements) {\n      return [extend({}, group, {\n        markerTexture: this.markerTextures[markerId],\n        activation: activation[markerId],\n        count: elements.length,\n        elements: elements,\n        offset: 0\n      })];\n    }\n\n    return [extend({}, group, {\n      markerTexture: this.markerTextures[markerId],\n      activation: activation[markerId],\n      offset: 0\n    })];\n  } // clustered points\n\n\n  var batch = [];\n  var lod = tree.range(range, {\n    lod: true,\n    px: [(range[2] - range[0]) / viewport.width, (range[3] - range[1]) / viewport.height]\n  }); // enable elements by using selection buffer\n\n  if (elements) {\n    var markerActivation = activation[markerId];\n    var mask = markerActivation.data;\n    var data = new Uint8Array(count);\n\n    for (var i = 0; i < elements.length; i++) {\n      var id = elements[i];\n      data[id] = mask ? mask[id] : 1;\n    }\n\n    selectionBuffer.subdata(data);\n  }\n\n  for (var l = lod.length; l--;) {\n    var _lod$l = _slicedToArray(lod[l], 2),\n        from = _lod$l[0],\n        to = _lod$l[1];\n\n    batch.push(extend({}, group, {\n      markerTexture: this.markerTextures[markerId],\n      activation: elements ? selectionBuffer : activation[markerId],\n      offset: from,\n      count: to - from\n    }));\n  }\n\n  return batch;\n}; // update groups options\n\n\nScatter.prototype.update = function () {\n  var _this3 = this;\n\n  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n\n  if (!args.length) return; // passes are as single array\n\n  if (args.length === 1 && Array.isArray(args[0])) args = args[0];\n  var groups = this.groups,\n      gl = this.gl,\n      regl = this.regl,\n      maxSize = this.maxSize,\n      maxColors = this.maxColors,\n      palette = this.palette;\n  this.groups = groups = args.map(function (options, i) {\n    var group = groups[i];\n    if (options === undefined) return group;\n    if (options === null) options = {\n      positions: null\n    };else if (typeof options === 'function') options = {\n      ondraw: options\n    };else if (typeof options[0] === 'number') options = {\n      positions: options\n    }; // copy options to avoid mutation & handle aliases\n\n    options = pick(options, {\n      positions: 'positions data points',\n      snap: 'snap cluster lod tree',\n      size: 'sizes size radius',\n      borderSize: 'borderSizes borderSize border-size bordersize borderWidth borderWidths border-width borderwidth stroke-width strokeWidth strokewidth outline',\n      color: 'colors color fill fill-color fillColor',\n      borderColor: 'borderColors borderColor stroke stroke-color strokeColor',\n      marker: 'markers marker shape',\n      range: 'range dataBox databox',\n      viewport: 'viewport viewPort viewBox viewbox',\n      opacity: 'opacity alpha transparency',\n      bounds: 'bound bounds boundaries limits',\n      tooManyColors: 'tooManyColors palette paletteMode optimizePalette enablePalette'\n    });\n    if (options.positions === null) options.positions = [];\n    if (options.tooManyColors != null) _this3.tooManyColors = options.tooManyColors;\n\n    if (!group) {\n      groups[i] = group = {\n        id: i,\n        scale: null,\n        translate: null,\n        scaleFract: null,\n        translateFract: null,\n        // buffers for active markers\n        activation: [],\n        // buffer for filtered markers\n        selectionBuffer: regl.buffer({\n          data: new Uint8Array(0),\n          usage: 'stream',\n          type: 'uint8'\n        }),\n        // buffers with data: it is faster to switch them per-pass\n        // than provide one congregate buffer\n        sizeBuffer: regl.buffer({\n          data: new Uint8Array(0),\n          usage: 'dynamic',\n          type: 'uint8'\n        }),\n        colorBuffer: regl.buffer({\n          data: new Uint8Array(0),\n          usage: 'dynamic',\n          type: 'uint8'\n        }),\n        positionBuffer: regl.buffer({\n          data: new Uint8Array(0),\n          usage: 'dynamic',\n          type: 'float'\n        }),\n        positionFractBuffer: regl.buffer({\n          data: new Uint8Array(0),\n          usage: 'dynamic',\n          type: 'float'\n        })\n      };\n      options = extend({}, Scatter.defaults, options);\n    } // force update triggers\n\n\n    if (options.positions && !('marker' in options)) {\n      options.marker = group.marker;\n      delete group.marker;\n    } // updating markers cause recalculating snapping\n\n\n    if (options.marker && !('positions' in options)) {\n      options.positions = group.positions;\n      delete group.positions;\n    } // global count of points\n\n\n    var hasSize = 0,\n        hasColor = 0;\n    updateDiff(group, options, [{\n      snap: true,\n      size: function size(s, group) {\n        if (s == null) s = Scatter.defaults.size;\n        hasSize += s && s.length ? 1 : 0;\n        return s;\n      },\n      borderSize: function borderSize(s, group) {\n        if (s == null) s = Scatter.defaults.borderSize;\n        hasSize += s && s.length ? 1 : 0;\n        return s;\n      },\n      opacity: parseFloat,\n      // add colors to palette, save references\n      color: function color(c, group) {\n        if (c == null) c = Scatter.defaults.color;\n        c = _this3.updateColor(c);\n        hasColor++;\n        return c;\n      },\n      borderColor: function borderColor(c, group) {\n        if (c == null) c = Scatter.defaults.borderColor;\n        c = _this3.updateColor(c);\n        hasColor++;\n        return c;\n      },\n      bounds: function bounds(_bounds, group, options) {\n        if (!('range' in options)) options.range = null;\n        return _bounds;\n      },\n      positions: function positions(_positions, group, options) {\n        var snap = group.snap;\n        var positionBuffer = group.positionBuffer,\n            positionFractBuffer = group.positionFractBuffer,\n            selectionBuffer = group.selectionBuffer; // separate buffers for x/y coordinates\n\n        if (_positions.x || _positions.y) {\n          if (_positions.x.length) {\n            group.xAttr = {\n              buffer: regl.buffer(_positions.x),\n              offset: 0,\n              stride: 4,\n              count: _positions.x.length\n            };\n          } else {\n            group.xAttr = {\n              buffer: _positions.x.buffer,\n              offset: _positions.x.offset * 4 || 0,\n              stride: (_positions.x.stride || 1) * 4,\n              count: _positions.x.count\n            };\n          }\n\n          if (_positions.y.length) {\n            group.yAttr = {\n              buffer: regl.buffer(_positions.y),\n              offset: 0,\n              stride: 4,\n              count: _positions.y.length\n            };\n          } else {\n            group.yAttr = {\n              buffer: _positions.y.buffer,\n              offset: _positions.y.offset * 4 || 0,\n              stride: (_positions.y.stride || 1) * 4,\n              count: _positions.y.count\n            };\n          }\n\n          group.count = Math.max(group.xAttr.count, group.yAttr.count);\n          return _positions;\n        }\n\n        _positions = flatten(_positions, 'float64');\n        var count = group.count = Math.floor(_positions.length / 2);\n        var bounds = group.bounds = count ? getBounds(_positions, 2) : null; // if range is not provided updated - recalc it\n\n        if (!options.range && !group.range) {\n          delete group.range;\n          options.range = bounds;\n        } // reset marker\n\n\n        if (!options.marker && !group.marker) {\n          delete group.marker;\n          options.marker = null;\n        } // build cluster tree if required\n\n\n        if (snap && (snap === true || count > snap)) {\n          group.tree = cluster(_positions, {\n            bounds: bounds\n          });\n        } // existing tree instance\n        else if (snap && snap.length) {\n          group.tree = snap;\n        }\n\n        if (group.tree) {\n          var opts = {\n            primitive: 'points',\n            usage: 'static',\n            data: group.tree,\n            type: 'uint32'\n          };\n          if (group.elements) group.elements(opts);else group.elements = regl.elements(opts);\n        } // update position buffers\n\n\n        var float_data = f32.float32(_positions);\n        positionBuffer({\n          data: float_data,\n          usage: 'dynamic'\n        });\n        var frac_data = f32.fract32(_positions, float_data);\n        positionFractBuffer({\n          data: frac_data,\n          usage: 'dynamic'\n        }); // expand selectionBuffer\n\n        selectionBuffer({\n          data: new Uint8Array(count),\n          type: 'uint8',\n          usage: 'stream'\n        });\n        return _positions;\n      }\n    }, {\n      // create marker ids corresponding to known marker textures\n      marker: function marker(markers, group, options) {\n        var activation = group.activation; // reset marker elements\n\n        activation.forEach(function (buffer) {\n          return buffer && buffer.destroy && buffer.destroy();\n        });\n        activation.length = 0; // single sdf marker\n\n        if (!markers || typeof markers[0] === 'number') {\n          var id = _this3.addMarker(markers);\n\n          activation[id] = true;\n        } // per-point markers use mask buffers to enable markers in vert shader\n        else {\n          var markerMasks = [];\n\n          for (var _i = 0, l = Math.min(markers.length, group.count); _i < l; _i++) {\n            var _id = _this3.addMarker(markers[_i]);\n\n            if (!markerMasks[_id]) markerMasks[_id] = new Uint8Array(group.count); // enable marker by default\n\n            markerMasks[_id][_i] = 1;\n          }\n\n          for (var _id2 = 0; _id2 < markerMasks.length; _id2++) {\n            if (!markerMasks[_id2]) continue;\n            var opts = {\n              data: markerMasks[_id2],\n              type: 'uint8',\n              usage: 'static'\n            };\n\n            if (!activation[_id2]) {\n              activation[_id2] = regl.buffer(opts);\n            } else {\n              activation[_id2](opts);\n            }\n\n            activation[_id2].data = markerMasks[_id2];\n          }\n        }\n\n        return markers;\n      },\n      range: function range(_range, group, options) {\n        var bounds = group.bounds; // FIXME: why do we need this?\n\n        if (!bounds) return;\n        if (!_range) _range = bounds;\n        group.scale = [1 / (_range[2] - _range[0]), 1 / (_range[3] - _range[1])];\n        group.translate = [-_range[0], -_range[1]];\n        group.scaleFract = f32.fract(group.scale);\n        group.translateFract = f32.fract(group.translate);\n        return _range;\n      },\n      viewport: function viewport(vp) {\n        var rect = parseRect(vp || [gl.drawingBufferWidth, gl.drawingBufferHeight]); // normalize viewport to the canvas coordinates\n        // rect.y = gl.drawingBufferHeight - rect.height - rect.y\n\n        return rect;\n      }\n    }]); // update size buffer, if needed\n\n    if (hasSize) {\n      var _group = group,\n          count = _group.count,\n          size = _group.size,\n          borderSize = _group.borderSize,\n          sizeBuffer = _group.sizeBuffer;\n      var sizes = new Uint8Array(count * 2);\n\n      if (size.length || borderSize.length) {\n        for (var _i2 = 0; _i2 < count; _i2++) {\n          // we downscale size to allow for fractions\n          sizes[_i2 * 2] = Math.round((size[_i2] == null ? size : size[_i2]) * 255 / maxSize);\n          sizes[_i2 * 2 + 1] = Math.round((borderSize[_i2] == null ? borderSize : borderSize[_i2]) * 255 / maxSize);\n        }\n      }\n\n      sizeBuffer({\n        data: sizes,\n        usage: 'dynamic'\n      });\n    } // update color buffer if needed\n\n\n    if (hasColor) {\n      var _group2 = group,\n          _count = _group2.count,\n          color = _group2.color,\n          borderColor = _group2.borderColor,\n          colorBuffer = _group2.colorBuffer;\n      var colors; // if too many colors - put colors to buffer directly\n\n      if (_this3.tooManyColors) {\n        if (color.length || borderColor.length) {\n          colors = new Uint8Array(_count * 8);\n\n          for (var _i3 = 0; _i3 < _count; _i3++) {\n            var _colorId = color[_i3];\n            colors[_i3 * 8] = palette[_colorId * 4];\n            colors[_i3 * 8 + 1] = palette[_colorId * 4 + 1];\n            colors[_i3 * 8 + 2] = palette[_colorId * 4 + 2];\n            colors[_i3 * 8 + 3] = palette[_colorId * 4 + 3];\n            var borderColorId = borderColor[_i3];\n            colors[_i3 * 8 + 4] = palette[borderColorId * 4];\n            colors[_i3 * 8 + 5] = palette[borderColorId * 4 + 1];\n            colors[_i3 * 8 + 6] = palette[borderColorId * 4 + 2];\n            colors[_i3 * 8 + 7] = palette[borderColorId * 4 + 3];\n          }\n        }\n      } // if limited amount of colors - keep palette color picking\n      // that saves significant memory\n      else {\n        if (color.length || borderColor.length) {\n          // we need slight data increase by 2 due to vec4 borderId in shader\n          colors = new Uint8Array(_count * 4 + 2);\n\n          for (var _i4 = 0; _i4 < _count; _i4++) {\n            // put color coords in palette texture\n            if (color[_i4] != null) {\n              colors[_i4 * 4] = color[_i4] % maxColors;\n              colors[_i4 * 4 + 1] = Math.floor(color[_i4] / maxColors);\n            }\n\n            if (borderColor[_i4] != null) {\n              colors[_i4 * 4 + 2] = borderColor[_i4] % maxColors;\n              colors[_i4 * 4 + 3] = Math.floor(borderColor[_i4] / maxColors);\n            }\n          }\n        }\n      }\n\n      colorBuffer({\n        data: colors || new Uint8Array(0),\n        type: 'uint8',\n        usage: 'dynamic'\n      });\n    }\n\n    return group;\n  });\n}; // get (and create) marker texture id\n\n\nScatter.prototype.addMarker = function (sdf) {\n  var markerTextures = this.markerTextures,\n      regl = this.regl,\n      markerCache = this.markerCache;\n  var pos = sdf == null ? 0 : markerCache.indexOf(sdf);\n  if (pos >= 0) return pos; // convert sdf to 0..255 range\n\n  var distArr;\n\n  if (sdf instanceof Uint8Array || sdf instanceof Uint8ClampedArray) {\n    distArr = sdf;\n  } else {\n    distArr = new Uint8Array(sdf.length);\n\n    for (var i = 0, l = sdf.length; i < l; i++) {\n      distArr[i] = sdf[i] * 255;\n    }\n  }\n\n  var radius = Math.floor(Math.sqrt(distArr.length));\n  pos = markerTextures.length;\n  markerCache.push(sdf);\n  markerTextures.push(regl.texture({\n    channels: 1,\n    data: distArr,\n    radius: radius,\n    mag: 'linear',\n    min: 'linear'\n  }));\n  return pos;\n}; // register color to palette, return it's index or list of indexes\n\n\nScatter.prototype.updateColor = function (colors) {\n  var paletteIds = this.paletteIds,\n      palette = this.palette,\n      maxColors = this.maxColors;\n\n  if (!Array.isArray(colors)) {\n    colors = [colors];\n  }\n\n  var idx = []; // if color groups - flatten them\n\n  if (typeof colors[0] === 'number') {\n    var grouped = [];\n\n    if (Array.isArray(colors)) {\n      for (var i = 0; i < colors.length; i += 4) {\n        grouped.push(colors.slice(i, i + 4));\n      }\n    } else {\n      for (var _i5 = 0; _i5 < colors.length; _i5 += 4) {\n        grouped.push(colors.subarray(_i5, _i5 + 4));\n      }\n    }\n\n    colors = grouped;\n  }\n\n  for (var _i6 = 0; _i6 < colors.length; _i6++) {\n    var color = colors[_i6];\n    color = rgba(color, 'uint8');\n    var id = colorId(color, false); // if new color - save it\n\n    if (paletteIds[id] == null) {\n      var pos = palette.length;\n      paletteIds[id] = Math.floor(pos / 4);\n      palette[pos] = color[0];\n      palette[pos + 1] = color[1];\n      palette[pos + 2] = color[2];\n      palette[pos + 3] = color[3];\n    }\n\n    idx[_i6] = paletteIds[id];\n  } // detect if too many colors in palette\n\n\n  if (!this.tooManyColors && palette.length > maxColors * 4) this.tooManyColors = true; // limit max color\n\n  this.updatePalette(palette); // keep static index for single-color property\n\n  return idx.length === 1 ? idx[0] : idx;\n};\n\nScatter.prototype.updatePalette = function (palette) {\n  if (this.tooManyColors) return;\n  var maxColors = this.maxColors,\n      paletteTexture = this.paletteTexture;\n  var requiredHeight = Math.ceil(palette.length * .25 / maxColors); // pad data\n\n  if (requiredHeight > 1) {\n    palette = palette.slice();\n\n    for (var i = palette.length * .25 % maxColors; i < requiredHeight * maxColors; i++) {\n      palette.push(0, 0, 0, 0);\n    }\n  } // ensure height\n\n\n  if (paletteTexture.height < requiredHeight) {\n    paletteTexture.resize(maxColors, requiredHeight);\n  } // update full data\n\n\n  paletteTexture.subimage({\n    width: Math.min(palette.length * .25, maxColors),\n    height: requiredHeight,\n    data: palette\n  }, 0, 0);\n}; // remove unused stuff\n\n\nScatter.prototype.destroy = function () {\n  this.groups.forEach(function (group) {\n    group.sizeBuffer.destroy();\n    group.positionBuffer.destroy();\n    group.positionFractBuffer.destroy();\n    group.colorBuffer.destroy();\n    group.activation.forEach(function (b) {\n      return b && b.destroy && b.destroy();\n    });\n    group.selectionBuffer.destroy();\n    if (group.elements) group.elements.destroy();\n  });\n  this.groups.length = 0;\n  this.paletteTexture.destroy();\n  this.markerTextures.forEach(function (txt) {\n    return txt && txt.destroy && txt.destroy();\n  });\n  return this;\n};\n\nvar extend$1 = __nested_webpack_require_7813062__(56131);\n\nvar reglScatter2d = function reglScatter2d(regl, options) {\n  var scatter$1 = new scatter(regl, options);\n  var render = scatter$1.render.bind(scatter$1); // expose API\n\n  extend$1(render, {\n    render: render,\n    update: scatter$1.update.bind(scatter$1),\n    draw: scatter$1.draw.bind(scatter$1),\n    destroy: scatter$1.destroy.bind(scatter$1),\n    regl: scatter$1.regl,\n    gl: scatter$1.gl,\n    canvas: scatter$1.gl.canvas,\n    groups: scatter$1.groups,\n    markers: scatter$1.markerCache,\n    palette: scatter$1.palette\n  });\n  return render;\n};\n\nmodule.exports = reglScatter2d;\n\n\n/***/ }),\n\n/***/ 60487:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7847201__) {\n\n\"use strict\";\n\n\n\nvar createScatter = __nested_webpack_require_7847201__(11870)\nvar pick = __nested_webpack_require_7847201__(71299)\nvar getBounds = __nested_webpack_require_7847201__(21527)\nvar raf = __nested_webpack_require_7847201__(5877)\nvar arrRange = __nested_webpack_require_7847201__(57471)\nvar rect = __nested_webpack_require_7847201__(18863)\nvar flatten = __nested_webpack_require_7847201__(30120)\n\n\nmodule.exports = SPLOM\n\n\n// @constructor\nfunction SPLOM (regl, options) {\n\tif (!(this instanceof SPLOM)) { return new SPLOM(regl, options) }\n\n\t// render passes\n\tthis.traces = []\n\n\t// passes for scatter, combined across traces\n\tthis.passes = {}\n\n\tthis.regl = regl\n\n\t// main scatter drawing instance\n\tthis.scatter = createScatter(regl)\n\n\tthis.canvas = this.scatter.canvas\n}\n\n\n// update & draw passes once per frame\nSPLOM.prototype.render = function () {\n\tvar this$1 = this;\n\tvar ref;\n\n\tvar args = [], len = arguments.length;\n\twhile ( len-- ) args[ len ] = arguments[ len ];\n\tif (args.length) {\n\t\t(ref = this).update.apply(ref, args)\n\t}\n\n\tif (this.regl.attributes.preserveDrawingBuffer) { return this.draw() }\n\n\t// make sure draw is not called more often than once a frame\n\tif (this.dirty) {\n\t\tif (this.planned == null) {\n\t\t\tthis.planned = raf(function () {\n\t\t\t\tthis$1.draw()\n\t\t\t\tthis$1.dirty = true\n\t\t\t\tthis$1.planned = null\n\t\t\t})\n\t\t}\n\t}\n\telse {\n\t\tthis.draw()\n\t\tthis.dirty = true\n\t\traf(function () {\n\t\t\tthis$1.dirty = false\n\t\t})\n\t}\n\n\treturn this\n}\n\n\n// update passes\nSPLOM.prototype.update = function () {\n\tvar ref;\n\n\tvar args = [], len = arguments.length;\n\twhile ( len-- ) args[ len ] = arguments[ len ];\n\tif (!args.length) { return }\n\n\tfor (var i = 0; i < args.length; i++) {\n\t\tthis.updateItem(i, args[i])\n\t}\n\n\t// remove nulled passes\n\tthis.traces = this.traces.filter(Boolean)\n\n\t// FIXME: update passes independently\n\tvar passes = []\n\tvar offset = 0\n\tfor (var i$1 = 0; i$1 < this.traces.length; i$1++) {\n\t\tvar trace = this.traces[i$1]\n\t\tvar tracePasses = this.traces[i$1].passes\n\t\tfor (var j = 0; j < tracePasses.length; j++) {\n\t\t\tpasses.push(this.passes[tracePasses[j]])\n\t\t}\n\t\t// save offset of passes\n\t\ttrace.passOffset = offset\n\t\toffset += trace.passes.length\n\t}\n\n\t(ref = this.scatter).update.apply(ref, passes)\n\n\treturn this\n}\n\n\n// update trace by index, not supposed to be called directly\nSPLOM.prototype.updateItem = function (i, options) {\n\tvar ref = this;\n\tvar regl = ref.regl;\n\n\t// remove pass if null\n\tif (options === null) {\n\t\tthis.traces[i] = null\n\t\treturn this\n\t}\n\n\tif (!options) { return this }\n\n\tvar o = pick(options, {\n\t\tdata: 'data items columns rows values dimensions samples x',\n\t\tsnap: 'snap cluster',\n\t\tsize: 'sizes size radius',\n\t\tcolor: 'colors color fill fill-color fillColor',\n\t\topacity: 'opacity alpha transparency opaque',\n\t\tborderSize: 'borderSizes borderSize border-size bordersize borderWidth borderWidths border-width borderwidth stroke-width strokeWidth strokewidth outline',\n\t\tborderColor: 'borderColors borderColor bordercolor stroke stroke-color strokeColor',\n\t\tmarker: 'markers marker shape',\n\t\trange: 'range ranges databox dataBox',\n\t\tviewport: 'viewport viewBox viewbox',\n\t\tdomain: 'domain domains area areas',\n\t\tpadding: 'pad padding paddings pads margin margins',\n\t\ttranspose: 'transpose transposed',\n\t\tdiagonal: 'diagonal diag showDiagonal',\n\t\tupper: 'upper up top upperhalf upperHalf showupperhalf showUpper showUpperHalf',\n\t\tlower: 'lower low bottom lowerhalf lowerHalf showlowerhalf showLowerHalf showLower'\n\t})\n\n\t// we provide regl buffer per-trace, since trace data can be changed\n\tvar trace = (this.traces[i] || (this.traces[i] = {\n\t\tid: i,\n\t\tbuffer: regl.buffer({\n\t\t\tusage: 'dynamic',\n\t\t\ttype: 'float',\n\t\t\tdata: new Uint8Array()\n\t\t}),\n\t\tcolor: 'black',\n\t\tmarker: null,\n\t\tsize: 12,\n\t\tborderColor: 'transparent',\n\t\tborderSize: 1,\n\t\tviewport:  rect([regl._gl.drawingBufferWidth, regl._gl.drawingBufferHeight]),\n\t\tpadding: [0, 0, 0, 0],\n\t\topacity: 1,\n\t\tdiagonal: true,\n\t\tupper: true,\n\t\tlower: true\n\t}))\n\n\n\t// save styles\n\tif (o.color != null) {\n\t\ttrace.color = o.color\n\t}\n\tif (o.size != null) {\n\t\ttrace.size = o.size\n\t}\n\tif (o.marker != null) {\n\t\ttrace.marker = o.marker\n\t}\n\tif (o.borderColor != null) {\n\t\ttrace.borderColor = o.borderColor\n\t}\n\tif (o.borderSize != null) {\n\t\ttrace.borderSize = o.borderSize\n\t}\n\tif (o.opacity != null) {\n\t\ttrace.opacity = o.opacity\n\t}\n\tif (o.viewport) {\n\t\ttrace.viewport = rect(o.viewport)\n\t}\n\tif (o.diagonal != null) { trace.diagonal = o.diagonal }\n\tif (o.upper != null) { trace.upper = o.upper }\n\tif (o.lower != null) { trace.lower = o.lower }\n\n\t// put flattened data into buffer\n\tif (o.data) {\n\t\ttrace.buffer(flatten(o.data))\n\t\ttrace.columns = o.data.length\n\t\ttrace.count = o.data[0].length\n\n\t\t// detect bounds per-column\n\t\ttrace.bounds = []\n\n\t\tfor (var i$1 = 0; i$1 < trace.columns; i$1++) {\n\t\t\ttrace.bounds[i$1] = getBounds(o.data[i$1], 1)\n\t\t}\n\t}\n\n\t// add proper range updating markers\n\tvar multirange\n\tif (o.range) {\n\t\ttrace.range = o.range\n\t\tmultirange = trace.range && typeof trace.range[0] !== 'number'\n\t}\n\n\tif (o.domain) {\n\t\ttrace.domain = o.domain\n\t}\n\tvar multipadding = false\n\tif (o.padding != null) {\n\t\t// multiple paddings\n\t\tif (Array.isArray(o.padding) && o.padding.length === trace.columns && typeof o.padding[o.padding.length - 1] === 'number') {\n\t\t\ttrace.padding = o.padding.map(getPad)\n\t\t\tmultipadding = true\n\t\t}\n\t\t// single padding\n\t\telse {\n\t\t\ttrace.padding = getPad(o.padding)\n\t\t}\n\t}\n\n\t// create passes\n\tvar m = trace.columns\n\tvar n = trace.count\n\n\tvar w = trace.viewport.width\n\tvar h = trace.viewport.height\n\tvar left = trace.viewport.x\n\tvar top = trace.viewport.y\n\tvar iw = w / m\n\tvar ih = h / m\n\n\ttrace.passes = []\n\n\tfor (var i$2 = 0; i$2 < m; i$2++) {\n\t\tfor (var j = 0; j < m; j++) {\n\t\t\tif (!trace.diagonal && j === i$2) { continue }\n\t\t\tif (!trace.upper && i$2 > j) { continue }\n\t\t\tif (!trace.lower && i$2 < j) { continue }\n\n\t\t\tvar key = passId(trace.id, i$2, j)\n\n\t\t\tvar pass = this.passes[key] || (this.passes[key] = {})\n\n\t\t\tif (o.data) {\n\t\t\t\tif (o.transpose) {\n\t\t\t\t\tpass.positions = {\n\t\t\t\t\t\tx: {buffer: trace.buffer, offset: j, count: n, stride: m},\n\t\t\t\t\t\ty: {buffer: trace.buffer, offset: i$2, count: n, stride: m}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tpass.positions = {\n\t\t\t\t\t\tx: {buffer: trace.buffer, offset: j * n, count: n},\n\t\t\t\t\t\ty: {buffer: trace.buffer, offset: i$2 * n, count: n}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tpass.bounds = getBox(trace.bounds, i$2, j)\n\t\t\t}\n\n\t\t\tif (o.domain || o.viewport || o.data) {\n\t\t\t\tvar pad = multipadding ? getBox(trace.padding, i$2, j) : trace.padding\n\t\t\t\tif (trace.domain) {\n\t\t\t\t\tvar ref$1 = getBox(trace.domain, i$2, j);\n\t\t\t\t\tvar lox = ref$1[0];\n\t\t\t\t\tvar loy = ref$1[1];\n\t\t\t\t\tvar hix = ref$1[2];\n\t\t\t\t\tvar hiy = ref$1[3];\n\n\t\t\t\t\tpass.viewport = [\n\t\t\t\t\t\tleft + lox * w + pad[0],\n\t\t\t\t\t\ttop + loy * h + pad[1],\n\t\t\t\t\t\tleft + hix * w - pad[2],\n\t\t\t\t\t\ttop + hiy * h - pad[3]\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t\t// consider auto-domain equipartial\n\t\t\t\telse {\n\t\t\t\t\tpass.viewport = [\n\t\t\t\t\t\tleft + j * iw + iw * pad[0],\n\t\t\t\t\t\ttop + i$2 * ih + ih * pad[1],\n\t\t\t\t\t\tleft + (j + 1) * iw - iw * pad[2],\n\t\t\t\t\t\ttop + (i$2 + 1) * ih - ih * pad[3]\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (o.color) { pass.color = trace.color }\n\t\t\tif (o.size) { pass.size = trace.size }\n\t\t\tif (o.marker) { pass.marker = trace.marker }\n\t\t\tif (o.borderSize) { pass.borderSize = trace.borderSize }\n\t\t\tif (o.borderColor) { pass.borderColor = trace.borderColor }\n\t\t\tif (o.opacity) { pass.opacity = trace.opacity }\n\n\t\t\tif (o.range) {\n\t\t\t\tpass.range = multirange ? getBox(trace.range, i$2, j) : trace.range || pass.bounds\n\t\t\t}\n\n\t\t\ttrace.passes.push(key)\n\t\t}\n\t}\n\n\treturn this\n}\n\n\n// draw all or passed passes\nSPLOM.prototype.draw = function () {\n\tvar ref$2;\n\n\tvar args = [], len = arguments.length;\n\twhile ( len-- ) args[ len ] = arguments[ len ];\n\tif (!args.length) {\n\t\tthis.scatter.draw()\n\t}\n\telse {\n\t\tvar idx = []\n\t\tfor (var i = 0; i < args.length; i++) {\n\t\t\t// draw(0, 2, 5) - draw traces\n\t\t\tif (typeof args[i] === 'number' ) {\n\t\t\t\tvar ref = this.traces[args[i]];\n\t\t\t\tvar passes = ref.passes;\n\t\t\t\tvar passOffset = ref.passOffset;\n\t\t\t\tidx.push.apply(idx, arrRange(passOffset, passOffset + passes.length))\n\t\t\t}\n\t\t\t// draw([0, 1, 2 ...], [3, 4, 5]) - draw points\n\t\t\telse if (args[i].length) {\n\t\t\t\tvar els = args[i]\n\t\t\t\tvar ref$1 = this.traces[i];\n\t\t\t\tvar passes$1 = ref$1.passes;\n\t\t\t\tvar passOffset$1 = ref$1.passOffset;\n\t\t\t\tpasses$1 = passes$1.map(function (passId, i) {\n\t\t\t\t\tidx[passOffset$1 + i] = els\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\t(ref$2 = this.scatter).draw.apply(ref$2, idx)\n\t}\n\n\treturn this\n}\n\n\n// dispose resources\nSPLOM.prototype.destroy = function () {\n\tthis.traces.forEach(function (trace) {\n\t\tif (trace.buffer && trace.buffer.destroy) { trace.buffer.destroy() }\n\t})\n\tthis.traces = null\n\tthis.passes = null\n\n\tthis.scatter.destroy()\n\n\treturn this\n}\n\n\n// return pass corresponding to trace i- j- square\nfunction passId (trace, i, j) {\n\tvar id = (trace.id != null ? trace.id : trace)\n\tvar n = i\n\tvar m = j\n\tvar key = id << 16 | (n & 0xff) << 8 | m & 0xff\n\n\treturn key\n}\n\n\n// return bounding box corresponding to a pass\nfunction getBox (items, i, j) {\n\tvar ilox, iloy, ihix, ihiy, jlox, jloy, jhix, jhiy\n\tvar iitem = items[i], jitem = items[j]\n\n\tif (iitem.length > 2) {\n\t\tilox = iitem[0]\n\t\tihix = iitem[2]\n\t\tiloy = iitem[1]\n\t\tihiy = iitem[3]\n\t}\n\telse if (iitem.length) {\n\t\tilox = iloy = iitem[0]\n\t\tihix = ihiy = iitem[1]\n\t}\n\telse {\n\t\tilox = iitem.x\n\t\tiloy = iitem.y\n\t\tihix = iitem.x + iitem.width\n\t\tihiy = iitem.y + iitem.height\n\t}\n\n\tif (jitem.length > 2) {\n\t\tjlox = jitem[0]\n\t\tjhix = jitem[2]\n\t\tjloy = jitem[1]\n\t\tjhiy = jitem[3]\n\t}\n\telse if (jitem.length) {\n\t\tjlox = jloy = jitem[0]\n\t\tjhix = jhiy = jitem[1]\n\t}\n\telse {\n\t\tjlox = jitem.x\n\t\tjloy = jitem.y\n\t\tjhix = jitem.x + jitem.width\n\t\tjhiy = jitem.y + jitem.height\n\t}\n\n\treturn [ jlox, iloy, jhix, ihiy ]\n}\n\n\nfunction getPad (arg) {\n\tif (typeof arg === 'number') { return [arg, arg, arg, arg] }\n\telse if (arg.length === 2) { return [arg[0], arg[1], arg[0], arg[1]] }\n\telse {\n\t\tvar box = rect(arg)\n\t\treturn [box.x, box.y, box.x + box.width, box.y + box.height]\n\t}\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64, \n\n/***/ }),\n\n/***/ 98580:\n/***/ (function(module) {\n\n(function(da,ea){  true?module.exports=ea():0})(this,function(){function da(a,b){this.id=Db++;this.type=a;this.data=b}function ea(a){if(0===a.length)return[];var b=a.charAt(0),c=a.charAt(a.length-1);if(1<a.length&&b===c&&('\"'===b||\"'\"===b))return['\"'+a.substr(1,a.length-2).replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"')+'\"'];if(b=/\\[(false|true|null|\\d+|'[^']*'|\"[^\"]*\")\\]/.exec(a))return ea(a.substr(0,\nb.index)).concat(ea(b[1])).concat(ea(a.substr(b.index+b[0].length)));b=a.split(\".\");if(1===b.length)return['\"'+a.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"')+'\"'];a=[];for(c=0;c<b.length;++c)a=a.concat(ea(b[c]));return a}function bb(a){return\"[\"+ea(a).join(\"][\")+\"]\"}function cb(a,b){if(\"function\"===typeof a)return new da(0,a);if(\"number\"===typeof a||\"boolean\"===typeof a)return new da(5,a);if(Array.isArray(a))return new da(6,a.map(function(a,d){return cb(a,b+\"[\"+d+\"]\")}));if(a instanceof da)return a}\nfunction Eb(){var a={\"\":0},b=[\"\"];return{id:function(c){var d=a[c];if(d)return d;d=a[c]=b.length;b.push(c);return d},str:function(a){return b[a]}}}function Fb(a,b,c){function d(){var b=window.innerWidth,d=window.innerHeight;a!==document.body&&(d=f.getBoundingClientRect(),b=d.right-d.left,d=d.bottom-d.top);f.width=c*b;f.height=c*d}var f=document.createElement(\"canvas\");O(f.style,{border:0,margin:0,padding:0,top:0,left:0,width:\"100%\",height:\"100%\"});a.appendChild(f);a===document.body&&(f.style.position=\n\"absolute\",O(a.style,{margin:0,padding:0}));var e;a!==document.body&&\"function\"===typeof ResizeObserver?(e=new ResizeObserver(function(){setTimeout(d)}),e.observe(a)):window.addEventListener(\"resize\",d,!1);d();return{canvas:f,onDestroy:function(){e?e.disconnect():window.removeEventListener(\"resize\",d);a.removeChild(f)}}}function Gb(a,b){function c(c){try{return a.getContext(c,b)}catch(f){return null}}return c(\"webgl\")||c(\"experimental-webgl\")||c(\"webgl-experimental\")}function db(a){return\"string\"===\ntypeof a?a.split():a}function eb(a){return\"string\"===typeof a?document.querySelector(a):a}function Hb(a){var b=a||{},c,d,f,e;a={};var m=[],q=[],u=\"undefined\"===typeof window?1:window.devicePixelRatio,r=!1,k={},n=function(a){},t=function(){};\"string\"===typeof b?c=document.querySelector(b):\"object\"===typeof b&&(\"string\"===typeof b.nodeName&&\"function\"===typeof b.appendChild&&\"function\"===typeof b.getBoundingClientRect?c=b:\"function\"===typeof b.drawArrays||\"function\"===typeof b.drawElements?(e=b,f=e.canvas):\n(\"gl\"in b?e=b.gl:\"canvas\"in b?f=eb(b.canvas):\"container\"in b&&(d=eb(b.container)),\"attributes\"in b&&(a=b.attributes),\"extensions\"in b&&(m=db(b.extensions)),\"optionalExtensions\"in b&&(q=db(b.optionalExtensions)),\"onDone\"in b&&(n=b.onDone),\"profile\"in b&&(r=!!b.profile),\"pixelRatio\"in b&&(u=+b.pixelRatio),\"cachedCode\"in b&&(k=b.cachedCode)));c&&(\"canvas\"===c.nodeName.toLowerCase()?f=c:d=c);if(!e){if(!f){c=Fb(d||document.body,n,u);if(!c)return null;f=c.canvas;t=c.onDestroy}void 0===a.premultipliedAlpha&&\n(a.premultipliedAlpha=!0);e=Gb(f,a)}return e?{gl:e,canvas:f,container:d,extensions:m,optionalExtensions:q,pixelRatio:u,profile:r,cachedCode:k,onDone:n,onDestroy:t}:(t(),n(\"webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org\"),null)}function Ib(a,b){function c(b){b=b.toLowerCase();var c;try{c=d[b]=a.getExtension(b)}catch(f){}return!!c}for(var d={},f=0;f<b.extensions.length;++f){var e=b.extensions[f];if(!c(e))return b.onDestroy(),b.onDone('\"'+e+'\" extension is not supported by the current WebGL context, try upgrading your system or a different browser'),\nnull}b.optionalExtensions.forEach(c);return{extensions:d,restore:function(){Object.keys(d).forEach(function(a){if(d[a]&&!c(a))throw Error(\"(regl): error restoring extension \"+a);})}}}function S(a,b){for(var c=Array(a),d=0;d<a;++d)c[d]=b(d);return c}function fb(a){var b,c;b=(65535<a)<<4;a>>>=b;c=(255<a)<<3;a>>>=c;b|=c;c=(15<a)<<2;a>>>=c;b|=c;c=(3<a)<<1;return b|c|a>>>c>>1}function gb(){function a(a){a:{for(var b=16;268435456>=b;b*=16)if(a<=b){a=b;break a}a=0}b=c[fb(a)>>2];return 0<b.length?b.pop():\nnew ArrayBuffer(a)}function b(a){c[fb(a.byteLength)>>2].push(a)}var c=S(8,function(){return[]});return{alloc:a,free:b,allocType:function(b,c){var e=null;switch(b){case 5120:e=new Int8Array(a(c),0,c);break;case 5121:e=new Uint8Array(a(c),0,c);break;case 5122:e=new Int16Array(a(2*c),0,c);break;case 5123:e=new Uint16Array(a(2*c),0,c);break;case 5124:e=new Int32Array(a(4*c),0,c);break;case 5125:e=new Uint32Array(a(4*c),0,c);break;case 5126:e=new Float32Array(a(4*c),0,c);break;default:return null}return e.length!==\nc?e.subarray(0,c):e},freeType:function(a){b(a.buffer)}}}function fa(a){return!!a&&\"object\"===typeof a&&Array.isArray(a.shape)&&Array.isArray(a.stride)&&\"number\"===typeof a.offset&&a.shape.length===a.stride.length&&(Array.isArray(a.data)||P(a.data))}function hb(a,b,c,d,f,e){for(var m=0;m<b;++m)for(var q=a[m],u=0;u<c;++u)for(var r=q[u],k=0;k<d;++k)f[e++]=r[k]}function ib(a,b,c,d,f){for(var e=1,m=c+1;m<b.length;++m)e*=b[m];var q=b[c];if(4===b.length-c){var u=b[c+1],r=b[c+2];b=b[c+3];for(m=0;m<q;++m)hb(a[m],\nu,r,b,d,f),f+=e}else for(m=0;m<q;++m)ib(a[m],b,c+1,d,f),f+=e}function Ha(a){return Ia[Object.prototype.toString.call(a)]|0}function jb(a,b){for(var c=0;c<b.length;++c)a[c]=b[c]}function kb(a,b,c,d,f,e,m){for(var q=0,u=0;u<c;++u)for(var r=0;r<d;++r)a[q++]=b[f*u+e*r+m]}function Jb(a,b,c,d){function f(b){this.id=u++;this.buffer=a.createBuffer();this.type=b;this.usage=35044;this.byteLength=0;this.dimension=1;this.dtype=5121;this.persistentData=null;c.profile&&(this.stats={size:0})}function e(b,c,d){b.byteLength=\nc.byteLength;a.bufferData(b.type,c,d)}function m(a,b,c,d,h,p){a.usage=c;if(Array.isArray(b)){if(a.dtype=d||5126,0<b.length)if(Array.isArray(b[0])){h=lb(b);for(var y=d=1;y<h.length;++y)d*=h[y];a.dimension=d;b=Ua(b,h,a.dtype);e(a,b,c);p?a.persistentData=b:B.freeType(b)}else\"number\"===typeof b[0]?(a.dimension=h,h=B.allocType(a.dtype,b.length),jb(h,b),e(a,h,c),p?a.persistentData=h:B.freeType(h)):P(b[0])&&(a.dimension=b[0].length,a.dtype=d||Ha(b[0])||5126,b=Ua(b,[b.length,b[0].length],a.dtype),e(a,b,c),\np?a.persistentData=b:B.freeType(b))}else if(P(b))a.dtype=d||Ha(b),a.dimension=h,e(a,b,c),p&&(a.persistentData=new Uint8Array(new Uint8Array(b.buffer)));else if(fa(b)){h=b.shape;var f=b.stride,y=b.offset,w=0,z=0,k=0,m=0;1===h.length?(w=h[0],z=1,k=f[0],m=0):2===h.length&&(w=h[0],z=h[1],k=f[0],m=f[1]);a.dtype=d||Ha(b.data)||5126;a.dimension=z;h=B.allocType(a.dtype,w*z);kb(h,b.data,w,z,k,m,y);e(a,h,c);p?a.persistentData=h:B.freeType(h)}else b instanceof ArrayBuffer&&(a.dtype=5121,a.dimension=h,e(a,b,\nc),p&&(a.persistentData=new Uint8Array(new Uint8Array(b))))}function q(c){b.bufferCount--;d(c);a.deleteBuffer(c.buffer);c.buffer=null;delete r[c.id]}var u=0,r={};f.prototype.bind=function(){a.bindBuffer(this.type,this.buffer)};f.prototype.destroy=function(){q(this)};var k=[];c.profile&&(b.getTotalBufferSize=function(){var a=0;Object.keys(r).forEach(function(b){a+=r[b].stats.size});return a});return{create:function(d,e,g,l){function h(b){var d=35044,n=null,g=0,e=0,f=1;Array.isArray(b)||P(b)||fa(b)||\nb instanceof ArrayBuffer?n=b:\"number\"===typeof b?g=b|0:b&&(\"data\"in b&&(n=b.data),\"usage\"in b&&(d=mb[b.usage]),\"type\"in b&&(e=Ja[b.type]),\"dimension\"in b&&(f=b.dimension|0),\"length\"in b&&(g=b.length|0));p.bind();n?m(p,n,d,e,f,l):(g&&a.bufferData(p.type,g,d),p.dtype=e||5121,p.usage=d,p.dimension=f,p.byteLength=g);c.profile&&(p.stats.size=p.byteLength*ja[p.dtype]);return h}b.bufferCount++;var p=new f(e);r[p.id]=p;g||h(d);h._reglType=\"buffer\";h._buffer=p;h.subdata=function(b,c){var d=(c||0)|0,n;p.bind();\nif(P(b)||b instanceof ArrayBuffer)a.bufferSubData(p.type,d,b);else if(Array.isArray(b)){if(0<b.length)if(\"number\"===typeof b[0]){var g=B.allocType(p.dtype,b.length);jb(g,b);a.bufferSubData(p.type,d,g);B.freeType(g)}else if(Array.isArray(b[0])||P(b[0]))n=lb(b),g=Ua(b,n,p.dtype),a.bufferSubData(p.type,d,g),B.freeType(g)}else if(fa(b)){n=b.shape;var e=b.stride,l=g=0,f=0,v=0;1===n.length?(g=n[0],l=1,f=e[0],v=0):2===n.length&&(g=n[0],l=n[1],f=e[0],v=e[1]);n=Array.isArray(b.data)?p.dtype:Ha(b.data);n=B.allocType(n,\ng*l);kb(n,b.data,g,l,f,v,b.offset);a.bufferSubData(p.type,d,n);B.freeType(n)}return h};c.profile&&(h.stats=p.stats);h.destroy=function(){q(p)};return h},createStream:function(a,b){var c=k.pop();c||(c=new f(a));c.bind();m(c,b,35040,0,1,!1);return c},destroyStream:function(a){k.push(a)},clear:function(){T(r).forEach(q);k.forEach(q)},getBuffer:function(a){return a&&a._buffer instanceof f?a._buffer:null},restore:function(){T(r).forEach(function(b){b.buffer=a.createBuffer();a.bindBuffer(b.type,b.buffer);\na.bufferData(b.type,b.persistentData||b.byteLength,b.usage)})},_initBuffer:m}}function Kb(a,b,c,d){function f(a){this.id=u++;q[this.id]=this;this.buffer=a;this.primType=4;this.type=this.vertCount=0}function e(d,e,g,l,h,f,y){d.buffer.bind();var k;e?((k=y)||P(e)&&(!fa(e)||P(e.data))||(k=b.oes_element_index_uint?5125:5123),c._initBuffer(d.buffer,e,g,k,3)):(a.bufferData(34963,f,g),d.buffer.dtype=k||5121,d.buffer.usage=g,d.buffer.dimension=3,d.buffer.byteLength=f);k=y;if(!y){switch(d.buffer.dtype){case 5121:case 5120:k=\n5121;break;case 5123:case 5122:k=5123;break;case 5125:case 5124:k=5125}d.buffer.dtype=k}d.type=k;e=h;0>e&&(e=d.buffer.byteLength,5123===k?e>>=1:5125===k&&(e>>=2));d.vertCount=e;e=l;0>l&&(e=4,l=d.buffer.dimension,1===l&&(e=0),2===l&&(e=1),3===l&&(e=4));d.primType=e}function m(a){d.elementsCount--;delete q[a.id];a.buffer.destroy();a.buffer=null}var q={},u=0,r={uint8:5121,uint16:5123};b.oes_element_index_uint&&(r.uint32=5125);f.prototype.bind=function(){this.buffer.bind()};var k=[];return{create:function(a,\nb){function g(a){if(a)if(\"number\"===typeof a)l(a),h.primType=4,h.vertCount=a|0,h.type=5121;else{var b=null,c=35044,d=-1,f=-1,n=0,k=0;if(Array.isArray(a)||P(a)||fa(a))b=a;else if(\"data\"in a&&(b=a.data),\"usage\"in a&&(c=mb[a.usage]),\"primitive\"in a&&(d=Ka[a.primitive]),\"count\"in a&&(f=a.count|0),\"type\"in a&&(k=r[a.type]),\"length\"in a)n=a.length|0;else if(n=f,5123===k||5122===k)n*=2;else if(5125===k||5124===k)n*=4;e(h,b,c,d,f,n,k)}else l(),h.primType=4,h.vertCount=0,h.type=5121;return g}var l=c.create(null,\n34963,!0),h=new f(l._buffer);d.elementsCount++;g(a);g._reglType=\"elements\";g._elements=h;g.subdata=function(a,b){l.subdata(a,b);return g};g.destroy=function(){m(h)};return g},createStream:function(a){var b=k.pop();b||(b=new f(c.create(null,34963,!0,!1)._buffer));e(b,a,35040,-1,-1,0,0);return b},destroyStream:function(a){k.push(a)},getElements:function(a){return\"function\"===typeof a&&a._elements instanceof f?a._elements:null},clear:function(){T(q).forEach(m)}}}function ob(a){for(var b=B.allocType(5123,\na.length),c=0;c<a.length;++c)if(isNaN(a[c]))b[c]=65535;else if(Infinity===a[c])b[c]=31744;else if(-Infinity===a[c])b[c]=64512;else{pb[0]=a[c];var d=Lb[0],f=d>>>31<<15,e=(d<<1>>>24)-127,d=d>>13&1023;b[c]=-24>e?f:-14>e?f+(d+1024>>-14-e):15<e?f+31744:f+(e+15<<10)+d}return b}function qa(a){return Array.isArray(a)||P(a)}function ra(a){return\"[object \"+a+\"]\"}function qb(a){return Array.isArray(a)&&(0===a.length||\"number\"===typeof a[0])}function rb(a){return Array.isArray(a)&&0!==a.length&&qa(a[0])?!0:!1}\nfunction R(a){return Object.prototype.toString.call(a)}function Va(a){if(!a)return!1;var b=R(a);return 0<=Mb.indexOf(b)?!0:qb(a)||rb(a)||fa(a)}function sb(a,b){36193===a.type?(a.data=ob(b),B.freeType(b)):a.data=b}function La(a,b,c,d,f,e){a=\"undefined\"!==typeof G[a]?G[a]:U[a]*ya[b];e&&(a*=6);if(f){for(d=0;1<=c;)d+=a*c*c,c/=2;return d}return a*c*d}function Nb(a,b,c,d,f,e,m){function q(){this.format=this.internalformat=6408;this.type=5121;this.flipY=this.premultiplyAlpha=this.compressed=!1;this.unpackAlignment=\n1;this.colorSpace=37444;this.channels=this.height=this.width=0}function u(a,b){a.internalformat=b.internalformat;a.format=b.format;a.type=b.type;a.compressed=b.compressed;a.premultiplyAlpha=b.premultiplyAlpha;a.flipY=b.flipY;a.unpackAlignment=b.unpackAlignment;a.colorSpace=b.colorSpace;a.width=b.width;a.height=b.height;a.channels=b.channels}function r(a,b){if(\"object\"===typeof b&&b){\"premultiplyAlpha\"in b&&(a.premultiplyAlpha=b.premultiplyAlpha);\"flipY\"in b&&(a.flipY=b.flipY);\"alignment\"in b&&(a.unpackAlignment=\nb.alignment);\"colorSpace\"in b&&(a.colorSpace=Ob[b.colorSpace]);\"type\"in b&&(a.type=W[b.type]);var c=a.width,d=a.height,e=a.channels,h=!1;\"shape\"in b?(c=b.shape[0],d=b.shape[1],3===b.shape.length&&(e=b.shape[2],h=!0)):(\"radius\"in b&&(c=d=b.radius),\"width\"in b&&(c=b.width),\"height\"in b&&(d=b.height),\"channels\"in b&&(e=b.channels,h=!0));a.width=c|0;a.height=d|0;a.channels=e|0;c=!1;\"format\"in b&&(c=b.format,d=a.internalformat=Q[c],a.format=Ea[d],c in W&&!(\"type\"in b)&&(a.type=W[c]),c in I&&(a.compressed=\n!0),c=!0);!h&&c?a.channels=U[a.format]:h&&!c&&a.channels!==Na[a.format]&&(a.format=a.internalformat=Na[a.channels])}}function k(b){a.pixelStorei(37440,b.flipY);a.pixelStorei(37441,b.premultiplyAlpha);a.pixelStorei(37443,b.colorSpace);a.pixelStorei(3317,b.unpackAlignment)}function n(){q.call(this);this.yOffset=this.xOffset=0;this.data=null;this.needsFree=!1;this.element=null;this.needsCopy=!1}function t(a,b){var c=null;Va(b)?c=b:b&&(r(a,b),\"x\"in b&&(a.xOffset=b.x|0),\"y\"in b&&(a.yOffset=b.y|0),Va(b.data)&&\n(c=b.data));if(b.copy){var d=f.viewportWidth,e=f.viewportHeight;a.width=a.width||d-a.xOffset;a.height=a.height||e-a.yOffset;a.needsCopy=!0}else if(!c)a.width=a.width||1,a.height=a.height||1,a.channels=a.channels||4;else if(P(c))a.channels=a.channels||4,a.data=c,\"type\"in b||5121!==a.type||(a.type=Ia[Object.prototype.toString.call(c)]|0);else if(qb(c)){a.channels=a.channels||4;d=c;e=d.length;switch(a.type){case 5121:case 5123:case 5125:case 5126:e=B.allocType(a.type,e);e.set(d);a.data=e;break;case 36193:a.data=\nob(d)}a.alignment=1;a.needsFree=!0}else if(fa(c)){d=c.data;Array.isArray(d)||5121!==a.type||(a.type=Ia[Object.prototype.toString.call(d)]|0);var e=c.shape,h=c.stride,g,l,v,k;3===e.length?(v=e[2],k=h[2]):k=v=1;g=e[0];l=e[1];e=h[0];h=h[1];a.alignment=1;a.width=g;a.height=l;a.channels=v;a.format=a.internalformat=Na[v];a.needsFree=!0;g=k;c=c.offset;v=a.width;k=a.height;l=a.channels;for(var n=B.allocType(36193===a.type?5126:a.type,v*k*l),x=0,F=0;F<k;++F)for(var aa=0;aa<v;++aa)for(var Fa=0;Fa<l;++Fa)n[x++]=\nd[e*aa+h*F+g*Fa+c];sb(a,n)}else if(R(c)===Wa||R(c)===Xa||R(c)===ub)R(c)===Wa||R(c)===Xa?a.element=c:a.element=c.canvas,a.width=a.element.width,a.height=a.element.height,a.channels=4;else if(R(c)===vb)a.element=c,a.width=c.width,a.height=c.height,a.channels=4;else if(R(c)===wb)a.element=c,a.width=c.naturalWidth,a.height=c.naturalHeight,a.channels=4;else if(R(c)===xb)a.element=c,a.width=c.videoWidth,a.height=c.videoHeight,a.channels=4;else if(rb(c)){d=a.width||c[0].length;e=a.height||c.length;h=a.channels;\nh=qa(c[0][0])?h||c[0][0].length:h||1;g=Pa.shape(c);v=1;for(k=0;k<g.length;++k)v*=g[k];v=B.allocType(36193===a.type?5126:a.type,v);Pa.flatten(c,g,\"\",v);sb(a,v);a.alignment=1;a.width=d;a.height=e;a.channels=h;a.format=a.internalformat=Na[h];a.needsFree=!0}}function g(b,c,e,h,g){var v=b.element,l=b.data,f=b.internalformat,n=b.format,y=b.type,w=b.width,x=b.height;k(b);v?a.texSubImage2D(c,g,e,h,n,y,v):b.compressed?a.compressedTexSubImage2D(c,g,e,h,f,w,x,l):b.needsCopy?(d(),a.copyTexSubImage2D(c,g,e,h,\nb.xOffset,b.yOffset,w,x)):a.texSubImage2D(c,g,e,h,w,x,n,y,l)}function l(){return Qa.pop()||new n}function h(a){a.needsFree&&B.freeType(a.data);n.call(a);Qa.push(a)}function p(){q.call(this);this.genMipmaps=!1;this.mipmapHint=4352;this.mipmask=0;this.images=Array(16)}function y(a,b,c){var d=a.images[0]=l();a.mipmask=1;d.width=a.width=b;d.height=a.height=c;d.channels=a.channels=4}function C(a,b){var c=null;if(Va(b))c=a.images[0]=l(),u(c,a),t(c,b),a.mipmask=1;else if(r(a,b),Array.isArray(b.mipmap))for(var d=\nb.mipmap,e=0;e<d.length;++e)c=a.images[e]=l(),u(c,a),c.width>>=e,c.height>>=e,t(c,d[e]),a.mipmask|=1<<e;else c=a.images[0]=l(),u(c,a),t(c,b),a.mipmask=1;u(a,a.images[0])}function w(b,c){for(var e=b.images,h=0;h<e.length&&e[h];++h){var g=e[h],v=c,l=h,f=g.element,n=g.data,y=g.internalformat,w=g.format,x=g.type,F=g.width,aa=g.height;k(g);f?a.texImage2D(v,l,w,w,x,f):g.compressed?a.compressedTexImage2D(v,l,y,F,aa,0,n):g.needsCopy?(d(),a.copyTexImage2D(v,l,w,g.xOffset,g.yOffset,F,aa,0)):a.texImage2D(v,\nl,w,F,aa,0,w,x,n||null)}}function z(){var a=S.pop()||new p;q.call(a);for(var b=a.mipmask=0;16>b;++b)a.images[b]=null;return a}function wa(a){for(var b=a.images,c=0;c<b.length;++c)b[c]&&h(b[c]),b[c]=null;S.push(a)}function E(){this.magFilter=this.minFilter=9728;this.wrapT=this.wrapS=33071;this.anisotropic=1;this.genMipmaps=!1;this.mipmapHint=4352}function nb(a,b){\"min\"in b&&(a.minFilter=V[b.min],0<=Pb.indexOf(a.minFilter)&&!(\"faces\"in b)&&(a.genMipmaps=!0));\"mag\"in b&&(a.magFilter=na[b.mag]);var c=\na.wrapS,d=a.wrapT;if(\"wrap\"in b){var e=b.wrap;\"string\"===typeof e?c=d=oa[e]:Array.isArray(e)&&(c=oa[e[0]],d=oa[e[1]])}else\"wrapS\"in b&&(c=oa[b.wrapS]),\"wrapT\"in b&&(d=oa[b.wrapT]);a.wrapS=c;a.wrapT=d;\"anisotropic\"in b&&(a.anisotropic=b.anisotropic);if(\"mipmap\"in b){c=!1;switch(typeof b.mipmap){case \"string\":a.mipmapHint=J[b.mipmap];c=a.genMipmaps=!0;break;case \"boolean\":c=a.genMipmaps=b.mipmap;break;case \"object\":a.genMipmaps=!1,c=!0}!c||\"min\"in b||(a.minFilter=9984)}}function D(c,d){a.texParameteri(d,\n10241,c.minFilter);a.texParameteri(d,10240,c.magFilter);a.texParameteri(d,10242,c.wrapS);a.texParameteri(d,10243,c.wrapT);b.ext_texture_filter_anisotropic&&a.texParameteri(d,34046,c.anisotropic);c.genMipmaps&&(a.hint(33170,c.mipmapHint),a.generateMipmap(d))}function v(b){q.call(this);this.mipmask=0;this.internalformat=6408;this.id=Z++;this.refCount=1;this.target=b;this.texture=a.createTexture();this.unit=-1;this.bindCount=0;this.texInfo=new E;m.profile&&(this.stats={size:0})}function ba(b){a.activeTexture(33984);\na.bindTexture(b.target,b.texture)}function za(){var b=X[0];b?a.bindTexture(b.target,b.texture):a.bindTexture(3553,null)}function A(b){var c=b.texture,d=b.unit,h=b.target;0<=d&&(a.activeTexture(33984+d),a.bindTexture(h,null),X[d]=null);a.deleteTexture(c);b.texture=null;b.params=null;b.pixels=null;b.refCount=0;delete ka[b.id];e.textureCount--}var J={\"don't care\":4352,\"dont care\":4352,nice:4354,fast:4353},oa={repeat:10497,clamp:33071,mirror:33648},na={nearest:9728,linear:9729},V=O({mipmap:9987,\"nearest mipmap nearest\":9984,\n\"linear mipmap nearest\":9985,\"nearest mipmap linear\":9986,\"linear mipmap linear\":9987},na),Ob={none:0,browser:37444},W={uint8:5121,rgba4:32819,rgb565:33635,\"rgb5 a1\":32820},Q={alpha:6406,luminance:6409,\"luminance alpha\":6410,rgb:6407,rgba:6408,rgba4:32854,\"rgb5 a1\":32855,rgb565:36194},I={};b.ext_srgb&&(Q.srgb=35904,Q.srgba=35906);b.oes_texture_float&&(W.float32=W[\"float\"]=5126);b.oes_texture_half_float&&(W.float16=W[\"half float\"]=36193);b.webgl_depth_texture&&(O(Q,{depth:6402,\"depth stencil\":34041}),\nO(W,{uint16:5123,uint32:5125,\"depth stencil\":34042}));b.webgl_compressed_texture_s3tc&&O(I,{\"rgb s3tc dxt1\":33776,\"rgba s3tc dxt1\":33777,\"rgba s3tc dxt3\":33778,\"rgba s3tc dxt5\":33779});b.webgl_compressed_texture_atc&&O(I,{\"rgb atc\":35986,\"rgba atc explicit alpha\":35987,\"rgba atc interpolated alpha\":34798});b.webgl_compressed_texture_pvrtc&&O(I,{\"rgb pvrtc 4bppv1\":35840,\"rgb pvrtc 2bppv1\":35841,\"rgba pvrtc 4bppv1\":35842,\"rgba pvrtc 2bppv1\":35843});b.webgl_compressed_texture_etc1&&(I[\"rgb etc1\"]=36196);\nvar K=Array.prototype.slice.call(a.getParameter(34467));Object.keys(I).forEach(function(a){var b=I[a];0<=K.indexOf(b)&&(Q[a]=b)});var G=Object.keys(Q);c.textureFormats=G;var H=[];Object.keys(Q).forEach(function(a){H[Q[a]]=a});var xa=[];Object.keys(W).forEach(function(a){xa[W[a]]=a});var L=[];Object.keys(na).forEach(function(a){L[na[a]]=a});var pa=[];Object.keys(V).forEach(function(a){pa[V[a]]=a});var ga=[];Object.keys(oa).forEach(function(a){ga[oa[a]]=a});var Ea=G.reduce(function(a,c){var d=Q[c];\n6409===d||6406===d||6409===d||6410===d||6402===d||34041===d||b.ext_srgb&&(35904===d||35906===d)?a[d]=d:32855===d||0<=c.indexOf(\"rgba\")?a[d]=6408:a[d]=6407;return a},{}),Qa=[],S=[],Z=0,ka={},ha=c.maxTextureUnits,X=Array(ha).map(function(){return null});O(v.prototype,{bind:function(){this.bindCount+=1;var b=this.unit;if(0>b){for(var c=0;c<ha;++c){var d=X[c];if(d){if(0<d.bindCount)continue;d.unit=-1}X[c]=this;b=c;break}m.profile&&e.maxTextureUnits<b+1&&(e.maxTextureUnits=b+1);this.unit=b;a.activeTexture(33984+\nb);a.bindTexture(this.target,this.texture)}return b},unbind:function(){--this.bindCount},decRef:function(){0>=--this.refCount&&A(this)}});m.profile&&(e.getTotalTextureSize=function(){var a=0;Object.keys(ka).forEach(function(b){a+=ka[b].stats.size});return a});return{create2D:function(b,c){function d(a,b){var c=f.texInfo;E.call(c);var e=z();\"number\"===typeof a?\"number\"===typeof b?y(e,a|0,b|0):y(e,a|0,a|0):a?(nb(c,a),C(e,a)):y(e,1,1);c.genMipmaps&&(e.mipmask=(e.width<<1)-1);f.mipmask=e.mipmask;u(f,\ne);f.internalformat=e.internalformat;d.width=e.width;d.height=e.height;ba(f);w(e,3553);D(c,3553);za();wa(e);m.profile&&(f.stats.size=La(f.internalformat,f.type,e.width,e.height,c.genMipmaps,!1));d.format=H[f.internalformat];d.type=xa[f.type];d.mag=L[c.magFilter];d.min=pa[c.minFilter];d.wrapS=ga[c.wrapS];d.wrapT=ga[c.wrapT];return d}var f=new v(3553);ka[f.id]=f;e.textureCount++;d(b,c);d.subimage=function(a,b,c,e){b|=0;c|=0;e|=0;var v=l();u(v,f);v.width=0;v.height=0;t(v,a);v.width=v.width||(f.width>>\ne)-b;v.height=v.height||(f.height>>e)-c;ba(f);g(v,3553,b,c,e);za();h(v);return d};d.resize=function(b,c){var e=b|0,h=c|0||e;if(e===f.width&&h===f.height)return d;d.width=f.width=e;d.height=f.height=h;ba(f);for(var g=0;f.mipmask>>g;++g){var v=e>>g,l=h>>g;if(!v||!l)break;a.texImage2D(3553,g,f.format,v,l,0,f.format,f.type,null)}za();m.profile&&(f.stats.size=La(f.internalformat,f.type,e,h,!1,!1));return d};d._reglType=\"texture2d\";d._texture=f;m.profile&&(d.stats=f.stats);d.destroy=function(){f.decRef()};\nreturn d},createCube:function(b,c,d,f,k,n){function p(a,b,c,d,e,h){var f,g=A.texInfo;E.call(g);for(f=0;6>f;++f)J[f]=z();if(\"number\"===typeof a||!a)for(a=a|0||1,f=0;6>f;++f)y(J[f],a,a);else if(\"object\"===typeof a)if(b)C(J[0],a),C(J[1],b),C(J[2],c),C(J[3],d),C(J[4],e),C(J[5],h);else if(nb(g,a),r(A,a),\"faces\"in a)for(a=a.faces,f=0;6>f;++f)u(J[f],A),C(J[f],a[f]);else for(f=0;6>f;++f)C(J[f],a);u(A,J[0]);A.mipmask=g.genMipmaps?(J[0].width<<1)-1:J[0].mipmask;A.internalformat=J[0].internalformat;p.width=\nJ[0].width;p.height=J[0].height;ba(A);for(f=0;6>f;++f)w(J[f],34069+f);D(g,34067);za();m.profile&&(A.stats.size=La(A.internalformat,A.type,p.width,p.height,g.genMipmaps,!0));p.format=H[A.internalformat];p.type=xa[A.type];p.mag=L[g.magFilter];p.min=pa[g.minFilter];p.wrapS=ga[g.wrapS];p.wrapT=ga[g.wrapT];for(f=0;6>f;++f)wa(J[f]);return p}var A=new v(34067);ka[A.id]=A;e.cubeCount++;var J=Array(6);p(b,c,d,f,k,n);p.subimage=function(a,b,c,d,e){c|=0;d|=0;e|=0;var f=l();u(f,A);f.width=0;f.height=0;t(f,b);\nf.width=f.width||(A.width>>e)-c;f.height=f.height||(A.height>>e)-d;ba(A);g(f,34069+a,c,d,e);za();h(f);return p};p.resize=function(b){b|=0;if(b!==A.width){p.width=A.width=b;p.height=A.height=b;ba(A);for(var c=0;6>c;++c)for(var x=0;A.mipmask>>x;++x)a.texImage2D(34069+c,x,A.format,b>>x,b>>x,0,A.format,A.type,null);za();m.profile&&(A.stats.size=La(A.internalformat,A.type,p.width,p.height,!1,!0));return p}};p._reglType=\"textureCube\";p._texture=A;m.profile&&(p.stats=A.stats);p.destroy=function(){A.decRef()};\nreturn p},clear:function(){for(var b=0;b<ha;++b)a.activeTexture(33984+b),a.bindTexture(3553,null),X[b]=null;T(ka).forEach(A);e.cubeCount=0;e.textureCount=0},getTexture:function(a){return null},restore:function(){for(var b=0;b<ha;++b){var c=X[b];c&&(c.bindCount=0,c.unit=-1,X[b]=null)}T(ka).forEach(function(b){b.texture=a.createTexture();a.bindTexture(b.target,b.texture);for(var c=0;32>c;++c)if(0!==(b.mipmask&1<<c))if(3553===b.target)a.texImage2D(3553,c,b.internalformat,b.width>>c,b.height>>c,0,b.internalformat,\nb.type,null);else for(var d=0;6>d;++d)a.texImage2D(34069+d,c,b.internalformat,b.width>>c,b.height>>c,0,b.internalformat,b.type,null);D(b.texInfo,b.target)})},refresh:function(){for(var b=0;b<ha;++b){var c=X[b];c&&(c.bindCount=0,c.unit=-1,X[b]=null);a.activeTexture(33984+b);a.bindTexture(3553,null);a.bindTexture(34067,null)}}}}function Qb(a,b,c,d,f,e){function m(a,b,c){this.target=a;this.texture=b;this.renderbuffer=c;var d=a=0;b?(a=b.width,d=b.height):c&&(a=c.width,d=c.height);this.width=a;this.height=\nd}function q(a){a&&(a.texture&&a.texture._texture.decRef(),a.renderbuffer&&a.renderbuffer._renderbuffer.decRef())}function u(a,b,c){a&&(a.texture?a.texture._texture.refCount+=1:a.renderbuffer._renderbuffer.refCount+=1)}function r(b,c){c&&(c.texture?a.framebufferTexture2D(36160,b,c.target,c.texture._texture.texture,0):a.framebufferRenderbuffer(36160,b,36161,c.renderbuffer._renderbuffer.renderbuffer))}function k(a){var b=3553,c=null,d=null,e=a;\"object\"===typeof a&&(e=a.data,\"target\"in a&&(b=a.target|\n0));a=e._reglType;\"texture2d\"===a?c=e:\"textureCube\"===a?c=e:\"renderbuffer\"===a&&(d=e,b=36161);return new m(b,c,d)}function n(a,b,c,e,g){if(c)return a=d.create2D({width:a,height:b,format:e,type:g}),a._texture.refCount=0,new m(3553,a,null);a=f.create({width:a,height:b,format:e});a._renderbuffer.refCount=0;return new m(36161,null,a)}function t(a){return a&&(a.texture||a.renderbuffer)}function g(a,b,c){a&&(a.texture?a.texture.resize(b,c):a.renderbuffer&&a.renderbuffer.resize(b,c),a.width=b,a.height=c)}\nfunction l(){this.id=B++;D[this.id]=this;this.framebuffer=a.createFramebuffer();this.height=this.width=0;this.colorAttachments=[];this.depthStencilAttachment=this.stencilAttachment=this.depthAttachment=null}function h(a){a.colorAttachments.forEach(q);q(a.depthAttachment);q(a.stencilAttachment);q(a.depthStencilAttachment)}function p(b){a.deleteFramebuffer(b.framebuffer);b.framebuffer=null;e.framebufferCount--;delete D[b.id]}function y(b){var d;a.bindFramebuffer(36160,b.framebuffer);var e=b.colorAttachments;\nfor(d=0;d<e.length;++d)r(36064+d,e[d]);for(d=e.length;d<c.maxColorAttachments;++d)a.framebufferTexture2D(36160,36064+d,3553,null,0);a.framebufferTexture2D(36160,33306,3553,null,0);a.framebufferTexture2D(36160,36096,3553,null,0);a.framebufferTexture2D(36160,36128,3553,null,0);r(36096,b.depthAttachment);r(36128,b.stencilAttachment);r(33306,b.depthStencilAttachment);a.checkFramebufferStatus(36160);a.isContextLost();a.bindFramebuffer(36160,w.next?w.next.framebuffer:null);w.cur=w.next;a.getError()}function C(a,\nb){function c(a,b){var e,f=0,g=0,l=!0,w=!0;e=null;var p=!0,v=\"rgba\",m=\"uint8\",r=1,C=null,q=null,pa=null,ga=!1;if(\"number\"===typeof a)f=a|0,g=b|0||f;else if(a){\"shape\"in a?(g=a.shape,f=g[0],g=g[1]):(\"radius\"in a&&(f=g=a.radius),\"width\"in a&&(f=a.width),\"height\"in a&&(g=a.height));if(\"color\"in a||\"colors\"in a)e=a.color||a.colors,Array.isArray(e);if(!e){\"colorCount\"in a&&(r=a.colorCount|0);\"colorTexture\"in a&&(p=!!a.colorTexture,v=\"rgba4\");if(\"colorType\"in a&&(m=a.colorType,!p))if(\"half float\"===m||\n\"float16\"===m)v=\"rgba16f\";else if(\"float\"===m||\"float32\"===m)v=\"rgba32f\";\"colorFormat\"in a&&(v=a.colorFormat,0<=z.indexOf(v)?p=!0:0<=wa.indexOf(v)&&(p=!1))}if(\"depthTexture\"in a||\"depthStencilTexture\"in a)ga=!(!a.depthTexture&&!a.depthStencilTexture);\"depth\"in a&&(\"boolean\"===typeof a.depth?l=a.depth:(C=a.depth,w=!1));\"stencil\"in a&&(\"boolean\"===typeof a.stencil?w=a.stencil:(q=a.stencil,l=!1));\"depthStencil\"in a&&(\"boolean\"===typeof a.depthStencil?l=w=a.depthStencil:(pa=a.depthStencil,w=l=!1))}else f=\ng=1;var D=null,ba=null,E=null,B=null;if(Array.isArray(e))D=e.map(k);else if(e)D=[k(e)];else for(D=Array(r),e=0;e<r;++e)D[e]=n(f,g,p,v,m);f=f||D[0].width;g=g||D[0].height;C?ba=k(C):l&&!w&&(ba=n(f,g,ga,\"depth\",\"uint32\"));q?E=k(q):w&&!l&&(E=n(f,g,!1,\"stencil\",\"uint8\"));pa?B=k(pa):!C&&!q&&w&&l&&(B=n(f,g,ga,\"depth stencil\",\"depth stencil\"));l=null;for(e=0;e<D.length;++e)u(D[e],f,g),D[e]&&D[e].texture&&(w=Ya[D[e].texture._texture.format]*Ra[D[e].texture._texture.type],null===l&&(l=w));u(ba,f,g);u(E,f,g);\nu(B,f,g);h(d);d.width=f;d.height=g;d.colorAttachments=D;d.depthAttachment=ba;d.stencilAttachment=E;d.depthStencilAttachment=B;c.color=D.map(t);c.depth=t(ba);c.stencil=t(E);c.depthStencil=t(B);c.width=d.width;c.height=d.height;y(d);return c}var d=new l;e.framebufferCount++;c(a,b);return O(c,{resize:function(a,b){var e=Math.max(a|0,1),f=Math.max(b|0||e,1);if(e===d.width&&f===d.height)return c;for(var h=d.colorAttachments,l=0;l<h.length;++l)g(h[l],e,f);g(d.depthAttachment,e,f);g(d.stencilAttachment,\ne,f);g(d.depthStencilAttachment,e,f);d.width=c.width=e;d.height=c.height=f;y(d);return c},_reglType:\"framebuffer\",_framebuffer:d,destroy:function(){p(d);h(d)},use:function(a){w.setFBO({framebuffer:c},a)}})}var w={cur:null,next:null,dirty:!1,setFBO:null},z=[\"rgba\"],wa=[\"rgba4\",\"rgb565\",\"rgb5 a1\"];b.ext_srgb&&wa.push(\"srgba\");b.ext_color_buffer_half_float&&wa.push(\"rgba16f\",\"rgb16f\");b.webgl_color_buffer_float&&wa.push(\"rgba32f\");var E=[\"uint8\"];b.oes_texture_half_float&&E.push(\"half float\",\"float16\");\nb.oes_texture_float&&E.push(\"float\",\"float32\");var B=0,D={};return O(w,{getFramebuffer:function(a){return\"function\"===typeof a&&\"framebuffer\"===a._reglType&&(a=a._framebuffer,a instanceof l)?a:null},create:C,createCube:function(a){function b(a){var e,f={color:null},g=0,h=null;e=\"rgba\";var l=\"uint8\",k=1;if(\"number\"===typeof a)g=a|0;else if(a){\"shape\"in a?g=a.shape[0]:(\"radius\"in a&&(g=a.radius|0),\"width\"in a?g=a.width|0:\"height\"in a&&(g=a.height|0));if(\"color\"in a||\"colors\"in a)h=a.color||a.colors,\nArray.isArray(h);h||(\"colorCount\"in a&&(k=a.colorCount|0),\"colorType\"in a&&(l=a.colorType),\"colorFormat\"in a&&(e=a.colorFormat));\"depth\"in a&&(f.depth=a.depth);\"stencil\"in a&&(f.stencil=a.stencil);\"depthStencil\"in a&&(f.depthStencil=a.depthStencil)}else g=1;if(h)if(Array.isArray(h))for(a=[],e=0;e<h.length;++e)a[e]=h[e];else a=[h];else for(a=Array(k),h={radius:g,format:e,type:l},e=0;e<k;++e)a[e]=d.createCube(h);f.color=Array(a.length);for(e=0;e<a.length;++e)k=a[e],g=g||k.width,f.color[e]={target:34069,\ndata:a[e]};for(e=0;6>e;++e){for(k=0;k<a.length;++k)f.color[k].target=34069+e;0<e&&(f.depth=c[0].depth,f.stencil=c[0].stencil,f.depthStencil=c[0].depthStencil);if(c[e])c[e](f);else c[e]=C(f)}return O(b,{width:g,height:g,color:a})}var c=Array(6);b(a);return O(b,{faces:c,resize:function(a){var d=a|0;if(d===b.width)return b;var e=b.color;for(a=0;a<e.length;++a)e[a].resize(d);for(a=0;6>a;++a)c[a].resize(d);b.width=b.height=d;return b},_reglType:\"framebufferCube\",destroy:function(){c.forEach(function(a){a.destroy()})}})},\nclear:function(){T(D).forEach(p)},restore:function(){w.cur=null;w.next=null;w.dirty=!0;T(D).forEach(function(b){b.framebuffer=a.createFramebuffer();y(b)})}})}function Za(){this.w=this.z=this.y=this.x=this.state=0;this.buffer=null;this.size=0;this.normalized=!1;this.type=5126;this.divisor=this.stride=this.offset=0}function Rb(a,b,c,d,f,e,m){function q(a){if(a!==p.currentVAO){var c=b.oes_vertex_array_object;a?c.bindVertexArrayOES(a.vao):c.bindVertexArrayOES(null);p.currentVAO=a}}function u(c){if(c!==\np.currentVAO){if(c)c.bindAttrs();else{for(var d=b.angle_instanced_arrays,e=0;e<g.length;++e){var f=g[e];f.buffer?(a.enableVertexAttribArray(e),f.buffer.bind(),a.vertexAttribPointer(e,f.size,f.type,f.normalized,f.stride,f.offfset),d&&f.divisor&&d.vertexAttribDivisorANGLE(e,f.divisor)):(a.disableVertexAttribArray(e),a.vertexAttrib4f(e,f.x,f.y,f.z,f.w))}m.elements?a.bindBuffer(34963,m.elements.buffer.buffer):a.bindBuffer(34963,null)}p.currentVAO=c}}function r(){T(h).forEach(function(a){a.destroy()})}\nfunction k(){this.id=++l;this.attributes=[];this.elements=null;this.ownsElements=!1;this.offset=this.count=0;this.instances=-1;this.primitive=4;var a=b.oes_vertex_array_object;this.vao=a?a.createVertexArrayOES():null;h[this.id]=this;this.buffers=[]}function n(){b.oes_vertex_array_object&&T(h).forEach(function(a){a.refresh()})}var t=c.maxAttributes,g=Array(t);for(c=0;c<t;++c)g[c]=new Za;var l=0,h={},p={Record:Za,scope:{},state:g,currentVAO:null,targetVAO:null,restore:b.oes_vertex_array_object?n:function(){},\ncreateVAO:function(a){function b(a){var d;Array.isArray(a)?(d=a,c.elements&&c.ownsElements&&c.elements.destroy(),c.elements=null,c.ownsElements=!1,c.offset=0,c.count=0,c.instances=-1,c.primitive=4):(a.elements?(d=a.elements,c.ownsElements?(\"function\"===typeof d&&\"elements\"===d._reglType?c.elements.destroy():c.elements(d),c.ownsElements=!1):e.getElements(a.elements)?(c.elements=a.elements,c.ownsElements=!1):(c.elements=e.create(a.elements),c.ownsElements=!0)):(c.elements=null,c.ownsElements=!1),d=\na.attributes,c.offset=0,c.count=-1,c.instances=-1,c.primitive=4,c.elements&&(c.count=c.elements._elements.vertCount,c.primitive=c.elements._elements.primType),\"offset\"in a&&(c.offset=a.offset|0),\"count\"in a&&(c.count=a.count|0),\"instances\"in a&&(c.instances=a.instances|0),\"primitive\"in a&&(c.primitive=Ka[a.primitive]));a={};var g=c.attributes;g.length=d.length;for(var h=0;h<d.length;++h){var l=d[h],k=g[h]=new Za,n=l.data||l;if(Array.isArray(n)||P(n)||fa(n)){var p;c.buffers[h]&&(p=c.buffers[h],P(n)&&\np._buffer.byteLength>=n.byteLength?p.subdata(n):(p.destroy(),c.buffers[h]=null));c.buffers[h]||(p=c.buffers[h]=f.create(l,34962,!1,!0));k.buffer=f.getBuffer(p);k.size=k.buffer.dimension|0;k.normalized=!1;k.type=k.buffer.dtype;k.offset=0;k.stride=0;k.divisor=0;k.state=1;a[h]=1}else f.getBuffer(l)?(k.buffer=f.getBuffer(l),k.size=k.buffer.dimension|0,k.normalized=!1,k.type=k.buffer.dtype,k.offset=0,k.stride=0,k.divisor=0,k.state=1):f.getBuffer(l.buffer)?(k.buffer=f.getBuffer(l.buffer),k.size=(+l.size||\nk.buffer.dimension)|0,k.normalized=!!l.normalized||!1,k.type=\"type\"in l?Ja[l.type]:k.buffer.dtype,k.offset=(l.offset||0)|0,k.stride=(l.stride||0)|0,k.divisor=(l.divisor||0)|0,k.state=1):\"x\"in l&&(k.x=+l.x||0,k.y=+l.y||0,k.z=+l.z||0,k.w=+l.w||0,k.state=2)}for(p=0;p<c.buffers.length;++p)!a[p]&&c.buffers[p]&&(c.buffers[p].destroy(),c.buffers[p]=null);c.refresh();return b}var c=new k;d.vaoCount+=1;b.destroy=function(){for(var a=0;a<c.buffers.length;++a)c.buffers[a]&&c.buffers[a].destroy();c.buffers.length=\n0;c.ownsElements&&(c.elements.destroy(),c.elements=null,c.ownsElements=!1);c.destroy()};b._vao=c;b._reglType=\"vao\";return b(a)},getVAO:function(a){return\"function\"===typeof a&&a._vao?a._vao:null},destroyBuffer:function(b){for(var c=0;c<g.length;++c){var d=g[c];d.buffer===b&&(a.disableVertexAttribArray(c),d.buffer=null)}},setVAO:b.oes_vertex_array_object?q:u,clear:b.oes_vertex_array_object?r:function(){}};k.prototype.bindAttrs=function(){for(var c=b.angle_instanced_arrays,d=this.attributes,f=0;f<d.length;++f){var g=\nd[f];g.buffer?(a.enableVertexAttribArray(f),a.bindBuffer(34962,g.buffer.buffer),a.vertexAttribPointer(f,g.size,g.type,g.normalized,g.stride,g.offset),c&&g.divisor&&c.vertexAttribDivisorANGLE(f,g.divisor)):(a.disableVertexAttribArray(f),a.vertexAttrib4f(f,g.x,g.y,g.z,g.w))}for(c=d.length;c<t;++c)a.disableVertexAttribArray(c);(c=e.getElements(this.elements))?a.bindBuffer(34963,c.buffer.buffer):a.bindBuffer(34963,null)};k.prototype.refresh=function(){var a=b.oes_vertex_array_object;a&&(a.bindVertexArrayOES(this.vao),\nthis.bindAttrs(),p.currentVAO=null,a.bindVertexArrayOES(null))};k.prototype.destroy=function(){if(this.vao){var a=b.oes_vertex_array_object;this===p.currentVAO&&(p.currentVAO=null,a.bindVertexArrayOES(null));a.deleteVertexArrayOES(this.vao);this.vao=null}this.ownsElements&&(this.elements.destroy(),this.elements=null,this.ownsElements=!1);h[this.id]&&(delete h[this.id],--d.vaoCount)};return p}function Sb(a,b,c,d){function f(a,b,c,d){this.name=a;this.id=b;this.location=c;this.info=d}function e(a,b){for(var c=\n0;c<a.length;++c)if(a[c].id===b.id){a[c].location=b.location;return}a.push(b)}function m(c,d,e){e=35632===c?r:k;var f=e[d];if(!f){var g=b.str(d),f=a.createShader(c);a.shaderSource(f,g);a.compileShader(f);e[d]=f}return f}function q(a,b){this.id=g++;this.fragId=a;this.vertId=b;this.program=null;this.uniforms=[];this.attributes=[];this.refCount=1;d.profile&&(this.stats={uniformsCount:0,attributesCount:0})}function u(c,g,k){var n;n=m(35632,c.fragId);var t=m(35633,c.vertId);g=c.program=a.createProgram();\na.attachShader(g,n);a.attachShader(g,t);if(k)for(n=0;n<k.length;++n)t=k[n],a.bindAttribLocation(g,t[0],t[1]);a.linkProgram(g);t=a.getProgramParameter(g,35718);d.profile&&(c.stats.uniformsCount=t);var r=c.uniforms;for(n=0;n<t;++n)if(k=a.getActiveUniform(g,n))if(1<k.size)for(var q=0;q<k.size;++q){var u=k.name.replace(\"[0]\",\"[\"+q+\"]\");e(r,new f(u,b.id(u),a.getUniformLocation(g,u),k))}else e(r,new f(k.name,b.id(k.name),a.getUniformLocation(g,k.name),k));t=a.getProgramParameter(g,35721);d.profile&&(c.stats.attributesCount=\nt);c=c.attributes;for(n=0;n<t;++n)(k=a.getActiveAttrib(g,n))&&e(c,new f(k.name,b.id(k.name),a.getAttribLocation(g,k.name),k))}var r={},k={},n={},t=[],g=0;d.profile&&(c.getMaxUniformsCount=function(){var a=0;t.forEach(function(b){b.stats.uniformsCount>a&&(a=b.stats.uniformsCount)});return a},c.getMaxAttributesCount=function(){var a=0;t.forEach(function(b){b.stats.attributesCount>a&&(a=b.stats.attributesCount)});return a});return{clear:function(){var b=a.deleteShader.bind(a);T(r).forEach(b);r={};T(k).forEach(b);\nk={};t.forEach(function(b){a.deleteProgram(b.program)});t.length=0;n={};c.shaderCount=0},program:function(b,d,e,f){var g=n[d];g||(g=n[d]={});var m=g[b];if(m&&(m.refCount++,!f))return m;var z=new q(d,b);c.shaderCount++;u(z,e,f);m||(g[b]=z);t.push(z);return O(z,{destroy:function(){z.refCount--;if(0>=z.refCount){a.deleteProgram(z.program);var b=t.indexOf(z);t.splice(b,1);c.shaderCount--}0>=g[z.vertId].refCount&&(a.deleteShader(k[z.vertId]),delete k[z.vertId],delete n[z.fragId][z.vertId]);Object.keys(n[z.fragId]).length||\n(a.deleteShader(r[z.fragId]),delete r[z.fragId],delete n[z.fragId])}})},restore:function(){r={};k={};for(var a=0;a<t.length;++a)u(t[a],null,t[a].attributes.map(function(a){return[a.location,a.name]}))},shader:m,frag:-1,vert:-1}}function Tb(a,b,c,d,f,e,m){function q(e){var f;f=null===b.next?5121:b.next.colorAttachments[0].texture._texture.type;var n=0,t=0,g=d.framebufferWidth,l=d.framebufferHeight,h=null;P(e)?h=e:e&&(n=e.x|0,t=e.y|0,g=(e.width||d.framebufferWidth-n)|0,l=(e.height||d.framebufferHeight-\nt)|0,h=e.data||null);c();e=g*l*4;h||(5121===f?h=new Uint8Array(e):5126===f&&(h=h||new Float32Array(e)));a.pixelStorei(3333,4);a.readPixels(n,t,g,l,6408,f,h);return h}function u(a){var c;b.setFBO({framebuffer:a.framebuffer},function(){c=q(a)});return c}return function(a){return a&&\"framebuffer\"in a?u(a):q(a)}}function Ub(a){for(var b=Array(a.length>>2),c=0;c<b.length;c++)b[c]=0;for(c=0;c<8*a.length;c+=8)b[c>>5]|=(a.charCodeAt(c/8)&255)<<24-c%32;var d=8*a.length;a=[1779033703,-1150833019,1013904242,\n-1521486534,1359893119,-1694144372,528734635,1541459225];var c=Array(64),f,e,m,q,u,r,k,n,t,g,l;b[d>>5]|=128<<24-d%32;b[(d+64>>9<<4)+15]=d;for(n=0;n<b.length;n+=16){d=a[0];f=a[1];e=a[2];m=a[3];q=a[4];u=a[5];r=a[6];k=a[7];for(t=0;64>t;t++){if(16>t)c[t]=b[t+n];else{g=t;l=c[t-2];l=Y(l,17)^Y(l,19)^l>>>10;l=H(l,c[t-7]);var h;h=c[t-15];h=Y(h,7)^Y(h,18)^h>>>3;c[g]=H(H(l,h),c[t-16])}g=q;g=Y(g,6)^Y(g,11)^Y(g,25);g=H(H(H(H(k,g),q&u^~q&r),Vb[t]),c[t]);k=d;k=Y(k,2)^Y(k,13)^Y(k,22);l=H(k,d&f^d&e^f&e);k=r;r=u;u=\nq;q=H(m,g);m=e;e=f;f=d;d=H(g,l)}a[0]=H(d,a[0]);a[1]=H(f,a[1]);a[2]=H(e,a[2]);a[3]=H(m,a[3]);a[4]=H(q,a[4]);a[5]=H(u,a[5]);a[6]=H(r,a[6]);a[7]=H(k,a[7])}b=\"\";for(c=0;c<32*a.length;c+=8)b+=String.fromCharCode(a[c>>5]>>>24-c%32&255);return b}function Wb(a){for(var b=\"\",c,d=0;d<a.length;d++)c=a.charCodeAt(d),b+=\"0123456789abcdef\".charAt(c>>>4&15)+\"0123456789abcdef\".charAt(c&15);return b}function Xb(a){for(var b=\"\",c=-1,d,f;++c<a.length;)d=a.charCodeAt(c),f=c+1<a.length?a.charCodeAt(c+1):0,55296<=d&&56319>=\nd&&56320<=f&&57343>=f&&(d=65536+((d&1023)<<10)+(f&1023),c++),127>=d?b+=String.fromCharCode(d):2047>=d?b+=String.fromCharCode(192|d>>>6&31,128|d&63):65535>=d?b+=String.fromCharCode(224|d>>>12&15,128|d>>>6&63,128|d&63):2097151>=d&&(b+=String.fromCharCode(240|d>>>18&7,128|d>>>12&63,128|d>>>6&63,128|d&63));return b}function Y(a,b){return a>>>b|a<<32-b}function H(a,b){var c=(a&65535)+(b&65535);return(a>>16)+(b>>16)+(c>>16)<<16|c&65535}function Aa(a){return Array.prototype.slice.call(a)}function Ba(a){return Aa(a).join(\"\")}\nfunction Yb(a){function b(){var a=[],b=[];return O(function(){a.push.apply(a,Aa(arguments))},{def:function(){var c=\"v\"+f++;b.push(c);0<arguments.length&&(a.push(c,\"=\"),a.push.apply(a,Aa(arguments)),a.push(\";\"));return c},toString:function(){return Ba([0<b.length?\"var \"+b.join(\",\")+\";\":\"\",Ba(a)])}})}function c(){function a(b,e){d(b,e,\"=\",c.def(b,e),\";\")}var c=b(),d=b(),e=c.toString,f=d.toString;return O(function(){c.apply(c,Aa(arguments))},{def:c.def,entry:c,exit:d,save:a,set:function(b,d,e){a(b,d);\nc(b,d,\"=\",e,\";\")},toString:function(){return e()+f()}})}var d=a&&a.cache,f=0,e=[],m=[],q=[],u=b(),r={};return{global:u,link:function(a,b){var c=b&&b.stable;if(!c)for(var d=0;d<m.length;++d)if(m[d]===a&&!q[d])return e[d];d=\"g\"+f++;e.push(d);m.push(a);q.push(c);return d},block:b,proc:function(a,b){function d(){var a=\"a\"+e.length;e.push(a);return a}var e=[];b=b||0;for(var f=0;f<b;++f)d();var f=c(),h=f.toString;return r[a]=O(f,{arg:d,toString:function(){return Ba([\"function(\",e.join(),\"){\",h(),\"}\"])}})},\nscope:c,cond:function(){var a=Ba(arguments),b=c(),d=c(),e=b.toString,f=d.toString;return O(b,{then:function(){b.apply(b,Aa(arguments));return this},\"else\":function(){d.apply(d,Aa(arguments));return this},toString:function(){var b=f();b&&(b=\"else{\"+b+\"}\");return Ba([\"if(\",a,\"){\",e(),\"}\",b])}})},compile:function(){var a=['\"use strict\";',u,\"return {\"];Object.keys(r).forEach(function(b){a.push('\"',b,'\":',r[b].toString(),\",\")});a.push(\"}\");var b=Ba(a).replace(/;/g,\";\\n\").replace(/}/g,\"}\\n\").replace(/{/g,\n\"{\\n\"),c;if(d&&(c=Wb(Ub(Xb(b))),d[c]))return d[c].apply(null,m);b=Function.apply(null,e.concat(b));d&&(d[c]=b);return b.apply(null,m)}}}function Sa(a){return Array.isArray(a)||P(a)||fa(a)}function yb(a){return a.sort(function(a,c){return\"viewport\"===a?-1:\"viewport\"===c?1:a<c?-1:1})}function K(a,b,c,d){this.thisDep=a;this.contextDep=b;this.propDep=c;this.append=d}function la(a){return a&&!(a.thisDep||a.contextDep||a.propDep)}function E(a){return new K(!1,!1,!1,a)}function L(a,b){var c=a.type;if(0===\nc)return c=a.data.length,new K(!0,1<=c,2<=c,b);if(4===c)return c=a.data,new K(c.thisDep,c.contextDep,c.propDep,b);if(5===c)return new K(!1,!1,!1,b);if(6===c){for(var d=c=!1,f=!1,e=0;e<a.data.length;++e){var m=a.data[e];1===m.type?f=!0:2===m.type?d=!0:3===m.type?c=!0:0===m.type?(c=!0,m=m.data,1<=m&&(d=!0),2<=m&&(f=!0)):4===m.type&&(c=c||m.data.thisDep,d=d||m.data.contextDep,f=f||m.data.propDep)}return new K(c,d,f,b)}return new K(3===c,2===c,1===c,b)}function Zb(a,b,c,d,f,e,m,q,u,r,k,n,t,g,l,h){function p(a){return a.replace(\".\",\n\"_\")}function y(a,b,c){var d=p(a);Ma.push(a);Da[d]=ta[d]=!!c;ua[d]=b}function C(a,b,c){var d=p(a);Ma.push(a);Array.isArray(c)?(ta[d]=c.slice(),Da[d]=c.slice()):ta[d]=Da[d]=c;ma[d]=b}function w(){var a=Yb({cache:l}),c=a.link,d=a.global;a.id=ra++;a.batchId=\"0\";var e=c(tb),f=a.shared={props:\"a0\"};Object.keys(tb).forEach(function(a){f[a]=d.def(e,\".\",a)});var g=a.next={},k=a.current={};Object.keys(ma).forEach(function(a){Array.isArray(ta[a])&&(g[a]=d.def(f.next,\".\",a),k[a]=d.def(f.current,\".\",a))});var ca=\na.constants={};Object.keys(Oa).forEach(function(a){ca[a]=d.def(JSON.stringify(Oa[a]))});a.invoke=function(b,d){switch(d.type){case 0:var e=[\"this\",f.context,f.props,a.batchId];return b.def(c(d.data),\".call(\",e.slice(0,Math.max(d.data.length+1,4)),\")\");case 1:return b.def(f.props,d.data);case 2:return b.def(f.context,d.data);case 3:return b.def(\"this\",d.data);case 4:return d.data.append(a,b),d.data.ref;case 5:return d.data.toString();case 6:return d.data.map(function(c){return a.invoke(b,c)})}};a.attribCache=\n{};var N={};a.scopeAttrib=function(a){a=b.id(a);if(a in N)return N[a];var d=r.scope[a];d||(d=r.scope[a]=new ha);return N[a]=c(d)};return a}function z(a){var b=a[\"static\"];a=a.dynamic;var c;if(\"profile\"in b){var d=!!b.profile;c=E(function(a,b){return d});c.enable=d}else if(\"profile\"in a){var e=a.profile;c=L(e,function(a,b){return a.invoke(b,e)})}return c}function B(a,b){var c=a[\"static\"],d=a.dynamic;if(\"framebuffer\"in c){var e=c.framebuffer;return e?(e=q.getFramebuffer(e),E(function(a,b){var c=a.link(e),\nd=a.shared;b.set(d.framebuffer,\".next\",c);d=d.context;b.set(d,\".framebufferWidth\",c+\".width\");b.set(d,\".framebufferHeight\",c+\".height\");return c})):E(function(a,b){var c=a.shared;b.set(c.framebuffer,\".next\",\"null\");c=c.context;b.set(c,\".framebufferWidth\",c+\".drawingBufferWidth\");b.set(c,\".framebufferHeight\",c+\".drawingBufferHeight\");return\"null\"})}if(\"framebuffer\"in d){var f=d.framebuffer;return L(f,function(a,b){var c=a.invoke(b,f),d=a.shared,e=d.framebuffer,c=b.def(e,\".getFramebuffer(\",c,\")\");b.set(e,\n\".next\",c);d=d.context;b.set(d,\".framebufferWidth\",c+\"?\"+c+\".width:\"+d+\".drawingBufferWidth\");b.set(d,\".framebufferHeight\",c+\"?\"+c+\".height:\"+d+\".drawingBufferHeight\");return c})}return null}function H(a,b,c){function d(a){if(a in e){var c=e[a];a=!0;var x=c.x|0,g=c.y|0,k,h;\"width\"in c?k=c.width|0:a=!1;\"height\"in c?h=c.height|0:a=!1;return new K(!a&&b&&b.thisDep,!a&&b&&b.contextDep,!a&&b&&b.propDep,function(a,b){var d=a.shared.context,e=k;\"width\"in c||(e=b.def(d,\".\",\"framebufferWidth\",\"-\",x));var f=\nh;\"height\"in c||(f=b.def(d,\".\",\"framebufferHeight\",\"-\",g));return[x,g,e,f]})}if(a in f){var aa=f[a];a=L(aa,function(a,b){var c=a.invoke(b,aa),d=a.shared.context,e=b.def(c,\".x|0\"),f=b.def(c,\".y|0\"),N=b.def('\"width\" in ',c,\"?\",c,\".width|0:\",\"(\",d,\".\",\"framebufferWidth\",\"-\",e,\")\"),c=b.def('\"height\" in ',c,\"?\",c,\".height|0:\",\"(\",d,\".\",\"framebufferHeight\",\"-\",f,\")\");return[e,f,N,c]});b&&(a.thisDep=a.thisDep||b.thisDep,a.contextDep=a.contextDep||b.contextDep,a.propDep=a.propDep||b.propDep);return a}return b?\nnew K(b.thisDep,b.contextDep,b.propDep,function(a,b){var c=a.shared.context;return[0,0,b.def(c,\".\",\"framebufferWidth\"),b.def(c,\".\",\"framebufferHeight\")]}):null}var e=a[\"static\"],f=a.dynamic;if(a=d(\"viewport\")){var g=a;a=new K(a.thisDep,a.contextDep,a.propDep,function(a,b){var c=g.append(a,b),d=a.shared.context;b.set(d,\".viewportWidth\",c[2]);b.set(d,\".viewportHeight\",c[3]);return c})}return{viewport:a,scissor_box:d(\"scissor.box\")}}function G(a,b){var c=a[\"static\"];if(\"string\"===typeof c.frag&&\"string\"===\ntypeof c.vert){if(0<Object.keys(b.dynamic).length)return null;var c=b[\"static\"],d=Object.keys(c);if(0<d.length&&\"number\"===typeof c[d[0]]){for(var e=[],f=0;f<d.length;++f)e.push([c[d[f]]|0,d[f]]);return e}}return null}function D(a,c,d){function e(a){if(a in f){var c=b.id(f[a]);a=E(function(){return c});a.id=c;return a}if(a in g){var d=g[a];return L(d,function(a,b){var c=a.invoke(b,d);return b.def(a.shared.strings,\".id(\",c,\")\")})}return null}var f=a[\"static\"],g=a.dynamic,h=e(\"frag\"),ca=e(\"vert\"),N=\nnull;la(h)&&la(ca)?(N=k.program(ca.id,h.id,null,d),a=E(function(a,b){return a.link(N)})):a=new K(h&&h.thisDep||ca&&ca.thisDep,h&&h.contextDep||ca&&ca.contextDep,h&&h.propDep||ca&&ca.propDep,function(a,b){var c=a.shared.shader,d;d=h?h.append(a,b):b.def(c,\".\",\"frag\");var e;e=ca?ca.append(a,b):b.def(c,\".\",\"vert\");return b.def(c+\".program(\"+e+\",\"+d+\")\")});return{frag:h,vert:ca,progVar:a,program:N}}function v(a,b){function c(a,b){if(a in d){var e=d[a]|0;b?g.offset=e:g.instances=e;return E(function(a,c){b&&\n(a.OFFSET=e);return e})}if(a in f){var x=f[a];return L(x,function(a,c){var d=a.invoke(c,x);b&&(a.OFFSET=d);return d})}if(b){if(N)return E(function(a,b){return a.OFFSET=0});if(k)return new K(h.thisDep,h.contextDep,h.propDep,function(a,b){return b.def(a.shared.vao+\".currentVAO?\"+a.shared.vao+\".currentVAO.offset:0\")})}else if(k)return new K(h.thisDep,h.contextDep,h.propDep,function(a,b){return b.def(a.shared.vao+\".currentVAO?\"+a.shared.vao+\".currentVAO.instances:-1\")});return null}var d=a[\"static\"],\nf=a.dynamic,g={},k=!1,h=function(){if(\"vao\"in d){var a=d.vao;null!==a&&null===r.getVAO(a)&&(a=r.createVAO(a));k=!0;g.vao=a;return E(function(b){var c=r.getVAO(a);return c?b.link(c):\"null\"})}if(\"vao\"in f){k=!0;var b=f.vao;return L(b,function(a,c){var d=a.invoke(c,b);return c.def(a.shared.vao+\".getVAO(\"+d+\")\")})}return null}(),N=!1,ia=function(){if(\"elements\"in d){var a=d.elements;g.elements=a;if(Sa(a)){var b=g.elements=e.create(a,!0),a=e.getElements(b);N=!0}else a&&(a=e.getElements(a),N=!0);b=E(function(b,\nc){if(a){var d=b.link(a);return b.ELEMENTS=d}return b.ELEMENTS=null});b.value=a;return b}if(\"elements\"in f){N=!0;var c=f.elements;return L(c,function(a,b){var d=a.shared,e=d.isBufferArgs,d=d.elements,f=a.invoke(b,c),N=b.def(\"null\"),e=b.def(e,\"(\",f,\")\"),f=a.cond(e).then(N,\"=\",d,\".createStream(\",f,\");\")[\"else\"](N,\"=\",d,\".getElements(\",f,\");\");b.entry(f);b.exit(a.cond(e).then(d,\".destroyStream(\",N,\");\"));return a.ELEMENTS=N})}return k?new K(h.thisDep,h.contextDep,h.propDep,function(a,b){return b.def(a.shared.vao+\n\".currentVAO?\"+a.shared.elements+\".getElements(\"+a.shared.vao+\".currentVAO.elements):null\")}):null}(),va=c(\"offset\",!0),l=function(){if(\"primitive\"in d){var a=d.primitive;g.primitive=a;return E(function(b,c){return Ka[a]})}if(\"primitive\"in f){var b=f.primitive;return L(b,function(a,c){var d=a.constants.primTypes,e=a.invoke(c,b);return c.def(d,\"[\",e,\"]\")})}return N?la(ia)?ia.value?E(function(a,b){return b.def(a.ELEMENTS,\".primType\")}):E(function(){return 4}):new K(ia.thisDep,ia.contextDep,ia.propDep,\nfunction(a,b){var c=a.ELEMENTS;return b.def(c,\"?\",c,\".primType:\",4)}):k?new K(h.thisDep,h.contextDep,h.propDep,function(a,b){return b.def(a.shared.vao+\".currentVAO?\"+a.shared.vao+\".currentVAO.primitive:4\")}):null}(),n=function(){if(\"count\"in d){var a=d.count|0;g.count=a;return E(function(){return a})}if(\"count\"in f){var b=f.count;return L(b,function(a,c){return a.invoke(c,b)})}return N?la(ia)?ia?va?new K(va.thisDep,va.contextDep,va.propDep,function(a,b){return b.def(a.ELEMENTS,\".vertCount-\",a.OFFSET)}):\nE(function(a,b){return b.def(a.ELEMENTS,\".vertCount\")}):E(function(){return-1}):new K(ia.thisDep||va.thisDep,ia.contextDep||va.contextDep,ia.propDep||va.propDep,function(a,b){var c=a.ELEMENTS;return a.OFFSET?b.def(c,\"?\",c,\".vertCount-\",a.OFFSET,\":-1\"):b.def(c,\"?\",c,\".vertCount:-1\")}):k?new K(h.thisDep,h.contextDep,h.propDep,function(a,b){return b.def(a.shared.vao,\".currentVAO?\",a.shared.vao,\".currentVAO.count:-1\")}):null}(),m=c(\"instances\",!1);return{elements:ia,primitive:l,count:n,instances:m,offset:va,\nvao:h,vaoActive:k,elementsActive:N,\"static\":g}}function ba(a,b){var c=a[\"static\"],d=a.dynamic,e={};Ma.forEach(function(a){function b(N,g){if(a in c){var x=N(c[a]);e[f]=E(function(){return x})}else if(a in d){var F=d[a];e[f]=L(F,function(a,b){return g(a,b,a.invoke(b,F))})}}var f=p(a);switch(a){case \"cull.enable\":case \"blend.enable\":case \"dither\":case \"stencil.enable\":case \"depth.enable\":case \"scissor.enable\":case \"polygonOffset.enable\":case \"sample.alpha\":case \"sample.enable\":case \"depth.mask\":return b(function(a){return a},\nfunction(a,b,c){return c});case \"depth.func\":return b(function(a){return $a[a]},function(a,b,c){return b.def(a.constants.compareFuncs,\"[\",c,\"]\")});case \"depth.range\":return b(function(a){return a},function(a,b,c){a=b.def(\"+\",c,\"[0]\");b=b.def(\"+\",c,\"[1]\");return[a,b]});case \"blend.func\":return b(function(a){return[Ga[\"srcRGB\"in a?a.srcRGB:a.src],Ga[\"dstRGB\"in a?a.dstRGB:a.dst],Ga[\"srcAlpha\"in a?a.srcAlpha:a.src],Ga[\"dstAlpha\"in a?a.dstAlpha:a.dst]]},function(a,b,c){function d(a,e){return b.def('\"',\na,e,'\" in ',c,\"?\",c,\".\",a,e,\":\",c,\".\",a)}a=a.constants.blendFuncs;var e=d(\"src\",\"RGB\"),f=d(\"dst\",\"RGB\"),e=b.def(a,\"[\",e,\"]\"),g=b.def(a,\"[\",d(\"src\",\"Alpha\"),\"]\"),f=b.def(a,\"[\",f,\"]\");a=b.def(a,\"[\",d(\"dst\",\"Alpha\"),\"]\");return[e,f,g,a]});case \"blend.equation\":return b(function(a){if(\"string\"===typeof a)return[X[a],X[a]];if(\"object\"===typeof a)return[X[a.rgb],X[a.alpha]]},function(a,b,c){var d=a.constants.blendEquations,e=b.def(),f=b.def();a=a.cond(\"typeof \",c,'===\"string\"');a.then(e,\"=\",f,\"=\",d,\"[\",\nc,\"];\");a[\"else\"](e,\"=\",d,\"[\",c,\".rgb];\",f,\"=\",d,\"[\",c,\".alpha];\");b(a);return[e,f]});case \"blend.color\":return b(function(a){return S(4,function(b){return+a[b]})},function(a,b,c){return S(4,function(a){return b.def(\"+\",c,\"[\",a,\"]\")})});case \"stencil.mask\":return b(function(a){return a|0},function(a,b,c){return b.def(c,\"|0\")});case \"stencil.func\":return b(function(a){return[$a[a.cmp||\"keep\"],a.ref||0,\"mask\"in a?a.mask:-1]},function(a,b,c){a=b.def('\"cmp\" in ',c,\"?\",a.constants.compareFuncs,\"[\",c,\".cmp]\",\n\":\",7680);var d=b.def(c,\".ref|0\");b=b.def('\"mask\" in ',c,\"?\",c,\".mask|0:-1\");return[a,d,b]});case \"stencil.opFront\":case \"stencil.opBack\":return b(function(b){return[\"stencil.opBack\"===a?1029:1028,Ta[b.fail||\"keep\"],Ta[b.zfail||\"keep\"],Ta[b.zpass||\"keep\"]]},function(b,c,d){function e(a){return c.def('\"',a,'\" in ',d,\"?\",f,\"[\",d,\".\",a,\"]:\",7680)}var f=b.constants.stencilOps;return[\"stencil.opBack\"===a?1029:1028,e(\"fail\"),e(\"zfail\"),e(\"zpass\")]});case \"polygonOffset.offset\":return b(function(a){return[a.factor|\n0,a.units|0]},function(a,b,c){a=b.def(c,\".factor|0\");b=b.def(c,\".units|0\");return[a,b]});case \"cull.face\":return b(function(a){var b=0;\"front\"===a?b=1028:\"back\"===a&&(b=1029);return b},function(a,b,c){return b.def(c,'===\"front\"?',1028,\":\",1029)});case \"lineWidth\":return b(function(a){return a},function(a,b,c){return c});case \"frontFace\":return b(function(a){return zb[a]},function(a,b,c){return b.def(c+'===\"cw\"?2304:2305')});case \"colorMask\":return b(function(a){return a.map(function(a){return!!a})},\nfunction(a,b,c){return S(4,function(a){return\"!!\"+c+\"[\"+a+\"]\"})});case \"sample.coverage\":return b(function(a){return[\"value\"in a?a.value:1,!!a.invert]},function(a,b,c){a=b.def('\"value\" in ',c,\"?+\",c,\".value:1\");b=b.def(\"!!\",c,\".invert\");return[a,b]})}});return e}function P(a,b){var c=a[\"static\"],d=a.dynamic,e={};Object.keys(c).forEach(function(a){var b=c[a],d;if(\"number\"===typeof b||\"boolean\"===typeof b)d=E(function(){return b});else if(\"function\"===typeof b){var f=b._reglType;if(\"texture2d\"===f||\n\"textureCube\"===f)d=E(function(a){return a.link(b)});else if(\"framebuffer\"===f||\"framebufferCube\"===f)d=E(function(a){return a.link(b.color[0])})}else qa(b)&&(d=E(function(a){return a.global.def(\"[\",S(b.length,function(a){return b[a]}),\"]\")}));d.value=b;e[a]=d});Object.keys(d).forEach(function(a){var b=d[a];e[a]=L(b,function(a,c){return a.invoke(c,b)})});return e}function A(a,c){var d=a[\"static\"],e=a.dynamic,g={};Object.keys(d).forEach(function(a){var c=d[a],e=b.id(a),x=new ha;if(Sa(c))x.state=1,\nx.buffer=f.getBuffer(f.create(c,34962,!1,!0)),x.type=0;else{var F=f.getBuffer(c);if(F)x.state=1,x.buffer=F,x.type=0;else if(\"constant\"in c){var h=c.constant;x.buffer=\"null\";x.state=2;\"number\"===typeof h?x.x=h:Ca.forEach(function(a,b){b<h.length&&(x[a]=h[b])})}else{var F=Sa(c.buffer)?f.getBuffer(f.create(c.buffer,34962,!1,!0)):f.getBuffer(c.buffer),k=c.offset|0,l=c.stride|0,n=c.size|0,Fa=!!c.normalized,m=0;\"type\"in c&&(m=Ja[c.type]);c=c.divisor|0;x.buffer=F;x.state=1;x.size=n;x.normalized=Fa;x.type=\nm||F.dtype;x.offset=k;x.stride=l;x.divisor=c}}g[a]=E(function(a,b){var c=a.attribCache;if(e in c)return c[e];var d={isStream:!1};Object.keys(x).forEach(function(a){d[a]=x[a]});x.buffer&&(d.buffer=a.link(x.buffer),d.type=d.type||d.buffer+\".dtype\");return c[e]=d})});Object.keys(e).forEach(function(a){var b=e[a];g[a]=L(b,function(a,c){function d(a){c(F[a],\"=\",e,\".\",a,\"|0;\")}var e=a.invoke(c,b),f=a.shared,g=a.constants,x=f.isBufferArgs,f=f.buffer,F={isStream:c.def(!1)},h=new ha;h.state=1;Object.keys(h).forEach(function(a){F[a]=\nc.def(\"\"+h[a])});var k=F.buffer,l=F.type;c(\"if(\",x,\"(\",e,\")){\",F.isStream,\"=true;\",k,\"=\",f,\".createStream(\",34962,\",\",e,\");\",l,\"=\",k,\".dtype;\",\"}else{\",k,\"=\",f,\".getBuffer(\",e,\");\",\"if(\",k,\"){\",l,\"=\",k,\".dtype;\",'}else if(\"constant\" in ',e,\"){\",F.state,\"=\",2,\";\",\"if(typeof \"+e+'.constant === \"number\"){',F[Ca[0]],\"=\",e,\".constant;\",Ca.slice(1).map(function(a){return F[a]}).join(\"=\"),\"=0;\",\"}else{\",Ca.map(function(a,b){return F[a]+\"=\"+e+\".constant.length>\"+b+\"?\"+e+\".constant[\"+b+\"]:0;\"}).join(\"\"),\"}}else{\",\n\"if(\",x,\"(\",e,\".buffer)){\",k,\"=\",f,\".createStream(\",34962,\",\",e,\".buffer);\",\"}else{\",k,\"=\",f,\".getBuffer(\",e,\".buffer);\",\"}\",l,'=\"type\" in ',e,\"?\",g.glTypes,\"[\",e,\".type]:\",k,\".dtype;\",F.normalized,\"=!!\",e,\".normalized;\");d(\"size\");d(\"offset\");d(\"stride\");d(\"divisor\");c(\"}}\");c.exit(\"if(\",F.isStream,\"){\",f,\".destroyStream(\",k,\");\",\"}\");return F})});return g}function J(a){var b=a[\"static\"],c=a.dynamic,d={};Object.keys(b).forEach(function(a){var c=b[a];d[a]=E(function(a,b){return\"number\"===typeof c||\n\"boolean\"===typeof c?\"\"+c:a.link(c)})});Object.keys(c).forEach(function(a){var b=c[a];d[a]=L(b,function(a,c){return a.invoke(c,b)})});return d}function oa(a,b,d,e,f){function g(a){var b=l[a];b&&(m[a]=b)}var k=G(a,b),h=B(a,f),l=H(a,h,f),n=v(a,f),m=ba(a,f),q=D(a,f,k);g(\"viewport\");g(p(\"scissor.box\"));var t=0<Object.keys(m).length,h={framebuffer:h,draw:n,shader:q,state:m,dirty:t,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}};h.profile=z(a,f);h.uniforms=P(d,f);h.drawVAO=h.scopeVAO=n.vao;if(!h.drawVAO&&\nq.program&&!k&&c.angle_instanced_arrays&&n[\"static\"].elements){var u=!0;a=q.program.attributes.map(function(a){a=b[\"static\"][a];u=u&&!!a;return a});if(u&&0<a.length){var $b=r.getVAO(r.createVAO({attributes:a,elements:n[\"static\"].elements}));h.drawVAO=new K(null,null,null,function(a,b){return a.link($b)});h.useVAO=!0}}k?h.useVAO=!0:h.attributes=A(b,f);h.context=J(e,f);return h}function na(a,b,c){var d=a.shared.context,e=a.scope();Object.keys(c).forEach(function(f){b.save(d,\".\"+f);var g=c[f].append(a,\nb);Array.isArray(g)?e(d,\".\",f,\"=[\",g.join(),\"];\"):e(d,\".\",f,\"=\",g,\";\")});b(e)}function V(a,b,c,d){var e=a.shared,f=e.gl,g=e.framebuffer,h;R&&(h=b.def(e.extensions,\".webgl_draw_buffers\"));var k=a.constants,e=k.drawBuffer,k=k.backBuffer;a=c?c.append(a,b):b.def(g,\".next\");d||b(\"if(\",a,\"!==\",g,\".cur){\");b(\"if(\",a,\"){\",f,\".bindFramebuffer(\",36160,\",\",a,\".framebuffer);\");R&&b(h,\".drawBuffersWEBGL(\",e,\"[\",a,\".colorAttachments.length]);\");b(\"}else{\",f,\".bindFramebuffer(\",36160,\",null);\");R&&b(h,\".drawBuffersWEBGL(\",\nk,\");\");b(\"}\",g,\".cur=\",a,\";\");d||b(\"}\")}function T(a,b,c){var d=a.shared,e=d.gl,f=a.current,g=a.next,h=d.current,k=d.next,l=a.cond(h,\".dirty\");Ma.forEach(function(b){b=p(b);if(!(b in c.state)){var d,F;if(b in g){d=g[b];F=f[b];var n=S(ta[b].length,function(a){return l.def(d,\"[\",a,\"]\")});l(a.cond(n.map(function(a,b){return a+\"!==\"+F+\"[\"+b+\"]\"}).join(\"||\")).then(e,\".\",ma[b],\"(\",n,\");\",n.map(function(a,b){return F+\"[\"+b+\"]=\"+a}).join(\";\"),\";\"))}else d=l.def(k,\".\",b),n=a.cond(d,\"!==\",h,\".\",b),l(n),b in\nua?n(a.cond(d).then(e,\".enable(\",ua[b],\");\")[\"else\"](e,\".disable(\",ua[b],\");\"),h,\".\",b,\"=\",d,\";\"):n(e,\".\",ma[b],\"(\",d,\");\",h,\".\",b,\"=\",d,\";\")}});0===Object.keys(c.state).length&&l(h,\".dirty=false;\");b(l)}function W(a,b,c,d){var e=a.shared,f=a.current,g=e.current,h=e.gl,k;yb(Object.keys(c)).forEach(function(e){var l=c[e];if(!d||d(l)){var n=l.append(a,b);if(ua[e]){var m=ua[e];la(l)?(k=a.link(n,{stable:!0}),b(a.cond(k).then(h,\".enable(\",m,\");\")[\"else\"](h,\".disable(\",m,\");\")),b(g,\".\",e,\"=\",k,\";\")):(b(a.cond(n).then(h,\n\".enable(\",m,\");\")[\"else\"](h,\".disable(\",m,\");\")),b(g,\".\",e,\"=\",n,\";\"))}else if(qa(n)){var p=f[e];b(h,\".\",ma[e],\"(\",n,\");\",n.map(function(a,b){return p+\"[\"+b+\"]=\"+a}).join(\";\"),\";\")}else la(l)?(k=a.link(n,{stable:!0}),b(h,\".\",ma[e],\"(\",k,\");\",g,\".\",e,\"=\",k,\";\")):b(h,\".\",ma[e],\"(\",n,\");\",g,\".\",e,\"=\",n,\";\")}})}function Q(a,b){sa&&(a.instancing=b.def(a.shared.extensions,\".angle_instanced_arrays\"))}function I(a,b,c,d,e){function f(){return\"undefined\"===typeof performance?\"Date.now()\":\"performance.now()\"}\nfunction h(a){t=b.def();a(t,\"=\",f(),\";\");\"string\"===typeof e?a(m,\".count+=\",e,\";\"):a(m,\".count++;\");g&&(d?(r=b.def(),a(r,\"=\",q,\".getNumPendingQueries();\")):a(q,\".beginQuery(\",m,\");\"))}function k(a){a(m,\".cpuTime+=\",f(),\"-\",t,\";\");g&&(d?a(q,\".pushScopeStats(\",r,\",\",q,\".getNumPendingQueries(),\",m,\");\"):a(q,\".endQuery();\"))}function l(a){var c=b.def(p,\".profile\");b(p,\".profile=\",a,\";\");b.exit(p,\".profile=\",c,\";\")}var n=a.shared,m=a.stats,p=n.current,q=n.timer;c=c.profile;var t,r;if(c){if(la(c)){c.enable?\n(h(b),k(b.exit),l(\"true\")):l(\"false\");return}c=c.append(a,b);l(c)}else c=b.def(p,\".profile\");n=a.block();h(n);b(\"if(\",c,\"){\",n,\"}\");a=a.block();k(a);b.exit(\"if(\",c,\"){\",a,\"}\")}function M(a,b,c,d,e){function f(a){switch(a){case 35664:case 35667:case 35671:return 2;case 35665:case 35668:case 35672:return 3;case 35666:case 35669:case 35673:return 4;default:return 1}}function g(c,d,e){function f(){b(\"if(!\",m,\".buffer){\",n,\".enableVertexAttribArray(\",l,\");}\");var c=e.type,g;g=e.size?b.def(e.size,\"||\",\nd):d;b(\"if(\",m,\".type!==\",c,\"||\",m,\".size!==\",g,\"||\",q.map(function(a){return m+\".\"+a+\"!==\"+e[a]}).join(\"||\"),\"){\",n,\".bindBuffer(\",34962,\",\",p,\".buffer);\",n,\".vertexAttribPointer(\",[l,g,c,e.normalized,e.stride,e.offset],\");\",m,\".type=\",c,\";\",m,\".size=\",g,\";\",q.map(function(a){return m+\".\"+a+\"=\"+e[a]+\";\"}).join(\"\"),\"}\");sa&&(c=e.divisor,b(\"if(\",m,\".divisor!==\",c,\"){\",a.instancing,\".vertexAttribDivisorANGLE(\",[l,c],\");\",m,\".divisor=\",c,\";}\"))}function k(){b(\"if(\",m,\".buffer){\",n,\".disableVertexAttribArray(\",\nl,\");\",m,\".buffer=null;\",\"}if(\",Ca.map(function(a,b){return m+\".\"+a+\"!==\"+aa[b]}).join(\"||\"),\"){\",n,\".vertexAttrib4f(\",l,\",\",aa,\");\",Ca.map(function(a,b){return m+\".\"+a+\"=\"+aa[b]+\";\"}).join(\"\"),\"}\")}var n=h.gl,l=b.def(c,\".location\"),m=b.def(h.attributes,\"[\",l,\"]\");c=e.state;var p=e.buffer,aa=[e.x,e.y,e.z,e.w],q=[\"buffer\",\"normalized\",\"offset\",\"stride\"];1===c?f():2===c?k():(b(\"if(\",c,\"===\",1,\"){\"),f(),b(\"}else{\"),k(),b(\"}\"))}var h=a.shared;d.forEach(function(d){var h=d.name,k=c.attributes[h],l;if(k){if(!e(k))return;\nl=k.append(a,b)}else{if(!e(Ab))return;var n=a.scopeAttrib(h);l={};Object.keys(new ha).forEach(function(a){l[a]=b.def(n,\".\",a)})}g(a.link(d),f(d.info.type),l)})}function U(a,c,d,e,f,g){for(var h=a.shared,k=h.gl,l,n=0;n<e.length;++n){var m=e[n],p=m.name,q=m.info.type,t=d.uniforms[p],m=a.link(m)+\".location\",r;if(t){if(!f(t))continue;if(la(t)){p=t.value;if(35678===q||35680===q)q=a.link(p._texture||p.color[0]._texture),c(k,\".uniform1i(\",m,\",\",q+\".bind());\"),c.exit(q,\".unbind();\");else if(35674===q||35675===\nq||35676===q)p=a.global.def(\"new Float32Array([\"+Array.prototype.slice.call(p)+\"])\"),t=2,35675===q?t=3:35676===q&&(t=4),c(k,\".uniformMatrix\",t,\"fv(\",m,\",false,\",p,\");\");else{switch(q){case 5126:l=\"1f\";break;case 35664:l=\"2f\";break;case 35665:l=\"3f\";break;case 35666:l=\"4f\";break;case 35670:l=\"1i\";break;case 5124:l=\"1i\";break;case 35671:l=\"2i\";break;case 35667:l=\"2i\";break;case 35672:l=\"3i\";break;case 35668:l=\"3i\";break;case 35673:l=\"4i\";break;case 35669:l=\"4i\"}c(k,\".uniform\",l,\"(\",m,\",\",qa(p)?Array.prototype.slice.call(p):\np,\");\")}continue}else r=t.append(a,c)}else{if(!f(Ab))continue;r=c.def(h.uniforms,\"[\",b.id(p),\"]\")}35678===q?c(\"if(\",r,\"&&\",r,'._reglType===\"framebuffer\"){',r,\"=\",r,\".color[0];\",\"}\"):35680===q&&c(\"if(\",r,\"&&\",r,'._reglType===\"framebufferCube\"){',r,\"=\",r,\".color[0];\",\"}\");p=1;switch(q){case 35678:case 35680:q=c.def(r,\"._texture\");c(k,\".uniform1i(\",m,\",\",q,\".bind());\");c.exit(q,\".unbind();\");continue;case 5124:case 35670:l=\"1i\";break;case 35667:case 35671:l=\"2i\";p=2;break;case 35668:case 35672:l=\"3i\";\np=3;break;case 35669:case 35673:l=\"4i\";p=4;break;case 5126:l=\"1f\";break;case 35664:l=\"2f\";p=2;break;case 35665:l=\"3f\";p=3;break;case 35666:l=\"4f\";p=4;break;case 35674:l=\"Matrix2fv\";break;case 35675:l=\"Matrix3fv\";break;case 35676:l=\"Matrix4fv\"}if(\"M\"===l.charAt(0)){c(k,\".uniform\",l,\"(\",m,\",\");var m=Math.pow(q-35674+2,2),u=a.global.def(\"new Float32Array(\",m,\")\");Array.isArray(r)?c(\"false,(\",S(m,function(a){return u+\"[\"+a+\"]=\"+r[a]}),\",\",u,\")\"):c(\"false,(Array.isArray(\",r,\")||\",r,\" instanceof Float32Array)?\",\nr,\":(\",S(m,function(a){return u+\"[\"+a+\"]=\"+r+\"[\"+a+\"]\"}),\",\",u,\")\");c(\");\")}else{if(1<p){for(var q=[],v=[],t=0;t<p;++t)Array.isArray(r)?v.push(r[t]):v.push(c.def(r+\"[\"+t+\"]\")),g&&q.push(c.def());g&&c(\"if(!\",a.batchId,\"||\",q.map(function(a,b){return a+\"!==\"+v[b]}).join(\"||\"),\"){\",q.map(function(a,b){return a+\"=\"+v[b]+\";\"}).join(\"\"));c(k,\".uniform\",l,\"(\",m,\",\",v.join(\",\"),\");\")}else g&&(q=c.def(),c(\"if(!\",a.batchId,\"||\",q,\"!==\",r,\"){\",q,\"=\",r,\";\")),c(k,\".uniform\",l,\"(\",m,\",\",r,\");\");g&&c(\"}\")}}}function Y(a,\nb,c,d){function e(f){var g=n[f];return g?g.contextDep&&d.contextDynamic||g.propDep?g.append(a,c):g.append(a,b):b.def(l,\".\",f)}function f(){function a(){c(u,\".drawElementsInstancedANGLE(\",[p,t,v,q+\"<<((\"+v+\"-5121)>>1)\",r],\");\")}function b(){c(u,\".drawArraysInstancedANGLE(\",[p,q,t,r],\");\")}m&&\"null\"!==m?y?a():(c(\"if(\",m,\"){\"),a(),c(\"}else{\"),b(),c(\"}\")):b()}function g(){function a(){c(k+\".drawElements(\"+[p,t,v,q+\"<<((\"+v+\"-5121)>>1)\"]+\");\")}function b(){c(k+\".drawArrays(\"+[p,q,t]+\");\")}m&&\"null\"!==\nm?y?a():(c(\"if(\",m,\"){\"),a(),c(\"}else{\"),b(),c(\"}\")):b()}var h=a.shared,k=h.gl,l=h.draw,n=d.draw,m=function(){var e=n.elements,f=b;if(e){if(e.contextDep&&d.contextDynamic||e.propDep)f=c;e=e.append(a,f);n.elementsActive&&f(\"if(\"+e+\")\"+k+\".bindBuffer(34963,\"+e+\".buffer.buffer);\")}else e=f.def(),f(e,\"=\",l,\".\",\"elements\",\";\",\"if(\",e,\"){\",k,\".bindBuffer(\",34963,\",\",e,\".buffer.buffer);}\",\"else if(\",h.vao,\".currentVAO){\",e,\"=\",a.shared.elements+\".getElements(\"+h.vao,\".currentVAO.elements);\",ja?\"\":\"if(\"+\ne+\")\"+k+\".bindBuffer(34963,\"+e+\".buffer.buffer);\",\"}\");return e}(),p=e(\"primitive\"),q=e(\"offset\"),t=function(){var e=n.count,f=b;if(e){if(e.contextDep&&d.contextDynamic||e.propDep)f=c;e=e.append(a,f)}else e=f.def(l,\".\",\"count\");return e}();if(\"number\"===typeof t){if(0===t)return}else c(\"if(\",t,\"){\"),c.exit(\"}\");var r,u;sa&&(r=e(\"instances\"),u=a.instancing);var v=m+\".type\",y=n.elements&&la(n.elements)&&!n.vaoActive;sa&&(\"number\"!==typeof r||0<=r)?\"string\"===typeof r?(c(\"if(\",r,\">0){\"),f(),c(\"}else if(\",\nr,\"<0){\"),g(),c(\"}\")):f():g()}function xa(a,b,c,d,e){b=w();e=b.proc(\"body\",e);sa&&(b.instancing=e.def(b.shared.extensions,\".angle_instanced_arrays\"));a(b,e,c,d);return b.compile().body}function da(a,b,c,d){Q(a,b);c.useVAO?c.drawVAO?b(a.shared.vao,\".setVAO(\",c.drawVAO.append(a,b),\");\"):b(a.shared.vao,\".setVAO(\",a.shared.vao,\".targetVAO);\"):(b(a.shared.vao,\".setVAO(null);\"),M(a,b,c,d.attributes,function(){return!0}));U(a,b,c,d.uniforms,function(){return!0},!1);Y(a,b,b,c)}function pa(a,b){var c=a.proc(\"draw\",\n1);Q(a,c);na(a,c,b.context);V(a,c,b.framebuffer);T(a,c,b);W(a,c,b.state);I(a,c,b,!1,!0);var d=b.shader.progVar.append(a,c);c(a.shared.gl,\".useProgram(\",d,\".program);\");if(b.shader.program)da(a,c,b,b.shader.program);else{c(a.shared.vao,\".setVAO(null);\");var e=a.global.def(\"{}\"),f=c.def(d,\".id\"),g=c.def(e,\"[\",f,\"]\");c(a.cond(g).then(g,\".call(this,a0);\")[\"else\"](g,\"=\",e,\"[\",f,\"]=\",a.link(function(c){return xa(da,a,b,c,1)}),\"(\",d,\");\",g,\".call(this,a0);\"))}0<Object.keys(b.state).length&&c(a.shared.current,\n\".dirty=true;\");a.shared.vao&&c(a.shared.vao,\".setVAO(null);\")}function ga(a,b,c,d){function e(){return!0}a.batchId=\"a1\";Q(a,b);M(a,b,c,d.attributes,e);U(a,b,c,d.uniforms,e,!1);Y(a,b,b,c)}function Ea(a,b,c,d){function e(a){return a.contextDep&&g||a.propDep}function f(a){return!e(a)}Q(a,b);var g=c.contextDep,h=b.def(),k=b.def();a.shared.props=k;a.batchId=h;var l=a.scope(),n=a.scope();b(l.entry,\"for(\",h,\"=0;\",h,\"<\",\"a1\",\";++\",h,\"){\",k,\"=\",\"a0\",\"[\",h,\"];\",n,\"}\",l.exit);c.needsContext&&na(a,n,c.context);\nc.needsFramebuffer&&V(a,n,c.framebuffer);W(a,n,c.state,e);c.profile&&e(c.profile)&&I(a,n,c,!1,!0);d?(c.useVAO?c.drawVAO?e(c.drawVAO)?n(a.shared.vao,\".setVAO(\",c.drawVAO.append(a,n),\");\"):l(a.shared.vao,\".setVAO(\",c.drawVAO.append(a,l),\");\"):l(a.shared.vao,\".setVAO(\",a.shared.vao,\".targetVAO);\"):(l(a.shared.vao,\".setVAO(null);\"),M(a,l,c,d.attributes,f),M(a,n,c,d.attributes,e)),U(a,l,c,d.uniforms,f,!1),U(a,n,c,d.uniforms,e,!0),Y(a,l,n,c)):(b=a.global.def(\"{}\"),d=c.shader.progVar.append(a,n),k=n.def(d,\n\".id\"),l=n.def(b,\"[\",k,\"]\"),n(a.shared.gl,\".useProgram(\",d,\".program);\",\"if(!\",l,\"){\",l,\"=\",b,\"[\",k,\"]=\",a.link(function(b){return xa(ga,a,c,b,2)}),\"(\",d,\");}\",l,\".call(this,a0[\",h,\"],\",h,\");\"))}function Qa(a,b){function c(a){return a.contextDep&&e||a.propDep}var d=a.proc(\"batch\",2);a.batchId=\"0\";Q(a,d);var e=!1,f=!0;Object.keys(b.context).forEach(function(a){e=e||b.context[a].propDep});e||(na(a,d,b.context),f=!1);var g=b.framebuffer,h=!1;g?(g.propDep?e=h=!0:g.contextDep&&e&&(h=!0),h||V(a,d,g)):V(a,\nd,null);b.state.viewport&&b.state.viewport.propDep&&(e=!0);T(a,d,b);W(a,d,b.state,function(a){return!c(a)});b.profile&&c(b.profile)||I(a,d,b,!1,\"a1\");b.contextDep=e;b.needsContext=f;b.needsFramebuffer=h;f=b.shader.progVar;if(f.contextDep&&e||f.propDep)Ea(a,d,b,null);else if(f=f.append(a,d),d(a.shared.gl,\".useProgram(\",f,\".program);\"),b.shader.program)Ea(a,d,b,b.shader.program);else{d(a.shared.vao,\".setVAO(null);\");var g=a.global.def(\"{}\"),h=d.def(f,\".id\"),k=d.def(g,\"[\",h,\"]\");d(a.cond(k).then(k,\".call(this,a0,a1);\")[\"else\"](k,\n\"=\",g,\"[\",h,\"]=\",a.link(function(c){return xa(Ea,a,b,c,2)}),\"(\",f,\");\",k,\".call(this,a0,a1);\"))}0<Object.keys(b.state).length&&d(a.shared.current,\".dirty=true;\");a.shared.vao&&d(a.shared.vao,\".setVAO(null);\")}function ea(a,c){function d(b){var g=c.shader[b];g&&(g=g.append(a,e),isNaN(g)?e.set(f.shader,\".\"+b,g):e.set(f.shader,\".\"+b,a.link(g,{stable:!0})))}var e=a.proc(\"scope\",3);a.batchId=\"a2\";var f=a.shared,g=f.current;na(a,e,c.context);c.framebuffer&&c.framebuffer.append(a,e);yb(Object.keys(c.state)).forEach(function(b){var d=\nc.state[b],g=d.append(a,e);qa(g)?g.forEach(function(c,d){isNaN(c)?e.set(a.next[b],\"[\"+d+\"]\",c):e.set(a.next[b],\"[\"+d+\"]\",a.link(c,{stable:!0}))}):la(d)?e.set(f.next,\".\"+b,a.link(g,{stable:!0})):e.set(f.next,\".\"+b,g)});I(a,e,c,!0,!0);[\"elements\",\"offset\",\"count\",\"instances\",\"primitive\"].forEach(function(b){var d=c.draw[b];d&&(d=d.append(a,e),isNaN(d)?e.set(f.draw,\".\"+b,d):e.set(f.draw,\".\"+b,a.link(d),{stable:!0}))});Object.keys(c.uniforms).forEach(function(d){var g=c.uniforms[d].append(a,e);Array.isArray(g)&&\n(g=\"[\"+g.map(function(b){return isNaN(b)?b:a.link(b,{stable:!0})})+\"]\");e.set(f.uniforms,\"[\"+a.link(b.id(d),{stable:!0})+\"]\",g)});Object.keys(c.attributes).forEach(function(b){var d=c.attributes[b].append(a,e),f=a.scopeAttrib(b);Object.keys(new ha).forEach(function(a){e.set(f,\".\"+a,d[a])})});if(c.scopeVAO){var h=c.scopeVAO.append(a,e);isNaN(h)?e.set(f.vao,\".targetVAO\",h):e.set(f.vao,\".targetVAO\",a.link(h,{stable:!0}))}d(\"vert\");d(\"frag\");0<Object.keys(c.state).length&&(e(g,\".dirty=true;\"),e.exit(g,\n\".dirty=true;\"));e(\"a1(\",a.shared.context,\",a0,\",a.batchId,\");\")}function fa(a){if(\"object\"===typeof a&&!qa(a)){for(var b=Object.keys(a),c=0;c<b.length;++c)if(Z.isDynamic(a[b[c]]))return!0;return!1}}function ka(a,b,c){function d(a,b){g.forEach(function(c){var d=e[c];Z.isDynamic(d)&&(d=a.invoke(b,d),b(n,\".\",c,\"=\",d,\";\"))})}var e=b[\"static\"][c];if(e&&fa(e)){var f=a.global,g=Object.keys(e),h=!1,k=!1,l=!1,n=a.global.def(\"{}\");g.forEach(function(b){var c=e[b];if(Z.isDynamic(c))\"function\"===typeof c&&(c=\ne[b]=Z.unbox(c)),b=L(c,null),h=h||b.thisDep,l=l||b.propDep,k=k||b.contextDep;else{f(n,\".\",b,\"=\");switch(typeof c){case \"number\":f(c);break;case \"string\":f('\"',c,'\"');break;case \"object\":Array.isArray(c)&&f(\"[\",c.join(),\"]\");break;default:f(a.link(c))}f(\";\")}});b.dynamic[c]=new Z.DynamicVariable(4,{thisDep:h,contextDep:k,propDep:l,ref:n,append:d});delete b[\"static\"][c]}}var ha=r.Record,X={add:32774,subtract:32778,\"reverse subtract\":32779};c.ext_blend_minmax&&(X.min=32775,X.max=32776);var sa=c.angle_instanced_arrays,\nR=c.webgl_draw_buffers,ja=c.oes_vertex_array_object,ta={dirty:!0,profile:h.profile},Da={},Ma=[],ua={},ma={};y(\"dither\",3024);y(\"blend.enable\",3042);C(\"blend.color\",\"blendColor\",[0,0,0,0]);C(\"blend.equation\",\"blendEquationSeparate\",[32774,32774]);C(\"blend.func\",\"blendFuncSeparate\",[1,0,1,0]);y(\"depth.enable\",2929,!0);C(\"depth.func\",\"depthFunc\",513);C(\"depth.range\",\"depthRange\",[0,1]);C(\"depth.mask\",\"depthMask\",!0);C(\"colorMask\",\"colorMask\",[!0,!0,!0,!0]);y(\"cull.enable\",2884);C(\"cull.face\",\"cullFace\",\n1029);C(\"frontFace\",\"frontFace\",2305);C(\"lineWidth\",\"lineWidth\",1);y(\"polygonOffset.enable\",32823);C(\"polygonOffset.offset\",\"polygonOffset\",[0,0]);y(\"sample.alpha\",32926);y(\"sample.enable\",32928);C(\"sample.coverage\",\"sampleCoverage\",[1,!1]);y(\"stencil.enable\",2960);C(\"stencil.mask\",\"stencilMask\",-1);C(\"stencil.func\",\"stencilFunc\",[519,0,-1]);C(\"stencil.opFront\",\"stencilOpSeparate\",[1028,7680,7680,7680]);C(\"stencil.opBack\",\"stencilOpSeparate\",[1029,7680,7680,7680]);y(\"scissor.enable\",3089);C(\"scissor.box\",\n\"scissor\",[0,0,a.drawingBufferWidth,a.drawingBufferHeight]);C(\"viewport\",\"viewport\",[0,0,a.drawingBufferWidth,a.drawingBufferHeight]);var tb={gl:a,context:t,strings:b,next:Da,current:ta,draw:n,elements:e,buffer:f,shader:k,attributes:r.state,vao:r,uniforms:u,framebuffer:q,extensions:c,timer:g,isBufferArgs:Sa},Oa={primTypes:Ka,compareFuncs:$a,blendFuncs:Ga,blendEquations:X,stencilOps:Ta,glTypes:Ja,orientationType:zb};R&&(Oa.backBuffer=[1029],Oa.drawBuffer=S(d.maxDrawbuffers,function(a){return 0===a?\n[0]:S(a,function(a){return 36064+a})}));var ra=0;return{next:Da,current:ta,procs:function(){var a=w(),b=a.proc(\"poll\"),e=a.proc(\"refresh\"),f=a.block();b(f);e(f);var g=a.shared,h=g.gl,k=g.next,l=g.current;f(l,\".dirty=false;\");V(a,b);V(a,e,null,!0);var n;sa&&(n=a.link(sa));c.oes_vertex_array_object&&e(a.link(c.oes_vertex_array_object),\".bindVertexArrayOES(null);\");var g=e.def(g.attributes),m=e.def(0),p=a.cond(m,\".buffer\");p.then(h,\".enableVertexAttribArray(i);\",h,\".bindBuffer(\",34962,\",\",m,\".buffer.buffer);\",\nh,\".vertexAttribPointer(i,\",m,\".size,\",m,\".type,\",m,\".normalized,\",m,\".stride,\",m,\".offset);\")[\"else\"](h,\".disableVertexAttribArray(i);\",h,\".vertexAttrib4f(i,\",m,\".x,\",m,\".y,\",m,\".z,\",m,\".w);\",m,\".buffer=null;\");var q=a.link(d.maxAttributes,{stable:!0});e(\"for(var i=0;i<\",q,\";++i){\",m,\"=\",g,\"[i];\",p,\"}\");sa&&e(\"for(var i=0;i<\",q,\";++i){\",n,\".vertexAttribDivisorANGLE(i,\",g,\"[i].divisor);\",\"}\");e(a.shared.vao,\".currentVAO=null;\",a.shared.vao,\".setVAO(\",a.shared.vao,\".targetVAO);\");Object.keys(ua).forEach(function(c){var d=\nua[c],g=f.def(k,\".\",c),n=a.block();n(\"if(\",g,\"){\",h,\".enable(\",d,\")}else{\",h,\".disable(\",d,\")}\",l,\".\",c,\"=\",g,\";\");e(n);b(\"if(\",g,\"!==\",l,\".\",c,\"){\",n,\"}\")});Object.keys(ma).forEach(function(c){var d=ma[c],g=ta[c],n,m,p=a.block();p(h,\".\",d,\"(\");qa(g)?(d=g.length,n=a.global.def(k,\".\",c),m=a.global.def(l,\".\",c),p(S(d,function(a){return n+\"[\"+a+\"]\"}),\");\",S(d,function(a){return m+\"[\"+a+\"]=\"+n+\"[\"+a+\"];\"}).join(\"\")),b(\"if(\",S(d,function(a){return n+\"[\"+a+\"]!==\"+m+\"[\"+a+\"]\"}).join(\"||\"),\"){\",p,\"}\")):(n=\nf.def(k,\".\",c),m=f.def(l,\".\",c),p(n,\");\",l,\".\",c,\"=\",n,\";\"),b(\"if(\",n,\"!==\",m,\"){\",p,\"}\"));e(p)});return a.compile()}(),compile:function(a,b,c,d,e){var f=w();f.stats=f.link(e);Object.keys(b[\"static\"]).forEach(function(a){ka(f,b,a)});ac.forEach(function(b){ka(f,a,b)});var g=oa(a,b,c,d,f);g.shader.program&&(g.shader.program.attributes.sort(function(a,b){return a.name<b.name?-1:1}),g.shader.program.uniforms.sort(function(a,b){return a.name<b.name?-1:1}));pa(f,g);ea(f,g);Qa(f,g);return O(f.compile(),\n{destroy:function(){g.shader.program.destroy()}})}}}function Bb(a,b){for(var c=0;c<a.length;++c)if(a[c]===b)return c;return-1}var O=function(a,b){for(var c=Object.keys(b),d=0;d<c.length;++d)a[c[d]]=b[c[d]];return a},Db=0,Z={DynamicVariable:da,define:function(a,b){return new da(a,bb(b+\"\"))},isDynamic:function(a){return\"function\"===typeof a&&!a._reglType||a instanceof da},unbox:cb,accessor:bb},ab={next:\"function\"===typeof requestAnimationFrame?function(a){return requestAnimationFrame(a)}:function(a){return setTimeout(a,\n16)},cancel:\"function\"===typeof cancelAnimationFrame?function(a){return cancelAnimationFrame(a)}:clearTimeout},Cb=\"undefined\"!==typeof performance&&performance.now?function(){return performance.now()}:function(){return+new Date},B=gb();B.zero=gb();var bc=function(a,b){var c=1;b.ext_texture_filter_anisotropic&&(c=a.getParameter(34047));var d=1,f=1;b.webgl_draw_buffers&&(d=a.getParameter(34852),f=a.getParameter(36063));var e=!!b.oes_texture_float;if(e){e=a.createTexture();a.bindTexture(3553,e);a.texImage2D(3553,\n0,6408,1,1,0,6408,5126,null);var m=a.createFramebuffer();a.bindFramebuffer(36160,m);a.framebufferTexture2D(36160,36064,3553,e,0);a.bindTexture(3553,null);if(36053!==a.checkFramebufferStatus(36160))e=!1;else{a.viewport(0,0,1,1);a.clearColor(1,0,0,1);a.clear(16384);var q=B.allocType(5126,4);a.readPixels(0,0,1,1,6408,5126,q);a.getError()?e=!1:(a.deleteFramebuffer(m),a.deleteTexture(e),e=1===q[0]);B.freeType(q)}}q=!0;\"undefined\"!==typeof navigator&&(/MSIE/.test(navigator.userAgent)||/Trident\\//.test(navigator.appVersion)||\n/Edge/.test(navigator.userAgent))||(q=a.createTexture(),m=B.allocType(5121,36),a.activeTexture(33984),a.bindTexture(34067,q),a.texImage2D(34069,0,6408,3,3,0,6408,5121,m),B.freeType(m),a.bindTexture(34067,null),a.deleteTexture(q),q=!a.getError());return{colorBits:[a.getParameter(3410),a.getParameter(3411),a.getParameter(3412),a.getParameter(3413)],depthBits:a.getParameter(3414),stencilBits:a.getParameter(3415),subpixelBits:a.getParameter(3408),extensions:Object.keys(b).filter(function(a){return!!b[a]}),\nmaxAnisotropic:c,maxDrawbuffers:d,maxColorAttachments:f,pointSizeDims:a.getParameter(33901),lineWidthDims:a.getParameter(33902),maxViewportDims:a.getParameter(3386),maxCombinedTextureUnits:a.getParameter(35661),maxCubeMapSize:a.getParameter(34076),maxRenderbufferSize:a.getParameter(34024),maxTextureUnits:a.getParameter(34930),maxTextureSize:a.getParameter(3379),maxAttributes:a.getParameter(34921),maxVertexUniforms:a.getParameter(36347),maxVertexTextureUnits:a.getParameter(35660),maxVaryingVectors:a.getParameter(36348),\nmaxFragmentUniforms:a.getParameter(36349),glsl:a.getParameter(35724),renderer:a.getParameter(7937),vendor:a.getParameter(7936),version:a.getParameter(7938),readFloat:e,npotTextureCube:q}},P=function(a){return a instanceof Uint8Array||a instanceof Uint16Array||a instanceof Uint32Array||a instanceof Int8Array||a instanceof Int16Array||a instanceof Int32Array||a instanceof Float32Array||a instanceof Float64Array||a instanceof Uint8ClampedArray},T=function(a){return Object.keys(a).map(function(b){return a[b]})},\nPa={shape:function(a){for(var b=[];a.length;a=a[0])b.push(a.length);return b},flatten:function(a,b,c,d){var f=1;if(b.length)for(var e=0;e<b.length;++e)f*=b[e];else f=0;c=d||B.allocType(c,f);switch(b.length){case 0:break;case 1:d=b[0];for(b=0;b<d;++b)c[b]=a[b];break;case 2:d=b[0];b=b[1];for(e=f=0;e<d;++e)for(var m=a[e],q=0;q<b;++q)c[f++]=m[q];break;case 3:hb(a,b[0],b[1],b[2],c,0);break;default:ib(a,b,0,c,0)}return c}},Ia={\"[object Int8Array]\":5120,\"[object Int16Array]\":5122,\"[object Int32Array]\":5124,\n\"[object Uint8Array]\":5121,\"[object Uint8ClampedArray]\":5121,\"[object Uint16Array]\":5123,\"[object Uint32Array]\":5125,\"[object Float32Array]\":5126,\"[object Float64Array]\":5121,\"[object ArrayBuffer]\":5121},Ja={int8:5120,int16:5122,int32:5124,uint8:5121,uint16:5123,uint32:5125,\"float\":5126,float32:5126},mb={dynamic:35048,stream:35040,\"static\":35044},Ua=Pa.flatten,lb=Pa.shape,ja=[];ja[5120]=1;ja[5122]=2;ja[5124]=4;ja[5121]=1;ja[5123]=2;ja[5125]=4;ja[5126]=4;var Ka={points:0,point:0,lines:1,line:1,triangles:4,\ntriangle:4,\"line loop\":2,\"line strip\":3,\"triangle strip\":5,\"triangle fan\":6},pb=new Float32Array(1),Lb=new Uint32Array(pb.buffer),Pb=[9984,9986,9985,9987],Na=[0,6409,6410,6407,6408],U={};U[6409]=U[6406]=U[6402]=1;U[34041]=U[6410]=2;U[6407]=U[35904]=3;U[6408]=U[35906]=4;var Wa=ra(\"HTMLCanvasElement\"),Xa=ra(\"OffscreenCanvas\"),ub=ra(\"CanvasRenderingContext2D\"),vb=ra(\"ImageBitmap\"),wb=ra(\"HTMLImageElement\"),xb=ra(\"HTMLVideoElement\"),Mb=Object.keys(Ia).concat([Wa,Xa,ub,vb,wb,xb]),ya=[];ya[5121]=1;ya[5126]=\n4;ya[36193]=2;ya[5123]=2;ya[5125]=4;var G=[];G[32854]=2;G[32855]=2;G[36194]=2;G[34041]=4;G[33776]=.5;G[33777]=.5;G[33778]=1;G[33779]=1;G[35986]=.5;G[35987]=1;G[34798]=1;G[35840]=.5;G[35841]=.25;G[35842]=.5;G[35843]=.25;G[36196]=.5;var M=[];M[32854]=2;M[32855]=2;M[36194]=2;M[33189]=2;M[36168]=1;M[34041]=4;M[35907]=4;M[34836]=16;M[34842]=8;M[34843]=6;var cc=function(a,b,c,d,f){function e(a){this.id=r++;this.refCount=1;this.renderbuffer=a;this.format=32854;this.height=this.width=0;f.profile&&(this.stats=\n{size:0})}function m(b){var c=b.renderbuffer;a.bindRenderbuffer(36161,null);a.deleteRenderbuffer(c);b.renderbuffer=null;b.refCount=0;delete k[b.id];d.renderbufferCount--}var q={rgba4:32854,rgb565:36194,\"rgb5 a1\":32855,depth:33189,stencil:36168,\"depth stencil\":34041};b.ext_srgb&&(q.srgba=35907);b.ext_color_buffer_half_float&&(q.rgba16f=34842,q.rgb16f=34843);b.webgl_color_buffer_float&&(q.rgba32f=34836);var u=[];Object.keys(q).forEach(function(a){u[q[a]]=a});var r=0,k={};e.prototype.decRef=function(){0>=\n--this.refCount&&m(this)};f.profile&&(d.getTotalRenderbufferSize=function(){var a=0;Object.keys(k).forEach(function(b){a+=k[b].stats.size});return a});return{create:function(b,c){function g(b,c){var d=0,e=0,k=32854;\"object\"===typeof b&&b?(\"shape\"in b?(e=b.shape,d=e[0]|0,e=e[1]|0):(\"radius\"in b&&(d=e=b.radius|0),\"width\"in b&&(d=b.width|0),\"height\"in b&&(e=b.height|0)),\"format\"in b&&(k=q[b.format])):\"number\"===typeof b?(d=b|0,e=\"number\"===typeof c?c|0:d):b||(d=e=1);if(d!==l.width||e!==l.height||k!==\nl.format)return g.width=l.width=d,g.height=l.height=e,l.format=k,a.bindRenderbuffer(36161,l.renderbuffer),a.renderbufferStorage(36161,k,d,e),f.profile&&(l.stats.size=M[l.format]*l.width*l.height),g.format=u[l.format],g}var l=new e(a.createRenderbuffer());k[l.id]=l;d.renderbufferCount++;g(b,c);g.resize=function(b,c){var d=b|0,e=c|0||d;if(d===l.width&&e===l.height)return g;g.width=l.width=d;g.height=l.height=e;a.bindRenderbuffer(36161,l.renderbuffer);a.renderbufferStorage(36161,l.format,d,e);f.profile&&\n(l.stats.size=M[l.format]*l.width*l.height);return g};g._reglType=\"renderbuffer\";g._renderbuffer=l;f.profile&&(g.stats=l.stats);g.destroy=function(){l.decRef()};return g},clear:function(){T(k).forEach(m)},restore:function(){T(k).forEach(function(b){b.renderbuffer=a.createRenderbuffer();a.bindRenderbuffer(36161,b.renderbuffer);a.renderbufferStorage(36161,b.format,b.width,b.height)});a.bindRenderbuffer(36161,null)}}},Ya=[];Ya[6408]=4;Ya[6407]=3;var Ra=[];Ra[5121]=1;Ra[5126]=4;Ra[36193]=2;var Vb=[1116352408,\n1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,\n275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],Ca=[\"x\",\"y\",\"z\",\"w\"],ac=\"blend.func blend.equation stencil.func stencil.opFront stencil.opBack sample.coverage viewport scissor.box polygonOffset.offset\".split(\" \"),Ga={0:0,1:1,zero:0,one:1,\"src color\":768,\"one minus src color\":769,\"src alpha\":770,\"one minus src alpha\":771,\"dst color\":774,\"one minus dst color\":775,\n\"dst alpha\":772,\"one minus dst alpha\":773,\"constant color\":32769,\"one minus constant color\":32770,\"constant alpha\":32771,\"one minus constant alpha\":32772,\"src alpha saturate\":776},$a={never:512,less:513,\"<\":513,equal:514,\"=\":514,\"==\":514,\"===\":514,lequal:515,\"<=\":515,greater:516,\">\":516,notequal:517,\"!=\":517,\"!==\":517,gequal:518,\">=\":518,always:519},Ta={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,\"increment wrap\":34055,\"decrement wrap\":34056,invert:5386},zb={cw:2304,ccw:2305},\nAb=new K(!1,!1,!1,function(){}),dc=function(a,b){function c(){this.endQueryIndex=this.startQueryIndex=-1;this.sum=0;this.stats=null}function d(a,b,d){var e=m.pop()||new c;e.startQueryIndex=a;e.endQueryIndex=b;e.sum=0;e.stats=d;q.push(e)}if(!b.ext_disjoint_timer_query)return null;var f=[],e=[],m=[],q=[],u=[],r=[];return{beginQuery:function(a){var c=f.pop()||b.ext_disjoint_timer_query.createQueryEXT();b.ext_disjoint_timer_query.beginQueryEXT(35007,c);e.push(c);d(e.length-1,e.length,a)},endQuery:function(){b.ext_disjoint_timer_query.endQueryEXT(35007)},\npushScopeStats:d,update:function(){var a,c;a=e.length;if(0!==a){r.length=Math.max(r.length,a+1);u.length=Math.max(u.length,a+1);u[0]=0;var d=r[0]=0;for(c=a=0;c<e.length;++c){var g=e[c];b.ext_disjoint_timer_query.getQueryObjectEXT(g,34919)?(d+=b.ext_disjoint_timer_query.getQueryObjectEXT(g,34918),f.push(g)):e[a++]=g;u[c+1]=d;r[c+1]=a}e.length=a;for(c=a=0;c<q.length;++c){var d=q[c],l=d.startQueryIndex,g=d.endQueryIndex;d.sum+=u[g]-u[l];l=r[l];g=r[g];g===l?(d.stats.gpuTime+=d.sum/1E6,m.push(d)):(d.startQueryIndex=\nl,d.endQueryIndex=g,q[a++]=d)}q.length=a}},getNumPendingQueries:function(){return e.length},clear:function(){f.push.apply(f,e);for(var a=0;a<f.length;a++)b.ext_disjoint_timer_query.deleteQueryEXT(f[a]);e.length=0;f.length=0},restore:function(){e.length=0;f.length=0}}};return function(a){function b(){if(0===I.length)z&&z.update(),R=null;else{R=ab.next(b);k();for(var a=I.length-1;0<=a;--a){var c=I[a];c&&c(D,null,0)}g.flush();z&&z.update()}}function c(){!R&&0<I.length&&(R=ab.next(b))}function d(){R&&\n(ab.cancel(b),R=null)}function f(a){a.preventDefault();d();S.forEach(function(a){a()})}function e(a){g.getError();h.restore();J.restore();G.restore();L.restore();P.restore();V.restore();A.restore();z&&z.restore();M.procs.refresh();c();T.forEach(function(a){a()})}function m(a){function b(a,c){var d={},e={};Object.keys(a).forEach(function(b){var f=a[b];if(Z.isDynamic(f))e[b]=Z.unbox(f,b);else{if(c&&Array.isArray(f))for(var g=0;g<f.length;++g)if(Z.isDynamic(f[g])){e[b]=Z.unbox(f,b);return}d[b]=f}});\nreturn{dynamic:e,\"static\":d}}function c(a){for(;n.length<a;)n.push(null);return n}var d=b(a.context||{},!0),e=b(a.uniforms||{},!0),f=b(a.attributes||{},!1);a=b(function(a){function b(a){if(a in c){var d=c[a];delete c[a];Object.keys(d).forEach(function(b){c[a+\".\"+b]=d[b]})}}var c=O({},a);delete c.uniforms;delete c.attributes;delete c.context;delete c.vao;\"stencil\"in c&&c.stencil.op&&(c.stencil.opBack=c.stencil.opFront=c.stencil.op,delete c.stencil.op);b(\"blend\");b(\"depth\");b(\"cull\");b(\"stencil\");b(\"polygonOffset\");\nb(\"scissor\");b(\"sample\");\"vao\"in a&&(c.vao=a.vao);return c}(a),!1);var g={gpuTime:0,cpuTime:0,count:0},h=M.compile(a,f,e,d,g),k=h.draw,l=h.batch,m=h.scope,n=[];return O(function(a,b){var d;if(\"function\"===typeof a)return m.call(this,null,a,0);if(\"function\"===typeof b)if(\"number\"===typeof a)for(d=0;d<a;++d)m.call(this,null,b,d);else if(Array.isArray(a))for(d=0;d<a.length;++d)m.call(this,a[d],b,d);else return m.call(this,a,b,0);else if(\"number\"===typeof a){if(0<a)return l.call(this,c(a|0),a|0)}else if(Array.isArray(a)){if(a.length)return l.call(this,\na,a.length)}else return k.call(this,a)},{stats:g,destroy:function(){h.destroy()}})}function q(a,b){var c=0;M.procs.poll();var d=b.color;d&&(g.clearColor(+d[0]||0,+d[1]||0,+d[2]||0,+d[3]||0),c|=16384);\"depth\"in b&&(g.clearDepth(+b.depth),c|=256);\"stencil\"in b&&(g.clearStencil(b.stencil|0),c|=1024);g.clear(c)}function u(a){I.push(a);c();return{cancel:function(){function b(){var a=Bb(I,b);I[a]=I[I.length-1];--I.length;0>=I.length&&d()}var c=Bb(I,a);I[c]=b}}}function r(){var a=W.viewport,b=W.scissor_box;\na[0]=a[1]=b[0]=b[1]=0;D.viewportWidth=D.framebufferWidth=D.drawingBufferWidth=a[2]=b[2]=g.drawingBufferWidth;D.viewportHeight=D.framebufferHeight=D.drawingBufferHeight=a[3]=b[3]=g.drawingBufferHeight}function k(){D.tick+=1;D.time=t();r();M.procs.poll()}function n(){L.refresh();r();M.procs.refresh();z&&z.update()}function t(){return(Cb()-E)/1E3}a=Hb(a);if(!a)return null;var g=a.gl,l=g.getContextAttributes();g.isContextLost();var h=Ib(g,a);if(!h)return null;var p=Eb(),y={vaoCount:0,bufferCount:0,elementsCount:0,\nframebufferCount:0,shaderCount:0,textureCount:0,cubeCount:0,renderbufferCount:0,maxTextureUnits:0},C=a.cachedCode||{},w=h.extensions,z=dc(g,w),E=Cb(),B=g.drawingBufferWidth,H=g.drawingBufferHeight,D={tick:0,time:0,viewportWidth:B,viewportHeight:H,framebufferWidth:B,framebufferHeight:H,drawingBufferWidth:B,drawingBufferHeight:H,pixelRatio:a.pixelRatio},B={elements:null,primitive:4,count:-1,offset:0,instances:-1},v=bc(g,w),G=Jb(g,y,a,function(a){return A.destroyBuffer(a)}),K=Kb(g,w,G,y),A=Rb(g,w,v,\ny,G,K,B),J=Sb(g,p,y,a),L=Nb(g,w,v,function(){M.procs.poll()},D,y,a),P=cc(g,w,v,y,a),V=Qb(g,w,v,L,P,y),M=Zb(g,p,w,v,G,K,L,V,{},A,J,B,D,z,C,a),p=Tb(g,V,M.procs.poll,D,l,w,v),W=M.next,Q=g.canvas,I=[],S=[],T=[],U=[a.onDestroy],R=null;Q&&(Q.addEventListener(\"webglcontextlost\",f,!1),Q.addEventListener(\"webglcontextrestored\",e,!1));var Y=V.setFBO=m({framebuffer:Z.define.call(null,1,\"framebuffer\")});n();l=O(m,{clear:function(a){if(\"framebuffer\"in a)if(a.framebuffer&&\"framebufferCube\"===a.framebuffer_reglType)for(var b=\n0;6>b;++b)Y(O({framebuffer:a.framebuffer.faces[b]},a),q);else Y(a,q);else q(null,a)},prop:Z.define.bind(null,1),context:Z.define.bind(null,2),\"this\":Z.define.bind(null,3),draw:m({}),buffer:function(a){return G.create(a,34962,!1,!1)},elements:function(a){return K.create(a,!1)},texture:L.create2D,cube:L.createCube,renderbuffer:P.create,framebuffer:V.create,framebufferCube:V.createCube,vao:A.createVAO,attributes:l,frame:u,on:function(a,b){var c;switch(a){case \"frame\":return u(b);case \"lost\":c=S;break;\ncase \"restore\":c=T;break;case \"destroy\":c=U}c.push(b);return{cancel:function(){for(var a=0;a<c.length;++a)if(c[a]===b){c[a]=c[c.length-1];c.pop();break}}}},limits:v,hasExtension:function(a){return 0<=v.extensions.indexOf(a.toLowerCase())},read:p,destroy:function(){I.length=0;d();Q&&(Q.removeEventListener(\"webglcontextlost\",f),Q.removeEventListener(\"webglcontextrestored\",e));J.clear();V.clear();P.clear();A.clear();L.clear();K.clear();G.clear();z&&z.clear();U.forEach(function(a){a()})},_gl:g,_refresh:n,\npoll:function(){k();z&&z.update()},now:t,stats:y,getCachedCode:function(){return C},preloadCachedCode:function(a){Object.entries(a).forEach(function(a){C[a[0]]=a[1]})}});a.onDone(null,l);return l}});\n\n\n/***/ }),\n\n/***/ 71665:\n/***/ (function(module, exports, __nested_webpack_require_7979118__) {\n\n/* eslint-disable node/no-deprecated-api */\nvar buffer = __nested_webpack_require_7979118__(12856)\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n\n\n/***/ }),\n\n/***/ 21630:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7980812__) {\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = (__nested_webpack_require_7980812__(15398).EventEmitter);\nvar inherits = __nested_webpack_require_7980812__(42018);\n\ninherits(Stream, EE);\nStream.Readable = __nested_webpack_require_7980812__(40410);\nStream.Writable = __nested_webpack_require_7980812__(37493);\nStream.Duplex = __nested_webpack_require_7980812__(37865);\nStream.Transform = __nested_webpack_require_7980812__(74308);\nStream.PassThrough = __nested_webpack_require_7980812__(66897);\nStream.finished = __nested_webpack_require_7980812__(12726)\nStream.pipeline = __nested_webpack_require_7980812__(10168)\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams.  Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n  EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n  var source = this;\n\n  function ondata(chunk) {\n    if (dest.writable) {\n      if (false === dest.write(chunk) && source.pause) {\n        source.pause();\n      }\n    }\n  }\n\n  source.on('data', ondata);\n\n  function ondrain() {\n    if (source.readable && source.resume) {\n      source.resume();\n    }\n  }\n\n  dest.on('drain', ondrain);\n\n  // If the 'end' option is not supplied, dest.end() will be called when\n  // source gets the 'end' or 'close' events.  Only dest.end() once.\n  if (!dest._isStdio && (!options || options.end !== false)) {\n    source.on('end', onend);\n    source.on('close', onclose);\n  }\n\n  var didOnEnd = false;\n  function onend() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    dest.end();\n  }\n\n\n  function onclose() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    if (typeof dest.destroy === 'function') dest.destroy();\n  }\n\n  // don't leave dangling pipes when there are errors.\n  function onerror(er) {\n    cleanup();\n    if (EE.listenerCount(this, 'error') === 0) {\n      throw er; // Unhandled stream error in pipe.\n    }\n  }\n\n  source.on('error', onerror);\n  dest.on('error', onerror);\n\n  // remove all the event listeners that were added.\n  function cleanup() {\n    source.removeListener('data', ondata);\n    dest.removeListener('drain', ondrain);\n\n    source.removeListener('end', onend);\n    source.removeListener('close', onclose);\n\n    source.removeListener('error', onerror);\n    dest.removeListener('error', onerror);\n\n    source.removeListener('end', cleanup);\n    source.removeListener('close', cleanup);\n\n    dest.removeListener('close', cleanup);\n  }\n\n  source.on('end', cleanup);\n  source.on('close', cleanup);\n\n  dest.on('close', cleanup);\n\n  dest.emit('pipe', source);\n\n  // Allow for unix-like usage: A.pipe(B).pipe(C)\n  return dest;\n};\n\n\n/***/ }),\n\n/***/ 74322:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  msg += \". Received type \".concat(typeof actual);\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.q = codes;\n\n\n/***/ }),\n\n/***/ 37865:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7988832__) {\n\n\"use strict\";\n/* provided dependency */ var process = __nested_webpack_require_7988832__(90386);\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n/*<replacement>*/\n\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n\n  for (var key in obj) {\n    keys.push(key);\n  }\n\n  return keys;\n};\n/*</replacement>*/\n\n\nmodule.exports = Duplex;\n\nvar Readable = __nested_webpack_require_7988832__(40410);\n\nvar Writable = __nested_webpack_require_7988832__(37493);\n\n__nested_webpack_require_7988832__(42018)(Duplex, Readable);\n\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\n\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n}); // the no-half-open enforcer\n\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return; // no more data can be written.\n  // But allow more writes to happen in this tick.\n\n  process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n  self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    } // backward compatibility, the user is explicitly\n    // managing destroyed\n\n\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});\n\n/***/ }),\n\n/***/ 66897:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7993401__) {\n\n\"use strict\";\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n\nmodule.exports = PassThrough;\n\nvar Transform = __nested_webpack_require_7993401__(74308);\n\n__nested_webpack_require_7993401__(42018)(PassThrough, Transform);\n\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};\n\n/***/ }),\n\n/***/ 40410:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_7995135__) {\n\n\"use strict\";\n/* provided dependency */ var process = __nested_webpack_require_7995135__(90386);\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nmodule.exports = Readable;\n/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = (__nested_webpack_require_7995135__(15398).EventEmitter);\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = __nested_webpack_require_7995135__(71405);\n/*</replacement>*/\n\n\nvar Buffer = (__nested_webpack_require_7995135__(12856).Buffer);\n\nvar OurUint8Array = __nested_webpack_require_7995135__.g.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*<replacement>*/\n\n\nvar debugUtil = __nested_webpack_require_7995135__(40964);\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\n\nvar BufferList = __nested_webpack_require_7995135__(31125);\n\nvar destroyImpl = __nested_webpack_require_7995135__(65756);\n\nvar _require = __nested_webpack_require_7995135__(56306),\n    getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = (__nested_webpack_require_7995135__(74322)/* .codes */ .q),\n    ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n    ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n    ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n    ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\n__nested_webpack_require_7995135__(42018)(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || __nested_webpack_require_7995135__(37865);\n  options = options || {}; // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n\n  this.sync = true; // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n  this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n  this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n  this.destroyed = false; // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n\n  this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n  this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = (__nested_webpack_require_7995135__(68019)/* .StringDecoder */ .s);\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\n\nfunction Readable(options) {\n  Duplex = Duplex || __nested_webpack_require_7995135__(37865);\n  if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n  this.readable = true;\n\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n\n  Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    } // backward compatibility, the user is explicitly\n    // managing destroyed\n\n\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  } // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n\n\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n\n  maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n  var er;\n\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n\n  return er;\n}\n\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = (__nested_webpack_require_7995135__(68019)/* .StringDecoder */ .s);\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n  this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n  var p = this._readableState.buffer.head;\n  var content = '';\n\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n\n  this._readableState.buffer.clear();\n\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n\n  return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n; // Don't have enough\n\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n\n  return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n\n  n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  } // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n  // if we need a readable event, then we need to do some reading.\n\n\n  var doRead = state.needReadable;\n  debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  } // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n\n\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n    if (state.length === 0) state.needReadable = true; // call internal read method\n\n    this._read(state.highWaterMark);\n\n    state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\n\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n\n  state.ended = true;\n\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\n\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  } // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n\n\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\n\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length) // didn't get any data, stop spinning.\n      break;\n  }\n\n  state.readingMore = false;\n} // abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n\n  function onend() {\n    debug('onend');\n    dest.end();\n  } // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n\n\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n\n  function cleanup() {\n    debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true; // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n\n  src.on('data', ondata);\n\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n\n      src.pause();\n    }\n  } // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n\n\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  } // Make sure our error handler is attached before userland ones.\n\n\n  prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n\n  dest.once('close', onclose);\n\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n\n  dest.once('finish', onfinish);\n\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  } // tell the dest that it's being piped to\n\n\n  dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n\n  return dest;\n};\n\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\n\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  }; // if we're not piping anywhere, then do nothing.\n\n  if (state.pipesCount === 0) return this; // just one destination.  most common case.\n\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes; // got a match.\n\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  } // slow case. multiple pipe destinations.\n\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n\n    for (var i = 0; i < len; i++) {\n      dests[i].emit('unpipe', this, {\n        hasUnpiped: false\n      });\n    }\n\n    return this;\n  } // try to find the right one.\n\n\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n\n  return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n\n  return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n\n  return res;\n};\n\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true; // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\n\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n\n  if (!state.flowing) {\n    debug('resume'); // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n\n  state.paused = false;\n  return this;\n};\n\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\n\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n\n  if (!state.reading) {\n    stream.read(0);\n  }\n\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n\n  this._readableState.paused = true;\n  return this;\n};\n\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n\n  while (state.flowing && stream.read() !== null) {\n    ;\n  }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n    var ret = _this.push(chunk);\n\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  }); // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  } // proxy certain important events.\n\n\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  } // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n\n\n  this._read = function (n) {\n    debug('wrapped _read', n);\n\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n\n  return this;\n};\n\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = __nested_webpack_require_7995135__(68221);\n    }\n\n    return createReadableStreamAsyncIterator(this);\n  };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\n\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\n\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\n\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = __nested_webpack_require_7995135__(31748);\n    }\n\n    return from(Readable, iterable, opts);\n  };\n}\n\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n\n  return -1;\n}\n\n/***/ }),\n\n/***/ 74308:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8031297__) {\n\n\"use strict\";\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n\nmodule.exports = Transform;\n\nvar _require$codes = (__nested_webpack_require_8031297__(74322)/* .codes */ .q),\n    ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n    ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n    ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n    ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = __nested_webpack_require_8031297__(37865);\n\n__nested_webpack_require_8031297__(42018)(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null) // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\n\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  }; // start out asking for a readable event once data is transformed.\n\n  this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n\n  this._readableState.sync = false;\n\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  } // When the writable side finishes, then flush out anything remaining.\n\n\n  this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n  var _this = this;\n\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\n\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null) // single equals check for both `null` and `undefined`\n    stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}\n\n/***/ }),\n\n/***/ 37493:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8039368__) {\n\n\"use strict\";\n/* provided dependency */ var process = __nested_webpack_require_8039368__(90386);\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n\nmodule.exports = Writable;\n/* <replacement> */\n\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n  var _this = this;\n\n  this.next = null;\n  this.entry = null;\n\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar internalUtil = {\n  deprecate: __nested_webpack_require_8039368__(20588)\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = __nested_webpack_require_8039368__(71405);\n/*</replacement>*/\n\n\nvar Buffer = (__nested_webpack_require_8039368__(12856).Buffer);\n\nvar OurUint8Array = __nested_webpack_require_8039368__.g.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = __nested_webpack_require_8039368__(65756);\n\nvar _require = __nested_webpack_require_8039368__(56306),\n    getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = (__nested_webpack_require_8039368__(74322)/* .codes */ .q),\n    ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n    ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n    ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n    ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n    ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n    ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n    ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n    ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\n__nested_webpack_require_8039368__(42018)(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || __nested_webpack_require_8039368__(37865);\n  options = options || {}; // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n  this.finalCalled = false; // drain event flag.\n\n  this.needDrain = false; // at the start of calling end()\n\n  this.ending = false; // when end() has been called, and returned\n\n  this.ended = false; // when 'finish' is emitted\n\n  this.finished = false; // has it been destroyed\n\n  this.destroyed = false; // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode; // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n\n  this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n\n  this.length = 0; // a flag to see when we're in the middle of a write.\n\n  this.writing = false; // when true all writes will be buffered until .uncork() call\n\n  this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n\n  this.sync = true; // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n\n  this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n  this.writecb = null; // the amount that is being written when _write is called.\n\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n\n  this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n\n  this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n  this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n  this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n  this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n  this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n\n  return out;\n};\n\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\n\nfunction Writable(options) {\n  Duplex = Duplex || __nested_webpack_require_8039368__(37865); // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n  this.writable = true;\n\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n\n  Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n\n  return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\n\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n\n  return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n  if (!ret) state.needDrain = true;\n\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n\n  return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er); // this can emit finish, and it will always happen\n    // after error\n\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er); // this can emit finish, but finish must\n    // always follow error\n\n    finishMaybe(stream, state);\n  }\n}\n\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n\n      if (state.writing) {\n        break;\n      }\n    }\n\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  } // ignore unnecessary end() calls.\n\n\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\n\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\n\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n\n  if (need) {\n    prefinish(stream, state);\n\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n\n  return need;\n}\n\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n\n  state.ended = true;\n  stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  } // reuse the free corkReq.\n\n\n  state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    } // backward compatibility, the user is explicitly\n    // managing destroyed\n\n\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n/***/ }),\n\n/***/ 68221:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8061377__) {\n\n\"use strict\";\n/* provided dependency */ var process = __nested_webpack_require_8061377__(90386);\n\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = __nested_webpack_require_8061377__(12726);\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\n\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n\n  if (resolve !== null) {\n    var data = iter[kStream].read(); // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\n\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n\n  next: function next() {\n    var _this = this;\n\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    } // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n\n\n    var lastPromise = this[kLastPromise];\n    var promise;\n\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n\n      promise = new Promise(this[kHandlePromise]);\n    }\n\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n\n      iterator[kError] = err;\n      return;\n    }\n\n    var resolve = iterator[kLastResolve];\n\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;\n\n/***/ }),\n\n/***/ 31125:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8067503__) {\n\n\"use strict\";\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = __nested_webpack_require_8067503__(12856),\n    Buffer = _require.Buffer;\n\nvar _require2 = __nested_webpack_require_8067503__(69862),\n    inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n\n      while (p = p.next) {\n        ret += s + p.data;\n      }\n\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n\n      return ret;\n    } // Consumes a specified amount of bytes or characters from the buffered data.\n\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    } // Consumes a specified amount of characters from the buffered data.\n\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n\n          break;\n        }\n\n        ++c;\n      }\n\n      this.length -= c;\n      return ret;\n    } // Consumes a specified amount of bytes from the buffered data.\n\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n\n          break;\n        }\n\n        ++c;\n      }\n\n      this.length -= c;\n      return ret;\n    } // Make sure the linked list only shows the minimal necessary information.\n\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread({}, options, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n\n  return BufferList;\n}();\n\n/***/ }),\n\n/***/ 65756:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8073959__) {\n\n\"use strict\";\n/* provided dependency */ var process = __nested_webpack_require_8073959__(90386);\n // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n  var _this = this;\n\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n\n    return this;\n  } // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n\n  return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\n\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\n\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};\n\n/***/ }),\n\n/***/ 12726:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8077245__) {\n\n\"use strict\";\n// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\nvar ERR_STREAM_PREMATURE_CLOSE = (__nested_webpack_require_8077245__(74322)/* .codes.ERR_STREAM_PREMATURE_CLOSE */ .q.ERR_STREAM_PREMATURE_CLOSE);\n\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    callback.apply(this, args);\n  };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n\n  var writableEnded = stream._writableState && stream._writableState.finished;\n\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n\n  var onclose = function onclose() {\n    var err;\n\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\n\nmodule.exports = eos;\n\n/***/ }),\n\n/***/ 31748:\n/***/ (function(module) {\n\nmodule.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n\n\n/***/ }),\n\n/***/ 10168:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8080640__) {\n\n\"use strict\";\n// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\nvar eos;\n\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\n\nvar _require$codes = (__nested_webpack_require_8080640__(74322)/* .codes */ .q),\n    ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n    ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\n\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = __nested_webpack_require_8080640__(12726);\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true; // request.destroy just do .end - .abort is what we want\n\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\n\nfunction call(fn) {\n  fn();\n}\n\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\n\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;\n\n/***/ }),\n\n/***/ 56306:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8083180__) {\n\n\"use strict\";\n\n\nvar ERR_INVALID_OPT_VALUE = (__nested_webpack_require_8083180__(74322)/* .codes.ERR_INVALID_OPT_VALUE */ .q.ERR_INVALID_OPT_VALUE);\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n\n    return Math.floor(hwm);\n  } // Default value\n\n\n  return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};\n\n/***/ }),\n\n/***/ 71405:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8084063__) {\n\nmodule.exports = __nested_webpack_require_8084063__(15398).EventEmitter;\n\n\n/***/ }),\n\n/***/ 68019:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_8084221__) {\n\n\"use strict\";\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\n/*<replacement>*/\n\nvar Buffer = (__nested_webpack_require_8084221__(71665).Buffer);\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.s = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}\n\n/***/ }),\n\n/***/ 90715:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8093781__) {\n\n\n/**\n * Module dependencies.\n */\n\nvar assert = __nested_webpack_require_8093781__(32791);\nvar debug = __nested_webpack_require_8093781__(41633)('stream-parser');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Parser;\n\n/**\n * Parser states.\n */\n\nvar INIT        = -1;\nvar BUFFERING   = 0;\nvar SKIPPING    = 1;\nvar PASSTHROUGH = 2;\n\n/**\n * The `Parser` stream mixin works with either `Writable` or `Transform` stream\n * instances/subclasses. Provides a convenient generic \"parsing\" API:\n *\n *   _bytes(n, cb) - buffers \"n\" bytes and then calls \"cb\" with the \"chunk\"\n *   _skipBytes(n, cb) - skips \"n\" bytes and then calls \"cb\" when done\n *\n * If you extend a `Transform` stream, then the `_passthrough()` function is also\n * added:\n *\n *   _passthrough(n, cb) - passes through \"n\" bytes untouched and then calls \"cb\"\n *\n * @param {Stream} stream Transform or Writable stream instance to extend\n * @api public\n */\n\nfunction Parser (stream) {\n  var isTransform = stream && 'function' == typeof stream._transform;\n  var isWritable = stream && 'function' == typeof stream._write;\n\n  if (!isTransform && !isWritable) throw new Error('must pass a Writable or Transform stream in');\n  debug('extending Parser into stream');\n\n  // Transform streams and Writable streams get `_bytes()` and `_skipBytes()`\n  stream._bytes = _bytes;\n  stream._skipBytes = _skipBytes;\n\n  // only Transform streams get the `_passthrough()` function\n  if (isTransform) stream._passthrough = _passthrough;\n\n  // take control of the streams2 callback functions for this stream\n  if (isTransform) {\n    stream._transform = transform;\n  } else {\n    stream._write = write;\n  }\n}\n\nfunction init (stream) {\n  debug('initializing parser stream');\n\n  // number of bytes left to parser for the next \"chunk\"\n  stream._parserBytesLeft = 0;\n\n  // array of Buffer instances that make up the next \"chunk\"\n  stream._parserBuffers = [];\n\n  // number of bytes parsed so far for the next \"chunk\"\n  stream._parserBuffered = 0;\n\n  // flag that keeps track of if what the parser should do with bytes received\n  stream._parserState = INIT;\n\n  // the callback for the next \"chunk\"\n  stream._parserCallback = null;\n\n  // XXX: backwards compat with the old Transform API... remove at some point..\n  if ('function' == typeof stream.push) {\n    stream._parserOutput = stream.push.bind(stream);\n  }\n\n  stream._parserInit = true;\n}\n\n/**\n * Buffers `n` bytes and then invokes `fn` once that amount has been collected.\n *\n * @param {Number} n the number of bytes to buffer\n * @param {Function} fn callback function to invoke when `n` bytes are buffered\n * @api public\n */\n\nfunction _bytes (n, fn) {\n  assert(!this._parserCallback, 'there is already a \"callback\" set!');\n  assert(isFinite(n) && n > 0, 'can only buffer a finite number of bytes > 0, got \"' + n + '\"');\n  if (!this._parserInit) init(this);\n  debug('buffering %o bytes', n);\n  this._parserBytesLeft = n;\n  this._parserCallback = fn;\n  this._parserState = BUFFERING;\n}\n\n/**\n * Skips over the next `n` bytes, then invokes `fn` once that amount has\n * been discarded.\n *\n * @param {Number} n the number of bytes to discard\n * @param {Function} fn callback function to invoke when `n` bytes have been skipped\n * @api public\n */\n\nfunction _skipBytes (n, fn) {\n  assert(!this._parserCallback, 'there is already a \"callback\" set!');\n  assert(n > 0, 'can only skip > 0 bytes, got \"' + n + '\"');\n  if (!this._parserInit) init(this);\n  debug('skipping %o bytes', n);\n  this._parserBytesLeft = n;\n  this._parserCallback = fn;\n  this._parserState = SKIPPING;\n}\n\n/**\n * Passes through `n` bytes to the readable side of this stream untouched,\n * then invokes `fn` once that amount has been passed through.\n *\n * @param {Number} n the number of bytes to pass through\n * @param {Function} fn callback function to invoke when `n` bytes have passed through\n * @api public\n */\n\nfunction _passthrough (n, fn) {\n  assert(!this._parserCallback, 'There is already a \"callback\" set!');\n  assert(n > 0, 'can only pass through > 0 bytes, got \"' + n + '\"');\n  if (!this._parserInit) init(this);\n  debug('passing through %o bytes', n);\n  this._parserBytesLeft = n;\n  this._parserCallback = fn;\n  this._parserState = PASSTHROUGH;\n}\n\n/**\n * The `_write()` callback function implementation.\n *\n * @api private\n */\n\nfunction write (chunk, encoding, fn) {\n  if (!this._parserInit) init(this);\n  debug('write(%o bytes)', chunk.length);\n\n  // XXX: old Writable stream API compat... remove at some point...\n  if ('function' == typeof encoding) fn = encoding;\n\n  data(this, chunk, null, fn);\n}\n\n/**\n * The `_transform()` callback function implementation.\n *\n * @api private\n */\n\n\nfunction transform (chunk, output, fn) {\n  if (!this._parserInit) init(this);\n  debug('transform(%o bytes)', chunk.length);\n\n  // XXX: old Transform stream API compat... remove at some point...\n  if ('function' != typeof output) {\n    output = this._parserOutput;\n  }\n\n  data(this, chunk, output, fn);\n}\n\n/**\n * The internal buffering/passthrough logic...\n *\n * This `_data` function get's \"trampolined\" to prevent stack overflows for tight\n * loops. This technique requires us to return a \"thunk\" function for any\n * synchronous action. Async stuff breaks the trampoline, but that's ok since it's\n * working with a new stack at that point anyway.\n *\n * @api private\n */\n\nfunction _data (stream, chunk, output, fn) {\n  if (stream._parserBytesLeft <= 0) {\n    return fn(new Error('got data but not currently parsing anything'));\n  }\n\n  if (chunk.length <= stream._parserBytesLeft) {\n    // small buffer fits within the \"_parserBytesLeft\" window\n    return function () {\n      return process(stream, chunk, output, fn);\n    };\n  } else {\n    // large buffer needs to be sliced on \"_parserBytesLeft\" and processed\n    return function () {\n      var b = chunk.slice(0, stream._parserBytesLeft);\n      return process(stream, b, output, function (err) {\n        if (err) return fn(err);\n        if (chunk.length > b.length) {\n          return function () {\n            return _data(stream, chunk.slice(b.length), output, fn);\n          };\n        }\n      });\n    };\n  }\n}\n\n/**\n * The internal `process` function gets called by the `data` function when\n * something \"interesting\" happens. This function takes care of buffering the\n * bytes when buffering, passing through the bytes when doing that, and invoking\n * the user callback when the number of bytes has been reached.\n *\n * @api private\n */\n\nfunction process (stream, chunk, output, fn) {\n  stream._parserBytesLeft -= chunk.length;\n  debug('%o bytes left for stream piece', stream._parserBytesLeft);\n\n  if (stream._parserState === BUFFERING) {\n    // buffer\n    stream._parserBuffers.push(chunk);\n    stream._parserBuffered += chunk.length;\n  } else if (stream._parserState === PASSTHROUGH) {\n    // passthrough\n    output(chunk);\n  }\n  // don't need to do anything for the SKIPPING case\n\n  if (0 === stream._parserBytesLeft) {\n    // done with stream \"piece\", invoke the callback\n    var cb = stream._parserCallback;\n    if (cb && stream._parserState === BUFFERING && stream._parserBuffers.length > 1) {\n      chunk = Buffer.concat(stream._parserBuffers, stream._parserBuffered);\n    }\n    if (stream._parserState !== BUFFERING) {\n      chunk = null;\n    }\n    stream._parserCallback = null;\n    stream._parserBuffered = 0;\n    stream._parserState = INIT;\n    stream._parserBuffers.splice(0); // empty\n\n    if (cb) {\n      var args = [];\n      if (chunk) {\n        // buffered\n        args.push(chunk);\n      } else {\n        // passthrough\n      }\n      if (output) {\n        // on a Transform stream, has \"output\" function\n        args.push(output);\n      }\n      var async = cb.length > args.length;\n      if (async) {\n        args.push(trampoline(fn));\n      }\n      // invoke cb\n      var rtn = cb.apply(stream, args);\n      if (!async || fn === rtn) return fn;\n    }\n  } else {\n    // need more bytes\n    return fn;\n  }\n}\n\nvar data = trampoline(_data);\n\n/**\n * Generic thunk-based \"trampoline\" helper function.\n *\n * @param {Function} input function\n * @return {Function} \"trampolined\" function\n * @api private\n */\n\nfunction trampoline (fn) {\n  return function () {\n    var result = fn.apply(this, arguments);\n\n    while ('function' == typeof result) {\n      result = result();\n    }\n\n    return result;\n  };\n}\n\n\n/***/ }),\n\n/***/ 41633:\n/***/ (function(module, exports, __nested_webpack_require_8102144__) {\n\n/* provided dependency */ var process = __nested_webpack_require_8102144__(90386);\n/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = __nested_webpack_require_8102144__(74469);\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n               && 'undefined' != typeof chrome.storage\n                  ? chrome.storage.local\n                  : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n  'lightseagreen',\n  'forestgreen',\n  'goldenrod',\n  'dodgerblue',\n  'darkorchid',\n  'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n  // NB: In an Electron preload script, document will be defined but not fully\n  // initialized. Since we know we're in Chrome, we'll just detect this case\n  // explicitly\n  if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n    return true;\n  }\n\n  // is webkit? http://stackoverflow.com/a/16459606/376773\n  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n  return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n    // is firebug? http://stackoverflow.com/a/398120/376773\n    (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n    // is firefox >= v31?\n    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n    // double check webkit in userAgent just in case we are in a worker\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n  try {\n    return JSON.stringify(v);\n  } catch (err) {\n    return '[UnexpectedJSONParseError]: ' + err.message;\n  }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n  var useColors = this.useColors;\n\n  args[0] = (useColors ? '%c' : '')\n    + this.namespace\n    + (useColors ? ' %c' : ' ')\n    + args[0]\n    + (useColors ? '%c ' : ' ')\n    + '+' + exports.humanize(this.diff);\n\n  if (!useColors) return;\n\n  var c = 'color: ' + this.color;\n  args.splice(1, 0, c, 'color: inherit')\n\n  // the final \"%c\" is somewhat tricky, because there could be other\n  // arguments passed either before or after the %c, so we need to\n  // figure out the correct index to insert the CSS into\n  var index = 0;\n  var lastC = 0;\n  args[0].replace(/%[a-zA-Z%]/g, function(match) {\n    if ('%%' === match) return;\n    index++;\n    if ('%c' === match) {\n      // we only are interested in the *last* %c\n      // (the user may have provided their own)\n      lastC = index;\n    }\n  });\n\n  args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n  // this hackery is required for IE8/9, where\n  // the `console.log` function doesn't have 'apply'\n  return 'object' === typeof console\n    && console.log\n    && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n  try {\n    if (null == namespaces) {\n      exports.storage.removeItem('debug');\n    } else {\n      exports.storage.debug = namespaces;\n    }\n  } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n  var r;\n  try {\n    r = exports.storage.debug;\n  } catch(e) {}\n\n  // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n  if (!r && typeof process !== 'undefined' && 'env' in process) {\n    r = process.env.DEBUG;\n  }\n\n  return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n  try {\n    return window.localStorage;\n  } catch (e) {}\n}\n\n\n/***/ }),\n\n/***/ 74469:\n/***/ (function(module, exports, __nested_webpack_require_8107037__) {\n\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = __nested_webpack_require_8107037__(11375);\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n  var hash = 0, i;\n\n  for (i in namespace) {\n    hash  = ((hash << 5) - hash) + namespace.charCodeAt(i);\n    hash |= 0; // Convert to 32bit integer\n  }\n\n  return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n  function debug() {\n    // disabled?\n    if (!debug.enabled) return;\n\n    var self = debug;\n\n    // set `diff` timestamp\n    var curr = +new Date();\n    var ms = curr - (prevTime || curr);\n    self.diff = ms;\n    self.prev = prevTime;\n    self.curr = curr;\n    prevTime = curr;\n\n    // turn the `arguments` into a proper Array\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n\n    args[0] = exports.coerce(args[0]);\n\n    if ('string' !== typeof args[0]) {\n      // anything else let's inspect with %O\n      args.unshift('%O');\n    }\n\n    // apply any `formatters` transformations\n    var index = 0;\n    args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n      // if we encounter an escaped % then don't increase the array index\n      if (match === '%%') return match;\n      index++;\n      var formatter = exports.formatters[format];\n      if ('function' === typeof formatter) {\n        var val = args[index];\n        match = formatter.call(self, val);\n\n        // now we need to remove `args[index]` since it's inlined in the `format`\n        args.splice(index, 1);\n        index--;\n      }\n      return match;\n    });\n\n    // apply env-specific formatting (colors, etc.)\n    exports.formatArgs.call(self, args);\n\n    var logFn = debug.log || exports.log || console.log.bind(console);\n    logFn.apply(self, args);\n  }\n\n  debug.namespace = namespace;\n  debug.enabled = exports.enabled(namespace);\n  debug.useColors = exports.useColors();\n  debug.color = selectColor(namespace);\n\n  // env-specific initialization logic for debug instances\n  if ('function' === typeof exports.init) {\n    exports.init(debug);\n  }\n\n  return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n  exports.save(namespaces);\n\n  exports.names = [];\n  exports.skips = [];\n\n  var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n  var len = split.length;\n\n  for (var i = 0; i < len; i++) {\n    if (!split[i]) continue; // ignore empty strings\n    namespaces = split[i].replace(/\\*/g, '.*?');\n    if (namespaces[0] === '-') {\n      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n    } else {\n      exports.names.push(new RegExp('^' + namespaces + '$'));\n    }\n  }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n  exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n  var i, len;\n  for (i = 0, len = exports.skips.length; i < len; i++) {\n    if (exports.skips[i].test(name)) {\n      return false;\n    }\n  }\n  for (i = 0, len = exports.names.length; i < len; i++) {\n    if (exports.names[i].test(name)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n  if (val instanceof Error) return val.stack || val.message;\n  return val;\n}\n\n\n/***/ }),\n\n/***/ 11375:\n/***/ (function(module) {\n\n/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isNaN(val) === false) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  if (ms >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (ms >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (ms >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (ms >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  return plural(ms, d, 'day') ||\n    plural(ms, h, 'hour') ||\n    plural(ms, m, 'minute') ||\n    plural(ms, s, 'second') ||\n    ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n  if (ms < n) {\n    return;\n  }\n  if (ms < n * 1.5) {\n    return Math.floor(ms / n) + ' ' + name;\n  }\n  return Math.ceil(ms / n) + ' ' + name + 's';\n}\n\n\n/***/ }),\n\n/***/ 99011:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8114361__) {\n\n\"use strict\";\n\r\n\r\nvar paren = __nested_webpack_require_8114361__(88641)\r\n\r\nmodule.exports = function splitBy (string, separator, o) {\r\n\tif (string == null) throw Error('First argument should be a string')\r\n\tif (separator == null) throw Error('Separator should be a string or a RegExp')\r\n\r\n\tif (!o) o = {}\r\n\telse if (typeof o === 'string' || Array.isArray(o)) {\r\n\t\to = {ignore: o}\r\n\t}\r\n\r\n\tif (o.escape == null) o.escape = true\r\n\tif (o.ignore == null) o.ignore = ['[]', '()', '{}', '<>', '\"\"', \"''\", '``', '“”', '«»']\r\n\telse {\r\n\t\tif (typeof o.ignore === 'string') {o.ignore = [o.ignore]}\r\n\r\n\t\to.ignore = o.ignore.map(function (pair) {\r\n\t\t\t// '\"' → '\"\"'\r\n\t\t\tif (pair.length === 1) pair = pair + pair\r\n\t\t\treturn pair\r\n\t\t})\r\n\t}\r\n\r\n\tvar tokens = paren.parse(string, {flat: true, brackets: o.ignore})\r\n\tvar str = tokens[0]\r\n\r\n\tvar parts = str.split(separator)\r\n\r\n\t// join parts separated by escape\r\n\tif (o.escape) {\r\n\t\tvar cleanParts = []\r\n\t\tfor (var i = 0; i < parts.length; i++) {\r\n\t\t\tvar prev = parts[i]\r\n\t\t\tvar part = parts[i + 1]\r\n\r\n\t\t\tif (prev[prev.length - 1] === '\\\\' && prev[prev.length - 2] !== '\\\\') {\r\n\t\t\t\tcleanParts.push(prev + separator + part)\r\n\t\t\t\ti++\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcleanParts.push(prev)\r\n\t\t\t}\r\n\t\t}\r\n\t\tparts = cleanParts\r\n\t}\r\n\r\n\t// open parens pack & apply unquotes, if any\r\n\tfor (var i = 0; i < parts.length; i++) {\r\n\t\ttokens[0] = parts[i]\r\n\t\tparts[i] = paren.stringify(tokens, {flat: true})\r\n\t}\r\n\r\n\treturn parts\r\n}\r\n\n\n/***/ }),\n\n/***/ 68664:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = stronglyConnectedComponents\n\nfunction stronglyConnectedComponents(adjList) {\n  var numVertices = adjList.length;\n  var index = new Array(numVertices)\n  var lowValue = new Array(numVertices)\n  var active = new Array(numVertices)\n  var child = new Array(numVertices)\n  var scc = new Array(numVertices)\n  var sccLinks = new Array(numVertices)\n  \n  //Initialize tables\n  for(var i=0; i<numVertices; ++i) {\n    index[i] = -1\n    lowValue[i] = 0\n    active[i] = false\n    child[i] = 0\n    scc[i] = -1\n    sccLinks[i] = []\n  }\n\n  // The strongConnect function\n  var count = 0\n  var components = []\n  var sccAdjList = []\n\n  function strongConnect(v) {\n    // To avoid running out of stack space, this emulates the recursive behaviour of the normal algorithm, effectively using T as the call stack.\n    var S = [v], T = [v]\n    index[v] = lowValue[v] = count\n    active[v] = true\n    count += 1\n    while(T.length > 0) {\n      v = T[T.length-1]\n      var e = adjList[v]\n      if (child[v] < e.length) { // If we're not done iterating over the children, first try finishing that.\n        for(var i=child[v]; i<e.length; ++i) { // Start where we left off.\n          var u = e[i]\n          if(index[u] < 0) {\n            index[u] = lowValue[u] = count\n            active[u] = true\n            count += 1\n            S.push(u)\n            T.push(u)\n            break // First recurse, then continue here (with the same child!).\n            // There is a slight change to Tarjan's algorithm here.\n            // Normally, after having recursed, we set lowValue like we do for an active child (although some variants of the algorithm do it slightly differently).\n            // Here, we only do so if the child we recursed on is still active.\n            // The reasoning is that if it is no longer active, it must have had a lowValue equal to its own index, which means that it is necessarily higher than our lowValue.\n          } else if (active[u]) {\n            lowValue[v] = Math.min(lowValue[v], lowValue[u])|0\n          }\n          if (scc[u] >= 0) {\n            // Node v is not yet assigned an scc, but once it is that scc can apparently reach scc[u].\n            sccLinks[v].push(scc[u])\n          }\n        }\n        child[v] = i // Remember where we left off.\n      } else { // If we're done iterating over the children, check whether we have an scc.\n        if(lowValue[v] === index[v]) { // TODO: It /might/ be true that T is always a prefix of S (at this point!!!), and if so, this could be used here.\n          var component = []\n          var links = [], linkCount = 0\n          for(var i=S.length-1; i>=0; --i) {\n            var w = S[i]\n            active[w] = false\n            component.push(w)\n            links.push(sccLinks[w])\n            linkCount += sccLinks[w].length\n            scc[w] = components.length\n            if(w === v) {\n              S.length = i\n              break\n            }\n          }\n          components.push(component)\n          var allLinks = new Array(linkCount)\n          for(var i=0; i<links.length; i++) {\n            for(var j=0; j<links[i].length; j++) {\n              allLinks[--linkCount] = links[i][j]\n            }\n          }\n          sccAdjList.push(allLinks)\n        }\n        T.pop() // Now we're finished exploring this particular node (normally corresponds to the return statement)\n      }\n    }\n  }\n\n  //Run strong connect starting from each vertex\n  for(var i=0; i<numVertices; ++i) {\n    if(index[i] < 0) {\n      strongConnect(i)\n    }\n  }\n  \n  // Compact sccAdjList\n  var newE\n  for(var i=0; i<sccAdjList.length; i++) {\n    var e = sccAdjList[i]\n    if (e.length === 0) continue\n    e.sort(function (a,b) { return a-b; })\n    newE = [e[0]]\n    for(var j=1; j<e.length; j++) {\n      if (e[j] !== e[j-1]) {\n        newE.push(e[j])\n      }\n    }\n    sccAdjList[i] = newE\n  }  \n\n  return {components: components, adjacencyList: sccAdjList}\n}\n\n\n/***/ }),\n\n/***/ 7095:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_8119875__) {\n\n\"use strict\";\n__nested_webpack_require_8119875__.r(__webpack_exports__);\nvar _slicedToArray = function () { function sliceIterator(arr, i) { 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; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar TAU = Math.PI * 2;\n\nvar mapToEllipse = function mapToEllipse(_ref, rx, ry, cosphi, sinphi, centerx, centery) {\n  var x = _ref.x,\n      y = _ref.y;\n\n  x *= rx;\n  y *= ry;\n\n  var xp = cosphi * x - sinphi * y;\n  var yp = sinphi * x + cosphi * y;\n\n  return {\n    x: xp + centerx,\n    y: yp + centery\n  };\n};\n\nvar approxUnitArc = function approxUnitArc(ang1, ang2) {\n  // If 90 degree circular arc, use a constant\n  // as derived from http://spencermortensen.com/articles/bezier-circle\n  var a = ang2 === 1.5707963267948966 ? 0.551915024494 : ang2 === -1.5707963267948966 ? -0.551915024494 : 4 / 3 * Math.tan(ang2 / 4);\n\n  var x1 = Math.cos(ang1);\n  var y1 = Math.sin(ang1);\n  var x2 = Math.cos(ang1 + ang2);\n  var y2 = Math.sin(ang1 + ang2);\n\n  return [{\n    x: x1 - y1 * a,\n    y: y1 + x1 * a\n  }, {\n    x: x2 + y2 * a,\n    y: y2 - x2 * a\n  }, {\n    x: x2,\n    y: y2\n  }];\n};\n\nvar vectorAngle = function vectorAngle(ux, uy, vx, vy) {\n  var sign = ux * vy - uy * vx < 0 ? -1 : 1;\n\n  var dot = ux * vx + uy * vy;\n\n  if (dot > 1) {\n    dot = 1;\n  }\n\n  if (dot < -1) {\n    dot = -1;\n  }\n\n  return sign * Math.acos(dot);\n};\n\nvar getArcCenter = function getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp) {\n  var rxsq = Math.pow(rx, 2);\n  var rysq = Math.pow(ry, 2);\n  var pxpsq = Math.pow(pxp, 2);\n  var pypsq = Math.pow(pyp, 2);\n\n  var radicant = rxsq * rysq - rxsq * pypsq - rysq * pxpsq;\n\n  if (radicant < 0) {\n    radicant = 0;\n  }\n\n  radicant /= rxsq * pypsq + rysq * pxpsq;\n  radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n\n  var centerxp = radicant * rx / ry * pyp;\n  var centeryp = radicant * -ry / rx * pxp;\n\n  var centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2;\n  var centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2;\n\n  var vx1 = (pxp - centerxp) / rx;\n  var vy1 = (pyp - centeryp) / ry;\n  var vx2 = (-pxp - centerxp) / rx;\n  var vy2 = (-pyp - centeryp) / ry;\n\n  var ang1 = vectorAngle(1, 0, vx1, vy1);\n  var ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n\n  if (sweepFlag === 0 && ang2 > 0) {\n    ang2 -= TAU;\n  }\n\n  if (sweepFlag === 1 && ang2 < 0) {\n    ang2 += TAU;\n  }\n\n  return [centerx, centery, ang1, ang2];\n};\n\nvar arcToBezier = function arcToBezier(_ref2) {\n  var px = _ref2.px,\n      py = _ref2.py,\n      cx = _ref2.cx,\n      cy = _ref2.cy,\n      rx = _ref2.rx,\n      ry = _ref2.ry,\n      _ref2$xAxisRotation = _ref2.xAxisRotation,\n      xAxisRotation = _ref2$xAxisRotation === undefined ? 0 : _ref2$xAxisRotation,\n      _ref2$largeArcFlag = _ref2.largeArcFlag,\n      largeArcFlag = _ref2$largeArcFlag === undefined ? 0 : _ref2$largeArcFlag,\n      _ref2$sweepFlag = _ref2.sweepFlag,\n      sweepFlag = _ref2$sweepFlag === undefined ? 0 : _ref2$sweepFlag;\n\n  var curves = [];\n\n  if (rx === 0 || ry === 0) {\n    return [];\n  }\n\n  var sinphi = Math.sin(xAxisRotation * TAU / 360);\n  var cosphi = Math.cos(xAxisRotation * TAU / 360);\n\n  var pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2;\n  var pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2;\n\n  if (pxp === 0 && pyp === 0) {\n    return [];\n  }\n\n  rx = Math.abs(rx);\n  ry = Math.abs(ry);\n\n  var lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) + Math.pow(pyp, 2) / Math.pow(ry, 2);\n\n  if (lambda > 1) {\n    rx *= Math.sqrt(lambda);\n    ry *= Math.sqrt(lambda);\n  }\n\n  var _getArcCenter = getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp),\n      _getArcCenter2 = _slicedToArray(_getArcCenter, 4),\n      centerx = _getArcCenter2[0],\n      centery = _getArcCenter2[1],\n      ang1 = _getArcCenter2[2],\n      ang2 = _getArcCenter2[3];\n\n  // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n  // 1.0000000001. This causes `segments` to be greater than one, which is an\n  // unecessary split, and adds extra points to the bezier curve. To alleviate\n  // this issue, we round to 1.0 when the ratio is close to 1.0.\n\n\n  var ratio = Math.abs(ang2) / (TAU / 4);\n  if (Math.abs(1.0 - ratio) < 0.0000001) {\n    ratio = 1.0;\n  }\n\n  var segments = Math.max(Math.ceil(ratio), 1);\n\n  ang2 /= segments;\n\n  for (var i = 0; i < segments; i++) {\n    curves.push(approxUnitArc(ang1, ang2));\n    ang1 += ang2;\n  }\n\n  return curves.map(function (curve) {\n    var _mapToEllipse = mapToEllipse(curve[0], rx, ry, cosphi, sinphi, centerx, centery),\n        x1 = _mapToEllipse.x,\n        y1 = _mapToEllipse.y;\n\n    var _mapToEllipse2 = mapToEllipse(curve[1], rx, ry, cosphi, sinphi, centerx, centery),\n        x2 = _mapToEllipse2.x,\n        y2 = _mapToEllipse2.y;\n\n    var _mapToEllipse3 = mapToEllipse(curve[2], rx, ry, cosphi, sinphi, centerx, centery),\n        x = _mapToEllipse3.x,\n        y = _mapToEllipse3.y;\n\n    return { x1: x1, y1: y1, x2: x2, y2: y2, x: x, y: y };\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (arcToBezier);\n\n/***/ }),\n\n/***/ 1750:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8125538__) {\n\n\"use strict\";\n\r\n\r\nvar parse = __nested_webpack_require_8125538__(95616)\r\nvar abs = __nested_webpack_require_8125538__(65185)\r\nvar normalize = __nested_webpack_require_8125538__(29988)\r\nvar isSvgPath = __nested_webpack_require_8125538__(89546)\r\nvar assert = __nested_webpack_require_8125538__(32791)\r\n\r\nmodule.exports = pathBounds\r\n\r\n\r\nfunction pathBounds(path) {\r\n  // ES6 string tpl call\r\n  if (Array.isArray(path) && path.length === 1 && typeof path[0] === 'string') path = path[0]\r\n\r\n  // svg path string\r\n  if (typeof path === 'string') {\r\n    assert(isSvgPath(path), 'String is not an SVG path.')\r\n    path = parse(path)\r\n  }\r\n\r\n  assert(Array.isArray(path), 'Argument should be a string or an array of path segments.')\r\n\r\n  path = abs(path)\r\n  path = normalize(path)\r\n\r\n  if (!path.length) return [0, 0, 0, 0]\r\n\r\n  var bounds = [Infinity, Infinity, -Infinity, -Infinity]\r\n\r\n  for (var i = 0, l = path.length; i < l; i++) {\r\n    var points = path[i].slice(1)\r\n\r\n    for (var j = 0; j < points.length; j += 2) {\r\n      if (points[j + 0] < bounds[0]) bounds[0] = points[j + 0]\r\n      if (points[j + 1] < bounds[1]) bounds[1] = points[j + 1]\r\n      if (points[j + 0] > bounds[2]) bounds[2] = points[j + 0]\r\n      if (points[j + 1] > bounds[3]) bounds[3] = points[j + 1]\r\n    }\r\n  }\r\n\r\n  return bounds\r\n}\r\n\n\n/***/ }),\n\n/***/ 29988:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8126870__) {\n\n\"use strict\";\n\r\n\r\nmodule.exports = normalize\r\n\r\nvar arcToCurve = __nested_webpack_require_8126870__(7095)\r\n\r\nfunction normalize(path){\r\n  // init state\r\n  var prev\r\n  var result = []\r\n  var bezierX = 0\r\n  var bezierY = 0\r\n  var startX = 0\r\n  var startY = 0\r\n  var quadX = null\r\n  var quadY = null\r\n  var x = 0\r\n  var y = 0\r\n\r\n  for (var i = 0, len = path.length; i < len; i++) {\r\n    var seg = path[i]\r\n    var command = seg[0]\r\n\r\n    switch (command) {\r\n      case 'M':\r\n        startX = seg[1]\r\n        startY = seg[2]\r\n        break\r\n      case 'A':\r\n        var curves = arcToCurve({\r\n          px: x,\r\n          py: y,\r\n          cx: seg[6],\r\n          cy:  seg[7],\r\n          rx: seg[1],\r\n          ry: seg[2],\r\n          xAxisRotation: seg[3],\r\n          largeArcFlag: seg[4],\r\n          sweepFlag: seg[5]\r\n        })\r\n\r\n        // null-curves\r\n        if (!curves.length) continue\r\n\r\n        for (var j = 0, c; j < curves.length; j++) {\r\n          c = curves[j]\r\n          seg = ['C', c.x1, c.y1, c.x2, c.y2, c.x, c.y]\r\n          if (j < curves.length - 1) result.push(seg)\r\n        }\r\n\r\n        break\r\n      case 'S':\r\n        // default control point\r\n        var cx = x\r\n        var cy = y\r\n        if (prev == 'C' || prev == 'S') {\r\n          cx += cx - bezierX // reflect the previous command's control\r\n          cy += cy - bezierY // point relative to the current point\r\n        }\r\n        seg = ['C', cx, cy, seg[1], seg[2], seg[3], seg[4]]\r\n        break\r\n      case 'T':\r\n        if (prev == 'Q' || prev == 'T') {\r\n          quadX = x * 2 - quadX // as with 'S' reflect previous control point\r\n          quadY = y * 2 - quadY\r\n        } else {\r\n          quadX = x\r\n          quadY = y\r\n        }\r\n        seg = quadratic(x, y, quadX, quadY, seg[1], seg[2])\r\n        break\r\n      case 'Q':\r\n        quadX = seg[1]\r\n        quadY = seg[2]\r\n        seg = quadratic(x, y, seg[1], seg[2], seg[3], seg[4])\r\n        break\r\n      case 'L':\r\n        seg = line(x, y, seg[1], seg[2])\r\n        break\r\n      case 'H':\r\n        seg = line(x, y, seg[1], y)\r\n        break\r\n      case 'V':\r\n        seg = line(x, y, x, seg[1])\r\n        break\r\n      case 'Z':\r\n        seg = line(x, y, startX, startY)\r\n        break\r\n    }\r\n\r\n    // update state\r\n    prev = command\r\n    x = seg[seg.length - 2]\r\n    y = seg[seg.length - 1]\r\n    if (seg.length > 4) {\r\n      bezierX = seg[seg.length - 4]\r\n      bezierY = seg[seg.length - 3]\r\n    } else {\r\n      bezierX = x\r\n      bezierY = y\r\n    }\r\n    result.push(seg)\r\n  }\r\n\r\n  return result\r\n}\r\n\r\nfunction line(x1, y1, x2, y2){\r\n  return ['C', x1, y1, x2, y2, x2, y2]\r\n}\r\n\r\nfunction quadratic(x1, y1, cx, cy, x2, y2){\r\n  return [\r\n    'C',\r\n    x1/3 + (2/3) * cx,\r\n    y1/3 + (2/3) * cy,\r\n    x2/3 + (2/3) * cx,\r\n    y2/3 + (2/3) * cy,\r\n    x2,\r\n    y2\r\n  ]\r\n}\r\n\n\n/***/ }),\n\n/***/ 82019:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8129760__) {\n\n\"use strict\";\n\r\n\r\nvar pathBounds = __nested_webpack_require_8129760__(1750)\r\nvar parsePath = __nested_webpack_require_8129760__(95616)\r\nvar drawPath = __nested_webpack_require_8129760__(31457)\r\nvar isSvgPath = __nested_webpack_require_8129760__(89546)\r\nvar bitmapSdf = __nested_webpack_require_8129760__(44781)\r\n\r\nvar canvas = document.createElement('canvas')\r\nvar ctx = canvas.getContext('2d')\r\n\r\n\r\nmodule.exports = pathSdf\r\n\r\n\r\nfunction pathSdf (path, options) {\r\n\tif (!isSvgPath(path)) throw Error('Argument should be valid svg path string')\r\n\r\n\tif (!options) options = {}\r\n\r\n\tvar w, h\r\n\tif (options.shape) {\r\n\t\tw = options.shape[0]\r\n\t\th = options.shape[1]\r\n\t}\r\n\telse {\r\n\t\tw = canvas.width = options.w || options.width || 200\r\n\t\th = canvas.height = options.h || options.height || 200\r\n\t}\r\n\tvar size = Math.min(w, h)\r\n\r\n\tvar stroke = options.stroke || 0\r\n\r\n\tvar viewbox = options.viewbox || options.viewBox || pathBounds(path)\r\n\tvar scale = [w / (viewbox[2] - viewbox[0]), h / (viewbox[3] - viewbox[1])]\r\n\tvar maxScale = Math.min(scale[0] || 0, scale[1] || 0) / 2\r\n\r\n\t//clear ctx\r\n\tctx.fillStyle = 'black'\r\n\tctx.fillRect(0, 0, w, h)\r\n\r\n\tctx.fillStyle = 'white'\r\n\r\n\tif (stroke)\t{\r\n\t\tif (typeof stroke != 'number') stroke = 1\r\n\t\tif (stroke > 0) {\r\n\t\t\tctx.strokeStyle = 'white'\r\n\t\t}\r\n\t\telse {\r\n\t\t\tctx.strokeStyle = 'black'\r\n\t\t}\r\n\r\n\t\tctx.lineWidth = Math.abs(stroke)\r\n\t}\r\n\r\n\tctx.translate(w * .5, h * .5)\r\n\tctx.scale(maxScale, maxScale)\r\n\r\n\t//if canvas svg paths api is available\r\n\tif (isPath2DSupported()) {\r\n\t\tvar path2d = new Path2D(path)\r\n\t\tctx.fill(path2d)\r\n\t\tstroke && ctx.stroke(path2d)\r\n\t}\r\n\t//fallback to bezier-curves\r\n\telse {\r\n\t\tvar segments = parsePath(path)\r\n\t\tdrawPath(ctx, segments)\r\n\t\tctx.fill()\r\n\t\tstroke && ctx.stroke()\r\n\t}\r\n\r\n\tctx.setTransform(1, 0, 0, 1, 0, 0);\r\n\r\n\tvar data = bitmapSdf(ctx, {\r\n\t\tcutoff: options.cutoff != null ? options.cutoff : .5,\r\n\t\tradius: options.radius != null ? options.radius : size * .5\r\n\t})\r\n\r\n\treturn data\r\n}\r\n\r\nvar path2DSupported\r\n\r\nfunction isPath2DSupported () {\r\n\tif (path2DSupported != null) return path2DSupported\r\n\r\n\tvar ctx = document.createElement('canvas').getContext('2d')\r\n\tctx.canvas.width = ctx.canvas.height = 1\r\n\r\n\tif (!window.Path2D) return path2DSupported = false\r\n\r\n\tvar path = new Path2D('M0,0h1v1h-1v-1Z')\r\n\r\n\tctx.fillStyle = 'black'\r\n\tctx.fill(path)\r\n\r\n\tvar idata = ctx.getImageData(0,0,1,1)\r\n\r\n\treturn path2DSupported = idata && idata.data && idata.data[3] === 255\r\n}\r\n\n\n/***/ }),\n\n/***/ 84267:\n/***/ (function(module, exports, __nested_webpack_require_8132208__) {\n\nvar __WEBPACK_AMD_DEFINE_RESULT__;// TinyColor v1.4.2\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function(Math) {\n\nvar trimLeft = /^\\s+/,\n    trimRight = /\\s+$/,\n    tinyCounter = 0,\n    mathRound = Math.round,\n    mathMin = Math.min,\n    mathMax = Math.max,\n    mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n    color = (color) ? color : '';\n    opts = opts || { };\n\n    // If input is already a tinycolor, return itself\n    if (color instanceof tinycolor) {\n       return color;\n    }\n    // If we are called as a function, call using new instead\n    if (!(this instanceof tinycolor)) {\n        return new tinycolor(color, opts);\n    }\n\n    var rgb = inputToRGB(color);\n    this._originalInput = color,\n    this._r = rgb.r,\n    this._g = rgb.g,\n    this._b = rgb.b,\n    this._a = rgb.a,\n    this._roundA = mathRound(100*this._a) / 100,\n    this._format = opts.format || rgb.format;\n    this._gradientType = opts.gradientType;\n\n    // Don't let the range of [0,255] come back in [0,1].\n    // Potentially lose a little bit of precision here, but will fix issues where\n    // .5 gets interpreted as half of the total, instead of half of 1\n    // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n    if (this._r < 1) { this._r = mathRound(this._r); }\n    if (this._g < 1) { this._g = mathRound(this._g); }\n    if (this._b < 1) { this._b = mathRound(this._b); }\n\n    this._ok = rgb.ok;\n    this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n    isDark: function() {\n        return this.getBrightness() < 128;\n    },\n    isLight: function() {\n        return !this.isDark();\n    },\n    isValid: function() {\n        return this._ok;\n    },\n    getOriginalInput: function() {\n      return this._originalInput;\n    },\n    getFormat: function() {\n        return this._format;\n    },\n    getAlpha: function() {\n        return this._a;\n    },\n    getBrightness: function() {\n        //http://www.w3.org/TR/AERT#color-contrast\n        var rgb = this.toRgb();\n        return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n    },\n    getLuminance: function() {\n        //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n        var rgb = this.toRgb();\n        var RsRGB, GsRGB, BsRGB, R, G, B;\n        RsRGB = rgb.r/255;\n        GsRGB = rgb.g/255;\n        BsRGB = rgb.b/255;\n\n        if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n        if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n        if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n        return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n    },\n    setAlpha: function(value) {\n        this._a = boundAlpha(value);\n        this._roundA = mathRound(100*this._a) / 100;\n        return this;\n    },\n    toHsv: function() {\n        var hsv = rgbToHsv(this._r, this._g, this._b);\n        return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n    },\n    toHsvString: function() {\n        var hsv = rgbToHsv(this._r, this._g, this._b);\n        var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n        return (this._a == 1) ?\n          \"hsv(\"  + h + \", \" + s + \"%, \" + v + \"%)\" :\n          \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n    },\n    toHsl: function() {\n        var hsl = rgbToHsl(this._r, this._g, this._b);\n        return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n    },\n    toHslString: function() {\n        var hsl = rgbToHsl(this._r, this._g, this._b);\n        var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n        return (this._a == 1) ?\n          \"hsl(\"  + h + \", \" + s + \"%, \" + l + \"%)\" :\n          \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n    },\n    toHex: function(allow3Char) {\n        return rgbToHex(this._r, this._g, this._b, allow3Char);\n    },\n    toHexString: function(allow3Char) {\n        return '#' + this.toHex(allow3Char);\n    },\n    toHex8: function(allow4Char) {\n        return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n    },\n    toHex8String: function(allow4Char) {\n        return '#' + this.toHex8(allow4Char);\n    },\n    toRgb: function() {\n        return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n    },\n    toRgbString: function() {\n        return (this._a == 1) ?\n          \"rgb(\"  + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n          \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n    },\n    toPercentageRgb: function() {\n        return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n    },\n    toPercentageRgbString: function() {\n        return (this._a == 1) ?\n          \"rgb(\"  + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n          \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n    },\n    toName: function() {\n        if (this._a === 0) {\n            return \"transparent\";\n        }\n\n        if (this._a < 1) {\n            return false;\n        }\n\n        return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n    },\n    toFilter: function(secondColor) {\n        var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n        var secondHex8String = hex8String;\n        var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n        if (secondColor) {\n            var s = tinycolor(secondColor);\n            secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n        }\n\n        return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n    },\n    toString: function(format) {\n        var formatSet = !!format;\n        format = format || this._format;\n\n        var formattedString = false;\n        var hasAlpha = this._a < 1 && this._a >= 0;\n        var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n        if (needsAlphaFormat) {\n            // Special case for \"transparent\", all other non-alpha formats\n            // will return rgba when there is transparency.\n            if (format === \"name\" && this._a === 0) {\n                return this.toName();\n            }\n            return this.toRgbString();\n        }\n        if (format === \"rgb\") {\n            formattedString = this.toRgbString();\n        }\n        if (format === \"prgb\") {\n            formattedString = this.toPercentageRgbString();\n        }\n        if (format === \"hex\" || format === \"hex6\") {\n            formattedString = this.toHexString();\n        }\n        if (format === \"hex3\") {\n            formattedString = this.toHexString(true);\n        }\n        if (format === \"hex4\") {\n            formattedString = this.toHex8String(true);\n        }\n        if (format === \"hex8\") {\n            formattedString = this.toHex8String();\n        }\n        if (format === \"name\") {\n            formattedString = this.toName();\n        }\n        if (format === \"hsl\") {\n            formattedString = this.toHslString();\n        }\n        if (format === \"hsv\") {\n            formattedString = this.toHsvString();\n        }\n\n        return formattedString || this.toHexString();\n    },\n    clone: function() {\n        return tinycolor(this.toString());\n    },\n\n    _applyModification: function(fn, args) {\n        var color = fn.apply(null, [this].concat([].slice.call(args)));\n        this._r = color._r;\n        this._g = color._g;\n        this._b = color._b;\n        this.setAlpha(color._a);\n        return this;\n    },\n    lighten: function() {\n        return this._applyModification(lighten, arguments);\n    },\n    brighten: function() {\n        return this._applyModification(brighten, arguments);\n    },\n    darken: function() {\n        return this._applyModification(darken, arguments);\n    },\n    desaturate: function() {\n        return this._applyModification(desaturate, arguments);\n    },\n    saturate: function() {\n        return this._applyModification(saturate, arguments);\n    },\n    greyscale: function() {\n        return this._applyModification(greyscale, arguments);\n    },\n    spin: function() {\n        return this._applyModification(spin, arguments);\n    },\n\n    _applyCombination: function(fn, args) {\n        return fn.apply(null, [this].concat([].slice.call(args)));\n    },\n    analogous: function() {\n        return this._applyCombination(analogous, arguments);\n    },\n    complement: function() {\n        return this._applyCombination(complement, arguments);\n    },\n    monochromatic: function() {\n        return this._applyCombination(monochromatic, arguments);\n    },\n    splitcomplement: function() {\n        return this._applyCombination(splitcomplement, arguments);\n    },\n    triad: function() {\n        return this._applyCombination(triad, arguments);\n    },\n    tetrad: function() {\n        return this._applyCombination(tetrad, arguments);\n    }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n    if (typeof color == \"object\") {\n        var newColor = {};\n        for (var i in color) {\n            if (color.hasOwnProperty(i)) {\n                if (i === \"a\") {\n                    newColor[i] = color[i];\n                }\n                else {\n                    newColor[i] = convertToPercentage(color[i]);\n                }\n            }\n        }\n        color = newColor;\n    }\n\n    return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n//     \"red\"\n//     \"#f00\" or \"f00\"\n//     \"#ff0000\" or \"ff0000\"\n//     \"#ff000000\" or \"ff000000\"\n//     \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n//     \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n//     \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n//     \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n//     \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n//     \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n//     \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n    var rgb = { r: 0, g: 0, b: 0 };\n    var a = 1;\n    var s = null;\n    var v = null;\n    var l = null;\n    var ok = false;\n    var format = false;\n\n    if (typeof color == \"string\") {\n        color = stringInputToObject(color);\n    }\n\n    if (typeof color == \"object\") {\n        if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n            rgb = rgbToRgb(color.r, color.g, color.b);\n            ok = true;\n            format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n            s = convertToPercentage(color.s);\n            v = convertToPercentage(color.v);\n            rgb = hsvToRgb(color.h, s, v);\n            ok = true;\n            format = \"hsv\";\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n            s = convertToPercentage(color.s);\n            l = convertToPercentage(color.l);\n            rgb = hslToRgb(color.h, s, l);\n            ok = true;\n            format = \"hsl\";\n        }\n\n        if (color.hasOwnProperty(\"a\")) {\n            a = color.a;\n        }\n    }\n\n    a = boundAlpha(a);\n\n    return {\n        ok: ok,\n        format: color.format || format,\n        r: mathMin(255, mathMax(rgb.r, 0)),\n        g: mathMin(255, mathMax(rgb.g, 0)),\n        b: mathMin(255, mathMax(rgb.b, 0)),\n        a: a\n    };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n    return {\n        r: bound01(r, 255) * 255,\n        g: bound01(g, 255) * 255,\n        b: bound01(b, 255) * 255\n    };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n\n    var max = mathMax(r, g, b), min = mathMin(r, g, b);\n    var h, s, l = (max + min) / 2;\n\n    if(max == min) {\n        h = s = 0; // achromatic\n    }\n    else {\n        var d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n        switch(max) {\n            case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n            case g: h = (b - r) / d + 2; break;\n            case b: h = (r - g) / d + 4; break;\n        }\n\n        h /= 6;\n    }\n\n    return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n    var r, g, b;\n\n    h = bound01(h, 360);\n    s = bound01(s, 100);\n    l = bound01(l, 100);\n\n    function hue2rgb(p, q, t) {\n        if(t < 0) t += 1;\n        if(t > 1) t -= 1;\n        if(t < 1/6) return p + (q - p) * 6 * t;\n        if(t < 1/2) return q;\n        if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n        return p;\n    }\n\n    if(s === 0) {\n        r = g = b = l; // achromatic\n    }\n    else {\n        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        var p = 2 * l - q;\n        r = hue2rgb(p, q, h + 1/3);\n        g = hue2rgb(p, q, h);\n        b = hue2rgb(p, q, h - 1/3);\n    }\n\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n\n    var max = mathMax(r, g, b), min = mathMin(r, g, b);\n    var h, s, v = max;\n\n    var d = max - min;\n    s = max === 0 ? 0 : d / max;\n\n    if(max == min) {\n        h = 0; // achromatic\n    }\n    else {\n        switch(max) {\n            case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n            case g: h = (b - r) / d + 2; break;\n            case b: h = (r - g) / d + 4; break;\n        }\n        h /= 6;\n    }\n    return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n    h = bound01(h, 360) * 6;\n    s = bound01(s, 100);\n    v = bound01(v, 100);\n\n    var i = Math.floor(h),\n        f = h - i,\n        p = v * (1 - s),\n        q = v * (1 - f * s),\n        t = v * (1 - (1 - f) * s),\n        mod = i % 6,\n        r = [v, q, p, p, t, v][mod],\n        g = [t, v, v, q, p, p][mod],\n        b = [p, p, t, v, v, q][mod];\n\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n    var hex = [\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16))\n    ];\n\n    // Return a 3 character hex if possible\n    if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n    }\n\n    return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n    var hex = [\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16)),\n        pad2(convertDecimalToHex(a))\n    ];\n\n    // Return a 4 character hex if possible\n    if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n    }\n\n    return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n    var hex = [\n        pad2(convertDecimalToHex(a)),\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16))\n    ];\n\n    return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n    if (!color1 || !color2) { return false; }\n    return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n    return tinycolor.fromRatio({\n        r: mathRandom(),\n        g: mathRandom(),\n        b: mathRandom()\n    });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction desaturate(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.s -= amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.s += amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n    return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.l += amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var rgb = tinycolor(color).toRgb();\n    rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n    rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n    rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n    return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.l -= amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n    var hsl = tinycolor(color).toHsl();\n    var hue = (hsl.h + amount) % 360;\n    hsl.h = hue < 0 ? 360 + hue : hue;\n    return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction complement(color) {\n    var hsl = tinycolor(color).toHsl();\n    hsl.h = (hsl.h + 180) % 360;\n    return tinycolor(hsl);\n}\n\nfunction triad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n    ];\n}\n\nfunction tetrad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n    ];\n}\n\nfunction splitcomplement(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n        tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n    ];\n}\n\nfunction analogous(color, results, slices) {\n    results = results || 6;\n    slices = slices || 30;\n\n    var hsl = tinycolor(color).toHsl();\n    var part = 360 / slices;\n    var ret = [tinycolor(color)];\n\n    for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n        hsl.h = (hsl.h + part) % 360;\n        ret.push(tinycolor(hsl));\n    }\n    return ret;\n}\n\nfunction monochromatic(color, results) {\n    results = results || 6;\n    var hsv = tinycolor(color).toHsv();\n    var h = hsv.h, s = hsv.s, v = hsv.v;\n    var ret = [];\n    var modification = 1 / results;\n\n    while (results--) {\n        ret.push(tinycolor({ h: h, s: s, v: v}));\n        v = (v + modification) % 1;\n    }\n\n    return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n    amount = (amount === 0) ? 0 : (amount || 50);\n\n    var rgb1 = tinycolor(color1).toRgb();\n    var rgb2 = tinycolor(color2).toRgb();\n\n    var p = amount / 100;\n\n    var rgba = {\n        r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n        g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n        b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n        a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n    };\n\n    return tinycolor(rgba);\n};\n\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function(color1, color2) {\n    var c1 = tinycolor(color1);\n    var c2 = tinycolor(color2);\n    return (Math.max(c1.getLuminance(),c2.getLuminance())+0.05) / (Math.min(c1.getLuminance(),c2.getLuminance())+0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n//      the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n//      the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n//    tinycolor.isReadable(\"#000\", \"#111\") => false\n//    tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n    var readability = tinycolor.readability(color1, color2);\n    var wcag2Parms, out;\n\n    out = false;\n\n    wcag2Parms = validateWCAG2Parms(wcag2);\n    switch (wcag2Parms.level + wcag2Parms.size) {\n        case \"AAsmall\":\n        case \"AAAlarge\":\n            out = readability >= 4.5;\n            break;\n        case \"AAlarge\":\n            out = readability >= 3;\n            break;\n        case \"AAAsmall\":\n            out = readability >= 7;\n            break;\n    }\n    return out;\n\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString();  // \"#ffffff\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n    var bestColor = null;\n    var bestScore = 0;\n    var readability;\n    var includeFallbackColors, level, size ;\n    args = args || {};\n    includeFallbackColors = args.includeFallbackColors ;\n    level = args.level;\n    size = args.size;\n\n    for (var i= 0; i < colorList.length ; i++) {\n        readability = tinycolor.readability(baseColor, colorList[i]);\n        if (readability > bestScore) {\n            bestScore = readability;\n            bestColor = tinycolor(colorList[i]);\n        }\n    }\n\n    if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n        return bestColor;\n    }\n    else {\n        args.includeFallbackColors=false;\n        return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n    }\n};\n\n\n// Big List of Colors\n// ------------------\n// <http://www.w3.org/TR/css3-color/#svg-color>\nvar names = tinycolor.names = {\n    aliceblue: \"f0f8ff\",\n    antiquewhite: \"faebd7\",\n    aqua: \"0ff\",\n    aquamarine: \"7fffd4\",\n    azure: \"f0ffff\",\n    beige: \"f5f5dc\",\n    bisque: \"ffe4c4\",\n    black: \"000\",\n    blanchedalmond: \"ffebcd\",\n    blue: \"00f\",\n    blueviolet: \"8a2be2\",\n    brown: \"a52a2a\",\n    burlywood: \"deb887\",\n    burntsienna: \"ea7e5d\",\n    cadetblue: \"5f9ea0\",\n    chartreuse: \"7fff00\",\n    chocolate: \"d2691e\",\n    coral: \"ff7f50\",\n    cornflowerblue: \"6495ed\",\n    cornsilk: \"fff8dc\",\n    crimson: \"dc143c\",\n    cyan: \"0ff\",\n    darkblue: \"00008b\",\n    darkcyan: \"008b8b\",\n    darkgoldenrod: \"b8860b\",\n    darkgray: \"a9a9a9\",\n    darkgreen: \"006400\",\n    darkgrey: \"a9a9a9\",\n    darkkhaki: \"bdb76b\",\n    darkmagenta: \"8b008b\",\n    darkolivegreen: \"556b2f\",\n    darkorange: \"ff8c00\",\n    darkorchid: \"9932cc\",\n    darkred: \"8b0000\",\n    darksalmon: \"e9967a\",\n    darkseagreen: \"8fbc8f\",\n    darkslateblue: \"483d8b\",\n    darkslategray: \"2f4f4f\",\n    darkslategrey: \"2f4f4f\",\n    darkturquoise: \"00ced1\",\n    darkviolet: \"9400d3\",\n    deeppink: \"ff1493\",\n    deepskyblue: \"00bfff\",\n    dimgray: \"696969\",\n    dimgrey: \"696969\",\n    dodgerblue: \"1e90ff\",\n    firebrick: \"b22222\",\n    floralwhite: \"fffaf0\",\n    forestgreen: \"228b22\",\n    fuchsia: \"f0f\",\n    gainsboro: \"dcdcdc\",\n    ghostwhite: \"f8f8ff\",\n    gold: \"ffd700\",\n    goldenrod: \"daa520\",\n    gray: \"808080\",\n    green: \"008000\",\n    greenyellow: \"adff2f\",\n    grey: \"808080\",\n    honeydew: \"f0fff0\",\n    hotpink: \"ff69b4\",\n    indianred: \"cd5c5c\",\n    indigo: \"4b0082\",\n    ivory: \"fffff0\",\n    khaki: \"f0e68c\",\n    lavender: \"e6e6fa\",\n    lavenderblush: \"fff0f5\",\n    lawngreen: \"7cfc00\",\n    lemonchiffon: \"fffacd\",\n    lightblue: \"add8e6\",\n    lightcoral: \"f08080\",\n    lightcyan: \"e0ffff\",\n    lightgoldenrodyellow: \"fafad2\",\n    lightgray: \"d3d3d3\",\n    lightgreen: \"90ee90\",\n    lightgrey: \"d3d3d3\",\n    lightpink: \"ffb6c1\",\n    lightsalmon: \"ffa07a\",\n    lightseagreen: \"20b2aa\",\n    lightskyblue: \"87cefa\",\n    lightslategray: \"789\",\n    lightslategrey: \"789\",\n    lightsteelblue: \"b0c4de\",\n    lightyellow: \"ffffe0\",\n    lime: \"0f0\",\n    limegreen: \"32cd32\",\n    linen: \"faf0e6\",\n    magenta: \"f0f\",\n    maroon: \"800000\",\n    mediumaquamarine: \"66cdaa\",\n    mediumblue: \"0000cd\",\n    mediumorchid: \"ba55d3\",\n    mediumpurple: \"9370db\",\n    mediumseagreen: \"3cb371\",\n    mediumslateblue: \"7b68ee\",\n    mediumspringgreen: \"00fa9a\",\n    mediumturquoise: \"48d1cc\",\n    mediumvioletred: \"c71585\",\n    midnightblue: \"191970\",\n    mintcream: \"f5fffa\",\n    mistyrose: \"ffe4e1\",\n    moccasin: \"ffe4b5\",\n    navajowhite: \"ffdead\",\n    navy: \"000080\",\n    oldlace: \"fdf5e6\",\n    olive: \"808000\",\n    olivedrab: \"6b8e23\",\n    orange: \"ffa500\",\n    orangered: \"ff4500\",\n    orchid: \"da70d6\",\n    palegoldenrod: \"eee8aa\",\n    palegreen: \"98fb98\",\n    paleturquoise: \"afeeee\",\n    palevioletred: \"db7093\",\n    papayawhip: \"ffefd5\",\n    peachpuff: \"ffdab9\",\n    peru: \"cd853f\",\n    pink: \"ffc0cb\",\n    plum: \"dda0dd\",\n    powderblue: \"b0e0e6\",\n    purple: \"800080\",\n    rebeccapurple: \"663399\",\n    red: \"f00\",\n    rosybrown: \"bc8f8f\",\n    royalblue: \"4169e1\",\n    saddlebrown: \"8b4513\",\n    salmon: \"fa8072\",\n    sandybrown: \"f4a460\",\n    seagreen: \"2e8b57\",\n    seashell: \"fff5ee\",\n    sienna: \"a0522d\",\n    silver: \"c0c0c0\",\n    skyblue: \"87ceeb\",\n    slateblue: \"6a5acd\",\n    slategray: \"708090\",\n    slategrey: \"708090\",\n    snow: \"fffafa\",\n    springgreen: \"00ff7f\",\n    steelblue: \"4682b4\",\n    tan: \"d2b48c\",\n    teal: \"008080\",\n    thistle: \"d8bfd8\",\n    tomato: \"ff6347\",\n    turquoise: \"40e0d0\",\n    violet: \"ee82ee\",\n    wheat: \"f5deb3\",\n    white: \"fff\",\n    whitesmoke: \"f5f5f5\",\n    yellow: \"ff0\",\n    yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n    var flipped = { };\n    for (var i in o) {\n        if (o.hasOwnProperty(i)) {\n            flipped[o[i]] = i;\n        }\n    }\n    return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n    a = parseFloat(a);\n\n    if (isNaN(a) || a < 0 || a > 1) {\n        a = 1;\n    }\n\n    return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n    if (isOnePointZero(n)) { n = \"100%\"; }\n\n    var processPercent = isPercentage(n);\n    n = mathMin(max, mathMax(0, parseFloat(n)));\n\n    // Automatically convert percentage into number\n    if (processPercent) {\n        n = parseInt(n * max, 10) / 100;\n    }\n\n    // Handle floating point rounding errors\n    if ((Math.abs(n - max) < 0.000001)) {\n        return 1;\n    }\n\n    // Convert into [0, 1] range if it isn't already\n    return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n    return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n    return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n    return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n    return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n    return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n    if (n <= 1) {\n        n = (n * 100) + \"%\";\n    }\n\n    return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n    return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n    return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n    // <http://www.w3.org/TR/css3-values/#integers>\n    var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n    // <http://www.w3.org/TR/css3-values/#number-value>\n    var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n    // Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\n    var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n    // Actual matching.\n    // Parentheses and commas are optional, but not required.\n    // Whitespace can take the place of commas or opening paren\n    var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n    var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n    return {\n        CSS_UNIT: new RegExp(CSS_UNIT),\n        rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n        rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n        hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n        hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n        hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n        hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n        hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n        hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n        hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n        hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n    };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n    return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing.  Take in a number of formats, and output an object\n// based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n    color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n    var named = false;\n    if (names[color]) {\n        color = names[color];\n        named = true;\n    }\n    else if (color == 'transparent') {\n        return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n    }\n\n    // Try to match string input using regular expressions.\n    // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n    // Just return an object and let the conversion functions handle that.\n    // This way the result will be the same whether the tinycolor is initialized with string or object.\n    var match;\n    if ((match = matchers.rgb.exec(color))) {\n        return { r: match[1], g: match[2], b: match[3] };\n    }\n    if ((match = matchers.rgba.exec(color))) {\n        return { r: match[1], g: match[2], b: match[3], a: match[4] };\n    }\n    if ((match = matchers.hsl.exec(color))) {\n        return { h: match[1], s: match[2], l: match[3] };\n    }\n    if ((match = matchers.hsla.exec(color))) {\n        return { h: match[1], s: match[2], l: match[3], a: match[4] };\n    }\n    if ((match = matchers.hsv.exec(color))) {\n        return { h: match[1], s: match[2], v: match[3] };\n    }\n    if ((match = matchers.hsva.exec(color))) {\n        return { h: match[1], s: match[2], v: match[3], a: match[4] };\n    }\n    if ((match = matchers.hex8.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            a: convertHexToDecimal(match[4]),\n            format: named ? \"name\" : \"hex8\"\n        };\n    }\n    if ((match = matchers.hex6.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            format: named ? \"name\" : \"hex\"\n        };\n    }\n    if ((match = matchers.hex4.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1] + '' + match[1]),\n            g: parseIntFromHex(match[2] + '' + match[2]),\n            b: parseIntFromHex(match[3] + '' + match[3]),\n            a: convertHexToDecimal(match[4] + '' + match[4]),\n            format: named ? \"name\" : \"hex8\"\n        };\n    }\n    if ((match = matchers.hex3.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1] + '' + match[1]),\n            g: parseIntFromHex(match[2] + '' + match[2]),\n            b: parseIntFromHex(match[3] + '' + match[3]),\n            format: named ? \"name\" : \"hex\"\n        };\n    }\n\n    return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n    // return valid WCAG2 parms for isReadable.\n    // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n    var level, size;\n    parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n    level = (parms.level || \"AA\").toUpperCase();\n    size = (parms.size || \"small\").toLowerCase();\n    if (level !== \"AA\" && level !== \"AAA\") {\n        level = \"AA\";\n    }\n    if (size !== \"small\" && size !== \"large\") {\n        size = \"small\";\n    }\n    return {\"level\":level, \"size\":size};\n}\n\n// Node: Export function\nif (  true && module.exports) {\n    module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (true) {\n    !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {return tinycolor;}).call(exports, __nested_webpack_require_8132208__, exports, module),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}\n// Browser: Expose to window\nelse {}\n\n})(Math);\n\n\n/***/ }),\n\n/***/ 57060:\n/***/ (function(module) {\n\n\"use strict\";\n/* @module to-float32 */\r\n\r\n\r\n\r\nmodule.exports = float32\r\nmodule.exports.float32 =\r\nmodule.exports.float = float32\r\nmodule.exports.fract32 =\r\nmodule.exports.fract = fract32\r\n\r\nvar narr = new Float32Array(1)\r\n\r\n// Returns fractional part of float32 array\r\nfunction fract32 (arr, fract) {\r\n\tif (arr.length) {\r\n\t\tif (arr instanceof Float32Array) return new Float32Array(arr.length);\r\n\t\tif (!(fract instanceof Float32Array)) fract = float32(arr)\r\n\t\tfor (var i = 0, l = fract.length; i < l; i++) {\r\n\t\t\tfract[i] = arr[i] - fract[i]\r\n\t\t}\r\n\t\treturn fract\r\n\t}\r\n\r\n\t// number\r\n\treturn float32(arr - float32(arr))\r\n}\r\n\r\n// Make sure data is float32 array\r\nfunction float32 (arr) {\r\n\tif (arr.length) {\r\n\t\tif (arr instanceof Float32Array) return arr\r\n\t\treturn new Float32Array(arr);\r\n\t}\r\n\r\n\t// number\r\n\tnarr[0] = arr\r\n\treturn narr[0]\r\n}\r\n\n\n/***/ }),\n\n/***/ 75686:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8170015__) {\n\n\"use strict\";\n\n\nvar parseUnit = __nested_webpack_require_8170015__(25677)\n\nmodule.exports = toPX\n\nvar PIXELS_PER_INCH = 96\n\nfunction getPropertyInPX(element, prop) {\n  var parts = parseUnit(getComputedStyle(element).getPropertyValue(prop))\n  return parts[0] * toPX(parts[1], element)\n}\n\n//This brutal hack is needed\nfunction getSizeBrutal(unit, element) {\n  var testDIV = document.createElement('div')\n  testDIV.style['font-size'] = '128' + unit\n  element.appendChild(testDIV)\n  var size = getPropertyInPX(testDIV, 'font-size') / 128\n  element.removeChild(testDIV)\n  return size\n}\n\nfunction toPX(str, element) {\n  element = element || document.body\n  str = (str || 'px').trim().toLowerCase()\n  if(element === window || element === document) {\n    element = document.body \n  }\n  switch(str) {\n    case '%':  //Ambiguous, not sure if we should use width or height\n      return element.clientHeight / 100.0\n    case 'ch':\n    case 'ex':\n      return getSizeBrutal(str, element)\n    case 'em':\n      return getPropertyInPX(element, 'font-size')\n    case 'rem':\n      return getPropertyInPX(document.body, 'font-size')\n    case 'vw':\n      return window.innerWidth/100\n    case 'vh':\n      return window.innerHeight/100\n    case 'vmin':\n      return Math.min(window.innerWidth, window.innerHeight) / 100\n    case 'vmax':\n      return Math.max(window.innerWidth, window.innerHeight) / 100\n    case 'in':\n      return PIXELS_PER_INCH\n    case 'cm':\n      return PIXELS_PER_INCH / 2.54\n    case 'mm':\n      return PIXELS_PER_INCH / 25.4\n    case 'pt':\n      return PIXELS_PER_INCH / 72\n    case 'pc':\n      return PIXELS_PER_INCH / 6\n  }\n  return 1\n}\n\n/***/ }),\n\n/***/ 96892:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_8171754__) {\n\n\"use strict\";\n\n// EXPORTS\n__nested_webpack_require_8171754__.d(__webpack_exports__, {\n  \"zL\": function() { return /* reexport */ feature; }\n});\n\n// UNUSED EXPORTS: bbox, merge, mergeArcs, mesh, meshArcs, neighbors, quantize, transform, untransform\n\n;// CONCATENATED MODULE: ./node_modules/topojson-client/src/reverse.js\n/* harmony default export */ function reverse(array, n) {\n  var t, j = array.length, i = j - n;\n  while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n}\n\n;// CONCATENATED MODULE: ./node_modules/topojson-client/src/identity.js\n/* harmony default export */ function identity(x) {\n  return x;\n}\n\n;// CONCATENATED MODULE: ./node_modules/topojson-client/src/transform.js\n\n\n/* harmony default export */ function transform(transform) {\n  if (transform == null) return identity;\n  var x0,\n      y0,\n      kx = transform.scale[0],\n      ky = transform.scale[1],\n      dx = transform.translate[0],\n      dy = transform.translate[1];\n  return function(input, i) {\n    if (!i) x0 = y0 = 0;\n    var j = 2, n = input.length, output = new Array(n);\n    output[0] = (x0 += input[0]) * kx + dx;\n    output[1] = (y0 += input[1]) * ky + dy;\n    while (j < n) output[j] = input[j], ++j;\n    return output;\n  };\n}\n\n;// CONCATENATED MODULE: ./node_modules/topojson-client/src/feature.js\n\n\n\n/* harmony default export */ function feature(topology, o) {\n  if (typeof o === \"string\") o = topology.objects[o];\n  return o.type === \"GeometryCollection\"\n      ? {type: \"FeatureCollection\", features: o.geometries.map(function(o) { return feature_feature(topology, o); })}\n      : feature_feature(topology, o);\n}\n\nfunction feature_feature(topology, o) {\n  var id = o.id,\n      bbox = o.bbox,\n      properties = o.properties == null ? {} : o.properties,\n      geometry = object(topology, o);\n  return id == null && bbox == null ? {type: \"Feature\", properties: properties, geometry: geometry}\n      : bbox == null ? {type: \"Feature\", id: id, properties: properties, geometry: geometry}\n      : {type: \"Feature\", id: id, bbox: bbox, properties: properties, geometry: geometry};\n}\n\nfunction object(topology, o) {\n  var transformPoint = transform(topology.transform),\n      arcs = topology.arcs;\n\n  function arc(i, points) {\n    if (points.length) points.pop();\n    for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length; k < n; ++k) {\n      points.push(transformPoint(a[k], k));\n    }\n    if (i < 0) reverse(points, n);\n  }\n\n  function point(p) {\n    return transformPoint(p);\n  }\n\n  function line(arcs) {\n    var points = [];\n    for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n    if (points.length < 2) points.push(points[0]); // This should never happen per the specification.\n    return points;\n  }\n\n  function ring(arcs) {\n    var points = line(arcs);\n    while (points.length < 4) points.push(points[0]); // This may happen if an arc has only two points.\n    return points;\n  }\n\n  function polygon(arcs) {\n    return arcs.map(ring);\n  }\n\n  function geometry(o) {\n    var type = o.type, coordinates;\n    switch (type) {\n      case \"GeometryCollection\": return {type: type, geometries: o.geometries.map(geometry)};\n      case \"Point\": coordinates = point(o.coordinates); break;\n      case \"MultiPoint\": coordinates = o.coordinates.map(point); break;\n      case \"LineString\": coordinates = line(o.arcs); break;\n      case \"MultiLineString\": coordinates = o.arcs.map(line); break;\n      case \"Polygon\": coordinates = polygon(o.arcs); break;\n      case \"MultiPolygon\": coordinates = o.arcs.map(polygon); break;\n      default: return null;\n    }\n    return {type: type, coordinates: coordinates};\n  }\n\n  return geometry(o);\n}\n\n;// CONCATENATED MODULE: ./node_modules/topojson-client/src/index.js\n\n\n\n\n\n\n\n\n\n\n/***/ }),\n\n/***/ 73116:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8175562__) {\n\n\"use strict\";\n\n\nvar isPrototype = __nested_webpack_require_8175562__(24511);\n\nmodule.exports = function (value) {\n\tif (typeof value !== \"function\") return false;\n\n\tif (!hasOwnProperty.call(value, \"length\")) return false;\n\n\ttry {\n\t\tif (typeof value.length !== \"number\") return false;\n\t\tif (typeof value.call !== \"function\") return false;\n\t\tif (typeof value.apply !== \"function\") return false;\n\t} catch (error) {\n\t\treturn false;\n\t}\n\n\treturn !isPrototype(value);\n};\n\n\n/***/ }),\n\n/***/ 69190:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8176110__) {\n\n\"use strict\";\n\n\nvar isValue       = __nested_webpack_require_8176110__(24582)\n  , isObject      = __nested_webpack_require_8176110__(47403)\n  , stringCoerce  = __nested_webpack_require_8176110__(9234)\n  , toShortString = __nested_webpack_require_8176110__(6048);\n\nvar resolveMessage = function (message, value) {\n\treturn message.replace(\"%v\", toShortString(value));\n};\n\nmodule.exports = function (value, defaultMessage, inputOptions) {\n\tif (!isObject(inputOptions)) throw new TypeError(resolveMessage(defaultMessage, value));\n\tif (!isValue(value)) {\n\t\tif (\"default\" in inputOptions) return inputOptions[\"default\"];\n\t\tif (inputOptions.isOptional) return null;\n\t}\n\tvar errorMessage = stringCoerce(inputOptions.errorMessage);\n\tif (!isValue(errorMessage)) errorMessage = defaultMessage;\n\tthrow new TypeError(resolveMessage(errorMessage, value));\n};\n\n\n/***/ }),\n\n/***/ 18497:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nmodule.exports = function (value) {\n\ttry {\n\t\treturn value.toString();\n\t} catch (error) {\n\t\ttry { return String(value); }\n\t\tcatch (error2) { return null; }\n\t}\n};\n\n\n/***/ }),\n\n/***/ 6048:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8177224__) {\n\n\"use strict\";\n\n\nvar safeToString = __nested_webpack_require_8177224__(18497);\n\nvar reNewLine = /[\\n\\r\\u2028\\u2029]/g;\n\nmodule.exports = function (value) {\n\tvar string = safeToString(value);\n\tif (string === null) return \"<Non-coercible to string value>\";\n\t// Trim if too long\n\tif (string.length > 100) string = string.slice(0, 99) + \"…\";\n\t// Replace eventual new lines\n\tstring = string.replace(reNewLine, function (char) {\n\t\tswitch (char) {\n\t\t\tcase \"\\n\":\n\t\t\t\treturn \"\\\\n\";\n\t\t\tcase \"\\r\":\n\t\t\t\treturn \"\\\\r\";\n\t\t\tcase \"\\u2028\":\n\t\t\t\treturn \"\\\\u2028\";\n\t\t\tcase \"\\u2029\":\n\t\t\t\treturn \"\\\\u2029\";\n\t\t\t/* istanbul ignore next */\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"Unexpected character\");\n\t\t}\n\t});\n\treturn string;\n};\n\n\n/***/ }),\n\n/***/ 47403:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8178008__) {\n\n\"use strict\";\n\n\nvar isValue = __nested_webpack_require_8178008__(24582);\n\n// prettier-ignore\nvar possibleTypes = { \"object\": true, \"function\": true, \"undefined\": true /* document.all */ };\n\nmodule.exports = function (value) {\n\tif (!isValue(value)) return false;\n\treturn hasOwnProperty.call(possibleTypes, typeof value);\n};\n\n\n/***/ }),\n\n/***/ 82527:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8178416__) {\n\n\"use strict\";\n\n\nvar resolveException = __nested_webpack_require_8178416__(69190)\n  , is               = __nested_webpack_require_8178416__(84985);\n\nmodule.exports = function (value/*, options*/) {\n\tif (is(value)) return value;\n\treturn resolveException(value, \"%v is not a plain function\", arguments[1]);\n};\n\n\n/***/ }),\n\n/***/ 84985:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8178793__) {\n\n\"use strict\";\n\n\nvar isFunction = __nested_webpack_require_8178793__(73116);\n\nvar classRe = /^\\s*class[\\s{/}]/, functionToString = Function.prototype.toString;\n\nmodule.exports = function (value) {\n\tif (!isFunction(value)) return false;\n\tif (classRe.test(functionToString.call(value))) return false;\n\treturn true;\n};\n\n\n/***/ }),\n\n/***/ 24511:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8179193__) {\n\n\"use strict\";\n\n\nvar isObject = __nested_webpack_require_8179193__(47403);\n\nmodule.exports = function (value) {\n\tif (!isObject(value)) return false;\n\ttry {\n\t\tif (!value.constructor) return false;\n\t\treturn value.constructor.prototype === value;\n\t} catch (error) {\n\t\treturn false;\n\t}\n};\n\n\n/***/ }),\n\n/***/ 9234:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8179561__) {\n\n\"use strict\";\n\n\nvar isValue  = __nested_webpack_require_8179561__(24582)\n  , isObject = __nested_webpack_require_8179561__(47403);\n\nvar objectToString = Object.prototype.toString;\n\nmodule.exports = function (value) {\n\tif (!isValue(value)) return null;\n\tif (isObject(value)) {\n\t\t// Reject Object.prototype.toString coercion\n\t\tvar valueToString = value.toString;\n\t\tif (typeof valueToString !== \"function\") return null;\n\t\tif (valueToString === objectToString) return null;\n\t\t// Note: It can be object coming from other realm, still as there's no ES3 and CSP compliant\n\t\t// way to resolve its realm's Object.prototype.toString it's left as not addressed edge case\n\t}\n\ttry {\n\t\treturn \"\" + value; // Ensure implicit coercion\n\t} catch (error) {\n\t\treturn null;\n\t}\n};\n\n\n/***/ }),\n\n/***/ 10424:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8180390__) {\n\n\"use strict\";\n\n\nvar resolveException = __nested_webpack_require_8180390__(69190)\n  , is               = __nested_webpack_require_8180390__(24582);\n\nmodule.exports = function (value/*, options*/) {\n\tif (is(value)) return value;\n\treturn resolveException(value, \"Cannot use %v\", arguments[1]);\n};\n\n\n/***/ }),\n\n/***/ 24582:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// ES3 safe\nvar _undefined = void 0;\n\nmodule.exports = function (value) { return value !== _undefined && value !== null; };\n\n\n/***/ }),\n\n/***/ 58404:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_8180947__) {\n\n\"use strict\";\n\n\nvar bits = __nested_webpack_require_8180947__(13547)\nvar dup = __nested_webpack_require_8180947__(12129)\nvar Buffer = (__nested_webpack_require_8180947__(12856).Buffer)\n\n//Legacy pool support\nif(!__nested_webpack_require_8180947__.g.__TYPEDARRAY_POOL) {\n  __nested_webpack_require_8180947__.g.__TYPEDARRAY_POOL = {\n      UINT8     : dup([32, 0])\n    , UINT16    : dup([32, 0])\n    , UINT32    : dup([32, 0])\n    , BIGUINT64 : dup([32, 0])\n    , INT8      : dup([32, 0])\n    , INT16     : dup([32, 0])\n    , INT32     : dup([32, 0])\n    , BIGINT64  : dup([32, 0])\n    , FLOAT     : dup([32, 0])\n    , DOUBLE    : dup([32, 0])\n    , DATA      : dup([32, 0])\n    , UINT8C    : dup([32, 0])\n    , BUFFER    : dup([32, 0])\n  }\n}\n\nvar hasUint8C = (typeof Uint8ClampedArray) !== 'undefined'\nvar hasBigUint64 = (typeof BigUint64Array) !== 'undefined'\nvar hasBigInt64 = (typeof BigInt64Array) !== 'undefined'\nvar POOL = __nested_webpack_require_8180947__.g.__TYPEDARRAY_POOL\n\n//Upgrade pool\nif(!POOL.UINT8C) {\n  POOL.UINT8C = dup([32, 0])\n}\nif(!POOL.BIGUINT64) {\n  POOL.BIGUINT64 = dup([32, 0])\n}\nif(!POOL.BIGINT64) {\n  POOL.BIGINT64 = dup([32, 0])\n}\nif(!POOL.BUFFER) {\n  POOL.BUFFER = dup([32, 0])\n}\n\n//New technique: Only allocate from ArrayBufferView and Buffer\nvar DATA    = POOL.DATA\n  , BUFFER  = POOL.BUFFER\n\nexports.free = function free(array) {\n  if(Buffer.isBuffer(array)) {\n    BUFFER[bits.log2(array.length)].push(array)\n  } else {\n    if(Object.prototype.toString.call(array) !== '[object ArrayBuffer]') {\n      array = array.buffer\n    }\n    if(!array) {\n      return\n    }\n    var n = array.length || array.byteLength\n    var log_n = bits.log2(n)|0\n    DATA[log_n].push(array)\n  }\n}\n\nfunction freeArrayBuffer(buffer) {\n  if(!buffer) {\n    return\n  }\n  var n = buffer.length || buffer.byteLength\n  var log_n = bits.log2(n)\n  DATA[log_n].push(buffer)\n}\n\nfunction freeTypedArray(array) {\n  freeArrayBuffer(array.buffer)\n}\n\nexports.freeUint8 =\nexports.freeUint16 =\nexports.freeUint32 =\nexports.freeBigUint64 =\nexports.freeInt8 =\nexports.freeInt16 =\nexports.freeInt32 =\nexports.freeBigInt64 =\nexports.freeFloat32 = \nexports.freeFloat =\nexports.freeFloat64 = \nexports.freeDouble = \nexports.freeUint8Clamped = \nexports.freeDataView = freeTypedArray\n\nexports.freeArrayBuffer = freeArrayBuffer\n\nexports.freeBuffer = function freeBuffer(array) {\n  BUFFER[bits.log2(array.length)].push(array)\n}\n\nexports.malloc = function malloc(n, dtype) {\n  if(dtype === undefined || dtype === 'arraybuffer') {\n    return mallocArrayBuffer(n)\n  } else {\n    switch(dtype) {\n      case 'uint8':\n        return mallocUint8(n)\n      case 'uint16':\n        return mallocUint16(n)\n      case 'uint32':\n        return mallocUint32(n)\n      case 'int8':\n        return mallocInt8(n)\n      case 'int16':\n        return mallocInt16(n)\n      case 'int32':\n        return mallocInt32(n)\n      case 'float':\n      case 'float32':\n        return mallocFloat(n)\n      case 'double':\n      case 'float64':\n        return mallocDouble(n)\n      case 'uint8_clamped':\n        return mallocUint8Clamped(n)\n      case 'bigint64':\n        return mallocBigInt64(n)\n      case 'biguint64':\n        return mallocBigUint64(n)\n      case 'buffer':\n        return mallocBuffer(n)\n      case 'data':\n      case 'dataview':\n        return mallocDataView(n)\n\n      default:\n        return null\n    }\n  }\n  return null\n}\n\nfunction mallocArrayBuffer(n) {\n  var n = bits.nextPow2(n)\n  var log_n = bits.log2(n)\n  var d = DATA[log_n]\n  if(d.length > 0) {\n    return d.pop()\n  }\n  return new ArrayBuffer(n)\n}\nexports.mallocArrayBuffer = mallocArrayBuffer\n\nfunction mallocUint8(n) {\n  return new Uint8Array(mallocArrayBuffer(n), 0, n)\n}\nexports.mallocUint8 = mallocUint8\n\nfunction mallocUint16(n) {\n  return new Uint16Array(mallocArrayBuffer(2*n), 0, n)\n}\nexports.mallocUint16 = mallocUint16\n\nfunction mallocUint32(n) {\n  return new Uint32Array(mallocArrayBuffer(4*n), 0, n)\n}\nexports.mallocUint32 = mallocUint32\n\nfunction mallocInt8(n) {\n  return new Int8Array(mallocArrayBuffer(n), 0, n)\n}\nexports.mallocInt8 = mallocInt8\n\nfunction mallocInt16(n) {\n  return new Int16Array(mallocArrayBuffer(2*n), 0, n)\n}\nexports.mallocInt16 = mallocInt16\n\nfunction mallocInt32(n) {\n  return new Int32Array(mallocArrayBuffer(4*n), 0, n)\n}\nexports.mallocInt32 = mallocInt32\n\nfunction mallocFloat(n) {\n  return new Float32Array(mallocArrayBuffer(4*n), 0, n)\n}\nexports.mallocFloat32 = exports.mallocFloat = mallocFloat\n\nfunction mallocDouble(n) {\n  return new Float64Array(mallocArrayBuffer(8*n), 0, n)\n}\nexports.mallocFloat64 = exports.mallocDouble = mallocDouble\n\nfunction mallocUint8Clamped(n) {\n  if(hasUint8C) {\n    return new Uint8ClampedArray(mallocArrayBuffer(n), 0, n)\n  } else {\n    return mallocUint8(n)\n  }\n}\nexports.mallocUint8Clamped = mallocUint8Clamped\n\nfunction mallocBigUint64(n) {\n  if(hasBigUint64) {\n    return new BigUint64Array(mallocArrayBuffer(8*n), 0, n)\n  } else {\n    return null;\n  }\n}\nexports.mallocBigUint64 = mallocBigUint64\n\nfunction mallocBigInt64(n) {\n  if (hasBigInt64) {\n    return new BigInt64Array(mallocArrayBuffer(8*n), 0, n)\n  } else {\n    return null;\n  }\n}\nexports.mallocBigInt64 = mallocBigInt64\n\nfunction mallocDataView(n) {\n  return new DataView(mallocArrayBuffer(n), 0, n)\n}\nexports.mallocDataView = mallocDataView\n\nfunction mallocBuffer(n) {\n  n = bits.nextPow2(n)\n  var log_n = bits.log2(n)\n  var cache = BUFFER[log_n]\n  if(cache.length > 0) {\n    return cache.pop()\n  }\n  return new Buffer(n)\n}\nexports.mallocBuffer = mallocBuffer\n\nexports.clearCache = function clearCache() {\n  for(var i=0; i<32; ++i) {\n    POOL.UINT8[i].length = 0\n    POOL.UINT16[i].length = 0\n    POOL.UINT32[i].length = 0\n    POOL.INT8[i].length = 0\n    POOL.INT16[i].length = 0\n    POOL.INT32[i].length = 0\n    POOL.FLOAT[i].length = 0\n    POOL.DOUBLE[i].length = 0\n    POOL.BIGUINT64[i].length = 0\n    POOL.BIGINT64[i].length = 0\n    POOL.UINT8C[i].length = 0\n    DATA[i].length = 0\n    BUFFER[i].length = 0\n  }\n}\n\n\n/***/ }),\n\n/***/ 90448:\n/***/ (function(module) {\n\nvar reg = /[\\'\\\"]/\n\nmodule.exports = function unquote(str) {\n  if (!str) {\n    return ''\n  }\n  if (reg.test(str.charAt(0))) {\n    str = str.substr(1)\n  }\n  if (reg.test(str.charAt(str.length - 1))) {\n    str = str.substr(0, str.length - 1)\n  }\n  return str\n}\n\n\n/***/ }),\n\n/***/ 93447:\n/***/ (function(module) {\n\n\"use strict\";\n/**\r\n * @module update-diff\r\n */\r\n\r\n\r\n\r\nmodule.exports = function updateDiff (obj, diff, mappers) {\r\n\tif (!Array.isArray(mappers)) mappers = [].slice.call(arguments, 2)\r\n\r\n\tfor (var i = 0, l = mappers.length; i < l; i++) {\r\n\t\tvar dict = mappers[i]\r\n\t\tfor (var prop in dict) {\r\n\t\t\tif (diff[prop] !== undefined && !Array.isArray(diff[prop]) && obj[prop] === diff[prop]) continue\r\n\r\n\t\t\tif (prop in diff) {\r\n\t\t\t\tvar result\r\n\r\n\t\t\t\tif (dict[prop] === true) result = diff[prop]\r\n\t\t\t\telse if (dict[prop] === false) continue\r\n\t\t\t\telse if (typeof dict[prop] === 'function') {\r\n\t\t\t\t\tresult = dict[prop](diff[prop], obj, diff)\r\n\t\t\t\t\tif (result === undefined) continue\r\n\t\t\t\t}\r\n\r\n\t\t\t\tobj[prop] = result\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn obj\r\n}\r\n\n\n/***/ }),\n\n/***/ 20588:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8188039__) {\n\n\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n  if (config('noDeprecation')) {\n    return fn;\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (config('throwDeprecation')) {\n        throw new Error(msg);\n      } else if (config('traceDeprecation')) {\n        console.trace(msg);\n      } else {\n        console.warn(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n  // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n  try {\n    if (!__nested_webpack_require_8188039__.g.localStorage) return false;\n  } catch (_) {\n    return false;\n  }\n  var val = __nested_webpack_require_8188039__.g.localStorage[name];\n  if (null == val) return false;\n  return String(val).toLowerCase() === 'true';\n}\n\n\n/***/ }),\n\n/***/ 45920:\n/***/ (function(module) {\n\nmodule.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}\n\n/***/ }),\n\n/***/ 4936:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_8190038__) {\n\n\"use strict\";\n// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n\n\nvar isArgumentsObject = __nested_webpack_require_8190038__(47216);\nvar isGeneratorFunction = __nested_webpack_require_8190038__(65481);\nvar whichTypedArray = __nested_webpack_require_8190038__(21099);\nvar isTypedArray = __nested_webpack_require_8190038__(9187);\n\nfunction uncurryThis(f) {\n  return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n  var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n  var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n  if (typeof value !== 'object') {\n    return false;\n  }\n  try {\n    prototypeValueOf(value);\n    return true;\n  } catch(e) {\n    return false;\n  }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    return ArrayBuffer.isView(value);\n  }\n\n  return (\n    isTypedArray(value) ||\n    isDataView(value)\n  );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n  return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n  return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n  return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n  return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n  return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n  return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n  return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n  return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n  return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n  return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n  return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n  return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n  typeof Map !== 'undefined' &&\n  isMapToString(new Map())\n);\n\nfunction isMap(value) {\n  if (typeof Map === 'undefined') {\n    return false;\n  }\n\n  return isMapToString.working\n    ? isMapToString(value)\n    : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n  return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n  typeof Set !== 'undefined' &&\n  isSetToString(new Set())\n);\nfunction isSet(value) {\n  if (typeof Set === 'undefined') {\n    return false;\n  }\n\n  return isSetToString.working\n    ? isSetToString(value)\n    : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n  return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n  typeof WeakMap !== 'undefined' &&\n  isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n  if (typeof WeakMap === 'undefined') {\n    return false;\n  }\n\n  return isWeakMapToString.working\n    ? isWeakMapToString(value)\n    : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n  return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n  typeof WeakSet !== 'undefined' &&\n  isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n  return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n  return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n  if (typeof ArrayBuffer === 'undefined') {\n    return false;\n  }\n\n  return isArrayBufferToString.working\n    ? isArrayBufferToString(value)\n    : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n  return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  typeof DataView !== 'undefined' &&\n  isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n  if (typeof DataView === 'undefined') {\n    return false;\n  }\n\n  return isDataViewToString.working\n    ? isDataViewToString(value)\n    : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n  return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n  if (typeof SharedArrayBufferCopy === 'undefined') {\n    return false;\n  }\n\n  if (typeof isSharedArrayBufferToString.working === 'undefined') {\n    isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n  }\n\n  return isSharedArrayBufferToString.working\n    ? isSharedArrayBufferToString(value)\n    : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n  return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n  return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n  return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n  return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n  return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n  return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n  return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n  return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n  return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n  return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n  return (\n    isNumberObject(value) ||\n    isStringObject(value) ||\n    isBooleanObject(value) ||\n    isBigIntObject(value) ||\n    isSymbolObject(value)\n  );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n  return typeof Uint8Array !== 'undefined' && (\n    isArrayBuffer(value) ||\n    isSharedArrayBuffer(value)\n  );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n  Object.defineProperty(exports, method, {\n    enumerable: false,\n    value: function() {\n      throw new Error(method + ' is not supported in userland');\n    }\n  });\n});\n\n\n/***/ }),\n\n/***/ 43827:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_8198806__) {\n\n/* provided dependency */ var process = __nested_webpack_require_8198806__(90386);\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n  var debugEnv = process.env.NODE_DEBUG;\n  debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n    .replace(/\\*/g, '.*')\n    .replace(/,/g, '$|^')\n    .toUpperCase();\n  debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (debugEnvRegex.test(set)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').slice(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.slice(1, -1);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = __nested_webpack_require_8198806__(4936);\n\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = __nested_webpack_require_8198806__(45920);\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = __nested_webpack_require_8198806__(42018);\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n            function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n\n\n/***/ }),\n\n/***/ 40372:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8218674__) {\n\nvar getContext = __nested_webpack_require_8218674__(86249)\n\nmodule.exports = function getWebGLContext (opt) {\n  return getContext('webgl', opt)\n}\n\n\n/***/ }),\n\n/***/ 21099:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8218905__) {\n\n\"use strict\";\n\n\nvar forEach = __nested_webpack_require_8218905__(86165);\nvar availableTypedArrays = __nested_webpack_require_8218905__(72077);\nvar callBound = __nested_webpack_require_8218905__(92978);\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasSymbols = __nested_webpack_require_8218905__(57877)();\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\n\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = __nested_webpack_require_8218905__(67295);\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tif (typeof __nested_webpack_require_8218905__.g[typedArray] === 'function') {\n\t\t\tvar arr = new __nested_webpack_require_8218905__.g[typedArray]();\n\t\t\tif (!(Symbol.toStringTag in arr)) {\n\t\t\t\tthrow new EvalError('this engine has support for Symbol.toStringTag, but ' + typedArray + ' does not have the property! Please report this.');\n\t\t\t}\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar foundName = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!foundName) {\n\t\t\ttry {\n\t\t\t\tvar name = getter.call(value);\n\t\t\t\tif (name === typedArray) {\n\t\t\t\t\tfoundName = name;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\t});\n\treturn foundName;\n};\n\nvar isTypedArray = __nested_webpack_require_8218905__(9187);\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!isTypedArray(value)) { return false; }\n\tif (!hasToStringTag) { return $slice($toString(value), 8, -1); }\n\treturn tryTypedArrays(value);\n};\n\n\n/***/ }),\n\n/***/ 3961:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_8220808__) {\n\n/*\n * World Calendars\n * https://github.com/alexcjohnson/world-calendars\n *\n * Batch-converted from kbwood/calendars\n * Many thanks to Keith Wood and all of the contributors to the original project!\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n﻿/* http://keith-wood.name/calendars.html\n   Traditional Chinese calendar for jQuery v2.0.2.\n   Written by Nicolas Riesco (enquiries@nicolasriesco.net) December 2016.\n   Available under the MIT (http://keith-wood.name/licence.html) license. \n   Please attribute the author if you use it. */\n\nvar main = __nested_webpack_require_8220808__(63489);\nvar assign = __nested_webpack_require_8220808__(56131);\n\n\nvar gregorianCalendar = main.instance();\n\n/** Implementation of the traditional Chinese calendar.\n    Source of calendar tables https://github.com/isee15/Lunar-Solar-Calendar-Converter .\n    @class ChineseCalendar\n    @param [language=''] {string} The language code (default English) for localisation. */\nfunction ChineseCalendar(language) {\n    this.local = this.regionalOptions[language || ''] || this.regionalOptions[''];\n}\n\nChineseCalendar.prototype = new main.baseCalendar;\n\nassign(ChineseCalendar.prototype, {\n    /** The calendar name.\n        @memberof ChineseCalendar */\n    name: 'Chinese',\n     /** Julian date of start of Gregorian epoch: 1 January 0001 CE.\n        @memberof GregorianCalendar */\n    jdEpoch: 1721425.5,\n    /** <code>true</code> if has a year zero, <code>false</code> if not.\n        @memberof ChineseCalendar */\n    hasYearZero: false,\n    /** The minimum month number.\n        This calendar uses month indices to account for intercalary months. \n        @memberof ChineseCalendar */\n    minMonth: 0,\n    /** The first month in the year.\n        This calendar uses month indices to account for intercalary months. \n        @memberof ChineseCalendar */\n    firstMonth: 0,\n    /** The minimum day number.\n        @memberof ChineseCalendar */\n    minDay: 1,\n\n    /** Localisations for the plugin.\n        Entries are objects indexed by the language code ('' being the default US/English).\n        Each object has the following attributes.\n        @memberof ChineseCalendar\n        @property name {string} The calendar name.\n        @property epochs {string[]} The epoch names.\n        @property monthNames {string[]} The long names of the months of the year.\n        @property monthNamesShort {string[]} The short names of the months of the year.\n        @property dayNames {string[]} The long names of the days of the week.\n        @property dayNamesShort {string[]} The short names of the days of the week.\n        @property dayNamesMin {string[]} The minimal names of the days of the week.\n        @property dateFormat {string} The date format for this calendar.\n                See the options on <a href=\"BaseCalendar.html#formatDate\"><code>formatDate</code></a> for details.\n        @property firstDay {number} The number of the first day of the week, starting at 0.\n        @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */\n    regionalOptions: { // Localisations\n        '': {\n            name: 'Chinese',\n            epochs: ['BEC', 'EC'],\n            monthNumbers: function(date, padded) {\n                if (typeof date === 'string') {\n                    var match = date.match(MONTH_NUMBER_REGEXP);\n                    return (match) ? match[0] : '';\n                }\n\n                var year = this._validateYear(date);\n                var monthIndex = date.month();\n\n                var month = '' + this.toChineseMonth(year, monthIndex);\n\n                if (padded && month.length < 2) {\n                    month = \"0\" + month;\n                }\n\n                if (this.isIntercalaryMonth(year, monthIndex)) {\n                    month += 'i';\n                }\n\n                return month;\n            },\n            monthNames: function(date) {\n                if (typeof date === 'string') {\n                    var match = date.match(MONTH_NAME_REGEXP);\n                    return (match) ? match[0] : '';\n                }\n\n                var year = this._validateYear(date);\n                var monthIndex = date.month();\n\n                var month = this.toChineseMonth(year, monthIndex);\n\n                var monthName = ['一月','二月','三月','四月','五月','六月',\n                    '七月','八月','九月','十月','十一月','十二月'][month - 1];\n\n                if (this.isIntercalaryMonth(year, monthIndex)) {\n                    monthName = '闰' + monthName;\n                }\n\n                return monthName;\n            },\n            monthNamesShort: function(date) {\n                if (typeof date === 'string') {\n                    var match = date.match(MONTH_SHORT_NAME_REGEXP);\n                    return (match) ? match[0] : '';\n                }\n\n                var year = this._validateYear(date);\n                var monthIndex = date.month();\n\n                var month = this.toChineseMonth(year, monthIndex);\n\n                var monthName = ['一','二','三','四','五','六',\n                    '七','八','九','十','十一','十二'][month - 1];\n\n                if (this.isIntercalaryMonth(year, monthIndex)) {\n                    monthName = '闰' + monthName;\n                }\n\n                return monthName;\n            },\n            parseMonth: function(year, monthString) {\n                year = this._validateYear(year);\n                var month = parseInt(monthString);\n                var isIntercalary;\n\n                if (!isNaN(month)) {\n                    var i = monthString[monthString.length - 1];\n                    isIntercalary = (i === 'i' || i === 'I');\n                } else {\n                    if (monthString[0] === '闰') {\n                        isIntercalary = true;\n                        monthString = monthString.substring(1);\n                    }\n                    if (monthString[monthString.length - 1] === '月') {\n                        monthString = monthString.substring(0, monthString.length - 1);\n                    }\n                    month = 1 +\n                        ['一','二','三','四','五','六',\n                        '七','八','九','十','十一','十二'].indexOf(monthString);\n                }\n\n                var monthIndex = this.toMonthIndex(year, month, isIntercalary);\n                return monthIndex;\n            },\n            dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n            dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n            dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n            digits: null,\n            dateFormat: 'yyyy/mm/dd',\n            firstDay: 1,\n            isRTL: false\n        }\n    },\n\n    /** Check that a candidate date is from the same calendar and is valid.\n        @memberof BaseCalendar\n        @private\n        @param year {CDate|number} The date or the year to validate.\n        @param error {string} Error message if invalid.\n        @return {number} The year.\n        @throws Error if year out of range. */\n    _validateYear: function(year, error) {\n        if (year.year) {\n            year = year.year();\n        }\n\n        if (typeof year !== 'number' || year < 1888 || year > 2111) {\n            throw error.replace(/\\{0\\}/, this.local.name);\n        }\n\n        return year;\n    },\n\n    /** Retrieve the month index (i.e. accounting for intercalary months).\n        @memberof ChineseCalendar\n        @param year {number} The year.\n        @param month {number} The month (1 for first month).\n        @param [isIntercalary=false] {boolean} If month is intercalary.\n        @return {number} The month index (0 for first month).\n        @throws Error if an invalid month/year or a different calendar used. */\n    toMonthIndex: function(year, month, isIntercalary) {\n        // compute intercalary month in the year (0 if none)\n        var intercalaryMonth = this.intercalaryMonth(year);\n\n        // validate month\n        var invalidIntercalaryMonth = \n            (isIntercalary && month !== intercalaryMonth);\n        if (invalidIntercalaryMonth || month < 1 || month > 12) {\n            throw main.local.invalidMonth\n                .replace(/\\{0\\}/, this.local.name);\n        }\n\n        // compute month index\n        var monthIndex;\n\n        if (!intercalaryMonth) {\n            monthIndex = month - 1;\n        } else if(!isIntercalary && month <= intercalaryMonth) {\n            monthIndex = month - 1;\n        } else {\n            monthIndex = month;\n        }\n\n        return monthIndex;\n    },\n\n    /** Retrieve the month (i.e. accounting for intercalary months).\n        @memberof ChineseCalendar\n        @param year {CDate|number} The date or the year to examine.\n        @param monthIndex {number} The month index (0 for first month).\n        @return {number} The month (1 for first month).\n        @throws Error if an invalid month/year or a different calendar used. */\n    toChineseMonth: function(year, monthIndex) {\n        if (year.year) {\n            year = year.year();\n            monthIndex = year.month();\n        }\n\n        // compute intercalary month in the year (0 if none)\n        var intercalaryMonth = this.intercalaryMonth(year);\n\n        // validate month\n        var maxMonthIndex = (intercalaryMonth) ? 12 : 11;\n        if (monthIndex < 0 || monthIndex > maxMonthIndex) {\n            throw main.local.invalidMonth\n                .replace(/\\{0\\}/, this.local.name);\n        }\n\n        // compute Chinese month\n        var month;\n\n        if (!intercalaryMonth) {\n            month = monthIndex + 1;\n        } else if(monthIndex < intercalaryMonth) {\n            month = monthIndex + 1;\n        } else {\n            month = monthIndex;\n        }\n\n        return month;\n    },\n\n    /** Determine the intercalary month of a year (if any).\n        @memberof ChineseCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {number} The intercalary month number, or 0 if none.\n        @throws Error if an invalid year or a different calendar used. */\n    intercalaryMonth: function(year) {\n        year = this._validateYear(year);\n\n        var monthDaysTable = LUNAR_MONTH_DAYS[year - LUNAR_MONTH_DAYS[0]];\n        var intercalaryMonth = monthDaysTable >> 13;\n\n        return intercalaryMonth;\n    },\n\n    /** Determine whether this date is an intercalary month.\n        @memberof ChineseCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [monthIndex] {number} The month index to examine.\n        @return {boolean} <code>true</code> if this is an intercalary month, <code>false</code> if not.\n        @throws Error if an invalid year or a different calendar used. */\n    isIntercalaryMonth: function(year, monthIndex) {\n        if (year.year) {\n            year = year.year();\n            monthIndex = year.month();\n        }\n\n        var intercalaryMonth = this.intercalaryMonth(year);\n\n        return !!intercalaryMonth && intercalaryMonth === monthIndex;\n    },\n\n    /** Determine whether this date is in a leap year.\n        @memberof ChineseCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.\n        @throws Error if an invalid year or a different calendar used. */\n    leapYear: function(year) {\n        return (this.intercalaryMonth(year) !== 0);\n    },\n\n    /** Determine the week of the year for a date - ISO 8601.\n        @memberof ChineseCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [monthIndex] {number} The month index to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The week of the year.\n        @throws Error if an invalid date or a different calendar used. */\n    weekOfYear: function(year, monthIndex, day) {\n        // compute Chinese new year\n        var validatedYear =\n            this._validateYear(year, main.local.invalidyear);\n        var packedDate =\n            CHINESE_NEW_YEAR[validatedYear - CHINESE_NEW_YEAR[0]];\n\n        var y = (packedDate >> 9) & 0xFFF;\n        var m = (packedDate >> 5) & 0x0F;\n        var d = packedDate & 0x1F;\n        \n        // find first Thrusday of the year\n        var firstThursday;\n        firstThursday = gregorianCalendar.newDate(y, m, d);\n        firstThursday.add(4 - (firstThursday.dayOfWeek() || 7), 'd');\n\n        // compute days from first Thursday\n        var offset =\n            this.toJD(year, monthIndex, day) - firstThursday.toJD();\n        return 1 + Math.floor(offset / 7);\n    },\n\n    /** Retrieve the number of months in a year.\n        @memberof ChineseCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {number} The number of months.\n        @throws Error if an invalid year or a different calendar used. */\n    monthsInYear: function(year) {\n        return (this.leapYear(year)) ? 13 : 12;\n    },\n\n    /** Retrieve the number of days in a month.\n        @memberof ChineseCalendar\n        @param year {CDate|number} The date to examine or the year of the month.\n        @param [monthIndex] {number} The month index.\n        @return {number} The number of days in this month.\n        @throws Error if an invalid month/year or a different calendar used. */\n    daysInMonth: function(year, monthIndex) {\n        if (year.year) {\n            monthIndex = year.month();\n            year = year.year();\n        }\n\n        year = this._validateYear(year);\n\n        var monthDaysTable = LUNAR_MONTH_DAYS[year - LUNAR_MONTH_DAYS[0]];\n\n        var intercalaryMonth = monthDaysTable >> 13;\n        var maxMonthIndex = (intercalaryMonth) ? 12 : 11;\n        if (monthIndex > maxMonthIndex) {\n            throw main.local.invalidMonth\n                .replace(/\\{0\\}/, this.local.name);\n        }\n\n        var daysInMonth = (monthDaysTable & (1 << (12 - monthIndex))) ?\n            30 : 29;\n\n        return daysInMonth;\n    },\n\n    /** Determine whether this date is a week day.\n        @memberof ChineseCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [monthIndex] {number} The month index to examine.\n        @param [day] {number} The day to examine.\n        @return {boolean} <code>true</code> if a week day, <code>false</code> if not.\n        @throws Error if an invalid date or a different calendar used. */\n    weekDay: function(year, monthIndex, day) {\n        return (this.dayOfWeek(year, monthIndex, day) || 7) < 6;\n    },\n\n    /** Retrieve the Julian date equivalent for this date,\n        i.e. days since January 1, 4713 BCE Greenwich noon.\n        @memberof ChineseCalendar\n        @param year {CDate|number} The date to convert or the year to convert.\n        @param [monthIndex] {number} The month index to convert.\n        @param [day] {number} The day to convert.\n        @return {number} The equivalent Julian date.\n        @throws Error if an invalid date or a different calendar used. */\n    toJD: function(year, monthIndex, day) {\n        var date = this._validate(year, month, day, main.local.invalidDate);\n        year = this._validateYear(date.year());\n        monthIndex = date.month();\n        day = date.day();\n\n        var isIntercalary = this.isIntercalaryMonth(year, monthIndex);\n        var month = this.toChineseMonth(year, monthIndex);\n\n        var solar = toSolar(year, month, day, isIntercalary);\n\n        return gregorianCalendar.toJD(solar.year, solar.month, solar.day);\n    },\n\n    /** Create a new date from a Julian date.\n        @memberof ChineseCalendar\n        @param jd {number} The Julian date to convert.\n        @return {CDate} The equivalent date. */\n    fromJD: function(jd) {\n        var date = gregorianCalendar.fromJD(jd);\n        var lunar = toLunar(date.year(), date.month(), date.day());\n        var monthIndex = this.toMonthIndex(\n            lunar.year, lunar.month, lunar.isIntercalary);\n        return this.newDate(lunar.year, monthIndex, lunar.day);\n    },\n\n    /** Create a new date from a string.\n        @memberof ChineseCalendar\n        @param dateString {string} String representing a Chinese date\n        @return {CDate} The new date.\n        @throws Error if an invalid date. */\n    fromString: function(dateString) {\n        var match = dateString.match(DATE_REGEXP);\n\n        var year = this._validateYear(+match[1]);\n\n        var month = +match[2];\n        var isIntercalary = !!match[3];\n        var monthIndex = this.toMonthIndex(year, month, isIntercalary);\n\n        var day = +match[4];\n\n        return this.newDate(year, monthIndex, day);\n    },\n\n    /** Add period(s) to a date.\n        Cater for no year zero.\n        @memberof ChineseCalendar\n        @param date {CDate} The starting date.\n        @param offset {number} The number of periods to adjust by.\n        @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day.\n        @return {CDate} The updated date.\n        @throws Error if a different calendar used. */\n    add: function(date, offset, period) {\n        var year = date.year();\n        var monthIndex = date.month();\n        var isIntercalary = this.isIntercalaryMonth(year, monthIndex);\n        var month = this.toChineseMonth(year, monthIndex);\n\n        var cdate = Object.getPrototypeOf(ChineseCalendar.prototype)\n            .add.call(this, date, offset, period);\n\n        if (period === 'y') {\n            // Resync month\n            var resultYear = cdate.year();\n            var resultMonthIndex = cdate.month();\n\n            // Using the fact the month index of an intercalary month\n            // equals its month number:\n            var resultCanBeIntercalaryMonth =\n                this.isIntercalaryMonth(resultYear, month);\n\n            var correctedMonthIndex =\n                (isIntercalary && resultCanBeIntercalaryMonth) ?\n                this.toMonthIndex(resultYear, month, true) :\n                this.toMonthIndex(resultYear, month, false);\n\n            if (correctedMonthIndex !== resultMonthIndex) {\n                cdate.month(correctedMonthIndex);\n            }\n        }\n\n        return cdate;\n    },\n});\n\n// Used by ChineseCalendar.prototype.fromString\nvar DATE_REGEXP = /^\\s*(-?\\d\\d\\d\\d|\\d\\d)[-/](\\d?\\d)([iI]?)[-/](\\d?\\d)/m;\nvar MONTH_NUMBER_REGEXP = /^\\d?\\d[iI]?/m;\nvar MONTH_NAME_REGEXP = /^闰?十?[一二三四五六七八九]?月/m;\nvar MONTH_SHORT_NAME_REGEXP = /^闰?十?[一二三四五六七八九]?/m;\n\n// Chinese calendar implementation\nmain.calendars.chinese = ChineseCalendar;\n\n// Chinese calendar tables from year 1888 to 2111\n//\n// Source:\n// https://github.com/isee15/Lunar-Solar-Calendar-Converter.git\n\n// Table of intercalary months and days per month from year 1888 to 2111\n//\n// bit (12 - i):        days in the i^th month\n//                      (= 0 if i^th lunar month has 29 days)\n//                      (= 1 if i^th lunar month has 30 days)\n//                      (first month in lunar year is i = 0)\n// bits (13,14,15,16):  intercalary month\n//                      (= 0 if lunar year has no intercalary month)\nvar LUNAR_MONTH_DAYS = [1887, 0x1694, 0x16aa, 0x4ad5,\n    0xab6, 0xc4b7, 0x4ae, 0xa56, 0xb52a, 0x1d2a, 0xd54, 0x75aa, 0x156a,\n    0x1096d, 0x95c, 0x14ae, 0xaa4d, 0x1a4c, 0x1b2a, 0x8d55, 0xad4,\n    0x135a, 0x495d, 0x95c, 0xd49b, 0x149a, 0x1a4a, 0xbaa5, 0x16a8,\n    0x1ad4, 0x52da, 0x12b6, 0xe937, 0x92e, 0x1496, 0xb64b, 0xd4a,\n    0xda8, 0x95b5, 0x56c, 0x12ae, 0x492f, 0x92e, 0xcc96, 0x1a94,\n    0x1d4a, 0xada9, 0xb5a, 0x56c, 0x726e, 0x125c, 0xf92d, 0x192a,\n    0x1a94, 0xdb4a, 0x16aa, 0xad4, 0x955b, 0x4ba, 0x125a, 0x592b,\n    0x152a, 0xf695, 0xd94, 0x16aa, 0xaab5, 0x9b4, 0x14b6, 0x6a57,\n    0xa56, 0x1152a, 0x1d2a, 0xd54, 0xd5aa, 0x156a, 0x96c, 0x94ae,\n    0x14ae, 0xa4c, 0x7d26, 0x1b2a, 0xeb55, 0xad4, 0x12da, 0xa95d,\n    0x95a, 0x149a, 0x9a4d, 0x1a4a, 0x11aa5, 0x16a8, 0x16d4, 0xd2da,\n    0x12b6, 0x936, 0x9497, 0x1496, 0x1564b, 0xd4a, 0xda8, 0xd5b4,\n    0x156c, 0x12ae, 0xa92f, 0x92e, 0xc96, 0x6d4a, 0x1d4a, 0x10d65,\n    0xb58, 0x156c, 0xb26d, 0x125c, 0x192c, 0x9a95, 0x1a94, 0x1b4a,\n    0x4b55, 0xad4, 0xf55b, 0x4ba, 0x125a, 0xb92b, 0x152a, 0x1694,\n    0x96aa, 0x15aa, 0x12ab5, 0x974, 0x14b6, 0xca57, 0xa56, 0x1526,\n    0x8e95, 0xd54, 0x15aa, 0x49b5, 0x96c, 0xd4ae, 0x149c, 0x1a4c,\n    0xbd26, 0x1aa6, 0xb54, 0x6d6a, 0x12da, 0x1695d, 0x95a, 0x149a,\n    0xda4b, 0x1a4a, 0x1aa4, 0xbb54, 0x16b4, 0xada, 0x495b, 0x936,\n    0xf497, 0x1496, 0x154a, 0xb6a5, 0xda4, 0x15b4, 0x6ab6, 0x126e,\n    0x1092f, 0x92e, 0xc96, 0xcd4a, 0x1d4a, 0xd64, 0x956c, 0x155c,\n    0x125c, 0x792e, 0x192c, 0xfa95, 0x1a94, 0x1b4a, 0xab55, 0xad4,\n    0x14da, 0x8a5d, 0xa5a, 0x1152b, 0x152a, 0x1694, 0xd6aa, 0x15aa,\n    0xab4, 0x94ba, 0x14b6, 0xa56, 0x7527, 0xd26, 0xee53, 0xd54, 0x15aa,\n    0xa9b5, 0x96c, 0x14ae, 0x8a4e, 0x1a4c, 0x11d26, 0x1aa4, 0x1b54,\n    0xcd6a, 0xada, 0x95c, 0x949d, 0x149a, 0x1a2a, 0x5b25, 0x1aa4,\n    0xfb52, 0x16b4, 0xaba, 0xa95b, 0x936, 0x1496, 0x9a4b, 0x154a,\n    0x136a5, 0xda4, 0x15ac];\n\n// Table of Chinese New Years from year 1888 to 2111\n// \n// bits (0 to 4):   solar day\n// bits (5 to 8):   solar month\n// bits (9 to 20):  solar year\nvar CHINESE_NEW_YEAR = [1887, 0xec04c, 0xec23f, 0xec435, 0xec649,\n    0xec83e, 0xeca51, 0xecc46, 0xece3a, 0xed04d, 0xed242, 0xed436,\n    0xed64a, 0xed83f, 0xeda53, 0xedc48, 0xede3d, 0xee050, 0xee244,\n    0xee439, 0xee64d, 0xee842, 0xeea36, 0xeec4a, 0xeee3e, 0xef052,\n    0xef246, 0xef43a, 0xef64e, 0xef843, 0xefa37, 0xefc4b, 0xefe41,\n    0xf0054, 0xf0248, 0xf043c, 0xf0650, 0xf0845, 0xf0a38, 0xf0c4d,\n    0xf0e42, 0xf1037, 0xf124a, 0xf143e, 0xf1651, 0xf1846, 0xf1a3a,\n    0xf1c4e, 0xf1e44, 0xf2038, 0xf224b, 0xf243f, 0xf2653, 0xf2848,\n    0xf2a3b, 0xf2c4f, 0xf2e45, 0xf3039, 0xf324d, 0xf3442, 0xf3636,\n    0xf384a, 0xf3a3d, 0xf3c51, 0xf3e46, 0xf403b, 0xf424e, 0xf4443,\n    0xf4638, 0xf484c, 0xf4a3f, 0xf4c52, 0xf4e48, 0xf503c, 0xf524f,\n    0xf5445, 0xf5639, 0xf584d, 0xf5a42, 0xf5c35, 0xf5e49, 0xf603e,\n    0xf6251, 0xf6446, 0xf663b, 0xf684f, 0xf6a43, 0xf6c37, 0xf6e4b,\n    0xf703f, 0xf7252, 0xf7447, 0xf763c, 0xf7850, 0xf7a45, 0xf7c39,\n    0xf7e4d, 0xf8042, 0xf8254, 0xf8449, 0xf863d, 0xf8851, 0xf8a46,\n    0xf8c3b, 0xf8e4f, 0xf9044, 0xf9237, 0xf944a, 0xf963f, 0xf9853,\n    0xf9a47, 0xf9c3c, 0xf9e50, 0xfa045, 0xfa238, 0xfa44c, 0xfa641,\n    0xfa836, 0xfaa49, 0xfac3d, 0xfae52, 0xfb047, 0xfb23a, 0xfb44e,\n    0xfb643, 0xfb837, 0xfba4a, 0xfbc3f, 0xfbe53, 0xfc048, 0xfc23c,\n    0xfc450, 0xfc645, 0xfc839, 0xfca4c, 0xfcc41, 0xfce36, 0xfd04a,\n    0xfd23d, 0xfd451, 0xfd646, 0xfd83a, 0xfda4d, 0xfdc43, 0xfde37,\n    0xfe04b, 0xfe23f, 0xfe453, 0xfe648, 0xfe83c, 0xfea4f, 0xfec44,\n    0xfee38, 0xff04c, 0xff241, 0xff436, 0xff64a, 0xff83e, 0xffa51,\n    0xffc46, 0xffe3a, 0x10004e, 0x100242, 0x100437, 0x10064b, 0x100841,\n    0x100a53, 0x100c48, 0x100e3c, 0x10104f, 0x101244, 0x101438,\n    0x10164c, 0x101842, 0x101a35, 0x101c49, 0x101e3d, 0x102051,\n    0x102245, 0x10243a, 0x10264e, 0x102843, 0x102a37, 0x102c4b,\n    0x102e3f, 0x103053, 0x103247, 0x10343b, 0x10364f, 0x103845,\n    0x103a38, 0x103c4c, 0x103e42, 0x104036, 0x104249, 0x10443d,\n    0x104651, 0x104846, 0x104a3a, 0x104c4e, 0x104e43, 0x105038,\n    0x10524a, 0x10543e, 0x105652, 0x105847, 0x105a3b, 0x105c4f,\n    0x105e45, 0x106039, 0x10624c, 0x106441, 0x106635, 0x106849,\n    0x106a3d, 0x106c51, 0x106e47, 0x10703c, 0x10724f, 0x107444,\n    0x107638, 0x10784c, 0x107a3f, 0x107c53, 0x107e48];\n\nfunction toLunar(yearOrDate, monthOrResult, day, result) {\n    var solarDate;\n    var lunarDate;\n\n    if(typeof yearOrDate === 'object') {\n        solarDate = yearOrDate;\n        lunarDate = monthOrResult || {};\n\n    } else {\n        var isValidYear = (typeof yearOrDate === 'number') &&\n            (yearOrDate >= 1888) && (yearOrDate <= 2111);\n        if(!isValidYear)\n            throw new Error(\"Solar year outside range 1888-2111\");\n\n        var isValidMonth = (typeof monthOrResult === 'number') &&\n            (monthOrResult >= 1) && (monthOrResult <= 12);\n        if(!isValidMonth)\n            throw new Error(\"Solar month outside range 1 - 12\");\n\n        var isValidDay = (typeof day === 'number') && (day >= 1) && (day <= 31);\n        if(!isValidDay)\n            throw new Error(\"Solar day outside range 1 - 31\");\n\n        solarDate = {\n            year: yearOrDate,\n            month: monthOrResult,\n            day: day,\n        };\n        lunarDate = result || {};\n    }\n\n    // Compute Chinese new year and lunar year\n    var chineseNewYearPackedDate =\n        CHINESE_NEW_YEAR[solarDate.year - CHINESE_NEW_YEAR[0]];\n\n    var packedDate = (solarDate.year << 9) | (solarDate.month << 5)\n        | solarDate.day;\n\n    lunarDate.year = (packedDate >= chineseNewYearPackedDate) ?\n        solarDate.year :\n        solarDate.year - 1;\n\n    chineseNewYearPackedDate =\n        CHINESE_NEW_YEAR[lunarDate.year - CHINESE_NEW_YEAR[0]];\n\n    var y = (chineseNewYearPackedDate >> 9) & 0xFFF;\n    var m = (chineseNewYearPackedDate >> 5) & 0x0F;\n    var d = chineseNewYearPackedDate & 0x1F;\n\n    // Compute days from new year\n    var daysFromNewYear;\n\n    var chineseNewYearJSDate = new Date(y, m -1, d);\n    var jsDate = new Date(solarDate.year, solarDate.month - 1, solarDate.day);\n\n    daysFromNewYear = Math.round(\n        (jsDate - chineseNewYearJSDate) / (24 * 3600 * 1000));\n\n    // Compute lunar month and day\n    var monthDaysTable = LUNAR_MONTH_DAYS[lunarDate.year - LUNAR_MONTH_DAYS[0]];\n\n    var i;\n    for(i = 0; i < 13; i++) {\n        var daysInMonth = (monthDaysTable & (1 << (12 - i))) ? 30 : 29;\n\n        if (daysFromNewYear < daysInMonth) {\n            break;\n        }\n\n        daysFromNewYear -= daysInMonth;\n    }\n\n    var intercalaryMonth = monthDaysTable >> 13;\n    if (!intercalaryMonth || i < intercalaryMonth) {\n        lunarDate.isIntercalary = false;\n        lunarDate.month = 1 + i;\n    } else if (i === intercalaryMonth) {\n        lunarDate.isIntercalary = true;\n        lunarDate.month = i;\n    } else {\n        lunarDate.isIntercalary = false;\n        lunarDate.month = i;\n    }\n\n    lunarDate.day = 1 + daysFromNewYear;\n\n    return lunarDate;\n}\n\nfunction toSolar(yearOrDate, monthOrResult, day, isIntercalaryOrResult, result) {\n    var solarDate;\n    var lunarDate;\n\n    if(typeof yearOrDate === 'object') {\n        lunarDate = yearOrDate;\n        solarDate = monthOrResult || {};\n\n    } else {\n        var isValidYear = (typeof yearOrDate === 'number') &&\n            (yearOrDate >= 1888) && (yearOrDate <= 2111);\n        if(!isValidYear)\n            throw new Error(\"Lunar year outside range 1888-2111\");\n\n        var isValidMonth = (typeof monthOrResult === 'number') &&\n            (monthOrResult >= 1) && (monthOrResult <= 12);\n        if(!isValidMonth)\n            throw new Error(\"Lunar month outside range 1 - 12\");\n\n        var isValidDay = (typeof day === 'number') && (day >= 1) && (day <= 30);\n        if(!isValidDay)\n            throw new Error(\"Lunar day outside range 1 - 30\");\n\n        var isIntercalary;\n        if(typeof isIntercalaryOrResult === 'object') {\n            isIntercalary = false;\n            solarDate = isIntercalaryOrResult;\n        } else {\n            isIntercalary = !!isIntercalaryOrResult;\n            solarDate = result || {};\n        }\n\n        lunarDate = {\n            year: yearOrDate,\n            month: monthOrResult,\n            day: day,\n            isIntercalary: isIntercalary,\n        };\n    }\n\n    // Compute days from new year\n    var daysFromNewYear;\n\n    daysFromNewYear = lunarDate.day - 1;\n\n    var monthDaysTable = LUNAR_MONTH_DAYS[lunarDate.year - LUNAR_MONTH_DAYS[0]];\n    var intercalaryMonth = monthDaysTable >> 13;\n\n    var monthsFromNewYear;\n    if (!intercalaryMonth) {\n        monthsFromNewYear = lunarDate.month - 1;\n    } else if (lunarDate.month > intercalaryMonth) {\n        monthsFromNewYear = lunarDate.month;\n    } else if (lunarDate.isIntercalary) {\n        monthsFromNewYear = lunarDate.month;\n    } else {\n        monthsFromNewYear = lunarDate.month - 1;\n    }\n\n    for(var i = 0; i < monthsFromNewYear; i++) {\n        var daysInMonth = (monthDaysTable & (1 << (12 - i))) ? 30 : 29;\n        daysFromNewYear += daysInMonth;\n    }\n\n    // Compute Chinese new year\n    var packedDate = CHINESE_NEW_YEAR[lunarDate.year - CHINESE_NEW_YEAR[0]];\n\n    var y = (packedDate >> 9) & 0xFFF;\n    var m = (packedDate >> 5) & 0x0F;\n    var d = packedDate & 0x1F;\n\n    // Compute solar date\n    var jsDate = new Date(y, m - 1, d + daysFromNewYear);\n\n    solarDate.year = jsDate.getFullYear();\n    solarDate.month = 1 + jsDate.getMonth();\n    solarDate.day = jsDate.getDate();\n\n    return solarDate;\n}\n\n\n\n/***/ }),\n\n/***/ 38751:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_8249540__) {\n\n/*\n * World Calendars\n * https://github.com/alexcjohnson/world-calendars\n *\n * Batch-converted from kbwood/calendars\n * Many thanks to Keith Wood and all of the contributors to the original project!\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n﻿/* http://keith-wood.name/calendars.html\n   Coptic calendar for jQuery v2.0.2.\n   Written by Keith Wood (wood.keith{at}optusnet.com.au) February 2010.\n   Available under the MIT (http://keith-wood.name/licence.html) license. \n   Please attribute the author if you use it. */\n\nvar main = __nested_webpack_require_8249540__(63489);\nvar assign = __nested_webpack_require_8249540__(56131);\n\n\n/** Implementation of the Coptic calendar.\n    See <a href=\"http://en.wikipedia.org/wiki/Coptic_calendar\">http://en.wikipedia.org/wiki/Coptic_calendar</a>.\n    See also Calendrical Calculations: The Millennium Edition\n    (<a href=\"http://emr.cs.iit.edu/home/reingold/calendar-book/index.shtml\">http://emr.cs.iit.edu/home/reingold/calendar-book/index.shtml</a>).\n    @class CopticCalendar\n    @param [language=''] {string} The language code (default English) for localisation. */\nfunction CopticCalendar(language) {\n    this.local = this.regionalOptions[language || ''] || this.regionalOptions[''];\n}\n\nCopticCalendar.prototype = new main.baseCalendar;\n\nassign(CopticCalendar.prototype, {\n    /** The calendar name.\n        @memberof CopticCalendar */\n    name: 'Coptic',\n    /** Julian date of start of Coptic epoch: 29 August 284 CE (Gregorian).\n        @memberof CopticCalendar */\n    jdEpoch: 1825029.5,\n    /** Days per month in a common year.\n        @memberof CopticCalendar */\n    daysPerMonth: [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 5],\n    /** <code>true</code> if has a year zero, <code>false</code> if not.\n        @memberof CopticCalendar */\n    hasYearZero: false,\n    /** The minimum month number.\n        @memberof CopticCalendar */\n    minMonth: 1,\n    /** The first month in the year.\n        @memberof CopticCalendar */\n    firstMonth: 1,\n    /** The minimum day number.\n        @memberof CopticCalendar */\n    minDay: 1,\n\n    /** Localisations for the plugin.\n        Entries are objects indexed by the language code ('' being the default US/English).\n        Each object has the following attributes.\n        @memberof CopticCalendar\n        @property name {string} The calendar name.\n        @property epochs {string[]} The epoch names.\n        @property monthNames {string[]} The long names of the months of the year.\n        @property monthNamesShort {string[]} The short names of the months of the year.\n        @property dayNames {string[]} The long names of the days of the week.\n        @property dayNamesShort {string[]} The short names of the days of the week.\n        @property dayNamesMin {string[]} The minimal names of the days of the week.\n        @property dateFormat {string} The date format for this calendar.\n                See the options on <a href=\"BaseCalendar.html#formatDate\"><code>formatDate</code></a> for details.\n        @property firstDay {number} The number of the first day of the week, starting at 0.\n        @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */\n    regionalOptions: { // Localisations\n        '': {\n            name: 'Coptic',\n            epochs: ['BAM', 'AM'],\n            monthNames: ['Thout', 'Paopi', 'Hathor', 'Koiak', 'Tobi', 'Meshir',\n            'Paremhat', 'Paremoude', 'Pashons', 'Paoni', 'Epip', 'Mesori', 'Pi Kogi Enavot'],\n            monthNamesShort: ['Tho', 'Pao', 'Hath', 'Koi', 'Tob', 'Mesh',\n            'Pat', 'Pad', 'Pash', 'Pao', 'Epi', 'Meso', 'PiK'],\n            dayNames: ['Tkyriaka', 'Pesnau', 'Pshoment', 'Peftoou', 'Ptiou', 'Psoou', 'Psabbaton'],\n            dayNamesShort: ['Tky', 'Pes', 'Psh', 'Pef', 'Pti', 'Pso', 'Psa'],\n            dayNamesMin: ['Tk', 'Pes', 'Psh', 'Pef', 'Pt', 'Pso', 'Psa'],\n            digits: null,\n            dateFormat: 'dd/mm/yyyy',\n            firstDay: 0,\n            isRTL: false\n        }\n    },\n\n    /** Determine whether this date is in a leap year.\n        @memberof CopticCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.\n        @throws Error if an invalid year or a different calendar used. */\n    leapYear: function(year) {\n        var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        var year = date.year() + (date.year() < 0 ? 1 : 0); // No year zero\n        return year % 4 === 3 || year % 4 === -1;\n    },\n\n    /** Retrieve the number of months in a year.\n        @memberof CopticCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {number} The number of months.\n        @throws Error if an invalid year or a different calendar used. */\n    monthsInYear: function(year) {\n        this._validate(year, this.minMonth, this.minDay,\n            main.local.invalidYear || main.regionalOptions[''].invalidYear);\n        return 13;\n    },\n\n    /** Determine the week of the year for a date.\n        @memberof CopticCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number) the month to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The week of the year.\n        @throws Error if an invalid date or a different calendar used. */\n    weekOfYear: function(year, month, day) {\n        // Find Sunday of this week starting on Sunday\n        var checkDate = this.newDate(year, month, day);\n        checkDate.add(-checkDate.dayOfWeek(), 'd');\n        return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n    },\n\n    /** Retrieve the number of days in a month.\n        @memberof CopticCalendar\n        @param year {CDate|number} The date to examine or the year of the month.\n        @param [month] {number} The month.\n        @return {number} The number of days in this month.\n        @throws Error if an invalid month/year or a different calendar used. */\n    daysInMonth: function(year, month) {\n        var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n        return this.daysPerMonth[date.month() - 1] +\n            (date.month() === 13 && this.leapYear(date.year()) ? 1 : 0);\n    },\n\n    /** Determine whether this date is a week day.\n        @memberof CopticCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param month {number} The month to examine.\n        @param day {number} The day to examine.\n        @return {boolean} <code>true</code> if a week day, <code>false</code> if not.\n        @throws Error if an invalid date or a different calendar used. */\n    weekDay: function(year, month, day) {\n        return (this.dayOfWeek(year, month, day) || 7) < 6;\n    },\n\n    /** Retrieve the Julian date equivalent for this date,\n        i.e. days since January 1, 4713 BCE Greenwich noon.\n        @memberof CopticCalendar\n        @param year {CDate|number} The date to convert or the year to convert.\n        @param [month] {number) the month to convert.\n        @param [day] {number} The day to convert.\n        @return {number} The equivalent Julian date.\n        @throws Error if an invalid date or a different calendar used. */\n    toJD: function(year, month, day) {\n        var date = this._validate(year, month, day, main.local.invalidDate);\n        year = date.year();\n        if (year < 0) { year++; } // No year zero\n        return date.day() + (date.month() - 1) * 30 +\n            (year - 1) * 365 + Math.floor(year / 4) + this.jdEpoch - 1;\n    },\n\n    /** Create a new date from a Julian date.\n        @memberof CopticCalendar\n        @param jd {number} The Julian date to convert.\n        @return {CDate} The equivalent date. */\n    fromJD: function(jd) {\n        var c = Math.floor(jd) + 0.5 - this.jdEpoch;\n        var year = Math.floor((c - Math.floor((c + 366) / 1461)) / 365) + 1;\n        if (year <= 0) { year--; } // No year zero\n        c = Math.floor(jd) + 0.5 - this.newDate(year, 1, 1).toJD();\n        var month = Math.floor(c / 30) + 1;\n        var day = c - (month - 1) * 30 + 1;\n        return this.newDate(year, month, day);\n    }\n});\n\n// Coptic calendar implementation\nmain.calendars.coptic = CopticCalendar;\n\n\n\n/***/ }),\n\n/***/ 86825:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_8258069__) {\n\n/*\n * World Calendars\n * https://github.com/alexcjohnson/world-calendars\n *\n * Batch-converted from kbwood/calendars\n * Many thanks to Keith Wood and all of the contributors to the original project!\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n﻿/* http://keith-wood.name/calendars.html\n   Discworld calendar for jQuery v2.0.2.\n   Written by Keith Wood (wood.keith{at}optusnet.com.au) January 2016.\n   Available under the MIT (http://keith-wood.name/licence.html) license. \n   Please attribute the author if you use it. */\n\nvar main = __nested_webpack_require_8258069__(63489);\nvar assign = __nested_webpack_require_8258069__(56131);\n\n\n/** Implementation of the Discworld calendar - Unseen University version.\n    See also <a href=\"http://wiki.lspace.org/mediawiki/Discworld_calendar\">http://wiki.lspace.org/mediawiki/Discworld_calendar</a>\n    and <a href=\"http://discworld.wikia.com/wiki/Discworld_calendar\">http://discworld.wikia.com/wiki/Discworld_calendar</a>.\n    @class DiscworldCalendar\n    @param [language=''] {string} The language code (default English) for localisation. */\nfunction DiscworldCalendar(language) {\n    this.local = this.regionalOptions[language || ''] || this.regionalOptions[''];\n}\n\nDiscworldCalendar.prototype = new main.baseCalendar;\n\nassign(DiscworldCalendar.prototype, {\n    /** The calendar name.\n        @memberof DiscworldCalendar */\n    name: 'Discworld',\n    /** Julian date of start of Discworld epoch: 1 January 0001 CE.\n        @memberof DiscworldCalendar */\n    jdEpoch: 1721425.5,\n    /** Days per month in a common year.\n        @memberof DiscworldCalendar */\n    daysPerMonth: [16, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32],\n    /** <code>true</code> if has a year zero, <code>false</code> if not.\n        @memberof DiscworldCalendar */\n    hasYearZero: false,\n    /** The minimum month number.\n        @memberof DiscworldCalendar */\n    minMonth: 1,\n    /** The first month in the year.\n        @memberof DiscworldCalendar */\n    firstMonth: 1,\n    /** The minimum day number.\n        @memberof DiscworldCalendar */\n    minDay: 1,\n\n    /** Localisations for the plugin.\n        Entries are objects indexed by the language code ('' being the default US/English).\n        Each object has the following attributes.\n        @memberof DiscworldCalendar\n        @property name {string} The calendar name.\n        @property epochs {string[]} The epoch names.\n        @property monthNames {string[]} The long names of the months of the year.\n        @property monthNamesShort {string[]} The short names of the months of the year.\n        @property dayNames {string[]} The long names of the days of the week.\n        @property dayNamesShort {string[]} The short names of the days of the week.\n        @property dayNamesMin {string[]} The minimal names of the days of the week.\n        @property dateFormat {string} The date format for this calendar.\n                See the options on <a href=\"BaseCalendar.html#formatDate\"><code>formatDate</code></a> for details.\n        @property firstDay {number} The number of the first day of the week, starting at 0.\n        @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */\n    regionalOptions: { // Localisations\n        '': {\n            name: 'Discworld',\n            epochs: ['BUC', 'UC'],\n            monthNames: ['Ick', 'Offle', 'February', 'March', 'April', 'May', 'June',\n            'Grune', 'August', 'Spune', 'Sektober', 'Ember', 'December'],\n            monthNamesShort: ['Ick', 'Off', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Gru', 'Aug', 'Spu', 'Sek', 'Emb', 'Dec'],\n            dayNames: ['Sunday', 'Octeday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n            dayNamesShort: ['Sun', 'Oct', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n            dayNamesMin: ['Su', 'Oc', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n            digits: null,\n            dateFormat: 'yyyy/mm/dd',\n            firstDay: 2,\n            isRTL: false\n        }\n    },\n\n    /** Determine whether this date is in a leap year.\n        @memberof DiscworldCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.\n        @throws Error if an invalid year or a different calendar used. */\n    leapYear: function(year) {\n        this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        return false;\n    },\n\n    /** Retrieve the number of months in a year.\n        @memberof DiscworldCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {number} The number of months.\n        @throws Error if an invalid year or a different calendar used. */\n    monthsInYear: function(year) {\n        this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        return 13;\n    },\n\n    /** Retrieve the number of days in a year.\n        @memberof DiscworldCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {number} The number of days.\n        @throws Error if an invalid year or a different calendar used. */\n    daysInYear: function(year) {\n        this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        return 400;\n    },\n\n    /** Determine the week of the year for a date.\n        @memberof DiscworldCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The week of the year.\n        @throws Error if an invalid date or a different calendar used. */\n    weekOfYear: function(year, month, day) {\n        // Find Sunday of this week starting on Sunday\n        var checkDate = this.newDate(year, month, day);\n        checkDate.add(-checkDate.dayOfWeek(), 'd');\n        return Math.floor((checkDate.dayOfYear() - 1) / 8) + 1;\n    },\n\n    /** Retrieve the number of days in a month.\n        @memberof DiscworldCalendar\n        @param year {CDate|number} The date to examine or the year of the month.\n        @param [month] {number} The month.\n        @return {number} The number of days in this month.\n        @throws Error if an invalid month/year or a different calendar used. */\n    daysInMonth: function(year, month) {\n        var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n        return this.daysPerMonth[date.month() - 1];\n    },\n\n    /** Retrieve the number of days in a week.\n        @memberof DiscworldCalendar\n        @return {number} The number of days. */\n    daysInWeek: function() {\n        return 8;\n    },\n\n    /** Retrieve the day of the week for a date.\n        @memberof DiscworldCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The day of the week: 0 to number of days - 1.\n        @throws Error if an invalid date or a different calendar used. */\n    dayOfWeek: function(year, month, day) {\n        var date = this._validate(year, month, day, main.local.invalidDate);\n        return (date.day() + 1) % 8;\n    },\n\n    /** Determine whether this date is a week day.\n        @memberof DiscworldCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {boolean} <code>true</code> if a week day, <code>false</code> if not.\n        @throws Error if an invalid date or a different calendar used. */\n    weekDay: function(year, month, day) {\n        var dow = this.dayOfWeek(year, month, day);\n        return (dow >= 2 && dow <= 6);\n    },\n\n    /** Retrieve additional information about a date.\n        @memberof DiscworldCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {object} Additional information - contents depends on calendar.\n        @throws Error if an invalid date or a different calendar used. */\n    extraInfo: function(year, month, day) {\n        var date = this._validate(year, month, day, main.local.invalidDate);\n        return {century: centuries[Math.floor((date.year() - 1) / 100) + 1] || ''};\n    },\n\n    /** Retrieve the Julian date equivalent for this date,\n        i.e. days since January 1, 4713 BCE Greenwich noon.\n        @memberof DiscworldCalendar\n        @param year {CDate|number} The date to convert or the year to convert.\n        @param [month] {number} The month to convert.\n        @param [day] {number} The day to convert.\n        @return {number} The equivalent Julian date.\n        @throws Error if an invalid date or a different calendar used. */\n    toJD: function(year, month, day) {\n        var date = this._validate(year, month, day, main.local.invalidDate);\n        year = date.year() + (date.year() < 0 ? 1 : 0);\n        month = date.month();\n        day = date.day();\n        return day + (month > 1 ? 16 : 0) + (month > 2 ? (month - 2) * 32 : 0) +\n            (year - 1) * 400 + this.jdEpoch - 1;\n    },\n\n    /** Create a new date from a Julian date.\n        @memberof DiscworldCalendar\n        @param jd {number} The Julian date to convert.\n        @return {CDate} The equivalent date. */\n    fromJD: function(jd) {\n        jd = Math.floor(jd + 0.5) - Math.floor(this.jdEpoch) - 1;\n        var year = Math.floor(jd / 400) + 1;\n        jd -= (year - 1) * 400;\n        jd += (jd > 15 ? 16 : 0);\n        var month = Math.floor(jd / 32) + 1;\n        var day = jd - (month - 1) * 32 + 1;\n        return this.newDate(year <= 0 ? year - 1 : year, month, day);\n    }\n});\n\n// Names of the centuries\nvar centuries = {\n    20: 'Fruitbat',\n    21: 'Anchovy'\n};\n\n// Discworld calendar implementation\nmain.calendars.discworld = DiscworldCalendar;\n\n\n\n/***/ }),\n\n/***/ 37715:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_8268323__) {\n\n/*\n * World Calendars\n * https://github.com/alexcjohnson/world-calendars\n *\n * Batch-converted from kbwood/calendars\n * Many thanks to Keith Wood and all of the contributors to the original project!\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n﻿/* http://keith-wood.name/calendars.html\n   Ethiopian calendar for jQuery v2.0.2.\n   Written by Keith Wood (wood.keith{at}optusnet.com.au) February 2010.\n   Available under the MIT (http://keith-wood.name/licence.html) license. \n   Please attribute the author if you use it. */\n\nvar main = __nested_webpack_require_8268323__(63489);\nvar assign = __nested_webpack_require_8268323__(56131);\n\n\n/** Implementation of the Ethiopian calendar.\n    See <a href=\"http://en.wikipedia.org/wiki/Ethiopian_calendar\">http://en.wikipedia.org/wiki/Ethiopian_calendar</a>.\n    See also Calendrical Calculations: The Millennium Edition\n    (<a href=\"http://emr.cs.iit.edu/home/reingold/calendar-book/index.shtml\">http://emr.cs.iit.edu/home/reingold/calendar-book/index.shtml</a>).\n    @class EthiopianCalendar\n    @param [language=''] {string} The language code (default English) for localisation. */\nfunction EthiopianCalendar(language) {\n    this.local = this.regionalOptions[language || ''] || this.regionalOptions[''];\n}\n\nEthiopianCalendar.prototype = new main.baseCalendar;\n\nassign(EthiopianCalendar.prototype, {\n    /** The calendar name.\n        @memberof EthiopianCalendar */\n    name: 'Ethiopian',\n    /** Julian date of start of Ethiopian epoch: 27 August 8 CE (Gregorian).\n        @memberof EthiopianCalendar */\n    jdEpoch: 1724220.5,\n    /** Days per month in a common year.\n        @memberof EthiopianCalendar */\n    daysPerMonth: [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 5],\n    /** <code>true</code> if has a year zero, <code>false</code> if not.\n        @memberof EthiopianCalendar */\n    hasYearZero: false,\n    /** The minimum month number.\n        @memberof EthiopianCalendar */\n    minMonth: 1,\n    /** The first month in the year.\n        @memberof EthiopianCalendar */\n    firstMonth: 1,\n    /** The minimum day number.\n        @memberof EthiopianCalendar */\n    minDay: 1,\n\n    /** Localisations for the plugin.\n        Entries are objects indexed by the language code ('' being the default US/English).\n        Each object has the following attributes.\n        @memberof EthiopianCalendar\n        @property name {string} The calendar name.\n        @property epochs {string[]} The epoch names.\n        @property monthNames {string[]} The long names of the months of the year.\n        @property monthNamesShort {string[]} The short names of the months of the year.\n        @property dayNames {string[]} The long names of the days of the week.\n        @property dayNamesShort {string[]} The short names of the days of the week.\n        @property dayNamesMin {string[]} The minimal names of the days of the week.\n        @property dateFormat {string} The date format for this calendar.\n                See the options on <a href=\"BaseCalendar.html#formatDate\"><code>formatDate</code></a> for details.\n        @property firstDay {number} The number of the first day of the week, starting at 0.\n        @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */\n    regionalOptions: { // Localisations\n        '': {\n            name: 'Ethiopian',\n            epochs: ['BEE', 'EE'],\n            monthNames: ['Meskerem', 'Tikemet', 'Hidar', 'Tahesas', 'Tir', 'Yekatit',\n            'Megabit', 'Miazia', 'Genbot', 'Sene', 'Hamle', 'Nehase', 'Pagume'],\n            monthNamesShort: ['Mes', 'Tik', 'Hid', 'Tah', 'Tir', 'Yek',\n            'Meg', 'Mia', 'Gen', 'Sen', 'Ham', 'Neh', 'Pag'],\n            dayNames: ['Ehud', 'Segno', 'Maksegno', 'Irob', 'Hamus', 'Arb', 'Kidame'],\n            dayNamesShort: ['Ehu', 'Seg', 'Mak', 'Iro', 'Ham', 'Arb', 'Kid'],\n            dayNamesMin: ['Eh', 'Se', 'Ma', 'Ir', 'Ha', 'Ar', 'Ki'],\n            digits: null,\n            dateFormat: 'dd/mm/yyyy',\n            firstDay: 0,\n            isRTL: false\n        }\n    },\n\n    /** Determine whether this date is in a leap year.\n        @memberof EthiopianCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.\n        @throws Error if an invalid year or a different calendar used. */\n    leapYear: function(year) {\n        var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        var year = date.year() + (date.year() < 0 ? 1 : 0); // No year zero\n        return year % 4 === 3 || year % 4 === -1;\n    },\n\n    /** Retrieve the number of months in a year.\n        @memberof EthiopianCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {number} The number of months.\n        @throws Error if an invalid year or a different calendar used. */\n    monthsInYear: function(year) {\n        this._validate(year, this.minMonth, this.minDay,\n            main.local.invalidYear || main.regionalOptions[''].invalidYear);\n        return 13;\n    },\n\n    /** Determine the week of the year for a date.\n        @memberof EthiopianCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The week of the year.\n        @throws Error if an invalid date or a different calendar used. */\n    weekOfYear: function(year, month, day) {\n        // Find Sunday of this week starting on Sunday\n        var checkDate = this.newDate(year, month, day);\n        checkDate.add(-checkDate.dayOfWeek(), 'd');\n        return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n    },\n\n    /** Retrieve the number of days in a month.\n        @memberof EthiopianCalendar\n        @param year {CDate|number} The date to examine or the year of the month.\n        @param [month] {number} The month.\n        @return {number} The number of days in this month.\n        @throws Error if an invalid month/year or a different calendar used. */\n    daysInMonth: function(year, month) {\n        var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n        return this.daysPerMonth[date.month() - 1] +\n            (date.month() === 13 && this.leapYear(date.year()) ? 1 : 0);\n    },\n\n    /** Determine whether this date is a week day.\n        @memberof EthiopianCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {boolean} <code>true</code> if a week day, <code>false</code> if not.\n        @throws Error if an invalid date or a different calendar used. */\n    weekDay: function(year, month, day) {\n        return (this.dayOfWeek(year, month, day) || 7) < 6;\n    },\n\n    /** Retrieve the Julian date equivalent for this date,\n        i.e. days since January 1, 4713 BCE Greenwich noon.\n        @memberof EthiopianCalendar\n        @param year {CDate|number} The date to convert or the year to convert.\n        @param [month] {number} The month to convert.\n        @param [day] {number} The day to convert.\n        @return {number} The equivalent Julian date.\n        @throws Error if an invalid date or a different calendar used. */\n    toJD: function(year, month, day) {\n        var date = this._validate(year, month, day, main.local.invalidDate);\n        year = date.year();\n        if (year < 0) { year++; } // No year zero\n        return date.day() + (date.month() - 1) * 30 +\n            (year - 1) * 365 + Math.floor(year / 4) + this.jdEpoch - 1;\n    },\n\n    /** Create a new date from a Julian date.\n        @memberof EthiopianCalendar\n        @param jd {number} the Julian date to convert.\n        @return {CDate} the equivalent date. */\n    fromJD: function(jd) {\n        var c = Math.floor(jd) + 0.5 - this.jdEpoch;\n        var year = Math.floor((c - Math.floor((c + 366) / 1461)) / 365) + 1;\n        if (year <= 0) { year--; } // No year zero\n        c = Math.floor(jd) + 0.5 - this.newDate(year, 1, 1).toJD();\n        var month = Math.floor(c / 30) + 1;\n        var day = c - (month - 1) * 30 + 1;\n        return this.newDate(year, month, day);\n    }\n});\n\n// Ethiopian calendar implementation\nmain.calendars.ethiopian = EthiopianCalendar;\n\n\n\n/***/ }),\n\n/***/ 99384:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_8276912__) {\n\n/*\n * World Calendars\n * https://github.com/alexcjohnson/world-calendars\n *\n * Batch-converted from kbwood/calendars\n * Many thanks to Keith Wood and all of the contributors to the original project!\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n﻿/* http://keith-wood.name/calendars.html\n   Hebrew calendar for jQuery v2.0.2.\n   Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009.\n   Available under the MIT (http://keith-wood.name/licence.html) license. \n   Please attribute the author if you use it. */\n\nvar main = __nested_webpack_require_8276912__(63489);\nvar assign = __nested_webpack_require_8276912__(56131);\n\n\n/** Implementation of the Hebrew civil calendar.\n    Based on code from <a href=\"http://www.fourmilab.ch/documents/calendar/\">http://www.fourmilab.ch/documents/calendar/</a>.\n    See also <a href=\"http://en.wikipedia.org/wiki/Hebrew_calendar\">http://en.wikipedia.org/wiki/Hebrew_calendar</a>.\n    @class HebrewCalendar\n    @param [language=''] {string} The language code (default English) for localisation. */\nfunction HebrewCalendar(language) {\n    this.local = this.regionalOptions[language || ''] || this.regionalOptions[''];\n}\n\nHebrewCalendar.prototype = new main.baseCalendar;\n\nassign(HebrewCalendar.prototype, {\n    /** The calendar name.\n        @memberof HebrewCalendar */\n    name: 'Hebrew',\n    /** Julian date of start of Hebrew epoch: 7 October 3761 BCE.\n        @memberof HebrewCalendar */\n    jdEpoch: 347995.5,\n    /** Days per month in a common year.\n        @memberof HebrewCalendar */\n    daysPerMonth: [30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 29],\n    /** <code>true</code> if has a year zero, <code>false</code> if not.\n        @memberof HebrewCalendar */\n    hasYearZero: false,\n    /** The minimum month number.\n        @memberof HebrewCalendar */\n    minMonth: 1,\n    /** The first month in the year.\n        @memberof HebrewCalendar */\n    firstMonth: 7,\n    /** The minimum day number.\n        @memberof HebrewCalendar */\n    minDay: 1,\n\n    /** Localisations for the plugin.\n        Entries are objects indexed by the language code ('' being the default US/English).\n        Each object has the following attributes.\n        @memberof HebrewCalendar\n        @property name {string} The calendar name.\n        @property epochs {string[]} The epoch names.\n        @property monthNames {string[]} The long names of the months of the year.\n        @property monthNamesShort {string[]} The short names of the months of the year.\n        @property dayNames {string[]} The long names of the days of the week.\n        @property dayNamesShort {string[]} The short names of the days of the week.\n        @property dayNamesMin {string[]} The minimal names of the days of the week.\n        @property dateFormat {string} The date format for this calendar.\n                See the options on <a href=\"BaseCalendar.html#formatDate\"><code>formatDate</code></a> for details.\n        @property firstDay {number} The number of the first day of the week, starting at 0.\n        @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */\n    regionalOptions: { // Localisations\n        '': {\n            name: 'Hebrew',\n            epochs: ['BAM', 'AM'],\n            monthNames: ['Nisan', 'Iyar', 'Sivan', 'Tammuz', 'Av', 'Elul',\n            'Tishrei', 'Cheshvan', 'Kislev', 'Tevet', 'Shevat', 'Adar', 'Adar II'],\n            monthNamesShort: ['Nis', 'Iya', 'Siv', 'Tam', 'Av', 'Elu', 'Tis', 'Che', 'Kis', 'Tev', 'She', 'Ada', 'Ad2'],\n            dayNames: ['Yom Rishon', 'Yom Sheni', 'Yom Shlishi', 'Yom Revi\\'i', 'Yom Chamishi', 'Yom Shishi', 'Yom Shabbat'],\n            dayNamesShort: ['Ris', 'She', 'Shl', 'Rev', 'Cha', 'Shi', 'Sha'],\n            dayNamesMin: ['Ri','She','Shl','Re','Ch','Shi','Sha'],\n            digits: null,\n            dateFormat: 'dd/mm/yyyy',\n            firstDay: 0,\n            isRTL: false\n        }\n    },\n\n    /** Determine whether this date is in a leap year.\n        @memberof HebrewCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.\n        @throws Error if an invalid year or a different calendar used. */\n    leapYear: function(year) {\n        var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        return this._leapYear(date.year());\n    },\n\n    /** Determine whether this date is in a leap year.\n        @memberof HebrewCalendar\n        @private\n        @param year {number} The year to examine.\n        @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.\n        @throws Error if an invalid year or a different calendar used. */\n    _leapYear: function(year) {\n        year = (year < 0 ? year + 1 : year);\n        return mod(year * 7 + 1, 19) < 7;\n    },\n\n    /** Retrieve the number of months in a year.\n        @memberof HebrewCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {number} The number of months.\n        @throws Error if an invalid year or a different calendar used. */\n    monthsInYear: function(year) {\n        this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        return this._leapYear(year.year ? year.year() : year) ? 13 : 12;\n    },\n\n    /** Determine the week of the year for a date.\n        @memberof HebrewCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The week of the year.\n        @throws Error if an invalid date or a different calendar used. */\n    weekOfYear: function(year, month, day) {\n        // Find Sunday of this week starting on Sunday\n        var checkDate = this.newDate(year, month, day);\n        checkDate.add(-checkDate.dayOfWeek(), 'd');\n        return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n    },\n\n    /** Retrieve the number of days in a year.\n        @memberof HebrewCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {number} The number of days.\n        @throws Error if an invalid year or a different calendar used. */\n    daysInYear: function(year) {\n        var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        year = date.year();\n        return this.toJD((year === -1 ? +1 : year + 1), 7, 1) - this.toJD(year, 7, 1);\n    },\n\n    /** Retrieve the number of days in a month.\n        @memberof HebrewCalendar\n        @param year {CDate|number} The date to examine or the year of the month.\n        @param [month] {number} The month.\n        @return {number} The number of days in this month.\n        @throws Error if an invalid month/year or a different calendar used. */\n    daysInMonth: function(year, month) {\n        if (year.year) {\n            month = year.month();\n            year = year.year();\n        }\n        this._validate(year, month, this.minDay, main.local.invalidMonth);\n        return (month === 12 && this.leapYear(year) ? 30 : // Adar I\n                (month === 8 && mod(this.daysInYear(year), 10) === 5 ? 30 : // Cheshvan in shlemah year\n                (month === 9 && mod(this.daysInYear(year), 10) === 3 ? 29 : // Kislev in chaserah year\n                this.daysPerMonth[month - 1])));\n    },\n\n    /** Determine whether this date is a week day.\n        @memberof HebrewCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {boolean} <code>true</code> if a week day, <code>false</code> if not.\n        @throws Error if an invalid date or a different calendar used. */\n    weekDay: function(year, month, day) {\n        return this.dayOfWeek(year, month, day) !== 6;\n    },\n\n    /** Retrieve additional information about a date - year type.\n        @memberof HebrewCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {object} Additional information - contents depends on calendar.\n        @throws Error if an invalid date or a different calendar used. */\n    extraInfo: function(year, month, day) {\n        var date = this._validate(year, month, day, main.local.invalidDate);\n        return {yearType: (this.leapYear(date) ? 'embolismic' : 'common') + ' ' +\n            ['deficient', 'regular', 'complete'][this.daysInYear(date) % 10 - 3]};\n    },\n\n    /** Retrieve the Julian date equivalent for this date,\n        i.e. days since January 1, 4713 BCE Greenwich noon.\n        @memberof HebrewCalendar\n        @param year {CDate)|number} The date to convert or the year to convert.\n        @param [month] {number} The month to convert.\n        @param [day] {number} The day to convert.\n        @return {number} The equivalent Julian date.\n        @throws Error if an invalid date or a different calendar used. */\n    toJD: function(year, month, day) {\n        var date = this._validate(year, month, day, main.local.invalidDate);\n        year = date.year();\n        month = date.month();\n        day = date.day();\n        var adjYear = (year <= 0 ? year + 1 : year);\n        var jd = this.jdEpoch + this._delay1(adjYear) +\n            this._delay2(adjYear) + day + 1;\n        if (month < 7) {\n            for (var m = 7; m <= this.monthsInYear(year); m++) {\n                jd += this.daysInMonth(year, m);\n            }\n            for (var m = 1; m < month; m++) {\n                jd += this.daysInMonth(year, m);\n            }\n        }\n        else {\n            for (var m = 7; m < month; m++) {\n                jd += this.daysInMonth(year, m);\n            }\n        }\n        return jd;\n    },\n\n    /** Test for delay of start of new year and to avoid\n        Sunday, Wednesday, or Friday as start of the new year.\n        @memberof HebrewCalendar\n        @private\n        @param year {number} The year to examine.\n        @return {number} The days to offset by. */\n    _delay1: function(year) {\n        var months = Math.floor((235 * year - 234) / 19);\n        var parts = 12084 + 13753 * months;\n        var day = months * 29 + Math.floor(parts / 25920);\n        if (mod(3 * (day + 1), 7) < 3) {\n            day++;\n        }\n        return day;\n    },\n\n    /** Check for delay in start of new year due to length of adjacent years.\n        @memberof HebrewCalendar\n        @private\n        @param year {number} The year to examine.\n        @return {number} The days to offset by. */\n    _delay2: function(year) {\n        var last = this._delay1(year - 1);\n        var present = this._delay1(year);\n        var next = this._delay1(year + 1);\n        return ((next - present) === 356 ? 2 : ((present - last) === 382 ? 1 : 0));\n    },\n\n    /** Create a new date from a Julian date.\n        @memberof HebrewCalendar\n        @param jd {number} The Julian date to convert.\n        @return {CDate} The equivalent date. */\n    fromJD: function(jd) {\n        jd = Math.floor(jd) + 0.5;\n        var year = Math.floor(((jd - this.jdEpoch) * 98496.0) / 35975351.0) - 1;\n        while (jd >= this.toJD((year === -1 ? +1 : year + 1), 7, 1)) {\n            year++;\n        }\n        var month = (jd < this.toJD(year, 1, 1)) ? 7 : 1;\n        while (jd > this.toJD(year, month, this.daysInMonth(year, month))) {\n            month++;\n        }\n        var day = jd - this.toJD(year, month, 1) + 1;\n        return this.newDate(year, month, day);\n    }\n});\n\n// Modulus function which works for non-integers.\nfunction mod(a, b) {\n    return a - (b * Math.floor(a / b));\n}\n\n// Hebrew calendar implementation\nmain.calendars.hebrew = HebrewCalendar;\n\n\n\n/***/ }),\n\n/***/ 43805:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_8288975__) {\n\n/*\n * World Calendars\n * https://github.com/alexcjohnson/world-calendars\n *\n * Batch-converted from kbwood/calendars\n * Many thanks to Keith Wood and all of the contributors to the original project!\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n﻿/* http://keith-wood.name/calendars.html\n   Islamic calendar for jQuery v2.0.2.\n   Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009.\n   Available under the MIT (http://keith-wood.name/licence.html) license. \n   Please attribute the author if you use it. */\n\nvar main = __nested_webpack_require_8288975__(63489);\nvar assign = __nested_webpack_require_8288975__(56131);\n\n\n/** Implementation of the Islamic or '16 civil' calendar.\n    Based on code from <a href=\"http://www.iranchamber.com/calendar/converter/iranian_calendar_converter.php\">http://www.iranchamber.com/calendar/converter/iranian_calendar_converter.php</a>.\n    See also <a href=\"http://en.wikipedia.org/wiki/Islamic_calendar\">http://en.wikipedia.org/wiki/Islamic_calendar</a>.\n    @class IslamicCalendar\n    @param [language=''] {string} The language code (default English) for localisation. */\nfunction IslamicCalendar(language) {\n    this.local = this.regionalOptions[language || ''] || this.regionalOptions[''];\n}\n\nIslamicCalendar.prototype = new main.baseCalendar;\n\nassign(IslamicCalendar.prototype, {\n    /** The calendar name.\n        @memberof IslamicCalendar */\n    name: 'Islamic',\n    /** Julian date of start of Islamic epoch: 16 July 622 CE.\n        @memberof IslamicCalendar */\n    jdEpoch: 1948439.5,\n    /** Days per month in a common year.\n        @memberof IslamicCalendar */\n    daysPerMonth: [30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29],\n    /** <code>true</code> if has a year zero, <code>false</code> if not.\n        @memberof IslamicCalendar */\n    hasYearZero: false,\n    /** The minimum month number.\n        @memberof IslamicCalendar */\n    minMonth: 1,\n    /** The first month in the year.\n        @memberof IslamicCalendar */\n    firstMonth: 1,\n    /** The minimum day number.\n        @memberof IslamicCalendar */\n    minDay: 1,\n\n    /** Localisations for the plugin.\n        Entries are objects indexed by the language code ('' being the default US/English).\n        Each object has the following attributes.\n        @memberof IslamicCalendar\n        @property name {string} The calendar name.\n        @property epochs {string[]} The epoch names.\n        @property monthNames {string[]} The long names of the months of the year.\n        @property monthNamesShort {string[]} The short names of the months of the year.\n        @property dayNames {string[]} The long names of the days of the week.\n        @property dayNamesShort {string[]} The short names of the days of the week.\n        @property dayNamesMin {string[]} The minimal names of the days of the week.\n        @property dateFormat {string} The date format for this calendar.\n                See the options on <a href=\"BaseCalendar.html#formatDate\"><code>formatDate</code></a> for details.\n        @property firstDay {number} The number of the first day of the week, starting at 0.\n        @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */\n    regionalOptions: { // Localisations\n        '': {\n            name: 'Islamic',\n            epochs: ['BH', 'AH'],\n            monthNames: ['Muharram', 'Safar', 'Rabi\\' al-awwal', 'Rabi\\' al-thani', 'Jumada al-awwal', 'Jumada al-thani',\n            'Rajab', 'Sha\\'aban', 'Ramadan', 'Shawwal', 'Dhu al-Qi\\'dah', 'Dhu al-Hijjah'],\n            monthNamesShort: ['Muh', 'Saf', 'Rab1', 'Rab2', 'Jum1', 'Jum2', 'Raj', 'Sha\\'', 'Ram', 'Shaw', 'DhuQ', 'DhuH'],\n            dayNames: ['Yawm al-ahad', 'Yawm al-ithnayn', 'Yawm ath-thulaathaa\\'',\n            'Yawm al-arbi\\'aa\\'', 'Yawm al-khamīs', 'Yawm al-jum\\'a', 'Yawm as-sabt'],\n            dayNamesShort: ['Aha', 'Ith', 'Thu', 'Arb', 'Kha', 'Jum', 'Sab'],\n            dayNamesMin: ['Ah','It','Th','Ar','Kh','Ju','Sa'],\n            digits: null,\n            dateFormat: 'yyyy/mm/dd',\n            firstDay: 6,\n            isRTL: false\n        }\n    },\n\n    /** Determine whether this date is in a leap year.\n        @memberof IslamicCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.\n        @throws Error if an invalid year or a different calendar used. */\n    leapYear: function(year) {\n        var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        return (date.year() * 11 + 14) % 30 < 11;\n    },\n\n    /** Determine the week of the year for a date.\n        @memberof IslamicCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The week of the year.\n        @throws Error if an invalid date or a different calendar used. */\n    weekOfYear: function(year, month, day) {\n        // Find Sunday of this week starting on Sunday\n        var checkDate = this.newDate(year, month, day);\n        checkDate.add(-checkDate.dayOfWeek(), 'd');\n        return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n    },\n\n    /** Retrieve the number of days in a year.\n        @memberof IslamicCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {number} The number of days.\n        @throws Error if an invalid year or a different calendar used. */\n    daysInYear: function(year) {\n        return (this.leapYear(year) ? 355 : 354);\n    },\n\n    /** Retrieve the number of days in a month.\n        @memberof IslamicCalendar\n        @param year {CDate|number} The date to examine or the year of the month.\n        @param [month] {number} The month.\n        @return {number} The number of days in this month.\n        @throws Error if an invalid month/year or a different calendar used. */\n    daysInMonth: function(year, month) {\n        var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n        return this.daysPerMonth[date.month() - 1] +\n            (date.month() === 12 && this.leapYear(date.year()) ? 1 : 0);\n    },\n\n    /** Determine whether this date is a week day.\n        @memberof IslamicCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {boolean} <code>true</code> if a week day, <code>false</code> if not.\n        @throws Error if an invalid date or a different calendar used. */\n    weekDay: function(year, month, day) {\n        return this.dayOfWeek(year, month, day) !== 5;\n    },\n\n    /** Retrieve the Julian date equivalent for this date,\n        i.e. days since January 1, 4713 BCE Greenwich noon.\n        @memberof IslamicCalendar\n        @param year {CDate|number} The date to convert or the year to convert.\n        @param [month] {number} The month to convert.\n        @param [day] {number} The day to convert.\n        @return {number} The equivalent Julian date.\n        @throws Error if an invalid date or a different calendar used. */\n    toJD: function(year, month, day) {\n        var date = this._validate(year, month, day, main.local.invalidDate);\n        year = date.year();\n        month = date.month();\n        day = date.day();\n        year = (year <= 0 ? year + 1 : year);\n        return day + Math.ceil(29.5 * (month - 1)) + (year - 1) * 354 +\n            Math.floor((3 + (11 * year)) / 30) + this.jdEpoch - 1;\n    },\n\n    /** Create a new date from a Julian date.\n        @memberof IslamicCalendar\n        @param jd {number} The Julian date to convert.\n        @return {CDate} The equivalent date. */\n    fromJD: function(jd) {\n        jd = Math.floor(jd) + 0.5;\n        var year = Math.floor((30 * (jd - this.jdEpoch) + 10646) / 10631);\n        year = (year <= 0 ? year - 1 : year);\n        var month = Math.min(12, Math.ceil((jd - 29 - this.toJD(year, 1, 1)) / 29.5) + 1);\n        var day = jd - this.toJD(year, month, 1) + 1;\n        return this.newDate(year, month, day);\n    }\n});\n\n// Islamic (16 civil) calendar implementation\nmain.calendars.islamic = IslamicCalendar;\n\n\n\n/***/ }),\n\n/***/ 88874:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_8297456__) {\n\n/*\n * World Calendars\n * https://github.com/alexcjohnson/world-calendars\n *\n * Batch-converted from kbwood/calendars\n * Many thanks to Keith Wood and all of the contributors to the original project!\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n﻿/* http://keith-wood.name/calendars.html\n   Julian calendar for jQuery v2.0.2.\n   Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009.\n   Available under the MIT (http://keith-wood.name/licence.html) license. \n   Please attribute the author if you use it. */\n\nvar main = __nested_webpack_require_8297456__(63489);\nvar assign = __nested_webpack_require_8297456__(56131);\n\n\n/** Implementation of the Julian calendar.\n    Based on code from <a href=\"http://www.fourmilab.ch/documents/calendar/\">http://www.fourmilab.ch/documents/calendar/</a>.\n    See also <a href=\"http://en.wikipedia.org/wiki/Julian_calendar\">http://en.wikipedia.org/wiki/Julian_calendar</a>.\n    @class JulianCalendar\n    @augments BaseCalendar\n    @param [language=''] {string} The language code (default English) for localisation. */\nfunction JulianCalendar(language) {\n    this.local = this.regionalOptions[language || ''] || this.regionalOptions[''];\n}\n\nJulianCalendar.prototype = new main.baseCalendar;\n\nassign(JulianCalendar.prototype, {\n    /** The calendar name.\n        @memberof JulianCalendar */\n    name: 'Julian',\n    /** Julian date of start of Julian epoch: 1 January 0001 AD = 30 December 0001 BCE.\n        @memberof JulianCalendar */\n    jdEpoch: 1721423.5,\n    /** Days per month in a common year.\n        @memberof JulianCalendar */\n    daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n    /** <code>true</code> if has a year zero, <code>false</code> if not.\n        @memberof JulianCalendar */\n    hasYearZero: false,\n    /** The minimum month number.\n        @memberof JulianCalendar */\n    minMonth: 1,\n    /** The first month in the year.\n        @memberof JulianCalendar */\n    firstMonth: 1,\n    /** The minimum day number.\n        @memberof JulianCalendar */\n    minDay: 1,\n\n    /** Localisations for the plugin.\n        Entries are objects indexed by the language code ('' being the default US/English).\n        Each object has the following attributes.\n        @memberof JulianCalendar\n        @property name {string} The calendar name.\n        @property epochs {string[]} The epoch names.\n        @property monthNames {string[]} The long names of the months of the year.\n        @property monthNamesShort {string[]} The short names of the months of the year.\n        @property dayNames {string[]} The long names of the days of the week.\n        @property dayNamesShort {string[]} The short names of the days of the week.\n        @property dayNamesMin {string[]} The minimal names of the days of the week.\n        @property dateFormat {string} The date format for this calendar.\n                See the options on <a href=\"BaseCalendar.html#formatDate\"><code>formatDate</code></a> for details.\n        @property firstDay {number} The number of the first day of the week, starting at 0.\n        @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */\n    regionalOptions: { // Localisations\n        '': {\n            name: 'Julian',\n            epochs: ['BC', 'AD'],\n            monthNames: ['January', 'February', 'March', 'April', 'May', 'June',\n            'July', 'August', 'September', 'October', 'November', 'December'],\n            monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n            dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n            dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n            dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n            digits: null,\n            dateFormat: 'mm/dd/yyyy',\n            firstDay: 0,\n            isRTL: false\n        }\n    },\n\n    /** Determine whether this date is in a leap year.\n        @memberof JulianCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.\n        @throws Error if an invalid year or a different calendar used. */\n    leapYear: function(year) {\n        var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        var year = (date.year() < 0 ? date.year() + 1 : date.year()); // No year zero\n        return (year % 4) === 0;\n    },\n\n    /** Determine the week of the year for a date - ISO 8601.\n        @memberof JulianCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The week of the year.\n        @throws Error if an invalid date or a different calendar used. */\n    weekOfYear: function(year, month, day) {\n        // Find Thursday of this week starting on Monday\n        var checkDate = this.newDate(year, month, day);\n        checkDate.add(4 - (checkDate.dayOfWeek() || 7), 'd');\n        return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n    },\n\n    /** Retrieve the number of days in a month.\n        @memberof JulianCalendar\n        @param year {CDate|number} The date to examine or the year of the month.\n        @param [month] {number} The month.\n        @return {number} The number of days in this month.\n        @throws Error if an invalid month/year or a different calendar used. */\n    daysInMonth: function(year, month) {\n        var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n        return this.daysPerMonth[date.month() - 1] +\n            (date.month() === 2 && this.leapYear(date.year()) ? 1 : 0);\n    },\n\n    /** Determine whether this date is a week day.\n        @memberof JulianCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {boolean} True if a week day, false if not.\n        @throws Error if an invalid date or a different calendar used. */\n    weekDay: function(year, month, day) {\n        return (this.dayOfWeek(year, month, day) || 7) < 6;\n    },\n\n    /** Retrieve the Julian date equivalent for this date,\n        i.e. days since January 1, 4713 BCE Greenwich noon.\n        @memberof JulianCalendar\n        @param year {CDate|number} The date to convert or the year to convert.\n        @param [month] {number} The month to convert.\n        @param [day] {number} The day to convert.\n        @return {number} The equivalent Julian date.\n        @throws Error if an invalid date or a different calendar used. */\n    toJD: function(year, month, day) {\n        var date = this._validate(year, month, day, main.local.invalidDate);\n        year = date.year();\n        month = date.month();\n        day = date.day();\n        if (year < 0) { year++; } // No year zero\n        // Jean Meeus algorithm, \"Astronomical Algorithms\", 1991\n        if (month <= 2) {\n            year--;\n            month += 12;\n        }\n        return Math.floor(365.25 * (year + 4716)) +\n            Math.floor(30.6001 * (month + 1)) + day - 1524.5;\n    },\n\n    /** Create a new date from a Julian date.\n        @memberof JulianCalendar\n        @param jd {number} The Julian date to convert.\n        @return {CDate} The equivalent date. */\n    fromJD: function(jd) {\n        // Jean Meeus algorithm, \"Astronomical Algorithms\", 1991\n        var a = Math.floor(jd + 0.5);\n        var b = a + 1524;\n        var c = Math.floor((b - 122.1) / 365.25);\n        var d = Math.floor(365.25 * c);\n        var e = Math.floor((b - d) / 30.6001);\n        var month = e - Math.floor(e < 14 ? 1 : 13);\n        var year = c - Math.floor(month > 2 ? 4716 : 4715);\n        var day = b - d - Math.floor(30.6001 * e);\n        if (year <= 0) { year--; } // No year zero\n        return this.newDate(year, month, day);\n    }\n});\n\n// Julian calendar implementation\nmain.calendars.julian = JulianCalendar;\n\n\n\n/***/ }),\n\n/***/ 83290:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_8305751__) {\n\n/*\n * World Calendars\n * https://github.com/alexcjohnson/world-calendars\n *\n * Batch-converted from kbwood/calendars\n * Many thanks to Keith Wood and all of the contributors to the original project!\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n﻿/* http://keith-wood.name/calendars.html\n   Mayan calendar for jQuery v2.0.2.\n   Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009.\n   Available under the MIT (http://keith-wood.name/licence.html) license. \n   Please attribute the author if you use it. */\n\nvar main = __nested_webpack_require_8305751__(63489);\nvar assign = __nested_webpack_require_8305751__(56131);\n\n\n/** Implementation of the Mayan Long Count calendar.\n    See also <a href=\"http://en.wikipedia.org/wiki/Mayan_calendar\">http://en.wikipedia.org/wiki/Mayan_calendar</a>.\n    @class MayanCalendar\n    @param [language=''] {string} The language code (default English) for localisation. */\nfunction MayanCalendar(language) {\n    this.local = this.regionalOptions[language || ''] || this.regionalOptions[''];\n}\n\nMayanCalendar.prototype = new main.baseCalendar;\n\nassign(MayanCalendar.prototype, {\n    /** The calendar name.\n        @memberof MayanCalendar */\n    name: 'Mayan',\n    /** Julian date of start of Mayan epoch: 11 August 3114 BCE.\n        @memberof MayanCalendar */\n    jdEpoch: 584282.5,\n    /** <code>true</code> if has a year zero, <code>false</code> if not.\n        @memberof MayanCalendar */\n    hasYearZero: true,\n    /** The minimum month number.\n        @memberof MayanCalendar */\n    minMonth: 0,\n    /** The first month in the year.\n        @memberof MayanCalendar */\n    firstMonth: 0,\n    /** The minimum day number.\n        @memberof MayanCalendar */\n    minDay: 0,\n\n    /** Localisations for the plugin.\n        Entries are objects indexed by the language code ('' being the default US/English).\n        Each object has the following attributes.\n        @memberof MayanCalendar\n        @property name {string} The calendar name.\n        @property epochs {string[]} The epoch names.\n        @property monthNames {string[]} The long names of the months of the year.\n        @property monthNamesShort {string[]} The short names of the months of the year.\n        @property dayNames {string[]} The long names of the days of the week.\n        @property dayNamesShort {string[]} The short names of the days of the week.\n        @property dayNamesMin {string[]} The minimal names of the days of the week.\n        @property dateFormat {string} The date format for this calendar.\n                See the options on <a href=\"BaseCalendar.html#formatDate\"><code>formatDate</code></a> for details.\n        @property firstDay {number} The number of the first day of the week, starting at 0.\n        @property isRTL {number} <code>true</code> if this localisation reads right-to-left.\n        @property haabMonths {string[]} The names of the Haab months.\n        @property tzolkinMonths {string[]} The names of the Tzolkin months. */\n    regionalOptions: { // Localisations\n        '': {\n            name: 'Mayan',\n            epochs: ['', ''],\n            monthNames: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n            '10', '11', '12', '13', '14', '15', '16', '17'],\n            monthNamesShort: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n            '10', '11', '12', '13', '14', '15', '16', '17'],\n            dayNames: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n            '10', '11', '12', '13', '14', '15', '16', '17', '18', '19'],\n            dayNamesShort: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n            '10', '11', '12', '13', '14', '15', '16', '17', '18', '19'],\n            dayNamesMin: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n            '10', '11', '12', '13', '14', '15', '16', '17', '18', '19'],\n            digits: null,\n            dateFormat: 'YYYY.m.d',\n            firstDay: 0,\n            isRTL: false,\n            haabMonths: ['Pop', 'Uo', 'Zip', 'Zotz', 'Tzec', 'Xul', 'Yaxkin', 'Mol', 'Chen', 'Yax',\n            'Zac', 'Ceh', 'Mac', 'Kankin', 'Muan', 'Pax', 'Kayab', 'Cumku', 'Uayeb'],\n            tzolkinMonths: ['Imix', 'Ik', 'Akbal', 'Kan', 'Chicchan', 'Cimi', 'Manik', 'Lamat', 'Muluc', 'Oc',\n            'Chuen', 'Eb', 'Ben', 'Ix', 'Men', 'Cib', 'Caban', 'Etznab', 'Cauac', 'Ahau']\n        }\n    },\n\n    /** Determine whether this date is in a leap year.\n        @memberof MayanCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.\n        @throws Error if an invalid year or a different calendar used. */\n    leapYear: function(year) {\n        this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        return false;\n    },\n\n    /** Format the year, if not a simple sequential number.\n        @memberof MayanCalendar\n        @param year {CDate|number} The date to format or the year to format.\n        @return {string} The formatted year.\n        @throws Error if an invalid year or a different calendar used. */\n    formatYear: function(year) {\n        var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        year = date.year();\n        var baktun = Math.floor(year / 400);\n        year = year % 400;\n        year += (year < 0 ? 400 : 0);\n        var katun = Math.floor(year / 20);\n        return baktun + '.' + katun + '.' + (year % 20);\n    },\n\n    /** Convert from the formatted year back to a single number.\n        @memberof MayanCalendar\n        @param years {string} The year as n.n.n.\n        @return {number} The sequential year.\n        @throws Error if an invalid value is supplied. */\n    forYear: function(years) {\n        years = years.split('.');\n        if (years.length < 3) {\n            throw 'Invalid Mayan year';\n        }\n        var year = 0;\n        for (var i = 0; i < years.length; i++) {\n            var y = parseInt(years[i], 10);\n            if (Math.abs(y) > 19 || (i > 0 && y < 0)) {\n                throw 'Invalid Mayan year';\n            }\n            year = year * 20 + y;\n        }\n        return year;\n    },\n\n    /** Retrieve the number of months in a year.\n        @memberof MayanCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {number} The number of months.\n        @throws Error if an invalid year or a different calendar used. */\n    monthsInYear: function(year) {\n        this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        return 18;\n    },\n\n    /** Determine the week of the year for a date.\n        @memberof MayanCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The week of the year.\n        @throws Error if an invalid date or a different calendar used. */\n    weekOfYear: function(year, month, day) {\n        this._validate(year, month, day, main.local.invalidDate);\n        return 0;\n    },\n\n    /** Retrieve the number of days in a year.\n        @memberof MayanCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {number} The number of days.\n        @throws Error if an invalid year or a different calendar used. */\n    daysInYear: function(year) {\n        this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        return 360;\n    },\n\n    /** Retrieve the number of days in a month.\n        @memberof MayanCalendar\n        @param year {CDate|number} The date to examine or the year of the month.\n        @param [month] {number} The month.\n        @return {number} The number of days in this month.\n        @throws Error if an invalid month/year or a different calendar used. */\n    daysInMonth: function(year, month) {\n        this._validate(year, month, this.minDay, main.local.invalidMonth);\n        return 20;\n    },\n\n    /** Retrieve the number of days in a week.\n        @memberof MayanCalendar\n        @return {number} The number of days. */\n    daysInWeek: function() {\n        return 5; // Just for formatting\n    },\n\n    /** Retrieve the day of the week for a date.\n        @memberof MayanCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The day of the week: 0 to number of days - 1.\n        @throws Error if an invalid date or a different calendar used. */\n    dayOfWeek: function(year, month, day) {\n        var date = this._validate(year, month, day, main.local.invalidDate);\n        return date.day();\n    },\n\n    /** Determine whether this date is a week day.\n        @memberof MayanCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {boolean} <code>true</code> if a week day, <code>false</code> if not.\n        @throws Error if an invalid date or a different calendar used. */\n    weekDay: function(year, month, day) {\n        this._validate(year, month, day, main.local.invalidDate);\n        return true;\n    },\n\n    /** Retrieve additional information about a date - Haab and Tzolkin equivalents.\n        @memberof MayanCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {object} Additional information - contents depends on calendar.\n        @throws Error if an invalid date or a different calendar used. */\n    extraInfo: function(year, month, day) {\n        var date = this._validate(year, month, day, main.local.invalidDate);\n        var jd = date.toJD();\n        var haab = this._toHaab(jd);\n        var tzolkin = this._toTzolkin(jd);\n        return {haabMonthName: this.local.haabMonths[haab[0] - 1],\n            haabMonth: haab[0], haabDay: haab[1],\n            tzolkinDayName: this.local.tzolkinMonths[tzolkin[0] - 1],\n            tzolkinDay: tzolkin[0], tzolkinTrecena: tzolkin[1]};\n    },\n\n    /** Retrieve Haab date from a Julian date.\n        @memberof MayanCalendar\n        @private\n        @param jd  {number} The Julian date.\n        @return {number[]} Corresponding Haab month and day. */\n    _toHaab: function(jd) {\n        jd -= this.jdEpoch;\n        var day = mod(jd + 8 + ((18 - 1) * 20), 365);\n        return [Math.floor(day / 20) + 1, mod(day, 20)];\n    },\n\n    /** Retrieve Tzolkin date from a Julian date.\n        @memberof MayanCalendar\n        @private\n        @param jd {number} The Julian date.\n        @return {number[]} Corresponding Tzolkin day and trecena. */\n    _toTzolkin: function(jd) {\n        jd -= this.jdEpoch;\n        return [amod(jd + 20, 20), amod(jd + 4, 13)];\n    },\n\n    /** Retrieve the Julian date equivalent for this date,\n        i.e. days since January 1, 4713 BCE Greenwich noon.\n        @memberof MayanCalendar\n        @param year {CDate|number} The date to convert or the year to convert.\n        @param [month] {number} The month to convert.\n        @param [day] {number} The day to convert.\n        @return {number} The equivalent Julian date.\n        @throws Error if an invalid date or a different calendar used. */\n    toJD: function(year, month, day) {\n        var date = this._validate(year, month, day, main.local.invalidDate);\n        return date.day() + (date.month() * 20) + (date.year() * 360) + this.jdEpoch;\n    },\n\n    /** Create a new date from a Julian date.\n        @memberof MayanCalendar\n        @param jd {number} The Julian date to convert.\n        @return {CDate} The equivalent date. */\n    fromJD: function(jd) {\n        jd = Math.floor(jd) + 0.5 - this.jdEpoch;\n        var year = Math.floor(jd / 360);\n        jd = jd % 360;\n        jd += (jd < 0 ? 360 : 0);\n        var month = Math.floor(jd / 20);\n        var day = jd % 20;\n        return this.newDate(year, month, day);\n    }\n});\n\n// Modulus function which works for non-integers.\nfunction mod(a, b) {\n    return a - (b * Math.floor(a / b));\n}\n\n// Modulus function which returns numerator if modulus is zero.\nfunction amod(a, b) {\n    return mod(a - 1, b) + 1;\n}\n\n// Mayan calendar implementation\nmain.calendars.mayan = MayanCalendar;\n\n\n\n/***/ }),\n\n/***/ 29108:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_8318389__) {\n\n/*\n * World Calendars\n * https://github.com/alexcjohnson/world-calendars\n *\n * Batch-converted from kbwood/calendars\n * Many thanks to Keith Wood and all of the contributors to the original project!\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* http://keith-wood.name/calendars.html\n   Nanakshahi calendar for jQuery v2.0.2.\n   Written by Keith Wood (wood.keith{at}optusnet.com.au) January 2016.\n   Available under the MIT (http://keith-wood.name/licence.html) license. \n   Please attribute the author if you use it. */\n\nvar main = __nested_webpack_require_8318389__(63489);\nvar assign = __nested_webpack_require_8318389__(56131);\n\n\n/** Implementation of the Nanakshahi calendar.\n    See also <a href=\"https://en.wikipedia.org/wiki/Nanakshahi_calendar\">https://en.wikipedia.org/wiki/Nanakshahi_calendar</a>.\n    @class NanakshahiCalendar\n    @param [language=''] {string} The language code (default English) for localisation. */\nfunction NanakshahiCalendar(language) {\n    this.local = this.regionalOptions[language || ''] || this.regionalOptions[''];\n}\n\nNanakshahiCalendar.prototype = new main.baseCalendar;\n\nvar gregorian = main.instance('gregorian');\n\nassign(NanakshahiCalendar.prototype, {\n    /** The calendar name.\n        @memberof NanakshahiCalendar */\n    name: 'Nanakshahi',\n    /** Julian date of start of Nanakshahi epoch: 14 March 1469 CE.\n        @memberof NanakshahiCalendar */\n    jdEpoch: 2257673.5,\n    /** Days per month in a common year.\n        @memberof NanakshahiCalendar */\n    daysPerMonth: [31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30, 30],\n    /** <code>true</code> if has a year zero, <code>false</code> if not.\n        @memberof NanakshahiCalendar */\n    hasYearZero: false,\n    /** The minimum month number.\n        @memberof NanakshahiCalendar */\n    minMonth: 1,\n    /** The first month in the year.\n        @memberof NanakshahiCalendar */\n    firstMonth: 1,\n    /** The minimum day number.\n        @memberof NanakshahiCalendar */\n    minDay: 1,\n\n    /** Localisations for the plugin.\n        Entries are objects indexed by the language code ('' being the default US/English).\n        Each object has the following attributes.\n        @memberof NanakshahiCalendar\n        @property name {string} The calendar name.\n        @property epochs {string[]} The epoch names.\n        @property monthNames {string[]} The long names of the months of the year.\n        @property monthNamesShort {string[]} The short names of the months of the year.\n        @property dayNames {string[]} The long names of the days of the week.\n        @property dayNamesShort {string[]} The short names of the days of the week.\n        @property dayNamesMin {string[]} The minimal names of the days of the week.\n        @property dateFormat {string} The date format for this calendar.\n                See the options on <a href=\"BaseCalendar.html#formatDate\"><code>formatDate</code></a> for details.\n        @property firstDay {number} The number of the first day of the week, starting at 0.\n        @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */\n    regionalOptions: { // Localisations\n        '': {\n            name: 'Nanakshahi',\n            epochs: ['BN', 'AN'],\n            monthNames: ['Chet', 'Vaisakh', 'Jeth', 'Harh', 'Sawan', 'Bhadon',\n            'Assu', 'Katak', 'Maghar', 'Poh', 'Magh', 'Phagun'],\n            monthNamesShort: ['Che', 'Vai', 'Jet', 'Har', 'Saw', 'Bha', 'Ass', 'Kat', 'Mgr', 'Poh', 'Mgh', 'Pha'],\n            dayNames: ['Somvaar', 'Mangalvar', 'Budhvaar', 'Veervaar', 'Shukarvaar', 'Sanicharvaar', 'Etvaar'],\n            dayNamesShort: ['Som', 'Mangal', 'Budh', 'Veer', 'Shukar', 'Sanichar', 'Et'],\n            dayNamesMin: ['So', 'Ma', 'Bu', 'Ve', 'Sh', 'Sa', 'Et'],\n            digits: null,\n            dateFormat: 'dd-mm-yyyy',\n            firstDay: 0,\n            isRTL: false\n        }\n    },\n\n    /** Determine whether this date is in a leap year.\n        @memberof NanakshahiCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.\n        @throws Error if an invalid year or a different calendar used. */\n    leapYear: function(year) {\n        var date = this._validate(year, this.minMonth, this.minDay,\n            main.local.invalidYear || main.regionalOptions[''].invalidYear);\n        return gregorian.leapYear(date.year() + (date.year() < 1 ? 1 : 0) + 1469);\n    },\n\n    /** Determine the week of the year for a date.\n        @memberof NanakshahiCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The week of the year.\n        @throws Error if an invalid date or a different calendar used. */\n    weekOfYear: function(year, month, day) {\n        // Find Monday of this week starting on Monday\n        var checkDate = this.newDate(year, month, day);\n        checkDate.add(1 - (checkDate.dayOfWeek() || 7), 'd');\n        return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n    },\n\n    /** Retrieve the number of days in a month.\n        @memberof NanakshahiCalendar\n        @param year {CDate|number} The date to examine or the year of the month.\n        @param [month] {number} The month.\n        @return {number} The number of days in this month.\n        @throws Error if an invalid month/year or a different calendar used. */\n    daysInMonth: function(year, month) {\n        var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n        return this.daysPerMonth[date.month() - 1] +\n            (date.month() === 12 && this.leapYear(date.year()) ? 1 : 0);\n    },\n\n    /** Determine whether this date is a week day.\n        @memberof NanakshahiCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {boolean} <code>true</code> if a week day, <code>false</code> if not.\n        @throws Error if an invalid date or a different calendar used. */\n    weekDay: function(year, month, day) {\n        return (this.dayOfWeek(year, month, day) || 7) < 6;\n    },\n\n    /** Retrieve the Julian date equivalent for this date,\n        i.e. days since January 1, 4713 BCE Greenwich noon.\n        @memberof NanakshahiCalendar\n        @param year {CDate|number} The date to convert or the year to convert.\n        @param [month] {number} The month to convert.\n        @param [day] {number} The day to convert.\n        @return {number} The equivalent Julian date.\n        @throws Error if an invalid date or a different calendar used. */\n    toJD: function(year, month, day) {\n        var date = this._validate(year, month, day, main.local.invalidMonth);\n        var year = date.year();\n        if (year < 0) { year++; } // No year zero\n        var doy = date.day();\n        for (var m = 1; m < date.month(); m++) {\n            doy += this.daysPerMonth[m - 1];\n        }\n        return doy + gregorian.toJD(year + 1468, 3, 13);\n    },\n\n    /** Create a new date from a Julian date.\n        @memberof NanakshahiCalendar\n        @param jd {number} The Julian date to convert.\n        @return {CDate} The equivalent date. */\n    fromJD: function(jd) {\n        jd = Math.floor(jd + 0.5);\n        var year = Math.floor((jd - (this.jdEpoch - 1)) / 366);\n        while (jd >= this.toJD(year + 1, 1, 1)) {\n            year++;\n        }\n        var day = jd - Math.floor(this.toJD(year, 1, 1) + 0.5) + 1;\n        var month = 1;\n        while (day > this.daysInMonth(year, month)) {\n            day -= this.daysInMonth(year, month);\n            month++;\n        }\n        return this.newDate(year, month, day);\n    }\n});\n\n// Nanakshahi calendar implementation\nmain.calendars.nanakshahi = NanakshahiCalendar;\n\n\n\n/***/ }),\n\n/***/ 55422:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_8326506__) {\n\n/*\n * World Calendars\n * https://github.com/alexcjohnson/world-calendars\n *\n * Batch-converted from kbwood/calendars\n * Many thanks to Keith Wood and all of the contributors to the original project!\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n﻿/* http://keith-wood.name/calendars.html\n   Nepali calendar for jQuery v2.0.2.\n   Written by Artur Neumann (ict.projects{at}nepal.inf.org) April 2013.\n   Available under the MIT (http://keith-wood.name/licence.html) license. \n   Please attribute the author if you use it. */\n\nvar main = __nested_webpack_require_8326506__(63489);\nvar assign = __nested_webpack_require_8326506__(56131);\n\n\n/** Implementation of the Nepali civil calendar.\n    Based on the ideas from \n    <a href=\"http://codeissue.com/articles/a04e050dea7468f/algorithm-to-convert-english-date-to-nepali-date-using-c-net\">http://codeissue.com/articles/a04e050dea7468f/algorithm-to-convert-english-date-to-nepali-date-using-c-net</a>\n    and <a href=\"http://birenj2ee.blogspot.com/2011/04/nepali-calendar-in-java.html\">http://birenj2ee.blogspot.com/2011/04/nepali-calendar-in-java.html</a>\n    See also <a href=\"http://en.wikipedia.org/wiki/Nepali_calendar\">http://en.wikipedia.org/wiki/Nepali_calendar</a>\n    and <a href=\"https://en.wikipedia.org/wiki/Bikram_Samwat\">https://en.wikipedia.org/wiki/Bikram_Samwat</a>.\n    @class NepaliCalendar\n    @param [language=''] {string} The language code (default English) for localisation. */\nfunction NepaliCalendar(language) {\n    this.local = this.regionalOptions[language || ''] || this.regionalOptions[''];\n}\n\nNepaliCalendar.prototype = new main.baseCalendar;\n\nassign(NepaliCalendar.prototype, {\n    /** The calendar name.\n        @memberof NepaliCalendar */\n    name: 'Nepali',\n    /** Julian date of start of Nepali epoch: 14 April 57 BCE.\n        @memberof NepaliCalendar */\n    jdEpoch: 1700709.5,\n    /** Days per month in a common year.\n        @memberof NepaliCalendar */\n    daysPerMonth: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n    /** <code>true</code> if has a year zero, <code>false</code> if not.\n        @memberof NepaliCalendar */\n    hasYearZero: false,\n    /** The minimum month number.\n        @memberof NepaliCalendar */\n    minMonth: 1,\n    /** The first month in the year.\n        @memberof NepaliCalendar */\n    firstMonth: 1,\n    /** The minimum day number.\n        @memberof NepaliCalendar */\n    minDay: 1, \n    /** The number of days in the year.\n        @memberof NepaliCalendar */\n    daysPerYear: 365,\n\n    /** Localisations for the plugin.\n        Entries are objects indexed by the language code ('' being the default US/English).\n        Each object has the following attributes.\n        @memberof NepaliCalendar\n        @property name {string} The calendar name.\n        @property epochs {string[]} The epoch names.\n        @property monthNames {string[]} The long names of the months of the year.\n        @property monthNamesShort {string[]} The short names of the months of the year.\n        @property dayNames {string[]} The long names of the days of the week.\n        @property dayNamesShort {string[]} The short names of the days of the week.\n        @property dayNamesMin {string[]} The minimal names of the days of the week.\n        @property dateFormat {string} The date format for this calendar.\n                See the options on <a href=\"BaseCalendar.html#formatDate\"><code>formatDate</code></a> for details.\n        @property firstDay {number} The number of the first day of the week, starting at 0.\n        @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */\n    regionalOptions: { // Localisations\n        '': {\n            name: 'Nepali',\n            epochs: ['BBS', 'ABS'],\n            monthNames: ['Baisakh', 'Jestha', 'Ashadh', 'Shrawan', 'Bhadra', 'Ashwin',\n            'Kartik', 'Mangsir', 'Paush', 'Mangh', 'Falgun', 'Chaitra'],\n            monthNamesShort: ['Bai', 'Je', 'As', 'Shra', 'Bha', 'Ash', 'Kar', 'Mang', 'Pau', 'Ma', 'Fal', 'Chai'],\n            dayNames: ['Aaitabaar', 'Sombaar', 'Manglbaar', 'Budhabaar', 'Bihibaar', 'Shukrabaar', 'Shanibaar'],\n            dayNamesShort: ['Aaita', 'Som', 'Mangl', 'Budha', 'Bihi', 'Shukra', 'Shani'],\n            dayNamesMin: ['Aai', 'So', 'Man', 'Bu', 'Bi', 'Shu', 'Sha'],\n            digits: null,\n            dateFormat: 'dd/mm/yyyy',\n            firstDay: 1,\n            isRTL: false\n        }\n    },\n\n    /** Determine whether this date is in a leap year.\n        @memberof NepaliCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.\n        @throws Error if an invalid year or a different calendar used. */\n    leapYear: function(year) {\n        return this.daysInYear(year) !== this.daysPerYear;\n    },\n\n    /** Determine the week of the year for a date.\n        @memberof NepaliCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The week of the year.\n        @throws Error if an invalid date or a different calendar used. */\n    weekOfYear: function(year, month, day) {\n        // Find Sunday of this week starting on Sunday\n        var checkDate = this.newDate(year, month, day);\n        checkDate.add(-checkDate.dayOfWeek(), 'd');\n        return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n    },\n\n    /** Retrieve the number of days in a year.\n        @memberof NepaliCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {number} The number of days.\n        @throws Error if an invalid year or a different calendar used. */\n    daysInYear: function(year) {\n        var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        year = date.year();\n        if (typeof this.NEPALI_CALENDAR_DATA[year] === 'undefined') {\n            return this.daysPerYear;\n        }\n        var daysPerYear = 0;\n        for (var month_number = this.minMonth; month_number <= 12; month_number++) {\n            daysPerYear += this.NEPALI_CALENDAR_DATA[year][month_number];\n        }\n        return daysPerYear;\n    },\n\n    /** Retrieve the number of days in a month.\n        @memberof NepaliCalendar\n        @param year {CDate|number| The date to examine or the year of the month.\n        @param [month] {number} The month.\n        @return {number} The number of days in this month.\n        @throws Error if an invalid month/year or a different calendar used. */\n    daysInMonth: function(year, month) {\n        if (year.year) {\n            month = year.month();\n            year = year.year();\n        }\n        this._validate(year, month, this.minDay, main.local.invalidMonth);\n        return (typeof this.NEPALI_CALENDAR_DATA[year] === 'undefined' ?\n            this.daysPerMonth[month - 1] : this.NEPALI_CALENDAR_DATA[year][month]);\n    },\n\n    /** Determine whether this date is a week day.\n        @memberof NepaliCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {boolean} <code>true</code> if a week day, <code>false</code> if not.\n        @throws Error if an invalid date or a different calendar used. */\n    weekDay: function(year, month, day) {\n        return this.dayOfWeek(year, month, day) !== 6;\n    },\n\n    /** Retrieve the Julian date equivalent for this date,\n        i.e. days since January 1, 4713 BCE Greenwich noon.\n        @memberof NepaliCalendar\n        @param year {CDate|number} The date to convert or the year to convert.\n        @param [month] {number} The month to convert.\n        @param [day] {number} The day to convert.\n        @return {number} The equivalent Julian date.\n        @throws Error if an invalid date or a different calendar used. */\n    toJD: function(nepaliYear, nepaliMonth, nepaliDay) {\n        var date = this._validate(nepaliYear, nepaliMonth, nepaliDay, main.local.invalidDate);\n        nepaliYear = date.year();\n        nepaliMonth = date.month();\n        nepaliDay = date.day();\n        var gregorianCalendar = main.instance();\n        var gregorianDayOfYear = 0; // We will add all the days that went by since\n        // the 1st. January and then we can get the Gregorian Date\n        var nepaliMonthToCheck = nepaliMonth;\n        var nepaliYearToCheck = nepaliYear;\n        this._createMissingCalendarData(nepaliYear);\n        // Get the correct year\n        var gregorianYear = nepaliYear - (nepaliMonthToCheck > 9 || (nepaliMonthToCheck === 9 &&\n            nepaliDay >= this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][0]) ? 56 : 57);\n        // First we add the amount of days in the actual Nepali month as the day of year in the\n        // Gregorian one because at least this days are gone since the 1st. Jan. \n        if (nepaliMonth !== 9) {\n            gregorianDayOfYear = nepaliDay;\n            nepaliMonthToCheck--;\n        }\n        // Now we loop throw all Nepali month and add the amount of days to gregorianDayOfYear \n        // we do this till we reach Paush (9th month). 1st. January always falls in this month  \n        while (nepaliMonthToCheck !== 9) {\n            if (nepaliMonthToCheck <= 0) {\n                nepaliMonthToCheck = 12;\n                nepaliYearToCheck--;\n            }                \n            gregorianDayOfYear += this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][nepaliMonthToCheck];\n            nepaliMonthToCheck--;\n        }        \n        // If the date that has to be converted is in Paush (month no. 9) we have to do some other calculation\n        if (nepaliMonth === 9) {\n            // Add the days that are passed since the first day of Paush and substract the\n            // amount of days that lie between 1st. Jan and 1st Paush\n            gregorianDayOfYear += nepaliDay - this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][0];\n            // For the first days of Paush we are now in negative values,\n            // because in the end of the gregorian year we substract\n            // 365 / 366 days (P.S. remember math in school + - gives -)\n            if (gregorianDayOfYear < 0) {\n                gregorianDayOfYear += gregorianCalendar.daysInYear(gregorianYear);\n            }\n        }\n        else {\n            gregorianDayOfYear += this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][9] -\n                this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][0];\n        }        \n        return gregorianCalendar.newDate(gregorianYear, 1 ,1).add(gregorianDayOfYear, 'd').toJD();\n    },\n    \n    /** Create a new date from a Julian date.\n        @memberof NepaliCalendar\n        @param jd {number} The Julian date to convert.\n        @return {CDate} The equivalent date. */\n    fromJD: function(jd) {\n        var gregorianCalendar =  main.instance();\n        var gregorianDate = gregorianCalendar.fromJD(jd);\n        var gregorianYear = gregorianDate.year();\n        var gregorianDayOfYear = gregorianDate.dayOfYear();\n        var nepaliYear = gregorianYear + 56; //this is not final, it could be also +57 but +56 is always true for 1st Jan.\n        this._createMissingCalendarData(nepaliYear);\n        var nepaliMonth = 9; // Jan 1 always fall in Nepali month Paush which is the 9th month of Nepali calendar.\n        // Get the Nepali day in Paush (month 9) of 1st January \n        var dayOfFirstJanInPaush = this.NEPALI_CALENDAR_DATA[nepaliYear][0];\n        // Check how many days are left of Paush .\n        // Days calculated from 1st Jan till the end of the actual Nepali month, \n        // we use this value to check if the gregorian Date is in the actual Nepali month.\n        var daysSinceJanFirstToEndOfNepaliMonth =\n            this.NEPALI_CALENDAR_DATA[nepaliYear][nepaliMonth] - dayOfFirstJanInPaush + 1;\n        // If the gregorian day-of-year is smaller o equal than the sum of days between the 1st January and \n        // the end of the actual nepali month we found the correct nepali month.\n        // Example: \n        // The 4th February 2011 is the gregorianDayOfYear 35 (31 days of January + 4)\n        // 1st January 2011 is in the nepali year 2067, where 1st. January is in the 17th day of Paush (9th month)\n        // In 2067 Paush has 30days, This means (30-17+1=14) there are 14days between 1st January and end of Paush \n        // (including 17th January)\n        // The gregorianDayOfYear (35) is bigger than 14, so we check the next month\n        // The next nepali month (Mangh) has 29 days \n        // 29+14=43, this is bigger than gregorianDayOfYear(35) so, we found the correct nepali month\n        while (gregorianDayOfYear > daysSinceJanFirstToEndOfNepaliMonth) {\n            nepaliMonth++;\n            if (nepaliMonth > 12) {\n                nepaliMonth = 1;\n                nepaliYear++;\n            }    \n            daysSinceJanFirstToEndOfNepaliMonth += this.NEPALI_CALENDAR_DATA[nepaliYear][nepaliMonth];\n        }\n        // The last step is to calculate the nepali day-of-month\n        // to continue our example from before:\n        // we calculated there are 43 days from 1st. January (17 Paush) till end of Mangh (29 days)\n        // when we subtract from this 43 days the day-of-year of the the Gregorian date (35),\n        // we know how far the searched day is away from the end of the Nepali month.\n        // So we simply subtract this number from the amount of days in this month (30) \n        var nepaliDayOfMonth = this.NEPALI_CALENDAR_DATA[nepaliYear][nepaliMonth] -\n            (daysSinceJanFirstToEndOfNepaliMonth - gregorianDayOfYear);        \n        return this.newDate(nepaliYear, nepaliMonth, nepaliDayOfMonth);\n    },\n    \n    /** Creates missing data in the NEPALI_CALENDAR_DATA table.\n        This data will not be correct but just give an estimated result. Mostly -/+ 1 day\n        @private\n        @param nepaliYear {number} The missing year number. */\n    _createMissingCalendarData: function(nepaliYear) {\n        var tmp_calendar_data = this.daysPerMonth.slice(0);\n        tmp_calendar_data.unshift(17);\n        for (var nepaliYearToCreate = (nepaliYear - 1); nepaliYearToCreate < (nepaliYear + 2); nepaliYearToCreate++) {\n            if (typeof this.NEPALI_CALENDAR_DATA[nepaliYearToCreate] === 'undefined') {\n                this.NEPALI_CALENDAR_DATA[nepaliYearToCreate] = tmp_calendar_data;\n            }\n        }\n    },\n    \n    NEPALI_CALENDAR_DATA:  {\n        // These data are from http://www.ashesh.com.np\n        1970: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        1971: [18, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30],\n        1972: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n        1973: [19, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n        1974: [19, 31, 31, 32, 30, 31, 31, 30, 29, 30, 29, 30, 30],\n        1975: [18, 31, 31, 32, 32, 30, 31, 30, 29, 30, 29, 30, 30],\n        1976: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        1977: [18, 31, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31],\n        1978: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        1979: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n        1980: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        1981: [18, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n        1982: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        1983: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n        1984: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        1985: [18, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n        1986: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        1987: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n        1988: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        1989: [18, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n        1990: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        1991: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],    \n        // These data are from http://nepalicalendar.rat32.com/index.php\n        1992: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n        1993: [18, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n        1994: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        1995: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n        1996: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n        1997: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        1998: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        1999: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        2000: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n        2001: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2002: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n        2003: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        2004: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n        2005: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2006: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n        2007: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        2008: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31],\n        2009: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2010: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n        2011: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        2012: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n        2013: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2014: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n        2015: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        2016: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n        2017: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2018: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n        2019: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n        2020: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n        2021: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2022: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n        2023: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n        2024: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n        2025: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2026: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        2027: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n        2028: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2029: [18, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30],\n        2030: [17, 31, 32, 31, 32, 31, 30, 30, 30, 30, 30, 30, 31],\n        2031: [17, 31, 32, 31, 32, 31, 31, 31, 31, 31, 31, 31, 31],\n        2032: [17, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32],\n        2033: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n        2034: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        2035: [17, 30, 32, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31],\n        2036: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2037: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n        2038: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        2039: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n        2040: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2041: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n        2042: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        2043: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n        2044: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2045: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n        2046: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        2047: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n        2048: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2049: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n        2050: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n        2051: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n        2052: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2053: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n        2054: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n        2055: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 30, 29, 30],\n        2056: [17, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30],\n        2057: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        2058: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n        2059: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2060: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n        2061: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        2062: [17, 30, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31],\n        2063: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2064: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n        2065: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        2066: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31],\n        2067: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2068: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n        2069: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        2070: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n        2071: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2072: [17, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n        2073: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n        2074: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n        2075: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2076: [16, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n        2077: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n        2078: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n        2079: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n        2080: [16, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n        // These data are from http://www.ashesh.com.np/nepali-calendar/\n        2081: [17, 31, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n        2082: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n        2083: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30],\n        2084: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30],\n        2085: [17, 31, 32, 31, 32, 31, 31, 30, 30, 29, 30, 30, 30],\n        2086: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n        2087: [16, 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30],\n        2088: [16, 30, 31, 32, 32, 30, 31, 30, 30, 29, 30, 30, 30],\n        2089: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n        2090: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n        2091: [16, 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30],\n        2092: [16, 31, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n        2093: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n        2094: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30],\n        2095: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 30, 30, 30],\n        2096: [17, 30, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n        2097: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n        2098: [17, 31, 31, 32, 31, 31, 31, 29, 30, 29, 30, 30, 31],\n        2099: [17, 31, 31, 32, 31, 31, 31, 30, 29, 29, 30, 30, 30],\n        2100: [17, 31, 32, 31, 32, 30, 31, 30, 29, 30, 29, 30, 30]    \n    }\n});    \n\n// Nepali calendar implementation\nmain.calendars.nepali = NepaliCalendar;\n\n\n\n/***/ }),\n\n/***/ 94320:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_8350445__) {\n\n/*\n * World Calendars\n * https://github.com/alexcjohnson/world-calendars\n *\n * Batch-converted from kbwood/calendars\n * Many thanks to Keith Wood and all of the contributors to the original project!\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n﻿/* http://keith-wood.name/calendars.html\n   Persian calendar for jQuery v2.0.2.\n   Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009.\n   Available under the MIT (http://keith-wood.name/licence.html) license. \n   Please attribute the author if you use it. */\n\nvar main = __nested_webpack_require_8350445__(63489);\nvar assign = __nested_webpack_require_8350445__(56131);\n\n\n/** Implementation of the Persian or Jalali calendar.\n    Based on code from <a href=\"http://www.iranchamber.com/calendar/converter/iranian_calendar_converter.php\">http://www.iranchamber.com/calendar/converter/iranian_calendar_converter.php</a>.\n    See also <a href=\"http://en.wikipedia.org/wiki/Iranian_calendar\">http://en.wikipedia.org/wiki/Iranian_calendar</a>.\n    @class PersianCalendar\n    @param [language=''] {string} The language code (default English) for localisation. */\nfunction PersianCalendar(language) {\n    this.local = this.regionalOptions[language || ''] || this.regionalOptions[''];\n}\n\nPersianCalendar.prototype = new main.baseCalendar;\n\nassign(PersianCalendar.prototype, {\n    /** The calendar name.\n        @memberof PersianCalendar */\n    name: 'Persian',\n    /** Julian date of start of Persian epoch: 19 March 622 CE.\n        @memberof PersianCalendar */\n    jdEpoch: 1948320.5,\n    /** Days per month in a common year.\n        @memberof PersianCalendar */\n    daysPerMonth: [31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29],\n    /** <code>true</code> if has a year zero, <code>false</code> if not.\n        @memberof PersianCalendar */\n    hasYearZero: false,\n    /** The minimum month number.\n        @memberof PersianCalendar */\n    minMonth: 1,\n    /** The first month in the year.\n        @memberof PersianCalendar */\n    firstMonth: 1,\n    /** The minimum day number.\n        @memberof PersianCalendar */\n    minDay: 1,\n\n    /** Localisations for the plugin.\n        Entries are objects indexed by the language code ('' being the default US/English).\n        Each object has the following attributes.\n        @memberof PersianCalendar\n        @property name {string} The calendar name.\n        @property epochs {string[]} The epoch names.\n        @property monthNames {string[]} The long names of the months of the year.\n        @property monthNamesShort {string[]} The short names of the months of the year.\n        @property dayNames {string[]} The long names of the days of the week.\n        @property dayNamesShort {string[]} The short names of the days of the week.\n        @property dayNamesMin {string[]} The minimal names of the days of the week.\n        @property dateFormat {string} The date format for this calendar.\n                See the options on <a href=\"BaseCalendar.html#formatDate\"><code>formatDate</code></a> for details.\n        @property firstDay {number} The number of the first day of the week, starting at 0.\n        @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */\n    regionalOptions: { // Localisations\n        '': {\n            name: 'Persian',\n            epochs: ['BP', 'AP'],\n            monthNames: ['Farvardin', 'Ordibehesht', 'Khordad', 'Tir', 'Mordad', 'Shahrivar',\n            'Mehr', 'Aban', 'Azar', 'Day', 'Bahman', 'Esfand'],\n            monthNamesShort: ['Far', 'Ord', 'Kho', 'Tir', 'Mor', 'Sha', 'Meh', 'Aba', 'Aza', 'Day', 'Bah', 'Esf'],\n            dayNames: ['Yekshambe', 'Doshambe', 'Seshambe', 'Chæharshambe', 'Panjshambe', 'Jom\\'e', 'Shambe'],\n            dayNamesShort: ['Yek', 'Do', 'Se', 'Chæ', 'Panj', 'Jom', 'Sha'],\n            dayNamesMin: ['Ye','Do','Se','Ch','Pa','Jo','Sh'],\n            digits: null,\n            dateFormat: 'yyyy/mm/dd',\n            firstDay: 6,\n            isRTL: false\n        }\n    },\n\n    /** Determine whether this date is in a leap year.\n        @memberof PersianCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.\n        @throws Error if an invalid year or a different calendar used. */\n    leapYear: function(year) {\n        var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        return (((((date.year() - (date.year() > 0 ? 474 : 473)) % 2820) +\n            474 + 38) * 682) % 2816) < 682;\n    },\n\n    /** Determine the week of the year for a date.\n        @memberof PersianCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The week of the year.\n        @throws Error if an invalid date or a different calendar used. */\n    weekOfYear: function(year, month, day) {\n        // Find Saturday of this week starting on Saturday\n        var checkDate = this.newDate(year, month, day);\n        checkDate.add(-((checkDate.dayOfWeek() + 1) % 7), 'd');\n        return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n    },\n\n    /** Retrieve the number of days in a month.\n        @memberof PersianCalendar\n        @param year {CDate|number} The date to examine or the year of the month.\n        @param [month] {number} The month.\n        @return {number} The number of days in this month.\n        @throws Error if an invalid month/year or a different calendar used. */\n    daysInMonth: function(year, month) {\n        var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n        return this.daysPerMonth[date.month() - 1] +\n            (date.month() === 12 && this.leapYear(date.year()) ? 1 : 0);\n    },\n\n    /** Determine whether this date is a week day.\n        @memberof PersianCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {boolean} <code>true</code> if a week day, <code>false</code> if not.\n        @throws Error if an invalid date or a different calendar used. */\n    weekDay: function(year, month, day) {\n        return this.dayOfWeek(year, month, day) !== 5;\n    },\n\n    /** Retrieve the Julian date equivalent for this date,\n        i.e. days since January 1, 4713 BCE Greenwich noon.\n        @memberof PersianCalendar\n        @param year {CDate|number} The date to convert or the year to convert.\n        @param [month] {number} The month to convert.\n        @param [day] {number} The day to convert.\n        @return {number} The equivalent Julian date.\n        @throws Error if an invalid date or a different calendar used. */\n    toJD: function(year, month, day) {\n        var date = this._validate(year, month, day, main.local.invalidDate);\n        year = date.year();\n        month = date.month();\n        day = date.day();\n        var epBase = year - (year >= 0 ? 474 : 473);\n        var epYear = 474 + mod(epBase, 2820);\n        return day + (month <= 7 ? (month - 1) * 31 : (month - 1) * 30 + 6) +\n            Math.floor((epYear * 682 - 110) / 2816) + (epYear - 1) * 365 +\n            Math.floor(epBase / 2820) * 1029983 + this.jdEpoch - 1;\n    },\n\n    /** Create a new date from a Julian date.\n        @memberof PersianCalendar\n        @param jd {number} The Julian date to convert.\n        @return {CDate} The equivalent date. */\n    fromJD: function(jd) {\n        jd = Math.floor(jd) + 0.5;\n        var depoch = jd - this.toJD(475, 1, 1);\n        var cycle = Math.floor(depoch / 1029983);\n        var cyear = mod(depoch, 1029983);\n        var ycycle = 2820;\n        if (cyear !== 1029982) {\n            var aux1 = Math.floor(cyear / 366);\n            var aux2 = mod(cyear, 366);\n            ycycle = Math.floor(((2134 * aux1) + (2816 * aux2) + 2815) / 1028522) + aux1 + 1;\n        }\n        var year = ycycle + (2820 * cycle) + 474;\n        year = (year <= 0 ? year - 1 : year);\n        var yday = jd - this.toJD(year, 1, 1) + 1;\n        var month = (yday <= 186 ? Math.ceil(yday / 31) : Math.ceil((yday - 6) / 30));\n        var day = jd - this.toJD(year, month, 1) + 1;\n        return this.newDate(year, month, day);\n    }\n});\n\n// Modulus function which works for non-integers.\nfunction mod(a, b) {\n    return a - (b * Math.floor(a / b));\n}\n\n// Persian (Jalali) calendar implementation\nmain.calendars.persian = PersianCalendar;\nmain.calendars.jalali = PersianCalendar;\n\n\n\n/***/ }),\n\n/***/ 31320:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_8359215__) {\n\n/*\n * World Calendars\n * https://github.com/alexcjohnson/world-calendars\n *\n * Batch-converted from kbwood/calendars\n * Many thanks to Keith Wood and all of the contributors to the original project!\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n﻿/* http://keith-wood.name/calendars.html\n   Taiwanese (Minguo) calendar for jQuery v2.0.2.\n   Written by Keith Wood (wood.keith{at}optusnet.com.au) February 2010.\n   Available under the MIT (http://keith-wood.name/licence.html) license. \n   Please attribute the author if you use it. */\n\nvar main = __nested_webpack_require_8359215__(63489);\nvar assign = __nested_webpack_require_8359215__(56131);\n\n\nvar gregorianCalendar = main.instance();\n\n/** Implementation of the Taiwanese calendar.\n    See http://en.wikipedia.org/wiki/Minguo_calendar.\n    @class TaiwanCalendar\n    @param [language=''] {string} The language code (default English) for localisation. */\nfunction TaiwanCalendar(language) {\n    this.local = this.regionalOptions[language || ''] || this.regionalOptions[''];\n}\n\nTaiwanCalendar.prototype = new main.baseCalendar;\n\nassign(TaiwanCalendar.prototype, {\n    /** The calendar name.\n        @memberof TaiwanCalendar */\n    name: 'Taiwan',\n    /** Julian date of start of Taiwan epoch: 1 January 1912 CE (Gregorian).\n        @memberof TaiwanCalendar */\n    jdEpoch: 2419402.5,\n    /** Difference in years between Taiwan and Gregorian calendars.\n        @memberof TaiwanCalendar */\n    yearsOffset: 1911,\n    /** Days per month in a common year.\n        @memberof TaiwanCalendar */\n    daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n    /** <code>true</code> if has a year zero, <code>false</code> if not.\n        @memberof TaiwanCalendar */\n    hasYearZero: false,\n    /** The minimum month number.\n        @memberof TaiwanCalendar */\n    minMonth: 1,\n    /** The first month in the year.\n        @memberof TaiwanCalendar */\n    firstMonth: 1,\n    /** The minimum day number.\n        @memberof TaiwanCalendar */\n    minDay: 1,\n\n    /** Localisations for the plugin.\n        Entries are objects indexed by the language code ('' being the default US/English).\n        Each object has the following attributes.\n        @memberof TaiwanCalendar\n        @property name {string} The calendar name.\n        @property epochs {string[]} The epoch names.\n        @property monthNames {string[]} The long names of the months of the year.\n        @property monthNamesShort {string[]} The short names of the months of the year.\n        @property dayNames {string[]} The long names of the days of the week.\n        @property dayNamesShort {string[]} The short names of the days of the week.\n        @property dayNamesMin {string[]} The minimal names of the days of the week.\n        @property dateFormat {string} The date format for this calendar.\n                See the options on <a href=\"BaseCalendar.html#formatDate\"><code>formatDate</code></a> for details.\n        @property firstDay {number} The number of the first day of the week, starting at 0.\n        @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */\n    regionalOptions: { // Localisations\n        '': {\n            name: 'Taiwan',\n            epochs: ['BROC', 'ROC'],\n            monthNames: ['January', 'February', 'March', 'April', 'May', 'June',\n            'July', 'August', 'September', 'October', 'November', 'December'],\n            monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n            dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n            dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n            dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n            digits: null,\n            dateFormat: 'yyyy/mm/dd',\n            firstDay: 1,\n            isRTL: false\n        }\n    },\n\n    /** Determine whether this date is in a leap year.\n        @memberof TaiwanCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.\n        @throws Error if an invalid year or a different calendar used. */\n    leapYear: function(year) {\n        var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        var year = this._t2gYear(date.year());\n        return gregorianCalendar.leapYear(year);\n    },\n\n    /** Determine the week of the year for a date - ISO 8601.\n        @memberof TaiwanCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The week of the year.\n        @throws Error if an invalid date or a different calendar used. */\n    weekOfYear: function(year, month, day) {\n        var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        var year = this._t2gYear(date.year());\n        return gregorianCalendar.weekOfYear(year, date.month(), date.day());\n    },\n\n    /** Retrieve the number of days in a month.\n        @memberof TaiwanCalendar\n        @param year {CDate|number} The date to examine or the year of the month.\n        @param [month] {number} The month.\n        @return {number} The number of days in this month.\n        @throws Error if an invalid month/year or a different calendar used. */\n    daysInMonth: function(year, month) {\n        var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n        return this.daysPerMonth[date.month() - 1] +\n            (date.month() === 2 && this.leapYear(date.year()) ? 1 : 0);\n    },\n\n    /** Determine whether this date is a week day.\n        @memberof TaiwanCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {boolean} <code>true</code> if a week day, <code>false</code> if not.\n        @throws Error if an invalid date or a different calendar used. */\n    weekDay: function(year, month, day) {\n        return (this.dayOfWeek(year, month, day) || 7) < 6;\n    },\n\n    /** Retrieve the Julian date equivalent for this date,\n        i.e. days since January 1, 4713 BCE Greenwich noon.\n        @memberof TaiwanCalendar\n        @param year {CDate|number} The date to convert or the year to convert.\n        @param [month] {number} The month to convert.\n        @param [day] {number} The day to convert.\n        @return {number} The equivalent Julian date.\n        @throws Error if an invalid date or a different calendar used. */\n    toJD: function(year, month, day) {\n        var date = this._validate(year, month, day, main.local.invalidDate);\n        var year = this._t2gYear(date.year());\n        return gregorianCalendar.toJD(year, date.month(), date.day());\n    },\n\n    /** Create a new date from a Julian date.\n        @memberof TaiwanCalendar\n        @param jd {number} The Julian date to convert.\n        @return {CDate} The equivalent date. */\n    fromJD: function(jd) {\n        var date = gregorianCalendar.fromJD(jd);\n        var year = this._g2tYear(date.year());\n        return this.newDate(year, date.month(), date.day());\n    },\n\n    /** Convert Taiwanese to Gregorian year.\n        @memberof TaiwanCalendar\n        @private\n        @param year {number} The Taiwanese year.\n        @return {number} The corresponding Gregorian year. */\n    _t2gYear: function(year) {\n        return year + this.yearsOffset + (year >= -this.yearsOffset && year <= -1 ? 1 : 0);\n    },\n\n    /** Convert Gregorian to Taiwanese year.\n        @memberof TaiwanCalendar\n        @private\n        @param year {number} The Gregorian year.\n        @return {number} The corresponding Taiwanese year. */\n    _g2tYear: function(year) {\n        return year - this.yearsOffset - (year >= 1 && year <= this.yearsOffset ? 1 : 0);\n    }\n});\n\n// Taiwan calendar implementation\nmain.calendars.taiwan = TaiwanCalendar;\n\n\n\n/***/ }),\n\n/***/ 51367:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_8367477__) {\n\n/*\n * World Calendars\n * https://github.com/alexcjohnson/world-calendars\n *\n * Batch-converted from kbwood/calendars\n * Many thanks to Keith Wood and all of the contributors to the original project!\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n﻿/* http://keith-wood.name/calendars.html\n   Thai calendar for jQuery v2.0.2.\n   Written by Keith Wood (wood.keith{at}optusnet.com.au) February 2010.\n   Available under the MIT (http://keith-wood.name/licence.html) license. \n   Please attribute the author if you use it. */\n\nvar main = __nested_webpack_require_8367477__(63489);\nvar assign = __nested_webpack_require_8367477__(56131);\n\n\nvar gregorianCalendar = main.instance();\n\n/** Implementation of the Thai calendar.\n    See http://en.wikipedia.org/wiki/Thai_calendar.\n    @class ThaiCalendar\n    @param [language=''] {string} The language code (default English) for localisation. */\nfunction ThaiCalendar(language) {\n    this.local = this.regionalOptions[language || ''] || this.regionalOptions[''];\n}\n\nThaiCalendar.prototype = new main.baseCalendar;\n\nassign(ThaiCalendar.prototype, {\n    /** The calendar name.\n        @memberof ThaiCalendar */\n    name: 'Thai',\n    /** Julian date of start of Thai epoch: 1 January 543 BCE (Gregorian).\n        @memberof ThaiCalendar */\n    jdEpoch: 1523098.5,\n    /** Difference in years between Thai and Gregorian calendars.\n        @memberof ThaiCalendar */\n    yearsOffset: 543, \n    /** Days per month in a common year.\n        @memberof ThaiCalendar */\n    daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n    /** <code>true</code> if has a year zero, <code>false</code> if not.\n        @memberof ThaiCalendar */\n    hasYearZero: false,\n    /** The minimum month number.\n        @memberof ThaiCalendar */\n    minMonth: 1,\n    /** The first month in the year.\n        @memberof ThaiCalendar */\n    firstMonth: 1,\n    /** The minimum day number.\n        @memberof ThaiCalendar */\n    minDay: 1,\n\n    /** Localisations for the plugin.\n        Entries are objects indexed by the language code ('' being the default US/English).\n        Each object has the following attributes.\n        @memberof ThaiCalendar\n        @property name {string} The calendar name.\n        @property epochs {string[]} The epoch names.\n        @property monthNames {string[]} The long names of the months of the year.\n        @property monthNamesShort {string[]} The short names of the months of the year.\n        @property dayNames {string[]} The long names of the days of the week.\n        @property dayNamesShort {string[]} The short names of the days of the week.\n        @property dayNamesMin {string[]} The minimal names of the days of the week.\n        @property dateFormat {string} The date format for this calendar.\n                See the options on <a href=\"BaseCalendar.html#formatDate\"><code>formatDate</code></a> for details.\n        @property firstDay {number} The number of the first day of the week, starting at 0.\n        @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */\n    regionalOptions: { // Localisations\n        '': {\n            name: 'Thai',\n            epochs: ['BBE', 'BE'],\n            monthNames: ['January', 'February', 'March', 'April', 'May', 'June',\n            'July', 'August', 'September', 'October', 'November', 'December'],\n            monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n            dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n            dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n            dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n            digits: null,\n            dateFormat: 'dd/mm/yyyy',\n            firstDay: 0,\n            isRTL: false\n        }\n    },\n\n    /** Determine whether this date is in a leap year.\n        @memberof ThaiCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.\n        @throws Error if an invalid year or a different calendar used. */\n    leapYear: function(year) {\n        var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        var year = this._t2gYear(date.year());\n        return gregorianCalendar.leapYear(year);\n    },\n\n    /** Determine the week of the year for a date - ISO 8601.\n        @memberof ThaiCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The week of the year.\n        @throws Error if an invalid date or a different calendar used. */\n    weekOfYear: function(year, month, day) {\n        var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        var year = this._t2gYear(date.year());\n        return gregorianCalendar.weekOfYear(year, date.month(), date.day());\n    },\n\n    /** Retrieve the number of days in a month.\n        @memberof ThaiCalendar\n        @param year {CDate|number} The date to examine or the year of the month.\n        @param [month] {number} The month.\n        @return {number} The number of days in this month.\n        @throws Error if an invalid month/year or a different calendar used. */\n    daysInMonth: function(year, month) {\n        var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n        return this.daysPerMonth[date.month() - 1] +\n            (date.month() === 2 && this.leapYear(date.year()) ? 1 : 0);\n    },\n\n    /** Determine whether this date is a week day.\n        @memberof ThaiCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {boolean} <code>true</code> if a week day, <code>false</code> if not.\n        @throws Error if an invalid date or a different calendar used. */\n    weekDay: function(year, month, day) {\n        return (this.dayOfWeek(year, month, day) || 7) < 6;\n    },\n\n    /** Retrieve the Julian date equivalent for this date,\n        i.e. days since January 1, 4713 BCE Greenwich noon.\n        @memberof ThaiCalendar\n        @param year {CDate|number} The date to convert or the year to convert.\n        @param [month] {number} The month to convert.\n        @param [day] {number} The day to convert.\n        @return {number} The equivalent Julian date.\n        @throws Error if an invalid date or a different calendar used. */\n    toJD: function(year, month, day) {\n        var date = this._validate(year, month, day, main.local.invalidDate);\n        var year = this._t2gYear(date.year());\n        return gregorianCalendar.toJD(year, date.month(), date.day());\n    },\n\n    /** Create a new date from a Julian date.\n        @memberof ThaiCalendar\n        @param jd {number} The Julian date to convert.\n        @return {CDate} The equivalent date. */\n    fromJD: function(jd) {\n        var date = gregorianCalendar.fromJD(jd);\n        var year = this._g2tYear(date.year());\n        return this.newDate(year, date.month(), date.day());\n    },\n\n    /** Convert Thai to Gregorian year.\n        @memberof ThaiCalendar\n        @private\n        @param year {number} The Thai year.\n        @return {number} The corresponding Gregorian year. */\n    _t2gYear: function(year) {\n        return year - this.yearsOffset - (year >= 1 && year <= this.yearsOffset ? 1 : 0);\n    },\n\n    /** Convert Gregorian to Thai year.\n        @memberof ThaiCalendar\n        @private\n        @param year {number} The Gregorian year.\n        @return {number} The corresponding Thai year. */\n    _g2tYear: function(year) {\n        return year + this.yearsOffset + (year >= -this.yearsOffset && year <= -1 ? 1 : 0);\n    }\n});\n\n// Thai calendar implementation\nmain.calendars.thai = ThaiCalendar;\n\n\n\n/***/ }),\n\n/***/ 21457:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_8375640__) {\n\n/*\n * World Calendars\n * https://github.com/alexcjohnson/world-calendars\n *\n * Batch-converted from kbwood/calendars\n * Many thanks to Keith Wood and all of the contributors to the original project!\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n﻿/* http://keith-wood.name/calendars.html\n   UmmAlQura calendar for jQuery v2.0.2.\n   Written by Amro Osama March 2013.\n   Modified by Binnooh.com & www.elm.sa - 2014 - Added dates back to 1276 Hijri year.\n   Available under the MIT (http://keith-wood.name/licence.html) license. \n   Please attribute the author if you use it. */\n\nvar main = __nested_webpack_require_8375640__(63489);\nvar assign = __nested_webpack_require_8375640__(56131);\n\n\n/** Implementation of the UmmAlQura or 'saudi' calendar.\n    See also <a href=\"http://en.wikipedia.org/wiki/Islamic_calendar#Saudi_Arabia.27s_Umm_al-Qura_calendar\">http://en.wikipedia.org/wiki/Islamic_calendar#Saudi_Arabia.27s_Umm_al-Qura_calendar</a>.\n    <a href=\"http://www.ummulqura.org.sa/About.aspx\">http://www.ummulqura.org.sa/About.aspx</a>\n    <a href=\"http://www.staff.science.uu.nl/~gent0113/islam/ummalqura.htm\">http://www.staff.science.uu.nl/~gent0113/islam/ummalqura.htm</a>\n    @class UmmAlQuraCalendar\n    @param [language=''] {string} The language code (default English) for localisation. */\nfunction UmmAlQuraCalendar(language) {\n    this.local = this.regionalOptions[language || ''] || this.regionalOptions[''];\n}\n\nUmmAlQuraCalendar.prototype = new main.baseCalendar;\n\nassign(UmmAlQuraCalendar.prototype, {\n    /** The calendar name.\n        @memberof UmmAlQuraCalendar */\n    name: 'UmmAlQura',\n    //jdEpoch: 1948440, // Julian date of start of UmmAlQura epoch: 14 March 1937 CE\n    //daysPerMonth: // Days per month in a common year, replaced by a method.\n    /** <code>true</code> if has a year zero, <code>false</code> if not.\n        @memberof UmmAlQuraCalendar */\n    hasYearZero: false,\n    /** The minimum month number.\n        @memberof UmmAlQuraCalendar */\n    minMonth: 1,\n    /** The first month in the year.\n        @memberof UmmAlQuraCalendar */\n    firstMonth: 1,\n    /** The minimum day number.\n        @memberof UmmAlQuraCalendar */\n    minDay: 1,\n\n    /** Localisations for the plugin.\n        Entries are objects indexed by the language code ('' being the default US/English).\n        Each object has the following attributes.\n        @memberof UmmAlQuraCalendar\n        @property name {string} The calendar name.\n        @property epochs {string[]} The epoch names.\n        @property monthNames {string[]} The long names of the months of the year.\n        @property monthNamesShort {string[]} The short names of the months of the year.\n        @property dayNames {string[]} The long names of the days of the week.\n        @property dayNamesShort {string[]} The short names of the days of the week.\n        @property dayNamesMin {string[]} The minimal names of the days of the week.\n        @property dateFormat {string} The date format for this calendar.\n                See the options on <a href=\"BaseCalendar.html#formatDate\"><code>formatDate</code></a> for details.\n        @property firstDay {number} The number of the first day of the week, starting at 0.\n        @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */\n    regionalOptions: { // Localisations\n        '': {\n            name: 'Umm al-Qura',\n            epochs: ['BH', 'AH'],\n            monthNames: ['Al-Muharram', 'Safar', 'Rabi\\' al-awwal', 'Rabi\\' Al-Thani', 'Jumada Al-Awwal', 'Jumada Al-Thani',\n            'Rajab', 'Sha\\'aban', 'Ramadan', 'Shawwal', 'Dhu al-Qi\\'dah', 'Dhu al-Hijjah'],\n            monthNamesShort: ['Muh', 'Saf', 'Rab1', 'Rab2', 'Jum1', 'Jum2', 'Raj', 'Sha\\'', 'Ram', 'Shaw', 'DhuQ', 'DhuH'],\n            dayNames: ['Yawm al-Ahad', 'Yawm al-Ithnain', 'Yawm al-Thalāthā’', 'Yawm al-Arba‘ā’', 'Yawm al-Khamīs', 'Yawm al-Jum‘a', 'Yawm al-Sabt'],\n            dayNamesMin: ['Ah', 'Ith', 'Th', 'Ar', 'Kh', 'Ju', 'Sa'],\n            digits: null,\n            dateFormat: 'yyyy/mm/dd',\n            firstDay: 6,\n            isRTL: true\n        }\n    },\n\n    /** Determine whether this date is in a leap year.\n        @memberof UmmAlQuraCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.\n        @throws Error if an invalid year or a different calendar used. */\n    leapYear: function (year) {\n        var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n        return (this.daysInYear(date.year()) === 355);\n    },\n\n    /** Determine the week of the year for a date.\n        @memberof UmmAlQuraCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The week of the year.\n        @throws Error if an invalid date or a different calendar used. */\n    weekOfYear: function (year, month, day) {\n        // Find Sunday of this week starting on Sunday\n        var checkDate = this.newDate(year, month, day);\n        checkDate.add(-checkDate.dayOfWeek(), 'd');\n        return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n    },\n\n    /** Retrieve the number of days in a year.\n        @memberof UmmAlQuraCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {number} The number of days.\n        @throws Error if an invalid year or a different calendar used. */\n    daysInYear: function (year) {\n        var daysCount = 0;\n        for (var i = 1; i <= 12; i++) {\n            daysCount += this.daysInMonth(year, i);\n        }\n        return daysCount;\n    },\n\n    /** Retrieve the number of days in a month.\n        @memberof UmmAlQuraCalendar\n        @param year {CDate|number} The date to examine or the year of the month.\n        @param [month] {number} The month.\n        @return {number} The number of days in this month.\n        @throws Error if an invalid month/year or a different calendar used. */\n    daysInMonth: function (year, month) {\n        var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n        var mcjdn = date.toJD() - 2400000 + 0.5; // Modified Chronological Julian Day Number (MCJDN)\n        // the MCJDN's of the start of the lunations in the Umm al-Qura calendar are stored in the 'ummalqura_dat' array\n        var index = 0;\n        for (var i = 0; i < ummalqura_dat.length; i++) {\n            if (ummalqura_dat[i] > mcjdn) {\n                return (ummalqura_dat[index] - ummalqura_dat[index - 1]);\n            }\n            index++;\n        }\n        return 30; // Unknown outside\n    },\n\n    /** Determine whether this date is a week day.\n        @memberof UmmAlQuraCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {boolean} <code>true</code> if a week day, <code>false</code> if not.\n        @throws Error if an invalid date or a different calendar used. */\n    weekDay: function (year, month, day) {\n        return this.dayOfWeek(year, month, day) !== 5;\n    },\n\n    /** Retrieve the Julian date equivalent for this date,\n        i.e. days since January 1, 4713 BCE Greenwich noon.\n        @memberof UmmAlQuraCalendar\n        @param year {CDate|number} The date to convert or the year to convert.\n        @param [month] {number} The month to convert.\n        @param [day] {number} The day to convert.\n        @return {number} The equivalent Julian date.\n        @throws Error if an invalid date or a different calendar used. */\n    toJD: function (year, month, day) {\n        var date = this._validate(year, month, day, main.local.invalidDate);\n        var index = (12 * (date.year() - 1)) + date.month() - 15292;\n        var mcjdn = date.day() + ummalqura_dat[index - 1] - 1;\n        return mcjdn + 2400000 - 0.5; // Modified Chronological Julian Day Number (MCJDN)\n    },\n\n    /** Create a new date from a Julian date.\n        @memberof UmmAlQuraCalendar\n        @param jd {number} The Julian date to convert.\n        @return {CDate} The equivalent date. */\n    fromJD: function (jd) {\n        var mcjdn = jd - 2400000 + 0.5; // Modified Chronological Julian Day Number (MCJDN)\n        // the MCJDN's of the start of the lunations in the Umm al-Qura calendar \n        // are stored in the 'ummalqura_dat' array\n        var index = 0;\n        for (var i = 0; i < ummalqura_dat.length; i++) {\n            if (ummalqura_dat[i] > mcjdn) break;\n            index++;\n        }\n        var lunation = index + 15292; //UmmAlQura Lunation Number\n        var ii = Math.floor((lunation - 1) / 12);\n        var year = ii + 1;\n        var month = lunation - 12 * ii;\n        var day = mcjdn - ummalqura_dat[index - 1] + 1;\n        return this.newDate(year, month, day);\n    },\n\n    /** Determine whether a date is valid for this calendar.\n        @memberof UmmAlQuraCalendar\n        @param year {number} The year to examine.\n        @param month {number} The month to examine.\n        @param day {number} The day to examine.\n        @return {boolean} <code>true</code> if a valid date, <code>false</code> if not. */\n    isValid: function(year, month, day) {\n        var valid = main.baseCalendar.prototype.isValid.apply(this, arguments);\n        if (valid) {\n            year = (year.year != null ? year.year : year);\n            valid = (year >= 1276 && year <= 1500);\n        }\n        return valid;\n    },\n\n    /** Check that a candidate date is from the same calendar and is valid.\n        @memberof UmmAlQuraCalendar\n        @private\n        @param year {CDate|number} The date to validate or the year to validate.\n        @param month {number} The month to validate.\n        @param day {number} The day to validate.\n        @param error {string} Error message if invalid.\n        @throws Error if different calendars used or invalid date. */\n    _validate: function(year, month, day, error) {\n        var date = main.baseCalendar.prototype._validate.apply(this, arguments);\n        if (date.year < 1276 || date.year > 1500) {\n            throw error.replace(/\\{0\\}/, this.local.name);\n        }\n        return date;\n    }\n});\n\n// UmmAlQura calendar implementation\nmain.calendars.ummalqura = UmmAlQuraCalendar;\n\nvar ummalqura_dat = [\n    20,    50,    79,    109,   138,   168,   197,   227,   256,   286,   315,   345,   374,   404,   433,   463,   492,   522,   551,   581, \n    611,   641,   670,   700,   729,   759,   788,   818,   847,   877,   906,   936,   965,   995,   1024,  1054,  1083,  1113,  1142,  1172,\n    1201,  1231,  1260,  1290,  1320,  1350,  1379,  1409,  1438,  1468,  1497,  1527,  1556,  1586,  1615,  1645,  1674,  1704,  1733,  1763,\n    1792,  1822,  1851,  1881,  1910,  1940,  1969,  1999,  2028,  2058,  2087,  2117,  2146,  2176,  2205,  2235,  2264,  2294,  2323,  2353,\n    2383,  2413,  2442,  2472,  2501,  2531,  2560,  2590,  2619,  2649,  2678,  2708,  2737,  2767,  2796,  2826,  2855,  2885,  2914,  2944,\n    2973,  3003,  3032,  3062,  3091,  3121,  3150,  3180,  3209,  3239,  3268,  3298,  3327,  3357,  3386,  3416,  3446,  3476,  3505,  3535,\n    3564,  3594,  3623,  3653,  3682,  3712,  3741,  3771,  3800,  3830,  3859,  3889,  3918,  3948,  3977,  4007,  4036,  4066,  4095,  4125,\n    4155,  4185,  4214,  4244,  4273,  4303,  4332,  4362,  4391,  4421,  4450,  4480,  4509,  4539,  4568,  4598,  4627,  4657,  4686,  4716,\n    4745,  4775,  4804,  4834,  4863,  4893,  4922,  4952,  4981,  5011,  5040,  5070,  5099,  5129,  5158,  5188,  5218,  5248,  5277,  5307,\n    5336,  5366,  5395,  5425,  5454,  5484,  5513,  5543,  5572,  5602,  5631,  5661,  5690,  5720,  5749,  5779,  5808,  5838,  5867,  5897,\n    5926,  5956,  5985,  6015,  6044,  6074,  6103,  6133,  6162,  6192,  6221,  6251,  6281,  6311,  6340,  6370,  6399,  6429,  6458,  6488,\n    6517,  6547,  6576,  6606,  6635,  6665,  6694,  6724,  6753,  6783,  6812,  6842,  6871,  6901,  6930,  6960,  6989,  7019,  7048,  7078,\n    7107,  7137,  7166,  7196,  7225,  7255,  7284,  7314,  7344,  7374,  7403,  7433,  7462,  7492,  7521,  7551,  7580,  7610,  7639,  7669,\n    7698,  7728,  7757,  7787,  7816,  7846,  7875,  7905,  7934,  7964,  7993,  8023,  8053,  8083,  8112,  8142,  8171,  8201,  8230,  8260,\n    8289,  8319,  8348,  8378,  8407,  8437,  8466,  8496,  8525,  8555,  8584,  8614,  8643,  8673,  8702,  8732,  8761,  8791,  8821,  8850,\n    8880,  8909,  8938,  8968,  8997,  9027,  9056,  9086,  9115,  9145,  9175,  9205,  9234,  9264,  9293,  9322,  9352,  9381,  9410,  9440,\n    9470,  9499,  9529,  9559,  9589,  9618,  9648,  9677,  9706,  9736,  9765,  9794,  9824,  9853,  9883,  9913,  9943,  9972,  10002, 10032,\n    10061, 10090, 10120, 10149, 10178, 10208, 10237, 10267, 10297, 10326, 10356, 10386, 10415, 10445, 10474, 10504, 10533, 10562, 10592, 10621,\n    10651, 10680, 10710, 10740, 10770, 10799, 10829, 10858, 10888, 10917, 10947, 10976, 11005, 11035, 11064, 11094, 11124, 11153, 11183, 11213,\n    11242, 11272, 11301, 11331, 11360, 11389, 11419, 11448, 11478, 11507, 11537, 11567, 11596, 11626, 11655, 11685, 11715, 11744, 11774, 11803,\n    11832, 11862, 11891, 11921, 11950, 11980, 12010, 12039, 12069, 12099, 12128, 12158, 12187, 12216, 12246, 12275, 12304, 12334, 12364, 12393,\n    12423, 12453, 12483, 12512, 12542, 12571, 12600, 12630, 12659, 12688, 12718, 12747, 12777, 12807, 12837, 12866, 12896, 12926, 12955, 12984,\n    13014, 13043, 13072, 13102, 13131, 13161, 13191, 13220, 13250, 13280, 13310, 13339, 13368, 13398, 13427, 13456, 13486, 13515, 13545, 13574,\n    13604, 13634, 13664, 13693, 13723, 13752, 13782, 13811, 13840, 13870, 13899, 13929, 13958, 13988, 14018, 14047, 14077, 14107, 14136, 14166,\n    14195, 14224, 14254, 14283, 14313, 14342, 14372, 14401, 14431, 14461, 14490, 14520, 14550, 14579, 14609, 14638, 14667, 14697, 14726, 14756,\n    14785, 14815, 14844, 14874, 14904, 14933, 14963, 14993, 15021, 15051, 15081, 15110, 15140, 15169, 15199, 15228, 15258, 15287, 15317, 15347,\n    15377, 15406, 15436, 15465, 15494, 15524, 15553, 15582, 15612, 15641, 15671, 15701, 15731, 15760, 15790, 15820, 15849, 15878, 15908, 15937,\n    15966, 15996, 16025, 16055, 16085, 16114, 16144, 16174, 16204, 16233, 16262, 16292, 16321, 16350, 16380, 16409, 16439, 16468, 16498, 16528,\n    16558, 16587, 16617, 16646, 16676, 16705, 16734, 16764, 16793, 16823, 16852, 16882, 16912, 16941, 16971, 17001, 17030, 17060, 17089, 17118,\n    17148, 17177, 17207, 17236, 17266, 17295, 17325, 17355, 17384, 17414, 17444, 17473, 17502, 17532, 17561, 17591, 17620, 17650, 17679, 17709,\n    17738, 17768, 17798, 17827, 17857, 17886, 17916, 17945, 17975, 18004, 18034, 18063, 18093, 18122, 18152, 18181, 18211, 18241, 18270, 18300,\n    18330, 18359, 18388, 18418, 18447, 18476, 18506, 18535, 18565, 18595, 18625, 18654, 18684, 18714, 18743, 18772, 18802, 18831, 18860, 18890,\n    18919, 18949, 18979, 19008, 19038, 19068, 19098, 19127, 19156, 19186, 19215, 19244, 19274, 19303, 19333, 19362, 19392, 19422, 19452, 19481,\n    19511, 19540, 19570, 19599, 19628, 19658, 19687, 19717, 19746, 19776, 19806, 19836, 19865, 19895, 19924, 19954, 19983, 20012, 20042, 20071,\n    20101, 20130, 20160, 20190, 20219, 20249, 20279, 20308, 20338, 20367, 20396, 20426, 20455, 20485, 20514, 20544, 20573, 20603, 20633, 20662,\n    20692, 20721, 20751, 20780, 20810, 20839, 20869, 20898, 20928, 20957, 20987, 21016, 21046, 21076, 21105, 21135, 21164, 21194, 21223, 21253,\n    21282, 21312, 21341, 21371, 21400, 21430, 21459, 21489, 21519, 21548, 21578, 21607, 21637, 21666, 21696, 21725, 21754, 21784, 21813, 21843,\n    21873, 21902, 21932, 21962, 21991, 22021, 22050, 22080, 22109, 22138, 22168, 22197, 22227, 22256, 22286, 22316, 22346, 22375, 22405, 22434,\n    22464, 22493, 22522, 22552, 22581, 22611, 22640, 22670, 22700, 22730, 22759, 22789, 22818, 22848, 22877, 22906, 22936, 22965, 22994, 23024,\n    23054, 23083, 23113, 23143, 23173, 23202, 23232, 23261, 23290, 23320, 23349, 23379, 23408, 23438, 23467, 23497, 23527, 23556, 23586, 23616,\n    23645, 23674, 23704, 23733, 23763, 23792, 23822, 23851, 23881, 23910, 23940, 23970, 23999, 24029, 24058, 24088, 24117, 24147, 24176, 24206,\n    24235, 24265, 24294, 24324, 24353, 24383, 24413, 24442, 24472, 24501, 24531, 24560, 24590, 24619, 24648, 24678, 24707, 24737, 24767, 24796,\n    24826, 24856, 24885, 24915, 24944, 24974, 25003, 25032, 25062, 25091, 25121, 25150, 25180, 25210, 25240, 25269, 25299, 25328, 25358, 25387,\n    25416, 25446, 25475, 25505, 25534, 25564, 25594, 25624, 25653, 25683, 25712, 25742, 25771, 25800, 25830, 25859, 25888, 25918, 25948, 25977,\n    26007, 26037, 26067, 26096, 26126, 26155, 26184, 26214, 26243, 26272, 26302, 26332, 26361, 26391, 26421, 26451, 26480, 26510, 26539, 26568,\n    26598, 26627, 26656, 26686, 26715, 26745, 26775, 26805, 26834, 26864, 26893, 26923, 26952, 26982, 27011, 27041, 27070, 27099, 27129, 27159,\n    27188, 27218, 27248, 27277, 27307, 27336, 27366, 27395, 27425, 27454, 27484, 27513, 27542, 27572, 27602, 27631, 27661, 27691, 27720, 27750,\n    27779, 27809, 27838, 27868, 27897, 27926, 27956, 27985, 28015, 28045, 28074, 28104, 28134, 28163, 28193, 28222, 28252, 28281, 28310, 28340,\n    28369, 28399, 28428, 28458, 28488, 28517, 28547, 28577,\n    // From 1356\n    28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990, 29019, 29049, 29078, 29108, 29137, 29167,\n    29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522, 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759,\n    29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053, 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348,\n    30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585, 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939,\n    30968, 30998, 31027, 31057, 31086, 31116, 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530,\n    31559, 31589, 31618, 31648, 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120,\n    32150, 32180, 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n    32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243, 33272, 33302,\n    33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775, 33804, 33834, 33863, 33893,\n    33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306, 34336, 34365, 34395, 34424, 34454, 34483,\n    34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837, 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074,\n    35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370, 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665,\n    35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901, 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254,\n    36284, 36314, 36343, 36373, 36403, 36433, 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845,\n    36875, 36904, 36934, 36963, 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436,\n    37465, 37495, 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n    38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558, 38587, 38617,\n    38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089, 39118, 39148, 39178, 39208,\n    39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621, 39650, 39680, 39709, 39739, 39768, 39798,\n    39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153, 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389,\n    40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685, 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980,\n    41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216, 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570,\n    41599, 41629, 41658, 41688, 41718, 41748, 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161,\n    42190, 42220, 42249, 42279, 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751,\n    42780, 42810, 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n    43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873, 43903, 43932,\n    43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405, 44434, 44464, 44493, 44523,\n    44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936, 44966, 44996, 45025, 45055, 45084, 45114,\n    45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468, 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704,\n    45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999, 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295,\n    46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531, 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885,\n    46915, 46944, 46974, 47003, 47033, 47063, 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476,\n    47506, 47535, 47565, 47594, 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066,\n    48096, 48125, 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n    48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189, 49218, 49248,\n    49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720, 49749, 49779, 49809, 49838,\n    49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252, 50281, 50311, 50340, 50370, 50400, 50429,\n    50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784, 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019,\n    51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315, 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611,\n    51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846, 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200,\n    52230, 52260, 52290, 52319, 52349, 52379, 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792,\n    52822, 52851, 52881, 52910, 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383,\n    53412, 53441, 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n    54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505, 54535, 54564,\n    54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036, 55066, 55095, 55125, 55154,\n    55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567, 55597, 55627, 55657, 55686, 55716, 55745,\n    55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100, 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335,\n    56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631, 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926,\n    56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162, 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517,\n    57546, 57576, 57605, 57634, 57664, 57694, 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107,\n    58137, 58167, 58196, 58226, 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698,\n    58727, 58757, 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n    59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820, 59850, 59879,\n    59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352, 60381, 60411, 60440, 60469,\n    60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883, 60912, 60942, 60972, 61002, 61031, 61061,\n    61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415, 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651,\n    61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947, 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242,\n    62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478, 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832,\n    62862, 62891, 62921, 62950, 62980, 63009, 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423,\n    63453, 63482, 63512, 63541, 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014,\n    64043, 64073, 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n    64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136, 65166, 65195,\n    65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667, 65697, 65726, 65755, 65785,\n    65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199, 66228, 66258, 66287, 66317, 66346, 66376,\n    66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730, 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967,\n    66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262, 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557,\n    67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793, 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148,\n    68177, 68207, 68236, 68266, 68295, 68325, 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738,\n    68768, 68797, 68827, 68857, 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330,\n    69359, 69388, 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n    69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451, 70481, 70510,\n    70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983, 71013, 71042, 71071, 71101,\n    71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514, 71543, 71573, 71602, 71632, 71662, 71691,\n    71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046, 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282,\n    72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577, 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872,\n    72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109, 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464,\n    73493, 73523, 73552, 73581, 73611, 73640, 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053,\n    74083, 74113, 74142, 74172, 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645,\n    74675, 74704, 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n    75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766, 75796, 75826,\n    75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299, 76328, 76358, 76387, 76416,\n    76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830, 76859, 76889, 76918, 76948, 76977, 77007,\n    77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361, 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598,\n    77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893, 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188,\n    78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425, 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779,\n    78808, 78838, 78867, 78897, 78926, 78956, 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369,\n    79399, 79428, 79458, 79487, 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960,\n    79990];\n\n\n\n/***/ }),\n\n/***/ 63489:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8405775__) {\n\n/*\n * World Calendars\n * https://github.com/alexcjohnson/world-calendars\n *\n * Batch-converted from kbwood/calendars\n * Many thanks to Keith Wood and all of the contributors to the original project!\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n﻿/* http://keith-wood.name/calendars.html\n   Calendars for jQuery v2.0.2.\n   Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009.\n   Available under the MIT (http://keith-wood.name/licence.html) license. \n   Please attribute the author if you use it. */\n\nvar assign = __nested_webpack_require_8405775__(56131);\n\n\nfunction Calendars() {\n    this.regionalOptions = [];\n    this.regionalOptions[''] = {\n        invalidCalendar: 'Calendar {0} not found',\n        invalidDate: 'Invalid {0} date',\n        invalidMonth: 'Invalid {0} month',\n        invalidYear: 'Invalid {0} year',\n        differentCalendars: 'Cannot mix {0} and {1} dates'\n    };\n    this.local = this.regionalOptions[''];\n    this.calendars = {};\n    this._localCals = {};\n}\n\n/** Create the calendars plugin.\n    <p>Provides support for various world calendars in a consistent manner.</p>\n     @class Calendars\n    @example _exports.instance('julian').newDate(2014, 12, 25) */\nassign(Calendars.prototype, {\n\n    /** Obtain a calendar implementation and localisation.\n        @memberof Calendars\n        @param [name='gregorian'] {string} The name of the calendar, e.g. 'gregorian', 'persian', 'islamic'.\n        @param [language=''] {string} The language code to use for localisation (default is English).\n        @return {Calendar} The calendar and localisation.\n        @throws Error if calendar not found. */\n    instance: function(name, language) {\n        name = (name || 'gregorian').toLowerCase();\n        language = language || '';\n        var cal = this._localCals[name + '-' + language];\n        if (!cal && this.calendars[name]) {\n            cal = new this.calendars[name](language);\n            this._localCals[name + '-' + language] = cal;\n        }\n        if (!cal) {\n            throw (this.local.invalidCalendar || this.regionalOptions[''].invalidCalendar).\n                replace(/\\{0\\}/, name);\n        }\n        return cal;\n    },\n\n    /** Create a new date - for today if no other parameters given.\n        @memberof Calendars\n        @param year {CDate|number} The date to copy or the year for the date.\n        @param [month] {number} The month for the date.\n        @param [day] {number} The day for the date.\n        @param [calendar='gregorian'] {BaseCalendar|string} The underlying calendar or the name of the calendar.\n        @param [language=''] {string} The language to use for localisation (default English).\n        @return {CDate} The new date.\n        @throws Error if an invalid date. */\n    newDate: function(year, month, day, calendar, language) {\n        calendar = (year != null && year.year ? year.calendar() : (typeof calendar === 'string' ?\n            this.instance(calendar, language) : calendar)) || this.instance();\n        return calendar.newDate(year, month, day);\n    },\n    \n    /** A simple digit substitution function for localising numbers via the Calendar digits option.\n        @member Calendars\n        @param digits {string[]} The substitute digits, for 0 through 9.\n        @return {function} The substitution function. */\n    substituteDigits: function(digits) {\n        return function(value) {\n            return (value + '').replace(/[0-9]/g, function(digit) {\n                return digits[digit];\n            });\n        }\n    },\n    \n    /** Digit substitution function for localising Chinese style numbers via the Calendar digits option.\n        @member Calendars\n        @param digits {string[]} The substitute digits, for 0 through 9.\n        @param powers {string[]} The characters denoting powers of 10, i.e. 1, 10, 100, 1000.\n        @return {function} The substitution function. */\n    substituteChineseDigits: function(digits, powers) {\n        return function(value) {\n            var localNumber = '';\n            var power = 0;\n            while (value > 0) {\n                var units = value % 10;\n                localNumber = (units === 0 ? '' : digits[units] + powers[power]) + localNumber;\n                power++;\n                value = Math.floor(value / 10);\n            }\n            if (localNumber.indexOf(digits[1] + powers[1]) === 0) {\n                localNumber = localNumber.substr(1);\n            }\n            return localNumber || digits[0];\n        }\n    }\n});\n\n/** Generic date, based on a particular calendar.\n    @class CDate\n    @param calendar {BaseCalendar} The underlying calendar implementation.\n    @param year {number} The year for this date.\n    @param month {number} The month for this date.\n    @param day {number} The day for this date.\n    @return {CDate} The date object.\n    @throws Error if an invalid date. */\nfunction CDate(calendar, year, month, day) {\n    this._calendar = calendar;\n    this._year = year;\n    this._month = month;\n    this._day = day;\n    if (this._calendar._validateLevel === 0 &&\n            !this._calendar.isValid(this._year, this._month, this._day)) {\n        throw (_exports.local.invalidDate || _exports.regionalOptions[''].invalidDate).\n            replace(/\\{0\\}/, this._calendar.local.name);\n    }\n}\n\n/** Pad a numeric value with leading zeroes.\n    @private\n    @param value {number} The number to format.\n    @param length {number} The minimum length.\n    @return {string} The formatted number. */\nfunction pad(value, length) {\n    value = '' + value;\n    return '000000'.substring(0, length - value.length) + value;\n}\n\nassign(CDate.prototype, {\n\n    /** Create a new date.\n        @memberof CDate\n        @param [year] {CDate|number} The date to copy or the year for the date (default this date).\n        @param [month] {number} The month for the date.\n        @param [day] {number} The day for the date.\n        @return {CDate} The new date.\n        @throws Error if an invalid date. */\n    newDate: function(year, month, day) {\n        return this._calendar.newDate((year == null ? this : year), month, day);\n    },\n\n    /** Set or retrieve the year for this date.\n        @memberof CDate\n        @param [year] {number} The year for the date.\n        @return {number|CDate} The date's year (if no parameter) or the updated date.\n        @throws Error if an invalid date. */\n    year: function(year) {\n        return (arguments.length === 0 ? this._year : this.set(year, 'y'));\n    },\n\n    /** Set or retrieve the month for this date.\n        @memberof CDate\n        @param [month] {number} The month for the date.\n        @return {number|CDate} The date's month (if no parameter) or the updated date.\n        @throws Error if an invalid date. */\n    month: function(month) {\n        return (arguments.length === 0 ? this._month : this.set(month, 'm'));\n    },\n\n    /** Set or retrieve the day for this date.\n        @memberof CDate\n        @param [day] {number} The day for the date.\n        @return {number|CData} The date's day (if no parameter) or the updated date.\n        @throws Error if an invalid date. */\n    day: function(day) {\n        return (arguments.length === 0 ? this._day : this.set(day, 'd'));\n    },\n\n    /** Set new values for this date.\n        @memberof CDate\n        @param year {number} The year for the date.\n        @param month {number} The month for the date.\n        @param day {number} The day for the date.\n        @return {CDate} The updated date.\n        @throws Error if an invalid date. */\n    date: function(year, month, day) {\n        if (!this._calendar.isValid(year, month, day)) {\n            throw (_exports.local.invalidDate || _exports.regionalOptions[''].invalidDate).\n                replace(/\\{0\\}/, this._calendar.local.name);\n        }\n        this._year = year;\n        this._month = month;\n        this._day = day;\n        return this;\n    },\n\n    /** Determine whether this date is in a leap year.\n        @memberof CDate\n        @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not. */\n    leapYear: function() {\n        return this._calendar.leapYear(this);\n    },\n\n    /** Retrieve the epoch designator for this date, e.g. BCE or CE.\n        @memberof CDate\n        @return {string} The current epoch. */\n    epoch: function() {\n        return this._calendar.epoch(this);\n    },\n\n    /** Format the year, if not a simple sequential number.\n        @memberof CDate\n        @return {string} The formatted year. */\n    formatYear: function() {\n        return this._calendar.formatYear(this);\n    },\n\n    /** Retrieve the month of the year for this date,\n        i.e. the month's position within a numbered year.\n        @memberof CDate\n        @return {number} The month of the year: <code>minMonth</code> to months per year. */\n    monthOfYear: function() {\n        return this._calendar.monthOfYear(this);\n    },\n\n    /** Retrieve the week of the year for this date.\n        @memberof CDate\n        @return {number} The week of the year: 1 to weeks per year. */\n    weekOfYear: function() {\n        return this._calendar.weekOfYear(this);\n    },\n\n    /** Retrieve the number of days in the year for this date.\n        @memberof CDate\n        @return {number} The number of days in this year. */\n    daysInYear: function() {\n        return this._calendar.daysInYear(this);\n    },\n\n    /** Retrieve the day of the year for this date.\n        @memberof CDate\n        @return {number} The day of the year: 1 to days per year. */\n    dayOfYear: function() {\n        return this._calendar.dayOfYear(this);\n    },\n\n    /** Retrieve the number of days in the month for this date.\n        @memberof CDate\n        @return {number} The number of days. */\n    daysInMonth: function() {\n        return this._calendar.daysInMonth(this);\n    },\n\n    /** Retrieve the day of the week for this date.\n        @memberof CDate\n        @return {number} The day of the week: 0 to number of days - 1. */\n    dayOfWeek: function() {\n        return this._calendar.dayOfWeek(this);\n    },\n\n    /** Determine whether this date is a week day.\n        @memberof CDate\n        @return {boolean} <code>true</code> if a week day, <code>false</code> if not. */\n    weekDay: function() {\n        return this._calendar.weekDay(this);\n    },\n\n    /** Retrieve additional information about this date.\n        @memberof CDate\n        @return {object} Additional information - contents depends on calendar. */\n    extraInfo: function() {\n        return this._calendar.extraInfo(this);\n    },\n\n    /** Add period(s) to a date.\n        @memberof CDate\n        @param offset {number} The number of periods to adjust by.\n        @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day.\n        @return {CDate} The updated date. */\n    add: function(offset, period) {\n        return this._calendar.add(this, offset, period);\n    },\n\n    /** Set a portion of the date.\n        @memberof CDate\n        @param value {number} The new value for the period.\n        @param period {string} One of 'y' for year, 'm' for month, 'd' for day.\n        @return {CDate} The updated date.\n        @throws Error if not a valid date. */\n    set: function(value, period) {\n        return this._calendar.set(this, value, period);\n    },\n\n    /** Compare this date to another date.\n        @memberof CDate\n        @param date {CDate} The other date.\n        @return {number} -1 if this date is before the other date,\n                0 if they are equal, or +1 if this date is after the other date. */\n    compareTo: function(date) {\n        if (this._calendar.name !== date._calendar.name) {\n            throw (_exports.local.differentCalendars || _exports.regionalOptions[''].differentCalendars).\n                replace(/\\{0\\}/, this._calendar.local.name).replace(/\\{1\\}/, date._calendar.local.name);\n        }\n        var c = (this._year !== date._year ? this._year - date._year :\n            this._month !== date._month ? this.monthOfYear() - date.monthOfYear() :\n            this._day - date._day);\n        return (c === 0 ? 0 : (c < 0 ? -1 : +1));\n    },\n\n    /** Retrieve the calendar backing this date.\n        @memberof CDate\n        @return {BaseCalendar} The calendar implementation. */\n    calendar: function() {\n        return this._calendar;\n    },\n\n    /** Retrieve the Julian date equivalent for this date,\n        i.e. days since January 1, 4713 BCE Greenwich noon.\n        @memberof CDate\n        @return {number} The equivalent Julian date. */\n    toJD: function() {\n        return this._calendar.toJD(this);\n    },\n\n    /** Create a new date from a Julian date.\n        @memberof CDate\n        @param jd {number} The Julian date to convert.\n        @return {CDate} The equivalent date. */\n    fromJD: function(jd) {\n        return this._calendar.fromJD(jd);\n    },\n\n    /** Convert this date to a standard (Gregorian) JavaScript Date.\n        @memberof CDate\n        @return {Date} The equivalent JavaScript date. */\n    toJSDate: function() {\n        return this._calendar.toJSDate(this);\n    },\n\n    /** Create a new date from a standard (Gregorian) JavaScript Date.\n        @memberof CDate\n        @param jsd {Date} The JavaScript date to convert.\n        @return {CDate} The equivalent date. */\n    fromJSDate: function(jsd) {\n        return this._calendar.fromJSDate(jsd);\n    },\n\n    /** Convert to a string for display.\n        @memberof CDate\n        @return {string} This date as a string. */\n    toString: function() {\n        return (this.year() < 0 ? '-' : '') + pad(Math.abs(this.year()), 4) +\n            '-' + pad(this.month(), 2) + '-' + pad(this.day(), 2);\n    }\n});\n\n/** Basic functionality for all calendars.\n    Other calendars should extend this:\n    <pre>OtherCalendar.prototype = new BaseCalendar;</pre>\n    @class BaseCalendar */\nfunction BaseCalendar() {\n    this.shortYearCutoff = '+10';\n}\n\nassign(BaseCalendar.prototype, {\n    _validateLevel: 0, // \"Stack\" to turn validation on/off\n\n    /** Create a new date within this calendar - today if no parameters given.\n        @memberof BaseCalendar\n        @param year {CDate|number} The date to duplicate or the year for the date.\n        @param [month] {number} The month for the date.\n        @param [day] {number} The day for the date.\n        @return {CDate} The new date.\n        @throws Error if not a valid date or a different calendar used. */\n    newDate: function(year, month, day) {\n        if (year == null) {\n            return this.today();\n        }\n        if (year.year) {\n            this._validate(year, month, day,\n                _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate);\n            day = year.day();\n            month = year.month();\n            year = year.year();\n        }\n        return new CDate(this, year, month, day);\n    },\n\n    /** Create a new date for today.\n        @memberof BaseCalendar\n        @return {CDate} Today's date. */\n    today: function() {\n        return this.fromJSDate(new Date());\n    },\n\n    /** Retrieve the epoch designator for this date.\n        @memberof BaseCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {string} The current epoch.\n        @throws Error if an invalid year or a different calendar used. */\n    epoch: function(year) {\n        var date = this._validate(year, this.minMonth, this.minDay,\n            _exports.local.invalidYear || _exports.regionalOptions[''].invalidYear);\n        return (date.year() < 0 ? this.local.epochs[0] : this.local.epochs[1]);\n    },\n\n    /** Format the year, if not a simple sequential number\n        @memberof BaseCalendar\n        @param year {CDate|number} The date to format or the year to format.\n        @return {string} The formatted year.\n        @throws Error if an invalid year or a different calendar used. */\n    formatYear: function(year) {\n        var date = this._validate(year, this.minMonth, this.minDay,\n            _exports.local.invalidYear || _exports.regionalOptions[''].invalidYear);\n        return (date.year() < 0 ? '-' : '') + pad(Math.abs(date.year()), 4)\n    },\n\n    /** Retrieve the number of months in a year.\n        @memberof BaseCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {number} The number of months.\n        @throws Error if an invalid year or a different calendar used. */\n    monthsInYear: function(year) {\n        this._validate(year, this.minMonth, this.minDay,\n            _exports.local.invalidYear || _exports.regionalOptions[''].invalidYear);\n        return 12;\n    },\n\n    /** Calculate the month's ordinal position within the year -\n        for those calendars that don't start at month 1!\n        @memberof BaseCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param month {number} The month to examine.\n        @return {number} The ordinal position, starting from <code>minMonth</code>.\n        @throws Error if an invalid year/month or a different calendar used. */\n    monthOfYear: function(year, month) {\n        var date = this._validate(year, month, this.minDay,\n            _exports.local.invalidMonth || _exports.regionalOptions[''].invalidMonth);\n        return (date.month() + this.monthsInYear(date) - this.firstMonth) %\n            this.monthsInYear(date) + this.minMonth;\n    },\n\n    /** Calculate actual month from ordinal position, starting from minMonth.\n        @memberof BaseCalendar\n        @param year {number} The year to examine.\n        @param ord {number} The month's ordinal position.\n        @return {number} The month's number.\n        @throws Error if an invalid year/month. */\n    fromMonthOfYear: function(year, ord) {\n        var m = (ord + this.firstMonth - 2 * this.minMonth) %\n            this.monthsInYear(year) + this.minMonth;\n        this._validate(year, m, this.minDay,\n            _exports.local.invalidMonth || _exports.regionalOptions[''].invalidMonth);\n        return m;\n    },\n\n    /** Retrieve the number of days in a year.\n        @memberof BaseCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {number} The number of days.\n        @throws Error if an invalid year or a different calendar used. */\n    daysInYear: function(year) {\n        var date = this._validate(year, this.minMonth, this.minDay,\n            _exports.local.invalidYear || _exports.regionalOptions[''].invalidYear);\n        return (this.leapYear(date) ? 366 : 365);\n    },\n\n    /** Retrieve the day of the year for a date.\n        @memberof BaseCalendar\n        @param year {CDate|number} The date to convert or the year to convert.\n        @param [month] {number} The month to convert.\n        @param [day] {number} The day to convert.\n        @return {number} The day of the year.\n        @throws Error if an invalid date or a different calendar used. */\n    dayOfYear: function(year, month, day) {\n        var date = this._validate(year, month, day,\n            _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate);\n        return date.toJD() - this.newDate(date.year(),\n            this.fromMonthOfYear(date.year(), this.minMonth), this.minDay).toJD() + 1;\n    },\n\n    /** Retrieve the number of days in a week.\n        @memberof BaseCalendar\n        @return {number} The number of days. */\n    daysInWeek: function() {\n        return 7;\n    },\n\n    /** Retrieve the day of the week for a date.\n        @memberof BaseCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The day of the week: 0 to number of days - 1.\n        @throws Error if an invalid date or a different calendar used. */\n    dayOfWeek: function(year, month, day) {\n        var date = this._validate(year, month, day,\n            _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate);\n        return (Math.floor(this.toJD(date)) + 2) % this.daysInWeek();\n    },\n\n    /** Retrieve additional information about a date.\n        @memberof BaseCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {object} Additional information - contents depends on calendar.\n        @throws Error if an invalid date or a different calendar used. */\n    extraInfo: function(year, month, day) {\n        this._validate(year, month, day,\n            _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate);\n        return {};\n    },\n\n    /** Add period(s) to a date.\n        Cater for no year zero.\n        @memberof BaseCalendar\n        @param date {CDate} The starting date.\n        @param offset {number} The number of periods to adjust by.\n        @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day.\n        @return {CDate} The updated date.\n        @throws Error if a different calendar used. */\n    add: function(date, offset, period) {\n        this._validate(date, this.minMonth, this.minDay,\n            _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate);\n        return this._correctAdd(date, this._add(date, offset, period), offset, period);\n    },\n\n    /** Add period(s) to a date.\n        @memberof BaseCalendar\n        @private\n        @param date {CDate} The starting date.\n        @param offset {number} The number of periods to adjust by.\n        @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day.\n        @return {CDate} The updated date. */\n    _add: function(date, offset, period) {\n        this._validateLevel++;\n        if (period === 'd' || period === 'w') {\n            var jd = date.toJD() + offset * (period === 'w' ? this.daysInWeek() : 1);\n            var d = date.calendar().fromJD(jd);\n            this._validateLevel--;\n            return [d.year(), d.month(), d.day()];\n        }\n        try {\n            var y = date.year() + (period === 'y' ? offset : 0);\n            var m = date.monthOfYear() + (period === 'm' ? offset : 0);\n            var d = date.day();// + (period === 'd' ? offset : 0) +\n                //(period === 'w' ? offset * this.daysInWeek() : 0);\n            var resyncYearMonth = function(calendar) {\n                while (m < calendar.minMonth) {\n                    y--;\n                    m += calendar.monthsInYear(y);\n                }\n                var yearMonths = calendar.monthsInYear(y);\n                while (m > yearMonths - 1 + calendar.minMonth) {\n                    y++;\n                    m -= yearMonths;\n                    yearMonths = calendar.monthsInYear(y);\n                }\n            };\n            if (period === 'y') {\n                if (date.month() !== this.fromMonthOfYear(y, m)) { // Hebrew\n                    m = this.newDate(y, date.month(), this.minDay).monthOfYear();\n                }\n                m = Math.min(m, this.monthsInYear(y));\n                d = Math.min(d, this.daysInMonth(y, this.fromMonthOfYear(y, m)));\n            }\n            else if (period === 'm') {\n                resyncYearMonth(this);\n                d = Math.min(d, this.daysInMonth(y, this.fromMonthOfYear(y, m)));\n            }\n            var ymd = [y, this.fromMonthOfYear(y, m), d];\n            this._validateLevel--;\n            return ymd;\n        }\n        catch (e) {\n            this._validateLevel--;\n            throw e;\n        }\n    },\n\n    /** Correct a candidate date after adding period(s) to a date.\n        Handle no year zero if necessary.\n        @memberof BaseCalendar\n        @private\n        @param date {CDate} The starting date.\n        @param ymd {number[]} The added date.\n        @param offset {number} The number of periods to adjust by.\n        @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day.\n        @return {CDate} The updated date. */\n    _correctAdd: function(date, ymd, offset, period) {\n        if (!this.hasYearZero && (period === 'y' || period === 'm')) {\n            if (ymd[0] === 0 || // In year zero\n                    (date.year() > 0) !== (ymd[0] > 0)) { // Crossed year zero\n                var adj = {y: [1, 1, 'y'], m: [1, this.monthsInYear(-1), 'm'],\n                    w: [this.daysInWeek(), this.daysInYear(-1), 'd'],\n                    d: [1, this.daysInYear(-1), 'd']}[period];\n                var dir = (offset < 0 ? -1 : +1);\n                ymd = this._add(date, offset * adj[0] + dir * adj[1], adj[2]);\n            }\n        }\n        return date.date(ymd[0], ymd[1], ymd[2]);\n    },\n\n    /** Set a portion of the date.\n        @memberof BaseCalendar\n        @param date {CDate} The starting date.\n        @param value {number} The new value for the period.\n        @param period {string} One of 'y' for year, 'm' for month, 'd' for day.\n        @return {CDate} The updated date.\n        @throws Error if an invalid date or a different calendar used. */\n    set: function(date, value, period) {\n        this._validate(date, this.minMonth, this.minDay,\n            _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate);\n        var y = (period === 'y' ? value : date.year());\n        var m = (period === 'm' ? value : date.month());\n        var d = (period === 'd' ? value : date.day());\n        if (period === 'y' || period === 'm') {\n            d = Math.min(d, this.daysInMonth(y, m));\n        }\n        return date.date(y, m, d);\n    },\n\n    /** Determine whether a date is valid for this calendar.\n        @memberof BaseCalendar\n        @param year {number} The year to examine.\n        @param month {number} The month to examine.\n        @param day {number} The day to examine.\n        @return {boolean} <code>true</code> if a valid date, <code>false</code> if not. */\n    isValid: function(year, month, day) {\n        this._validateLevel++;\n        var valid = (this.hasYearZero || year !== 0);\n        if (valid) {\n            var date = this.newDate(year, month, this.minDay);\n            valid = (month >= this.minMonth && month - this.minMonth < this.monthsInYear(date)) &&\n                (day >= this.minDay && day - this.minDay < this.daysInMonth(date));\n        }\n        this._validateLevel--;\n        return valid;\n    },\n\n    /** Convert the date to a standard (Gregorian) JavaScript Date.\n        @memberof BaseCalendar\n        @param year {CDate|number} The date to convert or the year to convert.\n        @param [month] {number} The month to convert.\n        @param [day] {number} The day to convert.\n        @return {Date} The equivalent JavaScript date.\n        @throws Error if an invalid date or a different calendar used. */\n    toJSDate: function(year, month, day) {\n        var date = this._validate(year, month, day,\n            _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate);\n        return _exports.instance().fromJD(this.toJD(date)).toJSDate();\n    },\n\n    /** Convert the date from a standard (Gregorian) JavaScript Date.\n        @memberof BaseCalendar\n        @param jsd {Date} The JavaScript date.\n        @return {CDate} The equivalent calendar date. */\n    fromJSDate: function(jsd) {\n        return this.fromJD(_exports.instance().fromJSDate(jsd).toJD());\n    },\n\n    /** Check that a candidate date is from the same calendar and is valid.\n        @memberof BaseCalendar\n        @private\n        @param year {CDate|number} The date to validate or the year to validate.\n        @param [month] {number} The month to validate.\n        @param [day] {number} The day to validate.\n        @param error {string} Rrror message if invalid.\n        @throws Error if different calendars used or invalid date. */\n    _validate: function(year, month, day, error) {\n        if (year.year) {\n            if (this._validateLevel === 0 && this.name !== year.calendar().name) {\n                throw (_exports.local.differentCalendars || _exports.regionalOptions[''].differentCalendars).\n                    replace(/\\{0\\}/, this.local.name).replace(/\\{1\\}/, year.calendar().local.name);\n            }\n            return year;\n        }\n        try {\n            this._validateLevel++;\n            if (this._validateLevel === 1 && !this.isValid(year, month, day)) {\n                throw error.replace(/\\{0\\}/, this.local.name);\n            }\n            var date = this.newDate(year, month, day);\n            this._validateLevel--;\n            return date;\n        }\n        catch (e) {\n            this._validateLevel--;\n            throw e;\n        }\n    }\n});\n\n/** Implementation of the Proleptic Gregorian Calendar.\n    See <a href=\":http://en.wikipedia.org/wiki/Gregorian_calendar\">http://en.wikipedia.org/wiki/Gregorian_calendar</a>\n    and <a href=\"http://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar\">http://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar</a>.\n    @class GregorianCalendar\n    @augments BaseCalendar\n    @param [language=''] {string} The language code (default English) for localisation. */\nfunction GregorianCalendar(language) {\n    this.local = this.regionalOptions[language] || this.regionalOptions[''];\n}\n\nGregorianCalendar.prototype = new BaseCalendar;\n\nassign(GregorianCalendar.prototype, {\n    /** The calendar name.\n        @memberof GregorianCalendar */\n    name: 'Gregorian',\n     /** Julian date of start of Gregorian epoch: 1 January 0001 CE.\n        @memberof GregorianCalendar */\n    jdEpoch: 1721425.5,\n     /** Days per month in a common year.\n        @memberof GregorianCalendar */\n    daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n     /** <code>true</code> if has a year zero, <code>false</code> if not.\n        @memberof GregorianCalendar */\n    hasYearZero: false,\n    /** The minimum month number.\n        @memberof GregorianCalendar */\n    minMonth: 1,\n    /** The first month in the year.\n        @memberof GregorianCalendar */\n    firstMonth: 1,\n     /** The minimum day number.\n        @memberof GregorianCalendar */\n    minDay: 1,\n\n    /** Localisations for the plugin.\n        Entries are objects indexed by the language code ('' being the default US/English).\n        Each object has the following attributes.\n        @memberof GregorianCalendar\n        @property name {string} The calendar name.\n        @property epochs {string[]} The epoch names.\n        @property monthNames {string[]} The long names of the months of the year.\n        @property monthNamesShort {string[]} The short names of the months of the year.\n        @property dayNames {string[]} The long names of the days of the week.\n        @property dayNamesShort {string[]} The short names of the days of the week.\n        @property dayNamesMin {string[]} The minimal names of the days of the week.\n        @property dateFormat {string} The date format for this calendar.\n                See the options on <a href=\"BaseCalendar.html#formatDate\"><code>formatDate</code></a> for details.\n        @property firstDay {number} The number of the first day of the week, starting at 0.\n        @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */\n    regionalOptions: { // Localisations\n        '': {\n            name: 'Gregorian',\n            epochs: ['BCE', 'CE'],\n            monthNames: ['January', 'February', 'March', 'April', 'May', 'June',\n            'July', 'August', 'September', 'October', 'November', 'December'],\n            monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n            dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n            dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n            dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n            digits: null,\n            dateFormat: 'mm/dd/yyyy',\n            firstDay: 0,\n            isRTL: false\n        }\n    },\n    \n    /** Determine whether this date is in a leap year.\n        @memberof GregorianCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.\n        @throws Error if an invalid year or a different calendar used. */\n    leapYear: function(year) {\n        var date = this._validate(year, this.minMonth, this.minDay,\n            _exports.local.invalidYear || _exports.regionalOptions[''].invalidYear);\n        var year = date.year() + (date.year() < 0 ? 1 : 0); // No year zero\n        return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n    },\n\n    /** Determine the week of the year for a date - ISO 8601.\n        @memberof GregorianCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {number} The week of the year, starting from 1.\n        @throws Error if an invalid date or a different calendar used. */\n    weekOfYear: function(year, month, day) {\n        // Find Thursday of this week starting on Monday\n        var checkDate = this.newDate(year, month, day);\n        checkDate.add(4 - (checkDate.dayOfWeek() || 7), 'd');\n        return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n    },\n\n    /** Retrieve the number of days in a month.\n        @memberof GregorianCalendar\n        @param year {CDate|number} The date to examine or the year of the month.\n        @param [month] {number} The month.\n        @return {number} The number of days in this month.\n        @throws Error if an invalid month/year or a different calendar used. */\n    daysInMonth: function(year, month) {\n        var date = this._validate(year, month, this.minDay,\n            _exports.local.invalidMonth || _exports.regionalOptions[''].invalidMonth);\n        return this.daysPerMonth[date.month() - 1] +\n            (date.month() === 2 && this.leapYear(date.year()) ? 1 : 0);\n    },\n\n    /** Determine whether this date is a week day.\n        @memberof GregorianCalendar\n        @param year {CDate|number} The date to examine or the year to examine.\n        @param [month] {number} The month to examine.\n        @param [day] {number} The day to examine.\n        @return {boolean} <code>true</code> if a week day, <code>false</code> if not.\n        @throws Error if an invalid date or a different calendar used. */\n    weekDay: function(year, month, day) {\n        return (this.dayOfWeek(year, month, day) || 7) < 6;\n    },\n\n    /** Retrieve the Julian date equivalent for this date,\n        i.e. days since January 1, 4713 BCE Greenwich noon.\n        @memberof GregorianCalendar\n        @param year {CDate|number} The date to convert or the year to convert.\n        @param [month] {number} The month to convert.\n        @param [day] {number} The day to convert.\n        @return {number} The equivalent Julian date.\n        @throws Error if an invalid date or a different calendar used. */\n    toJD: function(year, month, day) {\n        var date = this._validate(year, month, day,\n            _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate);\n        year = date.year();\n        month = date.month();\n        day = date.day();\n        if (year < 0) { year++; } // No year zero\n        // Jean Meeus algorithm, \"Astronomical Algorithms\", 1991\n        if (month < 3) {\n            month += 12;\n            year--;\n        }\n        var a = Math.floor(year / 100);\n        var b = 2 - a + Math.floor(a / 4);\n        return Math.floor(365.25 * (year + 4716)) +\n            Math.floor(30.6001 * (month + 1)) + day + b - 1524.5;\n    },\n\n    /** Create a new date from a Julian date.\n        @memberof GregorianCalendar\n        @param jd {number} The Julian date to convert.\n        @return {CDate} The equivalent date. */\n    fromJD: function(jd) {\n        // Jean Meeus algorithm, \"Astronomical Algorithms\", 1991\n        var z = Math.floor(jd + 0.5);\n        var a = Math.floor((z - 1867216.25) / 36524.25);\n        a = z + 1 + a - Math.floor(a / 4);\n        var b = a + 1524;\n        var c = Math.floor((b - 122.1) / 365.25);\n        var d = Math.floor(365.25 * c);\n        var e = Math.floor((b - d) / 30.6001);\n        var day = b - d - Math.floor(e * 30.6001);\n        var month = e - (e > 13.5 ? 13 : 1);\n        var year = c - (month > 2.5 ? 4716 : 4715);\n        if (year <= 0) { year--; } // No year zero\n        return this.newDate(year, month, day);\n    },\n\n    /** Convert this date to a standard (Gregorian) JavaScript Date.\n        @memberof GregorianCalendar\n        @param year {CDate|number} The date to convert or the year to convert.\n        @param [month] {number} The month to convert.\n        @param [day] {number} The day to convert.\n        @return {Date} The equivalent JavaScript date.\n        @throws Error if an invalid date or a different calendar used. */\n    toJSDate: function(year, month, day) {\n        var date = this._validate(year, month, day,\n            _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate);\n        var jsd = new Date(date.year(), date.month() - 1, date.day());\n        jsd.setHours(0);\n        jsd.setMinutes(0);\n        jsd.setSeconds(0);\n        jsd.setMilliseconds(0);\n        // Hours may be non-zero on daylight saving cut-over:\n        // > 12 when midnight changeover, but then cannot generate\n        // midnight datetime, so jump to 1AM, otherwise reset.\n        jsd.setHours(jsd.getHours() > 12 ? jsd.getHours() + 2 : 0);\n        return jsd;\n    },\n\n    /** Create a new date from a standard (Gregorian) JavaScript Date.\n        @memberof GregorianCalendar\n        @param jsd {Date} The JavaScript date to convert.\n        @return {CDate} The equivalent date. */\n    fromJSDate: function(jsd) {\n        return this.newDate(jsd.getFullYear(), jsd.getMonth() + 1, jsd.getDate());\n    }\n});\n\n// Singleton manager\nvar _exports = module.exports = new Calendars();\n\n// Date template\n_exports.cdate = CDate;\n\n// Base calendar template\n_exports.baseCalendar = BaseCalendar;\n\n// Gregorian calendar implementation\n_exports.calendars.gregorian = GregorianCalendar;\n\n\n\n/***/ }),\n\n/***/ 94338:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_8444185__) {\n\n/*\n * World Calendars\n * https://github.com/alexcjohnson/world-calendars\n *\n * Batch-converted from kbwood/calendars\n * Many thanks to Keith Wood and all of the contributors to the original project!\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n﻿/* http://keith-wood.name/calendars.html\n   Calendars extras for jQuery v2.0.2.\n   Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009.\n   Available under the MIT (http://keith-wood.name/licence.html) license. \n   Please attribute the author if you use it. */\n\nvar assign = __nested_webpack_require_8444185__(56131);\nvar main = __nested_webpack_require_8444185__(63489);\n\n\nassign(main.regionalOptions[''], {\n    invalidArguments: 'Invalid arguments',\n    invalidFormat: 'Cannot format a date from another calendar',\n    missingNumberAt: 'Missing number at position {0}',\n    unknownNameAt: 'Unknown name at position {0}',\n    unexpectedLiteralAt: 'Unexpected literal at position {0}',\n    unexpectedText: 'Additional text found at end'\n});\nmain.local = main.regionalOptions[''];\n\nassign(main.cdate.prototype, {\n\n    /** Format this date.\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof CDate\n        @param [format] {string} The date format to use (see <a href=\"BaseCalendar.html#formatDate\"><code>formatDate</code></a>).\n        @param [settings] {object} Options for the <code>formatDate</code> function.\n        @return {string} The formatted date. */\n    formatDate: function(format, settings) {\n        if (typeof format !== 'string') {\n            settings = format;\n            format = '';\n        }\n        return this._calendar.formatDate(format || '', this, settings);\n    }\n});\n\nassign(main.baseCalendar.prototype, {\n\n    UNIX_EPOCH: main.instance().newDate(1970, 1, 1).toJD(),\n    SECS_PER_DAY: 24 * 60 * 60,\n    TICKS_EPOCH: main.instance().jdEpoch, // 1 January 0001 CE\n    TICKS_PER_DAY: 24 * 60 * 60 * 10000000,\n\n    /** Date form for ATOM (RFC 3339/ISO 8601).\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof BaseCalendar */\n    ATOM: 'yyyy-mm-dd',\n    /** Date form for cookies.\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof BaseCalendar */\n    COOKIE: 'D, dd M yyyy',\n    /** Date form for full date.\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof BaseCalendar */\n    FULL: 'DD, MM d, yyyy',\n    /** Date form for ISO 8601.\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof BaseCalendar */\n    ISO_8601: 'yyyy-mm-dd',\n    /** Date form for Julian date.\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof BaseCalendar */\n    JULIAN: 'J',\n    /** Date form for RFC 822.\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof BaseCalendar */\n    RFC_822: 'D, d M yy',\n    /** Date form for RFC 850.\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof BaseCalendar */\n    RFC_850: 'DD, dd-M-yy',\n    /** Date form for RFC 1036.\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof BaseCalendar */\n    RFC_1036: 'D, d M yy',\n    /** Date form for RFC 1123.\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof BaseCalendar */\n    RFC_1123: 'D, d M yyyy',\n    /** Date form for RFC 2822.\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof BaseCalendar */\n    RFC_2822: 'D, d M yyyy',\n    /** Date form for RSS (RFC 822).\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof BaseCalendar */\n    RSS: 'D, d M yy',\n    /** Date form for Windows ticks.\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof BaseCalendar */\n    TICKS: '!',\n    /** Date form for Unix timestamp.\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof BaseCalendar */\n    TIMESTAMP: '@',\n    /** Date form for W3c (ISO 8601).\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof BaseCalendar */\n    W3C: 'yyyy-mm-dd',\n\n    /** Format a date object into a string value.\n        The format can be combinations of the following:\n        <ul>\n        <li>d  - day of month (no leading zero)</li>\n        <li>dd - day of month (two digit)</li>\n        <li>o  - day of year (no leading zeros)</li>\n        <li>oo - day of year (three digit)</li>\n        <li>D  - day name short</li>\n        <li>DD - day name long</li>\n        <li>w  - week of year (no leading zero)</li>\n        <li>ww - week of year (two digit)</li>\n        <li>m  - month of year (no leading zero)</li>\n        <li>mm - month of year (two digit)</li>\n        <li>M  - month name short</li>\n        <li>MM - month name long</li>\n        <li>yy - year (two digit)</li>\n        <li>yyyy - year (four digit)</li>\n        <li>YYYY - formatted year</li>\n        <li>J  - Julian date (days since January 1, 4713 BCE Greenwich noon)</li>\n        <li>@  - Unix timestamp (s since 01/01/1970)</li>\n        <li>!  - Windows ticks (100ns since 01/01/0001)</li>\n        <li>'...' - literal text</li>\n        <li>'' - single quote</li>\n        </ul>\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof BaseCalendar\n        @param [format] {string} The desired format of the date (defaults to calendar format).\n        @param date {CDate} The date value to format.\n        @param [settings] {object} Addition options, whose attributes include:\n        @property [dayNamesShort] {string[]} Abbreviated names of the days from Sunday.\n        @property [dayNames] {string[]} Names of the days from Sunday.\n        @property [monthNamesShort] {string[]} Abbreviated names of the months.\n        @property [monthNames] {string[]} Names of the months.\n        @property [calculateWeek] {CalendarsPickerCalculateWeek} Function that determines week of the year.\n        @property [localNumbers=false] {boolean} <code>true</code> to localise numbers (if available),\n                  <code>false</code> to use normal Arabic numerals.\n        @return {string} The date in the above format.\n        @throws Errors if the date is from a different calendar. */\n    formatDate: function(format, date, settings) {\n        if (typeof format !== 'string') {\n            settings = date;\n            date = format;\n            format = '';\n        }\n        if (!date) {\n            return '';\n        }\n        if (date.calendar() !== this) {\n            throw main.local.invalidFormat || main.regionalOptions[''].invalidFormat;\n        }\n        format = format || this.local.dateFormat;\n        settings = settings || {};\n        var dayNamesShort = settings.dayNamesShort || this.local.dayNamesShort;\n        var dayNames = settings.dayNames || this.local.dayNames;\n        var monthNumbers = settings.monthNumbers || this.local.monthNumbers;\n        var monthNamesShort = settings.monthNamesShort || this.local.monthNamesShort;\n        var monthNames = settings.monthNames || this.local.monthNames;\n        var calculateWeek = settings.calculateWeek || this.local.calculateWeek;\n        // Check whether a format character is doubled\n        var doubled = function(match, step) {\n            var matches = 1;\n            while (iFormat + matches < format.length && format.charAt(iFormat + matches) === match) {\n                matches++;\n            }\n            iFormat += matches - 1;\n            return Math.floor(matches / (step || 1)) > 1;\n        };\n        // Format a number, with leading zeroes if necessary\n        var formatNumber = function(match, value, len, step) {\n            var num = '' + value;\n            if (doubled(match, step)) {\n                while (num.length < len) {\n                    num = '0' + num;\n                }\n            }\n            return num;\n        };\n        // Format a name, short or long as requested\n        var formatName = function(match, value, shortNames, longNames) {\n            return (doubled(match) ? longNames[value] : shortNames[value]);\n        };\n        // Format month number\n        // (e.g. Chinese calendar needs to account for intercalary months)\n        var calendar = this;\n        var formatMonth = function(date) {\n            return (typeof monthNumbers === 'function') ?\n                monthNumbers.call(calendar, date, doubled('m')) :\n                localiseNumbers(formatNumber('m', date.month(), 2));\n        };\n        // Format a month name, short or long as requested\n        var formatMonthName = function(date, useLongName) {\n            if (useLongName) {\n                return (typeof monthNames === 'function') ?\n                    monthNames.call(calendar, date) :\n                    monthNames[date.month() - calendar.minMonth];\n            } else {\n                return (typeof monthNamesShort === 'function') ?\n                    monthNamesShort.call(calendar, date) :\n                    monthNamesShort[date.month() - calendar.minMonth];\n            }\n        };\n        // Localise numbers if requested and available\n        var digits = this.local.digits;\n        var localiseNumbers = function(value) {\n            return (settings.localNumbers && digits ? digits(value) : value);\n        };\n        var output = '';\n        var literal = false;\n        for (var iFormat = 0; iFormat < format.length; iFormat++) {\n            if (literal) {\n                if (format.charAt(iFormat) === \"'\" && !doubled(\"'\")) {\n                    literal = false;\n                }\n                else {\n                    output += format.charAt(iFormat);\n                }\n            }\n            else {\n                switch (format.charAt(iFormat)) {\n                    case 'd': output += localiseNumbers(formatNumber('d', date.day(), 2)); break;\n                    case 'D': output += formatName('D', date.dayOfWeek(),\n                        dayNamesShort, dayNames); break;\n                    case 'o': output += formatNumber('o', date.dayOfYear(), 3); break;\n                    case 'w': output += formatNumber('w', date.weekOfYear(), 2); break;\n                    case 'm': output += formatMonth(date); break;\n                    case 'M': output += formatMonthName(date, doubled('M')); break;\n                    case 'y':\n                        output += (doubled('y', 2) ? date.year() :\n                            (date.year() % 100 < 10 ? '0' : '') + date.year() % 100);\n                        break;\n                    case 'Y':\n                        doubled('Y', 2);\n                        output += date.formatYear();\n                        break;\n                    case 'J': output += date.toJD(); break;\n                    case '@': output += (date.toJD() - this.UNIX_EPOCH) * this.SECS_PER_DAY; break;\n                    case '!': output += (date.toJD() - this.TICKS_EPOCH) * this.TICKS_PER_DAY; break;\n                    case \"'\":\n                        if (doubled(\"'\")) {\n                            output += \"'\";\n                        }\n                        else {\n                            literal = true;\n                        }\n                        break;\n                    default:\n                        output += format.charAt(iFormat);\n                }\n            }\n        }\n        return output;\n    },\n\n    /** Parse a string value into a date object.\n        See <a href=\"#formatDate\"><code>formatDate</code></a> for the possible formats, plus:\n        <ul>\n        <li>* - ignore rest of string</li>\n        </ul>\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof BaseCalendar\n        @param format {string} The expected format of the date ('' for default calendar format).\n        @param value {string} The date in the above format.\n        @param [settings] {object} Additional options whose attributes include:\n        @property [shortYearCutoff] {number} The cutoff year for determining the century.\n        @property [dayNamesShort] {string[]} Abbreviated names of the days from Sunday.\n        @property [dayNames] {string[]} Names of the days from Sunday.\n        @property [monthNamesShort] {string[]} Abbreviated names of the months.\n        @property [monthNames] {string[]} Names of the months.\n        @return {CDate} The extracted date value or <code>null</code> if value is blank.\n        @throws Errors if the format and/or value are missing,\n                if the value doesn't match the format, or if the date is invalid. */\n    parseDate: function(format, value, settings) {\n        if (value == null) {\n            throw main.local.invalidArguments || main.regionalOptions[''].invalidArguments;\n        }\n        value = (typeof value === 'object' ? value.toString() : value + '');\n        if (value === '') {\n            return null;\n        }\n        format = format || this.local.dateFormat;\n        settings = settings || {};\n        var shortYearCutoff = settings.shortYearCutoff || this.shortYearCutoff;\n        shortYearCutoff = (typeof shortYearCutoff !== 'string' ? shortYearCutoff :\n            this.today().year() % 100 + parseInt(shortYearCutoff, 10));\n        var dayNamesShort = settings.dayNamesShort || this.local.dayNamesShort;\n        var dayNames = settings.dayNames || this.local.dayNames;\n        var parseMonth = settings.parseMonth || this.local.parseMonth;\n        var monthNumbers = settings.monthNumbers || this.local.monthNumbers;\n        var monthNamesShort = settings.monthNamesShort || this.local.monthNamesShort;\n        var monthNames = settings.monthNames || this.local.monthNames;\n        var jd = -1;\n        var year = -1;\n        var month = -1;\n        var day = -1;\n        var doy = -1;\n        var shortYear = false;\n        var literal = false;\n        // Check whether a format character is doubled\n        var doubled = function(match, step) {\n            var matches = 1;\n            while (iFormat + matches < format.length && format.charAt(iFormat + matches) === match) {\n                matches++;\n            }\n            iFormat += matches - 1;\n            return Math.floor(matches / (step || 1)) > 1;\n        };\n        // Extract a number from the string value\n        var getNumber = function(match, step) {\n            var isDoubled = doubled(match, step);\n            var size = [2, 3, isDoubled ? 4 : 2, isDoubled ? 4 : 2, 10, 11, 20]['oyYJ@!'.indexOf(match) + 1];\n            var digits = new RegExp('^-?\\\\d{1,' + size + '}');\n            var num = value.substring(iValue).match(digits);\n            if (!num) {\n                throw (main.local.missingNumberAt || main.regionalOptions[''].missingNumberAt).\n                    replace(/\\{0\\}/, iValue);\n            }\n            iValue += num[0].length;\n            return parseInt(num[0], 10);\n        };\n        // Extract a month number from the string value\n        var calendar = this;\n        var getMonthNumber = function() {\n            if (typeof monthNumbers === 'function') {\n                doubled('m');  // update iFormat\n                var month = monthNumbers.call(calendar, value.substring(iValue));\n                iValue += month.length;\n                return month;\n            }\n\n            return getNumber('m');\n        };\n        // Extract a name from the string value and convert to an index\n        var getName = function(match, shortNames, longNames, step) {\n            var names = (doubled(match, step) ? longNames : shortNames);\n            for (var i = 0; i < names.length; i++) {\n                if (value.substr(iValue, names[i].length).toLowerCase() === names[i].toLowerCase()) {\n                    iValue += names[i].length;\n                    return i + calendar.minMonth;\n                }\n            }\n            throw (main.local.unknownNameAt || main.regionalOptions[''].unknownNameAt).\n                replace(/\\{0\\}/, iValue);\n        };\n        // Extract a month number from the string value\n        var getMonthName = function() {\n            if (typeof monthNames === 'function') {\n                var month = doubled('M') ?\n                    monthNames.call(calendar, value.substring(iValue)) :\n                    monthNamesShort.call(calendar, value.substring(iValue));\n                iValue += month.length;\n                return month;\n            }\n\n            return getName('M', monthNamesShort, monthNames);\n        };\n        // Confirm that a literal character matches the string value\n        var checkLiteral = function() {\n            if (value.charAt(iValue) !== format.charAt(iFormat)) {\n                throw (main.local.unexpectedLiteralAt ||\n                    main.regionalOptions[''].unexpectedLiteralAt).replace(/\\{0\\}/, iValue);\n            }\n            iValue++;\n        };\n        var iValue = 0;\n        for (var iFormat = 0; iFormat < format.length; iFormat++) {\n            if (literal) {\n                if (format.charAt(iFormat) === \"'\" && !doubled(\"'\")) {\n                    literal = false;\n                }\n                else {\n                    checkLiteral();\n                }\n            }\n            else {\n                switch (format.charAt(iFormat)) {\n                    case 'd': day = getNumber('d'); break;\n                    case 'D': getName('D', dayNamesShort, dayNames); break;\n                    case 'o': doy = getNumber('o'); break;\n                    case 'w': getNumber('w'); break;\n                    case 'm': month = getMonthNumber(); break;\n                    case 'M': month = getMonthName(); break;\n                    case 'y':\n                        var iSave = iFormat;\n                        shortYear = !doubled('y', 2);\n                        iFormat = iSave;\n                        year = getNumber('y', 2);\n                        break;\n                    case 'Y': year = getNumber('Y', 2); break;\n                    case 'J':\n                        jd = getNumber('J') + 0.5;\n                        if (value.charAt(iValue) === '.') {\n                            iValue++;\n                            getNumber('J');\n                        }\n                        break;\n                    case '@': jd = getNumber('@') / this.SECS_PER_DAY + this.UNIX_EPOCH; break;\n                    case '!': jd = getNumber('!') / this.TICKS_PER_DAY + this.TICKS_EPOCH; break;\n                    case '*': iValue = value.length; break;\n                    case \"'\":\n                        if (doubled(\"'\")) {\n                            checkLiteral();\n                        }\n                        else {\n                            literal = true;\n                        }\n                        break;\n                    default: checkLiteral();\n                }\n            }\n        }\n        if (iValue < value.length) {\n            throw main.local.unexpectedText || main.regionalOptions[''].unexpectedText;\n        }\n        if (year === -1) {\n            year = this.today().year();\n        }\n        else if (year < 100 && shortYear) {\n            year += (shortYearCutoff === -1 ? 1900 : this.today().year() -\n                this.today().year() % 100 - (year <= shortYearCutoff ? 0 : 100));\n        }\n        if (typeof month === 'string') {\n            month = parseMonth.call(this, year, month);\n        }\n        if (doy > -1) {\n            month = 1;\n            day = doy;\n            for (var dim = this.daysInMonth(year, month); day > dim; dim = this.daysInMonth(year, month)) {\n                month++;\n                day -= dim;\n            }\n        }\n        return (jd > -1 ? this.fromJD(jd) : this.newDate(year, month, day));\n    },\n\n    /** A date may be specified as an exact value or a relative one.\n        Found in the <code>jquery.calendars.plus.js</code> module.\n        @memberof BaseCalendar\n        @param dateSpec {CDate|number|string} The date as an object or string in the given format or\n                an offset - numeric days from today, or string amounts and periods, e.g. '+1m +2w'.\n        @param defaultDate {CDate} The date to use if no other supplied, may be <code>null</code>.\n        @param currentDate {CDate} The current date as a possible basis for relative dates,\n                if <code>null</code> today is used (optional)\n        @param [dateFormat] {string} The expected date format - see <a href=\"#formatDate\"><code>formatDate</code></a>.\n        @param [settings] {object} Additional options whose attributes include:\n        @property [shortYearCutoff] {number} The cutoff year for determining the century.\n        @property [dayNamesShort] {string[]} Abbreviated names of the days from Sunday.\n        @property [dayNames] {string[]} Names of the days from Sunday.\n        @property [monthNamesShort] {string[]} Abbreviated names of the months.\n        @property [monthNames] {string[]} Names of the months.\n        @return {CDate} The decoded date. */\n    determineDate: function(dateSpec, defaultDate, currentDate, dateFormat, settings) {\n        if (currentDate && typeof currentDate !== 'object') {\n            settings = dateFormat;\n            dateFormat = currentDate;\n            currentDate = null;\n        }\n        if (typeof dateFormat !== 'string') {\n            settings = dateFormat;\n            dateFormat = '';\n        }\n        var calendar = this;\n        var offsetString = function(offset) {\n            try {\n                return calendar.parseDate(dateFormat, offset, settings);\n            }\n            catch (e) {\n                // Ignore\n            }\n            offset = offset.toLowerCase();\n            var date = (offset.match(/^c/) && currentDate ?\n                currentDate.newDate() : null) || calendar.today();\n            var pattern = /([+-]?[0-9]+)\\s*(d|w|m|y)?/g;\n            var matches = pattern.exec(offset);\n            while (matches) {\n                date.add(parseInt(matches[1], 10), matches[2] || 'd');\n                matches = pattern.exec(offset);\n            }\n            return date;\n        };\n        defaultDate = (defaultDate ? defaultDate.newDate() : null);\n        dateSpec = (dateSpec == null ? defaultDate :\n            (typeof dateSpec === 'string' ? offsetString(dateSpec) : (typeof dateSpec === 'number' ?\n            (isNaN(dateSpec) || dateSpec === Infinity || dateSpec === -Infinity ? defaultDate :\n            calendar.today().add(dateSpec, 'd')) : calendar.newDate(dateSpec))));\n        return dateSpec;\n    }\n});\n\n\n\n/***/ }),\n\n/***/ 69862:\n/***/ (function() {\n\n/* (ignored) */\n\n/***/ }),\n\n/***/ 40964:\n/***/ (function() {\n\n/* (ignored) */\n\n/***/ }),\n\n/***/ 72077:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8466940__) {\n\n\"use strict\";\n\n\nvar filter = __nested_webpack_require_8466940__(24696);\n\nmodule.exports = function availableTypedArrays() {\n\treturn filter([\n\t\t'BigInt64Array',\n\t\t'BigUint64Array',\n\t\t'Float32Array',\n\t\t'Float64Array',\n\t\t'Int16Array',\n\t\t'Int32Array',\n\t\t'Int8Array',\n\t\t'Uint16Array',\n\t\t'Uint32Array',\n\t\t'Uint8Array',\n\t\t'Uint8ClampedArray'\n\t], function (typedArray) {\n\t\treturn typeof __nested_webpack_require_8466940__.g[typedArray] === 'function';\n\t});\n};\n\n\n/***/ }),\n\n/***/ 81684:\n/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __nested_webpack_require_8467486__) {\n\n\"use strict\";\n\n// EXPORTS\n__nested_webpack_require_8467486__.d(__webpack_exports__, {\n  \"sX\": function() { return /* reexport */ value; },\n  \"k4\": function() { return /* reexport */ number; }\n});\n\n// UNUSED EXPORTS: interpolateArray, interpolateBasis, interpolateBasisClosed, interpolateCubehelix, interpolateCubehelixLong, interpolateDate, interpolateDiscrete, interpolateHcl, interpolateHclLong, interpolateHsl, interpolateHslLong, interpolateHue, interpolateLab, interpolateNumberArray, interpolateObject, interpolateRgb, interpolateRgbBasis, interpolateRgbBasisClosed, interpolateRound, interpolateString, interpolateTransformCss, interpolateTransformSvg, interpolateZoom, piecewise, quantize\n\n;// CONCATENATED MODULE: ./node_modules/d3-color/src/define.js\n/* harmony default export */ function src_define(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\nfunction extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) {\n    prototype[key] = definition[key];\n  }\n  return prototype;\n}\n;// CONCATENATED MODULE: ./node_modules/d3-color/src/color.js\n\nfunction Color() {}\nvar _darker = 0.7;\n\nvar _brighter = 1 / _darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n  reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n  reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n  reHex = /^#([0-9a-f]{3,8})$/,\n  reRgbInteger = new RegExp(\"^rgb\\\\(\".concat(reI, \",\").concat(reI, \",\").concat(reI, \"\\\\)$\")),\n  reRgbPercent = new RegExp(\"^rgb\\\\(\".concat(reP, \",\").concat(reP, \",\").concat(reP, \"\\\\)$\")),\n  reRgbaInteger = new RegExp(\"^rgba\\\\(\".concat(reI, \",\").concat(reI, \",\").concat(reI, \",\").concat(reN, \"\\\\)$\")),\n  reRgbaPercent = new RegExp(\"^rgba\\\\(\".concat(reP, \",\").concat(reP, \",\").concat(reP, \",\").concat(reN, \"\\\\)$\")),\n  reHslPercent = new RegExp(\"^hsl\\\\(\".concat(reN, \",\").concat(reP, \",\").concat(reP, \"\\\\)$\")),\n  reHslaPercent = new RegExp(\"^hsla\\\\(\".concat(reN, \",\").concat(reP, \",\").concat(reP, \",\").concat(reN, \"\\\\)$\"));\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\nsrc_define(Color, color, {\n  copy: function copy(channels) {\n    return Object.assign(new this.constructor(), this, channels);\n  },\n  displayable: function displayable() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex,\n  // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHex8: color_formatHex8,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\nfunction color_formatHex8() {\n  return this.rgb().formatHex8();\n}\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\nfunction color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n  : l === 3 ? new Rgb(m >> 8 & 0xf | m >> 4 & 0xf0, m >> 4 & 0xf | m & 0xf0, (m & 0xf) << 4 | m & 0xf, 1) // #f00\n  : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n  : l === 4 ? rgba(m >> 12 & 0xf | m >> 8 & 0xf0, m >> 8 & 0xf | m >> 4 & 0xf0, m >> 4 & 0xf | m & 0xf0, ((m & 0xf) << 4 | m & 0xf) / 0xff) // #f000\n  : null // invalid hex\n  ) : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n  : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n  : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n  : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n  : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n  : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n  : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n  : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0) : null;\n}\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\nfunction rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb();\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\nfunction color_rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\nfunction Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\nsrc_define(Rgb, color_rgb, extend(Color, {\n  brighter: function brighter(k) {\n    k = k == null ? _brighter : Math.pow(_brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker: function darker(k) {\n    k = k == null ? _darker : Math.pow(_darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb: function rgb() {\n    return this;\n  },\n  clamp: function clamp() {\n    return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n  },\n  displayable: function displayable() {\n    return -0.5 <= this.r && this.r < 255.5 && -0.5 <= this.g && this.g < 255.5 && -0.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1;\n  },\n  hex: rgb_formatHex,\n  // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatHex8: rgb_formatHex8,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\nfunction rgb_formatHex() {\n  return \"#\".concat(hex(this.r)).concat(hex(this.g)).concat(hex(this.b));\n}\nfunction rgb_formatHex8() {\n  return \"#\".concat(hex(this.r)).concat(hex(this.g)).concat(hex(this.b)).concat(hex((isNaN(this.opacity) ? 1 : this.opacity) * 255));\n}\nfunction rgb_formatRgb() {\n  var a = clampa(this.opacity);\n  return \"\".concat(a === 1 ? \"rgb(\" : \"rgba(\").concat(clampi(this.r), \", \").concat(clampi(this.g), \", \").concat(clampi(this.b)).concat(a === 1 ? \")\" : \", \".concat(a, \")\"));\n}\nfunction clampa(opacity) {\n  return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\nfunction clampi(value) {\n  return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\nfunction hex(value) {\n  value = clampi(value);\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;else if (l <= 0 || l >= 1) h = s = NaN;else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\nfunction hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl();\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n    g = o.g / 255,\n    b = o.b / 255,\n    min = Math.min(r, g, b),\n    max = Math.max(r, g, b),\n    h = NaN,\n    s = max - min,\n    l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;else if (g === max) h = (b - r) / s + 2;else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\nfunction hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\nsrc_define(Hsl, hsl, extend(Color, {\n  brighter: function brighter(k) {\n    k = k == null ? _brighter : Math.pow(_brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function darker(k) {\n    k = k == null ? _darker : Math.pow(_darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function rgb() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n      s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n      l = this.l,\n      m2 = l + (l < 0.5 ? l : 1 - l) * s,\n      m1 = 2 * l - m2;\n    return new Rgb(hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), hsl2rgb(h, m1, m2), hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), this.opacity);\n  },\n  clamp: function clamp() {\n    return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n  },\n  displayable: function displayable() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1;\n  },\n  formatHsl: function formatHsl() {\n    var a = clampa(this.opacity);\n    return \"\".concat(a === 1 ? \"hsl(\" : \"hsla(\").concat(clamph(this.h), \", \").concat(clampt(this.s) * 100, \"%, \").concat(clampt(this.l) * 100, \"%\").concat(a === 1 ? \")\" : \", \".concat(a, \")\"));\n  }\n}));\nfunction clamph(value) {\n  value = (value || 0) % 360;\n  return value < 0 ? value + 360 : value;\n}\nfunction clampt(value) {\n  return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255;\n}\n;// CONCATENATED MODULE: ./node_modules/d3-interpolate/src/basis.js\nfunction basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1,\n    t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0 + (4 - 6 * t2 + 3 * t3) * v1 + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 + t3 * v3) / 6;\n}\n/* harmony default export */ function src_basis(values) {\n  var n = values.length - 1;\n  return function (t) {\n    var i = t <= 0 ? t = 0 : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n      v1 = values[i],\n      v2 = values[i + 1],\n      v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n      v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n;// CONCATENATED MODULE: ./node_modules/d3-interpolate/src/basisClosed.js\n\n/* harmony default export */ function basisClosed(values) {\n  var n = values.length;\n  return function (t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n      v0 = values[(i + n - 1) % n],\n      v1 = values[i % n],\n      v2 = values[(i + 1) % n],\n      v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n;// CONCATENATED MODULE: ./node_modules/d3-interpolate/src/constant.js\n/* harmony default export */ var src_constant = (function (x) {\n  return function () {\n    return x;\n  };\n});\n;// CONCATENATED MODULE: ./node_modules/d3-interpolate/src/color.js\n\nfunction linear(a, d) {\n  return function (t) {\n    return a + t * d;\n  };\n}\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function (t) {\n    return Math.pow(a + t * b, y);\n  };\n}\nfunction hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\nfunction gamma(y) {\n  return (y = +y) === 1 ? nogamma : function (a, b) {\n    return b - a ? exponential(a, b, y) : src_constant(isNaN(a) ? b : a);\n  };\n}\nfunction nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : src_constant(isNaN(a) ? b : a);\n}\n;// CONCATENATED MODULE: ./node_modules/d3-interpolate/src/rgb.js\n\n\n\n\n/* harmony default export */ var rgb = ((function rgbGamma(y) {\n  var color = gamma(y);\n  function rgb(start, end) {\n    var r = color((start = color_rgb(start)).r, (end = color_rgb(end)).r),\n      g = color(start.g, end.g),\n      b = color(start.b, end.b),\n      opacity = nogamma(start.opacity, end.opacity);\n    return function (t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n  rgb.gamma = rgbGamma;\n  return rgb;\n})(1));\nfunction rgbSpline(spline) {\n  return function (colors) {\n    var n = colors.length,\n      r = new Array(n),\n      g = new Array(n),\n      b = new Array(n),\n      i,\n      color;\n    for (i = 0; i < n; ++i) {\n      color = color_rgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function (t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\nvar rgbBasis = rgbSpline(src_basis);\nvar rgbBasisClosed = rgbSpline(basisClosed);\n;// CONCATENATED MODULE: ./node_modules/d3-interpolate/src/array.js\n\n\n/* harmony default export */ function array(a, b) {\n  return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\nfunction genericArray(a, b) {\n  var nb = b ? b.length : 0,\n    na = a ? Math.min(nb, a.length) : 0,\n    x = new Array(na),\n    c = new Array(nb),\n    i;\n  for (i = 0; i < na; ++i) {\n    x[i] = value(a[i], b[i]);\n  }\n  for (; i < nb; ++i) {\n    c[i] = b[i];\n  }\n  return function (t) {\n    for (i = 0; i < na; ++i) {\n      c[i] = x[i](t);\n    }\n    return c;\n  };\n}\n;// CONCATENATED MODULE: ./node_modules/d3-interpolate/src/date.js\n/* harmony default export */ function date(a, b) {\n  var d = new Date();\n  return a = +a, b = +b, function (t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n}\n;// CONCATENATED MODULE: ./node_modules/d3-interpolate/src/number.js\n/* harmony default export */ function number(a, b) {\n  return a = +a, b = +b, function (t) {\n    return a * (1 - t) + b * t;\n  };\n}\n;// CONCATENATED MODULE: ./node_modules/d3-interpolate/src/object.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/* harmony default export */ function object(a, b) {\n  var i = {},\n    c = {},\n    k;\n  if (a === null || _typeof(a) !== \"object\") a = {};\n  if (b === null || _typeof(b) !== \"object\") b = {};\n  for (k in b) {\n    if (k in a) {\n      i[k] = value(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n  return function (t) {\n    for (k in i) {\n      c[k] = i[k](t);\n    }\n    return c;\n  };\n}\n;// CONCATENATED MODULE: ./node_modules/d3-interpolate/src/string.js\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n  reB = new RegExp(reA.source, \"g\");\nfunction zero(b) {\n  return function () {\n    return b;\n  };\n}\nfunction one(b) {\n  return function (t) {\n    return b(t) + \"\";\n  };\n}\n/* harmony default export */ function string(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0,\n    // scan index for next number in b\n    am,\n    // current match in a\n    bm,\n    // current match in b\n    bs,\n    // string preceding current number in b, if any\n    i = -1,\n    // index in s\n    s = [],\n    // string constants and placeholders\n    q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a)) && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) {\n      // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) {\n      // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else {\n      // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({\n        i: i,\n        x: number(am, bm)\n      });\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? q[0] ? one(q[0].x) : zero(b) : (b = q.length, function (t) {\n    for (var i = 0, o; i < b; ++i) {\n      s[(o = q[i]).i] = o.x(t);\n    }\n    return s.join(\"\");\n  });\n}\n;// CONCATENATED MODULE: ./node_modules/d3-interpolate/src/numberArray.js\n/* harmony default export */ function src_numberArray(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n    c = b.slice(),\n    i;\n  return function (t) {\n    for (i = 0; i < n; ++i) {\n      c[i] = a[i] * (1 - t) + b[i] * t;\n    }\n    return c;\n  };\n}\nfunction numberArray_isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n;// CONCATENATED MODULE: ./node_modules/d3-interpolate/src/value.js\nfunction value_typeof(obj) { \"@babel/helpers - typeof\"; return value_typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, value_typeof(obj); }\n\n\n\n\n\n\n\n\n\n/* harmony default export */ function value(a, b) {\n  var t = value_typeof(b),\n    c;\n  return b == null || t === \"boolean\" ? src_constant(b) : (t === \"number\" ? number : t === \"string\" ? (c = color(b)) ? (b = c, rgb) : string : b instanceof color ? rgb : b instanceof Date ? date : numberArray_isNumberArray(b) ? src_numberArray : Array.isArray(b) ? genericArray : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object : number)(a, b);\n}\n;// CONCATENATED MODULE: ./node_modules/d3-interpolate/src/index.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/***/ }),\n\n/***/ 40402:\n/***/ (function(module) {\n\n\"use strict\";\nmodule.exports = JSON.parse('[\"xx-small\",\"x-small\",\"small\",\"medium\",\"large\",\"x-large\",\"xx-large\",\"larger\",\"smaller\"]');\n\n/***/ }),\n\n/***/ 83794:\n/***/ (function(module) {\n\n\"use strict\";\nmodule.exports = JSON.parse('[\"normal\",\"condensed\",\"semi-condensed\",\"extra-condensed\",\"ultra-condensed\",\"expanded\",\"semi-expanded\",\"extra-expanded\",\"ultra-expanded\"]');\n\n/***/ }),\n\n/***/ 96209:\n/***/ (function(module) {\n\n\"use strict\";\nmodule.exports = JSON.parse('[\"normal\",\"italic\",\"oblique\"]');\n\n/***/ }),\n\n/***/ 15659:\n/***/ (function(module) {\n\n\"use strict\";\nmodule.exports = JSON.parse('[\"normal\",\"bold\",\"bolder\",\"lighter\",\"100\",\"200\",\"300\",\"400\",\"500\",\"600\",\"700\",\"800\",\"900\"]');\n\n/***/ }),\n\n/***/ 38732:\n/***/ (function(module) {\n\n\"use strict\";\nmodule.exports = JSON.parse('[\"inherit\",\"initial\",\"unset\"]');\n\n/***/ }),\n\n/***/ 41901:\n/***/ (function(module) {\n\n\"use strict\";\nmodule.exports = JSON.parse('[\"caption\",\"icon\",\"menu\",\"message-box\",\"small-caption\",\"status-bar\"]');\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_8489537__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_8489537__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__nested_webpack_require_8489537__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__nested_webpack_require_8489537__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__nested_webpack_require_8489537__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__nested_webpack_require_8489537__.o(definition, key) && !__nested_webpack_require_8489537__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/global */\n/******/ \t!function() {\n/******/ \t\t__nested_webpack_require_8489537__.g = (function() {\n/******/ \t\t\tif (typeof globalThis === 'object') return globalThis;\n/******/ \t\t\ttry {\n/******/ \t\t\t\treturn this || new Function('return this')();\n/******/ \t\t\t} catch (e) {\n/******/ \t\t\t\tif (typeof window === 'object') return window;\n/******/ \t\t\t}\n/******/ \t\t})();\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__nested_webpack_require_8489537__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t!function() {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__nested_webpack_require_8489537__.r = function(exports) {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __nested_webpack_require_8489537__(27909);\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/plotly.js/dist/plotly.js?");

/***/ }),

/***/ "./node_modules/process/browser.js":
/*!*****************************************!*\
  !*** ./node_modules/process/browser.js ***!
  \*****************************************/
/***/ (function(module) {

eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/process/browser.js?");

/***/ }),

/***/ "./node_modules/prop-types/checkPropTypes.js":
/*!***************************************************!*\
  !*** ./node_modules/prop-types/checkPropTypes.js ***!
  \***************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar printWarning = function() {};\n\nif (true) {\n  var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ \"./node_modules/prop-types/lib/ReactPropTypesSecret.js\");\n  var loggedTypeFailures = {};\n  var has = __webpack_require__(/*! ./lib/has */ \"./node_modules/prop-types/lib/has.js\");\n\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) { /**/ }\n  };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n  if (true) {\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error;\n        // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            var err = Error(\n              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n              'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n            );\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n        } catch (ex) {\n          error = ex;\n        }\n        if (error && !(error instanceof Error)) {\n          printWarning(\n            (componentName || 'React class') + ': type specification of ' +\n            location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n            'You may have forgotten to pass an argument to the type checker ' +\n            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n            'shape all require an argument).'\n          );\n        }\n        if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error.message] = true;\n\n          var stack = getStack ? getStack() : '';\n\n          printWarning(\n            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n          );\n        }\n      }\n    }\n  }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n  if (true) {\n    loggedTypeFailures = {};\n  }\n}\n\nmodule.exports = checkPropTypes;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/prop-types/checkPropTypes.js?");

/***/ }),

/***/ "./node_modules/prop-types/factoryWithTypeCheckers.js":
/*!************************************************************!*\
  !*** ./node_modules/prop-types/factoryWithTypeCheckers.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactIs = __webpack_require__(/*! react-is */ \"./node_modules/prop-types/node_modules/react-is/index.js\");\nvar assign = __webpack_require__(/*! object-assign */ \"./node_modules/object-assign/index.js\");\n\nvar ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ \"./node_modules/prop-types/lib/ReactPropTypesSecret.js\");\nvar has = __webpack_require__(/*! ./lib/has */ \"./node_modules/prop-types/lib/has.js\");\nvar checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ \"./node_modules/prop-types/checkPropTypes.js\");\n\nvar printWarning = function() {};\n\nif (true) {\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n  return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n  /* global Symbol */\n  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n  /**\n   * Returns the iterator method function contained on the iterable object.\n   *\n   * Be sure to invoke the function with the iterable as context:\n   *\n   *     var iteratorFn = getIteratorFn(myIterable);\n   *     if (iteratorFn) {\n   *       var iterator = iteratorFn.call(myIterable);\n   *       ...\n   *     }\n   *\n   * @param {?object} maybeIterable\n   * @return {?function}\n   */\n  function getIteratorFn(maybeIterable) {\n    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  /**\n   * Collection of methods that allow declaration and validation of props that are\n   * supplied to React components. Example usage:\n   *\n   *   var Props = require('ReactPropTypes');\n   *   var MyArticle = React.createClass({\n   *     propTypes: {\n   *       // An optional string prop named \"description\".\n   *       description: Props.string,\n   *\n   *       // A required enum prop named \"category\".\n   *       category: Props.oneOf(['News','Photos']).isRequired,\n   *\n   *       // A prop named \"dialog\" that requires an instance of Dialog.\n   *       dialog: Props.instanceOf(Dialog).isRequired\n   *     },\n   *     render: function() { ... }\n   *   });\n   *\n   * A more formal specification of how these methods are used:\n   *\n   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n   *   decl := ReactPropTypes.{type}(.isRequired)?\n   *\n   * Each and every declaration produces a function with the same signature. This\n   * allows the creation of custom validation functions. For example:\n   *\n   *  var MyLink = React.createClass({\n   *    propTypes: {\n   *      // An optional string or URI prop named \"href\".\n   *      href: function(props, propName, componentName) {\n   *        var propValue = props[propName];\n   *        if (propValue != null && typeof propValue !== 'string' &&\n   *            !(propValue instanceof URI)) {\n   *          return new Error(\n   *            'Expected a string or an URI for ' + propName + ' in ' +\n   *            componentName\n   *          );\n   *        }\n   *      }\n   *    },\n   *    render: function() {...}\n   *  });\n   *\n   * @internal\n   */\n\n  var ANONYMOUS = '<<anonymous>>';\n\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n  var ReactPropTypes = {\n    array: createPrimitiveTypeChecker('array'),\n    bigint: createPrimitiveTypeChecker('bigint'),\n    bool: createPrimitiveTypeChecker('boolean'),\n    func: createPrimitiveTypeChecker('function'),\n    number: createPrimitiveTypeChecker('number'),\n    object: createPrimitiveTypeChecker('object'),\n    string: createPrimitiveTypeChecker('string'),\n    symbol: createPrimitiveTypeChecker('symbol'),\n\n    any: createAnyTypeChecker(),\n    arrayOf: createArrayOfTypeChecker,\n    element: createElementTypeChecker(),\n    elementType: createElementTypeTypeChecker(),\n    instanceOf: createInstanceTypeChecker,\n    node: createNodeChecker(),\n    objectOf: createObjectOfTypeChecker,\n    oneOf: createEnumTypeChecker,\n    oneOfType: createUnionTypeChecker,\n    shape: createShapeTypeChecker,\n    exact: createStrictShapeTypeChecker,\n  };\n\n  /**\n   * inlined Object.is polyfill to avoid requiring consumers ship their own\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n   */\n  /*eslint-disable no-self-compare*/\n  function is(x, y) {\n    // SameValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      return x !== x && y !== y;\n    }\n  }\n  /*eslint-enable no-self-compare*/\n\n  /**\n   * We use an Error-like object for backward compatibility as people may call\n   * PropTypes directly and inspect their output. However, we don't use real\n   * Errors anymore. We don't inspect their stack anyway, and creating them\n   * is prohibitively expensive if they are created too often, such as what\n   * happens in oneOfType() for any type before the one that matched.\n   */\n  function PropTypeError(message, data) {\n    this.message = message;\n    this.data = data && typeof data === 'object' ? data: {};\n    this.stack = '';\n  }\n  // Make `instanceof Error` still work for returned errors.\n  PropTypeError.prototype = Error.prototype;\n\n  function createChainableTypeChecker(validate) {\n    if (true) {\n      var manualPropTypeCallCache = {};\n      var manualPropTypeWarningCount = 0;\n    }\n    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n      componentName = componentName || ANONYMOUS;\n      propFullName = propFullName || propName;\n\n      if (secret !== ReactPropTypesSecret) {\n        if (throwOnDirectAccess) {\n          // New behavior only for users of `prop-types` package\n          var err = new Error(\n            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n            'Use `PropTypes.checkPropTypes()` to call them. ' +\n            'Read more at http://fb.me/use-check-prop-types'\n          );\n          err.name = 'Invariant Violation';\n          throw err;\n        } else if ( true && typeof console !== 'undefined') {\n          // Old behavior for people using React.PropTypes\n          var cacheKey = componentName + ':' + propName;\n          if (\n            !manualPropTypeCallCache[cacheKey] &&\n            // Avoid spamming the console because they are often not actionable except for lib authors\n            manualPropTypeWarningCount < 3\n          ) {\n            printWarning(\n              'You are manually calling a React.PropTypes validation ' +\n              'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n              'and will throw in the standalone `prop-types` package. ' +\n              'You may be seeing this warning due to a third-party PropTypes ' +\n              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n            );\n            manualPropTypeCallCache[cacheKey] = true;\n            manualPropTypeWarningCount++;\n          }\n        }\n      }\n      if (props[propName] == null) {\n        if (isRequired) {\n          if (props[propName] === null) {\n            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n          }\n          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n        }\n        return null;\n      } else {\n        return validate(props, propName, componentName, location, propFullName);\n      }\n    }\n\n    var chainedCheckType = checkType.bind(null, false);\n    chainedCheckType.isRequired = checkType.bind(null, true);\n\n    return chainedCheckType;\n  }\n\n  function createPrimitiveTypeChecker(expectedType) {\n    function validate(props, propName, componentName, location, propFullName, secret) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== expectedType) {\n        // `propValue` being instance of, say, date/regexp, pass the 'object'\n        // check, but we can offer a more precise error message here rather than\n        // 'of type `object`'.\n        var preciseType = getPreciseType(propValue);\n\n        return new PropTypeError(\n          'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n          {expectedType: expectedType}\n        );\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createAnyTypeChecker() {\n    return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n  }\n\n  function createArrayOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n      }\n      var propValue = props[propName];\n      if (!Array.isArray(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n      }\n      for (var i = 0; i < propValue.length; i++) {\n        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n        if (error instanceof Error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!isValidElement(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!ReactIs.isValidElementType(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createInstanceTypeChecker(expectedClass) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!(props[propName] instanceof expectedClass)) {\n        var expectedClassName = expectedClass.name || ANONYMOUS;\n        var actualClassName = getClassName(props[propName]);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createEnumTypeChecker(expectedValues) {\n    if (!Array.isArray(expectedValues)) {\n      if (true) {\n        if (arguments.length > 1) {\n          printWarning(\n            'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n            'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n          );\n        } else {\n          printWarning('Invalid argument supplied to oneOf, expected an array.');\n        }\n      }\n      return emptyFunctionThatReturnsNull;\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      for (var i = 0; i < expectedValues.length; i++) {\n        if (is(propValue, expectedValues[i])) {\n          return null;\n        }\n      }\n\n      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n        var type = getPreciseType(value);\n        if (type === 'symbol') {\n          return String(value);\n        }\n        return value;\n      });\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createObjectOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n      }\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n      }\n      for (var key in propValue) {\n        if (has(propValue, key)) {\n          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n          if (error instanceof Error) {\n            return error;\n          }\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createUnionTypeChecker(arrayOfTypeCheckers) {\n    if (!Array.isArray(arrayOfTypeCheckers)) {\n       true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0;\n      return emptyFunctionThatReturnsNull;\n    }\n\n    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n      var checker = arrayOfTypeCheckers[i];\n      if (typeof checker !== 'function') {\n        printWarning(\n          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n        );\n        return emptyFunctionThatReturnsNull;\n      }\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var expectedTypes = [];\n      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n        var checker = arrayOfTypeCheckers[i];\n        var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n        if (checkerResult == null) {\n          return null;\n        }\n        if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n          expectedTypes.push(checkerResult.data.expectedType);\n        }\n      }\n      var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createNodeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!isNode(props[propName])) {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function invalidValidatorError(componentName, location, propFullName, key, type) {\n    return new PropTypeError(\n      (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n      'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n    );\n  }\n\n  function createShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      for (var key in shapeTypes) {\n        var checker = shapeTypes[key];\n        if (typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createStrictShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      // We need to check all keys in case some are required but missing from props.\n      var allKeys = assign({}, props[propName], shapeTypes);\n      for (var key in allKeys) {\n        var checker = shapeTypes[key];\n        if (has(shapeTypes, key) && typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        if (!checker) {\n          return new PropTypeError(\n            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n            '\\nBad object: ' + JSON.stringify(props[propName], null, '  ') +\n            '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, '  ')\n          );\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case 'number':\n      case 'string':\n      case 'undefined':\n        return true;\n      case 'boolean':\n        return !propValue;\n      case 'object':\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propValue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === 'symbol') {\n      return true;\n    }\n\n    // falsy value can't be a Symbol\n    if (!propValue) {\n      return false;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue['@@toStringTag'] === 'Symbol') {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return 'array';\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return 'function' rather than\n      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return 'object';\n    }\n    if (isSymbol(propType, propValue)) {\n      return 'symbol';\n    }\n    return propType;\n  }\n\n  // This handles more types than `getPropType`. Only used for error messages.\n  // See `createPrimitiveTypeChecker`.\n  function getPreciseType(propValue) {\n    if (typeof propValue === 'undefined' || propValue === null) {\n      return '' + propValue;\n    }\n    var propType = getPropType(propValue);\n    if (propType === 'object') {\n      if (propValue instanceof Date) {\n        return 'date';\n      } else if (propValue instanceof RegExp) {\n        return 'regexp';\n      }\n    }\n    return propType;\n  }\n\n  // Returns a string that is postfixed to a warning about an invalid type.\n  // For example, \"undefined\" or \"of type array\"\n  function getPostfixForTypeWarning(value) {\n    var type = getPreciseType(value);\n    switch (type) {\n      case 'array':\n      case 'object':\n        return 'an ' + type;\n      case 'boolean':\n      case 'date':\n      case 'regexp':\n        return 'a ' + type;\n      default:\n        return type;\n    }\n  }\n\n  // Returns class name of the object, if any.\n  function getClassName(propValue) {\n    if (!propValue.constructor || !propValue.constructor.name) {\n      return ANONYMOUS;\n    }\n    return propValue.constructor.name;\n  }\n\n  ReactPropTypes.checkPropTypes = checkPropTypes;\n  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/prop-types/factoryWithTypeCheckers.js?");

/***/ }),

/***/ "./node_modules/prop-types/index.js":
/*!******************************************!*\
  !*** ./node_modules/prop-types/index.js ***!
  \******************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (true) {\n  var ReactIs = __webpack_require__(/*! react-is */ \"./node_modules/prop-types/node_modules/react-is/index.js\");\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ \"./node_modules/prop-types/factoryWithTypeCheckers.js\")(ReactIs.isElement, throwOnDirectAccess);\n} else {}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/prop-types/index.js?");

/***/ }),

/***/ "./node_modules/prop-types/lib/ReactPropTypesSecret.js":
/*!*************************************************************!*\
  !*** ./node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
  \*************************************************************/
/***/ (function(module) {

"use strict";
eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/prop-types/lib/ReactPropTypesSecret.js?");

/***/ }),

/***/ "./node_modules/prop-types/lib/has.js":
/*!********************************************!*\
  !*** ./node_modules/prop-types/lib/has.js ***!
  \********************************************/
/***/ (function(module) {

eval("module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/prop-types/lib/has.js?");

/***/ }),

/***/ "./node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js ***!
  \***********************************************************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\n\n\nif (true) {\n  (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_ASYNC_MODE_TYPE:\n          case REACT_CONCURRENT_MODE_TYPE:\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n    }\n  }\n\n  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js?");

/***/ }),

/***/ "./node_modules/prop-types/node_modules/react-is/index.js":
/*!****************************************************************!*\
  !*** ./node_modules/prop-types/node_modules/react-is/index.js ***!
  \****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ \"./node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js\");\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/prop-types/node_modules/react-is/index.js?");

/***/ }),

/***/ "./node_modules/react-dnd-html5-backend/dist/esm/BrowserDetector.js":
/*!**************************************************************************!*\
  !*** ./node_modules/react-dnd-html5-backend/dist/esm/BrowserDetector.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isFirefox\": function() { return /* binding */ isFirefox; },\n/* harmony export */   \"isSafari\": function() { return /* binding */ isSafari; }\n/* harmony export */ });\n/* harmony import */ var _utils_js_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/js_utils */ \"./node_modules/react-dnd-html5-backend/dist/esm/utils/js_utils.js\");\n\nvar isFirefox = (0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_0__.memoize)(function () {\n  return /firefox/i.test(navigator.userAgent);\n});\nvar isSafari = (0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_0__.memoize)(function () {\n  return Boolean(window.safari);\n});\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd-html5-backend/dist/esm/BrowserDetector.js?");

/***/ }),

/***/ "./node_modules/react-dnd-html5-backend/dist/esm/EnterLeaveCounter.js":
/*!****************************************************************************!*\
  !*** ./node_modules/react-dnd-html5-backend/dist/esm/EnterLeaveCounter.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EnterLeaveCounter\": function() { return /* binding */ EnterLeaveCounter; }\n/* harmony export */ });\n/* harmony import */ var _utils_js_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/js_utils */ \"./node_modules/react-dnd-html5-backend/dist/esm/utils/js_utils.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\nvar EnterLeaveCounter = /*#__PURE__*/function () {\n  function EnterLeaveCounter(isNodeInDocument) {\n    _classCallCheck(this, EnterLeaveCounter);\n\n    this.entered = [];\n    this.isNodeInDocument = isNodeInDocument;\n  }\n\n  _createClass(EnterLeaveCounter, [{\n    key: \"enter\",\n    value: function enter(enteringNode) {\n      var _this = this;\n\n      var previousLength = this.entered.length;\n\n      var isNodeEntered = function isNodeEntered(node) {\n        return _this.isNodeInDocument(node) && (!node.contains || node.contains(enteringNode));\n      };\n\n      this.entered = (0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_0__.union)(this.entered.filter(isNodeEntered), [enteringNode]);\n      return previousLength === 0 && this.entered.length > 0;\n    }\n  }, {\n    key: \"leave\",\n    value: function leave(leavingNode) {\n      var previousLength = this.entered.length;\n      this.entered = (0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_0__.without)(this.entered.filter(this.isNodeInDocument), leavingNode);\n      return previousLength > 0 && this.entered.length === 0;\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this.entered = [];\n    }\n  }]);\n\n  return EnterLeaveCounter;\n}();\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd-html5-backend/dist/esm/EnterLeaveCounter.js?");

/***/ }),

/***/ "./node_modules/react-dnd-html5-backend/dist/esm/HTML5BackendImpl.js":
/*!***************************************************************************!*\
  !*** ./node_modules/react-dnd-html5-backend/dist/esm/HTML5BackendImpl.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"HTML5BackendImpl\": function() { return /* binding */ HTML5BackendImpl; }\n/* harmony export */ });\n/* harmony import */ var _EnterLeaveCounter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./EnterLeaveCounter */ \"./node_modules/react-dnd-html5-backend/dist/esm/EnterLeaveCounter.js\");\n/* harmony import */ var _BrowserDetector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./BrowserDetector */ \"./node_modules/react-dnd-html5-backend/dist/esm/BrowserDetector.js\");\n/* harmony import */ var _OffsetUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./OffsetUtils */ \"./node_modules/react-dnd-html5-backend/dist/esm/OffsetUtils.js\");\n/* harmony import */ var _NativeDragSources__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./NativeDragSources */ \"./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/index.js\");\n/* harmony import */ var _NativeTypes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./NativeTypes */ \"./node_modules/react-dnd-html5-backend/dist/esm/NativeTypes.js\");\n/* harmony import */ var _OptionsReader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./OptionsReader */ \"./node_modules/react-dnd-html5-backend/dist/esm/OptionsReader.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\nvar HTML5BackendImpl = /*#__PURE__*/function () {\n  function HTML5BackendImpl(manager, globalContext) {\n    var _this = this;\n\n    _classCallCheck(this, HTML5BackendImpl);\n\n    this.sourcePreviewNodes = new Map();\n    this.sourcePreviewNodeOptions = new Map();\n    this.sourceNodes = new Map();\n    this.sourceNodeOptions = new Map();\n    this.dragStartSourceIds = null;\n    this.dropTargetIds = [];\n    this.dragEnterTargetIds = [];\n    this.currentNativeSource = null;\n    this.currentNativeHandle = null;\n    this.currentDragSourceNode = null;\n    this.altKeyPressed = false;\n    this.mouseMoveTimeoutTimer = null;\n    this.asyncEndDragFrameId = null;\n    this.dragOverTargetIds = null;\n\n    this.getSourceClientOffset = function (sourceId) {\n      var source = _this.sourceNodes.get(sourceId);\n\n      return source && (0,_OffsetUtils__WEBPACK_IMPORTED_MODULE_0__.getNodeClientOffset)(source) || null;\n    };\n\n    this.endDragNativeItem = function () {\n      if (!_this.isDraggingNativeItem()) {\n        return;\n      }\n\n      _this.actions.endDrag();\n\n      if (_this.currentNativeHandle) {\n        _this.registry.removeSource(_this.currentNativeHandle);\n      }\n\n      _this.currentNativeHandle = null;\n      _this.currentNativeSource = null;\n    };\n\n    this.isNodeInDocument = function (node) {\n      // Check the node either in the main document or in the current context\n      return Boolean(node && _this.document && _this.document.body && document.body.contains(node));\n    };\n\n    this.endDragIfSourceWasRemovedFromDOM = function () {\n      var node = _this.currentDragSourceNode;\n\n      if (_this.isNodeInDocument(node)) {\n        return;\n      }\n\n      if (_this.clearCurrentDragSourceNode()) {\n        _this.actions.endDrag();\n      }\n    };\n\n    this.handleTopDragStartCapture = function () {\n      _this.clearCurrentDragSourceNode();\n\n      _this.dragStartSourceIds = [];\n    };\n\n    this.handleTopDragStart = function (e) {\n      if (e.defaultPrevented) {\n        return;\n      }\n\n      var dragStartSourceIds = _this.dragStartSourceIds;\n      _this.dragStartSourceIds = null;\n      var clientOffset = (0,_OffsetUtils__WEBPACK_IMPORTED_MODULE_0__.getEventClientOffset)(e); // Avoid crashing if we missed a drop event or our previous drag died\n\n      if (_this.monitor.isDragging()) {\n        _this.actions.endDrag();\n      } // Don't publish the source just yet (see why below)\n\n\n      _this.actions.beginDrag(dragStartSourceIds || [], {\n        publishSource: false,\n        getSourceClientOffset: _this.getSourceClientOffset,\n        clientOffset: clientOffset\n      });\n\n      var dataTransfer = e.dataTransfer;\n      var nativeType = (0,_NativeDragSources__WEBPACK_IMPORTED_MODULE_1__.matchNativeItemType)(dataTransfer);\n\n      if (_this.monitor.isDragging()) {\n        if (dataTransfer && typeof dataTransfer.setDragImage === 'function') {\n          // Use custom drag image if user specifies it.\n          // If child drag source refuses drag but parent agrees,\n          // use parent's node as drag image. Neither works in IE though.\n          var sourceId = _this.monitor.getSourceId();\n\n          var sourceNode = _this.sourceNodes.get(sourceId);\n\n          var dragPreview = _this.sourcePreviewNodes.get(sourceId) || sourceNode;\n\n          if (dragPreview) {\n            var _this$getCurrentSourc = _this.getCurrentSourcePreviewNodeOptions(),\n                anchorX = _this$getCurrentSourc.anchorX,\n                anchorY = _this$getCurrentSourc.anchorY,\n                offsetX = _this$getCurrentSourc.offsetX,\n                offsetY = _this$getCurrentSourc.offsetY;\n\n            var anchorPoint = {\n              anchorX: anchorX,\n              anchorY: anchorY\n            };\n            var offsetPoint = {\n              offsetX: offsetX,\n              offsetY: offsetY\n            };\n            var dragPreviewOffset = (0,_OffsetUtils__WEBPACK_IMPORTED_MODULE_0__.getDragPreviewOffset)(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint);\n            dataTransfer.setDragImage(dragPreview, dragPreviewOffset.x, dragPreviewOffset.y);\n          }\n        }\n\n        try {\n          // Firefox won't drag without setting data\n          dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.setData('application/json', {});\n        } catch (err) {} // IE doesn't support MIME types in setData\n        // Store drag source node so we can check whether\n        // it is removed from DOM and trigger endDrag manually.\n\n\n        _this.setCurrentDragSourceNode(e.target); // Now we are ready to publish the drag source.. or are we not?\n\n\n        var _this$getCurrentSourc2 = _this.getCurrentSourcePreviewNodeOptions(),\n            captureDraggingState = _this$getCurrentSourc2.captureDraggingState;\n\n        if (!captureDraggingState) {\n          // Usually we want to publish it in the next tick so that browser\n          // is able to screenshot the current (not yet dragging) state.\n          //\n          // It also neatly avoids a situation where render() returns null\n          // in the same tick for the source element, and browser freaks out.\n          setTimeout(function () {\n            return _this.actions.publishDragSource();\n          }, 0);\n        } else {\n          // In some cases the user may want to override this behavior, e.g.\n          // to work around IE not supporting custom drag previews.\n          //\n          // When using a custom drag layer, the only way to prevent\n          // the default drag preview from drawing in IE is to screenshot\n          // the dragging state in which the node itself has zero opacity\n          // and height. In this case, though, returning null from render()\n          // will abruptly end the dragging, which is not obvious.\n          //\n          // This is the reason such behavior is strictly opt-in.\n          _this.actions.publishDragSource();\n        }\n      } else if (nativeType) {\n        // A native item (such as URL) dragged from inside the document\n        _this.beginDragNativeItem(nativeType);\n      } else if (dataTransfer && !dataTransfer.types && (e.target && !e.target.hasAttribute || !e.target.hasAttribute('draggable'))) {\n        // Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n        // Just let it drag. It's a native type (URL or text) and will be picked up in\n        // dragenter handler.\n        return;\n      } else {\n        // If by this time no drag source reacted, tell browser not to drag.\n        e.preventDefault();\n      }\n    };\n\n    this.handleTopDragEndCapture = function () {\n      if (_this.clearCurrentDragSourceNode()) {\n        // Firefox can dispatch this event in an infinite loop\n        // if dragend handler does something like showing an alert.\n        // Only proceed if we have not handled it already.\n        _this.actions.endDrag();\n      }\n    };\n\n    this.handleTopDragEnterCapture = function (e) {\n      _this.dragEnterTargetIds = [];\n\n      var isFirstEnter = _this.enterLeaveCounter.enter(e.target);\n\n      if (!isFirstEnter || _this.monitor.isDragging()) {\n        return;\n      }\n\n      var dataTransfer = e.dataTransfer;\n      var nativeType = (0,_NativeDragSources__WEBPACK_IMPORTED_MODULE_1__.matchNativeItemType)(dataTransfer);\n\n      if (nativeType) {\n        // A native item (such as file or URL) dragged from outside the document\n        _this.beginDragNativeItem(nativeType, dataTransfer);\n      }\n    };\n\n    this.handleTopDragEnter = function (e) {\n      var dragEnterTargetIds = _this.dragEnterTargetIds;\n      _this.dragEnterTargetIds = [];\n\n      if (!_this.monitor.isDragging()) {\n        // This is probably a native item type we don't understand.\n        return;\n      }\n\n      _this.altKeyPressed = e.altKey;\n\n      if (!(0,_BrowserDetector__WEBPACK_IMPORTED_MODULE_2__.isFirefox)()) {\n        // Don't emit hover in `dragenter` on Firefox due to an edge case.\n        // If the target changes position as the result of `dragenter`, Firefox\n        // will still happily dispatch `dragover` despite target being no longer\n        // there. The easy solution is to only fire `hover` in `dragover` on FF.\n        _this.actions.hover(dragEnterTargetIds, {\n          clientOffset: (0,_OffsetUtils__WEBPACK_IMPORTED_MODULE_0__.getEventClientOffset)(e)\n        });\n      }\n\n      var canDrop = dragEnterTargetIds.some(function (targetId) {\n        return _this.monitor.canDropOnTarget(targetId);\n      });\n\n      if (canDrop) {\n        // IE requires this to fire dragover events\n        e.preventDefault();\n\n        if (e.dataTransfer) {\n          e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n        }\n      }\n    };\n\n    this.handleTopDragOverCapture = function () {\n      _this.dragOverTargetIds = [];\n    };\n\n    this.handleTopDragOver = function (e) {\n      var dragOverTargetIds = _this.dragOverTargetIds;\n      _this.dragOverTargetIds = [];\n\n      if (!_this.monitor.isDragging()) {\n        // This is probably a native item type we don't understand.\n        // Prevent default \"drop and blow away the whole document\" action.\n        e.preventDefault();\n\n        if (e.dataTransfer) {\n          e.dataTransfer.dropEffect = 'none';\n        }\n\n        return;\n      }\n\n      _this.altKeyPressed = e.altKey;\n\n      _this.actions.hover(dragOverTargetIds || [], {\n        clientOffset: (0,_OffsetUtils__WEBPACK_IMPORTED_MODULE_0__.getEventClientOffset)(e)\n      });\n\n      var canDrop = (dragOverTargetIds || []).some(function (targetId) {\n        return _this.monitor.canDropOnTarget(targetId);\n      });\n\n      if (canDrop) {\n        // Show user-specified drop effect.\n        e.preventDefault();\n\n        if (e.dataTransfer) {\n          e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n        }\n      } else if (_this.isDraggingNativeItem()) {\n        // Don't show a nice cursor but still prevent default\n        // \"drop and blow away the whole document\" action.\n        e.preventDefault();\n      } else {\n        e.preventDefault();\n\n        if (e.dataTransfer) {\n          e.dataTransfer.dropEffect = 'none';\n        }\n      }\n    };\n\n    this.handleTopDragLeaveCapture = function (e) {\n      if (_this.isDraggingNativeItem()) {\n        e.preventDefault();\n      }\n\n      var isLastLeave = _this.enterLeaveCounter.leave(e.target);\n\n      if (!isLastLeave) {\n        return;\n      }\n\n      if (_this.isDraggingNativeItem()) {\n        _this.endDragNativeItem();\n      }\n    };\n\n    this.handleTopDropCapture = function (e) {\n      _this.dropTargetIds = [];\n      e.preventDefault();\n\n      if (_this.isDraggingNativeItem()) {\n        var _this$currentNativeSo;\n\n        (_this$currentNativeSo = _this.currentNativeSource) === null || _this$currentNativeSo === void 0 ? void 0 : _this$currentNativeSo.loadDataTransfer(e.dataTransfer);\n      }\n\n      _this.enterLeaveCounter.reset();\n    };\n\n    this.handleTopDrop = function (e) {\n      var dropTargetIds = _this.dropTargetIds;\n      _this.dropTargetIds = [];\n\n      _this.actions.hover(dropTargetIds, {\n        clientOffset: (0,_OffsetUtils__WEBPACK_IMPORTED_MODULE_0__.getEventClientOffset)(e)\n      });\n\n      _this.actions.drop({\n        dropEffect: _this.getCurrentDropEffect()\n      });\n\n      if (_this.isDraggingNativeItem()) {\n        _this.endDragNativeItem();\n      } else {\n        _this.endDragIfSourceWasRemovedFromDOM();\n      }\n    };\n\n    this.handleSelectStart = function (e) {\n      var target = e.target; // Only IE requires us to explicitly say\n      // we want drag drop operation to start\n\n      if (typeof target.dragDrop !== 'function') {\n        return;\n      } // Inputs and textareas should be selectable\n\n\n      if (target.tagName === 'INPUT' || target.tagName === 'SELECT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n        return;\n      } // For other targets, ask IE\n      // to enable drag and drop\n\n\n      e.preventDefault();\n      target.dragDrop();\n    };\n\n    this.options = new _OptionsReader__WEBPACK_IMPORTED_MODULE_3__.OptionsReader(globalContext);\n    this.actions = manager.getActions();\n    this.monitor = manager.getMonitor();\n    this.registry = manager.getRegistry();\n    this.enterLeaveCounter = new _EnterLeaveCounter__WEBPACK_IMPORTED_MODULE_4__.EnterLeaveCounter(this.isNodeInDocument);\n  }\n  /**\n   * Generate profiling statistics for the HTML5Backend.\n   */\n\n\n  _createClass(HTML5BackendImpl, [{\n    key: \"profile\",\n    value: function profile() {\n      var _this$dragStartSource, _this$dragOverTargetI;\n\n      return {\n        sourcePreviewNodes: this.sourcePreviewNodes.size,\n        sourcePreviewNodeOptions: this.sourcePreviewNodeOptions.size,\n        sourceNodeOptions: this.sourceNodeOptions.size,\n        sourceNodes: this.sourceNodes.size,\n        dragStartSourceIds: ((_this$dragStartSource = this.dragStartSourceIds) === null || _this$dragStartSource === void 0 ? void 0 : _this$dragStartSource.length) || 0,\n        dropTargetIds: this.dropTargetIds.length,\n        dragEnterTargetIds: this.dragEnterTargetIds.length,\n        dragOverTargetIds: ((_this$dragOverTargetI = this.dragOverTargetIds) === null || _this$dragOverTargetI === void 0 ? void 0 : _this$dragOverTargetI.length) || 0\n      };\n    } // public for test\n\n  }, {\n    key: \"setup\",\n    value: function setup() {\n      if (this.window === undefined) {\n        return;\n      }\n\n      if (this.window.__isReactDndBackendSetUp) {\n        throw new Error('Cannot have two HTML5 backends at the same time.');\n      }\n\n      this.window.__isReactDndBackendSetUp = true;\n      this.addEventListeners(this.window);\n    }\n  }, {\n    key: \"teardown\",\n    value: function teardown() {\n      if (this.window === undefined) {\n        return;\n      }\n\n      this.window.__isReactDndBackendSetUp = false;\n      this.removeEventListeners(this.window);\n      this.clearCurrentDragSourceNode();\n\n      if (this.asyncEndDragFrameId) {\n        this.window.cancelAnimationFrame(this.asyncEndDragFrameId);\n      }\n    }\n  }, {\n    key: \"connectDragPreview\",\n    value: function connectDragPreview(sourceId, node, options) {\n      var _this2 = this;\n\n      this.sourcePreviewNodeOptions.set(sourceId, options);\n      this.sourcePreviewNodes.set(sourceId, node);\n      return function () {\n        _this2.sourcePreviewNodes.delete(sourceId);\n\n        _this2.sourcePreviewNodeOptions.delete(sourceId);\n      };\n    }\n  }, {\n    key: \"connectDragSource\",\n    value: function connectDragSource(sourceId, node, options) {\n      var _this3 = this;\n\n      this.sourceNodes.set(sourceId, node);\n      this.sourceNodeOptions.set(sourceId, options);\n\n      var handleDragStart = function handleDragStart(e) {\n        return _this3.handleDragStart(e, sourceId);\n      };\n\n      var handleSelectStart = function handleSelectStart(e) {\n        return _this3.handleSelectStart(e);\n      };\n\n      node.setAttribute('draggable', 'true');\n      node.addEventListener('dragstart', handleDragStart);\n      node.addEventListener('selectstart', handleSelectStart);\n      return function () {\n        _this3.sourceNodes.delete(sourceId);\n\n        _this3.sourceNodeOptions.delete(sourceId);\n\n        node.removeEventListener('dragstart', handleDragStart);\n        node.removeEventListener('selectstart', handleSelectStart);\n        node.setAttribute('draggable', 'false');\n      };\n    }\n  }, {\n    key: \"connectDropTarget\",\n    value: function connectDropTarget(targetId, node) {\n      var _this4 = this;\n\n      var handleDragEnter = function handleDragEnter(e) {\n        return _this4.handleDragEnter(e, targetId);\n      };\n\n      var handleDragOver = function handleDragOver(e) {\n        return _this4.handleDragOver(e, targetId);\n      };\n\n      var handleDrop = function handleDrop(e) {\n        return _this4.handleDrop(e, targetId);\n      };\n\n      node.addEventListener('dragenter', handleDragEnter);\n      node.addEventListener('dragover', handleDragOver);\n      node.addEventListener('drop', handleDrop);\n      return function () {\n        node.removeEventListener('dragenter', handleDragEnter);\n        node.removeEventListener('dragover', handleDragOver);\n        node.removeEventListener('drop', handleDrop);\n      };\n    }\n  }, {\n    key: \"addEventListeners\",\n    value: function addEventListeners(target) {\n      // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n      if (!target.addEventListener) {\n        return;\n      }\n\n      target.addEventListener('dragstart', this.handleTopDragStart);\n      target.addEventListener('dragstart', this.handleTopDragStartCapture, true);\n      target.addEventListener('dragend', this.handleTopDragEndCapture, true);\n      target.addEventListener('dragenter', this.handleTopDragEnter);\n      target.addEventListener('dragenter', this.handleTopDragEnterCapture, true);\n      target.addEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n      target.addEventListener('dragover', this.handleTopDragOver);\n      target.addEventListener('dragover', this.handleTopDragOverCapture, true);\n      target.addEventListener('drop', this.handleTopDrop);\n      target.addEventListener('drop', this.handleTopDropCapture, true);\n    }\n  }, {\n    key: \"removeEventListeners\",\n    value: function removeEventListeners(target) {\n      // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n      if (!target.removeEventListener) {\n        return;\n      }\n\n      target.removeEventListener('dragstart', this.handleTopDragStart);\n      target.removeEventListener('dragstart', this.handleTopDragStartCapture, true);\n      target.removeEventListener('dragend', this.handleTopDragEndCapture, true);\n      target.removeEventListener('dragenter', this.handleTopDragEnter);\n      target.removeEventListener('dragenter', this.handleTopDragEnterCapture, true);\n      target.removeEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n      target.removeEventListener('dragover', this.handleTopDragOver);\n      target.removeEventListener('dragover', this.handleTopDragOverCapture, true);\n      target.removeEventListener('drop', this.handleTopDrop);\n      target.removeEventListener('drop', this.handleTopDropCapture, true);\n    }\n  }, {\n    key: \"getCurrentSourceNodeOptions\",\n    value: function getCurrentSourceNodeOptions() {\n      var sourceId = this.monitor.getSourceId();\n      var sourceNodeOptions = this.sourceNodeOptions.get(sourceId);\n      return _objectSpread({\n        dropEffect: this.altKeyPressed ? 'copy' : 'move'\n      }, sourceNodeOptions || {});\n    }\n  }, {\n    key: \"getCurrentDropEffect\",\n    value: function getCurrentDropEffect() {\n      if (this.isDraggingNativeItem()) {\n        // It makes more sense to default to 'copy' for native resources\n        return 'copy';\n      }\n\n      return this.getCurrentSourceNodeOptions().dropEffect;\n    }\n  }, {\n    key: \"getCurrentSourcePreviewNodeOptions\",\n    value: function getCurrentSourcePreviewNodeOptions() {\n      var sourceId = this.monitor.getSourceId();\n      var sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId);\n      return _objectSpread({\n        anchorX: 0.5,\n        anchorY: 0.5,\n        captureDraggingState: false\n      }, sourcePreviewNodeOptions || {});\n    }\n  }, {\n    key: \"isDraggingNativeItem\",\n    value: function isDraggingNativeItem() {\n      var itemType = this.monitor.getItemType();\n      return Object.keys(_NativeTypes__WEBPACK_IMPORTED_MODULE_5__).some(function (key) {\n        return _NativeTypes__WEBPACK_IMPORTED_MODULE_5__[key] === itemType;\n      });\n    }\n  }, {\n    key: \"beginDragNativeItem\",\n    value: function beginDragNativeItem(type, dataTransfer) {\n      this.clearCurrentDragSourceNode();\n      this.currentNativeSource = (0,_NativeDragSources__WEBPACK_IMPORTED_MODULE_1__.createNativeDragSource)(type, dataTransfer);\n      this.currentNativeHandle = this.registry.addSource(type, this.currentNativeSource);\n      this.actions.beginDrag([this.currentNativeHandle]);\n    }\n  }, {\n    key: \"setCurrentDragSourceNode\",\n    value: function setCurrentDragSourceNode(node) {\n      var _this5 = this;\n\n      this.clearCurrentDragSourceNode();\n      this.currentDragSourceNode = node; // A timeout of > 0 is necessary to resolve Firefox issue referenced\n      // See:\n      //   * https://github.com/react-dnd/react-dnd/pull/928\n      //   * https://github.com/react-dnd/react-dnd/issues/869\n\n      var MOUSE_MOVE_TIMEOUT = 1000; // Receiving a mouse event in the middle of a dragging operation\n      // means it has ended and the drag source node disappeared from DOM,\n      // so the browser didn't dispatch the dragend event.\n      //\n      // We need to wait before we start listening for mousemove events.\n      // This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n      // immediately in some browsers.\n      //\n      // See:\n      //   * https://github.com/react-dnd/react-dnd/pull/928\n      //   * https://github.com/react-dnd/react-dnd/issues/869\n      //\n\n      this.mouseMoveTimeoutTimer = setTimeout(function () {\n        return _this5.window && _this5.window.addEventListener('mousemove', _this5.endDragIfSourceWasRemovedFromDOM, true);\n      }, MOUSE_MOVE_TIMEOUT);\n    }\n  }, {\n    key: \"clearCurrentDragSourceNode\",\n    value: function clearCurrentDragSourceNode() {\n      if (this.currentDragSourceNode) {\n        this.currentDragSourceNode = null;\n\n        if (this.window) {\n          this.window.clearTimeout(this.mouseMoveTimeoutTimer || undefined);\n          this.window.removeEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n        }\n\n        this.mouseMoveTimeoutTimer = null;\n        return true;\n      }\n\n      return false;\n    }\n  }, {\n    key: \"handleDragStart\",\n    value: function handleDragStart(e, sourceId) {\n      if (e.defaultPrevented) {\n        return;\n      }\n\n      if (!this.dragStartSourceIds) {\n        this.dragStartSourceIds = [];\n      }\n\n      this.dragStartSourceIds.unshift(sourceId);\n    }\n  }, {\n    key: \"handleDragEnter\",\n    value: function handleDragEnter(e, targetId) {\n      this.dragEnterTargetIds.unshift(targetId);\n    }\n  }, {\n    key: \"handleDragOver\",\n    value: function handleDragOver(e, targetId) {\n      if (this.dragOverTargetIds === null) {\n        this.dragOverTargetIds = [];\n      }\n\n      this.dragOverTargetIds.unshift(targetId);\n    }\n  }, {\n    key: \"handleDrop\",\n    value: function handleDrop(e, targetId) {\n      this.dropTargetIds.unshift(targetId);\n    }\n  }, {\n    key: \"window\",\n    get: function get() {\n      return this.options.window;\n    }\n  }, {\n    key: \"document\",\n    get: function get() {\n      return this.options.document;\n    }\n  }]);\n\n  return HTML5BackendImpl;\n}();\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd-html5-backend/dist/esm/HTML5BackendImpl.js?");

/***/ }),

/***/ "./node_modules/react-dnd-html5-backend/dist/esm/MonotonicInterpolant.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/react-dnd-html5-backend/dist/esm/MonotonicInterpolant.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"MonotonicInterpolant\": function() { return /* binding */ MonotonicInterpolant; }\n/* harmony export */ });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar MonotonicInterpolant = /*#__PURE__*/function () {\n  function MonotonicInterpolant(xs, ys) {\n    _classCallCheck(this, MonotonicInterpolant);\n\n    var length = xs.length; // Rearrange xs and ys so that xs is sorted\n\n    var indexes = [];\n\n    for (var i = 0; i < length; i++) {\n      indexes.push(i);\n    }\n\n    indexes.sort(function (a, b) {\n      return xs[a] < xs[b] ? -1 : 1;\n    }); // Get consecutive differences and slopes\n\n    var dys = [];\n    var dxs = [];\n    var ms = [];\n    var dx;\n    var dy;\n\n    for (var _i = 0; _i < length - 1; _i++) {\n      dx = xs[_i + 1] - xs[_i];\n      dy = ys[_i + 1] - ys[_i];\n      dxs.push(dx);\n      dys.push(dy);\n      ms.push(dy / dx);\n    } // Get degree-1 coefficients\n\n\n    var c1s = [ms[0]];\n\n    for (var _i2 = 0; _i2 < dxs.length - 1; _i2++) {\n      var m2 = ms[_i2];\n      var mNext = ms[_i2 + 1];\n\n      if (m2 * mNext <= 0) {\n        c1s.push(0);\n      } else {\n        dx = dxs[_i2];\n        var dxNext = dxs[_i2 + 1];\n        var common = dx + dxNext;\n        c1s.push(3 * common / ((common + dxNext) / m2 + (common + dx) / mNext));\n      }\n    }\n\n    c1s.push(ms[ms.length - 1]); // Get degree-2 and degree-3 coefficients\n\n    var c2s = [];\n    var c3s = [];\n    var m;\n\n    for (var _i3 = 0; _i3 < c1s.length - 1; _i3++) {\n      m = ms[_i3];\n      var c1 = c1s[_i3];\n      var invDx = 1 / dxs[_i3];\n\n      var _common = c1 + c1s[_i3 + 1] - m - m;\n\n      c2s.push((m - c1 - _common) * invDx);\n      c3s.push(_common * invDx * invDx);\n    }\n\n    this.xs = xs;\n    this.ys = ys;\n    this.c1s = c1s;\n    this.c2s = c2s;\n    this.c3s = c3s;\n  }\n\n  _createClass(MonotonicInterpolant, [{\n    key: \"interpolate\",\n    value: function interpolate(x) {\n      var xs = this.xs,\n          ys = this.ys,\n          c1s = this.c1s,\n          c2s = this.c2s,\n          c3s = this.c3s; // The rightmost point in the dataset should give an exact result\n\n      var i = xs.length - 1;\n\n      if (x === xs[i]) {\n        return ys[i];\n      } // Search for the interval x is in, returning the corresponding y if x is one of the original xs\n\n\n      var low = 0;\n      var high = c3s.length - 1;\n      var mid;\n\n      while (low <= high) {\n        mid = Math.floor(0.5 * (low + high));\n        var xHere = xs[mid];\n\n        if (xHere < x) {\n          low = mid + 1;\n        } else if (xHere > x) {\n          high = mid - 1;\n        } else {\n          return ys[mid];\n        }\n      }\n\n      i = Math.max(0, high); // Interpolate\n\n      var diff = x - xs[i];\n      var diffSq = diff * diff;\n      return ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq;\n    }\n  }]);\n\n  return MonotonicInterpolant;\n}();\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd-html5-backend/dist/esm/MonotonicInterpolant.js?");

/***/ }),

/***/ "./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/NativeDragSource.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/NativeDragSource.js ***!
  \*********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NativeDragSource\": function() { return /* binding */ NativeDragSource; }\n/* harmony export */ });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar NativeDragSource = /*#__PURE__*/function () {\n  function NativeDragSource(config) {\n    _classCallCheck(this, NativeDragSource);\n\n    this.config = config;\n    this.item = {};\n    this.initializeExposedProperties();\n  }\n\n  _createClass(NativeDragSource, [{\n    key: \"initializeExposedProperties\",\n    value: function initializeExposedProperties() {\n      var _this = this;\n\n      Object.keys(this.config.exposeProperties).forEach(function (property) {\n        Object.defineProperty(_this.item, property, {\n          configurable: true,\n          enumerable: true,\n          get: function get() {\n            // eslint-disable-next-line no-console\n            console.warn(\"Browser doesn't allow reading \\\"\".concat(property, \"\\\" until the drop event.\"));\n            return null;\n          }\n        });\n      });\n    }\n  }, {\n    key: \"loadDataTransfer\",\n    value: function loadDataTransfer(dataTransfer) {\n      var _this2 = this;\n\n      if (dataTransfer) {\n        var newProperties = {};\n        Object.keys(this.config.exposeProperties).forEach(function (property) {\n          newProperties[property] = {\n            value: _this2.config.exposeProperties[property](dataTransfer, _this2.config.matchesTypes),\n            configurable: true,\n            enumerable: true\n          };\n        });\n        Object.defineProperties(this.item, newProperties);\n      }\n    }\n  }, {\n    key: \"canDrag\",\n    value: function canDrag() {\n      return true;\n    }\n  }, {\n    key: \"beginDrag\",\n    value: function beginDrag() {\n      return this.item;\n    }\n  }, {\n    key: \"isDragging\",\n    value: function isDragging(monitor, handle) {\n      return handle === monitor.getSourceId();\n    }\n  }, {\n    key: \"endDrag\",\n    value: function endDrag() {// empty\n    }\n  }]);\n\n  return NativeDragSource;\n}();\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/NativeDragSource.js?");

/***/ }),

/***/ "./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/getDataFromDataTransfer.js":
/*!****************************************************************************************************!*\
  !*** ./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/getDataFromDataTransfer.js ***!
  \****************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getDataFromDataTransfer\": function() { return /* binding */ getDataFromDataTransfer; }\n/* harmony export */ });\nfunction getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {\n  var result = typesToTry.reduce(function (resultSoFar, typeToTry) {\n    return resultSoFar || dataTransfer.getData(typeToTry);\n  }, '');\n  return result != null ? result : defaultValue;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/getDataFromDataTransfer.js?");

/***/ }),

/***/ "./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/index.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/index.js ***!
  \**********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createNativeDragSource\": function() { return /* binding */ createNativeDragSource; },\n/* harmony export */   \"matchNativeItemType\": function() { return /* binding */ matchNativeItemType; }\n/* harmony export */ });\n/* harmony import */ var _nativeTypesConfig__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./nativeTypesConfig */ \"./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/nativeTypesConfig.js\");\n/* harmony import */ var _NativeDragSource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NativeDragSource */ \"./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/NativeDragSource.js\");\n\n\nfunction createNativeDragSource(type, dataTransfer) {\n  var result = new _NativeDragSource__WEBPACK_IMPORTED_MODULE_0__.NativeDragSource(_nativeTypesConfig__WEBPACK_IMPORTED_MODULE_1__.nativeTypesConfig[type]);\n  result.loadDataTransfer(dataTransfer);\n  return result;\n}\nfunction matchNativeItemType(dataTransfer) {\n  if (!dataTransfer) {\n    return null;\n  }\n\n  var dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);\n  return Object.keys(_nativeTypesConfig__WEBPACK_IMPORTED_MODULE_1__.nativeTypesConfig).filter(function (nativeItemType) {\n    var matchesTypes = _nativeTypesConfig__WEBPACK_IMPORTED_MODULE_1__.nativeTypesConfig[nativeItemType].matchesTypes;\n    return matchesTypes.some(function (t) {\n      return dataTransferTypes.indexOf(t) > -1;\n    });\n  })[0] || null;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/index.js?");

/***/ }),

/***/ "./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/nativeTypesConfig.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/nativeTypesConfig.js ***!
  \**********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"nativeTypesConfig\": function() { return /* binding */ nativeTypesConfig; }\n/* harmony export */ });\n/* harmony import */ var _NativeTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../NativeTypes */ \"./node_modules/react-dnd-html5-backend/dist/esm/NativeTypes.js\");\n/* harmony import */ var _getDataFromDataTransfer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDataFromDataTransfer */ \"./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/getDataFromDataTransfer.js\");\nvar _nativeTypesConfig;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nvar nativeTypesConfig = (_nativeTypesConfig = {}, _defineProperty(_nativeTypesConfig, _NativeTypes__WEBPACK_IMPORTED_MODULE_0__.FILE, {\n  exposeProperties: {\n    files: function files(dataTransfer) {\n      return Array.prototype.slice.call(dataTransfer.files);\n    },\n    items: function items(dataTransfer) {\n      return dataTransfer.items;\n    }\n  },\n  matchesTypes: ['Files']\n}), _defineProperty(_nativeTypesConfig, _NativeTypes__WEBPACK_IMPORTED_MODULE_0__.URL, {\n  exposeProperties: {\n    urls: function urls(dataTransfer, matchesTypes) {\n      return (0,_getDataFromDataTransfer__WEBPACK_IMPORTED_MODULE_1__.getDataFromDataTransfer)(dataTransfer, matchesTypes, '').split('\\n');\n    }\n  },\n  matchesTypes: ['Url', 'text/uri-list']\n}), _defineProperty(_nativeTypesConfig, _NativeTypes__WEBPACK_IMPORTED_MODULE_0__.TEXT, {\n  exposeProperties: {\n    text: function text(dataTransfer, matchesTypes) {\n      return (0,_getDataFromDataTransfer__WEBPACK_IMPORTED_MODULE_1__.getDataFromDataTransfer)(dataTransfer, matchesTypes, '');\n    }\n  },\n  matchesTypes: ['Text', 'text/plain']\n}), _nativeTypesConfig);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/nativeTypesConfig.js?");

/***/ }),

/***/ "./node_modules/react-dnd-html5-backend/dist/esm/NativeTypes.js":
/*!**********************************************************************!*\
  !*** ./node_modules/react-dnd-html5-backend/dist/esm/NativeTypes.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FILE\": function() { return /* binding */ FILE; },\n/* harmony export */   \"TEXT\": function() { return /* binding */ TEXT; },\n/* harmony export */   \"URL\": function() { return /* binding */ URL; }\n/* harmony export */ });\nvar FILE = '__NATIVE_FILE__';\nvar URL = '__NATIVE_URL__';\nvar TEXT = '__NATIVE_TEXT__';\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd-html5-backend/dist/esm/NativeTypes.js?");

/***/ }),

/***/ "./node_modules/react-dnd-html5-backend/dist/esm/OffsetUtils.js":
/*!**********************************************************************!*\
  !*** ./node_modules/react-dnd-html5-backend/dist/esm/OffsetUtils.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getDragPreviewOffset\": function() { return /* binding */ getDragPreviewOffset; },\n/* harmony export */   \"getEventClientOffset\": function() { return /* binding */ getEventClientOffset; },\n/* harmony export */   \"getNodeClientOffset\": function() { return /* binding */ getNodeClientOffset; }\n/* harmony export */ });\n/* harmony import */ var _BrowserDetector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BrowserDetector */ \"./node_modules/react-dnd-html5-backend/dist/esm/BrowserDetector.js\");\n/* harmony import */ var _MonotonicInterpolant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./MonotonicInterpolant */ \"./node_modules/react-dnd-html5-backend/dist/esm/MonotonicInterpolant.js\");\n\n\nvar ELEMENT_NODE = 1;\nfunction getNodeClientOffset(node) {\n  var el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n\n  if (!el) {\n    return null;\n  }\n\n  var _el$getBoundingClient = el.getBoundingClientRect(),\n      top = _el$getBoundingClient.top,\n      left = _el$getBoundingClient.left;\n\n  return {\n    x: left,\n    y: top\n  };\n}\nfunction getEventClientOffset(e) {\n  return {\n    x: e.clientX,\n    y: e.clientY\n  };\n}\n\nfunction isImageNode(node) {\n  var _document$documentEle;\n\n  return node.nodeName === 'IMG' && ((0,_BrowserDetector__WEBPACK_IMPORTED_MODULE_0__.isFirefox)() || !((_document$documentEle = document.documentElement) === null || _document$documentEle === void 0 ? void 0 : _document$documentEle.contains(node)));\n}\n\nfunction getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight) {\n  var dragPreviewWidth = isImage ? dragPreview.width : sourceWidth;\n  var dragPreviewHeight = isImage ? dragPreview.height : sourceHeight; // Work around @2x coordinate discrepancies in browsers\n\n  if ((0,_BrowserDetector__WEBPACK_IMPORTED_MODULE_0__.isSafari)() && isImage) {\n    dragPreviewHeight /= window.devicePixelRatio;\n    dragPreviewWidth /= window.devicePixelRatio;\n  }\n\n  return {\n    dragPreviewWidth: dragPreviewWidth,\n    dragPreviewHeight: dragPreviewHeight\n  };\n}\n\nfunction getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint) {\n  // The browsers will use the image intrinsic size under different conditions.\n  // Firefox only cares if it's an image, but WebKit also wants it to be detached.\n  var isImage = isImageNode(dragPreview);\n  var dragPreviewNode = isImage ? sourceNode : dragPreview;\n  var dragPreviewNodeOffsetFromClient = getNodeClientOffset(dragPreviewNode);\n  var offsetFromDragPreview = {\n    x: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n    y: clientOffset.y - dragPreviewNodeOffsetFromClient.y\n  };\n  var sourceWidth = sourceNode.offsetWidth,\n      sourceHeight = sourceNode.offsetHeight;\n  var anchorX = anchorPoint.anchorX,\n      anchorY = anchorPoint.anchorY;\n\n  var _getDragPreviewSize = getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight),\n      dragPreviewWidth = _getDragPreviewSize.dragPreviewWidth,\n      dragPreviewHeight = _getDragPreviewSize.dragPreviewHeight;\n\n  var calculateYOffset = function calculateYOffset() {\n    var interpolantY = new _MonotonicInterpolant__WEBPACK_IMPORTED_MODULE_1__.MonotonicInterpolant([0, 0.5, 1], [// Dock to the top\n    offsetFromDragPreview.y, // Align at the center\n    offsetFromDragPreview.y / sourceHeight * dragPreviewHeight, // Dock to the bottom\n    offsetFromDragPreview.y + dragPreviewHeight - sourceHeight]);\n    var y = interpolantY.interpolate(anchorY); // Work around Safari 8 positioning bug\n\n    if ((0,_BrowserDetector__WEBPACK_IMPORTED_MODULE_0__.isSafari)() && isImage) {\n      // We'll have to wait for @3x to see if this is entirely correct\n      y += (window.devicePixelRatio - 1) * dragPreviewHeight;\n    }\n\n    return y;\n  };\n\n  var calculateXOffset = function calculateXOffset() {\n    // Interpolate coordinates depending on anchor point\n    // If you know a simpler way to do this, let me know\n    var interpolantX = new _MonotonicInterpolant__WEBPACK_IMPORTED_MODULE_1__.MonotonicInterpolant([0, 0.5, 1], [// Dock to the left\n    offsetFromDragPreview.x, // Align at the center\n    offsetFromDragPreview.x / sourceWidth * dragPreviewWidth, // Dock to the right\n    offsetFromDragPreview.x + dragPreviewWidth - sourceWidth]);\n    return interpolantX.interpolate(anchorX);\n  }; // Force offsets if specified in the options.\n\n\n  var offsetX = offsetPoint.offsetX,\n      offsetY = offsetPoint.offsetY;\n  var isManualOffsetX = offsetX === 0 || offsetX;\n  var isManualOffsetY = offsetY === 0 || offsetY;\n  return {\n    x: isManualOffsetX ? offsetX : calculateXOffset(),\n    y: isManualOffsetY ? offsetY : calculateYOffset()\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd-html5-backend/dist/esm/OffsetUtils.js?");

/***/ }),

/***/ "./node_modules/react-dnd-html5-backend/dist/esm/OptionsReader.js":
/*!************************************************************************!*\
  !*** ./node_modules/react-dnd-html5-backend/dist/esm/OptionsReader.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"OptionsReader\": function() { return /* binding */ OptionsReader; }\n/* harmony export */ });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar OptionsReader = /*#__PURE__*/function () {\n  function OptionsReader(globalContext) {\n    _classCallCheck(this, OptionsReader);\n\n    this.globalContext = globalContext;\n  }\n\n  _createClass(OptionsReader, [{\n    key: \"window\",\n    get: function get() {\n      if (this.globalContext) {\n        return this.globalContext;\n      } else if (typeof window !== 'undefined') {\n        return window;\n      }\n\n      return undefined;\n    }\n  }, {\n    key: \"document\",\n    get: function get() {\n      if (this.window) {\n        return this.window.document;\n      }\n\n      return undefined;\n    }\n  }]);\n\n  return OptionsReader;\n}();\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd-html5-backend/dist/esm/OptionsReader.js?");

/***/ }),

/***/ "./node_modules/react-dnd-html5-backend/dist/esm/getEmptyImage.js":
/*!************************************************************************!*\
  !*** ./node_modules/react-dnd-html5-backend/dist/esm/getEmptyImage.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getEmptyImage\": function() { return /* binding */ getEmptyImage; }\n/* harmony export */ });\nvar emptyImage;\nfunction getEmptyImage() {\n  if (!emptyImage) {\n    emptyImage = new Image();\n    emptyImage.src = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n  }\n\n  return emptyImage;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd-html5-backend/dist/esm/getEmptyImage.js?");

/***/ }),

/***/ "./node_modules/react-dnd-html5-backend/dist/esm/index.js":
/*!****************************************************************!*\
  !*** ./node_modules/react-dnd-html5-backend/dist/esm/index.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"HTML5Backend\": function() { return /* binding */ HTML5Backend; },\n/* harmony export */   \"NativeTypes\": function() { return /* reexport module object */ _NativeTypes__WEBPACK_IMPORTED_MODULE_1__; },\n/* harmony export */   \"getEmptyImage\": function() { return /* reexport safe */ _getEmptyImage__WEBPACK_IMPORTED_MODULE_0__.getEmptyImage; }\n/* harmony export */ });\n/* harmony import */ var _HTML5BackendImpl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./HTML5BackendImpl */ \"./node_modules/react-dnd-html5-backend/dist/esm/HTML5BackendImpl.js\");\n/* harmony import */ var _NativeTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./NativeTypes */ \"./node_modules/react-dnd-html5-backend/dist/esm/NativeTypes.js\");\n/* harmony import */ var _getEmptyImage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getEmptyImage */ \"./node_modules/react-dnd-html5-backend/dist/esm/getEmptyImage.js\");\n\n\n\n\nvar HTML5Backend = function createBackend(manager, context) {\n  return new _HTML5BackendImpl__WEBPACK_IMPORTED_MODULE_2__.HTML5BackendImpl(manager, context);\n};\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd-html5-backend/dist/esm/index.js?");

/***/ }),

/***/ "./node_modules/react-dnd-html5-backend/dist/esm/utils/js_utils.js":
/*!*************************************************************************!*\
  !*** ./node_modules/react-dnd-html5-backend/dist/esm/utils/js_utils.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"memoize\": function() { return /* binding */ memoize; },\n/* harmony export */   \"union\": function() { return /* binding */ union; },\n/* harmony export */   \"without\": function() { return /* binding */ without; }\n/* harmony export */ });\n// cheap lodash replacements\nfunction memoize(fn) {\n  var result = null;\n\n  var memoized = function memoized() {\n    if (result == null) {\n      result = fn();\n    }\n\n    return result;\n  };\n\n  return memoized;\n}\n/**\n * drop-in replacement for _.without\n */\n\nfunction without(items, item) {\n  return items.filter(function (i) {\n    return i !== item;\n  });\n}\nfunction union(itemsA, itemsB) {\n  var set = new Set();\n\n  var insertItem = function insertItem(item) {\n    return set.add(item);\n  };\n\n  itemsA.forEach(insertItem);\n  itemsB.forEach(insertItem);\n  var result = [];\n  set.forEach(function (key) {\n    return result.push(key);\n  });\n  return result;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd-html5-backend/dist/esm/utils/js_utils.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/common/DndContext.js":
/*!**************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/common/DndContext.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DndContext\": function() { return /* binding */ DndContext; },\n/* harmony export */   \"createDndContext\": function() { return /* binding */ createDndContext; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var dnd_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dnd-core */ \"./node_modules/dnd-core/dist/esm/factories.js\");\n\n\n/**\n * Create the React Context\n */\n\nvar DndContext = react__WEBPACK_IMPORTED_MODULE_0__.createContext({\n  dragDropManager: undefined\n});\n/**\n * Creates the context object we're providing\n * @param backend\n * @param context\n */\n\nfunction createDndContext(backend, context, options, debugMode) {\n  return {\n    dragDropManager: (0,dnd_core__WEBPACK_IMPORTED_MODULE_1__.createDragDropManager)(backend, context, options, debugMode)\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/common/DndContext.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/common/DndProvider.js":
/*!***************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/common/DndProvider.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DndProvider\": function() { return /* binding */ DndProvider; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _DndContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DndContext */ \"./node_modules/react-dnd/dist/esm/common/DndContext.js\");\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\nvar refCount = 0;\n/**\n * A React component that provides the React-DnD context\n */\n\nvar DndProvider = (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(function (_ref) {\n  var children = _ref.children,\n      props = _objectWithoutProperties(_ref, [\"children\"]);\n\n  var _getDndContextValue = getDndContextValue(props),\n      _getDndContextValue2 = _slicedToArray(_getDndContextValue, 2),\n      manager = _getDndContextValue2[0],\n      isGlobalInstance = _getDndContextValue2[1]; // memoized from props\n\n  /**\n   * If the global context was used to store the DND context\n   * then where theres no more references to it we should\n   * clean it up to avoid memory leaks\n   */\n\n\n  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(function () {\n    if (isGlobalInstance) {\n      refCount++;\n    }\n\n    return function () {\n      if (isGlobalInstance) {\n        refCount--;\n\n        if (refCount === 0) {\n          var context = getGlobalContext();\n          context[instanceSymbol] = null;\n        }\n      }\n    };\n  }, []);\n  return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_DndContext__WEBPACK_IMPORTED_MODULE_1__.DndContext.Provider, {\n    value: manager\n  }, children);\n});\nDndProvider.displayName = 'DndProvider';\n\nfunction getDndContextValue(props) {\n  if ('manager' in props) {\n    var _manager = {\n      dragDropManager: props.manager\n    };\n    return [_manager, false];\n  }\n\n  var manager = createSingletonDndContext(props.backend, props.context, props.options, props.debugMode);\n  var isGlobalInstance = !props.context;\n  return [manager, isGlobalInstance];\n}\n\nvar instanceSymbol = Symbol.for('__REACT_DND_CONTEXT_INSTANCE__');\n\nfunction createSingletonDndContext(backend) {\n  var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getGlobalContext();\n  var options = arguments.length > 2 ? arguments[2] : undefined;\n  var debugMode = arguments.length > 3 ? arguments[3] : undefined;\n  var ctx = context;\n\n  if (!ctx[instanceSymbol]) {\n    ctx[instanceSymbol] = (0,_DndContext__WEBPACK_IMPORTED_MODULE_1__.createDndContext)(backend, context, options, debugMode);\n  }\n\n  return ctx[instanceSymbol];\n}\n\nfunction getGlobalContext() {\n  return typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : window;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/common/DndProvider.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/common/DragPreviewImage.js":
/*!********************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/common/DragPreviewImage.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DragPreviewImage\": function() { return /* binding */ DragPreviewImage; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n/*\n * A utility for rendering a drag preview image\n */\n\nvar DragPreviewImage = react__WEBPACK_IMPORTED_MODULE_0__.memo(function (_ref) {\n  var connect = _ref.connect,\n      src = _ref.src;\n  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(function () {\n    if (typeof Image === 'undefined') return;\n    var connected = false;\n    var img = new Image();\n    img.src = src;\n\n    img.onload = function () {\n      connect(img);\n      connected = true;\n    };\n\n    return function () {\n      if (connected) {\n        connect(null);\n      }\n    };\n  });\n  return null;\n});\nDragPreviewImage.displayName = 'DragPreviewImage';\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/common/DragPreviewImage.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/common/DragSourceMonitorImpl.js":
/*!*************************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/common/DragSourceMonitorImpl.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DragSourceMonitorImpl\": function() { return /* binding */ DragSourceMonitorImpl; }\n/* harmony export */ });\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\nvar isCallingCanDrag = false;\nvar isCallingIsDragging = false;\nvar DragSourceMonitorImpl = /*#__PURE__*/function () {\n  function DragSourceMonitorImpl(manager) {\n    _classCallCheck(this, DragSourceMonitorImpl);\n\n    this.sourceId = null;\n    this.internalMonitor = manager.getMonitor();\n  }\n\n  _createClass(DragSourceMonitorImpl, [{\n    key: \"receiveHandlerId\",\n    value: function receiveHandlerId(sourceId) {\n      this.sourceId = sourceId;\n    }\n  }, {\n    key: \"getHandlerId\",\n    value: function getHandlerId() {\n      return this.sourceId;\n    }\n  }, {\n    key: \"canDrag\",\n    value: function canDrag() {\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(!isCallingCanDrag, 'You may not call monitor.canDrag() inside your canDrag() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n\n      try {\n        isCallingCanDrag = true;\n        return this.internalMonitor.canDragSource(this.sourceId);\n      } finally {\n        isCallingCanDrag = false;\n      }\n    }\n  }, {\n    key: \"isDragging\",\n    value: function isDragging() {\n      if (!this.sourceId) {\n        return false;\n      }\n\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(!isCallingIsDragging, 'You may not call monitor.isDragging() inside your isDragging() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n\n      try {\n        isCallingIsDragging = true;\n        return this.internalMonitor.isDraggingSource(this.sourceId);\n      } finally {\n        isCallingIsDragging = false;\n      }\n    }\n  }, {\n    key: \"subscribeToStateChange\",\n    value: function subscribeToStateChange(listener, options) {\n      return this.internalMonitor.subscribeToStateChange(listener, options);\n    }\n  }, {\n    key: \"isDraggingSource\",\n    value: function isDraggingSource(sourceId) {\n      return this.internalMonitor.isDraggingSource(sourceId);\n    }\n  }, {\n    key: \"isOverTarget\",\n    value: function isOverTarget(targetId, options) {\n      return this.internalMonitor.isOverTarget(targetId, options);\n    }\n  }, {\n    key: \"getTargetIds\",\n    value: function getTargetIds() {\n      return this.internalMonitor.getTargetIds();\n    }\n  }, {\n    key: \"isSourcePublic\",\n    value: function isSourcePublic() {\n      return this.internalMonitor.isSourcePublic();\n    }\n  }, {\n    key: \"getSourceId\",\n    value: function getSourceId() {\n      return this.internalMonitor.getSourceId();\n    }\n  }, {\n    key: \"subscribeToOffsetChange\",\n    value: function subscribeToOffsetChange(listener) {\n      return this.internalMonitor.subscribeToOffsetChange(listener);\n    }\n  }, {\n    key: \"canDragSource\",\n    value: function canDragSource(sourceId) {\n      return this.internalMonitor.canDragSource(sourceId);\n    }\n  }, {\n    key: \"canDropOnTarget\",\n    value: function canDropOnTarget(targetId) {\n      return this.internalMonitor.canDropOnTarget(targetId);\n    }\n  }, {\n    key: \"getItemType\",\n    value: function getItemType() {\n      return this.internalMonitor.getItemType();\n    }\n  }, {\n    key: \"getItem\",\n    value: function getItem() {\n      return this.internalMonitor.getItem();\n    }\n  }, {\n    key: \"getDropResult\",\n    value: function getDropResult() {\n      return this.internalMonitor.getDropResult();\n    }\n  }, {\n    key: \"didDrop\",\n    value: function didDrop() {\n      return this.internalMonitor.didDrop();\n    }\n  }, {\n    key: \"getInitialClientOffset\",\n    value: function getInitialClientOffset() {\n      return this.internalMonitor.getInitialClientOffset();\n    }\n  }, {\n    key: \"getInitialSourceClientOffset\",\n    value: function getInitialSourceClientOffset() {\n      return this.internalMonitor.getInitialSourceClientOffset();\n    }\n  }, {\n    key: \"getSourceClientOffset\",\n    value: function getSourceClientOffset() {\n      return this.internalMonitor.getSourceClientOffset();\n    }\n  }, {\n    key: \"getClientOffset\",\n    value: function getClientOffset() {\n      return this.internalMonitor.getClientOffset();\n    }\n  }, {\n    key: \"getDifferenceFromInitialOffset\",\n    value: function getDifferenceFromInitialOffset() {\n      return this.internalMonitor.getDifferenceFromInitialOffset();\n    }\n  }]);\n\n  return DragSourceMonitorImpl;\n}();\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/common/DragSourceMonitorImpl.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/common/DropTargetMonitorImpl.js":
/*!*************************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/common/DropTargetMonitorImpl.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DropTargetMonitorImpl\": function() { return /* binding */ DropTargetMonitorImpl; }\n/* harmony export */ });\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\nvar isCallingCanDrop = false;\nvar DropTargetMonitorImpl = /*#__PURE__*/function () {\n  function DropTargetMonitorImpl(manager) {\n    _classCallCheck(this, DropTargetMonitorImpl);\n\n    this.targetId = null;\n    this.internalMonitor = manager.getMonitor();\n  }\n\n  _createClass(DropTargetMonitorImpl, [{\n    key: \"receiveHandlerId\",\n    value: function receiveHandlerId(targetId) {\n      this.targetId = targetId;\n    }\n  }, {\n    key: \"getHandlerId\",\n    value: function getHandlerId() {\n      return this.targetId;\n    }\n  }, {\n    key: \"subscribeToStateChange\",\n    value: function subscribeToStateChange(listener, options) {\n      return this.internalMonitor.subscribeToStateChange(listener, options);\n    }\n  }, {\n    key: \"canDrop\",\n    value: function canDrop() {\n      // Cut out early if the target id has not been set. This should prevent errors\n      // where the user has an older version of dnd-core like in\n      // https://github.com/react-dnd/react-dnd/issues/1310\n      if (!this.targetId) {\n        return false;\n      }\n\n      (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(!isCallingCanDrop, 'You may not call monitor.canDrop() inside your canDrop() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor');\n\n      try {\n        isCallingCanDrop = true;\n        return this.internalMonitor.canDropOnTarget(this.targetId);\n      } finally {\n        isCallingCanDrop = false;\n      }\n    }\n  }, {\n    key: \"isOver\",\n    value: function isOver(options) {\n      if (!this.targetId) {\n        return false;\n      }\n\n      return this.internalMonitor.isOverTarget(this.targetId, options);\n    }\n  }, {\n    key: \"getItemType\",\n    value: function getItemType() {\n      return this.internalMonitor.getItemType();\n    }\n  }, {\n    key: \"getItem\",\n    value: function getItem() {\n      return this.internalMonitor.getItem();\n    }\n  }, {\n    key: \"getDropResult\",\n    value: function getDropResult() {\n      return this.internalMonitor.getDropResult();\n    }\n  }, {\n    key: \"didDrop\",\n    value: function didDrop() {\n      return this.internalMonitor.didDrop();\n    }\n  }, {\n    key: \"getInitialClientOffset\",\n    value: function getInitialClientOffset() {\n      return this.internalMonitor.getInitialClientOffset();\n    }\n  }, {\n    key: \"getInitialSourceClientOffset\",\n    value: function getInitialSourceClientOffset() {\n      return this.internalMonitor.getInitialSourceClientOffset();\n    }\n  }, {\n    key: \"getSourceClientOffset\",\n    value: function getSourceClientOffset() {\n      return this.internalMonitor.getSourceClientOffset();\n    }\n  }, {\n    key: \"getClientOffset\",\n    value: function getClientOffset() {\n      return this.internalMonitor.getClientOffset();\n    }\n  }, {\n    key: \"getDifferenceFromInitialOffset\",\n    value: function getDifferenceFromInitialOffset() {\n      return this.internalMonitor.getDifferenceFromInitialOffset();\n    }\n  }]);\n\n  return DropTargetMonitorImpl;\n}();\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/common/DropTargetMonitorImpl.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/common/SourceConnector.js":
/*!*******************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/common/SourceConnector.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SourceConnector\": function() { return /* binding */ SourceConnector; }\n/* harmony export */ });\n/* harmony import */ var _wrapConnectorHooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./wrapConnectorHooks */ \"./node_modules/react-dnd/dist/esm/common/wrapConnectorHooks.js\");\n/* harmony import */ var _utils_isRef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/isRef */ \"./node_modules/react-dnd/dist/esm/utils/isRef.js\");\n/* harmony import */ var _react_dnd_shallowequal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @react-dnd/shallowequal */ \"./node_modules/@react-dnd/shallowequal/dist/shallowequal.esm.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar SourceConnector = /*#__PURE__*/function () {\n  function SourceConnector(backend) {\n    var _this = this;\n\n    _classCallCheck(this, SourceConnector);\n\n    this.hooks = (0,_wrapConnectorHooks__WEBPACK_IMPORTED_MODULE_1__.wrapConnectorHooks)({\n      dragSource: function dragSource(node, options) {\n        _this.clearDragSource();\n\n        _this.dragSourceOptions = options || null;\n\n        if ((0,_utils_isRef__WEBPACK_IMPORTED_MODULE_2__.isRef)(node)) {\n          _this.dragSourceRef = node;\n        } else {\n          _this.dragSourceNode = node;\n        }\n\n        _this.reconnectDragSource();\n      },\n      dragPreview: function dragPreview(node, options) {\n        _this.clearDragPreview();\n\n        _this.dragPreviewOptions = options || null;\n\n        if ((0,_utils_isRef__WEBPACK_IMPORTED_MODULE_2__.isRef)(node)) {\n          _this.dragPreviewRef = node;\n        } else {\n          _this.dragPreviewNode = node;\n        }\n\n        _this.reconnectDragPreview();\n      }\n    });\n    this.handlerId = null; // The drop target may either be attached via ref or connect function\n\n    this.dragSourceRef = null;\n    this.dragSourceOptionsInternal = null; // The drag preview may either be attached via ref or connect function\n\n    this.dragPreviewRef = null;\n    this.dragPreviewOptionsInternal = null;\n    this.lastConnectedHandlerId = null;\n    this.lastConnectedDragSource = null;\n    this.lastConnectedDragSourceOptions = null;\n    this.lastConnectedDragPreview = null;\n    this.lastConnectedDragPreviewOptions = null;\n    this.backend = backend;\n  }\n\n  _createClass(SourceConnector, [{\n    key: \"receiveHandlerId\",\n    value: function receiveHandlerId(newHandlerId) {\n      if (this.handlerId === newHandlerId) {\n        return;\n      }\n\n      this.handlerId = newHandlerId;\n      this.reconnect();\n    }\n  }, {\n    key: \"reconnect\",\n    value: function reconnect() {\n      this.reconnectDragSource();\n      this.reconnectDragPreview();\n    }\n  }, {\n    key: \"reconnectDragSource\",\n    value: function reconnectDragSource() {\n      var dragSource = this.dragSource; // if nothing has changed then don't resubscribe\n\n      var didChange = this.didHandlerIdChange() || this.didConnectedDragSourceChange() || this.didDragSourceOptionsChange();\n\n      if (didChange) {\n        this.disconnectDragSource();\n      }\n\n      if (!this.handlerId) {\n        return;\n      }\n\n      if (!dragSource) {\n        this.lastConnectedDragSource = dragSource;\n        return;\n      }\n\n      if (didChange) {\n        this.lastConnectedHandlerId = this.handlerId;\n        this.lastConnectedDragSource = dragSource;\n        this.lastConnectedDragSourceOptions = this.dragSourceOptions;\n        this.dragSourceUnsubscribe = this.backend.connectDragSource(this.handlerId, dragSource, this.dragSourceOptions);\n      }\n    }\n  }, {\n    key: \"reconnectDragPreview\",\n    value: function reconnectDragPreview() {\n      var dragPreview = this.dragPreview; // if nothing has changed then don't resubscribe\n\n      var didChange = this.didHandlerIdChange() || this.didConnectedDragPreviewChange() || this.didDragPreviewOptionsChange();\n\n      if (didChange) {\n        this.disconnectDragPreview();\n      }\n\n      if (!this.handlerId) {\n        return;\n      }\n\n      if (!dragPreview) {\n        this.lastConnectedDragPreview = dragPreview;\n        return;\n      }\n\n      if (didChange) {\n        this.lastConnectedHandlerId = this.handlerId;\n        this.lastConnectedDragPreview = dragPreview;\n        this.lastConnectedDragPreviewOptions = this.dragPreviewOptions;\n        this.dragPreviewUnsubscribe = this.backend.connectDragPreview(this.handlerId, dragPreview, this.dragPreviewOptions);\n      }\n    }\n  }, {\n    key: \"didHandlerIdChange\",\n    value: function didHandlerIdChange() {\n      return this.lastConnectedHandlerId !== this.handlerId;\n    }\n  }, {\n    key: \"didConnectedDragSourceChange\",\n    value: function didConnectedDragSourceChange() {\n      return this.lastConnectedDragSource !== this.dragSource;\n    }\n  }, {\n    key: \"didConnectedDragPreviewChange\",\n    value: function didConnectedDragPreviewChange() {\n      return this.lastConnectedDragPreview !== this.dragPreview;\n    }\n  }, {\n    key: \"didDragSourceOptionsChange\",\n    value: function didDragSourceOptionsChange() {\n      return !(0,_react_dnd_shallowequal__WEBPACK_IMPORTED_MODULE_0__.shallowEqual)(this.lastConnectedDragSourceOptions, this.dragSourceOptions);\n    }\n  }, {\n    key: \"didDragPreviewOptionsChange\",\n    value: function didDragPreviewOptionsChange() {\n      return !(0,_react_dnd_shallowequal__WEBPACK_IMPORTED_MODULE_0__.shallowEqual)(this.lastConnectedDragPreviewOptions, this.dragPreviewOptions);\n    }\n  }, {\n    key: \"disconnectDragSource\",\n    value: function disconnectDragSource() {\n      if (this.dragSourceUnsubscribe) {\n        this.dragSourceUnsubscribe();\n        this.dragSourceUnsubscribe = undefined;\n      }\n    }\n  }, {\n    key: \"disconnectDragPreview\",\n    value: function disconnectDragPreview() {\n      if (this.dragPreviewUnsubscribe) {\n        this.dragPreviewUnsubscribe();\n        this.dragPreviewUnsubscribe = undefined;\n        this.dragPreviewNode = null;\n        this.dragPreviewRef = null;\n      }\n    }\n  }, {\n    key: \"clearDragSource\",\n    value: function clearDragSource() {\n      this.dragSourceNode = null;\n      this.dragSourceRef = null;\n    }\n  }, {\n    key: \"clearDragPreview\",\n    value: function clearDragPreview() {\n      this.dragPreviewNode = null;\n      this.dragPreviewRef = null;\n    }\n  }, {\n    key: \"connectTarget\",\n    get: function get() {\n      return this.dragSource;\n    }\n  }, {\n    key: \"dragSourceOptions\",\n    get: function get() {\n      return this.dragSourceOptionsInternal;\n    },\n    set: function set(options) {\n      this.dragSourceOptionsInternal = options;\n    }\n  }, {\n    key: \"dragPreviewOptions\",\n    get: function get() {\n      return this.dragPreviewOptionsInternal;\n    },\n    set: function set(options) {\n      this.dragPreviewOptionsInternal = options;\n    }\n  }, {\n    key: \"dragSource\",\n    get: function get() {\n      return this.dragSourceNode || this.dragSourceRef && this.dragSourceRef.current;\n    }\n  }, {\n    key: \"dragPreview\",\n    get: function get() {\n      return this.dragPreviewNode || this.dragPreviewRef && this.dragPreviewRef.current;\n    }\n  }]);\n\n  return SourceConnector;\n}();\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/common/SourceConnector.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/common/TargetConnector.js":
/*!*******************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/common/TargetConnector.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TargetConnector\": function() { return /* binding */ TargetConnector; }\n/* harmony export */ });\n/* harmony import */ var _react_dnd_shallowequal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @react-dnd/shallowequal */ \"./node_modules/@react-dnd/shallowequal/dist/shallowequal.esm.js\");\n/* harmony import */ var _wrapConnectorHooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./wrapConnectorHooks */ \"./node_modules/react-dnd/dist/esm/common/wrapConnectorHooks.js\");\n/* harmony import */ var _utils_isRef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/isRef */ \"./node_modules/react-dnd/dist/esm/utils/isRef.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar TargetConnector = /*#__PURE__*/function () {\n  function TargetConnector(backend) {\n    var _this = this;\n\n    _classCallCheck(this, TargetConnector);\n\n    this.hooks = (0,_wrapConnectorHooks__WEBPACK_IMPORTED_MODULE_1__.wrapConnectorHooks)({\n      dropTarget: function dropTarget(node, options) {\n        _this.clearDropTarget();\n\n        _this.dropTargetOptions = options;\n\n        if ((0,_utils_isRef__WEBPACK_IMPORTED_MODULE_2__.isRef)(node)) {\n          _this.dropTargetRef = node;\n        } else {\n          _this.dropTargetNode = node;\n        }\n\n        _this.reconnect();\n      }\n    });\n    this.handlerId = null; // The drop target may either be attached via ref or connect function\n\n    this.dropTargetRef = null;\n    this.dropTargetOptionsInternal = null;\n    this.lastConnectedHandlerId = null;\n    this.lastConnectedDropTarget = null;\n    this.lastConnectedDropTargetOptions = null;\n    this.backend = backend;\n  }\n\n  _createClass(TargetConnector, [{\n    key: \"reconnect\",\n    value: function reconnect() {\n      // if nothing has changed then don't resubscribe\n      var didChange = this.didHandlerIdChange() || this.didDropTargetChange() || this.didOptionsChange();\n\n      if (didChange) {\n        this.disconnectDropTarget();\n      }\n\n      var dropTarget = this.dropTarget;\n\n      if (!this.handlerId) {\n        return;\n      }\n\n      if (!dropTarget) {\n        this.lastConnectedDropTarget = dropTarget;\n        return;\n      }\n\n      if (didChange) {\n        this.lastConnectedHandlerId = this.handlerId;\n        this.lastConnectedDropTarget = dropTarget;\n        this.lastConnectedDropTargetOptions = this.dropTargetOptions;\n        this.unsubscribeDropTarget = this.backend.connectDropTarget(this.handlerId, dropTarget, this.dropTargetOptions);\n      }\n    }\n  }, {\n    key: \"receiveHandlerId\",\n    value: function receiveHandlerId(newHandlerId) {\n      if (newHandlerId === this.handlerId) {\n        return;\n      }\n\n      this.handlerId = newHandlerId;\n      this.reconnect();\n    }\n  }, {\n    key: \"didHandlerIdChange\",\n    value: function didHandlerIdChange() {\n      return this.lastConnectedHandlerId !== this.handlerId;\n    }\n  }, {\n    key: \"didDropTargetChange\",\n    value: function didDropTargetChange() {\n      return this.lastConnectedDropTarget !== this.dropTarget;\n    }\n  }, {\n    key: \"didOptionsChange\",\n    value: function didOptionsChange() {\n      return !(0,_react_dnd_shallowequal__WEBPACK_IMPORTED_MODULE_0__.shallowEqual)(this.lastConnectedDropTargetOptions, this.dropTargetOptions);\n    }\n  }, {\n    key: \"disconnectDropTarget\",\n    value: function disconnectDropTarget() {\n      if (this.unsubscribeDropTarget) {\n        this.unsubscribeDropTarget();\n        this.unsubscribeDropTarget = undefined;\n      }\n    }\n  }, {\n    key: \"clearDropTarget\",\n    value: function clearDropTarget() {\n      this.dropTargetRef = null;\n      this.dropTargetNode = null;\n    }\n  }, {\n    key: \"connectTarget\",\n    get: function get() {\n      return this.dropTarget;\n    }\n  }, {\n    key: \"dropTargetOptions\",\n    get: function get() {\n      return this.dropTargetOptionsInternal;\n    },\n    set: function set(options) {\n      this.dropTargetOptionsInternal = options;\n    }\n  }, {\n    key: \"dropTarget\",\n    get: function get() {\n      return this.dropTargetNode || this.dropTargetRef && this.dropTargetRef.current;\n    }\n  }]);\n\n  return TargetConnector;\n}();\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/common/TargetConnector.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/common/index.js":
/*!*********************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/common/index.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DndContext\": function() { return /* reexport safe */ _DndContext__WEBPACK_IMPORTED_MODULE_0__.DndContext; },\n/* harmony export */   \"DndProvider\": function() { return /* reexport safe */ _DndProvider__WEBPACK_IMPORTED_MODULE_1__.DndProvider; },\n/* harmony export */   \"DragPreviewImage\": function() { return /* reexport safe */ _DragPreviewImage__WEBPACK_IMPORTED_MODULE_2__.DragPreviewImage; },\n/* harmony export */   \"createDndContext\": function() { return /* reexport safe */ _DndContext__WEBPACK_IMPORTED_MODULE_0__.createDndContext; }\n/* harmony export */ });\n/* harmony import */ var _DndContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DndContext */ \"./node_modules/react-dnd/dist/esm/common/DndContext.js\");\n/* harmony import */ var _DndProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DndProvider */ \"./node_modules/react-dnd/dist/esm/common/DndProvider.js\");\n/* harmony import */ var _DragPreviewImage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./DragPreviewImage */ \"./node_modules/react-dnd/dist/esm/common/DragPreviewImage.js\");\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/common/index.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/common/registration.js":
/*!****************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/common/registration.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"registerSource\": function() { return /* binding */ registerSource; },\n/* harmony export */   \"registerTarget\": function() { return /* binding */ registerTarget; }\n/* harmony export */ });\nfunction registerTarget(type, target, manager) {\n  var registry = manager.getRegistry();\n  var targetId = registry.addTarget(type, target);\n  return [targetId, function () {\n    return registry.removeTarget(targetId);\n  }];\n}\nfunction registerSource(type, source, manager) {\n  var registry = manager.getRegistry();\n  var sourceId = registry.addSource(type, source);\n  return [sourceId, function () {\n    return registry.removeSource(sourceId);\n  }];\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/common/registration.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/common/wrapConnectorHooks.js":
/*!**********************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/common/wrapConnectorHooks.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"wrapConnectorHooks\": function() { return /* binding */ wrapConnectorHooks; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_cloneWithRef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/cloneWithRef */ \"./node_modules/react-dnd/dist/esm/utils/cloneWithRef.js\");\n\n\n\nfunction throwIfCompositeComponentElement(element) {\n  // Custom components can no longer be wrapped directly in React DnD 2.0\n  // so that we don't need to depend on findDOMNode() from react-dom.\n  if (typeof element.type === 'string') {\n    return;\n  }\n\n  var displayName = element.type.displayName || element.type.name || 'the component';\n  throw new Error('Only native element nodes can now be passed to React DnD connectors.' + \"You can either wrap \".concat(displayName, \" into a <div>, or turn it into a \") + 'drag source or a drop target itself.');\n}\n\nfunction wrapHookToRecognizeElement(hook) {\n  return function () {\n    var elementOrNode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n    // When passed a node, call the hook straight away.\n    if (!(0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(elementOrNode)) {\n      var node = elementOrNode;\n      hook(node, options); // return the node so it can be chained (e.g. when within callback refs\n      // <div ref={node => connectDragSource(connectDropTarget(node))}/>\n\n      return node;\n    } // If passed a ReactElement, clone it and attach this function as a ref.\n    // This helps us achieve a neat API where user doesn't even know that refs\n    // are being used under the hood.\n\n\n    var element = elementOrNode;\n    throwIfCompositeComponentElement(element); // When no options are passed, use the hook directly\n\n    var ref = options ? function (node) {\n      return hook(node, options);\n    } : hook;\n    return (0,_utils_cloneWithRef__WEBPACK_IMPORTED_MODULE_1__.cloneWithRef)(element, ref);\n  };\n}\n\nfunction wrapConnectorHooks(hooks) {\n  var wrappedHooks = {};\n  Object.keys(hooks).forEach(function (key) {\n    var hook = hooks[key]; // ref objects should be passed straight through without wrapping\n\n    if (key.endsWith('Ref')) {\n      wrappedHooks[key] = hooks[key];\n    } else {\n      var wrappedHook = wrapHookToRecognizeElement(hook);\n\n      wrappedHooks[key] = function () {\n        return wrappedHook;\n      };\n    }\n  });\n  return wrappedHooks;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/common/wrapConnectorHooks.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/decorators/DragLayer.js":
/*!*****************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/decorators/DragLayer.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DragLayer\": function() { return /* binding */ DragLayer; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _react_dnd_shallowequal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @react-dnd/shallowequal */ \"./node_modules/@react-dnd/shallowequal/dist/shallowequal.esm.js\");\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! hoist-non-react-statics */ \"./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\");\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\n/* harmony import */ var _common_DndContext__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../common/DndContext */ \"./node_modules/react-dnd/dist/esm/common/DndContext.js\");\n/* harmony import */ var _utils_js_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/js_utils */ \"./node_modules/react-dnd/dist/esm/utils/js_utils.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils */ \"./node_modules/react-dnd/dist/esm/decorators/utils.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n\n\nfunction DragLayer(collect) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  (0,_utils__WEBPACK_IMPORTED_MODULE_4__.checkDecoratorArguments)('DragLayer', 'collect[, options]', collect, options);\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_3__.invariant)(typeof collect === 'function', 'Expected \"collect\" provided as the first argument to DragLayer to be a function that collects props to inject into the component. ', 'Instead, received %s. Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-layer', collect);\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_3__.invariant)((0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_5__.isPlainObject)(options), 'Expected \"options\" provided as the second argument to DragLayer to be a plain object when specified. ' + 'Instead, received %s. Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-layer', options);\n  return function decorateLayer(DecoratedComponent) {\n    var Decorated = DecoratedComponent;\n    var _options$arePropsEqua = options.arePropsEqual,\n        arePropsEqual = _options$arePropsEqua === void 0 ? _react_dnd_shallowequal__WEBPACK_IMPORTED_MODULE_1__.shallowEqual : _options$arePropsEqua;\n    var displayName = Decorated.displayName || Decorated.name || 'Component';\n\n    var DragLayerContainer =\n    /** @class */\n    function () {\n      var DragLayerContainer = /*#__PURE__*/function (_React$Component) {\n        _inherits(DragLayerContainer, _React$Component);\n\n        var _super = _createSuper(DragLayerContainer);\n\n        function DragLayerContainer() {\n          var _this;\n\n          _classCallCheck(this, DragLayerContainer);\n\n          _this = _super.apply(this, arguments);\n          _this.isCurrentlyMounted = false;\n          _this.ref = react__WEBPACK_IMPORTED_MODULE_0__.createRef();\n\n          _this.handleChange = function () {\n            if (!_this.isCurrentlyMounted) {\n              return;\n            }\n\n            var nextState = _this.getCurrentState();\n\n            if (!(0,_react_dnd_shallowequal__WEBPACK_IMPORTED_MODULE_1__.shallowEqual)(nextState, _this.state)) {\n              _this.setState(nextState);\n            }\n          };\n\n          return _this;\n        }\n\n        _createClass(DragLayerContainer, [{\n          key: \"getDecoratedComponentInstance\",\n          value: function getDecoratedComponentInstance() {\n            (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_3__.invariant)(this.ref.current, 'In order to access an instance of the decorated component, it must either be a class component or use React.forwardRef()');\n            return this.ref.current;\n          }\n        }, {\n          key: \"shouldComponentUpdate\",\n          value: function shouldComponentUpdate(nextProps, nextState) {\n            return !arePropsEqual(nextProps, this.props) || !(0,_react_dnd_shallowequal__WEBPACK_IMPORTED_MODULE_1__.shallowEqual)(nextState, this.state);\n          }\n        }, {\n          key: \"componentDidMount\",\n          value: function componentDidMount() {\n            this.isCurrentlyMounted = true;\n            this.handleChange();\n          }\n        }, {\n          key: \"componentWillUnmount\",\n          value: function componentWillUnmount() {\n            this.isCurrentlyMounted = false;\n\n            if (this.unsubscribeFromOffsetChange) {\n              this.unsubscribeFromOffsetChange();\n              this.unsubscribeFromOffsetChange = undefined;\n            }\n\n            if (this.unsubscribeFromStateChange) {\n              this.unsubscribeFromStateChange();\n              this.unsubscribeFromStateChange = undefined;\n            }\n          }\n        }, {\n          key: \"render\",\n          value: function render() {\n            var _this2 = this;\n\n            return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_common_DndContext__WEBPACK_IMPORTED_MODULE_6__.DndContext.Consumer, null, function (_ref) {\n              var dragDropManager = _ref.dragDropManager;\n\n              if (dragDropManager === undefined) {\n                return null;\n              }\n\n              _this2.receiveDragDropManager(dragDropManager); // Let componentDidMount fire to initialize the collected state\n\n\n              if (!_this2.isCurrentlyMounted) {\n                return null;\n              }\n\n              return react__WEBPACK_IMPORTED_MODULE_0__.createElement(Decorated, Object.assign({}, _this2.props, _this2.state, {\n                ref: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.isRefable)(Decorated) ? _this2.ref : null\n              }));\n            });\n          }\n        }, {\n          key: \"receiveDragDropManager\",\n          value: function receiveDragDropManager(dragDropManager) {\n            if (this.manager !== undefined) {\n              return;\n            }\n\n            this.manager = dragDropManager;\n            (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_3__.invariant)(_typeof(dragDropManager) === 'object', 'Could not find the drag and drop manager in the context of %s. ' + 'Make sure to render a DndProvider component in your top-level component. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/troubleshooting#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n            var monitor = this.manager.getMonitor();\n            this.unsubscribeFromOffsetChange = monitor.subscribeToOffsetChange(this.handleChange);\n            this.unsubscribeFromStateChange = monitor.subscribeToStateChange(this.handleChange);\n          }\n        }, {\n          key: \"getCurrentState\",\n          value: function getCurrentState() {\n            if (!this.manager) {\n              return {};\n            }\n\n            var monitor = this.manager.getMonitor();\n            return collect(monitor, this.props);\n          }\n        }]);\n\n        return DragLayerContainer;\n      }(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n\n      DragLayerContainer.displayName = \"DragLayer(\".concat(displayName, \")\");\n      DragLayerContainer.DecoratedComponent = DecoratedComponent;\n      return DragLayerContainer;\n    }();\n\n    return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default()(DragLayerContainer, DecoratedComponent);\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/decorators/DragLayer.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/decorators/DragSource.js":
/*!******************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/decorators/DragSource.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DragSource\": function() { return /* binding */ DragSource; }\n/* harmony export */ });\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\n/* harmony import */ var _utils_js_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/js_utils */ \"./node_modules/react-dnd/dist/esm/utils/js_utils.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./node_modules/react-dnd/dist/esm/decorators/utils.js\");\n/* harmony import */ var _decorateHandler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./decorateHandler */ \"./node_modules/react-dnd/dist/esm/decorators/decorateHandler.js\");\n/* harmony import */ var _common_registration__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../common/registration */ \"./node_modules/react-dnd/dist/esm/common/registration.js\");\n/* harmony import */ var _common_DragSourceMonitorImpl__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../common/DragSourceMonitorImpl */ \"./node_modules/react-dnd/dist/esm/common/DragSourceMonitorImpl.js\");\n/* harmony import */ var _common_SourceConnector__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../common/SourceConnector */ \"./node_modules/react-dnd/dist/esm/common/SourceConnector.js\");\n/* harmony import */ var _utils_isValidType__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/isValidType */ \"./node_modules/react-dnd/dist/esm/utils/isValidType.js\");\n/* harmony import */ var _createSourceFactory__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./createSourceFactory */ \"./node_modules/react-dnd/dist/esm/decorators/createSourceFactory.js\");\n\n\n\n\n\n\n\n\n\n/**\n * Decorates a component as a dragsource\n * @param type The dragsource type\n * @param spec The drag source specification\n * @param collect The props collector function\n * @param options DnD options\n */\n\nfunction DragSource(type, spec, collect) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  (0,_utils__WEBPACK_IMPORTED_MODULE_1__.checkDecoratorArguments)('DragSource', 'type, spec, collect[, options]', type, spec, collect, options);\n  var getType = type;\n\n  if (typeof type !== 'function') {\n    (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)((0,_utils_isValidType__WEBPACK_IMPORTED_MODULE_2__.isValidType)(type), 'Expected \"type\" provided as the first argument to DragSource to be ' + 'a string, or a function that returns a string given the current props. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', type);\n\n    getType = function getType() {\n      return type;\n    };\n  }\n\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)((0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_3__.isPlainObject)(spec), 'Expected \"spec\" provided as the second argument to DragSource to be ' + 'a plain object. Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', spec);\n  var createSource = (0,_createSourceFactory__WEBPACK_IMPORTED_MODULE_4__.createSourceFactory)(spec);\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DragSource to be ' + 'a function that returns a plain object of props to inject. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', collect);\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)((0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_3__.isPlainObject)(options), 'Expected \"options\" provided as the fourth argument to DragSource to be ' + 'a plain object when specified. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', collect);\n  return function decorateSource(DecoratedComponent) {\n    return (0,_decorateHandler__WEBPACK_IMPORTED_MODULE_5__.decorateHandler)({\n      containerDisplayName: 'DragSource',\n      createHandler: createSource,\n      registerHandler: _common_registration__WEBPACK_IMPORTED_MODULE_6__.registerSource,\n      createConnector: function createConnector(backend) {\n        return new _common_SourceConnector__WEBPACK_IMPORTED_MODULE_7__.SourceConnector(backend);\n      },\n      createMonitor: function createMonitor(manager) {\n        return new _common_DragSourceMonitorImpl__WEBPACK_IMPORTED_MODULE_8__.DragSourceMonitorImpl(manager);\n      },\n      DecoratedComponent: DecoratedComponent,\n      getType: getType,\n      collect: collect,\n      options: options\n    });\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/decorators/DragSource.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/decorators/DropTarget.js":
/*!******************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/decorators/DropTarget.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DropTarget\": function() { return /* binding */ DropTarget; }\n/* harmony export */ });\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\n/* harmony import */ var _utils_js_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/js_utils */ \"./node_modules/react-dnd/dist/esm/utils/js_utils.js\");\n/* harmony import */ var _common_registration__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../common/registration */ \"./node_modules/react-dnd/dist/esm/common/registration.js\");\n/* harmony import */ var _utils_isValidType__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/isValidType */ \"./node_modules/react-dnd/dist/esm/utils/isValidType.js\");\n/* harmony import */ var _common_TargetConnector__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../common/TargetConnector */ \"./node_modules/react-dnd/dist/esm/common/TargetConnector.js\");\n/* harmony import */ var _common_DropTargetMonitorImpl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../common/DropTargetMonitorImpl */ \"./node_modules/react-dnd/dist/esm/common/DropTargetMonitorImpl.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./node_modules/react-dnd/dist/esm/decorators/utils.js\");\n/* harmony import */ var _decorateHandler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./decorateHandler */ \"./node_modules/react-dnd/dist/esm/decorators/decorateHandler.js\");\n/* harmony import */ var _createTargetFactory__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./createTargetFactory */ \"./node_modules/react-dnd/dist/esm/decorators/createTargetFactory.js\");\n\n\n\n\n\n\n\n\n\nfunction DropTarget(type, spec, collect) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  (0,_utils__WEBPACK_IMPORTED_MODULE_1__.checkDecoratorArguments)('DropTarget', 'type, spec, collect[, options]', type, spec, collect, options);\n  var getType = type;\n\n  if (typeof type !== 'function') {\n    (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)((0,_utils_isValidType__WEBPACK_IMPORTED_MODULE_2__.isValidType)(type, true), 'Expected \"type\" provided as the first argument to DropTarget to be ' + 'a string, an array of strings, or a function that returns either given ' + 'the current props. Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', type);\n\n    getType = function getType() {\n      return type;\n    };\n  }\n\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)((0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_3__.isPlainObject)(spec), 'Expected \"spec\" provided as the second argument to DropTarget to be ' + 'a plain object. Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', spec);\n  var createTarget = (0,_createTargetFactory__WEBPACK_IMPORTED_MODULE_4__.createTargetFactory)(spec);\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DropTarget to be ' + 'a function that returns a plain object of props to inject. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', collect);\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)((0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_3__.isPlainObject)(options), 'Expected \"options\" provided as the fourth argument to DropTarget to be ' + 'a plain object when specified. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', collect);\n  return function decorateTarget(DecoratedComponent) {\n    return (0,_decorateHandler__WEBPACK_IMPORTED_MODULE_5__.decorateHandler)({\n      containerDisplayName: 'DropTarget',\n      createHandler: createTarget,\n      registerHandler: _common_registration__WEBPACK_IMPORTED_MODULE_6__.registerTarget,\n      createMonitor: function createMonitor(manager) {\n        return new _common_DropTargetMonitorImpl__WEBPACK_IMPORTED_MODULE_7__.DropTargetMonitorImpl(manager);\n      },\n      createConnector: function createConnector(backend) {\n        return new _common_TargetConnector__WEBPACK_IMPORTED_MODULE_8__.TargetConnector(backend);\n      },\n      DecoratedComponent: DecoratedComponent,\n      getType: getType,\n      collect: collect,\n      options: options\n    });\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/decorators/DropTarget.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/decorators/createSourceFactory.js":
/*!***************************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/decorators/createSourceFactory.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createSourceFactory\": function() { return /* binding */ createSourceFactory; }\n/* harmony export */ });\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\n/* harmony import */ var _utils_js_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/js_utils */ \"./node_modules/react-dnd/dist/esm/utils/js_utils.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ \"./node_modules/react-dnd/dist/esm/decorators/utils.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar ALLOWED_SPEC_METHODS = ['canDrag', 'beginDrag', 'isDragging', 'endDrag'];\nvar REQUIRED_SPEC_METHODS = ['beginDrag'];\n\nvar SourceImpl = /*#__PURE__*/function () {\n  function SourceImpl(spec, monitor, ref) {\n    var _this = this;\n\n    _classCallCheck(this, SourceImpl);\n\n    this.props = null;\n\n    this.beginDrag = function () {\n      if (!_this.props) {\n        return;\n      }\n\n      var item = _this.spec.beginDrag(_this.props, _this.monitor, _this.ref.current);\n\n      if (true) {\n        (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)((0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_1__.isPlainObject)(item), 'beginDrag() must return a plain object that represents the dragged item. ' + 'Instead received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', item);\n      }\n\n      return item;\n    };\n\n    this.spec = spec;\n    this.monitor = monitor;\n    this.ref = ref;\n  }\n\n  _createClass(SourceImpl, [{\n    key: \"receiveProps\",\n    value: function receiveProps(props) {\n      this.props = props;\n    }\n  }, {\n    key: \"canDrag\",\n    value: function canDrag() {\n      if (!this.props) {\n        return false;\n      }\n\n      if (!this.spec.canDrag) {\n        return true;\n      }\n\n      return this.spec.canDrag(this.props, this.monitor);\n    }\n  }, {\n    key: \"isDragging\",\n    value: function isDragging(globalMonitor, sourceId) {\n      if (!this.props) {\n        return false;\n      }\n\n      if (!this.spec.isDragging) {\n        return sourceId === globalMonitor.getSourceId();\n      }\n\n      return this.spec.isDragging(this.props, this.monitor);\n    }\n  }, {\n    key: \"endDrag\",\n    value: function endDrag() {\n      if (!this.props) {\n        return;\n      }\n\n      if (!this.spec.endDrag) {\n        return;\n      }\n\n      this.spec.endDrag(this.props, this.monitor, (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getDecoratedComponent)(this.ref));\n    }\n  }]);\n\n  return SourceImpl;\n}();\n\nfunction createSourceFactory(spec) {\n  Object.keys(spec).forEach(function (key) {\n    (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drag source specification to only have ' + 'some of the following keys: %s. ' + 'Instead received a specification with an unexpected \"%s\" key. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', ALLOWED_SPEC_METHODS.join(', '), key);\n    (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' + 'Instead received a specification with %s: %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', key, key, spec[key]);\n  });\n  REQUIRED_SPEC_METHODS.forEach(function (key) {\n    (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' + 'Instead received a specification with %s: %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', key, key, spec[key]);\n  });\n  return function createSource(monitor, ref) {\n    return new SourceImpl(spec, monitor, ref);\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/decorators/createSourceFactory.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/decorators/createTargetFactory.js":
/*!***************************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/decorators/createTargetFactory.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createTargetFactory\": function() { return /* binding */ createTargetFactory; }\n/* harmony export */ });\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\n/* harmony import */ var _utils_js_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/js_utils */ \"./node_modules/react-dnd/dist/esm/utils/js_utils.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./node_modules/react-dnd/dist/esm/decorators/utils.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar ALLOWED_SPEC_METHODS = ['canDrop', 'hover', 'drop'];\n\nvar TargetImpl = /*#__PURE__*/function () {\n  function TargetImpl(spec, monitor, ref) {\n    _classCallCheck(this, TargetImpl);\n\n    this.props = null;\n    this.spec = spec;\n    this.monitor = monitor;\n    this.ref = ref;\n  }\n\n  _createClass(TargetImpl, [{\n    key: \"receiveProps\",\n    value: function receiveProps(props) {\n      this.props = props;\n    }\n  }, {\n    key: \"receiveMonitor\",\n    value: function receiveMonitor(monitor) {\n      this.monitor = monitor;\n    }\n  }, {\n    key: \"canDrop\",\n    value: function canDrop() {\n      if (!this.spec.canDrop) {\n        return true;\n      }\n\n      return this.spec.canDrop(this.props, this.monitor);\n    }\n  }, {\n    key: \"hover\",\n    value: function hover() {\n      if (!this.spec.hover || !this.props) {\n        return;\n      }\n\n      this.spec.hover(this.props, this.monitor, (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getDecoratedComponent)(this.ref));\n    }\n  }, {\n    key: \"drop\",\n    value: function drop() {\n      if (!this.spec.drop) {\n        return undefined;\n      }\n\n      var dropResult = this.spec.drop(this.props, this.monitor, this.ref.current);\n\n      if (true) {\n        (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof dropResult === 'undefined' || (0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(dropResult), 'drop() must either return undefined, or an object that represents the drop result. ' + 'Instead received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', dropResult);\n      }\n\n      return dropResult;\n    }\n  }]);\n\n  return TargetImpl;\n}();\n\nfunction createTargetFactory(spec) {\n  Object.keys(spec).forEach(function (key) {\n    (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drop target specification to only have ' + 'some of the following keys: %s. ' + 'Instead received a specification with an unexpected \"%s\" key. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', ALLOWED_SPEC_METHODS.join(', '), key);\n    (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof spec[key] === 'function', 'Expected %s in the drop target specification to be a function. ' + 'Instead received a specification with %s: %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', key, key, spec[key]);\n  });\n  return function createTarget(monitor, ref) {\n    return new TargetImpl(spec, monitor, ref);\n  };\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/decorators/createTargetFactory.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/decorators/decorateHandler.js":
/*!***********************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/decorators/decorateHandler.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"decorateHandler\": function() { return /* binding */ decorateHandler; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _react_dnd_shallowequal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @react-dnd/shallowequal */ \"./node_modules/@react-dnd/shallowequal/dist/shallowequal.esm.js\");\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! hoist-non-react-statics */ \"./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\");\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _common_DndContext__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../common/DndContext */ \"./node_modules/react-dnd/dist/esm/common/DndContext.js\");\n/* harmony import */ var _utils_js_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/js_utils */ \"./node_modules/react-dnd/dist/esm/utils/js_utils.js\");\n/* harmony import */ var _disposables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./disposables */ \"./node_modules/react-dnd/dist/esm/decorators/disposables.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils */ \"./node_modules/react-dnd/dist/esm/decorators/utils.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n\n\n\nfunction decorateHandler(_ref) {\n  var DecoratedComponent = _ref.DecoratedComponent,\n      createHandler = _ref.createHandler,\n      createMonitor = _ref.createMonitor,\n      createConnector = _ref.createConnector,\n      registerHandler = _ref.registerHandler,\n      containerDisplayName = _ref.containerDisplayName,\n      getType = _ref.getType,\n      collect = _ref.collect,\n      options = _ref.options;\n  var _options$arePropsEqua = options.arePropsEqual,\n      arePropsEqual = _options$arePropsEqua === void 0 ? _react_dnd_shallowequal__WEBPACK_IMPORTED_MODULE_1__.shallowEqual : _options$arePropsEqua;\n  var Decorated = DecoratedComponent;\n  var displayName = DecoratedComponent.displayName || DecoratedComponent.name || 'Component';\n\n  var DragDropContainer =\n  /** @class */\n  function () {\n    var DragDropContainer = /*#__PURE__*/function (_React$Component) {\n      _inherits(DragDropContainer, _React$Component);\n\n      var _super = _createSuper(DragDropContainer);\n\n      function DragDropContainer(props) {\n        var _this;\n\n        _classCallCheck(this, DragDropContainer);\n\n        _this = _super.call(this, props);\n        _this.decoratedRef = react__WEBPACK_IMPORTED_MODULE_0__.createRef();\n\n        _this.handleChange = function () {\n          var nextState = _this.getCurrentState();\n\n          if (!(0,_react_dnd_shallowequal__WEBPACK_IMPORTED_MODULE_1__.shallowEqual)(nextState, _this.state)) {\n            _this.setState(nextState);\n          }\n        };\n\n        _this.disposable = new _disposables__WEBPACK_IMPORTED_MODULE_4__.SerialDisposable();\n\n        _this.receiveProps(props);\n\n        _this.dispose();\n\n        return _this;\n      }\n\n      _createClass(DragDropContainer, [{\n        key: \"getHandlerId\",\n        value: function getHandlerId() {\n          return this.handlerId;\n        }\n      }, {\n        key: \"getDecoratedComponentInstance\",\n        value: function getDecoratedComponentInstance() {\n          (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_2__.invariant)(this.decoratedRef.current, 'In order to access an instance of the decorated component, it must either be a class component or use React.forwardRef()');\n          return this.decoratedRef.current;\n        }\n      }, {\n        key: \"shouldComponentUpdate\",\n        value: function shouldComponentUpdate(nextProps, nextState) {\n          return !arePropsEqual(nextProps, this.props) || !(0,_react_dnd_shallowequal__WEBPACK_IMPORTED_MODULE_1__.shallowEqual)(nextState, this.state);\n        }\n      }, {\n        key: \"componentDidMount\",\n        value: function componentDidMount() {\n          this.disposable = new _disposables__WEBPACK_IMPORTED_MODULE_4__.SerialDisposable();\n          this.currentType = undefined;\n          this.receiveProps(this.props);\n          this.handleChange();\n        }\n      }, {\n        key: \"componentDidUpdate\",\n        value: function componentDidUpdate(prevProps) {\n          if (!arePropsEqual(this.props, prevProps)) {\n            this.receiveProps(this.props);\n            this.handleChange();\n          }\n        }\n      }, {\n        key: \"componentWillUnmount\",\n        value: function componentWillUnmount() {\n          this.dispose();\n        }\n      }, {\n        key: \"receiveProps\",\n        value: function receiveProps(props) {\n          if (!this.handler) {\n            return;\n          }\n\n          this.handler.receiveProps(props);\n          this.receiveType(getType(props));\n        }\n      }, {\n        key: \"receiveType\",\n        value: function receiveType(type) {\n          if (!this.handlerMonitor || !this.manager || !this.handlerConnector) {\n            return;\n          }\n\n          if (type === this.currentType) {\n            return;\n          }\n\n          this.currentType = type;\n\n          var _registerHandler = registerHandler(type, this.handler, this.manager),\n              _registerHandler2 = _slicedToArray(_registerHandler, 2),\n              handlerId = _registerHandler2[0],\n              unregister = _registerHandler2[1];\n\n          this.handlerId = handlerId;\n          this.handlerMonitor.receiveHandlerId(handlerId);\n          this.handlerConnector.receiveHandlerId(handlerId);\n          var globalMonitor = this.manager.getMonitor();\n          var unsubscribe = globalMonitor.subscribeToStateChange(this.handleChange, {\n            handlerIds: [handlerId]\n          });\n          this.disposable.setDisposable(new _disposables__WEBPACK_IMPORTED_MODULE_4__.CompositeDisposable(new _disposables__WEBPACK_IMPORTED_MODULE_4__.Disposable(unsubscribe), new _disposables__WEBPACK_IMPORTED_MODULE_4__.Disposable(unregister)));\n        }\n      }, {\n        key: \"dispose\",\n        value: function dispose() {\n          this.disposable.dispose();\n\n          if (this.handlerConnector) {\n            this.handlerConnector.receiveHandlerId(null);\n          }\n        }\n      }, {\n        key: \"getCurrentState\",\n        value: function getCurrentState() {\n          if (!this.handlerConnector) {\n            return {};\n          }\n\n          var nextState = collect(this.handlerConnector.hooks, this.handlerMonitor, this.props);\n\n          if (true) {\n            (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_2__.invariant)((0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_5__.isPlainObject)(nextState), 'Expected `collect` specified as the second argument to ' + '%s for %s to return a plain object of props to inject. ' + 'Instead, received %s.', containerDisplayName, displayName, nextState);\n          }\n\n          return nextState;\n        }\n      }, {\n        key: \"render\",\n        value: function render() {\n          var _this2 = this;\n\n          return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_common_DndContext__WEBPACK_IMPORTED_MODULE_6__.DndContext.Consumer, null, function (_ref2) {\n            var dragDropManager = _ref2.dragDropManager;\n\n            _this2.receiveDragDropManager(dragDropManager);\n\n            if (typeof requestAnimationFrame !== 'undefined') {\n              requestAnimationFrame(function () {\n                var _this2$handlerConnect;\n\n                return (_this2$handlerConnect = _this2.handlerConnector) === null || _this2$handlerConnect === void 0 ? void 0 : _this2$handlerConnect.reconnect();\n              });\n            }\n\n            return react__WEBPACK_IMPORTED_MODULE_0__.createElement(Decorated, Object.assign({}, _this2.props, _this2.getCurrentState(), {\n              // NOTE: if Decorated is a Function Component, decoratedRef will not be populated unless it's a refforwarding component.\n              ref: (0,_utils__WEBPACK_IMPORTED_MODULE_7__.isRefable)(Decorated) ? _this2.decoratedRef : null\n            }));\n          });\n        }\n      }, {\n        key: \"receiveDragDropManager\",\n        value: function receiveDragDropManager(dragDropManager) {\n          if (this.manager !== undefined) {\n            return;\n          }\n\n          (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_2__.invariant)(dragDropManager !== undefined, 'Could not find the drag and drop manager in the context of %s. ' + 'Make sure to render a DndProvider component in your top-level component. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/troubleshooting#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n\n          if (dragDropManager === undefined) {\n            return;\n          }\n\n          this.manager = dragDropManager;\n          this.handlerMonitor = createMonitor(dragDropManager);\n          this.handlerConnector = createConnector(dragDropManager.getBackend());\n          this.handler = createHandler(this.handlerMonitor, this.decoratedRef);\n        }\n      }]);\n\n      return DragDropContainer;\n    }(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n\n    DragDropContainer.DecoratedComponent = DecoratedComponent;\n    DragDropContainer.displayName = \"\".concat(containerDisplayName, \"(\").concat(displayName, \")\");\n    return DragDropContainer;\n  }();\n\n  return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_3___default()(DragDropContainer, DecoratedComponent);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/decorators/decorateHandler.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/decorators/disposables.js":
/*!*******************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/decorators/disposables.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CompositeDisposable\": function() { return /* binding */ CompositeDisposable; },\n/* harmony export */   \"Disposable\": function() { return /* binding */ Disposable; },\n/* harmony export */   \"SerialDisposable\": function() { return /* binding */ SerialDisposable; }\n/* harmony export */ });\n/* harmony import */ var _utils_js_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/js_utils */ \"./node_modules/react-dnd/dist/esm/utils/js_utils.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/**\n * Provides a set of static methods for creating Disposables.\n * @param {Function} action Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n */\n\nvar Disposable =\n/** @class */\nfunction () {\n  var Disposable = /*#__PURE__*/function () {\n    function Disposable(action) {\n      _classCallCheck(this, Disposable);\n\n      this.isDisposed = false;\n      this.action = (0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_0__.isFunction)(action) ? action : _utils_js_utils__WEBPACK_IMPORTED_MODULE_0__.noop;\n    }\n    /**\n     * Validates whether the given object is a disposable\n     * @param {Object} Object to test whether it has a dispose method\n     * @returns {Boolean} true if a disposable object, else false.\n     */\n\n\n    _createClass(Disposable, [{\n      key: \"dispose\",\n\n      /** Performs the task of cleaning up resources. */\n      value: function dispose() {\n        if (!this.isDisposed) {\n          this.action();\n          this.isDisposed = true;\n        }\n      }\n    }], [{\n      key: \"isDisposable\",\n      value: function isDisposable(d) {\n        return Boolean(d && (0,_utils_js_utils__WEBPACK_IMPORTED_MODULE_0__.isFunction)(d.dispose));\n      }\n    }, {\n      key: \"_fixup\",\n      value: function _fixup(result) {\n        return Disposable.isDisposable(result) ? result : Disposable.empty;\n      }\n      /**\n       * Creates a disposable object that invokes the specified action when disposed.\n       * @param {Function} dispose Action to run during the first call to dispose.\n       * The action is guaranteed to be run at most once.\n       * @return {Disposable} The disposable object that runs the given action upon disposal.\n       */\n\n    }, {\n      key: \"create\",\n      value: function create(action) {\n        return new Disposable(action);\n      }\n    }]);\n\n    return Disposable;\n  }();\n  /**\n   * Gets the disposable that does nothing when disposed.\n   */\n\n\n  Disposable.empty = {\n    dispose: _utils_js_utils__WEBPACK_IMPORTED_MODULE_0__.noop\n  };\n  return Disposable;\n}();\n\n\n/**\n * Represents a group of disposable resources that are disposed together.\n * @constructor\n */\n\nvar CompositeDisposable = /*#__PURE__*/function () {\n  function CompositeDisposable() {\n    _classCallCheck(this, CompositeDisposable);\n\n    this.isDisposed = false;\n\n    for (var _len = arguments.length, disposables = new Array(_len), _key = 0; _key < _len; _key++) {\n      disposables[_key] = arguments[_key];\n    }\n\n    this.disposables = disposables;\n  }\n  /**\n   * Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed.\n   * @param {Any} item Disposable to add.\n   */\n\n\n  _createClass(CompositeDisposable, [{\n    key: \"add\",\n    value: function add(item) {\n      if (this.isDisposed) {\n        item.dispose();\n      } else {\n        this.disposables.push(item);\n      }\n    }\n    /**\n     * Removes and disposes the first occurrence of a disposable from the CompositeDisposable.\n     * @param {Any} item Disposable to remove.\n     * @returns {Boolean} true if found; false otherwise.\n     */\n\n  }, {\n    key: \"remove\",\n    value: function remove(item) {\n      var shouldDispose = false;\n\n      if (!this.isDisposed) {\n        var idx = this.disposables.indexOf(item);\n\n        if (idx !== -1) {\n          shouldDispose = true;\n          this.disposables.splice(idx, 1);\n          item.dispose();\n        }\n      }\n\n      return shouldDispose;\n    }\n    /**\n     *  Disposes all disposables in the group and removes them from the group but\n     *  does not dispose the CompositeDisposable.\n     */\n\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      if (!this.isDisposed) {\n        var len = this.disposables.length;\n        var currentDisposables = new Array(len);\n\n        for (var i = 0; i < len; i++) {\n          currentDisposables[i] = this.disposables[i];\n        }\n\n        this.disposables = [];\n\n        for (var _i = 0; _i < len; _i++) {\n          currentDisposables[_i].dispose();\n        }\n      }\n    }\n    /**\n     *  Disposes all disposables in the group and removes them from the group.\n     */\n\n  }, {\n    key: \"dispose\",\n    value: function dispose() {\n      if (!this.isDisposed) {\n        this.isDisposed = true;\n        var len = this.disposables.length;\n        var currentDisposables = new Array(len);\n\n        for (var i = 0; i < len; i++) {\n          currentDisposables[i] = this.disposables[i];\n        }\n\n        this.disposables = [];\n\n        for (var _i2 = 0; _i2 < len; _i2++) {\n          currentDisposables[_i2].dispose();\n        }\n      }\n    }\n  }]);\n\n  return CompositeDisposable;\n}();\n/**\n * Represents a disposable resource whose underlying disposable resource can\n * be replaced by another disposable resource, causing automatic disposal of\n * the previous underlying disposable resource.\n */\n\nvar SerialDisposable = /*#__PURE__*/function () {\n  function SerialDisposable() {\n    _classCallCheck(this, SerialDisposable);\n\n    this.isDisposed = false;\n  }\n  /**\n   * Gets the underlying disposable.\n   * @returns {Any} the underlying disposable.\n   */\n\n\n  _createClass(SerialDisposable, [{\n    key: \"getDisposable\",\n    value: function getDisposable() {\n      return this.current;\n    }\n  }, {\n    key: \"setDisposable\",\n    value: function setDisposable(value) {\n      var shouldDispose = this.isDisposed;\n\n      if (!shouldDispose) {\n        var old = this.current;\n        this.current = value;\n\n        if (old) {\n          old.dispose();\n        }\n      }\n\n      if (shouldDispose && value) {\n        value.dispose();\n      }\n    }\n    /** Performs the task of cleaning up resources. */\n\n  }, {\n    key: \"dispose\",\n    value: function dispose() {\n      if (!this.isDisposed) {\n        this.isDisposed = true;\n        var old = this.current;\n        this.current = undefined;\n\n        if (old) {\n          old.dispose();\n        }\n      }\n    }\n  }]);\n\n  return SerialDisposable;\n}();\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/decorators/disposables.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/decorators/index.js":
/*!*************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/decorators/index.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DragLayer\": function() { return /* reexport safe */ _DragLayer__WEBPACK_IMPORTED_MODULE_2__.DragLayer; },\n/* harmony export */   \"DragSource\": function() { return /* reexport safe */ _DragSource__WEBPACK_IMPORTED_MODULE_0__.DragSource; },\n/* harmony export */   \"DropTarget\": function() { return /* reexport safe */ _DropTarget__WEBPACK_IMPORTED_MODULE_1__.DropTarget; }\n/* harmony export */ });\n/* harmony import */ var _DragSource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DragSource */ \"./node_modules/react-dnd/dist/esm/decorators/DragSource.js\");\n/* harmony import */ var _DropTarget__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DropTarget */ \"./node_modules/react-dnd/dist/esm/decorators/DropTarget.js\");\n/* harmony import */ var _DragLayer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./DragLayer */ \"./node_modules/react-dnd/dist/esm/decorators/DragLayer.js\");\n/* harmony import */ var _interfaces__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./interfaces */ \"./node_modules/react-dnd/dist/esm/decorators/interfaces.js\");\n/* harmony import */ var _interfaces__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_interfaces__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _interfaces__WEBPACK_IMPORTED_MODULE_3__) if([\"default\",\"DragSource\",\"DropTarget\",\"DragLayer\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _interfaces__WEBPACK_IMPORTED_MODULE_3__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/decorators/index.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/decorators/interfaces.js":
/*!******************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/decorators/interfaces.js ***!
  \******************************************************************/
/***/ (function() {

eval("\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/decorators/interfaces.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/decorators/utils.js":
/*!*************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/decorators/utils.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"checkDecoratorArguments\": function() { return /* binding */ checkDecoratorArguments; },\n/* harmony export */   \"getDecoratedComponent\": function() { return /* binding */ getDecoratedComponent; },\n/* harmony export */   \"isClassComponent\": function() { return /* binding */ isClassComponent; },\n/* harmony export */   \"isRefForwardingComponent\": function() { return /* binding */ isRefForwardingComponent; },\n/* harmony export */   \"isRefable\": function() { return /* binding */ isRefable; }\n/* harmony export */ });\nfunction getDecoratedComponent(instanceRef) {\n  var currentRef = instanceRef.current;\n\n  if (currentRef == null) {\n    return null;\n  } else if (currentRef.decoratedRef) {\n    // go through the private field in decorateHandler to avoid the invariant hit\n    return currentRef.decoratedRef.current;\n  } else {\n    return currentRef;\n  }\n}\nfunction isClassComponent(Component) {\n  return Component && Component.prototype && typeof Component.prototype.render === 'function';\n}\nfunction isRefForwardingComponent(C) {\n  var _item$$$typeof;\n\n  var item = C;\n  return (item === null || item === void 0 ? void 0 : (_item$$$typeof = item.$$typeof) === null || _item$$$typeof === void 0 ? void 0 : _item$$$typeof.toString()) === 'Symbol(react.forward_ref)';\n}\nfunction isRefable(C) {\n  return isClassComponent(C) || isRefForwardingComponent(C);\n}\nfunction checkDecoratorArguments(functionName, signature) {\n  if (true) {\n    for (var i = 0; i < (arguments.length <= 2 ? 0 : arguments.length - 2); i++) {\n      var arg = i + 2 < 2 || arguments.length <= i + 2 ? undefined : arguments[i + 2];\n\n      if (arg && arg.prototype && arg.prototype.render) {\n        // eslint-disable-next-line no-console\n        console.error('You seem to be applying the arguments in the wrong order. ' + \"It should be \".concat(functionName, \"(\").concat(signature, \")(Component), not the other way around. \") + 'Read more: http://react-dnd.github.io/react-dnd/docs/troubleshooting#you-seem-to-be-applying-the-arguments-in-the-wrong-order');\n        return;\n      }\n    }\n  }\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/decorators/utils.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/hooks/index.js":
/*!********************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/hooks/index.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useDrag\": function() { return /* reexport safe */ _useDrag__WEBPACK_IMPORTED_MODULE_0__.useDrag; },\n/* harmony export */   \"useDragDropManager\": function() { return /* reexport safe */ _useDragDropManager__WEBPACK_IMPORTED_MODULE_3__.useDragDropManager; },\n/* harmony export */   \"useDragLayer\": function() { return /* reexport safe */ _useDragLayer__WEBPACK_IMPORTED_MODULE_2__.useDragLayer; },\n/* harmony export */   \"useDrop\": function() { return /* reexport safe */ _useDrop__WEBPACK_IMPORTED_MODULE_1__.useDrop; }\n/* harmony export */ });\n/* harmony import */ var _useDrag__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./useDrag */ \"./node_modules/react-dnd/dist/esm/hooks/useDrag.js\");\n/* harmony import */ var _useDrop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useDrop */ \"./node_modules/react-dnd/dist/esm/hooks/useDrop.js\");\n/* harmony import */ var _useDragLayer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./useDragLayer */ \"./node_modules/react-dnd/dist/esm/hooks/useDragLayer.js\");\n/* harmony import */ var _useDragDropManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./useDragDropManager */ \"./node_modules/react-dnd/dist/esm/hooks/useDragDropManager.js\");\n\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/hooks/index.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/hooks/internal/drag.js":
/*!****************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/hooks/internal/drag.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useDragHandler\": function() { return /* binding */ useDragHandler; },\n/* harmony export */   \"useDragSourceMonitor\": function() { return /* binding */ useDragSourceMonitor; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\n/* harmony import */ var _common_registration__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common/registration */ \"./node_modules/react-dnd/dist/esm/common/registration.js\");\n/* harmony import */ var _useDragDropManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../useDragDropManager */ \"./node_modules/react-dnd/dist/esm/hooks/useDragDropManager.js\");\n/* harmony import */ var _common_DragSourceMonitorImpl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/DragSourceMonitorImpl */ \"./node_modules/react-dnd/dist/esm/common/DragSourceMonitorImpl.js\");\n/* harmony import */ var _common_SourceConnector__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/SourceConnector */ \"./node_modules/react-dnd/dist/esm/common/SourceConnector.js\");\n/* harmony import */ var _useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./useIsomorphicLayoutEffect */ \"./node_modules/react-dnd/dist/esm/hooks/internal/useIsomorphicLayoutEffect.js\");\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n\n\n\n\n\nfunction useDragSourceMonitor() {\n  var manager = (0,_useDragDropManager__WEBPACK_IMPORTED_MODULE_2__.useDragDropManager)();\n  var monitor = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return new _common_DragSourceMonitorImpl__WEBPACK_IMPORTED_MODULE_3__.DragSourceMonitorImpl(manager);\n  }, [manager]);\n  var connector = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return new _common_SourceConnector__WEBPACK_IMPORTED_MODULE_4__.SourceConnector(manager.getBackend());\n  }, [manager]);\n  return [monitor, connector];\n}\nfunction useDragHandler(spec, monitor, connector) {\n  var manager = (0,_useDragDropManager__WEBPACK_IMPORTED_MODULE_2__.useDragDropManager)();\n  var handler = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return {\n      beginDrag: function beginDrag() {\n        var _spec$current = spec.current,\n            begin = _spec$current.begin,\n            item = _spec$current.item;\n\n        if (begin) {\n          var beginResult = begin(monitor);\n          (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(beginResult == null || _typeof(beginResult) === 'object', 'dragSpec.begin() must either return an object, undefined, or null');\n          return beginResult || item || {};\n        }\n\n        return item || {};\n      },\n      canDrag: function canDrag() {\n        if (typeof spec.current.canDrag === 'boolean') {\n          return spec.current.canDrag;\n        } else if (typeof spec.current.canDrag === 'function') {\n          return spec.current.canDrag(monitor);\n        } else {\n          return true;\n        }\n      },\n      isDragging: function isDragging(globalMonitor, target) {\n        var isDragging = spec.current.isDragging;\n        return isDragging ? isDragging(monitor) : target === globalMonitor.getSourceId();\n      },\n      endDrag: function endDrag() {\n        var end = spec.current.end;\n\n        if (end) {\n          end(monitor.getItem(), monitor);\n        }\n\n        connector.reconnect();\n      }\n    };\n  }, []);\n  (0,_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_5__.useIsomorphicLayoutEffect)(function registerHandler() {\n    var _registerSource = (0,_common_registration__WEBPACK_IMPORTED_MODULE_6__.registerSource)(spec.current.item.type, handler, manager),\n        _registerSource2 = _slicedToArray(_registerSource, 2),\n        handlerId = _registerSource2[0],\n        unregister = _registerSource2[1];\n\n    monitor.receiveHandlerId(handlerId);\n    connector.receiveHandlerId(handlerId);\n    return unregister;\n  }, []);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/hooks/internal/drag.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/hooks/internal/drop.js":
/*!****************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/hooks/internal/drop.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useDropHandler\": function() { return /* binding */ useDropHandler; },\n/* harmony export */   \"useDropTargetMonitor\": function() { return /* binding */ useDropTargetMonitor; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _common_registration__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/registration */ \"./node_modules/react-dnd/dist/esm/common/registration.js\");\n/* harmony import */ var _useDragDropManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../useDragDropManager */ \"./node_modules/react-dnd/dist/esm/hooks/useDragDropManager.js\");\n/* harmony import */ var _common_TargetConnector__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/TargetConnector */ \"./node_modules/react-dnd/dist/esm/common/TargetConnector.js\");\n/* harmony import */ var _common_DropTargetMonitorImpl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/DropTargetMonitorImpl */ \"./node_modules/react-dnd/dist/esm/common/DropTargetMonitorImpl.js\");\n/* harmony import */ var _useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./useIsomorphicLayoutEffect */ \"./node_modules/react-dnd/dist/esm/hooks/internal/useIsomorphicLayoutEffect.js\");\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\nfunction useDropTargetMonitor() {\n  var manager = (0,_useDragDropManager__WEBPACK_IMPORTED_MODULE_1__.useDragDropManager)();\n  var monitor = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return new _common_DropTargetMonitorImpl__WEBPACK_IMPORTED_MODULE_2__.DropTargetMonitorImpl(manager);\n  }, [manager]);\n  var connector = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return new _common_TargetConnector__WEBPACK_IMPORTED_MODULE_3__.TargetConnector(manager.getBackend());\n  }, [manager]);\n  return [monitor, connector];\n}\nfunction useDropHandler(spec, monitor, connector) {\n  var manager = (0,_useDragDropManager__WEBPACK_IMPORTED_MODULE_1__.useDragDropManager)();\n  var handler = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return {\n      canDrop: function canDrop() {\n        var canDrop = spec.current.canDrop;\n        return canDrop ? canDrop(monitor.getItem(), monitor) : true;\n      },\n      hover: function hover() {\n        var hover = spec.current.hover;\n\n        if (hover) {\n          hover(monitor.getItem(), monitor);\n        }\n      },\n      drop: function drop() {\n        var drop = spec.current.drop;\n\n        if (drop) {\n          return drop(monitor.getItem(), monitor);\n        }\n      }\n    };\n  }, [monitor]);\n  (0,_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_4__.useIsomorphicLayoutEffect)(function registerHandler() {\n    var _registerTarget = (0,_common_registration__WEBPACK_IMPORTED_MODULE_5__.registerTarget)(spec.current.accept, handler, manager),\n        _registerTarget2 = _slicedToArray(_registerTarget, 2),\n        handlerId = _registerTarget2[0],\n        unregister = _registerTarget2[1];\n\n    monitor.receiveHandlerId(handlerId);\n    connector.receiveHandlerId(handlerId);\n    return unregister;\n  }, [monitor, connector]);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/hooks/internal/drop.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/hooks/internal/useCollector.js":
/*!************************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/hooks/internal/useCollector.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useCollector\": function() { return /* binding */ useCollector; }\n/* harmony export */ });\n/* harmony import */ var _react_dnd_shallowequal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @react-dnd/shallowequal */ \"./node_modules/@react-dnd/shallowequal/dist/shallowequal.esm.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./useIsomorphicLayoutEffect */ \"./node_modules/react-dnd/dist/esm/hooks/internal/useIsomorphicLayoutEffect.js\");\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n/**\n *\n * @param monitor The monitor to collect state from\n * @param collect The collecting function\n * @param onUpdate A method to invoke when updates occur\n */\n\nfunction useCollector(monitor, collect, onUpdate) {\n  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(function () {\n    return collect(monitor);\n  }),\n      _useState2 = _slicedToArray(_useState, 2),\n      collected = _useState2[0],\n      setCollected = _useState2[1];\n\n  var updateCollected = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(function () {\n    var nextValue = collect(monitor);\n\n    if (!(0,_react_dnd_shallowequal__WEBPACK_IMPORTED_MODULE_0__.shallowEqual)(collected, nextValue)) {\n      setCollected(nextValue);\n\n      if (onUpdate) {\n        onUpdate();\n      }\n    }\n  }, [collected, monitor, onUpdate]); // update the collected properties after the first render\n  // and the components are attached to dnd-core\n\n  (0,_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_2__.useIsomorphicLayoutEffect)(updateCollected, []);\n  return [collected, updateCollected];\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/hooks/internal/useCollector.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/hooks/internal/useIsomorphicLayoutEffect.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/hooks/internal/useIsomorphicLayoutEffect.js ***!
  \*************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useIsomorphicLayoutEffect\": function() { return /* binding */ useIsomorphicLayoutEffect; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n // suppress the useLayoutEffect warning on server side.\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : react__WEBPACK_IMPORTED_MODULE_0__.useEffect;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/hooks/internal/useIsomorphicLayoutEffect.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/hooks/internal/useMonitorOutput.js":
/*!****************************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/hooks/internal/useMonitorOutput.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useMonitorOutput\": function() { return /* binding */ useMonitorOutput; }\n/* harmony export */ });\n/* harmony import */ var _useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useIsomorphicLayoutEffect */ \"./node_modules/react-dnd/dist/esm/hooks/internal/useIsomorphicLayoutEffect.js\");\n/* harmony import */ var _useCollector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./useCollector */ \"./node_modules/react-dnd/dist/esm/hooks/internal/useCollector.js\");\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\nfunction useMonitorOutput(monitor, collect, onCollect) {\n  var _useCollector = (0,_useCollector__WEBPACK_IMPORTED_MODULE_0__.useCollector)(monitor, collect, onCollect),\n      _useCollector2 = _slicedToArray(_useCollector, 2),\n      collected = _useCollector2[0],\n      updateCollected = _useCollector2[1];\n\n  (0,_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_1__.useIsomorphicLayoutEffect)(function subscribeToMonitorStateChange() {\n    var handlerId = monitor.getHandlerId();\n\n    if (handlerId == null) {\n      return undefined;\n    }\n\n    return monitor.subscribeToStateChange(updateCollected, {\n      handlerIds: [handlerId]\n    });\n  }, [monitor, updateCollected]);\n  return collected;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/hooks/internal/useMonitorOutput.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/hooks/useDrag.js":
/*!**********************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/hooks/useDrag.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useDrag\": function() { return /* binding */ useDrag; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\n/* harmony import */ var _internal_useMonitorOutput__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/useMonitorOutput */ \"./node_modules/react-dnd/dist/esm/hooks/internal/useMonitorOutput.js\");\n/* harmony import */ var _internal_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/useIsomorphicLayoutEffect */ \"./node_modules/react-dnd/dist/esm/hooks/internal/useIsomorphicLayoutEffect.js\");\n/* harmony import */ var _internal_drag__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/drag */ \"./node_modules/react-dnd/dist/esm/hooks/internal/drag.js\");\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n/**\n * useDragSource hook\n * @param sourceSpec The drag source specification *\n */\n\nfunction useDrag(spec) {\n  var specRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(spec);\n  specRef.current = spec; // TODO: wire options into createSourceConnector\n\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(spec.item != null, 'item must be defined');\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(spec.item.type != null, 'item type must be defined');\n\n  var _useDragSourceMonitor = (0,_internal_drag__WEBPACK_IMPORTED_MODULE_2__.useDragSourceMonitor)(),\n      _useDragSourceMonitor2 = _slicedToArray(_useDragSourceMonitor, 2),\n      monitor = _useDragSourceMonitor2[0],\n      connector = _useDragSourceMonitor2[1];\n\n  (0,_internal_drag__WEBPACK_IMPORTED_MODULE_2__.useDragHandler)(specRef, monitor, connector);\n  var result = (0,_internal_useMonitorOutput__WEBPACK_IMPORTED_MODULE_3__.useMonitorOutput)(monitor, specRef.current.collect || function () {\n    return {};\n  }, function () {\n    return connector.reconnect();\n  });\n  var connectDragSource = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return connector.hooks.dragSource();\n  }, [connector]);\n  var connectDragPreview = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return connector.hooks.dragPreview();\n  }, [connector]);\n  (0,_internal_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_4__.useIsomorphicLayoutEffect)(function () {\n    connector.dragSourceOptions = specRef.current.options || null;\n    connector.reconnect();\n  }, [connector]);\n  (0,_internal_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_4__.useIsomorphicLayoutEffect)(function () {\n    connector.dragPreviewOptions = specRef.current.previewOptions || null;\n    connector.reconnect();\n  }, [connector]);\n  return [result, connectDragSource, connectDragPreview];\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/hooks/useDrag.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/hooks/useDragDropManager.js":
/*!*********************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/hooks/useDragDropManager.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useDragDropManager\": function() { return /* binding */ useDragDropManager; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\n/* harmony import */ var _common_DndContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/DndContext */ \"./node_modules/react-dnd/dist/esm/common/DndContext.js\");\n\n\n\n/**\n * A hook to retrieve the DragDropManager from Context\n */\n\nfunction useDragDropManager() {\n  var _useContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_common_DndContext__WEBPACK_IMPORTED_MODULE_2__.DndContext),\n      dragDropManager = _useContext.dragDropManager;\n\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(dragDropManager != null, 'Expected drag drop context');\n  return dragDropManager;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/hooks/useDragDropManager.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/hooks/useDragLayer.js":
/*!***************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/hooks/useDragLayer.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useDragLayer\": function() { return /* binding */ useDragLayer; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _useDragDropManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useDragDropManager */ \"./node_modules/react-dnd/dist/esm/hooks/useDragDropManager.js\");\n/* harmony import */ var _internal_useCollector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/useCollector */ \"./node_modules/react-dnd/dist/esm/hooks/internal/useCollector.js\");\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n/**\n * useDragLayer Hook\n * @param collector The property collector\n */\n\nfunction useDragLayer(collect) {\n  var dragDropManager = (0,_useDragDropManager__WEBPACK_IMPORTED_MODULE_1__.useDragDropManager)();\n  var monitor = dragDropManager.getMonitor();\n\n  var _useCollector = (0,_internal_useCollector__WEBPACK_IMPORTED_MODULE_2__.useCollector)(monitor, collect),\n      _useCollector2 = _slicedToArray(_useCollector, 2),\n      collected = _useCollector2[0],\n      updateCollected = _useCollector2[1];\n\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n    return monitor.subscribeToOffsetChange(updateCollected);\n  });\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n    return monitor.subscribeToStateChange(updateCollected);\n  });\n  return collected;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/hooks/useDragLayer.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/hooks/useDrop.js":
/*!**********************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/hooks/useDrop.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useDrop\": function() { return /* binding */ useDrop; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\n/* harmony import */ var _internal_useMonitorOutput__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/useMonitorOutput */ \"./node_modules/react-dnd/dist/esm/hooks/internal/useMonitorOutput.js\");\n/* harmony import */ var _internal_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/useIsomorphicLayoutEffect */ \"./node_modules/react-dnd/dist/esm/hooks/internal/useIsomorphicLayoutEffect.js\");\n/* harmony import */ var _internal_drop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/drop */ \"./node_modules/react-dnd/dist/esm/hooks/internal/drop.js\");\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n/**\n * useDropTarget Hook\n * @param spec The drop target specification\n */\n\nfunction useDrop(spec) {\n  var specRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(spec);\n  specRef.current = spec;\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(spec.accept != null, 'accept must be defined');\n\n  var _useDropTargetMonitor = (0,_internal_drop__WEBPACK_IMPORTED_MODULE_2__.useDropTargetMonitor)(),\n      _useDropTargetMonitor2 = _slicedToArray(_useDropTargetMonitor, 2),\n      monitor = _useDropTargetMonitor2[0],\n      connector = _useDropTargetMonitor2[1];\n\n  (0,_internal_drop__WEBPACK_IMPORTED_MODULE_2__.useDropHandler)(specRef, monitor, connector);\n  var result = (0,_internal_useMonitorOutput__WEBPACK_IMPORTED_MODULE_3__.useMonitorOutput)(monitor, specRef.current.collect || function () {\n    return {};\n  }, function () {\n    return connector.reconnect();\n  });\n  var connectDropTarget = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n    return connector.hooks.dropTarget();\n  }, [connector]);\n  (0,_internal_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_4__.useIsomorphicLayoutEffect)(function () {\n    connector.dropTargetOptions = spec.options || null;\n    connector.reconnect();\n  }, [spec.options]);\n  return [result, connectDropTarget];\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/hooks/useDrop.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/index.js":
/*!**************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/index.js ***!
  \**************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DndContext\": function() { return /* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_0__.DndContext; },\n/* harmony export */   \"DndProvider\": function() { return /* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_0__.DndProvider; },\n/* harmony export */   \"DragPreviewImage\": function() { return /* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_0__.DragPreviewImage; },\n/* harmony export */   \"createDndContext\": function() { return /* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_0__.createDndContext; },\n/* harmony export */   \"useDrag\": function() { return /* reexport safe */ _hooks__WEBPACK_IMPORTED_MODULE_2__.useDrag; },\n/* harmony export */   \"useDragDropManager\": function() { return /* reexport safe */ _hooks__WEBPACK_IMPORTED_MODULE_2__.useDragDropManager; },\n/* harmony export */   \"useDragLayer\": function() { return /* reexport safe */ _hooks__WEBPACK_IMPORTED_MODULE_2__.useDragLayer; },\n/* harmony export */   \"useDrop\": function() { return /* reexport safe */ _hooks__WEBPACK_IMPORTED_MODULE_2__.useDrop; }\n/* harmony export */ });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common */ \"./node_modules/react-dnd/dist/esm/common/index.js\");\n/* harmony import */ var _interfaces__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./interfaces */ \"./node_modules/react-dnd/dist/esm/interfaces/index.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _interfaces__WEBPACK_IMPORTED_MODULE_1__) if([\"default\",\"DndContext\",\"DndProvider\",\"DragPreviewImage\",\"createDndContext\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _interfaces__WEBPACK_IMPORTED_MODULE_1__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hooks */ \"./node_modules/react-dnd/dist/esm/hooks/index.js\");\n/* harmony import */ var _decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./decorators */ \"./node_modules/react-dnd/dist/esm/decorators/index.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _decorators__WEBPACK_IMPORTED_MODULE_3__) if([\"default\",\"DndContext\",\"DndProvider\",\"DragPreviewImage\",\"createDndContext\",\"useDrag\",\"useDragDropManager\",\"useDragLayer\",\"useDrop\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _decorators__WEBPACK_IMPORTED_MODULE_3__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/index.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/interfaces/connectors.js":
/*!******************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/interfaces/connectors.js ***!
  \******************************************************************/
/***/ (function() {

eval("\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/interfaces/connectors.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/interfaces/hooksApi.js":
/*!****************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/interfaces/hooksApi.js ***!
  \****************************************************************/
/***/ (function() {

eval("\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/interfaces/hooksApi.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/interfaces/index.js":
/*!*************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/interfaces/index.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _monitors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./monitors */ \"./node_modules/react-dnd/dist/esm/interfaces/monitors.js\");\n/* harmony import */ var _monitors__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_monitors__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _monitors__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _monitors__WEBPACK_IMPORTED_MODULE_0__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _hooksApi__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hooksApi */ \"./node_modules/react-dnd/dist/esm/interfaces/hooksApi.js\");\n/* harmony import */ var _hooksApi__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_hooksApi__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _hooksApi__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _hooksApi__WEBPACK_IMPORTED_MODULE_1__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _options__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./options */ \"./node_modules/react-dnd/dist/esm/interfaces/options.js\");\n/* harmony import */ var _options__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_options__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _options__WEBPACK_IMPORTED_MODULE_2__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _options__WEBPACK_IMPORTED_MODULE_2__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _connectors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./connectors */ \"./node_modules/react-dnd/dist/esm/interfaces/connectors.js\");\n/* harmony import */ var _connectors__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_connectors__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _connectors__WEBPACK_IMPORTED_MODULE_3__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _connectors__WEBPACK_IMPORTED_MODULE_3__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/interfaces/index.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/interfaces/monitors.js":
/*!****************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/interfaces/monitors.js ***!
  \****************************************************************/
/***/ (function() {

eval("\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/interfaces/monitors.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/interfaces/options.js":
/*!***************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/interfaces/options.js ***!
  \***************************************************************/
/***/ (function() {

eval("\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/interfaces/options.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/utils/cloneWithRef.js":
/*!***************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/utils/cloneWithRef.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"cloneWithRef\": function() { return /* binding */ cloneWithRef; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _react_dnd_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @react-dnd/invariant */ \"./node_modules/@react-dnd/invariant/dist/invariant.esm.js\");\n\n\n\nfunction setRef(ref, node) {\n  if (typeof ref === 'function') {\n    ref(node);\n  } else {\n    ref.current = node;\n  }\n}\n\nfunction cloneWithRef(element, newRef) {\n  var previousRef = element.ref;\n  (0,_react_dnd_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(typeof previousRef !== 'string', 'Cannot connect React DnD to an element with an existing string ref. ' + 'Please convert it to use a callback ref instead, or wrap it into a <span> or <div>. ' + 'Read more: https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute');\n\n  if (!previousRef) {\n    // When there is no ref on the element, use the new ref directly\n    return (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(element, {\n      ref: newRef\n    });\n  } else {\n    return (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(element, {\n      ref: function ref(node) {\n        setRef(previousRef, node);\n        setRef(newRef, node);\n      }\n    });\n  }\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/utils/cloneWithRef.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/utils/isRef.js":
/*!********************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/utils/isRef.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isRef\": function() { return /* binding */ isRef; }\n/* harmony export */ });\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction isRef(obj) {\n  return (// eslint-disable-next-line no-prototype-builtins\n    obj !== null && _typeof(obj) === 'object' && Object.prototype.hasOwnProperty.call(obj, 'current')\n  );\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/utils/isRef.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/utils/isValidType.js":
/*!**************************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/utils/isValidType.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isValidType\": function() { return /* binding */ isValidType; }\n/* harmony export */ });\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction isValidType(type, allowArray) {\n  return typeof type === 'string' || _typeof(type) === 'symbol' || !!allowArray && Array.isArray(type) && type.every(function (t) {\n    return isValidType(t, false);\n  });\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/utils/isValidType.js?");

/***/ }),

/***/ "./node_modules/react-dnd/dist/esm/utils/js_utils.js":
/*!***********************************************************!*\
  !*** ./node_modules/react-dnd/dist/esm/utils/js_utils.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isFunction\": function() { return /* binding */ isFunction; },\n/* harmony export */   \"isPlainObject\": function() { return /* binding */ isPlainObject; },\n/* harmony export */   \"noop\": function() { return /* binding */ noop; }\n/* harmony export */ });\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// cheap lodash replacements\nfunction isFunction(input) {\n  return typeof input === 'function';\n}\nfunction noop() {// noop\n}\n\nfunction isObjectLike(input) {\n  return _typeof(input) === 'object' && input !== null;\n}\n\nfunction isPlainObject(input) {\n  if (!isObjectLike(input)) {\n    return false;\n  }\n\n  if (Object.getPrototypeOf(input) === null) {\n    return true;\n  }\n\n  var proto = input;\n\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n\n  return Object.getPrototypeOf(input) === proto;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dnd/dist/esm/utils/js_utils.js?");

/***/ }),

/***/ "./node_modules/react-dom/cjs/react-dom.development.js":
/*!*************************************************************!*\
  !*** ./node_modules/react-dom/cjs/react-dom.development.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("/**\n * @license React\n * react-dom.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n  (function() {\n\n          'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n          var React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\nvar Scheduler = __webpack_require__(/*! scheduler */ \"./node_modules/scheduler/index.js\");\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nvar suppressWarning = false;\nfunction setSuppressWarning(newSuppressWarning) {\n  {\n    suppressWarning = newSuppressWarning;\n  }\n} // In DEV, calls to console.warn and console.error get replaced\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n\nfunction warn(format) {\n  {\n    if (!suppressWarning) {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      printWarning('warn', format, args);\n    }\n  }\n}\nfunction error(format) {\n  {\n    if (!suppressWarning) {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\nvar FunctionComponent = 0;\nvar ClassComponent = 1;\nvar IndeterminateComponent = 2; // Before we know whether it is function or class\n\nvar HostRoot = 3; // Root of a host tree. Could be nested inside another node.\n\nvar HostPortal = 4; // A subtree. Could be an entry point to a different renderer.\n\nvar HostComponent = 5;\nvar HostText = 6;\nvar Fragment = 7;\nvar Mode = 8;\nvar ContextConsumer = 9;\nvar ContextProvider = 10;\nvar ForwardRef = 11;\nvar Profiler = 12;\nvar SuspenseComponent = 13;\nvar MemoComponent = 14;\nvar SimpleMemoComponent = 15;\nvar LazyComponent = 16;\nvar IncompleteClassComponent = 17;\nvar DehydratedFragment = 18;\nvar SuspenseListComponent = 19;\nvar ScopeComponent = 21;\nvar OffscreenComponent = 22;\nvar LegacyHiddenComponent = 23;\nvar CacheComponent = 24;\nvar TracingMarkerComponent = 25;\n\n// -----------------------------------------------------------------------------\n\nvar enableClientRenderFallbackOnTextMismatch = true; // TODO: Need to review this code one more time before landing\n// the react-reconciler package.\n\nvar enableNewReconciler = false; // Support legacy Primer support on internal FB www\n\nvar enableLazyContextPropagation = false; // FB-only usage. The new API has different semantics.\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n\nvar enableSuspenseAvoidThisFallback = false; // Enables unstable_avoidThisFallback feature in Fizz\n// React DOM Chopping Block\n//\n// Similar to main Chopping Block but only flags related to React DOM. These are\n// grouped because we will likely batch all of them into a single major release.\n// -----------------------------------------------------------------------------\n// Disable support for comment nodes as React DOM containers. Already disabled\n// in open source, but www codebase still relies on it. Need to remove.\n\nvar disableCommentsAsDOMContainers = true; // Disable javascript: URL strings in href for XSS protection.\n// and client rendering, mostly to allow JSX attributes to apply to the custom\n// element's object properties instead of only HTML attributes.\n// https://github.com/facebook/react/issues/11347\n\nvar enableCustomElementPropertySupport = false; // Disables children for <textarea> elements\nvar warnAboutStringRefs = false; // -----------------------------------------------------------------------------\n// Debugging and DevTools\n// -----------------------------------------------------------------------------\n// Adds user timing marks for e.g. state updates, suspense, and work loop stuff,\n// for an experimental timeline tool.\n\nvar enableSchedulingProfiler = true; // Helps identify side effects in render-phase lifecycle hooks and setState\n\nvar enableProfilerTimer = true; // Record durations for commit and passive effects phases.\n\nvar enableProfilerCommitHooks = true; // Phase param passed to onRender callback differentiates between an \"update\" and a \"cascading-update\".\n\nvar allNativeEvents = new Set();\n/**\n * Mapping from registration name to event name\n */\n\n\nvar registrationNameDependencies = {};\n/**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in true.\n * @type {Object}\n */\n\nvar possibleRegistrationNames =  {} ; // Trust the developer to only use possibleRegistrationNames in true\n\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n  registerDirectEvent(registrationName, dependencies);\n  registerDirectEvent(registrationName + 'Capture', dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n  {\n    if (registrationNameDependencies[registrationName]) {\n      error('EventRegistry: More than one plugin attempted to publish the same ' + 'registration name, `%s`.', registrationName);\n    }\n  }\n\n  registrationNameDependencies[registrationName] = dependencies;\n\n  {\n    var lowerCasedName = registrationName.toLowerCase();\n    possibleRegistrationNames[lowerCasedName] = registrationName;\n\n    if (registrationName === 'onDoubleClick') {\n      possibleRegistrationNames.ondblclick = registrationName;\n    }\n  }\n\n  for (var i = 0; i < dependencies.length; i++) {\n    allNativeEvents.add(dependencies[i]);\n  }\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n  {\n    // toStringTag is needed for namespaced types like Temporal.Instant\n    var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n    var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n    return type;\n  }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n  {\n    try {\n      testStringCoercion(value);\n      return false;\n    } catch (e) {\n      return true;\n    }\n  }\n}\n\nfunction testStringCoercion(value) {\n  // If you ended up here by following an exception call stack, here's what's\n  // happened: you supplied an object or symbol value to React (as a prop, key,\n  // DOM attribute, CSS property, string ref, etc.) and when React tried to\n  // coerce it to a string using `'' + value`, an exception was thrown.\n  //\n  // The most common types that will cause this exception are `Symbol` instances\n  // and Temporal objects like `Temporal.Instant`. But any object that has a\n  // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n  // exception. (Library authors do this to prevent users from using built-in\n  // numeric operators like `+` or comparison operators like `>=` because custom\n  // methods are needed to perform accurate arithmetic or comparison.)\n  //\n  // To fix the problem, coerce this object or symbol value to a string before\n  // passing it to React. The most reliable way is usually `String(value)`.\n  //\n  // To find which value is throwing, check the browser or debugger console.\n  // Before this exception was thrown, there should be `console.error` output\n  // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n  // problem and how that type was used: key, atrribute, input value prop, etc.\n  // In most cases, this console output also shows the component and its\n  // ancestor components where the exception happened.\n  //\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\n\nfunction checkAttributeStringCoercion(value, attributeName) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided `%s` attribute is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', attributeName, typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkKeyStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkPropStringCoercion(value, propName) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided `%s` prop is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', propName, typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkCSSPropertyStringCoercion(value, propName) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided `%s` CSS property is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', propName, typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkHtmlStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided HTML markup uses a value of unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkFormFieldValueStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('Form field values (value, checked, defaultValue, or defaultChecked props)' + ' must be strings, not %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\n\n// A reserved attribute.\n// It is handled by React separately and shouldn't be written to the DOM.\nvar RESERVED = 0; // A simple string attribute.\n// Attributes that aren't in the filter are presumed to have this type.\n\nvar STRING = 1; // A string attribute that accepts booleans in React. In HTML, these are called\n// \"enumerated\" attributes with \"true\" and \"false\" as possible values.\n// When true, it should be set to a \"true\" string.\n// When false, it should be set to a \"false\" string.\n\nvar BOOLEANISH_STRING = 2; // A real boolean attribute.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n\nvar BOOLEAN = 3; // An attribute that can be used as a flag as well as with a value.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n// For any other value, should be present with that value.\n\nvar OVERLOADED_BOOLEAN = 4; // An attribute that must be numeric or parse as a numeric.\n// When falsy, it should be removed.\n\nvar NUMERIC = 5; // An attribute that must be positive numeric or parse as a positive numeric.\n// When falsy, it should be removed.\n\nvar POSITIVE_NUMERIC = 6;\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = \":A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n/* eslint-enable max-len */\n\nvar ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + \"\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n  if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) {\n    return true;\n  }\n\n  if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) {\n    return false;\n  }\n\n  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n    validatedAttributeNameCache[attributeName] = true;\n    return true;\n  }\n\n  illegalAttributeNameCache[attributeName] = true;\n\n  {\n    error('Invalid attribute name: `%s`', attributeName);\n  }\n\n  return false;\n}\nfunction shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag) {\n  if (propertyInfo !== null) {\n    return propertyInfo.type === RESERVED;\n  }\n\n  if (isCustomComponentTag) {\n    return false;\n  }\n\n  if (name.length > 2 && (name[0] === 'o' || name[0] === 'O') && (name[1] === 'n' || name[1] === 'N')) {\n    return true;\n  }\n\n  return false;\n}\nfunction shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag) {\n  if (propertyInfo !== null && propertyInfo.type === RESERVED) {\n    return false;\n  }\n\n  switch (typeof value) {\n    case 'function': // $FlowIssue symbol is perfectly valid here\n\n    case 'symbol':\n      // eslint-disable-line\n      return true;\n\n    case 'boolean':\n      {\n        if (isCustomComponentTag) {\n          return false;\n        }\n\n        if (propertyInfo !== null) {\n          return !propertyInfo.acceptsBooleans;\n        } else {\n          var prefix = name.toLowerCase().slice(0, 5);\n          return prefix !== 'data-' && prefix !== 'aria-';\n        }\n      }\n\n    default:\n      return false;\n  }\n}\nfunction shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag) {\n  if (value === null || typeof value === 'undefined') {\n    return true;\n  }\n\n  if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag)) {\n    return true;\n  }\n\n  if (isCustomComponentTag) {\n\n    return false;\n  }\n\n  if (propertyInfo !== null) {\n\n    switch (propertyInfo.type) {\n      case BOOLEAN:\n        return !value;\n\n      case OVERLOADED_BOOLEAN:\n        return value === false;\n\n      case NUMERIC:\n        return isNaN(value);\n\n      case POSITIVE_NUMERIC:\n        return isNaN(value) || value < 1;\n    }\n  }\n\n  return false;\n}\nfunction getPropertyInfo(name) {\n  return properties.hasOwnProperty(name) ? properties[name] : null;\n}\n\nfunction PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL, removeEmptyString) {\n  this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN;\n  this.attributeName = attributeName;\n  this.attributeNamespace = attributeNamespace;\n  this.mustUseProperty = mustUseProperty;\n  this.propertyName = name;\n  this.type = type;\n  this.sanitizeURL = sanitizeURL;\n  this.removeEmptyString = removeEmptyString;\n} // When adding attributes to this list, be sure to also add them to\n// the `possibleStandardNames` module to ensure casing and incorrect\n// name warnings.\n\n\nvar properties = {}; // These props are reserved by React. They shouldn't be written to the DOM.\n\nvar reservedProps = ['children', 'dangerouslySetInnerHTML', // TODO: This prevents the assignment of defaultValue to regular\n// elements (not just inputs). Now that ReactDOMInput assigns to the\n// defaultValue property -- do we need this?\n'defaultValue', 'defaultChecked', 'innerHTML', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'style'];\n\nreservedProps.forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, RESERVED, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // A few React string attributes have a different name.\n// This is a mapping from React prop names to the attribute names.\n\n[['acceptCharset', 'accept-charset'], ['className', 'class'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv']].forEach(function (_ref) {\n  var name = _ref[0],\n      attributeName = _ref[1];\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are \"enumerated\" HTML attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n\n['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are \"enumerated\" SVG attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n// Since these are SVG attributes, their attribute names are case-sensitive.\n\n['autoReverse', 'externalResourcesRequired', 'focusable', 'preserveAlpha'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML boolean attributes.\n\n['allowFullScreen', 'async', // Note: there is a special case that prevents it from being written to the DOM\n// on the client side because the browsers are inconsistent. Instead we call focus().\n'autoFocus', 'autoPlay', 'controls', 'default', 'defer', 'disabled', 'disablePictureInPicture', 'disableRemotePlayback', 'formNoValidate', 'hidden', 'loop', 'noModule', 'noValidate', 'open', 'playsInline', 'readOnly', 'required', 'reversed', 'scoped', 'seamless', // Microdata\n'itemScope'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are the few React props that we set as DOM properties\n// rather than attributes. These are all booleans.\n\n['checked', // Note: `option.selected` is not updated if `select.multiple` is\n// disabled with `removeAttribute`. We have special logic for handling this.\n'multiple', 'muted', 'selected' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that are \"overloaded booleans\": they behave like\n// booleans, but can also accept a string value.\n\n['capture', 'download' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that must be positive numbers.\n\n['cols', 'rows', 'size', 'span' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that must be numbers.\n\n['rowSpan', 'start'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, NUMERIC, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n});\nvar CAMELIZE = /[\\-\\:]([a-z])/g;\n\nvar capitalize = function (token) {\n  return token[1].toUpperCase();\n}; // This is a list of all SVG attributes that need special casing, namespacing,\n// or boolean value assignment. Regular attributes that just accept strings\n// and have the same names are omitted, just like in the HTML attribute filter.\n// Some of these attributes can be hard to find. This list was created by\n// scraping the MDN documentation.\n\n\n['accent-height', 'alignment-baseline', 'arabic-form', 'baseline-shift', 'cap-height', 'clip-path', 'clip-rule', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'dominant-baseline', 'enable-background', 'fill-opacity', 'fill-rule', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-name', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'horiz-adv-x', 'horiz-origin-x', 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', 'marker-mid', 'marker-start', 'overline-position', 'overline-thickness', 'paint-order', 'panose-1', 'pointer-events', 'rendering-intent', 'shape-rendering', 'stop-color', 'stop-opacity', 'strikethrough-position', 'strikethrough-thickness', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-decoration', 'text-rendering', 'underline-position', 'underline-thickness', 'unicode-bidi', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'vector-effect', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'word-spacing', 'writing-mode', 'xmlns:xlink', 'x-height' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // String SVG attributes with the xlink namespace.\n\n['xlink:actuate', 'xlink:arcrole', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, 'http://www.w3.org/1999/xlink', false, // sanitizeURL\n  false);\n}); // String SVG attributes with the xml namespace.\n\n['xml:base', 'xml:lang', 'xml:space' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, 'http://www.w3.org/XML/1998/namespace', false, // sanitizeURL\n  false);\n}); // These attribute exists both in HTML and SVG.\n// The attribute name is case-sensitive in SVG so we can't just use\n// the React name like we do for attributes that exist only in HTML.\n\n['tabIndex', 'crossOrigin'].forEach(function (attributeName) {\n  properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty\n  attributeName.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These attributes accept URLs. These must not allow javascript: URLS.\n// These will also need to accept Trusted Types object in the future.\n\nvar xlinkHref = 'xlinkHref';\nproperties[xlinkHref] = new PropertyInfoRecord('xlinkHref', STRING, false, // mustUseProperty\n'xlink:href', 'http://www.w3.org/1999/xlink', true, // sanitizeURL\nfalse);\n['src', 'href', 'action', 'formAction'].forEach(function (attributeName) {\n  properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty\n  attributeName.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  true, // sanitizeURL\n  true);\n});\n\n// and any newline or tab are filtered out as if they're not part of the URL.\n// https://url.spec.whatwg.org/#url-parsing\n// Tab or newline are defined as \\r\\n\\t:\n// https://infra.spec.whatwg.org/#ascii-tab-or-newline\n// A C0 control is a code point in the range \\u0000 NULL to \\u001F\n// INFORMATION SEPARATOR ONE, inclusive:\n// https://infra.spec.whatwg.org/#c0-control-or-space\n\n/* eslint-disable max-len */\n\nvar isJavaScriptProtocol = /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*\\:/i;\nvar didWarn = false;\n\nfunction sanitizeURL(url) {\n  {\n    if (!didWarn && isJavaScriptProtocol.test(url)) {\n      didWarn = true;\n\n      error('A future version of React will block javascript: URLs as a security precaution. ' + 'Use event handlers instead if you can. If you need to generate unsafe HTML try ' + 'using dangerouslySetInnerHTML instead. React was passed %s.', JSON.stringify(url));\n    }\n  }\n}\n\n/**\n * Get the value for a property on a node. Only used in DEV for SSR validation.\n * The \"expected\" argument is used as a hint of what the expected value is.\n * Some properties have multiple equivalent values.\n */\nfunction getValueForProperty(node, name, expected, propertyInfo) {\n  {\n    if (propertyInfo.mustUseProperty) {\n      var propertyName = propertyInfo.propertyName;\n      return node[propertyName];\n    } else {\n      // This check protects multiple uses of `expected`, which is why the\n      // react-internal/safe-string-coercion rule is disabled in several spots\n      // below.\n      {\n        checkAttributeStringCoercion(expected, name);\n      }\n\n      if ( propertyInfo.sanitizeURL) {\n        // If we haven't fully disabled javascript: URLs, and if\n        // the hydration is successful of a javascript: URL, we\n        // still want to warn on the client.\n        // eslint-disable-next-line react-internal/safe-string-coercion\n        sanitizeURL('' + expected);\n      }\n\n      var attributeName = propertyInfo.attributeName;\n      var stringValue = null;\n\n      if (propertyInfo.type === OVERLOADED_BOOLEAN) {\n        if (node.hasAttribute(attributeName)) {\n          var value = node.getAttribute(attributeName);\n\n          if (value === '') {\n            return true;\n          }\n\n          if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n            return value;\n          } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n          if (value === '' + expected) {\n            return expected;\n          }\n\n          return value;\n        }\n      } else if (node.hasAttribute(attributeName)) {\n        if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n          // We had an attribute but shouldn't have had one, so read it\n          // for the error message.\n          return node.getAttribute(attributeName);\n        }\n\n        if (propertyInfo.type === BOOLEAN) {\n          // If this was a boolean, it doesn't matter what the value is\n          // the fact that we have it is the same as the expected.\n          return expected;\n        } // Even if this property uses a namespace we use getAttribute\n        // because we assume its namespaced name is the same as our config.\n        // To use getAttributeNS we need the local name which we don't have\n        // in our config atm.\n\n\n        stringValue = node.getAttribute(attributeName);\n      }\n\n      if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n        return stringValue === null ? expected : stringValue; // eslint-disable-next-line react-internal/safe-string-coercion\n      } else if (stringValue === '' + expected) {\n        return expected;\n      } else {\n        return stringValue;\n      }\n    }\n  }\n}\n/**\n * Get the value for a attribute on a node. Only used in DEV for SSR validation.\n * The third argument is used as a hint of what the expected value is. Some\n * attributes have multiple equivalent values.\n */\n\nfunction getValueForAttribute(node, name, expected, isCustomComponentTag) {\n  {\n    if (!isAttributeNameSafe(name)) {\n      return;\n    }\n\n    if (!node.hasAttribute(name)) {\n      return expected === undefined ? undefined : null;\n    }\n\n    var value = node.getAttribute(name);\n\n    {\n      checkAttributeStringCoercion(expected, name);\n    }\n\n    if (value === '' + expected) {\n      return expected;\n    }\n\n    return value;\n  }\n}\n/**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n\nfunction setValueForProperty(node, name, value, isCustomComponentTag) {\n  var propertyInfo = getPropertyInfo(name);\n\n  if (shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag)) {\n    return;\n  }\n\n  if (shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag)) {\n    value = null;\n  }\n\n\n  if (isCustomComponentTag || propertyInfo === null) {\n    if (isAttributeNameSafe(name)) {\n      var _attributeName = name;\n\n      if (value === null) {\n        node.removeAttribute(_attributeName);\n      } else {\n        {\n          checkAttributeStringCoercion(value, name);\n        }\n\n        node.setAttribute(_attributeName,  '' + value);\n      }\n    }\n\n    return;\n  }\n\n  var mustUseProperty = propertyInfo.mustUseProperty;\n\n  if (mustUseProperty) {\n    var propertyName = propertyInfo.propertyName;\n\n    if (value === null) {\n      var type = propertyInfo.type;\n      node[propertyName] = type === BOOLEAN ? false : '';\n    } else {\n      // Contrary to `setAttribute`, object properties are properly\n      // `toString`ed by IE8/9.\n      node[propertyName] = value;\n    }\n\n    return;\n  } // The rest are treated as attributes with special cases.\n\n\n  var attributeName = propertyInfo.attributeName,\n      attributeNamespace = propertyInfo.attributeNamespace;\n\n  if (value === null) {\n    node.removeAttribute(attributeName);\n  } else {\n    var _type = propertyInfo.type;\n    var attributeValue;\n\n    if (_type === BOOLEAN || _type === OVERLOADED_BOOLEAN && value === true) {\n      // If attribute type is boolean, we know for sure it won't be an execution sink\n      // and we won't require Trusted Type here.\n      attributeValue = '';\n    } else {\n      // `setAttribute` with objects becomes only `[object]` in IE8/9,\n      // ('' + value) makes it output the correct toString()-value.\n      {\n        {\n          checkAttributeStringCoercion(value, attributeName);\n        }\n\n        attributeValue = '' + value;\n      }\n\n      if (propertyInfo.sanitizeURL) {\n        sanitizeURL(attributeValue.toString());\n      }\n    }\n\n    if (attributeNamespace) {\n      node.setAttributeNS(attributeNamespace, attributeName, attributeValue);\n    } else {\n      node.setAttribute(attributeName, attributeValue);\n    }\n  }\n}\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_SCOPE_TYPE = Symbol.for('react.scope');\nvar REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for('react.debug_trace_mode');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar REACT_LEGACY_HIDDEN_TYPE = Symbol.for('react.legacy_hidden');\nvar REACT_CACHE_TYPE = Symbol.for('react.cache');\nvar REACT_TRACING_MARKER_TYPE = Symbol.for('react.tracing_marker');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable !== 'object') {\n    return null;\n  }\n\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n\n  return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n  {\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      prevLog = console.log;\n      prevInfo = console.info;\n      prevWarn = console.warn;\n      prevError = console.error;\n      prevGroup = console.group;\n      prevGroupCollapsed = console.groupCollapsed;\n      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n      var props = {\n        configurable: true,\n        enumerable: true,\n        value: disabledLog,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        info: props,\n        log: props,\n        warn: props,\n        error: props,\n        group: props,\n        groupCollapsed: props,\n        groupEnd: props\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    disabledDepth++;\n  }\n}\nfunction reenableLogs() {\n  {\n    disabledDepth--;\n\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      var props = {\n        configurable: true,\n        enumerable: true,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        log: assign({}, props, {\n          value: prevLog\n        }),\n        info: assign({}, props, {\n          value: prevInfo\n        }),\n        warn: assign({}, props, {\n          value: prevWarn\n        }),\n        error: assign({}, props, {\n          value: prevError\n        }),\n        group: assign({}, props, {\n          value: prevGroup\n        }),\n        groupCollapsed: assign({}, props, {\n          value: prevGroupCollapsed\n        }),\n        groupEnd: assign({}, props, {\n          value: prevGroupEnd\n        })\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    if (disabledDepth < 0) {\n      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n    }\n  }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n  {\n    if (prefix === undefined) {\n      // Extract the VM specific prefix used by each line.\n      try {\n        throw Error();\n      } catch (x) {\n        var match = x.stack.trim().match(/\\n( *(at )?)/);\n        prefix = match && match[1] || '';\n      }\n    } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n    return '\\n' + prefix + name;\n  }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n  componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n  // If something asked for a stack inside a fake render, it should get ignored.\n  if ( !fn || reentry) {\n    return '';\n  }\n\n  {\n    var frame = componentFrameCache.get(fn);\n\n    if (frame !== undefined) {\n      return frame;\n    }\n  }\n\n  var control;\n  reentry = true;\n  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n  Error.prepareStackTrace = undefined;\n  var previousDispatcher;\n\n  {\n    previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n    // for warnings.\n\n    ReactCurrentDispatcher.current = null;\n    disableLogs();\n  }\n\n  try {\n    // This should throw.\n    if (construct) {\n      // Something should be setting the props in the constructor.\n      var Fake = function () {\n        throw Error();\n      }; // $FlowFixMe\n\n\n      Object.defineProperty(Fake.prototype, 'props', {\n        set: function () {\n          // We use a throwing setter instead of frozen or non-writable props\n          // because that won't throw in a non-strict mode function.\n          throw Error();\n        }\n      });\n\n      if (typeof Reflect === 'object' && Reflect.construct) {\n        // We construct a different control for this case to include any extra\n        // frames added by the construct call.\n        try {\n          Reflect.construct(Fake, []);\n        } catch (x) {\n          control = x;\n        }\n\n        Reflect.construct(fn, [], Fake);\n      } else {\n        try {\n          Fake.call();\n        } catch (x) {\n          control = x;\n        }\n\n        fn.call(Fake.prototype);\n      }\n    } else {\n      try {\n        throw Error();\n      } catch (x) {\n        control = x;\n      }\n\n      fn();\n    }\n  } catch (sample) {\n    // This is inlined manually because closure doesn't do it for us.\n    if (sample && control && typeof sample.stack === 'string') {\n      // This extracts the first frame from the sample that isn't also in the control.\n      // Skipping one frame that we assume is the frame that calls the two.\n      var sampleLines = sample.stack.split('\\n');\n      var controlLines = control.stack.split('\\n');\n      var s = sampleLines.length - 1;\n      var c = controlLines.length - 1;\n\n      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n        // We expect at least one stack frame to be shared.\n        // Typically this will be the root most one. However, stack frames may be\n        // cut off due to maximum stack limits. In this case, one maybe cut off\n        // earlier than the other. We assume that the sample is longer or the same\n        // and there for cut off earlier. So we should find the root most frame in\n        // the sample somewhere in the control.\n        c--;\n      }\n\n      for (; s >= 1 && c >= 0; s--, c--) {\n        // Next we find the first one that isn't the same which should be the\n        // frame that called our sample function and the control.\n        if (sampleLines[s] !== controlLines[c]) {\n          // In V8, the first line is describing the message but other VMs don't.\n          // If we're about to return the first line, and the control is also on the same\n          // line, that's a pretty good indicator that our sample threw at same line as\n          // the control. I.e. before we entered the sample frame. So we ignore this result.\n          // This can happen if you passed a class to function component, or non-function.\n          if (s !== 1 || c !== 1) {\n            do {\n              s--;\n              c--; // We may still have similar intermediate frames from the construct call.\n              // The next one that isn't the same should be our match though.\n\n              if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n                var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n                // but we have a user-provided \"displayName\"\n                // splice it in to make the stack more readable.\n\n\n                if (fn.displayName && _frame.includes('<anonymous>')) {\n                  _frame = _frame.replace('<anonymous>', fn.displayName);\n                }\n\n                {\n                  if (typeof fn === 'function') {\n                    componentFrameCache.set(fn, _frame);\n                  }\n                } // Return the line we found.\n\n\n                return _frame;\n              }\n            } while (s >= 1 && c >= 0);\n          }\n\n          break;\n        }\n      }\n    }\n  } finally {\n    reentry = false;\n\n    {\n      ReactCurrentDispatcher.current = previousDispatcher;\n      reenableLogs();\n    }\n\n    Error.prepareStackTrace = previousPrepareStackTrace;\n  } // Fallback to just using the name if we couldn't make it throw.\n\n\n  var name = fn ? fn.displayName || fn.name : '';\n  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n  {\n    if (typeof fn === 'function') {\n      componentFrameCache.set(fn, syntheticFrame);\n    }\n  }\n\n  return syntheticFrame;\n}\n\nfunction describeClassComponentFrame(ctor, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(ctor, true);\n  }\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(fn, false);\n  }\n}\n\nfunction shouldConstruct(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n  if (type == null) {\n    return '';\n  }\n\n  if (typeof type === 'function') {\n    {\n      return describeNativeComponentFrame(type, shouldConstruct(type));\n    }\n  }\n\n  if (typeof type === 'string') {\n    return describeBuiltInComponentFrame(type);\n  }\n\n  switch (type) {\n    case REACT_SUSPENSE_TYPE:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return describeBuiltInComponentFrame('SuspenseList');\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        return describeFunctionComponentFrame(type.render);\n\n      case REACT_MEMO_TYPE:\n        // Memo may contain any component type so we recursively resolve it.\n        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            // Lazy may contain any component type so we recursively resolve it.\n            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n          } catch (x) {}\n        }\n    }\n  }\n\n  return '';\n}\n\nfunction describeFiber(fiber) {\n  var owner =  fiber._debugOwner ? fiber._debugOwner.type : null ;\n  var source =  fiber._debugSource ;\n\n  switch (fiber.tag) {\n    case HostComponent:\n      return describeBuiltInComponentFrame(fiber.type);\n\n    case LazyComponent:\n      return describeBuiltInComponentFrame('Lazy');\n\n    case SuspenseComponent:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case SuspenseListComponent:\n      return describeBuiltInComponentFrame('SuspenseList');\n\n    case FunctionComponent:\n    case IndeterminateComponent:\n    case SimpleMemoComponent:\n      return describeFunctionComponentFrame(fiber.type);\n\n    case ForwardRef:\n      return describeFunctionComponentFrame(fiber.type.render);\n\n    case ClassComponent:\n      return describeClassComponentFrame(fiber.type);\n\n    default:\n      return '';\n  }\n}\n\nfunction getStackByFiberInDevAndProd(workInProgress) {\n  try {\n    var info = '';\n    var node = workInProgress;\n\n    do {\n      info += describeFiber(node);\n      node = node.return;\n    } while (node);\n\n    return info;\n  } catch (x) {\n    return '\\nError generating stack: ' + x.message + '\\n' + x.stack;\n  }\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  var displayName = outerType.displayName;\n\n  if (displayName) {\n    return displayName;\n  }\n\n  var functionName = innerType.displayName || innerType.name || '';\n  return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n  return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n  if (type == null) {\n    // Host root, text node or just invalid type.\n    return null;\n  }\n\n  {\n    if (typeof type.tag === 'number') {\n      error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n    }\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || null;\n  }\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'Fragment';\n\n    case REACT_PORTAL_TYPE:\n      return 'Portal';\n\n    case REACT_PROFILER_TYPE:\n      return 'Profiler';\n\n    case REACT_STRICT_MODE_TYPE:\n      return 'StrictMode';\n\n    case REACT_SUSPENSE_TYPE:\n      return 'Suspense';\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return 'SuspenseList';\n\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        var context = type;\n        return getContextName(context) + '.Consumer';\n\n      case REACT_PROVIDER_TYPE:\n        var provider = type;\n        return getContextName(provider._context) + '.Provider';\n\n      case REACT_FORWARD_REF_TYPE:\n        return getWrappedName(type, type.render, 'ForwardRef');\n\n      case REACT_MEMO_TYPE:\n        var outerName = type.displayName || null;\n\n        if (outerName !== null) {\n          return outerName;\n        }\n\n        return getComponentNameFromType(type.type) || 'Memo';\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            return getComponentNameFromType(init(payload));\n          } catch (x) {\n            return null;\n          }\n        }\n\n      // eslint-disable-next-line no-fallthrough\n    }\n  }\n\n  return null;\n}\n\nfunction getWrappedName$1(outerType, innerType, wrapperName) {\n  var functionName = innerType.displayName || innerType.name || '';\n  return outerType.displayName || (functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName);\n} // Keep in sync with shared/getComponentNameFromType\n\n\nfunction getContextName$1(type) {\n  return type.displayName || 'Context';\n}\n\nfunction getComponentNameFromFiber(fiber) {\n  var tag = fiber.tag,\n      type = fiber.type;\n\n  switch (tag) {\n    case CacheComponent:\n      return 'Cache';\n\n    case ContextConsumer:\n      var context = type;\n      return getContextName$1(context) + '.Consumer';\n\n    case ContextProvider:\n      var provider = type;\n      return getContextName$1(provider._context) + '.Provider';\n\n    case DehydratedFragment:\n      return 'DehydratedFragment';\n\n    case ForwardRef:\n      return getWrappedName$1(type, type.render, 'ForwardRef');\n\n    case Fragment:\n      return 'Fragment';\n\n    case HostComponent:\n      // Host component type is the display name (e.g. \"div\", \"View\")\n      return type;\n\n    case HostPortal:\n      return 'Portal';\n\n    case HostRoot:\n      return 'Root';\n\n    case HostText:\n      return 'Text';\n\n    case LazyComponent:\n      // Name comes from the type in this case; we don't have a tag.\n      return getComponentNameFromType(type);\n\n    case Mode:\n      if (type === REACT_STRICT_MODE_TYPE) {\n        // Don't be less specific than shared/getComponentNameFromType\n        return 'StrictMode';\n      }\n\n      return 'Mode';\n\n    case OffscreenComponent:\n      return 'Offscreen';\n\n    case Profiler:\n      return 'Profiler';\n\n    case ScopeComponent:\n      return 'Scope';\n\n    case SuspenseComponent:\n      return 'Suspense';\n\n    case SuspenseListComponent:\n      return 'SuspenseList';\n\n    case TracingMarkerComponent:\n      return 'TracingMarker';\n    // The display name for this tags come from the user-provided type:\n\n    case ClassComponent:\n    case FunctionComponent:\n    case IncompleteClassComponent:\n    case IndeterminateComponent:\n    case MemoComponent:\n    case SimpleMemoComponent:\n      if (typeof type === 'function') {\n        return type.displayName || type.name || null;\n      }\n\n      if (typeof type === 'string') {\n        return type;\n      }\n\n      break;\n\n  }\n\n  return null;\n}\n\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\nvar current = null;\nvar isRendering = false;\nfunction getCurrentFiberOwnerNameInDevOrNull() {\n  {\n    if (current === null) {\n      return null;\n    }\n\n    var owner = current._debugOwner;\n\n    if (owner !== null && typeof owner !== 'undefined') {\n      return getComponentNameFromFiber(owner);\n    }\n  }\n\n  return null;\n}\n\nfunction getCurrentFiberStackInDev() {\n  {\n    if (current === null) {\n      return '';\n    } // Safe because if current fiber exists, we are reconciling,\n    // and it is guaranteed to be the work-in-progress version.\n\n\n    return getStackByFiberInDevAndProd(current);\n  }\n}\n\nfunction resetCurrentFiber() {\n  {\n    ReactDebugCurrentFrame.getCurrentStack = null;\n    current = null;\n    isRendering = false;\n  }\n}\nfunction setCurrentFiber(fiber) {\n  {\n    ReactDebugCurrentFrame.getCurrentStack = fiber === null ? null : getCurrentFiberStackInDev;\n    current = fiber;\n    isRendering = false;\n  }\n}\nfunction getCurrentFiber() {\n  {\n    return current;\n  }\n}\nfunction setIsRendering(rendering) {\n  {\n    isRendering = rendering;\n  }\n}\n\n// Flow does not allow string concatenation of most non-string types. To work\n// around this limitation, we use an opaque type that can only be obtained by\n// passing the value through getToStringValue first.\nfunction toString(value) {\n  // The coercion safety check is performed in getToStringValue().\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\nfunction getToStringValue(value) {\n  switch (typeof value) {\n    case 'boolean':\n    case 'number':\n    case 'string':\n    case 'undefined':\n      return value;\n\n    case 'object':\n      {\n        checkFormFieldValueStringCoercion(value);\n      }\n\n      return value;\n\n    default:\n      // function, symbol are assigned as empty strings\n      return '';\n  }\n}\n\nvar hasReadOnlyValue = {\n  button: true,\n  checkbox: true,\n  image: true,\n  hidden: true,\n  radio: true,\n  reset: true,\n  submit: true\n};\nfunction checkControlledValueProps(tagName, props) {\n  {\n    if (!(hasReadOnlyValue[props.type] || props.onChange || props.onInput || props.readOnly || props.disabled || props.value == null)) {\n      error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n    }\n\n    if (!(props.onChange || props.readOnly || props.disabled || props.checked == null)) {\n      error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n    }\n  }\n}\n\nfunction isCheckable(elem) {\n  var type = elem.type;\n  var nodeName = elem.nodeName;\n  return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio');\n}\n\nfunction getTracker(node) {\n  return node._valueTracker;\n}\n\nfunction detachTracker(node) {\n  node._valueTracker = null;\n}\n\nfunction getValueFromNode(node) {\n  var value = '';\n\n  if (!node) {\n    return value;\n  }\n\n  if (isCheckable(node)) {\n    value = node.checked ? 'true' : 'false';\n  } else {\n    value = node.value;\n  }\n\n  return value;\n}\n\nfunction trackValueOnNode(node) {\n  var valueField = isCheckable(node) ? 'checked' : 'value';\n  var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField);\n\n  {\n    checkFormFieldValueStringCoercion(node[valueField]);\n  }\n\n  var currentValue = '' + node[valueField]; // if someone has already defined a value or Safari, then bail\n  // and don't track value will cause over reporting of changes,\n  // but it's better then a hard failure\n  // (needed for certain tests that spyOn input values and Safari)\n\n  if (node.hasOwnProperty(valueField) || typeof descriptor === 'undefined' || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') {\n    return;\n  }\n\n  var get = descriptor.get,\n      set = descriptor.set;\n  Object.defineProperty(node, valueField, {\n    configurable: true,\n    get: function () {\n      return get.call(this);\n    },\n    set: function (value) {\n      {\n        checkFormFieldValueStringCoercion(value);\n      }\n\n      currentValue = '' + value;\n      set.call(this, value);\n    }\n  }); // We could've passed this the first time\n  // but it triggers a bug in IE11 and Edge 14/15.\n  // Calling defineProperty() again should be equivalent.\n  // https://github.com/facebook/react/issues/11768\n\n  Object.defineProperty(node, valueField, {\n    enumerable: descriptor.enumerable\n  });\n  var tracker = {\n    getValue: function () {\n      return currentValue;\n    },\n    setValue: function (value) {\n      {\n        checkFormFieldValueStringCoercion(value);\n      }\n\n      currentValue = '' + value;\n    },\n    stopTracking: function () {\n      detachTracker(node);\n      delete node[valueField];\n    }\n  };\n  return tracker;\n}\n\nfunction track(node) {\n  if (getTracker(node)) {\n    return;\n  } // TODO: Once it's just Fiber we can move this to node._wrapperState\n\n\n  node._valueTracker = trackValueOnNode(node);\n}\nfunction updateValueIfChanged(node) {\n  if (!node) {\n    return false;\n  }\n\n  var tracker = getTracker(node); // if there is no tracker at this point it's unlikely\n  // that trying again will succeed\n\n  if (!tracker) {\n    return true;\n  }\n\n  var lastValue = tracker.getValue();\n  var nextValue = getValueFromNode(node);\n\n  if (nextValue !== lastValue) {\n    tracker.setValue(nextValue);\n    return true;\n  }\n\n  return false;\n}\n\nfunction getActiveElement(doc) {\n  doc = doc || (typeof document !== 'undefined' ? document : undefined);\n\n  if (typeof doc === 'undefined') {\n    return null;\n  }\n\n  try {\n    return doc.activeElement || doc.body;\n  } catch (e) {\n    return doc.body;\n  }\n}\n\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction isControlled(props) {\n  var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n  return usesChecked ? props.checked != null : props.value != null;\n}\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * See http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\n\n\nfunction getHostProps(element, props) {\n  var node = element;\n  var checked = props.checked;\n  var hostProps = assign({}, props, {\n    defaultChecked: undefined,\n    defaultValue: undefined,\n    value: undefined,\n    checked: checked != null ? checked : node._wrapperState.initialChecked\n  });\n  return hostProps;\n}\nfunction initWrapperState(element, props) {\n  {\n    checkControlledValueProps('input', props);\n\n    if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n      error('%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component', props.type);\n\n      didWarnCheckedDefaultChecked = true;\n    }\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n      error('%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component', props.type);\n\n      didWarnValueDefaultValue = true;\n    }\n  }\n\n  var node = element;\n  var defaultValue = props.defaultValue == null ? '' : props.defaultValue;\n  node._wrapperState = {\n    initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n    initialValue: getToStringValue(props.value != null ? props.value : defaultValue),\n    controlled: isControlled(props)\n  };\n}\nfunction updateChecked(element, props) {\n  var node = element;\n  var checked = props.checked;\n\n  if (checked != null) {\n    setValueForProperty(node, 'checked', checked, false);\n  }\n}\nfunction updateWrapper(element, props) {\n  var node = element;\n\n  {\n    var controlled = isControlled(props);\n\n    if (!node._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n      error('A component is changing an uncontrolled input to be controlled. ' + 'This is likely caused by the value changing from undefined to ' + 'a defined value, which should not happen. ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components');\n\n      didWarnUncontrolledToControlled = true;\n    }\n\n    if (node._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n      error('A component is changing a controlled input to be uncontrolled. ' + 'This is likely caused by the value changing from a defined to ' + 'undefined, which should not happen. ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components');\n\n      didWarnControlledToUncontrolled = true;\n    }\n  }\n\n  updateChecked(element, props);\n  var value = getToStringValue(props.value);\n  var type = props.type;\n\n  if (value != null) {\n    if (type === 'number') {\n      if (value === 0 && node.value === '' || // We explicitly want to coerce to number here if possible.\n      // eslint-disable-next-line\n      node.value != value) {\n        node.value = toString(value);\n      }\n    } else if (node.value !== toString(value)) {\n      node.value = toString(value);\n    }\n  } else if (type === 'submit' || type === 'reset') {\n    // Submit/reset inputs need the attribute removed completely to avoid\n    // blank-text buttons.\n    node.removeAttribute('value');\n    return;\n  }\n\n  {\n    // When syncing the value attribute, the value comes from a cascade of\n    // properties:\n    //  1. The value React property\n    //  2. The defaultValue React property\n    //  3. Otherwise there should be no change\n    if (props.hasOwnProperty('value')) {\n      setDefaultValue(node, props.type, value);\n    } else if (props.hasOwnProperty('defaultValue')) {\n      setDefaultValue(node, props.type, getToStringValue(props.defaultValue));\n    }\n  }\n\n  {\n    // When syncing the checked attribute, it only changes when it needs\n    // to be removed, such as transitioning from a checkbox into a text input\n    if (props.checked == null && props.defaultChecked != null) {\n      node.defaultChecked = !!props.defaultChecked;\n    }\n  }\n}\nfunction postMountWrapper(element, props, isHydrating) {\n  var node = element; // Do not assign value if it is already set. This prevents user text input\n  // from being lost during SSR hydration.\n\n  if (props.hasOwnProperty('value') || props.hasOwnProperty('defaultValue')) {\n    var type = props.type;\n    var isButton = type === 'submit' || type === 'reset'; // Avoid setting value attribute on submit/reset inputs as it overrides the\n    // default value provided by the browser. See: #12872\n\n    if (isButton && (props.value === undefined || props.value === null)) {\n      return;\n    }\n\n    var initialValue = toString(node._wrapperState.initialValue); // Do not assign value if it is already set. This prevents user text input\n    // from being lost during SSR hydration.\n\n    if (!isHydrating) {\n      {\n        // When syncing the value attribute, the value property should use\n        // the wrapperState._initialValue property. This uses:\n        //\n        //   1. The value React property when present\n        //   2. The defaultValue React property when present\n        //   3. An empty string\n        if (initialValue !== node.value) {\n          node.value = initialValue;\n        }\n      }\n    }\n\n    {\n      // Otherwise, the value attribute is synchronized to the property,\n      // so we assign defaultValue to the same thing as the value property\n      // assignment step above.\n      node.defaultValue = initialValue;\n    }\n  } // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n  // this is needed to work around a chrome bug where setting defaultChecked\n  // will sometimes influence the value of checked (even after detachment).\n  // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n  // We need to temporarily unset name to avoid disrupting radio button groups.\n\n\n  var name = node.name;\n\n  if (name !== '') {\n    node.name = '';\n  }\n\n  {\n    // When syncing the checked attribute, both the checked property and\n    // attribute are assigned at the same time using defaultChecked. This uses:\n    //\n    //   1. The checked React property when present\n    //   2. The defaultChecked React property when present\n    //   3. Otherwise, false\n    node.defaultChecked = !node.defaultChecked;\n    node.defaultChecked = !!node._wrapperState.initialChecked;\n  }\n\n  if (name !== '') {\n    node.name = name;\n  }\n}\nfunction restoreControlledState(element, props) {\n  var node = element;\n  updateWrapper(node, props);\n  updateNamedCousins(node, props);\n}\n\nfunction updateNamedCousins(rootNode, props) {\n  var name = props.name;\n\n  if (props.type === 'radio' && name != null) {\n    var queryRoot = rootNode;\n\n    while (queryRoot.parentNode) {\n      queryRoot = queryRoot.parentNode;\n    } // If `rootNode.form` was non-null, then we could try `form.elements`,\n    // but that sometimes behaves strangely in IE8. We could also try using\n    // `form.getElementsByName`, but that will only return direct children\n    // and won't include inputs that use the HTML5 `form=` attribute. Since\n    // the input might not even be in a form. It might not even be in the\n    // document. Let's just use the local `querySelectorAll` to ensure we don't\n    // miss anything.\n\n\n    {\n      checkAttributeStringCoercion(name, 'name');\n    }\n\n    var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n    for (var i = 0; i < group.length; i++) {\n      var otherNode = group[i];\n\n      if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n        continue;\n      } // This will throw if radio buttons rendered by different copies of React\n      // and the same name are rendered into the same form (same as #1939).\n      // That's probably okay; we don't support it just as we don't support\n      // mixing React radio buttons with non-React ones.\n\n\n      var otherProps = getFiberCurrentPropsFromNode(otherNode);\n\n      if (!otherProps) {\n        throw new Error('ReactDOMInput: Mixing React and non-React radio inputs with the ' + 'same `name` is not supported.');\n      } // We need update the tracked value on the named cousin since the value\n      // was changed but the input saw no event or value set\n\n\n      updateValueIfChanged(otherNode); // If this is a controlled radio button group, forcing the input that\n      // was previously checked to update will cause it to be come re-checked\n      // as appropriate.\n\n      updateWrapper(otherNode, otherProps);\n    }\n  }\n} // In Chrome, assigning defaultValue to certain input types triggers input validation.\n// For number inputs, the display value loses trailing decimal points. For email inputs,\n// Chrome raises \"The specified value <x> is not a valid email address\".\n//\n// Here we check to see if the defaultValue has actually changed, avoiding these problems\n// when the user is inputting text\n//\n// https://github.com/facebook/react/issues/7253\n\n\nfunction setDefaultValue(node, type, value) {\n  if ( // Focused number inputs synchronize on blur. See ChangeEventPlugin.js\n  type !== 'number' || getActiveElement(node.ownerDocument) !== node) {\n    if (value == null) {\n      node.defaultValue = toString(node._wrapperState.initialValue);\n    } else if (node.defaultValue !== toString(value)) {\n      node.defaultValue = toString(value);\n    }\n  }\n}\n\nvar didWarnSelectedSetOnOption = false;\nvar didWarnInvalidChild = false;\nvar didWarnInvalidInnerHTML = false;\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\n\nfunction validateProps(element, props) {\n  {\n    // If a value is not provided, then the children must be simple.\n    if (props.value == null) {\n      if (typeof props.children === 'object' && props.children !== null) {\n        React.Children.forEach(props.children, function (child) {\n          if (child == null) {\n            return;\n          }\n\n          if (typeof child === 'string' || typeof child === 'number') {\n            return;\n          }\n\n          if (!didWarnInvalidChild) {\n            didWarnInvalidChild = true;\n\n            error('Cannot infer the option value of complex children. ' + 'Pass a `value` prop or use a plain string as children to <option>.');\n          }\n        });\n      } else if (props.dangerouslySetInnerHTML != null) {\n        if (!didWarnInvalidInnerHTML) {\n          didWarnInvalidInnerHTML = true;\n\n          error('Pass a `value` prop if you set dangerouslyInnerHTML so React knows ' + 'which value should be selected.');\n        }\n      }\n    } // TODO: Remove support for `selected` in <option>.\n\n\n    if (props.selected != null && !didWarnSelectedSetOnOption) {\n      error('Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.');\n\n      didWarnSelectedSetOnOption = true;\n    }\n  }\n}\nfunction postMountWrapper$1(element, props) {\n  // value=\"\" should make a value attribute (#6219)\n  if (props.value != null) {\n    element.setAttribute('value', toString(getToStringValue(props.value)));\n  }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\nvar didWarnValueDefaultValue$1;\n\n{\n  didWarnValueDefaultValue$1 = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n  var ownerName = getCurrentFiberOwnerNameInDevOrNull();\n\n  if (ownerName) {\n    return '\\n\\nCheck the render method of `' + ownerName + '`.';\n  }\n\n  return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n/**\n * Validation function for `value` and `defaultValue`.\n */\n\nfunction checkSelectPropTypes(props) {\n  {\n    checkControlledValueProps('select', props);\n\n    for (var i = 0; i < valuePropNames.length; i++) {\n      var propName = valuePropNames[i];\n\n      if (props[propName] == null) {\n        continue;\n      }\n\n      var propNameIsArray = isArray(props[propName]);\n\n      if (props.multiple && !propNameIsArray) {\n        error('The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum());\n      } else if (!props.multiple && propNameIsArray) {\n        error('The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum());\n      }\n    }\n  }\n}\n\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n  var options = node.options;\n\n  if (multiple) {\n    var selectedValues = propValue;\n    var selectedValue = {};\n\n    for (var i = 0; i < selectedValues.length; i++) {\n      // Prefix to avoid chaos with special keys.\n      selectedValue['$' + selectedValues[i]] = true;\n    }\n\n    for (var _i = 0; _i < options.length; _i++) {\n      var selected = selectedValue.hasOwnProperty('$' + options[_i].value);\n\n      if (options[_i].selected !== selected) {\n        options[_i].selected = selected;\n      }\n\n      if (selected && setDefaultSelected) {\n        options[_i].defaultSelected = true;\n      }\n    }\n  } else {\n    // Do not set `select.value` as exact behavior isn't consistent across all\n    // browsers for all cases.\n    var _selectedValue = toString(getToStringValue(propValue));\n\n    var defaultSelected = null;\n\n    for (var _i2 = 0; _i2 < options.length; _i2++) {\n      if (options[_i2].value === _selectedValue) {\n        options[_i2].selected = true;\n\n        if (setDefaultSelected) {\n          options[_i2].defaultSelected = true;\n        }\n\n        return;\n      }\n\n      if (defaultSelected === null && !options[_i2].disabled) {\n        defaultSelected = options[_i2];\n      }\n    }\n\n    if (defaultSelected !== null) {\n      defaultSelected.selected = true;\n    }\n  }\n}\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\n\n\nfunction getHostProps$1(element, props) {\n  return assign({}, props, {\n    value: undefined\n  });\n}\nfunction initWrapperState$1(element, props) {\n  var node = element;\n\n  {\n    checkSelectPropTypes(props);\n  }\n\n  node._wrapperState = {\n    wasMultiple: !!props.multiple\n  };\n\n  {\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue$1) {\n      error('Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components');\n\n      didWarnValueDefaultValue$1 = true;\n    }\n  }\n}\nfunction postMountWrapper$2(element, props) {\n  var node = element;\n  node.multiple = !!props.multiple;\n  var value = props.value;\n\n  if (value != null) {\n    updateOptions(node, !!props.multiple, value, false);\n  } else if (props.defaultValue != null) {\n    updateOptions(node, !!props.multiple, props.defaultValue, true);\n  }\n}\nfunction postUpdateWrapper(element, props) {\n  var node = element;\n  var wasMultiple = node._wrapperState.wasMultiple;\n  node._wrapperState.wasMultiple = !!props.multiple;\n  var value = props.value;\n\n  if (value != null) {\n    updateOptions(node, !!props.multiple, value, false);\n  } else if (wasMultiple !== !!props.multiple) {\n    // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n    if (props.defaultValue != null) {\n      updateOptions(node, !!props.multiple, props.defaultValue, true);\n    } else {\n      // Revert the select back to its default unselected state.\n      updateOptions(node, !!props.multiple, props.multiple ? [] : '', false);\n    }\n  }\n}\nfunction restoreControlledState$1(element, props) {\n  var node = element;\n  var value = props.value;\n\n  if (value != null) {\n    updateOptions(node, !!props.multiple, value, false);\n  }\n}\n\nvar didWarnValDefaultVal = false;\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nfunction getHostProps$2(element, props) {\n  var node = element;\n\n  if (props.dangerouslySetInnerHTML != null) {\n    throw new Error('`dangerouslySetInnerHTML` does not make sense on <textarea>.');\n  } // Always set children to the same thing. In IE9, the selection range will\n  // get reset if `textContent` is mutated.  We could add a check in setTextContent\n  // to only set the value if/when the value differs from the node value (which would\n  // completely solve this IE9 bug), but Sebastian+Sophie seemed to like this\n  // solution. The value can be a boolean or object so that's why it's forced\n  // to be a string.\n\n\n  var hostProps = assign({}, props, {\n    value: undefined,\n    defaultValue: undefined,\n    children: toString(node._wrapperState.initialValue)\n  });\n\n  return hostProps;\n}\nfunction initWrapperState$2(element, props) {\n  var node = element;\n\n  {\n    checkControlledValueProps('textarea', props);\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n      error('%s contains a textarea with both value and defaultValue props. ' + 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component');\n\n      didWarnValDefaultVal = true;\n    }\n  }\n\n  var initialValue = props.value; // Only bother fetching default value if we're going to use it\n\n  if (initialValue == null) {\n    var children = props.children,\n        defaultValue = props.defaultValue;\n\n    if (children != null) {\n      {\n        error('Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.');\n      }\n\n      {\n        if (defaultValue != null) {\n          throw new Error('If you supply `defaultValue` on a <textarea>, do not pass children.');\n        }\n\n        if (isArray(children)) {\n          if (children.length > 1) {\n            throw new Error('<textarea> can only have at most one child.');\n          }\n\n          children = children[0];\n        }\n\n        defaultValue = children;\n      }\n    }\n\n    if (defaultValue == null) {\n      defaultValue = '';\n    }\n\n    initialValue = defaultValue;\n  }\n\n  node._wrapperState = {\n    initialValue: getToStringValue(initialValue)\n  };\n}\nfunction updateWrapper$1(element, props) {\n  var node = element;\n  var value = getToStringValue(props.value);\n  var defaultValue = getToStringValue(props.defaultValue);\n\n  if (value != null) {\n    // Cast `value` to a string to ensure the value is set correctly. While\n    // browsers typically do this as necessary, jsdom doesn't.\n    var newValue = toString(value); // To avoid side effects (such as losing text selection), only set value if changed\n\n    if (newValue !== node.value) {\n      node.value = newValue;\n    }\n\n    if (props.defaultValue == null && node.defaultValue !== newValue) {\n      node.defaultValue = newValue;\n    }\n  }\n\n  if (defaultValue != null) {\n    node.defaultValue = toString(defaultValue);\n  }\n}\nfunction postMountWrapper$3(element, props) {\n  var node = element; // This is in postMount because we need access to the DOM node, which is not\n  // available until after the component has mounted.\n\n  var textContent = node.textContent; // Only set node.value if textContent is equal to the expected\n  // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n  // will populate textContent as well.\n  // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n\n  if (textContent === node._wrapperState.initialValue) {\n    if (textContent !== '' && textContent !== null) {\n      node.value = textContent;\n    }\n  }\n}\nfunction restoreControlledState$2(element, props) {\n  // DOM component is still mounted; update\n  updateWrapper$1(element, props);\n}\n\nvar HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nvar MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\nvar SVG_NAMESPACE = 'http://www.w3.org/2000/svg'; // Assumes there is no parent namespace.\n\nfunction getIntrinsicNamespace(type) {\n  switch (type) {\n    case 'svg':\n      return SVG_NAMESPACE;\n\n    case 'math':\n      return MATH_NAMESPACE;\n\n    default:\n      return HTML_NAMESPACE;\n  }\n}\nfunction getChildNamespace(parentNamespace, type) {\n  if (parentNamespace == null || parentNamespace === HTML_NAMESPACE) {\n    // No (or default) parent namespace: potential entry point.\n    return getIntrinsicNamespace(type);\n  }\n\n  if (parentNamespace === SVG_NAMESPACE && type === 'foreignObject') {\n    // We're leaving SVG.\n    return HTML_NAMESPACE;\n  } // By default, pass namespace below.\n\n\n  return parentNamespace;\n}\n\n/* globals MSApp */\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n  if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n    return function (arg0, arg1, arg2, arg3) {\n      MSApp.execUnsafeLocalFunction(function () {\n        return func(arg0, arg1, arg2, arg3);\n      });\n    };\n  } else {\n    return func;\n  }\n};\n\nvar reusableSVGContainer;\n/**\n * Set the innerHTML property of a node\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\n\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n  if (node.namespaceURI === SVG_NAMESPACE) {\n\n    if (!('innerHTML' in node)) {\n      // IE does not have innerHTML for SVG nodes, so instead we inject the\n      // new markup in a temp node and then move the child nodes across into\n      // the target node\n      reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n      reusableSVGContainer.innerHTML = '<svg>' + html.valueOf().toString() + '</svg>';\n      var svgNode = reusableSVGContainer.firstChild;\n\n      while (node.firstChild) {\n        node.removeChild(node.firstChild);\n      }\n\n      while (svgNode.firstChild) {\n        node.appendChild(svgNode.firstChild);\n      }\n\n      return;\n    }\n  }\n\n  node.innerHTML = html;\n});\n\n/**\n * HTML nodeType values that represent the type of the node\n */\nvar ELEMENT_NODE = 1;\nvar TEXT_NODE = 3;\nvar COMMENT_NODE = 8;\nvar DOCUMENT_NODE = 9;\nvar DOCUMENT_FRAGMENT_NODE = 11;\n\n/**\n * Set the textContent property of a node. For text updates, it's faster\n * to set the `nodeValue` of the Text node directly instead of using\n * `.textContent` which will remove the existing node and create a new one.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\n\nvar setTextContent = function (node, text) {\n  if (text) {\n    var firstChild = node.firstChild;\n\n    if (firstChild && firstChild === node.lastChild && firstChild.nodeType === TEXT_NODE) {\n      firstChild.nodeValue = text;\n      return;\n    }\n  }\n\n  node.textContent = text;\n};\n\n// List derived from Gecko source code:\n// https://github.com/mozilla/gecko-dev/blob/4e638efc71/layout/style/test/property_database.js\nvar shorthandToLonghand = {\n  animation: ['animationDelay', 'animationDirection', 'animationDuration', 'animationFillMode', 'animationIterationCount', 'animationName', 'animationPlayState', 'animationTimingFunction'],\n  background: ['backgroundAttachment', 'backgroundClip', 'backgroundColor', 'backgroundImage', 'backgroundOrigin', 'backgroundPositionX', 'backgroundPositionY', 'backgroundRepeat', 'backgroundSize'],\n  backgroundPosition: ['backgroundPositionX', 'backgroundPositionY'],\n  border: ['borderBottomColor', 'borderBottomStyle', 'borderBottomWidth', 'borderImageOutset', 'borderImageRepeat', 'borderImageSlice', 'borderImageSource', 'borderImageWidth', 'borderLeftColor', 'borderLeftStyle', 'borderLeftWidth', 'borderRightColor', 'borderRightStyle', 'borderRightWidth', 'borderTopColor', 'borderTopStyle', 'borderTopWidth'],\n  borderBlockEnd: ['borderBlockEndColor', 'borderBlockEndStyle', 'borderBlockEndWidth'],\n  borderBlockStart: ['borderBlockStartColor', 'borderBlockStartStyle', 'borderBlockStartWidth'],\n  borderBottom: ['borderBottomColor', 'borderBottomStyle', 'borderBottomWidth'],\n  borderColor: ['borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor'],\n  borderImage: ['borderImageOutset', 'borderImageRepeat', 'borderImageSlice', 'borderImageSource', 'borderImageWidth'],\n  borderInlineEnd: ['borderInlineEndColor', 'borderInlineEndStyle', 'borderInlineEndWidth'],\n  borderInlineStart: ['borderInlineStartColor', 'borderInlineStartStyle', 'borderInlineStartWidth'],\n  borderLeft: ['borderLeftColor', 'borderLeftStyle', 'borderLeftWidth'],\n  borderRadius: ['borderBottomLeftRadius', 'borderBottomRightRadius', 'borderTopLeftRadius', 'borderTopRightRadius'],\n  borderRight: ['borderRightColor', 'borderRightStyle', 'borderRightWidth'],\n  borderStyle: ['borderBottomStyle', 'borderLeftStyle', 'borderRightStyle', 'borderTopStyle'],\n  borderTop: ['borderTopColor', 'borderTopStyle', 'borderTopWidth'],\n  borderWidth: ['borderBottomWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth'],\n  columnRule: ['columnRuleColor', 'columnRuleStyle', 'columnRuleWidth'],\n  columns: ['columnCount', 'columnWidth'],\n  flex: ['flexBasis', 'flexGrow', 'flexShrink'],\n  flexFlow: ['flexDirection', 'flexWrap'],\n  font: ['fontFamily', 'fontFeatureSettings', 'fontKerning', 'fontLanguageOverride', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle', 'fontVariant', 'fontVariantAlternates', 'fontVariantCaps', 'fontVariantEastAsian', 'fontVariantLigatures', 'fontVariantNumeric', 'fontVariantPosition', 'fontWeight', 'lineHeight'],\n  fontVariant: ['fontVariantAlternates', 'fontVariantCaps', 'fontVariantEastAsian', 'fontVariantLigatures', 'fontVariantNumeric', 'fontVariantPosition'],\n  gap: ['columnGap', 'rowGap'],\n  grid: ['gridAutoColumns', 'gridAutoFlow', 'gridAutoRows', 'gridTemplateAreas', 'gridTemplateColumns', 'gridTemplateRows'],\n  gridArea: ['gridColumnEnd', 'gridColumnStart', 'gridRowEnd', 'gridRowStart'],\n  gridColumn: ['gridColumnEnd', 'gridColumnStart'],\n  gridColumnGap: ['columnGap'],\n  gridGap: ['columnGap', 'rowGap'],\n  gridRow: ['gridRowEnd', 'gridRowStart'],\n  gridRowGap: ['rowGap'],\n  gridTemplate: ['gridTemplateAreas', 'gridTemplateColumns', 'gridTemplateRows'],\n  listStyle: ['listStyleImage', 'listStylePosition', 'listStyleType'],\n  margin: ['marginBottom', 'marginLeft', 'marginRight', 'marginTop'],\n  marker: ['markerEnd', 'markerMid', 'markerStart'],\n  mask: ['maskClip', 'maskComposite', 'maskImage', 'maskMode', 'maskOrigin', 'maskPositionX', 'maskPositionY', 'maskRepeat', 'maskSize'],\n  maskPosition: ['maskPositionX', 'maskPositionY'],\n  outline: ['outlineColor', 'outlineStyle', 'outlineWidth'],\n  overflow: ['overflowX', 'overflowY'],\n  padding: ['paddingBottom', 'paddingLeft', 'paddingRight', 'paddingTop'],\n  placeContent: ['alignContent', 'justifyContent'],\n  placeItems: ['alignItems', 'justifyItems'],\n  placeSelf: ['alignSelf', 'justifySelf'],\n  textDecoration: ['textDecorationColor', 'textDecorationLine', 'textDecorationStyle'],\n  textEmphasis: ['textEmphasisColor', 'textEmphasisStyle'],\n  transition: ['transitionDelay', 'transitionDuration', 'transitionProperty', 'transitionTimingFunction'],\n  wordWrap: ['overflowWrap']\n};\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\nvar isUnitlessNumber = {\n  animationIterationCount: true,\n  aspectRatio: true,\n  borderImageOutset: true,\n  borderImageSlice: true,\n  borderImageWidth: true,\n  boxFlex: true,\n  boxFlexGroup: true,\n  boxOrdinalGroup: true,\n  columnCount: true,\n  columns: true,\n  flex: true,\n  flexGrow: true,\n  flexPositive: true,\n  flexShrink: true,\n  flexNegative: true,\n  flexOrder: true,\n  gridArea: true,\n  gridRow: true,\n  gridRowEnd: true,\n  gridRowSpan: true,\n  gridRowStart: true,\n  gridColumn: true,\n  gridColumnEnd: true,\n  gridColumnSpan: true,\n  gridColumnStart: true,\n  fontWeight: true,\n  lineClamp: true,\n  lineHeight: true,\n  opacity: true,\n  order: true,\n  orphans: true,\n  tabSize: true,\n  widows: true,\n  zIndex: true,\n  zoom: true,\n  // SVG-related properties\n  fillOpacity: true,\n  floodOpacity: true,\n  stopOpacity: true,\n  strokeDasharray: true,\n  strokeDashoffset: true,\n  strokeMiterlimit: true,\n  strokeOpacity: true,\n  strokeWidth: true\n};\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\n\nfunction prefixKey(prefix, key) {\n  return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\n\n\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O']; // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\n\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n  prefixes.forEach(function (prefix) {\n    isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n  });\n});\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @return {string} Normalized style value with dimensions applied.\n */\n\nfunction dangerousStyleValue(name, value, isCustomProperty) {\n  // Note that we've removed escapeTextForBrowser() calls here since the\n  // whole string will be escaped when the attribute is injected into\n  // the markup. If you provide unsafe user data here they can inject\n  // arbitrary CSS which may be problematic (I couldn't repro this):\n  // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n  // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n  // This is not an XSS hole but instead a potential CSS injection issue\n  // which has lead to a greater discussion about how we're going to\n  // trust URLs moving forward. See #2115901\n  var isEmpty = value == null || typeof value === 'boolean' || value === '';\n\n  if (isEmpty) {\n    return '';\n  }\n\n  if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) {\n    return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers\n  }\n\n  {\n    checkCSSPropertyStringCoercion(value, name);\n  }\n\n  return ('' + value).trim();\n}\n\nvar uppercasePattern = /([A-Z])/g;\nvar msPattern = /^ms-/;\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n *   > hyphenateStyleName('backgroundColor')\n *   < \"background-color\"\n *   > hyphenateStyleName('MozTransition')\n *   < \"-moz-transition\"\n *   > hyphenateStyleName('msTransition')\n *   < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n */\n\nfunction hyphenateStyleName(name) {\n  return name.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern, '-ms-');\n}\n\nvar warnValidStyle = function () {};\n\n{\n  // 'msTransform' is correct, but the other prefixes should be capitalized\n  var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n  var msPattern$1 = /^-ms-/;\n  var hyphenPattern = /-(.)/g; // style values shouldn't contain a semicolon\n\n  var badStyleValueWithSemicolonPattern = /;\\s*$/;\n  var warnedStyleNames = {};\n  var warnedStyleValues = {};\n  var warnedForNaNValue = false;\n  var warnedForInfinityValue = false;\n\n  var camelize = function (string) {\n    return string.replace(hyphenPattern, function (_, character) {\n      return character.toUpperCase();\n    });\n  };\n\n  var warnHyphenatedStyleName = function (name) {\n    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n      return;\n    }\n\n    warnedStyleNames[name] = true;\n\n    error('Unsupported style property %s. Did you mean %s?', name, // As Andi Smith suggests\n    // (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n    // is converted to lowercase `ms`.\n    camelize(name.replace(msPattern$1, 'ms-')));\n  };\n\n  var warnBadVendoredStyleName = function (name) {\n    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n      return;\n    }\n\n    warnedStyleNames[name] = true;\n\n    error('Unsupported vendor-prefixed style property %s. Did you mean %s?', name, name.charAt(0).toUpperCase() + name.slice(1));\n  };\n\n  var warnStyleValueWithSemicolon = function (name, value) {\n    if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n      return;\n    }\n\n    warnedStyleValues[value] = true;\n\n    error(\"Style property values shouldn't contain a semicolon. \" + 'Try \"%s: %s\" instead.', name, value.replace(badStyleValueWithSemicolonPattern, ''));\n  };\n\n  var warnStyleValueIsNaN = function (name, value) {\n    if (warnedForNaNValue) {\n      return;\n    }\n\n    warnedForNaNValue = true;\n\n    error('`NaN` is an invalid value for the `%s` css style property.', name);\n  };\n\n  var warnStyleValueIsInfinity = function (name, value) {\n    if (warnedForInfinityValue) {\n      return;\n    }\n\n    warnedForInfinityValue = true;\n\n    error('`Infinity` is an invalid value for the `%s` css style property.', name);\n  };\n\n  warnValidStyle = function (name, value) {\n    if (name.indexOf('-') > -1) {\n      warnHyphenatedStyleName(name);\n    } else if (badVendoredStyleNamePattern.test(name)) {\n      warnBadVendoredStyleName(name);\n    } else if (badStyleValueWithSemicolonPattern.test(value)) {\n      warnStyleValueWithSemicolon(name, value);\n    }\n\n    if (typeof value === 'number') {\n      if (isNaN(value)) {\n        warnStyleValueIsNaN(name, value);\n      } else if (!isFinite(value)) {\n        warnStyleValueIsInfinity(name, value);\n      }\n    }\n  };\n}\n\nvar warnValidStyle$1 = warnValidStyle;\n\n/**\n * Operations for dealing with CSS properties.\n */\n\n/**\n * This creates a string that is expected to be equivalent to the style\n * attribute generated by server-side rendering. It by-passes warnings and\n * security checks so it's not safe to use this value for anything other than\n * comparison. It is only used in DEV for SSR validation.\n */\n\nfunction createDangerousStringForStyles(styles) {\n  {\n    var serialized = '';\n    var delimiter = '';\n\n    for (var styleName in styles) {\n      if (!styles.hasOwnProperty(styleName)) {\n        continue;\n      }\n\n      var styleValue = styles[styleName];\n\n      if (styleValue != null) {\n        var isCustomProperty = styleName.indexOf('--') === 0;\n        serialized += delimiter + (isCustomProperty ? styleName : hyphenateStyleName(styleName)) + ':';\n        serialized += dangerousStyleValue(styleName, styleValue, isCustomProperty);\n        delimiter = ';';\n      }\n    }\n\n    return serialized || null;\n  }\n}\n/**\n * Sets the value for multiple styles on a node.  If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n */\n\nfunction setValueForStyles(node, styles) {\n  var style = node.style;\n\n  for (var styleName in styles) {\n    if (!styles.hasOwnProperty(styleName)) {\n      continue;\n    }\n\n    var isCustomProperty = styleName.indexOf('--') === 0;\n\n    {\n      if (!isCustomProperty) {\n        warnValidStyle$1(styleName, styles[styleName]);\n      }\n    }\n\n    var styleValue = dangerousStyleValue(styleName, styles[styleName], isCustomProperty);\n\n    if (styleName === 'float') {\n      styleName = 'cssFloat';\n    }\n\n    if (isCustomProperty) {\n      style.setProperty(styleName, styleValue);\n    } else {\n      style[styleName] = styleValue;\n    }\n  }\n}\n\nfunction isValueEmpty(value) {\n  return value == null || typeof value === 'boolean' || value === '';\n}\n/**\n * Given {color: 'red', overflow: 'hidden'} returns {\n *   color: 'color',\n *   overflowX: 'overflow',\n *   overflowY: 'overflow',\n * }. This can be read as \"the overflowY property was set by the overflow\n * shorthand\". That is, the values are the property that each was derived from.\n */\n\n\nfunction expandShorthandMap(styles) {\n  var expanded = {};\n\n  for (var key in styles) {\n    var longhands = shorthandToLonghand[key] || [key];\n\n    for (var i = 0; i < longhands.length; i++) {\n      expanded[longhands[i]] = key;\n    }\n  }\n\n  return expanded;\n}\n/**\n * When mixing shorthand and longhand property names, we warn during updates if\n * we expect an incorrect result to occur. In particular, we warn for:\n *\n * Updating a shorthand property (longhand gets overwritten):\n *   {font: 'foo', fontVariant: 'bar'} -> {font: 'baz', fontVariant: 'bar'}\n *   becomes .style.font = 'baz'\n * Removing a shorthand property (longhand gets lost too):\n *   {font: 'foo', fontVariant: 'bar'} -> {fontVariant: 'bar'}\n *   becomes .style.font = ''\n * Removing a longhand property (should revert to shorthand; doesn't):\n *   {font: 'foo', fontVariant: 'bar'} -> {font: 'foo'}\n *   becomes .style.fontVariant = ''\n */\n\n\nfunction validateShorthandPropertyCollisionInDev(styleUpdates, nextStyles) {\n  {\n    if (!nextStyles) {\n      return;\n    }\n\n    var expandedUpdates = expandShorthandMap(styleUpdates);\n    var expandedStyles = expandShorthandMap(nextStyles);\n    var warnedAbout = {};\n\n    for (var key in expandedUpdates) {\n      var originalKey = expandedUpdates[key];\n      var correctOriginalKey = expandedStyles[key];\n\n      if (correctOriginalKey && originalKey !== correctOriginalKey) {\n        var warningKey = originalKey + ',' + correctOriginalKey;\n\n        if (warnedAbout[warningKey]) {\n          continue;\n        }\n\n        warnedAbout[warningKey] = true;\n\n        error('%s a style property during rerender (%s) when a ' + 'conflicting property is set (%s) can lead to styling bugs. To ' + \"avoid this, don't mix shorthand and non-shorthand properties \" + 'for the same value; instead, replace the shorthand with ' + 'separate values.', isValueEmpty(styleUpdates[originalKey]) ? 'Removing' : 'Updating', originalKey, correctOriginalKey);\n      }\n    }\n  }\n}\n\n// For HTML, certain tags should omit their close tag. We keep a list for\n// those special-case tags.\nvar omittedCloseTags = {\n  area: true,\n  base: true,\n  br: true,\n  col: true,\n  embed: true,\n  hr: true,\n  img: true,\n  input: true,\n  keygen: true,\n  link: true,\n  meta: true,\n  param: true,\n  source: true,\n  track: true,\n  wbr: true // NOTE: menuitem's close tag should be omitted, but that causes problems.\n\n};\n\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = assign({\n  menuitem: true\n}, omittedCloseTags);\n\nvar HTML = '__html';\n\nfunction assertValidProps(tag, props) {\n  if (!props) {\n    return;\n  } // Note the use of `==` which checks for null or undefined.\n\n\n  if (voidElementTags[tag]) {\n    if (props.children != null || props.dangerouslySetInnerHTML != null) {\n      throw new Error(tag + \" is a void element tag and must neither have `children` nor \" + 'use `dangerouslySetInnerHTML`.');\n    }\n  }\n\n  if (props.dangerouslySetInnerHTML != null) {\n    if (props.children != null) {\n      throw new Error('Can only set one of `children` or `props.dangerouslySetInnerHTML`.');\n    }\n\n    if (typeof props.dangerouslySetInnerHTML !== 'object' || !(HTML in props.dangerouslySetInnerHTML)) {\n      throw new Error('`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. ' + 'Please visit https://reactjs.org/link/dangerously-set-inner-html ' + 'for more information.');\n    }\n  }\n\n  {\n    if (!props.suppressContentEditableWarning && props.contentEditable && props.children != null) {\n      error('A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.');\n    }\n  }\n\n  if (props.style != null && typeof props.style !== 'object') {\n    throw new Error('The `style` prop expects a mapping from style properties to values, ' + \"not a string. For example, style={{marginRight: spacing + 'em'}} when \" + 'using JSX.');\n  }\n}\n\nfunction isCustomComponent(tagName, props) {\n  if (tagName.indexOf('-') === -1) {\n    return typeof props.is === 'string';\n  }\n\n  switch (tagName) {\n    // These are reserved SVG and MathML elements.\n    // We don't mind this list too much because we expect it to never grow.\n    // The alternative is to track the namespace in a few places which is convoluted.\n    // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts\n    case 'annotation-xml':\n    case 'color-profile':\n    case 'font-face':\n    case 'font-face-src':\n    case 'font-face-uri':\n    case 'font-face-format':\n    case 'font-face-name':\n    case 'missing-glyph':\n      return false;\n\n    default:\n      return true;\n  }\n}\n\n// When adding attributes to the HTML or SVG allowed attribute list, be sure to\n// also add them to this module to ensure casing and incorrect name\n// warnings.\nvar possibleStandardNames = {\n  // HTML\n  accept: 'accept',\n  acceptcharset: 'acceptCharset',\n  'accept-charset': 'acceptCharset',\n  accesskey: 'accessKey',\n  action: 'action',\n  allowfullscreen: 'allowFullScreen',\n  alt: 'alt',\n  as: 'as',\n  async: 'async',\n  autocapitalize: 'autoCapitalize',\n  autocomplete: 'autoComplete',\n  autocorrect: 'autoCorrect',\n  autofocus: 'autoFocus',\n  autoplay: 'autoPlay',\n  autosave: 'autoSave',\n  capture: 'capture',\n  cellpadding: 'cellPadding',\n  cellspacing: 'cellSpacing',\n  challenge: 'challenge',\n  charset: 'charSet',\n  checked: 'checked',\n  children: 'children',\n  cite: 'cite',\n  class: 'className',\n  classid: 'classID',\n  classname: 'className',\n  cols: 'cols',\n  colspan: 'colSpan',\n  content: 'content',\n  contenteditable: 'contentEditable',\n  contextmenu: 'contextMenu',\n  controls: 'controls',\n  controlslist: 'controlsList',\n  coords: 'coords',\n  crossorigin: 'crossOrigin',\n  dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',\n  data: 'data',\n  datetime: 'dateTime',\n  default: 'default',\n  defaultchecked: 'defaultChecked',\n  defaultvalue: 'defaultValue',\n  defer: 'defer',\n  dir: 'dir',\n  disabled: 'disabled',\n  disablepictureinpicture: 'disablePictureInPicture',\n  disableremoteplayback: 'disableRemotePlayback',\n  download: 'download',\n  draggable: 'draggable',\n  enctype: 'encType',\n  enterkeyhint: 'enterKeyHint',\n  for: 'htmlFor',\n  form: 'form',\n  formmethod: 'formMethod',\n  formaction: 'formAction',\n  formenctype: 'formEncType',\n  formnovalidate: 'formNoValidate',\n  formtarget: 'formTarget',\n  frameborder: 'frameBorder',\n  headers: 'headers',\n  height: 'height',\n  hidden: 'hidden',\n  high: 'high',\n  href: 'href',\n  hreflang: 'hrefLang',\n  htmlfor: 'htmlFor',\n  httpequiv: 'httpEquiv',\n  'http-equiv': 'httpEquiv',\n  icon: 'icon',\n  id: 'id',\n  imagesizes: 'imageSizes',\n  imagesrcset: 'imageSrcSet',\n  innerhtml: 'innerHTML',\n  inputmode: 'inputMode',\n  integrity: 'integrity',\n  is: 'is',\n  itemid: 'itemID',\n  itemprop: 'itemProp',\n  itemref: 'itemRef',\n  itemscope: 'itemScope',\n  itemtype: 'itemType',\n  keyparams: 'keyParams',\n  keytype: 'keyType',\n  kind: 'kind',\n  label: 'label',\n  lang: 'lang',\n  list: 'list',\n  loop: 'loop',\n  low: 'low',\n  manifest: 'manifest',\n  marginwidth: 'marginWidth',\n  marginheight: 'marginHeight',\n  max: 'max',\n  maxlength: 'maxLength',\n  media: 'media',\n  mediagroup: 'mediaGroup',\n  method: 'method',\n  min: 'min',\n  minlength: 'minLength',\n  multiple: 'multiple',\n  muted: 'muted',\n  name: 'name',\n  nomodule: 'noModule',\n  nonce: 'nonce',\n  novalidate: 'noValidate',\n  open: 'open',\n  optimum: 'optimum',\n  pattern: 'pattern',\n  placeholder: 'placeholder',\n  playsinline: 'playsInline',\n  poster: 'poster',\n  preload: 'preload',\n  profile: 'profile',\n  radiogroup: 'radioGroup',\n  readonly: 'readOnly',\n  referrerpolicy: 'referrerPolicy',\n  rel: 'rel',\n  required: 'required',\n  reversed: 'reversed',\n  role: 'role',\n  rows: 'rows',\n  rowspan: 'rowSpan',\n  sandbox: 'sandbox',\n  scope: 'scope',\n  scoped: 'scoped',\n  scrolling: 'scrolling',\n  seamless: 'seamless',\n  selected: 'selected',\n  shape: 'shape',\n  size: 'size',\n  sizes: 'sizes',\n  span: 'span',\n  spellcheck: 'spellCheck',\n  src: 'src',\n  srcdoc: 'srcDoc',\n  srclang: 'srcLang',\n  srcset: 'srcSet',\n  start: 'start',\n  step: 'step',\n  style: 'style',\n  summary: 'summary',\n  tabindex: 'tabIndex',\n  target: 'target',\n  title: 'title',\n  type: 'type',\n  usemap: 'useMap',\n  value: 'value',\n  width: 'width',\n  wmode: 'wmode',\n  wrap: 'wrap',\n  // SVG\n  about: 'about',\n  accentheight: 'accentHeight',\n  'accent-height': 'accentHeight',\n  accumulate: 'accumulate',\n  additive: 'additive',\n  alignmentbaseline: 'alignmentBaseline',\n  'alignment-baseline': 'alignmentBaseline',\n  allowreorder: 'allowReorder',\n  alphabetic: 'alphabetic',\n  amplitude: 'amplitude',\n  arabicform: 'arabicForm',\n  'arabic-form': 'arabicForm',\n  ascent: 'ascent',\n  attributename: 'attributeName',\n  attributetype: 'attributeType',\n  autoreverse: 'autoReverse',\n  azimuth: 'azimuth',\n  basefrequency: 'baseFrequency',\n  baselineshift: 'baselineShift',\n  'baseline-shift': 'baselineShift',\n  baseprofile: 'baseProfile',\n  bbox: 'bbox',\n  begin: 'begin',\n  bias: 'bias',\n  by: 'by',\n  calcmode: 'calcMode',\n  capheight: 'capHeight',\n  'cap-height': 'capHeight',\n  clip: 'clip',\n  clippath: 'clipPath',\n  'clip-path': 'clipPath',\n  clippathunits: 'clipPathUnits',\n  cliprule: 'clipRule',\n  'clip-rule': 'clipRule',\n  color: 'color',\n  colorinterpolation: 'colorInterpolation',\n  'color-interpolation': 'colorInterpolation',\n  colorinterpolationfilters: 'colorInterpolationFilters',\n  'color-interpolation-filters': 'colorInterpolationFilters',\n  colorprofile: 'colorProfile',\n  'color-profile': 'colorProfile',\n  colorrendering: 'colorRendering',\n  'color-rendering': 'colorRendering',\n  contentscripttype: 'contentScriptType',\n  contentstyletype: 'contentStyleType',\n  cursor: 'cursor',\n  cx: 'cx',\n  cy: 'cy',\n  d: 'd',\n  datatype: 'datatype',\n  decelerate: 'decelerate',\n  descent: 'descent',\n  diffuseconstant: 'diffuseConstant',\n  direction: 'direction',\n  display: 'display',\n  divisor: 'divisor',\n  dominantbaseline: 'dominantBaseline',\n  'dominant-baseline': 'dominantBaseline',\n  dur: 'dur',\n  dx: 'dx',\n  dy: 'dy',\n  edgemode: 'edgeMode',\n  elevation: 'elevation',\n  enablebackground: 'enableBackground',\n  'enable-background': 'enableBackground',\n  end: 'end',\n  exponent: 'exponent',\n  externalresourcesrequired: 'externalResourcesRequired',\n  fill: 'fill',\n  fillopacity: 'fillOpacity',\n  'fill-opacity': 'fillOpacity',\n  fillrule: 'fillRule',\n  'fill-rule': 'fillRule',\n  filter: 'filter',\n  filterres: 'filterRes',\n  filterunits: 'filterUnits',\n  floodopacity: 'floodOpacity',\n  'flood-opacity': 'floodOpacity',\n  floodcolor: 'floodColor',\n  'flood-color': 'floodColor',\n  focusable: 'focusable',\n  fontfamily: 'fontFamily',\n  'font-family': 'fontFamily',\n  fontsize: 'fontSize',\n  'font-size': 'fontSize',\n  fontsizeadjust: 'fontSizeAdjust',\n  'font-size-adjust': 'fontSizeAdjust',\n  fontstretch: 'fontStretch',\n  'font-stretch': 'fontStretch',\n  fontstyle: 'fontStyle',\n  'font-style': 'fontStyle',\n  fontvariant: 'fontVariant',\n  'font-variant': 'fontVariant',\n  fontweight: 'fontWeight',\n  'font-weight': 'fontWeight',\n  format: 'format',\n  from: 'from',\n  fx: 'fx',\n  fy: 'fy',\n  g1: 'g1',\n  g2: 'g2',\n  glyphname: 'glyphName',\n  'glyph-name': 'glyphName',\n  glyphorientationhorizontal: 'glyphOrientationHorizontal',\n  'glyph-orientation-horizontal': 'glyphOrientationHorizontal',\n  glyphorientationvertical: 'glyphOrientationVertical',\n  'glyph-orientation-vertical': 'glyphOrientationVertical',\n  glyphref: 'glyphRef',\n  gradienttransform: 'gradientTransform',\n  gradientunits: 'gradientUnits',\n  hanging: 'hanging',\n  horizadvx: 'horizAdvX',\n  'horiz-adv-x': 'horizAdvX',\n  horizoriginx: 'horizOriginX',\n  'horiz-origin-x': 'horizOriginX',\n  ideographic: 'ideographic',\n  imagerendering: 'imageRendering',\n  'image-rendering': 'imageRendering',\n  in2: 'in2',\n  in: 'in',\n  inlist: 'inlist',\n  intercept: 'intercept',\n  k1: 'k1',\n  k2: 'k2',\n  k3: 'k3',\n  k4: 'k4',\n  k: 'k',\n  kernelmatrix: 'kernelMatrix',\n  kernelunitlength: 'kernelUnitLength',\n  kerning: 'kerning',\n  keypoints: 'keyPoints',\n  keysplines: 'keySplines',\n  keytimes: 'keyTimes',\n  lengthadjust: 'lengthAdjust',\n  letterspacing: 'letterSpacing',\n  'letter-spacing': 'letterSpacing',\n  lightingcolor: 'lightingColor',\n  'lighting-color': 'lightingColor',\n  limitingconeangle: 'limitingConeAngle',\n  local: 'local',\n  markerend: 'markerEnd',\n  'marker-end': 'markerEnd',\n  markerheight: 'markerHeight',\n  markermid: 'markerMid',\n  'marker-mid': 'markerMid',\n  markerstart: 'markerStart',\n  'marker-start': 'markerStart',\n  markerunits: 'markerUnits',\n  markerwidth: 'markerWidth',\n  mask: 'mask',\n  maskcontentunits: 'maskContentUnits',\n  maskunits: 'maskUnits',\n  mathematical: 'mathematical',\n  mode: 'mode',\n  numoctaves: 'numOctaves',\n  offset: 'offset',\n  opacity: 'opacity',\n  operator: 'operator',\n  order: 'order',\n  orient: 'orient',\n  orientation: 'orientation',\n  origin: 'origin',\n  overflow: 'overflow',\n  overlineposition: 'overlinePosition',\n  'overline-position': 'overlinePosition',\n  overlinethickness: 'overlineThickness',\n  'overline-thickness': 'overlineThickness',\n  paintorder: 'paintOrder',\n  'paint-order': 'paintOrder',\n  panose1: 'panose1',\n  'panose-1': 'panose1',\n  pathlength: 'pathLength',\n  patterncontentunits: 'patternContentUnits',\n  patterntransform: 'patternTransform',\n  patternunits: 'patternUnits',\n  pointerevents: 'pointerEvents',\n  'pointer-events': 'pointerEvents',\n  points: 'points',\n  pointsatx: 'pointsAtX',\n  pointsaty: 'pointsAtY',\n  pointsatz: 'pointsAtZ',\n  prefix: 'prefix',\n  preservealpha: 'preserveAlpha',\n  preserveaspectratio: 'preserveAspectRatio',\n  primitiveunits: 'primitiveUnits',\n  property: 'property',\n  r: 'r',\n  radius: 'radius',\n  refx: 'refX',\n  refy: 'refY',\n  renderingintent: 'renderingIntent',\n  'rendering-intent': 'renderingIntent',\n  repeatcount: 'repeatCount',\n  repeatdur: 'repeatDur',\n  requiredextensions: 'requiredExtensions',\n  requiredfeatures: 'requiredFeatures',\n  resource: 'resource',\n  restart: 'restart',\n  result: 'result',\n  results: 'results',\n  rotate: 'rotate',\n  rx: 'rx',\n  ry: 'ry',\n  scale: 'scale',\n  security: 'security',\n  seed: 'seed',\n  shaperendering: 'shapeRendering',\n  'shape-rendering': 'shapeRendering',\n  slope: 'slope',\n  spacing: 'spacing',\n  specularconstant: 'specularConstant',\n  specularexponent: 'specularExponent',\n  speed: 'speed',\n  spreadmethod: 'spreadMethod',\n  startoffset: 'startOffset',\n  stddeviation: 'stdDeviation',\n  stemh: 'stemh',\n  stemv: 'stemv',\n  stitchtiles: 'stitchTiles',\n  stopcolor: 'stopColor',\n  'stop-color': 'stopColor',\n  stopopacity: 'stopOpacity',\n  'stop-opacity': 'stopOpacity',\n  strikethroughposition: 'strikethroughPosition',\n  'strikethrough-position': 'strikethroughPosition',\n  strikethroughthickness: 'strikethroughThickness',\n  'strikethrough-thickness': 'strikethroughThickness',\n  string: 'string',\n  stroke: 'stroke',\n  strokedasharray: 'strokeDasharray',\n  'stroke-dasharray': 'strokeDasharray',\n  strokedashoffset: 'strokeDashoffset',\n  'stroke-dashoffset': 'strokeDashoffset',\n  strokelinecap: 'strokeLinecap',\n  'stroke-linecap': 'strokeLinecap',\n  strokelinejoin: 'strokeLinejoin',\n  'stroke-linejoin': 'strokeLinejoin',\n  strokemiterlimit: 'strokeMiterlimit',\n  'stroke-miterlimit': 'strokeMiterlimit',\n  strokewidth: 'strokeWidth',\n  'stroke-width': 'strokeWidth',\n  strokeopacity: 'strokeOpacity',\n  'stroke-opacity': 'strokeOpacity',\n  suppresscontenteditablewarning: 'suppressContentEditableWarning',\n  suppresshydrationwarning: 'suppressHydrationWarning',\n  surfacescale: 'surfaceScale',\n  systemlanguage: 'systemLanguage',\n  tablevalues: 'tableValues',\n  targetx: 'targetX',\n  targety: 'targetY',\n  textanchor: 'textAnchor',\n  'text-anchor': 'textAnchor',\n  textdecoration: 'textDecoration',\n  'text-decoration': 'textDecoration',\n  textlength: 'textLength',\n  textrendering: 'textRendering',\n  'text-rendering': 'textRendering',\n  to: 'to',\n  transform: 'transform',\n  typeof: 'typeof',\n  u1: 'u1',\n  u2: 'u2',\n  underlineposition: 'underlinePosition',\n  'underline-position': 'underlinePosition',\n  underlinethickness: 'underlineThickness',\n  'underline-thickness': 'underlineThickness',\n  unicode: 'unicode',\n  unicodebidi: 'unicodeBidi',\n  'unicode-bidi': 'unicodeBidi',\n  unicoderange: 'unicodeRange',\n  'unicode-range': 'unicodeRange',\n  unitsperem: 'unitsPerEm',\n  'units-per-em': 'unitsPerEm',\n  unselectable: 'unselectable',\n  valphabetic: 'vAlphabetic',\n  'v-alphabetic': 'vAlphabetic',\n  values: 'values',\n  vectoreffect: 'vectorEffect',\n  'vector-effect': 'vectorEffect',\n  version: 'version',\n  vertadvy: 'vertAdvY',\n  'vert-adv-y': 'vertAdvY',\n  vertoriginx: 'vertOriginX',\n  'vert-origin-x': 'vertOriginX',\n  vertoriginy: 'vertOriginY',\n  'vert-origin-y': 'vertOriginY',\n  vhanging: 'vHanging',\n  'v-hanging': 'vHanging',\n  videographic: 'vIdeographic',\n  'v-ideographic': 'vIdeographic',\n  viewbox: 'viewBox',\n  viewtarget: 'viewTarget',\n  visibility: 'visibility',\n  vmathematical: 'vMathematical',\n  'v-mathematical': 'vMathematical',\n  vocab: 'vocab',\n  widths: 'widths',\n  wordspacing: 'wordSpacing',\n  'word-spacing': 'wordSpacing',\n  writingmode: 'writingMode',\n  'writing-mode': 'writingMode',\n  x1: 'x1',\n  x2: 'x2',\n  x: 'x',\n  xchannelselector: 'xChannelSelector',\n  xheight: 'xHeight',\n  'x-height': 'xHeight',\n  xlinkactuate: 'xlinkActuate',\n  'xlink:actuate': 'xlinkActuate',\n  xlinkarcrole: 'xlinkArcrole',\n  'xlink:arcrole': 'xlinkArcrole',\n  xlinkhref: 'xlinkHref',\n  'xlink:href': 'xlinkHref',\n  xlinkrole: 'xlinkRole',\n  'xlink:role': 'xlinkRole',\n  xlinkshow: 'xlinkShow',\n  'xlink:show': 'xlinkShow',\n  xlinktitle: 'xlinkTitle',\n  'xlink:title': 'xlinkTitle',\n  xlinktype: 'xlinkType',\n  'xlink:type': 'xlinkType',\n  xmlbase: 'xmlBase',\n  'xml:base': 'xmlBase',\n  xmllang: 'xmlLang',\n  'xml:lang': 'xmlLang',\n  xmlns: 'xmlns',\n  'xml:space': 'xmlSpace',\n  xmlnsxlink: 'xmlnsXlink',\n  'xmlns:xlink': 'xmlnsXlink',\n  xmlspace: 'xmlSpace',\n  y1: 'y1',\n  y2: 'y2',\n  y: 'y',\n  ychannelselector: 'yChannelSelector',\n  z: 'z',\n  zoomandpan: 'zoomAndPan'\n};\n\nvar ariaProperties = {\n  'aria-current': 0,\n  // state\n  'aria-description': 0,\n  'aria-details': 0,\n  'aria-disabled': 0,\n  // state\n  'aria-hidden': 0,\n  // state\n  'aria-invalid': 0,\n  // state\n  'aria-keyshortcuts': 0,\n  'aria-label': 0,\n  'aria-roledescription': 0,\n  // Widget Attributes\n  'aria-autocomplete': 0,\n  'aria-checked': 0,\n  'aria-expanded': 0,\n  'aria-haspopup': 0,\n  'aria-level': 0,\n  'aria-modal': 0,\n  'aria-multiline': 0,\n  'aria-multiselectable': 0,\n  'aria-orientation': 0,\n  'aria-placeholder': 0,\n  'aria-pressed': 0,\n  'aria-readonly': 0,\n  'aria-required': 0,\n  'aria-selected': 0,\n  'aria-sort': 0,\n  'aria-valuemax': 0,\n  'aria-valuemin': 0,\n  'aria-valuenow': 0,\n  'aria-valuetext': 0,\n  // Live Region Attributes\n  'aria-atomic': 0,\n  'aria-busy': 0,\n  'aria-live': 0,\n  'aria-relevant': 0,\n  // Drag-and-Drop Attributes\n  'aria-dropeffect': 0,\n  'aria-grabbed': 0,\n  // Relationship Attributes\n  'aria-activedescendant': 0,\n  'aria-colcount': 0,\n  'aria-colindex': 0,\n  'aria-colspan': 0,\n  'aria-controls': 0,\n  'aria-describedby': 0,\n  'aria-errormessage': 0,\n  'aria-flowto': 0,\n  'aria-labelledby': 0,\n  'aria-owns': 0,\n  'aria-posinset': 0,\n  'aria-rowcount': 0,\n  'aria-rowindex': 0,\n  'aria-rowspan': 0,\n  'aria-setsize': 0\n};\n\nvar warnedProperties = {};\nvar rARIA = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');\nvar rARIACamel = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');\n\nfunction validateProperty(tagName, name) {\n  {\n    if (hasOwnProperty.call(warnedProperties, name) && warnedProperties[name]) {\n      return true;\n    }\n\n    if (rARIACamel.test(name)) {\n      var ariaName = 'aria-' + name.slice(4).toLowerCase();\n      var correctName = ariaProperties.hasOwnProperty(ariaName) ? ariaName : null; // If this is an aria-* attribute, but is not listed in the known DOM\n      // DOM properties, then it is an invalid aria-* attribute.\n\n      if (correctName == null) {\n        error('Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.', name);\n\n        warnedProperties[name] = true;\n        return true;\n      } // aria-* attributes should be lowercase; suggest the lowercase version.\n\n\n      if (name !== correctName) {\n        error('Invalid ARIA attribute `%s`. Did you mean `%s`?', name, correctName);\n\n        warnedProperties[name] = true;\n        return true;\n      }\n    }\n\n    if (rARIA.test(name)) {\n      var lowerCasedName = name.toLowerCase();\n      var standardName = ariaProperties.hasOwnProperty(lowerCasedName) ? lowerCasedName : null; // If this is an aria-* attribute, but is not listed in the known DOM\n      // DOM properties, then it is an invalid aria-* attribute.\n\n      if (standardName == null) {\n        warnedProperties[name] = true;\n        return false;\n      } // aria-* attributes should be lowercase; suggest the lowercase version.\n\n\n      if (name !== standardName) {\n        error('Unknown ARIA attribute `%s`. Did you mean `%s`?', name, standardName);\n\n        warnedProperties[name] = true;\n        return true;\n      }\n    }\n  }\n\n  return true;\n}\n\nfunction warnInvalidARIAProps(type, props) {\n  {\n    var invalidProps = [];\n\n    for (var key in props) {\n      var isValid = validateProperty(type, key);\n\n      if (!isValid) {\n        invalidProps.push(key);\n      }\n    }\n\n    var unknownPropString = invalidProps.map(function (prop) {\n      return '`' + prop + '`';\n    }).join(', ');\n\n    if (invalidProps.length === 1) {\n      error('Invalid aria prop %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type);\n    } else if (invalidProps.length > 1) {\n      error('Invalid aria props %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type);\n    }\n  }\n}\n\nfunction validateProperties(type, props) {\n  if (isCustomComponent(type, props)) {\n    return;\n  }\n\n  warnInvalidARIAProps(type, props);\n}\n\nvar didWarnValueNull = false;\nfunction validateProperties$1(type, props) {\n  {\n    if (type !== 'input' && type !== 'textarea' && type !== 'select') {\n      return;\n    }\n\n    if (props != null && props.value === null && !didWarnValueNull) {\n      didWarnValueNull = true;\n\n      if (type === 'select' && props.multiple) {\n        error('`value` prop on `%s` should not be null. ' + 'Consider using an empty array when `multiple` is set to `true` ' + 'to clear the component or `undefined` for uncontrolled components.', type);\n      } else {\n        error('`value` prop on `%s` should not be null. ' + 'Consider using an empty string to clear the component or `undefined` ' + 'for uncontrolled components.', type);\n      }\n    }\n  }\n}\n\nvar validateProperty$1 = function () {};\n\n{\n  var warnedProperties$1 = {};\n  var EVENT_NAME_REGEX = /^on./;\n  var INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/;\n  var rARIA$1 = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');\n  var rARIACamel$1 = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');\n\n  validateProperty$1 = function (tagName, name, value, eventRegistry) {\n    if (hasOwnProperty.call(warnedProperties$1, name) && warnedProperties$1[name]) {\n      return true;\n    }\n\n    var lowerCasedName = name.toLowerCase();\n\n    if (lowerCasedName === 'onfocusin' || lowerCasedName === 'onfocusout') {\n      error('React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.');\n\n      warnedProperties$1[name] = true;\n      return true;\n    } // We can't rely on the event system being injected on the server.\n\n\n    if (eventRegistry != null) {\n      var registrationNameDependencies = eventRegistry.registrationNameDependencies,\n          possibleRegistrationNames = eventRegistry.possibleRegistrationNames;\n\n      if (registrationNameDependencies.hasOwnProperty(name)) {\n        return true;\n      }\n\n      var registrationName = possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames[lowerCasedName] : null;\n\n      if (registrationName != null) {\n        error('Invalid event handler property `%s`. Did you mean `%s`?', name, registrationName);\n\n        warnedProperties$1[name] = true;\n        return true;\n      }\n\n      if (EVENT_NAME_REGEX.test(name)) {\n        error('Unknown event handler property `%s`. It will be ignored.', name);\n\n        warnedProperties$1[name] = true;\n        return true;\n      }\n    } else if (EVENT_NAME_REGEX.test(name)) {\n      // If no event plugins have been injected, we are in a server environment.\n      // So we can't tell if the event name is correct for sure, but we can filter\n      // out known bad ones like `onclick`. We can't suggest a specific replacement though.\n      if (INVALID_EVENT_NAME_REGEX.test(name)) {\n        error('Invalid event handler property `%s`. ' + 'React events use the camelCase naming convention, for example `onClick`.', name);\n      }\n\n      warnedProperties$1[name] = true;\n      return true;\n    } // Let the ARIA attribute hook validate ARIA attributes\n\n\n    if (rARIA$1.test(name) || rARIACamel$1.test(name)) {\n      return true;\n    }\n\n    if (lowerCasedName === 'innerhtml') {\n      error('Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.');\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (lowerCasedName === 'aria') {\n      error('The `aria` attribute is reserved for future use in React. ' + 'Pass individual `aria-` attributes instead.');\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (lowerCasedName === 'is' && value !== null && value !== undefined && typeof value !== 'string') {\n      error('Received a `%s` for a string attribute `is`. If this is expected, cast ' + 'the value to a string.', typeof value);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (typeof value === 'number' && isNaN(value)) {\n      error('Received NaN for the `%s` attribute. If this is expected, cast ' + 'the value to a string.', name);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    var propertyInfo = getPropertyInfo(name);\n    var isReserved = propertyInfo !== null && propertyInfo.type === RESERVED; // Known attributes should match the casing specified in the property config.\n\n    if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n      var standardName = possibleStandardNames[lowerCasedName];\n\n      if (standardName !== name) {\n        error('Invalid DOM property `%s`. Did you mean `%s`?', name, standardName);\n\n        warnedProperties$1[name] = true;\n        return true;\n      }\n    } else if (!isReserved && name !== lowerCasedName) {\n      // Unknown attributes should have lowercase casing since that's how they\n      // will be cased anyway with server rendering.\n      error('React does not recognize the `%s` prop on a DOM element. If you ' + 'intentionally want it to appear in the DOM as a custom ' + 'attribute, spell it as lowercase `%s` instead. ' + 'If you accidentally passed it from a parent component, remove ' + 'it from the DOM element.', name, lowerCasedName);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (typeof value === 'boolean' && shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {\n      if (value) {\n        error('Received `%s` for a non-boolean attribute `%s`.\\n\\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s=\"%s\" or %s={value.toString()}.', value, name, name, value, name);\n      } else {\n        error('Received `%s` for a non-boolean attribute `%s`.\\n\\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s=\"%s\" or %s={value.toString()}.\\n\\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', value, name, name, value, name, name, name);\n      }\n\n      warnedProperties$1[name] = true;\n      return true;\n    } // Now that we've validated casing, do not validate\n    // data types for reserved props\n\n\n    if (isReserved) {\n      return true;\n    } // Warn when a known attribute is a bad type\n\n\n    if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {\n      warnedProperties$1[name] = true;\n      return false;\n    } // Warn when passing the strings 'false' or 'true' into a boolean prop\n\n\n    if ((value === 'false' || value === 'true') && propertyInfo !== null && propertyInfo.type === BOOLEAN) {\n      error('Received the string `%s` for the boolean attribute `%s`. ' + '%s ' + 'Did you mean %s={%s}?', value, name, value === 'false' ? 'The browser will interpret it as a truthy value.' : 'Although this works, it will not work as expected if you pass the string \"false\".', name, value);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    return true;\n  };\n}\n\nvar warnUnknownProperties = function (type, props, eventRegistry) {\n  {\n    var unknownProps = [];\n\n    for (var key in props) {\n      var isValid = validateProperty$1(type, key, props[key], eventRegistry);\n\n      if (!isValid) {\n        unknownProps.push(key);\n      }\n    }\n\n    var unknownPropString = unknownProps.map(function (prop) {\n      return '`' + prop + '`';\n    }).join(', ');\n\n    if (unknownProps.length === 1) {\n      error('Invalid value for prop %s on <%s> tag. Either remove it from the element, ' + 'or pass a string or number value to keep it in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type);\n    } else if (unknownProps.length > 1) {\n      error('Invalid values for props %s on <%s> tag. Either remove them from the element, ' + 'or pass a string or number value to keep them in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type);\n    }\n  }\n};\n\nfunction validateProperties$2(type, props, eventRegistry) {\n  if (isCustomComponent(type, props)) {\n    return;\n  }\n\n  warnUnknownProperties(type, props, eventRegistry);\n}\n\nvar IS_EVENT_HANDLE_NON_MANAGED_NODE = 1;\nvar IS_NON_DELEGATED = 1 << 1;\nvar IS_CAPTURE_PHASE = 1 << 2;\n// set to LEGACY_FB_SUPPORT. LEGACY_FB_SUPPORT only gets set when\n// we call willDeferLaterForLegacyFBSupport, thus not bailing out\n// will result in endless cycles like an infinite loop.\n// We also don't want to defer during event replaying.\n\nvar SHOULD_NOT_PROCESS_POLYFILL_EVENT_PLUGINS = IS_EVENT_HANDLE_NON_MANAGED_NODE | IS_NON_DELEGATED | IS_CAPTURE_PHASE;\n\n// This exists to avoid circular dependency between ReactDOMEventReplaying\n// and DOMPluginEventSystem.\nvar currentReplayingEvent = null;\nfunction setReplayingEvent(event) {\n  {\n    if (currentReplayingEvent !== null) {\n      error('Expected currently replaying event to be null. This error ' + 'is likely caused by a bug in React. Please file an issue.');\n    }\n  }\n\n  currentReplayingEvent = event;\n}\nfunction resetReplayingEvent() {\n  {\n    if (currentReplayingEvent === null) {\n      error('Expected currently replaying event to not be null. This error ' + 'is likely caused by a bug in React. Please file an issue.');\n    }\n  }\n\n  currentReplayingEvent = null;\n}\nfunction isReplayingEvent(event) {\n  return event === currentReplayingEvent;\n}\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n  // Fallback to nativeEvent.srcElement for IE9\n  // https://github.com/facebook/react/issues/12506\n  var target = nativeEvent.target || nativeEvent.srcElement || window; // Normalize SVG <use> element events #4963\n\n  if (target.correspondingUseElement) {\n    target = target.correspondingUseElement;\n  } // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n  // @see http://www.quirksmode.org/js/events_properties.html\n\n\n  return target.nodeType === TEXT_NODE ? target.parentNode : target;\n}\n\nvar restoreImpl = null;\nvar restoreTarget = null;\nvar restoreQueue = null;\n\nfunction restoreStateOfTarget(target) {\n  // We perform this translation at the end of the event loop so that we\n  // always receive the correct fiber here\n  var internalInstance = getInstanceFromNode(target);\n\n  if (!internalInstance) {\n    // Unmounted\n    return;\n  }\n\n  if (typeof restoreImpl !== 'function') {\n    throw new Error('setRestoreImplementation() needs to be called to handle a target for controlled ' + 'events. This error is likely caused by a bug in React. Please file an issue.');\n  }\n\n  var stateNode = internalInstance.stateNode; // Guard against Fiber being unmounted.\n\n  if (stateNode) {\n    var _props = getFiberCurrentPropsFromNode(stateNode);\n\n    restoreImpl(internalInstance.stateNode, internalInstance.type, _props);\n  }\n}\n\nfunction setRestoreImplementation(impl) {\n  restoreImpl = impl;\n}\nfunction enqueueStateRestore(target) {\n  if (restoreTarget) {\n    if (restoreQueue) {\n      restoreQueue.push(target);\n    } else {\n      restoreQueue = [target];\n    }\n  } else {\n    restoreTarget = target;\n  }\n}\nfunction needsStateRestore() {\n  return restoreTarget !== null || restoreQueue !== null;\n}\nfunction restoreStateIfNeeded() {\n  if (!restoreTarget) {\n    return;\n  }\n\n  var target = restoreTarget;\n  var queuedTargets = restoreQueue;\n  restoreTarget = null;\n  restoreQueue = null;\n  restoreStateOfTarget(target);\n\n  if (queuedTargets) {\n    for (var i = 0; i < queuedTargets.length; i++) {\n      restoreStateOfTarget(queuedTargets[i]);\n    }\n  }\n}\n\n// the renderer. Such as when we're dispatching events or if third party\n// libraries need to call batchedUpdates. Eventually, this API will go away when\n// everything is batched by default. We'll then have a similar API to opt-out of\n// scheduled work and instead do synchronous work.\n// Defaults\n\nvar batchedUpdatesImpl = function (fn, bookkeeping) {\n  return fn(bookkeeping);\n};\n\nvar flushSyncImpl = function () {};\n\nvar isInsideEventHandler = false;\n\nfunction finishEventHandler() {\n  // Here we wait until all updates have propagated, which is important\n  // when using controlled components within layers:\n  // https://github.com/facebook/react/issues/1698\n  // Then we restore state of any controlled component.\n  var controlledComponentsHavePendingUpdates = needsStateRestore();\n\n  if (controlledComponentsHavePendingUpdates) {\n    // If a controlled event was fired, we may need to restore the state of\n    // the DOM node back to the controlled value. This is necessary when React\n    // bails out of the update without touching the DOM.\n    // TODO: Restore state in the microtask, after the discrete updates flush,\n    // instead of early flushing them here.\n    flushSyncImpl();\n    restoreStateIfNeeded();\n  }\n}\n\nfunction batchedUpdates(fn, a, b) {\n  if (isInsideEventHandler) {\n    // If we are currently inside another batch, we need to wait until it\n    // fully completes before restoring state.\n    return fn(a, b);\n  }\n\n  isInsideEventHandler = true;\n\n  try {\n    return batchedUpdatesImpl(fn, a, b);\n  } finally {\n    isInsideEventHandler = false;\n    finishEventHandler();\n  }\n} // TODO: Replace with flushSync\nfunction setBatchingImplementation(_batchedUpdatesImpl, _discreteUpdatesImpl, _flushSyncImpl) {\n  batchedUpdatesImpl = _batchedUpdatesImpl;\n  flushSyncImpl = _flushSyncImpl;\n}\n\nfunction isInteractive(tag) {\n  return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n  switch (name) {\n    case 'onClick':\n    case 'onClickCapture':\n    case 'onDoubleClick':\n    case 'onDoubleClickCapture':\n    case 'onMouseDown':\n    case 'onMouseDownCapture':\n    case 'onMouseMove':\n    case 'onMouseMoveCapture':\n    case 'onMouseUp':\n    case 'onMouseUpCapture':\n    case 'onMouseEnter':\n      return !!(props.disabled && isInteractive(type));\n\n    default:\n      return false;\n  }\n}\n/**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n\n\nfunction getListener(inst, registrationName) {\n  var stateNode = inst.stateNode;\n\n  if (stateNode === null) {\n    // Work in progress (ex: onload events in incremental mode).\n    return null;\n  }\n\n  var props = getFiberCurrentPropsFromNode(stateNode);\n\n  if (props === null) {\n    // Work in progress.\n    return null;\n  }\n\n  var listener = props[registrationName];\n\n  if (shouldPreventMouseEvent(registrationName, inst.type, props)) {\n    return null;\n  }\n\n  if (listener && typeof listener !== 'function') {\n    throw new Error(\"Expected `\" + registrationName + \"` listener to be a function, instead got a value of `\" + typeof listener + \"` type.\");\n  }\n\n  return listener;\n}\n\nvar passiveBrowserEventsSupported = false; // Check if browser support events with passive listeners\n// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n\nif (canUseDOM) {\n  try {\n    var options = {}; // $FlowFixMe: Ignore Flow complaining about needing a value\n\n    Object.defineProperty(options, 'passive', {\n      get: function () {\n        passiveBrowserEventsSupported = true;\n      }\n    });\n    window.addEventListener('test', options, options);\n    window.removeEventListener('test', options, options);\n  } catch (e) {\n    passiveBrowserEventsSupported = false;\n  }\n}\n\nfunction invokeGuardedCallbackProd(name, func, context, a, b, c, d, e, f) {\n  var funcArgs = Array.prototype.slice.call(arguments, 3);\n\n  try {\n    func.apply(context, funcArgs);\n  } catch (error) {\n    this.onError(error);\n  }\n}\n\nvar invokeGuardedCallbackImpl = invokeGuardedCallbackProd;\n\n{\n  // In DEV mode, we swap out invokeGuardedCallback for a special version\n  // that plays more nicely with the browser's DevTools. The idea is to preserve\n  // \"Pause on exceptions\" behavior. Because React wraps all user-provided\n  // functions in invokeGuardedCallback, and the production version of\n  // invokeGuardedCallback uses a try-catch, all user exceptions are treated\n  // like caught exceptions, and the DevTools won't pause unless the developer\n  // takes the extra step of enabling pause on caught exceptions. This is\n  // unintuitive, though, because even though React has caught the error, from\n  // the developer's perspective, the error is uncaught.\n  //\n  // To preserve the expected \"Pause on exceptions\" behavior, we don't use a\n  // try-catch in DEV. Instead, we synchronously dispatch a fake event to a fake\n  // DOM node, and call the user-provided callback from inside an event handler\n  // for that fake event. If the callback throws, the error is \"captured\" using\n  // a global event handler. But because the error happens in a different\n  // event loop context, it does not interrupt the normal program flow.\n  // Effectively, this gives us try-catch behavior without actually using\n  // try-catch. Neat!\n  // Check that the browser supports the APIs we need to implement our special\n  // DEV version of invokeGuardedCallback\n  if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n    var fakeNode = document.createElement('react');\n\n    invokeGuardedCallbackImpl = function invokeGuardedCallbackDev(name, func, context, a, b, c, d, e, f) {\n      // If document doesn't exist we know for sure we will crash in this method\n      // when we call document.createEvent(). However this can cause confusing\n      // errors: https://github.com/facebook/create-react-app/issues/3482\n      // So we preemptively throw with a better message instead.\n      if (typeof document === 'undefined' || document === null) {\n        throw new Error('The `document` global was defined when React was initialized, but is not ' + 'defined anymore. This can happen in a test environment if a component ' + 'schedules an update from an asynchronous callback, but the test has already ' + 'finished running. To solve this, you can either unmount the component at ' + 'the end of your test (and ensure that any asynchronous operations get ' + 'canceled in `componentWillUnmount`), or you can change the test itself ' + 'to be asynchronous.');\n      }\n\n      var evt = document.createEvent('Event');\n      var didCall = false; // Keeps track of whether the user-provided callback threw an error. We\n      // set this to true at the beginning, then set it to false right after\n      // calling the function. If the function errors, `didError` will never be\n      // set to false. This strategy works even if the browser is flaky and\n      // fails to call our global error handler, because it doesn't rely on\n      // the error event at all.\n\n      var didError = true; // Keeps track of the value of window.event so that we can reset it\n      // during the callback to let user code access window.event in the\n      // browsers that support it.\n\n      var windowEvent = window.event; // Keeps track of the descriptor of window.event to restore it after event\n      // dispatching: https://github.com/facebook/react/issues/13688\n\n      var windowEventDescriptor = Object.getOwnPropertyDescriptor(window, 'event');\n\n      function restoreAfterDispatch() {\n        // We immediately remove the callback from event listeners so that\n        // nested `invokeGuardedCallback` calls do not clash. Otherwise, a\n        // nested call would trigger the fake event handlers of any call higher\n        // in the stack.\n        fakeNode.removeEventListener(evtType, callCallback, false); // We check for window.hasOwnProperty('event') to prevent the\n        // window.event assignment in both IE <= 10 as they throw an error\n        // \"Member not found\" in strict mode, and in Firefox which does not\n        // support window.event.\n\n        if (typeof window.event !== 'undefined' && window.hasOwnProperty('event')) {\n          window.event = windowEvent;\n        }\n      } // Create an event handler for our fake event. We will synchronously\n      // dispatch our fake event using `dispatchEvent`. Inside the handler, we\n      // call the user-provided callback.\n\n\n      var funcArgs = Array.prototype.slice.call(arguments, 3);\n\n      function callCallback() {\n        didCall = true;\n        restoreAfterDispatch();\n        func.apply(context, funcArgs);\n        didError = false;\n      } // Create a global error event handler. We use this to capture the value\n      // that was thrown. It's possible that this error handler will fire more\n      // than once; for example, if non-React code also calls `dispatchEvent`\n      // and a handler for that event throws. We should be resilient to most of\n      // those cases. Even if our error event handler fires more than once, the\n      // last error event is always used. If the callback actually does error,\n      // we know that the last error event is the correct one, because it's not\n      // possible for anything else to have happened in between our callback\n      // erroring and the code that follows the `dispatchEvent` call below. If\n      // the callback doesn't error, but the error event was fired, we know to\n      // ignore it because `didError` will be false, as described above.\n\n\n      var error; // Use this to track whether the error event is ever called.\n\n      var didSetError = false;\n      var isCrossOriginError = false;\n\n      function handleWindowError(event) {\n        error = event.error;\n        didSetError = true;\n\n        if (error === null && event.colno === 0 && event.lineno === 0) {\n          isCrossOriginError = true;\n        }\n\n        if (event.defaultPrevented) {\n          // Some other error handler has prevented default.\n          // Browsers silence the error report if this happens.\n          // We'll remember this to later decide whether to log it or not.\n          if (error != null && typeof error === 'object') {\n            try {\n              error._suppressLogging = true;\n            } catch (inner) {// Ignore.\n            }\n          }\n        }\n      } // Create a fake event type.\n\n\n      var evtType = \"react-\" + (name ? name : 'invokeguardedcallback'); // Attach our event handlers\n\n      window.addEventListener('error', handleWindowError);\n      fakeNode.addEventListener(evtType, callCallback, false); // Synchronously dispatch our fake event. If the user-provided function\n      // errors, it will trigger our global error handler.\n\n      evt.initEvent(evtType, false, false);\n      fakeNode.dispatchEvent(evt);\n\n      if (windowEventDescriptor) {\n        Object.defineProperty(window, 'event', windowEventDescriptor);\n      }\n\n      if (didCall && didError) {\n        if (!didSetError) {\n          // The callback errored, but the error event never fired.\n          // eslint-disable-next-line react-internal/prod-error-codes\n          error = new Error('An error was thrown inside one of your components, but React ' + \"doesn't know what it was. This is likely due to browser \" + 'flakiness. React does its best to preserve the \"Pause on ' + 'exceptions\" behavior of the DevTools, which requires some ' + \"DEV-mode only tricks. It's possible that these don't work in \" + 'your browser. Try triggering the error in production mode, ' + 'or switching to a modern browser. If you suspect that this is ' + 'actually an issue with React, please file an issue.');\n        } else if (isCrossOriginError) {\n          // eslint-disable-next-line react-internal/prod-error-codes\n          error = new Error(\"A cross-origin error was thrown. React doesn't have access to \" + 'the actual error object in development. ' + 'See https://reactjs.org/link/crossorigin-error for more information.');\n        }\n\n        this.onError(error);\n      } // Remove our event listeners\n\n\n      window.removeEventListener('error', handleWindowError);\n\n      if (!didCall) {\n        // Something went really wrong, and our event was not dispatched.\n        // https://github.com/facebook/react/issues/16734\n        // https://github.com/facebook/react/issues/16585\n        // Fall back to the production implementation.\n        restoreAfterDispatch();\n        return invokeGuardedCallbackProd.apply(this, arguments);\n      }\n    };\n  }\n}\n\nvar invokeGuardedCallbackImpl$1 = invokeGuardedCallbackImpl;\n\nvar hasError = false;\nvar caughtError = null; // Used by event system to capture/rethrow the first error.\n\nvar hasRethrowError = false;\nvar rethrowError = null;\nvar reporter = {\n  onError: function (error) {\n    hasError = true;\n    caughtError = error;\n  }\n};\n/**\n * Call a function while guarding against errors that happens within it.\n * Returns an error if it throws, otherwise null.\n *\n * In production, this is implemented using a try-catch. The reason we don't\n * use a try-catch directly is so that we can swap out a different\n * implementation in DEV mode.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} context The context to use when calling the function\n * @param {...*} args Arguments for function\n */\n\nfunction invokeGuardedCallback(name, func, context, a, b, c, d, e, f) {\n  hasError = false;\n  caughtError = null;\n  invokeGuardedCallbackImpl$1.apply(reporter, arguments);\n}\n/**\n * Same as invokeGuardedCallback, but instead of returning an error, it stores\n * it in a global so it can be rethrown by `rethrowCaughtError` later.\n * TODO: See if caughtError and rethrowError can be unified.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} context The context to use when calling the function\n * @param {...*} args Arguments for function\n */\n\nfunction invokeGuardedCallbackAndCatchFirstError(name, func, context, a, b, c, d, e, f) {\n  invokeGuardedCallback.apply(this, arguments);\n\n  if (hasError) {\n    var error = clearCaughtError();\n\n    if (!hasRethrowError) {\n      hasRethrowError = true;\n      rethrowError = error;\n    }\n  }\n}\n/**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n\nfunction rethrowCaughtError() {\n  if (hasRethrowError) {\n    var error = rethrowError;\n    hasRethrowError = false;\n    rethrowError = null;\n    throw error;\n  }\n}\nfunction hasCaughtError() {\n  return hasError;\n}\nfunction clearCaughtError() {\n  if (hasError) {\n    var error = caughtError;\n    hasError = false;\n    caughtError = null;\n    return error;\n  } else {\n    throw new Error('clearCaughtError was called but no error was captured. This error ' + 'is likely caused by a bug in React. Please file an issue.');\n  }\n}\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n *\n * Note that this module is currently shared and assumed to be stateless.\n * If this becomes an actual Map, that will break.\n */\nfunction get(key) {\n  return key._reactInternals;\n}\nfunction has(key) {\n  return key._reactInternals !== undefined;\n}\nfunction set(key, value) {\n  key._reactInternals = value;\n}\n\n// Don't change these two values. They're used by React Dev Tools.\nvar NoFlags =\n/*                      */\n0;\nvar PerformedWork =\n/*                */\n1; // You can change the rest (and add more).\n\nvar Placement =\n/*                    */\n2;\nvar Update =\n/*                       */\n4;\nvar ChildDeletion =\n/*                */\n16;\nvar ContentReset =\n/*                 */\n32;\nvar Callback =\n/*                     */\n64;\nvar DidCapture =\n/*                   */\n128;\nvar ForceClientRender =\n/*            */\n256;\nvar Ref =\n/*                          */\n512;\nvar Snapshot =\n/*                     */\n1024;\nvar Passive =\n/*                      */\n2048;\nvar Hydrating =\n/*                    */\n4096;\nvar Visibility =\n/*                   */\n8192;\nvar StoreConsistency =\n/*             */\n16384;\nvar LifecycleEffectMask = Passive | Update | Callback | Ref | Snapshot | StoreConsistency; // Union of all commit flags (flags with the lifetime of a particular commit)\n\nvar HostEffectMask =\n/*               */\n32767; // These are not really side effects, but we still reuse this field.\n\nvar Incomplete =\n/*                   */\n32768;\nvar ShouldCapture =\n/*                */\n65536;\nvar ForceUpdateForLegacySuspense =\n/* */\n131072;\nvar Forked =\n/*                       */\n1048576; // Static tags describe aspects of a fiber that are not specific to a render,\n// e.g. a fiber uses a passive effect (even if there are no updates on this particular render).\n// This enables us to defer more work in the unmount case,\n// since we can defer traversing the tree during layout to look for Passive effects,\n// and instead rely on the static flag as a signal that there may be cleanup work.\n\nvar RefStatic =\n/*                    */\n2097152;\nvar LayoutStatic =\n/*                 */\n4194304;\nvar PassiveStatic =\n/*                */\n8388608; // These flags allow us to traverse to fibers that have effects on mount\n// without traversing the entire tree after every commit for\n// double invoking\n\nvar MountLayoutDev =\n/*               */\n16777216;\nvar MountPassiveDev =\n/*              */\n33554432; // Groups of flags that are used in the commit phase to skip over trees that\n// don't contain effects, by checking subtreeFlags.\n\nvar BeforeMutationMask = // TODO: Remove Update flag from before mutation phase by re-landing Visibility\n// flag logic (see #20043)\nUpdate | Snapshot | ( 0);\nvar MutationMask = Placement | Update | ChildDeletion | ContentReset | Ref | Hydrating | Visibility;\nvar LayoutMask = Update | Callback | Ref | Visibility; // TODO: Split into PassiveMountMask and PassiveUnmountMask\n\nvar PassiveMask = Passive | ChildDeletion; // Union of tags that don't get reset on clones.\n// This allows certain concepts to persist without recalculating them,\n// e.g. whether a subtree contains passive effects or portals.\n\nvar StaticMask = LayoutStatic | PassiveStatic | RefStatic;\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nfunction getNearestMountedFiber(fiber) {\n  var node = fiber;\n  var nearestMounted = fiber;\n\n  if (!fiber.alternate) {\n    // If there is no alternate, this might be a new tree that isn't inserted\n    // yet. If it is, then it will have a pending insertion effect on it.\n    var nextNode = node;\n\n    do {\n      node = nextNode;\n\n      if ((node.flags & (Placement | Hydrating)) !== NoFlags) {\n        // This is an insertion or in-progress hydration. The nearest possible\n        // mounted fiber is the parent but we need to continue to figure out\n        // if that one is still mounted.\n        nearestMounted = node.return;\n      }\n\n      nextNode = node.return;\n    } while (nextNode);\n  } else {\n    while (node.return) {\n      node = node.return;\n    }\n  }\n\n  if (node.tag === HostRoot) {\n    // TODO: Check if this was a nested HostRoot when used with\n    // renderContainerIntoSubtree.\n    return nearestMounted;\n  } // If we didn't hit the root, that means that we're in an disconnected tree\n  // that has been unmounted.\n\n\n  return null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n  if (fiber.tag === SuspenseComponent) {\n    var suspenseState = fiber.memoizedState;\n\n    if (suspenseState === null) {\n      var current = fiber.alternate;\n\n      if (current !== null) {\n        suspenseState = current.memoizedState;\n      }\n    }\n\n    if (suspenseState !== null) {\n      return suspenseState.dehydrated;\n    }\n  }\n\n  return null;\n}\nfunction getContainerFromFiber(fiber) {\n  return fiber.tag === HostRoot ? fiber.stateNode.containerInfo : null;\n}\nfunction isFiberMounted(fiber) {\n  return getNearestMountedFiber(fiber) === fiber;\n}\nfunction isMounted(component) {\n  {\n    var owner = ReactCurrentOwner.current;\n\n    if (owner !== null && owner.tag === ClassComponent) {\n      var ownerFiber = owner;\n      var instance = ownerFiber.stateNode;\n\n      if (!instance._warnedAboutRefsInRender) {\n        error('%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentNameFromFiber(ownerFiber) || 'A component');\n      }\n\n      instance._warnedAboutRefsInRender = true;\n    }\n  }\n\n  var fiber = get(component);\n\n  if (!fiber) {\n    return false;\n  }\n\n  return getNearestMountedFiber(fiber) === fiber;\n}\n\nfunction assertIsMounted(fiber) {\n  if (getNearestMountedFiber(fiber) !== fiber) {\n    throw new Error('Unable to find node on an unmounted component.');\n  }\n}\n\nfunction findCurrentFiberUsingSlowPath(fiber) {\n  var alternate = fiber.alternate;\n\n  if (!alternate) {\n    // If there is no alternate, then we only need to check if it is mounted.\n    var nearestMounted = getNearestMountedFiber(fiber);\n\n    if (nearestMounted === null) {\n      throw new Error('Unable to find node on an unmounted component.');\n    }\n\n    if (nearestMounted !== fiber) {\n      return null;\n    }\n\n    return fiber;\n  } // If we have two possible branches, we'll walk backwards up to the root\n  // to see what path the root points to. On the way we may hit one of the\n  // special cases and we'll deal with them.\n\n\n  var a = fiber;\n  var b = alternate;\n\n  while (true) {\n    var parentA = a.return;\n\n    if (parentA === null) {\n      // We're at the root.\n      break;\n    }\n\n    var parentB = parentA.alternate;\n\n    if (parentB === null) {\n      // There is no alternate. This is an unusual case. Currently, it only\n      // happens when a Suspense component is hidden. An extra fragment fiber\n      // is inserted in between the Suspense fiber and its children. Skip\n      // over this extra fragment fiber and proceed to the next parent.\n      var nextParent = parentA.return;\n\n      if (nextParent !== null) {\n        a = b = nextParent;\n        continue;\n      } // If there's no parent, we're at the root.\n\n\n      break;\n    } // If both copies of the parent fiber point to the same child, we can\n    // assume that the child is current. This happens when we bailout on low\n    // priority: the bailed out fiber's child reuses the current child.\n\n\n    if (parentA.child === parentB.child) {\n      var child = parentA.child;\n\n      while (child) {\n        if (child === a) {\n          // We've determined that A is the current branch.\n          assertIsMounted(parentA);\n          return fiber;\n        }\n\n        if (child === b) {\n          // We've determined that B is the current branch.\n          assertIsMounted(parentA);\n          return alternate;\n        }\n\n        child = child.sibling;\n      } // We should never have an alternate for any mounting node. So the only\n      // way this could possibly happen is if this was unmounted, if at all.\n\n\n      throw new Error('Unable to find node on an unmounted component.');\n    }\n\n    if (a.return !== b.return) {\n      // The return pointer of A and the return pointer of B point to different\n      // fibers. We assume that return pointers never criss-cross, so A must\n      // belong to the child set of A.return, and B must belong to the child\n      // set of B.return.\n      a = parentA;\n      b = parentB;\n    } else {\n      // The return pointers point to the same fiber. We'll have to use the\n      // default, slow path: scan the child sets of each parent alternate to see\n      // which child belongs to which set.\n      //\n      // Search parent A's child set\n      var didFindChild = false;\n      var _child = parentA.child;\n\n      while (_child) {\n        if (_child === a) {\n          didFindChild = true;\n          a = parentA;\n          b = parentB;\n          break;\n        }\n\n        if (_child === b) {\n          didFindChild = true;\n          b = parentA;\n          a = parentB;\n          break;\n        }\n\n        _child = _child.sibling;\n      }\n\n      if (!didFindChild) {\n        // Search parent B's child set\n        _child = parentB.child;\n\n        while (_child) {\n          if (_child === a) {\n            didFindChild = true;\n            a = parentB;\n            b = parentA;\n            break;\n          }\n\n          if (_child === b) {\n            didFindChild = true;\n            b = parentB;\n            a = parentA;\n            break;\n          }\n\n          _child = _child.sibling;\n        }\n\n        if (!didFindChild) {\n          throw new Error('Child was not found in either parent set. This indicates a bug ' + 'in React related to the return pointer. Please file an issue.');\n        }\n      }\n    }\n\n    if (a.alternate !== b) {\n      throw new Error(\"Return fibers should always be each others' alternates. \" + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n  } // If the root is not a host container, we're in a disconnected tree. I.e.\n  // unmounted.\n\n\n  if (a.tag !== HostRoot) {\n    throw new Error('Unable to find node on an unmounted component.');\n  }\n\n  if (a.stateNode.current === a) {\n    // We've determined that A is the current branch.\n    return fiber;\n  } // Otherwise B has to be current branch.\n\n\n  return alternate;\n}\nfunction findCurrentHostFiber(parent) {\n  var currentParent = findCurrentFiberUsingSlowPath(parent);\n  return currentParent !== null ? findCurrentHostFiberImpl(currentParent) : null;\n}\n\nfunction findCurrentHostFiberImpl(node) {\n  // Next we'll drill down this component to find the first HostComponent/Text.\n  if (node.tag === HostComponent || node.tag === HostText) {\n    return node;\n  }\n\n  var child = node.child;\n\n  while (child !== null) {\n    var match = findCurrentHostFiberImpl(child);\n\n    if (match !== null) {\n      return match;\n    }\n\n    child = child.sibling;\n  }\n\n  return null;\n}\n\nfunction findCurrentHostFiberWithNoPortals(parent) {\n  var currentParent = findCurrentFiberUsingSlowPath(parent);\n  return currentParent !== null ? findCurrentHostFiberWithNoPortalsImpl(currentParent) : null;\n}\n\nfunction findCurrentHostFiberWithNoPortalsImpl(node) {\n  // Next we'll drill down this component to find the first HostComponent/Text.\n  if (node.tag === HostComponent || node.tag === HostText) {\n    return node;\n  }\n\n  var child = node.child;\n\n  while (child !== null) {\n    if (child.tag !== HostPortal) {\n      var match = findCurrentHostFiberWithNoPortalsImpl(child);\n\n      if (match !== null) {\n        return match;\n      }\n    }\n\n    child = child.sibling;\n  }\n\n  return null;\n}\n\n// This module only exists as an ESM wrapper around the external CommonJS\nvar scheduleCallback = Scheduler.unstable_scheduleCallback;\nvar cancelCallback = Scheduler.unstable_cancelCallback;\nvar shouldYield = Scheduler.unstable_shouldYield;\nvar requestPaint = Scheduler.unstable_requestPaint;\nvar now = Scheduler.unstable_now;\nvar getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel;\nvar ImmediatePriority = Scheduler.unstable_ImmediatePriority;\nvar UserBlockingPriority = Scheduler.unstable_UserBlockingPriority;\nvar NormalPriority = Scheduler.unstable_NormalPriority;\nvar LowPriority = Scheduler.unstable_LowPriority;\nvar IdlePriority = Scheduler.unstable_IdlePriority;\n// this doesn't actually exist on the scheduler, but it *does*\n// on scheduler/unstable_mock, which we'll need for internal testing\nvar unstable_yieldValue = Scheduler.unstable_yieldValue;\nvar unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue;\n\nvar rendererID = null;\nvar injectedHook = null;\nvar injectedProfilingHooks = null;\nvar hasLoggedError = false;\nvar isDevToolsPresent = typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined';\nfunction injectInternals(internals) {\n  if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n    // No DevTools\n    return false;\n  }\n\n  var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n\n  if (hook.isDisabled) {\n    // This isn't a real property on the hook, but it can be set to opt out\n    // of DevTools integration and associated warnings and logs.\n    // https://github.com/facebook/react/issues/3877\n    return true;\n  }\n\n  if (!hook.supportsFiber) {\n    {\n      error('The installed version of React DevTools is too old and will not work ' + 'with the current version of React. Please update React DevTools. ' + 'https://reactjs.org/link/react-devtools');\n    } // DevTools exists, even though it doesn't support Fiber.\n\n\n    return true;\n  }\n\n  try {\n    if (enableSchedulingProfiler) {\n      // Conditionally inject these hooks only if Timeline profiler is supported by this build.\n      // This gives DevTools a way to feature detect that isn't tied to version number\n      // (since profiling and timeline are controlled by different feature flags).\n      internals = assign({}, internals, {\n        getLaneLabelMap: getLaneLabelMap,\n        injectProfilingHooks: injectProfilingHooks\n      });\n    }\n\n    rendererID = hook.inject(internals); // We have successfully injected, so now it is safe to set up hooks.\n\n    injectedHook = hook;\n  } catch (err) {\n    // Catch all errors because it is unsafe to throw during initialization.\n    {\n      error('React instrumentation encountered an error: %s.', err);\n    }\n  }\n\n  if (hook.checkDCE) {\n    // This is the real DevTools.\n    return true;\n  } else {\n    // This is likely a hook installed by Fast Refresh runtime.\n    return false;\n  }\n}\nfunction onScheduleRoot(root, children) {\n  {\n    if (injectedHook && typeof injectedHook.onScheduleFiberRoot === 'function') {\n      try {\n        injectedHook.onScheduleFiberRoot(rendererID, root, children);\n      } catch (err) {\n        if ( !hasLoggedError) {\n          hasLoggedError = true;\n\n          error('React instrumentation encountered an error: %s', err);\n        }\n      }\n    }\n  }\n}\nfunction onCommitRoot(root, eventPriority) {\n  if (injectedHook && typeof injectedHook.onCommitFiberRoot === 'function') {\n    try {\n      var didError = (root.current.flags & DidCapture) === DidCapture;\n\n      if (enableProfilerTimer) {\n        var schedulerPriority;\n\n        switch (eventPriority) {\n          case DiscreteEventPriority:\n            schedulerPriority = ImmediatePriority;\n            break;\n\n          case ContinuousEventPriority:\n            schedulerPriority = UserBlockingPriority;\n            break;\n\n          case DefaultEventPriority:\n            schedulerPriority = NormalPriority;\n            break;\n\n          case IdleEventPriority:\n            schedulerPriority = IdlePriority;\n            break;\n\n          default:\n            schedulerPriority = NormalPriority;\n            break;\n        }\n\n        injectedHook.onCommitFiberRoot(rendererID, root, schedulerPriority, didError);\n      } else {\n        injectedHook.onCommitFiberRoot(rendererID, root, undefined, didError);\n      }\n    } catch (err) {\n      {\n        if (!hasLoggedError) {\n          hasLoggedError = true;\n\n          error('React instrumentation encountered an error: %s', err);\n        }\n      }\n    }\n  }\n}\nfunction onPostCommitRoot(root) {\n  if (injectedHook && typeof injectedHook.onPostCommitFiberRoot === 'function') {\n    try {\n      injectedHook.onPostCommitFiberRoot(rendererID, root);\n    } catch (err) {\n      {\n        if (!hasLoggedError) {\n          hasLoggedError = true;\n\n          error('React instrumentation encountered an error: %s', err);\n        }\n      }\n    }\n  }\n}\nfunction onCommitUnmount(fiber) {\n  if (injectedHook && typeof injectedHook.onCommitFiberUnmount === 'function') {\n    try {\n      injectedHook.onCommitFiberUnmount(rendererID, fiber);\n    } catch (err) {\n      {\n        if (!hasLoggedError) {\n          hasLoggedError = true;\n\n          error('React instrumentation encountered an error: %s', err);\n        }\n      }\n    }\n  }\n}\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n  {\n    if (typeof unstable_yieldValue === 'function') {\n      // We're in a test because Scheduler.unstable_yieldValue only exists\n      // in SchedulerMock. To reduce the noise in strict mode tests,\n      // suppress warnings and disable scheduler yielding during the double render\n      unstable_setDisableYieldValue(newIsStrictMode);\n      setSuppressWarning(newIsStrictMode);\n    }\n\n    if (injectedHook && typeof injectedHook.setStrictMode === 'function') {\n      try {\n        injectedHook.setStrictMode(rendererID, newIsStrictMode);\n      } catch (err) {\n        {\n          if (!hasLoggedError) {\n            hasLoggedError = true;\n\n            error('React instrumentation encountered an error: %s', err);\n          }\n        }\n      }\n    }\n  }\n} // Profiler API hooks\n\nfunction injectProfilingHooks(profilingHooks) {\n  injectedProfilingHooks = profilingHooks;\n}\n\nfunction getLaneLabelMap() {\n  {\n    var map = new Map();\n    var lane = 1;\n\n    for (var index = 0; index < TotalLanes; index++) {\n      var label = getLabelForLane(lane);\n      map.set(lane, label);\n      lane *= 2;\n    }\n\n    return map;\n  }\n}\n\nfunction markCommitStarted(lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markCommitStarted === 'function') {\n      injectedProfilingHooks.markCommitStarted(lanes);\n    }\n  }\n}\nfunction markCommitStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markCommitStopped === 'function') {\n      injectedProfilingHooks.markCommitStopped();\n    }\n  }\n}\nfunction markComponentRenderStarted(fiber) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentRenderStarted === 'function') {\n      injectedProfilingHooks.markComponentRenderStarted(fiber);\n    }\n  }\n}\nfunction markComponentRenderStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentRenderStopped === 'function') {\n      injectedProfilingHooks.markComponentRenderStopped();\n    }\n  }\n}\nfunction markComponentPassiveEffectMountStarted(fiber) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectMountStarted === 'function') {\n      injectedProfilingHooks.markComponentPassiveEffectMountStarted(fiber);\n    }\n  }\n}\nfunction markComponentPassiveEffectMountStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectMountStopped === 'function') {\n      injectedProfilingHooks.markComponentPassiveEffectMountStopped();\n    }\n  }\n}\nfunction markComponentPassiveEffectUnmountStarted(fiber) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectUnmountStarted === 'function') {\n      injectedProfilingHooks.markComponentPassiveEffectUnmountStarted(fiber);\n    }\n  }\n}\nfunction markComponentPassiveEffectUnmountStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectUnmountStopped === 'function') {\n      injectedProfilingHooks.markComponentPassiveEffectUnmountStopped();\n    }\n  }\n}\nfunction markComponentLayoutEffectMountStarted(fiber) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectMountStarted === 'function') {\n      injectedProfilingHooks.markComponentLayoutEffectMountStarted(fiber);\n    }\n  }\n}\nfunction markComponentLayoutEffectMountStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectMountStopped === 'function') {\n      injectedProfilingHooks.markComponentLayoutEffectMountStopped();\n    }\n  }\n}\nfunction markComponentLayoutEffectUnmountStarted(fiber) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectUnmountStarted === 'function') {\n      injectedProfilingHooks.markComponentLayoutEffectUnmountStarted(fiber);\n    }\n  }\n}\nfunction markComponentLayoutEffectUnmountStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectUnmountStopped === 'function') {\n      injectedProfilingHooks.markComponentLayoutEffectUnmountStopped();\n    }\n  }\n}\nfunction markComponentErrored(fiber, thrownValue, lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentErrored === 'function') {\n      injectedProfilingHooks.markComponentErrored(fiber, thrownValue, lanes);\n    }\n  }\n}\nfunction markComponentSuspended(fiber, wakeable, lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentSuspended === 'function') {\n      injectedProfilingHooks.markComponentSuspended(fiber, wakeable, lanes);\n    }\n  }\n}\nfunction markLayoutEffectsStarted(lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markLayoutEffectsStarted === 'function') {\n      injectedProfilingHooks.markLayoutEffectsStarted(lanes);\n    }\n  }\n}\nfunction markLayoutEffectsStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markLayoutEffectsStopped === 'function') {\n      injectedProfilingHooks.markLayoutEffectsStopped();\n    }\n  }\n}\nfunction markPassiveEffectsStarted(lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markPassiveEffectsStarted === 'function') {\n      injectedProfilingHooks.markPassiveEffectsStarted(lanes);\n    }\n  }\n}\nfunction markPassiveEffectsStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markPassiveEffectsStopped === 'function') {\n      injectedProfilingHooks.markPassiveEffectsStopped();\n    }\n  }\n}\nfunction markRenderStarted(lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderStarted === 'function') {\n      injectedProfilingHooks.markRenderStarted(lanes);\n    }\n  }\n}\nfunction markRenderYielded() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderYielded === 'function') {\n      injectedProfilingHooks.markRenderYielded();\n    }\n  }\n}\nfunction markRenderStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderStopped === 'function') {\n      injectedProfilingHooks.markRenderStopped();\n    }\n  }\n}\nfunction markRenderScheduled(lane) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderScheduled === 'function') {\n      injectedProfilingHooks.markRenderScheduled(lane);\n    }\n  }\n}\nfunction markForceUpdateScheduled(fiber, lane) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markForceUpdateScheduled === 'function') {\n      injectedProfilingHooks.markForceUpdateScheduled(fiber, lane);\n    }\n  }\n}\nfunction markStateUpdateScheduled(fiber, lane) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markStateUpdateScheduled === 'function') {\n      injectedProfilingHooks.markStateUpdateScheduled(fiber, lane);\n    }\n  }\n}\n\nvar NoMode =\n/*                         */\n0; // TODO: Remove ConcurrentMode by reading from the root tag instead\n\nvar ConcurrentMode =\n/*                 */\n1;\nvar ProfileMode =\n/*                    */\n2;\nvar StrictLegacyMode =\n/*               */\n8;\nvar StrictEffectsMode =\n/*              */\n16;\n\n// TODO: This is pretty well supported by browsers. Maybe we can drop it.\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback; // Count leading zeros.\n// Based on:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32\n\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nfunction clz32Fallback(x) {\n  var asUint = x >>> 0;\n\n  if (asUint === 0) {\n    return 32;\n  }\n\n  return 31 - (log(asUint) / LN2 | 0) | 0;\n}\n\n// If those values are changed that package should be rebuilt and redeployed.\n\nvar TotalLanes = 31;\nvar NoLanes =\n/*                        */\n0;\nvar NoLane =\n/*                          */\n0;\nvar SyncLane =\n/*                        */\n1;\nvar InputContinuousHydrationLane =\n/*    */\n2;\nvar InputContinuousLane =\n/*             */\n4;\nvar DefaultHydrationLane =\n/*            */\n8;\nvar DefaultLane =\n/*                     */\n16;\nvar TransitionHydrationLane =\n/*                */\n32;\nvar TransitionLanes =\n/*                       */\n4194240;\nvar TransitionLane1 =\n/*                        */\n64;\nvar TransitionLane2 =\n/*                        */\n128;\nvar TransitionLane3 =\n/*                        */\n256;\nvar TransitionLane4 =\n/*                        */\n512;\nvar TransitionLane5 =\n/*                        */\n1024;\nvar TransitionLane6 =\n/*                        */\n2048;\nvar TransitionLane7 =\n/*                        */\n4096;\nvar TransitionLane8 =\n/*                        */\n8192;\nvar TransitionLane9 =\n/*                        */\n16384;\nvar TransitionLane10 =\n/*                       */\n32768;\nvar TransitionLane11 =\n/*                       */\n65536;\nvar TransitionLane12 =\n/*                       */\n131072;\nvar TransitionLane13 =\n/*                       */\n262144;\nvar TransitionLane14 =\n/*                       */\n524288;\nvar TransitionLane15 =\n/*                       */\n1048576;\nvar TransitionLane16 =\n/*                       */\n2097152;\nvar RetryLanes =\n/*                            */\n130023424;\nvar RetryLane1 =\n/*                             */\n4194304;\nvar RetryLane2 =\n/*                             */\n8388608;\nvar RetryLane3 =\n/*                             */\n16777216;\nvar RetryLane4 =\n/*                             */\n33554432;\nvar RetryLane5 =\n/*                             */\n67108864;\nvar SomeRetryLane = RetryLane1;\nvar SelectiveHydrationLane =\n/*          */\n134217728;\nvar NonIdleLanes =\n/*                          */\n268435455;\nvar IdleHydrationLane =\n/*               */\n268435456;\nvar IdleLane =\n/*                        */\n536870912;\nvar OffscreenLane =\n/*                   */\n1073741824; // This function is used for the experimental timeline (react-devtools-timeline)\n// It should be kept in sync with the Lanes values above.\n\nfunction getLabelForLane(lane) {\n  {\n    if (lane & SyncLane) {\n      return 'Sync';\n    }\n\n    if (lane & InputContinuousHydrationLane) {\n      return 'InputContinuousHydration';\n    }\n\n    if (lane & InputContinuousLane) {\n      return 'InputContinuous';\n    }\n\n    if (lane & DefaultHydrationLane) {\n      return 'DefaultHydration';\n    }\n\n    if (lane & DefaultLane) {\n      return 'Default';\n    }\n\n    if (lane & TransitionHydrationLane) {\n      return 'TransitionHydration';\n    }\n\n    if (lane & TransitionLanes) {\n      return 'Transition';\n    }\n\n    if (lane & RetryLanes) {\n      return 'Retry';\n    }\n\n    if (lane & SelectiveHydrationLane) {\n      return 'SelectiveHydration';\n    }\n\n    if (lane & IdleHydrationLane) {\n      return 'IdleHydration';\n    }\n\n    if (lane & IdleLane) {\n      return 'Idle';\n    }\n\n    if (lane & OffscreenLane) {\n      return 'Offscreen';\n    }\n  }\n}\nvar NoTimestamp = -1;\nvar nextTransitionLane = TransitionLane1;\nvar nextRetryLane = RetryLane1;\n\nfunction getHighestPriorityLanes(lanes) {\n  switch (getHighestPriorityLane(lanes)) {\n    case SyncLane:\n      return SyncLane;\n\n    case InputContinuousHydrationLane:\n      return InputContinuousHydrationLane;\n\n    case InputContinuousLane:\n      return InputContinuousLane;\n\n    case DefaultHydrationLane:\n      return DefaultHydrationLane;\n\n    case DefaultLane:\n      return DefaultLane;\n\n    case TransitionHydrationLane:\n      return TransitionHydrationLane;\n\n    case TransitionLane1:\n    case TransitionLane2:\n    case TransitionLane3:\n    case TransitionLane4:\n    case TransitionLane5:\n    case TransitionLane6:\n    case TransitionLane7:\n    case TransitionLane8:\n    case TransitionLane9:\n    case TransitionLane10:\n    case TransitionLane11:\n    case TransitionLane12:\n    case TransitionLane13:\n    case TransitionLane14:\n    case TransitionLane15:\n    case TransitionLane16:\n      return lanes & TransitionLanes;\n\n    case RetryLane1:\n    case RetryLane2:\n    case RetryLane3:\n    case RetryLane4:\n    case RetryLane5:\n      return lanes & RetryLanes;\n\n    case SelectiveHydrationLane:\n      return SelectiveHydrationLane;\n\n    case IdleHydrationLane:\n      return IdleHydrationLane;\n\n    case IdleLane:\n      return IdleLane;\n\n    case OffscreenLane:\n      return OffscreenLane;\n\n    default:\n      {\n        error('Should have found matching lanes. This is a bug in React.');\n      } // This shouldn't be reachable, but as a fallback, return the entire bitmask.\n\n\n      return lanes;\n  }\n}\n\nfunction getNextLanes(root, wipLanes) {\n  // Early bailout if there's no pending work left.\n  var pendingLanes = root.pendingLanes;\n\n  if (pendingLanes === NoLanes) {\n    return NoLanes;\n  }\n\n  var nextLanes = NoLanes;\n  var suspendedLanes = root.suspendedLanes;\n  var pingedLanes = root.pingedLanes; // Do not work on any idle work until all the non-idle work has finished,\n  // even if the work is suspended.\n\n  var nonIdlePendingLanes = pendingLanes & NonIdleLanes;\n\n  if (nonIdlePendingLanes !== NoLanes) {\n    var nonIdleUnblockedLanes = nonIdlePendingLanes & ~suspendedLanes;\n\n    if (nonIdleUnblockedLanes !== NoLanes) {\n      nextLanes = getHighestPriorityLanes(nonIdleUnblockedLanes);\n    } else {\n      var nonIdlePingedLanes = nonIdlePendingLanes & pingedLanes;\n\n      if (nonIdlePingedLanes !== NoLanes) {\n        nextLanes = getHighestPriorityLanes(nonIdlePingedLanes);\n      }\n    }\n  } else {\n    // The only remaining work is Idle.\n    var unblockedLanes = pendingLanes & ~suspendedLanes;\n\n    if (unblockedLanes !== NoLanes) {\n      nextLanes = getHighestPriorityLanes(unblockedLanes);\n    } else {\n      if (pingedLanes !== NoLanes) {\n        nextLanes = getHighestPriorityLanes(pingedLanes);\n      }\n    }\n  }\n\n  if (nextLanes === NoLanes) {\n    // This should only be reachable if we're suspended\n    // TODO: Consider warning in this path if a fallback timer is not scheduled.\n    return NoLanes;\n  } // If we're already in the middle of a render, switching lanes will interrupt\n  // it and we'll lose our progress. We should only do this if the new lanes are\n  // higher priority.\n\n\n  if (wipLanes !== NoLanes && wipLanes !== nextLanes && // If we already suspended with a delay, then interrupting is fine. Don't\n  // bother waiting until the root is complete.\n  (wipLanes & suspendedLanes) === NoLanes) {\n    var nextLane = getHighestPriorityLane(nextLanes);\n    var wipLane = getHighestPriorityLane(wipLanes);\n\n    if ( // Tests whether the next lane is equal or lower priority than the wip\n    // one. This works because the bits decrease in priority as you go left.\n    nextLane >= wipLane || // Default priority updates should not interrupt transition updates. The\n    // only difference between default updates and transition updates is that\n    // default updates do not support refresh transitions.\n    nextLane === DefaultLane && (wipLane & TransitionLanes) !== NoLanes) {\n      // Keep working on the existing in-progress tree. Do not interrupt.\n      return wipLanes;\n    }\n  }\n\n  if ((nextLanes & InputContinuousLane) !== NoLanes) {\n    // When updates are sync by default, we entangle continuous priority updates\n    // and default updates, so they render in the same batch. The only reason\n    // they use separate lanes is because continuous updates should interrupt\n    // transitions, but default updates should not.\n    nextLanes |= pendingLanes & DefaultLane;\n  } // Check for entangled lanes and add them to the batch.\n  //\n  // A lane is said to be entangled with another when it's not allowed to render\n  // in a batch that does not also include the other lane. Typically we do this\n  // when multiple updates have the same source, and we only want to respond to\n  // the most recent event from that source.\n  //\n  // Note that we apply entanglements *after* checking for partial work above.\n  // This means that if a lane is entangled during an interleaved event while\n  // it's already rendering, we won't interrupt it. This is intentional, since\n  // entanglement is usually \"best effort\": we'll try our best to render the\n  // lanes in the same batch, but it's not worth throwing out partially\n  // completed work in order to do it.\n  // TODO: Reconsider this. The counter-argument is that the partial work\n  // represents an intermediate state, which we don't want to show to the user.\n  // And by spending extra time finishing it, we're increasing the amount of\n  // time it takes to show the final state, which is what they are actually\n  // waiting for.\n  //\n  // For those exceptions where entanglement is semantically important, like\n  // useMutableSource, we should ensure that there is no partial work at the\n  // time we apply the entanglement.\n\n\n  var entangledLanes = root.entangledLanes;\n\n  if (entangledLanes !== NoLanes) {\n    var entanglements = root.entanglements;\n    var lanes = nextLanes & entangledLanes;\n\n    while (lanes > 0) {\n      var index = pickArbitraryLaneIndex(lanes);\n      var lane = 1 << index;\n      nextLanes |= entanglements[index];\n      lanes &= ~lane;\n    }\n  }\n\n  return nextLanes;\n}\nfunction getMostRecentEventTime(root, lanes) {\n  var eventTimes = root.eventTimes;\n  var mostRecentEventTime = NoTimestamp;\n\n  while (lanes > 0) {\n    var index = pickArbitraryLaneIndex(lanes);\n    var lane = 1 << index;\n    var eventTime = eventTimes[index];\n\n    if (eventTime > mostRecentEventTime) {\n      mostRecentEventTime = eventTime;\n    }\n\n    lanes &= ~lane;\n  }\n\n  return mostRecentEventTime;\n}\n\nfunction computeExpirationTime(lane, currentTime) {\n  switch (lane) {\n    case SyncLane:\n    case InputContinuousHydrationLane:\n    case InputContinuousLane:\n      // User interactions should expire slightly more quickly.\n      //\n      // NOTE: This is set to the corresponding constant as in Scheduler.js.\n      // When we made it larger, a product metric in www regressed, suggesting\n      // there's a user interaction that's being starved by a series of\n      // synchronous updates. If that theory is correct, the proper solution is\n      // to fix the starvation. However, this scenario supports the idea that\n      // expiration times are an important safeguard when starvation\n      // does happen.\n      return currentTime + 250;\n\n    case DefaultHydrationLane:\n    case DefaultLane:\n    case TransitionHydrationLane:\n    case TransitionLane1:\n    case TransitionLane2:\n    case TransitionLane3:\n    case TransitionLane4:\n    case TransitionLane5:\n    case TransitionLane6:\n    case TransitionLane7:\n    case TransitionLane8:\n    case TransitionLane9:\n    case TransitionLane10:\n    case TransitionLane11:\n    case TransitionLane12:\n    case TransitionLane13:\n    case TransitionLane14:\n    case TransitionLane15:\n    case TransitionLane16:\n      return currentTime + 5000;\n\n    case RetryLane1:\n    case RetryLane2:\n    case RetryLane3:\n    case RetryLane4:\n    case RetryLane5:\n      // TODO: Retries should be allowed to expire if they are CPU bound for\n      // too long, but when I made this change it caused a spike in browser\n      // crashes. There must be some other underlying bug; not super urgent but\n      // ideally should figure out why and fix it. Unfortunately we don't have\n      // a repro for the crashes, only detected via production metrics.\n      return NoTimestamp;\n\n    case SelectiveHydrationLane:\n    case IdleHydrationLane:\n    case IdleLane:\n    case OffscreenLane:\n      // Anything idle priority or lower should never expire.\n      return NoTimestamp;\n\n    default:\n      {\n        error('Should have found matching lanes. This is a bug in React.');\n      }\n\n      return NoTimestamp;\n  }\n}\n\nfunction markStarvedLanesAsExpired(root, currentTime) {\n  // TODO: This gets called every time we yield. We can optimize by storing\n  // the earliest expiration time on the root. Then use that to quickly bail out\n  // of this function.\n  var pendingLanes = root.pendingLanes;\n  var suspendedLanes = root.suspendedLanes;\n  var pingedLanes = root.pingedLanes;\n  var expirationTimes = root.expirationTimes; // Iterate through the pending lanes and check if we've reached their\n  // expiration time. If so, we'll assume the update is being starved and mark\n  // it as expired to force it to finish.\n\n  var lanes = pendingLanes;\n\n  while (lanes > 0) {\n    var index = pickArbitraryLaneIndex(lanes);\n    var lane = 1 << index;\n    var expirationTime = expirationTimes[index];\n\n    if (expirationTime === NoTimestamp) {\n      // Found a pending lane with no expiration time. If it's not suspended, or\n      // if it's pinged, assume it's CPU-bound. Compute a new expiration time\n      // using the current time.\n      if ((lane & suspendedLanes) === NoLanes || (lane & pingedLanes) !== NoLanes) {\n        // Assumes timestamps are monotonically increasing.\n        expirationTimes[index] = computeExpirationTime(lane, currentTime);\n      }\n    } else if (expirationTime <= currentTime) {\n      // This lane expired\n      root.expiredLanes |= lane;\n    }\n\n    lanes &= ~lane;\n  }\n} // This returns the highest priority pending lanes regardless of whether they\n// are suspended.\n\nfunction getHighestPriorityPendingLanes(root) {\n  return getHighestPriorityLanes(root.pendingLanes);\n}\nfunction getLanesToRetrySynchronouslyOnError(root) {\n  var everythingButOffscreen = root.pendingLanes & ~OffscreenLane;\n\n  if (everythingButOffscreen !== NoLanes) {\n    return everythingButOffscreen;\n  }\n\n  if (everythingButOffscreen & OffscreenLane) {\n    return OffscreenLane;\n  }\n\n  return NoLanes;\n}\nfunction includesSyncLane(lanes) {\n  return (lanes & SyncLane) !== NoLanes;\n}\nfunction includesNonIdleWork(lanes) {\n  return (lanes & NonIdleLanes) !== NoLanes;\n}\nfunction includesOnlyRetries(lanes) {\n  return (lanes & RetryLanes) === lanes;\n}\nfunction includesOnlyNonUrgentLanes(lanes) {\n  var UrgentLanes = SyncLane | InputContinuousLane | DefaultLane;\n  return (lanes & UrgentLanes) === NoLanes;\n}\nfunction includesOnlyTransitions(lanes) {\n  return (lanes & TransitionLanes) === lanes;\n}\nfunction includesBlockingLane(root, lanes) {\n\n  var SyncDefaultLanes = InputContinuousHydrationLane | InputContinuousLane | DefaultHydrationLane | DefaultLane;\n  return (lanes & SyncDefaultLanes) !== NoLanes;\n}\nfunction includesExpiredLane(root, lanes) {\n  // This is a separate check from includesBlockingLane because a lane can\n  // expire after a render has already started.\n  return (lanes & root.expiredLanes) !== NoLanes;\n}\nfunction isTransitionLane(lane) {\n  return (lane & TransitionLanes) !== NoLanes;\n}\nfunction claimNextTransitionLane() {\n  // Cycle through the lanes, assigning each new transition to the next lane.\n  // In most cases, this means every transition gets its own lane, until we\n  // run out of lanes and cycle back to the beginning.\n  var lane = nextTransitionLane;\n  nextTransitionLane <<= 1;\n\n  if ((nextTransitionLane & TransitionLanes) === NoLanes) {\n    nextTransitionLane = TransitionLane1;\n  }\n\n  return lane;\n}\nfunction claimNextRetryLane() {\n  var lane = nextRetryLane;\n  nextRetryLane <<= 1;\n\n  if ((nextRetryLane & RetryLanes) === NoLanes) {\n    nextRetryLane = RetryLane1;\n  }\n\n  return lane;\n}\nfunction getHighestPriorityLane(lanes) {\n  return lanes & -lanes;\n}\nfunction pickArbitraryLane(lanes) {\n  // This wrapper function gets inlined. Only exists so to communicate that it\n  // doesn't matter which bit is selected; you can pick any bit without\n  // affecting the algorithms where its used. Here I'm using\n  // getHighestPriorityLane because it requires the fewest operations.\n  return getHighestPriorityLane(lanes);\n}\n\nfunction pickArbitraryLaneIndex(lanes) {\n  return 31 - clz32(lanes);\n}\n\nfunction laneToIndex(lane) {\n  return pickArbitraryLaneIndex(lane);\n}\n\nfunction includesSomeLane(a, b) {\n  return (a & b) !== NoLanes;\n}\nfunction isSubsetOfLanes(set, subset) {\n  return (set & subset) === subset;\n}\nfunction mergeLanes(a, b) {\n  return a | b;\n}\nfunction removeLanes(set, subset) {\n  return set & ~subset;\n}\nfunction intersectLanes(a, b) {\n  return a & b;\n} // Seems redundant, but it changes the type from a single lane (used for\n// updates) to a group of lanes (used for flushing work).\n\nfunction laneToLanes(lane) {\n  return lane;\n}\nfunction higherPriorityLane(a, b) {\n  // This works because the bit ranges decrease in priority as you go left.\n  return a !== NoLane && a < b ? a : b;\n}\nfunction createLaneMap(initial) {\n  // Intentionally pushing one by one.\n  // https://v8.dev/blog/elements-kinds#avoid-creating-holes\n  var laneMap = [];\n\n  for (var i = 0; i < TotalLanes; i++) {\n    laneMap.push(initial);\n  }\n\n  return laneMap;\n}\nfunction markRootUpdated(root, updateLane, eventTime) {\n  root.pendingLanes |= updateLane; // If there are any suspended transitions, it's possible this new update\n  // could unblock them. Clear the suspended lanes so that we can try rendering\n  // them again.\n  //\n  // TODO: We really only need to unsuspend only lanes that are in the\n  // `subtreeLanes` of the updated fiber, or the update lanes of the return\n  // path. This would exclude suspended updates in an unrelated sibling tree,\n  // since there's no way for this update to unblock it.\n  //\n  // We don't do this if the incoming update is idle, because we never process\n  // idle updates until after all the regular updates have finished; there's no\n  // way it could unblock a transition.\n\n  if (updateLane !== IdleLane) {\n    root.suspendedLanes = NoLanes;\n    root.pingedLanes = NoLanes;\n  }\n\n  var eventTimes = root.eventTimes;\n  var index = laneToIndex(updateLane); // We can always overwrite an existing timestamp because we prefer the most\n  // recent event, and we assume time is monotonically increasing.\n\n  eventTimes[index] = eventTime;\n}\nfunction markRootSuspended(root, suspendedLanes) {\n  root.suspendedLanes |= suspendedLanes;\n  root.pingedLanes &= ~suspendedLanes; // The suspended lanes are no longer CPU-bound. Clear their expiration times.\n\n  var expirationTimes = root.expirationTimes;\n  var lanes = suspendedLanes;\n\n  while (lanes > 0) {\n    var index = pickArbitraryLaneIndex(lanes);\n    var lane = 1 << index;\n    expirationTimes[index] = NoTimestamp;\n    lanes &= ~lane;\n  }\n}\nfunction markRootPinged(root, pingedLanes, eventTime) {\n  root.pingedLanes |= root.suspendedLanes & pingedLanes;\n}\nfunction markRootFinished(root, remainingLanes) {\n  var noLongerPendingLanes = root.pendingLanes & ~remainingLanes;\n  root.pendingLanes = remainingLanes; // Let's try everything again\n\n  root.suspendedLanes = NoLanes;\n  root.pingedLanes = NoLanes;\n  root.expiredLanes &= remainingLanes;\n  root.mutableReadLanes &= remainingLanes;\n  root.entangledLanes &= remainingLanes;\n  var entanglements = root.entanglements;\n  var eventTimes = root.eventTimes;\n  var expirationTimes = root.expirationTimes; // Clear the lanes that no longer have pending work\n\n  var lanes = noLongerPendingLanes;\n\n  while (lanes > 0) {\n    var index = pickArbitraryLaneIndex(lanes);\n    var lane = 1 << index;\n    entanglements[index] = NoLanes;\n    eventTimes[index] = NoTimestamp;\n    expirationTimes[index] = NoTimestamp;\n    lanes &= ~lane;\n  }\n}\nfunction markRootEntangled(root, entangledLanes) {\n  // In addition to entangling each of the given lanes with each other, we also\n  // have to consider _transitive_ entanglements. For each lane that is already\n  // entangled with *any* of the given lanes, that lane is now transitively\n  // entangled with *all* the given lanes.\n  //\n  // Translated: If C is entangled with A, then entangling A with B also\n  // entangles C with B.\n  //\n  // If this is hard to grasp, it might help to intentionally break this\n  // function and look at the tests that fail in ReactTransition-test.js. Try\n  // commenting out one of the conditions below.\n  var rootEntangledLanes = root.entangledLanes |= entangledLanes;\n  var entanglements = root.entanglements;\n  var lanes = rootEntangledLanes;\n\n  while (lanes) {\n    var index = pickArbitraryLaneIndex(lanes);\n    var lane = 1 << index;\n\n    if ( // Is this one of the newly entangled lanes?\n    lane & entangledLanes | // Is this lane transitively entangled with the newly entangled lanes?\n    entanglements[index] & entangledLanes) {\n      entanglements[index] |= entangledLanes;\n    }\n\n    lanes &= ~lane;\n  }\n}\nfunction getBumpedLaneForHydration(root, renderLanes) {\n  var renderLane = getHighestPriorityLane(renderLanes);\n  var lane;\n\n  switch (renderLane) {\n    case InputContinuousLane:\n      lane = InputContinuousHydrationLane;\n      break;\n\n    case DefaultLane:\n      lane = DefaultHydrationLane;\n      break;\n\n    case TransitionLane1:\n    case TransitionLane2:\n    case TransitionLane3:\n    case TransitionLane4:\n    case TransitionLane5:\n    case TransitionLane6:\n    case TransitionLane7:\n    case TransitionLane8:\n    case TransitionLane9:\n    case TransitionLane10:\n    case TransitionLane11:\n    case TransitionLane12:\n    case TransitionLane13:\n    case TransitionLane14:\n    case TransitionLane15:\n    case TransitionLane16:\n    case RetryLane1:\n    case RetryLane2:\n    case RetryLane3:\n    case RetryLane4:\n    case RetryLane5:\n      lane = TransitionHydrationLane;\n      break;\n\n    case IdleLane:\n      lane = IdleHydrationLane;\n      break;\n\n    default:\n      // Everything else is already either a hydration lane, or shouldn't\n      // be retried at a hydration lane.\n      lane = NoLane;\n      break;\n  } // Check if the lane we chose is suspended. If so, that indicates that we\n  // already attempted and failed to hydrate at that level. Also check if we're\n  // already rendering that lane, which is rare but could happen.\n\n\n  if ((lane & (root.suspendedLanes | renderLanes)) !== NoLane) {\n    // Give up trying to hydrate and fall back to client render.\n    return NoLane;\n  }\n\n  return lane;\n}\nfunction addFiberToLanesMap(root, fiber, lanes) {\n\n  if (!isDevToolsPresent) {\n    return;\n  }\n\n  var pendingUpdatersLaneMap = root.pendingUpdatersLaneMap;\n\n  while (lanes > 0) {\n    var index = laneToIndex(lanes);\n    var lane = 1 << index;\n    var updaters = pendingUpdatersLaneMap[index];\n    updaters.add(fiber);\n    lanes &= ~lane;\n  }\n}\nfunction movePendingFibersToMemoized(root, lanes) {\n\n  if (!isDevToolsPresent) {\n    return;\n  }\n\n  var pendingUpdatersLaneMap = root.pendingUpdatersLaneMap;\n  var memoizedUpdaters = root.memoizedUpdaters;\n\n  while (lanes > 0) {\n    var index = laneToIndex(lanes);\n    var lane = 1 << index;\n    var updaters = pendingUpdatersLaneMap[index];\n\n    if (updaters.size > 0) {\n      updaters.forEach(function (fiber) {\n        var alternate = fiber.alternate;\n\n        if (alternate === null || !memoizedUpdaters.has(alternate)) {\n          memoizedUpdaters.add(fiber);\n        }\n      });\n      updaters.clear();\n    }\n\n    lanes &= ~lane;\n  }\n}\nfunction getTransitionsForLanes(root, lanes) {\n  {\n    return null;\n  }\n}\n\nvar DiscreteEventPriority = SyncLane;\nvar ContinuousEventPriority = InputContinuousLane;\nvar DefaultEventPriority = DefaultLane;\nvar IdleEventPriority = IdleLane;\nvar currentUpdatePriority = NoLane;\nfunction getCurrentUpdatePriority() {\n  return currentUpdatePriority;\n}\nfunction setCurrentUpdatePriority(newPriority) {\n  currentUpdatePriority = newPriority;\n}\nfunction runWithPriority(priority, fn) {\n  var previousPriority = currentUpdatePriority;\n\n  try {\n    currentUpdatePriority = priority;\n    return fn();\n  } finally {\n    currentUpdatePriority = previousPriority;\n  }\n}\nfunction higherEventPriority(a, b) {\n  return a !== 0 && a < b ? a : b;\n}\nfunction lowerEventPriority(a, b) {\n  return a === 0 || a > b ? a : b;\n}\nfunction isHigherEventPriority(a, b) {\n  return a !== 0 && a < b;\n}\nfunction lanesToEventPriority(lanes) {\n  var lane = getHighestPriorityLane(lanes);\n\n  if (!isHigherEventPriority(DiscreteEventPriority, lane)) {\n    return DiscreteEventPriority;\n  }\n\n  if (!isHigherEventPriority(ContinuousEventPriority, lane)) {\n    return ContinuousEventPriority;\n  }\n\n  if (includesNonIdleWork(lane)) {\n    return DefaultEventPriority;\n  }\n\n  return IdleEventPriority;\n}\n\n// This is imported by the event replaying implementation in React DOM. It's\n// in a separate file to break a circular dependency between the renderer and\n// the reconciler.\nfunction isRootDehydrated(root) {\n  var currentState = root.current.memoizedState;\n  return currentState.isDehydrated;\n}\n\nvar _attemptSynchronousHydration;\n\nfunction setAttemptSynchronousHydration(fn) {\n  _attemptSynchronousHydration = fn;\n}\nfunction attemptSynchronousHydration(fiber) {\n  _attemptSynchronousHydration(fiber);\n}\nvar attemptContinuousHydration;\nfunction setAttemptContinuousHydration(fn) {\n  attemptContinuousHydration = fn;\n}\nvar attemptHydrationAtCurrentPriority;\nfunction setAttemptHydrationAtCurrentPriority(fn) {\n  attemptHydrationAtCurrentPriority = fn;\n}\nvar getCurrentUpdatePriority$1;\nfunction setGetCurrentUpdatePriority(fn) {\n  getCurrentUpdatePriority$1 = fn;\n}\nvar attemptHydrationAtPriority;\nfunction setAttemptHydrationAtPriority(fn) {\n  attemptHydrationAtPriority = fn;\n} // TODO: Upgrade this definition once we're on a newer version of Flow that\n// has this definition built-in.\n\nvar hasScheduledReplayAttempt = false; // The queue of discrete events to be replayed.\n\nvar queuedDiscreteEvents = []; // Indicates if any continuous event targets are non-null for early bailout.\n// if the last target was dehydrated.\n\nvar queuedFocus = null;\nvar queuedDrag = null;\nvar queuedMouse = null; // For pointer events there can be one latest event per pointerId.\n\nvar queuedPointers = new Map();\nvar queuedPointerCaptures = new Map(); // We could consider replaying selectionchange and touchmoves too.\n\nvar queuedExplicitHydrationTargets = [];\nvar discreteReplayableEvents = ['mousedown', 'mouseup', 'touchcancel', 'touchend', 'touchstart', 'auxclick', 'dblclick', 'pointercancel', 'pointerdown', 'pointerup', 'dragend', 'dragstart', 'drop', 'compositionend', 'compositionstart', 'keydown', 'keypress', 'keyup', 'input', 'textInput', // Intentionally camelCase\n'copy', 'cut', 'paste', 'click', 'change', 'contextmenu', 'reset', 'submit'];\nfunction isDiscreteEventThatRequiresHydration(eventType) {\n  return discreteReplayableEvents.indexOf(eventType) > -1;\n}\n\nfunction createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  return {\n    blockedOn: blockedOn,\n    domEventName: domEventName,\n    eventSystemFlags: eventSystemFlags,\n    nativeEvent: nativeEvent,\n    targetContainers: [targetContainer]\n  };\n}\n\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case 'focusin':\n    case 'focusout':\n      queuedFocus = null;\n      break;\n\n    case 'dragenter':\n    case 'dragleave':\n      queuedDrag = null;\n      break;\n\n    case 'mouseover':\n    case 'mouseout':\n      queuedMouse = null;\n      break;\n\n    case 'pointerover':\n    case 'pointerout':\n      {\n        var pointerId = nativeEvent.pointerId;\n        queuedPointers.delete(pointerId);\n        break;\n      }\n\n    case 'gotpointercapture':\n    case 'lostpointercapture':\n      {\n        var _pointerId = nativeEvent.pointerId;\n        queuedPointerCaptures.delete(_pointerId);\n        break;\n      }\n  }\n}\n\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(existingQueuedEvent, blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  if (existingQueuedEvent === null || existingQueuedEvent.nativeEvent !== nativeEvent) {\n    var queuedEvent = createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent);\n\n    if (blockedOn !== null) {\n      var _fiber2 = getInstanceFromNode(blockedOn);\n\n      if (_fiber2 !== null) {\n        // Attempt to increase the priority of this target.\n        attemptContinuousHydration(_fiber2);\n      }\n    }\n\n    return queuedEvent;\n  } // If we have already queued this exact event, then it's because\n  // the different event systems have different DOM event listeners.\n  // We can accumulate the flags, and the targetContainers, and\n  // store a single event to be replayed.\n\n\n  existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n  var targetContainers = existingQueuedEvent.targetContainers;\n\n  if (targetContainer !== null && targetContainers.indexOf(targetContainer) === -1) {\n    targetContainers.push(targetContainer);\n  }\n\n  return existingQueuedEvent;\n}\n\nfunction queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  // These set relatedTarget to null because the replayed event will be treated as if we\n  // moved from outside the window (no target) onto the target once it hydrates.\n  // Instead of mutating we could clone the event.\n  switch (domEventName) {\n    case 'focusin':\n      {\n        var focusEvent = nativeEvent;\n        queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(queuedFocus, blockedOn, domEventName, eventSystemFlags, targetContainer, focusEvent);\n        return true;\n      }\n\n    case 'dragenter':\n      {\n        var dragEvent = nativeEvent;\n        queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(queuedDrag, blockedOn, domEventName, eventSystemFlags, targetContainer, dragEvent);\n        return true;\n      }\n\n    case 'mouseover':\n      {\n        var mouseEvent = nativeEvent;\n        queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(queuedMouse, blockedOn, domEventName, eventSystemFlags, targetContainer, mouseEvent);\n        return true;\n      }\n\n    case 'pointerover':\n      {\n        var pointerEvent = nativeEvent;\n        var pointerId = pointerEvent.pointerId;\n        queuedPointers.set(pointerId, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointers.get(pointerId) || null, blockedOn, domEventName, eventSystemFlags, targetContainer, pointerEvent));\n        return true;\n      }\n\n    case 'gotpointercapture':\n      {\n        var _pointerEvent = nativeEvent;\n        var _pointerId2 = _pointerEvent.pointerId;\n        queuedPointerCaptures.set(_pointerId2, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointerCaptures.get(_pointerId2) || null, blockedOn, domEventName, eventSystemFlags, targetContainer, _pointerEvent));\n        return true;\n      }\n  }\n\n  return false;\n} // Check if this target is unblocked. Returns true if it's unblocked.\n\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n  // TODO: This function shares a lot of logic with findInstanceBlockingEvent.\n  // Try to unify them. It's a bit tricky since it would require two return\n  // values.\n  var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n\n  if (targetInst !== null) {\n    var nearestMounted = getNearestMountedFiber(targetInst);\n\n    if (nearestMounted !== null) {\n      var tag = nearestMounted.tag;\n\n      if (tag === SuspenseComponent) {\n        var instance = getSuspenseInstanceFromFiber(nearestMounted);\n\n        if (instance !== null) {\n          // We're blocked on hydrating this boundary.\n          // Increase its priority.\n          queuedTarget.blockedOn = instance;\n          attemptHydrationAtPriority(queuedTarget.priority, function () {\n            attemptHydrationAtCurrentPriority(nearestMounted);\n          });\n          return;\n        }\n      } else if (tag === HostRoot) {\n        var root = nearestMounted.stateNode;\n\n        if (isRootDehydrated(root)) {\n          queuedTarget.blockedOn = getContainerFromFiber(nearestMounted); // We don't currently have a way to increase the priority of\n          // a root other than sync.\n\n          return;\n        }\n      }\n    }\n  }\n\n  queuedTarget.blockedOn = null;\n}\n\nfunction queueExplicitHydrationTarget(target) {\n  // TODO: This will read the priority if it's dispatched by the React\n  // event system but not native events. Should read window.event.type, like\n  // we do for updates (getCurrentEventPriority).\n  var updatePriority = getCurrentUpdatePriority$1();\n  var queuedTarget = {\n    blockedOn: null,\n    target: target,\n    priority: updatePriority\n  };\n  var i = 0;\n\n  for (; i < queuedExplicitHydrationTargets.length; i++) {\n    // Stop once we hit the first target with lower priority than\n    if (!isHigherEventPriority(updatePriority, queuedExplicitHydrationTargets[i].priority)) {\n      break;\n    }\n  }\n\n  queuedExplicitHydrationTargets.splice(i, 0, queuedTarget);\n\n  if (i === 0) {\n    attemptExplicitHydrationTarget(queuedTarget);\n  }\n}\n\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n  if (queuedEvent.blockedOn !== null) {\n    return false;\n  }\n\n  var targetContainers = queuedEvent.targetContainers;\n\n  while (targetContainers.length > 0) {\n    var targetContainer = targetContainers[0];\n    var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.domEventName, queuedEvent.eventSystemFlags, targetContainer, queuedEvent.nativeEvent);\n\n    if (nextBlockedOn === null) {\n      {\n        var nativeEvent = queuedEvent.nativeEvent;\n        var nativeEventClone = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n        setReplayingEvent(nativeEventClone);\n        nativeEvent.target.dispatchEvent(nativeEventClone);\n        resetReplayingEvent();\n      }\n    } else {\n      // We're still blocked. Try again later.\n      var _fiber3 = getInstanceFromNode(nextBlockedOn);\n\n      if (_fiber3 !== null) {\n        attemptContinuousHydration(_fiber3);\n      }\n\n      queuedEvent.blockedOn = nextBlockedOn;\n      return false;\n    } // This target container was successfully dispatched. Try the next.\n\n\n    targetContainers.shift();\n  }\n\n  return true;\n}\n\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n  if (attemptReplayContinuousQueuedEvent(queuedEvent)) {\n    map.delete(key);\n  }\n}\n\nfunction replayUnblockedEvents() {\n  hasScheduledReplayAttempt = false;\n\n\n  if (queuedFocus !== null && attemptReplayContinuousQueuedEvent(queuedFocus)) {\n    queuedFocus = null;\n  }\n\n  if (queuedDrag !== null && attemptReplayContinuousQueuedEvent(queuedDrag)) {\n    queuedDrag = null;\n  }\n\n  if (queuedMouse !== null && attemptReplayContinuousQueuedEvent(queuedMouse)) {\n    queuedMouse = null;\n  }\n\n  queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n  queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\n\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n  if (queuedEvent.blockedOn === unblocked) {\n    queuedEvent.blockedOn = null;\n\n    if (!hasScheduledReplayAttempt) {\n      hasScheduledReplayAttempt = true; // Schedule a callback to attempt replaying as many events as are\n      // now unblocked. This first might not actually be unblocked yet.\n      // We could check it early to avoid scheduling an unnecessary callback.\n\n      Scheduler.unstable_scheduleCallback(Scheduler.unstable_NormalPriority, replayUnblockedEvents);\n    }\n  }\n}\n\nfunction retryIfBlockedOn(unblocked) {\n  // Mark anything that was blocked on this as no longer blocked\n  // and eligible for a replay.\n  if (queuedDiscreteEvents.length > 0) {\n    scheduleCallbackIfUnblocked(queuedDiscreteEvents[0], unblocked); // This is a exponential search for each boundary that commits. I think it's\n    // worth it because we expect very few discrete events to queue up and once\n    // we are actually fully unblocked it will be fast to replay them.\n\n    for (var i = 1; i < queuedDiscreteEvents.length; i++) {\n      var queuedEvent = queuedDiscreteEvents[i];\n\n      if (queuedEvent.blockedOn === unblocked) {\n        queuedEvent.blockedOn = null;\n      }\n    }\n  }\n\n  if (queuedFocus !== null) {\n    scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n  }\n\n  if (queuedDrag !== null) {\n    scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n  }\n\n  if (queuedMouse !== null) {\n    scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n  }\n\n  var unblock = function (queuedEvent) {\n    return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n  };\n\n  queuedPointers.forEach(unblock);\n  queuedPointerCaptures.forEach(unblock);\n\n  for (var _i = 0; _i < queuedExplicitHydrationTargets.length; _i++) {\n    var queuedTarget = queuedExplicitHydrationTargets[_i];\n\n    if (queuedTarget.blockedOn === unblocked) {\n      queuedTarget.blockedOn = null;\n    }\n  }\n\n  while (queuedExplicitHydrationTargets.length > 0) {\n    var nextExplicitTarget = queuedExplicitHydrationTargets[0];\n\n    if (nextExplicitTarget.blockedOn !== null) {\n      // We're still blocked.\n      break;\n    } else {\n      attemptExplicitHydrationTarget(nextExplicitTarget);\n\n      if (nextExplicitTarget.blockedOn === null) {\n        // We're unblocked.\n        queuedExplicitHydrationTargets.shift();\n      }\n    }\n  }\n}\n\nvar ReactCurrentBatchConfig = ReactSharedInternals.ReactCurrentBatchConfig; // TODO: can we stop exporting these?\n\nvar _enabled = true; // This is exported in FB builds for use by legacy FB layer infra.\n// We'd like to remove this but it's not clear if this is safe.\n\nfunction setEnabled(enabled) {\n  _enabled = !!enabled;\n}\nfunction isEnabled() {\n  return _enabled;\n}\nfunction createEventListenerWrapperWithPriority(targetContainer, domEventName, eventSystemFlags) {\n  var eventPriority = getEventPriority(domEventName);\n  var listenerWrapper;\n\n  switch (eventPriority) {\n    case DiscreteEventPriority:\n      listenerWrapper = dispatchDiscreteEvent;\n      break;\n\n    case ContinuousEventPriority:\n      listenerWrapper = dispatchContinuousEvent;\n      break;\n\n    case DefaultEventPriority:\n    default:\n      listenerWrapper = dispatchEvent;\n      break;\n  }\n\n  return listenerWrapper.bind(null, domEventName, eventSystemFlags, targetContainer);\n}\n\nfunction dispatchDiscreteEvent(domEventName, eventSystemFlags, container, nativeEvent) {\n  var previousPriority = getCurrentUpdatePriority();\n  var prevTransition = ReactCurrentBatchConfig.transition;\n  ReactCurrentBatchConfig.transition = null;\n\n  try {\n    setCurrentUpdatePriority(DiscreteEventPriority);\n    dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig.transition = prevTransition;\n  }\n}\n\nfunction dispatchContinuousEvent(domEventName, eventSystemFlags, container, nativeEvent) {\n  var previousPriority = getCurrentUpdatePriority();\n  var prevTransition = ReactCurrentBatchConfig.transition;\n  ReactCurrentBatchConfig.transition = null;\n\n  try {\n    setCurrentUpdatePriority(ContinuousEventPriority);\n    dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig.transition = prevTransition;\n  }\n}\n\nfunction dispatchEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  if (!_enabled) {\n    return;\n  }\n\n  {\n    dispatchEventWithEnableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay(domEventName, eventSystemFlags, targetContainer, nativeEvent);\n  }\n}\n\nfunction dispatchEventWithEnableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay(domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  var blockedOn = findInstanceBlockingEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent);\n\n  if (blockedOn === null) {\n    dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, return_targetInst, targetContainer);\n    clearIfContinuousEvent(domEventName, nativeEvent);\n    return;\n  }\n\n  if (queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent)) {\n    nativeEvent.stopPropagation();\n    return;\n  } // We need to clear only if we didn't queue because\n  // queueing is accumulative.\n\n\n  clearIfContinuousEvent(domEventName, nativeEvent);\n\n  if (eventSystemFlags & IS_CAPTURE_PHASE && isDiscreteEventThatRequiresHydration(domEventName)) {\n    while (blockedOn !== null) {\n      var fiber = getInstanceFromNode(blockedOn);\n\n      if (fiber !== null) {\n        attemptSynchronousHydration(fiber);\n      }\n\n      var nextBlockedOn = findInstanceBlockingEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent);\n\n      if (nextBlockedOn === null) {\n        dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, return_targetInst, targetContainer);\n      }\n\n      if (nextBlockedOn === blockedOn) {\n        break;\n      }\n\n      blockedOn = nextBlockedOn;\n    }\n\n    if (blockedOn !== null) {\n      nativeEvent.stopPropagation();\n    }\n\n    return;\n  } // This is not replayable so we'll invoke it but without a target,\n  // in case the event system needs to trace it.\n\n\n  dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, null, targetContainer);\n}\n\nvar return_targetInst = null; // Returns a SuspenseInstance or Container if it's blocked.\n// The return_targetInst field above is conceptually part of the return value.\n\nfunction findInstanceBlockingEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  // TODO: Warn if _enabled is false.\n  return_targetInst = null;\n  var nativeEventTarget = getEventTarget(nativeEvent);\n  var targetInst = getClosestInstanceFromNode(nativeEventTarget);\n\n  if (targetInst !== null) {\n    var nearestMounted = getNearestMountedFiber(targetInst);\n\n    if (nearestMounted === null) {\n      // This tree has been unmounted already. Dispatch without a target.\n      targetInst = null;\n    } else {\n      var tag = nearestMounted.tag;\n\n      if (tag === SuspenseComponent) {\n        var instance = getSuspenseInstanceFromFiber(nearestMounted);\n\n        if (instance !== null) {\n          // Queue the event to be replayed later. Abort dispatching since we\n          // don't want this event dispatched twice through the event system.\n          // TODO: If this is the first discrete event in the queue. Schedule an increased\n          // priority for this boundary.\n          return instance;\n        } // This shouldn't happen, something went wrong but to avoid blocking\n        // the whole system, dispatch the event without a target.\n        // TODO: Warn.\n\n\n        targetInst = null;\n      } else if (tag === HostRoot) {\n        var root = nearestMounted.stateNode;\n\n        if (isRootDehydrated(root)) {\n          // If this happens during a replay something went wrong and it might block\n          // the whole system.\n          return getContainerFromFiber(nearestMounted);\n        }\n\n        targetInst = null;\n      } else if (nearestMounted !== targetInst) {\n        // If we get an event (ex: img onload) before committing that\n        // component's mount, ignore it for now (that is, treat it as if it was an\n        // event on a non-React tree). We might also consider queueing events and\n        // dispatching them after the mount.\n        targetInst = null;\n      }\n    }\n  }\n\n  return_targetInst = targetInst; // We're not blocked on anything.\n\n  return null;\n}\nfunction getEventPriority(domEventName) {\n  switch (domEventName) {\n    // Used by SimpleEventPlugin:\n    case 'cancel':\n    case 'click':\n    case 'close':\n    case 'contextmenu':\n    case 'copy':\n    case 'cut':\n    case 'auxclick':\n    case 'dblclick':\n    case 'dragend':\n    case 'dragstart':\n    case 'drop':\n    case 'focusin':\n    case 'focusout':\n    case 'input':\n    case 'invalid':\n    case 'keydown':\n    case 'keypress':\n    case 'keyup':\n    case 'mousedown':\n    case 'mouseup':\n    case 'paste':\n    case 'pause':\n    case 'play':\n    case 'pointercancel':\n    case 'pointerdown':\n    case 'pointerup':\n    case 'ratechange':\n    case 'reset':\n    case 'resize':\n    case 'seeked':\n    case 'submit':\n    case 'touchcancel':\n    case 'touchend':\n    case 'touchstart':\n    case 'volumechange': // Used by polyfills:\n    // eslint-disable-next-line no-fallthrough\n\n    case 'change':\n    case 'selectionchange':\n    case 'textInput':\n    case 'compositionstart':\n    case 'compositionend':\n    case 'compositionupdate': // Only enableCreateEventHandleAPI:\n    // eslint-disable-next-line no-fallthrough\n\n    case 'beforeblur':\n    case 'afterblur': // Not used by React but could be by user code:\n    // eslint-disable-next-line no-fallthrough\n\n    case 'beforeinput':\n    case 'blur':\n    case 'fullscreenchange':\n    case 'focus':\n    case 'hashchange':\n    case 'popstate':\n    case 'select':\n    case 'selectstart':\n      return DiscreteEventPriority;\n\n    case 'drag':\n    case 'dragenter':\n    case 'dragexit':\n    case 'dragleave':\n    case 'dragover':\n    case 'mousemove':\n    case 'mouseout':\n    case 'mouseover':\n    case 'pointermove':\n    case 'pointerout':\n    case 'pointerover':\n    case 'scroll':\n    case 'toggle':\n    case 'touchmove':\n    case 'wheel': // Not used by React but could be by user code:\n    // eslint-disable-next-line no-fallthrough\n\n    case 'mouseenter':\n    case 'mouseleave':\n    case 'pointerenter':\n    case 'pointerleave':\n      return ContinuousEventPriority;\n\n    case 'message':\n      {\n        // We might be in the Scheduler callback.\n        // Eventually this mechanism will be replaced by a check\n        // of the current priority on the native scheduler.\n        var schedulerPriority = getCurrentPriorityLevel();\n\n        switch (schedulerPriority) {\n          case ImmediatePriority:\n            return DiscreteEventPriority;\n\n          case UserBlockingPriority:\n            return ContinuousEventPriority;\n\n          case NormalPriority:\n          case LowPriority:\n            // TODO: Handle LowSchedulerPriority, somehow. Maybe the same lane as hydration.\n            return DefaultEventPriority;\n\n          case IdlePriority:\n            return IdleEventPriority;\n\n          default:\n            return DefaultEventPriority;\n        }\n      }\n\n    default:\n      return DefaultEventPriority;\n  }\n}\n\nfunction addEventBubbleListener(target, eventType, listener) {\n  target.addEventListener(eventType, listener, false);\n  return listener;\n}\nfunction addEventCaptureListener(target, eventType, listener) {\n  target.addEventListener(eventType, listener, true);\n  return listener;\n}\nfunction addEventCaptureListenerWithPassiveFlag(target, eventType, listener, passive) {\n  target.addEventListener(eventType, listener, {\n    capture: true,\n    passive: passive\n  });\n  return listener;\n}\nfunction addEventBubbleListenerWithPassiveFlag(target, eventType, listener, passive) {\n  target.addEventListener(eventType, listener, {\n    passive: passive\n  });\n  return listener;\n}\n\n/**\n * These variables store information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n *\n */\nvar root = null;\nvar startText = null;\nvar fallbackText = null;\nfunction initialize(nativeEventTarget) {\n  root = nativeEventTarget;\n  startText = getText();\n  return true;\n}\nfunction reset() {\n  root = null;\n  startText = null;\n  fallbackText = null;\n}\nfunction getData() {\n  if (fallbackText) {\n    return fallbackText;\n  }\n\n  var start;\n  var startValue = startText;\n  var startLength = startValue.length;\n  var end;\n  var endValue = getText();\n  var endLength = endValue.length;\n\n  for (start = 0; start < startLength; start++) {\n    if (startValue[start] !== endValue[start]) {\n      break;\n    }\n  }\n\n  var minEnd = startLength - start;\n\n  for (end = 1; end <= minEnd; end++) {\n    if (startValue[startLength - end] !== endValue[endLength - end]) {\n      break;\n    }\n  }\n\n  var sliceTail = end > 1 ? 1 - end : undefined;\n  fallbackText = endValue.slice(start, sliceTail);\n  return fallbackText;\n}\nfunction getText() {\n  if ('value' in root) {\n    return root.value;\n  }\n\n  return root.textContent;\n}\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\nfunction getEventCharCode(nativeEvent) {\n  var charCode;\n  var keyCode = nativeEvent.keyCode;\n\n  if ('charCode' in nativeEvent) {\n    charCode = nativeEvent.charCode; // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n\n    if (charCode === 0 && keyCode === 13) {\n      charCode = 13;\n    }\n  } else {\n    // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n    charCode = keyCode;\n  } // IE and Edge (on Windows) and Chrome / Safari (on Windows and Linux)\n  // report Enter as charCode 10 when ctrl is pressed.\n\n\n  if (charCode === 10) {\n    charCode = 13;\n  } // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n  // Must not discard the (non-)printable Enter-key.\n\n\n  if (charCode >= 32 || charCode === 13) {\n    return charCode;\n  }\n\n  return 0;\n}\n\nfunction functionThatReturnsTrue() {\n  return true;\n}\n\nfunction functionThatReturnsFalse() {\n  return false;\n} // This is intentionally a factory so that we have different returned constructors.\n// If we had a single constructor, it would be megamorphic and engines would deopt.\n\n\nfunction createSyntheticEvent(Interface) {\n  /**\n   * Synthetic events are dispatched by event plugins, typically in response to a\n   * top-level event delegation handler.\n   *\n   * These systems should generally use pooling to reduce the frequency of garbage\n   * collection. The system should check `isPersistent` to determine whether the\n   * event should be released into the pool after being dispatched. Users that\n   * need a persisted event should invoke `persist`.\n   *\n   * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n   * normalizing browser quirks. Subclasses do not necessarily have to implement a\n   * DOM interface; custom application-specific events can also subclass this.\n   */\n  function SyntheticBaseEvent(reactName, reactEventType, targetInst, nativeEvent, nativeEventTarget) {\n    this._reactName = reactName;\n    this._targetInst = targetInst;\n    this.type = reactEventType;\n    this.nativeEvent = nativeEvent;\n    this.target = nativeEventTarget;\n    this.currentTarget = null;\n\n    for (var _propName in Interface) {\n      if (!Interface.hasOwnProperty(_propName)) {\n        continue;\n      }\n\n      var normalize = Interface[_propName];\n\n      if (normalize) {\n        this[_propName] = normalize(nativeEvent);\n      } else {\n        this[_propName] = nativeEvent[_propName];\n      }\n    }\n\n    var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n\n    if (defaultPrevented) {\n      this.isDefaultPrevented = functionThatReturnsTrue;\n    } else {\n      this.isDefaultPrevented = functionThatReturnsFalse;\n    }\n\n    this.isPropagationStopped = functionThatReturnsFalse;\n    return this;\n  }\n\n  assign(SyntheticBaseEvent.prototype, {\n    preventDefault: function () {\n      this.defaultPrevented = true;\n      var event = this.nativeEvent;\n\n      if (!event) {\n        return;\n      }\n\n      if (event.preventDefault) {\n        event.preventDefault(); // $FlowFixMe - flow is not aware of `unknown` in IE\n      } else if (typeof event.returnValue !== 'unknown') {\n        event.returnValue = false;\n      }\n\n      this.isDefaultPrevented = functionThatReturnsTrue;\n    },\n    stopPropagation: function () {\n      var event = this.nativeEvent;\n\n      if (!event) {\n        return;\n      }\n\n      if (event.stopPropagation) {\n        event.stopPropagation(); // $FlowFixMe - flow is not aware of `unknown` in IE\n      } else if (typeof event.cancelBubble !== 'unknown') {\n        // The ChangeEventPlugin registers a \"propertychange\" event for\n        // IE. This event does not support bubbling or cancelling, and\n        // any references to cancelBubble throw \"Member not found\".  A\n        // typeof check of \"unknown\" circumvents this issue (and is also\n        // IE specific).\n        event.cancelBubble = true;\n      }\n\n      this.isPropagationStopped = functionThatReturnsTrue;\n    },\n\n    /**\n     * We release all dispatched `SyntheticEvent`s after each event loop, adding\n     * them back into the pool. This allows a way to hold onto a reference that\n     * won't be added back into the pool.\n     */\n    persist: function () {// Modern event system doesn't use pooling.\n    },\n\n    /**\n     * Checks if this event should be released back into the pool.\n     *\n     * @return {boolean} True if this should not be released, false otherwise.\n     */\n    isPersistent: functionThatReturnsTrue\n  });\n  return SyntheticBaseEvent;\n}\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar EventInterface = {\n  eventPhase: 0,\n  bubbles: 0,\n  cancelable: 0,\n  timeStamp: function (event) {\n    return event.timeStamp || Date.now();\n  },\n  defaultPrevented: 0,\n  isTrusted: 0\n};\nvar SyntheticEvent = createSyntheticEvent(EventInterface);\n\nvar UIEventInterface = assign({}, EventInterface, {\n  view: 0,\n  detail: 0\n});\n\nvar SyntheticUIEvent = createSyntheticEvent(UIEventInterface);\nvar lastMovementX;\nvar lastMovementY;\nvar lastMouseEvent;\n\nfunction updateMouseMovementPolyfillState(event) {\n  if (event !== lastMouseEvent) {\n    if (lastMouseEvent && event.type === 'mousemove') {\n      lastMovementX = event.screenX - lastMouseEvent.screenX;\n      lastMovementY = event.screenY - lastMouseEvent.screenY;\n    } else {\n      lastMovementX = 0;\n      lastMovementY = 0;\n    }\n\n    lastMouseEvent = event;\n  }\n}\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar MouseEventInterface = assign({}, UIEventInterface, {\n  screenX: 0,\n  screenY: 0,\n  clientX: 0,\n  clientY: 0,\n  pageX: 0,\n  pageY: 0,\n  ctrlKey: 0,\n  shiftKey: 0,\n  altKey: 0,\n  metaKey: 0,\n  getModifierState: getEventModifierState,\n  button: 0,\n  buttons: 0,\n  relatedTarget: function (event) {\n    if (event.relatedTarget === undefined) return event.fromElement === event.srcElement ? event.toElement : event.fromElement;\n    return event.relatedTarget;\n  },\n  movementX: function (event) {\n    if ('movementX' in event) {\n      return event.movementX;\n    }\n\n    updateMouseMovementPolyfillState(event);\n    return lastMovementX;\n  },\n  movementY: function (event) {\n    if ('movementY' in event) {\n      return event.movementY;\n    } // Don't need to call updateMouseMovementPolyfillState() here\n    // because it's guaranteed to have already run when movementX\n    // was copied.\n\n\n    return lastMovementY;\n  }\n});\n\nvar SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface);\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\nvar DragEventInterface = assign({}, MouseEventInterface, {\n  dataTransfer: 0\n});\n\nvar SyntheticDragEvent = createSyntheticEvent(DragEventInterface);\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\nvar FocusEventInterface = assign({}, UIEventInterface, {\n  relatedTarget: 0\n});\n\nvar SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\n\nvar AnimationEventInterface = assign({}, EventInterface, {\n  animationName: 0,\n  elapsedTime: 0,\n  pseudoElement: 0\n});\n\nvar SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\n\nvar ClipboardEventInterface = assign({}, EventInterface, {\n  clipboardData: function (event) {\n    return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n  }\n});\n\nvar SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\n\nvar CompositionEventInterface = assign({}, EventInterface, {\n  data: 0\n});\n\nvar SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n *      /#events-inputevents\n */\n// Happens to share the same list for now.\n\nvar SyntheticInputEvent = SyntheticCompositionEvent;\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\n\nvar normalizeKey = {\n  Esc: 'Escape',\n  Spacebar: ' ',\n  Left: 'ArrowLeft',\n  Up: 'ArrowUp',\n  Right: 'ArrowRight',\n  Down: 'ArrowDown',\n  Del: 'Delete',\n  Win: 'OS',\n  Menu: 'ContextMenu',\n  Apps: 'ContextMenu',\n  Scroll: 'ScrollLock',\n  MozPrintableKey: 'Unidentified'\n};\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\n\nvar translateToKey = {\n  '8': 'Backspace',\n  '9': 'Tab',\n  '12': 'Clear',\n  '13': 'Enter',\n  '16': 'Shift',\n  '17': 'Control',\n  '18': 'Alt',\n  '19': 'Pause',\n  '20': 'CapsLock',\n  '27': 'Escape',\n  '32': ' ',\n  '33': 'PageUp',\n  '34': 'PageDown',\n  '35': 'End',\n  '36': 'Home',\n  '37': 'ArrowLeft',\n  '38': 'ArrowUp',\n  '39': 'ArrowRight',\n  '40': 'ArrowDown',\n  '45': 'Insert',\n  '46': 'Delete',\n  '112': 'F1',\n  '113': 'F2',\n  '114': 'F3',\n  '115': 'F4',\n  '116': 'F5',\n  '117': 'F6',\n  '118': 'F7',\n  '119': 'F8',\n  '120': 'F9',\n  '121': 'F10',\n  '122': 'F11',\n  '123': 'F12',\n  '144': 'NumLock',\n  '145': 'ScrollLock',\n  '224': 'Meta'\n};\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\n\nfunction getEventKey(nativeEvent) {\n  if (nativeEvent.key) {\n    // Normalize inconsistent values reported by browsers due to\n    // implementations of a working draft specification.\n    // FireFox implements `key` but returns `MozPrintableKey` for all\n    // printable characters (normalized to `Unidentified`), ignore it.\n    var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n\n    if (key !== 'Unidentified') {\n      return key;\n    }\n  } // Browser does not implement `key`, polyfill as much of it as we can.\n\n\n  if (nativeEvent.type === 'keypress') {\n    var charCode = getEventCharCode(nativeEvent); // The enter-key is technically both printable and non-printable and can\n    // thus be captured by `keypress`, no other non-printable key should.\n\n    return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n  }\n\n  if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n    // While user keyboard layout determines the actual meaning of each\n    // `keyCode` value, almost all function keys have a universal value.\n    return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n  }\n\n  return '';\n}\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\n\nvar modifierKeyToProp = {\n  Alt: 'altKey',\n  Control: 'ctrlKey',\n  Meta: 'metaKey',\n  Shift: 'shiftKey'\n}; // Older browsers (Safari <= 10, iOS Safari <= 10.2) do not support\n// getModifierState. If getModifierState is not supported, we map it to a set of\n// modifier keys exposed by the event. In this case, Lock-keys are not supported.\n\nfunction modifierStateGetter(keyArg) {\n  var syntheticEvent = this;\n  var nativeEvent = syntheticEvent.nativeEvent;\n\n  if (nativeEvent.getModifierState) {\n    return nativeEvent.getModifierState(keyArg);\n  }\n\n  var keyProp = modifierKeyToProp[keyArg];\n  return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n  return modifierStateGetter;\n}\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n  key: getEventKey,\n  code: 0,\n  location: 0,\n  ctrlKey: 0,\n  shiftKey: 0,\n  altKey: 0,\n  metaKey: 0,\n  repeat: 0,\n  locale: 0,\n  getModifierState: getEventModifierState,\n  // Legacy Interface\n  charCode: function (event) {\n    // `charCode` is the result of a KeyPress event and represents the value of\n    // the actual printable character.\n    // KeyPress is deprecated, but its replacement is not yet final and not\n    // implemented in any major browser. Only KeyPress has charCode.\n    if (event.type === 'keypress') {\n      return getEventCharCode(event);\n    }\n\n    return 0;\n  },\n  keyCode: function (event) {\n    // `keyCode` is the result of a KeyDown/Up event and represents the value of\n    // physical keyboard key.\n    // The actual meaning of the value depends on the users' keyboard layout\n    // which cannot be detected. Assuming that it is a US keyboard layout\n    // provides a surprisingly accurate mapping for US and European users.\n    // Due to this, it is left to the user to implement at this time.\n    if (event.type === 'keydown' || event.type === 'keyup') {\n      return event.keyCode;\n    }\n\n    return 0;\n  },\n  which: function (event) {\n    // `which` is an alias for either `keyCode` or `charCode` depending on the\n    // type of the event.\n    if (event.type === 'keypress') {\n      return getEventCharCode(event);\n    }\n\n    if (event.type === 'keydown' || event.type === 'keyup') {\n      return event.keyCode;\n    }\n\n    return 0;\n  }\n});\n\nvar SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface);\n/**\n * @interface PointerEvent\n * @see http://www.w3.org/TR/pointerevents/\n */\n\nvar PointerEventInterface = assign({}, MouseEventInterface, {\n  pointerId: 0,\n  width: 0,\n  height: 0,\n  pressure: 0,\n  tangentialPressure: 0,\n  tiltX: 0,\n  tiltY: 0,\n  twist: 0,\n  pointerType: 0,\n  isPrimary: 0\n});\n\nvar SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface);\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\n\nvar TouchEventInterface = assign({}, UIEventInterface, {\n  touches: 0,\n  targetTouches: 0,\n  changedTouches: 0,\n  altKey: 0,\n  metaKey: 0,\n  ctrlKey: 0,\n  shiftKey: 0,\n  getModifierState: getEventModifierState\n});\n\nvar SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\n\nvar TransitionEventInterface = assign({}, EventInterface, {\n  propertyName: 0,\n  elapsedTime: 0,\n  pseudoElement: 0\n});\n\nvar SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface);\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\nvar WheelEventInterface = assign({}, MouseEventInterface, {\n  deltaX: function (event) {\n    return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n    'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n  },\n  deltaY: function (event) {\n    return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n    'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n    'wheelDelta' in event ? -event.wheelDelta : 0;\n  },\n  deltaZ: 0,\n  // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n  // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n  // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n  // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n  deltaMode: 0\n});\n\nvar SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface);\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\n\nvar START_KEYCODE = 229;\nvar canUseCompositionEvent = canUseDOM && 'CompositionEvent' in window;\nvar documentMode = null;\n\nif (canUseDOM && 'documentMode' in document) {\n  documentMode = document.documentMode;\n} // Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\n\n\nvar canUseTextInputEvent = canUseDOM && 'TextEvent' in window && !documentMode; // In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\n\nvar useFallbackCompositionData = canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\nfunction registerEvents() {\n  registerTwoPhaseEvent('onBeforeInput', ['compositionend', 'keypress', 'textInput', 'paste']);\n  registerTwoPhaseEvent('onCompositionEnd', ['compositionend', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);\n  registerTwoPhaseEvent('onCompositionStart', ['compositionstart', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);\n  registerTwoPhaseEvent('onCompositionUpdate', ['compositionupdate', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);\n} // Track whether we've ever handled a keypress on the space key.\n\n\nvar hasSpaceKeypress = false;\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\n\nfunction isKeypressCommand(nativeEvent) {\n  return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n  !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n/**\n * Translate native top level events into event types.\n */\n\n\nfunction getCompositionEventType(domEventName) {\n  switch (domEventName) {\n    case 'compositionstart':\n      return 'onCompositionStart';\n\n    case 'compositionend':\n      return 'onCompositionEnd';\n\n    case 'compositionupdate':\n      return 'onCompositionUpdate';\n  }\n}\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n */\n\n\nfunction isFallbackCompositionStart(domEventName, nativeEvent) {\n  return domEventName === 'keydown' && nativeEvent.keyCode === START_KEYCODE;\n}\n/**\n * Does our fallback mode think that this event is the end of composition?\n */\n\n\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case 'keyup':\n      // Command keys insert or clear IME input.\n      return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n\n    case 'keydown':\n      // Expect IME keyCode on each keydown. If we get any other\n      // code we must have exited earlier.\n      return nativeEvent.keyCode !== START_KEYCODE;\n\n    case 'keypress':\n    case 'mousedown':\n    case 'focusout':\n      // Events are not possible without cancelling IME.\n      return true;\n\n    default:\n      return false;\n  }\n}\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\n\n\nfunction getDataFromCustomEvent(nativeEvent) {\n  var detail = nativeEvent.detail;\n\n  if (typeof detail === 'object' && 'data' in detail) {\n    return detail.data;\n  }\n\n  return null;\n}\n/**\n * Check if a composition event was triggered by Korean IME.\n * Our fallback mode does not work well with IE's Korean IME,\n * so just use native composition events when Korean IME is used.\n * Although CompositionEvent.locale property is deprecated,\n * it is available in IE, where our fallback mode is enabled.\n *\n * @param {object} nativeEvent\n * @return {boolean}\n */\n\n\nfunction isUsingKoreanIME(nativeEvent) {\n  return nativeEvent.locale === 'ko';\n} // Track the current IME composition status, if any.\n\n\nvar isComposing = false;\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\n\nfunction extractCompositionEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget) {\n  var eventType;\n  var fallbackData;\n\n  if (canUseCompositionEvent) {\n    eventType = getCompositionEventType(domEventName);\n  } else if (!isComposing) {\n    if (isFallbackCompositionStart(domEventName, nativeEvent)) {\n      eventType = 'onCompositionStart';\n    }\n  } else if (isFallbackCompositionEnd(domEventName, nativeEvent)) {\n    eventType = 'onCompositionEnd';\n  }\n\n  if (!eventType) {\n    return null;\n  }\n\n  if (useFallbackCompositionData && !isUsingKoreanIME(nativeEvent)) {\n    // The current composition is stored statically and must not be\n    // overwritten while composition continues.\n    if (!isComposing && eventType === 'onCompositionStart') {\n      isComposing = initialize(nativeEventTarget);\n    } else if (eventType === 'onCompositionEnd') {\n      if (isComposing) {\n        fallbackData = getData();\n      }\n    }\n  }\n\n  var listeners = accumulateTwoPhaseListeners(targetInst, eventType);\n\n  if (listeners.length > 0) {\n    var event = new SyntheticCompositionEvent(eventType, domEventName, null, nativeEvent, nativeEventTarget);\n    dispatchQueue.push({\n      event: event,\n      listeners: listeners\n    });\n\n    if (fallbackData) {\n      // Inject data generated from fallback path into the synthetic event.\n      // This matches the property of native CompositionEventInterface.\n      event.data = fallbackData;\n    } else {\n      var customData = getDataFromCustomEvent(nativeEvent);\n\n      if (customData !== null) {\n        event.data = customData;\n      }\n    }\n  }\n}\n\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case 'compositionend':\n      return getDataFromCustomEvent(nativeEvent);\n\n    case 'keypress':\n      /**\n       * If native `textInput` events are available, our goal is to make\n       * use of them. However, there is a special case: the spacebar key.\n       * In Webkit, preventing default on a spacebar `textInput` event\n       * cancels character insertion, but it *also* causes the browser\n       * to fall back to its default spacebar behavior of scrolling the\n       * page.\n       *\n       * Tracking at:\n       * https://code.google.com/p/chromium/issues/detail?id=355103\n       *\n       * To avoid this issue, use the keypress event as if no `textInput`\n       * event is available.\n       */\n      var which = nativeEvent.which;\n\n      if (which !== SPACEBAR_CODE) {\n        return null;\n      }\n\n      hasSpaceKeypress = true;\n      return SPACEBAR_CHAR;\n\n    case 'textInput':\n      // Record the characters to be added to the DOM.\n      var chars = nativeEvent.data; // If it's a spacebar character, assume that we have already handled\n      // it at the keypress level and bail immediately. Android Chrome\n      // doesn't give us keycodes, so we need to ignore it.\n\n      if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n        return null;\n      }\n\n      return chars;\n\n    default:\n      // For other native event types, do nothing.\n      return null;\n  }\n}\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n */\n\n\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n  // If we are currently composing (IME) and using a fallback to do so,\n  // try to extract the composed characters from the fallback object.\n  // If composition event is available, we extract a string only at\n  // compositionevent, otherwise extract it at fallback events.\n  if (isComposing) {\n    if (domEventName === 'compositionend' || !canUseCompositionEvent && isFallbackCompositionEnd(domEventName, nativeEvent)) {\n      var chars = getData();\n      reset();\n      isComposing = false;\n      return chars;\n    }\n\n    return null;\n  }\n\n  switch (domEventName) {\n    case 'paste':\n      // If a paste event occurs after a keypress, throw out the input\n      // chars. Paste events should not lead to BeforeInput events.\n      return null;\n\n    case 'keypress':\n      /**\n       * As of v27, Firefox may fire keypress events even when no character\n       * will be inserted. A few possibilities:\n       *\n       * - `which` is `0`. Arrow keys, Esc key, etc.\n       *\n       * - `which` is the pressed key code, but no char is available.\n       *   Ex: 'AltGr + d` in Polish. There is no modified character for\n       *   this key combination and no character is inserted into the\n       *   document, but FF fires the keypress for char code `100` anyway.\n       *   No `input` event will occur.\n       *\n       * - `which` is the pressed key code, but a command combination is\n       *   being used. Ex: `Cmd+C`. No character is inserted, and no\n       *   `input` event will occur.\n       */\n      if (!isKeypressCommand(nativeEvent)) {\n        // IE fires the `keypress` event when a user types an emoji via\n        // Touch keyboard of Windows.  In such a case, the `char` property\n        // holds an emoji character like `\\uD83D\\uDE0A`.  Because its length\n        // is 2, the property `which` does not represent an emoji correctly.\n        // In such a case, we directly return the `char` property instead of\n        // using `which`.\n        if (nativeEvent.char && nativeEvent.char.length > 1) {\n          return nativeEvent.char;\n        } else if (nativeEvent.which) {\n          return String.fromCharCode(nativeEvent.which);\n        }\n      }\n\n      return null;\n\n    case 'compositionend':\n      return useFallbackCompositionData && !isUsingKoreanIME(nativeEvent) ? null : nativeEvent.data;\n\n    default:\n      return null;\n  }\n}\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\n\n\nfunction extractBeforeInputEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget) {\n  var chars;\n\n  if (canUseTextInputEvent) {\n    chars = getNativeBeforeInputChars(domEventName, nativeEvent);\n  } else {\n    chars = getFallbackBeforeInputChars(domEventName, nativeEvent);\n  } // If no characters are being inserted, no BeforeInput event should\n  // be fired.\n\n\n  if (!chars) {\n    return null;\n  }\n\n  var listeners = accumulateTwoPhaseListeners(targetInst, 'onBeforeInput');\n\n  if (listeners.length > 0) {\n    var event = new SyntheticInputEvent('onBeforeInput', 'beforeinput', null, nativeEvent, nativeEventTarget);\n    dispatchQueue.push({\n      event: event,\n      listeners: listeners\n    });\n    event.data = chars;\n  }\n}\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\n\n\nfunction extractEvents(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  extractCompositionEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n  extractBeforeInputEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n}\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\nvar supportedInputTypes = {\n  color: true,\n  date: true,\n  datetime: true,\n  'datetime-local': true,\n  email: true,\n  month: true,\n  number: true,\n  password: true,\n  range: true,\n  search: true,\n  tel: true,\n  text: true,\n  time: true,\n  url: true,\n  week: true\n};\n\nfunction isTextInputElement(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n  if (nodeName === 'input') {\n    return !!supportedInputTypes[elem.type];\n  }\n\n  if (nodeName === 'textarea') {\n    return true;\n  }\n\n  return false;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\n\nfunction isEventSupported(eventNameSuffix) {\n  if (!canUseDOM) {\n    return false;\n  }\n\n  var eventName = 'on' + eventNameSuffix;\n  var isSupported = (eventName in document);\n\n  if (!isSupported) {\n    var element = document.createElement('div');\n    element.setAttribute(eventName, 'return;');\n    isSupported = typeof element[eventName] === 'function';\n  }\n\n  return isSupported;\n}\n\nfunction registerEvents$1() {\n  registerTwoPhaseEvent('onChange', ['change', 'click', 'focusin', 'focusout', 'input', 'keydown', 'keyup', 'selectionchange']);\n}\n\nfunction createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, target) {\n  // Flag this event loop as needing state restore.\n  enqueueStateRestore(target);\n  var listeners = accumulateTwoPhaseListeners(inst, 'onChange');\n\n  if (listeners.length > 0) {\n    var event = new SyntheticEvent('onChange', 'change', null, nativeEvent, target);\n    dispatchQueue.push({\n      event: event,\n      listeners: listeners\n    });\n  }\n}\n/**\n * For IE shims\n */\n\n\nvar activeElement = null;\nvar activeElementInst = null;\n/**\n * SECTION: handle `change` event\n */\n\nfunction shouldUseChangeEvent(elem) {\n  var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n  return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n  var dispatchQueue = [];\n  createAndAccumulateChangeEvent(dispatchQueue, activeElementInst, nativeEvent, getEventTarget(nativeEvent)); // If change and propertychange bubbled, we'd just bind to it like all the\n  // other events and have it go through ReactBrowserEventEmitter. Since it\n  // doesn't, we manually listen for the events and so we have to enqueue and\n  // process the abstract event manually.\n  //\n  // Batching is necessary here in order to ensure that all event handlers run\n  // before the next rerender (including event handlers attached to ancestor\n  // elements instead of directly on the input). Without this, controlled\n  // components don't work properly in conjunction with event bubbling because\n  // the component is rerendered and the value reverted before all the event\n  // handlers can run. See https://github.com/facebook/react/issues/708.\n\n  batchedUpdates(runEventInBatch, dispatchQueue);\n}\n\nfunction runEventInBatch(dispatchQueue) {\n  processDispatchQueue(dispatchQueue, 0);\n}\n\nfunction getInstIfValueChanged(targetInst) {\n  var targetNode = getNodeFromInstance(targetInst);\n\n  if (updateValueIfChanged(targetNode)) {\n    return targetInst;\n  }\n}\n\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n  if (domEventName === 'change') {\n    return targetInst;\n  }\n}\n/**\n * SECTION: handle `input` event\n */\n\n\nvar isInputEventSupported = false;\n\nif (canUseDOM) {\n  // IE9 claims to support the input event but fails to trigger it when\n  // deleting text, so we ignore its input events.\n  isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 9);\n}\n/**\n * (For IE <=9) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\n\n\nfunction startWatchingForValueChange(target, targetInst) {\n  activeElement = target;\n  activeElementInst = targetInst;\n  activeElement.attachEvent('onpropertychange', handlePropertyChange);\n}\n/**\n * (For IE <=9) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\n\n\nfunction stopWatchingForValueChange() {\n  if (!activeElement) {\n    return;\n  }\n\n  activeElement.detachEvent('onpropertychange', handlePropertyChange);\n  activeElement = null;\n  activeElementInst = null;\n}\n/**\n * (For IE <=9) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\n\n\nfunction handlePropertyChange(nativeEvent) {\n  if (nativeEvent.propertyName !== 'value') {\n    return;\n  }\n\n  if (getInstIfValueChanged(activeElementInst)) {\n    manualDispatchChangeEvent(nativeEvent);\n  }\n}\n\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n  if (domEventName === 'focusin') {\n    // In IE9, propertychange fires for most input events but is buggy and\n    // doesn't fire when text is deleted, but conveniently, selectionchange\n    // appears to fire in all of the remaining cases so we catch those and\n    // forward the event if the value has changed\n    // In either case, we don't want to call the event handler if the value\n    // is changed from JS so we redefine a setter for `.value` that updates\n    // our activeElementValue variable, allowing us to ignore those changes\n    //\n    // stopWatching() should be a noop here but we call it just in case we\n    // missed a blur event somehow.\n    stopWatchingForValueChange();\n    startWatchingForValueChange(target, targetInst);\n  } else if (domEventName === 'focusout') {\n    stopWatchingForValueChange();\n  }\n} // For IE8 and IE9.\n\n\nfunction getTargetInstForInputEventPolyfill(domEventName, targetInst) {\n  if (domEventName === 'selectionchange' || domEventName === 'keyup' || domEventName === 'keydown') {\n    // On the selectionchange event, the target is just document which isn't\n    // helpful for us so just check activeElement instead.\n    //\n    // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n    // propertychange on the first input event after setting `value` from a\n    // script and fires only keydown, keypress, keyup. Catching keyup usually\n    // gets it and catching keydown lets us fire an event for the first\n    // keystroke if user does a key repeat (it'll be a little delayed: right\n    // before the second keystroke). Other input methods (e.g., paste) seem to\n    // fire selectionchange normally.\n    return getInstIfValueChanged(activeElementInst);\n  }\n}\n/**\n * SECTION: handle `click` event\n */\n\n\nfunction shouldUseClickEvent(elem) {\n  // Use the `click` event to detect changes to checkbox and radio inputs.\n  // This approach works across all browsers, whereas `change` does not fire\n  // until `blur` in IE8.\n  var nodeName = elem.nodeName;\n  return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n  if (domEventName === 'click') {\n    return getInstIfValueChanged(targetInst);\n  }\n}\n\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n  if (domEventName === 'input' || domEventName === 'change') {\n    return getInstIfValueChanged(targetInst);\n  }\n}\n\nfunction handleControlledInputBlur(node) {\n  var state = node._wrapperState;\n\n  if (!state || !state.controlled || node.type !== 'number') {\n    return;\n  }\n\n  {\n    // If controlled, assign the value attribute to the current value on blur\n    setDefaultValue(node, 'number', node.value);\n  }\n}\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\n\n\nfunction extractEvents$1(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  var targetNode = targetInst ? getNodeFromInstance(targetInst) : window;\n  var getTargetInstFunc, handleEventFunc;\n\n  if (shouldUseChangeEvent(targetNode)) {\n    getTargetInstFunc = getTargetInstForChangeEvent;\n  } else if (isTextInputElement(targetNode)) {\n    if (isInputEventSupported) {\n      getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n    } else {\n      getTargetInstFunc = getTargetInstForInputEventPolyfill;\n      handleEventFunc = handleEventsForInputEventPolyfill;\n    }\n  } else if (shouldUseClickEvent(targetNode)) {\n    getTargetInstFunc = getTargetInstForClickEvent;\n  }\n\n  if (getTargetInstFunc) {\n    var inst = getTargetInstFunc(domEventName, targetInst);\n\n    if (inst) {\n      createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, nativeEventTarget);\n      return;\n    }\n  }\n\n  if (handleEventFunc) {\n    handleEventFunc(domEventName, targetNode, targetInst);\n  } // When blurring, set the value attribute for number inputs\n\n\n  if (domEventName === 'focusout') {\n    handleControlledInputBlur(targetNode);\n  }\n}\n\nfunction registerEvents$2() {\n  registerDirectEvent('onMouseEnter', ['mouseout', 'mouseover']);\n  registerDirectEvent('onMouseLeave', ['mouseout', 'mouseover']);\n  registerDirectEvent('onPointerEnter', ['pointerout', 'pointerover']);\n  registerDirectEvent('onPointerLeave', ['pointerout', 'pointerover']);\n}\n/**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n\n\nfunction extractEvents$2(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  var isOverEvent = domEventName === 'mouseover' || domEventName === 'pointerover';\n  var isOutEvent = domEventName === 'mouseout' || domEventName === 'pointerout';\n\n  if (isOverEvent && !isReplayingEvent(nativeEvent)) {\n    // If this is an over event with a target, we might have already dispatched\n    // the event in the out event of the other target. If this is replayed,\n    // then it's because we couldn't dispatch against this target previously\n    // so we have to do it now instead.\n    var related = nativeEvent.relatedTarget || nativeEvent.fromElement;\n\n    if (related) {\n      // If the related node is managed by React, we can assume that we have\n      // already dispatched the corresponding events during its mouseout.\n      if (getClosestInstanceFromNode(related) || isContainerMarkedAsRoot(related)) {\n        return;\n      }\n    }\n  }\n\n  if (!isOutEvent && !isOverEvent) {\n    // Must not be a mouse or pointer in or out - ignoring.\n    return;\n  }\n\n  var win; // TODO: why is this nullable in the types but we read from it?\n\n  if (nativeEventTarget.window === nativeEventTarget) {\n    // `nativeEventTarget` is probably a window object.\n    win = nativeEventTarget;\n  } else {\n    // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n    var doc = nativeEventTarget.ownerDocument;\n\n    if (doc) {\n      win = doc.defaultView || doc.parentWindow;\n    } else {\n      win = window;\n    }\n  }\n\n  var from;\n  var to;\n\n  if (isOutEvent) {\n    var _related = nativeEvent.relatedTarget || nativeEvent.toElement;\n\n    from = targetInst;\n    to = _related ? getClosestInstanceFromNode(_related) : null;\n\n    if (to !== null) {\n      var nearestMounted = getNearestMountedFiber(to);\n\n      if (to !== nearestMounted || to.tag !== HostComponent && to.tag !== HostText) {\n        to = null;\n      }\n    }\n  } else {\n    // Moving to a node from outside the window.\n    from = null;\n    to = targetInst;\n  }\n\n  if (from === to) {\n    // Nothing pertains to our managed components.\n    return;\n  }\n\n  var SyntheticEventCtor = SyntheticMouseEvent;\n  var leaveEventType = 'onMouseLeave';\n  var enterEventType = 'onMouseEnter';\n  var eventTypePrefix = 'mouse';\n\n  if (domEventName === 'pointerout' || domEventName === 'pointerover') {\n    SyntheticEventCtor = SyntheticPointerEvent;\n    leaveEventType = 'onPointerLeave';\n    enterEventType = 'onPointerEnter';\n    eventTypePrefix = 'pointer';\n  }\n\n  var fromNode = from == null ? win : getNodeFromInstance(from);\n  var toNode = to == null ? win : getNodeFromInstance(to);\n  var leave = new SyntheticEventCtor(leaveEventType, eventTypePrefix + 'leave', from, nativeEvent, nativeEventTarget);\n  leave.target = fromNode;\n  leave.relatedTarget = toNode;\n  var enter = null; // We should only process this nativeEvent if we are processing\n  // the first ancestor. Next time, we will ignore the event.\n\n  var nativeTargetInst = getClosestInstanceFromNode(nativeEventTarget);\n\n  if (nativeTargetInst === targetInst) {\n    var enterEvent = new SyntheticEventCtor(enterEventType, eventTypePrefix + 'enter', to, nativeEvent, nativeEventTarget);\n    enterEvent.target = toNode;\n    enterEvent.relatedTarget = fromNode;\n    enter = enterEvent;\n  }\n\n  accumulateEnterLeaveTwoPhaseListeners(dispatchQueue, leave, enter, from, to);\n}\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n  return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n  ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\n\nfunction shallowEqual(objA, objB) {\n  if (objectIs(objA, objB)) {\n    return true;\n  }\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  } // Test for A's keys different from B.\n\n\n  for (var i = 0; i < keysA.length; i++) {\n    var currentKey = keysA[i];\n\n    if (!hasOwnProperty.call(objB, currentKey) || !objectIs(objA[currentKey], objB[currentKey])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n  while (node && node.firstChild) {\n    node = node.firstChild;\n  }\n\n  return node;\n}\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\n\n\nfunction getSiblingNode(node) {\n  while (node) {\n    if (node.nextSibling) {\n      return node.nextSibling;\n    }\n\n    node = node.parentNode;\n  }\n}\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\n\n\nfunction getNodeForCharacterOffset(root, offset) {\n  var node = getLeafNode(root);\n  var nodeStart = 0;\n  var nodeEnd = 0;\n\n  while (node) {\n    if (node.nodeType === TEXT_NODE) {\n      nodeEnd = nodeStart + node.textContent.length;\n\n      if (nodeStart <= offset && nodeEnd >= offset) {\n        return {\n          node: node,\n          offset: offset - nodeStart\n        };\n      }\n\n      nodeStart = nodeEnd;\n    }\n\n    node = getLeafNode(getSiblingNode(node));\n  }\n}\n\n/**\n * @param {DOMElement} outerNode\n * @return {?object}\n */\n\nfunction getOffsets(outerNode) {\n  var ownerDocument = outerNode.ownerDocument;\n  var win = ownerDocument && ownerDocument.defaultView || window;\n  var selection = win.getSelection && win.getSelection();\n\n  if (!selection || selection.rangeCount === 0) {\n    return null;\n  }\n\n  var anchorNode = selection.anchorNode,\n      anchorOffset = selection.anchorOffset,\n      focusNode = selection.focusNode,\n      focusOffset = selection.focusOffset; // In Firefox, anchorNode and focusNode can be \"anonymous divs\", e.g. the\n  // up/down buttons on an <input type=\"number\">. Anonymous divs do not seem to\n  // expose properties, triggering a \"Permission denied error\" if any of its\n  // properties are accessed. The only seemingly possible way to avoid erroring\n  // is to access a property that typically works for non-anonymous divs and\n  // catch any error that may otherwise arise. See\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n\n  try {\n    /* eslint-disable no-unused-expressions */\n    anchorNode.nodeType;\n    focusNode.nodeType;\n    /* eslint-enable no-unused-expressions */\n  } catch (e) {\n    return null;\n  }\n\n  return getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset);\n}\n/**\n * Returns {start, end} where `start` is the character/codepoint index of\n * (anchorNode, anchorOffset) within the textContent of `outerNode`, and\n * `end` is the index of (focusNode, focusOffset).\n *\n * Returns null if you pass in garbage input but we should probably just crash.\n *\n * Exported only for testing.\n */\n\nfunction getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset) {\n  var length = 0;\n  var start = -1;\n  var end = -1;\n  var indexWithinAnchor = 0;\n  var indexWithinFocus = 0;\n  var node = outerNode;\n  var parentNode = null;\n\n  outer: while (true) {\n    var next = null;\n\n    while (true) {\n      if (node === anchorNode && (anchorOffset === 0 || node.nodeType === TEXT_NODE)) {\n        start = length + anchorOffset;\n      }\n\n      if (node === focusNode && (focusOffset === 0 || node.nodeType === TEXT_NODE)) {\n        end = length + focusOffset;\n      }\n\n      if (node.nodeType === TEXT_NODE) {\n        length += node.nodeValue.length;\n      }\n\n      if ((next = node.firstChild) === null) {\n        break;\n      } // Moving from `node` to its first child `next`.\n\n\n      parentNode = node;\n      node = next;\n    }\n\n    while (true) {\n      if (node === outerNode) {\n        // If `outerNode` has children, this is always the second time visiting\n        // it. If it has no children, this is still the first loop, and the only\n        // valid selection is anchorNode and focusNode both equal to this node\n        // and both offsets 0, in which case we will have handled above.\n        break outer;\n      }\n\n      if (parentNode === anchorNode && ++indexWithinAnchor === anchorOffset) {\n        start = length;\n      }\n\n      if (parentNode === focusNode && ++indexWithinFocus === focusOffset) {\n        end = length;\n      }\n\n      if ((next = node.nextSibling) !== null) {\n        break;\n      }\n\n      node = parentNode;\n      parentNode = node.parentNode;\n    } // Moving from `node` to its next sibling `next`.\n\n\n    node = next;\n  }\n\n  if (start === -1 || end === -1) {\n    // This should never happen. (Would happen if the anchor/focus nodes aren't\n    // actually inside the passed-in node.)\n    return null;\n  }\n\n  return {\n    start: start,\n    end: end\n  };\n}\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n\nfunction setOffsets(node, offsets) {\n  var doc = node.ownerDocument || document;\n  var win = doc && doc.defaultView || window; // Edge fails with \"Object expected\" in some scenarios.\n  // (For instance: TinyMCE editor used in a list component that supports pasting to add more,\n  // fails when pasting 100+ items)\n\n  if (!win.getSelection) {\n    return;\n  }\n\n  var selection = win.getSelection();\n  var length = node.textContent.length;\n  var start = Math.min(offsets.start, length);\n  var end = offsets.end === undefined ? start : Math.min(offsets.end, length); // IE 11 uses modern selection, but doesn't support the extend method.\n  // Flip backward selections, so we can set with a single range.\n\n  if (!selection.extend && start > end) {\n    var temp = end;\n    end = start;\n    start = temp;\n  }\n\n  var startMarker = getNodeForCharacterOffset(node, start);\n  var endMarker = getNodeForCharacterOffset(node, end);\n\n  if (startMarker && endMarker) {\n    if (selection.rangeCount === 1 && selection.anchorNode === startMarker.node && selection.anchorOffset === startMarker.offset && selection.focusNode === endMarker.node && selection.focusOffset === endMarker.offset) {\n      return;\n    }\n\n    var range = doc.createRange();\n    range.setStart(startMarker.node, startMarker.offset);\n    selection.removeAllRanges();\n\n    if (start > end) {\n      selection.addRange(range);\n      selection.extend(endMarker.node, endMarker.offset);\n    } else {\n      range.setEnd(endMarker.node, endMarker.offset);\n      selection.addRange(range);\n    }\n  }\n}\n\nfunction isTextNode(node) {\n  return node && node.nodeType === TEXT_NODE;\n}\n\nfunction containsNode(outerNode, innerNode) {\n  if (!outerNode || !innerNode) {\n    return false;\n  } else if (outerNode === innerNode) {\n    return true;\n  } else if (isTextNode(outerNode)) {\n    return false;\n  } else if (isTextNode(innerNode)) {\n    return containsNode(outerNode, innerNode.parentNode);\n  } else if ('contains' in outerNode) {\n    return outerNode.contains(innerNode);\n  } else if (outerNode.compareDocumentPosition) {\n    return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n  } else {\n    return false;\n  }\n}\n\nfunction isInDocument(node) {\n  return node && node.ownerDocument && containsNode(node.ownerDocument.documentElement, node);\n}\n\nfunction isSameOriginFrame(iframe) {\n  try {\n    // Accessing the contentDocument of a HTMLIframeElement can cause the browser\n    // to throw, e.g. if it has a cross-origin src attribute.\n    // Safari will show an error in the console when the access results in \"Blocked a frame with origin\". e.g:\n    // iframe.contentDocument.defaultView;\n    // A safety way is to access one of the cross origin properties: Window or Location\n    // Which might result in \"SecurityError\" DOM Exception and it is compatible to Safari.\n    // https://html.spec.whatwg.org/multipage/browsers.html#integration-with-idl\n    return typeof iframe.contentWindow.location.href === 'string';\n  } catch (err) {\n    return false;\n  }\n}\n\nfunction getActiveElementDeep() {\n  var win = window;\n  var element = getActiveElement();\n\n  while (element instanceof win.HTMLIFrameElement) {\n    if (isSameOriginFrame(element)) {\n      win = element.contentWindow;\n    } else {\n      return element;\n    }\n\n    element = getActiveElement(win.document);\n  }\n\n  return element;\n}\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\n\n/**\n * @hasSelectionCapabilities: we get the element types that support selection\n * from https://html.spec.whatwg.org/#do-not-apply, looking at `selectionStart`\n * and `selectionEnd` rows.\n */\n\n\nfunction hasSelectionCapabilities(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return nodeName && (nodeName === 'input' && (elem.type === 'text' || elem.type === 'search' || elem.type === 'tel' || elem.type === 'url' || elem.type === 'password') || nodeName === 'textarea' || elem.contentEditable === 'true');\n}\nfunction getSelectionInformation() {\n  var focusedElem = getActiveElementDeep();\n  return {\n    focusedElem: focusedElem,\n    selectionRange: hasSelectionCapabilities(focusedElem) ? getSelection(focusedElem) : null\n  };\n}\n/**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n\nfunction restoreSelection(priorSelectionInformation) {\n  var curFocusedElem = getActiveElementDeep();\n  var priorFocusedElem = priorSelectionInformation.focusedElem;\n  var priorSelectionRange = priorSelectionInformation.selectionRange;\n\n  if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n    if (priorSelectionRange !== null && hasSelectionCapabilities(priorFocusedElem)) {\n      setSelection(priorFocusedElem, priorSelectionRange);\n    } // Focusing a node can change the scroll position, which is undesirable\n\n\n    var ancestors = [];\n    var ancestor = priorFocusedElem;\n\n    while (ancestor = ancestor.parentNode) {\n      if (ancestor.nodeType === ELEMENT_NODE) {\n        ancestors.push({\n          element: ancestor,\n          left: ancestor.scrollLeft,\n          top: ancestor.scrollTop\n        });\n      }\n    }\n\n    if (typeof priorFocusedElem.focus === 'function') {\n      priorFocusedElem.focus();\n    }\n\n    for (var i = 0; i < ancestors.length; i++) {\n      var info = ancestors[i];\n      info.element.scrollLeft = info.left;\n      info.element.scrollTop = info.top;\n    }\n  }\n}\n/**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n\nfunction getSelection(input) {\n  var selection;\n\n  if ('selectionStart' in input) {\n    // Modern browser with input or textarea.\n    selection = {\n      start: input.selectionStart,\n      end: input.selectionEnd\n    };\n  } else {\n    // Content editable or old IE textarea.\n    selection = getOffsets(input);\n  }\n\n  return selection || {\n    start: 0,\n    end: 0\n  };\n}\n/**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input     Set selection bounds of this input or textarea\n * -@offsets   Object of same form that is returned from get*\n */\n\nfunction setSelection(input, offsets) {\n  var start = offsets.start;\n  var end = offsets.end;\n\n  if (end === undefined) {\n    end = start;\n  }\n\n  if ('selectionStart' in input) {\n    input.selectionStart = start;\n    input.selectionEnd = Math.min(end, input.value.length);\n  } else {\n    setOffsets(input, offsets);\n  }\n}\n\nvar skipSelectionChangeEvent = canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nfunction registerEvents$3() {\n  registerTwoPhaseEvent('onSelect', ['focusout', 'contextmenu', 'dragend', 'focusin', 'keydown', 'keyup', 'mousedown', 'mouseup', 'selectionchange']);\n}\n\nvar activeElement$1 = null;\nvar activeElementInst$1 = null;\nvar lastSelection = null;\nvar mouseDown = false;\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n */\n\nfunction getSelection$1(node) {\n  if ('selectionStart' in node && hasSelectionCapabilities(node)) {\n    return {\n      start: node.selectionStart,\n      end: node.selectionEnd\n    };\n  } else {\n    var win = node.ownerDocument && node.ownerDocument.defaultView || window;\n    var selection = win.getSelection();\n    return {\n      anchorNode: selection.anchorNode,\n      anchorOffset: selection.anchorOffset,\n      focusNode: selection.focusNode,\n      focusOffset: selection.focusOffset\n    };\n  }\n}\n/**\n * Get document associated with the event target.\n */\n\n\nfunction getEventTargetDocument(eventTarget) {\n  return eventTarget.window === eventTarget ? eventTarget.document : eventTarget.nodeType === DOCUMENT_NODE ? eventTarget : eventTarget.ownerDocument;\n}\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @param {object} nativeEventTarget\n * @return {?SyntheticEvent}\n */\n\n\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n  // Ensure we have the right element, and that the user is not dragging a\n  // selection (this matches native `select` event behavior). In HTML5, select\n  // fires only on input and textarea thus if there's no focused element we\n  // won't dispatch.\n  var doc = getEventTargetDocument(nativeEventTarget);\n\n  if (mouseDown || activeElement$1 == null || activeElement$1 !== getActiveElement(doc)) {\n    return;\n  } // Only fire when selection has actually changed.\n\n\n  var currentSelection = getSelection$1(activeElement$1);\n\n  if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n    lastSelection = currentSelection;\n    var listeners = accumulateTwoPhaseListeners(activeElementInst$1, 'onSelect');\n\n    if (listeners.length > 0) {\n      var event = new SyntheticEvent('onSelect', 'select', null, nativeEvent, nativeEventTarget);\n      dispatchQueue.push({\n        event: event,\n        listeners: listeners\n      });\n      event.target = activeElement$1;\n    }\n  }\n}\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\n\n\nfunction extractEvents$3(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  var targetNode = targetInst ? getNodeFromInstance(targetInst) : window;\n\n  switch (domEventName) {\n    // Track the input node that has focus.\n    case 'focusin':\n      if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n        activeElement$1 = targetNode;\n        activeElementInst$1 = targetInst;\n        lastSelection = null;\n      }\n\n      break;\n\n    case 'focusout':\n      activeElement$1 = null;\n      activeElementInst$1 = null;\n      lastSelection = null;\n      break;\n    // Don't fire the event while the user is dragging. This matches the\n    // semantics of the native select event.\n\n    case 'mousedown':\n      mouseDown = true;\n      break;\n\n    case 'contextmenu':\n    case 'mouseup':\n    case 'dragend':\n      mouseDown = false;\n      constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n      break;\n    // Chrome and IE fire non-standard event when selection is changed (and\n    // sometimes when it hasn't). IE's event fires out of order with respect\n    // to key and input events on deletion, so we discard it.\n    //\n    // Firefox doesn't support selectionchange, so check selection status\n    // after each key entry. The selection changes after keydown and before\n    // keyup, but we check on keydown as well in the case of holding down a\n    // key, when multiple keydown events are fired but only one keyup is.\n    // This is also our approach for IE handling, for the reason above.\n\n    case 'selectionchange':\n      if (skipSelectionChangeEvent) {\n        break;\n      }\n\n    // falls through\n\n    case 'keydown':\n    case 'keyup':\n      constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n  }\n}\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\n\nfunction makePrefixMap(styleProp, eventName) {\n  var prefixes = {};\n  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n  prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n  prefixes['Moz' + styleProp] = 'moz' + eventName;\n  return prefixes;\n}\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\n\n\nvar vendorPrefixes = {\n  animationend: makePrefixMap('Animation', 'AnimationEnd'),\n  animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n  animationstart: makePrefixMap('Animation', 'AnimationStart'),\n  transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\n\nvar prefixedEventNames = {};\n/**\n * Element to check for prefixes on.\n */\n\nvar style = {};\n/**\n * Bootstrap if a DOM exists.\n */\n\nif (canUseDOM) {\n  style = document.createElement('div').style; // On some platforms, in particular some releases of Android 4.x,\n  // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n  // style object but the events that fire will still be prefixed, so we need\n  // to check if the un-prefixed events are usable, and if not remove them from the map.\n\n  if (!('AnimationEvent' in window)) {\n    delete vendorPrefixes.animationend.animation;\n    delete vendorPrefixes.animationiteration.animation;\n    delete vendorPrefixes.animationstart.animation;\n  } // Same as above\n\n\n  if (!('TransitionEvent' in window)) {\n    delete vendorPrefixes.transitionend.transition;\n  }\n}\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\n\n\nfunction getVendorPrefixedEventName(eventName) {\n  if (prefixedEventNames[eventName]) {\n    return prefixedEventNames[eventName];\n  } else if (!vendorPrefixes[eventName]) {\n    return eventName;\n  }\n\n  var prefixMap = vendorPrefixes[eventName];\n\n  for (var styleProp in prefixMap) {\n    if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n      return prefixedEventNames[eventName] = prefixMap[styleProp];\n    }\n  }\n\n  return eventName;\n}\n\nvar ANIMATION_END = getVendorPrefixedEventName('animationend');\nvar ANIMATION_ITERATION = getVendorPrefixedEventName('animationiteration');\nvar ANIMATION_START = getVendorPrefixedEventName('animationstart');\nvar TRANSITION_END = getVendorPrefixedEventName('transitionend');\n\nvar topLevelEventsToReactNames = new Map(); // NOTE: Capitalization is important in this list!\n//\n// E.g. it needs \"pointerDown\", not \"pointerdown\".\n// This is because we derive both React name (\"onPointerDown\")\n// and DOM name (\"pointerdown\") from the same list.\n//\n// Exceptions that don't match this convention are listed separately.\n//\n// prettier-ignore\n\nvar simpleEventPluginEvents = ['abort', 'auxClick', 'cancel', 'canPlay', 'canPlayThrough', 'click', 'close', 'contextMenu', 'copy', 'cut', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'gotPointerCapture', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'lostPointerCapture', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'pointerCancel', 'pointerDown', 'pointerMove', 'pointerOut', 'pointerOver', 'pointerUp', 'progress', 'rateChange', 'reset', 'resize', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchStart', 'volumeChange', 'scroll', 'toggle', 'touchMove', 'waiting', 'wheel'];\n\nfunction registerSimpleEvent(domEventName, reactName) {\n  topLevelEventsToReactNames.set(domEventName, reactName);\n  registerTwoPhaseEvent(reactName, [domEventName]);\n}\n\nfunction registerSimpleEvents() {\n  for (var i = 0; i < simpleEventPluginEvents.length; i++) {\n    var eventName = simpleEventPluginEvents[i];\n    var domEventName = eventName.toLowerCase();\n    var capitalizedEvent = eventName[0].toUpperCase() + eventName.slice(1);\n    registerSimpleEvent(domEventName, 'on' + capitalizedEvent);\n  } // Special cases where event names don't match.\n\n\n  registerSimpleEvent(ANIMATION_END, 'onAnimationEnd');\n  registerSimpleEvent(ANIMATION_ITERATION, 'onAnimationIteration');\n  registerSimpleEvent(ANIMATION_START, 'onAnimationStart');\n  registerSimpleEvent('dblclick', 'onDoubleClick');\n  registerSimpleEvent('focusin', 'onFocus');\n  registerSimpleEvent('focusout', 'onBlur');\n  registerSimpleEvent(TRANSITION_END, 'onTransitionEnd');\n}\n\nfunction extractEvents$4(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  var reactName = topLevelEventsToReactNames.get(domEventName);\n\n  if (reactName === undefined) {\n    return;\n  }\n\n  var SyntheticEventCtor = SyntheticEvent;\n  var reactEventType = domEventName;\n\n  switch (domEventName) {\n    case 'keypress':\n      // Firefox creates a keypress event for function keys too. This removes\n      // the unwanted keypress events. Enter is however both printable and\n      // non-printable. One would expect Tab to be as well (but it isn't).\n      if (getEventCharCode(nativeEvent) === 0) {\n        return;\n      }\n\n    /* falls through */\n\n    case 'keydown':\n    case 'keyup':\n      SyntheticEventCtor = SyntheticKeyboardEvent;\n      break;\n\n    case 'focusin':\n      reactEventType = 'focus';\n      SyntheticEventCtor = SyntheticFocusEvent;\n      break;\n\n    case 'focusout':\n      reactEventType = 'blur';\n      SyntheticEventCtor = SyntheticFocusEvent;\n      break;\n\n    case 'beforeblur':\n    case 'afterblur':\n      SyntheticEventCtor = SyntheticFocusEvent;\n      break;\n\n    case 'click':\n      // Firefox creates a click event on right mouse clicks. This removes the\n      // unwanted click events.\n      if (nativeEvent.button === 2) {\n        return;\n      }\n\n    /* falls through */\n\n    case 'auxclick':\n    case 'dblclick':\n    case 'mousedown':\n    case 'mousemove':\n    case 'mouseup': // TODO: Disabled elements should not respond to mouse events\n\n    /* falls through */\n\n    case 'mouseout':\n    case 'mouseover':\n    case 'contextmenu':\n      SyntheticEventCtor = SyntheticMouseEvent;\n      break;\n\n    case 'drag':\n    case 'dragend':\n    case 'dragenter':\n    case 'dragexit':\n    case 'dragleave':\n    case 'dragover':\n    case 'dragstart':\n    case 'drop':\n      SyntheticEventCtor = SyntheticDragEvent;\n      break;\n\n    case 'touchcancel':\n    case 'touchend':\n    case 'touchmove':\n    case 'touchstart':\n      SyntheticEventCtor = SyntheticTouchEvent;\n      break;\n\n    case ANIMATION_END:\n    case ANIMATION_ITERATION:\n    case ANIMATION_START:\n      SyntheticEventCtor = SyntheticAnimationEvent;\n      break;\n\n    case TRANSITION_END:\n      SyntheticEventCtor = SyntheticTransitionEvent;\n      break;\n\n    case 'scroll':\n      SyntheticEventCtor = SyntheticUIEvent;\n      break;\n\n    case 'wheel':\n      SyntheticEventCtor = SyntheticWheelEvent;\n      break;\n\n    case 'copy':\n    case 'cut':\n    case 'paste':\n      SyntheticEventCtor = SyntheticClipboardEvent;\n      break;\n\n    case 'gotpointercapture':\n    case 'lostpointercapture':\n    case 'pointercancel':\n    case 'pointerdown':\n    case 'pointermove':\n    case 'pointerout':\n    case 'pointerover':\n    case 'pointerup':\n      SyntheticEventCtor = SyntheticPointerEvent;\n      break;\n  }\n\n  var inCapturePhase = (eventSystemFlags & IS_CAPTURE_PHASE) !== 0;\n\n  {\n    // Some events don't bubble in the browser.\n    // In the past, React has always bubbled them, but this can be surprising.\n    // We're going to try aligning closer to the browser behavior by not bubbling\n    // them in React either. We'll start by not bubbling onScroll, and then expand.\n    var accumulateTargetOnly = !inCapturePhase && // TODO: ideally, we'd eventually add all events from\n    // nonDelegatedEvents list in DOMPluginEventSystem.\n    // Then we can remove this special list.\n    // This is a breaking change that can wait until React 18.\n    domEventName === 'scroll';\n\n    var _listeners = accumulateSinglePhaseListeners(targetInst, reactName, nativeEvent.type, inCapturePhase, accumulateTargetOnly);\n\n    if (_listeners.length > 0) {\n      // Intentionally create event lazily.\n      var _event = new SyntheticEventCtor(reactName, reactEventType, null, nativeEvent, nativeEventTarget);\n\n      dispatchQueue.push({\n        event: _event,\n        listeners: _listeners\n      });\n    }\n  }\n}\n\n// TODO: remove top-level side effect.\nregisterSimpleEvents();\nregisterEvents$2();\nregisterEvents$1();\nregisterEvents$3();\nregisterEvents();\n\nfunction extractEvents$5(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  // TODO: we should remove the concept of a \"SimpleEventPlugin\".\n  // This is the basic functionality of the event system. All\n  // the other plugins are essentially polyfills. So the plugin\n  // should probably be inlined somewhere and have its logic\n  // be core the to event system. This would potentially allow\n  // us to ship builds of React without the polyfilled plugins below.\n  extractEvents$4(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);\n  var shouldProcessPolyfillPlugins = (eventSystemFlags & SHOULD_NOT_PROCESS_POLYFILL_EVENT_PLUGINS) === 0; // We don't process these events unless we are in the\n  // event's native \"bubble\" phase, which means that we're\n  // not in the capture phase. That's because we emulate\n  // the capture phase here still. This is a trade-off,\n  // because in an ideal world we would not emulate and use\n  // the phases properly, like we do with the SimpleEvent\n  // plugin. However, the plugins below either expect\n  // emulation (EnterLeave) or use state localized to that\n  // plugin (BeforeInput, Change, Select). The state in\n  // these modules complicates things, as you'll essentially\n  // get the case where the capture phase event might change\n  // state, only for the following bubble event to come in\n  // later and not trigger anything as the state now\n  // invalidates the heuristics of the event plugin. We\n  // could alter all these plugins to work in such ways, but\n  // that might cause other unknown side-effects that we\n  // can't foresee right now.\n\n  if (shouldProcessPolyfillPlugins) {\n    extractEvents$2(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n    extractEvents$1(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n    extractEvents$3(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n    extractEvents(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n  }\n} // List of events that need to be individually attached to media elements.\n\n\nvar mediaEventTypes = ['abort', 'canplay', 'canplaythrough', 'durationchange', 'emptied', 'encrypted', 'ended', 'error', 'loadeddata', 'loadedmetadata', 'loadstart', 'pause', 'play', 'playing', 'progress', 'ratechange', 'resize', 'seeked', 'seeking', 'stalled', 'suspend', 'timeupdate', 'volumechange', 'waiting']; // We should not delegate these events to the container, but rather\n// set them on the actual target element itself. This is primarily\n// because these events do not consistently bubble in the DOM.\n\nvar nonDelegatedEvents = new Set(['cancel', 'close', 'invalid', 'load', 'scroll', 'toggle'].concat(mediaEventTypes));\n\nfunction executeDispatch(event, listener, currentTarget) {\n  var type = event.type || 'unknown-event';\n  event.currentTarget = currentTarget;\n  invokeGuardedCallbackAndCatchFirstError(type, listener, undefined, event);\n  event.currentTarget = null;\n}\n\nfunction processDispatchQueueItemsInOrder(event, dispatchListeners, inCapturePhase) {\n  var previousInstance;\n\n  if (inCapturePhase) {\n    for (var i = dispatchListeners.length - 1; i >= 0; i--) {\n      var _dispatchListeners$i = dispatchListeners[i],\n          instance = _dispatchListeners$i.instance,\n          currentTarget = _dispatchListeners$i.currentTarget,\n          listener = _dispatchListeners$i.listener;\n\n      if (instance !== previousInstance && event.isPropagationStopped()) {\n        return;\n      }\n\n      executeDispatch(event, listener, currentTarget);\n      previousInstance = instance;\n    }\n  } else {\n    for (var _i = 0; _i < dispatchListeners.length; _i++) {\n      var _dispatchListeners$_i = dispatchListeners[_i],\n          _instance = _dispatchListeners$_i.instance,\n          _currentTarget = _dispatchListeners$_i.currentTarget,\n          _listener = _dispatchListeners$_i.listener;\n\n      if (_instance !== previousInstance && event.isPropagationStopped()) {\n        return;\n      }\n\n      executeDispatch(event, _listener, _currentTarget);\n      previousInstance = _instance;\n    }\n  }\n}\n\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n  var inCapturePhase = (eventSystemFlags & IS_CAPTURE_PHASE) !== 0;\n\n  for (var i = 0; i < dispatchQueue.length; i++) {\n    var _dispatchQueue$i = dispatchQueue[i],\n        event = _dispatchQueue$i.event,\n        listeners = _dispatchQueue$i.listeners;\n    processDispatchQueueItemsInOrder(event, listeners, inCapturePhase); //  event system doesn't use pooling.\n  } // This would be a good time to rethrow if any of the event handlers threw.\n\n\n  rethrowCaughtError();\n}\n\nfunction dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer) {\n  var nativeEventTarget = getEventTarget(nativeEvent);\n  var dispatchQueue = [];\n  extractEvents$5(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);\n  processDispatchQueue(dispatchQueue, eventSystemFlags);\n}\n\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n  {\n    if (!nonDelegatedEvents.has(domEventName)) {\n      error('Did not expect a listenToNonDelegatedEvent() call for \"%s\". ' + 'This is a bug in React. Please file an issue.', domEventName);\n    }\n  }\n\n  var isCapturePhaseListener = false;\n  var listenerSet = getEventListenerSet(targetElement);\n  var listenerSetKey = getListenerSetKey(domEventName, isCapturePhaseListener);\n\n  if (!listenerSet.has(listenerSetKey)) {\n    addTrappedEventListener(targetElement, domEventName, IS_NON_DELEGATED, isCapturePhaseListener);\n    listenerSet.add(listenerSetKey);\n  }\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n  {\n    if (nonDelegatedEvents.has(domEventName) && !isCapturePhaseListener) {\n      error('Did not expect a listenToNativeEvent() call for \"%s\" in the bubble phase. ' + 'This is a bug in React. Please file an issue.', domEventName);\n    }\n  }\n\n  var eventSystemFlags = 0;\n\n  if (isCapturePhaseListener) {\n    eventSystemFlags |= IS_CAPTURE_PHASE;\n  }\n\n  addTrappedEventListener(target, domEventName, eventSystemFlags, isCapturePhaseListener);\n} // This is only used by createEventHandle when the\nvar listeningMarker = '_reactListening' + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n  if (!rootContainerElement[listeningMarker]) {\n    rootContainerElement[listeningMarker] = true;\n    allNativeEvents.forEach(function (domEventName) {\n      // We handle selectionchange separately because it\n      // doesn't bubble and needs to be on the document.\n      if (domEventName !== 'selectionchange') {\n        if (!nonDelegatedEvents.has(domEventName)) {\n          listenToNativeEvent(domEventName, false, rootContainerElement);\n        }\n\n        listenToNativeEvent(domEventName, true, rootContainerElement);\n      }\n    });\n    var ownerDocument = rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument;\n\n    if (ownerDocument !== null) {\n      // The selectionchange event also needs deduplication\n      // but it is attached to the document.\n      if (!ownerDocument[listeningMarker]) {\n        ownerDocument[listeningMarker] = true;\n        listenToNativeEvent('selectionchange', false, ownerDocument);\n      }\n    }\n  }\n}\n\nfunction addTrappedEventListener(targetContainer, domEventName, eventSystemFlags, isCapturePhaseListener, isDeferredListenerForLegacyFBSupport) {\n  var listener = createEventListenerWrapperWithPriority(targetContainer, domEventName, eventSystemFlags); // If passive option is not supported, then the event will be\n  // active and not passive.\n\n  var isPassiveListener = undefined;\n\n  if (passiveBrowserEventsSupported) {\n    // Browsers introduced an intervention, making these events\n    // passive by default on document. React doesn't bind them\n    // to document anymore, but changing this now would undo\n    // the performance wins from the change. So we emulate\n    // the existing behavior manually on the roots now.\n    // https://github.com/facebook/react/issues/19651\n    if (domEventName === 'touchstart' || domEventName === 'touchmove' || domEventName === 'wheel') {\n      isPassiveListener = true;\n    }\n  }\n\n  targetContainer =  targetContainer;\n  var unsubscribeListener; // When legacyFBSupport is enabled, it's for when we\n\n\n  if (isCapturePhaseListener) {\n    if (isPassiveListener !== undefined) {\n      unsubscribeListener = addEventCaptureListenerWithPassiveFlag(targetContainer, domEventName, listener, isPassiveListener);\n    } else {\n      unsubscribeListener = addEventCaptureListener(targetContainer, domEventName, listener);\n    }\n  } else {\n    if (isPassiveListener !== undefined) {\n      unsubscribeListener = addEventBubbleListenerWithPassiveFlag(targetContainer, domEventName, listener, isPassiveListener);\n    } else {\n      unsubscribeListener = addEventBubbleListener(targetContainer, domEventName, listener);\n    }\n  }\n}\n\nfunction isMatchingRootContainer(grandContainer, targetContainer) {\n  return grandContainer === targetContainer || grandContainer.nodeType === COMMENT_NODE && grandContainer.parentNode === targetContainer;\n}\n\nfunction dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer) {\n  var ancestorInst = targetInst;\n\n  if ((eventSystemFlags & IS_EVENT_HANDLE_NON_MANAGED_NODE) === 0 && (eventSystemFlags & IS_NON_DELEGATED) === 0) {\n    var targetContainerNode = targetContainer; // If we are using the legacy FB support flag, we\n\n    if (targetInst !== null) {\n      // The below logic attempts to work out if we need to change\n      // the target fiber to a different ancestor. We had similar logic\n      // in the legacy event system, except the big difference between\n      // systems is that the modern event system now has an event listener\n      // attached to each React Root and React Portal Root. Together,\n      // the DOM nodes representing these roots are the \"rootContainer\".\n      // To figure out which ancestor instance we should use, we traverse\n      // up the fiber tree from the target instance and attempt to find\n      // root boundaries that match that of our current \"rootContainer\".\n      // If we find that \"rootContainer\", we find the parent fiber\n      // sub-tree for that root and make that our ancestor instance.\n      var node = targetInst;\n\n      mainLoop: while (true) {\n        if (node === null) {\n          return;\n        }\n\n        var nodeTag = node.tag;\n\n        if (nodeTag === HostRoot || nodeTag === HostPortal) {\n          var container = node.stateNode.containerInfo;\n\n          if (isMatchingRootContainer(container, targetContainerNode)) {\n            break;\n          }\n\n          if (nodeTag === HostPortal) {\n            // The target is a portal, but it's not the rootContainer we're looking for.\n            // Normally portals handle their own events all the way down to the root.\n            // So we should be able to stop now. However, we don't know if this portal\n            // was part of *our* root.\n            var grandNode = node.return;\n\n            while (grandNode !== null) {\n              var grandTag = grandNode.tag;\n\n              if (grandTag === HostRoot || grandTag === HostPortal) {\n                var grandContainer = grandNode.stateNode.containerInfo;\n\n                if (isMatchingRootContainer(grandContainer, targetContainerNode)) {\n                  // This is the rootContainer we're looking for and we found it as\n                  // a parent of the Portal. That means we can ignore it because the\n                  // Portal will bubble through to us.\n                  return;\n                }\n              }\n\n              grandNode = grandNode.return;\n            }\n          } // Now we need to find it's corresponding host fiber in the other\n          // tree. To do this we can use getClosestInstanceFromNode, but we\n          // need to validate that the fiber is a host instance, otherwise\n          // we need to traverse up through the DOM till we find the correct\n          // node that is from the other tree.\n\n\n          while (container !== null) {\n            var parentNode = getClosestInstanceFromNode(container);\n\n            if (parentNode === null) {\n              return;\n            }\n\n            var parentTag = parentNode.tag;\n\n            if (parentTag === HostComponent || parentTag === HostText) {\n              node = ancestorInst = parentNode;\n              continue mainLoop;\n            }\n\n            container = container.parentNode;\n          }\n        }\n\n        node = node.return;\n      }\n    }\n  }\n\n  batchedUpdates(function () {\n    return dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent, ancestorInst);\n  });\n}\n\nfunction createDispatchListener(instance, listener, currentTarget) {\n  return {\n    instance: instance,\n    listener: listener,\n    currentTarget: currentTarget\n  };\n}\n\nfunction accumulateSinglePhaseListeners(targetFiber, reactName, nativeEventType, inCapturePhase, accumulateTargetOnly, nativeEvent) {\n  var captureName = reactName !== null ? reactName + 'Capture' : null;\n  var reactEventName = inCapturePhase ? captureName : reactName;\n  var listeners = [];\n  var instance = targetFiber;\n  var lastHostComponent = null; // Accumulate all instances and listeners via the target -> root path.\n\n  while (instance !== null) {\n    var _instance2 = instance,\n        stateNode = _instance2.stateNode,\n        tag = _instance2.tag; // Handle listeners that are on HostComponents (i.e. <div>)\n\n    if (tag === HostComponent && stateNode !== null) {\n      lastHostComponent = stateNode; // createEventHandle listeners\n\n\n      if (reactEventName !== null) {\n        var listener = getListener(instance, reactEventName);\n\n        if (listener != null) {\n          listeners.push(createDispatchListener(instance, listener, lastHostComponent));\n        }\n      }\n    } // If we are only accumulating events for the target, then we don't\n    // continue to propagate through the React fiber tree to find other\n    // listeners.\n\n\n    if (accumulateTargetOnly) {\n      break;\n    } // If we are processing the onBeforeBlur event, then we need to take\n\n    instance = instance.return;\n  }\n\n  return listeners;\n} // We should only use this function for:\n// - BeforeInputEventPlugin\n// - ChangeEventPlugin\n// - SelectEventPlugin\n// This is because we only process these plugins\n// in the bubble phase, so we need to accumulate two\n// phase event listeners (via emulation).\n\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n  var captureName = reactName + 'Capture';\n  var listeners = [];\n  var instance = targetFiber; // Accumulate all instances and listeners via the target -> root path.\n\n  while (instance !== null) {\n    var _instance3 = instance,\n        stateNode = _instance3.stateNode,\n        tag = _instance3.tag; // Handle listeners that are on HostComponents (i.e. <div>)\n\n    if (tag === HostComponent && stateNode !== null) {\n      var currentTarget = stateNode;\n      var captureListener = getListener(instance, captureName);\n\n      if (captureListener != null) {\n        listeners.unshift(createDispatchListener(instance, captureListener, currentTarget));\n      }\n\n      var bubbleListener = getListener(instance, reactName);\n\n      if (bubbleListener != null) {\n        listeners.push(createDispatchListener(instance, bubbleListener, currentTarget));\n      }\n    }\n\n    instance = instance.return;\n  }\n\n  return listeners;\n}\n\nfunction getParent(inst) {\n  if (inst === null) {\n    return null;\n  }\n\n  do {\n    inst = inst.return; // TODO: If this is a HostRoot we might want to bail out.\n    // That is depending on if we want nested subtrees (layers) to bubble\n    // events to their parent. We could also go through parentNode on the\n    // host node but that wouldn't work for React Native and doesn't let us\n    // do the portal feature.\n  } while (inst && inst.tag !== HostComponent);\n\n  if (inst) {\n    return inst;\n  }\n\n  return null;\n}\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\n\n\nfunction getLowestCommonAncestor(instA, instB) {\n  var nodeA = instA;\n  var nodeB = instB;\n  var depthA = 0;\n\n  for (var tempA = nodeA; tempA; tempA = getParent(tempA)) {\n    depthA++;\n  }\n\n  var depthB = 0;\n\n  for (var tempB = nodeB; tempB; tempB = getParent(tempB)) {\n    depthB++;\n  } // If A is deeper, crawl up.\n\n\n  while (depthA - depthB > 0) {\n    nodeA = getParent(nodeA);\n    depthA--;\n  } // If B is deeper, crawl up.\n\n\n  while (depthB - depthA > 0) {\n    nodeB = getParent(nodeB);\n    depthB--;\n  } // Walk in lockstep until we find a match.\n\n\n  var depth = depthA;\n\n  while (depth--) {\n    if (nodeA === nodeB || nodeB !== null && nodeA === nodeB.alternate) {\n      return nodeA;\n    }\n\n    nodeA = getParent(nodeA);\n    nodeB = getParent(nodeB);\n  }\n\n  return null;\n}\n\nfunction accumulateEnterLeaveListenersForEvent(dispatchQueue, event, target, common, inCapturePhase) {\n  var registrationName = event._reactName;\n  var listeners = [];\n  var instance = target;\n\n  while (instance !== null) {\n    if (instance === common) {\n      break;\n    }\n\n    var _instance4 = instance,\n        alternate = _instance4.alternate,\n        stateNode = _instance4.stateNode,\n        tag = _instance4.tag;\n\n    if (alternate !== null && alternate === common) {\n      break;\n    }\n\n    if (tag === HostComponent && stateNode !== null) {\n      var currentTarget = stateNode;\n\n      if (inCapturePhase) {\n        var captureListener = getListener(instance, registrationName);\n\n        if (captureListener != null) {\n          listeners.unshift(createDispatchListener(instance, captureListener, currentTarget));\n        }\n      } else if (!inCapturePhase) {\n        var bubbleListener = getListener(instance, registrationName);\n\n        if (bubbleListener != null) {\n          listeners.push(createDispatchListener(instance, bubbleListener, currentTarget));\n        }\n      }\n    }\n\n    instance = instance.return;\n  }\n\n  if (listeners.length !== 0) {\n    dispatchQueue.push({\n      event: event,\n      listeners: listeners\n    });\n  }\n} // We should only use this function for:\n// - EnterLeaveEventPlugin\n// This is because we only process this plugin\n// in the bubble phase, so we need to accumulate two\n// phase event listeners.\n\n\nfunction accumulateEnterLeaveTwoPhaseListeners(dispatchQueue, leaveEvent, enterEvent, from, to) {\n  var common = from && to ? getLowestCommonAncestor(from, to) : null;\n\n  if (from !== null) {\n    accumulateEnterLeaveListenersForEvent(dispatchQueue, leaveEvent, from, common, false);\n  }\n\n  if (to !== null && enterEvent !== null) {\n    accumulateEnterLeaveListenersForEvent(dispatchQueue, enterEvent, to, common, true);\n  }\n}\nfunction getListenerSetKey(domEventName, capture) {\n  return domEventName + \"__\" + (capture ? 'capture' : 'bubble');\n}\n\nvar didWarnInvalidHydration = false;\nvar DANGEROUSLY_SET_INNER_HTML = 'dangerouslySetInnerHTML';\nvar SUPPRESS_CONTENT_EDITABLE_WARNING = 'suppressContentEditableWarning';\nvar SUPPRESS_HYDRATION_WARNING = 'suppressHydrationWarning';\nvar AUTOFOCUS = 'autoFocus';\nvar CHILDREN = 'children';\nvar STYLE = 'style';\nvar HTML$1 = '__html';\nvar warnedUnknownTags;\nvar validatePropertiesInDevelopment;\nvar warnForPropDifference;\nvar warnForExtraAttributes;\nvar warnForInvalidEventListener;\nvar canDiffStyleForHydrationWarning;\nvar normalizeHTML;\n\n{\n  warnedUnknownTags = {\n    // There are working polyfills for <dialog>. Let people use it.\n    dialog: true,\n    // Electron ships a custom <webview> tag to display external web content in\n    // an isolated frame and process.\n    // This tag is not present in non Electron environments such as JSDom which\n    // is often used for testing purposes.\n    // @see https://electronjs.org/docs/api/webview-tag\n    webview: true\n  };\n\n  validatePropertiesInDevelopment = function (type, props) {\n    validateProperties(type, props);\n    validateProperties$1(type, props);\n    validateProperties$2(type, props, {\n      registrationNameDependencies: registrationNameDependencies,\n      possibleRegistrationNames: possibleRegistrationNames\n    });\n  }; // IE 11 parses & normalizes the style attribute as opposed to other\n  // browsers. It adds spaces and sorts the properties in some\n  // non-alphabetical order. Handling that would require sorting CSS\n  // properties in the client & server versions or applying\n  // `expectedStyle` to a temporary DOM node to read its `style` attribute\n  // normalized. Since it only affects IE, we're skipping style warnings\n  // in that browser completely in favor of doing all that work.\n  // See https://github.com/facebook/react/issues/11807\n\n\n  canDiffStyleForHydrationWarning = canUseDOM && !document.documentMode;\n\n  warnForPropDifference = function (propName, serverValue, clientValue) {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    var normalizedClientValue = normalizeMarkupForTextOrAttribute(clientValue);\n    var normalizedServerValue = normalizeMarkupForTextOrAttribute(serverValue);\n\n    if (normalizedServerValue === normalizedClientValue) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n\n    error('Prop `%s` did not match. Server: %s Client: %s', propName, JSON.stringify(normalizedServerValue), JSON.stringify(normalizedClientValue));\n  };\n\n  warnForExtraAttributes = function (attributeNames) {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n    var names = [];\n    attributeNames.forEach(function (name) {\n      names.push(name);\n    });\n\n    error('Extra attributes from the server: %s', names);\n  };\n\n  warnForInvalidEventListener = function (registrationName, listener) {\n    if (listener === false) {\n      error('Expected `%s` listener to be a function, instead got `false`.\\n\\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', registrationName, registrationName, registrationName);\n    } else {\n      error('Expected `%s` listener to be a function, instead got a value of `%s` type.', registrationName, typeof listener);\n    }\n  }; // Parse the HTML and read it back to normalize the HTML string so that it\n  // can be used for comparison.\n\n\n  normalizeHTML = function (parent, html) {\n    // We could have created a separate document here to avoid\n    // re-initializing custom elements if they exist. But this breaks\n    // how <noscript> is being handled. So we use the same document.\n    // See the discussion in https://github.com/facebook/react/pull/11157.\n    var testElement = parent.namespaceURI === HTML_NAMESPACE ? parent.ownerDocument.createElement(parent.tagName) : parent.ownerDocument.createElementNS(parent.namespaceURI, parent.tagName);\n    testElement.innerHTML = html;\n    return testElement.innerHTML;\n  };\n} // HTML parsing normalizes CR and CRLF to LF.\n// It also can turn \\u0000 into \\uFFFD inside attributes.\n// https://www.w3.org/TR/html5/single-page.html#preprocessing-the-input-stream\n// If we have a mismatch, it might be caused by that.\n// We will still patch up in this case but not fire the warning.\n\n\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g;\nvar NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\n\nfunction normalizeMarkupForTextOrAttribute(markup) {\n  {\n    checkHtmlStringCoercion(markup);\n  }\n\n  var markupString = typeof markup === 'string' ? markup : '' + markup;\n  return markupString.replace(NORMALIZE_NEWLINES_REGEX, '\\n').replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, '');\n}\n\nfunction checkForUnmatchedText(serverText, clientText, isConcurrentMode, shouldWarnDev) {\n  var normalizedClientText = normalizeMarkupForTextOrAttribute(clientText);\n  var normalizedServerText = normalizeMarkupForTextOrAttribute(serverText);\n\n  if (normalizedServerText === normalizedClientText) {\n    return;\n  }\n\n  if (shouldWarnDev) {\n    {\n      if (!didWarnInvalidHydration) {\n        didWarnInvalidHydration = true;\n\n        error('Text content did not match. Server: \"%s\" Client: \"%s\"', normalizedServerText, normalizedClientText);\n      }\n    }\n  }\n\n  if (isConcurrentMode && enableClientRenderFallbackOnTextMismatch) {\n    // In concurrent roots, we throw when there's a text mismatch and revert to\n    // client rendering, up to the nearest Suspense boundary.\n    throw new Error('Text content does not match server-rendered HTML.');\n  }\n}\n\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n  return rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument;\n}\n\nfunction noop() {}\n\nfunction trapClickOnNonInteractiveElement(node) {\n  // Mobile Safari does not fire properly bubble click events on\n  // non-interactive elements, which means delegated click listeners do not\n  // fire. The workaround for this bug involves attaching an empty click\n  // listener on the target node.\n  // https://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n  // Just set it using the onclick property so that we don't have to manage any\n  // bookkeeping for it. Not sure if we need to clear it when the listener is\n  // removed.\n  // TODO: Only do this for the relevant Safaris maybe?\n  node.onclick = noop;\n}\n\nfunction setInitialDOMProperties(tag, domElement, rootContainerElement, nextProps, isCustomComponentTag) {\n  for (var propKey in nextProps) {\n    if (!nextProps.hasOwnProperty(propKey)) {\n      continue;\n    }\n\n    var nextProp = nextProps[propKey];\n\n    if (propKey === STYLE) {\n      {\n        if (nextProp) {\n          // Freeze the next style object so that we can assume it won't be\n          // mutated. We have already warned for this in the past.\n          Object.freeze(nextProp);\n        }\n      } // Relies on `updateStylesByID` not mutating `styleUpdates`.\n\n\n      setValueForStyles(domElement, nextProp);\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n      var nextHtml = nextProp ? nextProp[HTML$1] : undefined;\n\n      if (nextHtml != null) {\n        setInnerHTML(domElement, nextHtml);\n      }\n    } else if (propKey === CHILDREN) {\n      if (typeof nextProp === 'string') {\n        // Avoid setting initial textContent when the text is empty. In IE11 setting\n        // textContent on a <textarea> will cause the placeholder to not\n        // show within the <textarea> until it has been focused and blurred again.\n        // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n        var canSetTextContent = tag !== 'textarea' || nextProp !== '';\n\n        if (canSetTextContent) {\n          setTextContent(domElement, nextProp);\n        }\n      } else if (typeof nextProp === 'number') {\n        setTextContent(domElement, '' + nextProp);\n      }\n    } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (propKey === AUTOFOCUS) ; else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n      if (nextProp != null) {\n        if ( typeof nextProp !== 'function') {\n          warnForInvalidEventListener(propKey, nextProp);\n        }\n\n        if (propKey === 'onScroll') {\n          listenToNonDelegatedEvent('scroll', domElement);\n        }\n      }\n    } else if (nextProp != null) {\n      setValueForProperty(domElement, propKey, nextProp, isCustomComponentTag);\n    }\n  }\n}\n\nfunction updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag) {\n  // TODO: Handle wasCustomComponentTag\n  for (var i = 0; i < updatePayload.length; i += 2) {\n    var propKey = updatePayload[i];\n    var propValue = updatePayload[i + 1];\n\n    if (propKey === STYLE) {\n      setValueForStyles(domElement, propValue);\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n      setInnerHTML(domElement, propValue);\n    } else if (propKey === CHILDREN) {\n      setTextContent(domElement, propValue);\n    } else {\n      setValueForProperty(domElement, propKey, propValue, isCustomComponentTag);\n    }\n  }\n}\n\nfunction createElement(type, props, rootContainerElement, parentNamespace) {\n  var isCustomComponentTag; // We create tags in the namespace of their parent container, except HTML\n  // tags get no namespace.\n\n  var ownerDocument = getOwnerDocumentFromRootContainer(rootContainerElement);\n  var domElement;\n  var namespaceURI = parentNamespace;\n\n  if (namespaceURI === HTML_NAMESPACE) {\n    namespaceURI = getIntrinsicNamespace(type);\n  }\n\n  if (namespaceURI === HTML_NAMESPACE) {\n    {\n      isCustomComponentTag = isCustomComponent(type, props); // Should this check be gated by parent namespace? Not sure we want to\n      // allow <SVG> or <mATH>.\n\n      if (!isCustomComponentTag && type !== type.toLowerCase()) {\n        error('<%s /> is using incorrect casing. ' + 'Use PascalCase for React components, ' + 'or lowercase for HTML elements.', type);\n      }\n    }\n\n    if (type === 'script') {\n      // Create the script via .innerHTML so its \"parser-inserted\" flag is\n      // set to true and it does not execute\n      var div = ownerDocument.createElement('div');\n\n      div.innerHTML = '<script><' + '/script>'; // eslint-disable-line\n      // This is guaranteed to yield a script element.\n\n      var firstChild = div.firstChild;\n      domElement = div.removeChild(firstChild);\n    } else if (typeof props.is === 'string') {\n      // $FlowIssue `createElement` should be updated for Web Components\n      domElement = ownerDocument.createElement(type, {\n        is: props.is\n      });\n    } else {\n      // Separate else branch instead of using `props.is || undefined` above because of a Firefox bug.\n      // See discussion in https://github.com/facebook/react/pull/6896\n      // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n      domElement = ownerDocument.createElement(type); // Normally attributes are assigned in `setInitialDOMProperties`, however the `multiple` and `size`\n      // attributes on `select`s needs to be added before `option`s are inserted.\n      // This prevents:\n      // - a bug where the `select` does not scroll to the correct option because singular\n      //  `select` elements automatically pick the first item #13222\n      // - a bug where the `select` set the first item as selected despite the `size` attribute #14239\n      // See https://github.com/facebook/react/issues/13222\n      // and https://github.com/facebook/react/issues/14239\n\n      if (type === 'select') {\n        var node = domElement;\n\n        if (props.multiple) {\n          node.multiple = true;\n        } else if (props.size) {\n          // Setting a size greater than 1 causes a select to behave like `multiple=true`, where\n          // it is possible that no option is selected.\n          //\n          // This is only necessary when a select in \"single selection mode\".\n          node.size = props.size;\n        }\n      }\n    }\n  } else {\n    domElement = ownerDocument.createElementNS(namespaceURI, type);\n  }\n\n  {\n    if (namespaceURI === HTML_NAMESPACE) {\n      if (!isCustomComponentTag && Object.prototype.toString.call(domElement) === '[object HTMLUnknownElement]' && !hasOwnProperty.call(warnedUnknownTags, type)) {\n        warnedUnknownTags[type] = true;\n\n        error('The tag <%s> is unrecognized in this browser. ' + 'If you meant to render a React component, start its name with ' + 'an uppercase letter.', type);\n      }\n    }\n  }\n\n  return domElement;\n}\nfunction createTextNode(text, rootContainerElement) {\n  return getOwnerDocumentFromRootContainer(rootContainerElement).createTextNode(text);\n}\nfunction setInitialProperties(domElement, tag, rawProps, rootContainerElement) {\n  var isCustomComponentTag = isCustomComponent(tag, rawProps);\n\n  {\n    validatePropertiesInDevelopment(tag, rawProps);\n  } // TODO: Make sure that we check isMounted before firing any of these events.\n\n\n  var props;\n\n  switch (tag) {\n    case 'dialog':\n      listenToNonDelegatedEvent('cancel', domElement);\n      listenToNonDelegatedEvent('close', domElement);\n      props = rawProps;\n      break;\n\n    case 'iframe':\n    case 'object':\n    case 'embed':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the load event.\n      listenToNonDelegatedEvent('load', domElement);\n      props = rawProps;\n      break;\n\n    case 'video':\n    case 'audio':\n      // We listen to these events in case to ensure emulated bubble\n      // listeners still fire for all the media events.\n      for (var i = 0; i < mediaEventTypes.length; i++) {\n        listenToNonDelegatedEvent(mediaEventTypes[i], domElement);\n      }\n\n      props = rawProps;\n      break;\n\n    case 'source':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the error event.\n      listenToNonDelegatedEvent('error', domElement);\n      props = rawProps;\n      break;\n\n    case 'img':\n    case 'image':\n    case 'link':\n      // We listen to these events in case to ensure emulated bubble\n      // listeners still fire for error and load events.\n      listenToNonDelegatedEvent('error', domElement);\n      listenToNonDelegatedEvent('load', domElement);\n      props = rawProps;\n      break;\n\n    case 'details':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the toggle event.\n      listenToNonDelegatedEvent('toggle', domElement);\n      props = rawProps;\n      break;\n\n    case 'input':\n      initWrapperState(domElement, rawProps);\n      props = getHostProps(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n\n    case 'option':\n      validateProps(domElement, rawProps);\n      props = rawProps;\n      break;\n\n    case 'select':\n      initWrapperState$1(domElement, rawProps);\n      props = getHostProps$1(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n\n    case 'textarea':\n      initWrapperState$2(domElement, rawProps);\n      props = getHostProps$2(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n\n    default:\n      props = rawProps;\n  }\n\n  assertValidProps(tag, props);\n  setInitialDOMProperties(tag, domElement, rootContainerElement, props, isCustomComponentTag);\n\n  switch (tag) {\n    case 'input':\n      // TODO: Make sure we check if this is still unmounted or do any clean\n      // up necessary since we never stop tracking anymore.\n      track(domElement);\n      postMountWrapper(domElement, rawProps, false);\n      break;\n\n    case 'textarea':\n      // TODO: Make sure we check if this is still unmounted or do any clean\n      // up necessary since we never stop tracking anymore.\n      track(domElement);\n      postMountWrapper$3(domElement);\n      break;\n\n    case 'option':\n      postMountWrapper$1(domElement, rawProps);\n      break;\n\n    case 'select':\n      postMountWrapper$2(domElement, rawProps);\n      break;\n\n    default:\n      if (typeof props.onClick === 'function') {\n        // TODO: This cast may not be sound for SVG, MathML or custom elements.\n        trapClickOnNonInteractiveElement(domElement);\n      }\n\n      break;\n  }\n} // Calculate the diff between the two objects.\n\nfunction diffProperties(domElement, tag, lastRawProps, nextRawProps, rootContainerElement) {\n  {\n    validatePropertiesInDevelopment(tag, nextRawProps);\n  }\n\n  var updatePayload = null;\n  var lastProps;\n  var nextProps;\n\n  switch (tag) {\n    case 'input':\n      lastProps = getHostProps(domElement, lastRawProps);\n      nextProps = getHostProps(domElement, nextRawProps);\n      updatePayload = [];\n      break;\n\n    case 'select':\n      lastProps = getHostProps$1(domElement, lastRawProps);\n      nextProps = getHostProps$1(domElement, nextRawProps);\n      updatePayload = [];\n      break;\n\n    case 'textarea':\n      lastProps = getHostProps$2(domElement, lastRawProps);\n      nextProps = getHostProps$2(domElement, nextRawProps);\n      updatePayload = [];\n      break;\n\n    default:\n      lastProps = lastRawProps;\n      nextProps = nextRawProps;\n\n      if (typeof lastProps.onClick !== 'function' && typeof nextProps.onClick === 'function') {\n        // TODO: This cast may not be sound for SVG, MathML or custom elements.\n        trapClickOnNonInteractiveElement(domElement);\n      }\n\n      break;\n  }\n\n  assertValidProps(tag, nextProps);\n  var propKey;\n  var styleName;\n  var styleUpdates = null;\n\n  for (propKey in lastProps) {\n    if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n      continue;\n    }\n\n    if (propKey === STYLE) {\n      var lastStyle = lastProps[propKey];\n\n      for (styleName in lastStyle) {\n        if (lastStyle.hasOwnProperty(styleName)) {\n          if (!styleUpdates) {\n            styleUpdates = {};\n          }\n\n          styleUpdates[styleName] = '';\n        }\n      }\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML || propKey === CHILDREN) ; else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (propKey === AUTOFOCUS) ; else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n      // This is a special case. If any listener updates we need to ensure\n      // that the \"current\" fiber pointer gets updated so we need a commit\n      // to update this element.\n      if (!updatePayload) {\n        updatePayload = [];\n      }\n    } else {\n      // For all other deleted properties we add it to the queue. We use\n      // the allowed property list in the commit phase instead.\n      (updatePayload = updatePayload || []).push(propKey, null);\n    }\n  }\n\n  for (propKey in nextProps) {\n    var nextProp = nextProps[propKey];\n    var lastProp = lastProps != null ? lastProps[propKey] : undefined;\n\n    if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n      continue;\n    }\n\n    if (propKey === STYLE) {\n      {\n        if (nextProp) {\n          // Freeze the next style object so that we can assume it won't be\n          // mutated. We have already warned for this in the past.\n          Object.freeze(nextProp);\n        }\n      }\n\n      if (lastProp) {\n        // Unset styles on `lastProp` but not on `nextProp`.\n        for (styleName in lastProp) {\n          if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n            if (!styleUpdates) {\n              styleUpdates = {};\n            }\n\n            styleUpdates[styleName] = '';\n          }\n        } // Update styles that changed since `lastProp`.\n\n\n        for (styleName in nextProp) {\n          if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n            if (!styleUpdates) {\n              styleUpdates = {};\n            }\n\n            styleUpdates[styleName] = nextProp[styleName];\n          }\n        }\n      } else {\n        // Relies on `updateStylesByID` not mutating `styleUpdates`.\n        if (!styleUpdates) {\n          if (!updatePayload) {\n            updatePayload = [];\n          }\n\n          updatePayload.push(propKey, styleUpdates);\n        }\n\n        styleUpdates = nextProp;\n      }\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n      var nextHtml = nextProp ? nextProp[HTML$1] : undefined;\n      var lastHtml = lastProp ? lastProp[HTML$1] : undefined;\n\n      if (nextHtml != null) {\n        if (lastHtml !== nextHtml) {\n          (updatePayload = updatePayload || []).push(propKey, nextHtml);\n        }\n      }\n    } else if (propKey === CHILDREN) {\n      if (typeof nextProp === 'string' || typeof nextProp === 'number') {\n        (updatePayload = updatePayload || []).push(propKey, '' + nextProp);\n      }\n    } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n      if (nextProp != null) {\n        // We eagerly listen to this even though we haven't committed yet.\n        if ( typeof nextProp !== 'function') {\n          warnForInvalidEventListener(propKey, nextProp);\n        }\n\n        if (propKey === 'onScroll') {\n          listenToNonDelegatedEvent('scroll', domElement);\n        }\n      }\n\n      if (!updatePayload && lastProp !== nextProp) {\n        // This is a special case. If any listener updates we need to ensure\n        // that the \"current\" props pointer gets updated so we need a commit\n        // to update this element.\n        updatePayload = [];\n      }\n    } else {\n      // For any other property we always add it to the queue and then we\n      // filter it out using the allowed property list during the commit.\n      (updatePayload = updatePayload || []).push(propKey, nextProp);\n    }\n  }\n\n  if (styleUpdates) {\n    {\n      validateShorthandPropertyCollisionInDev(styleUpdates, nextProps[STYLE]);\n    }\n\n    (updatePayload = updatePayload || []).push(STYLE, styleUpdates);\n  }\n\n  return updatePayload;\n} // Apply the diff.\n\nfunction updateProperties(domElement, updatePayload, tag, lastRawProps, nextRawProps) {\n  // Update checked *before* name.\n  // In the middle of an update, it is possible to have multiple checked.\n  // When a checked radio tries to change name, browser makes another radio's checked false.\n  if (tag === 'input' && nextRawProps.type === 'radio' && nextRawProps.name != null) {\n    updateChecked(domElement, nextRawProps);\n  }\n\n  var wasCustomComponentTag = isCustomComponent(tag, lastRawProps);\n  var isCustomComponentTag = isCustomComponent(tag, nextRawProps); // Apply the diff.\n\n  updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag); // TODO: Ensure that an update gets scheduled if any of the special props\n  // changed.\n\n  switch (tag) {\n    case 'input':\n      // Update the wrapper around inputs *after* updating props. This has to\n      // happen after `updateDOMProperties`. Otherwise HTML5 input validations\n      // raise warnings and prevent the new value from being assigned.\n      updateWrapper(domElement, nextRawProps);\n      break;\n\n    case 'textarea':\n      updateWrapper$1(domElement, nextRawProps);\n      break;\n\n    case 'select':\n      // <select> value update needs to occur after <option> children\n      // reconciliation\n      postUpdateWrapper(domElement, nextRawProps);\n      break;\n  }\n}\n\nfunction getPossibleStandardName(propName) {\n  {\n    var lowerCasedName = propName.toLowerCase();\n\n    if (!possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n      return null;\n    }\n\n    return possibleStandardNames[lowerCasedName] || null;\n  }\n}\n\nfunction diffHydratedProperties(domElement, tag, rawProps, parentNamespace, rootContainerElement, isConcurrentMode, shouldWarnDev) {\n  var isCustomComponentTag;\n  var extraAttributeNames;\n\n  {\n    isCustomComponentTag = isCustomComponent(tag, rawProps);\n    validatePropertiesInDevelopment(tag, rawProps);\n  } // TODO: Make sure that we check isMounted before firing any of these events.\n\n\n  switch (tag) {\n    case 'dialog':\n      listenToNonDelegatedEvent('cancel', domElement);\n      listenToNonDelegatedEvent('close', domElement);\n      break;\n\n    case 'iframe':\n    case 'object':\n    case 'embed':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the load event.\n      listenToNonDelegatedEvent('load', domElement);\n      break;\n\n    case 'video':\n    case 'audio':\n      // We listen to these events in case to ensure emulated bubble\n      // listeners still fire for all the media events.\n      for (var i = 0; i < mediaEventTypes.length; i++) {\n        listenToNonDelegatedEvent(mediaEventTypes[i], domElement);\n      }\n\n      break;\n\n    case 'source':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the error event.\n      listenToNonDelegatedEvent('error', domElement);\n      break;\n\n    case 'img':\n    case 'image':\n    case 'link':\n      // We listen to these events in case to ensure emulated bubble\n      // listeners still fire for error and load events.\n      listenToNonDelegatedEvent('error', domElement);\n      listenToNonDelegatedEvent('load', domElement);\n      break;\n\n    case 'details':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the toggle event.\n      listenToNonDelegatedEvent('toggle', domElement);\n      break;\n\n    case 'input':\n      initWrapperState(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n\n    case 'option':\n      validateProps(domElement, rawProps);\n      break;\n\n    case 'select':\n      initWrapperState$1(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n\n    case 'textarea':\n      initWrapperState$2(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n  }\n\n  assertValidProps(tag, rawProps);\n\n  {\n    extraAttributeNames = new Set();\n    var attributes = domElement.attributes;\n\n    for (var _i = 0; _i < attributes.length; _i++) {\n      var name = attributes[_i].name.toLowerCase();\n\n      switch (name) {\n        // Controlled attributes are not validated\n        // TODO: Only ignore them on controlled tags.\n        case 'value':\n          break;\n\n        case 'checked':\n          break;\n\n        case 'selected':\n          break;\n\n        default:\n          // Intentionally use the original name.\n          // See discussion in https://github.com/facebook/react/pull/10676.\n          extraAttributeNames.add(attributes[_i].name);\n      }\n    }\n  }\n\n  var updatePayload = null;\n\n  for (var propKey in rawProps) {\n    if (!rawProps.hasOwnProperty(propKey)) {\n      continue;\n    }\n\n    var nextProp = rawProps[propKey];\n\n    if (propKey === CHILDREN) {\n      // For text content children we compare against textContent. This\n      // might match additional HTML that is hidden when we read it using\n      // textContent. E.g. \"foo\" will match \"f<span>oo</span>\" but that still\n      // satisfies our requirement. Our requirement is not to produce perfect\n      // HTML and attributes. Ideally we should preserve structure but it's\n      // ok not to if the visible content is still enough to indicate what\n      // even listeners these nodes might be wired up to.\n      // TODO: Warn if there is more than a single textNode as a child.\n      // TODO: Should we use domElement.firstChild.nodeValue to compare?\n      if (typeof nextProp === 'string') {\n        if (domElement.textContent !== nextProp) {\n          if (rawProps[SUPPRESS_HYDRATION_WARNING] !== true) {\n            checkForUnmatchedText(domElement.textContent, nextProp, isConcurrentMode, shouldWarnDev);\n          }\n\n          updatePayload = [CHILDREN, nextProp];\n        }\n      } else if (typeof nextProp === 'number') {\n        if (domElement.textContent !== '' + nextProp) {\n          if (rawProps[SUPPRESS_HYDRATION_WARNING] !== true) {\n            checkForUnmatchedText(domElement.textContent, nextProp, isConcurrentMode, shouldWarnDev);\n          }\n\n          updatePayload = [CHILDREN, '' + nextProp];\n        }\n      }\n    } else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n      if (nextProp != null) {\n        if ( typeof nextProp !== 'function') {\n          warnForInvalidEventListener(propKey, nextProp);\n        }\n\n        if (propKey === 'onScroll') {\n          listenToNonDelegatedEvent('scroll', domElement);\n        }\n      }\n    } else if (shouldWarnDev && true && // Convince Flow we've calculated it (it's DEV-only in this method.)\n    typeof isCustomComponentTag === 'boolean') {\n      // Validate that the properties correspond to their expected values.\n      var serverValue = void 0;\n      var propertyInfo = isCustomComponentTag && enableCustomElementPropertySupport ? null : getPropertyInfo(propKey);\n\n      if (rawProps[SUPPRESS_HYDRATION_WARNING] === true) ; else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING || // Controlled attributes are not validated\n      // TODO: Only ignore them on controlled tags.\n      propKey === 'value' || propKey === 'checked' || propKey === 'selected') ; else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n        var serverHTML = domElement.innerHTML;\n        var nextHtml = nextProp ? nextProp[HTML$1] : undefined;\n\n        if (nextHtml != null) {\n          var expectedHTML = normalizeHTML(domElement, nextHtml);\n\n          if (expectedHTML !== serverHTML) {\n            warnForPropDifference(propKey, serverHTML, expectedHTML);\n          }\n        }\n      } else if (propKey === STYLE) {\n        // $FlowFixMe - Should be inferred as not undefined.\n        extraAttributeNames.delete(propKey);\n\n        if (canDiffStyleForHydrationWarning) {\n          var expectedStyle = createDangerousStringForStyles(nextProp);\n          serverValue = domElement.getAttribute('style');\n\n          if (expectedStyle !== serverValue) {\n            warnForPropDifference(propKey, serverValue, expectedStyle);\n          }\n        }\n      } else if (isCustomComponentTag && !enableCustomElementPropertySupport) {\n        // $FlowFixMe - Should be inferred as not undefined.\n        extraAttributeNames.delete(propKey.toLowerCase());\n        serverValue = getValueForAttribute(domElement, propKey, nextProp);\n\n        if (nextProp !== serverValue) {\n          warnForPropDifference(propKey, serverValue, nextProp);\n        }\n      } else if (!shouldIgnoreAttribute(propKey, propertyInfo, isCustomComponentTag) && !shouldRemoveAttribute(propKey, nextProp, propertyInfo, isCustomComponentTag)) {\n        var isMismatchDueToBadCasing = false;\n\n        if (propertyInfo !== null) {\n          // $FlowFixMe - Should be inferred as not undefined.\n          extraAttributeNames.delete(propertyInfo.attributeName);\n          serverValue = getValueForProperty(domElement, propKey, nextProp, propertyInfo);\n        } else {\n          var ownNamespace = parentNamespace;\n\n          if (ownNamespace === HTML_NAMESPACE) {\n            ownNamespace = getIntrinsicNamespace(tag);\n          }\n\n          if (ownNamespace === HTML_NAMESPACE) {\n            // $FlowFixMe - Should be inferred as not undefined.\n            extraAttributeNames.delete(propKey.toLowerCase());\n          } else {\n            var standardName = getPossibleStandardName(propKey);\n\n            if (standardName !== null && standardName !== propKey) {\n              // If an SVG prop is supplied with bad casing, it will\n              // be successfully parsed from HTML, but will produce a mismatch\n              // (and would be incorrectly rendered on the client).\n              // However, we already warn about bad casing elsewhere.\n              // So we'll skip the misleading extra mismatch warning in this case.\n              isMismatchDueToBadCasing = true; // $FlowFixMe - Should be inferred as not undefined.\n\n              extraAttributeNames.delete(standardName);\n            } // $FlowFixMe - Should be inferred as not undefined.\n\n\n            extraAttributeNames.delete(propKey);\n          }\n\n          serverValue = getValueForAttribute(domElement, propKey, nextProp);\n        }\n\n        var dontWarnCustomElement = enableCustomElementPropertySupport  ;\n\n        if (!dontWarnCustomElement && nextProp !== serverValue && !isMismatchDueToBadCasing) {\n          warnForPropDifference(propKey, serverValue, nextProp);\n        }\n      }\n    }\n  }\n\n  {\n    if (shouldWarnDev) {\n      if ( // $FlowFixMe - Should be inferred as not undefined.\n      extraAttributeNames.size > 0 && rawProps[SUPPRESS_HYDRATION_WARNING] !== true) {\n        // $FlowFixMe - Should be inferred as not undefined.\n        warnForExtraAttributes(extraAttributeNames);\n      }\n    }\n  }\n\n  switch (tag) {\n    case 'input':\n      // TODO: Make sure we check if this is still unmounted or do any clean\n      // up necessary since we never stop tracking anymore.\n      track(domElement);\n      postMountWrapper(domElement, rawProps, true);\n      break;\n\n    case 'textarea':\n      // TODO: Make sure we check if this is still unmounted or do any clean\n      // up necessary since we never stop tracking anymore.\n      track(domElement);\n      postMountWrapper$3(domElement);\n      break;\n\n    case 'select':\n    case 'option':\n      // For input and textarea we current always set the value property at\n      // post mount to force it to diverge from attributes. However, for\n      // option and select we don't quite do the same thing and select\n      // is not resilient to the DOM state changing so we don't do that here.\n      // TODO: Consider not doing this for input and textarea.\n      break;\n\n    default:\n      if (typeof rawProps.onClick === 'function') {\n        // TODO: This cast may not be sound for SVG, MathML or custom elements.\n        trapClickOnNonInteractiveElement(domElement);\n      }\n\n      break;\n  }\n\n  return updatePayload;\n}\nfunction diffHydratedText(textNode, text, isConcurrentMode) {\n  var isDifferent = textNode.nodeValue !== text;\n  return isDifferent;\n}\nfunction warnForDeletedHydratableElement(parentNode, child) {\n  {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n\n    error('Did not expect server HTML to contain a <%s> in <%s>.', child.nodeName.toLowerCase(), parentNode.nodeName.toLowerCase());\n  }\n}\nfunction warnForDeletedHydratableText(parentNode, child) {\n  {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n\n    error('Did not expect server HTML to contain the text node \"%s\" in <%s>.', child.nodeValue, parentNode.nodeName.toLowerCase());\n  }\n}\nfunction warnForInsertedHydratedElement(parentNode, tag, props) {\n  {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n\n    error('Expected server HTML to contain a matching <%s> in <%s>.', tag, parentNode.nodeName.toLowerCase());\n  }\n}\nfunction warnForInsertedHydratedText(parentNode, text) {\n  {\n    if (text === '') {\n      // We expect to insert empty text nodes since they're not represented in\n      // the HTML.\n      // TODO: Remove this special case if we can just avoid inserting empty\n      // text nodes.\n      return;\n    }\n\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n\n    error('Expected server HTML to contain a matching text node for \"%s\" in <%s>.', text, parentNode.nodeName.toLowerCase());\n  }\n}\nfunction restoreControlledState$3(domElement, tag, props) {\n  switch (tag) {\n    case 'input':\n      restoreControlledState(domElement, props);\n      return;\n\n    case 'textarea':\n      restoreControlledState$2(domElement, props);\n      return;\n\n    case 'select':\n      restoreControlledState$1(domElement, props);\n      return;\n  }\n}\n\nvar validateDOMNesting = function () {};\n\nvar updatedAncestorInfo = function () {};\n\n{\n  // This validation code was written based on the HTML5 parsing spec:\n  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n  //\n  // Note: this does not catch all invalid nesting, nor does it try to (as it's\n  // not clear what practical benefit doing so provides); instead, we warn only\n  // for cases where the parser will give a parse tree differing from what React\n  // intended. For example, <b><div></div></b> is invalid but we don't warn\n  // because it still parses correctly; we do warn for other cases like nested\n  // <p> tags where the beginning of the second element implicitly closes the\n  // first, causing a confusing mess.\n  // https://html.spec.whatwg.org/multipage/syntax.html#special\n  var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp']; // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n\n  var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template', // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n  // TODO: Distinguish by namespace here -- for <title>, including it here\n  // errs on the side of fewer warnings\n  'foreignObject', 'desc', 'title']; // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n\n  var buttonScopeTags = inScopeTags.concat(['button']); // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n\n  var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n  var emptyAncestorInfo = {\n    current: null,\n    formTag: null,\n    aTagInScope: null,\n    buttonTagInScope: null,\n    nobrTagInScope: null,\n    pTagInButtonScope: null,\n    listItemTagAutoclosing: null,\n    dlItemTagAutoclosing: null\n  };\n\n  updatedAncestorInfo = function (oldInfo, tag) {\n    var ancestorInfo = assign({}, oldInfo || emptyAncestorInfo);\n\n    var info = {\n      tag: tag\n    };\n\n    if (inScopeTags.indexOf(tag) !== -1) {\n      ancestorInfo.aTagInScope = null;\n      ancestorInfo.buttonTagInScope = null;\n      ancestorInfo.nobrTagInScope = null;\n    }\n\n    if (buttonScopeTags.indexOf(tag) !== -1) {\n      ancestorInfo.pTagInButtonScope = null;\n    } // See rules for 'li', 'dd', 'dt' start tags in\n    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n\n\n    if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n      ancestorInfo.listItemTagAutoclosing = null;\n      ancestorInfo.dlItemTagAutoclosing = null;\n    }\n\n    ancestorInfo.current = info;\n\n    if (tag === 'form') {\n      ancestorInfo.formTag = info;\n    }\n\n    if (tag === 'a') {\n      ancestorInfo.aTagInScope = info;\n    }\n\n    if (tag === 'button') {\n      ancestorInfo.buttonTagInScope = info;\n    }\n\n    if (tag === 'nobr') {\n      ancestorInfo.nobrTagInScope = info;\n    }\n\n    if (tag === 'p') {\n      ancestorInfo.pTagInButtonScope = info;\n    }\n\n    if (tag === 'li') {\n      ancestorInfo.listItemTagAutoclosing = info;\n    }\n\n    if (tag === 'dd' || tag === 'dt') {\n      ancestorInfo.dlItemTagAutoclosing = info;\n    }\n\n    return ancestorInfo;\n  };\n  /**\n   * Returns whether\n   */\n\n\n  var isTagValidWithParent = function (tag, parentTag) {\n    // First, let's check if we're in an unusual parsing mode...\n    switch (parentTag) {\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n      case 'select':\n        return tag === 'option' || tag === 'optgroup' || tag === '#text';\n\n      case 'optgroup':\n        return tag === 'option' || tag === '#text';\n      // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n      // but\n\n      case 'option':\n        return tag === '#text';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n      // No special behavior since these rules fall back to \"in body\" mode for\n      // all except special table nodes which cause bad parsing behavior anyway.\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n\n      case 'tr':\n        return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n\n      case 'tbody':\n      case 'thead':\n      case 'tfoot':\n        return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n\n      case 'colgroup':\n        return tag === 'col' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n\n      case 'table':\n        return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n\n      case 'head':\n        return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n\n      case 'html':\n        return tag === 'head' || tag === 'body' || tag === 'frameset';\n\n      case 'frameset':\n        return tag === 'frame';\n\n      case '#document':\n        return tag === 'html';\n    } // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n    // where the parsing rules cause implicit opens or closes to be added.\n    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n\n\n    switch (tag) {\n      case 'h1':\n      case 'h2':\n      case 'h3':\n      case 'h4':\n      case 'h5':\n      case 'h6':\n        return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n      case 'rp':\n      case 'rt':\n        return impliedEndTags.indexOf(parentTag) === -1;\n\n      case 'body':\n      case 'caption':\n      case 'col':\n      case 'colgroup':\n      case 'frameset':\n      case 'frame':\n      case 'head':\n      case 'html':\n      case 'tbody':\n      case 'td':\n      case 'tfoot':\n      case 'th':\n      case 'thead':\n      case 'tr':\n        // These tags are only valid with a few parents that have special child\n        // parsing rules -- if we're down here, then none of those matched and\n        // so we allow it only if we don't know what the parent is, as all other\n        // cases are invalid.\n        return parentTag == null;\n    }\n\n    return true;\n  };\n  /**\n   * Returns whether\n   */\n\n\n  var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n    switch (tag) {\n      case 'address':\n      case 'article':\n      case 'aside':\n      case 'blockquote':\n      case 'center':\n      case 'details':\n      case 'dialog':\n      case 'dir':\n      case 'div':\n      case 'dl':\n      case 'fieldset':\n      case 'figcaption':\n      case 'figure':\n      case 'footer':\n      case 'header':\n      case 'hgroup':\n      case 'main':\n      case 'menu':\n      case 'nav':\n      case 'ol':\n      case 'p':\n      case 'section':\n      case 'summary':\n      case 'ul':\n      case 'pre':\n      case 'listing':\n      case 'table':\n      case 'hr':\n      case 'xmp':\n      case 'h1':\n      case 'h2':\n      case 'h3':\n      case 'h4':\n      case 'h5':\n      case 'h6':\n        return ancestorInfo.pTagInButtonScope;\n\n      case 'form':\n        return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n      case 'li':\n        return ancestorInfo.listItemTagAutoclosing;\n\n      case 'dd':\n      case 'dt':\n        return ancestorInfo.dlItemTagAutoclosing;\n\n      case 'button':\n        return ancestorInfo.buttonTagInScope;\n\n      case 'a':\n        // Spec says something about storing a list of markers, but it sounds\n        // equivalent to this check.\n        return ancestorInfo.aTagInScope;\n\n      case 'nobr':\n        return ancestorInfo.nobrTagInScope;\n    }\n\n    return null;\n  };\n\n  var didWarn$1 = {};\n\n  validateDOMNesting = function (childTag, childText, ancestorInfo) {\n    ancestorInfo = ancestorInfo || emptyAncestorInfo;\n    var parentInfo = ancestorInfo.current;\n    var parentTag = parentInfo && parentInfo.tag;\n\n    if (childText != null) {\n      if (childTag != null) {\n        error('validateDOMNesting: when childText is passed, childTag should be null');\n      }\n\n      childTag = '#text';\n    }\n\n    var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n    var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n    var invalidParentOrAncestor = invalidParent || invalidAncestor;\n\n    if (!invalidParentOrAncestor) {\n      return;\n    }\n\n    var ancestorTag = invalidParentOrAncestor.tag;\n    var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag;\n\n    if (didWarn$1[warnKey]) {\n      return;\n    }\n\n    didWarn$1[warnKey] = true;\n    var tagDisplayName = childTag;\n    var whitespaceInfo = '';\n\n    if (childTag === '#text') {\n      if (/\\S/.test(childText)) {\n        tagDisplayName = 'Text nodes';\n      } else {\n        tagDisplayName = 'Whitespace text nodes';\n        whitespaceInfo = \" Make sure you don't have any extra whitespace between tags on \" + 'each line of your source code.';\n      }\n    } else {\n      tagDisplayName = '<' + childTag + '>';\n    }\n\n    if (invalidParent) {\n      var info = '';\n\n      if (ancestorTag === 'table' && childTag === 'tr') {\n        info += ' Add a <tbody>, <thead> or <tfoot> to your code to match the DOM tree generated by ' + 'the browser.';\n      }\n\n      error('validateDOMNesting(...): %s cannot appear as a child of <%s>.%s%s', tagDisplayName, ancestorTag, whitespaceInfo, info);\n    } else {\n      error('validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>.', tagDisplayName, ancestorTag);\n    }\n  };\n}\n\nvar SUPPRESS_HYDRATION_WARNING$1 = 'suppressHydrationWarning';\nvar SUSPENSE_START_DATA = '$';\nvar SUSPENSE_END_DATA = '/$';\nvar SUSPENSE_PENDING_START_DATA = '$?';\nvar SUSPENSE_FALLBACK_START_DATA = '$!';\nvar STYLE$1 = 'style';\nvar eventsEnabled = null;\nvar selectionInformation = null;\nfunction getRootHostContext(rootContainerInstance) {\n  var type;\n  var namespace;\n  var nodeType = rootContainerInstance.nodeType;\n\n  switch (nodeType) {\n    case DOCUMENT_NODE:\n    case DOCUMENT_FRAGMENT_NODE:\n      {\n        type = nodeType === DOCUMENT_NODE ? '#document' : '#fragment';\n        var root = rootContainerInstance.documentElement;\n        namespace = root ? root.namespaceURI : getChildNamespace(null, '');\n        break;\n      }\n\n    default:\n      {\n        var container = nodeType === COMMENT_NODE ? rootContainerInstance.parentNode : rootContainerInstance;\n        var ownNamespace = container.namespaceURI || null;\n        type = container.tagName;\n        namespace = getChildNamespace(ownNamespace, type);\n        break;\n      }\n  }\n\n  {\n    var validatedTag = type.toLowerCase();\n    var ancestorInfo = updatedAncestorInfo(null, validatedTag);\n    return {\n      namespace: namespace,\n      ancestorInfo: ancestorInfo\n    };\n  }\n}\nfunction getChildHostContext(parentHostContext, type, rootContainerInstance) {\n  {\n    var parentHostContextDev = parentHostContext;\n    var namespace = getChildNamespace(parentHostContextDev.namespace, type);\n    var ancestorInfo = updatedAncestorInfo(parentHostContextDev.ancestorInfo, type);\n    return {\n      namespace: namespace,\n      ancestorInfo: ancestorInfo\n    };\n  }\n}\nfunction getPublicInstance(instance) {\n  return instance;\n}\nfunction prepareForCommit(containerInfo) {\n  eventsEnabled = isEnabled();\n  selectionInformation = getSelectionInformation();\n  var activeInstance = null;\n\n  setEnabled(false);\n  return activeInstance;\n}\nfunction resetAfterCommit(containerInfo) {\n  restoreSelection(selectionInformation);\n  setEnabled(eventsEnabled);\n  eventsEnabled = null;\n  selectionInformation = null;\n}\nfunction createInstance(type, props, rootContainerInstance, hostContext, internalInstanceHandle) {\n  var parentNamespace;\n\n  {\n    // TODO: take namespace into account when validating.\n    var hostContextDev = hostContext;\n    validateDOMNesting(type, null, hostContextDev.ancestorInfo);\n\n    if (typeof props.children === 'string' || typeof props.children === 'number') {\n      var string = '' + props.children;\n      var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type);\n      validateDOMNesting(null, string, ownAncestorInfo);\n    }\n\n    parentNamespace = hostContextDev.namespace;\n  }\n\n  var domElement = createElement(type, props, rootContainerInstance, parentNamespace);\n  precacheFiberNode(internalInstanceHandle, domElement);\n  updateFiberProps(domElement, props);\n  return domElement;\n}\nfunction appendInitialChild(parentInstance, child) {\n  parentInstance.appendChild(child);\n}\nfunction finalizeInitialChildren(domElement, type, props, rootContainerInstance, hostContext) {\n  setInitialProperties(domElement, type, props, rootContainerInstance);\n\n  switch (type) {\n    case 'button':\n    case 'input':\n    case 'select':\n    case 'textarea':\n      return !!props.autoFocus;\n\n    case 'img':\n      return true;\n\n    default:\n      return false;\n  }\n}\nfunction prepareUpdate(domElement, type, oldProps, newProps, rootContainerInstance, hostContext) {\n  {\n    var hostContextDev = hostContext;\n\n    if (typeof newProps.children !== typeof oldProps.children && (typeof newProps.children === 'string' || typeof newProps.children === 'number')) {\n      var string = '' + newProps.children;\n      var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type);\n      validateDOMNesting(null, string, ownAncestorInfo);\n    }\n  }\n\n  return diffProperties(domElement, type, oldProps, newProps);\n}\nfunction shouldSetTextContent(type, props) {\n  return type === 'textarea' || type === 'noscript' || typeof props.children === 'string' || typeof props.children === 'number' || typeof props.dangerouslySetInnerHTML === 'object' && props.dangerouslySetInnerHTML !== null && props.dangerouslySetInnerHTML.__html != null;\n}\nfunction createTextInstance(text, rootContainerInstance, hostContext, internalInstanceHandle) {\n  {\n    var hostContextDev = hostContext;\n    validateDOMNesting(null, text, hostContextDev.ancestorInfo);\n  }\n\n  var textNode = createTextNode(text, rootContainerInstance);\n  precacheFiberNode(internalInstanceHandle, textNode);\n  return textNode;\n}\nfunction getCurrentEventPriority() {\n  var currentEvent = window.event;\n\n  if (currentEvent === undefined) {\n    return DefaultEventPriority;\n  }\n\n  return getEventPriority(currentEvent.type);\n}\n// if a component just imports ReactDOM (e.g. for findDOMNode).\n// Some environments might not have setTimeout or clearTimeout.\n\nvar scheduleTimeout = typeof setTimeout === 'function' ? setTimeout : undefined;\nvar cancelTimeout = typeof clearTimeout === 'function' ? clearTimeout : undefined;\nvar noTimeout = -1;\nvar localPromise = typeof Promise === 'function' ? Promise : undefined; // -------------------\nvar scheduleMicrotask = typeof queueMicrotask === 'function' ? queueMicrotask : typeof localPromise !== 'undefined' ? function (callback) {\n  return localPromise.resolve(null).then(callback).catch(handleErrorInNextTick);\n} : scheduleTimeout; // TODO: Determine the best fallback here.\n\nfunction handleErrorInNextTick(error) {\n  setTimeout(function () {\n    throw error;\n  });\n} // -------------------\nfunction commitMount(domElement, type, newProps, internalInstanceHandle) {\n  // Despite the naming that might imply otherwise, this method only\n  // fires if there is an `Update` effect scheduled during mounting.\n  // This happens if `finalizeInitialChildren` returns `true` (which it\n  // does to implement the `autoFocus` attribute on the client). But\n  // there are also other cases when this might happen (such as patching\n  // up text content during hydration mismatch). So we'll check this again.\n  switch (type) {\n    case 'button':\n    case 'input':\n    case 'select':\n    case 'textarea':\n      if (newProps.autoFocus) {\n        domElement.focus();\n      }\n\n      return;\n\n    case 'img':\n      {\n        if (newProps.src) {\n          domElement.src = newProps.src;\n        }\n\n        return;\n      }\n  }\n}\nfunction commitUpdate(domElement, updatePayload, type, oldProps, newProps, internalInstanceHandle) {\n  // Apply the diff to the DOM node.\n  updateProperties(domElement, updatePayload, type, oldProps, newProps); // Update the props handle so that we know which props are the ones with\n  // with current event handlers.\n\n  updateFiberProps(domElement, newProps);\n}\nfunction resetTextContent(domElement) {\n  setTextContent(domElement, '');\n}\nfunction commitTextUpdate(textInstance, oldText, newText) {\n  textInstance.nodeValue = newText;\n}\nfunction appendChild(parentInstance, child) {\n  parentInstance.appendChild(child);\n}\nfunction appendChildToContainer(container, child) {\n  var parentNode;\n\n  if (container.nodeType === COMMENT_NODE) {\n    parentNode = container.parentNode;\n    parentNode.insertBefore(child, container);\n  } else {\n    parentNode = container;\n    parentNode.appendChild(child);\n  } // This container might be used for a portal.\n  // If something inside a portal is clicked, that click should bubble\n  // through the React tree. However, on Mobile Safari the click would\n  // never bubble through the *DOM* tree unless an ancestor with onclick\n  // event exists. So we wouldn't see it and dispatch it.\n  // This is why we ensure that non React root containers have inline onclick\n  // defined.\n  // https://github.com/facebook/react/issues/11918\n\n\n  var reactRootContainer = container._reactRootContainer;\n\n  if ((reactRootContainer === null || reactRootContainer === undefined) && parentNode.onclick === null) {\n    // TODO: This cast may not be sound for SVG, MathML or custom elements.\n    trapClickOnNonInteractiveElement(parentNode);\n  }\n}\nfunction insertBefore(parentInstance, child, beforeChild) {\n  parentInstance.insertBefore(child, beforeChild);\n}\nfunction insertInContainerBefore(container, child, beforeChild) {\n  if (container.nodeType === COMMENT_NODE) {\n    container.parentNode.insertBefore(child, beforeChild);\n  } else {\n    container.insertBefore(child, beforeChild);\n  }\n}\n\nfunction removeChild(parentInstance, child) {\n  parentInstance.removeChild(child);\n}\nfunction removeChildFromContainer(container, child) {\n  if (container.nodeType === COMMENT_NODE) {\n    container.parentNode.removeChild(child);\n  } else {\n    container.removeChild(child);\n  }\n}\nfunction clearSuspenseBoundary(parentInstance, suspenseInstance) {\n  var node = suspenseInstance; // Delete all nodes within this suspense boundary.\n  // There might be nested nodes so we need to keep track of how\n  // deep we are and only break out when we're back on top.\n\n  var depth = 0;\n\n  do {\n    var nextNode = node.nextSibling;\n    parentInstance.removeChild(node);\n\n    if (nextNode && nextNode.nodeType === COMMENT_NODE) {\n      var data = nextNode.data;\n\n      if (data === SUSPENSE_END_DATA) {\n        if (depth === 0) {\n          parentInstance.removeChild(nextNode); // Retry if any event replaying was blocked on this.\n\n          retryIfBlockedOn(suspenseInstance);\n          return;\n        } else {\n          depth--;\n        }\n      } else if (data === SUSPENSE_START_DATA || data === SUSPENSE_PENDING_START_DATA || data === SUSPENSE_FALLBACK_START_DATA) {\n        depth++;\n      }\n    }\n\n    node = nextNode;\n  } while (node); // TODO: Warn, we didn't find the end comment boundary.\n  // Retry if any event replaying was blocked on this.\n\n\n  retryIfBlockedOn(suspenseInstance);\n}\nfunction clearSuspenseBoundaryFromContainer(container, suspenseInstance) {\n  if (container.nodeType === COMMENT_NODE) {\n    clearSuspenseBoundary(container.parentNode, suspenseInstance);\n  } else if (container.nodeType === ELEMENT_NODE) {\n    clearSuspenseBoundary(container, suspenseInstance);\n  } // Retry if any event replaying was blocked on this.\n\n\n  retryIfBlockedOn(container);\n}\nfunction hideInstance(instance) {\n  // TODO: Does this work for all element types? What about MathML? Should we\n  // pass host context to this method?\n  instance = instance;\n  var style = instance.style;\n\n  if (typeof style.setProperty === 'function') {\n    style.setProperty('display', 'none', 'important');\n  } else {\n    style.display = 'none';\n  }\n}\nfunction hideTextInstance(textInstance) {\n  textInstance.nodeValue = '';\n}\nfunction unhideInstance(instance, props) {\n  instance = instance;\n  var styleProp = props[STYLE$1];\n  var display = styleProp !== undefined && styleProp !== null && styleProp.hasOwnProperty('display') ? styleProp.display : null;\n  instance.style.display = dangerousStyleValue('display', display);\n}\nfunction unhideTextInstance(textInstance, text) {\n  textInstance.nodeValue = text;\n}\nfunction clearContainer(container) {\n  if (container.nodeType === ELEMENT_NODE) {\n    container.textContent = '';\n  } else if (container.nodeType === DOCUMENT_NODE) {\n    if (container.documentElement) {\n      container.removeChild(container.documentElement);\n    }\n  }\n} // -------------------\nfunction canHydrateInstance(instance, type, props) {\n  if (instance.nodeType !== ELEMENT_NODE || type.toLowerCase() !== instance.nodeName.toLowerCase()) {\n    return null;\n  } // This has now been refined to an element node.\n\n\n  return instance;\n}\nfunction canHydrateTextInstance(instance, text) {\n  if (text === '' || instance.nodeType !== TEXT_NODE) {\n    // Empty strings are not parsed by HTML so there won't be a correct match here.\n    return null;\n  } // This has now been refined to a text node.\n\n\n  return instance;\n}\nfunction canHydrateSuspenseInstance(instance) {\n  if (instance.nodeType !== COMMENT_NODE) {\n    // Empty strings are not parsed by HTML so there won't be a correct match here.\n    return null;\n  } // This has now been refined to a suspense node.\n\n\n  return instance;\n}\nfunction isSuspenseInstancePending(instance) {\n  return instance.data === SUSPENSE_PENDING_START_DATA;\n}\nfunction isSuspenseInstanceFallback(instance) {\n  return instance.data === SUSPENSE_FALLBACK_START_DATA;\n}\nfunction getSuspenseInstanceFallbackErrorDetails(instance) {\n  var dataset = instance.nextSibling && instance.nextSibling.dataset;\n  var digest, message, stack;\n\n  if (dataset) {\n    digest = dataset.dgst;\n\n    {\n      message = dataset.msg;\n      stack = dataset.stck;\n    }\n  }\n\n  {\n    return {\n      message: message,\n      digest: digest,\n      stack: stack\n    };\n  } // let value = {message: undefined, hash: undefined};\n  // const nextSibling = instance.nextSibling;\n  // if (nextSibling) {\n  //   const dataset = ((nextSibling: any): HTMLTemplateElement).dataset;\n  //   value.message = dataset.msg;\n  //   value.hash = dataset.hash;\n  //   if (true) {\n  //     value.stack = dataset.stack;\n  //   }\n  // }\n  // return value;\n\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n  instance._reactRetry = callback;\n}\n\nfunction getNextHydratable(node) {\n  // Skip non-hydratable nodes.\n  for (; node != null; node = node.nextSibling) {\n    var nodeType = node.nodeType;\n\n    if (nodeType === ELEMENT_NODE || nodeType === TEXT_NODE) {\n      break;\n    }\n\n    if (nodeType === COMMENT_NODE) {\n      var nodeData = node.data;\n\n      if (nodeData === SUSPENSE_START_DATA || nodeData === SUSPENSE_FALLBACK_START_DATA || nodeData === SUSPENSE_PENDING_START_DATA) {\n        break;\n      }\n\n      if (nodeData === SUSPENSE_END_DATA) {\n        return null;\n      }\n    }\n  }\n\n  return node;\n}\n\nfunction getNextHydratableSibling(instance) {\n  return getNextHydratable(instance.nextSibling);\n}\nfunction getFirstHydratableChild(parentInstance) {\n  return getNextHydratable(parentInstance.firstChild);\n}\nfunction getFirstHydratableChildWithinContainer(parentContainer) {\n  return getNextHydratable(parentContainer.firstChild);\n}\nfunction getFirstHydratableChildWithinSuspenseInstance(parentInstance) {\n  return getNextHydratable(parentInstance.nextSibling);\n}\nfunction hydrateInstance(instance, type, props, rootContainerInstance, hostContext, internalInstanceHandle, shouldWarnDev) {\n  precacheFiberNode(internalInstanceHandle, instance); // TODO: Possibly defer this until the commit phase where all the events\n  // get attached.\n\n  updateFiberProps(instance, props);\n  var parentNamespace;\n\n  {\n    var hostContextDev = hostContext;\n    parentNamespace = hostContextDev.namespace;\n  } // TODO: Temporary hack to check if we're in a concurrent root. We can delete\n  // when the legacy root API is removed.\n\n\n  var isConcurrentMode = (internalInstanceHandle.mode & ConcurrentMode) !== NoMode;\n  return diffHydratedProperties(instance, type, props, parentNamespace, rootContainerInstance, isConcurrentMode, shouldWarnDev);\n}\nfunction hydrateTextInstance(textInstance, text, internalInstanceHandle, shouldWarnDev) {\n  precacheFiberNode(internalInstanceHandle, textInstance); // TODO: Temporary hack to check if we're in a concurrent root. We can delete\n  // when the legacy root API is removed.\n\n  var isConcurrentMode = (internalInstanceHandle.mode & ConcurrentMode) !== NoMode;\n  return diffHydratedText(textInstance, text);\n}\nfunction hydrateSuspenseInstance(suspenseInstance, internalInstanceHandle) {\n  precacheFiberNode(internalInstanceHandle, suspenseInstance);\n}\nfunction getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance) {\n  var node = suspenseInstance.nextSibling; // Skip past all nodes within this suspense boundary.\n  // There might be nested nodes so we need to keep track of how\n  // deep we are and only break out when we're back on top.\n\n  var depth = 0;\n\n  while (node) {\n    if (node.nodeType === COMMENT_NODE) {\n      var data = node.data;\n\n      if (data === SUSPENSE_END_DATA) {\n        if (depth === 0) {\n          return getNextHydratableSibling(node);\n        } else {\n          depth--;\n        }\n      } else if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {\n        depth++;\n      }\n    }\n\n    node = node.nextSibling;\n  } // TODO: Warn, we didn't find the end comment boundary.\n\n\n  return null;\n} // Returns the SuspenseInstance if this node is a direct child of a\n// SuspenseInstance. I.e. if its previous sibling is a Comment with\n// SUSPENSE_x_START_DATA. Otherwise, null.\n\nfunction getParentSuspenseInstance(targetInstance) {\n  var node = targetInstance.previousSibling; // Skip past all nodes within this suspense boundary.\n  // There might be nested nodes so we need to keep track of how\n  // deep we are and only break out when we're back on top.\n\n  var depth = 0;\n\n  while (node) {\n    if (node.nodeType === COMMENT_NODE) {\n      var data = node.data;\n\n      if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {\n        if (depth === 0) {\n          return node;\n        } else {\n          depth--;\n        }\n      } else if (data === SUSPENSE_END_DATA) {\n        depth++;\n      }\n    }\n\n    node = node.previousSibling;\n  }\n\n  return null;\n}\nfunction commitHydratedContainer(container) {\n  // Retry if any event replaying was blocked on this.\n  retryIfBlockedOn(container);\n}\nfunction commitHydratedSuspenseInstance(suspenseInstance) {\n  // Retry if any event replaying was blocked on this.\n  retryIfBlockedOn(suspenseInstance);\n}\nfunction shouldDeleteUnhydratedTailInstances(parentType) {\n  return parentType !== 'head' && parentType !== 'body';\n}\nfunction didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, text, isConcurrentMode) {\n  var shouldWarnDev = true;\n  checkForUnmatchedText(textInstance.nodeValue, text, isConcurrentMode, shouldWarnDev);\n}\nfunction didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, text, isConcurrentMode) {\n  if (parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n    var shouldWarnDev = true;\n    checkForUnmatchedText(textInstance.nodeValue, text, isConcurrentMode, shouldWarnDev);\n  }\n}\nfunction didNotHydrateInstanceWithinContainer(parentContainer, instance) {\n  {\n    if (instance.nodeType === ELEMENT_NODE) {\n      warnForDeletedHydratableElement(parentContainer, instance);\n    } else if (instance.nodeType === COMMENT_NODE) ; else {\n      warnForDeletedHydratableText(parentContainer, instance);\n    }\n  }\n}\nfunction didNotHydrateInstanceWithinSuspenseInstance(parentInstance, instance) {\n  {\n    // $FlowFixMe: Only Element or Document can be parent nodes.\n    var parentNode = parentInstance.parentNode;\n\n    if (parentNode !== null) {\n      if (instance.nodeType === ELEMENT_NODE) {\n        warnForDeletedHydratableElement(parentNode, instance);\n      } else if (instance.nodeType === COMMENT_NODE) ; else {\n        warnForDeletedHydratableText(parentNode, instance);\n      }\n    }\n  }\n}\nfunction didNotHydrateInstance(parentType, parentProps, parentInstance, instance, isConcurrentMode) {\n  {\n    if (isConcurrentMode || parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n      if (instance.nodeType === ELEMENT_NODE) {\n        warnForDeletedHydratableElement(parentInstance, instance);\n      } else if (instance.nodeType === COMMENT_NODE) ; else {\n        warnForDeletedHydratableText(parentInstance, instance);\n      }\n    }\n  }\n}\nfunction didNotFindHydratableInstanceWithinContainer(parentContainer, type, props) {\n  {\n    warnForInsertedHydratedElement(parentContainer, type);\n  }\n}\nfunction didNotFindHydratableTextInstanceWithinContainer(parentContainer, text) {\n  {\n    warnForInsertedHydratedText(parentContainer, text);\n  }\n}\nfunction didNotFindHydratableInstanceWithinSuspenseInstance(parentInstance, type, props) {\n  {\n    // $FlowFixMe: Only Element or Document can be parent nodes.\n    var parentNode = parentInstance.parentNode;\n    if (parentNode !== null) warnForInsertedHydratedElement(parentNode, type);\n  }\n}\nfunction didNotFindHydratableTextInstanceWithinSuspenseInstance(parentInstance, text) {\n  {\n    // $FlowFixMe: Only Element or Document can be parent nodes.\n    var parentNode = parentInstance.parentNode;\n    if (parentNode !== null) warnForInsertedHydratedText(parentNode, text);\n  }\n}\nfunction didNotFindHydratableInstance(parentType, parentProps, parentInstance, type, props, isConcurrentMode) {\n  {\n    if (isConcurrentMode || parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n      warnForInsertedHydratedElement(parentInstance, type);\n    }\n  }\n}\nfunction didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, text, isConcurrentMode) {\n  {\n    if (isConcurrentMode || parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n      warnForInsertedHydratedText(parentInstance, text);\n    }\n  }\n}\nfunction errorHydratingContainer(parentContainer) {\n  {\n    // TODO: This gets logged by onRecoverableError, too, so we should be\n    // able to remove it.\n    error('An error occurred during hydration. The server HTML was replaced with client content in <%s>.', parentContainer.nodeName.toLowerCase());\n  }\n}\nfunction preparePortalMount(portalInstance) {\n  listenToAllSupportedEvents(portalInstance);\n}\n\nvar randomKey = Math.random().toString(36).slice(2);\nvar internalInstanceKey = '__reactFiber$' + randomKey;\nvar internalPropsKey = '__reactProps$' + randomKey;\nvar internalContainerInstanceKey = '__reactContainer$' + randomKey;\nvar internalEventHandlersKey = '__reactEvents$' + randomKey;\nvar internalEventHandlerListenersKey = '__reactListeners$' + randomKey;\nvar internalEventHandlesSetKey = '__reactHandles$' + randomKey;\nfunction detachDeletedInstance(node) {\n  // TODO: This function is only called on host components. I don't think all of\n  // these fields are relevant.\n  delete node[internalInstanceKey];\n  delete node[internalPropsKey];\n  delete node[internalEventHandlersKey];\n  delete node[internalEventHandlerListenersKey];\n  delete node[internalEventHandlesSetKey];\n}\nfunction precacheFiberNode(hostInst, node) {\n  node[internalInstanceKey] = hostInst;\n}\nfunction markContainerAsRoot(hostRoot, node) {\n  node[internalContainerInstanceKey] = hostRoot;\n}\nfunction unmarkContainerAsRoot(node) {\n  node[internalContainerInstanceKey] = null;\n}\nfunction isContainerMarkedAsRoot(node) {\n  return !!node[internalContainerInstanceKey];\n} // Given a DOM node, return the closest HostComponent or HostText fiber ancestor.\n// If the target node is part of a hydrated or not yet rendered subtree, then\n// this may also return a SuspenseComponent or HostRoot to indicate that.\n// Conceptually the HostRoot fiber is a child of the Container node. So if you\n// pass the Container node as the targetNode, you will not actually get the\n// HostRoot back. To get to the HostRoot, you need to pass a child of it.\n// The same thing applies to Suspense boundaries.\n\nfunction getClosestInstanceFromNode(targetNode) {\n  var targetInst = targetNode[internalInstanceKey];\n\n  if (targetInst) {\n    // Don't return HostRoot or SuspenseComponent here.\n    return targetInst;\n  } // If the direct event target isn't a React owned DOM node, we need to look\n  // to see if one of its parents is a React owned DOM node.\n\n\n  var parentNode = targetNode.parentNode;\n\n  while (parentNode) {\n    // We'll check if this is a container root that could include\n    // React nodes in the future. We need to check this first because\n    // if we're a child of a dehydrated container, we need to first\n    // find that inner container before moving on to finding the parent\n    // instance. Note that we don't check this field on  the targetNode\n    // itself because the fibers are conceptually between the container\n    // node and the first child. It isn't surrounding the container node.\n    // If it's not a container, we check if it's an instance.\n    targetInst = parentNode[internalContainerInstanceKey] || parentNode[internalInstanceKey];\n\n    if (targetInst) {\n      // Since this wasn't the direct target of the event, we might have\n      // stepped past dehydrated DOM nodes to get here. However they could\n      // also have been non-React nodes. We need to answer which one.\n      // If we the instance doesn't have any children, then there can't be\n      // a nested suspense boundary within it. So we can use this as a fast\n      // bailout. Most of the time, when people add non-React children to\n      // the tree, it is using a ref to a child-less DOM node.\n      // Normally we'd only need to check one of the fibers because if it\n      // has ever gone from having children to deleting them or vice versa\n      // it would have deleted the dehydrated boundary nested inside already.\n      // However, since the HostRoot starts out with an alternate it might\n      // have one on the alternate so we need to check in case this was a\n      // root.\n      var alternate = targetInst.alternate;\n\n      if (targetInst.child !== null || alternate !== null && alternate.child !== null) {\n        // Next we need to figure out if the node that skipped past is\n        // nested within a dehydrated boundary and if so, which one.\n        var suspenseInstance = getParentSuspenseInstance(targetNode);\n\n        while (suspenseInstance !== null) {\n          // We found a suspense instance. That means that we haven't\n          // hydrated it yet. Even though we leave the comments in the\n          // DOM after hydrating, and there are boundaries in the DOM\n          // that could already be hydrated, we wouldn't have found them\n          // through this pass since if the target is hydrated it would\n          // have had an internalInstanceKey on it.\n          // Let's get the fiber associated with the SuspenseComponent\n          // as the deepest instance.\n          var targetSuspenseInst = suspenseInstance[internalInstanceKey];\n\n          if (targetSuspenseInst) {\n            return targetSuspenseInst;\n          } // If we don't find a Fiber on the comment, it might be because\n          // we haven't gotten to hydrate it yet. There might still be a\n          // parent boundary that hasn't above this one so we need to find\n          // the outer most that is known.\n\n\n          suspenseInstance = getParentSuspenseInstance(suspenseInstance); // If we don't find one, then that should mean that the parent\n          // host component also hasn't hydrated yet. We can return it\n          // below since it will bail out on the isMounted check later.\n        }\n      }\n\n      return targetInst;\n    }\n\n    targetNode = parentNode;\n    parentNode = targetNode.parentNode;\n  }\n\n  return null;\n}\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\n\nfunction getInstanceFromNode(node) {\n  var inst = node[internalInstanceKey] || node[internalContainerInstanceKey];\n\n  if (inst) {\n    if (inst.tag === HostComponent || inst.tag === HostText || inst.tag === SuspenseComponent || inst.tag === HostRoot) {\n      return inst;\n    } else {\n      return null;\n    }\n  }\n\n  return null;\n}\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\n\nfunction getNodeFromInstance(inst) {\n  if (inst.tag === HostComponent || inst.tag === HostText) {\n    // In Fiber this, is just the state node right now. We assume it will be\n    // a host component or host text.\n    return inst.stateNode;\n  } // Without this first invariant, passing a non-DOM-component triggers the next\n  // invariant for a missing parent, which is super confusing.\n\n\n  throw new Error('getNodeFromInstance: Invalid argument.');\n}\nfunction getFiberCurrentPropsFromNode(node) {\n  return node[internalPropsKey] || null;\n}\nfunction updateFiberProps(node, props) {\n  node[internalPropsKey] = props;\n}\nfunction getEventListenerSet(node) {\n  var elementListenerSet = node[internalEventHandlersKey];\n\n  if (elementListenerSet === undefined) {\n    elementListenerSet = node[internalEventHandlersKey] = new Set();\n  }\n\n  return elementListenerSet;\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n    }\n  }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n  {\n    // $FlowFixMe This is okay but Flow doesn't know it.\n    var has = Function.call.bind(hasOwnProperty);\n\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            // eslint-disable-next-line react-internal/prod-error-codes\n            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n\n          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n        } catch (ex) {\n          error$1 = ex;\n        }\n\n        if (error$1 && !(error$1 instanceof Error)) {\n          setCurrentlyValidatingElement(element);\n\n          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n          setCurrentlyValidatingElement(null);\n        }\n\n        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error$1.message] = true;\n          setCurrentlyValidatingElement(element);\n\n          error('Failed %s type: %s', location, error$1.message);\n\n          setCurrentlyValidatingElement(null);\n        }\n      }\n    }\n  }\n}\n\nvar valueStack = [];\nvar fiberStack;\n\n{\n  fiberStack = [];\n}\n\nvar index = -1;\n\nfunction createCursor(defaultValue) {\n  return {\n    current: defaultValue\n  };\n}\n\nfunction pop(cursor, fiber) {\n  if (index < 0) {\n    {\n      error('Unexpected pop.');\n    }\n\n    return;\n  }\n\n  {\n    if (fiber !== fiberStack[index]) {\n      error('Unexpected Fiber popped.');\n    }\n  }\n\n  cursor.current = valueStack[index];\n  valueStack[index] = null;\n\n  {\n    fiberStack[index] = null;\n  }\n\n  index--;\n}\n\nfunction push(cursor, value, fiber) {\n  index++;\n  valueStack[index] = cursor.current;\n\n  {\n    fiberStack[index] = fiber;\n  }\n\n  cursor.current = value;\n}\n\nvar warnedAboutMissingGetChildContext;\n\n{\n  warnedAboutMissingGetChildContext = {};\n}\n\nvar emptyContextObject = {};\n\n{\n  Object.freeze(emptyContextObject);\n} // A cursor to the current merged context object on the stack.\n\n\nvar contextStackCursor = createCursor(emptyContextObject); // A cursor to a boolean indicating whether the context has changed.\n\nvar didPerformWorkStackCursor = createCursor(false); // Keep track of the previous context object that was on the stack.\n// We use this to get access to the parent context after we have already\n// pushed the next context provider, and now need to merge their contexts.\n\nvar previousContext = emptyContextObject;\n\nfunction getUnmaskedContext(workInProgress, Component, didPushOwnContextIfProvider) {\n  {\n    if (didPushOwnContextIfProvider && isContextProvider(Component)) {\n      // If the fiber is a context provider itself, when we read its context\n      // we may have already pushed its own child context on the stack. A context\n      // provider should not \"see\" its own child context. Therefore we read the\n      // previous (parent) context instead for a context provider.\n      return previousContext;\n    }\n\n    return contextStackCursor.current;\n  }\n}\n\nfunction cacheContext(workInProgress, unmaskedContext, maskedContext) {\n  {\n    var instance = workInProgress.stateNode;\n    instance.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext;\n    instance.__reactInternalMemoizedMaskedChildContext = maskedContext;\n  }\n}\n\nfunction getMaskedContext(workInProgress, unmaskedContext) {\n  {\n    var type = workInProgress.type;\n    var contextTypes = type.contextTypes;\n\n    if (!contextTypes) {\n      return emptyContextObject;\n    } // Avoid recreating masked context unless unmasked context has changed.\n    // Failing to do this will result in unnecessary calls to componentWillReceiveProps.\n    // This may trigger infinite loops if componentWillReceiveProps calls setState.\n\n\n    var instance = workInProgress.stateNode;\n\n    if (instance && instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext) {\n      return instance.__reactInternalMemoizedMaskedChildContext;\n    }\n\n    var context = {};\n\n    for (var key in contextTypes) {\n      context[key] = unmaskedContext[key];\n    }\n\n    {\n      var name = getComponentNameFromFiber(workInProgress) || 'Unknown';\n      checkPropTypes(contextTypes, context, 'context', name);\n    } // Cache unmasked context so we can avoid recreating masked context unless necessary.\n    // Context is created before the class component is instantiated so check for instance.\n\n\n    if (instance) {\n      cacheContext(workInProgress, unmaskedContext, context);\n    }\n\n    return context;\n  }\n}\n\nfunction hasContextChanged() {\n  {\n    return didPerformWorkStackCursor.current;\n  }\n}\n\nfunction isContextProvider(type) {\n  {\n    var childContextTypes = type.childContextTypes;\n    return childContextTypes !== null && childContextTypes !== undefined;\n  }\n}\n\nfunction popContext(fiber) {\n  {\n    pop(didPerformWorkStackCursor, fiber);\n    pop(contextStackCursor, fiber);\n  }\n}\n\nfunction popTopLevelContextObject(fiber) {\n  {\n    pop(didPerformWorkStackCursor, fiber);\n    pop(contextStackCursor, fiber);\n  }\n}\n\nfunction pushTopLevelContextObject(fiber, context, didChange) {\n  {\n    if (contextStackCursor.current !== emptyContextObject) {\n      throw new Error('Unexpected context found on stack. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n\n    push(contextStackCursor, context, fiber);\n    push(didPerformWorkStackCursor, didChange, fiber);\n  }\n}\n\nfunction processChildContext(fiber, type, parentContext) {\n  {\n    var instance = fiber.stateNode;\n    var childContextTypes = type.childContextTypes; // TODO (bvaughn) Replace this behavior with an invariant() in the future.\n    // It has only been added in Fiber to match the (unintentional) behavior in Stack.\n\n    if (typeof instance.getChildContext !== 'function') {\n      {\n        var componentName = getComponentNameFromFiber(fiber) || 'Unknown';\n\n        if (!warnedAboutMissingGetChildContext[componentName]) {\n          warnedAboutMissingGetChildContext[componentName] = true;\n\n          error('%s.childContextTypes is specified but there is no getChildContext() method ' + 'on the instance. You can either define getChildContext() on %s or remove ' + 'childContextTypes from it.', componentName, componentName);\n        }\n      }\n\n      return parentContext;\n    }\n\n    var childContext = instance.getChildContext();\n\n    for (var contextKey in childContext) {\n      if (!(contextKey in childContextTypes)) {\n        throw new Error((getComponentNameFromFiber(fiber) || 'Unknown') + \".getChildContext(): key \\\"\" + contextKey + \"\\\" is not defined in childContextTypes.\");\n      }\n    }\n\n    {\n      var name = getComponentNameFromFiber(fiber) || 'Unknown';\n      checkPropTypes(childContextTypes, childContext, 'child context', name);\n    }\n\n    return assign({}, parentContext, childContext);\n  }\n}\n\nfunction pushContextProvider(workInProgress) {\n  {\n    var instance = workInProgress.stateNode; // We push the context as early as possible to ensure stack integrity.\n    // If the instance does not exist yet, we will push null at first,\n    // and replace it on the stack later when invalidating the context.\n\n    var memoizedMergedChildContext = instance && instance.__reactInternalMemoizedMergedChildContext || emptyContextObject; // Remember the parent context so we can merge with it later.\n    // Inherit the parent's did-perform-work value to avoid inadvertently blocking updates.\n\n    previousContext = contextStackCursor.current;\n    push(contextStackCursor, memoizedMergedChildContext, workInProgress);\n    push(didPerformWorkStackCursor, didPerformWorkStackCursor.current, workInProgress);\n    return true;\n  }\n}\n\nfunction invalidateContextProvider(workInProgress, type, didChange) {\n  {\n    var instance = workInProgress.stateNode;\n\n    if (!instance) {\n      throw new Error('Expected to have an instance by this point. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n\n    if (didChange) {\n      // Merge parent and own context.\n      // Skip this if we're not updating due to sCU.\n      // This avoids unnecessarily recomputing memoized values.\n      var mergedContext = processChildContext(workInProgress, type, previousContext);\n      instance.__reactInternalMemoizedMergedChildContext = mergedContext; // Replace the old (or empty) context with the new one.\n      // It is important to unwind the context in the reverse order.\n\n      pop(didPerformWorkStackCursor, workInProgress);\n      pop(contextStackCursor, workInProgress); // Now push the new context and mark that it has changed.\n\n      push(contextStackCursor, mergedContext, workInProgress);\n      push(didPerformWorkStackCursor, didChange, workInProgress);\n    } else {\n      pop(didPerformWorkStackCursor, workInProgress);\n      push(didPerformWorkStackCursor, didChange, workInProgress);\n    }\n  }\n}\n\nfunction findCurrentUnmaskedContext(fiber) {\n  {\n    // Currently this is only used with renderSubtreeIntoContainer; not sure if it\n    // makes sense elsewhere\n    if (!isFiberMounted(fiber) || fiber.tag !== ClassComponent) {\n      throw new Error('Expected subtree parent to be a mounted class component. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n\n    var node = fiber;\n\n    do {\n      switch (node.tag) {\n        case HostRoot:\n          return node.stateNode.context;\n\n        case ClassComponent:\n          {\n            var Component = node.type;\n\n            if (isContextProvider(Component)) {\n              return node.stateNode.__reactInternalMemoizedMergedChildContext;\n            }\n\n            break;\n          }\n      }\n\n      node = node.return;\n    } while (node !== null);\n\n    throw new Error('Found unexpected detached subtree parent. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n  }\n}\n\nvar LegacyRoot = 0;\nvar ConcurrentRoot = 1;\n\nvar syncQueue = null;\nvar includesLegacySyncCallbacks = false;\nvar isFlushingSyncQueue = false;\nfunction scheduleSyncCallback(callback) {\n  // Push this callback into an internal queue. We'll flush these either in\n  // the next tick, or earlier if something calls `flushSyncCallbackQueue`.\n  if (syncQueue === null) {\n    syncQueue = [callback];\n  } else {\n    // Push onto existing queue. Don't need to schedule a callback because\n    // we already scheduled one when we created the queue.\n    syncQueue.push(callback);\n  }\n}\nfunction scheduleLegacySyncCallback(callback) {\n  includesLegacySyncCallbacks = true;\n  scheduleSyncCallback(callback);\n}\nfunction flushSyncCallbacksOnlyInLegacyMode() {\n  // Only flushes the queue if there's a legacy sync callback scheduled.\n  // TODO: There's only a single type of callback: performSyncOnWorkOnRoot. So\n  // it might make more sense for the queue to be a list of roots instead of a\n  // list of generic callbacks. Then we can have two: one for legacy roots, one\n  // for concurrent roots. And this method would only flush the legacy ones.\n  if (includesLegacySyncCallbacks) {\n    flushSyncCallbacks();\n  }\n}\nfunction flushSyncCallbacks() {\n  if (!isFlushingSyncQueue && syncQueue !== null) {\n    // Prevent re-entrance.\n    isFlushingSyncQueue = true;\n    var i = 0;\n    var previousUpdatePriority = getCurrentUpdatePriority();\n\n    try {\n      var isSync = true;\n      var queue = syncQueue; // TODO: Is this necessary anymore? The only user code that runs in this\n      // queue is in the render or commit phases.\n\n      setCurrentUpdatePriority(DiscreteEventPriority);\n\n      for (; i < queue.length; i++) {\n        var callback = queue[i];\n\n        do {\n          callback = callback(isSync);\n        } while (callback !== null);\n      }\n\n      syncQueue = null;\n      includesLegacySyncCallbacks = false;\n    } catch (error) {\n      // If something throws, leave the remaining callbacks on the queue.\n      if (syncQueue !== null) {\n        syncQueue = syncQueue.slice(i + 1);\n      } // Resume flushing in the next tick\n\n\n      scheduleCallback(ImmediatePriority, flushSyncCallbacks);\n      throw error;\n    } finally {\n      setCurrentUpdatePriority(previousUpdatePriority);\n      isFlushingSyncQueue = false;\n    }\n  }\n\n  return null;\n}\n\n// TODO: Use the unified fiber stack module instead of this local one?\n// Intentionally not using it yet to derisk the initial implementation, because\n// the way we push/pop these values is a bit unusual. If there's a mistake, I'd\n// rather the ids be wrong than crash the whole reconciler.\nvar forkStack = [];\nvar forkStackIndex = 0;\nvar treeForkProvider = null;\nvar treeForkCount = 0;\nvar idStack = [];\nvar idStackIndex = 0;\nvar treeContextProvider = null;\nvar treeContextId = 1;\nvar treeContextOverflow = '';\nfunction isForkedChild(workInProgress) {\n  warnIfNotHydrating();\n  return (workInProgress.flags & Forked) !== NoFlags;\n}\nfunction getForksAtLevel(workInProgress) {\n  warnIfNotHydrating();\n  return treeForkCount;\n}\nfunction getTreeId() {\n  var overflow = treeContextOverflow;\n  var idWithLeadingBit = treeContextId;\n  var id = idWithLeadingBit & ~getLeadingBit(idWithLeadingBit);\n  return id.toString(32) + overflow;\n}\nfunction pushTreeFork(workInProgress, totalChildren) {\n  // This is called right after we reconcile an array (or iterator) of child\n  // fibers, because that's the only place where we know how many children in\n  // the whole set without doing extra work later, or storing addtional\n  // information on the fiber.\n  //\n  // That's why this function is separate from pushTreeId — it's called during\n  // the render phase of the fork parent, not the child, which is where we push\n  // the other context values.\n  //\n  // In the Fizz implementation this is much simpler because the child is\n  // rendered in the same callstack as the parent.\n  //\n  // It might be better to just add a `forks` field to the Fiber type. It would\n  // make this module simpler.\n  warnIfNotHydrating();\n  forkStack[forkStackIndex++] = treeForkCount;\n  forkStack[forkStackIndex++] = treeForkProvider;\n  treeForkProvider = workInProgress;\n  treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n  warnIfNotHydrating();\n  idStack[idStackIndex++] = treeContextId;\n  idStack[idStackIndex++] = treeContextOverflow;\n  idStack[idStackIndex++] = treeContextProvider;\n  treeContextProvider = workInProgress;\n  var baseIdWithLeadingBit = treeContextId;\n  var baseOverflow = treeContextOverflow; // The leftmost 1 marks the end of the sequence, non-inclusive. It's not part\n  // of the id; we use it to account for leading 0s.\n\n  var baseLength = getBitLength(baseIdWithLeadingBit) - 1;\n  var baseId = baseIdWithLeadingBit & ~(1 << baseLength);\n  var slot = index + 1;\n  var length = getBitLength(totalChildren) + baseLength; // 30 is the max length we can store without overflowing, taking into\n  // consideration the leading 1 we use to mark the end of the sequence.\n\n  if (length > 30) {\n    // We overflowed the bitwise-safe range. Fall back to slower algorithm.\n    // This branch assumes the length of the base id is greater than 5; it won't\n    // work for smaller ids, because you need 5 bits per character.\n    //\n    // We encode the id in multiple steps: first the base id, then the\n    // remaining digits.\n    //\n    // Each 5 bit sequence corresponds to a single base 32 character. So for\n    // example, if the current id is 23 bits long, we can convert 20 of those\n    // bits into a string of 4 characters, with 3 bits left over.\n    //\n    // First calculate how many bits in the base id represent a complete\n    // sequence of characters.\n    var numberOfOverflowBits = baseLength - baseLength % 5; // Then create a bitmask that selects only those bits.\n\n    var newOverflowBits = (1 << numberOfOverflowBits) - 1; // Select the bits, and convert them to a base 32 string.\n\n    var newOverflow = (baseId & newOverflowBits).toString(32); // Now we can remove those bits from the base id.\n\n    var restOfBaseId = baseId >> numberOfOverflowBits;\n    var restOfBaseLength = baseLength - numberOfOverflowBits; // Finally, encode the rest of the bits using the normal algorithm. Because\n    // we made more room, this time it won't overflow.\n\n    var restOfLength = getBitLength(totalChildren) + restOfBaseLength;\n    var restOfNewBits = slot << restOfBaseLength;\n    var id = restOfNewBits | restOfBaseId;\n    var overflow = newOverflow + baseOverflow;\n    treeContextId = 1 << restOfLength | id;\n    treeContextOverflow = overflow;\n  } else {\n    // Normal path\n    var newBits = slot << baseLength;\n\n    var _id = newBits | baseId;\n\n    var _overflow = baseOverflow;\n    treeContextId = 1 << length | _id;\n    treeContextOverflow = _overflow;\n  }\n}\nfunction pushMaterializedTreeId(workInProgress) {\n  warnIfNotHydrating(); // This component materialized an id. This will affect any ids that appear\n  // in its children.\n\n  var returnFiber = workInProgress.return;\n\n  if (returnFiber !== null) {\n    var numberOfForks = 1;\n    var slotIndex = 0;\n    pushTreeFork(workInProgress, numberOfForks);\n    pushTreeId(workInProgress, numberOfForks, slotIndex);\n  }\n}\n\nfunction getBitLength(number) {\n  return 32 - clz32(number);\n}\n\nfunction getLeadingBit(id) {\n  return 1 << getBitLength(id) - 1;\n}\n\nfunction popTreeContext(workInProgress) {\n  // Restore the previous values.\n  // This is a bit more complicated than other context-like modules in Fiber\n  // because the same Fiber may appear on the stack multiple times and for\n  // different reasons. We have to keep popping until the work-in-progress is\n  // no longer at the top of the stack.\n  while (workInProgress === treeForkProvider) {\n    treeForkProvider = forkStack[--forkStackIndex];\n    forkStack[forkStackIndex] = null;\n    treeForkCount = forkStack[--forkStackIndex];\n    forkStack[forkStackIndex] = null;\n  }\n\n  while (workInProgress === treeContextProvider) {\n    treeContextProvider = idStack[--idStackIndex];\n    idStack[idStackIndex] = null;\n    treeContextOverflow = idStack[--idStackIndex];\n    idStack[idStackIndex] = null;\n    treeContextId = idStack[--idStackIndex];\n    idStack[idStackIndex] = null;\n  }\n}\nfunction getSuspendedTreeContext() {\n  warnIfNotHydrating();\n\n  if (treeContextProvider !== null) {\n    return {\n      id: treeContextId,\n      overflow: treeContextOverflow\n    };\n  } else {\n    return null;\n  }\n}\nfunction restoreSuspendedTreeContext(workInProgress, suspendedContext) {\n  warnIfNotHydrating();\n  idStack[idStackIndex++] = treeContextId;\n  idStack[idStackIndex++] = treeContextOverflow;\n  idStack[idStackIndex++] = treeContextProvider;\n  treeContextId = suspendedContext.id;\n  treeContextOverflow = suspendedContext.overflow;\n  treeContextProvider = workInProgress;\n}\n\nfunction warnIfNotHydrating() {\n  {\n    if (!getIsHydrating()) {\n      error('Expected to be hydrating. This is a bug in React. Please file ' + 'an issue.');\n    }\n  }\n}\n\n// This may have been an insertion or a hydration.\n\nvar hydrationParentFiber = null;\nvar nextHydratableInstance = null;\nvar isHydrating = false; // This flag allows for warning supression when we expect there to be mismatches\n// due to earlier mismatches or a suspended fiber.\n\nvar didSuspendOrErrorDEV = false; // Hydration errors that were thrown inside this boundary\n\nvar hydrationErrors = null;\n\nfunction warnIfHydrating() {\n  {\n    if (isHydrating) {\n      error('We should not be hydrating here. This is a bug in React. Please file a bug.');\n    }\n  }\n}\n\nfunction markDidThrowWhileHydratingDEV() {\n  {\n    didSuspendOrErrorDEV = true;\n  }\n}\nfunction didSuspendOrErrorWhileHydratingDEV() {\n  {\n    return didSuspendOrErrorDEV;\n  }\n}\n\nfunction enterHydrationState(fiber) {\n\n  var parentInstance = fiber.stateNode.containerInfo;\n  nextHydratableInstance = getFirstHydratableChildWithinContainer(parentInstance);\n  hydrationParentFiber = fiber;\n  isHydrating = true;\n  hydrationErrors = null;\n  didSuspendOrErrorDEV = false;\n  return true;\n}\n\nfunction reenterHydrationStateFromDehydratedSuspenseInstance(fiber, suspenseInstance, treeContext) {\n\n  nextHydratableInstance = getFirstHydratableChildWithinSuspenseInstance(suspenseInstance);\n  hydrationParentFiber = fiber;\n  isHydrating = true;\n  hydrationErrors = null;\n  didSuspendOrErrorDEV = false;\n\n  if (treeContext !== null) {\n    restoreSuspendedTreeContext(fiber, treeContext);\n  }\n\n  return true;\n}\n\nfunction warnUnhydratedInstance(returnFiber, instance) {\n  {\n    switch (returnFiber.tag) {\n      case HostRoot:\n        {\n          didNotHydrateInstanceWithinContainer(returnFiber.stateNode.containerInfo, instance);\n          break;\n        }\n\n      case HostComponent:\n        {\n          var isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n          didNotHydrateInstance(returnFiber.type, returnFiber.memoizedProps, returnFiber.stateNode, instance, // TODO: Delete this argument when we remove the legacy root API.\n          isConcurrentMode);\n          break;\n        }\n\n      case SuspenseComponent:\n        {\n          var suspenseState = returnFiber.memoizedState;\n          if (suspenseState.dehydrated !== null) didNotHydrateInstanceWithinSuspenseInstance(suspenseState.dehydrated, instance);\n          break;\n        }\n    }\n  }\n}\n\nfunction deleteHydratableInstance(returnFiber, instance) {\n  warnUnhydratedInstance(returnFiber, instance);\n  var childToDelete = createFiberFromHostInstanceForDeletion();\n  childToDelete.stateNode = instance;\n  childToDelete.return = returnFiber;\n  var deletions = returnFiber.deletions;\n\n  if (deletions === null) {\n    returnFiber.deletions = [childToDelete];\n    returnFiber.flags |= ChildDeletion;\n  } else {\n    deletions.push(childToDelete);\n  }\n}\n\nfunction warnNonhydratedInstance(returnFiber, fiber) {\n  {\n    if (didSuspendOrErrorDEV) {\n      // Inside a boundary that already suspended. We're currently rendering the\n      // siblings of a suspended node. The mismatch may be due to the missing\n      // data, so it's probably a false positive.\n      return;\n    }\n\n    switch (returnFiber.tag) {\n      case HostRoot:\n        {\n          var parentContainer = returnFiber.stateNode.containerInfo;\n\n          switch (fiber.tag) {\n            case HostComponent:\n              var type = fiber.type;\n              var props = fiber.pendingProps;\n              didNotFindHydratableInstanceWithinContainer(parentContainer, type);\n              break;\n\n            case HostText:\n              var text = fiber.pendingProps;\n              didNotFindHydratableTextInstanceWithinContainer(parentContainer, text);\n              break;\n          }\n\n          break;\n        }\n\n      case HostComponent:\n        {\n          var parentType = returnFiber.type;\n          var parentProps = returnFiber.memoizedProps;\n          var parentInstance = returnFiber.stateNode;\n\n          switch (fiber.tag) {\n            case HostComponent:\n              {\n                var _type = fiber.type;\n                var _props = fiber.pendingProps;\n                var isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n                didNotFindHydratableInstance(parentType, parentProps, parentInstance, _type, _props, // TODO: Delete this argument when we remove the legacy root API.\n                isConcurrentMode);\n                break;\n              }\n\n            case HostText:\n              {\n                var _text = fiber.pendingProps;\n\n                var _isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n\n                didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, _text, // TODO: Delete this argument when we remove the legacy root API.\n                _isConcurrentMode);\n                break;\n              }\n          }\n\n          break;\n        }\n\n      case SuspenseComponent:\n        {\n          var suspenseState = returnFiber.memoizedState;\n          var _parentInstance = suspenseState.dehydrated;\n          if (_parentInstance !== null) switch (fiber.tag) {\n            case HostComponent:\n              var _type2 = fiber.type;\n              var _props2 = fiber.pendingProps;\n              didNotFindHydratableInstanceWithinSuspenseInstance(_parentInstance, _type2);\n              break;\n\n            case HostText:\n              var _text2 = fiber.pendingProps;\n              didNotFindHydratableTextInstanceWithinSuspenseInstance(_parentInstance, _text2);\n              break;\n          }\n          break;\n        }\n\n      default:\n        return;\n    }\n  }\n}\n\nfunction insertNonHydratedInstance(returnFiber, fiber) {\n  fiber.flags = fiber.flags & ~Hydrating | Placement;\n  warnNonhydratedInstance(returnFiber, fiber);\n}\n\nfunction tryHydrate(fiber, nextInstance) {\n  switch (fiber.tag) {\n    case HostComponent:\n      {\n        var type = fiber.type;\n        var props = fiber.pendingProps;\n        var instance = canHydrateInstance(nextInstance, type);\n\n        if (instance !== null) {\n          fiber.stateNode = instance;\n          hydrationParentFiber = fiber;\n          nextHydratableInstance = getFirstHydratableChild(instance);\n          return true;\n        }\n\n        return false;\n      }\n\n    case HostText:\n      {\n        var text = fiber.pendingProps;\n        var textInstance = canHydrateTextInstance(nextInstance, text);\n\n        if (textInstance !== null) {\n          fiber.stateNode = textInstance;\n          hydrationParentFiber = fiber; // Text Instances don't have children so there's nothing to hydrate.\n\n          nextHydratableInstance = null;\n          return true;\n        }\n\n        return false;\n      }\n\n    case SuspenseComponent:\n      {\n        var suspenseInstance = canHydrateSuspenseInstance(nextInstance);\n\n        if (suspenseInstance !== null) {\n          var suspenseState = {\n            dehydrated: suspenseInstance,\n            treeContext: getSuspendedTreeContext(),\n            retryLane: OffscreenLane\n          };\n          fiber.memoizedState = suspenseState; // Store the dehydrated fragment as a child fiber.\n          // This simplifies the code for getHostSibling and deleting nodes,\n          // since it doesn't have to consider all Suspense boundaries and\n          // check if they're dehydrated ones or not.\n\n          var dehydratedFragment = createFiberFromDehydratedFragment(suspenseInstance);\n          dehydratedFragment.return = fiber;\n          fiber.child = dehydratedFragment;\n          hydrationParentFiber = fiber; // While a Suspense Instance does have children, we won't step into\n          // it during the first pass. Instead, we'll reenter it later.\n\n          nextHydratableInstance = null;\n          return true;\n        }\n\n        return false;\n      }\n\n    default:\n      return false;\n  }\n}\n\nfunction shouldClientRenderOnMismatch(fiber) {\n  return (fiber.mode & ConcurrentMode) !== NoMode && (fiber.flags & DidCapture) === NoFlags;\n}\n\nfunction throwOnHydrationMismatch(fiber) {\n  throw new Error('Hydration failed because the initial UI does not match what was ' + 'rendered on the server.');\n}\n\nfunction tryToClaimNextHydratableInstance(fiber) {\n  if (!isHydrating) {\n    return;\n  }\n\n  var nextInstance = nextHydratableInstance;\n\n  if (!nextInstance) {\n    if (shouldClientRenderOnMismatch(fiber)) {\n      warnNonhydratedInstance(hydrationParentFiber, fiber);\n      throwOnHydrationMismatch();\n    } // Nothing to hydrate. Make it an insertion.\n\n\n    insertNonHydratedInstance(hydrationParentFiber, fiber);\n    isHydrating = false;\n    hydrationParentFiber = fiber;\n    return;\n  }\n\n  var firstAttemptedInstance = nextInstance;\n\n  if (!tryHydrate(fiber, nextInstance)) {\n    if (shouldClientRenderOnMismatch(fiber)) {\n      warnNonhydratedInstance(hydrationParentFiber, fiber);\n      throwOnHydrationMismatch();\n    } // If we can't hydrate this instance let's try the next one.\n    // We use this as a heuristic. It's based on intuition and not data so it\n    // might be flawed or unnecessary.\n\n\n    nextInstance = getNextHydratableSibling(firstAttemptedInstance);\n    var prevHydrationParentFiber = hydrationParentFiber;\n\n    if (!nextInstance || !tryHydrate(fiber, nextInstance)) {\n      // Nothing to hydrate. Make it an insertion.\n      insertNonHydratedInstance(hydrationParentFiber, fiber);\n      isHydrating = false;\n      hydrationParentFiber = fiber;\n      return;\n    } // We matched the next one, we'll now assume that the first one was\n    // superfluous and we'll delete it. Since we can't eagerly delete it\n    // we'll have to schedule a deletion. To do that, this node needs a dummy\n    // fiber associated with it.\n\n\n    deleteHydratableInstance(prevHydrationParentFiber, firstAttemptedInstance);\n  }\n}\n\nfunction prepareToHydrateHostInstance(fiber, rootContainerInstance, hostContext) {\n\n  var instance = fiber.stateNode;\n  var shouldWarnIfMismatchDev = !didSuspendOrErrorDEV;\n  var updatePayload = hydrateInstance(instance, fiber.type, fiber.memoizedProps, rootContainerInstance, hostContext, fiber, shouldWarnIfMismatchDev); // TODO: Type this specific to this type of component.\n\n  fiber.updateQueue = updatePayload; // If the update payload indicates that there is a change or if there\n  // is a new ref we mark this as an update.\n\n  if (updatePayload !== null) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction prepareToHydrateHostTextInstance(fiber) {\n\n  var textInstance = fiber.stateNode;\n  var textContent = fiber.memoizedProps;\n  var shouldUpdate = hydrateTextInstance(textInstance, textContent, fiber);\n\n  if (shouldUpdate) {\n    // We assume that prepareToHydrateHostTextInstance is called in a context where the\n    // hydration parent is the parent host component of this host text.\n    var returnFiber = hydrationParentFiber;\n\n    if (returnFiber !== null) {\n      switch (returnFiber.tag) {\n        case HostRoot:\n          {\n            var parentContainer = returnFiber.stateNode.containerInfo;\n            var isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n            didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, textContent, // TODO: Delete this argument when we remove the legacy root API.\n            isConcurrentMode);\n            break;\n          }\n\n        case HostComponent:\n          {\n            var parentType = returnFiber.type;\n            var parentProps = returnFiber.memoizedProps;\n            var parentInstance = returnFiber.stateNode;\n\n            var _isConcurrentMode2 = (returnFiber.mode & ConcurrentMode) !== NoMode;\n\n            didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, textContent, // TODO: Delete this argument when we remove the legacy root API.\n            _isConcurrentMode2);\n            break;\n          }\n      }\n    }\n  }\n\n  return shouldUpdate;\n}\n\nfunction prepareToHydrateHostSuspenseInstance(fiber) {\n\n  var suspenseState = fiber.memoizedState;\n  var suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null;\n\n  if (!suspenseInstance) {\n    throw new Error('Expected to have a hydrated suspense instance. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n  }\n\n  hydrateSuspenseInstance(suspenseInstance, fiber);\n}\n\nfunction skipPastDehydratedSuspenseInstance(fiber) {\n\n  var suspenseState = fiber.memoizedState;\n  var suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null;\n\n  if (!suspenseInstance) {\n    throw new Error('Expected to have a hydrated suspense instance. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n  }\n\n  return getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance);\n}\n\nfunction popToNextHostParent(fiber) {\n  var parent = fiber.return;\n\n  while (parent !== null && parent.tag !== HostComponent && parent.tag !== HostRoot && parent.tag !== SuspenseComponent) {\n    parent = parent.return;\n  }\n\n  hydrationParentFiber = parent;\n}\n\nfunction popHydrationState(fiber) {\n\n  if (fiber !== hydrationParentFiber) {\n    // We're deeper than the current hydration context, inside an inserted\n    // tree.\n    return false;\n  }\n\n  if (!isHydrating) {\n    // If we're not currently hydrating but we're in a hydration context, then\n    // we were an insertion and now need to pop up reenter hydration of our\n    // siblings.\n    popToNextHostParent(fiber);\n    isHydrating = true;\n    return false;\n  } // If we have any remaining hydratable nodes, we need to delete them now.\n  // We only do this deeper than head and body since they tend to have random\n  // other nodes in them. We also ignore components with pure text content in\n  // side of them. We also don't delete anything inside the root container.\n\n\n  if (fiber.tag !== HostRoot && (fiber.tag !== HostComponent || shouldDeleteUnhydratedTailInstances(fiber.type) && !shouldSetTextContent(fiber.type, fiber.memoizedProps))) {\n    var nextInstance = nextHydratableInstance;\n\n    if (nextInstance) {\n      if (shouldClientRenderOnMismatch(fiber)) {\n        warnIfUnhydratedTailNodes(fiber);\n        throwOnHydrationMismatch();\n      } else {\n        while (nextInstance) {\n          deleteHydratableInstance(fiber, nextInstance);\n          nextInstance = getNextHydratableSibling(nextInstance);\n        }\n      }\n    }\n  }\n\n  popToNextHostParent(fiber);\n\n  if (fiber.tag === SuspenseComponent) {\n    nextHydratableInstance = skipPastDehydratedSuspenseInstance(fiber);\n  } else {\n    nextHydratableInstance = hydrationParentFiber ? getNextHydratableSibling(fiber.stateNode) : null;\n  }\n\n  return true;\n}\n\nfunction hasUnhydratedTailNodes() {\n  return isHydrating && nextHydratableInstance !== null;\n}\n\nfunction warnIfUnhydratedTailNodes(fiber) {\n  var nextInstance = nextHydratableInstance;\n\n  while (nextInstance) {\n    warnUnhydratedInstance(fiber, nextInstance);\n    nextInstance = getNextHydratableSibling(nextInstance);\n  }\n}\n\nfunction resetHydrationState() {\n\n  hydrationParentFiber = null;\n  nextHydratableInstance = null;\n  isHydrating = false;\n  didSuspendOrErrorDEV = false;\n}\n\nfunction upgradeHydrationErrorsToRecoverable() {\n  if (hydrationErrors !== null) {\n    // Successfully completed a forced client render. The errors that occurred\n    // during the hydration attempt are now recovered. We will log them in\n    // commit phase, once the entire tree has finished.\n    queueRecoverableErrors(hydrationErrors);\n    hydrationErrors = null;\n  }\n}\n\nfunction getIsHydrating() {\n  return isHydrating;\n}\n\nfunction queueHydrationError(error) {\n  if (hydrationErrors === null) {\n    hydrationErrors = [error];\n  } else {\n    hydrationErrors.push(error);\n  }\n}\n\nvar ReactCurrentBatchConfig$1 = ReactSharedInternals.ReactCurrentBatchConfig;\nvar NoTransition = null;\nfunction requestCurrentTransition() {\n  return ReactCurrentBatchConfig$1.transition;\n}\n\nvar ReactStrictModeWarnings = {\n  recordUnsafeLifecycleWarnings: function (fiber, instance) {},\n  flushPendingUnsafeLifecycleWarnings: function () {},\n  recordLegacyContextWarning: function (fiber, instance) {},\n  flushLegacyContextWarning: function () {},\n  discardPendingWarnings: function () {}\n};\n\n{\n  var findStrictRoot = function (fiber) {\n    var maybeStrictRoot = null;\n    var node = fiber;\n\n    while (node !== null) {\n      if (node.mode & StrictLegacyMode) {\n        maybeStrictRoot = node;\n      }\n\n      node = node.return;\n    }\n\n    return maybeStrictRoot;\n  };\n\n  var setToSortedString = function (set) {\n    var array = [];\n    set.forEach(function (value) {\n      array.push(value);\n    });\n    return array.sort().join(', ');\n  };\n\n  var pendingComponentWillMountWarnings = [];\n  var pendingUNSAFE_ComponentWillMountWarnings = [];\n  var pendingComponentWillReceivePropsWarnings = [];\n  var pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n  var pendingComponentWillUpdateWarnings = [];\n  var pendingUNSAFE_ComponentWillUpdateWarnings = []; // Tracks components we have already warned about.\n\n  var didWarnAboutUnsafeLifecycles = new Set();\n\n  ReactStrictModeWarnings.recordUnsafeLifecycleWarnings = function (fiber, instance) {\n    // Dedupe strategy: Warn once per component.\n    if (didWarnAboutUnsafeLifecycles.has(fiber.type)) {\n      return;\n    }\n\n    if (typeof instance.componentWillMount === 'function' && // Don't warn about react-lifecycles-compat polyfilled components.\n    instance.componentWillMount.__suppressDeprecationWarning !== true) {\n      pendingComponentWillMountWarnings.push(fiber);\n    }\n\n    if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillMount === 'function') {\n      pendingUNSAFE_ComponentWillMountWarnings.push(fiber);\n    }\n\n    if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {\n      pendingComponentWillReceivePropsWarnings.push(fiber);\n    }\n\n    if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n      pendingUNSAFE_ComponentWillReceivePropsWarnings.push(fiber);\n    }\n\n    if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {\n      pendingComponentWillUpdateWarnings.push(fiber);\n    }\n\n    if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillUpdate === 'function') {\n      pendingUNSAFE_ComponentWillUpdateWarnings.push(fiber);\n    }\n  };\n\n  ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings = function () {\n    // We do an initial pass to gather component names\n    var componentWillMountUniqueNames = new Set();\n\n    if (pendingComponentWillMountWarnings.length > 0) {\n      pendingComponentWillMountWarnings.forEach(function (fiber) {\n        componentWillMountUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingComponentWillMountWarnings = [];\n    }\n\n    var UNSAFE_componentWillMountUniqueNames = new Set();\n\n    if (pendingUNSAFE_ComponentWillMountWarnings.length > 0) {\n      pendingUNSAFE_ComponentWillMountWarnings.forEach(function (fiber) {\n        UNSAFE_componentWillMountUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingUNSAFE_ComponentWillMountWarnings = [];\n    }\n\n    var componentWillReceivePropsUniqueNames = new Set();\n\n    if (pendingComponentWillReceivePropsWarnings.length > 0) {\n      pendingComponentWillReceivePropsWarnings.forEach(function (fiber) {\n        componentWillReceivePropsUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingComponentWillReceivePropsWarnings = [];\n    }\n\n    var UNSAFE_componentWillReceivePropsUniqueNames = new Set();\n\n    if (pendingUNSAFE_ComponentWillReceivePropsWarnings.length > 0) {\n      pendingUNSAFE_ComponentWillReceivePropsWarnings.forEach(function (fiber) {\n        UNSAFE_componentWillReceivePropsUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n    }\n\n    var componentWillUpdateUniqueNames = new Set();\n\n    if (pendingComponentWillUpdateWarnings.length > 0) {\n      pendingComponentWillUpdateWarnings.forEach(function (fiber) {\n        componentWillUpdateUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingComponentWillUpdateWarnings = [];\n    }\n\n    var UNSAFE_componentWillUpdateUniqueNames = new Set();\n\n    if (pendingUNSAFE_ComponentWillUpdateWarnings.length > 0) {\n      pendingUNSAFE_ComponentWillUpdateWarnings.forEach(function (fiber) {\n        UNSAFE_componentWillUpdateUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingUNSAFE_ComponentWillUpdateWarnings = [];\n    } // Finally, we flush all the warnings\n    // UNSAFE_ ones before the deprecated ones, since they'll be 'louder'\n\n\n    if (UNSAFE_componentWillMountUniqueNames.size > 0) {\n      var sortedNames = setToSortedString(UNSAFE_componentWillMountUniqueNames);\n\n      error('Using UNSAFE_componentWillMount in strict mode is not recommended and may indicate bugs in your code. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move code with side effects to componentDidMount, and set initial state in the constructor.\\n' + '\\nPlease update the following components: %s', sortedNames);\n    }\n\n    if (UNSAFE_componentWillReceivePropsUniqueNames.size > 0) {\n      var _sortedNames = setToSortedString(UNSAFE_componentWillReceivePropsUniqueNames);\n\n      error('Using UNSAFE_componentWillReceiveProps in strict mode is not recommended ' + 'and may indicate bugs in your code. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move data fetching code or side effects to componentDidUpdate.\\n' + \"* If you're updating state whenever props change, \" + 'refactor your code to use memoization techniques or move it to ' + 'static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state\\n' + '\\nPlease update the following components: %s', _sortedNames);\n    }\n\n    if (UNSAFE_componentWillUpdateUniqueNames.size > 0) {\n      var _sortedNames2 = setToSortedString(UNSAFE_componentWillUpdateUniqueNames);\n\n      error('Using UNSAFE_componentWillUpdate in strict mode is not recommended ' + 'and may indicate bugs in your code. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move data fetching code or side effects to componentDidUpdate.\\n' + '\\nPlease update the following components: %s', _sortedNames2);\n    }\n\n    if (componentWillMountUniqueNames.size > 0) {\n      var _sortedNames3 = setToSortedString(componentWillMountUniqueNames);\n\n      warn('componentWillMount has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move code with side effects to componentDidMount, and set initial state in the constructor.\\n' + '* Rename componentWillMount to UNSAFE_componentWillMount to suppress ' + 'this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n' + '\\nPlease update the following components: %s', _sortedNames3);\n    }\n\n    if (componentWillReceivePropsUniqueNames.size > 0) {\n      var _sortedNames4 = setToSortedString(componentWillReceivePropsUniqueNames);\n\n      warn('componentWillReceiveProps has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move data fetching code or side effects to componentDidUpdate.\\n' + \"* If you're updating state whenever props change, refactor your \" + 'code to use memoization techniques or move it to ' + 'static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state\\n' + '* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress ' + 'this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n' + '\\nPlease update the following components: %s', _sortedNames4);\n    }\n\n    if (componentWillUpdateUniqueNames.size > 0) {\n      var _sortedNames5 = setToSortedString(componentWillUpdateUniqueNames);\n\n      warn('componentWillUpdate has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move data fetching code or side effects to componentDidUpdate.\\n' + '* Rename componentWillUpdate to UNSAFE_componentWillUpdate to suppress ' + 'this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n' + '\\nPlease update the following components: %s', _sortedNames5);\n    }\n  };\n\n  var pendingLegacyContextWarning = new Map(); // Tracks components we have already warned about.\n\n  var didWarnAboutLegacyContext = new Set();\n\n  ReactStrictModeWarnings.recordLegacyContextWarning = function (fiber, instance) {\n    var strictRoot = findStrictRoot(fiber);\n\n    if (strictRoot === null) {\n      error('Expected to find a StrictMode component in a strict mode tree. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n\n      return;\n    } // Dedup strategy: Warn once per component.\n\n\n    if (didWarnAboutLegacyContext.has(fiber.type)) {\n      return;\n    }\n\n    var warningsForRoot = pendingLegacyContextWarning.get(strictRoot);\n\n    if (fiber.type.contextTypes != null || fiber.type.childContextTypes != null || instance !== null && typeof instance.getChildContext === 'function') {\n      if (warningsForRoot === undefined) {\n        warningsForRoot = [];\n        pendingLegacyContextWarning.set(strictRoot, warningsForRoot);\n      }\n\n      warningsForRoot.push(fiber);\n    }\n  };\n\n  ReactStrictModeWarnings.flushLegacyContextWarning = function () {\n    pendingLegacyContextWarning.forEach(function (fiberArray, strictRoot) {\n      if (fiberArray.length === 0) {\n        return;\n      }\n\n      var firstFiber = fiberArray[0];\n      var uniqueNames = new Set();\n      fiberArray.forEach(function (fiber) {\n        uniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutLegacyContext.add(fiber.type);\n      });\n      var sortedNames = setToSortedString(uniqueNames);\n\n      try {\n        setCurrentFiber(firstFiber);\n\n        error('Legacy context API has been detected within a strict-mode tree.' + '\\n\\nThe old API will be supported in all 16.x releases, but applications ' + 'using it should migrate to the new version.' + '\\n\\nPlease update the following components: %s' + '\\n\\nLearn more about this warning here: https://reactjs.org/link/legacy-context', sortedNames);\n      } finally {\n        resetCurrentFiber();\n      }\n    });\n  };\n\n  ReactStrictModeWarnings.discardPendingWarnings = function () {\n    pendingComponentWillMountWarnings = [];\n    pendingUNSAFE_ComponentWillMountWarnings = [];\n    pendingComponentWillReceivePropsWarnings = [];\n    pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n    pendingComponentWillUpdateWarnings = [];\n    pendingUNSAFE_ComponentWillUpdateWarnings = [];\n    pendingLegacyContextWarning = new Map();\n  };\n}\n\nfunction resolveDefaultProps(Component, baseProps) {\n  if (Component && Component.defaultProps) {\n    // Resolve default props. Taken from ReactElement\n    var props = assign({}, baseProps);\n    var defaultProps = Component.defaultProps;\n\n    for (var propName in defaultProps) {\n      if (props[propName] === undefined) {\n        props[propName] = defaultProps[propName];\n      }\n    }\n\n    return props;\n  }\n\n  return baseProps;\n}\n\nvar valueCursor = createCursor(null);\nvar rendererSigil;\n\n{\n  // Use this to detect multiple renderers using the same context\n  rendererSigil = {};\n}\n\nvar currentlyRenderingFiber = null;\nvar lastContextDependency = null;\nvar lastFullyObservedContext = null;\nvar isDisallowedContextReadInDEV = false;\nfunction resetContextDependencies() {\n  // This is called right before React yields execution, to ensure `readContext`\n  // cannot be called outside the render phase.\n  currentlyRenderingFiber = null;\n  lastContextDependency = null;\n  lastFullyObservedContext = null;\n\n  {\n    isDisallowedContextReadInDEV = false;\n  }\n}\nfunction enterDisallowedContextReadInDEV() {\n  {\n    isDisallowedContextReadInDEV = true;\n  }\n}\nfunction exitDisallowedContextReadInDEV() {\n  {\n    isDisallowedContextReadInDEV = false;\n  }\n}\nfunction pushProvider(providerFiber, context, nextValue) {\n  {\n    push(valueCursor, context._currentValue, providerFiber);\n    context._currentValue = nextValue;\n\n    {\n      if (context._currentRenderer !== undefined && context._currentRenderer !== null && context._currentRenderer !== rendererSigil) {\n        error('Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.');\n      }\n\n      context._currentRenderer = rendererSigil;\n    }\n  }\n}\nfunction popProvider(context, providerFiber) {\n  var currentValue = valueCursor.current;\n  pop(valueCursor, providerFiber);\n\n  {\n    {\n      context._currentValue = currentValue;\n    }\n  }\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n  // Update the child lanes of all the ancestors, including the alternates.\n  var node = parent;\n\n  while (node !== null) {\n    var alternate = node.alternate;\n\n    if (!isSubsetOfLanes(node.childLanes, renderLanes)) {\n      node.childLanes = mergeLanes(node.childLanes, renderLanes);\n\n      if (alternate !== null) {\n        alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes);\n      }\n    } else if (alternate !== null && !isSubsetOfLanes(alternate.childLanes, renderLanes)) {\n      alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes);\n    }\n\n    if (node === propagationRoot) {\n      break;\n    }\n\n    node = node.return;\n  }\n\n  {\n    if (node !== propagationRoot) {\n      error('Expected to find the propagation root when scheduling context work. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n  }\n}\nfunction propagateContextChange(workInProgress, context, renderLanes) {\n  {\n    propagateContextChange_eager(workInProgress, context, renderLanes);\n  }\n}\n\nfunction propagateContextChange_eager(workInProgress, context, renderLanes) {\n\n  var fiber = workInProgress.child;\n\n  if (fiber !== null) {\n    // Set the return pointer of the child to the work-in-progress fiber.\n    fiber.return = workInProgress;\n  }\n\n  while (fiber !== null) {\n    var nextFiber = void 0; // Visit this fiber.\n\n    var list = fiber.dependencies;\n\n    if (list !== null) {\n      nextFiber = fiber.child;\n      var dependency = list.firstContext;\n\n      while (dependency !== null) {\n        // Check if the context matches.\n        if (dependency.context === context) {\n          // Match! Schedule an update on this fiber.\n          if (fiber.tag === ClassComponent) {\n            // Schedule a force update on the work-in-progress.\n            var lane = pickArbitraryLane(renderLanes);\n            var update = createUpdate(NoTimestamp, lane);\n            update.tag = ForceUpdate; // TODO: Because we don't have a work-in-progress, this will add the\n            // update to the current fiber, too, which means it will persist even if\n            // this render is thrown away. Since it's a race condition, not sure it's\n            // worth fixing.\n            // Inlined `enqueueUpdate` to remove interleaved update check\n\n            var updateQueue = fiber.updateQueue;\n\n            if (updateQueue === null) ; else {\n              var sharedQueue = updateQueue.shared;\n              var pending = sharedQueue.pending;\n\n              if (pending === null) {\n                // This is the first update. Create a circular list.\n                update.next = update;\n              } else {\n                update.next = pending.next;\n                pending.next = update;\n              }\n\n              sharedQueue.pending = update;\n            }\n          }\n\n          fiber.lanes = mergeLanes(fiber.lanes, renderLanes);\n          var alternate = fiber.alternate;\n\n          if (alternate !== null) {\n            alternate.lanes = mergeLanes(alternate.lanes, renderLanes);\n          }\n\n          scheduleContextWorkOnParentPath(fiber.return, renderLanes, workInProgress); // Mark the updated lanes on the list, too.\n\n          list.lanes = mergeLanes(list.lanes, renderLanes); // Since we already found a match, we can stop traversing the\n          // dependency list.\n\n          break;\n        }\n\n        dependency = dependency.next;\n      }\n    } else if (fiber.tag === ContextProvider) {\n      // Don't scan deeper if this is a matching provider\n      nextFiber = fiber.type === workInProgress.type ? null : fiber.child;\n    } else if (fiber.tag === DehydratedFragment) {\n      // If a dehydrated suspense boundary is in this subtree, we don't know\n      // if it will have any context consumers in it. The best we can do is\n      // mark it as having updates.\n      var parentSuspense = fiber.return;\n\n      if (parentSuspense === null) {\n        throw new Error('We just came from a parent so we must have had a parent. This is a bug in React.');\n      }\n\n      parentSuspense.lanes = mergeLanes(parentSuspense.lanes, renderLanes);\n      var _alternate = parentSuspense.alternate;\n\n      if (_alternate !== null) {\n        _alternate.lanes = mergeLanes(_alternate.lanes, renderLanes);\n      } // This is intentionally passing this fiber as the parent\n      // because we want to schedule this fiber as having work\n      // on its children. We'll use the childLanes on\n      // this fiber to indicate that a context has changed.\n\n\n      scheduleContextWorkOnParentPath(parentSuspense, renderLanes, workInProgress);\n      nextFiber = fiber.sibling;\n    } else {\n      // Traverse down.\n      nextFiber = fiber.child;\n    }\n\n    if (nextFiber !== null) {\n      // Set the return pointer of the child to the work-in-progress fiber.\n      nextFiber.return = fiber;\n    } else {\n      // No child. Traverse to next sibling.\n      nextFiber = fiber;\n\n      while (nextFiber !== null) {\n        if (nextFiber === workInProgress) {\n          // We're back to the root of this subtree. Exit.\n          nextFiber = null;\n          break;\n        }\n\n        var sibling = nextFiber.sibling;\n\n        if (sibling !== null) {\n          // Set the return pointer of the sibling to the work-in-progress fiber.\n          sibling.return = nextFiber.return;\n          nextFiber = sibling;\n          break;\n        } // No more siblings. Traverse up.\n\n\n        nextFiber = nextFiber.return;\n      }\n    }\n\n    fiber = nextFiber;\n  }\n}\nfunction prepareToReadContext(workInProgress, renderLanes) {\n  currentlyRenderingFiber = workInProgress;\n  lastContextDependency = null;\n  lastFullyObservedContext = null;\n  var dependencies = workInProgress.dependencies;\n\n  if (dependencies !== null) {\n    {\n      var firstContext = dependencies.firstContext;\n\n      if (firstContext !== null) {\n        if (includesSomeLane(dependencies.lanes, renderLanes)) {\n          // Context list has a pending update. Mark that this fiber performed work.\n          markWorkInProgressReceivedUpdate();\n        } // Reset the work-in-progress list\n\n\n        dependencies.firstContext = null;\n      }\n    }\n  }\n}\nfunction readContext(context) {\n  {\n    // This warning would fire if you read context inside a Hook like useMemo.\n    // Unlike the class check below, it's not enforced in production for perf.\n    if (isDisallowedContextReadInDEV) {\n      error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().');\n    }\n  }\n\n  var value =  context._currentValue ;\n\n  if (lastFullyObservedContext === context) ; else {\n    var contextItem = {\n      context: context,\n      memoizedValue: value,\n      next: null\n    };\n\n    if (lastContextDependency === null) {\n      if (currentlyRenderingFiber === null) {\n        throw new Error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().');\n      } // This is the first dependency for this component. Create a new list.\n\n\n      lastContextDependency = contextItem;\n      currentlyRenderingFiber.dependencies = {\n        lanes: NoLanes,\n        firstContext: contextItem\n      };\n    } else {\n      // Append a new context item.\n      lastContextDependency = lastContextDependency.next = contextItem;\n    }\n  }\n\n  return value;\n}\n\n// render. When this render exits, either because it finishes or because it is\n// interrupted, the interleaved updates will be transferred onto the main part\n// of the queue.\n\nvar concurrentQueues = null;\nfunction pushConcurrentUpdateQueue(queue) {\n  if (concurrentQueues === null) {\n    concurrentQueues = [queue];\n  } else {\n    concurrentQueues.push(queue);\n  }\n}\nfunction finishQueueingConcurrentUpdates() {\n  // Transfer the interleaved updates onto the main queue. Each queue has a\n  // `pending` field and an `interleaved` field. When they are not null, they\n  // point to the last node in a circular linked list. We need to append the\n  // interleaved list to the end of the pending list by joining them into a\n  // single, circular list.\n  if (concurrentQueues !== null) {\n    for (var i = 0; i < concurrentQueues.length; i++) {\n      var queue = concurrentQueues[i];\n      var lastInterleavedUpdate = queue.interleaved;\n\n      if (lastInterleavedUpdate !== null) {\n        queue.interleaved = null;\n        var firstInterleavedUpdate = lastInterleavedUpdate.next;\n        var lastPendingUpdate = queue.pending;\n\n        if (lastPendingUpdate !== null) {\n          var firstPendingUpdate = lastPendingUpdate.next;\n          lastPendingUpdate.next = firstInterleavedUpdate;\n          lastInterleavedUpdate.next = firstPendingUpdate;\n        }\n\n        queue.pending = lastInterleavedUpdate;\n      }\n    }\n\n    concurrentQueues = null;\n  }\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n  var interleaved = queue.interleaved;\n\n  if (interleaved === null) {\n    // This is the first update. Create a circular list.\n    update.next = update; // At the end of the current render, this queue's interleaved updates will\n    // be transferred to the pending queue.\n\n    pushConcurrentUpdateQueue(queue);\n  } else {\n    update.next = interleaved.next;\n    interleaved.next = update;\n  }\n\n  queue.interleaved = update;\n  return markUpdateLaneFromFiberToRoot(fiber, lane);\n}\nfunction enqueueConcurrentHookUpdateAndEagerlyBailout(fiber, queue, update, lane) {\n  var interleaved = queue.interleaved;\n\n  if (interleaved === null) {\n    // This is the first update. Create a circular list.\n    update.next = update; // At the end of the current render, this queue's interleaved updates will\n    // be transferred to the pending queue.\n\n    pushConcurrentUpdateQueue(queue);\n  } else {\n    update.next = interleaved.next;\n    interleaved.next = update;\n  }\n\n  queue.interleaved = update;\n}\nfunction enqueueConcurrentClassUpdate(fiber, queue, update, lane) {\n  var interleaved = queue.interleaved;\n\n  if (interleaved === null) {\n    // This is the first update. Create a circular list.\n    update.next = update; // At the end of the current render, this queue's interleaved updates will\n    // be transferred to the pending queue.\n\n    pushConcurrentUpdateQueue(queue);\n  } else {\n    update.next = interleaved.next;\n    interleaved.next = update;\n  }\n\n  queue.interleaved = update;\n  return markUpdateLaneFromFiberToRoot(fiber, lane);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n  return markUpdateLaneFromFiberToRoot(fiber, lane);\n} // Calling this function outside this module should only be done for backwards\n// compatibility and should always be accompanied by a warning.\n\nvar unsafe_markUpdateLaneFromFiberToRoot = markUpdateLaneFromFiberToRoot;\n\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, lane) {\n  // Update the source fiber's lanes\n  sourceFiber.lanes = mergeLanes(sourceFiber.lanes, lane);\n  var alternate = sourceFiber.alternate;\n\n  if (alternate !== null) {\n    alternate.lanes = mergeLanes(alternate.lanes, lane);\n  }\n\n  {\n    if (alternate === null && (sourceFiber.flags & (Placement | Hydrating)) !== NoFlags) {\n      warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber);\n    }\n  } // Walk the parent path to the root and update the child lanes.\n\n\n  var node = sourceFiber;\n  var parent = sourceFiber.return;\n\n  while (parent !== null) {\n    parent.childLanes = mergeLanes(parent.childLanes, lane);\n    alternate = parent.alternate;\n\n    if (alternate !== null) {\n      alternate.childLanes = mergeLanes(alternate.childLanes, lane);\n    } else {\n      {\n        if ((parent.flags & (Placement | Hydrating)) !== NoFlags) {\n          warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber);\n        }\n      }\n    }\n\n    node = parent;\n    parent = parent.return;\n  }\n\n  if (node.tag === HostRoot) {\n    var root = node.stateNode;\n    return root;\n  } else {\n    return null;\n  }\n}\n\nvar UpdateState = 0;\nvar ReplaceState = 1;\nvar ForceUpdate = 2;\nvar CaptureUpdate = 3; // Global state that is reset at the beginning of calling `processUpdateQueue`.\n// It should only be read right after calling `processUpdateQueue`, via\n// `checkHasForceUpdateAfterProcessing`.\n\nvar hasForceUpdate = false;\nvar didWarnUpdateInsideUpdate;\nvar currentlyProcessingQueue;\n\n{\n  didWarnUpdateInsideUpdate = false;\n  currentlyProcessingQueue = null;\n}\n\nfunction initializeUpdateQueue(fiber) {\n  var queue = {\n    baseState: fiber.memoizedState,\n    firstBaseUpdate: null,\n    lastBaseUpdate: null,\n    shared: {\n      pending: null,\n      interleaved: null,\n      lanes: NoLanes\n    },\n    effects: null\n  };\n  fiber.updateQueue = queue;\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n  // Clone the update queue from current. Unless it's already a clone.\n  var queue = workInProgress.updateQueue;\n  var currentQueue = current.updateQueue;\n\n  if (queue === currentQueue) {\n    var clone = {\n      baseState: currentQueue.baseState,\n      firstBaseUpdate: currentQueue.firstBaseUpdate,\n      lastBaseUpdate: currentQueue.lastBaseUpdate,\n      shared: currentQueue.shared,\n      effects: currentQueue.effects\n    };\n    workInProgress.updateQueue = clone;\n  }\n}\nfunction createUpdate(eventTime, lane) {\n  var update = {\n    eventTime: eventTime,\n    lane: lane,\n    tag: UpdateState,\n    payload: null,\n    callback: null,\n    next: null\n  };\n  return update;\n}\nfunction enqueueUpdate(fiber, update, lane) {\n  var updateQueue = fiber.updateQueue;\n\n  if (updateQueue === null) {\n    // Only occurs if the fiber has been unmounted.\n    return null;\n  }\n\n  var sharedQueue = updateQueue.shared;\n\n  {\n    if (currentlyProcessingQueue === sharedQueue && !didWarnUpdateInsideUpdate) {\n      error('An update (setState, replaceState, or forceUpdate) was scheduled ' + 'from inside an update function. Update functions should be pure, ' + 'with zero side-effects. Consider using componentDidUpdate or a ' + 'callback.');\n\n      didWarnUpdateInsideUpdate = true;\n    }\n  }\n\n  if (isUnsafeClassRenderPhaseUpdate()) {\n    // This is an unsafe render phase update. Add directly to the update\n    // queue so we can process it immediately during the current render.\n    var pending = sharedQueue.pending;\n\n    if (pending === null) {\n      // This is the first update. Create a circular list.\n      update.next = update;\n    } else {\n      update.next = pending.next;\n      pending.next = update;\n    }\n\n    sharedQueue.pending = update; // Update the childLanes even though we're most likely already rendering\n    // this fiber. This is for backwards compatibility in the case where you\n    // update a different component during render phase than the one that is\n    // currently renderings (a pattern that is accompanied by a warning).\n\n    return unsafe_markUpdateLaneFromFiberToRoot(fiber, lane);\n  } else {\n    return enqueueConcurrentClassUpdate(fiber, sharedQueue, update, lane);\n  }\n}\nfunction entangleTransitions(root, fiber, lane) {\n  var updateQueue = fiber.updateQueue;\n\n  if (updateQueue === null) {\n    // Only occurs if the fiber has been unmounted.\n    return;\n  }\n\n  var sharedQueue = updateQueue.shared;\n\n  if (isTransitionLane(lane)) {\n    var queueLanes = sharedQueue.lanes; // If any entangled lanes are no longer pending on the root, then they must\n    // have finished. We can remove them from the shared queue, which represents\n    // a superset of the actually pending lanes. In some cases we may entangle\n    // more than we need to, but that's OK. In fact it's worse if we *don't*\n    // entangle when we should.\n\n    queueLanes = intersectLanes(queueLanes, root.pendingLanes); // Entangle the new transition lane with the other transition lanes.\n\n    var newQueueLanes = mergeLanes(queueLanes, lane);\n    sharedQueue.lanes = newQueueLanes; // Even if queue.lanes already include lane, we don't know for certain if\n    // the lane finished since the last time we entangled it. So we need to\n    // entangle it again, just to be sure.\n\n    markRootEntangled(root, newQueueLanes);\n  }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n  // Captured updates are updates that are thrown by a child during the render\n  // phase. They should be discarded if the render is aborted. Therefore,\n  // we should only put them on the work-in-progress queue, not the current one.\n  var queue = workInProgress.updateQueue; // Check if the work-in-progress queue is a clone.\n\n  var current = workInProgress.alternate;\n\n  if (current !== null) {\n    var currentQueue = current.updateQueue;\n\n    if (queue === currentQueue) {\n      // The work-in-progress queue is the same as current. This happens when\n      // we bail out on a parent fiber that then captures an error thrown by\n      // a child. Since we want to append the update only to the work-in\n      // -progress queue, we need to clone the updates. We usually clone during\n      // processUpdateQueue, but that didn't happen in this case because we\n      // skipped over the parent when we bailed out.\n      var newFirst = null;\n      var newLast = null;\n      var firstBaseUpdate = queue.firstBaseUpdate;\n\n      if (firstBaseUpdate !== null) {\n        // Loop through the updates and clone them.\n        var update = firstBaseUpdate;\n\n        do {\n          var clone = {\n            eventTime: update.eventTime,\n            lane: update.lane,\n            tag: update.tag,\n            payload: update.payload,\n            callback: update.callback,\n            next: null\n          };\n\n          if (newLast === null) {\n            newFirst = newLast = clone;\n          } else {\n            newLast.next = clone;\n            newLast = clone;\n          }\n\n          update = update.next;\n        } while (update !== null); // Append the captured update the end of the cloned list.\n\n\n        if (newLast === null) {\n          newFirst = newLast = capturedUpdate;\n        } else {\n          newLast.next = capturedUpdate;\n          newLast = capturedUpdate;\n        }\n      } else {\n        // There are no base updates.\n        newFirst = newLast = capturedUpdate;\n      }\n\n      queue = {\n        baseState: currentQueue.baseState,\n        firstBaseUpdate: newFirst,\n        lastBaseUpdate: newLast,\n        shared: currentQueue.shared,\n        effects: currentQueue.effects\n      };\n      workInProgress.updateQueue = queue;\n      return;\n    }\n  } // Append the update to the end of the list.\n\n\n  var lastBaseUpdate = queue.lastBaseUpdate;\n\n  if (lastBaseUpdate === null) {\n    queue.firstBaseUpdate = capturedUpdate;\n  } else {\n    lastBaseUpdate.next = capturedUpdate;\n  }\n\n  queue.lastBaseUpdate = capturedUpdate;\n}\n\nfunction getStateFromUpdate(workInProgress, queue, update, prevState, nextProps, instance) {\n  switch (update.tag) {\n    case ReplaceState:\n      {\n        var payload = update.payload;\n\n        if (typeof payload === 'function') {\n          // Updater function\n          {\n            enterDisallowedContextReadInDEV();\n          }\n\n          var nextState = payload.call(instance, prevState, nextProps);\n\n          {\n            if ( workInProgress.mode & StrictLegacyMode) {\n              setIsStrictModeForDevtools(true);\n\n              try {\n                payload.call(instance, prevState, nextProps);\n              } finally {\n                setIsStrictModeForDevtools(false);\n              }\n            }\n\n            exitDisallowedContextReadInDEV();\n          }\n\n          return nextState;\n        } // State object\n\n\n        return payload;\n      }\n\n    case CaptureUpdate:\n      {\n        workInProgress.flags = workInProgress.flags & ~ShouldCapture | DidCapture;\n      }\n    // Intentional fallthrough\n\n    case UpdateState:\n      {\n        var _payload = update.payload;\n        var partialState;\n\n        if (typeof _payload === 'function') {\n          // Updater function\n          {\n            enterDisallowedContextReadInDEV();\n          }\n\n          partialState = _payload.call(instance, prevState, nextProps);\n\n          {\n            if ( workInProgress.mode & StrictLegacyMode) {\n              setIsStrictModeForDevtools(true);\n\n              try {\n                _payload.call(instance, prevState, nextProps);\n              } finally {\n                setIsStrictModeForDevtools(false);\n              }\n            }\n\n            exitDisallowedContextReadInDEV();\n          }\n        } else {\n          // Partial state object\n          partialState = _payload;\n        }\n\n        if (partialState === null || partialState === undefined) {\n          // Null and undefined are treated as no-ops.\n          return prevState;\n        } // Merge the partial state and the previous state.\n\n\n        return assign({}, prevState, partialState);\n      }\n\n    case ForceUpdate:\n      {\n        hasForceUpdate = true;\n        return prevState;\n      }\n  }\n\n  return prevState;\n}\n\nfunction processUpdateQueue(workInProgress, props, instance, renderLanes) {\n  // This is always non-null on a ClassComponent or HostRoot\n  var queue = workInProgress.updateQueue;\n  hasForceUpdate = false;\n\n  {\n    currentlyProcessingQueue = queue.shared;\n  }\n\n  var firstBaseUpdate = queue.firstBaseUpdate;\n  var lastBaseUpdate = queue.lastBaseUpdate; // Check if there are pending updates. If so, transfer them to the base queue.\n\n  var pendingQueue = queue.shared.pending;\n\n  if (pendingQueue !== null) {\n    queue.shared.pending = null; // The pending queue is circular. Disconnect the pointer between first\n    // and last so that it's non-circular.\n\n    var lastPendingUpdate = pendingQueue;\n    var firstPendingUpdate = lastPendingUpdate.next;\n    lastPendingUpdate.next = null; // Append pending updates to base queue\n\n    if (lastBaseUpdate === null) {\n      firstBaseUpdate = firstPendingUpdate;\n    } else {\n      lastBaseUpdate.next = firstPendingUpdate;\n    }\n\n    lastBaseUpdate = lastPendingUpdate; // If there's a current queue, and it's different from the base queue, then\n    // we need to transfer the updates to that queue, too. Because the base\n    // queue is a singly-linked list with no cycles, we can append to both\n    // lists and take advantage of structural sharing.\n    // TODO: Pass `current` as argument\n\n    var current = workInProgress.alternate;\n\n    if (current !== null) {\n      // This is always non-null on a ClassComponent or HostRoot\n      var currentQueue = current.updateQueue;\n      var currentLastBaseUpdate = currentQueue.lastBaseUpdate;\n\n      if (currentLastBaseUpdate !== lastBaseUpdate) {\n        if (currentLastBaseUpdate === null) {\n          currentQueue.firstBaseUpdate = firstPendingUpdate;\n        } else {\n          currentLastBaseUpdate.next = firstPendingUpdate;\n        }\n\n        currentQueue.lastBaseUpdate = lastPendingUpdate;\n      }\n    }\n  } // These values may change as we process the queue.\n\n\n  if (firstBaseUpdate !== null) {\n    // Iterate through the list of updates to compute the result.\n    var newState = queue.baseState; // TODO: Don't need to accumulate this. Instead, we can remove renderLanes\n    // from the original lanes.\n\n    var newLanes = NoLanes;\n    var newBaseState = null;\n    var newFirstBaseUpdate = null;\n    var newLastBaseUpdate = null;\n    var update = firstBaseUpdate;\n\n    do {\n      var updateLane = update.lane;\n      var updateEventTime = update.eventTime;\n\n      if (!isSubsetOfLanes(renderLanes, updateLane)) {\n        // Priority is insufficient. Skip this update. If this is the first\n        // skipped update, the previous update/state is the new base\n        // update/state.\n        var clone = {\n          eventTime: updateEventTime,\n          lane: updateLane,\n          tag: update.tag,\n          payload: update.payload,\n          callback: update.callback,\n          next: null\n        };\n\n        if (newLastBaseUpdate === null) {\n          newFirstBaseUpdate = newLastBaseUpdate = clone;\n          newBaseState = newState;\n        } else {\n          newLastBaseUpdate = newLastBaseUpdate.next = clone;\n        } // Update the remaining priority in the queue.\n\n\n        newLanes = mergeLanes(newLanes, updateLane);\n      } else {\n        // This update does have sufficient priority.\n        if (newLastBaseUpdate !== null) {\n          var _clone = {\n            eventTime: updateEventTime,\n            // This update is going to be committed so we never want uncommit\n            // it. Using NoLane works because 0 is a subset of all bitmasks, so\n            // this will never be skipped by the check above.\n            lane: NoLane,\n            tag: update.tag,\n            payload: update.payload,\n            callback: update.callback,\n            next: null\n          };\n          newLastBaseUpdate = newLastBaseUpdate.next = _clone;\n        } // Process this update.\n\n\n        newState = getStateFromUpdate(workInProgress, queue, update, newState, props, instance);\n        var callback = update.callback;\n\n        if (callback !== null && // If the update was already committed, we should not queue its\n        // callback again.\n        update.lane !== NoLane) {\n          workInProgress.flags |= Callback;\n          var effects = queue.effects;\n\n          if (effects === null) {\n            queue.effects = [update];\n          } else {\n            effects.push(update);\n          }\n        }\n      }\n\n      update = update.next;\n\n      if (update === null) {\n        pendingQueue = queue.shared.pending;\n\n        if (pendingQueue === null) {\n          break;\n        } else {\n          // An update was scheduled from inside a reducer. Add the new\n          // pending updates to the end of the list and keep processing.\n          var _lastPendingUpdate = pendingQueue; // Intentionally unsound. Pending updates form a circular list, but we\n          // unravel them when transferring them to the base queue.\n\n          var _firstPendingUpdate = _lastPendingUpdate.next;\n          _lastPendingUpdate.next = null;\n          update = _firstPendingUpdate;\n          queue.lastBaseUpdate = _lastPendingUpdate;\n          queue.shared.pending = null;\n        }\n      }\n    } while (true);\n\n    if (newLastBaseUpdate === null) {\n      newBaseState = newState;\n    }\n\n    queue.baseState = newBaseState;\n    queue.firstBaseUpdate = newFirstBaseUpdate;\n    queue.lastBaseUpdate = newLastBaseUpdate; // Interleaved updates are stored on a separate queue. We aren't going to\n    // process them during this render, but we do need to track which lanes\n    // are remaining.\n\n    var lastInterleaved = queue.shared.interleaved;\n\n    if (lastInterleaved !== null) {\n      var interleaved = lastInterleaved;\n\n      do {\n        newLanes = mergeLanes(newLanes, interleaved.lane);\n        interleaved = interleaved.next;\n      } while (interleaved !== lastInterleaved);\n    } else if (firstBaseUpdate === null) {\n      // `queue.lanes` is used for entangling transitions. We can set it back to\n      // zero once the queue is empty.\n      queue.shared.lanes = NoLanes;\n    } // Set the remaining expiration time to be whatever is remaining in the queue.\n    // This should be fine because the only two other things that contribute to\n    // expiration time are props and context. We're already in the middle of the\n    // begin phase by the time we start processing the queue, so we've already\n    // dealt with the props. Context in components that specify\n    // shouldComponentUpdate is tricky; but we'll have to account for\n    // that regardless.\n\n\n    markSkippedUpdateLanes(newLanes);\n    workInProgress.lanes = newLanes;\n    workInProgress.memoizedState = newState;\n  }\n\n  {\n    currentlyProcessingQueue = null;\n  }\n}\n\nfunction callCallback(callback, context) {\n  if (typeof callback !== 'function') {\n    throw new Error('Invalid argument passed as callback. Expected a function. Instead ' + (\"received: \" + callback));\n  }\n\n  callback.call(context);\n}\n\nfunction resetHasForceUpdateBeforeProcessing() {\n  hasForceUpdate = false;\n}\nfunction checkHasForceUpdateAfterProcessing() {\n  return hasForceUpdate;\n}\nfunction commitUpdateQueue(finishedWork, finishedQueue, instance) {\n  // Commit the effects\n  var effects = finishedQueue.effects;\n  finishedQueue.effects = null;\n\n  if (effects !== null) {\n    for (var i = 0; i < effects.length; i++) {\n      var effect = effects[i];\n      var callback = effect.callback;\n\n      if (callback !== null) {\n        effect.callback = null;\n        callCallback(callback, instance);\n      }\n    }\n  }\n}\n\nvar fakeInternalInstance = {}; // React.Component uses a shared frozen object by default.\n// We'll use it to determine whether we need to initialize legacy refs.\n\nvar emptyRefsObject = new React.Component().refs;\nvar didWarnAboutStateAssignmentForComponent;\nvar didWarnAboutUninitializedState;\nvar didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate;\nvar didWarnAboutLegacyLifecyclesAndDerivedState;\nvar didWarnAboutUndefinedDerivedState;\nvar warnOnUndefinedDerivedState;\nvar warnOnInvalidCallback;\nvar didWarnAboutDirectlyAssigningPropsToState;\nvar didWarnAboutContextTypeAndContextTypes;\nvar didWarnAboutInvalidateContextType;\n\n{\n  didWarnAboutStateAssignmentForComponent = new Set();\n  didWarnAboutUninitializedState = new Set();\n  didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = new Set();\n  didWarnAboutLegacyLifecyclesAndDerivedState = new Set();\n  didWarnAboutDirectlyAssigningPropsToState = new Set();\n  didWarnAboutUndefinedDerivedState = new Set();\n  didWarnAboutContextTypeAndContextTypes = new Set();\n  didWarnAboutInvalidateContextType = new Set();\n  var didWarnOnInvalidCallback = new Set();\n\n  warnOnInvalidCallback = function (callback, callerName) {\n    if (callback === null || typeof callback === 'function') {\n      return;\n    }\n\n    var key = callerName + '_' + callback;\n\n    if (!didWarnOnInvalidCallback.has(key)) {\n      didWarnOnInvalidCallback.add(key);\n\n      error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);\n    }\n  };\n\n  warnOnUndefinedDerivedState = function (type, partialState) {\n    if (partialState === undefined) {\n      var componentName = getComponentNameFromType(type) || 'Component';\n\n      if (!didWarnAboutUndefinedDerivedState.has(componentName)) {\n        didWarnAboutUndefinedDerivedState.add(componentName);\n\n        error('%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. ' + 'You have returned undefined.', componentName);\n      }\n    }\n  }; // This is so gross but it's at least non-critical and can be removed if\n  // it causes problems. This is meant to give a nicer error message for\n  // ReactDOM15.unstable_renderSubtreeIntoContainer(reactDOM16Component,\n  // ...)) which otherwise throws a \"_processChildContext is not a function\"\n  // exception.\n\n\n  Object.defineProperty(fakeInternalInstance, '_processChildContext', {\n    enumerable: false,\n    value: function () {\n      throw new Error('_processChildContext is not available in React 16+. This likely ' + 'means you have multiple copies of React and are attempting to nest ' + 'a React 15 tree inside a React 16 tree using ' + \"unstable_renderSubtreeIntoContainer, which isn't supported. Try \" + 'to make sure you have only one copy of React (and ideally, switch ' + 'to ReactDOM.createPortal).');\n    }\n  });\n  Object.freeze(fakeInternalInstance);\n}\n\nfunction applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, nextProps) {\n  var prevState = workInProgress.memoizedState;\n  var partialState = getDerivedStateFromProps(nextProps, prevState);\n\n  {\n    if ( workInProgress.mode & StrictLegacyMode) {\n      setIsStrictModeForDevtools(true);\n\n      try {\n        // Invoke the function an extra time to help detect side-effects.\n        partialState = getDerivedStateFromProps(nextProps, prevState);\n      } finally {\n        setIsStrictModeForDevtools(false);\n      }\n    }\n\n    warnOnUndefinedDerivedState(ctor, partialState);\n  } // Merge the partial state and the previous state.\n\n\n  var memoizedState = partialState === null || partialState === undefined ? prevState : assign({}, prevState, partialState);\n  workInProgress.memoizedState = memoizedState; // Once the update queue is empty, persist the derived state onto the\n  // base state.\n\n  if (workInProgress.lanes === NoLanes) {\n    // Queue is always non-null for classes\n    var updateQueue = workInProgress.updateQueue;\n    updateQueue.baseState = memoizedState;\n  }\n}\n\nvar classComponentUpdater = {\n  isMounted: isMounted,\n  enqueueSetState: function (inst, payload, callback) {\n    var fiber = get(inst);\n    var eventTime = requestEventTime();\n    var lane = requestUpdateLane(fiber);\n    var update = createUpdate(eventTime, lane);\n    update.payload = payload;\n\n    if (callback !== undefined && callback !== null) {\n      {\n        warnOnInvalidCallback(callback, 'setState');\n      }\n\n      update.callback = callback;\n    }\n\n    var root = enqueueUpdate(fiber, update, lane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n      entangleTransitions(root, fiber, lane);\n    }\n\n    {\n      markStateUpdateScheduled(fiber, lane);\n    }\n  },\n  enqueueReplaceState: function (inst, payload, callback) {\n    var fiber = get(inst);\n    var eventTime = requestEventTime();\n    var lane = requestUpdateLane(fiber);\n    var update = createUpdate(eventTime, lane);\n    update.tag = ReplaceState;\n    update.payload = payload;\n\n    if (callback !== undefined && callback !== null) {\n      {\n        warnOnInvalidCallback(callback, 'replaceState');\n      }\n\n      update.callback = callback;\n    }\n\n    var root = enqueueUpdate(fiber, update, lane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n      entangleTransitions(root, fiber, lane);\n    }\n\n    {\n      markStateUpdateScheduled(fiber, lane);\n    }\n  },\n  enqueueForceUpdate: function (inst, callback) {\n    var fiber = get(inst);\n    var eventTime = requestEventTime();\n    var lane = requestUpdateLane(fiber);\n    var update = createUpdate(eventTime, lane);\n    update.tag = ForceUpdate;\n\n    if (callback !== undefined && callback !== null) {\n      {\n        warnOnInvalidCallback(callback, 'forceUpdate');\n      }\n\n      update.callback = callback;\n    }\n\n    var root = enqueueUpdate(fiber, update, lane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n      entangleTransitions(root, fiber, lane);\n    }\n\n    {\n      markForceUpdateScheduled(fiber, lane);\n    }\n  }\n};\n\nfunction checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext) {\n  var instance = workInProgress.stateNode;\n\n  if (typeof instance.shouldComponentUpdate === 'function') {\n    var shouldUpdate = instance.shouldComponentUpdate(newProps, newState, nextContext);\n\n    {\n      if ( workInProgress.mode & StrictLegacyMode) {\n        setIsStrictModeForDevtools(true);\n\n        try {\n          // Invoke the function an extra time to help detect side-effects.\n          shouldUpdate = instance.shouldComponentUpdate(newProps, newState, nextContext);\n        } finally {\n          setIsStrictModeForDevtools(false);\n        }\n      }\n\n      if (shouldUpdate === undefined) {\n        error('%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', getComponentNameFromType(ctor) || 'Component');\n      }\n    }\n\n    return shouldUpdate;\n  }\n\n  if (ctor.prototype && ctor.prototype.isPureReactComponent) {\n    return !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState);\n  }\n\n  return true;\n}\n\nfunction checkClassInstance(workInProgress, ctor, newProps) {\n  var instance = workInProgress.stateNode;\n\n  {\n    var name = getComponentNameFromType(ctor) || 'Component';\n    var renderPresent = instance.render;\n\n    if (!renderPresent) {\n      if (ctor.prototype && typeof ctor.prototype.render === 'function') {\n        error('%s(...): No `render` method found on the returned component ' + 'instance: did you accidentally return an object from the constructor?', name);\n      } else {\n        error('%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', name);\n      }\n    }\n\n    if (instance.getInitialState && !instance.getInitialState.isReactClassApproved && !instance.state) {\n      error('getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', name);\n    }\n\n    if (instance.getDefaultProps && !instance.getDefaultProps.isReactClassApproved) {\n      error('getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', name);\n    }\n\n    if (instance.propTypes) {\n      error('propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', name);\n    }\n\n    if (instance.contextType) {\n      error('contextType was defined as an instance property on %s. Use a static ' + 'property to define contextType instead.', name);\n    }\n\n    {\n      if (instance.contextTypes) {\n        error('contextTypes was defined as an instance property on %s. Use a static ' + 'property to define contextTypes instead.', name);\n      }\n\n      if (ctor.contextType && ctor.contextTypes && !didWarnAboutContextTypeAndContextTypes.has(ctor)) {\n        didWarnAboutContextTypeAndContextTypes.add(ctor);\n\n        error('%s declares both contextTypes and contextType static properties. ' + 'The legacy contextTypes property will be ignored.', name);\n      }\n    }\n\n    if (typeof instance.componentShouldUpdate === 'function') {\n      error('%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', name);\n    }\n\n    if (ctor.prototype && ctor.prototype.isPureReactComponent && typeof instance.shouldComponentUpdate !== 'undefined') {\n      error('%s has a method called shouldComponentUpdate(). ' + 'shouldComponentUpdate should not be used when extending React.PureComponent. ' + 'Please extend React.Component if shouldComponentUpdate is used.', getComponentNameFromType(ctor) || 'A pure component');\n    }\n\n    if (typeof instance.componentDidUnmount === 'function') {\n      error('%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', name);\n    }\n\n    if (typeof instance.componentDidReceiveProps === 'function') {\n      error('%s has a method called ' + 'componentDidReceiveProps(). But there is no such lifecycle method. ' + 'If you meant to update the state in response to changing props, ' + 'use componentWillReceiveProps(). If you meant to fetch data or ' + 'run side-effects or mutations after React has updated the UI, use componentDidUpdate().', name);\n    }\n\n    if (typeof instance.componentWillRecieveProps === 'function') {\n      error('%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', name);\n    }\n\n    if (typeof instance.UNSAFE_componentWillRecieveProps === 'function') {\n      error('%s has a method called ' + 'UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?', name);\n    }\n\n    var hasMutatedProps = instance.props !== newProps;\n\n    if (instance.props !== undefined && hasMutatedProps) {\n      error('%s(...): When calling super() in `%s`, make sure to pass ' + \"up the same props that your component's constructor was passed.\", name, name);\n    }\n\n    if (instance.defaultProps) {\n      error('Setting defaultProps as an instance property on %s is not supported and will be ignored.' + ' Instead, define defaultProps as a static property on %s.', name, name);\n    }\n\n    if (typeof instance.getSnapshotBeforeUpdate === 'function' && typeof instance.componentDidUpdate !== 'function' && !didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(ctor)) {\n      didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(ctor);\n\n      error('%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). ' + 'This component defines getSnapshotBeforeUpdate() only.', getComponentNameFromType(ctor));\n    }\n\n    if (typeof instance.getDerivedStateFromProps === 'function') {\n      error('%s: getDerivedStateFromProps() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name);\n    }\n\n    if (typeof instance.getDerivedStateFromError === 'function') {\n      error('%s: getDerivedStateFromError() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name);\n    }\n\n    if (typeof ctor.getSnapshotBeforeUpdate === 'function') {\n      error('%s: getSnapshotBeforeUpdate() is defined as a static method ' + 'and will be ignored. Instead, declare it as an instance method.', name);\n    }\n\n    var _state = instance.state;\n\n    if (_state && (typeof _state !== 'object' || isArray(_state))) {\n      error('%s.state: must be set to an object or null', name);\n    }\n\n    if (typeof instance.getChildContext === 'function' && typeof ctor.childContextTypes !== 'object') {\n      error('%s.getChildContext(): childContextTypes must be defined in order to ' + 'use getChildContext().', name);\n    }\n  }\n}\n\nfunction adoptClassInstance(workInProgress, instance) {\n  instance.updater = classComponentUpdater;\n  workInProgress.stateNode = instance; // The instance needs access to the fiber so that it can schedule updates\n\n  set(instance, workInProgress);\n\n  {\n    instance._reactInternalInstance = fakeInternalInstance;\n  }\n}\n\nfunction constructClassInstance(workInProgress, ctor, props) {\n  var isLegacyContextConsumer = false;\n  var unmaskedContext = emptyContextObject;\n  var context = emptyContextObject;\n  var contextType = ctor.contextType;\n\n  {\n    if ('contextType' in ctor) {\n      var isValid = // Allow null for conditional declaration\n      contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a <Context.Consumer>\n\n      if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) {\n        didWarnAboutInvalidateContextType.add(ctor);\n        var addendum = '';\n\n        if (contextType === undefined) {\n          addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.';\n        } else if (typeof contextType !== 'object') {\n          addendum = ' However, it is set to a ' + typeof contextType + '.';\n        } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {\n          addendum = ' Did you accidentally pass the Context.Provider instead?';\n        } else if (contextType._context !== undefined) {\n          // <Context.Consumer>\n          addendum = ' Did you accidentally pass the Context.Consumer instead?';\n        } else {\n          addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.';\n        }\n\n        error('%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentNameFromType(ctor) || 'Component', addendum);\n      }\n    }\n  }\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    context = readContext(contextType);\n  } else {\n    unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n    var contextTypes = ctor.contextTypes;\n    isLegacyContextConsumer = contextTypes !== null && contextTypes !== undefined;\n    context = isLegacyContextConsumer ? getMaskedContext(workInProgress, unmaskedContext) : emptyContextObject;\n  }\n\n  var instance = new ctor(props, context); // Instantiate twice to help detect side-effects.\n\n  {\n    if ( workInProgress.mode & StrictLegacyMode) {\n      setIsStrictModeForDevtools(true);\n\n      try {\n        instance = new ctor(props, context); // eslint-disable-line no-new\n      } finally {\n        setIsStrictModeForDevtools(false);\n      }\n    }\n  }\n\n  var state = workInProgress.memoizedState = instance.state !== null && instance.state !== undefined ? instance.state : null;\n  adoptClassInstance(workInProgress, instance);\n\n  {\n    if (typeof ctor.getDerivedStateFromProps === 'function' && state === null) {\n      var componentName = getComponentNameFromType(ctor) || 'Component';\n\n      if (!didWarnAboutUninitializedState.has(componentName)) {\n        didWarnAboutUninitializedState.add(componentName);\n\n        error('`%s` uses `getDerivedStateFromProps` but its initial state is ' + '%s. This is not recommended. Instead, define the initial state by ' + 'assigning an object to `this.state` in the constructor of `%s`. ' + 'This ensures that `getDerivedStateFromProps` arguments have a consistent shape.', componentName, instance.state === null ? 'null' : 'undefined', componentName);\n      }\n    } // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n    // Warn about these lifecycles if they are present.\n    // Don't warn about react-lifecycles-compat polyfilled methods though.\n\n\n    if (typeof ctor.getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function') {\n      var foundWillMountName = null;\n      var foundWillReceivePropsName = null;\n      var foundWillUpdateName = null;\n\n      if (typeof instance.componentWillMount === 'function' && instance.componentWillMount.__suppressDeprecationWarning !== true) {\n        foundWillMountName = 'componentWillMount';\n      } else if (typeof instance.UNSAFE_componentWillMount === 'function') {\n        foundWillMountName = 'UNSAFE_componentWillMount';\n      }\n\n      if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {\n        foundWillReceivePropsName = 'componentWillReceiveProps';\n      } else if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n        foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n      }\n\n      if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {\n        foundWillUpdateName = 'componentWillUpdate';\n      } else if (typeof instance.UNSAFE_componentWillUpdate === 'function') {\n        foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n      }\n\n      if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) {\n        var _componentName = getComponentNameFromType(ctor) || 'Component';\n\n        var newApiName = typeof ctor.getDerivedStateFromProps === 'function' ? 'getDerivedStateFromProps()' : 'getSnapshotBeforeUpdate()';\n\n        if (!didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName)) {\n          didWarnAboutLegacyLifecyclesAndDerivedState.add(_componentName);\n\n          error('Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' + '%s uses %s but also contains the following legacy lifecycles:%s%s%s\\n\\n' + 'The above lifecycles should be removed. Learn more about this warning here:\\n' + 'https://reactjs.org/link/unsafe-component-lifecycles', _componentName, newApiName, foundWillMountName !== null ? \"\\n  \" + foundWillMountName : '', foundWillReceivePropsName !== null ? \"\\n  \" + foundWillReceivePropsName : '', foundWillUpdateName !== null ? \"\\n  \" + foundWillUpdateName : '');\n        }\n      }\n    }\n  } // Cache unmasked context so we can avoid recreating masked context unless necessary.\n  // ReactFiberContext usually updates this cache but can't for newly-created instances.\n\n\n  if (isLegacyContextConsumer) {\n    cacheContext(workInProgress, unmaskedContext, context);\n  }\n\n  return instance;\n}\n\nfunction callComponentWillMount(workInProgress, instance) {\n  var oldState = instance.state;\n\n  if (typeof instance.componentWillMount === 'function') {\n    instance.componentWillMount();\n  }\n\n  if (typeof instance.UNSAFE_componentWillMount === 'function') {\n    instance.UNSAFE_componentWillMount();\n  }\n\n  if (oldState !== instance.state) {\n    {\n      error('%s.componentWillMount(): Assigning directly to this.state is ' + \"deprecated (except inside a component's \" + 'constructor). Use setState instead.', getComponentNameFromFiber(workInProgress) || 'Component');\n    }\n\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n  }\n}\n\nfunction callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext) {\n  var oldState = instance.state;\n\n  if (typeof instance.componentWillReceiveProps === 'function') {\n    instance.componentWillReceiveProps(newProps, nextContext);\n  }\n\n  if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n    instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n  }\n\n  if (instance.state !== oldState) {\n    {\n      var componentName = getComponentNameFromFiber(workInProgress) || 'Component';\n\n      if (!didWarnAboutStateAssignmentForComponent.has(componentName)) {\n        didWarnAboutStateAssignmentForComponent.add(componentName);\n\n        error('%s.componentWillReceiveProps(): Assigning directly to ' + \"this.state is deprecated (except inside a component's \" + 'constructor). Use setState instead.', componentName);\n      }\n    }\n\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n  }\n} // Invokes the mount life-cycles on a previously never rendered instance.\n\n\nfunction mountClassInstance(workInProgress, ctor, newProps, renderLanes) {\n  {\n    checkClassInstance(workInProgress, ctor, newProps);\n  }\n\n  var instance = workInProgress.stateNode;\n  instance.props = newProps;\n  instance.state = workInProgress.memoizedState;\n  instance.refs = emptyRefsObject;\n  initializeUpdateQueue(workInProgress);\n  var contextType = ctor.contextType;\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    instance.context = readContext(contextType);\n  } else {\n    var unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n    instance.context = getMaskedContext(workInProgress, unmaskedContext);\n  }\n\n  {\n    if (instance.state === newProps) {\n      var componentName = getComponentNameFromType(ctor) || 'Component';\n\n      if (!didWarnAboutDirectlyAssigningPropsToState.has(componentName)) {\n        didWarnAboutDirectlyAssigningPropsToState.add(componentName);\n\n        error('%s: It is not recommended to assign props directly to state ' + \"because updates to props won't be reflected in state. \" + 'In most cases, it is better to use props directly.', componentName);\n      }\n    }\n\n    if (workInProgress.mode & StrictLegacyMode) {\n      ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress, instance);\n    }\n\n    {\n      ReactStrictModeWarnings.recordUnsafeLifecycleWarnings(workInProgress, instance);\n    }\n  }\n\n  instance.state = workInProgress.memoizedState;\n  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n\n  if (typeof getDerivedStateFromProps === 'function') {\n    applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);\n    instance.state = workInProgress.memoizedState;\n  } // In order to support react-lifecycles-compat polyfilled components,\n  // Unsafe lifecycles should not be invoked for components using the new APIs.\n\n\n  if (typeof ctor.getDerivedStateFromProps !== 'function' && typeof instance.getSnapshotBeforeUpdate !== 'function' && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {\n    callComponentWillMount(workInProgress, instance); // If we had additional state updates during this life-cycle, let's\n    // process them now.\n\n    processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n    instance.state = workInProgress.memoizedState;\n  }\n\n  if (typeof instance.componentDidMount === 'function') {\n    var fiberFlags = Update;\n\n    {\n      fiberFlags |= LayoutStatic;\n    }\n\n    if ( (workInProgress.mode & StrictEffectsMode) !== NoMode) {\n      fiberFlags |= MountLayoutDev;\n    }\n\n    workInProgress.flags |= fiberFlags;\n  }\n}\n\nfunction resumeMountClassInstance(workInProgress, ctor, newProps, renderLanes) {\n  var instance = workInProgress.stateNode;\n  var oldProps = workInProgress.memoizedProps;\n  instance.props = oldProps;\n  var oldContext = instance.context;\n  var contextType = ctor.contextType;\n  var nextContext = emptyContextObject;\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    nextContext = readContext(contextType);\n  } else {\n    var nextLegacyUnmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n    nextContext = getMaskedContext(workInProgress, nextLegacyUnmaskedContext);\n  }\n\n  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n  var hasNewLifecycles = typeof getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function'; // Note: During these life-cycles, instance.props/instance.state are what\n  // ever the previously attempted to render - not the \"current\". However,\n  // during componentDidUpdate we pass the \"current\" props.\n  // In order to support react-lifecycles-compat polyfilled components,\n  // Unsafe lifecycles should not be invoked for components using the new APIs.\n\n  if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) {\n    if (oldProps !== newProps || oldContext !== nextContext) {\n      callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext);\n    }\n  }\n\n  resetHasForceUpdateBeforeProcessing();\n  var oldState = workInProgress.memoizedState;\n  var newState = instance.state = oldState;\n  processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n  newState = workInProgress.memoizedState;\n\n  if (oldProps === newProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing()) {\n    // If an update was already in progress, we should schedule an Update\n    // effect even though we're bailing out, so that cWU/cDU are called.\n    if (typeof instance.componentDidMount === 'function') {\n      var fiberFlags = Update;\n\n      {\n        fiberFlags |= LayoutStatic;\n      }\n\n      if ( (workInProgress.mode & StrictEffectsMode) !== NoMode) {\n        fiberFlags |= MountLayoutDev;\n      }\n\n      workInProgress.flags |= fiberFlags;\n    }\n\n    return false;\n  }\n\n  if (typeof getDerivedStateFromProps === 'function') {\n    applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);\n    newState = workInProgress.memoizedState;\n  }\n\n  var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext);\n\n  if (shouldUpdate) {\n    // In order to support react-lifecycles-compat polyfilled components,\n    // Unsafe lifecycles should not be invoked for components using the new APIs.\n    if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {\n      if (typeof instance.componentWillMount === 'function') {\n        instance.componentWillMount();\n      }\n\n      if (typeof instance.UNSAFE_componentWillMount === 'function') {\n        instance.UNSAFE_componentWillMount();\n      }\n    }\n\n    if (typeof instance.componentDidMount === 'function') {\n      var _fiberFlags = Update;\n\n      {\n        _fiberFlags |= LayoutStatic;\n      }\n\n      if ( (workInProgress.mode & StrictEffectsMode) !== NoMode) {\n        _fiberFlags |= MountLayoutDev;\n      }\n\n      workInProgress.flags |= _fiberFlags;\n    }\n  } else {\n    // If an update was already in progress, we should schedule an Update\n    // effect even though we're bailing out, so that cWU/cDU are called.\n    if (typeof instance.componentDidMount === 'function') {\n      var _fiberFlags2 = Update;\n\n      {\n        _fiberFlags2 |= LayoutStatic;\n      }\n\n      if ( (workInProgress.mode & StrictEffectsMode) !== NoMode) {\n        _fiberFlags2 |= MountLayoutDev;\n      }\n\n      workInProgress.flags |= _fiberFlags2;\n    } // If shouldComponentUpdate returned false, we should still update the\n    // memoized state to indicate that this work can be reused.\n\n\n    workInProgress.memoizedProps = newProps;\n    workInProgress.memoizedState = newState;\n  } // Update the existing instance's state, props, and context pointers even\n  // if shouldComponentUpdate returns false.\n\n\n  instance.props = newProps;\n  instance.state = newState;\n  instance.context = nextContext;\n  return shouldUpdate;\n} // Invokes the update life-cycles and returns false if it shouldn't rerender.\n\n\nfunction updateClassInstance(current, workInProgress, ctor, newProps, renderLanes) {\n  var instance = workInProgress.stateNode;\n  cloneUpdateQueue(current, workInProgress);\n  var unresolvedOldProps = workInProgress.memoizedProps;\n  var oldProps = workInProgress.type === workInProgress.elementType ? unresolvedOldProps : resolveDefaultProps(workInProgress.type, unresolvedOldProps);\n  instance.props = oldProps;\n  var unresolvedNewProps = workInProgress.pendingProps;\n  var oldContext = instance.context;\n  var contextType = ctor.contextType;\n  var nextContext = emptyContextObject;\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    nextContext = readContext(contextType);\n  } else {\n    var nextUnmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n    nextContext = getMaskedContext(workInProgress, nextUnmaskedContext);\n  }\n\n  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n  var hasNewLifecycles = typeof getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function'; // Note: During these life-cycles, instance.props/instance.state are what\n  // ever the previously attempted to render - not the \"current\". However,\n  // during componentDidUpdate we pass the \"current\" props.\n  // In order to support react-lifecycles-compat polyfilled components,\n  // Unsafe lifecycles should not be invoked for components using the new APIs.\n\n  if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) {\n    if (unresolvedOldProps !== unresolvedNewProps || oldContext !== nextContext) {\n      callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext);\n    }\n  }\n\n  resetHasForceUpdateBeforeProcessing();\n  var oldState = workInProgress.memoizedState;\n  var newState = instance.state = oldState;\n  processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n  newState = workInProgress.memoizedState;\n\n  if (unresolvedOldProps === unresolvedNewProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing() && !(enableLazyContextPropagation   )) {\n    // If an update was already in progress, we should schedule an Update\n    // effect even though we're bailing out, so that cWU/cDU are called.\n    if (typeof instance.componentDidUpdate === 'function') {\n      if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n        workInProgress.flags |= Update;\n      }\n    }\n\n    if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n      if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n        workInProgress.flags |= Snapshot;\n      }\n    }\n\n    return false;\n  }\n\n  if (typeof getDerivedStateFromProps === 'function') {\n    applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);\n    newState = workInProgress.memoizedState;\n  }\n\n  var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext) || // TODO: In some cases, we'll end up checking if context has changed twice,\n  // both before and after `shouldComponentUpdate` has been called. Not ideal,\n  // but I'm loath to refactor this function. This only happens for memoized\n  // components so it's not that common.\n  enableLazyContextPropagation   ;\n\n  if (shouldUpdate) {\n    // In order to support react-lifecycles-compat polyfilled components,\n    // Unsafe lifecycles should not be invoked for components using the new APIs.\n    if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillUpdate === 'function' || typeof instance.componentWillUpdate === 'function')) {\n      if (typeof instance.componentWillUpdate === 'function') {\n        instance.componentWillUpdate(newProps, newState, nextContext);\n      }\n\n      if (typeof instance.UNSAFE_componentWillUpdate === 'function') {\n        instance.UNSAFE_componentWillUpdate(newProps, newState, nextContext);\n      }\n    }\n\n    if (typeof instance.componentDidUpdate === 'function') {\n      workInProgress.flags |= Update;\n    }\n\n    if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n      workInProgress.flags |= Snapshot;\n    }\n  } else {\n    // If an update was already in progress, we should schedule an Update\n    // effect even though we're bailing out, so that cWU/cDU are called.\n    if (typeof instance.componentDidUpdate === 'function') {\n      if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n        workInProgress.flags |= Update;\n      }\n    }\n\n    if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n      if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n        workInProgress.flags |= Snapshot;\n      }\n    } // If shouldComponentUpdate returned false, we should still update the\n    // memoized props/state to indicate that this work can be reused.\n\n\n    workInProgress.memoizedProps = newProps;\n    workInProgress.memoizedState = newState;\n  } // Update the existing instance's state, props, and context pointers even\n  // if shouldComponentUpdate returns false.\n\n\n  instance.props = newProps;\n  instance.state = newState;\n  instance.context = nextContext;\n  return shouldUpdate;\n}\n\nvar didWarnAboutMaps;\nvar didWarnAboutGenerators;\nvar didWarnAboutStringRefs;\nvar ownerHasKeyUseWarning;\nvar ownerHasFunctionTypeWarning;\n\nvar warnForMissingKey = function (child, returnFiber) {};\n\n{\n  didWarnAboutMaps = false;\n  didWarnAboutGenerators = false;\n  didWarnAboutStringRefs = {};\n  /**\n   * Warn if there's no key explicitly set on dynamic arrays of children or\n   * object keys are not valid. This allows us to keep track of children between\n   * updates.\n   */\n\n  ownerHasKeyUseWarning = {};\n  ownerHasFunctionTypeWarning = {};\n\n  warnForMissingKey = function (child, returnFiber) {\n    if (child === null || typeof child !== 'object') {\n      return;\n    }\n\n    if (!child._store || child._store.validated || child.key != null) {\n      return;\n    }\n\n    if (typeof child._store !== 'object') {\n      throw new Error('React Component in warnForMissingKey should have a _store. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n\n    child._store.validated = true;\n    var componentName = getComponentNameFromFiber(returnFiber) || 'Component';\n\n    if (ownerHasKeyUseWarning[componentName]) {\n      return;\n    }\n\n    ownerHasKeyUseWarning[componentName] = true;\n\n    error('Each child in a list should have a unique ' + '\"key\" prop. See https://reactjs.org/link/warning-keys for ' + 'more information.');\n  };\n}\n\nfunction coerceRef(returnFiber, current, element) {\n  var mixedRef = element.ref;\n\n  if (mixedRef !== null && typeof mixedRef !== 'function' && typeof mixedRef !== 'object') {\n    {\n      // TODO: Clean this up once we turn on the string ref warning for\n      // everyone, because the strict mode case will no longer be relevant\n      if ((returnFiber.mode & StrictLegacyMode || warnAboutStringRefs) && // We warn in ReactElement.js if owner and self are equal for string refs\n      // because these cannot be automatically converted to an arrow function\n      // using a codemod. Therefore, we don't have to warn about string refs again.\n      !(element._owner && element._self && element._owner.stateNode !== element._self)) {\n        var componentName = getComponentNameFromFiber(returnFiber) || 'Component';\n\n        if (!didWarnAboutStringRefs[componentName]) {\n          {\n            error('A string ref, \"%s\", has been found within a strict mode tree. ' + 'String refs are a source of potential bugs and should be avoided. ' + 'We recommend using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', mixedRef);\n          }\n\n          didWarnAboutStringRefs[componentName] = true;\n        }\n      }\n    }\n\n    if (element._owner) {\n      var owner = element._owner;\n      var inst;\n\n      if (owner) {\n        var ownerFiber = owner;\n\n        if (ownerFiber.tag !== ClassComponent) {\n          throw new Error('Function components cannot have string refs. ' + 'We recommend using useRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref');\n        }\n\n        inst = ownerFiber.stateNode;\n      }\n\n      if (!inst) {\n        throw new Error(\"Missing owner for string ref \" + mixedRef + \". This error is likely caused by a \" + 'bug in React. Please file an issue.');\n      } // Assigning this to a const so Flow knows it won't change in the closure\n\n\n      var resolvedInst = inst;\n\n      {\n        checkPropStringCoercion(mixedRef, 'ref');\n      }\n\n      var stringRef = '' + mixedRef; // Check if previous string ref matches new string ref\n\n      if (current !== null && current.ref !== null && typeof current.ref === 'function' && current.ref._stringRef === stringRef) {\n        return current.ref;\n      }\n\n      var ref = function (value) {\n        var refs = resolvedInst.refs;\n\n        if (refs === emptyRefsObject) {\n          // This is a lazy pooled frozen object, so we need to initialize.\n          refs = resolvedInst.refs = {};\n        }\n\n        if (value === null) {\n          delete refs[stringRef];\n        } else {\n          refs[stringRef] = value;\n        }\n      };\n\n      ref._stringRef = stringRef;\n      return ref;\n    } else {\n      if (typeof mixedRef !== 'string') {\n        throw new Error('Expected ref to be a function, a string, an object returned by React.createRef(), or null.');\n      }\n\n      if (!element._owner) {\n        throw new Error(\"Element ref was specified as a string (\" + mixedRef + \") but no owner was set. This could happen for one of\" + ' the following reasons:\\n' + '1. You may be adding a ref to a function component\\n' + \"2. You may be adding a ref to a component that was not created inside a component's render method\\n\" + '3. You have multiple copies of React loaded\\n' + 'See https://reactjs.org/link/refs-must-have-owner for more information.');\n      }\n    }\n  }\n\n  return mixedRef;\n}\n\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n  var childString = Object.prototype.toString.call(newChild);\n  throw new Error(\"Objects are not valid as a React child (found: \" + (childString === '[object Object]' ? 'object with keys {' + Object.keys(newChild).join(', ') + '}' : childString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n}\n\nfunction warnOnFunctionType(returnFiber) {\n  {\n    var componentName = getComponentNameFromFiber(returnFiber) || 'Component';\n\n    if (ownerHasFunctionTypeWarning[componentName]) {\n      return;\n    }\n\n    ownerHasFunctionTypeWarning[componentName] = true;\n\n    error('Functions are not valid as a React child. This may happen if ' + 'you return a Component instead of <Component /> from render. ' + 'Or maybe you meant to call this function rather than return it.');\n  }\n}\n\nfunction resolveLazy(lazyType) {\n  var payload = lazyType._payload;\n  var init = lazyType._init;\n  return init(payload);\n} // This wrapper function exists because I expect to clone the code in each path\n// to be able to optimize each path individually by branching early. This needs\n// a compiler or we can do it manually. Helpers that don't need this branching\n// live outside of this function.\n\n\nfunction ChildReconciler(shouldTrackSideEffects) {\n  function deleteChild(returnFiber, childToDelete) {\n    if (!shouldTrackSideEffects) {\n      // Noop.\n      return;\n    }\n\n    var deletions = returnFiber.deletions;\n\n    if (deletions === null) {\n      returnFiber.deletions = [childToDelete];\n      returnFiber.flags |= ChildDeletion;\n    } else {\n      deletions.push(childToDelete);\n    }\n  }\n\n  function deleteRemainingChildren(returnFiber, currentFirstChild) {\n    if (!shouldTrackSideEffects) {\n      // Noop.\n      return null;\n    } // TODO: For the shouldClone case, this could be micro-optimized a bit by\n    // assuming that after the first child we've already added everything.\n\n\n    var childToDelete = currentFirstChild;\n\n    while (childToDelete !== null) {\n      deleteChild(returnFiber, childToDelete);\n      childToDelete = childToDelete.sibling;\n    }\n\n    return null;\n  }\n\n  function mapRemainingChildren(returnFiber, currentFirstChild) {\n    // Add the remaining children to a temporary map so that we can find them by\n    // keys quickly. Implicit (null) keys get added to this set with their index\n    // instead.\n    var existingChildren = new Map();\n    var existingChild = currentFirstChild;\n\n    while (existingChild !== null) {\n      if (existingChild.key !== null) {\n        existingChildren.set(existingChild.key, existingChild);\n      } else {\n        existingChildren.set(existingChild.index, existingChild);\n      }\n\n      existingChild = existingChild.sibling;\n    }\n\n    return existingChildren;\n  }\n\n  function useFiber(fiber, pendingProps) {\n    // We currently set sibling to null and index to 0 here because it is easy\n    // to forget to do before returning it. E.g. for the single child case.\n    var clone = createWorkInProgress(fiber, pendingProps);\n    clone.index = 0;\n    clone.sibling = null;\n    return clone;\n  }\n\n  function placeChild(newFiber, lastPlacedIndex, newIndex) {\n    newFiber.index = newIndex;\n\n    if (!shouldTrackSideEffects) {\n      // During hydration, the useId algorithm needs to know which fibers are\n      // part of a list of children (arrays, iterators).\n      newFiber.flags |= Forked;\n      return lastPlacedIndex;\n    }\n\n    var current = newFiber.alternate;\n\n    if (current !== null) {\n      var oldIndex = current.index;\n\n      if (oldIndex < lastPlacedIndex) {\n        // This is a move.\n        newFiber.flags |= Placement;\n        return lastPlacedIndex;\n      } else {\n        // This item can stay in place.\n        return oldIndex;\n      }\n    } else {\n      // This is an insertion.\n      newFiber.flags |= Placement;\n      return lastPlacedIndex;\n    }\n  }\n\n  function placeSingleChild(newFiber) {\n    // This is simpler for the single child case. We only need to do a\n    // placement for inserting new children.\n    if (shouldTrackSideEffects && newFiber.alternate === null) {\n      newFiber.flags |= Placement;\n    }\n\n    return newFiber;\n  }\n\n  function updateTextNode(returnFiber, current, textContent, lanes) {\n    if (current === null || current.tag !== HostText) {\n      // Insert\n      var created = createFiberFromText(textContent, returnFiber.mode, lanes);\n      created.return = returnFiber;\n      return created;\n    } else {\n      // Update\n      var existing = useFiber(current, textContent);\n      existing.return = returnFiber;\n      return existing;\n    }\n  }\n\n  function updateElement(returnFiber, current, element, lanes) {\n    var elementType = element.type;\n\n    if (elementType === REACT_FRAGMENT_TYPE) {\n      return updateFragment(returnFiber, current, element.props.children, lanes, element.key);\n    }\n\n    if (current !== null) {\n      if (current.elementType === elementType || ( // Keep this check inline so it only runs on the false path:\n       isCompatibleFamilyForHotReloading(current, element) ) || // Lazy types should reconcile their resolved type.\n      // We need to do this after the Hot Reloading check above,\n      // because hot reloading has different semantics than prod because\n      // it doesn't resuspend. So we can't let the call below suspend.\n      typeof elementType === 'object' && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === current.type) {\n        // Move based on index\n        var existing = useFiber(current, element.props);\n        existing.ref = coerceRef(returnFiber, current, element);\n        existing.return = returnFiber;\n\n        {\n          existing._debugSource = element._source;\n          existing._debugOwner = element._owner;\n        }\n\n        return existing;\n      }\n    } // Insert\n\n\n    var created = createFiberFromElement(element, returnFiber.mode, lanes);\n    created.ref = coerceRef(returnFiber, current, element);\n    created.return = returnFiber;\n    return created;\n  }\n\n  function updatePortal(returnFiber, current, portal, lanes) {\n    if (current === null || current.tag !== HostPortal || current.stateNode.containerInfo !== portal.containerInfo || current.stateNode.implementation !== portal.implementation) {\n      // Insert\n      var created = createFiberFromPortal(portal, returnFiber.mode, lanes);\n      created.return = returnFiber;\n      return created;\n    } else {\n      // Update\n      var existing = useFiber(current, portal.children || []);\n      existing.return = returnFiber;\n      return existing;\n    }\n  }\n\n  function updateFragment(returnFiber, current, fragment, lanes, key) {\n    if (current === null || current.tag !== Fragment) {\n      // Insert\n      var created = createFiberFromFragment(fragment, returnFiber.mode, lanes, key);\n      created.return = returnFiber;\n      return created;\n    } else {\n      // Update\n      var existing = useFiber(current, fragment);\n      existing.return = returnFiber;\n      return existing;\n    }\n  }\n\n  function createChild(returnFiber, newChild, lanes) {\n    if (typeof newChild === 'string' && newChild !== '' || typeof newChild === 'number') {\n      // Text nodes don't have keys. If the previous node is implicitly keyed\n      // we can continue to replace it without aborting even if it is not a text\n      // node.\n      var created = createFiberFromText('' + newChild, returnFiber.mode, lanes);\n      created.return = returnFiber;\n      return created;\n    }\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          {\n            var _created = createFiberFromElement(newChild, returnFiber.mode, lanes);\n\n            _created.ref = coerceRef(returnFiber, null, newChild);\n            _created.return = returnFiber;\n            return _created;\n          }\n\n        case REACT_PORTAL_TYPE:\n          {\n            var _created2 = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n\n            _created2.return = returnFiber;\n            return _created2;\n          }\n\n        case REACT_LAZY_TYPE:\n          {\n            var payload = newChild._payload;\n            var init = newChild._init;\n            return createChild(returnFiber, init(payload), lanes);\n          }\n      }\n\n      if (isArray(newChild) || getIteratorFn(newChild)) {\n        var _created3 = createFiberFromFragment(newChild, returnFiber.mode, lanes, null);\n\n        _created3.return = returnFiber;\n        return _created3;\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType(returnFiber);\n      }\n    }\n\n    return null;\n  }\n\n  function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n    // Update the fiber if the keys match, otherwise return null.\n    var key = oldFiber !== null ? oldFiber.key : null;\n\n    if (typeof newChild === 'string' && newChild !== '' || typeof newChild === 'number') {\n      // Text nodes don't have keys. If the previous node is implicitly keyed\n      // we can continue to replace it without aborting even if it is not a text\n      // node.\n      if (key !== null) {\n        return null;\n      }\n\n      return updateTextNode(returnFiber, oldFiber, '' + newChild, lanes);\n    }\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          {\n            if (newChild.key === key) {\n              return updateElement(returnFiber, oldFiber, newChild, lanes);\n            } else {\n              return null;\n            }\n          }\n\n        case REACT_PORTAL_TYPE:\n          {\n            if (newChild.key === key) {\n              return updatePortal(returnFiber, oldFiber, newChild, lanes);\n            } else {\n              return null;\n            }\n          }\n\n        case REACT_LAZY_TYPE:\n          {\n            var payload = newChild._payload;\n            var init = newChild._init;\n            return updateSlot(returnFiber, oldFiber, init(payload), lanes);\n          }\n      }\n\n      if (isArray(newChild) || getIteratorFn(newChild)) {\n        if (key !== null) {\n          return null;\n        }\n\n        return updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType(returnFiber);\n      }\n    }\n\n    return null;\n  }\n\n  function updateFromMap(existingChildren, returnFiber, newIdx, newChild, lanes) {\n    if (typeof newChild === 'string' && newChild !== '' || typeof newChild === 'number') {\n      // Text nodes don't have keys, so we neither have to check the old nor\n      // new node for the key. If both are text nodes, they match.\n      var matchedFiber = existingChildren.get(newIdx) || null;\n      return updateTextNode(returnFiber, matchedFiber, '' + newChild, lanes);\n    }\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          {\n            var _matchedFiber = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n\n            return updateElement(returnFiber, _matchedFiber, newChild, lanes);\n          }\n\n        case REACT_PORTAL_TYPE:\n          {\n            var _matchedFiber2 = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n\n            return updatePortal(returnFiber, _matchedFiber2, newChild, lanes);\n          }\n\n        case REACT_LAZY_TYPE:\n          var payload = newChild._payload;\n          var init = newChild._init;\n          return updateFromMap(existingChildren, returnFiber, newIdx, init(payload), lanes);\n      }\n\n      if (isArray(newChild) || getIteratorFn(newChild)) {\n        var _matchedFiber3 = existingChildren.get(newIdx) || null;\n\n        return updateFragment(returnFiber, _matchedFiber3, newChild, lanes, null);\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType(returnFiber);\n      }\n    }\n\n    return null;\n  }\n  /**\n   * Warns if there is a duplicate or missing key\n   */\n\n\n  function warnOnInvalidKey(child, knownKeys, returnFiber) {\n    {\n      if (typeof child !== 'object' || child === null) {\n        return knownKeys;\n      }\n\n      switch (child.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n        case REACT_PORTAL_TYPE:\n          warnForMissingKey(child, returnFiber);\n          var key = child.key;\n\n          if (typeof key !== 'string') {\n            break;\n          }\n\n          if (knownKeys === null) {\n            knownKeys = new Set();\n            knownKeys.add(key);\n            break;\n          }\n\n          if (!knownKeys.has(key)) {\n            knownKeys.add(key);\n            break;\n          }\n\n          error('Encountered two children with the same key, `%s`. ' + 'Keys should be unique so that components maintain their identity ' + 'across updates. Non-unique keys may cause children to be ' + 'duplicated and/or omitted — the behavior is unsupported and ' + 'could change in a future version.', key);\n\n          break;\n\n        case REACT_LAZY_TYPE:\n          var payload = child._payload;\n          var init = child._init;\n          warnOnInvalidKey(init(payload), knownKeys, returnFiber);\n          break;\n      }\n    }\n\n    return knownKeys;\n  }\n\n  function reconcileChildrenArray(returnFiber, currentFirstChild, newChildren, lanes) {\n    // This algorithm can't optimize by searching from both ends since we\n    // don't have backpointers on fibers. I'm trying to see how far we can get\n    // with that model. If it ends up not being worth the tradeoffs, we can\n    // add it later.\n    // Even with a two ended optimization, we'd want to optimize for the case\n    // where there are few changes and brute force the comparison instead of\n    // going for the Map. It'd like to explore hitting that path first in\n    // forward-only mode and only go for the Map once we notice that we need\n    // lots of look ahead. This doesn't handle reversal as well as two ended\n    // search but that's unusual. Besides, for the two ended optimization to\n    // work on Iterables, we'd need to copy the whole set.\n    // In this first iteration, we'll just live with hitting the bad case\n    // (adding everything to a Map) in for every insert/move.\n    // If you change this code, also update reconcileChildrenIterator() which\n    // uses the same algorithm.\n    {\n      // First, validate keys.\n      var knownKeys = null;\n\n      for (var i = 0; i < newChildren.length; i++) {\n        var child = newChildren[i];\n        knownKeys = warnOnInvalidKey(child, knownKeys, returnFiber);\n      }\n    }\n\n    var resultingFirstChild = null;\n    var previousNewFiber = null;\n    var oldFiber = currentFirstChild;\n    var lastPlacedIndex = 0;\n    var newIdx = 0;\n    var nextOldFiber = null;\n\n    for (; oldFiber !== null && newIdx < newChildren.length; newIdx++) {\n      if (oldFiber.index > newIdx) {\n        nextOldFiber = oldFiber;\n        oldFiber = null;\n      } else {\n        nextOldFiber = oldFiber.sibling;\n      }\n\n      var newFiber = updateSlot(returnFiber, oldFiber, newChildren[newIdx], lanes);\n\n      if (newFiber === null) {\n        // TODO: This breaks on empty slots like null children. That's\n        // unfortunate because it triggers the slow path all the time. We need\n        // a better way to communicate whether this was a miss or null,\n        // boolean, undefined, etc.\n        if (oldFiber === null) {\n          oldFiber = nextOldFiber;\n        }\n\n        break;\n      }\n\n      if (shouldTrackSideEffects) {\n        if (oldFiber && newFiber.alternate === null) {\n          // We matched the slot, but we didn't reuse the existing fiber, so we\n          // need to delete the existing child.\n          deleteChild(returnFiber, oldFiber);\n        }\n      }\n\n      lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n\n      if (previousNewFiber === null) {\n        // TODO: Move out of the loop. This only happens for the first run.\n        resultingFirstChild = newFiber;\n      } else {\n        // TODO: Defer siblings if we're not at the right index for this slot.\n        // I.e. if we had null values before, then we want to defer this\n        // for each null value. However, we also don't want to call updateSlot\n        // with the previous one.\n        previousNewFiber.sibling = newFiber;\n      }\n\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n\n    if (newIdx === newChildren.length) {\n      // We've reached the end of the new children. We can delete the rest.\n      deleteRemainingChildren(returnFiber, oldFiber);\n\n      if (getIsHydrating()) {\n        var numberOfForks = newIdx;\n        pushTreeFork(returnFiber, numberOfForks);\n      }\n\n      return resultingFirstChild;\n    }\n\n    if (oldFiber === null) {\n      // If we don't have any more existing children we can choose a fast path\n      // since the rest will all be insertions.\n      for (; newIdx < newChildren.length; newIdx++) {\n        var _newFiber = createChild(returnFiber, newChildren[newIdx], lanes);\n\n        if (_newFiber === null) {\n          continue;\n        }\n\n        lastPlacedIndex = placeChild(_newFiber, lastPlacedIndex, newIdx);\n\n        if (previousNewFiber === null) {\n          // TODO: Move out of the loop. This only happens for the first run.\n          resultingFirstChild = _newFiber;\n        } else {\n          previousNewFiber.sibling = _newFiber;\n        }\n\n        previousNewFiber = _newFiber;\n      }\n\n      if (getIsHydrating()) {\n        var _numberOfForks = newIdx;\n        pushTreeFork(returnFiber, _numberOfForks);\n      }\n\n      return resultingFirstChild;\n    } // Add all children to a key map for quick lookups.\n\n\n    var existingChildren = mapRemainingChildren(returnFiber, oldFiber); // Keep scanning and use the map to restore deleted items as moves.\n\n    for (; newIdx < newChildren.length; newIdx++) {\n      var _newFiber2 = updateFromMap(existingChildren, returnFiber, newIdx, newChildren[newIdx], lanes);\n\n      if (_newFiber2 !== null) {\n        if (shouldTrackSideEffects) {\n          if (_newFiber2.alternate !== null) {\n            // The new fiber is a work in progress, but if there exists a\n            // current, that means that we reused the fiber. We need to delete\n            // it from the child list so that we don't add it to the deletion\n            // list.\n            existingChildren.delete(_newFiber2.key === null ? newIdx : _newFiber2.key);\n          }\n        }\n\n        lastPlacedIndex = placeChild(_newFiber2, lastPlacedIndex, newIdx);\n\n        if (previousNewFiber === null) {\n          resultingFirstChild = _newFiber2;\n        } else {\n          previousNewFiber.sibling = _newFiber2;\n        }\n\n        previousNewFiber = _newFiber2;\n      }\n    }\n\n    if (shouldTrackSideEffects) {\n      // Any existing children that weren't consumed above were deleted. We need\n      // to add them to the deletion list.\n      existingChildren.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    }\n\n    if (getIsHydrating()) {\n      var _numberOfForks2 = newIdx;\n      pushTreeFork(returnFiber, _numberOfForks2);\n    }\n\n    return resultingFirstChild;\n  }\n\n  function reconcileChildrenIterator(returnFiber, currentFirstChild, newChildrenIterable, lanes) {\n    // This is the same implementation as reconcileChildrenArray(),\n    // but using the iterator instead.\n    var iteratorFn = getIteratorFn(newChildrenIterable);\n\n    if (typeof iteratorFn !== 'function') {\n      throw new Error('An object is not an iterable. This error is likely caused by a bug in ' + 'React. Please file an issue.');\n    }\n\n    {\n      // We don't support rendering Generators because it's a mutation.\n      // See https://github.com/facebook/react/issues/12995\n      if (typeof Symbol === 'function' && // $FlowFixMe Flow doesn't know about toStringTag\n      newChildrenIterable[Symbol.toStringTag] === 'Generator') {\n        if (!didWarnAboutGenerators) {\n          error('Using Generators as children is unsupported and will likely yield ' + 'unexpected results because enumerating a generator mutates it. ' + 'You may convert it to an array with `Array.from()` or the ' + '`[...spread]` operator before rendering. Keep in mind ' + 'you might need to polyfill these features for older browsers.');\n        }\n\n        didWarnAboutGenerators = true;\n      } // Warn about using Maps as children\n\n\n      if (newChildrenIterable.entries === iteratorFn) {\n        if (!didWarnAboutMaps) {\n          error('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n        }\n\n        didWarnAboutMaps = true;\n      } // First, validate keys.\n      // We'll get a different iterator later for the main pass.\n\n\n      var _newChildren = iteratorFn.call(newChildrenIterable);\n\n      if (_newChildren) {\n        var knownKeys = null;\n\n        var _step = _newChildren.next();\n\n        for (; !_step.done; _step = _newChildren.next()) {\n          var child = _step.value;\n          knownKeys = warnOnInvalidKey(child, knownKeys, returnFiber);\n        }\n      }\n    }\n\n    var newChildren = iteratorFn.call(newChildrenIterable);\n\n    if (newChildren == null) {\n      throw new Error('An iterable object provided no iterator.');\n    }\n\n    var resultingFirstChild = null;\n    var previousNewFiber = null;\n    var oldFiber = currentFirstChild;\n    var lastPlacedIndex = 0;\n    var newIdx = 0;\n    var nextOldFiber = null;\n    var step = newChildren.next();\n\n    for (; oldFiber !== null && !step.done; newIdx++, step = newChildren.next()) {\n      if (oldFiber.index > newIdx) {\n        nextOldFiber = oldFiber;\n        oldFiber = null;\n      } else {\n        nextOldFiber = oldFiber.sibling;\n      }\n\n      var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n\n      if (newFiber === null) {\n        // TODO: This breaks on empty slots like null children. That's\n        // unfortunate because it triggers the slow path all the time. We need\n        // a better way to communicate whether this was a miss or null,\n        // boolean, undefined, etc.\n        if (oldFiber === null) {\n          oldFiber = nextOldFiber;\n        }\n\n        break;\n      }\n\n      if (shouldTrackSideEffects) {\n        if (oldFiber && newFiber.alternate === null) {\n          // We matched the slot, but we didn't reuse the existing fiber, so we\n          // need to delete the existing child.\n          deleteChild(returnFiber, oldFiber);\n        }\n      }\n\n      lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n\n      if (previousNewFiber === null) {\n        // TODO: Move out of the loop. This only happens for the first run.\n        resultingFirstChild = newFiber;\n      } else {\n        // TODO: Defer siblings if we're not at the right index for this slot.\n        // I.e. if we had null values before, then we want to defer this\n        // for each null value. However, we also don't want to call updateSlot\n        // with the previous one.\n        previousNewFiber.sibling = newFiber;\n      }\n\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n\n    if (step.done) {\n      // We've reached the end of the new children. We can delete the rest.\n      deleteRemainingChildren(returnFiber, oldFiber);\n\n      if (getIsHydrating()) {\n        var numberOfForks = newIdx;\n        pushTreeFork(returnFiber, numberOfForks);\n      }\n\n      return resultingFirstChild;\n    }\n\n    if (oldFiber === null) {\n      // If we don't have any more existing children we can choose a fast path\n      // since the rest will all be insertions.\n      for (; !step.done; newIdx++, step = newChildren.next()) {\n        var _newFiber3 = createChild(returnFiber, step.value, lanes);\n\n        if (_newFiber3 === null) {\n          continue;\n        }\n\n        lastPlacedIndex = placeChild(_newFiber3, lastPlacedIndex, newIdx);\n\n        if (previousNewFiber === null) {\n          // TODO: Move out of the loop. This only happens for the first run.\n          resultingFirstChild = _newFiber3;\n        } else {\n          previousNewFiber.sibling = _newFiber3;\n        }\n\n        previousNewFiber = _newFiber3;\n      }\n\n      if (getIsHydrating()) {\n        var _numberOfForks3 = newIdx;\n        pushTreeFork(returnFiber, _numberOfForks3);\n      }\n\n      return resultingFirstChild;\n    } // Add all children to a key map for quick lookups.\n\n\n    var existingChildren = mapRemainingChildren(returnFiber, oldFiber); // Keep scanning and use the map to restore deleted items as moves.\n\n    for (; !step.done; newIdx++, step = newChildren.next()) {\n      var _newFiber4 = updateFromMap(existingChildren, returnFiber, newIdx, step.value, lanes);\n\n      if (_newFiber4 !== null) {\n        if (shouldTrackSideEffects) {\n          if (_newFiber4.alternate !== null) {\n            // The new fiber is a work in progress, but if there exists a\n            // current, that means that we reused the fiber. We need to delete\n            // it from the child list so that we don't add it to the deletion\n            // list.\n            existingChildren.delete(_newFiber4.key === null ? newIdx : _newFiber4.key);\n          }\n        }\n\n        lastPlacedIndex = placeChild(_newFiber4, lastPlacedIndex, newIdx);\n\n        if (previousNewFiber === null) {\n          resultingFirstChild = _newFiber4;\n        } else {\n          previousNewFiber.sibling = _newFiber4;\n        }\n\n        previousNewFiber = _newFiber4;\n      }\n    }\n\n    if (shouldTrackSideEffects) {\n      // Any existing children that weren't consumed above were deleted. We need\n      // to add them to the deletion list.\n      existingChildren.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    }\n\n    if (getIsHydrating()) {\n      var _numberOfForks4 = newIdx;\n      pushTreeFork(returnFiber, _numberOfForks4);\n    }\n\n    return resultingFirstChild;\n  }\n\n  function reconcileSingleTextNode(returnFiber, currentFirstChild, textContent, lanes) {\n    // There's no need to check for keys on text nodes since we don't have a\n    // way to define them.\n    if (currentFirstChild !== null && currentFirstChild.tag === HostText) {\n      // We already have an existing node so let's just update it and delete\n      // the rest.\n      deleteRemainingChildren(returnFiber, currentFirstChild.sibling);\n      var existing = useFiber(currentFirstChild, textContent);\n      existing.return = returnFiber;\n      return existing;\n    } // The existing first child is not a text node so we need to create one\n    // and delete the existing ones.\n\n\n    deleteRemainingChildren(returnFiber, currentFirstChild);\n    var created = createFiberFromText(textContent, returnFiber.mode, lanes);\n    created.return = returnFiber;\n    return created;\n  }\n\n  function reconcileSingleElement(returnFiber, currentFirstChild, element, lanes) {\n    var key = element.key;\n    var child = currentFirstChild;\n\n    while (child !== null) {\n      // TODO: If key === null and child.key === null, then this only applies to\n      // the first item in the list.\n      if (child.key === key) {\n        var elementType = element.type;\n\n        if (elementType === REACT_FRAGMENT_TYPE) {\n          if (child.tag === Fragment) {\n            deleteRemainingChildren(returnFiber, child.sibling);\n            var existing = useFiber(child, element.props.children);\n            existing.return = returnFiber;\n\n            {\n              existing._debugSource = element._source;\n              existing._debugOwner = element._owner;\n            }\n\n            return existing;\n          }\n        } else {\n          if (child.elementType === elementType || ( // Keep this check inline so it only runs on the false path:\n           isCompatibleFamilyForHotReloading(child, element) ) || // Lazy types should reconcile their resolved type.\n          // We need to do this after the Hot Reloading check above,\n          // because hot reloading has different semantics than prod because\n          // it doesn't resuspend. So we can't let the call below suspend.\n          typeof elementType === 'object' && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === child.type) {\n            deleteRemainingChildren(returnFiber, child.sibling);\n\n            var _existing = useFiber(child, element.props);\n\n            _existing.ref = coerceRef(returnFiber, child, element);\n            _existing.return = returnFiber;\n\n            {\n              _existing._debugSource = element._source;\n              _existing._debugOwner = element._owner;\n            }\n\n            return _existing;\n          }\n        } // Didn't match.\n\n\n        deleteRemainingChildren(returnFiber, child);\n        break;\n      } else {\n        deleteChild(returnFiber, child);\n      }\n\n      child = child.sibling;\n    }\n\n    if (element.type === REACT_FRAGMENT_TYPE) {\n      var created = createFiberFromFragment(element.props.children, returnFiber.mode, lanes, element.key);\n      created.return = returnFiber;\n      return created;\n    } else {\n      var _created4 = createFiberFromElement(element, returnFiber.mode, lanes);\n\n      _created4.ref = coerceRef(returnFiber, currentFirstChild, element);\n      _created4.return = returnFiber;\n      return _created4;\n    }\n  }\n\n  function reconcileSinglePortal(returnFiber, currentFirstChild, portal, lanes) {\n    var key = portal.key;\n    var child = currentFirstChild;\n\n    while (child !== null) {\n      // TODO: If key === null and child.key === null, then this only applies to\n      // the first item in the list.\n      if (child.key === key) {\n        if (child.tag === HostPortal && child.stateNode.containerInfo === portal.containerInfo && child.stateNode.implementation === portal.implementation) {\n          deleteRemainingChildren(returnFiber, child.sibling);\n          var existing = useFiber(child, portal.children || []);\n          existing.return = returnFiber;\n          return existing;\n        } else {\n          deleteRemainingChildren(returnFiber, child);\n          break;\n        }\n      } else {\n        deleteChild(returnFiber, child);\n      }\n\n      child = child.sibling;\n    }\n\n    var created = createFiberFromPortal(portal, returnFiber.mode, lanes);\n    created.return = returnFiber;\n    return created;\n  } // This API will tag the children with the side-effect of the reconciliation\n  // itself. They will be added to the side-effect list as we pass through the\n  // children and the parent.\n\n\n  function reconcileChildFibers(returnFiber, currentFirstChild, newChild, lanes) {\n    // This function is not recursive.\n    // If the top level item is an array, we treat it as a set of children,\n    // not as a fragment. Nested arrays on the other hand will be treated as\n    // fragment nodes. Recursion happens at the normal flow.\n    // Handle top level unkeyed fragments as if they were arrays.\n    // This leads to an ambiguity between <>{[...]}</> and <>...</>.\n    // We treat the ambiguous cases above the same.\n    var isUnkeyedTopLevelFragment = typeof newChild === 'object' && newChild !== null && newChild.type === REACT_FRAGMENT_TYPE && newChild.key === null;\n\n    if (isUnkeyedTopLevelFragment) {\n      newChild = newChild.props.children;\n    } // Handle object types\n\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return placeSingleChild(reconcileSingleElement(returnFiber, currentFirstChild, newChild, lanes));\n\n        case REACT_PORTAL_TYPE:\n          return placeSingleChild(reconcileSinglePortal(returnFiber, currentFirstChild, newChild, lanes));\n\n        case REACT_LAZY_TYPE:\n          var payload = newChild._payload;\n          var init = newChild._init; // TODO: This function is supposed to be non-recursive.\n\n          return reconcileChildFibers(returnFiber, currentFirstChild, init(payload), lanes);\n      }\n\n      if (isArray(newChild)) {\n        return reconcileChildrenArray(returnFiber, currentFirstChild, newChild, lanes);\n      }\n\n      if (getIteratorFn(newChild)) {\n        return reconcileChildrenIterator(returnFiber, currentFirstChild, newChild, lanes);\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    if (typeof newChild === 'string' && newChild !== '' || typeof newChild === 'number') {\n      return placeSingleChild(reconcileSingleTextNode(returnFiber, currentFirstChild, '' + newChild, lanes));\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType(returnFiber);\n      }\n    } // Remaining cases are all treated as empty.\n\n\n    return deleteRemainingChildren(returnFiber, currentFirstChild);\n  }\n\n  return reconcileChildFibers;\n}\n\nvar reconcileChildFibers = ChildReconciler(true);\nvar mountChildFibers = ChildReconciler(false);\nfunction cloneChildFibers(current, workInProgress) {\n  if (current !== null && workInProgress.child !== current.child) {\n    throw new Error('Resuming work not yet implemented.');\n  }\n\n  if (workInProgress.child === null) {\n    return;\n  }\n\n  var currentChild = workInProgress.child;\n  var newChild = createWorkInProgress(currentChild, currentChild.pendingProps);\n  workInProgress.child = newChild;\n  newChild.return = workInProgress;\n\n  while (currentChild.sibling !== null) {\n    currentChild = currentChild.sibling;\n    newChild = newChild.sibling = createWorkInProgress(currentChild, currentChild.pendingProps);\n    newChild.return = workInProgress;\n  }\n\n  newChild.sibling = null;\n} // Reset a workInProgress child set to prepare it for a second pass.\n\nfunction resetChildFibers(workInProgress, lanes) {\n  var child = workInProgress.child;\n\n  while (child !== null) {\n    resetWorkInProgress(child, lanes);\n    child = child.sibling;\n  }\n}\n\nvar NO_CONTEXT = {};\nvar contextStackCursor$1 = createCursor(NO_CONTEXT);\nvar contextFiberStackCursor = createCursor(NO_CONTEXT);\nvar rootInstanceStackCursor = createCursor(NO_CONTEXT);\n\nfunction requiredContext(c) {\n  if (c === NO_CONTEXT) {\n    throw new Error('Expected host context to exist. This error is likely caused by a bug ' + 'in React. Please file an issue.');\n  }\n\n  return c;\n}\n\nfunction getRootHostContainer() {\n  var rootInstance = requiredContext(rootInstanceStackCursor.current);\n  return rootInstance;\n}\n\nfunction pushHostContainer(fiber, nextRootInstance) {\n  // Push current root instance onto the stack;\n  // This allows us to reset root when portals are popped.\n  push(rootInstanceStackCursor, nextRootInstance, fiber); // Track the context and the Fiber that provided it.\n  // This enables us to pop only Fibers that provide unique contexts.\n\n  push(contextFiberStackCursor, fiber, fiber); // Finally, we need to push the host context to the stack.\n  // However, we can't just call getRootHostContext() and push it because\n  // we'd have a different number of entries on the stack depending on\n  // whether getRootHostContext() throws somewhere in renderer code or not.\n  // So we push an empty value first. This lets us safely unwind on errors.\n\n  push(contextStackCursor$1, NO_CONTEXT, fiber);\n  var nextRootContext = getRootHostContext(nextRootInstance); // Now that we know this function doesn't throw, replace it.\n\n  pop(contextStackCursor$1, fiber);\n  push(contextStackCursor$1, nextRootContext, fiber);\n}\n\nfunction popHostContainer(fiber) {\n  pop(contextStackCursor$1, fiber);\n  pop(contextFiberStackCursor, fiber);\n  pop(rootInstanceStackCursor, fiber);\n}\n\nfunction getHostContext() {\n  var context = requiredContext(contextStackCursor$1.current);\n  return context;\n}\n\nfunction pushHostContext(fiber) {\n  var rootInstance = requiredContext(rootInstanceStackCursor.current);\n  var context = requiredContext(contextStackCursor$1.current);\n  var nextContext = getChildHostContext(context, fiber.type); // Don't push this Fiber's context unless it's unique.\n\n  if (context === nextContext) {\n    return;\n  } // Track the context and the Fiber that provided it.\n  // This enables us to pop only Fibers that provide unique contexts.\n\n\n  push(contextFiberStackCursor, fiber, fiber);\n  push(contextStackCursor$1, nextContext, fiber);\n}\n\nfunction popHostContext(fiber) {\n  // Do not pop unless this Fiber provided the current context.\n  // pushHostContext() only pushes Fibers that provide unique contexts.\n  if (contextFiberStackCursor.current !== fiber) {\n    return;\n  }\n\n  pop(contextStackCursor$1, fiber);\n  pop(contextFiberStackCursor, fiber);\n}\n\nvar DefaultSuspenseContext = 0; // The Suspense Context is split into two parts. The lower bits is\n// inherited deeply down the subtree. The upper bits only affect\n// this immediate suspense boundary and gets reset each new\n// boundary or suspense list.\n\nvar SubtreeSuspenseContextMask = 1; // Subtree Flags:\n// InvisibleParentSuspenseContext indicates that one of our parent Suspense\n// boundaries is not currently showing visible main content.\n// Either because it is already showing a fallback or is not mounted at all.\n// We can use this to determine if it is desirable to trigger a fallback at\n// the parent. If not, then we might need to trigger undesirable boundaries\n// and/or suspend the commit to avoid hiding the parent content.\n\nvar InvisibleParentSuspenseContext = 1; // Shallow Flags:\n// ForceSuspenseFallback can be used by SuspenseList to force newly added\n// items into their fallback state during one of the render passes.\n\nvar ForceSuspenseFallback = 2;\nvar suspenseStackCursor = createCursor(DefaultSuspenseContext);\nfunction hasSuspenseContext(parentContext, flag) {\n  return (parentContext & flag) !== 0;\n}\nfunction setDefaultShallowSuspenseContext(parentContext) {\n  return parentContext & SubtreeSuspenseContextMask;\n}\nfunction setShallowSuspenseContext(parentContext, shallowContext) {\n  return parentContext & SubtreeSuspenseContextMask | shallowContext;\n}\nfunction addSubtreeSuspenseContext(parentContext, subtreeContext) {\n  return parentContext | subtreeContext;\n}\nfunction pushSuspenseContext(fiber, newContext) {\n  push(suspenseStackCursor, newContext, fiber);\n}\nfunction popSuspenseContext(fiber) {\n  pop(suspenseStackCursor, fiber);\n}\n\nfunction shouldCaptureSuspense(workInProgress, hasInvisibleParent) {\n  // If it was the primary children that just suspended, capture and render the\n  // fallback. Otherwise, don't capture and bubble to the next boundary.\n  var nextState = workInProgress.memoizedState;\n\n  if (nextState !== null) {\n    if (nextState.dehydrated !== null) {\n      // A dehydrated boundary always captures.\n      return true;\n    }\n\n    return false;\n  }\n\n  var props = workInProgress.memoizedProps; // Regular boundaries always capture.\n\n  {\n    return true;\n  } // If it's a boundary we should avoid, then we prefer to bubble up to the\n}\nfunction findFirstSuspended(row) {\n  var node = row;\n\n  while (node !== null) {\n    if (node.tag === SuspenseComponent) {\n      var state = node.memoizedState;\n\n      if (state !== null) {\n        var dehydrated = state.dehydrated;\n\n        if (dehydrated === null || isSuspenseInstancePending(dehydrated) || isSuspenseInstanceFallback(dehydrated)) {\n          return node;\n        }\n      }\n    } else if (node.tag === SuspenseListComponent && // revealOrder undefined can't be trusted because it don't\n    // keep track of whether it suspended or not.\n    node.memoizedProps.revealOrder !== undefined) {\n      var didSuspend = (node.flags & DidCapture) !== NoFlags;\n\n      if (didSuspend) {\n        return node;\n      }\n    } else if (node.child !== null) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n\n    if (node === row) {\n      return null;\n    }\n\n    while (node.sibling === null) {\n      if (node.return === null || node.return === row) {\n        return null;\n      }\n\n      node = node.return;\n    }\n\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n\n  return null;\n}\n\nvar NoFlags$1 =\n/*   */\n0; // Represents whether effect should fire.\n\nvar HasEffect =\n/* */\n1; // Represents the phase in which the effect (not the clean-up) fires.\n\nvar Insertion =\n/*  */\n2;\nvar Layout =\n/*    */\n4;\nvar Passive$1 =\n/*   */\n8;\n\n// and should be reset before starting a new render.\n// This tracks which mutable sources need to be reset after a render.\n\nvar workInProgressSources = [];\nfunction resetWorkInProgressVersions() {\n  for (var i = 0; i < workInProgressSources.length; i++) {\n    var mutableSource = workInProgressSources[i];\n\n    {\n      mutableSource._workInProgressVersionPrimary = null;\n    }\n  }\n\n  workInProgressSources.length = 0;\n}\n// This ensures that the version used for server rendering matches the one\n// that is eventually read during hydration.\n// If they don't match there's a potential tear and a full deopt render is required.\n\nfunction registerMutableSourceForHydration(root, mutableSource) {\n  var getVersion = mutableSource._getVersion;\n  var version = getVersion(mutableSource._source); // TODO Clear this data once all pending hydration work is finished.\n  // Retaining it forever may interfere with GC.\n\n  if (root.mutableSourceEagerHydrationData == null) {\n    root.mutableSourceEagerHydrationData = [mutableSource, version];\n  } else {\n    root.mutableSourceEagerHydrationData.push(mutableSource, version);\n  }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher,\n    ReactCurrentBatchConfig$2 = ReactSharedInternals.ReactCurrentBatchConfig;\nvar didWarnAboutMismatchedHooksForComponent;\nvar didWarnUncachedGetSnapshot;\n\n{\n  didWarnAboutMismatchedHooksForComponent = new Set();\n}\n\n// These are set right before calling the component.\nvar renderLanes = NoLanes; // The work-in-progress fiber. I've named it differently to distinguish it from\n// the work-in-progress hook.\n\nvar currentlyRenderingFiber$1 = null; // Hooks are stored as a linked list on the fiber's memoizedState field. The\n// current hook list is the list that belongs to the current fiber. The\n// work-in-progress hook list is a new list that will be added to the\n// work-in-progress fiber.\n\nvar currentHook = null;\nvar workInProgressHook = null; // Whether an update was scheduled at any point during the render phase. This\n// does not get reset if we do another render pass; only when we're completely\n// finished evaluating this component. This is an optimization so we know\n// whether we need to clear render phase updates after a throw.\n\nvar didScheduleRenderPhaseUpdate = false; // Where an update was scheduled only during the current render pass. This\n// gets reset after each attempt.\n// TODO: Maybe there's some way to consolidate this with\n// `didScheduleRenderPhaseUpdate`. Or with `numberOfReRenders`.\n\nvar didScheduleRenderPhaseUpdateDuringThisPass = false; // Counts the number of useId hooks in this component.\n\nvar localIdCounter = 0; // Used for ids that are generated completely client-side (i.e. not during\n// hydration). This counter is global, so client ids are not stable across\n// render attempts.\n\nvar globalClientIdCounter = 0;\nvar RE_RENDER_LIMIT = 25; // In DEV, this is the name of the currently executing primitive hook\n\nvar currentHookNameInDev = null; // In DEV, this list ensures that hooks are called in the same order between renders.\n// The list stores the order of hooks used during the initial render (mount).\n// Subsequent renders (updates) reference this list.\n\nvar hookTypesDev = null;\nvar hookTypesUpdateIndexDev = -1; // In DEV, this tracks whether currently rendering component needs to ignore\n// the dependencies for Hooks that need them (e.g. useEffect or useMemo).\n// When true, such Hooks will always be \"remounted\". Only used during hot reload.\n\nvar ignorePreviousDependencies = false;\n\nfunction mountHookTypesDev() {\n  {\n    var hookName = currentHookNameInDev;\n\n    if (hookTypesDev === null) {\n      hookTypesDev = [hookName];\n    } else {\n      hookTypesDev.push(hookName);\n    }\n  }\n}\n\nfunction updateHookTypesDev() {\n  {\n    var hookName = currentHookNameInDev;\n\n    if (hookTypesDev !== null) {\n      hookTypesUpdateIndexDev++;\n\n      if (hookTypesDev[hookTypesUpdateIndexDev] !== hookName) {\n        warnOnHookMismatchInDev(hookName);\n      }\n    }\n  }\n}\n\nfunction checkDepsAreArrayDev(deps) {\n  {\n    if (deps !== undefined && deps !== null && !isArray(deps)) {\n      // Verify deps, but only on mount to avoid extra checks.\n      // It's unlikely their type would change as usually you define them inline.\n      error('%s received a final argument that is not an array (instead, received `%s`). When ' + 'specified, the final argument must be an array.', currentHookNameInDev, typeof deps);\n    }\n  }\n}\n\nfunction warnOnHookMismatchInDev(currentHookName) {\n  {\n    var componentName = getComponentNameFromFiber(currentlyRenderingFiber$1);\n\n    if (!didWarnAboutMismatchedHooksForComponent.has(componentName)) {\n      didWarnAboutMismatchedHooksForComponent.add(componentName);\n\n      if (hookTypesDev !== null) {\n        var table = '';\n        var secondColumnStart = 30;\n\n        for (var i = 0; i <= hookTypesUpdateIndexDev; i++) {\n          var oldHookName = hookTypesDev[i];\n          var newHookName = i === hookTypesUpdateIndexDev ? currentHookName : oldHookName;\n          var row = i + 1 + \". \" + oldHookName; // Extra space so second column lines up\n          // lol @ IE not supporting String#repeat\n\n          while (row.length < secondColumnStart) {\n            row += ' ';\n          }\n\n          row += newHookName + '\\n';\n          table += row;\n        }\n\n        error('React has detected a change in the order of Hooks called by %s. ' + 'This will lead to bugs and errors if not fixed. ' + 'For more information, read the Rules of Hooks: https://reactjs.org/link/rules-of-hooks\\n\\n' + '   Previous render            Next render\\n' + '   ------------------------------------------------------\\n' + '%s' + '   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n', componentName, table);\n      }\n    }\n  }\n}\n\nfunction throwInvalidHookError() {\n  throw new Error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n}\n\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n  {\n    if (ignorePreviousDependencies) {\n      // Only true when this component is being hot reloaded.\n      return false;\n    }\n  }\n\n  if (prevDeps === null) {\n    {\n      error('%s received a final argument during this render, but not during ' + 'the previous render. Even though the final argument is optional, ' + 'its type cannot change between renders.', currentHookNameInDev);\n    }\n\n    return false;\n  }\n\n  {\n    // Don't bother comparing lengths in prod because these arrays should be\n    // passed inline.\n    if (nextDeps.length !== prevDeps.length) {\n      error('The final argument passed to %s changed size between renders. The ' + 'order and size of this array must remain constant.\\n\\n' + 'Previous: %s\\n' + 'Incoming: %s', currentHookNameInDev, \"[\" + prevDeps.join(', ') + \"]\", \"[\" + nextDeps.join(', ') + \"]\");\n    }\n  }\n\n  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++) {\n    if (objectIs(nextDeps[i], prevDeps[i])) {\n      continue;\n    }\n\n    return false;\n  }\n\n  return true;\n}\n\nfunction renderWithHooks(current, workInProgress, Component, props, secondArg, nextRenderLanes) {\n  renderLanes = nextRenderLanes;\n  currentlyRenderingFiber$1 = workInProgress;\n\n  {\n    hookTypesDev = current !== null ? current._debugHookTypes : null;\n    hookTypesUpdateIndexDev = -1; // Used for hot reloading:\n\n    ignorePreviousDependencies = current !== null && current.type !== workInProgress.type;\n  }\n\n  workInProgress.memoizedState = null;\n  workInProgress.updateQueue = null;\n  workInProgress.lanes = NoLanes; // The following should have already been reset\n  // currentHook = null;\n  // workInProgressHook = null;\n  // didScheduleRenderPhaseUpdate = false;\n  // localIdCounter = 0;\n  // TODO Warn if no hooks are used at all during mount, then some are used during update.\n  // Currently we will identify the update render as a mount because memoizedState === null.\n  // This is tricky because it's valid for certain types of components (e.g. React.lazy)\n  // Using memoizedState to differentiate between mount/update only works if at least one stateful hook is used.\n  // Non-stateful hooks (e.g. context) don't get added to memoizedState,\n  // so memoizedState would be null during updates and mounts.\n\n  {\n    if (current !== null && current.memoizedState !== null) {\n      ReactCurrentDispatcher$1.current = HooksDispatcherOnUpdateInDEV;\n    } else if (hookTypesDev !== null) {\n      // This dispatcher handles an edge case where a component is updating,\n      // but no stateful hooks have been used.\n      // We want to match the production code behavior (which will use HooksDispatcherOnMount),\n      // but with the extra DEV validation to ensure hooks ordering hasn't changed.\n      // This dispatcher does that.\n      ReactCurrentDispatcher$1.current = HooksDispatcherOnMountWithHookTypesInDEV;\n    } else {\n      ReactCurrentDispatcher$1.current = HooksDispatcherOnMountInDEV;\n    }\n  }\n\n  var children = Component(props, secondArg); // Check if there was a render phase update\n\n  if (didScheduleRenderPhaseUpdateDuringThisPass) {\n    // Keep rendering in a loop for as long as render phase updates continue to\n    // be scheduled. Use a counter to prevent infinite loops.\n    var numberOfReRenders = 0;\n\n    do {\n      didScheduleRenderPhaseUpdateDuringThisPass = false;\n      localIdCounter = 0;\n\n      if (numberOfReRenders >= RE_RENDER_LIMIT) {\n        throw new Error('Too many re-renders. React limits the number of renders to prevent ' + 'an infinite loop.');\n      }\n\n      numberOfReRenders += 1;\n\n      {\n        // Even when hot reloading, allow dependencies to stabilize\n        // after first render to prevent infinite render phase updates.\n        ignorePreviousDependencies = false;\n      } // Start over from the beginning of the list\n\n\n      currentHook = null;\n      workInProgressHook = null;\n      workInProgress.updateQueue = null;\n\n      {\n        // Also validate hook order for cascading updates.\n        hookTypesUpdateIndexDev = -1;\n      }\n\n      ReactCurrentDispatcher$1.current =  HooksDispatcherOnRerenderInDEV ;\n      children = Component(props, secondArg);\n    } while (didScheduleRenderPhaseUpdateDuringThisPass);\n  } // We can assume the previous dispatcher is always this one, since we set it\n  // at the beginning of the render phase and there's no re-entrance.\n\n\n  ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;\n\n  {\n    workInProgress._debugHookTypes = hookTypesDev;\n  } // This check uses currentHook so that it works the same in DEV and prod bundles.\n  // hookTypesDev could catch more cases (e.g. context) but only in DEV bundles.\n\n\n  var didRenderTooFewHooks = currentHook !== null && currentHook.next !== null;\n  renderLanes = NoLanes;\n  currentlyRenderingFiber$1 = null;\n  currentHook = null;\n  workInProgressHook = null;\n\n  {\n    currentHookNameInDev = null;\n    hookTypesDev = null;\n    hookTypesUpdateIndexDev = -1; // Confirm that a static flag was not added or removed since the last\n    // render. If this fires, it suggests that we incorrectly reset the static\n    // flags in some other part of the codebase. This has happened before, for\n    // example, in the SuspenseList implementation.\n\n    if (current !== null && (current.flags & StaticMask) !== (workInProgress.flags & StaticMask) && // Disable this warning in legacy mode, because legacy Suspense is weird\n    // and creates false positives. To make this work in legacy mode, we'd\n    // need to mark fibers that commit in an incomplete state, somehow. For\n    // now I'll disable the warning that most of the bugs that would trigger\n    // it are either exclusive to concurrent mode or exist in both.\n    (current.mode & ConcurrentMode) !== NoMode) {\n      error('Internal React error: Expected static flag was missing. Please ' + 'notify the React team.');\n    }\n  }\n\n  didScheduleRenderPhaseUpdate = false; // This is reset by checkDidRenderIdHook\n  // localIdCounter = 0;\n\n  if (didRenderTooFewHooks) {\n    throw new Error('Rendered fewer hooks than expected. This may be caused by an accidental ' + 'early return statement.');\n  }\n\n  return children;\n}\nfunction checkDidRenderIdHook() {\n  // This should be called immediately after every renderWithHooks call.\n  // Conceptually, it's part of the return value of renderWithHooks; it's only a\n  // separate function to avoid using an array tuple.\n  var didRenderIdHook = localIdCounter !== 0;\n  localIdCounter = 0;\n  return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n  workInProgress.updateQueue = current.updateQueue; // TODO: Don't need to reset the flags here, because they're reset in the\n  // complete phase (bubbleProperties).\n\n  if ( (workInProgress.mode & StrictEffectsMode) !== NoMode) {\n    workInProgress.flags &= ~(MountPassiveDev | MountLayoutDev | Passive | Update);\n  } else {\n    workInProgress.flags &= ~(Passive | Update);\n  }\n\n  current.lanes = removeLanes(current.lanes, lanes);\n}\nfunction resetHooksAfterThrow() {\n  // We can assume the previous dispatcher is always this one, since we set it\n  // at the beginning of the render phase and there's no re-entrance.\n  ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;\n\n  if (didScheduleRenderPhaseUpdate) {\n    // There were render phase updates. These are only valid for this render\n    // phase, which we are now aborting. Remove the updates from the queues so\n    // they do not persist to the next render. Do not remove updates from hooks\n    // that weren't processed.\n    //\n    // Only reset the updates from the queue if it has a clone. If it does\n    // not have a clone, that means it wasn't processed, and the updates were\n    // scheduled before we entered the render phase.\n    var hook = currentlyRenderingFiber$1.memoizedState;\n\n    while (hook !== null) {\n      var queue = hook.queue;\n\n      if (queue !== null) {\n        queue.pending = null;\n      }\n\n      hook = hook.next;\n    }\n\n    didScheduleRenderPhaseUpdate = false;\n  }\n\n  renderLanes = NoLanes;\n  currentlyRenderingFiber$1 = null;\n  currentHook = null;\n  workInProgressHook = null;\n\n  {\n    hookTypesDev = null;\n    hookTypesUpdateIndexDev = -1;\n    currentHookNameInDev = null;\n    isUpdatingOpaqueValueInRenderPhase = false;\n  }\n\n  didScheduleRenderPhaseUpdateDuringThisPass = false;\n  localIdCounter = 0;\n}\n\nfunction mountWorkInProgressHook() {\n  var hook = {\n    memoizedState: null,\n    baseState: null,\n    baseQueue: null,\n    queue: null,\n    next: null\n  };\n\n  if (workInProgressHook === null) {\n    // This is the first hook in the list\n    currentlyRenderingFiber$1.memoizedState = workInProgressHook = hook;\n  } else {\n    // Append to the end of the list\n    workInProgressHook = workInProgressHook.next = hook;\n  }\n\n  return workInProgressHook;\n}\n\nfunction updateWorkInProgressHook() {\n  // This function is used both for updates and for re-renders triggered by a\n  // render phase update. It assumes there is either a current hook we can\n  // clone, or a work-in-progress hook from a previous render pass that we can\n  // use as a base. When we reach the end of the base list, we must switch to\n  // the dispatcher used for mounts.\n  var nextCurrentHook;\n\n  if (currentHook === null) {\n    var current = currentlyRenderingFiber$1.alternate;\n\n    if (current !== null) {\n      nextCurrentHook = current.memoizedState;\n    } else {\n      nextCurrentHook = null;\n    }\n  } else {\n    nextCurrentHook = currentHook.next;\n  }\n\n  var nextWorkInProgressHook;\n\n  if (workInProgressHook === null) {\n    nextWorkInProgressHook = currentlyRenderingFiber$1.memoizedState;\n  } else {\n    nextWorkInProgressHook = workInProgressHook.next;\n  }\n\n  if (nextWorkInProgressHook !== null) {\n    // There's already a work-in-progress. Reuse it.\n    workInProgressHook = nextWorkInProgressHook;\n    nextWorkInProgressHook = workInProgressHook.next;\n    currentHook = nextCurrentHook;\n  } else {\n    // Clone from the current hook.\n    if (nextCurrentHook === null) {\n      throw new Error('Rendered more hooks than during the previous render.');\n    }\n\n    currentHook = nextCurrentHook;\n    var newHook = {\n      memoizedState: currentHook.memoizedState,\n      baseState: currentHook.baseState,\n      baseQueue: currentHook.baseQueue,\n      queue: currentHook.queue,\n      next: null\n    };\n\n    if (workInProgressHook === null) {\n      // This is the first hook in the list.\n      currentlyRenderingFiber$1.memoizedState = workInProgressHook = newHook;\n    } else {\n      // Append to the end of the list.\n      workInProgressHook = workInProgressHook.next = newHook;\n    }\n  }\n\n  return workInProgressHook;\n}\n\nfunction createFunctionComponentUpdateQueue() {\n  return {\n    lastEffect: null,\n    stores: null\n  };\n}\n\nfunction basicStateReducer(state, action) {\n  // $FlowFixMe: Flow doesn't like mixed types\n  return typeof action === 'function' ? action(state) : action;\n}\n\nfunction mountReducer(reducer, initialArg, init) {\n  var hook = mountWorkInProgressHook();\n  var initialState;\n\n  if (init !== undefined) {\n    initialState = init(initialArg);\n  } else {\n    initialState = initialArg;\n  }\n\n  hook.memoizedState = hook.baseState = initialState;\n  var queue = {\n    pending: null,\n    interleaved: null,\n    lanes: NoLanes,\n    dispatch: null,\n    lastRenderedReducer: reducer,\n    lastRenderedState: initialState\n  };\n  hook.queue = queue;\n  var dispatch = queue.dispatch = dispatchReducerAction.bind(null, currentlyRenderingFiber$1, queue);\n  return [hook.memoizedState, dispatch];\n}\n\nfunction updateReducer(reducer, initialArg, init) {\n  var hook = updateWorkInProgressHook();\n  var queue = hook.queue;\n\n  if (queue === null) {\n    throw new Error('Should have a queue. This is likely a bug in React. Please file an issue.');\n  }\n\n  queue.lastRenderedReducer = reducer;\n  var current = currentHook; // The last rebase update that is NOT part of the base state.\n\n  var baseQueue = current.baseQueue; // The last pending update that hasn't been processed yet.\n\n  var pendingQueue = queue.pending;\n\n  if (pendingQueue !== null) {\n    // We have new updates that haven't been processed yet.\n    // We'll add them to the base queue.\n    if (baseQueue !== null) {\n      // Merge the pending queue and the base queue.\n      var baseFirst = baseQueue.next;\n      var pendingFirst = pendingQueue.next;\n      baseQueue.next = pendingFirst;\n      pendingQueue.next = baseFirst;\n    }\n\n    {\n      if (current.baseQueue !== baseQueue) {\n        // Internal invariant that should never happen, but feasibly could in\n        // the future if we implement resuming, or some form of that.\n        error('Internal error: Expected work-in-progress queue to be a clone. ' + 'This is a bug in React.');\n      }\n    }\n\n    current.baseQueue = baseQueue = pendingQueue;\n    queue.pending = null;\n  }\n\n  if (baseQueue !== null) {\n    // We have a queue to process.\n    var first = baseQueue.next;\n    var newState = current.baseState;\n    var newBaseState = null;\n    var newBaseQueueFirst = null;\n    var newBaseQueueLast = null;\n    var update = first;\n\n    do {\n      var updateLane = update.lane;\n\n      if (!isSubsetOfLanes(renderLanes, updateLane)) {\n        // Priority is insufficient. Skip this update. If this is the first\n        // skipped update, the previous update/state is the new base\n        // update/state.\n        var clone = {\n          lane: updateLane,\n          action: update.action,\n          hasEagerState: update.hasEagerState,\n          eagerState: update.eagerState,\n          next: null\n        };\n\n        if (newBaseQueueLast === null) {\n          newBaseQueueFirst = newBaseQueueLast = clone;\n          newBaseState = newState;\n        } else {\n          newBaseQueueLast = newBaseQueueLast.next = clone;\n        } // Update the remaining priority in the queue.\n        // TODO: Don't need to accumulate this. Instead, we can remove\n        // renderLanes from the original lanes.\n\n\n        currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, updateLane);\n        markSkippedUpdateLanes(updateLane);\n      } else {\n        // This update does have sufficient priority.\n        if (newBaseQueueLast !== null) {\n          var _clone = {\n            // This update is going to be committed so we never want uncommit\n            // it. Using NoLane works because 0 is a subset of all bitmasks, so\n            // this will never be skipped by the check above.\n            lane: NoLane,\n            action: update.action,\n            hasEagerState: update.hasEagerState,\n            eagerState: update.eagerState,\n            next: null\n          };\n          newBaseQueueLast = newBaseQueueLast.next = _clone;\n        } // Process this update.\n\n\n        if (update.hasEagerState) {\n          // If this update is a state update (not a reducer) and was processed eagerly,\n          // we can use the eagerly computed state\n          newState = update.eagerState;\n        } else {\n          var action = update.action;\n          newState = reducer(newState, action);\n        }\n      }\n\n      update = update.next;\n    } while (update !== null && update !== first);\n\n    if (newBaseQueueLast === null) {\n      newBaseState = newState;\n    } else {\n      newBaseQueueLast.next = newBaseQueueFirst;\n    } // Mark that the fiber performed work, but only if the new state is\n    // different from the current state.\n\n\n    if (!objectIs(newState, hook.memoizedState)) {\n      markWorkInProgressReceivedUpdate();\n    }\n\n    hook.memoizedState = newState;\n    hook.baseState = newBaseState;\n    hook.baseQueue = newBaseQueueLast;\n    queue.lastRenderedState = newState;\n  } // Interleaved updates are stored on a separate queue. We aren't going to\n  // process them during this render, but we do need to track which lanes\n  // are remaining.\n\n\n  var lastInterleaved = queue.interleaved;\n\n  if (lastInterleaved !== null) {\n    var interleaved = lastInterleaved;\n\n    do {\n      var interleavedLane = interleaved.lane;\n      currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, interleavedLane);\n      markSkippedUpdateLanes(interleavedLane);\n      interleaved = interleaved.next;\n    } while (interleaved !== lastInterleaved);\n  } else if (baseQueue === null) {\n    // `queue.lanes` is used for entangling transitions. We can set it back to\n    // zero once the queue is empty.\n    queue.lanes = NoLanes;\n  }\n\n  var dispatch = queue.dispatch;\n  return [hook.memoizedState, dispatch];\n}\n\nfunction rerenderReducer(reducer, initialArg, init) {\n  var hook = updateWorkInProgressHook();\n  var queue = hook.queue;\n\n  if (queue === null) {\n    throw new Error('Should have a queue. This is likely a bug in React. Please file an issue.');\n  }\n\n  queue.lastRenderedReducer = reducer; // This is a re-render. Apply the new render phase updates to the previous\n  // work-in-progress hook.\n\n  var dispatch = queue.dispatch;\n  var lastRenderPhaseUpdate = queue.pending;\n  var newState = hook.memoizedState;\n\n  if (lastRenderPhaseUpdate !== null) {\n    // The queue doesn't persist past this render pass.\n    queue.pending = null;\n    var firstRenderPhaseUpdate = lastRenderPhaseUpdate.next;\n    var update = firstRenderPhaseUpdate;\n\n    do {\n      // Process this render phase update. We don't have to check the\n      // priority because it will always be the same as the current\n      // render's.\n      var action = update.action;\n      newState = reducer(newState, action);\n      update = update.next;\n    } while (update !== firstRenderPhaseUpdate); // Mark that the fiber performed work, but only if the new state is\n    // different from the current state.\n\n\n    if (!objectIs(newState, hook.memoizedState)) {\n      markWorkInProgressReceivedUpdate();\n    }\n\n    hook.memoizedState = newState; // Don't persist the state accumulated from the render phase updates to\n    // the base state unless the queue is empty.\n    // TODO: Not sure if this is the desired semantics, but it's what we\n    // do for gDSFP. I can't remember why.\n\n    if (hook.baseQueue === null) {\n      hook.baseState = newState;\n    }\n\n    queue.lastRenderedState = newState;\n  }\n\n  return [newState, dispatch];\n}\n\nfunction mountMutableSource(source, getSnapshot, subscribe) {\n  {\n    return undefined;\n  }\n}\n\nfunction updateMutableSource(source, getSnapshot, subscribe) {\n  {\n    return undefined;\n  }\n}\n\nfunction mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  var fiber = currentlyRenderingFiber$1;\n  var hook = mountWorkInProgressHook();\n  var nextSnapshot;\n  var isHydrating = getIsHydrating();\n\n  if (isHydrating) {\n    if (getServerSnapshot === undefined) {\n      throw new Error('Missing getServerSnapshot, which is required for ' + 'server-rendered content. Will revert to client rendering.');\n    }\n\n    nextSnapshot = getServerSnapshot();\n\n    {\n      if (!didWarnUncachedGetSnapshot) {\n        if (nextSnapshot !== getServerSnapshot()) {\n          error('The result of getServerSnapshot should be cached to avoid an infinite loop');\n\n          didWarnUncachedGetSnapshot = true;\n        }\n      }\n    }\n  } else {\n    nextSnapshot = getSnapshot();\n\n    {\n      if (!didWarnUncachedGetSnapshot) {\n        var cachedSnapshot = getSnapshot();\n\n        if (!objectIs(nextSnapshot, cachedSnapshot)) {\n          error('The result of getSnapshot should be cached to avoid an infinite loop');\n\n          didWarnUncachedGetSnapshot = true;\n        }\n      }\n    } // Unless we're rendering a blocking lane, schedule a consistency check.\n    // Right before committing, we will walk the tree and check if any of the\n    // stores were mutated.\n    //\n    // We won't do this if we're hydrating server-rendered content, because if\n    // the content is stale, it's already visible anyway. Instead we'll patch\n    // it up in a passive effect.\n\n\n    var root = getWorkInProgressRoot();\n\n    if (root === null) {\n      throw new Error('Expected a work-in-progress root. This is a bug in React. Please file an issue.');\n    }\n\n    if (!includesBlockingLane(root, renderLanes)) {\n      pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);\n    }\n  } // Read the current snapshot from the store on every render. This breaks the\n  // normal rules of React, and only works because store updates are\n  // always synchronous.\n\n\n  hook.memoizedState = nextSnapshot;\n  var inst = {\n    value: nextSnapshot,\n    getSnapshot: getSnapshot\n  };\n  hook.queue = inst; // Schedule an effect to subscribe to the store.\n\n  mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [subscribe]); // Schedule an effect to update the mutable instance fields. We will update\n  // this whenever subscribe, getSnapshot, or value changes. Because there's no\n  // clean-up function, and we track the deps correctly, we can call pushEffect\n  // directly, without storing any additional state. For the same reason, we\n  // don't need to set a static flag, either.\n  // TODO: We can move this to the passive phase once we add a pre-commit\n  // consistency check. See the next comment.\n\n  fiber.flags |= Passive;\n  pushEffect(HasEffect | Passive$1, updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot), undefined, null);\n  return nextSnapshot;\n}\n\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  var fiber = currentlyRenderingFiber$1;\n  var hook = updateWorkInProgressHook(); // Read the current snapshot from the store on every render. This breaks the\n  // normal rules of React, and only works because store updates are\n  // always synchronous.\n\n  var nextSnapshot = getSnapshot();\n\n  {\n    if (!didWarnUncachedGetSnapshot) {\n      var cachedSnapshot = getSnapshot();\n\n      if (!objectIs(nextSnapshot, cachedSnapshot)) {\n        error('The result of getSnapshot should be cached to avoid an infinite loop');\n\n        didWarnUncachedGetSnapshot = true;\n      }\n    }\n  }\n\n  var prevSnapshot = hook.memoizedState;\n  var snapshotChanged = !objectIs(prevSnapshot, nextSnapshot);\n\n  if (snapshotChanged) {\n    hook.memoizedState = nextSnapshot;\n    markWorkInProgressReceivedUpdate();\n  }\n\n  var inst = hook.queue;\n  updateEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [subscribe]); // Whenever getSnapshot or subscribe changes, we need to check in the\n  // commit phase if there was an interleaved mutation. In concurrent mode\n  // this can happen all the time, but even in synchronous mode, an earlier\n  // effect may have mutated the store.\n\n  if (inst.getSnapshot !== getSnapshot || snapshotChanged || // Check if the susbcribe function changed. We can save some memory by\n  // checking whether we scheduled a subscription effect above.\n  workInProgressHook !== null && workInProgressHook.memoizedState.tag & HasEffect) {\n    fiber.flags |= Passive;\n    pushEffect(HasEffect | Passive$1, updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot), undefined, null); // Unless we're rendering a blocking lane, schedule a consistency check.\n    // Right before committing, we will walk the tree and check if any of the\n    // stores were mutated.\n\n    var root = getWorkInProgressRoot();\n\n    if (root === null) {\n      throw new Error('Expected a work-in-progress root. This is a bug in React. Please file an issue.');\n    }\n\n    if (!includesBlockingLane(root, renderLanes)) {\n      pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);\n    }\n  }\n\n  return nextSnapshot;\n}\n\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n  fiber.flags |= StoreConsistency;\n  var check = {\n    getSnapshot: getSnapshot,\n    value: renderedSnapshot\n  };\n  var componentUpdateQueue = currentlyRenderingFiber$1.updateQueue;\n\n  if (componentUpdateQueue === null) {\n    componentUpdateQueue = createFunctionComponentUpdateQueue();\n    currentlyRenderingFiber$1.updateQueue = componentUpdateQueue;\n    componentUpdateQueue.stores = [check];\n  } else {\n    var stores = componentUpdateQueue.stores;\n\n    if (stores === null) {\n      componentUpdateQueue.stores = [check];\n    } else {\n      stores.push(check);\n    }\n  }\n}\n\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n  // These are updated in the passive phase\n  inst.value = nextSnapshot;\n  inst.getSnapshot = getSnapshot; // Something may have been mutated in between render and commit. This could\n  // have been in an event that fired before the passive effects, or it could\n  // have been in a layout effect. In that case, we would have used the old\n  // snapsho and getSnapshot values to bail out. We need to check one more time.\n\n  if (checkIfSnapshotChanged(inst)) {\n    // Force a re-render.\n    forceStoreRerender(fiber);\n  }\n}\n\nfunction subscribeToStore(fiber, inst, subscribe) {\n  var handleStoreChange = function () {\n    // The store changed. Check if the snapshot changed since the last time we\n    // read from the store.\n    if (checkIfSnapshotChanged(inst)) {\n      // Force a re-render.\n      forceStoreRerender(fiber);\n    }\n  }; // Subscribe to the store and return a clean-up function.\n\n\n  return subscribe(handleStoreChange);\n}\n\nfunction checkIfSnapshotChanged(inst) {\n  var latestGetSnapshot = inst.getSnapshot;\n  var prevValue = inst.value;\n\n  try {\n    var nextValue = latestGetSnapshot();\n    return !objectIs(prevValue, nextValue);\n  } catch (error) {\n    return true;\n  }\n}\n\nfunction forceStoreRerender(fiber) {\n  var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n  if (root !== null) {\n    scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n  }\n}\n\nfunction mountState(initialState) {\n  var hook = mountWorkInProgressHook();\n\n  if (typeof initialState === 'function') {\n    // $FlowFixMe: Flow doesn't like mixed types\n    initialState = initialState();\n  }\n\n  hook.memoizedState = hook.baseState = initialState;\n  var queue = {\n    pending: null,\n    interleaved: null,\n    lanes: NoLanes,\n    dispatch: null,\n    lastRenderedReducer: basicStateReducer,\n    lastRenderedState: initialState\n  };\n  hook.queue = queue;\n  var dispatch = queue.dispatch = dispatchSetState.bind(null, currentlyRenderingFiber$1, queue);\n  return [hook.memoizedState, dispatch];\n}\n\nfunction updateState(initialState) {\n  return updateReducer(basicStateReducer);\n}\n\nfunction rerenderState(initialState) {\n  return rerenderReducer(basicStateReducer);\n}\n\nfunction pushEffect(tag, create, destroy, deps) {\n  var effect = {\n    tag: tag,\n    create: create,\n    destroy: destroy,\n    deps: deps,\n    // Circular\n    next: null\n  };\n  var componentUpdateQueue = currentlyRenderingFiber$1.updateQueue;\n\n  if (componentUpdateQueue === null) {\n    componentUpdateQueue = createFunctionComponentUpdateQueue();\n    currentlyRenderingFiber$1.updateQueue = componentUpdateQueue;\n    componentUpdateQueue.lastEffect = effect.next = effect;\n  } else {\n    var lastEffect = componentUpdateQueue.lastEffect;\n\n    if (lastEffect === null) {\n      componentUpdateQueue.lastEffect = effect.next = effect;\n    } else {\n      var firstEffect = lastEffect.next;\n      lastEffect.next = effect;\n      effect.next = firstEffect;\n      componentUpdateQueue.lastEffect = effect;\n    }\n  }\n\n  return effect;\n}\n\nfunction mountRef(initialValue) {\n  var hook = mountWorkInProgressHook();\n\n  {\n    var _ref2 = {\n      current: initialValue\n    };\n    hook.memoizedState = _ref2;\n    return _ref2;\n  }\n}\n\nfunction updateRef(initialValue) {\n  var hook = updateWorkInProgressHook();\n  return hook.memoizedState;\n}\n\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = mountWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  currentlyRenderingFiber$1.flags |= fiberFlags;\n  hook.memoizedState = pushEffect(HasEffect | hookFlags, create, undefined, nextDeps);\n}\n\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = updateWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  var destroy = undefined;\n\n  if (currentHook !== null) {\n    var prevEffect = currentHook.memoizedState;\n    destroy = prevEffect.destroy;\n\n    if (nextDeps !== null) {\n      var prevDeps = prevEffect.deps;\n\n      if (areHookInputsEqual(nextDeps, prevDeps)) {\n        hook.memoizedState = pushEffect(hookFlags, create, destroy, nextDeps);\n        return;\n      }\n    }\n  }\n\n  currentlyRenderingFiber$1.flags |= fiberFlags;\n  hook.memoizedState = pushEffect(HasEffect | hookFlags, create, destroy, nextDeps);\n}\n\nfunction mountEffect(create, deps) {\n  if ( (currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {\n    return mountEffectImpl(MountPassiveDev | Passive | PassiveStatic, Passive$1, create, deps);\n  } else {\n    return mountEffectImpl(Passive | PassiveStatic, Passive$1, create, deps);\n  }\n}\n\nfunction updateEffect(create, deps) {\n  return updateEffectImpl(Passive, Passive$1, create, deps);\n}\n\nfunction mountInsertionEffect(create, deps) {\n  return mountEffectImpl(Update, Insertion, create, deps);\n}\n\nfunction updateInsertionEffect(create, deps) {\n  return updateEffectImpl(Update, Insertion, create, deps);\n}\n\nfunction mountLayoutEffect(create, deps) {\n  var fiberFlags = Update;\n\n  {\n    fiberFlags |= LayoutStatic;\n  }\n\n  if ( (currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {\n    fiberFlags |= MountLayoutDev;\n  }\n\n  return mountEffectImpl(fiberFlags, Layout, create, deps);\n}\n\nfunction updateLayoutEffect(create, deps) {\n  return updateEffectImpl(Update, Layout, create, deps);\n}\n\nfunction imperativeHandleEffect(create, ref) {\n  if (typeof ref === 'function') {\n    var refCallback = ref;\n\n    var _inst = create();\n\n    refCallback(_inst);\n    return function () {\n      refCallback(null);\n    };\n  } else if (ref !== null && ref !== undefined) {\n    var refObject = ref;\n\n    {\n      if (!refObject.hasOwnProperty('current')) {\n        error('Expected useImperativeHandle() first argument to either be a ' + 'ref callback or React.createRef() object. Instead received: %s.', 'an object with keys {' + Object.keys(refObject).join(', ') + '}');\n      }\n    }\n\n    var _inst2 = create();\n\n    refObject.current = _inst2;\n    return function () {\n      refObject.current = null;\n    };\n  }\n}\n\nfunction mountImperativeHandle(ref, create, deps) {\n  {\n    if (typeof create !== 'function') {\n      error('Expected useImperativeHandle() second argument to be a function ' + 'that creates a handle. Instead received: %s.', create !== null ? typeof create : 'null');\n    }\n  } // TODO: If deps are provided, should we skip comparing the ref itself?\n\n\n  var effectDeps = deps !== null && deps !== undefined ? deps.concat([ref]) : null;\n  var fiberFlags = Update;\n\n  {\n    fiberFlags |= LayoutStatic;\n  }\n\n  if ( (currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {\n    fiberFlags |= MountLayoutDev;\n  }\n\n  return mountEffectImpl(fiberFlags, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);\n}\n\nfunction updateImperativeHandle(ref, create, deps) {\n  {\n    if (typeof create !== 'function') {\n      error('Expected useImperativeHandle() second argument to be a function ' + 'that creates a handle. Instead received: %s.', create !== null ? typeof create : 'null');\n    }\n  } // TODO: If deps are provided, should we skip comparing the ref itself?\n\n\n  var effectDeps = deps !== null && deps !== undefined ? deps.concat([ref]) : null;\n  return updateEffectImpl(Update, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);\n}\n\nfunction mountDebugValue(value, formatterFn) {// This hook is normally a no-op.\n  // The react-debug-hooks package injects its own implementation\n  // so that e.g. DevTools can display custom hook values.\n}\n\nvar updateDebugValue = mountDebugValue;\n\nfunction mountCallback(callback, deps) {\n  var hook = mountWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  hook.memoizedState = [callback, nextDeps];\n  return callback;\n}\n\nfunction updateCallback(callback, deps) {\n  var hook = updateWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  var prevState = hook.memoizedState;\n\n  if (prevState !== null) {\n    if (nextDeps !== null) {\n      var prevDeps = prevState[1];\n\n      if (areHookInputsEqual(nextDeps, prevDeps)) {\n        return prevState[0];\n      }\n    }\n  }\n\n  hook.memoizedState = [callback, nextDeps];\n  return callback;\n}\n\nfunction mountMemo(nextCreate, deps) {\n  var hook = mountWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  var nextValue = nextCreate();\n  hook.memoizedState = [nextValue, nextDeps];\n  return nextValue;\n}\n\nfunction updateMemo(nextCreate, deps) {\n  var hook = updateWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  var prevState = hook.memoizedState;\n\n  if (prevState !== null) {\n    // Assume these are defined. If they're not, areHookInputsEqual will warn.\n    if (nextDeps !== null) {\n      var prevDeps = prevState[1];\n\n      if (areHookInputsEqual(nextDeps, prevDeps)) {\n        return prevState[0];\n      }\n    }\n  }\n\n  var nextValue = nextCreate();\n  hook.memoizedState = [nextValue, nextDeps];\n  return nextValue;\n}\n\nfunction mountDeferredValue(value) {\n  var hook = mountWorkInProgressHook();\n  hook.memoizedState = value;\n  return value;\n}\n\nfunction updateDeferredValue(value) {\n  var hook = updateWorkInProgressHook();\n  var resolvedCurrentHook = currentHook;\n  var prevValue = resolvedCurrentHook.memoizedState;\n  return updateDeferredValueImpl(hook, prevValue, value);\n}\n\nfunction rerenderDeferredValue(value) {\n  var hook = updateWorkInProgressHook();\n\n  if (currentHook === null) {\n    // This is a rerender during a mount.\n    hook.memoizedState = value;\n    return value;\n  } else {\n    // This is a rerender during an update.\n    var prevValue = currentHook.memoizedState;\n    return updateDeferredValueImpl(hook, prevValue, value);\n  }\n}\n\nfunction updateDeferredValueImpl(hook, prevValue, value) {\n  var shouldDeferValue = !includesOnlyNonUrgentLanes(renderLanes);\n\n  if (shouldDeferValue) {\n    // This is an urgent update. If the value has changed, keep using the\n    // previous value and spawn a deferred render to update it later.\n    if (!objectIs(value, prevValue)) {\n      // Schedule a deferred render\n      var deferredLane = claimNextTransitionLane();\n      currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, deferredLane);\n      markSkippedUpdateLanes(deferredLane); // Set this to true to indicate that the rendered value is inconsistent\n      // from the latest value. The name \"baseState\" doesn't really match how we\n      // use it because we're reusing a state hook field instead of creating a\n      // new one.\n\n      hook.baseState = true;\n    } // Reuse the previous value\n\n\n    return prevValue;\n  } else {\n    // This is not an urgent update, so we can use the latest value regardless\n    // of what it is. No need to defer it.\n    // However, if we're currently inside a spawned render, then we need to mark\n    // this as an update to prevent the fiber from bailing out.\n    //\n    // `baseState` is true when the current value is different from the rendered\n    // value. The name doesn't really match how we use it because we're reusing\n    // a state hook field instead of creating a new one.\n    if (hook.baseState) {\n      // Flip this back to false.\n      hook.baseState = false;\n      markWorkInProgressReceivedUpdate();\n    }\n\n    hook.memoizedState = value;\n    return value;\n  }\n}\n\nfunction startTransition(setPending, callback, options) {\n  var previousPriority = getCurrentUpdatePriority();\n  setCurrentUpdatePriority(higherEventPriority(previousPriority, ContinuousEventPriority));\n  setPending(true);\n  var prevTransition = ReactCurrentBatchConfig$2.transition;\n  ReactCurrentBatchConfig$2.transition = {};\n  var currentTransition = ReactCurrentBatchConfig$2.transition;\n\n  {\n    ReactCurrentBatchConfig$2.transition._updatedFibers = new Set();\n  }\n\n  try {\n    setPending(false);\n    callback();\n  } finally {\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig$2.transition = prevTransition;\n\n    {\n      if (prevTransition === null && currentTransition._updatedFibers) {\n        var updatedFibersCount = currentTransition._updatedFibers.size;\n\n        if (updatedFibersCount > 10) {\n          warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.');\n        }\n\n        currentTransition._updatedFibers.clear();\n      }\n    }\n  }\n}\n\nfunction mountTransition() {\n  var _mountState = mountState(false),\n      isPending = _mountState[0],\n      setPending = _mountState[1]; // The `start` method never changes.\n\n\n  var start = startTransition.bind(null, setPending);\n  var hook = mountWorkInProgressHook();\n  hook.memoizedState = start;\n  return [isPending, start];\n}\n\nfunction updateTransition() {\n  var _updateState = updateState(),\n      isPending = _updateState[0];\n\n  var hook = updateWorkInProgressHook();\n  var start = hook.memoizedState;\n  return [isPending, start];\n}\n\nfunction rerenderTransition() {\n  var _rerenderState = rerenderState(),\n      isPending = _rerenderState[0];\n\n  var hook = updateWorkInProgressHook();\n  var start = hook.memoizedState;\n  return [isPending, start];\n}\n\nvar isUpdatingOpaqueValueInRenderPhase = false;\nfunction getIsUpdatingOpaqueValueInRenderPhaseInDEV() {\n  {\n    return isUpdatingOpaqueValueInRenderPhase;\n  }\n}\n\nfunction mountId() {\n  var hook = mountWorkInProgressHook();\n  var root = getWorkInProgressRoot(); // TODO: In Fizz, id generation is specific to each server config. Maybe we\n  // should do this in Fiber, too? Deferring this decision for now because\n  // there's no other place to store the prefix except for an internal field on\n  // the public createRoot object, which the fiber tree does not currently have\n  // a reference to.\n\n  var identifierPrefix = root.identifierPrefix;\n  var id;\n\n  if (getIsHydrating()) {\n    var treeId = getTreeId(); // Use a captial R prefix for server-generated ids.\n\n    id = ':' + identifierPrefix + 'R' + treeId; // Unless this is the first id at this level, append a number at the end\n    // that represents the position of this useId hook among all the useId\n    // hooks for this fiber.\n\n    var localId = localIdCounter++;\n\n    if (localId > 0) {\n      id += 'H' + localId.toString(32);\n    }\n\n    id += ':';\n  } else {\n    // Use a lowercase r prefix for client-generated ids.\n    var globalClientId = globalClientIdCounter++;\n    id = ':' + identifierPrefix + 'r' + globalClientId.toString(32) + ':';\n  }\n\n  hook.memoizedState = id;\n  return id;\n}\n\nfunction updateId() {\n  var hook = updateWorkInProgressHook();\n  var id = hook.memoizedState;\n  return id;\n}\n\nfunction dispatchReducerAction(fiber, queue, action) {\n  {\n    if (typeof arguments[3] === 'function') {\n      error(\"State updates from the useState() and useReducer() Hooks don't support the \" + 'second callback argument. To execute a side effect after ' + 'rendering, declare it in the component body with useEffect().');\n    }\n  }\n\n  var lane = requestUpdateLane(fiber);\n  var update = {\n    lane: lane,\n    action: action,\n    hasEagerState: false,\n    eagerState: null,\n    next: null\n  };\n\n  if (isRenderPhaseUpdate(fiber)) {\n    enqueueRenderPhaseUpdate(queue, update);\n  } else {\n    var root = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n\n    if (root !== null) {\n      var eventTime = requestEventTime();\n      scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n      entangleTransitionUpdate(root, queue, lane);\n    }\n  }\n\n  markUpdateInDevTools(fiber, lane);\n}\n\nfunction dispatchSetState(fiber, queue, action) {\n  {\n    if (typeof arguments[3] === 'function') {\n      error(\"State updates from the useState() and useReducer() Hooks don't support the \" + 'second callback argument. To execute a side effect after ' + 'rendering, declare it in the component body with useEffect().');\n    }\n  }\n\n  var lane = requestUpdateLane(fiber);\n  var update = {\n    lane: lane,\n    action: action,\n    hasEagerState: false,\n    eagerState: null,\n    next: null\n  };\n\n  if (isRenderPhaseUpdate(fiber)) {\n    enqueueRenderPhaseUpdate(queue, update);\n  } else {\n    var alternate = fiber.alternate;\n\n    if (fiber.lanes === NoLanes && (alternate === null || alternate.lanes === NoLanes)) {\n      // The queue is currently empty, which means we can eagerly compute the\n      // next state before entering the render phase. If the new state is the\n      // same as the current state, we may be able to bail out entirely.\n      var lastRenderedReducer = queue.lastRenderedReducer;\n\n      if (lastRenderedReducer !== null) {\n        var prevDispatcher;\n\n        {\n          prevDispatcher = ReactCurrentDispatcher$1.current;\n          ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n        }\n\n        try {\n          var currentState = queue.lastRenderedState;\n          var eagerState = lastRenderedReducer(currentState, action); // Stash the eagerly computed state, and the reducer used to compute\n          // it, on the update object. If the reducer hasn't changed by the\n          // time we enter the render phase, then the eager state can be used\n          // without calling the reducer again.\n\n          update.hasEagerState = true;\n          update.eagerState = eagerState;\n\n          if (objectIs(eagerState, currentState)) {\n            // Fast path. We can bail out without scheduling React to re-render.\n            // It's still possible that we'll need to rebase this update later,\n            // if the component re-renders for a different reason and by that\n            // time the reducer has changed.\n            // TODO: Do we still need to entangle transitions in this case?\n            enqueueConcurrentHookUpdateAndEagerlyBailout(fiber, queue, update, lane);\n            return;\n          }\n        } catch (error) {// Suppress the error. It will throw again in the render phase.\n        } finally {\n          {\n            ReactCurrentDispatcher$1.current = prevDispatcher;\n          }\n        }\n      }\n    }\n\n    var root = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n\n    if (root !== null) {\n      var eventTime = requestEventTime();\n      scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n      entangleTransitionUpdate(root, queue, lane);\n    }\n  }\n\n  markUpdateInDevTools(fiber, lane);\n}\n\nfunction isRenderPhaseUpdate(fiber) {\n  var alternate = fiber.alternate;\n  return fiber === currentlyRenderingFiber$1 || alternate !== null && alternate === currentlyRenderingFiber$1;\n}\n\nfunction enqueueRenderPhaseUpdate(queue, update) {\n  // This is a render phase update. Stash it in a lazily-created map of\n  // queue -> linked list of updates. After this render pass, we'll restart\n  // and apply the stashed updates on top of the work-in-progress hook.\n  didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate = true;\n  var pending = queue.pending;\n\n  if (pending === null) {\n    // This is the first update. Create a circular list.\n    update.next = update;\n  } else {\n    update.next = pending.next;\n    pending.next = update;\n  }\n\n  queue.pending = update;\n} // TODO: Move to ReactFiberConcurrentUpdates?\n\n\nfunction entangleTransitionUpdate(root, queue, lane) {\n  if (isTransitionLane(lane)) {\n    var queueLanes = queue.lanes; // If any entangled lanes are no longer pending on the root, then they\n    // must have finished. We can remove them from the shared queue, which\n    // represents a superset of the actually pending lanes. In some cases we\n    // may entangle more than we need to, but that's OK. In fact it's worse if\n    // we *don't* entangle when we should.\n\n    queueLanes = intersectLanes(queueLanes, root.pendingLanes); // Entangle the new transition lane with the other transition lanes.\n\n    var newQueueLanes = mergeLanes(queueLanes, lane);\n    queue.lanes = newQueueLanes; // Even if queue.lanes already include lane, we don't know for certain if\n    // the lane finished since the last time we entangled it. So we need to\n    // entangle it again, just to be sure.\n\n    markRootEntangled(root, newQueueLanes);\n  }\n}\n\nfunction markUpdateInDevTools(fiber, lane, action) {\n\n  {\n    markStateUpdateScheduled(fiber, lane);\n  }\n}\n\nvar ContextOnlyDispatcher = {\n  readContext: readContext,\n  useCallback: throwInvalidHookError,\n  useContext: throwInvalidHookError,\n  useEffect: throwInvalidHookError,\n  useImperativeHandle: throwInvalidHookError,\n  useInsertionEffect: throwInvalidHookError,\n  useLayoutEffect: throwInvalidHookError,\n  useMemo: throwInvalidHookError,\n  useReducer: throwInvalidHookError,\n  useRef: throwInvalidHookError,\n  useState: throwInvalidHookError,\n  useDebugValue: throwInvalidHookError,\n  useDeferredValue: throwInvalidHookError,\n  useTransition: throwInvalidHookError,\n  useMutableSource: throwInvalidHookError,\n  useSyncExternalStore: throwInvalidHookError,\n  useId: throwInvalidHookError,\n  unstable_isNewReconciler: enableNewReconciler\n};\n\nvar HooksDispatcherOnMountInDEV = null;\nvar HooksDispatcherOnMountWithHookTypesInDEV = null;\nvar HooksDispatcherOnUpdateInDEV = null;\nvar HooksDispatcherOnRerenderInDEV = null;\nvar InvalidNestedHooksDispatcherOnMountInDEV = null;\nvar InvalidNestedHooksDispatcherOnUpdateInDEV = null;\nvar InvalidNestedHooksDispatcherOnRerenderInDEV = null;\n\n{\n  var warnInvalidContextAccess = function () {\n    error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().');\n  };\n\n  var warnInvalidHookAccess = function () {\n    error('Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. ' + 'You can only call Hooks at the top level of your React function. ' + 'For more information, see ' + 'https://reactjs.org/link/rules-of-hooks');\n  };\n\n  HooksDispatcherOnMountInDEV = {\n    readContext: function (context) {\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      return mountCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      mountHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      return mountEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      return mountImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      return mountInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      return mountLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      mountHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      mountHookTypesDev();\n      return mountRef(initialValue);\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      mountHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      mountHookTypesDev();\n      return mountDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      mountHookTypesDev();\n      return mountDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      mountHookTypesDev();\n      return mountTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      mountHookTypesDev();\n      return mountMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      mountHookTypesDev();\n      return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      mountHookTypesDev();\n      return mountId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  HooksDispatcherOnMountWithHookTypesInDEV = {\n    readContext: function (context) {\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      updateHookTypesDev();\n      return mountCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      updateHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      updateHookTypesDev();\n      return mountEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      updateHookTypesDev();\n      return mountImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      updateHookTypesDev();\n      return mountInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      updateHookTypesDev();\n      return mountLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      updateHookTypesDev();\n      return mountRef(initialValue);\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      updateHookTypesDev();\n      return mountDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      updateHookTypesDev();\n      return mountDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      updateHookTypesDev();\n      return mountTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      updateHookTypesDev();\n      return mountMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      updateHookTypesDev();\n      return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      updateHookTypesDev();\n      return mountId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  HooksDispatcherOnUpdateInDEV = {\n    readContext: function (context) {\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      updateHookTypesDev();\n      return updateCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      updateHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      updateHookTypesDev();\n      return updateEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      updateHookTypesDev();\n      return updateImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      updateHookTypesDev();\n      return updateInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      updateHookTypesDev();\n      return updateLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      updateHookTypesDev();\n      return updateRef();\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      updateHookTypesDev();\n      return updateDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      updateHookTypesDev();\n      return updateDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      updateHookTypesDev();\n      return updateTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      updateHookTypesDev();\n      return updateMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      updateHookTypesDev();\n      return updateSyncExternalStore(subscribe, getSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      updateHookTypesDev();\n      return updateId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  HooksDispatcherOnRerenderInDEV = {\n    readContext: function (context) {\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      updateHookTypesDev();\n      return updateCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      updateHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      updateHookTypesDev();\n      return updateEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      updateHookTypesDev();\n      return updateImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      updateHookTypesDev();\n      return updateInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      updateHookTypesDev();\n      return updateLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n\n      try {\n        return updateMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n\n      try {\n        return rerenderReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      updateHookTypesDev();\n      return updateRef();\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n\n      try {\n        return rerenderState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      updateHookTypesDev();\n      return updateDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      updateHookTypesDev();\n      return rerenderDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      updateHookTypesDev();\n      return rerenderTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      updateHookTypesDev();\n      return updateMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      updateHookTypesDev();\n      return updateSyncExternalStore(subscribe, getSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      updateHookTypesDev();\n      return updateId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  InvalidNestedHooksDispatcherOnMountInDEV = {\n    readContext: function (context) {\n      warnInvalidContextAccess();\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountRef(initialValue);\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  InvalidNestedHooksDispatcherOnUpdateInDEV = {\n    readContext: function (context) {\n      warnInvalidContextAccess();\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateRef();\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateSyncExternalStore(subscribe, getSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  InvalidNestedHooksDispatcherOnRerenderInDEV = {\n    readContext: function (context) {\n      warnInvalidContextAccess();\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return rerenderReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateRef();\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return rerenderState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return rerenderDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return rerenderTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateSyncExternalStore(subscribe, getSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n}\n\nvar now$1 = Scheduler.unstable_now;\nvar commitTime = 0;\nvar layoutEffectStartTime = -1;\nvar profilerStartTime = -1;\nvar passiveEffectStartTime = -1;\n/**\n * Tracks whether the current update was a nested/cascading update (scheduled from a layout effect).\n *\n * The overall sequence is:\n *   1. render\n *   2. commit (and call `onRender`, `onCommit`)\n *   3. check for nested updates\n *   4. flush passive effects (and call `onPostCommit`)\n *\n * Nested updates are identified in step 3 above,\n * but step 4 still applies to the work that was just committed.\n * We use two flags to track nested updates then:\n * one tracks whether the upcoming update is a nested update,\n * and the other tracks whether the current update was a nested update.\n * The first value gets synced to the second at the start of the render phase.\n */\n\nvar currentUpdateIsNested = false;\nvar nestedUpdateScheduled = false;\n\nfunction isCurrentUpdateNested() {\n  return currentUpdateIsNested;\n}\n\nfunction markNestedUpdateScheduled() {\n  {\n    nestedUpdateScheduled = true;\n  }\n}\n\nfunction resetNestedUpdateFlag() {\n  {\n    currentUpdateIsNested = false;\n    nestedUpdateScheduled = false;\n  }\n}\n\nfunction syncNestedUpdateFlag() {\n  {\n    currentUpdateIsNested = nestedUpdateScheduled;\n    nestedUpdateScheduled = false;\n  }\n}\n\nfunction getCommitTime() {\n  return commitTime;\n}\n\nfunction recordCommitTime() {\n\n  commitTime = now$1();\n}\n\nfunction startProfilerTimer(fiber) {\n\n  profilerStartTime = now$1();\n\n  if (fiber.actualStartTime < 0) {\n    fiber.actualStartTime = now$1();\n  }\n}\n\nfunction stopProfilerTimerIfRunning(fiber) {\n\n  profilerStartTime = -1;\n}\n\nfunction stopProfilerTimerIfRunningAndRecordDelta(fiber, overrideBaseTime) {\n\n  if (profilerStartTime >= 0) {\n    var elapsedTime = now$1() - profilerStartTime;\n    fiber.actualDuration += elapsedTime;\n\n    if (overrideBaseTime) {\n      fiber.selfBaseDuration = elapsedTime;\n    }\n\n    profilerStartTime = -1;\n  }\n}\n\nfunction recordLayoutEffectDuration(fiber) {\n\n  if (layoutEffectStartTime >= 0) {\n    var elapsedTime = now$1() - layoutEffectStartTime;\n    layoutEffectStartTime = -1; // Store duration on the next nearest Profiler ancestor\n    // Or the root (for the DevTools Profiler to read)\n\n    var parentFiber = fiber.return;\n\n    while (parentFiber !== null) {\n      switch (parentFiber.tag) {\n        case HostRoot:\n          var root = parentFiber.stateNode;\n          root.effectDuration += elapsedTime;\n          return;\n\n        case Profiler:\n          var parentStateNode = parentFiber.stateNode;\n          parentStateNode.effectDuration += elapsedTime;\n          return;\n      }\n\n      parentFiber = parentFiber.return;\n    }\n  }\n}\n\nfunction recordPassiveEffectDuration(fiber) {\n\n  if (passiveEffectStartTime >= 0) {\n    var elapsedTime = now$1() - passiveEffectStartTime;\n    passiveEffectStartTime = -1; // Store duration on the next nearest Profiler ancestor\n    // Or the root (for the DevTools Profiler to read)\n\n    var parentFiber = fiber.return;\n\n    while (parentFiber !== null) {\n      switch (parentFiber.tag) {\n        case HostRoot:\n          var root = parentFiber.stateNode;\n\n          if (root !== null) {\n            root.passiveEffectDuration += elapsedTime;\n          }\n\n          return;\n\n        case Profiler:\n          var parentStateNode = parentFiber.stateNode;\n\n          if (parentStateNode !== null) {\n            // Detached fibers have their state node cleared out.\n            // In this case, the return pointer is also cleared out,\n            // so we won't be able to report the time spent in this Profiler's subtree.\n            parentStateNode.passiveEffectDuration += elapsedTime;\n          }\n\n          return;\n      }\n\n      parentFiber = parentFiber.return;\n    }\n  }\n}\n\nfunction startLayoutEffectTimer() {\n\n  layoutEffectStartTime = now$1();\n}\n\nfunction startPassiveEffectTimer() {\n\n  passiveEffectStartTime = now$1();\n}\n\nfunction transferActualDuration(fiber) {\n  // Transfer time spent rendering these children so we don't lose it\n  // after we rerender. This is used as a helper in special cases\n  // where we should count the work of multiple passes.\n  var child = fiber.child;\n\n  while (child) {\n    fiber.actualDuration += child.actualDuration;\n    child = child.sibling;\n  }\n}\n\nfunction createCapturedValueAtFiber(value, source) {\n  // If the value is an error, call this function immediately after it is thrown\n  // so the stack is accurate.\n  return {\n    value: value,\n    source: source,\n    stack: getStackByFiberInDevAndProd(source),\n    digest: null\n  };\n}\nfunction createCapturedValue(value, digest, stack) {\n  return {\n    value: value,\n    source: null,\n    stack: stack != null ? stack : null,\n    digest: digest != null ? digest : null\n  };\n}\n\n// This module is forked in different environments.\n// By default, return `true` to log errors to the console.\n// Forks can return `false` if this isn't desirable.\nfunction showErrorDialog(boundary, errorInfo) {\n  return true;\n}\n\nfunction logCapturedError(boundary, errorInfo) {\n  try {\n    var logError = showErrorDialog(boundary, errorInfo); // Allow injected showErrorDialog() to prevent default console.error logging.\n    // This enables renderers like ReactNative to better manage redbox behavior.\n\n    if (logError === false) {\n      return;\n    }\n\n    var error = errorInfo.value;\n\n    if (true) {\n      var source = errorInfo.source;\n      var stack = errorInfo.stack;\n      var componentStack = stack !== null ? stack : ''; // Browsers support silencing uncaught errors by calling\n      // `preventDefault()` in window `error` handler.\n      // We record this information as an expando on the error.\n\n      if (error != null && error._suppressLogging) {\n        if (boundary.tag === ClassComponent) {\n          // The error is recoverable and was silenced.\n          // Ignore it and don't print the stack addendum.\n          // This is handy for testing error boundaries without noise.\n          return;\n        } // The error is fatal. Since the silencing might have\n        // been accidental, we'll surface it anyway.\n        // However, the browser would have silenced the original error\n        // so we'll print it first, and then print the stack addendum.\n\n\n        console['error'](error); // Don't transform to our wrapper\n        // For a more detailed description of this block, see:\n        // https://github.com/facebook/react/pull/13384\n      }\n\n      var componentName = source ? getComponentNameFromFiber(source) : null;\n      var componentNameMessage = componentName ? \"The above error occurred in the <\" + componentName + \"> component:\" : 'The above error occurred in one of your React components:';\n      var errorBoundaryMessage;\n\n      if (boundary.tag === HostRoot) {\n        errorBoundaryMessage = 'Consider adding an error boundary to your tree to customize error handling behavior.\\n' + 'Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries.';\n      } else {\n        var errorBoundaryName = getComponentNameFromFiber(boundary) || 'Anonymous';\n        errorBoundaryMessage = \"React will try to recreate this component tree from scratch \" + (\"using the error boundary you provided, \" + errorBoundaryName + \".\");\n      }\n\n      var combinedMessage = componentNameMessage + \"\\n\" + componentStack + \"\\n\\n\" + (\"\" + errorBoundaryMessage); // In development, we provide our own message with just the component stack.\n      // We don't include the original error message and JS stack because the browser\n      // has already printed it. Even if the application swallows the error, it is still\n      // displayed by the browser thanks to the DEV-only fake event trick in ReactErrorUtils.\n\n      console['error'](combinedMessage); // Don't transform to our wrapper\n    } else {}\n  } catch (e) {\n    // This method must not throw, or React internal state will get messed up.\n    // If console.error is overridden, or logCapturedError() shows a dialog that throws,\n    // we want to report this error outside of the normal stack as a last resort.\n    // https://github.com/facebook/react/issues/13188\n    setTimeout(function () {\n      throw e;\n    });\n  }\n}\n\nvar PossiblyWeakMap$1 = typeof WeakMap === 'function' ? WeakMap : Map;\n\nfunction createRootErrorUpdate(fiber, errorInfo, lane) {\n  var update = createUpdate(NoTimestamp, lane); // Unmount the root by rendering null.\n\n  update.tag = CaptureUpdate; // Caution: React DevTools currently depends on this property\n  // being called \"element\".\n\n  update.payload = {\n    element: null\n  };\n  var error = errorInfo.value;\n\n  update.callback = function () {\n    onUncaughtError(error);\n    logCapturedError(fiber, errorInfo);\n  };\n\n  return update;\n}\n\nfunction createClassErrorUpdate(fiber, errorInfo, lane) {\n  var update = createUpdate(NoTimestamp, lane);\n  update.tag = CaptureUpdate;\n  var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n\n  if (typeof getDerivedStateFromError === 'function') {\n    var error$1 = errorInfo.value;\n\n    update.payload = function () {\n      return getDerivedStateFromError(error$1);\n    };\n\n    update.callback = function () {\n      {\n        markFailedErrorBoundaryForHotReloading(fiber);\n      }\n\n      logCapturedError(fiber, errorInfo);\n    };\n  }\n\n  var inst = fiber.stateNode;\n\n  if (inst !== null && typeof inst.componentDidCatch === 'function') {\n    update.callback = function callback() {\n      {\n        markFailedErrorBoundaryForHotReloading(fiber);\n      }\n\n      logCapturedError(fiber, errorInfo);\n\n      if (typeof getDerivedStateFromError !== 'function') {\n        // To preserve the preexisting retry behavior of error boundaries,\n        // we keep track of which ones already failed during this batch.\n        // This gets reset before we yield back to the browser.\n        // TODO: Warn in strict mode if getDerivedStateFromError is\n        // not defined.\n        markLegacyErrorBoundaryAsFailed(this);\n      }\n\n      var error$1 = errorInfo.value;\n      var stack = errorInfo.stack;\n      this.componentDidCatch(error$1, {\n        componentStack: stack !== null ? stack : ''\n      });\n\n      {\n        if (typeof getDerivedStateFromError !== 'function') {\n          // If componentDidCatch is the only error boundary method defined,\n          // then it needs to call setState to recover from errors.\n          // If no state update is scheduled then the boundary will swallow the error.\n          if (!includesSomeLane(fiber.lanes, SyncLane)) {\n            error('%s: Error boundaries should implement getDerivedStateFromError(). ' + 'In that method, return a state update to display an error message or fallback UI.', getComponentNameFromFiber(fiber) || 'Unknown');\n          }\n        }\n      }\n    };\n  }\n\n  return update;\n}\n\nfunction attachPingListener(root, wakeable, lanes) {\n  // Attach a ping listener\n  //\n  // The data might resolve before we have a chance to commit the fallback. Or,\n  // in the case of a refresh, we'll never commit a fallback. So we need to\n  // attach a listener now. When it resolves (\"pings\"), we can decide whether to\n  // try rendering the tree again.\n  //\n  // Only attach a listener if one does not already exist for the lanes\n  // we're currently rendering (which acts like a \"thread ID\" here).\n  //\n  // We only need to do this in concurrent mode. Legacy Suspense always\n  // commits fallbacks synchronously, so there are no pings.\n  var pingCache = root.pingCache;\n  var threadIDs;\n\n  if (pingCache === null) {\n    pingCache = root.pingCache = new PossiblyWeakMap$1();\n    threadIDs = new Set();\n    pingCache.set(wakeable, threadIDs);\n  } else {\n    threadIDs = pingCache.get(wakeable);\n\n    if (threadIDs === undefined) {\n      threadIDs = new Set();\n      pingCache.set(wakeable, threadIDs);\n    }\n  }\n\n  if (!threadIDs.has(lanes)) {\n    // Memoize using the thread ID to prevent redundant listeners.\n    threadIDs.add(lanes);\n    var ping = pingSuspendedRoot.bind(null, root, wakeable, lanes);\n\n    {\n      if (isDevToolsPresent) {\n        // If we have pending work still, restore the original updaters\n        restorePendingUpdaters(root, lanes);\n      }\n    }\n\n    wakeable.then(ping, ping);\n  }\n}\n\nfunction attachRetryListener(suspenseBoundary, root, wakeable, lanes) {\n  // Retry listener\n  //\n  // If the fallback does commit, we need to attach a different type of\n  // listener. This one schedules an update on the Suspense boundary to turn\n  // the fallback state off.\n  //\n  // Stash the wakeable on the boundary fiber so we can access it in the\n  // commit phase.\n  //\n  // When the wakeable resolves, we'll attempt to render the boundary\n  // again (\"retry\").\n  var wakeables = suspenseBoundary.updateQueue;\n\n  if (wakeables === null) {\n    var updateQueue = new Set();\n    updateQueue.add(wakeable);\n    suspenseBoundary.updateQueue = updateQueue;\n  } else {\n    wakeables.add(wakeable);\n  }\n}\n\nfunction resetSuspendedComponent(sourceFiber, rootRenderLanes) {\n  // A legacy mode Suspense quirk, only relevant to hook components.\n\n\n  var tag = sourceFiber.tag;\n\n  if ((sourceFiber.mode & ConcurrentMode) === NoMode && (tag === FunctionComponent || tag === ForwardRef || tag === SimpleMemoComponent)) {\n    var currentSource = sourceFiber.alternate;\n\n    if (currentSource) {\n      sourceFiber.updateQueue = currentSource.updateQueue;\n      sourceFiber.memoizedState = currentSource.memoizedState;\n      sourceFiber.lanes = currentSource.lanes;\n    } else {\n      sourceFiber.updateQueue = null;\n      sourceFiber.memoizedState = null;\n    }\n  }\n}\n\nfunction getNearestSuspenseBoundaryToCapture(returnFiber) {\n  var node = returnFiber;\n\n  do {\n    if (node.tag === SuspenseComponent && shouldCaptureSuspense(node)) {\n      return node;\n    } // This boundary already captured during this render. Continue to the next\n    // boundary.\n\n\n    node = node.return;\n  } while (node !== null);\n\n  return null;\n}\n\nfunction markSuspenseBoundaryShouldCapture(suspenseBoundary, returnFiber, sourceFiber, root, rootRenderLanes) {\n  // This marks a Suspense boundary so that when we're unwinding the stack,\n  // it captures the suspended \"exception\" and does a second (fallback) pass.\n  if ((suspenseBoundary.mode & ConcurrentMode) === NoMode) {\n    // Legacy Mode Suspense\n    //\n    // If the boundary is in legacy mode, we should *not*\n    // suspend the commit. Pretend as if the suspended component rendered\n    // null and keep rendering. When the Suspense boundary completes,\n    // we'll do a second pass to render the fallback.\n    if (suspenseBoundary === returnFiber) {\n      // Special case where we suspended while reconciling the children of\n      // a Suspense boundary's inner Offscreen wrapper fiber. This happens\n      // when a React.lazy component is a direct child of a\n      // Suspense boundary.\n      //\n      // Suspense boundaries are implemented as multiple fibers, but they\n      // are a single conceptual unit. The legacy mode behavior where we\n      // pretend the suspended fiber committed as `null` won't work,\n      // because in this case the \"suspended\" fiber is the inner\n      // Offscreen wrapper.\n      //\n      // Because the contents of the boundary haven't started rendering\n      // yet (i.e. nothing in the tree has partially rendered) we can\n      // switch to the regular, concurrent mode behavior: mark the\n      // boundary with ShouldCapture and enter the unwind phase.\n      suspenseBoundary.flags |= ShouldCapture;\n    } else {\n      suspenseBoundary.flags |= DidCapture;\n      sourceFiber.flags |= ForceUpdateForLegacySuspense; // We're going to commit this fiber even though it didn't complete.\n      // But we shouldn't call any lifecycle methods or callbacks. Remove\n      // all lifecycle effect tags.\n\n      sourceFiber.flags &= ~(LifecycleEffectMask | Incomplete);\n\n      if (sourceFiber.tag === ClassComponent) {\n        var currentSourceFiber = sourceFiber.alternate;\n\n        if (currentSourceFiber === null) {\n          // This is a new mount. Change the tag so it's not mistaken for a\n          // completed class component. For example, we should not call\n          // componentWillUnmount if it is deleted.\n          sourceFiber.tag = IncompleteClassComponent;\n        } else {\n          // When we try rendering again, we should not reuse the current fiber,\n          // since it's known to be in an inconsistent state. Use a force update to\n          // prevent a bail out.\n          var update = createUpdate(NoTimestamp, SyncLane);\n          update.tag = ForceUpdate;\n          enqueueUpdate(sourceFiber, update, SyncLane);\n        }\n      } // The source fiber did not complete. Mark it with Sync priority to\n      // indicate that it still has pending work.\n\n\n      sourceFiber.lanes = mergeLanes(sourceFiber.lanes, SyncLane);\n    }\n\n    return suspenseBoundary;\n  } // Confirmed that the boundary is in a concurrent mode tree. Continue\n  // with the normal suspend path.\n  //\n  // After this we'll use a set of heuristics to determine whether this\n  // render pass will run to completion or restart or \"suspend\" the commit.\n  // The actual logic for this is spread out in different places.\n  //\n  // This first principle is that if we're going to suspend when we complete\n  // a root, then we should also restart if we get an update or ping that\n  // might unsuspend it, and vice versa. The only reason to suspend is\n  // because you think you might want to restart before committing. However,\n  // it doesn't make sense to restart only while in the period we're suspended.\n  //\n  // Restarting too aggressively is also not good because it starves out any\n  // intermediate loading state. So we use heuristics to determine when.\n  // Suspense Heuristics\n  //\n  // If nothing threw a Promise or all the same fallbacks are already showing,\n  // then don't suspend/restart.\n  //\n  // If this is an initial render of a new tree of Suspense boundaries and\n  // those trigger a fallback, then don't suspend/restart. We want to ensure\n  // that we can show the initial loading state as quickly as possible.\n  //\n  // If we hit a \"Delayed\" case, such as when we'd switch from content back into\n  // a fallback, then we should always suspend/restart. Transitions apply\n  // to this case. If none is defined, JND is used instead.\n  //\n  // If we're already showing a fallback and it gets \"retried\", allowing us to show\n  // another level, but there's still an inner boundary that would show a fallback,\n  // then we suspend/restart for 500ms since the last time we showed a fallback\n  // anywhere in the tree. This effectively throttles progressive loading into a\n  // consistent train of commits. This also gives us an opportunity to restart to\n  // get to the completed state slightly earlier.\n  //\n  // If there's ambiguity due to batching it's resolved in preference of:\n  // 1) \"delayed\", 2) \"initial render\", 3) \"retry\".\n  //\n  // We want to ensure that a \"busy\" state doesn't get force committed. We want to\n  // ensure that new initial loading states can commit as soon as possible.\n\n\n  suspenseBoundary.flags |= ShouldCapture; // TODO: I think we can remove this, since we now use `DidCapture` in\n  // the begin phase to prevent an early bailout.\n\n  suspenseBoundary.lanes = rootRenderLanes;\n  return suspenseBoundary;\n}\n\nfunction throwException(root, returnFiber, sourceFiber, value, rootRenderLanes) {\n  // The source fiber did not complete.\n  sourceFiber.flags |= Incomplete;\n\n  {\n    if (isDevToolsPresent) {\n      // If we have pending work still, restore the original updaters\n      restorePendingUpdaters(root, rootRenderLanes);\n    }\n  }\n\n  if (value !== null && typeof value === 'object' && typeof value.then === 'function') {\n    // This is a wakeable. The component suspended.\n    var wakeable = value;\n    resetSuspendedComponent(sourceFiber);\n\n    {\n      if (getIsHydrating() && sourceFiber.mode & ConcurrentMode) {\n        markDidThrowWhileHydratingDEV();\n      }\n    }\n\n\n    var suspenseBoundary = getNearestSuspenseBoundaryToCapture(returnFiber);\n\n    if (suspenseBoundary !== null) {\n      suspenseBoundary.flags &= ~ForceClientRender;\n      markSuspenseBoundaryShouldCapture(suspenseBoundary, returnFiber, sourceFiber, root, rootRenderLanes); // We only attach ping listeners in concurrent mode. Legacy Suspense always\n      // commits fallbacks synchronously, so there are no pings.\n\n      if (suspenseBoundary.mode & ConcurrentMode) {\n        attachPingListener(root, wakeable, rootRenderLanes);\n      }\n\n      attachRetryListener(suspenseBoundary, root, wakeable);\n      return;\n    } else {\n      // No boundary was found. Unless this is a sync update, this is OK.\n      // We can suspend and wait for more data to arrive.\n      if (!includesSyncLane(rootRenderLanes)) {\n        // This is not a sync update. Suspend. Since we're not activating a\n        // Suspense boundary, this will unwind all the way to the root without\n        // performing a second pass to render a fallback. (This is arguably how\n        // refresh transitions should work, too, since we're not going to commit\n        // the fallbacks anyway.)\n        //\n        // This case also applies to initial hydration.\n        attachPingListener(root, wakeable, rootRenderLanes);\n        renderDidSuspendDelayIfPossible();\n        return;\n      } // This is a sync/discrete update. We treat this case like an error\n      // because discrete renders are expected to produce a complete tree\n      // synchronously to maintain consistency with external state.\n\n\n      var uncaughtSuspenseError = new Error('A component suspended while responding to synchronous input. This ' + 'will cause the UI to be replaced with a loading indicator. To ' + 'fix, updates that suspend should be wrapped ' + 'with startTransition.'); // If we're outside a transition, fall through to the regular error path.\n      // The error will be caught by the nearest suspense boundary.\n\n      value = uncaughtSuspenseError;\n    }\n  } else {\n    // This is a regular error, not a Suspense wakeable.\n    if (getIsHydrating() && sourceFiber.mode & ConcurrentMode) {\n      markDidThrowWhileHydratingDEV();\n\n      var _suspenseBoundary = getNearestSuspenseBoundaryToCapture(returnFiber); // If the error was thrown during hydration, we may be able to recover by\n      // discarding the dehydrated content and switching to a client render.\n      // Instead of surfacing the error, find the nearest Suspense boundary\n      // and render it again without hydration.\n\n\n      if (_suspenseBoundary !== null) {\n        if ((_suspenseBoundary.flags & ShouldCapture) === NoFlags) {\n          // Set a flag to indicate that we should try rendering the normal\n          // children again, not the fallback.\n          _suspenseBoundary.flags |= ForceClientRender;\n        }\n\n        markSuspenseBoundaryShouldCapture(_suspenseBoundary, returnFiber, sourceFiber, root, rootRenderLanes); // Even though the user may not be affected by this error, we should\n        // still log it so it can be fixed.\n\n        queueHydrationError(createCapturedValueAtFiber(value, sourceFiber));\n        return;\n      }\n    }\n  }\n\n  value = createCapturedValueAtFiber(value, sourceFiber);\n  renderDidError(value); // We didn't find a boundary that could handle this type of exception. Start\n  // over and traverse parent path again, this time treating the exception\n  // as an error.\n\n  var workInProgress = returnFiber;\n\n  do {\n    switch (workInProgress.tag) {\n      case HostRoot:\n        {\n          var _errorInfo = value;\n          workInProgress.flags |= ShouldCapture;\n          var lane = pickArbitraryLane(rootRenderLanes);\n          workInProgress.lanes = mergeLanes(workInProgress.lanes, lane);\n          var update = createRootErrorUpdate(workInProgress, _errorInfo, lane);\n          enqueueCapturedUpdate(workInProgress, update);\n          return;\n        }\n\n      case ClassComponent:\n        // Capture and retry\n        var errorInfo = value;\n        var ctor = workInProgress.type;\n        var instance = workInProgress.stateNode;\n\n        if ((workInProgress.flags & DidCapture) === NoFlags && (typeof ctor.getDerivedStateFromError === 'function' || instance !== null && typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance))) {\n          workInProgress.flags |= ShouldCapture;\n\n          var _lane = pickArbitraryLane(rootRenderLanes);\n\n          workInProgress.lanes = mergeLanes(workInProgress.lanes, _lane); // Schedule the error boundary to re-render using updated state\n\n          var _update = createClassErrorUpdate(workInProgress, errorInfo, _lane);\n\n          enqueueCapturedUpdate(workInProgress, _update);\n          return;\n        }\n\n        break;\n    }\n\n    workInProgress = workInProgress.return;\n  } while (workInProgress !== null);\n}\n\nfunction getSuspendedCache() {\n  {\n    return null;\n  } // This function is called when a Suspense boundary suspends. It returns the\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar didReceiveUpdate = false;\nvar didWarnAboutBadClass;\nvar didWarnAboutModulePatternComponent;\nvar didWarnAboutContextTypeOnFunctionComponent;\nvar didWarnAboutGetDerivedStateOnFunctionComponent;\nvar didWarnAboutFunctionRefs;\nvar didWarnAboutReassigningProps;\nvar didWarnAboutRevealOrder;\nvar didWarnAboutTailOptions;\n\n{\n  didWarnAboutBadClass = {};\n  didWarnAboutModulePatternComponent = {};\n  didWarnAboutContextTypeOnFunctionComponent = {};\n  didWarnAboutGetDerivedStateOnFunctionComponent = {};\n  didWarnAboutFunctionRefs = {};\n  didWarnAboutReassigningProps = false;\n  didWarnAboutRevealOrder = {};\n  didWarnAboutTailOptions = {};\n}\n\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n  if (current === null) {\n    // If this is a fresh new component that hasn't been rendered yet, we\n    // won't update its child set by applying minimal side-effects. Instead,\n    // we will add them all to the child before it gets rendered. That means\n    // we can optimize this reconciliation pass by not tracking side-effects.\n    workInProgress.child = mountChildFibers(workInProgress, null, nextChildren, renderLanes);\n  } else {\n    // If the current child is the same as the work in progress, it means that\n    // we haven't yet started any work on these children. Therefore, we use\n    // the clone algorithm to create a copy of all the current children.\n    // If we had any progressed work already, that is invalid at this point so\n    // let's throw it out.\n    workInProgress.child = reconcileChildFibers(workInProgress, current.child, nextChildren, renderLanes);\n  }\n}\n\nfunction forceUnmountCurrentAndReconcile(current, workInProgress, nextChildren, renderLanes) {\n  // This function is fork of reconcileChildren. It's used in cases where we\n  // want to reconcile without matching against the existing set. This has the\n  // effect of all current children being unmounted; even if the type and key\n  // are the same, the old child is unmounted and a new child is created.\n  //\n  // To do this, we're going to go through the reconcile algorithm twice. In\n  // the first pass, we schedule a deletion for all the current children by\n  // passing null.\n  workInProgress.child = reconcileChildFibers(workInProgress, current.child, null, renderLanes); // In the second pass, we mount the new children. The trick here is that we\n  // pass null in place of where we usually pass the current child set. This has\n  // the effect of remounting all children regardless of whether their\n  // identities match.\n\n  workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderLanes);\n}\n\nfunction updateForwardRef(current, workInProgress, Component, nextProps, renderLanes) {\n  // TODO: current can be non-null here even if the component\n  // hasn't yet mounted. This happens after the first render suspends.\n  // We'll need to figure out if this is fine or can cause issues.\n  {\n    if (workInProgress.type !== workInProgress.elementType) {\n      // Lazy component props can't be validated in createElement\n      // because they're only guaranteed to be resolved here.\n      var innerPropTypes = Component.propTypes;\n\n      if (innerPropTypes) {\n        checkPropTypes(innerPropTypes, nextProps, // Resolved props\n        'prop', getComponentNameFromType(Component));\n      }\n    }\n  }\n\n  var render = Component.render;\n  var ref = workInProgress.ref; // The rest is a fork of updateFunctionComponent\n\n  var nextChildren;\n  var hasId;\n  prepareToReadContext(workInProgress, renderLanes);\n\n  {\n    markComponentRenderStarted(workInProgress);\n  }\n\n  {\n    ReactCurrentOwner$1.current = workInProgress;\n    setIsRendering(true);\n    nextChildren = renderWithHooks(current, workInProgress, render, nextProps, ref, renderLanes);\n    hasId = checkDidRenderIdHook();\n\n    if ( workInProgress.mode & StrictLegacyMode) {\n      setIsStrictModeForDevtools(true);\n\n      try {\n        nextChildren = renderWithHooks(current, workInProgress, render, nextProps, ref, renderLanes);\n        hasId = checkDidRenderIdHook();\n      } finally {\n        setIsStrictModeForDevtools(false);\n      }\n    }\n\n    setIsRendering(false);\n  }\n\n  {\n    markComponentRenderStopped();\n  }\n\n  if (current !== null && !didReceiveUpdate) {\n    bailoutHooks(current, workInProgress, renderLanes);\n    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n\n  if (getIsHydrating() && hasId) {\n    pushMaterializedTreeId(workInProgress);\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateMemoComponent(current, workInProgress, Component, nextProps, renderLanes) {\n  if (current === null) {\n    var type = Component.type;\n\n    if (isSimpleFunctionComponent(type) && Component.compare === null && // SimpleMemoComponent codepath doesn't resolve outer props either.\n    Component.defaultProps === undefined) {\n      var resolvedType = type;\n\n      {\n        resolvedType = resolveFunctionForHotReloading(type);\n      } // If this is a plain function component without default props,\n      // and with only the default shallow comparison, we upgrade it\n      // to a SimpleMemoComponent to allow fast path updates.\n\n\n      workInProgress.tag = SimpleMemoComponent;\n      workInProgress.type = resolvedType;\n\n      {\n        validateFunctionComponentInDev(workInProgress, type);\n      }\n\n      return updateSimpleMemoComponent(current, workInProgress, resolvedType, nextProps, renderLanes);\n    }\n\n    {\n      var innerPropTypes = type.propTypes;\n\n      if (innerPropTypes) {\n        // Inner memo component props aren't currently validated in createElement.\n        // We could move it there, but we'd still need this for lazy code path.\n        checkPropTypes(innerPropTypes, nextProps, // Resolved props\n        'prop', getComponentNameFromType(type));\n      }\n    }\n\n    var child = createFiberFromTypeAndProps(Component.type, null, nextProps, workInProgress, workInProgress.mode, renderLanes);\n    child.ref = workInProgress.ref;\n    child.return = workInProgress;\n    workInProgress.child = child;\n    return child;\n  }\n\n  {\n    var _type = Component.type;\n    var _innerPropTypes = _type.propTypes;\n\n    if (_innerPropTypes) {\n      // Inner memo component props aren't currently validated in createElement.\n      // We could move it there, but we'd still need this for lazy code path.\n      checkPropTypes(_innerPropTypes, nextProps, // Resolved props\n      'prop', getComponentNameFromType(_type));\n    }\n  }\n\n  var currentChild = current.child; // This is always exactly one child\n\n  var hasScheduledUpdateOrContext = checkScheduledUpdateOrContext(current, renderLanes);\n\n  if (!hasScheduledUpdateOrContext) {\n    // This will be the props with resolved defaultProps,\n    // unlike current.memoizedProps which will be the unresolved ones.\n    var prevProps = currentChild.memoizedProps; // Default to shallow comparison\n\n    var compare = Component.compare;\n    compare = compare !== null ? compare : shallowEqual;\n\n    if (compare(prevProps, nextProps) && current.ref === workInProgress.ref) {\n      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n    }\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n  var newChild = createWorkInProgress(currentChild, nextProps);\n  newChild.ref = workInProgress.ref;\n  newChild.return = workInProgress;\n  workInProgress.child = newChild;\n  return newChild;\n}\n\nfunction updateSimpleMemoComponent(current, workInProgress, Component, nextProps, renderLanes) {\n  // TODO: current can be non-null here even if the component\n  // hasn't yet mounted. This happens when the inner render suspends.\n  // We'll need to figure out if this is fine or can cause issues.\n  {\n    if (workInProgress.type !== workInProgress.elementType) {\n      // Lazy component props can't be validated in createElement\n      // because they're only guaranteed to be resolved here.\n      var outerMemoType = workInProgress.elementType;\n\n      if (outerMemoType.$$typeof === REACT_LAZY_TYPE) {\n        // We warn when you define propTypes on lazy()\n        // so let's just skip over it to find memo() outer wrapper.\n        // Inner props for memo are validated later.\n        var lazyComponent = outerMemoType;\n        var payload = lazyComponent._payload;\n        var init = lazyComponent._init;\n\n        try {\n          outerMemoType = init(payload);\n        } catch (x) {\n          outerMemoType = null;\n        } // Inner propTypes will be validated in the function component path.\n\n\n        var outerPropTypes = outerMemoType && outerMemoType.propTypes;\n\n        if (outerPropTypes) {\n          checkPropTypes(outerPropTypes, nextProps, // Resolved (SimpleMemoComponent has no defaultProps)\n          'prop', getComponentNameFromType(outerMemoType));\n        }\n      }\n    }\n  }\n\n  if (current !== null) {\n    var prevProps = current.memoizedProps;\n\n    if (shallowEqual(prevProps, nextProps) && current.ref === workInProgress.ref && ( // Prevent bailout if the implementation changed due to hot reload.\n     workInProgress.type === current.type )) {\n      didReceiveUpdate = false; // The props are shallowly equal. Reuse the previous props object, like we\n      // would during a normal fiber bailout.\n      //\n      // We don't have strong guarantees that the props object is referentially\n      // equal during updates where we can't bail out anyway — like if the props\n      // are shallowly equal, but there's a local state or context update in the\n      // same batch.\n      //\n      // However, as a principle, we should aim to make the behavior consistent\n      // across different ways of memoizing a component. For example, React.memo\n      // has a different internal Fiber layout if you pass a normal function\n      // component (SimpleMemoComponent) versus if you pass a different type\n      // like forwardRef (MemoComponent). But this is an implementation detail.\n      // Wrapping a component in forwardRef (or React.lazy, etc) shouldn't\n      // affect whether the props object is reused during a bailout.\n\n      workInProgress.pendingProps = nextProps = prevProps;\n\n      if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n        // The pending lanes were cleared at the beginning of beginWork. We're\n        // about to bail out, but there might be other lanes that weren't\n        // included in the current render. Usually, the priority level of the\n        // remaining updates is accumulated during the evaluation of the\n        // component (i.e. when processing the update queue). But since since\n        // we're bailing out early *without* evaluating the component, we need\n        // to account for it here, too. Reset to the value of the current fiber.\n        // NOTE: This only applies to SimpleMemoComponent, not MemoComponent,\n        // because a MemoComponent fiber does not have hooks or an update queue;\n        // rather, it wraps around an inner component, which may or may not\n        // contains hooks.\n        // TODO: Move the reset at in beginWork out of the common path so that\n        // this is no longer necessary.\n        workInProgress.lanes = current.lanes;\n        return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n      } else if ((current.flags & ForceUpdateForLegacySuspense) !== NoFlags) {\n        // This is a special case that only exists for legacy mode.\n        // See https://github.com/facebook/react/pull/19216.\n        didReceiveUpdate = true;\n      }\n    }\n  }\n\n  return updateFunctionComponent(current, workInProgress, Component, nextProps, renderLanes);\n}\n\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps;\n  var nextChildren = nextProps.children;\n  var prevState = current !== null ? current.memoizedState : null;\n\n  if (nextProps.mode === 'hidden' || enableLegacyHidden ) {\n    // Rendering a hidden tree.\n    if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n      // In legacy sync mode, don't defer the subtree. Render it now.\n      // TODO: Consider how Offscreen should work with transitions in the future\n      var nextState = {\n        baseLanes: NoLanes,\n        cachePool: null,\n        transitions: null\n      };\n      workInProgress.memoizedState = nextState;\n\n      pushRenderLanes(workInProgress, renderLanes);\n    } else if (!includesSomeLane(renderLanes, OffscreenLane)) {\n      var spawnedCachePool = null; // We're hidden, and we're not rendering at Offscreen. We will bail out\n      // and resume this tree later.\n\n      var nextBaseLanes;\n\n      if (prevState !== null) {\n        var prevBaseLanes = prevState.baseLanes;\n        nextBaseLanes = mergeLanes(prevBaseLanes, renderLanes);\n      } else {\n        nextBaseLanes = renderLanes;\n      } // Schedule this fiber to re-render at offscreen priority. Then bailout.\n\n\n      workInProgress.lanes = workInProgress.childLanes = laneToLanes(OffscreenLane);\n      var _nextState = {\n        baseLanes: nextBaseLanes,\n        cachePool: spawnedCachePool,\n        transitions: null\n      };\n      workInProgress.memoizedState = _nextState;\n      workInProgress.updateQueue = null;\n      // to avoid a push/pop misalignment.\n\n\n      pushRenderLanes(workInProgress, nextBaseLanes);\n\n      return null;\n    } else {\n      // This is the second render. The surrounding visible content has already\n      // committed. Now we resume rendering the hidden tree.\n      // Rendering at offscreen, so we can clear the base lanes.\n      var _nextState2 = {\n        baseLanes: NoLanes,\n        cachePool: null,\n        transitions: null\n      };\n      workInProgress.memoizedState = _nextState2; // Push the lanes that were skipped when we bailed out.\n\n      var subtreeRenderLanes = prevState !== null ? prevState.baseLanes : renderLanes;\n\n      pushRenderLanes(workInProgress, subtreeRenderLanes);\n    }\n  } else {\n    // Rendering a visible tree.\n    var _subtreeRenderLanes;\n\n    if (prevState !== null) {\n      // We're going from hidden -> visible.\n      _subtreeRenderLanes = mergeLanes(prevState.baseLanes, renderLanes);\n\n      workInProgress.memoizedState = null;\n    } else {\n      // We weren't previously hidden, and we still aren't, so there's nothing\n      // special to do. Need to push to the stack regardless, though, to avoid\n      // a push/pop misalignment.\n      _subtreeRenderLanes = renderLanes;\n    }\n\n    pushRenderLanes(workInProgress, _subtreeRenderLanes);\n  }\n\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n} // Note: These happen to have identical begin phases, for now. We shouldn't hold\n\nfunction updateFragment(current, workInProgress, renderLanes) {\n  var nextChildren = workInProgress.pendingProps;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateMode(current, workInProgress, renderLanes) {\n  var nextChildren = workInProgress.pendingProps.children;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateProfiler(current, workInProgress, renderLanes) {\n  {\n    workInProgress.flags |= Update;\n\n    {\n      // Reset effect durations for the next eventual effect phase.\n      // These are reset during render to allow the DevTools commit hook a chance to read them,\n      var stateNode = workInProgress.stateNode;\n      stateNode.effectDuration = 0;\n      stateNode.passiveEffectDuration = 0;\n    }\n  }\n\n  var nextProps = workInProgress.pendingProps;\n  var nextChildren = nextProps.children;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction markRef(current, workInProgress) {\n  var ref = workInProgress.ref;\n\n  if (current === null && ref !== null || current !== null && current.ref !== ref) {\n    // Schedule a Ref effect\n    workInProgress.flags |= Ref;\n\n    {\n      workInProgress.flags |= RefStatic;\n    }\n  }\n}\n\nfunction updateFunctionComponent(current, workInProgress, Component, nextProps, renderLanes) {\n  {\n    if (workInProgress.type !== workInProgress.elementType) {\n      // Lazy component props can't be validated in createElement\n      // because they're only guaranteed to be resolved here.\n      var innerPropTypes = Component.propTypes;\n\n      if (innerPropTypes) {\n        checkPropTypes(innerPropTypes, nextProps, // Resolved props\n        'prop', getComponentNameFromType(Component));\n      }\n    }\n  }\n\n  var context;\n\n  {\n    var unmaskedContext = getUnmaskedContext(workInProgress, Component, true);\n    context = getMaskedContext(workInProgress, unmaskedContext);\n  }\n\n  var nextChildren;\n  var hasId;\n  prepareToReadContext(workInProgress, renderLanes);\n\n  {\n    markComponentRenderStarted(workInProgress);\n  }\n\n  {\n    ReactCurrentOwner$1.current = workInProgress;\n    setIsRendering(true);\n    nextChildren = renderWithHooks(current, workInProgress, Component, nextProps, context, renderLanes);\n    hasId = checkDidRenderIdHook();\n\n    if ( workInProgress.mode & StrictLegacyMode) {\n      setIsStrictModeForDevtools(true);\n\n      try {\n        nextChildren = renderWithHooks(current, workInProgress, Component, nextProps, context, renderLanes);\n        hasId = checkDidRenderIdHook();\n      } finally {\n        setIsStrictModeForDevtools(false);\n      }\n    }\n\n    setIsRendering(false);\n  }\n\n  {\n    markComponentRenderStopped();\n  }\n\n  if (current !== null && !didReceiveUpdate) {\n    bailoutHooks(current, workInProgress, renderLanes);\n    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n\n  if (getIsHydrating() && hasId) {\n    pushMaterializedTreeId(workInProgress);\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateClassComponent(current, workInProgress, Component, nextProps, renderLanes) {\n  {\n    // This is used by DevTools to force a boundary to error.\n    switch (shouldError(workInProgress)) {\n      case false:\n        {\n          var _instance = workInProgress.stateNode;\n          var ctor = workInProgress.type; // TODO This way of resetting the error boundary state is a hack.\n          // Is there a better way to do this?\n\n          var tempInstance = new ctor(workInProgress.memoizedProps, _instance.context);\n          var state = tempInstance.state;\n\n          _instance.updater.enqueueSetState(_instance, state, null);\n\n          break;\n        }\n\n      case true:\n        {\n          workInProgress.flags |= DidCapture;\n          workInProgress.flags |= ShouldCapture; // eslint-disable-next-line react-internal/prod-error-codes\n\n          var error$1 = new Error('Simulated error coming from DevTools');\n          var lane = pickArbitraryLane(renderLanes);\n          workInProgress.lanes = mergeLanes(workInProgress.lanes, lane); // Schedule the error boundary to re-render using updated state\n\n          var update = createClassErrorUpdate(workInProgress, createCapturedValueAtFiber(error$1, workInProgress), lane);\n          enqueueCapturedUpdate(workInProgress, update);\n          break;\n        }\n    }\n\n    if (workInProgress.type !== workInProgress.elementType) {\n      // Lazy component props can't be validated in createElement\n      // because they're only guaranteed to be resolved here.\n      var innerPropTypes = Component.propTypes;\n\n      if (innerPropTypes) {\n        checkPropTypes(innerPropTypes, nextProps, // Resolved props\n        'prop', getComponentNameFromType(Component));\n      }\n    }\n  } // Push context providers early to prevent context stack mismatches.\n  // During mounting we don't know the child context yet as the instance doesn't exist.\n  // We will invalidate the child context in finishClassComponent() right after rendering.\n\n\n  var hasContext;\n\n  if (isContextProvider(Component)) {\n    hasContext = true;\n    pushContextProvider(workInProgress);\n  } else {\n    hasContext = false;\n  }\n\n  prepareToReadContext(workInProgress, renderLanes);\n  var instance = workInProgress.stateNode;\n  var shouldUpdate;\n\n  if (instance === null) {\n    resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress); // In the initial pass we might need to construct the instance.\n\n    constructClassInstance(workInProgress, Component, nextProps);\n    mountClassInstance(workInProgress, Component, nextProps, renderLanes);\n    shouldUpdate = true;\n  } else if (current === null) {\n    // In a resume, we'll already have an instance we can reuse.\n    shouldUpdate = resumeMountClassInstance(workInProgress, Component, nextProps, renderLanes);\n  } else {\n    shouldUpdate = updateClassInstance(current, workInProgress, Component, nextProps, renderLanes);\n  }\n\n  var nextUnitOfWork = finishClassComponent(current, workInProgress, Component, shouldUpdate, hasContext, renderLanes);\n\n  {\n    var inst = workInProgress.stateNode;\n\n    if (shouldUpdate && inst.props !== nextProps) {\n      if (!didWarnAboutReassigningProps) {\n        error('It looks like %s is reassigning its own `this.props` while rendering. ' + 'This is not supported and can lead to confusing bugs.', getComponentNameFromFiber(workInProgress) || 'a component');\n      }\n\n      didWarnAboutReassigningProps = true;\n    }\n  }\n\n  return nextUnitOfWork;\n}\n\nfunction finishClassComponent(current, workInProgress, Component, shouldUpdate, hasContext, renderLanes) {\n  // Refs should update even if shouldComponentUpdate returns false\n  markRef(current, workInProgress);\n  var didCaptureError = (workInProgress.flags & DidCapture) !== NoFlags;\n\n  if (!shouldUpdate && !didCaptureError) {\n    // Context providers should defer to sCU for rendering\n    if (hasContext) {\n      invalidateContextProvider(workInProgress, Component, false);\n    }\n\n    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n\n  var instance = workInProgress.stateNode; // Rerender\n\n  ReactCurrentOwner$1.current = workInProgress;\n  var nextChildren;\n\n  if (didCaptureError && typeof Component.getDerivedStateFromError !== 'function') {\n    // If we captured an error, but getDerivedStateFromError is not defined,\n    // unmount all the children. componentDidCatch will schedule an update to\n    // re-render a fallback. This is temporary until we migrate everyone to\n    // the new API.\n    // TODO: Warn in a future release.\n    nextChildren = null;\n\n    {\n      stopProfilerTimerIfRunning();\n    }\n  } else {\n    {\n      markComponentRenderStarted(workInProgress);\n    }\n\n    {\n      setIsRendering(true);\n      nextChildren = instance.render();\n\n      if ( workInProgress.mode & StrictLegacyMode) {\n        setIsStrictModeForDevtools(true);\n\n        try {\n          instance.render();\n        } finally {\n          setIsStrictModeForDevtools(false);\n        }\n      }\n\n      setIsRendering(false);\n    }\n\n    {\n      markComponentRenderStopped();\n    }\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n\n  if (current !== null && didCaptureError) {\n    // If we're recovering from an error, reconcile without reusing any of\n    // the existing children. Conceptually, the normal children and the children\n    // that are shown on error are two different sets, so we shouldn't reuse\n    // normal children even if their identities match.\n    forceUnmountCurrentAndReconcile(current, workInProgress, nextChildren, renderLanes);\n  } else {\n    reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  } // Memoize state using the values we just used to render.\n  // TODO: Restructure so we never read values from the instance.\n\n\n  workInProgress.memoizedState = instance.state; // The context might have changed so we need to recalculate it.\n\n  if (hasContext) {\n    invalidateContextProvider(workInProgress, Component, true);\n  }\n\n  return workInProgress.child;\n}\n\nfunction pushHostRootContext(workInProgress) {\n  var root = workInProgress.stateNode;\n\n  if (root.pendingContext) {\n    pushTopLevelContextObject(workInProgress, root.pendingContext, root.pendingContext !== root.context);\n  } else if (root.context) {\n    // Should always be set\n    pushTopLevelContextObject(workInProgress, root.context, false);\n  }\n\n  pushHostContainer(workInProgress, root.containerInfo);\n}\n\nfunction updateHostRoot(current, workInProgress, renderLanes) {\n  pushHostRootContext(workInProgress);\n\n  if (current === null) {\n    throw new Error('Should have a current fiber. This is a bug in React.');\n  }\n\n  var nextProps = workInProgress.pendingProps;\n  var prevState = workInProgress.memoizedState;\n  var prevChildren = prevState.element;\n  cloneUpdateQueue(current, workInProgress);\n  processUpdateQueue(workInProgress, nextProps, null, renderLanes);\n  var nextState = workInProgress.memoizedState;\n  var root = workInProgress.stateNode;\n  // being called \"element\".\n\n\n  var nextChildren = nextState.element;\n\n  if ( prevState.isDehydrated) {\n    // This is a hydration root whose shell has not yet hydrated. We should\n    // attempt to hydrate.\n    // Flip isDehydrated to false to indicate that when this render\n    // finishes, the root will no longer be dehydrated.\n    var overrideState = {\n      element: nextChildren,\n      isDehydrated: false,\n      cache: nextState.cache,\n      pendingSuspenseBoundaries: nextState.pendingSuspenseBoundaries,\n      transitions: nextState.transitions\n    };\n    var updateQueue = workInProgress.updateQueue; // `baseState` can always be the last state because the root doesn't\n    // have reducer functions so it doesn't need rebasing.\n\n    updateQueue.baseState = overrideState;\n    workInProgress.memoizedState = overrideState;\n\n    if (workInProgress.flags & ForceClientRender) {\n      // Something errored during a previous attempt to hydrate the shell, so we\n      // forced a client render.\n      var recoverableError = createCapturedValueAtFiber(new Error('There was an error while hydrating. Because the error happened outside ' + 'of a Suspense boundary, the entire root will switch to ' + 'client rendering.'), workInProgress);\n      return mountHostRootWithoutHydrating(current, workInProgress, nextChildren, renderLanes, recoverableError);\n    } else if (nextChildren !== prevChildren) {\n      var _recoverableError = createCapturedValueAtFiber(new Error('This root received an early update, before anything was able ' + 'hydrate. Switched the entire root to client rendering.'), workInProgress);\n\n      return mountHostRootWithoutHydrating(current, workInProgress, nextChildren, renderLanes, _recoverableError);\n    } else {\n      // The outermost shell has not hydrated yet. Start hydrating.\n      enterHydrationState(workInProgress);\n\n      var child = mountChildFibers(workInProgress, null, nextChildren, renderLanes);\n      workInProgress.child = child;\n      var node = child;\n\n      while (node) {\n        // Mark each child as hydrating. This is a fast path to know whether this\n        // tree is part of a hydrating tree. This is used to determine if a child\n        // node has fully mounted yet, and for scheduling event replaying.\n        // Conceptually this is similar to Placement in that a new subtree is\n        // inserted into the React tree here. It just happens to not need DOM\n        // mutations because it already exists.\n        node.flags = node.flags & ~Placement | Hydrating;\n        node = node.sibling;\n      }\n    }\n  } else {\n    // Root is not dehydrated. Either this is a client-only root, or it\n    // already hydrated.\n    resetHydrationState();\n\n    if (nextChildren === prevChildren) {\n      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n    }\n\n    reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  }\n\n  return workInProgress.child;\n}\n\nfunction mountHostRootWithoutHydrating(current, workInProgress, nextChildren, renderLanes, recoverableError) {\n  // Revert to client rendering.\n  resetHydrationState();\n  queueHydrationError(recoverableError);\n  workInProgress.flags |= ForceClientRender;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateHostComponent(current, workInProgress, renderLanes) {\n  pushHostContext(workInProgress);\n\n  if (current === null) {\n    tryToClaimNextHydratableInstance(workInProgress);\n  }\n\n  var type = workInProgress.type;\n  var nextProps = workInProgress.pendingProps;\n  var prevProps = current !== null ? current.memoizedProps : null;\n  var nextChildren = nextProps.children;\n  var isDirectTextChild = shouldSetTextContent(type, nextProps);\n\n  if (isDirectTextChild) {\n    // We special case a direct text child of a host node. This is a common\n    // case. We won't handle it as a reified child. We will instead handle\n    // this in the host environment that also has access to this prop. That\n    // avoids allocating another HostText fiber and traversing it.\n    nextChildren = null;\n  } else if (prevProps !== null && shouldSetTextContent(type, prevProps)) {\n    // If we're switching from a direct text child to a normal child, or to\n    // empty, we need to schedule the text content to be reset.\n    workInProgress.flags |= ContentReset;\n  }\n\n  markRef(current, workInProgress);\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateHostText(current, workInProgress) {\n  if (current === null) {\n    tryToClaimNextHydratableInstance(workInProgress);\n  } // Nothing to do here. This is terminal. We'll do the completion step\n  // immediately after.\n\n\n  return null;\n}\n\nfunction mountLazyComponent(_current, workInProgress, elementType, renderLanes) {\n  resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress);\n  var props = workInProgress.pendingProps;\n  var lazyComponent = elementType;\n  var payload = lazyComponent._payload;\n  var init = lazyComponent._init;\n  var Component = init(payload); // Store the unwrapped component in the type.\n\n  workInProgress.type = Component;\n  var resolvedTag = workInProgress.tag = resolveLazyComponentTag(Component);\n  var resolvedProps = resolveDefaultProps(Component, props);\n  var child;\n\n  switch (resolvedTag) {\n    case FunctionComponent:\n      {\n        {\n          validateFunctionComponentInDev(workInProgress, Component);\n          workInProgress.type = Component = resolveFunctionForHotReloading(Component);\n        }\n\n        child = updateFunctionComponent(null, workInProgress, Component, resolvedProps, renderLanes);\n        return child;\n      }\n\n    case ClassComponent:\n      {\n        {\n          workInProgress.type = Component = resolveClassForHotReloading(Component);\n        }\n\n        child = updateClassComponent(null, workInProgress, Component, resolvedProps, renderLanes);\n        return child;\n      }\n\n    case ForwardRef:\n      {\n        {\n          workInProgress.type = Component = resolveForwardRefForHotReloading(Component);\n        }\n\n        child = updateForwardRef(null, workInProgress, Component, resolvedProps, renderLanes);\n        return child;\n      }\n\n    case MemoComponent:\n      {\n        {\n          if (workInProgress.type !== workInProgress.elementType) {\n            var outerPropTypes = Component.propTypes;\n\n            if (outerPropTypes) {\n              checkPropTypes(outerPropTypes, resolvedProps, // Resolved for outer only\n              'prop', getComponentNameFromType(Component));\n            }\n          }\n        }\n\n        child = updateMemoComponent(null, workInProgress, Component, resolveDefaultProps(Component.type, resolvedProps), // The inner type can have defaults too\n        renderLanes);\n        return child;\n      }\n  }\n\n  var hint = '';\n\n  {\n    if (Component !== null && typeof Component === 'object' && Component.$$typeof === REACT_LAZY_TYPE) {\n      hint = ' Did you wrap a component in React.lazy() more than once?';\n    }\n  } // This message intentionally doesn't mention ForwardRef or MemoComponent\n  // because the fact that it's a separate type of work is an\n  // implementation detail.\n\n\n  throw new Error(\"Element type is invalid. Received a promise that resolves to: \" + Component + \". \" + (\"Lazy element type must resolve to a class or function.\" + hint));\n}\n\nfunction mountIncompleteClassComponent(_current, workInProgress, Component, nextProps, renderLanes) {\n  resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress); // Promote the fiber to a class and try rendering again.\n\n  workInProgress.tag = ClassComponent; // The rest of this function is a fork of `updateClassComponent`\n  // Push context providers early to prevent context stack mismatches.\n  // During mounting we don't know the child context yet as the instance doesn't exist.\n  // We will invalidate the child context in finishClassComponent() right after rendering.\n\n  var hasContext;\n\n  if (isContextProvider(Component)) {\n    hasContext = true;\n    pushContextProvider(workInProgress);\n  } else {\n    hasContext = false;\n  }\n\n  prepareToReadContext(workInProgress, renderLanes);\n  constructClassInstance(workInProgress, Component, nextProps);\n  mountClassInstance(workInProgress, Component, nextProps, renderLanes);\n  return finishClassComponent(null, workInProgress, Component, true, hasContext, renderLanes);\n}\n\nfunction mountIndeterminateComponent(_current, workInProgress, Component, renderLanes) {\n  resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress);\n  var props = workInProgress.pendingProps;\n  var context;\n\n  {\n    var unmaskedContext = getUnmaskedContext(workInProgress, Component, false);\n    context = getMaskedContext(workInProgress, unmaskedContext);\n  }\n\n  prepareToReadContext(workInProgress, renderLanes);\n  var value;\n  var hasId;\n\n  {\n    markComponentRenderStarted(workInProgress);\n  }\n\n  {\n    if (Component.prototype && typeof Component.prototype.render === 'function') {\n      var componentName = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutBadClass[componentName]) {\n        error(\"The <%s /> component appears to have a render method, but doesn't extend React.Component. \" + 'This is likely to cause errors. Change %s to extend React.Component instead.', componentName, componentName);\n\n        didWarnAboutBadClass[componentName] = true;\n      }\n    }\n\n    if (workInProgress.mode & StrictLegacyMode) {\n      ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress, null);\n    }\n\n    setIsRendering(true);\n    ReactCurrentOwner$1.current = workInProgress;\n    value = renderWithHooks(null, workInProgress, Component, props, context, renderLanes);\n    hasId = checkDidRenderIdHook();\n    setIsRendering(false);\n  }\n\n  {\n    markComponentRenderStopped();\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n\n  {\n    // Support for module components is deprecated and is removed behind a flag.\n    // Whether or not it would crash later, we want to show a good message in DEV first.\n    if (typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) {\n      var _componentName = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutModulePatternComponent[_componentName]) {\n        error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + \"If you can't use a class try assigning the prototype on the function as a workaround. \" + \"`%s.prototype = React.Component.prototype`. Don't use an arrow function since it \" + 'cannot be called with `new` by React.', _componentName, _componentName, _componentName);\n\n        didWarnAboutModulePatternComponent[_componentName] = true;\n      }\n    }\n  }\n\n  if ( // Run these checks in production only if the flag is off.\n  // Eventually we'll delete this branch altogether.\n   typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) {\n    {\n      var _componentName2 = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutModulePatternComponent[_componentName2]) {\n        error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + \"If you can't use a class try assigning the prototype on the function as a workaround. \" + \"`%s.prototype = React.Component.prototype`. Don't use an arrow function since it \" + 'cannot be called with `new` by React.', _componentName2, _componentName2, _componentName2);\n\n        didWarnAboutModulePatternComponent[_componentName2] = true;\n      }\n    } // Proceed under the assumption that this is a class instance\n\n\n    workInProgress.tag = ClassComponent; // Throw out any hooks that were used.\n\n    workInProgress.memoizedState = null;\n    workInProgress.updateQueue = null; // Push context providers early to prevent context stack mismatches.\n    // During mounting we don't know the child context yet as the instance doesn't exist.\n    // We will invalidate the child context in finishClassComponent() right after rendering.\n\n    var hasContext = false;\n\n    if (isContextProvider(Component)) {\n      hasContext = true;\n      pushContextProvider(workInProgress);\n    } else {\n      hasContext = false;\n    }\n\n    workInProgress.memoizedState = value.state !== null && value.state !== undefined ? value.state : null;\n    initializeUpdateQueue(workInProgress);\n    adoptClassInstance(workInProgress, value);\n    mountClassInstance(workInProgress, Component, props, renderLanes);\n    return finishClassComponent(null, workInProgress, Component, true, hasContext, renderLanes);\n  } else {\n    // Proceed under the assumption that this is a function component\n    workInProgress.tag = FunctionComponent;\n\n    {\n\n      if ( workInProgress.mode & StrictLegacyMode) {\n        setIsStrictModeForDevtools(true);\n\n        try {\n          value = renderWithHooks(null, workInProgress, Component, props, context, renderLanes);\n          hasId = checkDidRenderIdHook();\n        } finally {\n          setIsStrictModeForDevtools(false);\n        }\n      }\n    }\n\n    if (getIsHydrating() && hasId) {\n      pushMaterializedTreeId(workInProgress);\n    }\n\n    reconcileChildren(null, workInProgress, value, renderLanes);\n\n    {\n      validateFunctionComponentInDev(workInProgress, Component);\n    }\n\n    return workInProgress.child;\n  }\n}\n\nfunction validateFunctionComponentInDev(workInProgress, Component) {\n  {\n    if (Component) {\n      if (Component.childContextTypes) {\n        error('%s(...): childContextTypes cannot be defined on a function component.', Component.displayName || Component.name || 'Component');\n      }\n    }\n\n    if (workInProgress.ref !== null) {\n      var info = '';\n      var ownerName = getCurrentFiberOwnerNameInDevOrNull();\n\n      if (ownerName) {\n        info += '\\n\\nCheck the render method of `' + ownerName + '`.';\n      }\n\n      var warningKey = ownerName || '';\n      var debugSource = workInProgress._debugSource;\n\n      if (debugSource) {\n        warningKey = debugSource.fileName + ':' + debugSource.lineNumber;\n      }\n\n      if (!didWarnAboutFunctionRefs[warningKey]) {\n        didWarnAboutFunctionRefs[warningKey] = true;\n\n        error('Function components cannot be given refs. ' + 'Attempts to access this ref will fail. ' + 'Did you mean to use React.forwardRef()?%s', info);\n      }\n    }\n\n    if (typeof Component.getDerivedStateFromProps === 'function') {\n      var _componentName3 = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3]) {\n        error('%s: Function components do not support getDerivedStateFromProps.', _componentName3);\n\n        didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3] = true;\n      }\n    }\n\n    if (typeof Component.contextType === 'object' && Component.contextType !== null) {\n      var _componentName4 = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutContextTypeOnFunctionComponent[_componentName4]) {\n        error('%s: Function components do not support contextType.', _componentName4);\n\n        didWarnAboutContextTypeOnFunctionComponent[_componentName4] = true;\n      }\n    }\n  }\n}\n\nvar SUSPENDED_MARKER = {\n  dehydrated: null,\n  treeContext: null,\n  retryLane: NoLane\n};\n\nfunction mountSuspenseOffscreenState(renderLanes) {\n  return {\n    baseLanes: renderLanes,\n    cachePool: getSuspendedCache(),\n    transitions: null\n  };\n}\n\nfunction updateSuspenseOffscreenState(prevOffscreenState, renderLanes) {\n  var cachePool = null;\n\n  return {\n    baseLanes: mergeLanes(prevOffscreenState.baseLanes, renderLanes),\n    cachePool: cachePool,\n    transitions: prevOffscreenState.transitions\n  };\n} // TODO: Probably should inline this back\n\n\nfunction shouldRemainOnFallback(suspenseContext, current, workInProgress, renderLanes) {\n  // If we're already showing a fallback, there are cases where we need to\n  // remain on that fallback regardless of whether the content has resolved.\n  // For example, SuspenseList coordinates when nested content appears.\n  if (current !== null) {\n    var suspenseState = current.memoizedState;\n\n    if (suspenseState === null) {\n      // Currently showing content. Don't hide it, even if ForceSuspenseFallback\n      // is true. More precise name might be \"ForceRemainSuspenseFallback\".\n      // Note: This is a factoring smell. Can't remain on a fallback if there's\n      // no fallback to remain on.\n      return false;\n    }\n  } // Not currently showing content. Consult the Suspense context.\n\n\n  return hasSuspenseContext(suspenseContext, ForceSuspenseFallback);\n}\n\nfunction getRemainingWorkInPrimaryTree(current, renderLanes) {\n  // TODO: Should not remove render lanes that were pinged during this render\n  return removeLanes(current.childLanes, renderLanes);\n}\n\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps; // This is used by DevTools to force a boundary to suspend.\n\n  {\n    if (shouldSuspend(workInProgress)) {\n      workInProgress.flags |= DidCapture;\n    }\n  }\n\n  var suspenseContext = suspenseStackCursor.current;\n  var showFallback = false;\n  var didSuspend = (workInProgress.flags & DidCapture) !== NoFlags;\n\n  if (didSuspend || shouldRemainOnFallback(suspenseContext, current)) {\n    // Something in this boundary's subtree already suspended. Switch to\n    // rendering the fallback children.\n    showFallback = true;\n    workInProgress.flags &= ~DidCapture;\n  } else {\n    // Attempting the main content\n    if (current === null || current.memoizedState !== null) {\n      // This is a new mount or this boundary is already showing a fallback state.\n      // Mark this subtree context as having at least one invisible parent that could\n      // handle the fallback state.\n      // Avoided boundaries are not considered since they cannot handle preferred fallback states.\n      {\n        suspenseContext = addSubtreeSuspenseContext(suspenseContext, InvisibleParentSuspenseContext);\n      }\n    }\n  }\n\n  suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n  pushSuspenseContext(workInProgress, suspenseContext); // OK, the next part is confusing. We're about to reconcile the Suspense\n  // boundary's children. This involves some custom reconciliation logic. Two\n  // main reasons this is so complicated.\n  //\n  // First, Legacy Mode has different semantics for backwards compatibility. The\n  // primary tree will commit in an inconsistent state, so when we do the\n  // second pass to render the fallback, we do some exceedingly, uh, clever\n  // hacks to make that not totally break. Like transferring effects and\n  // deletions from hidden tree. In Concurrent Mode, it's much simpler,\n  // because we bailout on the primary tree completely and leave it in its old\n  // state, no effects. Same as what we do for Offscreen (except that\n  // Offscreen doesn't have the first render pass).\n  //\n  // Second is hydration. During hydration, the Suspense fiber has a slightly\n  // different layout, where the child points to a dehydrated fragment, which\n  // contains the DOM rendered by the server.\n  //\n  // Third, even if you set all that aside, Suspense is like error boundaries in\n  // that we first we try to render one tree, and if that fails, we render again\n  // and switch to a different tree. Like a try/catch block. So we have to track\n  // which branch we're currently rendering. Ideally we would model this using\n  // a stack.\n\n  if (current === null) {\n    // Initial mount\n    // Special path for hydration\n    // If we're currently hydrating, try to hydrate this boundary.\n    tryToClaimNextHydratableInstance(workInProgress); // This could've been a dehydrated suspense component.\n\n    var suspenseState = workInProgress.memoizedState;\n\n    if (suspenseState !== null) {\n      var dehydrated = suspenseState.dehydrated;\n\n      if (dehydrated !== null) {\n        return mountDehydratedSuspenseComponent(workInProgress, dehydrated);\n      }\n    }\n\n    var nextPrimaryChildren = nextProps.children;\n    var nextFallbackChildren = nextProps.fallback;\n\n    if (showFallback) {\n      var fallbackFragment = mountSuspenseFallbackChildren(workInProgress, nextPrimaryChildren, nextFallbackChildren, renderLanes);\n      var primaryChildFragment = workInProgress.child;\n      primaryChildFragment.memoizedState = mountSuspenseOffscreenState(renderLanes);\n      workInProgress.memoizedState = SUSPENDED_MARKER;\n\n      return fallbackFragment;\n    } else {\n      return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren);\n    }\n  } else {\n    // This is an update.\n    // Special path for hydration\n    var prevState = current.memoizedState;\n\n    if (prevState !== null) {\n      var _dehydrated = prevState.dehydrated;\n\n      if (_dehydrated !== null) {\n        return updateDehydratedSuspenseComponent(current, workInProgress, didSuspend, nextProps, _dehydrated, prevState, renderLanes);\n      }\n    }\n\n    if (showFallback) {\n      var _nextFallbackChildren = nextProps.fallback;\n      var _nextPrimaryChildren = nextProps.children;\n      var fallbackChildFragment = updateSuspenseFallbackChildren(current, workInProgress, _nextPrimaryChildren, _nextFallbackChildren, renderLanes);\n      var _primaryChildFragment2 = workInProgress.child;\n      var prevOffscreenState = current.child.memoizedState;\n      _primaryChildFragment2.memoizedState = prevOffscreenState === null ? mountSuspenseOffscreenState(renderLanes) : updateSuspenseOffscreenState(prevOffscreenState, renderLanes);\n\n      _primaryChildFragment2.childLanes = getRemainingWorkInPrimaryTree(current, renderLanes);\n      workInProgress.memoizedState = SUSPENDED_MARKER;\n      return fallbackChildFragment;\n    } else {\n      var _nextPrimaryChildren2 = nextProps.children;\n\n      var _primaryChildFragment3 = updateSuspensePrimaryChildren(current, workInProgress, _nextPrimaryChildren2, renderLanes);\n\n      workInProgress.memoizedState = null;\n      return _primaryChildFragment3;\n    }\n  }\n}\n\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren, renderLanes) {\n  var mode = workInProgress.mode;\n  var primaryChildProps = {\n    mode: 'visible',\n    children: primaryChildren\n  };\n  var primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, mode);\n  primaryChildFragment.return = workInProgress;\n  workInProgress.child = primaryChildFragment;\n  return primaryChildFragment;\n}\n\nfunction mountSuspenseFallbackChildren(workInProgress, primaryChildren, fallbackChildren, renderLanes) {\n  var mode = workInProgress.mode;\n  var progressedPrimaryFragment = workInProgress.child;\n  var primaryChildProps = {\n    mode: 'hidden',\n    children: primaryChildren\n  };\n  var primaryChildFragment;\n  var fallbackChildFragment;\n\n  if ((mode & ConcurrentMode) === NoMode && progressedPrimaryFragment !== null) {\n    // In legacy mode, we commit the primary tree as if it successfully\n    // completed, even though it's in an inconsistent state.\n    primaryChildFragment = progressedPrimaryFragment;\n    primaryChildFragment.childLanes = NoLanes;\n    primaryChildFragment.pendingProps = primaryChildProps;\n\n    if ( workInProgress.mode & ProfileMode) {\n      // Reset the durations from the first pass so they aren't included in the\n      // final amounts. This seems counterintuitive, since we're intentionally\n      // not measuring part of the render phase, but this makes it match what we\n      // do in Concurrent Mode.\n      primaryChildFragment.actualDuration = 0;\n      primaryChildFragment.actualStartTime = -1;\n      primaryChildFragment.selfBaseDuration = 0;\n      primaryChildFragment.treeBaseDuration = 0;\n    }\n\n    fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null);\n  } else {\n    primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, mode);\n    fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null);\n  }\n\n  primaryChildFragment.return = workInProgress;\n  fallbackChildFragment.return = workInProgress;\n  primaryChildFragment.sibling = fallbackChildFragment;\n  workInProgress.child = primaryChildFragment;\n  return fallbackChildFragment;\n}\n\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode, renderLanes) {\n  // The props argument to `createFiberFromOffscreen` is `any` typed, so we use\n  // this wrapper function to constrain it.\n  return createFiberFromOffscreen(offscreenProps, mode, NoLanes, null);\n}\n\nfunction updateWorkInProgressOffscreenFiber(current, offscreenProps) {\n  // The props argument to `createWorkInProgress` is `any` typed, so we use this\n  // wrapper function to constrain it.\n  return createWorkInProgress(current, offscreenProps);\n}\n\nfunction updateSuspensePrimaryChildren(current, workInProgress, primaryChildren, renderLanes) {\n  var currentPrimaryChildFragment = current.child;\n  var currentFallbackChildFragment = currentPrimaryChildFragment.sibling;\n  var primaryChildFragment = updateWorkInProgressOffscreenFiber(currentPrimaryChildFragment, {\n    mode: 'visible',\n    children: primaryChildren\n  });\n\n  if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n    primaryChildFragment.lanes = renderLanes;\n  }\n\n  primaryChildFragment.return = workInProgress;\n  primaryChildFragment.sibling = null;\n\n  if (currentFallbackChildFragment !== null) {\n    // Delete the fallback child fragment\n    var deletions = workInProgress.deletions;\n\n    if (deletions === null) {\n      workInProgress.deletions = [currentFallbackChildFragment];\n      workInProgress.flags |= ChildDeletion;\n    } else {\n      deletions.push(currentFallbackChildFragment);\n    }\n  }\n\n  workInProgress.child = primaryChildFragment;\n  return primaryChildFragment;\n}\n\nfunction updateSuspenseFallbackChildren(current, workInProgress, primaryChildren, fallbackChildren, renderLanes) {\n  var mode = workInProgress.mode;\n  var currentPrimaryChildFragment = current.child;\n  var currentFallbackChildFragment = currentPrimaryChildFragment.sibling;\n  var primaryChildProps = {\n    mode: 'hidden',\n    children: primaryChildren\n  };\n  var primaryChildFragment;\n\n  if ( // In legacy mode, we commit the primary tree as if it successfully\n  // completed, even though it's in an inconsistent state.\n  (mode & ConcurrentMode) === NoMode && // Make sure we're on the second pass, i.e. the primary child fragment was\n  // already cloned. In legacy mode, the only case where this isn't true is\n  // when DevTools forces us to display a fallback; we skip the first render\n  // pass entirely and go straight to rendering the fallback. (In Concurrent\n  // Mode, SuspenseList can also trigger this scenario, but this is a legacy-\n  // only codepath.)\n  workInProgress.child !== currentPrimaryChildFragment) {\n    var progressedPrimaryFragment = workInProgress.child;\n    primaryChildFragment = progressedPrimaryFragment;\n    primaryChildFragment.childLanes = NoLanes;\n    primaryChildFragment.pendingProps = primaryChildProps;\n\n    if ( workInProgress.mode & ProfileMode) {\n      // Reset the durations from the first pass so they aren't included in the\n      // final amounts. This seems counterintuitive, since we're intentionally\n      // not measuring part of the render phase, but this makes it match what we\n      // do in Concurrent Mode.\n      primaryChildFragment.actualDuration = 0;\n      primaryChildFragment.actualStartTime = -1;\n      primaryChildFragment.selfBaseDuration = currentPrimaryChildFragment.selfBaseDuration;\n      primaryChildFragment.treeBaseDuration = currentPrimaryChildFragment.treeBaseDuration;\n    } // The fallback fiber was added as a deletion during the first pass.\n    // However, since we're going to remain on the fallback, we no longer want\n    // to delete it.\n\n\n    workInProgress.deletions = null;\n  } else {\n    primaryChildFragment = updateWorkInProgressOffscreenFiber(currentPrimaryChildFragment, primaryChildProps); // Since we're reusing a current tree, we need to reuse the flags, too.\n    // (We don't do this in legacy mode, because in legacy mode we don't re-use\n    // the current tree; see previous branch.)\n\n    primaryChildFragment.subtreeFlags = currentPrimaryChildFragment.subtreeFlags & StaticMask;\n  }\n\n  var fallbackChildFragment;\n\n  if (currentFallbackChildFragment !== null) {\n    fallbackChildFragment = createWorkInProgress(currentFallbackChildFragment, fallbackChildren);\n  } else {\n    fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null); // Needs a placement effect because the parent (the Suspense boundary) already\n    // mounted but this is a new fiber.\n\n    fallbackChildFragment.flags |= Placement;\n  }\n\n  fallbackChildFragment.return = workInProgress;\n  primaryChildFragment.return = workInProgress;\n  primaryChildFragment.sibling = fallbackChildFragment;\n  workInProgress.child = primaryChildFragment;\n  return fallbackChildFragment;\n}\n\nfunction retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, recoverableError) {\n  // Falling back to client rendering. Because this has performance\n  // implications, it's considered a recoverable error, even though the user\n  // likely won't observe anything wrong with the UI.\n  //\n  // The error is passed in as an argument to enforce that every caller provide\n  // a custom message, or explicitly opt out (currently the only path that opts\n  // out is legacy mode; every concurrent path provides an error).\n  if (recoverableError !== null) {\n    queueHydrationError(recoverableError);\n  } // This will add the old fiber to the deletion list\n\n\n  reconcileChildFibers(workInProgress, current.child, null, renderLanes); // We're now not suspended nor dehydrated.\n\n  var nextProps = workInProgress.pendingProps;\n  var primaryChildren = nextProps.children;\n  var primaryChildFragment = mountSuspensePrimaryChildren(workInProgress, primaryChildren); // Needs a placement effect because the parent (the Suspense boundary) already\n  // mounted but this is a new fiber.\n\n  primaryChildFragment.flags |= Placement;\n  workInProgress.memoizedState = null;\n  return primaryChildFragment;\n}\n\nfunction mountSuspenseFallbackAfterRetryWithoutHydrating(current, workInProgress, primaryChildren, fallbackChildren, renderLanes) {\n  var fiberMode = workInProgress.mode;\n  var primaryChildProps = {\n    mode: 'visible',\n    children: primaryChildren\n  };\n  var primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, fiberMode);\n  var fallbackChildFragment = createFiberFromFragment(fallbackChildren, fiberMode, renderLanes, null); // Needs a placement effect because the parent (the Suspense\n  // boundary) already mounted but this is a new fiber.\n\n  fallbackChildFragment.flags |= Placement;\n  primaryChildFragment.return = workInProgress;\n  fallbackChildFragment.return = workInProgress;\n  primaryChildFragment.sibling = fallbackChildFragment;\n  workInProgress.child = primaryChildFragment;\n\n  if ((workInProgress.mode & ConcurrentMode) !== NoMode) {\n    // We will have dropped the effect list which contains the\n    // deletion. We need to reconcile to delete the current child.\n    reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n  }\n\n  return fallbackChildFragment;\n}\n\nfunction mountDehydratedSuspenseComponent(workInProgress, suspenseInstance, renderLanes) {\n  // During the first pass, we'll bail out and not drill into the children.\n  // Instead, we'll leave the content in place and try to hydrate it later.\n  if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n    {\n      error('Cannot hydrate Suspense in legacy mode. Switch from ' + 'ReactDOM.hydrate(element, container) to ' + 'ReactDOMClient.hydrateRoot(container, <App />)' + '.render(element) or remove the Suspense components from ' + 'the server rendered components.');\n    }\n\n    workInProgress.lanes = laneToLanes(SyncLane);\n  } else if (isSuspenseInstanceFallback(suspenseInstance)) {\n    // This is a client-only boundary. Since we won't get any content from the server\n    // for this, we need to schedule that at a higher priority based on when it would\n    // have timed out. In theory we could render it in this pass but it would have the\n    // wrong priority associated with it and will prevent hydration of parent path.\n    // Instead, we'll leave work left on it to render it in a separate commit.\n    // TODO This time should be the time at which the server rendered response that is\n    // a parent to this boundary was displayed. However, since we currently don't have\n    // a protocol to transfer that time, we'll just estimate it by using the current\n    // time. This will mean that Suspense timeouts are slightly shifted to later than\n    // they should be.\n    // Schedule a normal pri update to render this content.\n    workInProgress.lanes = laneToLanes(DefaultHydrationLane);\n  } else {\n    // We'll continue hydrating the rest at offscreen priority since we'll already\n    // be showing the right content coming from the server, it is no rush.\n    workInProgress.lanes = laneToLanes(OffscreenLane);\n  }\n\n  return null;\n}\n\nfunction updateDehydratedSuspenseComponent(current, workInProgress, didSuspend, nextProps, suspenseInstance, suspenseState, renderLanes) {\n  if (!didSuspend) {\n    // This is the first render pass. Attempt to hydrate.\n    // We should never be hydrating at this point because it is the first pass,\n    // but after we've already committed once.\n    warnIfHydrating();\n\n    if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n      return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, // TODO: When we delete legacy mode, we should make this error argument\n      // required — every concurrent mode path that causes hydration to\n      // de-opt to client rendering should have an error message.\n      null);\n    }\n\n    if (isSuspenseInstanceFallback(suspenseInstance)) {\n      // This boundary is in a permanent fallback state. In this case, we'll never\n      // get an update and we'll never be able to hydrate the final content. Let's just try the\n      // client side render instead.\n      var digest, message, stack;\n\n      {\n        var _getSuspenseInstanceF = getSuspenseInstanceFallbackErrorDetails(suspenseInstance);\n\n        digest = _getSuspenseInstanceF.digest;\n        message = _getSuspenseInstanceF.message;\n        stack = _getSuspenseInstanceF.stack;\n      }\n\n      var error;\n\n      if (message) {\n        // eslint-disable-next-line react-internal/prod-error-codes\n        error = new Error(message);\n      } else {\n        error = new Error('The server could not finish this Suspense boundary, likely ' + 'due to an error during server rendering. Switched to ' + 'client rendering.');\n      }\n\n      var capturedValue = createCapturedValue(error, digest, stack);\n      return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, capturedValue);\n    }\n    // any context has changed, we need to treat is as if the input might have changed.\n\n\n    var hasContextChanged = includesSomeLane(renderLanes, current.childLanes);\n\n    if (didReceiveUpdate || hasContextChanged) {\n      // This boundary has changed since the first render. This means that we are now unable to\n      // hydrate it. We might still be able to hydrate it using a higher priority lane.\n      var root = getWorkInProgressRoot();\n\n      if (root !== null) {\n        var attemptHydrationAtLane = getBumpedLaneForHydration(root, renderLanes);\n\n        if (attemptHydrationAtLane !== NoLane && attemptHydrationAtLane !== suspenseState.retryLane) {\n          // Intentionally mutating since this render will get interrupted. This\n          // is one of the very rare times where we mutate the current tree\n          // during the render phase.\n          suspenseState.retryLane = attemptHydrationAtLane; // TODO: Ideally this would inherit the event time of the current render\n\n          var eventTime = NoTimestamp;\n          enqueueConcurrentRenderForLane(current, attemptHydrationAtLane);\n          scheduleUpdateOnFiber(root, current, attemptHydrationAtLane, eventTime);\n        }\n      } // If we have scheduled higher pri work above, this will probably just abort the render\n      // since we now have higher priority work, but in case it doesn't, we need to prepare to\n      // render something, if we time out. Even if that requires us to delete everything and\n      // skip hydration.\n      // Delay having to do this as long as the suspense timeout allows us.\n\n\n      renderDidSuspendDelayIfPossible();\n\n      var _capturedValue = createCapturedValue(new Error('This Suspense boundary received an update before it finished ' + 'hydrating. This caused the boundary to switch to client rendering. ' + 'The usual way to fix this is to wrap the original update ' + 'in startTransition.'));\n\n      return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, _capturedValue);\n    } else if (isSuspenseInstancePending(suspenseInstance)) {\n      // This component is still pending more data from the server, so we can't hydrate its\n      // content. We treat it as if this component suspended itself. It might seem as if\n      // we could just try to render it client-side instead. However, this will perform a\n      // lot of unnecessary work and is unlikely to complete since it often will suspend\n      // on missing data anyway. Additionally, the server might be able to render more\n      // than we can on the client yet. In that case we'd end up with more fallback states\n      // on the client than if we just leave it alone. If the server times out or errors\n      // these should update this boundary to the permanent Fallback state instead.\n      // Mark it as having captured (i.e. suspended).\n      workInProgress.flags |= DidCapture; // Leave the child in place. I.e. the dehydrated fragment.\n\n      workInProgress.child = current.child; // Register a callback to retry this boundary once the server has sent the result.\n\n      var retry = retryDehydratedSuspenseBoundary.bind(null, current);\n      registerSuspenseInstanceRetry(suspenseInstance, retry);\n      return null;\n    } else {\n      // This is the first attempt.\n      reenterHydrationStateFromDehydratedSuspenseInstance(workInProgress, suspenseInstance, suspenseState.treeContext);\n      var primaryChildren = nextProps.children;\n      var primaryChildFragment = mountSuspensePrimaryChildren(workInProgress, primaryChildren); // Mark the children as hydrating. This is a fast path to know whether this\n      // tree is part of a hydrating tree. This is used to determine if a child\n      // node has fully mounted yet, and for scheduling event replaying.\n      // Conceptually this is similar to Placement in that a new subtree is\n      // inserted into the React tree here. It just happens to not need DOM\n      // mutations because it already exists.\n\n      primaryChildFragment.flags |= Hydrating;\n      return primaryChildFragment;\n    }\n  } else {\n    // This is the second render pass. We already attempted to hydrated, but\n    // something either suspended or errored.\n    if (workInProgress.flags & ForceClientRender) {\n      // Something errored during hydration. Try again without hydrating.\n      workInProgress.flags &= ~ForceClientRender;\n\n      var _capturedValue2 = createCapturedValue(new Error('There was an error while hydrating this Suspense boundary. ' + 'Switched to client rendering.'));\n\n      return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, _capturedValue2);\n    } else if (workInProgress.memoizedState !== null) {\n      // Something suspended and we should still be in dehydrated mode.\n      // Leave the existing child in place.\n      workInProgress.child = current.child; // The dehydrated completion pass expects this flag to be there\n      // but the normal suspense pass doesn't.\n\n      workInProgress.flags |= DidCapture;\n      return null;\n    } else {\n      // Suspended but we should no longer be in dehydrated mode.\n      // Therefore we now have to render the fallback.\n      var nextPrimaryChildren = nextProps.children;\n      var nextFallbackChildren = nextProps.fallback;\n      var fallbackChildFragment = mountSuspenseFallbackAfterRetryWithoutHydrating(current, workInProgress, nextPrimaryChildren, nextFallbackChildren, renderLanes);\n      var _primaryChildFragment4 = workInProgress.child;\n      _primaryChildFragment4.memoizedState = mountSuspenseOffscreenState(renderLanes);\n      workInProgress.memoizedState = SUSPENDED_MARKER;\n      return fallbackChildFragment;\n    }\n  }\n}\n\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n  fiber.lanes = mergeLanes(fiber.lanes, renderLanes);\n  var alternate = fiber.alternate;\n\n  if (alternate !== null) {\n    alternate.lanes = mergeLanes(alternate.lanes, renderLanes);\n  }\n\n  scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\n\nfunction propagateSuspenseContextChange(workInProgress, firstChild, renderLanes) {\n  // Mark any Suspense boundaries with fallbacks as having work to do.\n  // If they were previously forced into fallbacks, they may now be able\n  // to unblock.\n  var node = firstChild;\n\n  while (node !== null) {\n    if (node.tag === SuspenseComponent) {\n      var state = node.memoizedState;\n\n      if (state !== null) {\n        scheduleSuspenseWorkOnFiber(node, renderLanes, workInProgress);\n      }\n    } else if (node.tag === SuspenseListComponent) {\n      // If the tail is hidden there might not be an Suspense boundaries\n      // to schedule work on. In this case we have to schedule it on the\n      // list itself.\n      // We don't have to traverse to the children of the list since\n      // the list will propagate the change when it rerenders.\n      scheduleSuspenseWorkOnFiber(node, renderLanes, workInProgress);\n    } else if (node.child !== null) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n\n    if (node === workInProgress) {\n      return;\n    }\n\n    while (node.sibling === null) {\n      if (node.return === null || node.return === workInProgress) {\n        return;\n      }\n\n      node = node.return;\n    }\n\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n}\n\nfunction findLastContentRow(firstChild) {\n  // This is going to find the last row among these children that is already\n  // showing content on the screen, as opposed to being in fallback state or\n  // new. If a row has multiple Suspense boundaries, any of them being in the\n  // fallback state, counts as the whole row being in a fallback state.\n  // Note that the \"rows\" will be workInProgress, but any nested children\n  // will still be current since we haven't rendered them yet. The mounted\n  // order may not be the same as the new order. We use the new order.\n  var row = firstChild;\n  var lastContentRow = null;\n\n  while (row !== null) {\n    var currentRow = row.alternate; // New rows can't be content rows.\n\n    if (currentRow !== null && findFirstSuspended(currentRow) === null) {\n      lastContentRow = row;\n    }\n\n    row = row.sibling;\n  }\n\n  return lastContentRow;\n}\n\nfunction validateRevealOrder(revealOrder) {\n  {\n    if (revealOrder !== undefined && revealOrder !== 'forwards' && revealOrder !== 'backwards' && revealOrder !== 'together' && !didWarnAboutRevealOrder[revealOrder]) {\n      didWarnAboutRevealOrder[revealOrder] = true;\n\n      if (typeof revealOrder === 'string') {\n        switch (revealOrder.toLowerCase()) {\n          case 'together':\n          case 'forwards':\n          case 'backwards':\n            {\n              error('\"%s\" is not a valid value for revealOrder on <SuspenseList />. ' + 'Use lowercase \"%s\" instead.', revealOrder, revealOrder.toLowerCase());\n\n              break;\n            }\n\n          case 'forward':\n          case 'backward':\n            {\n              error('\"%s\" is not a valid value for revealOrder on <SuspenseList />. ' + 'React uses the -s suffix in the spelling. Use \"%ss\" instead.', revealOrder, revealOrder.toLowerCase());\n\n              break;\n            }\n\n          default:\n            error('\"%s\" is not a supported revealOrder on <SuspenseList />. ' + 'Did you mean \"together\", \"forwards\" or \"backwards\"?', revealOrder);\n\n            break;\n        }\n      } else {\n        error('%s is not a supported value for revealOrder on <SuspenseList />. ' + 'Did you mean \"together\", \"forwards\" or \"backwards\"?', revealOrder);\n      }\n    }\n  }\n}\n\nfunction validateTailOptions(tailMode, revealOrder) {\n  {\n    if (tailMode !== undefined && !didWarnAboutTailOptions[tailMode]) {\n      if (tailMode !== 'collapsed' && tailMode !== 'hidden') {\n        didWarnAboutTailOptions[tailMode] = true;\n\n        error('\"%s\" is not a supported value for tail on <SuspenseList />. ' + 'Did you mean \"collapsed\" or \"hidden\"?', tailMode);\n      } else if (revealOrder !== 'forwards' && revealOrder !== 'backwards') {\n        didWarnAboutTailOptions[tailMode] = true;\n\n        error('<SuspenseList tail=\"%s\" /> is only valid if revealOrder is ' + '\"forwards\" or \"backwards\". ' + 'Did you mean to specify revealOrder=\"forwards\"?', tailMode);\n      }\n    }\n  }\n}\n\nfunction validateSuspenseListNestedChild(childSlot, index) {\n  {\n    var isAnArray = isArray(childSlot);\n    var isIterable = !isAnArray && typeof getIteratorFn(childSlot) === 'function';\n\n    if (isAnArray || isIterable) {\n      var type = isAnArray ? 'array' : 'iterable';\n\n      error('A nested %s was passed to row #%s in <SuspenseList />. Wrap it in ' + 'an additional SuspenseList to configure its revealOrder: ' + '<SuspenseList revealOrder=...> ... ' + '<SuspenseList revealOrder=...>{%s}</SuspenseList> ... ' + '</SuspenseList>', type, index, type);\n\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction validateSuspenseListChildren(children, revealOrder) {\n  {\n    if ((revealOrder === 'forwards' || revealOrder === 'backwards') && children !== undefined && children !== null && children !== false) {\n      if (isArray(children)) {\n        for (var i = 0; i < children.length; i++) {\n          if (!validateSuspenseListNestedChild(children[i], i)) {\n            return;\n          }\n        }\n      } else {\n        var iteratorFn = getIteratorFn(children);\n\n        if (typeof iteratorFn === 'function') {\n          var childrenIterator = iteratorFn.call(children);\n\n          if (childrenIterator) {\n            var step = childrenIterator.next();\n            var _i = 0;\n\n            for (; !step.done; step = childrenIterator.next()) {\n              if (!validateSuspenseListNestedChild(step.value, _i)) {\n                return;\n              }\n\n              _i++;\n            }\n          }\n        } else {\n          error('A single row was passed to a <SuspenseList revealOrder=\"%s\" />. ' + 'This is not useful since it needs multiple rows. ' + 'Did you mean to pass multiple children or an array?', revealOrder);\n        }\n      }\n    }\n  }\n}\n\nfunction initSuspenseListRenderState(workInProgress, isBackwards, tail, lastContentRow, tailMode) {\n  var renderState = workInProgress.memoizedState;\n\n  if (renderState === null) {\n    workInProgress.memoizedState = {\n      isBackwards: isBackwards,\n      rendering: null,\n      renderingStartTime: 0,\n      last: lastContentRow,\n      tail: tail,\n      tailMode: tailMode\n    };\n  } else {\n    // We can reuse the existing object from previous renders.\n    renderState.isBackwards = isBackwards;\n    renderState.rendering = null;\n    renderState.renderingStartTime = 0;\n    renderState.last = lastContentRow;\n    renderState.tail = tail;\n    renderState.tailMode = tailMode;\n  }\n} // This can end up rendering this component multiple passes.\n// The first pass splits the children fibers into two sets. A head and tail.\n// We first render the head. If anything is in fallback state, we do another\n// pass through beginWork to rerender all children (including the tail) with\n// the force suspend context. If the first render didn't have anything in\n// in fallback state. Then we render each row in the tail one-by-one.\n// That happens in the completeWork phase without going back to beginWork.\n\n\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps;\n  var revealOrder = nextProps.revealOrder;\n  var tailMode = nextProps.tail;\n  var newChildren = nextProps.children;\n  validateRevealOrder(revealOrder);\n  validateTailOptions(tailMode, revealOrder);\n  validateSuspenseListChildren(newChildren, revealOrder);\n  reconcileChildren(current, workInProgress, newChildren, renderLanes);\n  var suspenseContext = suspenseStackCursor.current;\n  var shouldForceFallback = hasSuspenseContext(suspenseContext, ForceSuspenseFallback);\n\n  if (shouldForceFallback) {\n    suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);\n    workInProgress.flags |= DidCapture;\n  } else {\n    var didSuspendBefore = current !== null && (current.flags & DidCapture) !== NoFlags;\n\n    if (didSuspendBefore) {\n      // If we previously forced a fallback, we need to schedule work\n      // on any nested boundaries to let them know to try to render\n      // again. This is the same as context updating.\n      propagateSuspenseContextChange(workInProgress, workInProgress.child, renderLanes);\n    }\n\n    suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n  }\n\n  pushSuspenseContext(workInProgress, suspenseContext);\n\n  if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n    // In legacy mode, SuspenseList doesn't work so we just\n    // use make it a noop by treating it as the default revealOrder.\n    workInProgress.memoizedState = null;\n  } else {\n    switch (revealOrder) {\n      case 'forwards':\n        {\n          var lastContentRow = findLastContentRow(workInProgress.child);\n          var tail;\n\n          if (lastContentRow === null) {\n            // The whole list is part of the tail.\n            // TODO: We could fast path by just rendering the tail now.\n            tail = workInProgress.child;\n            workInProgress.child = null;\n          } else {\n            // Disconnect the tail rows after the content row.\n            // We're going to render them separately later.\n            tail = lastContentRow.sibling;\n            lastContentRow.sibling = null;\n          }\n\n          initSuspenseListRenderState(workInProgress, false, // isBackwards\n          tail, lastContentRow, tailMode);\n          break;\n        }\n\n      case 'backwards':\n        {\n          // We're going to find the first row that has existing content.\n          // At the same time we're going to reverse the list of everything\n          // we pass in the meantime. That's going to be our tail in reverse\n          // order.\n          var _tail = null;\n          var row = workInProgress.child;\n          workInProgress.child = null;\n\n          while (row !== null) {\n            var currentRow = row.alternate; // New rows can't be content rows.\n\n            if (currentRow !== null && findFirstSuspended(currentRow) === null) {\n              // This is the beginning of the main content.\n              workInProgress.child = row;\n              break;\n            }\n\n            var nextRow = row.sibling;\n            row.sibling = _tail;\n            _tail = row;\n            row = nextRow;\n          } // TODO: If workInProgress.child is null, we can continue on the tail immediately.\n\n\n          initSuspenseListRenderState(workInProgress, true, // isBackwards\n          _tail, null, // last\n          tailMode);\n          break;\n        }\n\n      case 'together':\n        {\n          initSuspenseListRenderState(workInProgress, false, // isBackwards\n          null, // tail\n          null, // last\n          undefined);\n          break;\n        }\n\n      default:\n        {\n          // The default reveal order is the same as not having\n          // a boundary.\n          workInProgress.memoizedState = null;\n        }\n    }\n  }\n\n  return workInProgress.child;\n}\n\nfunction updatePortalComponent(current, workInProgress, renderLanes) {\n  pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n  var nextChildren = workInProgress.pendingProps;\n\n  if (current === null) {\n    // Portals are special because we don't append the children during mount\n    // but at commit. Therefore we need to track insertions which the normal\n    // flow doesn't do during mount. This doesn't happen at the root because\n    // the root always starts with a \"current\" with a null child.\n    // TODO: Consider unifying this with how the root works.\n    workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderLanes);\n  } else {\n    reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  }\n\n  return workInProgress.child;\n}\n\nvar hasWarnedAboutUsingNoValuePropOnContextProvider = false;\n\nfunction updateContextProvider(current, workInProgress, renderLanes) {\n  var providerType = workInProgress.type;\n  var context = providerType._context;\n  var newProps = workInProgress.pendingProps;\n  var oldProps = workInProgress.memoizedProps;\n  var newValue = newProps.value;\n\n  {\n    if (!('value' in newProps)) {\n      if (!hasWarnedAboutUsingNoValuePropOnContextProvider) {\n        hasWarnedAboutUsingNoValuePropOnContextProvider = true;\n\n        error('The `value` prop is required for the `<Context.Provider>`. Did you misspell it or forget to pass it?');\n      }\n    }\n\n    var providerPropTypes = workInProgress.type.propTypes;\n\n    if (providerPropTypes) {\n      checkPropTypes(providerPropTypes, newProps, 'prop', 'Context.Provider');\n    }\n  }\n\n  pushProvider(workInProgress, context, newValue);\n\n  {\n    if (oldProps !== null) {\n      var oldValue = oldProps.value;\n\n      if (objectIs(oldValue, newValue)) {\n        // No change. Bailout early if children are the same.\n        if (oldProps.children === newProps.children && !hasContextChanged()) {\n          return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n        }\n      } else {\n        // The context value changed. Search for matching consumers and schedule\n        // them to update.\n        propagateContextChange(workInProgress, context, renderLanes);\n      }\n    }\n  }\n\n  var newChildren = newProps.children;\n  reconcileChildren(current, workInProgress, newChildren, renderLanes);\n  return workInProgress.child;\n}\n\nvar hasWarnedAboutUsingContextAsConsumer = false;\n\nfunction updateContextConsumer(current, workInProgress, renderLanes) {\n  var context = workInProgress.type; // The logic below for Context differs depending on PROD or DEV mode. In\n  // DEV mode, we create a separate object for Context.Consumer that acts\n  // like a proxy to Context. This proxy object adds unnecessary code in PROD\n  // so we use the old behaviour (Context.Consumer references Context) to\n  // reduce size and overhead. The separate object references context via\n  // a property called \"_context\", which also gives us the ability to check\n  // in DEV mode if this property exists or not and warn if it does not.\n\n  {\n    if (context._context === undefined) {\n      // This may be because it's a Context (rather than a Consumer).\n      // Or it may be because it's older React where they're the same thing.\n      // We only want to warn if we're sure it's a new React.\n      if (context !== context.Consumer) {\n        if (!hasWarnedAboutUsingContextAsConsumer) {\n          hasWarnedAboutUsingContextAsConsumer = true;\n\n          error('Rendering <Context> directly is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');\n        }\n      }\n    } else {\n      context = context._context;\n    }\n  }\n\n  var newProps = workInProgress.pendingProps;\n  var render = newProps.children;\n\n  {\n    if (typeof render !== 'function') {\n      error('A context consumer was rendered with multiple children, or a child ' + \"that isn't a function. A context consumer expects a single child \" + 'that is a function. If you did pass a function, make sure there ' + 'is no trailing or leading whitespace around it.');\n    }\n  }\n\n  prepareToReadContext(workInProgress, renderLanes);\n  var newValue = readContext(context);\n\n  {\n    markComponentRenderStarted(workInProgress);\n  }\n\n  var newChildren;\n\n  {\n    ReactCurrentOwner$1.current = workInProgress;\n    setIsRendering(true);\n    newChildren = render(newValue);\n    setIsRendering(false);\n  }\n\n  {\n    markComponentRenderStopped();\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n  reconcileChildren(current, workInProgress, newChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction markWorkInProgressReceivedUpdate() {\n  didReceiveUpdate = true;\n}\n\nfunction resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress) {\n  if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n    if (current !== null) {\n      // A lazy component only mounts if it suspended inside a non-\n      // concurrent tree, in an inconsistent state. We want to treat it like\n      // a new mount, even though an empty version of it already committed.\n      // Disconnect the alternate pointers.\n      current.alternate = null;\n      workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect\n\n      workInProgress.flags |= Placement;\n    }\n  }\n}\n\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n  if (current !== null) {\n    // Reuse previous dependencies\n    workInProgress.dependencies = current.dependencies;\n  }\n\n  {\n    // Don't update \"base\" render times for bailouts.\n    stopProfilerTimerIfRunning();\n  }\n\n  markSkippedUpdateLanes(workInProgress.lanes); // Check if the children have any pending work.\n\n  if (!includesSomeLane(renderLanes, workInProgress.childLanes)) {\n    // The children don't have any work either. We can skip them.\n    // TODO: Once we add back resuming, we should check if the children are\n    // a work-in-progress set. If so, we need to transfer their effects.\n    {\n      return null;\n    }\n  } // This fiber doesn't have work, but its subtree does. Clone the child\n  // fibers and continue.\n\n\n  cloneChildFibers(current, workInProgress);\n  return workInProgress.child;\n}\n\nfunction remountFiber(current, oldWorkInProgress, newWorkInProgress) {\n  {\n    var returnFiber = oldWorkInProgress.return;\n\n    if (returnFiber === null) {\n      // eslint-disable-next-line react-internal/prod-error-codes\n      throw new Error('Cannot swap the root fiber.');\n    } // Disconnect from the old current.\n    // It will get deleted.\n\n\n    current.alternate = null;\n    oldWorkInProgress.alternate = null; // Connect to the new tree.\n\n    newWorkInProgress.index = oldWorkInProgress.index;\n    newWorkInProgress.sibling = oldWorkInProgress.sibling;\n    newWorkInProgress.return = oldWorkInProgress.return;\n    newWorkInProgress.ref = oldWorkInProgress.ref; // Replace the child/sibling pointers above it.\n\n    if (oldWorkInProgress === returnFiber.child) {\n      returnFiber.child = newWorkInProgress;\n    } else {\n      var prevSibling = returnFiber.child;\n\n      if (prevSibling === null) {\n        // eslint-disable-next-line react-internal/prod-error-codes\n        throw new Error('Expected parent to have a child.');\n      }\n\n      while (prevSibling.sibling !== oldWorkInProgress) {\n        prevSibling = prevSibling.sibling;\n\n        if (prevSibling === null) {\n          // eslint-disable-next-line react-internal/prod-error-codes\n          throw new Error('Expected to find the previous sibling.');\n        }\n      }\n\n      prevSibling.sibling = newWorkInProgress;\n    } // Delete the old fiber and place the new one.\n    // Since the old fiber is disconnected, we have to schedule it manually.\n\n\n    var deletions = returnFiber.deletions;\n\n    if (deletions === null) {\n      returnFiber.deletions = [current];\n      returnFiber.flags |= ChildDeletion;\n    } else {\n      deletions.push(current);\n    }\n\n    newWorkInProgress.flags |= Placement; // Restart work from the new fiber.\n\n    return newWorkInProgress;\n  }\n}\n\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n  // Before performing an early bailout, we must check if there are pending\n  // updates or context.\n  var updateLanes = current.lanes;\n\n  if (includesSomeLane(updateLanes, renderLanes)) {\n    return true;\n  } // No pending update, but because context is propagated lazily, we need\n\n  return false;\n}\n\nfunction attemptEarlyBailoutIfNoScheduledUpdate(current, workInProgress, renderLanes) {\n  // This fiber does not have any pending work. Bailout without entering\n  // the begin phase. There's still some bookkeeping we that needs to be done\n  // in this optimized path, mostly pushing stuff onto the stack.\n  switch (workInProgress.tag) {\n    case HostRoot:\n      pushHostRootContext(workInProgress);\n      var root = workInProgress.stateNode;\n\n      resetHydrationState();\n      break;\n\n    case HostComponent:\n      pushHostContext(workInProgress);\n      break;\n\n    case ClassComponent:\n      {\n        var Component = workInProgress.type;\n\n        if (isContextProvider(Component)) {\n          pushContextProvider(workInProgress);\n        }\n\n        break;\n      }\n\n    case HostPortal:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      break;\n\n    case ContextProvider:\n      {\n        var newValue = workInProgress.memoizedProps.value;\n        var context = workInProgress.type._context;\n        pushProvider(workInProgress, context, newValue);\n        break;\n      }\n\n    case Profiler:\n      {\n        // Profiler should only call onRender when one of its descendants actually rendered.\n        var hasChildWork = includesSomeLane(renderLanes, workInProgress.childLanes);\n\n        if (hasChildWork) {\n          workInProgress.flags |= Update;\n        }\n\n        {\n          // Reset effect durations for the next eventual effect phase.\n          // These are reset during render to allow the DevTools commit hook a chance to read them,\n          var stateNode = workInProgress.stateNode;\n          stateNode.effectDuration = 0;\n          stateNode.passiveEffectDuration = 0;\n        }\n      }\n\n      break;\n\n    case SuspenseComponent:\n      {\n        var state = workInProgress.memoizedState;\n\n        if (state !== null) {\n          if (state.dehydrated !== null) {\n            pushSuspenseContext(workInProgress, setDefaultShallowSuspenseContext(suspenseStackCursor.current)); // We know that this component will suspend again because if it has\n            // been unsuspended it has committed as a resolved Suspense component.\n            // If it needs to be retried, it should have work scheduled on it.\n\n            workInProgress.flags |= DidCapture; // We should never render the children of a dehydrated boundary until we\n            // upgrade it. We return null instead of bailoutOnAlreadyFinishedWork.\n\n            return null;\n          } // If this boundary is currently timed out, we need to decide\n          // whether to retry the primary children, or to skip over it and\n          // go straight to the fallback. Check the priority of the primary\n          // child fragment.\n\n\n          var primaryChildFragment = workInProgress.child;\n          var primaryChildLanes = primaryChildFragment.childLanes;\n\n          if (includesSomeLane(renderLanes, primaryChildLanes)) {\n            // The primary children have pending work. Use the normal path\n            // to attempt to render the primary children again.\n            return updateSuspenseComponent(current, workInProgress, renderLanes);\n          } else {\n            // The primary child fragment does not have pending work marked\n            // on it\n            pushSuspenseContext(workInProgress, setDefaultShallowSuspenseContext(suspenseStackCursor.current)); // The primary children do not have pending work with sufficient\n            // priority. Bailout.\n\n            var child = bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n\n            if (child !== null) {\n              // The fallback children have pending work. Skip over the\n              // primary children and work on the fallback.\n              return child.sibling;\n            } else {\n              // Note: We can return `null` here because we already checked\n              // whether there were nested context consumers, via the call to\n              // `bailoutOnAlreadyFinishedWork` above.\n              return null;\n            }\n          }\n        } else {\n          pushSuspenseContext(workInProgress, setDefaultShallowSuspenseContext(suspenseStackCursor.current));\n        }\n\n        break;\n      }\n\n    case SuspenseListComponent:\n      {\n        var didSuspendBefore = (current.flags & DidCapture) !== NoFlags;\n\n        var _hasChildWork = includesSomeLane(renderLanes, workInProgress.childLanes);\n\n        if (didSuspendBefore) {\n          if (_hasChildWork) {\n            // If something was in fallback state last time, and we have all the\n            // same children then we're still in progressive loading state.\n            // Something might get unblocked by state updates or retries in the\n            // tree which will affect the tail. So we need to use the normal\n            // path to compute the correct tail.\n            return updateSuspenseListComponent(current, workInProgress, renderLanes);\n          } // If none of the children had any work, that means that none of\n          // them got retried so they'll still be blocked in the same way\n          // as before. We can fast bail out.\n\n\n          workInProgress.flags |= DidCapture;\n        } // If nothing suspended before and we're rendering the same children,\n        // then the tail doesn't matter. Anything new that suspends will work\n        // in the \"together\" mode, so we can continue from the state we had.\n\n\n        var renderState = workInProgress.memoizedState;\n\n        if (renderState !== null) {\n          // Reset to the \"together\" mode in case we've started a different\n          // update in the past but didn't complete it.\n          renderState.rendering = null;\n          renderState.tail = null;\n          renderState.lastEffect = null;\n        }\n\n        pushSuspenseContext(workInProgress, suspenseStackCursor.current);\n\n        if (_hasChildWork) {\n          break;\n        } else {\n          // If none of the children had any work, that means that none of\n          // them got retried so they'll still be blocked in the same way\n          // as before. We can fast bail out.\n          return null;\n        }\n      }\n\n    case OffscreenComponent:\n    case LegacyHiddenComponent:\n      {\n        // Need to check if the tree still needs to be deferred. This is\n        // almost identical to the logic used in the normal update path,\n        // so we'll just enter that. The only difference is we'll bail out\n        // at the next level instead of this one, because the child props\n        // have not changed. Which is fine.\n        // TODO: Probably should refactor `beginWork` to split the bailout\n        // path from the normal path. I'm tempted to do a labeled break here\n        // but I won't :)\n        workInProgress.lanes = NoLanes;\n        return updateOffscreenComponent(current, workInProgress, renderLanes);\n      }\n  }\n\n  return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\n\nfunction beginWork(current, workInProgress, renderLanes) {\n  {\n    if (workInProgress._debugNeedsRemount && current !== null) {\n      // This will restart the begin phase with a new fiber.\n      return remountFiber(current, workInProgress, createFiberFromTypeAndProps(workInProgress.type, workInProgress.key, workInProgress.pendingProps, workInProgress._debugOwner || null, workInProgress.mode, workInProgress.lanes));\n    }\n  }\n\n  if (current !== null) {\n    var oldProps = current.memoizedProps;\n    var newProps = workInProgress.pendingProps;\n\n    if (oldProps !== newProps || hasContextChanged() || ( // Force a re-render if the implementation changed due to hot reload:\n     workInProgress.type !== current.type )) {\n      // If props or context changed, mark the fiber as having performed work.\n      // This may be unset if the props are determined to be equal later (memo).\n      didReceiveUpdate = true;\n    } else {\n      // Neither props nor legacy context changes. Check if there's a pending\n      // update or context change.\n      var hasScheduledUpdateOrContext = checkScheduledUpdateOrContext(current, renderLanes);\n\n      if (!hasScheduledUpdateOrContext && // If this is the second pass of an error or suspense boundary, there\n      // may not be work scheduled on `current`, so we check for this flag.\n      (workInProgress.flags & DidCapture) === NoFlags) {\n        // No pending updates or context. Bail out now.\n        didReceiveUpdate = false;\n        return attemptEarlyBailoutIfNoScheduledUpdate(current, workInProgress, renderLanes);\n      }\n\n      if ((current.flags & ForceUpdateForLegacySuspense) !== NoFlags) {\n        // This is a special case that only exists for legacy mode.\n        // See https://github.com/facebook/react/pull/19216.\n        didReceiveUpdate = true;\n      } else {\n        // An update was scheduled on this fiber, but there are no new props\n        // nor legacy context. Set this to false. If an update queue or context\n        // consumer produces a changed value, it will set this to true. Otherwise,\n        // the component will assume the children have not changed and bail out.\n        didReceiveUpdate = false;\n      }\n    }\n  } else {\n    didReceiveUpdate = false;\n\n    if (getIsHydrating() && isForkedChild(workInProgress)) {\n      // Check if this child belongs to a list of muliple children in\n      // its parent.\n      //\n      // In a true multi-threaded implementation, we would render children on\n      // parallel threads. This would represent the beginning of a new render\n      // thread for this subtree.\n      //\n      // We only use this for id generation during hydration, which is why the\n      // logic is located in this special branch.\n      var slotIndex = workInProgress.index;\n      var numberOfForks = getForksAtLevel();\n      pushTreeId(workInProgress, numberOfForks, slotIndex);\n    }\n  } // Before entering the begin phase, clear pending update priority.\n  // TODO: This assumes that we're about to evaluate the component and process\n  // the update queue. However, there's an exception: SimpleMemoComponent\n  // sometimes bails out later in the begin phase. This indicates that we should\n  // move this assignment out of the common path and into each branch.\n\n\n  workInProgress.lanes = NoLanes;\n\n  switch (workInProgress.tag) {\n    case IndeterminateComponent:\n      {\n        return mountIndeterminateComponent(current, workInProgress, workInProgress.type, renderLanes);\n      }\n\n    case LazyComponent:\n      {\n        var elementType = workInProgress.elementType;\n        return mountLazyComponent(current, workInProgress, elementType, renderLanes);\n      }\n\n    case FunctionComponent:\n      {\n        var Component = workInProgress.type;\n        var unresolvedProps = workInProgress.pendingProps;\n        var resolvedProps = workInProgress.elementType === Component ? unresolvedProps : resolveDefaultProps(Component, unresolvedProps);\n        return updateFunctionComponent(current, workInProgress, Component, resolvedProps, renderLanes);\n      }\n\n    case ClassComponent:\n      {\n        var _Component = workInProgress.type;\n        var _unresolvedProps = workInProgress.pendingProps;\n\n        var _resolvedProps = workInProgress.elementType === _Component ? _unresolvedProps : resolveDefaultProps(_Component, _unresolvedProps);\n\n        return updateClassComponent(current, workInProgress, _Component, _resolvedProps, renderLanes);\n      }\n\n    case HostRoot:\n      return updateHostRoot(current, workInProgress, renderLanes);\n\n    case HostComponent:\n      return updateHostComponent(current, workInProgress, renderLanes);\n\n    case HostText:\n      return updateHostText(current, workInProgress);\n\n    case SuspenseComponent:\n      return updateSuspenseComponent(current, workInProgress, renderLanes);\n\n    case HostPortal:\n      return updatePortalComponent(current, workInProgress, renderLanes);\n\n    case ForwardRef:\n      {\n        var type = workInProgress.type;\n        var _unresolvedProps2 = workInProgress.pendingProps;\n\n        var _resolvedProps2 = workInProgress.elementType === type ? _unresolvedProps2 : resolveDefaultProps(type, _unresolvedProps2);\n\n        return updateForwardRef(current, workInProgress, type, _resolvedProps2, renderLanes);\n      }\n\n    case Fragment:\n      return updateFragment(current, workInProgress, renderLanes);\n\n    case Mode:\n      return updateMode(current, workInProgress, renderLanes);\n\n    case Profiler:\n      return updateProfiler(current, workInProgress, renderLanes);\n\n    case ContextProvider:\n      return updateContextProvider(current, workInProgress, renderLanes);\n\n    case ContextConsumer:\n      return updateContextConsumer(current, workInProgress, renderLanes);\n\n    case MemoComponent:\n      {\n        var _type2 = workInProgress.type;\n        var _unresolvedProps3 = workInProgress.pendingProps; // Resolve outer props first, then resolve inner props.\n\n        var _resolvedProps3 = resolveDefaultProps(_type2, _unresolvedProps3);\n\n        {\n          if (workInProgress.type !== workInProgress.elementType) {\n            var outerPropTypes = _type2.propTypes;\n\n            if (outerPropTypes) {\n              checkPropTypes(outerPropTypes, _resolvedProps3, // Resolved for outer only\n              'prop', getComponentNameFromType(_type2));\n            }\n          }\n        }\n\n        _resolvedProps3 = resolveDefaultProps(_type2.type, _resolvedProps3);\n        return updateMemoComponent(current, workInProgress, _type2, _resolvedProps3, renderLanes);\n      }\n\n    case SimpleMemoComponent:\n      {\n        return updateSimpleMemoComponent(current, workInProgress, workInProgress.type, workInProgress.pendingProps, renderLanes);\n      }\n\n    case IncompleteClassComponent:\n      {\n        var _Component2 = workInProgress.type;\n        var _unresolvedProps4 = workInProgress.pendingProps;\n\n        var _resolvedProps4 = workInProgress.elementType === _Component2 ? _unresolvedProps4 : resolveDefaultProps(_Component2, _unresolvedProps4);\n\n        return mountIncompleteClassComponent(current, workInProgress, _Component2, _resolvedProps4, renderLanes);\n      }\n\n    case SuspenseListComponent:\n      {\n        return updateSuspenseListComponent(current, workInProgress, renderLanes);\n      }\n\n    case ScopeComponent:\n      {\n\n        break;\n      }\n\n    case OffscreenComponent:\n      {\n        return updateOffscreenComponent(current, workInProgress, renderLanes);\n      }\n  }\n\n  throw new Error(\"Unknown unit of work tag (\" + workInProgress.tag + \"). This error is likely caused by a bug in \" + 'React. Please file an issue.');\n}\n\nfunction markUpdate(workInProgress) {\n  // Tag the fiber with an update effect. This turns a Placement into\n  // a PlacementAndUpdate.\n  workInProgress.flags |= Update;\n}\n\nfunction markRef$1(workInProgress) {\n  workInProgress.flags |= Ref;\n\n  {\n    workInProgress.flags |= RefStatic;\n  }\n}\n\nvar appendAllChildren;\nvar updateHostContainer;\nvar updateHostComponent$1;\nvar updateHostText$1;\n\n{\n  // Mutation mode\n  appendAllChildren = function (parent, workInProgress, needsVisibilityToggle, isHidden) {\n    // We only have the top Fiber that was created but we need recurse down its\n    // children to find all the terminal nodes.\n    var node = workInProgress.child;\n\n    while (node !== null) {\n      if (node.tag === HostComponent || node.tag === HostText) {\n        appendInitialChild(parent, node.stateNode);\n      } else if (node.tag === HostPortal) ; else if (node.child !== null) {\n        node.child.return = node;\n        node = node.child;\n        continue;\n      }\n\n      if (node === workInProgress) {\n        return;\n      }\n\n      while (node.sibling === null) {\n        if (node.return === null || node.return === workInProgress) {\n          return;\n        }\n\n        node = node.return;\n      }\n\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  };\n\n  updateHostContainer = function (current, workInProgress) {// Noop\n  };\n\n  updateHostComponent$1 = function (current, workInProgress, type, newProps, rootContainerInstance) {\n    // If we have an alternate, that means this is an update and we need to\n    // schedule a side-effect to do the updates.\n    var oldProps = current.memoizedProps;\n\n    if (oldProps === newProps) {\n      // In mutation mode, this is sufficient for a bailout because\n      // we won't touch this node even if children changed.\n      return;\n    } // If we get updated because one of our children updated, we don't\n    // have newProps so we'll have to reuse them.\n    // TODO: Split the update API as separate for the props vs. children.\n    // Even better would be if children weren't special cased at all tho.\n\n\n    var instance = workInProgress.stateNode;\n    var currentHostContext = getHostContext(); // TODO: Experiencing an error where oldProps is null. Suggests a host\n    // component is hitting the resume path. Figure out why. Possibly\n    // related to `hidden`.\n\n    var updatePayload = prepareUpdate(instance, type, oldProps, newProps, rootContainerInstance, currentHostContext); // TODO: Type this specific to this type of component.\n\n    workInProgress.updateQueue = updatePayload; // If the update payload indicates that there is a change or if there\n    // is a new ref we mark this as an update. All the work is done in commitWork.\n\n    if (updatePayload) {\n      markUpdate(workInProgress);\n    }\n  };\n\n  updateHostText$1 = function (current, workInProgress, oldText, newText) {\n    // If the text differs, mark it as an update. All the work in done in commitWork.\n    if (oldText !== newText) {\n      markUpdate(workInProgress);\n    }\n  };\n}\n\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n  if (getIsHydrating()) {\n    // If we're hydrating, we should consume as many items as we can\n    // so we don't leave any behind.\n    return;\n  }\n\n  switch (renderState.tailMode) {\n    case 'hidden':\n      {\n        // Any insertions at the end of the tail list after this point\n        // should be invisible. If there are already mounted boundaries\n        // anything before them are not considered for collapsing.\n        // Therefore we need to go through the whole tail to find if\n        // there are any.\n        var tailNode = renderState.tail;\n        var lastTailNode = null;\n\n        while (tailNode !== null) {\n          if (tailNode.alternate !== null) {\n            lastTailNode = tailNode;\n          }\n\n          tailNode = tailNode.sibling;\n        } // Next we're simply going to delete all insertions after the\n        // last rendered item.\n\n\n        if (lastTailNode === null) {\n          // All remaining items in the tail are insertions.\n          renderState.tail = null;\n        } else {\n          // Detach the insertion after the last node that was already\n          // inserted.\n          lastTailNode.sibling = null;\n        }\n\n        break;\n      }\n\n    case 'collapsed':\n      {\n        // Any insertions at the end of the tail list after this point\n        // should be invisible. If there are already mounted boundaries\n        // anything before them are not considered for collapsing.\n        // Therefore we need to go through the whole tail to find if\n        // there are any.\n        var _tailNode = renderState.tail;\n        var _lastTailNode = null;\n\n        while (_tailNode !== null) {\n          if (_tailNode.alternate !== null) {\n            _lastTailNode = _tailNode;\n          }\n\n          _tailNode = _tailNode.sibling;\n        } // Next we're simply going to delete all insertions after the\n        // last rendered item.\n\n\n        if (_lastTailNode === null) {\n          // All remaining items in the tail are insertions.\n          if (!hasRenderedATailFallback && renderState.tail !== null) {\n            // We suspended during the head. We want to show at least one\n            // row at the tail. So we'll keep on and cut off the rest.\n            renderState.tail.sibling = null;\n          } else {\n            renderState.tail = null;\n          }\n        } else {\n          // Detach the insertion after the last node that was already\n          // inserted.\n          _lastTailNode.sibling = null;\n        }\n\n        break;\n      }\n  }\n}\n\nfunction bubbleProperties(completedWork) {\n  var didBailout = completedWork.alternate !== null && completedWork.alternate.child === completedWork.child;\n  var newChildLanes = NoLanes;\n  var subtreeFlags = NoFlags;\n\n  if (!didBailout) {\n    // Bubble up the earliest expiration time.\n    if ( (completedWork.mode & ProfileMode) !== NoMode) {\n      // In profiling mode, resetChildExpirationTime is also used to reset\n      // profiler durations.\n      var actualDuration = completedWork.actualDuration;\n      var treeBaseDuration = completedWork.selfBaseDuration;\n      var child = completedWork.child;\n\n      while (child !== null) {\n        newChildLanes = mergeLanes(newChildLanes, mergeLanes(child.lanes, child.childLanes));\n        subtreeFlags |= child.subtreeFlags;\n        subtreeFlags |= child.flags; // When a fiber is cloned, its actualDuration is reset to 0. This value will\n        // only be updated if work is done on the fiber (i.e. it doesn't bailout).\n        // When work is done, it should bubble to the parent's actualDuration. If\n        // the fiber has not been cloned though, (meaning no work was done), then\n        // this value will reflect the amount of time spent working on a previous\n        // render. In that case it should not bubble. We determine whether it was\n        // cloned by comparing the child pointer.\n\n        actualDuration += child.actualDuration;\n        treeBaseDuration += child.treeBaseDuration;\n        child = child.sibling;\n      }\n\n      completedWork.actualDuration = actualDuration;\n      completedWork.treeBaseDuration = treeBaseDuration;\n    } else {\n      var _child = completedWork.child;\n\n      while (_child !== null) {\n        newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child.lanes, _child.childLanes));\n        subtreeFlags |= _child.subtreeFlags;\n        subtreeFlags |= _child.flags; // Update the return pointer so the tree is consistent. This is a code\n        // smell because it assumes the commit phase is never concurrent with\n        // the render phase. Will address during refactor to alternate model.\n\n        _child.return = completedWork;\n        _child = _child.sibling;\n      }\n    }\n\n    completedWork.subtreeFlags |= subtreeFlags;\n  } else {\n    // Bubble up the earliest expiration time.\n    if ( (completedWork.mode & ProfileMode) !== NoMode) {\n      // In profiling mode, resetChildExpirationTime is also used to reset\n      // profiler durations.\n      var _treeBaseDuration = completedWork.selfBaseDuration;\n      var _child2 = completedWork.child;\n\n      while (_child2 !== null) {\n        newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child2.lanes, _child2.childLanes)); // \"Static\" flags share the lifetime of the fiber/hook they belong to,\n        // so we should bubble those up even during a bailout. All the other\n        // flags have a lifetime only of a single render + commit, so we should\n        // ignore them.\n\n        subtreeFlags |= _child2.subtreeFlags & StaticMask;\n        subtreeFlags |= _child2.flags & StaticMask;\n        _treeBaseDuration += _child2.treeBaseDuration;\n        _child2 = _child2.sibling;\n      }\n\n      completedWork.treeBaseDuration = _treeBaseDuration;\n    } else {\n      var _child3 = completedWork.child;\n\n      while (_child3 !== null) {\n        newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child3.lanes, _child3.childLanes)); // \"Static\" flags share the lifetime of the fiber/hook they belong to,\n        // so we should bubble those up even during a bailout. All the other\n        // flags have a lifetime only of a single render + commit, so we should\n        // ignore them.\n\n        subtreeFlags |= _child3.subtreeFlags & StaticMask;\n        subtreeFlags |= _child3.flags & StaticMask; // Update the return pointer so the tree is consistent. This is a code\n        // smell because it assumes the commit phase is never concurrent with\n        // the render phase. Will address during refactor to alternate model.\n\n        _child3.return = completedWork;\n        _child3 = _child3.sibling;\n      }\n    }\n\n    completedWork.subtreeFlags |= subtreeFlags;\n  }\n\n  completedWork.childLanes = newChildLanes;\n  return didBailout;\n}\n\nfunction completeDehydratedSuspenseBoundary(current, workInProgress, nextState) {\n  if (hasUnhydratedTailNodes() && (workInProgress.mode & ConcurrentMode) !== NoMode && (workInProgress.flags & DidCapture) === NoFlags) {\n    warnIfUnhydratedTailNodes(workInProgress);\n    resetHydrationState();\n    workInProgress.flags |= ForceClientRender | Incomplete | ShouldCapture;\n    return false;\n  }\n\n  var wasHydrated = popHydrationState(workInProgress);\n\n  if (nextState !== null && nextState.dehydrated !== null) {\n    // We might be inside a hydration state the first time we're picking up this\n    // Suspense boundary, and also after we've reentered it for further hydration.\n    if (current === null) {\n      if (!wasHydrated) {\n        throw new Error('A dehydrated suspense component was completed without a hydrated node. ' + 'This is probably a bug in React.');\n      }\n\n      prepareToHydrateHostSuspenseInstance(workInProgress);\n      bubbleProperties(workInProgress);\n\n      {\n        if ((workInProgress.mode & ProfileMode) !== NoMode) {\n          var isTimedOutSuspense = nextState !== null;\n\n          if (isTimedOutSuspense) {\n            // Don't count time spent in a timed out Suspense subtree as part of the base duration.\n            var primaryChildFragment = workInProgress.child;\n\n            if (primaryChildFragment !== null) {\n              // $FlowFixMe Flow doesn't support type casting in combination with the -= operator\n              workInProgress.treeBaseDuration -= primaryChildFragment.treeBaseDuration;\n            }\n          }\n        }\n      }\n\n      return false;\n    } else {\n      // We might have reentered this boundary to hydrate it. If so, we need to reset the hydration\n      // state since we're now exiting out of it. popHydrationState doesn't do that for us.\n      resetHydrationState();\n\n      if ((workInProgress.flags & DidCapture) === NoFlags) {\n        // This boundary did not suspend so it's now hydrated and unsuspended.\n        workInProgress.memoizedState = null;\n      } // If nothing suspended, we need to schedule an effect to mark this boundary\n      // as having hydrated so events know that they're free to be invoked.\n      // It's also a signal to replay events and the suspense callback.\n      // If something suspended, schedule an effect to attach retry listeners.\n      // So we might as well always mark this.\n\n\n      workInProgress.flags |= Update;\n      bubbleProperties(workInProgress);\n\n      {\n        if ((workInProgress.mode & ProfileMode) !== NoMode) {\n          var _isTimedOutSuspense = nextState !== null;\n\n          if (_isTimedOutSuspense) {\n            // Don't count time spent in a timed out Suspense subtree as part of the base duration.\n            var _primaryChildFragment = workInProgress.child;\n\n            if (_primaryChildFragment !== null) {\n              // $FlowFixMe Flow doesn't support type casting in combination with the -= operator\n              workInProgress.treeBaseDuration -= _primaryChildFragment.treeBaseDuration;\n            }\n          }\n        }\n      }\n\n      return false;\n    }\n  } else {\n    // Successfully completed this tree. If this was a forced client render,\n    // there may have been recoverable errors during first hydration\n    // attempt. If so, add them to a queue so we can log them in the\n    // commit phase.\n    upgradeHydrationErrorsToRecoverable(); // Fall through to normal Suspense path\n\n    return true;\n  }\n}\n\nfunction completeWork(current, workInProgress, renderLanes) {\n  var newProps = workInProgress.pendingProps; // Note: This intentionally doesn't check if we're hydrating because comparing\n  // to the current tree provider fiber is just as fast and less error-prone.\n  // Ideally we would have a special version of the work loop only\n  // for hydration.\n\n  popTreeContext(workInProgress);\n\n  switch (workInProgress.tag) {\n    case IndeterminateComponent:\n    case LazyComponent:\n    case SimpleMemoComponent:\n    case FunctionComponent:\n    case ForwardRef:\n    case Fragment:\n    case Mode:\n    case Profiler:\n    case ContextConsumer:\n    case MemoComponent:\n      bubbleProperties(workInProgress);\n      return null;\n\n    case ClassComponent:\n      {\n        var Component = workInProgress.type;\n\n        if (isContextProvider(Component)) {\n          popContext(workInProgress);\n        }\n\n        bubbleProperties(workInProgress);\n        return null;\n      }\n\n    case HostRoot:\n      {\n        var fiberRoot = workInProgress.stateNode;\n        popHostContainer(workInProgress);\n        popTopLevelContextObject(workInProgress);\n        resetWorkInProgressVersions();\n\n        if (fiberRoot.pendingContext) {\n          fiberRoot.context = fiberRoot.pendingContext;\n          fiberRoot.pendingContext = null;\n        }\n\n        if (current === null || current.child === null) {\n          // If we hydrated, pop so that we can delete any remaining children\n          // that weren't hydrated.\n          var wasHydrated = popHydrationState(workInProgress);\n\n          if (wasHydrated) {\n            // If we hydrated, then we'll need to schedule an update for\n            // the commit side-effects on the root.\n            markUpdate(workInProgress);\n          } else {\n            if (current !== null) {\n              var prevState = current.memoizedState;\n\n              if ( // Check if this is a client root\n              !prevState.isDehydrated || // Check if we reverted to client rendering (e.g. due to an error)\n              (workInProgress.flags & ForceClientRender) !== NoFlags) {\n                // Schedule an effect to clear this container at the start of the\n                // next commit. This handles the case of React rendering into a\n                // container with previous children. It's also safe to do for\n                // updates too, because current.child would only be null if the\n                // previous render was null (so the container would already\n                // be empty).\n                workInProgress.flags |= Snapshot; // If this was a forced client render, there may have been\n                // recoverable errors during first hydration attempt. If so, add\n                // them to a queue so we can log them in the commit phase.\n\n                upgradeHydrationErrorsToRecoverable();\n              }\n            }\n          }\n        }\n\n        updateHostContainer(current, workInProgress);\n        bubbleProperties(workInProgress);\n\n        return null;\n      }\n\n    case HostComponent:\n      {\n        popHostContext(workInProgress);\n        var rootContainerInstance = getRootHostContainer();\n        var type = workInProgress.type;\n\n        if (current !== null && workInProgress.stateNode != null) {\n          updateHostComponent$1(current, workInProgress, type, newProps, rootContainerInstance);\n\n          if (current.ref !== workInProgress.ref) {\n            markRef$1(workInProgress);\n          }\n        } else {\n          if (!newProps) {\n            if (workInProgress.stateNode === null) {\n              throw new Error('We must have new props for new mounts. This error is likely ' + 'caused by a bug in React. Please file an issue.');\n            } // This can happen when we abort work.\n\n\n            bubbleProperties(workInProgress);\n            return null;\n          }\n\n          var currentHostContext = getHostContext(); // TODO: Move createInstance to beginWork and keep it on a context\n          // \"stack\" as the parent. Then append children as we go in beginWork\n          // or completeWork depending on whether we want to add them top->down or\n          // bottom->up. Top->down is faster in IE11.\n\n          var _wasHydrated = popHydrationState(workInProgress);\n\n          if (_wasHydrated) {\n            // TODO: Move this and createInstance step into the beginPhase\n            // to consolidate.\n            if (prepareToHydrateHostInstance(workInProgress, rootContainerInstance, currentHostContext)) {\n              // If changes to the hydrated node need to be applied at the\n              // commit-phase we mark this as such.\n              markUpdate(workInProgress);\n            }\n          } else {\n            var instance = createInstance(type, newProps, rootContainerInstance, currentHostContext, workInProgress);\n            appendAllChildren(instance, workInProgress, false, false);\n            workInProgress.stateNode = instance; // Certain renderers require commit-time effects for initial mount.\n            // (eg DOM renderer supports auto-focus for certain elements).\n            // Make sure such renderers get scheduled for later work.\n\n            if (finalizeInitialChildren(instance, type, newProps, rootContainerInstance)) {\n              markUpdate(workInProgress);\n            }\n          }\n\n          if (workInProgress.ref !== null) {\n            // If there is a ref on a host node we need to schedule a callback\n            markRef$1(workInProgress);\n          }\n        }\n\n        bubbleProperties(workInProgress);\n        return null;\n      }\n\n    case HostText:\n      {\n        var newText = newProps;\n\n        if (current && workInProgress.stateNode != null) {\n          var oldText = current.memoizedProps; // If we have an alternate, that means this is an update and we need\n          // to schedule a side-effect to do the updates.\n\n          updateHostText$1(current, workInProgress, oldText, newText);\n        } else {\n          if (typeof newText !== 'string') {\n            if (workInProgress.stateNode === null) {\n              throw new Error('We must have new props for new mounts. This error is likely ' + 'caused by a bug in React. Please file an issue.');\n            } // This can happen when we abort work.\n\n          }\n\n          var _rootContainerInstance = getRootHostContainer();\n\n          var _currentHostContext = getHostContext();\n\n          var _wasHydrated2 = popHydrationState(workInProgress);\n\n          if (_wasHydrated2) {\n            if (prepareToHydrateHostTextInstance(workInProgress)) {\n              markUpdate(workInProgress);\n            }\n          } else {\n            workInProgress.stateNode = createTextInstance(newText, _rootContainerInstance, _currentHostContext, workInProgress);\n          }\n        }\n\n        bubbleProperties(workInProgress);\n        return null;\n      }\n\n    case SuspenseComponent:\n      {\n        popSuspenseContext(workInProgress);\n        var nextState = workInProgress.memoizedState; // Special path for dehydrated boundaries. We may eventually move this\n        // to its own fiber type so that we can add other kinds of hydration\n        // boundaries that aren't associated with a Suspense tree. In anticipation\n        // of such a refactor, all the hydration logic is contained in\n        // this branch.\n\n        if (current === null || current.memoizedState !== null && current.memoizedState.dehydrated !== null) {\n          var fallthroughToNormalSuspensePath = completeDehydratedSuspenseBoundary(current, workInProgress, nextState);\n\n          if (!fallthroughToNormalSuspensePath) {\n            if (workInProgress.flags & ShouldCapture) {\n              // Special case. There were remaining unhydrated nodes. We treat\n              // this as a mismatch. Revert to client rendering.\n              return workInProgress;\n            } else {\n              // Did not finish hydrating, either because this is the initial\n              // render or because something suspended.\n              return null;\n            }\n          } // Continue with the normal Suspense path.\n\n        }\n\n        if ((workInProgress.flags & DidCapture) !== NoFlags) {\n          // Something suspended. Re-render with the fallback children.\n          workInProgress.lanes = renderLanes; // Do not reset the effect list.\n\n          if ( (workInProgress.mode & ProfileMode) !== NoMode) {\n            transferActualDuration(workInProgress);\n          } // Don't bubble properties in this case.\n\n\n          return workInProgress;\n        }\n\n        var nextDidTimeout = nextState !== null;\n        var prevDidTimeout = current !== null && current.memoizedState !== null;\n        // a passive effect, which is when we process the transitions\n\n\n        if (nextDidTimeout !== prevDidTimeout) {\n          // an effect to toggle the subtree's visibility. When we switch from\n          // fallback -> primary, the inner Offscreen fiber schedules this effect\n          // as part of its normal complete phase. But when we switch from\n          // primary -> fallback, the inner Offscreen fiber does not have a complete\n          // phase. So we need to schedule its effect here.\n          //\n          // We also use this flag to connect/disconnect the effects, but the same\n          // logic applies: when re-connecting, the Offscreen fiber's complete\n          // phase will handle scheduling the effect. It's only when the fallback\n          // is active that we have to do anything special.\n\n\n          if (nextDidTimeout) {\n            var _offscreenFiber2 = workInProgress.child;\n            _offscreenFiber2.flags |= Visibility; // TODO: This will still suspend a synchronous tree if anything\n            // in the concurrent tree already suspended during this render.\n            // This is a known bug.\n\n            if ((workInProgress.mode & ConcurrentMode) !== NoMode) {\n              // TODO: Move this back to throwException because this is too late\n              // if this is a large tree which is common for initial loads. We\n              // don't know if we should restart a render or not until we get\n              // this marker, and this is too late.\n              // If this render already had a ping or lower pri updates,\n              // and this is the first time we know we're going to suspend we\n              // should be able to immediately restart from within throwException.\n              var hasInvisibleChildContext = current === null && (workInProgress.memoizedProps.unstable_avoidThisFallback !== true || !enableSuspenseAvoidThisFallback);\n\n              if (hasInvisibleChildContext || hasSuspenseContext(suspenseStackCursor.current, InvisibleParentSuspenseContext)) {\n                // If this was in an invisible tree or a new render, then showing\n                // this boundary is ok.\n                renderDidSuspend();\n              } else {\n                // Otherwise, we're going to have to hide content so we should\n                // suspend for longer if possible.\n                renderDidSuspendDelayIfPossible();\n              }\n            }\n          }\n        }\n\n        var wakeables = workInProgress.updateQueue;\n\n        if (wakeables !== null) {\n          // Schedule an effect to attach a retry listener to the promise.\n          // TODO: Move to passive phase\n          workInProgress.flags |= Update;\n        }\n\n        bubbleProperties(workInProgress);\n\n        {\n          if ((workInProgress.mode & ProfileMode) !== NoMode) {\n            if (nextDidTimeout) {\n              // Don't count time spent in a timed out Suspense subtree as part of the base duration.\n              var primaryChildFragment = workInProgress.child;\n\n              if (primaryChildFragment !== null) {\n                // $FlowFixMe Flow doesn't support type casting in combination with the -= operator\n                workInProgress.treeBaseDuration -= primaryChildFragment.treeBaseDuration;\n              }\n            }\n          }\n        }\n\n        return null;\n      }\n\n    case HostPortal:\n      popHostContainer(workInProgress);\n      updateHostContainer(current, workInProgress);\n\n      if (current === null) {\n        preparePortalMount(workInProgress.stateNode.containerInfo);\n      }\n\n      bubbleProperties(workInProgress);\n      return null;\n\n    case ContextProvider:\n      // Pop provider fiber\n      var context = workInProgress.type._context;\n      popProvider(context, workInProgress);\n      bubbleProperties(workInProgress);\n      return null;\n\n    case IncompleteClassComponent:\n      {\n        // Same as class component case. I put it down here so that the tags are\n        // sequential to ensure this switch is compiled to a jump table.\n        var _Component = workInProgress.type;\n\n        if (isContextProvider(_Component)) {\n          popContext(workInProgress);\n        }\n\n        bubbleProperties(workInProgress);\n        return null;\n      }\n\n    case SuspenseListComponent:\n      {\n        popSuspenseContext(workInProgress);\n        var renderState = workInProgress.memoizedState;\n\n        if (renderState === null) {\n          // We're running in the default, \"independent\" mode.\n          // We don't do anything in this mode.\n          bubbleProperties(workInProgress);\n          return null;\n        }\n\n        var didSuspendAlready = (workInProgress.flags & DidCapture) !== NoFlags;\n        var renderedTail = renderState.rendering;\n\n        if (renderedTail === null) {\n          // We just rendered the head.\n          if (!didSuspendAlready) {\n            // This is the first pass. We need to figure out if anything is still\n            // suspended in the rendered set.\n            // If new content unsuspended, but there's still some content that\n            // didn't. Then we need to do a second pass that forces everything\n            // to keep showing their fallbacks.\n            // We might be suspended if something in this render pass suspended, or\n            // something in the previous committed pass suspended. Otherwise,\n            // there's no chance so we can skip the expensive call to\n            // findFirstSuspended.\n            var cannotBeSuspended = renderHasNotSuspendedYet() && (current === null || (current.flags & DidCapture) === NoFlags);\n\n            if (!cannotBeSuspended) {\n              var row = workInProgress.child;\n\n              while (row !== null) {\n                var suspended = findFirstSuspended(row);\n\n                if (suspended !== null) {\n                  didSuspendAlready = true;\n                  workInProgress.flags |= DidCapture;\n                  cutOffTailIfNeeded(renderState, false); // If this is a newly suspended tree, it might not get committed as\n                  // part of the second pass. In that case nothing will subscribe to\n                  // its thenables. Instead, we'll transfer its thenables to the\n                  // SuspenseList so that it can retry if they resolve.\n                  // There might be multiple of these in the list but since we're\n                  // going to wait for all of them anyway, it doesn't really matter\n                  // which ones gets to ping. In theory we could get clever and keep\n                  // track of how many dependencies remain but it gets tricky because\n                  // in the meantime, we can add/remove/change items and dependencies.\n                  // We might bail out of the loop before finding any but that\n                  // doesn't matter since that means that the other boundaries that\n                  // we did find already has their listeners attached.\n\n                  var newThenables = suspended.updateQueue;\n\n                  if (newThenables !== null) {\n                    workInProgress.updateQueue = newThenables;\n                    workInProgress.flags |= Update;\n                  } // Rerender the whole list, but this time, we'll force fallbacks\n                  // to stay in place.\n                  // Reset the effect flags before doing the second pass since that's now invalid.\n                  // Reset the child fibers to their original state.\n\n\n                  workInProgress.subtreeFlags = NoFlags;\n                  resetChildFibers(workInProgress, renderLanes); // Set up the Suspense Context to force suspense and immediately\n                  // rerender the children.\n\n                  pushSuspenseContext(workInProgress, setShallowSuspenseContext(suspenseStackCursor.current, ForceSuspenseFallback)); // Don't bubble properties in this case.\n\n                  return workInProgress.child;\n                }\n\n                row = row.sibling;\n              }\n            }\n\n            if (renderState.tail !== null && now() > getRenderTargetTime()) {\n              // We have already passed our CPU deadline but we still have rows\n              // left in the tail. We'll just give up further attempts to render\n              // the main content and only render fallbacks.\n              workInProgress.flags |= DidCapture;\n              didSuspendAlready = true;\n              cutOffTailIfNeeded(renderState, false); // Since nothing actually suspended, there will nothing to ping this\n              // to get it started back up to attempt the next item. While in terms\n              // of priority this work has the same priority as this current render,\n              // it's not part of the same transition once the transition has\n              // committed. If it's sync, we still want to yield so that it can be\n              // painted. Conceptually, this is really the same as pinging.\n              // We can use any RetryLane even if it's the one currently rendering\n              // since we're leaving it behind on this node.\n\n              workInProgress.lanes = SomeRetryLane;\n            }\n          } else {\n            cutOffTailIfNeeded(renderState, false);\n          } // Next we're going to render the tail.\n\n        } else {\n          // Append the rendered row to the child list.\n          if (!didSuspendAlready) {\n            var _suspended = findFirstSuspended(renderedTail);\n\n            if (_suspended !== null) {\n              workInProgress.flags |= DidCapture;\n              didSuspendAlready = true; // Ensure we transfer the update queue to the parent so that it doesn't\n              // get lost if this row ends up dropped during a second pass.\n\n              var _newThenables = _suspended.updateQueue;\n\n              if (_newThenables !== null) {\n                workInProgress.updateQueue = _newThenables;\n                workInProgress.flags |= Update;\n              }\n\n              cutOffTailIfNeeded(renderState, true); // This might have been modified.\n\n              if (renderState.tail === null && renderState.tailMode === 'hidden' && !renderedTail.alternate && !getIsHydrating() // We don't cut it if we're hydrating.\n              ) {\n                  // We're done.\n                  bubbleProperties(workInProgress);\n                  return null;\n                }\n            } else if ( // The time it took to render last row is greater than the remaining\n            // time we have to render. So rendering one more row would likely\n            // exceed it.\n            now() * 2 - renderState.renderingStartTime > getRenderTargetTime() && renderLanes !== OffscreenLane) {\n              // We have now passed our CPU deadline and we'll just give up further\n              // attempts to render the main content and only render fallbacks.\n              // The assumption is that this is usually faster.\n              workInProgress.flags |= DidCapture;\n              didSuspendAlready = true;\n              cutOffTailIfNeeded(renderState, false); // Since nothing actually suspended, there will nothing to ping this\n              // to get it started back up to attempt the next item. While in terms\n              // of priority this work has the same priority as this current render,\n              // it's not part of the same transition once the transition has\n              // committed. If it's sync, we still want to yield so that it can be\n              // painted. Conceptually, this is really the same as pinging.\n              // We can use any RetryLane even if it's the one currently rendering\n              // since we're leaving it behind on this node.\n\n              workInProgress.lanes = SomeRetryLane;\n            }\n          }\n\n          if (renderState.isBackwards) {\n            // The effect list of the backwards tail will have been added\n            // to the end. This breaks the guarantee that life-cycles fire in\n            // sibling order but that isn't a strong guarantee promised by React.\n            // Especially since these might also just pop in during future commits.\n            // Append to the beginning of the list.\n            renderedTail.sibling = workInProgress.child;\n            workInProgress.child = renderedTail;\n          } else {\n            var previousSibling = renderState.last;\n\n            if (previousSibling !== null) {\n              previousSibling.sibling = renderedTail;\n            } else {\n              workInProgress.child = renderedTail;\n            }\n\n            renderState.last = renderedTail;\n          }\n        }\n\n        if (renderState.tail !== null) {\n          // We still have tail rows to render.\n          // Pop a row.\n          var next = renderState.tail;\n          renderState.rendering = next;\n          renderState.tail = next.sibling;\n          renderState.renderingStartTime = now();\n          next.sibling = null; // Restore the context.\n          // TODO: We can probably just avoid popping it instead and only\n          // setting it the first time we go from not suspended to suspended.\n\n          var suspenseContext = suspenseStackCursor.current;\n\n          if (didSuspendAlready) {\n            suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);\n          } else {\n            suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n          }\n\n          pushSuspenseContext(workInProgress, suspenseContext); // Do a pass over the next row.\n          // Don't bubble properties in this case.\n\n          return next;\n        }\n\n        bubbleProperties(workInProgress);\n        return null;\n      }\n\n    case ScopeComponent:\n      {\n\n        break;\n      }\n\n    case OffscreenComponent:\n    case LegacyHiddenComponent:\n      {\n        popRenderLanes(workInProgress);\n        var _nextState = workInProgress.memoizedState;\n        var nextIsHidden = _nextState !== null;\n\n        if (current !== null) {\n          var _prevState = current.memoizedState;\n          var prevIsHidden = _prevState !== null;\n\n          if (prevIsHidden !== nextIsHidden && ( // LegacyHidden doesn't do any hiding — it only pre-renders.\n          !enableLegacyHidden )) {\n            workInProgress.flags |= Visibility;\n          }\n        }\n\n        if (!nextIsHidden || (workInProgress.mode & ConcurrentMode) === NoMode) {\n          bubbleProperties(workInProgress);\n        } else {\n          // Don't bubble properties for hidden children unless we're rendering\n          // at offscreen priority.\n          if (includesSomeLane(subtreeRenderLanes, OffscreenLane)) {\n            bubbleProperties(workInProgress);\n\n            {\n              // Check if there was an insertion or update in the hidden subtree.\n              // If so, we need to hide those nodes in the commit phase, so\n              // schedule a visibility effect.\n              if ( workInProgress.subtreeFlags & (Placement | Update)) {\n                workInProgress.flags |= Visibility;\n              }\n            }\n          }\n        }\n        return null;\n      }\n\n    case CacheComponent:\n      {\n\n        return null;\n      }\n\n    case TracingMarkerComponent:\n      {\n\n        return null;\n      }\n  }\n\n  throw new Error(\"Unknown unit of work tag (\" + workInProgress.tag + \"). This error is likely caused by a bug in \" + 'React. Please file an issue.');\n}\n\nfunction unwindWork(current, workInProgress, renderLanes) {\n  // Note: This intentionally doesn't check if we're hydrating because comparing\n  // to the current tree provider fiber is just as fast and less error-prone.\n  // Ideally we would have a special version of the work loop only\n  // for hydration.\n  popTreeContext(workInProgress);\n\n  switch (workInProgress.tag) {\n    case ClassComponent:\n      {\n        var Component = workInProgress.type;\n\n        if (isContextProvider(Component)) {\n          popContext(workInProgress);\n        }\n\n        var flags = workInProgress.flags;\n\n        if (flags & ShouldCapture) {\n          workInProgress.flags = flags & ~ShouldCapture | DidCapture;\n\n          if ( (workInProgress.mode & ProfileMode) !== NoMode) {\n            transferActualDuration(workInProgress);\n          }\n\n          return workInProgress;\n        }\n\n        return null;\n      }\n\n    case HostRoot:\n      {\n        var root = workInProgress.stateNode;\n        popHostContainer(workInProgress);\n        popTopLevelContextObject(workInProgress);\n        resetWorkInProgressVersions();\n        var _flags = workInProgress.flags;\n\n        if ((_flags & ShouldCapture) !== NoFlags && (_flags & DidCapture) === NoFlags) {\n          // There was an error during render that wasn't captured by a suspense\n          // boundary. Do a second pass on the root to unmount the children.\n          workInProgress.flags = _flags & ~ShouldCapture | DidCapture;\n          return workInProgress;\n        } // We unwound to the root without completing it. Exit.\n\n\n        return null;\n      }\n\n    case HostComponent:\n      {\n        // TODO: popHydrationState\n        popHostContext(workInProgress);\n        return null;\n      }\n\n    case SuspenseComponent:\n      {\n        popSuspenseContext(workInProgress);\n        var suspenseState = workInProgress.memoizedState;\n\n        if (suspenseState !== null && suspenseState.dehydrated !== null) {\n          if (workInProgress.alternate === null) {\n            throw new Error('Threw in newly mounted dehydrated component. This is likely a bug in ' + 'React. Please file an issue.');\n          }\n\n          resetHydrationState();\n        }\n\n        var _flags2 = workInProgress.flags;\n\n        if (_flags2 & ShouldCapture) {\n          workInProgress.flags = _flags2 & ~ShouldCapture | DidCapture; // Captured a suspense effect. Re-render the boundary.\n\n          if ( (workInProgress.mode & ProfileMode) !== NoMode) {\n            transferActualDuration(workInProgress);\n          }\n\n          return workInProgress;\n        }\n\n        return null;\n      }\n\n    case SuspenseListComponent:\n      {\n        popSuspenseContext(workInProgress); // SuspenseList doesn't actually catch anything. It should've been\n        // caught by a nested boundary. If not, it should bubble through.\n\n        return null;\n      }\n\n    case HostPortal:\n      popHostContainer(workInProgress);\n      return null;\n\n    case ContextProvider:\n      var context = workInProgress.type._context;\n      popProvider(context, workInProgress);\n      return null;\n\n    case OffscreenComponent:\n    case LegacyHiddenComponent:\n      popRenderLanes(workInProgress);\n      return null;\n\n    case CacheComponent:\n\n      return null;\n\n    default:\n      return null;\n  }\n}\n\nfunction unwindInterruptedWork(current, interruptedWork, renderLanes) {\n  // Note: This intentionally doesn't check if we're hydrating because comparing\n  // to the current tree provider fiber is just as fast and less error-prone.\n  // Ideally we would have a special version of the work loop only\n  // for hydration.\n  popTreeContext(interruptedWork);\n\n  switch (interruptedWork.tag) {\n    case ClassComponent:\n      {\n        var childContextTypes = interruptedWork.type.childContextTypes;\n\n        if (childContextTypes !== null && childContextTypes !== undefined) {\n          popContext(interruptedWork);\n        }\n\n        break;\n      }\n\n    case HostRoot:\n      {\n        var root = interruptedWork.stateNode;\n        popHostContainer(interruptedWork);\n        popTopLevelContextObject(interruptedWork);\n        resetWorkInProgressVersions();\n        break;\n      }\n\n    case HostComponent:\n      {\n        popHostContext(interruptedWork);\n        break;\n      }\n\n    case HostPortal:\n      popHostContainer(interruptedWork);\n      break;\n\n    case SuspenseComponent:\n      popSuspenseContext(interruptedWork);\n      break;\n\n    case SuspenseListComponent:\n      popSuspenseContext(interruptedWork);\n      break;\n\n    case ContextProvider:\n      var context = interruptedWork.type._context;\n      popProvider(context, interruptedWork);\n      break;\n\n    case OffscreenComponent:\n    case LegacyHiddenComponent:\n      popRenderLanes(interruptedWork);\n      break;\n  }\n}\n\nvar didWarnAboutUndefinedSnapshotBeforeUpdate = null;\n\n{\n  didWarnAboutUndefinedSnapshotBeforeUpdate = new Set();\n} // Used during the commit phase to track the state of the Offscreen component stack.\n// Allows us to avoid traversing the return path to find the nearest Offscreen ancestor.\n// Only used when enableSuspenseLayoutEffectSemantics is enabled.\n\n\nvar offscreenSubtreeIsHidden = false;\nvar offscreenSubtreeWasHidden = false;\nvar PossiblyWeakSet = typeof WeakSet === 'function' ? WeakSet : Set;\nvar nextEffect = null; // Used for Profiling builds to track updaters.\n\nvar inProgressLanes = null;\nvar inProgressRoot = null;\nfunction reportUncaughtErrorInDEV(error) {\n  // Wrapping each small part of the commit phase into a guarded\n  // callback is a bit too slow (https://github.com/facebook/react/pull/21666).\n  // But we rely on it to surface errors to DEV tools like overlays\n  // (https://github.com/facebook/react/issues/21712).\n  // As a compromise, rethrow only caught errors in a guard.\n  {\n    invokeGuardedCallback(null, function () {\n      throw error;\n    });\n    clearCaughtError();\n  }\n}\n\nvar callComponentWillUnmountWithTimer = function (current, instance) {\n  instance.props = current.memoizedProps;\n  instance.state = current.memoizedState;\n\n  if ( current.mode & ProfileMode) {\n    try {\n      startLayoutEffectTimer();\n      instance.componentWillUnmount();\n    } finally {\n      recordLayoutEffectDuration(current);\n    }\n  } else {\n    instance.componentWillUnmount();\n  }\n}; // Capture errors so they don't interrupt mounting.\n\n\nfunction safelyCallCommitHookLayoutEffectListMount(current, nearestMountedAncestor) {\n  try {\n    commitHookEffectListMount(Layout, current);\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n} // Capture errors so they don't interrupt unmounting.\n\n\nfunction safelyCallComponentWillUnmount(current, nearestMountedAncestor, instance) {\n  try {\n    callComponentWillUnmountWithTimer(current, instance);\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n} // Capture errors so they don't interrupt mounting.\n\n\nfunction safelyCallComponentDidMount(current, nearestMountedAncestor, instance) {\n  try {\n    instance.componentDidMount();\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n} // Capture errors so they don't interrupt mounting.\n\n\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n  try {\n    commitAttachRef(current);\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\n\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n  var ref = current.ref;\n\n  if (ref !== null) {\n    if (typeof ref === 'function') {\n      var retVal;\n\n      try {\n        if (enableProfilerTimer && enableProfilerCommitHooks && current.mode & ProfileMode) {\n          try {\n            startLayoutEffectTimer();\n            retVal = ref(null);\n          } finally {\n            recordLayoutEffectDuration(current);\n          }\n        } else {\n          retVal = ref(null);\n        }\n      } catch (error) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error);\n      }\n\n      {\n        if (typeof retVal === 'function') {\n          error('Unexpected return value from a callback ref in %s. ' + 'A callback ref should not return a function.', getComponentNameFromFiber(current));\n        }\n      }\n    } else {\n      ref.current = null;\n    }\n  }\n}\n\nfunction safelyCallDestroy(current, nearestMountedAncestor, destroy) {\n  try {\n    destroy();\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\n\nvar focusedInstanceHandle = null;\nvar shouldFireAfterActiveInstanceBlur = false;\nfunction commitBeforeMutationEffects(root, firstChild) {\n  focusedInstanceHandle = prepareForCommit(root.containerInfo);\n  nextEffect = firstChild;\n  commitBeforeMutationEffects_begin(); // We no longer need to track the active instance fiber\n\n  var shouldFire = shouldFireAfterActiveInstanceBlur;\n  shouldFireAfterActiveInstanceBlur = false;\n  focusedInstanceHandle = null;\n  return shouldFire;\n}\n\nfunction commitBeforeMutationEffects_begin() {\n  while (nextEffect !== null) {\n    var fiber = nextEffect; // This phase is only used for beforeActiveInstanceBlur.\n\n    var child = fiber.child;\n\n    if ((fiber.subtreeFlags & BeforeMutationMask) !== NoFlags && child !== null) {\n      child.return = fiber;\n      nextEffect = child;\n    } else {\n      commitBeforeMutationEffects_complete();\n    }\n  }\n}\n\nfunction commitBeforeMutationEffects_complete() {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    setCurrentFiber(fiber);\n\n    try {\n      commitBeforeMutationEffectsOnFiber(fiber);\n    } catch (error) {\n      captureCommitPhaseError(fiber, fiber.return, error);\n    }\n\n    resetCurrentFiber();\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction commitBeforeMutationEffectsOnFiber(finishedWork) {\n  var current = finishedWork.alternate;\n  var flags = finishedWork.flags;\n\n  if ((flags & Snapshot) !== NoFlags) {\n    setCurrentFiber(finishedWork);\n\n    switch (finishedWork.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          break;\n        }\n\n      case ClassComponent:\n        {\n          if (current !== null) {\n            var prevProps = current.memoizedProps;\n            var prevState = current.memoizedState;\n            var instance = finishedWork.stateNode; // We could update instance props and state here,\n            // but instead we rely on them being set during last render.\n            // TODO: revisit this when we implement resuming.\n\n            {\n              if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                if (instance.props !== finishedWork.memoizedProps) {\n                  error('Expected %s props to match memoized props before ' + 'getSnapshotBeforeUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                }\n\n                if (instance.state !== finishedWork.memoizedState) {\n                  error('Expected %s state to match memoized state before ' + 'getSnapshotBeforeUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                }\n              }\n            }\n\n            var snapshot = instance.getSnapshotBeforeUpdate(finishedWork.elementType === finishedWork.type ? prevProps : resolveDefaultProps(finishedWork.type, prevProps), prevState);\n\n            {\n              var didWarnSet = didWarnAboutUndefinedSnapshotBeforeUpdate;\n\n              if (snapshot === undefined && !didWarnSet.has(finishedWork.type)) {\n                didWarnSet.add(finishedWork.type);\n\n                error('%s.getSnapshotBeforeUpdate(): A snapshot value (or null) ' + 'must be returned. You have returned undefined.', getComponentNameFromFiber(finishedWork));\n              }\n            }\n\n            instance.__reactInternalSnapshotBeforeUpdate = snapshot;\n          }\n\n          break;\n        }\n\n      case HostRoot:\n        {\n          {\n            var root = finishedWork.stateNode;\n            clearContainer(root.containerInfo);\n          }\n\n          break;\n        }\n\n      case HostComponent:\n      case HostText:\n      case HostPortal:\n      case IncompleteClassComponent:\n        // Nothing to do for these component types\n        break;\n\n      default:\n        {\n          throw new Error('This unit of work tag should not have side-effects. This error is ' + 'likely caused by a bug in React. Please file an issue.');\n        }\n    }\n\n    resetCurrentFiber();\n  }\n}\n\nfunction commitHookEffectListUnmount(flags, finishedWork, nearestMountedAncestor) {\n  var updateQueue = finishedWork.updateQueue;\n  var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;\n\n  if (lastEffect !== null) {\n    var firstEffect = lastEffect.next;\n    var effect = firstEffect;\n\n    do {\n      if ((effect.tag & flags) === flags) {\n        // Unmount\n        var destroy = effect.destroy;\n        effect.destroy = undefined;\n\n        if (destroy !== undefined) {\n          {\n            if ((flags & Passive$1) !== NoFlags$1) {\n              markComponentPassiveEffectUnmountStarted(finishedWork);\n            } else if ((flags & Layout) !== NoFlags$1) {\n              markComponentLayoutEffectUnmountStarted(finishedWork);\n            }\n          }\n\n          {\n            if ((flags & Insertion) !== NoFlags$1) {\n              setIsRunningInsertionEffect(true);\n            }\n          }\n\n          safelyCallDestroy(finishedWork, nearestMountedAncestor, destroy);\n\n          {\n            if ((flags & Insertion) !== NoFlags$1) {\n              setIsRunningInsertionEffect(false);\n            }\n          }\n\n          {\n            if ((flags & Passive$1) !== NoFlags$1) {\n              markComponentPassiveEffectUnmountStopped();\n            } else if ((flags & Layout) !== NoFlags$1) {\n              markComponentLayoutEffectUnmountStopped();\n            }\n          }\n        }\n      }\n\n      effect = effect.next;\n    } while (effect !== firstEffect);\n  }\n}\n\nfunction commitHookEffectListMount(flags, finishedWork) {\n  var updateQueue = finishedWork.updateQueue;\n  var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;\n\n  if (lastEffect !== null) {\n    var firstEffect = lastEffect.next;\n    var effect = firstEffect;\n\n    do {\n      if ((effect.tag & flags) === flags) {\n        {\n          if ((flags & Passive$1) !== NoFlags$1) {\n            markComponentPassiveEffectMountStarted(finishedWork);\n          } else if ((flags & Layout) !== NoFlags$1) {\n            markComponentLayoutEffectMountStarted(finishedWork);\n          }\n        } // Mount\n\n\n        var create = effect.create;\n\n        {\n          if ((flags & Insertion) !== NoFlags$1) {\n            setIsRunningInsertionEffect(true);\n          }\n        }\n\n        effect.destroy = create();\n\n        {\n          if ((flags & Insertion) !== NoFlags$1) {\n            setIsRunningInsertionEffect(false);\n          }\n        }\n\n        {\n          if ((flags & Passive$1) !== NoFlags$1) {\n            markComponentPassiveEffectMountStopped();\n          } else if ((flags & Layout) !== NoFlags$1) {\n            markComponentLayoutEffectMountStopped();\n          }\n        }\n\n        {\n          var destroy = effect.destroy;\n\n          if (destroy !== undefined && typeof destroy !== 'function') {\n            var hookName = void 0;\n\n            if ((effect.tag & Layout) !== NoFlags) {\n              hookName = 'useLayoutEffect';\n            } else if ((effect.tag & Insertion) !== NoFlags) {\n              hookName = 'useInsertionEffect';\n            } else {\n              hookName = 'useEffect';\n            }\n\n            var addendum = void 0;\n\n            if (destroy === null) {\n              addendum = ' You returned null. If your effect does not require clean ' + 'up, return undefined (or nothing).';\n            } else if (typeof destroy.then === 'function') {\n              addendum = '\\n\\nIt looks like you wrote ' + hookName + '(async () => ...) or returned a Promise. ' + 'Instead, write the async function inside your effect ' + 'and call it immediately:\\n\\n' + hookName + '(() => {\\n' + '  async function fetchData() {\\n' + '    // You can await here\\n' + '    const response = await MyAPI.getData(someId);\\n' + '    // ...\\n' + '  }\\n' + '  fetchData();\\n' + \"}, [someId]); // Or [] if effect doesn't need props or state\\n\\n\" + 'Learn more about data fetching with Hooks: https://reactjs.org/link/hooks-data-fetching';\n            } else {\n              addendum = ' You returned: ' + destroy;\n            }\n\n            error('%s must not return anything besides a function, ' + 'which is used for clean-up.%s', hookName, addendum);\n          }\n        }\n      }\n\n      effect = effect.next;\n    } while (effect !== firstEffect);\n  }\n}\n\nfunction commitPassiveEffectDurations(finishedRoot, finishedWork) {\n  {\n    // Only Profilers with work in their subtree will have an Update effect scheduled.\n    if ((finishedWork.flags & Update) !== NoFlags) {\n      switch (finishedWork.tag) {\n        case Profiler:\n          {\n            var passiveEffectDuration = finishedWork.stateNode.passiveEffectDuration;\n            var _finishedWork$memoize = finishedWork.memoizedProps,\n                id = _finishedWork$memoize.id,\n                onPostCommit = _finishedWork$memoize.onPostCommit; // This value will still reflect the previous commit phase.\n            // It does not get reset until the start of the next commit phase.\n\n            var commitTime = getCommitTime();\n            var phase = finishedWork.alternate === null ? 'mount' : 'update';\n\n            {\n              if (isCurrentUpdateNested()) {\n                phase = 'nested-update';\n              }\n            }\n\n            if (typeof onPostCommit === 'function') {\n              onPostCommit(id, phase, passiveEffectDuration, commitTime);\n            } // Bubble times to the next nearest ancestor Profiler.\n            // After we process that Profiler, we'll bubble further up.\n\n\n            var parentFiber = finishedWork.return;\n\n            outer: while (parentFiber !== null) {\n              switch (parentFiber.tag) {\n                case HostRoot:\n                  var root = parentFiber.stateNode;\n                  root.passiveEffectDuration += passiveEffectDuration;\n                  break outer;\n\n                case Profiler:\n                  var parentStateNode = parentFiber.stateNode;\n                  parentStateNode.passiveEffectDuration += passiveEffectDuration;\n                  break outer;\n              }\n\n              parentFiber = parentFiber.return;\n            }\n\n            break;\n          }\n      }\n    }\n  }\n}\n\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork, committedLanes) {\n  if ((finishedWork.flags & LayoutMask) !== NoFlags) {\n    switch (finishedWork.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          if ( !offscreenSubtreeWasHidden) {\n            // At this point layout effects have already been destroyed (during mutation phase).\n            // This is done to prevent sibling component effects from interfering with each other,\n            // e.g. a destroy function in one component should never override a ref set\n            // by a create function in another component during the same commit.\n            if ( finishedWork.mode & ProfileMode) {\n              try {\n                startLayoutEffectTimer();\n                commitHookEffectListMount(Layout | HasEffect, finishedWork);\n              } finally {\n                recordLayoutEffectDuration(finishedWork);\n              }\n            } else {\n              commitHookEffectListMount(Layout | HasEffect, finishedWork);\n            }\n          }\n\n          break;\n        }\n\n      case ClassComponent:\n        {\n          var instance = finishedWork.stateNode;\n\n          if (finishedWork.flags & Update) {\n            if (!offscreenSubtreeWasHidden) {\n              if (current === null) {\n                // We could update instance props and state here,\n                // but instead we rely on them being set during last render.\n                // TODO: revisit this when we implement resuming.\n                {\n                  if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                    if (instance.props !== finishedWork.memoizedProps) {\n                      error('Expected %s props to match memoized props before ' + 'componentDidMount. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                    }\n\n                    if (instance.state !== finishedWork.memoizedState) {\n                      error('Expected %s state to match memoized state before ' + 'componentDidMount. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                    }\n                  }\n                }\n\n                if ( finishedWork.mode & ProfileMode) {\n                  try {\n                    startLayoutEffectTimer();\n                    instance.componentDidMount();\n                  } finally {\n                    recordLayoutEffectDuration(finishedWork);\n                  }\n                } else {\n                  instance.componentDidMount();\n                }\n              } else {\n                var prevProps = finishedWork.elementType === finishedWork.type ? current.memoizedProps : resolveDefaultProps(finishedWork.type, current.memoizedProps);\n                var prevState = current.memoizedState; // We could update instance props and state here,\n                // but instead we rely on them being set during last render.\n                // TODO: revisit this when we implement resuming.\n\n                {\n                  if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                    if (instance.props !== finishedWork.memoizedProps) {\n                      error('Expected %s props to match memoized props before ' + 'componentDidUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                    }\n\n                    if (instance.state !== finishedWork.memoizedState) {\n                      error('Expected %s state to match memoized state before ' + 'componentDidUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                    }\n                  }\n                }\n\n                if ( finishedWork.mode & ProfileMode) {\n                  try {\n                    startLayoutEffectTimer();\n                    instance.componentDidUpdate(prevProps, prevState, instance.__reactInternalSnapshotBeforeUpdate);\n                  } finally {\n                    recordLayoutEffectDuration(finishedWork);\n                  }\n                } else {\n                  instance.componentDidUpdate(prevProps, prevState, instance.__reactInternalSnapshotBeforeUpdate);\n                }\n              }\n            }\n          } // TODO: I think this is now always non-null by the time it reaches the\n          // commit phase. Consider removing the type check.\n\n\n          var updateQueue = finishedWork.updateQueue;\n\n          if (updateQueue !== null) {\n            {\n              if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                if (instance.props !== finishedWork.memoizedProps) {\n                  error('Expected %s props to match memoized props before ' + 'processing the update queue. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                }\n\n                if (instance.state !== finishedWork.memoizedState) {\n                  error('Expected %s state to match memoized state before ' + 'processing the update queue. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                }\n              }\n            } // We could update instance props and state here,\n            // but instead we rely on them being set during last render.\n            // TODO: revisit this when we implement resuming.\n\n\n            commitUpdateQueue(finishedWork, updateQueue, instance);\n          }\n\n          break;\n        }\n\n      case HostRoot:\n        {\n          // TODO: I think this is now always non-null by the time it reaches the\n          // commit phase. Consider removing the type check.\n          var _updateQueue = finishedWork.updateQueue;\n\n          if (_updateQueue !== null) {\n            var _instance = null;\n\n            if (finishedWork.child !== null) {\n              switch (finishedWork.child.tag) {\n                case HostComponent:\n                  _instance = getPublicInstance(finishedWork.child.stateNode);\n                  break;\n\n                case ClassComponent:\n                  _instance = finishedWork.child.stateNode;\n                  break;\n              }\n            }\n\n            commitUpdateQueue(finishedWork, _updateQueue, _instance);\n          }\n\n          break;\n        }\n\n      case HostComponent:\n        {\n          var _instance2 = finishedWork.stateNode; // Renderers may schedule work to be done after host components are mounted\n          // (eg DOM renderer may schedule auto-focus for inputs and form controls).\n          // These effects should only be committed when components are first mounted,\n          // aka when there is no current/alternate.\n\n          if (current === null && finishedWork.flags & Update) {\n            var type = finishedWork.type;\n            var props = finishedWork.memoizedProps;\n            commitMount(_instance2, type, props);\n          }\n\n          break;\n        }\n\n      case HostText:\n        {\n          // We have no life-cycles associated with text.\n          break;\n        }\n\n      case HostPortal:\n        {\n          // We have no life-cycles associated with portals.\n          break;\n        }\n\n      case Profiler:\n        {\n          {\n            var _finishedWork$memoize2 = finishedWork.memoizedProps,\n                onCommit = _finishedWork$memoize2.onCommit,\n                onRender = _finishedWork$memoize2.onRender;\n            var effectDuration = finishedWork.stateNode.effectDuration;\n            var commitTime = getCommitTime();\n            var phase = current === null ? 'mount' : 'update';\n\n            {\n              if (isCurrentUpdateNested()) {\n                phase = 'nested-update';\n              }\n            }\n\n            if (typeof onRender === 'function') {\n              onRender(finishedWork.memoizedProps.id, phase, finishedWork.actualDuration, finishedWork.treeBaseDuration, finishedWork.actualStartTime, commitTime);\n            }\n\n            {\n              if (typeof onCommit === 'function') {\n                onCommit(finishedWork.memoizedProps.id, phase, effectDuration, commitTime);\n              } // Schedule a passive effect for this Profiler to call onPostCommit hooks.\n              // This effect should be scheduled even if there is no onPostCommit callback for this Profiler,\n              // because the effect is also where times bubble to parent Profilers.\n\n\n              enqueuePendingPassiveProfilerEffect(finishedWork); // Propagate layout effect durations to the next nearest Profiler ancestor.\n              // Do not reset these values until the next render so DevTools has a chance to read them first.\n\n              var parentFiber = finishedWork.return;\n\n              outer: while (parentFiber !== null) {\n                switch (parentFiber.tag) {\n                  case HostRoot:\n                    var root = parentFiber.stateNode;\n                    root.effectDuration += effectDuration;\n                    break outer;\n\n                  case Profiler:\n                    var parentStateNode = parentFiber.stateNode;\n                    parentStateNode.effectDuration += effectDuration;\n                    break outer;\n                }\n\n                parentFiber = parentFiber.return;\n              }\n            }\n          }\n\n          break;\n        }\n\n      case SuspenseComponent:\n        {\n          commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n          break;\n        }\n\n      case SuspenseListComponent:\n      case IncompleteClassComponent:\n      case ScopeComponent:\n      case OffscreenComponent:\n      case LegacyHiddenComponent:\n      case TracingMarkerComponent:\n        {\n          break;\n        }\n\n      default:\n        throw new Error('This unit of work tag should not have side-effects. This error is ' + 'likely caused by a bug in React. Please file an issue.');\n    }\n  }\n\n  if ( !offscreenSubtreeWasHidden) {\n    {\n      if (finishedWork.flags & Ref) {\n        commitAttachRef(finishedWork);\n      }\n    }\n  }\n}\n\nfunction reappearLayoutEffectsOnFiber(node) {\n  // Turn on layout effects in a tree that previously disappeared.\n  // TODO (Offscreen) Check: flags & LayoutStatic\n  switch (node.tag) {\n    case FunctionComponent:\n    case ForwardRef:\n    case SimpleMemoComponent:\n      {\n        if ( node.mode & ProfileMode) {\n          try {\n            startLayoutEffectTimer();\n            safelyCallCommitHookLayoutEffectListMount(node, node.return);\n          } finally {\n            recordLayoutEffectDuration(node);\n          }\n        } else {\n          safelyCallCommitHookLayoutEffectListMount(node, node.return);\n        }\n\n        break;\n      }\n\n    case ClassComponent:\n      {\n        var instance = node.stateNode;\n\n        if (typeof instance.componentDidMount === 'function') {\n          safelyCallComponentDidMount(node, node.return, instance);\n        }\n\n        safelyAttachRef(node, node.return);\n        break;\n      }\n\n    case HostComponent:\n      {\n        safelyAttachRef(node, node.return);\n        break;\n      }\n  }\n}\n\nfunction hideOrUnhideAllChildren(finishedWork, isHidden) {\n  // Only hide or unhide the top-most host nodes.\n  var hostSubtreeRoot = null;\n\n  {\n    // We only have the top Fiber that was inserted but we need to recurse down its\n    // children to find all the terminal nodes.\n    var node = finishedWork;\n\n    while (true) {\n      if (node.tag === HostComponent) {\n        if (hostSubtreeRoot === null) {\n          hostSubtreeRoot = node;\n\n          try {\n            var instance = node.stateNode;\n\n            if (isHidden) {\n              hideInstance(instance);\n            } else {\n              unhideInstance(node.stateNode, node.memoizedProps);\n            }\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          }\n        }\n      } else if (node.tag === HostText) {\n        if (hostSubtreeRoot === null) {\n          try {\n            var _instance3 = node.stateNode;\n\n            if (isHidden) {\n              hideTextInstance(_instance3);\n            } else {\n              unhideTextInstance(_instance3, node.memoizedProps);\n            }\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          }\n        }\n      } else if ((node.tag === OffscreenComponent || node.tag === LegacyHiddenComponent) && node.memoizedState !== null && node !== finishedWork) ; else if (node.child !== null) {\n        node.child.return = node;\n        node = node.child;\n        continue;\n      }\n\n      if (node === finishedWork) {\n        return;\n      }\n\n      while (node.sibling === null) {\n        if (node.return === null || node.return === finishedWork) {\n          return;\n        }\n\n        if (hostSubtreeRoot === node) {\n          hostSubtreeRoot = null;\n        }\n\n        node = node.return;\n      }\n\n      if (hostSubtreeRoot === node) {\n        hostSubtreeRoot = null;\n      }\n\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  }\n}\n\nfunction commitAttachRef(finishedWork) {\n  var ref = finishedWork.ref;\n\n  if (ref !== null) {\n    var instance = finishedWork.stateNode;\n    var instanceToUse;\n\n    switch (finishedWork.tag) {\n      case HostComponent:\n        instanceToUse = getPublicInstance(instance);\n        break;\n\n      default:\n        instanceToUse = instance;\n    } // Moved outside to ensure DCE works with this flag\n\n    if (typeof ref === 'function') {\n      var retVal;\n\n      if ( finishedWork.mode & ProfileMode) {\n        try {\n          startLayoutEffectTimer();\n          retVal = ref(instanceToUse);\n        } finally {\n          recordLayoutEffectDuration(finishedWork);\n        }\n      } else {\n        retVal = ref(instanceToUse);\n      }\n\n      {\n        if (typeof retVal === 'function') {\n          error('Unexpected return value from a callback ref in %s. ' + 'A callback ref should not return a function.', getComponentNameFromFiber(finishedWork));\n        }\n      }\n    } else {\n      {\n        if (!ref.hasOwnProperty('current')) {\n          error('Unexpected ref object provided for %s. ' + 'Use either a ref-setter function or React.createRef().', getComponentNameFromFiber(finishedWork));\n        }\n      }\n\n      ref.current = instanceToUse;\n    }\n  }\n}\n\nfunction detachFiberMutation(fiber) {\n  // Cut off the return pointer to disconnect it from the tree.\n  // This enables us to detect and warn against state updates on an unmounted component.\n  // It also prevents events from bubbling from within disconnected components.\n  //\n  // Ideally, we should also clear the child pointer of the parent alternate to let this\n  // get GC:ed but we don't know which for sure which parent is the current\n  // one so we'll settle for GC:ing the subtree of this child.\n  // This child itself will be GC:ed when the parent updates the next time.\n  //\n  // Note that we can't clear child or sibling pointers yet.\n  // They're needed for passive effects and for findDOMNode.\n  // We defer those fields, and all other cleanup, to the passive phase (see detachFiberAfterEffects).\n  //\n  // Don't reset the alternate yet, either. We need that so we can detach the\n  // alternate's fields in the passive phase. Clearing the return pointer is\n  // sufficient for findDOMNode semantics.\n  var alternate = fiber.alternate;\n\n  if (alternate !== null) {\n    alternate.return = null;\n  }\n\n  fiber.return = null;\n}\n\nfunction detachFiberAfterEffects(fiber) {\n  var alternate = fiber.alternate;\n\n  if (alternate !== null) {\n    fiber.alternate = null;\n    detachFiberAfterEffects(alternate);\n  } // Note: Defensively using negation instead of < in case\n  // `deletedTreeCleanUpLevel` is undefined.\n\n\n  {\n    // Clear cyclical Fiber fields. This level alone is designed to roughly\n    // approximate the planned Fiber refactor. In that world, `setState` will be\n    // bound to a special \"instance\" object instead of a Fiber. The Instance\n    // object will not have any of these fields. It will only be connected to\n    // the fiber tree via a single link at the root. So if this level alone is\n    // sufficient to fix memory issues, that bodes well for our plans.\n    fiber.child = null;\n    fiber.deletions = null;\n    fiber.sibling = null; // The `stateNode` is cyclical because on host nodes it points to the host\n    // tree, which has its own pointers to children, parents, and siblings.\n    // The other host nodes also point back to fibers, so we should detach that\n    // one, too.\n\n    if (fiber.tag === HostComponent) {\n      var hostInstance = fiber.stateNode;\n\n      if (hostInstance !== null) {\n        detachDeletedInstance(hostInstance);\n      }\n    }\n\n    fiber.stateNode = null; // I'm intentionally not clearing the `return` field in this level. We\n    // already disconnect the `return` pointer at the root of the deleted\n    // subtree (in `detachFiberMutation`). Besides, `return` by itself is not\n    // cyclical — it's only cyclical when combined with `child`, `sibling`, and\n    // `alternate`. But we'll clear it in the next level anyway, just in case.\n\n    {\n      fiber._debugOwner = null;\n    }\n\n    {\n      // Theoretically, nothing in here should be necessary, because we already\n      // disconnected the fiber from the tree. So even if something leaks this\n      // particular fiber, it won't leak anything else\n      //\n      // The purpose of this branch is to be super aggressive so we can measure\n      // if there's any difference in memory impact. If there is, that could\n      // indicate a React leak we don't know about.\n      fiber.return = null;\n      fiber.dependencies = null;\n      fiber.memoizedProps = null;\n      fiber.memoizedState = null;\n      fiber.pendingProps = null;\n      fiber.stateNode = null; // TODO: Move to `commitPassiveUnmountInsideDeletedTreeOnFiber` instead.\n\n      fiber.updateQueue = null;\n    }\n  }\n}\n\nfunction getHostParentFiber(fiber) {\n  var parent = fiber.return;\n\n  while (parent !== null) {\n    if (isHostParent(parent)) {\n      return parent;\n    }\n\n    parent = parent.return;\n  }\n\n  throw new Error('Expected to find a host parent. This error is likely caused by a bug ' + 'in React. Please file an issue.');\n}\n\nfunction isHostParent(fiber) {\n  return fiber.tag === HostComponent || fiber.tag === HostRoot || fiber.tag === HostPortal;\n}\n\nfunction getHostSibling(fiber) {\n  // We're going to search forward into the tree until we find a sibling host\n  // node. Unfortunately, if multiple insertions are done in a row we have to\n  // search past them. This leads to exponential search for the next sibling.\n  // TODO: Find a more efficient way to do this.\n  var node = fiber;\n\n  siblings: while (true) {\n    // If we didn't find anything, let's try the next sibling.\n    while (node.sibling === null) {\n      if (node.return === null || isHostParent(node.return)) {\n        // If we pop out of the root or hit the parent the fiber we are the\n        // last sibling.\n        return null;\n      }\n\n      node = node.return;\n    }\n\n    node.sibling.return = node.return;\n    node = node.sibling;\n\n    while (node.tag !== HostComponent && node.tag !== HostText && node.tag !== DehydratedFragment) {\n      // If it is not host node and, we might have a host node inside it.\n      // Try to search down until we find one.\n      if (node.flags & Placement) {\n        // If we don't have a child, try the siblings instead.\n        continue siblings;\n      } // If we don't have a child, try the siblings instead.\n      // We also skip portals because they are not part of this host tree.\n\n\n      if (node.child === null || node.tag === HostPortal) {\n        continue siblings;\n      } else {\n        node.child.return = node;\n        node = node.child;\n      }\n    } // Check if this host node is stable or about to be placed.\n\n\n    if (!(node.flags & Placement)) {\n      // Found it!\n      return node.stateNode;\n    }\n  }\n}\n\nfunction commitPlacement(finishedWork) {\n\n\n  var parentFiber = getHostParentFiber(finishedWork); // Note: these two variables *must* always be updated together.\n\n  switch (parentFiber.tag) {\n    case HostComponent:\n      {\n        var parent = parentFiber.stateNode;\n\n        if (parentFiber.flags & ContentReset) {\n          // Reset the text content of the parent before doing any insertions\n          resetTextContent(parent); // Clear ContentReset from the effect tag\n\n          parentFiber.flags &= ~ContentReset;\n        }\n\n        var before = getHostSibling(finishedWork); // We only have the top Fiber that was inserted but we need to recurse down its\n        // children to find all the terminal nodes.\n\n        insertOrAppendPlacementNode(finishedWork, before, parent);\n        break;\n      }\n\n    case HostRoot:\n    case HostPortal:\n      {\n        var _parent = parentFiber.stateNode.containerInfo;\n\n        var _before = getHostSibling(finishedWork);\n\n        insertOrAppendPlacementNodeIntoContainer(finishedWork, _before, _parent);\n        break;\n      }\n    // eslint-disable-next-line-no-fallthrough\n\n    default:\n      throw new Error('Invalid host parent fiber. This error is likely caused by a bug ' + 'in React. Please file an issue.');\n  }\n}\n\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n  var tag = node.tag;\n  var isHost = tag === HostComponent || tag === HostText;\n\n  if (isHost) {\n    var stateNode = node.stateNode;\n\n    if (before) {\n      insertInContainerBefore(parent, stateNode, before);\n    } else {\n      appendChildToContainer(parent, stateNode);\n    }\n  } else if (tag === HostPortal) ; else {\n    var child = node.child;\n\n    if (child !== null) {\n      insertOrAppendPlacementNodeIntoContainer(child, before, parent);\n      var sibling = child.sibling;\n\n      while (sibling !== null) {\n        insertOrAppendPlacementNodeIntoContainer(sibling, before, parent);\n        sibling = sibling.sibling;\n      }\n    }\n  }\n}\n\nfunction insertOrAppendPlacementNode(node, before, parent) {\n  var tag = node.tag;\n  var isHost = tag === HostComponent || tag === HostText;\n\n  if (isHost) {\n    var stateNode = node.stateNode;\n\n    if (before) {\n      insertBefore(parent, stateNode, before);\n    } else {\n      appendChild(parent, stateNode);\n    }\n  } else if (tag === HostPortal) ; else {\n    var child = node.child;\n\n    if (child !== null) {\n      insertOrAppendPlacementNode(child, before, parent);\n      var sibling = child.sibling;\n\n      while (sibling !== null) {\n        insertOrAppendPlacementNode(sibling, before, parent);\n        sibling = sibling.sibling;\n      }\n    }\n  }\n} // These are tracked on the stack as we recursively traverse a\n// deleted subtree.\n// TODO: Update these during the whole mutation phase, not just during\n// a deletion.\n\n\nvar hostParent = null;\nvar hostParentIsContainer = false;\n\nfunction commitDeletionEffects(root, returnFiber, deletedFiber) {\n  {\n    // We only have the top Fiber that was deleted but we need to recurse down its\n    // children to find all the terminal nodes.\n    // Recursively delete all host nodes from the parent, detach refs, clean\n    // up mounted layout effects, and call componentWillUnmount.\n    // We only need to remove the topmost host child in each branch. But then we\n    // still need to keep traversing to unmount effects, refs, and cWU. TODO: We\n    // could split this into two separate traversals functions, where the second\n    // one doesn't include any removeChild logic. This is maybe the same\n    // function as \"disappearLayoutEffects\" (or whatever that turns into after\n    // the layout phase is refactored to use recursion).\n    // Before starting, find the nearest host parent on the stack so we know\n    // which instance/container to remove the children from.\n    // TODO: Instead of searching up the fiber return path on every deletion, we\n    // can track the nearest host component on the JS stack as we traverse the\n    // tree during the commit phase. This would make insertions faster, too.\n    var parent = returnFiber;\n\n    findParent: while (parent !== null) {\n      switch (parent.tag) {\n        case HostComponent:\n          {\n            hostParent = parent.stateNode;\n            hostParentIsContainer = false;\n            break findParent;\n          }\n\n        case HostRoot:\n          {\n            hostParent = parent.stateNode.containerInfo;\n            hostParentIsContainer = true;\n            break findParent;\n          }\n\n        case HostPortal:\n          {\n            hostParent = parent.stateNode.containerInfo;\n            hostParentIsContainer = true;\n            break findParent;\n          }\n      }\n\n      parent = parent.return;\n    }\n\n    if (hostParent === null) {\n      throw new Error('Expected to find a host parent. This error is likely caused by ' + 'a bug in React. Please file an issue.');\n    }\n\n    commitDeletionEffectsOnFiber(root, returnFiber, deletedFiber);\n    hostParent = null;\n    hostParentIsContainer = false;\n  }\n\n  detachFiberMutation(deletedFiber);\n}\n\nfunction recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, parent) {\n  // TODO: Use a static flag to skip trees that don't have unmount effects\n  var child = parent.child;\n\n  while (child !== null) {\n    commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, child);\n    child = child.sibling;\n  }\n}\n\nfunction commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, deletedFiber) {\n  onCommitUnmount(deletedFiber); // The cases in this outer switch modify the stack before they traverse\n  // into their subtree. There are simpler cases in the inner switch\n  // that don't modify the stack.\n\n  switch (deletedFiber.tag) {\n    case HostComponent:\n      {\n        if (!offscreenSubtreeWasHidden) {\n          safelyDetachRef(deletedFiber, nearestMountedAncestor);\n        } // Intentional fallthrough to next branch\n\n      }\n    // eslint-disable-next-line-no-fallthrough\n\n    case HostText:\n      {\n        // We only need to remove the nearest host child. Set the host parent\n        // to `null` on the stack to indicate that nested children don't\n        // need to be removed.\n        {\n          var prevHostParent = hostParent;\n          var prevHostParentIsContainer = hostParentIsContainer;\n          hostParent = null;\n          recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n          hostParent = prevHostParent;\n          hostParentIsContainer = prevHostParentIsContainer;\n\n          if (hostParent !== null) {\n            // Now that all the child effects have unmounted, we can remove the\n            // node from the tree.\n            if (hostParentIsContainer) {\n              removeChildFromContainer(hostParent, deletedFiber.stateNode);\n            } else {\n              removeChild(hostParent, deletedFiber.stateNode);\n            }\n          }\n        }\n\n        return;\n      }\n\n    case DehydratedFragment:\n      {\n        // Delete the dehydrated suspense boundary and all of its content.\n\n\n        {\n          if (hostParent !== null) {\n            if (hostParentIsContainer) {\n              clearSuspenseBoundaryFromContainer(hostParent, deletedFiber.stateNode);\n            } else {\n              clearSuspenseBoundary(hostParent, deletedFiber.stateNode);\n            }\n          }\n        }\n\n        return;\n      }\n\n    case HostPortal:\n      {\n        {\n          // When we go into a portal, it becomes the parent to remove from.\n          var _prevHostParent = hostParent;\n          var _prevHostParentIsContainer = hostParentIsContainer;\n          hostParent = deletedFiber.stateNode.containerInfo;\n          hostParentIsContainer = true;\n          recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n          hostParent = _prevHostParent;\n          hostParentIsContainer = _prevHostParentIsContainer;\n        }\n\n        return;\n      }\n\n    case FunctionComponent:\n    case ForwardRef:\n    case MemoComponent:\n    case SimpleMemoComponent:\n      {\n        if (!offscreenSubtreeWasHidden) {\n          var updateQueue = deletedFiber.updateQueue;\n\n          if (updateQueue !== null) {\n            var lastEffect = updateQueue.lastEffect;\n\n            if (lastEffect !== null) {\n              var firstEffect = lastEffect.next;\n              var effect = firstEffect;\n\n              do {\n                var _effect = effect,\n                    destroy = _effect.destroy,\n                    tag = _effect.tag;\n\n                if (destroy !== undefined) {\n                  if ((tag & Insertion) !== NoFlags$1) {\n                    safelyCallDestroy(deletedFiber, nearestMountedAncestor, destroy);\n                  } else if ((tag & Layout) !== NoFlags$1) {\n                    {\n                      markComponentLayoutEffectUnmountStarted(deletedFiber);\n                    }\n\n                    if ( deletedFiber.mode & ProfileMode) {\n                      startLayoutEffectTimer();\n                      safelyCallDestroy(deletedFiber, nearestMountedAncestor, destroy);\n                      recordLayoutEffectDuration(deletedFiber);\n                    } else {\n                      safelyCallDestroy(deletedFiber, nearestMountedAncestor, destroy);\n                    }\n\n                    {\n                      markComponentLayoutEffectUnmountStopped();\n                    }\n                  }\n                }\n\n                effect = effect.next;\n              } while (effect !== firstEffect);\n            }\n          }\n        }\n\n        recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n        return;\n      }\n\n    case ClassComponent:\n      {\n        if (!offscreenSubtreeWasHidden) {\n          safelyDetachRef(deletedFiber, nearestMountedAncestor);\n          var instance = deletedFiber.stateNode;\n\n          if (typeof instance.componentWillUnmount === 'function') {\n            safelyCallComponentWillUnmount(deletedFiber, nearestMountedAncestor, instance);\n          }\n        }\n\n        recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n        return;\n      }\n\n    case ScopeComponent:\n      {\n\n        recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n        return;\n      }\n\n    case OffscreenComponent:\n      {\n        if ( // TODO: Remove this dead flag\n         deletedFiber.mode & ConcurrentMode) {\n          // If this offscreen component is hidden, we already unmounted it. Before\n          // deleting the children, track that it's already unmounted so that we\n          // don't attempt to unmount the effects again.\n          // TODO: If the tree is hidden, in most cases we should be able to skip\n          // over the nested children entirely. An exception is we haven't yet found\n          // the topmost host node to delete, which we already track on the stack.\n          // But the other case is portals, which need to be detached no matter how\n          // deeply they are nested. We should use a subtree flag to track whether a\n          // subtree includes a nested portal.\n          var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n          offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || deletedFiber.memoizedState !== null;\n          recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n          offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n        } else {\n          recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n        }\n\n        break;\n      }\n\n    default:\n      {\n        recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n        return;\n      }\n  }\n}\n\nfunction commitSuspenseCallback(finishedWork) {\n  // TODO: Move this to passive phase\n  var newState = finishedWork.memoizedState;\n}\n\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n\n  var newState = finishedWork.memoizedState;\n\n  if (newState === null) {\n    var current = finishedWork.alternate;\n\n    if (current !== null) {\n      var prevState = current.memoizedState;\n\n      if (prevState !== null) {\n        var suspenseInstance = prevState.dehydrated;\n\n        if (suspenseInstance !== null) {\n          commitHydratedSuspenseInstance(suspenseInstance);\n        }\n      }\n    }\n  }\n}\n\nfunction attachSuspenseRetryListeners(finishedWork) {\n  // If this boundary just timed out, then it will have a set of wakeables.\n  // For each wakeable, attach a listener so that when it resolves, React\n  // attempts to re-render the boundary in the primary (pre-timeout) state.\n  var wakeables = finishedWork.updateQueue;\n\n  if (wakeables !== null) {\n    finishedWork.updateQueue = null;\n    var retryCache = finishedWork.stateNode;\n\n    if (retryCache === null) {\n      retryCache = finishedWork.stateNode = new PossiblyWeakSet();\n    }\n\n    wakeables.forEach(function (wakeable) {\n      // Memoize using the boundary fiber to prevent redundant listeners.\n      var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n\n      if (!retryCache.has(wakeable)) {\n        retryCache.add(wakeable);\n\n        {\n          if (isDevToolsPresent) {\n            if (inProgressLanes !== null && inProgressRoot !== null) {\n              // If we have pending work still, associate the original updaters with it.\n              restorePendingUpdaters(inProgressRoot, inProgressLanes);\n            } else {\n              throw Error('Expected finished root and lanes to be set. This is a bug in React.');\n            }\n          }\n        }\n\n        wakeable.then(retry, retry);\n      }\n    });\n  }\n} // This function detects when a Suspense boundary goes from visible to hidden.\nfunction commitMutationEffects(root, finishedWork, committedLanes) {\n  inProgressLanes = committedLanes;\n  inProgressRoot = root;\n  setCurrentFiber(finishedWork);\n  commitMutationEffectsOnFiber(finishedWork, root);\n  setCurrentFiber(finishedWork);\n  inProgressLanes = null;\n  inProgressRoot = null;\n}\n\nfunction recursivelyTraverseMutationEffects(root, parentFiber, lanes) {\n  // Deletions effects can be scheduled on any fiber type. They need to happen\n  // before the children effects hae fired.\n  var deletions = parentFiber.deletions;\n\n  if (deletions !== null) {\n    for (var i = 0; i < deletions.length; i++) {\n      var childToDelete = deletions[i];\n\n      try {\n        commitDeletionEffects(root, parentFiber, childToDelete);\n      } catch (error) {\n        captureCommitPhaseError(childToDelete, parentFiber, error);\n      }\n    }\n  }\n\n  var prevDebugFiber = getCurrentFiber();\n\n  if (parentFiber.subtreeFlags & MutationMask) {\n    var child = parentFiber.child;\n\n    while (child !== null) {\n      setCurrentFiber(child);\n      commitMutationEffectsOnFiber(child, root);\n      child = child.sibling;\n    }\n  }\n\n  setCurrentFiber(prevDebugFiber);\n}\n\nfunction commitMutationEffectsOnFiber(finishedWork, root, lanes) {\n  var current = finishedWork.alternate;\n  var flags = finishedWork.flags; // The effect flag should be checked *after* we refine the type of fiber,\n  // because the fiber tag is more specific. An exception is any flag related\n  // to reconcilation, because those can be set on all fiber types.\n\n  switch (finishedWork.tag) {\n    case FunctionComponent:\n    case ForwardRef:\n    case MemoComponent:\n    case SimpleMemoComponent:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Update) {\n          try {\n            commitHookEffectListUnmount(Insertion | HasEffect, finishedWork, finishedWork.return);\n            commitHookEffectListMount(Insertion | HasEffect, finishedWork);\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          } // Layout effects are destroyed during the mutation phase so that all\n          // destroy functions for all fibers are called before any create functions.\n          // This prevents sibling component effects from interfering with each other,\n          // e.g. a destroy function in one component should never override a ref set\n          // by a create function in another component during the same commit.\n\n\n          if ( finishedWork.mode & ProfileMode) {\n            try {\n              startLayoutEffectTimer();\n              commitHookEffectListUnmount(Layout | HasEffect, finishedWork, finishedWork.return);\n            } catch (error) {\n              captureCommitPhaseError(finishedWork, finishedWork.return, error);\n            }\n\n            recordLayoutEffectDuration(finishedWork);\n          } else {\n            try {\n              commitHookEffectListUnmount(Layout | HasEffect, finishedWork, finishedWork.return);\n            } catch (error) {\n              captureCommitPhaseError(finishedWork, finishedWork.return, error);\n            }\n          }\n        }\n\n        return;\n      }\n\n    case ClassComponent:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Ref) {\n          if (current !== null) {\n            safelyDetachRef(current, current.return);\n          }\n        }\n\n        return;\n      }\n\n    case HostComponent:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Ref) {\n          if (current !== null) {\n            safelyDetachRef(current, current.return);\n          }\n        }\n\n        {\n          // TODO: ContentReset gets cleared by the children during the commit\n          // phase. This is a refactor hazard because it means we must read\n          // flags the flags after `commitReconciliationEffects` has already run;\n          // the order matters. We should refactor so that ContentReset does not\n          // rely on mutating the flag during commit. Like by setting a flag\n          // during the render phase instead.\n          if (finishedWork.flags & ContentReset) {\n            var instance = finishedWork.stateNode;\n\n            try {\n              resetTextContent(instance);\n            } catch (error) {\n              captureCommitPhaseError(finishedWork, finishedWork.return, error);\n            }\n          }\n\n          if (flags & Update) {\n            var _instance4 = finishedWork.stateNode;\n\n            if (_instance4 != null) {\n              // Commit the work prepared earlier.\n              var newProps = finishedWork.memoizedProps; // For hydration we reuse the update path but we treat the oldProps\n              // as the newProps. The updatePayload will contain the real change in\n              // this case.\n\n              var oldProps = current !== null ? current.memoizedProps : newProps;\n              var type = finishedWork.type; // TODO: Type the updateQueue to be specific to host components.\n\n              var updatePayload = finishedWork.updateQueue;\n              finishedWork.updateQueue = null;\n\n              if (updatePayload !== null) {\n                try {\n                  commitUpdate(_instance4, updatePayload, type, oldProps, newProps, finishedWork);\n                } catch (error) {\n                  captureCommitPhaseError(finishedWork, finishedWork.return, error);\n                }\n              }\n            }\n          }\n        }\n\n        return;\n      }\n\n    case HostText:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Update) {\n          {\n            if (finishedWork.stateNode === null) {\n              throw new Error('This should have a text node initialized. This error is likely ' + 'caused by a bug in React. Please file an issue.');\n            }\n\n            var textInstance = finishedWork.stateNode;\n            var newText = finishedWork.memoizedProps; // For hydration we reuse the update path but we treat the oldProps\n            // as the newProps. The updatePayload will contain the real change in\n            // this case.\n\n            var oldText = current !== null ? current.memoizedProps : newText;\n\n            try {\n              commitTextUpdate(textInstance, oldText, newText);\n            } catch (error) {\n              captureCommitPhaseError(finishedWork, finishedWork.return, error);\n            }\n          }\n        }\n\n        return;\n      }\n\n    case HostRoot:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Update) {\n          {\n            if (current !== null) {\n              var prevRootState = current.memoizedState;\n\n              if (prevRootState.isDehydrated) {\n                try {\n                  commitHydratedContainer(root.containerInfo);\n                } catch (error) {\n                  captureCommitPhaseError(finishedWork, finishedWork.return, error);\n                }\n              }\n            }\n          }\n        }\n\n        return;\n      }\n\n    case HostPortal:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        return;\n      }\n\n    case SuspenseComponent:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n        var offscreenFiber = finishedWork.child;\n\n        if (offscreenFiber.flags & Visibility) {\n          var offscreenInstance = offscreenFiber.stateNode;\n          var newState = offscreenFiber.memoizedState;\n          var isHidden = newState !== null; // Track the current state on the Offscreen instance so we can\n          // read it during an event\n\n          offscreenInstance.isHidden = isHidden;\n\n          if (isHidden) {\n            var wasHidden = offscreenFiber.alternate !== null && offscreenFiber.alternate.memoizedState !== null;\n\n            if (!wasHidden) {\n              // TODO: Move to passive phase\n              markCommitTimeOfFallback();\n            }\n          }\n        }\n\n        if (flags & Update) {\n          try {\n            commitSuspenseCallback(finishedWork);\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          }\n\n          attachSuspenseRetryListeners(finishedWork);\n        }\n\n        return;\n      }\n\n    case OffscreenComponent:\n      {\n        var _wasHidden = current !== null && current.memoizedState !== null;\n\n        if ( // TODO: Remove this dead flag\n         finishedWork.mode & ConcurrentMode) {\n          // Before committing the children, track on the stack whether this\n          // offscreen subtree was already hidden, so that we don't unmount the\n          // effects again.\n          var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n          offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || _wasHidden;\n          recursivelyTraverseMutationEffects(root, finishedWork);\n          offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n        } else {\n          recursivelyTraverseMutationEffects(root, finishedWork);\n        }\n\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Visibility) {\n          var _offscreenInstance = finishedWork.stateNode;\n          var _newState = finishedWork.memoizedState;\n\n          var _isHidden = _newState !== null;\n\n          var offscreenBoundary = finishedWork; // Track the current state on the Offscreen instance so we can\n          // read it during an event\n\n          _offscreenInstance.isHidden = _isHidden;\n\n          {\n            if (_isHidden) {\n              if (!_wasHidden) {\n                if ((offscreenBoundary.mode & ConcurrentMode) !== NoMode) {\n                  nextEffect = offscreenBoundary;\n                  var offscreenChild = offscreenBoundary.child;\n\n                  while (offscreenChild !== null) {\n                    nextEffect = offscreenChild;\n                    disappearLayoutEffects_begin(offscreenChild);\n                    offscreenChild = offscreenChild.sibling;\n                  }\n                }\n              }\n            }\n          }\n\n          {\n            // TODO: This needs to run whenever there's an insertion or update\n            // inside a hidden Offscreen tree.\n            hideOrUnhideAllChildren(offscreenBoundary, _isHidden);\n          }\n        }\n\n        return;\n      }\n\n    case SuspenseListComponent:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Update) {\n          attachSuspenseRetryListeners(finishedWork);\n        }\n\n        return;\n      }\n\n    case ScopeComponent:\n      {\n\n        return;\n      }\n\n    default:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n        return;\n      }\n  }\n}\n\nfunction commitReconciliationEffects(finishedWork) {\n  // Placement effects (insertions, reorders) can be scheduled on any fiber\n  // type. They needs to happen after the children effects have fired, but\n  // before the effects on this fiber have fired.\n  var flags = finishedWork.flags;\n\n  if (flags & Placement) {\n    try {\n      commitPlacement(finishedWork);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    } // Clear the \"placement\" from effect tag so that we know that this is\n    // inserted, before any life-cycles like componentDidMount gets called.\n    // TODO: findDOMNode doesn't rely on this any more but isMounted does\n    // and isMounted is deprecated anyway so we should be able to kill this.\n\n\n    finishedWork.flags &= ~Placement;\n  }\n\n  if (flags & Hydrating) {\n    finishedWork.flags &= ~Hydrating;\n  }\n}\n\nfunction commitLayoutEffects(finishedWork, root, committedLanes) {\n  inProgressLanes = committedLanes;\n  inProgressRoot = root;\n  nextEffect = finishedWork;\n  commitLayoutEffects_begin(finishedWork, root, committedLanes);\n  inProgressLanes = null;\n  inProgressRoot = null;\n}\n\nfunction commitLayoutEffects_begin(subtreeRoot, root, committedLanes) {\n  // Suspense layout effects semantics don't change for legacy roots.\n  var isModernRoot = (subtreeRoot.mode & ConcurrentMode) !== NoMode;\n\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var firstChild = fiber.child;\n\n    if ( fiber.tag === OffscreenComponent && isModernRoot) {\n      // Keep track of the current Offscreen stack's state.\n      var isHidden = fiber.memoizedState !== null;\n      var newOffscreenSubtreeIsHidden = isHidden || offscreenSubtreeIsHidden;\n\n      if (newOffscreenSubtreeIsHidden) {\n        // The Offscreen tree is hidden. Skip over its layout effects.\n        commitLayoutMountEffects_complete(subtreeRoot, root, committedLanes);\n        continue;\n      } else {\n        // TODO (Offscreen) Also check: subtreeFlags & LayoutMask\n        var current = fiber.alternate;\n        var wasHidden = current !== null && current.memoizedState !== null;\n        var newOffscreenSubtreeWasHidden = wasHidden || offscreenSubtreeWasHidden;\n        var prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden;\n        var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden; // Traverse the Offscreen subtree with the current Offscreen as the root.\n\n        offscreenSubtreeIsHidden = newOffscreenSubtreeIsHidden;\n        offscreenSubtreeWasHidden = newOffscreenSubtreeWasHidden;\n\n        if (offscreenSubtreeWasHidden && !prevOffscreenSubtreeWasHidden) {\n          // This is the root of a reappearing boundary. Turn its layout effects\n          // back on.\n          nextEffect = fiber;\n          reappearLayoutEffects_begin(fiber);\n        }\n\n        var child = firstChild;\n\n        while (child !== null) {\n          nextEffect = child;\n          commitLayoutEffects_begin(child, // New root; bubble back up to here and stop.\n          root, committedLanes);\n          child = child.sibling;\n        } // Restore Offscreen state and resume in our-progress traversal.\n\n\n        nextEffect = fiber;\n        offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n        offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n        commitLayoutMountEffects_complete(subtreeRoot, root, committedLanes);\n        continue;\n      }\n    }\n\n    if ((fiber.subtreeFlags & LayoutMask) !== NoFlags && firstChild !== null) {\n      firstChild.return = fiber;\n      nextEffect = firstChild;\n    } else {\n      commitLayoutMountEffects_complete(subtreeRoot, root, committedLanes);\n    }\n  }\n}\n\nfunction commitLayoutMountEffects_complete(subtreeRoot, root, committedLanes) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n\n    if ((fiber.flags & LayoutMask) !== NoFlags) {\n      var current = fiber.alternate;\n      setCurrentFiber(fiber);\n\n      try {\n        commitLayoutEffectOnFiber(root, current, fiber, committedLanes);\n      } catch (error) {\n        captureCommitPhaseError(fiber, fiber.return, error);\n      }\n\n      resetCurrentFiber();\n    }\n\n    if (fiber === subtreeRoot) {\n      nextEffect = null;\n      return;\n    }\n\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction disappearLayoutEffects_begin(subtreeRoot) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var firstChild = fiber.child; // TODO (Offscreen) Check: flags & (RefStatic | LayoutStatic)\n\n    switch (fiber.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case MemoComponent:\n      case SimpleMemoComponent:\n        {\n          if ( fiber.mode & ProfileMode) {\n            try {\n              startLayoutEffectTimer();\n              commitHookEffectListUnmount(Layout, fiber, fiber.return);\n            } finally {\n              recordLayoutEffectDuration(fiber);\n            }\n          } else {\n            commitHookEffectListUnmount(Layout, fiber, fiber.return);\n          }\n\n          break;\n        }\n\n      case ClassComponent:\n        {\n          // TODO (Offscreen) Check: flags & RefStatic\n          safelyDetachRef(fiber, fiber.return);\n          var instance = fiber.stateNode;\n\n          if (typeof instance.componentWillUnmount === 'function') {\n            safelyCallComponentWillUnmount(fiber, fiber.return, instance);\n          }\n\n          break;\n        }\n\n      case HostComponent:\n        {\n          safelyDetachRef(fiber, fiber.return);\n          break;\n        }\n\n      case OffscreenComponent:\n        {\n          // Check if this is a\n          var isHidden = fiber.memoizedState !== null;\n\n          if (isHidden) {\n            // Nested Offscreen tree is already hidden. Don't disappear\n            // its effects.\n            disappearLayoutEffects_complete(subtreeRoot);\n            continue;\n          }\n\n          break;\n        }\n    } // TODO (Offscreen) Check: subtreeFlags & LayoutStatic\n\n\n    if (firstChild !== null) {\n      firstChild.return = fiber;\n      nextEffect = firstChild;\n    } else {\n      disappearLayoutEffects_complete(subtreeRoot);\n    }\n  }\n}\n\nfunction disappearLayoutEffects_complete(subtreeRoot) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n\n    if (fiber === subtreeRoot) {\n      nextEffect = null;\n      return;\n    }\n\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction reappearLayoutEffects_begin(subtreeRoot) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var firstChild = fiber.child;\n\n    if (fiber.tag === OffscreenComponent) {\n      var isHidden = fiber.memoizedState !== null;\n\n      if (isHidden) {\n        // Nested Offscreen tree is still hidden. Don't re-appear its effects.\n        reappearLayoutEffects_complete(subtreeRoot);\n        continue;\n      }\n    } // TODO (Offscreen) Check: subtreeFlags & LayoutStatic\n\n\n    if (firstChild !== null) {\n      // This node may have been reused from a previous render, so we can't\n      // assume its return pointer is correct.\n      firstChild.return = fiber;\n      nextEffect = firstChild;\n    } else {\n      reappearLayoutEffects_complete(subtreeRoot);\n    }\n  }\n}\n\nfunction reappearLayoutEffects_complete(subtreeRoot) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect; // TODO (Offscreen) Check: flags & LayoutStatic\n\n    setCurrentFiber(fiber);\n\n    try {\n      reappearLayoutEffectsOnFiber(fiber);\n    } catch (error) {\n      captureCommitPhaseError(fiber, fiber.return, error);\n    }\n\n    resetCurrentFiber();\n\n    if (fiber === subtreeRoot) {\n      nextEffect = null;\n      return;\n    }\n\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      // This node may have been reused from a previous render, so we can't\n      // assume its return pointer is correct.\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction commitPassiveMountEffects(root, finishedWork, committedLanes, committedTransitions) {\n  nextEffect = finishedWork;\n  commitPassiveMountEffects_begin(finishedWork, root, committedLanes, committedTransitions);\n}\n\nfunction commitPassiveMountEffects_begin(subtreeRoot, root, committedLanes, committedTransitions) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var firstChild = fiber.child;\n\n    if ((fiber.subtreeFlags & PassiveMask) !== NoFlags && firstChild !== null) {\n      firstChild.return = fiber;\n      nextEffect = firstChild;\n    } else {\n      commitPassiveMountEffects_complete(subtreeRoot, root, committedLanes, committedTransitions);\n    }\n  }\n}\n\nfunction commitPassiveMountEffects_complete(subtreeRoot, root, committedLanes, committedTransitions) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n\n    if ((fiber.flags & Passive) !== NoFlags) {\n      setCurrentFiber(fiber);\n\n      try {\n        commitPassiveMountOnFiber(root, fiber, committedLanes, committedTransitions);\n      } catch (error) {\n        captureCommitPhaseError(fiber, fiber.return, error);\n      }\n\n      resetCurrentFiber();\n    }\n\n    if (fiber === subtreeRoot) {\n      nextEffect = null;\n      return;\n    }\n\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction commitPassiveMountOnFiber(finishedRoot, finishedWork, committedLanes, committedTransitions) {\n  switch (finishedWork.tag) {\n    case FunctionComponent:\n    case ForwardRef:\n    case SimpleMemoComponent:\n      {\n        if ( finishedWork.mode & ProfileMode) {\n          startPassiveEffectTimer();\n\n          try {\n            commitHookEffectListMount(Passive$1 | HasEffect, finishedWork);\n          } finally {\n            recordPassiveEffectDuration(finishedWork);\n          }\n        } else {\n          commitHookEffectListMount(Passive$1 | HasEffect, finishedWork);\n        }\n\n        break;\n      }\n  }\n}\n\nfunction commitPassiveUnmountEffects(firstChild) {\n  nextEffect = firstChild;\n  commitPassiveUnmountEffects_begin();\n}\n\nfunction commitPassiveUnmountEffects_begin() {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var child = fiber.child;\n\n    if ((nextEffect.flags & ChildDeletion) !== NoFlags) {\n      var deletions = fiber.deletions;\n\n      if (deletions !== null) {\n        for (var i = 0; i < deletions.length; i++) {\n          var fiberToDelete = deletions[i];\n          nextEffect = fiberToDelete;\n          commitPassiveUnmountEffectsInsideOfDeletedTree_begin(fiberToDelete, fiber);\n        }\n\n        {\n          // A fiber was deleted from this parent fiber, but it's still part of\n          // the previous (alternate) parent fiber's list of children. Because\n          // children are a linked list, an earlier sibling that's still alive\n          // will be connected to the deleted fiber via its `alternate`:\n          //\n          //   live fiber\n          //   --alternate--> previous live fiber\n          //   --sibling--> deleted fiber\n          //\n          // We can't disconnect `alternate` on nodes that haven't been deleted\n          // yet, but we can disconnect the `sibling` and `child` pointers.\n          var previousFiber = fiber.alternate;\n\n          if (previousFiber !== null) {\n            var detachedChild = previousFiber.child;\n\n            if (detachedChild !== null) {\n              previousFiber.child = null;\n\n              do {\n                var detachedSibling = detachedChild.sibling;\n                detachedChild.sibling = null;\n                detachedChild = detachedSibling;\n              } while (detachedChild !== null);\n            }\n          }\n        }\n\n        nextEffect = fiber;\n      }\n    }\n\n    if ((fiber.subtreeFlags & PassiveMask) !== NoFlags && child !== null) {\n      child.return = fiber;\n      nextEffect = child;\n    } else {\n      commitPassiveUnmountEffects_complete();\n    }\n  }\n}\n\nfunction commitPassiveUnmountEffects_complete() {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n\n    if ((fiber.flags & Passive) !== NoFlags) {\n      setCurrentFiber(fiber);\n      commitPassiveUnmountOnFiber(fiber);\n      resetCurrentFiber();\n    }\n\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n  switch (finishedWork.tag) {\n    case FunctionComponent:\n    case ForwardRef:\n    case SimpleMemoComponent:\n      {\n        if ( finishedWork.mode & ProfileMode) {\n          startPassiveEffectTimer();\n          commitHookEffectListUnmount(Passive$1 | HasEffect, finishedWork, finishedWork.return);\n          recordPassiveEffectDuration(finishedWork);\n        } else {\n          commitHookEffectListUnmount(Passive$1 | HasEffect, finishedWork, finishedWork.return);\n        }\n\n        break;\n      }\n  }\n}\n\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(deletedSubtreeRoot, nearestMountedAncestor) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect; // Deletion effects fire in parent -> child order\n    // TODO: Check if fiber has a PassiveStatic flag\n\n    setCurrentFiber(fiber);\n    commitPassiveUnmountInsideDeletedTreeOnFiber(fiber, nearestMountedAncestor);\n    resetCurrentFiber();\n    var child = fiber.child; // TODO: Only traverse subtree if it has a PassiveStatic flag. (But, if we\n    // do this, still need to handle `deletedTreeCleanUpLevel` correctly.)\n\n    if (child !== null) {\n      child.return = fiber;\n      nextEffect = child;\n    } else {\n      commitPassiveUnmountEffectsInsideOfDeletedTree_complete(deletedSubtreeRoot);\n    }\n  }\n}\n\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_complete(deletedSubtreeRoot) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var sibling = fiber.sibling;\n    var returnFiber = fiber.return;\n\n    {\n      // Recursively traverse the entire deleted tree and clean up fiber fields.\n      // This is more aggressive than ideal, and the long term goal is to only\n      // have to detach the deleted tree at the root.\n      detachFiberAfterEffects(fiber);\n\n      if (fiber === deletedSubtreeRoot) {\n        nextEffect = null;\n        return;\n      }\n    }\n\n    if (sibling !== null) {\n      sibling.return = returnFiber;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = returnFiber;\n  }\n}\n\nfunction commitPassiveUnmountInsideDeletedTreeOnFiber(current, nearestMountedAncestor) {\n  switch (current.tag) {\n    case FunctionComponent:\n    case ForwardRef:\n    case SimpleMemoComponent:\n      {\n        if ( current.mode & ProfileMode) {\n          startPassiveEffectTimer();\n          commitHookEffectListUnmount(Passive$1, current, nearestMountedAncestor);\n          recordPassiveEffectDuration(current);\n        } else {\n          commitHookEffectListUnmount(Passive$1, current, nearestMountedAncestor);\n        }\n\n        break;\n      }\n  }\n} // TODO: Reuse reappearLayoutEffects traversal here?\n\n\nfunction invokeLayoutEffectMountInDEV(fiber) {\n  {\n    // We don't need to re-check StrictEffectsMode here.\n    // This function is only called if that check has already passed.\n    switch (fiber.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          try {\n            commitHookEffectListMount(Layout | HasEffect, fiber);\n          } catch (error) {\n            captureCommitPhaseError(fiber, fiber.return, error);\n          }\n\n          break;\n        }\n\n      case ClassComponent:\n        {\n          var instance = fiber.stateNode;\n\n          try {\n            instance.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(fiber, fiber.return, error);\n          }\n\n          break;\n        }\n    }\n  }\n}\n\nfunction invokePassiveEffectMountInDEV(fiber) {\n  {\n    // We don't need to re-check StrictEffectsMode here.\n    // This function is only called if that check has already passed.\n    switch (fiber.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          try {\n            commitHookEffectListMount(Passive$1 | HasEffect, fiber);\n          } catch (error) {\n            captureCommitPhaseError(fiber, fiber.return, error);\n          }\n\n          break;\n        }\n    }\n  }\n}\n\nfunction invokeLayoutEffectUnmountInDEV(fiber) {\n  {\n    // We don't need to re-check StrictEffectsMode here.\n    // This function is only called if that check has already passed.\n    switch (fiber.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          try {\n            commitHookEffectListUnmount(Layout | HasEffect, fiber, fiber.return);\n          } catch (error) {\n            captureCommitPhaseError(fiber, fiber.return, error);\n          }\n\n          break;\n        }\n\n      case ClassComponent:\n        {\n          var instance = fiber.stateNode;\n\n          if (typeof instance.componentWillUnmount === 'function') {\n            safelyCallComponentWillUnmount(fiber, fiber.return, instance);\n          }\n\n          break;\n        }\n    }\n  }\n}\n\nfunction invokePassiveEffectUnmountInDEV(fiber) {\n  {\n    // We don't need to re-check StrictEffectsMode here.\n    // This function is only called if that check has already passed.\n    switch (fiber.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          try {\n            commitHookEffectListUnmount(Passive$1 | HasEffect, fiber, fiber.return);\n          } catch (error) {\n            captureCommitPhaseError(fiber, fiber.return, error);\n          }\n        }\n    }\n  }\n}\n\nvar COMPONENT_TYPE = 0;\nvar HAS_PSEUDO_CLASS_TYPE = 1;\nvar ROLE_TYPE = 2;\nvar TEST_NAME_TYPE = 3;\nvar TEXT_TYPE = 4;\n\nif (typeof Symbol === 'function' && Symbol.for) {\n  var symbolFor = Symbol.for;\n  COMPONENT_TYPE = symbolFor('selector.component');\n  HAS_PSEUDO_CLASS_TYPE = symbolFor('selector.has_pseudo_class');\n  ROLE_TYPE = symbolFor('selector.role');\n  TEST_NAME_TYPE = symbolFor('selector.test_id');\n  TEXT_TYPE = symbolFor('selector.text');\n}\nvar commitHooks = [];\nfunction onCommitRoot$1() {\n  {\n    commitHooks.forEach(function (commitHook) {\n      return commitHook();\n    });\n  }\n}\n\nvar ReactCurrentActQueue = ReactSharedInternals.ReactCurrentActQueue;\nfunction isLegacyActEnvironment(fiber) {\n  {\n    // Legacy mode. We preserve the behavior of React 17's act. It assumes an\n    // act environment whenever `jest` is defined, but you can still turn off\n    // spurious warnings by setting IS_REACT_ACT_ENVIRONMENT explicitly\n    // to false.\n    var isReactActEnvironmentGlobal = // $FlowExpectedError – Flow doesn't know about IS_REACT_ACT_ENVIRONMENT global\n    typeof IS_REACT_ACT_ENVIRONMENT !== 'undefined' ? IS_REACT_ACT_ENVIRONMENT : undefined; // $FlowExpectedError - Flow doesn't know about jest\n\n    var jestIsDefined = typeof jest !== 'undefined';\n    return  jestIsDefined && isReactActEnvironmentGlobal !== false;\n  }\n}\nfunction isConcurrentActEnvironment() {\n  {\n    var isReactActEnvironmentGlobal = // $FlowExpectedError – Flow doesn't know about IS_REACT_ACT_ENVIRONMENT global\n    typeof IS_REACT_ACT_ENVIRONMENT !== 'undefined' ? IS_REACT_ACT_ENVIRONMENT : undefined;\n\n    if (!isReactActEnvironmentGlobal && ReactCurrentActQueue.current !== null) {\n      // TODO: Include link to relevant documentation page.\n      error('The current testing environment is not configured to support ' + 'act(...)');\n    }\n\n    return isReactActEnvironmentGlobal;\n  }\n}\n\nvar ceil = Math.ceil;\nvar ReactCurrentDispatcher$2 = ReactSharedInternals.ReactCurrentDispatcher,\n    ReactCurrentOwner$2 = ReactSharedInternals.ReactCurrentOwner,\n    ReactCurrentBatchConfig$3 = ReactSharedInternals.ReactCurrentBatchConfig,\n    ReactCurrentActQueue$1 = ReactSharedInternals.ReactCurrentActQueue;\nvar NoContext =\n/*             */\n0;\nvar BatchedContext =\n/*               */\n1;\nvar RenderContext =\n/*                */\n2;\nvar CommitContext =\n/*                */\n4;\nvar RootInProgress = 0;\nvar RootFatalErrored = 1;\nvar RootErrored = 2;\nvar RootSuspended = 3;\nvar RootSuspendedWithDelay = 4;\nvar RootCompleted = 5;\nvar RootDidNotComplete = 6; // Describes where we are in the React execution stack\n\nvar executionContext = NoContext; // The root we're working on\n\nvar workInProgressRoot = null; // The fiber we're working on\n\nvar workInProgress = null; // The lanes we're rendering\n\nvar workInProgressRootRenderLanes = NoLanes; // Stack that allows components to change the render lanes for its subtree\n// This is a superset of the lanes we started working on at the root. The only\n// case where it's different from `workInProgressRootRenderLanes` is when we\n// enter a subtree that is hidden and needs to be unhidden: Suspense and\n// Offscreen component.\n//\n// Most things in the work loop should deal with workInProgressRootRenderLanes.\n// Most things in begin/complete phases should deal with subtreeRenderLanes.\n\nvar subtreeRenderLanes = NoLanes;\nvar subtreeRenderLanesCursor = createCursor(NoLanes); // Whether to root completed, errored, suspended, etc.\n\nvar workInProgressRootExitStatus = RootInProgress; // A fatal error, if one is thrown\n\nvar workInProgressRootFatalError = null; // \"Included\" lanes refer to lanes that were worked on during this render. It's\n// slightly different than `renderLanes` because `renderLanes` can change as you\n// enter and exit an Offscreen tree. This value is the combination of all render\n// lanes for the entire render phase.\n\nvar workInProgressRootIncludedLanes = NoLanes; // The work left over by components that were visited during this render. Only\n// includes unprocessed updates, not work in bailed out children.\n\nvar workInProgressRootSkippedLanes = NoLanes; // Lanes that were updated (in an interleaved event) during this render.\n\nvar workInProgressRootInterleavedUpdatedLanes = NoLanes; // Lanes that were updated during the render phase (*not* an interleaved event).\n\nvar workInProgressRootPingedLanes = NoLanes; // Errors that are thrown during the render phase.\n\nvar workInProgressRootConcurrentErrors = null; // These are errors that we recovered from without surfacing them to the UI.\n// We will log them once the tree commits.\n\nvar workInProgressRootRecoverableErrors = null; // The most recent time we committed a fallback. This lets us ensure a train\n// model where we don't commit new loading states in too quick succession.\n\nvar globalMostRecentFallbackTime = 0;\nvar FALLBACK_THROTTLE_MS = 500; // The absolute time for when we should start giving up on rendering\n// more and prefer CPU suspense heuristics instead.\n\nvar workInProgressRootRenderTargetTime = Infinity; // How long a render is supposed to take before we start following CPU\n// suspense heuristics and opt out of rendering more content.\n\nvar RENDER_TIMEOUT_MS = 500;\nvar workInProgressTransitions = null;\n\nfunction resetRenderTimer() {\n  workInProgressRootRenderTargetTime = now() + RENDER_TIMEOUT_MS;\n}\n\nfunction getRenderTargetTime() {\n  return workInProgressRootRenderTargetTime;\n}\nvar hasUncaughtError = false;\nvar firstUncaughtError = null;\nvar legacyErrorBoundariesThatAlreadyFailed = null; // Only used when enableProfilerNestedUpdateScheduledHook is true;\nvar rootDoesHavePassiveEffects = false;\nvar rootWithPendingPassiveEffects = null;\nvar pendingPassiveEffectsLanes = NoLanes;\nvar pendingPassiveProfilerEffects = [];\nvar pendingPassiveTransitions = null; // Use these to prevent an infinite loop of nested updates\n\nvar NESTED_UPDATE_LIMIT = 50;\nvar nestedUpdateCount = 0;\nvar rootWithNestedUpdates = null;\nvar isFlushingPassiveEffects = false;\nvar didScheduleUpdateDuringPassiveEffects = false;\nvar NESTED_PASSIVE_UPDATE_LIMIT = 50;\nvar nestedPassiveUpdateCount = 0;\nvar rootWithPassiveNestedUpdates = null; // If two updates are scheduled within the same event, we should treat their\n// event times as simultaneous, even if the actual clock time has advanced\n// between the first and second call.\n\nvar currentEventTime = NoTimestamp;\nvar currentEventTransitionLane = NoLanes;\nvar isRunningInsertionEffect = false;\nfunction getWorkInProgressRoot() {\n  return workInProgressRoot;\n}\nfunction requestEventTime() {\n  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n    // We're inside React, so it's fine to read the actual time.\n    return now();\n  } // We're not inside React, so we may be in the middle of a browser event.\n\n\n  if (currentEventTime !== NoTimestamp) {\n    // Use the same start time for all updates until we enter React again.\n    return currentEventTime;\n  } // This is the first update since React yielded. Compute a new start time.\n\n\n  currentEventTime = now();\n  return currentEventTime;\n}\nfunction requestUpdateLane(fiber) {\n  // Special cases\n  var mode = fiber.mode;\n\n  if ((mode & ConcurrentMode) === NoMode) {\n    return SyncLane;\n  } else if ( (executionContext & RenderContext) !== NoContext && workInProgressRootRenderLanes !== NoLanes) {\n    // This is a render phase update. These are not officially supported. The\n    // old behavior is to give this the same \"thread\" (lanes) as\n    // whatever is currently rendering. So if you call `setState` on a component\n    // that happens later in the same render, it will flush. Ideally, we want to\n    // remove the special case and treat them as if they came from an\n    // interleaved event. Regardless, this pattern is not officially supported.\n    // This behavior is only a fallback. The flag only exists until we can roll\n    // out the setState warning, since existing code might accidentally rely on\n    // the current behavior.\n    return pickArbitraryLane(workInProgressRootRenderLanes);\n  }\n\n  var isTransition = requestCurrentTransition() !== NoTransition;\n\n  if (isTransition) {\n    if ( ReactCurrentBatchConfig$3.transition !== null) {\n      var transition = ReactCurrentBatchConfig$3.transition;\n\n      if (!transition._updatedFibers) {\n        transition._updatedFibers = new Set();\n      }\n\n      transition._updatedFibers.add(fiber);\n    } // The algorithm for assigning an update to a lane should be stable for all\n    // updates at the same priority within the same event. To do this, the\n    // inputs to the algorithm must be the same.\n    //\n    // The trick we use is to cache the first of each of these inputs within an\n    // event. Then reset the cached values once we can be sure the event is\n    // over. Our heuristic for that is whenever we enter a concurrent work loop.\n\n\n    if (currentEventTransitionLane === NoLane) {\n      // All transitions within the same event are assigned the same lane.\n      currentEventTransitionLane = claimNextTransitionLane();\n    }\n\n    return currentEventTransitionLane;\n  } // Updates originating inside certain React methods, like flushSync, have\n  // their priority set by tracking it with a context variable.\n  //\n  // The opaque type returned by the host config is internally a lane, so we can\n  // use that directly.\n  // TODO: Move this type conversion to the event priority module.\n\n\n  var updateLane = getCurrentUpdatePriority();\n\n  if (updateLane !== NoLane) {\n    return updateLane;\n  } // This update originated outside React. Ask the host environment for an\n  // appropriate priority, based on the type of event.\n  //\n  // The opaque type returned by the host config is internally a lane, so we can\n  // use that directly.\n  // TODO: Move this type conversion to the event priority module.\n\n\n  var eventLane = getCurrentEventPriority();\n  return eventLane;\n}\n\nfunction requestRetryLane(fiber) {\n  // This is a fork of `requestUpdateLane` designed specifically for Suspense\n  // \"retries\" — a special update that attempts to flip a Suspense boundary\n  // from its placeholder state to its primary/resolved state.\n  // Special cases\n  var mode = fiber.mode;\n\n  if ((mode & ConcurrentMode) === NoMode) {\n    return SyncLane;\n  }\n\n  return claimNextRetryLane();\n}\n\nfunction scheduleUpdateOnFiber(root, fiber, lane, eventTime) {\n  checkForNestedUpdates();\n\n  {\n    if (isRunningInsertionEffect) {\n      error('useInsertionEffect must not schedule updates.');\n    }\n  }\n\n  {\n    if (isFlushingPassiveEffects) {\n      didScheduleUpdateDuringPassiveEffects = true;\n    }\n  } // Mark that the root has a pending update.\n\n\n  markRootUpdated(root, lane, eventTime);\n\n  if ((executionContext & RenderContext) !== NoLanes && root === workInProgressRoot) {\n    // This update was dispatched during the render phase. This is a mistake\n    // if the update originates from user space (with the exception of local\n    // hook updates, which are handled differently and don't reach this\n    // function), but there are some internal React features that use this as\n    // an implementation detail, like selective hydration.\n    warnAboutRenderPhaseUpdatesInDEV(fiber); // Track lanes that were updated during the render phase\n  } else {\n    // This is a normal update, scheduled from outside the render phase. For\n    // example, during an input event.\n    {\n      if (isDevToolsPresent) {\n        addFiberToLanesMap(root, fiber, lane);\n      }\n    }\n\n    warnIfUpdatesNotWrappedWithActDEV(fiber);\n\n    if (root === workInProgressRoot) {\n      // Received an update to a tree that's in the middle of rendering. Mark\n      // that there was an interleaved update work on this root. Unless the\n      // `deferRenderPhaseUpdateToNextBatch` flag is off and this is a render\n      // phase update. In that case, we don't treat render phase updates as if\n      // they were interleaved, for backwards compat reasons.\n      if ( (executionContext & RenderContext) === NoContext) {\n        workInProgressRootInterleavedUpdatedLanes = mergeLanes(workInProgressRootInterleavedUpdatedLanes, lane);\n      }\n\n      if (workInProgressRootExitStatus === RootSuspendedWithDelay) {\n        // The root already suspended with a delay, which means this render\n        // definitely won't finish. Since we have a new update, let's mark it as\n        // suspended now, right before marking the incoming update. This has the\n        // effect of interrupting the current render and switching to the update.\n        // TODO: Make sure this doesn't override pings that happen while we've\n        // already started rendering.\n        markRootSuspended$1(root, workInProgressRootRenderLanes);\n      }\n    }\n\n    ensureRootIsScheduled(root, eventTime);\n\n    if (lane === SyncLane && executionContext === NoContext && (fiber.mode & ConcurrentMode) === NoMode && // Treat `act` as if it's inside `batchedUpdates`, even in legacy mode.\n    !( ReactCurrentActQueue$1.isBatchingLegacy)) {\n      // Flush the synchronous work now, unless we're already working or inside\n      // a batch. This is intentionally inside scheduleUpdateOnFiber instead of\n      // scheduleCallbackForFiber to preserve the ability to schedule a callback\n      // without immediately flushing it. We only do this for user-initiated\n      // updates, to preserve historical behavior of legacy mode.\n      resetRenderTimer();\n      flushSyncCallbacksOnlyInLegacyMode();\n    }\n  }\n}\nfunction scheduleInitialHydrationOnRoot(root, lane, eventTime) {\n  // This is a special fork of scheduleUpdateOnFiber that is only used to\n  // schedule the initial hydration of a root that has just been created. Most\n  // of the stuff in scheduleUpdateOnFiber can be skipped.\n  //\n  // The main reason for this separate path, though, is to distinguish the\n  // initial children from subsequent updates. In fully client-rendered roots\n  // (createRoot instead of hydrateRoot), all top-level renders are modeled as\n  // updates, but hydration roots are special because the initial render must\n  // match what was rendered on the server.\n  var current = root.current;\n  current.lanes = lane;\n  markRootUpdated(root, lane, eventTime);\n  ensureRootIsScheduled(root, eventTime);\n}\nfunction isUnsafeClassRenderPhaseUpdate(fiber) {\n  // Check if this is a render phase update. Only called by class components,\n  // which special (deprecated) behavior for UNSAFE_componentWillReceive props.\n  return (// TODO: Remove outdated deferRenderPhaseUpdateToNextBatch experiment. We\n    // decided not to enable it.\n     (executionContext & RenderContext) !== NoContext\n  );\n} // Use this function to schedule a task for a root. There's only one task per\n// root; if a task was already scheduled, we'll check to make sure the priority\n// of the existing task is the same as the priority of the next level that the\n// root has work on. This function is called on every update, and right before\n// exiting a task.\n\nfunction ensureRootIsScheduled(root, currentTime) {\n  var existingCallbackNode = root.callbackNode; // Check if any lanes are being starved by other work. If so, mark them as\n  // expired so we know to work on those next.\n\n  markStarvedLanesAsExpired(root, currentTime); // Determine the next lanes to work on, and their priority.\n\n  var nextLanes = getNextLanes(root, root === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes);\n\n  if (nextLanes === NoLanes) {\n    // Special case: There's nothing to work on.\n    if (existingCallbackNode !== null) {\n      cancelCallback$1(existingCallbackNode);\n    }\n\n    root.callbackNode = null;\n    root.callbackPriority = NoLane;\n    return;\n  } // We use the highest priority lane to represent the priority of the callback.\n\n\n  var newCallbackPriority = getHighestPriorityLane(nextLanes); // Check if there's an existing task. We may be able to reuse it.\n\n  var existingCallbackPriority = root.callbackPriority;\n\n  if (existingCallbackPriority === newCallbackPriority && // Special case related to `act`. If the currently scheduled task is a\n  // Scheduler task, rather than an `act` task, cancel it and re-scheduled\n  // on the `act` queue.\n  !( ReactCurrentActQueue$1.current !== null && existingCallbackNode !== fakeActCallbackNode)) {\n    {\n      // If we're going to re-use an existing task, it needs to exist.\n      // Assume that discrete update microtasks are non-cancellable and null.\n      // TODO: Temporary until we confirm this warning is not fired.\n      if (existingCallbackNode == null && existingCallbackPriority !== SyncLane) {\n        error('Expected scheduled callback to exist. This error is likely caused by a bug in React. Please file an issue.');\n      }\n    } // The priority hasn't changed. We can reuse the existing task. Exit.\n\n\n    return;\n  }\n\n  if (existingCallbackNode != null) {\n    // Cancel the existing callback. We'll schedule a new one below.\n    cancelCallback$1(existingCallbackNode);\n  } // Schedule a new callback.\n\n\n  var newCallbackNode;\n\n  if (newCallbackPriority === SyncLane) {\n    // Special case: Sync React callbacks are scheduled on a special\n    // internal queue\n    if (root.tag === LegacyRoot) {\n      if ( ReactCurrentActQueue$1.isBatchingLegacy !== null) {\n        ReactCurrentActQueue$1.didScheduleLegacyUpdate = true;\n      }\n\n      scheduleLegacySyncCallback(performSyncWorkOnRoot.bind(null, root));\n    } else {\n      scheduleSyncCallback(performSyncWorkOnRoot.bind(null, root));\n    }\n\n    {\n      // Flush the queue in a microtask.\n      if ( ReactCurrentActQueue$1.current !== null) {\n        // Inside `act`, use our internal `act` queue so that these get flushed\n        // at the end of the current scope even when using the sync version\n        // of `act`.\n        ReactCurrentActQueue$1.current.push(flushSyncCallbacks);\n      } else {\n        scheduleMicrotask(function () {\n          // In Safari, appending an iframe forces microtasks to run.\n          // https://github.com/facebook/react/issues/22459\n          // We don't support running callbacks in the middle of render\n          // or commit so we need to check against that.\n          if ((executionContext & (RenderContext | CommitContext)) === NoContext) {\n            // Note that this would still prematurely flush the callbacks\n            // if this happens outside render or commit phase (e.g. in an event).\n            flushSyncCallbacks();\n          }\n        });\n      }\n    }\n\n    newCallbackNode = null;\n  } else {\n    var schedulerPriorityLevel;\n\n    switch (lanesToEventPriority(nextLanes)) {\n      case DiscreteEventPriority:\n        schedulerPriorityLevel = ImmediatePriority;\n        break;\n\n      case ContinuousEventPriority:\n        schedulerPriorityLevel = UserBlockingPriority;\n        break;\n\n      case DefaultEventPriority:\n        schedulerPriorityLevel = NormalPriority;\n        break;\n\n      case IdleEventPriority:\n        schedulerPriorityLevel = IdlePriority;\n        break;\n\n      default:\n        schedulerPriorityLevel = NormalPriority;\n        break;\n    }\n\n    newCallbackNode = scheduleCallback$1(schedulerPriorityLevel, performConcurrentWorkOnRoot.bind(null, root));\n  }\n\n  root.callbackPriority = newCallbackPriority;\n  root.callbackNode = newCallbackNode;\n} // This is the entry point for every concurrent task, i.e. anything that\n// goes through Scheduler.\n\n\nfunction performConcurrentWorkOnRoot(root, didTimeout) {\n  {\n    resetNestedUpdateFlag();\n  } // Since we know we're in a React event, we can clear the current\n  // event time. The next update will compute a new event time.\n\n\n  currentEventTime = NoTimestamp;\n  currentEventTransitionLane = NoLanes;\n\n  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n    throw new Error('Should not already be working.');\n  } // Flush any pending passive effects before deciding which lanes to work on,\n  // in case they schedule additional work.\n\n\n  var originalCallbackNode = root.callbackNode;\n  var didFlushPassiveEffects = flushPassiveEffects();\n\n  if (didFlushPassiveEffects) {\n    // Something in the passive effect phase may have canceled the current task.\n    // Check if the task node for this root was changed.\n    if (root.callbackNode !== originalCallbackNode) {\n      // The current task was canceled. Exit. We don't need to call\n      // `ensureRootIsScheduled` because the check above implies either that\n      // there's a new task, or that there's no remaining work on this root.\n      return null;\n    }\n  } // Determine the next lanes to work on, using the fields stored\n  // on the root.\n\n\n  var lanes = getNextLanes(root, root === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes);\n\n  if (lanes === NoLanes) {\n    // Defensive coding. This is never expected to happen.\n    return null;\n  } // We disable time-slicing in some cases: if the work has been CPU-bound\n  // for too long (\"expired\" work, to prevent starvation), or we're in\n  // sync-updates-by-default mode.\n  // TODO: We only check `didTimeout` defensively, to account for a Scheduler\n  // bug we're still investigating. Once the bug in Scheduler is fixed,\n  // we can remove this, since we track expiration ourselves.\n\n\n  var shouldTimeSlice = !includesBlockingLane(root, lanes) && !includesExpiredLane(root, lanes) && ( !didTimeout);\n  var exitStatus = shouldTimeSlice ? renderRootConcurrent(root, lanes) : renderRootSync(root, lanes);\n\n  if (exitStatus !== RootInProgress) {\n    if (exitStatus === RootErrored) {\n      // If something threw an error, try rendering one more time. We'll\n      // render synchronously to block concurrent data mutations, and we'll\n      // includes all pending updates are included. If it still fails after\n      // the second attempt, we'll give up and commit the resulting tree.\n      var errorRetryLanes = getLanesToRetrySynchronouslyOnError(root);\n\n      if (errorRetryLanes !== NoLanes) {\n        lanes = errorRetryLanes;\n        exitStatus = recoverFromConcurrentError(root, errorRetryLanes);\n      }\n    }\n\n    if (exitStatus === RootFatalErrored) {\n      var fatalError = workInProgressRootFatalError;\n      prepareFreshStack(root, NoLanes);\n      markRootSuspended$1(root, lanes);\n      ensureRootIsScheduled(root, now());\n      throw fatalError;\n    }\n\n    if (exitStatus === RootDidNotComplete) {\n      // The render unwound without completing the tree. This happens in special\n      // cases where need to exit the current render without producing a\n      // consistent tree or committing.\n      //\n      // This should only happen during a concurrent render, not a discrete or\n      // synchronous update. We should have already checked for this when we\n      // unwound the stack.\n      markRootSuspended$1(root, lanes);\n    } else {\n      // The render completed.\n      // Check if this render may have yielded to a concurrent event, and if so,\n      // confirm that any newly rendered stores are consistent.\n      // TODO: It's possible that even a concurrent render may never have yielded\n      // to the main thread, if it was fast enough, or if it expired. We could\n      // skip the consistency check in that case, too.\n      var renderWasConcurrent = !includesBlockingLane(root, lanes);\n      var finishedWork = root.current.alternate;\n\n      if (renderWasConcurrent && !isRenderConsistentWithExternalStores(finishedWork)) {\n        // A store was mutated in an interleaved event. Render again,\n        // synchronously, to block further mutations.\n        exitStatus = renderRootSync(root, lanes); // We need to check again if something threw\n\n        if (exitStatus === RootErrored) {\n          var _errorRetryLanes = getLanesToRetrySynchronouslyOnError(root);\n\n          if (_errorRetryLanes !== NoLanes) {\n            lanes = _errorRetryLanes;\n            exitStatus = recoverFromConcurrentError(root, _errorRetryLanes); // We assume the tree is now consistent because we didn't yield to any\n            // concurrent events.\n          }\n        }\n\n        if (exitStatus === RootFatalErrored) {\n          var _fatalError = workInProgressRootFatalError;\n          prepareFreshStack(root, NoLanes);\n          markRootSuspended$1(root, lanes);\n          ensureRootIsScheduled(root, now());\n          throw _fatalError;\n        }\n      } // We now have a consistent tree. The next step is either to commit it,\n      // or, if something suspended, wait to commit it after a timeout.\n\n\n      root.finishedWork = finishedWork;\n      root.finishedLanes = lanes;\n      finishConcurrentRender(root, exitStatus, lanes);\n    }\n  }\n\n  ensureRootIsScheduled(root, now());\n\n  if (root.callbackNode === originalCallbackNode) {\n    // The task node scheduled for this root is the same one that's\n    // currently executed. Need to return a continuation.\n    return performConcurrentWorkOnRoot.bind(null, root);\n  }\n\n  return null;\n}\n\nfunction recoverFromConcurrentError(root, errorRetryLanes) {\n  // If an error occurred during hydration, discard server response and fall\n  // back to client side render.\n  // Before rendering again, save the errors from the previous attempt.\n  var errorsFromFirstAttempt = workInProgressRootConcurrentErrors;\n\n  if (isRootDehydrated(root)) {\n    // The shell failed to hydrate. Set a flag to force a client rendering\n    // during the next attempt. To do this, we call prepareFreshStack now\n    // to create the root work-in-progress fiber. This is a bit weird in terms\n    // of factoring, because it relies on renderRootSync not calling\n    // prepareFreshStack again in the call below, which happens because the\n    // root and lanes haven't changed.\n    //\n    // TODO: I think what we should do is set ForceClientRender inside\n    // throwException, like we do for nested Suspense boundaries. The reason\n    // it's here instead is so we can switch to the synchronous work loop, too.\n    // Something to consider for a future refactor.\n    var rootWorkInProgress = prepareFreshStack(root, errorRetryLanes);\n    rootWorkInProgress.flags |= ForceClientRender;\n\n    {\n      errorHydratingContainer(root.containerInfo);\n    }\n  }\n\n  var exitStatus = renderRootSync(root, errorRetryLanes);\n\n  if (exitStatus !== RootErrored) {\n    // Successfully finished rendering on retry\n    // The errors from the failed first attempt have been recovered. Add\n    // them to the collection of recoverable errors. We'll log them in the\n    // commit phase.\n    var errorsFromSecondAttempt = workInProgressRootRecoverableErrors;\n    workInProgressRootRecoverableErrors = errorsFromFirstAttempt; // The errors from the second attempt should be queued after the errors\n    // from the first attempt, to preserve the causal sequence.\n\n    if (errorsFromSecondAttempt !== null) {\n      queueRecoverableErrors(errorsFromSecondAttempt);\n    }\n  }\n\n  return exitStatus;\n}\n\nfunction queueRecoverableErrors(errors) {\n  if (workInProgressRootRecoverableErrors === null) {\n    workInProgressRootRecoverableErrors = errors;\n  } else {\n    workInProgressRootRecoverableErrors.push.apply(workInProgressRootRecoverableErrors, errors);\n  }\n}\n\nfunction finishConcurrentRender(root, exitStatus, lanes) {\n  switch (exitStatus) {\n    case RootInProgress:\n    case RootFatalErrored:\n      {\n        throw new Error('Root did not complete. This is a bug in React.');\n      }\n    // Flow knows about invariant, so it complains if I add a break\n    // statement, but eslint doesn't know about invariant, so it complains\n    // if I do. eslint-disable-next-line no-fallthrough\n\n    case RootErrored:\n      {\n        // We should have already attempted to retry this tree. If we reached\n        // this point, it errored again. Commit it.\n        commitRoot(root, workInProgressRootRecoverableErrors, workInProgressTransitions);\n        break;\n      }\n\n    case RootSuspended:\n      {\n        markRootSuspended$1(root, lanes); // We have an acceptable loading state. We need to figure out if we\n        // should immediately commit it or wait a bit.\n\n        if (includesOnlyRetries(lanes) && // do not delay if we're inside an act() scope\n        !shouldForceFlushFallbacksInDEV()) {\n          // This render only included retries, no updates. Throttle committing\n          // retries so that we don't show too many loading states too quickly.\n          var msUntilTimeout = globalMostRecentFallbackTime + FALLBACK_THROTTLE_MS - now(); // Don't bother with a very short suspense time.\n\n          if (msUntilTimeout > 10) {\n            var nextLanes = getNextLanes(root, NoLanes);\n\n            if (nextLanes !== NoLanes) {\n              // There's additional work on this root.\n              break;\n            }\n\n            var suspendedLanes = root.suspendedLanes;\n\n            if (!isSubsetOfLanes(suspendedLanes, lanes)) {\n              // We should prefer to render the fallback of at the last\n              // suspended level. Ping the last suspended level to try\n              // rendering it again.\n              // FIXME: What if the suspended lanes are Idle? Should not restart.\n              var eventTime = requestEventTime();\n              markRootPinged(root, suspendedLanes);\n              break;\n            } // The render is suspended, it hasn't timed out, and there's no\n            // lower priority work to do. Instead of committing the fallback\n            // immediately, wait for more data to arrive.\n\n\n            root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root, workInProgressRootRecoverableErrors, workInProgressTransitions), msUntilTimeout);\n            break;\n          }\n        } // The work expired. Commit immediately.\n\n\n        commitRoot(root, workInProgressRootRecoverableErrors, workInProgressTransitions);\n        break;\n      }\n\n    case RootSuspendedWithDelay:\n      {\n        markRootSuspended$1(root, lanes);\n\n        if (includesOnlyTransitions(lanes)) {\n          // This is a transition, so we should exit without committing a\n          // placeholder and without scheduling a timeout. Delay indefinitely\n          // until we receive more data.\n          break;\n        }\n\n        if (!shouldForceFlushFallbacksInDEV()) {\n          // This is not a transition, but we did trigger an avoided state.\n          // Schedule a placeholder to display after a short delay, using the Just\n          // Noticeable Difference.\n          // TODO: Is the JND optimization worth the added complexity? If this is\n          // the only reason we track the event time, then probably not.\n          // Consider removing.\n          var mostRecentEventTime = getMostRecentEventTime(root, lanes);\n          var eventTimeMs = mostRecentEventTime;\n          var timeElapsedMs = now() - eventTimeMs;\n\n          var _msUntilTimeout = jnd(timeElapsedMs) - timeElapsedMs; // Don't bother with a very short suspense time.\n\n\n          if (_msUntilTimeout > 10) {\n            // Instead of committing the fallback immediately, wait for more data\n            // to arrive.\n            root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root, workInProgressRootRecoverableErrors, workInProgressTransitions), _msUntilTimeout);\n            break;\n          }\n        } // Commit the placeholder.\n\n\n        commitRoot(root, workInProgressRootRecoverableErrors, workInProgressTransitions);\n        break;\n      }\n\n    case RootCompleted:\n      {\n        // The work completed. Ready to commit.\n        commitRoot(root, workInProgressRootRecoverableErrors, workInProgressTransitions);\n        break;\n      }\n\n    default:\n      {\n        throw new Error('Unknown root exit status.');\n      }\n  }\n}\n\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n  // Search the rendered tree for external store reads, and check whether the\n  // stores were mutated in a concurrent event. Intentionally using an iterative\n  // loop instead of recursion so we can exit early.\n  var node = finishedWork;\n\n  while (true) {\n    if (node.flags & StoreConsistency) {\n      var updateQueue = node.updateQueue;\n\n      if (updateQueue !== null) {\n        var checks = updateQueue.stores;\n\n        if (checks !== null) {\n          for (var i = 0; i < checks.length; i++) {\n            var check = checks[i];\n            var getSnapshot = check.getSnapshot;\n            var renderedValue = check.value;\n\n            try {\n              if (!objectIs(getSnapshot(), renderedValue)) {\n                // Found an inconsistent store.\n                return false;\n              }\n            } catch (error) {\n              // If `getSnapshot` throws, return `false`. This will schedule\n              // a re-render, and the error will be rethrown during render.\n              return false;\n            }\n          }\n        }\n      }\n    }\n\n    var child = node.child;\n\n    if (node.subtreeFlags & StoreConsistency && child !== null) {\n      child.return = node;\n      node = child;\n      continue;\n    }\n\n    if (node === finishedWork) {\n      return true;\n    }\n\n    while (node.sibling === null) {\n      if (node.return === null || node.return === finishedWork) {\n        return true;\n      }\n\n      node = node.return;\n    }\n\n    node.sibling.return = node.return;\n    node = node.sibling;\n  } // Flow doesn't know this is unreachable, but eslint does\n  // eslint-disable-next-line no-unreachable\n\n\n  return true;\n}\n\nfunction markRootSuspended$1(root, suspendedLanes) {\n  // When suspending, we should always exclude lanes that were pinged or (more\n  // rarely, since we try to avoid it) updated during the render phase.\n  // TODO: Lol maybe there's a better way to factor this besides this\n  // obnoxiously named function :)\n  suspendedLanes = removeLanes(suspendedLanes, workInProgressRootPingedLanes);\n  suspendedLanes = removeLanes(suspendedLanes, workInProgressRootInterleavedUpdatedLanes);\n  markRootSuspended(root, suspendedLanes);\n} // This is the entry point for synchronous tasks that don't go\n// through Scheduler\n\n\nfunction performSyncWorkOnRoot(root) {\n  {\n    syncNestedUpdateFlag();\n  }\n\n  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n    throw new Error('Should not already be working.');\n  }\n\n  flushPassiveEffects();\n  var lanes = getNextLanes(root, NoLanes);\n\n  if (!includesSomeLane(lanes, SyncLane)) {\n    // There's no remaining sync work left.\n    ensureRootIsScheduled(root, now());\n    return null;\n  }\n\n  var exitStatus = renderRootSync(root, lanes);\n\n  if (root.tag !== LegacyRoot && exitStatus === RootErrored) {\n    // If something threw an error, try rendering one more time. We'll render\n    // synchronously to block concurrent data mutations, and we'll includes\n    // all pending updates are included. If it still fails after the second\n    // attempt, we'll give up and commit the resulting tree.\n    var errorRetryLanes = getLanesToRetrySynchronouslyOnError(root);\n\n    if (errorRetryLanes !== NoLanes) {\n      lanes = errorRetryLanes;\n      exitStatus = recoverFromConcurrentError(root, errorRetryLanes);\n    }\n  }\n\n  if (exitStatus === RootFatalErrored) {\n    var fatalError = workInProgressRootFatalError;\n    prepareFreshStack(root, NoLanes);\n    markRootSuspended$1(root, lanes);\n    ensureRootIsScheduled(root, now());\n    throw fatalError;\n  }\n\n  if (exitStatus === RootDidNotComplete) {\n    throw new Error('Root did not complete. This is a bug in React.');\n  } // We now have a consistent tree. Because this is a sync render, we\n  // will commit it even if something suspended.\n\n\n  var finishedWork = root.current.alternate;\n  root.finishedWork = finishedWork;\n  root.finishedLanes = lanes;\n  commitRoot(root, workInProgressRootRecoverableErrors, workInProgressTransitions); // Before exiting, make sure there's a callback scheduled for the next\n  // pending level.\n\n  ensureRootIsScheduled(root, now());\n  return null;\n}\n\nfunction flushRoot(root, lanes) {\n  if (lanes !== NoLanes) {\n    markRootEntangled(root, mergeLanes(lanes, SyncLane));\n    ensureRootIsScheduled(root, now());\n\n    if ((executionContext & (RenderContext | CommitContext)) === NoContext) {\n      resetRenderTimer();\n      flushSyncCallbacks();\n    }\n  }\n}\nfunction batchedUpdates$1(fn, a) {\n  var prevExecutionContext = executionContext;\n  executionContext |= BatchedContext;\n\n  try {\n    return fn(a);\n  } finally {\n    executionContext = prevExecutionContext; // If there were legacy sync updates, flush them at the end of the outer\n    // most batchedUpdates-like method.\n\n    if (executionContext === NoContext && // Treat `act` as if it's inside `batchedUpdates`, even in legacy mode.\n    !( ReactCurrentActQueue$1.isBatchingLegacy)) {\n      resetRenderTimer();\n      flushSyncCallbacksOnlyInLegacyMode();\n    }\n  }\n}\nfunction discreteUpdates(fn, a, b, c, d) {\n  var previousPriority = getCurrentUpdatePriority();\n  var prevTransition = ReactCurrentBatchConfig$3.transition;\n\n  try {\n    ReactCurrentBatchConfig$3.transition = null;\n    setCurrentUpdatePriority(DiscreteEventPriority);\n    return fn(a, b, c, d);\n  } finally {\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig$3.transition = prevTransition;\n\n    if (executionContext === NoContext) {\n      resetRenderTimer();\n    }\n  }\n} // Overload the definition to the two valid signatures.\n// Warning, this opts-out of checking the function body.\n\n// eslint-disable-next-line no-redeclare\nfunction flushSync(fn) {\n  // In legacy mode, we flush pending passive effects at the beginning of the\n  // next event, not at the end of the previous one.\n  if (rootWithPendingPassiveEffects !== null && rootWithPendingPassiveEffects.tag === LegacyRoot && (executionContext & (RenderContext | CommitContext)) === NoContext) {\n    flushPassiveEffects();\n  }\n\n  var prevExecutionContext = executionContext;\n  executionContext |= BatchedContext;\n  var prevTransition = ReactCurrentBatchConfig$3.transition;\n  var previousPriority = getCurrentUpdatePriority();\n\n  try {\n    ReactCurrentBatchConfig$3.transition = null;\n    setCurrentUpdatePriority(DiscreteEventPriority);\n\n    if (fn) {\n      return fn();\n    } else {\n      return undefined;\n    }\n  } finally {\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig$3.transition = prevTransition;\n    executionContext = prevExecutionContext; // Flush the immediate callbacks that were scheduled during this batch.\n    // Note that this will happen even if batchedUpdates is higher up\n    // the stack.\n\n    if ((executionContext & (RenderContext | CommitContext)) === NoContext) {\n      flushSyncCallbacks();\n    }\n  }\n}\nfunction isAlreadyRendering() {\n  // Used by the renderer to print a warning if certain APIs are called from\n  // the wrong context.\n  return  (executionContext & (RenderContext | CommitContext)) !== NoContext;\n}\nfunction pushRenderLanes(fiber, lanes) {\n  push(subtreeRenderLanesCursor, subtreeRenderLanes, fiber);\n  subtreeRenderLanes = mergeLanes(subtreeRenderLanes, lanes);\n  workInProgressRootIncludedLanes = mergeLanes(workInProgressRootIncludedLanes, lanes);\n}\nfunction popRenderLanes(fiber) {\n  subtreeRenderLanes = subtreeRenderLanesCursor.current;\n  pop(subtreeRenderLanesCursor, fiber);\n}\n\nfunction prepareFreshStack(root, lanes) {\n  root.finishedWork = null;\n  root.finishedLanes = NoLanes;\n  var timeoutHandle = root.timeoutHandle;\n\n  if (timeoutHandle !== noTimeout) {\n    // The root previous suspended and scheduled a timeout to commit a fallback\n    // state. Now that we have additional work, cancel the timeout.\n    root.timeoutHandle = noTimeout; // $FlowFixMe Complains noTimeout is not a TimeoutID, despite the check above\n\n    cancelTimeout(timeoutHandle);\n  }\n\n  if (workInProgress !== null) {\n    var interruptedWork = workInProgress.return;\n\n    while (interruptedWork !== null) {\n      var current = interruptedWork.alternate;\n      unwindInterruptedWork(current, interruptedWork);\n      interruptedWork = interruptedWork.return;\n    }\n  }\n\n  workInProgressRoot = root;\n  var rootWorkInProgress = createWorkInProgress(root.current, null);\n  workInProgress = rootWorkInProgress;\n  workInProgressRootRenderLanes = subtreeRenderLanes = workInProgressRootIncludedLanes = lanes;\n  workInProgressRootExitStatus = RootInProgress;\n  workInProgressRootFatalError = null;\n  workInProgressRootSkippedLanes = NoLanes;\n  workInProgressRootInterleavedUpdatedLanes = NoLanes;\n  workInProgressRootPingedLanes = NoLanes;\n  workInProgressRootConcurrentErrors = null;\n  workInProgressRootRecoverableErrors = null;\n  finishQueueingConcurrentUpdates();\n\n  {\n    ReactStrictModeWarnings.discardPendingWarnings();\n  }\n\n  return rootWorkInProgress;\n}\n\nfunction handleError(root, thrownValue) {\n  do {\n    var erroredWork = workInProgress;\n\n    try {\n      // Reset module-level state that was set during the render phase.\n      resetContextDependencies();\n      resetHooksAfterThrow();\n      resetCurrentFiber(); // TODO: I found and added this missing line while investigating a\n      // separate issue. Write a regression test using string refs.\n\n      ReactCurrentOwner$2.current = null;\n\n      if (erroredWork === null || erroredWork.return === null) {\n        // Expected to be working on a non-root fiber. This is a fatal error\n        // because there's no ancestor that can handle it; the root is\n        // supposed to capture all errors that weren't caught by an error\n        // boundary.\n        workInProgressRootExitStatus = RootFatalErrored;\n        workInProgressRootFatalError = thrownValue; // Set `workInProgress` to null. This represents advancing to the next\n        // sibling, or the parent if there are no siblings. But since the root\n        // has no siblings nor a parent, we set it to null. Usually this is\n        // handled by `completeUnitOfWork` or `unwindWork`, but since we're\n        // intentionally not calling those, we need set it here.\n        // TODO: Consider calling `unwindWork` to pop the contexts.\n\n        workInProgress = null;\n        return;\n      }\n\n      if (enableProfilerTimer && erroredWork.mode & ProfileMode) {\n        // Record the time spent rendering before an error was thrown. This\n        // avoids inaccurate Profiler durations in the case of a\n        // suspended render.\n        stopProfilerTimerIfRunningAndRecordDelta(erroredWork, true);\n      }\n\n      if (enableSchedulingProfiler) {\n        markComponentRenderStopped();\n\n        if (thrownValue !== null && typeof thrownValue === 'object' && typeof thrownValue.then === 'function') {\n          var wakeable = thrownValue;\n          markComponentSuspended(erroredWork, wakeable, workInProgressRootRenderLanes);\n        } else {\n          markComponentErrored(erroredWork, thrownValue, workInProgressRootRenderLanes);\n        }\n      }\n\n      throwException(root, erroredWork.return, erroredWork, thrownValue, workInProgressRootRenderLanes);\n      completeUnitOfWork(erroredWork);\n    } catch (yetAnotherThrownValue) {\n      // Something in the return path also threw.\n      thrownValue = yetAnotherThrownValue;\n\n      if (workInProgress === erroredWork && erroredWork !== null) {\n        // If this boundary has already errored, then we had trouble processing\n        // the error. Bubble it to the next boundary.\n        erroredWork = erroredWork.return;\n        workInProgress = erroredWork;\n      } else {\n        erroredWork = workInProgress;\n      }\n\n      continue;\n    } // Return to the normal work loop.\n\n\n    return;\n  } while (true);\n}\n\nfunction pushDispatcher() {\n  var prevDispatcher = ReactCurrentDispatcher$2.current;\n  ReactCurrentDispatcher$2.current = ContextOnlyDispatcher;\n\n  if (prevDispatcher === null) {\n    // The React isomorphic package does not include a default dispatcher.\n    // Instead the first renderer will lazily attach one, in order to give\n    // nicer error messages.\n    return ContextOnlyDispatcher;\n  } else {\n    return prevDispatcher;\n  }\n}\n\nfunction popDispatcher(prevDispatcher) {\n  ReactCurrentDispatcher$2.current = prevDispatcher;\n}\n\nfunction markCommitTimeOfFallback() {\n  globalMostRecentFallbackTime = now();\n}\nfunction markSkippedUpdateLanes(lane) {\n  workInProgressRootSkippedLanes = mergeLanes(lane, workInProgressRootSkippedLanes);\n}\nfunction renderDidSuspend() {\n  if (workInProgressRootExitStatus === RootInProgress) {\n    workInProgressRootExitStatus = RootSuspended;\n  }\n}\nfunction renderDidSuspendDelayIfPossible() {\n  if (workInProgressRootExitStatus === RootInProgress || workInProgressRootExitStatus === RootSuspended || workInProgressRootExitStatus === RootErrored) {\n    workInProgressRootExitStatus = RootSuspendedWithDelay;\n  } // Check if there are updates that we skipped tree that might have unblocked\n  // this render.\n\n\n  if (workInProgressRoot !== null && (includesNonIdleWork(workInProgressRootSkippedLanes) || includesNonIdleWork(workInProgressRootInterleavedUpdatedLanes))) {\n    // Mark the current render as suspended so that we switch to working on\n    // the updates that were skipped. Usually we only suspend at the end of\n    // the render phase.\n    // TODO: We should probably always mark the root as suspended immediately\n    // (inside this function), since by suspending at the end of the render\n    // phase introduces a potential mistake where we suspend lanes that were\n    // pinged or updated while we were rendering.\n    markRootSuspended$1(workInProgressRoot, workInProgressRootRenderLanes);\n  }\n}\nfunction renderDidError(error) {\n  if (workInProgressRootExitStatus !== RootSuspendedWithDelay) {\n    workInProgressRootExitStatus = RootErrored;\n  }\n\n  if (workInProgressRootConcurrentErrors === null) {\n    workInProgressRootConcurrentErrors = [error];\n  } else {\n    workInProgressRootConcurrentErrors.push(error);\n  }\n} // Called during render to determine if anything has suspended.\n// Returns false if we're not sure.\n\nfunction renderHasNotSuspendedYet() {\n  // If something errored or completed, we can't really be sure,\n  // so those are false.\n  return workInProgressRootExitStatus === RootInProgress;\n}\n\nfunction renderRootSync(root, lanes) {\n  var prevExecutionContext = executionContext;\n  executionContext |= RenderContext;\n  var prevDispatcher = pushDispatcher(); // If the root or lanes have changed, throw out the existing stack\n  // and prepare a fresh one. Otherwise we'll continue where we left off.\n\n  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes) {\n    {\n      if (isDevToolsPresent) {\n        var memoizedUpdaters = root.memoizedUpdaters;\n\n        if (memoizedUpdaters.size > 0) {\n          restorePendingUpdaters(root, workInProgressRootRenderLanes);\n          memoizedUpdaters.clear();\n        } // At this point, move Fibers that scheduled the upcoming work from the Map to the Set.\n        // If we bailout on this work, we'll move them back (like above).\n        // It's important to move them now in case the work spawns more work at the same priority with different updaters.\n        // That way we can keep the current update and future updates separate.\n\n\n        movePendingFibersToMemoized(root, lanes);\n      }\n    }\n\n    workInProgressTransitions = getTransitionsForLanes();\n    prepareFreshStack(root, lanes);\n  }\n\n  {\n    markRenderStarted(lanes);\n  }\n\n  do {\n    try {\n      workLoopSync();\n      break;\n    } catch (thrownValue) {\n      handleError(root, thrownValue);\n    }\n  } while (true);\n\n  resetContextDependencies();\n  executionContext = prevExecutionContext;\n  popDispatcher(prevDispatcher);\n\n  if (workInProgress !== null) {\n    // This is a sync render, so we should have finished the whole tree.\n    throw new Error('Cannot commit an incomplete root. This error is likely caused by a ' + 'bug in React. Please file an issue.');\n  }\n\n  {\n    markRenderStopped();\n  } // Set this to null to indicate there's no in-progress render.\n\n\n  workInProgressRoot = null;\n  workInProgressRootRenderLanes = NoLanes;\n  return workInProgressRootExitStatus;\n} // The work loop is an extremely hot path. Tell Closure not to inline it.\n\n/** @noinline */\n\n\nfunction workLoopSync() {\n  // Already timed out, so perform work without checking if we need to yield.\n  while (workInProgress !== null) {\n    performUnitOfWork(workInProgress);\n  }\n}\n\nfunction renderRootConcurrent(root, lanes) {\n  var prevExecutionContext = executionContext;\n  executionContext |= RenderContext;\n  var prevDispatcher = pushDispatcher(); // If the root or lanes have changed, throw out the existing stack\n  // and prepare a fresh one. Otherwise we'll continue where we left off.\n\n  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes) {\n    {\n      if (isDevToolsPresent) {\n        var memoizedUpdaters = root.memoizedUpdaters;\n\n        if (memoizedUpdaters.size > 0) {\n          restorePendingUpdaters(root, workInProgressRootRenderLanes);\n          memoizedUpdaters.clear();\n        } // At this point, move Fibers that scheduled the upcoming work from the Map to the Set.\n        // If we bailout on this work, we'll move them back (like above).\n        // It's important to move them now in case the work spawns more work at the same priority with different updaters.\n        // That way we can keep the current update and future updates separate.\n\n\n        movePendingFibersToMemoized(root, lanes);\n      }\n    }\n\n    workInProgressTransitions = getTransitionsForLanes();\n    resetRenderTimer();\n    prepareFreshStack(root, lanes);\n  }\n\n  {\n    markRenderStarted(lanes);\n  }\n\n  do {\n    try {\n      workLoopConcurrent();\n      break;\n    } catch (thrownValue) {\n      handleError(root, thrownValue);\n    }\n  } while (true);\n\n  resetContextDependencies();\n  popDispatcher(prevDispatcher);\n  executionContext = prevExecutionContext;\n\n\n  if (workInProgress !== null) {\n    // Still work remaining.\n    {\n      markRenderYielded();\n    }\n\n    return RootInProgress;\n  } else {\n    // Completed the tree.\n    {\n      markRenderStopped();\n    } // Set this to null to indicate there's no in-progress render.\n\n\n    workInProgressRoot = null;\n    workInProgressRootRenderLanes = NoLanes; // Return the final exit status.\n\n    return workInProgressRootExitStatus;\n  }\n}\n/** @noinline */\n\n\nfunction workLoopConcurrent() {\n  // Perform work until Scheduler asks us to yield\n  while (workInProgress !== null && !shouldYield()) {\n    performUnitOfWork(workInProgress);\n  }\n}\n\nfunction performUnitOfWork(unitOfWork) {\n  // The current, flushed, state of this fiber is the alternate. Ideally\n  // nothing should rely on this, but relying on it here means that we don't\n  // need an additional field on the work in progress.\n  var current = unitOfWork.alternate;\n  setCurrentFiber(unitOfWork);\n  var next;\n\n  if ( (unitOfWork.mode & ProfileMode) !== NoMode) {\n    startProfilerTimer(unitOfWork);\n    next = beginWork$1(current, unitOfWork, subtreeRenderLanes);\n    stopProfilerTimerIfRunningAndRecordDelta(unitOfWork, true);\n  } else {\n    next = beginWork$1(current, unitOfWork, subtreeRenderLanes);\n  }\n\n  resetCurrentFiber();\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n\n  if (next === null) {\n    // If this doesn't spawn new work, complete the current work.\n    completeUnitOfWork(unitOfWork);\n  } else {\n    workInProgress = next;\n  }\n\n  ReactCurrentOwner$2.current = null;\n}\n\nfunction completeUnitOfWork(unitOfWork) {\n  // Attempt to complete the current unit of work, then move to the next\n  // sibling. If there are no more siblings, return to the parent fiber.\n  var completedWork = unitOfWork;\n\n  do {\n    // The current, flushed, state of this fiber is the alternate. Ideally\n    // nothing should rely on this, but relying on it here means that we don't\n    // need an additional field on the work in progress.\n    var current = completedWork.alternate;\n    var returnFiber = completedWork.return; // Check if the work completed or if something threw.\n\n    if ((completedWork.flags & Incomplete) === NoFlags) {\n      setCurrentFiber(completedWork);\n      var next = void 0;\n\n      if ( (completedWork.mode & ProfileMode) === NoMode) {\n        next = completeWork(current, completedWork, subtreeRenderLanes);\n      } else {\n        startProfilerTimer(completedWork);\n        next = completeWork(current, completedWork, subtreeRenderLanes); // Update render duration assuming we didn't error.\n\n        stopProfilerTimerIfRunningAndRecordDelta(completedWork, false);\n      }\n\n      resetCurrentFiber();\n\n      if (next !== null) {\n        // Completing this fiber spawned new work. Work on that next.\n        workInProgress = next;\n        return;\n      }\n    } else {\n      // This fiber did not complete because something threw. Pop values off\n      // the stack without entering the complete phase. If this is a boundary,\n      // capture values if possible.\n      var _next = unwindWork(current, completedWork); // Because this fiber did not complete, don't reset its lanes.\n\n\n      if (_next !== null) {\n        // If completing this work spawned new work, do that next. We'll come\n        // back here again.\n        // Since we're restarting, remove anything that is not a host effect\n        // from the effect tag.\n        _next.flags &= HostEffectMask;\n        workInProgress = _next;\n        return;\n      }\n\n      if ( (completedWork.mode & ProfileMode) !== NoMode) {\n        // Record the render duration for the fiber that errored.\n        stopProfilerTimerIfRunningAndRecordDelta(completedWork, false); // Include the time spent working on failed children before continuing.\n\n        var actualDuration = completedWork.actualDuration;\n        var child = completedWork.child;\n\n        while (child !== null) {\n          actualDuration += child.actualDuration;\n          child = child.sibling;\n        }\n\n        completedWork.actualDuration = actualDuration;\n      }\n\n      if (returnFiber !== null) {\n        // Mark the parent fiber as incomplete and clear its subtree flags.\n        returnFiber.flags |= Incomplete;\n        returnFiber.subtreeFlags = NoFlags;\n        returnFiber.deletions = null;\n      } else {\n        // We've unwound all the way to the root.\n        workInProgressRootExitStatus = RootDidNotComplete;\n        workInProgress = null;\n        return;\n      }\n    }\n\n    var siblingFiber = completedWork.sibling;\n\n    if (siblingFiber !== null) {\n      // If there is more work to do in this returnFiber, do that next.\n      workInProgress = siblingFiber;\n      return;\n    } // Otherwise, return to the parent\n\n\n    completedWork = returnFiber; // Update the next thing we're working on in case something throws.\n\n    workInProgress = completedWork;\n  } while (completedWork !== null); // We've reached the root.\n\n\n  if (workInProgressRootExitStatus === RootInProgress) {\n    workInProgressRootExitStatus = RootCompleted;\n  }\n}\n\nfunction commitRoot(root, recoverableErrors, transitions) {\n  // TODO: This no longer makes any sense. We already wrap the mutation and\n  // layout phases. Should be able to remove.\n  var previousUpdateLanePriority = getCurrentUpdatePriority();\n  var prevTransition = ReactCurrentBatchConfig$3.transition;\n\n  try {\n    ReactCurrentBatchConfig$3.transition = null;\n    setCurrentUpdatePriority(DiscreteEventPriority);\n    commitRootImpl(root, recoverableErrors, transitions, previousUpdateLanePriority);\n  } finally {\n    ReactCurrentBatchConfig$3.transition = prevTransition;\n    setCurrentUpdatePriority(previousUpdateLanePriority);\n  }\n\n  return null;\n}\n\nfunction commitRootImpl(root, recoverableErrors, transitions, renderPriorityLevel) {\n  do {\n    // `flushPassiveEffects` will call `flushSyncUpdateQueue` at the end, which\n    // means `flushPassiveEffects` will sometimes result in additional\n    // passive effects. So we need to keep flushing in a loop until there are\n    // no more pending effects.\n    // TODO: Might be better if `flushPassiveEffects` did not automatically\n    // flush synchronous work at the end, to avoid factoring hazards like this.\n    flushPassiveEffects();\n  } while (rootWithPendingPassiveEffects !== null);\n\n  flushRenderPhaseStrictModeWarningsInDEV();\n\n  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n    throw new Error('Should not already be working.');\n  }\n\n  var finishedWork = root.finishedWork;\n  var lanes = root.finishedLanes;\n\n  {\n    markCommitStarted(lanes);\n  }\n\n  if (finishedWork === null) {\n\n    {\n      markCommitStopped();\n    }\n\n    return null;\n  } else {\n    {\n      if (lanes === NoLanes) {\n        error('root.finishedLanes should not be empty during a commit. This is a ' + 'bug in React.');\n      }\n    }\n  }\n\n  root.finishedWork = null;\n  root.finishedLanes = NoLanes;\n\n  if (finishedWork === root.current) {\n    throw new Error('Cannot commit the same tree as before. This error is likely caused by ' + 'a bug in React. Please file an issue.');\n  } // commitRoot never returns a continuation; it always finishes synchronously.\n  // So we can clear these now to allow a new callback to be scheduled.\n\n\n  root.callbackNode = null;\n  root.callbackPriority = NoLane; // Update the first and last pending times on this root. The new first\n  // pending time is whatever is left on the root fiber.\n\n  var remainingLanes = mergeLanes(finishedWork.lanes, finishedWork.childLanes);\n  markRootFinished(root, remainingLanes);\n\n  if (root === workInProgressRoot) {\n    // We can reset these now that they are finished.\n    workInProgressRoot = null;\n    workInProgress = null;\n    workInProgressRootRenderLanes = NoLanes;\n  } // If there are pending passive effects, schedule a callback to process them.\n  // Do this as early as possible, so it is queued before anything else that\n  // might get scheduled in the commit phase. (See #16714.)\n  // TODO: Delete all other places that schedule the passive effect callback\n  // They're redundant.\n\n\n  if ((finishedWork.subtreeFlags & PassiveMask) !== NoFlags || (finishedWork.flags & PassiveMask) !== NoFlags) {\n    if (!rootDoesHavePassiveEffects) {\n      rootDoesHavePassiveEffects = true;\n      // to store it in pendingPassiveTransitions until they get processed\n      // We need to pass this through as an argument to commitRoot\n      // because workInProgressTransitions might have changed between\n      // the previous render and commit if we throttle the commit\n      // with setTimeout\n\n      pendingPassiveTransitions = transitions;\n      scheduleCallback$1(NormalPriority, function () {\n        flushPassiveEffects(); // This render triggered passive effects: release the root cache pool\n        // *after* passive effects fire to avoid freeing a cache pool that may\n        // be referenced by a node in the tree (HostRoot, Cache boundary etc)\n\n        return null;\n      });\n    }\n  } // Check if there are any effects in the whole tree.\n  // TODO: This is left over from the effect list implementation, where we had\n  // to check for the existence of `firstEffect` to satisfy Flow. I think the\n  // only other reason this optimization exists is because it affects profiling.\n  // Reconsider whether this is necessary.\n\n\n  var subtreeHasEffects = (finishedWork.subtreeFlags & (BeforeMutationMask | MutationMask | LayoutMask | PassiveMask)) !== NoFlags;\n  var rootHasEffect = (finishedWork.flags & (BeforeMutationMask | MutationMask | LayoutMask | PassiveMask)) !== NoFlags;\n\n  if (subtreeHasEffects || rootHasEffect) {\n    var prevTransition = ReactCurrentBatchConfig$3.transition;\n    ReactCurrentBatchConfig$3.transition = null;\n    var previousPriority = getCurrentUpdatePriority();\n    setCurrentUpdatePriority(DiscreteEventPriority);\n    var prevExecutionContext = executionContext;\n    executionContext |= CommitContext; // Reset this to null before calling lifecycles\n\n    ReactCurrentOwner$2.current = null; // The commit phase is broken into several sub-phases. We do a separate pass\n    // of the effect list for each phase: all mutation effects come before all\n    // layout effects, and so on.\n    // The first phase a \"before mutation\" phase. We use this phase to read the\n    // state of the host tree right before we mutate it. This is where\n    // getSnapshotBeforeUpdate is called.\n\n    var shouldFireAfterActiveInstanceBlur = commitBeforeMutationEffects(root, finishedWork);\n\n    {\n      // Mark the current commit time to be shared by all Profilers in this\n      // batch. This enables them to be grouped later.\n      recordCommitTime();\n    }\n\n\n    commitMutationEffects(root, finishedWork, lanes);\n\n    resetAfterCommit(root.containerInfo); // The work-in-progress tree is now the current tree. This must come after\n    // the mutation phase, so that the previous tree is still current during\n    // componentWillUnmount, but before the layout phase, so that the finished\n    // work is current during componentDidMount/Update.\n\n    root.current = finishedWork; // The next phase is the layout phase, where we call effects that read\n\n    {\n      markLayoutEffectsStarted(lanes);\n    }\n\n    commitLayoutEffects(finishedWork, root, lanes);\n\n    {\n      markLayoutEffectsStopped();\n    }\n    // opportunity to paint.\n\n\n    requestPaint();\n    executionContext = prevExecutionContext; // Reset the priority to the previous non-sync value.\n\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig$3.transition = prevTransition;\n  } else {\n    // No effects.\n    root.current = finishedWork; // Measure these anyway so the flamegraph explicitly shows that there were\n    // no effects.\n    // TODO: Maybe there's a better way to report this.\n\n    {\n      recordCommitTime();\n    }\n  }\n\n  var rootDidHavePassiveEffects = rootDoesHavePassiveEffects;\n\n  if (rootDoesHavePassiveEffects) {\n    // This commit has passive effects. Stash a reference to them. But don't\n    // schedule a callback until after flushing layout work.\n    rootDoesHavePassiveEffects = false;\n    rootWithPendingPassiveEffects = root;\n    pendingPassiveEffectsLanes = lanes;\n  } else {\n\n    {\n      nestedPassiveUpdateCount = 0;\n      rootWithPassiveNestedUpdates = null;\n    }\n  } // Read this again, since an effect might have updated it\n\n\n  remainingLanes = root.pendingLanes; // Check if there's remaining work on this root\n  // TODO: This is part of the `componentDidCatch` implementation. Its purpose\n  // is to detect whether something might have called setState inside\n  // `componentDidCatch`. The mechanism is known to be flawed because `setState`\n  // inside `componentDidCatch` is itself flawed — that's why we recommend\n  // `getDerivedStateFromError` instead. However, it could be improved by\n  // checking if remainingLanes includes Sync work, instead of whether there's\n  // any work remaining at all (which would also include stuff like Suspense\n  // retries or transitions). It's been like this for a while, though, so fixing\n  // it probably isn't that urgent.\n\n  if (remainingLanes === NoLanes) {\n    // If there's no remaining work, we can clear the set of already failed\n    // error boundaries.\n    legacyErrorBoundariesThatAlreadyFailed = null;\n  }\n\n  {\n    if (!rootDidHavePassiveEffects) {\n      commitDoubleInvokeEffectsInDEV(root.current, false);\n    }\n  }\n\n  onCommitRoot(finishedWork.stateNode, renderPriorityLevel);\n\n  {\n    if (isDevToolsPresent) {\n      root.memoizedUpdaters.clear();\n    }\n  }\n\n  {\n    onCommitRoot$1();\n  } // Always call this before exiting `commitRoot`, to ensure that any\n  // additional work on this root is scheduled.\n\n\n  ensureRootIsScheduled(root, now());\n\n  if (recoverableErrors !== null) {\n    // There were errors during this render, but recovered from them without\n    // needing to surface it to the UI. We log them here.\n    var onRecoverableError = root.onRecoverableError;\n\n    for (var i = 0; i < recoverableErrors.length; i++) {\n      var recoverableError = recoverableErrors[i];\n      var componentStack = recoverableError.stack;\n      var digest = recoverableError.digest;\n      onRecoverableError(recoverableError.value, {\n        componentStack: componentStack,\n        digest: digest\n      });\n    }\n  }\n\n  if (hasUncaughtError) {\n    hasUncaughtError = false;\n    var error$1 = firstUncaughtError;\n    firstUncaughtError = null;\n    throw error$1;\n  } // If the passive effects are the result of a discrete render, flush them\n  // synchronously at the end of the current task so that the result is\n  // immediately observable. Otherwise, we assume that they are not\n  // order-dependent and do not need to be observed by external systems, so we\n  // can wait until after paint.\n  // TODO: We can optimize this by not scheduling the callback earlier. Since we\n  // currently schedule the callback in multiple places, will wait until those\n  // are consolidated.\n\n\n  if (includesSomeLane(pendingPassiveEffectsLanes, SyncLane) && root.tag !== LegacyRoot) {\n    flushPassiveEffects();\n  } // Read this again, since a passive effect might have updated it\n\n\n  remainingLanes = root.pendingLanes;\n\n  if (includesSomeLane(remainingLanes, SyncLane)) {\n    {\n      markNestedUpdateScheduled();\n    } // Count the number of times the root synchronously re-renders without\n    // finishing. If there are too many, it indicates an infinite update loop.\n\n\n    if (root === rootWithNestedUpdates) {\n      nestedUpdateCount++;\n    } else {\n      nestedUpdateCount = 0;\n      rootWithNestedUpdates = root;\n    }\n  } else {\n    nestedUpdateCount = 0;\n  } // If layout work was scheduled, flush it now.\n\n\n  flushSyncCallbacks();\n\n  {\n    markCommitStopped();\n  }\n\n  return null;\n}\n\nfunction flushPassiveEffects() {\n  // Returns whether passive effects were flushed.\n  // TODO: Combine this check with the one in flushPassiveEFfectsImpl. We should\n  // probably just combine the two functions. I believe they were only separate\n  // in the first place because we used to wrap it with\n  // `Scheduler.runWithPriority`, which accepts a function. But now we track the\n  // priority within React itself, so we can mutate the variable directly.\n  if (rootWithPendingPassiveEffects !== null) {\n    var renderPriority = lanesToEventPriority(pendingPassiveEffectsLanes);\n    var priority = lowerEventPriority(DefaultEventPriority, renderPriority);\n    var prevTransition = ReactCurrentBatchConfig$3.transition;\n    var previousPriority = getCurrentUpdatePriority();\n\n    try {\n      ReactCurrentBatchConfig$3.transition = null;\n      setCurrentUpdatePriority(priority);\n      return flushPassiveEffectsImpl();\n    } finally {\n      setCurrentUpdatePriority(previousPriority);\n      ReactCurrentBatchConfig$3.transition = prevTransition; // Once passive effects have run for the tree - giving components a\n    }\n  }\n\n  return false;\n}\nfunction enqueuePendingPassiveProfilerEffect(fiber) {\n  {\n    pendingPassiveProfilerEffects.push(fiber);\n\n    if (!rootDoesHavePassiveEffects) {\n      rootDoesHavePassiveEffects = true;\n      scheduleCallback$1(NormalPriority, function () {\n        flushPassiveEffects();\n        return null;\n      });\n    }\n  }\n}\n\nfunction flushPassiveEffectsImpl() {\n  if (rootWithPendingPassiveEffects === null) {\n    return false;\n  } // Cache and clear the transitions flag\n\n\n  var transitions = pendingPassiveTransitions;\n  pendingPassiveTransitions = null;\n  var root = rootWithPendingPassiveEffects;\n  var lanes = pendingPassiveEffectsLanes;\n  rootWithPendingPassiveEffects = null; // TODO: This is sometimes out of sync with rootWithPendingPassiveEffects.\n  // Figure out why and fix it. It's not causing any known issues (probably\n  // because it's only used for profiling), but it's a refactor hazard.\n\n  pendingPassiveEffectsLanes = NoLanes;\n\n  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n    throw new Error('Cannot flush passive effects while already rendering.');\n  }\n\n  {\n    isFlushingPassiveEffects = true;\n    didScheduleUpdateDuringPassiveEffects = false;\n  }\n\n  {\n    markPassiveEffectsStarted(lanes);\n  }\n\n  var prevExecutionContext = executionContext;\n  executionContext |= CommitContext;\n  commitPassiveUnmountEffects(root.current);\n  commitPassiveMountEffects(root, root.current, lanes, transitions); // TODO: Move to commitPassiveMountEffects\n\n  {\n    var profilerEffects = pendingPassiveProfilerEffects;\n    pendingPassiveProfilerEffects = [];\n\n    for (var i = 0; i < profilerEffects.length; i++) {\n      var _fiber = profilerEffects[i];\n      commitPassiveEffectDurations(root, _fiber);\n    }\n  }\n\n  {\n    markPassiveEffectsStopped();\n  }\n\n  {\n    commitDoubleInvokeEffectsInDEV(root.current, true);\n  }\n\n  executionContext = prevExecutionContext;\n  flushSyncCallbacks();\n\n  {\n    // If additional passive effects were scheduled, increment a counter. If this\n    // exceeds the limit, we'll fire a warning.\n    if (didScheduleUpdateDuringPassiveEffects) {\n      if (root === rootWithPassiveNestedUpdates) {\n        nestedPassiveUpdateCount++;\n      } else {\n        nestedPassiveUpdateCount = 0;\n        rootWithPassiveNestedUpdates = root;\n      }\n    } else {\n      nestedPassiveUpdateCount = 0;\n    }\n\n    isFlushingPassiveEffects = false;\n    didScheduleUpdateDuringPassiveEffects = false;\n  } // TODO: Move to commitPassiveMountEffects\n\n\n  onPostCommitRoot(root);\n\n  {\n    var stateNode = root.current.stateNode;\n    stateNode.effectDuration = 0;\n    stateNode.passiveEffectDuration = 0;\n  }\n\n  return true;\n}\n\nfunction isAlreadyFailedLegacyErrorBoundary(instance) {\n  return legacyErrorBoundariesThatAlreadyFailed !== null && legacyErrorBoundariesThatAlreadyFailed.has(instance);\n}\nfunction markLegacyErrorBoundaryAsFailed(instance) {\n  if (legacyErrorBoundariesThatAlreadyFailed === null) {\n    legacyErrorBoundariesThatAlreadyFailed = new Set([instance]);\n  } else {\n    legacyErrorBoundariesThatAlreadyFailed.add(instance);\n  }\n}\n\nfunction prepareToThrowUncaughtError(error) {\n  if (!hasUncaughtError) {\n    hasUncaughtError = true;\n    firstUncaughtError = error;\n  }\n}\n\nvar onUncaughtError = prepareToThrowUncaughtError;\n\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n  var errorInfo = createCapturedValueAtFiber(error, sourceFiber);\n  var update = createRootErrorUpdate(rootFiber, errorInfo, SyncLane);\n  var root = enqueueUpdate(rootFiber, update, SyncLane);\n  var eventTime = requestEventTime();\n\n  if (root !== null) {\n    markRootUpdated(root, SyncLane, eventTime);\n    ensureRootIsScheduled(root, eventTime);\n  }\n}\n\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error$1) {\n  {\n    reportUncaughtErrorInDEV(error$1);\n    setIsRunningInsertionEffect(false);\n  }\n\n  if (sourceFiber.tag === HostRoot) {\n    // Error was thrown at the root. There is no parent, so the root\n    // itself should capture it.\n    captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error$1);\n    return;\n  }\n\n  var fiber = null;\n\n  {\n    fiber = nearestMountedAncestor;\n  }\n\n  while (fiber !== null) {\n    if (fiber.tag === HostRoot) {\n      captureCommitPhaseErrorOnRoot(fiber, sourceFiber, error$1);\n      return;\n    } else if (fiber.tag === ClassComponent) {\n      var ctor = fiber.type;\n      var instance = fiber.stateNode;\n\n      if (typeof ctor.getDerivedStateFromError === 'function' || typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance)) {\n        var errorInfo = createCapturedValueAtFiber(error$1, sourceFiber);\n        var update = createClassErrorUpdate(fiber, errorInfo, SyncLane);\n        var root = enqueueUpdate(fiber, update, SyncLane);\n        var eventTime = requestEventTime();\n\n        if (root !== null) {\n          markRootUpdated(root, SyncLane, eventTime);\n          ensureRootIsScheduled(root, eventTime);\n        }\n\n        return;\n      }\n    }\n\n    fiber = fiber.return;\n  }\n\n  {\n    // TODO: Until we re-land skipUnmountedBoundaries (see #20147), this warning\n    // will fire for errors that are thrown by destroy functions inside deleted\n    // trees. What it should instead do is propagate the error to the parent of\n    // the deleted tree. In the meantime, do not add this warning to the\n    // allowlist; this is only for our internal use.\n    error('Internal React error: Attempted to capture a commit phase error ' + 'inside a detached tree. This indicates a bug in React. Likely ' + 'causes include deleting the same fiber more than once, committing an ' + 'already-finished tree, or an inconsistent return pointer.\\n\\n' + 'Error message:\\n\\n%s', error$1);\n  }\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n  var pingCache = root.pingCache;\n\n  if (pingCache !== null) {\n    // The wakeable resolved, so we no longer need to memoize, because it will\n    // never be thrown again.\n    pingCache.delete(wakeable);\n  }\n\n  var eventTime = requestEventTime();\n  markRootPinged(root, pingedLanes);\n  warnIfSuspenseResolutionNotWrappedWithActDEV(root);\n\n  if (workInProgressRoot === root && isSubsetOfLanes(workInProgressRootRenderLanes, pingedLanes)) {\n    // Received a ping at the same priority level at which we're currently\n    // rendering. We might want to restart this render. This should mirror\n    // the logic of whether or not a root suspends once it completes.\n    // TODO: If we're rendering sync either due to Sync, Batched or expired,\n    // we should probably never restart.\n    // If we're suspended with delay, or if it's a retry, we'll always suspend\n    // so we can always restart.\n    if (workInProgressRootExitStatus === RootSuspendedWithDelay || workInProgressRootExitStatus === RootSuspended && includesOnlyRetries(workInProgressRootRenderLanes) && now() - globalMostRecentFallbackTime < FALLBACK_THROTTLE_MS) {\n      // Restart from the root.\n      prepareFreshStack(root, NoLanes);\n    } else {\n      // Even though we can't restart right now, we might get an\n      // opportunity later. So we mark this render as having a ping.\n      workInProgressRootPingedLanes = mergeLanes(workInProgressRootPingedLanes, pingedLanes);\n    }\n  }\n\n  ensureRootIsScheduled(root, eventTime);\n}\n\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n  // The boundary fiber (a Suspense component or SuspenseList component)\n  // previously was rendered in its fallback state. One of the promises that\n  // suspended it has resolved, which means at least part of the tree was\n  // likely unblocked. Try rendering again, at a new lanes.\n  if (retryLane === NoLane) {\n    // TODO: Assign this to `suspenseState.retryLane`? to avoid\n    // unnecessary entanglement?\n    retryLane = requestRetryLane(boundaryFiber);\n  } // TODO: Special case idle priority?\n\n\n  var eventTime = requestEventTime();\n  var root = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n\n  if (root !== null) {\n    markRootUpdated(root, retryLane, eventTime);\n    ensureRootIsScheduled(root, eventTime);\n  }\n}\n\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n  var suspenseState = boundaryFiber.memoizedState;\n  var retryLane = NoLane;\n\n  if (suspenseState !== null) {\n    retryLane = suspenseState.retryLane;\n  }\n\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n  var retryLane = NoLane; // Default\n\n  var retryCache;\n\n  switch (boundaryFiber.tag) {\n    case SuspenseComponent:\n      retryCache = boundaryFiber.stateNode;\n      var suspenseState = boundaryFiber.memoizedState;\n\n      if (suspenseState !== null) {\n        retryLane = suspenseState.retryLane;\n      }\n\n      break;\n\n    case SuspenseListComponent:\n      retryCache = boundaryFiber.stateNode;\n      break;\n\n    default:\n      throw new Error('Pinged unknown suspense boundary type. ' + 'This is probably a bug in React.');\n  }\n\n  if (retryCache !== null) {\n    // The wakeable resolved, so we no longer need to memoize, because it will\n    // never be thrown again.\n    retryCache.delete(wakeable);\n  }\n\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n} // Computes the next Just Noticeable Difference (JND) boundary.\n// The theory is that a person can't tell the difference between small differences in time.\n// Therefore, if we wait a bit longer than necessary that won't translate to a noticeable\n// difference in the experience. However, waiting for longer might mean that we can avoid\n// showing an intermediate loading state. The longer we have already waited, the harder it\n// is to tell small differences in time. Therefore, the longer we've already waited,\n// the longer we can wait additionally. At some point we have to give up though.\n// We pick a train model where the next boundary commits at a consistent schedule.\n// These particular numbers are vague estimates. We expect to adjust them based on research.\n\nfunction jnd(timeElapsed) {\n  return timeElapsed < 120 ? 120 : timeElapsed < 480 ? 480 : timeElapsed < 1080 ? 1080 : timeElapsed < 1920 ? 1920 : timeElapsed < 3000 ? 3000 : timeElapsed < 4320 ? 4320 : ceil(timeElapsed / 1960) * 1960;\n}\n\nfunction checkForNestedUpdates() {\n  if (nestedUpdateCount > NESTED_UPDATE_LIMIT) {\n    nestedUpdateCount = 0;\n    rootWithNestedUpdates = null;\n    throw new Error('Maximum update depth exceeded. This can happen when a component ' + 'repeatedly calls setState inside componentWillUpdate or ' + 'componentDidUpdate. React limits the number of nested updates to ' + 'prevent infinite loops.');\n  }\n\n  {\n    if (nestedPassiveUpdateCount > NESTED_PASSIVE_UPDATE_LIMIT) {\n      nestedPassiveUpdateCount = 0;\n      rootWithPassiveNestedUpdates = null;\n\n      error('Maximum update depth exceeded. This can happen when a component ' + \"calls setState inside useEffect, but useEffect either doesn't \" + 'have a dependency array, or one of the dependencies changes on ' + 'every render.');\n    }\n  }\n}\n\nfunction flushRenderPhaseStrictModeWarningsInDEV() {\n  {\n    ReactStrictModeWarnings.flushLegacyContextWarning();\n\n    {\n      ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings();\n    }\n  }\n}\n\nfunction commitDoubleInvokeEffectsInDEV(fiber, hasPassiveEffects) {\n  {\n    // TODO (StrictEffects) Should we set a marker on the root if it contains strict effects\n    // so we don't traverse unnecessarily? similar to subtreeFlags but just at the root level.\n    // Maybe not a big deal since this is DEV only behavior.\n    setCurrentFiber(fiber);\n    invokeEffectsInDev(fiber, MountLayoutDev, invokeLayoutEffectUnmountInDEV);\n\n    if (hasPassiveEffects) {\n      invokeEffectsInDev(fiber, MountPassiveDev, invokePassiveEffectUnmountInDEV);\n    }\n\n    invokeEffectsInDev(fiber, MountLayoutDev, invokeLayoutEffectMountInDEV);\n\n    if (hasPassiveEffects) {\n      invokeEffectsInDev(fiber, MountPassiveDev, invokePassiveEffectMountInDEV);\n    }\n\n    resetCurrentFiber();\n  }\n}\n\nfunction invokeEffectsInDev(firstChild, fiberFlags, invokeEffectFn) {\n  {\n    // We don't need to re-check StrictEffectsMode here.\n    // This function is only called if that check has already passed.\n    var current = firstChild;\n    var subtreeRoot = null;\n\n    while (current !== null) {\n      var primarySubtreeFlag = current.subtreeFlags & fiberFlags;\n\n      if (current !== subtreeRoot && current.child !== null && primarySubtreeFlag !== NoFlags) {\n        current = current.child;\n      } else {\n        if ((current.flags & fiberFlags) !== NoFlags) {\n          invokeEffectFn(current);\n        }\n\n        if (current.sibling !== null) {\n          current = current.sibling;\n        } else {\n          current = subtreeRoot = current.return;\n        }\n      }\n    }\n  }\n}\n\nvar didWarnStateUpdateForNotYetMountedComponent = null;\nfunction warnAboutUpdateOnNotYetMountedFiberInDEV(fiber) {\n  {\n    if ((executionContext & RenderContext) !== NoContext) {\n      // We let the other warning about render phase updates deal with this one.\n      return;\n    }\n\n    if (!(fiber.mode & ConcurrentMode)) {\n      return;\n    }\n\n    var tag = fiber.tag;\n\n    if (tag !== IndeterminateComponent && tag !== HostRoot && tag !== ClassComponent && tag !== FunctionComponent && tag !== ForwardRef && tag !== MemoComponent && tag !== SimpleMemoComponent) {\n      // Only warn for user-defined components, not internal ones like Suspense.\n      return;\n    } // We show the whole stack but dedupe on the top component's name because\n    // the problematic code almost always lies inside that component.\n\n\n    var componentName = getComponentNameFromFiber(fiber) || 'ReactComponent';\n\n    if (didWarnStateUpdateForNotYetMountedComponent !== null) {\n      if (didWarnStateUpdateForNotYetMountedComponent.has(componentName)) {\n        return;\n      }\n\n      didWarnStateUpdateForNotYetMountedComponent.add(componentName);\n    } else {\n      didWarnStateUpdateForNotYetMountedComponent = new Set([componentName]);\n    }\n\n    var previousFiber = current;\n\n    try {\n      setCurrentFiber(fiber);\n\n      error(\"Can't perform a React state update on a component that hasn't mounted yet. \" + 'This indicates that you have a side-effect in your render function that ' + 'asynchronously later calls tries to update the component. Move this work to ' + 'useEffect instead.');\n    } finally {\n      if (previousFiber) {\n        setCurrentFiber(fiber);\n      } else {\n        resetCurrentFiber();\n      }\n    }\n  }\n}\nvar beginWork$1;\n\n{\n  var dummyFiber = null;\n\n  beginWork$1 = function (current, unitOfWork, lanes) {\n    // If a component throws an error, we replay it again in a synchronously\n    // dispatched event, so that the debugger will treat it as an uncaught\n    // error See ReactErrorUtils for more information.\n    // Before entering the begin phase, copy the work-in-progress onto a dummy\n    // fiber. If beginWork throws, we'll use this to reset the state.\n    var originalWorkInProgressCopy = assignFiberPropertiesInDEV(dummyFiber, unitOfWork);\n\n    try {\n      return beginWork(current, unitOfWork, lanes);\n    } catch (originalError) {\n      if (didSuspendOrErrorWhileHydratingDEV() || originalError !== null && typeof originalError === 'object' && typeof originalError.then === 'function') {\n        // Don't replay promises.\n        // Don't replay errors if we are hydrating and have already suspended or handled an error\n        throw originalError;\n      } // Keep this code in sync with handleError; any changes here must have\n      // corresponding changes there.\n\n\n      resetContextDependencies();\n      resetHooksAfterThrow(); // Don't reset current debug fiber, since we're about to work on the\n      // same fiber again.\n      // Unwind the failed stack frame\n\n      unwindInterruptedWork(current, unitOfWork); // Restore the original properties of the fiber.\n\n      assignFiberPropertiesInDEV(unitOfWork, originalWorkInProgressCopy);\n\n      if ( unitOfWork.mode & ProfileMode) {\n        // Reset the profiler timer.\n        startProfilerTimer(unitOfWork);\n      } // Run beginWork again.\n\n\n      invokeGuardedCallback(null, beginWork, null, current, unitOfWork, lanes);\n\n      if (hasCaughtError()) {\n        var replayError = clearCaughtError();\n\n        if (typeof replayError === 'object' && replayError !== null && replayError._suppressLogging && typeof originalError === 'object' && originalError !== null && !originalError._suppressLogging) {\n          // If suppressed, let the flag carry over to the original error which is the one we'll rethrow.\n          originalError._suppressLogging = true;\n        }\n      } // We always throw the original error in case the second render pass is not idempotent.\n      // This can happen if a memoized function or CommonJS module doesn't throw after first invocation.\n\n\n      throw originalError;\n    }\n  };\n}\n\nvar didWarnAboutUpdateInRender = false;\nvar didWarnAboutUpdateInRenderForAnotherComponent;\n\n{\n  didWarnAboutUpdateInRenderForAnotherComponent = new Set();\n}\n\nfunction warnAboutRenderPhaseUpdatesInDEV(fiber) {\n  {\n    if (isRendering && !getIsUpdatingOpaqueValueInRenderPhaseInDEV()) {\n      switch (fiber.tag) {\n        case FunctionComponent:\n        case ForwardRef:\n        case SimpleMemoComponent:\n          {\n            var renderingComponentName = workInProgress && getComponentNameFromFiber(workInProgress) || 'Unknown'; // Dedupe by the rendering component because it's the one that needs to be fixed.\n\n            var dedupeKey = renderingComponentName;\n\n            if (!didWarnAboutUpdateInRenderForAnotherComponent.has(dedupeKey)) {\n              didWarnAboutUpdateInRenderForAnotherComponent.add(dedupeKey);\n              var setStateComponentName = getComponentNameFromFiber(fiber) || 'Unknown';\n\n              error('Cannot update a component (`%s`) while rendering a ' + 'different component (`%s`). To locate the bad setState() call inside `%s`, ' + 'follow the stack trace as described in https://reactjs.org/link/setstate-in-render', setStateComponentName, renderingComponentName, renderingComponentName);\n            }\n\n            break;\n          }\n\n        case ClassComponent:\n          {\n            if (!didWarnAboutUpdateInRender) {\n              error('Cannot update during an existing state transition (such as ' + 'within `render`). Render methods should be a pure ' + 'function of props and state.');\n\n              didWarnAboutUpdateInRender = true;\n            }\n\n            break;\n          }\n      }\n    }\n  }\n}\n\nfunction restorePendingUpdaters(root, lanes) {\n  {\n    if (isDevToolsPresent) {\n      var memoizedUpdaters = root.memoizedUpdaters;\n      memoizedUpdaters.forEach(function (schedulingFiber) {\n        addFiberToLanesMap(root, schedulingFiber, lanes);\n      }); // This function intentionally does not clear memoized updaters.\n      // Those may still be relevant to the current commit\n      // and a future one (e.g. Suspense).\n    }\n  }\n}\nvar fakeActCallbackNode = {};\n\nfunction scheduleCallback$1(priorityLevel, callback) {\n  {\n    // If we're currently inside an `act` scope, bypass Scheduler and push to\n    // the `act` queue instead.\n    var actQueue = ReactCurrentActQueue$1.current;\n\n    if (actQueue !== null) {\n      actQueue.push(callback);\n      return fakeActCallbackNode;\n    } else {\n      return scheduleCallback(priorityLevel, callback);\n    }\n  }\n}\n\nfunction cancelCallback$1(callbackNode) {\n  if ( callbackNode === fakeActCallbackNode) {\n    return;\n  } // In production, always call Scheduler. This function will be stripped out.\n\n\n  return cancelCallback(callbackNode);\n}\n\nfunction shouldForceFlushFallbacksInDEV() {\n  // Never force flush in production. This function should get stripped out.\n  return  ReactCurrentActQueue$1.current !== null;\n}\n\nfunction warnIfUpdatesNotWrappedWithActDEV(fiber) {\n  {\n    if (fiber.mode & ConcurrentMode) {\n      if (!isConcurrentActEnvironment()) {\n        // Not in an act environment. No need to warn.\n        return;\n      }\n    } else {\n      // Legacy mode has additional cases where we suppress a warning.\n      if (!isLegacyActEnvironment()) {\n        // Not in an act environment. No need to warn.\n        return;\n      }\n\n      if (executionContext !== NoContext) {\n        // Legacy mode doesn't warn if the update is batched, i.e.\n        // batchedUpdates or flushSync.\n        return;\n      }\n\n      if (fiber.tag !== FunctionComponent && fiber.tag !== ForwardRef && fiber.tag !== SimpleMemoComponent) {\n        // For backwards compatibility with pre-hooks code, legacy mode only\n        // warns for updates that originate from a hook.\n        return;\n      }\n    }\n\n    if (ReactCurrentActQueue$1.current === null) {\n      var previousFiber = current;\n\n      try {\n        setCurrentFiber(fiber);\n\n        error('An update to %s inside a test was not wrapped in act(...).\\n\\n' + 'When testing, code that causes React state updates should be ' + 'wrapped into act(...):\\n\\n' + 'act(() => {\\n' + '  /* fire events that update state */\\n' + '});\\n' + '/* assert on the output */\\n\\n' + \"This ensures that you're testing the behavior the user would see \" + 'in the browser.' + ' Learn more at https://reactjs.org/link/wrap-tests-with-act', getComponentNameFromFiber(fiber));\n      } finally {\n        if (previousFiber) {\n          setCurrentFiber(fiber);\n        } else {\n          resetCurrentFiber();\n        }\n      }\n    }\n  }\n}\n\nfunction warnIfSuspenseResolutionNotWrappedWithActDEV(root) {\n  {\n    if (root.tag !== LegacyRoot && isConcurrentActEnvironment() && ReactCurrentActQueue$1.current === null) {\n      error('A suspended resource finished loading inside a test, but the event ' + 'was not wrapped in act(...).\\n\\n' + 'When testing, code that resolves suspended data should be wrapped ' + 'into act(...):\\n\\n' + 'act(() => {\\n' + '  /* finish loading suspended data */\\n' + '});\\n' + '/* assert on the output */\\n\\n' + \"This ensures that you're testing the behavior the user would see \" + 'in the browser.' + ' Learn more at https://reactjs.org/link/wrap-tests-with-act');\n    }\n  }\n}\n\nfunction setIsRunningInsertionEffect(isRunning) {\n  {\n    isRunningInsertionEffect = isRunning;\n  }\n}\n\n/* eslint-disable react-internal/prod-error-codes */\nvar resolveFamily = null; // $FlowFixMe Flow gets confused by a WeakSet feature check below.\n\nvar failedBoundaries = null;\nvar setRefreshHandler = function (handler) {\n  {\n    resolveFamily = handler;\n  }\n};\nfunction resolveFunctionForHotReloading(type) {\n  {\n    if (resolveFamily === null) {\n      // Hot reloading is disabled.\n      return type;\n    }\n\n    var family = resolveFamily(type);\n\n    if (family === undefined) {\n      return type;\n    } // Use the latest known implementation.\n\n\n    return family.current;\n  }\n}\nfunction resolveClassForHotReloading(type) {\n  // No implementation differences.\n  return resolveFunctionForHotReloading(type);\n}\nfunction resolveForwardRefForHotReloading(type) {\n  {\n    if (resolveFamily === null) {\n      // Hot reloading is disabled.\n      return type;\n    }\n\n    var family = resolveFamily(type);\n\n    if (family === undefined) {\n      // Check if we're dealing with a real forwardRef. Don't want to crash early.\n      if (type !== null && type !== undefined && typeof type.render === 'function') {\n        // ForwardRef is special because its resolved .type is an object,\n        // but it's possible that we only have its inner render function in the map.\n        // If that inner render function is different, we'll build a new forwardRef type.\n        var currentRender = resolveFunctionForHotReloading(type.render);\n\n        if (type.render !== currentRender) {\n          var syntheticType = {\n            $$typeof: REACT_FORWARD_REF_TYPE,\n            render: currentRender\n          };\n\n          if (type.displayName !== undefined) {\n            syntheticType.displayName = type.displayName;\n          }\n\n          return syntheticType;\n        }\n      }\n\n      return type;\n    } // Use the latest known implementation.\n\n\n    return family.current;\n  }\n}\nfunction isCompatibleFamilyForHotReloading(fiber, element) {\n  {\n    if (resolveFamily === null) {\n      // Hot reloading is disabled.\n      return false;\n    }\n\n    var prevType = fiber.elementType;\n    var nextType = element.type; // If we got here, we know types aren't === equal.\n\n    var needsCompareFamilies = false;\n    var $$typeofNextType = typeof nextType === 'object' && nextType !== null ? nextType.$$typeof : null;\n\n    switch (fiber.tag) {\n      case ClassComponent:\n        {\n          if (typeof nextType === 'function') {\n            needsCompareFamilies = true;\n          }\n\n          break;\n        }\n\n      case FunctionComponent:\n        {\n          if (typeof nextType === 'function') {\n            needsCompareFamilies = true;\n          } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n            // We don't know the inner type yet.\n            // We're going to assume that the lazy inner type is stable,\n            // and so it is sufficient to avoid reconciling it away.\n            // We're not going to unwrap or actually use the new lazy type.\n            needsCompareFamilies = true;\n          }\n\n          break;\n        }\n\n      case ForwardRef:\n        {\n          if ($$typeofNextType === REACT_FORWARD_REF_TYPE) {\n            needsCompareFamilies = true;\n          } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n            needsCompareFamilies = true;\n          }\n\n          break;\n        }\n\n      case MemoComponent:\n      case SimpleMemoComponent:\n        {\n          if ($$typeofNextType === REACT_MEMO_TYPE) {\n            // TODO: if it was but can no longer be simple,\n            // we shouldn't set this.\n            needsCompareFamilies = true;\n          } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n            needsCompareFamilies = true;\n          }\n\n          break;\n        }\n\n      default:\n        return false;\n    } // Check if both types have a family and it's the same one.\n\n\n    if (needsCompareFamilies) {\n      // Note: memo() and forwardRef() we'll compare outer rather than inner type.\n      // This means both of them need to be registered to preserve state.\n      // If we unwrapped and compared the inner types for wrappers instead,\n      // then we would risk falsely saying two separate memo(Foo)\n      // calls are equivalent because they wrap the same Foo function.\n      var prevFamily = resolveFamily(prevType);\n\n      if (prevFamily !== undefined && prevFamily === resolveFamily(nextType)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n}\nfunction markFailedErrorBoundaryForHotReloading(fiber) {\n  {\n    if (resolveFamily === null) {\n      // Hot reloading is disabled.\n      return;\n    }\n\n    if (typeof WeakSet !== 'function') {\n      return;\n    }\n\n    if (failedBoundaries === null) {\n      failedBoundaries = new WeakSet();\n    }\n\n    failedBoundaries.add(fiber);\n  }\n}\nvar scheduleRefresh = function (root, update) {\n  {\n    if (resolveFamily === null) {\n      // Hot reloading is disabled.\n      return;\n    }\n\n    var staleFamilies = update.staleFamilies,\n        updatedFamilies = update.updatedFamilies;\n    flushPassiveEffects();\n    flushSync(function () {\n      scheduleFibersWithFamiliesRecursively(root.current, updatedFamilies, staleFamilies);\n    });\n  }\n};\nvar scheduleRoot = function (root, element) {\n  {\n    if (root.context !== emptyContextObject) {\n      // Super edge case: root has a legacy _renderSubtree context\n      // but we don't know the parentComponent so we can't pass it.\n      // Just ignore. We'll delete this with _renderSubtree code path later.\n      return;\n    }\n\n    flushPassiveEffects();\n    flushSync(function () {\n      updateContainer(element, root, null, null);\n    });\n  }\n};\n\nfunction scheduleFibersWithFamiliesRecursively(fiber, updatedFamilies, staleFamilies) {\n  {\n    var alternate = fiber.alternate,\n        child = fiber.child,\n        sibling = fiber.sibling,\n        tag = fiber.tag,\n        type = fiber.type;\n    var candidateType = null;\n\n    switch (tag) {\n      case FunctionComponent:\n      case SimpleMemoComponent:\n      case ClassComponent:\n        candidateType = type;\n        break;\n\n      case ForwardRef:\n        candidateType = type.render;\n        break;\n    }\n\n    if (resolveFamily === null) {\n      throw new Error('Expected resolveFamily to be set during hot reload.');\n    }\n\n    var needsRender = false;\n    var needsRemount = false;\n\n    if (candidateType !== null) {\n      var family = resolveFamily(candidateType);\n\n      if (family !== undefined) {\n        if (staleFamilies.has(family)) {\n          needsRemount = true;\n        } else if (updatedFamilies.has(family)) {\n          if (tag === ClassComponent) {\n            needsRemount = true;\n          } else {\n            needsRender = true;\n          }\n        }\n      }\n    }\n\n    if (failedBoundaries !== null) {\n      if (failedBoundaries.has(fiber) || alternate !== null && failedBoundaries.has(alternate)) {\n        needsRemount = true;\n      }\n    }\n\n    if (needsRemount) {\n      fiber._debugNeedsRemount = true;\n    }\n\n    if (needsRemount || needsRender) {\n      var _root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n      if (_root !== null) {\n        scheduleUpdateOnFiber(_root, fiber, SyncLane, NoTimestamp);\n      }\n    }\n\n    if (child !== null && !needsRemount) {\n      scheduleFibersWithFamiliesRecursively(child, updatedFamilies, staleFamilies);\n    }\n\n    if (sibling !== null) {\n      scheduleFibersWithFamiliesRecursively(sibling, updatedFamilies, staleFamilies);\n    }\n  }\n}\n\nvar findHostInstancesForRefresh = function (root, families) {\n  {\n    var hostInstances = new Set();\n    var types = new Set(families.map(function (family) {\n      return family.current;\n    }));\n    findHostInstancesForMatchingFibersRecursively(root.current, types, hostInstances);\n    return hostInstances;\n  }\n};\n\nfunction findHostInstancesForMatchingFibersRecursively(fiber, types, hostInstances) {\n  {\n    var child = fiber.child,\n        sibling = fiber.sibling,\n        tag = fiber.tag,\n        type = fiber.type;\n    var candidateType = null;\n\n    switch (tag) {\n      case FunctionComponent:\n      case SimpleMemoComponent:\n      case ClassComponent:\n        candidateType = type;\n        break;\n\n      case ForwardRef:\n        candidateType = type.render;\n        break;\n    }\n\n    var didMatch = false;\n\n    if (candidateType !== null) {\n      if (types.has(candidateType)) {\n        didMatch = true;\n      }\n    }\n\n    if (didMatch) {\n      // We have a match. This only drills down to the closest host components.\n      // There's no need to search deeper because for the purpose of giving\n      // visual feedback, \"flashing\" outermost parent rectangles is sufficient.\n      findHostInstancesForFiberShallowly(fiber, hostInstances);\n    } else {\n      // If there's no match, maybe there will be one further down in the child tree.\n      if (child !== null) {\n        findHostInstancesForMatchingFibersRecursively(child, types, hostInstances);\n      }\n    }\n\n    if (sibling !== null) {\n      findHostInstancesForMatchingFibersRecursively(sibling, types, hostInstances);\n    }\n  }\n}\n\nfunction findHostInstancesForFiberShallowly(fiber, hostInstances) {\n  {\n    var foundHostInstances = findChildHostInstancesForFiberShallowly(fiber, hostInstances);\n\n    if (foundHostInstances) {\n      return;\n    } // If we didn't find any host children, fallback to closest host parent.\n\n\n    var node = fiber;\n\n    while (true) {\n      switch (node.tag) {\n        case HostComponent:\n          hostInstances.add(node.stateNode);\n          return;\n\n        case HostPortal:\n          hostInstances.add(node.stateNode.containerInfo);\n          return;\n\n        case HostRoot:\n          hostInstances.add(node.stateNode.containerInfo);\n          return;\n      }\n\n      if (node.return === null) {\n        throw new Error('Expected to reach root first.');\n      }\n\n      node = node.return;\n    }\n  }\n}\n\nfunction findChildHostInstancesForFiberShallowly(fiber, hostInstances) {\n  {\n    var node = fiber;\n    var foundHostInstances = false;\n\n    while (true) {\n      if (node.tag === HostComponent) {\n        // We got a match.\n        foundHostInstances = true;\n        hostInstances.add(node.stateNode); // There may still be more, so keep searching.\n      } else if (node.child !== null) {\n        node.child.return = node;\n        node = node.child;\n        continue;\n      }\n\n      if (node === fiber) {\n        return foundHostInstances;\n      }\n\n      while (node.sibling === null) {\n        if (node.return === null || node.return === fiber) {\n          return foundHostInstances;\n        }\n\n        node = node.return;\n      }\n\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  }\n\n  return false;\n}\n\nvar hasBadMapPolyfill;\n\n{\n  hasBadMapPolyfill = false;\n\n  try {\n    var nonExtensibleObject = Object.preventExtensions({});\n    /* eslint-disable no-new */\n\n    new Map([[nonExtensibleObject, null]]);\n    new Set([nonExtensibleObject]);\n    /* eslint-enable no-new */\n  } catch (e) {\n    // TODO: Consider warning about bad polyfills\n    hasBadMapPolyfill = true;\n  }\n}\n\nfunction FiberNode(tag, pendingProps, key, mode) {\n  // Instance\n  this.tag = tag;\n  this.key = key;\n  this.elementType = null;\n  this.type = null;\n  this.stateNode = null; // Fiber\n\n  this.return = null;\n  this.child = null;\n  this.sibling = null;\n  this.index = 0;\n  this.ref = null;\n  this.pendingProps = pendingProps;\n  this.memoizedProps = null;\n  this.updateQueue = null;\n  this.memoizedState = null;\n  this.dependencies = null;\n  this.mode = mode; // Effects\n\n  this.flags = NoFlags;\n  this.subtreeFlags = NoFlags;\n  this.deletions = null;\n  this.lanes = NoLanes;\n  this.childLanes = NoLanes;\n  this.alternate = null;\n\n  {\n    // Note: The following is done to avoid a v8 performance cliff.\n    //\n    // Initializing the fields below to smis and later updating them with\n    // double values will cause Fibers to end up having separate shapes.\n    // This behavior/bug has something to do with Object.preventExtension().\n    // Fortunately this only impacts DEV builds.\n    // Unfortunately it makes React unusably slow for some applications.\n    // To work around this, initialize the fields below with doubles.\n    //\n    // Learn more about this here:\n    // https://github.com/facebook/react/issues/14365\n    // https://bugs.chromium.org/p/v8/issues/detail?id=8538\n    this.actualDuration = Number.NaN;\n    this.actualStartTime = Number.NaN;\n    this.selfBaseDuration = Number.NaN;\n    this.treeBaseDuration = Number.NaN; // It's okay to replace the initial doubles with smis after initialization.\n    // This won't trigger the performance cliff mentioned above,\n    // and it simplifies other profiler code (including DevTools).\n\n    this.actualDuration = 0;\n    this.actualStartTime = -1;\n    this.selfBaseDuration = 0;\n    this.treeBaseDuration = 0;\n  }\n\n  {\n    // This isn't directly used but is handy for debugging internals:\n    this._debugSource = null;\n    this._debugOwner = null;\n    this._debugNeedsRemount = false;\n    this._debugHookTypes = null;\n\n    if (!hasBadMapPolyfill && typeof Object.preventExtensions === 'function') {\n      Object.preventExtensions(this);\n    }\n  }\n} // This is a constructor function, rather than a POJO constructor, still\n// please ensure we do the following:\n// 1) Nobody should add any instance methods on this. Instance methods can be\n//    more difficult to predict when they get optimized and they are almost\n//    never inlined properly in static compilers.\n// 2) Nobody should rely on `instanceof Fiber` for type testing. We should\n//    always know when it is a fiber.\n// 3) We might want to experiment with using numeric keys since they are easier\n//    to optimize in a non-JIT environment.\n// 4) We can easily go from a constructor to a createFiber object literal if that\n//    is faster.\n// 5) It should be easy to port this to a C struct and keep a C implementation\n//    compatible.\n\n\nvar createFiber = function (tag, pendingProps, key, mode) {\n  // $FlowFixMe: the shapes are exact here but Flow doesn't like constructors\n  return new FiberNode(tag, pendingProps, key, mode);\n};\n\nfunction shouldConstruct$1(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction isSimpleFunctionComponent(type) {\n  return typeof type === 'function' && !shouldConstruct$1(type) && type.defaultProps === undefined;\n}\nfunction resolveLazyComponentTag(Component) {\n  if (typeof Component === 'function') {\n    return shouldConstruct$1(Component) ? ClassComponent : FunctionComponent;\n  } else if (Component !== undefined && Component !== null) {\n    var $$typeof = Component.$$typeof;\n\n    if ($$typeof === REACT_FORWARD_REF_TYPE) {\n      return ForwardRef;\n    }\n\n    if ($$typeof === REACT_MEMO_TYPE) {\n      return MemoComponent;\n    }\n  }\n\n  return IndeterminateComponent;\n} // This is used to create an alternate fiber to do work on.\n\nfunction createWorkInProgress(current, pendingProps) {\n  var workInProgress = current.alternate;\n\n  if (workInProgress === null) {\n    // We use a double buffering pooling technique because we know that we'll\n    // only ever need at most two versions of a tree. We pool the \"other\" unused\n    // node that we're free to reuse. This is lazily created to avoid allocating\n    // extra objects for things that are never updated. It also allow us to\n    // reclaim the extra memory if needed.\n    workInProgress = createFiber(current.tag, pendingProps, current.key, current.mode);\n    workInProgress.elementType = current.elementType;\n    workInProgress.type = current.type;\n    workInProgress.stateNode = current.stateNode;\n\n    {\n      // DEV-only fields\n      workInProgress._debugSource = current._debugSource;\n      workInProgress._debugOwner = current._debugOwner;\n      workInProgress._debugHookTypes = current._debugHookTypes;\n    }\n\n    workInProgress.alternate = current;\n    current.alternate = workInProgress;\n  } else {\n    workInProgress.pendingProps = pendingProps; // Needed because Blocks store data on type.\n\n    workInProgress.type = current.type; // We already have an alternate.\n    // Reset the effect tag.\n\n    workInProgress.flags = NoFlags; // The effects are no longer valid.\n\n    workInProgress.subtreeFlags = NoFlags;\n    workInProgress.deletions = null;\n\n    {\n      // We intentionally reset, rather than copy, actualDuration & actualStartTime.\n      // This prevents time from endlessly accumulating in new commits.\n      // This has the downside of resetting values for different priority renders,\n      // But works for yielding (the common case) and should support resuming.\n      workInProgress.actualDuration = 0;\n      workInProgress.actualStartTime = -1;\n    }\n  } // Reset all effects except static ones.\n  // Static effects are not specific to a render.\n\n\n  workInProgress.flags = current.flags & StaticMask;\n  workInProgress.childLanes = current.childLanes;\n  workInProgress.lanes = current.lanes;\n  workInProgress.child = current.child;\n  workInProgress.memoizedProps = current.memoizedProps;\n  workInProgress.memoizedState = current.memoizedState;\n  workInProgress.updateQueue = current.updateQueue; // Clone the dependencies object. This is mutated during the render phase, so\n  // it cannot be shared with the current fiber.\n\n  var currentDependencies = current.dependencies;\n  workInProgress.dependencies = currentDependencies === null ? null : {\n    lanes: currentDependencies.lanes,\n    firstContext: currentDependencies.firstContext\n  }; // These will be overridden during the parent's reconciliation\n\n  workInProgress.sibling = current.sibling;\n  workInProgress.index = current.index;\n  workInProgress.ref = current.ref;\n\n  {\n    workInProgress.selfBaseDuration = current.selfBaseDuration;\n    workInProgress.treeBaseDuration = current.treeBaseDuration;\n  }\n\n  {\n    workInProgress._debugNeedsRemount = current._debugNeedsRemount;\n\n    switch (workInProgress.tag) {\n      case IndeterminateComponent:\n      case FunctionComponent:\n      case SimpleMemoComponent:\n        workInProgress.type = resolveFunctionForHotReloading(current.type);\n        break;\n\n      case ClassComponent:\n        workInProgress.type = resolveClassForHotReloading(current.type);\n        break;\n\n      case ForwardRef:\n        workInProgress.type = resolveForwardRefForHotReloading(current.type);\n        break;\n    }\n  }\n\n  return workInProgress;\n} // Used to reuse a Fiber for a second pass.\n\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n  // This resets the Fiber to what createFiber or createWorkInProgress would\n  // have set the values to before during the first pass. Ideally this wouldn't\n  // be necessary but unfortunately many code paths reads from the workInProgress\n  // when they should be reading from current and writing to workInProgress.\n  // We assume pendingProps, index, key, ref, return are still untouched to\n  // avoid doing another reconciliation.\n  // Reset the effect flags but keep any Placement tags, since that's something\n  // that child fiber is setting, not the reconciliation.\n  workInProgress.flags &= StaticMask | Placement; // The effects are no longer valid.\n\n  var current = workInProgress.alternate;\n\n  if (current === null) {\n    // Reset to createFiber's initial values.\n    workInProgress.childLanes = NoLanes;\n    workInProgress.lanes = renderLanes;\n    workInProgress.child = null;\n    workInProgress.subtreeFlags = NoFlags;\n    workInProgress.memoizedProps = null;\n    workInProgress.memoizedState = null;\n    workInProgress.updateQueue = null;\n    workInProgress.dependencies = null;\n    workInProgress.stateNode = null;\n\n    {\n      // Note: We don't reset the actualTime counts. It's useful to accumulate\n      // actual time across multiple render passes.\n      workInProgress.selfBaseDuration = 0;\n      workInProgress.treeBaseDuration = 0;\n    }\n  } else {\n    // Reset to the cloned values that createWorkInProgress would've.\n    workInProgress.childLanes = current.childLanes;\n    workInProgress.lanes = current.lanes;\n    workInProgress.child = current.child;\n    workInProgress.subtreeFlags = NoFlags;\n    workInProgress.deletions = null;\n    workInProgress.memoizedProps = current.memoizedProps;\n    workInProgress.memoizedState = current.memoizedState;\n    workInProgress.updateQueue = current.updateQueue; // Needed because Blocks store data on type.\n\n    workInProgress.type = current.type; // Clone the dependencies object. This is mutated during the render phase, so\n    // it cannot be shared with the current fiber.\n\n    var currentDependencies = current.dependencies;\n    workInProgress.dependencies = currentDependencies === null ? null : {\n      lanes: currentDependencies.lanes,\n      firstContext: currentDependencies.firstContext\n    };\n\n    {\n      // Note: We don't reset the actualTime counts. It's useful to accumulate\n      // actual time across multiple render passes.\n      workInProgress.selfBaseDuration = current.selfBaseDuration;\n      workInProgress.treeBaseDuration = current.treeBaseDuration;\n    }\n  }\n\n  return workInProgress;\n}\nfunction createHostRootFiber(tag, isStrictMode, concurrentUpdatesByDefaultOverride) {\n  var mode;\n\n  if (tag === ConcurrentRoot) {\n    mode = ConcurrentMode;\n\n    if (isStrictMode === true) {\n      mode |= StrictLegacyMode;\n\n      {\n        mode |= StrictEffectsMode;\n      }\n    }\n  } else {\n    mode = NoMode;\n  }\n\n  if ( isDevToolsPresent) {\n    // Always collect profile timings when DevTools are present.\n    // This enables DevTools to start capturing timing at any point–\n    // Without some nodes in the tree having empty base times.\n    mode |= ProfileMode;\n  }\n\n  return createFiber(HostRoot, null, null, mode);\n}\nfunction createFiberFromTypeAndProps(type, // React$ElementType\nkey, pendingProps, owner, mode, lanes) {\n  var fiberTag = IndeterminateComponent; // The resolved type is set if we know what the final type will be. I.e. it's not lazy.\n\n  var resolvedType = type;\n\n  if (typeof type === 'function') {\n    if (shouldConstruct$1(type)) {\n      fiberTag = ClassComponent;\n\n      {\n        resolvedType = resolveClassForHotReloading(resolvedType);\n      }\n    } else {\n      {\n        resolvedType = resolveFunctionForHotReloading(resolvedType);\n      }\n    }\n  } else if (typeof type === 'string') {\n    fiberTag = HostComponent;\n  } else {\n    getTag: switch (type) {\n      case REACT_FRAGMENT_TYPE:\n        return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n\n      case REACT_STRICT_MODE_TYPE:\n        fiberTag = Mode;\n        mode |= StrictLegacyMode;\n\n        if ( (mode & ConcurrentMode) !== NoMode) {\n          // Strict effects should never run on legacy roots\n          mode |= StrictEffectsMode;\n        }\n\n        break;\n\n      case REACT_PROFILER_TYPE:\n        return createFiberFromProfiler(pendingProps, mode, lanes, key);\n\n      case REACT_SUSPENSE_TYPE:\n        return createFiberFromSuspense(pendingProps, mode, lanes, key);\n\n      case REACT_SUSPENSE_LIST_TYPE:\n        return createFiberFromSuspenseList(pendingProps, mode, lanes, key);\n\n      case REACT_OFFSCREEN_TYPE:\n        return createFiberFromOffscreen(pendingProps, mode, lanes, key);\n\n      case REACT_LEGACY_HIDDEN_TYPE:\n\n      // eslint-disable-next-line no-fallthrough\n\n      case REACT_SCOPE_TYPE:\n\n      // eslint-disable-next-line no-fallthrough\n\n      case REACT_CACHE_TYPE:\n\n      // eslint-disable-next-line no-fallthrough\n\n      case REACT_TRACING_MARKER_TYPE:\n\n      // eslint-disable-next-line no-fallthrough\n\n      case REACT_DEBUG_TRACING_MODE_TYPE:\n\n      // eslint-disable-next-line no-fallthrough\n\n      default:\n        {\n          if (typeof type === 'object' && type !== null) {\n            switch (type.$$typeof) {\n              case REACT_PROVIDER_TYPE:\n                fiberTag = ContextProvider;\n                break getTag;\n\n              case REACT_CONTEXT_TYPE:\n                // This is a consumer\n                fiberTag = ContextConsumer;\n                break getTag;\n\n              case REACT_FORWARD_REF_TYPE:\n                fiberTag = ForwardRef;\n\n                {\n                  resolvedType = resolveForwardRefForHotReloading(resolvedType);\n                }\n\n                break getTag;\n\n              case REACT_MEMO_TYPE:\n                fiberTag = MemoComponent;\n                break getTag;\n\n              case REACT_LAZY_TYPE:\n                fiberTag = LazyComponent;\n                resolvedType = null;\n                break getTag;\n            }\n          }\n\n          var info = '';\n\n          {\n            if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n              info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and \" + 'named imports.';\n            }\n\n            var ownerName = owner ? getComponentNameFromFiber(owner) : null;\n\n            if (ownerName) {\n              info += '\\n\\nCheck the render method of `' + ownerName + '`.';\n            }\n          }\n\n          throw new Error('Element type is invalid: expected a string (for built-in ' + 'components) or a class/function (for composite components) ' + (\"but got: \" + (type == null ? type : typeof type) + \".\" + info));\n        }\n    }\n  }\n\n  var fiber = createFiber(fiberTag, pendingProps, key, mode);\n  fiber.elementType = type;\n  fiber.type = resolvedType;\n  fiber.lanes = lanes;\n\n  {\n    fiber._debugOwner = owner;\n  }\n\n  return fiber;\n}\nfunction createFiberFromElement(element, mode, lanes) {\n  var owner = null;\n\n  {\n    owner = element._owner;\n  }\n\n  var type = element.type;\n  var key = element.key;\n  var pendingProps = element.props;\n  var fiber = createFiberFromTypeAndProps(type, key, pendingProps, owner, mode, lanes);\n\n  {\n    fiber._debugSource = element._source;\n    fiber._debugOwner = element._owner;\n  }\n\n  return fiber;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n  var fiber = createFiber(Fragment, elements, key, mode);\n  fiber.lanes = lanes;\n  return fiber;\n}\n\nfunction createFiberFromProfiler(pendingProps, mode, lanes, key) {\n  {\n    if (typeof pendingProps.id !== 'string') {\n      error('Profiler must specify an \"id\" of type `string` as a prop. Received the type `%s` instead.', typeof pendingProps.id);\n    }\n  }\n\n  var fiber = createFiber(Profiler, pendingProps, key, mode | ProfileMode);\n  fiber.elementType = REACT_PROFILER_TYPE;\n  fiber.lanes = lanes;\n\n  {\n    fiber.stateNode = {\n      effectDuration: 0,\n      passiveEffectDuration: 0\n    };\n  }\n\n  return fiber;\n}\n\nfunction createFiberFromSuspense(pendingProps, mode, lanes, key) {\n  var fiber = createFiber(SuspenseComponent, pendingProps, key, mode);\n  fiber.elementType = REACT_SUSPENSE_TYPE;\n  fiber.lanes = lanes;\n  return fiber;\n}\nfunction createFiberFromSuspenseList(pendingProps, mode, lanes, key) {\n  var fiber = createFiber(SuspenseListComponent, pendingProps, key, mode);\n  fiber.elementType = REACT_SUSPENSE_LIST_TYPE;\n  fiber.lanes = lanes;\n  return fiber;\n}\nfunction createFiberFromOffscreen(pendingProps, mode, lanes, key) {\n  var fiber = createFiber(OffscreenComponent, pendingProps, key, mode);\n  fiber.elementType = REACT_OFFSCREEN_TYPE;\n  fiber.lanes = lanes;\n  var primaryChildInstance = {\n    isHidden: false\n  };\n  fiber.stateNode = primaryChildInstance;\n  return fiber;\n}\nfunction createFiberFromText(content, mode, lanes) {\n  var fiber = createFiber(HostText, content, null, mode);\n  fiber.lanes = lanes;\n  return fiber;\n}\nfunction createFiberFromHostInstanceForDeletion() {\n  var fiber = createFiber(HostComponent, null, null, NoMode);\n  fiber.elementType = 'DELETED';\n  return fiber;\n}\nfunction createFiberFromDehydratedFragment(dehydratedNode) {\n  var fiber = createFiber(DehydratedFragment, null, null, NoMode);\n  fiber.stateNode = dehydratedNode;\n  return fiber;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n  var pendingProps = portal.children !== null ? portal.children : [];\n  var fiber = createFiber(HostPortal, pendingProps, portal.key, mode);\n  fiber.lanes = lanes;\n  fiber.stateNode = {\n    containerInfo: portal.containerInfo,\n    pendingChildren: null,\n    // Used by persistent updates\n    implementation: portal.implementation\n  };\n  return fiber;\n} // Used for stashing WIP properties to replay failed work in DEV.\n\nfunction assignFiberPropertiesInDEV(target, source) {\n  if (target === null) {\n    // This Fiber's initial properties will always be overwritten.\n    // We only use a Fiber to ensure the same hidden class so DEV isn't slow.\n    target = createFiber(IndeterminateComponent, null, null, NoMode);\n  } // This is intentionally written as a list of all properties.\n  // We tried to use Object.assign() instead but this is called in\n  // the hottest path, and Object.assign() was too slow:\n  // https://github.com/facebook/react/issues/12502\n  // This code is DEV-only so size is not a concern.\n\n\n  target.tag = source.tag;\n  target.key = source.key;\n  target.elementType = source.elementType;\n  target.type = source.type;\n  target.stateNode = source.stateNode;\n  target.return = source.return;\n  target.child = source.child;\n  target.sibling = source.sibling;\n  target.index = source.index;\n  target.ref = source.ref;\n  target.pendingProps = source.pendingProps;\n  target.memoizedProps = source.memoizedProps;\n  target.updateQueue = source.updateQueue;\n  target.memoizedState = source.memoizedState;\n  target.dependencies = source.dependencies;\n  target.mode = source.mode;\n  target.flags = source.flags;\n  target.subtreeFlags = source.subtreeFlags;\n  target.deletions = source.deletions;\n  target.lanes = source.lanes;\n  target.childLanes = source.childLanes;\n  target.alternate = source.alternate;\n\n  {\n    target.actualDuration = source.actualDuration;\n    target.actualStartTime = source.actualStartTime;\n    target.selfBaseDuration = source.selfBaseDuration;\n    target.treeBaseDuration = source.treeBaseDuration;\n  }\n\n  target._debugSource = source._debugSource;\n  target._debugOwner = source._debugOwner;\n  target._debugNeedsRemount = source._debugNeedsRemount;\n  target._debugHookTypes = source._debugHookTypes;\n  return target;\n}\n\nfunction FiberRootNode(containerInfo, tag, hydrate, identifierPrefix, onRecoverableError) {\n  this.tag = tag;\n  this.containerInfo = containerInfo;\n  this.pendingChildren = null;\n  this.current = null;\n  this.pingCache = null;\n  this.finishedWork = null;\n  this.timeoutHandle = noTimeout;\n  this.context = null;\n  this.pendingContext = null;\n  this.callbackNode = null;\n  this.callbackPriority = NoLane;\n  this.eventTimes = createLaneMap(NoLanes);\n  this.expirationTimes = createLaneMap(NoTimestamp);\n  this.pendingLanes = NoLanes;\n  this.suspendedLanes = NoLanes;\n  this.pingedLanes = NoLanes;\n  this.expiredLanes = NoLanes;\n  this.mutableReadLanes = NoLanes;\n  this.finishedLanes = NoLanes;\n  this.entangledLanes = NoLanes;\n  this.entanglements = createLaneMap(NoLanes);\n  this.identifierPrefix = identifierPrefix;\n  this.onRecoverableError = onRecoverableError;\n\n  {\n    this.mutableSourceEagerHydrationData = null;\n  }\n\n  {\n    this.effectDuration = 0;\n    this.passiveEffectDuration = 0;\n  }\n\n  {\n    this.memoizedUpdaters = new Set();\n    var pendingUpdatersLaneMap = this.pendingUpdatersLaneMap = [];\n\n    for (var _i = 0; _i < TotalLanes; _i++) {\n      pendingUpdatersLaneMap.push(new Set());\n    }\n  }\n\n  {\n    switch (tag) {\n      case ConcurrentRoot:\n        this._debugRootType = hydrate ? 'hydrateRoot()' : 'createRoot()';\n        break;\n\n      case LegacyRoot:\n        this._debugRootType = hydrate ? 'hydrate()' : 'render()';\n        break;\n    }\n  }\n}\n\nfunction createFiberRoot(containerInfo, tag, hydrate, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, // TODO: We have several of these arguments that are conceptually part of the\n// host config, but because they are passed in at runtime, we have to thread\n// them through the root constructor. Perhaps we should put them all into a\n// single type, like a DynamicHostConfig that is defined by the renderer.\nidentifierPrefix, onRecoverableError, transitionCallbacks) {\n  var root = new FiberRootNode(containerInfo, tag, hydrate, identifierPrefix, onRecoverableError);\n  // stateNode is any.\n\n\n  var uninitializedFiber = createHostRootFiber(tag, isStrictMode);\n  root.current = uninitializedFiber;\n  uninitializedFiber.stateNode = root;\n\n  {\n    var _initialState = {\n      element: initialChildren,\n      isDehydrated: hydrate,\n      cache: null,\n      // not enabled yet\n      transitions: null,\n      pendingSuspenseBoundaries: null\n    };\n    uninitializedFiber.memoizedState = _initialState;\n  }\n\n  initializeUpdateQueue(uninitializedFiber);\n  return root;\n}\n\nvar ReactVersion = '18.2.0';\n\nfunction createPortal(children, containerInfo, // TODO: figure out the API for cross-renderer implementation.\nimplementation) {\n  var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n  {\n    checkKeyStringCoercion(key);\n  }\n\n  return {\n    // This tag allow us to uniquely identify this as a React Portal\n    $$typeof: REACT_PORTAL_TYPE,\n    key: key == null ? null : '' + key,\n    children: children,\n    containerInfo: containerInfo,\n    implementation: implementation\n  };\n}\n\nvar didWarnAboutNestedUpdates;\nvar didWarnAboutFindNodeInStrictMode;\n\n{\n  didWarnAboutNestedUpdates = false;\n  didWarnAboutFindNodeInStrictMode = {};\n}\n\nfunction getContextForSubtree(parentComponent) {\n  if (!parentComponent) {\n    return emptyContextObject;\n  }\n\n  var fiber = get(parentComponent);\n  var parentContext = findCurrentUnmaskedContext(fiber);\n\n  if (fiber.tag === ClassComponent) {\n    var Component = fiber.type;\n\n    if (isContextProvider(Component)) {\n      return processChildContext(fiber, Component, parentContext);\n    }\n  }\n\n  return parentContext;\n}\n\nfunction findHostInstanceWithWarning(component, methodName) {\n  {\n    var fiber = get(component);\n\n    if (fiber === undefined) {\n      if (typeof component.render === 'function') {\n        throw new Error('Unable to find node on an unmounted component.');\n      } else {\n        var keys = Object.keys(component).join(',');\n        throw new Error(\"Argument appears to not be a ReactComponent. Keys: \" + keys);\n      }\n    }\n\n    var hostFiber = findCurrentHostFiber(fiber);\n\n    if (hostFiber === null) {\n      return null;\n    }\n\n    if (hostFiber.mode & StrictLegacyMode) {\n      var componentName = getComponentNameFromFiber(fiber) || 'Component';\n\n      if (!didWarnAboutFindNodeInStrictMode[componentName]) {\n        didWarnAboutFindNodeInStrictMode[componentName] = true;\n        var previousFiber = current;\n\n        try {\n          setCurrentFiber(hostFiber);\n\n          if (fiber.mode & StrictLegacyMode) {\n            error('%s is deprecated in StrictMode. ' + '%s was passed an instance of %s which is inside StrictMode. ' + 'Instead, add a ref directly to the element you want to reference. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-find-node', methodName, methodName, componentName);\n          } else {\n            error('%s is deprecated in StrictMode. ' + '%s was passed an instance of %s which renders StrictMode children. ' + 'Instead, add a ref directly to the element you want to reference. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-find-node', methodName, methodName, componentName);\n          }\n        } finally {\n          // Ideally this should reset to previous but this shouldn't be called in\n          // render and there's another warning for that anyway.\n          if (previousFiber) {\n            setCurrentFiber(previousFiber);\n          } else {\n            resetCurrentFiber();\n          }\n        }\n      }\n    }\n\n    return hostFiber.stateNode;\n  }\n}\n\nfunction createContainer(containerInfo, tag, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks) {\n  var hydrate = false;\n  var initialChildren = null;\n  return createFiberRoot(containerInfo, tag, hydrate, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);\n}\nfunction createHydrationContainer(initialChildren, // TODO: Remove `callback` when we delete legacy mode.\ncallback, containerInfo, tag, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks) {\n  var hydrate = true;\n  var root = createFiberRoot(containerInfo, tag, hydrate, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError); // TODO: Move this to FiberRoot constructor\n\n  root.context = getContextForSubtree(null); // Schedule the initial render. In a hydration root, this is different from\n  // a regular update because the initial render must match was was rendered\n  // on the server.\n  // NOTE: This update intentionally doesn't have a payload. We're only using\n  // the update to schedule work on the root fiber (and, for legacy roots, to\n  // enqueue the callback if one is provided).\n\n  var current = root.current;\n  var eventTime = requestEventTime();\n  var lane = requestUpdateLane(current);\n  var update = createUpdate(eventTime, lane);\n  update.callback = callback !== undefined && callback !== null ? callback : null;\n  enqueueUpdate(current, update, lane);\n  scheduleInitialHydrationOnRoot(root, lane, eventTime);\n  return root;\n}\nfunction updateContainer(element, container, parentComponent, callback) {\n  {\n    onScheduleRoot(container, element);\n  }\n\n  var current$1 = container.current;\n  var eventTime = requestEventTime();\n  var lane = requestUpdateLane(current$1);\n\n  {\n    markRenderScheduled(lane);\n  }\n\n  var context = getContextForSubtree(parentComponent);\n\n  if (container.context === null) {\n    container.context = context;\n  } else {\n    container.pendingContext = context;\n  }\n\n  {\n    if (isRendering && current !== null && !didWarnAboutNestedUpdates) {\n      didWarnAboutNestedUpdates = true;\n\n      error('Render methods should be a pure function of props and state; ' + 'triggering nested component updates from render is not allowed. ' + 'If necessary, trigger nested updates in componentDidUpdate.\\n\\n' + 'Check the render method of %s.', getComponentNameFromFiber(current) || 'Unknown');\n    }\n  }\n\n  var update = createUpdate(eventTime, lane); // Caution: React DevTools currently depends on this property\n  // being called \"element\".\n\n  update.payload = {\n    element: element\n  };\n  callback = callback === undefined ? null : callback;\n\n  if (callback !== null) {\n    {\n      if (typeof callback !== 'function') {\n        error('render(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callback);\n      }\n    }\n\n    update.callback = callback;\n  }\n\n  var root = enqueueUpdate(current$1, update, lane);\n\n  if (root !== null) {\n    scheduleUpdateOnFiber(root, current$1, lane, eventTime);\n    entangleTransitions(root, current$1, lane);\n  }\n\n  return lane;\n}\nfunction getPublicRootInstance(container) {\n  var containerFiber = container.current;\n\n  if (!containerFiber.child) {\n    return null;\n  }\n\n  switch (containerFiber.child.tag) {\n    case HostComponent:\n      return getPublicInstance(containerFiber.child.stateNode);\n\n    default:\n      return containerFiber.child.stateNode;\n  }\n}\nfunction attemptSynchronousHydration$1(fiber) {\n  switch (fiber.tag) {\n    case HostRoot:\n      {\n        var root = fiber.stateNode;\n\n        if (isRootDehydrated(root)) {\n          // Flush the first scheduled \"update\".\n          var lanes = getHighestPriorityPendingLanes(root);\n          flushRoot(root, lanes);\n        }\n\n        break;\n      }\n\n    case SuspenseComponent:\n      {\n        flushSync(function () {\n          var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n          if (root !== null) {\n            var eventTime = requestEventTime();\n            scheduleUpdateOnFiber(root, fiber, SyncLane, eventTime);\n          }\n        }); // If we're still blocked after this, we need to increase\n        // the priority of any promises resolving within this\n        // boundary so that they next attempt also has higher pri.\n\n        var retryLane = SyncLane;\n        markRetryLaneIfNotHydrated(fiber, retryLane);\n        break;\n      }\n  }\n}\n\nfunction markRetryLaneImpl(fiber, retryLane) {\n  var suspenseState = fiber.memoizedState;\n\n  if (suspenseState !== null && suspenseState.dehydrated !== null) {\n    suspenseState.retryLane = higherPriorityLane(suspenseState.retryLane, retryLane);\n  }\n} // Increases the priority of thenables when they resolve within this boundary.\n\n\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n  markRetryLaneImpl(fiber, retryLane);\n  var alternate = fiber.alternate;\n\n  if (alternate) {\n    markRetryLaneImpl(alternate, retryLane);\n  }\n}\nfunction attemptContinuousHydration$1(fiber) {\n  if (fiber.tag !== SuspenseComponent) {\n    // We ignore HostRoots here because we can't increase\n    // their priority and they should not suspend on I/O,\n    // since you have to wrap anything that might suspend in\n    // Suspense.\n    return;\n  }\n\n  var lane = SelectiveHydrationLane;\n  var root = enqueueConcurrentRenderForLane(fiber, lane);\n\n  if (root !== null) {\n    var eventTime = requestEventTime();\n    scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n  }\n\n  markRetryLaneIfNotHydrated(fiber, lane);\n}\nfunction attemptHydrationAtCurrentPriority$1(fiber) {\n  if (fiber.tag !== SuspenseComponent) {\n    // We ignore HostRoots here because we can't increase\n    // their priority other than synchronously flush it.\n    return;\n  }\n\n  var lane = requestUpdateLane(fiber);\n  var root = enqueueConcurrentRenderForLane(fiber, lane);\n\n  if (root !== null) {\n    var eventTime = requestEventTime();\n    scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n  }\n\n  markRetryLaneIfNotHydrated(fiber, lane);\n}\nfunction findHostInstanceWithNoPortals(fiber) {\n  var hostFiber = findCurrentHostFiberWithNoPortals(fiber);\n\n  if (hostFiber === null) {\n    return null;\n  }\n\n  return hostFiber.stateNode;\n}\n\nvar shouldErrorImpl = function (fiber) {\n  return null;\n};\n\nfunction shouldError(fiber) {\n  return shouldErrorImpl(fiber);\n}\n\nvar shouldSuspendImpl = function (fiber) {\n  return false;\n};\n\nfunction shouldSuspend(fiber) {\n  return shouldSuspendImpl(fiber);\n}\nvar overrideHookState = null;\nvar overrideHookStateDeletePath = null;\nvar overrideHookStateRenamePath = null;\nvar overrideProps = null;\nvar overridePropsDeletePath = null;\nvar overridePropsRenamePath = null;\nvar scheduleUpdate = null;\nvar setErrorHandler = null;\nvar setSuspenseHandler = null;\n\n{\n  var copyWithDeleteImpl = function (obj, path, index) {\n    var key = path[index];\n    var updated = isArray(obj) ? obj.slice() : assign({}, obj);\n\n    if (index + 1 === path.length) {\n      if (isArray(updated)) {\n        updated.splice(key, 1);\n      } else {\n        delete updated[key];\n      }\n\n      return updated;\n    } // $FlowFixMe number or string is fine here\n\n\n    updated[key] = copyWithDeleteImpl(obj[key], path, index + 1);\n    return updated;\n  };\n\n  var copyWithDelete = function (obj, path) {\n    return copyWithDeleteImpl(obj, path, 0);\n  };\n\n  var copyWithRenameImpl = function (obj, oldPath, newPath, index) {\n    var oldKey = oldPath[index];\n    var updated = isArray(obj) ? obj.slice() : assign({}, obj);\n\n    if (index + 1 === oldPath.length) {\n      var newKey = newPath[index]; // $FlowFixMe number or string is fine here\n\n      updated[newKey] = updated[oldKey];\n\n      if (isArray(updated)) {\n        updated.splice(oldKey, 1);\n      } else {\n        delete updated[oldKey];\n      }\n    } else {\n      // $FlowFixMe number or string is fine here\n      updated[oldKey] = copyWithRenameImpl( // $FlowFixMe number or string is fine here\n      obj[oldKey], oldPath, newPath, index + 1);\n    }\n\n    return updated;\n  };\n\n  var copyWithRename = function (obj, oldPath, newPath) {\n    if (oldPath.length !== newPath.length) {\n      warn('copyWithRename() expects paths of the same length');\n\n      return;\n    } else {\n      for (var i = 0; i < newPath.length - 1; i++) {\n        if (oldPath[i] !== newPath[i]) {\n          warn('copyWithRename() expects paths to be the same except for the deepest key');\n\n          return;\n        }\n      }\n    }\n\n    return copyWithRenameImpl(obj, oldPath, newPath, 0);\n  };\n\n  var copyWithSetImpl = function (obj, path, index, value) {\n    if (index >= path.length) {\n      return value;\n    }\n\n    var key = path[index];\n    var updated = isArray(obj) ? obj.slice() : assign({}, obj); // $FlowFixMe number or string is fine here\n\n    updated[key] = copyWithSetImpl(obj[key], path, index + 1, value);\n    return updated;\n  };\n\n  var copyWithSet = function (obj, path, value) {\n    return copyWithSetImpl(obj, path, 0, value);\n  };\n\n  var findHook = function (fiber, id) {\n    // For now, the \"id\" of stateful hooks is just the stateful hook index.\n    // This may change in the future with e.g. nested hooks.\n    var currentHook = fiber.memoizedState;\n\n    while (currentHook !== null && id > 0) {\n      currentHook = currentHook.next;\n      id--;\n    }\n\n    return currentHook;\n  }; // Support DevTools editable values for useState and useReducer.\n\n\n  overrideHookState = function (fiber, id, path, value) {\n    var hook = findHook(fiber, id);\n\n    if (hook !== null) {\n      var newState = copyWithSet(hook.memoizedState, path, value);\n      hook.memoizedState = newState;\n      hook.baseState = newState; // We aren't actually adding an update to the queue,\n      // because there is no update we can add for useReducer hooks that won't trigger an error.\n      // (There's no appropriate action type for DevTools overrides.)\n      // As a result though, React will see the scheduled update as a noop and bailout.\n      // Shallow cloning props works as a workaround for now to bypass the bailout check.\n\n      fiber.memoizedProps = assign({}, fiber.memoizedProps);\n      var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n      if (root !== null) {\n        scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n      }\n    }\n  };\n\n  overrideHookStateDeletePath = function (fiber, id, path) {\n    var hook = findHook(fiber, id);\n\n    if (hook !== null) {\n      var newState = copyWithDelete(hook.memoizedState, path);\n      hook.memoizedState = newState;\n      hook.baseState = newState; // We aren't actually adding an update to the queue,\n      // because there is no update we can add for useReducer hooks that won't trigger an error.\n      // (There's no appropriate action type for DevTools overrides.)\n      // As a result though, React will see the scheduled update as a noop and bailout.\n      // Shallow cloning props works as a workaround for now to bypass the bailout check.\n\n      fiber.memoizedProps = assign({}, fiber.memoizedProps);\n      var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n      if (root !== null) {\n        scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n      }\n    }\n  };\n\n  overrideHookStateRenamePath = function (fiber, id, oldPath, newPath) {\n    var hook = findHook(fiber, id);\n\n    if (hook !== null) {\n      var newState = copyWithRename(hook.memoizedState, oldPath, newPath);\n      hook.memoizedState = newState;\n      hook.baseState = newState; // We aren't actually adding an update to the queue,\n      // because there is no update we can add for useReducer hooks that won't trigger an error.\n      // (There's no appropriate action type for DevTools overrides.)\n      // As a result though, React will see the scheduled update as a noop and bailout.\n      // Shallow cloning props works as a workaround for now to bypass the bailout check.\n\n      fiber.memoizedProps = assign({}, fiber.memoizedProps);\n      var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n      if (root !== null) {\n        scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n      }\n    }\n  }; // Support DevTools props for function components, forwardRef, memo, host components, etc.\n\n\n  overrideProps = function (fiber, path, value) {\n    fiber.pendingProps = copyWithSet(fiber.memoizedProps, path, value);\n\n    if (fiber.alternate) {\n      fiber.alternate.pendingProps = fiber.pendingProps;\n    }\n\n    var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n    }\n  };\n\n  overridePropsDeletePath = function (fiber, path) {\n    fiber.pendingProps = copyWithDelete(fiber.memoizedProps, path);\n\n    if (fiber.alternate) {\n      fiber.alternate.pendingProps = fiber.pendingProps;\n    }\n\n    var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n    }\n  };\n\n  overridePropsRenamePath = function (fiber, oldPath, newPath) {\n    fiber.pendingProps = copyWithRename(fiber.memoizedProps, oldPath, newPath);\n\n    if (fiber.alternate) {\n      fiber.alternate.pendingProps = fiber.pendingProps;\n    }\n\n    var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n    }\n  };\n\n  scheduleUpdate = function (fiber) {\n    var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n    }\n  };\n\n  setErrorHandler = function (newShouldErrorImpl) {\n    shouldErrorImpl = newShouldErrorImpl;\n  };\n\n  setSuspenseHandler = function (newShouldSuspendImpl) {\n    shouldSuspendImpl = newShouldSuspendImpl;\n  };\n}\n\nfunction findHostInstanceByFiber(fiber) {\n  var hostFiber = findCurrentHostFiber(fiber);\n\n  if (hostFiber === null) {\n    return null;\n  }\n\n  return hostFiber.stateNode;\n}\n\nfunction emptyFindFiberByHostInstance(instance) {\n  return null;\n}\n\nfunction getCurrentFiberForDevTools() {\n  return current;\n}\n\nfunction injectIntoDevTools(devToolsConfig) {\n  var findFiberByHostInstance = devToolsConfig.findFiberByHostInstance;\n  var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\n  return injectInternals({\n    bundleType: devToolsConfig.bundleType,\n    version: devToolsConfig.version,\n    rendererPackageName: devToolsConfig.rendererPackageName,\n    rendererConfig: devToolsConfig.rendererConfig,\n    overrideHookState: overrideHookState,\n    overrideHookStateDeletePath: overrideHookStateDeletePath,\n    overrideHookStateRenamePath: overrideHookStateRenamePath,\n    overrideProps: overrideProps,\n    overridePropsDeletePath: overridePropsDeletePath,\n    overridePropsRenamePath: overridePropsRenamePath,\n    setErrorHandler: setErrorHandler,\n    setSuspenseHandler: setSuspenseHandler,\n    scheduleUpdate: scheduleUpdate,\n    currentDispatcherRef: ReactCurrentDispatcher,\n    findHostInstanceByFiber: findHostInstanceByFiber,\n    findFiberByHostInstance: findFiberByHostInstance || emptyFindFiberByHostInstance,\n    // React Refresh\n    findHostInstancesForRefresh:  findHostInstancesForRefresh ,\n    scheduleRefresh:  scheduleRefresh ,\n    scheduleRoot:  scheduleRoot ,\n    setRefreshHandler:  setRefreshHandler ,\n    // Enables DevTools to append owner stacks to error messages in DEV mode.\n    getCurrentFiber:  getCurrentFiberForDevTools ,\n    // Enables DevTools to detect reconciler version rather than renderer version\n    // which may not match for third party renderers.\n    reconcilerVersion: ReactVersion\n  });\n}\n\n/* global reportError */\n\nvar defaultOnRecoverableError = typeof reportError === 'function' ? // In modern browsers, reportError will dispatch an error event,\n// emulating an uncaught JavaScript error.\nreportError : function (error) {\n  // In older browsers and test environments, fallback to console.error.\n  // eslint-disable-next-line react-internal/no-production-logging\n  console['error'](error);\n};\n\nfunction ReactDOMRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\n\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render = function (children) {\n  var root = this._internalRoot;\n\n  if (root === null) {\n    throw new Error('Cannot update an unmounted root.');\n  }\n\n  {\n    if (typeof arguments[1] === 'function') {\n      error('render(...): does not support the second callback argument. ' + 'To execute a side effect after rendering, declare it in a component body with useEffect().');\n    } else if (isValidContainer(arguments[1])) {\n      error('You passed a container to the second argument of root.render(...). ' + \"You don't need to pass it again since you already passed it to create the root.\");\n    } else if (typeof arguments[1] !== 'undefined') {\n      error('You passed a second argument to root.render(...) but it only accepts ' + 'one argument.');\n    }\n\n    var container = root.containerInfo;\n\n    if (container.nodeType !== COMMENT_NODE) {\n      var hostInstance = findHostInstanceWithNoPortals(root.current);\n\n      if (hostInstance) {\n        if (hostInstance.parentNode !== container) {\n          error('render(...): It looks like the React-rendered content of the ' + 'root container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + \"root.unmount() to empty a root's container.\");\n        }\n      }\n    }\n  }\n\n  updateContainer(children, root, null, null);\n};\n\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount = function () {\n  {\n    if (typeof arguments[0] === 'function') {\n      error('unmount(...): does not support a callback argument. ' + 'To execute a side effect after rendering, declare it in a component body with useEffect().');\n    }\n  }\n\n  var root = this._internalRoot;\n\n  if (root !== null) {\n    this._internalRoot = null;\n    var container = root.containerInfo;\n\n    {\n      if (isAlreadyRendering()) {\n        error('Attempted to synchronously unmount a root while React was already ' + 'rendering. React cannot finish unmounting the root until the ' + 'current render has completed, which may lead to a race condition.');\n      }\n    }\n\n    flushSync(function () {\n      updateContainer(null, root, null, null);\n    });\n    unmarkContainerAsRoot(container);\n  }\n};\n\nfunction createRoot(container, options) {\n  if (!isValidContainer(container)) {\n    throw new Error('createRoot(...): Target container is not a DOM element.');\n  }\n\n  warnIfReactDOMContainerInDEV(container);\n  var isStrictMode = false;\n  var concurrentUpdatesByDefaultOverride = false;\n  var identifierPrefix = '';\n  var onRecoverableError = defaultOnRecoverableError;\n  var transitionCallbacks = null;\n\n  if (options !== null && options !== undefined) {\n    {\n      if (options.hydrate) {\n        warn('hydrate through createRoot is deprecated. Use ReactDOMClient.hydrateRoot(container, <App />) instead.');\n      } else {\n        if (typeof options === 'object' && options !== null && options.$$typeof === REACT_ELEMENT_TYPE) {\n          error('You passed a JSX element to createRoot. You probably meant to ' + 'call root.render instead. ' + 'Example usage:\\n\\n' + '  let root = createRoot(domContainer);\\n' + '  root.render(<App />);');\n        }\n      }\n    }\n\n    if (options.unstable_strictMode === true) {\n      isStrictMode = true;\n    }\n\n    if (options.identifierPrefix !== undefined) {\n      identifierPrefix = options.identifierPrefix;\n    }\n\n    if (options.onRecoverableError !== undefined) {\n      onRecoverableError = options.onRecoverableError;\n    }\n\n    if (options.transitionCallbacks !== undefined) {\n      transitionCallbacks = options.transitionCallbacks;\n    }\n  }\n\n  var root = createContainer(container, ConcurrentRoot, null, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);\n  markContainerAsRoot(root.current, container);\n  var rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;\n  listenToAllSupportedEvents(rootContainerElement);\n  return new ReactDOMRoot(root);\n}\n\nfunction ReactDOMHydrationRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\n\nfunction scheduleHydration(target) {\n  if (target) {\n    queueExplicitHydrationTarget(target);\n  }\n}\n\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = scheduleHydration;\nfunction hydrateRoot(container, initialChildren, options) {\n  if (!isValidContainer(container)) {\n    throw new Error('hydrateRoot(...): Target container is not a DOM element.');\n  }\n\n  warnIfReactDOMContainerInDEV(container);\n\n  {\n    if (initialChildren === undefined) {\n      error('Must provide initial children as second argument to hydrateRoot. ' + 'Example usage: hydrateRoot(domContainer, <App />)');\n    }\n  } // For now we reuse the whole bag of options since they contain\n  // the hydration callbacks.\n\n\n  var hydrationCallbacks = options != null ? options : null; // TODO: Delete this option\n\n  var mutableSources = options != null && options.hydratedSources || null;\n  var isStrictMode = false;\n  var concurrentUpdatesByDefaultOverride = false;\n  var identifierPrefix = '';\n  var onRecoverableError = defaultOnRecoverableError;\n\n  if (options !== null && options !== undefined) {\n    if (options.unstable_strictMode === true) {\n      isStrictMode = true;\n    }\n\n    if (options.identifierPrefix !== undefined) {\n      identifierPrefix = options.identifierPrefix;\n    }\n\n    if (options.onRecoverableError !== undefined) {\n      onRecoverableError = options.onRecoverableError;\n    }\n  }\n\n  var root = createHydrationContainer(initialChildren, null, container, ConcurrentRoot, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);\n  markContainerAsRoot(root.current, container); // This can't be a comment node since hydration doesn't work on comment nodes anyway.\n\n  listenToAllSupportedEvents(container);\n\n  if (mutableSources) {\n    for (var i = 0; i < mutableSources.length; i++) {\n      var mutableSource = mutableSources[i];\n      registerMutableSourceForHydration(root, mutableSource);\n    }\n  }\n\n  return new ReactDOMHydrationRoot(root);\n}\nfunction isValidContainer(node) {\n  return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || !disableCommentsAsDOMContainers  ));\n} // TODO: Remove this function which also includes comment nodes.\n// We only use it in places that are currently more relaxed.\n\nfunction isValidContainerLegacy(node) {\n  return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || node.nodeType === COMMENT_NODE && node.nodeValue === ' react-mount-point-unstable '));\n}\n\nfunction warnIfReactDOMContainerInDEV(container) {\n  {\n    if (container.nodeType === ELEMENT_NODE && container.tagName && container.tagName.toUpperCase() === 'BODY') {\n      error('createRoot(): Creating roots directly with document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try using a container element created ' + 'for your app.');\n    }\n\n    if (isContainerMarkedAsRoot(container)) {\n      if (container._reactRootContainer) {\n        error('You are calling ReactDOMClient.createRoot() on a container that was previously ' + 'passed to ReactDOM.render(). This is not supported.');\n      } else {\n        error('You are calling ReactDOMClient.createRoot() on a container that ' + 'has already been passed to createRoot() before. Instead, call ' + 'root.render() on the existing root instead if you want to update it.');\n      }\n    }\n  }\n}\n\nvar ReactCurrentOwner$3 = ReactSharedInternals.ReactCurrentOwner;\nvar topLevelUpdateWarnings;\n\n{\n  topLevelUpdateWarnings = function (container) {\n    if (container._reactRootContainer && container.nodeType !== COMMENT_NODE) {\n      var hostInstance = findHostInstanceWithNoPortals(container._reactRootContainer.current);\n\n      if (hostInstance) {\n        if (hostInstance.parentNode !== container) {\n          error('render(...): It looks like the React-rendered content of this ' + 'container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + 'ReactDOM.unmountComponentAtNode to empty a container.');\n        }\n      }\n    }\n\n    var isRootRenderedBySomeReact = !!container._reactRootContainer;\n    var rootEl = getReactRootElementInContainer(container);\n    var hasNonRootReactChild = !!(rootEl && getInstanceFromNode(rootEl));\n\n    if (hasNonRootReactChild && !isRootRenderedBySomeReact) {\n      error('render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.');\n    }\n\n    if (container.nodeType === ELEMENT_NODE && container.tagName && container.tagName.toUpperCase() === 'BODY') {\n      error('render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.');\n    }\n  };\n}\n\nfunction getReactRootElementInContainer(container) {\n  if (!container) {\n    return null;\n  }\n\n  if (container.nodeType === DOCUMENT_NODE) {\n    return container.documentElement;\n  } else {\n    return container.firstChild;\n  }\n}\n\nfunction noopOnRecoverableError() {// This isn't reachable because onRecoverableError isn't called in the\n  // legacy API.\n}\n\nfunction legacyCreateRootFromDOMContainer(container, initialChildren, parentComponent, callback, isHydrationContainer) {\n  if (isHydrationContainer) {\n    if (typeof callback === 'function') {\n      var originalCallback = callback;\n\n      callback = function () {\n        var instance = getPublicRootInstance(root);\n        originalCallback.call(instance);\n      };\n    }\n\n    var root = createHydrationContainer(initialChildren, callback, container, LegacyRoot, null, // hydrationCallbacks\n    false, // isStrictMode\n    false, // concurrentUpdatesByDefaultOverride,\n    '', // identifierPrefix\n    noopOnRecoverableError);\n    container._reactRootContainer = root;\n    markContainerAsRoot(root.current, container);\n    var rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;\n    listenToAllSupportedEvents(rootContainerElement);\n    flushSync();\n    return root;\n  } else {\n    // First clear any existing content.\n    var rootSibling;\n\n    while (rootSibling = container.lastChild) {\n      container.removeChild(rootSibling);\n    }\n\n    if (typeof callback === 'function') {\n      var _originalCallback = callback;\n\n      callback = function () {\n        var instance = getPublicRootInstance(_root);\n\n        _originalCallback.call(instance);\n      };\n    }\n\n    var _root = createContainer(container, LegacyRoot, null, // hydrationCallbacks\n    false, // isStrictMode\n    false, // concurrentUpdatesByDefaultOverride,\n    '', // identifierPrefix\n    noopOnRecoverableError);\n\n    container._reactRootContainer = _root;\n    markContainerAsRoot(_root.current, container);\n\n    var _rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;\n\n    listenToAllSupportedEvents(_rootContainerElement); // Initial mount should not be batched.\n\n    flushSync(function () {\n      updateContainer(initialChildren, _root, parentComponent, callback);\n    });\n    return _root;\n  }\n}\n\nfunction warnOnInvalidCallback$1(callback, callerName) {\n  {\n    if (callback !== null && typeof callback !== 'function') {\n      error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);\n    }\n  }\n}\n\nfunction legacyRenderSubtreeIntoContainer(parentComponent, children, container, forceHydrate, callback) {\n  {\n    topLevelUpdateWarnings(container);\n    warnOnInvalidCallback$1(callback === undefined ? null : callback, 'render');\n  }\n\n  var maybeRoot = container._reactRootContainer;\n  var root;\n\n  if (!maybeRoot) {\n    // Initial mount\n    root = legacyCreateRootFromDOMContainer(container, children, parentComponent, callback, forceHydrate);\n  } else {\n    root = maybeRoot;\n\n    if (typeof callback === 'function') {\n      var originalCallback = callback;\n\n      callback = function () {\n        var instance = getPublicRootInstance(root);\n        originalCallback.call(instance);\n      };\n    } // Update\n\n\n    updateContainer(children, root, parentComponent, callback);\n  }\n\n  return getPublicRootInstance(root);\n}\n\nfunction findDOMNode(componentOrElement) {\n  {\n    var owner = ReactCurrentOwner$3.current;\n\n    if (owner !== null && owner.stateNode !== null) {\n      var warnedAboutRefsInRender = owner.stateNode._warnedAboutRefsInRender;\n\n      if (!warnedAboutRefsInRender) {\n        error('%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentNameFromType(owner.type) || 'A component');\n      }\n\n      owner.stateNode._warnedAboutRefsInRender = true;\n    }\n  }\n\n  if (componentOrElement == null) {\n    return null;\n  }\n\n  if (componentOrElement.nodeType === ELEMENT_NODE) {\n    return componentOrElement;\n  }\n\n  {\n    return findHostInstanceWithWarning(componentOrElement, 'findDOMNode');\n  }\n}\nfunction hydrate(element, container, callback) {\n  {\n    error('ReactDOM.hydrate is no longer supported in React 18. Use hydrateRoot ' + 'instead. Until you switch to the new API, your app will behave as ' + \"if it's running React 17. Learn \" + 'more: https://reactjs.org/link/switch-to-createroot');\n  }\n\n  if (!isValidContainerLegacy(container)) {\n    throw new Error('Target container is not a DOM element.');\n  }\n\n  {\n    var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;\n\n    if (isModernRoot) {\n      error('You are calling ReactDOM.hydrate() on a container that was previously ' + 'passed to ReactDOMClient.createRoot(). This is not supported. ' + 'Did you mean to call hydrateRoot(container, element)?');\n    }\n  } // TODO: throw or warn if we couldn't hydrate?\n\n\n  return legacyRenderSubtreeIntoContainer(null, element, container, true, callback);\n}\nfunction render(element, container, callback) {\n  {\n    error('ReactDOM.render is no longer supported in React 18. Use createRoot ' + 'instead. Until you switch to the new API, your app will behave as ' + \"if it's running React 17. Learn \" + 'more: https://reactjs.org/link/switch-to-createroot');\n  }\n\n  if (!isValidContainerLegacy(container)) {\n    throw new Error('Target container is not a DOM element.');\n  }\n\n  {\n    var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;\n\n    if (isModernRoot) {\n      error('You are calling ReactDOM.render() on a container that was previously ' + 'passed to ReactDOMClient.createRoot(). This is not supported. ' + 'Did you mean to call root.render(element)?');\n    }\n  }\n\n  return legacyRenderSubtreeIntoContainer(null, element, container, false, callback);\n}\nfunction unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {\n  {\n    error('ReactDOM.unstable_renderSubtreeIntoContainer() is no longer supported ' + 'in React 18. Consider using a portal instead. Until you switch to ' + \"the createRoot API, your app will behave as if it's running React \" + '17. Learn more: https://reactjs.org/link/switch-to-createroot');\n  }\n\n  if (!isValidContainerLegacy(containerNode)) {\n    throw new Error('Target container is not a DOM element.');\n  }\n\n  if (parentComponent == null || !has(parentComponent)) {\n    throw new Error('parentComponent must be a valid React Component');\n  }\n\n  return legacyRenderSubtreeIntoContainer(parentComponent, element, containerNode, false, callback);\n}\nfunction unmountComponentAtNode(container) {\n  if (!isValidContainerLegacy(container)) {\n    throw new Error('unmountComponentAtNode(...): Target container is not a DOM element.');\n  }\n\n  {\n    var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;\n\n    if (isModernRoot) {\n      error('You are calling ReactDOM.unmountComponentAtNode() on a container that was previously ' + 'passed to ReactDOMClient.createRoot(). This is not supported. Did you mean to call root.unmount()?');\n    }\n  }\n\n  if (container._reactRootContainer) {\n    {\n      var rootEl = getReactRootElementInContainer(container);\n      var renderedByDifferentReact = rootEl && !getInstanceFromNode(rootEl);\n\n      if (renderedByDifferentReact) {\n        error(\"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by another copy of React.');\n      }\n    } // Unmount should not be batched.\n\n\n    flushSync(function () {\n      legacyRenderSubtreeIntoContainer(null, null, container, false, function () {\n        // $FlowFixMe This should probably use `delete container._reactRootContainer`\n        container._reactRootContainer = null;\n        unmarkContainerAsRoot(container);\n      });\n    }); // If you call unmountComponentAtNode twice in quick succession, you'll\n    // get `true` twice. That's probably fine?\n\n    return true;\n  } else {\n    {\n      var _rootEl = getReactRootElementInContainer(container);\n\n      var hasNonRootReactChild = !!(_rootEl && getInstanceFromNode(_rootEl)); // Check if the container itself is a React root node.\n\n      var isContainerReactRoot = container.nodeType === ELEMENT_NODE && isValidContainerLegacy(container.parentNode) && !!container.parentNode._reactRootContainer;\n\n      if (hasNonRootReactChild) {\n        error(\"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.');\n      }\n    }\n\n    return false;\n  }\n}\n\nsetAttemptSynchronousHydration(attemptSynchronousHydration$1);\nsetAttemptContinuousHydration(attemptContinuousHydration$1);\nsetAttemptHydrationAtCurrentPriority(attemptHydrationAtCurrentPriority$1);\nsetGetCurrentUpdatePriority(getCurrentUpdatePriority);\nsetAttemptHydrationAtPriority(runWithPriority);\n\n{\n  if (typeof Map !== 'function' || // $FlowIssue Flow incorrectly thinks Map has no prototype\n  Map.prototype == null || typeof Map.prototype.forEach !== 'function' || typeof Set !== 'function' || // $FlowIssue Flow incorrectly thinks Set has no prototype\n  Set.prototype == null || typeof Set.prototype.clear !== 'function' || typeof Set.prototype.forEach !== 'function') {\n    error('React depends on Map and Set built-in types. Make sure that you load a ' + 'polyfill in older browsers. https://reactjs.org/link/react-polyfills');\n  }\n}\n\nsetRestoreImplementation(restoreControlledState$3);\nsetBatchingImplementation(batchedUpdates$1, discreteUpdates, flushSync);\n\nfunction createPortal$1(children, container) {\n  var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n  if (!isValidContainer(container)) {\n    throw new Error('Target container is not a DOM element.');\n  } // TODO: pass ReactDOM portal implementation as third argument\n  // $FlowFixMe The Flow type is opaque but there's no way to actually create it.\n\n\n  return createPortal(children, container, null, key);\n}\n\nfunction renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {\n  return unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback);\n}\n\nvar Internals = {\n  usingClientEntryPoint: false,\n  // Keep in sync with ReactTestUtils.js.\n  // This is an array for better minification.\n  Events: [getInstanceFromNode, getNodeFromInstance, getFiberCurrentPropsFromNode, enqueueStateRestore, restoreStateIfNeeded, batchedUpdates$1]\n};\n\nfunction createRoot$1(container, options) {\n  {\n    if (!Internals.usingClientEntryPoint && !false) {\n      error('You are importing createRoot from \"react-dom\" which is not supported. ' + 'You should instead import it from \"react-dom/client\".');\n    }\n  }\n\n  return createRoot(container, options);\n}\n\nfunction hydrateRoot$1(container, initialChildren, options) {\n  {\n    if (!Internals.usingClientEntryPoint && !false) {\n      error('You are importing hydrateRoot from \"react-dom\" which is not supported. ' + 'You should instead import it from \"react-dom/client\".');\n    }\n  }\n\n  return hydrateRoot(container, initialChildren, options);\n} // Overload the definition to the two valid signatures.\n// Warning, this opts-out of checking the function body.\n\n\n// eslint-disable-next-line no-redeclare\nfunction flushSync$1(fn) {\n  {\n    if (isAlreadyRendering()) {\n      error('flushSync was called from inside a lifecycle method. React cannot ' + 'flush when React is already rendering. Consider moving this call to ' + 'a scheduler task or micro task.');\n    }\n  }\n\n  return flushSync(fn);\n}\nvar foundDevTools = injectIntoDevTools({\n  findFiberByHostInstance: getClosestInstanceFromNode,\n  bundleType:  1 ,\n  version: ReactVersion,\n  rendererPackageName: 'react-dom'\n});\n\n{\n  if (!foundDevTools && canUseDOM && window.top === window.self) {\n    // If we're in Chrome or Firefox, provide a download link if not installed.\n    if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n      var protocol = window.location.protocol; // Don't warn in exotic cases like chrome-extension://.\n\n      if (/^(https?|file):$/.test(protocol)) {\n        // eslint-disable-next-line react-internal/no-production-logging\n        console.info('%cDownload the React DevTools ' + 'for a better development experience: ' + 'https://reactjs.org/link/react-devtools' + (protocol === 'file:' ? '\\nYou might need to use a local HTTP server (instead of file://): ' + 'https://reactjs.org/link/react-devtools-faq' : ''), 'font-weight:bold');\n      }\n    }\n  }\n}\n\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = Internals;\nexports.createPortal = createPortal$1;\nexports.createRoot = createRoot$1;\nexports.findDOMNode = findDOMNode;\nexports.flushSync = flushSync$1;\nexports.hydrate = hydrate;\nexports.hydrateRoot = hydrateRoot$1;\nexports.render = render;\nexports.unmountComponentAtNode = unmountComponentAtNode;\nexports.unstable_batchedUpdates = batchedUpdates$1;\nexports.unstable_renderSubtreeIntoContainer = renderSubtreeIntoContainer;\nexports.version = ReactVersion;\n          /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n        \n  })();\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dom/cjs/react-dom.development.js?");

/***/ }),

/***/ "./node_modules/react-dom/client.js":
/*!******************************************!*\
  !*** ./node_modules/react-dom/client.js ***!
  \******************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar m = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\nif (false) {} else {\n  var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n  exports.createRoot = function(c, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.createRoot(c, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n  exports.hydrateRoot = function(c, h, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.hydrateRoot(c, h, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dom/client.js?");

/***/ }),

/***/ "./node_modules/react-dom/index.js":
/*!*****************************************!*\
  !*** ./node_modules/react-dom/index.js ***!
  \*****************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (true) {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ./cjs/react-dom.development.js */ \"./node_modules/react-dom/cjs/react-dom.development.js\");\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-dom/index.js?");

/***/ }),

/***/ "./node_modules/react-markdown/node_modules/react-is/cjs/react-is.development.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/react-markdown/node_modules/react-is/cjs/react-is.development.js ***!
  \***************************************************************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n  (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n          case REACT_SUSPENSE_LIST_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_SERVER_CONTEXT_TYPE:\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n    }\n  }\n\n  return false;\n}\nfunction isConcurrentMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n      hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n    }\n  }\n\n  return false;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n  return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-markdown/node_modules/react-is/cjs/react-is.development.js?");

/***/ }),

/***/ "./node_modules/react-markdown/node_modules/react-is/index.js":
/*!********************************************************************!*\
  !*** ./node_modules/react-markdown/node_modules/react-is/index.js ***!
  \********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ \"./node_modules/react-markdown/node_modules/react-is/cjs/react-is.development.js\");\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-markdown/node_modules/react-is/index.js?");

/***/ }),

/***/ "./node_modules/react-plotly.js/factory.js":
/*!*************************************************!*\
  !*** ./node_modules/react-plotly.js/factory.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = plotComponentFactory;\n\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n// The naming convention is:\n//   - events are attached as `'plotly_' + eventName.toLowerCase()`\n//   - react props are `'on' + eventName`\nvar eventNames = ['AfterExport', 'AfterPlot', 'Animated', 'AnimatingFrame', 'AnimationInterrupted', 'AutoSize', 'BeforeExport', 'BeforeHover', 'ButtonClicked', 'Click', 'ClickAnnotation', 'Deselect', 'DoubleClick', 'Framework', 'Hover', 'LegendClick', 'LegendDoubleClick', 'Relayout', 'Relayouting', 'Restyle', 'Redraw', 'Selected', 'Selecting', 'SliderChange', 'SliderEnd', 'SliderStart', 'SunburstClick', 'Transitioning', 'TransitionInterrupted', 'Unhover', 'WebGlContextLost'];\nvar updateEvents = ['plotly_restyle', 'plotly_redraw', 'plotly_relayout', 'plotly_relayouting', 'plotly_doubleclick', 'plotly_animated', 'plotly_sunburstclick']; // Check if a window is available since SSR (server-side rendering)\n// breaks unnecessarily if you try to use it server-side.\n\nvar isBrowser = typeof window !== 'undefined';\n\nfunction plotComponentFactory(Plotly) {\n  var PlotlyComponent = /*#__PURE__*/function (_Component) {\n    _inherits(PlotlyComponent, _Component);\n\n    var _super = _createSuper(PlotlyComponent);\n\n    function PlotlyComponent(props) {\n      var _this;\n\n      _classCallCheck(this, PlotlyComponent);\n\n      _this = _super.call(this, props);\n      _this.p = Promise.resolve();\n      _this.resizeHandler = null;\n      _this.handlers = {};\n      _this.syncWindowResize = _this.syncWindowResize.bind(_assertThisInitialized(_this));\n      _this.syncEventHandlers = _this.syncEventHandlers.bind(_assertThisInitialized(_this));\n      _this.attachUpdateEvents = _this.attachUpdateEvents.bind(_assertThisInitialized(_this));\n      _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));\n      _this.handleUpdate = _this.handleUpdate.bind(_assertThisInitialized(_this));\n      _this.figureCallback = _this.figureCallback.bind(_assertThisInitialized(_this));\n      _this.updatePlotly = _this.updatePlotly.bind(_assertThisInitialized(_this));\n      return _this;\n    }\n\n    _createClass(PlotlyComponent, [{\n      key: \"updatePlotly\",\n      value: function updatePlotly(shouldInvokeResizeHandler, figureCallbackFunction, shouldAttachUpdateEvents) {\n        var _this2 = this;\n\n        this.p = this.p.then(function () {\n          if (_this2.unmounting) {\n            return;\n          }\n\n          if (!_this2.el) {\n            throw new Error('Missing element reference');\n          } // eslint-disable-next-line consistent-return\n\n\n          return Plotly.react(_this2.el, {\n            data: _this2.props.data,\n            layout: _this2.props.layout,\n            config: _this2.props.config,\n            frames: _this2.props.frames\n          });\n        }).then(function () {\n          if (_this2.unmounting) {\n            return;\n          }\n\n          _this2.syncWindowResize(shouldInvokeResizeHandler);\n\n          _this2.syncEventHandlers();\n\n          _this2.figureCallback(figureCallbackFunction);\n\n          if (shouldAttachUpdateEvents) {\n            _this2.attachUpdateEvents();\n          }\n        })[\"catch\"](function (err) {\n          if (_this2.props.onError) {\n            _this2.props.onError(err);\n          }\n        });\n      }\n    }, {\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        this.unmounting = false;\n        this.updatePlotly(true, this.props.onInitialized, true);\n      }\n    }, {\n      key: \"componentDidUpdate\",\n      value: function componentDidUpdate(prevProps) {\n        this.unmounting = false; // frames *always* changes identity so fall back to check length only :(\n\n        var numPrevFrames = prevProps.frames && prevProps.frames.length ? prevProps.frames.length : 0;\n        var numNextFrames = this.props.frames && this.props.frames.length ? this.props.frames.length : 0;\n        var figureChanged = !(prevProps.layout === this.props.layout && prevProps.data === this.props.data && prevProps.config === this.props.config && numNextFrames === numPrevFrames);\n        var revisionDefined = prevProps.revision !== void 0;\n        var revisionChanged = prevProps.revision !== this.props.revision;\n\n        if (!figureChanged && (!revisionDefined || revisionDefined && !revisionChanged)) {\n          return;\n        }\n\n        this.updatePlotly(false, this.props.onUpdate, false);\n      }\n    }, {\n      key: \"componentWillUnmount\",\n      value: function componentWillUnmount() {\n        this.unmounting = true;\n        this.figureCallback(this.props.onPurge);\n\n        if (this.resizeHandler && isBrowser) {\n          window.removeEventListener('resize', this.resizeHandler);\n          this.resizeHandler = null;\n        }\n\n        this.removeUpdateEvents();\n        Plotly.purge(this.el);\n      }\n    }, {\n      key: \"attachUpdateEvents\",\n      value: function attachUpdateEvents() {\n        var _this3 = this;\n\n        if (!this.el || !this.el.removeListener) {\n          return;\n        }\n\n        updateEvents.forEach(function (updateEvent) {\n          _this3.el.on(updateEvent, _this3.handleUpdate);\n        });\n      }\n    }, {\n      key: \"removeUpdateEvents\",\n      value: function removeUpdateEvents() {\n        var _this4 = this;\n\n        if (!this.el || !this.el.removeListener) {\n          return;\n        }\n\n        updateEvents.forEach(function (updateEvent) {\n          _this4.el.removeListener(updateEvent, _this4.handleUpdate);\n        });\n      }\n    }, {\n      key: \"handleUpdate\",\n      value: function handleUpdate() {\n        this.figureCallback(this.props.onUpdate);\n      }\n    }, {\n      key: \"figureCallback\",\n      value: function figureCallback(callback) {\n        if (typeof callback === 'function') {\n          var _this$el = this.el,\n              data = _this$el.data,\n              layout = _this$el.layout;\n          var frames = this.el._transitionData ? this.el._transitionData._frames : null;\n          var figure = {\n            data: data,\n            layout: layout,\n            frames: frames\n          };\n          callback(figure, this.el);\n        }\n      }\n    }, {\n      key: \"syncWindowResize\",\n      value: function syncWindowResize(invoke) {\n        var _this5 = this;\n\n        if (!isBrowser) {\n          return;\n        }\n\n        if (this.props.useResizeHandler && !this.resizeHandler) {\n          this.resizeHandler = function () {\n            return Plotly.Plots.resize(_this5.el);\n          };\n\n          window.addEventListener('resize', this.resizeHandler);\n\n          if (invoke) {\n            this.resizeHandler();\n          }\n        } else if (!this.props.useResizeHandler && this.resizeHandler) {\n          window.removeEventListener('resize', this.resizeHandler);\n          this.resizeHandler = null;\n        }\n      }\n    }, {\n      key: \"getRef\",\n      value: function getRef(el) {\n        this.el = el;\n\n        if (this.props.debug && isBrowser) {\n          window.gd = this.el;\n        }\n      } // Attach and remove event handlers as they're added or removed from props:\n\n    }, {\n      key: \"syncEventHandlers\",\n      value: function syncEventHandlers() {\n        var _this6 = this;\n\n        eventNames.forEach(function (eventName) {\n          var prop = _this6.props['on' + eventName];\n          var handler = _this6.handlers[eventName];\n          var hasHandler = Boolean(handler);\n\n          if (prop && !hasHandler) {\n            _this6.addEventHandler(eventName, prop);\n          } else if (!prop && hasHandler) {\n            // Needs to be removed:\n            _this6.removeEventHandler(eventName);\n          } else if (prop && hasHandler && prop !== handler) {\n            // replace the handler\n            _this6.removeEventHandler(eventName);\n\n            _this6.addEventHandler(eventName, prop);\n          }\n        });\n      }\n    }, {\n      key: \"addEventHandler\",\n      value: function addEventHandler(eventName, prop) {\n        this.handlers[eventName] = prop;\n        this.el.on(this.getPlotlyEventName(eventName), this.handlers[eventName]);\n      }\n    }, {\n      key: \"removeEventHandler\",\n      value: function removeEventHandler(eventName) {\n        this.el.removeListener(this.getPlotlyEventName(eventName), this.handlers[eventName]);\n        delete this.handlers[eventName];\n      }\n    }, {\n      key: \"getPlotlyEventName\",\n      value: function getPlotlyEventName(eventName) {\n        return 'plotly_' + eventName.toLowerCase();\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n          id: this.props.divId,\n          style: this.props.style,\n          ref: this.getRef,\n          className: this.props.className\n        });\n      }\n    }]);\n\n    return PlotlyComponent;\n  }(_react.Component);\n\n  PlotlyComponent.propTypes = {\n    data: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].object),\n    config: _propTypes[\"default\"].object,\n    layout: _propTypes[\"default\"].object,\n    frames: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].object),\n    revision: _propTypes[\"default\"].number,\n    onInitialized: _propTypes[\"default\"].func,\n    onPurge: _propTypes[\"default\"].func,\n    onError: _propTypes[\"default\"].func,\n    onUpdate: _propTypes[\"default\"].func,\n    debug: _propTypes[\"default\"].bool,\n    style: _propTypes[\"default\"].object,\n    className: _propTypes[\"default\"].string,\n    useResizeHandler: _propTypes[\"default\"].bool,\n    divId: _propTypes[\"default\"].string\n  };\n  eventNames.forEach(function (eventName) {\n    PlotlyComponent.propTypes['on' + eventName] = _propTypes[\"default\"].func;\n  });\n  PlotlyComponent.defaultProps = {\n    debug: false,\n    useResizeHandler: false,\n    data: [],\n    style: {\n      position: 'relative',\n      display: 'inline-block'\n    }\n  };\n  return PlotlyComponent;\n}\n//# sourceMappingURL=factory.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-plotly.js/factory.js?");

/***/ }),

/***/ "./node_modules/react-plotly.js/react-plotly.js":
/*!******************************************************!*\
  !*** ./node_modules/react-plotly.js/react-plotly.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\n\nvar _factory = _interopRequireDefault(__webpack_require__(/*! ./factory */ \"./node_modules/react-plotly.js/factory.js\"));\n\nvar _plotly = _interopRequireDefault(__webpack_require__(/*! plotly.js/dist/plotly */ \"./node_modules/plotly.js/dist/plotly.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar PlotComponent = (0, _factory[\"default\"])(_plotly[\"default\"]);\nvar _default = PlotComponent;\nexports[\"default\"] = _default;\n//# sourceMappingURL=react-plotly.js.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-plotly.js/react-plotly.js?");

/***/ }),

/***/ "./node_modules/react-scroll/modules/components/Button.js":
/*!****************************************************************!*\
  !*** ./node_modules/react-scroll/modules/components/Button.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar _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; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollLink = __webpack_require__(/*! ../mixins/scroll-link */ \"./node_modules/react-scroll/modules/mixins/scroll-link.js\");\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ButtonElement = function (_React$Component) {\n  _inherits(ButtonElement, _React$Component);\n\n  function ButtonElement() {\n    _classCallCheck(this, ButtonElement);\n\n    return _possibleConstructorReturn(this, (ButtonElement.__proto__ || Object.getPrototypeOf(ButtonElement)).apply(this, arguments));\n  }\n\n  _createClass(ButtonElement, [{\n    key: 'render',\n    value: function render() {\n      return _react2.default.createElement(\n        'input',\n        this.props,\n        this.props.children\n      );\n    }\n  }]);\n\n  return ButtonElement;\n}(_react2.default.Component);\n\n;\n\nexports[\"default\"] = (0, _scrollLink2.default)(ButtonElement);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-scroll/modules/components/Button.js?");

/***/ }),

/***/ "./node_modules/react-scroll/modules/components/Element.js":
/*!*****************************************************************!*\
  !*** ./node_modules/react-scroll/modules/components/Element.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _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; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollElement = __webpack_require__(/*! ../mixins/scroll-element */ \"./node_modules/react-scroll/modules/mixins/scroll-element.js\");\n\nvar _scrollElement2 = _interopRequireDefault(_scrollElement);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ElementWrapper = function (_React$Component) {\n  _inherits(ElementWrapper, _React$Component);\n\n  function ElementWrapper() {\n    _classCallCheck(this, ElementWrapper);\n\n    return _possibleConstructorReturn(this, (ElementWrapper.__proto__ || Object.getPrototypeOf(ElementWrapper)).apply(this, arguments));\n  }\n\n  _createClass(ElementWrapper, [{\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      // Remove `parentBindings` from props\n      var newProps = _extends({}, this.props);\n      if (newProps.parentBindings) {\n        delete newProps.parentBindings;\n      }\n\n      return _react2.default.createElement(\n        'div',\n        _extends({}, newProps, { ref: function ref(el) {\n            _this2.props.parentBindings.domNode = el;\n          } }),\n        this.props.children\n      );\n    }\n  }]);\n\n  return ElementWrapper;\n}(_react2.default.Component);\n\n;\n\nElementWrapper.propTypes = {\n  name: _propTypes2.default.string,\n  id: _propTypes2.default.string\n};\n\nexports[\"default\"] = (0, _scrollElement2.default)(ElementWrapper);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-scroll/modules/components/Element.js?");

/***/ }),

/***/ "./node_modules/react-scroll/modules/components/Link.js":
/*!**************************************************************!*\
  !*** ./node_modules/react-scroll/modules/components/Link.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollLink = __webpack_require__(/*! ../mixins/scroll-link */ \"./node_modules/react-scroll/modules/mixins/scroll-link.js\");\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar LinkElement = function (_React$Component) {\n  _inherits(LinkElement, _React$Component);\n\n  function LinkElement() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, LinkElement);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = LinkElement.__proto__ || Object.getPrototypeOf(LinkElement)).call.apply(_ref, [this].concat(args))), _this), _this.render = function () {\n      return _react2.default.createElement(\n        'a',\n        _this.props,\n        _this.props.children\n      );\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  return LinkElement;\n}(_react2.default.Component);\n\n;\n\nexports[\"default\"] = (0, _scrollLink2.default)(LinkElement);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-scroll/modules/components/Link.js?");

/***/ }),

/***/ "./node_modules/react-scroll/modules/index.js":
/*!****************************************************!*\
  !*** ./node_modules/react-scroll/modules/index.js ***!
  \****************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.Helpers = exports.ScrollElement = exports.ScrollLink = exports.animateScroll = exports.scrollSpy = exports.Events = exports.scroller = exports.Element = exports.Button = exports.Link = undefined;\n\nvar _Link = __webpack_require__(/*! ./components/Link.js */ \"./node_modules/react-scroll/modules/components/Link.js\");\n\nvar _Link2 = _interopRequireDefault(_Link);\n\nvar _Button = __webpack_require__(/*! ./components/Button.js */ \"./node_modules/react-scroll/modules/components/Button.js\");\n\nvar _Button2 = _interopRequireDefault(_Button);\n\nvar _Element = __webpack_require__(/*! ./components/Element.js */ \"./node_modules/react-scroll/modules/components/Element.js\");\n\nvar _Element2 = _interopRequireDefault(_Element);\n\nvar _scroller = __webpack_require__(/*! ./mixins/scroller.js */ \"./node_modules/react-scroll/modules/mixins/scroller.js\");\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _scrollEvents = __webpack_require__(/*! ./mixins/scroll-events.js */ \"./node_modules/react-scroll/modules/mixins/scroll-events.js\");\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nvar _scrollSpy = __webpack_require__(/*! ./mixins/scroll-spy.js */ \"./node_modules/react-scroll/modules/mixins/scroll-spy.js\");\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _animateScroll = __webpack_require__(/*! ./mixins/animate-scroll.js */ \"./node_modules/react-scroll/modules/mixins/animate-scroll.js\");\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollLink = __webpack_require__(/*! ./mixins/scroll-link.js */ \"./node_modules/react-scroll/modules/mixins/scroll-link.js\");\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nvar _scrollElement = __webpack_require__(/*! ./mixins/scroll-element.js */ \"./node_modules/react-scroll/modules/mixins/scroll-element.js\");\n\nvar _scrollElement2 = _interopRequireDefault(_scrollElement);\n\nvar _Helpers = __webpack_require__(/*! ./mixins/Helpers.js */ \"./node_modules/react-scroll/modules/mixins/Helpers.js\");\n\nvar _Helpers2 = _interopRequireDefault(_Helpers);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Link = _Link2.default;\nexports.Button = _Button2.default;\nexports.Element = _Element2.default;\nexports.scroller = _scroller2.default;\nexports.Events = _scrollEvents2.default;\nexports.scrollSpy = _scrollSpy2.default;\nexports.animateScroll = _animateScroll2.default;\nexports.ScrollLink = _scrollLink2.default;\nexports.ScrollElement = _scrollElement2.default;\nexports.Helpers = _Helpers2.default;\nexports[\"default\"] = { Link: _Link2.default, Button: _Button2.default, Element: _Element2.default, scroller: _scroller2.default, Events: _scrollEvents2.default, scrollSpy: _scrollSpy2.default, animateScroll: _animateScroll2.default, ScrollLink: _scrollLink2.default, ScrollElement: _scrollElement2.default, Helpers: _Helpers2.default };\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-scroll/modules/index.js?");

/***/ }),

/***/ "./node_modules/react-scroll/modules/mixins/Helpers.js":
/*!*************************************************************!*\
  !*** ./node_modules/react-scroll/modules/mixins/Helpers.js ***!
  \*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\n\n/* DEPRECATED */\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _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; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\nvar ReactDOM = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/react-scroll/modules/mixins/utils.js\");\nvar scrollSpy = __webpack_require__(/*! ./scroll-spy */ \"./node_modules/react-scroll/modules/mixins/scroll-spy.js\");\nvar defaultScroller = __webpack_require__(/*! ./scroller */ \"./node_modules/react-scroll/modules/mixins/scroller.js\");\nvar PropTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\nvar scrollHash = __webpack_require__(/*! ./scroll-hash */ \"./node_modules/react-scroll/modules/mixins/scroll-hash.js\");\n\nvar protoTypes = {\n  to: PropTypes.string.isRequired,\n  containerId: PropTypes.string,\n  container: PropTypes.object,\n  activeClass: PropTypes.string,\n  spy: PropTypes.bool,\n  smooth: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  offset: PropTypes.number,\n  delay: PropTypes.number,\n  isDynamic: PropTypes.bool,\n  onClick: PropTypes.func,\n  duration: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n  absolute: PropTypes.bool,\n  onSetActive: PropTypes.func,\n  onSetInactive: PropTypes.func,\n  ignoreCancelEvents: PropTypes.bool,\n  hashSpy: PropTypes.bool,\n  spyThrottle: PropTypes.number\n};\n\nvar Helpers = {\n  Scroll: function Scroll(Component, customScroller) {\n\n    console.warn(\"Helpers.Scroll is deprecated since v1.7.0\");\n\n    var scroller = customScroller || defaultScroller;\n\n    var Scroll = function (_React$Component) {\n      _inherits(Scroll, _React$Component);\n\n      function Scroll(props) {\n        _classCallCheck(this, Scroll);\n\n        var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, props));\n\n        _initialiseProps.call(_this);\n\n        _this.state = {\n          active: false\n        };\n        return _this;\n      }\n\n      _createClass(Scroll, [{\n        key: 'getScrollSpyContainer',\n        value: function getScrollSpyContainer() {\n          var containerId = this.props.containerId;\n          var container = this.props.container;\n\n          if (containerId) {\n            return document.getElementById(containerId);\n          }\n\n          if (container && container.nodeType) {\n            return container;\n          }\n\n          return document;\n        }\n      }, {\n        key: 'componentDidMount',\n        value: function componentDidMount() {\n          if (this.props.spy || this.props.hashSpy) {\n            var scrollSpyContainer = this.getScrollSpyContainer();\n\n            if (!scrollSpy.isMounted(scrollSpyContainer)) {\n              scrollSpy.mount(scrollSpyContainer, this.props.spyThrottle);\n            }\n\n            if (this.props.hashSpy) {\n              if (!scrollHash.isMounted()) {\n                scrollHash.mount(scroller);\n              }\n              scrollHash.mapContainer(this.props.to, scrollSpyContainer);\n            }\n\n            if (this.props.spy) {\n              scrollSpy.addStateHandler(this.stateHandler);\n            }\n\n            scrollSpy.addSpyHandler(this.spyHandler, scrollSpyContainer);\n\n            this.setState({\n              container: scrollSpyContainer\n            });\n          }\n        }\n      }, {\n        key: 'componentWillUnmount',\n        value: function componentWillUnmount() {\n          scrollSpy.unmount(this.stateHandler, this.spyHandler);\n        }\n      }, {\n        key: 'render',\n        value: function render() {\n          var className = \"\";\n\n          if (this.state && this.state.active) {\n            className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n          } else {\n            className = this.props.className;\n          }\n\n          var props = _extends({}, this.props);\n\n          for (var prop in protoTypes) {\n            if (props.hasOwnProperty(prop)) {\n              delete props[prop];\n            }\n          }\n\n          props.className = className;\n          props.onClick = this.handleClick;\n\n          return React.createElement(Component, props);\n        }\n      }]);\n\n      return Scroll;\n    }(React.Component);\n\n    var _initialiseProps = function _initialiseProps() {\n      var _this2 = this;\n\n      this.scrollTo = function (to, props) {\n        scroller.scrollTo(to, _extends({}, _this2.state, props));\n      };\n\n      this.handleClick = function (event) {\n\n        /*\r\n         * give the posibility to override onClick\r\n         */\n\n        if (_this2.props.onClick) {\n          _this2.props.onClick(event);\n        }\n\n        /*\r\n         * dont bubble the navigation\r\n         */\n\n        if (event.stopPropagation) event.stopPropagation();\n        if (event.preventDefault) event.preventDefault();\n\n        /*\r\n         * do the magic!\r\n         */\n        _this2.scrollTo(_this2.props.to, _this2.props);\n      };\n\n      this.stateHandler = function () {\n        if (scroller.getActiveLink() !== _this2.props.to) {\n          if (_this2.state !== null && _this2.state.active && _this2.props.onSetInactive) {\n            _this2.props.onSetInactive();\n          }\n          _this2.setState({ active: false });\n        }\n      };\n\n      this.spyHandler = function (y) {\n\n        var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n        if (scrollHash.isMounted() && !scrollHash.isInitialized()) {\n          return;\n        }\n\n        var to = _this2.props.to;\n        var element = null;\n        var elemTopBound = 0;\n        var elemBottomBound = 0;\n        var containerTop = 0;\n\n        if (scrollSpyContainer.getBoundingClientRect) {\n          var containerCords = scrollSpyContainer.getBoundingClientRect();\n          containerTop = containerCords.top;\n        }\n\n        if (!element || _this2.props.isDynamic) {\n          element = scroller.get(to);\n          if (!element) {\n            return;\n          }\n\n          var cords = element.getBoundingClientRect();\n          elemTopBound = cords.top - containerTop + y;\n          elemBottomBound = elemTopBound + cords.height;\n        }\n\n        var offsetY = y - _this2.props.offset;\n        var isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n        var isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n        var activeLink = scroller.getActiveLink();\n\n        if (isOutside) {\n          if (to === activeLink) {\n            scroller.setActiveLink(void 0);\n          }\n\n          if (_this2.props.hashSpy && scrollHash.getHash() === to) {\n            scrollHash.changeHash();\n          }\n\n          if (_this2.props.spy && _this2.state.active) {\n            _this2.setState({ active: false });\n            _this2.props.onSetInactive && _this2.props.onSetInactive();\n          }\n\n          return scrollSpy.updateStates();\n        }\n\n        if (isInside && activeLink !== to) {\n          scroller.setActiveLink(to);\n\n          _this2.props.hashSpy && scrollHash.changeHash(to);\n\n          if (_this2.props.spy) {\n            _this2.setState({ active: true });\n            _this2.props.onSetActive && _this2.props.onSetActive(to);\n          }\n          return scrollSpy.updateStates();\n        }\n      };\n    };\n\n    ;\n\n    Scroll.propTypes = protoTypes;\n\n    Scroll.defaultProps = { offset: 0 };\n\n    return Scroll;\n  },\n  Element: function Element(Component) {\n\n    console.warn(\"Helpers.Element is deprecated since v1.7.0\");\n\n    var Element = function (_React$Component2) {\n      _inherits(Element, _React$Component2);\n\n      function Element(props) {\n        _classCallCheck(this, Element);\n\n        var _this3 = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n        _this3.childBindings = {\n          domNode: null\n        };\n        return _this3;\n      }\n\n      _createClass(Element, [{\n        key: 'componentDidMount',\n        value: function componentDidMount() {\n          if (typeof window === 'undefined') {\n            return false;\n          }\n          this.registerElems(this.props.name);\n        }\n      }, {\n        key: 'componentDidUpdate',\n        value: function componentDidUpdate(prevProps) {\n          if (this.props.name !== prevProps.name) {\n            this.registerElems(this.props.name);\n          }\n        }\n      }, {\n        key: 'componentWillUnmount',\n        value: function componentWillUnmount() {\n          if (typeof window === 'undefined') {\n            return false;\n          }\n          defaultScroller.unregister(this.props.name);\n        }\n      }, {\n        key: 'registerElems',\n        value: function registerElems(name) {\n          defaultScroller.register(name, this.childBindings.domNode);\n        }\n      }, {\n        key: 'render',\n        value: function render() {\n          return React.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n        }\n      }]);\n\n      return Element;\n    }(React.Component);\n\n    ;\n\n    Element.propTypes = {\n      name: PropTypes.string,\n      id: PropTypes.string\n    };\n\n    return Element;\n  }\n};\n\nmodule.exports = Helpers;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-scroll/modules/mixins/Helpers.js?");

/***/ }),

/***/ "./node_modules/react-scroll/modules/mixins/animate-scroll.js":
/*!********************************************************************!*\
  !*** ./node_modules/react-scroll/modules/mixins/animate-scroll.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _utils = __webpack_require__(/*! ./utils */ \"./node_modules/react-scroll/modules/mixins/utils.js\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _smooth = __webpack_require__(/*! ./smooth */ \"./node_modules/react-scroll/modules/mixins/smooth.js\");\n\nvar _smooth2 = _interopRequireDefault(_smooth);\n\nvar _cancelEvents = __webpack_require__(/*! ./cancel-events */ \"./node_modules/react-scroll/modules/mixins/cancel-events.js\");\n\nvar _cancelEvents2 = _interopRequireDefault(_cancelEvents);\n\nvar _scrollEvents = __webpack_require__(/*! ./scroll-events */ \"./node_modules/react-scroll/modules/mixins/scroll-events.js\");\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\r\n * Gets the easing type from the smooth prop within options.\r\n */\nvar getAnimationType = function getAnimationType(options) {\n  return _smooth2.default[options.smooth] || _smooth2.default.defaultEasing;\n};\n/*\r\n * Function helper\r\n */\nvar functionWrapper = function functionWrapper(value) {\n  return typeof value === 'function' ? value : function () {\n    return value;\n  };\n};\n/*\r\n * Wraps window properties to allow server side rendering\r\n */\nvar currentWindowProperties = function currentWindowProperties() {\n  if (typeof window !== 'undefined') {\n    return window.requestAnimationFrame || window.webkitRequestAnimationFrame;\n  }\n};\n\n/*\r\n * Helper function to never extend 60fps on the webpage.\r\n */\nvar requestAnimationFrameHelper = function () {\n  return currentWindowProperties() || function (callback, element, delay) {\n    window.setTimeout(callback, delay || 1000 / 60, new Date().getTime());\n  };\n}();\n\nvar makeData = function makeData() {\n  return {\n    currentPosition: 0,\n    startPosition: 0,\n    targetPosition: 0,\n    progress: 0,\n    duration: 0,\n    cancel: false,\n\n    target: null,\n    containerElement: null,\n    to: null,\n    start: null,\n    delta: null,\n    percent: null,\n    delayTimeout: null\n  };\n};\n\nvar currentPositionX = function currentPositionX(options) {\n  var containerElement = options.data.containerElement;\n  if (containerElement && containerElement !== document && containerElement !== document.body) {\n    return containerElement.scrollLeft;\n  } else {\n    var supportPageOffset = window.pageXOffset !== undefined;\n    var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n    return supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n  }\n};\n\nvar currentPositionY = function currentPositionY(options) {\n  var containerElement = options.data.containerElement;\n  if (containerElement && containerElement !== document && containerElement !== document.body) {\n    return containerElement.scrollTop;\n  } else {\n    var supportPageOffset = window.pageXOffset !== undefined;\n    var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n    return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n  }\n};\n\nvar scrollContainerWidth = function scrollContainerWidth(options) {\n  var containerElement = options.data.containerElement;\n  if (containerElement && containerElement !== document && containerElement !== document.body) {\n    return containerElement.scrollWidth - containerElement.offsetWidth;\n  } else {\n    var body = document.body;\n    var html = document.documentElement;\n\n    return Math.max(body.scrollWidth, body.offsetWidth, html.clientWidth, html.scrollWidth, html.offsetWidth);\n  }\n};\n\nvar scrollContainerHeight = function scrollContainerHeight(options) {\n  var containerElement = options.data.containerElement;\n  if (containerElement && containerElement !== document && containerElement !== document.body) {\n    return containerElement.scrollHeight - containerElement.offsetHeight;\n  } else {\n    var body = document.body;\n    var html = document.documentElement;\n\n    return Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);\n  }\n};\n\nvar animateScroll = function animateScroll(easing, options, timestamp) {\n  var data = options.data;\n\n  // Cancel on specific events\n  if (!options.ignoreCancelEvents && data.cancel) {\n    if (_scrollEvents2.default.registered['end']) {\n      _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPositionY);\n    }\n    return;\n  };\n\n  data.delta = Math.round(data.targetPosition - data.startPosition);\n\n  if (data.start === null) {\n    data.start = timestamp;\n  }\n\n  data.progress = timestamp - data.start;\n\n  data.percent = data.progress >= data.duration ? 1 : easing(data.progress / data.duration);\n\n  data.currentPosition = data.startPosition + Math.ceil(data.delta * data.percent);\n\n  if (data.containerElement && data.containerElement !== document && data.containerElement !== document.body) {\n    if (options.horizontal) {\n      data.containerElement.scrollLeft = data.currentPosition;\n    } else {\n      data.containerElement.scrollTop = data.currentPosition;\n    }\n  } else {\n    if (options.horizontal) {\n      window.scrollTo(data.currentPosition, 0);\n    } else {\n      window.scrollTo(0, data.currentPosition);\n    }\n  }\n\n  if (data.percent < 1) {\n    var easedAnimate = animateScroll.bind(null, easing, options);\n    requestAnimationFrameHelper.call(window, easedAnimate);\n    return;\n  }\n\n  if (_scrollEvents2.default.registered['end']) {\n    _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPosition);\n  }\n};\n\nvar setContainer = function setContainer(options) {\n  options.data.containerElement = !options ? null : options.containerId ? document.getElementById(options.containerId) : options.container && options.container.nodeType ? options.container : document;\n};\n\nvar animateTopScroll = function animateTopScroll(scrollOffset, options, to, target) {\n  options.data = options.data || makeData();\n\n  window.clearTimeout(options.data.delayTimeout);\n\n  _cancelEvents2.default.subscribe(function () {\n    options.data.cancel = true;\n  });\n\n  setContainer(options);\n\n  options.data.start = null;\n  options.data.cancel = false;\n  options.data.startPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n  options.data.targetPosition = options.absolute ? scrollOffset : scrollOffset + options.data.startPosition;\n\n  if (options.data.startPosition === options.data.targetPosition) {\n    if (_scrollEvents2.default.registered['end']) {\n      _scrollEvents2.default.registered['end'](options.data.to, options.data.target, options.data.currentPosition);\n    }\n    return;\n  }\n\n  options.data.delta = Math.round(options.data.targetPosition - options.data.startPosition);\n\n  options.data.duration = functionWrapper(options.duration)(options.data.delta);\n  options.data.duration = isNaN(parseFloat(options.data.duration)) ? 1000 : parseFloat(options.data.duration);\n  options.data.to = to;\n  options.data.target = target;\n\n  var easing = getAnimationType(options);\n  var easedAnimate = animateScroll.bind(null, easing, options);\n\n  if (options && options.delay > 0) {\n    options.data.delayTimeout = window.setTimeout(function () {\n      if (_scrollEvents2.default.registered['begin']) {\n        _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n      }\n      requestAnimationFrameHelper.call(window, easedAnimate);\n    }, options.delay);\n    return;\n  }\n\n  if (_scrollEvents2.default.registered['begin']) {\n    _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n  }\n  requestAnimationFrameHelper.call(window, easedAnimate);\n};\n\nvar proceedOptions = function proceedOptions(options) {\n  options = _extends({}, options);\n  options.data = options.data || makeData();\n  options.absolute = true;\n  return options;\n};\n\nvar scrollToTop = function scrollToTop(options) {\n  animateTopScroll(0, proceedOptions(options));\n};\n\nvar scrollTo = function scrollTo(toPosition, options) {\n  animateTopScroll(toPosition, proceedOptions(options));\n};\n\nvar scrollToBottom = function scrollToBottom(options) {\n  options = proceedOptions(options);\n  setContainer(options);\n  animateTopScroll(options.horizontal ? scrollContainerWidth(options) : scrollContainerHeight(options), options);\n};\n\nvar scrollMore = function scrollMore(toPosition, options) {\n  options = proceedOptions(options);\n  setContainer(options);\n  var currentPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n  animateTopScroll(toPosition + currentPosition, options);\n};\n\nexports[\"default\"] = {\n  animateTopScroll: animateTopScroll,\n  getAnimationType: getAnimationType,\n  scrollToTop: scrollToTop,\n  scrollToBottom: scrollToBottom,\n  scrollTo: scrollTo,\n  scrollMore: scrollMore\n};\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-scroll/modules/mixins/animate-scroll.js?");

/***/ }),

/***/ "./node_modules/react-scroll/modules/mixins/cancel-events.js":
/*!*******************************************************************!*\
  !*** ./node_modules/react-scroll/modules/mixins/cancel-events.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar _passiveEventListeners = __webpack_require__(/*! ./passive-event-listeners */ \"./node_modules/react-scroll/modules/mixins/passive-event-listeners.js\");\n\nvar events = ['mousedown', 'mousewheel', 'touchmove', 'keydown'];\n\nexports[\"default\"] = {\n  subscribe: function subscribe(cancelEvent) {\n    return typeof document !== 'undefined' && events.forEach(function (event) {\n      return (0, _passiveEventListeners.addPassiveEventListener)(document, event, cancelEvent);\n    });\n  }\n};\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-scroll/modules/mixins/cancel-events.js?");

/***/ }),

/***/ "./node_modules/react-scroll/modules/mixins/passive-event-listeners.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/react-scroll/modules/mixins/passive-event-listeners.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n/*\r\n * Tell the browser that the event listener won't prevent a scroll.\r\n * Allowing the browser to continue scrolling without having to\r\n * to wait for the listener to return.\r\n */\nvar addPassiveEventListener = exports.addPassiveEventListener = function addPassiveEventListener(target, eventName, listener) {\n  var supportsPassiveOption = function () {\n    var supportsPassiveOption = false;\n    try {\n      var opts = Object.defineProperty({}, 'passive', {\n        get: function get() {\n          supportsPassiveOption = true;\n        }\n      });\n      window.addEventListener('test', null, opts);\n    } catch (e) {}\n    return supportsPassiveOption;\n  }();\n  target.addEventListener(eventName, listener, supportsPassiveOption ? { passive: true } : false);\n};\n\nvar removePassiveEventListener = exports.removePassiveEventListener = function removePassiveEventListener(target, eventName, listener) {\n  target.removeEventListener(eventName, listener);\n};\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-scroll/modules/mixins/passive-event-listeners.js?");

/***/ }),

/***/ "./node_modules/react-scroll/modules/mixins/scroll-element.js":
/*!********************************************************************!*\
  !*** ./node_modules/react-scroll/modules/mixins/scroll-element.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _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; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _scroller = __webpack_require__(/*! ./scroller */ \"./node_modules/react-scroll/modules/mixins/scroller.js\");\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nexports[\"default\"] = function (Component) {\n  var Element = function (_React$Component) {\n    _inherits(Element, _React$Component);\n\n    function Element(props) {\n      _classCallCheck(this, Element);\n\n      var _this = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n      _this.childBindings = {\n        domNode: null\n      };\n      return _this;\n    }\n\n    _createClass(Element, [{\n      key: 'componentDidMount',\n      value: function componentDidMount() {\n        if (typeof window === 'undefined') {\n          return false;\n        }\n        this.registerElems(this.props.name);\n      }\n    }, {\n      key: 'componentDidUpdate',\n      value: function componentDidUpdate(prevProps) {\n        if (this.props.name !== prevProps.name) {\n          this.registerElems(this.props.name);\n        }\n      }\n    }, {\n      key: 'componentWillUnmount',\n      value: function componentWillUnmount() {\n        if (typeof window === 'undefined') {\n          return false;\n        }\n        _scroller2.default.unregister(this.props.name);\n      }\n    }, {\n      key: 'registerElems',\n      value: function registerElems(name) {\n        _scroller2.default.register(name, this.childBindings.domNode);\n      }\n    }, {\n      key: 'render',\n      value: function render() {\n        return _react2.default.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n      }\n    }]);\n\n    return Element;\n  }(_react2.default.Component);\n\n  ;\n\n  Element.propTypes = {\n    name: _propTypes2.default.string,\n    id: _propTypes2.default.string\n  };\n\n  return Element;\n};\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-scroll/modules/mixins/scroll-element.js?");

/***/ }),

/***/ "./node_modules/react-scroll/modules/mixins/scroll-events.js":
/*!*******************************************************************!*\
  !*** ./node_modules/react-scroll/modules/mixins/scroll-events.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n\tvalue: true\n}));\n\nvar Events = {\n\tregistered: {},\n\tscrollEvent: {\n\t\tregister: function register(evtName, callback) {\n\t\t\tEvents.registered[evtName] = callback;\n\t\t},\n\t\tremove: function remove(evtName) {\n\t\t\tEvents.registered[evtName] = null;\n\t\t}\n\t}\n};\n\nexports[\"default\"] = Events;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-scroll/modules/mixins/scroll-events.js?");

/***/ }),

/***/ "./node_modules/react-scroll/modules/mixins/scroll-hash.js":
/*!*****************************************************************!*\
  !*** ./node_modules/react-scroll/modules/mixins/scroll-hash.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar _passiveEventListeners = __webpack_require__(/*! ./passive-event-listeners */ \"./node_modules/react-scroll/modules/mixins/passive-event-listeners.js\");\n\nvar _utils = __webpack_require__(/*! ./utils */ \"./node_modules/react-scroll/modules/mixins/utils.js\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar scrollHash = {\n  mountFlag: false,\n  initialized: false,\n  scroller: null,\n  containers: {},\n\n  mount: function mount(scroller) {\n    this.scroller = scroller;\n\n    this.handleHashChange = this.handleHashChange.bind(this);\n    window.addEventListener('hashchange', this.handleHashChange);\n\n    this.initStateFromHash();\n    this.mountFlag = true;\n  },\n  mapContainer: function mapContainer(to, container) {\n    this.containers[to] = container;\n  },\n  isMounted: function isMounted() {\n    return this.mountFlag;\n  },\n  isInitialized: function isInitialized() {\n    return this.initialized;\n  },\n  initStateFromHash: function initStateFromHash() {\n    var _this = this;\n\n    var hash = this.getHash();\n    if (hash) {\n      window.setTimeout(function () {\n        _this.scrollTo(hash, true);\n        _this.initialized = true;\n      }, 10);\n    } else {\n      this.initialized = true;\n    }\n  },\n  scrollTo: function scrollTo(to, isInit) {\n    var scroller = this.scroller;\n    var element = scroller.get(to);\n    if (element && (isInit || to !== scroller.getActiveLink())) {\n      var container = this.containers[to] || document;\n      scroller.scrollTo(to, { container: container });\n    }\n  },\n  getHash: function getHash() {\n    return _utils2.default.getHash();\n  },\n  changeHash: function changeHash(to, saveHashHistory) {\n    if (this.isInitialized() && _utils2.default.getHash() !== to) {\n      _utils2.default.updateHash(to, saveHashHistory);\n    }\n  },\n  handleHashChange: function handleHashChange() {\n    this.scrollTo(this.getHash());\n  },\n  unmount: function unmount() {\n    this.scroller = null;\n    this.containers = null;\n    window.removeEventListener('hashchange', this.handleHashChange);\n  }\n};\n\nexports[\"default\"] = scrollHash;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-scroll/modules/mixins/scroll-hash.js?");

/***/ }),

/***/ "./node_modules/react-scroll/modules/mixins/scroll-link.js":
/*!*****************************************************************!*\
  !*** ./node_modules/react-scroll/modules/mixins/scroll-link.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _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; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollSpy = __webpack_require__(/*! ./scroll-spy */ \"./node_modules/react-scroll/modules/mixins/scroll-spy.js\");\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _scroller = __webpack_require__(/*! ./scroller */ \"./node_modules/react-scroll/modules/mixins/scroller.js\");\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _scrollHash = __webpack_require__(/*! ./scroll-hash */ \"./node_modules/react-scroll/modules/mixins/scroll-hash.js\");\n\nvar _scrollHash2 = _interopRequireDefault(_scrollHash);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar protoTypes = {\n  to: _propTypes2.default.string.isRequired,\n  containerId: _propTypes2.default.string,\n  container: _propTypes2.default.object,\n  activeClass: _propTypes2.default.string,\n  activeStyle: _propTypes2.default.object,\n  spy: _propTypes2.default.bool,\n  horizontal: _propTypes2.default.bool,\n  smooth: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.string]),\n  offset: _propTypes2.default.number,\n  delay: _propTypes2.default.number,\n  isDynamic: _propTypes2.default.bool,\n  onClick: _propTypes2.default.func,\n  duration: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.func]),\n  absolute: _propTypes2.default.bool,\n  onSetActive: _propTypes2.default.func,\n  onSetInactive: _propTypes2.default.func,\n  ignoreCancelEvents: _propTypes2.default.bool,\n  hashSpy: _propTypes2.default.bool,\n  saveHashHistory: _propTypes2.default.bool,\n  spyThrottle: _propTypes2.default.number\n};\n\nexports[\"default\"] = function (Component, customScroller) {\n\n  var scroller = customScroller || _scroller2.default;\n\n  var Link = function (_React$PureComponent) {\n    _inherits(Link, _React$PureComponent);\n\n    function Link(props) {\n      _classCallCheck(this, Link);\n\n      var _this = _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).call(this, props));\n\n      _initialiseProps.call(_this);\n\n      _this.state = {\n        active: false\n      };\n      return _this;\n    }\n\n    _createClass(Link, [{\n      key: 'getScrollSpyContainer',\n      value: function getScrollSpyContainer() {\n        var containerId = this.props.containerId;\n        var container = this.props.container;\n\n        if (containerId && !container) {\n          return document.getElementById(containerId);\n        }\n\n        if (container && container.nodeType) {\n          return container;\n        }\n\n        return document;\n      }\n    }, {\n      key: 'componentDidMount',\n      value: function componentDidMount() {\n        if (this.props.spy || this.props.hashSpy) {\n          var scrollSpyContainer = this.getScrollSpyContainer();\n\n          if (!_scrollSpy2.default.isMounted(scrollSpyContainer)) {\n            _scrollSpy2.default.mount(scrollSpyContainer, this.props.spyThrottle);\n          }\n\n          if (this.props.hashSpy) {\n            if (!_scrollHash2.default.isMounted()) {\n              _scrollHash2.default.mount(scroller);\n            }\n            _scrollHash2.default.mapContainer(this.props.to, scrollSpyContainer);\n          }\n\n          _scrollSpy2.default.addSpyHandler(this.spyHandler, scrollSpyContainer);\n\n          this.setState({\n            container: scrollSpyContainer\n          });\n        }\n      }\n    }, {\n      key: 'componentWillUnmount',\n      value: function componentWillUnmount() {\n        _scrollSpy2.default.unmount(this.stateHandler, this.spyHandler);\n      }\n    }, {\n      key: 'render',\n      value: function render() {\n        var className = \"\";\n\n        if (this.state && this.state.active) {\n          className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n        } else {\n          className = this.props.className;\n        }\n\n        var style = {};\n\n        if (this.state && this.state.active) {\n          style = _extends({}, this.props.style, this.props.activeStyle);\n        } else {\n          style = _extends({}, this.props.style);\n        }\n\n        var props = _extends({}, this.props);\n\n        for (var prop in protoTypes) {\n          if (props.hasOwnProperty(prop)) {\n            delete props[prop];\n          }\n        }\n\n        props.className = className;\n        props.style = style;\n        props.onClick = this.handleClick;\n\n        return _react2.default.createElement(Component, props);\n      }\n    }]);\n\n    return Link;\n  }(_react2.default.PureComponent);\n\n  var _initialiseProps = function _initialiseProps() {\n    var _this2 = this;\n\n    this.scrollTo = function (to, props) {\n      scroller.scrollTo(to, _extends({}, _this2.state, props));\n    };\n\n    this.handleClick = function (event) {\n\n      /*\r\n       * give the posibility to override onClick\r\n       */\n\n      if (_this2.props.onClick) {\n        _this2.props.onClick(event);\n      }\n\n      /*\r\n       * dont bubble the navigation\r\n       */\n\n      if (event.stopPropagation) event.stopPropagation();\n      if (event.preventDefault) event.preventDefault();\n\n      /*\r\n       * do the magic!\r\n       */\n      _this2.scrollTo(_this2.props.to, _this2.props);\n    };\n\n    this.spyHandler = function (x, y) {\n      var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n      if (_scrollHash2.default.isMounted() && !_scrollHash2.default.isInitialized()) {\n        return;\n      }\n\n      var horizontal = _this2.props.horizontal;\n\n      var to = _this2.props.to;\n      var element = null;\n      var isInside = void 0;\n      var isOutside = void 0;\n\n      if (horizontal) {\n        var elemLeftBound = 0;\n        var elemRightBound = 0;\n        var containerLeft = 0;\n\n        if (scrollSpyContainer.getBoundingClientRect) {\n          var containerCords = scrollSpyContainer.getBoundingClientRect();\n          containerLeft = containerCords.left;\n        }\n\n        if (!element || _this2.props.isDynamic) {\n          element = scroller.get(to);\n          if (!element) {\n            return;\n          }\n\n          var cords = element.getBoundingClientRect();\n          elemLeftBound = cords.left - containerLeft + x;\n          elemRightBound = elemLeftBound + cords.width;\n        }\n\n        var offsetX = x - _this2.props.offset;\n        isInside = offsetX >= Math.floor(elemLeftBound) && offsetX < Math.floor(elemRightBound);\n        isOutside = offsetX < Math.floor(elemLeftBound) || offsetX >= Math.floor(elemRightBound);\n      } else {\n        var elemTopBound = 0;\n        var elemBottomBound = 0;\n        var containerTop = 0;\n\n        if (scrollSpyContainer.getBoundingClientRect) {\n          var _containerCords = scrollSpyContainer.getBoundingClientRect();\n          containerTop = _containerCords.top;\n        }\n\n        if (!element || _this2.props.isDynamic) {\n          element = scroller.get(to);\n          if (!element) {\n            return;\n          }\n\n          var _cords = element.getBoundingClientRect();\n          elemTopBound = _cords.top - containerTop + y;\n          elemBottomBound = elemTopBound + _cords.height;\n        }\n\n        var offsetY = y - _this2.props.offset;\n        isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n        isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n      }\n\n      var activeLink = scroller.getActiveLink();\n\n      if (isOutside) {\n        if (to === activeLink) {\n          scroller.setActiveLink(void 0);\n        }\n\n        if (_this2.props.hashSpy && _scrollHash2.default.getHash() === to) {\n          var _props$saveHashHistor = _this2.props.saveHashHistory,\n              saveHashHistory = _props$saveHashHistor === undefined ? false : _props$saveHashHistor;\n\n          _scrollHash2.default.changeHash(\"\", saveHashHistory);\n        }\n\n        if (_this2.props.spy && _this2.state.active) {\n          _this2.setState({ active: false });\n          _this2.props.onSetInactive && _this2.props.onSetInactive(to, element);\n        }\n      }\n\n      if (isInside && (activeLink !== to || _this2.state.active === false)) {\n        scroller.setActiveLink(to);\n\n        var _props$saveHashHistor2 = _this2.props.saveHashHistory,\n            _saveHashHistory = _props$saveHashHistor2 === undefined ? false : _props$saveHashHistor2;\n\n        _this2.props.hashSpy && _scrollHash2.default.changeHash(to, _saveHashHistory);\n\n        if (_this2.props.spy) {\n          _this2.setState({ active: true });\n          _this2.props.onSetActive && _this2.props.onSetActive(to, element);\n        }\n      }\n    };\n  };\n\n  ;\n\n  Link.propTypes = protoTypes;\n\n  Link.defaultProps = { offset: 0 };\n\n  return Link;\n};\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-scroll/modules/mixins/scroll-link.js?");

/***/ }),

/***/ "./node_modules/react-scroll/modules/mixins/scroll-spy.js":
/*!****************************************************************!*\
  !*** ./node_modules/react-scroll/modules/mixins/scroll-spy.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar _lodash = __webpack_require__(/*! lodash.throttle */ \"./node_modules/lodash.throttle/index.js\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _passiveEventListeners = __webpack_require__(/*! ./passive-event-listeners */ \"./node_modules/react-scroll/modules/mixins/passive-event-listeners.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The eventHandler will execute at a rate of 15fps by default\nvar eventThrottler = function eventThrottler(eventHandler) {\n  var throttleAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 66;\n  return (0, _lodash2.default)(eventHandler, throttleAmount);\n};\n\nvar scrollSpy = {\n\n  spyCallbacks: [],\n  spySetState: [],\n  scrollSpyContainers: [],\n\n  mount: function mount(scrollSpyContainer, throttle) {\n    if (scrollSpyContainer) {\n      var eventHandler = eventThrottler(function (event) {\n        scrollSpy.scrollHandler(scrollSpyContainer);\n      }, throttle);\n      scrollSpy.scrollSpyContainers.push(scrollSpyContainer);\n      (0, _passiveEventListeners.addPassiveEventListener)(scrollSpyContainer, 'scroll', eventHandler);\n    }\n  },\n  isMounted: function isMounted(scrollSpyContainer) {\n    return scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer) !== -1;\n  },\n  currentPositionX: function currentPositionX(scrollSpyContainer) {\n    if (scrollSpyContainer === document) {\n      var supportPageOffset = window.pageYOffset !== undefined;\n      var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n      return supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n    } else {\n      return scrollSpyContainer.scrollLeft;\n    }\n  },\n  currentPositionY: function currentPositionY(scrollSpyContainer) {\n    if (scrollSpyContainer === document) {\n      var supportPageOffset = window.pageXOffset !== undefined;\n      var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n      return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n    } else {\n      return scrollSpyContainer.scrollTop;\n    }\n  },\n  scrollHandler: function scrollHandler(scrollSpyContainer) {\n    var callbacks = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)].spyCallbacks || [];\n    callbacks.forEach(function (c) {\n      return c(scrollSpy.currentPositionX(scrollSpyContainer), scrollSpy.currentPositionY(scrollSpyContainer));\n    });\n  },\n  addStateHandler: function addStateHandler(handler) {\n    scrollSpy.spySetState.push(handler);\n  },\n  addSpyHandler: function addSpyHandler(handler, scrollSpyContainer) {\n    var container = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)];\n\n    if (!container.spyCallbacks) {\n      container.spyCallbacks = [];\n    }\n\n    container.spyCallbacks.push(handler);\n\n    handler(scrollSpy.currentPositionX(scrollSpyContainer), scrollSpy.currentPositionY(scrollSpyContainer));\n  },\n  updateStates: function updateStates() {\n    scrollSpy.spySetState.forEach(function (s) {\n      return s();\n    });\n  },\n  unmount: function unmount(stateHandler, spyHandler) {\n    scrollSpy.scrollSpyContainers.forEach(function (c) {\n      return c.spyCallbacks && c.spyCallbacks.length && c.spyCallbacks.indexOf(spyHandler) > -1 && c.spyCallbacks.splice(c.spyCallbacks.indexOf(spyHandler), 1);\n    });\n\n    if (scrollSpy.spySetState && scrollSpy.spySetState.length && scrollSpy.spySetState.indexOf(stateHandler) > -1) {\n      scrollSpy.spySetState.splice(scrollSpy.spySetState.indexOf(stateHandler), 1);\n    }\n\n    document.removeEventListener('scroll', scrollSpy.scrollHandler);\n  },\n\n\n  update: function update() {\n    return scrollSpy.scrollSpyContainers.forEach(function (c) {\n      return scrollSpy.scrollHandler(c);\n    });\n  }\n};\n\nexports[\"default\"] = scrollSpy;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-scroll/modules/mixins/scroll-spy.js?");

/***/ }),

/***/ "./node_modules/react-scroll/modules/mixins/scroller.js":
/*!**************************************************************!*\
  !*** ./node_modules/react-scroll/modules/mixins/scroller.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _utils = __webpack_require__(/*! ./utils */ \"./node_modules/react-scroll/modules/mixins/utils.js\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _animateScroll = __webpack_require__(/*! ./animate-scroll */ \"./node_modules/react-scroll/modules/mixins/animate-scroll.js\");\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollEvents = __webpack_require__(/*! ./scroll-events */ \"./node_modules/react-scroll/modules/mixins/scroll-events.js\");\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar __mapped = {};\nvar __activeLink = void 0;\n\nexports[\"default\"] = {\n\n  unmount: function unmount() {\n    __mapped = {};\n  },\n\n  register: function register(name, element) {\n    __mapped[name] = element;\n  },\n\n  unregister: function unregister(name) {\n    delete __mapped[name];\n  },\n\n  get: function get(name) {\n    return __mapped[name] || document.getElementById(name) || document.getElementsByName(name)[0] || document.getElementsByClassName(name)[0];\n  },\n\n  setActiveLink: function setActiveLink(link) {\n    return __activeLink = link;\n  },\n\n  getActiveLink: function getActiveLink() {\n    return __activeLink;\n  },\n\n  scrollTo: function scrollTo(to, props) {\n\n    var target = this.get(to);\n\n    if (!target) {\n      console.warn(\"target Element not found\");\n      return;\n    }\n\n    props = _extends({}, props, { absolute: false });\n\n    var containerId = props.containerId;\n    var container = props.container;\n\n    var containerElement = void 0;\n    if (containerId) {\n      containerElement = document.getElementById(containerId);\n    } else if (container && container.nodeType) {\n      containerElement = container;\n    } else {\n      containerElement = document;\n    }\n\n    props.absolute = true;\n\n    var horizontal = props.horizontal;\n    var scrollOffset = _utils2.default.scrollOffset(containerElement, target, horizontal) + (props.offset || 0);\n\n    /*\r\n     * if animate is not provided just scroll into the view\r\n     */\n    if (!props.smooth) {\n      if (_scrollEvents2.default.registered['begin']) {\n        _scrollEvents2.default.registered['begin'](to, target);\n      }\n\n      if (containerElement === document) {\n        if (props.horizontal) {\n          window.scrollTo(scrollOffset, 0);\n        } else {\n          window.scrollTo(0, scrollOffset);\n        }\n      } else {\n        containerElement.scrollTop = scrollOffset;\n      }\n\n      if (_scrollEvents2.default.registered['end']) {\n        _scrollEvents2.default.registered['end'](to, target);\n      }\n\n      return;\n    }\n\n    /*\r\n     * Animate scrolling\r\n     */\n\n    _animateScroll2.default.animateTopScroll(scrollOffset, props, to, target);\n  }\n};\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-scroll/modules/mixins/scroller.js?");

/***/ }),

/***/ "./node_modules/react-scroll/modules/mixins/smooth.js":
/*!************************************************************!*\
  !*** ./node_modules/react-scroll/modules/mixins/smooth.js ***!
  \************************************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = {\n  /*\r\n   * https://github.com/oblador/angular-scroll (duScrollDefaultEasing)\r\n   */\n  defaultEasing: function defaultEasing(x) {\n    if (x < 0.5) {\n      return Math.pow(x * 2, 2) / 2;\n    }\n    return 1 - Math.pow((1 - x) * 2, 2) / 2;\n  },\n  /*\r\n   * https://gist.github.com/gre/1650294\r\n   */\n  // no easing, no acceleration\n  linear: function linear(x) {\n    return x;\n  },\n  // accelerating from zero velocity\n  easeInQuad: function easeInQuad(x) {\n    return x * x;\n  },\n  // decelerating to zero velocity\n  easeOutQuad: function easeOutQuad(x) {\n    return x * (2 - x);\n  },\n  // acceleration until halfway, then deceleration\n  easeInOutQuad: function easeInOutQuad(x) {\n    return x < .5 ? 2 * x * x : -1 + (4 - 2 * x) * x;\n  },\n  // accelerating from zero velocity \n  easeInCubic: function easeInCubic(x) {\n    return x * x * x;\n  },\n  // decelerating to zero velocity π\n  easeOutCubic: function easeOutCubic(x) {\n    return --x * x * x + 1;\n  },\n  // acceleration until halfway, then deceleration \n  easeInOutCubic: function easeInOutCubic(x) {\n    return x < .5 ? 4 * x * x * x : (x - 1) * (2 * x - 2) * (2 * x - 2) + 1;\n  },\n  // accelerating from zero velocity \n  easeInQuart: function easeInQuart(x) {\n    return x * x * x * x;\n  },\n  // decelerating to zero velocity \n  easeOutQuart: function easeOutQuart(x) {\n    return 1 - --x * x * x * x;\n  },\n  // acceleration until halfway, then deceleration\n  easeInOutQuart: function easeInOutQuart(x) {\n    return x < .5 ? 8 * x * x * x * x : 1 - 8 * --x * x * x * x;\n  },\n  // accelerating from zero velocity\n  easeInQuint: function easeInQuint(x) {\n    return x * x * x * x * x;\n  },\n  // decelerating to zero velocity\n  easeOutQuint: function easeOutQuint(x) {\n    return 1 + --x * x * x * x * x;\n  },\n  // acceleration until halfway, then deceleration \n  easeInOutQuint: function easeInOutQuint(x) {\n    return x < .5 ? 16 * x * x * x * x * x : 1 + 16 * --x * x * x * x * x;\n  }\n};\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-scroll/modules/mixins/smooth.js?");

/***/ }),

/***/ "./node_modules/react-scroll/modules/mixins/utils.js":
/*!***********************************************************!*\
  !*** ./node_modules/react-scroll/modules/mixins/utils.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nvar updateHash = function updateHash(hash, historyUpdate) {\n  var hashVal = hash.indexOf(\"#\") === 0 ? hash.substring(1) : hash;\n  var hashToUpdate = hashVal ? \"#\" + hashVal : \"\";\n  var curLoc = window && window.location;\n  var urlToPush = hashToUpdate ? curLoc.pathname + curLoc.search + hashToUpdate : curLoc.pathname + curLoc.search;\n  historyUpdate ? history.pushState(history.state, \"\", urlToPush) : history.replaceState(history.state, \"\", urlToPush);\n};\n\nvar getHash = function getHash() {\n  return window.location.hash.replace(/^#/, \"\");\n};\n\nvar filterElementInContainer = function filterElementInContainer(container) {\n  return function (element) {\n    return container.contains ? container != element && container.contains(element) : !!(container.compareDocumentPosition(element) & 16);\n  };\n};\n\nvar isPositioned = function isPositioned(element) {\n  return getComputedStyle(element).position !== \"static\";\n};\n\nvar getElementOffsetInfoUntil = function getElementOffsetInfoUntil(element, predicate) {\n  var offsetTop = element.offsetTop;\n  var currentOffsetParent = element.offsetParent;\n\n  while (currentOffsetParent && !predicate(currentOffsetParent)) {\n    offsetTop += currentOffsetParent.offsetTop;\n    currentOffsetParent = currentOffsetParent.offsetParent;\n  }\n\n  return { offsetTop: offsetTop, offsetParent: currentOffsetParent };\n};\n\nvar scrollOffset = function scrollOffset(c, t, horizontal) {\n  if (horizontal) {\n    return c === document ? t.getBoundingClientRect().left + (window.scrollX || window.pageXOffset) : getComputedStyle(c).position !== \"static\" ? t.offsetLeft : t.offsetLeft - c.offsetLeft;\n  } else {\n    if (c === document) {\n      return t.getBoundingClientRect().top + (window.scrollY || window.pageYOffset);\n    }\n\n    // The offsetParent of an element, according to MDN, is its nearest positioned\n    // (an element whose position is anything other than static) ancestor. The offsetTop\n    // of an element is taken with respect to its offsetParent which may not neccessarily\n    // be its parentElement except the parent itself is positioned.\n\n    // So if containerElement is positioned, then it must be an offsetParent somewhere\n    // If it happens that targetElement is a descendant of the containerElement, and there\n    // is not intermediate positioned element between the two of them, i.e.\n    // targetElement\"s offsetParent is the same as the containerElement, then the\n    // distance between the two will be the offsetTop of the targetElement.\n    // If, on the other hand, there are intermediate positioned elements between the\n    // two entities, the distance between the targetElement and the containerElement\n    // will be the accumulation of the offsetTop of the element and that of its\n    // subsequent offsetParent until the containerElement is reached, since it\n    // will also be an offsetParent at some point due to the fact that it is positioned.\n\n    // If the containerElement is not positioned, then it can\"t be an offsetParent,\n    // which means that the offsetTop of the targetElement would not be with respect to it.\n    // However, if the two of them happen to have the same offsetParent, then\n    // the distance between them will be the difference between their offsetTop\n    // since they are both taken with respect to the same entity.\n    // The last resort would be to accumulate their offsetTop until a common\n    // offsetParent is reached (usually the document) and taking the difference\n    // between the accumulated offsetTops\n\n    if (isPositioned(c)) {\n      if (t.offsetParent !== c) {\n        var isContainerElementOrDocument = function isContainerElementOrDocument(e) {\n          return e === c || e === document;\n        };\n\n        var _getElementOffsetInfo = getElementOffsetInfoUntil(t, isContainerElementOrDocument),\n            offsetTop = _getElementOffsetInfo.offsetTop,\n            offsetParent = _getElementOffsetInfo.offsetParent;\n\n        if (offsetParent !== c) {\n          throw new Error(\"Seems containerElement is not an ancestor of the Element\");\n        }\n\n        return offsetTop;\n      }\n\n      return t.offsetTop;\n    }\n\n    if (t.offsetParent === c.offsetParent) {\n      return t.offsetTop - c.offsetTop;\n    }\n\n    var isDocument = function isDocument(e) {\n      return e === document;\n    };\n    return getElementOffsetInfoUntil(t, isDocument).offsetTop - getElementOffsetInfoUntil(c, isDocument).offsetTop;\n  }\n};\n\nexports[\"default\"] = {\n  updateHash: updateHash,\n  getHash: getHash,\n  filterElementInContainer: filterElementInContainer,\n  scrollOffset: scrollOffset\n};\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-scroll/modules/mixins/utils.js?");

/***/ }),

/***/ "./node_modules/react-to-print/lib/index.js":
/*!**************************************************!*\
  !*** ./node_modules/react-to-print/lib/index.js ***!
  \**************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("!function(e,t){ true?module.exports=t(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"),__webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\")):0}(\"undefined\"!=typeof self?self:this,(function(e,t){return function(){\"use strict\";var n={655:function(e,t,n){n.r(t),n.d(t,{__assign:function(){return i},__asyncDelegator:function(){return _},__asyncGenerator:function(){return w},__asyncValues:function(){return P},__await:function(){return m},__awaiter:function(){return s},__classPrivateFieldGet:function(){return j},__classPrivateFieldIn:function(){return A},__classPrivateFieldSet:function(){return T},__createBinding:function(){return d},__decorate:function(){return c},__exportStar:function(){return p},__extends:function(){return o},__generator:function(){return f},__importDefault:function(){return E},__importStar:function(){return x},__makeTemplateObject:function(){return O},__metadata:function(){return u},__param:function(){return l},__read:function(){return y},__rest:function(){return a},__spread:function(){return g},__spreadArray:function(){return v},__spreadArrays:function(){return b},__values:function(){return h}});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function o(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var i=function(){return i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},i.apply(this,arguments)};function a(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}function c(e,t,n,r){var o,i=arguments.length,a=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,r);else for(var c=e.length-1;c>=0;c--)(o=e[c])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function l(e,t){return function(n,r){t(n,r,e)}}function u(e,t){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function s(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function c(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}l((r=r.apply(e,t||[])).next())}))}function f(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(c){return function(l){return function(c){if(n)throw new TypeError(\"Generator is already executing.\");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,r=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,l])}}}var d=Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!(\"get\"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]};function p(e,t){for(var n in e)\"default\"===n||Object.prototype.hasOwnProperty.call(t,n)||d(t,e,n)}function h(e){var t=\"function\"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function y(e,t){var n=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function g(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(y(arguments[t]));return e}function b(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),o=0;for(t=0;t<n;t++)for(var i=arguments[t],a=0,c=i.length;a<c;a++,o++)r[o]=i[a];return r}function v(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o<i;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}function m(e){return this instanceof m?(this.v=e,this):new m(e)}function w(e,t,n){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var r,o=n.apply(e,t||[]),i=[];return r={},a(\"next\"),a(\"throw\"),a(\"return\"),r[Symbol.asyncIterator]=function(){return this},r;function a(e){o[e]&&(r[e]=function(t){return new Promise((function(n,r){i.push([e,t,n,r])>1||c(e,t)}))})}function c(e,t){try{(n=o[e](t)).value instanceof m?Promise.resolve(n.value.v).then(l,u):s(i[0][2],n)}catch(e){s(i[0][3],e)}var n}function l(e){c(\"next\",e)}function u(e){c(\"throw\",e)}function s(e,t){e(t),i.shift(),i.length&&c(i[0][0],i[0][1])}}function _(e){var t,n;return t={},r(\"next\"),r(\"throw\",(function(e){throw e})),r(\"return\"),t[Symbol.iterator]=function(){return this},t;function r(r,o){t[r]=e[r]?function(t){return(n=!n)?{value:m(e[r](t)),done:\"return\"===r}:o?o(t):t}:o}}function P(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=h(e),t={},r(\"next\"),r(\"throw\"),r(\"return\"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,o){!function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)}(r,o,(t=e[n](t)).done,t.value)}))}}}function O(e,t){return Object.defineProperty?Object.defineProperty(e,\"raw\",{value:t}):e.raw=t,e}var S=Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t};function x(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)\"default\"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&d(t,e,n);return S(t,e),t}function E(e){return e&&e.__esModule?e:{default:e}}function j(e,t,n,r){if(\"a\"===n&&!r)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof t?e!==t||!r:!t.has(e))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===n?r:\"a\"===n?r.call(e):r?r.value:t.get(e)}function T(e,t,n,r,o){if(\"m\"===r)throw new TypeError(\"Private method is not writable\");if(\"a\"===r&&!o)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof t?e!==t||!o:!t.has(e))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return\"a\"===r?o.call(e,n):o?o.value=n:t.set(e,n),n}function A(e,t){if(null===t||\"object\"!=typeof t&&\"function\"!=typeof t)throw new TypeError(\"Cannot use 'in' operator on non-object\");return\"function\"==typeof e?t===e:e.has(t)}},156:function(t){t.exports=e},111:function(e){e.exports=t}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return n[e](i,i.exports,o),i.exports}o.d=function(e,t){for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var i={};return function(){var e=i;Object.defineProperty(e,\"__esModule\",{value:!0}),e.useReactToPrint=e.PrintContextConsumer=void 0;var t=o(655),n=o(156),r=o(111),a=Object.prototype.hasOwnProperty.call(n,\"createContext\"),c=Object.prototype.hasOwnProperty.call(n,\"useMemo\")&&Object.prototype.hasOwnProperty.call(n,\"useCallback\"),l=a?n.createContext({}):null;e.PrintContextConsumer=l?l.Consumer:function(){return null};var u={copyStyles:!0,pageStyle:\"\\n        @page {\\n            /* Remove browser default header (title) and footer (url) */\\n            margin: 0;\\n        }\\n        @media print {\\n            body {\\n                /* Tell browsers to print background colors */\\n                -webkit-print-color-adjust: exact; /* Chrome/Safari/Edge/Opera */\\n                color-adjust: exact; /* Firefox */\\n            }\\n        }\\n    \",removeAfterPrint:!1,suppressErrors:!1},s=function(e){function o(){var n=null!==e&&e.apply(this,arguments)||this;return n.startPrint=function(e){var t=n.props,r=t.onAfterPrint,o=t.onPrintError,i=t.print,a=t.documentTitle;setTimeout((function(){var t,c;if(e.contentWindow){if(e.contentWindow.focus(),i)i(e).then(n.handleRemoveIframe).catch((function(e){o?o(\"print\",e):n.logMessages([\"An error was thrown by the specified `print` function\"])}));else if(e.contentWindow.print){var l=null!==(c=null===(t=e.contentDocument)||void 0===t?void 0:t.title)&&void 0!==c?c:\"\",u=e.ownerDocument.title;a&&(e.ownerDocument.title=a,e.contentDocument&&(e.contentDocument.title=a)),e.contentWindow.print(),a&&(e.ownerDocument.title=u,e.contentDocument&&(e.contentDocument.title=l))}else n.logMessages([\"Printing for this browser is not currently possible: the browser does not have a `print` method available for iframes.\"]);r&&r(),n.handleRemoveIframe()}else n.logMessages([\"Printing failed because the `contentWindow` of the print iframe did not load. This is possibly an error with `react-to-print`. Please file an issue: https://github.com/gregnb/react-to-print/issues/\"])}),500)},n.triggerPrint=function(e){var t=n.props,r=t.onBeforePrint,o=t.onPrintError;if(r){var i=r();i&&\"function\"==typeof i.then?i.then((function(){n.startPrint(e)})).catch((function(e){o&&o(\"onBeforePrint\",e)})):n.startPrint(e)}else n.startPrint(e)},n.handleClick=function(){var e=n.props,t=e.onBeforeGetContent,r=e.onPrintError;if(t){var o=t();o&&\"function\"==typeof o.then?o.then(n.handlePrint).catch((function(e){r&&r(\"onBeforeGetContent\",e)})):n.handlePrint()}else n.handlePrint()},n.handlePrint=function(){var e=n.props,o=e.bodyClass,i=e.content,a=e.copyStyles,c=e.fonts,l=e.pageStyle,u=e.nonce,s=i();if(void 0!==s)if(null!==s){var f=document.createElement(\"iframe\");f.width=\"\".concat(document.documentElement.clientWidth,\"px\"),f.height=\"\".concat(document.documentElement.clientHeight,\"px\"),f.style.position=\"absolute\",f.style.top=\"-\".concat(document.documentElement.clientHeight+100,\"px\"),f.style.left=\"-\".concat(document.documentElement.clientWidth+100,\"px\"),f.id=\"printWindow\",f.srcdoc=\"<!DOCTYPE html>\";var d=(0,r.findDOMNode)(s);if(d){var p=d.cloneNode(!0),h=p instanceof Text,y=document.querySelectorAll(\"link[rel='stylesheet']\"),g=h?[]:p.querySelectorAll(\"img\"),b=h?[]:p.querySelectorAll(\"video\"),v=c?c.length:0;n.numResourcesToLoad=y.length+g.length+b.length+v,n.resourcesLoaded=[],n.resourcesErrored=[];var m=function(e,r){n.resourcesLoaded.includes(e)?n.logMessages([\"Tried to mark a resource that has already been handled\",e],\"debug\"):(r?(n.logMessages(t.__spreadArray(['\"react-to-print\" was unable to load a resource but will continue attempting to print the page'],t.__read(r),!1)),n.resourcesErrored.push(e)):n.resourcesLoaded.push(e),n.resourcesLoaded.length+n.resourcesErrored.length===n.numResourcesToLoad&&n.triggerPrint(f))};f.onload=function(){var e,r,i,s;f.onload=null;var y=f.contentDocument||(null===(r=f.contentWindow)||void 0===r?void 0:r.document);if(y){y.body.appendChild(p),c&&((null===(i=f.contentDocument)||void 0===i?void 0:i.fonts)&&(null===(s=f.contentWindow)||void 0===s?void 0:s.FontFace)?c.forEach((function(e){var t=new FontFace(e.family,e.source);f.contentDocument.fonts.add(t),t.loaded.then((function(){m(t)})).catch((function(e){m(t,[\"Failed loading the font:\",t,\"Load error:\",e])}))})):(c.forEach((function(e){return m(e)})),n.logMessages(['\"react-to-print\" is not able to load custom fonts because the browser does not support the FontFace API but will continue attempting to print the page'])));var v=\"function\"==typeof l?l():l;if(\"string\"!=typeof v)n.logMessages(['\"react-to-print\" expected a \"string\" from `pageStyle` but received \"'.concat(typeof v,'\". Styles from `pageStyle` will not be applied.')]);else{var w=y.createElement(\"style\");u&&(w.setAttribute(\"nonce\",u),y.head.setAttribute(\"nonce\",u)),w.appendChild(y.createTextNode(v)),y.head.appendChild(w)}if(o&&(e=y.body.classList).add.apply(e,t.__spreadArray([],t.__read(o.split(\" \")),!1)),!h){for(var _=h?[]:d.querySelectorAll(\"canvas\"),P=y.querySelectorAll(\"canvas\"),O=0;O<_.length;++O){var S=_[O],x=P[O].getContext(\"2d\");x&&x.drawImage(S,0,0)}var E=function(e){var t=g[e],n=t.getAttribute(\"src\");if(n){var r=new Image;r.onload=function(){return m(t)},r.onerror=function(e,n,r,o,i){return m(t,[\"Error loading <img>\",t,\"Error\",i])},r.src=n}else m(t,['Found an <img> tag with an empty \"src\" attribute. This prevents pre-loading it. The <img> is:',t])};for(O=0;O<g.length;O++)E(O);var j=function(e){var t=b[e];t.preload=\"auto\";var n=t.getAttribute(\"poster\");if(n){var r=new Image;r.onload=function(){return m(t)},r.onerror=function(e,r,o,i,a){return m(t,[\"Error loading video poster\",n,\"for video\",t,\"Error:\",a])},r.src=n}else t.readyState>=2?m(t):(t.onloadeddata=function(){return m(t)},t.onerror=function(e,n,r,o,i){return m(t,[\"Error loading video\",t,\"Error\",i])},t.onstalled=function(){return m(t,[\"Loading video stalled, skipping\",t])})};for(O=0;O<b.length;O++)j(O);var T=\"input\",A=d.querySelectorAll(T),C=y.querySelectorAll(T);for(O=0;O<A.length;O++)C[O].value=A[O].value;var k=\"input[type=checkbox],input[type=radio]\",M=d.querySelectorAll(k),R=y.querySelectorAll(k);for(O=0;O<M.length;O++)R[O].checked=M[O].checked;var q=\"select\",D=d.querySelectorAll(q),I=y.querySelectorAll(q);for(O=0;O<D.length;O++)I[O].value=D[O].value}if(a)for(var F=document.querySelectorAll(\"style, link[rel='stylesheet']\"),L=function(e,t){var r=F[e];if(\"style\"===r.tagName.toLowerCase()){var o=y.createElement(r.tagName),i=r.sheet;if(i){var a=\"\";try{for(var c=i.cssRules.length,l=0;l<c;++l)\"string\"==typeof i.cssRules[l].cssText&&(a+=\"\".concat(i.cssRules[l].cssText,\"\\r\\n\"))}catch(e){n.logMessages([\"A stylesheet could not be accessed. This is likely due to the stylesheet having cross-origin imports, and many browsers block script access to cross-origin stylesheets. See https://github.com/gregnb/react-to-print/issues/429 for details. You may be able to load the sheet by both marking the stylesheet with the cross `crossorigin` attribute, and setting the `Access-Control-Allow-Origin` header on the server serving the stylesheet. Alternatively, host the stylesheet on your domain to avoid this issue entirely.\",r],\"warning\")}o.setAttribute(\"id\",\"react-to-print-\".concat(e)),u&&o.setAttribute(\"nonce\",u),o.appendChild(y.createTextNode(a)),y.head.appendChild(o)}}else if(r.getAttribute(\"href\"))if(r.hasAttribute(\"disabled\"))n.logMessages([\"`react-to-print` encountered a <link> tag with a `disabled` attribute and will ignore it. Note that the `disabled` attribute is deprecated, and some browsers ignore it. You should stop using it. https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link#attr-disabled. The <link> is:\",r],\"warning\"),m(r);else{for(var s=y.createElement(r.tagName),f=(l=0,r.attributes.length);l<f;++l){var d=r.attributes[l];d&&s.setAttribute(d.nodeName,d.nodeValue||\"\")}s.onload=function(){return m(s)},s.onerror=function(e,t,n,r,o){return m(s,[\"Failed to load\",s,\"Error:\",o])},u&&s.setAttribute(\"nonce\",u),y.head.appendChild(s)}else n.logMessages([\"`react-to-print` encountered a <link> tag with an empty `href` attribute. In addition to being invalid HTML, this can cause problems in many browsers, and so the <link> was not loaded. The <link> is:\",r],\"warning\"),m(r)},W=(O=0,F.length);O<W;++O)L(O)}0!==n.numResourcesToLoad&&a||n.triggerPrint(f)},n.handleRemoveIframe(!0),document.body.appendChild(f)}else n.logMessages(['\"react-to-print\" could not locate the DOM node corresponding with the `content` prop'])}else n.logMessages(['There is nothing to print because the \"content\" prop returned \"null\". Please ensure \"content\" is renderable before allowing \"react-to-print\" to be called.']);else n.logMessages([\"To print a functional component ensure it is wrapped with `React.forwardRef`, and ensure the forwarded ref is used. See the README for an example: https://github.com/gregnb/react-to-print#examples\"])},n.handleRemoveIframe=function(e){var t=n.props.removeAfterPrint;if(e||t){var r=document.getElementById(\"printWindow\");r&&document.body.removeChild(r)}},n.logMessages=function(e,t){void 0===t&&(t=\"error\"),n.props.suppressErrors||(\"error\"===t?console.error(e):\"warning\"===t?console.warn(e):\"debug\"===t&&console.debug(e))},n}return t.__extends(o,e),o.prototype.render=function(){var e=this.props,t=e.children,r=e.trigger;if(r)return n.cloneElement(r(),{onClick:this.handleClick});if(!l)return this.logMessages(['\"react-to-print\" requires React ^16.3.0 to be able to use \"PrintContext\"']),null;var o={handlePrint:this.handleClick};return n.createElement(l.Provider,{value:o},t)},o.defaultProps=u,o}(n.Component);e.default=s,e.useReactToPrint=function(e){if(!c)return e.suppressErrors||console.error('\"react-to-print\" requires React ^16.8.0 to be able to use \"useReactToPrint\"'),function(){throw new Error('\"react-to-print\" requires React ^16.8.0 to be able to use \"useReactToPrint\"')};var r=n.useMemo((function(){return new s(t.__assign(t.__assign({},u),e))}),[e]);return n.useCallback((function(){return r.handleClick()}),[r])}}(),i}()}));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-to-print/lib/index.js?");

/***/ }),

/***/ "./node_modules/react-transition-group/esm/Transition.js":
/*!***************************************************************!*\
  !*** ./node_modules/react-transition-group/esm/Transition.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ENTERED\": function() { return /* binding */ ENTERED; },\n/* harmony export */   \"ENTERING\": function() { return /* binding */ ENTERING; },\n/* harmony export */   \"EXITED\": function() { return /* binding */ EXITED; },\n/* harmony export */   \"EXITING\": function() { return /* binding */ EXITING; },\n/* harmony export */   \"UNMOUNTED\": function() { return /* binding */ UNMOUNTED; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ \"./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./config */ \"./node_modules/react-transition-group/esm/config.js\");\n/* harmony import */ var _utils_PropTypes__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/PropTypes */ \"./node_modules/react-transition-group/esm/utils/PropTypes.js\");\n/* harmony import */ var _TransitionGroupContext__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./TransitionGroupContext */ \"./node_modules/react-transition-group/esm/TransitionGroupContext.js\");\n/* harmony import */ var _utils_reflow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/reflow */ \"./node_modules/react-transition-group/esm/utils/reflow.js\");\n\n\n\n\n\n\n\n\n\nvar UNMOUNTED = 'unmounted';\nvar EXITED = 'exited';\nvar ENTERING = 'entering';\nvar ENTERED = 'entered';\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 1 },\n *   entered:  { opacity: 1 },\n *   exiting:  { opacity: 0 },\n *   exited:  { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n  (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  } // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n  ;\n\n  var _proto = Transition.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      if (nextStatus === ENTERING) {\n        if (this.props.unmountOnExit || this.props.mountOnEnter) {\n          var node = this.props.nodeRef ? this.props.nodeRef.current : react_dom__WEBPACK_IMPORTED_MODULE_3__.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n          // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n          // To make the animation happen,  we have to separate each rendering and avoid being processed as batched.\n\n          if (node) (0,_utils_reflow__WEBPACK_IMPORTED_MODULE_4__.forceReflow)(node);\n        }\n\n        this.performEnter(mounting);\n      } else {\n        this.performExit();\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context ? this.context.isMounting : mounting;\n\n    var _ref2 = this.props.nodeRef ? [appearing] : [react_dom__WEBPACK_IMPORTED_MODULE_3__.findDOMNode(this), appearing],\n        maybeNode = _ref2[0],\n        maybeAppearing = _ref2[1];\n\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter || _config__WEBPACK_IMPORTED_MODULE_5__[\"default\"].disabled) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onEnter(maybeNode, maybeAppearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(maybeNode, maybeAppearing);\n\n      _this2.onTransitionEnd(enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(maybeNode, maybeAppearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit() {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts();\n    var maybeNode = this.props.nodeRef ? undefined : react_dom__WEBPACK_IMPORTED_MODULE_3__.findDOMNode(this); // no exit animation skip right to EXITED\n\n    if (!exit || _config__WEBPACK_IMPORTED_MODULE_5__[\"default\"].disabled) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onExit(maybeNode);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(maybeNode);\n\n      _this3.onTransitionEnd(timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(maybeNode);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n    this.setNextCallback(handler);\n    var node = this.props.nodeRef ? this.props.nodeRef.current : react_dom__WEBPACK_IMPORTED_MODULE_3__.findDOMNode(this);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n          maybeNode = _ref3[0],\n          maybeNextCallback = _ref3[1];\n\n      this.props.addEndListener(maybeNode, maybeNextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        _in = _this$props.in,\n        _mountOnEnter = _this$props.mountOnEnter,\n        _unmountOnExit = _this$props.unmountOnExit,\n        _appear = _this$props.appear,\n        _enter = _this$props.enter,\n        _exit = _this$props.exit,\n        _timeout = _this$props.timeout,\n        _addEndListener = _this$props.addEndListener,\n        _onEnter = _this$props.onEnter,\n        _onEntering = _this$props.onEntering,\n        _onEntered = _this$props.onEntered,\n        _onExit = _this$props.onExit,\n        _onExiting = _this$props.onExiting,\n        _onExited = _this$props.onExited,\n        _nodeRef = _this$props.nodeRef,\n        childProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n    return (\n      /*#__PURE__*/\n      // allows for nested Transitions\n      react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_TransitionGroupContext__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Provider, {\n        value: null\n      }, typeof children === 'function' ? children(status, childProps) : react__WEBPACK_IMPORTED_MODULE_2___default().cloneElement(react__WEBPACK_IMPORTED_MODULE_2___default().Children.only(children), childProps))\n    );\n  };\n\n  return Transition;\n}((react__WEBPACK_IMPORTED_MODULE_2___default().Component));\n\nTransition.contextType = _TransitionGroupContext__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\nTransition.propTypes =  true ? {\n  /**\n   * A React reference to DOM element that need to transition:\n   * https://stackoverflow.com/a/51127130/4671932\n   *\n   *   - When `nodeRef` prop is used, `node` is not passed to callback functions\n   *      (e.g. `onEnter`) because user already has direct access to the node.\n   *   - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n   *     `nodeRef` need to be provided to `Transition` with changed `key` prop\n   *     (see\n   *     [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n   */\n  nodeRef: prop_types__WEBPACK_IMPORTED_MODULE_7___default().shape({\n    current: typeof Element === 'undefined' ? (prop_types__WEBPACK_IMPORTED_MODULE_7___default().any) : function (propValue, key, componentName, location, propFullName, secret) {\n      var value = propValue[key];\n      return prop_types__WEBPACK_IMPORTED_MODULE_7___default().instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n    }\n  }),\n\n  /**\n   * A `function` child can be used instead of a React element. This function is\n   * called with the current transition status (`'entering'`, `'entered'`,\n   * `'exiting'`, `'exited'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: prop_types__WEBPACK_IMPORTED_MODULE_7___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_7___default().func.isRequired), (prop_types__WEBPACK_IMPORTED_MODULE_7___default().element.isRequired)]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n\n  /**\n   * By default the child component does not perform the enter transition when\n   * it first mounts, regardless of the value of `in`. If you want this\n   * behavior, set both `appear` and `in` to `true`.\n   *\n   * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n   * > only adds an additional enter transition. However, in the\n   * > `<CSSTransition>` component that first enter transition does result in\n   * > additional `.appear-*` classes, that way you can choose to style it\n   * > differently.\n   */\n  appear: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided.\n   *\n   * You may specify a single timeout for all transitions:\n   *\n   * ```jsx\n   * timeout={500}\n   * ```\n   *\n   * or individually:\n   *\n   * ```jsx\n   * timeout={{\n   *  appear: 500,\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * - `appear` defaults to the value of `enter`\n   * - `enter` defaults to `0`\n   * - `exit` defaults to `0`\n   *\n   * @type {number | { enter?: number, exit?: number, appear?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt = _utils_PropTypes__WEBPACK_IMPORTED_MODULE_8__.timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. Timeouts are still used as a fallback if provided.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func),\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func),\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func),\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func),\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func),\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func),\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func)\n} : 0; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Transition);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-transition-group/esm/Transition.js?");

/***/ }),

/***/ "./node_modules/react-transition-group/esm/TransitionGroup.js":
/*!********************************************************************!*\
  !*** ./node_modules/react-transition-group/esm/TransitionGroup.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ \"./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _TransitionGroupContext__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./TransitionGroupContext */ \"./node_modules/react-transition-group/esm/TransitionGroupContext.js\");\n/* harmony import */ var _utils_ChildMapping__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/ChildMapping */ \"./node_modules/react-transition-group/esm/utils/ChildMapping.js\");\n\n\n\n\n\n\n\n\n\nvar values = Object.values || function (obj) {\n  return Object.keys(obj).map(function (k) {\n    return obj[k];\n  });\n};\n\nvar defaultProps = {\n  component: 'div',\n  childFactory: function childFactory(child) {\n    return child;\n  }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>`  does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n  (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(TransitionGroup, _React$Component);\n\n  function TransitionGroup(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    var handleExited = _this.handleExited.bind((0,_babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_this)); // Initial children should all be entering, dependent on appear\n\n\n    _this.state = {\n      contextValue: {\n        isMounting: true\n      },\n      handleExited: handleExited,\n      firstRender: true\n    };\n    return _this;\n  }\n\n  var _proto = TransitionGroup.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.mounted = true;\n    this.setState({\n      contextValue: {\n        isMounting: false\n      }\n    });\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.mounted = false;\n  };\n\n  TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n    var prevChildMapping = _ref.children,\n        handleExited = _ref.handleExited,\n        firstRender = _ref.firstRender;\n    return {\n      children: firstRender ? (0,_utils_ChildMapping__WEBPACK_IMPORTED_MODULE_5__.getInitialChildMapping)(nextProps, handleExited) : (0,_utils_ChildMapping__WEBPACK_IMPORTED_MODULE_5__.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n      firstRender: false\n    };\n  } // node is `undefined` when user provided `nodeRef` prop\n  ;\n\n  _proto.handleExited = function handleExited(child, node) {\n    var currentChildMapping = (0,_utils_ChildMapping__WEBPACK_IMPORTED_MODULE_5__.getChildMapping)(this.props.children);\n    if (child.key in currentChildMapping) return;\n\n    if (child.props.onExited) {\n      child.props.onExited(node);\n    }\n\n    if (this.mounted) {\n      this.setState(function (state) {\n        var children = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state.children);\n\n        delete children[child.key];\n        return {\n          children: children\n        };\n      });\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        Component = _this$props.component,\n        childFactory = _this$props.childFactory,\n        props = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_this$props, [\"component\", \"childFactory\"]);\n\n    var contextValue = this.state.contextValue;\n    var children = values(this.state.children).map(childFactory);\n    delete props.appear;\n    delete props.enter;\n    delete props.exit;\n\n    if (Component === null) {\n      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(_TransitionGroupContext__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Provider, {\n        value: contextValue\n      }, children);\n    }\n\n    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(_TransitionGroupContext__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Provider, {\n      value: contextValue\n    }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(Component, props, children));\n  };\n\n  return TransitionGroup;\n}((react__WEBPACK_IMPORTED_MODULE_4___default().Component));\n\nTransitionGroup.propTypes =  true ? {\n  /**\n   * `<TransitionGroup>` renders a `<div>` by default. You can change this\n   * behavior by providing a `component` prop.\n   * If you use React v16+ and would like to avoid a wrapping `<div>` element\n   * you can pass in `component={null}`. This is useful if the wrapping div\n   * borks your css styles.\n   */\n  component: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().any),\n\n  /**\n   * A set of `<Transition>` components, that are toggled `in` and out as they\n   * leave. the `<TransitionGroup>` will inject specific transition props, so\n   * remember to spread them through if you are wrapping the `<Transition>` as\n   * with our `<Fade>` example.\n   *\n   * While this component is meant for multiple `Transition` or `CSSTransition`\n   * children, sometimes you may want to have a single transition child with\n   * content that you want to be transitioned out and in when you change it\n   * (e.g. routes, images etc.) In that case you can change the `key` prop of\n   * the transition child as you change its content, this will cause\n   * `TransitionGroup` to transition the child out and back in.\n   */\n  children: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().node),\n\n  /**\n   * A convenience prop that enables or disables appear animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  appear: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n\n  /**\n   * A convenience prop that enables or disables enter animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  enter: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n\n  /**\n   * A convenience prop that enables or disables exit animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  exit: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n\n  /**\n   * You may need to apply reactive updates to a child as it is exiting.\n   * This is generally done by using `cloneElement` however in the case of an exiting\n   * child the element has already been removed and not accessible to the consumer.\n   *\n   * If you do need to update a child as it leaves you can provide a `childFactory`\n   * to wrap every child, even the ones that are leaving.\n   *\n   * @type Function(child: ReactElement) -> ReactElement\n   */\n  childFactory: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func)\n} : 0;\nTransitionGroup.defaultProps = defaultProps;\n/* harmony default export */ __webpack_exports__[\"default\"] = (TransitionGroup);\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-transition-group/esm/TransitionGroup.js?");

/***/ }),

/***/ "./node_modules/react-transition-group/esm/TransitionGroupContext.js":
/*!***************************************************************************!*\
  !*** ./node_modules/react-transition-group/esm/TransitionGroupContext.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (react__WEBPACK_IMPORTED_MODULE_0___default().createContext(null));\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-transition-group/esm/TransitionGroupContext.js?");

/***/ }),

/***/ "./node_modules/react-transition-group/esm/config.js":
/*!***********************************************************!*\
  !*** ./node_modules/react-transition-group/esm/config.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  disabled: false\n});\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-transition-group/esm/config.js?");

/***/ }),

/***/ "./node_modules/react-transition-group/esm/utils/ChildMapping.js":
/*!***********************************************************************!*\
  !*** ./node_modules/react-transition-group/esm/utils/ChildMapping.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getChildMapping\": function() { return /* binding */ getChildMapping; },\n/* harmony export */   \"getInitialChildMapping\": function() { return /* binding */ getInitialChildMapping; },\n/* harmony export */   \"getNextChildMapping\": function() { return /* binding */ getNextChildMapping; },\n/* harmony export */   \"mergeChildMappings\": function() { return /* binding */ mergeChildMappings; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nfunction getChildMapping(children, mapFn) {\n  var mapper = function mapper(child) {\n    return mapFn && (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(child) ? mapFn(child) : child;\n  };\n\n  var result = Object.create(null);\n  if (children) react__WEBPACK_IMPORTED_MODULE_0__.Children.map(children, function (c) {\n    return c;\n  }).forEach(function (child) {\n    // run the map function here instead so that the key is the computed one\n    result[child.key] = mapper(child);\n  });\n  return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nfunction mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  function getValueForKey(key) {\n    return key in next ? next[key] : prev[key];\n  } // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n\n\n  var nextKeysPending = Object.create(null);\n  var pendingKeys = [];\n\n  for (var prevKey in prev) {\n    if (prevKey in next) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  var i;\n  var childMapping = {};\n\n  for (var nextKey in next) {\n    if (nextKeysPending[nextKey]) {\n      for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n        var pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n\n    childMapping[nextKey] = getValueForKey(nextKey);\n  } // Finally, add the keys which didn't appear before any key in `next`\n\n\n  for (i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n  return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n  return getChildMapping(props.children, function (child) {\n    return (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(child, {\n      onExited: onExited.bind(null, child),\n      in: true,\n      appear: getProp(child, 'appear', props),\n      enter: getProp(child, 'enter', props),\n      exit: getProp(child, 'exit', props)\n    });\n  });\n}\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n  var nextChildMapping = getChildMapping(nextProps.children);\n  var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n  Object.keys(children).forEach(function (key) {\n    var child = children[key];\n    if (!(0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(child)) return;\n    var hasPrev = (key in prevChildMapping);\n    var hasNext = (key in nextChildMapping);\n    var prevChild = prevChildMapping[key];\n    var isLeaving = (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n    if (hasNext && (!hasPrev || isLeaving)) {\n      // console.log('entering', key)\n      children[key] = (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(child, {\n        onExited: onExited.bind(null, child),\n        in: true,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    } else if (!hasNext && hasPrev && !isLeaving) {\n      // item is old (exiting)\n      // console.log('leaving', key)\n      children[key] = (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(child, {\n        in: false\n      });\n    } else if (hasNext && hasPrev && (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(prevChild)) {\n      // item hasn't changed transition states\n      // copy over the last transition props;\n      // console.log('unchanged', key)\n      children[key] = (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(child, {\n        onExited: onExited.bind(null, child),\n        in: prevChild.props.in,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    }\n  });\n  return children;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-transition-group/esm/utils/ChildMapping.js?");

/***/ }),

/***/ "./node_modules/react-transition-group/esm/utils/PropTypes.js":
/*!********************************************************************!*\
  !*** ./node_modules/react-transition-group/esm/utils/PropTypes.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"classNamesShape\": function() { return /* binding */ classNamesShape; },\n/* harmony export */   \"timeoutsShape\": function() { return /* binding */ timeoutsShape; }\n/* harmony export */ });\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_0__);\n\nvar timeoutsShape =  true ? prop_types__WEBPACK_IMPORTED_MODULE_0___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_0___default().number), prop_types__WEBPACK_IMPORTED_MODULE_0___default().shape({\n  enter: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().number),\n  exit: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().number),\n  appear: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().number)\n}).isRequired]) : 0;\nvar classNamesShape =  true ? prop_types__WEBPACK_IMPORTED_MODULE_0___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_0___default().string), prop_types__WEBPACK_IMPORTED_MODULE_0___default().shape({\n  enter: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().string),\n  exit: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().string),\n  active: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().string)\n}), prop_types__WEBPACK_IMPORTED_MODULE_0___default().shape({\n  enter: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().string),\n  enterDone: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().string),\n  enterActive: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().string),\n  exit: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().string),\n  exitDone: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().string),\n  exitActive: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().string)\n})]) : 0;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-transition-group/esm/utils/PropTypes.js?");

/***/ }),

/***/ "./node_modules/react-transition-group/esm/utils/reflow.js":
/*!*****************************************************************!*\
  !*** ./node_modules/react-transition-group/esm/utils/reflow.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"forceReflow\": function() { return /* binding */ forceReflow; }\n/* harmony export */ });\nvar forceReflow = function forceReflow(node) {\n  return node.scrollTop;\n};\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-transition-group/esm/utils/reflow.js?");

/***/ }),

/***/ "./node_modules/react/cjs/react-jsx-runtime.development.js":
/*!*****************************************************************!*\
  !*** ./node_modules/react/cjs/react-jsx-runtime.development.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n  (function() {\n'use strict';\n\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable !== 'object') {\n    return null;\n  }\n\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n\n  return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n  {\n    {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  var displayName = outerType.displayName;\n\n  if (displayName) {\n    return displayName;\n  }\n\n  var functionName = innerType.displayName || innerType.name || '';\n  return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n  return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n  if (type == null) {\n    // Host root, text node or just invalid type.\n    return null;\n  }\n\n  {\n    if (typeof type.tag === 'number') {\n      error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n    }\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || null;\n  }\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'Fragment';\n\n    case REACT_PORTAL_TYPE:\n      return 'Portal';\n\n    case REACT_PROFILER_TYPE:\n      return 'Profiler';\n\n    case REACT_STRICT_MODE_TYPE:\n      return 'StrictMode';\n\n    case REACT_SUSPENSE_TYPE:\n      return 'Suspense';\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return 'SuspenseList';\n\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        var context = type;\n        return getContextName(context) + '.Consumer';\n\n      case REACT_PROVIDER_TYPE:\n        var provider = type;\n        return getContextName(provider._context) + '.Provider';\n\n      case REACT_FORWARD_REF_TYPE:\n        return getWrappedName(type, type.render, 'ForwardRef');\n\n      case REACT_MEMO_TYPE:\n        var outerName = type.displayName || null;\n\n        if (outerName !== null) {\n          return outerName;\n        }\n\n        return getComponentNameFromType(type.type) || 'Memo';\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            return getComponentNameFromType(init(payload));\n          } catch (x) {\n            return null;\n          }\n        }\n\n      // eslint-disable-next-line no-fallthrough\n    }\n  }\n\n  return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n  {\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      prevLog = console.log;\n      prevInfo = console.info;\n      prevWarn = console.warn;\n      prevError = console.error;\n      prevGroup = console.group;\n      prevGroupCollapsed = console.groupCollapsed;\n      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n      var props = {\n        configurable: true,\n        enumerable: true,\n        value: disabledLog,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        info: props,\n        log: props,\n        warn: props,\n        error: props,\n        group: props,\n        groupCollapsed: props,\n        groupEnd: props\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    disabledDepth++;\n  }\n}\nfunction reenableLogs() {\n  {\n    disabledDepth--;\n\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      var props = {\n        configurable: true,\n        enumerable: true,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        log: assign({}, props, {\n          value: prevLog\n        }),\n        info: assign({}, props, {\n          value: prevInfo\n        }),\n        warn: assign({}, props, {\n          value: prevWarn\n        }),\n        error: assign({}, props, {\n          value: prevError\n        }),\n        group: assign({}, props, {\n          value: prevGroup\n        }),\n        groupCollapsed: assign({}, props, {\n          value: prevGroupCollapsed\n        }),\n        groupEnd: assign({}, props, {\n          value: prevGroupEnd\n        })\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    if (disabledDepth < 0) {\n      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n    }\n  }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n  {\n    if (prefix === undefined) {\n      // Extract the VM specific prefix used by each line.\n      try {\n        throw Error();\n      } catch (x) {\n        var match = x.stack.trim().match(/\\n( *(at )?)/);\n        prefix = match && match[1] || '';\n      }\n    } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n    return '\\n' + prefix + name;\n  }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n  componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n  // If something asked for a stack inside a fake render, it should get ignored.\n  if ( !fn || reentry) {\n    return '';\n  }\n\n  {\n    var frame = componentFrameCache.get(fn);\n\n    if (frame !== undefined) {\n      return frame;\n    }\n  }\n\n  var control;\n  reentry = true;\n  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n  Error.prepareStackTrace = undefined;\n  var previousDispatcher;\n\n  {\n    previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n    // for warnings.\n\n    ReactCurrentDispatcher.current = null;\n    disableLogs();\n  }\n\n  try {\n    // This should throw.\n    if (construct) {\n      // Something should be setting the props in the constructor.\n      var Fake = function () {\n        throw Error();\n      }; // $FlowFixMe\n\n\n      Object.defineProperty(Fake.prototype, 'props', {\n        set: function () {\n          // We use a throwing setter instead of frozen or non-writable props\n          // because that won't throw in a non-strict mode function.\n          throw Error();\n        }\n      });\n\n      if (typeof Reflect === 'object' && Reflect.construct) {\n        // We construct a different control for this case to include any extra\n        // frames added by the construct call.\n        try {\n          Reflect.construct(Fake, []);\n        } catch (x) {\n          control = x;\n        }\n\n        Reflect.construct(fn, [], Fake);\n      } else {\n        try {\n          Fake.call();\n        } catch (x) {\n          control = x;\n        }\n\n        fn.call(Fake.prototype);\n      }\n    } else {\n      try {\n        throw Error();\n      } catch (x) {\n        control = x;\n      }\n\n      fn();\n    }\n  } catch (sample) {\n    // This is inlined manually because closure doesn't do it for us.\n    if (sample && control && typeof sample.stack === 'string') {\n      // This extracts the first frame from the sample that isn't also in the control.\n      // Skipping one frame that we assume is the frame that calls the two.\n      var sampleLines = sample.stack.split('\\n');\n      var controlLines = control.stack.split('\\n');\n      var s = sampleLines.length - 1;\n      var c = controlLines.length - 1;\n\n      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n        // We expect at least one stack frame to be shared.\n        // Typically this will be the root most one. However, stack frames may be\n        // cut off due to maximum stack limits. In this case, one maybe cut off\n        // earlier than the other. We assume that the sample is longer or the same\n        // and there for cut off earlier. So we should find the root most frame in\n        // the sample somewhere in the control.\n        c--;\n      }\n\n      for (; s >= 1 && c >= 0; s--, c--) {\n        // Next we find the first one that isn't the same which should be the\n        // frame that called our sample function and the control.\n        if (sampleLines[s] !== controlLines[c]) {\n          // In V8, the first line is describing the message but other VMs don't.\n          // If we're about to return the first line, and the control is also on the same\n          // line, that's a pretty good indicator that our sample threw at same line as\n          // the control. I.e. before we entered the sample frame. So we ignore this result.\n          // This can happen if you passed a class to function component, or non-function.\n          if (s !== 1 || c !== 1) {\n            do {\n              s--;\n              c--; // We may still have similar intermediate frames from the construct call.\n              // The next one that isn't the same should be our match though.\n\n              if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n                var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n                // but we have a user-provided \"displayName\"\n                // splice it in to make the stack more readable.\n\n\n                if (fn.displayName && _frame.includes('<anonymous>')) {\n                  _frame = _frame.replace('<anonymous>', fn.displayName);\n                }\n\n                {\n                  if (typeof fn === 'function') {\n                    componentFrameCache.set(fn, _frame);\n                  }\n                } // Return the line we found.\n\n\n                return _frame;\n              }\n            } while (s >= 1 && c >= 0);\n          }\n\n          break;\n        }\n      }\n    }\n  } finally {\n    reentry = false;\n\n    {\n      ReactCurrentDispatcher.current = previousDispatcher;\n      reenableLogs();\n    }\n\n    Error.prepareStackTrace = previousPrepareStackTrace;\n  } // Fallback to just using the name if we couldn't make it throw.\n\n\n  var name = fn ? fn.displayName || fn.name : '';\n  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n  {\n    if (typeof fn === 'function') {\n      componentFrameCache.set(fn, syntheticFrame);\n    }\n  }\n\n  return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(fn, false);\n  }\n}\n\nfunction shouldConstruct(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n  if (type == null) {\n    return '';\n  }\n\n  if (typeof type === 'function') {\n    {\n      return describeNativeComponentFrame(type, shouldConstruct(type));\n    }\n  }\n\n  if (typeof type === 'string') {\n    return describeBuiltInComponentFrame(type);\n  }\n\n  switch (type) {\n    case REACT_SUSPENSE_TYPE:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return describeBuiltInComponentFrame('SuspenseList');\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        return describeFunctionComponentFrame(type.render);\n\n      case REACT_MEMO_TYPE:\n        // Memo may contain any component type so we recursively resolve it.\n        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            // Lazy may contain any component type so we recursively resolve it.\n            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n          } catch (x) {}\n        }\n    }\n  }\n\n  return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame.setExtraStackFrame(null);\n    }\n  }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n  {\n    // $FlowFixMe This is okay but Flow doesn't know it.\n    var has = Function.call.bind(hasOwnProperty);\n\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            // eslint-disable-next-line react-internal/prod-error-codes\n            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n\n          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n        } catch (ex) {\n          error$1 = ex;\n        }\n\n        if (error$1 && !(error$1 instanceof Error)) {\n          setCurrentlyValidatingElement(element);\n\n          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n          setCurrentlyValidatingElement(null);\n        }\n\n        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error$1.message] = true;\n          setCurrentlyValidatingElement(element);\n\n          error('Failed %s type: %s', location, error$1.message);\n\n          setCurrentlyValidatingElement(null);\n        }\n      }\n    }\n  }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n  {\n    // toStringTag is needed for namespaced types like Temporal.Instant\n    var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n    var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n    return type;\n  }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n  {\n    try {\n      testStringCoercion(value);\n      return false;\n    } catch (e) {\n      return true;\n    }\n  }\n}\n\nfunction testStringCoercion(value) {\n  // If you ended up here by following an exception call stack, here's what's\n  // happened: you supplied an object or symbol value to React (as a prop, key,\n  // DOM attribute, CSS property, string ref, etc.) and when React tried to\n  // coerce it to a string using `'' + value`, an exception was thrown.\n  //\n  // The most common types that will cause this exception are `Symbol` instances\n  // and Temporal objects like `Temporal.Instant`. But any object that has a\n  // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n  // exception. (Library authors do this to prevent users from using built-in\n  // numeric operators like `+` or comparison operators like `>=` because custom\n  // methods are needed to perform accurate arithmetic or comparison.)\n  //\n  // To fix the problem, coerce this object or symbol value to a string before\n  // passing it to React. The most reliable way is usually `String(value)`.\n  //\n  // To find which value is throwing, check the browser or debugger console.\n  // Before this exception was thrown, there should be `console.error` output\n  // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n  // problem and how that type was used: key, atrribute, input value prop, etc.\n  // In most cases, this console output also shows the component and its\n  // ancestor components where the exception happened.\n  //\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n  key: true,\n  ref: true,\n  __self: true,\n  __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n  didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n  {\n    if (hasOwnProperty.call(config, 'ref')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n  {\n    if (hasOwnProperty.call(config, 'key')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n  {\n    if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n      var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n      if (!didWarnAboutStringRefs[componentName]) {\n        error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n        didWarnAboutStringRefs[componentName] = true;\n      }\n    }\n  }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n  {\n    var warnAboutAccessingKey = function () {\n      if (!specialPropKeyWarningShown) {\n        specialPropKeyWarningShown = true;\n\n        error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    };\n\n    warnAboutAccessingKey.isReactWarning = true;\n    Object.defineProperty(props, 'key', {\n      get: warnAboutAccessingKey,\n      configurable: true\n    });\n  }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n  {\n    var warnAboutAccessingRef = function () {\n      if (!specialPropRefWarningShown) {\n        specialPropRefWarningShown = true;\n\n        error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    };\n\n    warnAboutAccessingRef.isReactWarning = true;\n    Object.defineProperty(props, 'ref', {\n      get: warnAboutAccessingRef,\n      configurable: true\n    });\n  }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n  var element = {\n    // This tag allows us to uniquely identify this as a React Element\n    $$typeof: REACT_ELEMENT_TYPE,\n    // Built-in properties that belong on the element\n    type: type,\n    key: key,\n    ref: ref,\n    props: props,\n    // Record the component responsible for creating this element.\n    _owner: owner\n  };\n\n  {\n    // The validation flag is currently mutative. We put it on\n    // an external backing store so that we can freeze the whole object.\n    // This can be replaced with a WeakMap once they are implemented in\n    // commonly used development environments.\n    element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n    // the validation flag non-enumerable (where possible, which should\n    // include every environment we run tests in), so the test framework\n    // ignores it.\n\n    Object.defineProperty(element._store, 'validated', {\n      configurable: false,\n      enumerable: false,\n      writable: true,\n      value: false\n    }); // self and source are DEV only properties.\n\n    Object.defineProperty(element, '_self', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: self\n    }); // Two elements created in two different places should be considered\n    // equal for testing purposes and therefore we hide it from enumeration.\n\n    Object.defineProperty(element, '_source', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: source\n    });\n\n    if (Object.freeze) {\n      Object.freeze(element.props);\n      Object.freeze(element);\n    }\n  }\n\n  return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n  {\n    var propName; // Reserved names are extracted\n\n    var props = {};\n    var key = null;\n    var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n    // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\n    // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\n    // but as an intermediary step, we will use jsxDEV for everything except\n    // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\n    // key is explicitly declared to be undefined or not.\n\n    if (maybeKey !== undefined) {\n      {\n        checkKeyStringCoercion(maybeKey);\n      }\n\n      key = '' + maybeKey;\n    }\n\n    if (hasValidKey(config)) {\n      {\n        checkKeyStringCoercion(config.key);\n      }\n\n      key = '' + config.key;\n    }\n\n    if (hasValidRef(config)) {\n      ref = config.ref;\n      warnIfStringRefCannotBeAutoConverted(config, self);\n    } // Remaining properties are added to a new props object\n\n\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        props[propName] = config[propName];\n      }\n    } // Resolve default props\n\n\n    if (type && type.defaultProps) {\n      var defaultProps = type.defaultProps;\n\n      for (propName in defaultProps) {\n        if (props[propName] === undefined) {\n          props[propName] = defaultProps[propName];\n        }\n      }\n    }\n\n    if (key || ref) {\n      var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n      if (key) {\n        defineKeyPropWarningGetter(props, displayName);\n      }\n\n      if (ref) {\n        defineRefPropWarningGetter(props, displayName);\n      }\n    }\n\n    return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n  }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n    }\n  }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n  propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n  {\n    return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n  }\n}\n\nfunction getDeclarationErrorAddendum() {\n  {\n    if (ReactCurrentOwner$1.current) {\n      var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n      if (name) {\n        return '\\n\\nCheck the render method of `' + name + '`.';\n      }\n    }\n\n    return '';\n  }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n  {\n    if (source !== undefined) {\n      var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n      var lineNumber = source.lineNumber;\n      return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n    }\n\n    return '';\n  }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n  {\n    var info = getDeclarationErrorAddendum();\n\n    if (!info) {\n      var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n      if (parentName) {\n        info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n      }\n    }\n\n    return info;\n  }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n  {\n    if (!element._store || element._store.validated || element.key != null) {\n      return;\n    }\n\n    element._store.validated = true;\n    var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n    if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n      return;\n    }\n\n    ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n    // property, it may be the creator of the child that's responsible for\n    // assigning it a key.\n\n    var childOwner = '';\n\n    if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n      // Give the component that originally created this child.\n      childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n    }\n\n    setCurrentlyValidatingElement$1(element);\n\n    error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n    setCurrentlyValidatingElement$1(null);\n  }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n  {\n    if (typeof node !== 'object') {\n      return;\n    }\n\n    if (isArray(node)) {\n      for (var i = 0; i < node.length; i++) {\n        var child = node[i];\n\n        if (isValidElement(child)) {\n          validateExplicitKey(child, parentType);\n        }\n      }\n    } else if (isValidElement(node)) {\n      // This element was passed in a valid location.\n      if (node._store) {\n        node._store.validated = true;\n      }\n    } else if (node) {\n      var iteratorFn = getIteratorFn(node);\n\n      if (typeof iteratorFn === 'function') {\n        // Entry iterators used to provide implicit keys,\n        // but now we print a separate warning for them later.\n        if (iteratorFn !== node.entries) {\n          var iterator = iteratorFn.call(node);\n          var step;\n\n          while (!(step = iterator.next()).done) {\n            if (isValidElement(step.value)) {\n              validateExplicitKey(step.value, parentType);\n            }\n          }\n        }\n      }\n    }\n  }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n  {\n    var type = element.type;\n\n    if (type === null || type === undefined || typeof type === 'string') {\n      return;\n    }\n\n    var propTypes;\n\n    if (typeof type === 'function') {\n      propTypes = type.propTypes;\n    } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n    // Inner props are checked in the reconciler.\n    type.$$typeof === REACT_MEMO_TYPE)) {\n      propTypes = type.propTypes;\n    } else {\n      return;\n    }\n\n    if (propTypes) {\n      // Intentionally inside to avoid triggering lazy initializers:\n      var name = getComponentNameFromType(type);\n      checkPropTypes(propTypes, element.props, 'prop', name, element);\n    } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n      propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n      var _name = getComponentNameFromType(type);\n\n      error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n    }\n\n    if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n      error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n    }\n  }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n  {\n    var keys = Object.keys(fragment.props);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n\n      if (key !== 'children' && key !== 'key') {\n        setCurrentlyValidatingElement$1(fragment);\n\n        error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n        setCurrentlyValidatingElement$1(null);\n        break;\n      }\n    }\n\n    if (fragment.ref !== null) {\n      setCurrentlyValidatingElement$1(fragment);\n\n      error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n      setCurrentlyValidatingElement$1(null);\n    }\n  }\n}\n\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n  {\n    var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n    // succeed and there will likely be errors in render.\n\n    if (!validType) {\n      var info = '';\n\n      if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n        info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n      }\n\n      var sourceInfo = getSourceInfoErrorAddendum(source);\n\n      if (sourceInfo) {\n        info += sourceInfo;\n      } else {\n        info += getDeclarationErrorAddendum();\n      }\n\n      var typeString;\n\n      if (type === null) {\n        typeString = 'null';\n      } else if (isArray(type)) {\n        typeString = 'array';\n      } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n        typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n        info = ' Did you accidentally export a JSX literal instead of a component?';\n      } else {\n        typeString = typeof type;\n      }\n\n      error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n    }\n\n    var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n    // TODO: Drop this when these are no longer allowed as the type argument.\n\n    if (element == null) {\n      return element;\n    } // Skip key warning if the type isn't valid since our key validation logic\n    // doesn't expect a non-string/function type and can throw confusing errors.\n    // We don't want exception behavior to differ between dev and prod.\n    // (Rendering will throw with a helpful message and as soon as the type is\n    // fixed, the key warnings will appear.)\n\n\n    if (validType) {\n      var children = props.children;\n\n      if (children !== undefined) {\n        if (isStaticChildren) {\n          if (isArray(children)) {\n            for (var i = 0; i < children.length; i++) {\n              validateChildKeys(children[i], type);\n            }\n\n            if (Object.freeze) {\n              Object.freeze(children);\n            }\n          } else {\n            error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n          }\n        } else {\n          validateChildKeys(children, type);\n        }\n      }\n    }\n\n    if (type === REACT_FRAGMENT_TYPE) {\n      validateFragmentProps(element);\n    } else {\n      validatePropTypes(element);\n    }\n\n    return element;\n  }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n  {\n    return jsxWithValidation(type, props, key, true);\n  }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n  {\n    return jsxWithValidation(type, props, key, false);\n  }\n}\n\nvar jsx =  jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs =  jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n  })();\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react/cjs/react-jsx-runtime.development.js?");

/***/ }),

/***/ "./node_modules/react/cjs/react.development.js":
/*!*****************************************************!*\
  !*** ./node_modules/react/cjs/react.development.js ***!
  \*****************************************************/
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("/* module decorator */ module = __webpack_require__.nmd(module);\n/**\n * @license React\n * react.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n  (function() {\n\n          'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n          var ReactVersion = '18.2.0';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable !== 'object') {\n    return null;\n  }\n\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n\n  return null;\n}\n\n/**\n * Keeps track of the current dispatcher.\n */\nvar ReactCurrentDispatcher = {\n  /**\n   * @internal\n   * @type {ReactComponent}\n   */\n  current: null\n};\n\n/**\n * Keeps track of the current batch's configuration such as how long an update\n * should suspend for if it needs to.\n */\nvar ReactCurrentBatchConfig = {\n  transition: null\n};\n\nvar ReactCurrentActQueue = {\n  current: null,\n  // Used to reproduce behavior of `batchedUpdates` in legacy mode.\n  isBatchingLegacy: false,\n  didScheduleLegacyUpdate: false\n};\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n  /**\n   * @internal\n   * @type {ReactComponent}\n   */\n  current: null\n};\n\nvar ReactDebugCurrentFrame = {};\nvar currentExtraStackFrame = null;\nfunction setExtraStackFrame(stack) {\n  {\n    currentExtraStackFrame = stack;\n  }\n}\n\n{\n  ReactDebugCurrentFrame.setExtraStackFrame = function (stack) {\n    {\n      currentExtraStackFrame = stack;\n    }\n  }; // Stack implementation injected by the current renderer.\n\n\n  ReactDebugCurrentFrame.getCurrentStack = null;\n\n  ReactDebugCurrentFrame.getStackAddendum = function () {\n    var stack = ''; // Add an extra top frame while an element is being validated\n\n    if (currentExtraStackFrame) {\n      stack += currentExtraStackFrame;\n    } // Delegate to the injected renderer-specific implementation\n\n\n    var impl = ReactDebugCurrentFrame.getCurrentStack;\n\n    if (impl) {\n      stack += impl() || '';\n    }\n\n    return stack;\n  };\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar ReactSharedInternals = {\n  ReactCurrentDispatcher: ReactCurrentDispatcher,\n  ReactCurrentBatchConfig: ReactCurrentBatchConfig,\n  ReactCurrentOwner: ReactCurrentOwner\n};\n\n{\n  ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame;\n  ReactSharedInternals.ReactCurrentActQueue = ReactCurrentActQueue;\n}\n\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n\nfunction warn(format) {\n  {\n    {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      printWarning('warn', format, args);\n    }\n  }\n}\nfunction error(format) {\n  {\n    {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n  {\n    var _constructor = publicInstance.constructor;\n    var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n    var warningKey = componentName + \".\" + callerName;\n\n    if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n      return;\n    }\n\n    error(\"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n\n    didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n  }\n}\n/**\n * This is the abstract API for an update queue.\n */\n\n\nvar ReactNoopUpdateQueue = {\n  /**\n   * Checks whether or not this composite component is mounted.\n   * @param {ReactClass} publicInstance The instance we want to test.\n   * @return {boolean} True if mounted, false otherwise.\n   * @protected\n   * @final\n   */\n  isMounted: function (publicInstance) {\n    return false;\n  },\n\n  /**\n   * Forces an update. This should only be invoked when it is known with\n   * certainty that we are **not** in a DOM transaction.\n   *\n   * You may want to call this when you know that some deeper aspect of the\n   * component's state has changed but `setState` was not called.\n   *\n   * This will not invoke `shouldComponentUpdate`, but it will invoke\n   * `componentWillUpdate` and `componentDidUpdate`.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} callerName name of the calling function in the public API.\n   * @internal\n   */\n  enqueueForceUpdate: function (publicInstance, callback, callerName) {\n    warnNoop(publicInstance, 'forceUpdate');\n  },\n\n  /**\n   * Replaces all of the state. Always use this or `setState` to mutate state.\n   * You should treat `this.state` as immutable.\n   *\n   * There is no guarantee that `this.state` will be immediately updated, so\n   * accessing `this.state` after calling this method may return the old value.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object} completeState Next state.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} callerName name of the calling function in the public API.\n   * @internal\n   */\n  enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n    warnNoop(publicInstance, 'replaceState');\n  },\n\n  /**\n   * Sets a subset of the state. This only exists because _pendingState is\n   * internal. This provides a merging strategy that is not available to deep\n   * properties which is confusing. TODO: Expose pendingState or don't use it\n   * during the merge.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object} partialState Next partial state to be merged with state.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} Name of the calling function in the public API.\n   * @internal\n   */\n  enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n    warnNoop(publicInstance, 'setState');\n  }\n};\n\nvar assign = Object.assign;\n\nvar emptyObject = {};\n\n{\n  Object.freeze(emptyObject);\n}\n/**\n * Base class helpers for the updating state of a component.\n */\n\n\nfunction Component(props, context, updater) {\n  this.props = props;\n  this.context = context; // If a component has string refs, we will assign a different object later.\n\n  this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n  // renderer.\n\n  this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together.  You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n *        produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n\nComponent.prototype.setState = function (partialState, callback) {\n  if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) {\n    throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.');\n  }\n\n  this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n\nComponent.prototype.forceUpdate = function (callback) {\n  this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n\n\n{\n  var deprecatedAPIs = {\n    isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n    replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n  };\n\n  var defineDeprecationWarning = function (methodName, info) {\n    Object.defineProperty(Component.prototype, methodName, {\n      get: function () {\n        warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n\n        return undefined;\n      }\n    });\n  };\n\n  for (var fnName in deprecatedAPIs) {\n    if (deprecatedAPIs.hasOwnProperty(fnName)) {\n      defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n    }\n  }\n}\n\nfunction ComponentDummy() {}\n\nComponentDummy.prototype = Component.prototype;\n/**\n * Convenience component with default shallow equality check for sCU.\n */\n\nfunction PureComponent(props, context, updater) {\n  this.props = props;\n  this.context = context; // If a component has string refs, we will assign a different object later.\n\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n  var refObject = {\n    current: null\n  };\n\n  {\n    Object.seal(refObject);\n  }\n\n  return refObject;\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n  {\n    // toStringTag is needed for namespaced types like Temporal.Instant\n    var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n    var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n    return type;\n  }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n  {\n    try {\n      testStringCoercion(value);\n      return false;\n    } catch (e) {\n      return true;\n    }\n  }\n}\n\nfunction testStringCoercion(value) {\n  // If you ended up here by following an exception call stack, here's what's\n  // happened: you supplied an object or symbol value to React (as a prop, key,\n  // DOM attribute, CSS property, string ref, etc.) and when React tried to\n  // coerce it to a string using `'' + value`, an exception was thrown.\n  //\n  // The most common types that will cause this exception are `Symbol` instances\n  // and Temporal objects like `Temporal.Instant`. But any object that has a\n  // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n  // exception. (Library authors do this to prevent users from using built-in\n  // numeric operators like `+` or comparison operators like `>=` because custom\n  // methods are needed to perform accurate arithmetic or comparison.)\n  //\n  // To fix the problem, coerce this object or symbol value to a string before\n  // passing it to React. The most reliable way is usually `String(value)`.\n  //\n  // To find which value is throwing, check the browser or debugger console.\n  // Before this exception was thrown, there should be `console.error` output\n  // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n  // problem and how that type was used: key, atrribute, input value prop, etc.\n  // In most cases, this console output also shows the component and its\n  // ancestor components where the exception happened.\n  //\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  var displayName = outerType.displayName;\n\n  if (displayName) {\n    return displayName;\n  }\n\n  var functionName = innerType.displayName || innerType.name || '';\n  return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n  return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n  if (type == null) {\n    // Host root, text node or just invalid type.\n    return null;\n  }\n\n  {\n    if (typeof type.tag === 'number') {\n      error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n    }\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || null;\n  }\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'Fragment';\n\n    case REACT_PORTAL_TYPE:\n      return 'Portal';\n\n    case REACT_PROFILER_TYPE:\n      return 'Profiler';\n\n    case REACT_STRICT_MODE_TYPE:\n      return 'StrictMode';\n\n    case REACT_SUSPENSE_TYPE:\n      return 'Suspense';\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return 'SuspenseList';\n\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        var context = type;\n        return getContextName(context) + '.Consumer';\n\n      case REACT_PROVIDER_TYPE:\n        var provider = type;\n        return getContextName(provider._context) + '.Provider';\n\n      case REACT_FORWARD_REF_TYPE:\n        return getWrappedName(type, type.render, 'ForwardRef');\n\n      case REACT_MEMO_TYPE:\n        var outerName = type.displayName || null;\n\n        if (outerName !== null) {\n          return outerName;\n        }\n\n        return getComponentNameFromType(type.type) || 'Memo';\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            return getComponentNameFromType(init(payload));\n          } catch (x) {\n            return null;\n          }\n        }\n\n      // eslint-disable-next-line no-fallthrough\n    }\n  }\n\n  return null;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar RESERVED_PROPS = {\n  key: true,\n  ref: true,\n  __self: true,\n  __source: true\n};\nvar specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n\n{\n  didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n  {\n    if (hasOwnProperty.call(config, 'ref')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n  {\n    if (hasOwnProperty.call(config, 'key')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n  var warnAboutAccessingKey = function () {\n    {\n      if (!specialPropKeyWarningShown) {\n        specialPropKeyWarningShown = true;\n\n        error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    }\n  };\n\n  warnAboutAccessingKey.isReactWarning = true;\n  Object.defineProperty(props, 'key', {\n    get: warnAboutAccessingKey,\n    configurable: true\n  });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n  var warnAboutAccessingRef = function () {\n    {\n      if (!specialPropRefWarningShown) {\n        specialPropRefWarningShown = true;\n\n        error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    }\n  };\n\n  warnAboutAccessingRef.isReactWarning = true;\n  Object.defineProperty(props, 'ref', {\n    get: warnAboutAccessingRef,\n    configurable: true\n  });\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config) {\n  {\n    if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n      var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n      if (!didWarnAboutStringRefs[componentName]) {\n        error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);\n\n        didWarnAboutStringRefs[componentName] = true;\n      }\n    }\n  }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n  var element = {\n    // This tag allows us to uniquely identify this as a React Element\n    $$typeof: REACT_ELEMENT_TYPE,\n    // Built-in properties that belong on the element\n    type: type,\n    key: key,\n    ref: ref,\n    props: props,\n    // Record the component responsible for creating this element.\n    _owner: owner\n  };\n\n  {\n    // The validation flag is currently mutative. We put it on\n    // an external backing store so that we can freeze the whole object.\n    // This can be replaced with a WeakMap once they are implemented in\n    // commonly used development environments.\n    element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n    // the validation flag non-enumerable (where possible, which should\n    // include every environment we run tests in), so the test framework\n    // ignores it.\n\n    Object.defineProperty(element._store, 'validated', {\n      configurable: false,\n      enumerable: false,\n      writable: true,\n      value: false\n    }); // self and source are DEV only properties.\n\n    Object.defineProperty(element, '_self', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: self\n    }); // Two elements created in two different places should be considered\n    // equal for testing purposes and therefore we hide it from enumeration.\n\n    Object.defineProperty(element, '_source', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: source\n    });\n\n    if (Object.freeze) {\n      Object.freeze(element.props);\n      Object.freeze(element);\n    }\n  }\n\n  return element;\n};\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\n\nfunction createElement(type, config, children) {\n  var propName; // Reserved names are extracted\n\n  var props = {};\n  var key = null;\n  var ref = null;\n  var self = null;\n  var source = null;\n\n  if (config != null) {\n    if (hasValidRef(config)) {\n      ref = config.ref;\n\n      {\n        warnIfStringRefCannotBeAutoConverted(config);\n      }\n    }\n\n    if (hasValidKey(config)) {\n      {\n        checkKeyStringCoercion(config.key);\n      }\n\n      key = '' + config.key;\n    }\n\n    self = config.__self === undefined ? null : config.__self;\n    source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        props[propName] = config[propName];\n      }\n    }\n  } // Children can be more than one argument, and those are transferred onto\n  // the newly allocated props object.\n\n\n  var childrenLength = arguments.length - 2;\n\n  if (childrenLength === 1) {\n    props.children = children;\n  } else if (childrenLength > 1) {\n    var childArray = Array(childrenLength);\n\n    for (var i = 0; i < childrenLength; i++) {\n      childArray[i] = arguments[i + 2];\n    }\n\n    {\n      if (Object.freeze) {\n        Object.freeze(childArray);\n      }\n    }\n\n    props.children = childArray;\n  } // Resolve default props\n\n\n  if (type && type.defaultProps) {\n    var defaultProps = type.defaultProps;\n\n    for (propName in defaultProps) {\n      if (props[propName] === undefined) {\n        props[propName] = defaultProps[propName];\n      }\n    }\n  }\n\n  {\n    if (key || ref) {\n      var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n      if (key) {\n        defineKeyPropWarningGetter(props, displayName);\n      }\n\n      if (ref) {\n        defineRefPropWarningGetter(props, displayName);\n      }\n    }\n  }\n\n  return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n  var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n  return newElement;\n}\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\n\nfunction cloneElement(element, config, children) {\n  if (element === null || element === undefined) {\n    throw new Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\");\n  }\n\n  var propName; // Original props are copied\n\n  var props = assign({}, element.props); // Reserved names are extracted\n\n  var key = element.key;\n  var ref = element.ref; // Self is preserved since the owner is preserved.\n\n  var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n  // transpiler, and the original source is probably a better indicator of the\n  // true owner.\n\n  var source = element._source; // Owner will be preserved, unless ref is overridden\n\n  var owner = element._owner;\n\n  if (config != null) {\n    if (hasValidRef(config)) {\n      // Silently steal the ref from the parent.\n      ref = config.ref;\n      owner = ReactCurrentOwner.current;\n    }\n\n    if (hasValidKey(config)) {\n      {\n        checkKeyStringCoercion(config.key);\n      }\n\n      key = '' + config.key;\n    } // Remaining properties override existing props\n\n\n    var defaultProps;\n\n    if (element.type && element.type.defaultProps) {\n      defaultProps = element.type.defaultProps;\n    }\n\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        if (config[propName] === undefined && defaultProps !== undefined) {\n          // Resolve default props\n          props[propName] = defaultProps[propName];\n        } else {\n          props[propName] = config[propName];\n        }\n      }\n    }\n  } // Children can be more than one argument, and those are transferred onto\n  // the newly allocated props object.\n\n\n  var childrenLength = arguments.length - 2;\n\n  if (childrenLength === 1) {\n    props.children = children;\n  } else if (childrenLength > 1) {\n    var childArray = Array(childrenLength);\n\n    for (var i = 0; i < childrenLength; i++) {\n      childArray[i] = arguments[i + 2];\n    }\n\n    props.children = childArray;\n  }\n\n  return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n  var escapeRegex = /[=:]/g;\n  var escaperLookup = {\n    '=': '=0',\n    ':': '=2'\n  };\n  var escapedString = key.replace(escapeRegex, function (match) {\n    return escaperLookup[match];\n  });\n  return '$' + escapedString;\n}\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\n\nvar didWarnAboutMaps = false;\nvar userProvidedKeyEscapeRegex = /\\/+/g;\n\nfunction escapeUserProvidedKey(text) {\n  return text.replace(userProvidedKeyEscapeRegex, '$&/');\n}\n/**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n\nfunction getElementKey(element, index) {\n  // Do some typechecking here since we call this blindly. We want to ensure\n  // that we don't block potential future ES APIs.\n  if (typeof element === 'object' && element !== null && element.key != null) {\n    // Explicit key\n    {\n      checkKeyStringCoercion(element.key);\n    }\n\n    return escape('' + element.key);\n  } // Implicit key determined by the index in the set\n\n\n  return index.toString(36);\n}\n\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n  var type = typeof children;\n\n  if (type === 'undefined' || type === 'boolean') {\n    // All of the above are perceived as null.\n    children = null;\n  }\n\n  var invokeCallback = false;\n\n  if (children === null) {\n    invokeCallback = true;\n  } else {\n    switch (type) {\n      case 'string':\n      case 'number':\n        invokeCallback = true;\n        break;\n\n      case 'object':\n        switch (children.$$typeof) {\n          case REACT_ELEMENT_TYPE:\n          case REACT_PORTAL_TYPE:\n            invokeCallback = true;\n        }\n\n    }\n  }\n\n  if (invokeCallback) {\n    var _child = children;\n    var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array\n    // so that it's consistent if the number of children grows:\n\n    var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n\n    if (isArray(mappedChild)) {\n      var escapedChildKey = '';\n\n      if (childKey != null) {\n        escapedChildKey = escapeUserProvidedKey(childKey) + '/';\n      }\n\n      mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {\n        return c;\n      });\n    } else if (mappedChild != null) {\n      if (isValidElement(mappedChild)) {\n        {\n          // The `if` statement here prevents auto-disabling of the safe\n          // coercion ESLint rule, so we must manually disable it below.\n          // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n          if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {\n            checkKeyStringCoercion(mappedChild.key);\n          }\n        }\n\n        mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n        // traverseAllChildren used to do for objects as children\n        escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n        mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number\n        // eslint-disable-next-line react-internal/safe-string-coercion\n        escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);\n      }\n\n      array.push(mappedChild);\n    }\n\n    return 1;\n  }\n\n  var child;\n  var nextName;\n  var subtreeCount = 0; // Count of children found in the current subtree.\n\n  var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n  if (isArray(children)) {\n    for (var i = 0; i < children.length; i++) {\n      child = children[i];\n      nextName = nextNamePrefix + getElementKey(child, i);\n      subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n    }\n  } else {\n    var iteratorFn = getIteratorFn(children);\n\n    if (typeof iteratorFn === 'function') {\n      var iterableChildren = children;\n\n      {\n        // Warn about using Maps as children\n        if (iteratorFn === iterableChildren.entries) {\n          if (!didWarnAboutMaps) {\n            warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n          }\n\n          didWarnAboutMaps = true;\n        }\n      }\n\n      var iterator = iteratorFn.call(iterableChildren);\n      var step;\n      var ii = 0;\n\n      while (!(step = iterator.next()).done) {\n        child = step.value;\n        nextName = nextNamePrefix + getElementKey(child, ii++);\n        subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n      }\n    } else if (type === 'object') {\n      // eslint-disable-next-line react-internal/safe-string-coercion\n      var childrenString = String(children);\n      throw new Error(\"Objects are not valid as a React child (found: \" + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n    }\n  }\n\n  return subtreeCount;\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n  if (children == null) {\n    return children;\n  }\n\n  var result = [];\n  var count = 0;\n  mapIntoArray(children, result, '', '', function (child) {\n    return func.call(context, child, count++);\n  });\n  return result;\n}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n\nfunction countChildren(children) {\n  var n = 0;\n  mapChildren(children, function () {\n    n++; // Don't return anything\n  });\n  return n;\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n  mapChildren(children, function () {\n    forEachFunc.apply(this, arguments); // Don't return anything.\n  }, forEachContext);\n}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\n\n\nfunction toArray(children) {\n  return mapChildren(children, function (child) {\n    return child;\n  }) || [];\n}\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\n\n\nfunction onlyChild(children) {\n  if (!isValidElement(children)) {\n    throw new Error('React.Children.only expected to receive a single React element child.');\n  }\n\n  return children;\n}\n\nfunction createContext(defaultValue) {\n  // TODO: Second argument used to be an optional `calculateChangedBits`\n  // function. Warn to reserve for future use?\n  var context = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    // As a workaround to support multiple concurrent renderers, we categorize\n    // some renderers as primary and others as secondary. We only expect\n    // there to be two concurrent renderers at most: React Native (primary) and\n    // Fabric (secondary); React DOM (primary) and React ART (secondary).\n    // Secondary renderers store their context values on separate fields.\n    _currentValue: defaultValue,\n    _currentValue2: defaultValue,\n    // Used to track how many concurrent renderers this context currently\n    // supports within in a single renderer. Such as parallel server rendering.\n    _threadCount: 0,\n    // These are circular\n    Provider: null,\n    Consumer: null,\n    // Add these to use same hidden class in VM as ServerContext\n    _defaultValue: null,\n    _globalName: null\n  };\n  context.Provider = {\n    $$typeof: REACT_PROVIDER_TYPE,\n    _context: context\n  };\n  var hasWarnedAboutUsingNestedContextConsumers = false;\n  var hasWarnedAboutUsingConsumerProvider = false;\n  var hasWarnedAboutDisplayNameOnConsumer = false;\n\n  {\n    // A separate object, but proxies back to the original context object for\n    // backwards compatibility. It has a different $$typeof, so we can properly\n    // warn for the incorrect usage of Context as a Consumer.\n    var Consumer = {\n      $$typeof: REACT_CONTEXT_TYPE,\n      _context: context\n    }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n\n    Object.defineProperties(Consumer, {\n      Provider: {\n        get: function () {\n          if (!hasWarnedAboutUsingConsumerProvider) {\n            hasWarnedAboutUsingConsumerProvider = true;\n\n            error('Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?');\n          }\n\n          return context.Provider;\n        },\n        set: function (_Provider) {\n          context.Provider = _Provider;\n        }\n      },\n      _currentValue: {\n        get: function () {\n          return context._currentValue;\n        },\n        set: function (_currentValue) {\n          context._currentValue = _currentValue;\n        }\n      },\n      _currentValue2: {\n        get: function () {\n          return context._currentValue2;\n        },\n        set: function (_currentValue2) {\n          context._currentValue2 = _currentValue2;\n        }\n      },\n      _threadCount: {\n        get: function () {\n          return context._threadCount;\n        },\n        set: function (_threadCount) {\n          context._threadCount = _threadCount;\n        }\n      },\n      Consumer: {\n        get: function () {\n          if (!hasWarnedAboutUsingNestedContextConsumers) {\n            hasWarnedAboutUsingNestedContextConsumers = true;\n\n            error('Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');\n          }\n\n          return context.Consumer;\n        }\n      },\n      displayName: {\n        get: function () {\n          return context.displayName;\n        },\n        set: function (displayName) {\n          if (!hasWarnedAboutDisplayNameOnConsumer) {\n            warn('Setting `displayName` on Context.Consumer has no effect. ' + \"You should set it directly on the context with Context.displayName = '%s'.\", displayName);\n\n            hasWarnedAboutDisplayNameOnConsumer = true;\n          }\n        }\n      }\n    }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n\n    context.Consumer = Consumer;\n  }\n\n  {\n    context._currentRenderer = null;\n    context._currentRenderer2 = null;\n  }\n\n  return context;\n}\n\nvar Uninitialized = -1;\nvar Pending = 0;\nvar Resolved = 1;\nvar Rejected = 2;\n\nfunction lazyInitializer(payload) {\n  if (payload._status === Uninitialized) {\n    var ctor = payload._result;\n    var thenable = ctor(); // Transition to the next state.\n    // This might throw either because it's missing or throws. If so, we treat it\n    // as still uninitialized and try again next time. Which is the same as what\n    // happens if the ctor or any wrappers processing the ctor throws. This might\n    // end up fixing it if the resolution was a concurrency bug.\n\n    thenable.then(function (moduleObject) {\n      if (payload._status === Pending || payload._status === Uninitialized) {\n        // Transition to the next state.\n        var resolved = payload;\n        resolved._status = Resolved;\n        resolved._result = moduleObject;\n      }\n    }, function (error) {\n      if (payload._status === Pending || payload._status === Uninitialized) {\n        // Transition to the next state.\n        var rejected = payload;\n        rejected._status = Rejected;\n        rejected._result = error;\n      }\n    });\n\n    if (payload._status === Uninitialized) {\n      // In case, we're still uninitialized, then we're waiting for the thenable\n      // to resolve. Set it as pending in the meantime.\n      var pending = payload;\n      pending._status = Pending;\n      pending._result = thenable;\n    }\n  }\n\n  if (payload._status === Resolved) {\n    var moduleObject = payload._result;\n\n    {\n      if (moduleObject === undefined) {\n        error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n  ' + // Break up imports to avoid accidentally parsing them as dependencies.\n        'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\\n\\n\" + 'Did you accidentally put curly braces around the import?', moduleObject);\n      }\n    }\n\n    {\n      if (!('default' in moduleObject)) {\n        error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n  ' + // Break up imports to avoid accidentally parsing them as dependencies.\n        'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\", moduleObject);\n      }\n    }\n\n    return moduleObject.default;\n  } else {\n    throw payload._result;\n  }\n}\n\nfunction lazy(ctor) {\n  var payload = {\n    // We use these fields to store the result.\n    _status: Uninitialized,\n    _result: ctor\n  };\n  var lazyType = {\n    $$typeof: REACT_LAZY_TYPE,\n    _payload: payload,\n    _init: lazyInitializer\n  };\n\n  {\n    // In production, this would just set it on the object.\n    var defaultProps;\n    var propTypes; // $FlowFixMe\n\n    Object.defineProperties(lazyType, {\n      defaultProps: {\n        configurable: true,\n        get: function () {\n          return defaultProps;\n        },\n        set: function (newDefaultProps) {\n          error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n          defaultProps = newDefaultProps; // Match production behavior more closely:\n          // $FlowFixMe\n\n          Object.defineProperty(lazyType, 'defaultProps', {\n            enumerable: true\n          });\n        }\n      },\n      propTypes: {\n        configurable: true,\n        get: function () {\n          return propTypes;\n        },\n        set: function (newPropTypes) {\n          error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n          propTypes = newPropTypes; // Match production behavior more closely:\n          // $FlowFixMe\n\n          Object.defineProperty(lazyType, 'propTypes', {\n            enumerable: true\n          });\n        }\n      }\n    });\n  }\n\n  return lazyType;\n}\n\nfunction forwardRef(render) {\n  {\n    if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n      error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');\n    } else if (typeof render !== 'function') {\n      error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n    } else {\n      if (render.length !== 0 && render.length !== 2) {\n        error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');\n      }\n    }\n\n    if (render != null) {\n      if (render.defaultProps != null || render.propTypes != null) {\n        error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');\n      }\n    }\n  }\n\n  var elementType = {\n    $$typeof: REACT_FORWARD_REF_TYPE,\n    render: render\n  };\n\n  {\n    var ownName;\n    Object.defineProperty(elementType, 'displayName', {\n      enumerable: false,\n      configurable: true,\n      get: function () {\n        return ownName;\n      },\n      set: function (name) {\n        ownName = name; // The inner component shouldn't inherit this display name in most cases,\n        // because the component may be used elsewhere.\n        // But it's nice for anonymous functions to inherit the name,\n        // so that our component-stack generation logic will display their frames.\n        // An anonymous function generally suggests a pattern like:\n        //   React.forwardRef((props, ref) => {...});\n        // This kind of inner function is not used elsewhere so the side effect is okay.\n\n        if (!render.name && !render.displayName) {\n          render.displayName = name;\n        }\n      }\n    });\n  }\n\n  return elementType;\n}\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction memo(type, compare) {\n  {\n    if (!isValidElementType(type)) {\n      error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);\n    }\n  }\n\n  var elementType = {\n    $$typeof: REACT_MEMO_TYPE,\n    type: type,\n    compare: compare === undefined ? null : compare\n  };\n\n  {\n    var ownName;\n    Object.defineProperty(elementType, 'displayName', {\n      enumerable: false,\n      configurable: true,\n      get: function () {\n        return ownName;\n      },\n      set: function (name) {\n        ownName = name; // The inner component shouldn't inherit this display name in most cases,\n        // because the component may be used elsewhere.\n        // But it's nice for anonymous functions to inherit the name,\n        // so that our component-stack generation logic will display their frames.\n        // An anonymous function generally suggests a pattern like:\n        //   React.memo((props) => {...});\n        // This kind of inner function is not used elsewhere so the side effect is okay.\n\n        if (!type.name && !type.displayName) {\n          type.displayName = name;\n        }\n      }\n    });\n  }\n\n  return elementType;\n}\n\nfunction resolveDispatcher() {\n  var dispatcher = ReactCurrentDispatcher.current;\n\n  {\n    if (dispatcher === null) {\n      error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n    }\n  } // Will result in a null access error if accessed outside render phase. We\n  // intentionally don't throw our own error because this is in a hot path.\n  // Also helps ensure this is inlined.\n\n\n  return dispatcher;\n}\nfunction useContext(Context) {\n  var dispatcher = resolveDispatcher();\n\n  {\n    // TODO: add a more generic warning for invalid values.\n    if (Context._context !== undefined) {\n      var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs\n      // and nobody should be using this in existing code.\n\n      if (realContext.Consumer === Context) {\n        error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');\n      } else if (realContext.Provider === Context) {\n        error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');\n      }\n    }\n  }\n\n  return dispatcher.useContext(Context);\n}\nfunction useState(initialState) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useState(initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useReducer(reducer, initialArg, init);\n}\nfunction useRef(initialValue) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useRef(initialValue);\n}\nfunction useEffect(create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useEffect(create, deps);\n}\nfunction useInsertionEffect(create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useInsertionEffect(create, deps);\n}\nfunction useLayoutEffect(create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useLayoutEffect(create, deps);\n}\nfunction useCallback(callback, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useCallback(callback, deps);\n}\nfunction useMemo(create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useMemo(create, deps);\n}\nfunction useImperativeHandle(ref, create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useImperativeHandle(ref, create, deps);\n}\nfunction useDebugValue(value, formatterFn) {\n  {\n    var dispatcher = resolveDispatcher();\n    return dispatcher.useDebugValue(value, formatterFn);\n  }\n}\nfunction useTransition() {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useTransition();\n}\nfunction useDeferredValue(value) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useDeferredValue(value);\n}\nfunction useId() {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useId();\n}\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n  {\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      prevLog = console.log;\n      prevInfo = console.info;\n      prevWarn = console.warn;\n      prevError = console.error;\n      prevGroup = console.group;\n      prevGroupCollapsed = console.groupCollapsed;\n      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n      var props = {\n        configurable: true,\n        enumerable: true,\n        value: disabledLog,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        info: props,\n        log: props,\n        warn: props,\n        error: props,\n        group: props,\n        groupCollapsed: props,\n        groupEnd: props\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    disabledDepth++;\n  }\n}\nfunction reenableLogs() {\n  {\n    disabledDepth--;\n\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      var props = {\n        configurable: true,\n        enumerable: true,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        log: assign({}, props, {\n          value: prevLog\n        }),\n        info: assign({}, props, {\n          value: prevInfo\n        }),\n        warn: assign({}, props, {\n          value: prevWarn\n        }),\n        error: assign({}, props, {\n          value: prevError\n        }),\n        group: assign({}, props, {\n          value: prevGroup\n        }),\n        groupCollapsed: assign({}, props, {\n          value: prevGroupCollapsed\n        }),\n        groupEnd: assign({}, props, {\n          value: prevGroupEnd\n        })\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    if (disabledDepth < 0) {\n      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n    }\n  }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n  {\n    if (prefix === undefined) {\n      // Extract the VM specific prefix used by each line.\n      try {\n        throw Error();\n      } catch (x) {\n        var match = x.stack.trim().match(/\\n( *(at )?)/);\n        prefix = match && match[1] || '';\n      }\n    } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n    return '\\n' + prefix + name;\n  }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n  componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n  // If something asked for a stack inside a fake render, it should get ignored.\n  if ( !fn || reentry) {\n    return '';\n  }\n\n  {\n    var frame = componentFrameCache.get(fn);\n\n    if (frame !== undefined) {\n      return frame;\n    }\n  }\n\n  var control;\n  reentry = true;\n  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n  Error.prepareStackTrace = undefined;\n  var previousDispatcher;\n\n  {\n    previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function\n    // for warnings.\n\n    ReactCurrentDispatcher$1.current = null;\n    disableLogs();\n  }\n\n  try {\n    // This should throw.\n    if (construct) {\n      // Something should be setting the props in the constructor.\n      var Fake = function () {\n        throw Error();\n      }; // $FlowFixMe\n\n\n      Object.defineProperty(Fake.prototype, 'props', {\n        set: function () {\n          // We use a throwing setter instead of frozen or non-writable props\n          // because that won't throw in a non-strict mode function.\n          throw Error();\n        }\n      });\n\n      if (typeof Reflect === 'object' && Reflect.construct) {\n        // We construct a different control for this case to include any extra\n        // frames added by the construct call.\n        try {\n          Reflect.construct(Fake, []);\n        } catch (x) {\n          control = x;\n        }\n\n        Reflect.construct(fn, [], Fake);\n      } else {\n        try {\n          Fake.call();\n        } catch (x) {\n          control = x;\n        }\n\n        fn.call(Fake.prototype);\n      }\n    } else {\n      try {\n        throw Error();\n      } catch (x) {\n        control = x;\n      }\n\n      fn();\n    }\n  } catch (sample) {\n    // This is inlined manually because closure doesn't do it for us.\n    if (sample && control && typeof sample.stack === 'string') {\n      // This extracts the first frame from the sample that isn't also in the control.\n      // Skipping one frame that we assume is the frame that calls the two.\n      var sampleLines = sample.stack.split('\\n');\n      var controlLines = control.stack.split('\\n');\n      var s = sampleLines.length - 1;\n      var c = controlLines.length - 1;\n\n      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n        // We expect at least one stack frame to be shared.\n        // Typically this will be the root most one. However, stack frames may be\n        // cut off due to maximum stack limits. In this case, one maybe cut off\n        // earlier than the other. We assume that the sample is longer or the same\n        // and there for cut off earlier. So we should find the root most frame in\n        // the sample somewhere in the control.\n        c--;\n      }\n\n      for (; s >= 1 && c >= 0; s--, c--) {\n        // Next we find the first one that isn't the same which should be the\n        // frame that called our sample function and the control.\n        if (sampleLines[s] !== controlLines[c]) {\n          // In V8, the first line is describing the message but other VMs don't.\n          // If we're about to return the first line, and the control is also on the same\n          // line, that's a pretty good indicator that our sample threw at same line as\n          // the control. I.e. before we entered the sample frame. So we ignore this result.\n          // This can happen if you passed a class to function component, or non-function.\n          if (s !== 1 || c !== 1) {\n            do {\n              s--;\n              c--; // We may still have similar intermediate frames from the construct call.\n              // The next one that isn't the same should be our match though.\n\n              if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n                var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n                // but we have a user-provided \"displayName\"\n                // splice it in to make the stack more readable.\n\n\n                if (fn.displayName && _frame.includes('<anonymous>')) {\n                  _frame = _frame.replace('<anonymous>', fn.displayName);\n                }\n\n                {\n                  if (typeof fn === 'function') {\n                    componentFrameCache.set(fn, _frame);\n                  }\n                } // Return the line we found.\n\n\n                return _frame;\n              }\n            } while (s >= 1 && c >= 0);\n          }\n\n          break;\n        }\n      }\n    }\n  } finally {\n    reentry = false;\n\n    {\n      ReactCurrentDispatcher$1.current = previousDispatcher;\n      reenableLogs();\n    }\n\n    Error.prepareStackTrace = previousPrepareStackTrace;\n  } // Fallback to just using the name if we couldn't make it throw.\n\n\n  var name = fn ? fn.displayName || fn.name : '';\n  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n  {\n    if (typeof fn === 'function') {\n      componentFrameCache.set(fn, syntheticFrame);\n    }\n  }\n\n  return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(fn, false);\n  }\n}\n\nfunction shouldConstruct(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n  if (type == null) {\n    return '';\n  }\n\n  if (typeof type === 'function') {\n    {\n      return describeNativeComponentFrame(type, shouldConstruct(type));\n    }\n  }\n\n  if (typeof type === 'string') {\n    return describeBuiltInComponentFrame(type);\n  }\n\n  switch (type) {\n    case REACT_SUSPENSE_TYPE:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return describeBuiltInComponentFrame('SuspenseList');\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        return describeFunctionComponentFrame(type.render);\n\n      case REACT_MEMO_TYPE:\n        // Memo may contain any component type so we recursively resolve it.\n        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            // Lazy may contain any component type so we recursively resolve it.\n            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n          } catch (x) {}\n        }\n    }\n  }\n\n  return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n    }\n  }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n  {\n    // $FlowFixMe This is okay but Flow doesn't know it.\n    var has = Function.call.bind(hasOwnProperty);\n\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            // eslint-disable-next-line react-internal/prod-error-codes\n            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n\n          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n        } catch (ex) {\n          error$1 = ex;\n        }\n\n        if (error$1 && !(error$1 instanceof Error)) {\n          setCurrentlyValidatingElement(element);\n\n          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n          setCurrentlyValidatingElement(null);\n        }\n\n        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error$1.message] = true;\n          setCurrentlyValidatingElement(element);\n\n          error('Failed %s type: %s', location, error$1.message);\n\n          setCurrentlyValidatingElement(null);\n        }\n      }\n    }\n  }\n}\n\nfunction setCurrentlyValidatingElement$1(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      setExtraStackFrame(stack);\n    } else {\n      setExtraStackFrame(null);\n    }\n  }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n  propTypesMisspellWarningShown = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n  if (ReactCurrentOwner.current) {\n    var name = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n    if (name) {\n      return '\\n\\nCheck the render method of `' + name + '`.';\n    }\n  }\n\n  return '';\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n  if (source !== undefined) {\n    var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n    var lineNumber = source.lineNumber;\n    return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n  }\n\n  return '';\n}\n\nfunction getSourceInfoErrorAddendumForProps(elementProps) {\n  if (elementProps !== null && elementProps !== undefined) {\n    return getSourceInfoErrorAddendum(elementProps.__source);\n  }\n\n  return '';\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n  var info = getDeclarationErrorAddendum();\n\n  if (!info) {\n    var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n    if (parentName) {\n      info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n    }\n  }\n\n  return info;\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n  if (!element._store || element._store.validated || element.key != null) {\n    return;\n  }\n\n  element._store.validated = true;\n  var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n  if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n    return;\n  }\n\n  ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n  // property, it may be the creator of the child that's responsible for\n  // assigning it a key.\n\n  var childOwner = '';\n\n  if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n    // Give the component that originally created this child.\n    childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n  }\n\n  {\n    setCurrentlyValidatingElement$1(element);\n\n    error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n    setCurrentlyValidatingElement$1(null);\n  }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n  if (typeof node !== 'object') {\n    return;\n  }\n\n  if (isArray(node)) {\n    for (var i = 0; i < node.length; i++) {\n      var child = node[i];\n\n      if (isValidElement(child)) {\n        validateExplicitKey(child, parentType);\n      }\n    }\n  } else if (isValidElement(node)) {\n    // This element was passed in a valid location.\n    if (node._store) {\n      node._store.validated = true;\n    }\n  } else if (node) {\n    var iteratorFn = getIteratorFn(node);\n\n    if (typeof iteratorFn === 'function') {\n      // Entry iterators used to provide implicit keys,\n      // but now we print a separate warning for them later.\n      if (iteratorFn !== node.entries) {\n        var iterator = iteratorFn.call(node);\n        var step;\n\n        while (!(step = iterator.next()).done) {\n          if (isValidElement(step.value)) {\n            validateExplicitKey(step.value, parentType);\n          }\n        }\n      }\n    }\n  }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n  {\n    var type = element.type;\n\n    if (type === null || type === undefined || typeof type === 'string') {\n      return;\n    }\n\n    var propTypes;\n\n    if (typeof type === 'function') {\n      propTypes = type.propTypes;\n    } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n    // Inner props are checked in the reconciler.\n    type.$$typeof === REACT_MEMO_TYPE)) {\n      propTypes = type.propTypes;\n    } else {\n      return;\n    }\n\n    if (propTypes) {\n      // Intentionally inside to avoid triggering lazy initializers:\n      var name = getComponentNameFromType(type);\n      checkPropTypes(propTypes, element.props, 'prop', name, element);\n    } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n      propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n      var _name = getComponentNameFromType(type);\n\n      error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n    }\n\n    if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n      error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n    }\n  }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n  {\n    var keys = Object.keys(fragment.props);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n\n      if (key !== 'children' && key !== 'key') {\n        setCurrentlyValidatingElement$1(fragment);\n\n        error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n        setCurrentlyValidatingElement$1(null);\n        break;\n      }\n    }\n\n    if (fragment.ref !== null) {\n      setCurrentlyValidatingElement$1(fragment);\n\n      error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n      setCurrentlyValidatingElement$1(null);\n    }\n  }\n}\nfunction createElementWithValidation(type, props, children) {\n  var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n  // succeed and there will likely be errors in render.\n\n  if (!validType) {\n    var info = '';\n\n    if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n      info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n    }\n\n    var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n\n    if (sourceInfo) {\n      info += sourceInfo;\n    } else {\n      info += getDeclarationErrorAddendum();\n    }\n\n    var typeString;\n\n    if (type === null) {\n      typeString = 'null';\n    } else if (isArray(type)) {\n      typeString = 'array';\n    } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n      typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n      info = ' Did you accidentally export a JSX literal instead of a component?';\n    } else {\n      typeString = typeof type;\n    }\n\n    {\n      error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n    }\n  }\n\n  var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n  // TODO: Drop this when these are no longer allowed as the type argument.\n\n  if (element == null) {\n    return element;\n  } // Skip key warning if the type isn't valid since our key validation logic\n  // doesn't expect a non-string/function type and can throw confusing errors.\n  // We don't want exception behavior to differ between dev and prod.\n  // (Rendering will throw with a helpful message and as soon as the type is\n  // fixed, the key warnings will appear.)\n\n\n  if (validType) {\n    for (var i = 2; i < arguments.length; i++) {\n      validateChildKeys(arguments[i], type);\n    }\n  }\n\n  if (type === REACT_FRAGMENT_TYPE) {\n    validateFragmentProps(element);\n  } else {\n    validatePropTypes(element);\n  }\n\n  return element;\n}\nvar didWarnAboutDeprecatedCreateFactory = false;\nfunction createFactoryWithValidation(type) {\n  var validatedFactory = createElementWithValidation.bind(null, type);\n  validatedFactory.type = type;\n\n  {\n    if (!didWarnAboutDeprecatedCreateFactory) {\n      didWarnAboutDeprecatedCreateFactory = true;\n\n      warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');\n    } // Legacy hook: remove it\n\n\n    Object.defineProperty(validatedFactory, 'type', {\n      enumerable: false,\n      get: function () {\n        warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n\n        Object.defineProperty(this, 'type', {\n          value: type\n        });\n        return type;\n      }\n    });\n  }\n\n  return validatedFactory;\n}\nfunction cloneElementWithValidation(element, props, children) {\n  var newElement = cloneElement.apply(this, arguments);\n\n  for (var i = 2; i < arguments.length; i++) {\n    validateChildKeys(arguments[i], newElement.type);\n  }\n\n  validatePropTypes(newElement);\n  return newElement;\n}\n\nfunction startTransition(scope, options) {\n  var prevTransition = ReactCurrentBatchConfig.transition;\n  ReactCurrentBatchConfig.transition = {};\n  var currentTransition = ReactCurrentBatchConfig.transition;\n\n  {\n    ReactCurrentBatchConfig.transition._updatedFibers = new Set();\n  }\n\n  try {\n    scope();\n  } finally {\n    ReactCurrentBatchConfig.transition = prevTransition;\n\n    {\n      if (prevTransition === null && currentTransition._updatedFibers) {\n        var updatedFibersCount = currentTransition._updatedFibers.size;\n\n        if (updatedFibersCount > 10) {\n          warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.');\n        }\n\n        currentTransition._updatedFibers.clear();\n      }\n    }\n  }\n}\n\nvar didWarnAboutMessageChannel = false;\nvar enqueueTaskImpl = null;\nfunction enqueueTask(task) {\n  if (enqueueTaskImpl === null) {\n    try {\n      // read require off the module object to get around the bundlers.\n      // we don't want them to detect a require and bundle a Node polyfill.\n      var requireString = ('require' + Math.random()).slice(0, 7);\n      var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's\n      // version of setImmediate, bypassing fake timers if any.\n\n      enqueueTaskImpl = nodeRequire.call(module, 'timers').setImmediate;\n    } catch (_err) {\n      // we're in a browser\n      // we can't use regular timers because they may still be faked\n      // so we try MessageChannel+postMessage instead\n      enqueueTaskImpl = function (callback) {\n        {\n          if (didWarnAboutMessageChannel === false) {\n            didWarnAboutMessageChannel = true;\n\n            if (typeof MessageChannel === 'undefined') {\n              error('This browser does not have a MessageChannel implementation, ' + 'so enqueuing tasks via await act(async () => ...) will fail. ' + 'Please file an issue at https://github.com/facebook/react/issues ' + 'if you encounter this warning.');\n            }\n          }\n        }\n\n        var channel = new MessageChannel();\n        channel.port1.onmessage = callback;\n        channel.port2.postMessage(undefined);\n      };\n    }\n  }\n\n  return enqueueTaskImpl(task);\n}\n\nvar actScopeDepth = 0;\nvar didWarnNoAwaitAct = false;\nfunction act(callback) {\n  {\n    // `act` calls can be nested, so we track the depth. This represents the\n    // number of `act` scopes on the stack.\n    var prevActScopeDepth = actScopeDepth;\n    actScopeDepth++;\n\n    if (ReactCurrentActQueue.current === null) {\n      // This is the outermost `act` scope. Initialize the queue. The reconciler\n      // will detect the queue and use it instead of Scheduler.\n      ReactCurrentActQueue.current = [];\n    }\n\n    var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;\n    var result;\n\n    try {\n      // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only\n      // set to `true` while the given callback is executed, not for updates\n      // triggered during an async event, because this is how the legacy\n      // implementation of `act` behaved.\n      ReactCurrentActQueue.isBatchingLegacy = true;\n      result = callback(); // Replicate behavior of original `act` implementation in legacy mode,\n      // which flushed updates immediately after the scope function exits, even\n      // if it's an async function.\n\n      if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) {\n        var queue = ReactCurrentActQueue.current;\n\n        if (queue !== null) {\n          ReactCurrentActQueue.didScheduleLegacyUpdate = false;\n          flushActQueue(queue);\n        }\n      }\n    } catch (error) {\n      popActScope(prevActScopeDepth);\n      throw error;\n    } finally {\n      ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;\n    }\n\n    if (result !== null && typeof result === 'object' && typeof result.then === 'function') {\n      var thenableResult = result; // The callback is an async function (i.e. returned a promise). Wait\n      // for it to resolve before exiting the current scope.\n\n      var wasAwaited = false;\n      var thenable = {\n        then: function (resolve, reject) {\n          wasAwaited = true;\n          thenableResult.then(function (returnValue) {\n            popActScope(prevActScopeDepth);\n\n            if (actScopeDepth === 0) {\n              // We've exited the outermost act scope. Recursively flush the\n              // queue until there's no remaining work.\n              recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n            } else {\n              resolve(returnValue);\n            }\n          }, function (error) {\n            // The callback threw an error.\n            popActScope(prevActScopeDepth);\n            reject(error);\n          });\n        }\n      };\n\n      {\n        if (!didWarnNoAwaitAct && typeof Promise !== 'undefined') {\n          // eslint-disable-next-line no-undef\n          Promise.resolve().then(function () {}).then(function () {\n            if (!wasAwaited) {\n              didWarnNoAwaitAct = true;\n\n              error('You called act(async () => ...) without await. ' + 'This could lead to unexpected testing behaviour, ' + 'interleaving multiple act calls and mixing their ' + 'scopes. ' + 'You should - await act(async () => ...);');\n            }\n          });\n        }\n      }\n\n      return thenable;\n    } else {\n      var returnValue = result; // The callback is not an async function. Exit the current scope\n      // immediately, without awaiting.\n\n      popActScope(prevActScopeDepth);\n\n      if (actScopeDepth === 0) {\n        // Exiting the outermost act scope. Flush the queue.\n        var _queue = ReactCurrentActQueue.current;\n\n        if (_queue !== null) {\n          flushActQueue(_queue);\n          ReactCurrentActQueue.current = null;\n        } // Return a thenable. If the user awaits it, we'll flush again in\n        // case additional work was scheduled by a microtask.\n\n\n        var _thenable = {\n          then: function (resolve, reject) {\n            // Confirm we haven't re-entered another `act` scope, in case\n            // the user does something weird like await the thenable\n            // multiple times.\n            if (ReactCurrentActQueue.current === null) {\n              // Recursively flush the queue until there's no remaining work.\n              ReactCurrentActQueue.current = [];\n              recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n            } else {\n              resolve(returnValue);\n            }\n          }\n        };\n        return _thenable;\n      } else {\n        // Since we're inside a nested `act` scope, the returned thenable\n        // immediately resolves. The outer scope will flush the queue.\n        var _thenable2 = {\n          then: function (resolve, reject) {\n            resolve(returnValue);\n          }\n        };\n        return _thenable2;\n      }\n    }\n  }\n}\n\nfunction popActScope(prevActScopeDepth) {\n  {\n    if (prevActScopeDepth !== actScopeDepth - 1) {\n      error('You seem to have overlapping act() calls, this is not supported. ' + 'Be sure to await previous act() calls before making a new one. ');\n    }\n\n    actScopeDepth = prevActScopeDepth;\n  }\n}\n\nfunction recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n  {\n    var queue = ReactCurrentActQueue.current;\n\n    if (queue !== null) {\n      try {\n        flushActQueue(queue);\n        enqueueTask(function () {\n          if (queue.length === 0) {\n            // No additional work was scheduled. Finish.\n            ReactCurrentActQueue.current = null;\n            resolve(returnValue);\n          } else {\n            // Keep flushing work until there's none left.\n            recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n          }\n        });\n      } catch (error) {\n        reject(error);\n      }\n    } else {\n      resolve(returnValue);\n    }\n  }\n}\n\nvar isFlushing = false;\n\nfunction flushActQueue(queue) {\n  {\n    if (!isFlushing) {\n      // Prevent re-entrance.\n      isFlushing = true;\n      var i = 0;\n\n      try {\n        for (; i < queue.length; i++) {\n          var callback = queue[i];\n\n          do {\n            callback = callback(true);\n          } while (callback !== null);\n        }\n\n        queue.length = 0;\n      } catch (error) {\n        // If something throws, leave the remaining callbacks on the queue.\n        queue = queue.slice(i + 1);\n        throw error;\n      } finally {\n        isFlushing = false;\n      }\n    }\n  }\n}\n\nvar createElement$1 =  createElementWithValidation ;\nvar cloneElement$1 =  cloneElementWithValidation ;\nvar createFactory =  createFactoryWithValidation ;\nvar Children = {\n  map: mapChildren,\n  forEach: forEachChildren,\n  count: countChildren,\n  toArray: toArray,\n  only: onlyChild\n};\n\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\nexports.cloneElement = cloneElement$1;\nexports.createContext = createContext;\nexports.createElement = createElement$1;\nexports.createFactory = createFactory;\nexports.createRef = createRef;\nexports.forwardRef = forwardRef;\nexports.isValidElement = isValidElement;\nexports.lazy = lazy;\nexports.memo = memo;\nexports.startTransition = startTransition;\nexports.unstable_act = act;\nexports.useCallback = useCallback;\nexports.useContext = useContext;\nexports.useDebugValue = useDebugValue;\nexports.useDeferredValue = useDeferredValue;\nexports.useEffect = useEffect;\nexports.useId = useId;\nexports.useImperativeHandle = useImperativeHandle;\nexports.useInsertionEffect = useInsertionEffect;\nexports.useLayoutEffect = useLayoutEffect;\nexports.useMemo = useMemo;\nexports.useReducer = useReducer;\nexports.useRef = useRef;\nexports.useState = useState;\nexports.useSyncExternalStore = useSyncExternalStore;\nexports.useTransition = useTransition;\nexports.version = ReactVersion;\n          /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n        \n  })();\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react/cjs/react.development.js?");

/***/ }),

/***/ "./node_modules/react/index.js":
/*!*************************************!*\
  !*** ./node_modules/react/index.js ***!
  \*************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ./cjs/react.development.js */ \"./node_modules/react/cjs/react.development.js\");\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react/index.js?");

/***/ }),

/***/ "./node_modules/react/jsx-runtime.js":
/*!*******************************************!*\
  !*** ./node_modules/react/jsx-runtime.js ***!
  \*******************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ./cjs/react-jsx-runtime.development.js */ \"./node_modules/react/cjs/react-jsx-runtime.development.js\");\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react/jsx-runtime.js?");

/***/ }),

/***/ "./node_modules/redux/es/redux.js":
/*!****************************************!*\
  !*** ./node_modules/redux/es/redux.js ***!
  \****************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"__DO_NOT_USE__ActionTypes\": function() { return /* binding */ ActionTypes; },\n/* harmony export */   \"applyMiddleware\": function() { return /* binding */ applyMiddleware; },\n/* harmony export */   \"bindActionCreators\": function() { return /* binding */ bindActionCreators; },\n/* harmony export */   \"combineReducers\": function() { return /* binding */ combineReducers; },\n/* harmony export */   \"compose\": function() { return /* binding */ compose; },\n/* harmony export */   \"createStore\": function() { return /* binding */ createStore; },\n/* harmony export */   \"legacy_createStore\": function() { return /* binding */ legacy_createStore; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ \"./node_modules/@babel/runtime/helpers/esm/objectSpread2.js\");\n\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n  return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n  return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n  return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n  INIT: \"@@redux/INIT\" + randomString(),\n  REPLACE: \"@@redux/REPLACE\" + randomString(),\n  PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n    return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n  }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n  if (typeof obj !== 'object' || obj === null) return false;\n  var proto = obj;\n\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n\n  return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n  if (val === void 0) return 'undefined';\n  if (val === null) return 'null';\n  var type = typeof val;\n\n  switch (type) {\n    case 'boolean':\n    case 'string':\n    case 'number':\n    case 'symbol':\n    case 'function':\n      {\n        return type;\n      }\n  }\n\n  if (Array.isArray(val)) return 'array';\n  if (isDate(val)) return 'date';\n  if (isError(val)) return 'error';\n  var constructorName = ctorName(val);\n\n  switch (constructorName) {\n    case 'Symbol':\n    case 'Promise':\n    case 'WeakMap':\n    case 'WeakSet':\n    case 'Map':\n    case 'Set':\n      return constructorName;\n  } // other\n\n\n  return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n  return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n  if (val instanceof Date) return true;\n  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n  var typeOfVal = typeof val;\n\n  if (true) {\n    typeOfVal = miniKindOf(val);\n  }\n\n  return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n  var _ref2;\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n    throw new Error( false ? 0 : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n  }\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n    enhancer = preloadedState;\n    preloadedState = undefined;\n  }\n\n  if (typeof enhancer !== 'undefined') {\n    if (typeof enhancer !== 'function') {\n      throw new Error( false ? 0 : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n    }\n\n    return enhancer(createStore)(reducer, preloadedState);\n  }\n\n  if (typeof reducer !== 'function') {\n    throw new Error( false ? 0 : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n  }\n\n  var currentReducer = reducer;\n  var currentState = preloadedState;\n  var currentListeners = [];\n  var nextListeners = currentListeners;\n  var isDispatching = false;\n  /**\n   * This makes a shallow copy of currentListeners so we can use\n   * nextListeners as a temporary list while dispatching.\n   *\n   * This prevents any bugs around consumers calling\n   * subscribe/unsubscribe in the middle of a dispatch.\n   */\n\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = currentListeners.slice();\n    }\n  }\n  /**\n   * Reads the state tree managed by the store.\n   *\n   * @returns {any} The current state tree of your application.\n   */\n\n\n  function getState() {\n    if (isDispatching) {\n      throw new Error( false ? 0 : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n    }\n\n    return currentState;\n  }\n  /**\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param {Function} listener A callback to be invoked on every dispatch.\n   * @returns {Function} A function to remove this change listener.\n   */\n\n\n  function subscribe(listener) {\n    if (typeof listener !== 'function') {\n      throw new Error( false ? 0 : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n    }\n\n    if (isDispatching) {\n      throw new Error( false ? 0 : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n    }\n\n    var isSubscribed = true;\n    ensureCanMutateNextListeners();\n    nextListeners.push(listener);\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n\n      if (isDispatching) {\n        throw new Error( false ? 0 : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n      }\n\n      isSubscribed = false;\n      ensureCanMutateNextListeners();\n      var index = nextListeners.indexOf(listener);\n      nextListeners.splice(index, 1);\n      currentListeners = null;\n    };\n  }\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param {Object} action A plain object representing “what changed”. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns {Object} For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n\n\n  function dispatch(action) {\n    if (!isPlainObject(action)) {\n      throw new Error( false ? 0 : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n    }\n\n    if (typeof action.type === 'undefined') {\n      throw new Error( false ? 0 : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n    }\n\n    if (isDispatching) {\n      throw new Error( false ? 0 : 'Reducers may not dispatch actions.');\n    }\n\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n\n    var listeners = currentListeners = nextListeners;\n\n    for (var i = 0; i < listeners.length; i++) {\n      var listener = listeners[i];\n      listener();\n    }\n\n    return action;\n  }\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param {Function} nextReducer The reducer for the store to use instead.\n   * @returns {void}\n   */\n\n\n  function replaceReducer(nextReducer) {\n    if (typeof nextReducer !== 'function') {\n      throw new Error( false ? 0 : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n    }\n\n    currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n    // Any reducers that existed in both the new and old rootReducer\n    // will receive the previous state. This effectively populates\n    // the new state tree with any relevant data from the old one.\n\n    dispatch({\n      type: ActionTypes.REPLACE\n    });\n  }\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns {observable} A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n\n\n  function observable() {\n    var _ref;\n\n    var outerSubscribe = subscribe;\n    return _ref = {\n      /**\n       * The minimal observable subscription method.\n       * @param {Object} observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns {subscription} An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe: function subscribe(observer) {\n        if (typeof observer !== 'object' || observer === null) {\n          throw new Error( false ? 0 : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n        }\n\n        function observeState() {\n          if (observer.next) {\n            observer.next(getState());\n          }\n        }\n\n        observeState();\n        var unsubscribe = outerSubscribe(observeState);\n        return {\n          unsubscribe: unsubscribe\n        };\n      }\n    }, _ref[$$observable] = function () {\n      return this;\n    }, _ref;\n  } // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n\n\n  dispatch({\n    type: ActionTypes.INIT\n  });\n  return _ref2 = {\n    dispatch: dispatch,\n    subscribe: subscribe,\n    getState: getState,\n    replaceReducer: replaceReducer\n  }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n\n\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n  } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n  var reducerKeys = Object.keys(reducers);\n  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n  if (reducerKeys.length === 0) {\n    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n  }\n\n  if (!isPlainObject(inputState)) {\n    return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n  }\n\n  var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n  });\n  unexpectedKeys.forEach(function (key) {\n    unexpectedKeyCache[key] = true;\n  });\n  if (action && action.type === ActionTypes.REPLACE) return;\n\n  if (unexpectedKeys.length > 0) {\n    return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n  }\n}\n\nfunction assertReducerShape(reducers) {\n  Object.keys(reducers).forEach(function (key) {\n    var reducer = reducers[key];\n    var initialState = reducer(undefined, {\n      type: ActionTypes.INIT\n    });\n\n    if (typeof initialState === 'undefined') {\n      throw new Error( false ? 0 : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n    }\n\n    if (typeof reducer(undefined, {\n      type: ActionTypes.PROBE_UNKNOWN_ACTION()\n    }) === 'undefined') {\n      throw new Error( false ? 0 : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n    }\n  });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n  var reducerKeys = Object.keys(reducers);\n  var finalReducers = {};\n\n  for (var i = 0; i < reducerKeys.length; i++) {\n    var key = reducerKeys[i];\n\n    if (true) {\n      if (typeof reducers[key] === 'undefined') {\n        warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n      }\n    }\n\n    if (typeof reducers[key] === 'function') {\n      finalReducers[key] = reducers[key];\n    }\n  }\n\n  var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n  // keys multiple times.\n\n  var unexpectedKeyCache;\n\n  if (true) {\n    unexpectedKeyCache = {};\n  }\n\n  var shapeAssertionError;\n\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n\n  return function combination(state, action) {\n    if (state === void 0) {\n      state = {};\n    }\n\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n\n    if (true) {\n      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n      if (warningMessage) {\n        warning(warningMessage);\n      }\n    }\n\n    var hasChanged = false;\n    var nextState = {};\n\n    for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n      var _key = finalReducerKeys[_i];\n      var reducer = finalReducers[_key];\n      var previousStateForKey = state[_key];\n      var nextStateForKey = reducer(previousStateForKey, action);\n\n      if (typeof nextStateForKey === 'undefined') {\n        var actionType = action && action.type;\n        throw new Error( false ? 0 : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n      }\n\n      nextState[_key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n\n    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n    return hasChanged ? nextState : state;\n  };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n  return function () {\n    return dispatch(actionCreator.apply(this, arguments));\n  };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n  if (typeof actionCreators === 'function') {\n    return bindActionCreator(actionCreators, dispatch);\n  }\n\n  if (typeof actionCreators !== 'object' || actionCreators === null) {\n    throw new Error( false ? 0 : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n  }\n\n  var boundActionCreators = {};\n\n  for (var key in actionCreators) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n    }\n  }\n\n  return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  if (funcs.length === 0) {\n    return function (arg) {\n      return arg;\n    };\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n\n  return funcs.reduce(function (a, b) {\n    return function () {\n      return a(b.apply(void 0, arguments));\n    };\n  });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n  for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n    middlewares[_key] = arguments[_key];\n  }\n\n  return function (createStore) {\n    return function () {\n      var store = createStore.apply(void 0, arguments);\n\n      var _dispatch = function dispatch() {\n        throw new Error( false ? 0 : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n      };\n\n      var middlewareAPI = {\n        getState: store.getState,\n        dispatch: function dispatch() {\n          return _dispatch.apply(void 0, arguments);\n        }\n      };\n      var chain = middlewares.map(function (middleware) {\n        return middleware(middlewareAPI);\n      });\n      _dispatch = compose.apply(void 0, chain)(store.dispatch);\n      return (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, store), {}, {\n        dispatch: _dispatch\n      });\n    };\n  };\n}\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/redux/es/redux.js?");

/***/ }),

/***/ "./node_modules/scheduler/cjs/scheduler.development.js":
/*!*************************************************************!*\
  !*** ./node_modules/scheduler/cjs/scheduler.development.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("/**\n * @license React\n * scheduler.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n  (function() {\n\n          'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n          var enableSchedulerDebugging = false;\nvar enableProfiling = false;\nvar frameYieldMs = 5;\n\nfunction push(heap, node) {\n  var index = heap.length;\n  heap.push(node);\n  siftUp(heap, node, index);\n}\nfunction peek(heap) {\n  return heap.length === 0 ? null : heap[0];\n}\nfunction pop(heap) {\n  if (heap.length === 0) {\n    return null;\n  }\n\n  var first = heap[0];\n  var last = heap.pop();\n\n  if (last !== first) {\n    heap[0] = last;\n    siftDown(heap, last, 0);\n  }\n\n  return first;\n}\n\nfunction siftUp(heap, node, i) {\n  var index = i;\n\n  while (index > 0) {\n    var parentIndex = index - 1 >>> 1;\n    var parent = heap[parentIndex];\n\n    if (compare(parent, node) > 0) {\n      // The parent is larger. Swap positions.\n      heap[parentIndex] = node;\n      heap[index] = parent;\n      index = parentIndex;\n    } else {\n      // The parent is smaller. Exit.\n      return;\n    }\n  }\n}\n\nfunction siftDown(heap, node, i) {\n  var index = i;\n  var length = heap.length;\n  var halfLength = length >>> 1;\n\n  while (index < halfLength) {\n    var leftIndex = (index + 1) * 2 - 1;\n    var left = heap[leftIndex];\n    var rightIndex = leftIndex + 1;\n    var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those.\n\n    if (compare(left, node) < 0) {\n      if (rightIndex < length && compare(right, left) < 0) {\n        heap[index] = right;\n        heap[rightIndex] = node;\n        index = rightIndex;\n      } else {\n        heap[index] = left;\n        heap[leftIndex] = node;\n        index = leftIndex;\n      }\n    } else if (rightIndex < length && compare(right, node) < 0) {\n      heap[index] = right;\n      heap[rightIndex] = node;\n      index = rightIndex;\n    } else {\n      // Neither child is smaller. Exit.\n      return;\n    }\n  }\n}\n\nfunction compare(a, b) {\n  // Compare sort index first, then task id.\n  var diff = a.sortIndex - b.sortIndex;\n  return diff !== 0 ? diff : a.id - b.id;\n}\n\n// TODO: Use symbols?\nvar ImmediatePriority = 1;\nvar UserBlockingPriority = 2;\nvar NormalPriority = 3;\nvar LowPriority = 4;\nvar IdlePriority = 5;\n\nfunction markTaskErrored(task, ms) {\n}\n\n/* eslint-disable no-var */\n\nvar hasPerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';\n\nif (hasPerformanceNow) {\n  var localPerformance = performance;\n\n  exports.unstable_now = function () {\n    return localPerformance.now();\n  };\n} else {\n  var localDate = Date;\n  var initialTime = localDate.now();\n\n  exports.unstable_now = function () {\n    return localDate.now() - initialTime;\n  };\n} // Max 31 bit integer. The max integer size in V8 for 32-bit systems.\n// Math.pow(2, 30) - 1\n// 0b111111111111111111111111111111\n\n\nvar maxSigned31BitInt = 1073741823; // Times out immediately\n\nvar IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out\n\nvar USER_BLOCKING_PRIORITY_TIMEOUT = 250;\nvar NORMAL_PRIORITY_TIMEOUT = 5000;\nvar LOW_PRIORITY_TIMEOUT = 10000; // Never times out\n\nvar IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt; // Tasks are stored on a min heap\n\nvar taskQueue = [];\nvar timerQueue = []; // Incrementing id counter. Used to maintain insertion order.\n\nvar taskIdCounter = 1; // Pausing the scheduler is useful for debugging.\nvar currentTask = null;\nvar currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrance.\n\nvar isPerformingWork = false;\nvar isHostCallbackScheduled = false;\nvar isHostTimeoutScheduled = false; // Capture local references to native APIs, in case a polyfill overrides them.\n\nvar localSetTimeout = typeof setTimeout === 'function' ? setTimeout : null;\nvar localClearTimeout = typeof clearTimeout === 'function' ? clearTimeout : null;\nvar localSetImmediate = typeof setImmediate !== 'undefined' ? setImmediate : null; // IE and Node.js + jsdom\n\nvar isInputPending = typeof navigator !== 'undefined' && navigator.scheduling !== undefined && navigator.scheduling.isInputPending !== undefined ? navigator.scheduling.isInputPending.bind(navigator.scheduling) : null;\n\nfunction advanceTimers(currentTime) {\n  // Check for tasks that are no longer delayed and add them to the queue.\n  var timer = peek(timerQueue);\n\n  while (timer !== null) {\n    if (timer.callback === null) {\n      // Timer was cancelled.\n      pop(timerQueue);\n    } else if (timer.startTime <= currentTime) {\n      // Timer fired. Transfer to the task queue.\n      pop(timerQueue);\n      timer.sortIndex = timer.expirationTime;\n      push(taskQueue, timer);\n    } else {\n      // Remaining timers are pending.\n      return;\n    }\n\n    timer = peek(timerQueue);\n  }\n}\n\nfunction handleTimeout(currentTime) {\n  isHostTimeoutScheduled = false;\n  advanceTimers(currentTime);\n\n  if (!isHostCallbackScheduled) {\n    if (peek(taskQueue) !== null) {\n      isHostCallbackScheduled = true;\n      requestHostCallback(flushWork);\n    } else {\n      var firstTimer = peek(timerQueue);\n\n      if (firstTimer !== null) {\n        requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n      }\n    }\n  }\n}\n\nfunction flushWork(hasTimeRemaining, initialTime) {\n\n\n  isHostCallbackScheduled = false;\n\n  if (isHostTimeoutScheduled) {\n    // We scheduled a timeout but it's no longer needed. Cancel it.\n    isHostTimeoutScheduled = false;\n    cancelHostTimeout();\n  }\n\n  isPerformingWork = true;\n  var previousPriorityLevel = currentPriorityLevel;\n\n  try {\n    if (enableProfiling) {\n      try {\n        return workLoop(hasTimeRemaining, initialTime);\n      } catch (error) {\n        if (currentTask !== null) {\n          var currentTime = exports.unstable_now();\n          markTaskErrored(currentTask, currentTime);\n          currentTask.isQueued = false;\n        }\n\n        throw error;\n      }\n    } else {\n      // No catch in prod code path.\n      return workLoop(hasTimeRemaining, initialTime);\n    }\n  } finally {\n    currentTask = null;\n    currentPriorityLevel = previousPriorityLevel;\n    isPerformingWork = false;\n  }\n}\n\nfunction workLoop(hasTimeRemaining, initialTime) {\n  var currentTime = initialTime;\n  advanceTimers(currentTime);\n  currentTask = peek(taskQueue);\n\n  while (currentTask !== null && !(enableSchedulerDebugging )) {\n    if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n      // This currentTask hasn't expired, and we've reached the deadline.\n      break;\n    }\n\n    var callback = currentTask.callback;\n\n    if (typeof callback === 'function') {\n      currentTask.callback = null;\n      currentPriorityLevel = currentTask.priorityLevel;\n      var didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n\n      var continuationCallback = callback(didUserCallbackTimeout);\n      currentTime = exports.unstable_now();\n\n      if (typeof continuationCallback === 'function') {\n        currentTask.callback = continuationCallback;\n      } else {\n\n        if (currentTask === peek(taskQueue)) {\n          pop(taskQueue);\n        }\n      }\n\n      advanceTimers(currentTime);\n    } else {\n      pop(taskQueue);\n    }\n\n    currentTask = peek(taskQueue);\n  } // Return whether there's additional work\n\n\n  if (currentTask !== null) {\n    return true;\n  } else {\n    var firstTimer = peek(timerQueue);\n\n    if (firstTimer !== null) {\n      requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n    }\n\n    return false;\n  }\n}\n\nfunction unstable_runWithPriority(priorityLevel, eventHandler) {\n  switch (priorityLevel) {\n    case ImmediatePriority:\n    case UserBlockingPriority:\n    case NormalPriority:\n    case LowPriority:\n    case IdlePriority:\n      break;\n\n    default:\n      priorityLevel = NormalPriority;\n  }\n\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n}\n\nfunction unstable_next(eventHandler) {\n  var priorityLevel;\n\n  switch (currentPriorityLevel) {\n    case ImmediatePriority:\n    case UserBlockingPriority:\n    case NormalPriority:\n      // Shift down to normal priority\n      priorityLevel = NormalPriority;\n      break;\n\n    default:\n      // Anything lower than normal priority should remain at the current level.\n      priorityLevel = currentPriorityLevel;\n      break;\n  }\n\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n}\n\nfunction unstable_wrapCallback(callback) {\n  var parentPriorityLevel = currentPriorityLevel;\n  return function () {\n    // This is a fork of runWithPriority, inlined for performance.\n    var previousPriorityLevel = currentPriorityLevel;\n    currentPriorityLevel = parentPriorityLevel;\n\n    try {\n      return callback.apply(this, arguments);\n    } finally {\n      currentPriorityLevel = previousPriorityLevel;\n    }\n  };\n}\n\nfunction unstable_scheduleCallback(priorityLevel, callback, options) {\n  var currentTime = exports.unstable_now();\n  var startTime;\n\n  if (typeof options === 'object' && options !== null) {\n    var delay = options.delay;\n\n    if (typeof delay === 'number' && delay > 0) {\n      startTime = currentTime + delay;\n    } else {\n      startTime = currentTime;\n    }\n  } else {\n    startTime = currentTime;\n  }\n\n  var timeout;\n\n  switch (priorityLevel) {\n    case ImmediatePriority:\n      timeout = IMMEDIATE_PRIORITY_TIMEOUT;\n      break;\n\n    case UserBlockingPriority:\n      timeout = USER_BLOCKING_PRIORITY_TIMEOUT;\n      break;\n\n    case IdlePriority:\n      timeout = IDLE_PRIORITY_TIMEOUT;\n      break;\n\n    case LowPriority:\n      timeout = LOW_PRIORITY_TIMEOUT;\n      break;\n\n    case NormalPriority:\n    default:\n      timeout = NORMAL_PRIORITY_TIMEOUT;\n      break;\n  }\n\n  var expirationTime = startTime + timeout;\n  var newTask = {\n    id: taskIdCounter++,\n    callback: callback,\n    priorityLevel: priorityLevel,\n    startTime: startTime,\n    expirationTime: expirationTime,\n    sortIndex: -1\n  };\n\n  if (startTime > currentTime) {\n    // This is a delayed task.\n    newTask.sortIndex = startTime;\n    push(timerQueue, newTask);\n\n    if (peek(taskQueue) === null && newTask === peek(timerQueue)) {\n      // All tasks are delayed, and this is the task with the earliest delay.\n      if (isHostTimeoutScheduled) {\n        // Cancel an existing timeout.\n        cancelHostTimeout();\n      } else {\n        isHostTimeoutScheduled = true;\n      } // Schedule a timeout.\n\n\n      requestHostTimeout(handleTimeout, startTime - currentTime);\n    }\n  } else {\n    newTask.sortIndex = expirationTime;\n    push(taskQueue, newTask);\n    // wait until the next time we yield.\n\n\n    if (!isHostCallbackScheduled && !isPerformingWork) {\n      isHostCallbackScheduled = true;\n      requestHostCallback(flushWork);\n    }\n  }\n\n  return newTask;\n}\n\nfunction unstable_pauseExecution() {\n}\n\nfunction unstable_continueExecution() {\n\n  if (!isHostCallbackScheduled && !isPerformingWork) {\n    isHostCallbackScheduled = true;\n    requestHostCallback(flushWork);\n  }\n}\n\nfunction unstable_getFirstCallbackNode() {\n  return peek(taskQueue);\n}\n\nfunction unstable_cancelCallback(task) {\n  // remove from the queue because you can't remove arbitrary nodes from an\n  // array based heap, only the first one.)\n\n\n  task.callback = null;\n}\n\nfunction unstable_getCurrentPriorityLevel() {\n  return currentPriorityLevel;\n}\n\nvar isMessageLoopRunning = false;\nvar scheduledHostCallback = null;\nvar taskTimeoutID = -1; // Scheduler periodically yields in case there is other work on the main\n// thread, like user events. By default, it yields multiple times per frame.\n// It does not attempt to align with frame boundaries, since most tasks don't\n// need to be frame aligned; for those that do, use requestAnimationFrame.\n\nvar frameInterval = frameYieldMs;\nvar startTime = -1;\n\nfunction shouldYieldToHost() {\n  var timeElapsed = exports.unstable_now() - startTime;\n\n  if (timeElapsed < frameInterval) {\n    // The main thread has only been blocked for a really short amount of time;\n    // smaller than a single frame. Don't yield yet.\n    return false;\n  } // The main thread has been blocked for a non-negligible amount of time. We\n\n\n  return true;\n}\n\nfunction requestPaint() {\n\n}\n\nfunction forceFrameRate(fps) {\n  if (fps < 0 || fps > 125) {\n    // Using console['error'] to evade Babel and ESLint\n    console['error']('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing frame rates higher than 125 fps is not supported');\n    return;\n  }\n\n  if (fps > 0) {\n    frameInterval = Math.floor(1000 / fps);\n  } else {\n    // reset the framerate\n    frameInterval = frameYieldMs;\n  }\n}\n\nvar performWorkUntilDeadline = function () {\n  if (scheduledHostCallback !== null) {\n    var currentTime = exports.unstable_now(); // Keep track of the start time so we can measure how long the main thread\n    // has been blocked.\n\n    startTime = currentTime;\n    var hasTimeRemaining = true; // If a scheduler task throws, exit the current browser task so the\n    // error can be observed.\n    //\n    // Intentionally not using a try-catch, since that makes some debugging\n    // techniques harder. Instead, if `scheduledHostCallback` errors, then\n    // `hasMoreWork` will remain true, and we'll continue the work loop.\n\n    var hasMoreWork = true;\n\n    try {\n      hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime);\n    } finally {\n      if (hasMoreWork) {\n        // If there's more work, schedule the next message event at the end\n        // of the preceding one.\n        schedulePerformWorkUntilDeadline();\n      } else {\n        isMessageLoopRunning = false;\n        scheduledHostCallback = null;\n      }\n    }\n  } else {\n    isMessageLoopRunning = false;\n  } // Yielding to the browser will give it a chance to paint, so we can\n};\n\nvar schedulePerformWorkUntilDeadline;\n\nif (typeof localSetImmediate === 'function') {\n  // Node.js and old IE.\n  // There's a few reasons for why we prefer setImmediate.\n  //\n  // Unlike MessageChannel, it doesn't prevent a Node.js process from exiting.\n  // (Even though this is a DOM fork of the Scheduler, you could get here\n  // with a mix of Node.js 15+, which has a MessageChannel, and jsdom.)\n  // https://github.com/facebook/react/issues/20756\n  //\n  // But also, it runs earlier which is the semantic we want.\n  // If other browsers ever implement it, it's better to use it.\n  // Although both of these would be inferior to native scheduling.\n  schedulePerformWorkUntilDeadline = function () {\n    localSetImmediate(performWorkUntilDeadline);\n  };\n} else if (typeof MessageChannel !== 'undefined') {\n  // DOM and Worker environments.\n  // We prefer MessageChannel because of the 4ms setTimeout clamping.\n  var channel = new MessageChannel();\n  var port = channel.port2;\n  channel.port1.onmessage = performWorkUntilDeadline;\n\n  schedulePerformWorkUntilDeadline = function () {\n    port.postMessage(null);\n  };\n} else {\n  // We should only fallback here in non-browser environments.\n  schedulePerformWorkUntilDeadline = function () {\n    localSetTimeout(performWorkUntilDeadline, 0);\n  };\n}\n\nfunction requestHostCallback(callback) {\n  scheduledHostCallback = callback;\n\n  if (!isMessageLoopRunning) {\n    isMessageLoopRunning = true;\n    schedulePerformWorkUntilDeadline();\n  }\n}\n\nfunction requestHostTimeout(callback, ms) {\n  taskTimeoutID = localSetTimeout(function () {\n    callback(exports.unstable_now());\n  }, ms);\n}\n\nfunction cancelHostTimeout() {\n  localClearTimeout(taskTimeoutID);\n  taskTimeoutID = -1;\n}\n\nvar unstable_requestPaint = requestPaint;\nvar unstable_Profiling =  null;\n\nexports.unstable_IdlePriority = IdlePriority;\nexports.unstable_ImmediatePriority = ImmediatePriority;\nexports.unstable_LowPriority = LowPriority;\nexports.unstable_NormalPriority = NormalPriority;\nexports.unstable_Profiling = unstable_Profiling;\nexports.unstable_UserBlockingPriority = UserBlockingPriority;\nexports.unstable_cancelCallback = unstable_cancelCallback;\nexports.unstable_continueExecution = unstable_continueExecution;\nexports.unstable_forceFrameRate = forceFrameRate;\nexports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;\nexports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;\nexports.unstable_next = unstable_next;\nexports.unstable_pauseExecution = unstable_pauseExecution;\nexports.unstable_requestPaint = unstable_requestPaint;\nexports.unstable_runWithPriority = unstable_runWithPriority;\nexports.unstable_scheduleCallback = unstable_scheduleCallback;\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = unstable_wrapCallback;\n          /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n        \n  })();\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/scheduler/cjs/scheduler.development.js?");

/***/ }),

/***/ "./node_modules/scheduler/index.js":
/*!*****************************************!*\
  !*** ./node_modules/scheduler/index.js ***!
  \*****************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ./cjs/scheduler.development.js */ \"./node_modules/scheduler/cjs/scheduler.development.js\");\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/scheduler/index.js?");

/***/ }),

/***/ "./src/pages/ReportPage.css":
/*!**********************************!*\
  !*** ./src/pages/ReportPage.css ***!
  \**********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ \"./node_modules/style-loader/dist/runtime/styleDomAPI.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertBySelector.js */ \"./node_modules/style-loader/dist/runtime/insertBySelector.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ \"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ \"./node_modules/style-loader/dist/runtime/insertStyleElement.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ \"./node_modules/style-loader/dist/runtime/styleTagTransform.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_1_ReportPage_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./ReportPage.css */ \"./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./src/pages/ReportPage.css\");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, \"head\");\n    \noptions.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_1_ReportPage_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"], options);\n\n\n\n\n       /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_1_ReportPage_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"] && _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_1_ReportPage_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals ? _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_1_ReportPage_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals : undefined);\n\n\n//# sourceURL=webpack://schemaevaluator/./src/pages/ReportPage.css?");

/***/ }),

/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
/*!****************************************************************************!*\
  !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
  \****************************************************************************/
/***/ (function(module) {

"use strict";
eval("\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n  var result = -1;\n\n  for (var i = 0; i < stylesInDOM.length; i++) {\n    if (stylesInDOM[i].identifier === identifier) {\n      result = i;\n      break;\n    }\n  }\n\n  return result;\n}\n\nfunction modulesToDom(list, options) {\n  var idCountMap = {};\n  var identifiers = [];\n\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i];\n    var id = options.base ? item[0] + options.base : item[0];\n    var count = idCountMap[id] || 0;\n    var identifier = \"\".concat(id, \" \").concat(count);\n    idCountMap[id] = count + 1;\n    var indexByIdentifier = getIndexByIdentifier(identifier);\n    var obj = {\n      css: item[1],\n      media: item[2],\n      sourceMap: item[3],\n      supports: item[4],\n      layer: item[5]\n    };\n\n    if (indexByIdentifier !== -1) {\n      stylesInDOM[indexByIdentifier].references++;\n      stylesInDOM[indexByIdentifier].updater(obj);\n    } else {\n      var updater = addElementStyle(obj, options);\n      options.byIndex = i;\n      stylesInDOM.splice(i, 0, {\n        identifier: identifier,\n        updater: updater,\n        references: 1\n      });\n    }\n\n    identifiers.push(identifier);\n  }\n\n  return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n  var api = options.domAPI(options);\n  api.update(obj);\n\n  var updater = function updater(newObj) {\n    if (newObj) {\n      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n        return;\n      }\n\n      api.update(obj = newObj);\n    } else {\n      api.remove();\n    }\n  };\n\n  return updater;\n}\n\nmodule.exports = function (list, options) {\n  options = options || {};\n  list = list || [];\n  var lastIdentifiers = modulesToDom(list, options);\n  return function update(newList) {\n    newList = newList || [];\n\n    for (var i = 0; i < lastIdentifiers.length; i++) {\n      var identifier = lastIdentifiers[i];\n      var index = getIndexByIdentifier(identifier);\n      stylesInDOM[index].references--;\n    }\n\n    var newLastIdentifiers = modulesToDom(newList, options);\n\n    for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n      var _identifier = lastIdentifiers[_i];\n\n      var _index = getIndexByIdentifier(_identifier);\n\n      if (stylesInDOM[_index].references === 0) {\n        stylesInDOM[_index].updater();\n\n        stylesInDOM.splice(_index, 1);\n      }\n    }\n\n    lastIdentifiers = newLastIdentifiers;\n  };\n};\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js?");

/***/ }),

/***/ "./node_modules/style-loader/dist/runtime/insertBySelector.js":
/*!********************************************************************!*\
  !*** ./node_modules/style-loader/dist/runtime/insertBySelector.js ***!
  \********************************************************************/
/***/ (function(module) {

"use strict";
eval("\n\nvar memo = {};\n/* istanbul ignore next  */\n\nfunction getTarget(target) {\n  if (typeof memo[target] === \"undefined\") {\n    var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n    if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n      try {\n        // This will throw an exception if access to iframe is blocked\n        // due to cross-origin restrictions\n        styleTarget = styleTarget.contentDocument.head;\n      } catch (e) {\n        // istanbul ignore next\n        styleTarget = null;\n      }\n    }\n\n    memo[target] = styleTarget;\n  }\n\n  return memo[target];\n}\n/* istanbul ignore next  */\n\n\nfunction insertBySelector(insert, style) {\n  var target = getTarget(insert);\n\n  if (!target) {\n    throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n  }\n\n  target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/style-loader/dist/runtime/insertBySelector.js?");

/***/ }),

/***/ "./node_modules/style-loader/dist/runtime/insertStyleElement.js":
/*!**********************************************************************!*\
  !*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***!
  \**********************************************************************/
/***/ (function(module) {

"use strict";
eval("\n\n/* istanbul ignore next  */\nfunction insertStyleElement(options) {\n  var element = document.createElement(\"style\");\n  options.setAttributes(element, options.attributes);\n  options.insert(element, options.options);\n  return element;\n}\n\nmodule.exports = insertStyleElement;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/style-loader/dist/runtime/insertStyleElement.js?");

/***/ }),

/***/ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***!
  \**********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\n\n/* istanbul ignore next  */\nfunction setAttributesWithoutAttributes(styleElement) {\n  var nonce =  true ? __webpack_require__.nc : 0;\n\n  if (nonce) {\n    styleElement.setAttribute(\"nonce\", nonce);\n  }\n}\n\nmodule.exports = setAttributesWithoutAttributes;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js?");

/***/ }),

/***/ "./node_modules/style-loader/dist/runtime/styleDomAPI.js":
/*!***************************************************************!*\
  !*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***!
  \***************************************************************/
/***/ (function(module) {

"use strict";
eval("\n\n/* istanbul ignore next  */\nfunction apply(styleElement, options, obj) {\n  var css = \"\";\n\n  if (obj.supports) {\n    css += \"@supports (\".concat(obj.supports, \") {\");\n  }\n\n  if (obj.media) {\n    css += \"@media \".concat(obj.media, \" {\");\n  }\n\n  var needLayer = typeof obj.layer !== \"undefined\";\n\n  if (needLayer) {\n    css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n  }\n\n  css += obj.css;\n\n  if (needLayer) {\n    css += \"}\";\n  }\n\n  if (obj.media) {\n    css += \"}\";\n  }\n\n  if (obj.supports) {\n    css += \"}\";\n  }\n\n  var sourceMap = obj.sourceMap;\n\n  if (sourceMap && typeof btoa !== \"undefined\") {\n    css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n  } // For old IE\n\n  /* istanbul ignore if  */\n\n\n  options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n  // istanbul ignore if\n  if (styleElement.parentNode === null) {\n    return false;\n  }\n\n  styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next  */\n\n\nfunction domAPI(options) {\n  var styleElement = options.insertStyleElement(options);\n  return {\n    update: function update(obj) {\n      apply(styleElement, options, obj);\n    },\n    remove: function remove() {\n      removeStyleElement(styleElement);\n    }\n  };\n}\n\nmodule.exports = domAPI;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/style-loader/dist/runtime/styleDomAPI.js?");

/***/ }),

/***/ "./node_modules/style-loader/dist/runtime/styleTagTransform.js":
/*!*********************************************************************!*\
  !*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***!
  \*********************************************************************/
/***/ (function(module) {

"use strict";
eval("\n\n/* istanbul ignore next  */\nfunction styleTagTransform(css, styleElement) {\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css;\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild);\n    }\n\n    styleElement.appendChild(document.createTextNode(css));\n  }\n}\n\nmodule.exports = styleTagTransform;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/style-loader/dist/runtime/styleTagTransform.js?");

/***/ }),

/***/ "./node_modules/style-to-object/index.js":
/*!***********************************************!*\
  !*** ./node_modules/style-to-object/index.js ***!
  \***********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var parse = __webpack_require__(/*! inline-style-parser */ \"./node_modules/inline-style-parser/index.js\");\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param  {String}      style      - The inline style.\n * @param  {Function}    [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n  var output = null;\n  if (!style || typeof style !== 'string') {\n    return output;\n  }\n\n  var declaration;\n  var declarations = parse(style);\n  var hasIterator = typeof iterator === 'function';\n  var property;\n  var value;\n\n  for (var i = 0, len = declarations.length; i < len; i++) {\n    declaration = declarations[i];\n    property = declaration.property;\n    value = declaration.value;\n\n    if (hasIterator) {\n      iterator(property, value, declaration);\n    } else if (value) {\n      output || (output = {});\n      output[property] = value;\n    }\n  }\n\n  return output;\n}\n\nmodule.exports = StyleToObject;\nmodule.exports[\"default\"] = StyleToObject; // ESM support\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/style-to-object/index.js?");

/***/ }),

/***/ "./node_modules/tss-react/GlobalStyles.js":
/*!************************************************!*\
  !*** ./node_modules/tss-react/GlobalStyles.js ***!
  \************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GlobalStyles = void 0;\nconst react_1 = __importDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\nconst reactEmotion = __importStar(__webpack_require__(/*! @emotion/react */ \"./node_modules/@emotion/react/dist/emotion-react.browser.esm.js\"));\nfunction GlobalStyles(props) {\n    const { styles } = props;\n    return react_1.default.createElement(reactEmotion.Global, { styles: reactEmotion.css(styles) });\n}\nexports.GlobalStyles = GlobalStyles;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/tss-react/GlobalStyles.js?");

/***/ }),

/***/ "./node_modules/tss-react/cache.js":
/*!*****************************************!*\
  !*** ./node_modules/tss-react/cache.js ***!
  \*****************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TssCacheProvider = exports.useTssEmotionCache = exports.getTssDefaultEmotionCache = exports.getDoExistsTssDefaultEmotionCacheMemoizedValue = void 0;\nconst react_1 = __importStar(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\nconst cache_1 = __importDefault(__webpack_require__(/*! @emotion/cache */ \"./node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js\"));\nconst { getDoExistsTssDefaultEmotionCacheMemoizedValue, getTssDefaultEmotionCache, reactContext, } = (() => {\n    const propertyKey = \"__tss-react_context\";\n    const peerDepObj = \n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    react_1.createContext;\n    let sharedContext = peerDepObj[\"__tss-react_context\"];\n    if (sharedContext === undefined) {\n        const { getTssDefaultEmotionCache, getDoExistsTssDefaultEmotionCacheMemoizedValue, } = (() => {\n            let cache = undefined;\n            /**\n             * Lazily initialized singleton\n             * If doReset is set to true the memoized instance will be\n             * discarded and a new one created.\n             * */\n            function getTssDefaultEmotionCache(params) {\n                const { doReset = false } = params !== null && params !== void 0 ? params : {};\n                if (doReset) {\n                    cache = undefined;\n                }\n                if (cache === undefined) {\n                    cache = (0, cache_1.default)({ \"key\": \"tss\" });\n                }\n                return cache;\n            }\n            return {\n                getTssDefaultEmotionCache,\n                \"getDoExistsTssDefaultEmotionCacheMemoizedValue\": () => cache !== undefined,\n            };\n        })();\n        sharedContext = {\n            getTssDefaultEmotionCache,\n            getDoExistsTssDefaultEmotionCacheMemoizedValue,\n            \"reactContext\": (0, react_1.createContext)(undefined),\n        };\n        Object.defineProperty(peerDepObj, propertyKey, {\n            \"configurable\": false,\n            \"enumerable\": false,\n            \"writable\": false,\n            \"value\": sharedContext,\n        });\n    }\n    return sharedContext;\n})();\nexports.getDoExistsTssDefaultEmotionCacheMemoizedValue = getDoExistsTssDefaultEmotionCacheMemoizedValue;\nexports.getTssDefaultEmotionCache = getTssDefaultEmotionCache;\nfunction useTssEmotionCache() {\n    const cacheExplicitlyProvidedForTss = (0, react_1.useContext)(reactContext);\n    return cacheExplicitlyProvidedForTss !== null && cacheExplicitlyProvidedForTss !== void 0 ? cacheExplicitlyProvidedForTss : getTssDefaultEmotionCache();\n}\nexports.useTssEmotionCache = useTssEmotionCache;\nfunction TssCacheProvider(props) {\n    const { children, value } = props;\n    return (react_1.default.createElement(reactContext.Provider, { value: value }, children));\n}\nexports.TssCacheProvider = TssCacheProvider;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/tss-react/cache.js?");

/***/ }),

/***/ "./node_modules/tss-react/cssAndCx.js":
/*!********************************************!*\
  !*** ./node_modules/tss-react/cssAndCx.js ***!
  \********************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.useCssAndCx = exports.createCssAndCx = void 0;\nconst classnames_1 = __webpack_require__(/*! ./tools/classnames */ \"./node_modules/tss-react/tools/classnames.js\");\nconst serialize_1 = __webpack_require__(/*! @emotion/serialize */ \"./node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js\");\nconst utils_1 = __webpack_require__(/*! @emotion/utils */ \"./node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js\");\nconst useGuaranteedMemo_1 = __webpack_require__(/*! ./tools/useGuaranteedMemo */ \"./node_modules/tss-react/tools/useGuaranteedMemo.js\");\nconst cache_1 = __webpack_require__(/*! ./cache */ \"./node_modules/tss-react/cache.js\");\nconst types_1 = __webpack_require__(/*! ./types */ \"./node_modules/tss-react/types.js\");\nexports.createCssAndCx = (() => {\n    function merge(registered, css, className) {\n        const registeredStyles = [];\n        const rawClassName = (0, utils_1.getRegisteredStyles)(registered, registeredStyles, className);\n        if (registeredStyles.length < 2) {\n            return className;\n        }\n        return rawClassName + css(registeredStyles);\n    }\n    function createCssAndCx(params) {\n        const { cache } = params;\n        const css = (...args) => {\n            const serialized = (0, serialize_1.serializeStyles)(args, cache.registered);\n            (0, utils_1.insertStyles)(cache, serialized, false);\n            const className = `${cache.key}-${serialized.name}`;\n            scope: {\n                const arg = args[0];\n                if (!(0, types_1.matchCSSObject)(arg)) {\n                    break scope;\n                }\n                increaseSpecificityToTakePrecedenceOverMediaQuerries.saveClassNameCSSObjectMapping(cache, className, arg);\n            }\n            return className;\n        };\n        const cx = (...args) => {\n            const className = (0, classnames_1.classnames)(args);\n            const feat27FixedClassnames = increaseSpecificityToTakePrecedenceOverMediaQuerries.fixClassName(cache, className, css);\n            return merge(cache.registered, css, feat27FixedClassnames);\n            //return merge(cache.registered, css, className);\n        };\n        return { css, cx };\n    }\n    return { createCssAndCx };\n})().createCssAndCx;\n/** Will pickup the contextual cache if any */\nfunction useCssAndCx() {\n    const cache = (0, cache_1.useTssEmotionCache)();\n    const { css, cx } = (0, useGuaranteedMemo_1.useGuaranteedMemo)(() => (0, exports.createCssAndCx)({ cache }), [cache]);\n    return { css, cx };\n}\nexports.useCssAndCx = useCssAndCx;\n// https://github.com/garronej/tss-react/issues/27\nconst increaseSpecificityToTakePrecedenceOverMediaQuerries = (() => {\n    const cssObjectMapByCache = new WeakMap();\n    return {\n        \"saveClassNameCSSObjectMapping\": (cache, className, cssObject) => {\n            let cssObjectMap = cssObjectMapByCache.get(cache);\n            if (cssObjectMap === undefined) {\n                cssObjectMap = new Map();\n                cssObjectMapByCache.set(cache, cssObjectMap);\n            }\n            cssObjectMap.set(className, cssObject);\n        },\n        \"fixClassName\": (() => {\n            function fix(classNameCSSObjects) {\n                let isThereAnyMediaQueriesInPreviousClasses = false;\n                return classNameCSSObjects.map(([className, cssObject]) => {\n                    if (cssObject === undefined) {\n                        return className;\n                    }\n                    let out;\n                    if (!isThereAnyMediaQueriesInPreviousClasses) {\n                        out = className;\n                        for (const key in cssObject) {\n                            if (key.startsWith(\"@media\")) {\n                                isThereAnyMediaQueriesInPreviousClasses = true;\n                                break;\n                            }\n                        }\n                    }\n                    else {\n                        out = {\n                            \"&&\": cssObject,\n                        };\n                    }\n                    return out;\n                });\n            }\n            return (cache, className, css) => {\n                const cssObjectMap = cssObjectMapByCache.get(cache);\n                return (0, classnames_1.classnames)(fix(className\n                    .split(\" \")\n                    .map(className => [\n                    className,\n                    cssObjectMap === null || cssObjectMap === void 0 ? void 0 : cssObjectMap.get(className),\n                ])).map(classNameOrCSSObject => typeof classNameOrCSSObject === \"string\"\n                    ? classNameOrCSSObject\n                    : css(classNameOrCSSObject)));\n            };\n        })(),\n    };\n})();\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/tss-react/cssAndCx.js?");

/***/ }),

/***/ "./node_modules/tss-react/index.js":
/*!*****************************************!*\
  !*** ./node_modules/tss-react/index.js ***!
  \*****************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.createMakeAndWithStyles = exports.TssCacheProvider = exports.getTssDefaultEmotionCache = exports.GlobalStyles = exports.keyframes = exports.createWithStyles = exports.createMakeStyles = exports.useMergedClasses = exports.useCssAndCx = void 0;\n/** @see <https://docs.tss-react.dev/api-references> */\nvar cssAndCx_1 = __webpack_require__(/*! ./cssAndCx */ \"./node_modules/tss-react/cssAndCx.js\");\nObject.defineProperty(exports, \"useCssAndCx\", ({ enumerable: true, get: function () { return cssAndCx_1.useCssAndCx; } }));\nvar mergeClasses_1 = __webpack_require__(/*! ./mergeClasses */ \"./node_modules/tss-react/mergeClasses.js\");\nObject.defineProperty(exports, \"useMergedClasses\", ({ enumerable: true, get: function () { return mergeClasses_1.useMergedClasses; } }));\nconst makeStyles_1 = __webpack_require__(/*! ./makeStyles */ \"./node_modules/tss-react/makeStyles.js\");\nObject.defineProperty(exports, \"createMakeStyles\", ({ enumerable: true, get: function () { return makeStyles_1.createMakeStyles; } }));\nconst withStyles_1 = __webpack_require__(/*! ./withStyles */ \"./node_modules/tss-react/withStyles.js\");\nObject.defineProperty(exports, \"createWithStyles\", ({ enumerable: true, get: function () { return withStyles_1.createWithStyles; } }));\n/** @see <https://docs.tss-react.dev/api-references/keyframes> */\nvar react_1 = __webpack_require__(/*! @emotion/react */ \"./node_modules/@emotion/react/dist/emotion-react.browser.esm.js\");\nObject.defineProperty(exports, \"keyframes\", ({ enumerable: true, get: function () { return react_1.keyframes; } }));\n/** @see <https://docs.tss-react.dev/api-references/globalstyles> */\nvar GlobalStyles_1 = __webpack_require__(/*! ./GlobalStyles */ \"./node_modules/tss-react/GlobalStyles.js\");\nObject.defineProperty(exports, \"GlobalStyles\", ({ enumerable: true, get: function () { return GlobalStyles_1.GlobalStyles; } }));\n/** @see <https://docs.tss-react.dev/cache> */\nvar cache_1 = __webpack_require__(/*! ./cache */ \"./node_modules/tss-react/cache.js\");\nObject.defineProperty(exports, \"getTssDefaultEmotionCache\", ({ enumerable: true, get: function () { return cache_1.getTssDefaultEmotionCache; } }));\nObject.defineProperty(exports, \"TssCacheProvider\", ({ enumerable: true, get: function () { return cache_1.TssCacheProvider; } }));\n/** @see <https://docs.tss-react.dev/api-references/makestyles-usestyles> */\nfunction createMakeAndWithStyles(params) {\n    return Object.assign(Object.assign({}, (0, makeStyles_1.createMakeStyles)(params)), (0, withStyles_1.createWithStyles)(params));\n}\nexports.createMakeAndWithStyles = createMakeAndWithStyles;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/tss-react/index.js?");

/***/ }),

/***/ "./node_modules/tss-react/makeStyles.js":
/*!**********************************************!*\
  !*** ./node_modules/tss-react/makeStyles.js ***!
  \**********************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.createMakeStyles = void 0;\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst react_1 = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\nconst Object_fromEntries_1 = __webpack_require__(/*! ./tools/polyfills/Object.fromEntries */ \"./node_modules/tss-react/tools/polyfills/Object.fromEntries.js\");\nconst objectKeys_1 = __webpack_require__(/*! ./tools/objectKeys */ \"./node_modules/tss-react/tools/objectKeys.js\");\nconst cssAndCx_1 = __webpack_require__(/*! ./cssAndCx */ \"./node_modules/tss-react/cssAndCx.js\");\nconst getDependencyArrayRef_1 = __webpack_require__(/*! ./tools/getDependencyArrayRef */ \"./node_modules/tss-react/tools/getDependencyArrayRef.js\");\nconst typeGuard_1 = __webpack_require__(/*! ./tools/typeGuard */ \"./node_modules/tss-react/tools/typeGuard.js\");\nconst cache_1 = __webpack_require__(/*! ./cache */ \"./node_modules/tss-react/cache.js\");\nconst assert_1 = __webpack_require__(/*! ./tools/assert */ \"./node_modules/tss-react/tools/assert.js\");\nconst mergeClasses_1 = __webpack_require__(/*! ./mergeClasses */ \"./node_modules/tss-react/mergeClasses.js\");\nlet counter = 0;\nfunction createMakeStyles(params) {\n    const { useTheme } = params;\n    /** returns useStyle. */\n    function makeStyles(params) {\n        const { name: nameOrWrappedName, uniqId = counter++ } = params !== null && params !== void 0 ? params : {};\n        const name = typeof nameOrWrappedName !== \"object\"\n            ? nameOrWrappedName\n            : Object.keys(nameOrWrappedName)[0];\n        return function (cssObjectByRuleNameOrGetCssObjectByRuleName) {\n            const getCssObjectByRuleName = typeof cssObjectByRuleNameOrGetCssObjectByRuleName ===\n                \"function\"\n                ? cssObjectByRuleNameOrGetCssObjectByRuleName\n                : () => cssObjectByRuleNameOrGetCssObjectByRuleName;\n            return function useStyles(params, styleOverrides) {\n                var _a, _b;\n                const theme = useTheme();\n                const { css, cx } = (0, cssAndCx_1.useCssAndCx)();\n                const cache = (0, cache_1.useTssEmotionCache)();\n                let classes = (0, react_1.useMemo)(() => {\n                    const refClassesCache = {};\n                    const refClasses = typeof Proxy !== \"undefined\" &&\n                        new Proxy({}, {\n                            \"get\": (_target, propertyKey) => {\n                                if (typeof propertyKey === \"symbol\") {\n                                    (0, assert_1.assert)(false);\n                                }\n                                return (refClassesCache[propertyKey] = `${cache.key}-${uniqId}${name !== undefined ? `-${name}` : \"\"}-${propertyKey}-ref`);\n                            },\n                        });\n                    const cssObjectByRuleName = getCssObjectByRuleName(theme, params, refClasses || {});\n                    const classes = (0, Object_fromEntries_1.objectFromEntries)((0, objectKeys_1.objectKeys)(cssObjectByRuleName).map(ruleName => {\n                        const cssObject = cssObjectByRuleName[ruleName];\n                        if (!cssObject.label) {\n                            cssObject.label = `${name !== undefined ? `${name}-` : \"\"}${ruleName}`;\n                        }\n                        return [\n                            ruleName,\n                            `${css(cssObject)}${(0, typeGuard_1.typeGuard)(ruleName, ruleName in refClassesCache)\n                                ? ` ${refClassesCache[ruleName]}`\n                                : \"\"}`,\n                        ];\n                    }));\n                    (0, objectKeys_1.objectKeys)(refClassesCache).forEach(ruleName => {\n                        if (ruleName in classes) {\n                            return;\n                        }\n                        classes[ruleName] =\n                            refClassesCache[ruleName];\n                    });\n                    return classes;\n                }, [cache, css, cx, theme, (0, getDependencyArrayRef_1.getDependencyArrayRef)(params)]);\n                const propsClasses = styleOverrides === null || styleOverrides === void 0 ? void 0 : styleOverrides.props.classes;\n                {\n                    classes = (0, react_1.useMemo)(() => (0, mergeClasses_1.mergeClasses)(classes, propsClasses, cx), [classes, (0, getDependencyArrayRef_1.getDependencyArrayRef)(propsClasses), cx]);\n                }\n                {\n                    let cssObjectByRuleNameOrGetCssObjectByRuleName = undefined;\n                    try {\n                        cssObjectByRuleNameOrGetCssObjectByRuleName =\n                            name !== undefined\n                                ? (_b = (_a = theme.components) === null || _a === void 0 ? void 0 : _a[name]) === null || _b === void 0 ? void 0 : _b.styleOverrides\n                                : undefined;\n                        // eslint-disable-next-line no-empty\n                    }\n                    catch (_c) { }\n                    const themeClasses = (0, react_1.useMemo)(() => {\n                        if (!cssObjectByRuleNameOrGetCssObjectByRuleName) {\n                            return undefined;\n                        }\n                        const themeClasses = {};\n                        for (const ruleName in cssObjectByRuleNameOrGetCssObjectByRuleName) {\n                            const cssObjectOrGetCssObject = cssObjectByRuleNameOrGetCssObjectByRuleName[ruleName];\n                            if (!(cssObjectOrGetCssObject instanceof Object)) {\n                                continue;\n                            }\n                            themeClasses[ruleName] = css(typeof cssObjectOrGetCssObject === \"function\"\n                                ? cssObjectOrGetCssObject(Object.assign({ theme, \"ownerState\": styleOverrides === null || styleOverrides === void 0 ? void 0 : styleOverrides.ownerState }, styleOverrides === null || styleOverrides === void 0 ? void 0 : styleOverrides.props))\n                                : cssObjectOrGetCssObject);\n                        }\n                        return themeClasses;\n                    }, [\n                        cssObjectByRuleNameOrGetCssObjectByRuleName ===\n                            undefined\n                            ? undefined\n                            : JSON.stringify(cssObjectByRuleNameOrGetCssObjectByRuleName),\n                        (0, getDependencyArrayRef_1.getDependencyArrayRef)(styleOverrides === null || styleOverrides === void 0 ? void 0 : styleOverrides.props),\n                        (0, getDependencyArrayRef_1.getDependencyArrayRef)(styleOverrides === null || styleOverrides === void 0 ? void 0 : styleOverrides.ownerState),\n                        css,\n                    ]);\n                    classes = (0, react_1.useMemo)(() => (0, mergeClasses_1.mergeClasses)(classes, themeClasses, cx), [classes, themeClasses, cx]);\n                }\n                return {\n                    classes,\n                    theme,\n                    css,\n                    cx,\n                };\n            };\n        };\n    }\n    function useStyles() {\n        const theme = useTheme();\n        const { css, cx } = (0, cssAndCx_1.useCssAndCx)();\n        return { theme, css, cx };\n    }\n    return { makeStyles, useStyles };\n}\nexports.createMakeStyles = createMakeStyles;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/tss-react/makeStyles.js?");

/***/ }),

/***/ "./node_modules/tss-react/mergeClasses.js":
/*!************************************************!*\
  !*** ./node_modules/tss-react/mergeClasses.js ***!
  \************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.useMergedClasses = exports.mergeClasses = void 0;\nconst objectKeys_1 = __webpack_require__(/*! ./tools/objectKeys */ \"./node_modules/tss-react/tools/objectKeys.js\");\nconst getDependencyArrayRef_1 = __webpack_require__(/*! ./tools/getDependencyArrayRef */ \"./node_modules/tss-react/tools/getDependencyArrayRef.js\");\nconst cssAndCx_1 = __webpack_require__(/*! ./cssAndCx */ \"./node_modules/tss-react/cssAndCx.js\");\nconst react_1 = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\nfunction mergeClasses(classesFromUseStyles, classesFromProps, cx) {\n    //NOTE: We use this test to be resilient in case classesFromProps is not of the expected type.\n    if (!(classesFromProps instanceof Object)) {\n        return classesFromUseStyles;\n    }\n    const out = {};\n    (0, objectKeys_1.objectKeys)(classesFromUseStyles).forEach(ruleName => (out[ruleName] = cx(classesFromUseStyles[ruleName], classesFromProps[ruleName])));\n    (0, objectKeys_1.objectKeys)(classesFromProps).forEach(ruleName => {\n        if (ruleName in classesFromUseStyles) {\n            return;\n        }\n        const className = classesFromProps[ruleName];\n        //...Same here, that why we don't do className === undefined\n        if (typeof className !== \"string\") {\n            return;\n        }\n        out[ruleName] = className;\n    });\n    return out;\n}\nexports.mergeClasses = mergeClasses;\nfunction useMergedClasses(classes, classesOv) {\n    const { cx } = (0, cssAndCx_1.useCssAndCx)();\n    return (0, react_1.useMemo)(() => mergeClasses(classes, classesOv, cx), [classes, (0, getDependencyArrayRef_1.getDependencyArrayRef)(classesOv), cx]);\n}\nexports.useMergedClasses = useMergedClasses;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/tss-react/mergeClasses.js?");

/***/ }),

/***/ "./node_modules/tss-react/mui.js":
/*!***************************************!*\
  !*** ./node_modules/tss-react/mui.js ***!
  \***************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nvar _a;\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.useStyles = exports.withStyles = exports.makeStyles = void 0;\nconst styles_1 = __webpack_require__(/*! @mui/material/styles */ \"./node_modules/@mui/material/styles/index.js\");\nconst index_1 = __webpack_require__(/*! ./index */ \"./node_modules/tss-react/index.js\");\n/** @see <https://docs.tss-react.dev/setup> */\n_a = (0, index_1.createMakeAndWithStyles)({\n    useTheme: styles_1.useTheme,\n}), exports.makeStyles = _a.makeStyles, exports.withStyles = _a.withStyles, exports.useStyles = _a.useStyles;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/tss-react/mui.js?");

/***/ }),

/***/ "./node_modules/tss-react/tools/assert.js":
/*!************************************************!*\
  !*** ./node_modules/tss-react/tools/assert.js ***!
  \************************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.assert = void 0;\n/** https://docs.tsafe.dev/assert */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction assert(condition, msg) {\n    if (!condition) {\n        throw new Error(msg);\n    }\n}\nexports.assert = assert;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/tss-react/tools/assert.js?");

/***/ }),

/***/ "./node_modules/tss-react/tools/capitalize.js":
/*!****************************************************!*\
  !*** ./node_modules/tss-react/tools/capitalize.js ***!
  \****************************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.capitalize = void 0;\n/** @see <https://docs.tsafe.dev/capitalize> */\nfunction capitalize(str) {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    return (str.charAt(0).toUpperCase() + str.slice(1));\n}\nexports.capitalize = capitalize;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/tss-react/tools/capitalize.js?");

/***/ }),

/***/ "./node_modules/tss-react/tools/classnames.js":
/*!****************************************************!*\
  !*** ./node_modules/tss-react/tools/classnames.js ***!
  \****************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.classnames = void 0;\nconst assert_1 = __webpack_require__(/*! ./assert */ \"./node_modules/tss-react/tools/assert.js\");\nconst typeGuard_1 = __webpack_require__(/*! ./typeGuard */ \"./node_modules/tss-react/tools/typeGuard.js\");\n/** Copy pasted from\n * https://github.com/emotion-js/emotion/blob/23f43ab9f24d44219b0b007a00f4ac681fe8712e/packages/react/src/class-names.js#L17-L63\n **/\nconst classnames = (args) => {\n    const len = args.length;\n    let i = 0;\n    let cls = \"\";\n    for (; i < len; i++) {\n        const arg = args[i];\n        if (arg == null)\n            continue;\n        let toAdd;\n        switch (typeof arg) {\n            case \"boolean\":\n                break;\n            case \"object\": {\n                if (Array.isArray(arg)) {\n                    toAdd = (0, exports.classnames)(arg);\n                }\n                else {\n                    (0, assert_1.assert)(!(0, typeGuard_1.typeGuard)(arg, false));\n                    if ( true &&\n                        arg.styles !== undefined &&\n                        arg.name !== undefined) {\n                        console.error(\"You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n\" +\n                            \"`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component.\");\n                    }\n                    toAdd = \"\";\n                    for (const k in arg) {\n                        if (arg[k] && k) {\n                            toAdd && (toAdd += \" \");\n                            toAdd += k;\n                        }\n                    }\n                }\n                break;\n            }\n            default: {\n                toAdd = arg;\n            }\n        }\n        if (toAdd) {\n            cls && (cls += \" \");\n            cls += toAdd;\n        }\n    }\n    return cls;\n};\nexports.classnames = classnames;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/tss-react/tools/classnames.js?");

/***/ }),

/***/ "./node_modules/tss-react/tools/getDependencyArrayRef.js":
/*!***************************************************************!*\
  !*** ./node_modules/tss-react/tools/getDependencyArrayRef.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.getDependencyArrayRef = void 0;\n/**\n * useEffect(\n *    ()=> { ... },\n *    [ { \"foo\": \"bar\" } ]\n * )\n * => The callback will be invoked every render.\n * because { \"foo\": \"bar\" } is a new instance every render.\n *\n * useEffect(\n *    ()=> { ... },\n *    [ getDependencyArrayRef({ \"foo\": \"bar\" }) ]\n * );\n * => The callback will only be invoked once.\n *\n * The optimization will be enabled only if obj is\n * of the form Record<string, string | number | undefined | null>\n * overwise the object is returned (the function is the identity function).\n */\nfunction getDependencyArrayRef(obj) {\n    if (!(obj instanceof Object) || typeof obj === \"function\") {\n        return obj;\n    }\n    const arr = [];\n    for (const key in obj) {\n        const value = obj[key];\n        const typeofValue = typeof value;\n        if (!(typeofValue === \"string\" ||\n            (typeofValue === \"number\" && !isNaN(value)) ||\n            typeofValue === \"boolean\" ||\n            value === undefined ||\n            value === null)) {\n            return obj;\n        }\n        arr.push(`${key}:${typeofValue}_${value}`);\n    }\n    return \"xSqLiJdLMd9s\" + arr.join(\"|\");\n}\nexports.getDependencyArrayRef = getDependencyArrayRef;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/tss-react/tools/getDependencyArrayRef.js?");

/***/ }),

/***/ "./node_modules/tss-react/tools/objectKeys.js":
/*!****************************************************!*\
  !*** ./node_modules/tss-react/tools/objectKeys.js ***!
  \****************************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.objectKeys = void 0;\n/** Object.keys() with types */\nfunction objectKeys(o) {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    return Object.keys(o);\n}\nexports.objectKeys = objectKeys;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/tss-react/tools/objectKeys.js?");

/***/ }),

/***/ "./node_modules/tss-react/tools/polyfills/Object.fromEntries.js":
/*!**********************************************************************!*\
  !*** ./node_modules/tss-react/tools/polyfills/Object.fromEntries.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.objectFromEntries = void 0;\nexports.objectFromEntries = !Object\n    .fromEntries\n    ? (entries) => {\n        if (!entries || !entries[Symbol.iterator]) {\n            throw new Error(\"Object.fromEntries() requires a single iterable argument\");\n        }\n        const o = {};\n        Object.keys(entries).forEach(key => {\n            const [k, v] = entries[key];\n            o[k] = v;\n        });\n        return o;\n    }\n    : Object.fromEntries;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/tss-react/tools/polyfills/Object.fromEntries.js?");

/***/ }),

/***/ "./node_modules/tss-react/tools/typeGuard.js":
/*!***************************************************!*\
  !*** ./node_modules/tss-react/tools/typeGuard.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.typeGuard = void 0;\n/** https://docs.tsafe.dev/typeguard */\nfunction typeGuard(_value, isMatched) {\n    return isMatched;\n}\nexports.typeGuard = typeGuard;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/tss-react/tools/typeGuard.js?");

/***/ }),

/***/ "./node_modules/tss-react/tools/useGuaranteedMemo.js":
/*!***********************************************************!*\
  !*** ./node_modules/tss-react/tools/useGuaranteedMemo.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.useGuaranteedMemo = void 0;\nconst react_1 = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/** Like react's useMemo but with guarantee that the fn\n * won't be invoked again if deps hasn't change */\nfunction useGuaranteedMemo(fn, deps) {\n    const ref = (0, react_1.useRef)();\n    if (!ref.current ||\n        deps.length !== ref.current.prevDeps.length ||\n        ref.current.prevDeps.map((v, i) => v === deps[i]).indexOf(false) >= 0) {\n        ref.current = {\n            \"v\": fn(),\n            \"prevDeps\": [...deps],\n        };\n    }\n    return ref.current.v;\n}\nexports.useGuaranteedMemo = useGuaranteedMemo;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/tss-react/tools/useGuaranteedMemo.js?");

/***/ }),

/***/ "./node_modules/tss-react/types.js":
/*!*****************************************!*\
  !*** ./node_modules/tss-react/types.js ***!
  \*****************************************/
/***/ (function(__unused_webpack_module, exports) {

"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.matchCSSObject = void 0;\nfunction matchCSSObject(arg) {\n    return (arg instanceof Object &&\n        !(\"styles\" in arg) &&\n        !(\"length\" in arg) &&\n        !(\"__emotion_styles\" in arg));\n}\nexports.matchCSSObject = matchCSSObject;\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/tss-react/types.js?");

/***/ }),

/***/ "./node_modules/tss-react/withStyles.js":
/*!**********************************************!*\
  !*** ./node_modules/tss-react/withStyles.js ***!
  \**********************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.createWithStyles = void 0;\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst react_1 = __importStar(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\nconst makeStyles_1 = __webpack_require__(/*! ./makeStyles */ \"./node_modules/tss-react/makeStyles.js\");\nconst capitalize_1 = __webpack_require__(/*! ./tools/capitalize */ \"./node_modules/tss-react/tools/capitalize.js\");\nfunction createWithStyles(params) {\n    const { useTheme } = params;\n    const { makeStyles } = (0, makeStyles_1.createMakeStyles)({ useTheme });\n    function withStyles(Component, cssObjectByRuleNameOrGetCssObjectByRuleName, params) {\n        const Component_ = typeof Component === \"string\"\n            ? (() => {\n                const tag = Component;\n                const Out = function (_a) {\n                    var { children } = _a, props = __rest(_a, [\"children\"]);\n                    return (0, react_1.createElement)(tag, props, children);\n                };\n                Object.defineProperty(Out, \"name\", {\n                    \"value\": (0, capitalize_1.capitalize)(tag),\n                });\n                return Out;\n            })()\n            : Component;\n        const name = (() => {\n            const { name } = Component_;\n            return typeof name === \"string\" ? name : undefined;\n        })();\n        const useStyles = makeStyles(params)(typeof cssObjectByRuleNameOrGetCssObjectByRuleName === \"function\"\n            ? (theme, props, classes) => incorporateMediaQueries(cssObjectByRuleNameOrGetCssObjectByRuleName(theme, props, classes))\n            : incorporateMediaQueries(cssObjectByRuleNameOrGetCssObjectByRuleName));\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const Out = (0, react_1.forwardRef)(function (props, ref) {\n            // eslint-disable-next-line @typescript-eslint/no-unused-vars\n            const { className, classes: _classes } = props, rest = __rest(props, [\"className\", \"classes\"]);\n            const { classes, cx } = useStyles(props, { props });\n            return (react_1.default.createElement(Component_, Object.assign({ ref: ref, className: cx(classes.root, className) }, (typeof Component === \"string\" ? {} : { classes }), rest)));\n        });\n        if (name !== undefined) {\n            Object.defineProperty(Out, \"name\", {\n                \"value\": `${name}WithStyles`,\n            });\n        }\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return Out;\n    }\n    return { withStyles };\n}\nexports.createWithStyles = createWithStyles;\nfunction incorporateMediaQueries(cssObjectByRuleNameWithMediaQueries) {\n    const cssObjectByRuleName = {};\n    const cssObjectByRuleNameWithMediaQueriesByMediaQuery = {};\n    Object.keys(cssObjectByRuleNameWithMediaQueries).forEach(ruleNameOrMediaQuery => ((ruleNameOrMediaQuery.startsWith(\"@media\")\n        ? cssObjectByRuleNameWithMediaQueriesByMediaQuery\n        : cssObjectByRuleName)[ruleNameOrMediaQuery] =\n        cssObjectByRuleNameWithMediaQueries[ruleNameOrMediaQuery]));\n    Object.keys(cssObjectByRuleNameWithMediaQueriesByMediaQuery).forEach(mediaQuery => {\n        const cssObjectByRuleNameBis = cssObjectByRuleNameWithMediaQueriesByMediaQuery[mediaQuery];\n        Object.keys(cssObjectByRuleNameBis).forEach(ruleName => {\n            var _a;\n            return (cssObjectByRuleName[ruleName] = Object.assign(Object.assign({}, ((_a = cssObjectByRuleName[ruleName]) !== null && _a !== void 0 ? _a : {})), { [mediaQuery]: cssObjectByRuleNameBis[ruleName] }));\n        });\n    });\n    return cssObjectByRuleName;\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/tss-react/withStyles.js?");

/***/ }),

/***/ "?1fc0":
/*!********************************!*\
  !*** ../node/buffer (ignored) ***!
  \********************************/
/***/ (function() {

eval("/* (ignored) */\n\n//# sourceURL=webpack://schemaevaluator/../node/buffer_(ignored)?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js ***!
  \******************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/array/is-array */ \"./node_modules/core-js-pure/stable/array/is-array.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js ***!
  \*****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/bind */ \"./node_modules/core-js-pure/stable/instance/bind.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js ***!
  \*******************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/concat */ \"./node_modules/core-js-pure/stable/instance/concat.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/every.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/every.js ***!
  \******************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/every */ \"./node_modules/core-js-pure/stable/instance/every.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/every.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js ***!
  \*******************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/filter */ \"./node_modules/core-js-pure/stable/instance/filter.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find-index.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find-index.js ***!
  \***********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/find-index */ \"./node_modules/core-js-pure/stable/instance/find-index.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find-index.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js ***!
  \*********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/for-each */ \"./node_modules/core-js-pure/stable/instance/for-each.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js ***!
  \*********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/index-of */ \"./node_modules/core-js-pure/stable/instance/index-of.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js ***!
  \****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/map */ \"./node_modules/core-js-pure/stable/instance/map.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js ***!
  \*******************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/reduce */ \"./node_modules/core-js-pure/stable/instance/reduce.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js ***!
  \******************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/slice */ \"./node_modules/core-js-pure/stable/instance/slice.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/some.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/some.js ***!
  \*****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/some */ \"./node_modules/core-js-pure/stable/instance/some.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/some.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/sort.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/sort.js ***!
  \*****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/sort */ \"./node_modules/core-js-pure/stable/instance/sort.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/sort.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/splice.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/splice.js ***!
  \*******************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/splice */ \"./node_modules/core-js-pure/stable/instance/splice.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/splice.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/starts-with.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/starts-with.js ***!
  \************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/starts-with */ \"./node_modules/core-js-pure/stable/instance/starts-with.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/starts-with.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/instance/trim.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/trim.js ***!
  \*****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/trim */ \"./node_modules/core-js-pure/stable/instance/trim.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/trim.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js ***!
  \******************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/json/stringify */ \"./node_modules/core-js-pure/stable/json/stringify.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js ***!
  \*****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/assign */ \"./node_modules/core-js-pure/stable/object/assign.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js ***!
  \****************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/define-properties */ \"./node_modules/core-js-pure/stable/object/define-properties.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js ***!
  \**************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/define-property */ \"./node_modules/core-js-pure/stable/object/define-property.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/entries.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/object/entries.js ***!
  \******************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/entries */ \"./node_modules/core-js-pure/stable/object/entries.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/object/entries.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js ***!
  \**************************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/get-own-property-descriptor */ \"./node_modules/core-js-pure/stable/object/get-own-property-descriptor.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js":
/*!***************************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js ***!
  \***************************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/get-own-property-descriptors */ \"./node_modules/core-js-pure/stable/object/get-own-property-descriptors.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js":
/*!***********************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js ***!
  \***********************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/get-own-property-symbols */ \"./node_modules/core-js-pure/stable/object/get-own-property-symbols.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js ***!
  \***************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/keys */ \"./node_modules/core-js-pure/stable/object/keys.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/object/values.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/object/values.js ***!
  \*****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/values */ \"./node_modules/core-js-pure/stable/object/values.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/object/values.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/parse-int.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/parse-int.js ***!
  \*************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/parse-int */ \"./node_modules/core-js-pure/stable/parse-int.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/parse-int.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js ***!
  \*********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/reflect/construct */ \"./node_modules/core-js-pure/stable/reflect/construct.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/set-timeout.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/set-timeout.js ***!
  \***************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/set-timeout */ \"./node_modules/core-js-pure/stable/set-timeout.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/set-timeout.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js-stable/url.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js-stable/url.js ***!
  \*******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/stable/url */ \"./node_modules/core-js-pure/stable/url/index.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js-stable/url.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js/array/from.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js/array/from.js ***!
  \*******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/features/array/from */ \"./node_modules/core-js-pure/features/array/from.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js/array/from.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js/array/is-array.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js/array/is-array.js ***!
  \***********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/features/array/is-array */ \"./node_modules/core-js-pure/features/array/is-array.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js/array/is-array.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js ***!
  \****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/features/get-iterator-method */ \"./node_modules/core-js-pure/features/get-iterator-method.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js/instance/bind.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js/instance/bind.js ***!
  \**********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/features/instance/bind */ \"./node_modules/core-js-pure/features/instance/bind.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js/instance/bind.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js/instance/index-of.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js/instance/index-of.js ***!
  \**************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/features/instance/index-of */ \"./node_modules/core-js-pure/features/instance/index-of.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js/instance/index-of.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js/instance/slice.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js/instance/slice.js ***!
  \***********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/features/instance/slice */ \"./node_modules/core-js-pure/features/instance/slice.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js/instance/slice.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js/object/assign.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js/object/assign.js ***!
  \**********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/features/object/assign */ \"./node_modules/core-js-pure/features/object/assign.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js/object/assign.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js/object/create.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js/object/create.js ***!
  \**********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/features/object/create */ \"./node_modules/core-js-pure/features/object/create.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js/object/create.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js/object/define-property.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js/object/define-property.js ***!
  \*******************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/features/object/define-property */ \"./node_modules/core-js-pure/features/object/define-property.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js/object/define-property.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js/object/get-own-property-symbols.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js/object/get-own-property-symbols.js ***!
  \****************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/features/object/get-own-property-symbols */ \"./node_modules/core-js-pure/features/object/get-own-property-symbols.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js/object/get-own-property-symbols.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js/object/get-prototype-of.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js/object/get-prototype-of.js ***!
  \********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/features/object/get-prototype-of */ \"./node_modules/core-js-pure/features/object/get-prototype-of.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js/object/get-prototype-of.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js/object/keys.js":
/*!********************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js/object/keys.js ***!
  \********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/features/object/keys */ \"./node_modules/core-js-pure/features/object/keys.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js/object/keys.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js ***!
  \********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/features/object/set-prototype-of */ \"./node_modules/core-js-pure/features/object/set-prototype-of.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js/symbol.js":
/*!***************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js/symbol.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/features/symbol */ \"./node_modules/core-js-pure/features/symbol/index.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js/symbol.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js":
/*!************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js ***!
  \************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/features/symbol/iterator */ \"./node_modules/core-js-pure/features/symbol/iterator.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/core-js/symbol/to-primitive.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/core-js/symbol/to-primitive.js ***!
  \****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! core-js-pure/features/symbol/to-primitive */ \"./node_modules/core-js-pure/features/symbol/to-primitive.js\");\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/core-js/symbol/to-primitive.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js ***!
  \*************************************************************************/
/***/ (function(module) {

eval("function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/arrayWithHoles.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/arrayWithHoles.js ***!
  \***********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _Array$isArray = __webpack_require__(/*! @babel/runtime-corejs3/core-js/array/is-array */ \"./node_modules/@babel/runtime-corejs3/core-js/array/is-array.js\");\nfunction _arrayWithHoles(arr) {\n  if (_Array$isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/arrayWithHoles.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/arrayWithoutHoles.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/arrayWithoutHoles.js ***!
  \**************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _Array$isArray = __webpack_require__(/*! @babel/runtime-corejs3/core-js/array/is-array */ \"./node_modules/@babel/runtime-corejs3/core-js/array/is-array.js\");\nvar arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ \"./node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n  if (_Array$isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/arrayWithoutHoles.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js ***!
  \******************************************************************************/
/***/ (function(module) {

eval("function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js ***!
  \***********************************************************************/
/***/ (function(module) {

eval("function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/createClass.js":
/*!********************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/createClass.js ***!
  \********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/define-property */ \"./node_modules/@babel/runtime-corejs3/core-js/object/define-property.js\");\nvar toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ \"./node_modules/@babel/runtime-corejs3/helpers/toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    _Object$defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n  }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  _Object$defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/createClass.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js ***!
  \***********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/define-property */ \"./node_modules/@babel/runtime-corejs3/core-js/object/define-property.js\");\nvar toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ \"./node_modules/@babel/runtime-corejs3/helpers/toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    _Object$defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/extends.js":
/*!****************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/extends.js ***!
  \****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _Object$assign = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/assign */ \"./node_modules/@babel/runtime-corejs3/core-js/object/assign.js\");\nvar _bindInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js/instance/bind */ \"./node_modules/@babel/runtime-corejs3/core-js/instance/bind.js\");\nfunction _extends() {\n  var _context;\n  module.exports = _extends = _Object$assign ? _bindInstanceProperty(_context = _Object$assign).call(_context) : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/extends.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js ***!
  \***********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/set-prototype-of */ \"./node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js\");\nvar _bindInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js/instance/bind */ \"./node_modules/@babel/runtime-corejs3/core-js/instance/bind.js\");\nvar _Object$getPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime-corejs3/core-js/object/get-prototype-of.js\");\nfunction _getPrototypeOf(o) {\n  var _context;\n  module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _bindInstanceProperty(_context = _Object$getPrototypeOf).call(_context) : function _getPrototypeOf(o) {\n    return o.__proto__ || _Object$getPrototypeOf(o);\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/inherits.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/inherits.js ***!
  \*****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _Object$create = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/create */ \"./node_modules/@babel/runtime-corejs3/core-js/object/create.js\");\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/define-property */ \"./node_modules/@babel/runtime-corejs3/core-js/object/define-property.js\");\nvar setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \"./node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n  subClass.prototype = _Object$create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  _Object$defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/inherits.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/iterableToArray.js":
/*!************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/iterableToArray.js ***!
  \************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _Symbol = __webpack_require__(/*! @babel/runtime-corejs3/core-js/symbol */ \"./node_modules/@babel/runtime-corejs3/core-js/symbol.js\");\nvar _getIteratorMethod = __webpack_require__(/*! @babel/runtime-corejs3/core-js/get-iterator-method */ \"./node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js\");\nvar _Array$from = __webpack_require__(/*! @babel/runtime-corejs3/core-js/array/from */ \"./node_modules/@babel/runtime-corejs3/core-js/array/from.js\");\nfunction _iterableToArray(iter) {\n  if (typeof _Symbol !== \"undefined\" && _getIteratorMethod(iter) != null || iter[\"@@iterator\"] != null) return _Array$from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/iterableToArray.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js ***!
  \*****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _Symbol = __webpack_require__(/*! @babel/runtime-corejs3/core-js/symbol */ \"./node_modules/@babel/runtime-corejs3/core-js/symbol.js\");\nvar _getIteratorMethod = __webpack_require__(/*! @babel/runtime-corejs3/core-js/get-iterator-method */ \"./node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js\");\nfunction _iterableToArrayLimit(arr, i) {\n  var _i = null == arr ? null : \"undefined\" != typeof _Symbol && _getIteratorMethod(arr) || arr[\"@@iterator\"];\n  if (null != _i) {\n    var _s,\n      _e,\n      _x,\n      _r,\n      _arr = [],\n      _n = !0,\n      _d = !1;\n    try {\n      if (_x = (_i = _i.call(arr)).next, 0 === i) {\n        if (Object(_i) !== _i) return;\n        _n = !1;\n      } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n    } catch (err) {\n      _d = !0, _e = err;\n    } finally {\n      try {\n        if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n    return _arr;\n  }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/nonIterableRest.js":
/*!************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/nonIterableRest.js ***!
  \************************************************************************/
/***/ (function(module) {

eval("function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/nonIterableRest.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/nonIterableSpread.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/nonIterableSpread.js ***!
  \**************************************************************************/
/***/ (function(module) {

eval("function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/nonIterableSpread.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/objectWithoutProperties.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/objectWithoutProperties.js ***!
  \********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _Object$getOwnPropertySymbols = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/get-own-property-symbols */ \"./node_modules/@babel/runtime-corejs3/core-js/object/get-own-property-symbols.js\");\nvar _indexOfInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js/instance/index-of */ \"./node_modules/@babel/runtime-corejs3/core-js/instance/index-of.js\");\nvar objectWithoutPropertiesLoose = __webpack_require__(/*! ./objectWithoutPropertiesLoose.js */ \"./node_modules/@babel/runtime-corejs3/helpers/objectWithoutPropertiesLoose.js\");\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n  if (_Object$getOwnPropertySymbols) {\n    var sourceSymbolKeys = _Object$getOwnPropertySymbols(source);\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (_indexOfInstanceProperty(excluded).call(excluded, key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n  return target;\n}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/objectWithoutProperties.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/objectWithoutPropertiesLoose.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/objectWithoutPropertiesLoose.js ***!
  \*************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _Object$keys = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/keys */ \"./node_modules/@babel/runtime-corejs3/core-js/object/keys.js\");\nvar _indexOfInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js/instance/index-of */ \"./node_modules/@babel/runtime-corejs3/core-js/instance/index-of.js\");\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = _Object$keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (_indexOfInstanceProperty(excluded).call(excluded, key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/objectWithoutPropertiesLoose.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js ***!
  \**********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _typeof = (__webpack_require__(/*! ./typeof.js */ \"./node_modules/@babel/runtime-corejs3/helpers/typeof.js\")[\"default\"]);\nvar assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ \"./node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js\");\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n  return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js ***!
  \***********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/set-prototype-of */ \"./node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js\");\nvar _bindInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js/instance/bind */ \"./node_modules/@babel/runtime-corejs3/core-js/instance/bind.js\");\nfunction _setPrototypeOf(o, p) {\n  var _context;\n  module.exports = _setPrototypeOf = _Object$setPrototypeOf ? _bindInstanceProperty(_context = _Object$setPrototypeOf).call(_context) : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js ***!
  \**********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ \"./node_modules/@babel/runtime-corejs3/helpers/arrayWithHoles.js\");\nvar iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ \"./node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ \"./node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js\");\nvar nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ \"./node_modules/@babel/runtime-corejs3/helpers/nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/toConsumableArray.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/toConsumableArray.js ***!
  \**************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ \"./node_modules/@babel/runtime-corejs3/helpers/arrayWithoutHoles.js\");\nvar iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ \"./node_modules/@babel/runtime-corejs3/helpers/iterableToArray.js\");\nvar unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ \"./node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js\");\nvar nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ \"./node_modules/@babel/runtime-corejs3/helpers/nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/toConsumableArray.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/toPrimitive.js":
/*!********************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/toPrimitive.js ***!
  \********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _Symbol$toPrimitive = __webpack_require__(/*! @babel/runtime-corejs3/core-js/symbol/to-primitive */ \"./node_modules/@babel/runtime-corejs3/core-js/symbol/to-primitive.js\");\nvar _typeof = (__webpack_require__(/*! ./typeof.js */ \"./node_modules/@babel/runtime-corejs3/helpers/typeof.js\")[\"default\"]);\nfunction _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[_Symbol$toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/toPrimitive.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/toPropertyKey.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/toPropertyKey.js ***!
  \**********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _typeof = (__webpack_require__(/*! ./typeof.js */ \"./node_modules/@babel/runtime-corejs3/helpers/typeof.js\")[\"default\"]);\nvar toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ \"./node_modules/@babel/runtime-corejs3/helpers/toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/toPropertyKey.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/typeof.js":
/*!***************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/typeof.js ***!
  \***************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _Symbol = __webpack_require__(/*! @babel/runtime-corejs3/core-js/symbol */ \"./node_modules/@babel/runtime-corejs3/core-js/symbol.js\");\nvar _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs3/core-js/symbol/iterator */ \"./node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js\");\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return (module.exports = _typeof = \"function\" == typeof _Symbol && \"symbol\" == typeof _Symbol$iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof _Symbol && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/typeof.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js ***!
  \***********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var _sliceInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js/instance/slice */ \"./node_modules/@babel/runtime-corejs3/core-js/instance/slice.js\");\nvar _Array$from = __webpack_require__(/*! @babel/runtime-corejs3/core-js/array/from */ \"./node_modules/@babel/runtime-corejs3/core-js/array/from.js\");\nvar arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ \"./node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n  var _context;\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return _Array$from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
  \**********************************************************************/
/***/ (function(module) {

eval("function _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime/helpers/interopRequireDefault.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ _assertThisInitialized; }\n/* harmony export */ });\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/esm/defineProperty.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/esm/defineProperty.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ _defineProperty; }\n/* harmony export */ });\n/* harmony import */ var _toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toPropertyKey.js */ \"./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js\");\n\nfunction _defineProperty(obj, key, value) {\n  key = (0,_toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime/helpers/esm/defineProperty.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/esm/extends.js":
/*!************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/esm/extends.js ***!
  \************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ _extends; }\n/* harmony export */ });\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime/helpers/esm/extends.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js":
/*!******************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ _inheritsLoose; }\n/* harmony export */ });\n/* harmony import */ var _setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setPrototypeOf.js */ \"./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  (0,_setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(subClass, superClass);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/esm/objectSpread2.js":
/*!******************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ _objectSpread2; }\n/* harmony export */ });\n/* harmony import */ var _defineProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defineProperty.js */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n  return keys;\n}\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      (0,_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n  return target;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js ***!
  \*********************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ _objectWithoutPropertiesLoose; }\n/* harmony export */ });\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ _setPrototypeOf; }\n/* harmony export */ });\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/esm/toPrimitive.js":
/*!****************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/esm/toPrimitive.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ _toPrimitive; }\n/* harmony export */ });\n/* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeof.js */ \"./node_modules/@babel/runtime/helpers/esm/typeof.js\");\n\nfunction _toPrimitive(input, hint) {\n  if ((0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if ((0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js":
/*!******************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ _toPropertyKey; }\n/* harmony export */ });\n/* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeof.js */ \"./node_modules/@babel/runtime/helpers/esm/typeof.js\");\n/* harmony import */ var _toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./toPrimitive.js */ \"./node_modules/@babel/runtime/helpers/esm/toPrimitive.js\");\n\n\nfunction _toPropertyKey(arg) {\n  var key = (0,_toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(arg, \"string\");\n  return (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(key) === \"symbol\" ? key : String(key);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js?");

/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/esm/typeof.js":
/*!***********************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/esm/typeof.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ _typeof; }\n/* harmony export */ });\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@babel/runtime/helpers/esm/typeof.js?");

/***/ }),

/***/ "./node_modules/@react-dnd/asap/dist/esm/AsapQueue.mjs":
/*!*************************************************************!*\
  !*** ./node_modules/@react-dnd/asap/dist/esm/AsapQueue.mjs ***!
  \*************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AsapQueue\": function() { return /* binding */ AsapQueue; }\n/* harmony export */ });\n/* harmony import */ var _makeRequestCall_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./makeRequestCall.mjs */ \"./node_modules/@react-dnd/asap/dist/esm/makeRequestCall.mjs\");\n\nclass AsapQueue {\n    // Use the fastest means possible to execute a task in its own turn, with\n    // priority over other events including IO, animation, reflow, and redraw\n    // events in browsers.\n    //\n    // An exception thrown by a task will permanently interrupt the processing of\n    // subsequent tasks. The higher level `asap` function ensures that if an\n    // exception is thrown by a task, that the task queue will continue flushing as\n    // soon as possible, but if you use `rawAsap` directly, you are responsible to\n    // either ensure that no exceptions are thrown from your task, or to manually\n    // call `rawAsap.requestFlush` if an exception is thrown.\n    enqueueTask(task) {\n        const { queue: q , requestFlush  } = this;\n        if (!q.length) {\n            requestFlush();\n            this.flushing = true;\n        }\n        // Equivalent to push, but avoids a function call.\n        q[q.length] = task;\n    }\n    constructor(){\n        this.queue = [];\n        // We queue errors to ensure they are thrown in right order (FIFO).\n        // Array-as-queue is good enough here, since we are just dealing with exceptions.\n        this.pendingErrors = [];\n        // Once a flush has been requested, no further calls to `requestFlush` are\n        // necessary until the next `flush` completes.\n        // @ts-ignore\n        this.flushing = false;\n        // The position of the next task to execute in the task queue. This is\n        // preserved between calls to `flush` so that it can be resumed if\n        // a task throws an exception.\n        this.index = 0;\n        // If a task schedules additional tasks recursively, the task queue can grow\n        // unbounded. To prevent memory exhaustion, the task queue will periodically\n        // truncate already-completed tasks.\n        this.capacity = 1024;\n        // The flush function processes all tasks that have been scheduled with\n        // `rawAsap` unless and until one of those tasks throws an exception.\n        // If a task throws an exception, `flush` ensures that its state will remain\n        // consistent and will resume where it left off when called again.\n        // However, `flush` does not make any arrangements to be called again if an\n        // exception is thrown.\n        this.flush = ()=>{\n            const { queue: q  } = this;\n            while(this.index < q.length){\n                const currentIndex = this.index;\n                // Advance the index before calling the task. This ensures that we will\n                // begin flushing on the next task the task throws an error.\n                this.index++;\n                q[currentIndex].call();\n                // Prevent leaking memory for long chains of recursive calls to `asap`.\n                // If we call `asap` within tasks scheduled by `asap`, the queue will\n                // grow, but to avoid an O(n) walk for every task we execute, we don't\n                // shift tasks off the queue after they have been executed.\n                // Instead, we periodically shift 1024 tasks off the queue.\n                if (this.index > this.capacity) {\n                    // Manually shift all values starting at the index back to the\n                    // beginning of the queue.\n                    for(let scan = 0, newLength = q.length - this.index; scan < newLength; scan++){\n                        q[scan] = q[scan + this.index];\n                    }\n                    q.length -= this.index;\n                    this.index = 0;\n                }\n            }\n            q.length = 0;\n            this.index = 0;\n            this.flushing = false;\n        };\n        // In a web browser, exceptions are not fatal. However, to avoid\n        // slowing down the queue of pending tasks, we rethrow the error in a\n        // lower priority turn.\n        this.registerPendingError = (err)=>{\n            this.pendingErrors.push(err);\n            this.requestErrorThrow();\n        };\n        // `requestFlush` requests that the high priority event queue be flushed as\n        // soon as possible.\n        // This is useful to prevent an error thrown in a task from stalling the event\n        // queue if the exception handled by Node.js’s\n        // `process.on(\"uncaughtException\")` or by a domain.\n        // `requestFlush` is implemented using a strategy based on data collected from\n        // every available SauceLabs Selenium web driver worker at time of writing.\n        // https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n        this.requestFlush = (0,_makeRequestCall_mjs__WEBPACK_IMPORTED_MODULE_0__.makeRequestCall)(this.flush);\n        this.requestErrorThrow = (0,_makeRequestCall_mjs__WEBPACK_IMPORTED_MODULE_0__.makeRequestCallFromTimer)(()=>{\n            // Throw first error\n            if (this.pendingErrors.length) {\n                throw this.pendingErrors.shift();\n            }\n        });\n    }\n} // The message channel technique was discovered by Malte Ubl and was the\n // original foundation for this library.\n // http://www.nonblocking.io/2011/06/windownexttick.html\n // Safari 6.0.5 (at least) intermittently fails to create message ports on a\n // page's first load. Thankfully, this version of Safari supports\n // MutationObservers, so we don't need to fall back in that case.\n // function makeRequestCallFromMessageChannel(callback) {\n //     var channel = new MessageChannel();\n //     channel.port1.onmessage = callback;\n //     return function requestCall() {\n //         channel.port2.postMessage(0);\n //     };\n // }\n // For reasons explained above, we are also unable to use `setImmediate`\n // under any circumstances.\n // Even if we were, there is another bug in Internet Explorer 10.\n // It is not sufficient to assign `setImmediate` to `requestFlush` because\n // `setImmediate` must be called *by name* and therefore must be wrapped in a\n // closure.\n // Never forget.\n // function makeRequestCallFromSetImmediate(callback) {\n //     return function requestCall() {\n //         setImmediate(callback);\n //     };\n // }\n // Safari 6.0 has a problem where timers will get lost while the user is\n // scrolling. This problem does not impact ASAP because Safari 6.0 supports\n // mutation observers, so that implementation is used instead.\n // However, if we ever elect to use timers in Safari, the prevalent work-around\n // is to add a scroll event listener that calls for a flush.\n // `setTimeout` does not call the passed callback if the delay is less than\n // approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n // even then.\n // This is for `asap.js` only.\n // Its name will be periodically randomized to break any code that depends on\n // // its existence.\n // rawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer\n // ASAP was originally a nextTick shim included in Q. This was factored out\n // into this ASAP package. It was later adapted to RSVP which made further\n // amendments. These decisions, particularly to marginalize MessageChannel and\n // to capture the MutationObserver implementation in a closure, were integrated\n // back into ASAP proper.\n // https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n\n//# sourceMappingURL=AsapQueue.mjs.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@react-dnd/asap/dist/esm/AsapQueue.mjs?");

/***/ }),

/***/ "./node_modules/@react-dnd/asap/dist/esm/RawTask.mjs":
/*!***********************************************************!*\
  !*** ./node_modules/@react-dnd/asap/dist/esm/RawTask.mjs ***!
  \***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RawTask\": function() { return /* binding */ RawTask; }\n/* harmony export */ });\n// `call`, just like a function.\nclass RawTask {\n    call() {\n        try {\n            this.task && this.task();\n        } catch (error) {\n            this.onError(error);\n        } finally{\n            this.task = null;\n            this.release(this);\n        }\n    }\n    constructor(onError, release){\n        this.onError = onError;\n        this.release = release;\n        this.task = null;\n    }\n}\n\n//# sourceMappingURL=RawTask.mjs.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@react-dnd/asap/dist/esm/RawTask.mjs?");

/***/ }),

/***/ "./node_modules/@react-dnd/asap/dist/esm/TaskFactory.mjs":
/*!***************************************************************!*\
  !*** ./node_modules/@react-dnd/asap/dist/esm/TaskFactory.mjs ***!
  \***************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TaskFactory\": function() { return /* binding */ TaskFactory; }\n/* harmony export */ });\n/* harmony import */ var _RawTask_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RawTask.mjs */ \"./node_modules/@react-dnd/asap/dist/esm/RawTask.mjs\");\n\nclass TaskFactory {\n    create(task) {\n        const tasks = this.freeTasks;\n        const t1 = tasks.length ? tasks.pop() : new _RawTask_mjs__WEBPACK_IMPORTED_MODULE_0__.RawTask(this.onError, (t)=>tasks[tasks.length] = t\n        );\n        t1.task = task;\n        return t1;\n    }\n    constructor(onError){\n        this.onError = onError;\n        this.freeTasks = [];\n    }\n}\n\n//# sourceMappingURL=TaskFactory.mjs.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@react-dnd/asap/dist/esm/TaskFactory.mjs?");

/***/ }),

/***/ "./node_modules/@react-dnd/asap/dist/esm/asap.mjs":
/*!********************************************************!*\
  !*** ./node_modules/@react-dnd/asap/dist/esm/asap.mjs ***!
  \********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"asap\": function() { return /* binding */ asap; }\n/* harmony export */ });\n/* harmony import */ var _AsapQueue_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AsapQueue.mjs */ \"./node_modules/@react-dnd/asap/dist/esm/AsapQueue.mjs\");\n/* harmony import */ var _TaskFactory_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TaskFactory.mjs */ \"./node_modules/@react-dnd/asap/dist/esm/TaskFactory.mjs\");\n\n\nconst asapQueue = new _AsapQueue_mjs__WEBPACK_IMPORTED_MODULE_0__.AsapQueue();\nconst taskFactory = new _TaskFactory_mjs__WEBPACK_IMPORTED_MODULE_1__.TaskFactory(asapQueue.registerPendingError);\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */ function asap(task) {\n    asapQueue.enqueueTask(taskFactory.create(task));\n}\n\n//# sourceMappingURL=asap.mjs.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@react-dnd/asap/dist/esm/asap.mjs?");

/***/ }),

/***/ "./node_modules/@react-dnd/asap/dist/esm/index.mjs":
/*!*********************************************************!*\
  !*** ./node_modules/@react-dnd/asap/dist/esm/index.mjs ***!
  \*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AsapQueue\": function() { return /* reexport safe */ _AsapQueue_mjs__WEBPACK_IMPORTED_MODULE_2__.AsapQueue; },\n/* harmony export */   \"TaskFactory\": function() { return /* reexport safe */ _TaskFactory_mjs__WEBPACK_IMPORTED_MODULE_3__.TaskFactory; },\n/* harmony export */   \"asap\": function() { return /* reexport safe */ _asap_mjs__WEBPACK_IMPORTED_MODULE_0__.asap; }\n/* harmony export */ });\n/* harmony import */ var _asap_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./asap.mjs */ \"./node_modules/@react-dnd/asap/dist/esm/asap.mjs\");\n/* harmony import */ var _types_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types.mjs */ \"./node_modules/@react-dnd/asap/dist/esm/types.mjs\");\n/* harmony import */ var _AsapQueue_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AsapQueue.mjs */ \"./node_modules/@react-dnd/asap/dist/esm/AsapQueue.mjs\");\n/* harmony import */ var _TaskFactory_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./TaskFactory.mjs */ \"./node_modules/@react-dnd/asap/dist/esm/TaskFactory.mjs\");\n\n\n\n\n\n//# sourceMappingURL=index.mjs.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@react-dnd/asap/dist/esm/index.mjs?");

/***/ }),

/***/ "./node_modules/@react-dnd/asap/dist/esm/makeRequestCall.mjs":
/*!*******************************************************************!*\
  !*** ./node_modules/@react-dnd/asap/dist/esm/makeRequestCall.mjs ***!
  \*******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"makeRequestCall\": function() { return /* binding */ makeRequestCall; },\n/* harmony export */   \"makeRequestCallFromMutationObserver\": function() { return /* binding */ makeRequestCallFromMutationObserver; },\n/* harmony export */   \"makeRequestCallFromTimer\": function() { return /* binding */ makeRequestCallFromTimer; }\n/* harmony export */ });\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n/* globals self */ const scope = typeof global !== 'undefined' ? global : self;\nconst BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\nfunction makeRequestCallFromTimer(callback) {\n    return function requestCall() {\n        // We dispatch a timeout with a specified delay of 0 for engines that\n        // can reliably accommodate that request. This will usually be snapped\n        // to a 4 milisecond delay, but once we're flushing, there's no delay\n        // between events.\n        const timeoutHandle = setTimeout(handleTimer, 0);\n        // However, since this timer gets frequently dropped in Firefox\n        // workers, we enlist an interval handle that will try to fire\n        // an event 20 times per second until it succeeds.\n        const intervalHandle = setInterval(handleTimer, 50);\n        function handleTimer() {\n            // Whichever timer succeeds will cancel both timers and\n            // execute the callback.\n            clearTimeout(timeoutHandle);\n            clearInterval(intervalHandle);\n            callback();\n        }\n    };\n}\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nfunction makeRequestCallFromMutationObserver(callback) {\n    let toggle = 1;\n    const observer = new BrowserMutationObserver(callback);\n    const node = document.createTextNode('');\n    observer.observe(node, {\n        characterData: true\n    });\n    return function requestCall() {\n        toggle = -toggle;\n        node.data = toggle;\n    };\n}\nconst makeRequestCall = typeof BrowserMutationObserver === 'function' ? // reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nmakeRequestCallFromMutationObserver : // task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\nmakeRequestCallFromTimer;\n\n//# sourceMappingURL=makeRequestCall.mjs.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@react-dnd/asap/dist/esm/makeRequestCall.mjs?");

/***/ }),

/***/ "./node_modules/@react-dnd/asap/dist/esm/types.mjs":
/*!*********************************************************!*\
  !*** ./node_modules/@react-dnd/asap/dist/esm/types.mjs ***!
  \*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=types.mjs.map\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/@react-dnd/asap/dist/esm/types.mjs?");

/***/ }),

/***/ "./node_modules/bail/index.js":
/*!************************************!*\
  !*** ./node_modules/bail/index.js ***!
  \************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"bail\": function() { return /* binding */ bail; }\n/* harmony export */ });\n/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n *   Maybe error.\n * @returns {asserts error is null|undefined}\n */\nfunction bail(error) {\n  if (error) {\n    throw error\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/bail/index.js?");

/***/ }),

/***/ "./node_modules/ccount/index.js":
/*!**************************************!*\
  !*** ./node_modules/ccount/index.js ***!
  \**************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ccount\": function() { return /* binding */ ccount; }\n/* harmony export */ });\n/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n *   Value to search in.\n * @param {string} character\n *   Character (or substring) to look for.\n * @return {number}\n *   Number of times `character` occurred in `value`.\n */\nfunction ccount(value, character) {\n  const source = String(value)\n\n  if (typeof character !== 'string') {\n    throw new TypeError('Expected character')\n  }\n\n  let count = 0\n  let index = source.indexOf(character)\n\n  while (index !== -1) {\n    count++\n    index = source.indexOf(character, index + character.length)\n  }\n\n  return count\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/ccount/index.js?");

/***/ }),

/***/ "./node_modules/comma-separated-tokens/index.js":
/*!******************************************************!*\
  !*** ./node_modules/comma-separated-tokens/index.js ***!
  \******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"parse\": function() { return /* binding */ parse; },\n/* harmony export */   \"stringify\": function() { return /* binding */ stringify; }\n/* harmony export */ });\n/**\n * @typedef Options\n *   Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n *   Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n *   Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n *   Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n *   Comma-separated tokens.\n * @returns {Array<string>}\n *   List of tokens.\n */\nfunction parse(value) {\n  /** @type {Array<string>} */\n  const tokens = []\n  const input = String(value || '')\n  let index = input.indexOf(',')\n  let start = 0\n  /** @type {boolean} */\n  let end = false\n\n  while (!end) {\n    if (index === -1) {\n      index = input.length\n      end = true\n    }\n\n    const token = input.slice(start, index).trim()\n\n    if (token || !end) {\n      tokens.push(token)\n    }\n\n    start = index + 1\n    index = input.indexOf(',', start)\n  }\n\n  return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n *   List of tokens.\n * @param {Options} [options]\n *   Configuration for `stringify` (optional).\n * @returns {string}\n *   Comma-separated tokens.\n */\nfunction stringify(values, options) {\n  const settings = options || {}\n\n  // Ensure the last empty entry is seen.\n  const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n  return input\n    .join(\n      (settings.padRight ? ' ' : '') +\n        ',' +\n        (settings.padLeft === false ? '' : ' ')\n    )\n    .trim()\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/comma-separated-tokens/index.js?");

/***/ }),

/***/ "./node_modules/decode-named-character-reference/index.dom.js":
/*!********************************************************************!*\
  !*** ./node_modules/decode-named-character-reference/index.dom.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"decodeNamedCharacterReference\": function() { return /* binding */ decodeNamedCharacterReference; }\n/* harmony export */ });\n/// <reference lib=\"dom\" />\n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nfunction decodeNamedCharacterReference(value) {\n  const characterReference = '&' + value + ';'\n  element.innerHTML = characterReference\n  const char = element.textContent\n\n  // Some named character references do not require the closing semicolon\n  // (`&not`, for instance), which leads to situations where parsing the assumed\n  // named reference of `&notit;` will result in the string `¬it;`.\n  // When we encounter a trailing semicolon after parsing, and the character\n  // reference to decode was not a semicolon (`&semi;`), we can assume that the\n  // matching was not complete.\n  // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n  // yield `null`.\n  if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n    return false\n  }\n\n  // If the decoded string is equal to the input, the character reference was\n  // not valid.\n  // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n  // yield `null`.\n  return char === characterReference ? false : char\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/decode-named-character-reference/index.dom.js?");

/***/ }),

/***/ "./node_modules/dequal/dist/index.mjs":
/*!********************************************!*\
  !*** ./node_modules/dequal/dist/index.mjs ***!
  \********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"dequal\": function() { return /* binding */ dequal; }\n/* harmony export */ });\nvar has = Object.prototype.hasOwnProperty;\n\nfunction find(iter, tar, key) {\n\tfor (key of iter.keys()) {\n\t\tif (dequal(key, tar)) return key;\n\t}\n}\n\nfunction dequal(foo, bar) {\n\tvar ctor, len, tmp;\n\tif (foo === bar) return true;\n\n\tif (foo && bar && (ctor=foo.constructor) === bar.constructor) {\n\t\tif (ctor === Date) return foo.getTime() === bar.getTime();\n\t\tif (ctor === RegExp) return foo.toString() === bar.toString();\n\n\t\tif (ctor === Array) {\n\t\t\tif ((len=foo.length) === bar.length) {\n\t\t\t\twhile (len-- && dequal(foo[len], bar[len]));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ctor === Set) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len;\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!bar.has(tmp)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === Map) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len[0];\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!dequal(len[1], bar.get(tmp))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === ArrayBuffer) {\n\t\t\tfoo = new Uint8Array(foo);\n\t\t\tbar = new Uint8Array(bar);\n\t\t} else if (ctor === DataView) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo.getInt8(len) === bar.getInt8(len));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ArrayBuffer.isView(foo)) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo[len] === bar[len]);\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (!ctor || typeof foo === 'object') {\n\t\t\tlen = 0;\n\t\t\tfor (ctor in foo) {\n\t\t\t\tif (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n\t\t\t\tif (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;\n\t\t\t}\n\t\t\treturn Object.keys(bar).length === len;\n\t\t}\n\t}\n\n\treturn foo !== foo && bar !== bar;\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/dequal/dist/index.mjs?");

/***/ }),

/***/ "./node_modules/diff/lib/index.mjs":
/*!*****************************************!*\
  !*** ./node_modules/diff/lib/index.mjs ***!
  \*****************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Diff\": function() { return /* binding */ Diff; },\n/* harmony export */   \"applyPatch\": function() { return /* binding */ applyPatch; },\n/* harmony export */   \"applyPatches\": function() { return /* binding */ applyPatches; },\n/* harmony export */   \"canonicalize\": function() { return /* binding */ canonicalize; },\n/* harmony export */   \"convertChangesToDMP\": function() { return /* binding */ convertChangesToDMP; },\n/* harmony export */   \"convertChangesToXML\": function() { return /* binding */ convertChangesToXML; },\n/* harmony export */   \"createPatch\": function() { return /* binding */ createPatch; },\n/* harmony export */   \"createTwoFilesPatch\": function() { return /* binding */ createTwoFilesPatch; },\n/* harmony export */   \"diffArrays\": function() { return /* binding */ diffArrays; },\n/* harmony export */   \"diffChars\": function() { return /* binding */ diffChars; },\n/* harmony export */   \"diffCss\": function() { return /* binding */ diffCss; },\n/* harmony export */   \"diffJson\": function() { return /* binding */ diffJson; },\n/* harmony export */   \"diffLines\": function() { return /* binding */ diffLines; },\n/* harmony export */   \"diffSentences\": function() { return /* binding */ diffSentences; },\n/* harmony export */   \"diffTrimmedLines\": function() { return /* binding */ diffTrimmedLines; },\n/* harmony export */   \"diffWords\": function() { return /* binding */ diffWords; },\n/* harmony export */   \"diffWordsWithSpace\": function() { return /* binding */ diffWordsWithSpace; },\n/* harmony export */   \"merge\": function() { return /* binding */ merge; },\n/* harmony export */   \"parsePatch\": function() { return /* binding */ parsePatch; },\n/* harmony export */   \"structuredPatch\": function() { return /* binding */ structuredPatch; }\n/* harmony export */ });\nfunction Diff() {}\nDiff.prototype = {\n  diff: function diff(oldString, newString) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var callback = options.callback;\n\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n\n    this.options = options;\n    var self = this;\n\n    function done(value) {\n      if (callback) {\n        setTimeout(function () {\n          callback(undefined, value);\n        }, 0);\n        return true;\n      } else {\n        return value;\n      }\n    } // Allow subclasses to massage the input prior to running\n\n\n    oldString = this.castInput(oldString);\n    newString = this.castInput(newString);\n    oldString = this.removeEmpty(this.tokenize(oldString));\n    newString = this.removeEmpty(this.tokenize(newString));\n    var newLen = newString.length,\n        oldLen = oldString.length;\n    var editLength = 1;\n    var maxEditLength = newLen + oldLen;\n\n    if (options.maxEditLength) {\n      maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n    }\n\n    var bestPath = [{\n      newPos: -1,\n      components: []\n    }]; // Seed editLength = 0, i.e. the content starts with the same values\n\n    var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);\n\n    if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n      // Identity per the equality and tokenizer\n      return done([{\n        value: this.join(newString),\n        count: newString.length\n      }]);\n    } // Main worker method. checks all permutations of a given edit length for acceptance.\n\n\n    function execEditLength() {\n      for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {\n        var basePath = void 0;\n\n        var addPath = bestPath[diagonalPath - 1],\n            removePath = bestPath[diagonalPath + 1],\n            _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;\n\n        if (addPath) {\n          // No one else is going to attempt to use this value, clear it\n          bestPath[diagonalPath - 1] = undefined;\n        }\n\n        var canAdd = addPath && addPath.newPos + 1 < newLen,\n            canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;\n\n        if (!canAdd && !canRemove) {\n          // If this path is a terminal then prune\n          bestPath[diagonalPath] = undefined;\n          continue;\n        } // Select the diagonal that we want to branch from. We select the prior\n        // path whose position in the new string is the farthest from the origin\n        // and does not pass the bounds of the diff graph\n\n\n        if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {\n          basePath = clonePath(removePath);\n          self.pushComponent(basePath.components, undefined, true);\n        } else {\n          basePath = addPath; // No need to clone, we've pulled it from the list\n\n          basePath.newPos++;\n          self.pushComponent(basePath.components, true, undefined);\n        }\n\n        _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done\n\n        if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {\n          return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));\n        } else {\n          // Otherwise track this path as a potential candidate and continue.\n          bestPath[diagonalPath] = basePath;\n        }\n      }\n\n      editLength++;\n    } // Performs the length of edit iteration. Is a bit fugly as this has to support the\n    // sync and async mode which is never fun. Loops over execEditLength until a value\n    // is produced, or until the edit length exceeds options.maxEditLength (if given),\n    // in which case it will return undefined.\n\n\n    if (callback) {\n      (function exec() {\n        setTimeout(function () {\n          if (editLength > maxEditLength) {\n            return callback();\n          }\n\n          if (!execEditLength()) {\n            exec();\n          }\n        }, 0);\n      })();\n    } else {\n      while (editLength <= maxEditLength) {\n        var ret = execEditLength();\n\n        if (ret) {\n          return ret;\n        }\n      }\n    }\n  },\n  pushComponent: function pushComponent(components, added, removed) {\n    var last = components[components.length - 1];\n\n    if (last && last.added === added && last.removed === removed) {\n      // We need to clone here as the component clone operation is just\n      // as shallow array clone\n      components[components.length - 1] = {\n        count: last.count + 1,\n        added: added,\n        removed: removed\n      };\n    } else {\n      components.push({\n        count: 1,\n        added: added,\n        removed: removed\n      });\n    }\n  },\n  extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {\n    var newLen = newString.length,\n        oldLen = oldString.length,\n        newPos = basePath.newPos,\n        oldPos = newPos - diagonalPath,\n        commonCount = 0;\n\n    while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {\n      newPos++;\n      oldPos++;\n      commonCount++;\n    }\n\n    if (commonCount) {\n      basePath.components.push({\n        count: commonCount\n      });\n    }\n\n    basePath.newPos = newPos;\n    return oldPos;\n  },\n  equals: function equals(left, right) {\n    if (this.options.comparator) {\n      return this.options.comparator(left, right);\n    } else {\n      return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();\n    }\n  },\n  removeEmpty: function removeEmpty(array) {\n    var ret = [];\n\n    for (var i = 0; i < array.length; i++) {\n      if (array[i]) {\n        ret.push(array[i]);\n      }\n    }\n\n    return ret;\n  },\n  castInput: function castInput(value) {\n    return value;\n  },\n  tokenize: function tokenize(value) {\n    return value.split('');\n  },\n  join: function join(chars) {\n    return chars.join('');\n  }\n};\n\nfunction buildValues(diff, components, newString, oldString, useLongestToken) {\n  var componentPos = 0,\n      componentLen = components.length,\n      newPos = 0,\n      oldPos = 0;\n\n  for (; componentPos < componentLen; componentPos++) {\n    var component = components[componentPos];\n\n    if (!component.removed) {\n      if (!component.added && useLongestToken) {\n        var value = newString.slice(newPos, newPos + component.count);\n        value = value.map(function (value, i) {\n          var oldValue = oldString[oldPos + i];\n          return oldValue.length > value.length ? oldValue : value;\n        });\n        component.value = diff.join(value);\n      } else {\n        component.value = diff.join(newString.slice(newPos, newPos + component.count));\n      }\n\n      newPos += component.count; // Common case\n\n      if (!component.added) {\n        oldPos += component.count;\n      }\n    } else {\n      component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));\n      oldPos += component.count; // Reverse add and remove so removes are output first to match common convention\n      // The diffing algorithm is tied to add then remove output and this is the simplest\n      // route to get the desired output with minimal overhead.\n\n      if (componentPos && components[componentPos - 1].added) {\n        var tmp = components[componentPos - 1];\n        components[componentPos - 1] = components[componentPos];\n        components[componentPos] = tmp;\n      }\n    }\n  } // Special case handle for when one terminal is ignored (i.e. whitespace).\n  // For this case we merge the terminal into the prior string and drop the change.\n  // This is only available for string mode.\n\n\n  var lastComponent = components[componentLen - 1];\n\n  if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {\n    components[componentLen - 2].value += lastComponent.value;\n    components.pop();\n  }\n\n  return components;\n}\n\nfunction clonePath(path) {\n  return {\n    newPos: path.newPos,\n    components: path.components.slice(0)\n  };\n}\n\nvar characterDiff = new Diff();\nfunction diffChars(oldStr, newStr, options) {\n  return characterDiff.diff(oldStr, newStr, options);\n}\n\nfunction generateOptions(options, defaults) {\n  if (typeof options === 'function') {\n    defaults.callback = options;\n  } else if (options) {\n    for (var name in options) {\n      /* istanbul ignore else */\n      if (options.hasOwnProperty(name)) {\n        defaults[name] = options[name];\n      }\n    }\n  }\n\n  return defaults;\n}\n\n//\n// Ranges and exceptions:\n// Latin-1 Supplement, 0080–00FF\n//  - U+00D7  × Multiplication sign\n//  - U+00F7  ÷ Division sign\n// Latin Extended-A, 0100–017F\n// Latin Extended-B, 0180–024F\n// IPA Extensions, 0250–02AF\n// Spacing Modifier Letters, 02B0–02FF\n//  - U+02C7  ˇ &#711;  Caron\n//  - U+02D8  ˘ &#728;  Breve\n//  - U+02D9  ˙ &#729;  Dot Above\n//  - U+02DA  ˚ &#730;  Ring Above\n//  - U+02DB  ˛ &#731;  Ogonek\n//  - U+02DC  ˜ &#732;  Small Tilde\n//  - U+02DD  ˝ &#733;  Double Acute Accent\n// Latin Extended Additional, 1E00–1EFF\n\nvar extendedWordChars = /^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/;\nvar reWhitespace = /\\S/;\nvar wordDiff = new Diff();\n\nwordDiff.equals = function (left, right) {\n  if (this.options.ignoreCase) {\n    left = left.toLowerCase();\n    right = right.toLowerCase();\n  }\n\n  return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);\n};\n\nwordDiff.tokenize = function (value) {\n  // All whitespace symbols except newline group into one token, each newline - in separate token\n  var tokens = value.split(/([^\\S\\r\\n]+|[()[\\]{}'\"\\r\\n]|\\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.\n\n  for (var i = 0; i < tokens.length - 1; i++) {\n    // If we have an empty string in the next field and we have only word chars before and after, merge\n    if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {\n      tokens[i] += tokens[i + 2];\n      tokens.splice(i + 1, 2);\n      i--;\n    }\n  }\n\n  return tokens;\n};\n\nfunction diffWords(oldStr, newStr, options) {\n  options = generateOptions(options, {\n    ignoreWhitespace: true\n  });\n  return wordDiff.diff(oldStr, newStr, options);\n}\nfunction diffWordsWithSpace(oldStr, newStr, options) {\n  return wordDiff.diff(oldStr, newStr, options);\n}\n\nvar lineDiff = new Diff();\n\nlineDiff.tokenize = function (value) {\n  var retLines = [],\n      linesAndNewlines = value.split(/(\\n|\\r\\n)/); // Ignore the final empty token that occurs if the string ends with a new line\n\n  if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n    linesAndNewlines.pop();\n  } // Merge the content and line separators into single tokens\n\n\n  for (var i = 0; i < linesAndNewlines.length; i++) {\n    var line = linesAndNewlines[i];\n\n    if (i % 2 && !this.options.newlineIsToken) {\n      retLines[retLines.length - 1] += line;\n    } else {\n      if (this.options.ignoreWhitespace) {\n        line = line.trim();\n      }\n\n      retLines.push(line);\n    }\n  }\n\n  return retLines;\n};\n\nfunction diffLines(oldStr, newStr, callback) {\n  return lineDiff.diff(oldStr, newStr, callback);\n}\nfunction diffTrimmedLines(oldStr, newStr, callback) {\n  var options = generateOptions(callback, {\n    ignoreWhitespace: true\n  });\n  return lineDiff.diff(oldStr, newStr, options);\n}\n\nvar sentenceDiff = new Diff();\n\nsentenceDiff.tokenize = function (value) {\n  return value.split(/(\\S.+?[.!?])(?=\\s+|$)/);\n};\n\nfunction diffSentences(oldStr, newStr, callback) {\n  return sentenceDiff.diff(oldStr, newStr, callback);\n}\n\nvar cssDiff = new Diff();\n\ncssDiff.tokenize = function (value) {\n  return value.split(/([{}:;,]|\\s+)/);\n};\n\nfunction diffCss(oldStr, newStr, callback) {\n  return cssDiff.diff(oldStr, newStr, callback);\n}\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar objectPrototypeToString = Object.prototype.toString;\nvar jsonDiff = new Diff(); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\n// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\n\njsonDiff.useLongestToken = true;\njsonDiff.tokenize = lineDiff.tokenize;\n\njsonDiff.castInput = function (value) {\n  var _this$options = this.options,\n      undefinedReplacement = _this$options.undefinedReplacement,\n      _this$options$stringi = _this$options.stringifyReplacer,\n      stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) {\n    return typeof v === 'undefined' ? undefinedReplacement : v;\n  } : _this$options$stringi;\n  return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, '  ');\n};\n\njsonDiff.equals = function (left, right) {\n  return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1'));\n};\n\nfunction diffJson(oldObj, newObj, options) {\n  return jsonDiff.diff(oldObj, newObj, options);\n} // This function handles the presence of circular references by bailing out when encountering an\n// object that is already on the \"stack\" of items being processed. Accepts an optional replacer\n\nfunction canonicalize(obj, stack, replacementStack, replacer, key) {\n  stack = stack || [];\n  replacementStack = replacementStack || [];\n\n  if (replacer) {\n    obj = replacer(key, obj);\n  }\n\n  var i;\n\n  for (i = 0; i < stack.length; i += 1) {\n    if (stack[i] === obj) {\n      return replacementStack[i];\n    }\n  }\n\n  var canonicalizedObj;\n\n  if ('[object Array]' === objectPrototypeToString.call(obj)) {\n    stack.push(obj);\n    canonicalizedObj = new Array(obj.length);\n    replacementStack.push(canonicalizedObj);\n\n    for (i = 0; i < obj.length; i += 1) {\n      canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);\n    }\n\n    stack.pop();\n    replacementStack.pop();\n    return canonicalizedObj;\n  }\n\n  if (obj && obj.toJSON) {\n    obj = obj.toJSON();\n  }\n\n  if (_typeof(obj) === 'object' && obj !== null) {\n    stack.push(obj);\n    canonicalizedObj = {};\n    replacementStack.push(canonicalizedObj);\n\n    var sortedKeys = [],\n        _key;\n\n    for (_key in obj) {\n      /* istanbul ignore else */\n      if (obj.hasOwnProperty(_key)) {\n        sortedKeys.push(_key);\n      }\n    }\n\n    sortedKeys.sort();\n\n    for (i = 0; i < sortedKeys.length; i += 1) {\n      _key = sortedKeys[i];\n      canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);\n    }\n\n    stack.pop();\n    replacementStack.pop();\n  } else {\n    canonicalizedObj = obj;\n  }\n\n  return canonicalizedObj;\n}\n\nvar arrayDiff = new Diff();\n\narrayDiff.tokenize = function (value) {\n  return value.slice();\n};\n\narrayDiff.join = arrayDiff.removeEmpty = function (value) {\n  return value;\n};\n\nfunction diffArrays(oldArr, newArr, callback) {\n  return arrayDiff.diff(oldArr, newArr, callback);\n}\n\nfunction parsePatch(uniDiff) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var diffstr = uniDiff.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n      delimiters = uniDiff.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n      list = [],\n      i = 0;\n\n  function parseIndex() {\n    var index = {};\n    list.push(index); // Parse diff metadata\n\n    while (i < diffstr.length) {\n      var line = diffstr[i]; // File header found, end parsing diff metadata\n\n      if (/^(\\-\\-\\-|\\+\\+\\+|@@)\\s/.test(line)) {\n        break;\n      } // Diff index\n\n\n      var header = /^(?:Index:|diff(?: -r \\w+)+)\\s+(.+?)\\s*$/.exec(line);\n\n      if (header) {\n        index.index = header[1];\n      }\n\n      i++;\n    } // Parse file headers if they are defined. Unified diff requires them, but\n    // there's no technical issues to have an isolated hunk without file header\n\n\n    parseFileHeader(index);\n    parseFileHeader(index); // Parse hunks\n\n    index.hunks = [];\n\n    while (i < diffstr.length) {\n      var _line = diffstr[i];\n\n      if (/^(Index:|diff|\\-\\-\\-|\\+\\+\\+)\\s/.test(_line)) {\n        break;\n      } else if (/^@@/.test(_line)) {\n        index.hunks.push(parseHunk());\n      } else if (_line && options.strict) {\n        // Ignore unexpected content unless in strict mode\n        throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));\n      } else {\n        i++;\n      }\n    }\n  } // Parses the --- and +++ headers, if none are found, no lines\n  // are consumed.\n\n\n  function parseFileHeader(index) {\n    var fileHeader = /^(---|\\+\\+\\+)\\s+(.*)$/.exec(diffstr[i]);\n\n    if (fileHeader) {\n      var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';\n      var data = fileHeader[2].split('\\t', 2);\n      var fileName = data[0].replace(/\\\\\\\\/g, '\\\\');\n\n      if (/^\".*\"$/.test(fileName)) {\n        fileName = fileName.substr(1, fileName.length - 2);\n      }\n\n      index[keyPrefix + 'FileName'] = fileName;\n      index[keyPrefix + 'Header'] = (data[1] || '').trim();\n      i++;\n    }\n  } // Parses a hunk\n  // This assumes that we are at the start of a hunk.\n\n\n  function parseHunk() {\n    var chunkHeaderIndex = i,\n        chunkHeaderLine = diffstr[i++],\n        chunkHeader = chunkHeaderLine.split(/@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@/);\n    var hunk = {\n      oldStart: +chunkHeader[1],\n      oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2],\n      newStart: +chunkHeader[3],\n      newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4],\n      lines: [],\n      linedelimiters: []\n    }; // Unified Diff Format quirk: If the chunk size is 0,\n    // the first number is one lower than one would expect.\n    // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n    if (hunk.oldLines === 0) {\n      hunk.oldStart += 1;\n    }\n\n    if (hunk.newLines === 0) {\n      hunk.newStart += 1;\n    }\n\n    var addCount = 0,\n        removeCount = 0;\n\n    for (; i < diffstr.length; i++) {\n      // Lines starting with '---' could be mistaken for the \"remove line\" operation\n      // But they could be the header for the next file. Therefore prune such cases out.\n      if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {\n        break;\n      }\n\n      var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];\n\n      if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\\\') {\n        hunk.lines.push(diffstr[i]);\n        hunk.linedelimiters.push(delimiters[i] || '\\n');\n\n        if (operation === '+') {\n          addCount++;\n        } else if (operation === '-') {\n          removeCount++;\n        } else if (operation === ' ') {\n          addCount++;\n          removeCount++;\n        }\n      } else {\n        break;\n      }\n    } // Handle the empty block count case\n\n\n    if (!addCount && hunk.newLines === 1) {\n      hunk.newLines = 0;\n    }\n\n    if (!removeCount && hunk.oldLines === 1) {\n      hunk.oldLines = 0;\n    } // Perform optional sanity checking\n\n\n    if (options.strict) {\n      if (addCount !== hunk.newLines) {\n        throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n      }\n\n      if (removeCount !== hunk.oldLines) {\n        throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n      }\n    }\n\n    return hunk;\n  }\n\n  while (i < diffstr.length) {\n    parseIndex();\n  }\n\n  return list;\n}\n\n// Iterator that traverses in the range of [min, max], stepping\n// by distance from a given start position. I.e. for [0, 4], with\n// start of 2, this will iterate 2, 3, 1, 4, 0.\nfunction distanceIterator (start, minLine, maxLine) {\n  var wantForward = true,\n      backwardExhausted = false,\n      forwardExhausted = false,\n      localOffset = 1;\n  return function iterator() {\n    if (wantForward && !forwardExhausted) {\n      if (backwardExhausted) {\n        localOffset++;\n      } else {\n        wantForward = false;\n      } // Check if trying to fit beyond text length, and if not, check it fits\n      // after offset location (or desired location on first iteration)\n\n\n      if (start + localOffset <= maxLine) {\n        return localOffset;\n      }\n\n      forwardExhausted = true;\n    }\n\n    if (!backwardExhausted) {\n      if (!forwardExhausted) {\n        wantForward = true;\n      } // Check if trying to fit before text beginning, and if not, check it fits\n      // before offset location\n\n\n      if (minLine <= start - localOffset) {\n        return -localOffset++;\n      }\n\n      backwardExhausted = true;\n      return iterator();\n    } // We tried to fit hunk before text beginning and beyond text length, then\n    // hunk can't fit on the text. Return undefined\n\n  };\n}\n\nfunction applyPatch(source, uniDiff) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (typeof uniDiff === 'string') {\n    uniDiff = parsePatch(uniDiff);\n  }\n\n  if (Array.isArray(uniDiff)) {\n    if (uniDiff.length > 1) {\n      throw new Error('applyPatch only works with a single input.');\n    }\n\n    uniDiff = uniDiff[0];\n  } // Apply the diff to the input\n\n\n  var lines = source.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n      delimiters = source.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n      hunks = uniDiff.hunks,\n      compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) {\n    return line === patchContent;\n  },\n      errorCount = 0,\n      fuzzFactor = options.fuzzFactor || 0,\n      minLine = 0,\n      offset = 0,\n      removeEOFNL,\n      addEOFNL;\n  /**\n   * Checks if the hunk exactly fits on the provided location\n   */\n\n\n  function hunkFits(hunk, toPos) {\n    for (var j = 0; j < hunk.lines.length; j++) {\n      var line = hunk.lines[j],\n          operation = line.length > 0 ? line[0] : ' ',\n          content = line.length > 0 ? line.substr(1) : line;\n\n      if (operation === ' ' || operation === '-') {\n        // Context sanity check\n        if (!compareLine(toPos + 1, lines[toPos], operation, content)) {\n          errorCount++;\n\n          if (errorCount > fuzzFactor) {\n            return false;\n          }\n        }\n\n        toPos++;\n      }\n    }\n\n    return true;\n  } // Search best fit offsets for each hunk based on the previous ones\n\n\n  for (var i = 0; i < hunks.length; i++) {\n    var hunk = hunks[i],\n        maxLine = lines.length - hunk.oldLines,\n        localOffset = 0,\n        toPos = offset + hunk.oldStart - 1;\n    var iterator = distanceIterator(toPos, minLine, maxLine);\n\n    for (; localOffset !== undefined; localOffset = iterator()) {\n      if (hunkFits(hunk, toPos + localOffset)) {\n        hunk.offset = offset += localOffset;\n        break;\n      }\n    }\n\n    if (localOffset === undefined) {\n      return false;\n    } // Set lower text limit to end of the current hunk, so next ones don't try\n    // to fit over already patched text\n\n\n    minLine = hunk.offset + hunk.oldStart + hunk.oldLines;\n  } // Apply patch hunks\n\n\n  var diffOffset = 0;\n\n  for (var _i = 0; _i < hunks.length; _i++) {\n    var _hunk = hunks[_i],\n        _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;\n\n    diffOffset += _hunk.newLines - _hunk.oldLines;\n\n    for (var j = 0; j < _hunk.lines.length; j++) {\n      var line = _hunk.lines[j],\n          operation = line.length > 0 ? line[0] : ' ',\n          content = line.length > 0 ? line.substr(1) : line,\n          delimiter = _hunk.linedelimiters[j];\n\n      if (operation === ' ') {\n        _toPos++;\n      } else if (operation === '-') {\n        lines.splice(_toPos, 1);\n        delimiters.splice(_toPos, 1);\n        /* istanbul ignore else */\n      } else if (operation === '+') {\n        lines.splice(_toPos, 0, content);\n        delimiters.splice(_toPos, 0, delimiter);\n        _toPos++;\n      } else if (operation === '\\\\') {\n        var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;\n\n        if (previousOperation === '+') {\n          removeEOFNL = true;\n        } else if (previousOperation === '-') {\n          addEOFNL = true;\n        }\n      }\n    }\n  } // Handle EOFNL insertion/removal\n\n\n  if (removeEOFNL) {\n    while (!lines[lines.length - 1]) {\n      lines.pop();\n      delimiters.pop();\n    }\n  } else if (addEOFNL) {\n    lines.push('');\n    delimiters.push('\\n');\n  }\n\n  for (var _k = 0; _k < lines.length - 1; _k++) {\n    lines[_k] = lines[_k] + delimiters[_k];\n  }\n\n  return lines.join('');\n} // Wrapper that supports multiple file patches via callbacks.\n\nfunction applyPatches(uniDiff, options) {\n  if (typeof uniDiff === 'string') {\n    uniDiff = parsePatch(uniDiff);\n  }\n\n  var currentIndex = 0;\n\n  function processIndex() {\n    var index = uniDiff[currentIndex++];\n\n    if (!index) {\n      return options.complete();\n    }\n\n    options.loadFile(index, function (err, data) {\n      if (err) {\n        return options.complete(err);\n      }\n\n      var updatedContent = applyPatch(data, index, options);\n      options.patched(index, updatedContent, function (err) {\n        if (err) {\n          return options.complete(err);\n        }\n\n        processIndex();\n      });\n    });\n  }\n\n  processIndex();\n}\n\nfunction structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n  if (!options) {\n    options = {};\n  }\n\n  if (typeof options.context === 'undefined') {\n    options.context = 4;\n  }\n\n  var diff = diffLines(oldStr, newStr, options);\n\n  if (!diff) {\n    return;\n  }\n\n  diff.push({\n    value: '',\n    lines: []\n  }); // Append an empty value to make cleanup easier\n\n  function contextLines(lines) {\n    return lines.map(function (entry) {\n      return ' ' + entry;\n    });\n  }\n\n  var hunks = [];\n  var oldRangeStart = 0,\n      newRangeStart = 0,\n      curRange = [],\n      oldLine = 1,\n      newLine = 1;\n\n  var _loop = function _loop(i) {\n    var current = diff[i],\n        lines = current.lines || current.value.replace(/\\n$/, '').split('\\n');\n    current.lines = lines;\n\n    if (current.added || current.removed) {\n      var _curRange;\n\n      // If we have previous context, start with that\n      if (!oldRangeStart) {\n        var prev = diff[i - 1];\n        oldRangeStart = oldLine;\n        newRangeStart = newLine;\n\n        if (prev) {\n          curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];\n          oldRangeStart -= curRange.length;\n          newRangeStart -= curRange.length;\n        }\n      } // Output our changes\n\n\n      (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function (entry) {\n        return (current.added ? '+' : '-') + entry;\n      }))); // Track the updated file position\n\n\n      if (current.added) {\n        newLine += lines.length;\n      } else {\n        oldLine += lines.length;\n      }\n    } else {\n      // Identical context lines. Track line changes\n      if (oldRangeStart) {\n        // Close out any changes that have been output (or join overlapping)\n        if (lines.length <= options.context * 2 && i < diff.length - 2) {\n          var _curRange2;\n\n          // Overlapping\n          (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines)));\n        } else {\n          var _curRange3;\n\n          // end the range and output\n          var contextSize = Math.min(lines.length, options.context);\n\n          (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize))));\n\n          var hunk = {\n            oldStart: oldRangeStart,\n            oldLines: oldLine - oldRangeStart + contextSize,\n            newStart: newRangeStart,\n            newLines: newLine - newRangeStart + contextSize,\n            lines: curRange\n          };\n\n          if (i >= diff.length - 2 && lines.length <= options.context) {\n            // EOF is inside this hunk\n            var oldEOFNewline = /\\n$/.test(oldStr);\n            var newEOFNewline = /\\n$/.test(newStr);\n            var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;\n\n            if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) {\n              // special case: old has no eol and no trailing context; no-nl can end up before adds\n              // however, if the old file is empty, do not output the no-nl line\n              curRange.splice(hunk.oldLines, 0, '\\\\ No newline at end of file');\n            }\n\n            if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {\n              curRange.push('\\\\ No newline at end of file');\n            }\n          }\n\n          hunks.push(hunk);\n          oldRangeStart = 0;\n          newRangeStart = 0;\n          curRange = [];\n        }\n      }\n\n      oldLine += lines.length;\n      newLine += lines.length;\n    }\n  };\n\n  for (var i = 0; i < diff.length; i++) {\n    _loop(i);\n  }\n\n  return {\n    oldFileName: oldFileName,\n    newFileName: newFileName,\n    oldHeader: oldHeader,\n    newHeader: newHeader,\n    hunks: hunks\n  };\n}\nfunction formatPatch(diff) {\n  var ret = [];\n\n  if (diff.oldFileName == diff.newFileName) {\n    ret.push('Index: ' + diff.oldFileName);\n  }\n\n  ret.push('===================================================================');\n  ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\\t' + diff.oldHeader));\n  ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\\t' + diff.newHeader));\n\n  for (var i = 0; i < diff.hunks.length; i++) {\n    var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0,\n    // the first number is one lower than one would expect.\n    // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n    if (hunk.oldLines === 0) {\n      hunk.oldStart -= 1;\n    }\n\n    if (hunk.newLines === 0) {\n      hunk.newStart -= 1;\n    }\n\n    ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');\n    ret.push.apply(ret, hunk.lines);\n  }\n\n  return ret.join('\\n') + '\\n';\n}\nfunction createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n  return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options));\n}\nfunction createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n  return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n}\n\nfunction arrayEqual(a, b) {\n  if (a.length !== b.length) {\n    return false;\n  }\n\n  return arrayStartsWith(a, b);\n}\nfunction arrayStartsWith(array, start) {\n  if (start.length > array.length) {\n    return false;\n  }\n\n  for (var i = 0; i < start.length; i++) {\n    if (start[i] !== array[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction calcLineCount(hunk) {\n  var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines),\n      oldLines = _calcOldNewLineCount.oldLines,\n      newLines = _calcOldNewLineCount.newLines;\n\n  if (oldLines !== undefined) {\n    hunk.oldLines = oldLines;\n  } else {\n    delete hunk.oldLines;\n  }\n\n  if (newLines !== undefined) {\n    hunk.newLines = newLines;\n  } else {\n    delete hunk.newLines;\n  }\n}\nfunction merge(mine, theirs, base) {\n  mine = loadPatch(mine, base);\n  theirs = loadPatch(theirs, base);\n  var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.\n  // Leaving sanity checks on this to the API consumer that may know more about the\n  // meaning in their own context.\n\n  if (mine.index || theirs.index) {\n    ret.index = mine.index || theirs.index;\n  }\n\n  if (mine.newFileName || theirs.newFileName) {\n    if (!fileNameChanged(mine)) {\n      // No header or no change in ours, use theirs (and ours if theirs does not exist)\n      ret.oldFileName = theirs.oldFileName || mine.oldFileName;\n      ret.newFileName = theirs.newFileName || mine.newFileName;\n      ret.oldHeader = theirs.oldHeader || mine.oldHeader;\n      ret.newHeader = theirs.newHeader || mine.newHeader;\n    } else if (!fileNameChanged(theirs)) {\n      // No header or no change in theirs, use ours\n      ret.oldFileName = mine.oldFileName;\n      ret.newFileName = mine.newFileName;\n      ret.oldHeader = mine.oldHeader;\n      ret.newHeader = mine.newHeader;\n    } else {\n      // Both changed... figure it out\n      ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);\n      ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);\n      ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);\n      ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);\n    }\n  }\n\n  ret.hunks = [];\n  var mineIndex = 0,\n      theirsIndex = 0,\n      mineOffset = 0,\n      theirsOffset = 0;\n\n  while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {\n    var mineCurrent = mine.hunks[mineIndex] || {\n      oldStart: Infinity\n    },\n        theirsCurrent = theirs.hunks[theirsIndex] || {\n      oldStart: Infinity\n    };\n\n    if (hunkBefore(mineCurrent, theirsCurrent)) {\n      // This patch does not overlap with any of the others, yay.\n      ret.hunks.push(cloneHunk(mineCurrent, mineOffset));\n      mineIndex++;\n      theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;\n    } else if (hunkBefore(theirsCurrent, mineCurrent)) {\n      // This patch does not overlap with any of the others, yay.\n      ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));\n      theirsIndex++;\n      mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;\n    } else {\n      // Overlap, merge as best we can\n      var mergedHunk = {\n        oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),\n        oldLines: 0,\n        newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),\n        newLines: 0,\n        lines: []\n      };\n      mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);\n      theirsIndex++;\n      mineIndex++;\n      ret.hunks.push(mergedHunk);\n    }\n  }\n\n  return ret;\n}\n\nfunction loadPatch(param, base) {\n  if (typeof param === 'string') {\n    if (/^@@/m.test(param) || /^Index:/m.test(param)) {\n      return parsePatch(param)[0];\n    }\n\n    if (!base) {\n      throw new Error('Must provide a base reference or pass in a patch');\n    }\n\n    return structuredPatch(undefined, undefined, base, param);\n  }\n\n  return param;\n}\n\nfunction fileNameChanged(patch) {\n  return patch.newFileName && patch.newFileName !== patch.oldFileName;\n}\n\nfunction selectField(index, mine, theirs) {\n  if (mine === theirs) {\n    return mine;\n  } else {\n    index.conflict = true;\n    return {\n      mine: mine,\n      theirs: theirs\n    };\n  }\n}\n\nfunction hunkBefore(test, check) {\n  return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;\n}\n\nfunction cloneHunk(hunk, offset) {\n  return {\n    oldStart: hunk.oldStart,\n    oldLines: hunk.oldLines,\n    newStart: hunk.newStart + offset,\n    newLines: hunk.newLines,\n    lines: hunk.lines\n  };\n}\n\nfunction mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {\n  // This will generally result in a conflicted hunk, but there are cases where the context\n  // is the only overlap where we can successfully merge the content here.\n  var mine = {\n    offset: mineOffset,\n    lines: mineLines,\n    index: 0\n  },\n      their = {\n    offset: theirOffset,\n    lines: theirLines,\n    index: 0\n  }; // Handle any leading content\n\n  insertLeading(hunk, mine, their);\n  insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.\n\n  while (mine.index < mine.lines.length && their.index < their.lines.length) {\n    var mineCurrent = mine.lines[mine.index],\n        theirCurrent = their.lines[their.index];\n\n    if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {\n      // Both modified ...\n      mutualChange(hunk, mine, their);\n    } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {\n      var _hunk$lines;\n\n      // Mine inserted\n      (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine)));\n    } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {\n      var _hunk$lines2;\n\n      // Theirs inserted\n      (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their)));\n    } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {\n      // Mine removed or edited\n      removal(hunk, mine, their);\n    } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {\n      // Their removed or edited\n      removal(hunk, their, mine, true);\n    } else if (mineCurrent === theirCurrent) {\n      // Context identity\n      hunk.lines.push(mineCurrent);\n      mine.index++;\n      their.index++;\n    } else {\n      // Context mismatch\n      conflict(hunk, collectChange(mine), collectChange(their));\n    }\n  } // Now push anything that may be remaining\n\n\n  insertTrailing(hunk, mine);\n  insertTrailing(hunk, their);\n  calcLineCount(hunk);\n}\n\nfunction mutualChange(hunk, mine, their) {\n  var myChanges = collectChange(mine),\n      theirChanges = collectChange(their);\n\n  if (allRemoves(myChanges) && allRemoves(theirChanges)) {\n    // Special case for remove changes that are supersets of one another\n    if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {\n      var _hunk$lines3;\n\n      (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges));\n\n      return;\n    } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {\n      var _hunk$lines4;\n\n      (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges));\n\n      return;\n    }\n  } else if (arrayEqual(myChanges, theirChanges)) {\n    var _hunk$lines5;\n\n    (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges));\n\n    return;\n  }\n\n  conflict(hunk, myChanges, theirChanges);\n}\n\nfunction removal(hunk, mine, their, swap) {\n  var myChanges = collectChange(mine),\n      theirChanges = collectContext(their, myChanges);\n\n  if (theirChanges.merged) {\n    var _hunk$lines6;\n\n    (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged));\n  } else {\n    conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);\n  }\n}\n\nfunction conflict(hunk, mine, their) {\n  hunk.conflict = true;\n  hunk.lines.push({\n    conflict: true,\n    mine: mine,\n    theirs: their\n  });\n}\n\nfunction insertLeading(hunk, insert, their) {\n  while (insert.offset < their.offset && insert.index < insert.lines.length) {\n    var line = insert.lines[insert.index++];\n    hunk.lines.push(line);\n    insert.offset++;\n  }\n}\n\nfunction insertTrailing(hunk, insert) {\n  while (insert.index < insert.lines.length) {\n    var line = insert.lines[insert.index++];\n    hunk.lines.push(line);\n  }\n}\n\nfunction collectChange(state) {\n  var ret = [],\n      operation = state.lines[state.index][0];\n\n  while (state.index < state.lines.length) {\n    var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one \"atomic\" modify change.\n\n    if (operation === '-' && line[0] === '+') {\n      operation = '+';\n    }\n\n    if (operation === line[0]) {\n      ret.push(line);\n      state.index++;\n    } else {\n      break;\n    }\n  }\n\n  return ret;\n}\n\nfunction collectContext(state, matchChanges) {\n  var changes = [],\n      merged = [],\n      matchIndex = 0,\n      contextChanges = false,\n      conflicted = false;\n\n  while (matchIndex < matchChanges.length && state.index < state.lines.length) {\n    var change = state.lines[state.index],\n        match = matchChanges[matchIndex]; // Once we've hit our add, then we are done\n\n    if (match[0] === '+') {\n      break;\n    }\n\n    contextChanges = contextChanges || change[0] !== ' ';\n    merged.push(match);\n    matchIndex++; // Consume any additions in the other block as a conflict to attempt\n    // to pull in the remaining context after this\n\n    if (change[0] === '+') {\n      conflicted = true;\n\n      while (change[0] === '+') {\n        changes.push(change);\n        change = state.lines[++state.index];\n      }\n    }\n\n    if (match.substr(1) === change.substr(1)) {\n      changes.push(change);\n      state.index++;\n    } else {\n      conflicted = true;\n    }\n  }\n\n  if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {\n    conflicted = true;\n  }\n\n  if (conflicted) {\n    return changes;\n  }\n\n  while (matchIndex < matchChanges.length) {\n    merged.push(matchChanges[matchIndex++]);\n  }\n\n  return {\n    merged: merged,\n    changes: changes\n  };\n}\n\nfunction allRemoves(changes) {\n  return changes.reduce(function (prev, change) {\n    return prev && change[0] === '-';\n  }, true);\n}\n\nfunction skipRemoveSuperset(state, removeChanges, delta) {\n  for (var i = 0; i < delta; i++) {\n    var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);\n\n    if (state.lines[state.index + i] !== ' ' + changeContent) {\n      return false;\n    }\n  }\n\n  state.index += delta;\n  return true;\n}\n\nfunction calcOldNewLineCount(lines) {\n  var oldLines = 0;\n  var newLines = 0;\n  lines.forEach(function (line) {\n    if (typeof line !== 'string') {\n      var myCount = calcOldNewLineCount(line.mine);\n      var theirCount = calcOldNewLineCount(line.theirs);\n\n      if (oldLines !== undefined) {\n        if (myCount.oldLines === theirCount.oldLines) {\n          oldLines += myCount.oldLines;\n        } else {\n          oldLines = undefined;\n        }\n      }\n\n      if (newLines !== undefined) {\n        if (myCount.newLines === theirCount.newLines) {\n          newLines += myCount.newLines;\n        } else {\n          newLines = undefined;\n        }\n      }\n    } else {\n      if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {\n        newLines++;\n      }\n\n      if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {\n        oldLines++;\n      }\n    }\n  });\n  return {\n    oldLines: oldLines,\n    newLines: newLines\n  };\n}\n\n// See: http://code.google.com/p/google-diff-match-patch/wiki/API\nfunction convertChangesToDMP(changes) {\n  var ret = [],\n      change,\n      operation;\n\n  for (var i = 0; i < changes.length; i++) {\n    change = changes[i];\n\n    if (change.added) {\n      operation = 1;\n    } else if (change.removed) {\n      operation = -1;\n    } else {\n      operation = 0;\n    }\n\n    ret.push([operation, change.value]);\n  }\n\n  return ret;\n}\n\nfunction convertChangesToXML(changes) {\n  var ret = [];\n\n  for (var i = 0; i < changes.length; i++) {\n    var change = changes[i];\n\n    if (change.added) {\n      ret.push('<ins>');\n    } else if (change.removed) {\n      ret.push('<del>');\n    }\n\n    ret.push(escapeHTML(change.value));\n\n    if (change.added) {\n      ret.push('</ins>');\n    } else if (change.removed) {\n      ret.push('</del>');\n    }\n  }\n\n  return ret.join('');\n}\n\nfunction escapeHTML(s) {\n  var n = s;\n  n = n.replace(/&/g, '&amp;');\n  n = n.replace(/</g, '&lt;');\n  n = n.replace(/>/g, '&gt;');\n  n = n.replace(/\"/g, '&quot;');\n  return n;\n}\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/diff/lib/index.mjs?");

/***/ }),

/***/ "./node_modules/hast-util-whitespace/index.js":
/*!****************************************************!*\
  !*** ./node_modules/hast-util-whitespace/index.js ***!
  \****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"whitespace\": function() { return /* binding */ whitespace; }\n/* harmony export */ });\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {unknown} thing\n *   Thing to check (typically `Node` or `string`).\n * @returns {boolean}\n *   Whether the `value` is inter-element whitespace (`boolean`): consisting of\n *   zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n *   (`\\r`), or form feed (`\\f`).\n *   If a node is passed it must be a `Text` node, whose `value` field is\n *   checked.\n */\nfunction whitespace(thing) {\n  /** @type {string} */\n  const value =\n    // @ts-expect-error looks like a node.\n    thing && typeof thing === 'object' && thing.type === 'text'\n      ? // @ts-expect-error looks like a text.\n        thing.value || ''\n      : thing\n\n  // HTML whitespace expression.\n  // See <https://infra.spec.whatwg.org/#ascii-whitespace>.\n  return typeof value === 'string' && value.replace(/[ \\t\\n\\f\\r]/g, '') === ''\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/hast-util-whitespace/index.js?");

/***/ }),

/***/ "./node_modules/markdown-table/index.js":
/*!**********************************************!*\
  !*** ./node_modules/markdown-table/index.js ***!
  \**********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"markdownTable\": function() { return /* binding */ markdownTable; }\n/* harmony export */ });\n/**\n * @typedef Options\n *   Configuration (optional).\n * @property {string|null|ReadonlyArray<string|null|undefined>} [align]\n *   One style for all columns, or styles for their respective columns.\n *   Each style is either `'l'` (left), `'r'` (right), or `'c'` (center).\n *   Other values are treated as `''`, which doesn’t place the colon in the\n *   alignment row but does align left.\n *   *Only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean} [padding=true]\n *   Whether to add a space of padding between delimiters and cells.\n *\n *   When `true`, there is padding:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there is no padding:\n *\n *   ```markdown\n *   |Alpha|B    |\n *   |-----|-----|\n *   |C    |Delta|\n *   ```\n * @property {boolean} [delimiterStart=true]\n *   Whether to begin each row with the delimiter.\n *\n *   > 👉 **Note**: please don’t use this: it could create fragile structures\n *   > that aren’t understandable to some markdown parsers.\n *\n *   When `true`, there are starting delimiters:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there are no starting delimiters:\n *\n *   ```markdown\n *   Alpha | B     |\n *   ----- | ----- |\n *   C     | Delta |\n *   ```\n * @property {boolean} [delimiterEnd=true]\n *   Whether to end each row with the delimiter.\n *\n *   > 👉 **Note**: please don’t use this: it could create fragile structures\n *   > that aren’t understandable to some markdown parsers.\n *\n *   When `true`, there are ending delimiters:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there are no ending delimiters:\n *\n *   ```markdown\n *   | Alpha | B\n *   | ----- | -----\n *   | C     | Delta\n *   ```\n * @property {boolean} [alignDelimiters=true]\n *   Whether to align the delimiters.\n *   By default, they are aligned:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   Pass `false` to make them staggered:\n *\n *   ```markdown\n *   | Alpha | B |\n *   | - | - |\n *   | C | Delta |\n *   ```\n * @property {(value: string) => number} [stringLength]\n *   Function to detect the length of table cell content.\n *   This is used when aligning the delimiters (`|`) between table cells.\n *   Full-width characters and emoji mess up delimiter alignment when viewing\n *   the markdown source.\n *   To fix this, you can pass this function, which receives the cell content\n *   and returns its “visible” size.\n *   Note that what is and isn’t visible depends on where the text is displayed.\n *\n *   Without such a function, the following:\n *\n *   ```js\n *   markdownTable([\n *     ['Alpha', 'Bravo'],\n *     ['中文', 'Charlie'],\n *     ['👩‍❤️‍👩', 'Delta']\n *   ])\n *   ```\n *\n *   Yields:\n *\n *   ```markdown\n *   | Alpha | Bravo |\n *   | - | - |\n *   | 中文 | Charlie |\n *   | 👩‍❤️‍👩 | Delta |\n *   ```\n *\n *   With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n *   ```js\n *   import stringWidth from 'string-width'\n *\n *   markdownTable(\n *     [\n *       ['Alpha', 'Bravo'],\n *       ['中文', 'Charlie'],\n *       ['👩‍❤️‍👩', 'Delta']\n *     ],\n *     {stringLength: stringWidth}\n *   )\n *   ```\n *\n *   Yields:\n *\n *   ```markdown\n *   | Alpha | Bravo   |\n *   | ----- | ------- |\n *   | 中文  | Charlie |\n *   | 👩‍❤️‍👩    | Delta   |\n *   ```\n */\n\n/**\n * @typedef {Options} MarkdownTableOptions\n * @todo\n *   Remove next major.\n */\n\n/**\n * Generate a markdown ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables)) table..\n *\n * @param {ReadonlyArray<ReadonlyArray<string|null|undefined>>} table\n *   Table data (matrix of strings).\n * @param {Options} [options]\n *   Configuration (optional).\n * @returns {string}\n */\nfunction markdownTable(table, options = {}) {\n  const align = (options.align || []).concat()\n  const stringLength = options.stringLength || defaultStringLength\n  /** @type {Array<number>} Character codes as symbols for alignment per column. */\n  const alignments = []\n  /** @type {Array<Array<string>>} Cells per row. */\n  const cellMatrix = []\n  /** @type {Array<Array<number>>} Sizes of each cell per row. */\n  const sizeMatrix = []\n  /** @type {Array<number>} */\n  const longestCellByColumn = []\n  let mostCellsPerRow = 0\n  let rowIndex = -1\n\n  // This is a superfluous loop if we don’t align delimiters, but otherwise we’d\n  // do superfluous work when aligning, so optimize for aligning.\n  while (++rowIndex < table.length) {\n    /** @type {Array<string>} */\n    const row = []\n    /** @type {Array<number>} */\n    const sizes = []\n    let columnIndex = -1\n\n    if (table[rowIndex].length > mostCellsPerRow) {\n      mostCellsPerRow = table[rowIndex].length\n    }\n\n    while (++columnIndex < table[rowIndex].length) {\n      const cell = serialize(table[rowIndex][columnIndex])\n\n      if (options.alignDelimiters !== false) {\n        const size = stringLength(cell)\n        sizes[columnIndex] = size\n\n        if (\n          longestCellByColumn[columnIndex] === undefined ||\n          size > longestCellByColumn[columnIndex]\n        ) {\n          longestCellByColumn[columnIndex] = size\n        }\n      }\n\n      row.push(cell)\n    }\n\n    cellMatrix[rowIndex] = row\n    sizeMatrix[rowIndex] = sizes\n  }\n\n  // Figure out which alignments to use.\n  let columnIndex = -1\n\n  if (typeof align === 'object' && 'length' in align) {\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = toAlignment(align[columnIndex])\n    }\n  } else {\n    const code = toAlignment(align)\n\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = code\n    }\n  }\n\n  // Inject the alignment row.\n  columnIndex = -1\n  /** @type {Array<string>} */\n  const row = []\n  /** @type {Array<number>} */\n  const sizes = []\n\n  while (++columnIndex < mostCellsPerRow) {\n    const code = alignments[columnIndex]\n    let before = ''\n    let after = ''\n\n    if (code === 99 /* `c` */) {\n      before = ':'\n      after = ':'\n    } else if (code === 108 /* `l` */) {\n      before = ':'\n    } else if (code === 114 /* `r` */) {\n      after = ':'\n    }\n\n    // There *must* be at least one hyphen-minus in each alignment cell.\n    let size =\n      options.alignDelimiters === false\n        ? 1\n        : Math.max(\n            1,\n            longestCellByColumn[columnIndex] - before.length - after.length\n          )\n\n    const cell = before + '-'.repeat(size) + after\n\n    if (options.alignDelimiters !== false) {\n      size = before.length + size + after.length\n\n      if (size > longestCellByColumn[columnIndex]) {\n        longestCellByColumn[columnIndex] = size\n      }\n\n      sizes[columnIndex] = size\n    }\n\n    row[columnIndex] = cell\n  }\n\n  // Inject the alignment row.\n  cellMatrix.splice(1, 0, row)\n  sizeMatrix.splice(1, 0, sizes)\n\n  rowIndex = -1\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (++rowIndex < cellMatrix.length) {\n    const row = cellMatrix[rowIndex]\n    const sizes = sizeMatrix[rowIndex]\n    columnIndex = -1\n    /** @type {Array<string>} */\n    const line = []\n\n    while (++columnIndex < mostCellsPerRow) {\n      const cell = row[columnIndex] || ''\n      let before = ''\n      let after = ''\n\n      if (options.alignDelimiters !== false) {\n        const size =\n          longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n        const code = alignments[columnIndex]\n\n        if (code === 114 /* `r` */) {\n          before = ' '.repeat(size)\n        } else if (code === 99 /* `c` */) {\n          if (size % 2) {\n            before = ' '.repeat(size / 2 + 0.5)\n            after = ' '.repeat(size / 2 - 0.5)\n          } else {\n            before = ' '.repeat(size / 2)\n            after = before\n          }\n        } else {\n          after = ' '.repeat(size)\n        }\n      }\n\n      if (options.delimiterStart !== false && !columnIndex) {\n        line.push('|')\n      }\n\n      if (\n        options.padding !== false &&\n        // Don’t add the opening space if we’re not aligning and the cell is\n        // empty: there will be a closing space.\n        !(options.alignDelimiters === false && cell === '') &&\n        (options.delimiterStart !== false || columnIndex)\n      ) {\n        line.push(' ')\n      }\n\n      if (options.alignDelimiters !== false) {\n        line.push(before)\n      }\n\n      line.push(cell)\n\n      if (options.alignDelimiters !== false) {\n        line.push(after)\n      }\n\n      if (options.padding !== false) {\n        line.push(' ')\n      }\n\n      if (\n        options.delimiterEnd !== false ||\n        columnIndex !== mostCellsPerRow - 1\n      ) {\n        line.push('|')\n      }\n    }\n\n    lines.push(\n      options.delimiterEnd === false\n        ? line.join('').replace(/ +$/, '')\n        : line.join('')\n    )\n  }\n\n  return lines.join('\\n')\n}\n\n/**\n * @param {string|null|undefined} [value]\n * @returns {string}\n */\nfunction serialize(value) {\n  return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string} value\n * @returns {number}\n */\nfunction defaultStringLength(value) {\n  return value.length\n}\n\n/**\n * @param {string|null|undefined} value\n * @returns {number}\n */\nfunction toAlignment(value) {\n  const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n  return code === 67 /* `C` */ || code === 99 /* `c` */\n    ? 99 /* `c` */\n    : code === 76 /* `L` */ || code === 108 /* `l` */\n    ? 108 /* `l` */\n    : code === 82 /* `R` */ || code === 114 /* `r` */\n    ? 114 /* `r` */\n    : 0\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/markdown-table/index.js?");

/***/ }),

/***/ "./node_modules/mdast-util-definitions/lib/index.js":
/*!**********************************************************!*\
  !*** ./node_modules/mdast-util-definitions/lib/index.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"definitions\": function() { return /* binding */ definitions; }\n/* harmony export */ });\n/* harmony import */ var unist_util_visit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! unist-util-visit */ \"./node_modules/unist-util-visit/lib/index.js\");\n/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Definition} Definition\n */\n\n/**\n * @typedef {Root | Content} Node\n *\n * @callback GetDefinition\n *   Get a definition by identifier.\n * @param {string | null | undefined} [identifier]\n *   Identifier of definition.\n * @returns {Definition | null}\n *   Definition corresponding to `identifier` or `null`.\n */\n\n\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find definitions in `tree`.\n *\n * Uses CommonMark precedence, which means that earlier definitions are\n * preferred over duplicate later definitions.\n *\n * @param {Node} tree\n *   Tree to check.\n * @returns {GetDefinition}\n *   Getter.\n */\nfunction definitions(tree) {\n  /** @type {Record<string, Definition>} */\n  const cache = Object.create(null)\n\n  if (!tree || !tree.type) {\n    throw new Error('mdast-util-definitions expected node')\n  }\n\n  (0,unist_util_visit__WEBPACK_IMPORTED_MODULE_0__.visit)(tree, 'definition', (definition) => {\n    const id = clean(definition.identifier)\n    if (id && !own.call(cache, id)) {\n      cache[id] = definition\n    }\n  })\n\n  return definition\n\n  /** @type {GetDefinition} */\n  function definition(identifier) {\n    const id = clean(identifier)\n    // To do: next major: return `undefined` when not found.\n    return id && own.call(cache, id) ? cache[id] : null\n  }\n}\n\n/**\n * @param {string | null | undefined} [value]\n * @returns {string}\n */\nfunction clean(value) {\n  return String(value || '').toUpperCase()\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-definitions/lib/index.js?");

/***/ }),

/***/ "./node_modules/mdast-util-find-and-replace/lib/index.js":
/*!***************************************************************!*\
  !*** ./node_modules/mdast-util-find-and-replace/lib/index.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"findAndReplace\": function() { return /* binding */ findAndReplace; }\n/* harmony export */ });\n/* harmony import */ var escape_string_regexp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! escape-string-regexp */ \"./node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js\");\n/* harmony import */ var unist_util_visit_parents__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! unist-util-visit-parents */ \"./node_modules/unist-util-visit-parents/lib/index.js\");\n/* harmony import */ var unist_util_is__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! unist-util-is */ \"./node_modules/unist-util-is/lib/index.js\");\n/**\n * @typedef {import('mdast').Parent} MdastParent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Text} Text\n * @typedef {import('unist-util-visit-parents').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Content | Root} Node\n * @typedef {Extract<Node, MdastParent>} Parent\n * @typedef {Exclude<Parent, Root>} ContentParent\n *\n * @typedef RegExpMatchObject\n *   Info on the match.\n * @property {number} index\n *   The index of the search at which the result was found.\n * @property {string} input\n *   A copy of the search string in the text node.\n * @property {[Root, ...Array<ContentParent>, Text]} stack\n *   All ancestors of the text node, where the last node is the text itself.\n *\n * @callback ReplaceFunction\n *   Callback called when a search matches.\n * @param {...any} parameters\n *   The parameters are the result of corresponding search expression:\n *\n *   * `value` (`string`) — whole match\n *   * `...capture` (`Array<string>`) — matches from regex capture groups\n *   * `match` (`RegExpMatchObject`) — info on the match\n * @returns {Array<PhrasingContent> | PhrasingContent | string | false | undefined | null}\n *   Thing to replace with.\n *\n *   * when `null`, `undefined`, `''`, remove the match\n *   * …or when `false`, do not replace at all\n *   * …or when `string`, replace with a text node of that value\n *   * …or when `Node` or `Array<Node>`, replace with those nodes\n *\n * @typedef {string | RegExp} Find\n *   Pattern to find.\n *\n *   Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array<FindAndReplaceTuple>} FindAndReplaceList\n *   Several find and replaces, in array form.\n * @typedef {Record<string, Replace>} FindAndReplaceSchema\n *   Several find and replaces, in object form.\n * @typedef {[Find, Replace]} FindAndReplaceTuple\n *   Find and replace in tuple form.\n * @typedef {string | ReplaceFunction} Replace\n *   Thing to replace with.\n * @typedef {[RegExp, ReplaceFunction]} Pair\n *   Normalized find and replace.\n * @typedef {Array<Pair>} Pairs\n *   All find and replaced.\n *\n * @typedef Options\n *   Configuration.\n * @property {Test | null | undefined} [ignore]\n *   Test for which nodes to ignore.\n */\n\n\n\n\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param tree\n *   Tree to change.\n * @param find\n *   Patterns to find.\n * @param replace\n *   Things to replace with (when `find` is `Find`) or configuration.\n * @param options\n *   Configuration (when `find` is not `Find`).\n * @returns\n *   Given, modified, tree.\n */\n// To do: next major: remove `find` & `replace` combo, remove schema.\nconst findAndReplace =\n  /**\n   * @type {(\n   *   (<Tree extends Node>(tree: Tree, find: Find, replace?: Replace | null | undefined, options?: Options | null | undefined) => Tree) &\n   *   (<Tree extends Node>(tree: Tree, schema: FindAndReplaceSchema | FindAndReplaceList, options?: Options | null | undefined) => Tree)\n   * )}\n   **/\n  (\n    /**\n     * @template {Node} Tree\n     * @param {Tree} tree\n     * @param {Find | FindAndReplaceSchema | FindAndReplaceList} find\n     * @param {Replace | Options | null | undefined} [replace]\n     * @param {Options | null | undefined} [options]\n     * @returns {Tree}\n     */\n    function (tree, find, replace, options) {\n      /** @type {Options | null | undefined} */\n      let settings\n      /** @type {FindAndReplaceSchema|FindAndReplaceList} */\n      let schema\n\n      if (typeof find === 'string' || find instanceof RegExp) {\n        // @ts-expect-error don’t expect options twice.\n        schema = [[find, replace]]\n        settings = options\n      } else {\n        schema = find\n        // @ts-expect-error don’t expect replace twice.\n        settings = replace\n      }\n\n      if (!settings) {\n        settings = {}\n      }\n\n      const ignored = (0,unist_util_is__WEBPACK_IMPORTED_MODULE_1__.convert)(settings.ignore || [])\n      const pairs = toPairs(schema)\n      let pairIndex = -1\n\n      while (++pairIndex < pairs.length) {\n        (0,unist_util_visit_parents__WEBPACK_IMPORTED_MODULE_2__.visitParents)(tree, 'text', visitor)\n      }\n\n      // To do next major: don’t return the given tree.\n      return tree\n\n      /** @type {import('unist-util-visit-parents/complex-types.js').BuildVisitor<Root, 'text'>} */\n      function visitor(node, parents) {\n        let index = -1\n        /** @type {Parent | undefined} */\n        let grandparent\n\n        while (++index < parents.length) {\n          const parent = parents[index]\n\n          if (\n            ignored(\n              parent,\n              // @ts-expect-error: TS doesn’t understand but it’s perfect.\n              grandparent ? grandparent.children.indexOf(parent) : undefined,\n              grandparent\n            )\n          ) {\n            return\n          }\n\n          grandparent = parent\n        }\n\n        if (grandparent) {\n          return handler(node, parents)\n        }\n      }\n\n      /**\n       * Handle a text node which is not in an ignored parent.\n       *\n       * @param {Text} node\n       *   Text node.\n       * @param {Array<Parent>} parents\n       *   Parents.\n       * @returns {VisitorResult}\n       *   Result.\n       */\n      function handler(node, parents) {\n        const parent = parents[parents.length - 1]\n        const find = pairs[pairIndex][0]\n        const replace = pairs[pairIndex][1]\n        let start = 0\n        // @ts-expect-error: TS is wrong, some of these children can be text.\n        const index = parent.children.indexOf(node)\n        let change = false\n        /** @type {Array<PhrasingContent>} */\n        let nodes = []\n\n        find.lastIndex = 0\n\n        let match = find.exec(node.value)\n\n        while (match) {\n          const position = match.index\n          /** @type {RegExpMatchObject} */\n          const matchObject = {\n            index: match.index,\n            input: match.input,\n            // @ts-expect-error: stack is fine.\n            stack: [...parents, node]\n          }\n          let value = replace(...match, matchObject)\n\n          if (typeof value === 'string') {\n            value = value.length > 0 ? {type: 'text', value} : undefined\n          }\n\n          // It wasn’t a match after all.\n          if (value !== false) {\n            if (start !== position) {\n              nodes.push({\n                type: 'text',\n                value: node.value.slice(start, position)\n              })\n            }\n\n            if (Array.isArray(value)) {\n              nodes.push(...value)\n            } else if (value) {\n              nodes.push(value)\n            }\n\n            start = position + match[0].length\n            change = true\n          }\n\n          if (!find.global) {\n            break\n          }\n\n          match = find.exec(node.value)\n        }\n\n        if (change) {\n          if (start < node.value.length) {\n            nodes.push({type: 'text', value: node.value.slice(start)})\n          }\n\n          parent.children.splice(index, 1, ...nodes)\n        } else {\n          nodes = [node]\n        }\n\n        return index + nodes.length\n      }\n    }\n  )\n\n/**\n * Turn a schema into pairs.\n *\n * @param {FindAndReplaceSchema | FindAndReplaceList} schema\n *   Schema.\n * @returns {Pairs}\n *   Clean pairs.\n */\nfunction toPairs(schema) {\n  /** @type {Pairs} */\n  const result = []\n\n  if (typeof schema !== 'object') {\n    throw new TypeError('Expected array or object as schema')\n  }\n\n  if (Array.isArray(schema)) {\n    let index = -1\n\n    while (++index < schema.length) {\n      result.push([\n        toExpression(schema[index][0]),\n        toFunction(schema[index][1])\n      ])\n    }\n  } else {\n    /** @type {string} */\n    let key\n\n    for (key in schema) {\n      if (own.call(schema, key)) {\n        result.push([toExpression(key), toFunction(schema[key])])\n      }\n    }\n  }\n\n  return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n *   Find.\n * @returns {RegExp}\n *   Expression.\n */\nfunction toExpression(find) {\n  return typeof find === 'string' ? new RegExp((0,escape_string_regexp__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n *   Replace.\n * @returns {ReplaceFunction}\n *   Function.\n */\nfunction toFunction(replace) {\n  return typeof replace === 'function' ? replace : () => replace\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-find-and-replace/lib/index.js?");

/***/ }),

/***/ "./node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js ***!
  \*********************************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ escapeStringRegexp; }\n/* harmony export */ });\nfunction escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js?");

/***/ }),

/***/ "./node_modules/mdast-util-from-markdown/dev/lib/index.js":
/*!****************************************************************!*\
  !*** ./node_modules/mdast-util-from-markdown/dev/lib/index.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"fromMarkdown\": function() { return /* binding */ fromMarkdown; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var mdast_util_to_string__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! mdast-util-to-string */ \"./node_modules/mdast-util-to-string/lib/index.js\");\n/* harmony import */ var micromark_lib_parse_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark/lib/parse.js */ \"./node_modules/micromark/dev/lib/parse.js\");\n/* harmony import */ var micromark_lib_preprocess_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark/lib/preprocess.js */ \"./node_modules/micromark/dev/lib/preprocess.js\");\n/* harmony import */ var micromark_lib_postprocess_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark/lib/postprocess.js */ \"./node_modules/micromark/dev/lib/postprocess.js\");\n/* harmony import */ var micromark_util_decode_numeric_character_reference__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! micromark-util-decode-numeric-character-reference */ \"./node_modules/micromark-util-decode-numeric-character-reference/dev/index.js\");\n/* harmony import */ var micromark_util_decode_string__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! micromark-util-decode-string */ \"./node_modules/micromark-util-decode-string/dev/index.js\");\n/* harmony import */ var micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-util-normalize-identifier */ \"./node_modules/micromark-util-normalize-identifier/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var decode_named_character_reference__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! decode-named-character-reference */ \"./node_modules/decode-named-character-reference/index.dom.js\");\n/* harmony import */ var unist_util_stringify_position__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! unist-util-stringify-position */ \"./node_modules/unist-util-stringify-position/lib/index.js\");\n/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').StaticPhrasingContent} StaticPhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Root | Content} Node\n * @typedef {Extract<Node, UnistParent>} Parent\n *\n * @typedef {Omit<UnistParent, 'type' | 'children'> & {type: 'fragment', children: Array<PhrasingContent>}} Fragment\n */\n\n/**\n * @callback Transform\n *   Extra transform, to change the AST afterwards.\n * @param {Root} tree\n *   Tree to transform.\n * @returns {Root | undefined | null | void}\n *   New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n *   Handle a token.\n * @param {CompileContext} this\n *   Context.\n * @param {Token} token\n *   Current token.\n * @returns {void}\n *   Nothing.\n *\n * @typedef {Record<string, Handle>} Handles\n *   Token types mapping to handles\n *\n * @callback OnEnterError\n *   Handle the case where the `right` token is open, but it is closed (by the\n *   `left` token) or because we reached the end of the document.\n * @param {Omit<CompileContext, 'sliceSerialize'>} this\n *   Context.\n * @param {Token | undefined} left\n *   Left token.\n * @param {Token} right\n *   Right token.\n * @returns {void}\n *   Nothing.\n *\n * @callback OnExitError\n *   Handle the case where the `right` token is open but it is closed by\n *   exiting the `left` token.\n * @param {Omit<CompileContext, 'sliceSerialize'>} this\n *   Context.\n * @param {Token} left\n *   Left token.\n * @param {Token} right\n *   Right token.\n * @returns {void}\n *   Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n *   Open token on the stack, with an optional error handler for when\n *   that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n *   Configuration.\n *\n *   We have our defaults, but extensions will add more.\n * @property {Array<string>} canContainEols\n *   Token types where line endings are used.\n * @property {Handles} enter\n *   Opening handles.\n * @property {Handles} exit\n *   Closing handles.\n * @property {Array<Transform>} transforms\n *   Tree transforms.\n *\n * @typedef {Partial<Config>} Extension\n *   Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n *   mdast compiler context.\n * @property {Array<Node | Fragment>} stack\n *   Stack of nodes.\n * @property {Array<TokenTuple>} tokenStack\n *   Stack of tokens.\n * @property {<Key extends keyof CompileData>(key: Key) => CompileData[Key]} getData\n *   Get data from the key/value store.\n * @property {<Key extends keyof CompileData>(key: Key, value?: CompileData[Key]) => void} setData\n *   Set data into the key/value store.\n * @property {(this: CompileContext) => void} buffer\n *   Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n *   Stop capturing and access the output data.\n * @property {<Kind extends Node>(this: CompileContext, node: Kind, token: Token, onError?: OnEnterError) => Kind} enter\n *   Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n *   Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n *   Get the string value of a token.\n * @property {Config} config\n *   Configuration.\n *\n * @typedef FromMarkdownOptions\n *   Configuration for how to build mdast.\n * @property {Array<Extension | Array<Extension>> | null | undefined} [mdastExtensions]\n *   Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n *   Configuration.\n */\n\n// To do: micromark: create a registry of tokens?\n// To do: next major: don’t return given `Node` from `enter`.\n// To do: next major: remove setter/getter.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param value\n *   Markdown to parse.\n * @param encoding\n *   Character encoding for when `value` is `Buffer`.\n * @param options\n *   Configuration.\n * @returns\n *   mdast tree.\n */\nconst fromMarkdown =\n  /**\n   * @type {(\n   *   ((value: Value, encoding: Encoding, options?: Options | null | undefined) => Root) &\n   *   ((value: Value, options?: Options | null | undefined) => Root)\n   * )}\n   */\n  (\n    /**\n     * @param {Value} value\n     * @param {Encoding | Options | null | undefined} [encoding]\n     * @param {Options | null | undefined} [options]\n     * @returns {Root}\n     */\n    function (value, encoding, options) {\n      if (typeof encoding !== 'string') {\n        options = encoding\n        encoding = undefined\n      }\n\n      return compiler(options)(\n        (0,micromark_lib_postprocess_js__WEBPACK_IMPORTED_MODULE_1__.postprocess)(\n          // @ts-expect-error: micromark types need to accept `null`.\n          (0,micromark_lib_parse_js__WEBPACK_IMPORTED_MODULE_2__.parse)(options).document().write((0,micromark_lib_preprocess_js__WEBPACK_IMPORTED_MODULE_3__.preprocess)()(value, encoding, true))\n        )\n      )\n    }\n  )\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n  /** @type {Config} */\n  const config = {\n    transforms: [],\n    canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n    enter: {\n      autolink: opener(link),\n      autolinkProtocol: onenterdata,\n      autolinkEmail: onenterdata,\n      atxHeading: opener(heading),\n      blockQuote: opener(blockQuote),\n      characterEscape: onenterdata,\n      characterReference: onenterdata,\n      codeFenced: opener(codeFlow),\n      codeFencedFenceInfo: buffer,\n      codeFencedFenceMeta: buffer,\n      codeIndented: opener(codeFlow, buffer),\n      codeText: opener(codeText, buffer),\n      codeTextData: onenterdata,\n      data: onenterdata,\n      codeFlowValue: onenterdata,\n      definition: opener(definition),\n      definitionDestinationString: buffer,\n      definitionLabelString: buffer,\n      definitionTitleString: buffer,\n      emphasis: opener(emphasis),\n      hardBreakEscape: opener(hardBreak),\n      hardBreakTrailing: opener(hardBreak),\n      htmlFlow: opener(html, buffer),\n      htmlFlowData: onenterdata,\n      htmlText: opener(html, buffer),\n      htmlTextData: onenterdata,\n      image: opener(image),\n      label: buffer,\n      link: opener(link),\n      listItem: opener(listItem),\n      listItemValue: onenterlistitemvalue,\n      listOrdered: opener(list, onenterlistordered),\n      listUnordered: opener(list),\n      paragraph: opener(paragraph),\n      reference: onenterreference,\n      referenceString: buffer,\n      resourceDestinationString: buffer,\n      resourceTitleString: buffer,\n      setextHeading: opener(heading),\n      strong: opener(strong),\n      thematicBreak: opener(thematicBreak)\n    },\n    exit: {\n      atxHeading: closer(),\n      atxHeadingSequence: onexitatxheadingsequence,\n      autolink: closer(),\n      autolinkEmail: onexitautolinkemail,\n      autolinkProtocol: onexitautolinkprotocol,\n      blockQuote: closer(),\n      characterEscapeValue: onexitdata,\n      characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n      characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n      characterReferenceValue: onexitcharacterreferencevalue,\n      codeFenced: closer(onexitcodefenced),\n      codeFencedFence: onexitcodefencedfence,\n      codeFencedFenceInfo: onexitcodefencedfenceinfo,\n      codeFencedFenceMeta: onexitcodefencedfencemeta,\n      codeFlowValue: onexitdata,\n      codeIndented: closer(onexitcodeindented),\n      codeText: closer(onexitcodetext),\n      codeTextData: onexitdata,\n      data: onexitdata,\n      definition: closer(),\n      definitionDestinationString: onexitdefinitiondestinationstring,\n      definitionLabelString: onexitdefinitionlabelstring,\n      definitionTitleString: onexitdefinitiontitlestring,\n      emphasis: closer(),\n      hardBreakEscape: closer(onexithardbreak),\n      hardBreakTrailing: closer(onexithardbreak),\n      htmlFlow: closer(onexithtmlflow),\n      htmlFlowData: onexitdata,\n      htmlText: closer(onexithtmltext),\n      htmlTextData: onexitdata,\n      image: closer(onexitimage),\n      label: onexitlabel,\n      labelText: onexitlabeltext,\n      lineEnding: onexitlineending,\n      link: closer(onexitlink),\n      listItem: closer(),\n      listOrdered: closer(),\n      listUnordered: closer(),\n      paragraph: closer(),\n      referenceString: onexitreferencestring,\n      resourceDestinationString: onexitresourcedestinationstring,\n      resourceTitleString: onexitresourcetitlestring,\n      resource: onexitresource,\n      setextHeading: closer(onexitsetextheading),\n      setextHeadingLineSequence: onexitsetextheadinglinesequence,\n      setextHeadingText: onexitsetextheadingtext,\n      strong: closer(),\n      thematicBreak: closer()\n    }\n  }\n\n  configure(config, (options || {}).mdastExtensions || [])\n\n  /** @type {CompileData} */\n  const data = {}\n\n  return compile\n\n  /**\n   * Turn micromark events into an mdast tree.\n   *\n   * @param {Array<Event>} events\n   *   Events.\n   * @returns {Root}\n   *   mdast tree.\n   */\n  function compile(events) {\n    /** @type {Root} */\n    let tree = {type: 'root', children: []}\n    /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n    const context = {\n      stack: [tree],\n      tokenStack: [],\n      config,\n      enter,\n      exit,\n      buffer,\n      resume,\n      setData,\n      getData\n    }\n    /** @type {Array<number>} */\n    const listStack = []\n    let index = -1\n\n    while (++index < events.length) {\n      // We preprocess lists to add `listItem` tokens, and to infer whether\n      // items the list itself are spread out.\n      if (\n        events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listOrdered ||\n        events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listUnordered\n      ) {\n        if (events[index][0] === 'enter') {\n          listStack.push(index)\n        } else {\n          const tail = listStack.pop()\n          ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof tail === 'number', 'expected list ot be open')\n          index = prepareList(events, tail, index)\n        }\n      }\n    }\n\n    index = -1\n\n    while (++index < events.length) {\n      const handler = config[events[index][0]]\n\n      if (own.call(handler, events[index][1].type)) {\n        handler[events[index][1].type].call(\n          Object.assign(\n            {sliceSerialize: events[index][2].sliceSerialize},\n            context\n          ),\n          events[index][1]\n        )\n      }\n    }\n\n    // Handle tokens still being open.\n    if (context.tokenStack.length > 0) {\n      const tail = context.tokenStack[context.tokenStack.length - 1]\n      const handler = tail[1] || defaultOnError\n      handler.call(context, undefined, tail[0])\n    }\n\n    // Figure out `root` position.\n    tree.position = {\n      start: point(\n        events.length > 0 ? events[0][1].start : {line: 1, column: 1, offset: 0}\n      ),\n      end: point(\n        events.length > 0\n          ? events[events.length - 2][1].end\n          : {line: 1, column: 1, offset: 0}\n      )\n    }\n\n    // Call transforms.\n    index = -1\n    while (++index < config.transforms.length) {\n      tree = config.transforms[index](tree) || tree\n    }\n\n    return tree\n  }\n\n  /**\n   * @param {Array<Event>} events\n   * @param {number} start\n   * @param {number} length\n   * @returns {number}\n   */\n  function prepareList(events, start, length) {\n    let index = start - 1\n    let containerBalance = -1\n    let listSpread = false\n    /** @type {Token | undefined} */\n    let listItem\n    /** @type {number | undefined} */\n    let lineIndex\n    /** @type {number | undefined} */\n    let firstBlankLineIndex\n    /** @type {boolean | undefined} */\n    let atMarker\n\n    while (++index <= length) {\n      const event = events[index]\n\n      if (\n        event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listUnordered ||\n        event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listOrdered ||\n        event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.blockQuote\n      ) {\n        if (event[0] === 'enter') {\n          containerBalance++\n        } else {\n          containerBalance--\n        }\n\n        atMarker = undefined\n      } else if (event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank) {\n        if (event[0] === 'enter') {\n          if (\n            listItem &&\n            !atMarker &&\n            !containerBalance &&\n            !firstBlankLineIndex\n          ) {\n            firstBlankLineIndex = index\n          }\n\n          atMarker = undefined\n        }\n      } else if (\n        event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix ||\n        event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemValue ||\n        event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemMarker ||\n        event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemPrefix ||\n        event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemPrefixWhitespace\n      ) {\n        // Empty.\n      } else {\n        atMarker = undefined\n      }\n\n      if (\n        (!containerBalance &&\n          event[0] === 'enter' &&\n          event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemPrefix) ||\n        (containerBalance === -1 &&\n          event[0] === 'exit' &&\n          (event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listUnordered ||\n            event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listOrdered))\n      ) {\n        if (listItem) {\n          let tailIndex = index\n          lineIndex = undefined\n\n          while (tailIndex--) {\n            const tailEvent = events[tailIndex]\n\n            if (\n              tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding ||\n              tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank\n            ) {\n              if (tailEvent[0] === 'exit') continue\n\n              if (lineIndex) {\n                events[lineIndex][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank\n                listSpread = true\n              }\n\n              tailEvent[1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding\n              lineIndex = tailIndex\n            } else if (\n              tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix ||\n              tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.blockQuotePrefix ||\n              tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.blockQuotePrefixWhitespace ||\n              tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.blockQuoteMarker ||\n              tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemIndent\n            ) {\n              // Empty\n            } else {\n              break\n            }\n          }\n\n          if (\n            firstBlankLineIndex &&\n            (!lineIndex || firstBlankLineIndex < lineIndex)\n          ) {\n            // @ts-expect-error Patched.\n            listItem._spread = true\n          }\n\n          // Fix position.\n          listItem.end = Object.assign(\n            {},\n            lineIndex ? events[lineIndex][1].start : event[1].end\n          )\n\n          events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n          index++\n          length++\n        }\n\n        // Create a new list item.\n        if (event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemPrefix) {\n          listItem = {\n            type: 'listItem',\n            // @ts-expect-error Patched\n            _spread: false,\n            start: Object.assign({}, event[1].start)\n          }\n          // @ts-expect-error: `listItem` is most definitely defined, TS...\n          events.splice(index, 0, ['enter', listItem, event[2]])\n          index++\n          length++\n          firstBlankLineIndex = undefined\n          atMarker = true\n        }\n      }\n    }\n\n    // @ts-expect-error Patched.\n    events[start][1]._spread = listSpread\n    return length\n  }\n\n  /**\n   * Set data.\n   *\n   * @template {keyof CompileData} Key\n   *   Field type.\n   * @param {Key} key\n   *   Key of field.\n   * @param {CompileData[Key]} [value]\n   *   New value.\n   * @returns {void}\n   *   Nothing.\n   */\n  function setData(key, value) {\n    data[key] = value\n  }\n\n  /**\n   * Get data.\n   *\n   * @template {keyof CompileData} Key\n   *   Field type.\n   * @param {Key} key\n   *   Key of field.\n   * @returns {CompileData[Key]}\n   *   Value.\n   */\n  function getData(key) {\n    return data[key]\n  }\n\n  /**\n   * Create an opener handle.\n   *\n   * @param {(token: Token) => Node} create\n   *   Create a node.\n   * @param {Handle} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function opener(create, and) {\n    return open\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {void}\n     */\n    function open(token) {\n      enter.call(this, create(token), token)\n      if (and) and.call(this, token)\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @returns {void}\n   */\n  function buffer() {\n    this.stack.push({type: 'fragment', children: []})\n  }\n\n  /**\n   * @template {Node} Kind\n   *   Node type.\n   * @this {CompileContext}\n   *   Context.\n   * @param {Kind} node\n   *   Node to enter.\n   * @param {Token} token\n   *   Corresponding token.\n   * @param {OnEnterError | undefined} [errorHandler]\n   *   Handle the case where this token is open, but it is closed by something else.\n   * @returns {Kind}\n   *   The given node.\n   */\n  function enter(node, token, errorHandler) {\n    const parent = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(parent, 'expected `parent`')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)('children' in parent, 'expected `parent`')\n    // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n    parent.children.push(node)\n    this.stack.push(node)\n    this.tokenStack.push([token, errorHandler])\n    // @ts-expect-error: `end` will be patched later.\n    node.position = {start: point(token.start)}\n    return node\n  }\n\n  /**\n   * Create a closer handle.\n   *\n   * @param {Handle} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function closer(and) {\n    return close\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {void}\n     */\n    function close(token) {\n      if (and) and.call(this, token)\n      exit.call(this, token)\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   *   Context.\n   * @param {Token} token\n   *   Corresponding token.\n   * @param {OnExitError | undefined} [onExitError]\n   *   Handle the case where another token is open.\n   * @returns {Node}\n   *   The closed node.\n   */\n  function exit(token, onExitError) {\n    const node = this.stack.pop()\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected `node`')\n    const open = this.tokenStack.pop()\n\n    if (!open) {\n      throw new Error(\n        'Cannot close `' +\n          token.type +\n          '` (' +\n          (0,unist_util_stringify_position__WEBPACK_IMPORTED_MODULE_5__.stringifyPosition)({start: token.start, end: token.end}) +\n          '): it’s not open'\n      )\n    } else if (open[0].type !== token.type) {\n      if (onExitError) {\n        onExitError.call(this, token, open[0])\n      } else {\n        const handler = open[1] || defaultOnError\n        handler.call(this, token, open[0])\n      }\n    }\n\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type !== 'fragment', 'unexpected fragment `exit`ed')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.position, 'expected `position` to be defined')\n    node.position.end = point(token.end)\n    return node\n  }\n\n  /**\n   * @this {CompileContext}\n   * @returns {string}\n   */\n  function resume() {\n    return (0,mdast_util_to_string__WEBPACK_IMPORTED_MODULE_6__.toString)(this.stack.pop())\n  }\n\n  //\n  // Handlers.\n  //\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistordered() {\n    setData('expectingFirstListItemValue', true)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistitemvalue(token) {\n    if (getData('expectingFirstListItemValue')) {\n      const ancestor = this.stack[this.stack.length - 2]\n      ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(ancestor, 'expected nodes on stack')\n      ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(ancestor.type === 'list', 'expected list on stack')\n      ancestor.start = Number.parseInt(\n        this.sliceSerialize(token),\n        micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_7__.constants.numericBaseDecimal\n      )\n      setData('expectingFirstListItemValue')\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfenceinfo() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'code', 'expected code on stack')\n    node.lang = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfencemeta() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'code', 'expected code on stack')\n    node.meta = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfence() {\n    // Exit if this is the closing fence.\n    if (getData('flowCodeInside')) return\n    this.buffer()\n    setData('flowCodeInside', true)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefenced() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'code', 'expected code on stack')\n\n    node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n    setData('flowCodeInside')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodeindented() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'code', 'expected code on stack')\n\n    node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitionlabelstring(token) {\n    const label = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'definition', 'expected definition on stack')\n\n    node.label = label\n    node.identifier = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_8__.normalizeIdentifier)(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiontitlestring() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'definition', 'expected definition on stack')\n\n    node.title = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiondestinationstring() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'definition', 'expected definition on stack')\n\n    node.url = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitatxheadingsequence(token) {\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'heading', 'expected heading on stack')\n\n    if (!node.depth) {\n      const depth = this.sliceSerialize(token).length\n\n      ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n        depth === 1 ||\n          depth === 2 ||\n          depth === 3 ||\n          depth === 4 ||\n          depth === 5 ||\n          depth === 6,\n        'expected `depth` between `1` and `6`'\n      )\n\n      node.depth = depth\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadingtext() {\n    setData('setextHeadingSlurpLineEnding', true)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadinglinesequence(token) {\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'heading', 'expected heading on stack')\n\n    node.depth =\n      this.sliceSerialize(token).charCodeAt(0) === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_9__.codes.equalsTo ? 1 : 2\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheading() {\n    setData('setextHeadingSlurpLineEnding')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterdata(token) {\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)('children' in node, 'expected parent on stack')\n\n    let tail = node.children[node.children.length - 1]\n\n    if (!tail || tail.type !== 'text') {\n      // Add a new text node.\n      tail = text()\n      // @ts-expect-error: we’ll add `end` later.\n      tail.position = {start: point(token.start)}\n      // @ts-expect-error: Assume `parent` accepts `text`.\n      node.children.push(tail)\n    }\n\n    this.stack.push(tail)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitdata(token) {\n    const tail = this.stack.pop()\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(tail, 'expected a `node` to be on the stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)('value' in tail, 'expected a `literal` to be on the stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(tail.position, 'expected `node` to have an open position')\n    tail.value += this.sliceSerialize(token)\n    tail.position.end = point(token.end)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlineending(token) {\n    const context = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(context, 'expected `node`')\n\n    // If we’re at a hard break, include the line ending in there.\n    if (getData('atHardBreak')) {\n      (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)('children' in context, 'expected `parent`')\n      const tail = context.children[context.children.length - 1]\n      ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(tail.position, 'expected tail to have a starting position')\n      tail.position.end = point(token.end)\n      setData('atHardBreak')\n      return\n    }\n\n    if (\n      !getData('setextHeadingSlurpLineEnding') &&\n      config.canContainEols.includes(context.type)\n    ) {\n      onenterdata.call(this, token)\n      onexitdata.call(this, token)\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithardbreak() {\n    setData('atHardBreak', true)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmlflow() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'html', 'expected html on stack')\n\n    node.value = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmltext() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'html', 'expected html on stack')\n\n    node.value = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcodetext() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'inlineCode', 'expected inline code on stack')\n\n    node.value = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlink() {\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'link', 'expected link on stack')\n\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n\n    // To do: clean.\n    if (getData('inReference')) {\n      /** @type {ReferenceType} */\n      const referenceType = getData('referenceType') || 'shortcut'\n\n      node.type += 'Reference'\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType\n      // @ts-expect-error: mutate.\n      delete node.url\n      delete node.title\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier\n      // @ts-expect-error: mutate.\n      delete node.label\n    }\n\n    setData('referenceType')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitimage() {\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'image', 'expected image on stack')\n\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n\n    // To do: clean.\n    if (getData('inReference')) {\n      /** @type {ReferenceType} */\n      const referenceType = getData('referenceType') || 'shortcut'\n\n      node.type += 'Reference'\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType\n      // @ts-expect-error: mutate.\n      delete node.url\n      delete node.title\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier\n      // @ts-expect-error: mutate.\n      delete node.label\n    }\n\n    setData('referenceType')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabeltext(token) {\n    const string = this.sliceSerialize(token)\n    const ancestor = this.stack[this.stack.length - 2]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(ancestor, 'expected ancestor on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      ancestor.type === 'image' || ancestor.type === 'link',\n      'expected image or link on stack'\n    )\n\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    ancestor.label = (0,micromark_util_decode_string__WEBPACK_IMPORTED_MODULE_10__.decodeString)(string)\n    // @ts-expect-error: same as above.\n    ancestor.identifier = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_8__.normalizeIdentifier)(string).toLowerCase()\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabel() {\n    const fragment = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(fragment, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(fragment.type === 'fragment', 'expected fragment on stack')\n    const value = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      node.type === 'image' || node.type === 'link',\n      'expected image or link on stack'\n    )\n\n    // Assume a reference.\n    setData('inReference', true)\n\n    if (node.type === 'link') {\n      /** @type {Array<StaticPhrasingContent>} */\n      // @ts-expect-error: Assume static phrasing content.\n      const children = fragment.children\n\n      node.children = children\n    } else {\n      node.alt = value\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcedestinationstring() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      node.type === 'image' || node.type === 'link',\n      'expected image or link on stack'\n    )\n    node.url = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcetitlestring() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      node.type === 'image' || node.type === 'link',\n      'expected image or link on stack'\n    )\n    node.title = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresource() {\n    setData('inReference')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterreference() {\n    setData('referenceType', 'collapsed')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitreferencestring(token) {\n    const label = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      node.type === 'image' || node.type === 'link',\n      'expected image reference or link reference on stack'\n    )\n\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    node.label = label\n    // @ts-expect-error: same as above.\n    node.identifier = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_8__.normalizeIdentifier)(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n    setData('referenceType', 'full')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcharacterreferencemarker(token) {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      token.type === 'characterReferenceMarkerNumeric' ||\n        token.type === 'characterReferenceMarkerHexadecimal'\n    )\n    setData('characterReferenceType', token.type)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcharacterreferencevalue(token) {\n    const data = this.sliceSerialize(token)\n    const type = getData('characterReferenceType')\n    /** @type {string} */\n    let value\n\n    if (type) {\n      value = (0,micromark_util_decode_numeric_character_reference__WEBPACK_IMPORTED_MODULE_11__.decodeNumericCharacterReference)(\n        data,\n        type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.characterReferenceMarkerNumeric\n          ? micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_7__.constants.numericBaseDecimal\n          : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_7__.constants.numericBaseHexadecimal\n      )\n      setData('characterReferenceType')\n    } else {\n      const result = (0,decode_named_character_reference__WEBPACK_IMPORTED_MODULE_12__.decodeNamedCharacterReference)(data)\n      ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(result !== false, 'expected reference to decode')\n      value = result\n    }\n\n    const tail = this.stack.pop()\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(tail, 'expected `node`')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(tail.position, 'expected `node.position`')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)('value' in tail, 'expected `node.value`')\n    tail.value += value\n    tail.position.end = point(token.end)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkprotocol(token) {\n    onexitdata.call(this, token)\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'link', 'expected link on stack')\n\n    node.url = this.sliceSerialize(token)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkemail(token) {\n    onexitdata.call(this, token)\n    const node = this.stack[this.stack.length - 1]\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'link', 'expected link on stack')\n\n    node.url = 'mailto:' + this.sliceSerialize(token)\n  }\n\n  //\n  // Creaters.\n  //\n\n  /** @returns {Blockquote} */\n  function blockQuote() {\n    return {type: 'blockquote', children: []}\n  }\n\n  /** @returns {Code} */\n  function codeFlow() {\n    return {type: 'code', lang: null, meta: null, value: ''}\n  }\n\n  /** @returns {InlineCode} */\n  function codeText() {\n    return {type: 'inlineCode', value: ''}\n  }\n\n  /** @returns {Definition} */\n  function definition() {\n    return {\n      type: 'definition',\n      identifier: '',\n      label: null,\n      title: null,\n      url: ''\n    }\n  }\n\n  /** @returns {Emphasis} */\n  function emphasis() {\n    return {type: 'emphasis', children: []}\n  }\n\n  /** @returns {Heading} */\n  function heading() {\n    // @ts-expect-error `depth` will be set later.\n    return {type: 'heading', depth: undefined, children: []}\n  }\n\n  /** @returns {Break} */\n  function hardBreak() {\n    return {type: 'break'}\n  }\n\n  /** @returns {HTML} */\n  function html() {\n    return {type: 'html', value: ''}\n  }\n\n  /** @returns {Image} */\n  function image() {\n    return {type: 'image', title: null, url: '', alt: null}\n  }\n\n  /** @returns {Link} */\n  function link() {\n    return {type: 'link', title: null, url: '', children: []}\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {List}\n   */\n  function list(token) {\n    return {\n      type: 'list',\n      ordered: token.type === 'listOrdered',\n      start: null,\n      // @ts-expect-error Patched.\n      spread: token._spread,\n      children: []\n    }\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {ListItem}\n   */\n  function listItem(token) {\n    return {\n      type: 'listItem',\n      // @ts-expect-error Patched.\n      spread: token._spread,\n      checked: null,\n      children: []\n    }\n  }\n\n  /** @returns {Paragraph} */\n  function paragraph() {\n    return {type: 'paragraph', children: []}\n  }\n\n  /** @returns {Strong} */\n  function strong() {\n    return {type: 'strong', children: []}\n  }\n\n  /** @returns {Text} */\n  function text() {\n    return {type: 'text', value: ''}\n  }\n\n  /** @returns {ThematicBreak} */\n  function thematicBreak() {\n    return {type: 'thematicBreak'}\n  }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n *   Point-like value.\n * @returns {Point}\n *   unist point.\n */\nfunction point(d) {\n  return {line: d.line, column: d.column, offset: d.offset}\n}\n\n/**\n * @param {Config} combined\n * @param {Array<Extension | Array<Extension>>} extensions\n * @returns {void}\n */\nfunction configure(combined, extensions) {\n  let index = -1\n\n  while (++index < extensions.length) {\n    const value = extensions[index]\n\n    if (Array.isArray(value)) {\n      configure(combined, value)\n    } else {\n      extension(combined, value)\n    }\n  }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {void}\n */\nfunction extension(combined, extension) {\n  /** @type {keyof Extension} */\n  let key\n\n  for (key in extension) {\n    if (own.call(extension, key)) {\n      if (key === 'canContainEols') {\n        const right = extension[key]\n        if (right) {\n          combined[key].push(...right)\n        }\n      } else if (key === 'transforms') {\n        const right = extension[key]\n        if (right) {\n          combined[key].push(...right)\n        }\n      } else if (key === 'enter' || key === 'exit') {\n        const right = extension[key]\n        if (right) {\n          Object.assign(combined[key], right)\n        }\n      }\n    }\n  }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n  if (left) {\n    throw new Error(\n      'Cannot close `' +\n        left.type +\n        '` (' +\n        (0,unist_util_stringify_position__WEBPACK_IMPORTED_MODULE_5__.stringifyPosition)({start: left.start, end: left.end}) +\n        '): a different token (`' +\n        right.type +\n        '`, ' +\n        (0,unist_util_stringify_position__WEBPACK_IMPORTED_MODULE_5__.stringifyPosition)({start: right.start, end: right.end}) +\n        ') is open'\n    )\n  } else {\n    throw new Error(\n      'Cannot close document, a token (`' +\n        right.type +\n        '`, ' +\n        (0,unist_util_stringify_position__WEBPACK_IMPORTED_MODULE_5__.stringifyPosition)({start: right.start, end: right.end}) +\n        ') is still open'\n    )\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-from-markdown/dev/lib/index.js?");

/***/ }),

/***/ "./node_modules/mdast-util-gfm-autolink-literal/lib/index.js":
/*!*******************************************************************!*\
  !*** ./node_modules/mdast-util-gfm-autolink-literal/lib/index.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfmAutolinkLiteralFromMarkdown\": function() { return /* binding */ gfmAutolinkLiteralFromMarkdown; },\n/* harmony export */   \"gfmAutolinkLiteralToMarkdown\": function() { return /* binding */ gfmAutolinkLiteralToMarkdown; }\n/* harmony export */ });\n/* harmony import */ var ccount__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ccount */ \"./node_modules/ccount/index.js\");\n/* harmony import */ var mdast_util_find_and_replace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mdast-util-find-and-replace */ \"./node_modules/mdast-util-find-and-replace/lib/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-from-markdown').Transform} FromMarkdownTransform\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n *\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n * @typedef {import('mdast-util-find-and-replace').RegExpMatchObject} RegExpMatchObject\n */\n\n\n\n\n\n/** @type {ConstructName} */\nconst inConstruct = 'phrasing'\n/** @type {Array<ConstructName>} */\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n// To do: next major: expose functions instead of extensions.\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM autolink literals.\n *\n * @type {FromMarkdownExtension}\n */\nconst gfmAutolinkLiteralFromMarkdown = {\n  transforms: [transformGfmAutolinkLiterals],\n  enter: {\n    literalAutolink: enterLiteralAutolink,\n    literalAutolinkEmail: enterLiteralAutolinkValue,\n    literalAutolinkHttp: enterLiteralAutolinkValue,\n    literalAutolinkWww: enterLiteralAutolinkValue\n  },\n  exit: {\n    literalAutolink: exitLiteralAutolink,\n    literalAutolinkEmail: exitLiteralAutolinkEmail,\n    literalAutolinkHttp: exitLiteralAutolinkHttp,\n    literalAutolinkWww: exitLiteralAutolinkWww\n  }\n}\n\n/**\n * Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n *\n * @type {ToMarkdownExtension}\n */\nconst gfmAutolinkLiteralToMarkdown = {\n  unsafe: [\n    {\n      character: '@',\n      before: '[+\\\\-.\\\\w]',\n      after: '[\\\\-.\\\\w]',\n      inConstruct,\n      notInConstruct\n    },\n    {\n      character: '.',\n      before: '[Ww]',\n      after: '[\\\\-.\\\\w]',\n      inConstruct,\n      notInConstruct\n    },\n    {character: ':', before: '[ps]', after: '\\\\/', inConstruct, notInConstruct}\n  ]\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolink(token) {\n  this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolinkValue(token) {\n  this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkHttp(token) {\n  this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkWww(token) {\n  this.config.exit.data.call(this, token)\n  const node = /** @type {Link} */ (this.stack[this.stack.length - 1])\n  node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkEmail(token) {\n  this.config.exit.autolinkEmail.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolink(token) {\n  this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n  (0,mdast_util_find_and_replace__WEBPACK_IMPORTED_MODULE_0__.findAndReplace)(\n    tree,\n    [\n      [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n      [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/g, findEmail]\n    ],\n    {ignore: ['link', 'linkReference']}\n  )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n * @returns {Link | Array<PhrasingContent> | false}\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n  let prefix = ''\n\n  // Not an expected previous character.\n  if (!previous(match)) {\n    return false\n  }\n\n  // Treat `www` as part of the domain.\n  if (/^w/i.test(protocol)) {\n    domain = protocol + domain\n    protocol = ''\n    prefix = 'http://'\n  }\n\n  if (!isCorrectDomain(domain)) {\n    return false\n  }\n\n  const parts = splitUrl(domain + path)\n\n  if (!parts[0]) return false\n\n  /** @type {Link} */\n  const result = {\n    type: 'link',\n    title: null,\n    url: prefix + protocol + parts[0],\n    children: [{type: 'text', value: protocol + parts[0]}]\n  }\n\n  if (parts[1]) {\n    return [result, {type: 'text', value: parts[1]}]\n  }\n\n  return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n * @returns {Link | false}\n */\nfunction findEmail(_, atext, label, match) {\n  if (\n    // Not an expected previous character.\n    !previous(match, true) ||\n    // Label ends in not allowed character.\n    /[-\\d_]$/.test(label)\n  ) {\n    return false\n  }\n\n  return {\n    type: 'link',\n    title: null,\n    url: 'mailto:' + atext + '@' + label,\n    children: [{type: 'text', value: atext + '@' + label}]\n  }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n  const parts = domain.split('.')\n\n  if (\n    parts.length < 2 ||\n    (parts[parts.length - 1] &&\n      (/_/.test(parts[parts.length - 1]) ||\n        !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n    (parts[parts.length - 2] &&\n      (/_/.test(parts[parts.length - 2]) ||\n        !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n  ) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string | undefined]}\n */\nfunction splitUrl(url) {\n  const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n\n  if (!trailExec) {\n    return [url, undefined]\n  }\n\n  url = url.slice(0, trailExec.index)\n\n  let trail = trailExec[0]\n  let closingParenIndex = trail.indexOf(')')\n  const openingParens = (0,ccount__WEBPACK_IMPORTED_MODULE_1__.ccount)(url, '(')\n  let closingParens = (0,ccount__WEBPACK_IMPORTED_MODULE_1__.ccount)(url, ')')\n\n  while (closingParenIndex !== -1 && openingParens > closingParens) {\n    url += trail.slice(0, closingParenIndex + 1)\n    trail = trail.slice(closingParenIndex + 1)\n    closingParenIndex = trail.indexOf(')')\n    closingParens++\n  }\n\n  return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean | null | undefined} [email=false]\n * @returns {boolean}\n */\nfunction previous(match, email) {\n  const code = match.input.charCodeAt(match.index - 1)\n\n  return (\n    (match.index === 0 ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.unicodeWhitespace)(code) ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.unicodePunctuation)(code)) &&\n    (!email || code !== 47)\n  )\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-gfm-autolink-literal/lib/index.js?");

/***/ }),

/***/ "./node_modules/mdast-util-gfm-footnote/lib/index.js":
/*!***********************************************************!*\
  !*** ./node_modules/mdast-util-gfm-footnote/lib/index.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfmFootnoteFromMarkdown\": function() { return /* binding */ gfmFootnoteFromMarkdown; },\n/* harmony export */   \"gfmFootnoteToMarkdown\": function() { return /* binding */ gfmFootnoteToMarkdown; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-normalize-identifier */ \"./node_modules/micromark-util-normalize-identifier/dev/index.js\");\n/* harmony import */ var mdast_util_to_markdown_lib_util_association_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! mdast-util-to-markdown/lib/util/association.js */ \"./node_modules/mdast-util-to-markdown/lib/util/association.js\");\n/* harmony import */ var mdast_util_to_markdown_lib_util_container_flow_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! mdast-util-to-markdown/lib/util/container-flow.js */ \"./node_modules/mdast-util-to-markdown/lib/util/container-flow.js\");\n/* harmony import */ var mdast_util_to_markdown_lib_util_indent_lines_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! mdast-util-to-markdown/lib/util/indent-lines.js */ \"./node_modules/mdast-util-to-markdown/lib/util/indent-lines.js\");\n/* harmony import */ var mdast_util_to_markdown_lib_util_safe_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! mdast-util-to-markdown/lib/util/safe.js */ \"./node_modules/mdast-util-to-markdown/lib/util/safe.js\");\n/* harmony import */ var mdast_util_to_markdown_lib_util_track_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mdast-util-to-markdown/lib/util/track.js */ \"./node_modules/mdast-util-to-markdown/lib/util/track.js\");\n/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Map} Map\n */\n\n\n\n\n\n\n\n\nfootnoteReference.peek = footnoteReferencePeek\n\n// To do: next major: rename `context` -> `state`, `safeOptions` to `info`, use\n// utilities on `state`.\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown`.\n */\nfunction gfmFootnoteFromMarkdown() {\n  return {\n    enter: {\n      gfmFootnoteDefinition: enterFootnoteDefinition,\n      gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n      gfmFootnoteCall: enterFootnoteCall,\n      gfmFootnoteCallString: enterFootnoteCallString\n    },\n    exit: {\n      gfmFootnoteDefinition: exitFootnoteDefinition,\n      gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n      gfmFootnoteCall: exitFootnoteCall,\n      gfmFootnoteCallString: exitFootnoteCallString\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown`.\n */\nfunction gfmFootnoteToMarkdown() {\n  return {\n    // This is on by default already.\n    unsafe: [{character: '[', inConstruct: ['phrasing', 'label', 'reference']}],\n    handlers: {footnoteDefinition, footnoteReference}\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinition(token) {\n  this.enter(\n    {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n    token\n  )\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinitionLabelString() {\n  this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinitionLabelString(token) {\n  const label = this.resume()\n  const node = /** @type {FootnoteDefinition} */ (\n    this.stack[this.stack.length - 1]\n  )\n  node.label = label\n  node.identifier = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_0__.normalizeIdentifier)(\n    this.sliceSerialize(token)\n  ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinition(token) {\n  this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCall(token) {\n  this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCallString() {\n  this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCallString(token) {\n  const label = this.resume()\n  const node = /** @type {FootnoteDefinition} */ (\n    this.stack[this.stack.length - 1]\n  )\n  node.label = label\n  node.identifier = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_0__.normalizeIdentifier)(\n    this.sliceSerialize(token)\n  ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCall(token) {\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\nfunction footnoteReference(node, _, context, safeOptions) {\n  const tracker = (0,mdast_util_to_markdown_lib_util_track_js__WEBPACK_IMPORTED_MODULE_1__.track)(safeOptions)\n  let value = tracker.move('[^')\n  const exit = context.enter('footnoteReference')\n  const subexit = context.enter('reference')\n  value += tracker.move(\n    (0,mdast_util_to_markdown_lib_util_safe_js__WEBPACK_IMPORTED_MODULE_2__.safe)(context, (0,mdast_util_to_markdown_lib_util_association_js__WEBPACK_IMPORTED_MODULE_3__.association)(node), {\n      ...tracker.current(),\n      before: value,\n      after: ']'\n    })\n  )\n  subexit()\n  exit()\n  value += tracker.move(']')\n  return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction footnoteReferencePeek() {\n  return '['\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteDefinition} node\n */\nfunction footnoteDefinition(node, _, context, safeOptions) {\n  const tracker = (0,mdast_util_to_markdown_lib_util_track_js__WEBPACK_IMPORTED_MODULE_1__.track)(safeOptions)\n  let value = tracker.move('[^')\n  const exit = context.enter('footnoteDefinition')\n  const subexit = context.enter('label')\n  value += tracker.move(\n    (0,mdast_util_to_markdown_lib_util_safe_js__WEBPACK_IMPORTED_MODULE_2__.safe)(context, (0,mdast_util_to_markdown_lib_util_association_js__WEBPACK_IMPORTED_MODULE_3__.association)(node), {\n      ...tracker.current(),\n      before: value,\n      after: ']'\n    })\n  )\n  subexit()\n  value += tracker.move(\n    ']:' + (node.children && node.children.length > 0 ? ' ' : '')\n  )\n  tracker.shift(4)\n  value += tracker.move(\n    (0,mdast_util_to_markdown_lib_util_indent_lines_js__WEBPACK_IMPORTED_MODULE_4__.indentLines)((0,mdast_util_to_markdown_lib_util_container_flow_js__WEBPACK_IMPORTED_MODULE_5__.containerFlow)(node, context, tracker.current()), map)\n  )\n  exit()\n\n  return value\n}\n\n/** @type {Map} */\nfunction map(line, index, blank) {\n  if (index === 0) {\n    return line\n  }\n\n  return (blank ? '' : '    ') + line\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-gfm-footnote/lib/index.js?");

/***/ }),

/***/ "./node_modules/mdast-util-gfm-strikethrough/lib/index.js":
/*!****************************************************************!*\
  !*** ./node_modules/mdast-util-gfm-strikethrough/lib/index.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfmStrikethroughFromMarkdown\": function() { return /* binding */ gfmStrikethroughFromMarkdown; },\n/* harmony export */   \"gfmStrikethroughToMarkdown\": function() { return /* binding */ gfmStrikethroughToMarkdown; }\n/* harmony export */ });\n/* harmony import */ var mdast_util_to_markdown_lib_util_container_phrasing_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mdast-util-to-markdown/lib/util/container-phrasing.js */ \"./node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js\");\n/* harmony import */ var mdast_util_to_markdown_lib_util_track_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mdast-util-to-markdown/lib/util/track.js */ \"./node_modules/mdast-util-to-markdown/lib/util/track.js\");\n/**\n * @typedef {import('mdast').Delete} Delete\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\n\n\n\n// To do: next major: expose functions.\n// To do: next major: use `state`, state utilities.\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain strikethrough.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * Note: keep in sync with: <https://github.com/syntax-tree/mdast-util-to-markdown/blob/8ce8dbf/lib/unsafe.js#L14>\n *\n * @type {Array<ConstructName>}\n */\nconst constructsWithoutStrikethrough = [\n  'autolink',\n  'destinationLiteral',\n  'destinationRaw',\n  'reference',\n  'titleQuote',\n  'titleApostrophe'\n]\n\nhandleDelete.peek = peekDelete\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM strikethrough.\n *\n * @type {FromMarkdownExtension}\n */\nconst gfmStrikethroughFromMarkdown = {\n  canContainEols: ['delete'],\n  enter: {strikethrough: enterStrikethrough},\n  exit: {strikethrough: exitStrikethrough}\n}\n\n/**\n * Extension for `mdast-util-to-markdown` to enable GFM strikethrough.\n *\n * @type {ToMarkdownExtension}\n */\nconst gfmStrikethroughToMarkdown = {\n  unsafe: [\n    {\n      character: '~',\n      inConstruct: 'phrasing',\n      notInConstruct: constructsWithoutStrikethrough\n    }\n  ],\n  handlers: {delete: handleDelete}\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterStrikethrough(token) {\n  this.enter({type: 'delete', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitStrikethrough(token) {\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, context, safeOptions) {\n  const tracker = (0,mdast_util_to_markdown_lib_util_track_js__WEBPACK_IMPORTED_MODULE_0__.track)(safeOptions)\n  const exit = context.enter('strikethrough')\n  let value = tracker.move('~~')\n  value += (0,mdast_util_to_markdown_lib_util_container_phrasing_js__WEBPACK_IMPORTED_MODULE_1__.containerPhrasing)(node, context, {\n    ...tracker.current(),\n    before: value,\n    after: '~'\n  })\n  value += tracker.move('~~')\n  exit()\n  return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDelete() {\n  return '~'\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-gfm-strikethrough/lib/index.js?");

/***/ }),

/***/ "./node_modules/mdast-util-gfm-table/lib/index.js":
/*!********************************************************!*\
  !*** ./node_modules/mdast-util-gfm-table/lib/index.js ***!
  \********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfmTableFromMarkdown\": function() { return /* binding */ gfmTableFromMarkdown; },\n/* harmony export */   \"gfmTableToMarkdown\": function() { return /* binding */ gfmTableToMarkdown; }\n/* harmony export */ });\n/* harmony import */ var mdast_util_to_markdown_lib_util_container_phrasing_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mdast-util-to-markdown/lib/util/container-phrasing.js */ \"./node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js\");\n/* harmony import */ var mdast_util_to_markdown_lib_handle_inline_code_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! mdast-util-to-markdown/lib/handle/inline-code.js */ \"./node_modules/mdast-util-to-markdown/lib/handle/inline-code.js\");\n/* harmony import */ var markdown_table__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! markdown-table */ \"./node_modules/markdown-table/index.js\");\n/**\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').InlineCode} InlineCode\n *\n * @typedef {import('markdown-table').MarkdownTableOptions} MarkdownTableOptions\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Context} ToMarkdownContext\n * @typedef {import('mdast-util-to-markdown').SafeOptions} SafeOptions\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [tableCellPadding=true]\n *   Whether to add a space of padding between delimiters and cells.\n * @property {boolean | null | undefined} [tablePipeAlign=true]\n *   Whether to align the delimiters.\n * @property {MarkdownTableOptions['stringLength'] | null | undefined} [stringLength]\n *   Function to detect the length of table cell content, used when aligning\n *   the delimiters between cells\n */\n\n\n\n\n\n// To do: next major: use `state` and `state` utilities from `mdast-util-to-markdown`.\n// To do: next major: use `defaultHandlers.inlineCode`.\n// To do: next major: expose functions.\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM tables.\n *\n * @type {FromMarkdownExtension}\n */\nconst gfmTableFromMarkdown = {\n  enter: {\n    table: enterTable,\n    tableData: enterCell,\n    tableHeader: enterCell,\n    tableRow: enterRow\n  },\n  exit: {\n    codeText: exitCodeText,\n    table: exitTable,\n    tableData: exit,\n    tableHeader: exit,\n    tableRow: exit\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterTable(token) {\n  /** @type {Array<'left' | 'right' | 'center' | 'none'>} */\n  // @ts-expect-error: `align` is custom.\n  const align = token._align\n  this.enter(\n    {\n      type: 'table',\n      align: align.map((d) => (d === 'none' ? null : d)),\n      children: []\n    },\n    token\n  )\n  this.setData('inTable', true)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitTable(token) {\n  this.exit(token)\n  this.setData('inTable')\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterRow(token) {\n  this.enter({type: 'tableRow', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exit(token) {\n  this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterCell(token) {\n  this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCodeText(token) {\n  let value = this.resume()\n\n  if (this.getData('inTable')) {\n    value = value.replace(/\\\\([\\\\|])/g, replace)\n  }\n\n  const node = /** @type {InlineCode} */ (this.stack[this.stack.length - 1])\n  node.value = value\n  this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n  // Pipes work, backslashes don’t (but can’t escape pipes).\n  return $1 === '|' ? $1 : $0\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM tables in\n * markdown.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM tables.\n */\nfunction gfmTableToMarkdown(options) {\n  const settings = options || {}\n  const padding = settings.tableCellPadding\n  const alignDelimiters = settings.tablePipeAlign\n  const stringLength = settings.stringLength\n  const around = padding ? ' ' : '|'\n\n  return {\n    unsafe: [\n      {character: '\\r', inConstruct: 'tableCell'},\n      {character: '\\n', inConstruct: 'tableCell'},\n      // A pipe, when followed by a tab or space (padding), or a dash or colon\n      // (unpadded delimiter row), could result in a table.\n      {atBreak: true, character: '|', after: '[\\t :-]'},\n      // A pipe in a cell must be encoded.\n      {character: '|', inConstruct: 'tableCell'},\n      // A colon must be followed by a dash, in which case it could start a\n      // delimiter row.\n      {atBreak: true, character: ':', after: '-'},\n      // A delimiter row can also start with a dash, when followed by more\n      // dashes, a colon, or a pipe.\n      // This is a stricter version than the built in check for lists, thematic\n      // breaks, and setex heading underlines though:\n      // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n      {atBreak: true, character: '-', after: '[:|-]'}\n    ],\n    handlers: {\n      table: handleTable,\n      tableRow: handleTableRow,\n      tableCell: handleTableCell,\n      inlineCode: inlineCodeWithTable\n    }\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {Table} node\n   */\n  function handleTable(node, _, context, safeOptions) {\n    return serializeData(\n      handleTableAsData(node, context, safeOptions),\n      node.align\n    )\n  }\n\n  /**\n   * This function isn’t really used normally, because we handle rows at the\n   * table level.\n   * But, if someone passes in a table row, this ensures we make somewhat sense.\n   *\n   * @type {ToMarkdownHandle}\n   * @param {TableRow} node\n   */\n  function handleTableRow(node, _, context, safeOptions) {\n    const row = handleTableRowAsData(node, context, safeOptions)\n    const value = serializeData([row])\n    // `markdown-table` will always add an align row\n    return value.slice(0, value.indexOf('\\n'))\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {TableCell} node\n   */\n  function handleTableCell(node, _, context, safeOptions) {\n    const exit = context.enter('tableCell')\n    const subexit = context.enter('phrasing')\n    const value = (0,mdast_util_to_markdown_lib_util_container_phrasing_js__WEBPACK_IMPORTED_MODULE_0__.containerPhrasing)(node, context, {\n      ...safeOptions,\n      before: around,\n      after: around\n    })\n    subexit()\n    exit()\n    return value\n  }\n\n  /**\n   * @param {Array<Array<string>>} matrix\n   * @param {Array<string | null | undefined> | null | undefined} [align]\n   */\n  function serializeData(matrix, align) {\n    return (0,markdown_table__WEBPACK_IMPORTED_MODULE_1__.markdownTable)(matrix, {\n      align,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      alignDelimiters,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      padding,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      stringLength\n    })\n  }\n\n  /**\n   * @param {Table} node\n   * @param {ToMarkdownContext} context\n   * @param {SafeOptions} safeOptions\n   */\n  function handleTableAsData(node, context, safeOptions) {\n    const children = node.children\n    let index = -1\n    /** @type {Array<Array<string>>} */\n    const result = []\n    const subexit = context.enter('table')\n\n    while (++index < children.length) {\n      result[index] = handleTableRowAsData(\n        children[index],\n        context,\n        safeOptions\n      )\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @param {TableRow} node\n   * @param {ToMarkdownContext} context\n   * @param {SafeOptions} safeOptions\n   */\n  function handleTableRowAsData(node, context, safeOptions) {\n    const children = node.children\n    let index = -1\n    /** @type {Array<string>} */\n    const result = []\n    const subexit = context.enter('tableRow')\n\n    while (++index < children.length) {\n      // Note: the positional info as used here is incorrect.\n      // Making it correct would be impossible due to aligning cells?\n      // And it would need copy/pasting `markdown-table` into this project.\n      result[index] = handleTableCell(\n        children[index],\n        node,\n        context,\n        safeOptions\n      )\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {InlineCode} node\n   */\n  function inlineCodeWithTable(node, parent, context) {\n    let value = (0,mdast_util_to_markdown_lib_handle_inline_code_js__WEBPACK_IMPORTED_MODULE_2__.inlineCode)(node, parent, context)\n\n    if (context.stack.includes('tableCell')) {\n      value = value.replace(/\\|/g, '\\\\$&')\n    }\n\n    return value\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-gfm-table/lib/index.js?");

/***/ }),

/***/ "./node_modules/mdast-util-gfm-task-list-item/lib/index.js":
/*!*****************************************************************!*\
  !*** ./node_modules/mdast-util-gfm-task-list-item/lib/index.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfmTaskListItemFromMarkdown\": function() { return /* binding */ gfmTaskListItemFromMarkdown; },\n/* harmony export */   \"gfmTaskListItemToMarkdown\": function() { return /* binding */ gfmTaskListItemToMarkdown; }\n/* harmony export */ });\n/* harmony import */ var mdast_util_to_markdown_lib_handle_list_item_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mdast-util-to-markdown/lib/handle/list-item.js */ \"./node_modules/mdast-util-to-markdown/lib/handle/list-item.js\");\n/* harmony import */ var mdast_util_to_markdown_lib_util_track_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mdast-util-to-markdown/lib/util/track.js */ \"./node_modules/mdast-util-to-markdown/lib/util/track.js\");\n/**\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\n/**\n * @typedef {Extract<Root | Content, Parent>} Parents\n */\n\n\n\n\n// To do: next major: rename `context` -> `state`, `safeOptions` -> `info`, use\n// `track` from `state`.\n// To do: next major: replace exports with functions.\n// To do: next major: use `defaulthandlers.listItem`.\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM task list items.\n *\n * @type {FromMarkdownExtension}\n */\nconst gfmTaskListItemFromMarkdown = {\n  exit: {\n    taskListCheckValueChecked: exitCheck,\n    taskListCheckValueUnchecked: exitCheck,\n    paragraph: exitParagraphWithTaskListItem\n  }\n}\n\n/**\n * Extension for `mdast-util-to-markdown` to enable GFM task list items.\n *\n * @type {ToMarkdownExtension}\n */\nconst gfmTaskListItemToMarkdown = {\n  unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n  handlers: {listItem: listItemWithTaskListItem}\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCheck(token) {\n  const node = /** @type {ListItem} */ (this.stack[this.stack.length - 2])\n  // We’re always in a paragraph, in a list item.\n  node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitParagraphWithTaskListItem(token) {\n  const parent = /** @type {Parents} */ (this.stack[this.stack.length - 2])\n\n  if (\n    parent &&\n    parent.type === 'listItem' &&\n    typeof parent.checked === 'boolean'\n  ) {\n    const node = /** @type {Paragraph} */ (this.stack[this.stack.length - 1])\n    const head = node.children[0]\n\n    if (head && head.type === 'text') {\n      const siblings = parent.children\n      let index = -1\n      /** @type {Paragraph | undefined} */\n      let firstParaghraph\n\n      while (++index < siblings.length) {\n        const sibling = siblings[index]\n        if (sibling.type === 'paragraph') {\n          firstParaghraph = sibling\n          break\n        }\n      }\n\n      if (firstParaghraph === node) {\n        // Must start with a space or a tab.\n        head.value = head.value.slice(1)\n\n        if (head.value.length === 0) {\n          node.children.shift()\n        } else if (\n          node.position &&\n          head.position &&\n          typeof head.position.start.offset === 'number'\n        ) {\n          head.position.start.column++\n          head.position.start.offset++\n          node.position.start = Object.assign({}, head.position.start)\n        }\n      }\n    }\n  }\n\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, context, safeOptions) {\n  const head = node.children[0]\n  const checkable =\n    typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n  const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n  const tracker = (0,mdast_util_to_markdown_lib_util_track_js__WEBPACK_IMPORTED_MODULE_0__.track)(safeOptions)\n\n  if (checkable) {\n    tracker.move(checkbox)\n  }\n\n  let value = (0,mdast_util_to_markdown_lib_handle_list_item_js__WEBPACK_IMPORTED_MODULE_1__.listItem)(node, parent, context, {\n    ...safeOptions,\n    ...tracker.current()\n  })\n\n  if (checkable) {\n    value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n  }\n\n  return value\n\n  /**\n   * @param {string} $0\n   * @returns {string}\n   */\n  function check($0) {\n    return $0 + checkbox\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-gfm-task-list-item/lib/index.js?");

/***/ }),

/***/ "./node_modules/mdast-util-gfm/lib/index.js":
/*!**************************************************!*\
  !*** ./node_modules/mdast-util-gfm/lib/index.js ***!
  \**************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfmFromMarkdown\": function() { return /* binding */ gfmFromMarkdown; },\n/* harmony export */   \"gfmToMarkdown\": function() { return /* binding */ gfmToMarkdown; }\n/* harmony export */ });\n/* harmony import */ var mdast_util_gfm_autolink_literal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mdast-util-gfm-autolink-literal */ \"./node_modules/mdast-util-gfm-autolink-literal/lib/index.js\");\n/* harmony import */ var mdast_util_gfm_footnote__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mdast-util-gfm-footnote */ \"./node_modules/mdast-util-gfm-footnote/lib/index.js\");\n/* harmony import */ var mdast_util_gfm_strikethrough__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! mdast-util-gfm-strikethrough */ \"./node_modules/mdast-util-gfm-strikethrough/lib/index.js\");\n/* harmony import */ var mdast_util_gfm_table__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! mdast-util-gfm-table */ \"./node_modules/mdast-util-gfm-table/lib/index.js\");\n/* harmony import */ var mdast_util_gfm_task_list_item__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! mdast-util-gfm-task-list-item */ \"./node_modules/mdast-util-gfm-task-list-item/lib/index.js\");\n/**\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * @typedef {import('mdast-util-gfm-table').Options} Options\n *   Configuration.\n */\n\n\n\n\n\n\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @returns {Array<FromMarkdownExtension>}\n *   Extension for `mdast-util-from-markdown` to enable GFM (autolink literals,\n *   footnotes, strikethrough, tables, tasklists).\n */\nfunction gfmFromMarkdown() {\n  return [\n    mdast_util_gfm_autolink_literal__WEBPACK_IMPORTED_MODULE_0__.gfmAutolinkLiteralFromMarkdown,\n    (0,mdast_util_gfm_footnote__WEBPACK_IMPORTED_MODULE_1__.gfmFootnoteFromMarkdown)(),\n    mdast_util_gfm_strikethrough__WEBPACK_IMPORTED_MODULE_2__.gfmStrikethroughFromMarkdown,\n    mdast_util_gfm_table__WEBPACK_IMPORTED_MODULE_3__.gfmTableFromMarkdown,\n    mdast_util_gfm_task_list_item__WEBPACK_IMPORTED_MODULE_4__.gfmTaskListItemFromMarkdown\n  ]\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM (autolink literals,\n *   footnotes, strikethrough, tables, tasklists).\n */\nfunction gfmToMarkdown(options) {\n  return {\n    extensions: [\n      mdast_util_gfm_autolink_literal__WEBPACK_IMPORTED_MODULE_0__.gfmAutolinkLiteralToMarkdown,\n      (0,mdast_util_gfm_footnote__WEBPACK_IMPORTED_MODULE_1__.gfmFootnoteToMarkdown)(),\n      mdast_util_gfm_strikethrough__WEBPACK_IMPORTED_MODULE_2__.gfmStrikethroughToMarkdown,\n      (0,mdast_util_gfm_table__WEBPACK_IMPORTED_MODULE_3__.gfmTableToMarkdown)(options),\n      mdast_util_gfm_task_list_item__WEBPACK_IMPORTED_MODULE_4__.gfmTaskListItemToMarkdown\n    ]\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-gfm/lib/index.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/footer.js":
/*!*******************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/footer.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"footer\": function() { return /* binding */ footer; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-sanitize-uri */ \"./node_modules/micromark-util-sanitize-uri/dev/index.js\");\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Element | undefined}\n *   `section` element or `undefined`.\n */\nfunction footer(state) {\n  /** @type {Array<ElementContent>} */\n  const listItems = []\n  let index = -1\n\n  while (++index < state.footnoteOrder.length) {\n    const def = state.footnoteById[state.footnoteOrder[index]]\n\n    if (!def) {\n      continue\n    }\n\n    const content = state.all(def)\n    const id = String(def.identifier).toUpperCase()\n    const safeId = (0,micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__.normalizeUri)(id.toLowerCase())\n    let referenceIndex = 0\n    /** @type {Array<ElementContent>} */\n    const backReferences = []\n\n    while (++referenceIndex <= state.footnoteCounts[id]) {\n      /** @type {Element} */\n      const backReference = {\n        type: 'element',\n        tagName: 'a',\n        properties: {\n          href:\n            '#' +\n            state.clobberPrefix +\n            'fnref-' +\n            safeId +\n            (referenceIndex > 1 ? '-' + referenceIndex : ''),\n          dataFootnoteBackref: true,\n          className: ['data-footnote-backref'],\n          ariaLabel: state.footnoteBackLabel\n        },\n        children: [{type: 'text', value: '↩'}]\n      }\n\n      if (referenceIndex > 1) {\n        backReference.children.push({\n          type: 'element',\n          tagName: 'sup',\n          children: [{type: 'text', value: String(referenceIndex)}]\n        })\n      }\n\n      if (backReferences.length > 0) {\n        backReferences.push({type: 'text', value: ' '})\n      }\n\n      backReferences.push(backReference)\n    }\n\n    const tail = content[content.length - 1]\n\n    if (tail && tail.type === 'element' && tail.tagName === 'p') {\n      const tailTail = tail.children[tail.children.length - 1]\n      if (tailTail && tailTail.type === 'text') {\n        tailTail.value += ' '\n      } else {\n        tail.children.push({type: 'text', value: ' '})\n      }\n\n      tail.children.push(...backReferences)\n    } else {\n      content.push(...backReferences)\n    }\n\n    /** @type {Element} */\n    const listItem = {\n      type: 'element',\n      tagName: 'li',\n      properties: {id: state.clobberPrefix + 'fn-' + safeId},\n      children: state.wrap(content, true)\n    }\n\n    state.patch(def, listItem)\n\n    listItems.push(listItem)\n  }\n\n  if (listItems.length === 0) {\n    return\n  }\n\n  return {\n    type: 'element',\n    tagName: 'section',\n    properties: {dataFootnotes: true, className: ['footnotes']},\n    children: [\n      {\n        type: 'element',\n        tagName: state.footnoteLabelTagName,\n        properties: {\n          // To do: use structured clone.\n          ...JSON.parse(JSON.stringify(state.footnoteLabelProperties)),\n          id: 'footnote-label'\n        },\n        children: [{type: 'text', value: state.footnoteLabel}]\n      },\n      {type: 'text', value: '\\n'},\n      {\n        type: 'element',\n        tagName: 'ol',\n        properties: {},\n        children: state.wrap(listItems, true)\n      },\n      {type: 'text', value: '\\n'}\n    ]\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/footer.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/blockquote.js":
/*!********************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/blockquote.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"blockquote\": function() { return /* binding */ blockquote; }\n/* harmony export */ });\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Blockquote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction blockquote(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'blockquote',\n    properties: {},\n    children: state.wrap(state.all(node), true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/blockquote.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/break.js":
/*!***************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/break.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"hardBreak\": function() { return /* binding */ hardBreak; }\n/* harmony export */ });\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Break} node\n *   mdast node.\n * @returns {Array<Element | Text>}\n *   hast element content.\n */\nfunction hardBreak(state, node) {\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n  state.patch(node, result)\n  return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/break.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/code.js":
/*!**************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/code.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"code\": function() { return /* binding */ code; }\n/* harmony export */ });\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Code} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction code(state, node) {\n  const value = node.value ? node.value + '\\n' : ''\n  // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n  // on for years in remark now.\n  const lang = node.lang ? node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/) : null\n  /** @type {Properties} */\n  const properties = {}\n\n  if (lang) {\n    properties.className = ['language-' + lang]\n  }\n\n  // Create `<code>`.\n  /** @type {Element} */\n  let result = {\n    type: 'element',\n    tagName: 'code',\n    properties,\n    children: [{type: 'text', value}]\n  }\n\n  if (node.meta) {\n    result.data = {meta: node.meta}\n  }\n\n  state.patch(node, result)\n  result = state.applyData(node, result)\n\n  // Create `<pre>`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/code.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/delete.js":
/*!****************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/delete.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"strikethrough\": function() { return /* binding */ strikethrough; }\n/* harmony export */ });\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/delete.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/emphasis.js":
/*!******************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/emphasis.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"emphasis\": function() { return /* binding */ emphasis; }\n/* harmony export */ });\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/emphasis.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js":
/*!****************************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"footnoteReference\": function() { return /* binding */ footnoteReference; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-sanitize-uri */ \"./node_modules/micromark-util-sanitize-uri/dev/index.js\");\n/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('hast').Element} Element\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction footnoteReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const safeId = (0,micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__.normalizeUri)(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  if (index === -1) {\n    state.footnoteOrder.push(id)\n    state.footnoteCounts[id] = 1\n    counter = state.footnoteOrder.length\n  } else {\n    state.footnoteCounts[id]++\n    counter = index + 1\n  }\n\n  const reuseCounter = state.footnoteCounts[id]\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + state.clobberPrefix + 'fn-' + safeId,\n      id:\n        state.clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/footnote.js":
/*!******************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/footnote.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"footnote\": function() { return /* binding */ footnote; }\n/* harmony export */ });\n/* harmony import */ var _footnote_reference_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./footnote-reference.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js\");\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Footnote} Footnote\n * @typedef {import('../state.js').State} State\n */\n\n\n\n// To do: when both:\n// * <https://github.com/micromark/micromark-extension-footnote>\n// * <https://github.com/syntax-tree/mdast-util-footnote>\n// …are archived, remove this (also from mdast).\n// These inline notes are not used in GFM.\n\n/**\n * Turn an mdast `footnote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Footnote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction footnote(state, node) {\n  const footnoteById = state.footnoteById\n  let no = 1\n\n  while (no in footnoteById) no++\n\n  const identifier = String(no)\n\n  footnoteById[identifier] = {\n    type: 'footnoteDefinition',\n    identifier,\n    children: [{type: 'paragraph', children: node.children}],\n    position: node.position\n  }\n\n  return (0,_footnote_reference_js__WEBPACK_IMPORTED_MODULE_0__.footnoteReference)(state, {\n    type: 'footnoteReference',\n    identifier,\n    position: node.position\n  })\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/footnote.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/heading.js":
/*!*****************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/heading.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"heading\": function() { return /* binding */ heading; }\n/* harmony export */ });\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/heading.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/html.js":
/*!**************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/html.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"html\": function() { return /* binding */ html; }\n/* harmony export */ });\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').HTML} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Raw | Element | null}\n *   hast node.\n */\nfunction html(state, node) {\n  if (state.dangerous) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  // To do: next major: return `undefined`.\n  return null\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/html.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/image-reference.js":
/*!*************************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/image-reference.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"imageReference\": function() { return /* binding */ imageReference; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-sanitize-uri */ \"./node_modules/micromark-util-sanitize-uri/dev/index.js\");\n/* harmony import */ var _revert_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../revert.js */ \"./node_modules/mdast-util-to-hast/lib/revert.js\");\n/**\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\n\n\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {ElementContent | Array<ElementContent>}\n *   hast node.\n */\nfunction imageReference(state, node) {\n  const def = state.definition(node.identifier)\n\n  if (!def) {\n    return (0,_revert_js__WEBPACK_IMPORTED_MODULE_0__.revert)(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: (0,micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_1__.normalizeUri)(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/image-reference.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/image.js":
/*!***************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/image.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"image\": function() { return /* binding */ image; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-sanitize-uri */ \"./node_modules/micromark-util-sanitize-uri/dev/index.js\");\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: (0,micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__.normalizeUri)(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/image.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/index.js":
/*!***************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/index.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"handlers\": function() { return /* binding */ handlers; }\n/* harmony export */ });\n/* harmony import */ var _blockquote_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./blockquote.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/blockquote.js\");\n/* harmony import */ var _break_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./break.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/break.js\");\n/* harmony import */ var _code_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./code.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/code.js\");\n/* harmony import */ var _delete_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./delete.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/delete.js\");\n/* harmony import */ var _emphasis_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./emphasis.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/emphasis.js\");\n/* harmony import */ var _footnote_reference_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./footnote-reference.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js\");\n/* harmony import */ var _footnote_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./footnote.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/footnote.js\");\n/* harmony import */ var _heading_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./heading.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/heading.js\");\n/* harmony import */ var _html_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./html.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/html.js\");\n/* harmony import */ var _image_reference_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./image-reference.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/image-reference.js\");\n/* harmony import */ var _image_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./image.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/image.js\");\n/* harmony import */ var _inline_code_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./inline-code.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/inline-code.js\");\n/* harmony import */ var _link_reference_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./link-reference.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/link-reference.js\");\n/* harmony import */ var _link_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./link.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/link.js\");\n/* harmony import */ var _list_item_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./list-item.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/list-item.js\");\n/* harmony import */ var _list_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./list.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/list.js\");\n/* harmony import */ var _paragraph_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./paragraph.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/paragraph.js\");\n/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./root.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/root.js\");\n/* harmony import */ var _strong_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./strong.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/strong.js\");\n/* harmony import */ var _table_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./table.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/table.js\");\n/* harmony import */ var _table_row_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./table-row.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/table-row.js\");\n/* harmony import */ var _table_cell_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./table-cell.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/table-cell.js\");\n/* harmony import */ var _text_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./text.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/text.js\");\n/* harmony import */ var _thematic_break_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./thematic-break.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Default handlers for nodes.\n */\nconst handlers = {\n  blockquote: _blockquote_js__WEBPACK_IMPORTED_MODULE_0__.blockquote,\n  break: _break_js__WEBPACK_IMPORTED_MODULE_1__.hardBreak,\n  code: _code_js__WEBPACK_IMPORTED_MODULE_2__.code,\n  delete: _delete_js__WEBPACK_IMPORTED_MODULE_3__.strikethrough,\n  emphasis: _emphasis_js__WEBPACK_IMPORTED_MODULE_4__.emphasis,\n  footnoteReference: _footnote_reference_js__WEBPACK_IMPORTED_MODULE_5__.footnoteReference,\n  footnote: _footnote_js__WEBPACK_IMPORTED_MODULE_6__.footnote,\n  heading: _heading_js__WEBPACK_IMPORTED_MODULE_7__.heading,\n  html: _html_js__WEBPACK_IMPORTED_MODULE_8__.html,\n  imageReference: _image_reference_js__WEBPACK_IMPORTED_MODULE_9__.imageReference,\n  image: _image_js__WEBPACK_IMPORTED_MODULE_10__.image,\n  inlineCode: _inline_code_js__WEBPACK_IMPORTED_MODULE_11__.inlineCode,\n  linkReference: _link_reference_js__WEBPACK_IMPORTED_MODULE_12__.linkReference,\n  link: _link_js__WEBPACK_IMPORTED_MODULE_13__.link,\n  listItem: _list_item_js__WEBPACK_IMPORTED_MODULE_14__.listItem,\n  list: _list_js__WEBPACK_IMPORTED_MODULE_15__.list,\n  paragraph: _paragraph_js__WEBPACK_IMPORTED_MODULE_16__.paragraph,\n  root: _root_js__WEBPACK_IMPORTED_MODULE_17__.root,\n  strong: _strong_js__WEBPACK_IMPORTED_MODULE_18__.strong,\n  table: _table_js__WEBPACK_IMPORTED_MODULE_19__.table,\n  tableCell: _table_cell_js__WEBPACK_IMPORTED_MODULE_20__.tableCell,\n  tableRow: _table_row_js__WEBPACK_IMPORTED_MODULE_21__.tableRow,\n  text: _text_js__WEBPACK_IMPORTED_MODULE_22__.text,\n  thematicBreak: _thematic_break_js__WEBPACK_IMPORTED_MODULE_23__.thematicBreak,\n  toml: ignore,\n  yaml: ignore,\n  definition: ignore,\n  footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n  // To do: next major: return `undefined`.\n  return null\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/index.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/inline-code.js":
/*!*********************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/inline-code.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"inlineCode\": function() { return /* binding */ inlineCode; }\n/* harmony export */ });\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/inline-code.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/link-reference.js":
/*!************************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/link-reference.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"linkReference\": function() { return /* binding */ linkReference; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-sanitize-uri */ \"./node_modules/micromark-util-sanitize-uri/dev/index.js\");\n/* harmony import */ var _revert_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../revert.js */ \"./node_modules/mdast-util-to-hast/lib/revert.js\");\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\n\n\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {ElementContent | Array<ElementContent>}\n *   hast node.\n */\nfunction linkReference(state, node) {\n  const def = state.definition(node.identifier)\n\n  if (!def) {\n    return (0,_revert_js__WEBPACK_IMPORTED_MODULE_0__.revert)(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: (0,micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_1__.normalizeUri)(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/link-reference.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/link.js":
/*!**************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/link.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"link\": function() { return /* binding */ link; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-sanitize-uri */ \"./node_modules/micromark-util-sanitize-uri/dev/index.js\");\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: (0,micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__.normalizeUri)(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/link.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/list-item.js":
/*!*******************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/list-item.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"listItem\": function() { return /* binding */ listItem; }\n/* harmony export */ });\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract<Nodes, Parent>} Parents\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ListItem} node\n *   mdast node.\n * @param {Parents | null | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nfunction listItem(state, node, parent) {\n  const results = state.all(node)\n  const loose = parent ? listLoose(parent) : listItemLoose(node)\n  /** @type {Properties} */\n  const properties = {}\n  /** @type {Array<ElementContent>} */\n  const children = []\n\n  if (typeof node.checked === 'boolean') {\n    const head = results[0]\n    /** @type {Element} */\n    let paragraph\n\n    if (head && head.type === 'element' && head.tagName === 'p') {\n      paragraph = head\n    } else {\n      paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n      results.unshift(paragraph)\n    }\n\n    if (paragraph.children.length > 0) {\n      paragraph.children.unshift({type: 'text', value: ' '})\n    }\n\n    paragraph.children.unshift({\n      type: 'element',\n      tagName: 'input',\n      properties: {type: 'checkbox', checked: node.checked, disabled: true},\n      children: []\n    })\n\n    // According to github-markdown-css, this class hides bullet.\n    // See: <https://github.com/sindresorhus/github-markdown-css>.\n    properties.className = ['task-list-item']\n  }\n\n  let index = -1\n\n  while (++index < results.length) {\n    const child = results[index]\n\n    // Add eols before nodes, except if this is a loose, first paragraph.\n    if (\n      loose ||\n      index !== 0 ||\n      child.type !== 'element' ||\n      child.tagName !== 'p'\n    ) {\n      children.push({type: 'text', value: '\\n'})\n    }\n\n    if (child.type === 'element' && child.tagName === 'p' && !loose) {\n      children.push(...child.children)\n    } else {\n      children.push(child)\n    }\n  }\n\n  const tail = results[results.length - 1]\n\n  // Add a final eol.\n  if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n    children.push({type: 'text', value: '\\n'})\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'li', properties, children}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n  let loose = false\n  if (node.type === 'list') {\n    loose = node.spread || false\n    const children = node.children\n    let index = -1\n\n    while (!loose && ++index < children.length) {\n      loose = listItemLoose(children[index])\n    }\n  }\n\n  return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n  const spread = node.spread\n\n  return spread === undefined || spread === null\n    ? node.children.length > 1\n    : spread\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/list-item.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/list.js":
/*!**************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/list.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"list\": function() { return /* binding */ list; }\n/* harmony export */ });\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/list.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/paragraph.js":
/*!*******************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/paragraph.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"paragraph\": function() { return /* binding */ paragraph; }\n/* harmony export */ });\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/paragraph.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/root.js":
/*!**************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/root.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"root\": function() { return /* binding */ root; }\n/* harmony export */ });\n/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastRoot | HastElement}\n *   hast node.\n */\nfunction root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/root.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/strong.js":
/*!****************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/strong.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"strong\": function() { return /* binding */ strong; }\n/* harmony export */ });\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/strong.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/table-cell.js":
/*!********************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/table-cell.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"tableCell\": function() { return /* binding */ tableCell; }\n/* harmony export */ });\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/table-cell.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/table-row.js":
/*!*******************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/table-row.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"tableRow\": function() { return /* binding */ tableRow; }\n/* harmony export */ });\n/**\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract<Nodes, Parent>} Parents\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | null | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nfunction tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array<ElementContent>} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(node, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/table-row.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/table.js":
/*!***************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/table.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"table\": function() { return /* binding */ table; }\n/* harmony export */ });\n/* harmony import */ var unist_util_position__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! unist-util-position */ \"./node_modules/unist-util-position/lib/index.js\");\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array<Element>} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = (0,unist_util_position__WEBPACK_IMPORTED_MODULE_0__.pointStart)(node.children[1])\n    const end = (0,unist_util_position__WEBPACK_IMPORTED_MODULE_0__.pointEnd)(node.children[node.children.length - 1])\n    if (start.line && end.line) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/table.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/text.js":
/*!**************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/text.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"text\": function() { return /* binding */ text; }\n/* harmony export */ });\n/* harmony import */ var trim_lines__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! trim-lines */ \"./node_modules/trim-lines/index.js\");\n/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastText | HastElement}\n *   hast node.\n */\nfunction text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: (0,trim_lines__WEBPACK_IMPORTED_MODULE_0__.trimLines)(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/text.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js":
/*!************************************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"thematicBreak\": function() { return /* binding */ thematicBreak; }\n/* harmony export */ });\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/index.js":
/*!******************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/index.js ***!
  \******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"toHast\": function() { return /* binding */ toHast; }\n/* harmony export */ });\n/* harmony import */ var _footer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./footer.js */ \"./node_modules/mdast-util-to-hast/lib/footer.js\");\n/* harmony import */ var _state_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./state.js */ \"./node_modules/mdast-util-to-hast/lib/state.js\");\n/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Root} HastRoot\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Root} MdastRoot\n *\n * @typedef {import('./state.js').Options} Options\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n */\n\n\n\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * *   `hast-util-to-html` also has an option `allowDangerousHtml` which will\n *     output the raw HTML.\n *     This is typically discouraged as noted by the option name but is useful\n *     if you completely trust authors\n * *   `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n *     into standard hast nodes (`element`, `text`, etc).\n *     This is a heavy task as it needs a full HTML parser, but it is the only\n *     way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * *   when the node has a `value` (and doesn’t have `data.hName`,\n *     `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n *     node\n * *   otherwise, create a `<div>` element (which could be changed with\n *     `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n *   mdast tree.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {HastNodes | null | undefined}\n *   hast tree.\n */\n// To do: next major: always return a single `root`.\nfunction toHast(tree, options) {\n  const state = (0,_state_js__WEBPACK_IMPORTED_MODULE_0__.createState)(tree, options)\n  const node = state.one(tree, null)\n  const foot = (0,_footer_js__WEBPACK_IMPORTED_MODULE_1__.footer)(state)\n\n  if (foot) {\n    // @ts-expect-error If there’s a footer, there were definitions, meaning block\n    // content.\n    // So assume `node` is a parent node.\n    node.children.push({type: 'text', value: '\\n'}, foot)\n  }\n\n  // To do: next major: always return root?\n  return Array.isArray(node) ? {type: 'root', children: node} : node\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/index.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/revert.js":
/*!*******************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/revert.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"revert\": function() { return /* binding */ revert; }\n/* harmony export */ });\n/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Reference} Reference\n * @typedef {import('mdast').Root} Root\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract<Nodes, Reference>} References\n */\n\n// To do: next major: always return array.\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n *   Info passed around.\n * @param {References} node\n *   Reference node (image, link).\n * @returns {ElementContent | Array<ElementContent>}\n *   hast content.\n */\nfunction revert(state, node) {\n  const subtype = node.referenceType\n  let suffix = ']'\n\n  if (subtype === 'collapsed') {\n    suffix += '[]'\n  } else if (subtype === 'full') {\n    suffix += '[' + (node.label || node.identifier) + ']'\n  }\n\n  if (node.type === 'imageReference') {\n    return {type: 'text', value: '![' + node.alt + suffix}\n  }\n\n  const contents = state.all(node)\n  const head = contents[0]\n\n  if (head && head.type === 'text') {\n    head.value = '[' + head.value\n  } else {\n    contents.unshift({type: 'text', value: '['})\n  }\n\n  const tail = contents[contents.length - 1]\n\n  if (tail && tail.type === 'text') {\n    tail.value += suffix\n  } else {\n    contents.push({type: 'text', value: suffix})\n  }\n\n  return contents\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/revert.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-hast/lib/state.js":
/*!******************************************************!*\
  !*** ./node_modules/mdast-util-to-hast/lib/state.js ***!
  \******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"all\": function() { return /* binding */ all; },\n/* harmony export */   \"createState\": function() { return /* binding */ createState; },\n/* harmony export */   \"one\": function() { return /* binding */ one; },\n/* harmony export */   \"wrap\": function() { return /* binding */ wrap; }\n/* harmony export */ });\n/* harmony import */ var unist_util_visit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! unist-util-visit */ \"./node_modules/unist-util-visit/lib/index.js\");\n/* harmony import */ var unist_util_position__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! unist-util-position */ \"./node_modules/unist-util-position/lib/index.js\");\n/* harmony import */ var unist_util_generated__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! unist-util-generated */ \"./node_modules/unist-util-generated/lib/index.js\");\n/* harmony import */ var mdast_util_definitions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mdast-util-definitions */ \"./node_modules/mdast-util-definitions/lib/index.js\");\n/* harmony import */ var _handlers_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./handlers/index.js */ \"./node_modules/mdast-util-to-hast/lib/handlers/index.js\");\n/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Parent} MdastParent\n * @typedef {import('mdast').Root} MdastRoot\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n * @typedef {Extract<MdastNodes, MdastParent>} MdastParents\n *\n * @typedef EmbeddedHastFields\n *   hast fields.\n * @property {string | null | undefined} [hName]\n *   Generate a specific element with this tag name instead.\n * @property {HastProperties | null | undefined} [hProperties]\n *   Generate an element with these properties instead.\n * @property {Array<HastElementContent> | null | undefined} [hChildren]\n *   Generate an element with this content instead.\n *\n * @typedef {Record<string, unknown> & EmbeddedHastFields} MdastData\n *   mdast data with embedded hast fields.\n *\n * @typedef {MdastNodes & {data?: MdastData | null | undefined}} MdastNodeWithData\n *   mdast node with embedded hast data.\n *\n * @typedef PointLike\n *   Point-like value.\n * @property {number | null | undefined} [line]\n *   Line.\n * @property {number | null | undefined} [column]\n *   Column.\n * @property {number | null | undefined} [offset]\n *   Offset.\n *\n * @typedef PositionLike\n *   Position-like value.\n * @property {PointLike | null | undefined} [start]\n *   Point-like value.\n * @property {PointLike | null | undefined} [end]\n *   Point-like value.\n *\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | null | undefined} parent\n *   Parent of `node`.\n * @returns {HastElementContent | Array<HastElementContent> | null | undefined}\n *   hast node.\n *\n * @callback HFunctionProps\n *   Signature of `state` for when props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {HastProperties} props\n *   Properties.\n * @param {Array<HastElementContent> | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @callback HFunctionNoProps\n *   Signature of `state` for when no props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {Array<HastElementContent> | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @typedef HFields\n *   Info on `state`.\n * @property {boolean} dangerous\n *   Whether HTML is allowed.\n * @property {string} clobberPrefix\n *   Prefix to use to prevent DOM clobbering.\n * @property {string} footnoteLabel\n *   Label to use to introduce the footnote section.\n * @property {string} footnoteLabelTagName\n *   HTML used for the footnote label.\n * @property {HastProperties} footnoteLabelProperties\n *   Properties on the HTML tag used for the footnote label.\n * @property {string} footnoteBackLabel\n *   Label to use from backreferences back to their footnote call.\n * @property {(identifier: string) => MdastDefinition | null} definition\n *   Definition cache.\n * @property {Record<string, MdastFootnoteDefinition>} footnoteById\n *   Footnote definitions by their identifier.\n * @property {Array<string>} footnoteOrder\n *   Identifiers of order when footnote calls first appear in tree order.\n * @property {Record<string, number>} footnoteCounts\n *   Counts for how often the same footnote was called.\n * @property {Handlers} handlers\n *   Applied handlers.\n * @property {Handler} unknownHandler\n *   Handler for any none not in `passThrough` or otherwise handled.\n * @property {(from: MdastNodes, node: HastNodes) => void} patch\n *   Copy a node’s positional info.\n * @property {<Type extends HastNodes>(from: MdastNodes, to: Type) => Type | HastElement} applyData\n *   Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {(node: MdastNodes, parent: MdastParents | null | undefined) => HastElementContent | Array<HastElementContent> | null | undefined} one\n *   Transform an mdast node to hast.\n * @property {(node: MdastNodes) => Array<HastElementContent>} all\n *   Transform the children of an mdast parent to hast.\n * @property {<Type extends HastContent>(nodes: Array<Type>, loose?: boolean | null | undefined) => Array<Type | HastText>} wrap\n *   Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n * @property {(left: MdastNodeWithData | PositionLike | null | undefined, right: HastElementContent) => HastElementContent} augment\n *   Like `state` but lower-level and usable on non-elements.\n *   Deprecated: use `patch` and `applyData`.\n * @property {Array<string>} passThrough\n *   List of node types to pass through untouched (except for their children).\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree.\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` attribute on footnotes to prevent it from\n *   *clobbering*.\n * @property {string | null | undefined} [footnoteBackLabel='Back to content']\n *   Label to use from backreferences back to their footnote call (affects\n *   screen readers).\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n *   Label to use for the footnotes section (affects screen readers).\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n *   Properties to use on the footnote label (note that `id: 'footnote-label'`\n *   is always added as footnote calls use it with `aria-describedby` to\n *   provide an accessible label).\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n *   Tag name to use for the footnote label.\n * @property {Handlers | null | undefined} [handlers]\n *   Extra handlers for nodes.\n * @property {Array<string> | null | undefined} [passThrough]\n *   List of custom mdast node types to pass through (keep) in hast (note that\n *   the node itself is passed, but eventual children are transformed).\n * @property {Handler | null | undefined} [unknownHandler]\n *   Handler for all unknown nodes.\n *\n * @typedef {Record<string, Handler>} Handlers\n *   Handle nodes.\n *\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} State\n *   Info passed around.\n */\n\n\n\n\n\n\n\nconst own = {}.hasOwnProperty\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n *   mdast node to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {State}\n *   `state` function.\n */\nfunction createState(tree, options) {\n  const settings = options || {}\n  const dangerous = settings.allowDangerousHtml || false\n  /** @type {Record<string, MdastFootnoteDefinition>} */\n  const footnoteById = {}\n\n  // To do: next major: add `options` to state, remove:\n  // `dangerous`, `clobberPrefix`, `footnoteLabel`, `footnoteLabelTagName`,\n  // `footnoteLabelProperties`, `footnoteBackLabel`, `passThrough`,\n  // `unknownHandler`.\n\n  // To do: next major: move to `state.options.allowDangerousHtml`.\n  state.dangerous = dangerous\n  // To do: next major: move to `state.options`.\n  state.clobberPrefix =\n    settings.clobberPrefix === undefined || settings.clobberPrefix === null\n      ? 'user-content-'\n      : settings.clobberPrefix\n  // To do: next major: move to `state.options`.\n  state.footnoteLabel = settings.footnoteLabel || 'Footnotes'\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2'\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelProperties = settings.footnoteLabelProperties || {\n    className: ['sr-only']\n  }\n  // To do: next major: move to `state.options`.\n  state.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content'\n  // To do: next major: move to `state.options`.\n  state.unknownHandler = settings.unknownHandler\n  // To do: next major: move to `state.options`.\n  state.passThrough = settings.passThrough\n\n  state.handlers = {..._handlers_index_js__WEBPACK_IMPORTED_MODULE_0__.handlers, ...settings.handlers}\n\n  // To do: next major: replace utility with `definitionById` object, so we\n  // only walk once (as we need footnotes too).\n  state.definition = (0,mdast_util_definitions__WEBPACK_IMPORTED_MODULE_1__.definitions)(tree)\n  state.footnoteById = footnoteById\n  /** @type {Array<string>} */\n  state.footnoteOrder = []\n  /** @type {Record<string, number>} */\n  state.footnoteCounts = {}\n\n  state.patch = patch\n  state.applyData = applyData\n  state.one = oneBound\n  state.all = allBound\n  state.wrap = wrap\n  // To do: next major: remove `augment`.\n  state.augment = augment\n\n  ;(0,unist_util_visit__WEBPACK_IMPORTED_MODULE_2__.visit)(tree, 'footnoteDefinition', (definition) => {\n    const id = String(definition.identifier).toUpperCase()\n\n    // Mimick CM behavior of link definitions.\n    // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/8290999/index.js#L26>.\n    if (!own.call(footnoteById, id)) {\n      footnoteById[id] = definition\n    }\n  })\n\n  // @ts-expect-error Hush, it’s fine!\n  return state\n\n  /**\n   * Finalise the created `right`, a hast node, from `left`, an mdast node.\n   *\n   * @param {MdastNodeWithData | PositionLike | null | undefined} left\n   * @param {HastElementContent} right\n   * @returns {HastElementContent}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function augment(left, right) {\n    // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n    if (left && 'data' in left && left.data) {\n      /** @type {MdastData} */\n      const data = left.data\n\n      if (data.hName) {\n        if (right.type !== 'element') {\n          right = {\n            type: 'element',\n            tagName: '',\n            properties: {},\n            children: []\n          }\n        }\n\n        right.tagName = data.hName\n      }\n\n      if (right.type === 'element' && data.hProperties) {\n        right.properties = {...right.properties, ...data.hProperties}\n      }\n\n      if ('children' in right && right.children && data.hChildren) {\n        right.children = data.hChildren\n      }\n    }\n\n    if (left) {\n      const ctx = 'type' in left ? left : {position: left}\n\n      if (!(0,unist_util_generated__WEBPACK_IMPORTED_MODULE_3__.generated)(ctx)) {\n        // @ts-expect-error: fine.\n        right.position = {start: (0,unist_util_position__WEBPACK_IMPORTED_MODULE_4__.pointStart)(ctx), end: (0,unist_util_position__WEBPACK_IMPORTED_MODULE_4__.pointEnd)(ctx)}\n      }\n    }\n\n    return right\n  }\n  /* c8 ignore stop */\n\n  /**\n   * Create an element for `node`.\n   *\n   * @type {HFunctionProps}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function state(node, tagName, props, children) {\n    if (Array.isArray(props)) {\n      children = props\n      props = {}\n    }\n\n    // @ts-expect-error augmenting an element yields an element.\n    return augment(node, {\n      type: 'element',\n      tagName,\n      properties: props || {},\n      children: children || []\n    })\n  }\n  /* c8 ignore stop */\n\n  /**\n   * Transform an mdast node into a hast node.\n   *\n   * @param {MdastNodes} node\n   *   mdast node.\n   * @param {MdastParents | null | undefined} [parent]\n   *   Parent of `node`.\n   * @returns {HastElementContent | Array<HastElementContent> | null | undefined}\n   *   Resulting hast node.\n   */\n  function oneBound(node, parent) {\n    // @ts-expect-error: that’s a state :)\n    return one(state, node, parent)\n  }\n\n  /**\n   * Transform the children of an mdast node into hast nodes.\n   *\n   * @param {MdastNodes} parent\n   *   mdast node to compile\n   * @returns {Array<HastElementContent>}\n   *   Resulting hast nodes.\n   */\n  function allBound(parent) {\n    // @ts-expect-error: that’s a state :)\n    return all(state, parent)\n  }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n *   mdast node to copy from.\n * @param {HastNodes} to\n *   hast node to copy into.\n * @returns {void}\n *   Nothing.\n */\nfunction patch(from, to) {\n  if (from.position) to.position = (0,unist_util_position__WEBPACK_IMPORTED_MODULE_4__.position)(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n *   Node type.\n * @param {MdastNodes} from\n *   mdast node to use data from.\n * @param {Type} to\n *   hast node to change.\n * @returns {Type | HastElement}\n *   Nothing.\n */\nfunction applyData(from, to) {\n  /** @type {Type | HastElement} */\n  let result = to\n\n  // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n  if (from && from.data) {\n    const hName = from.data.hName\n    const hChildren = from.data.hChildren\n    const hProperties = from.data.hProperties\n\n    if (typeof hName === 'string') {\n      // Transforming the node resulted in an element with a different name\n      // than wanted:\n      if (result.type === 'element') {\n        result.tagName = hName\n      }\n      // Transforming the node resulted in a non-element, which happens for\n      // raw, text, and root nodes (unless custom handlers are passed).\n      // The intent is likely to keep the content around (otherwise: pass\n      // `hChildren`).\n      else {\n        result = {\n          type: 'element',\n          tagName: hName,\n          properties: {},\n          children: []\n        }\n\n        // To do: next major: take the children from the `root`, or inject the\n        // raw/text/comment or so into the element?\n        // if ('children' in node) {\n        //   // @ts-expect-error: assume `children` are allowed in elements.\n        //   result.children = node.children\n        // } else {\n        //   // @ts-expect-error: assume `node` is allowed in elements.\n        //   result.children.push(node)\n        // }\n      }\n    }\n\n    if (result.type === 'element' && hProperties) {\n      result.properties = {...result.properties, ...hProperties}\n    }\n\n    if (\n      'children' in result &&\n      result.children &&\n      hChildren !== null &&\n      hChildren !== undefined\n    ) {\n      // @ts-expect-error: assume valid children are defined.\n      result.children = hChildren\n    }\n  }\n\n  return result\n}\n\n/**\n * Transform an mdast node into a hast node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   mdast node.\n * @param {MdastParents | null | undefined} [parent]\n *   Parent of `node`.\n * @returns {HastElementContent | Array<HastElementContent> | null | undefined}\n *   Resulting hast node.\n */\n// To do: next major: do not expose, keep bound.\nfunction one(state, node, parent) {\n  const type = node && node.type\n\n  // Fail on non-nodes.\n  if (!type) {\n    throw new Error('Expected node, got `' + node + '`')\n  }\n\n  if (own.call(state.handlers, type)) {\n    return state.handlers[type](state, node, parent)\n  }\n\n  if (state.passThrough && state.passThrough.includes(type)) {\n    // To do: next major: deep clone.\n    // @ts-expect-error: types of passed through nodes are expected to be added manually.\n    return 'children' in node ? {...node, children: all(state, node)} : node\n  }\n\n  if (state.unknownHandler) {\n    return state.unknownHandler(state, node, parent)\n  }\n\n  return defaultUnknownHandler(state, node)\n}\n\n/**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} parent\n *   mdast node to compile\n * @returns {Array<HastElementContent>}\n *   Resulting hast nodes.\n */\n// To do: next major: do not expose, keep bound.\nfunction all(state, parent) {\n  /** @type {Array<HastElementContent>} */\n  const values = []\n\n  if ('children' in parent) {\n    const nodes = parent.children\n    let index = -1\n    while (++index < nodes.length) {\n      const result = one(state, nodes[index], parent)\n\n      // To do: see if we van clean this? Can we merge texts?\n      if (result) {\n        if (index && nodes[index - 1].type === 'break') {\n          if (!Array.isArray(result) && result.type === 'text') {\n            result.value = result.value.replace(/^\\s+/, '')\n          }\n\n          if (!Array.isArray(result) && result.type === 'element') {\n            const head = result.children[0]\n\n            if (head && head.type === 'text') {\n              head.value = head.value.replace(/^\\s+/, '')\n            }\n          }\n        }\n\n        if (Array.isArray(result)) {\n          values.push(...result)\n        } else {\n          values.push(result)\n        }\n      }\n    }\n  }\n\n  return values\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   Unknown mdast node.\n * @returns {HastText | HastElement}\n *   Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n  const data = node.data || {}\n  /** @type {HastText | HastElement} */\n  const result =\n    'value' in node &&\n    !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n      ? {type: 'text', value: node.value}\n      : {\n          type: 'element',\n          tagName: 'div',\n          properties: {},\n          children: all(state, node)\n        }\n\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastContent} Type\n *   Node type.\n * @param {Array<Type>} nodes\n *   List of nodes to wrap.\n * @param {boolean | null | undefined} [loose=false]\n *   Whether to add line endings at start and end.\n * @returns {Array<Type | HastText>}\n *   Wrapped nodes.\n */\nfunction wrap(nodes, loose) {\n  /** @type {Array<Type | HastText>} */\n  const result = []\n  let index = -1\n\n  if (loose) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  while (++index < nodes.length) {\n    if (index) result.push({type: 'text', value: '\\n'})\n    result.push(nodes[index])\n  }\n\n  if (loose && nodes.length > 0) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  return result\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-hast/lib/state.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-markdown/lib/handle/inline-code.js":
/*!***********************************************************************!*\
  !*** ./node_modules/mdast-util-to-markdown/lib/handle/inline-code.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"inlineCode\": function() { return /* binding */ inlineCode; }\n/* harmony export */ });\n/* harmony import */ var _util_pattern_compile_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/pattern-compile.js */ \"./node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js\");\n/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n */\n\n\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @param {InlineCode} node\n * @param {Parent | undefined} _\n * @param {State} state\n * @returns {string}\n */\nfunction inlineCode(node, _, state) {\n  let value = node.value || ''\n  let sequence = '`'\n  let index = -1\n\n  // If there is a single grave accent on its own in the code, use a fence of\n  // two.\n  // If there are two in a row, use one.\n  while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n    sequence += '`'\n  }\n\n  // If this is not just spaces or eols (tabs don’t count), and either the\n  // first or last character are a space, eol, or tick, then pad with spaces.\n  if (\n    /[^ \\r\\n]/.test(value) &&\n    ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) || /^`|`$/.test(value))\n  ) {\n    value = ' ' + value + ' '\n  }\n\n  // We have a potential problem: certain characters after eols could result in\n  // blocks being seen.\n  // For example, if someone injected the string `'\\n# b'`, then that would\n  // result in an ATX heading.\n  // We can’t escape characters in `inlineCode`, but because eols are\n  // transformed to spaces when going from markdown to HTML anyway, we can swap\n  // them out.\n  while (++index < state.unsafe.length) {\n    const pattern = state.unsafe[index]\n    const expression = (0,_util_pattern_compile_js__WEBPACK_IMPORTED_MODULE_0__.patternCompile)(pattern)\n    /** @type {RegExpExecArray | null} */\n    let match\n\n    // Only look for `atBreak`s.\n    // Btw: note that `atBreak` patterns will always start the regex at LF or\n    // CR.\n    if (!pattern.atBreak) continue\n\n    while ((match = expression.exec(value))) {\n      let position = match.index\n\n      // Support CRLF (patterns only look for one of the characters).\n      if (\n        value.charCodeAt(position) === 10 /* `\\n` */ &&\n        value.charCodeAt(position - 1) === 13 /* `\\r` */\n      ) {\n        position--\n      }\n\n      value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n    }\n  }\n\n  return sequence + value + sequence\n}\n\n/**\n * @returns {string}\n */\nfunction inlineCodePeek() {\n  return '`'\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-markdown/lib/handle/inline-code.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-markdown/lib/handle/list-item.js":
/*!*********************************************************************!*\
  !*** ./node_modules/mdast-util-to-markdown/lib/handle/list-item.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"listItem\": function() { return /* binding */ listItem; }\n/* harmony export */ });\n/* harmony import */ var _util_check_bullet_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/check-bullet.js */ \"./node_modules/mdast-util-to-markdown/lib/util/check-bullet.js\");\n/* harmony import */ var _util_check_list_item_indent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/check-list-item-indent.js */ \"./node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js\");\n/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('../types.js').Map} Map\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Info} Info\n */\n\n\n\n\n/**\n * @param {ListItem} node\n * @param {Parent | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nfunction listItem(node, parent, state, info) {\n  const listItemIndent = (0,_util_check_list_item_indent_js__WEBPACK_IMPORTED_MODULE_0__.checkListItemIndent)(state)\n  let bullet = state.bulletCurrent || (0,_util_check_bullet_js__WEBPACK_IMPORTED_MODULE_1__.checkBullet)(state)\n\n  // Add the marker value for ordered lists.\n  if (parent && parent.type === 'list' && parent.ordered) {\n    bullet =\n      (typeof parent.start === 'number' && parent.start > -1\n        ? parent.start\n        : 1) +\n      (state.options.incrementListMarker === false\n        ? 0\n        : parent.children.indexOf(node)) +\n      bullet\n  }\n\n  let size = bullet.length + 1\n\n  if (\n    listItemIndent === 'tab' ||\n    (listItemIndent === 'mixed' &&\n      ((parent && parent.type === 'list' && parent.spread) || node.spread))\n  ) {\n    size = Math.ceil(size / 4) * 4\n  }\n\n  const tracker = state.createTracker(info)\n  tracker.move(bullet + ' '.repeat(size - bullet.length))\n  tracker.shift(size)\n  const exit = state.enter('listItem')\n  const value = state.indentLines(\n    state.containerFlow(node, tracker.current()),\n    map\n  )\n  exit()\n\n  return value\n\n  /** @type {Map} */\n  function map(line, index, blank) {\n    if (index) {\n      return (blank ? '' : ' '.repeat(size)) + line\n    }\n\n    return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-markdown/lib/handle/list-item.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-markdown/lib/util/association.js":
/*!*********************************************************************!*\
  !*** ./node_modules/mdast-util-to-markdown/lib/util/association.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"association\": function() { return /* binding */ association; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_decode_string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-decode-string */ \"./node_modules/micromark-util-decode-string/dev/index.js\");\n/**\n * @typedef {import('../types.js').AssociationId} AssociationId\n */\n\n\n\n/**\n * Get an identifier from an association to match it to others.\n *\n * Associations are nodes that match to something else through an ID:\n * <https://github.com/syntax-tree/mdast#association>.\n *\n * The `label` of an association is the string value: character escapes and\n * references work, and casing is intact.\n * The `identifier` is used to match one association to another:\n * controversially, character escapes and references don’t work in this\n * matching: `&copy;` does not match `©`, and `\\+` does not match `+`.\n *\n * But casing is ignored (and whitespace) is trimmed and collapsed: ` A\\nb`\n * matches `a b`.\n * So, we do prefer the label when figuring out how we’re going to serialize:\n * it has whitespace, casing, and we can ignore most useless character\n * escapes and all character references.\n *\n * @type {AssociationId}\n */\nfunction association(node) {\n  if (node.label || !node.identifier) {\n    return node.label || ''\n  }\n\n  return (0,micromark_util_decode_string__WEBPACK_IMPORTED_MODULE_0__.decodeString)(node.identifier)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-markdown/lib/util/association.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-markdown/lib/util/check-bullet.js":
/*!**********************************************************************!*\
  !*** ./node_modules/mdast-util-to-markdown/lib/util/check-bullet.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"checkBullet\": function() { return /* binding */ checkBullet; }\n/* harmony export */ });\n/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bullet'], null | undefined>}\n */\nfunction checkBullet(state) {\n  const marker = state.options.bullet || '*'\n\n  if (marker !== '*' && marker !== '+' && marker !== '-') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        marker +\n        '` for `options.bullet`, expected `*`, `+`, or `-`'\n    )\n  }\n\n  return marker\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-markdown/lib/util/check-bullet.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js":
/*!********************************************************************************!*\
  !*** ./node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"checkListItemIndent\": function() { return /* binding */ checkListItemIndent; }\n/* harmony export */ });\n/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['listItemIndent'], null | undefined>}\n */\nfunction checkListItemIndent(state) {\n  const style = state.options.listItemIndent || 'tab'\n\n  // To do: remove in a major.\n  // @ts-expect-error: deprecated.\n  if (style === 1 || style === '1') {\n    return 'one'\n  }\n\n  if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        style +\n        '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n    )\n  }\n\n  return style\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-markdown/lib/util/container-flow.js":
/*!************************************************************************!*\
  !*** ./node_modules/mdast-util-to-markdown/lib/util/container-flow.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"containerFlow\": function() { return /* binding */ containerFlow; }\n/* harmony export */ });\n/**\n * @typedef {import('../types.js').FlowContent} FlowContent\n * @typedef {import('../types.js').Node} Node\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').TrackFields} TrackFields\n */\n\n/**\n * @param {Parent & {children: Array<FlowContent>}} parent\n *   Parent of flow nodes.\n * @param {State} state\n *   Info passed around about the current state.\n * @param {TrackFields} info\n *   Info on where we are in the document we are generating.\n * @returns {string}\n *   Serialized children, joined by (blank) lines.\n */\nfunction containerFlow(parent, state, info) {\n  const indexStack = state.indexStack\n  const children = parent.children || []\n  const tracker = state.createTracker(info)\n  /** @type {Array<string>} */\n  const results = []\n  let index = -1\n\n  indexStack.push(-1)\n\n  while (++index < children.length) {\n    const child = children[index]\n\n    indexStack[indexStack.length - 1] = index\n\n    results.push(\n      tracker.move(\n        state.handle(child, parent, state, {\n          before: '\\n',\n          after: '\\n',\n          ...tracker.current()\n        })\n      )\n    )\n\n    if (child.type !== 'list') {\n      state.bulletLastUsed = undefined\n    }\n\n    if (index < children.length - 1) {\n      results.push(\n        tracker.move(between(child, children[index + 1], parent, state))\n      )\n    }\n  }\n\n  indexStack.pop()\n\n  return results.join('')\n}\n\n/**\n * @param {Node} left\n * @param {Node} right\n * @param {Parent} parent\n * @param {State} state\n * @returns {string}\n */\nfunction between(left, right, parent, state) {\n  let index = state.join.length\n\n  while (index--) {\n    const result = state.join[index](left, right, parent, state)\n\n    if (result === true || result === 1) {\n      break\n    }\n\n    if (typeof result === 'number') {\n      return '\\n'.repeat(1 + result)\n    }\n\n    if (result === false) {\n      return '\\n\\n<!---->\\n\\n'\n    }\n  }\n\n  return '\\n\\n'\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-markdown/lib/util/container-flow.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js":
/*!****************************************************************************!*\
  !*** ./node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"containerPhrasing\": function() { return /* binding */ containerPhrasing; }\n/* harmony export */ });\n/**\n * @typedef {import('../types.js').Handle} Handle\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').PhrasingContent} PhrasingContent\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * Serialize the children of a parent that contains phrasing children.\n *\n * These children will be joined flush together.\n *\n * @param {Parent & {children: Array<PhrasingContent>}} parent\n *   Parent of flow nodes.\n * @param {State} state\n *   Info passed around about the current state.\n * @param {Info} info\n *   Info on where we are in the document we are generating.\n * @returns {string}\n *   Serialized children, joined together.\n */\nfunction containerPhrasing(parent, state, info) {\n  const indexStack = state.indexStack\n  const children = parent.children || []\n  /** @type {Array<string>} */\n  const results = []\n  let index = -1\n  let before = info.before\n\n  indexStack.push(-1)\n  let tracker = state.createTracker(info)\n\n  while (++index < children.length) {\n    const child = children[index]\n    /** @type {string} */\n    let after\n\n    indexStack[indexStack.length - 1] = index\n\n    if (index + 1 < children.length) {\n      /** @type {Handle} */\n      // @ts-expect-error: hush, it’s actually a `zwitch`.\n      let handle = state.handle.handlers[children[index + 1].type]\n      /** @type {Handle} */\n      // @ts-expect-error: hush, it’s actually a `zwitch`.\n      if (handle && handle.peek) handle = handle.peek\n      after = handle\n        ? handle(children[index + 1], parent, state, {\n            before: '',\n            after: '',\n            ...tracker.current()\n          }).charAt(0)\n        : ''\n    } else {\n      after = info.after\n    }\n\n    // In some cases, html (text) can be found in phrasing right after an eol.\n    // When we’d serialize that, in most cases that would be seen as html\n    // (flow).\n    // As we can’t escape or so to prevent it from happening, we take a somewhat\n    // reasonable approach: replace that eol with a space.\n    // See: <https://github.com/syntax-tree/mdast-util-to-markdown/issues/15>\n    if (\n      results.length > 0 &&\n      (before === '\\r' || before === '\\n') &&\n      child.type === 'html'\n    ) {\n      results[results.length - 1] = results[results.length - 1].replace(\n        /(\\r?\\n|\\r)$/,\n        ' '\n      )\n      before = ' '\n\n      // To do: does this work to reset tracker?\n      tracker = state.createTracker(info)\n      tracker.move(results.join(''))\n    }\n\n    results.push(\n      tracker.move(\n        state.handle(child, parent, state, {\n          ...tracker.current(),\n          before,\n          after\n        })\n      )\n    )\n\n    before = results[results.length - 1].slice(-1)\n  }\n\n  indexStack.pop()\n\n  return results.join('')\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-markdown/lib/util/indent-lines.js":
/*!**********************************************************************!*\
  !*** ./node_modules/mdast-util-to-markdown/lib/util/indent-lines.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"indentLines\": function() { return /* binding */ indentLines; }\n/* harmony export */ });\n/**\n * @typedef {import('../types.js').IndentLines} IndentLines\n */\n\nconst eol = /\\r?\\n|\\r/g\n\n/**\n * @type {IndentLines}\n */\nfunction indentLines(value, map) {\n  /** @type {Array<string>} */\n  const result = []\n  let start = 0\n  let line = 0\n  /** @type {RegExpExecArray | null} */\n  let match\n\n  while ((match = eol.exec(value))) {\n    one(value.slice(start, match.index))\n    result.push(match[0])\n    start = match.index + match[0].length\n    line++\n  }\n\n  one(value.slice(start))\n\n  return result.join('')\n\n  /**\n   * @param {string} value\n   */\n  function one(value) {\n    result.push(map(value, line, !value))\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-markdown/lib/util/indent-lines.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js":
/*!*************************************************************************!*\
  !*** ./node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"patternCompile\": function() { return /* binding */ patternCompile; }\n/* harmony export */ });\n/**\n * @typedef {import('../types.js').Unsafe} Unsafe\n */\n\n/**\n * @param {Unsafe} pattern\n * @returns {RegExp}\n */\nfunction patternCompile(pattern) {\n  if (!pattern._compiled) {\n    const before =\n      (pattern.atBreak ? '[\\\\r\\\\n][\\\\t ]*' : '') +\n      (pattern.before ? '(?:' + pattern.before + ')' : '')\n\n    pattern._compiled = new RegExp(\n      (before ? '(' + before + ')' : '') +\n        (/[|\\\\{}()[\\]^$+*?.-]/.test(pattern.character) ? '\\\\' : '') +\n        pattern.character +\n        (pattern.after ? '(?:' + pattern.after + ')' : ''),\n      'g'\n    )\n  }\n\n  return pattern._compiled\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js":
/*!**************************************************************************!*\
  !*** ./node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"patternInScope\": function() { return /* binding */ patternInScope; }\n/* harmony export */ });\n/**\n * @typedef {import('../types.js').Unsafe} Unsafe\n * @typedef {import('../types.js').ConstructName} ConstructName\n */\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe} pattern\n * @returns {boolean}\n */\nfunction patternInScope(stack, pattern) {\n  return (\n    listInScope(stack, pattern.inConstruct, true) &&\n    !listInScope(stack, pattern.notInConstruct, false)\n  )\n}\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n  if (typeof list === 'string') {\n    list = [list]\n  }\n\n  if (!list || list.length === 0) {\n    return none\n  }\n\n  let index = -1\n\n  while (++index < list.length) {\n    if (stack.includes(list[index])) {\n      return true\n    }\n  }\n\n  return false\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-markdown/lib/util/safe.js":
/*!**************************************************************!*\
  !*** ./node_modules/mdast-util-to-markdown/lib/util/safe.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"safe\": function() { return /* binding */ safe; }\n/* harmony export */ });\n/* harmony import */ var _pattern_compile_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pattern-compile.js */ \"./node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js\");\n/* harmony import */ var _pattern_in_scope_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pattern-in-scope.js */ \"./node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js\");\n/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').SafeConfig} SafeConfig\n */\n\n\n\n\n/**\n * Make a string safe for embedding in markdown constructs.\n *\n * In markdown, almost all punctuation characters can, in certain cases,\n * result in something.\n * Whether they do is highly subjective to where they happen and in what\n * they happen.\n *\n * To solve this, `mdast-util-to-markdown` tracks:\n *\n * * Characters before and after something;\n * * What “constructs” we are in.\n *\n * This information is then used by this function to escape or encode\n * special characters.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {string | null | undefined} input\n *   Raw value to make safe.\n * @param {SafeConfig} config\n *   Configuration.\n * @returns {string}\n *   Serialized markdown safe for embedding.\n */\nfunction safe(state, input, config) {\n  const value = (config.before || '') + (input || '') + (config.after || '')\n  /** @type {Array<number>} */\n  const positions = []\n  /** @type {Array<string>} */\n  const result = []\n  /** @type {Record<number, {before: boolean, after: boolean}>} */\n  const infos = {}\n  let index = -1\n\n  while (++index < state.unsafe.length) {\n    const pattern = state.unsafe[index]\n\n    if (!(0,_pattern_in_scope_js__WEBPACK_IMPORTED_MODULE_0__.patternInScope)(state.stack, pattern)) {\n      continue\n    }\n\n    const expression = (0,_pattern_compile_js__WEBPACK_IMPORTED_MODULE_1__.patternCompile)(pattern)\n    /** @type {RegExpExecArray | null} */\n    let match\n\n    while ((match = expression.exec(value))) {\n      const before = 'before' in pattern || Boolean(pattern.atBreak)\n      const after = 'after' in pattern\n      const position = match.index + (before ? match[1].length : 0)\n\n      if (positions.includes(position)) {\n        if (infos[position].before && !before) {\n          infos[position].before = false\n        }\n\n        if (infos[position].after && !after) {\n          infos[position].after = false\n        }\n      } else {\n        positions.push(position)\n        infos[position] = {before, after}\n      }\n    }\n  }\n\n  positions.sort(numerical)\n\n  let start = config.before ? config.before.length : 0\n  const end = value.length - (config.after ? config.after.length : 0)\n  index = -1\n\n  while (++index < positions.length) {\n    const position = positions[index]\n\n    // Character before or after matched:\n    if (position < start || position >= end) {\n      continue\n    }\n\n    // If this character is supposed to be escaped because it has a condition on\n    // the next character, and the next character is definitly being escaped,\n    // then skip this escape.\n    if (\n      (position + 1 < end &&\n        positions[index + 1] === position + 1 &&\n        infos[position].after &&\n        !infos[position + 1].before &&\n        !infos[position + 1].after) ||\n      (positions[index - 1] === position - 1 &&\n        infos[position].before &&\n        !infos[position - 1].before &&\n        !infos[position - 1].after)\n    ) {\n      continue\n    }\n\n    if (start !== position) {\n      // If we have to use a character reference, an ampersand would be more\n      // correct, but as backslashes only care about punctuation, either will\n      // do the trick\n      result.push(escapeBackslashes(value.slice(start, position), '\\\\'))\n    }\n\n    start = position\n\n    if (\n      /[!-/:-@[-`{-~]/.test(value.charAt(position)) &&\n      (!config.encode || !config.encode.includes(value.charAt(position)))\n    ) {\n      // Character escape.\n      result.push('\\\\')\n    } else {\n      // Character reference.\n      result.push(\n        '&#x' + value.charCodeAt(position).toString(16).toUpperCase() + ';'\n      )\n      start++\n    }\n  }\n\n  result.push(escapeBackslashes(value.slice(start, end), config.after))\n\n  return result.join('')\n}\n\n/**\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\nfunction numerical(a, b) {\n  return a - b\n}\n\n/**\n * @param {string} value\n * @param {string} after\n * @returns {string}\n */\nfunction escapeBackslashes(value, after) {\n  const expression = /\\\\(?=[!-/:-@[-`{-~])/g\n  /** @type {Array<number>} */\n  const positions = []\n  /** @type {Array<string>} */\n  const results = []\n  const whole = value + after\n  let index = -1\n  let start = 0\n  /** @type {RegExpExecArray | null} */\n  let match\n\n  while ((match = expression.exec(whole))) {\n    positions.push(match.index)\n  }\n\n  while (++index < positions.length) {\n    if (start !== positions[index]) {\n      results.push(value.slice(start, positions[index]))\n    }\n\n    results.push('\\\\')\n    start = positions[index]\n  }\n\n  results.push(value.slice(start))\n\n  return results.join('')\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-markdown/lib/util/safe.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-markdown/lib/util/track.js":
/*!***************************************************************!*\
  !*** ./node_modules/mdast-util-to-markdown/lib/util/track.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"track\": function() { return /* binding */ track; }\n/* harmony export */ });\n/**\n * @typedef {import('../types.js').CreateTracker} CreateTracker\n * @typedef {import('../types.js').TrackCurrent} TrackCurrent\n * @typedef {import('../types.js').TrackMove} TrackMove\n * @typedef {import('../types.js').TrackShift} TrackShift\n */\n\n/**\n * Track positional info in the output.\n *\n * @type {CreateTracker}\n */\nfunction track(config) {\n  // Defaults are used to prevent crashes when older utilities somehow activate\n  // this code.\n  /* c8 ignore next 5 */\n  const options = config || {}\n  const now = options.now || {}\n  let lineShift = options.lineShift || 0\n  let line = now.line || 1\n  let column = now.column || 1\n\n  return {move, current, shift}\n\n  /**\n   * Get the current tracked info.\n   *\n   * @type {TrackCurrent}\n   */\n  function current() {\n    return {now: {line, column}, lineShift}\n  }\n\n  /**\n   * Define an increased line shift (the typical indent for lines).\n   *\n   * @type {TrackShift}\n   */\n  function shift(value) {\n    lineShift += value\n  }\n\n  /**\n   * Move past some generated markdown.\n   *\n   * @type {TrackMove}\n   */\n  function move(input) {\n    // eslint-disable-next-line unicorn/prefer-default-parameters\n    const value = input || ''\n    const chunks = value.split(/\\r?\\n|\\r/g)\n    const tail = chunks[chunks.length - 1]\n    line += chunks.length - 1\n    column =\n      chunks.length === 1 ? column + tail.length : 1 + tail.length + lineShift\n    return value\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-markdown/lib/util/track.js?");

/***/ }),

/***/ "./node_modules/mdast-util-to-string/lib/index.js":
/*!********************************************************!*\
  !*** ./node_modules/mdast-util-to-string/lib/index.js ***!
  \********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"toString\": function() { return /* binding */ toString; }\n/* harmony export */ });\n/**\n * @typedef {import('mdast').Root|import('mdast').Content} Node\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n *   Whether to use `alt` for `image`s.\n */\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} value\n *   Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Serialized `value`.\n */\nfunction toString(value, options) {\n  const includeImageAlt = (options || {}).includeImageAlt\n  return one(\n    value,\n    typeof includeImageAlt === 'boolean' ? includeImageAlt : true\n  )\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @returns {string}\n *   Serialized node.\n */\nfunction one(value, includeImageAlt) {\n  return (\n    (node(value) &&\n      (('value' in value && value.value) ||\n        (includeImageAlt && 'alt' in value && value.alt) ||\n        ('children' in value && all(value.children, includeImageAlt)))) ||\n    (Array.isArray(value) && all(value, includeImageAlt)) ||\n    ''\n  )\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array<unknown>} values\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @returns {string}\n *   Serialized nodes.\n */\nfunction all(values, includeImageAlt) {\n  /** @type {Array<string>} */\n  const result = []\n  let index = -1\n\n  while (++index < values.length) {\n    result[index] = one(values[index], includeImageAlt)\n  }\n\n  return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n *   Thing.\n * @returns {value is Node}\n *   Whether `value` is a node.\n */\nfunction node(value) {\n  return Boolean(value && typeof value === 'object')\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/mdast-util-to-string/lib/index.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/attention.js":
/*!*********************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/attention.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"attention\": function() { return /* binding */ attention; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ \"./node_modules/micromark-util-chunked/dev/index.js\");\n/* harmony import */ var micromark_util_classify_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-classify-character */ \"./node_modules/micromark-util-classify-character/dev/index.js\");\n/* harmony import */ var micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-resolve-all */ \"./node_modules/micromark-util-resolve-all/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Point} Point\n */\n\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst attention = {\n  name: 'attention',\n  tokenize: tokenizeAttention,\n  resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\nfunction resolveAllAttention(events, context) {\n  let index = -1\n  /** @type {number} */\n  let open\n  /** @type {Token} */\n  let group\n  /** @type {Token} */\n  let text\n  /** @type {Token} */\n  let openingSequence\n  /** @type {Token} */\n  let closingSequence\n  /** @type {number} */\n  let use\n  /** @type {Event[]} */\n  let nextEvents\n  /** @type {number} */\n  let offset\n\n  // Walk through all events.\n  //\n  // Note: performance of this is fine on an mb of normal markdown, but it’s\n  // a bottleneck for malicious stuff.\n  while (++index < events.length) {\n    // Find a token that can close.\n    if (\n      events[index][0] === 'enter' &&\n      events[index][1].type === 'attentionSequence' &&\n      events[index][1]._close\n    ) {\n      open = index\n\n      // Now walk back to find an opener.\n      while (open--) {\n        // Find a token that can open the closer.\n        if (\n          events[open][0] === 'exit' &&\n          events[open][1].type === 'attentionSequence' &&\n          events[open][1]._open &&\n          // If the markers are the same:\n          context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n            context.sliceSerialize(events[index][1]).charCodeAt(0)\n        ) {\n          // If the opening can close or the closing can open,\n          // and the close size *is not* a multiple of three,\n          // but the sum of the opening and closing size *is* multiple of three,\n          // then don’t match.\n          if (\n            (events[open][1]._close || events[index][1]._open) &&\n            (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n            !(\n              (events[open][1].end.offset -\n                events[open][1].start.offset +\n                events[index][1].end.offset -\n                events[index][1].start.offset) %\n              3\n            )\n          ) {\n            continue\n          }\n\n          // Number of markers to use from the sequence.\n          use =\n            events[open][1].end.offset - events[open][1].start.offset > 1 &&\n            events[index][1].end.offset - events[index][1].start.offset > 1\n              ? 2\n              : 1\n\n          const start = Object.assign({}, events[open][1].end)\n          const end = Object.assign({}, events[index][1].start)\n          movePoint(start, -use)\n          movePoint(end, use)\n\n          openingSequence = {\n            type: use > 1 ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.strongSequence : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.emphasisSequence,\n            start,\n            end: Object.assign({}, events[open][1].end)\n          }\n          closingSequence = {\n            type: use > 1 ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.strongSequence : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.emphasisSequence,\n            start: Object.assign({}, events[index][1].start),\n            end\n          }\n          text = {\n            type: use > 1 ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.strongText : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.emphasisText,\n            start: Object.assign({}, events[open][1].end),\n            end: Object.assign({}, events[index][1].start)\n          }\n          group = {\n            type: use > 1 ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.strong : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.emphasis,\n            start: Object.assign({}, openingSequence.start),\n            end: Object.assign({}, closingSequence.end)\n          }\n\n          events[open][1].end = Object.assign({}, openingSequence.start)\n          events[index][1].start = Object.assign({}, closingSequence.end)\n\n          nextEvents = []\n\n          // If there are more markers in the opening, add them before.\n          if (events[open][1].end.offset - events[open][1].start.offset) {\n            nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(nextEvents, [\n              ['enter', events[open][1], context],\n              ['exit', events[open][1], context]\n            ])\n          }\n\n          // Opening.\n          nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(nextEvents, [\n            ['enter', group, context],\n            ['enter', openingSequence, context],\n            ['exit', openingSequence, context],\n            ['enter', text, context]\n          ])\n\n          // Between.\n          nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(\n            nextEvents,\n            (0,micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__.resolveAll)(\n              context.parser.constructs.insideSpan.null,\n              events.slice(open + 1, index),\n              context\n            )\n          )\n\n          // Closing.\n          nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(nextEvents, [\n            ['exit', text, context],\n            ['enter', closingSequence, context],\n            ['exit', closingSequence, context],\n            ['exit', group, context]\n          ])\n\n          // If there are more markers in the closing, add them after.\n          if (events[index][1].end.offset - events[index][1].start.offset) {\n            offset = 2\n            nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(nextEvents, [\n              ['enter', events[index][1], context],\n              ['exit', events[index][1], context]\n            ])\n          } else {\n            offset = 0\n          }\n\n          (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, open - 1, index - open + 3, nextEvents)\n\n          index = open + nextEvents.length - offset - 2\n          break\n        }\n      }\n    }\n  }\n\n  // Remove remaining sequences.\n  index = -1\n\n  while (++index < events.length) {\n    if (events[index][1].type === 'attentionSequence') {\n      events[index][1].type = 'data'\n    }\n  }\n\n  return events\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeAttention(effects, ok) {\n  const attentionMarkers = this.parser.constructs.attentionMarkers.null\n  const previous = this.previous\n  const before = (0,micromark_util_classify_character__WEBPACK_IMPORTED_MODULE_4__.classifyCharacter)(previous)\n\n  /** @type {NonNullable<Code>} */\n  let marker\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.asterisk || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.underscore,\n      'expected asterisk or underscore'\n    )\n    effects.enter('attentionSequence')\n    marker = code\n    return sequence(code)\n  }\n\n  /** @type {State} */\n  function sequence(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return sequence\n    }\n\n    const token = effects.exit('attentionSequence')\n    const after = (0,micromark_util_classify_character__WEBPACK_IMPORTED_MODULE_4__.classifyCharacter)(code)\n\n    const open =\n      !after ||\n      (after === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_6__.constants.characterGroupPunctuation && before) ||\n      attentionMarkers.includes(code)\n    const close =\n      !before ||\n      (before === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_6__.constants.characterGroupPunctuation && after) ||\n      attentionMarkers.includes(previous)\n\n    token._open = Boolean(\n      marker === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.asterisk ? open : open && (before || !close)\n    )\n    token._close = Boolean(\n      marker === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.asterisk ? close : close && (after || !open)\n    )\n    return ok(code)\n  }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\nfunction movePoint(point, offset) {\n  point.column += offset\n  point.offset += offset\n  point._bufferIndex += offset\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/attention.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/autolink.js":
/*!********************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/autolink.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"autolink\": function() { return /* binding */ autolink; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst autolink = {name: 'autolink', tokenize: tokenizeAutolink}\n\n/** @type {Tokenizer} */\nfunction tokenizeAutolink(effects, ok, nok) {\n  let size = 1\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan, 'expected `<`')\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolink)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker)\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkProtocol)\n    return open\n  }\n\n  /** @type {State} */\n  function open(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) {\n      effects.consume(code)\n      return schemeOrEmailAtext\n    }\n\n    return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAtext)(code) ? emailAtext(code) : nok(code)\n  }\n\n  /** @type {State} */\n  function schemeOrEmailAtext(code) {\n    return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.plusSign ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)\n      ? schemeInsideOrEmailAtext(code)\n      : emailAtext(code)\n  }\n\n  /** @type {State} */\n  function schemeInsideOrEmailAtext(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon) {\n      effects.consume(code)\n      return urlInside\n    }\n\n    if (\n      (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.plusSign ||\n        code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash ||\n        code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot ||\n        (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) &&\n      size++ < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.autolinkSchemeSizeMax\n    ) {\n      effects.consume(code)\n      return schemeInsideOrEmailAtext\n    }\n\n    return emailAtext(code)\n  }\n\n  /** @type {State} */\n  function urlInside(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkProtocol)\n      return end(code)\n    }\n\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.space ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiControl)(code)\n    ) {\n      return nok(code)\n    }\n\n    effects.consume(code)\n    return urlInside\n  }\n\n  /** @type {State} */\n  function emailAtext(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.atSign) {\n      effects.consume(code)\n      size = 0\n      return emailAtSignOrDot\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAtext)(code)) {\n      effects.consume(code)\n      return emailAtext\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function emailAtSignOrDot(code) {\n    return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code) ? emailLabel(code) : nok(code)\n  }\n\n  /** @type {State} */\n  function emailLabel(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot) {\n      effects.consume(code)\n      size = 0\n      return emailAtSignOrDot\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) {\n      // Exit, then change the type.\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkProtocol).type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkEmail\n      return end(code)\n    }\n\n    return emailValue(code)\n  }\n\n  /** @type {State} */\n  function emailValue(code) {\n    if (\n      (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) &&\n      size++ < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.autolinkDomainSizeMax\n    ) {\n      effects.consume(code)\n      return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash ? emailValue : emailLabel\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function end(code) {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan, 'expected `>`')\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker)\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolink)\n    return ok\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/autolink.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/blank-line.js":
/*!**********************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/blank-line.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"blankLine\": function() { return /* binding */ blankLine; }\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst blankLine = {tokenize: tokenizeBlankLine, partial: true}\n\n/** @type {Tokenizer} */\nfunction tokenizeBlankLine(effects, ok, nok) {\n  return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_0__.factorySpace)(effects, afterWhitespace, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix)\n\n  /** @type {State} */\n  function afterWhitespace(code) {\n    return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code) ? ok(code) : nok(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/blank-line.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/block-quote.js":
/*!***********************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/block-quote.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"blockQuote\": function() { return /* binding */ blockQuote; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst blockQuote = {\n  name: 'blockQuote',\n  tokenize: tokenizeBlockQuoteStart,\n  continuation: {tokenize: tokenizeBlockQuoteContinuation},\n  exit\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n  const self = this\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) {\n      const state = self.containerState\n\n      ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(state, 'expected `containerState` to be defined in container')\n\n      if (!state.open) {\n        effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuote, {_container: true})\n        state.open = true\n      }\n\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefix)\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuoteMarker)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuoteMarker)\n      return after\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function after(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefixWhitespace)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefixWhitespace)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefix)\n      return ok\n    }\n\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefix)\n    return ok(code)\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n  return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(\n    effects,\n    effects.attempt(blockQuote, ok, nok),\n    micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix,\n    this.parser.constructs.disable.null.includes('codeIndented')\n      ? undefined\n      : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize\n  )\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n  effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuote)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/block-quote.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/character-escape.js":
/*!****************************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/character-escape.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"characterEscape\": function() { return /* binding */ characterEscape; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst characterEscape = {\n  name: 'characterEscape',\n  tokenize: tokenizeCharacterEscape\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash, 'expected `\\\\`')\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterEscape)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.escapeMarker)\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.escapeMarker)\n    return open\n  }\n\n  /** @type {State} */\n  function open(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiPunctuation)(code)) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterEscapeValue)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterEscapeValue)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterEscape)\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/character-escape.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/character-reference.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/character-reference.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"characterReference\": function() { return /* binding */ characterReference; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var decode_named_character_reference__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! decode-named-character-reference */ \"./node_modules/decode-named-character-reference/index.dom.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst characterReference = {\n  name: 'characterReference',\n  tokenize: tokenizeCharacterReference\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n  const self = this\n  let size = 0\n  /** @type {number} */\n  let max\n  /** @type {(code: Code) => code is number} */\n  let test\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.ampersand, 'expected `&`')\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReference)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarker)\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarker)\n    return open\n  }\n\n  /** @type {State} */\n  function open(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.numberSign) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarkerNumeric)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarkerNumeric)\n      return numeric\n    }\n\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceValue)\n    max = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.characterReferenceNamedSizeMax\n    test = micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlphanumeric\n    return value(code)\n  }\n\n  /** @type {State} */\n  function numeric(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.uppercaseX || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lowercaseX) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarkerHexadecimal)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarkerHexadecimal)\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceValue)\n      max = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.characterReferenceHexadecimalSizeMax\n      test = micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiHexDigit\n      return value\n    }\n\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceValue)\n    max = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.characterReferenceDecimalSizeMax\n    test = micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiDigit\n    return value(code)\n  }\n\n  /** @type {State} */\n  function value(code) {\n    /** @type {Token} */\n    let token\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.semicolon && size) {\n      token = effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceValue)\n\n      if (\n        test === micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlphanumeric &&\n        !(0,decode_named_character_reference__WEBPACK_IMPORTED_MODULE_5__.decodeNamedCharacterReference)(self.sliceSerialize(token))\n      ) {\n        return nok(code)\n      }\n\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarker)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarker)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReference)\n      return ok\n    }\n\n    if (test(code) && size++ < max) {\n      effects.consume(code)\n      return value\n    }\n\n    return nok(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/character-reference.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/code-fenced.js":
/*!***********************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/code-fenced.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"codeFenced\": function() { return /* binding */ codeFenced; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst codeFenced = {\n  name: 'codeFenced',\n  tokenize: tokenizeCodeFenced,\n  concrete: true\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n  const self = this\n  /** @type {Construct} */\n  const closingFenceConstruct = {tokenize: tokenizeClosingFence, partial: true}\n  /** @type {Construct} */\n  const nonLazyLine = {tokenize: tokenizeNonLazyLine, partial: true}\n  const tail = this.events[this.events.length - 1]\n  const initialPrefix =\n    tail && tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix\n      ? tail[2].sliceSerialize(tail[1], true).length\n      : 0\n  let sizeOpen = 0\n  /** @type {NonNullable<Code>} */\n  let marker\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.tilde,\n      'expected `` ` `` or `~`'\n    )\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeFenced)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeFencedFence)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeFencedFenceSequence)\n    marker = code\n    return sequenceOpen(code)\n  }\n\n  /** @type {State} */\n  function sequenceOpen(code) {\n    if (code === marker) {\n      effects.consume(code)\n      sizeOpen++\n      return sequenceOpen\n    }\n\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeFencedFenceSequence)\n    return sizeOpen < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.codeFencedSequenceSizeMin\n      ? nok(code)\n      : (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(effects, infoOpen, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)(code)\n  }\n\n  /** @type {State} */\n  function infoOpen(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) {\n      return openAfter(code)\n    }\n\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeFencedFenceInfo)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString})\n    return info(code)\n  }\n\n  /** @type {State} */\n  function info(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEndingOrSpace)(code)) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkString)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeFencedFenceInfo)\n      return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(effects, infoAfter, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent && code === marker) return nok(code)\n    effects.consume(code)\n    return info\n  }\n\n  /** @type {State} */\n  function infoAfter(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) {\n      return openAfter(code)\n    }\n\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeFencedFenceMeta)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString})\n    return meta(code)\n  }\n\n  /** @type {State} */\n  function meta(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkString)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeFencedFenceMeta)\n      return openAfter(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent && code === marker) return nok(code)\n    effects.consume(code)\n    return meta\n  }\n\n  /** @type {State} */\n  function openAfter(code) {\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeFencedFence)\n    return self.interrupt ? ok(code) : contentStart(code)\n  }\n\n  /** @type {State} */\n  function contentStart(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof) {\n      return after(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) {\n      return effects.attempt(\n        nonLazyLine,\n        effects.attempt(\n          closingFenceConstruct,\n          after,\n          initialPrefix\n            ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(\n                effects,\n                contentStart,\n                micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix,\n                initialPrefix + 1\n              )\n            : contentStart\n        ),\n        after\n      )(code)\n    }\n\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeFlowValue)\n    return contentContinue(code)\n  }\n\n  /** @type {State} */\n  function contentContinue(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeFlowValue)\n      return contentStart(code)\n    }\n\n    effects.consume(code)\n    return contentContinue\n  }\n\n  /** @type {State} */\n  function after(code) {\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeFenced)\n    return ok(code)\n  }\n\n  /** @type {Tokenizer} */\n  function tokenizeNonLazyLine(effects, ok, nok) {\n    const self = this\n\n    return start\n\n    /** @type {State} */\n    function start(code) {\n      ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code), 'expected eol')\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n      return lineStart\n    }\n\n    /** @type {State} */\n    function lineStart(code) {\n      return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n    }\n  }\n\n  /** @type {Tokenizer} */\n  function tokenizeClosingFence(effects, ok, nok) {\n    let size = 0\n\n    return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(\n      effects,\n      closingSequenceStart,\n      micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix,\n      this.parser.constructs.disable.null.includes('codeIndented')\n        ? undefined\n        : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.tabSize\n    )\n\n    /** @type {State} */\n    function closingSequenceStart(code) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeFencedFence)\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeFencedFenceSequence)\n      return closingSequence(code)\n    }\n\n    /** @type {State} */\n    function closingSequence(code) {\n      if (code === marker) {\n        effects.consume(code)\n        size++\n        return closingSequence\n      }\n\n      if (size < sizeOpen) return nok(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeFencedFenceSequence)\n      return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(effects, closingSequenceEnd, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)(code)\n    }\n\n    /** @type {State} */\n    function closingSequenceEnd(code) {\n      if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) {\n        effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeFencedFence)\n        return ok(code)\n      }\n\n      return nok(code)\n    }\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/code-fenced.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/code-indented.js":
/*!*************************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/code-indented.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"codeIndented\": function() { return /* binding */ codeIndented; }\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst codeIndented = {\n  name: 'codeIndented',\n  tokenize: tokenizeCodeIndented\n}\n\n/** @type {Construct} */\nconst indentedContent = {tokenize: tokenizeIndentedContent, partial: true}\n\n/** @type {Tokenizer} */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n  const self = this\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_0__.types.codeIndented)\n    return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_1__.factorySpace)(\n      effects,\n      afterStartPrefix,\n      micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_0__.types.linePrefix,\n      micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.tabSize + 1\n    )(code)\n  }\n\n  /** @type {State} */\n  function afterStartPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return tail &&\n      tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_0__.types.linePrefix &&\n      tail[2].sliceSerialize(tail[1], true).length >= micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.tabSize\n      ? afterPrefix(code)\n      : nok(code)\n  }\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof) {\n      return after(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n      return effects.attempt(indentedContent, afterPrefix, after)(code)\n    }\n\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_0__.types.codeFlowValue)\n    return content(code)\n  }\n\n  /** @type {State} */\n  function content(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_0__.types.codeFlowValue)\n      return afterPrefix(code)\n    }\n\n    effects.consume(code)\n    return content\n  }\n\n  /** @type {State} */\n  function after(code) {\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_0__.types.codeIndented)\n    return ok(code)\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeIndentedContent(effects, ok, nok) {\n  const self = this\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    // If this is a lazy line, it can’t be code.\n    if (self.parser.lazy[self.now().line]) {\n      return nok(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_0__.types.lineEnding)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_0__.types.lineEnding)\n      return start\n    }\n\n    return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_1__.factorySpace)(\n      effects,\n      afterPrefix,\n      micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_0__.types.linePrefix,\n      micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.tabSize + 1\n    )(code)\n  }\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return tail &&\n      tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_0__.types.linePrefix &&\n      tail[2].sliceSerialize(tail[1], true).length >= micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.tabSize\n      ? ok(code)\n      : (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)\n      ? start(code)\n      : nok(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/code-indented.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/code-text.js":
/*!*********************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/code-text.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"codeText\": function() { return /* binding */ codeText; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst codeText = {\n  name: 'codeText',\n  tokenize: tokenizeCodeText,\n  resolve: resolveCodeText,\n  previous\n}\n\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n  let tailExitIndex = events.length - 4\n  let headEnterIndex = 3\n  /** @type {number} */\n  let index\n  /** @type {number|undefined} */\n  let enter\n\n  // If we start and end with an EOL or a space.\n  if (\n    (events[headEnterIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding ||\n      events[headEnterIndex][1].type === 'space') &&\n    (events[tailExitIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding ||\n      events[tailExitIndex][1].type === 'space')\n  ) {\n    index = headEnterIndex\n\n    // And we have data.\n    while (++index < tailExitIndex) {\n      if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData) {\n        // Then we have padding.\n        events[headEnterIndex][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextPadding\n        events[tailExitIndex][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextPadding\n        headEnterIndex += 2\n        tailExitIndex -= 2\n        break\n      }\n    }\n  }\n\n  // Merge adjacent spaces and data.\n  index = headEnterIndex - 1\n  tailExitIndex++\n\n  while (++index <= tailExitIndex) {\n    if (enter === undefined) {\n      if (\n        index !== tailExitIndex &&\n        events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding\n      ) {\n        enter = index\n      }\n    } else if (\n      index === tailExitIndex ||\n      events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding\n    ) {\n      events[enter][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData\n\n      if (index !== enter + 2) {\n        events[enter][1].end = events[index - 1][1].end\n        events.splice(enter + 2, index - enter - 2)\n        tailExitIndex -= index - enter - 2\n        index = enter + 2\n      }\n\n      enter = undefined\n    }\n  }\n\n  return events\n}\n\n/** @type {Previous} */\nfunction previous(code) {\n  // If there is a previous code, there will always be a tail.\n  return (\n    code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent ||\n    this.events[this.events.length - 1][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.characterEscape\n  )\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeCodeText(effects, ok, nok) {\n  const self = this\n  let sizeOpen = 0\n  /** @type {number} */\n  let size\n  /** @type {Token} */\n  let token\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent, 'expected `` ` ``')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(previous.call(self, self.previous), 'expected correct previous')\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeText)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextSequence)\n    return openingSequence(code)\n  }\n\n  /** @type {State} */\n  function openingSequence(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent) {\n      effects.consume(code)\n      sizeOpen++\n      return openingSequence\n    }\n\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextSequence)\n    return gap(code)\n  }\n\n  /** @type {State} */\n  function gap(code) {\n    // EOF.\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof) {\n      return nok(code)\n    }\n\n    // Closing fence?\n    // Could also be data.\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent) {\n      token = effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextSequence)\n      size = 0\n      return closingSequence(code)\n    }\n\n    // Tabs don’t work, and virtual spaces don’t make sense.\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.space) {\n      effects.enter('space')\n      effects.consume(code)\n      effects.exit('space')\n      return gap\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n      return gap\n    }\n\n    // Data.\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData)\n    return data(code)\n  }\n\n  // In code.\n  /** @type {State} */\n  function data(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.space ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)\n    ) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData)\n      return gap(code)\n    }\n\n    effects.consume(code)\n    return data\n  }\n\n  // Closing fence.\n  /** @type {State} */\n  function closingSequence(code) {\n    // More.\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent) {\n      effects.consume(code)\n      size++\n      return closingSequence\n    }\n\n    // Done!\n    if (size === sizeOpen) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextSequence)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeText)\n      return ok(code)\n    }\n\n    // More or less accents: mark as data.\n    token.type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData\n    return data(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/code-text.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/content.js":
/*!*******************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/content.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"content\": function() { return /* binding */ content; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-subtokenize */ \"./node_modules/micromark-util-subtokenize/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n\n\n\n\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nconst content = {tokenize: tokenizeContent, resolve: resolveContent}\n\n/** @type {Construct} */\nconst continuationConstruct = {tokenize: tokenizeContinuation, partial: true}\n\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n  ;(0,micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_1__.subtokenize)(events)\n  return events\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeContent(effects, ok) {\n  /** @type {Token} */\n  let previous\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof && !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code),\n      'expected no eof or eol'\n    )\n\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.content)\n    previous = effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent, {\n      contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.contentTypeContent\n    })\n    return data(code)\n  }\n\n  /** @type {State} */\n  function data(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof) {\n      return contentEnd(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n      return effects.check(\n        continuationConstruct,\n        contentContinue,\n        contentEnd\n      )(code)\n    }\n\n    // Data.\n    effects.consume(code)\n    return data\n  }\n\n  /** @type {State} */\n  function contentEnd(code) {\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.content)\n    return ok(code)\n  }\n\n  /** @type {State} */\n  function contentContinue(code) {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code), 'expected eol')\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent)\n    previous.next = effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent, {\n      contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.contentTypeContent,\n      previous\n    })\n    previous = previous.next\n    return data\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeContinuation(effects, ok, nok) {\n  const self = this\n\n  return startLookahead\n\n  /** @type {State} */\n  function startLookahead(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code), 'expected a line ending')\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding)\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding)\n    return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__.factorySpace)(effects, prefixed, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix)\n  }\n\n  /** @type {State} */\n  function prefixed(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n      return nok(code)\n    }\n\n    const tail = self.events[self.events.length - 1]\n\n    if (\n      !self.parser.constructs.disable.null.includes('codeIndented') &&\n      tail &&\n      tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix &&\n      tail[2].sliceSerialize(tail[1], true).length >= micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize\n    ) {\n      return ok(code)\n    }\n\n    return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/content.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/definition.js":
/*!**********************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/definition.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"definition\": function() { return /* binding */ definition; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_factory_destination__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-destination */ \"./node_modules/micromark-factory-destination/dev/index.js\");\n/* harmony import */ var micromark_factory_label__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-label */ \"./node_modules/micromark-factory-label/dev/index.js\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_factory_title__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-factory-title */ \"./node_modules/micromark-factory-title/dev/index.js\");\n/* harmony import */ var micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-factory-whitespace */ \"./node_modules/micromark-factory-whitespace/dev/index.js\");\n/* harmony import */ var micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-normalize-identifier */ \"./node_modules/micromark-util-normalize-identifier/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst definition = {name: 'definition', tokenize: tokenizeDefinition}\n\n/** @type {Construct} */\nconst titleConstruct = {tokenize: tokenizeTitle, partial: true}\n\n/** @type {Tokenizer} */\nfunction tokenizeDefinition(effects, ok, nok) {\n  const self = this\n  /** @type {string} */\n  let identifier\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket, 'expected `[`')\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.definition)\n    return micromark_factory_label__WEBPACK_IMPORTED_MODULE_3__.factoryLabel.call(\n      self,\n      effects,\n      labelAfter,\n      nok,\n      micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.definitionLabel,\n      micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.definitionLabelMarker,\n      micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.definitionLabelString\n    )(code)\n  }\n\n  /** @type {State} */\n  function labelAfter(code) {\n    identifier = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_4__.normalizeIdentifier)(\n      self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n    )\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.definitionMarker)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.definitionMarker)\n\n      // Note: blank lines can’t exist in content.\n      return (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_5__.factoryWhitespace)(\n        effects,\n        (0,micromark_factory_destination__WEBPACK_IMPORTED_MODULE_6__.factoryDestination)(\n          effects,\n          effects.attempt(\n            titleConstruct,\n            (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)(effects, after, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.whitespace),\n            (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)(effects, after, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.whitespace)\n          ),\n          nok,\n          micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.definitionDestination,\n          micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.definitionDestinationLiteral,\n          micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.definitionDestinationLiteralMarker,\n          micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.definitionDestinationRaw,\n          micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.definitionDestinationString\n        )\n      )\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function after(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_8__.markdownLineEnding)(code)) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.definition)\n\n      if (!self.parser.defined.includes(identifier)) {\n        self.parser.defined.push(identifier)\n      }\n\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeTitle(effects, ok, nok) {\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_8__.markdownLineEndingOrSpace)(code)\n      ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_5__.factoryWhitespace)(effects, before)(code)\n      : nok(code)\n  }\n\n  /** @type {State} */\n  function before(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.quotationMark ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.apostrophe ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftParenthesis\n    ) {\n      return (0,micromark_factory_title__WEBPACK_IMPORTED_MODULE_9__.factoryTitle)(\n        effects,\n        (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)(effects, after, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.whitespace),\n        nok,\n        micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.definitionTitle,\n        micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.definitionTitleMarker,\n        micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.definitionTitleString\n      )(code)\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function after(code) {\n    return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_8__.markdownLineEnding)(code) ? ok(code) : nok(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/definition.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"hardBreakEscape\": function() { return /* binding */ hardBreakEscape; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst hardBreakEscape = {\n  name: 'hardBreakEscape',\n  tokenize: tokenizeHardBreakEscape\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash, 'expected `\\\\`')\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.hardBreakEscape)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.escapeMarker)\n    effects.consume(code)\n    return open\n  }\n\n  /** @type {State} */\n  function open(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.escapeMarker)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.hardBreakEscape)\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/heading-atx.js":
/*!***********************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/heading-atx.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"headingAtx\": function() { return /* binding */ headingAtx; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-chunked */ \"./node_modules/micromark-util-chunked/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst headingAtx = {\n  name: 'headingAtx',\n  tokenize: tokenizeHeadingAtx,\n  resolve: resolveHeadingAtx\n}\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n  let contentEnd = events.length - 2\n  let contentStart = 3\n  /** @type {Token} */\n  let content\n  /** @type {Token} */\n  let text\n\n  // Prefix whitespace, part of the opening.\n  if (events[contentStart][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace) {\n    contentStart += 2\n  }\n\n  // Suffix whitespace, part of the closing.\n  if (\n    contentEnd - 2 > contentStart &&\n    events[contentEnd][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace\n  ) {\n    contentEnd -= 2\n  }\n\n  if (\n    events[contentEnd][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence &&\n    (contentStart === contentEnd - 1 ||\n      (contentEnd - 4 > contentStart &&\n        events[contentEnd - 2][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace))\n  ) {\n    contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n  }\n\n  if (contentEnd > contentStart) {\n    content = {\n      type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingText,\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end\n    }\n    text = {\n      type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkText,\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end,\n      // @ts-expect-error Constants are fine to assign.\n      contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.contentTypeText\n    }\n\n    ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__.splice)(events, contentStart, contentEnd - contentStart + 1, [\n      ['enter', content, context],\n      ['enter', text, context],\n      ['exit', text, context],\n      ['exit', content, context]\n    ])\n  }\n\n  return events\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n  const self = this\n  let size = 0\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign, 'expected `#`')\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeading)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence)\n    return fenceOpenInside(code)\n  }\n\n  /** @type {State} */\n  function fenceOpenInside(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign &&\n      size++ < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.atxHeadingOpeningFenceSizeMax\n    ) {\n      effects.consume(code)\n      return fenceOpenInside\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEndingOrSpace)(code)) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence)\n      return self.interrupt ? ok(code) : headingBreak(code)\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function headingBreak(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence)\n      return sequence(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeading)\n      return ok(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownSpace)(code)) {\n      return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__.factorySpace)(effects, headingBreak, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)(code)\n    }\n\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingText)\n    return data(code)\n  }\n\n  /** @type {State} */\n  function sequence(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign) {\n      effects.consume(code)\n      return sequence\n    }\n\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence)\n    return headingBreak(code)\n  }\n\n  /** @type {State} */\n  function data(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.eof ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEndingOrSpace)(code)\n    ) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingText)\n      return headingBreak(code)\n    }\n\n    effects.consume(code)\n    return data\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/heading-atx.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/html-flow.js":
/*!*********************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/html-flow.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"htmlFlow\": function() { return /* binding */ htmlFlow; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_html_tag_name__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-html-tag-name */ \"./node_modules/micromark-util-html-tag-name/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var _blank_line_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./blank-line.js */ \"./node_modules/micromark-core-commonmark/dev/lib/blank-line.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst htmlFlow = {\n  name: 'htmlFlow',\n  tokenize: tokenizeHtmlFlow,\n  resolveTo: resolveToHtmlFlow,\n  concrete: true\n}\n\n/** @type {Construct} */\nconst nextBlankConstruct = {tokenize: tokenizeNextBlank, partial: true}\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n  let index = events.length\n\n  while (index--) {\n    if (\n      events[index][0] === 'enter' &&\n      events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlow\n    ) {\n      break\n    }\n  }\n\n  if (index > 1 && events[index - 2][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix) {\n    // Add the prefix start to the HTML token.\n    events[index][1].start = events[index - 2][1].start\n    // Add the prefix start to the HTML line token.\n    events[index + 1][1].start = events[index - 2][1].start\n    // Remove the line prefix.\n    events.splice(index - 2, 2)\n  }\n\n  return events\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n  const self = this\n  /** @type {number} */\n  let kind\n  /** @type {boolean} */\n  let startTag\n  /** @type {string} */\n  let buffer\n  /** @type {number} */\n  let index\n  /** @type {Code} */\n  let marker\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lessThan, 'expected `<`')\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlow)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData)\n    effects.consume(code)\n    return open\n  }\n\n  /** @type {State} */\n  function open(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.exclamationMark) {\n      effects.consume(code)\n      return declarationStart\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash) {\n      effects.consume(code)\n      return tagCloseStart\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.questionMark) {\n      effects.consume(code)\n      kind = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlInstruction\n      // While we’re in an instruction instead of a declaration, we’re on a `?`\n      // right now, so we do need to search for `>`, similar to declarations.\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code)) {\n      effects.consume(code)\n      buffer = String.fromCharCode(code)\n      startTag = true\n      return tagName\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function declarationStart(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash) {\n      effects.consume(code)\n      kind = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComment\n      return commentOpenInside\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.leftSquareBracket) {\n      effects.consume(code)\n      kind = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlCdata\n      buffer = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.cdataOpeningString\n      index = 0\n      return cdataOpenInside\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code)) {\n      effects.consume(code)\n      kind = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlDeclaration\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function commentOpenInside(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash) {\n      effects.consume(code)\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function cdataOpenInside(code) {\n    if (code === buffer.charCodeAt(index++)) {\n      effects.consume(code)\n      return index === buffer.length\n        ? self.interrupt\n          ? ok\n          : continuation\n        : cdataOpenInside\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function tagCloseStart(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code)) {\n      effects.consume(code)\n      buffer = String.fromCharCode(code)\n      return tagName\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function tagName(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEndingOrSpace)(code)\n    ) {\n      if (\n        code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash &&\n        startTag &&\n        micromark_util_html_tag_name__WEBPACK_IMPORTED_MODULE_5__.htmlRawNames.includes(buffer.toLowerCase())\n      ) {\n        kind = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlRaw\n        return self.interrupt ? ok(code) : continuation(code)\n      }\n\n      if (micromark_util_html_tag_name__WEBPACK_IMPORTED_MODULE_5__.htmlBlockNames.includes(buffer.toLowerCase())) {\n        kind = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlBasic\n\n        if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash) {\n          effects.consume(code)\n          return basicSelfClosing\n        }\n\n        return self.interrupt ? ok(code) : continuation(code)\n      }\n\n      kind = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComplete\n      // Do not support complete HTML when interrupting\n      return self.interrupt && !self.parser.lazy[self.now().line]\n        ? nok(code)\n        : startTag\n        ? completeAttributeNameBefore(code)\n        : completeClosingTagAfter(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlphanumeric)(code)) {\n      effects.consume(code)\n      buffer += String.fromCharCode(code)\n      return tagName\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function basicSelfClosing(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan) {\n      effects.consume(code)\n      return self.interrupt ? ok : continuation\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function completeClosingTagAfter(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n      effects.consume(code)\n      return completeClosingTagAfter\n    }\n\n    return completeEnd(code)\n  }\n\n  /** @type {State} */\n  function completeAttributeNameBefore(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash) {\n      effects.consume(code)\n      return completeEnd\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.colon || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.underscore || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code)) {\n      effects.consume(code)\n      return completeAttributeName\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n      effects.consume(code)\n      return completeAttributeNameBefore\n    }\n\n    return completeEnd(code)\n  }\n\n  /** @type {State} */\n  function completeAttributeName(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dot ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.colon ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.underscore ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlphanumeric)(code)\n    ) {\n      effects.consume(code)\n      return completeAttributeName\n    }\n\n    return completeAttributeNameAfter(code)\n  }\n\n  /** @type {State} */\n  function completeAttributeNameAfter(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.equalsTo) {\n      effects.consume(code)\n      return completeAttributeValueBefore\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n      effects.consume(code)\n      return completeAttributeNameAfter\n    }\n\n    return completeAttributeNameBefore(code)\n  }\n\n  /** @type {State} */\n  function completeAttributeValueBefore(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lessThan ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.equalsTo ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent\n    ) {\n      return nok(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.quotationMark || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.apostrophe) {\n      effects.consume(code)\n      marker = code\n      return completeAttributeValueQuoted\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n      effects.consume(code)\n      return completeAttributeValueBefore\n    }\n\n    marker = null\n    return completeAttributeValueUnquoted(code)\n  }\n\n  /** @type {State} */\n  function completeAttributeValueQuoted(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n      return nok(code)\n    }\n\n    if (code === marker) {\n      effects.consume(code)\n      return completeAttributeValueQuotedAfter\n    }\n\n    effects.consume(code)\n    return completeAttributeValueQuoted\n  }\n\n  /** @type {State} */\n  function completeAttributeValueUnquoted(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.quotationMark ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.apostrophe ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lessThan ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.equalsTo ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEndingOrSpace)(code)\n    ) {\n      return completeAttributeNameAfter(code)\n    }\n\n    effects.consume(code)\n    return completeAttributeValueUnquoted\n  }\n\n  /** @type {State} */\n  function completeAttributeValueQuotedAfter(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)\n    ) {\n      return completeAttributeNameBefore(code)\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function completeEnd(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan) {\n      effects.consume(code)\n      return completeAfter\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function completeAfter(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n      effects.consume(code)\n      return completeAfter\n    }\n\n    return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)\n      ? continuation(code)\n      : nok(code)\n  }\n\n  /** @type {State} */\n  function continuation(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash && kind === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComment) {\n      effects.consume(code)\n      return continuationCommentInside\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lessThan && kind === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlRaw) {\n      effects.consume(code)\n      return continuationRawTagOpen\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan && kind === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlDeclaration) {\n      effects.consume(code)\n      return continuationClose\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.questionMark && kind === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlInstruction) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.rightSquareBracket && kind === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlCdata) {\n      effects.consume(code)\n      return continuationCharacterDataInside\n    }\n\n    if (\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code) &&\n      (kind === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlBasic || kind === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComplete)\n    ) {\n      return effects.check(\n        nextBlankConstruct,\n        continuationClose,\n        continuationAtLineEnding\n      )(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n      return continuationAtLineEnding(code)\n    }\n\n    effects.consume(code)\n    return continuation\n  }\n\n  /** @type {State} */\n  function continuationAtLineEnding(code) {\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData)\n    return htmlContinueStart(code)\n  }\n\n  /** @type {State} */\n  function htmlContinueStart(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof) {\n      return done(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n      return effects.attempt(\n        {tokenize: htmlLineEnd, partial: true},\n        htmlContinueStart,\n        done\n      )(code)\n    }\n\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData)\n    return continuation(code)\n  }\n\n  /** @type {Tokenizer} */\n  function htmlLineEnd(effects, ok, nok) {\n    return start\n\n    /** @type {State} */\n    function start(code) {\n      ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected eol')\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n      return lineStart\n    }\n\n    /** @type {State} */\n    function lineStart(code) {\n      return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n    }\n  }\n\n  /** @type {State} */\n  function continuationCommentInside(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    return continuation(code)\n  }\n\n  /** @type {State} */\n  function continuationRawTagOpen(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash) {\n      effects.consume(code)\n      buffer = ''\n      return continuationRawEndTag\n    }\n\n    return continuation(code)\n  }\n\n  /** @type {State} */\n  function continuationRawEndTag(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan &&\n      micromark_util_html_tag_name__WEBPACK_IMPORTED_MODULE_5__.htmlRawNames.includes(buffer.toLowerCase())\n    ) {\n      effects.consume(code)\n      return continuationClose\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code) && buffer.length < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlRawSizeMax) {\n      effects.consume(code)\n      buffer += String.fromCharCode(code)\n      return continuationRawEndTag\n    }\n\n    return continuation(code)\n  }\n\n  /** @type {State} */\n  function continuationCharacterDataInside(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.rightSquareBracket) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    return continuation(code)\n  }\n\n  /** @type {State} */\n  function continuationDeclarationInside(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan) {\n      effects.consume(code)\n      return continuationClose\n    }\n\n    // More dashes.\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash && kind === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComment) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    return continuation(code)\n  }\n\n  /** @type {State} */\n  function continuationClose(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData)\n      return done(code)\n    }\n\n    effects.consume(code)\n    return continuationClose\n  }\n\n  /** @type {State} */\n  function done(code) {\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlow)\n    return ok(code)\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeNextBlank(effects, ok, nok) {\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected a line ending')\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEndingBlank)\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEndingBlank)\n    return effects.attempt(_blank_line_js__WEBPACK_IMPORTED_MODULE_6__.blankLine, ok, nok)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/html-flow.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/html-text.js":
/*!*********************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/html-text.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"htmlText\": function() { return /* binding */ htmlText; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst htmlText = {name: 'htmlText', tokenize: tokenizeHtmlText}\n\n/** @type {Tokenizer} */\nfunction tokenizeHtmlText(effects, ok, nok) {\n  const self = this\n  /** @type {NonNullable<Code>|undefined} */\n  let marker\n  /** @type {string} */\n  let buffer\n  /** @type {number} */\n  let index\n  /** @type {State} */\n  let returnState\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan, 'expected `<`')\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlText)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData)\n    effects.consume(code)\n    return open\n  }\n\n  /** @type {State} */\n  function open(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.exclamationMark) {\n      effects.consume(code)\n      return declarationOpen\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash) {\n      effects.consume(code)\n      return tagCloseStart\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.questionMark) {\n      effects.consume(code)\n      return instruction\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) {\n      effects.consume(code)\n      return tagOpen\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function declarationOpen(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) {\n      effects.consume(code)\n      return commentOpen\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket) {\n      effects.consume(code)\n      buffer = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.cdataOpeningString\n      index = 0\n      return cdataOpen\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) {\n      effects.consume(code)\n      return declaration\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function commentOpen(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) {\n      effects.consume(code)\n      return commentStart\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function commentStart(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) {\n      return nok(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) {\n      effects.consume(code)\n      return commentStartDash\n    }\n\n    return comment(code)\n  }\n\n  /** @type {State} */\n  function commentStartDash(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) {\n      return nok(code)\n    }\n\n    return comment(code)\n  }\n\n  /** @type {State} */\n  function comment(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n      return nok(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) {\n      effects.consume(code)\n      return commentClose\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n      returnState = comment\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return comment\n  }\n\n  /** @type {State} */\n  function commentClose(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) {\n      effects.consume(code)\n      return end\n    }\n\n    return comment(code)\n  }\n\n  /** @type {State} */\n  function cdataOpen(code) {\n    if (code === buffer.charCodeAt(index++)) {\n      effects.consume(code)\n      return index === buffer.length ? cdata : cdataOpen\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function cdata(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n      return nok(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) {\n      effects.consume(code)\n      return cdataClose\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n      returnState = cdata\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return cdata\n  }\n\n  /** @type {State} */\n  function cdataClose(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) {\n      effects.consume(code)\n      return cdataEnd\n    }\n\n    return cdata(code)\n  }\n\n  /** @type {State} */\n  function cdataEnd(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) {\n      return end(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) {\n      effects.consume(code)\n      return cdataEnd\n    }\n\n    return cdata(code)\n  }\n\n  /** @type {State} */\n  function declaration(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) {\n      return end(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n      returnState = declaration\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return declaration\n  }\n\n  /** @type {State} */\n  function instruction(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n      return nok(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.questionMark) {\n      effects.consume(code)\n      return instructionClose\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n      returnState = instruction\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return instruction\n  }\n\n  /** @type {State} */\n  function instructionClose(code) {\n    return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan ? end(code) : instruction(code)\n  }\n\n  /** @type {State} */\n  function tagCloseStart(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) {\n      effects.consume(code)\n      return tagClose\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function tagClose(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) {\n      effects.consume(code)\n      return tagClose\n    }\n\n    return tagCloseBetween(code)\n  }\n\n  /** @type {State} */\n  function tagCloseBetween(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n      returnState = tagCloseBetween\n      return atLineEnding(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n      effects.consume(code)\n      return tagCloseBetween\n    }\n\n    return end(code)\n  }\n\n  /** @type {State} */\n  function tagOpen(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) {\n      effects.consume(code)\n      return tagOpen\n    }\n\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEndingOrSpace)(code)\n    ) {\n      return tagOpenBetween(code)\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function tagOpenBetween(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash) {\n      effects.consume(code)\n      return end\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) {\n      effects.consume(code)\n      return tagOpenAttributeName\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n      returnState = tagOpenBetween\n      return atLineEnding(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n      effects.consume(code)\n      return tagOpenBetween\n    }\n\n    return end(code)\n  }\n\n  /** @type {State} */\n  function tagOpenAttributeName(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)\n    ) {\n      effects.consume(code)\n      return tagOpenAttributeName\n    }\n\n    return tagOpenAttributeNameAfter(code)\n  }\n\n  /** @type {State} */\n  function tagOpenAttributeNameAfter(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.equalsTo) {\n      effects.consume(code)\n      return tagOpenAttributeValueBefore\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n      returnState = tagOpenAttributeNameAfter\n      return atLineEnding(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n      effects.consume(code)\n      return tagOpenAttributeNameAfter\n    }\n\n    return tagOpenBetween(code)\n  }\n\n  /** @type {State} */\n  function tagOpenAttributeValueBefore(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.equalsTo ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent\n    ) {\n      return nok(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.quotationMark || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.apostrophe) {\n      effects.consume(code)\n      marker = code\n      return tagOpenAttributeValueQuoted\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n      returnState = tagOpenAttributeValueBefore\n      return atLineEnding(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n      effects.consume(code)\n      return tagOpenAttributeValueBefore\n    }\n\n    effects.consume(code)\n    marker = undefined\n    return tagOpenAttributeValueUnquoted\n  }\n\n  /** @type {State} */\n  function tagOpenAttributeValueQuoted(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return tagOpenAttributeValueQuotedAfter\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n      return nok(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n      returnState = tagOpenAttributeValueQuoted\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return tagOpenAttributeValueQuoted\n  }\n\n  /** @type {State} */\n  function tagOpenAttributeValueQuotedAfter(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEndingOrSpace)(code)\n    ) {\n      return tagOpenBetween(code)\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function tagOpenAttributeValueUnquoted(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.quotationMark ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.apostrophe ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.equalsTo ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent\n    ) {\n      return nok(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEndingOrSpace)(code)) {\n      return tagOpenBetween(code)\n    }\n\n    effects.consume(code)\n    return tagOpenAttributeValueUnquoted\n  }\n\n  // We can’t have blank lines in content, so no need to worry about empty\n  // tokens.\n  /** @type {State} */\n  function atLineEnding(code) {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(returnState, 'expected return state')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code), 'expected eol')\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n    return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(\n      effects,\n      afterPrefix,\n      micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix,\n      self.parser.constructs.disable.null.includes('codeIndented')\n        ? undefined\n        : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize\n    )\n  }\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData)\n    return returnState(code)\n  }\n\n  /** @type {State} */\n  function end(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) {\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlText)\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/html-text.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/label-end.js":
/*!*********************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/label-end.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"labelEnd\": function() { return /* binding */ labelEnd; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_factory_destination__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-factory-destination */ \"./node_modules/micromark-factory-destination/dev/index.js\");\n/* harmony import */ var micromark_factory_label__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! micromark-factory-label */ \"./node_modules/micromark-factory-label/dev/index.js\");\n/* harmony import */ var micromark_factory_title__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! micromark-factory-title */ \"./node_modules/micromark-factory-title/dev/index.js\");\n/* harmony import */ var micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-whitespace */ \"./node_modules/micromark-factory-whitespace/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ \"./node_modules/micromark-util-chunked/dev/index.js\");\n/* harmony import */ var micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-normalize-identifier */ \"./node_modules/micromark-util-normalize-identifier/dev/index.js\");\n/* harmony import */ var micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-resolve-all */ \"./node_modules/micromark-util-resolve-all/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst labelEnd = {\n  name: 'labelEnd',\n  tokenize: tokenizeLabelEnd,\n  resolveTo: resolveToLabelEnd,\n  resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {tokenize: tokenizeResource}\n/** @type {Construct} */\nconst fullReferenceConstruct = {tokenize: tokenizeFullReference}\n/** @type {Construct} */\nconst collapsedReferenceConstruct = {tokenize: tokenizeCollapsedReference}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n  let index = -1\n  /** @type {Token} */\n  let token\n\n  while (++index < events.length) {\n    token = events[index][1]\n\n    if (\n      token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage ||\n      token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink ||\n      token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd\n    ) {\n      // Remove the marker.\n      events.splice(index + 1, token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage ? 4 : 2)\n      token.type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.data\n      index++\n    }\n  }\n\n  return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n  let index = events.length\n  let offset = 0\n  /** @type {Token} */\n  let token\n  /** @type {number|undefined} */\n  let open\n  /** @type {number|undefined} */\n  let close\n  /** @type {Event[]} */\n  let media\n\n  // Find an opening.\n  while (index--) {\n    token = events[index][1]\n\n    if (open) {\n      // If we see another link, or inactive link label, we’ve been here before.\n      if (\n        token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.link ||\n        (token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink && token._inactive)\n      ) {\n        break\n      }\n\n      // Mark other link openings as inactive, as we can’t have links in\n      // links.\n      if (events[index][0] === 'enter' && token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) {\n        token._inactive = true\n      }\n    } else if (close) {\n      if (\n        events[index][0] === 'enter' &&\n        (token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage || token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) &&\n        !token._balanced\n      ) {\n        open = index\n\n        if (token.type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) {\n          offset = 2\n          break\n        }\n      }\n    } else if (token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd) {\n      close = index\n    }\n  }\n\n  (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(open !== undefined, '`open` is supposed to be found')\n  ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(close !== undefined, '`close` is supposed to be found')\n\n  const group = {\n    type: events[open][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.link : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.image,\n    start: Object.assign({}, events[open][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  }\n\n  const label = {\n    type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.label,\n    start: Object.assign({}, events[open][1].start),\n    end: Object.assign({}, events[close][1].end)\n  }\n\n  const text = {\n    type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelText,\n    start: Object.assign({}, events[open + offset + 2][1].end),\n    end: Object.assign({}, events[close - 2][1].start)\n  }\n\n  media = [\n    ['enter', group, context],\n    ['enter', label, context]\n  ]\n\n  // Opening marker.\n  media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, events.slice(open + 1, open + offset + 3))\n\n  // Text open.\n  media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, [['enter', text, context]])\n\n  // Between.\n  media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(\n    media,\n    (0,micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__.resolveAll)(\n      context.parser.constructs.insideSpan.null,\n      events.slice(open + offset + 4, close - 3),\n      context\n    )\n  )\n\n  // Text close, marker close, label close.\n  media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, [\n    ['exit', text, context],\n    events[close - 2],\n    events[close - 1],\n    ['exit', label, context]\n  ])\n\n  // Reference, resource, or so.\n  media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, events.slice(close + 1))\n\n  // Media close.\n  media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, [['exit', group, context]])\n\n  ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, open, events.length, media)\n\n  return events\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n  const self = this\n  let index = self.events.length\n  /** @type {Token} */\n  let labelStart\n  /** @type {boolean} */\n  let defined\n\n  // Find an opening.\n  while (index--) {\n    if (\n      (self.events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage ||\n        self.events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) &&\n      !self.events[index][1]._balanced\n    ) {\n      labelStart = self.events[index][1]\n      break\n    }\n  }\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightSquareBracket, 'expected `]`')\n\n    if (!labelStart) {\n      return nok(code)\n    }\n\n    // It’s a balanced bracket, but contains a link.\n    if (labelStart._inactive) return balanced(code)\n    defined = self.parser.defined.includes(\n      (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_5__.normalizeIdentifier)(\n        self.sliceSerialize({start: labelStart.end, end: self.now()})\n      )\n    )\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelMarker)\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelMarker)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd)\n    return afterLabelEnd\n  }\n\n  /** @type {State} */\n  function afterLabelEnd(code) {\n    // Resource: `[asd](fgh)`.\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftParenthesis) {\n      return effects.attempt(\n        resourceConstruct,\n        ok,\n        defined ? ok : balanced\n      )(code)\n    }\n\n    // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftSquareBracket) {\n      return effects.attempt(\n        fullReferenceConstruct,\n        ok,\n        defined\n          ? effects.attempt(collapsedReferenceConstruct, ok, balanced)\n          : balanced\n      )(code)\n    }\n\n    // Shortcut reference: `[asd]`?\n    return defined ? ok(code) : balanced(code)\n  }\n\n  /** @type {State} */\n  function balanced(code) {\n    labelStart._balanced = true\n    return nok(code)\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeResource(effects, ok, nok) {\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftParenthesis, 'expected left paren')\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resource)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker)\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker)\n    return (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_6__.factoryWhitespace)(effects, open)\n  }\n\n  /** @type {State} */\n  function open(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightParenthesis) {\n      return end(code)\n    }\n\n    return (0,micromark_factory_destination__WEBPACK_IMPORTED_MODULE_7__.factoryDestination)(\n      effects,\n      destinationAfter,\n      nok,\n      micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestination,\n      micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationLiteral,\n      micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationLiteralMarker,\n      micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationRaw,\n      micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationString,\n      micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_8__.constants.linkResourceDestinationBalanceMax\n    )(code)\n  }\n\n  /** @type {State} */\n  function destinationAfter(code) {\n    return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_9__.markdownLineEndingOrSpace)(code)\n      ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_6__.factoryWhitespace)(effects, between)(code)\n      : end(code)\n  }\n\n  /** @type {State} */\n  function between(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.quotationMark ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.apostrophe ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftParenthesis\n    ) {\n      return (0,micromark_factory_title__WEBPACK_IMPORTED_MODULE_10__.factoryTitle)(\n        effects,\n        (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_6__.factoryWhitespace)(effects, end),\n        nok,\n        micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceTitle,\n        micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceTitleMarker,\n        micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceTitleString\n      )(code)\n    }\n\n    return end(code)\n  }\n\n  /** @type {State} */\n  function end(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightParenthesis) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resource)\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeFullReference(effects, ok, nok) {\n  const self = this\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftSquareBracket, 'expected left bracket')\n    return micromark_factory_label__WEBPACK_IMPORTED_MODULE_11__.factoryLabel.call(\n      self,\n      effects,\n      afterLabel,\n      nok,\n      micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.reference,\n      micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker,\n      micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceString\n    )(code)\n  }\n\n  /** @type {State} */\n  function afterLabel(code) {\n    return self.parser.defined.includes(\n      (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_5__.normalizeIdentifier)(\n        self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n      )\n    )\n      ? ok(code)\n      : nok(code)\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftSquareBracket, 'expected left bracket')\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.reference)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker)\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker)\n    return open\n  }\n\n  /** @type {State} */\n  function open(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightSquareBracket) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.reference)\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/label-end.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/label-start-image.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/label-start-image.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"labelStartImage\": function() { return /* binding */ labelStartImage; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var _label_end_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./label-end.js */ \"./node_modules/micromark-core-commonmark/dev/lib/label-end.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst labelStartImage = {\n  name: 'labelStartImage',\n  tokenize: tokenizeLabelStartImage,\n  resolveAll: _label_end_js__WEBPACK_IMPORTED_MODULE_1__.labelEnd.resolveAll\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n  const self = this\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.exclamationMark, 'expected `!`')\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImage)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImageMarker)\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImageMarker)\n    return open\n  }\n\n  /** @type {State} */\n  function open(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.leftSquareBracket) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImage)\n      return after\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function after(code) {\n    /* To do: remove in the future once we’ve switched from\n     * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n     * which doesn’t need this */\n    /* Hidden footnotes hook */\n    /* c8 ignore next 3 */\n    return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.caret &&\n      '_hiddenFootnoteSupport' in self.parser.constructs\n      ? nok(code)\n      : ok(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/label-start-image.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/label-start-link.js":
/*!****************************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/label-start-link.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"labelStartLink\": function() { return /* binding */ labelStartLink; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var _label_end_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./label-end.js */ \"./node_modules/micromark-core-commonmark/dev/lib/label-end.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst labelStartLink = {\n  name: 'labelStartLink',\n  tokenize: tokenizeLabelStartLink,\n  resolveAll: _label_end_js__WEBPACK_IMPORTED_MODULE_1__.labelEnd.resolveAll\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n  const self = this\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.leftSquareBracket, 'expected `[`')\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelLink)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker)\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelLink)\n    return after\n  }\n\n  /** @type {State} */\n  function after(code) {\n    /* To do: remove in the future once we’ve switched from\n     * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n     * which doesn’t need this */\n    /* Hidden footnotes hook. */\n    /* c8 ignore next 3 */\n    return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.caret &&\n      '_hiddenFootnoteSupport' in self.parser.constructs\n      ? nok(code)\n      : ok(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/label-start-link.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/line-ending.js":
/*!***********************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/line-ending.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"lineEnding\": function() { return /* binding */ lineEnding; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst lineEnding = {name: 'lineEnding', tokenize: tokenizeLineEnding}\n\n/** @type {Tokenizer} */\nfunction tokenizeLineEnding(effects, ok) {\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code), 'expected eol')\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n    return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__.factorySpace)(effects, ok, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/line-ending.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/list.js":
/*!****************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/list.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"list\": function() { return /* binding */ list; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var _blank_line_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./blank-line.js */ \"./node_modules/micromark-core-commonmark/dev/lib/blank-line.js\");\n/* harmony import */ var _thematic_break_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./thematic-break.js */ \"./node_modules/micromark-core-commonmark/dev/lib/thematic-break.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @typedef {Record<string, unknown> & {marker: Code, type: string, size: number}} ListContainerState\n * @typedef {TokenizeContext & {containerState: ListContainerState}} TokenizeContextWithState\n */\n\n\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst list = {\n  name: 'list',\n  tokenize: tokenizeListStart,\n  continuation: {tokenize: tokenizeListContinuation},\n  exit: tokenizeListEnd\n}\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n  tokenize: tokenizeListItemPrefixWhitespace,\n  partial: true\n}\n\n/** @type {Construct} */\nconst indentConstruct = {tokenize: tokenizeIndent, partial: true}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n  const self = this\n  const tail = self.events[self.events.length - 1]\n  let initialSize =\n    tail && tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix\n      ? tail[2].sliceSerialize(tail[1], true).length\n      : 0\n  let size = 0\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    const kind =\n      self.containerState.type ||\n      (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.asterisk || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.plusSign || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash\n        ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listUnordered\n        : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listOrdered)\n\n    if (\n      kind === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listUnordered\n        ? !self.containerState.marker || code === self.containerState.marker\n        : (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiDigit)(code)\n    ) {\n      if (!self.containerState.type) {\n        self.containerState.type = kind\n        effects.enter(kind, {_container: true})\n      }\n\n      if (kind === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listUnordered) {\n        effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix)\n        return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.asterisk || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash\n          ? effects.check(_thematic_break_js__WEBPACK_IMPORTED_MODULE_4__.thematicBreak, nok, atMarker)(code)\n          : atMarker(code)\n      }\n\n      if (!self.interrupt || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.digit1) {\n        effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix)\n        effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemValue)\n        return inside(code)\n      }\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function inside(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiDigit)(code) && ++size < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.listItemValueSizeMax) {\n      effects.consume(code)\n      return inside\n    }\n\n    if (\n      (!self.interrupt || size < 2) &&\n      (self.containerState.marker\n        ? code === self.containerState.marker\n        : code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.rightParenthesis || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dot)\n    ) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemValue)\n      return atMarker(code)\n    }\n\n    return nok(code)\n  }\n\n  /**\n   * @type {State}\n   **/\n  function atMarker(code) {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof, 'eof (`null`) is not a marker')\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemMarker)\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemMarker)\n    self.containerState.marker = self.containerState.marker || code\n    return effects.check(\n      _blank_line_js__WEBPACK_IMPORTED_MODULE_6__.blankLine,\n      // Can’t be empty when interrupting.\n      self.interrupt ? nok : onBlank,\n      effects.attempt(\n        listItemPrefixWhitespaceConstruct,\n        endOfPrefix,\n        otherPrefix\n      )\n    )\n  }\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.initialBlankLine = true\n    initialSize++\n    return endOfPrefix(code)\n  }\n\n  /** @type {State} */\n  function otherPrefix(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace)\n      return endOfPrefix\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function endOfPrefix(code) {\n    self.containerState.size =\n      initialSize +\n      self.sliceSerialize(effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix), true).length\n    return ok(code)\n  }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n  const self = this\n\n  self.containerState._closeFlow = undefined\n\n  return effects.check(_blank_line_js__WEBPACK_IMPORTED_MODULE_6__.blankLine, onBlank, notBlank)\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.furtherBlankLines =\n      self.containerState.furtherBlankLines ||\n      self.containerState.initialBlankLine\n\n    // We have a blank line.\n    // Still, try to consume at most the items size.\n    return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)(\n      effects,\n      ok,\n      micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemIndent,\n      self.containerState.size + 1\n    )(code)\n  }\n\n  /** @type {State} */\n  function notBlank(code) {\n    if (self.containerState.furtherBlankLines || !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n      self.containerState.furtherBlankLines = undefined\n      self.containerState.initialBlankLine = undefined\n      return notInCurrentItem(code)\n    }\n\n    self.containerState.furtherBlankLines = undefined\n    self.containerState.initialBlankLine = undefined\n    return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n  }\n\n  /** @type {State} */\n  function notInCurrentItem(code) {\n    // While we do continue, we signal that the flow should be closed.\n    self.containerState._closeFlow = true\n    // As we’re closing flow, we’re no longer interrupting.\n    self.interrupt = undefined\n    return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)(\n      effects,\n      effects.attempt(list, ok, nok),\n      micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix,\n      self.parser.constructs.disable.null.includes('codeIndented')\n        ? undefined\n        : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize\n    )(code)\n  }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n  const self = this\n\n  return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)(\n    effects,\n    afterPrefix,\n    micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemIndent,\n    self.containerState.size + 1\n  )\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return tail &&\n      tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemIndent &&\n      tail[2].sliceSerialize(tail[1], true).length === self.containerState.size\n      ? ok(code)\n      : nok(code)\n  }\n}\n\n/**\n * @type {Exiter}\n * @this {TokenizeContextWithState}\n */\nfunction tokenizeListEnd(effects) {\n  effects.exit(this.containerState.type)\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n  const self = this\n\n  return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)(\n    effects,\n    afterPrefix,\n    micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace,\n    self.parser.constructs.disable.null.includes('codeIndented')\n      ? undefined\n      : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize + 1\n  )\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n\n    return !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code) &&\n      tail &&\n      tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace\n      ? ok(code)\n      : nok(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/list.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/setext-underline.js":
/*!****************************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/setext-underline.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"setextUnderline\": function() { return /* binding */ setextUnderline; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst setextUnderline = {\n  name: 'setextUnderline',\n  tokenize: tokenizeSetextUnderline,\n  resolveTo: resolveToSetextUnderline\n}\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n  let index = events.length\n  /** @type {number|undefined} */\n  let content\n  /** @type {number|undefined} */\n  let text\n  /** @type {number|undefined} */\n  let definition\n\n  // Find the opening of the content.\n  // It’ll always exist: we don’t tokenize if it isn’t there.\n  while (index--) {\n    if (events[index][0] === 'enter') {\n      if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content) {\n        content = index\n        break\n      }\n\n      if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.paragraph) {\n        text = index\n      }\n    }\n    // Exit\n    else {\n      if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content) {\n        // Remove the content end (if needed we’ll add it later)\n        events.splice(index, 1)\n      }\n\n      if (!definition && events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definition) {\n        definition = index\n      }\n    }\n  }\n\n  (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(text !== undefined, 'expected a `text` index to be found')\n  ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(content !== undefined, 'expected a `text` index to be found')\n\n  const heading = {\n    type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeading,\n    start: Object.assign({}, events[text][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  }\n\n  // Change the paragraph to setext heading text.\n  events[text][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingText\n\n  // If we have definitions in the content, we’ll keep on having content,\n  // but we need move it.\n  if (definition) {\n    events.splice(text, 0, ['enter', heading, context])\n    events.splice(definition + 1, 0, ['exit', events[content][1], context])\n    events[content][1].end = Object.assign({}, events[definition][1].end)\n  } else {\n    events[content][1] = heading\n  }\n\n  // Add the heading exit at the end.\n  events.push(['exit', heading, context])\n\n  return events\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n  const self = this\n  let index = self.events.length\n  /** @type {NonNullable<Code>} */\n  let marker\n  /** @type {boolean} */\n  let paragraph\n\n  // Find an opening.\n  while (index--) {\n    // Skip enter/exit of line ending, line prefix, and content.\n    // We can now either have a definition or a paragraph.\n    if (\n      self.events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding &&\n      self.events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix &&\n      self.events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content\n    ) {\n      paragraph = self.events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.paragraph\n      break\n    }\n  }\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.equalsTo,\n      'expected `=` or `-`'\n    )\n\n    if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLine)\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLineSequence)\n      marker = code\n      return closingSequence(code)\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function closingSequence(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return closingSequence\n    }\n\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLineSequence)\n    return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__.factorySpace)(effects, closingSequenceEnd, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineSuffix)(code)\n  }\n\n  /** @type {State} */\n  function closingSequenceEnd(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLine)\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/setext-underline.js?");

/***/ }),

/***/ "./node_modules/micromark-core-commonmark/dev/lib/thematic-break.js":
/*!**************************************************************************!*\
  !*** ./node_modules/micromark-core-commonmark/dev/lib/thematic-break.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"thematicBreak\": function() { return /* binding */ thematicBreak; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst thematicBreak = {\n  name: 'thematicBreak',\n  tokenize: tokenizeThematicBreak\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n  let size = 0\n  /** @type {NonNullable<Code>} */\n  let marker\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.asterisk ||\n        code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash ||\n        code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore,\n      'expected `*`, `-`, or `_`'\n    )\n\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.thematicBreak)\n    marker = code\n    return atBreak(code)\n  }\n\n  /** @type {State} */\n  function atBreak(code) {\n    if (code === marker) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.thematicBreakSequence)\n      return sequence(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n      return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(effects, atBreak, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.whitespace)(code)\n    }\n\n    if (\n      size < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.thematicBreakMarkerCountMin ||\n      (code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof && !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code))\n    ) {\n      return nok(code)\n    }\n\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.thematicBreak)\n    return ok(code)\n  }\n\n  /** @type {State} */\n  function sequence(code) {\n    if (code === marker) {\n      effects.consume(code)\n      size++\n      return sequence\n    }\n\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.thematicBreakSequence)\n    return atBreak(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-core-commonmark/dev/lib/thematic-break.js?");

/***/ }),

/***/ "./node_modules/micromark-extension-gfm-autolink-literal/dev/lib/html.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/micromark-extension-gfm-autolink-literal/dev/lib/html.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfmAutolinkLiteralHtml\": function() { return /* binding */ gfmAutolinkLiteralHtml; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-sanitize-uri */ \"./node_modules/micromark-util-sanitize-uri/dev/index.js\");\n/**\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-util-types').Handle} Handle\n * @typedef {import('micromark-util-types').CompileContext} CompileContext\n * @typedef {import('micromark-util-types').Token} Token\n */\n\n\n\n/** @type {HtmlExtension} */\nconst gfmAutolinkLiteralHtml = {\n  exit: {literalAutolinkEmail, literalAutolinkHttp, literalAutolinkWww}\n}\n\n/** @type {Handle} */\nfunction literalAutolinkWww(token) {\n  anchorFromToken.call(this, token, 'http://')\n}\n\n/** @type {Handle} */\nfunction literalAutolinkEmail(token) {\n  anchorFromToken.call(this, token, 'mailto:')\n}\n\n/** @type {Handle} */\nfunction literalAutolinkHttp(token) {\n  anchorFromToken.call(this, token)\n}\n\n/**\n * @this CompileContext\n * @param {Token} token\n * @param {string} [protocol]\n * @returns {void}\n */\nfunction anchorFromToken(token, protocol) {\n  const url = this.sliceSerialize(token)\n  this.tag('<a href=\"' + (0,micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__.sanitizeUri)((protocol || '') + url) + '\">')\n  this.raw(this.encode(url))\n  this.tag('</a>')\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-extension-gfm-autolink-literal/dev/lib/html.js?");

/***/ }),

/***/ "./node_modules/micromark-extension-gfm-autolink-literal/dev/lib/syntax.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/micromark-extension-gfm-autolink-literal/dev/lib/syntax.js ***!
  \*********************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfmAutolinkLiteral\": function() { return /* binding */ gfmAutolinkLiteral; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n\n\n\nconst www = {tokenize: tokenizeWww, partial: true}\nconst domain = {tokenize: tokenizeDomain, partial: true}\nconst path = {tokenize: tokenizePath, partial: true}\nconst punctuation = {tokenize: tokenizePunctuation, partial: true}\nconst namedCharacterReference = {\n  tokenize: tokenizeNamedCharacterReference,\n  partial: true\n}\n\nconst wwwAutolink = {tokenize: tokenizeWwwAutolink, previous: previousWww}\nconst httpAutolink = {tokenize: tokenizeHttpAutolink, previous: previousHttp}\nconst emailAutolink = {tokenize: tokenizeEmailAutolink, previous: previousEmail}\n\n/** @type {ConstructRecord} */\nconst text = {}\n\n/** @type {Extension} */\nconst gfmAutolinkLiteral = {text}\n\nlet code = micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.digit0\n\n// Add alphanumerics.\nwhile (code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftCurlyBrace) {\n  text[code] = emailAutolink\n  code++\n  if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon) code = micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.uppercaseA\n  else if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket) code = micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lowercaseA\n}\n\ntext[micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.plusSign] = emailAutolink\ntext[micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash] = emailAutolink\ntext[micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot] = emailAutolink\ntext[micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore] = emailAutolink\ntext[micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.uppercaseH] = [emailAutolink, httpAutolink]\ntext[micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lowercaseH] = [emailAutolink, httpAutolink]\ntext[micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.uppercaseW] = [emailAutolink, wwwAutolink]\ntext[micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lowercaseW] = [emailAutolink, wwwAutolink]\n\n/** @type {Tokenizer} */\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n  const self = this\n  /** @type {boolean} */\n  let hasDot\n  /** @type {boolean|undefined} */\n  let hasDigitInLastSegment\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    if (\n      !gfmAtext(code) ||\n      !previousEmail(self.previous) ||\n      previousUnbalanced(self.events)\n    ) {\n      return nok(code)\n    }\n\n    effects.enter('literalAutolink')\n    effects.enter('literalAutolinkEmail')\n    return atext(code)\n  }\n\n  /** @type {State} */\n  function atext(code) {\n    if (gfmAtext(code)) {\n      effects.consume(code)\n      return atext\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.atSign) {\n      effects.consume(code)\n      return label\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function label(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot) {\n      return effects.check(punctuation, done, dotContinuation)(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore) {\n      return effects.check(punctuation, nok, dashOrUnderscoreContinuation)(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.asciiAlphanumeric)(code)) {\n      if (!hasDigitInLastSegment && (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.asciiDigit)(code)) {\n        hasDigitInLastSegment = true\n      }\n\n      effects.consume(code)\n      return label\n    }\n\n    return done(code)\n  }\n\n  /** @type {State} */\n  function dotContinuation(code) {\n    effects.consume(code)\n    hasDot = true\n    hasDigitInLastSegment = undefined\n    return label\n  }\n\n  /** @type {State} */\n  function dashOrUnderscoreContinuation(code) {\n    effects.consume(code)\n    return afterDashOrUnderscore\n  }\n\n  /** @type {State} */\n  function afterDashOrUnderscore(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot) {\n      return effects.check(punctuation, nok, dotContinuation)(code)\n    }\n\n    return label(code)\n  }\n\n  /** @type {State} */\n  function done(code) {\n    if (hasDot && !hasDigitInLastSegment) {\n      effects.exit('literalAutolinkEmail')\n      effects.exit('literalAutolink')\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n  const self = this\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    if (\n      (code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.uppercaseW && code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lowercaseW) ||\n      !previousWww(self.previous) ||\n      previousUnbalanced(self.events)\n    ) {\n      return nok(code)\n    }\n\n    effects.enter('literalAutolink')\n    effects.enter('literalAutolinkWww')\n    // For `www.` we check instead of attempt, because when it matches, GH\n    // treats it as part of a domain (yes, it says a valid domain must come\n    // after `www.`, but that’s not how it’s implemented by them).\n    return effects.check(\n      www,\n      effects.attempt(domain, effects.attempt(path, done), nok),\n      nok\n    )(code)\n  }\n\n  /** @type {State} */\n  function done(code) {\n    effects.exit('literalAutolinkWww')\n    effects.exit('literalAutolink')\n    return ok(code)\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeHttpAutolink(effects, ok, nok) {\n  const self = this\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    if (\n      (code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.uppercaseH && code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lowercaseH) ||\n      !previousHttp(self.previous) ||\n      previousUnbalanced(self.events)\n    ) {\n      return nok(code)\n    }\n\n    effects.enter('literalAutolink')\n    effects.enter('literalAutolinkHttp')\n    effects.consume(code)\n    return t1\n  }\n\n  /** @type {State} */\n  function t1(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.uppercaseT || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lowercaseT) {\n      effects.consume(code)\n      return t2\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function t2(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.uppercaseT || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lowercaseT) {\n      effects.consume(code)\n      return p\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function p(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.uppercaseP || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lowercaseP) {\n      effects.consume(code)\n      return s\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function s(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.uppercaseS || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lowercaseS) {\n      effects.consume(code)\n      return colon\n    }\n\n    return colon(code)\n  }\n\n  /** @type {State} */\n  function colon(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon) {\n      effects.consume(code)\n      return slash1\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function slash1(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash) {\n      effects.consume(code)\n      return slash2\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function slash2(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash) {\n      effects.consume(code)\n      return after\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function after(code) {\n    return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.asciiControl)(code) ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.unicodeWhitespace)(code) ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.unicodePunctuation)(code)\n      ? nok(code)\n      : effects.attempt(domain, effects.attempt(path, done), nok)(code)\n  }\n\n  /** @type {State} */\n  function done(code) {\n    effects.exit('literalAutolinkHttp')\n    effects.exit('literalAutolink')\n    return ok(code)\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeWww(effects, ok, nok) {\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.uppercaseW || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lowercaseW,\n      'expected `w`'\n    )\n    effects.consume(code)\n    return w2\n  }\n\n  /** @type {State} */\n  function w2(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.uppercaseW || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lowercaseW) {\n      effects.consume(code)\n      return w3\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function w3(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.uppercaseW || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lowercaseW) {\n      effects.consume(code)\n      return dot\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function dot(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot) {\n      effects.consume(code)\n      return after\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function after(code) {\n    return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code) ? nok(code) : ok(code)\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeDomain(effects, ok, nok) {\n  /** @type {boolean|undefined} */\n  let hasUnderscoreInLastSegment\n  /** @type {boolean|undefined} */\n  let hasUnderscoreInLastLastSegment\n\n  return domain\n\n  /** @type {State} */\n  function domain(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.ampersand) {\n      return effects.check(\n        namedCharacterReference,\n        done,\n        punctuationContinuation\n      )(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore) {\n      return effects.check(punctuation, done, punctuationContinuation)(code)\n    }\n\n    // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n    // occur, which sounds like ASCII only, but they also support `www.點看.com`,\n    // so that’s Unicode.\n    // Instead of some new production for Unicode alphanumerics, markdown\n    // already has that for Unicode punctuation and whitespace, so use those.\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.asciiControl)(code) ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.unicodeWhitespace)(code) ||\n      (code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash && (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.unicodePunctuation)(code))\n    ) {\n      return done(code)\n    }\n\n    effects.consume(code)\n    return domain\n  }\n\n  /** @type {State} */\n  function punctuationContinuation(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot) {\n      hasUnderscoreInLastLastSegment = hasUnderscoreInLastSegment\n      hasUnderscoreInLastSegment = undefined\n      effects.consume(code)\n      return domain\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore) hasUnderscoreInLastSegment = true\n\n    effects.consume(code)\n    return domain\n  }\n\n  /** @type {State} */\n  function done(code) {\n    if (!hasUnderscoreInLastLastSegment && !hasUnderscoreInLastSegment) {\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizePath(effects, ok) {\n  let balance = 0\n\n  return inPath\n\n  /** @type {State} */\n  function inPath(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.ampersand) {\n      return effects.check(\n        namedCharacterReference,\n        ok,\n        continuedPunctuation\n      )(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftParenthesis) {\n      balance++\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightParenthesis) {\n      return effects.check(\n        punctuation,\n        parenAtPathEnd,\n        continuedPunctuation\n      )(code)\n    }\n\n    if (pathEnd(code)) {\n      return ok(code)\n    }\n\n    if (trailingPunctuation(code)) {\n      return effects.check(punctuation, ok, continuedPunctuation)(code)\n    }\n\n    effects.consume(code)\n    return inPath\n  }\n\n  /** @type {State} */\n  function continuedPunctuation(code) {\n    effects.consume(code)\n    return inPath\n  }\n\n  /** @type {State} */\n  function parenAtPathEnd(code) {\n    balance--\n    return balance < 0 ? ok(code) : continuedPunctuation(code)\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeNamedCharacterReference(effects, ok, nok) {\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.ampersand, 'expected `&`')\n    effects.consume(code)\n    return inside\n  }\n\n  /** @type {State} */\n  function inside(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.asciiAlpha)(code)) {\n      effects.consume(code)\n      return inside\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.semicolon) {\n      effects.consume(code)\n      return after\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function after(code) {\n    // If the named character reference is followed by the end of the path, it’s\n    // not continued punctuation.\n    return pathEnd(code) ? ok(code) : nok(code)\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizePunctuation(effects, ok, nok) {\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || trailingPunctuation(code),\n      'expected punctuation'\n    )\n    effects.consume(code)\n    return after\n  }\n\n  /** @type {State} */\n  function after(code) {\n    // Check the next.\n    if (trailingPunctuation(code)) {\n      effects.consume(code)\n      return after\n    }\n\n    // If the punctuation marker is followed by the end of the path, it’s not\n    // continued punctuation.\n    return pathEnd(code) ? ok(code) : nok(code)\n  }\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction trailingPunctuation(code) {\n  return (\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.exclamationMark ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.quotationMark ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.apostrophe ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightParenthesis ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.asterisk ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.comma ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.semicolon ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.questionMark ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.tilde\n  )\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction pathEnd(code) {\n  return (\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan ||\n    (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEndingOrSpace)(code)\n  )\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction gfmAtext(code) {\n  return (\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.plusSign ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore ||\n    (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.asciiAlphanumeric)(code)\n  )\n}\n\n/** @type {Previous} */\nfunction previousWww(code) {\n  return (\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftParenthesis ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.asterisk ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.tilde ||\n    (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEndingOrSpace)(code)\n  )\n}\n\n/** @type {Previous} */\nfunction previousHttp(code) {\n  return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.asciiAlpha)(code)\n}\n\n/** @type {Previous} */\nfunction previousEmail(code) {\n  return code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash && previousHttp(code)\n}\n\n/**\n * @param {Array<Event>} events\n * @returns {boolean}\n */\nfunction previousUnbalanced(events) {\n  let index = events.length\n  let result = false\n\n  while (index--) {\n    const token = events[index][1]\n\n    if (\n      (token.type === 'labelLink' || token.type === 'labelImage') &&\n      !token._balanced\n    ) {\n      result = true\n      break\n    }\n\n    // @ts-expect-error If we’ve seen this token, and it was marked as not\n    // having any unbalanced bracket before it, we can exit.\n    if (token._gfmAutolinkLiteralWalkedInto) {\n      result = false\n      break\n    }\n  }\n\n  if (events.length > 0 && !result) {\n    // @ts-expect-error Mark the last token as “walked into” w/o finding\n    // anything.\n    events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true\n  }\n\n  return result\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-extension-gfm-autolink-literal/dev/lib/syntax.js?");

/***/ }),

/***/ "./node_modules/micromark-extension-gfm-footnote/dev/lib/html.js":
/*!***********************************************************************!*\
  !*** ./node_modules/micromark-extension-gfm-footnote/dev/lib/html.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfmFootnoteHtml\": function() { return /* binding */ gfmFootnoteHtml; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-normalize-identifier */ \"./node_modules/micromark-util-normalize-identifier/dev/index.js\");\n/* harmony import */ var micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-sanitize-uri */ \"./node_modules/micromark-util-sanitize-uri/dev/index.js\");\n/**\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-util-types').CompileContext} CompileContext\n *\n * @typedef Options\n * @property {string} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` attribute to prevent it from *clobbering*.\n *   attributes.\n *   DOM clobbering is this:\n *\n *   ```html\n *   <p id=x></p>\n *   <script>alert(x)</script>\n *   ```\n *\n *   Elements by their ID are made available in browsers on the `window` object.\n *   Using a prefix prevents this from being a problem.\n * @property {string} [label='Footnotes']\n *   Label to use for the footnotes section.\n *   Affects screen reader users.\n *   Change it if you’re authoring in a different language.\n * @property {string} [backLabel='Back to content']\n *   Label to use from backreferences back to their footnote call.\n *   Affects screen reader users.\n *   Change it if you’re authoring in a different language.\n */\n\n\n\n\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Options} [options={}]\n * @returns {HtmlExtension}\n */\nfunction gfmFootnoteHtml(options = {}) {\n  const label = options.label || 'Footnotes'\n  const backLabel = options.backLabel || 'Back to content'\n  const clobberPrefix =\n    options.clobberPrefix === undefined || options.clobberPrefix === null\n      ? 'user-content-'\n      : options.clobberPrefix\n  return {\n    enter: {\n      gfmFootnoteDefinition() {\n        const stack = /** @type {Array<boolean>} */ (this.getData('tightStack'))\n        stack.push(false)\n      },\n      gfmFootnoteDefinitionLabelString() {\n        this.buffer()\n      },\n      gfmFootnoteCallString() {\n        this.buffer()\n      }\n    },\n    exit: {\n      gfmFootnoteDefinition() {\n        let definitions = /** @type {Record<string, string>} */ (\n          this.getData('gfmFootnoteDefinitions')\n        )\n        const footnoteStack = /** @type {Array<string>} */ (\n          this.getData('gfmFootnoteDefinitionStack')\n        )\n        const tightStack = /** @type {Array<boolean>} */ (\n          this.getData('tightStack')\n        )\n        const current = footnoteStack.pop()\n        const value = this.resume()\n\n        ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(current, 'expected to be in a footnote')\n\n        if (!definitions) {\n          this.setData('gfmFootnoteDefinitions', (definitions = {}))\n        }\n\n        if (!own.call(definitions, current)) definitions[current] = value\n\n        tightStack.pop()\n        this.setData('slurpOneLineEnding', true)\n        // “Hack” to prevent a line ending from showing up if we’re in a definition in\n        // an empty list item.\n        this.setData('lastWasTag')\n      },\n      gfmFootnoteDefinitionLabelString(token) {\n        let footnoteStack = /** @type {Array<string>} */ (\n          this.getData('gfmFootnoteDefinitionStack')\n        )\n\n        if (!footnoteStack) {\n          this.setData('gfmFootnoteDefinitionStack', (footnoteStack = []))\n        }\n\n        footnoteStack.push((0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_1__.normalizeIdentifier)(this.sliceSerialize(token)))\n        this.resume() // Drop the label.\n        this.buffer() // Get ready for a value.\n      },\n      gfmFootnoteCallString(token) {\n        let calls = /** @type {Array<string>|undefined} */ (\n          this.getData('gfmFootnoteCallOrder')\n        )\n        let counts = /** @type {Record<string, number>|undefined} */ (\n          this.getData('gfmFootnoteCallCounts')\n        )\n        const id = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_1__.normalizeIdentifier)(this.sliceSerialize(token))\n        /** @type {number} */\n        let counter\n\n        this.resume()\n\n        if (!calls) this.setData('gfmFootnoteCallOrder', (calls = []))\n        if (!counts) this.setData('gfmFootnoteCallCounts', (counts = {}))\n\n        const index = calls.indexOf(id)\n        const safeId = (0,micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_2__.sanitizeUri)(id.toLowerCase())\n\n        if (index === -1) {\n          calls.push(id)\n          counts[id] = 1\n          counter = calls.length\n        } else {\n          counts[id]++\n          counter = index + 1\n        }\n\n        const reuseCounter = counts[id]\n\n        this.tag(\n          '<sup><a href=\"#' +\n            clobberPrefix +\n            'fn-' +\n            safeId +\n            '\" id=\"' +\n            clobberPrefix +\n            'fnref-' +\n            safeId +\n            (reuseCounter > 1 ? '-' + reuseCounter : '') +\n            '\" data-footnote-ref=\"\" aria-describedby=\"footnote-label\">' +\n            String(counter) +\n            '</a></sup>'\n        )\n      },\n      null() {\n        const calls = /** @type {Array<string>} */ (\n          this.getData('gfmFootnoteCallOrder') || []\n        )\n        const counts = /** @type {Record<string, number>} */ (\n          this.getData('gfmFootnoteCallCounts') || {}\n        )\n        const definitions = /** @type {Record<string, string>} */ (\n          this.getData('gfmFootnoteDefinitions') || {}\n        )\n        let index = -1\n\n        if (calls.length > 0) {\n          this.lineEndingIfNeeded()\n          this.tag(\n            '<section data-footnotes=\"\" class=\"footnotes\"><h2 id=\"footnote-label\" class=\"sr-only\">'\n          )\n          this.raw(this.encode(label))\n          this.tag('</h2>')\n          this.lineEndingIfNeeded()\n          this.tag('<ol>')\n        }\n\n        while (++index < calls.length) {\n          // Called definitions are always defined.\n          const id = calls[index]\n          const safeId = (0,micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_2__.sanitizeUri)(id.toLowerCase())\n          let referenceIndex = 0\n          /** @type {Array<string>} */\n          const references = []\n\n          while (++referenceIndex <= counts[id]) {\n            references.push(\n              '<a href=\"#' +\n                clobberPrefix +\n                'fnref-' +\n                safeId +\n                (referenceIndex > 1 ? '-' + referenceIndex : '') +\n                '\" data-footnote-backref=\"\" class=\"data-footnote-backref\" aria-label=\"' +\n                this.encode(backLabel) +\n                '\">↩' +\n                (referenceIndex > 1\n                  ? '<sup>' + referenceIndex + '</sup>'\n                  : '') +\n                '</a>'\n            )\n          }\n\n          const reference = references.join(' ')\n          let injected = false\n\n          this.lineEndingIfNeeded()\n          this.tag('<li id=\"' + clobberPrefix + 'fn-' + safeId + '\">')\n          this.lineEndingIfNeeded()\n          this.tag(\n            definitions[id].replace(\n              /<\\/p>(?:\\r?\\n|\\r)?$/,\n              (/** @type {string} */ $0) => {\n                injected = true\n                return ' ' + reference + $0\n              }\n            )\n          )\n\n          if (!injected) {\n            this.lineEndingIfNeeded()\n            this.tag(reference)\n          }\n\n          this.lineEndingIfNeeded()\n          this.tag('</li>')\n        }\n\n        if (calls.length > 0) {\n          this.lineEndingIfNeeded()\n          this.tag('</ol>')\n          this.lineEndingIfNeeded()\n          this.tag('</section>')\n        }\n      }\n    }\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-extension-gfm-footnote/dev/lib/html.js?");

/***/ }),

/***/ "./node_modules/micromark-extension-gfm-footnote/dev/lib/syntax.js":
/*!*************************************************************************!*\
  !*** ./node_modules/micromark-extension-gfm-footnote/dev/lib/syntax.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfmFootnote\": function() { return /* binding */ gfmFootnote; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/blank-line.js\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-normalize-identifier */ \"./node_modules/micromark-util-normalize-identifier/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n\n\n\n\n\n\n\n\n\nconst indent = {tokenize: tokenizeIndent, partial: true}\n\n/**\n * @returns {Extension}\n */\nfunction gfmFootnote() {\n  /** @type {Extension} */\n  return {\n    document: {\n      [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket]: {\n        tokenize: tokenizeDefinitionStart,\n        continuation: {tokenize: tokenizeDefinitionContinuation},\n        exit: gfmFootnoteDefinitionEnd\n      }\n    },\n    text: {\n      [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket]: {tokenize: tokenizeGfmFootnoteCall},\n      [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket]: {\n        add: 'after',\n        tokenize: tokenizePotentialGfmFootnoteCall,\n        resolveTo: resolveToPotentialGfmFootnoteCall\n      }\n    }\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n  const self = this\n  let index = self.events.length\n  /** @type {Array<string>} */\n  // @ts-expect-error It’s fine!\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n  /** @type {Token} */\n  let labelStart\n\n  // Find an opening.\n  while (index--) {\n    const token = self.events[index][1]\n\n    if (token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.labelImage) {\n      labelStart = token\n      break\n    }\n\n    // Exit if we’ve walked far enough.\n    if (\n      token.type === 'gfmFootnoteCall' ||\n      token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.labelLink ||\n      token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.label ||\n      token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.image ||\n      token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.link\n    ) {\n      break\n    }\n  }\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket, 'expected `]`')\n\n    if (!labelStart || !labelStart._balanced) {\n      return nok(code)\n    }\n\n    const id = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_3__.normalizeIdentifier)(\n      self.sliceSerialize({start: labelStart.end, end: self.now()})\n    )\n\n    if (id.charCodeAt(0) !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.caret || !defined.includes(id.slice(1))) {\n      return nok(code)\n    }\n\n    effects.enter('gfmFootnoteCallLabelMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteCallLabelMarker')\n    return ok(code)\n  }\n}\n\n/** @type {Resolver} */\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n  let index = events.length\n  /** @type {Token|undefined} */\n  let labelStart\n\n  // Find an opening.\n  while (index--) {\n    if (\n      events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.labelImage &&\n      events[index][0] === 'enter'\n    ) {\n      labelStart = events[index][1]\n      break\n    }\n  }\n\n  (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(labelStart, 'expected `labelStart` to resolve')\n\n  // Change the `labelImageMarker` to a `data`.\n  events[index + 1][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data\n  events[index + 3][1].type = 'gfmFootnoteCallLabelMarker'\n\n  // The whole (without `!`):\n  const call = {\n    type: 'gfmFootnoteCall',\n    start: Object.assign({}, events[index + 3][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  }\n  // The `^` marker\n  const marker = {\n    type: 'gfmFootnoteCallMarker',\n    start: Object.assign({}, events[index + 3][1].end),\n    end: Object.assign({}, events[index + 3][1].end)\n  }\n  // Increment the end 1 character.\n  marker.end.column++\n  marker.end.offset++\n  marker.end._bufferIndex++\n  const string = {\n    type: 'gfmFootnoteCallString',\n    start: Object.assign({}, marker.end),\n    end: Object.assign({}, events[events.length - 1][1].start)\n  }\n  const chunk = {\n    type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString,\n    contentType: 'string',\n    start: Object.assign({}, string.start),\n    end: Object.assign({}, string.end)\n  }\n\n  /** @type {Array<Event>} */\n  const replacement = [\n    // Take the `labelImageMarker` (now `data`, the `!`)\n    events[index + 1],\n    events[index + 2],\n    ['enter', call, context],\n    // The `[`\n    events[index + 3],\n    events[index + 4],\n    // The `^`.\n    ['enter', marker, context],\n    ['exit', marker, context],\n    // Everything in between.\n    ['enter', string, context],\n    ['enter', chunk, context],\n    ['exit', chunk, context],\n    ['exit', string, context],\n    // The ending (`]`, properly parsed and labelled).\n    events[events.length - 2],\n    events[events.length - 1],\n    ['exit', call, context]\n  ]\n\n  events.splice(index, events.length - index + 1, ...replacement)\n\n  return events\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n  const self = this\n  /** @type {Array<string>} */\n  // @ts-expect-error It’s fine!\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n  let size = 0\n  /** @type {boolean} */\n  let data\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket, 'expected `[`')\n    effects.enter('gfmFootnoteCall')\n    effects.enter('gfmFootnoteCallLabelMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteCallLabelMarker')\n    return callStart\n  }\n\n  /** @type {State} */\n  function callStart(code) {\n    if (code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.caret) return nok(code)\n\n    effects.enter('gfmFootnoteCallMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteCallMarker')\n    effects.enter('gfmFootnoteCallString')\n    effects.enter('chunkString').contentType = 'string'\n    return callData\n  }\n\n  /** @type {State} */\n  function callData(code) {\n    /** @type {Token} */\n    let token\n\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket ||\n      size++ > micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.linkReferenceSizeMax\n    ) {\n      return nok(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) {\n      if (!data) {\n        return nok(code)\n      }\n\n      effects.exit('chunkString')\n      token = effects.exit('gfmFootnoteCallString')\n      return defined.includes((0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_3__.normalizeIdentifier)(self.sliceSerialize(token)))\n        ? end(code)\n        : nok(code)\n    }\n\n    effects.consume(code)\n\n    if (!(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEndingOrSpace)(code)) {\n      data = true\n    }\n\n    return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash ? callEscape : callData\n  }\n\n  /** @type {State} */\n  function callEscape(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket\n    ) {\n      effects.consume(code)\n      size++\n      return callData\n    }\n\n    return callData(code)\n  }\n\n  /** @type {State} */\n  function end(code) {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket, 'expected `]`')\n    effects.enter('gfmFootnoteCallLabelMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteCallLabelMarker')\n    effects.exit('gfmFootnoteCall')\n    return ok\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n  const self = this\n  /** @type {Array<string>} */\n  // @ts-expect-error It’s fine!\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n  /** @type {string} */\n  let identifier\n  let size = 0\n  /** @type {boolean|undefined} */\n  let data\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket, 'expected `[`')\n    effects.enter('gfmFootnoteDefinition')._container = true\n    effects.enter('gfmFootnoteDefinitionLabel')\n    effects.enter('gfmFootnoteDefinitionLabelMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteDefinitionLabelMarker')\n    return labelStart\n  }\n\n  /** @type {State} */\n  function labelStart(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.caret) {\n      effects.enter('gfmFootnoteDefinitionMarker')\n      effects.consume(code)\n      effects.exit('gfmFootnoteDefinitionMarker')\n      effects.enter('gfmFootnoteDefinitionLabelString')\n      return atBreak\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function atBreak(code) {\n    /** @type {Token} */\n    let token\n\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket ||\n      size > micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.linkReferenceSizeMax\n    ) {\n      return nok(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) {\n      if (!data) {\n        return nok(code)\n      }\n\n      token = effects.exit('gfmFootnoteDefinitionLabelString')\n      identifier = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_3__.normalizeIdentifier)(self.sliceSerialize(token))\n      effects.enter('gfmFootnoteDefinitionLabelMarker')\n      effects.consume(code)\n      effects.exit('gfmFootnoteDefinitionLabelMarker')\n      effects.exit('gfmFootnoteDefinitionLabel')\n      return labelAfter\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      size++\n      return atBreak\n    }\n\n    effects.enter('chunkString').contentType = 'string'\n    return label(code)\n  }\n\n  /** @type {State} */\n  function label(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code) ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket ||\n      size > micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.linkReferenceSizeMax\n    ) {\n      effects.exit('chunkString')\n      return atBreak(code)\n    }\n\n    if (!(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEndingOrSpace)(code)) {\n      data = true\n    }\n\n    size++\n    effects.consume(code)\n    return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash ? labelEscape : label\n  }\n\n  /** @type {State} */\n  function labelEscape(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket\n    ) {\n      effects.consume(code)\n      size++\n      return label\n    }\n\n    return label(code)\n  }\n\n  /** @type {State} */\n  function labelAfter(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon) {\n      effects.enter('definitionMarker')\n      effects.consume(code)\n      effects.exit('definitionMarker')\n      // Any whitespace after the marker is eaten, forming indented code\n      // is not possible.\n      // No space is also fine, just like a block quote marker.\n      return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__.factorySpace)(effects, done, 'gfmFootnoteDefinitionWhitespace')\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function done(code) {\n    if (!defined.includes(identifier)) {\n      defined.push(identifier)\n    }\n\n    return ok(code)\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n  // Either a blank line, which is okay, or an indented thing.\n  return effects.check(micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_7__.blankLine, ok, effects.attempt(indent, ok, nok))\n}\n\n/** @type {Exiter} */\nfunction gfmFootnoteDefinitionEnd(effects) {\n  effects.exit('gfmFootnoteDefinition')\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeIndent(effects, ok, nok) {\n  const self = this\n\n  return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__.factorySpace)(\n    effects,\n    afterPrefix,\n    'gfmFootnoteDefinitionIndent',\n    micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize + 1\n  )\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return tail &&\n      tail[1].type === 'gfmFootnoteDefinitionIndent' &&\n      tail[2].sliceSerialize(tail[1], true).length === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize\n      ? ok(code)\n      : nok(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-extension-gfm-footnote/dev/lib/syntax.js?");

/***/ }),

/***/ "./node_modules/micromark-extension-gfm-strikethrough/dev/lib/html.js":
/*!****************************************************************************!*\
  !*** ./node_modules/micromark-extension-gfm-strikethrough/dev/lib/html.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfmStrikethroughHtml\": function() { return /* binding */ gfmStrikethroughHtml; }\n/* harmony export */ });\n/**\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\n/** @type {HtmlExtension} */\nconst gfmStrikethroughHtml = {\n  enter: {\n    strikethrough() {\n      this.tag('<del>')\n    }\n  },\n  exit: {\n    strikethrough() {\n      this.tag('</del>')\n    }\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-extension-gfm-strikethrough/dev/lib/html.js?");

/***/ }),

/***/ "./node_modules/micromark-extension-gfm-strikethrough/dev/lib/syntax.js":
/*!******************************************************************************!*\
  !*** ./node_modules/micromark-extension-gfm-strikethrough/dev/lib/syntax.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfmStrikethrough\": function() { return /* binding */ gfmStrikethrough; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ \"./node_modules/micromark-util-chunked/dev/index.js\");\n/* harmony import */ var micromark_util_classify_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-classify-character */ \"./node_modules/micromark-util-classify-character/dev/index.js\");\n/* harmony import */ var micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-resolve-all */ \"./node_modules/micromark-util-resolve-all/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n/**\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean} [singleTilde=true]\n *   Whether to support strikethrough with a single tilde (`boolean`, default:\n *   `true`).\n *   Single tildes work on github.com, but are technically prohibited by the\n *   GFM spec.\n */\n\n\n\n\n\n\n\n\n\n/**\n * @param {Options} [options]\n * @returns {Extension}\n */\nfunction gfmStrikethrough(options = {}) {\n  let single = options.singleTilde\n  const tokenizer = {\n    tokenize: tokenizeStrikethrough,\n    resolveAll: resolveAllStrikethrough\n  }\n\n  if (single === null || single === undefined) {\n    single = true\n  }\n\n  return {\n    text: {[micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.tilde]: tokenizer},\n    insideSpan: {null: [tokenizer]},\n    attentionMarkers: {null: [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.tilde]}\n  }\n\n  /**\n   * Take events and resolve strikethrough.\n   *\n   * @type {Resolver}\n   */\n  function resolveAllStrikethrough(events, context) {\n    let index = -1\n\n    // Walk through all events.\n    while (++index < events.length) {\n      // Find a token that can close.\n      if (\n        events[index][0] === 'enter' &&\n        events[index][1].type === 'strikethroughSequenceTemporary' &&\n        events[index][1]._close\n      ) {\n        let open = index\n\n        // Now walk back to find an opener.\n        while (open--) {\n          // Find a token that can open the closer.\n          if (\n            events[open][0] === 'exit' &&\n            events[open][1].type === 'strikethroughSequenceTemporary' &&\n            events[open][1]._open &&\n            // If the sizes are the same:\n            events[index][1].end.offset - events[index][1].start.offset ===\n              events[open][1].end.offset - events[open][1].start.offset\n          ) {\n            events[index][1].type = 'strikethroughSequence'\n            events[open][1].type = 'strikethroughSequence'\n\n            const strikethrough = {\n              type: 'strikethrough',\n              start: Object.assign({}, events[open][1].start),\n              end: Object.assign({}, events[index][1].end)\n            }\n\n            const text = {\n              type: 'strikethroughText',\n              start: Object.assign({}, events[open][1].end),\n              end: Object.assign({}, events[index][1].start)\n            }\n\n            // Opening.\n            const nextEvents = [\n              ['enter', strikethrough, context],\n              ['enter', events[open][1], context],\n              ['exit', events[open][1], context],\n              ['enter', text, context]\n            ]\n\n            // Between.\n            ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(\n              nextEvents,\n              nextEvents.length,\n              0,\n              (0,micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__.resolveAll)(\n                context.parser.constructs.insideSpan.null,\n                events.slice(open + 1, index),\n                context\n              )\n            )\n\n            // Closing.\n            ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(nextEvents, nextEvents.length, 0, [\n              ['exit', text, context],\n              ['enter', events[index][1], context],\n              ['exit', events[index][1], context],\n              ['exit', strikethrough, context]\n            ])\n\n            ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, open - 1, index - open + 3, nextEvents)\n\n            index = open + nextEvents.length - 2\n            break\n          }\n        }\n      }\n    }\n\n    index = -1\n\n    while (++index < events.length) {\n      if (events[index][1].type === 'strikethroughSequenceTemporary') {\n        events[index][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.data\n      }\n    }\n\n    return events\n  }\n\n  /** @type {Tokenizer} */\n  function tokenizeStrikethrough(effects, ok, nok) {\n    const previous = this.previous\n    const events = this.events\n    let size = 0\n\n    return start\n\n    /** @type {State} */\n    function start(code) {\n      ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.tilde, 'expected `~`')\n\n      if (\n        previous === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.tilde &&\n        events[events.length - 1][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.characterEscape\n      ) {\n        return nok(code)\n      }\n\n      effects.enter('strikethroughSequenceTemporary')\n      return more(code)\n    }\n\n    /** @type {State} */\n    function more(code) {\n      const before = (0,micromark_util_classify_character__WEBPACK_IMPORTED_MODULE_5__.classifyCharacter)(previous)\n\n      if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.tilde) {\n        // If this is the third marker, exit.\n        if (size > 1) return nok(code)\n        effects.consume(code)\n        size++\n        return more\n      }\n\n      if (size < 2 && !single) return nok(code)\n      const token = effects.exit('strikethroughSequenceTemporary')\n      const after = (0,micromark_util_classify_character__WEBPACK_IMPORTED_MODULE_5__.classifyCharacter)(code)\n      token._open =\n        !after || (after === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_6__.constants.attentionSideAfter && Boolean(before))\n      token._close =\n        !before || (before === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_6__.constants.attentionSideAfter && Boolean(after))\n      return ok(code)\n    }\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-extension-gfm-strikethrough/dev/lib/syntax.js?");

/***/ }),

/***/ "./node_modules/micromark-extension-gfm-table/dev/lib/html.js":
/*!********************************************************************!*\
  !*** ./node_modules/micromark-extension-gfm-table/dev/lib/html.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfmTableHtml\": function() { return /* binding */ gfmTableHtml; }\n/* harmony export */ });\n/**\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('./syntax.js').Align} Align\n */\n\nconst alignment = {\n  none: '',\n  left: ' align=\"left\"',\n  right: ' align=\"right\"',\n  center: ' align=\"center\"'\n}\n\n/** @type {HtmlExtension} */\nconst gfmTableHtml = {\n  enter: {\n    table(token) {\n      /** @type {Array<Align>} */\n      // @ts-expect-error Custom.\n      const tableAlign = token._align\n      this.lineEndingIfNeeded()\n      this.tag('<table>')\n      this.setData('tableAlign', tableAlign)\n    },\n    tableBody() {\n      // Clear slurping line ending from the delimiter row.\n      this.setData('slurpOneLineEnding')\n      this.tag('<tbody>')\n    },\n    tableData() {\n      const tableAlign = /** @type {Array<Align>} */ (\n        this.getData('tableAlign')\n      )\n      const tableColumn = /** @type {number} */ (this.getData('tableColumn'))\n      const align = alignment[tableAlign[tableColumn]]\n\n      if (align === undefined) {\n        // Capture results to ignore them.\n        this.buffer()\n      } else {\n        this.lineEndingIfNeeded()\n        this.tag('<td' + align + '>')\n      }\n    },\n    tableHead() {\n      this.lineEndingIfNeeded()\n      this.tag('<thead>')\n    },\n    tableHeader() {\n      const tableAlign = /** @type {Array<Align>} */ (\n        this.getData('tableAlign')\n      )\n      const tableColumn = /** @type {number} */ (this.getData('tableColumn'))\n      const align = alignment[tableAlign[tableColumn]]\n\n      this.lineEndingIfNeeded()\n      this.tag('<th' + align + '>')\n    },\n    tableRow() {\n      this.setData('tableColumn', 0)\n      this.lineEndingIfNeeded()\n      this.tag('<tr>')\n    }\n  },\n  exit: {\n    // Overwrite the default code text data handler to unescape escaped pipes when\n    // they are in tables.\n    codeTextData(token) {\n      let value = this.sliceSerialize(token)\n\n      if (this.getData('tableAlign')) {\n        value = value.replace(/\\\\([\\\\|])/g, replace)\n      }\n\n      this.raw(this.encode(value))\n    },\n    table() {\n      this.setData('tableAlign')\n      // If there was no table body, make sure the slurping from the delimiter row\n      // is cleared.\n      this.setData('slurpAllLineEndings')\n      this.lineEndingIfNeeded()\n      this.tag('</table>')\n    },\n    tableBody() {\n      this.lineEndingIfNeeded()\n      this.tag('</tbody>')\n    },\n    tableData() {\n      const tableAlign = /** @type {Array<Align>} */ (\n        this.getData('tableAlign')\n      )\n      const tableColumn = /** @type {number} */ (this.getData('tableColumn'))\n\n      if (tableColumn in tableAlign) {\n        this.tag('</td>')\n        this.setData('tableColumn', tableColumn + 1)\n      } else {\n        // Stop capturing.\n        this.resume()\n      }\n    },\n    tableHead() {\n      this.lineEndingIfNeeded()\n      this.tag('</thead>')\n      this.setData('slurpOneLineEnding', true)\n      // Slurp the line ending from the delimiter row.\n    },\n    tableHeader() {\n      const tableColumn = /** @type {number} */ (this.getData('tableColumn'))\n      this.tag('</th>')\n      this.setData('tableColumn', tableColumn + 1)\n    },\n    tableRow() {\n      const tableAlign = /** @type {Array<Align>} */ (\n        this.getData('tableAlign')\n      )\n      let tableColumn = /** @type {number} */ (this.getData('tableColumn'))\n\n      while (tableColumn < tableAlign.length) {\n        this.lineEndingIfNeeded()\n        this.tag('<td' + alignment[tableAlign[tableColumn]] + '></td>')\n        tableColumn++\n      }\n\n      this.setData('tableColumn', tableColumn)\n      this.lineEndingIfNeeded()\n      this.tag('</tr>')\n    }\n  }\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n  // Pipes work, backslashes don’t (but can’t escape pipes).\n  return $1 === '|' ? $1 : $0\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-extension-gfm-table/dev/lib/html.js?");

/***/ }),

/***/ "./node_modules/micromark-extension-gfm-table/dev/lib/syntax.js":
/*!**********************************************************************!*\
  !*** ./node_modules/micromark-extension-gfm-table/dev/lib/syntax.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfmTable\": function() { return /* binding */ gfmTable; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n */\n\n/**\n * @typedef {'left'|'center'|'right'|'none'} Align\n */\n\n\n\n\n\n\n\n\n/** @type {Extension} */\nconst gfmTable = {\n  flow: {null: {tokenize: tokenizeTable, resolve: resolveTable}}\n}\n\nconst nextPrefixedOrBlank = {\n  tokenize: tokenizeNextPrefixedOrBlank,\n  partial: true\n}\n\n/** @type {Resolver} */\nfunction resolveTable(events, context) {\n  let index = -1\n  /** @type {boolean|undefined} */\n  let inHead\n  /** @type {boolean|undefined} */\n  let inDelimiterRow\n  /** @type {boolean|undefined} */\n  let inRow\n  /** @type {number|undefined} */\n  let contentStart\n  /** @type {number|undefined} */\n  let contentEnd\n  /** @type {number|undefined} */\n  let cellStart\n  /** @type {boolean|undefined} */\n  let seenCellInRow\n\n  while (++index < events.length) {\n    const token = events[index][1]\n\n    if (inRow) {\n      if (token.type === 'temporaryTableCellContent') {\n        contentStart = contentStart || index\n        contentEnd = index\n      }\n\n      if (\n        // Combine separate content parts into one.\n        (token.type === 'tableCellDivider' || token.type === 'tableRow') &&\n        contentEnd\n      ) {\n        (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n          contentStart,\n          'expected `contentStart` to be defined if `contentEnd` is'\n        )\n        const content = {\n          type: 'tableContent',\n          start: events[contentStart][1].start,\n          end: events[contentEnd][1].end\n        }\n        /** @type {Token} */\n        const text = {\n          type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkText,\n          start: content.start,\n          end: content.end,\n          // @ts-expect-error It’s fine.\n          contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.contentTypeText\n        }\n\n        ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n          contentStart,\n          'expected `contentStart` to be defined if `contentEnd` is'\n        )\n\n        events.splice(\n          contentStart,\n          contentEnd - contentStart + 1,\n          ['enter', content, context],\n          ['enter', text, context],\n          ['exit', text, context],\n          ['exit', content, context]\n        )\n\n        index -= contentEnd - contentStart - 3\n        contentStart = undefined\n        contentEnd = undefined\n      }\n    }\n\n    if (\n      events[index][0] === 'exit' &&\n      cellStart !== undefined &&\n      cellStart + (seenCellInRow ? 0 : 1) < index &&\n      (token.type === 'tableCellDivider' ||\n        (token.type === 'tableRow' &&\n          (cellStart + 3 < index ||\n            events[cellStart][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)))\n    ) {\n      const cell = {\n        type: inDelimiterRow\n          ? 'tableDelimiter'\n          : inHead\n          ? 'tableHeader'\n          : 'tableData',\n        start: events[cellStart][1].start,\n        end: events[index][1].end\n      }\n      events.splice(index + (token.type === 'tableCellDivider' ? 1 : 0), 0, [\n        'exit',\n        cell,\n        context\n      ])\n      events.splice(cellStart, 0, ['enter', cell, context])\n      index += 2\n      cellStart = index + 1\n      seenCellInRow = true\n    }\n\n    if (token.type === 'tableRow') {\n      inRow = events[index][0] === 'enter'\n\n      if (inRow) {\n        cellStart = index + 1\n        seenCellInRow = false\n      }\n    }\n\n    if (token.type === 'tableDelimiterRow') {\n      inDelimiterRow = events[index][0] === 'enter'\n\n      if (inDelimiterRow) {\n        cellStart = index + 1\n        seenCellInRow = false\n      }\n    }\n\n    if (token.type === 'tableHead') {\n      inHead = events[index][0] === 'enter'\n    }\n  }\n\n  return events\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeTable(effects, ok, nok) {\n  const self = this\n  /** @type {Array<Align>} */\n  const align = []\n  let tableHeaderCount = 0\n  /** @type {boolean|undefined} */\n  let seenDelimiter\n  /** @type {boolean|undefined} */\n  let hasDash\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    // @ts-expect-error Custom.\n    effects.enter('table')._align = align\n    effects.enter('tableHead')\n    effects.enter('tableRow')\n\n    // If we start with a pipe, we open a cell marker.\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.verticalBar) {\n      return cellDividerHead(code)\n    }\n\n    tableHeaderCount++\n    effects.enter('temporaryTableCellContent')\n    // Can’t be space or eols at the start of a construct, so we’re in a cell.\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(!(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEndingOrSpace)(code), 'expected non-space')\n    return inCellContentHead(code)\n  }\n\n  /** @type {State} */\n  function cellDividerHead(code) {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.verticalBar, 'expected `|`')\n    effects.enter('tableCellDivider')\n    effects.consume(code)\n    effects.exit('tableCellDivider')\n    seenDelimiter = true\n    return cellBreakHead\n  }\n\n  /** @type {State} */\n  function cellBreakHead(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n      return atRowEndHead(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)\n      effects.consume(code)\n      return inWhitespaceHead\n    }\n\n    if (seenDelimiter) {\n      seenDelimiter = undefined\n      tableHeaderCount++\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.verticalBar) {\n      return cellDividerHead(code)\n    }\n\n    // Anything else is cell content.\n    effects.enter('temporaryTableCellContent')\n    return inCellContentHead(code)\n  }\n\n  /** @type {State} */\n  function inWhitespaceHead(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n      effects.consume(code)\n      return inWhitespaceHead\n    }\n\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)\n    return cellBreakHead(code)\n  }\n\n  /** @type {State} */\n  function inCellContentHead(code) {\n    // EOF, whitespace, pipe\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.verticalBar ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEndingOrSpace)(code)\n    ) {\n      effects.exit('temporaryTableCellContent')\n      return cellBreakHead(code)\n    }\n\n    effects.consume(code)\n    return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.backslash\n      ? inCellContentEscapeHead\n      : inCellContentHead\n  }\n\n  /** @type {State} */\n  function inCellContentEscapeHead(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.backslash || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.verticalBar) {\n      effects.consume(code)\n      return inCellContentHead\n    }\n\n    // Anything else.\n    return inCellContentHead(code)\n  }\n\n  /** @type {State} */\n  function atRowEndHead(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof) {\n      return nok(code)\n    }\n\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected eol')\n    effects.exit('tableRow')\n    effects.exit('tableHead')\n    const originalInterrupt = self.interrupt\n    self.interrupt = true\n    return effects.attempt(\n      {tokenize: tokenizeRowEnd, partial: true},\n      function (code) {\n        self.interrupt = originalInterrupt\n        effects.enter('tableDelimiterRow')\n        return atDelimiterRowBreak(code)\n      },\n      function (code) {\n        self.interrupt = originalInterrupt\n        return nok(code)\n      }\n    )(code)\n  }\n\n  /** @type {State} */\n  function atDelimiterRowBreak(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n      return rowEndDelimiter(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)\n      effects.consume(code)\n      return inWhitespaceDelimiter\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.dash) {\n      effects.enter('tableDelimiterFiller')\n      effects.consume(code)\n      hasDash = true\n      align.push('none')\n      return inFillerDelimiter\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.colon) {\n      effects.enter('tableDelimiterAlignment')\n      effects.consume(code)\n      effects.exit('tableDelimiterAlignment')\n      align.push('left')\n      return afterLeftAlignment\n    }\n\n    // If we start with a pipe, we open a cell marker.\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.verticalBar) {\n      effects.enter('tableCellDivider')\n      effects.consume(code)\n      effects.exit('tableCellDivider')\n      return atDelimiterRowBreak\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function inWhitespaceDelimiter(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n      effects.consume(code)\n      return inWhitespaceDelimiter\n    }\n\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)\n    return atDelimiterRowBreak(code)\n  }\n\n  /** @type {State} */\n  function inFillerDelimiter(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.dash) {\n      effects.consume(code)\n      return inFillerDelimiter\n    }\n\n    effects.exit('tableDelimiterFiller')\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.colon) {\n      effects.enter('tableDelimiterAlignment')\n      effects.consume(code)\n      effects.exit('tableDelimiterAlignment')\n\n      align[align.length - 1] =\n        align[align.length - 1] === 'left' ? 'center' : 'right'\n\n      return afterRightAlignment\n    }\n\n    return atDelimiterRowBreak(code)\n  }\n\n  /** @type {State} */\n  function afterLeftAlignment(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.dash) {\n      effects.enter('tableDelimiterFiller')\n      effects.consume(code)\n      hasDash = true\n      return inFillerDelimiter\n    }\n\n    // Anything else is not ok.\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function afterRightAlignment(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n      return rowEndDelimiter(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)\n      effects.consume(code)\n      return inWhitespaceDelimiter\n    }\n\n    // `|`\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.verticalBar) {\n      effects.enter('tableCellDivider')\n      effects.consume(code)\n      effects.exit('tableCellDivider')\n      return atDelimiterRowBreak\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function rowEndDelimiter(code) {\n    effects.exit('tableDelimiterRow')\n\n    // Exit if there was no dash at all, or if the header cell count is not the\n    // delimiter cell count.\n    if (!hasDash || tableHeaderCount !== align.length) {\n      return nok(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof) {\n      return tableClose(code)\n    }\n\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected eol')\n    return effects.check(\n      nextPrefixedOrBlank,\n      tableClose,\n      effects.attempt(\n        {tokenize: tokenizeRowEnd, partial: true},\n        (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(effects, bodyStart, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix, micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.tabSize),\n        tableClose\n      )\n    )(code)\n  }\n\n  /** @type {State} */\n  function tableClose(code) {\n    effects.exit('table')\n    return ok(code)\n  }\n\n  /** @type {State} */\n  function bodyStart(code) {\n    effects.enter('tableBody')\n    return rowStartBody(code)\n  }\n\n  /** @type {State} */\n  function rowStartBody(code) {\n    effects.enter('tableRow')\n\n    // If we start with a pipe, we open a cell marker.\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.verticalBar) {\n      return cellDividerBody(code)\n    }\n\n    effects.enter('temporaryTableCellContent')\n    // Can’t be space or eols at the start of a construct, so we’re in a cell.\n    return inCellContentBody(code)\n  }\n\n  /** @type {State} */\n  function cellDividerBody(code) {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.verticalBar, 'expected `|`')\n    effects.enter('tableCellDivider')\n    effects.consume(code)\n    effects.exit('tableCellDivider')\n    return cellBreakBody\n  }\n\n  /** @type {State} */\n  function cellBreakBody(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n      return atRowEndBody(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)\n      effects.consume(code)\n      return inWhitespaceBody\n    }\n\n    // `|`\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.verticalBar) {\n      return cellDividerBody(code)\n    }\n\n    // Anything else is cell content.\n    effects.enter('temporaryTableCellContent')\n    return inCellContentBody(code)\n  }\n\n  /** @type {State} */\n  function inWhitespaceBody(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n      effects.consume(code)\n      return inWhitespaceBody\n    }\n\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)\n    return cellBreakBody(code)\n  }\n\n  /** @type {State} */\n  function inCellContentBody(code) {\n    // EOF, whitespace, pipe\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.verticalBar ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEndingOrSpace)(code)\n    ) {\n      effects.exit('temporaryTableCellContent')\n      return cellBreakBody(code)\n    }\n\n    effects.consume(code)\n    return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.backslash\n      ? inCellContentEscapeBody\n      : inCellContentBody\n  }\n\n  /** @type {State} */\n  function inCellContentEscapeBody(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.backslash || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.verticalBar) {\n      effects.consume(code)\n      return inCellContentBody\n    }\n\n    // Anything else.\n    return inCellContentBody(code)\n  }\n\n  /** @type {State} */\n  function atRowEndBody(code) {\n    effects.exit('tableRow')\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof) {\n      return tableBodyClose(code)\n    }\n\n    return effects.check(\n      nextPrefixedOrBlank,\n      tableBodyClose,\n      effects.attempt(\n        {tokenize: tokenizeRowEnd, partial: true},\n        (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(\n          effects,\n          rowStartBody,\n          micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix,\n          micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.tabSize\n        ),\n        tableBodyClose\n      )\n    )(code)\n  }\n\n  /** @type {State} */\n  function tableBodyClose(code) {\n    effects.exit('tableBody')\n    return tableClose(code)\n  }\n\n  /** @type {Tokenizer} */\n  function tokenizeRowEnd(effects, ok, nok) {\n    return start\n\n    /** @type {State} */\n    function start(code) {\n      ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected eol')\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n      return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(effects, prefixed, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix)\n    }\n\n    /** @type {State} */\n    function prefixed(code) {\n      // Blank or interrupting line.\n      if (\n        self.parser.lazy[self.now().line] ||\n        code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof ||\n        (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)\n      ) {\n        return nok(code)\n      }\n\n      const tail = self.events[self.events.length - 1]\n\n      // Indented code can interrupt delimiter and body rows.\n      if (\n        !self.parser.constructs.disable.null.includes('codeIndented') &&\n        tail &&\n        tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix &&\n        tail[2].sliceSerialize(tail[1], true).length >= micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.tabSize\n      ) {\n        return nok(code)\n      }\n\n      self._gfmTableDynamicInterruptHack = true\n\n      return effects.check(\n        self.parser.constructs.flow,\n        function (code) {\n          self._gfmTableDynamicInterruptHack = false\n          return nok(code)\n        },\n        function (code) {\n          self._gfmTableDynamicInterruptHack = false\n          return ok(code)\n        }\n      )(code)\n    }\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeNextPrefixedOrBlank(effects, ok, nok) {\n  let size = 0\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    // This is a check, so we don’t care about tokens, but we open a bogus one\n    // so we’re valid.\n    effects.enter('check')\n    // EOL.\n    effects.consume(code)\n    return whitespace\n  }\n\n  /** @type {State} */\n  function whitespace(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.virtualSpace || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.space) {\n      effects.consume(code)\n      size++\n      return size === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.tabSize ? ok : whitespace\n    }\n\n    // EOF or whitespace\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEndingOrSpace)(code)) {\n      return ok(code)\n    }\n\n    // Anything else.\n    return nok(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-extension-gfm-table/dev/lib/syntax.js?");

/***/ }),

/***/ "./node_modules/micromark-extension-gfm-tagfilter/index.js":
/*!*****************************************************************!*\
  !*** ./node_modules/micromark-extension-gfm-tagfilter/index.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfmTagfilterHtml\": function() { return /* binding */ gfmTagfilterHtml; }\n/* harmony export */ });\n/**\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').CompileContext} CompileContext\n */\n\n/**\n * An opening or closing tag, followed by a case-insensitive specific tag name,\n * followed by HTML whitespace, a greater than, or a slash.\n */\nconst reFlow =\n  /<(\\/?)(iframe|noembed|noframes|plaintext|script|style|title|textarea|xmp)(?=[\\t\\n\\f\\r />])/gi\n\n/**\n * As HTML (text) parses tags separately (and v. strictly), we don’t need to be\n * global.\n */\nconst reText = new RegExp('^' + reFlow.source, 'i')\n\n/** @type {HtmlExtension} */\nconst gfmTagfilterHtml = {\n  exit: {\n    htmlFlowData(token) {\n      exitHtmlData.call(this, token, reFlow)\n    },\n    htmlTextData(token) {\n      exitHtmlData.call(this, token, reText)\n    }\n  }\n}\n\n/**\n * @this {CompileContext}\n * @param {Token} token\n * @param {RegExp} filter\n */\nfunction exitHtmlData(token, filter) {\n  let value = this.sliceSerialize(token)\n\n  if (this.options.allowDangerousHtml) {\n    value = value.replace(filter, '&lt;$1$2')\n  }\n\n  this.raw(this.encode(value))\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-extension-gfm-tagfilter/index.js?");

/***/ }),

/***/ "./node_modules/micromark-extension-gfm-task-list-item/dev/lib/html.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/micromark-extension-gfm-task-list-item/dev/lib/html.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfmTaskListItemHtml\": function() { return /* binding */ gfmTaskListItemHtml; }\n/* harmony export */ });\n/**\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\n/** @type {HtmlExtension} */\nconst gfmTaskListItemHtml = {\n  enter: {\n    taskListCheck() {\n      this.tag('<input type=\"checkbox\" disabled=\"\" ')\n    }\n  },\n  exit: {\n    taskListCheck() {\n      this.tag('/>')\n    },\n    taskListCheckValueChecked() {\n      this.tag('checked=\"\" ')\n    }\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-extension-gfm-task-list-item/dev/lib/html.js?");

/***/ }),

/***/ "./node_modules/micromark-extension-gfm-task-list-item/dev/lib/syntax.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/micromark-extension-gfm-task-list-item/dev/lib/syntax.js ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfmTaskListItem\": function() { return /* binding */ gfmTaskListItem; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n\n\n\n\n\nconst tasklistCheck = {tokenize: tokenizeTasklistCheck}\n\nconst gfmTaskListItem = {\n  text: {[micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket]: tasklistCheck}\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n  const self = this\n\n  return open\n\n  /** @type {State} */\n  function open(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket, 'expected `[`')\n\n    if (\n      // Exit if there’s stuff before.\n      self.previous !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n      // Exit if not in the first content that is the first child of a list\n      // item.\n      !self._gfmTasklistFirstContentOfListItem\n    ) {\n      return nok(code)\n    }\n\n    effects.enter('taskListCheck')\n    effects.enter('taskListCheckMarker')\n    effects.consume(code)\n    effects.exit('taskListCheckMarker')\n    return inside\n  }\n\n  /** @type {State} */\n  function inside(code) {\n    // To match how GH works in comments, use `markdownSpace` (`[ \\t]`) instead\n    // of `markdownLineEndingOrSpace` (`[ \\t\\r\\n]`).\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEndingOrSpace)(code)) {\n      effects.enter('taskListCheckValueUnchecked')\n      effects.consume(code)\n      effects.exit('taskListCheckValueUnchecked')\n      return close\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.uppercaseX || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lowercaseX) {\n      effects.enter('taskListCheckValueChecked')\n      effects.consume(code)\n      effects.exit('taskListCheckValueChecked')\n      return close\n    }\n\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function close(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) {\n      effects.enter('taskListCheckMarker')\n      effects.consume(code)\n      effects.exit('taskListCheckMarker')\n      effects.exit('taskListCheck')\n      return effects.check({tokenize: spaceThenNonSpace}, ok, nok)\n    }\n\n    return nok(code)\n  }\n}\n\n/** @type {Tokenizer} */\nfunction spaceThenNonSpace(effects, ok, nok) {\n  const self = this\n\n  return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__.factorySpace)(effects, after, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.whitespace)\n\n  /** @type {State} */\n  function after(code) {\n    const tail = self.events[self.events.length - 1]\n\n    return (\n      // We either found spaces…\n      ((tail && tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.whitespace) ||\n        // …or it was followed by a line ending, in which case, there has to be\n        // non-whitespace after that line ending, because otherwise we’d get an\n        // EOF as the content is closed with blank lines.\n        (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code)) &&\n        code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof\n        ? ok(code)\n        : nok(code)\n    )\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-extension-gfm-task-list-item/dev/lib/syntax.js?");

/***/ }),

/***/ "./node_modules/micromark-extension-gfm/index.js":
/*!*******************************************************!*\
  !*** ./node_modules/micromark-extension-gfm/index.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"gfm\": function() { return /* binding */ gfm; },\n/* harmony export */   \"gfmHtml\": function() { return /* binding */ gfmHtml; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_combine_extensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-combine-extensions */ \"./node_modules/micromark-util-combine-extensions/index.js\");\n/* harmony import */ var micromark_extension_gfm_autolink_literal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-extension-gfm-autolink-literal */ \"./node_modules/micromark-extension-gfm-autolink-literal/dev/lib/syntax.js\");\n/* harmony import */ var micromark_extension_gfm_autolink_literal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-extension-gfm-autolink-literal */ \"./node_modules/micromark-extension-gfm-autolink-literal/dev/lib/html.js\");\n/* harmony import */ var micromark_extension_gfm_footnote__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-extension-gfm-footnote */ \"./node_modules/micromark-extension-gfm-footnote/dev/lib/syntax.js\");\n/* harmony import */ var micromark_extension_gfm_footnote__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-extension-gfm-footnote */ \"./node_modules/micromark-extension-gfm-footnote/dev/lib/html.js\");\n/* harmony import */ var micromark_extension_gfm_strikethrough__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-extension-gfm-strikethrough */ \"./node_modules/micromark-extension-gfm-strikethrough/dev/lib/syntax.js\");\n/* harmony import */ var micromark_extension_gfm_strikethrough__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-extension-gfm-strikethrough */ \"./node_modules/micromark-extension-gfm-strikethrough/dev/lib/html.js\");\n/* harmony import */ var micromark_extension_gfm_table__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-extension-gfm-table */ \"./node_modules/micromark-extension-gfm-table/dev/lib/syntax.js\");\n/* harmony import */ var micromark_extension_gfm_table__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-extension-gfm-table */ \"./node_modules/micromark-extension-gfm-table/dev/lib/html.js\");\n/* harmony import */ var micromark_extension_gfm_tagfilter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! micromark-extension-gfm-tagfilter */ \"./node_modules/micromark-extension-gfm-tagfilter/index.js\");\n/* harmony import */ var micromark_extension_gfm_task_list_item__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-extension-gfm-task-list-item */ \"./node_modules/micromark-extension-gfm-task-list-item/dev/lib/syntax.js\");\n/* harmony import */ var micromark_extension_gfm_task_list_item__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! micromark-extension-gfm-task-list-item */ \"./node_modules/micromark-extension-gfm-task-list-item/dev/lib/html.js\");\n/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n */\n\n\n\n\n\n\n\n\n\n/**\n * Support GFM or markdown on github.com.\n *\n * @param {Options} [options]\n * @returns {Extension}\n */\nfunction gfm(options) {\n  return (0,micromark_util_combine_extensions__WEBPACK_IMPORTED_MODULE_0__.combineExtensions)([\n    micromark_extension_gfm_autolink_literal__WEBPACK_IMPORTED_MODULE_1__.gfmAutolinkLiteral,\n    (0,micromark_extension_gfm_footnote__WEBPACK_IMPORTED_MODULE_2__.gfmFootnote)(),\n    (0,micromark_extension_gfm_strikethrough__WEBPACK_IMPORTED_MODULE_3__.gfmStrikethrough)(options),\n    micromark_extension_gfm_table__WEBPACK_IMPORTED_MODULE_4__.gfmTable,\n    micromark_extension_gfm_task_list_item__WEBPACK_IMPORTED_MODULE_5__.gfmTaskListItem\n  ])\n}\n\n/**\n * Support to compile GFM to HTML.\n *\n * @param {HtmlOptions} [options]\n * @returns {HtmlExtension}\n */\nfunction gfmHtml(options) {\n  return (0,micromark_util_combine_extensions__WEBPACK_IMPORTED_MODULE_0__.combineHtmlExtensions)([\n    micromark_extension_gfm_autolink_literal__WEBPACK_IMPORTED_MODULE_6__.gfmAutolinkLiteralHtml,\n    (0,micromark_extension_gfm_footnote__WEBPACK_IMPORTED_MODULE_7__.gfmFootnoteHtml)(options),\n    micromark_extension_gfm_strikethrough__WEBPACK_IMPORTED_MODULE_8__.gfmStrikethroughHtml,\n    micromark_extension_gfm_table__WEBPACK_IMPORTED_MODULE_9__.gfmTableHtml,\n    micromark_extension_gfm_tagfilter__WEBPACK_IMPORTED_MODULE_10__.gfmTagfilterHtml,\n    micromark_extension_gfm_task_list_item__WEBPACK_IMPORTED_MODULE_11__.gfmTaskListItemHtml\n  ])\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-extension-gfm/index.js?");

/***/ }),

/***/ "./node_modules/micromark-factory-destination/dev/index.js":
/*!*****************************************************************!*\
  !*** ./node_modules/micromark-factory-destination/dev/index.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"factoryDestination\": function() { return /* binding */ factoryDestination; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} literalType\n * @param {string} literalMarkerType\n * @param {string} rawType\n * @param {string} stringType\n * @param {number} [max=Infinity]\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nfunction factoryDestination(\n  effects,\n  ok,\n  nok,\n  type,\n  literalType,\n  literalMarkerType,\n  rawType,\n  stringType,\n  max\n) {\n  const limit = max || Number.POSITIVE_INFINITY\n  let balance = 0\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan) {\n      effects.enter(type)\n      effects.enter(literalType)\n      effects.enter(literalMarkerType)\n      effects.consume(code)\n      effects.exit(literalMarkerType)\n      return destinationEnclosedBefore\n    }\n\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.asciiControl)(code)\n    ) {\n      return nok(code)\n    }\n\n    effects.enter(type)\n    effects.enter(rawType)\n    effects.enter(stringType)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString})\n    return destinationRaw(code)\n  }\n\n  /** @type {State} */\n  function destinationEnclosedBefore(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan) {\n      effects.enter(literalMarkerType)\n      effects.consume(code)\n      effects.exit(literalMarkerType)\n      effects.exit(literalType)\n      effects.exit(type)\n      return ok\n    }\n\n    effects.enter(stringType)\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString})\n    return destinationEnclosed(code)\n  }\n\n  /** @type {State} */\n  function destinationEnclosed(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString)\n      effects.exit(stringType)\n      return destinationEnclosedBefore(code)\n    }\n\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)\n    ) {\n      return nok(code)\n    }\n\n    effects.consume(code)\n    return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash\n      ? destinationEnclosedEscape\n      : destinationEnclosed\n  }\n\n  /** @type {State} */\n  function destinationEnclosedEscape(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash\n    ) {\n      effects.consume(code)\n      return destinationEnclosed\n    }\n\n    return destinationEnclosed(code)\n  }\n\n  /** @type {State} */\n  function destinationRaw(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis) {\n      if (++balance > limit) return nok(code)\n      effects.consume(code)\n      return destinationRaw\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis) {\n      if (!balance--) {\n        effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString)\n        effects.exit(stringType)\n        effects.exit(rawType)\n        effects.exit(type)\n        return ok(code)\n      }\n\n      effects.consume(code)\n      return destinationRaw\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEndingOrSpace)(code)) {\n      if (balance) return nok(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString)\n      effects.exit(stringType)\n      effects.exit(rawType)\n      effects.exit(type)\n      return ok(code)\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.asciiControl)(code)) return nok(code)\n    effects.consume(code)\n    return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash ? destinationRawEscape : destinationRaw\n  }\n\n  /** @type {State} */\n  function destinationRawEscape(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash\n    ) {\n      effects.consume(code)\n      return destinationRaw\n    }\n\n    return destinationRaw(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-factory-destination/dev/index.js?");

/***/ }),

/***/ "./node_modules/micromark-factory-label/dev/index.js":
/*!***********************************************************!*\
  !*** ./node_modules/micromark-factory-label/dev/index.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"factoryLabel\": function() { return /* binding */ factoryLabel; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n\n\n/**\n * @this {TokenizeContext}\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nfunction factoryLabel(effects, ok, nok, type, markerType, stringType) {\n  const self = this\n  let size = 0\n  /** @type {boolean} */\n  let data\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket, 'expected `[`')\n    effects.enter(type)\n    effects.enter(markerType)\n    effects.consume(code)\n    effects.exit(markerType)\n    effects.enter(stringType)\n    return atBreak\n  }\n\n  /** @type {State} */\n  function atBreak(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket ||\n      (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket && !data) ||\n      /* To do: remove in the future once we’ve switched from\n       * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n       * which doesn’t need this */\n      /* Hidden footnotes hook */\n      /* c8 ignore next 3 */\n      (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.caret &&\n        !size &&\n        '_hiddenFootnoteSupport' in self.parser.constructs) ||\n      size > micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.linkReferenceSizeMax\n    ) {\n      return nok(code)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) {\n      effects.exit(stringType)\n      effects.enter(markerType)\n      effects.consume(code)\n      effects.exit(markerType)\n      effects.exit(type)\n      return ok\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding)\n      return atBreak\n    }\n\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.contentTypeString})\n    return label(code)\n  }\n\n  /** @type {State} */\n  function label(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket ||\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code) ||\n      size++ > micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.linkReferenceSizeMax\n    ) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkString)\n      return atBreak(code)\n    }\n\n    effects.consume(code)\n    data = data || !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)\n    return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash ? labelEscape : label\n  }\n\n  /** @type {State} */\n  function labelEscape(code) {\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash ||\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket\n    ) {\n      effects.consume(code)\n      size++\n      return label\n    }\n\n    return label(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-factory-label/dev/index.js?");

/***/ }),

/***/ "./node_modules/micromark-factory-space/dev/index.js":
/*!***********************************************************!*\
  !*** ./node_modules/micromark-factory-space/dev/index.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"factorySpace\": function() { return /* binding */ factorySpace; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {string} type\n * @param {number} [max=Infinity]\n * @returns {State}\n */\nfunction factorySpace(effects, ok, type, max) {\n  const limit = max ? max - 1 : Number.POSITIVE_INFINITY\n  let size = 0\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code)) {\n      effects.enter(type)\n      return prefix(code)\n    }\n\n    return ok(code)\n  }\n\n  /** @type {State} */\n  function prefix(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code) && size++ < limit) {\n      effects.consume(code)\n      return prefix\n    }\n\n    effects.exit(type)\n    return ok(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-factory-space/dev/index.js?");

/***/ }),

/***/ "./node_modules/micromark-factory-title/dev/index.js":
/*!***********************************************************!*\
  !*** ./node_modules/micromark-factory-title/dev/index.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"factoryTitle\": function() { return /* binding */ factoryTitle; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n\n\n\n\n\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nfunction factoryTitle(effects, ok, nok, type, markerType, stringType) {\n  /** @type {NonNullable<Code>} */\n  let marker\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.quotationMark ||\n        code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.apostrophe ||\n        code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftParenthesis,\n      'expected `\"`, `\\'`, or `(`'\n    )\n    effects.enter(type)\n    effects.enter(markerType)\n    effects.consume(code)\n    effects.exit(markerType)\n    marker = code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftParenthesis ? micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightParenthesis : code\n    return atFirstTitleBreak\n  }\n\n  /** @type {State} */\n  function atFirstTitleBreak(code) {\n    if (code === marker) {\n      effects.enter(markerType)\n      effects.consume(code)\n      effects.exit(markerType)\n      effects.exit(type)\n      return ok\n    }\n\n    effects.enter(stringType)\n    return atTitleBreak(code)\n  }\n\n  /** @type {State} */\n  function atTitleBreak(code) {\n    if (code === marker) {\n      effects.exit(stringType)\n      return atFirstTitleBreak(marker)\n    }\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n      return nok(code)\n    }\n\n    // Note: blank lines can’t exist in content.\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code)) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.lineEnding)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.lineEnding)\n      return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(effects, atTitleBreak, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.linePrefix)\n    }\n\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.contentTypeString})\n    return title(code)\n  }\n\n  /** @type {State} */\n  function title(code) {\n    if (code === marker || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code)) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.chunkString)\n      return atTitleBreak(code)\n    }\n\n    effects.consume(code)\n    return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash ? titleEscape : title\n  }\n\n  /** @type {State} */\n  function titleEscape(code) {\n    if (code === marker || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash) {\n      effects.consume(code)\n      return title\n    }\n\n    return title(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-factory-title/dev/index.js?");

/***/ }),

/***/ "./node_modules/micromark-factory-whitespace/dev/index.js":
/*!****************************************************************!*\
  !*** ./node_modules/micromark-factory-whitespace/dev/index.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"factoryWhitespace\": function() { return /* binding */ factoryWhitespace; }\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n */\nfunction factoryWhitespace(effects, ok) {\n  /** @type {boolean} */\n  let seen\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownLineEnding)(code)) {\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n      seen = true\n      return start\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code)) {\n      return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__.factorySpace)(\n        effects,\n        start,\n        seen ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineSuffix\n      )(code)\n    }\n\n    return ok(code)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-factory-whitespace/dev/index.js?");

/***/ }),

/***/ "./node_modules/micromark-util-character/dev/index.js":
/*!************************************************************!*\
  !*** ./node_modules/micromark-util-character/dev/index.js ***!
  \************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"asciiAlpha\": function() { return /* binding */ asciiAlpha; },\n/* harmony export */   \"asciiAlphanumeric\": function() { return /* binding */ asciiAlphanumeric; },\n/* harmony export */   \"asciiAtext\": function() { return /* binding */ asciiAtext; },\n/* harmony export */   \"asciiControl\": function() { return /* binding */ asciiControl; },\n/* harmony export */   \"asciiDigit\": function() { return /* binding */ asciiDigit; },\n/* harmony export */   \"asciiHexDigit\": function() { return /* binding */ asciiHexDigit; },\n/* harmony export */   \"asciiPunctuation\": function() { return /* binding */ asciiPunctuation; },\n/* harmony export */   \"markdownLineEnding\": function() { return /* binding */ markdownLineEnding; },\n/* harmony export */   \"markdownLineEndingOrSpace\": function() { return /* binding */ markdownLineEndingOrSpace; },\n/* harmony export */   \"markdownSpace\": function() { return /* binding */ markdownSpace; },\n/* harmony export */   \"unicodePunctuation\": function() { return /* binding */ unicodePunctuation; },\n/* harmony export */   \"unicodeWhitespace\": function() { return /* binding */ unicodeWhitespace; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var _lib_unicode_punctuation_regex_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/unicode-punctuation-regex.js */ \"./node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n */\nconst asciiAlpha = regexCheck(/[A-Za-z]/)\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n */\nconst asciiDigit = regexCheck(/\\d/)\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n */\nconst asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n */\nconst asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n */\nconst asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n */\nconst asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * @returns {code is number}\n */\nfunction asciiControl(code) {\n  return (\n    // Special whitespace codes (which have negative values), C0 and Control\n    // character DEL\n    code !== null && (code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.del)\n  )\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * @returns {code is number}\n */\nfunction markdownLineEndingOrSpace(code) {\n  return code !== null && (code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.nul || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space)\n}\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * @returns {code is number}\n */\nfunction markdownLineEnding(code) {\n  return code !== null && code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * @returns {code is number}\n */\nfunction markdownSpace(code) {\n  return (\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.virtualSpace ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space\n  )\n}\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n */\nconst unicodeWhitespace = regexCheck(/\\s/)\n\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n */\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\nconst unicodePunctuation = regexCheck(_lib_unicode_punctuation_regex_js__WEBPACK_IMPORTED_MODULE_1__.unicodePunctuationRegex)\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => code is number}\n */\nfunction regexCheck(regex) {\n  return check\n\n  /**\n   * Check whether a code matches the bound regex.\n   *\n   * @param {Code} code Character code\n   * @returns {code is number} Whether the character code matches the bound regex\n   */\n  function check(code) {\n    return code !== null && regex.test(String.fromCharCode(code))\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-util-character/dev/index.js?");

/***/ }),

/***/ "./node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js":
/*!************************************************************************************!*\
  !*** ./node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js ***!
  \************************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"unicodePunctuationRegex\": function() { return /* binding */ unicodePunctuationRegex; }\n/* harmony export */ });\n// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\nconst unicodePunctuationRegex =\n  /[!-/:-@[-`{-~\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js?");

/***/ }),

/***/ "./node_modules/micromark-util-chunked/dev/index.js":
/*!**********************************************************!*\
  !*** ./node_modules/micromark-util-chunked/dev/index.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"push\": function() { return /* binding */ push; },\n/* harmony export */   \"splice\": function() { return /* binding */ splice; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n\n\n/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * @param {T[]} list\n * @param {number} start\n * @param {number} remove\n * @param {T[]} items\n * @returns {void}\n */\nfunction splice(list, start, remove, items) {\n  const end = list.length\n  let chunkStart = 0\n  /** @type {unknown[]} */\n  let parameters\n\n  // Make start between zero and `end` (included).\n  if (start < 0) {\n    start = -start > end ? 0 : end + start\n  } else {\n    start = start > end ? end : start\n  }\n\n  remove = remove > 0 ? remove : 0\n\n  // No need to chunk the items if there’s only a couple (10k) items.\n  if (items.length < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize) {\n    parameters = Array.from(items)\n    parameters.unshift(start, remove)\n    // @ts-expect-error Hush, it’s fine.\n    ;[].splice.apply(list, parameters)\n  } else {\n    // Delete `remove` items starting from `start`\n    if (remove) [].splice.apply(list, [start, remove])\n\n    // Insert the items in chunks to not cause stack overflows.\n    while (chunkStart < items.length) {\n      parameters = items.slice(\n        chunkStart,\n        chunkStart + micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize\n      )\n      parameters.unshift(start, 0)\n      // @ts-expect-error Hush, it’s fine.\n      ;[].splice.apply(list, parameters)\n\n      chunkStart += micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize\n      start += micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize\n    }\n  }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * @param {T[]} list\n * @param {T[]} items\n * @returns {T[]}\n */\nfunction push(list, items) {\n  if (list.length > 0) {\n    splice(list, list.length, 0, items)\n    return list\n  }\n\n  return items\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-util-chunked/dev/index.js?");

/***/ }),

/***/ "./node_modules/micromark-util-classify-character/dev/index.js":
/*!*********************************************************************!*\
  !*** ./node_modules/micromark-util-classify-character/dev/index.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"classifyCharacter\": function() { return /* binding */ classifyCharacter; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n\n\n\n/**\n * Classify whether a character code represents whitespace, punctuation, or\n * something else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * Note that eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * @returns {number|undefined}\n */\nfunction classifyCharacter(code) {\n  if (\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof ||\n    (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEndingOrSpace)(code) ||\n    (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.unicodeWhitespace)(code)\n  ) {\n    return micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.characterGroupWhitespace\n  }\n\n  if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.unicodePunctuation)(code)) {\n    return micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.characterGroupPunctuation\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-util-classify-character/dev/index.js?");

/***/ }),

/***/ "./node_modules/micromark-util-combine-extensions/index.js":
/*!*****************************************************************!*\
  !*** ./node_modules/micromark-util-combine-extensions/index.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"combineExtensions\": function() { return /* binding */ combineExtensions; },\n/* harmony export */   \"combineHtmlExtensions\": function() { return /* binding */ combineHtmlExtensions; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-chunked */ \"./node_modules/micromark-util-chunked/dev/index.js\");\n/**\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\n\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine several syntax extensions into one.\n *\n * @param {Extension[]} extensions List of syntax extensions.\n * @returns {NormalizedExtension} A single combined extension.\n */\nfunction combineExtensions(extensions) {\n  /** @type {NormalizedExtension} */\n  const all = {}\n  let index = -1\n\n  while (++index < extensions.length) {\n    syntaxExtension(all, extensions[index])\n  }\n\n  return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all Extension to merge into.\n * @param {Extension} extension Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n  /** @type {string} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    const left = maybe || (all[hook] = {})\n    const right = extension[hook]\n    /** @type {string} */\n    let code\n\n    for (code in right) {\n      if (!hasOwnProperty.call(left, code)) left[code] = []\n      const value = right[code]\n      constructs(\n        // @ts-expect-error Looks like a list.\n        left[code],\n        Array.isArray(value) ? value : value ? [value] : []\n      )\n    }\n  }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {unknown[]} existing\n * @param {unknown[]} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n  let index = -1\n  /** @type {unknown[]} */\n  const before = []\n\n  while (++index < list.length) {\n    // @ts-expect-error Looks like an object.\n    ;(list[index].add === 'after' ? existing : before).push(list[index])\n  }\n\n  (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_0__.splice)(existing, 0, 0, before)\n}\n\n/**\n * Combine several HTML extensions into one.\n *\n * @param {HtmlExtension[]} htmlExtensions List of HTML extensions.\n * @returns {HtmlExtension} A single combined extension.\n */\nfunction combineHtmlExtensions(htmlExtensions) {\n  /** @type {HtmlExtension} */\n  const handlers = {}\n  let index = -1\n\n  while (++index < htmlExtensions.length) {\n    htmlExtension(handlers, htmlExtensions[index])\n  }\n\n  return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all Extension to merge into.\n * @param {HtmlExtension} extension Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n  /** @type {string} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    const left = maybe || (all[hook] = {})\n    const right = extension[hook]\n    /** @type {string} */\n    let type\n\n    if (right) {\n      for (type in right) {\n        left[type] = right[type]\n      }\n    }\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-util-combine-extensions/index.js?");

/***/ }),

/***/ "./node_modules/micromark-util-decode-numeric-character-reference/dev/index.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/micromark-util-decode-numeric-character-reference/dev/index.js ***!
  \*************************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"decodeNumericCharacterReference\": function() { return /* binding */ decodeNumericCharacterReference; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/values.js */ \"./node_modules/micromark-util-symbol/values.js\");\n\n\n\n/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * @param {string} value\n *   Value to decode.\n * @param {number} base\n *   Numeric base.\n * @returns {string}\n */\nfunction decodeNumericCharacterReference(value, base) {\n  const code = Number.parseInt(value, base)\n\n  if (\n    // C0 except for HT, LF, FF, CR, space\n    code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ht ||\n    code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.vt ||\n    (code > micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.cr && code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space) ||\n    // Control character (DEL) of the basic block and C1 controls.\n    (code > micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.tilde && code < 160) ||\n    // Lone high surrogates and low surrogates.\n    (code > 55295 && code < 57344) ||\n    // Noncharacters.\n    (code > 64975 && code < 65008) ||\n    (code & 65535) === 65535 ||\n    (code & 65535) === 65534 ||\n    // Out of range\n    code > 1114111\n  ) {\n    return micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_1__.values.replacementCharacter\n  }\n\n  return String.fromCharCode(code)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-util-decode-numeric-character-reference/dev/index.js?");

/***/ }),

/***/ "./node_modules/micromark-util-decode-string/dev/index.js":
/*!****************************************************************!*\
  !*** ./node_modules/micromark-util-decode-string/dev/index.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"decodeString\": function() { return /* binding */ decodeString; }\n/* harmony export */ });\n/* harmony import */ var decode_named_character_reference__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! decode-named-character-reference */ \"./node_modules/decode-named-character-reference/index.dom.js\");\n/* harmony import */ var micromark_util_decode_numeric_character_reference__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-decode-numeric-character-reference */ \"./node_modules/micromark-util-decode-numeric-character-reference/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n\n\n\n\n\nconst characterEscapeOrReference =\n  /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Utility to decode markdown strings (which occur in places such as fenced\n * code info strings, destinations, labels, and titles).\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * @returns {string}\n */\nfunction decodeString(value) {\n  return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n  if ($1) {\n    // Escape.\n    return $1\n  }\n\n  // Reference.\n  const head = $2.charCodeAt(0)\n\n  if (head === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.numberSign) {\n    const head = $2.charCodeAt(1)\n    const hex = head === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lowercaseX || head === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.uppercaseX\n    return (0,micromark_util_decode_numeric_character_reference__WEBPACK_IMPORTED_MODULE_1__.decodeNumericCharacterReference)(\n      $2.slice(hex ? 2 : 1),\n      hex ? micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.numericBaseHexadecimal : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.numericBaseDecimal\n    )\n  }\n\n  return (0,decode_named_character_reference__WEBPACK_IMPORTED_MODULE_3__.decodeNamedCharacterReference)($2) || $0\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-util-decode-string/dev/index.js?");

/***/ }),

/***/ "./node_modules/micromark-util-encode/index.js":
/*!*****************************************************!*\
  !*** ./node_modules/micromark-util-encode/index.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"encode\": function() { return /* binding */ encode; }\n/* harmony export */ });\nconst characterReferences = {'\"': 'quot', '&': 'amp', '<': 'lt', '>': 'gt'}\n\n/**\n * Encode only the dangerous HTML characters.\n *\n * This ensures that certain characters which have special meaning in HTML are\n * dealt with.\n * Technically, we can skip `>` and `\"` in many cases, but CM includes them.\n *\n * @param {string} value\n * @returns {string}\n */\nfunction encode(value) {\n  return value.replace(/[\"&<>]/g, replace)\n\n  /**\n   * @param {string} value\n   * @returns {string}\n   */\n  function replace(value) {\n    // @ts-expect-error Hush, it’s fine.\n    return '&' + characterReferences[value] + ';'\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-util-encode/index.js?");

/***/ }),

/***/ "./node_modules/micromark-util-html-tag-name/index.js":
/*!************************************************************!*\
  !*** ./node_modules/micromark-util-html-tag-name/index.js ***!
  \************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"htmlBlockNames\": function() { return /* binding */ htmlBlockNames; },\n/* harmony export */   \"htmlRawNames\": function() { return /* binding */ htmlRawNames; }\n/* harmony export */ });\n/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result\n * in more relaxed rules (condition 6): because they are known blocks, the\n * HTML-like syntax doesn’t have to be strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n */\nconst htmlBlockNames = [\n  'address',\n  'article',\n  'aside',\n  'base',\n  'basefont',\n  'blockquote',\n  'body',\n  'caption',\n  'center',\n  'col',\n  'colgroup',\n  'dd',\n  'details',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'footer',\n  'form',\n  'frame',\n  'frameset',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hr',\n  'html',\n  'iframe',\n  'legend',\n  'li',\n  'link',\n  'main',\n  'menu',\n  'menuitem',\n  'nav',\n  'noframes',\n  'ol',\n  'optgroup',\n  'option',\n  'p',\n  'param',\n  'section',\n  'summary',\n  'table',\n  'tbody',\n  'td',\n  'tfoot',\n  'th',\n  'thead',\n  'title',\n  'tr',\n  'track',\n  'ul'\n]\n\n/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result in\n * HTML that can include lines w/o exiting, until a closing tag also in this\n * list is found (condition 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * Note that `textarea` was added in `CommonMark@0.30`.\n */\nconst htmlRawNames = ['pre', 'script', 'style', 'textarea']\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-util-html-tag-name/index.js?");

/***/ }),

/***/ "./node_modules/micromark-util-normalize-identifier/dev/index.js":
/*!***********************************************************************!*\
  !*** ./node_modules/micromark-util-normalize-identifier/dev/index.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"normalizeIdentifier\": function() { return /* binding */ normalizeIdentifier; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/values.js */ \"./node_modules/micromark-util-symbol/values.js\");\n\n\n/**\n * Normalize an identifier (such as used in definitions).\n *\n * @param {string} value\n * @returns {string}\n */\nfunction normalizeIdentifier(value) {\n  return (\n    value\n      // Collapse Markdown whitespace.\n      .replace(/[\\t\\n\\r ]+/g, micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_0__.values.space)\n      // Trim.\n      .replace(/^ | $/g, '')\n      // Some characters are considered “uppercase”, but if their lowercase\n      // counterpart is uppercased will result in a different uppercase\n      // character.\n      // Hence, to get that form, we perform both lower- and uppercase.\n      // Upper case makes sure keys will not interact with default prototypal\n      // methods: no method is uppercase.\n      .toLowerCase()\n      .toUpperCase()\n  )\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-util-normalize-identifier/dev/index.js?");

/***/ }),

/***/ "./node_modules/micromark-util-resolve-all/index.js":
/*!**********************************************************!*\
  !*** ./node_modules/micromark-util-resolve-all/index.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"resolveAll\": function() { return /* binding */ resolveAll; }\n/* harmony export */ });\n/**\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {{resolveAll?: Resolver}[]} constructs\n * @param {Event[]} events\n * @param {TokenizeContext} context\n * @returns {Event[]}\n */\nfunction resolveAll(constructs, events, context) {\n  /** @type {Resolver[]} */\n  const called = []\n  let index = -1\n\n  while (++index < constructs.length) {\n    const resolve = constructs[index].resolveAll\n\n    if (resolve && !called.includes(resolve)) {\n      events = resolve(events, context)\n      called.push(resolve)\n    }\n  }\n\n  return events\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-util-resolve-all/index.js?");

/***/ }),

/***/ "./node_modules/micromark-util-sanitize-uri/dev/index.js":
/*!***************************************************************!*\
  !*** ./node_modules/micromark-util-sanitize-uri/dev/index.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"normalizeUri\": function() { return /* binding */ normalizeUri; },\n/* harmony export */   \"sanitizeUri\": function() { return /* binding */ sanitizeUri; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_encode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-encode */ \"./node_modules/micromark-util-encode/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/values.js */ \"./node_modules/micromark-util-symbol/values.js\");\n\n\n\n\n\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri` below).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * Then, a regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`,\n * or `/^https?$/i` for `img[src]`.\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string|undefined} url\n * @param {RegExp} [protocol]\n * @returns {string}\n */\nfunction sanitizeUri(url, protocol) {\n  const value = (0,micromark_util_encode__WEBPACK_IMPORTED_MODULE_0__.encode)(normalizeUri(url || ''))\n\n  if (!protocol) {\n    return value\n  }\n\n  const colon = value.indexOf(':')\n  const questionMark = value.indexOf('?')\n  const numberSign = value.indexOf('#')\n  const slash = value.indexOf('/')\n\n  if (\n    // If there is no protocol, it’s relative.\n    colon < 0 ||\n    // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n    (slash > -1 && colon > slash) ||\n    (questionMark > -1 && colon > questionMark) ||\n    (numberSign > -1 && colon > numberSign) ||\n    // It is a protocol, it should be allowed.\n    protocol.test(value.slice(0, colon))\n  ) {\n    return value\n  }\n\n  return ''\n}\n\n/**\n * Normalize a URL (such as used in definitions).\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * @returns {string}\n */\nfunction normalizeUri(value) {\n  /** @type {Array<string>} */\n  const result = []\n  let index = -1\n  let start = 0\n  let skip = 0\n\n  while (++index < value.length) {\n    const code = value.charCodeAt(index)\n    /** @type {string} */\n    let replace = ''\n\n    // A correct percent encoded value.\n    if (\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.percentSign &&\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.asciiAlphanumeric)(value.charCodeAt(index + 1)) &&\n      (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.asciiAlphanumeric)(value.charCodeAt(index + 2))\n    ) {\n      skip = 2\n    }\n    // ASCII.\n    else if (code < 128) {\n      if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n        replace = String.fromCharCode(code)\n      }\n    }\n    // Astral.\n    else if (code > 55295 && code < 57344) {\n      const next = value.charCodeAt(index + 1)\n\n      // A correct surrogate pair.\n      if (code < 56320 && next > 56319 && next < 57344) {\n        replace = String.fromCharCode(code, next)\n        skip = 1\n      }\n      // Lone surrogate.\n      else {\n        replace = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_3__.values.replacementCharacter\n      }\n    }\n    // Unicode.\n    else {\n      replace = String.fromCharCode(code)\n    }\n\n    if (replace) {\n      result.push(value.slice(start, index), encodeURIComponent(replace))\n      start = index + skip + 1\n      replace = ''\n    }\n\n    if (skip) {\n      index += skip\n      skip = 0\n    }\n  }\n\n  return result.join('') + value.slice(start)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-util-sanitize-uri/dev/index.js?");

/***/ }),

/***/ "./node_modules/micromark-util-subtokenize/dev/index.js":
/*!**************************************************************!*\
  !*** ./node_modules/micromark-util-subtokenize/dev/index.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"subtokenize\": function() { return /* binding */ subtokenize; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ \"./node_modules/micromark-util-chunked/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n\n\n\n\n\n/**\n * Tokenize subcontent.\n *\n * @param {Event[]} events\n * @returns {boolean}\n */\nfunction subtokenize(events) {\n  /** @type {Record<string, number>} */\n  const jumps = {}\n  let index = -1\n  /** @type {Event} */\n  let event\n  /** @type {number|undefined} */\n  let lineIndex\n  /** @type {number} */\n  let otherIndex\n  /** @type {Event} */\n  let otherEvent\n  /** @type {Event[]} */\n  let parameters\n  /** @type {Event[]} */\n  let subevents\n  /** @type {boolean|undefined} */\n  let more\n\n  while (++index < events.length) {\n    while (index in jumps) {\n      index = jumps[index]\n    }\n\n    event = events[index]\n\n    // Add a hook for the GFM tasklist extension, which needs to know if text\n    // is in the first content of a list item.\n    if (\n      index &&\n      event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow &&\n      events[index - 1][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix\n    ) {\n      (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(event[1]._tokenizer, 'expected `_tokenizer` on subtokens')\n      subevents = event[1]._tokenizer.events\n      otherIndex = 0\n\n      if (\n        otherIndex < subevents.length &&\n        subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEndingBlank\n      ) {\n        otherIndex += 2\n      }\n\n      if (\n        otherIndex < subevents.length &&\n        subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content\n      ) {\n        while (++otherIndex < subevents.length) {\n          if (subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content) {\n            break\n          }\n\n          if (subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkText) {\n            subevents[otherIndex][1]._isInFirstContentOfListItem = true\n            otherIndex++\n          }\n        }\n      }\n    }\n\n    // Enter.\n    if (event[0] === 'enter') {\n      if (event[1].contentType) {\n        Object.assign(jumps, subcontent(events, index))\n        index = jumps[index]\n        more = true\n      }\n    }\n    // Exit.\n    else if (event[1]._container) {\n      otherIndex = index\n      lineIndex = undefined\n\n      while (otherIndex--) {\n        otherEvent = events[otherIndex]\n\n        if (\n          otherEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding ||\n          otherEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEndingBlank\n        ) {\n          if (otherEvent[0] === 'enter') {\n            if (lineIndex) {\n              events[lineIndex][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEndingBlank\n            }\n\n            otherEvent[1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding\n            lineIndex = otherIndex\n          }\n        } else {\n          break\n        }\n      }\n\n      if (lineIndex) {\n        // Fix position.\n        event[1].end = Object.assign({}, events[lineIndex][1].start)\n\n        // Switch container exit w/ line endings.\n        parameters = events.slice(lineIndex, index)\n        parameters.unshift(event)\n        ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, lineIndex, index - lineIndex + 1, parameters)\n      }\n    }\n  }\n\n  return !more\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {Event[]} events\n * @param {number} eventIndex\n * @returns {Record<string, number>}\n */\nfunction subcontent(events, eventIndex) {\n  const token = events[eventIndex][1]\n  const context = events[eventIndex][2]\n  let startPosition = eventIndex - 1\n  /** @type {number[]} */\n  const startPositions = []\n  ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(token.contentType, 'expected `contentType` on subtokens')\n  const tokenizer =\n    token._tokenizer || context.parser[token.contentType](token.start)\n  const childEvents = tokenizer.events\n  /** @type {[number, number][]} */\n  const jumps = []\n  /** @type {Record<string, number>} */\n  const gaps = {}\n  /** @type {Chunk[]} */\n  let stream\n  /** @type {Token|undefined} */\n  let previous\n  let index = -1\n  /** @type {Token|undefined} */\n  let current = token\n  let adjust = 0\n  let start = 0\n  const breaks = [start]\n\n  // Loop forward through the linked tokens to pass them in order to the\n  // subtokenizer.\n  while (current) {\n    // Find the position of the event for this token.\n    while (events[++startPosition][1] !== current) {\n      // Empty.\n    }\n\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      !previous || current.previous === previous,\n      'expected previous to match'\n    )\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(!previous || previous.next === current, 'expected next to match')\n\n    startPositions.push(startPosition)\n\n    if (!current._tokenizer) {\n      stream = context.sliceStream(current)\n\n      if (!current.next) {\n        stream.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof)\n      }\n\n      if (previous) {\n        tokenizer.defineSkip(current.start)\n      }\n\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = true\n      }\n\n      tokenizer.write(stream)\n\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = undefined\n      }\n    }\n\n    // Unravel the next token.\n    previous = current\n    current = current.next\n  }\n\n  // Now, loop back through all events (and linked tokens), to figure out which\n  // parts belong where.\n  current = token\n\n  while (++index < childEvents.length) {\n    if (\n      // Find a void token that includes a break.\n      childEvents[index][0] === 'exit' &&\n      childEvents[index - 1][0] === 'enter' &&\n      childEvents[index][1].type === childEvents[index - 1][1].type &&\n      childEvents[index][1].start.line !== childEvents[index][1].end.line\n    ) {\n      (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(current, 'expected a current token')\n      start = index + 1\n      breaks.push(start)\n      // Help GC.\n      current._tokenizer = undefined\n      current.previous = undefined\n      current = current.next\n    }\n  }\n\n  // Help GC.\n  tokenizer.events = []\n\n  // If there’s one more token (which is the cases for lines that end in an\n  // EOF), that’s perfect: the last point we found starts it.\n  // If there isn’t then make sure any remaining content is added to it.\n  if (current) {\n    // Help GC.\n    current._tokenizer = undefined\n    current.previous = undefined\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(!current.next, 'expected no next token')\n  } else {\n    breaks.pop()\n  }\n\n  // Now splice the events from the subtokenizer into the current events,\n  // moving back to front so that splice indices aren’t affected.\n  index = breaks.length\n\n  while (index--) {\n    const slice = childEvents.slice(breaks[index], breaks[index + 1])\n    const start = startPositions.pop()\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(start !== undefined, 'expected a start position when splicing')\n    jumps.unshift([start, start + slice.length - 1])\n    ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, start, 2, slice)\n  }\n\n  index = -1\n\n  while (++index < jumps.length) {\n    gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n    adjust += jumps[index][1] - jumps[index][0] - 1\n  }\n\n  return gaps\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-util-subtokenize/dev/index.js?");

/***/ }),

/***/ "./node_modules/micromark-util-symbol/codes.js":
/*!*****************************************************!*\
  !*** ./node_modules/micromark-util-symbol/codes.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"codes\": function() { return /* binding */ codes; }\n/* harmony export */ });\n/**\n * Character codes.\n *\n * This module is compiled away!\n *\n * micromark works based on character codes.\n * This module contains constants for the ASCII block and the replacement\n * character.\n * A couple of them are handled in a special way, such as the line endings\n * (CR, LF, and CR+LF, commonly known as end-of-line: EOLs), the tab (horizontal\n * tab) and its expansion based on what column it’s at (virtual space),\n * and the end-of-file (eof) character.\n * As values are preprocessed before handling them, the actual characters LF,\n * CR, HT, and NUL (which is present as the replacement character), are\n * guaranteed to not exist.\n *\n * Unicode basic latin block.\n */\nconst codes = {\n  carriageReturn: -5,\n  lineFeed: -4,\n  carriageReturnLineFeed: -3,\n  horizontalTab: -2,\n  virtualSpace: -1,\n  eof: null,\n  nul: 0,\n  soh: 1,\n  stx: 2,\n  etx: 3,\n  eot: 4,\n  enq: 5,\n  ack: 6,\n  bel: 7,\n  bs: 8,\n  ht: 9, // `\\t`\n  lf: 10, // `\\n`\n  vt: 11, // `\\v`\n  ff: 12, // `\\f`\n  cr: 13, // `\\r`\n  so: 14,\n  si: 15,\n  dle: 16,\n  dc1: 17,\n  dc2: 18,\n  dc3: 19,\n  dc4: 20,\n  nak: 21,\n  syn: 22,\n  etb: 23,\n  can: 24,\n  em: 25,\n  sub: 26,\n  esc: 27,\n  fs: 28,\n  gs: 29,\n  rs: 30,\n  us: 31,\n  space: 32,\n  exclamationMark: 33, // `!`\n  quotationMark: 34, // `\"`\n  numberSign: 35, // `#`\n  dollarSign: 36, // `$`\n  percentSign: 37, // `%`\n  ampersand: 38, // `&`\n  apostrophe: 39, // `'`\n  leftParenthesis: 40, // `(`\n  rightParenthesis: 41, // `)`\n  asterisk: 42, // `*`\n  plusSign: 43, // `+`\n  comma: 44, // `,`\n  dash: 45, // `-`\n  dot: 46, // `.`\n  slash: 47, // `/`\n  digit0: 48, // `0`\n  digit1: 49, // `1`\n  digit2: 50, // `2`\n  digit3: 51, // `3`\n  digit4: 52, // `4`\n  digit5: 53, // `5`\n  digit6: 54, // `6`\n  digit7: 55, // `7`\n  digit8: 56, // `8`\n  digit9: 57, // `9`\n  colon: 58, // `:`\n  semicolon: 59, // `;`\n  lessThan: 60, // `<`\n  equalsTo: 61, // `=`\n  greaterThan: 62, // `>`\n  questionMark: 63, // `?`\n  atSign: 64, // `@`\n  uppercaseA: 65, // `A`\n  uppercaseB: 66, // `B`\n  uppercaseC: 67, // `C`\n  uppercaseD: 68, // `D`\n  uppercaseE: 69, // `E`\n  uppercaseF: 70, // `F`\n  uppercaseG: 71, // `G`\n  uppercaseH: 72, // `H`\n  uppercaseI: 73, // `I`\n  uppercaseJ: 74, // `J`\n  uppercaseK: 75, // `K`\n  uppercaseL: 76, // `L`\n  uppercaseM: 77, // `M`\n  uppercaseN: 78, // `N`\n  uppercaseO: 79, // `O`\n  uppercaseP: 80, // `P`\n  uppercaseQ: 81, // `Q`\n  uppercaseR: 82, // `R`\n  uppercaseS: 83, // `S`\n  uppercaseT: 84, // `T`\n  uppercaseU: 85, // `U`\n  uppercaseV: 86, // `V`\n  uppercaseW: 87, // `W`\n  uppercaseX: 88, // `X`\n  uppercaseY: 89, // `Y`\n  uppercaseZ: 90, // `Z`\n  leftSquareBracket: 91, // `[`\n  backslash: 92, // `\\`\n  rightSquareBracket: 93, // `]`\n  caret: 94, // `^`\n  underscore: 95, // `_`\n  graveAccent: 96, // `` ` ``\n  lowercaseA: 97, // `a`\n  lowercaseB: 98, // `b`\n  lowercaseC: 99, // `c`\n  lowercaseD: 100, // `d`\n  lowercaseE: 101, // `e`\n  lowercaseF: 102, // `f`\n  lowercaseG: 103, // `g`\n  lowercaseH: 104, // `h`\n  lowercaseI: 105, // `i`\n  lowercaseJ: 106, // `j`\n  lowercaseK: 107, // `k`\n  lowercaseL: 108, // `l`\n  lowercaseM: 109, // `m`\n  lowercaseN: 110, // `n`\n  lowercaseO: 111, // `o`\n  lowercaseP: 112, // `p`\n  lowercaseQ: 113, // `q`\n  lowercaseR: 114, // `r`\n  lowercaseS: 115, // `s`\n  lowercaseT: 116, // `t`\n  lowercaseU: 117, // `u`\n  lowercaseV: 118, // `v`\n  lowercaseW: 119, // `w`\n  lowercaseX: 120, // `x`\n  lowercaseY: 121, // `y`\n  lowercaseZ: 122, // `z`\n  leftCurlyBrace: 123, // `{`\n  verticalBar: 124, // `|`\n  rightCurlyBrace: 125, // `}`\n  tilde: 126, // `~`\n  del: 127,\n  // Unicode Specials block.\n  byteOrderMarker: 65279,\n  // Unicode Specials block.\n  replacementCharacter: 65533 // `�`\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-util-symbol/codes.js?");

/***/ }),

/***/ "./node_modules/micromark-util-symbol/constants.js":
/*!*********************************************************!*\
  !*** ./node_modules/micromark-util-symbol/constants.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"constants\": function() { return /* binding */ constants; }\n/* harmony export */ });\n/**\n * This module is compiled away!\n *\n * Parsing markdown comes with a couple of constants, such as minimum or maximum\n * sizes of certain sequences.\n * Additionally, there are a couple symbols used inside micromark.\n * These are all defined here, but compiled away by scripts.\n */\nconst constants = {\n  attentionSideBefore: 1, // Symbol to mark an attention sequence as before content: `*a`\n  attentionSideAfter: 2, // Symbol to mark an attention sequence as after content: `a*`\n  atxHeadingOpeningFenceSizeMax: 6, // 6 number signs is fine, 7 isn’t.\n  autolinkDomainSizeMax: 63, // 63 characters is fine, 64 is too many.\n  autolinkSchemeSizeMax: 32, // 32 characters is fine, 33 is too many.\n  cdataOpeningString: 'CDATA[', // And preceded by `<![`.\n  characterGroupWhitespace: 1, // Symbol used to indicate a character is whitespace\n  characterGroupPunctuation: 2, // Symbol used to indicate a character is punctuation\n  characterReferenceDecimalSizeMax: 7, // `&#9999999;`.\n  characterReferenceHexadecimalSizeMax: 6, // `&#xff9999;`.\n  characterReferenceNamedSizeMax: 31, // `&CounterClockwiseContourIntegral;`.\n  codeFencedSequenceSizeMin: 3, // At least 3 ticks or tildes are needed.\n  contentTypeDocument: 'document',\n  contentTypeFlow: 'flow',\n  contentTypeContent: 'content',\n  contentTypeString: 'string',\n  contentTypeText: 'text',\n  hardBreakPrefixSizeMin: 2, // At least 2 trailing spaces are needed.\n  htmlRaw: 1, // Symbol for `<script>`\n  htmlComment: 2, // Symbol for `<!---->`\n  htmlInstruction: 3, // Symbol for `<?php?>`\n  htmlDeclaration: 4, // Symbol for `<!doctype>`\n  htmlCdata: 5, // Symbol for `<![CDATA[]]>`\n  htmlBasic: 6, // Symbol for `<div`\n  htmlComplete: 7, // Symbol for `<x>`\n  htmlRawSizeMax: 8, // Length of `textarea`.\n  linkResourceDestinationBalanceMax: 32, // See: <https://spec.commonmark.org/0.30/#link-destination>, <https://github.com/remarkjs/react-markdown/issues/658#issuecomment-984345577>\n  linkReferenceSizeMax: 999, // See: <https://spec.commonmark.org/0.30/#link-label>\n  listItemValueSizeMax: 10, // See: <https://spec.commonmark.org/0.30/#ordered-list-marker>\n  numericBaseDecimal: 10,\n  numericBaseHexadecimal: 0x10,\n  tabSize: 4, // Tabs have a hard-coded size of 4, per CommonMark.\n  thematicBreakMarkerCountMin: 3, // At least 3 asterisks, dashes, or underscores are needed.\n  v8MaxSafeChunkSize: 10000 // V8 (and potentially others) have problems injecting giant arrays into other arrays, hence we operate in chunks.\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-util-symbol/constants.js?");

/***/ }),

/***/ "./node_modules/micromark-util-symbol/types.js":
/*!*****************************************************!*\
  !*** ./node_modules/micromark-util-symbol/types.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"types\": function() { return /* binding */ types; }\n/* harmony export */ });\n/**\n * This module is compiled away!\n *\n * Here is the list of all types of tokens exposed by micromark, with a short\n * explanation of what they include and where they are found.\n * In picking names, generally, the rule is to be as explicit as possible\n * instead of reusing names.\n * For example, there is a `definitionDestination` and a `resourceDestination`,\n * instead of one shared name.\n */\n\nconst types = {\n  // Generic type for data, such as in a title, a destination, etc.\n  data: 'data',\n\n  // Generic type for syntactic whitespace (tabs, virtual spaces, spaces).\n  // Such as, between a fenced code fence and an info string.\n  whitespace: 'whitespace',\n\n  // Generic type for line endings (line feed, carriage return, carriage return +\n  // line feed).\n  lineEnding: 'lineEnding',\n\n  // A line ending, but ending a blank line.\n  lineEndingBlank: 'lineEndingBlank',\n\n  // Generic type for whitespace (tabs, virtual spaces, spaces) at the start of a\n  // line.\n  linePrefix: 'linePrefix',\n\n  // Generic type for whitespace (tabs, virtual spaces, spaces) at the end of a\n  // line.\n  lineSuffix: 'lineSuffix',\n\n  // Whole ATX heading:\n  //\n  // ```markdown\n  // #\n  // ## Alpha\n  // ### Bravo ###\n  // ```\n  //\n  // Includes `atxHeadingSequence`, `whitespace`, `atxHeadingText`.\n  atxHeading: 'atxHeading',\n\n  // Sequence of number signs in an ATX heading (`###`).\n  atxHeadingSequence: 'atxHeadingSequence',\n\n  // Content in an ATX heading (`alpha`).\n  // Includes text.\n  atxHeadingText: 'atxHeadingText',\n\n  // Whole autolink (`<https://example.com>` or `<admin@example.com>`)\n  // Includes `autolinkMarker` and `autolinkProtocol` or `autolinkEmail`.\n  autolink: 'autolink',\n\n  // Email autolink w/o markers (`admin@example.com`)\n  autolinkEmail: 'autolinkEmail',\n\n  // Marker around an `autolinkProtocol` or `autolinkEmail` (`<` or `>`).\n  autolinkMarker: 'autolinkMarker',\n\n  // Protocol autolink w/o markers (`https://example.com`)\n  autolinkProtocol: 'autolinkProtocol',\n\n  // A whole character escape (`\\-`).\n  // Includes `escapeMarker` and `characterEscapeValue`.\n  characterEscape: 'characterEscape',\n\n  // The escaped character (`-`).\n  characterEscapeValue: 'characterEscapeValue',\n\n  // A whole character reference (`&amp;`, `&#8800;`, or `&#x1D306;`).\n  // Includes `characterReferenceMarker`, an optional\n  // `characterReferenceMarkerNumeric`, in which case an optional\n  // `characterReferenceMarkerHexadecimal`, and a `characterReferenceValue`.\n  characterReference: 'characterReference',\n\n  // The start or end marker (`&` or `;`).\n  characterReferenceMarker: 'characterReferenceMarker',\n\n  // Mark reference as numeric (`#`).\n  characterReferenceMarkerNumeric: 'characterReferenceMarkerNumeric',\n\n  // Mark reference as numeric (`x` or `X`).\n  characterReferenceMarkerHexadecimal: 'characterReferenceMarkerHexadecimal',\n\n  // Value of character reference w/o markers (`amp`, `8800`, or `1D306`).\n  characterReferenceValue: 'characterReferenceValue',\n\n  // Whole fenced code:\n  //\n  // ````markdown\n  // ```js\n  // alert(1)\n  // ```\n  // ````\n  codeFenced: 'codeFenced',\n\n  // A fenced code fence, including whitespace, sequence, info, and meta\n  // (` ```js `).\n  codeFencedFence: 'codeFencedFence',\n\n  // Sequence of grave accent or tilde characters (` ``` `) in a fence.\n  codeFencedFenceSequence: 'codeFencedFenceSequence',\n\n  // Info word (`js`) in a fence.\n  // Includes string.\n  codeFencedFenceInfo: 'codeFencedFenceInfo',\n\n  // Meta words (`highlight=\"1\"`) in a fence.\n  // Includes string.\n  codeFencedFenceMeta: 'codeFencedFenceMeta',\n\n  // A line of code.\n  codeFlowValue: 'codeFlowValue',\n\n  // Whole indented code:\n  //\n  // ```markdown\n  //     alert(1)\n  // ```\n  //\n  // Includes `lineEnding`, `linePrefix`, and `codeFlowValue`.\n  codeIndented: 'codeIndented',\n\n  // A text code (``` `alpha` ```).\n  // Includes `codeTextSequence`, `codeTextData`, `lineEnding`, and can include\n  // `codeTextPadding`.\n  codeText: 'codeText',\n\n  codeTextData: 'codeTextData',\n\n  // A space or line ending right after or before a tick.\n  codeTextPadding: 'codeTextPadding',\n\n  // A text code fence (` `` `).\n  codeTextSequence: 'codeTextSequence',\n\n  // Whole content:\n  //\n  // ```markdown\n  // [a]: b\n  // c\n  // =\n  // d\n  // ```\n  //\n  // Includes `paragraph` and `definition`.\n  content: 'content',\n  // Whole definition:\n  //\n  // ```markdown\n  // [micromark]: https://github.com/micromark/micromark\n  // ```\n  //\n  // Includes `definitionLabel`, `definitionMarker`, `whitespace`,\n  // `definitionDestination`, and optionally `lineEnding` and `definitionTitle`.\n  definition: 'definition',\n\n  // Destination of a definition (`https://github.com/micromark/micromark` or\n  // `<https://github.com/micromark/micromark>`).\n  // Includes `definitionDestinationLiteral` or `definitionDestinationRaw`.\n  definitionDestination: 'definitionDestination',\n\n  // Enclosed destination of a definition\n  // (`<https://github.com/micromark/micromark>`).\n  // Includes `definitionDestinationLiteralMarker` and optionally\n  // `definitionDestinationString`.\n  definitionDestinationLiteral: 'definitionDestinationLiteral',\n\n  // Markers of an enclosed definition destination (`<` or `>`).\n  definitionDestinationLiteralMarker: 'definitionDestinationLiteralMarker',\n\n  // Unenclosed destination of a definition\n  // (`https://github.com/micromark/micromark`).\n  // Includes `definitionDestinationString`.\n  definitionDestinationRaw: 'definitionDestinationRaw',\n\n  // Text in an destination (`https://github.com/micromark/micromark`).\n  // Includes string.\n  definitionDestinationString: 'definitionDestinationString',\n\n  // Label of a definition (`[micromark]`).\n  // Includes `definitionLabelMarker` and `definitionLabelString`.\n  definitionLabel: 'definitionLabel',\n\n  // Markers of a definition label (`[` or `]`).\n  definitionLabelMarker: 'definitionLabelMarker',\n\n  // Value of a definition label (`micromark`).\n  // Includes string.\n  definitionLabelString: 'definitionLabelString',\n\n  // Marker between a label and a destination (`:`).\n  definitionMarker: 'definitionMarker',\n\n  // Title of a definition (`\"x\"`, `'y'`, or `(z)`).\n  // Includes `definitionTitleMarker` and optionally `definitionTitleString`.\n  definitionTitle: 'definitionTitle',\n\n  // Marker around a title of a definition (`\"`, `'`, `(`, or `)`).\n  definitionTitleMarker: 'definitionTitleMarker',\n\n  // Data without markers in a title (`z`).\n  // Includes string.\n  definitionTitleString: 'definitionTitleString',\n\n  // Emphasis (`*alpha*`).\n  // Includes `emphasisSequence` and `emphasisText`.\n  emphasis: 'emphasis',\n\n  // Sequence of emphasis markers (`*` or `_`).\n  emphasisSequence: 'emphasisSequence',\n\n  // Emphasis text (`alpha`).\n  // Includes text.\n  emphasisText: 'emphasisText',\n\n  // The character escape marker (`\\`).\n  escapeMarker: 'escapeMarker',\n\n  // A hard break created with a backslash (`\\\\n`).\n  // Includes `escapeMarker` (does not include the line ending)\n  hardBreakEscape: 'hardBreakEscape',\n\n  // A hard break created with trailing spaces (`  \\n`).\n  // Does not include the line ending.\n  hardBreakTrailing: 'hardBreakTrailing',\n\n  // Flow HTML:\n  //\n  // ```markdown\n  // <div\n  // ```\n  //\n  // Inlcudes `lineEnding`, `htmlFlowData`.\n  htmlFlow: 'htmlFlow',\n\n  htmlFlowData: 'htmlFlowData',\n\n  // HTML in text (the tag in `a <i> b`).\n  // Includes `lineEnding`, `htmlTextData`.\n  htmlText: 'htmlText',\n\n  htmlTextData: 'htmlTextData',\n\n  // Whole image (`![alpha](bravo)`, `![alpha][bravo]`, `![alpha][]`, or\n  // `![alpha]`).\n  // Includes `label` and an optional `resource` or `reference`.\n  image: 'image',\n\n  // Whole link label (`[*alpha*]`).\n  // Includes `labelLink` or `labelImage`, `labelText`, and `labelEnd`.\n  label: 'label',\n\n  // Text in an label (`*alpha*`).\n  // Includes text.\n  labelText: 'labelText',\n\n  // Start a link label (`[`).\n  // Includes a `labelMarker`.\n  labelLink: 'labelLink',\n\n  // Start an image label (`![`).\n  // Includes `labelImageMarker` and `labelMarker`.\n  labelImage: 'labelImage',\n\n  // Marker of a label (`[` or `]`).\n  labelMarker: 'labelMarker',\n\n  // Marker to start an image (`!`).\n  labelImageMarker: 'labelImageMarker',\n\n  // End a label (`]`).\n  // Includes `labelMarker`.\n  labelEnd: 'labelEnd',\n\n  // Whole link (`[alpha](bravo)`, `[alpha][bravo]`, `[alpha][]`, or `[alpha]`).\n  // Includes `label` and an optional `resource` or `reference`.\n  link: 'link',\n\n  // Whole paragraph:\n  //\n  // ```markdown\n  // alpha\n  // bravo.\n  // ```\n  //\n  // Includes text.\n  paragraph: 'paragraph',\n\n  // A reference (`[alpha]` or `[]`).\n  // Includes `referenceMarker` and an optional `referenceString`.\n  reference: 'reference',\n\n  // A reference marker (`[` or `]`).\n  referenceMarker: 'referenceMarker',\n\n  // Reference text (`alpha`).\n  // Includes string.\n  referenceString: 'referenceString',\n\n  // A resource (`(https://example.com \"alpha\")`).\n  // Includes `resourceMarker`, an optional `resourceDestination` with an optional\n  // `whitespace` and `resourceTitle`.\n  resource: 'resource',\n\n  // A resource destination (`https://example.com`).\n  // Includes `resourceDestinationLiteral` or `resourceDestinationRaw`.\n  resourceDestination: 'resourceDestination',\n\n  // A literal resource destination (`<https://example.com>`).\n  // Includes `resourceDestinationLiteralMarker` and optionally\n  // `resourceDestinationString`.\n  resourceDestinationLiteral: 'resourceDestinationLiteral',\n\n  // A resource destination marker (`<` or `>`).\n  resourceDestinationLiteralMarker: 'resourceDestinationLiteralMarker',\n\n  // A raw resource destination (`https://example.com`).\n  // Includes `resourceDestinationString`.\n  resourceDestinationRaw: 'resourceDestinationRaw',\n\n  // Resource destination text (`https://example.com`).\n  // Includes string.\n  resourceDestinationString: 'resourceDestinationString',\n\n  // A resource marker (`(` or `)`).\n  resourceMarker: 'resourceMarker',\n\n  // A resource title (`\"alpha\"`, `'alpha'`, or `(alpha)`).\n  // Includes `resourceTitleMarker` and optionally `resourceTitleString`.\n  resourceTitle: 'resourceTitle',\n\n  // A resource title marker (`\"`, `'`, `(`, or `)`).\n  resourceTitleMarker: 'resourceTitleMarker',\n\n  // Resource destination title (`alpha`).\n  // Includes string.\n  resourceTitleString: 'resourceTitleString',\n\n  // Whole setext heading:\n  //\n  // ```markdown\n  // alpha\n  // bravo\n  // =====\n  // ```\n  //\n  // Includes `setextHeadingText`, `lineEnding`, `linePrefix`, and\n  // `setextHeadingLine`.\n  setextHeading: 'setextHeading',\n\n  // Content in a setext heading (`alpha\\nbravo`).\n  // Includes text.\n  setextHeadingText: 'setextHeadingText',\n\n  // Underline in a setext heading, including whitespace suffix (`==`).\n  // Includes `setextHeadingLineSequence`.\n  setextHeadingLine: 'setextHeadingLine',\n\n  // Sequence of equals or dash characters in underline in a setext heading (`-`).\n  setextHeadingLineSequence: 'setextHeadingLineSequence',\n\n  // Strong (`**alpha**`).\n  // Includes `strongSequence` and `strongText`.\n  strong: 'strong',\n\n  // Sequence of strong markers (`**` or `__`).\n  strongSequence: 'strongSequence',\n\n  // Strong text (`alpha`).\n  // Includes text.\n  strongText: 'strongText',\n\n  // Whole thematic break:\n  //\n  // ```markdown\n  // * * *\n  // ```\n  //\n  // Includes `thematicBreakSequence` and `whitespace`.\n  thematicBreak: 'thematicBreak',\n\n  // A sequence of one or more thematic break markers (`***`).\n  thematicBreakSequence: 'thematicBreakSequence',\n\n  // Whole block quote:\n  //\n  // ```markdown\n  // > a\n  // >\n  // > b\n  // ```\n  //\n  // Includes `blockQuotePrefix` and flow.\n  blockQuote: 'blockQuote',\n  // The `>` or `> ` of a block quote.\n  blockQuotePrefix: 'blockQuotePrefix',\n  // The `>` of a block quote prefix.\n  blockQuoteMarker: 'blockQuoteMarker',\n  // The optional ` ` of a block quote prefix.\n  blockQuotePrefixWhitespace: 'blockQuotePrefixWhitespace',\n\n  // Whole unordered list:\n  //\n  // ```markdown\n  // - a\n  //   b\n  // ```\n  //\n  // Includes `listItemPrefix`, flow, and optionally  `listItemIndent` on further\n  // lines.\n  listOrdered: 'listOrdered',\n\n  // Whole ordered list:\n  //\n  // ```markdown\n  // 1. a\n  //    b\n  // ```\n  //\n  // Includes `listItemPrefix`, flow, and optionally  `listItemIndent` on further\n  // lines.\n  listUnordered: 'listUnordered',\n\n  // The indent of further list item lines.\n  listItemIndent: 'listItemIndent',\n\n  // A marker, as in, `*`, `+`, `-`, `.`, or `)`.\n  listItemMarker: 'listItemMarker',\n\n  // The thing that starts a list item, such as `1. `.\n  // Includes `listItemValue` if ordered, `listItemMarker`, and\n  // `listItemPrefixWhitespace` (unless followed by a line ending).\n  listItemPrefix: 'listItemPrefix',\n\n  // The whitespace after a marker.\n  listItemPrefixWhitespace: 'listItemPrefixWhitespace',\n\n  // The numerical value of an ordered item.\n  listItemValue: 'listItemValue',\n\n  // Internal types used for subtokenizers, compiled away\n  chunkDocument: 'chunkDocument',\n  chunkContent: 'chunkContent',\n  chunkFlow: 'chunkFlow',\n  chunkText: 'chunkText',\n  chunkString: 'chunkString'\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-util-symbol/types.js?");

/***/ }),

/***/ "./node_modules/micromark-util-symbol/values.js":
/*!******************************************************!*\
  !*** ./node_modules/micromark-util-symbol/values.js ***!
  \******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"values\": function() { return /* binding */ values; }\n/* harmony export */ });\n// This module is compiled away!\n//\n// While micromark works based on character codes, this module includes the\n// string versions of ’em.\n// The C0 block, except for LF, CR, HT, and w/ the replacement character added,\n// are available here.\nconst values = {\n  ht: '\\t',\n  lf: '\\n',\n  cr: '\\r',\n  space: ' ',\n  exclamationMark: '!',\n  quotationMark: '\"',\n  numberSign: '#',\n  dollarSign: '$',\n  percentSign: '%',\n  ampersand: '&',\n  apostrophe: \"'\",\n  leftParenthesis: '(',\n  rightParenthesis: ')',\n  asterisk: '*',\n  plusSign: '+',\n  comma: ',',\n  dash: '-',\n  dot: '.',\n  slash: '/',\n  digit0: '0',\n  digit1: '1',\n  digit2: '2',\n  digit3: '3',\n  digit4: '4',\n  digit5: '5',\n  digit6: '6',\n  digit7: '7',\n  digit8: '8',\n  digit9: '9',\n  colon: ':',\n  semicolon: ';',\n  lessThan: '<',\n  equalsTo: '=',\n  greaterThan: '>',\n  questionMark: '?',\n  atSign: '@',\n  uppercaseA: 'A',\n  uppercaseB: 'B',\n  uppercaseC: 'C',\n  uppercaseD: 'D',\n  uppercaseE: 'E',\n  uppercaseF: 'F',\n  uppercaseG: 'G',\n  uppercaseH: 'H',\n  uppercaseI: 'I',\n  uppercaseJ: 'J',\n  uppercaseK: 'K',\n  uppercaseL: 'L',\n  uppercaseM: 'M',\n  uppercaseN: 'N',\n  uppercaseO: 'O',\n  uppercaseP: 'P',\n  uppercaseQ: 'Q',\n  uppercaseR: 'R',\n  uppercaseS: 'S',\n  uppercaseT: 'T',\n  uppercaseU: 'U',\n  uppercaseV: 'V',\n  uppercaseW: 'W',\n  uppercaseX: 'X',\n  uppercaseY: 'Y',\n  uppercaseZ: 'Z',\n  leftSquareBracket: '[',\n  backslash: '\\\\',\n  rightSquareBracket: ']',\n  caret: '^',\n  underscore: '_',\n  graveAccent: '`',\n  lowercaseA: 'a',\n  lowercaseB: 'b',\n  lowercaseC: 'c',\n  lowercaseD: 'd',\n  lowercaseE: 'e',\n  lowercaseF: 'f',\n  lowercaseG: 'g',\n  lowercaseH: 'h',\n  lowercaseI: 'i',\n  lowercaseJ: 'j',\n  lowercaseK: 'k',\n  lowercaseL: 'l',\n  lowercaseM: 'm',\n  lowercaseN: 'n',\n  lowercaseO: 'o',\n  lowercaseP: 'p',\n  lowercaseQ: 'q',\n  lowercaseR: 'r',\n  lowercaseS: 's',\n  lowercaseT: 't',\n  lowercaseU: 'u',\n  lowercaseV: 'v',\n  lowercaseW: 'w',\n  lowercaseX: 'x',\n  lowercaseY: 'y',\n  lowercaseZ: 'z',\n  leftCurlyBrace: '{',\n  verticalBar: '|',\n  rightCurlyBrace: '}',\n  tilde: '~',\n  replacementCharacter: '�'\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark-util-symbol/values.js?");

/***/ }),

/***/ "./node_modules/micromark/dev/lib/constructs.js":
/*!******************************************************!*\
  !*** ./node_modules/micromark/dev/lib/constructs.js ***!
  \******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"attentionMarkers\": function() { return /* binding */ attentionMarkers; },\n/* harmony export */   \"contentInitial\": function() { return /* binding */ contentInitial; },\n/* harmony export */   \"disable\": function() { return /* binding */ disable; },\n/* harmony export */   \"document\": function() { return /* binding */ document; },\n/* harmony export */   \"flow\": function() { return /* binding */ flow; },\n/* harmony export */   \"flowInitial\": function() { return /* binding */ flowInitial; },\n/* harmony export */   \"insideSpan\": function() { return /* binding */ insideSpan; },\n/* harmony export */   \"string\": function() { return /* binding */ string; },\n/* harmony export */   \"text\": function() { return /* binding */ text; }\n/* harmony export */ });\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/list.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/block-quote.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/definition.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/code-indented.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/heading-atx.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/thematic-break.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/setext-underline.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/html-flow.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/code-fenced.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/character-reference.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/character-escape.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/line-ending.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/label-start-image.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/attention.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/autolink.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/html-text.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/label-start-link.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/label-end.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/code-text.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var _initialize_text_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./initialize/text.js */ \"./node_modules/micromark/dev/lib/initialize/text.js\");\n/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\n\n\n\n\n/** @type {Extension['document']} */\nconst document = {\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.plusSign]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.dash]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit0]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit1]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit2]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit3]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit4]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit5]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit6]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit7]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit8]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit9]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_2__.blockQuote\n}\n\n/** @type {Extension['contentInitial']} */\nconst contentInitial = {\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftSquareBracket]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__.definition\n}\n\n/** @type {Extension['flowInitial']} */\nconst flowInitial = {\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__.codeIndented,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.virtualSpace]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__.codeIndented,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__.codeIndented\n}\n\n/** @type {Extension['flow']} */\nconst flow = {\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.numberSign]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_5__.headingAtx,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__.thematicBreak,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.dash]: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_7__.setextUnderline, micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__.thematicBreak],\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_8__.htmlFlow,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.equalsTo]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_7__.setextUnderline,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.underscore]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__.thematicBreak,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.graveAccent]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_9__.codeFenced,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.tilde]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_9__.codeFenced\n}\n\n/** @type {Extension['string']} */\nconst string = {\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ampersand]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_10__.characterReference,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_11__.characterEscape\n}\n\n/** @type {Extension['text']} */\nconst text = {\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturn]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__.lineEnding,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lineFeed]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__.lineEnding,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturnLineFeed]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__.lineEnding,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.exclamationMark]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_13__.labelStartImage,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ampersand]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_10__.characterReference,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__.attention,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan]: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_15__.autolink, micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_16__.htmlText],\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftSquareBracket]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_17__.labelStartLink,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash]: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_18__.hardBreakEscape, micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_11__.characterEscape],\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightSquareBracket]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_19__.labelEnd,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.underscore]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__.attention,\n  [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.graveAccent]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_20__.codeText\n}\n\n/** @type {Extension['insideSpan']} */\nconst insideSpan = {null: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__.attention, _initialize_text_js__WEBPACK_IMPORTED_MODULE_21__.resolver]}\n\n/** @type {Extension['attentionMarkers']} */\nconst attentionMarkers = {null: [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk, micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.underscore]}\n\n/** @type {Extension['disable']} */\nconst disable = {null: []}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark/dev/lib/constructs.js?");

/***/ }),

/***/ "./node_modules/micromark/dev/lib/create-tokenizer.js":
/*!************************************************************!*\
  !*** ./node_modules/micromark/dev/lib/create-tokenizer.js ***!
  \************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createTokenizer\": function() { return /* binding */ createTokenizer; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-chunked */ \"./node_modules/micromark-util-chunked/dev/index.js\");\n/* harmony import */ var micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-resolve-all */ \"./node_modules/micromark-util-resolve-all/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-symbol/values.js */ \"./node_modules/micromark-util-symbol/values.js\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n */\n\n/**\n * @typedef Info\n * @property {() => void} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n *   Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\n\n\n\n\n\n\n\n\n\nconst debug = debug__WEBPACK_IMPORTED_MODULE_1__('micromark')\n\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit<Point, '_index'|'_bufferIndex'>} [from]\n * @returns {TokenizeContext}\n */\nfunction createTokenizer(parser, initialize, from) {\n  /** @type {Point} */\n  let point = Object.assign(\n    from ? Object.assign({}, from) : {line: 1, column: 1, offset: 0},\n    {_index: 0, _bufferIndex: -1}\n  )\n  /** @type {Record<string, number>} */\n  const columnStart = {}\n  /** @type {Array<Construct>} */\n  const resolveAllConstructs = []\n  /** @type {Array<Chunk>} */\n  let chunks = []\n  /** @type {Array<Token>} */\n  let stack = []\n  /** @type {boolean|undefined} */\n  let consumed = true\n\n  /**\n   * Tools used for tokenizing.\n   *\n   * @type {Effects}\n   */\n  const effects = {\n    consume,\n    enter,\n    exit,\n    attempt: constructFactory(onsuccessfulconstruct),\n    check: constructFactory(onsuccessfulcheck),\n    interrupt: constructFactory(onsuccessfulcheck, {interrupt: true})\n  }\n\n  /**\n   * State and tools for resolving and serializing.\n   *\n   * @type {TokenizeContext}\n   */\n  const context = {\n    previous: micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof,\n    code: micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof,\n    containerState: {},\n    events: [],\n    parser,\n    sliceStream,\n    sliceSerialize,\n    now,\n    defineSkip,\n    write\n  }\n\n  /**\n   * The state function.\n   *\n   * @type {State|void}\n   */\n  let state = initialize.tokenize.call(context, effects)\n\n  /**\n   * Track which character we expect to be consumed, to catch bugs.\n   *\n   * @type {Code}\n   */\n  let expectedCode\n\n  if (initialize.resolveAll) {\n    resolveAllConstructs.push(initialize)\n  }\n\n  return context\n\n  /** @type {TokenizeContext['write']} */\n  function write(slice) {\n    chunks = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__.push)(chunks, slice)\n\n    main()\n\n    // Exit if we’re not done, resolve might change stuff.\n    if (chunks[chunks.length - 1] !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof) {\n      return []\n    }\n\n    addResult(initialize, 0)\n\n    // Otherwise, resolve, and exit.\n    context.events = (0,micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_4__.resolveAll)(resolveAllConstructs, context.events, context)\n\n    return context.events\n  }\n\n  //\n  // Tools.\n  //\n\n  /** @type {TokenizeContext['sliceSerialize']} */\n  function sliceSerialize(token, expandTabs) {\n    return serializeChunks(sliceStream(token), expandTabs)\n  }\n\n  /** @type {TokenizeContext['sliceStream']} */\n  function sliceStream(token) {\n    return sliceChunks(chunks, token)\n  }\n\n  /** @type {TokenizeContext['now']} */\n  function now() {\n    return Object.assign({}, point)\n  }\n\n  /** @type {TokenizeContext['defineSkip']} */\n  function defineSkip(value) {\n    columnStart[value.line] = value.column\n    accountForPotentialSkip()\n    debug('position: define skip: `%j`', point)\n  }\n\n  //\n  // State management.\n  //\n\n  /**\n   * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n   * `consume`).\n   * Here is where we walk through the chunks, which either include strings of\n   * several characters, or numerical character codes.\n   * The reason to do this in a loop instead of a call is so the stack can\n   * drain.\n   *\n   * @returns {void}\n   */\n  function main() {\n    /** @type {number} */\n    let chunkIndex\n\n    while (point._index < chunks.length) {\n      const chunk = chunks[point._index]\n\n      // If we’re in a buffer chunk, loop through it.\n      if (typeof chunk === 'string') {\n        chunkIndex = point._index\n\n        if (point._bufferIndex < 0) {\n          point._bufferIndex = 0\n        }\n\n        while (\n          point._index === chunkIndex &&\n          point._bufferIndex < chunk.length\n        ) {\n          go(chunk.charCodeAt(point._bufferIndex))\n        }\n      } else {\n        go(chunk)\n      }\n    }\n  }\n\n  /**\n   * Deal with one code.\n   *\n   * @param {Code} code\n   * @returns {void}\n   */\n  function go(code) {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(consumed === true, 'expected character to be consumed')\n    consumed = undefined\n    debug('main: passing `%s` to %s', code, state && state.name)\n    expectedCode = code\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof state === 'function', 'expected state')\n    state = state(code)\n  }\n\n  /** @type {Effects['consume']} */\n  function consume(code) {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === expectedCode, 'expected given code to equal expected code')\n\n    debug('consume: `%s`', code)\n\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      consumed === undefined,\n      'expected code to not have been consumed: this might be because `return x(code)` instead of `return x` was used'\n    )\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      code === null\n        ? context.events.length === 0 ||\n            context.events[context.events.length - 1][0] === 'exit'\n        : context.events[context.events.length - 1][0] === 'enter',\n      'expected last token to be open'\n    )\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) {\n      point.line++\n      point.column = 1\n      point.offset += code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.carriageReturnLineFeed ? 2 : 1\n      accountForPotentialSkip()\n      debug('position: after eol: `%j`', point)\n    } else if (code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.virtualSpace) {\n      point.column++\n      point.offset++\n    }\n\n    // Not in a string chunk.\n    if (point._bufferIndex < 0) {\n      point._index++\n    } else {\n      point._bufferIndex++\n\n      // At end of string chunk.\n      // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n      // strings.\n      if (point._bufferIndex === chunks[point._index].length) {\n        point._bufferIndex = -1\n        point._index++\n      }\n    }\n\n    // Expose the previous character.\n    context.previous = code\n\n    // Mark as consumed.\n    consumed = true\n  }\n\n  /** @type {Effects['enter']} */\n  function enter(type, fields) {\n    /** @type {Token} */\n    // @ts-expect-error Patch instead of assign required fields to help GC.\n    const token = fields || {}\n    token.type = type\n    token.start = now()\n\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof type === 'string', 'expected string type')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(type.length > 0, 'expected non-empty string')\n    debug('enter: `%s`', type)\n\n    context.events.push(['enter', token, context])\n\n    stack.push(token)\n\n    return token\n  }\n\n  /** @type {Effects['exit']} */\n  function exit(type) {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof type === 'string', 'expected string type')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(type.length > 0, 'expected non-empty string')\n\n    const token = stack.pop()\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(token, 'cannot close w/o open tokens')\n    token.end = now()\n\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(type === token.type, 'expected exit token to match current token')\n\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      !(\n        token.start._index === token.end._index &&\n        token.start._bufferIndex === token.end._bufferIndex\n      ),\n      'expected non-empty token (`' + type + '`)'\n    )\n\n    debug('exit: `%s`', token.type)\n    context.events.push(['exit', token, context])\n\n    return token\n  }\n\n  /**\n   * Use results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulconstruct(construct, info) {\n    addResult(construct, info.from)\n  }\n\n  /**\n   * Discard results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulcheck(_, info) {\n    info.restore()\n  }\n\n  /**\n   * Factory to attempt/check/interrupt.\n   *\n   * @param {ReturnHandle} onreturn\n   * @param {Record<string, unknown>} [fields]\n   */\n  function constructFactory(onreturn, fields) {\n    return hook\n\n    /**\n     * Handle either an object mapping codes to constructs, a list of\n     * constructs, or a single construct.\n     *\n     * @param {Construct|Array<Construct>|ConstructRecord} constructs\n     * @param {State} returnState\n     * @param {State} [bogusState]\n     * @returns {State}\n     */\n    function hook(constructs, returnState, bogusState) {\n      /** @type {Array<Construct>} */\n      let listOfConstructs\n      /** @type {number} */\n      let constructIndex\n      /** @type {Construct} */\n      let currentConstruct\n      /** @type {Info} */\n      let info\n\n      return Array.isArray(constructs)\n        ? /* c8 ignore next 1 */\n          handleListOfConstructs(constructs)\n        : 'tokenize' in constructs\n        ? // @ts-expect-error Looks like a construct.\n          handleListOfConstructs([constructs])\n        : handleMapOfConstructs(constructs)\n\n      /**\n       * Handle a list of construct.\n       *\n       * @param {ConstructRecord} map\n       * @returns {State}\n       */\n      function handleMapOfConstructs(map) {\n        return start\n\n        /** @type {State} */\n        function start(code) {\n          const def = code !== null && map[code]\n          const all = code !== null && map.null\n          const list = [\n            // To do: add more extension tests.\n            /* c8 ignore next 2 */\n            ...(Array.isArray(def) ? def : def ? [def] : []),\n            ...(Array.isArray(all) ? all : all ? [all] : [])\n          ]\n\n          return handleListOfConstructs(list)(code)\n        }\n      }\n\n      /**\n       * Handle a list of construct.\n       *\n       * @param {Array<Construct>} list\n       * @returns {State}\n       */\n      function handleListOfConstructs(list) {\n        listOfConstructs = list\n        constructIndex = 0\n\n        if (list.length === 0) {\n          (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(bogusState, 'expected `bogusState` to be given')\n          return bogusState\n        }\n\n        return handleConstruct(list[constructIndex])\n      }\n\n      /**\n       * Handle a single construct.\n       *\n       * @param {Construct} construct\n       * @returns {State}\n       */\n      function handleConstruct(construct) {\n        return start\n\n        /** @type {State} */\n        function start(code) {\n          // To do: not needed to store if there is no bogus state, probably?\n          // Currently doesn’t work because `inspect` in document does a check\n          // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n          // by not storing.\n          info = store()\n          currentConstruct = construct\n\n          if (!construct.partial) {\n            context.currentConstruct = construct\n          }\n\n          if (\n            construct.name &&\n            context.parser.constructs.disable.null.includes(construct.name)\n          ) {\n            return nok(code)\n          }\n\n          return construct.tokenize.call(\n            // If we do have fields, create an object w/ `context` as its\n            // prototype.\n            // This allows a “live binding”, which is needed for `interrupt`.\n            fields ? Object.assign(Object.create(context), fields) : context,\n            effects,\n            ok,\n            nok\n          )(code)\n        }\n      }\n\n      /** @type {State} */\n      function ok(code) {\n        (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === expectedCode, 'expected code')\n        consumed = true\n        onreturn(currentConstruct, info)\n        return returnState\n      }\n\n      /** @type {State} */\n      function nok(code) {\n        (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === expectedCode, 'expected code')\n        consumed = true\n        info.restore()\n\n        if (++constructIndex < listOfConstructs.length) {\n          return handleConstruct(listOfConstructs[constructIndex])\n        }\n\n        return bogusState\n      }\n    }\n  }\n\n  /**\n   * @param {Construct} construct\n   * @param {number} from\n   * @returns {void}\n   */\n  function addResult(construct, from) {\n    if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n      resolveAllConstructs.push(construct)\n    }\n\n    if (construct.resolve) {\n      (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__.splice)(\n        context.events,\n        from,\n        context.events.length - from,\n        construct.resolve(context.events.slice(from), context)\n      )\n    }\n\n    if (construct.resolveTo) {\n      context.events = construct.resolveTo(context.events, context)\n    }\n\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      construct.partial ||\n        context.events.length === 0 ||\n        context.events[context.events.length - 1][0] === 'exit',\n      'expected last token to end'\n    )\n  }\n\n  /**\n   * Store state.\n   *\n   * @returns {Info}\n   */\n  function store() {\n    const startPoint = now()\n    const startPrevious = context.previous\n    const startCurrentConstruct = context.currentConstruct\n    const startEventsIndex = context.events.length\n    const startStack = Array.from(stack)\n\n    return {restore, from: startEventsIndex}\n\n    /**\n     * Restore state.\n     *\n     * @returns {void}\n     */\n    function restore() {\n      point = startPoint\n      context.previous = startPrevious\n      context.currentConstruct = startCurrentConstruct\n      context.events.length = startEventsIndex\n      stack = startStack\n      accountForPotentialSkip()\n      debug('position: restore: `%j`', point)\n    }\n  }\n\n  /**\n   * Move the current point a bit forward in the line when it’s on a column\n   * skip.\n   *\n   * @returns {void}\n   */\n  function accountForPotentialSkip() {\n    if (point.line in columnStart && point.column < 2) {\n      point.column = columnStart[point.line]\n      point.offset += columnStart[point.line] - 1\n    }\n  }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Array<Chunk>} chunks\n * @param {Pick<Token, 'start'|'end'>} token\n * @returns {Array<Chunk>}\n */\nfunction sliceChunks(chunks, token) {\n  const startIndex = token.start._index\n  const startBufferIndex = token.start._bufferIndex\n  const endIndex = token.end._index\n  const endBufferIndex = token.end._bufferIndex\n  /** @type {Array<Chunk>} */\n  let view\n\n  if (startIndex === endIndex) {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(endBufferIndex > -1, 'expected non-negative end buffer index')\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(startBufferIndex > -1, 'expected non-negative start buffer index')\n    // @ts-expect-error `_bufferIndex` is used on string chunks.\n    view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n  } else {\n    view = chunks.slice(startIndex, endIndex)\n\n    if (startBufferIndex > -1) {\n      // @ts-expect-error `_bufferIndex` is used on string chunks.\n      view[0] = view[0].slice(startBufferIndex)\n    }\n\n    if (endBufferIndex > 0) {\n      // @ts-expect-error `_bufferIndex` is used on string chunks.\n      view.push(chunks[endIndex].slice(0, endBufferIndex))\n    }\n  }\n\n  return view\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array<Chunk>} chunks\n * @param {boolean} [expandTabs=false]\n * @returns {string}\n */\nfunction serializeChunks(chunks, expandTabs) {\n  let index = -1\n  /** @type {Array<string>} */\n  const result = []\n  /** @type {boolean|undefined} */\n  let atTab\n\n  while (++index < chunks.length) {\n    const chunk = chunks[index]\n    /** @type {string} */\n    let value\n\n    if (typeof chunk === 'string') {\n      value = chunk\n    } else\n      switch (chunk) {\n        case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.carriageReturn: {\n          value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.cr\n\n          break\n        }\n\n        case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lineFeed: {\n          value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.lf\n\n          break\n        }\n\n        case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.carriageReturnLineFeed: {\n          value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.cr + micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.lf\n\n          break\n        }\n\n        case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.horizontalTab: {\n          value = expandTabs ? micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.space : micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.ht\n\n          break\n        }\n\n        case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.virtualSpace: {\n          if (!expandTabs && atTab) continue\n          value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.space\n\n          break\n        }\n\n        default: {\n          (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof chunk === 'number', 'expected number')\n          // Currently only replacement character.\n          value = String.fromCharCode(chunk)\n        }\n      }\n\n    atTab = chunk === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.horizontalTab\n    result.push(value)\n  }\n\n  return result.join('')\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark/dev/lib/create-tokenizer.js?");

/***/ }),

/***/ "./node_modules/micromark/dev/lib/initialize/content.js":
/*!**************************************************************!*\
  !*** ./node_modules/micromark/dev/lib/initialize/content.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"content\": function() { return /* binding */ content; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n\n\n\n/** @type {InitialConstruct} */\nconst content = {tokenize: initializeContent}\n\n/** @type {Initializer} */\nfunction initializeContent(effects) {\n  const contentStart = effects.attempt(\n    this.parser.constructs.contentInitial,\n    afterContentStartConstruct,\n    paragraphInitial\n  )\n  /** @type {Token} */\n  let previous\n\n  return contentStart\n\n  /** @type {State} */\n  function afterContentStartConstruct(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code),\n      'expected eol or eof'\n    )\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n      effects.consume(code)\n      return\n    }\n\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.lineEnding)\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.lineEnding)\n    return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(effects, contentStart, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.linePrefix)\n  }\n\n  /** @type {State} */\n  function paragraphInitial(code) {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof && !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code),\n      'expected anything other than a line ending or EOF'\n    )\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.paragraph)\n    return lineStart(code)\n  }\n\n  /** @type {State} */\n  function lineStart(code) {\n    const token = effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.chunkText, {\n      contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.contentTypeText,\n      previous\n    })\n\n    if (previous) {\n      previous.next = token\n    }\n\n    previous = token\n\n    return data(code)\n  }\n\n  /** @type {State} */\n  function data(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.chunkText)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.paragraph)\n      effects.consume(code)\n      return\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code)) {\n      effects.consume(code)\n      effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.chunkText)\n      return lineStart\n    }\n\n    // Data.\n    effects.consume(code)\n    return data\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark/dev/lib/initialize/content.js?");

/***/ }),

/***/ "./node_modules/micromark/dev/lib/initialize/document.js":
/*!***************************************************************!*\
  !*** ./node_modules/micromark/dev/lib/initialize/document.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"document\": function() { return /* binding */ document; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ \"./node_modules/micromark-util-chunked/dev/index.js\");\n/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Point} Point\n */\n\n/**\n * @typedef {Record<string, unknown>} StackState\n * @typedef {[Construct, StackState]} StackItem\n */\n\n\n\n\n\n\n\n\n\n/** @type {InitialConstruct} */\nconst document = {tokenize: initializeDocument}\n\n/** @type {Construct} */\nconst containerConstruct = {tokenize: tokenizeContainer}\n\n/** @type {Initializer} */\nfunction initializeDocument(effects) {\n  const self = this\n  /** @type {Array<StackItem>} */\n  const stack = []\n  let continued = 0\n  /** @type {TokenizeContext|undefined} */\n  let childFlow\n  /** @type {Token|undefined} */\n  let childToken\n  /** @type {number} */\n  let lineStartOffset\n\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    // First we iterate through the open blocks, starting with the root\n    // document, and descending through last children down to the last open\n    // block.\n    // Each block imposes a condition that the line must satisfy if the block is\n    // to remain open.\n    // For example, a block quote requires a `>` character.\n    // A paragraph requires a non-blank line.\n    // In this phase we may match all or just some of the open blocks.\n    // But we cannot close unmatched blocks yet, because we may have a lazy\n    // continuation line.\n    if (continued < stack.length) {\n      const item = stack[continued]\n      self.containerState = item[1]\n      ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n        item[0].continuation,\n        'expected `continuation` to be defined on container construct'\n      )\n      return effects.attempt(\n        item[0].continuation,\n        documentContinue,\n        checkNewContainers\n      )(code)\n    }\n\n    // Done.\n    return checkNewContainers(code)\n  }\n\n  /** @type {State} */\n  function documentContinue(code) {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      self.containerState,\n      'expected `containerState` to be defined after continuation'\n    )\n\n    continued++\n\n    // Note: this field is called `_closeFlow` but it also closes containers.\n    // Perhaps a good idea to rename it but it’s already used in the wild by\n    // extensions.\n    if (self.containerState._closeFlow) {\n      self.containerState._closeFlow = undefined\n\n      if (childFlow) {\n        closeFlow()\n      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when dealing with lazy lines in `writeToChild`.\n      const indexBeforeExits = self.events.length\n      let indexBeforeFlow = indexBeforeExits\n      /** @type {Point|undefined} */\n      let point\n\n      // Find the flow chunk.\n      while (indexBeforeFlow--) {\n        if (\n          self.events[indexBeforeFlow][0] === 'exit' &&\n          self.events[indexBeforeFlow][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow\n        ) {\n          point = self.events[indexBeforeFlow][1].end\n          break\n        }\n      }\n\n      (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(point, 'could not find previous flow chunk')\n\n      exitContainers(continued)\n\n      // Fix positions.\n      let index = indexBeforeExits\n\n      while (index < self.events.length) {\n        self.events[index][1].end = Object.assign({}, point)\n        index++\n      }\n\n      // Inject the exits earlier (they’re still also at the end).\n      (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(\n        self.events,\n        indexBeforeFlow + 1,\n        0,\n        self.events.slice(indexBeforeExits)\n      )\n\n      // Discard the duplicate exits.\n      self.events.length = index\n\n      return checkNewContainers(code)\n    }\n\n    return start(code)\n  }\n\n  /** @type {State} */\n  function checkNewContainers(code) {\n    // Next, after consuming the continuation markers for existing blocks, we\n    // look for new block starts (e.g. `>` for a block quote).\n    // If we encounter a new block start, we close any blocks unmatched in\n    // step 1 before creating the new block as a child of the last matched\n    // block.\n    if (continued === stack.length) {\n      // No need to `check` whether there’s a container, of `exitContainers`\n      // would be moot.\n      // We can instead immediately `attempt` to parse one.\n      if (!childFlow) {\n        return documentContinued(code)\n      }\n\n      // If we have concrete content, such as block HTML or fenced code,\n      // we can’t have containers “pierce” into them, so we can immediately\n      // start.\n      if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n        return flowStart(code)\n      }\n\n      // If we do have flow, it could still be a blank line,\n      // but we’d be interrupting it w/ a new container if there’s a current\n      // construct.\n      self.interrupt = Boolean(\n        childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n      )\n    }\n\n    // Check if there is a new container.\n    self.containerState = {}\n    return effects.check(\n      containerConstruct,\n      thereIsANewContainer,\n      thereIsNoNewContainer\n    )(code)\n  }\n\n  /** @type {State} */\n  function thereIsANewContainer(code) {\n    if (childFlow) closeFlow()\n    exitContainers(continued)\n    return documentContinued(code)\n  }\n\n  /** @type {State} */\n  function thereIsNoNewContainer(code) {\n    self.parser.lazy[self.now().line] = continued !== stack.length\n    lineStartOffset = self.now().offset\n    return flowStart(code)\n  }\n\n  /** @type {State} */\n  function documentContinued(code) {\n    // Try new containers.\n    self.containerState = {}\n    return effects.attempt(\n      containerConstruct,\n      containerContinue,\n      flowStart\n    )(code)\n  }\n\n  /** @type {State} */\n  function containerContinue(code) {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      self.currentConstruct,\n      'expected `currentConstruct` to be defined on tokenizer'\n    )\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      self.containerState,\n      'expected `containerState` to be defined on tokenizer'\n    )\n    continued++\n    stack.push([self.currentConstruct, self.containerState])\n    // Try another.\n    return documentContinued(code)\n  }\n\n  /** @type {State} */\n  function flowStart(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof) {\n      if (childFlow) closeFlow()\n      exitContainers(0)\n      effects.consume(code)\n      return\n    }\n\n    childFlow = childFlow || self.parser.flow(self.now())\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow, {\n      contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.contentTypeFlow,\n      previous: childToken,\n      _tokenizer: childFlow\n    })\n\n    return flowContinue(code)\n  }\n\n  /** @type {State} */\n  function flowContinue(code) {\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof) {\n      writeToChild(effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow), true)\n      exitContainers(0)\n      effects.consume(code)\n      return\n    }\n\n    if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) {\n      effects.consume(code)\n      writeToChild(effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow))\n      // Get ready for the next line.\n      continued = 0\n      self.interrupt = undefined\n      return start\n    }\n\n    effects.consume(code)\n    return flowContinue\n  }\n\n  /**\n   * @param {Token} token\n   * @param {boolean} [eof]\n   * @returns {void}\n   */\n  function writeToChild(token, eof) {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(childFlow, 'expected `childFlow` to be defined when continuing')\n    const stream = self.sliceStream(token)\n    if (eof) stream.push(null)\n    token.previous = childToken\n    if (childToken) childToken.next = token\n    childToken = token\n    childFlow.defineSkip(token.start)\n    childFlow.write(stream)\n\n    // Alright, so we just added a lazy line:\n    //\n    // ```markdown\n    // > a\n    // b.\n    //\n    // Or:\n    //\n    // > ~~~c\n    // d\n    //\n    // Or:\n    //\n    // > | e |\n    // f\n    // ```\n    //\n    // The construct in the second example (fenced code) does not accept lazy\n    // lines, so it marked itself as done at the end of its first line, and\n    // then the content construct parses `d`.\n    // Most constructs in markdown match on the first line: if the first line\n    // forms a construct, a non-lazy line can’t “unmake” it.\n    //\n    // The construct in the third example is potentially a GFM table, and\n    // those are *weird*.\n    // It *could* be a table, from the first line, if the following line\n    // matches a condition.\n    // In this case, that second line is lazy, which “unmakes” the first line\n    // and turns the whole into one content block.\n    //\n    // We’ve now parsed the non-lazy and the lazy line, and can figure out\n    // whether the lazy line started a new flow block.\n    // If it did, we exit the current containers between the two flow blocks.\n    if (self.parser.lazy[token.start.line]) {\n      let index = childFlow.events.length\n\n      while (index--) {\n        if (\n          // The token starts before the line ending…\n          childFlow.events[index][1].start.offset < lineStartOffset &&\n          // …and either is not ended yet…\n          (!childFlow.events[index][1].end ||\n            // …or ends after it.\n            childFlow.events[index][1].end.offset > lineStartOffset)\n        ) {\n          // Exit: there’s still something open, which means it’s a lazy line\n          // part of something.\n          return\n        }\n      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when closing flow in `documentContinue`.\n      const indexBeforeExits = self.events.length\n      let indexBeforeFlow = indexBeforeExits\n      /** @type {boolean|undefined} */\n      let seen\n      /** @type {Point|undefined} */\n      let point\n\n      // Find the previous chunk (the one before the lazy line).\n      while (indexBeforeFlow--) {\n        if (\n          self.events[indexBeforeFlow][0] === 'exit' &&\n          self.events[indexBeforeFlow][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow\n        ) {\n          if (seen) {\n            point = self.events[indexBeforeFlow][1].end\n            break\n          }\n\n          seen = true\n        }\n      }\n\n      (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(point, 'could not find previous flow chunk')\n\n      exitContainers(continued)\n\n      // Fix positions.\n      index = indexBeforeExits\n\n      while (index < self.events.length) {\n        self.events[index][1].end = Object.assign({}, point)\n        index++\n      }\n\n      // Inject the exits earlier (they’re still also at the end).\n      (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(\n        self.events,\n        indexBeforeFlow + 1,\n        0,\n        self.events.slice(indexBeforeExits)\n      )\n\n      // Discard the duplicate exits.\n      self.events.length = index\n    }\n  }\n\n  /**\n   * @param {number} size\n   * @returns {void}\n   */\n  function exitContainers(size) {\n    let index = stack.length\n\n    // Exit open containers.\n    while (index-- > size) {\n      const entry = stack[index]\n      self.containerState = entry[1]\n      ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n        entry[0].exit,\n        'expected `exit` to be defined on container construct'\n      )\n      entry[0].exit.call(self, effects)\n    }\n\n    stack.length = size\n  }\n\n  function closeFlow() {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      self.containerState,\n      'expected `containerState` to be defined when closing flow'\n    )\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(childFlow, 'expected `childFlow` to be defined when closing it')\n    childFlow.write([micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof])\n    childToken = undefined\n    childFlow = undefined\n    self.containerState._closeFlow = undefined\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeContainer(effects, ok, nok) {\n  return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__.factorySpace)(\n    effects,\n    effects.attempt(this.parser.constructs.document, ok, nok),\n    micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix,\n    this.parser.constructs.disable.null.includes('codeIndented')\n      ? undefined\n      : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize\n  )\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark/dev/lib/initialize/document.js?");

/***/ }),

/***/ "./node_modules/micromark/dev/lib/initialize/flow.js":
/*!***********************************************************!*\
  !*** ./node_modules/micromark/dev/lib/initialize/flow.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"flow\": function() { return /* binding */ flow; }\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"./node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/blank-line.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-core-commonmark */ \"./node_modules/micromark-core-commonmark/dev/lib/content.js\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-factory-space */ \"./node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-character */ \"./node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n\n\n\n/** @type {InitialConstruct} */\nconst flow = {tokenize: initializeFlow}\n\n/** @type {Initializer} */\nfunction initializeFlow(effects) {\n  const self = this\n  const initial = effects.attempt(\n    // Try to parse a blank line.\n    micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.blankLine,\n    atBlankEnding,\n    // Try to parse initial flow (essentially, only code).\n    effects.attempt(\n      this.parser.constructs.flowInitial,\n      afterConstruct,\n      (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__.factorySpace)(\n        effects,\n        effects.attempt(\n          this.parser.constructs.flow,\n          afterConstruct,\n          effects.attempt(micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__.content, afterConstruct)\n        ),\n        micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix\n      )\n    )\n  )\n\n  return initial\n\n  /** @type {State} */\n  function atBlankEnding(code) {\n    ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEnding)(code),\n      'expected eol or eof'\n    )\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof) {\n      effects.consume(code)\n      return\n    }\n\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank)\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank)\n    self.currentConstruct = undefined\n    return initial\n  }\n\n  /** @type {State} */\n  function afterConstruct(code) {\n    (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n      code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEnding)(code),\n      'expected eol or eof'\n    )\n\n    if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof) {\n      effects.consume(code)\n      return\n    }\n\n    effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding)\n    effects.consume(code)\n    effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding)\n    self.currentConstruct = undefined\n    return initial\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark/dev/lib/initialize/flow.js?");

/***/ }),

/***/ "./node_modules/micromark/dev/lib/initialize/text.js":
/*!***********************************************************!*\
  !*** ./node_modules/micromark/dev/lib/initialize/text.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"resolver\": function() { return /* binding */ resolver; },\n/* harmony export */   \"string\": function() { return /* binding */ string; },\n/* harmony export */   \"text\": function() { return /* binding */ text; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"./node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n\n\n\nconst resolver = {resolveAll: createResolver()}\nconst string = initializeFactory('string')\nconst text = initializeFactory('text')\n\n/**\n * @param {'string'|'text'} field\n * @returns {InitialConstruct}\n */\nfunction initializeFactory(field) {\n  return {\n    tokenize: initializeText,\n    resolveAll: createResolver(\n      field === 'text' ? resolveAllLineSuffixes : undefined\n    )\n  }\n\n  /** @type {Initializer} */\n  function initializeText(effects) {\n    const self = this\n    const constructs = this.parser.constructs[field]\n    const text = effects.attempt(constructs, start, notText)\n\n    return start\n\n    /** @type {State} */\n    function start(code) {\n      return atBreak(code) ? text(code) : notText(code)\n    }\n\n    /** @type {State} */\n    function notText(code) {\n      if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof) {\n        effects.consume(code)\n        return\n      }\n\n      effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.data)\n      effects.consume(code)\n      return data\n    }\n\n    /** @type {State} */\n    function data(code) {\n      if (atBreak(code)) {\n        effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.data)\n        return text(code)\n      }\n\n      // Data.\n      effects.consume(code)\n      return data\n    }\n\n    /**\n     * @param {Code} code\n     * @returns {boolean}\n     */\n    function atBreak(code) {\n      if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof) {\n        return true\n      }\n\n      const list = constructs[code]\n      let index = -1\n\n      if (list) {\n        while (++index < list.length) {\n          const item = list[index]\n          if (!item.previous || item.previous.call(self, self.previous)) {\n            return true\n          }\n        }\n      }\n\n      return false\n    }\n  }\n}\n\n/**\n * @param {Resolver} [extraResolver]\n * @returns {Resolver}\n */\nfunction createResolver(extraResolver) {\n  return resolveAllText\n\n  /** @type {Resolver} */\n  function resolveAllText(events, context) {\n    let index = -1\n    /** @type {number|undefined} */\n    let enter\n\n    // A rather boring computation (to merge adjacent `data` events) which\n    // improves mm performance by 29%.\n    while (++index <= events.length) {\n      if (enter === undefined) {\n        if (events[index] && events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.data) {\n          enter = index\n          index++\n        }\n      } else if (!events[index] || events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.data) {\n        // Don’t do anything if there is one data token.\n        if (index !== enter + 2) {\n          events[enter][1].end = events[index - 1][1].end\n          events.splice(enter + 2, index - enter - 2)\n          index = enter + 2\n        }\n\n        enter = undefined\n      }\n    }\n\n    return extraResolver ? extraResolver(events, context) : events\n  }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n  let eventIndex = 0 // Skip first.\n\n  while (++eventIndex <= events.length) {\n    if (\n      (eventIndex === events.length ||\n        events[eventIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) &&\n      events[eventIndex - 1][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.data\n    ) {\n      const data = events[eventIndex - 1][1]\n      const chunks = context.sliceStream(data)\n      let index = chunks.length\n      let bufferIndex = -1\n      let size = 0\n      /** @type {boolean|undefined} */\n      let tabs\n\n      while (index--) {\n        const chunk = chunks[index]\n\n        if (typeof chunk === 'string') {\n          bufferIndex = chunk.length\n\n          while (chunk.charCodeAt(bufferIndex - 1) === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space) {\n            size++\n            bufferIndex--\n          }\n\n          if (bufferIndex) break\n          bufferIndex = -1\n        }\n        // Number\n        else if (chunk === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab) {\n          tabs = true\n          size++\n        } else if (chunk === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.virtualSpace) {\n          // Empty\n        } else {\n          // Replacement character, exit.\n          index++\n          break\n        }\n      }\n\n      if (size) {\n        const token = {\n          type:\n            eventIndex === events.length ||\n            tabs ||\n            size < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.hardBreakPrefixSizeMin\n              ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineSuffix\n              : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.hardBreakTrailing,\n          start: {\n            line: data.end.line,\n            column: data.end.column - size,\n            offset: data.end.offset - size,\n            _index: data.start._index + index,\n            _bufferIndex: index\n              ? bufferIndex\n              : data.start._bufferIndex + bufferIndex\n          },\n          end: Object.assign({}, data.end)\n        }\n\n        data.end = Object.assign({}, token.start)\n\n        if (data.start.offset === data.end.offset) {\n          Object.assign(data, token)\n        } else {\n          events.splice(\n            eventIndex,\n            0,\n            ['enter', token, context],\n            ['exit', token, context]\n          )\n          eventIndex += 2\n        }\n      }\n\n      eventIndex++\n    }\n  }\n\n  return events\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark/dev/lib/initialize/text.js?");

/***/ }),

/***/ "./node_modules/micromark/dev/lib/parse.js":
/*!*************************************************!*\
  !*** ./node_modules/micromark/dev/lib/parse.js ***!
  \*************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"parse\": function() { return /* binding */ parse; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_combine_extensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-combine-extensions */ \"./node_modules/micromark-util-combine-extensions/index.js\");\n/* harmony import */ var _initialize_content_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initialize/content.js */ \"./node_modules/micromark/dev/lib/initialize/content.js\");\n/* harmony import */ var _initialize_document_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./initialize/document.js */ \"./node_modules/micromark/dev/lib/initialize/document.js\");\n/* harmony import */ var _initialize_flow_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./initialize/flow.js */ \"./node_modules/micromark/dev/lib/initialize/flow.js\");\n/* harmony import */ var _initialize_text_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./initialize/text.js */ \"./node_modules/micromark/dev/lib/initialize/text.js\");\n/* harmony import */ var _create_tokenizer_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./create-tokenizer.js */ \"./node_modules/micromark/dev/lib/create-tokenizer.js\");\n/* harmony import */ var _constructs_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constructs.js */ \"./node_modules/micromark/dev/lib/constructs.js\");\n/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Create} Create\n */\n\n\n\n\n\n\n\n\n\n/**\n * @param {ParseOptions} [options]\n * @returns {ParseContext}\n */\nfunction parse(options = {}) {\n  /** @type {FullNormalizedExtension} */\n  // @ts-expect-error `defaultConstructs` is full, so the result will be too.\n  const constructs = (0,micromark_util_combine_extensions__WEBPACK_IMPORTED_MODULE_0__.combineExtensions)(\n    // @ts-expect-error Same as above.\n    [_constructs_js__WEBPACK_IMPORTED_MODULE_1__].concat(options.extensions || [])\n  )\n  /** @type {ParseContext} */\n  const parser = {\n    defined: [],\n    lazy: {},\n    constructs,\n    content: create(_initialize_content_js__WEBPACK_IMPORTED_MODULE_2__.content),\n    document: create(_initialize_document_js__WEBPACK_IMPORTED_MODULE_3__.document),\n    flow: create(_initialize_flow_js__WEBPACK_IMPORTED_MODULE_4__.flow),\n    string: create(_initialize_text_js__WEBPACK_IMPORTED_MODULE_5__.string),\n    text: create(_initialize_text_js__WEBPACK_IMPORTED_MODULE_5__.text)\n  }\n\n  return parser\n\n  /**\n   * @param {InitialConstruct} initial\n   */\n  function create(initial) {\n    return creator\n    /** @type {Create} */\n    function creator(from) {\n      return (0,_create_tokenizer_js__WEBPACK_IMPORTED_MODULE_6__.createTokenizer)(parser, initial, from)\n    }\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark/dev/lib/parse.js?");

/***/ }),

/***/ "./node_modules/micromark/dev/lib/postprocess.js":
/*!*******************************************************!*\
  !*** ./node_modules/micromark/dev/lib/postprocess.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"postprocess\": function() { return /* binding */ postprocess; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-subtokenize */ \"./node_modules/micromark-util-subtokenize/dev/index.js\");\n/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n\n\n/**\n * @param {Array<Event>} events\n * @returns {Array<Event>}\n */\nfunction postprocess(events) {\n  while (!(0,micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_0__.subtokenize)(events)) {\n    // Empty\n  }\n\n  return events\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark/dev/lib/postprocess.js?");

/***/ }),

/***/ "./node_modules/micromark/dev/lib/preprocess.js":
/*!******************************************************!*\
  !*** ./node_modules/micromark/dev/lib/preprocess.js ***!
  \******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"preprocess\": function() { return /* binding */ preprocess; }\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"./node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"./node_modules/micromark-util-symbol/constants.js\");\n/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding} [encoding]\n * @param {boolean} [end=false]\n * @returns {Array<Chunk>}\n */\n\n\n\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nfunction preprocess() {\n  let column = 1\n  let buffer = ''\n  /** @type {boolean|undefined} */\n  let start = true\n  /** @type {boolean|undefined} */\n  let atCarriageReturn\n\n  return preprocessor\n\n  /** @type {Preprocessor} */\n  function preprocessor(value, encoding, end) {\n    /** @type {Array<Chunk>} */\n    const chunks = []\n    /** @type {RegExpMatchArray|null} */\n    let match\n    /** @type {number} */\n    let next\n    /** @type {number} */\n    let startPosition\n    /** @type {number} */\n    let endPosition\n    /** @type {Code} */\n    let code\n\n    // @ts-expect-error `Buffer` does allow an encoding.\n    value = buffer + value.toString(encoding)\n    startPosition = 0\n    buffer = ''\n\n    if (start) {\n      if (value.charCodeAt(0) === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.byteOrderMarker) {\n        startPosition++\n      }\n\n      start = undefined\n    }\n\n    while (startPosition < value.length) {\n      search.lastIndex = startPosition\n      match = search.exec(value)\n      endPosition =\n        match && match.index !== undefined ? match.index : value.length\n      code = value.charCodeAt(endPosition)\n\n      if (!match) {\n        buffer = value.slice(startPosition)\n        break\n      }\n\n      if (\n        code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lf &&\n        startPosition === endPosition &&\n        atCarriageReturn\n      ) {\n        chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturnLineFeed)\n        atCarriageReturn = undefined\n      } else {\n        if (atCarriageReturn) {\n          chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturn)\n          atCarriageReturn = undefined\n        }\n\n        if (startPosition < endPosition) {\n          chunks.push(value.slice(startPosition, endPosition))\n          column += endPosition - startPosition\n        }\n\n        switch (code) {\n          case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.nul: {\n            chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.replacementCharacter)\n            column++\n\n            break\n          }\n\n          case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ht: {\n            next = Math.ceil(column / micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_1__.constants.tabSize) * micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_1__.constants.tabSize\n            chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab)\n            while (column++ < next) chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.virtualSpace)\n\n            break\n          }\n\n          case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lf: {\n            chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lineFeed)\n            column = 1\n\n            break\n          }\n\n          default: {\n            atCarriageReturn = true\n            column = 1\n          }\n        }\n      }\n\n      startPosition = endPosition + 1\n    }\n\n    if (end) {\n      if (atCarriageReturn) chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturn)\n      if (buffer) chunks.push(buffer)\n      chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof)\n    }\n\n    return chunks\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/micromark/dev/lib/preprocess.js?");

/***/ }),

/***/ "./node_modules/property-information/index.js":
/*!****************************************************!*\
  !*** ./node_modules/property-information/index.js ***!
  \****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"find\": function() { return /* reexport safe */ _lib_find_js__WEBPACK_IMPORTED_MODULE_0__.find; },\n/* harmony export */   \"hastToReact\": function() { return /* reexport safe */ _lib_hast_to_react_js__WEBPACK_IMPORTED_MODULE_1__.hastToReact; },\n/* harmony export */   \"html\": function() { return /* binding */ html; },\n/* harmony export */   \"normalize\": function() { return /* reexport safe */ _lib_normalize_js__WEBPACK_IMPORTED_MODULE_2__.normalize; },\n/* harmony export */   \"svg\": function() { return /* binding */ svg; }\n/* harmony export */ });\n/* harmony import */ var _lib_util_merge_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lib/util/merge.js */ \"./node_modules/property-information/lib/util/merge.js\");\n/* harmony import */ var _lib_xlink_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib/xlink.js */ \"./node_modules/property-information/lib/xlink.js\");\n/* harmony import */ var _lib_xml_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/xml.js */ \"./node_modules/property-information/lib/xml.js\");\n/* harmony import */ var _lib_xmlns_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lib/xmlns.js */ \"./node_modules/property-information/lib/xmlns.js\");\n/* harmony import */ var _lib_aria_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./lib/aria.js */ \"./node_modules/property-information/lib/aria.js\");\n/* harmony import */ var _lib_html_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./lib/html.js */ \"./node_modules/property-information/lib/html.js\");\n/* harmony import */ var _lib_svg_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./lib/svg.js */ \"./node_modules/property-information/lib/svg.js\");\n/* harmony import */ var _lib_find_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/find.js */ \"./node_modules/property-information/lib/find.js\");\n/* harmony import */ var _lib_hast_to_react_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/hast-to-react.js */ \"./node_modules/property-information/lib/hast-to-react.js\");\n/* harmony import */ var _lib_normalize_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/normalize.js */ \"./node_modules/property-information/lib/normalize.js\");\n/**\n * @typedef {import('./lib/util/info.js').Info} Info\n * @typedef {import('./lib/util/schema.js').Schema} Schema\n */\n\n\n\n\n\n\n\n\n\n\n\n\nconst html = (0,_lib_util_merge_js__WEBPACK_IMPORTED_MODULE_3__.merge)([_lib_xml_js__WEBPACK_IMPORTED_MODULE_4__.xml, _lib_xlink_js__WEBPACK_IMPORTED_MODULE_5__.xlink, _lib_xmlns_js__WEBPACK_IMPORTED_MODULE_6__.xmlns, _lib_aria_js__WEBPACK_IMPORTED_MODULE_7__.aria, _lib_html_js__WEBPACK_IMPORTED_MODULE_8__.html], 'html')\nconst svg = (0,_lib_util_merge_js__WEBPACK_IMPORTED_MODULE_3__.merge)([_lib_xml_js__WEBPACK_IMPORTED_MODULE_4__.xml, _lib_xlink_js__WEBPACK_IMPORTED_MODULE_5__.xlink, _lib_xmlns_js__WEBPACK_IMPORTED_MODULE_6__.xmlns, _lib_aria_js__WEBPACK_IMPORTED_MODULE_7__.aria, _lib_svg_js__WEBPACK_IMPORTED_MODULE_9__.svg], 'svg')\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/index.js?");

/***/ }),

/***/ "./node_modules/property-information/lib/aria.js":
/*!*******************************************************!*\
  !*** ./node_modules/property-information/lib/aria.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"aria\": function() { return /* binding */ aria; }\n/* harmony export */ });\n/* harmony import */ var _util_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/types.js */ \"./node_modules/property-information/lib/util/types.js\");\n/* harmony import */ var _util_create_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/create.js */ \"./node_modules/property-information/lib/util/create.js\");\n\n\n\nconst aria = (0,_util_create_js__WEBPACK_IMPORTED_MODULE_0__.create)({\n  transform(_, prop) {\n    return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n  },\n  properties: {\n    ariaActiveDescendant: null,\n    ariaAtomic: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish,\n    ariaAutoComplete: null,\n    ariaBusy: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish,\n    ariaChecked: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish,\n    ariaColCount: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number,\n    ariaColIndex: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number,\n    ariaColSpan: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number,\n    ariaControls: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated,\n    ariaCurrent: null,\n    ariaDescribedBy: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated,\n    ariaDetails: null,\n    ariaDisabled: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish,\n    ariaDropEffect: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated,\n    ariaErrorMessage: null,\n    ariaExpanded: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish,\n    ariaFlowTo: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated,\n    ariaGrabbed: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish,\n    ariaHasPopup: null,\n    ariaHidden: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish,\n    ariaInvalid: null,\n    ariaKeyShortcuts: null,\n    ariaLabel: null,\n    ariaLabelledBy: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated,\n    ariaLevel: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number,\n    ariaLive: null,\n    ariaModal: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish,\n    ariaMultiLine: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish,\n    ariaMultiSelectable: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish,\n    ariaOrientation: null,\n    ariaOwns: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated,\n    ariaPlaceholder: null,\n    ariaPosInSet: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number,\n    ariaPressed: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish,\n    ariaReadOnly: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish,\n    ariaRelevant: null,\n    ariaRequired: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish,\n    ariaRoleDescription: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated,\n    ariaRowCount: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number,\n    ariaRowIndex: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number,\n    ariaRowSpan: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number,\n    ariaSelected: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish,\n    ariaSetSize: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number,\n    ariaSort: null,\n    ariaValueMax: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number,\n    ariaValueMin: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number,\n    ariaValueNow: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number,\n    ariaValueText: null,\n    role: null\n  }\n})\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/lib/aria.js?");

/***/ }),

/***/ "./node_modules/property-information/lib/find.js":
/*!*******************************************************!*\
  !*** ./node_modules/property-information/lib/find.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"find\": function() { return /* binding */ find; }\n/* harmony export */ });\n/* harmony import */ var _normalize_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./normalize.js */ \"./node_modules/property-information/lib/normalize.js\");\n/* harmony import */ var _util_defined_info_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/defined-info.js */ \"./node_modules/property-information/lib/util/defined-info.js\");\n/* harmony import */ var _util_info_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/info.js */ \"./node_modules/property-information/lib/util/info.js\");\n/**\n * @typedef {import('./util/schema.js').Schema} Schema\n */\n\n\n\n\n\nconst valid = /^data[-\\w.:]+$/i\nconst dash = /-[a-z]/g\nconst cap = /[A-Z]/g\n\n/**\n * @param {Schema} schema\n * @param {string} value\n * @returns {Info}\n */\nfunction find(schema, value) {\n  const normal = (0,_normalize_js__WEBPACK_IMPORTED_MODULE_0__.normalize)(value)\n  let prop = value\n  let Type = _util_info_js__WEBPACK_IMPORTED_MODULE_1__.Info\n\n  if (normal in schema.normal) {\n    return schema.property[schema.normal[normal]]\n  }\n\n  if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n    // Attribute or property.\n    if (value.charAt(4) === '-') {\n      // Turn it into a property.\n      const rest = value.slice(5).replace(dash, camelcase)\n      prop = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n    } else {\n      // Turn it into an attribute.\n      const rest = value.slice(4)\n\n      if (!dash.test(rest)) {\n        let dashes = rest.replace(cap, kebab)\n\n        if (dashes.charAt(0) !== '-') {\n          dashes = '-' + dashes\n        }\n\n        value = 'data' + dashes\n      }\n    }\n\n    Type = _util_defined_info_js__WEBPACK_IMPORTED_MODULE_2__.DefinedInfo\n  }\n\n  return new Type(prop, value)\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction kebab($0) {\n  return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction camelcase($0) {\n  return $0.charAt(1).toUpperCase()\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/lib/find.js?");

/***/ }),

/***/ "./node_modules/property-information/lib/hast-to-react.js":
/*!****************************************************************!*\
  !*** ./node_modules/property-information/lib/hast-to-react.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"hastToReact\": function() { return /* binding */ hastToReact; }\n/* harmony export */ });\n/**\n * `hast` is close to `React`, but differs in a couple of cases.\n *\n * To get a React property from a hast property, check if it is in\n * `hastToReact`, if it is, then use the corresponding value,\n * otherwise, use the hast property.\n *\n * @type {Record<string, string>}\n */\nconst hastToReact = {\n  classId: 'classID',\n  dataType: 'datatype',\n  itemId: 'itemID',\n  strokeDashArray: 'strokeDasharray',\n  strokeDashOffset: 'strokeDashoffset',\n  strokeLineCap: 'strokeLinecap',\n  strokeLineJoin: 'strokeLinejoin',\n  strokeMiterLimit: 'strokeMiterlimit',\n  typeOf: 'typeof',\n  xLinkActuate: 'xlinkActuate',\n  xLinkArcRole: 'xlinkArcrole',\n  xLinkHref: 'xlinkHref',\n  xLinkRole: 'xlinkRole',\n  xLinkShow: 'xlinkShow',\n  xLinkTitle: 'xlinkTitle',\n  xLinkType: 'xlinkType',\n  xmlnsXLink: 'xmlnsXlink'\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/lib/hast-to-react.js?");

/***/ }),

/***/ "./node_modules/property-information/lib/html.js":
/*!*******************************************************!*\
  !*** ./node_modules/property-information/lib/html.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"html\": function() { return /* binding */ html; }\n/* harmony export */ });\n/* harmony import */ var _util_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/types.js */ \"./node_modules/property-information/lib/util/types.js\");\n/* harmony import */ var _util_create_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/create.js */ \"./node_modules/property-information/lib/util/create.js\");\n/* harmony import */ var _util_case_insensitive_transform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/case-insensitive-transform.js */ \"./node_modules/property-information/lib/util/case-insensitive-transform.js\");\n\n\n\n\nconst html = (0,_util_create_js__WEBPACK_IMPORTED_MODULE_0__.create)({\n  space: 'html',\n  attributes: {\n    acceptcharset: 'accept-charset',\n    classname: 'class',\n    htmlfor: 'for',\n    httpequiv: 'http-equiv'\n  },\n  transform: _util_case_insensitive_transform_js__WEBPACK_IMPORTED_MODULE_1__.caseInsensitiveTransform,\n  mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n  properties: {\n    // Standard Properties.\n    abbr: null,\n    accept: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaSeparated,\n    acceptCharset: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated,\n    accessKey: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated,\n    action: null,\n    allow: null,\n    allowFullScreen: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    allowPaymentRequest: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    allowUserMedia: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    alt: null,\n    as: null,\n    async: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    autoCapitalize: null,\n    autoComplete: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated,\n    autoFocus: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    autoPlay: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    capture: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    charSet: null,\n    checked: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    cite: null,\n    className: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated,\n    cols: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    colSpan: null,\n    content: null,\n    contentEditable: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.booleanish,\n    controls: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    controlsList: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated,\n    coords: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number | _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaSeparated,\n    crossOrigin: null,\n    data: null,\n    dateTime: null,\n    decoding: null,\n    default: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    defer: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    dir: null,\n    dirName: null,\n    disabled: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    download: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.overloadedBoolean,\n    draggable: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.booleanish,\n    encType: null,\n    enterKeyHint: null,\n    form: null,\n    formAction: null,\n    formEncType: null,\n    formMethod: null,\n    formNoValidate: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    formTarget: null,\n    headers: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated,\n    height: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    hidden: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    high: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    href: null,\n    hrefLang: null,\n    htmlFor: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated,\n    httpEquiv: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated,\n    id: null,\n    imageSizes: null,\n    imageSrcSet: null,\n    inputMode: null,\n    integrity: null,\n    is: null,\n    isMap: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    itemId: null,\n    itemProp: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated,\n    itemRef: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated,\n    itemScope: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    itemType: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated,\n    kind: null,\n    label: null,\n    lang: null,\n    language: null,\n    list: null,\n    loading: null,\n    loop: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    low: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    manifest: null,\n    max: null,\n    maxLength: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    media: null,\n    method: null,\n    min: null,\n    minLength: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    multiple: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    muted: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    name: null,\n    nonce: null,\n    noModule: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    noValidate: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    onAbort: null,\n    onAfterPrint: null,\n    onAuxClick: null,\n    onBeforeMatch: null,\n    onBeforePrint: null,\n    onBeforeUnload: null,\n    onBlur: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onContextLost: null,\n    onContextMenu: null,\n    onContextRestored: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFormData: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLanguageChange: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadEnd: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMessageError: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRejectionHandled: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onScrollEnd: null,\n    onSecurityPolicyViolation: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onSlotChange: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnhandledRejection: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onWheel: null,\n    open: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    optimum: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    pattern: null,\n    ping: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated,\n    placeholder: null,\n    playsInline: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    poster: null,\n    preload: null,\n    readOnly: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    referrerPolicy: null,\n    rel: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated,\n    required: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    reversed: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    rows: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    rowSpan: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    sandbox: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated,\n    scope: null,\n    scoped: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    seamless: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    selected: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    shape: null,\n    size: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    sizes: null,\n    slot: null,\n    span: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    spellCheck: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.booleanish,\n    src: null,\n    srcDoc: null,\n    srcLang: null,\n    srcSet: null,\n    start: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    step: null,\n    style: null,\n    tabIndex: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    target: null,\n    title: null,\n    translate: null,\n    type: null,\n    typeMustMatch: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    useMap: null,\n    value: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.booleanish,\n    width: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    wrap: null,\n\n    // Legacy.\n    // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n    align: null, // Several. Use CSS `text-align` instead,\n    aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n    archive: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, // `<object>`. List of URIs to archives\n    axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n    background: null, // `<body>`. Use CSS `background-image` instead\n    bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n    border: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, // `<table>`. Use CSS `border-width` instead,\n    borderColor: null, // `<table>`. Use CSS `border-color` instead,\n    bottomMargin: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, // `<body>`\n    cellPadding: null, // `<table>`\n    cellSpacing: null, // `<table>`\n    char: null, // Several table elements. When `align=char`, sets the character to align on\n    charOff: null, // Several table elements. When `char`, offsets the alignment\n    classId: null, // `<object>`\n    clear: null, // `<br>`. Use CSS `clear` instead\n    code: null, // `<object>`\n    codeBase: null, // `<object>`\n    codeType: null, // `<object>`\n    color: null, // `<font>` and `<hr>`. Use CSS instead\n    compact: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, // Lists. Use CSS to reduce space between items instead\n    declare: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, // `<object>`\n    event: null, // `<script>`\n    face: null, // `<font>`. Use CSS instead\n    frame: null, // `<table>`\n    frameBorder: null, // `<iframe>`. Use CSS `border` instead\n    hSpace: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, // `<img>` and `<object>`\n    leftMargin: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, // `<body>`\n    link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n    longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n    lowSrc: null, // `<img>`. Use a `<picture>`\n    marginHeight: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, // `<body>`\n    marginWidth: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, // `<body>`\n    noResize: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, // `<frame>`\n    noHref: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, // `<area>`. Use no href instead of an explicit `nohref`\n    noShade: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, // `<hr>`. Use background-color and height instead of borders\n    noWrap: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, // `<td>` and `<th>`\n    object: null, // `<applet>`\n    profile: null, // `<head>`\n    prompt: null, // `<isindex>`\n    rev: null, // `<link>`\n    rightMargin: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, // `<body>`\n    rules: null, // `<table>`\n    scheme: null, // `<meta>`\n    scrolling: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.booleanish, // `<frame>`. Use overflow in the child context\n    standby: null, // `<object>`\n    summary: null, // `<table>`\n    text: null, // `<body>`. Use CSS `color` instead\n    topMargin: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, // `<body>`\n    valueType: null, // `<param>`\n    version: null, // `<html>`. Use a doctype.\n    vAlign: null, // Several. Use CSS `vertical-align` instead\n    vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n    vSpace: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, // `<img>` and `<object>`\n\n    // Non-standard Properties.\n    allowTransparency: null,\n    autoCorrect: null,\n    autoSave: null,\n    disablePictureInPicture: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    disableRemotePlayback: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    prefix: null,\n    property: null,\n    results: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    security: null,\n    unselectable: null\n  }\n})\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/lib/html.js?");

/***/ }),

/***/ "./node_modules/property-information/lib/normalize.js":
/*!************************************************************!*\
  !*** ./node_modules/property-information/lib/normalize.js ***!
  \************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"normalize\": function() { return /* binding */ normalize; }\n/* harmony export */ });\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction normalize(value) {\n  return value.toLowerCase()\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/lib/normalize.js?");

/***/ }),

/***/ "./node_modules/property-information/lib/svg.js":
/*!******************************************************!*\
  !*** ./node_modules/property-information/lib/svg.js ***!
  \******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"svg\": function() { return /* binding */ svg; }\n/* harmony export */ });\n/* harmony import */ var _util_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/types.js */ \"./node_modules/property-information/lib/util/types.js\");\n/* harmony import */ var _util_create_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/create.js */ \"./node_modules/property-information/lib/util/create.js\");\n/* harmony import */ var _util_case_sensitive_transform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/case-sensitive-transform.js */ \"./node_modules/property-information/lib/util/case-sensitive-transform.js\");\n\n\n\n\nconst svg = (0,_util_create_js__WEBPACK_IMPORTED_MODULE_0__.create)({\n  space: 'svg',\n  attributes: {\n    accentHeight: 'accent-height',\n    alignmentBaseline: 'alignment-baseline',\n    arabicForm: 'arabic-form',\n    baselineShift: 'baseline-shift',\n    capHeight: 'cap-height',\n    className: 'class',\n    clipPath: 'clip-path',\n    clipRule: 'clip-rule',\n    colorInterpolation: 'color-interpolation',\n    colorInterpolationFilters: 'color-interpolation-filters',\n    colorProfile: 'color-profile',\n    colorRendering: 'color-rendering',\n    crossOrigin: 'crossorigin',\n    dataType: 'datatype',\n    dominantBaseline: 'dominant-baseline',\n    enableBackground: 'enable-background',\n    fillOpacity: 'fill-opacity',\n    fillRule: 'fill-rule',\n    floodColor: 'flood-color',\n    floodOpacity: 'flood-opacity',\n    fontFamily: 'font-family',\n    fontSize: 'font-size',\n    fontSizeAdjust: 'font-size-adjust',\n    fontStretch: 'font-stretch',\n    fontStyle: 'font-style',\n    fontVariant: 'font-variant',\n    fontWeight: 'font-weight',\n    glyphName: 'glyph-name',\n    glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n    glyphOrientationVertical: 'glyph-orientation-vertical',\n    hrefLang: 'hreflang',\n    horizAdvX: 'horiz-adv-x',\n    horizOriginX: 'horiz-origin-x',\n    horizOriginY: 'horiz-origin-y',\n    imageRendering: 'image-rendering',\n    letterSpacing: 'letter-spacing',\n    lightingColor: 'lighting-color',\n    markerEnd: 'marker-end',\n    markerMid: 'marker-mid',\n    markerStart: 'marker-start',\n    navDown: 'nav-down',\n    navDownLeft: 'nav-down-left',\n    navDownRight: 'nav-down-right',\n    navLeft: 'nav-left',\n    navNext: 'nav-next',\n    navPrev: 'nav-prev',\n    navRight: 'nav-right',\n    navUp: 'nav-up',\n    navUpLeft: 'nav-up-left',\n    navUpRight: 'nav-up-right',\n    onAbort: 'onabort',\n    onActivate: 'onactivate',\n    onAfterPrint: 'onafterprint',\n    onBeforePrint: 'onbeforeprint',\n    onBegin: 'onbegin',\n    onCancel: 'oncancel',\n    onCanPlay: 'oncanplay',\n    onCanPlayThrough: 'oncanplaythrough',\n    onChange: 'onchange',\n    onClick: 'onclick',\n    onClose: 'onclose',\n    onCopy: 'oncopy',\n    onCueChange: 'oncuechange',\n    onCut: 'oncut',\n    onDblClick: 'ondblclick',\n    onDrag: 'ondrag',\n    onDragEnd: 'ondragend',\n    onDragEnter: 'ondragenter',\n    onDragExit: 'ondragexit',\n    onDragLeave: 'ondragleave',\n    onDragOver: 'ondragover',\n    onDragStart: 'ondragstart',\n    onDrop: 'ondrop',\n    onDurationChange: 'ondurationchange',\n    onEmptied: 'onemptied',\n    onEnd: 'onend',\n    onEnded: 'onended',\n    onError: 'onerror',\n    onFocus: 'onfocus',\n    onFocusIn: 'onfocusin',\n    onFocusOut: 'onfocusout',\n    onHashChange: 'onhashchange',\n    onInput: 'oninput',\n    onInvalid: 'oninvalid',\n    onKeyDown: 'onkeydown',\n    onKeyPress: 'onkeypress',\n    onKeyUp: 'onkeyup',\n    onLoad: 'onload',\n    onLoadedData: 'onloadeddata',\n    onLoadedMetadata: 'onloadedmetadata',\n    onLoadStart: 'onloadstart',\n    onMessage: 'onmessage',\n    onMouseDown: 'onmousedown',\n    onMouseEnter: 'onmouseenter',\n    onMouseLeave: 'onmouseleave',\n    onMouseMove: 'onmousemove',\n    onMouseOut: 'onmouseout',\n    onMouseOver: 'onmouseover',\n    onMouseUp: 'onmouseup',\n    onMouseWheel: 'onmousewheel',\n    onOffline: 'onoffline',\n    onOnline: 'ononline',\n    onPageHide: 'onpagehide',\n    onPageShow: 'onpageshow',\n    onPaste: 'onpaste',\n    onPause: 'onpause',\n    onPlay: 'onplay',\n    onPlaying: 'onplaying',\n    onPopState: 'onpopstate',\n    onProgress: 'onprogress',\n    onRateChange: 'onratechange',\n    onRepeat: 'onrepeat',\n    onReset: 'onreset',\n    onResize: 'onresize',\n    onScroll: 'onscroll',\n    onSeeked: 'onseeked',\n    onSeeking: 'onseeking',\n    onSelect: 'onselect',\n    onShow: 'onshow',\n    onStalled: 'onstalled',\n    onStorage: 'onstorage',\n    onSubmit: 'onsubmit',\n    onSuspend: 'onsuspend',\n    onTimeUpdate: 'ontimeupdate',\n    onToggle: 'ontoggle',\n    onUnload: 'onunload',\n    onVolumeChange: 'onvolumechange',\n    onWaiting: 'onwaiting',\n    onZoom: 'onzoom',\n    overlinePosition: 'overline-position',\n    overlineThickness: 'overline-thickness',\n    paintOrder: 'paint-order',\n    panose1: 'panose-1',\n    pointerEvents: 'pointer-events',\n    referrerPolicy: 'referrerpolicy',\n    renderingIntent: 'rendering-intent',\n    shapeRendering: 'shape-rendering',\n    stopColor: 'stop-color',\n    stopOpacity: 'stop-opacity',\n    strikethroughPosition: 'strikethrough-position',\n    strikethroughThickness: 'strikethrough-thickness',\n    strokeDashArray: 'stroke-dasharray',\n    strokeDashOffset: 'stroke-dashoffset',\n    strokeLineCap: 'stroke-linecap',\n    strokeLineJoin: 'stroke-linejoin',\n    strokeMiterLimit: 'stroke-miterlimit',\n    strokeOpacity: 'stroke-opacity',\n    strokeWidth: 'stroke-width',\n    tabIndex: 'tabindex',\n    textAnchor: 'text-anchor',\n    textDecoration: 'text-decoration',\n    textRendering: 'text-rendering',\n    typeOf: 'typeof',\n    underlinePosition: 'underline-position',\n    underlineThickness: 'underline-thickness',\n    unicodeBidi: 'unicode-bidi',\n    unicodeRange: 'unicode-range',\n    unitsPerEm: 'units-per-em',\n    vAlphabetic: 'v-alphabetic',\n    vHanging: 'v-hanging',\n    vIdeographic: 'v-ideographic',\n    vMathematical: 'v-mathematical',\n    vectorEffect: 'vector-effect',\n    vertAdvY: 'vert-adv-y',\n    vertOriginX: 'vert-origin-x',\n    vertOriginY: 'vert-origin-y',\n    wordSpacing: 'word-spacing',\n    writingMode: 'writing-mode',\n    xHeight: 'x-height',\n    // These were camelcased in Tiny. Now lowercased in SVG 2\n    playbackOrder: 'playbackorder',\n    timelineBegin: 'timelinebegin'\n  },\n  transform: _util_case_sensitive_transform_js__WEBPACK_IMPORTED_MODULE_1__.caseSensitiveTransform,\n  properties: {\n    about: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaOrSpaceSeparated,\n    accentHeight: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    accumulate: null,\n    additive: null,\n    alignmentBaseline: null,\n    alphabetic: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    amplitude: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    arabicForm: null,\n    ascent: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    attributeName: null,\n    attributeType: null,\n    azimuth: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    bandwidth: null,\n    baselineShift: null,\n    baseFrequency: null,\n    baseProfile: null,\n    bbox: null,\n    begin: null,\n    bias: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    by: null,\n    calcMode: null,\n    capHeight: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    className: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated,\n    clip: null,\n    clipPath: null,\n    clipPathUnits: null,\n    clipRule: null,\n    color: null,\n    colorInterpolation: null,\n    colorInterpolationFilters: null,\n    colorProfile: null,\n    colorRendering: null,\n    content: null,\n    contentScriptType: null,\n    contentStyleType: null,\n    crossOrigin: null,\n    cursor: null,\n    cx: null,\n    cy: null,\n    d: null,\n    dataType: null,\n    defaultAction: null,\n    descent: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    diffuseConstant: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    direction: null,\n    display: null,\n    dur: null,\n    divisor: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    dominantBaseline: null,\n    download: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean,\n    dx: null,\n    dy: null,\n    edgeMode: null,\n    editable: null,\n    elevation: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    enableBackground: null,\n    end: null,\n    event: null,\n    exponent: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    externalResourcesRequired: null,\n    fill: null,\n    fillOpacity: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    fillRule: null,\n    filter: null,\n    filterRes: null,\n    filterUnits: null,\n    floodColor: null,\n    floodOpacity: null,\n    focusable: null,\n    focusHighlight: null,\n    fontFamily: null,\n    fontSize: null,\n    fontSizeAdjust: null,\n    fontStretch: null,\n    fontStyle: null,\n    fontVariant: null,\n    fontWeight: null,\n    format: null,\n    fr: null,\n    from: null,\n    fx: null,\n    fy: null,\n    g1: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaSeparated,\n    g2: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaSeparated,\n    glyphName: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaSeparated,\n    glyphOrientationHorizontal: null,\n    glyphOrientationVertical: null,\n    glyphRef: null,\n    gradientTransform: null,\n    gradientUnits: null,\n    handler: null,\n    hanging: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    hatchContentUnits: null,\n    hatchUnits: null,\n    height: null,\n    href: null,\n    hrefLang: null,\n    horizAdvX: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    horizOriginX: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    horizOriginY: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    id: null,\n    ideographic: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    imageRendering: null,\n    initialVisibility: null,\n    in: null,\n    in2: null,\n    intercept: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    k: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    k1: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    k2: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    k3: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    k4: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    kernelMatrix: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaOrSpaceSeparated,\n    kernelUnitLength: null,\n    keyPoints: null, // SEMI_COLON_SEPARATED\n    keySplines: null, // SEMI_COLON_SEPARATED\n    keyTimes: null, // SEMI_COLON_SEPARATED\n    kerning: null,\n    lang: null,\n    lengthAdjust: null,\n    letterSpacing: null,\n    lightingColor: null,\n    limitingConeAngle: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    local: null,\n    markerEnd: null,\n    markerMid: null,\n    markerStart: null,\n    markerHeight: null,\n    markerUnits: null,\n    markerWidth: null,\n    mask: null,\n    maskContentUnits: null,\n    maskUnits: null,\n    mathematical: null,\n    max: null,\n    media: null,\n    mediaCharacterEncoding: null,\n    mediaContentEncodings: null,\n    mediaSize: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    mediaTime: null,\n    method: null,\n    min: null,\n    mode: null,\n    name: null,\n    navDown: null,\n    navDownLeft: null,\n    navDownRight: null,\n    navLeft: null,\n    navNext: null,\n    navPrev: null,\n    navRight: null,\n    navUp: null,\n    navUpLeft: null,\n    navUpRight: null,\n    numOctaves: null,\n    observer: null,\n    offset: null,\n    onAbort: null,\n    onActivate: null,\n    onAfterPrint: null,\n    onBeforePrint: null,\n    onBegin: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnd: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFocusIn: null,\n    onFocusOut: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onMouseWheel: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRepeat: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onShow: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onZoom: null,\n    opacity: null,\n    operator: null,\n    order: null,\n    orient: null,\n    orientation: null,\n    origin: null,\n    overflow: null,\n    overlay: null,\n    overlinePosition: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    overlineThickness: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    paintOrder: null,\n    panose1: null,\n    path: null,\n    pathLength: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    patternContentUnits: null,\n    patternTransform: null,\n    patternUnits: null,\n    phase: null,\n    ping: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated,\n    pitch: null,\n    playbackOrder: null,\n    pointerEvents: null,\n    points: null,\n    pointsAtX: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    pointsAtY: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    pointsAtZ: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    preserveAlpha: null,\n    preserveAspectRatio: null,\n    primitiveUnits: null,\n    propagate: null,\n    property: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaOrSpaceSeparated,\n    r: null,\n    radius: null,\n    referrerPolicy: null,\n    refX: null,\n    refY: null,\n    rel: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaOrSpaceSeparated,\n    rev: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaOrSpaceSeparated,\n    renderingIntent: null,\n    repeatCount: null,\n    repeatDur: null,\n    requiredExtensions: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaOrSpaceSeparated,\n    requiredFeatures: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaOrSpaceSeparated,\n    requiredFonts: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaOrSpaceSeparated,\n    requiredFormats: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaOrSpaceSeparated,\n    resource: null,\n    restart: null,\n    result: null,\n    rotate: null,\n    rx: null,\n    ry: null,\n    scale: null,\n    seed: null,\n    shapeRendering: null,\n    side: null,\n    slope: null,\n    snapshotTime: null,\n    specularConstant: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    specularExponent: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    spreadMethod: null,\n    spacing: null,\n    startOffset: null,\n    stdDeviation: null,\n    stemh: null,\n    stemv: null,\n    stitchTiles: null,\n    stopColor: null,\n    stopOpacity: null,\n    strikethroughPosition: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    strikethroughThickness: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    string: null,\n    stroke: null,\n    strokeDashArray: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaOrSpaceSeparated,\n    strokeDashOffset: null,\n    strokeLineCap: null,\n    strokeLineJoin: null,\n    strokeMiterLimit: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    strokeOpacity: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    strokeWidth: null,\n    style: null,\n    surfaceScale: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    syncBehavior: null,\n    syncBehaviorDefault: null,\n    syncMaster: null,\n    syncTolerance: null,\n    syncToleranceDefault: null,\n    systemLanguage: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaOrSpaceSeparated,\n    tabIndex: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    tableValues: null,\n    target: null,\n    targetX: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    targetY: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    textAnchor: null,\n    textDecoration: null,\n    textRendering: null,\n    textLength: null,\n    timelineBegin: null,\n    title: null,\n    transformBehavior: null,\n    type: null,\n    typeOf: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaOrSpaceSeparated,\n    to: null,\n    transform: null,\n    u1: null,\n    u2: null,\n    underlinePosition: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    underlineThickness: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    unicode: null,\n    unicodeBidi: null,\n    unicodeRange: null,\n    unitsPerEm: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    values: null,\n    vAlphabetic: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    vMathematical: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    vectorEffect: null,\n    vHanging: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    vIdeographic: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    version: null,\n    vertAdvY: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    vertOriginX: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    vertOriginY: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    viewBox: null,\n    viewTarget: null,\n    visibility: null,\n    width: null,\n    widths: null,\n    wordSpacing: null,\n    writingMode: null,\n    x: null,\n    x1: null,\n    x2: null,\n    xChannelSelector: null,\n    xHeight: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number,\n    y: null,\n    y1: null,\n    y2: null,\n    yChannelSelector: null,\n    z: null,\n    zoomAndPan: null\n  }\n})\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/lib/svg.js?");

/***/ }),

/***/ "./node_modules/property-information/lib/util/case-insensitive-transform.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/property-information/lib/util/case-insensitive-transform.js ***!
  \**********************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"caseInsensitiveTransform\": function() { return /* binding */ caseInsensitiveTransform; }\n/* harmony export */ });\n/* harmony import */ var _case_sensitive_transform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./case-sensitive-transform.js */ \"./node_modules/property-information/lib/util/case-sensitive-transform.js\");\n\n\n/**\n * @param {Record<string, string>} attributes\n * @param {string} property\n * @returns {string}\n */\nfunction caseInsensitiveTransform(attributes, property) {\n  return (0,_case_sensitive_transform_js__WEBPACK_IMPORTED_MODULE_0__.caseSensitiveTransform)(attributes, property.toLowerCase())\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/lib/util/case-insensitive-transform.js?");

/***/ }),

/***/ "./node_modules/property-information/lib/util/case-sensitive-transform.js":
/*!********************************************************************************!*\
  !*** ./node_modules/property-information/lib/util/case-sensitive-transform.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"caseSensitiveTransform\": function() { return /* binding */ caseSensitiveTransform; }\n/* harmony export */ });\n/**\n * @param {Record<string, string>} attributes\n * @param {string} attribute\n * @returns {string}\n */\nfunction caseSensitiveTransform(attributes, attribute) {\n  return attribute in attributes ? attributes[attribute] : attribute\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/lib/util/case-sensitive-transform.js?");

/***/ }),

/***/ "./node_modules/property-information/lib/util/create.js":
/*!**************************************************************!*\
  !*** ./node_modules/property-information/lib/util/create.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"create\": function() { return /* binding */ create; }\n/* harmony export */ });\n/* harmony import */ var _normalize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../normalize.js */ \"./node_modules/property-information/lib/normalize.js\");\n/* harmony import */ var _schema_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./schema.js */ \"./node_modules/property-information/lib/util/schema.js\");\n/* harmony import */ var _defined_info_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defined-info.js */ \"./node_modules/property-information/lib/util/defined-info.js\");\n/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record<string, string>} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record<string, number|null>} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array<string>} [mustUseProperty]\n */\n\n\n\n\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nfunction create(definition) {\n  /** @type {Properties} */\n  const property = {}\n  /** @type {Normal} */\n  const normal = {}\n  /** @type {string} */\n  let prop\n\n  for (prop in definition.properties) {\n    if (own.call(definition.properties, prop)) {\n      const value = definition.properties[prop]\n      const info = new _defined_info_js__WEBPACK_IMPORTED_MODULE_0__.DefinedInfo(\n        prop,\n        definition.transform(definition.attributes || {}, prop),\n        value,\n        definition.space\n      )\n\n      if (\n        definition.mustUseProperty &&\n        definition.mustUseProperty.includes(prop)\n      ) {\n        info.mustUseProperty = true\n      }\n\n      property[prop] = info\n\n      normal[(0,_normalize_js__WEBPACK_IMPORTED_MODULE_1__.normalize)(prop)] = prop\n      normal[(0,_normalize_js__WEBPACK_IMPORTED_MODULE_1__.normalize)(info.attribute)] = prop\n    }\n  }\n\n  return new _schema_js__WEBPACK_IMPORTED_MODULE_2__.Schema(property, normal, definition.space)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/lib/util/create.js?");

/***/ }),

/***/ "./node_modules/property-information/lib/util/defined-info.js":
/*!********************************************************************!*\
  !*** ./node_modules/property-information/lib/util/defined-info.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DefinedInfo\": function() { return /* binding */ DefinedInfo; }\n/* harmony export */ });\n/* harmony import */ var _info_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./info.js */ \"./node_modules/property-information/lib/util/info.js\");\n/* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types.js */ \"./node_modules/property-information/lib/util/types.js\");\n\n\n\n/** @type {Array<keyof types>} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(_types_js__WEBPACK_IMPORTED_MODULE_0__)\n\nclass DefinedInfo extends _info_js__WEBPACK_IMPORTED_MODULE_1__.Info {\n  /**\n   * @constructor\n   * @param {string} property\n   * @param {string} attribute\n   * @param {number|null} [mask]\n   * @param {string} [space]\n   */\n  constructor(property, attribute, mask, space) {\n    let index = -1\n\n    super(property, attribute)\n\n    mark(this, 'space', space)\n\n    if (typeof mask === 'number') {\n      while (++index < checks.length) {\n        const check = checks[index]\n        mark(this, checks[index], (mask & _types_js__WEBPACK_IMPORTED_MODULE_0__[check]) === _types_js__WEBPACK_IMPORTED_MODULE_0__[check])\n      }\n    }\n  }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n  if (value) {\n    // @ts-expect-error: assume `value` matches the expected value of `key`.\n    values[key] = value\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/lib/util/defined-info.js?");

/***/ }),

/***/ "./node_modules/property-information/lib/util/info.js":
/*!************************************************************!*\
  !*** ./node_modules/property-information/lib/util/info.js ***!
  \************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Info\": function() { return /* binding */ Info; }\n/* harmony export */ });\nclass Info {\n  /**\n   * @constructor\n   * @param {string} property\n   * @param {string} attribute\n   */\n  constructor(property, attribute) {\n    /** @type {string} */\n    this.property = property\n    /** @type {string} */\n    this.attribute = attribute\n  }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/lib/util/info.js?");

/***/ }),

/***/ "./node_modules/property-information/lib/util/merge.js":
/*!*************************************************************!*\
  !*** ./node_modules/property-information/lib/util/merge.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"merge\": function() { return /* binding */ merge; }\n/* harmony export */ });\n/* harmony import */ var _schema_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schema.js */ \"./node_modules/property-information/lib/util/schema.js\");\n/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\n\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nfunction merge(definitions, space) {\n  /** @type {Properties} */\n  const property = {}\n  /** @type {Normal} */\n  const normal = {}\n  let index = -1\n\n  while (++index < definitions.length) {\n    Object.assign(property, definitions[index].property)\n    Object.assign(normal, definitions[index].normal)\n  }\n\n  return new _schema_js__WEBPACK_IMPORTED_MODULE_0__.Schema(property, normal, space)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/lib/util/merge.js?");

/***/ }),

/***/ "./node_modules/property-information/lib/util/schema.js":
/*!**************************************************************!*\
  !*** ./node_modules/property-information/lib/util/schema.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Schema\": function() { return /* binding */ Schema; }\n/* harmony export */ });\n/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record<string, Info>} Properties\n * @typedef {Record<string, string>} Normal\n */\n\nclass Schema {\n  /**\n   * @constructor\n   * @param {Properties} property\n   * @param {Normal} normal\n   * @param {string} [space]\n   */\n  constructor(property, normal, space) {\n    this.property = property\n    this.normal = normal\n    if (space) {\n      this.space = space\n    }\n  }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/lib/util/schema.js?");

/***/ }),

/***/ "./node_modules/property-information/lib/util/types.js":
/*!*************************************************************!*\
  !*** ./node_modules/property-information/lib/util/types.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"boolean\": function() { return /* binding */ boolean; },\n/* harmony export */   \"booleanish\": function() { return /* binding */ booleanish; },\n/* harmony export */   \"commaOrSpaceSeparated\": function() { return /* binding */ commaOrSpaceSeparated; },\n/* harmony export */   \"commaSeparated\": function() { return /* binding */ commaSeparated; },\n/* harmony export */   \"number\": function() { return /* binding */ number; },\n/* harmony export */   \"overloadedBoolean\": function() { return /* binding */ overloadedBoolean; },\n/* harmony export */   \"spaceSeparated\": function() { return /* binding */ spaceSeparated; }\n/* harmony export */ });\nlet powers = 0\n\nconst boolean = increment()\nconst booleanish = increment()\nconst overloadedBoolean = increment()\nconst number = increment()\nconst spaceSeparated = increment()\nconst commaSeparated = increment()\nconst commaOrSpaceSeparated = increment()\n\nfunction increment() {\n  return 2 ** ++powers\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/lib/util/types.js?");

/***/ }),

/***/ "./node_modules/property-information/lib/xlink.js":
/*!********************************************************!*\
  !*** ./node_modules/property-information/lib/xlink.js ***!
  \********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"xlink\": function() { return /* binding */ xlink; }\n/* harmony export */ });\n/* harmony import */ var _util_create_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/create.js */ \"./node_modules/property-information/lib/util/create.js\");\n\n\nconst xlink = (0,_util_create_js__WEBPACK_IMPORTED_MODULE_0__.create)({\n  space: 'xlink',\n  transform(_, prop) {\n    return 'xlink:' + prop.slice(5).toLowerCase()\n  },\n  properties: {\n    xLinkActuate: null,\n    xLinkArcRole: null,\n    xLinkHref: null,\n    xLinkRole: null,\n    xLinkShow: null,\n    xLinkTitle: null,\n    xLinkType: null\n  }\n})\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/lib/xlink.js?");

/***/ }),

/***/ "./node_modules/property-information/lib/xml.js":
/*!******************************************************!*\
  !*** ./node_modules/property-information/lib/xml.js ***!
  \******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"xml\": function() { return /* binding */ xml; }\n/* harmony export */ });\n/* harmony import */ var _util_create_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/create.js */ \"./node_modules/property-information/lib/util/create.js\");\n\n\nconst xml = (0,_util_create_js__WEBPACK_IMPORTED_MODULE_0__.create)({\n  space: 'xml',\n  transform(_, prop) {\n    return 'xml:' + prop.slice(3).toLowerCase()\n  },\n  properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/lib/xml.js?");

/***/ }),

/***/ "./node_modules/property-information/lib/xmlns.js":
/*!********************************************************!*\
  !*** ./node_modules/property-information/lib/xmlns.js ***!
  \********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"xmlns\": function() { return /* binding */ xmlns; }\n/* harmony export */ });\n/* harmony import */ var _util_create_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/create.js */ \"./node_modules/property-information/lib/util/create.js\");\n/* harmony import */ var _util_case_insensitive_transform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/case-insensitive-transform.js */ \"./node_modules/property-information/lib/util/case-insensitive-transform.js\");\n\n\n\nconst xmlns = (0,_util_create_js__WEBPACK_IMPORTED_MODULE_0__.create)({\n  space: 'xmlns',\n  attributes: {xmlnsxlink: 'xmlns:xlink'},\n  transform: _util_case_insensitive_transform_js__WEBPACK_IMPORTED_MODULE_1__.caseInsensitiveTransform,\n  properties: {xmlns: null, xmlnsXLink: null}\n})\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/property-information/lib/xmlns.js?");

/***/ }),

/***/ "./node_modules/react-markdown/lib/ast-to-react.js":
/*!*********************************************************!*\
  !*** ./node_modules/react-markdown/lib/ast-to-react.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"childrenToReact\": function() { return /* binding */ childrenToReact; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-is */ \"./node_modules/react-markdown/node_modules/react-is/index.js\");\n/* harmony import */ var hast_util_whitespace__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! hast-util-whitespace */ \"./node_modules/hast-util-whitespace/index.js\");\n/* harmony import */ var property_information__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! property-information */ \"./node_modules/property-information/index.js\");\n/* harmony import */ var property_information__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! property-information */ \"./node_modules/property-information/lib/find.js\");\n/* harmony import */ var property_information__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! property-information */ \"./node_modules/property-information/lib/hast-to-react.js\");\n/* harmony import */ var space_separated_tokens__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! space-separated-tokens */ \"./node_modules/space-separated-tokens/index.js\");\n/* harmony import */ var comma_separated_tokens__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! comma-separated-tokens */ \"./node_modules/comma-separated-tokens/index.js\");\n/* harmony import */ var style_to_object__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! style-to-object */ \"./node_modules/style-to-object/index.mjs\");\n/* harmony import */ var _uri_transformer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./uri-transformer.js */ \"./node_modules/react-markdown/lib/uri-transformer.js\");\n/**\n * @template T\n * @typedef {import('react').ComponentType<T>} ComponentType<T>\n */\n\n/**\n * @template T\n * @typedef {import('react').ComponentPropsWithoutRef<T>} ComponentPropsWithoutRef<T>\n */\n\n/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('unist').Position} Position\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('property-information').Info} Info\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('./complex-types.js').ReactMarkdownProps} ReactMarkdownProps\n *\n * @typedef Raw\n * @property {'raw'} type\n * @property {string} value\n *\n * @typedef Context\n * @property {Options} options\n * @property {Schema} schema\n * @property {number} listDepth\n *\n * @callback TransformLink\n * @param {string} href\n * @param {Array<ElementContent>} children\n * @param {string?} title\n * @returns {string}\n *\n * @callback TransformImage\n * @param {string} src\n * @param {string} alt\n * @param {string?} title\n * @returns {string}\n *\n * @typedef {import('react').HTMLAttributeAnchorTarget} TransformLinkTargetType\n *\n * @callback TransformLinkTarget\n * @param {string} href\n * @param {Array<ElementContent>} children\n * @param {string?} title\n * @returns {TransformLinkTargetType|undefined}\n *\n * @typedef {keyof JSX.IntrinsicElements} ReactMarkdownNames\n *\n * To do: is `data-sourcepos` typeable?\n *\n * @typedef {ComponentPropsWithoutRef<'code'> & ReactMarkdownProps & {inline?: boolean}} CodeProps\n * @typedef {ComponentPropsWithoutRef<'h1'> & ReactMarkdownProps & {level: number}} HeadingProps\n * @typedef {ComponentPropsWithoutRef<'li'> & ReactMarkdownProps & {checked: boolean|null, index: number, ordered: boolean}} LiProps\n * @typedef {ComponentPropsWithoutRef<'ol'> & ReactMarkdownProps & {depth: number, ordered: true}} OrderedListProps\n * @typedef {ComponentPropsWithoutRef<'td'> & ReactMarkdownProps & {style?: Record<string, unknown>, isHeader: false}} TableDataCellProps\n * @typedef {ComponentPropsWithoutRef<'th'> & ReactMarkdownProps & {style?: Record<string, unknown>, isHeader: true}} TableHeaderCellProps\n * @typedef {ComponentPropsWithoutRef<'tr'> & ReactMarkdownProps & {isHeader: boolean}} TableRowProps\n * @typedef {ComponentPropsWithoutRef<'ul'> & ReactMarkdownProps & {depth: number, ordered: false}} UnorderedListProps\n *\n * @typedef {ComponentType<CodeProps>} CodeComponent\n * @typedef {ComponentType<HeadingProps>} HeadingComponent\n * @typedef {ComponentType<LiProps>} LiComponent\n * @typedef {ComponentType<OrderedListProps>} OrderedListComponent\n * @typedef {ComponentType<TableDataCellProps>} TableDataCellComponent\n * @typedef {ComponentType<TableHeaderCellProps>} TableHeaderCellComponent\n * @typedef {ComponentType<TableRowProps>} TableRowComponent\n * @typedef {ComponentType<UnorderedListProps>} UnorderedListComponent\n *\n * @typedef SpecialComponents\n * @property {CodeComponent|ReactMarkdownNames} code\n * @property {HeadingComponent|ReactMarkdownNames} h1\n * @property {HeadingComponent|ReactMarkdownNames} h2\n * @property {HeadingComponent|ReactMarkdownNames} h3\n * @property {HeadingComponent|ReactMarkdownNames} h4\n * @property {HeadingComponent|ReactMarkdownNames} h5\n * @property {HeadingComponent|ReactMarkdownNames} h6\n * @property {LiComponent|ReactMarkdownNames} li\n * @property {OrderedListComponent|ReactMarkdownNames} ol\n * @property {TableDataCellComponent|ReactMarkdownNames} td\n * @property {TableHeaderCellComponent|ReactMarkdownNames} th\n * @property {TableRowComponent|ReactMarkdownNames} tr\n * @property {UnorderedListComponent|ReactMarkdownNames} ul\n *\n * @typedef {Partial<Omit<import('./complex-types.js').NormalComponents, keyof SpecialComponents> & SpecialComponents>} Components\n *\n * @typedef Options\n * @property {boolean} [sourcePos=false]\n * @property {boolean} [rawSourcePos=false]\n * @property {boolean} [skipHtml=false]\n * @property {boolean} [includeElementIndex=false]\n * @property {null|false|TransformLink} [transformLinkUri]\n * @property {TransformImage} [transformImageUri]\n * @property {TransformLinkTargetType|TransformLinkTarget} [linkTarget]\n * @property {Components} [components]\n */\n\n\n\n\n\n\n\n\n\n\nconst own = {}.hasOwnProperty\n\n// The table-related elements that must not contain whitespace text according\n// to React.\nconst tableElements = new Set(['table', 'thead', 'tbody', 'tfoot', 'tr'])\n\n/**\n * @param {Context} context\n * @param {Element|Root} node\n */\nfunction childrenToReact(context, node) {\n  /** @type {Array<ReactNode>} */\n  const children = []\n  let childIndex = -1\n  /** @type {Comment|Doctype|Element|Raw|Text} */\n  let child\n\n  while (++childIndex < node.children.length) {\n    child = node.children[childIndex]\n\n    if (child.type === 'element') {\n      children.push(toReact(context, child, childIndex, node))\n    } else if (child.type === 'text') {\n      // Currently, a warning is triggered by react for *any* white space in\n      // tables.\n      // So we drop it.\n      // See: <https://github.com/facebook/react/pull/7081>.\n      // See: <https://github.com/facebook/react/pull/7515>.\n      // See: <https://github.com/remarkjs/remark-react/issues/64>.\n      // See: <https://github.com/remarkjs/react-markdown/issues/576>.\n      if (\n        node.type !== 'element' ||\n        !tableElements.has(node.tagName) ||\n        !(0,hast_util_whitespace__WEBPACK_IMPORTED_MODULE_3__.whitespace)(child)\n      ) {\n        children.push(child.value)\n      }\n    } else if (child.type === 'raw' && !context.options.skipHtml) {\n      // Default behavior is to show (encoded) HTML.\n      children.push(child.value)\n    }\n  }\n\n  return children\n}\n\n/**\n * @param {Context} context\n * @param {Element} node\n * @param {number} index\n * @param {Element|Root} parent\n */\nfunction toReact(context, node, index, parent) {\n  const options = context.options\n  const transform =\n    options.transformLinkUri === undefined\n      ? _uri_transformer_js__WEBPACK_IMPORTED_MODULE_4__.uriTransformer\n      : options.transformLinkUri\n  const parentSchema = context.schema\n  /** @type {ReactMarkdownNames} */\n  // @ts-expect-error assume a known HTML/SVG element.\n  const name = node.tagName\n  /** @type {Record<string, unknown>} */\n  const properties = {}\n  let schema = parentSchema\n  /** @type {string} */\n  let property\n\n  if (parentSchema.space === 'html' && name === 'svg') {\n    schema = property_information__WEBPACK_IMPORTED_MODULE_5__.svg\n    context.schema = schema\n  }\n\n  if (node.properties) {\n    for (property in node.properties) {\n      if (own.call(node.properties, property)) {\n        addProperty(properties, property, node.properties[property], context)\n      }\n    }\n  }\n\n  if (name === 'ol' || name === 'ul') {\n    context.listDepth++\n  }\n\n  const children = childrenToReact(context, node)\n\n  if (name === 'ol' || name === 'ul') {\n    context.listDepth--\n  }\n\n  // Restore parent schema.\n  context.schema = parentSchema\n\n  // Nodes created by plugins do not have positional info, in which case we use\n  // an object that matches the position interface.\n  const position = node.position || {\n    start: {line: null, column: null, offset: null},\n    end: {line: null, column: null, offset: null}\n  }\n  const component =\n    options.components && own.call(options.components, name)\n      ? options.components[name]\n      : name\n  const basic = typeof component === 'string' || component === react__WEBPACK_IMPORTED_MODULE_0__.Fragment\n\n  if (!react_is__WEBPACK_IMPORTED_MODULE_1__.isValidElementType(component)) {\n    throw new TypeError(\n      `Component for name \\`${name}\\` not defined or is not renderable`\n    )\n  }\n\n  properties.key = [\n    name,\n    position.start.line,\n    position.start.column,\n    index\n  ].join('-')\n\n  if (name === 'a' && options.linkTarget) {\n    properties.target =\n      typeof options.linkTarget === 'function'\n        ? options.linkTarget(\n            String(properties.href || ''),\n            node.children,\n            typeof properties.title === 'string' ? properties.title : null\n          )\n        : options.linkTarget\n  }\n\n  if (name === 'a' && transform) {\n    properties.href = transform(\n      String(properties.href || ''),\n      node.children,\n      typeof properties.title === 'string' ? properties.title : null\n    )\n  }\n\n  if (\n    !basic &&\n    name === 'code' &&\n    parent.type === 'element' &&\n    parent.tagName !== 'pre'\n  ) {\n    properties.inline = true\n  }\n\n  if (\n    !basic &&\n    (name === 'h1' ||\n      name === 'h2' ||\n      name === 'h3' ||\n      name === 'h4' ||\n      name === 'h5' ||\n      name === 'h6')\n  ) {\n    properties.level = Number.parseInt(name.charAt(1), 10)\n  }\n\n  if (name === 'img' && options.transformImageUri) {\n    properties.src = options.transformImageUri(\n      String(properties.src || ''),\n      String(properties.alt || ''),\n      typeof properties.title === 'string' ? properties.title : null\n    )\n  }\n\n  if (!basic && name === 'li' && parent.type === 'element') {\n    const input = getInputElement(node)\n    properties.checked =\n      input && input.properties ? Boolean(input.properties.checked) : null\n    properties.index = getElementsBeforeCount(parent, node)\n    properties.ordered = parent.tagName === 'ol'\n  }\n\n  if (!basic && (name === 'ol' || name === 'ul')) {\n    properties.ordered = name === 'ol'\n    properties.depth = context.listDepth\n  }\n\n  if (name === 'td' || name === 'th') {\n    if (properties.align) {\n      if (!properties.style) properties.style = {}\n      // @ts-expect-error assume `style` is an object\n      properties.style.textAlign = properties.align\n      delete properties.align\n    }\n\n    if (!basic) {\n      properties.isHeader = name === 'th'\n    }\n  }\n\n  if (!basic && name === 'tr' && parent.type === 'element') {\n    properties.isHeader = Boolean(parent.tagName === 'thead')\n  }\n\n  // If `sourcePos` is given, pass source information (line/column info from markdown source).\n  if (options.sourcePos) {\n    properties['data-sourcepos'] = flattenPosition(position)\n  }\n\n  if (!basic && options.rawSourcePos) {\n    properties.sourcePosition = node.position\n  }\n\n  // If `includeElementIndex` is given, pass node index info to components.\n  if (!basic && options.includeElementIndex) {\n    properties.index = getElementsBeforeCount(parent, node)\n    properties.siblingCount = getElementsBeforeCount(parent)\n  }\n\n  if (!basic) {\n    properties.node = node\n  }\n\n  // Ensure no React warnings are emitted for void elements w/ children.\n  return children.length > 0\n    ? react__WEBPACK_IMPORTED_MODULE_0__.createElement(component, properties, children)\n    : react__WEBPACK_IMPORTED_MODULE_0__.createElement(component, properties)\n}\n\n/**\n * @param {Element|Root} node\n * @returns {Element?}\n */\nfunction getInputElement(node) {\n  let index = -1\n\n  while (++index < node.children.length) {\n    const child = node.children[index]\n\n    if (child.type === 'element' && child.tagName === 'input') {\n      return child\n    }\n  }\n\n  return null\n}\n\n/**\n * @param {Element|Root} parent\n * @param {Element} [node]\n * @returns {number}\n */\nfunction getElementsBeforeCount(parent, node) {\n  let index = -1\n  let count = 0\n\n  while (++index < parent.children.length) {\n    if (parent.children[index] === node) break\n    if (parent.children[index].type === 'element') count++\n  }\n\n  return count\n}\n\n/**\n * @param {Record<string, unknown>} props\n * @param {string} prop\n * @param {unknown} value\n * @param {Context} ctx\n */\nfunction addProperty(props, prop, value, ctx) {\n  const info = (0,property_information__WEBPACK_IMPORTED_MODULE_6__.find)(ctx.schema, prop)\n  let result = value\n\n  // Ignore nullish and `NaN` values.\n  // eslint-disable-next-line no-self-compare\n  if (result === null || result === undefined || result !== result) {\n    return\n  }\n\n  // Accept `array`.\n  // Most props are space-separated.\n  if (Array.isArray(result)) {\n    result = info.commaSeparated ? (0,comma_separated_tokens__WEBPACK_IMPORTED_MODULE_7__.stringify)(result) : (0,space_separated_tokens__WEBPACK_IMPORTED_MODULE_8__.stringify)(result)\n  }\n\n  if (info.property === 'style' && typeof result === 'string') {\n    result = parseStyle(result)\n  }\n\n  if (info.space && info.property) {\n    props[\n      own.call(property_information__WEBPACK_IMPORTED_MODULE_9__.hastToReact, info.property)\n        ? property_information__WEBPACK_IMPORTED_MODULE_9__.hastToReact[info.property]\n        : info.property\n    ] = result\n  } else if (info.attribute) {\n    props[info.attribute] = result\n  }\n}\n\n/**\n * @param {string} value\n * @returns {Record<string, string>}\n */\nfunction parseStyle(value) {\n  /** @type {Record<string, string>} */\n  const result = {}\n\n  try {\n    ;(0,style_to_object__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value, iterator)\n  } catch {\n    // Silent.\n  }\n\n  return result\n\n  /**\n   * @param {string} name\n   * @param {string} v\n   */\n  function iterator(name, v) {\n    const k = name.slice(0, 4) === '-ms-' ? `ms-${name.slice(4)}` : name\n    result[k.replace(/-([a-z])/g, styleReplacer)] = v\n  }\n}\n\n/**\n * @param {unknown} _\n * @param {string} $1\n */\nfunction styleReplacer(_, $1) {\n  return $1.toUpperCase()\n}\n\n/**\n * @param {Position|{start: {line: null, column: null, offset: null}, end: {line: null, column: null, offset: null}}} pos\n * @returns {string}\n */\nfunction flattenPosition(pos) {\n  return [\n    pos.start.line,\n    ':',\n    pos.start.column,\n    '-',\n    pos.end.line,\n    ':',\n    pos.end.column\n  ]\n    .map(String)\n    .join('')\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-markdown/lib/ast-to-react.js?");

/***/ }),

/***/ "./node_modules/react-markdown/lib/react-markdown.js":
/*!***********************************************************!*\
  !*** ./node_modules/react-markdown/lib/react-markdown.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ReactMarkdown\": function() { return /* binding */ ReactMarkdown; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var vfile__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vfile */ \"./node_modules/vfile/lib/index.js\");\n/* harmony import */ var unified__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! unified */ \"./node_modules/unified/lib/index.js\");\n/* harmony import */ var remark_parse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! remark-parse */ \"./node_modules/remark-parse/index.js\");\n/* harmony import */ var remark_rehype__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! remark-rehype */ \"./node_modules/remark-rehype/lib/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var property_information__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! property-information */ \"./node_modules/property-information/index.js\");\n/* harmony import */ var _rehype_filter_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./rehype-filter.js */ \"./node_modules/react-markdown/lib/rehype-filter.js\");\n/* harmony import */ var _ast_to_react_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ast-to-react.js */ \"./node_modules/react-markdown/lib/ast-to-react.js\");\n/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('react').ReactElement<{}>} ReactElement\n * @typedef {import('unified').PluggableList} PluggableList\n * @typedef {import('hast').Root} Root\n * @typedef {import('./rehype-filter.js').Options} FilterOptions\n * @typedef {import('./ast-to-react.js').Options} TransformOptions\n *\n * @typedef CoreOptions\n * @property {string} children\n *\n * @typedef PluginOptions\n * @property {PluggableList} [remarkPlugins=[]]\n * @property {PluggableList} [rehypePlugins=[]]\n * @property {import('remark-rehype').Options | undefined} [remarkRehypeOptions={}]\n *\n * @typedef LayoutOptions\n * @property {string} [className]\n *\n * @typedef {CoreOptions & PluginOptions & LayoutOptions & FilterOptions & TransformOptions} ReactMarkdownOptions\n *\n * @typedef Deprecation\n * @property {string} id\n * @property {string} [to]\n */\n\n\n\n\n\n\n\n\n\n\n\nconst own = {}.hasOwnProperty\nconst changelog =\n  'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {Record<string, Deprecation>} */\nconst deprecated = {\n  plugins: {to: 'remarkPlugins', id: 'change-plugins-to-remarkplugins'},\n  renderers: {to: 'components', id: 'change-renderers-to-components'},\n  astPlugins: {id: 'remove-buggy-html-in-markdown-parser'},\n  allowDangerousHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n  escapeHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n  source: {to: 'children', id: 'change-source-to-children'},\n  allowNode: {\n    to: 'allowElement',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n  },\n  allowedTypes: {\n    to: 'allowedElements',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n  },\n  disallowedTypes: {\n    to: 'disallowedElements',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n  },\n  includeNodeIndex: {\n    to: 'includeElementIndex',\n    id: 'change-includenodeindex-to-includeelementindex'\n  }\n}\n\n/**\n * React component to render markdown.\n *\n * @param {ReactMarkdownOptions} options\n * @returns {ReactElement}\n */\nfunction ReactMarkdown(options) {\n  for (const key in deprecated) {\n    if (own.call(deprecated, key) && own.call(options, key)) {\n      const deprecation = deprecated[key]\n      console.warn(\n        `[react-markdown] Warning: please ${\n          deprecation.to ? `use \\`${deprecation.to}\\` instead of` : 'remove'\n        } \\`${key}\\` (see <${changelog}#${deprecation.id}> for more info)`\n      )\n      delete deprecated[key]\n    }\n  }\n\n  const processor = (0,unified__WEBPACK_IMPORTED_MODULE_1__.unified)()\n    .use(remark_parse__WEBPACK_IMPORTED_MODULE_2__[\"default\"])\n    .use(options.remarkPlugins || [])\n    .use(remark_rehype__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n      ...options.remarkRehypeOptions,\n      allowDangerousHtml: true\n    })\n    .use(options.rehypePlugins || [])\n    .use(_rehype_filter_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"], options)\n\n  const file = new vfile__WEBPACK_IMPORTED_MODULE_5__.VFile()\n\n  if (typeof options.children === 'string') {\n    file.value = options.children\n  } else if (options.children !== undefined && options.children !== null) {\n    console.warn(\n      `[react-markdown] Warning: please pass a string as \\`children\\` (not: \\`${options.children}\\`)`\n    )\n  }\n\n  const hastNode = processor.runSync(processor.parse(file), file)\n\n  if (hastNode.type !== 'root') {\n    throw new TypeError('Expected a `root` node')\n  }\n\n  /** @type {ReactElement} */\n  let result = react__WEBPACK_IMPORTED_MODULE_0__.createElement(\n    react__WEBPACK_IMPORTED_MODULE_0__.Fragment,\n    {},\n    (0,_ast_to_react_js__WEBPACK_IMPORTED_MODULE_6__.childrenToReact)({options, schema: property_information__WEBPACK_IMPORTED_MODULE_7__.html, listDepth: 0}, hastNode)\n  )\n\n  if (options.className) {\n    result = react__WEBPACK_IMPORTED_MODULE_0__.createElement('div', {className: options.className}, result)\n  }\n\n  return result\n}\n\nReactMarkdown.propTypes = {\n  // Core options:\n  children: prop_types__WEBPACK_IMPORTED_MODULE_8__.string,\n  // Layout options:\n  className: prop_types__WEBPACK_IMPORTED_MODULE_8__.string,\n  // Filter options:\n  allowElement: prop_types__WEBPACK_IMPORTED_MODULE_8__.func,\n  allowedElements: prop_types__WEBPACK_IMPORTED_MODULE_8__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_8__.string),\n  disallowedElements: prop_types__WEBPACK_IMPORTED_MODULE_8__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_8__.string),\n  unwrapDisallowed: prop_types__WEBPACK_IMPORTED_MODULE_8__.bool,\n  // Plugin options:\n  remarkPlugins: prop_types__WEBPACK_IMPORTED_MODULE_8__.arrayOf(\n    prop_types__WEBPACK_IMPORTED_MODULE_8__.oneOfType([\n      prop_types__WEBPACK_IMPORTED_MODULE_8__.object,\n      prop_types__WEBPACK_IMPORTED_MODULE_8__.func,\n      prop_types__WEBPACK_IMPORTED_MODULE_8__.arrayOf(\n        prop_types__WEBPACK_IMPORTED_MODULE_8__.oneOfType([\n          prop_types__WEBPACK_IMPORTED_MODULE_8__.bool,\n          prop_types__WEBPACK_IMPORTED_MODULE_8__.string,\n          prop_types__WEBPACK_IMPORTED_MODULE_8__.object,\n          prop_types__WEBPACK_IMPORTED_MODULE_8__.func,\n          prop_types__WEBPACK_IMPORTED_MODULE_8__.arrayOf(\n            // prettier-ignore\n            // type-coverage:ignore-next-line\n            prop_types__WEBPACK_IMPORTED_MODULE_8__.any\n          )\n        ])\n      )\n    ])\n  ),\n  rehypePlugins: prop_types__WEBPACK_IMPORTED_MODULE_8__.arrayOf(\n    prop_types__WEBPACK_IMPORTED_MODULE_8__.oneOfType([\n      prop_types__WEBPACK_IMPORTED_MODULE_8__.object,\n      prop_types__WEBPACK_IMPORTED_MODULE_8__.func,\n      prop_types__WEBPACK_IMPORTED_MODULE_8__.arrayOf(\n        prop_types__WEBPACK_IMPORTED_MODULE_8__.oneOfType([\n          prop_types__WEBPACK_IMPORTED_MODULE_8__.bool,\n          prop_types__WEBPACK_IMPORTED_MODULE_8__.string,\n          prop_types__WEBPACK_IMPORTED_MODULE_8__.object,\n          prop_types__WEBPACK_IMPORTED_MODULE_8__.func,\n          prop_types__WEBPACK_IMPORTED_MODULE_8__.arrayOf(\n            // prettier-ignore\n            // type-coverage:ignore-next-line\n            prop_types__WEBPACK_IMPORTED_MODULE_8__.any\n          )\n        ])\n      )\n    ])\n  ),\n  // Transform options:\n  sourcePos: prop_types__WEBPACK_IMPORTED_MODULE_8__.bool,\n  rawSourcePos: prop_types__WEBPACK_IMPORTED_MODULE_8__.bool,\n  skipHtml: prop_types__WEBPACK_IMPORTED_MODULE_8__.bool,\n  includeElementIndex: prop_types__WEBPACK_IMPORTED_MODULE_8__.bool,\n  transformLinkUri: prop_types__WEBPACK_IMPORTED_MODULE_8__.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_8__.func, prop_types__WEBPACK_IMPORTED_MODULE_8__.bool]),\n  linkTarget: prop_types__WEBPACK_IMPORTED_MODULE_8__.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_8__.func, prop_types__WEBPACK_IMPORTED_MODULE_8__.string]),\n  transformImageUri: prop_types__WEBPACK_IMPORTED_MODULE_8__.func,\n  components: prop_types__WEBPACK_IMPORTED_MODULE_8__.object\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-markdown/lib/react-markdown.js?");

/***/ }),

/***/ "./node_modules/react-markdown/lib/rehype-filter.js":
/*!**********************************************************!*\
  !*** ./node_modules/react-markdown/lib/rehype-filter.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ rehypeFilter; }\n/* harmony export */ });\n/* harmony import */ var unist_util_visit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! unist-util-visit */ \"./node_modules/unist-util-visit/lib/index.js\");\n\n\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n *\n * @callback AllowElement\n * @param {Element} element\n * @param {number} index\n * @param {Element|Root} parent\n * @returns {boolean|undefined}\n *\n * @typedef Options\n * @property {Array<string>} [allowedElements]\n * @property {Array<string>} [disallowedElements=[]]\n * @property {AllowElement} [allowElement]\n * @property {boolean} [unwrapDisallowed=false]\n */\n\n/**\n * @type {import('unified').Plugin<[Options], Root>}\n */\nfunction rehypeFilter(options) {\n  if (options.allowedElements && options.disallowedElements) {\n    throw new TypeError(\n      'Only one of `allowedElements` and `disallowedElements` should be defined'\n    )\n  }\n\n  if (\n    options.allowedElements ||\n    options.disallowedElements ||\n    options.allowElement\n  ) {\n    return (tree) => {\n      (0,unist_util_visit__WEBPACK_IMPORTED_MODULE_0__.visit)(tree, 'element', (node, index, parent_) => {\n        const parent = /** @type {Element|Root} */ (parent_)\n        /** @type {boolean|undefined} */\n        let remove\n\n        if (options.allowedElements) {\n          remove = !options.allowedElements.includes(node.tagName)\n        } else if (options.disallowedElements) {\n          remove = options.disallowedElements.includes(node.tagName)\n        }\n\n        if (!remove && options.allowElement && typeof index === 'number') {\n          remove = !options.allowElement(node, index, parent)\n        }\n\n        if (remove && typeof index === 'number') {\n          if (options.unwrapDisallowed && node.children) {\n            parent.children.splice(index, 1, ...node.children)\n          } else {\n            parent.children.splice(index, 1)\n          }\n\n          return index\n        }\n\n        return undefined\n      })\n    }\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-markdown/lib/rehype-filter.js?");

/***/ }),

/***/ "./node_modules/react-markdown/lib/uri-transformer.js":
/*!************************************************************!*\
  !*** ./node_modules/react-markdown/lib/uri-transformer.js ***!
  \************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"uriTransformer\": function() { return /* binding */ uriTransformer; }\n/* harmony export */ });\nconst protocols = ['http', 'https', 'mailto', 'tel']\n\n/**\n * @param {string} uri\n * @returns {string}\n */\nfunction uriTransformer(uri) {\n  const url = (uri || '').trim()\n  const first = url.charAt(0)\n\n  if (first === '#' || first === '/') {\n    return url\n  }\n\n  const colon = url.indexOf(':')\n  if (colon === -1) {\n    return url\n  }\n\n  let index = -1\n\n  while (++index < protocols.length) {\n    const protocol = protocols[index]\n\n    if (\n      colon === protocol.length &&\n      url.slice(0, protocol.length).toLowerCase() === protocol\n    ) {\n      return url\n    }\n  }\n\n  index = url.indexOf('?')\n  if (index !== -1 && colon > index) {\n    return url\n  }\n\n  index = url.indexOf('#')\n  if (index !== -1 && colon > index) {\n    return url\n  }\n\n  // eslint-disable-next-line no-script-url\n  return 'javascript:void(0)'\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/react-markdown/lib/uri-transformer.js?");

/***/ }),

/***/ "./node_modules/remark-gfm/index.js":
/*!******************************************!*\
  !*** ./node_modules/remark-gfm/index.js ***!
  \******************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ remarkGfm; }\n/* harmony export */ });\n/* harmony import */ var micromark_extension_gfm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-extension-gfm */ \"./node_modules/micromark-extension-gfm/index.js\");\n/* harmony import */ var mdast_util_gfm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mdast-util-gfm */ \"./node_modules/mdast-util-gfm/lib/index.js\");\n/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('micromark-extension-gfm').Options & import('mdast-util-gfm').Options} Options\n */\n\n\n\n\n/**\n * Plugin to support GFM (autolink literals, footnotes, strikethrough, tables, tasklists).\n *\n * @type {import('unified').Plugin<[Options?]|void[], Root>}\n */\nfunction remarkGfm(options = {}) {\n  const data = this.data()\n\n  add('micromarkExtensions', (0,micromark_extension_gfm__WEBPACK_IMPORTED_MODULE_0__.gfm)(options))\n  add('fromMarkdownExtensions', (0,mdast_util_gfm__WEBPACK_IMPORTED_MODULE_1__.gfmFromMarkdown)())\n  add('toMarkdownExtensions', (0,mdast_util_gfm__WEBPACK_IMPORTED_MODULE_1__.gfmToMarkdown)(options))\n\n  /**\n   * @param {string} field\n   * @param {unknown} value\n   */\n  function add(field, value) {\n    const list = /** @type {unknown[]} */ (\n      // Other extensions\n      /* c8 ignore next 2 */\n      data[field] ? data[field] : (data[field] = [])\n    )\n\n    list.push(value)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/remark-gfm/index.js?");

/***/ }),

/***/ "./node_modules/remark-parse/index.js":
/*!********************************************!*\
  !*** ./node_modules/remark-parse/index.js ***!
  \********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _lib_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/index.js */ \"./node_modules/remark-parse/lib/index.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_lib_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/remark-parse/index.js?");

/***/ }),

/***/ "./node_modules/remark-parse/lib/index.js":
/*!************************************************!*\
  !*** ./node_modules/remark-parse/lib/index.js ***!
  \************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ remarkParse; }\n/* harmony export */ });\n/* harmony import */ var mdast_util_from_markdown__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mdast-util-from-markdown */ \"./node_modules/mdast-util-from-markdown/dev/lib/index.js\");\n/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} Options\n */\n\n\n\n/** @type {import('unified').Plugin<[Options?] | void[], string, Root>} */\nfunction remarkParse(options) {\n  /** @type {import('unified').ParserFunction<Root>} */\n  const parser = (doc) => {\n    // Assume options.\n    const settings = /** @type {Options} */ (this.data('settings'))\n\n    return (0,mdast_util_from_markdown__WEBPACK_IMPORTED_MODULE_0__.fromMarkdown)(\n      doc,\n      Object.assign({}, settings, options, {\n        // Note: these options are not in the readme.\n        // The goal is for them to be set by plugins on `data` instead of being\n        // passed by users.\n        extensions: this.data('micromarkExtensions') || [],\n        mdastExtensions: this.data('fromMarkdownExtensions') || []\n      })\n    )\n  }\n\n  Object.assign(this, {Parser: parser})\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/remark-parse/lib/index.js?");

/***/ }),

/***/ "./node_modules/remark-rehype/lib/index.js":
/*!*************************************************!*\
  !*** ./node_modules/remark-rehype/lib/index.js ***!
  \*************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var mdast_util_to_hast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mdast-util-to-hast */ \"./node_modules/mdast-util-to-hast/lib/index.js\");\n/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} Options\n * @typedef {import('unified').Processor<any, any, any, any>} Processor\n *\n * @typedef {import('mdast-util-to-hast')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\n\n\n// Note: the `<MdastRoot, HastRoot>` overload doesn’t seem to work :'(\n\n/**\n * Plugin that turns markdown into HTML to support rehype.\n *\n * *   If a destination processor is given, that processor runs with a new HTML\n *     (hast) tree (bridge-mode).\n *     As the given processor runs with a hast tree, and rehype plugins support\n *     hast, that means rehype plugins can be used with the given processor.\n *     The hast tree is discarded in the end.\n *     It’s highly unlikely that you want to do this.\n * *   The common case is to not pass a destination processor, in which case the\n *     current processor continues running with a new HTML (hast) tree\n *     (mutate-mode).\n *     As the current processor continues with a hast tree, and rehype plugins\n *     support hast, that means rehype plugins can be used after\n *     `remark-rehype`.\n *     It’s likely that this is what you want to do.\n *\n * @param destination\n *   Optional unified processor.\n * @param options\n *   Options passed to `mdast-util-to-hast`.\n */\nconst remarkRehype =\n  /** @type {(import('unified').Plugin<[Processor, Options?]|[null|undefined, Options?]|[Options]|[], MdastRoot>)} */\n  (\n    function (destination, options) {\n      return destination && 'run' in destination\n        ? bridge(destination, options)\n        : mutate(destination || options)\n    }\n  )\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (remarkRehype);\n\n/**\n * Bridge-mode.\n * Runs the destination with the new hast tree.\n *\n * @type {import('unified').Plugin<[Processor, Options?], MdastRoot>}\n */\nfunction bridge(destination, options) {\n  return (node, file, next) => {\n    destination.run((0,mdast_util_to_hast__WEBPACK_IMPORTED_MODULE_0__.toHast)(node, options), file, (error) => {\n      next(error)\n    })\n  }\n}\n\n/**\n * Mutate-mode.\n * Further plugins run on the hast tree.\n *\n * @type {import('unified').Plugin<[Options?]|void[], MdastRoot, HastRoot>}\n */\nfunction mutate(options) {\n  // @ts-expect-error: assume a corresponding node is returned by `toHast`.\n  return (node) => (0,mdast_util_to_hast__WEBPACK_IMPORTED_MODULE_0__.toHast)(node, options)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/remark-rehype/lib/index.js?");

/***/ }),

/***/ "./node_modules/space-separated-tokens/index.js":
/*!******************************************************!*\
  !*** ./node_modules/space-separated-tokens/index.js ***!
  \******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"parse\": function() { return /* binding */ parse; },\n/* harmony export */   \"stringify\": function() { return /* binding */ stringify; }\n/* harmony export */ });\n/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n *   Space-separated tokens.\n * @returns {Array<string>}\n *   List of tokens.\n */\nfunction parse(value) {\n  const input = String(value || '').trim()\n  return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n *   List of tokens.\n * @returns {string}\n *   Space-separated tokens.\n */\nfunction stringify(values) {\n  return values.join(' ').trim()\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/space-separated-tokens/index.js?");

/***/ }),

/***/ "./node_modules/style-to-object/index.mjs":
/*!************************************************!*\
  !*** ./node_modules/style-to-object/index.mjs ***!
  \************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"./node_modules/style-to-object/index.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_index_js__WEBPACK_IMPORTED_MODULE_0__);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/style-to-object/index.mjs?");

/***/ }),

/***/ "./node_modules/stylis/src/Enum.js":
/*!*****************************************!*\
  !*** ./node_modules/stylis/src/Enum.js ***!
  \*****************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CHARSET\": function() { return /* binding */ CHARSET; },\n/* harmony export */   \"COMMENT\": function() { return /* binding */ COMMENT; },\n/* harmony export */   \"COUNTER_STYLE\": function() { return /* binding */ COUNTER_STYLE; },\n/* harmony export */   \"DECLARATION\": function() { return /* binding */ DECLARATION; },\n/* harmony export */   \"DOCUMENT\": function() { return /* binding */ DOCUMENT; },\n/* harmony export */   \"FONT_FACE\": function() { return /* binding */ FONT_FACE; },\n/* harmony export */   \"FONT_FEATURE_VALUES\": function() { return /* binding */ FONT_FEATURE_VALUES; },\n/* harmony export */   \"IMPORT\": function() { return /* binding */ IMPORT; },\n/* harmony export */   \"KEYFRAMES\": function() { return /* binding */ KEYFRAMES; },\n/* harmony export */   \"MEDIA\": function() { return /* binding */ MEDIA; },\n/* harmony export */   \"MOZ\": function() { return /* binding */ MOZ; },\n/* harmony export */   \"MS\": function() { return /* binding */ MS; },\n/* harmony export */   \"NAMESPACE\": function() { return /* binding */ NAMESPACE; },\n/* harmony export */   \"PAGE\": function() { return /* binding */ PAGE; },\n/* harmony export */   \"RULESET\": function() { return /* binding */ RULESET; },\n/* harmony export */   \"SUPPORTS\": function() { return /* binding */ SUPPORTS; },\n/* harmony export */   \"VIEWPORT\": function() { return /* binding */ VIEWPORT; },\n/* harmony export */   \"WEBKIT\": function() { return /* binding */ WEBKIT; }\n/* harmony export */ });\nvar MS = '-ms-'\nvar MOZ = '-moz-'\nvar WEBKIT = '-webkit-'\n\nvar COMMENT = 'comm'\nvar RULESET = 'rule'\nvar DECLARATION = 'decl'\n\nvar PAGE = '@page'\nvar MEDIA = '@media'\nvar IMPORT = '@import'\nvar CHARSET = '@charset'\nvar VIEWPORT = '@viewport'\nvar SUPPORTS = '@supports'\nvar DOCUMENT = '@document'\nvar NAMESPACE = '@namespace'\nvar KEYFRAMES = '@keyframes'\nvar FONT_FACE = '@font-face'\nvar COUNTER_STYLE = '@counter-style'\nvar FONT_FEATURE_VALUES = '@font-feature-values'\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/stylis/src/Enum.js?");

/***/ }),

/***/ "./node_modules/stylis/src/Middleware.js":
/*!***********************************************!*\
  !*** ./node_modules/stylis/src/Middleware.js ***!
  \***********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"middleware\": function() { return /* binding */ middleware; },\n/* harmony export */   \"namespace\": function() { return /* binding */ namespace; },\n/* harmony export */   \"prefixer\": function() { return /* binding */ prefixer; },\n/* harmony export */   \"rulesheet\": function() { return /* binding */ rulesheet; }\n/* harmony export */ });\n/* harmony import */ var _Enum_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Enum.js */ \"./node_modules/stylis/src/Enum.js\");\n/* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utility.js */ \"./node_modules/stylis/src/Utility.js\");\n/* harmony import */ var _Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Tokenizer.js */ \"./node_modules/stylis/src/Tokenizer.js\");\n/* harmony import */ var _Serializer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Serializer.js */ \"./node_modules/stylis/src/Serializer.js\");\n/* harmony import */ var _Prefixer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Prefixer.js */ \"./node_modules/stylis/src/Prefixer.js\");\n\n\n\n\n\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nfunction middleware (collection) {\n\tvar length = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.sizeof)(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nfunction rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nfunction prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_1__.DECLARATION: element.return = (0,_Prefixer_js__WEBPACK_IMPORTED_MODULE_2__.prefix)(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_1__.KEYFRAMES:\n\t\t\t\t\treturn (0,_Serializer_js__WEBPACK_IMPORTED_MODULE_3__.serialize)([(0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {value: (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(element.value, '@', '@' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT)})], callback)\n\t\t\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_1__.RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.combine)(element.props, function (value) {\n\t\t\t\t\t\t\tswitch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn (0,_Serializer_js__WEBPACK_IMPORTED_MODULE_3__.serialize)([(0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {props: [(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /:(read-\\w+)/, ':' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn (0,_Serializer_js__WEBPACK_IMPORTED_MODULE_3__.serialize)([\n\t\t\t\t\t\t\t\t\t\t(0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {props: [(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /:(plac\\w+)/, ':' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\t(0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {props: [(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /:(plac\\w+)/, ':' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\t(0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {props: [(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /:(plac\\w+)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nfunction namespace (element) {\n\tswitch (element.type) {\n\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_1__.RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.combine)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.tokenize)(value), function (value, index, children) {\n\t\t\t\t\tswitch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.substr)(value, 1, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.strlen)(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.substr)(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.sizeof)(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.sizeof)(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/stylis/src/Middleware.js?");

/***/ }),

/***/ "./node_modules/stylis/src/Parser.js":
/*!*******************************************!*\
  !*** ./node_modules/stylis/src/Parser.js ***!
  \*******************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"comment\": function() { return /* binding */ comment; },\n/* harmony export */   \"compile\": function() { return /* binding */ compile; },\n/* harmony export */   \"declaration\": function() { return /* binding */ declaration; },\n/* harmony export */   \"parse\": function() { return /* binding */ parse; },\n/* harmony export */   \"ruleset\": function() { return /* binding */ ruleset; }\n/* harmony export */ });\n/* harmony import */ var _Enum_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Enum.js */ \"./node_modules/stylis/src/Enum.js\");\n/* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Utility.js */ \"./node_modules/stylis/src/Utility.js\");\n/* harmony import */ var _Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Tokenizer.js */ \"./node_modules/stylis/src/Tokenizer.js\");\n\n\n\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nfunction compile (value) {\n\treturn (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.dealloc)(parse('', null, null, null, [''], value = (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.alloc)(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nfunction parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.next)()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.charat)(characters, length - 1) == 58) {\n\t\t\t\t\tif ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.indexof)(characters += (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.delimit)(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.delimit)(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.whitespace)(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.escaping)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.caret)() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch ((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.peek)()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\t;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(comment((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.commenter)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.next)(), (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.caret)()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset:\n\t\t\t\t\t\tif (property > 0 && ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) - length))\n\t\t\t\t\t\t\t(0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.charat)(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d m s\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.prev)() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.from)(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif ((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.peek)() === 45)\n\t\t\t\t\t\t\tcharacters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.delimit)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.next)())\n\n\t\t\t\t\t\tatrule = (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.peek)(), offset = length = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(type = characters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.identifier)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.caret)())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nfunction ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.sizeof)(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, post + 1, post = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.abs)(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.trim)(j > 0 ? rule[x] + ' ' + y : (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.node)(value, root, parent, offset === 0 ? _Enum_js__WEBPACK_IMPORTED_MODULE_2__.RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nfunction comment (value, root, parent) {\n\treturn (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.node)(value, root, parent, _Enum_js__WEBPACK_IMPORTED_MODULE_2__.COMMENT, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.from)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.char)()), (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nfunction declaration (value, root, parent, length) {\n\treturn (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.node)(value, root, parent, _Enum_js__WEBPACK_IMPORTED_MODULE_2__.DECLARATION, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, 0, length), (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, length + 1, -1), length)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/stylis/src/Parser.js?");

/***/ }),

/***/ "./node_modules/stylis/src/Prefixer.js":
/*!*********************************************!*\
  !*** ./node_modules/stylis/src/Prefixer.js ***!
  \*********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"prefix\": function() { return /* binding */ prefix; }\n/* harmony export */ });\n/* harmony import */ var _Enum_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Enum.js */ \"./node_modules/stylis/src/Enum.js\");\n/* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utility.js */ \"./node_modules/stylis/src/Utility.js\");\n\n\n\n/**\n * @param {string} value\n * @param {number} length\n * @param {object[]} children\n * @return {string}\n */\nfunction prefix (value, length, children) {\n\tswitch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.hash)(value, length)) {\n\t\t// color-adjust\n\t\tcase 5103:\n\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + 'print-' + value + value\n\t\t// animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\t\tcase 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921:\n\t\t// text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\t\tcase 5572: case 6356: case 5844: case 3191: case 6645: case 3005:\n\t\t// mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\t\tcase 6391: case 5879: case 5623: case 6135: case 4599: case 4855:\n\t\t// background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\t\tcase 4215: case 6389: case 5109: case 5365: case 5621: case 3829:\n\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + value\n\t\t// tab-size\n\t\tcase 4789:\n\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MOZ + value + value\n\t\t// appearance, user-select, transform, hyphens, text-size-adjust\n\t\tcase 5349: case 4246: case 4810: case 6968: case 2756:\n\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MOZ + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + value + value\n\t\t// writing-mode\n\t\tcase 5936:\n\t\t\tswitch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, length + 11)) {\n\t\t\t\t// vertical-l(r)\n\t\t\t\tcase 114:\n\t\t\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value\n\t\t\t\t// vertical-r(l)\n\t\t\t\tcase 108:\n\t\t\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value\n\t\t\t\t// horizontal(-)tb\n\t\t\t\tcase 45:\n\t\t\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value\n\t\t\t\t// default: fallthrough to below\n\t\t\t}\n\t\t// flex, flex-direction, scroll-snap-type, writing-mode\n\t\tcase 6828: case 4268: case 2903:\n\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + value + value\n\t\t// order\n\t\tcase 6165:\n\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'flex-' + value + value\n\t\t// align-items\n\t\tcase 5187:\n\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(\\w+).+(:[^]+)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + 'box-$1$2' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'flex-$1$2') + value\n\t\t// align-self\n\t\tcase 5443:\n\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'flex-item-' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /flex-|-self/g, '') + (!(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(value, /flex-|baseline/) ? _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'grid-row-' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /flex-|-self/g, '') : '') + value\n\t\t// align-content\n\t\tcase 4675:\n\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'flex-line-pack' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /align-content|flex-|-self/g, '') + value\n\t\t// flex-shrink\n\t\tcase 5548:\n\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'shrink', 'negative') + value\n\t\t// flex-basis\n\t\tcase 5292:\n\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'basis', 'preferred-size') + value\n\t\t// flex-grow\n\t\tcase 6060:\n\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + 'box-' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, '-grow', '') + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'grow', 'positive') + value\n\t\t// transition\n\t\tcase 4554:\n\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /([^-])(transform)/g, '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$2') + value\n\t\t// cursor\n\t\tcase 6187:\n\t\t\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(zoom-|grab)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$1'), /(image-set)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$1'), value, '') + value\n\t\t// background, background-image\n\t\tcase 5495: case 3959:\n\t\t\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(image-set\\([^]*)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$1' + '$`$1')\n\t\t// justify-content\n\t\tcase 4968:\n\t\t\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(.+:)(flex-)?(.*)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + 'box-pack:$3' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + value\n\t\t// justify-self\n\t\tcase 4200:\n\t\t\tif (!(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(value, /flex-|baseline/)) return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'grid-column-align' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.substr)(value, length) + value\n\t\t\tbreak\n\t\t// grid-template-(columns|rows)\n\t\tcase 2592: case 3360:\n\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'template-', '') + value\n\t\t// grid-(row|column)-start\n\t\tcase 4384: case 3616:\n\t\t\tif (children && children.some(function (element, index) { return length = index, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(element.props, /grid-\\w+-end/) })) {\n\t\t\t\treturn ~(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.indexof)(value + (children = children[length].value), 'span') ? value : (_Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, '-start', '') + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'grid-row-span:' + (~(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.indexof)(children, 'span') ? (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(children, /\\d+/) : +(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(children, /\\d+/) - +(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(value, /\\d+/)) + ';')\n\t\t\t}\n\t\t\treturn _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, '-start', '') + value\n\t\t// grid-(row|column)-end\n\t\tcase 4896: case 4128:\n\t\t\treturn (children && children.some(function (element) { return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(element.props, /grid-\\w+-start/) })) ? value : _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, '-end', '-span'), 'span ', '') + value\n\t\t// (margin|padding)-inline-(start|end)\n\t\tcase 4095: case 3583: case 4068: case 2532:\n\t\t\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(.+)-inline(.+)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$1$2') + value\n\t\t// (min|max)?(width|height|inline-size|block-size)\n\t\tcase 8116: case 7059: case 5753: case 5535:\n\t\tcase 5445: case 5701: case 4933: case 4677:\n\t\tcase 5533: case 5789: case 5021: case 4765:\n\t\t\t// stretch, max-content, min-content, fill-available\n\t\t\tif ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.strlen)(value) - 1 - length > 6)\n\t\t\t\tswitch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, length + 1)) {\n\t\t\t\t\t// (m)ax-content, (m)in-content\n\t\t\t\t\tcase 109:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, length + 4) !== 45)\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t// (f)ill-available, (f)it-content\n\t\t\t\t\tcase 102:\n\t\t\t\t\t\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(.+:)(.+)-([^]+)/, '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$2-$3' + '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MOZ + ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, length + 3) == 108 ? '$3' : '$2-$3')) + value\n\t\t\t\t\t// (s)tretch\n\t\t\t\t\tcase 115:\n\t\t\t\t\t\treturn ~(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.indexof)(value, 'stretch') ? prefix((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'stretch', 'fill-available'), length, children) + value : value\n\t\t\t\t}\n\t\t\tbreak\n\t\t// grid-(column|row)\n\t\tcase 5152: case 5920:\n\t\t\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(.+?):(\\d+)(\\s*\\/\\s*(span)?\\s*(\\d+))?(.*)/, function (_, a, b, c, d, e, f) { return (_Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + a + ':' + b + f) + (c ? (_Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + a + '-span:' + (d ? e : +e - +b)) + f : '') + value })\n\t\t// position: sticky\n\t\tcase 4949:\n\t\t\t// stick(y)?\n\t\t\tif ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, length + 6) === 121)\n\t\t\t\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, ':', ':' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT) + value\n\t\t\tbreak\n\t\t// display: (flex|inline-flex|grid|inline-grid)\n\t\tcase 6444:\n\t\t\tswitch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, 14) === 45 ? 18 : 11)) {\n\t\t\t\t// (inline-)?fle(x)\n\t\t\t\tcase 120:\n\t\t\t\t\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(.+:)([^;\\s!]+)(;|(\\s+)?!.+)?/, '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$2$3' + '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + '$2box$3') + value\n\t\t\t\t// (inline-)?gri(d)\n\t\t\t\tcase 100:\n\t\t\t\t\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, ':', ':' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS) + value\n\t\t\t}\n\t\t\tbreak\n\t\t// scroll-margin, scroll-margin-(top|right|bottom|left)\n\t\tcase 5719: case 2647: case 2135: case 3927: case 2391:\n\t\t\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'scroll-', 'scroll-snap-') + value\n\t}\n\n\treturn value\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/stylis/src/Prefixer.js?");

/***/ }),

/***/ "./node_modules/stylis/src/Serializer.js":
/*!***********************************************!*\
  !*** ./node_modules/stylis/src/Serializer.js ***!
  \***********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"serialize\": function() { return /* binding */ serialize; },\n/* harmony export */   \"stringify\": function() { return /* binding */ stringify; }\n/* harmony export */ });\n/* harmony import */ var _Enum_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Enum.js */ \"./node_modules/stylis/src/Enum.js\");\n/* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utility.js */ \"./node_modules/stylis/src/Utility.js\");\n\n\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nfunction serialize (children, callback) {\n\tvar output = ''\n\tvar length = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.sizeof)(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nfunction stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_1__.IMPORT: case _Enum_js__WEBPACK_IMPORTED_MODULE_1__.DECLARATION: return element.return = element.return || element.value\n\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_1__.COMMENT: return ''\n\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_1__.KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_1__.RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.strlen)(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/stylis/src/Serializer.js?");

/***/ }),

/***/ "./node_modules/stylis/src/Tokenizer.js":
/*!**********************************************!*\
  !*** ./node_modules/stylis/src/Tokenizer.js ***!
  \**********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"alloc\": function() { return /* binding */ alloc; },\n/* harmony export */   \"caret\": function() { return /* binding */ caret; },\n/* harmony export */   \"char\": function() { return /* binding */ char; },\n/* harmony export */   \"character\": function() { return /* binding */ character; },\n/* harmony export */   \"characters\": function() { return /* binding */ characters; },\n/* harmony export */   \"column\": function() { return /* binding */ column; },\n/* harmony export */   \"commenter\": function() { return /* binding */ commenter; },\n/* harmony export */   \"copy\": function() { return /* binding */ copy; },\n/* harmony export */   \"dealloc\": function() { return /* binding */ dealloc; },\n/* harmony export */   \"delimit\": function() { return /* binding */ delimit; },\n/* harmony export */   \"delimiter\": function() { return /* binding */ delimiter; },\n/* harmony export */   \"escaping\": function() { return /* binding */ escaping; },\n/* harmony export */   \"identifier\": function() { return /* binding */ identifier; },\n/* harmony export */   \"length\": function() { return /* binding */ length; },\n/* harmony export */   \"line\": function() { return /* binding */ line; },\n/* harmony export */   \"next\": function() { return /* binding */ next; },\n/* harmony export */   \"node\": function() { return /* binding */ node; },\n/* harmony export */   \"peek\": function() { return /* binding */ peek; },\n/* harmony export */   \"position\": function() { return /* binding */ position; },\n/* harmony export */   \"prev\": function() { return /* binding */ prev; },\n/* harmony export */   \"slice\": function() { return /* binding */ slice; },\n/* harmony export */   \"token\": function() { return /* binding */ token; },\n/* harmony export */   \"tokenize\": function() { return /* binding */ tokenize; },\n/* harmony export */   \"tokenizer\": function() { return /* binding */ tokenizer; },\n/* harmony export */   \"whitespace\": function() { return /* binding */ whitespace; }\n/* harmony export */ });\n/* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utility.js */ \"./node_modules/stylis/src/Utility.js\");\n\n\nvar line = 1\nvar column = 1\nvar length = 0\nvar position = 0\nvar character = 0\nvar characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nfunction node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nfunction copy (root, props) {\n\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.assign)(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nfunction char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nfunction prev () {\n\tcharacter = position > 0 ? (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nfunction next () {\n\tcharacter = position < length ? (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nfunction peek () {\n\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(characters, position)\n}\n\n/**\n * @return {number}\n */\nfunction caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nfunction slice (begin, end) {\n\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.substr)(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nfunction token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nfunction alloc (value) {\n\treturn line = column = 1, length = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.strlen)(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nfunction dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nfunction delimit (type) {\n\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.trim)(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nfunction tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nfunction whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nfunction tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.from)(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nfunction escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nfunction delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nfunction commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.from)(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nfunction identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/stylis/src/Tokenizer.js?");

/***/ }),

/***/ "./node_modules/stylis/src/Utility.js":
/*!********************************************!*\
  !*** ./node_modules/stylis/src/Utility.js ***!
  \********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"abs\": function() { return /* binding */ abs; },\n/* harmony export */   \"append\": function() { return /* binding */ append; },\n/* harmony export */   \"assign\": function() { return /* binding */ assign; },\n/* harmony export */   \"charat\": function() { return /* binding */ charat; },\n/* harmony export */   \"combine\": function() { return /* binding */ combine; },\n/* harmony export */   \"from\": function() { return /* binding */ from; },\n/* harmony export */   \"hash\": function() { return /* binding */ hash; },\n/* harmony export */   \"indexof\": function() { return /* binding */ indexof; },\n/* harmony export */   \"match\": function() { return /* binding */ match; },\n/* harmony export */   \"replace\": function() { return /* binding */ replace; },\n/* harmony export */   \"sizeof\": function() { return /* binding */ sizeof; },\n/* harmony export */   \"strlen\": function() { return /* binding */ strlen; },\n/* harmony export */   \"substr\": function() { return /* binding */ substr; },\n/* harmony export */   \"trim\": function() { return /* binding */ trim; }\n/* harmony export */ });\n/**\n * @param {number}\n * @return {number}\n */\nvar abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nvar from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nvar assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nfunction hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nfunction trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nfunction match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nfunction replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nfunction indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nfunction charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nfunction substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nfunction strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nfunction sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nfunction append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nfunction combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/stylis/src/Utility.js?");

/***/ }),

/***/ "./node_modules/trim-lines/index.js":
/*!******************************************!*\
  !*** ./node_modules/trim-lines/index.js ***!
  \******************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"trimLines\": function() { return /* binding */ trimLines; }\n/* harmony export */ });\nconst tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Trimmed value.\n */\nfunction trimLines(value) {\n  const source = String(value)\n  const search = /\\r?\\n|\\r/g\n  let match = search.exec(source)\n  let last = 0\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (match) {\n    lines.push(\n      trimLine(source.slice(last, match.index), last > 0, true),\n      match[0]\n    )\n\n    last = match.index + match[0].length\n    match = search.exec(source)\n  }\n\n  lines.push(trimLine(source.slice(last), last > 0, false))\n\n  return lines.join('')\n}\n\n/**\n * @param {string} value\n *   Line to trim.\n * @param {boolean} start\n *   Whether to trim the start of the line.\n * @param {boolean} end\n *   Whether to trim the end of the line.\n * @returns {string}\n *   Trimmed line.\n */\nfunction trimLine(value, start, end) {\n  let startIndex = 0\n  let endIndex = value.length\n\n  if (start) {\n    let code = value.codePointAt(startIndex)\n\n    while (code === tab || code === space) {\n      startIndex++\n      code = value.codePointAt(startIndex)\n    }\n  }\n\n  if (end) {\n    let code = value.codePointAt(endIndex - 1)\n\n    while (code === tab || code === space) {\n      endIndex--\n      code = value.codePointAt(endIndex - 1)\n    }\n  }\n\n  return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/trim-lines/index.js?");

/***/ }),

/***/ "./node_modules/trough/index.js":
/*!**************************************!*\
  !*** ./node_modules/trough/index.js ***!
  \**************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"trough\": function() { return /* binding */ trough; },\n/* harmony export */   \"wrap\": function() { return /* binding */ wrap; }\n/* harmony export */ });\n/**\n * @typedef {(error?: Error|null|undefined, ...output: Array<any>) => void} Callback\n * @typedef {(...input: Array<any>) => any} Middleware\n *\n * @typedef {(...input: Array<any>) => void} Run\n *   Call all middleware.\n * @typedef {(fn: Middleware) => Pipeline} Use\n *   Add `fn` (middleware) to the list.\n * @typedef {{run: Run, use: Use}} Pipeline\n *   Middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n */\nfunction trough() {\n  /** @type {Array<Middleware>} */\n  const fns = []\n  /** @type {Pipeline} */\n  const pipeline = {run, use}\n\n  return pipeline\n\n  /** @type {Run} */\n  function run(...values) {\n    let middlewareIndex = -1\n    /** @type {Callback} */\n    const callback = values.pop()\n\n    if (typeof callback !== 'function') {\n      throw new TypeError('Expected function as last argument, not ' + callback)\n    }\n\n    next(null, ...values)\n\n    /**\n     * Run the next `fn`, or we’re done.\n     *\n     * @param {Error|null|undefined} error\n     * @param {Array<any>} output\n     */\n    function next(error, ...output) {\n      const fn = fns[++middlewareIndex]\n      let index = -1\n\n      if (error) {\n        callback(error)\n        return\n      }\n\n      // Copy non-nullish input into values.\n      while (++index < values.length) {\n        if (output[index] === null || output[index] === undefined) {\n          output[index] = values[index]\n        }\n      }\n\n      // Save the newly created `output` for the next call.\n      values = output\n\n      // Next or done.\n      if (fn) {\n        wrap(fn, next)(...output)\n      } else {\n        callback(null, ...output)\n      }\n    }\n  }\n\n  /** @type {Use} */\n  function use(middelware) {\n    if (typeof middelware !== 'function') {\n      throw new TypeError(\n        'Expected `middelware` to be a function, not ' + middelware\n      )\n    }\n\n    fns.push(middelware)\n    return pipeline\n  }\n}\n\n/**\n * Wrap `middleware`.\n * Can be sync or async; return a promise, receive a callback, or return new\n * values and errors.\n *\n * @param {Middleware} middleware\n * @param {Callback} callback\n */\nfunction wrap(middleware, callback) {\n  /** @type {boolean} */\n  let called\n\n  return wrapped\n\n  /**\n   * Call `middleware`.\n   * @this {any}\n   * @param {Array<any>} parameters\n   * @returns {void}\n   */\n  function wrapped(...parameters) {\n    const fnExpectsCallback = middleware.length > parameters.length\n    /** @type {any} */\n    let result\n\n    if (fnExpectsCallback) {\n      parameters.push(done)\n    }\n\n    try {\n      result = middleware.apply(this, parameters)\n    } catch (error) {\n      const exception = /** @type {Error} */ (error)\n\n      // Well, this is quite the pickle.\n      // `middleware` received a callback and called it synchronously, but that\n      // threw an error.\n      // The only thing left to do is to throw the thing instead.\n      if (fnExpectsCallback && called) {\n        throw exception\n      }\n\n      return done(exception)\n    }\n\n    if (!fnExpectsCallback) {\n      if (result instanceof Promise) {\n        result.then(then, done)\n      } else if (result instanceof Error) {\n        done(result)\n      } else {\n        then(result)\n      }\n    }\n  }\n\n  /**\n   * Call `callback`, only once.\n   * @type {Callback}\n   */\n  function done(error, ...output) {\n    if (!called) {\n      called = true\n      callback(error, ...output)\n    }\n  }\n\n  /**\n   * Call `done` with one value.\n   *\n   * @param {any} [value]\n   */\n  function then(value) {\n    done(null, value)\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/trough/index.js?");

/***/ }),

/***/ "./node_modules/unified/lib/index.js":
/*!*******************************************!*\
  !*** ./node_modules/unified/lib/index.js ***!
  \*******************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"unified\": function() { return /* binding */ unified; }\n/* harmony export */ });\n/* harmony import */ var bail__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! bail */ \"./node_modules/bail/index.js\");\n/* harmony import */ var is_buffer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-buffer */ \"./node_modules/is-buffer/index.js\");\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! extend */ \"./node_modules/extend/index.js\");\n/* harmony import */ var is_plain_obj__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! is-plain-obj */ \"./node_modules/unified/node_modules/is-plain-obj/index.js\");\n/* harmony import */ var trough__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! trough */ \"./node_modules/trough/index.js\");\n/* harmony import */ var vfile__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vfile */ \"./node_modules/vfile/lib/index.js\");\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('vfile').VFileCompatible} VFileCompatible\n * @typedef {import('vfile').VFileValue} VFileValue\n * @typedef {import('..').Processor} Processor\n * @typedef {import('..').Plugin} Plugin\n * @typedef {import('..').Preset} Preset\n * @typedef {import('..').Pluggable} Pluggable\n * @typedef {import('..').PluggableList} PluggableList\n * @typedef {import('..').Transformer} Transformer\n * @typedef {import('..').Parser} Parser\n * @typedef {import('..').Compiler} Compiler\n * @typedef {import('..').RunCallback} RunCallback\n * @typedef {import('..').ProcessCallback} ProcessCallback\n *\n * @typedef Context\n * @property {Node} tree\n * @property {VFile} file\n */\n\n\n\n\n\n\n\n\n// Expose a frozen processor.\nconst unified = base().freeze()\n\nconst own = {}.hasOwnProperty\n\n// Function to create the first processor.\n/**\n * @returns {Processor}\n */\nfunction base() {\n  const transformers = (0,trough__WEBPACK_IMPORTED_MODULE_3__.trough)()\n  /** @type {Processor['attachers']} */\n  const attachers = []\n  /** @type {Record<string, unknown>} */\n  let namespace = {}\n  /** @type {boolean|undefined} */\n  let frozen\n  let freezeIndex = -1\n\n  // Data management.\n  // @ts-expect-error: overloads are handled.\n  processor.data = data\n  processor.Parser = undefined\n  processor.Compiler = undefined\n\n  // Lock.\n  processor.freeze = freeze\n\n  // Plugins.\n  processor.attachers = attachers\n  // @ts-expect-error: overloads are handled.\n  processor.use = use\n\n  // API.\n  processor.parse = parse\n  processor.stringify = stringify\n  // @ts-expect-error: overloads are handled.\n  processor.run = run\n  processor.runSync = runSync\n  // @ts-expect-error: overloads are handled.\n  processor.process = process\n  processor.processSync = processSync\n\n  // Expose.\n  return processor\n\n  // Create a new processor based on the processor in the current scope.\n  /** @type {Processor} */\n  function processor() {\n    const destination = base()\n    let index = -1\n\n    while (++index < attachers.length) {\n      destination.use(...attachers[index])\n    }\n\n    destination.data(extend__WEBPACK_IMPORTED_MODULE_1__(true, {}, namespace))\n\n    return destination\n  }\n\n  /**\n   * @param {string|Record<string, unknown>} [key]\n   * @param {unknown} [value]\n   * @returns {unknown}\n   */\n  function data(key, value) {\n    if (typeof key === 'string') {\n      // Set `key`.\n      if (arguments.length === 2) {\n        assertUnfrozen('data', frozen)\n        namespace[key] = value\n        return processor\n      }\n\n      // Get `key`.\n      return (own.call(namespace, key) && namespace[key]) || null\n    }\n\n    // Set space.\n    if (key) {\n      assertUnfrozen('data', frozen)\n      namespace = key\n      return processor\n    }\n\n    // Get space.\n    return namespace\n  }\n\n  /** @type {Processor['freeze']} */\n  function freeze() {\n    if (frozen) {\n      return processor\n    }\n\n    while (++freezeIndex < attachers.length) {\n      const [attacher, ...options] = attachers[freezeIndex]\n\n      if (options[0] === false) {\n        continue\n      }\n\n      if (options[0] === true) {\n        options[0] = undefined\n      }\n\n      /** @type {Transformer|void} */\n      const transformer = attacher.call(processor, ...options)\n\n      if (typeof transformer === 'function') {\n        transformers.use(transformer)\n      }\n    }\n\n    frozen = true\n    freezeIndex = Number.POSITIVE_INFINITY\n\n    return processor\n  }\n\n  /**\n   * @param {Pluggable|null|undefined} [value]\n   * @param {...unknown} options\n   * @returns {Processor}\n   */\n  function use(value, ...options) {\n    /** @type {Record<string, unknown>|undefined} */\n    let settings\n\n    assertUnfrozen('use', frozen)\n\n    if (value === null || value === undefined) {\n      // Empty.\n    } else if (typeof value === 'function') {\n      addPlugin(value, ...options)\n    } else if (typeof value === 'object') {\n      if (Array.isArray(value)) {\n        addList(value)\n      } else {\n        addPreset(value)\n      }\n    } else {\n      throw new TypeError('Expected usable value, not `' + value + '`')\n    }\n\n    if (settings) {\n      namespace.settings = Object.assign(namespace.settings || {}, settings)\n    }\n\n    return processor\n\n    /**\n     * @param {import('..').Pluggable<unknown[]>} value\n     * @returns {void}\n     */\n    function add(value) {\n      if (typeof value === 'function') {\n        addPlugin(value)\n      } else if (typeof value === 'object') {\n        if (Array.isArray(value)) {\n          const [plugin, ...options] = value\n          addPlugin(plugin, ...options)\n        } else {\n          addPreset(value)\n        }\n      } else {\n        throw new TypeError('Expected usable value, not `' + value + '`')\n      }\n    }\n\n    /**\n     * @param {Preset} result\n     * @returns {void}\n     */\n    function addPreset(result) {\n      addList(result.plugins)\n\n      if (result.settings) {\n        settings = Object.assign(settings || {}, result.settings)\n      }\n    }\n\n    /**\n     * @param {PluggableList|null|undefined} [plugins]\n     * @returns {void}\n     */\n    function addList(plugins) {\n      let index = -1\n\n      if (plugins === null || plugins === undefined) {\n        // Empty.\n      } else if (Array.isArray(plugins)) {\n        while (++index < plugins.length) {\n          const thing = plugins[index]\n          add(thing)\n        }\n      } else {\n        throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n      }\n    }\n\n    /**\n     * @param {Plugin} plugin\n     * @param {...unknown} [value]\n     * @returns {void}\n     */\n    function addPlugin(plugin, value) {\n      let index = -1\n      /** @type {Processor['attachers'][number]|undefined} */\n      let entry\n\n      while (++index < attachers.length) {\n        if (attachers[index][0] === plugin) {\n          entry = attachers[index]\n          break\n        }\n      }\n\n      if (entry) {\n        if ((0,is_plain_obj__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(entry[1]) && (0,is_plain_obj__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value)) {\n          value = extend__WEBPACK_IMPORTED_MODULE_1__(true, entry[1], value)\n        }\n\n        entry[1] = value\n      } else {\n        // @ts-expect-error: fine.\n        attachers.push([...arguments])\n      }\n    }\n  }\n\n  /** @type {Processor['parse']} */\n  function parse(doc) {\n    processor.freeze()\n    const file = vfile(doc)\n    const Parser = processor.Parser\n    assertParser('parse', Parser)\n\n    if (newable(Parser, 'parse')) {\n      // @ts-expect-error: `newable` checks this.\n      return new Parser(String(file), file).parse()\n    }\n\n    // @ts-expect-error: `newable` checks this.\n    return Parser(String(file), file) // eslint-disable-line new-cap\n  }\n\n  /** @type {Processor['stringify']} */\n  function stringify(node, doc) {\n    processor.freeze()\n    const file = vfile(doc)\n    const Compiler = processor.Compiler\n    assertCompiler('stringify', Compiler)\n    assertNode(node)\n\n    if (newable(Compiler, 'compile')) {\n      // @ts-expect-error: `newable` checks this.\n      return new Compiler(node, file).compile()\n    }\n\n    // @ts-expect-error: `newable` checks this.\n    return Compiler(node, file) // eslint-disable-line new-cap\n  }\n\n  /**\n   * @param {Node} node\n   * @param {VFileCompatible|RunCallback} [doc]\n   * @param {RunCallback} [callback]\n   * @returns {Promise<Node>|void}\n   */\n  function run(node, doc, callback) {\n    assertNode(node)\n    processor.freeze()\n\n    if (!callback && typeof doc === 'function') {\n      callback = doc\n      doc = undefined\n    }\n\n    if (!callback) {\n      return new Promise(executor)\n    }\n\n    executor(null, callback)\n\n    /**\n     * @param {null|((node: Node) => void)} resolve\n     * @param {(error: Error) => void} reject\n     * @returns {void}\n     */\n    function executor(resolve, reject) {\n      // @ts-expect-error: `doc` can’t be a callback anymore, we checked.\n      transformers.run(node, vfile(doc), done)\n\n      /**\n       * @param {Error|null} error\n       * @param {Node} tree\n       * @param {VFile} file\n       * @returns {void}\n       */\n      function done(error, tree, file) {\n        tree = tree || node\n        if (error) {\n          reject(error)\n        } else if (resolve) {\n          resolve(tree)\n        } else {\n          // @ts-expect-error: `callback` is defined if `resolve` is not.\n          callback(null, tree, file)\n        }\n      }\n    }\n  }\n\n  /** @type {Processor['runSync']} */\n  function runSync(node, file) {\n    /** @type {Node|undefined} */\n    let result\n    /** @type {boolean|undefined} */\n    let complete\n\n    processor.run(node, file, done)\n\n    assertDone('runSync', 'run', complete)\n\n    // @ts-expect-error: we either bailed on an error or have a tree.\n    return result\n\n    /**\n     * @param {Error|null} [error]\n     * @param {Node} [tree]\n     * @returns {void}\n     */\n    function done(error, tree) {\n      ;(0,bail__WEBPACK_IMPORTED_MODULE_4__.bail)(error)\n      result = tree\n      complete = true\n    }\n  }\n\n  /**\n   * @param {VFileCompatible} doc\n   * @param {ProcessCallback} [callback]\n   * @returns {Promise<VFile>|undefined}\n   */\n  function process(doc, callback) {\n    processor.freeze()\n    assertParser('process', processor.Parser)\n    assertCompiler('process', processor.Compiler)\n\n    if (!callback) {\n      return new Promise(executor)\n    }\n\n    executor(null, callback)\n\n    /**\n     * @param {null|((file: VFile) => void)} resolve\n     * @param {(error?: Error|null|undefined) => void} reject\n     * @returns {void}\n     */\n    function executor(resolve, reject) {\n      const file = vfile(doc)\n\n      processor.run(processor.parse(file), file, (error, tree, file) => {\n        if (error || !tree || !file) {\n          done(error)\n        } else {\n          /** @type {unknown} */\n          const result = processor.stringify(tree, file)\n\n          if (result === undefined || result === null) {\n            // Empty.\n          } else if (looksLikeAVFileValue(result)) {\n            file.value = result\n          } else {\n            file.result = result\n          }\n\n          done(error, file)\n        }\n      })\n\n      /**\n       * @param {Error|null|undefined} [error]\n       * @param {VFile|undefined} [file]\n       * @returns {void}\n       */\n      function done(error, file) {\n        if (error || !file) {\n          reject(error)\n        } else if (resolve) {\n          resolve(file)\n        } else {\n          // @ts-expect-error: `callback` is defined if `resolve` is not.\n          callback(null, file)\n        }\n      }\n    }\n  }\n\n  /** @type {Processor['processSync']} */\n  function processSync(doc) {\n    /** @type {boolean|undefined} */\n    let complete\n\n    processor.freeze()\n    assertParser('processSync', processor.Parser)\n    assertCompiler('processSync', processor.Compiler)\n\n    const file = vfile(doc)\n\n    processor.process(file, done)\n\n    assertDone('processSync', 'process', complete)\n\n    return file\n\n    /**\n     * @param {Error|null|undefined} [error]\n     * @returns {void}\n     */\n    function done(error) {\n      complete = true\n      ;(0,bail__WEBPACK_IMPORTED_MODULE_4__.bail)(error)\n    }\n  }\n}\n\n/**\n * Check if `value` is a constructor.\n *\n * @param {unknown} value\n * @param {string} name\n * @returns {boolean}\n */\nfunction newable(value, name) {\n  return (\n    typeof value === 'function' &&\n    // Prototypes do exist.\n    // type-coverage:ignore-next-line\n    value.prototype &&\n    // A function with keys in its prototype is probably a constructor.\n    // Classes’ prototype methods are not enumerable, so we check if some value\n    // exists in the prototype.\n    // type-coverage:ignore-next-line\n    (keys(value.prototype) || name in value.prototype)\n  )\n}\n\n/**\n * Check if `value` is an object with keys.\n *\n * @param {Record<string, unknown>} value\n * @returns {boolean}\n */\nfunction keys(value) {\n  /** @type {string} */\n  let key\n\n  for (key in value) {\n    if (own.call(value, key)) {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `Parser`')\n  }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `Compiler`')\n  }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n  if (frozen) {\n    throw new Error(\n      'Cannot call `' +\n        name +\n        '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n    )\n  }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n  // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n  // type-coverage:ignore-next-line\n  if (!(0,is_plain_obj__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(node) || typeof node.type !== 'string') {\n    throw new TypeError('Expected node, got `' + node + '`')\n    // Fine.\n  }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n  if (!complete) {\n    throw new Error(\n      '`' + name + '` finished async. Use `' + asyncName + '` instead'\n    )\n  }\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n  return looksLikeAVFile(value) ? value : new vfile__WEBPACK_IMPORTED_MODULE_5__.VFile(value)\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'message' in value &&\n      'messages' in value\n  )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is VFileValue}\n */\nfunction looksLikeAVFileValue(value) {\n  return typeof value === 'string' || is_buffer__WEBPACK_IMPORTED_MODULE_0__(value)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/unified/lib/index.js?");

/***/ }),

/***/ "./node_modules/unified/node_modules/is-plain-obj/index.js":
/*!*****************************************************************!*\
  !*** ./node_modules/unified/node_modules/is-plain-obj/index.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ isPlainObject; }\n/* harmony export */ });\nfunction isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/unified/node_modules/is-plain-obj/index.js?");

/***/ }),

/***/ "./node_modules/unist-util-generated/lib/index.js":
/*!********************************************************!*\
  !*** ./node_modules/unist-util-generated/lib/index.js ***!
  \********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"generated\": function() { return /* binding */ generated; }\n/* harmony export */ });\n/**\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef NodeLike\n * @property {PositionLike | null | undefined} [position]\n */\n\n/**\n * Check if `node` is generated.\n *\n * @param {NodeLike | null | undefined} [node]\n *   Node to check.\n * @returns {boolean}\n *   Whether `node` is generated (does not have positional info).\n */\nfunction generated(node) {\n  return (\n    !node ||\n    !node.position ||\n    !node.position.start ||\n    !node.position.start.line ||\n    !node.position.start.column ||\n    !node.position.end ||\n    !node.position.end.line ||\n    !node.position.end.column\n  )\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/unist-util-generated/lib/index.js?");

/***/ }),

/***/ "./node_modules/unist-util-is/lib/index.js":
/*!*************************************************!*\
  !*** ./node_modules/unist-util-is/lib/index.js ***!
  \*************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"convert\": function() { return /* binding */ convert; },\n/* harmony export */   \"is\": function() { return /* binding */ is; }\n/* harmony export */ });\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @typedef {Record<string, unknown>} Props\n * @typedef {null | undefined | string | Props | TestFunctionAnything | Array<string | Props | TestFunctionAnything>} Test\n *   Check for an arbitrary node, unaware of TypeScript inferral.\n *\n * @callback TestFunctionAnything\n *   Check if a node passes a test, unaware of TypeScript inferral.\n * @param {unknown} this\n *   The given context.\n * @param {Node} node\n *   A node.\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean | void}\n *   Whether this node passes the test.\n */\n\n/**\n * @template {Node} Kind\n *   Node type.\n * @typedef {Kind['type'] | Partial<Kind> | TestFunctionPredicate<Kind> | Array<Kind['type'] | Partial<Kind> | TestFunctionPredicate<Kind>>} PredicateTest\n *   Check for a node that can be inferred by TypeScript.\n */\n\n/**\n * Check if a node passes a certain test.\n *\n * @template {Node} Kind\n *   Node type.\n * @callback TestFunctionPredicate\n *   Complex test function for a node that can be inferred by TypeScript.\n * @param {Node} node\n *   A node.\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {node is Kind}\n *   Whether this node passes the test.\n */\n\n/**\n * @callback AssertAnything\n *   Check that an arbitrary value is a node, unaware of TypeScript inferral.\n * @param {unknown} [node]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean}\n *   Whether this is a node and passes a test.\n */\n\n/**\n * Check if a node is a node and passes a certain node test.\n *\n * @template {Node} Kind\n *   Node type.\n * @callback AssertPredicate\n *   Check that an arbitrary value is a specific node, aware of TypeScript.\n * @param {unknown} [node]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {node is Kind}\n *   Whether this is a node and passes a test.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param node\n *   Thing to check, typically `Node`.\n * @param test\n *   A check for a specific node.\n * @param index\n *   The node’s position in its parent.\n * @param parent\n *   The node’s parent.\n * @returns\n *   Whether `node` is a node and passes a test.\n */\nconst is =\n  /**\n   * @type {(\n   *   (() => false) &\n   *   (<Kind extends Node = Node>(node: unknown, test: PredicateTest<Kind>, index: number, parent: Parent, context?: unknown) => node is Kind) &\n   *   (<Kind extends Node = Node>(node: unknown, test: PredicateTest<Kind>, index?: null | undefined, parent?: null | undefined, context?: unknown) => node is Kind) &\n   *   ((node: unknown, test: Test, index: number, parent: Parent, context?: unknown) => boolean) &\n   *   ((node: unknown, test?: Test, index?: null | undefined, parent?: null | undefined, context?: unknown) => boolean)\n   * )}\n   */\n  (\n    /**\n     * @param {unknown} [node]\n     * @param {Test} [test]\n     * @param {number | null | undefined} [index]\n     * @param {Parent | null | undefined} [parent]\n     * @param {unknown} [context]\n     * @returns {boolean}\n     */\n    // eslint-disable-next-line max-params\n    function is(node, test, index, parent, context) {\n      const check = convert(test)\n\n      if (\n        index !== undefined &&\n        index !== null &&\n        (typeof index !== 'number' ||\n          index < 0 ||\n          index === Number.POSITIVE_INFINITY)\n      ) {\n        throw new Error('Expected positive finite index')\n      }\n\n      if (\n        parent !== undefined &&\n        parent !== null &&\n        (!is(parent) || !parent.children)\n      ) {\n        throw new Error('Expected parent node')\n      }\n\n      if (\n        (parent === undefined || parent === null) !==\n        (index === undefined || index === null)\n      ) {\n        throw new Error('Expected both parent and index')\n      }\n\n      // @ts-expect-error Looks like a node.\n      return node && node.type && typeof node.type === 'string'\n        ? Boolean(check.call(context, node, index, parent))\n        : false\n    }\n  )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param test\n *   *   when nullish, checks if `node` is a `Node`.\n *   *   when `string`, works like passing `(node) => node.type === test`.\n *   *   when `function` checks if function passed the node is true.\n *   *   when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n *   *   when `array`, checks if any one of the subtests pass.\n * @returns\n *   An assertion.\n */\nconst convert =\n  /**\n   * @type {(\n   *   (<Kind extends Node>(test: PredicateTest<Kind>) => AssertPredicate<Kind>) &\n   *   ((test?: Test) => AssertAnything)\n   * )}\n   */\n  (\n    /**\n     * @param {Test} [test]\n     * @returns {AssertAnything}\n     */\n    function (test) {\n      if (test === undefined || test === null) {\n        return ok\n      }\n\n      if (typeof test === 'string') {\n        return typeFactory(test)\n      }\n\n      if (typeof test === 'object') {\n        return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n      }\n\n      if (typeof test === 'function') {\n        return castFactory(test)\n      }\n\n      throw new Error('Expected function, string, or object as test')\n    }\n  )\n\n/**\n * @param {Array<string | Props | TestFunctionAnything>} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n  /** @type {Array<AssertAnything>} */\n  const checks = []\n  let index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index])\n  }\n\n  return castFactory(any)\n\n  /**\n   * @this {unknown}\n   * @param {Array<unknown>} parameters\n   * @returns {boolean}\n   */\n  function any(...parameters) {\n    let index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].call(this, ...parameters)) return true\n    }\n\n    return false\n  }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n  return castFactory(all)\n\n  /**\n   * @param {Node} node\n   * @returns {boolean}\n   */\n  function all(node) {\n    /** @type {string} */\n    let key\n\n    for (key in check) {\n      // @ts-expect-error: hush, it sure works as an index.\n      if (node[key] !== check[key]) return false\n    }\n\n    return true\n  }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {AssertAnything}\n */\nfunction typeFactory(check) {\n  return castFactory(type)\n\n  /**\n   * @param {Node} node\n   */\n  function type(node) {\n    return node && node.type === check\n  }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n  return assertion\n\n  /**\n   * @this {unknown}\n   * @param {unknown} node\n   * @param {Array<unknown>} parameters\n   * @returns {boolean}\n   */\n  function assertion(node, ...parameters) {\n    return Boolean(\n      node &&\n        typeof node === 'object' &&\n        'type' in node &&\n        // @ts-expect-error: fine.\n        Boolean(check.call(this, node, ...parameters))\n    )\n  }\n}\n\nfunction ok() {\n  return true\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/unist-util-is/lib/index.js?");

/***/ }),

/***/ "./node_modules/unist-util-position/lib/index.js":
/*!*******************************************************!*\
  !*** ./node_modules/unist-util-position/lib/index.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"pointEnd\": function() { return /* binding */ pointEnd; },\n/* harmony export */   \"pointStart\": function() { return /* binding */ pointStart; },\n/* harmony export */   \"position\": function() { return /* binding */ position; }\n/* harmony export */ });\n/**\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nconst pointStart = point('start')\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nconst pointEnd = point('end')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n *   Node.\n * @returns {Position}\n *   Position.\n */\nfunction position(node) {\n  return {start: pointStart(node), end: pointEnd(node)}\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'start' | 'end'} type\n *   Side.\n * @returns\n *   Getter.\n */\nfunction point(type) {\n  return point\n\n  /**\n   * Get the point info of `node` at a bound side.\n   *\n   * @param {NodeLike | Node | null | undefined} [node]\n   * @returns {Point}\n   */\n  function point(node) {\n    const point = (node && node.position && node.position[type]) || {}\n\n    // To do: next major: don’t return points when invalid.\n    return {\n      // @ts-expect-error: in practice, null is allowed.\n      line: point.line || null,\n      // @ts-expect-error: in practice, null is allowed.\n      column: point.column || null,\n      // @ts-expect-error: in practice, null is allowed.\n      offset: point.offset > -1 ? point.offset : null\n    }\n  }\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/unist-util-position/lib/index.js?");

/***/ }),

/***/ "./node_modules/unist-util-stringify-position/lib/index.js":
/*!*****************************************************************!*\
  !*** ./node_modules/unist-util-stringify-position/lib/index.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"stringifyPosition\": function() { return /* binding */ stringifyPosition; }\n/* harmony export */ });\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Position | PositionLike | Point | PointLike | null | undefined} [value]\n *   Node, position, or point.\n * @returns {string}\n *   Pretty printed positional info of a node (`string`).\n *\n *   In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n *   or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n *   column, `s` for `start`, and `e` for end.\n *   An empty string (`''`) is returned if the given value is neither `node`,\n *   `position`, nor `point`.\n */\nfunction stringifyPosition(value) {\n  // Nothing.\n  if (!value || typeof value !== 'object') {\n    return ''\n  }\n\n  // Node.\n  if ('position' in value || 'type' in value) {\n    return position(value.position)\n  }\n\n  // Position.\n  if ('start' in value || 'end' in value) {\n    return position(value)\n  }\n\n  // Point.\n  if ('line' in value || 'column' in value) {\n    return point(value)\n  }\n\n  // ?\n  return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n  return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n  return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n  return value && typeof value === 'number' ? value : 1\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/unist-util-stringify-position/lib/index.js?");

/***/ }),

/***/ "./node_modules/unist-util-visit-parents/lib/color.browser.js":
/*!********************************************************************!*\
  !*** ./node_modules/unist-util-visit-parents/lib/color.browser.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"color\": function() { return /* binding */ color; }\n/* harmony export */ });\n/**\n * @param {string} d\n * @returns {string}\n */\nfunction color(d) {\n  return d\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/unist-util-visit-parents/lib/color.browser.js?");

/***/ }),

/***/ "./node_modules/unist-util-visit-parents/lib/index.js":
/*!************************************************************!*\
  !*** ./node_modules/unist-util-visit-parents/lib/index.js ***!
  \************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CONTINUE\": function() { return /* binding */ CONTINUE; },\n/* harmony export */   \"EXIT\": function() { return /* binding */ EXIT; },\n/* harmony export */   \"SKIP\": function() { return /* binding */ SKIP; },\n/* harmony export */   \"visitParents\": function() { return /* binding */ visitParents; }\n/* harmony export */ });\n/* harmony import */ var unist_util_is__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! unist-util-is */ \"./node_modules/unist-util-is/lib/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/unist-util-visit-parents/lib/color.browser.js\");\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n */\n\n/**\n * @typedef {boolean | 'skip'} Action\n *   Union of the action types.\n *\n * @typedef {number} Index\n *   Move to the sibling at `index` next (after node itself is completely\n *   traversed).\n *\n *   Useful if mutating the tree, such as removing the node the visitor is\n *   currently on, or any of its previous siblings.\n *   Results less than 0 or greater than or equal to `children.length` stop\n *   traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n *   List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n *   Any value that can be returned from a visitor.\n */\n\n/**\n * @template {Node} [Visited=Node]\n *   Visited node type.\n * @template {Parent} [Ancestor=Parent]\n *   Ancestor type.\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform the parent of node (the last of `ancestors`).\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of an ancestor still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Array<Ancestor>} ancestors\n *   Ancestors of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   Tree type.\n * @template {Test} [Check=string]\n *   Test type.\n * @typedef {Visitor<import('./complex-types.js').Matches<import('./complex-types.js').InclusiveDescendant<Tree>, Check>, Extract<import('./complex-types.js').InclusiveDescendant<Tree>, Parent>>} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parents`.\n */\n\n\n\n\n/**\n * Continue traversing as normal.\n */\nconst CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nconst EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nconst SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n *   Tree to traverse.\n * @param test\n *   `unist-util-is`-compatible test\n * @param visitor\n *   Handle each node.\n * @param reverse\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n *   Nothing.\n */\nconst visitParents =\n  /**\n   * @type {(\n   *   (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: BuildVisitor<Tree, Check>, reverse?: boolean | null | undefined) => void) &\n   *   (<Tree extends Node>(tree: Tree, visitor: BuildVisitor<Tree>, reverse?: boolean | null | undefined) => void)\n   * )}\n   */\n  (\n    /**\n     * @param {Node} tree\n     * @param {Test} test\n     * @param {Visitor<Node>} visitor\n     * @param {boolean | null | undefined} [reverse]\n     * @returns {void}\n     */\n    function (tree, test, visitor, reverse) {\n      if (typeof test === 'function' && typeof visitor !== 'function') {\n        reverse = visitor\n        // @ts-expect-error no visitor given, so `visitor` is test.\n        visitor = test\n        test = null\n      }\n\n      const is = (0,unist_util_is__WEBPACK_IMPORTED_MODULE_0__.convert)(test)\n      const step = reverse ? -1 : 1\n\n      factory(tree, undefined, [])()\n\n      /**\n       * @param {Node} node\n       * @param {number | undefined} index\n       * @param {Array<Parent>} parents\n       */\n      function factory(node, index, parents) {\n        /** @type {Record<string, unknown>} */\n        // @ts-expect-error: hush\n        const value = node && typeof node === 'object' ? node : {}\n\n        if (typeof value.type === 'string') {\n          const name =\n            // `hast`\n            typeof value.tagName === 'string'\n              ? value.tagName\n              : // `xast`\n              typeof value.name === 'string'\n              ? value.name\n              : undefined\n\n          Object.defineProperty(visit, 'name', {\n            value:\n              'node (' + (0,_color_js__WEBPACK_IMPORTED_MODULE_1__.color)(node.type + (name ? '<' + name + '>' : '')) + ')'\n          })\n        }\n\n        return visit\n\n        function visit() {\n          /** @type {ActionTuple} */\n          let result = []\n          /** @type {ActionTuple} */\n          let subresult\n          /** @type {number} */\n          let offset\n          /** @type {Array<Parent>} */\n          let grandparents\n\n          if (!test || is(node, index, parents[parents.length - 1] || null)) {\n            result = toResult(visitor(node, parents))\n\n            if (result[0] === EXIT) {\n              return result\n            }\n          }\n\n          // @ts-expect-error looks like a parent.\n          if (node.children && result[0] !== SKIP) {\n            // @ts-expect-error looks like a parent.\n            offset = (reverse ? node.children.length : -1) + step\n            // @ts-expect-error looks like a parent.\n            grandparents = parents.concat(node)\n\n            // @ts-expect-error looks like a parent.\n            while (offset > -1 && offset < node.children.length) {\n              // @ts-expect-error looks like a parent.\n              subresult = factory(node.children[offset], offset, grandparents)()\n\n              if (subresult[0] === EXIT) {\n                return subresult\n              }\n\n              offset =\n                typeof subresult[1] === 'number' ? subresult[1] : offset + step\n            }\n          }\n\n          return result\n        }\n      }\n    }\n  )\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n *   Valid return values from visitors.\n * @returns {ActionTuple}\n *   Clean result.\n */\nfunction toResult(value) {\n  if (Array.isArray(value)) {\n    return value\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value]\n  }\n\n  return [value]\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/unist-util-visit-parents/lib/index.js?");

/***/ }),

/***/ "./node_modules/unist-util-visit/lib/index.js":
/*!****************************************************!*\
  !*** ./node_modules/unist-util-visit/lib/index.js ***!
  \****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CONTINUE\": function() { return /* reexport safe */ unist_util_visit_parents__WEBPACK_IMPORTED_MODULE_0__.CONTINUE; },\n/* harmony export */   \"EXIT\": function() { return /* reexport safe */ unist_util_visit_parents__WEBPACK_IMPORTED_MODULE_0__.EXIT; },\n/* harmony export */   \"SKIP\": function() { return /* reexport safe */ unist_util_visit_parents__WEBPACK_IMPORTED_MODULE_0__.SKIP; },\n/* harmony export */   \"visit\": function() { return /* binding */ visit; }\n/* harmony export */ });\n/* harmony import */ var unist_util_visit_parents__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! unist-util-visit-parents */ \"./node_modules/unist-util-visit-parents/lib/index.js\");\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * Check if `Child` can be a child of `Ancestor`.\n *\n * Returns the ancestor when `Child` can be a child of `Ancestor`, or returns\n * `never`.\n *\n * @template {Node} Ancestor\n *   Node type.\n * @template {Node} Child\n *   Node type.\n * @typedef {(\n *   Ancestor extends Parent\n *     ? Child extends Ancestor['children'][number]\n *       ? Ancestor\n *       : never\n *     : never\n * )} ParentsOf\n */\n\n/**\n * @template {Node} [Visited=Node]\n *   Visited node type.\n * @template {Parent} [Ancestor=Parent]\n *   Ancestor type.\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform `parent`.\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of `parent` still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Visited extends Node ? number | null : never} index\n *   Index of `node` in `parent`.\n * @param {Ancestor extends Node ? Ancestor | null : never} parent\n *   Parent of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Visited\n *   Node type.\n * @template {Parent} Ancestor\n *   Parent type.\n * @typedef {Visitor<Visited, ParentsOf<Ancestor, Visited>>} BuildVisitorFromMatch\n */\n\n/**\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Descendant\n *   Node type.\n * @template {Test} Check\n *   Test type.\n * @typedef {(\n *   BuildVisitorFromMatch<\n *     import('unist-util-visit-parents/complex-types.js').Matches<Descendant, Check>,\n *     Extract<Descendant, Parent>\n *   >\n * )} BuildVisitorFromDescendants\n */\n\n/**\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} [Tree=Node]\n *   Node type.\n * @template {Test} [Check=string]\n *   Test type.\n * @typedef {(\n *   BuildVisitorFromDescendants<\n *     import('unist-util-visit-parents/complex-types.js').InclusiveDescendant<Tree>,\n *     Check\n *   >\n * )} BuildVisitor\n */\n\n\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n *   Tree to traverse.\n * @param test\n *   `unist-util-is`-compatible test\n * @param visitor\n *   Handle each node.\n * @param reverse\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n *   Nothing.\n */\nconst visit =\n  /**\n   * @type {(\n   *   (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: BuildVisitor<Tree, Check>, reverse?: boolean | null | undefined) => void) &\n   *   (<Tree extends Node>(tree: Tree, visitor: BuildVisitor<Tree>, reverse?: boolean | null | undefined) => void)\n   * )}\n   */\n  (\n    /**\n     * @param {Node} tree\n     * @param {Test} test\n     * @param {Visitor} visitor\n     * @param {boolean | null | undefined} [reverse]\n     * @returns {void}\n     */\n    function (tree, test, visitor, reverse) {\n      if (typeof test === 'function' && typeof visitor !== 'function') {\n        reverse = visitor\n        visitor = test\n        test = null\n      }\n\n      (0,unist_util_visit_parents__WEBPACK_IMPORTED_MODULE_0__.visitParents)(tree, test, overload, reverse)\n\n      /**\n       * @param {Node} node\n       * @param {Array<Parent>} parents\n       */\n      function overload(node, parents) {\n        const parent = parents[parents.length - 1]\n        return visitor(\n          node,\n          parent ? parent.children.indexOf(node) : null,\n          parent\n        )\n      }\n    }\n  )\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/unist-util-visit/lib/index.js?");

/***/ }),

/***/ "./node_modules/uvu/assert/index.mjs":
/*!*******************************************!*\
  !*** ./node_modules/uvu/assert/index.mjs ***!
  \*******************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Assertion\": function() { return /* binding */ Assertion; },\n/* harmony export */   \"equal\": function() { return /* binding */ equal; },\n/* harmony export */   \"fixture\": function() { return /* binding */ fixture; },\n/* harmony export */   \"instance\": function() { return /* binding */ instance; },\n/* harmony export */   \"is\": function() { return /* binding */ is; },\n/* harmony export */   \"match\": function() { return /* binding */ match; },\n/* harmony export */   \"not\": function() { return /* binding */ not; },\n/* harmony export */   \"ok\": function() { return /* binding */ ok; },\n/* harmony export */   \"snapshot\": function() { return /* binding */ snapshot; },\n/* harmony export */   \"throws\": function() { return /* binding */ throws; },\n/* harmony export */   \"type\": function() { return /* binding */ type; },\n/* harmony export */   \"unreachable\": function() { return /* binding */ unreachable; }\n/* harmony export */ });\n/* harmony import */ var dequal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dequal */ \"./node_modules/dequal/dist/index.mjs\");\n/* harmony import */ var uvu_diff__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! uvu/diff */ \"./node_modules/uvu/diff/index.mjs\");\n\n\n\nfunction dedent(str) {\n\tstr = str.replace(/\\r?\\n/g, '\\n');\n  let arr = str.match(/^[ \\t]*(?=\\S)/gm);\n  let i = 0, min = 1/0, len = (arr||[]).length;\n  for (; i < len; i++) min = Math.min(min, arr[i].length);\n  return len && min ? str.replace(new RegExp(`^[ \\\\t]{${min}}`, 'gm'), '') : str;\n}\n\nclass Assertion extends Error {\n\tconstructor(opts={}) {\n\t\tsuper(opts.message);\n\t\tthis.name = 'Assertion';\n\t\tthis.code = 'ERR_ASSERTION';\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, this.constructor);\n\t\t}\n\t\tthis.details = opts.details || false;\n\t\tthis.generated = !!opts.generated;\n\t\tthis.operator = opts.operator;\n\t\tthis.expects = opts.expects;\n\t\tthis.actual = opts.actual;\n\t}\n}\n\nfunction assert(bool, actual, expects, operator, detailer, backup, msg) {\n\tif (bool) return;\n\tlet message = msg || backup;\n\tif (msg instanceof Error) throw msg;\n\tlet details = detailer && detailer(actual, expects);\n\tthrow new Assertion({ actual, expects, operator, message, details, generated: !msg });\n}\n\nfunction ok(val, msg) {\n\tassert(!!val, false, true, 'ok', false, 'Expected value to be truthy', msg);\n}\n\nfunction is(val, exp, msg) {\n\tassert(val === exp, val, exp, 'is', uvu_diff__WEBPACK_IMPORTED_MODULE_1__.compare, 'Expected values to be strictly equal:', msg);\n}\n\nfunction equal(val, exp, msg) {\n\tassert((0,dequal__WEBPACK_IMPORTED_MODULE_0__.dequal)(val, exp), val, exp, 'equal', uvu_diff__WEBPACK_IMPORTED_MODULE_1__.compare, 'Expected values to be deeply equal:', msg);\n}\n\nfunction unreachable(msg) {\n\tassert(false, true, false, 'unreachable', false, 'Expected not to be reached!', msg);\n}\n\nfunction type(val, exp, msg) {\n\tlet tmp = typeof val;\n\tassert(tmp === exp, tmp, exp, 'type', false, `Expected \"${tmp}\" to be \"${exp}\"`, msg);\n}\n\nfunction instance(val, exp, msg) {\n\tlet name = '`' + (exp.name || exp.constructor.name) + '`';\n\tassert(val instanceof exp, val, exp, 'instance', false, `Expected value to be an instance of ${name}`, msg);\n}\n\nfunction match(val, exp, msg) {\n\tif (typeof exp === 'string') {\n\t\tassert(val.includes(exp), val, exp, 'match', false, `Expected value to include \"${exp}\" substring`, msg);\n\t} else {\n\t\tassert(exp.test(val), val, exp, 'match', false, `Expected value to match \\`${String(exp)}\\` pattern`, msg);\n\t}\n}\n\nfunction snapshot(val, exp, msg) {\n\tval=dedent(val); exp=dedent(exp);\n\tassert(val === exp, val, exp, 'snapshot', uvu_diff__WEBPACK_IMPORTED_MODULE_1__.lines, 'Expected value to match snapshot:', msg);\n}\n\nconst lineNums = (x, y) => (0,uvu_diff__WEBPACK_IMPORTED_MODULE_1__.lines)(x, y, 1);\nfunction fixture(val, exp, msg) {\n\tval=dedent(val); exp=dedent(exp);\n\tassert(val === exp, val, exp, 'fixture', lineNums, 'Expected value to match fixture:', msg);\n}\n\nfunction throws(blk, exp, msg) {\n\tif (!msg && typeof exp === 'string') {\n\t\tmsg = exp; exp = null;\n\t}\n\n\ttry {\n\t\tblk();\n\t\tassert(false, false, true, 'throws', false, 'Expected function to throw', msg);\n\t} catch (err) {\n\t\tif (err instanceof Assertion) throw err;\n\n\t\tif (typeof exp === 'function') {\n\t\t\tassert(exp(err), false, true, 'throws', false, 'Expected function to throw matching exception', msg);\n\t\t} else if (exp instanceof RegExp) {\n\t\t\tassert(exp.test(err.message), false, true, 'throws', false, `Expected function to throw exception matching \\`${String(exp)}\\` pattern`, msg);\n\t\t}\n\t}\n}\n\n// ---\n\nfunction not(val, msg) {\n\tassert(!val, true, false, 'not', false, 'Expected value to be falsey', msg);\n}\n\nnot.ok = not;\n\nis.not = function (val, exp, msg) {\n\tassert(val !== exp, val, exp, 'is.not', false, 'Expected values not to be strictly equal', msg);\n}\n\nnot.equal = function (val, exp, msg) {\n\tassert(!(0,dequal__WEBPACK_IMPORTED_MODULE_0__.dequal)(val, exp), val, exp, 'not.equal', false, 'Expected values not to be deeply equal', msg);\n}\n\nnot.type = function (val, exp, msg) {\n\tlet tmp = typeof val;\n\tassert(tmp !== exp, tmp, exp, 'not.type', false, `Expected \"${tmp}\" not to be \"${exp}\"`, msg);\n}\n\nnot.instance = function (val, exp, msg) {\n\tlet name = '`' + (exp.name || exp.constructor.name) + '`';\n\tassert(!(val instanceof exp), val, exp, 'not.instance', false, `Expected value not to be an instance of ${name}`, msg);\n}\n\nnot.snapshot = function (val, exp, msg) {\n\tval=dedent(val); exp=dedent(exp);\n\tassert(val !== exp, val, exp, 'not.snapshot', false, 'Expected value not to match snapshot', msg);\n}\n\nnot.fixture = function (val, exp, msg) {\n\tval=dedent(val); exp=dedent(exp);\n\tassert(val !== exp, val, exp, 'not.fixture', false, 'Expected value not to match fixture', msg);\n}\n\nnot.match = function (val, exp, msg) {\n\tif (typeof exp === 'string') {\n\t\tassert(!val.includes(exp), val, exp, 'not.match', false, `Expected value not to include \"${exp}\" substring`, msg);\n\t} else {\n\t\tassert(!exp.test(val), val, exp, 'not.match', false, `Expected value not to match \\`${String(exp)}\\` pattern`, msg);\n\t}\n}\n\nnot.throws = function (blk, exp, msg) {\n\tif (!msg && typeof exp === 'string') {\n\t\tmsg = exp; exp = null;\n\t}\n\n\ttry {\n\t\tblk();\n\t} catch (err) {\n\t\tif (typeof exp === 'function') {\n\t\t\tassert(!exp(err), true, false, 'not.throws', false, 'Expected function not to throw matching exception', msg);\n\t\t} else if (exp instanceof RegExp) {\n\t\t\tassert(!exp.test(err.message), true, false, 'not.throws', false, `Expected function not to throw exception matching \\`${String(exp)}\\` pattern`, msg);\n\t\t} else if (!exp) {\n\t\t\tassert(false, true, false, 'not.throws', false, 'Expected function not to throw', msg);\n\t\t}\n\t}\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/uvu/assert/index.mjs?");

/***/ }),

/***/ "./node_modules/uvu/diff/index.mjs":
/*!*****************************************!*\
  !*** ./node_modules/uvu/diff/index.mjs ***!
  \*****************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"arrays\": function() { return /* binding */ arrays; },\n/* harmony export */   \"chars\": function() { return /* binding */ chars; },\n/* harmony export */   \"circular\": function() { return /* binding */ circular; },\n/* harmony export */   \"compare\": function() { return /* binding */ compare; },\n/* harmony export */   \"direct\": function() { return /* binding */ direct; },\n/* harmony export */   \"lines\": function() { return /* binding */ lines; },\n/* harmony export */   \"sort\": function() { return /* binding */ sort; },\n/* harmony export */   \"stringify\": function() { return /* binding */ stringify; }\n/* harmony export */ });\n/* harmony import */ var kleur__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! kleur */ \"./node_modules/uvu/node_modules/kleur/index.mjs\");\n/* harmony import */ var diff__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! diff */ \"./node_modules/diff/lib/index.mjs\");\n\n\n\nconst colors = {\n\t'--': kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].red,\n\t'··': kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].grey,\n\t'++': kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].green,\n};\n\nconst TITLE = kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim().italic;\nconst TAB=kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim('→'), SPACE=kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim('·'), NL=kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim('↵');\nconst LOG = (sym, str) => colors[sym](sym + PRETTY(str)) + '\\n';\nconst LINE = (num, x) => kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim('L' + String(num).padStart(x, '0') + ' ');\nconst PRETTY = str => str.replace(/[ ]/g, SPACE).replace(/\\t/g, TAB).replace(/(\\r?\\n)/g, NL);\n\nfunction line(obj, prev, pad) {\n\tlet char = obj.removed ? '--' : obj.added ? '++' : '··';\n\tlet arr = obj.value.replace(/\\r?\\n$/, '').split('\\n');\n\tlet i=0, tmp, out='';\n\n\tif (obj.added) out += colors[char]().underline(TITLE('Expected:')) + '\\n';\n\telse if (obj.removed) out += colors[char]().underline(TITLE('Actual:')) + '\\n';\n\n\tfor (; i < arr.length; i++) {\n\t\ttmp = arr[i];\n\t\tif (tmp != null) {\n\t\t\tif (prev) out += LINE(prev + i, pad);\n\t\t\tout += LOG(char, tmp || '\\n');\n\t\t}\n\t}\n\n\treturn out;\n}\n\n// TODO: want better diffing\n//~> complex items bail outright\nfunction arrays(input, expect) {\n\tlet arr = diff__WEBPACK_IMPORTED_MODULE_1__.diffArrays(input, expect);\n\tlet i=0, j=0, k=0, tmp, val, char, isObj, str;\n\tlet out = LOG('··', '[');\n\n\tfor (; i < arr.length; i++) {\n\t\tchar = (tmp = arr[i]).removed ? '--' : tmp.added ? '++' : '··';\n\n\t\tif (tmp.added) {\n\t\t\tout += colors[char]().underline(TITLE('Expected:')) + '\\n';\n\t\t} else if (tmp.removed) {\n\t\t\tout += colors[char]().underline(TITLE('Actual:')) + '\\n';\n\t\t}\n\n\t\tfor (j=0; j < tmp.value.length; j++) {\n\t\t\tisObj = (tmp.value[j] && typeof tmp.value[j] === 'object');\n\t\t\tval = stringify(tmp.value[j]).split(/\\r?\\n/g);\n\t\t\tfor (k=0; k < val.length;) {\n\t\t\t\tstr = '  ' + val[k++] + (isObj ? '' : ',');\n\t\t\t\tif (isObj && k === val.length && (j + 1) < tmp.value.length) str += ',';\n\t\t\t\tout += LOG(char, str);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out + LOG('··', ']');\n}\n\nfunction lines(input, expect, linenum = 0) {\n\tlet i=0, tmp, output='';\n\tlet arr = diff__WEBPACK_IMPORTED_MODULE_1__.diffLines(input, expect);\n\tlet pad = String(expect.split(/\\r?\\n/g).length - linenum).length;\n\n\tfor (; i < arr.length; i++) {\n\t\toutput += line(tmp = arr[i], linenum, pad);\n\t\tif (linenum && !tmp.removed) linenum += tmp.count;\n\t}\n\n\treturn output;\n}\n\nfunction chars(input, expect) {\n\tlet arr = diff__WEBPACK_IMPORTED_MODULE_1__.diffChars(input, expect);\n\tlet i=0, output='', tmp;\n\n\tlet l1 = input.length;\n\tlet l2 = expect.length;\n\n\tlet p1 = PRETTY(input);\n\tlet p2 = PRETTY(expect);\n\n\ttmp = arr[i];\n\n\tif (l1 === l2) {\n\t\t// no length offsets\n\t} else if (tmp.removed && arr[i + 1]) {\n\t\tlet del = tmp.count - arr[i + 1].count;\n\t\tif (del == 0) {\n\t\t\t// wash~\n\t\t} else if (del > 0) {\n\t\t\texpect = ' '.repeat(del) + expect;\n\t\t\tp2 = ' '.repeat(del) + p2;\n\t\t\tl2 += del;\n\t\t} else if (del < 0) {\n\t\t\tinput = ' '.repeat(-del) + input;\n\t\t\tp1 = ' '.repeat(-del) + p1;\n\t\t\tl1 += -del;\n\t\t}\n\t}\n\n\toutput += direct(p1, p2, l1, l2);\n\n\tif (l1 === l2) {\n\t\tfor (tmp='  '; i < l1; i++) {\n\t\t\ttmp += input[i] === expect[i] ? ' ' : '^';\n\t\t}\n\t} else {\n\t\tfor (tmp='  '; i < arr.length; i++) {\n\t\t\ttmp += ((arr[i].added || arr[i].removed) ? '^' : ' ').repeat(Math.max(arr[i].count, 0));\n\t\t\tif (i + 1 < arr.length && ((arr[i].added && arr[i+1].removed) || (arr[i].removed && arr[i+1].added))) {\n\t\t\t\tarr[i + 1].count -= arr[i].count;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output + kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].red(tmp);\n}\n\nfunction direct(input, expect, lenA = String(input).length, lenB = String(expect).length) {\n\tlet gutter = 4;\n\tlet lenC = Math.max(lenA, lenB);\n\tlet typeA=typeof input, typeB=typeof expect;\n\n\tif (typeA !== typeB) {\n\t\tgutter = 2;\n\n\t\tlet delA = gutter + lenC - lenA;\n\t\tlet delB = gutter + lenC - lenB;\n\n\t\tinput += ' '.repeat(delA) + kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim(`[${typeA}]`);\n\t\texpect += ' '.repeat(delB) + kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim(`[${typeB}]`);\n\n\t\tlenA += delA + typeA.length + 2;\n\t\tlenB += delB + typeB.length + 2;\n\t\tlenC = Math.max(lenA, lenB);\n\t}\n\n\tlet output = colors['++']('++' + expect + ' '.repeat(gutter + lenC - lenB) + TITLE('(Expected)')) + '\\n';\n\treturn output + colors['--']('--' + input + ' '.repeat(gutter + lenC - lenA) + TITLE('(Actual)')) + '\\n';\n}\n\nfunction sort(input, expect) {\n\tvar k, i=0, tmp, isArr = Array.isArray(input);\n\tvar keys=[], out=isArr ? Array(input.length) : {};\n\n\tif (isArr) {\n\t\tfor (i=0; i < out.length; i++) {\n\t\t\ttmp = input[i];\n\t\t\tif (!tmp || typeof tmp !== 'object') out[i] = tmp;\n\t\t\telse out[i] = sort(tmp, expect[i]); // might not be right\n\t\t}\n\t} else {\n\t\tfor (k in expect)\n\t\t\tkeys.push(k);\n\n\t\tfor (; i < keys.length; i++) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(input, k = keys[i])) {\n\t\t\t\tif (!(tmp = input[k]) || typeof tmp !== 'object') out[k] = tmp;\n\t\t\t\telse out[k] = sort(tmp, expect[k]);\n\t\t\t}\n\t\t}\n\n\t\tfor (k in input) {\n\t\t\tif (!out.hasOwnProperty(k)) {\n\t\t\t\tout[k] = input[k]; // expect didnt have\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out;\n}\n\nfunction circular() {\n\tvar cache = new Set;\n\treturn function print(key, val) {\n\t\tif (val === void 0) return '[__VOID__]';\n\t\tif (typeof val === 'number' && val !== val) return '[__NAN__]';\n\t\tif (typeof val === 'bigint') return val.toString();\n\t\tif (!val || typeof val !== 'object') return val;\n\t\tif (cache.has(val)) return '[Circular]';\n\t\tcache.add(val); return val;\n\t}\n}\n\nfunction stringify(input) {\n\treturn JSON.stringify(input, circular(), 2).replace(/\"\\[__NAN__\\]\"/g, 'NaN').replace(/\"\\[__VOID__\\]\"/g, 'undefined');\n}\n\nfunction compare(input, expect) {\n\tif (Array.isArray(expect) && Array.isArray(input)) return arrays(input, expect);\n\tif (expect instanceof RegExp) return chars(''+input, ''+expect);\n\n\tlet isA = input && typeof input == 'object';\n\tlet isB = expect && typeof expect == 'object';\n\n\tif (isA && isB) input = sort(input, expect);\n\tif (isB) expect = stringify(expect);\n\tif (isA) input = stringify(input);\n\n\tif (expect && typeof expect == 'object') {\n\t\tinput = stringify(sort(input, expect));\n\t\texpect = stringify(expect);\n\t}\n\n\tisA = typeof input == 'string';\n\tisB = typeof expect == 'string';\n\n\tif (isA && /\\r?\\n/.test(input)) return lines(input, ''+expect);\n\tif (isB && /\\r?\\n/.test(expect)) return lines(''+input, expect);\n\tif (isA && isB) return chars(input, expect);\n\n\treturn direct(input, expect);\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/uvu/diff/index.mjs?");

/***/ }),

/***/ "./node_modules/uvu/node_modules/kleur/index.mjs":
/*!*******************************************************!*\
  !*** ./node_modules/uvu/node_modules/kleur/index.mjs ***!
  \*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* provided dependency */ var process = __webpack_require__(/*! process/browser */ \"./node_modules/process/browser.js\");\n\n\nlet FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\nif (typeof process !== 'undefined') {\n\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {});\n\tisTTY = process.stdout && process.stdout.isTTY;\n}\n\nconst $ = {\n\tenabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== 'dumb' && (\n\t\tFORCE_COLOR != null && FORCE_COLOR !== '0' || isTTY\n\t),\n\n\t// modifiers\n\treset: init(0, 0),\n\tbold: init(1, 22),\n\tdim: init(2, 22),\n\titalic: init(3, 23),\n\tunderline: init(4, 24),\n\tinverse: init(7, 27),\n\thidden: init(8, 28),\n\tstrikethrough: init(9, 29),\n\n\t// colors\n\tblack: init(30, 39),\n\tred: init(31, 39),\n\tgreen: init(32, 39),\n\tyellow: init(33, 39),\n\tblue: init(34, 39),\n\tmagenta: init(35, 39),\n\tcyan: init(36, 39),\n\twhite: init(37, 39),\n\tgray: init(90, 39),\n\tgrey: init(90, 39),\n\n\t// background colors\n\tbgBlack: init(40, 49),\n\tbgRed: init(41, 49),\n\tbgGreen: init(42, 49),\n\tbgYellow: init(43, 49),\n\tbgBlue: init(44, 49),\n\tbgMagenta: init(45, 49),\n\tbgCyan: init(46, 49),\n\tbgWhite: init(47, 49)\n};\n\nfunction run(arr, str) {\n\tlet i=0, tmp, beg='', end='';\n\tfor (; i < arr.length; i++) {\n\t\ttmp = arr[i];\n\t\tbeg += tmp.open;\n\t\tend += tmp.close;\n\t\tif (!!~str.indexOf(tmp.close)) {\n\t\t\tstr = str.replace(tmp.rgx, tmp.close + tmp.open);\n\t\t}\n\t}\n\treturn beg + str + end;\n}\n\nfunction chain(has, keys) {\n\tlet ctx = { has, keys };\n\n\tctx.reset = $.reset.bind(ctx);\n\tctx.bold = $.bold.bind(ctx);\n\tctx.dim = $.dim.bind(ctx);\n\tctx.italic = $.italic.bind(ctx);\n\tctx.underline = $.underline.bind(ctx);\n\tctx.inverse = $.inverse.bind(ctx);\n\tctx.hidden = $.hidden.bind(ctx);\n\tctx.strikethrough = $.strikethrough.bind(ctx);\n\n\tctx.black = $.black.bind(ctx);\n\tctx.red = $.red.bind(ctx);\n\tctx.green = $.green.bind(ctx);\n\tctx.yellow = $.yellow.bind(ctx);\n\tctx.blue = $.blue.bind(ctx);\n\tctx.magenta = $.magenta.bind(ctx);\n\tctx.cyan = $.cyan.bind(ctx);\n\tctx.white = $.white.bind(ctx);\n\tctx.gray = $.gray.bind(ctx);\n\tctx.grey = $.grey.bind(ctx);\n\n\tctx.bgBlack = $.bgBlack.bind(ctx);\n\tctx.bgRed = $.bgRed.bind(ctx);\n\tctx.bgGreen = $.bgGreen.bind(ctx);\n\tctx.bgYellow = $.bgYellow.bind(ctx);\n\tctx.bgBlue = $.bgBlue.bind(ctx);\n\tctx.bgMagenta = $.bgMagenta.bind(ctx);\n\tctx.bgCyan = $.bgCyan.bind(ctx);\n\tctx.bgWhite = $.bgWhite.bind(ctx);\n\n\treturn ctx;\n}\n\nfunction init(open, close) {\n\tlet blk = {\n\t\topen: `\\x1b[${open}m`,\n\t\tclose: `\\x1b[${close}m`,\n\t\trgx: new RegExp(`\\\\x1b\\\\[${close}m`, 'g')\n\t};\n\treturn function (txt) {\n\t\tif (this !== void 0 && this.has !== void 0) {\n\t\t\t!!~this.has.indexOf(open) || (this.has.push(open),this.keys.push(blk));\n\t\t\treturn txt === void 0 ? this : $.enabled ? run(this.keys, txt+'') : txt+'';\n\t\t}\n\t\treturn txt === void 0 ? chain([open], [blk]) : $.enabled ? run([blk], txt+'') : txt+'';\n\t};\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ($);\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/uvu/node_modules/kleur/index.mjs?");

/***/ }),

/***/ "./node_modules/vfile-message/lib/index.js":
/*!*************************************************!*\
  !*** ./node_modules/vfile-message/lib/index.js ***!
  \*************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"VFileMessage\": function() { return /* binding */ VFileMessage; }\n/* harmony export */ });\n/* harmony import */ var unist_util_stringify_position__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! unist-util-stringify-position */ \"./node_modules/unist-util-stringify-position/lib/index.js\");\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\n\n\n/**\n * Message.\n */\nclass VFileMessage extends Error {\n  /**\n   * Create a message for `reason` at `place` from `origin`.\n   *\n   * When an error is passed in as `reason`, the `stack` is copied.\n   *\n   * @param {string | Error | VFileMessage} reason\n   *   Reason for message, uses the stack and message of the error if given.\n   *\n   *   > 👉 **Note**: you should use markdown.\n   * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n   *   Place in file where the message occurred.\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns\n   *   Instance of `VFileMessage`.\n   */\n  // To do: next major: expose `undefined` everywhere instead of `null`.\n  constructor(reason, place, origin) {\n    /** @type {[string | null, string | null]} */\n    const parts = [null, null]\n    /** @type {Position} */\n    let position = {\n      // @ts-expect-error: we always follows the structure of `position`.\n      start: {line: null, column: null},\n      // @ts-expect-error: \"\n      end: {line: null, column: null}\n    }\n\n    super()\n\n    if (typeof place === 'string') {\n      origin = place\n      place = undefined\n    }\n\n    if (typeof origin === 'string') {\n      const index = origin.indexOf(':')\n\n      if (index === -1) {\n        parts[1] = origin\n      } else {\n        parts[0] = origin.slice(0, index)\n        parts[1] = origin.slice(index + 1)\n      }\n    }\n\n    if (place) {\n      // Node.\n      if ('type' in place || 'position' in place) {\n        if (place.position) {\n          // To do: next major: deep clone.\n          // @ts-expect-error: looks like a position.\n          position = place.position\n        }\n      }\n      // Position.\n      else if ('start' in place || 'end' in place) {\n        // @ts-expect-error: looks like a position.\n        // To do: next major: deep clone.\n        position = place\n      }\n      // Point.\n      else if ('line' in place || 'column' in place) {\n        // To do: next major: deep clone.\n        position.start = place\n      }\n    }\n\n    // Fields from `Error`.\n    /**\n     * Serialized positional info of error.\n     *\n     * On normal errors, this would be something like `ParseError`, buit in\n     * `VFile` messages we use this space to show where an error happened.\n     */\n    this.name = (0,unist_util_stringify_position__WEBPACK_IMPORTED_MODULE_0__.stringifyPosition)(place) || '1:1'\n\n    /**\n     * Reason for message.\n     *\n     * @type {string}\n     */\n    this.message = typeof reason === 'object' ? reason.message : reason\n\n    /**\n     * Stack of message.\n     *\n     * This is used by normal errors to show where something happened in\n     * programming code, irrelevant for `VFile` messages,\n     *\n     * @type {string}\n     */\n    this.stack = ''\n\n    if (typeof reason === 'object' && reason.stack) {\n      this.stack = reason.stack\n    }\n\n    /**\n     * Reason for message.\n     *\n     * > 👉 **Note**: you should use markdown.\n     *\n     * @type {string}\n     */\n    this.reason = this.message\n\n    /* eslint-disable no-unused-expressions */\n    /**\n     * State of problem.\n     *\n     * * `true` — marks associated file as no longer processable (error)\n     * * `false` — necessitates a (potential) change (warning)\n     * * `null | undefined` — for things that might not need changing (info)\n     *\n     * @type {boolean | null | undefined}\n     */\n    this.fatal\n\n    /**\n     * Starting line of error.\n     *\n     * @type {number | null}\n     */\n    this.line = position.start.line\n\n    /**\n     * Starting column of error.\n     *\n     * @type {number | null}\n     */\n    this.column = position.start.column\n\n    /**\n     * Full unist position.\n     *\n     * @type {Position | null}\n     */\n    this.position = position\n\n    /**\n     * Namespace of message (example: `'my-package'`).\n     *\n     * @type {string | null}\n     */\n    this.source = parts[0]\n\n    /**\n     * Category of message (example: `'my-rule'`).\n     *\n     * @type {string | null}\n     */\n    this.ruleId = parts[1]\n\n    /**\n     * Path of a file (used throughout the `VFile` ecosystem).\n     *\n     * @type {string | null}\n     */\n    this.file\n\n    // The following fields are “well known”.\n    // Not standard.\n    // Feel free to add other non-standard fields to your messages.\n\n    /**\n     * Specify the source value that’s being reported, which is deemed\n     * incorrect.\n     *\n     * @type {string | null}\n     */\n    this.actual\n\n    /**\n     * Suggest acceptable values that can be used instead of `actual`.\n     *\n     * @type {Array<string> | null}\n     */\n    this.expected\n\n    /**\n     * Link to docs for the message.\n     *\n     * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n     * > to `new URL(x)`.\n     *\n     * @type {string | null}\n     */\n    this.url\n\n    /**\n     * Long form description of the message (you should use markdown).\n     *\n     * @type {string | null}\n     */\n    this.note\n    /* eslint-enable no-unused-expressions */\n  }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.fatal = null\nVFileMessage.prototype.column = null\nVFileMessage.prototype.line = null\nVFileMessage.prototype.source = null\nVFileMessage.prototype.ruleId = null\nVFileMessage.prototype.position = null\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/vfile-message/lib/index.js?");

/***/ }),

/***/ "./node_modules/vfile/lib/index.js":
/*!*****************************************!*\
  !*** ./node_modules/vfile/lib/index.js ***!
  \*****************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"VFile\": function() { return /* binding */ VFile; }\n/* harmony export */ });\n/* harmony import */ var is_buffer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-buffer */ \"./node_modules/is-buffer/index.js\");\n/* harmony import */ var vfile_message__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vfile-message */ \"./node_modules/vfile-message/lib/index.js\");\n/* harmony import */ var _minpath_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./minpath.js */ \"./node_modules/vfile/lib/minpath.browser.js\");\n/* harmony import */ var _minproc_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./minproc.js */ \"./node_modules/vfile/lib/minproc.browser.js\");\n/* harmony import */ var _minurl_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./minurl.js */ \"./node_modules/vfile/lib/minurl.shared.js\");\n/* harmony import */ var _minurl_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./minurl.js */ \"./node_modules/vfile/lib/minurl.browser.js\");\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {import('./minurl.shared.js').URL} URL\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {Record<string, unknown> & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {'ascii' | 'utf8' | 'utf-8' | 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'base64url' | 'latin1' | 'binary' | 'hex'} BufferEncoding\n *   Encodings supported by the buffer class.\n *\n *   This is a copy of the types from Node, copied to prevent Node globals from\n *   being needed.\n *   Copied from: <https://github.com/DefinitelyTyped/DefinitelyTyped/blob/90a4ec8/types/node/buffer.d.ts#L170>\n *\n * @typedef {Options | URL | Value | VFile} Compatible\n *   Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n *   Set multiple values.\n * @property {Value | null | undefined} [value]\n *   Set `value`.\n * @property {string | null | undefined} [cwd]\n *   Set `cwd`.\n * @property {Array<string> | null | undefined} [history]\n *   Set `history`.\n * @property {URL | string | null | undefined} [path]\n *   Set `path`.\n * @property {string | null | undefined} [basename]\n *   Set `basename`.\n * @property {string | null | undefined} [stem]\n *   Set `stem`.\n * @property {string | null | undefined} [extname]\n *   Set `extname`.\n * @property {string | null | undefined} [dirname]\n *   Set `dirname`.\n * @property {Data | null | undefined} [data]\n *   Set `data`.\n *\n * @typedef Map\n *   Raw source map.\n *\n *   See:\n *   <https://github.com/mozilla/source-map/blob/58819f0/source-map.d.ts#L15-L23>.\n * @property {number} version\n *   Which version of the source map spec this map is following.\n * @property {Array<string>} sources\n *   An array of URLs to the original source files.\n * @property {Array<string>} names\n *   An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n *   The URL root from which all sources are relative.\n * @property {Array<string> | undefined} [sourcesContent]\n *   An array of contents of the original source files.\n * @property {string} mappings\n *   A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n *   The generated file this source map is associated with.\n *\n * @typedef {{[key: string]: unknown} & VFileCoreOptions} Options\n *   Configuration.\n *\n *   A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record<string, unknown>} ReporterSettings\n *   Configuration for reporters.\n */\n\n/**\n * @template {ReporterSettings} Settings\n *   Options type.\n * @callback Reporter\n *   Type for a reporter.\n * @param {Array<VFile>} files\n *   Files to report.\n * @param {Settings} options\n *   Configuration.\n * @returns {string}\n *   Report.\n */\n\n\n\n\n\n\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n *\n * @type {Array<'basename' | 'dirname' | 'extname' | 'history' | 'path' | 'stem'>}\n */\nconst order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nclass VFile {\n  /**\n   * Create a new virtual file.\n   *\n   * `options` is treated as:\n   *\n   * *   `string` or `Buffer` — `{value: options}`\n   * *   `URL` — `{path: options}`\n   * *   `VFile` — shallow copies its data over to the new file\n   * *   `object` — all fields are shallow copied over to the new file\n   *\n   * Path related fields are set in the following order (least specific to\n   * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n   * `dirname`.\n   *\n   * You cannot set `dirname` or `extname` without setting either `history`,\n   * `path`, `basename`, or `stem` too.\n   *\n   * @param {Compatible | null | undefined} [value]\n   *   File value.\n   * @returns\n   *   New instance.\n   */\n  constructor(value) {\n    /** @type {Options | VFile} */\n    let options\n\n    if (!value) {\n      options = {}\n    } else if (typeof value === 'string' || buffer(value)) {\n      options = {value}\n    } else if ((0,_minurl_js__WEBPACK_IMPORTED_MODULE_1__.isUrl)(value)) {\n      options = {path: value}\n    } else {\n      options = value\n    }\n\n    /**\n     * Place to store custom information (default: `{}`).\n     *\n     * It’s OK to store custom data directly on the file but moving it to\n     * `data` is recommended.\n     *\n     * @type {Data}\n     */\n    this.data = {}\n\n    /**\n     * List of messages associated with the file.\n     *\n     * @type {Array<VFileMessage>}\n     */\n    this.messages = []\n\n    /**\n     * List of filepaths the file moved between.\n     *\n     * The first is the original path and the last is the current path.\n     *\n     * @type {Array<string>}\n     */\n    this.history = []\n\n    /**\n     * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n     *\n     * @type {string}\n     */\n    this.cwd = _minproc_js__WEBPACK_IMPORTED_MODULE_2__.proc.cwd()\n\n    /* eslint-disable no-unused-expressions */\n    /**\n     * Raw value.\n     *\n     * @type {Value}\n     */\n    this.value\n\n    // The below are non-standard, they are “well-known”.\n    // As in, used in several tools.\n\n    /**\n     * Whether a file was saved to disk.\n     *\n     * This is used by vfile reporters.\n     *\n     * @type {boolean}\n     */\n    this.stored\n\n    /**\n     * Custom, non-string, compiled, representation.\n     *\n     * This is used by unified to store non-string results.\n     * One example is when turning markdown into React nodes.\n     *\n     * @type {unknown}\n     */\n    this.result\n\n    /**\n     * Source map.\n     *\n     * This type is equivalent to the `RawSourceMap` type from the `source-map`\n     * module.\n     *\n     * @type {Map | null | undefined}\n     */\n    this.map\n    /* eslint-enable no-unused-expressions */\n\n    // Set path related properties in the correct order.\n    let index = -1\n\n    while (++index < order.length) {\n      const prop = order[index]\n\n      // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n      // `vfile`s too.\n      if (\n        prop in options &&\n        options[prop] !== undefined &&\n        options[prop] !== null\n      ) {\n        // @ts-expect-error: TS doesn’t understand basic reality.\n        this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n      }\n    }\n\n    /** @type {string} */\n    let prop\n\n    // Set non-path related properties.\n    for (prop in options) {\n      // @ts-expect-error: fine to set other things.\n      if (!order.includes(prop)) {\n        // @ts-expect-error: fine to set other things.\n        this[prop] = options[prop]\n      }\n    }\n  }\n\n  /**\n   * Get the full path (example: `'~/index.min.js'`).\n   *\n   * @returns {string}\n   */\n  get path() {\n    return this.history[this.history.length - 1]\n  }\n\n  /**\n   * Set the full path (example: `'~/index.min.js'`).\n   *\n   * Cannot be nullified.\n   * You can set a file URL (a `URL` object with a `file:` protocol) which will\n   * be turned into a path with `url.fileURLToPath`.\n   *\n   * @param {string | URL} path\n   */\n  set path(path) {\n    if ((0,_minurl_js__WEBPACK_IMPORTED_MODULE_1__.isUrl)(path)) {\n      path = (0,_minurl_js__WEBPACK_IMPORTED_MODULE_3__.urlToPath)(path)\n    }\n\n    assertNonEmpty(path, 'path')\n\n    if (this.path !== path) {\n      this.history.push(path)\n    }\n  }\n\n  /**\n   * Get the parent path (example: `'~'`).\n   */\n  get dirname() {\n    return typeof this.path === 'string' ? _minpath_js__WEBPACK_IMPORTED_MODULE_4__.path.dirname(this.path) : undefined\n  }\n\n  /**\n   * Set the parent path (example: `'~'`).\n   *\n   * Cannot be set if there’s no `path` yet.\n   */\n  set dirname(dirname) {\n    assertPath(this.basename, 'dirname')\n    this.path = _minpath_js__WEBPACK_IMPORTED_MODULE_4__.path.join(dirname || '', this.basename)\n  }\n\n  /**\n   * Get the basename (including extname) (example: `'index.min.js'`).\n   */\n  get basename() {\n    return typeof this.path === 'string' ? _minpath_js__WEBPACK_IMPORTED_MODULE_4__.path.basename(this.path) : undefined\n  }\n\n  /**\n   * Set basename (including extname) (`'index.min.js'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   */\n  set basename(basename) {\n    assertNonEmpty(basename, 'basename')\n    assertPart(basename, 'basename')\n    this.path = _minpath_js__WEBPACK_IMPORTED_MODULE_4__.path.join(this.dirname || '', basename)\n  }\n\n  /**\n   * Get the extname (including dot) (example: `'.js'`).\n   */\n  get extname() {\n    return typeof this.path === 'string' ? _minpath_js__WEBPACK_IMPORTED_MODULE_4__.path.extname(this.path) : undefined\n  }\n\n  /**\n   * Set the extname (including dot) (example: `'.js'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be set if there’s no `path` yet.\n   */\n  set extname(extname) {\n    assertPart(extname, 'extname')\n    assertPath(this.dirname, 'extname')\n\n    if (extname) {\n      if (extname.charCodeAt(0) !== 46 /* `.` */) {\n        throw new Error('`extname` must start with `.`')\n      }\n\n      if (extname.includes('.', 1)) {\n        throw new Error('`extname` cannot contain multiple dots')\n      }\n    }\n\n    this.path = _minpath_js__WEBPACK_IMPORTED_MODULE_4__.path.join(this.dirname, this.stem + (extname || ''))\n  }\n\n  /**\n   * Get the stem (basename w/o extname) (example: `'index.min'`).\n   */\n  get stem() {\n    return typeof this.path === 'string'\n      ? _minpath_js__WEBPACK_IMPORTED_MODULE_4__.path.basename(this.path, this.extname)\n      : undefined\n  }\n\n  /**\n   * Set the stem (basename w/o extname) (example: `'index.min'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   */\n  set stem(stem) {\n    assertNonEmpty(stem, 'stem')\n    assertPart(stem, 'stem')\n    this.path = _minpath_js__WEBPACK_IMPORTED_MODULE_4__.path.join(this.dirname || '', stem + (this.extname || ''))\n  }\n\n  /**\n   * Serialize the file.\n   *\n   * @param {BufferEncoding | null | undefined} [encoding='utf8']\n   *   Character encoding to understand `value` as when it’s a `Buffer`\n   *   (default: `'utf8'`).\n   * @returns {string}\n   *   Serialized file.\n   */\n  toString(encoding) {\n    return (this.value || '').toString(encoding || undefined)\n  }\n\n  /**\n   * Create a warning message associated with the file.\n   *\n   * Its `fatal` is set to `false` and `file` is set to the current file path.\n   * Its added to `file.messages`.\n   *\n   * @param {string | Error | VFileMessage} reason\n   *   Reason for message, uses the stack and message of the error if given.\n   * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n   *   Place in file where the message occurred.\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  message(reason, place, origin) {\n    const message = new vfile_message__WEBPACK_IMPORTED_MODULE_5__.VFileMessage(reason, place, origin)\n\n    if (this.path) {\n      message.name = this.path + ':' + message.name\n      message.file = this.path\n    }\n\n    message.fatal = false\n\n    this.messages.push(message)\n\n    return message\n  }\n\n  /**\n   * Create an info message associated with the file.\n   *\n   * Its `fatal` is set to `null` and `file` is set to the current file path.\n   * Its added to `file.messages`.\n   *\n   * @param {string | Error | VFileMessage} reason\n   *   Reason for message, uses the stack and message of the error if given.\n   * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n   *   Place in file where the message occurred.\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  info(reason, place, origin) {\n    const message = this.message(reason, place, origin)\n\n    message.fatal = null\n\n    return message\n  }\n\n  /**\n   * Create a fatal error associated with the file.\n   *\n   * Its `fatal` is set to `true` and `file` is set to the current file path.\n   * Its added to `file.messages`.\n   *\n   * > 👉 **Note**: a fatal error means that a file is no longer processable.\n   *\n   * @param {string | Error | VFileMessage} reason\n   *   Reason for message, uses the stack and message of the error if given.\n   * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n   *   Place in file where the message occurred.\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {never}\n   *   Message.\n   * @throws {VFileMessage}\n   *   Message.\n   */\n  fail(reason, place, origin) {\n    const message = this.message(reason, place, origin)\n\n    message.fatal = true\n\n    throw message\n  }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n *   File path part.\n * @param {string} name\n *   Part name.\n * @returns {void}\n *   Nothing.\n */\nfunction assertPart(part, name) {\n  if (part && part.includes(_minpath_js__WEBPACK_IMPORTED_MODULE_4__.path.sep)) {\n    throw new Error(\n      '`' + name + '` cannot be a path: did not expect `' + _minpath_js__WEBPACK_IMPORTED_MODULE_4__.path.sep + '`'\n    )\n  }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n *   Thing.\n * @param {string} name\n *   Part name.\n * @returns {asserts part is string}\n *   Nothing.\n */\nfunction assertNonEmpty(part, name) {\n  if (!part) {\n    throw new Error('`' + name + '` cannot be empty')\n  }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n *   Path.\n * @param {string} name\n *   Dependency name.\n * @returns {asserts path is string}\n *   Nothing.\n */\nfunction assertPath(path, name) {\n  if (!path) {\n    throw new Error('Setting `' + name + '` requires `path` to be set too')\n  }\n}\n\n/**\n * Assert `value` is a buffer.\n *\n * @param {unknown} value\n *   thing.\n * @returns {value is Buffer}\n *   Whether `value` is a Node.js buffer.\n */\nfunction buffer(value) {\n  return is_buffer__WEBPACK_IMPORTED_MODULE_0__(value)\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/vfile/lib/index.js?");

/***/ }),

/***/ "./node_modules/vfile/lib/minpath.browser.js":
/*!***************************************************!*\
  !*** ./node_modules/vfile/lib/minpath.browser.js ***!
  \***************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"path\": function() { return /* binding */ path; }\n/* harmony export */ });\n// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nconst path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n *   File path.\n * @param {string | undefined} [ext]\n *   Extension to strip.\n * @returns {string}\n *   Stem or basename.\n */\nfunction basename(path, ext) {\n  if (ext !== undefined && typeof ext !== 'string') {\n    throw new TypeError('\"ext\" argument must be a string')\n  }\n\n  assertPath(path)\n  let start = 0\n  let end = -1\n  let index = path.length\n  /** @type {boolean | undefined} */\n  let seenNonSlash\n\n  if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n    while (index--) {\n      if (path.charCodeAt(index) === 47 /* `/` */) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now.\n        if (seenNonSlash) {\n          start = index + 1\n          break\n        }\n      } else if (end < 0) {\n        // We saw the first non-path separator, mark this as the end of our\n        // path component.\n        seenNonSlash = true\n        end = index + 1\n      }\n    }\n\n    return end < 0 ? '' : path.slice(start, end)\n  }\n\n  if (ext === path) {\n    return ''\n  }\n\n  let firstNonSlashEnd = -1\n  let extIndex = ext.length - 1\n\n  while (index--) {\n    if (path.charCodeAt(index) === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (seenNonSlash) {\n        start = index + 1\n        break\n      }\n    } else {\n      if (firstNonSlashEnd < 0) {\n        // We saw the first non-path separator, remember this index in case\n        // we need it if the extension ends up not matching.\n        seenNonSlash = true\n        firstNonSlashEnd = index + 1\n      }\n\n      if (extIndex > -1) {\n        // Try to match the explicit extension.\n        if (path.charCodeAt(index) === ext.charCodeAt(extIndex--)) {\n          if (extIndex < 0) {\n            // We matched the extension, so mark this as the end of our path\n            // component\n            end = index\n          }\n        } else {\n          // Extension does not match, so our result is the entire path\n          // component\n          extIndex = -1\n          end = firstNonSlashEnd\n        }\n      }\n    }\n  }\n\n  if (start === end) {\n    end = firstNonSlashEnd\n  } else if (end < 0) {\n    end = path.length\n  }\n\n  return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   File path.\n */\nfunction dirname(path) {\n  assertPath(path)\n\n  if (path.length === 0) {\n    return '.'\n  }\n\n  let end = -1\n  let index = path.length\n  /** @type {boolean | undefined} */\n  let unmatchedSlash\n\n  // Prefix `--` is important to not run on `0`.\n  while (--index) {\n    if (path.charCodeAt(index) === 47 /* `/` */) {\n      if (unmatchedSlash) {\n        end = index\n        break\n      }\n    } else if (!unmatchedSlash) {\n      // We saw the first non-path separator\n      unmatchedSlash = true\n    }\n  }\n\n  return end < 0\n    ? path.charCodeAt(0) === 47 /* `/` */\n      ? '/'\n      : '.'\n    : end === 1 && path.charCodeAt(0) === 47 /* `/` */\n    ? '//'\n    : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   Extname.\n */\nfunction extname(path) {\n  assertPath(path)\n\n  let index = path.length\n\n  let end = -1\n  let startPart = 0\n  let startDot = -1\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find.\n  let preDotState = 0\n  /** @type {boolean | undefined} */\n  let unmatchedSlash\n\n  while (index--) {\n    const code = path.charCodeAt(index)\n\n    if (code === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (unmatchedSlash) {\n        startPart = index + 1\n        break\n      }\n\n      continue\n    }\n\n    if (end < 0) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension.\n      unmatchedSlash = true\n      end = index + 1\n    }\n\n    if (code === 46 /* `.` */) {\n      // If this is our first dot, mark it as the start of our extension.\n      if (startDot < 0) {\n        startDot = index\n      } else if (preDotState !== 1) {\n        preDotState = 1\n      }\n    } else if (startDot > -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension.\n      preDotState = -1\n    }\n  }\n\n  if (\n    startDot < 0 ||\n    end < 0 ||\n    // We saw a non-dot character immediately before the dot.\n    preDotState === 0 ||\n    // The (right-most) trimmed path component is exactly `..`.\n    (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n  ) {\n    return ''\n  }\n\n  return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array<string>} segments\n *   Path segments.\n * @returns {string}\n *   File path.\n */\nfunction join(...segments) {\n  let index = -1\n  /** @type {string | undefined} */\n  let joined\n\n  while (++index < segments.length) {\n    assertPath(segments[index])\n\n    if (segments[index]) {\n      joined =\n        joined === undefined ? segments[index] : joined + '/' + segments[index]\n    }\n  }\n\n  return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n  assertPath(path)\n\n  const absolute = path.charCodeAt(0) === 47 /* `/` */\n\n  // Normalize the path according to POSIX rules.\n  let value = normalizeString(path, !absolute)\n\n  if (value.length === 0 && !absolute) {\n    value = '.'\n  }\n\n  if (value.length > 0 && path.charCodeAt(path.length - 1) === 47 /* / */) {\n    value += '/'\n  }\n\n  return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n *   File path.\n * @param {boolean} allowAboveRoot\n *   Whether `..` can move above root.\n * @returns {string}\n *   File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n  let result = ''\n  let lastSegmentLength = 0\n  let lastSlash = -1\n  let dots = 0\n  let index = -1\n  /** @type {number | undefined} */\n  let code\n  /** @type {number} */\n  let lastSlashIndex\n\n  while (++index <= path.length) {\n    if (index < path.length) {\n      code = path.charCodeAt(index)\n    } else if (code === 47 /* `/` */) {\n      break\n    } else {\n      code = 47 /* `/` */\n    }\n\n    if (code === 47 /* `/` */) {\n      if (lastSlash === index - 1 || dots === 1) {\n        // Empty.\n      } else if (lastSlash !== index - 1 && dots === 2) {\n        if (\n          result.length < 2 ||\n          lastSegmentLength !== 2 ||\n          result.charCodeAt(result.length - 1) !== 46 /* `.` */ ||\n          result.charCodeAt(result.length - 2) !== 46 /* `.` */\n        ) {\n          if (result.length > 2) {\n            lastSlashIndex = result.lastIndexOf('/')\n\n            if (lastSlashIndex !== result.length - 1) {\n              if (lastSlashIndex < 0) {\n                result = ''\n                lastSegmentLength = 0\n              } else {\n                result = result.slice(0, lastSlashIndex)\n                lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n              }\n\n              lastSlash = index\n              dots = 0\n              continue\n            }\n          } else if (result.length > 0) {\n            result = ''\n            lastSegmentLength = 0\n            lastSlash = index\n            dots = 0\n            continue\n          }\n        }\n\n        if (allowAboveRoot) {\n          result = result.length > 0 ? result + '/..' : '..'\n          lastSegmentLength = 2\n        }\n      } else {\n        if (result.length > 0) {\n          result += '/' + path.slice(lastSlash + 1, index)\n        } else {\n          result = path.slice(lastSlash + 1, index)\n        }\n\n        lastSegmentLength = index - lastSlash - 1\n      }\n\n      lastSlash = index\n      dots = 0\n    } else if (code === 46 /* `.` */ && dots > -1) {\n      dots++\n    } else {\n      dots = -1\n    }\n  }\n\n  return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n *   File path.\n * @returns {asserts path is string}\n *   Nothing.\n */\nfunction assertPath(path) {\n  if (typeof path !== 'string') {\n    throw new TypeError(\n      'Path must be a string. Received ' + JSON.stringify(path)\n    )\n  }\n}\n\n/* eslint-enable max-depth, complexity */\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/vfile/lib/minpath.browser.js?");

/***/ }),

/***/ "./node_modules/vfile/lib/minproc.browser.js":
/*!***************************************************!*\
  !*** ./node_modules/vfile/lib/minproc.browser.js ***!
  \***************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"proc\": function() { return /* binding */ proc; }\n/* harmony export */ });\n// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nconst proc = {cwd}\n\nfunction cwd() {\n  return '/'\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/vfile/lib/minproc.browser.js?");

/***/ }),

/***/ "./node_modules/vfile/lib/minurl.browser.js":
/*!**************************************************!*\
  !*** ./node_modules/vfile/lib/minurl.browser.js ***!
  \**************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isUrl\": function() { return /* reexport safe */ _minurl_shared_js__WEBPACK_IMPORTED_MODULE_0__.isUrl; },\n/* harmony export */   \"urlToPath\": function() { return /* binding */ urlToPath; }\n/* harmony export */ });\n/* harmony import */ var _minurl_shared_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./minurl.shared.js */ \"./node_modules/vfile/lib/minurl.shared.js\");\n/// <reference lib=\"dom\" />\n\n\n\n// See: <https://github.com/nodejs/node/blob/fcf8ba4/lib/internal/url.js>\n\n/**\n * @param {string | URL} path\n *   File URL.\n * @returns {string}\n *   File URL.\n */\nfunction urlToPath(path) {\n  if (typeof path === 'string') {\n    path = new URL(path)\n  } else if (!(0,_minurl_shared_js__WEBPACK_IMPORTED_MODULE_0__.isUrl)(path)) {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError(\n      'The \"path\" argument must be of type string or an instance of URL. Received `' +\n        path +\n        '`'\n    )\n    error.code = 'ERR_INVALID_ARG_TYPE'\n    throw error\n  }\n\n  if (path.protocol !== 'file:') {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError('The URL must be of scheme file')\n    error.code = 'ERR_INVALID_URL_SCHEME'\n    throw error\n  }\n\n  return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n *   URL.\n * @returns {string}\n *   File path.\n */\nfunction getPathFromURLPosix(url) {\n  if (url.hostname !== '') {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError(\n      'File URL host must be \"localhost\" or empty on darwin'\n    )\n    error.code = 'ERR_INVALID_FILE_URL_HOST'\n    throw error\n  }\n\n  const pathname = url.pathname\n  let index = -1\n\n  while (++index < pathname.length) {\n    if (\n      pathname.charCodeAt(index) === 37 /* `%` */ &&\n      pathname.charCodeAt(index + 1) === 50 /* `2` */\n    ) {\n      const third = pathname.charCodeAt(index + 2)\n      if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n        /** @type {NodeJS.ErrnoException} */\n        const error = new TypeError(\n          'File URL path must not include encoded / characters'\n        )\n        error.code = 'ERR_INVALID_FILE_URL_PATH'\n        throw error\n      }\n    }\n  }\n\n  return decodeURIComponent(pathname)\n}\n\n\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/vfile/lib/minurl.browser.js?");

/***/ }),

/***/ "./node_modules/vfile/lib/minurl.shared.js":
/*!*************************************************!*\
  !*** ./node_modules/vfile/lib/minurl.shared.js ***!
  \*************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isUrl\": function() { return /* binding */ isUrl; }\n/* harmony export */ });\n/**\n * @typedef URL\n * @property {string} hash\n * @property {string} host\n * @property {string} hostname\n * @property {string} href\n * @property {string} origin\n * @property {string} password\n * @property {string} pathname\n * @property {string} port\n * @property {string} protocol\n * @property {string} search\n * @property {any} searchParams\n * @property {string} username\n * @property {() => string} toString\n * @property {() => string} toJSON\n */\n\n/**\n * Check if `fileUrlOrPath` looks like a URL.\n *\n * @param {unknown} fileUrlOrPath\n *   File path or URL.\n * @returns {fileUrlOrPath is URL}\n *   Whether it’s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/fcf8ba4/lib/internal/url.js#L1501>\nfunction isUrl(fileUrlOrPath) {\n  return (\n    fileUrlOrPath !== null &&\n    typeof fileUrlOrPath === 'object' &&\n    // @ts-expect-error: indexable.\n    fileUrlOrPath.href &&\n    // @ts-expect-error: indexable.\n    fileUrlOrPath.origin\n  )\n}\n\n\n//# sourceURL=webpack://schemaevaluator/./node_modules/vfile/lib/minurl.shared.js?");

/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			id: moduleId,
/******/ 			loaded: false,
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Flag the module as loaded
/******/ 		module.loaded = true;
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
/******/ 	/* webpack/runtime/compat get default export */
/******/ 	!function() {
/******/ 		// getDefaultExport function for compatibility with non-harmony modules
/******/ 		__webpack_require__.n = function(module) {
/******/ 			var getter = module && module.__esModule ?
/******/ 				function() { return module['default']; } :
/******/ 				function() { return module; };
/******/ 			__webpack_require__.d(getter, { a: getter });
/******/ 			return getter;
/******/ 		};
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/define property getters */
/******/ 	!function() {
/******/ 		// define getter functions for harmony exports
/******/ 		__webpack_require__.d = function(exports, definition) {
/******/ 			for(var key in definition) {
/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ 				}
/******/ 			}
/******/ 		};
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/global */
/******/ 	!function() {
/******/ 		__webpack_require__.g = (function() {
/******/ 			if (typeof globalThis === 'object') return globalThis;
/******/ 			try {
/******/ 				return this || new Function('return this')();
/******/ 			} catch (e) {
/******/ 				if (typeof window === 'object') return window;
/******/ 			}
/******/ 		})();
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
/******/ 	!function() {
/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/make namespace object */
/******/ 	!function() {
/******/ 		// define __esModule on exports
/******/ 		__webpack_require__.r = function(exports) {
/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 			}
/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
/******/ 		};
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/node module decorator */
/******/ 	!function() {
/******/ 		__webpack_require__.nmd = function(module) {
/******/ 			module.paths = [];
/******/ 			if (!module.children) module.children = [];
/******/ 			return module;
/******/ 		};
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/nonce */
/******/ 	!function() {
/******/ 		__webpack_require__.nc = undefined;
/******/ 	}();
/******/ 	
/************************************************************************/
/******/ 	
/******/ 	// startup
/******/ 	// Load entry module and return exports
/******/ 	// This entry module can't be inlined because the eval devtool is used.
/******/ 	var __webpack_exports__ = __webpack_require__("./src/index.js");
/******/ 	
/******/ })()
;